diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 000000000000..6621d59b7c23 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,4 @@ +When reviewing code: +* do not review changes in files with `.expected` extension (they are automatically ensured to be correct). +* in `.ql` and `.qll` files, do not try to review the code itself as you don't understand the programming language + well enough to make comments in these languages. You can still check for typos or comment improvements. diff --git a/.github/workflows/check-change-note.yml b/.github/workflows/check-change-note.yml index 3330e6e1136d..70b78ce72944 100644 --- a/.github/workflows/check-change-note.yml +++ b/.github/workflows/check-change-note.yml @@ -16,7 +16,6 @@ on: - "shared/**/*.qll" - "!**/experimental/**" - "!ql/**" - - "!rust/**" - ".github/workflows/check-change-note.yml" jobs: diff --git a/.github/workflows/check-overlay-annotations.yml b/.github/workflows/check-overlay-annotations.yml new file mode 100644 index 000000000000..5369dfd49d00 --- /dev/null +++ b/.github/workflows/check-overlay-annotations.yml @@ -0,0 +1,23 @@ +name: Check overlay annotations + +on: + push: + branches: + - main + - 'rc/*' + pull_request: + branches: + - main + - 'rc/*' + +permissions: + contents: read + +jobs: + sync: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Check overlay annotations + run: python config/add-overlay-annotations.py --check java + diff --git a/.github/workflows/codegen.yml b/.github/workflows/codegen.yml deleted file mode 100644 index 24422eba10f8..000000000000 --- a/.github/workflows/codegen.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Codegen - -on: - pull_request: - paths: - - "misc/bazel/**" - - "misc/codegen/**" - - "*.bazel*" - - .github/workflows/codegen.yml - - .pre-commit-config.yaml - branches: - - main - - rc/* - - codeql-cli-* - -permissions: - contents: read - -jobs: - codegen: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 - with: - python-version-file: 'misc/codegen/.python-version' - - uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507 - name: Check that python code is properly formatted - with: - extra_args: autopep8 --all-files - - name: Run codegen tests - shell: bash - run: | - bazel test //misc/codegen/... diff --git a/.github/workflows/python-tooling.yml b/.github/workflows/python-tooling.yml new file mode 100644 index 000000000000..19059070878f --- /dev/null +++ b/.github/workflows/python-tooling.yml @@ -0,0 +1,35 @@ +name: Python tooling + +on: + pull_request: + paths: + - "misc/bazel/**" + - "misc/codegen/**" + - "misc/scripts/models-as-data/bulk_generate_mad.py" + - "*.bazel*" + - .github/workflows/codegen.yml + - .pre-commit-config.yaml + branches: + - main + - rc/* + - codeql-cli-* + +permissions: + contents: read + +jobs: + check-python-tooling: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507 + name: Check that python code is properly formatted + with: + extra_args: black --all-files + - name: Run codegen tests + shell: bash + run: | + bazel test //misc/codegen/... diff --git a/.github/workflows/ql-for-ql-dataset_measure.yml b/.github/workflows/ql-for-ql-dataset_measure.yml index d133eb0ad350..c3441ffa4074 100644 --- a/.github/workflows/ql-for-ql-dataset_measure.yml +++ b/.github/workflows/ql-for-ql-dataset_measure.yml @@ -53,7 +53,7 @@ jobs: - name: Create database run: | "${CODEQL}" database create \ - --search-path "${{ github.workspace }}" + --search-path "${{ github.workspace }}" \ --threads 4 \ --language ql --source-root "${{ github.workspace }}/repo" \ "${{ runner.temp }}/database" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 42333e91289e..e8eed93499f2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,5 +1,7 @@ # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks +default_language_version: + python: python3.12 repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v3.2.0 @@ -7,18 +9,18 @@ repos: - id: trailing-whitespace exclude: /test/.*$(?; diff --git a/actions/ql/src/Models/CompositeActionsSources.ql b/actions/ql/src/Models/CompositeActionsSources.ql index 8e4275f27c7d..2f3e98b3401e 100644 --- a/actions/ql/src/Models/CompositeActionsSources.ql +++ b/actions/ql/src/Models/CompositeActionsSources.ql @@ -34,6 +34,10 @@ private module MyConfig implements DataFlow::ConfigSig { isSink(node) and set instanceof DataFlow::FieldContent } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module MyFlow = TaintTracking::Global; diff --git a/actions/ql/src/Models/CompositeActionsSummaries.ql b/actions/ql/src/Models/CompositeActionsSummaries.ql index 8b8b5af3c459..1979c381f5d6 100644 --- a/actions/ql/src/Models/CompositeActionsSummaries.ql +++ b/actions/ql/src/Models/CompositeActionsSummaries.ql @@ -25,6 +25,10 @@ private module MyConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(CompositeAction c | c.getAnOutputExpr() = sink.asExpr()) } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module MyFlow = TaintTracking::Global; diff --git a/actions/ql/src/Models/ReusableWorkflowsSinks.ql b/actions/ql/src/Models/ReusableWorkflowsSinks.ql index 05334a533ddf..2b08f2445d90 100644 --- a/actions/ql/src/Models/ReusableWorkflowsSinks.ql +++ b/actions/ql/src/Models/ReusableWorkflowsSinks.ql @@ -24,6 +24,10 @@ private module MyConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof CodeInjectionSink and not madSink(sink, "code-injection") } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module MyFlow = TaintTracking::Global; diff --git a/actions/ql/src/Models/ReusableWorkflowsSources.ql b/actions/ql/src/Models/ReusableWorkflowsSources.ql index e5612d063432..831191e4bfb6 100644 --- a/actions/ql/src/Models/ReusableWorkflowsSources.ql +++ b/actions/ql/src/Models/ReusableWorkflowsSources.ql @@ -34,6 +34,10 @@ private module MyConfig implements DataFlow::ConfigSig { isSink(node) and set instanceof DataFlow::FieldContent } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module MyFlow = TaintTracking::Global; diff --git a/actions/ql/src/Models/ReusableWorkflowsSummaries.ql b/actions/ql/src/Models/ReusableWorkflowsSummaries.ql index 444ce028954e..fd2d4b396a08 100644 --- a/actions/ql/src/Models/ReusableWorkflowsSummaries.ql +++ b/actions/ql/src/Models/ReusableWorkflowsSummaries.ql @@ -25,6 +25,10 @@ private module MyConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(ReusableWorkflow w | w.getAnOutputExpr() = sink.asExpr()) } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module MyFlow = TaintTracking::Global; diff --git a/actions/ql/src/Security/CWE-077/EnvPathInjectionCritical.md b/actions/ql/src/Security/CWE-077/EnvPathInjectionCritical.md index 36622d127d80..486b3cb24972 100644 --- a/actions/ql/src/Security/CWE-077/EnvPathInjectionCritical.md +++ b/actions/ql/src/Security/CWE-077/EnvPathInjectionCritical.md @@ -1,6 +1,4 @@ -# Environment Path Injection - -## Description +## Overview GitHub Actions allow to define the system PATH variable by writing to a file pointed to by the `GITHUB_PATH` environment variable. Writing to this file appends a directory to the system PATH variable and automatically makes it available to all subsequent actions in the current job. @@ -12,11 +10,11 @@ echo "$HOME/.local/bin" >> $GITHUB_PATH If an attacker can control the contents of the system PATH, they are able to influence what commands are run in subsequent steps of the same job. -## Recommendations +## Recommendation Do not allow untrusted data to influence the system PATH: Avoid using untrusted data sources (e.g., artifact content) to define the system PATH. -## Examples +## Example ### Incorrect Usage @@ -36,4 +34,4 @@ If an attacker can manipulate the value being set, such as through artifact down ## References -- [Workflow commands for GitHub Actions](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions) +- GitHub Docs: [Workflow commands for GitHub Actions](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions). diff --git a/actions/ql/src/Security/CWE-077/EnvPathInjectionMedium.md b/actions/ql/src/Security/CWE-077/EnvPathInjectionMedium.md index 36622d127d80..486b3cb24972 100644 --- a/actions/ql/src/Security/CWE-077/EnvPathInjectionMedium.md +++ b/actions/ql/src/Security/CWE-077/EnvPathInjectionMedium.md @@ -1,6 +1,4 @@ -# Environment Path Injection - -## Description +## Overview GitHub Actions allow to define the system PATH variable by writing to a file pointed to by the `GITHUB_PATH` environment variable. Writing to this file appends a directory to the system PATH variable and automatically makes it available to all subsequent actions in the current job. @@ -12,11 +10,11 @@ echo "$HOME/.local/bin" >> $GITHUB_PATH If an attacker can control the contents of the system PATH, they are able to influence what commands are run in subsequent steps of the same job. -## Recommendations +## Recommendation Do not allow untrusted data to influence the system PATH: Avoid using untrusted data sources (e.g., artifact content) to define the system PATH. -## Examples +## Example ### Incorrect Usage @@ -36,4 +34,4 @@ If an attacker can manipulate the value being set, such as through artifact down ## References -- [Workflow commands for GitHub Actions](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions) +- GitHub Docs: [Workflow commands for GitHub Actions](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions). diff --git a/actions/ql/src/Security/CWE-077/EnvVarInjectionCritical.md b/actions/ql/src/Security/CWE-077/EnvVarInjectionCritical.md index cc35402b804d..94cdc439fbda 100644 --- a/actions/ql/src/Security/CWE-077/EnvVarInjectionCritical.md +++ b/actions/ql/src/Security/CWE-077/EnvVarInjectionCritical.md @@ -1,6 +1,4 @@ -# Environment Variable Injection - -## Description +## Overview GitHub Actions allow to define environment variables by writing to a file pointed to by the `GITHUB_ENV` environment variable: @@ -37,7 +35,7 @@ steps: If an attacker can control the values assigned to environment variables and there is no sanitization in place, the attacker will be able to inject additional variables by injecting new lines or `{delimiters}`. -## Recommendations +## Recommendation 1. **Do not allow untrusted data to influence environment variables**: @@ -64,7 +62,7 @@ If an attacker can control the values assigned to environment variables and ther } >> "$GITHUB_ENV" ``` -## Examples +## Example ### Example of Vulnerability @@ -113,5 +111,5 @@ An attacker is be able to run arbitrary code by injecting environment variables ## References -- [Workflow commands for GitHub Actions](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions) -- [GitHub Actions Exploitation: Repo Jacking and Environment Manipulation](https://www.synacktiv.com/publications/github-actions-exploitation-repo-jacking-and-environment-manipulation) +- GitHub Docs: [Workflow commands for GitHub Actions](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions). +- Synacktiv: [GitHub Actions Exploitation: Repo Jacking and Environment Manipulation](https://www.synacktiv.com/publications/github-actions-exploitation-repo-jacking-and-environment-manipulation). diff --git a/actions/ql/src/Security/CWE-077/EnvVarInjectionMedium.md b/actions/ql/src/Security/CWE-077/EnvVarInjectionMedium.md index 5d2c61150972..d604ccf19652 100644 --- a/actions/ql/src/Security/CWE-077/EnvVarInjectionMedium.md +++ b/actions/ql/src/Security/CWE-077/EnvVarInjectionMedium.md @@ -1,6 +1,4 @@ -# Environment Variable Injection - -## Description +## Overview GitHub Actions allow to define environment variables by writing to a file pointed to by the `GITHUB_ENV` environment variable: @@ -37,7 +35,7 @@ steps: If an attacker can control the values assigned to environment variables and there is no sanitization in place, the attacker will be able to inject additional variables by injecting new lines or `{delimiters}`. -## Recommendations +## Recommendation 1. **Do not allow untrusted data to influence environment variables**: @@ -64,7 +62,7 @@ If an attacker can control the values assigned to environment variables and ther } >> "$GITHUB_ENV" ``` -## Examples +## Example ### Example of Vulnerability @@ -113,5 +111,5 @@ An attacker would be able to run arbitrary code by injecting environment variabl ## References -- [Workflow commands for GitHub Actions](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions) -- [GitHub Actions Exploitation: Repo Jacking and Environment Manipulation](https://www.synacktiv.com/publications/github-actions-exploitation-repo-jacking-and-environment-manipulation) +- GitHub Docs: [Workflow commands for GitHub Actions](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions). +- Synacktiv: [GitHub Actions Exploitation: Repo Jacking and Environment Manipulation](https://www.synacktiv.com/publications/github-actions-exploitation-repo-jacking-and-environment-manipulation). diff --git a/actions/ql/src/Security/CWE-094/CodeInjectionCritical.md b/actions/ql/src/Security/CWE-094/CodeInjectionCritical.md index f2e494468112..1c8c016dade8 100644 --- a/actions/ql/src/Security/CWE-094/CodeInjectionCritical.md +++ b/actions/ql/src/Security/CWE-094/CodeInjectionCritical.md @@ -1,18 +1,16 @@ -# Code Injection in GitHub Actions - -## Description +## Overview Using user-controlled input in GitHub Actions may lead to code injection in contexts like _run:_ or _script:_. Code injection in GitHub Actions may allow an attacker to exfiltrate any secrets used in the workflow and the temporary GitHub repository authorization token. The token may have write access to the repository, allowing an attacker to make changes to the repository. -## Recommendations +## Recommendation The best practice to avoid code injection vulnerabilities in GitHub workflows is to set the untrusted input value of the expression to an intermediate environment variable and then use the environment variable using the native syntax of the shell/script interpreter (that is, not _${{ env.VAR }}_). It is also recommended to limit the permissions of any tokens used by a workflow such as the GITHUB_TOKEN. -## Examples +## Example ### Incorrect Usage diff --git a/actions/ql/src/Security/CWE-094/CodeInjectionMedium.md b/actions/ql/src/Security/CWE-094/CodeInjectionMedium.md index f2e494468112..1c8c016dade8 100644 --- a/actions/ql/src/Security/CWE-094/CodeInjectionMedium.md +++ b/actions/ql/src/Security/CWE-094/CodeInjectionMedium.md @@ -1,18 +1,16 @@ -# Code Injection in GitHub Actions - -## Description +## Overview Using user-controlled input in GitHub Actions may lead to code injection in contexts like _run:_ or _script:_. Code injection in GitHub Actions may allow an attacker to exfiltrate any secrets used in the workflow and the temporary GitHub repository authorization token. The token may have write access to the repository, allowing an attacker to make changes to the repository. -## Recommendations +## Recommendation The best practice to avoid code injection vulnerabilities in GitHub workflows is to set the untrusted input value of the expression to an intermediate environment variable and then use the environment variable using the native syntax of the shell/script interpreter (that is, not _${{ env.VAR }}_). It is also recommended to limit the permissions of any tokens used by a workflow such as the GITHUB_TOKEN. -## Examples +## Example ### Incorrect Usage diff --git a/actions/ql/src/Security/CWE-1395/UseOfKnownVulnerableAction.md b/actions/ql/src/Security/CWE-1395/UseOfKnownVulnerableAction.md index 91360a30ed88..d9c02b6d7f79 100644 --- a/actions/ql/src/Security/CWE-1395/UseOfKnownVulnerableAction.md +++ b/actions/ql/src/Security/CWE-1395/UseOfKnownVulnerableAction.md @@ -1,13 +1,11 @@ -# Use of Actions with known vulnerabilities - -## Description +## Overview The security of the workflow and the repository could be compromised by GitHub Actions workflows that utilize GitHub Actions with known vulnerabilities. -## Recommendations +## Recommendation Either remove the component from the workflow or upgrade it to a version that is not vulnerable. ## References -- [GitHub Docs: Keeping your actions up to date with Dependabot](https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot) +- GitHub Docs: [Keeping your actions up to date with Dependabot](https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot). diff --git a/actions/ql/src/Security/CWE-275/MissingActionsPermissions.md b/actions/ql/src/Security/CWE-275/MissingActionsPermissions.md index 9385759dae95..e932fcf50fdc 100644 --- a/actions/ql/src/Security/CWE-275/MissingActionsPermissions.md +++ b/actions/ql/src/Security/CWE-275/MissingActionsPermissions.md @@ -1,12 +1,21 @@ -# Actions Job and Workflow Permissions are not set - -## Description +## Overview If a GitHub Actions job or workflow has no explicit permissions set, then the repository permissions are used. Repositories created under organizations inherit the organization permissions. The organizations or repositories created before February 2023 have the default permissions set to read-write. Often these permissions do not adhere to the principle of least privilege and can be reduced to read-only, leaving the `write` permission only to a specific types as `issues: write` or `pull-requests: write`. -## Recommendations +## Recommendation + +Add the `permissions` key to the job or the root of workflow (in this case it is applied to all jobs in the workflow that do not have their own `permissions` key) and assign the least privileges required to complete the task. + +## Example + +### Incorrect Usage + +```yaml +name: "My workflow" +# No permissions block +``` -Add the `permissions` key to the job or the root of workflow (in this case it is applied to all jobs in the workflow that do not have their own `permissions` key) and assign the least privileges required to complete the task: +### Correct Usage ```yaml name: "My workflow" @@ -27,4 +36,4 @@ jobs: ## References -- [Assigning permissions to jobs](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/assigning-permissions-to-jobs) +- GitHub Docs: [Assigning permissions to jobs](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/assigning-permissions-to-jobs). diff --git a/actions/ql/src/Security/CWE-285/ImproperAccessControl.md b/actions/ql/src/Security/CWE-285/ImproperAccessControl.md index 594f381d8ce0..f8596c4c3471 100644 --- a/actions/ql/src/Security/CWE-285/ImproperAccessControl.md +++ b/actions/ql/src/Security/CWE-285/ImproperAccessControl.md @@ -1,14 +1,12 @@ -# Improper Access Control - -## Description +## Overview Sometimes labels are used to approve GitHub Actions. An authorization check may not be properly implemented, allowing an attacker to mutate the code after it has been reviewed and approved by label. -## Recommendations +## Recommendation When using labels, make sure that the code cannot be modified after it has been reviewed and the label has been set. -## Examples +## Example ### Incorrect Usage @@ -57,4 +55,4 @@ jobs: ## References -- [Events that trigger workflows](https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#pull_request_target) +- GitHub Docs: [Events that trigger workflows](https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#pull_request_target). diff --git a/actions/ql/src/Security/CWE-312/ExcessiveSecretsExposure.md b/actions/ql/src/Security/CWE-312/ExcessiveSecretsExposure.md index 9351af5cf1e2..b56acf07ad63 100644 --- a/actions/ql/src/Security/CWE-312/ExcessiveSecretsExposure.md +++ b/actions/ql/src/Security/CWE-312/ExcessiveSecretsExposure.md @@ -1,14 +1,12 @@ -# Excessive Secrets Exposure - -## Description +## Overview When the workflow runner cannot determine what secrets are needed to run the workflow, it will pass all the available secrets to the runner including organization and repository secrets. This violates the least privileged principle and increases the impact of a potential vulnerability affecting the workflow. -## Recommendations +## Recommendation Only pass those secrets that are needed by the workflow. Avoid using expressions such as `toJSON(secrets)` or dynamically accessed secrets such as `secrets[format('GH_PAT_%s', matrix.env)]` since the workflow will need to receive all secrets to decide at runtime which one needs to be used. -## Examples +## Example ### Incorrect Usage @@ -48,5 +46,5 @@ env: ## References -- [Using secrets in GitHub Actions](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions#using-encrypted-secrets-in-a-workflow) -- [Job uses all secrets](https://github.com/boostsecurityio/poutine/blob/main/docs/content/en/rules/job_all_secrets.md) +- GitHub Docs: [Using secrets in GitHub Actions](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions#using-encrypted-secrets-in-a-workflow). +- poutine: [Job uses all secrets](https://github.com/boostsecurityio/poutine/blob/main/docs/content/en/rules/job_all_secrets.md). diff --git a/actions/ql/src/Security/CWE-312/SecretsInArtifacts.md b/actions/ql/src/Security/CWE-312/SecretsInArtifacts.md index 5b05c9a118fa..bf658864ed7e 100644 --- a/actions/ql/src/Security/CWE-312/SecretsInArtifacts.md +++ b/actions/ql/src/Security/CWE-312/SecretsInArtifacts.md @@ -1,6 +1,4 @@ -# Storage of sensitive information in GitHub Actions artifact - -## Description +## Overview Sensitive information included in a GitHub Actions artifact can allow an attacker to access the sensitive information if the artifact is published. @@ -10,6 +8,8 @@ Only store information that is meant to be publicly available in a GitHub Action ## Example +### Incorrect Usage + The following example uses `actions/checkout` to checkout code which stores the GITHUB_TOKEN in the \`.git/config\` file and then stores the contents of the \`.git\` repository into the artifact: ```yaml @@ -28,6 +28,8 @@ jobs: path: . ``` +### Correct Usage + The issue has been fixed below, where the `actions/upload-artifact` uses a version (v4+) which does not include hidden files or directories into the artifact. ```yaml diff --git a/actions/ql/src/Security/CWE-312/UnmaskedSecretExposure.md b/actions/ql/src/Security/CWE-312/UnmaskedSecretExposure.md index c33b89fdcec6..031bd5957881 100644 --- a/actions/ql/src/Security/CWE-312/UnmaskedSecretExposure.md +++ b/actions/ql/src/Security/CWE-312/UnmaskedSecretExposure.md @@ -1,14 +1,12 @@ -# Unmasked Secret Exposure - -## Description +## Overview Secrets derived from other secrets are not known to the workflow runner, and therefore are not masked unless explicitly registered. -## Recommendations +## Recommendation Avoid defining non-plain secrets. For example, do not define a new secret containing a JSON object and then read properties out of it from the workflow, since these read values will not be masked by the workflow runner. -## Examples +## Example ### Incorrect Usage @@ -34,4 +32,4 @@ Avoid defining non-plain secrets. For example, do not define a new secret contai ## References -- [Using secrets in GitHub Actions](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions#using-encrypted-secrets-in-a-workflow) +- GitHub Docs: [Using secrets in GitHub Actions](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions#using-encrypted-secrets-in-a-workflow). diff --git a/actions/ql/src/Security/CWE-349/CachePoisoningViaCodeInjection.md b/actions/ql/src/Security/CWE-349/CachePoisoningViaCodeInjection.md index 667c41dc153e..f75028a27e61 100644 --- a/actions/ql/src/Security/CWE-349/CachePoisoningViaCodeInjection.md +++ b/actions/ql/src/Security/CWE-349/CachePoisoningViaCodeInjection.md @@ -1,6 +1,4 @@ -# Cache Poisoning in GitHub Actions - -## Description +## Overview GitHub Actions cache poisoning is a technique that allows an attacker to inject malicious content into the Action's cache from unprivileged workflow, potentially leading to code execution in privileged workflows. @@ -23,7 +21,7 @@ In GitHub Actions, cache scopes are primarily determined by the branch structure Due to the above design, if something is cached in the context of the default branch (e.g., `main`), it becomes accessible to any feature branch derived from `main`. -## Recommendations +## Recommendation 1. Avoid using caching in workflows that handle sensitive operations like releases. 2. If caching must be used: @@ -34,7 +32,7 @@ Due to the above design, if something is cached in the context of the default br 4. Never run untrusted code in the context of the default branch. 5. Sign the cache value cryptographically and verify the signature before usage. -## Examples +## Example ### Incorrect Usage @@ -78,6 +76,6 @@ jobs: ## References -- [The Monsters in Your Build Cache – GitHub Actions Cache Poisoning](https://adnanthekhan.com/2024/05/06/the-monsters-in-your-build-cache-github-actions-cache-poisoning/) -- [GitHub Actions Caching Documentation](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows) -- [Cache Poisoning in GitHub Actions](https://scribesecurity.com/blog/github-cache-poisoning/) +- Adnan Khan's Blog: [The Monsters in Your Build Cache – GitHub Actions Cache Poisoning](https://adnanthekhan.com/2024/05/06/the-monsters-in-your-build-cache-github-actions-cache-poisoning/). +- GitHub Docs: [GitHub Actions Caching Documentation](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows). +- Scribe Security Blog: [Cache Poisoning in GitHub Actions](https://scribesecurity.com/blog/github-cache-poisoning/). diff --git a/actions/ql/src/Security/CWE-349/CachePoisoningViaDirectCache.md b/actions/ql/src/Security/CWE-349/CachePoisoningViaDirectCache.md index c12fb7998929..849b771a8ff0 100644 --- a/actions/ql/src/Security/CWE-349/CachePoisoningViaDirectCache.md +++ b/actions/ql/src/Security/CWE-349/CachePoisoningViaDirectCache.md @@ -1,6 +1,4 @@ -# Cache Poisoning in GitHub Actions - -## Description +## Overview GitHub Actions cache poisoning is a technique that allows an attacker to inject malicious content into the Action's cache from unprivileged workflow, potentially leading to code execution in privileged workflows. @@ -23,7 +21,7 @@ In GitHub Actions, cache scopes are primarily determined by the branch structure Due to the above design, if something is cached in the context of the default branch (e.g., `main`), it becomes accessible to any feature branch derived from `main`. -## Recommendations +## Recommendation 1. Avoid using caching in workflows that handle sensitive operations like releases. 2. If caching must be used: @@ -34,7 +32,7 @@ Due to the above design, if something is cached in the context of the default br 4. Never run untrusted code in the context of the default branch. 5. Sign the cache value cryptographically and verify the signature before usage. -## Examples +## Example ### Incorrect Usage @@ -123,6 +121,6 @@ jobs: ## References -- [The Monsters in Your Build Cache – GitHub Actions Cache Poisoning](https://adnanthekhan.com/2024/05/06/the-monsters-in-your-build-cache-github-actions-cache-poisoning/) -- [GitHub Actions Caching Documentation](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows) -- [Cache Poisoning in GitHub Actions](https://scribesecurity.com/blog/github-cache-poisoning/) +- Adnan Khan's Blog: [The Monsters in Your Build Cache – GitHub Actions Cache Poisoning](https://adnanthekhan.com/2024/05/06/the-monsters-in-your-build-cache-github-actions-cache-poisoning/). +- GitHub Docs: [GitHub Actions Caching Documentation](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows). +- Scribe Security Blog: [Cache Poisoning in GitHub Actions](https://scribesecurity.com/blog/github-cache-poisoning/). diff --git a/actions/ql/src/Security/CWE-349/CachePoisoningViaPoisonableStep.md b/actions/ql/src/Security/CWE-349/CachePoisoningViaPoisonableStep.md index c777e1980393..fefd6d61a44d 100644 --- a/actions/ql/src/Security/CWE-349/CachePoisoningViaPoisonableStep.md +++ b/actions/ql/src/Security/CWE-349/CachePoisoningViaPoisonableStep.md @@ -1,6 +1,4 @@ -# Cache Poisoning in GitHub Actions - -## Description +## Overview GitHub Actions cache poisoning is a technique that allows an attacker to inject malicious content into the Action's cache from unprivileged workflow, potentially leading to code execution in privileged workflows. @@ -23,7 +21,7 @@ In GitHub Actions, cache scopes are primarily determined by the branch structure Due to the above design, if something is cached in the context of the default branch (e.g., `main`), it becomes accessible to any feature branch derived from `main`. -## Recommendations +## Recommendation 1. Avoid using caching in workflows that handle sensitive operations like releases. 2. If caching must be used: @@ -34,7 +32,7 @@ Due to the above design, if something is cached in the context of the default br 4. Never run untrusted code in the context of the default branch. 5. Sign the cache value cryptographically and verify the signature before usage. -## Examples +## Example ### Incorrect Usage @@ -80,6 +78,6 @@ jobs: ## References -- [The Monsters in Your Build Cache – GitHub Actions Cache Poisoning](https://adnanthekhan.com/2024/05/06/the-monsters-in-your-build-cache-github-actions-cache-poisoning/) -- [GitHub Actions Caching Documentation](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows) -- [Cache Poisoning in GitHub Actions](https://scribesecurity.com/blog/github-cache-poisoning/) +- Adnan Khan's Blog: [The Monsters in Your Build Cache – GitHub Actions Cache Poisoning](https://adnanthekhan.com/2024/05/06/the-monsters-in-your-build-cache-github-actions-cache-poisoning/). +- GitHub Docs: [GitHub Actions Caching Documentation](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows). +- Scribe Security Blog: [Cache Poisoning in GitHub Actions](https://scribesecurity.com/blog/github-cache-poisoning/). diff --git a/actions/ql/src/Security/CWE-367/UntrustedCheckoutTOCTOUCritical.md b/actions/ql/src/Security/CWE-367/UntrustedCheckoutTOCTOUCritical.md index 4e9b389834e8..c1912b97fa8f 100644 --- a/actions/ql/src/Security/CWE-367/UntrustedCheckoutTOCTOUCritical.md +++ b/actions/ql/src/Security/CWE-367/UntrustedCheckoutTOCTOUCritical.md @@ -1,17 +1,15 @@ -# Untrusted Checkout TOCTOU (Time-of-check to time-of-use) - -## Description +## Overview Untrusted Checkout is protected by a security check but the checked-out branch can be changed after the check. -## Recommendations +## Recommendation Verify that the code has not been modified after the security check. This may be achieved differently depending on the type of check: - Deployment Environment Approval: Make sure to use a non-mutable reference to the code to be executed. For example use a `sha` instead of a `ref`. - Label Gates: Make sure to use a non-mutable reference to the code to be executed. For example use a `sha` instead of a `ref`. -## Examples +## Example ### Incorrect Usage (Deployment Environment Approval) @@ -99,4 +97,4 @@ jobs: ## References -- [ActionsTOCTOU](https://github.com/AdnaneKhan/ActionsTOCTOU) +- [ActionsTOCTOU](https://github.com/AdnaneKhan/ActionsTOCTOU). diff --git a/actions/ql/src/Security/CWE-367/UntrustedCheckoutTOCTOUHigh.md b/actions/ql/src/Security/CWE-367/UntrustedCheckoutTOCTOUHigh.md index 4e9b389834e8..c1912b97fa8f 100644 --- a/actions/ql/src/Security/CWE-367/UntrustedCheckoutTOCTOUHigh.md +++ b/actions/ql/src/Security/CWE-367/UntrustedCheckoutTOCTOUHigh.md @@ -1,17 +1,15 @@ -# Untrusted Checkout TOCTOU (Time-of-check to time-of-use) - -## Description +## Overview Untrusted Checkout is protected by a security check but the checked-out branch can be changed after the check. -## Recommendations +## Recommendation Verify that the code has not been modified after the security check. This may be achieved differently depending on the type of check: - Deployment Environment Approval: Make sure to use a non-mutable reference to the code to be executed. For example use a `sha` instead of a `ref`. - Label Gates: Make sure to use a non-mutable reference to the code to be executed. For example use a `sha` instead of a `ref`. -## Examples +## Example ### Incorrect Usage (Deployment Environment Approval) @@ -99,4 +97,4 @@ jobs: ## References -- [ActionsTOCTOU](https://github.com/AdnaneKhan/ActionsTOCTOU) +- [ActionsTOCTOU](https://github.com/AdnaneKhan/ActionsTOCTOU). diff --git a/actions/ql/src/Security/CWE-571/ExpressionIsAlwaysTrueCritical.md b/actions/ql/src/Security/CWE-571/ExpressionIsAlwaysTrueCritical.md index 1e7ea120cbaa..eedb3871230e 100644 --- a/actions/ql/src/Security/CWE-571/ExpressionIsAlwaysTrueCritical.md +++ b/actions/ql/src/Security/CWE-571/ExpressionIsAlwaysTrueCritical.md @@ -1,6 +1,4 @@ -# If Condition Always Evaluates to True - -## Description +## Overview GitHub Workflow Expressions (`${{ ... }}`) used in the `if` condition of jobs or steps must not contain extra characters or spaces. Otherwise, the condition is invariably evaluated to `true`. @@ -14,7 +12,7 @@ To avoid the vulnerability where an `if` condition always evaluates to `true`, i 2. Avoid multiline or spaced-out conditional expressions that might inadvertently introduce unwanted characters or formatting. 3. Test the workflow to ensure the `if` conditions behave as expected under different scenarios. -## Examples +## Example ### Correct Usage @@ -60,4 +58,4 @@ To avoid the vulnerability where an `if` condition always evaluates to `true`, i ## References -- [Expression Always True Github Issue](https://github.com/actions/runner/issues/1173) +- GitHub actions/runner Issues: [Expression Always True](https://github.com/actions/runner/issues/1173). diff --git a/actions/ql/src/Security/CWE-571/ExpressionIsAlwaysTrueHigh.md b/actions/ql/src/Security/CWE-571/ExpressionIsAlwaysTrueHigh.md index 1e7ea120cbaa..eedb3871230e 100644 --- a/actions/ql/src/Security/CWE-571/ExpressionIsAlwaysTrueHigh.md +++ b/actions/ql/src/Security/CWE-571/ExpressionIsAlwaysTrueHigh.md @@ -1,6 +1,4 @@ -# If Condition Always Evaluates to True - -## Description +## Overview GitHub Workflow Expressions (`${{ ... }}`) used in the `if` condition of jobs or steps must not contain extra characters or spaces. Otherwise, the condition is invariably evaluated to `true`. @@ -14,7 +12,7 @@ To avoid the vulnerability where an `if` condition always evaluates to `true`, i 2. Avoid multiline or spaced-out conditional expressions that might inadvertently introduce unwanted characters or formatting. 3. Test the workflow to ensure the `if` conditions behave as expected under different scenarios. -## Examples +## Example ### Correct Usage @@ -60,4 +58,4 @@ To avoid the vulnerability where an `if` condition always evaluates to `true`, i ## References -- [Expression Always True Github Issue](https://github.com/actions/runner/issues/1173) +- GitHub actions/runner Issues: [Expression Always True](https://github.com/actions/runner/issues/1173). diff --git a/actions/ql/src/Security/CWE-829/ArtifactPoisoningCritical.md b/actions/ql/src/Security/CWE-829/ArtifactPoisoningCritical.md index aa7bcf4b0bf7..932dad198fce 100644 --- a/actions/ql/src/Security/CWE-829/ArtifactPoisoningCritical.md +++ b/actions/ql/src/Security/CWE-829/ArtifactPoisoningCritical.md @@ -1,16 +1,14 @@ -# Artifact poisoning - -## Description +## Overview The workflow downloads artifacts that may be poisoned by an attacker in previously triggered workflows. If the contents of these artifacts are not correctly extracted, stored and verified, they may lead to repository compromise if untrusted code gets executed in a privileged job. -## Recommendations +## Recommendation - Always consider artifacts content as untrusted. - Extract the contents of artifacts to a temporary folder so they cannot override existing files. - Verify the contents of the artifacts downloaded. If an artifact is expected to contain a numeric value, verify it before using it. -## Examples +## Example ### Incorrect Usage @@ -69,4 +67,4 @@ jobs: ## References -- [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/) +- GitHub Security Lab Research: [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/). diff --git a/actions/ql/src/Security/CWE-829/ArtifactPoisoningMedium.md b/actions/ql/src/Security/CWE-829/ArtifactPoisoningMedium.md index aa7bcf4b0bf7..932dad198fce 100644 --- a/actions/ql/src/Security/CWE-829/ArtifactPoisoningMedium.md +++ b/actions/ql/src/Security/CWE-829/ArtifactPoisoningMedium.md @@ -1,16 +1,14 @@ -# Artifact poisoning - -## Description +## Overview The workflow downloads artifacts that may be poisoned by an attacker in previously triggered workflows. If the contents of these artifacts are not correctly extracted, stored and verified, they may lead to repository compromise if untrusted code gets executed in a privileged job. -## Recommendations +## Recommendation - Always consider artifacts content as untrusted. - Extract the contents of artifacts to a temporary folder so they cannot override existing files. - Verify the contents of the artifacts downloaded. If an artifact is expected to contain a numeric value, verify it before using it. -## Examples +## Example ### Incorrect Usage @@ -69,4 +67,4 @@ jobs: ## References -- [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/) +- GitHub Security Lab Research: [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/). diff --git a/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.md b/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.md index f8ea2fdc82fe..16551e9c89a7 100644 --- a/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.md +++ b/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.md @@ -1,14 +1,12 @@ -# Unpinned tag for 3rd party Action in workflow - -## Description +## Overview Using a tag for a 3rd party Action that is not pinned to a commit can lead to executing an untrusted Action through a supply chain attack. -## Recommendations +## Recommendation Pinning an action to a full length commit SHA is currently the only way to use a non-immutable action as an immutable release. Pinning to a particular SHA helps mitigate the risk of a bad actor adding a backdoor to the action's repository, as they would need to generate a SHA-1 collision for a valid Git object payload. When selecting a SHA, you should verify it is from the action's repository and not a repository fork. -## Examples +## Example ### Incorrect Usage @@ -24,4 +22,4 @@ Pinning an action to a full length commit SHA is currently the only way to use a ## References -- [Using third-party actions](https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions#using-third-party-actions) \ No newline at end of file +- GitHub Docs: [Using third-party actions](https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions#using-third-party-actions). diff --git a/actions/ql/src/Security/CWE-829/UntrustedCheckoutCritical.md b/actions/ql/src/Security/CWE-829/UntrustedCheckoutCritical.md index 71ba2032a9d0..50e81cc240ca 100644 --- a/actions/ql/src/Security/CWE-829/UntrustedCheckoutCritical.md +++ b/actions/ql/src/Security/CWE-829/UntrustedCheckoutCritical.md @@ -1,10 +1,8 @@ -# Execution of Untrusted Checked-out Code - -## Description +## Overview GitHub workflows can be triggered through various repository events, including incoming pull requests (PRs) or comments on Issues/PRs. A potentially dangerous misuse of the triggers such as `pull_request_target` or `issue_comment` followed by an explicit checkout of untrusted code (Pull Request HEAD) may lead to repository compromise if untrusted code gets executed in a privileged job. -## Recommendations +## Recommendation - Avoid using `pull_request_target` unless necessary. - Employ unprivileged `pull_request` workflows followed by `workflow_run` for privileged operations. @@ -14,7 +12,7 @@ The best practice is to handle the potentially untrusted pull request via the ** The artifacts downloaded from the first workflow should be considered untrusted and must be verified. -## Examples +## Example ### Incorrect Usage @@ -134,4 +132,4 @@ jobs: ## References -- [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/) +- GitHub Security Lab Research: [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/). diff --git a/actions/ql/src/Security/CWE-829/UntrustedCheckoutHigh.md b/actions/ql/src/Security/CWE-829/UntrustedCheckoutHigh.md index 71ba2032a9d0..50e81cc240ca 100644 --- a/actions/ql/src/Security/CWE-829/UntrustedCheckoutHigh.md +++ b/actions/ql/src/Security/CWE-829/UntrustedCheckoutHigh.md @@ -1,10 +1,8 @@ -# Execution of Untrusted Checked-out Code - -## Description +## Overview GitHub workflows can be triggered through various repository events, including incoming pull requests (PRs) or comments on Issues/PRs. A potentially dangerous misuse of the triggers such as `pull_request_target` or `issue_comment` followed by an explicit checkout of untrusted code (Pull Request HEAD) may lead to repository compromise if untrusted code gets executed in a privileged job. -## Recommendations +## Recommendation - Avoid using `pull_request_target` unless necessary. - Employ unprivileged `pull_request` workflows followed by `workflow_run` for privileged operations. @@ -14,7 +12,7 @@ The best practice is to handle the potentially untrusted pull request via the ** The artifacts downloaded from the first workflow should be considered untrusted and must be verified. -## Examples +## Example ### Incorrect Usage @@ -134,4 +132,4 @@ jobs: ## References -- [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/) +- GitHub Security Lab Research: [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/). diff --git a/actions/ql/src/Security/CWE-829/UntrustedCheckoutMedium.md b/actions/ql/src/Security/CWE-829/UntrustedCheckoutMedium.md index 71ba2032a9d0..50e81cc240ca 100644 --- a/actions/ql/src/Security/CWE-829/UntrustedCheckoutMedium.md +++ b/actions/ql/src/Security/CWE-829/UntrustedCheckoutMedium.md @@ -1,10 +1,8 @@ -# Execution of Untrusted Checked-out Code - -## Description +## Overview GitHub workflows can be triggered through various repository events, including incoming pull requests (PRs) or comments on Issues/PRs. A potentially dangerous misuse of the triggers such as `pull_request_target` or `issue_comment` followed by an explicit checkout of untrusted code (Pull Request HEAD) may lead to repository compromise if untrusted code gets executed in a privileged job. -## Recommendations +## Recommendation - Avoid using `pull_request_target` unless necessary. - Employ unprivileged `pull_request` workflows followed by `workflow_run` for privileged operations. @@ -14,7 +12,7 @@ The best practice is to handle the potentially untrusted pull request via the ** The artifacts downloaded from the first workflow should be considered untrusted and must be verified. -## Examples +## Example ### Incorrect Usage @@ -134,4 +132,4 @@ jobs: ## References -- [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/) +- GitHub Security Lab Research: [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/). diff --git a/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.md b/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.md index 21a56e8d84d6..a64f69af8d68 100644 --- a/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.md +++ b/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.md @@ -1,13 +1,11 @@ -# Unneccesary use of advanced configuration - -## Description +## Overview The CodeQL workflow does not use any custom settings and could be simplified by switching to the CodeQL default setup. -## Recommendations +## Recommendation If there is no reason to have a custom configuration switch to the CodeQL default setup. ## References -- [GitHub Docs: Configuring Default Setup for a repository](https://docs.github.com/en/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning#configuring-default-setup-for-a-repository) \ No newline at end of file +- GitHub Docs: [Configuring Default Setup for a repository](https://docs.github.com/en/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning#configuring-default-setup-for-a-repository). diff --git a/actions/ql/src/change-notes/released/0.6.4.md b/actions/ql/src/change-notes/released/0.6.4.md new file mode 100644 index 000000000000..7e98b0159fc0 --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.4.md @@ -0,0 +1,3 @@ +## 0.6.4 + +No user-facing changes. diff --git a/actions/ql/src/codeql-pack.release.yml b/actions/ql/src/codeql-pack.release.yml index b7dafe32c5d8..ced8cf94614b 100644 --- a/actions/ql/src/codeql-pack.release.yml +++ b/actions/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.3 +lastReleaseVersion: 0.6.4 diff --git a/actions/ql/src/codeql-suites/actions-code-quality-extended.qls b/actions/ql/src/codeql-suites/actions-code-quality-extended.qls new file mode 100644 index 000000000000..1ee85cae856c --- /dev/null +++ b/actions/ql/src/codeql-suites/actions-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/actions/ql/src/experimental/Security/CWE-088/ArgumentInjectionCritical.md b/actions/ql/src/experimental/Security/CWE-088/ArgumentInjectionCritical.md index 92e480e4a7ae..27ef5fce7009 100644 --- a/actions/ql/src/experimental/Security/CWE-088/ArgumentInjectionCritical.md +++ b/actions/ql/src/experimental/Security/CWE-088/ArgumentInjectionCritical.md @@ -1,18 +1,16 @@ -# Argument Injection in GitHub Actions - -## Description +## Overview Passing user-controlled arguments to certain commands in the context of `Run` steps may lead to arbitrary code execution. Argument injection in GitHub Actions may allow an attacker to exfiltrate any secrets used in the workflow and the temporary GitHub repository authorization token. The token may have write access to the repository, allowing the attacker to make changes to the repository. -## Recommendations +## Recommendation When possible avoid passing user-controlled data to commands which may spawn new processes using some of their arguments. It is also recommended to limit the permissions of any tokens used by a workflow such as the GITHUB_TOKEN. -## Examples +## Example ### Incorrect Usage @@ -35,7 +33,7 @@ An attacker may set the body of an Issue comment to `BAR/g;1e whoami;#` and the ## References -- [Common Weakness Enumeration: CWE-88](https://cwe.mitre.org/data/definitions/88.html). -- [Argument Injection Explained](https://sonarsource.github.io/argument-injection-vectors/explained/) -- [Argument Injection Vectors](https://sonarsource.github.io/argument-injection-vectors/) -- [GTFOBins](https://gtfobins.github.io/) +- Common Weakness Enumeration: [CWE-88](https://cwe.mitre.org/data/definitions/88.html). +- [Argument Injection Vectors](https://sonarsource.github.io/argument-injection-vectors/). +- Argument Injection Vectors: [Argument Injection Explained](https://sonarsource.github.io/argument-injection-vectors/explained/). +- [GTFOBins](https://gtfobins.github.io/). diff --git a/actions/ql/src/experimental/Security/CWE-088/ArgumentInjectionMedium.md b/actions/ql/src/experimental/Security/CWE-088/ArgumentInjectionMedium.md index 4957297be92a..bd3f84a2c089 100644 --- a/actions/ql/src/experimental/Security/CWE-088/ArgumentInjectionMedium.md +++ b/actions/ql/src/experimental/Security/CWE-088/ArgumentInjectionMedium.md @@ -1,18 +1,16 @@ -# Argument Injection in GitHub Actions - -## Description +## Overview Passing user-controlled arguments to certain commands in the context of `Run` steps may lead to arbitrary code execution. Argument injection in GitHub Actions may allow an attacker to exfiltrate any secrets used in the workflow and the temporary GitHub repository authorization token. The token may have write access to the repository, allowing the attacker to make changes to the repository. -## Recommendations +## Recommendation When possible avoid passing user-controlled data to commands which may spawn new processes using some of their arguments. It is also recommended to limit the permissions of any tokens used by a workflow such as the GITHUB_TOKEN. -## Examples +## Example ### Incorrect Usage @@ -35,7 +33,7 @@ An attacker may set the body of an Issue comment to `BAR|g;1e whoami;#` and the ## References -- [Common Weakness Enumeration: CWE-88](https://cwe.mitre.org/data/definitions/88.html). -- [Argument Injection Explained](https://sonarsource.github.io/argument-injection-vectors/explained/) -- [Argument Injection Vectors](https://sonarsource.github.io/argument-injection-vectors/) -- [GTFOBins](https://gtfobins.github.io/) +- Common Weakness Enumeration: [CWE-88](https://cwe.mitre.org/data/definitions/88.html). +- [Argument Injection Vectors](https://sonarsource.github.io/argument-injection-vectors/). +- Argument Injection Vectors: [Argument Injection Explained](https://sonarsource.github.io/argument-injection-vectors/explained/). +- [GTFOBins](https://gtfobins.github.io/). diff --git a/actions/ql/src/experimental/Security/CWE-829/UnversionedImmutableAction.md b/actions/ql/src/experimental/Security/CWE-829/UnversionedImmutableAction.md index 754c54b9ca06..5101eebceee4 100644 --- a/actions/ql/src/experimental/Security/CWE-829/UnversionedImmutableAction.md +++ b/actions/ql/src/experimental/Security/CWE-829/UnversionedImmutableAction.md @@ -1,14 +1,12 @@ -# Unversioned Immutable Action - -## Description +## Overview This action is eligible for Immutable Actions, a new GitHub feature that is currently only available for internal users. Immutable Actions are released as packages in the GitHub package registry instead of resolved from a pinned SHA at the repository. The Immutable Action provides the same immutability as pinning the version to a SHA but with improved readability and additional security guarantees. -## Recommendations +## Recommendation For internal users: when using [immutable actions](https://github.com/github/package-registry-team/blob/main/docs/immutable-actions/immutable-actions-howto.md) use the full semantic version of the action. This will ensure that the action is resolved to the exact version stored in the GitHub package registry. -## Examples +## Example ### Incorrect Usage @@ -25,4 +23,4 @@ For internal users: when using [immutable actions](https://github.com/github/pac ## References -- [Consuming immutable actions]() +- [Consuming immutable actions](). diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 9e45e764edef..4a4bdde8147c 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.3 +version: 0.6.5-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 000000000000..2b719a3a38ab --- /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/config/add-overlay-annotations.py b/config/add-overlay-annotations.py new file mode 100644 index 000000000000..85b42026d8d7 --- /dev/null +++ b/config/add-overlay-annotations.py @@ -0,0 +1,274 @@ +# This script is used to annotate .qll files without any existing overlay annotations +# with overlay[local?] and overlay[caller?] annotations. Maintenance of overlay annotations +# in annotated files will be handled by QL-for-QL queries. + +# It will walk the directory tree and annotate most .qll files, skipping only +# some specific cases (e.g., empty files, files that configure dataflow for queries). + +# The script takes a list of languages and processes the corresponding directories. +# If the optional --check argument is provided, the script checks for missing annotations, +# but does not modify any files. + +# Usage: python3 add-overlay-annotations.py [--check] ... + +# The script will modify the files in place and print the changes made. +# The script is designed to be run from the root of the repository. + +#!/usr/bin/python3 +import sys +import os +import re +from difflib import context_diff + +OVERLAY_PATTERN = re.compile(r'overlay\[[a-zA-Z?_-]+\]') + +def has_overlay_annotations(lines): + ''' + Check whether the given lines contain any overlay[...] annotations. + ''' + return any(OVERLAY_PATTERN.search(line) for line in lines) + + +def is_line_comment(line): + return line.startswith("//") or (line.startswith("/*") and line.endswith("*/")) + + +def find_file_level_module_declaration(lines): + ''' + Returns the index of the existing file-level module declaration if one + exists. Returns None otherwise. + ''' + comment = False + for i, line in enumerate(lines): + trimmed = line.strip() + + if is_line_comment(trimmed): + continue + elif trimmed.startswith("/*"): + comment = True + elif comment and trimmed.endswith("*/"): + comment = False + elif not comment and trimmed.endswith("module;"): + return i + + return None + + +def is_file_module_qldoc(i, lines): + ''' + Assuming a qldoc ended on line i, determine if it belongs to the implicit + file-level module. If it is followed by another qldoc or imports, then it + does and if it is followed by any other non-empty, non-comment lines, then + we assume that is a declaration of some kind and the qldoc is attached to + that declaration. + ''' + comment = False + + for line in lines[i+1:]: + trimmed = line.strip() + + if trimmed.startswith("import ") or trimmed.startswith("private import ") or trimmed.startswith("/**"): + return True + elif is_line_comment(trimmed) or not trimmed: + continue + elif trimmed.startswith("/*"): + comment = True + elif comment and trimmed.endswith("*/"): + comment = False + elif not comment and trimmed: + return False + + return True + + +def find_file_module_qldoc_declaration(lines): + ''' + Returns the index of last line of the implicit file module qldoc if one + exists. Returns None otherwise. + ''' + + qldoc = False + comment = False + for i, line in enumerate(lines): + trimmed = line.strip() + + if trimmed.startswith("//"): + continue + elif (qldoc or trimmed.startswith("/**")) and trimmed.endswith("*/"): + # a qldoc just ended; determine if it belongs to the implicit file module + if is_file_module_qldoc(i, lines): + return i + else: + return None + elif trimmed.startswith("/**"): + qldoc = True + elif trimmed.startswith("/*"): + comment = True + elif comment and trimmed.endswith("*/"): + comment = False + elif (not qldoc and not comment) and trimmed: + return None + + return None + + +def only_comments(lines): + ''' + Returns true if the lines contain only comments and empty lines. + ''' + comment = False + + for line in lines: + trimmed = line.strip() + + if not trimmed or is_line_comment(trimmed): + continue + elif trimmed.startswith("/*"): + comment = True + elif comment and trimmed.endswith("*/"): + comment = False + elif comment: + continue + elif trimmed: + return False + + return True + + +def insert_toplevel_maybe_local_annotation(filename, lines): + ''' + Find a suitable place to insert an overlay[local?] annotation at the top of the file. + Returns a pair consisting of description and the modified lines or None if no overlay + annotation is necessary (e.g., for files that only contain comments). + ''' + if only_comments(lines): + return None + + i = find_file_level_module_declaration(lines) + if not i == None: + out_lines = lines[:i] + out_lines.append("overlay[local?]\n") + out_lines.extend(lines[i:]) + return (f"Annotating \"{filename}\" via existing file-level module statement", out_lines) + + i = find_file_module_qldoc_declaration(lines) + if not i == None: + out_lines = lines[:i+1] + out_lines.append("overlay[local?]\n") + out_lines.append("module;\n") + out_lines.extend(lines[i+1:]) + return (f"Annotating \"{filename}\" which has a file-level module qldoc", out_lines) + + out_lines = ["overlay[local?]\n", "module;\n", "\n"] + lines + return (f"Annotating \"{filename}\" without file-level module qldoc", out_lines) + + +def insert_overlay_caller_annotations(lines): + ''' + Mark pragma[inline] predicates as overlay[caller?] if they are not declared private. + ''' + out_lines = [] + for i, line in enumerate(lines): + trimmed = line.strip() + if trimmed == "pragma[inline]": + if i + 1 < len(lines) and not "private" in lines[i+1]: + whitespace = line[0: line.find(trimmed)] + out_lines.append(f"{whitespace}overlay[caller?]\n") + out_lines.append(line) + return out_lines + + +def annotate_as_appropriate(filename, lines): + ''' + Insert new overlay[...] annotations according to heuristics in files without existing + overlay annotations. + + Returns None if no annotations are needed. Otherwise, returns a pair consisting of a + string describing the action taken and the modified content as a list of lines. + ''' + if has_overlay_annotations(lines): + return None + + # These simple heuristics filter out those .qll files that we no _not_ want to annotate + # as overlay[local?]. It is not clear that these heuristics are exactly what we want, + # but they seem to work well enough for now (as determined by speed and accuracy numbers). + if (filename.endswith("Test.qll") or + ((filename.endswith("Query.qll") or filename.endswith("Config.qll")) and + any("implements DataFlow::ConfigSig" in line for line in lines))): + return None + elif not any(line for line in lines if line.strip()): + return None + + lines = insert_overlay_caller_annotations(lines) + return insert_toplevel_maybe_local_annotation(filename, lines) + + +def process_single_file(write, filename): + ''' + Process a single file, annotating it as appropriate. + If write is set, the changes are written back to the file. + Returns True if the file requires changes. + ''' + with open(filename) as f: + old = [line for line in f] + + annotate_result = annotate_as_appropriate(filename, old) + if annotate_result is None: + return False + + if not write: + return True + + new = annotate_result[1] + + diff = context_diff(old, new, fromfile=filename, tofile=filename) + diff = [line for line in diff] + if diff: + print(annotate_result[0]) + for line in diff: + print(line.rstrip()) + with open(filename, "w") as out_file: + for line in new: + out_file.write(line) + + return True + + +if len(sys.argv) > 1 and sys.argv[1] == "--check": + check = True + langs = sys.argv[2:] +else: + check = False + langs = sys.argv[1:] + +dirs = [] +for lang in langs: + if lang in ["cpp", "go", "csharp", "java", "javascript", "python", "ruby", "rust", "swift"]: + dirs.append(f"{lang}/ql/lib") + else: + raise Exception(f"Unknown language \"{lang}\".") + +if dirs: + dirs.append("shared") + +missingAnnotations = [] + +for roots in dirs: + for dirpath, dirnames, filenames in os.walk(roots): + for filename in filenames: + if filename.endswith(".qll") and not dirpath.endswith("tutorial"): + path = os.path.join(dirpath, filename) + res = process_single_file(not check, path) + if check and res: + missingAnnotations.append(path) + + +if len(missingAnnotations) > 0: + print("The following files have no overlay annotations:") + for path in missingAnnotations[:10]: + print("- " + path) + if len(missingAnnotations) > 10: + print("and " + str(len(missingAnnotations) - 10) + " additional files.") + print() + print("Please manually add overlay annotations or use the config/add-overlay-annotations.py script to automatically add sensible default overlay annotations.") + exit(1) diff --git a/config/dbscheme-fragments.json b/config/dbscheme-fragments.json index c56289ff1716..c2a9a5e734b9 100644 --- a/config/dbscheme-fragments.json +++ b/config/dbscheme-fragments.json @@ -1,16 +1,19 @@ { "files": [ + "cpp/ql/lib/semmlecode.cpp.dbscheme", "javascript/ql/lib/semmlecode.javascript.dbscheme", "python/ql/lib/semmlecode.python.dbscheme", "ruby/ql/lib/ruby.dbscheme", "ql/ql/src/ql.dbscheme" ], "fragments": [ + "/*- Compilations -*/", "/*- External data -*/", "/*- Files and folders -*/", "/*- Diagnostic messages -*/", "/*- Diagnostic messages: severity -*/", "/*- Source location prefix -*/", + "/*- Database metadata -*/", "/*- Lines of code -*/", "/*- Configuration files with key value pairs -*/", "/*- YAML -*/", @@ -20,6 +23,7 @@ "/*- DEPRECATED: Snapshot date -*/", "/*- DEPRECATED: Duplicate code -*/", "/*- DEPRECATED: Version control data -*/", + "/*- C++ dbscheme -*/", "/*- JavaScript-specific part -*/", "/*- Ruby dbscheme -*/", "/*- Erb dbscheme -*/", @@ -31,4 +35,4 @@ "/*- Python dbscheme -*/", "/*- Empty location -*/" ] -} \ No newline at end of file +} diff --git a/config/opcode-qldoc.py b/config/opcode-qldoc.py index e379e6a3ea96..1c892ee3c85b 100644 --- a/config/opcode-qldoc.py +++ b/config/opcode-qldoc.py @@ -8,9 +8,9 @@ start_qldoc_re = re.compile(r'^\s*/\*\*') # Start of a QLDoc comment end_qldoc_re = re.compile(r'\*/\s*$') # End of a QLDoc comment blank_qldoc_line_re = re.compile(r'^\s*\*\s*$') # A line in a QLDoc comment with only the '*' -instruction_class_re = re.compile(r'^class (?P[A-aa-z0-9]+)Instruction\s') # Declaration of an `Instruction` class -opcode_base_class_re = re.compile(r'^abstract class (?P[A-aa-z0-9]+)Opcode\s') # Declaration of an `Opcode` base class -opcode_class_re = re.compile(r'^ class (?P[A-aa-z0-9]+)\s') # Declaration of an `Opcode` class +instruction_class_re = re.compile(r'^class (?P[A-Za-z0-9]+)Instruction\s') # Declaration of an `Instruction` class +opcode_base_class_re = re.compile(r'^abstract class (?P[A-Za-z0-9]+)Opcode\s') # Declaration of an `Opcode` base class +opcode_class_re = re.compile(r'^ class (?P[A-Za-z0-9]+)\s') # Declaration of an `Opcode` class script_dir = path.realpath(path.dirname(__file__)) instruction_path = path.realpath(path.join(script_dir, '../cpp/ql/src/semmle/code/cpp/ir/implementation/raw/Instruction.qll')) diff --git a/cpp/bulk_generation_targets.yml b/cpp/bulk_generation_targets.yml new file mode 100644 index 000000000000..dbcec7bf9ddf --- /dev/null +++ b/cpp/bulk_generation_targets.yml @@ -0,0 +1,31 @@ +language: cpp +strategy: dca +destination: cpp/ql/lib/ext/generated +targets: +- name: zlib + with-sinks: false + with-sources: false +- name: brotli + with-sinks: false + with-sources: false +- name: libidn2 + with-sinks: false + with-sources: false +- name: libssh2 + with-sinks: false + with-sources: false +- name: sqlite + with-sinks: false + with-sources: false +- name: openssl + with-sinks: false + with-sources: false +- name: nghttp2 + with-sinks: false + with-sources: false +- name: libuv + with-sinks: false + with-sources: false +- name: curl + 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 000000000000..cb35a2cc5329 --- /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 000000000000..3c45f8b9e71e --- /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 000000000000..af887e83a815 --- /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 000000000000..9299dcb085a6 --- /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/5491582ac8511726e12fae3e2399000f9201cd9a/old.dbscheme b/cpp/downgrades/5491582ac8511726e12fae3e2399000f9201cd9a/old.dbscheme new file mode 100644 index 000000000000..5491582ac851 --- /dev/null +++ b/cpp/downgrades/5491582ac8511726e12fae3e2399000f9201cd9a/old.dbscheme @@ -0,0 +1,2428 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/downgrades/5491582ac8511726e12fae3e2399000f9201cd9a/semmlecode.cpp.dbscheme b/cpp/downgrades/5491582ac8511726e12fae3e2399000f9201cd9a/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..827dbc206ea5 --- /dev/null +++ b/cpp/downgrades/5491582ac8511726e12fae3e2399000f9201cd9a/semmlecode.cpp.dbscheme @@ -0,0 +1,2451 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +/** + * 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 +); + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/downgrades/5491582ac8511726e12fae3e2399000f9201cd9a/upgrade.properties b/cpp/downgrades/5491582ac8511726e12fae3e2399000f9201cd9a/upgrade.properties new file mode 100644 index 000000000000..1a8afbbb9c3a --- /dev/null +++ b/cpp/downgrades/5491582ac8511726e12fae3e2399000f9201cd9a/upgrade.properties @@ -0,0 +1,2 @@ +description: Remove unused external_package tables from the dbscheme +compatibility: full diff --git a/cpp/downgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/builtintypes.ql b/cpp/downgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/builtintypes.ql new file mode 100644 index 000000000000..9088493ce34c --- /dev/null +++ b/cpp/downgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/builtintypes.ql @@ -0,0 +1,14 @@ +class BuiltinType extends @builtintype { + string toString() { none() } +} + +from BuiltinType type, string name, int kind, int kind_new, int size, int sign, int alignment +where + builtintypes(type, name, kind, size, sign, alignment) and + if + type instanceof @complex_fp16 or + type instanceof @complex_std_bfloat16 or + type instanceof @complex_std_float16 + then kind_new = 2 + else kind_new = kind +select type, name, kind_new, size, sign, alignment diff --git a/cpp/downgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/old.dbscheme b/cpp/downgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/old.dbscheme new file mode 100644 index 000000000000..7bc12b02a436 --- /dev/null +++ b/cpp/downgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/old.dbscheme @@ -0,0 +1,2509 @@ + +/** + * 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/semmlecode.cpp.dbscheme b/cpp/downgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..e38346051783 --- /dev/null +++ b/cpp/downgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/semmlecode.cpp.dbscheme @@ -0,0 +1,2506 @@ + +/** + * 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 +| 63 = @scalable_vector_count // __SVCount_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/upgrade.properties b/cpp/downgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/upgrade.properties new file mode 100644 index 000000000000..c8d1d2d3c3a3 --- /dev/null +++ b/cpp/downgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/upgrade.properties @@ -0,0 +1,3 @@ +description: Introduce new complex 16-bit floating-point types +compatibility: backwards +builtintypes.rel: run builtintypes.qlo diff --git a/cpp/downgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/old.dbscheme b/cpp/downgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/old.dbscheme new file mode 100644 index 000000000000..827dbc206ea5 --- /dev/null +++ b/cpp/downgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/old.dbscheme @@ -0,0 +1,2451 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +/** + * 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 +); + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/downgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/semmlecode.cpp.dbscheme b/cpp/downgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..e70d0b653187 --- /dev/null +++ b/cpp/downgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/semmlecode.cpp.dbscheme @@ -0,0 +1,2475 @@ + +/** + * 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_default ; + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** 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 +); + +/** 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 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 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 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 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 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 ref, + int bodylocation: @location 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 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 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 ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location 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 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 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 ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location 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 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 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 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 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 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 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 ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location 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/827dbc206ea55377e032a8a934c8903fedc50fa0/upgrade.properties b/cpp/downgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/upgrade.properties new file mode 100644 index 000000000000..c77161910eea --- /dev/null +++ b/cpp/downgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/upgrade.properties @@ -0,0 +1,2 @@ +description: sync dbscheme and delete svn tables +compatibility: full diff --git a/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme new file mode 100644 index 000000000000..9baef67d1ffc --- /dev/null +++ b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme @@ -0,0 +1,2499 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/semmlecode.cpp.dbscheme b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..a8c2176e9a5c --- /dev/null +++ b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/semmlecode.cpp.dbscheme @@ -0,0 +1,2494 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/upgrade.properties b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/upgrade.properties new file mode 100644 index 000000000000..07a8d70b052d --- /dev/null +++ b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/upgrade.properties @@ -0,0 +1,3 @@ +description: Add a predicate `getAnAttribute` to `Namespace` +compatibility: full +namespaceattributes.rel: delete diff --git a/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme new file mode 100644 index 000000000000..a8c2176e9a5c --- /dev/null +++ b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme @@ -0,0 +1,2494 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..3c45f8b9e71e --- /dev/null +++ b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/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/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/stmts.ql b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/stmts.ql new file mode 100644 index 000000000000..41c2ac1b7704 --- /dev/null +++ b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/stmts.ql @@ -0,0 +1,13 @@ +class Stmt extends @stmt { + string toString() { none() } +} + +class Location extends @location_stmt { + string toString() { none() } +} + +from Stmt id, int kind, Location loc, int new_kind +where + stmts(id, kind, loc) and + if kind = 40 then new_kind = 4 else new_kind = kind +select id, new_kind, loc diff --git a/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties new file mode 100644 index 000000000000..beabef86257c --- /dev/null +++ b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties @@ -0,0 +1,3 @@ +description: Support `__leave` statement +compatibility: full +stmts.rel: run stmts.qlo diff --git a/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/builtintypes.ql b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/builtintypes.ql new file mode 100644 index 000000000000..73b715fd71f0 --- /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 000000000000..af887e83a815 --- /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 000000000000..9a7c3c14c107 --- /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 000000000000..bc85f01c52e3 --- /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/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/builtintypes.ql b/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/builtintypes.ql new file mode 100644 index 000000000000..165bd8923cc7 --- /dev/null +++ b/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/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 = 63 then /* @errortype */ new_kind = 1 else new_kind = kind +select id, name, new_kind, size, sign, alignment diff --git a/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/derivedtypes.ql b/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/derivedtypes.ql new file mode 100644 index 000000000000..76067a70d1c1 --- /dev/null +++ b/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/derivedtypes.ql @@ -0,0 +1,9 @@ +class Type extends @type { + string toString() { none() } +} + +from Type type, string name, int kind, int new_kind, Type type_id +where + derivedtypes(type, name, kind, type_id) and + if kind = 11 then /* @gnu_vector */ new_kind = 5 else new_kind = kind +select type, name, new_kind, type_id diff --git a/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/old.dbscheme b/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/old.dbscheme new file mode 100644 index 000000000000..e38346051783 --- /dev/null +++ b/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/old.dbscheme @@ -0,0 +1,2506 @@ + +/** + * 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 +| 63 = @scalable_vector_count // __SVCount_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/semmlecode.cpp.dbscheme b/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..9baef67d1ffc --- /dev/null +++ b/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/semmlecode.cpp.dbscheme @@ -0,0 +1,2499 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/upgrade.properties b/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/upgrade.properties new file mode 100644 index 000000000000..e29cebc506e7 --- /dev/null +++ b/cpp/downgrades/e38346051783182ea75822e4adf8d4c6a949bc37/upgrade.properties @@ -0,0 +1,5 @@ +description: Arm scalable vector type support +compatibility: backwards +builtintypes.rel: run builtintypes.qlo +derivedtypes.rel: run derivedtypes.qlo +tupleelements.rel: delete diff --git a/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/downgrades.ql b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/downgrades.ql new file mode 100644 index 000000000000..973fdeaba7c5 --- /dev/null +++ b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/downgrades.ql @@ -0,0 +1,161 @@ +class Accessible extends @accessible { + string toString() { none() } +} + +class Container extends @container { + string toString() { none() } +} + +class Expr extends @expr { + string toString() { none() } +} + +class Initialiser extends @initialiser { + string toString() { none() } +} + +class Location extends @location_default { + string toString() { none() } +} + +class Stmt extends @stmt { + string toString() { none() } +} + +predicate isLocationDefault(Location l) { + diagnostics(_, _, _, _, _, l) + or + macroinvocations(_, _, l, _) + or + fun_decls(_, _, _, _, l) + or + var_decls(_, _, _, _, l) + or + type_decls(_, _, l) + or + namespace_decls(_, _, l, _) + or + namespace_decls(_, _, _, l) + or + usings(_, _, l, _) + or + static_asserts(_, _, _, l, _) + or + enumconstants(_, _, _, _, _, l) + or + concept_templates(_, _, l) + or + attributes(_, _, _, _, l) + or + attribute_args(_, _, _, _, l) + or + derivations(_, _, _, _, l) + or + frienddecls(_, _, _, l) + or + comments(_, _, l) + or + namequalifiers(_, _, _, l) + or + lambda_capture(_, _, _, _, _, _, l) + or + preprocdirects(_, _, l) + or + xmllocations(_, l) + or + locations_default(l, _, 0, 0, 0, 0) // For containers. +} + +predicate isLocationExpr(Location l) { + initialisers(_, _, _, l) + or + exprs(_, _, l) +} + +predicate isLocationStmt(Location l) { stmts(_, _, l) } + +newtype TExprOrStmtLocation = + TExprLocation(Location l, Container c, int startLine, int startColumn, int endLine, int endColumn) { + isLocationExpr(l) and + (isLocationDefault(l) or isLocationStmt(l)) and + locations_default(l, c, startLine, startColumn, endLine, endColumn) + } or + TStmtLocation(Location l, Container c, int startLine, int startColumn, int endLine, int endColumn) { + isLocationStmt(l) and + (isLocationDefault(l) or isLocationExpr(l)) and + locations_default(l, c, startLine, startColumn, endLine, endColumn) + } + +module Fresh = QlBuiltins::NewEntity; + +class NewLocationBase = @location_default or Fresh::EntityId; + +class NewLocation extends NewLocationBase { + string toString() { none() } +} + +query predicate new_locations_default( + NewLocation l, Container c, int startLine, int startColumn, int endLine, int endColumn +) { + isLocationDefault(l) and + locations_default(l, c, startLine, startColumn, endLine, endColumn) +} + +query predicate new_locations_expr( + NewLocation l, Container c, int startLine, int startColumn, int endLine, int endColumn +) { + exists(Location l_old | + isLocationExpr(l_old) and + locations_default(l_old, c, startLine, startColumn, endLine, endColumn) + | + if not isLocationDefault(l_old) and not isLocationStmt(l) + then l = l_old + else l = Fresh::map(TExprLocation(l_old, c, startLine, startColumn, endLine, endColumn)) + ) +} + +query predicate new_locations_stmt( + NewLocation l, Container c, int startLine, int startColumn, int endLine, int endColumn +) { + exists(Location l_old | + isLocationStmt(l_old) and + locations_default(l_old, c, startLine, startColumn, endLine, endColumn) + | + if not isLocationDefault(l_old) and not isLocationExpr(l) + then l = l_old + else l = Fresh::map(TStmtLocation(l_old, c, startLine, startColumn, endLine, endColumn)) + ) +} + +query predicate new_exprs(Expr e, int kind, NewLocation l) { + exists(Location l_old, Container c, int startLine, int startColumn, int endLine, int endColumn | + exprs(e, kind, l_old) and + locations_default(l_old, c, startLine, startColumn, endLine, endColumn) + | + if not isLocationDefault(l_old) and not isLocationStmt(l) + then l = l_old + else l = Fresh::map(TExprLocation(l_old, c, startLine, startColumn, endLine, endColumn)) + ) +} + +query predicate new_initialisers(Initialiser i, Accessible v, Expr e, NewLocation l) { + exists(Location l_old, Container c, int startLine, int startColumn, int endLine, int endColumn | + initialisers(i, v, e, l_old) and + locations_default(l_old, c, startLine, startColumn, endLine, endColumn) + | + if not isLocationDefault(l_old) and not isLocationStmt(l) + then l = l_old + else l = Fresh::map(TExprLocation(l_old, c, startLine, startColumn, endLine, endColumn)) + ) +} + +query predicate new_stmts(Stmt s, int kind, NewLocation l) { + exists(Location l_old, Container c, int startLine, int startColumn, int endLine, int endColumn | + stmts(s, kind, l_old) and + locations_default(l_old, c, startLine, startColumn, endLine, endColumn) + | + if not isLocationDefault(l_old) and not isLocationExpr(l) + then l = l_old + else l = Fresh::map(TStmtLocation(l_old, c, startLine, startColumn, endLine, endColumn)) + ) +} diff --git a/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/old.dbscheme b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/old.dbscheme new file mode 100644 index 000000000000..e70d0b653187 --- /dev/null +++ b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/old.dbscheme @@ -0,0 +1,2475 @@ + +/** + * 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_default ; + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** 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 +); + +/** 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 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 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 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 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 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 ref, + int bodylocation: @location 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 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 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 ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location 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 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 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 ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location 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 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 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 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 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 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 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 ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location 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/e70d0b653187b93d9688f21c9db46bb1cd46ab78/semmlecode.cpp.dbscheme b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..7bc12b02a436 --- /dev/null +++ b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/semmlecode.cpp.dbscheme @@ -0,0 +1,2509 @@ + +/** + * 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/upgrade.properties b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/upgrade.properties new file mode 100644 index 000000000000..25f408d9b7e5 --- /dev/null +++ b/cpp/downgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/upgrade.properties @@ -0,0 +1,8 @@ +description: Merge location tables +compatibility: partial +locations_default.rel: run downgrades.ql new_locations_default +locations_expr.rel: run downgrades.ql new_locations_expr +locations_stmt.rel: run downgrades.ql new_locations_stmt +exprs.rel: run downgrades.ql new_exprs +initialisers.rel: run downgrades.ql new_initialisers +stmts.rel: run downgrades.ql new_stmts diff --git a/cpp/misc/bulk_generation_targets.json b/cpp/misc/bulk_generation_targets.json deleted file mode 100644 index 4cddef005b2f..000000000000 --- 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/integration-tests/query-suite/cpp-code-quality-extended.qls.expected b/cpp/ql/integration-tests/query-suite/cpp-code-quality-extended.qls.expected new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/cpp/ql/integration-tests/query-suite/cpp-code-quality-extended.qls.expected @@ -0,0 +1 @@ + diff --git a/cpp/ql/integration-tests/query-suite/test.py b/cpp/ql/integration-tests/query-suite/test.py index 232630c4d2a9..ac0d818cdd86 100644 --- a/cpp/ql/integration-tests/query-suite/test.py +++ b/cpp/ql/integration-tests/query-suite/test.py @@ -2,7 +2,7 @@ import pytest from query_suites import * -well_known_query_suites = ['cpp-code-quality.qls', 'cpp-security-and-quality.qls', 'cpp-security-extended.qls', 'cpp-code-scanning.qls'] +well_known_query_suites = ['cpp-code-quality.qls', 'cpp-code-quality-extended.qls', 'cpp-security-and-quality.qls', 'cpp-security-extended.qls', 'cpp-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index c46ab0044646..392305a64890 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,20 @@ +## 5.2.0 + +### Deprecated APIs + +* The `ThrowingFunction` class (`semmle.code.cpp.models.interfaces.Throwing`) has been deprecated. Please use the `AlwaysSehThrowingFunction` class instead. + +### New Features + +* Added a predicate `getAnAttribute` to `Namespace` to retrieve a namespace attribute. +* The Microsoft-specific `__leave` statement is now supported. +* A new class `LeaveStmt` extending `JumpStmt` was added to represent `__leave` statements. +* Added a predicate `hasParameterList` to `LambdaExpression` to capture whether a lambda has an explicitly specified parameter list. + +### Bug Fixes + +* `resolveTypedefs` now properly resolves typedefs for `ArrayType`s. + ## 5.1.0 ### New Features diff --git a/cpp/ql/lib/change-notes/2025-06-20-oracle-oci-models.md b/cpp/ql/lib/change-notes/2025-06-20-oracle-oci-models.md new file mode 100644 index 000000000000..09661e619385 --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-06-20-oracle-oci-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added `sql-injection` sink models for the Oracle Call Interface (OCI) database library functions `OCIStmtPrepare` and `OCIStmtPrepare2`. diff --git a/cpp/ql/lib/change-notes/2025-06-24-float16 copy.md b/cpp/ql/lib/change-notes/2025-06-24-float16 copy.md new file mode 100644 index 000000000000..0e88694e1169 --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-06-24-float16 copy.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The analysis of C/C++ code targeting 64-bit Arm platforms has been improved. This includes support for the Arm-specific builtin functions, support for the `arm_neon.h` header and Neon vector types, and support for the `fp8` scalar type. The `arm_sve.h` header and scalable vectors are only partially supported at this point. diff --git a/cpp/ql/lib/change-notes/2025-06-24-float16.md b/cpp/ql/lib/change-notes/2025-06-24-float16.md new file mode 100644 index 000000000000..24737d2b4065 --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-06-24-float16.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added support for `__fp16 _Complex` and `__bf16 _Complex` types diff --git a/cpp/ql/lib/change-notes/2025-06-27-locations.md b/cpp/ql/lib/change-notes/2025-06-27-locations.md new file mode 100644 index 000000000000..55acf55ee87e --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-06-27-locations.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The `UnknownDefaultLocation`, `UnknownExprLocation`, and `UnknownStmtLocation` classes have been deprecated. Use `UnknownLocation` instead. diff --git a/cpp/ql/lib/change-notes/released/5.2.0.md b/cpp/ql/lib/change-notes/released/5.2.0.md new file mode 100644 index 000000000000..a55198c10864 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/5.2.0.md @@ -0,0 +1,16 @@ +## 5.2.0 + +### Deprecated APIs + +* The `ThrowingFunction` class (`semmle.code.cpp.models.interfaces.Throwing`) has been deprecated. Please use the `AlwaysSehThrowingFunction` class instead. + +### New Features + +* Added a predicate `getAnAttribute` to `Namespace` to retrieve a namespace attribute. +* The Microsoft-specific `__leave` statement is now supported. +* A new class `LeaveStmt` extending `JumpStmt` was added to represent `__leave` statements. +* Added a predicate `hasParameterList` to `LambdaExpression` to capture whether a lambda has an explicitly specified parameter list. + +### Bug Fixes + +* `resolveTypedefs` now properly resolves typedefs for `ArrayType`s. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index dd8d287d0103..9e57a36a7dce 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.1.0 +lastReleaseVersion: 5.2.0 diff --git a/cpp/ql/lib/experimental/quantum/Language.qll b/cpp/ql/lib/experimental/quantum/Language.qll index ebc246291a38..53cf7292b12f 100644 --- a/cpp/ql/lib/experimental/quantum/Language.qll +++ b/cpp/ql/lib/experimental/quantum/Language.qll @@ -8,12 +8,14 @@ module CryptoInput implements InputSig { class LocatableElement = Language::Locatable; - class UnknownLocation = Language::UnknownDefaultLocation; + class UnknownLocation = Language::UnknownLocation; LocatableElement dfn_to_element(DataFlow::Node node) { result = node.asExpr() or result = node.asParameter() or - result = node.asVariable() + result = node.asVariable() or + result = node.asDefiningArgument() + // TODO: do we need asIndirectExpr()? } string locationToFileBaseNameAndLineNumberString(Location location) { @@ -54,7 +56,7 @@ module ArtifactFlowConfig implements DataFlow::ConfigSig { module ArtifactFlow = DataFlow::Global; /** - * Artifact output to node input configuration + * An artifact output to node input configuration */ abstract class AdditionalFlowInputStep extends DataFlow::Node { abstract DataFlow::Node getOutput(); @@ -89,9 +91,8 @@ module GenericDataSourceFlowConfig implements DataFlow::ConfigSig { module GenericDataSourceFlow = TaintTracking::Global; -private class ConstantDataSource extends Crypto::GenericConstantSourceInstance instanceof Literal { - ConstantDataSource() { this instanceof OpenSSLGenericSourceCandidateLiteral } - +private class ConstantDataSource extends Crypto::GenericConstantSourceInstance instanceof OpenSslGenericSourceCandidateLiteral +{ override DataFlow::Node getOutputNode() { result.asExpr() = this } override predicate flowsTo(Crypto::FlowAwareElement other) { diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/AlgToAVCFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/AlgToAVCFlow.qll index c2df3989f811..f802e58d0a76 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/AlgToAVCFlow.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/AlgToAVCFlow.qll @@ -12,13 +12,15 @@ private import PaddingAlgorithmInstance * overlap with the known algorithm constants. * Padding consumers (specific padding consumers) are excluded from the set of sinks. */ -module KnownOpenSSLAlgorithmToAlgorithmValueConsumerConfig implements DataFlow::ConfigSig { +module KnownOpenSslAlgorithmToAlgorithmValueConsumerConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { - source.asExpr() instanceof KnownOpenSSLAlgorithmConstant + source.asExpr() instanceof KnownOpenSslAlgorithmExpr and + // No need to flow direct operations to AVCs + not source.asExpr() instanceof OpenSslDirectAlgorithmOperationCall } predicate isSink(DataFlow::Node sink) { - exists(OpenSSLAlgorithmValueConsumer c | + exists(OpenSslAlgorithmValueConsumer c | c.getInputNode() = sink and // exclude padding algorithm consumers, since // these consumers take in different constant values @@ -43,11 +45,11 @@ module KnownOpenSSLAlgorithmToAlgorithmValueConsumerConfig implements DataFlow:: } } -module KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow = - DataFlow::Global; +module KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow = + DataFlow::Global; -module RSAPaddingAlgorithmToPaddingAlgorithmValueConsumerConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source.asExpr() instanceof OpenSSLPaddingLiteral } +module RsaPaddingAlgorithmToPaddingAlgorithmValueConsumerConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source.asExpr() instanceof OpenSslPaddingLiteral } predicate isSink(DataFlow::Node sink) { exists(PaddingAlgorithmValueConsumer c | c.getInputNode() = sink) @@ -58,11 +60,11 @@ module RSAPaddingAlgorithmToPaddingAlgorithmValueConsumerConfig implements DataF } } -module RSAPaddingAlgorithmToPaddingAlgorithmValueConsumerFlow = - DataFlow::Global; +module RsaPaddingAlgorithmToPaddingAlgorithmValueConsumerFlow = + DataFlow::Global; -class OpenSSLAlgorithmAdditionalFlowStep extends AdditionalFlowInputStep { - OpenSSLAlgorithmAdditionalFlowStep() { exists(AlgorithmPassthroughCall c | c.getInNode() = this) } +class OpenSslAlgorithmAdditionalFlowStep extends AdditionalFlowInputStep { + OpenSslAlgorithmAdditionalFlowStep() { exists(AlgorithmPassthroughCall c | c.getInNode() = this) } override DataFlow::Node getOutput() { exists(AlgorithmPassthroughCall c | c.getInNode() = this and c.getOutNode() = result) @@ -112,11 +114,11 @@ class CopyAndDupAlgorithmPassthroughCall extends AlgorithmPassthroughCall { override DataFlow::Node getOutNode() { result = outNode } } -class NIDToPointerPassthroughCall extends AlgorithmPassthroughCall { +class NidToPointerPassthroughCall extends AlgorithmPassthroughCall { DataFlow::Node inNode; DataFlow::Node outNode; - NIDToPointerPassthroughCall() { + NidToPointerPassthroughCall() { this.getTarget().getName() in ["OBJ_nid2obj", "OBJ_nid2ln", "OBJ_nid2sn"] and inNode.asExpr() = this.getArgument(0) and outNode.asExpr() = this @@ -148,11 +150,11 @@ class PointerToPointerPassthroughCall extends AlgorithmPassthroughCall { override DataFlow::Node getOutNode() { result = outNode } } -class PointerToNIDPassthroughCall extends AlgorithmPassthroughCall { +class PointerToNidPassthroughCall extends AlgorithmPassthroughCall { DataFlow::Node inNode; DataFlow::Node outNode; - PointerToNIDPassthroughCall() { + PointerToNidPassthroughCall() { this.getTarget().getName() in ["OBJ_obj2nid", "OBJ_ln2nid", "OBJ_sn2nid", "OBJ_txt2nid"] and ( inNode.asIndirectExpr() = this.getArgument(0) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll index 995b72a437ed..4bd4b4497660 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll @@ -5,68 +5,68 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.KnownAlgorithmCon private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.DirectAlgorithmValueConsumer private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase private import AlgToAVCFlow +private import codeql.quantum.experimental.Standardization::Types::KeyOpAlg as KeyOpAlg /** - * Given a `KnownOpenSSLBlockModeAlgorithmConstant`, converts this to a block family type. + * Given a `KnownOpenSslBlockModeAlgorithmExpr`, converts this to a block family type. * Does not bind if there is no mapping (no mapping to 'unknown' or 'other'). */ -predicate knownOpenSSLConstantToBlockModeFamilyType( - KnownOpenSSLBlockModeAlgorithmConstant e, Crypto::TBlockCipherModeOfOperationType type +predicate knownOpenSslConstantToBlockModeFamilyType( + KnownOpenSslBlockModeAlgorithmExpr e, KeyOpAlg::ModeOfOperationType type ) { exists(string name | - name = e.getNormalizedName() and + name = e.(KnownOpenSslAlgorithmExpr).getNormalizedName() and ( - name.matches("CBC") and type instanceof Crypto::CBC + name = "CBC" and type instanceof KeyOpAlg::CBC or - name.matches("CFB%") and type instanceof Crypto::CFB + name = "CFB%" and type instanceof KeyOpAlg::CFB or - name.matches("CTR") and type instanceof Crypto::CTR + name = "CTR" and type instanceof KeyOpAlg::CTR or - name.matches("GCM") and type instanceof Crypto::GCM + name = "GCM" and type instanceof KeyOpAlg::GCM or - name.matches("OFB") and type instanceof Crypto::OFB + name = "OFB" and type instanceof KeyOpAlg::OFB or - name.matches("XTS") and type instanceof Crypto::XTS + name = "XTS" and type instanceof KeyOpAlg::XTS or - name.matches("CCM") and type instanceof Crypto::CCM + name = "CCM" and type instanceof KeyOpAlg::CCM or - name.matches("GCM") and type instanceof Crypto::GCM + name = "CCM" and type instanceof KeyOpAlg::CCM or - name.matches("CCM") and type instanceof Crypto::CCM - or - name.matches("ECB") and type instanceof Crypto::ECB + name = "ECB" and type instanceof KeyOpAlg::ECB ) ) } -class KnownOpenSSLBlockModeConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::ModeOfOperationAlgorithmInstance instanceof KnownOpenSSLBlockModeAlgorithmConstant +class KnownOpenSslBlockModeConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::ModeOfOperationAlgorithmInstance instanceof KnownOpenSslBlockModeAlgorithmExpr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; - KnownOpenSSLBlockModeConstantAlgorithmInstance() { + KnownOpenSslBlockModeConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof Literal and + this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and + sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) ) or // Possibility 2: - this instanceof DirectAlgorithmValueConsumer and getterCall = this + this instanceof OpenSslAlgorithmCall and + getterCall = this } - override Crypto::TBlockCipherModeOfOperationType getModeType() { - knownOpenSSLConstantToBlockModeFamilyType(this, result) + override KeyOpAlg::ModeOfOperationType getModeType() { + knownOpenSslConstantToBlockModeFamilyType(this, result) or - not knownOpenSSLConstantToBlockModeFamilyType(this, _) and result = Crypto::OtherMode() + not knownOpenSslConstantToBlockModeFamilyType(this, _) and result = KeyOpAlg::OtherMode() } // NOTE: I'm not going to attempt to parse out the mode specific part, so returning @@ -77,5 +77,5 @@ class KnownOpenSSLBlockModeConstantAlgorithmInstance extends OpenSSLAlgorithmIns result = this.(Call).getTarget().getName() } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll index 77251761040d..47ffd67924a6 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll @@ -10,14 +10,14 @@ private import AlgToAVCFlow private import BlockAlgorithmInstance /** - * Given a `KnownOpenSSLCipherAlgorithmConstant`, converts this to a cipher family type. + * Given a `KnownOpenSslCipherAlgorithmExpr`, converts this to a cipher family type. * Does not bind if there is no mapping (no mapping to 'unknown' or 'other'). */ -predicate knownOpenSSLConstantToCipherFamilyType( - KnownOpenSSLCipherAlgorithmConstant e, Crypto::KeyOpAlg::TAlgorithm type +predicate knownOpenSslConstantToCipherFamilyType( + KnownOpenSslCipherAlgorithmExpr e, Crypto::KeyOpAlg::TAlgorithm type ) { exists(string name | - name = e.getNormalizedName() and + name = e.(KnownOpenSslAlgorithmExpr).getNormalizedName() and ( name.matches("AES%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::AES()) or @@ -33,9 +33,9 @@ predicate knownOpenSSLConstantToCipherFamilyType( or name.matches("CAST5%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::CAST5()) or - name.matches("2DES%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DoubleDES()) + name.matches("2DES%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DOUBLE_DES()) or - name.matches("3DES%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::TripleDES()) + name.matches("3DES%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::TRIPLE_DES()) or name.matches("DES%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DES()) or @@ -64,28 +64,29 @@ predicate knownOpenSSLConstantToCipherFamilyType( ) } -class KnownOpenSSLCipherConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::KeyOperationAlgorithmInstance instanceof KnownOpenSSLCipherAlgorithmConstant +class KnownOpenSslCipherConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::KeyOperationAlgorithmInstance instanceof KnownOpenSslCipherAlgorithmExpr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; - KnownOpenSSLCipherConstantAlgorithmInstance() { + KnownOpenSslCipherConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof Literal and + this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and + sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) ) or // Possibility 2: - this instanceof DirectAlgorithmValueConsumer and getterCall = this + this instanceof OpenSslAlgorithmCall and + getterCall = this } override Crypto::ModeOfOperationAlgorithmInstance getModeOfOperationAlgorithm() { @@ -109,17 +110,17 @@ class KnownOpenSSLCipherConstantAlgorithmInstance extends OpenSSLAlgorithmInstan } override int getKeySizeFixed() { - this.(KnownOpenSSLCipherAlgorithmConstant).getExplicitKeySize() = result + this.(KnownOpenSslCipherAlgorithmExpr).getExplicitKeySize() = result } - override Crypto::KeyOpAlg::Algorithm getAlgorithmType() { - knownOpenSSLConstantToCipherFamilyType(this, result) + override KeyOpAlg::AlgorithmType getAlgorithmType() { + knownOpenSslConstantToCipherFamilyType(this, result) or - not knownOpenSSLConstantToCipherFamilyType(this, _) and + not knownOpenSslConstantToCipherFamilyType(this, _) and result = Crypto::KeyOpAlg::TUnknownKeyOperationAlgorithmType() } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } override Crypto::ConsumerInputDataFlowNode getKeySizeConsumer() { // TODO: trace to any key size initializer, symmetric and asymmetric diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll index bebca15d4773..82a2b1357f27 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll @@ -6,31 +6,32 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.DirectAlgorithmValueConsumer private import AlgToAVCFlow -class KnownOpenSSLEllipticCurveConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::EllipticCurveInstance instanceof KnownOpenSSLEllipticCurveAlgorithmConstant +class KnownOpenSslEllipticCurveConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::EllipticCurveInstance instanceof KnownOpenSslEllipticCurveAlgorithmExpr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; - KnownOpenSSLEllipticCurveConstantAlgorithmInstance() { + KnownOpenSslEllipticCurveConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof Literal and + this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) ) or // Possibility 2: - this instanceof DirectAlgorithmValueConsumer and getterCall = this + this instanceof OpenSslAlgorithmCall and + getterCall = this } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } override string getRawEllipticCurveName() { result = this.(Literal).getValue().toString() @@ -38,16 +39,22 @@ class KnownOpenSSLEllipticCurveConstantAlgorithmInstance extends OpenSSLAlgorith result = this.(Call).getTarget().getName() } - override Crypto::TEllipticCurveType getEllipticCurveType() { - Crypto::ellipticCurveNameToKeySizeAndFamilyMapping(this.getParsedEllipticCurveName(), _, result) + override Crypto::EllipticCurveFamilyType getEllipticCurveFamilyType() { + if + Crypto::ellipticCurveNameToKnownKeySizeAndFamilyMapping(this.getParsedEllipticCurveName(), _, + _) + then + Crypto::ellipticCurveNameToKnownKeySizeAndFamilyMapping(this.getParsedEllipticCurveName(), _, + result) + else result = Crypto::OtherEllipticCurveType() } override string getParsedEllipticCurveName() { - result = this.(KnownOpenSSLEllipticCurveAlgorithmConstant).getNormalizedName() + result = this.(KnownOpenSslAlgorithmExpr).getNormalizedName() } override int getKeySize() { - Crypto::ellipticCurveNameToKeySizeAndFamilyMapping(this.(KnownOpenSSLEllipticCurveAlgorithmConstant) + Crypto::ellipticCurveNameToKnownKeySizeAndFamilyMapping(this.(KnownOpenSslAlgorithmExpr) .getNormalizedName(), result, _) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll index ca1882f3b6e3..2be84b68f616 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll @@ -5,75 +5,76 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstanceBase private import AlgToAVCFlow -predicate knownOpenSSLConstantToHashFamilyType( - KnownOpenSSLHashAlgorithmConstant e, Crypto::THashType type +predicate knownOpenSslConstantToHashFamilyType( + KnownOpenSslHashAlgorithmExpr e, Crypto::THashType type ) { exists(string name | - name = e.getNormalizedName() and + name = e.(KnownOpenSslAlgorithmExpr).getNormalizedName() and ( - name.matches("BLAKE2B") and type instanceof Crypto::BLAKE2B + name = "BLAKE2B" and type instanceof Crypto::BLAKE2B or - name.matches("BLAKE2S") and type instanceof Crypto::BLAKE2S + name = "BLAKE2S" and type instanceof Crypto::BLAKE2S or - name.matches("GOST%") and type instanceof Crypto::GOSTHash + name.matches("GOST%") and type instanceof Crypto::GOST_HASH or - name.matches("MD2") and type instanceof Crypto::MD2 + name = "MD2" and type instanceof Crypto::MD2 or - name.matches("MD4") and type instanceof Crypto::MD4 + name = "MD4" and type instanceof Crypto::MD4 or - name.matches("MD5") and type instanceof Crypto::MD5 + name = "MD5" and type instanceof Crypto::MD5 or - name.matches("MDC2") and type instanceof Crypto::MDC2 + name = "MDC2" and type instanceof Crypto::MDC2 or - name.matches("POLY1305") and type instanceof Crypto::POLY1305 + name = "POLY1305" and type instanceof Crypto::POLY1305 or name.matches(["SHA", "SHA1"]) and type instanceof Crypto::SHA1 or - name.matches("SHA+%") and not name.matches(["SHA1", "SHA3-"]) and type instanceof Crypto::SHA2 + name.matches("SHA_%") and not name.matches(["SHA1", "SHA3-"]) and type instanceof Crypto::SHA2 or name.matches("SHA3-%") and type instanceof Crypto::SHA3 or - name.matches(["SHAKE"]) and type instanceof Crypto::SHAKE + name = "SHAKE" and type instanceof Crypto::SHAKE or - name.matches("SM3") and type instanceof Crypto::SM3 + name = "SM3" and type instanceof Crypto::SM3 or - name.matches("RIPEMD160") and type instanceof Crypto::RIPEMD160 + name = "RIPEMD160" and type instanceof Crypto::RIPEMD160 or - name.matches("WHIRLPOOL") and type instanceof Crypto::WHIRLPOOL + name = "WHIRLPOOL" and type instanceof Crypto::WHIRLPOOL ) ) } -class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::HashAlgorithmInstance instanceof KnownOpenSSLHashAlgorithmConstant +class KnownOpenSslHashConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::HashAlgorithmInstance instanceof KnownOpenSslHashAlgorithmExpr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; - KnownOpenSSLHashConstantAlgorithmInstance() { + KnownOpenSslHashConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof Literal and + this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and + sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) ) or // Possibility 2: - this instanceof DirectAlgorithmValueConsumer and getterCall = this + this instanceof OpenSslAlgorithmCall and + getterCall = this } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } override Crypto::THashType getHashFamily() { - knownOpenSSLConstantToHashFamilyType(this, result) + knownOpenSslConstantToHashFamilyType(this, result) or - not knownOpenSSLConstantToHashFamilyType(this, _) and result = Crypto::OtherHashType() + not knownOpenSslConstantToHashFamilyType(this, _) and result = Crypto::OtherHashType() } override string getRawHashAlgorithmName() { @@ -83,6 +84,6 @@ class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance } override int getFixedDigestLength() { - this.(KnownOpenSSLHashAlgorithmConstant).getExplicitDigestLength() = result + this.(KnownOpenSslHashAlgorithmExpr).getExplicitDigestLength() = result } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll index c72b9a8e9254..1addda3a9eff 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll @@ -5,11 +5,11 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstanceBase private import AlgToAVCFlow -predicate knownOpenSSLConstantToKeyAgreementFamilyType( - KnownOpenSSLKeyAgreementAlgorithmConstant e, Crypto::TKeyAgreementType type +predicate knownOpenSslConstantToKeyAgreementFamilyType( + KnownOpenSslKeyAgreementAlgorithmExpr e, Crypto::TKeyAgreementType type ) { exists(string name | - name = e.getNormalizedName() and + name = e.(KnownOpenSslAlgorithmExpr).getNormalizedName() and ( name = "ECDH" and type = Crypto::ECDH() or @@ -22,36 +22,37 @@ predicate knownOpenSSLConstantToKeyAgreementFamilyType( ) } -class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::KeyAgreementAlgorithmInstance instanceof KnownOpenSSLKeyAgreementAlgorithmConstant +class KnownOpenSslKeyAgreementConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::KeyAgreementAlgorithmInstance instanceof KnownOpenSslKeyAgreementAlgorithmExpr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; - KnownOpenSSLHashConstantAlgorithmInstance() { + KnownOpenSslKeyAgreementConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof Literal and + this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) ) or // Possibility 2: - this instanceof DirectAlgorithmValueConsumer and getterCall = this + this instanceof OpenSslAlgorithmCall and + getterCall = this } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } override Crypto::TKeyAgreementType getKeyAgreementType() { - knownOpenSSLConstantToKeyAgreementFamilyType(this, result) + knownOpenSslConstantToKeyAgreementFamilyType(this, result) or - not knownOpenSSLConstantToKeyAgreementFamilyType(this, _) and + not knownOpenSslConstantToKeyAgreementFamilyType(this, _) and result = Crypto::OtherKeyAgreementType() } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll index 7b2b9549d001..4328253f1a4f 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll @@ -1,39 +1,116 @@ import cpp import experimental.quantum.OpenSSL.GenericSourceCandidateLiteral -predicate resolveAlgorithmFromExpr(Expr e, string normalizedName, string algType) { - resolveAlgorithmFromCall(e, normalizedName, algType) - or - resolveAlgorithmFromLiteral(e, normalizedName, algType) +predicate resolveAlgorithmFromExpr( + KnownOpenSslAlgorithmExpr e, string normalizedName, string algType +) { + normalizedName = e.getNormalizedName() and + algType = e.getAlgType() } -class KnownOpenSSLAlgorithmConstant extends Expr { - KnownOpenSSLAlgorithmConstant() { resolveAlgorithmFromExpr(this, _, _) } +/** + * An expression that resolves to a known OpenSsl algorithm constant. + * This can be a literal, a call to a known OpenSsl algorithm constant getter, + * or a call to an operation that directly operates on a known algorithm. + */ +abstract class KnownOpenSslAlgorithmExpr extends Expr { + abstract string getNormalizedName(); + + abstract string getAlgType(); +} + +class OpenSslAlgorithmLiteral extends KnownOpenSslAlgorithmExpr instanceof Literal { + string normalizedName; + string algType; + + OpenSslAlgorithmLiteral() { resolveAlgorithmFromLiteral(this, normalizedName, algType) } - string getNormalizedName() { resolveAlgorithmFromExpr(this, result, _) } + override string getNormalizedName() { result = normalizedName } - string getAlgType() { resolveAlgorithmFromExpr(this, _, result) } + override string getAlgType() { result = algType } } -class KnownOpenSSLCipherAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { +/** + * A call to either an OpenSsl algorithm constant 'getter', e.g., EVP_MD5() + * or call to an operation that directly operates on a known algorithm, e.g., AES_encrypt + */ +abstract class OpenSslAlgorithmCall extends KnownOpenSslAlgorithmExpr instanceof Call { } + +/** + * A call to a 'direct algorithm getter', e.g., EVP_MD5() + * This approach to fetching algorithms was used in OpenSsl 1.0.2. + * The strategy for resolving these calls is to parse the target name + * and resolve the name as though it were a known literal. + * There are a few exceptions where the name doesn't directly match the + * known literal set. If that occurs, users must add the name to the + * set of aliases. E.g., EVP_dss() and EVP_dss1() needed such mappings + * alias = "dss" and target = "dsa" + * or + * alias = "dss1" and target = "dsaWithSHA1" + */ +class OpenSslDirectAlgorithmFetchCall extends OpenSslAlgorithmCall { + string normalizedName; string algType; - KnownOpenSSLCipherAlgorithmConstant() { - resolveAlgorithmFromExpr(this, _, algType) and + OpenSslDirectAlgorithmFetchCall() { + //ASSUMPTION: these cases will have operands for the call + not exists(this.(Call).getAnArgument()) and + exists(string name, string parsedTargetName | + parsedTargetName = + this.(Call).getTarget().getName().replaceAll("EVP_", "").toLowerCase().replaceAll("_", "-") and + name = resolveAlgorithmAlias(parsedTargetName) and + knownOpenSslAlgorithmLiteral(name, _, normalizedName, algType) + ) + } + + override string getNormalizedName() { result = normalizedName } + + override string getAlgType() { result = algType } +} + +/** + * A call to an OpenSsl operation that directly operates on a known algorithm. + * An algorithm construct is not generated for these calls, rather, the operation + * is directly performed, and the algorithm is inferred by the operation itself. + */ +class OpenSslDirectAlgorithmOperationCall extends OpenSslAlgorithmCall { + string normalizedName; + string algType; + + OpenSslDirectAlgorithmOperationCall() { + //TODO: this set will have to be exhaustive, and for each operation + //further modeling will be necessary for each case to map the APIs operands + //ASSUMPTION: these cases must have operands for the call + exists(this.(Call).getAnArgument()) and + //TODO: Each case would be enumerated here. Will likely need an exhaustive mapping much like + // for known constants. + knownOpenSslAlgorithmOperationCall(this, normalizedName, algType) + } + + override string getNormalizedName() { result = normalizedName } + + override string getAlgType() { result = algType } +} + +class KnownOpenSslCipherAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + string algType; + + KnownOpenSslCipherAlgorithmExpr() { + algType = this.(KnownOpenSslAlgorithmExpr).getAlgType() and algType.matches("%ENCRYPTION") } int getExplicitKeySize() { exists(string name | - name = this.getNormalizedName() and + name = this.(KnownOpenSslAlgorithmExpr).getNormalizedName() and resolveAlgorithmFromExpr(this, name, algType) and result = name.regexpCapture(".*-(\\d*)", 1).toInt() ) } } -class KnownOpenSSLPaddingAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { - KnownOpenSSLPaddingAlgorithmConstant() { +class KnownOpenSslPaddingAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslPaddingAlgorithmExpr() { exists(string algType | resolveAlgorithmFromExpr(this, _, algType) and algType.matches("%PADDING") @@ -41,55 +118,62 @@ class KnownOpenSSLPaddingAlgorithmConstant extends KnownOpenSSLAlgorithmConstant } } -class KnownOpenSSLBlockModeAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { - KnownOpenSSLBlockModeAlgorithmConstant() { resolveAlgorithmFromExpr(this, _, "BLOCK_MODE") } +class KnownOpenSslBlockModeAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslBlockModeAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "BLOCK_MODE") } } -class KnownOpenSSLHashAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { - KnownOpenSSLHashAlgorithmConstant() { resolveAlgorithmFromExpr(this, _, "HASH") } +class KnownOpenSslHashAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslHashAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "HASH") } int getExplicitDigestLength() { exists(string name | - name = this.getNormalizedName() and + name = this.(KnownOpenSslAlgorithmExpr).getNormalizedName() and resolveAlgorithmFromExpr(this, name, "HASH") and result = name.regexpCapture(".*-(\\d*)$", 1).toInt() ) } } -class KnownOpenSSLEllipticCurveAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { - KnownOpenSSLEllipticCurveAlgorithmConstant() { - resolveAlgorithmFromExpr(this, _, "ELLIPTIC_CURVE") - } +class KnownOpenSslMacAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslMacAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "MAC") } } -class KnownOpenSSLSignatureAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { - KnownOpenSSLSignatureAlgorithmConstant() { resolveAlgorithmFromExpr(this, _, "SIGNATURE") } +class KnownOpenSslHMacAlgorithmExpr extends Expr instanceof KnownOpenSslMacAlgorithmExpr { + KnownOpenSslHMacAlgorithmExpr() { resolveAlgorithmFromExpr(this, "HMAC", "MAC") } + + /** + * Gets an explicit cipher algorithm for this MAC algorithm. + * This occurs when the MAC specifies the algorithm at the same time "HMAC-SHA-256" + */ + KnownOpenSslHashAlgorithmExpr getExplicitHashAlgorithm() { result = this } } -class KnownOpenSSLKeyAgreementAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { - KnownOpenSSLKeyAgreementAlgorithmConstant() { resolveAlgorithmFromExpr(this, _, "KEY_AGREEMENT") } +class KnownOpenSslCMacAlgorithmExpr extends Expr instanceof KnownOpenSslMacAlgorithmExpr { + KnownOpenSslCMacAlgorithmExpr() { resolveAlgorithmFromExpr(this, "CMAC", "MAC") } + + /** + * Gets an explicit cipher algorithm for this MAC algorithm. + * This occurs when the MAC specifies the algorithm at the same time "HMAC-SHA-256" + */ + KnownOpenSslCipherAlgorithmExpr getExplicitCipherAlgorithm() { result = this } } -/** - * Resolves a call to a 'direct algorithm getter', e.g., EVP_MD5() - * This approach to fetching algorithms was used in OpenSSL 1.0.2. - * The strategy for resolving these calls is to parse the target name - * and resolve the name as though it were a known literal. - * There are a few exceptions where the name doesn't directly match the - * known literal set. If that occurs, users must add the name to the - * set of aliases. E.g., EVP_dss() and EVP_dss1() needed such mappings - * alias = "dss" and target = "dsa" - * or - * alias = "dss1" and target = "dsaWithSHA1" - */ -predicate resolveAlgorithmFromCall(Call c, string normalized, string algType) { - exists(string name, string parsedTargetName | - parsedTargetName = - c.getTarget().getName().replaceAll("EVP_", "").toLowerCase().replaceAll("_", "-") and - name = resolveAlgorithmAlias(parsedTargetName) and - knownOpenSSLAlgorithmLiteral(name, _, normalized, algType) - ) +class KnownOpenSslEllipticCurveAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslEllipticCurveAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "ELLIPTIC_CURVE") } +} + +class KnownOpenSslSignatureAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslSignatureAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "SIGNATURE") } +} + +class KnownOpenSslKeyAgreementAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslKeyAgreementAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "KEY_AGREEMENT") } +} + +predicate knownOpenSslAlgorithmOperationCall(Call c, string normalized, string algType) { + c.getTarget().getName() in ["EVP_RSA_gen", "RSA_generate_key_ex", "RSA_generate_key", "RSA_new"] and + normalized = "RSA" and + algType = "ASYMMETRIC_ENCRYPTION" } /** @@ -98,13 +182,13 @@ predicate resolveAlgorithmFromCall(Call c, string normalized, string algType) { * If this predicate does not hold, then `e` can be interpreted as being of `UNKNOWN` type. */ predicate resolveAlgorithmFromLiteral( - OpenSSLGenericSourceCandidateLiteral e, string normalized, string algType + OpenSslGenericSourceCandidateLiteral e, string normalized, string algType ) { - knownOpenSSLAlgorithmLiteral(_, e.getValue().toInt(), normalized, algType) + knownOpenSslAlgorithmLiteral(_, e.getValue().toInt(), normalized, algType) or exists(string name | name = resolveAlgorithmAlias(e.getValue()) and - knownOpenSSLAlgorithmLiteral(name, _, normalized, algType) + knownOpenSslAlgorithmLiteral(name, _, normalized, algType) ) } @@ -115,7 +199,7 @@ string resolveAlgorithmAlias(string name) { result = getAlgorithmAlias(lower) or // or the name is itself a known algorithm - knownOpenSSLAlgorithmLiteral(lower, _, _, _) and result = lower + knownOpenSslAlgorithmLiteral(lower, _, _, _) and result = lower ) } @@ -126,7 +210,8 @@ string getAlgorithmAlias(string alias) { } /** - * Finds aliases of known alagorithms defined by users (through obj_name_add and various macros pointing to this function) + * Holds for aliases of known algorithms defined by users + * (through obj_name_add and various macros pointing to this function). * * The `target` and `alias` are converted to lowercase to be of a standard form. */ @@ -138,9 +223,9 @@ predicate customAliases(string target, string alias) { } /** - * A hard-coded mapping of known algorithm aliases in OpenSSL. + * Holds for a hard-coded mapping of known algorithm aliases in OpenSsl. * This was derived by applying the same kind of logic foun din `customAliases` to the - * OpenSSL code base directly. + * OpenSsl code base directly. * * The `target` and `alias` are converted to lowercase to be of a standard form. */ @@ -247,7 +332,7 @@ predicate defaultAliases(string target, string alias) { * `normalized` is the normalized name of the algorithm (e.g., "AES128" for "aes-128-cbc") * `algType` is the type of algorithm (e.g., "SYMMETRIC_ENCRYPTION") */ -predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, string algType) { +predicate knownOpenSslAlgorithmLiteral(string name, int nid, string normalized, string algType) { name = "dhKeyAgreement" and nid = 28 and normalized = "DH" and algType = "KEY_AGREEMENT" or name = "x9.42 dh" and nid = 29 and normalized = "DH" and algType = "KEY_AGREEMENT" @@ -886,6 +971,8 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "id-alg-dh-sig-hmac-sha1" and nid = 325 and normalized = "DH" and algType = "KEY_AGREEMENT" or + name = "id-alg-dh-sig-hmac-sha1" and nid = 325 and normalized = "HMAC" and algType = "MAC" + or name = "aes-128-ofb" and nid = 420 and normalized = "AES-128" and algType = "SYMMETRIC_ENCRYPTION" or name = "aes-128-ofb" and nid = 420 and normalized = "OFB" and algType = "BLOCK_MODE" @@ -1064,8 +1151,12 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "hmac-md5" and nid = 780 and normalized = "MD5" and algType = "HASH" or + name = "hmac-md5" and nid = 780 and normalized = "HMAC" and algType = "HASH" + or name = "hmac-sha1" and nid = 781 and normalized = "SHA1" and algType = "HASH" or + name = "hmac-sha1" and nid = 781 and normalized = "HMAC" and algType = "MAC" + or name = "md_gost94" and nid = 809 and normalized = "GOST94" and algType = "HASH" or name = "gost94" and nid = 812 and normalized = "GOST94" and algType = "HASH" @@ -1140,10 +1231,14 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "rc4-hmac-md5" and nid = 915 and normalized = "MD5" and algType = "HASH" or + name = "rc4-hmac-md5" and nid = 915 and normalized = "HMAC" and algType = "MAC" + or name = "rc4-hmac-md5" and nid = 915 and normalized = "RC4" and algType = "SYMMETRIC_ENCRYPTION" or name = "aes-128-cbc-hmac-sha1" and nid = 916 and normalized = "SHA1" and algType = "HASH" or + name = "aes-128-cbc-hmac-sha1" and nid = 916 and normalized = "HMAC" and algType = "MAC" + or name = "aes-128-cbc-hmac-sha1" and nid = 916 and normalized = "AES-128" and @@ -1153,6 +1248,8 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "aes-192-cbc-hmac-sha1" and nid = 917 and normalized = "SHA1" and algType = "HASH" or + name = "aes-192-cbc-hmac-sha1" and nid = 917 and normalized = "HMAC" and algType = "MAC" + or name = "aes-192-cbc-hmac-sha1" and nid = 917 and normalized = "AES-192" and @@ -1167,6 +1264,8 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "aes-256-cbc-hmac-sha1" and nid = 918 and normalized = "CBC" and algType = "BLOCK_MODE" or + name = "aes-256-cbc-hmac-sha1" and nid = 918 and normalized = "HMAC" and algType = "MAC" + or name = "aes-128-cbc-hmac-sha256" and nid = 948 and normalized = "SHA-256" and algType = "HASH" or name = "aes-128-cbc-hmac-sha256" and @@ -1178,6 +1277,8 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "aes-192-cbc-hmac-sha256" and nid = 949 and normalized = "SHA-256" and algType = "HASH" or + name = "aes-192-cbc-hmac-sha256" and nid = 949 and normalized = "HMAC" and algType = "MAC" + or name = "aes-192-cbc-hmac-sha256" and nid = 949 and normalized = "AES-192" and @@ -1187,6 +1288,8 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "aes-256-cbc-hmac-sha256" and nid = 950 and normalized = "SHA-256" and algType = "HASH" or + name = "aes-256-cbc-hmac-sha256" and nid = 950 and normalized = "HMAC" and algType = "MAC" + or name = "aes-256-cbc-hmac-sha256" and nid = 950 and normalized = "AES-256" and @@ -1226,6 +1329,11 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, normalized = "CAMELLIA-128" and algType = "SYMMETRIC_ENCRYPTION" or + name = "camellia-128-cmac" and + nid = 964 and + normalized = "CMAC" and + algType = "MAC" + or name = "camellia-192-gcm" and nid = 965 and normalized = "CAMELLIA-192" and @@ -1278,6 +1386,11 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, normalized = "CAMELLIA-256" and algType = "SYMMETRIC_ENCRYPTION" or + name = "camellia-256-cmac" and + nid = 972 and + normalized = "CMAC" and + algType = "MAC" + or name = "id-scrypt" and nid = 973 and normalized = "SCRYPT" and algType = "KEY_DERIVATION" or name = "gost89-cnt-12" and @@ -1291,11 +1404,13 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "md_gost12_512" and nid = 983 and normalized = "GOST" and algType = "HASH" or + // TODO: re-evaluate: this is a signing algorithm using hashing and curves name = "id-tc26-signwithdigest-gost3410-2012-256" and nid = 985 and normalized = "GOST34102012" and algType = "SYMMETRIC_ENCRYPTION" or + // TODO: re-evaluate: this is a signing algorithm using hashing and curves name = "id-tc26-signwithdigest-gost3410-2012-512" and nid = 986 and normalized = "GOST34102012" and @@ -1304,22 +1419,42 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, name = "id-tc26-hmac-gost-3411-2012-256" and nid = 988 and normalized = "GOST34112012" and - algType = "SYMMETRIC_ENCRYPTION" + algType = "HASH" + or + name = "id-tc26-hmac-gost-3411-2012-256" and + nid = 988 and + normalized = "HMAC" and + algType = "MAC" or name = "id-tc26-hmac-gost-3411-2012-512" and nid = 989 and normalized = "GOST34112012" and - algType = "SYMMETRIC_ENCRYPTION" + algType = "HASH" + or + name = "id-tc26-hmac-gost-3411-2012-512" and + nid = 989 and + normalized = "HMAC" and + algType = "MAC" or name = "id-tc26-agreement-gost-3410-2012-256" and nid = 992 and normalized = "GOST34102012" and - algType = "SYMMETRIC_ENCRYPTION" + algType = "ELLIPTIC_CURVE" + or + name = "id-tc26-agreement-gost-3410-2012-256" and + nid = 992 and + normalized = "GOST34102012" and + algType = "KEY_AGREEMENT" or name = "id-tc26-agreement-gost-3410-2012-512" and nid = 993 and normalized = "GOST34102012" and - algType = "SYMMETRIC_ENCRYPTION" + algType = "ELLIPTIC_CURVE" + or + name = "id-tc26-agreement-gost-3410-2012-512" and + nid = 993 and + normalized = "GOST34102012" and + algType = "KEY_AGREEMENT" or name = "id-tc26-gost-3410-2012-512-constants" and nid = 996 and @@ -1407,12 +1542,20 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "hmac-sha3-224" and nid = 1102 and normalized = "SHA3-224" and algType = "HASH" or + name = "hmac-sha3-224" and nid = 1102 and normalized = "HMAC" and algType = "MAC" + or name = "hmac-sha3-256" and nid = 1103 and normalized = "SHA3-256" and algType = "HASH" or + name = "hmac-sha3-256" and nid = 1103 and normalized = "HMAC" and algType = "MAC" + or name = "hmac-sha3-384" and nid = 1104 and normalized = "SHA3-384" and algType = "HASH" or + name = "hmac-sha3-384" and nid = 1104 and normalized = "HMAC" and algType = "MAC" + or name = "hmac-sha3-512" and nid = 1105 and normalized = "SHA3-512" and algType = "HASH" or + name = "hmac-sha3-512" and nid = 1105 and normalized = "HMAC" and algType = "MAC" + or name = "id-dsa-with-sha384" and nid = 1106 and normalized = "DSA" and algType = "SIGNATURE" or name = "id-dsa-with-sha384" and nid = 1106 and normalized = "SHA-384" and algType = "HASH" @@ -2180,34 +2323,67 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, normalized = "GOST" and algType = "SYMMETRIC_ENCRYPTION" or + name = "hmac gost 34.11-2012 256 bit" and + nid = 988 and + normalized = "HMAC" and + algType = "MAC" + or name = "hmac gost 34.11-2012 512 bit" and nid = 989 and normalized = "GOST" and algType = "SYMMETRIC_ENCRYPTION" or + name = "hmac gost 34.11-2012 512 bit" and + nid = 989 and + normalized = "HMAC" and + algType = "MAC" + or name = "hmac gost 34.11-94" and nid = 810 and normalized = "GOST" and algType = "SYMMETRIC_ENCRYPTION" or + name = "hmac gost 34.11-94" and + nid = 810 and + normalized = "HMAC" and + algType = "MAC" + or name = "hmacwithmd5" and nid = 797 and normalized = "MD5" and algType = "HASH" or + name = "hmacwithmd5" and nid = 797 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha1" and nid = 163 and normalized = "SHA1" and algType = "HASH" or + name = "hmacwithsha1" and nid = 163 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha224" and nid = 798 and normalized = "SHA-224" and algType = "HASH" or + name = "hmacwithsha224" and nid = 798 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha256" and nid = 799 and normalized = "SHA-256" and algType = "HASH" or + name = "hmacwithsha256" and nid = 799 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha384" and nid = 800 and normalized = "SHA-384" and algType = "HASH" or + name = "hmacwithsha384" and nid = 800 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha512" and nid = 801 and normalized = "SHA-512" and algType = "HASH" or + name = "hmacwithsha512" and nid = 801 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha512-224" and nid = 1193 and normalized = "SHA-512-224" and algType = "HASH" or + name = "hmacwithsha512-224" and nid = 1193 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha512-256" and nid = 1194 and normalized = "SHA-512-256" and algType = "HASH" or + name = "hmacwithsha512-256" and nid = 1194 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsm3" and nid = 1281 and normalized = "SM3" and algType = "HASH" or + name = "hmacwithsm3" and nid = 1281 and normalized = "HMAC" and algType = "MAC" + or name = "id-aes128-ccm" and nid = 896 and normalized = "AES-128" and @@ -2457,12 +2633,20 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "id-hmacwithsha3-224" and nid = 1102 and normalized = "SHA3-224" and algType = "HASH" or + name = "id-hmacwithsha3-224" and nid = 1102 and normalized = "HMAC" and algType = "MAC" + or name = "id-hmacwithsha3-256" and nid = 1103 and normalized = "SHA3-256" and algType = "HASH" or + name = "id-hmacwithsha3-256" and nid = 1103 and normalized = "HMAC" and algType = "MAC" + or name = "id-hmacwithsha3-384" and nid = 1104 and normalized = "SHA3-384" and algType = "HASH" or + name = "id-hmacwithsha3-384" and nid = 1104 and normalized = "HMAC" and algType = "MAC" + or name = "id-hmacwithsha3-512" and nid = 1105 and normalized = "SHA3-512" and algType = "HASH" or + name = "id-hmacwithsha3-512" and nid = 1105 and normalized = "HMAC" and algType = "MAC" + or name = "id-regctrl" and nid = 313 and normalized = "CTR" and algType = "BLOCK_MODE" or name = "id-smime-alg-3deswrap" and @@ -2818,93 +3002,93 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, name = "ripemd160withrsa" and nid = 119 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "ripemd160withrsa" and nid = 119 and normalized = "RIPEMD160" and algType = "HASH" or - name = "rsa-md2" and nid = 7 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-md2" and nid = 7 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-md2" and nid = 7 and normalized = "MD2" and algType = "HASH" or - name = "rsa-md4" and nid = 396 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-md4" and nid = 396 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-md4" and nid = 396 and normalized = "MD4" and algType = "HASH" or - name = "rsa-md5" and nid = 8 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-md5" and nid = 8 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-md5" and nid = 8 and normalized = "MD5" and algType = "HASH" or - name = "rsa-mdc2" and nid = 96 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-mdc2" and nid = 96 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-mdc2" and nid = 96 and normalized = "MDC2" and algType = "HASH" or - name = "rsa-np-md5" and nid = 104 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-np-md5" and nid = 104 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-np-md5" and nid = 104 and normalized = "MD5" and algType = "HASH" or - name = "rsa-ripemd160" and nid = 119 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-ripemd160" and nid = 119 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-ripemd160" and nid = 119 and normalized = "RIPEMD160" and algType = "HASH" or - name = "rsa-sha" and nid = 42 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha" and nid = 42 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha" and nid = 42 and normalized = "SHA" and algType = "HASH" or - name = "rsa-sha1" and nid = 65 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha1" and nid = 65 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha1" and nid = 65 and normalized = "SHA1" and algType = "HASH" or - name = "rsa-sha1-2" and nid = 115 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha1-2" and nid = 115 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha1-2" and nid = 115 and normalized = "SHA1" and algType = "HASH" or - name = "rsa-sha224" and nid = 671 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha224" and nid = 671 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha224" and nid = 671 and normalized = "SHA-224" and algType = "HASH" or - name = "rsa-sha256" and nid = 668 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha256" and nid = 668 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha256" and nid = 668 and normalized = "SHA-256" and algType = "HASH" or - name = "rsa-sha3-224" and nid = 1116 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha3-224" and nid = 1116 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha3-224" and nid = 1116 and normalized = "SHA3-224" and algType = "HASH" or - name = "rsa-sha3-256" and nid = 1117 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha3-256" and nid = 1117 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha3-256" and nid = 1117 and normalized = "SHA3-256" and algType = "HASH" or - name = "rsa-sha3-384" and nid = 1118 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha3-384" and nid = 1118 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha3-384" and nid = 1118 and normalized = "SHA3-384" and algType = "HASH" or - name = "rsa-sha3-512" and nid = 1119 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha3-512" and nid = 1119 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha3-512" and nid = 1119 and normalized = "SHA3-512" and algType = "HASH" or - name = "rsa-sha384" and nid = 669 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha384" and nid = 669 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha384" and nid = 669 and normalized = "SHA-384" and algType = "HASH" or - name = "rsa-sha512" and nid = 670 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha512" and nid = 670 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha512" and nid = 670 and normalized = "SHA-512" and algType = "HASH" or name = "rsa-sha512/224" and nid = 1145 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "rsa-sha512/224" and nid = 1145 and normalized = "SHA-512-224" and algType = "HASH" or name = "rsa-sha512/256" and nid = 1146 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "rsa-sha512/256" and nid = 1146 and normalized = "SHA-512-256" and algType = "HASH" or - name = "rsa-sm3" and nid = 1144 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sm3" and nid = 1144 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sm3" and nid = 1144 and normalized = "SM3" and algType = "HASH" or @@ -2928,52 +3112,52 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, normalized = "OAEP" and algType = "ASYMMETRIC_PADDING" or - name = "rsasignature" and nid = 377 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsasignature" and nid = 377 and normalized = "RSA" and algType = "SIGNATURE" or - name = "rsassa-pss" and nid = 912 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsassa-pss" and nid = 912 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsassa-pss" and nid = 912 and normalized = "PSS" and algType = "ASYMMETRIC_PADDING" or - name = "rsassapss" and nid = 912 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsassapss" and nid = 912 and normalized = "RSA" and algType = "SIGNATURE" or - name = "rsassapss" and nid = 912 and normalized = "PSS" and algType = "ASYMMETRIC_PADDING" + name = "rsassapss" and nid = 912 and normalized = "PSS" and algType = "SIGNATURE" or - name = "sha1withrsa" and nid = 115 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "sha1withrsa" and nid = 115 and normalized = "RSA" and algType = "SIGNATURE" or name = "sha1withrsa" and nid = 115 and normalized = "SHA1" and algType = "HASH" or name = "sha1withrsaencryption" and nid = 65 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha1withrsaencryption" and nid = 65 and normalized = "SHA1" and algType = "HASH" or name = "sha224withrsaencryption" and nid = 671 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha224withrsaencryption" and nid = 671 and normalized = "SHA-224" and algType = "HASH" or name = "sha256withrsaencryption" and nid = 668 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha256withrsaencryption" and nid = 668 and normalized = "SHA-256" and algType = "HASH" or name = "sha384withrsaencryption" and nid = 669 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha384withrsaencryption" and nid = 669 and normalized = "SHA-384" and algType = "HASH" or name = "sha512-224withrsaencryption" and nid = 1145 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha512-224withrsaencryption" and nid = 1145 and @@ -2983,7 +3167,7 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, name = "sha512-256withrsaencryption" and nid = 1146 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha512-256withrsaencryption" and nid = 1146 and @@ -2993,14 +3177,14 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, name = "sha512withrsaencryption" and nid = 670 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha512withrsaencryption" and nid = 670 and normalized = "SHA-512" and algType = "HASH" or name = "shawithrsaencryption" and nid = 42 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "shawithrsaencryption" and nid = 42 and normalized = "SHA" and algType = "HASH" or @@ -3017,7 +3201,11 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, name = "sm3withrsaencryption" and nid = 1144 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sm3withrsaencryption" and nid = 1144 and normalized = "SM3" and algType = "HASH" + or + name = "hmac" and nid = 855 and normalized = "HMAC" and algType = "MAC" + or + name = "cmac" and nid = 894 and normalized = "CMAC" and algType = "MAC" } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll new file mode 100644 index 000000000000..97b183b7e7d3 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll @@ -0,0 +1,68 @@ +import cpp +private import experimental.quantum.Language +private import KnownAlgorithmConstants +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers +private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstanceBase +private import experimental.quantum.OpenSSL.Operations.OpenSSLOperations +private import AlgToAVCFlow + +class KnownOpenSslMacConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::MacAlgorithmInstance instanceof KnownOpenSslMacAlgorithmExpr +{ + OpenSslAlgorithmValueConsumer getterCall; + + KnownOpenSslMacConstantAlgorithmInstance() { + // Two possibilities: + // 1) The source is a literal and flows to a getter, then we know we have an instance + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that + // Possibility 1: + this instanceof OpenSslAlgorithmLiteral and + exists(DataFlow::Node src, DataFlow::Node sink | + // Sink is an argument to a CipherGetterCall + sink = getterCall.getInputNode() and + // Source is `this` + src.asExpr() = this and + // This traces to a getter + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + ) + or + // Possibility 2: + this instanceof OpenSslAlgorithmCall and + getterCall = this + } + + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } + + override string getRawMacAlgorithmName() { + result = this.(Literal).getValue().toString() + or + result = this.(Call).getTarget().getName() + } + + override Crypto::MacType getMacType() { + this instanceof KnownOpenSslHMacAlgorithmExpr and result = Crypto::HMAC() + or + this instanceof KnownOpenSslCMacAlgorithmExpr and result = Crypto::CMAC() + } +} + +class KnownOpenSslHMacConstantAlgorithmInstance extends Crypto::HmacAlgorithmInstance, + KnownOpenSslMacConstantAlgorithmInstance +{ + override Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { + if exists(this.(KnownOpenSslHMacAlgorithmExpr).getExplicitHashAlgorithm()) + then + // ASSUMPTION: if there is an explicit hash algorithm, it is already modeled + // and we can simply grab that model's AVC + this.(OpenSslAlgorithmInstance).getAvc() = result + else + // ASSUMPTION: If no explicit algorithm is given, then find + // where the current AVC traces to a HashAlgorithmIO consuming operation step. + // TODO: need to consider getting reset values, tracing down to the first set for now + exists(OperationStep s, AvcContextCreationStep avc | + avc = this.getAvc() and + avc.flowsToOperationStep(s) and + s.getAlgorithmValueConsumerForInput(HashAlgorithmIO()) = result + ) + } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstanceBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstanceBase.qll index b05ee9180b9b..0352cfa50634 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstanceBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstanceBase.qll @@ -1,6 +1,6 @@ private import experimental.quantum.Language private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase -abstract class OpenSSLAlgorithmInstance extends Crypto::AlgorithmInstance { - abstract OpenSSLAlgorithmValueConsumer getAVC(); +abstract class OpenSslAlgorithmInstance extends Crypto::AlgorithmInstance { + abstract OpenSslAlgorithmValueConsumer getAvc(); } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstances.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstances.qll index 55beb58588b3..a779f531f945 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstances.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstances.qll @@ -4,3 +4,5 @@ import PaddingAlgorithmInstance import BlockAlgorithmInstance import HashAlgorithmInstance import EllipticCurveAlgorithmInstance +import SignatureAlgorithmInstance +import MACAlgorithmInstance diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll index b4c34607e450..d487e05d0660 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll @@ -5,6 +5,7 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.KnownAlgorithmCon private import AlgToAVCFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.DirectAlgorithmValueConsumer private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase +private import codeql.quantum.experimental.Standardization::Types::KeyOpAlg as KeyOpAlg /** * A class to define padding specific integer values. @@ -17,75 +18,75 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor * # define RSA_PKCS1_WITH_TLS_PADDING 7 * # define RSA_PKCS1_NO_IMPLICIT_REJECT_PADDING 8 */ -class OpenSSLPaddingLiteral extends Literal { +class OpenSslPaddingLiteral extends Literal { // TODO: we can be more specific about where the literal is in a larger expression // to avoid literals that are clealy not representing an algorithm, e.g., array indices. - OpenSSLPaddingLiteral() { this.getValue().toInt() in [0, 1, 3, 4, 5, 6, 7, 8] } + OpenSslPaddingLiteral() { this.getValue().toInt() in [0, 1, 3, 4, 5, 6, 7, 8] } } /** - * Given a `KnownOpenSSLPaddingAlgorithmConstant`, converts this to a padding family type. + * Given a `KnownOpenSslPaddingAlgorithmExpr`, converts this to a padding family type. * Does not bind if there is no mapping (no mapping to 'unknown' or 'other'). */ -predicate knownOpenSSLConstantToPaddingFamilyType( - KnownOpenSSLPaddingAlgorithmConstant e, Crypto::TPaddingType type +predicate knownOpenSslConstantToPaddingFamilyType( + KnownOpenSslPaddingAlgorithmExpr e, KeyOpAlg::PaddingSchemeType type ) { exists(string name | - name = e.getNormalizedName() and + name = e.(KnownOpenSslAlgorithmExpr).getNormalizedName() and ( - name.matches("OAEP") and type = Crypto::OAEP() + name = "OAEP" and type = KeyOpAlg::OAEP() or - name.matches("PSS") and type = Crypto::PSS() + name = "PSS" and type = KeyOpAlg::PSS() or - name.matches("PKCS7") and type = Crypto::PKCS7() + name = "PKCS7" and type = KeyOpAlg::PKCS7() or - name.matches("PKCS1V15") and type = Crypto::PKCS1_v1_5() + name = "PKCS1V15" and type = KeyOpAlg::PKCS1_V1_5() ) ) } -//abstract class OpenSSLPaddingAlgorithmInstance extends OpenSSLAlgorithmInstance, Crypto::PaddingAlgorithmInstance{} +//abstract class OpenSslPaddingAlgorithmInstance extends OpenSslAlgorithmInstance, Crypto::PaddingAlgorithmInstance{} // TODO: need to alter this to include known padding constants which don't have the // same mechanics as those with known nids -class KnownOpenSSLPaddingConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, +class KnownOpenSslPaddingConstantAlgorithmInstance extends OpenSslAlgorithmInstance, Crypto::PaddingAlgorithmInstance instanceof Expr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; boolean isPaddingSpecificConsumer; - KnownOpenSSLPaddingConstantAlgorithmInstance() { + KnownOpenSslPaddingConstantAlgorithmInstance() { // three possibilities: // 1) The source is a 'typical' literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that // 3) the source is a padding-specific literal flowing to a padding-specific consumer // Possibility 1: - this instanceof Literal and - this instanceof KnownOpenSSLPaddingAlgorithmConstant and + this instanceof OpenSslAlgorithmLiteral and + this instanceof KnownOpenSslPaddingAlgorithmExpr and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and + sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) and + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) and isPaddingSpecificConsumer = false ) or // Possibility 2: - this instanceof DirectAlgorithmValueConsumer and + this instanceof OpenSslAlgorithmCall and getterCall = this and - this instanceof KnownOpenSSLPaddingAlgorithmConstant and + this instanceof KnownOpenSslPaddingAlgorithmExpr and isPaddingSpecificConsumer = false or // Possibility 3: padding-specific literal - this instanceof OpenSSLPaddingLiteral and + this instanceof OpenSslPaddingLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and + sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a padding-specific consumer - RSAPaddingAlgorithmToPaddingAlgorithmValueConsumerFlow::flow(src, sink) + RsaPaddingAlgorithmToPaddingAlgorithmValueConsumerFlow::flow(src, sink) ) and isPaddingSpecificConsumer = true } @@ -96,30 +97,30 @@ class KnownOpenSSLPaddingConstantAlgorithmInstance extends OpenSSLAlgorithmInsta result = this.(Call).getTarget().getName() } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } - Crypto::TPaddingType getKnownPaddingType() { - this.(Literal).getValue().toInt() in [1, 7, 8] and result = Crypto::PKCS1_v1_5() + KeyOpAlg::PaddingSchemeType getKnownPaddingType() { + this.(Literal).getValue().toInt() in [1, 7, 8] and result = KeyOpAlg::PKCS1_V1_5() or - this.(Literal).getValue().toInt() = 3 and result = Crypto::NoPadding() + this.(Literal).getValue().toInt() = 3 and result = KeyOpAlg::NoPadding() or - this.(Literal).getValue().toInt() = 4 and result = Crypto::OAEP() + this.(Literal).getValue().toInt() = 4 and result = KeyOpAlg::OAEP() or - this.(Literal).getValue().toInt() = 5 and result = Crypto::ANSI_X9_23() + this.(Literal).getValue().toInt() = 5 and result = KeyOpAlg::ANSI_X9_23() or - this.(Literal).getValue().toInt() = 6 and result = Crypto::PSS() + this.(Literal).getValue().toInt() = 6 and result = KeyOpAlg::PSS() } - override Crypto::TPaddingType getPaddingType() { + override KeyOpAlg::PaddingSchemeType getPaddingType() { isPaddingSpecificConsumer = true and ( result = this.getKnownPaddingType() or - not exists(this.getKnownPaddingType()) and result = Crypto::OtherPadding() + not exists(this.getKnownPaddingType()) and result = KeyOpAlg::OtherPadding() ) or isPaddingSpecificConsumer = false and - knownOpenSSLConstantToPaddingFamilyType(this, result) + knownOpenSslConstantToPaddingFamilyType(this, result) } } @@ -127,7 +128,7 @@ class KnownOpenSSLPaddingConstantAlgorithmInstance extends OpenSSLAlgorithmInsta // // not the same as 'typical' constants found in the set of known algorithm constants // // they do not have an NID // // TODO: what about setting the padding directly? -// class KnownRSAPaddingConstant extends OpenSSLPaddingAlgorithmInstance, Crypto::PaddingAlgorithmInstance instanceof Literal +// class KnownRSAPaddingConstant extends OpenSslPaddingAlgorithmInstance, Crypto::PaddingAlgorithmInstance instanceof Literal // { // KnownRSAPaddingConstant() { // // from rsa.h in openssl: @@ -143,7 +144,7 @@ class KnownOpenSSLPaddingConstantAlgorithmInstance extends OpenSSLAlgorithmInsta // this instanceof Literal and // this.getValue().toInt() in [0, 1, 3, 4, 5, 6, 7, 8] // // TODO: trace to padding-specific consumers -// RSAPaddingAlgorithmToPaddingAlgorithmValueConsumerFlow +// RsaPaddingAlgorithmToPaddingAlgorithmValueConsumerFlow // } // override string getRawPaddingAlgorithmName() { result = this.(Literal).getValue().toString() } // override Crypto::TPaddingType getPaddingType() { @@ -161,18 +162,18 @@ class KnownOpenSSLPaddingConstantAlgorithmInstance extends OpenSSLAlgorithmInsta // else result = Crypto::OtherPadding() // } // } -class OAEPPaddingAlgorithmInstance extends Crypto::OAEPPaddingAlgorithmInstance, - KnownOpenSSLPaddingConstantAlgorithmInstance +class OaepPaddingAlgorithmInstance extends Crypto::OaepPaddingAlgorithmInstance, + KnownOpenSslPaddingConstantAlgorithmInstance { - OAEPPaddingAlgorithmInstance() { - this.(Crypto::PaddingAlgorithmInstance).getPaddingType() = Crypto::OAEP() + OaepPaddingAlgorithmInstance() { + this.(Crypto::PaddingAlgorithmInstance).getPaddingType() = KeyOpAlg::OAEP() } - override Crypto::HashAlgorithmInstance getOAEPEncodingHashAlgorithm() { + override Crypto::HashAlgorithmInstance getOaepEncodingHashAlgorithm() { none() //TODO } - override Crypto::HashAlgorithmInstance getMGF1HashAlgorithm() { + override Crypto::HashAlgorithmInstance getMgf1HashAlgorithm() { none() //TODO } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll new file mode 100644 index 000000000000..cc2e5771ffc8 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll @@ -0,0 +1,102 @@ +import cpp +private import experimental.quantum.Language +private import KnownAlgorithmConstants +private import Crypto::KeyOpAlg as KeyOpAlg +private import OpenSSLAlgorithmInstanceBase +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.DirectAlgorithmValueConsumer +private import AlgToAVCFlow + +/** + * Gets the signature algorithm type based on the normalized algorithm name. + */ +private predicate knownOpenSslConstantToSignatureFamilyType( + KnownOpenSslSignatureAlgorithmExpr e, Crypto::KeyOpAlg::TAlgorithm type +) { + exists(string name | + name = e.(KnownOpenSslAlgorithmExpr).getNormalizedName() and + ( + name.matches("RSA%") and type = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) + or + name.matches("DSA%") and type = KeyOpAlg::TSignature(KeyOpAlg::DSA()) + or + name.matches("ECDSA%") and type = KeyOpAlg::TSignature(KeyOpAlg::ECDSA()) + or + name.matches("ED25519%") and type = KeyOpAlg::TSignature(KeyOpAlg::EDDSA()) + or + name.matches("ED448%") and type = KeyOpAlg::TSignature(KeyOpAlg::EDDSA()) + ) + ) +} + +/** + * A signature algorithm instance derived from an OpenSsl constant. + */ +class KnownOpenSslSignatureConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::KeyOperationAlgorithmInstance instanceof KnownOpenSslSignatureAlgorithmExpr +{ + OpenSslAlgorithmValueConsumer getterCall; + + KnownOpenSslSignatureConstantAlgorithmInstance() { + // Two possibilities: + // 1) The source is a literal and flows to a getter, then we know we have an instance + // 2) The source is a KnownOpenSslAlgorithm call, and we know we have an instance immediately from that + // Possibility 1: + this instanceof OpenSslAlgorithmLiteral and + exists(DataFlow::Node src, DataFlow::Node sink | + // Sink is an argument to a signature getter call + sink = getterCall.getInputNode() and + // Source is `this` + src.asExpr() = this and + // This traces to a getter + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + ) + or + // Possibility 2: + this instanceof OpenSslAlgorithmCall and + getterCall = this + } + + override Crypto::ModeOfOperationAlgorithmInstance getModeOfOperationAlgorithm() { none() } + + override Crypto::PaddingAlgorithmInstance getPaddingAlgorithm() { none() } + + override string getRawAlgorithmName() { + result = this.(Literal).getValue().toString() + or + result = this.(Call).getTarget().getName() + } + + override int getKeySizeFixed() { + // TODO: use ellipticCurveNameToKeySizeAndFamilyMapping or KnownOpenSslEllipticCurveConstantAlgorithmInstance + // TODO: maybe add getExplicitKeySize to KnownOpenSslSignatureAlgorithmExpr and use it here + none() + } + + override KeyOpAlg::AlgorithmType getAlgorithmType() { + knownOpenSslConstantToSignatureFamilyType(this, result) + or + not knownOpenSslConstantToSignatureFamilyType(this, _) and + result = KeyOpAlg::TSignature(KeyOpAlg::OtherSignatureAlgorithmType()) + } + + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } + + override Crypto::ConsumerInputDataFlowNode getKeySizeConsumer() { + // TODO: trace to any key size initializer + // probably PKeyAlgorithmValueConsumer and SignatureAlgorithmValueConsumer + none() + } + + /** + * No mode for signatures. + */ + override predicate shouldHaveModeOfOperation() { none() } + + /** + * Padding only for RSA. + */ + override predicate shouldHavePaddingScheme() { + this.getAlgorithmType() instanceof KeyOpAlg::TAsymmetricCipher + } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/CipherAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/CipherAlgorithmValueConsumer.qll index 8aa5d946baee..b06e55c0817e 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/CipherAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/CipherAlgorithmValueConsumer.qll @@ -4,14 +4,14 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.KnownAlgorithmCon private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstanceBase private import OpenSSLAlgorithmValueConsumerBase -abstract class CipherAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class CipherAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } // https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_fetch.html -class EVPCipherAlgorithmValueConsumer extends CipherAlgorithmValueConsumer { +class EvpCipherAlgorithmValueConsumer extends CipherAlgorithmValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVPCipherAlgorithmValueConsumer() { + EvpCipherAlgorithmValueConsumer() { resultNode.asExpr() = this and ( this.(Call).getTarget().getName() in [ @@ -30,8 +30,8 @@ class EVPCipherAlgorithmValueConsumer extends CipherAlgorithmValueConsumer { // override DataFlow::Node getInputNode() { result = valueArgNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) - //TODO: As a potential alternative, for OpenSSL only, add a generic source node for literals and only create flow (flowsTo) to - // OpenSSL AVCs... the unknown literal sources would have to be any literals not in the known set. + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) + //TODO: As a potential alternative, for OpenSsl only, add a generic source node for literals and only create flow (flowsTo) to + // OpenSsl AVCs... the unknown literal sources would have to be any literals not in the known set. } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll index affb7ae6095e..d200cf2a0961 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll @@ -4,29 +4,30 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.KnownAlgorithmCon private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase /** - * Cases like EVP_MD5(), - * there is no input, rather it directly gets an algorithm - * and returns it. + * A call that is considered to inherently 'consume' an algorithm value. + * E.g., cases like EVP_MD5(), + * where there is no input, rather it directly gets an algorithm + * and returns it. Also includes operations directly using an algorithm + * like AES_encrypt(). */ -class DirectAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { - DataFlow::Node resultNode; - Expr resultExpr; - - DirectAlgorithmValueConsumer() { - this instanceof KnownOpenSSLAlgorithmConstant and - this instanceof Call and - resultExpr = this and - resultNode.asExpr() = resultExpr - } - +class DirectAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer instanceof OpenSslAlgorithmCall +{ /** * These cases take in no explicit value (the value is implicit) */ override Crypto::ConsumerInputDataFlowNode getInputNode() { none() } - override DataFlow::Node getResultNode() { result = resultNode } + /** + * Gets the DataFlow node represeting the output algorithm entity + * created as a result of this call. + */ + override DataFlow::Node getResultNode() { + this instanceof OpenSslDirectAlgorithmFetchCall and + result.asExpr() = this + // NOTE: if instanceof OpenSslDirectAlgorithmOperationCall then there is no algorithm generated + // the algorithm is directly used + } - // override DataFlow::Node getOutputNode() { result = resultNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { // Note: algorithm source definitions enforces that // this class will be a known algorithm source diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/EllipticCurveAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/EllipticCurveAlgorithmValueConsumer.qll index 4bff4cb05db2..daf6baf2f031 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/EllipticCurveAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/EllipticCurveAlgorithmValueConsumer.qll @@ -4,14 +4,14 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.KnownAlgorithmCon private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstances -abstract class EllipticCurveValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class EllipticCurveValueConsumer extends OpenSslAlgorithmValueConsumer { } //https://docs.openssl.org/3.0/man3/EC_KEY_new/#name -class EVPEllipticCurveAlgorithmConsumer extends EllipticCurveValueConsumer { +class EvpEllipticCurveAlgorithmConsumer extends EllipticCurveValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVPEllipticCurveAlgorithmConsumer() { + EvpEllipticCurveAlgorithmConsumer() { resultNode.asExpr() = this.(Call) and // in all cases the result is the return ( this.(Call).getTarget().getName() in ["EVP_EC_gen", "EC_KEY_new_by_curve_name"] and @@ -25,7 +25,7 @@ class EVPEllipticCurveAlgorithmConsumer extends EllipticCurveValueConsumer { } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } override DataFlow::Node getResultNode() { result = resultNode } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll index 6c4a9c9bd6cd..114cf78a112e 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll @@ -4,20 +4,20 @@ private import semmle.code.cpp.dataflow.new.DataFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstances -abstract class HashAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class HashAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } /** - * EVP_Q_Digest directly consumes algorithm constant values + * An EVP_Q_Digest directly consumes algorithm constant values */ -class EVP_Q_Digest_Algorithm_Consumer extends HashAlgorithmValueConsumer { - EVP_Q_Digest_Algorithm_Consumer() { this.(Call).getTarget().getName() = "EVP_Q_digest" } +class Evp_Q_Digest_Algorithm_Consumer extends HashAlgorithmValueConsumer { + Evp_Q_Digest_Algorithm_Consumer() { this.(Call).getTarget().getName() = "EVP_Q_digest" } override Crypto::ConsumerInputDataFlowNode getInputNode() { result.asExpr() = this.(Call).getArgument(1) } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } override DataFlow::Node getResultNode() { @@ -27,15 +27,43 @@ class EVP_Q_Digest_Algorithm_Consumer extends HashAlgorithmValueConsumer { } } +/** + * An instance from https://docs.openssl.org/3.0/man3/EVP_PKEY_CTX_ctrl/ + * where the digest is directly consumed by name. + * In these cases, the operation is not yet performed, but there is + * these functions are treated as 'initializers' and track the algorithm through + * `EvpInitializer` mechanics, i.e., the resultNode is considered 'none' + */ +class EvpPkeySetCtxALgorithmConsumer extends HashAlgorithmValueConsumer { + DataFlow::Node valueArgNode; + + EvpPkeySetCtxALgorithmConsumer() { + this.(Call).getTarget().getName() in [ + "EVP_PKEY_CTX_set_rsa_mgf1_md_name", "EVP_PKEY_CTX_set_rsa_oaep_md_name", + "EVP_PKEY_CTX_set_dsa_paramgen_md_props" + ] and + valueArgNode.asExpr() = this.(Call).getArgument(1) + } + + override DataFlow::Node getResultNode() { none() } + + override Crypto::ConsumerInputDataFlowNode getInputNode() { result = valueArgNode } + + override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) + } +} + /** * The EVP digest algorithm getters * https://docs.openssl.org/3.0/man3/EVP_DigestInit/#synopsis + * https://docs.openssl.org/3.0/man3/EVP_DigestSignInit/#name */ -class EVPDigestAlgorithmValueConsumer extends HashAlgorithmValueConsumer { +class EvpDigestAlgorithmValueConsumer extends HashAlgorithmValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVPDigestAlgorithmValueConsumer() { + EvpDigestAlgorithmValueConsumer() { resultNode.asExpr() = this and ( this.(Call).getTarget().getName() in [ @@ -45,6 +73,9 @@ class EVPDigestAlgorithmValueConsumer extends HashAlgorithmValueConsumer { or this.(Call).getTarget().getName() = "EVP_MD_fetch" and valueArgNode.asExpr() = this.(Call).getArgument(1) + or + this.(Call).getTarget().getName() = "EVP_DigestSignInit_ex" and + valueArgNode.asExpr() = this.(Call).getArgument(2) ) } @@ -53,6 +84,6 @@ class EVPDigestAlgorithmValueConsumer extends HashAlgorithmValueConsumer { override Crypto::ConsumerInputDataFlowNode getInputNode() { result = valueArgNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KEMAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KEMAlgorithmValueConsumer.qll index e66beccd301a..830adece0f31 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KEMAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KEMAlgorithmValueConsumer.qll @@ -4,13 +4,13 @@ private import semmle.code.cpp.dataflow.new.DataFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstances -abstract class KEMAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class KemAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } -class EVPKEMAlgorithmValueConsumer extends KEMAlgorithmValueConsumer { +class EvpKemAlgorithmValueConsumer extends KemAlgorithmValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVPKEMAlgorithmValueConsumer() { + EvpKemAlgorithmValueConsumer() { resultNode.asExpr() = this and ( this.(Call).getTarget().getName() = "EVP_KEM_fetch" and @@ -23,6 +23,6 @@ class EVPKEMAlgorithmValueConsumer extends KEMAlgorithmValueConsumer { override Crypto::ConsumerInputDataFlowNode getInputNode() { result = valueArgNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KeyExchangeAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KeyExchangeAlgorithmValueConsumer.qll index b5f24ec875ad..88c36a37eb51 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KeyExchangeAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KeyExchangeAlgorithmValueConsumer.qll @@ -4,13 +4,13 @@ private import semmle.code.cpp.dataflow.new.DataFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstances -abstract class KeyExchangeAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class KeyExchangeAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } -class EVPKeyExchangeAlgorithmValueConsumer extends KeyExchangeAlgorithmValueConsumer { +class EvpKeyExchangeAlgorithmValueConsumer extends KeyExchangeAlgorithmValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVPKeyExchangeAlgorithmValueConsumer() { + EvpKeyExchangeAlgorithmValueConsumer() { resultNode.asExpr() = this and ( this.(Call).getTarget().getName() = "EVP_KEYEXCH_fetch" and @@ -23,6 +23,6 @@ class EVPKeyExchangeAlgorithmValueConsumer extends KeyExchangeAlgorithmValueCons override Crypto::ConsumerInputDataFlowNode getInputNode() { result = valueArgNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumerBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumerBase.qll index b0cdee1f8f5d..292e554c0fb0 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumerBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumerBase.qll @@ -1,6 +1,6 @@ private import experimental.quantum.Language -abstract class OpenSSLAlgorithmValueConsumer extends Crypto::AlgorithmValueConsumer instanceof Call { +abstract class OpenSslAlgorithmValueConsumer extends Crypto::AlgorithmValueConsumer instanceof Call { /** * Returns the node representing the resulting algorithm */ diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumers.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumers.qll index c76d6d6f041c..8b862e2a7ccb 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumers.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumers.qll @@ -5,3 +5,4 @@ import PaddingAlgorithmValueConsumer import HashAlgorithmValueConsumer import EllipticCurveAlgorithmValueConsumer import PKeyAlgorithmValueConsumer +import SignatureAlgorithmValueConsumer diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PKeyAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PKeyAlgorithmValueConsumer.qll index 0d40ceeb68af..f7c8fef37941 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PKeyAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PKeyAlgorithmValueConsumer.qll @@ -4,13 +4,13 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.KnownAlgorithmCon private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstances -abstract class PKeyValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class PKeyValueConsumer extends OpenSslAlgorithmValueConsumer { } -class EVPPKeyAlgorithmConsumer extends PKeyValueConsumer { +class EvpPKeyAlgorithmConsumer extends PKeyValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVPPKeyAlgorithmConsumer() { + EvpPKeyAlgorithmConsumer() { resultNode.asExpr() = this.(Call) and // in all cases the result is the return ( // NOTE: some of these consumers are themselves key gen operations, @@ -23,7 +23,8 @@ class EVPPKeyAlgorithmConsumer extends PKeyValueConsumer { or this.(Call).getTarget().getName() in [ "EVP_PKEY_CTX_new_from_name", "EVP_PKEY_new_raw_private_key_ex", - "EVP_PKEY_new_raw_public_key_ex", "EVP_PKEY_CTX_ctrl", "EVP_PKEY_CTX_set_group_name" + "EVP_PKEY_new_raw_public_key_ex", "EVP_PKEY_CTX_ctrl", "EVP_PKEY_CTX_ctrl_uint64", + "EVP_PKEY_CTX_ctrl_str", "EVP_PKEY_CTX_set_group_name" ] and valueArgNode.asExpr() = this.(Call).getArgument(1) or @@ -46,7 +47,7 @@ class EVPPKeyAlgorithmConsumer extends PKeyValueConsumer { } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } override DataFlow::Node getResultNode() { result = resultNode } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PaddingAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PaddingAlgorithmValueConsumer.qll index c60918519c80..f080fc0f12a2 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PaddingAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PaddingAlgorithmValueConsumer.qll @@ -4,16 +4,16 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.KnownAlgorithmCon private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstanceBase private import OpenSSLAlgorithmValueConsumerBase -abstract class PaddingAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class PaddingAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } // https://docs.openssl.org/master/man7/EVP_ASYM_CIPHER-RSA/#rsa-asymmetric-cipher-parameters // TODO: need to handle setting padding through EVP_PKEY_CTX_set_params, where modes like "OSSL_PKEY_RSA_PAD_MODE_OAEP" // are set. -class EVP_PKEY_CTX_set_rsa_padding_AlgorithmValueConsumer extends PaddingAlgorithmValueConsumer { +class Evp_PKey_Ctx_set_rsa_padding_AlgorithmValueConsumer extends PaddingAlgorithmValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVP_PKEY_CTX_set_rsa_padding_AlgorithmValueConsumer() { + Evp_PKey_Ctx_set_rsa_padding_AlgorithmValueConsumer() { resultNode.asExpr() = this and this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_rsa_padding" and valueArgNode.asExpr() = this.(Call).getArgument(1) @@ -25,8 +25,8 @@ class EVP_PKEY_CTX_set_rsa_padding_AlgorithmValueConsumer extends PaddingAlgorit // override DataFlow::Node getInputNode() { result = valueArgNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) - //TODO: As a potential alternative, for OpenSSL only, add a generic source node for literals and only create flow (flowsTo) to - // OpenSSL AVCs... the unknown literal sources would have to be any literals not in the known set. + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) + //TODO: As a potential alternative, for OpenSsl only, add a generic source node for literals and only create flow (flowsTo) to + // OpenSsl AVCs... the unknown literal sources would have to be any literals not in the known set. } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/SignatureAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/SignatureAlgorithmValueConsumer.qll new file mode 100644 index 000000000000..c6f3fb8959c8 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/SignatureAlgorithmValueConsumer.qll @@ -0,0 +1,32 @@ +import cpp +private import experimental.quantum.Language +private import experimental.quantum.OpenSSL.AlgorithmInstances.KnownAlgorithmConstants +private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstanceBase +private import OpenSSLAlgorithmValueConsumerBase +private import experimental.quantum.OpenSSL.LibraryDetector + +abstract class SignatureAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } + +class EvpSignatureAlgorithmValueConsumer extends SignatureAlgorithmValueConsumer { + DataFlow::Node valueArgNode; + DataFlow::Node resultNode; + + EvpSignatureAlgorithmValueConsumer() { + resultNode.asExpr() = this and + ( + // EVP_SIGNATURE + this.(Call).getTarget().getName() = "EVP_SIGNATURE_fetch" and + valueArgNode.asExpr() = this.(Call).getArgument(1) + // EVP_PKEY_get1_DSA, EVP_PKEY_get1_RSA + // DSA_SIG_new, DSA_SIG_get0, RSA_sign ? + ) + } + + override DataFlow::Node getResultNode() { result = resultNode } + + override Crypto::ConsumerInputDataFlowNode getInputNode() { result = valueArgNode } + + override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) + } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll new file mode 100644 index 000000000000..10aa145804b6 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll @@ -0,0 +1,19 @@ +import semmle.code.cpp.dataflow.new.DataFlow +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers + +/** + * Flows from algorithm values to operations, specific to OpenSsl + */ +module AvcToCallArgConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + exists(OpenSslAlgorithmValueConsumer c | c.getResultNode() = source) + } + + /** + * Trace to any call accepting the algorithm. + * NOTE: users must restrict this set to the operations they are interested in. + */ + predicate isSink(DataFlow::Node sink) { exists(Call c | c.getAnArgument() = sink.asExpr()) } +} + +module AvcToCallArgFlow = DataFlow::Global; diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll deleted file mode 100644 index 38b49b8d9010..000000000000 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll +++ /dev/null @@ -1,139 +0,0 @@ -//TODO: model as data on open APIs should be able to get common flows, and obviate some of this -// e.g., copy/dup calls, need to ingest those models for openSSL and refactor. -/** - * In OpenSSL, flow between 'context' parameters is often used to - * store state/config of how an operation will eventually be performed. - * Tracing algorithms and configurations to operations therefore - * requires tracing context parameters for many OpenSSL apis. - * - * This library provides a dataflow analysis to track context parameters - * between any two functions accepting openssl context parameters. - * The dataflow takes into consideration flowing through duplication and copy calls - * as well as flow through flow killers (free/reset calls). - * - * TODO: we may need to revisit 'free' as a dataflow killer, depending on how - * we want to model use after frees. - * - * This library also provides classes to represent context Types and relevant - * arguments/expressions. - */ - -import semmle.code.cpp.dataflow.new.DataFlow - -/** - * An openSSL CTX type, which is type for which the stripped underlying type - * matches the pattern 'evp_%ctx_%st'. - * This includes types like: - * - EVP_CIPHER_CTX - * - EVP_MD_CTX - * - EVP_PKEY_CTX - */ -private class CtxType extends Type { - CtxType() { - // It is possible for users to use the underlying type of the CTX variables - // these have a name matching 'evp_%ctx_%st - this.getUnspecifiedType().stripType().getName().matches("evp_%ctx_%st") - or - // In principal the above check should be sufficient, but in case of build mode none issues - // i.e., if a typedef cannot be resolved, - // or issues with properly stubbing test cases, we also explicitly check for the wrapping type defs - // i.e., patterns matching 'EVP_%_CTX' - exists(Type base | base = this or base = this.(DerivedType).getBaseType() | - base.getName().matches("EVP_%_CTX") - ) - } -} - -/** - * A pointer to a CtxType - */ -private class CtxPointerExpr extends Expr { - CtxPointerExpr() { - this.getType() instanceof CtxType and - this.getType() instanceof PointerType - } -} - -/** - * A call argument of type CtxPointerExpr. - */ -private class CtxPointerArgument extends CtxPointerExpr { - CtxPointerArgument() { exists(Call c | c.getAnArgument() = this) } - - Call getCall() { result.getAnArgument() = this } -} - -/** - * A call whose target contains 'free' or 'reset' and has an argument of type - * CtxPointerArgument. - */ -private class CtxClearCall extends Call { - CtxClearCall() { - this.getTarget().getName().toLowerCase().matches(["%free%", "%reset%"]) and - this.getAnArgument() instanceof CtxPointerArgument - } -} - -/** - * A call whose target contains 'copy' and has an argument of type - * CtxPointerArgument. - */ -private class CtxCopyOutArgCall extends Call { - CtxCopyOutArgCall() { - this.getTarget().getName().toLowerCase().matches("%copy%") and - this.getAnArgument() instanceof CtxPointerArgument - } -} - -/** - * A call whose target contains 'dup' and has an argument of type - * CtxPointerArgument. - */ -private class CtxCopyReturnCall extends Call, CtxPointerExpr { - CtxCopyReturnCall() { - this.getTarget().getName().toLowerCase().matches("%dup%") and - this.getAnArgument() instanceof CtxPointerArgument - } -} - -/** - * Flow from any CtxPointerArgument to any other CtxPointerArgument - */ -module OpenSSLCtxArgumentFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source.asExpr() instanceof CtxPointerArgument } - - predicate isSink(DataFlow::Node sink) { sink.asExpr() instanceof CtxPointerArgument } - - predicate isBarrier(DataFlow::Node node) { - exists(CtxClearCall c | c.getAnArgument() = node.asExpr()) - } - - predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { - exists(CtxCopyOutArgCall c | - c.getAnArgument() = node1.asExpr() and - c.getAnArgument() = node2.asExpr() and - node1.asExpr() != node2.asExpr() and - node2.asExpr().getType() instanceof CtxType - ) - or - exists(CtxCopyReturnCall c | - c.getAnArgument() = node1.asExpr() and - c = node2.asExpr() and - node1.asExpr() != node2.asExpr() and - node2.asExpr().getType() instanceof CtxType - ) - } -} - -module OpenSSLCtxArgumentFlow = DataFlow::Global; - -/** - * Holds if there is a context flow from the source to the sink. - */ -predicate ctxArgFlowsToCtxArg(CtxPointerArgument source, CtxPointerArgument sink) { - exists(DataFlow::Node a, DataFlow::Node b | - OpenSSLCtxArgumentFlow::flow(a, b) and - a.asExpr() = source and - b.asExpr() = sink - ) -} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/GenericSourceCandidateLiteral.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/GenericSourceCandidateLiteral.qll index 8841adc17b6e..a5d6d23f245d 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/GenericSourceCandidateLiteral.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/GenericSourceCandidateLiteral.qll @@ -14,9 +14,9 @@ private class IntLiteral extends Literal { /** * Holds if a StringLiteral could conceivably be used in some way for cryptography. * Note: this predicate should only consider restrictions with respect to strings only. - * General restrictions are in the OpenSSLGenericSourceCandidateLiteral class. + * General restrictions are in the OpenSslGenericSourceCandidateLiteral class. */ -private predicate isOpenSSLStringLiteralGenericSourceCandidate(StringLiteral s) { +private predicate isOpenSslStringLiteralGenericSourceCandidate(StringLiteral s) { // 'EC' is a constant that may be used where typical algorithms are specified, // but EC specifically means set up a default curve container, that will later be //specified explicitly (or if not a default) curve is used. @@ -49,9 +49,9 @@ private predicate isOpenSSLStringLiteralGenericSourceCandidate(StringLiteral s) /** * Holds if a StringLiteral could conceivably be used in some way for cryptography. * Note: this predicate should only consider restrictions with respect to integers only. - * General restrictions are in the OpenSSLGenericSourceCandidateLiteral class. + * General restrictions are in the OpenSslGenericSourceCandidateLiteral class. */ -private predicate isOpenSSLIntLiteralGenericSourceCandidate(IntLiteral l) { +private predicate isOpenSslIntLiteralGenericSourceCandidate(IntLiteral l) { // Ignore integer values of 0, commonly referring to NULL only (no known algorithm 0) l.getValue().toInt() != 0 and // ASSUMPTION, no negative numbers are allowed @@ -102,11 +102,11 @@ private predicate isOpenSSLIntLiteralGenericSourceCandidate(IntLiteral l) { * "AES" may be a legitimate algorithm literal, but the literal will not be used for an operation directly * since it is in a equality comparison, hence this case would also be filtered. */ -class OpenSSLGenericSourceCandidateLiteral extends Literal { - OpenSSLGenericSourceCandidateLiteral() { +class OpenSslGenericSourceCandidateLiteral extends Literal { + OpenSslGenericSourceCandidateLiteral() { ( - isOpenSSLIntLiteralGenericSourceCandidate(this) or - isOpenSSLStringLiteralGenericSourceCandidate(this) + isOpenSslIntLiteralGenericSourceCandidate(this) or + isOpenSslStringLiteralGenericSourceCandidate(this) ) and // ********* General filters beyond what is filtered for strings and ints ********* // An algorithm literal in a switch case will not be directly applied to an operation. diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll new file mode 100644 index 000000000000..7e30866a67a6 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll @@ -0,0 +1,27 @@ +import semmle.code.cpp.dataflow.new.DataFlow +private import Operations.OpenSSLOperations +private import experimental.quantum.Language + +/** + * Flow from key creation to key used in a call + */ +module OpenSslKeyFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + // NOTE/ASSUMPTION: it is assumed the operation is also an OpenSslOperation. + // All operations modeled for openssl should be modeled as OpenSslOperation. + exists(Crypto::KeyCreationOperationInstance keygen | keygen.getOutputKeyArtifact() = source) + } + + predicate isSink(DataFlow::Node sink) { exists(Call call | call.getAnArgument() = sink.asExpr()) } + //TODO: consideration for additional flow steps? Can a key be copied for example? +} + +module OpenSslKeyFlow = TaintTracking::Global; + +Crypto::KeyCreationOperationInstance getSourceKeyCreationInstanceFromArg(Expr arg) { + exists(DataFlow::Node src, DataFlow::Node sink | + OpenSslKeyFlow::flow(src, sink) and + result.getOutputKeyArtifact() = src and + sink.asExpr() = arg + ) +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/LibraryDetector.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/LibraryDetector.qll index 5ff02cd95197..c7e56fab1be0 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/LibraryDetector.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/LibraryDetector.qll @@ -1,7 +1,7 @@ import cpp -predicate isPossibleOpenSSLFunction(Function f) { - isPossibleOpenSSLLocation(f.getADeclarationLocation()) +predicate isPossibleOpenSslFunction(Function f) { + isPossibleOpenSslLocation(f.getADeclarationLocation()) } -predicate isPossibleOpenSSLLocation(Location l) { l.toString().toLowerCase().matches("%openssl%") } +predicate isPossibleOpenSslLocation(Location l) { l.toString().toLowerCase().matches("%openssl%") } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/OpenSSL.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/OpenSSL.qll index 10ceec43e5c1..706cac65f8c4 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/OpenSSL.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/OpenSSL.qll @@ -1,4 +1,4 @@ -module OpenSSLModel { +module OpenSslModel { import AlgorithmInstances.OpenSSLAlgorithmInstances import AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers import Operations.OpenSSLOperations diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/CipherOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/CipherOperation.qll new file mode 100644 index 000000000000..44e30ddf9fc9 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/CipherOperation.qll @@ -0,0 +1,273 @@ +import experimental.quantum.Language +private import OpenSSLOperationBase +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers +import EVPPKeyCtxInitializer + +/** + * A base class for all EVP cipher operations. + */ +abstract class EvpCipherInitializer extends OperationStep { + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and + type = PrimaryAlgorithmIO() and + // Constants that are not equal to zero or + // non-constants (e.g., variable accesses, which require data-flow to determine the value) + // A zero (null) value typically indicates use of this operation step to initialize + // other out parameters in a multi-step initialization. + (exists(result.asExpr().getValue()) implies result.asExpr().getValue().toInt() != 0) + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = InitializerStep() } +} + +/** + * A base class for EVP cipher/decrypt/encrypt 'ex' operations. + */ +abstract class EvpEXInitializer extends EvpCipherInitializer { + override DataFlow::Node getInput(IOType type) { + result = super.getInput(type) + or + ( + // Constants that are not equal to zero or + // non-constants (e.g., variable accesses, which require data-flow to determine the value) + // A zero (null) value typically indicates use of this operation step to initialize + // other out parameters in a multi-step initialization. + result.asExpr() = this.getArgument(3) and type = KeyIO() + or + result.asExpr() = this.getArgument(4) and type = IVorNonceIO() + ) and + (exists(result.asExpr().getValue()) implies result.asExpr().getValue().toInt() != 0) + } +} + +/** + * A base class for EVP cipher/decrypt/encrypt 'ex2' operations. + */ +abstract class EvpEX2Initializer extends EvpCipherInitializer { + override DataFlow::Node getInput(IOType type) { + result = super.getInput(type) + or + result.asExpr() = this.getArgument(2) and type = KeyIO() + or + result.asExpr() = this.getArgument(3) and type = IVorNonceIO() + } +} + +/** + * A Call to an EVP Cipher/Encrypt/Decrypt initialization operation. + */ +class EvpCipherEXInitCall extends EvpEXInitializer { + EvpCipherEXInitCall() { + this.getTarget().getName() in ["EVP_EncryptInit_ex", "EVP_DecryptInit_ex", "EVP_CipherInit_ex"] + } + + override DataFlow::Node getInput(IOType type) { + result = super.getInput(type) + or + // NOTE: for EncryptInit and DecryptInit there is no subtype arg + // the subtype is determined automatically by the initializer based on the operation name + this.getTarget().getName().toLowerCase().matches("%cipherinit%") and + result.asExpr() = this.getArgument(5) and + type = KeyOperationSubtypeIO() + } +} + +class Evp_Cipher_EX2_or_Simple_Init_Call extends EvpEX2Initializer { + Evp_Cipher_EX2_or_Simple_Init_Call() { + this.getTarget().getName() in [ + "EVP_EncryptInit_ex2", "EVP_DecryptInit_ex2", "EVP_CipherInit_ex2", "EVP_EncryptInit", + "EVP_DecryptInit", "EVP_CipherInit" + ] + } + + override DataFlow::Node getInput(IOType type) { + result = super.getInput(type) + or + this.getTarget().getName().toLowerCase().matches("%cipherinit%") and + result.asExpr() = this.getArgument(4) and + type = KeyOperationSubtypeIO() + } +} + +/** + * A call to EVP_Pkey_encrypt_init, EVP_Pkey_decrypt_init, or their 'ex' variants. + */ +class EvpPkeyEncryptDecryptInit extends OperationStep { + EvpPkeyEncryptDecryptInit() { + this.getTarget().getName() in [ + "EVP_PKEY_encrypt_init", "EVP_PKEY_encrypt_init_ex", "EVP_PKEY_decrypt_init", + "EVP_PKEY_decrypt_init_ex" + ] + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and type = OsslParamIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = InitializerStep() } +} + +class EvpCipherInitSKeyCall extends EvpEX2Initializer { + EvpCipherInitSKeyCall() { this.getTarget().getName() = "EVP_CipherInit_SKEY" } + + override DataFlow::Node getInput(IOType type) { + result = super.getInput(type) + or + result.asExpr() = this.getArgument(5) and + type = KeyOperationSubtypeIO() + } +} + +//EVP_PKEY_encrypt_init +/** + * A Call to EVP_Cipher/Encrypt/DecryptUpdate. + * https://docs.openssl.org/3.2/man3/EVP_CipherUpdate + */ +class EvpCipherUpdateCall extends OperationStep { + EvpCipherUpdateCall() { + this.getTarget().getName() in ["EVP_EncryptUpdate", "EVP_DecryptUpdate", "EVP_CipherUpdate"] + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(3) and type = PlaintextIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(1) and type = CiphertextIO() + or + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = UpdateStep() } +} + +/** + * A base configuration for all EVP cipher operations. + */ +abstract class EvpCipherOperationFinalStep extends OperationStep { + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = FinalStep() } +} + +/** + * A Call to EVP_Cipher. + */ +class EvpCipherCall extends EvpCipherOperationFinalStep { + EvpCipherCall() { this.getTarget().getName() = "EVP_Cipher" } + + override DataFlow::Node getInput(IOType type) { + super.getInput(type) = result + or + result.asExpr() = this.getArgument(2) and type = PlaintextIO() + } + + override DataFlow::Node getOutput(IOType type) { + super.getOutput(type) = result + or + result.asExpr() = this.getArgument(1) and type = CiphertextIO() + } +} + +/** + * A Call to an EVP Cipher/Encrypt/Decrypt final operation. + */ +class EvpCipherFinalCall extends EvpCipherOperationFinalStep { + EvpCipherFinalCall() { + this.getTarget().getName() in [ + "EVP_EncryptFinal_ex", "EVP_DecryptFinal_ex", "EVP_CipherFinal_ex", "EVP_EncryptFinal", + "EVP_DecryptFinal", "EVP_CipherFinal" + ] + } + + override DataFlow::Node getOutput(IOType type) { + super.getOutput(type) = result + or + result.asDefiningArgument() = this.getArgument(1) and + type = CiphertextIO() + // TODO: could indicate text lengths here, as well + } +} + +/** + * A call to a PKEY_encrypt or PKEY_decrypt operation. + * https://docs.openssl.org/3.2/man3/EVP_PKEY_decrypt/ + * https://docs.openssl.org/3.2/man3/EVP_PKEY_encrypt + */ +class EvpPKeyCipherOperation extends EvpCipherOperationFinalStep { + EvpPKeyCipherOperation() { + this.getTarget().getName() in ["EVP_PKEY_encrypt", "EVP_PKEY_decrypt"] + } + + override DataFlow::Node getInput(IOType type) { + super.getInput(type) = result + or + result.asExpr() = this.getArgument(3) and type = PlaintextIO() + } + + override DataFlow::Node getOutput(IOType type) { + super.getOutput(type) = result + or + result.asExpr() = this.getArgument(1) and type = CiphertextIO() + // TODO: could indicate text lengths here, as well + } +} + +/** + * An EVP cipher operation instance. + * Any operation step that is a final operation step for EVP cipher operation steps. + */ +class EvpCipherOperationInstance extends Crypto::KeyOperationInstance instanceof EvpCipherOperationFinalStep +{ + override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { + super.getPrimaryAlgorithmValueConsumer() = result + } + + override Crypto::KeyOperationSubtype getKeyOperationSubtype() { + result instanceof Crypto::TEncryptMode and + super.getTarget().getName().toLowerCase().matches("%encrypt%") + or + result instanceof Crypto::TDecryptMode and + super.getTarget().getName().toLowerCase().matches("%decrypt%") + or + super.getTarget().getName().toLowerCase().matches("%cipher%") and + resolveKeyOperationSubTypeOperationStep(super + .getDominatingInitializersToStep(KeyOperationSubtypeIO())) = result + } + + override Crypto::ConsumerInputDataFlowNode getNonceConsumer() { + super.getDominatingInitializersToStep(IVorNonceIO()).getInput(IVorNonceIO()) = result + } + + override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { + super.getDominatingInitializersToStep(KeyIO()).getInput(KeyIO()) = result + } + + override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { + super.getOutputStepFlowingToStep(CiphertextIO()).getOutput(CiphertextIO()) = result + } + + override Crypto::ConsumerInputDataFlowNode getInputConsumer() { + super.getDominatingInitializersToStep(PlaintextIO()).getInput(PlaintextIO()) = result + } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/ECKeyGenOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/ECKeyGenOperation.qll deleted file mode 100644 index 40103569cac0..000000000000 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/ECKeyGenOperation.qll +++ /dev/null @@ -1,34 +0,0 @@ -private import experimental.quantum.Language -private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow -private import OpenSSLOperationBase -private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers -private import semmle.code.cpp.dataflow.new.DataFlow - -class ECKeyGenOperation extends OpenSSLOperation, Crypto::KeyGenerationOperationInstance { - ECKeyGenOperation() { this.(Call).getTarget().getName() = "EC_KEY_generate_key" } - - override Expr getAlgorithmArg() { result = this.(Call).getArgument(0) } - - override Crypto::KeyArtifactType getOutputKeyType() { result = Crypto::TAsymmetricKeyType() } - - override Crypto::ArtifactOutputDataFlowNode getOutputKeyArtifact() { - result.asExpr() = this.(Call).getArgument(0) - } - - override Crypto::ConsumerInputDataFlowNode getKeySizeConsumer() { - none() // no explicit key size, inferred from algorithm - } - - override int getKeySizeFixed() { - none() - // TODO: marked as none as the operation itself has no key size, it - // comes from the algorithm source, but note we could grab the - // algorithm source and get the key size (see below). - // We may need to reconsider what is the best approach here. - // result = - // this.getAnAlgorithmValueConsumer() - // .getAKnownAlgorithmSource() - // .(Crypto::EllipticCurveInstance) - // .getKeySize() - } -} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherInitializer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherInitializer.qll deleted file mode 100644 index e6e9954a3332..000000000000 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherInitializer.qll +++ /dev/null @@ -1,117 +0,0 @@ -/** - * see: https://docs.openssl.org/master/man3/EVP_EncryptInit/ - * Models cipher initialization for EVP cipher operations. - */ - -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] } - - predicate isSink(DataFlow::Node sink) { - exists(EVP_Cipher_Initializer initCall | sink.asExpr() = initCall.getOperationSubtypeArg()) - } -} - -module EncValToInitEncArgFlow = DataFlow::Global; - -int getEncConfigValue(Expr e) { - exists(EVP_Cipher_Initializer initCall | e = initCall.getOperationSubtypeArg()) and - exists(DataFlow::Node a, DataFlow::Node b | - EncValToInitEncArgFlow::flow(a, b) and b.asExpr() = e and result = a.asExpr().getValue().toInt() - ) -} - -bindingset[i] -Crypto::KeyOperationSubtype intToCipherOperationSubtype(int i) { - if i = 0 - then result instanceof Crypto::TEncryptMode - else - if i = 1 - then result instanceof Crypto::TDecryptMode - else result instanceof Crypto::TUnknownKeyOperationMode -} - -// TODO: need to add key consumer -abstract class EVP_Cipher_Initializer extends EVPInitialize { - override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } - - abstract Expr getOperationSubtypeArg(); - - override Crypto::KeyOperationSubtype getKeyOperationSubtype() { - if this.(Call).getTarget().getName().toLowerCase().matches("%encrypt%") - then result instanceof Crypto::TEncryptMode - else - if this.(Call).getTarget().getName().toLowerCase().matches("%decrypt%") - then result instanceof Crypto::TDecryptMode - else - if exists(getEncConfigValue(this.getOperationSubtypeArg())) - then result = intToCipherOperationSubtype(getEncConfigValue(this.getOperationSubtypeArg())) - else result instanceof Crypto::TUnknownKeyOperationMode - } -} - -abstract class EVP_EX_Initializer extends EVP_Cipher_Initializer { - override Expr getKeyArg() { result = this.(Call).getArgument(3) } - - override Expr getIVArg() { result = this.(Call).getArgument(4) } -} - -abstract class EVP_EX2_Initializer extends EVP_Cipher_Initializer { - override Expr getKeyArg() { result = this.(Call).getArgument(2) } - - override Expr getIVArg() { result = this.(Call).getArgument(3) } -} - -class EVP_Cipher_EX_Init_Call extends EVP_EX_Initializer { - EVP_Cipher_EX_Init_Call() { - this.(Call).getTarget().getName() in [ - "EVP_EncryptInit_ex", "EVP_DecryptInit_ex", "EVP_CipherInit_ex" - ] - } - - override Expr getOperationSubtypeArg() { - this.(Call).getTarget().getName().toLowerCase().matches("%cipherinit%") and - result = this.(Call).getArgument(5) - } -} - -class EVP_Cipher_EX2_or_Simple_Init_Call extends EVP_EX2_Initializer { - EVP_Cipher_EX2_or_Simple_Init_Call() { - this.(Call).getTarget().getName() in [ - "EVP_EncryptInit_ex2", "EVP_DecryptInit_ex2", "EVP_CipherInit_ex2", "EVP_EncryptInit", - "EVP_DecryptInit", "EVP_CipherInit" - ] - } - - override Expr getOperationSubtypeArg() { - this.(Call).getTarget().getName().toLowerCase().matches("%cipherinit%") and - result = this.(Call).getArgument(4) - } -} - -class EVP_CipherInit_SKEY_Call extends EVP_EX2_Initializer { - EVP_CipherInit_SKEY_Call() { this.(Call).getTarget().getName() in ["EVP_CipherInit_SKEY"] } - - override Expr getOperationSubtypeArg() { result = this.(Call).getArgument(5) } -} - -class EVPCipherInitializerAlgorithmArgument extends Expr { - EVPCipherInitializerAlgorithmArgument() { - exists(EVP_Cipher_Initializer initCall | this = initCall.getAlgorithmArg()) - } -} - -class EVPCipherInitializerKeyArgument extends Expr { - EVPCipherInitializerKeyArgument() { - exists(EVP_Cipher_Initializer initCall | this = initCall.getKeyArg()) - } -} - -class EVPCipherInitializerIVArgument extends Expr { - EVPCipherInitializerIVArgument() { - exists(EVP_Cipher_Initializer initCall | this = initCall.getIVArg()) - } -} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll deleted file mode 100644 index 5f24d840ff88..000000000000 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll +++ /dev/null @@ -1,77 +0,0 @@ -private import experimental.quantum.Language -private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow -private import EVPCipherInitializer -private import OpenSSLOperationBase -private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers - -class EVP_Cipher_Update_Call extends EVPUpdate { - EVP_Cipher_Update_Call() { - this.(Call).getTarget().getName() in [ - "EVP_EncryptUpdate", "EVP_DecryptUpdate", "EVP_CipherUpdate" - ] - } - - override Expr getInputArg() { result = this.(Call).getArgument(3) } - - override Expr getOutputArg() { result = this.(Call).getArgument(1) } -} - -/** - * see: https://docs.openssl.org/master/man3/EVP_EncryptInit/#synopsis - * Base configuration for all EVP cipher operations. - */ -abstract class EVP_Cipher_Operation extends EVPOperation, Crypto::KeyOperationInstance { - override Expr getOutputArg() { result = this.(Call).getArgument(1) } - - override Crypto::KeyOperationSubtype getKeyOperationSubtype() { - result instanceof Crypto::TEncryptMode and - this.(Call).getTarget().getName().toLowerCase().matches("%encrypt%") - or - result instanceof Crypto::TDecryptMode and - this.(Call).getTarget().getName().toLowerCase().matches("%decrypt%") - or - result = this.getInitCall().getKeyOperationSubtype() and - this.(Call).getTarget().getName().toLowerCase().matches("%cipher%") - } - - override Crypto::ConsumerInputDataFlowNode getNonceConsumer() { - this.getInitCall().getIVArg() = result.asExpr() - } - - override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { - this.getInitCall().getKeyArg() = result.asExpr() - // todo: or track to the EVP_PKEY_CTX_new - } - - override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { - result = EVPOperation.super.getOutputArtifact() - } - - override Crypto::ConsumerInputDataFlowNode getInputConsumer() { - result = EVPOperation.super.getInputConsumer() - } -} - -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) } -} - -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", - "EVP_DecryptFinal", "EVP_CipherFinal" - ] - } - - /** - * 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() - } -} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashInitializer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashInitializer.qll deleted file mode 100644 index 7309242f198b..000000000000 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashInitializer.qll +++ /dev/null @@ -1,14 +0,0 @@ -import cpp -private import OpenSSLOperationBase - -abstract class EVP_Hash_Initializer extends EVPInitialize { } - -class EVP_DigestInit_Variant_Calls extends EVP_Hash_Initializer { - EVP_DigestInit_Variant_Calls() { - this.(Call).getTarget().getName() in [ - "EVP_DigestInit", "EVP_DigestInit_ex", "EVP_DigestInit_ex2" - ] - } - - override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } -} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll deleted file mode 100644 index 796f71398385..000000000000 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll +++ /dev/null @@ -1,85 +0,0 @@ -/** - * https://docs.openssl.org/3.0/man3/EVP_DigestInit/#synopsis - */ - -private import experimental.quantum.Language -private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow -private import OpenSSLOperationBase -private import EVPHashInitializer -private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers - -class EVP_Digest_Update_Call extends EVPUpdate { - EVP_Digest_Update_Call() { this.(Call).getTarget().getName() = "EVP_DigestUpdate" } - - override Expr getInputArg() { result = this.(Call).getArgument(1) } -} - -//https://docs.openssl.org/3.0/man3/EVP_DigestInit/#synopsis -class EVP_Q_Digest_Operation extends EVPOperation, Crypto::HashOperationInstance { - EVP_Q_Digest_Operation() { this.(Call).getTarget().getName() = "EVP_Q_digest" } - - 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 getInputArg() { result = this.(Call).getArgument(3) } - - override Expr getOutputArg() { result = this.(Call).getArgument(5) } - - override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { - result = EVPOperation.super.getOutputArtifact() - } - - override Crypto::ConsumerInputDataFlowNode getInputConsumer() { - result = EVPOperation.super.getInputConsumer() - } -} - -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 getInputArg() { result = this.(Call).getArgument(0) } - - override Expr getOutputArg() { result = this.(Call).getArgument(2) } - - override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { - result = EVPOperation.super.getOutputArtifact() - } - - override Crypto::ConsumerInputDataFlowNode getInputConsumer() { - result = EVPOperation.super.getInputConsumer() - } -} - -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" - ] - } - - override Expr getOutputArg() { result = this.(Call).getArgument(1) } - - 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/EVPPKeyCtxInitializer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll new file mode 100644 index 000000000000..2208407e53ca --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll @@ -0,0 +1,174 @@ +/** + * Initializers for EVP PKey + * including: + * https://docs.openssl.org/3.0/man3/EVP_PKEY_CTX_ctrl/ + * https://docs.openssl.org/3.0/man3/EVP_EncryptInit/#synopsis + */ + +import cpp +private import OpenSSLOperations + +/** + * A call to `EVP_PKEY_CTX_new` or `EVP_PKEY_CTX_new_from_pkey`. + * These calls initialize the context from a prior key. + * The key may be generated previously, or merely had it's + * parameters set (e.g., `EVP_PKEY_paramgen`). + */ +class EvpNewKeyCtx extends OperationStep instanceof Call { + Expr keyArg; + + EvpNewKeyCtx() { + this.getTarget().getName() = "EVP_PKEY_CTX_new" and + keyArg = this.getArgument(0) + or + this.getTarget().getName() = "EVP_PKEY_CTX_new_from_pkey" and + keyArg = this.getArgument(1) + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = keyArg and type = KeyIO() + or + this.getTarget().getName() = "EVP_PKEY_CTX_new_from_pkey" and + result.asExpr() = this.getArgument(0) and + type = OsslLibContextIO() + } + + override DataFlow::Node getOutput(IOType type) { result.asExpr() = this and type = ContextIO() } + + override OperationStepType getStepType() { result = ContextCreationStep() } +} + +/** + * A call to "EVP_PKEY_CTX_set_ec_paramgen_curve_nid". + */ +class EvpCtxSetEcParamgenCurveNidInitializer extends OperationStep { + EvpCtxSetEcParamgenCurveNidInitializer() { + this.getTarget().getName() = "EVP_PKEY_CTX_set_ec_paramgen_curve_nid" + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and type = PrimaryAlgorithmIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = InitializerStep() } +} + +/** + * A call to the following: + * - `EVP_PKEY_CTX_set_signature_md` + * - `EVP_PKEY_CTX_set_rsa_mgf1_md_name` + * - `EVP_PKEY_CTX_set_rsa_mgf1_md` + * - `EVP_PKEY_CTX_set_rsa_oaep_md_name` + * - `EVP_PKEY_CTX_set_rsa_oaep_md` + * - `EVP_PKEY_CTX_set_dsa_paramgen_md` + * - `EVP_PKEY_CTX_set_dh_kdf_md` + * - `EVP_PKEY_CTX_set_ecdh_kdf_md` + */ +class EvpCtxSetHashInitializer extends OperationStep { + EvpCtxSetHashInitializer() { + this.getTarget().getName() in [ + "EVP_PKEY_CTX_set_signature_md", "EVP_PKEY_CTX_set_rsa_mgf1_md_name", + "EVP_PKEY_CTX_set_rsa_mgf1_md", "EVP_PKEY_CTX_set_rsa_oaep_md_name", + "EVP_PKEY_CTX_set_rsa_oaep_md", "EVP_PKEY_CTX_set_dsa_paramgen_md", + "EVP_PKEY_CTX_set_dh_kdf_md", "EVP_PKEY_CTX_set_ecdh_kdf_md" + ] + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and type = HashAlgorithmIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = InitializerStep() } +} + +/** + * A call to `EVP_PKEY_CTX_set_rsa_keygen_bits`, `EVP_PKEY_CTX_set_dsa_paramgen_bits`, + * or `EVP_CIPHER_CTX_set_key_length`. + */ +class EvpCtxSetKeySizeInitializer extends OperationStep { + EvpCtxSetKeySizeInitializer() { + this.getTarget().getName() in [ + "EVP_PKEY_CTX_set_rsa_keygen_bits", "EVP_PKEY_CTX_set_dsa_paramgen_bits", + "EVP_CIPHER_CTX_set_key_length" + ] + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and type = KeySizeIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = InitializerStep() } +} + +class EvpCtxSetMacKeyInitializer extends OperationStep { + EvpCtxSetMacKeyInitializer() { this.getTarget().getName() = "EVP_PKEY_CTX_set_mac_key" } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(2) and type = KeySizeIO() + or + // the raw key that is configured into the output key + result.asExpr() = this.getArgument(1) and type = KeyIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = InitializerStep() } +} + +class EvpCtxSetPaddingInitializer extends OperationStep { + EvpCtxSetPaddingInitializer() { + this.getTarget().getName() in ["EVP_PKEY_CTX_set_rsa_padding", "EVP_CIPHER_CTX_set_padding"] + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and type = PaddingAlgorithmIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = InitializerStep() } +} + +class EvpCtxSetSaltLengthInitializer extends OperationStep { + EvpCtxSetSaltLengthInitializer() { + this.getTarget().getName() = "EVP_PKEY_CTX_set_rsa_pss_saltlen" + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and type = SaltLengthIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = InitializerStep() } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/HashOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/HashOperation.qll new file mode 100644 index 000000000000..1878bfbe09f2 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/HashOperation.qll @@ -0,0 +1,134 @@ +/** + * https://docs.openssl.org/3.0/man3/EVP_DigestInit/#synopsis + */ + +private import experimental.quantum.Language +private import OpenSSLOperationBase +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers + +/** + * A call to and EVP digest initializer, such as: + * - `EVP_DigestInit` + * - `EVP_DigestInit_ex` + * - `EVP_DigestInit_ex2` + */ +class EvpDigestInitVariantCalls extends OperationStep instanceof Call { + EvpDigestInitVariantCalls() { + this.getTarget().getName() in ["EVP_DigestInit", "EVP_DigestInit_ex", "EVP_DigestInit_ex2"] + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and type = PrimaryAlgorithmIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and + type = ContextIO() + } + + override OperationStepType getStepType() { result = InitializerStep() } +} + +/** + * A call to `EVP_DigestUpdate`. + */ +class EvpDigestUpdateCall extends OperationStep instanceof Call { + EvpDigestUpdateCall() { this.getTarget().getName() = "EVP_DigestUpdate" } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and type = PlaintextIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and + type = ContextIO() + } + + override OperationStepType getStepType() { result = UpdateStep() } +} + +/** + * A base class for final digest operations. + */ +abstract class EvpFinalDigestOperationStep extends OperationStep { + override OperationStepType getStepType() { result = FinalStep() } +} + +/** + * A call to `EVP_Q_digest` + * https://docs.openssl.org/3.0/man3/EVP_DigestInit/#synopsis + */ +class EvpQDigestOperation extends EvpFinalDigestOperationStep instanceof Call { + EvpQDigestOperation() { this.getTarget().getName() = "EVP_Q_digest" } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(1) and type = PrimaryAlgorithmIO() + or + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(3) and type = PlaintextIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and + type = ContextIO() + or + result.asDefiningArgument() = this.getArgument(5) and type = DigestIO() + } +} + +class EvpDigestOperation extends EvpFinalDigestOperationStep instanceof Call { + EvpDigestOperation() { this.getTarget().getName() = "EVP_Digest" } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(4) and type = PrimaryAlgorithmIO() + or + result.asExpr() = this.getArgument(0) and type = PlaintextIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asDefiningArgument() = this.getArgument(2) and type = DigestIO() + } +} + +/** + * A call to EVP_DigestFinal variants + */ +class EvpDigestFinalCall extends EvpFinalDigestOperationStep instanceof Call { + EvpDigestFinalCall() { + this.getTarget().getName() in ["EVP_DigestFinal", "EVP_DigestFinal_ex", "EVP_DigestFinalXOF"] + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and + type = ContextIO() + or + result.asDefiningArgument() = this.getArgument(1) and type = DigestIO() + } +} + +/** + * An openssl digest final hash operation instance + */ +class EvpDigestFinalOperationInstance extends Crypto::HashOperationInstance instanceof EvpFinalDigestOperationStep +{ + override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { + super.getPrimaryAlgorithmValueConsumer() = result + } + + override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { + super.getOutputStepFlowingToStep(DigestIO()).getOutput(DigestIO()) = result + } + + override Crypto::ConsumerInputDataFlowNode getInputConsumer() { + super.getDominatingInitializersToStep(PlaintextIO()).getInput(PlaintextIO()) = result + } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/KeyGenOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/KeyGenOperation.qll new file mode 100644 index 000000000000..2c146aec97f5 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/KeyGenOperation.qll @@ -0,0 +1,204 @@ +private import experimental.quantum.Language +private import OpenSSLOperationBase +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers + +/** + * A call to EC_KEY_generate_key, which is used to generate an EC key pair. + * Note: this is an operation, though the input parameter is a "EC_KEY*". + * EC_KEY is really an empty context for a key that hasn't been generated, hence + * we consider this an operation generating a key and not accepting a key input. + */ +class ECKeyGen extends OperationStep instanceof Call { + //, Crypto::KeyGenerationOperationInstance { + ECKeyGen() { this.(Call).getTarget().getName() = "EC_KEY_generate_key" } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.(Call).getArgument(0) and type = ContextIO() + } + + override DataFlow::Node getOutput(IOType type) { result.asExpr() = this and type = KeyIO() } + + override OperationStepType getStepType() { result = ContextCreationStep() } +} + +/** + * A call to EVP_PKEY_keygen_init or EVP_PKEY_paramgen_init. + */ +class EvpKeyGenInitialize extends OperationStep { + EvpKeyGenInitialize() { + this.getTarget().getName() in [ + "EVP_PKEY_keygen_init", + "EVP_PKEY_paramgen_init" + ] + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = InitializerStep() } +} + +abstract class KeyGenFinalOperationStep extends OperationStep { + override OperationStepType getStepType() { result = FinalStep() } +} + +/** + * A call to `EVP_PKEY_Q_keygen` + */ +class EvpPKeyQKeyGen extends KeyGenFinalOperationStep instanceof Call { + EvpPKeyQKeyGen() { this.getTarget().getName() = "EVP_PKEY_Q_keygen" } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this and type = KeyIO() + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + // When arg 3 is a derived type, it is a curve name, otherwise it is a key size for RSA if provided + // and arg 2 is the algorithm type + this.getArgument(3).getType().getUnderlyingType() instanceof DerivedType and + result.asExpr() = this.getArgument(3) and + type = PrimaryAlgorithmIO() + or + not this.getArgument(3).getType().getUnderlyingType() instanceof DerivedType and + result.asExpr() = this.getArgument(2) and + type = PrimaryAlgorithmIO() + or + not this.getArgument(3).getType().getUnderlyingType() instanceof DerivedType and + result.asExpr() = this.getArgument(3) and + type = KeySizeIO() + } +} + +/** + * A call to `EVP_RSA_gen` + */ +class EvpRsaGen extends KeyGenFinalOperationStep instanceof Call { + EvpRsaGen() { this.getTarget().getName() = "EVP_RSA_gen" } + + override DataFlow::Node getOutput(IOType type) { result.asExpr() = this and type = KeyIO() } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = KeySizeIO() + } +} + +/** + * A call to RSA_generate_key + */ +class RsaGenerateKey extends KeyGenFinalOperationStep instanceof Call { + RsaGenerateKey() { this.getTarget().getName() = "RSA_generate_key" } + + override DataFlow::Node getOutput(IOType type) { result.asExpr() = this and type = KeyIO() } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = KeySizeIO() + } +} + +/** + * A call to RSA_generate_key_ex + */ +class RsaGenerateKeyEx extends KeyGenFinalOperationStep instanceof Call { + RsaGenerateKeyEx() { this.getTarget().getName() = "RSA_generate_key_ex" } + + override DataFlow::Node getOutput(IOType type) { + result.asDefiningArgument() = this.getArgument(0) and type = KeyIO() + } + + override DataFlow::Node getInput(IOType type) { + // arg 0 comes in as a blank RSA key, which we consider a context, + // on output it is considered a key + result.asExpr() = this.getArgument(0) and type = ContextIO() + } +} + +/** + * A call to `EVP_PKEY_generate` or `EVP_PKEY_keygen`. + */ +class EvpPkeyGen extends KeyGenFinalOperationStep instanceof Call { + EvpPkeyGen() { this.getTarget().getName() in ["EVP_PKEY_generate", "EVP_PKEY_keygen"] } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asDefiningArgument() = this.getArgument(1) and type = KeyIO() + or + result.asExpr() = this.getArgument(0) and type = ContextIO() + } +} + +/** + * A call to `EVP_PKEY_new_mac_key` that creates a new generic MAC key. + * - EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, const unsigned char *key, int keylen); + */ +class EvpNewMacKey extends KeyGenFinalOperationStep { + EvpNewMacKey() { this.getTarget().getName() = "EVP_PKEY_new_mac_key" } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + // the raw key that is configured into the output key + result.asExpr() = this.getArgument(2) and type = KeyIO() + or + result.asExpr() = this.getArgument(3) and type = KeySizeIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this and type = KeyIO() + or + result.asExpr() = this.getArgument(0) and type = ContextIO() + } +} + +/// TODO: https://docs.openssl.org/3.0/man3/EVP_PKEY_new/#synopsis +/** + * An `KeyGenerationOperationInstance` for the for all key gen final operation steps. + */ +class KeyGenOperationInstance extends Crypto::KeyGenerationOperationInstance instanceof KeyGenFinalOperationStep +{ + override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { + super.getPrimaryAlgorithmValueConsumer() = result + } + + override Crypto::KeyArtifactType getOutputKeyType() { result = Crypto::TAsymmetricKeyType() } + + override Crypto::ArtifactOutputDataFlowNode getOutputKeyArtifact() { + super.getOutputStepFlowingToStep(KeyIO()).getOutput(KeyIO()) = result + } + + override predicate hasKeyValueConsumer() { + exists(OperationStep s | s.flowsToOperationStep(this) and s.setsValue(KeyIO())) + } + + override Crypto::ConsumerInputDataFlowNode getKeySizeConsumer() { + super.getDominatingInitializersToStep(KeySizeIO()).getInput(KeySizeIO()) = result + } + + override int getKeySizeFixed() { + none() + // TODO: marked as none as the operation itself has no key size, it + // comes from the algorithm source, but note we could grab the + // algorithm source and get the key size (see below). + // We may need to reconsider what is the best approach here. + // result = + // this.getAnAlgorithmValueConsumer() + // .getAKnownAlgorithmSource() + // .(Crypto::EllipticCurveInstance) + // .getKeySize() + } + + override Crypto::ConsumerInputDataFlowNode getKeyValueConsumer() { + super.getDominatingInitializersToStep(KeyIO()).getInput(KeyIO()) = result + } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index 6ada6cb4665d..f1ab394ad787 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -1,162 +1,523 @@ private import experimental.quantum.Language -private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers +import semmle.code.cpp.dataflow.new.DataFlow +// Importing these intializers here to ensure the are part of any model that is +// using OpenSslOperationBase. This further ensures that initializers are tied to opeartions +// even if only importing the operation by itself. +import EVPPKeyCtxInitializer /** - * A class for all OpenSSL operations. + * An openSSL CTX type, which is type for which the stripped underlying type + * matches the pattern 'evp_%ctx_%st'. + * This includes types like: + * - EVP_CIPHER_CTX + * - EVP_MD_CTX + * - EVP_PKEY_CTX */ -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(); +class CtxType extends Type { + CtxType() { + // It is possible for users to use the underlying type of the CTX variables + // these have a name matching 'evp_%ctx_%st + this.getUnspecifiedType().stripType().getName().matches("evp_%ctx_%st") + or + // In principal the above check should be sufficient, but in case of build mode none issues + // i.e., if a typedef cannot be resolved, + // or issues with properly stubbing test cases, we also explicitly check for the wrapping type defs + // i.e., patterns matching 'EVP_%_CTX' + exists(Type base | base = this or base = this.(DerivedType).getBaseType() | + base.getName().matches("EVP_%_CTX") + ) + } +} - /** - * 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 pointer to a CtxType + */ +class CtxPointerExpr extends Expr { + CtxPointerExpr() { + this.getType() instanceof CtxType and + this.getType() instanceof PointerType + } +} + +/** + * A call argument of type CtxPointerExpr. + */ +class CtxPointerArgument extends CtxPointerExpr { + CtxPointerArgument() { exists(Call c | c.getAnArgument() = this) } + + Call getCall() { result.getAnArgument() = this } +} + +/** + * The type of inputs and ouputs for an `OperationStep`. + */ +newtype TIOType = + CiphertextIO() or + // Used for typical CTX types, but not for OSSL_PARAM or OSSL_LIB_CTX + // For OSSL_PARAM and OSSL_LIB_CTX use of OsslParamIO and OsslLibContextIO + ContextIO() or + DigestIO() or + HashAlgorithmIO() or + IVorNonceIO() or + KeyIO() or + KeyOperationSubtypeIO() or + KeySizeIO() or + // Used for OSSL_LIB_CTX + OsslLibContextIO() or + // Used for OSSL_PARAM + OsslParamIO() or + MacIO() or + PaddingAlgorithmIO() or + // Plaintext also includes a message for digest, signature, verification, and mac generation + PlaintextIO() or + PrimaryAlgorithmIO() or + RandomSourceIO() or + SaltLengthIO() or + SeedIO() or + SignatureIO() + +private string ioTypeToString(TIOType t) { + t = CiphertextIO() and result = "CiphertextIO" + or + t = ContextIO() and result = "ContextIO" + or + t = DigestIO() and result = "DigestIO" + or + t = HashAlgorithmIO() and result = "HashAlgorithmIO" + or + t = IVorNonceIO() and result = "IVorNonceIO" + or + t = KeyIO() and result = "KeyIO" + or + t = KeyOperationSubtypeIO() and result = "KeyOperationSubtypeIO" + or + t = KeySizeIO() and result = "KeySizeIO" + or + t = OsslLibContextIO() and result = "OsslLibContextIO" + or + t = OsslParamIO() and result = "OsslParamIO" + or + t = MacIO() and result = "MacIO" + or + t = PaddingAlgorithmIO() and result = "PaddingAlgorithmIO" + or + t = PlaintextIO() and result = "PlaintextIO" + or + t = PrimaryAlgorithmIO() and result = "PrimaryAlgorithmIO" + or + t = RandomSourceIO() and result = "RandomSourceIO" + or + t = SaltLengthIO() and result = "SaltLengthIO" + or + t = SeedIO() and result = "SeedIO" + or + t = SignatureIO() and result = "SignatureIO" +} + +class IOType extends TIOType { + string toString() { + result = ioTypeToString(this) + or + not exists(ioTypeToString(this)) and result = "UnknownIOType" } } +//TODO: add more initializers as needed /** - * 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. + * The type of step in an `OperationStep`. + * - `ContextCreationStep`: the creation of a context from an algorithm or key. + * for example `EVP_MD_CTX_create(EVP_sha256())` or `EVP_PKEY_CTX_new(pkey, NULL)` + * - `InitializerStep`: the initialization of an operation through some sort of shared/accumulated context + * for example `EVP_DigestInit_ex(ctx, EVP_sha256(), NULL)` + * - `UpdateStep`: any operation that has and update/final paradigm, the update represents an intermediate step in an operation, + * such as `EVP_DigestUpdate(ctx, data, len)` + * - `FinalStep`: an ultimate operation step. This may be an explicit 'final' in an update/final paradigm, but not necessarily. + * Any operation that does nto operate through an update/final paradigm is considered a final step. */ -abstract class EVPInitialize extends Call { +newtype OperationStepType = + // Context creation captures cases where a context is created from an algorithm or key + // + ContextCreationStep() or + InitializerStep() or + UpdateStep() or + FinalStep() + +/** + * A step in configuring an operation. + * Captures creation of contexts from algorithms or keys, + * initalization of configurations on contexts, + * update operations (intermediate steps in an operation) + * and the operation itself. + * + * NOTE: if an operation is configured through a means other than a call + * e.g., a pattern like ctx->alg = EVP_sha256() + * then this class will need to be modified to account for that paradigm. + * Currently, this is not a known pattern in OpenSSL. + */ +abstract class OperationStep extends Call { /** - * Gets the context argument that ties together initialization, updates and/or final calls. + * Gets the output nodes from the given operation step. + * These are the nodes that flow connecting this step + * to any other step in the operation should follow. */ - Expr getContextArg() { result = this.(Call).getArgument(0) } + abstract DataFlow::Node getOutput(IOType type); /** - * Gets the type of key operation, none if not applicable. + * Gets any output node from the given operation step. */ - Crypto::KeyOperationSubtype getKeyOperationSubtype() { none() } + final DataFlow::Node getAnOutput() { result = this.getOutput(_) } /** - * Explicitly specified algorithm or none if implicit (e.g., established by the key). - * None if not applicable. + * Gets the input nodes for the given operation step. */ - Expr getAlgorithmArg() { none() } + abstract DataFlow::Node getInput(IOType type); /** - * Gets the key for the operation, none if not applicable. + * Gets any input node for the given operation step. */ - Expr getKeyArg() { none() } + final DataFlow::Node getAnInput() { result = this.getInput(_) } /** - * Gets the IV/nonce, none if not applicable. + * Gets the type of the step, e.g., ContextCreationStep, InitializerStep, UpdateStep, FinalStep. */ - Expr getIVArg() { none() } -} + abstract OperationStepType getStepType(); + + /** + * Holds if this operation step flows to the given `OperationStep` `sink`. + * If `sink` is `this`, then this holds true. + */ + predicate flowsToOperationStep(OperationStep sink) { + sink = this or + OperationStepFlow::flow(this.getAnOutput(), sink.getAnInput()) + } + + /** + * Holds if this operation step flows from the given `OperationStep` (`source`). + * If `source` is `this`, then this holds true. + */ + predicate flowsFromOperationStep(OperationStep source) { + source = this or + OperationStepFlow::flow(source.getAnOutput(), this.getAnInput()) + } -/** - * 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. + * Holds if this operation step sets a value of the given `IOType`. */ - Expr getContextArg() { result = this.(Call).getArgument(0) } + predicate setsValue(IOType type) { exists(this.getInput(type)) } /** - * Update calls always have some input data like plaintext or message digest. + * Gets operation steps that flow to `this` and set the given `IOType`. + * This checks for the last initializers that flow to the `this`, + * i.e., if a value is set then re-set, the last set operation step is returned, + * not both. + * Note: Any 'update' that sets a value is not considered to be 'resetting' an input. + * I.e., there is a difference between changing a configuration before use and + * the operation allows for multiple inputs (like plaintext for cipher update calls before final). */ - abstract Expr getInputArg(); + OperationStep getDominatingInitializersToStep(IOType type) { + result.flowsToOperationStep(this) and + result.setsValue(type) and + ( + // Do not consider a 'reset' to occur on updates + result.getStepType() = UpdateStep() + or + not exists(OperationStep reset | + result != reset and + reset.setsValue(type) and + reset.flowsToOperationStep(this) and + result.flowsToOperationStep(reset) + ) + ) + } /** - * Update calls sometimes have some output data like a plaintext. + * Gets all output of `type` that flow to `this` + * if `this` is a final step and the output is not from + * a separate final step. */ - Expr getOutputArg() { none() } + OperationStep getOutputStepFlowingToStep(IOType type) { + this.getStepType() = FinalStep() and + result.flowsToOperationStep(this) and + exists(result.getOutput(type)) and + (result = this or result.getStepType() != FinalStep()) + } + + /** + * Gets an AVC for the primary algorithm for this operation. + * A primary algorithm is an AVC that flows to a ctx input directly or + * an AVC that flows to a primary algorithm input directly. + * See `AvcContextCreationStep` for details about resetting scenarios. + * Gets the first OperationStep an AVC flows to. If a context input, + * the AVC is considered primary. + * If a primary algorithm input, then get the last set primary algorithm + * operation step (dominating operation step, see `getDominatingInitializersToStep`). + */ + Crypto::AlgorithmValueConsumer getPrimaryAlgorithmValueConsumer() { + exists(DataFlow::Node src, DataFlow::Node sink, IOType t, OperationStep avcSucc | + (t = PrimaryAlgorithmIO() or t = ContextIO()) and + avcSucc.flowsToOperationStep(this) and + src.asExpr() = result and + sink = avcSucc.getInput(t) and + AvcToOperationStepFlow::flow(src, sink) and + ( + // Case 1: the avcSucc step is a dominating initialization step + t = PrimaryAlgorithmIO() and + avcSucc = this.getDominatingInitializersToStep(PrimaryAlgorithmIO()) + or + // Case 2: the succ is a context input (any avcSucc is valid) + t = ContextIO() + ) + ) + } + + /** + * Gets the algorithm value consumer for an input to `this` operation step + * of the given `type`. + * TODO: generalize to use this for `getPrimaryAlgorithmValueConsumer` + */ + Crypto::AlgorithmValueConsumer getAlgorithmValueConsumerForInput(IOType type) { + exists(DataFlow::Node src, DataFlow::Node sink | + AvcToOperationStepFlow::flow(src, sink) and + src.asExpr() = result and + sink = this.getInput(type) + ) + } } /** - * Flows from algorithm values to operations, specific to OpenSSL + * An AVC is considered to output a 'context type', however, + * each AVC has it's own output types in practice. + * Some output algorithm containers (`EVP_get_cipherbyname`) + * some output explicit contexts (`EVP_PKEY_CTX_new_from_name`). + * The output of an AVC cannot be determined to be a primary algorithm (PrimaryAlgorithmIO), that depends + * on the use of the AVC output. + * The use is assumed to be of two forms: + * - The AVC output flows to a known input that accepts an algorithm + * e.g., `EVP_DigestInit(ctx, type)` the `type` parameter is known to be the primary algorithm. + * `EVP_SignInit(ctx, type)` the `type` parameter is known to be a digest algorithm for the signature. + * - The AVC output flows to a context initialization step + * e.g., `pkey_ctx = EVP_PKEY_CTX_new_from_name(libctx, name, propquery)` this is an AVC call, but the + * API says the output is a context. It is consumed typically by something like: + * `ctx = EVP_PKEY_keygen_init(pkey_ctx)`, but note I cannot consider the `pkey_ctx` parameter to always be a primary algorithm, + * a key gen can be inited by a prior key as well, e.g., `ctx = EVP_PKEY_CTX_new(pkey, NULL)`. + * Hence, these initialization steps take in a context that may have come from an AVC or something else, + * and therefore cannot be considered a primary algorithm. + * Assumption: The first operation step an AVC flows to will be of the above two forms. + * Resetting Algorithm Concerns and Assumptions: + * What if a user resets the algorithm through another AVC call? + * How would we detect that and only look at the 'dominating' (last set) AVC? + * From an AVC, always assess the first operation step it flows to. + * If the first step is to a context input, then we assume that reset is not possible in the same path. + * I.e., a user cannot reset the algorithm without starting an entirely new operation step chain. + * See the use patterns for `pkey_ctx = EVP_PKEY_CTX_new_from_name(...)` mentioned above. A user cannot + * reset the algorithm without calling a new `ctx = EVP_PKEY_keygen_init(pkey_ctx)`, + * i.e., subsequent flow follows the `ctx` output. + * If the first step is to any other input, then we use the `getDominatingInitializersToStep` + * to find the last AVC that set the algorithm for the operation step. + * Domination checks must occur at an operation step (e.g., at a final operation). + * This operation step does not find the dominating AVC. + * If a primary algorithm is explicitly set and and AVC is set through a context input, + * we will use both cases as primary inputs. */ -private module AlgGetterToAlgConsumerConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - exists(OpenSSLAlgorithmValueConsumer c | c.getResultNode() = source) +class AvcContextCreationStep extends OperationStep instanceof OpenSslAlgorithmValueConsumer { + override DataFlow::Node getOutput(IOType type) { + type = ContextIO() and result = super.getResultNode() } - predicate isSink(DataFlow::Node sink) { - exists(EVPOperation c | c.getAlgorithmArg() = sink.asExpr()) + override DataFlow::Node getInput(IOType type) { none() } + + override OperationStepType getStepType() { result = ContextCreationStep() } +} + +abstract private class CtxPassThroughCall extends Call { + abstract DataFlow::Node getNode1(); + + abstract DataFlow::Node getNode2(); +} + +/** + * A call whose target contains 'free' or 'reset' and has an argument of type + * CtxPointerArgument. + */ +private class CtxClearCall extends Call { + CtxClearCall() { + this.getTarget().getName().toLowerCase().matches(["%free%", "%reset%"]) and + this.getAnArgument() instanceof CtxPointerArgument } } -private module AlgGetterToAlgConsumerFlow = DataFlow::Global; +/** + * A call whose target contains 'copy' and has an argument of type + * CtxPointerArgument. + */ +private class CtxCopyOutArgCall extends CtxPassThroughCall { + DataFlow::Node n1; + DataFlow::Node n2; + + CtxCopyOutArgCall() { + this.getTarget().getName().toLowerCase().matches("%copy%") and + n1.asExpr() = this.getAnArgument() and + n1.getType() instanceof CtxType and + n2.asDefiningArgument() = this.getAnArgument() and + n2.getType() instanceof CtxType and + n1.asDefiningArgument() != n2.asExpr() + } + + override DataFlow::Node getNode1() { result = n1 } + + override DataFlow::Node getNode2() { result = n2 } +} /** - * 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 + * A call whose target contains 'dup' and has an argument of type + * CtxPointerArgument. */ -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) } +private class CtxCopyReturnCall extends CtxPassThroughCall, CtxPointerExpr { + DataFlow::Node n1; - /** - * 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(); + CtxCopyReturnCall() { + this.getTarget().getName().toLowerCase().matches("%dup%") and + n1.asExpr() = this.getAnArgument() and + n1.getType() instanceof CtxType + } - /** - * Some output data like ciphertext or signature. - */ - abstract Expr getOutputArg(); + override DataFlow::Node getNode1() { result = n1 } - /** - * Overwrite with an explicitly specified algorithm or leave base implementation to find it in the initialization call. - */ - override Expr getAlgorithmArg() { result = this.getInitCall().getAlgorithmArg() } + override DataFlow::Node getNode2() { result.asExpr() = this } +} - /** - * Finds the initialization call, may be none. - */ - EVPInitialize getInitCall() { - CTXFlow::ctxArgFlowsToCtxArg(result.getContextArg(), this.getContextArg()) +// TODO: is this still needed? +/** + * A call to `EVP_PKEY_paramgen` acts as a kind of pass through. + * It's output pkey is eventually used in a new operation generating + * a fresh context pointer (e.g., `EVP_PKEY_CTX_new`). + * It is easier to model this as a pass through + * than to model the flow from the paramgen to the new key generation. + */ +private class CtxParamGenCall extends CtxPassThroughCall { + DataFlow::Node n1; + DataFlow::Node n2; + + CtxParamGenCall() { + this.getTarget().getName() = "EVP_PKEY_paramgen" and + n1.asExpr() = this.getArgument(0) and + ( + n2.asExpr() = this.getArgument(1) + or + n2.asDefiningArgument() = this.getArgument(1) + ) } - Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { - result = DataFlow::exprNode(this.getOutputArg()) + override DataFlow::Node getNode1() { result = n1 } + + override DataFlow::Node getNode2() { result = n2 } +} + +//TODO: I am not sure CallArgToCtxRet is needed anymore +/** + * If the current node is an argument to a function + * that returns a pointer type, immediately flow through. + * NOTE: this passthrough is required if we allow + * intermediate steps to go into variables that are not a CTX type. + * See for example `CtxParamGenCall`. + */ +private class CallArgToCtxRet extends CtxPassThroughCall, CtxPointerExpr { + DataFlow::Node n1; + DataFlow::Node n2; + + CallArgToCtxRet() { + this.getAnArgument() = n1.asExpr() and + n2.asExpr() = this } - /** - * Input consumer is the input argument of the call. - */ - Crypto::ConsumerInputDataFlowNode getInputConsumer() { - result = DataFlow::exprNode(this.getInputArg()) + override DataFlow::Node getNode1() { result = n1 } + + override DataFlow::Node getNode2() { result = n2 } +} + +/** + * A flow configuration from any non-final `OperationStep` to any other `OperationStep`. + */ +module OperationStepFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + exists(OperationStep s | + s.getAnOutput() = source or + s.getAnInput() = source + ) + } + + predicate isSink(DataFlow::Node sink) { + exists(OperationStep s | + s.getAnInput() = sink or + s.getAnOutput() = sink + ) + } + + predicate isBarrier(DataFlow::Node node) { + exists(CtxClearCall c | c.getAnArgument() = node.asExpr()) + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(CtxPassThroughCall c | c.getNode1() = node1 and c.getNode2() = node2) + or + // Flow out through all outputs from an operation step if more than one output + // is defined. + exists(OperationStep s | s.getAnInput() = node1 and s.getAnOutput() = node2) + // TODO: consideration for additional alises defined as follows: + // if an output from an operation step itself flows from the output of another operation step + // then the source of that flow's outputs (all of them) are potential aliases } } +module OperationStepFlow = DataFlow::Global; + /** - * The final calls of the EVP API. + * A flow from AVC to the first `OperationStep` the AVC reaches as an input. */ -abstract class EVPFinal extends EVPOperation { - /** - * All update calls that were executed before this final call. - */ - EVPUpdate getUpdateCalls() { - CTXFlow::ctxArgFlowsToCtxArg(result.getContextArg(), this.getContextArg()) +module AvcToOperationStepFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + exists(AvcContextCreationStep s | s.getAnOutput() = source) } - /** - * 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() } + predicate isSink(DataFlow::Node sink) { exists(OperationStep s | s.getAnInput() = sink) } + + predicate isBarrier(DataFlow::Node node) { + exists(CtxClearCall c | c.getAnArgument() = node.asExpr()) + } /** - * Gets the output data provided to all update calls. - * If more output data was provided in the final call, override the method. + * Only get the first operation step encountered. */ - override Expr getOutputArg() { result = this.getUpdateCalls().getOutputArg() } + predicate isBarrierOut(DataFlow::Node node) { isSink(node) } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(CtxPassThroughCall c | c.getNode1() = node1 and c.getNode2() = node2) + } +} + +module AvcToOperationStepFlow = DataFlow::Global; + +module EncValToInitEncArgConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source.asExpr().getValue().toInt() in [0, 1] } + + predicate isSink(DataFlow::Node sink) { + exists(OperationStep s | sink = s.getInput(KeyOperationSubtypeIO())) + } +} + +module EncValToInitEncArgFlow = DataFlow::Global; + +private Crypto::KeyOperationSubtype intToCipherOperationSubtype(int i) { + i = 0 and + result instanceof Crypto::TEncryptMode + or + i = 1 and result instanceof Crypto::TDecryptMode +} + +Crypto::KeyOperationSubtype resolveKeyOperationSubTypeOperationStep(OperationStep s) { + exists(DataFlow::Node src | + EncValToInitEncArgFlow::flow(src, s.getInput(KeyOperationSubtypeIO())) and + result = intToCipherOperationSubtype(src.asExpr().getValue().toInt()) + ) } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll index f6ff0dd1f077..be65ef3e1c05 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll @@ -1,4 +1,5 @@ import OpenSSLOperationBase -import EVPCipherOperation -import EVPHashOperation -import ECKeyGenOperation +import CipherOperation +import HashOperation +import SignatureOperation +import KeyGenOperation diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/SignatureOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/SignatureOperation.qll new file mode 100644 index 000000000000..b9b498ee8df3 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/SignatureOperation.qll @@ -0,0 +1,260 @@ +/** + * Provides classes for modeling OpenSSL's EVP signature operations + */ + +private import experimental.quantum.Language +private import experimental.quantum.OpenSSL.AvcFlow +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers +private import experimental.quantum.OpenSSL.Operations.OpenSSLOperations + +// TODO: verification functions +/** + * A base class for final signature operations. + */ +abstract class EvpSignatureFinalOperation extends OperationStep { + override OperationStepType getStepType() { result = FinalStep() } +} + +/** + * A call to EVP_DigestSignInit or EVP_DigestSignInit_ex. + */ +class EvpSignatureDigestInitializer extends OperationStep { + EvpSignatureDigestInitializer() { + this.getTarget().getName() in ["EVP_DigestSignInit_ex", "EVP_DigestSignInit"] + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + this.getTarget().getName() = "EVP_DigestSignInit_ex" and + result.asExpr() = this.getArgument(3) and + type = OsslLibContextIO() + or + result.asExpr() = this.getArgument(2) and type = HashAlgorithmIO() + or + this.getTarget().getName() = "EVP_DigestSignInit" and + result.asExpr() = this.getArgument(4) and + type = KeyIO() + or + this.getTarget().getName() = "EVP_DigestSignInit_ex" and + result.asExpr() = this.getArgument(5) and + type = KeyIO() + or + this.getTarget().getName() = "EVP_DigestSignInit_ex" and + result.asExpr() = this.getArgument(6) and + type = OsslParamIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + // EVP_PKEY_CTX + result.asExpr() = this.getArgument(1) and type = ContextIO() + or + this.getTarget().getName() = "EVP_DigestSignInit_ex" and + result.asExpr() = this.getArgument(6) and + type = ContextIO() + } + + override OperationStepType getStepType() { result = InitializerStep() } +} + +/** + * A call to EVP_SignInit or EVP_SignInit_ex. + */ +class EvpSignInit extends OperationStep { + EvpSignInit() { this.getTarget().getName() in ["EVP_SignInit", "EVP_SignInit_ex"] } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and type = HashAlgorithmIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = InitializerStep() } +} + +/** + * A call to: + * - EVP_PKEY_sign_init_ex + * - EVP_PKEY_sign_init_ex2 + * - EVP_PKEY_sign_init + * - EVP_PKEY_sign_message_init + */ +class EvpPkeySignInit extends OperationStep { + EvpPkeySignInit() { + this.getTarget().getName() in [ + "EVP_PKEY_sign_init_ex", "EVP_PKEY_sign_init_ex2", "EVP_PKEY_sign_init", + "EVP_PKEY_sign_message_init" + ] + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + this.getTarget().getName() in ["EVP_PKEY_sign_init_ex2", "EVP_PKEY_sign_message_init"] and + result.asExpr() = this.getArgument(1) and + type = PrimaryAlgorithmIO() + or + this.getTarget().getName() = "EVP_PKEY_sign_init_ex" and + result.asExpr() = this.getArgument(1) and + type = OsslParamIO() + or + // Argument 2 (0 based) only exists for EVP_PKEY_sign_init_ex2 and EVP_PKEY_sign_message_init + result.asExpr() = this.getArgument(2) and type = OsslParamIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = InitializerStep() } +} + +/** + * A call to EVP_DIgestSignUpdate, EVP_SignUpdate or EVP_PKEY_sign_message_update. + */ +class EvpSignatureUpdateCall extends OperationStep { + EvpSignatureUpdateCall() { + this.getTarget().getName() in [ + "EVP_DigestSignUpdate", "EVP_SignUpdate", "EVP_PKEY_sign_message_update" + ] + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and type = PlaintextIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override OperationStepType getStepType() { result = UpdateStep() } +} + +/** + * A call to EVP_SignFinal or EVP_SignFinal_ex. + */ +class EvpSignFinal extends EvpSignatureFinalOperation { + EvpSignFinal() { this.getTarget().getName() in ["EVP_SignFinal_ex", "EVP_SignFinal"] } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(3) and type = KeyIO() + or + // params above 3 (0-based) only exist for EVP_SignFinal_ex + result.asExpr() = this.getArgument(4) and + type = OsslLibContextIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and type = SignatureIO() + } +} + +/** + * A call to EVP_DigestSign or EVP_PKEY_sign. + */ +class EvpDigestSign extends EvpSignatureFinalOperation { + EvpDigestSign() { this.getTarget().getName() in ["EVP_DigestSign", "EVP_PKEY_sign"] } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(3) and type = PlaintextIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and type = SignatureIO() + } +} + +/** + * A call to EVP_DigestSignFinal or EVP_PKEY_sign_message_final. + */ +class EvpDigestAndPkeySignFinal extends EvpSignatureFinalOperation { + EvpDigestAndPkeySignFinal() { + this.getTarget().getName() in [ + "EVP_DigestSignFinal", + "EVP_PKEY_sign_message_final" + ] + } + + override DataFlow::Node getInput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + } + + override DataFlow::Node getOutput(IOType type) { + result.asExpr() = this.getArgument(0) and type = ContextIO() + or + result.asExpr() = this.getArgument(1) and type = SignatureIO() + } + + override OperationStepType getStepType() { result = FinalStep() } +} + +/** + * An EVP signature operation instance. + */ +class EvpSignatureOperationInstance extends Crypto::SignatureOperationInstance instanceof EvpSignatureFinalOperation +{ + override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { + super.getPrimaryAlgorithmValueConsumer() = result + } + + /** + * Signing, verification or unknown. + */ + override Crypto::KeyOperationSubtype getKeyOperationSubtype() { + // TODO: if this KeyOperationSubtype does not match initialization call's KeyOperationSubtype then we found a bug + if super.getTarget().getName().toLowerCase().matches("%sign%") + then result instanceof Crypto::TSignMode + else + if super.getTarget().getName().toLowerCase().matches("%verify%") + then result instanceof Crypto::TVerifyMode + else result instanceof Crypto::TUnknownKeyOperationMode + } + + override Crypto::ConsumerInputDataFlowNode getNonceConsumer() { + // TODO: some signing operations may have explicit nonce generators + none() + } + + /** + * Keys provided in the initialization call or in a context are found by this method. + * Keys in explicit arguments are found by overridden methods in extending classes. + */ + override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { + super.getDominatingInitializersToStep(KeyIO()).getInput(KeyIO()) = result + } + + override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { + super.getOutputStepFlowingToStep(SignatureIO()).getOutput(SignatureIO()) = result + } + + override Crypto::ConsumerInputDataFlowNode getInputConsumer() { + super.getDominatingInitializersToStep(PlaintextIO()).getInput(PlaintextIO()) = result + } + + /** + * TODO: only signing operations for now, change when verificaiton is added + */ + override Crypto::ConsumerInputDataFlowNode getSignatureConsumer() { none() } + + override Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { + super + .getDominatingInitializersToStep(HashAlgorithmIO()) + .getAlgorithmValueConsumerForInput(HashAlgorithmIO()) = result + } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Random.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Random.qll index e599ed82169b..d39087bcbce0 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Random.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Random.qll @@ -3,11 +3,10 @@ private import experimental.quantum.Language private import LibraryDetector private import semmle.code.cpp.dataflow.new.DataFlow -class OpenSSLRandomNumberGeneratorInstance extends Crypto::RandomNumberGenerationInstance instanceof Call +class OpenSslRandomNumberGeneratorInstance extends Crypto::RandomNumberGenerationInstance instanceof Call { - OpenSSLRandomNumberGeneratorInstance() { - this.(Call).getTarget().getName() in ["RAND_bytes", "RAND_pseudo_bytes"] and - isPossibleOpenSSLFunction(this.(Call).getTarget()) + OpenSslRandomNumberGeneratorInstance() { + this.(Call).getTarget().getName() in ["RAND_bytes", "RAND_pseudo_bytes"] } override Crypto::DataFlowNode getOutputNode() { diff --git a/cpp/ql/lib/experimental/semmle/code/cpp/security/PrivateCleartextWrite.qll b/cpp/ql/lib/experimental/semmle/code/cpp/security/PrivateCleartextWrite.qll index 99cd8bfb7fdb..e6495f9a2aa7 100644 --- a/cpp/ql/lib/experimental/semmle/code/cpp/security/PrivateCleartextWrite.qll +++ b/cpp/ql/lib/experimental/semmle/code/cpp/security/PrivateCleartextWrite.qll @@ -42,6 +42,8 @@ module PrivateCleartextWrite { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } module WriteFlow = TaintTracking::Global; diff --git a/cpp/ql/lib/ext/Oracle.oci.model.yml b/cpp/ql/lib/ext/Oracle.oci.model.yml new file mode 100644 index 000000000000..eb172fcdb59a --- /dev/null +++ b/cpp/ql/lib/ext/Oracle.oci.model.yml @@ -0,0 +1,8 @@ +# partial model of the Oracle Call Interface (OCI) library +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: sinkModel + data: # namespace, type, subtypes, name, signature, ext, input, kind, provenance + - ["", "", False, "OCIStmtPrepare", "", "", "Argument[*2]", "sql-injection", "manual"] + - ["", "", False, "OCIStmtPrepare2", "", "", "Argument[*3]", "sql-injection", "manual"] diff --git a/cpp/ql/lib/ext/generated/brotli/brotli.model.yml b/cpp/ql/lib/ext/generated/brotli/brotli.model.yml new file mode 100644 index 000000000000..49a1f947af00 --- /dev/null +++ b/cpp/ql/lib/ext/generated/brotli/brotli.model.yml @@ -0,0 +1,480 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "AttachPreparedDictionary", "(CompoundDictionary *,const PreparedDictionary *)", "", "Argument[1]", "Argument[*0].Field[**chunk_source]", "taint", "dfc-generated"] + - ["", "", True, "AttachPreparedDictionary", "(CompoundDictionary *,const PreparedDictionary *)", "", "Argument[1]", "Argument[*0].Field[*chunk_source]", "taint", "dfc-generated"] + - ["", "", True, "AttachPreparedDictionary", "(CompoundDictionary *,const PreparedDictionary *)", "", "Argument[1]", "Argument[*0].Field[*chunks]", "value", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*total_count_]", "value", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[*4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[*4]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[*6]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*0].Field[*index_left_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*0].Field[*index_right_or_value_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*total_count_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildCodeLengthsHuffmanTable", "(HuffmanCode *,const uint8_t *const,uint16_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*10]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*2].Field[**types]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*2].Field[*types]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*3].Field[**types]", "Argument[*12]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*3].Field[*types]", "Argument[*12]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*4].Field[**types]", "Argument[*13]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*4].Field[*types]", "Argument[*13]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*5]", "Argument[*11].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*5]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[10]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[11]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[12]", "Argument[*12]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[13]", "Argument[*13]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[5]", "Argument[*11].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[5]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[6]", "Argument[*11].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[6]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[7]", "Argument[*11].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[7]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[8]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[9]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[*2]", "Argument[*0].Field[*value]", "value", "dfc-generated"] + - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[0]", "Argument[*0].Field[*value]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[2]", "Argument[*0].Field[*value]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[*1]", "Argument[*10].Field[**literal_histograms].Field[*bit_cost_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[*1]", "Argument[*10].Field[**literal_histograms].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[*1]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[1]", "Argument[*10].Field[**literal_histograms].Field[*bit_cost_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[1]", "Argument[*10].Field[**literal_histograms].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[1]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[2]", "Argument[*10].Field[**literal_histograms].Field[*bit_cost_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[2]", "Argument[*10].Field[**literal_histograms].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[2]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[3]", "Argument[*10].Field[**literal_histograms].Field[*bit_cost_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[3]", "Argument[*10].Field[**literal_histograms].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[3]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[5]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[6]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[8]", "Argument[*10].Field[*command_split].Field[**lengths]", "value", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[9]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlockGreedy", "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)", "", "Argument[*8]", "Argument[*11].Field[**literal_context_map]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlockGreedy", "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)", "", "Argument[7]", "Argument[*11].Field[**literal_context_map]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlockGreedy", "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)", "", "Argument[7]", "Argument[*11].Field[*literal_histograms_size]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlockGreedy", "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)", "", "Argument[8]", "Argument[*11].Field[**literal_context_map]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[*2]", "Argument[*0].Field[*value]", "value", "dfc-generated"] + - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[2]", "Argument[*0].Field[*value]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[*1]", "Argument[*4]", "value", "df-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[*1]", "Argument[*4]", "value", "df-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[*1]", "Argument[*4]", "value", "df-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*7]", "value", "df-generated"] + - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[*6]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*5]", "value", "df-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*9]", "value", "df-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*6]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*8]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[8]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliConvertBitDepthsToSymbols", "(const uint8_t *,size_t,uint16_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliConvertBitDepthsToSymbols", "(const uint8_t *,size_t,uint16_t *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[*7]", "Argument[*9].Field[*dist_extra_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[*7]", "Argument[*9].Field[*dist_prefix_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[0]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[0]", "Argument[*9].Field[*cmd_prefix_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[0]", "Argument[*9].Field[*copy_len_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[11]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[1]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[1]", "Argument[*9].Field[*cmd_prefix_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[1]", "Argument[*9].Field[*copy_len_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[7]", "Argument[*9].Field[*dist_extra_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[7]", "Argument[*9].Field[*dist_prefix_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[9]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHqZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHqZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[11]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHqZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[12]", "Argument[*12]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHqZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[*0]", "Argument[*3].Field[*total_count_]", "value", "dfc-generated"] + - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[0]", "Argument[*3].Field[*total_count_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[1]", "Argument[*3].Field[*index_right_or_value_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[1]", "Argument[*3].Field[*total_count_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[*memory_manager_].Field[***opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[*memory_manager_].Field[**opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[*memory_manager_].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[*memory_manager_].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[*memory_manager_].Field[*opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[11]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[12]", "Argument[*12]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[1]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderAttachDictionary", "(BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[*3]", "Argument[*0].Field[**dictionary].Field[**prefix]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderAttachDictionary", "(BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[2]", "Argument[*0].Field[**dictionary].Field[*prefix_size]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderAttachDictionary", "(BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[3]", "Argument[*0].Field[**dictionary].Field[*prefix]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[***memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[**dictionary].Field[***memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[**dictionary].Field[**memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[**memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[**dictionary].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[**dictionary].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[**dictionary].Field[*memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[*memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[*1]", "Argument[*0].Field[*used_input]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[*2]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[*4]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[1]", "Argument[*0].Field[*used_input]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[4]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderGetErrorCode", "(const BrotliDecoderState *,const BrotliDecoderStateInternal *)", "", "Argument[*0].Field[*error_code]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[2]", "Argument[*1].Field[*alphabet_size_max]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[3]", "Argument[*1].Field[*alphabet_size_limit]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[4]", "Argument[*1].Field[**codes]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[4]", "Argument[*1].Field[*codes]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[4]", "Argument[*1].Field[*num_htrees]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[**3]", "Argument[*0].Field[***metadata_callback_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[*3]", "Argument[*0].Field[**metadata_callback_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[1]", "Argument[*0].Field[*metadata_start_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[2]", "Argument[*0].Field[*metadata_chunk_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[3]", "Argument[*0].Field[*metadata_callback_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**3]", "Argument[*0].Field[***memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**3]", "Argument[*0].Field[**dictionary].Field[***memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*3]", "Argument[*0].Field[**dictionary].Field[**memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*3]", "Argument[*0].Field[**memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "Argument[*0].Field[**dictionary].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "Argument[*0].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "Argument[*0].Field[**dictionary].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "Argument[*0].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[3]", "Argument[*0].Field[**dictionary].Field[*memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[3]", "Argument[*0].Field[*memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderAttachPreparedDictionary", "(BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *)", "", "Argument[*1].Field[**dictionary]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderAttachPreparedDictionary", "(BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*4]", "Argument[*6]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*5]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*5]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[3]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[3]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[3]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[4]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[5]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[5]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompressStream", "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[**3]", "Argument[**5]", "value", "df-generated"] + - ["", "", True, "BrotliEncoderCompressStream", "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[**5]", "Argument[*0].Field[**next_out_]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompressStream", "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[**5]", "Argument[*0].Field[*last_bytes_]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[*memory_manager_].Field[***opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[*memory_manager_].Field[**opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[*memory_manager_].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[*memory_manager_].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[*memory_manager_].Field[*opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderEstimatePeakMemoryUsage", "(int,int,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderEstimatePeakMemoryUsage", "(int,int,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderGetPreparedDictionarySize", "(const BrotliEncoderPreparedDictionary *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderGetPreparedDictionarySize", "(const BrotliEncoderPreparedDictionary *)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderMaxCompressedSize", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**6]", "ReturnValue[*].Field[*memory_manager_].Field[***opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[**dictionary].Field[*num_items]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*6]", "ReturnValue[*].Field[*memory_manager_].Field[**opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[**dictionary].Field[*source_size]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[**dictionary].Field[*num_items]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[4]", "ReturnValue[*].Field[*memory_manager_].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[5]", "ReturnValue[*].Field[*memory_manager_].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[6]", "ReturnValue[*].Field[*memory_manager_].Field[*opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderSetParameter", "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[*3]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[*3]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[*4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[0]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[0]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[1]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[2]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[3]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[3]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliFindAllStaticDictionaryMatches", "(const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliFindAllStaticDictionaryMatches", "(const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceCommand", "(const HistogramCommand *,const HistogramCommand *,HistogramCommand *)", "", "Argument[*0]", "Argument[*2]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceCommand", "(const HistogramCommand *,const HistogramCommand *,HistogramCommand *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceCommand", "(const HistogramCommand *,const HistogramCommand *,HistogramCommand *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceDistance", "(const HistogramDistance *,const HistogramDistance *,HistogramDistance *)", "", "Argument[*0]", "Argument[*2]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceDistance", "(const HistogramDistance *,const HistogramDistance *,HistogramDistance *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceDistance", "(const HistogramDistance *,const HistogramDistance *,HistogramDistance *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceLiteral", "(const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *)", "", "Argument[*0]", "Argument[*2]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceLiteral", "(const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceLiteral", "(const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*4]", "Argument[*3]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[6]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*4]", "Argument[*3]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[6]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*4]", "Argument[*3]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[6]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexCommand", "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)", "", "Argument[*2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexCommand", "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexCommand", "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexCommand", "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexDistance", "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)", "", "Argument[*2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexDistance", "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexDistance", "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexDistance", "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexLiteral", "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)", "", "Argument[*2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexLiteral", "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexLiteral", "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexLiteral", "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[*0]", "Argument[*5]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[*2]", "Argument[*6]", "value", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[0]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[*0]", "Argument[*5]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[*2]", "Argument[*6]", "value", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[0]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[*0]", "Argument[*5]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[*2]", "Argument[*6]", "value", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[0]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliInitDistanceParams", "(BrotliDistanceParams *,uint32_t,uint32_t,int)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliInitDistanceParams", "(BrotliDistanceParams *,uint32_t,uint32_t,int)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**3]", "Argument[*0].Field[***opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*3]", "Argument[*0].Field[**opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "Argument[*0].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "Argument[*0].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[3]", "Argument[*0].Field[*opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliInitSharedEncoderDictionary", "(SharedEncoderDictionary *)", "", "Argument[*0].Field[*contextual].Field[*instance_]", "Argument[*0].Field[*contextual].Field[**dict]", "value", "dfc-generated"] + - ["", "", True, "BrotliOptimizeHuffmanCountsForRle", "(size_t,uint32_t *,uint8_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliPopulationCostCommand", "(const HistogramCommand *)", "", "Argument[*0].Field[*data_]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliPopulationCostCommand", "(const HistogramCommand *)", "", "Argument[*0].Field[*total_count_]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliPopulationCostDistance", "(const HistogramDistance *)", "", "Argument[*0].Field[*data_]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliPopulationCostDistance", "(const HistogramDistance *)", "", "Argument[*0].Field[*total_count_]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliPopulationCostLiteral", "(const HistogramLiteral *)", "", "Argument[*0].Field[*data_]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliPopulationCostLiteral", "(const HistogramLiteral *)", "", "Argument[*0].Field[*total_count_]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliSafeReadBits32Slow", "(BrotliBitReader *const,uint64_t,uint64_t *)", "", "Argument[1]", "Argument[*0].Field[*bit_pos_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliSafeReadBits32Slow", "(BrotliBitReader *const,uint64_t,uint64_t *)", "", "Argument[1]", "Argument[*0].Field[*val_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliSafeReadBits32Slow", "(BrotliBitReader *const,uint64_t,uint64_t *)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryAttach", "(BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[*3]", "Argument[*0].Field[**prefix]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryAttach", "(BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[2]", "Argument[*0].Field[*prefix_size]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryAttach", "(BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[3]", "Argument[*0].Field[*prefix]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[***memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[**memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[*memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliSplitBlock", "(MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *)", "", "Argument[*1].Field[*insert_len_]", "Argument[*7].Field[**lengths]", "taint", "dfc-generated"] + - ["", "", True, "BrotliSplitBlock", "(MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliSplitBlock", "(MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *)", "", "Argument[2]", "Argument[*8].Field[**lengths]", "value", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[*0]", "Argument[*2].Field[*total_count_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[*0]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[*3]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*2].Field[*total_count_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[3]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[*13]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[13]", "Argument[*13]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[13]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[14]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[1]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[2]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[3]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[5]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[7]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[*9]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[1]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[2]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[3]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[5]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[*9]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[1]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[2]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[3]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[5]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[*1]", "Argument[*6]", "value", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[*5]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[1]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[2]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[3]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[3]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[4]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[5]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[*1]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[*0]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[0]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliComputeShortestPath", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *)", "", "Argument[1]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliComputeShortestPath", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[0]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "CreatePreparedDictionary", "(MemoryManager *,const uint8_t *,size_t)", "", "Argument[*1]", "ReturnValue[*].Field[*num_items]", "taint", "dfc-generated"] + - ["", "", True, "CreatePreparedDictionary", "(MemoryManager *,const uint8_t *,size_t)", "", "Argument[1]", "ReturnValue[*].Field[*num_items]", "taint", "dfc-generated"] + - ["", "", True, "CreatePreparedDictionary", "(MemoryManager *,const uint8_t *,size_t)", "", "Argument[2]", "ReturnValue[*].Field[*source_size]", "value", "dfc-generated"] diff --git a/cpp/ql/lib/ext/generated/curl/curl.model.yml b/cpp/ql/lib/ext/generated/curl/curl.model.yml new file mode 100644 index 000000000000..847b0a10e46b --- /dev/null +++ b/cpp/ql/lib/ext/generated/curl/curl.model.yml @@ -0,0 +1,959 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "Curl_GetFTPResponse", "(Curl_easy *,ssize_t *,int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_GetFTPResponse", "(Curl_easy *,ssize_t *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_HMAC_final", "(HMAC_context *,unsigned char *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_HMAC_init", "(const HMAC_params *,const unsigned char *,unsigned int)", "", "Argument[0]", "ReturnValue[*].Field[**hashctxt1].Field[*hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_HMAC_init", "(const HMAC_params *,const unsigned char *,unsigned int)", "", "Argument[0]", "ReturnValue[*].Field[**hashctxt2].Field[*hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_HMAC_init", "(const HMAC_params *,const unsigned char *,unsigned int)", "", "Argument[0]", "ReturnValue[*].Field[*hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_MD5_init", "(const MD5_params *)", "", "Argument[*0]", "ReturnValue[*].Field[**md5_hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_MD5_init", "(const MD5_params *)", "", "Argument[0]", "ReturnValue[*].Field[*md5_hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_add_custom_headers", "(Curl_easy *,bool,dynbuf *)", "", "Argument[*2].Field[*allc]", "Argument[*2].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_addrinfo_callback", "(Curl_easy *,int,Curl_addrinfo *)", "", "Argument[*2]", "Argument[2]", "taint", "df-generated"] + - ["", "", True, "Curl_addrinfo_callback", "(Curl_easy *,int,Curl_addrinfo *)", "", "Argument[2]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_alpn_set_negotiated", "(Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t)", "", "Argument[*3]", "Argument[*2].Field[*negotiated].Field[**alpn]", "value", "dfc-generated"] + - ["", "", True, "Curl_alpn_set_negotiated", "(Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t)", "", "Argument[3]", "Argument[*2].Field[*negotiated].Field[**alpn]", "taint", "dfc-generated"] + - ["", "", True, "Curl_alpn_to_proto_buf", "(alpn_proto_buf *,const alpn_spec *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_alpn_to_proto_str", "(alpn_proto_buf *,const alpn_spec *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_altsvc_cleanup", "(altsvcinfo **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_altsvc_ctrl", "(altsvcinfo *,const long)", "", "Argument[1]", "Argument[*0].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "Curl_altsvc_parse", "(Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_attach_connection", "(Curl_easy *,connectdata *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_attach_connection", "(Curl_easy *,connectdata *)", "", "Argument[1]", "Argument[*0].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_external_message", "(const char *,bufref *)", "", "Argument[*0]", "Argument[*1].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_external_message", "(const char *,bufref *)", "", "Argument[0]", "Argument[*1].Field[*ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_login_message", "(const char *,bufref *)", "", "Argument[*0]", "Argument[*1].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_login_message", "(const char *,bufref *)", "", "Argument[0]", "Argument[*1].Field[*ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_ntlm_type3_message", "(Curl_easy *,const char *,const char *,ntlmdata *,bufref *)", "", "Argument[*1]", "Argument[*4].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_ntlm_type3_message", "(Curl_easy *,const char *,const char *,ntlmdata *,bufref *)", "", "Argument[1]", "Argument[*4].Field[**ptr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_create_ntlm_type3_message", "(Curl_easy *,const char *,const char *,ntlmdata *,bufref *)", "", "Argument[1]", "Argument[*4].Field[*len]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[*0]", "Argument[*3].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[*1]", "Argument[*3].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[*2]", "Argument[*3].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[0]", "Argument[*3].Field[**ptr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[1]", "Argument[*3].Field[**ptr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[2]", "Argument[*3].Field[**ptr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_decode_digest_http_message", "(const char *,digestdata *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_decode_ntlm_type2_message", "(Curl_easy *,const bufref *,ntlmdata *)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[*0]", "Argument[**3]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[*0]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufcp_init", "(bufc_pool *,size_t,size_t)", "", "Argument[1]", "Argument[*0].Field[*chunk_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufcp_init", "(bufc_pool *,size_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*spare_max]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_cread", "(bufq *,char *,size_t,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_cread", "(bufq *,char *,size_t,size_t *)", "", "Argument[2]", "Argument[*0].Field[**head].Field[*r_offset]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_cread", "(bufq *,char *,size_t,size_t *)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_cread", "(bufq *,char *,size_t,size_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_cwrite", "(bufq *,const char *,size_t,size_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_init2", "(bufq *,size_t,size_t,int)", "", "Argument[1]", "Argument[*0].Field[*chunk_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_init2", "(bufq *,size_t,size_t,int)", "", "Argument[2]", "Argument[*0].Field[*max_chunks]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_init2", "(bufq *,size_t,size_t,int)", "", "Argument[3]", "Argument[*0].Field[*opts]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_init", "(bufq *,size_t,size_t)", "", "Argument[1]", "Argument[*0].Field[*chunk_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_init", "(bufq *,size_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*max_chunks]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[*1].Field[*chunk_size]", "Argument[*0].Field[*chunk_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[*1]", "Argument[*0].Field[**pool]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[1]", "Argument[*0].Field[*pool]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[2]", "Argument[*0].Field[*max_chunks]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[3]", "Argument[*0].Field[*opts]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_len", "(const bufq *)", "", "Argument[*0].Field[**head].Field[*r_offset]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_len", "(const bufq *)", "", "Argument[*0].Field[**head].Field[*w_offset]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_pass", "(bufq *,Curl_bufq_writer *,void *,CURLcode *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_peek", "(bufq *,const unsigned char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "Curl_bufq_peek", "(bufq *,const unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_bufq_peek", "(bufq *,const unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_bufq_peek_at", "(bufq *,size_t,const unsigned char **,size_t *)", "", "Argument[1]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_peek_at", "(bufq *,size_t,const unsigned char **,size_t *)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_peek_at", "(bufq *,size_t,const unsigned char **,size_t *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_read", "(bufq *,unsigned char *,size_t,CURLcode *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_read", "(bufq *,unsigned char *,size_t,CURLcode *)", "", "Argument[2]", "Argument[*0].Field[**head].Field[*r_offset]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_read", "(bufq *,unsigned char *,size_t,CURLcode *)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_read", "(bufq *,unsigned char *,size_t,CURLcode *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_sipn", "(bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *)", "", "Argument[3]", "Argument[*3].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_sipn", "(bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_skip", "(bufq *,size_t)", "", "Argument[1]", "Argument[*0].Field[**head].Field[*r_offset]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_slurp", "(bufq *,Curl_bufq_reader *,void *,CURLcode *)", "", "Argument[2]", "Argument[*2].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_slurp", "(bufq *,Curl_bufq_reader *,void *,CURLcode *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_unwrite", "(bufq *,size_t)", "", "Argument[1]", "Argument[*0].Field[**tail].Field[*w_offset]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_write", "(bufq *,const unsigned char *,size_t,CURLcode *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_write_pass", "(bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_write_pass", "(bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufref_len", "(const bufref *)", "", "Argument[*0].Field[*len]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_memdup", "(bufref *,const void *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_memdup", "(bufref *,const void *,size_t)", "", "Argument[1]", "Argument[*0].Field[**ptr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufref_memdup", "(bufref *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*len]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_ptr", "(const bufref *)", "", "Argument[*0].Field[**ptr]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_ptr", "(const bufref *)", "", "Argument[*0].Field[*ptr]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_set", "(bufref *,const void *,size_t,..(*)(..))", "", "Argument[*1]", "Argument[*0].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_set", "(bufref *,const void *,size_t,..(*)(..))", "", "Argument[1]", "Argument[*0].Field[*ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_set", "(bufref *,const void *,size_t,..(*)(..))", "", "Argument[2]", "Argument[*0].Field[*len]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_set", "(bufref *,const void *,size_t,..(*)(..))", "", "Argument[3]", "Argument[*0].Field[*dtor]", "value", "dfc-generated"] + - ["", "", True, "Curl_bump_headersize", "(Curl_easy *,size_t,bool)", "", "Argument[1]", "Argument[*0].Field[*info].Field[*header_size]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bump_headersize", "(Curl_easy *,size_t,bool)", "", "Argument[1]", "Argument[*0].Field[*req].Field[*allheadercount]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bump_headersize", "(Curl_easy *,size_t,bool)", "", "Argument[1]", "Argument[*0].Field[*req].Field[*headerbytecount]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cache_addr", "(Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool)", "", "Argument[*2]", "ReturnValue[*].Field[*hostname]", "value", "dfc-generated"] + - ["", "", True, "Curl_cache_addr", "(Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool)", "", "Argument[2]", "ReturnValue[*].Field[*hostname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cache_addr", "(Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool)", "", "Argument[4]", "ReturnValue[*].Field[*hostport]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[**2]", "Argument[**0].Field[***ctx]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[*1]", "Argument[**0].Field[**cft]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[*2]", "Argument[**0].Field[**ctx]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[1]", "Argument[**0].Field[*cft]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[2]", "Argument[**0].Field[*ctx]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_https_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_https_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cf_https_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_socket_peek", "(Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *)", "", "Argument[*0]", "Argument[**3]", "taint", "df-generated"] + - ["", "", True, "Curl_cf_socket_peek", "(Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_cf_socket_peek", "(Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *)", "", "Argument[*0]", "Argument[*4]", "taint", "df-generated"] + - ["", "", True, "Curl_cf_tcp_create", "(Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int)", "", "Argument[4]", "Argument[**0].Field[**ctx].Field[*transport]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_udp_create", "(Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int)", "", "Argument[4]", "Argument[**0].Field[**ctx].Field[*transport]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_unix_create", "(Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int)", "", "Argument[4]", "Argument[**0].Field[**ctx].Field[*transport]", "value", "dfc-generated"] + - ["", "", True, "Curl_client_read", "(Curl_easy *,char *,size_t,size_t *,bool *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_client_read", "(Curl_easy *,char *,size_t,size_t *,bool *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_close", "(Curl_easy **)", "", "Argument[*0]", "Argument[**0]", "value", "df-generated"] + - ["", "", True, "Curl_close", "(Curl_easy **)", "", "Argument[0]", "Argument[**0]", "taint", "df-generated"] + - ["", "", True, "Curl_close", "(Curl_easy **)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_conn_cf_add", "(Curl_easy *,connectdata *,int,Curl_cfilter *)", "", "Argument[*3]", "Argument[*1].Field[**cfilter]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_add", "(Curl_easy *,connectdata *,int,Curl_cfilter *)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_add", "(Curl_easy *,connectdata *,int,Curl_cfilter *)", "", "Argument[1]", "Argument[*3].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_add", "(Curl_easy *,connectdata *,int,Curl_cfilter *)", "", "Argument[3]", "Argument[*1].Field[*cfilter]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_adjust_pollset", "(Curl_cfilter *,Curl_easy *,easy_pollset *)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_adjust_pollset", "(Curl_cfilter *,Curl_easy *,easy_pollset *)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_cntrl", "(Curl_cfilter *,Curl_easy *,bool,int,int,void *)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_cntrl", "(Curl_cfilter *,Curl_easy *,bool,int,int,void *)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_discard_all", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[*cfilter]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_discard_chain", "(Curl_cfilter **,Curl_easy *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_insert_after", "(Curl_cfilter *,Curl_cfilter *)", "", "Argument[1]", "Argument[*0].Field[*next]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_is_ssl", "(Curl_cfilter *)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_is_ssl", "(Curl_cfilter *)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_poll", "(Curl_cfilter *,Curl_easy *,timediff_t)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_poll", "(Curl_cfilter *,Curl_easy *,timediff_t)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_connect", "(Curl_easy *,int,bool,bool *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_get_host", "(Curl_easy *,int,const char **,const char **,int *)", "", "Argument[*0].Field[**conn].Field[*remote_port]", "Argument[*4]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_get_socket", "(Curl_easy *,int)", "", "Argument[*0].Field[**conn].Field[*sock]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_get_socket", "(Curl_easy *,int)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_is_http2", "(const Curl_easy *,const connectdata *,int)", "", "Argument[*1].Field[**cfilter].Field[**next]", "Argument[*1].Field[**cfilter]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_is_ssl", "(connectdata *,int)", "", "Argument[*0].Field[**cfilter].Field[**next]", "Argument[*0].Field[**cfilter]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_seems_dead", "(connectdata *,Curl_easy *,curltime *)", "", "Argument[0]", "Argument[*1].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_seems_dead", "(connectdata *,Curl_easy *,curltime *)", "", "Argument[1]", "Argument[*1].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_seems_dead", "(connectdata *,Curl_easy *,curltime *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *,int)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_shutdown_timeleft", "(connectdata *,curltime *)", "", "Argument[*0].Field[*shutdown].Field[*timeout_ms]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_shutdown_timeleft", "(connectdata *,curltime *)", "", "Argument[*1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_shutdown_timeleft", "(connectdata *,curltime *)", "", "Argument[*1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_shutdown_timeleft", "(connectdata *,curltime *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[*3]", "Argument[*1].Field[*sock]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[2]", "Argument[*1].Field[*cfilter]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[3]", "Argument[*1].Field[*sock]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[*2]", "Argument[*1].Field[*keepalive]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[1]", "Argument[*0].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[2]", "Argument[*1].Field[*keepalive]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_connect", "(Curl_easy *,bool *,bool *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_connect", "(Curl_easy *,bool *,bool *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_connect_only_attach", "(Curl_easy *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_connect_only_attach", "(Curl_easy *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cookie_add", "(Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool)", "", "Argument[*6]", "ReturnValue[*].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "Curl_cookie_add", "(Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool)", "", "Argument[6]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cookie_getlist", "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)", "", "Argument[*2]", "Argument[*1].Field[*cookielist]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cookie_getlist", "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)", "", "Argument[2]", "Argument[*1].Field[*cookielist]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cookie_getlist", "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)", "", "Argument[5]", "Argument[*5].Field[**_head].Field[*_list]", "value", "dfc-generated"] + - ["", "", True, "Curl_cookie_getlist", "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)", "", "Argument[5]", "Argument[*5].Field[**_tail].Field[*_list]", "value", "dfc-generated"] + - ["", "", True, "Curl_cookie_init", "(Curl_easy *,const char *,CookieInfo *,bool)", "", "Argument[*2]", "ReturnValue[*]", "value", "df-generated"] + - ["", "", True, "Curl_cookie_init", "(Curl_easy *,const char *,CookieInfo *,bool)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_cookie_init", "(Curl_easy *,const char *,CookieInfo *,bool)", "", "Argument[3]", "Argument[*2].Field[*newsession]", "value", "dfc-generated"] + - ["", "", True, "Curl_cookie_init", "(Curl_easy *,const char *,CookieInfo *,bool)", "", "Argument[3]", "ReturnValue[*].Field[*newsession]", "value", "dfc-generated"] + - ["", "", True, "Curl_copy_header_value", "(const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_copy_header_value", "(const char *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cpool_add_conn", "(Curl_easy *,connectdata *)", "", "Argument[1]", "Argument[*1].Field[*cpool_node].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_check_limits", "(Curl_easy *,connectdata *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_disconnect", "(Curl_easy *,connectdata *,bool)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_disconnect", "(Curl_easy *,connectdata *,bool)", "", "Argument[1]", "Argument[*0].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_disconnect", "(Curl_easy *,connectdata *,bool)", "", "Argument[1]", "Argument[*1].Field[*cpool_node].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_do_locked", "(Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_do_locked", "(Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *)", "", "Argument[1]", "Argument[*0].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_do_locked", "(Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *)", "", "Argument[1]", "Argument[*1].Field[*cpool_node].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[*2]", "Argument[*0].Field[**idata].Field[**multi]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[*2]", "Argument[*0].Field[**multi]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[*3]", "Argument[*0].Field[**share]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[1]", "Argument[*0].Field[*disconnect_cb]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[2]", "Argument[*0].Field[**idata].Field[*multi]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[2]", "Argument[*0].Field[*multi]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[3]", "Argument[*0].Field[*share]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[4]", "Argument[*0].Field[*dest2bundle].Field[*slots]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_prune_dead", "(Curl_easy *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_setfds", "(cpool *,fd_set *,fd_set *,int *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cpool_upkeep", "(void *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_upkeep", "(void *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_add", "(Curl_easy *,Curl_creader *)", "", "Argument[*0].Field[*req].Field[**reader_stack]", "Argument[*1].Field[**next]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_add", "(Curl_easy *,Curl_creader *)", "", "Argument[*0].Field[*req].Field[*reader_stack]", "Argument[*1].Field[*next]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_create", "(Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase)", "", "Argument[*2]", "Argument[**0].Field[**crt]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_create", "(Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase)", "", "Argument[2]", "Argument[**0].Field[*crt]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_create", "(Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase)", "", "Argument[3]", "Argument[**0].Field[*phase]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_get_by_type", "(Curl_easy *,const Curl_crtype *)", "", "Argument[*0].Field[*req].Field[**reader_stack]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_get_by_type", "(Curl_easy *,const Curl_crtype *)", "", "Argument[*0].Field[*req].Field[*reader_stack]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_set", "(Curl_easy *,Curl_creader *)", "", "Argument[1]", "Argument[*0].Field[*req].Field[*reader_stack]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_set_rewind", "(Curl_easy *,bool)", "", "Argument[1]", "Argument[*0].Field[*req].Field[*rewind_read]", "taint", "dfc-generated"] + - ["", "", True, "Curl_creader_will_rewind", "(Curl_easy *)", "", "Argument[*0].Field[*req].Field[*rewind_read]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_cwriter_add", "(Curl_easy *,Curl_cwriter *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_cwriter_create", "(Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase)", "", "Argument[*2]", "Argument[**0].Field[**cwt]", "value", "dfc-generated"] + - ["", "", True, "Curl_cwriter_create", "(Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase)", "", "Argument[2]", "Argument[**0].Field[*cwt]", "value", "dfc-generated"] + - ["", "", True, "Curl_cwriter_create", "(Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase)", "", "Argument[3]", "Argument[**0].Field[*phase]", "value", "dfc-generated"] + - ["", "", True, "Curl_cwriter_get_by_name", "(Curl_easy *,const char *)", "", "Argument[*0].Field[*req].Field[**writer_stack]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_cwriter_get_by_name", "(Curl_easy *,const char *)", "", "Argument[*0].Field[*req].Field[*writer_stack]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_cwriter_get_by_type", "(Curl_easy *,const Curl_cwtype *)", "", "Argument[*0].Field[*req].Field[**writer_stack]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_cwriter_get_by_type", "(Curl_easy *,const Curl_cwtype *)", "", "Argument[*0].Field[*req].Field[*writer_stack]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_add", "(dynbuf *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**bufr]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_add", "(dynbuf *,const char *)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**bufr]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*allc]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*leng]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dyn_free", "(dynbuf *)", "", "Argument[*0].Field[*allc]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_init", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*toobig]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_len", "(const dynbuf *)", "", "Argument[*0].Field[*leng]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_ptr", "(const dynbuf *)", "", "Argument[*0].Field[**bufr]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_ptr", "(const dynbuf *)", "", "Argument[*0].Field[*bufr]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_setlen", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_tail", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dyn_tail", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_dyn_uptr", "(const dynbuf *)", "", "Argument[*0].Field[**bufr]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_uptr", "(const dynbuf *)", "", "Argument[*0].Field[*bufr]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_vaddf", "(dynbuf *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dyn_vprintf", "(dynbuf *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dynhds_add", "(dynhds *,const char *,size_t,const char *,size_t)", "", "Argument[*1]", "Argument[*0].Field[***hds].Field[**value]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_add", "(dynhds *,const char *,size_t,const char *,size_t)", "", "Argument[1]", "Argument[*0].Field[***hds].Field[**value]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dynhds_add", "(dynhds *,const char *,size_t,const char *,size_t)", "", "Argument[4]", "Argument[*0].Field[***hds].Field[*valuelen]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_add", "(dynhds *,const char *,size_t,const char *,size_t)", "", "Argument[4]", "Argument[*0].Field[*strs_len]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dynhds_cadd", "(dynhds *,const char *,const char *)", "", "Argument[*1]", "Argument[*0].Field[***hds].Field[**value]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_cadd", "(dynhds *,const char *,const char *)", "", "Argument[1]", "Argument[*0].Field[***hds].Field[**value]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dynhds_cget", "(dynhds *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_cget", "(dynhds *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_count", "(dynhds *)", "", "Argument[*0].Field[*hds_len]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_get", "(dynhds *,const char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_get", "(dynhds *,const char *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_getn", "(dynhds *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_dynhds_h1_add_line", "(dynhds *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_h1_add_line", "(dynhds *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_h1_add_line", "(dynhds *,const char *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_h1_cadd_line", "(dynhds *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_h1_cadd_line", "(dynhds *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_init", "(dynhds *,size_t,size_t)", "", "Argument[*0].Field[*hds_allc]", "Argument[*0].Field[*hds_len]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_init", "(dynhds *,size_t,size_t)", "", "Argument[*0].Field[*strs_len]", "Argument[*0].Field[*hds_allc]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_init", "(dynhds *,size_t,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_entries]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_init", "(dynhds *,size_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*max_strs_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_set_opts", "(dynhds *,int)", "", "Argument[1]", "Argument[*0].Field[*opts]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_to_nva", "(dynhds *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_to_nva", "(dynhds *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_eventfd", "(curl_socket_t[2],bool)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_fileinfo_cleanup", "(fileinfo *)", "", "Argument[*0].Field[*buf].Field[*allc]", "Argument[*0].Field[*buf].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_fopen", "(Curl_easy *,const char *,FILE **,char **)", "", "Argument[*1]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_fopen", "(Curl_easy *,const char *,FILE **,char **)", "", "Argument[1]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_fopen", "(Curl_easy *,const char *,FILE **,char **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ftp_parselist", "(char *,size_t,size_t,void *)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_ftp_parselist", "(char *,size_t,size_t,void *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_ftp_parselist_data_free", "(ftp_parselist_data **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ftp_parselist_geterror", "(ftp_parselist_data *)", "", "Argument[*0].Field[*error]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_get_line", "(dynbuf *,FILE *)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_get_pathname", "(const char **,char **,const char *)", "", "Argument[**0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_get_pathname", "(const char **,char **,const char *)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_get_pathname", "(const char **,char **,const char *)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_get_pathname", "(const char **,char **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_get_scheme_handler", "(const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_get_scheme_handler", "(const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_getdate_capped", "(const char *)", "", "Argument[*0]", "Argument[0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_getdate_capped", "(const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_getdate_capped", "(const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_getformdata", "(CURL *,curl_mimepart *,curl_httppost *,curl_read_callback)", "", "Argument[1]", "Argument[*1].Field[**arg].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_getformdata", "(CURL *,curl_mimepart *,curl_httppost *,curl_read_callback)", "", "Argument[1]", "Argument[*1].Field[**arg].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "Curl_getformdata", "(CURL *,curl_mimepart *,curl_httppost *,curl_read_callback)", "", "Argument[1]", "Argument[*1].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_getn_scheme_handler", "(const char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_getn_scheme_handler", "(const char *,size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_h1_req_parse_init", "(h1_req_parser *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_line_len]", "value", "dfc-generated"] + - ["", "", True, "Curl_h1_req_parse_init", "(h1_req_parser *,size_t)", "", "Argument[1]", "Argument[*0].Field[*scratch].Field[*toobig]", "value", "dfc-generated"] + - ["", "", True, "Curl_h1_req_parse_read", "(h1_req_parser *,const char *,size_t,const char *,int,CURLcode *)", "", "Argument[*3]", "Argument[*0].Field[**req].Field[**scheme]", "value", "dfc-generated"] + - ["", "", True, "Curl_h1_req_parse_read", "(h1_req_parser *,const char *,size_t,const char *,int,CURLcode *)", "", "Argument[3]", "Argument[*0].Field[**req].Field[**scheme]", "taint", "dfc-generated"] + - ["", "", True, "Curl_h1_req_parse_read", "(h1_req_parser *,const char *,size_t,const char *,int,CURLcode *)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[**3]", "ReturnValue[**]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[*3]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[3]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[**3]", "ReturnValue[**]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[*3]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[3]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_clean_with_criterium", "(Curl_hash *,void *,..(*)(..))", "", "Argument[*1].Field[*now]", "Argument[*1].Field[*oldest]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hash_count", "(Curl_hash *)", "", "Argument[*0].Field[*size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_init", "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)", "", "Argument[1]", "Argument[*0].Field[*slots]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_init", "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)", "", "Argument[2]", "Argument[*0].Field[*hash_func]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_init", "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)", "", "Argument[3]", "Argument[*0].Field[*comp_func]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_init", "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)", "", "Argument[4]", "Argument[*0].Field[*dtor]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_next_element", "(Curl_hash_iterator *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_hash_next_element", "(Curl_hash_iterator *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_hash_offt_init", "(Curl_hash *,size_t,Curl_hash_dtor)", "", "Argument[1]", "Argument[*0].Field[*slots]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_offt_init", "(Curl_hash *,size_t,Curl_hash_dtor)", "", "Argument[2]", "Argument[*0].Field[*dtor]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_offt_set", "(Curl_hash *,curl_off_t,void *)", "", "Argument[**2]", "ReturnValue[**]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_offt_set", "(Curl_hash *,curl_off_t,void *)", "", "Argument[*2]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_offt_set", "(Curl_hash *,curl_off_t,void *)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_start_iterate", "(Curl_hash *,Curl_hash_iterator *)", "", "Argument[*0]", "Argument[*1].Field[**hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_start_iterate", "(Curl_hash *,Curl_hash_iterator *)", "", "Argument[0]", "Argument[*1].Field[*hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_str", "(void *,size_t,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_hash_str", "(void *,size_t,size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_hash_str", "(void *,size_t,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_hexencode", "(const unsigned char *,size_t,unsigned char *,size_t)", "", "Argument[*0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hexencode", "(const unsigned char *,size_t,unsigned char *,size_t)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hexencode", "(const unsigned char *,size_t,unsigned char *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hmacit", "(const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *)", "", "Argument[*0].Field[*ctxtsize]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hmacit", "(const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *)", "", "Argument[*0]", "Argument[*5].Field[**hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_hmacit", "(const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *)", "", "Argument[0]", "Argument[*5].Field[*hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_hsts_cleanup", "(hsts **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http2_may_switch", "(Curl_easy *,connectdata *,int)", "", "Argument[*1].Field[**cfilter].Field[**next]", "Argument[*1].Field[**cfilter]", "value", "dfc-generated"] + - ["", "", True, "Curl_http2_request_upgrade", "(dynbuf *,Curl_easy *)", "", "Argument[*0].Field[*allc]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_http2_switch", "(Curl_easy *,connectdata *,int)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_http2_switch", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http2_switch", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"] + - ["", "", True, "Curl_http2_upgrade", "(Curl_easy *,connectdata *,int,const char *,size_t)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_http2_upgrade", "(Curl_easy *,connectdata *,int,const char *,size_t)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http2_upgrade", "(Curl_easy *,connectdata *,int,const char *,size_t)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"] + - ["", "", True, "Curl_http", "(Curl_easy *,bool *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_connect", "(Curl_easy *,bool *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_decode_status", "(int *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_decode_status", "(int *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_done", "(Curl_easy *,CURLcode,bool)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_http_getsock_do", "(Curl_easy *,connectdata *,curl_socket_t *)", "", "Argument[*0].Field[**conn].Field[*sock]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_method", "(Curl_easy *,connectdata *,const char **,Curl_HttpReq *)", "", "Argument[*0]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "Curl_http_method", "(Curl_easy *,connectdata *,const char **,Curl_HttpReq *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_http_method", "(Curl_easy *,connectdata *,const char **,Curl_HttpReq *)", "", "Argument[*0]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_http_proxy_get_destination", "(Curl_cfilter *,const char **,int *,bool *)", "", "Argument[*1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_proxy_get_destination", "(Curl_cfilter *,const char **,int *,bool *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_proxy_get_destination", "(Curl_cfilter *,const char **,int *,bool *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_req_make2", "(httpreq **,const char *,size_t,CURLU *,const char *)", "", "Argument[*1]", "Argument[**0].Field[*method]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_req_make2", "(httpreq **,const char *,size_t,CURLU *,const char *)", "", "Argument[1]", "Argument[**0].Field[*method]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[*1]", "Argument[**0].Field[*method]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[*3]", "Argument[**0].Field[**scheme]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[*5]", "Argument[**0].Field[**authority]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[*7]", "Argument[**0].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[1]", "Argument[**0].Field[*method]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[3]", "Argument[**0].Field[**scheme]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[5]", "Argument[**0].Field[**authority]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[7]", "Argument[**0].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_resp_make", "(http_resp **,int,const char *)", "", "Argument[1]", "Argument[**0].Field[*status]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hd", "(Curl_easy *,const char *,size_t,bool)", "", "Argument[2]", "Argument[*0].Field[*info].Field[*header_size]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hd", "(Curl_easy *,const char *,size_t,bool)", "", "Argument[2]", "Argument[*0].Field[*req].Field[*allheadercount]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hd", "(Curl_easy *,const char *,size_t,bool)", "", "Argument[2]", "Argument[*0].Field[*req].Field[*headerbytecount]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hds", "(Curl_easy *,const char *,size_t,size_t *)", "", "Argument[*1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hds", "(Curl_easy *,const char *,size_t,size_t *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hds", "(Curl_easy *,const char *,size_t,size_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hds", "(Curl_easy *,const char *,size_t,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_httpchunk_free", "(Curl_easy *,Curl_chunker *)", "", "Argument[*1].Field[*trailer].Field[*allc]", "Argument[*1].Field[*trailer].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_httpchunk_init", "(Curl_easy *,Curl_chunker *,bool)", "", "Argument[2]", "Argument[*1].Field[*ignore_body]", "value", "dfc-generated"] + - ["", "", True, "Curl_httpchunk_read", "(Curl_easy *,Curl_chunker *,char *,size_t,size_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_httpchunk_reset", "(Curl_easy *,Curl_chunker *,bool)", "", "Argument[2]", "Argument[*1].Field[*ignore_body]", "value", "dfc-generated"] + - ["", "", True, "Curl_init_dnscache", "(Curl_hash *,size_t)", "", "Argument[1]", "Argument[*0].Field[*slots]", "value", "dfc-generated"] + - ["", "", True, "Curl_init_userdefined", "(Curl_easy *)", "", "Argument[*0].Field[*set].Field[*ssl]", "Argument[*0].Field[*set].Field[*proxy_ssl]", "value", "dfc-generated"] + - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[*2]", "ReturnValue[*].Field[**ai_canonname]", "value", "dfc-generated"] + - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[0]", "ReturnValue[*].Field[*ai_family]", "value", "dfc-generated"] + - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[2]", "ReturnValue[*].Field[**ai_canonname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_is_absolute_url", "(const char *,char *,size_t,bool)", "", "Argument[*0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_is_absolute_url", "(const char *,char *,size_t,bool)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_is_absolute_url", "(const char *,char *,size_t,bool)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[**1]", "Argument[*0].Field[**_head].Field[***_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[**1]", "Argument[*0].Field[**_tail].Field[***_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[**1]", "Argument[*2].Field[***_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*0].Field[**_head].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*0].Field[**_tail].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*2].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*0].Field[**_head].Field[*_list]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*0].Field[**_tail].Field[*_list]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*2].Field[*_list]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*0].Field[**_head].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*0].Field[**_tail].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*2].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_count", "(Curl_llist *)", "", "Argument[*0].Field[*_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_head", "(Curl_llist *)", "", "Argument[*0].Field[**_head]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_head", "(Curl_llist *)", "", "Argument[*0].Field[*_head]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_init", "(Curl_llist *,Curl_llist_dtor)", "", "Argument[1]", "Argument[*0].Field[*_dtor]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[**2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[**2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[**2]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*0]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*2]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*3]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[2]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[3]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_memdup0", "(const char *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_memdup0", "(const char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[**0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[*0]", "Argument[**0]", "value", "dfc-generated"] + - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "Curl_mime_cleanpart", "(curl_mimepart *)", "", "Argument[0]", "Argument[*0].Field[**arg].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_mime_cleanpart", "(curl_mimepart *)", "", "Argument[0]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_mime_duppart", "(Curl_easy *,curl_mimepart *,const curl_mimepart *)", "", "Argument[1]", "Argument[*1].Field[**arg].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_mime_duppart", "(Curl_easy *,curl_mimepart *,const curl_mimepart *)", "", "Argument[1]", "Argument[*1].Field[**arg].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "Curl_mime_duppart", "(Curl_easy *,curl_mimepart *,const curl_mimepart *)", "", "Argument[1]", "Argument[*1].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_mime_read", "(char *,size_t,size_t,void *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_mime_set_subparts", "(curl_mimepart *,curl_mime *,int)", "", "Argument[1]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_add_perform", "(Curl_multi *,Curl_easy *,connectdata *)", "", "Argument[0]", "Argument[*1].Field[*multi]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_add_perform", "(Curl_multi *,Curl_easy *,connectdata *)", "", "Argument[1]", "Argument[*1].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_add_perform", "(Curl_multi *,Curl_easy *,connectdata *)", "", "Argument[1]", "Argument[*1].Field[*multi_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_add_perform", "(Curl_multi *,Curl_easy *,connectdata *)", "", "Argument[2]", "Argument[*1].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_handle", "(size_t,size_t,size_t,size_t)", "", "Argument[0]", "ReturnValue[*].Field[*sockhash].Field[*slots]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_handle", "(size_t,size_t,size_t,size_t)", "", "Argument[2]", "ReturnValue[*].Field[*hostcache].Field[*slots]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_handle", "(size_t,size_t,size_t,size_t)", "", "Argument[3]", "ReturnValue[*].Field[**ssl_scache].Field[*peer_count]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_max_concurrent_streams", "(Curl_multi *)", "", "Argument[*0].Field[*max_concurrent_streams]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_pollset_ev", "(Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *)", "", "Argument[1]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_xfer_buf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "Curl_multi_xfer_buf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_multi_xfer_buf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_multi_xfer_sockbuf_borrow", "(Curl_easy *,size_t,char **)", "", "Argument[*0].Field[**multi].Field[**xfer_sockbuf]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_xfer_sockbuf_borrow", "(Curl_easy *,size_t,char **)", "", "Argument[*0].Field[**multi].Field[*xfer_sockbuf]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_xfer_sockbuf_borrow", "(Curl_easy *,size_t,char **)", "", "Argument[1]", "Argument[*0].Field[**multi].Field[*xfer_sockbuf_len]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_xfer_ulbuf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "Curl_multi_xfer_ulbuf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_multi_xfer_ulbuf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_netrc_cleanup", "(store_netrc *)", "", "Argument[*0].Field[*filebuf].Field[*allc]", "Argument[*0].Field[*filebuf].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_node_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_node_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "Curl_node_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_node_llist", "(Curl_llist_node *)", "", "Argument[*0].Field[**_list]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_node_llist", "(Curl_llist_node *)", "", "Argument[*0].Field[*_list]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_node_next", "(Curl_llist_node *)", "", "Argument[*0].Field[**_next]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_node_next", "(Curl_llist_node *)", "", "Argument[*0].Field[*_next]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_node_take_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_node_take_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "Curl_node_take_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_ntlm_core_mk_lm_hash", "(const char *,unsigned char *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ntlm_core_mk_lmv2_resp", "(unsigned char *,unsigned char *,unsigned char *,unsigned char *)", "", "Argument[*1]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "Curl_ntlm_core_mk_lmv2_resp", "(unsigned char *,unsigned char *,unsigned char *,unsigned char *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ntlm_core_mk_nt_hash", "(const char *,unsigned char *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ntlm_core_mk_ntlmv2_resp", "(unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *)", "", "Argument[*2]", "Argument[*4]", "taint", "df-generated"] + - ["", "", True, "Curl_on_disconnect", "(Curl_easy *,connectdata *,bool)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_once_resolved", "(Curl_easy *,bool *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[*0]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[*0]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[*0]", "Argument[**3]", "value", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[0]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[0]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[0]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[*0]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[*0]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[*0]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[0]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[0]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[0]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[1]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[1]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parsenetrc", "(store_netrc *,const char *,char **,char **,char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_pgrsEarlyData", "(Curl_easy *,curl_off_t)", "", "Argument[1]", "Argument[*0].Field[*progress].Field[*earlydata_sent]", "value", "dfc-generated"] + - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[*0].Field[*cur_size]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[*0].Field[*limit].Field[*start_size]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[2].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[2].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pgrsTimeWas", "(Curl_easy *,timerid,curltime)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_poll", "(pollfd[],unsigned int,timediff_t)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_pollfds_add_ps", "(curl_pollfds *,easy_pollset *)", "", "Argument[*1].Field[*sockets]", "Argument[*0].Field[**pfds].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollfds_add_sock", "(curl_pollfds *,curl_socket_t,short)", "", "Argument[1]", "Argument[*0].Field[**pfds].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollfds_add_sock", "(curl_pollfds *,curl_socket_t,short)", "", "Argument[2]", "Argument[*0].Field[**pfds].Field[*events]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollfds_init", "(curl_pollfds *,pollfd *,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**pfds]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollfds_init", "(curl_pollfds *,pollfd *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*pfds]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollfds_init", "(curl_pollfds *,pollfd *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*count]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollset_add_socks", "(Curl_easy *,easy_pollset *,..(*)(..))", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_pollset_change", "(Curl_easy *,easy_pollset *,curl_socket_t,int,int)", "", "Argument[2]", "Argument[*1].Field[*sockets]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollset_change", "(Curl_easy *,easy_pollset *,curl_socket_t,int,int)", "", "Argument[3]", "Argument[*1].Field[*actions]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollset_change", "(Curl_easy *,easy_pollset *,curl_socket_t,int,int)", "", "Argument[4]", "Argument[*1].Field[*actions]", "taint", "dfc-generated"] + - ["", "", True, "Curl_pollset_check", "(Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *)", "", "Argument[*4]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollset_check", "(Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *)", "", "Argument[4]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_pollset_check", "(Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_pollset_set", "(Curl_easy *,easy_pollset *,curl_socket_t,bool,bool)", "", "Argument[2]", "Argument[*1].Field[*sockets]", "value", "dfc-generated"] + - ["", "", True, "Curl_pp_flushsend", "(Curl_easy *,pingpong *)", "", "Argument[*1].Field[*sendsize]", "Argument[*1].Field[*sendleft]", "value", "dfc-generated"] + - ["", "", True, "Curl_pp_getsock", "(Curl_easy *,pingpong *,curl_socket_t *)", "", "Argument[*0].Field[**conn].Field[*sock]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "Curl_pp_readresp", "(Curl_easy *,int,pingpong *,int *,size_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "df-generated"] + - ["", "", True, "Curl_pp_state_timeout", "(Curl_easy *,pingpong *,bool)", "", "Argument[*0].Field[*set].Field[*server_response_timeout]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pp_state_timeout", "(Curl_easy *,pingpong *,bool)", "", "Argument[*0].Field[*set].Field[*timeout]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pp_vsendf", "(Curl_easy *,pingpong *,const char *,va_list)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_psl_use", "(Curl_easy *)", "", "Argument[*0].Field[**psl].Field[**psl]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_psl_use", "(Curl_easy *)", "", "Argument[*0].Field[**psl].Field[*psl]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_rand_alnum", "(Curl_easy *,unsigned char *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_rand_bytes", "(Curl_easy *,unsigned char *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_rand_hex", "(Curl_easy *,unsigned char *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_raw_tolower", "(char)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_raw_toupper", "(char)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_read16_be", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_read16_be", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_read16_le", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_read16_le", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_read32_le", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_read32_le", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_req_hard_reset", "(SingleRequest *,Curl_easy *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_req_send", "(Curl_easy *,dynbuf *)", "", "Argument[*1].Field[*leng]", "Argument[*0].Field[*req].Field[*sendbuf_hds_len]", "taint", "dfc-generated"] + - ["", "", True, "Curl_req_send", "(Curl_easy *,dynbuf *)", "", "Argument[*1].Field[*leng]", "Argument[*0].Field[*req].Field[*writebytecount]", "taint", "dfc-generated"] + - ["", "", True, "Curl_req_send", "(Curl_easy *,dynbuf *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_req_send_more", "(Curl_easy *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_req_soft_reset", "(SingleRequest *,Curl_easy *)", "", "Argument[*1].Field[*set].Field[*upload_buffer_size]", "Argument[*0].Field[*sendbuf].Field[*chunk_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_req_start", "(SingleRequest *,Curl_easy *)", "", "Argument[*1].Field[*set].Field[*upload_buffer_size]", "Argument[*0].Field[*sendbuf].Field[*chunk_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[*1]", "Argument[**4].Field[**addr].Field[**ai_canonname]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[*1]", "Argument[**4].Field[*hostname]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[1]", "Argument[**4].Field[**addr].Field[**ai_canonname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[1]", "Argument[**4].Field[*hostname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[2]", "Argument[**4].Field[*hostport]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv_check", "(Curl_easy *,Curl_dns_entry **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[*1]", "Argument[**3].Field[**addr].Field[**ai_canonname]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[*1]", "Argument[**3].Field[*hostname]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[1]", "Argument[**3].Field[**addr].Field[**ai_canonname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[1]", "Argument[**3].Field[*hostname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[2]", "Argument[**3].Field[*hostport]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv_unlink", "(Curl_easy *,Curl_dns_entry **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolver_duphandle", "(Curl_easy *,void **,void *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolver_init", "(Curl_easy *,void **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_retry_request", "(Curl_easy *,char **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_rtsp_parseheader", "(Curl_easy *,const char *)", "", "Argument[*1]", "Argument[*0].Field[*set].Field[**str]", "value", "dfc-generated"] + - ["", "", True, "Curl_rtsp_parseheader", "(Curl_easy *,const char *)", "", "Argument[*1]", "Argument[*0].Field[*state].Field[*rtsp_CSeq_recv]", "taint", "dfc-generated"] + - ["", "", True, "Curl_rtsp_parseheader", "(Curl_easy *,const char *)", "", "Argument[1]", "Argument[*0].Field[*set].Field[**str]", "taint", "dfc-generated"] + - ["", "", True, "Curl_rtsp_parseheader", "(Curl_easy *,const char *)", "", "Argument[1]", "Argument[*0].Field[*state].Field[*rtsp_CSeq_recv]", "taint", "dfc-generated"] + - ["", "", True, "Curl_sasl_init", "(SASL *,Curl_easy *,const SASLproto *)", "", "Argument[*2].Field[*defmechs]", "Argument[*0].Field[*prefmech]", "value", "dfc-generated"] + - ["", "", True, "Curl_sasl_init", "(SASL *,Curl_easy *,const SASLproto *)", "", "Argument[*2]", "Argument[*0].Field[**params]", "value", "dfc-generated"] + - ["", "", True, "Curl_sasl_init", "(SASL *,Curl_easy *,const SASLproto *)", "", "Argument[2]", "Argument[*0].Field[*params]", "value", "dfc-generated"] + - ["", "", True, "Curl_sasl_start", "(SASL *,Curl_easy *,bool,saslprogress *)", "", "Argument[2]", "Argument[*0].Field[*force_ir]", "value", "dfc-generated"] + - ["", "", True, "Curl_senddata", "(Curl_easy *,const void *,size_t,size_t *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_senddata", "(Curl_easy *,const void *,size_t,size_t *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_sendrecv", "(Curl_easy *,curltime *)", "", "Argument[*1]", "Argument[*0].Field[*state].Field[*keeps_speed]", "value", "dfc-generated"] + - ["", "", True, "Curl_sendrecv", "(Curl_easy *,curltime *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_sendrecv", "(Curl_easy *,curltime *)", "", "Argument[1]", "Argument[*0].Field[*state].Field[*keeps_speed]", "taint", "dfc-generated"] + - ["", "", True, "Curl_sendrecv", "(Curl_easy *,curltime *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_set_in_callback", "(Curl_easy *,bool)", "", "Argument[1]", "Argument[*0].Field[**multi].Field[*in_callback]", "value", "dfc-generated"] + - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[*1]", "Argument[**0]", "value", "df-generated"] + - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[1]", "Argument[**0].Field[**data]", "taint", "dfc-generated"] + - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[1]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_setstropt", "(char **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_shutdown_start", "(Curl_easy *,int,curltime *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_shutdown_timeleft", "(connectdata *,int,curltime *)", "", "Argument[*0].Field[*shutdown].Field[*timeout_ms]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_shutdown_timeleft", "(connectdata *,int,curltime *)", "", "Argument[*2].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_shutdown_timeleft", "(connectdata *,int,curltime *)", "", "Argument[*2].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_shutdown_timeleft", "(connectdata *,int,curltime *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[*1]", "Argument[*0].Field[**next].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[*1]", "ReturnValue[*].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[1]", "Argument[*0].Field[**next].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[1]", "ReturnValue[*].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_duplicate", "(curl_slist *)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_duplicate", "(curl_slist *)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_sock_assign_addr", "(Curl_sockaddr_ex *,const Curl_addrinfo *,int)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_socket_open", "(Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_speedcheck", "(Curl_easy *,curltime)", "", "Argument[1]", "Argument[*0].Field[*state].Field[*keeps_speed]", "value", "dfc-generated"] + - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[*1]", "ReturnValue[*]", "value", "df-generated"] + - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[1]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_splayget", "(Curl_tree *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_splayget", "(Curl_tree *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "Curl_splayget", "(Curl_tree *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[*1]", "Argument[**2]", "value", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[*1]", "ReturnValue[*]", "value", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[*2]", "value", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*1]", "ReturnValue[*]", "value", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*2]", "ReturnValue[*]", "value", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[1]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[2]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[2]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[2]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_splayremove", "(Curl_tree *,Curl_tree *,Curl_tree **)", "", "Argument[*0]", "Argument[**2]", "value", "df-generated"] + - ["", "", True, "Curl_splayremove", "(Curl_tree *,Curl_tree *,Curl_tree **)", "", "Argument[0]", "Argument[*2]", "value", "df-generated"] + - ["", "", True, "Curl_splayremove", "(Curl_tree *,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[*1].Field[**samen].Field[*samen]", "value", "dfc-generated"] + - ["", "", True, "Curl_splayremove", "(Curl_tree *,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[*1].Field[*samen]", "value", "dfc-generated"] + - ["", "", True, "Curl_splayset", "(Curl_tree *,void *)", "", "Argument[**1]", "Argument[*0].Field[***ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_splayset", "(Curl_tree *,void *)", "", "Argument[*1]", "Argument[*0].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_splayset", "(Curl_tree *,void *)", "", "Argument[1]", "Argument[*0].Field[*ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_cf_get_config", "(Curl_cfilter *,Curl_easy *)", "", "Argument[*1].Field[*set].Field[*proxy_ssl]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_cf_get_config", "(Curl_cfilter *,Curl_easy *)", "", "Argument[*1].Field[*set].Field[*ssl]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_cf_get_primary_config", "(Curl_cfilter *)", "", "Argument[*0].Field[**conn].Field[*proxy_ssl_config]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_cf_get_primary_config", "(Curl_cfilter *)", "", "Argument[*0].Field[**conn].Field[*ssl_config]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_cfilter_add", "(Curl_easy *,connectdata *,int)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_cfilter_add", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ssl_cfilter_add", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_easy_config_init", "(Curl_easy *)", "", "Argument[*0].Field[*set].Field[*ssl]", "Argument[*0].Field[*set].Field[*proxy_ssl]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_peer_init", "(ssl_peer *,Curl_cfilter *,const char *,int)", "", "Argument[*1].Field[**conn].Field[*remote_port]", "Argument[*0].Field[*port]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_peer_init", "(ssl_peer *,Curl_cfilter *,const char *,int)", "", "Argument[3]", "Argument[*0].Field[*transport]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_create", "(size_t,size_t,Curl_ssl_scache **)", "", "Argument[0]", "Argument[**2].Field[*peer_count]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_create", "(size_t,size_t,Curl_ssl_scache **)", "", "Argument[1]", "Argument[**2].Field[**peers].Field[*max_sessions]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_get_obj", "(Curl_cfilter *,Curl_easy *,const char *,void **)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_put", "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)", "", "Argument[*3]", "Argument[*3].Field[*list].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_put", "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)", "", "Argument[3]", "Argument[*3].Field[*list].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_return", "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)", "", "Argument[*3]", "Argument[*3].Field[*list].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_return", "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)", "", "Argument[3]", "Argument[*3].Field[*list].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[*0]", "Argument[**8].Field[**sdata]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[*6]", "Argument[**8].Field[**quic_tp]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[0]", "Argument[**8].Field[*sdata]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[1]", "Argument[**8].Field[*sdata_len]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[2]", "Argument[**8].Field[*ietf_tls_id]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[4]", "Argument[**8].Field[*valid_until]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[5]", "Argument[**8].Field[*earlydata_max]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[6]", "Argument[**8].Field[*quic_tp]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[7]", "Argument[**8].Field[*quic_tp_len]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[*0]", "Argument[**6].Field[**sdata]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[0]", "Argument[**6].Field[*sdata]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[1]", "Argument[**6].Field[*sdata_len]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[2]", "Argument[**6].Field[*ietf_tls_id]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[4]", "Argument[**6].Field[*valid_until]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[5]", "Argument[**6].Field[*earlydata_max]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_supports", "(Curl_easy *,unsigned int)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_str2addr", "(char *,int)", "", "Argument[*0]", "ReturnValue[*].Field[**ai_canonname]", "value", "dfc-generated"] + - ["", "", True, "Curl_str2addr", "(char *,int)", "", "Argument[0]", "ReturnValue[*].Field[**ai_canonname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_newline", "(char **)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_newline", "(char **)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_newline", "(char **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[**0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[*0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_quotedword", "(char **,Curl_str *,const size_t)", "", "Argument[**0]", "Argument[*1].Field[**str]", "value", "dfc-generated"] + - ["", "", True, "Curl_str_single", "(char **,char)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_single", "(char **,char)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_single", "(char **,char)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_singlespace", "(char **)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_singlespace", "(char **)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_singlespace", "(char **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[**0]", "Argument[*1].Field[**str]", "value", "dfc-generated"] + - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[*0]", "Argument[*1].Field[*str]", "value", "dfc-generated"] + - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[0]", "Argument[*1].Field[*str]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[**0]", "Argument[*1].Field[**str]", "value", "dfc-generated"] + - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[*0]", "Argument[*1].Field[*str]", "value", "dfc-generated"] + - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[0]", "Argument[*1].Field[*str]", "taint", "dfc-generated"] + - ["", "", True, "Curl_strerror", "(int,char *,size_t)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_strerror", "(int,char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_strntolower", "(char *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_strntolower", "(char *,const char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_strntolower", "(char *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_strntoupper", "(char *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_strntoupper", "(char *,const char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_strntoupper", "(char *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_thread_destroy", "(pthread_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_thread_join", "(pthread_t **)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_thread_join", "(pthread_t **)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_thread_join", "(pthread_t **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff", "(curltime,curltime)", "", "Argument[0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff", "(curltime,curltime)", "", "Argument[0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff", "(curltime,curltime)", "", "Argument[1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff", "(curltime,curltime)", "", "Argument[1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_ceil", "(curltime,curltime)", "", "Argument[0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_ceil", "(curltime,curltime)", "", "Argument[0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_ceil", "(curltime,curltime)", "", "Argument[1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_ceil", "(curltime,curltime)", "", "Argument[1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_us", "(curltime,curltime)", "", "Argument[0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_us", "(curltime,curltime)", "", "Argument[0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_us", "(curltime,curltime)", "", "Argument[1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_us", "(curltime,curltime)", "", "Argument[1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[*0].Field[*set].Field[*connecttimeout]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[*0].Field[*set].Field[*timeout]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[*1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[*1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_timestrcmp", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timestrcmp", "(const char *,const char *)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timestrcmp", "(const char *,const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timestrcmp", "(const char *,const char *)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_updatesocket", "(Curl_easy *)", "", "Argument[0]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_url_set_authority", "(CURLU *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**password]", "taint", "dfc-generated"] + - ["", "", True, "Curl_url_set_authority", "(CURLU *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**user]", "value", "dfc-generated"] + - ["", "", True, "Curl_url_set_authority", "(CURLU *,const char *)", "", "Argument[1]", "Argument[*0].Field[**password]", "taint", "dfc-generated"] + - ["", "", True, "Curl_url_set_authority", "(CURLU *,const char *)", "", "Argument[1]", "Argument[*0].Field[**user]", "taint", "dfc-generated"] + - ["", "", True, "Curl_urldecode", "(const char *,size_t,char **,size_t *,urlreject)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_urldecode", "(const char *,size_t,char **,size_t *,urlreject)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_urldecode", "(const char *,size_t,char **,size_t *,urlreject)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_vsetopt", "(Curl_easy *,CURLoption,va_list)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_vsetopt", "(Curl_easy *,CURLoption,va_list)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_vsetopt", "(Curl_easy *,CURLoption,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_waitfds_add_ps", "(Curl_waitfds *,easy_pollset *)", "", "Argument[*1].Field[*sockets]", "Argument[*0].Field[**wfds].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "Curl_waitfds_init", "(Curl_waitfds *,curl_waitfd *,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**wfds]", "value", "dfc-generated"] + - ["", "", True, "Curl_waitfds_init", "(Curl_waitfds *,curl_waitfd *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*wfds]", "value", "dfc-generated"] + - ["", "", True, "Curl_waitfds_init", "(Curl_waitfds *,curl_waitfd *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*count]", "value", "dfc-generated"] + - ["", "", True, "Curl_wildcard_dtor", "(WildcardData **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_xfer_send", "(Curl_easy *,const void *,size_t,bool,size_t *)", "", "Argument[*4]", "Argument[*0].Field[*info].Field[*request_size]", "taint", "dfc-generated"] + - ["", "", True, "Curl_xfer_send", "(Curl_easy *,const void *,size_t,bool,size_t *)", "", "Argument[4]", "Argument[*0].Field[*info].Field[*request_size]", "taint", "dfc-generated"] + - ["", "", True, "Curl_xfer_send", "(Curl_easy *,const void *,size_t,bool,size_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "SetHTTPrequest", "(OperationConfig *,HttpReq,HttpReq *)", "", "Argument[1]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "SetHTTPrequest", "(OperationConfig *,HttpReq,HttpReq *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "add2list", "(curl_slist **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "add_file_name_to_url", "(CURL *,char **,const char *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "curl_easy_cleanup", "(CURL *)", "", "Argument[0]", "Argument[*0]", "value", "df-generated"] + - ["", "", True, "curl_easy_duphandle", "(CURL *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "curl_easy_header", "(CURL *,const char *,size_t,unsigned int,int,curl_header **)", "", "Argument[2]", "Argument[**5].Field[*index]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_nextheader", "(CURL *,unsigned int,int,curl_header *)", "", "Argument[*3].Field[**anchor].Field[**_next]", "ReturnValue[*].Field[**anchor]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_nextheader", "(CURL *,unsigned int,int,curl_header *)", "", "Argument[*3].Field[**anchor].Field[*_next]", "ReturnValue[*].Field[*anchor]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_option_next", "(const curl_easyoption *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_option_next", "(const curl_easyoption *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "curl_easy_option_next", "(const curl_easyoption *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curl_easy_option_next", "(const curl_easyoption *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "curl_easy_pause", "(CURL *,int)", "", "Argument[0]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_perform", "(CURL *)", "", "Argument[0]", "Argument[*0]", "value", "df-generated"] + - ["", "", True, "curl_easy_recv", "(CURL *,void *,size_t,size_t *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_recv", "(CURL *,void *,size_t,size_t *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_send", "(CURL *,const void *,size_t,size_t *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_send", "(CURL *,const void *,size_t,size_t *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_upkeep", "(CURL *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_upkeep", "(CURL *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_formadd", "(curl_httppost **,curl_httppost **,...)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "curl_getdate", "(const char *,const time_t *)", "", "Argument[*0]", "Argument[0]", "taint", "dfc-generated"] + - ["", "", True, "curl_getdate", "(const char *,const time_t *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curl_getdate", "(const char *,const time_t *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curl_mime_addpart", "(curl_mime *)", "", "Argument[0]", "Argument[*0].Field[**firstpart].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_addpart", "(curl_mime *)", "", "Argument[0]", "Argument[*0].Field[**lastpart].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_addpart", "(curl_mime *)", "", "Argument[0]", "ReturnValue[*].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[0]", "Argument[*0].Field[**arg].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[0]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[1]", "Argument[*0].Field[**data]", "taint", "dfc-generated"] + - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[2]", "Argument[*0].Field[*datasize]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[**5]", "Argument[*0].Field[***arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[*5]", "Argument[*0].Field[**arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[0]", "Argument[*0].Field[**arg].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[0]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[1]", "Argument[*0].Field[*datasize]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[2]", "Argument[*0].Field[*readfunc]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[3]", "Argument[*0].Field[*seekfunc]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[4]", "Argument[*0].Field[*freefunc]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[5]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_filedata", "(curl_mimepart *,const char *)", "", "Argument[0]", "Argument[*0].Field[**arg].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_filedata", "(curl_mimepart *,const char *)", "", "Argument[0]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_headers", "(curl_mimepart *,curl_slist *,int)", "", "Argument[*1]", "Argument[*0].Field[**userheaders]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_headers", "(curl_mimepart *,curl_slist *,int)", "", "Argument[1]", "Argument[*0].Field[*userheaders]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_subparts", "(curl_mimepart *,curl_mime *)", "", "Argument[1]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_multi_add_handle", "(CURLM *,CURL *)", "", "Argument[0]", "Argument[*1].Field[*multi]", "value", "dfc-generated"] + - ["", "", True, "curl_multi_add_handle", "(CURLM *,CURL *)", "", "Argument[1]", "Argument[*1].Field[*multi_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_multi_info_read", "(CURLM *,int *)", "", "Argument[*0].Field[*msglist].Field[*_size]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "curl_multi_perform", "(CURLM *,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "curl_multi_remove_handle", "(CURLM *,CURL *)", "", "Argument[1]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "curl_multi_socket", "(CURLM *,curl_socket_t,int *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "curl_multi_socket_action", "(CURLM *,curl_socket_t,int,int *)", "", "Argument[*0]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "curl_multi_socket_all", "(CURLM *,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "curl_mvaprintf", "(const char *,va_list)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "curl_mvfprintf", "(FILE *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "curl_mvprintf", "(const char *,va_list)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "curl_mvsnprintf", "(char *,size_t,const char *,va_list)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "curl_mvsprintf", "(char *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "curl_pushheader_byname", "(curl_pushheaders *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "curl_pushheader_byname", "(curl_pushheaders *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "curl_pushheader_bynum", "(curl_pushheaders *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curl_share_setopt", "(CURLSH *,CURLSHoption,...)", "", "Argument[0]", "Argument[*0].Field[*cpool].Field[*share]", "value", "dfc-generated"] + - ["", "", True, "curl_slist_append", "(curl_slist *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "curl_slist_append", "(curl_slist *,const char *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "curl_url_dup", "(const CURLU *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "curl_url_get", "(const CURLU *,CURLUPart,char **,unsigned int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "curl_url_set", "(CURLU *,CURLUPart,const char *,unsigned int)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "curl_url_set", "(CURLU *,CURLUPart,const char *,unsigned int)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "curl_ws_recv", "(CURL *,void *,size_t,size_t *,const curl_ws_frame **)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_ws_recv", "(CURL *,void *,size_t,size_t *,const curl_ws_frame **)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "curl_ws_send", "(CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_ws_send", "(CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "curlx_dyn_add", "(dynbuf *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**bufr]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_add", "(dynbuf *,const char *)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "curlx_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**bufr]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "curlx_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*allc]", "taint", "dfc-generated"] + - ["", "", True, "curlx_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*leng]", "taint", "dfc-generated"] + - ["", "", True, "curlx_dyn_free", "(dynbuf *)", "", "Argument[*0].Field[*allc]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_init", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*toobig]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_len", "(const dynbuf *)", "", "Argument[*0].Field[*leng]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_ptr", "(const dynbuf *)", "", "Argument[*0].Field[**bufr]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_ptr", "(const dynbuf *)", "", "Argument[*0].Field[*bufr]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_setlen", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_tail", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "curlx_dyn_tail", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "curlx_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "curlx_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "curlx_dyn_uptr", "(const dynbuf *)", "", "Argument[*0].Field[**bufr]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_uptr", "(const dynbuf *)", "", "Argument[*0].Field[*bufr]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_vaddf", "(dynbuf *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "curlx_get_line", "(dynbuf *,FILE *)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "curlx_mstotv", "(timeval *,timediff_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "curlx_mstotv", "(timeval *,timediff_t)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "curlx_sitouz", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "curlx_sltosi", "(long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_sltoui", "(long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_sltous", "(long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_sotouz", "(curl_off_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[*0]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[*0]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[0]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[0]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[0]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "curlx_sztosi", "(ssize_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_tvtoms", "(timeval *)", "", "Argument[*0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_tvtoms", "(timeval *)", "", "Argument[*0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_uitous", "(unsigned int)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_ultouc", "(unsigned long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_ultous", "(unsigned long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_uztosi", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_uztosz", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_uztoui", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_uztoul", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "easysrc_add", "(slist_wc **,const char *)", "", "Argument[**0].Field[**last].Field[**next]", "Argument[**0].Field[**last]", "value", "dfc-generated"] + - ["", "", True, "easysrc_add", "(slist_wc **,const char *)", "", "Argument[**0].Field[**last].Field[*next]", "Argument[**0].Field[*last]", "value", "dfc-generated"] + - ["", "", True, "easysrc_add", "(slist_wc **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "findshortopt", "(char)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[**2]", "Argument[**3]", "value", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[**2]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[**3]", "Argument[**2]", "value", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[**3]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*2]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*2]", "Argument[**3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*2]", "Argument[*3]", "value", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*3]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*3]", "Argument[**3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[2]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[2]", "Argument[**3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[2]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[2]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[3]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[3]", "Argument[**3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[3]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "get_url_file_name", "(GlobalConfig *,char **,const char *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "getparameter", "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "getparameter", "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)", "", "Argument[*1]", "Argument[*0]", "value", "df-generated"] + - ["", "", True, "getparameter", "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "getparameter", "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)", "", "Argument[4]", "Argument[*4].Field[**last].Field[*global]", "value", "dfc-generated"] + - ["", "", True, "getpass_r", "(const char *,char *,size_t)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "getpass_r", "(const char *,char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "glob_cleanup", "(URLGlob **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "glob_match_url", "(char **,char *,URLGlob *)", "", "Argument[*1]", "Argument[1]", "taint", "dfc-generated"] + - ["", "", True, "glob_match_url", "(char **,char *,URLGlob *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "glob_next_url", "(char **,URLGlob *)", "", "Argument[*1].Field[**glob_buffer]", "Argument[**0]", "value", "dfc-generated"] + - ["", "", True, "glob_next_url", "(char **,URLGlob *)", "", "Argument[*1].Field[*glob_buffer]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "glob_next_url", "(char **,URLGlob *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "glob_url", "(URLGlob **,char *,curl_off_t *,FILE *)", "", "Argument[*1]", "Argument[**0].Field[*pos]", "taint", "dfc-generated"] + - ["", "", True, "glob_url", "(URLGlob **,char *,curl_off_t *,FILE *)", "", "Argument[1]", "Argument[**0].Field[*pos]", "taint", "dfc-generated"] + - ["", "", True, "glob_url", "(URLGlob **,char *,curl_off_t *,FILE *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "helpscan", "(unsigned char *,size_t,scan_ctx *)", "", "Argument[*0]", "Argument[*2].Field[*obuf]", "value", "dfc-generated"] + - ["", "", True, "helpscan", "(unsigned char *,size_t,scan_ctx *)", "", "Argument[*0]", "Argument[*2].Field[*rbuf]", "value", "dfc-generated"] + - ["", "", True, "helpscan", "(unsigned char *,size_t,scan_ctx *)", "", "Argument[0]", "Argument[*2].Field[*obuf]", "taint", "dfc-generated"] + - ["", "", True, "helpscan", "(unsigned char *,size_t,scan_ctx *)", "", "Argument[0]", "Argument[*2].Field[*rbuf]", "taint", "dfc-generated"] + - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**trigger]", "value", "dfc-generated"] + - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[*2]", "Argument[*0].Field[**arg]", "value", "dfc-generated"] + - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[*3]", "Argument[*0].Field[**endarg]", "value", "dfc-generated"] + - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[1]", "Argument[*0].Field[*trigger]", "value", "dfc-generated"] + - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[2]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[3]", "Argument[*0].Field[*endarg]", "value", "dfc-generated"] + - ["", "", True, "ipfs_url_rewrite", "(CURLU *,const char *,char **,OperationConfig *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "jsonquoted", "(const char *,size_t,dynbuf *,bool)", "", "Argument[*0]", "Argument[*2].Field[**bufr]", "value", "dfc-generated"] + - ["", "", True, "jsonquoted", "(const char *,size_t,dynbuf *,bool)", "", "Argument[0]", "Argument[*2].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "new_getout", "(OperationConfig *)", "", "Argument[*0].Field[*default_node_flags]", "ReturnValue[*].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "oct2nummax", "(long *,const char *,long)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "oct2nummax", "(long *,const char *,long)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "oct2nummax", "(long *,const char *,long)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "operate", "(GlobalConfig *,int,char *[])", "", "Argument[0]", "Argument[*0].Field[**last].Field[*global]", "value", "dfc-generated"] + - ["", "", True, "parse_args", "(GlobalConfig *,int,char *[])", "", "Argument[0]", "Argument[*0].Field[**last].Field[*global]", "value", "dfc-generated"] + - ["", "", True, "parseconfig", "(const char *,GlobalConfig *)", "", "Argument[1]", "Argument[*1].Field[**last].Field[*global]", "value", "dfc-generated"] + - ["", "", True, "progress_meter", "(GlobalConfig *,timeval *,bool)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "progressbarinit", "(ProgressData *,OperationConfig *)", "", "Argument[*1].Field[*resume_from]", "Argument[*0].Field[*initial_size]", "value", "dfc-generated"] + - ["", "", True, "proto2num", "(OperationConfig *,const char *const *,char **,const char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "secs2ms", "(long *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "secs2ms", "(long *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "setvariable", "(GlobalConfig *,const char *)", "", "Argument[*0].Field[**variables]", "Argument[*0].Field[**variables].Field[**next]", "value", "dfc-generated"] + - ["", "", True, "setvariable", "(GlobalConfig *,const char *)", "", "Argument[*0].Field[*variables]", "Argument[*0].Field[**variables].Field[*next]", "value", "dfc-generated"] + - ["", "", True, "slist_wc_append", "(slist_wc *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "df-generated"] + - ["", "", True, "slist_wc_append", "(slist_wc *,const char *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "str2num", "(long *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2num", "(long *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2offset", "(curl_off_t *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2offset", "(curl_off_t *,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2offset", "(curl_off_t *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2unum", "(long *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2unum", "(long *,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2unum", "(long *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2unummax", "(long *,const char *,long)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2unummax", "(long *,const char *,long)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2unummax", "(long *,const char *,long)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[*2]", "Argument[**2].Field[**firstpart].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[*2]", "Argument[**2].Field[**lastpart].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[2]", "Argument[**2].Field[**firstpart].Field[*parent]", "taint", "dfc-generated"] + - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[2]", "Argument[**2].Field[**lastpart].Field[*parent]", "taint", "dfc-generated"] + - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "tool_header_cb", "(char *,size_t,size_t,void *)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "tool_header_cb", "(char *,size_t,size_t,void *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "tool_mime_stdin_read", "(char *,size_t,size_t,void *)", "", "Argument[2]", "Argument[*3].Field[*curpos]", "taint", "dfc-generated"] + - ["", "", True, "tool_mime_stdin_read", "(char *,size_t,size_t,void *)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "tool_mime_stdin_seek", "(void *,curl_off_t,int)", "", "Argument[*0].Field[*size]", "Argument[*0].Field[*curpos]", "taint", "dfc-generated"] + - ["", "", True, "tool_mime_stdin_seek", "(void *,curl_off_t,int)", "", "Argument[1]", "Argument[*0].Field[*curpos]", "value", "dfc-generated"] + - ["", "", True, "tool_read_cb", "(char *,size_t,size_t,void *)", "", "Argument[*3]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "tool_setopt_slist", "(CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *)", "", "Argument[*4].Field[**next].Field[**next]", "Argument[*4]", "value", "dfc-generated"] + - ["", "", True, "tool_setopt_slist", "(CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *)", "", "Argument[*4].Field[**next]", "Argument[*4]", "value", "dfc-generated"] + - ["", "", True, "tvdiff", "(timeval,timeval)", "", "Argument[0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "tvdiff", "(timeval,timeval)", "", "Argument[0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "tvdiff", "(timeval,timeval)", "", "Argument[1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "tvdiff", "(timeval,timeval)", "", "Argument[1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "varexpand", "(GlobalConfig *,const char *,dynbuf *,bool *)", "", "Argument[*1]", "Argument[*2].Field[**bufr]", "value", "dfc-generated"] + - ["", "", True, "varexpand", "(GlobalConfig *,const char *,dynbuf *,bool *)", "", "Argument[1]", "Argument[*2].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "varexpand", "(GlobalConfig *,const char *,dynbuf *,bool *)", "", "Argument[1]", "Argument[*2].Field[*allc]", "taint", "dfc-generated"] + - ["", "", True, "varexpand", "(GlobalConfig *,const char *,dynbuf *,bool *)", "", "Argument[1]", "Argument[*2].Field[*leng]", "taint", "dfc-generated"] + - ["", "", True, "xferinfo_cb", "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)", "", "Argument[1]", "Argument[*0].Field[*dltotal]", "value", "dfc-generated"] + - ["", "", True, "xferinfo_cb", "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)", "", "Argument[2]", "Argument[*0].Field[*dlnow]", "value", "dfc-generated"] + - ["", "", True, "xferinfo_cb", "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)", "", "Argument[3]", "Argument[*0].Field[*ultotal]", "value", "dfc-generated"] + - ["", "", True, "xferinfo_cb", "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)", "", "Argument[4]", "Argument[*0].Field[*ulnow]", "value", "dfc-generated"] diff --git a/cpp/ql/lib/ext/generated/libidn2/libidn2.model.yml b/cpp/ql/lib/ext/generated/libidn2/libidn2.model.yml new file mode 100644 index 000000000000..2c6b88ed7143 --- /dev/null +++ b/cpp/ql/lib/ext/generated/libidn2/libidn2.model.yml @@ -0,0 +1,148 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "_idn2_punycode_decode", "(size_t,const char[],size_t *,uint32_t[])", "", "Argument[*1]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "_idn2_punycode_decode", "(size_t,const char[],size_t *,uint32_t[])", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_idn2_punycode_decode", "(size_t,const char[],size_t *,uint32_t[])", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_idn2_punycode_decode", "(size_t,const char[],size_t *,uint32_t[])", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_idn2_punycode_encode", "(size_t,const uint32_t[],size_t *,char[])", "", "Argument[*1]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "_idn2_punycode_encode", "(size_t,const uint32_t[],size_t *,char[])", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_idn2_punycode_encode", "(size_t,const uint32_t[],size_t *,char[])", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "c_strcasecmp", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strcasecmp", "(const char *,const char *)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strcasecmp", "(const char *,const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strcasecmp", "(const char *,const char *)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strncasecmp", "(const char *,const char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strncasecmp", "(const char *,const char *,size_t)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strncasecmp", "(const char *,const char *,size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strncasecmp", "(const char *,const char *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_tolower", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "c_toupper", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "cmdline_parser2", "(int,char **,gengetopt_args_info *,int,int,int)", "", "Argument[**1]", "Argument[*2].Field[***inputs]", "value", "dfc-generated"] + - ["", "", True, "cmdline_parser2", "(int,char **,gengetopt_args_info *,int,int,int)", "", "Argument[*1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser2", "(int,char **,gengetopt_args_info *,int,int,int)", "", "Argument[0]", "Argument[*2].Field[*inputs_num]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser2", "(int,char **,gengetopt_args_info *,int,int,int)", "", "Argument[1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser", "(int,char **,gengetopt_args_info *)", "", "Argument[**1]", "Argument[*2].Field[***inputs]", "value", "dfc-generated"] + - ["", "", True, "cmdline_parser", "(int,char **,gengetopt_args_info *)", "", "Argument[*1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser", "(int,char **,gengetopt_args_info *)", "", "Argument[0]", "Argument[*2].Field[*inputs_num]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser", "(int,char **,gengetopt_args_info *)", "", "Argument[1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser_ext", "(int,char **,gengetopt_args_info *,cmdline_parser_params *)", "", "Argument[**1]", "Argument[*2].Field[***inputs]", "value", "dfc-generated"] + - ["", "", True, "cmdline_parser_ext", "(int,char **,gengetopt_args_info *,cmdline_parser_params *)", "", "Argument[*1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser_ext", "(int,char **,gengetopt_args_info *,cmdline_parser_params *)", "", "Argument[0]", "Argument[*2].Field[*inputs_num]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser_ext", "(int,char **,gengetopt_args_info *,cmdline_parser_params *)", "", "Argument[1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"] + - ["", "", True, "get_map_data", "(uint32_t *,const IDNAMap *)", "", "Argument[*1].Field[*nmappings]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "get_map_data", "(uint32_t *,const IDNAMap *)", "", "Argument[*1].Field[*offset]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "get_map_data", "(uint32_t *,const IDNAMap *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "get_stat_atime", "(const stat *)", "", "Argument[*0].Field[*st_atim]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "get_stat_atime_ns", "(const stat *)", "", "Argument[*0].Field[*st_atim].Field[*tv_nsec]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "get_stat_ctime", "(const stat *)", "", "Argument[*0].Field[*st_ctim]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "get_stat_ctime_ns", "(const stat *)", "", "Argument[*0].Field[*st_ctim].Field[*tv_nsec]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "get_stat_mtime", "(const stat *)", "", "Argument[*0].Field[*st_mtim]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "get_stat_mtime_ns", "(const stat *)", "", "Argument[*0].Field[*st_mtim].Field[*tv_nsec]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[*2]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_lookup_u8", "(const uint8_t *,uint8_t **,int)", "", "Argument[*0]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "idn2_lookup_u8", "(const uint8_t *,uint8_t **,int)", "", "Argument[0]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "idn2_punycode_decode", "(const char *,size_t,uint32_t *,size_t *)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "idn2_punycode_decode", "(const char *,size_t,uint32_t *,size_t *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_punycode_decode", "(const char *,size_t,uint32_t *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_punycode_decode", "(const char *,size_t,uint32_t *,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "idn2_punycode_encode", "(const uint32_t *,size_t,char *,size_t *)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "idn2_punycode_encode", "(const uint32_t *,size_t,char *,size_t *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_punycode_encode", "(const uint32_t *,size_t,char *,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "idn2_register_u8", "(const uint8_t *,const uint8_t *,uint8_t **,int)", "", "Argument[*0]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "idn2_register_u8", "(const uint8_t *,const uint8_t *,uint8_t **,int)", "", "Argument[*1]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "idn2_register_u8", "(const uint8_t *,const uint8_t *,uint8_t **,int)", "", "Argument[0]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_register_u8", "(const uint8_t *,const uint8_t *,uint8_t **,int)", "", "Argument[1]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_register_ul", "(const char *,const char *,char **,int)", "", "Argument[*1]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "idn2_register_ul", "(const char *,const char *,char **,int)", "", "Argument[1]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_to_ascii_8z", "(const char *,char **,int)", "", "Argument[*0]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "idn2_to_ascii_8z", "(const char *,char **,int)", "", "Argument[0]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "idn2_to_unicode_44i", "(const uint32_t *,size_t,uint32_t *,size_t *,int)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "last_component", "(const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "last_component", "(const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "last_component", "(const char *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "mem_cd_iconveh", "(const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "mem_iconveh", "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[*0]", "Argument[**6]", "value", "dfc-generated"] + - ["", "", True, "mem_iconveh", "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[0]", "Argument[**6]", "taint", "dfc-generated"] + - ["", "", True, "mem_iconveh", "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[1]", "Argument[*7]", "value", "dfc-generated"] + - ["", "", True, "mem_iconveh", "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "mem_iconveha", "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[*0]", "Argument[**7]", "value", "dfc-generated"] + - ["", "", True, "mem_iconveha", "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[0]", "Argument[**7]", "taint", "dfc-generated"] + - ["", "", True, "mem_iconveha", "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[1]", "Argument[*8]", "value", "dfc-generated"] + - ["", "", True, "mem_iconveha", "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "stat_time_normalize", "(int,stat *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "str_iconveh", "(const char *,const char *,const char *,iconv_ilseq_handler)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "str_iconveh", "(const char *,const char *,const char *,iconv_ilseq_handler)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "str_iconveha", "(const char *,const char *,const char *,bool,iconv_ilseq_handler)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "str_iconveha", "(const char *,const char *,const char *,bool,iconv_ilseq_handler)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[*1]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[*3]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[1]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[3]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[3]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "u8_mbtouc_aux", "(ucs4_t *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "u8_mbtouc_aux", "(ucs4_t *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uc_bidi_category", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_bidi_class", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_canonical_decomposition", "(ucs4_t,ucs4_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uc_canonical_decomposition", "(ucs4_t,ucs4_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uc_combining_class", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_composition", "(ucs4_t,ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_composition", "(ucs4_t,ucs4_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_general_category", "(ucs4_t)", "", "Argument[0]", "ReturnValue.Field[*bitmask]", "taint", "dfc-generated"] + - ["", "", True, "uc_is_general_category_withtable", "(ucs4_t,uint32_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_is_general_category_withtable", "(ucs4_t,uint32_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_joining_type", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_script", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_script", "(ucs4_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uc_script_byname", "(const char *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uc_script_byname", "(const char *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "uc_script_byname", "(const char *)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uc_script_byname", "(const char *)", "", "Argument[0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[**4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[*4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[**4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[*4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[*4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] diff --git a/cpp/ql/lib/ext/generated/libssh2/libssh2.model.yml b/cpp/ql/lib/ext/generated/libssh2/libssh2.model.yml new file mode 100644 index 000000000000..f531e19099b5 --- /dev/null +++ b/cpp/ql/lib/ext/generated/libssh2/libssh2.model.yml @@ -0,0 +1,517 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "_libssh2_base64_decode", "(LIBSSH2_SESSION *,char **,size_t *,const char *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_close", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_extended_data", "(LIBSSH2_CHANNEL *,int)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*extended_data_ignore_mode]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_flush", "(LIBSSH2_CHANNEL *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_forward_cancel", "(LIBSSH2_LISTENER *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_free", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_locate", "(LIBSSH2_SESSION *,uint32_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_locate", "(LIBSSH2_SESSION *,uint32_t)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_nextid", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**open_channel].Field[**channel_type]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[*1]", "ReturnValue[*].Field[**channel_type]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[1]", "Argument[*0].Field[**open_channel].Field[**channel_type]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[1]", "ReturnValue[*].Field[**channel_type]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[3]", "ReturnValue[*].Field[*remote].Field[*window_size]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[3]", "ReturnValue[*].Field[*remote].Field[*window_size_initial]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[4]", "ReturnValue[*].Field[*remote].Field[*packet_size]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_process_startup", "(LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t)", "", "Argument[2]", "Argument[*0].Field[*process_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_read", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_read", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_read", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*adjust_adjust]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*adjust_queue]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*window_size]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_write", "(LIBSSH2_CHANNEL *,int,const unsigned char *,size_t)", "", "Argument[3]", "Argument[*0].Field[*local].Field[*window_size]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_write", "(LIBSSH2_CHANNEL *,int,const unsigned char *,size_t)", "", "Argument[3]", "Argument[*0].Field[*write_bufwrite]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_write", "(LIBSSH2_CHANNEL *,int,const unsigned char *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_cipher_crypt", "(EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_cipher_init", "(EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_copy_string", "(LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_curve25519_gen_k", "(BIGNUM **,uint8_t[32],uint8_t[32])", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_dh_dtor", "(BIGNUM **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_dh_key_pair", "(BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_dh_secret", "(BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdh_gen_k", "(BIGNUM **,EVP_PKEY *,const unsigned char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_create_key", "(LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private", "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_frommemory", "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ed25519_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ed25519_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ed25519_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ed25519_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ed25519_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ed25519_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[*2]", "Argument[*0].Field[**err_msg]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[1]", "Argument[*0].Field[*err_code]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[2]", "Argument[*0].Field[**err_msg]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[2]", "Argument[*0].Field[*err_msg]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[*2]", "Argument[*0].Field[**err_msg]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[1]", "Argument[*0].Field[*err_code]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[2]", "Argument[*0].Field[**err_msg]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[2]", "Argument[*0].Field[*err_msg]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_get_bignum_bytes", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_bignum_bytes", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_bignum_bytes", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_byte", "(string_buf *,unsigned char *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_string", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_string", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_string", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_u32", "(string_buf *,uint32_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_u64", "(string_buf *,libssh2_uint64_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_hmac_cleanup", "(EVP_MAC_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_hmac_final", "(EVP_MAC_CTX **,void *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_hmac_sha1_init", "(EVP_MAC_CTX **,void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_hmac_sha256_init", "(EVP_MAC_CTX **,void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_hmac_sha512_init", "(EVP_MAC_CTX **,void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_hmac_update", "(EVP_MAC_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_htonu32", "(unsigned char *,uint32_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_kex_exchange", "(LIBSSH2_SESSION *,int,key_exchange_state_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "_libssh2_kex_exchange", "(LIBSSH2_SESSION *,int,key_exchange_state_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_kex_exchange", "(LIBSSH2_SESSION *,int,key_exchange_state_t *)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[0]", "Argument[*0].Field[**first].Field[*head]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[0]", "Argument[*0].Field[**last].Field[*head]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[0]", "Argument[*1].Field[*head]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[1]", "Argument[*0].Field[*first]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[1]", "Argument[*0].Field[*last]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[1]", "Argument[*1].Field[**prev].Field[*next]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_first", "(list_head *)", "", "Argument[*0].Field[**first]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_first", "(list_head *)", "", "Argument[*0].Field[*first]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_init", "(list_head *)", "", "Argument[*0].Field[**last]", "Argument[*0].Field[**first]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_init", "(list_head *)", "", "Argument[*0].Field[*last]", "Argument[*0].Field[*first]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_next", "(list_node *)", "", "Argument[*0].Field[**next]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_next", "(list_node *)", "", "Argument[*0].Field[*next]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_prev", "(list_node *)", "", "Argument[*0].Field[**prev]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_prev", "(list_node *)", "", "Argument[*0].Field[*prev]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_ntohu32", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ntohu32", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ntohu64", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ntohu64", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_packet_add", "(LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t)", "", "Argument[2]", "Argument[*0].Field[**packAdd_channelp].Field[*adjust_adjust]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_packet_add", "(LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t)", "", "Argument[2]", "Argument[*0].Field[**packAdd_channelp].Field[*adjust_queue]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_packet_burn", "(LIBSSH2_SESSION *,libssh2_nonblocking_states *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_packet_require", "(LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *)", "", "Argument[1]", "Argument[*0].Field[*fullpacket_required_type]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_packet_requirev", "(LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_pem_decode_integer", "(unsigned char **,size_t *,unsigned char **,unsigned int *)", "", "Argument[**0]", "Argument[**2]", "value", "df-generated"] + - ["", "", True, "_libssh2_pem_decode_integer", "(unsigned char **,size_t *,unsigned char **,unsigned int *)", "", "Argument[**0]", "Argument[*3]", "value", "df-generated"] + - ["", "", True, "_libssh2_pem_decode_integer", "(unsigned char **,size_t *,unsigned char **,unsigned int *)", "", "Argument[*0]", "Argument[*2]", "value", "df-generated"] + - ["", "", True, "_libssh2_pem_decode_integer", "(unsigned char **,size_t *,unsigned char **,unsigned int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[**0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[**0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_parse", "(LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_parse_memory", "(LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pub_priv_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[*3]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pub_priv_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[3]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pub_priv_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pub_priv_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_rsa_new_private", "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_rsa_new_private_frommemory", "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_session_set_blocking", "(LIBSSH2_SESSION *,int)", "", "Argument[*0].Field[*api_block_mode]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_session_set_blocking", "(LIBSSH2_SESSION *,int)", "", "Argument[1]", "Argument[*0].Field[*api_block_mode]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_sha1_final", "(EVP_MD_CTX **,unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha1_init", "(EVP_MD_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha1_update", "(EVP_MD_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha256_final", "(EVP_MD_CTX **,unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha256_init", "(EVP_MD_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha256_update", "(EVP_MD_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha384_final", "(EVP_MD_CTX **,unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha384_init", "(EVP_MD_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha384_update", "(EVP_MD_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha512_final", "(EVP_MD_CTX **,unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha512_init", "(EVP_MD_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha512_update", "(EVP_MD_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[*3]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[3]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[*1]", "Argument[**0]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[1]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[2]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[*1]", "Argument[**0]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[1]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[2]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u32", "(unsigned char **,uint32_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u32", "(unsigned char **,uint32_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u32", "(unsigned char **,uint32_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u32", "(unsigned char **,uint32_t)", "", "Argument[1]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u64", "(unsigned char **,libssh2_uint64_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u64", "(unsigned char **,libssh2_uint64_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u64", "(unsigned char **,libssh2_uint64_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_transport_read", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_transport_send", "(LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[4]", "Argument[*0].Field[**userauth_pblc_s]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[4]", "Argument[*0].Field[*userauth_pblc_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[4]", "Argument[*0].Field[*userauth_pblc_s]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_wait_socket", "(LIBSSH2_SESSION *,time_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "chacha_encrypt_bytes", "(chacha_ctx *,const u8 *,u8 *,u32)", "", "Argument[*0].Field[*input]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chacha_encrypt_bytes", "(chacha_ctx *,const u8 *,u8 *,u32)", "", "Argument[*1]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "chacha_encrypt_bytes", "(chacha_ctx *,const u8 *,u8 *,u32)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chacha_encrypt_bytes", "(chacha_ctx *,const u8 *,u8 *,u32)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chacha_ivsetup", "(chacha_ctx *,const u8 *,const u8 *)", "", "Argument[*1]", "Argument[*0].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chacha_ivsetup", "(chacha_ctx *,const u8 *,const u8 *)", "", "Argument[*2]", "Argument[*0].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chacha_ivsetup", "(chacha_ctx *,const u8 *,const u8 *)", "", "Argument[1]", "Argument[*0].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chacha_ivsetup", "(chacha_ctx *,const u8 *,const u8 *)", "", "Argument[2]", "Argument[*0].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chacha_keysetup", "(chacha_ctx *,const u8 *,u32)", "", "Argument[*1]", "Argument[*0].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chacha_keysetup", "(chacha_ctx *,const u8 *,u32)", "", "Argument[1]", "Argument[*0].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[*3]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[3]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[4]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[5]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_get_length", "(chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int)", "", "Argument[*3]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_get_length", "(chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int)", "", "Argument[3]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_init", "(chachapoly_ctx *,const u_char *,u_int)", "", "Argument[*1]", "Argument[*0].Field[*header_ctx].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_init", "(chachapoly_ctx *,const u_char *,u_int)", "", "Argument[*1]", "Argument[*0].Field[*main_ctx].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_init", "(chachapoly_ctx *,const u_char *,u_int)", "", "Argument[1]", "Argument[*0].Field[*header_ctx].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_init", "(chachapoly_ctx *,const u_char *,u_int)", "", "Argument[1]", "Argument[*0].Field[*main_ctx].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_timingsafe_bcmp", "(const void *,const void *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_timingsafe_bcmp", "(const void *,const void *,size_t)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_timingsafe_bcmp", "(const void *,const void *,size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_timingsafe_bcmp", "(const void *,const void *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_agent_get_identity", "(LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "libssh2_agent_get_identity_path", "(LIBSSH2_AGENT *)", "", "Argument[*0].Field[**identity_agent_path]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_get_identity_path", "(LIBSSH2_AGENT *)", "", "Argument[*0].Field[*identity_agent_path]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_init", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue[*].Field[**session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_set_identity_path", "(LIBSSH2_AGENT *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**identity_agent_path]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_set_identity_path", "(LIBSSH2_AGENT *,const char *)", "", "Argument[1]", "Argument[*0].Field[**identity_agent_path]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[*1].Field[**node]", "Argument[*0].Field[**identity]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[*1].Field[*node]", "Argument[*0].Field[*identity]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[*6]", "Argument[*0].Field[**session].Field[**userauth_pblc_method]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[6]", "Argument[*0].Field[**session].Field[**userauth_pblc_method]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[7]", "Argument[*0].Field[**session].Field[*userauth_pblc_method_len]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_userauth", "(LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *)", "", "Argument[*1]", "Argument[*0].Field[**session].Field[**userauth_pblc_b]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_userauth", "(LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *)", "", "Argument[1]", "Argument[*0].Field[**session].Field[**userauth_pblc_b]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_banner_set", "(LIBSSH2_SESSION *,const char *)", "", "Argument[*1]", "Argument[*0].Field[*local].Field[**banner]", "value", "dfc-generated"] + - ["", "", True, "libssh2_banner_set", "(LIBSSH2_SESSION *,const char *)", "", "Argument[1]", "Argument[*0].Field[*local].Field[**banner]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_base64_decode", "(LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_close", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_direct_streamlocal_ex", "(LIBSSH2_SESSION *,const char *,const char *,int)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_direct_streamlocal_ex", "(LIBSSH2_SESSION *,const char *,const char *,int)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_direct_tcpip_ex", "(LIBSSH2_SESSION *,const char *,int,const char *,int)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_direct_tcpip_ex", "(LIBSSH2_SESSION *,const char *,int,const char *,int)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_eof", "(LIBSSH2_CHANNEL *)", "", "Argument[*0].Field[*remote].Field[*eof]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_flush_ex", "(LIBSSH2_CHANNEL *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_forward_accept", "(LIBSSH2_LISTENER *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_forward_accept", "(LIBSSH2_LISTENER *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_forward_cancel", "(LIBSSH2_LISTENER *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[*1]", "ReturnValue[*].Field[**host]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[1]", "ReturnValue[*].Field[**host]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[2]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[2]", "ReturnValue[*].Field[*port]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[4]", "ReturnValue[*].Field[*queue_maxsize]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_free", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_get_exit_signal", "(LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *)", "", "Argument[*0].Field[**exit_signal]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_get_exit_signal", "(LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *)", "", "Argument[*0].Field[*exit_signal]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_get_exit_signal", "(LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_get_exit_status", "(LIBSSH2_CHANNEL *)", "", "Argument[*0].Field[*exit_status]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_handle_extended_data2", "(LIBSSH2_CHANNEL *,int)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*extended_data_ignore_mode]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_handle_extended_data", "(LIBSSH2_CHANNEL *,int)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*extended_data_ignore_mode]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**open_channel].Field[**channel_type]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[*1]", "ReturnValue[*].Field[**channel_type]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**open_channel].Field[**channel_type]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[1]", "ReturnValue[*].Field[**channel_type]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[3]", "ReturnValue[*].Field[*remote].Field[*window_size]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[3]", "ReturnValue[*].Field[*remote].Field[*window_size_initial]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[4]", "ReturnValue[*].Field[*remote].Field[*packet_size]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_process_startup", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*process_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_read_ex", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_read_ex", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_read_ex", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_receive_window_adjust2", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*adjust_adjust]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_receive_window_adjust2", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*adjust_queue]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_receive_window_adjust2", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*window_size]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char)", "", "Argument[1]", "Argument[*0].Field[*adjust_adjust]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char)", "", "Argument[1]", "Argument[*0].Field[*adjust_queue]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*window_size]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_request_auth_agent", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_request_pty_ex", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int)", "", "Argument[2]", "Argument[*0].Field[*reqPTY_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_request_pty_ex", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int)", "", "Argument[4]", "Argument[*0].Field[*reqPTY_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_request_pty_size_ex", "(LIBSSH2_CHANNEL *,int,int,int,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_send_eof", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_set_blocking", "(LIBSSH2_CHANNEL *,int)", "", "Argument[1]", "Argument[*0].Field[**session].Field[*api_block_mode]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_setenv_ex", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*setenv_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_setenv_ex", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[4]", "Argument[*0].Field[*setenv_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_signal_ex", "(LIBSSH2_CHANNEL *,const char *,size_t)", "", "Argument[2]", "Argument[*0].Field[*sendsignal_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_wait_closed", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_wait_eof", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_window_read_ex", "(LIBSSH2_CHANNEL *,unsigned long *,unsigned long *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_window_read_ex", "(LIBSSH2_CHANNEL *,unsigned long *,unsigned long *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_window_write_ex", "(LIBSSH2_CHANNEL *,unsigned long *)", "", "Argument[*0].Field[*local].Field[*window_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_window_write_ex", "(LIBSSH2_CHANNEL *,unsigned long *)", "", "Argument[*0].Field[*local].Field[*window_size_initial]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_write_ex", "(LIBSSH2_CHANNEL *,int,const char *,size_t)", "", "Argument[3]", "Argument[*0].Field[*local].Field[*window_size]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_write_ex", "(LIBSSH2_CHANNEL *,int,const char *,size_t)", "", "Argument[3]", "Argument[*0].Field[*write_bufwrite]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_write_ex", "(LIBSSH2_CHANNEL *,int,const char *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_x11_req_ex", "(LIBSSH2_CHANNEL *,int,const char *,const char *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_hostkey_hash", "(LIBSSH2_SESSION *,int)", "", "Argument[*0].Field[*server_hostkey_sha1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "libssh2_hostkey_hash", "(LIBSSH2_SESSION *,int)", "", "Argument[*0].Field[*server_hostkey_sha256]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "libssh2_keepalive_config", "(LIBSSH2_SESSION *,int,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*keepalive_interval]", "value", "dfc-generated"] + - ["", "", True, "libssh2_keepalive_send", "(LIBSSH2_SESSION *,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "libssh2_keepalive_send", "(LIBSSH2_SESSION *,int *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*1]", "Argument[**6].Field[**name]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*1]", "Argument[**6].Field[**node].Field[**name]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*3]", "Argument[**6].Field[**key]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*3]", "Argument[**6].Field[**node].Field[**key]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[1]", "Argument[**6].Field[**name]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[1]", "Argument[**6].Field[**node].Field[**name]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[3]", "Argument[**6].Field[**key]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[3]", "Argument[**6].Field[**node].Field[**key]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[5]", "Argument[**6].Field[**node].Field[*typemask]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[5]", "Argument[**6].Field[*typemask]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*1]", "Argument[**8].Field[**name]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*1]", "Argument[**8].Field[**node].Field[**name]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*3]", "Argument[**8].Field[**key]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*3]", "Argument[**8].Field[**node].Field[**key]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*5]", "Argument[**8].Field[**node].Field[**comment]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[1]", "Argument[**8].Field[**name]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[1]", "Argument[**8].Field[**node].Field[**name]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[3]", "Argument[**8].Field[**key]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[3]", "Argument[**8].Field[**node].Field[**key]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[5]", "Argument[**8].Field[**node].Field[**comment]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[6]", "Argument[**8].Field[**node].Field[*comment_len]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[7]", "Argument[**8].Field[**node].Field[*typemask]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[7]", "Argument[**8].Field[*typemask]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_check", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*0]", "Argument[**5]", "taint", "df-generated"] + - ["", "", True, "libssh2_knownhost_checkp", "(LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*0]", "Argument[**6]", "taint", "df-generated"] + - ["", "", True, "libssh2_knownhost_get", "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "libssh2_knownhost_init", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue[*].Field[**session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_writeline", "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "libssh2_knownhost_writeline", "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int)", "", "Argument[*1]", "Argument[*4]", "taint", "df-generated"] + - ["", "", True, "libssh2_poll", "(LIBSSH2_POLLFD *,unsigned int,long)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[*1]", "Argument[*0].Field[**add_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[*3]", "Argument[*0].Field[**add_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[1]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[2]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[2]", "Argument[*0].Field[*add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[3]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[4]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[4]", "Argument[*0].Field[*add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[4]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[6]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "Argument[*0].Field[**pkeyInit_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "ReturnValue[*].Field[**channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_list_fetch", "(LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **)", "", "Argument[*0]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "libssh2_publickey_list_fetch", "(LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[*1]", "Argument[*0].Field[**remove_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[*3]", "Argument[*0].Field[**remove_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[1]", "Argument[*0].Field[**remove_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[2]", "Argument[*0].Field[**remove_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[2]", "Argument[*0].Field[*remove_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[3]", "Argument[*0].Field[**remove_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[4]", "Argument[*0].Field[**remove_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[4]", "Argument[*0].Field[*remove_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[4]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[*1]", "Argument[*0].Field[**scpRecv_command]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[*1]", "ReturnValue[*].Field[**session].Field[**scpRecv_command]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[0]", "Argument[*0].Field[**scpRecv_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[1]", "Argument[*0].Field[**scpRecv_command]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[1]", "ReturnValue[*].Field[**session].Field[**scpRecv_command]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[*1]", "Argument[*0].Field[**scpRecv_command]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[*1]", "ReturnValue[*].Field[**session].Field[**scpRecv_command]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[0]", "Argument[*0].Field[**scpRecv_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[1]", "Argument[*0].Field[**scpRecv_command]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[1]", "ReturnValue[*].Field[**session].Field[**scpRecv_command]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[0]", "Argument[*0].Field[**scpSend_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[2]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[2]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[3]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[3]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[4]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[4]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[5]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[5]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[0]", "Argument[*0].Field[**scpSend_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[2]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[2]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[3]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[3]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[4]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[4]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[5]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[5]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_session_abstract", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[**abstract]", "ReturnValue[**]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_abstract", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*abstract]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_banner_get", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*remote].Field[**banner]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_banner_get", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*remote].Field[*banner]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_banner_set", "(LIBSSH2_SESSION *,const char *)", "", "Argument[*1]", "Argument[*0].Field[*local].Field[**banner]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_banner_set", "(LIBSSH2_SESSION *,const char *)", "", "Argument[1]", "Argument[*0].Field[*local].Field[**banner]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_session_block_directions", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*socket_block_directions]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_callback_set2", "(LIBSSH2_SESSION *,int,libssh2_cb_generic *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_session_callback_set2", "(LIBSSH2_SESSION *,int,libssh2_cb_generic *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "libssh2_session_callback_set", "(LIBSSH2_SESSION *,int,void *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_session_callback_set", "(LIBSSH2_SESSION *,int,void *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "libssh2_session_disconnect_ex", "(LIBSSH2_SESSION *,int,const char *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_session_flag", "(LIBSSH2_SESSION *,int,int)", "", "Argument[2]", "Argument[*0].Field[*flag].Field[*compress]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_flag", "(LIBSSH2_SESSION *,int,int)", "", "Argument[2]", "Argument[*0].Field[*flag].Field[*quote_paths]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_flag", "(LIBSSH2_SESSION *,int,int)", "", "Argument[2]", "Argument[*0].Field[*flag].Field[*sigpipe]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_free", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_session_get_blocking", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*api_block_mode]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_get_read_timeout", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*packet_read_timeout]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_get_timeout", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*api_timeout]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_handshake", "(LIBSSH2_SESSION *,libssh2_socket_t)", "", "Argument[1]", "Argument[*0].Field[*socket_fd]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_hostkey", "(LIBSSH2_SESSION *,size_t *,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "libssh2_session_hostkey", "(LIBSSH2_SESSION *,size_t *,int *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_session_hostkey", "(LIBSSH2_SESSION *,size_t *,int *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[**3]", "ReturnValue[*].Field[***abstract]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[*3]", "ReturnValue[*].Field[**abstract]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[0]", "ReturnValue[*].Field[*alloc]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[1]", "ReturnValue[*].Field[*free]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[2]", "ReturnValue[*].Field[*realloc]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[3]", "ReturnValue[*].Field[*abstract]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_last_errno", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*err_code]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_last_error", "(LIBSSH2_SESSION *,char **,int *,int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_session_methods", "(LIBSSH2_SESSION *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_session_methods", "(LIBSSH2_SESSION *,int)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "libssh2_session_set_blocking", "(LIBSSH2_SESSION *,int)", "", "Argument[1]", "Argument[*0].Field[*api_block_mode]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[*2]", "Argument[*0].Field[**err_msg]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[1]", "Argument[*0].Field[*err_code]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[2]", "Argument[*0].Field[**err_msg]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[2]", "Argument[*0].Field[*err_msg]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_set_read_timeout", "(LIBSSH2_SESSION *,long)", "", "Argument[1]", "Argument[*0].Field[*packet_read_timeout]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_set_timeout", "(LIBSSH2_SESSION *,long)", "", "Argument[1]", "Argument[*0].Field[*api_timeout]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_startup", "(LIBSSH2_SESSION *,int)", "", "Argument[1]", "Argument[*0].Field[*socket_fd]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_supported_algs", "(LIBSSH2_SESSION *,int,const char ***)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_close_handle", "(LIBSSH2_SFTP_HANDLE *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_dtor", "(LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_fstat_ex", "(LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_fstatvfs", "(LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_STATVFS *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_fsync", "(LIBSSH2_SFTP_HANDLE *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_get_channel", "(LIBSSH2_SFTP *)", "", "Argument[*0].Field[**channel]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_get_channel", "(LIBSSH2_SFTP *)", "", "Argument[*0].Field[*channel]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "Argument[*0].Field[**sftpInit_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "ReturnValue[*].Field[**channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_last_error", "(LIBSSH2_SFTP *)", "", "Argument[*0].Field[*last_errno]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_mkdir_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,long)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_open_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int)", "", "Argument[0]", "ReturnValue[*].Field[*sftp]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_open_ex_r", "(LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *)", "", "Argument[0]", "ReturnValue[*].Field[*sftp]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_posix_rename_ex", "(LIBSSH2_SFTP *,const char *,size_t,const char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_read", "(LIBSSH2_SFTP_HANDLE *,char *,size_t)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_readdir_ex", "(LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[*1]", "Argument[*0].Field[**rename_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[*3]", "Argument[*0].Field[**rename_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[1]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[2]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[2]", "Argument[*0].Field[*rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[3]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[4]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[4]", "Argument[*0].Field[*rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[4]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[5]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rmdir_ex", "(LIBSSH2_SFTP *,const char *,unsigned int)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_stat_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_statvfs", "(LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_symlink_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_symlink_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int)", "", "Argument[4]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_unlink_ex", "(LIBSSH2_SFTP *,const char *,unsigned int)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_write", "(LIBSSH2_SFTP_HANDLE *,const char *,size_t)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[*1]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[*1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[*2]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[2]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_banner", "(LIBSSH2_SESSION *,char **)", "", "Argument[*0].Field[**userauth_banner]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_banner", "(LIBSSH2_SESSION *,char **)", "", "Argument[*0].Field[*userauth_banner]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**userauth_host_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[*6]", "Argument[*0].Field[**userauth_host_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[*8]", "Argument[*0].Field[**userauth_host_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*userauth_host_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[6]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[7]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[7]", "Argument[*0].Field[*userauth_host_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[7]", "Argument[*0].Field[*userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[8]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[9]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[9]", "Argument[*0].Field[*userauth_host_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[9]", "Argument[*0].Field[*userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_keyboard_interactive_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..))", "", "Argument[2]", "Argument[*0].Field[*userauth_kybd_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_list", "(LIBSSH2_SESSION *,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*userauth_list_data_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_password_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..))", "", "Argument[2]", "Argument[*0].Field[*userauth_pswd_data_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_password_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..))", "", "Argument[4]", "Argument[*0].Field[*userauth_pswd_data_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[3]", "Argument[*0].Field[**userauth_pblc_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[3]", "Argument[*0].Field[*userauth_pblc_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[3]", "Argument[*0].Field[*userauth_pblc_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey_frommemory", "(LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey_frommemory", "(LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey_sk", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey_sk", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"] + - ["", "", True, "plain_method", "(char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "poly1305_auth", "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "poly1305_auth", "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "poly1305_auth", "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "poly1305_auth", "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"] diff --git a/cpp/ql/lib/ext/generated/libuv/libuv.model.yml b/cpp/ql/lib/ext/generated/libuv/libuv.model.yml new file mode 100644 index 000000000000..e9621474db8f --- /dev/null +++ b/cpp/ql/lib/ext/generated/libuv/libuv.model.yml @@ -0,0 +1,646 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "uv__accept", "(int)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__count_bufs", "(const uv_buf_t[],unsigned int)", "", "Argument[*0].Field[*len]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__fs_poll_close", "(uv_fs_poll_t *)", "", "Argument[0]", "Argument[*0].Field[**loop].Field[*closing_handles]", "value", "dfc-generated"] + - ["", "", True, "uv__fs_post", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__fs_post", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__get_constrained_cpu", "(long long *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__getsockpeername", "(const uv_handle_t *,uv__peersockfunc,sockaddr *,int *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__io_active", "(const uv__io_t *,unsigned int)", "", "Argument[*0].Field[*pevents]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__io_active", "(const uv__io_t *,unsigned int)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__io_close", "(uv_loop_t *,uv__io_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "uv__io_close", "(uv_loop_t *,uv__io_t *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "uv__io_feed", "(uv_loop_t *,uv__io_t *)", "", "Argument[*1].Field[*pending_queue]", "Argument[*0].Field[*pending_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init", "(uv__io_t *,uv__io_cb,int)", "", "Argument[1]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init", "(uv__io_t *,uv__io_cb,int)", "", "Argument[2]", "Argument[*0].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**watchers]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[2]", "Argument[*0].Field[***watchers].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[2]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[3]", "Argument[*0].Field[***watchers].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[3]", "Argument[*0].Field[*nwatchers]", "taint", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[3]", "Argument[*1].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[4]", "Argument[*0].Field[***watchers].Field[*pevents]", "taint", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[4]", "Argument[*1].Field[*pevents]", "taint", "dfc-generated"] + - ["", "", True, "uv__io_start", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**watchers]", "value", "dfc-generated"] + - ["", "", True, "uv__io_start", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[***watchers].Field[*pevents]", "taint", "dfc-generated"] + - ["", "", True, "uv__io_start", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[2]", "Argument[*1].Field[*pevents]", "taint", "dfc-generated"] + - ["", "", True, "uv__io_stop", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[2]", "Argument[*1].Field[*pevents]", "taint", "dfc-generated"] + - ["", "", True, "uv__iou_fs_close", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_close", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_fsync_or_fdatasync", "(uv_loop_t *,uv_fs_t *,uint32_t)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_fsync_or_fdatasync", "(uv_loop_t *,uv_fs_t *,uint32_t)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_ftruncate", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_ftruncate", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_link", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_link", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_mkdir", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_mkdir", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_open", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_open", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_read_or_write", "(uv_loop_t *,uv_fs_t *,int)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_read_or_write", "(uv_loop_t *,uv_fs_t *,int)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_rename", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_rename", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_statx", "(uv_loop_t *,uv_fs_t *,int,int)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_statx", "(uv_loop_t *,uv_fs_t *,int,int)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_symlink", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_symlink", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_unlink", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_unlink", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__loop_configure", "(uv_loop_t *,uv_loop_option,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__make_close_pending", "(uv_handle_t *)", "", "Argument[0]", "Argument[*0].Field[**loop].Field[*closing_handles]", "value", "dfc-generated"] + - ["", "", True, "uv__next_timeout", "(const uv_loop_t *)", "", "Argument[*0].Field[*time]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__pipe_listen", "(uv_pipe_t *,int,uv_connection_cb)", "", "Argument[2]", "Argument[*0].Field[*connection_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__process_init", "(uv_loop_t *)", "", "Argument[0]", "Argument[*0].Field[*child_watcher].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__random_devurandom", "(void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__random_getrandom", "(void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__random_readpath", "(const char *,void *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv__read_start", "(uv_stream_t *,uv_alloc_cb,uv_read_cb)", "", "Argument[1]", "Argument[*0].Field[*alloc_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__read_start", "(uv_stream_t *,uv_alloc_cb,uv_read_cb)", "", "Argument[2]", "Argument[*0].Field[*read_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__search_path", "(const char *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__server_io", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "uv__server_io", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "uv__server_io", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "uv__socket_sockopt", "(uv_handle_t *,int,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__statx_to_stat", "(const uv__statx *,uv_stat_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "uv__strdup", "(const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv__strdup", "(const char *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv__stream_init", "(uv_loop_t *,uv_stream_t *,uv_handle_type)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__stream_init", "(uv_loop_t *,uv_stream_t *,uv_handle_type)", "", "Argument[2]", "Argument[*1].Field[*type]", "value", "dfc-generated"] + - ["", "", True, "uv__stream_open", "(uv_stream_t *,int,int)", "", "Argument[1]", "Argument[*0].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv__stream_open", "(uv_stream_t *,int,int)", "", "Argument[2]", "Argument[*0].Field[*flags]", "taint", "dfc-generated"] + - ["", "", True, "uv__strndup", "(const char *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv__strndup", "(const char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv__strscpy", "(char *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "uv__strscpy", "(char *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[**2]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[*0]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[*2]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[*2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[0]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[2]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[0]", "Argument[*1].Field[*connect_req]", "value", "dfc-generated"] + - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[1]", "Argument[*1].Field[**connect_req].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[4]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[4]", "Argument[*1].Field[**connect_req].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv__tcp_listen", "(uv_tcp_t *,int,uv_connection_cb)", "", "Argument[2]", "Argument[*0].Field[*connection_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__thread_getname", "(uv_thread_t *,char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__udp_init_ex", "(uv_loop_t *,uv_udp_t *,unsigned int,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_recv_start", "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)", "", "Argument[1]", "Argument[*0].Field[*alloc_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_recv_start", "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)", "", "Argument[2]", "Argument[*0].Field[*recv_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[*2].Field[*len]", "Argument[*1].Field[*send_queue_size]", "taint", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[*2]", "Argument[*0].Field[**bufs]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[*4]", "Argument[*0].Field[*u].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[2]", "Argument[*0].Field[**bufs]", "taint", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[3]", "Argument[*0].Field[*nbufs]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[4]", "Argument[*0].Field[*u].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[6]", "Argument[*0].Field[*send_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_try_send2", "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[])", "", "Argument[*2]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "uv__udp_try_send2", "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[])", "", "Argument[*4]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "uv__udp_try_send", "(uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int)", "", "Argument[*1].Field[*len]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[**0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__work_done", "(uv_async_t *)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "uv__work_submit", "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))", "", "Argument[*0]", "Argument[*1].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__work_submit", "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__work_submit", "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))", "", "Argument[3]", "Argument[*1].Field[*work]", "value", "dfc-generated"] + - ["", "", True, "uv__work_submit", "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))", "", "Argument[4]", "Argument[*1].Field[*done]", "value", "dfc-generated"] + - ["", "", True, "uv_accept", "(uv_stream_t *,uv_stream_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "uv_async_init", "(uv_loop_t *,uv_async_t *,uv_async_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_async_init", "(uv_loop_t *,uv_async_t *,uv_async_cb)", "", "Argument[2]", "Argument[*1].Field[*async_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_backend_fd", "(const uv_loop_t *)", "", "Argument[*0].Field[*backend_fd]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_backend_timeout", "(const uv_loop_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uv_buf_init", "(char *,unsigned int)", "", "Argument[*0]", "ReturnValue.Field[**base]", "value", "dfc-generated"] + - ["", "", True, "uv_buf_init", "(char *,unsigned int)", "", "Argument[0]", "ReturnValue.Field[*base]", "value", "dfc-generated"] + - ["", "", True, "uv_buf_init", "(char *,unsigned int)", "", "Argument[1]", "ReturnValue.Field[*len]", "value", "dfc-generated"] + - ["", "", True, "uv_check_init", "(uv_loop_t *,uv_check_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv_check_init", "(uv_loop_t *,uv_check_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_check_start", "(uv_check_t *,uv_check_cb)", "", "Argument[1]", "Argument[*0].Field[*check_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_close", "(uv_handle_t *,uv_close_cb)", "", "Argument[0]", "Argument[*0].Field[**loop].Field[*closing_handles]", "value", "dfc-generated"] + - ["", "", True, "uv_close", "(uv_handle_t *,uv_close_cb)", "", "Argument[1]", "Argument[*0].Field[*close_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[*0]", "Argument[**0].Field[**model]", "taint", "dfc-generated"] + - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[*0]", "Argument[**0].Field[*model]", "taint", "dfc-generated"] + - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[0]", "Argument[**0].Field[**model]", "taint", "dfc-generated"] + - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[0]", "Argument[**0].Field[*model]", "taint", "dfc-generated"] + - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_cwd", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_dlerror", "(const uv_lib_t *)", "", "Argument[*0].Field[**errmsg]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv_dlerror", "(const uv_lib_t *)", "", "Argument[*0].Field[*errmsg]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_dlsym", "(uv_lib_t *,const char *,void **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_err_name", "(int)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv_err_name_r", "(int,char *,size_t)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv_err_name_r", "(int,char *,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_err_name_r", "(int,char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv_err_name_r", "(int,char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_exepath", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_fileno", "(const uv_handle_t *,uv_os_fd_t *)", "", "Argument[*0].Field[*io_watcher].Field[*fd]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*mode]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*uid]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*gid]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_close", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_close", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_close", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_close", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*ptr]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**new_path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_event_getpath", "(uv_fs_event_t *,char *,size_t *)", "", "Argument[*0].Field[**path]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_event_getpath", "(uv_fs_event_t *,char *,size_t *)", "", "Argument[*0].Field[*path]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_event_getpath", "(uv_fs_event_t *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_event_init", "(uv_loop_t *,uv_fs_event_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_event_init", "(uv_loop_t *,uv_fs_event_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_event_start", "(uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_event_start", "(uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*mode]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*uid]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*gid]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fdatasync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fdatasync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fdatasync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fdatasync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fstat", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fstat", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fstat", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fstat", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fsync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fsync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fsync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fsync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*off]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*atime]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*mtime]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_get_path", "(const uv_fs_t *)", "", "Argument[*0].Field[**path]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_get_path", "(const uv_fs_t *)", "", "Argument[*0].Field[*path]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_fs_get_ptr", "(const uv_fs_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uv_fs_get_ptr", "(const uv_fs_t *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "uv_fs_get_ptr", "(const uv_fs_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "uv_fs_get_result", "(const uv_fs_t *)", "", "Argument[*0].Field[*result]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_fs_get_statbuf", "(uv_fs_t *)", "", "Argument[*0].Field[*statbuf]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_get_system_error", "(const uv_fs_t *)", "", "Argument[*0].Field[*result]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_get_type", "(const uv_fs_t *)", "", "Argument[*0].Field[*fs_type]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*uid]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*gid]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**new_path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*atime]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*mtime]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*mode]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*mode]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_getpath", "(uv_fs_poll_t *,char *,size_t *)", "", "Argument[*0].Field[**poll_ctx].Field[**path]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_getpath", "(uv_fs_poll_t *,char *,size_t *)", "", "Argument[*0].Field[**poll_ctx].Field[*path]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_getpath", "(uv_fs_poll_t *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_poll_init", "(uv_loop_t *,uv_fs_poll_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_init", "(uv_loop_t *,uv_fs_poll_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[*2]", "Argument[*0].Field[**poll_ctx].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[0]", "Argument[*0].Field[**poll_ctx].Field[*parent_handle]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**poll_ctx].Field[*poll_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[**poll_ctx].Field[*path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[3]", "Argument[*0].Field[**poll_ctx].Field[*interval]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**bufs]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**bufs]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*bufs]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*nbufs]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*off]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[6]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*ptr]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**new_path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir_next", "(uv_fs_t *,uv_dirent_t *)", "", "Argument[*0].Field[***ptr].Field[*d_name]", "Argument[*1].Field[**name]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir_next", "(uv_fs_t *,uv_dirent_t *)", "", "Argument[*0].Field[*result]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*off]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*bufsml].Field[*len]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[6]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**new_path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*atime]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*mtime]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**bufs]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**bufs]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*nbufs]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*off]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[6]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_get_osfhandle", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[*3]", "Argument[*1].Field[**hostname]", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[*4]", "Argument[*1].Field[**service]", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[*5]", "Argument[*1].Field[**hints]", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[2]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[3]", "Argument[*1].Field[**hostname]", "taint", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[4]", "Argument[*1].Field[**service]", "taint", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[5]", "Argument[*1].Field[**hints]", "taint", "dfc-generated"] + - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[*3]", "Argument[*1].Field[*storage]", "value", "dfc-generated"] + - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[2]", "Argument[*1].Field[*getnameinfo_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[3]", "Argument[*1].Field[*storage]", "taint", "dfc-generated"] + - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[4]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_handle_get_data", "(const uv_handle_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uv_handle_get_data", "(const uv_handle_t *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "uv_handle_get_data", "(const uv_handle_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "uv_handle_get_loop", "(const uv_handle_t *)", "", "Argument[*0].Field[**loop]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv_handle_get_loop", "(const uv_handle_t *)", "", "Argument[*0].Field[*loop]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_handle_get_type", "(const uv_handle_t *)", "", "Argument[*0].Field[*type]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_handle_set_data", "(uv_handle_t *,void *)", "", "Argument[**1]", "Argument[*0].Field[***data]", "value", "dfc-generated"] + - ["", "", True, "uv_handle_set_data", "(uv_handle_t *,void *)", "", "Argument[*1]", "Argument[*0].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "uv_handle_set_data", "(uv_handle_t *,void *)", "", "Argument[1]", "Argument[*0].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "uv_has_ref", "(const uv_handle_t *)", "", "Argument[*0].Field[*flags]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_idle_init", "(uv_loop_t *,uv_idle_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv_idle_init", "(uv_loop_t *,uv_idle_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_idle_start", "(uv_idle_t *,uv_idle_cb)", "", "Argument[1]", "Argument[*0].Field[*idle_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_if_indextoiid", "(unsigned int,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_if_indextoname", "(unsigned int,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_inet_ntop", "(int,const void *,char *,size_t)", "", "Argument[*1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_inet_ntop", "(int,const void *,char *,size_t)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[*0]", "Argument[**0].Field[*name]", "taint", "dfc-generated"] + - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[*1]", "Argument[**0].Field[*name]", "taint", "dfc-generated"] + - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[0]", "Argument[**0].Field[*name]", "taint", "dfc-generated"] + - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[1]", "Argument[**0].Field[*name]", "taint", "dfc-generated"] + - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_ip4_name", "(const sockaddr_in *,char *,size_t)", "", "Argument[*0].Field[*sin_addr]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_ip6_name", "(const sockaddr_in6 *,char *,size_t)", "", "Argument[*0].Field[*sin6_addr]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_ip_name", "(const sockaddr *,char *,size_t)", "", "Argument[*0].Field[*sin6_addr]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_ip_name", "(const sockaddr *,char *,size_t)", "", "Argument[*0].Field[*sin_addr]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_is_active", "(const uv_handle_t *)", "", "Argument[*0].Field[*flags]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_is_closing", "(const uv_handle_t *)", "", "Argument[*0].Field[*flags]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_key_delete", "(uv_key_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_key_get", "(uv_key_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_key_set", "(uv_key_t *,void *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_listen", "(uv_stream_t *,int,uv_connection_cb)", "", "Argument[2]", "Argument[*0].Field[*connection_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_loop_get_data", "(const uv_loop_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uv_loop_get_data", "(const uv_loop_t *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "uv_loop_get_data", "(const uv_loop_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "uv_loop_init", "(uv_loop_t *)", "", "Argument[0]", "Argument[*0].Field[*child_watcher].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_loop_init", "(uv_loop_t *)", "", "Argument[0]", "Argument[*0].Field[*wq_async].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_loop_set_data", "(uv_loop_t *,void *)", "", "Argument[**1]", "Argument[*0].Field[***data]", "value", "dfc-generated"] + - ["", "", True, "uv_loop_set_data", "(uv_loop_t *,void *)", "", "Argument[*1]", "Argument[*0].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "uv_loop_set_data", "(uv_loop_t *,void *)", "", "Argument[1]", "Argument[*0].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "uv_now", "(const uv_loop_t *)", "", "Argument[*0].Field[*time]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_open_osfhandle", "(uv_os_fd_t)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_os_environ", "(uv_env_item_t **,int *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_os_free_environ", "(uv_env_item_t *,int)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "uv_os_getenv", "(const char *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_os_gethostname", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_os_homedir", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_os_tmpdir", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_pipe_bind2", "(uv_pipe_t *,const char *,size_t,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**pipe_fname]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_bind2", "(uv_pipe_t *,const char *,size_t,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**pipe_fname]", "taint", "dfc-generated"] + - ["", "", True, "uv_pipe_bind", "(uv_pipe_t *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**pipe_fname]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_bind", "(uv_pipe_t *,const char *)", "", "Argument[1]", "Argument[*0].Field[**pipe_fname]", "taint", "dfc-generated"] + - ["", "", True, "uv_pipe_connect2", "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)", "", "Argument[0]", "Argument[*0].Field[**handle].Field[*connect_req]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect2", "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)", "", "Argument[0]", "Argument[*1].Field[*connect_req]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect2", "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect2", "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)", "", "Argument[5]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[0]", "Argument[*0].Field[**handle].Field[*connect_req]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[0]", "Argument[*1].Field[*connect_req]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[1]", "Argument[*1].Field[**connect_req].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[3]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[3]", "Argument[*1].Field[**connect_req].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_getpeername", "(const uv_pipe_t *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_pipe_getsockname", "(const uv_pipe_t *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_pipe_init", "(uv_loop_t *,uv_pipe_t *,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_init", "(uv_loop_t *,uv_pipe_t *,int)", "", "Argument[2]", "Argument[*1].Field[*ipc]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_open", "(uv_pipe_t *,uv_file)", "", "Argument[1]", "Argument[*0].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_pending_count", "(uv_pipe_t *)", "", "Argument[*0].Field[**queued_fds].Field[*offset]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_poll_init", "(uv_loop_t *,uv_poll_t *,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_poll_init", "(uv_loop_t *,uv_poll_t *,int)", "", "Argument[2]", "Argument[*1].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv_poll_init_socket", "(uv_loop_t *,uv_poll_t *,uv_os_sock_t)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_poll_init_socket", "(uv_loop_t *,uv_poll_t *,uv_os_sock_t)", "", "Argument[2]", "Argument[*1].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv_poll_start", "(uv_poll_t *,int,uv_poll_cb)", "", "Argument[2]", "Argument[*0].Field[*poll_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_prepare_init", "(uv_loop_t *,uv_prepare_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv_prepare_init", "(uv_loop_t *,uv_prepare_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_prepare_start", "(uv_prepare_t *,uv_prepare_cb)", "", "Argument[1]", "Argument[*0].Field[*prepare_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_print_active_handles", "(uv_loop_t *,FILE *)", "", "Argument[*0].Field[*handle_queue].Field[**next]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_print_active_handles", "(uv_loop_t *,FILE *)", "", "Argument[*0].Field[*handle_queue].Field[*next]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_print_all_handles", "(uv_loop_t *,FILE *)", "", "Argument[*0].Field[*handle_queue].Field[**next]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_print_all_handles", "(uv_loop_t *,FILE *)", "", "Argument[*0].Field[*handle_queue].Field[*next]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_process_get_pid", "(const uv_process_t *)", "", "Argument[*0].Field[*pid]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_queue_work", "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_queue_work", "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_queue_work", "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)", "", "Argument[2]", "Argument[*1].Field[*work_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_queue_work", "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)", "", "Argument[3]", "Argument[*1].Field[*after_work_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[**2]", "Argument[*1].Field[***buf]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[*2]", "Argument[*1].Field[**buf]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[2]", "Argument[*1].Field[*buf]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[3]", "Argument[*1].Field[*buflen]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_read_start", "(uv_stream_t *,uv_alloc_cb,uv_read_cb)", "", "Argument[1]", "Argument[*0].Field[*alloc_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_read_start", "(uv_stream_t *,uv_alloc_cb,uv_read_cb)", "", "Argument[2]", "Argument[*0].Field[*read_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_recv_buffer_size", "(uv_handle_t *,int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_req_get_data", "(const uv_req_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uv_req_get_data", "(const uv_req_t *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "uv_req_get_data", "(const uv_req_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "uv_req_get_type", "(const uv_req_t *)", "", "Argument[*0].Field[*type]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_req_set_data", "(uv_req_t *,void *)", "", "Argument[**1]", "Argument[*0].Field[***data]", "value", "dfc-generated"] + - ["", "", True, "uv_req_set_data", "(uv_req_t *,void *)", "", "Argument[*1]", "Argument[*0].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "uv_req_set_data", "(uv_req_t *,void *)", "", "Argument[1]", "Argument[*0].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "uv_sem_destroy", "(uv_sem_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_sem_post", "(uv_sem_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_sem_trywait", "(uv_sem_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_sem_wait", "(uv_sem_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_send_buffer_size", "(uv_handle_t *,int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[**1]", "ReturnValue[**]", "value", "dfc-generated"] + - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[*1]", "ReturnValue[**]", "taint", "dfc-generated"] + - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[1]", "ReturnValue[**]", "taint", "dfc-generated"] + - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[*0]", "Argument[*1].Field[**shutdown_req]", "value", "dfc-generated"] + - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[0]", "Argument[*1].Field[*shutdown_req]", "value", "dfc-generated"] + - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[1]", "Argument[*1].Field[**shutdown_req].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[2]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[2]", "Argument[*1].Field[**shutdown_req].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_signal_init", "(uv_loop_t *,uv_signal_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv_signal_init", "(uv_loop_t *,uv_signal_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_signal_start", "(uv_signal_t *,uv_signal_cb,int)", "", "Argument[1]", "Argument[*0].Field[*signal_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_signal_start", "(uv_signal_t *,uv_signal_cb,int)", "", "Argument[2]", "Argument[*0].Field[*signum]", "value", "dfc-generated"] + - ["", "", True, "uv_signal_start_oneshot", "(uv_signal_t *,uv_signal_cb,int)", "", "Argument[1]", "Argument[*0].Field[*signal_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_signal_start_oneshot", "(uv_signal_t *,uv_signal_cb,int)", "", "Argument[2]", "Argument[*0].Field[*signum]", "value", "dfc-generated"] + - ["", "", True, "uv_spawn", "(uv_loop_t *,uv_process_t *,const uv_process_options_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_stream_get_write_queue_size", "(const uv_stream_t *)", "", "Argument[*0].Field[*write_queue_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_strerror", "(int)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv_strerror_r", "(int,char *,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_strerror_r", "(int,char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv_strerror_r", "(int,char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_close_reset", "(uv_tcp_t *,uv_close_cb)", "", "Argument[0]", "Argument[*0].Field[**loop].Field[*closing_handles]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_close_reset", "(uv_tcp_t *,uv_close_cb)", "", "Argument[1]", "Argument[*0].Field[*close_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[0]", "Argument[*1].Field[*connect_req]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[1]", "Argument[*1].Field[**connect_req].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[3]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[3]", "Argument[*1].Field[**connect_req].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_getpeername", "(const uv_tcp_t *,sockaddr *,int *)", "", "Argument[*0].Field[*delayed_error]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_getpeername", "(const uv_tcp_t *,sockaddr *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_tcp_getsockname", "(const uv_tcp_t *,sockaddr *,int *)", "", "Argument[*0].Field[*delayed_error]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_getsockname", "(const uv_tcp_t *,sockaddr *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_tcp_init", "(uv_loop_t *,uv_tcp_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_init_ex", "(uv_loop_t *,uv_tcp_t *,unsigned int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_open", "(uv_tcp_t *,uv_os_sock_t)", "", "Argument[1]", "Argument[*0].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv_thread_detach", "(uv_thread_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_thread_getaffinity", "(uv_thread_t *,char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_thread_getname", "(uv_thread_t *,char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_thread_join", "(uv_thread_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_thread_setaffinity", "(uv_thread_t *,char *,char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_timer_get_due_in", "(const uv_timer_t *)", "", "Argument[*0].Field[**loop].Field[*time]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_timer_get_due_in", "(const uv_timer_t *)", "", "Argument[*0].Field[*timeout]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_timer_get_repeat", "(const uv_timer_t *)", "", "Argument[*0].Field[*repeat]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_timer_init", "(uv_loop_t *,uv_timer_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_timer_set_repeat", "(uv_timer_t *,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*repeat]", "value", "dfc-generated"] + - ["", "", True, "uv_timer_start", "(uv_timer_t *,uv_timer_cb,uint64_t,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*timer_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_timer_start", "(uv_timer_t *,uv_timer_cb,uint64_t,uint64_t)", "", "Argument[2]", "Argument[*0].Field[*timeout]", "taint", "dfc-generated"] + - ["", "", True, "uv_timer_start", "(uv_timer_t *,uv_timer_cb,uint64_t,uint64_t)", "", "Argument[3]", "Argument[*0].Field[*repeat]", "value", "dfc-generated"] + - ["", "", True, "uv_translate_sys_error", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_tty_init", "(uv_loop_t *,uv_tty_t *,int,uv_file,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_tty_init", "(uv_loop_t *,uv_tty_t *,int,uv_file,int)", "", "Argument[2]", "Argument[*1].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv_tty_set_mode", "(uv_tty_t *,uv_tty_mode_t)", "", "Argument[1]", "Argument[*0].Field[*mode]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_get_send_queue_count", "(const uv_udp_t *)", "", "Argument[*0].Field[*send_queue_count]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_udp_get_send_queue_size", "(const uv_udp_t *)", "", "Argument[*0].Field[*send_queue_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_udp_getpeername", "(const uv_udp_t *,sockaddr *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_getsockname", "(const uv_udp_t *,sockaddr *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_init", "(uv_loop_t *,uv_udp_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_init_ex", "(uv_loop_t *,uv_udp_t *,unsigned int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_open", "(uv_udp_t *,uv_os_sock_t)", "", "Argument[1]", "Argument[*0].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_recv_start", "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)", "", "Argument[1]", "Argument[*0].Field[*alloc_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_recv_start", "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)", "", "Argument[2]", "Argument[*0].Field[*recv_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[*2].Field[*len]", "Argument[*1].Field[*send_queue_size]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[*2]", "Argument[*0].Field[**bufs]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[*4]", "Argument[*0].Field[*u].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[2]", "Argument[*0].Field[**bufs]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[3]", "Argument[*0].Field[*nbufs]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[4]", "Argument[*0].Field[*u].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[5]", "Argument[*0].Field[*send_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_try_send2", "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int)", "", "Argument[*2]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_try_send2", "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int)", "", "Argument[*4]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_try_send", "(uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *)", "", "Argument[*1].Field[*len]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_utf16_to_wtf8", "(const uint16_t *,ssize_t,char **,size_t *)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "uv_utf16_to_wtf8", "(const uint16_t *,ssize_t,char **,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_utf16_to_wtf8", "(const uint16_t *,ssize_t,char **,size_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "uv_utf16_to_wtf8", "(const uint16_t *,ssize_t,char **,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[*2].Field[*len]", "Argument[*1].Field[*write_queue_size]", "taint", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[*2]", "Argument[*0].Field[**bufs]", "value", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[*4]", "Argument[*0].Field[**send_handle]", "value", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[2]", "Argument[*0].Field[**bufs]", "taint", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[3]", "Argument[*0].Field[*nbufs]", "value", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[4]", "Argument[*0].Field[*send_handle]", "value", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[5]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[*2].Field[*len]", "Argument[*1].Field[*write_queue_size]", "taint", "dfc-generated"] + - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[*2]", "Argument[*0].Field[**bufs]", "value", "dfc-generated"] + - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[2]", "Argument[*0].Field[**bufs]", "taint", "dfc-generated"] + - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[3]", "Argument[*0].Field[*nbufs]", "value", "dfc-generated"] + - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[4]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_wtf8_length_as_utf16", "(const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_wtf8_to_utf16", "(const char *,uint16_t *,size_t)", "", "Argument[*0]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "uv_wtf8_to_utf16", "(const char *,uint16_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_wtf8_to_utf16", "(const char *,uint16_t *,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_wtf8_to_utf16", "(const char *,uint16_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] diff --git a/cpp/ql/lib/ext/generated/nghttp2/nghttp2.model.yml b/cpp/ql/lib/ext/generated/nghttp2/nghttp2.model.yml new file mode 100644 index 000000000000..f48d7e3b232f --- /dev/null +++ b/cpp/ql/lib/ext/generated/nghttp2/nghttp2.model.yml @@ -0,0 +1,571 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[*2]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_buf_init2", "(nghttp2_buf *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[**end]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_buf_init2", "(nghttp2_buf *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*end]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_buf_reserve", "(nghttp2_buf *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[**end]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_buf_reserve", "(nghttp2_buf *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*end]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_buf_wrap_init", "(nghttp2_buf *,uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**end]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_buf_wrap_init", "(nghttp2_buf *,uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*end]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_buf_wrap_init", "(nghttp2_buf *,uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[**end]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_buf_wrap_init", "(nghttp2_buf *,uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[*end]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*4]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_keep]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*max_chunk]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*offset]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[4]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*5]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*max_chunk]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*chunk_keep]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[4]", "Argument[*0].Field[*offset]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[5]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[*3]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_keep]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*max_chunk]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_realloc", "(nghttp2_bufs *,size_t)", "", "Argument[1]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[*3]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_keep]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_used]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*max_chunk]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*3]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[**1]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[**1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[*1]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[2]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[*1]", "Argument[*0].Field[*data_prd].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[*1]", "ReturnValue[*].Field[*data_prd].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[1]", "Argument[*0].Field[*data_prd].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[1]", "ReturnValue[*].Field[*data_prd].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[*1]", "Argument[*0].Field[*data_prd].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[*1]", "ReturnValue[*].Field[*data_prd].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[1]", "Argument[*0].Field[*data_prd].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[1]", "ReturnValue[*].Field[*data_prd].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_downcase", "(uint8_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_extpri_from_uint8", "(nghttp2_extpri *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*inc]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_extpri_from_uint8", "(nghttp2_extpri *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*urgency]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_extpri_parse_priority", "(nghttp2_extpri *,const uint8_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_extpri_to_uint8", "(const nghttp2_extpri *)", "", "Argument[*0].Field[*inc]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_extpri_to_uint8", "(const nghttp2_extpri *)", "", "Argument[*0].Field[*urgency]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_add_pad", "(nghttp2_bufs *,nghttp2_frame_hd *,size_t,int)", "", "Argument[2]", "Argument[*1].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_altsvc_init", "(nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_altsvc_init", "(nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_altsvc_init", "(nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t)", "", "Argument[5]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_data_init", "(nghttp2_data *,uint8_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_data_init", "(nghttp2_data *,uint8_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[**4]", "Argument[*0].Field[***payload]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[*4]", "Argument[*0].Field[**payload]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*type]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[3]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[4]", "Argument[*0].Field[*payload]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[*3]", "Argument[*0].Field[**opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*last_stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[*error_code]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0].Field[*opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[4]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[4]", "Argument[*0].Field[*opaque_data_len]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_hd_init", "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_hd_init", "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*type]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_hd_init", "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_hd_init", "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)", "", "Argument[4]", "Argument[*0].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[*4]", "Argument[*0].Field[*pri_spec]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[*5]", "Argument[*0].Field[**nva]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*0].Field[*cat]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[4]", "Argument[*0].Field[*pri_spec]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[5]", "Argument[*0].Field[*nva]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[6]", "Argument[*0].Field[*nvlen]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_iv_copy", "(const nghttp2_settings_entry *,size_t,nghttp2_mem *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_iv_copy", "(const nghttp2_settings_entry *,size_t,nghttp2_mem *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_origin_init", "(nghttp2_extension *,nghttp2_origin_entry *,size_t)", "", "Argument[*1].Field[*origin_len]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_pack_frame_hd", "(uint8_t *,const nghttp2_frame_hd *)", "", "Argument[*1].Field[*flags]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_pack_frame_hd", "(uint8_t *,const nghttp2_frame_hd *)", "", "Argument[*1].Field[*type]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_pack_headers", "(nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "nghttp2_frame_pack_priority_spec", "(uint8_t *,const nghttp2_priority_spec *)", "", "Argument[*1].Field[*weight]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_pack_priority_spec", "(uint8_t *,const nghttp2_priority_spec *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_pack_push_promise", "(nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "nghttp2_frame_pack_settings_payload", "(uint8_t *,const nghttp2_settings_entry *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_pack_settings_payload", "(uint8_t *,const nghttp2_settings_entry *,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_ping_init", "(nghttp2_ping *,uint8_t,const uint8_t *)", "", "Argument[*2]", "Argument[*0].Field[*opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_ping_init", "(nghttp2_ping *,uint8_t,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_ping_init", "(nghttp2_ping *,uint8_t,const uint8_t *)", "", "Argument[2]", "Argument[*0].Field[*opaque_data]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_priority_init", "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)", "", "Argument[*2]", "Argument[*0].Field[*pri_spec]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_priority_init", "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_priority_init", "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)", "", "Argument[2]", "Argument[*0].Field[*pri_spec]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_priority_init", "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_priority_update_init", "(nghttp2_extension *,int32_t,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[*4]", "Argument[*0].Field[**nva]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*0].Field[*promised_stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[4]", "Argument[*0].Field[*nva]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[5]", "Argument[*0].Field[*nvlen]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_rst_stream_init", "(nghttp2_rst_stream *,int32_t,uint32_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_rst_stream_init", "(nghttp2_rst_stream *,int32_t,uint32_t)", "", "Argument[2]", "Argument[*0].Field[*error_code]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[*2]", "Argument[*0].Field[**iv]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[2]", "Argument[*0].Field[*iv]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[3]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[3]", "Argument[*0].Field[*niv]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_trail_padlen", "(nghttp2_frame *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_frame_hd", "(nghttp2_frame_hd *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_frame_hd", "(nghttp2_frame_hd *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*type]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_frame_hd", "(nghttp2_frame_hd *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*flags]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_frame_hd", "(nghttp2_frame_hd *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*type]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_goaway_payload2", "(nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*1]", "Argument[*0].Field[**opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_goaway_payload2", "(nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[**opaque_data]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_goaway_payload2", "(nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*opaque_data_len]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_goaway_payload", "(nghttp2_goaway *,const uint8_t *,uint8_t *,size_t)", "", "Argument[*2]", "Argument[*0].Field[**opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_goaway_payload", "(nghttp2_goaway *,const uint8_t *,uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[*opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_goaway_payload", "(nghttp2_goaway *,const uint8_t *,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0].Field[*opaque_data_len]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_headers_payload", "(nghttp2_headers *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*pri_spec].Field[*weight]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_headers_payload", "(nghttp2_headers *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*pri_spec].Field[*weight]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_ping_payload", "(nghttp2_ping *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_ping_payload", "(nghttp2_ping *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*opaque_data]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_priority_payload", "(nghttp2_priority *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*pri_spec].Field[*weight]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_priority_payload", "(nghttp2_priority *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*pri_spec].Field[*weight]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_priority_spec", "(nghttp2_priority_spec *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*weight]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_priority_spec", "(nghttp2_priority_spec *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*weight]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload", "(nghttp2_settings *,nghttp2_settings_entry *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**iv]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload", "(nghttp2_settings *,nghttp2_settings_entry *,size_t)", "", "Argument[1]", "Argument[*0].Field[*iv]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload", "(nghttp2_settings *,nghttp2_settings_entry *,size_t)", "", "Argument[2]", "Argument[*0].Field[*niv]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_window_update_init", "(nghttp2_window_update *,uint8_t,int32_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_window_update_init", "(nghttp2_window_update *,uint8_t,int32_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_window_update_init", "(nghttp2_window_update *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*window_size_increment]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[*5]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[4]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[5]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[5]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[7]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_bound", "(nghttp2_hd_deflater *,const nghttp2_nv *,size_t)", "", "Argument[*1].Field[*namelen]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_bound", "(nghttp2_hd_deflater *,const nghttp2_nv *,size_t)", "", "Argument[*1].Field[*valuelen]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_bound", "(nghttp2_hd_deflater *,const nghttp2_nv *,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_change_table_size", "(nghttp2_hd_deflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_change_table_size", "(nghttp2_hd_deflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*min_hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_get_dynamic_table_size", "(nghttp2_hd_deflater *)", "", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_get_max_dynamic_table_size", "(nghttp2_hd_deflater *)", "", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_get_table_entry", "(nghttp2_hd_deflater *,size_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd2", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd2", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd2", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_bufs", "(nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t)", "", "Argument[*2].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_bufs", "(nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t)", "", "Argument[*2].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_bufs", "(nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_vec2", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_vec2", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_vec2", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_vec", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_vec", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_vec", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_init2", "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)", "", "Argument[*2]", "Argument[*0].Field[*ctx].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_init2", "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_init2", "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*deflate_hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_init2", "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*ctx].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_init", "(nghttp2_hd_deflater *,nghttp2_mem *)", "", "Argument[*1]", "Argument[*0].Field[*ctx].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_init", "(nghttp2_hd_deflater *,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_new2", "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)", "", "Argument[*2]", "Argument[**0].Field[*ctx].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_new2", "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_new2", "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*deflate_hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_new2", "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[*ctx].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_new", "(nghttp2_hd_deflater **,size_t)", "", "Argument[1]", "Argument[**0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_new", "(nghttp2_hd_deflater **,size_t)", "", "Argument[1]", "Argument[**0].Field[*deflate_hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_entry_init", "(nghttp2_hd_entry *,nghttp2_hd_nv *)", "", "Argument[1]", "Argument[*0].Field[*nv]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_entry_init", "(nghttp2_hd_entry *,nghttp2_hd_nv *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_huff_decode", "(nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int)", "", "Argument[3]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_huff_encode_count", "(const uint8_t *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_hd_huff_encode_count", "(const uint8_t *,size_t)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_hd_inflate_change_table_size", "(nghttp2_hd_inflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_change_table_size", "(nghttp2_hd_inflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*min_hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_change_table_size", "(nghttp2_hd_inflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*settings_hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_get_dynamic_table_size", "(nghttp2_hd_inflater *)", "", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_get_max_dynamic_table_size", "(nghttp2_hd_inflater *)", "", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_get_table_entry", "(nghttp2_hd_inflater *,size_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_hd_inflate_hd2", "(nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_hd3", "(nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_hd", "(nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_hd_nv", "(nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_init", "(nghttp2_hd_inflater *,nghttp2_mem *)", "", "Argument[*1]", "Argument[*0].Field[*ctx].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_init", "(nghttp2_hd_inflater *,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_new2", "(nghttp2_hd_inflater **,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0].Field[*ctx].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_new2", "(nghttp2_hd_inflater **,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*ctx].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_table_get", "(nghttp2_hd_context *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_http_on_data_chunk", "(nghttp2_stream *,size_t)", "", "Argument[1]", "Argument[*0].Field[*recv_content_length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_http_on_header", "(nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int)", "", "Argument[*3]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "nghttp2_http_parse_priority", "(nghttp2_extpri *,const uint8_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[*2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_map_each", "(const nghttp2_map *,..(*)(..),void *)", "", "Argument[*0].Field[**table].Field[**data]", "Argument[*2].Field[**head]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_each", "(const nghttp2_map *,..(*)(..),void *)", "", "Argument[*0].Field[**table].Field[*data]", "Argument[*2].Field[*head]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[1]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_map_init", "(nghttp2_map *,nghttp2_mem *)", "", "Argument[*1]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_init", "(nghttp2_map *,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[**2]", "Argument[*0].Field[**table].Field[***data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[*2]", "Argument[*0].Field[**table].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[1]", "Argument[*0].Field[**table].Field[*key]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[1]", "Argument[*0].Field[**table]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[2]", "Argument[*0].Field[**table].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_size", "(const nghttp2_map *)", "", "Argument[*0].Field[*size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[*0]", "Argument[**0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[**0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[**0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_compare_name", "(const nghttp2_nv *,const nghttp2_nv *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_compare_name", "(const nghttp2_nv *,const nghttp2_nv *)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_option_new", "(nghttp2_option **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_max_continuations", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_continuations]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_max_deflate_dynamic_table_size", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_deflate_dynamic_table_size]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_max_outbound_ack", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_outbound_ack]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_max_reserved_remote_streams", "(nghttp2_option *,uint32_t)", "", "Argument[1]", "Argument[*0].Field[*max_reserved_remote_streams]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_max_send_header_block_length", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_send_header_block_length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_max_settings", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_settings]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_no_auto_ping_ack", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_auto_ping_ack]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_no_auto_window_update", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_auto_window_update]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_no_closed_streams", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_closed_streams]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_no_http_messaging", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_http_messaging]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_no_recv_client_magic", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_recv_client_magic]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_rfc9113_leading_and_trailing_ws_validation]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_peer_max_concurrent_streams", "(nghttp2_option *,uint32_t)", "", "Argument[1]", "Argument[*0].Field[*peer_max_concurrent_streams]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_server_fallback_rfc7540_priorities", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*server_fallback_rfc7540_priorities]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_stream_reset_rate_limit", "(nghttp2_option *,uint64_t,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*stream_reset_burst]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_stream_reset_rate_limit", "(nghttp2_option *,uint64_t,uint64_t)", "", "Argument[2]", "Argument[*0].Field[*stream_reset_rate]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_user_recv_extension_type", "(nghttp2_option *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*user_recv_ext_types]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_outbound_queue_init", "(nghttp2_outbound_queue *)", "", "Argument[*0].Field[**tail]", "Argument[*0].Field[**head]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_outbound_queue_init", "(nghttp2_outbound_queue *)", "", "Argument[*0].Field[*tail]", "Argument[*0].Field[*head]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_outbound_queue_push", "(nghttp2_outbound_queue *,nghttp2_outbound_item *)", "", "Argument[*1]", "Argument[*0].Field[**tail].Field[**qnext]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_outbound_queue_push", "(nghttp2_outbound_queue *,nghttp2_outbound_item *)", "", "Argument[*1]", "Argument[*0].Field[**tail]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_outbound_queue_push", "(nghttp2_outbound_queue *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[**tail].Field[*qnext]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_outbound_queue_push", "(nghttp2_outbound_queue *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*tail]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pack_settings_payload2", "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_pack_settings_payload2", "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_pack_settings_payload", "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_pack_settings_payload", "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_pq_init", "(nghttp2_pq *,nghttp2_less,nghttp2_mem *)", "", "Argument[*2]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pq_init", "(nghttp2_pq *,nghttp2_less,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*less]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pq_init", "(nghttp2_pq *,nghttp2_less,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pq_push", "(nghttp2_pq *,nghttp2_pq_entry *)", "", "Argument[*1]", "Argument[*0].Field[***q]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pq_push", "(nghttp2_pq *,nghttp2_pq_entry *)", "", "Argument[1]", "Argument[*0].Field[***q]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_pq_push", "(nghttp2_pq *,nghttp2_pq_entry *)", "", "Argument[1]", "Argument[*0].Field[**q]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pq_remove", "(nghttp2_pq *,nghttp2_pq_entry *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_pq_size", "(nghttp2_pq *)", "", "Argument[*0].Field[*length]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pq_top", "(nghttp2_pq *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_pq_top", "(nghttp2_pq *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_priority_spec_init", "(nghttp2_priority_spec *,int32_t,int32_t,int)", "", "Argument[1]", "Argument[*0].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_priority_spec_init", "(nghttp2_priority_spec *,int32_t,int32_t,int)", "", "Argument[2]", "Argument[*0].Field[*weight]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_priority_spec_init", "(nghttp2_priority_spec *,int32_t,int32_t,int)", "", "Argument[3]", "Argument[*0].Field[*exclusive]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_queue_back", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_queue_back", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "nghttp2_queue_back", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_queue_front", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_queue_front", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "nghttp2_queue_front", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_queue_init", "(nghttp2_queue *)", "", "Argument[*0].Field[**back]", "Argument[*0].Field[**front]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_init", "(nghttp2_queue *)", "", "Argument[*0].Field[*back]", "Argument[*0].Field[*front]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_pop", "(nghttp2_queue *)", "", "Argument[*0].Field[**front].Field[**next]", "Argument[*0].Field[**front]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_pop", "(nghttp2_queue *)", "", "Argument[*0].Field[**front].Field[*next]", "Argument[*0].Field[*front]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[**1]", "Argument[*0].Field[**back].Field[***data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[*0].Field[**back]", "Argument[*0].Field[**front]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[*0].Field[*back]", "Argument[*0].Field[*front]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[*1]", "Argument[*0].Field[**back].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[1]", "Argument[*0].Field[**back].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_ratelim_drain", "(nghttp2_ratelim *,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*val]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_ratelim_init", "(nghttp2_ratelim *,uint64_t,uint64_t)", "", "Argument[*0].Field[*burst]", "Argument[*0].Field[*val]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_ratelim_init", "(nghttp2_ratelim *,uint64_t,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*burst]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_ratelim_init", "(nghttp2_ratelim *,uint64_t,uint64_t)", "", "Argument[2]", "Argument[*0].Field[*rate]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_ratelim_update", "(nghttp2_ratelim *,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*tstamp]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_ratelim_update", "(nghttp2_ratelim *,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*val]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_get_buf", "(nghttp2_rcbuf *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[**0].Field[*base]", "Argument[**0].Field[**base]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0].Field[**base]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[**base]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[**base]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[*len]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new", "(nghttp2_rcbuf **,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new", "(nghttp2_rcbuf **,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*len]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_select_alpn", "(const unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[**0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_select_alpn", "(const unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[*2]", "Argument[**0]", "value", "df-generated"] + - ["", "", True, "nghttp2_select_alpn", "(const unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[*2]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "nghttp2_select_next_protocol", "(unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[**0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_select_next_protocol", "(unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[*2]", "Argument[**0]", "value", "df-generated"] + - ["", "", True, "nghttp2_select_next_protocol", "(unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[*2]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "nghttp2_session_add_item", "(nghttp2_session *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*ob_reg].Field[*tail]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_add_item", "(nghttp2_session *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*ob_syn].Field[*tail]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_add_item", "(nghttp2_session *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*ob_urgent].Field[*tail]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_add_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_add_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_add_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_callbacks_new", "(nghttp2_session_callbacks **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_before_frame_send_callback", "(nghttp2_session_callbacks *,nghttp2_before_frame_send_callback)", "", "Argument[1]", "Argument[*0].Field[*before_frame_send_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_data_source_read_length_callback2", "(nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback2)", "", "Argument[1]", "Argument[*0].Field[*read_length_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_data_source_read_length_callback", "(nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback)", "", "Argument[1]", "Argument[*0].Field[*read_length_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_error_callback2", "(nghttp2_session_callbacks *,nghttp2_error_callback2)", "", "Argument[1]", "Argument[*0].Field[*error_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_error_callback", "(nghttp2_session_callbacks *,nghttp2_error_callback)", "", "Argument[1]", "Argument[*0].Field[*error_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_begin_frame_callback", "(nghttp2_session_callbacks *,nghttp2_on_begin_frame_callback)", "", "Argument[1]", "Argument[*0].Field[*on_begin_frame_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_begin_headers_callback", "(nghttp2_session_callbacks *,nghttp2_on_begin_headers_callback)", "", "Argument[1]", "Argument[*0].Field[*on_begin_headers_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_data_chunk_recv_callback", "(nghttp2_session_callbacks *,nghttp2_on_data_chunk_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*on_data_chunk_recv_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_extension_chunk_recv_callback", "(nghttp2_session_callbacks *,nghttp2_on_extension_chunk_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*on_extension_chunk_recv_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_frame_not_send_callback", "(nghttp2_session_callbacks *,nghttp2_on_frame_not_send_callback)", "", "Argument[1]", "Argument[*0].Field[*on_frame_not_send_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_frame_recv_callback", "(nghttp2_session_callbacks *,nghttp2_on_frame_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*on_frame_recv_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_frame_send_callback", "(nghttp2_session_callbacks *,nghttp2_on_frame_send_callback)", "", "Argument[1]", "Argument[*0].Field[*on_frame_send_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_header_callback2", "(nghttp2_session_callbacks *,nghttp2_on_header_callback2)", "", "Argument[1]", "Argument[*0].Field[*on_header_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_header_callback", "(nghttp2_session_callbacks *,nghttp2_on_header_callback)", "", "Argument[1]", "Argument[*0].Field[*on_header_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_invalid_frame_recv_callback", "(nghttp2_session_callbacks *,nghttp2_on_invalid_frame_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*on_invalid_frame_recv_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_invalid_header_callback2", "(nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback2)", "", "Argument[1]", "Argument[*0].Field[*on_invalid_header_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_invalid_header_callback", "(nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback)", "", "Argument[1]", "Argument[*0].Field[*on_invalid_header_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_stream_close_callback", "(nghttp2_session_callbacks *,nghttp2_on_stream_close_callback)", "", "Argument[1]", "Argument[*0].Field[*on_stream_close_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_pack_extension_callback2", "(nghttp2_session_callbacks *,nghttp2_pack_extension_callback2)", "", "Argument[1]", "Argument[*0].Field[*pack_extension_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_pack_extension_callback", "(nghttp2_session_callbacks *,nghttp2_pack_extension_callback)", "", "Argument[1]", "Argument[*0].Field[*pack_extension_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_recv_callback2", "(nghttp2_session_callbacks *,nghttp2_recv_callback2)", "", "Argument[1]", "Argument[*0].Field[*recv_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_recv_callback", "(nghttp2_session_callbacks *,nghttp2_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*recv_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_select_padding_callback2", "(nghttp2_session_callbacks *,nghttp2_select_padding_callback2)", "", "Argument[1]", "Argument[*0].Field[*select_padding_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_select_padding_callback", "(nghttp2_session_callbacks *,nghttp2_select_padding_callback)", "", "Argument[1]", "Argument[*0].Field[*select_padding_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_send_callback2", "(nghttp2_session_callbacks *,nghttp2_send_callback2)", "", "Argument[1]", "Argument[*0].Field[*send_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_send_callback", "(nghttp2_session_callbacks *,nghttp2_send_callback)", "", "Argument[1]", "Argument[*0].Field[*send_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_send_data_callback", "(nghttp2_session_callbacks *,nghttp2_send_data_callback)", "", "Argument[1]", "Argument[*0].Field[*send_data_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_unpack_extension_callback", "(nghttp2_session_callbacks *,nghttp2_unpack_extension_callback)", "", "Argument[1]", "Argument[*0].Field[*unpack_extension_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_change_extpri_stream_priority", "(nghttp2_session *,int32_t,const nghttp2_extpri *,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_check_server_session", "(nghttp2_session *)", "", "Argument[*0].Field[*server]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*4]", "Argument[**0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*4]", "Argument[**0].Field[*streams].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[**0].Field[*mem]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[**0].Field[*streams].Field[**mem]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_consume", "(nghttp2_session *,int32_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*consumed_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_consume", "(nghttp2_session *,int32_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*recv_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_consume_connection", "(nghttp2_session *,size_t)", "", "Argument[1]", "Argument[*0].Field[*consumed_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_consume_connection", "(nghttp2_session *,size_t)", "", "Argument[1]", "Argument[*0].Field[*recv_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_destroy_stream", "(nghttp2_session *,nghttp2_stream *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_find_stream", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_find_stream", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_effective_local_window_size", "(nghttp2_session *)", "", "Argument[*0].Field[*local_window_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_effective_recv_data_length", "(nghttp2_session *)", "", "Argument[*0].Field[*recv_window_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_extpri_stream_priority", "(nghttp2_session *,nghttp2_extpri *,int32_t)", "", "Argument[2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_last_proc_stream_id", "(nghttp2_session *)", "", "Argument[*0].Field[*last_proc_stream_id]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_local_settings", "(nghttp2_session *,nghttp2_settings_id)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_local_window_size", "(nghttp2_session *)", "", "Argument[*0].Field[*local_window_size]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_local_window_size", "(nghttp2_session *)", "", "Argument[*0].Field[*recv_window_size]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_next_ob_item", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_next_ob_item", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_next_stream_id", "(nghttp2_session *)", "", "Argument[*0].Field[*next_stream_id]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_outbound_queue_size", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_remote_settings", "(nghttp2_session *,nghttp2_settings_id)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_remote_window_size", "(nghttp2_session *)", "", "Argument[*0].Field[*remote_window_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_stream", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_effective_local_window_size", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_effective_recv_data_length", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_local_close", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_local_window_size", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_raw", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_raw", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_remote_close", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_remote_window_size", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_user_data", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_user_data", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_user_data", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "nghttp2_session_on_goaway_received", "(nghttp2_session *,nghttp2_frame *)", "", "Argument[*1].Union[*(unnamed class/struct/union)].Field[*last_stream_id]", "Argument[*0].Field[*remote_last_stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_on_push_promise_received", "(nghttp2_session *,nghttp2_frame *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_on_request_headers_received", "(nghttp2_session *,nghttp2_frame *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_on_window_update_received", "(nghttp2_session *,nghttp2_frame *)", "", "Argument[*1].Union[*(unnamed class/struct/union)].Field[*window_size_increment]", "Argument[*0].Field[*remote_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[**4]", "ReturnValue[*].Field[***stream_user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[*4]", "ReturnValue[*].Field[**stream_user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[1]", "Argument[*0].Field[*streams].Field[**table]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[1]", "ReturnValue[*].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[2]", "ReturnValue[*].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[3]", "ReturnValue[*].Field[*state]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[4]", "ReturnValue[*].Field[*stream_user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_pack_data", "(nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *)", "", "Argument[*3]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_pop_next_ob_item", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_pop_next_ob_item", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_recv", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*4]", "Argument[**0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*4]", "Argument[**0].Field[*streams].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[**0].Field[*mem]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[**0].Field[*streams].Field[**mem]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_local_window_size", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*local_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_local_window_size", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*recv_reduction]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_local_window_size", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*recv_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_next_stream_id", "(nghttp2_session *,int32_t)", "", "Argument[1]", "Argument[*0].Field[*next_stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_user_data", "(nghttp2_session *,void *)", "", "Argument[**1]", "Argument[*0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_user_data", "(nghttp2_session *,void *)", "", "Argument[*1]", "Argument[*0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_user_data", "(nghttp2_session *,void *)", "", "Argument[1]", "Argument[*0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_update_local_settings", "(nghttp2_session *,nghttp2_settings_entry *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_update_local_settings", "(nghttp2_session *,nghttp2_settings_entry *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_update_recv_connection_window_size", "(nghttp2_session *,size_t)", "", "Argument[1]", "Argument[*0].Field[*recv_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_update_recv_stream_window_size", "(nghttp2_session *,nghttp2_stream *,size_t,int)", "", "Argument[2]", "Argument[*1].Field[*recv_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_upgrade2", "(nghttp2_session *,const uint8_t *,size_t,int,void *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_upgrade", "(nghttp2_session *,const uint8_t *,size_t,void *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_stream_attach_item", "(nghttp2_stream *,nghttp2_outbound_item *)", "", "Argument[*1]", "Argument[*0].Field[**item]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_attach_item", "(nghttp2_stream *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*item]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_defer_item", "(nghttp2_stream *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*flags]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_stream_get_stream_id", "(nghttp2_stream *)", "", "Argument[*0].Field[*stream_id]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[**6]", "Argument[*0].Field[***stream_user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[*0].Field[*http_extpri]", "Argument[*0].Field[*extpri]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[*6]", "Argument[*0].Field[**stream_user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[1]", "Argument[*0].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[2]", "Argument[*0].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[3]", "Argument[*0].Field[*state]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[4]", "Argument[*0].Field[*remote_window_size]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[5]", "Argument[*0].Field[*local_window_size]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[6]", "Argument[*0].Field[*stream_user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_resume_deferred_item", "(nghttp2_stream *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*flags]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_stream_shutdown", "(nghttp2_stream *,nghttp2_shut_flag)", "", "Argument[1]", "Argument[*0].Field[*shut_flags]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_stream_update_local_initial_window_size", "(nghttp2_stream *,int32_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*local_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_stream_update_local_initial_window_size", "(nghttp2_stream *,int32_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*local_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_stream_update_remote_initial_window_size", "(nghttp2_stream *,int32_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*remote_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_stream_update_remote_initial_window_size", "(nghttp2_stream *,int32_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*remote_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_data2", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_data", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_data_shared", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_headers", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_submit_push_promise", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_request2", "(nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_request", "(nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_response2", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_submit_response2", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_response", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_submit_response", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_trailer", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_submit_window_update", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[*0]", "Argument[3]", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_window_update", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_window_update", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[2]", "Argument[3]", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_window_update", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "sfparse_base64decode", "(sfparse_vec *,const sfparse_vec *)", "", "Argument[*0].Field[*base]", "Argument[*0].Field[*len]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_parser_dict", "(sfparse_parser *,sfparse_vec *,sfparse_value *)", "", "Argument[*1].Field[*base]", "Argument[*1].Field[*len]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[*0].Field[**end]", "Argument[*0].Field[**pos]", "value", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[*0].Field[*end]", "Argument[*0].Field[*pos]", "value", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**end]", "value", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**pos]", "value", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[**end]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*end]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*pos]", "value", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[**end]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[*end]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_parser_inner_list", "(sfparse_parser *,sfparse_value *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "sfparse_parser_item", "(sfparse_parser *,sfparse_value *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "sfparse_parser_list", "(sfparse_parser *,sfparse_value *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "sfparse_parser_param", "(sfparse_parser *,sfparse_vec *,sfparse_value *)", "", "Argument[*1].Field[*base]", "Argument[*1].Field[*len]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_pctdecode", "(sfparse_vec *,const sfparse_vec *)", "", "Argument[*0].Field[*base]", "Argument[*0].Field[*len]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_unescape", "(sfparse_vec *,const sfparse_vec *)", "", "Argument[*0].Field[*base]", "Argument[*0].Field[*len]", "taint", "dfc-generated"] diff --git a/cpp/ql/lib/ext/generated/zlib/zlib.model.yml b/cpp/ql/lib/ext/generated/zlib/zlib.model.yml new file mode 100644 index 000000000000..431341c483e8 --- /dev/null +++ b/cpp/ql/lib/ext/generated/zlib/zlib.model.yml @@ -0,0 +1,168 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[*1]", "Argument[*0].Field[**pending_buf]", "value", "dfc-generated"] + - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[1]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[2]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[2]", "Argument[*0].Field[*pending]", "taint", "dfc-generated"] + - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[3]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[3]", "Argument[*0].Field[*bi_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[*1]", "Argument[*0].Field[**pending_buf]", "value", "dfc-generated"] + - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[1]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[2]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[2]", "Argument[*0].Field[*pending]", "taint", "dfc-generated"] + - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[3]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[3]", "Argument[*0].Field[*bi_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_tally", "(deflate_state *,unsigned int,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**sym_buf]", "value", "dfc-generated"] + - ["", "", True, "_tr_tally", "(deflate_state *,unsigned int,unsigned int)", "", "Argument[2]", "Argument[*0].Field[**sym_buf]", "value", "dfc-generated"] + - ["", "", True, "adler32", "(uLong,const Bytef *,uInt)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32", "(uLong,const Bytef *,uInt)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32", "(uLong,const Bytef *,uInt)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_combine64", "(uLong,uLong,off64_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_combine64", "(uLong,uLong,off64_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_combine64", "(uLong,uLong,off64_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_combine", "(uLong,uLong,off_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_combine", "(uLong,uLong,off_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_combine", "(uLong,uLong,off_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_z", "(uLong,const Bytef *,z_size_t)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_z", "(uLong,const Bytef *,z_size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_z", "(uLong,const Bytef *,z_size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "compress2", "(Bytef *,uLongf *,const Bytef *,uLong,int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "compress", "(Bytef *,uLongf *,const Bytef *,uLong)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "compressBound", "(uLong)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32", "(uLong,unsigned long,const Bytef *,const unsigned char *,uInt)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32", "(uLong,unsigned long,const Bytef *,const unsigned char *,uInt)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32", "(uLong,unsigned long,const Bytef *,const unsigned char *,uInt)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_combine64", "(uLong,uLong,off64_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_combine64", "(uLong,uLong,off64_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_combine", "(uLong,uLong,off_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_combine", "(uLong,uLong,off_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_combine_op", "(uLong,uLong,uLong)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_combine_op", "(uLong,uLong,uLong)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_z", "(uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_z", "(uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_z", "(uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "deflateBound", "(z_streamp,uLong)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "deflateCopy", "(z_streamp,z_streamp)", "", "Argument[*1]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "deflateCopy", "(z_streamp,z_streamp)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "deflateGetDictionary", "(z_streamp,Bytef *,uInt *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "deflateGetDictionary", "(z_streamp,Bytef *,uInt *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "deflatePending", "(z_streamp,unsigned int *,int *)", "", "Argument[*0].Field[**state].Field[*bi_valid]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "deflatePending", "(z_streamp,unsigned int *,int *)", "", "Argument[*0].Field[**state].Field[*pending]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "deflateResetKeep", "(z_streamp)", "", "Argument[*0].Field[*total_out]", "Argument[*0].Field[*total_in]", "value", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[*1]", "Argument[*0].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[*1]", "Argument[*0].Field[*adler]", "taint", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[1]", "Argument[*0].Field[**next_in]", "taint", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[1]", "Argument[*0].Field[*adler]", "taint", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[1]", "Argument[*0].Field[*next_in]", "value", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[2]", "Argument[*0].Field[**next_in]", "taint", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[2]", "Argument[*0].Field[*avail_in]", "value", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[2]", "Argument[*0].Field[*next_in]", "taint", "dfc-generated"] + - ["", "", True, "deflateSetHeader", "(z_streamp,gz_headerp)", "", "Argument[*1]", "Argument[*0].Field[**state].Field[**gzhead]", "value", "dfc-generated"] + - ["", "", True, "deflateSetHeader", "(z_streamp,gz_headerp)", "", "Argument[1]", "Argument[*0].Field[**state].Field[*gzhead]", "value", "dfc-generated"] + - ["", "", True, "deflateUsed", "(z_streamp,int *)", "", "Argument[*0].Field[**state].Field[*bi_used]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[*0].Field[**path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[*0].Field[*path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[*2]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[1]", "Argument[*0].Field[*err]", "value", "dfc-generated"] + - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[2]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzbuffer", "(gzFile,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*want]", "value", "dfc-generated"] + - ["", "", True, "gzclearerr", "(gzFile)", "", "Argument[*0].Field[**path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzclearerr", "(gzFile)", "", "Argument[*0].Field[*path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzclose", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzclose_w", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzdirect", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[*1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"] + - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[0]", "ReturnValue[*].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"] + - ["", "", True, "gzeof", "(gzFile)", "", "Argument[*0].Field[*past]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "gzerror", "(gzFile,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "gzerror", "(gzFile,int *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzerror", "(gzFile,int *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "gzflush", "(gzFile,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzfread", "(voidp,z_size_t,z_size_t,gzFile)", "", "Argument[*0]", "Argument[*3].Field[*strm].Field[**next_out]", "value", "dfc-generated"] + - ["", "", True, "gzfread", "(voidp,z_size_t,z_size_t,gzFile)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "gzfread", "(voidp,z_size_t,z_size_t,gzFile)", "", "Argument[0]", "Argument[*3].Field[*strm].Field[**next_out]", "taint", "dfc-generated"] + - ["", "", True, "gzfread", "(voidp,z_size_t,z_size_t,gzFile)", "", "Argument[0]", "Argument[*3].Field[*strm].Field[*next_out]", "value", "dfc-generated"] + - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[**0]", "Argument[*3].Field[**in]", "value", "dfc-generated"] + - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[**0]", "Argument[*3].Field[*strm].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[*0]", "Argument[**0]", "value", "dfc-generated"] + - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[*0]", "Argument[*3].Field[**in]", "value", "dfc-generated"] + - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[*0]", "Argument[*3].Field[*strm].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "gzgetc", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzgetc_", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzgets", "(gzFile,char *,int)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "gzgets", "(gzFile,char *,int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "gzgets", "(gzFile,char *,int)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "gzoffset64", "(gzFile)", "", "Argument[*0].Field[*strm].Field[*avail_in]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gzoffset", "(gzFile)", "", "Argument[*0].Field[*strm].Field[*avail_in]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[*1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"] + - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"] + - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[*1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"] + - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"] + - ["", "", True, "gzputc", "(gzFile,int)", "", "Argument[1]", "Argument[*0].Field[**in]", "value", "dfc-generated"] + - ["", "", True, "gzputc", "(gzFile,int)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "gzputc", "(gzFile,int)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[*1]", "Argument[*0].Field[**in]", "value", "dfc-generated"] + - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[*1]", "Argument[*0].Field[*strm].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[1]", "Argument[*0].Field[**in]", "taint", "dfc-generated"] + - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[**next_in]", "taint", "dfc-generated"] + - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[*next_in]", "value", "dfc-generated"] + - ["", "", True, "gzread", "(gzFile,voidp,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[*strm].Field[**next_out]", "value", "dfc-generated"] + - ["", "", True, "gzread", "(gzFile,voidp,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[**next_out]", "taint", "dfc-generated"] + - ["", "", True, "gzread", "(gzFile,voidp,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[*next_out]", "value", "dfc-generated"] + - ["", "", True, "gzread", "(gzFile,voidp,unsigned int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "gzrewind", "(gzFile)", "", "Argument[*0].Field[**path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzrewind", "(gzFile)", "", "Argument[*0].Field[*path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzseek64", "(gzFile,off64_t,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzseek64", "(gzFile,off64_t,int)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "gzseek64", "(gzFile,off64_t,int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzseek", "(gzFile,off_t,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzseek", "(gzFile,off_t,int)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "gzseek", "(gzFile,off_t,int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzsetparams", "(gzFile,int,int)", "", "Argument[1]", "Argument[*0].Field[*level]", "value", "dfc-generated"] + - ["", "", True, "gzsetparams", "(gzFile,int,int)", "", "Argument[2]", "Argument[*0].Field[*strategy]", "value", "dfc-generated"] + - ["", "", True, "gztell64", "(gzFile)", "", "Argument[*0].Field[*skip]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gztell64", "(gzFile)", "", "Argument[*0].Field[*x].Field[*pos]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gztell", "(gzFile)", "", "Argument[*0].Field[*skip]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gztell", "(gzFile)", "", "Argument[*0].Field[*x].Field[*pos]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gzungetc", "(int,gzFile)", "", "Argument[0]", "Argument[*1].Field[*x].Field[**next]", "value", "dfc-generated"] + - ["", "", True, "gzungetc", "(int,gzFile)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "gzvprintf", "(gzFile,const char *,va_list)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[**1]", "Argument[*0].Field[**in]", "value", "dfc-generated"] + - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[**1]", "Argument[*0].Field[*strm].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**in]", "value", "dfc-generated"] + - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[*strm].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[2]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "inflateCodesUsed", "(z_streamp)", "", "Argument[*0].Field[**state].Field[*next]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "inflateCopy", "(z_streamp,z_streamp)", "", "Argument[*1]", "Argument[*0]", "value", "df-generated"] + - ["", "", True, "inflateCopy", "(z_streamp,z_streamp)", "", "Argument[0]", "Argument[*0].Field[**state].Field[*strm]", "value", "dfc-generated"] + - ["", "", True, "inflateCopy", "(z_streamp,z_streamp)", "", "Argument[1]", "Argument[*0].Field[**state].Field[**strm]", "taint", "dfc-generated"] + - ["", "", True, "inflateCopy", "(z_streamp,z_streamp)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "inflateGetDictionary", "(z_streamp,Bytef *,uInt *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "inflateGetDictionary", "(z_streamp,Bytef *,uInt *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "inflateMark", "(z_streamp)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "inflate_fast", "(z_streamp,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**next_out]", "taint", "dfc-generated"] + - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[*3]", "Argument[**3].Field[*val]", "taint", "dfc-generated"] + - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[*3]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[3]", "Argument[**3].Field[*val]", "taint", "dfc-generated"] + - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[3]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "uncompress2", "(Bytef *,uLongf *,const Bytef *,uLong *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uncompress2", "(Bytef *,uLongf *,const Bytef *,uLong *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "uncompress", "(Bytef *,uLongf *,const Bytef *,uLong)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "zError", "(int)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 3c3c7102df4b..d5a621820818 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 5.1.0 +version: 5.2.1-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/lib/semmle/code/cpp/Function.qll b/cpp/ql/lib/semmle/code/cpp/Function.qll index cb3b00b64ade..a4d0cff2c379 100644 --- a/cpp/ql/lib/semmle/code/cpp/Function.qll +++ b/cpp/ql/lib/semmle/code/cpp/Function.qll @@ -901,7 +901,7 @@ class BuiltInFunction extends Function { /** Gets a dummy location for the built-in function. */ override Location getLocation() { suppressUnusedThis(this) and - result instanceof UnknownDefaultLocation + result instanceof UnknownLocation } } diff --git a/cpp/ql/lib/semmle/code/cpp/Location.qll b/cpp/ql/lib/semmle/code/cpp/Location.qll index c7579f5710a7..8b0a78f91aa8 100644 --- a/cpp/ql/lib/semmle/code/cpp/Location.qll +++ b/cpp/ql/lib/semmle/code/cpp/Location.qll @@ -8,7 +8,7 @@ import semmle.code.cpp.File /** * A location of a C/C++ artifact. */ -class Location extends @location { +class Location extends @location_default { /** Gets the container corresponding to this location. */ pragma[nomagic] Container getContainer() { this.fullLocationInfo(result, _, _, _, _) } @@ -53,9 +53,7 @@ class Location extends @location { predicate fullLocationInfo( Container container, int startline, int startcolumn, int endline, int endcolumn ) { - locations_default(this, unresolveElement(container), startline, startcolumn, endline, endcolumn) or - locations_expr(this, unresolveElement(container), startline, startcolumn, endline, endcolumn) or - locations_stmt(this, unresolveElement(container), startline, startcolumn, endline, endcolumn) + locations_default(this, unresolveElement(container), startline, startcolumn, endline, endcolumn) } /** @@ -146,30 +144,32 @@ class Locatable extends Element { } * expressions, one for statements and one for other program elements. */ class UnknownLocation extends Location { - UnknownLocation() { this.getFile().getAbsolutePath() = "" } + UnknownLocation() { + this.getFile().getAbsolutePath() = "" and locations_default(this, _, 0, 0, 0, 0) + } } /** * A dummy location which is used when something doesn't have a location in * the source code but needs to have a `Location` associated with it. + * + * DEPRECATED: use `UnknownLocation` */ -class UnknownDefaultLocation extends UnknownLocation { - UnknownDefaultLocation() { locations_default(this, _, 0, 0, 0, 0) } -} +deprecated class UnknownDefaultLocation extends UnknownLocation { } /** * A dummy location which is used when an expression doesn't have a * location in the source code but needs to have a `Location` associated * with it. + * + * DEPRECATED: use `UnknownLocation` */ -class UnknownExprLocation extends UnknownLocation { - UnknownExprLocation() { locations_expr(this, _, 0, 0, 0, 0) } -} +deprecated class UnknownExprLocation extends UnknownLocation { } /** * A dummy location which is used when a statement doesn't have a location * in the source code but needs to have a `Location` associated with it. + * + * DEPRECATED: use `UnknownLocation` */ -class UnknownStmtLocation extends UnknownLocation { - UnknownStmtLocation() { locations_stmt(this, _, 0, 0, 0, 0) } -} +deprecated class UnknownStmtLocation extends UnknownLocation { } diff --git a/cpp/ql/lib/semmle/code/cpp/Macro.qll b/cpp/ql/lib/semmle/code/cpp/Macro.qll index bd916d4bc4e8..cbffc90d17c1 100644 --- a/cpp/ql/lib/semmle/code/cpp/Macro.qll +++ b/cpp/ql/lib/semmle/code/cpp/Macro.qll @@ -154,8 +154,9 @@ class MacroInvocation extends MacroAccess { * well. */ Locatable getAnAffectedElement() { - inmacroexpansion(unresolveElement(result), underlyingElement(this)) or - macrolocationbind(underlyingElement(this), result.getLocation()) + inmacroexpansion(unresolveElement(result), underlyingElement(this)) + or + macrolocationbind(underlyingElement(this), result.getLocation()) and this != result } /** @@ -259,7 +260,8 @@ predicate inMacroExpansion(Locatable element) { inmacroexpansion(unresolveElement(element), _) or macroLocation(element.getLocation()) and - not topLevelMacroAccess(element) + not topLevelMacroAccess(element) and + not element.getLocation() instanceof UnknownLocation } /** diff --git a/cpp/ql/lib/semmle/code/cpp/Namespace.qll b/cpp/ql/lib/semmle/code/cpp/Namespace.qll index dc138f67524b..b545f9381974 100644 --- a/cpp/ql/lib/semmle/code/cpp/Namespace.qll +++ b/cpp/ql/lib/semmle/code/cpp/Namespace.qll @@ -40,7 +40,7 @@ class Namespace extends NameQualifyingElement, @namespace { override Location getLocation() { if strictcount(this.getADeclarationEntry()) = 1 then result = this.getADeclarationEntry().getLocation() - else result instanceof UnknownDefaultLocation + else result instanceof UnknownLocation } /** Gets the simple name of this namespace. */ @@ -99,6 +99,11 @@ class Namespace extends NameQualifyingElement, @namespace { /** Gets a file which declares (part of) this namespace. */ File getAFile() { result = this.getADeclarationEntry().getLocation().getFile() } + + /** Gets an attribute of this namespace. */ + Attribute getAnAttribute() { + namespaceattributes(underlyingElement(this), unresolveElement(result)) + } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/Specifier.qll b/cpp/ql/lib/semmle/code/cpp/Specifier.qll index 28ba21956561..f7af9501fb26 100644 --- a/cpp/ql/lib/semmle/code/cpp/Specifier.qll +++ b/cpp/ql/lib/semmle/code/cpp/Specifier.qll @@ -13,7 +13,7 @@ class Specifier extends Element, @specifier { /** Gets a dummy location for the specifier. */ override Location getLocation() { exists(this) and - result instanceof UnknownDefaultLocation + result instanceof UnknownLocation } override string getAPrimaryQlClass() { result = "Specifier" } diff --git a/cpp/ql/lib/semmle/code/cpp/TemplateParameter.qll b/cpp/ql/lib/semmle/code/cpp/TemplateParameter.qll index e4efb4e4636b..6ece9cb82a46 100644 --- a/cpp/ql/lib/semmle/code/cpp/TemplateParameter.qll +++ b/cpp/ql/lib/semmle/code/cpp/TemplateParameter.qll @@ -105,7 +105,7 @@ class AutoType extends TypeTemplateParameter { override string getAPrimaryQlClass() { result = "AutoType" } - override Location getLocation() { result instanceof UnknownDefaultLocation } + override Location getLocation() { result instanceof UnknownLocation } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/Type.qll b/cpp/ql/lib/semmle/code/cpp/Type.qll index aa3fa54835cd..35b56882d7be 100644 --- a/cpp/ql/lib/semmle/code/cpp/Type.qll +++ b/cpp/ql/lib/semmle/code/cpp/Type.qll @@ -290,7 +290,7 @@ class Type extends Locatable, @type { */ Type stripType() { result = this } - override Location getLocation() { result instanceof UnknownDefaultLocation } + override Location getLocation() { result instanceof UnknownLocation } } /** @@ -352,7 +352,23 @@ class UnknownType extends BuiltInType { private predicate isArithmeticType(@builtintype type, int kind) { builtintypes(type, _, kind, _, _, _) and kind >= 4 and - kind != 34 // Exclude decltype(nullptr) + kind != 34 and // Exclude decltype(nullptr) + kind != 63 // Exclude __SVCount_t +} + +/** + * The Arm scalable vector count type. + * + * In the following example, `a` is declared using the scalable vector + * count type: + * ``` + * svcount_t a; + * ``` + */ +class ScalableVectorCount extends BuiltInType { + ScalableVectorCount() { builtintypes(underlyingElement(this), _, 63, _, _, _) } + + override string getAPrimaryQlClass() { result = "ScalableVectorCount" } } /** @@ -839,6 +855,18 @@ 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 + or + // _Complex __fp16 + kind = 64 and base = 2 and domain = TComplexDomain() and realKind = 54 and extended = false + or + // _Complex __bf16 + kind = 65 and base = 2 and domain = TComplexDomain() and realKind = 55 and extended = false + or + // _Complex std::float16_t + kind = 66 and base = 2 and domain = TComplexDomain() and realKind = 56 and extended = false } /** @@ -1081,7 +1109,7 @@ class NullPointerType extends BuiltInType { /** * A C/C++ derived type. * - * These are pointer and reference types, array and GNU vector types, and `const` and `volatile` types. + * These are pointer and reference types, array and vector types, and `const` and `volatile` types. * In all cases, the type is formed from a single base type. For example: * ``` * int *pi; @@ -1586,6 +1614,11 @@ class ArrayType extends DerivedType { * Holds if this array is a variable-length array (VLA). */ predicate isVla() { type_is_vla(underlyingElement(this)) } + + override Type resolveTypedefs() { + result.(ArrayType).getBaseType() = this.getBaseType().resolveTypedefs() and + result.(ArrayType).getArraySize() = this.getArraySize() + } } /** @@ -1640,6 +1673,30 @@ class GNUVectorType extends DerivedType { override predicate isDeeplyConstBelow() { this.getBaseType().isDeeplyConst() } } +/** + * An Arm Scalable vector type. + * + * In the following example, `a` has a scalable vector type consisting + * of 8-bit signed integer elements: + * ``` + * svint8_t a; + * ``` + */ +class ScalableVectorType extends DerivedType { + ScalableVectorType() { derivedtypes(underlyingElement(this), _, 11, _) } + + /** + * Get the number of tuple elements of this scalable vector type. + */ + int getNumTupleElements() { tupleelements(underlyingElement(this), result) } + + override string getAPrimaryQlClass() { result = "ScalableVectorType" } + + override string explain() { result = "scalable vector of {" + this.getBaseType().explain() + "}" } + + override predicate isDeeplyConstBelow() { this.getBaseType().isDeeplyConst() } +} + /** * A C/C++ pointer to a function. See 7.7. * ``` diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index 456768081a11..b279c4965f33 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -229,6 +229,49 @@ private predicate summaryModel0( ) } +/** + * Holds if the given extension tuple `madId` should pretty-print as `model`. + * + * This predicate should only be used in tests. + */ +predicate interpretModelForTest(QlBuiltins::ExtensionId madId, string model) { + exists( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string output, string kind, string provenance + | + Extensions::sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, + provenance, madId) + | + model = + "Source: " + namespace + "; " + type + "; " + subtypes + "; " + name + "; " + signature + "; " + + ext + "; " + output + "; " + kind + "; " + provenance + ) + or + exists( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string input, string kind, string provenance + | + Extensions::sinkModel(namespace, type, subtypes, name, signature, ext, input, kind, provenance, + madId) + | + model = + "Sink: " + namespace + "; " + type + "; " + subtypes + "; " + name + "; " + signature + "; " + + ext + "; " + input + "; " + kind + "; " + provenance + ) + or + exists( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string input, string output, string kind, string provenance + | + Extensions::summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, + provenance, madId) + | + model = + "Summary: " + namespace + "; " + type + "; " + subtypes + "; " + name + "; " + signature + + "; " + ext + "; " + input + "; " + output + "; " + kind + "; " + provenance + ) +} + /** * Holds if `input` is `input0`, but with all occurrences of `@` replaced * by `n` repetitions of `*` (and similarly for `output` and `output0`). diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Call.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Call.qll index 03c3e8a33714..24ae703697cf 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Call.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Call.qll @@ -504,6 +504,8 @@ class VacuousDestructorCall extends Expr, @vacuous_destructor_call { */ class ConstructorInit extends Expr, @ctorinit { override string getAPrimaryQlClass() { result = "ConstructorInit" } + + override string toString() { result = "constructor init" } } /** @@ -512,6 +514,8 @@ class ConstructorInit extends Expr, @ctorinit { */ class ConstructorBaseInit extends ConstructorInit, ConstructorCall { override string getAPrimaryQlClass() { result = "ConstructorBaseInit" } + + override string toString() { result = "call to " + this.getTarget().getName() } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll index 2b9fb2649d51..60e2635f338a 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll @@ -91,13 +91,13 @@ class Expr extends StmtParent, @expr { */ private Location getExprLocationOverride() { // Base case: the parent has a better location than `this`. - this.getDbLocation() instanceof UnknownExprLocation and + this.getDbLocation() instanceof UnknownLocation and result = this.getParent().(Expr).getDbLocation() and not result instanceof UnknownLocation or // Recursive case: the parent has a location override that's better than // what `this` has. - this.getDbLocation() instanceof UnknownExprLocation and + this.getDbLocation() instanceof UnknownLocation and result = this.getParent().(Expr).getExprLocationOverride() and not result instanceof UnknownLocation } diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Lambda.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Lambda.qll index 313875d1325d..d1836f0ff4dd 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/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll index 39cc58d54b0e..d776985720af 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll @@ -182,7 +182,7 @@ abstract class InstructionNode0 extends Node0Impl { override Location getLocationImpl() { if exists(instr.getAst().getLocation()) then result = instr.getAst().getLocation() - else result instanceof UnknownDefaultLocation + else result instanceof UnknownLocation } final override predicate isGLValue() { exists(getInstructionType(instr, true)) } @@ -227,7 +227,7 @@ abstract class OperandNode0 extends Node0Impl { override Location getLocationImpl() { if exists(op.getDef().getAst().getLocation()) then result = op.getDef().getAst().getLocation() - else result instanceof UnknownDefaultLocation + else result instanceof UnknownLocation } final override predicate isGLValue() { exists(getOperandType(op, true)) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index ab6a9da6d85d..c72614ac5c32 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -847,7 +847,7 @@ class BodyLessParameterNodeImpl extends Node, TBodyLessParameterNodeImpl { result = unique( | | p.getLocation()) or count(p.getLocation()) != 1 and - result instanceof UnknownDefaultLocation + result instanceof UnknownLocation } final override string toStringImpl() { @@ -1115,7 +1115,7 @@ private module RawIndirectNodes { final override Location getLocationImpl() { if exists(this.getOperand().getLocation()) then result = this.getOperand().getLocation() - else result instanceof UnknownDefaultLocation + else result instanceof UnknownLocation } override string toStringImpl() { @@ -1161,7 +1161,7 @@ private module RawIndirectNodes { final override Location getLocationImpl() { if exists(this.getInstruction().getLocation()) then result = this.getInstruction().getLocation() - else result instanceof UnknownDefaultLocation + else result instanceof UnknownLocation } override string toStringImpl() { @@ -1257,7 +1257,7 @@ class FinalParameterNode extends Node, TFinalParameterNode { result = unique( | | p.getLocation()) or not exists(unique( | | p.getLocation())) and - result instanceof UnknownDefaultLocation + result instanceof UnknownLocation } override string toStringImpl() { result = stars(this) + p.toString() } @@ -1629,7 +1629,7 @@ class VariableNode extends Node, TGlobalLikeVariableNode { result = unique( | | v.getLocation()) or not exists(unique( | | v.getLocation())) and - result instanceof UnknownDefaultLocation + result instanceof UnknownLocation } override string toStringImpl() { result = stars(this) + v.toString() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ProductFlow.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ProductFlow.qll index 354b453afdb7..e804957190a0 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ProductFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ProductFlow.qll @@ -16,6 +16,7 @@ import semmle.code.cpp.dataflow.new.DataFlow private import DataFlowPrivate private import DataFlowUtil private import DataFlowImplCommon +private import DataFlowImplSpecific private import codeql.util.Unit /** @@ -95,10 +96,7 @@ module ProductFlow { * This can be overridden to a smaller value to improve performance (a * value of 0 disables field flow), or a larger value to get more results. */ - default int fieldFlowBranchLimit1() { - // NOTE: This should be synchronized with the default value in the shared dataflow library - result = 2 - } + default int fieldFlowBranchLimit1() { result = CppDataFlow::defaultFieldFlowBranchLimit() } /** * Gets the virtual dispatch branching limit when calculating field flow in the second @@ -107,10 +105,7 @@ module ProductFlow { * This can be overridden to a smaller value to improve performance (a * value of 0 disables field flow), or a larger value to get more results. */ - default int fieldFlowBranchLimit2() { - // NOTE: This should be synchronized with the default value in the shared dataflow library - result = 2 - } + default int fieldFlowBranchLimit2() { result = CppDataFlow::defaultFieldFlowBranchLimit() } } /** @@ -304,10 +299,7 @@ module ProductFlow { * This can be overridden to a smaller value to improve performance (a * value of 0 disables field flow), or a larger value to get more results. */ - default int fieldFlowBranchLimit1() { - // NOTE: This should be synchronized with the default value in the shared dataflow library - result = 2 - } + default int fieldFlowBranchLimit1() { result = CppDataFlow::defaultFieldFlowBranchLimit() } /** * Gets the virtual dispatch branching limit when calculating field flow in the second @@ -316,10 +308,7 @@ module ProductFlow { * This can be overridden to a smaller value to improve performance (a * value of 0 disables field flow), or a larger value to get more results. */ - default int fieldFlowBranchLimit2() { - // NOTE: This should be synchronized with the default value in the shared dataflow library - result = 2 - } + default int fieldFlowBranchLimit2() { result = CppDataFlow::defaultFieldFlowBranchLimit() } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll index 7799081eae34..863825b375e3 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll @@ -516,7 +516,7 @@ class FinalParameterUse extends UseImpl, TFinalParameterUse { result = unique( | | p.getLocation()) or not exists(unique( | | p.getLocation())) and - result instanceof UnknownDefaultLocation + result instanceof UnknownLocation } override BaseIRVariable getBaseSourceVariable() { result.getIRVariable().getAst() = p } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRConsistency.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRConsistency.qll index 67a6965ae9bb..c29d743dadbf 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRConsistency.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRConsistency.qll @@ -45,7 +45,7 @@ module InstructionConsistency { private class MissingIRFunction extends OptionalIRFunction, TMissingIRFunction { override string toString() { result = "" } - override Language::Location getLocation() { result instanceof Language::UnknownDefaultLocation } + override Language::Location getLocation() { result instanceof Language::UnknownLocation } } private OptionalIRFunction getInstructionIRFunction(Instruction instr) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/ValueNumbering.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/ValueNumbering.qll index 279b43a1ca8b..b436bc8ccf11 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/ValueNumbering.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/ValueNumbering.qll @@ -26,7 +26,7 @@ class ValueNumber extends TValueNumber { l.getFile().getAbsolutePath(), l.getStartLine(), l.getStartColumn(), l.getEndLine(), l.getEndColumn() ) - else result instanceof Language::UnknownDefaultLocation + else result instanceof Language::UnknownLocation } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRConsistency.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRConsistency.qll index 67a6965ae9bb..c29d743dadbf 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRConsistency.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRConsistency.qll @@ -45,7 +45,7 @@ module InstructionConsistency { private class MissingIRFunction extends OptionalIRFunction, TMissingIRFunction { override string toString() { result = "" } - override Language::Location getLocation() { result instanceof Language::UnknownDefaultLocation } + override Language::Location getLocation() { result instanceof Language::UnknownLocation } } private OptionalIRFunction getInstructionIRFunction(Instruction instr) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/ValueNumbering.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/ValueNumbering.qll index 279b43a1ca8b..b436bc8ccf11 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/ValueNumbering.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/ValueNumbering.qll @@ -26,7 +26,7 @@ class ValueNumber extends TValueNumber { l.getFile().getAbsolutePath(), l.getStartLine(), l.getStartColumn(), l.getEndLine(), l.getEndColumn() ) - else result instanceof Language::UnknownDefaultLocation + else result instanceof Language::UnknownLocation } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/SideEffects.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/SideEffects.qll index 1b63322610a1..008637812573 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/SideEffects.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/SideEffects.qll @@ -54,6 +54,8 @@ private predicate isDeeplyConstBelow(Type t) { or isDeeplyConst(t.(GNUVectorType).getBaseType()) or + isDeeplyConst(t.(ScalableVectorType).getBaseType()) + or isDeeplyConst(t.(FunctionPointerIshType).getBaseType()) or isDeeplyConst(t.(PointerWrapper).getTemplateArgument(0)) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll index 4f8932c4a289..1a5c65d364de 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll @@ -4,6 +4,7 @@ private import semmle.code.cpp.ir.implementation.internal.OperandTag private import semmle.code.cpp.ir.internal.CppType private import semmle.code.cpp.models.interfaces.SideEffect private import semmle.code.cpp.models.interfaces.Throwing +private import semmle.code.cpp.models.interfaces.NonThrowing private import InstructionTag private import SideEffects private import TranslatedElement @@ -84,11 +85,10 @@ abstract class TranslatedCall extends TranslatedExpr { this.getEnclosingFunction().getFunction() = instr.getEnclosingFunction() ) else ( - not this.mustThrowException() and + not this.mustThrowException(_) and result = this.getParent().getChildSuccessor(this, kind) or - this.mayThrowException() and - kind instanceof CppExceptionEdge and + this.mayThrowException(kind) and result = this.getParent().getExceptionSuccessorInstruction(any(GotoEdge edge)) ) } @@ -117,14 +117,14 @@ abstract class TranslatedCall extends TranslatedExpr { final override Instruction getResult() { result = this.getInstruction(CallTag()) } /** - * Holds if the evaluation of this call may throw an exception. + * Holds if the evaluation of this call may throw an exception of the kind represented by the `ExceptionEdge`. */ - abstract predicate mayThrowException(); + abstract predicate mayThrowException(ExceptionEdge e); /** - * Holds if the evaluation of this call always throws an exception. + * Holds if the evaluation of this call always throws an exception of the kind represented by the `ExceptionEdge`. */ - abstract predicate mustThrowException(); + abstract predicate mustThrowException(ExceptionEdge e); /** * Gets the result type of the call. @@ -332,14 +332,14 @@ class TranslatedExprCall extends TranslatedCallExpr { result = getTranslatedExpr(expr.getExpr().getFullyConverted()) } - final override predicate mayThrowException() { + final override predicate mayThrowException(ExceptionEdge e) { // We assume that a call to a function pointer will not throw an exception. // This is not sound in general, but this will greatly reduce the number of // exceptional edges. none() } - final override predicate mustThrowException() { none() } + final override predicate mustThrowException(ExceptionEdge e) { none() } } /** @@ -362,16 +362,20 @@ class TranslatedFunctionCall extends TranslatedCallExpr, TranslatedDirectCall { not exists(MemberFunction func | expr.getTarget() = func and func.isStatic()) } - final override predicate mayThrowException() { - expr.getTarget().(ThrowingFunction).mayThrowException(_) + final override predicate mayThrowException(ExceptionEdge e) { + this.mustThrowException(e) or - expr.getTarget() instanceof AlwaysSehThrowingFunction + exists(MicrosoftTryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) and + e instanceof SehExceptionEdge + or + not expr.getTarget() instanceof NonCppThrowingFunction and + exists(TryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) and + e instanceof CppExceptionEdge } - final override predicate mustThrowException() { - expr.getTarget().(ThrowingFunction).mayThrowException(true) - or - expr.getTarget() instanceof AlwaysSehThrowingFunction + final override predicate mustThrowException(ExceptionEdge e) { + expr.getTarget() instanceof AlwaysSehThrowingFunction and + e instanceof SehExceptionEdge } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index f21f44956768..705a9dcdd0b7 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -381,6 +381,14 @@ abstract class TranslatedValueCategoryAdjustment extends TranslatedExpr { final TranslatedCoreExpr getOperand() { result.getExpr() = expr } } +/** + * Holds if `expr` requires an `SehExceptionEdge` to be generated. + */ +private predicate hasSehExceptionEdge(Expr expr) { + expr instanceof PointerDereferenceExpr and + exists(MicrosoftTryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) +} + /** * IR translation of an implicit lvalue-to-rvalue conversion on the result of * an expression. @@ -400,7 +408,13 @@ class TranslatedLoad extends TranslatedValueCategoryAdjustment, TTranslatedLoad override Instruction getInstructionSuccessorInternal(InstructionTag tag, EdgeKind kind) { tag = LoadTag() and - result = this.getParent().getChildSuccessor(this, kind) + ( + result = this.getParent().getChildSuccessor(this, kind) + or + hasSehExceptionEdge(expr) and + kind instanceof SehExceptionEdge and + result = this.getParent().getExceptionSuccessorInstruction(any(GotoEdge e)) + ) } override Instruction getChildSuccessorInternal(TranslatedElement child, EdgeKind kind) { @@ -1945,7 +1959,13 @@ class TranslatedAssignExpr extends TranslatedNonConstantExpr { override Instruction getInstructionSuccessorInternal(InstructionTag tag, EdgeKind kind) { tag = AssignmentStoreTag() and - result = this.getParent().getChildSuccessor(this, kind) + ( + result = this.getParent().getChildSuccessor(this, kind) + or + hasSehExceptionEdge(expr.getLValue()) and + kind instanceof SehExceptionEdge and + result = this.getParent().getExceptionSuccessorInstruction(any(GotoEdge e)) + ) } override Instruction getChildSuccessorInternal(TranslatedElement child, EdgeKind kind) { @@ -2483,14 +2503,14 @@ class TranslatedAllocatorCall extends TTranslatedAllocatorCall, TranslatedDirect result = getTranslatedExpr(expr.getAllocatorCall().getArgument(index).getFullyConverted()) } - final override predicate mayThrowException() { + final override predicate mayThrowException(ExceptionEdge e) { // We assume that a call to `new` or `new[]` will never throw. This is not // sound in general, but this will greatly reduce the number of exceptional // edges. none() } - final override predicate mustThrowException() { none() } + final override predicate mustThrowException(ExceptionEdge e) { none() } } TranslatedAllocatorCall getTranslatedAllocatorCall(NewOrNewArrayExpr newExpr) { @@ -2556,14 +2576,14 @@ class TranslatedDeleteOrDeleteArrayExpr extends TranslatedNonConstantExpr, Trans result = getTranslatedExpr(expr.getExprWithReuse().getFullyConverted()) } - final override predicate mayThrowException() { + final override predicate mayThrowException(ExceptionEdge e) { // We assume that a call to `delete` or `delete[]` will never throw. This is not // sound in general, but this will greatly reduce the number of exceptional // edges. none() } - final override predicate mustThrowException() { none() } + final override predicate mustThrowException(ExceptionEdge e) { none() } } TranslatedDeleteOrDeleteArrayExpr getTranslatedDeleteOrDeleteArray(DeleteOrDeleteArrayExpr newExpr) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll index 57f718bcb6ab..83736ae98d04 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll @@ -214,7 +214,7 @@ class TranslatedFunction extends TranslatedRootElement, TTranslatedFunction { exists(ThrowExpr throw | throw.getEnclosingFunction() = func) or exists(FunctionCall call | call.getEnclosingFunction() = func | - getTranslatedExpr(call).(TranslatedCallExpr).mayThrowException() + getTranslatedExpr(call).(TranslatedCallExpr).mayThrowException(_) ) ) or diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRConsistency.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRConsistency.qll index 67a6965ae9bb..c29d743dadbf 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRConsistency.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRConsistency.qll @@ -45,7 +45,7 @@ module InstructionConsistency { private class MissingIRFunction extends OptionalIRFunction, TMissingIRFunction { override string toString() { result = "" } - override Language::Location getLocation() { result instanceof Language::UnknownDefaultLocation } + override Language::Location getLocation() { result instanceof Language::UnknownLocation } } private OptionalIRFunction getInstructionIRFunction(Instruction instr) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll index 279b43a1ca8b..b436bc8ccf11 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll @@ -26,7 +26,7 @@ class ValueNumber extends TValueNumber { l.getFile().getAbsolutePath(), l.getStartLine(), l.getStartColumn(), l.getEndLine(), l.getEndColumn() ) - else result instanceof Language::UnknownDefaultLocation + else result instanceof Language::UnknownLocation } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/internal/ASTValueNumbering.qll b/cpp/ql/lib/semmle/code/cpp/ir/internal/ASTValueNumbering.qll index 2dd51d391512..4a40c90a1dd9 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/internal/ASTValueNumbering.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/internal/ASTValueNumbering.qll @@ -76,7 +76,7 @@ class GVN extends TValueNumber { l.getFile().getAbsolutePath(), l.getStartLine(), l.getStartColumn(), l.getEndLine(), l.getEndColumn() ) - else result instanceof UnknownDefaultLocation + else result instanceof UnknownLocation } final string getKind() { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/internal/CppType.qll b/cpp/ql/lib/semmle/code/cpp/ir/internal/CppType.qll index f61a3a52c6bd..b25bb041f33c 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/internal/CppType.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/internal/CppType.qll @@ -29,6 +29,10 @@ private int getTypeSizeWorkaround(Type type) { not arrayType.hasArraySize() and result = getPointerSize() ) + or + // Scalable vectors are opaque and not of fixed size. Use 0 as a substitute. + type instanceof ScalableVectorType and + result = 0 ) ) } @@ -134,6 +138,10 @@ private predicate isOpaqueType(Type type) { ) or type instanceof PointerToMemberType // PTMs are missing size info + or + type instanceof ScalableVectorCount + or + type instanceof ScalableVectorType } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/internal/IRCppLanguage.qll b/cpp/ql/lib/semmle/code/cpp/ir/internal/IRCppLanguage.qll index 28bbd40f8bf5..a0e74f785e5e 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/internal/IRCppLanguage.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/internal/IRCppLanguage.qll @@ -22,8 +22,6 @@ class Location = Cpp::Location; class UnknownLocation = Cpp::UnknownLocation; -class UnknownDefaultLocation = Cpp::UnknownDefaultLocation; - class File = Cpp::File; class AST = Cpp::Locatable; diff --git a/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll b/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll index cc2948067092..111b99533957 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll @@ -12,8 +12,10 @@ import semmle.code.cpp.models.interfaces.FunctionInputsAndOutputs /** * A function that is known to raise an exception. + * + * DEPRECATED: use `AlwaysSehThrowingFunction` instead. */ -abstract class ThrowingFunction extends Function { +abstract deprecated class ThrowingFunction extends Function { /** * Holds if this function may throw an exception during evaluation. * If `unconditional` is `true` the function always throws an exception. diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/RangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/RangeAnalysis.qll index 6bd7615d37b7..845a71b2a502 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/RangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/RangeAnalysis.qll @@ -89,7 +89,7 @@ class ZeroBound extends Bound instanceof IRBound::ZeroBound { result = super.getInstruction(delta).getUnconvertedResultExpression() } - override Location getLocation() { result instanceof UnknownDefaultLocation } + override Location getLocation() { result instanceof UnknownLocation } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/Bound.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/Bound.qll index 27883aedf3e7..4d873e8e3b3e 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/Bound.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/Bound.qll @@ -61,7 +61,7 @@ class ZeroBound extends Bound, TBoundZero { result.(ConstantValueInstruction).getValue().toInt() = delta } - override Location getLocation() { result instanceof UnknownDefaultLocation } + override Location getLocation() { result instanceof UnknownLocation } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll b/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll index aa6a585ea4b3..5305c8ca58f6 100644 --- a/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll +++ b/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll @@ -841,6 +841,41 @@ private Stmt getEnclosingBreakable(Stmt s) { else result = getEnclosingBreakable(s.getParent().getEnclosingStmt()) } +/** + * A Microsoft C/C++ `__leave` statement. + * + * For example, the `__leave` statement in the following code: + * ``` + * __try { + * if (err) __leave; + * ... + * } + * __finally { + * + * } + * ``` + */ +class LeaveStmt extends JumpStmt, @stmt_leave { + override string getAPrimaryQlClass() { result = "LeaveStmt" } + + override string toString() { result = "__leave;" } + + override predicate mayBeImpure() { none() } + + override predicate mayBeGloballyImpure() { none() } + + /** + * Gets the `__try` statement that this `__leave` exits. + */ + MicrosoftTryStmt getEnclosingTry() { result = getEnclosingTry(this) } +} + +private MicrosoftTryStmt getEnclosingTry(Stmt s) { + if s.getParent().getEnclosingStmt() instanceof MicrosoftTryStmt + then result = s.getParent().getEnclosingStmt() + else result = getEnclosingTry(s.getParent().getEnclosingStmt()) +} + /** * A C/C++ 'label' statement. * diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index 9a7c3c14c107..5491582ac851 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -1,3 +1,4 @@ +/*- Compilations -*/ /** * An invocation of the compiler. Note that more than one file may be @@ -138,6 +139,7 @@ compilation_finished( float elapsed_seconds : float ref ); +/*- External data -*/ /** * External data, loaded from CSV files during snapshot creation. See @@ -145,167 +147,87 @@ compilation_finished( * for more information. */ externalData( - int id : @externalDataElement, - string path : string ref, - int column: int ref, - string value : string ref + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref ); +/*- Source location prefix -*/ + /** * The source location of the snapshot. */ sourceLocationPrefix(string prefix : string ref); -/** - * 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 ; +/*- Files and folders -*/ /** - * The location of an element that is not an expression or a statement. + * The location of an element. * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `file`. * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ locations_default( - /** 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 + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref ); -/** - * 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 +files( + unique int id: @file, + string name: string 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 +folders( + unique int id: @folder, + string name: string ref ); -/** An element for which line-count information is available. */ -@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ numlines( - int element_id: @sourceline ref, - int num_lines: int ref, - int num_code: int ref, - int num_comment: int ref + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref ); +/*- Diagnostic messages -*/ + diagnostics( - unique int id: @diagnostic, - int severity: int ref, - string error_tag: string ref, - string error_message: string ref, - string full_error_message: string ref, - int location: @location_default ref + 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 -); +/*- C++ dbscheme -*/ -folders( - unique int id: @folder, - string name: string ref -); +/* + * C++ dbscheme + */ -@container = @folder | @file +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) -containerparent( - int parent: @container ref, - unique int child: @container ref -); +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; fileannotations( int id: @file ref, @@ -347,7 +269,7 @@ macroparent( // to which a macro invocation is bound macrolocationbind( int id: @macroinvocation ref, - int location: @location ref + int location: @location_default ref ); #keyset[invocation, argument_index] @@ -691,6 +613,11 @@ case @builtintype.kind of | 59 = @complex_std_float64 // _Complex _Float64 | 60 = @complex_float64x // _Complex _Float64x | 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t ; builtintypes( @@ -717,6 +644,7 @@ case @derivedtype.kind of | 8 = @rvalue_reference // C++11 // ... 9 type_conforming_to_protocols deprecated | 10 = @block +| 11 = @scalable_vector // Arm SVE ; derivedtypes( @@ -737,6 +665,11 @@ arraysizes( int alignment: int ref ); +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + typedefbase( unique int id: @usertype ref, int type_id: @type ref @@ -912,7 +845,7 @@ is_proxy_class_for( type_mentions( unique int id: @type_mention, int type_id: @type ref, - int location: @location ref, + int location: @location_default ref, // a_symbol_reference_kind from the frontend. int kind: int ref ); @@ -1138,6 +1071,11 @@ varattributes( int spec_id: @attribute ref ); +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + stmtattributes( int stmt_id: @stmt ref, int spec_id: @attribute ref @@ -1656,7 +1594,7 @@ initialisers( unique int init: @initialiser, int var: @accessible ref, unique int expr: @expr ref, - int location: @location_expr ref + int location: @location_default ref ); braced_initialisers( @@ -1675,7 +1613,7 @@ expr_ancestor( exprs( unique int id: @expr, int kind: int ref, - int location: @location_expr ref + int location: @location_default ref ); expr_reuse( @@ -2138,7 +2076,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( @@ -2176,7 +2115,7 @@ fold( stmts( unique int id: @stmt, int kind: int ref, - int location: @location_stmt ref + int location: @location_default ref ); case @stmt.kind of @@ -2211,6 +2150,7 @@ case @stmt.kind of | 37 = @stmt_co_return | 38 = @stmt_consteval_if | 39 = @stmt_not_consteval_if +| 40 = @stmt_leave ; type_vla( @@ -2347,7 +2287,7 @@ blockscope( int enclosing: @parameterized_element ref ); -@jump = @stmt_goto | @stmt_break | @stmt_continue; +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; @jumporlabel = @jump | @stmt_label | @literal; @@ -2416,76 +2356,73 @@ link_parent( int link_target : @link_target ref ); -/* XML Files */ +/*- XML Files -*/ -xmlEncoding(unique int id: @file ref, string encoding: string ref); +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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + int xmlElement: @xmllocatable ref, + int location: @location_default ref ); -@xmllocatable = @xmlcharacters - | @xmlelement - | @xmlcomment - | @xmlattribute - | @xmldtd - | @file - | @xmlnamespace; +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index bca58ed2f5b1..e563fba8ab34 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,79 +2,63 @@ @compilation - 16142 + 12647 @externalDataElement 65 - @external_package - 4 - - - @svnentry - 575525 - - - @location_default - 36226754 - - - @location_stmt - 5202209 + @file + 65232 - @location_expr - 17956521 + @folder + 12393 @diagnostic - 1588 - - - @file - 83260 + 1483 - @folder - 15818 + @location_default + 46965948 @macro_expansion - 40121869 + 40257335 @other_macro_reference - 312756 + 300694 @function - 4015439 + 4053072 @fun_decl - 4154519 + 4206779 @var_decl - 9247204 + 9391616 @type_decl - 1882105 + 1634964 @namespace_decl - 430914 + 407321 @using_declaration - 341862 + 267955 @using_directive - 8125 + 6472 @using_enum_declaration @@ -82,335 +66,359 @@ @static_assert - 183493 + 173266 @parameter - 6965639 + 7026200 @membervariable - 1489139 + 1496815 @globalvariable - 466518 + 488591 @localvariable - 734804 + 726278 @enumconstant - 343781 + 345733 @errortype - 125 + 124 @unknowntype - 125 + 124 @void - 125 + 124 @boolean - 125 + 124 @char - 125 + 124 @unsigned_char - 125 + 124 @signed_char - 125 + 124 @short - 125 + 124 @unsigned_short - 125 + 124 @signed_short - 125 + 124 @int - 125 + 124 @unsigned_int - 125 + 124 @signed_int - 125 + 124 @long - 125 + 124 @unsigned_long - 125 + 124 @signed_long - 125 + 124 @long_long - 125 + 124 @unsigned_long_long - 125 + 124 @signed_long_long - 125 + 124 @float - 125 + 124 @double - 125 + 124 @long_double - 125 + 124 @complex_float - 125 + 124 @complex_double - 125 + 124 @complex_long_double - 125 + 124 @imaginary_float - 125 + 124 @imaginary_double - 125 + 124 @imaginary_long_double - 125 + 124 @wchar_t - 125 + 124 @decltype_nullptr - 125 + 124 @int128 - 125 + 124 @unsigned_int128 - 125 + 124 @signed_int128 - 125 + 124 @float128 - 125 + 124 @complex_float128 - 125 + 124 @decimal32 - 125 + 124 @decimal64 - 125 + 124 @decimal128 - 125 + 124 @char16_t - 125 + 124 @char32_t - 125 + 124 @std_float32 - 125 + 124 @float32x - 125 + 124 @std_float64 - 125 + 124 @float64x - 125 + 124 @std_float128 - 125 + 124 @char8_t - 125 + 124 @float16 - 125 + 124 @complex_float16 - 125 + 124 @fp16 - 125 + 124 @std_bfloat16 - 125 + 124 @std_float16 - 125 + 124 @complex_std_float32 - 125 + 124 @complex_float32x - 125 + 124 @complex_std_float64 - 125 + 124 @complex_float64x - 125 + 124 @complex_std_float128 - 125 + 124 + + + @mfp8 + 124 + + + @scalable_vector_count + 124 + + + @complex_fp16 + 124 + + + @complex_std_bfloat16 + 124 + + + @complex_std_float16 + 124 @pointer - 470652 + 452880 @type_with_specifiers - 696526 + 693867 @array - 98431 + 90401 @routineptr - 858764 + 684076 @reference - 970559 + 968192 @gnu_vector - 863 + 676 @routinereference - 470 + 374 @rvalue_reference - 291793 + 291306 @block 10 - @decltype - 102057 + @scalable_vector + 1 @type_operator - 8519 + 7953 + + + @decltype + 102349 @usertype - 4962767 + 4151861 @mangledname - 6329773 + 6370041 @type_mention - 5812069 + 5902899 @concept_template - 3868 + 3611 @routinetype - 758603 + 604289 @ptrtomember - 12029 + 9730 @specifier - 7754 + 7741 @gnuattribute - 559459 + 559628 @stdattribute - 350577 + 353114 @declspec - 328789 + 330047 @msattribute @@ -418,19 +426,19 @@ @alignas - 2192 + 2166 @attribute_arg_token - 20955 + 16693 @attribute_arg_constant_expr - 88857 + 71994 @attribute_arg_expr - 1793 + 1405 @attribute_arg_empty @@ -442,39 +450,39 @@ @attribute_arg_type - 466 + 460 @derivation - 597157 + 476877 @frienddecl - 879292 + 700420 @comment - 11233849 + 11241970 @namespace - 11044 + 8653 @specialnamequalifyingelement - 125 + 124 @namequalifier - 3254040 + 3038986 @value - 13436143 + 13474612 @initialiser - 2338659 + 2251036 @address_of @@ -482,131 +490,131 @@ @indirect - 403000 + 404154 @array_to_pointer - 1948290 + 1953752 @parexpr - 4901469 + 4915210 @arithnegexpr - 584894 + 586534 @unaryplusexpr - 4122 + 4073 @complementexpr - 38090 + 38199 @notexpr - 357805 + 355764 @postincrexpr - 84356 + 84581 @postdecrexpr - 57234 + 57394 @preincrexpr - 96438 + 96714 @predecrexpr - 35718 + 35821 @conditionalexpr - 895370 + 897880 @addexpr - 569921 + 571553 @subexpr - 465494 + 466799 @mulexpr - 434549 + 435793 @divexpr - 60159 + 52393 @remexpr - 20100 + 16011 @paddexpr - 118331 + 118669 @psubexpr - 67843 + 68024 @pdiffexpr - 43900 + 43951 @lshiftexpr - 550121 + 551696 @rshiftexpr - 199982 + 200555 @andexpr - 479844 + 481218 @orexpr - 193501 + 194055 @xorexpr - 73764 + 73961 @eqexpr - 641535 + 643372 @neexpr - 410719 + 411870 @gtexpr - 110832 + 111149 @ltexpr - 139031 + 139429 @geexpr - 81151 + 81368 @leexpr - 291203 + 292036 @assignexpr - 1277487 + 1281145 @assignaddexpr @@ -614,23 +622,23 @@ @assignsubexpr - 15263 + 15307 @assignmulexpr - 14065 + 11189 @assigndivexpr - 6789 + 6807 @assignremexpr - 875 + 874 @assignlshiftexpr - 3693 + 3703 @assignrshiftexpr @@ -638,95 +646,95 @@ @assignandexpr - 6509 + 6528 @assignorexpr - 19550 + 19606 @assignxorexpr - 29824 + 29909 @assignpaddexpr - 18574 + 18628 @assignpsubexpr - 1571 + 1575 @andlogicalexpr - 345599 + 346589 @orlogicalexpr - 1100373 + 1103523 @commaexpr - 169097 + 168441 @subscriptexpr - 433900 + 435143 @callexpr - 300995 + 239767 @vastartexpr - 5084 + 4979 @vaargexpr - 1299 + 1303 @vaendexpr - 2933 + 2941 @vacopyexpr - 171 + 136 @varaccess - 8231069 + 8254635 @runtime_sizeof - 400899 + 402047 @runtime_alignof - 62611 + 49874 @expr_stmt - 147941 + 148364 @routineexpr - 6134772 + 5726803 @type_operand - 1401351 + 1405364 @offsetofexpr - 148598 + 149024 @typescompexpr - 699930 + 701934 @literal - 6101485 + 7967517 @aggregateliteral @@ -734,43 +742,43 @@ @c_style_cast - 6025595 + 6026988 @temp_init - 1075277 + 992325 @errorexpr - 57350 + 45684 @reference_to - 2184503 + 1902638 @ref_indirect - 2645319 + 2107213 @vacuous_destructor_call - 9836 + 7835 @assume - 4394 + 4151 @conjugation - 13 + 10 @realpartexpr - 94 + 73 @imagpartexpr - 94 + 73 @jmulexpr @@ -810,35 +818,35 @@ @thisaccess - 1518451 + 1558310 @new_expr - 57992 + 46195 @delete_expr - 14412 + 11480 @throw_expr - 26141 + 24105 @condition_decl - 437622 + 408518 @braced_init_list - 2331 + 2151 @type_id - 60130 + 47898 @sizeof_pack - 2181 + 1737 @hasassignexpr @@ -866,7 +874,7 @@ @hastrivialconstr - 3 + 7 @hastrivialcopy @@ -882,31 +890,31 @@ @isabstractexpr - 74 + 68 @isbaseofexpr - 276 + 257 @isclassexpr - 2538 + 2388 @isconvtoexpr - 250 + 249 @isemptyexpr - 8880 + 8865 @isenumexpr - 2376 + 2996 @ispodexpr - 1065 + 834 @ispolyexpr @@ -922,83 +930,83 @@ @hastrivialdestructor - 555 + 2793 @uuidof - 28057 + 26588 @delete_array_expr - 1591 + 1246 @new_array_expr - 6932 + 6653 @foldexpr - 1368 + 1246 @ctordirectinit - 141602 + 112831 @ctorvirtualinit - 5046 + 4019 @ctorfieldinit - 258185 + 206399 @ctordelegatinginit - 3627 + 3621 @dtordirectdestruct - 49481 + 39450 @dtorvirtualdestruct - 5003 + 3985 @dtorfielddestruct - 49994 + 39824 @static_cast - 389474 + 348369 @reinterpret_cast - 41835 + 40089 @const_cast - 30706 + 24460 @dynamic_cast - 1011 + 792 @lambdaexpr - 17748 + 19057 @param_ref - 177835 + 164014 @noopexpr - 51 + 48 @istriviallyconstructibleexpr - 2376 + 3745 @isdestructibleexpr @@ -1010,19 +1018,19 @@ @istriviallydestructibleexpr - 1000 + 998 @istriviallyassignableexpr - 2376 + 3745 @isnothrowassignableexpr - 5127 + 5119 @istrivialexpr - 1375 + 3368 @isstandardlayoutexpr @@ -1030,7 +1038,7 @@ @istriviallycopyableexpr - 598 + 1373 @isliteraltypeexpr @@ -1050,11 +1058,11 @@ @isconstructibleexpr - 3627 + 3621 @isnothrowconstructibleexpr - 20761 + 20727 @hasfinalizerexpr @@ -1090,11 +1098,11 @@ @isfinalexpr - 11803 + 9402 @noexceptexpr - 30854 + 28356 @builtinshufflevector @@ -1102,11 +1110,11 @@ @builtinchooseexpr - 20642 + 20701 @builtinaddressof - 16294 + 15483 @vec_fill @@ -1122,7 +1130,7 @@ @spaceshipexpr - 1404 + 1311 @co_await @@ -1134,7 +1142,7 @@ @isassignable - 437 + 408 @isaggregate @@ -1142,15 +1150,15 @@ @hasuniqueobjectrepresentations - 46 + 42 @builtinbitcast - 250 + 249 @builtinshuffle - 782 + 612 @blockassignexpr @@ -1158,7 +1166,7 @@ @issame - 4858 + 4535 @isfunction @@ -1266,7 +1274,7 @@ @reuseexpr - 906491 + 846206 @istriviallycopyassignable @@ -1322,7 +1330,7 @@ @referenceconstructsfromtemporary - 46 + 42 @referenceconvertsfromtemporary @@ -1330,7 +1338,7 @@ @isconvertible - 138 + 128 @isvalidwinrttype @@ -1362,99 +1370,99 @@ @c11_generic - 30031 + 30117 @requires_expr - 17661 + 16486 @nested_requirement - 736 + 687 @compound_requirement - 11720 + 10941 @concept_id - 96781 + 90344 @lambdacapture - 28523 + 31966 @stmt_expr - 2025815 + 2031615 @stmt_if - 987388 + 990215 @stmt_while - 39534 + 39648 @stmt_goto - 151155 + 157956 @stmt_label - 72498 + 78048 @stmt_return - 1508953 + 1241843 @stmt_block - 1846814 + 1729360 @stmt_end_test_while - 232974 + 233641 @stmt_for - 84148 + 84389 @stmt_switch_case - 894840 + 835329 @stmt_switch - 440777 + 411463 @stmt_asm - 64015 + 64199 @stmt_decl - 768980 + 772441 @stmt_empty - 459543 + 428982 @stmt_continue - 28011 + 28091 @stmt_break - 140276 + 137937 @stmt_try_block - 28918 + 26698 @stmt_microsoft_try - 224 + 211 @stmt_set_vla_size @@ -1466,19 +1474,19 @@ @stmt_assigned_goto - 12391 + 12426 @stmt_range_based_for - 7398 + 6387 @stmt_handler - 47389 + 43746 @stmt_constexpr_if - 103934 + 106134 @stmt_co_return @@ -1492,57 +1500,61 @@ @stmt_not_consteval_if 3 + + @stmt_leave + 3 + @ppd_if - 589589 + 591478 @ppd_ifdef - 213751 + 214363 @ppd_ifndef - 157794 + 158651 @ppd_elif - 27982 + 21923 @ppd_else - 236511 + 235118 @ppd_endif - 886636 + 889778 @ppd_plain_include - 406728 + 318660 @ppd_define - 2749584 + 2752618 @ppd_undef - 101058 + 100515 @ppd_pragma - 407234 + 406555 @ppd_include_next - 213 + 170 @ppd_line - 19055 + 18828 @ppd_error - 125 + 124 @ppd_objc_import @@ -1566,7 +1578,7 @@ @link_target - 943 + 816 @xmldtd @@ -1596,15 +1608,15 @@ compilations - 16142 + 12647 id - 16142 + 12647 cwd - 13 + 10 @@ -1618,7 +1630,7 @@ 1 2 - 16142 + 12647 @@ -1634,7 +1646,7 @@ 1197 1198 - 13 + 10 @@ -1644,19 +1656,19 @@ compilation_args - 1292348 + 1012517 id - 16142 + 12647 num - 1874 + 1468 arg - 37368 + 29277 @@ -1670,77 +1682,77 @@ 36 42 - 1281 + 1003 42 43 - 1402 + 1098 43 44 - 917 + 718 44 45 - 647 + 507 45 51 - 1213 + 950 51 70 - 620 + 486 71 72 - 903 + 707 72 90 - 1146 + 898 94 96 - 498 + 390 98 99 - 1712 + 1341 100 102 - 121 + 95 103 104 - 2548 + 1996 104 119 - 1362 + 1067 120 138 - 1186 + 929 139 140 - 579 + 454 @@ -1756,72 +1768,72 @@ 34 38 - 755 + 591 38 39 - 1914 + 1500 39 40 - 1254 + 982 40 42 - 1389 + 1088 42 53 - 768 + 602 53 54 - 903 + 707 54 63 - 1146 + 898 64 67 - 512 + 401 67 68 - 1793 + 1405 68 70 - 1240 + 972 70 71 - 1793 + 1405 73 79 - 1213 + 950 79 89 - 1442 + 1130 89 90 - 13 + 10 @@ -1837,57 +1849,57 @@ 43 90 - 80 + 63 90 108 - 148 + 116 108 183 - 134 + 105 198 422 - 148 + 116 422 595 - 161 + 126 595 605 - 161 + 126 605 749 - 148 + 116 750 778 - 148 + 116 781 883 - 148 + 116 930 1190 - 107 + 84 1197 1198 - 485 + 380 @@ -1903,72 +1915,72 @@ 1 5 - 161 + 126 5 7 - 148 + 116 9 12 - 94 + 73 12 15 - 148 + 116 15 18 - 121 + 95 18 22 - 148 + 116 22 27 - 161 + 126 27 29 - 107 + 84 29 34 - 148 + 116 34 44 - 161 + 126 45 63 - 148 + 116 67 94 - 148 + 116 94 164 - 148 + 116 171 199 - 26 + 21 @@ -1984,22 +1996,22 @@ 1 2 - 17113 + 13407 2 3 - 16196 + 12689 3 103 - 2805 + 2197 104 1198 - 1254 + 982 @@ -2015,17 +2027,17 @@ 1 2 - 24746 + 19387 2 3 - 11139 + 8727 3 62 - 1483 + 1162 @@ -2035,15 +2047,15 @@ compilation_build_mode - 16142 + 12647 id - 16142 + 12647 mode - 13 + 10 @@ -2057,7 +2069,7 @@ 1 2 - 16142 + 12647 @@ -2073,7 +2085,7 @@ 1197 1198 - 13 + 10 @@ -2083,19 +2095,19 @@ compilation_compiling_files - 16142 + 15739 id - 16142 + 2723 num - 13 + 4520 file - 7390 + 13670 @@ -2109,7 +2121,42 @@ 1 2 - 16142 + 1361 + + + 2 + 3 + 163 + + + 3 + 4 + 163 + + + 4 + 5 + 326 + + + 5 + 8 + 163 + + + 8 + 9 + 163 + + + 9 + 13 + 217 + + + 21 + 84 + 163 @@ -2125,7 +2172,42 @@ 1 2 - 16142 + 1361 + + + 2 + 3 + 163 + + + 3 + 4 + 163 + + + 4 + 5 + 326 + + + 5 + 8 + 163 + + + 8 + 9 + 163 + + + 9 + 13 + 217 + + + 21 + 84 + 163 @@ -2139,9 +2221,29 @@ 12 - 1197 - 1198 - 13 + 1 + 2 + 2396 + + + 2 + 3 + 980 + + + 3 + 4 + 490 + + + 4 + 13 + 381 + + + 13 + 51 + 272 @@ -2155,9 +2257,29 @@ 12 - 548 - 549 - 13 + 1 + 2 + 2396 + + + 2 + 3 + 980 + + + 3 + 4 + 490 + + + 4 + 13 + 381 + + + 13 + 49 + 272 @@ -2173,17 +2295,17 @@ 1 2 - 175 + 12308 2 - 3 - 7187 + 4 + 1143 - 28 - 91 - 26 + 4 + 6 + 217 @@ -2199,7 +2321,17 @@ 1 2 - 7390 + 12526 + + + 2 + 4 + 1089 + + + 4 + 5 + 54 @@ -2209,23 +2341,23 @@ compilation_time - 64299 + 62959 id - 16074 + 2723 num - 13 + 4520 kind - 53 + 217 seconds - 17801 + 13234 @@ -2239,72 +2371,49 @@ 1 2 - 16074 - - - - - - - id - kind - - - 12 - - - 4 - 5 - 16074 + 1361 - - - - - - id - seconds - - - 12 - 2 3 - 107 + 163 3 4 - 7821 + 163 4 5 - 8145 + 326 + + + 5 + 8 + 163 + + + 8 + 9 + 163 + + + 9 + 13 + 217 - - - - - - num - id - - - 12 - - 1192 - 1193 - 13 + 21 + 84 + 163 - num + id kind @@ -2313,26 +2422,179 @@ 4 5 - 13 + 2723 - num + id seconds 12 - 1320 - 1321 - 13 + 3 + 4 + 653 - - + + 4 + 5 + 708 + + + 6 + 7 + 163 + + + 8 + 9 + 163 + + + 10 + 11 + 163 + + + 11 + 13 + 217 + + + 14 + 17 + 163 + + + 18 + 20 + 163 + + + 20 + 43 + 217 + + + 47 + 92 + 108 + + + + + + + num + id + + + 12 + + + 1 + 2 + 2396 + + + 2 + 3 + 980 + + + 3 + 4 + 490 + + + 4 + 13 + 381 + + + 13 + 51 + 272 + + + + + + + num + kind + + + 12 + + + 4 + 5 + 4520 + + + + + + + num + seconds + + + 12 + + + 3 + 4 + 1361 + + + 4 + 5 + 1034 + + + 5 + 6 + 326 + + + 6 + 7 + 490 + + + 7 + 8 + 163 + + + 8 + 9 + 326 + + + 9 + 17 + 381 + + + 23 + 48 + 381 + + + 91 + 92 + 54 + + + @@ -2343,9 +2605,9 @@ 12 - 1192 - 1193 - 53 + 50 + 51 + 217 @@ -2359,9 +2621,9 @@ 12 - 1 - 2 - 53 + 83 + 84 + 217 @@ -2375,24 +2637,24 @@ 12 - 9 - 10 - 13 + 3 + 4 + 54 - 12 - 13 - 13 + 4 + 5 + 54 - 718 - 719 - 13 + 136 + 137 + 54 - 792 - 793 - 13 + 150 + 151 + 54 @@ -2408,27 +2670,27 @@ 1 2 - 11233 + 6862 2 3 - 3910 + 2886 3 4 - 1200 + 1906 4 - 24 - 1335 + 6 + 1198 - 24 - 696 - 121 + 6 + 47 + 381 @@ -2444,7 +2706,32 @@ 1 2 - 17801 + 6099 + + + 2 + 3 + 2723 + + + 3 + 4 + 1797 + + + 4 + 5 + 925 + + + 5 + 7 + 1089 + + + 7 + 75 + 599 @@ -2460,17 +2747,12 @@ 1 2 - 14969 + 10511 2 3 - 2818 - - - 3 - 4 - 13 + 2723 @@ -2480,23 +2762,23 @@ diagnostic_for - 4444 + 4148 diagnostic - 1588 + 1483 compilation - 1450 + 1354 file_number - 23 + 21 file_number_diagnostic_number - 115 + 107 @@ -2510,12 +2792,12 @@ 1 2 - 1542 + 1440 63 64 - 46 + 42 @@ -2531,7 +2813,7 @@ 1 2 - 1588 + 1483 @@ -2547,7 +2829,7 @@ 1 2 - 1588 + 1483 @@ -2563,12 +2845,12 @@ 3 4 - 1404 + 1311 5 6 - 46 + 42 @@ -2584,7 +2866,7 @@ 1 2 - 1450 + 1354 @@ -2600,12 +2882,12 @@ 3 4 - 1404 + 1311 5 6 - 46 + 42 @@ -2621,7 +2903,7 @@ 69 70 - 23 + 21 @@ -2637,7 +2919,7 @@ 63 64 - 23 + 21 @@ -2653,7 +2935,7 @@ 5 6 - 23 + 21 @@ -2669,17 +2951,17 @@ 1 2 - 46 + 42 2 3 - 46 + 42 63 64 - 23 + 21 @@ -2695,12 +2977,12 @@ 2 3 - 46 + 42 63 64 - 69 + 64 @@ -2716,7 +2998,7 @@ 1 2 - 115 + 107 @@ -2726,19 +3008,19 @@ compilation_finished - 16142 + 12647 id - 16142 + 12647 cpu_seconds - 12164 + 9625 elapsed_seconds - 256 + 221 @@ -2752,7 +3034,7 @@ 1 2 - 16142 + 12647 @@ -2768,7 +3050,7 @@ 1 2 - 16142 + 12647 @@ -2784,17 +3066,17 @@ 1 2 - 10168 + 8262 2 3 - 1402 + 919 3 - 24 - 593 + 34 + 443 @@ -2810,12 +3092,12 @@ 1 2 - 11368 + 9023 2 3 - 795 + 602 @@ -2831,82 +3113,67 @@ 1 2 - 40 + 63 2 3 - 26 - - - 3 - 4 - 13 - - - 4 - 5 - 13 - - - 6 - 7 - 13 + 21 7 8 - 13 - - - 9 - 10 - 13 + 21 10 11 - 13 + 21 - 15 - 16 - 13 + 11 + 12 + 10 - 18 - 19 - 13 + 16 + 17 + 10 - 32 - 33 - 13 + 21 + 22 + 10 - 48 - 49 - 13 + 28 + 29 + 10 - 157 - 158 - 13 + 56 + 57 + 10 - 249 - 250 - 13 + 153 + 154 + 10 - 309 - 310 - 13 + 248 + 249 + 10 - 323 + 297 + 298 + 10 + + + 323 324 - 13 + 10 @@ -2922,82 +3189,67 @@ 1 2 - 40 + 63 2 3 - 26 - - - 3 - 4 - 13 - - - 4 - 5 - 13 - - - 6 - 7 - 13 + 21 7 8 - 13 - - - 8 - 9 - 13 + 21 10 11 - 13 + 21 - 15 - 16 - 13 + 11 + 12 + 10 - 18 - 19 - 13 + 16 + 17 + 10 - 32 - 33 - 13 + 21 + 22 + 10 - 48 - 49 - 13 + 27 + 28 + 10 + + + 54 + 55 + 10 - 147 - 148 - 13 + 152 + 153 + 10 - 170 - 171 - 13 + 163 + 164 + 10 - 222 - 223 - 13 + 229 + 230 + 10 - 264 - 265 - 13 + 251 + 252 + 10 @@ -3223,40 +3475,48 @@ sourceLocationPrefix - 125 + 124 prefix - 125 + 124 - external_packages - 4 + locations_default + 46965948 id - 4 + 46965948 - namespace - 1 + file + 40955 - package_name - 4 + beginLine + 7507424 - version - 4 + beginColumn + 21975 + + + endLine + 7508548 + + + endColumn + 53441 id - namespace + file 12 @@ -3264,7 +3524,7 @@ 1 2 - 4 + 46965948 @@ -3272,7 +3532,7 @@ id - package_name + beginLine 12 @@ -3280,7 +3540,7 @@ 1 2 - 4 + 46965948 @@ -3288,7 +3548,7 @@ id - version + beginColumn 12 @@ -3296,62 +3556,46 @@ 1 2 - 4 - - - - - - - namespace - id - - - 12 - - - 4 - 5 - 1 + 46965948 - namespace - package_name + id + endLine 12 - 4 - 5 - 1 + 1 + 2 + 46965948 - namespace - version + id + endColumn 12 - 4 - 5 - 1 + 1 + 2 + 46965948 - package_name + file id @@ -3359,5512 +3603,385 @@ 1 - 2 - 4 + 15 + 3121 - - - - - - package_name - namespace - - - 12 - - 1 - 2 - 4 + 15 + 41 + 3121 + + + 42 + 72 + 3121 + + + 72 + 114 + 3371 + + + 114 + 142 + 3121 + + + 143 + 211 + 3121 + + + 213 + 307 + 3121 + + + 310 + 430 + 3121 + + + 437 + 596 + 3121 + + + 607 + 827 + 3121 + + + 839 + 1298 + 3121 + + + 1300 + 2722 + 3121 + + + 3114 + 30788 + 3121 + + + 57880 + 57881 + 124 - package_name - version + file + beginLine 12 1 - 2 - 4 + 13 + 3371 + + + 13 + 31 + 3371 + + + 31 + 47 + 3121 + + + 47 + 64 + 3121 + + + 64 + 84 + 3121 + + + 85 + 115 + 3121 + + + 116 + 160 + 3246 + + + 160 + 206 + 3121 + + + 206 + 291 + 3121 + + + 298 + 388 + 3121 + + + 395 + 527 + 3121 + + + 561 + 1339 + 3121 + + + 1375 + 57764 + 2871 - version - id + file + beginColumn 12 1 - 2 - 4 + 5 + 3745 + + + 5 + 9 + 3121 + + + 9 + 15 + 3246 + + + 15 + 20 + 3246 + + + 20 + 28 + 3246 + + + 28 + 36 + 3246 + + + 36 + 42 + 3121 + + + 42 + 53 + 3371 + + + 53 + 62 + 3246 + + + 62 + 81 + 3121 + + + 81 + 95 + 3121 + + + 95 + 111 + 3121 + + + 112 + 156 + 1997 - version - namespace + file + endLine 12 1 - 2 - 4 - - - - - - - version - package_name - - - 12 - - - 1 - 2 - 4 - - - - - - - - - header_to_external_package - 92 - - - fileid - 92 - - - package - 4 - - - - - fileid - package - - - 12 - - - 1 - 2 - 92 - - - - - - - package - fileid - - - 12 - - - 1 - 2 - 1 - - - 5 - 6 - 1 - - - 6 - 7 - 1 - - - 80 - 81 - 1 - - - - - - - - - svnentries - 575525 - - - id - 575525 - - - revision - 575525 - - - author - 19539 - - - revisionDate - 547759 - - - changeSize - 1 - - - - - id - revision - - - 12 - - - 1 - 2 - 575525 - - - - - - - id - author - - - 12 - - - 1 - 2 - 575525 - - - - - - - id - revisionDate - - - 12 - - - 1 - 2 - 575525 - - - - - - - id - changeSize - - - 12 - - - 1 - 2 - 575525 - - - - - - - revision - id - - - 12 - - - 1 - 2 - 575525 - - - - - - - revision - author - - - 12 - - - 1 - 2 - 575525 - - - - - - - revision - revisionDate - - - 12 - - - 1 - 2 - 575525 - - - - - - - revision - changeSize - - - 12 - - - 1 - 2 - 575525 - - - - - - - author - id - - - 12 - - - 1 - 2 - 7913 - - - 2 - 3 - 2531 - - - 3 - 4 - 1388 - - - 4 - 6 - 1523 - - - 6 - 10 - 1529 - - - 10 - 20 - 1509 - - - 20 - 52 - 1488 - - - 52 - 568 - 1466 - - - 569 - 16582 - 192 - - - - - - - author - revision - - - 12 - - - 1 - 2 - 7913 - - - 2 - 3 - 2531 - - - 3 - 4 - 1388 - - - 4 - 6 - 1523 - - - 6 - 10 - 1529 - - - 10 - 20 - 1509 - - - 20 - 52 - 1488 - - - 52 - 568 - 1466 - - - 569 - 16582 - 192 - - - - - - - author - revisionDate - - - 12 - - - 1 - 2 - 7996 - - - 2 - 3 - 2509 - - - 3 - 4 - 1379 - - - 4 - 6 - 1520 - - - 6 - 10 - 1529 - - - 10 - 20 - 1507 - - - 20 - 52 - 1474 - - - 52 - 662 - 1466 - - - 663 - 16573 - 159 - - - - - - - author - changeSize - - - 12 - - - 1 - 2 - 19539 - - - - - - - revisionDate - id - - - 12 - - - 1 - 2 - 531878 - - - 2 - 100 - 15881 - - - - - - - revisionDate - revision - - - 12 - - - 1 - 2 - 531878 - - - 2 - 100 - 15881 - - - - - - - revisionDate - author - - - 12 - - - 1 - 2 - 542505 - - - 2 - 17 - 5254 - - - - - - - revisionDate - changeSize - - - 12 - - - 1 - 2 - 547759 - - - - - - - changeSize - id - - - 12 - - - 575525 - 575526 - 1 - - - - - - - changeSize - revision - - - 12 - - - 575525 - 575526 - 1 - - - - - - - changeSize - author - - - 12 - - - 19539 - 19540 - 1 - - - - - - - changeSize - revisionDate - - - 12 - - - 547759 - 547760 - 1 - - - - - - - - - svnaffectedfiles - 1314068 - - - id - 531628 - - - file - 90924 - - - action - 1 - - - - - id - file - - - 12 - - - 1 - 2 - 337698 - - - 2 - 3 - 77525 - - - 3 - 4 - 43024 - - - 4 - 7 - 46689 - - - 7 - 16635 - 26692 - - - - - - - id - action - - - 12 - - - 1 - 2 - 531628 - - - - - - - file - id - - - 12 - - - 1 - 2 - 11819 - - - 2 - 3 - 18230 - - - 3 - 4 - 9501 - - - 4 - 5 - 6656 - - - 5 - 6 - 5012 - - - 6 - 8 - 7103 - - - 8 - 11 - 6788 - - - 11 - 16 - 6996 - - - 16 - 26 - 7180 - - - 26 - 54 - 6824 - - - 54 - 3572 - 4815 - - - - - - - file - action - - - 12 - - - 1 - 2 - 90924 - - - - - - - action - id - - - 12 - - - 531628 - 531629 - 1 - - - - - - - action - file - - - 12 - - - 90924 - 90925 - 1 - - - - - - - - - svnentrymsg - 575525 - - - id - 575525 - - - message - 568305 - - - - - id - message - - - 12 - - - 1 - 2 - 575525 - - - - - - - message - id - - - 12 - - - 1 - 2 - 565381 - - - 2 - 142 - 2924 - - - - - - - - - svnchurn - 46790 - - - commit - 22361 - - - file - 16124 - - - addedLines - 910 - - - deletedLines - 787 - - - - - commit - file - - - 12 - - - 1 - 2 - 15208 - - - 2 - 3 - 3101 - - - 3 - 4 - 1746 - - - 4 - 8 - 1774 - - - 8 - 246 - 532 - - - - - - - commit - addedLines - - - 12 - - - 1 - 2 - 16074 - - - 2 - 3 - 3323 - - - 3 - 4 - 1561 - - - 4 - 118 - 1403 - - - - - - - commit - deletedLines - - - 12 - - - 1 - 2 - 16799 - - - 2 - 3 - 3286 - - - 3 - 5 - 1763 - - - 5 - 113 - 513 - - - - - - - file - commit - - - 12 - - - 1 - 2 - 8618 - - - 2 - 3 - 2956 - - - 3 - 4 - 1426 - - - 4 - 6 - 1364 - - - 6 - 12 - 1210 - - - 12 - 448 - 550 - - - - - - - file - addedLines - - - 12 - - - 1 - 2 - 9240 - - - 2 - 3 - 3129 - - - 3 - 4 - 1393 - - - 4 - 6 - 1239 - - - 6 - 59 - 1123 - - - - - - - file - deletedLines - - - 12 - - - 1 - 2 - 9525 - - - 2 - 3 - 3192 - - - 3 - 4 - 1401 - - - 4 - 7 - 1387 - - - 7 - 70 - 619 - - - - - - - addedLines - commit - - - 12 - - - 1 - 2 - 446 - - - 2 - 3 - 133 - - - 3 - 4 - 70 - - - 4 - 6 - 68 - - - 6 - 12 - 70 - - - 12 - 57 - 69 - - - 57 - 6874 - 54 - - - - - - - addedLines - file - - - 12 - - - 1 - 2 - 445 - - - 2 - 3 - 132 - - - 3 - 4 - 69 - - - 4 - 6 - 68 - - - 6 - 12 - 73 - - - 12 - 58 - 69 - - - 58 - 6663 - 54 - - - - - - - addedLines - deletedLines - - - 12 - - - 1 - 2 - 621 - - - 2 - 3 - 96 - - - 3 - 7 - 81 - - - 7 - 34 - 70 - - - 34 - 727 - 42 - - - - - - - deletedLines - commit - - - 12 - - - 1 - 2 - 439 - - - 2 - 3 - 116 - - - 3 - 4 - 48 - - - 4 - 8 - 67 - - - 8 - 28 - 60 - - - 28 - 6794 - 57 - - - - - - - deletedLines - file - - - 12 - - - 1 - 2 - 437 - - - 2 - 3 - 113 - - - 3 - 4 - 49 - - - 4 - 7 - 61 - - - 7 - 19 - 60 - - - 19 - 770 - 60 - - - 985 - 7318 - 7 - - - - - - - deletedLines - addedLines - - - 12 - - - 1 - 2 - 545 - - - 2 - 3 - 72 - - - 3 - 7 - 69 - - - 7 - 30 - 60 - - - 30 - 871 - 41 - - - - - - - - - extractor_version - 125 - - - codeql_version - 125 - - - frontend_version - 125 - - - - - codeql_version - frontend_version - - - 12 - - - 1 - 2 - 125 - - - - - - - frontend_version - codeql_version - - - 12 - - - 1 - 2 - 125 - - - - - - - - - locations_default - 36226754 - - - id - 36226754 - - - container - 41023 - - - startLine - 7495820 - - - startColumn - 21262 - - - endLine - 7497821 - - - endColumn - 53530 - - - - - id - container - - - 12 - - - 1 - 2 - 36226754 - - - - - - - id - startLine - - - 12 - - - 1 - 2 - 36226754 - - - - - - - id - startColumn - - - 12 - - - 1 - 2 - 36226754 - - - - - - - id - endLine - - - 12 - - - 1 - 2 - 36226754 - - - - - - - id - endColumn - - - 12 - - - 1 - 2 - 36226754 - - - - - - - container - id - - - 12 - - - 1 - 15 - 3126 - - - 15 - 41 - 3126 - - - 42 - 66 - 3376 - - - 67 - 95 - 3126 - - - 98 - 124 - 3251 - - - 124 - 174 - 3376 - - - 175 - 228 - 3126 - - - 230 - 303 - 3126 - - - 305 - 406 - 3126 - - - 408 - 596 - 3251 - - - 598 - 943 - 3126 - - - 986 - 2568 - 3251 - - - 2725 - 57658 - 2626 - - - - - - - container - startLine - - - 12 - - - 1 - 13 - 3502 - - - 13 - 29 - 3251 - - - 29 - 42 - 3126 - - - 42 - 58 - 3376 - - - 58 - 76 - 3126 - - - 77 - 102 - 3251 - - - 102 - 134 - 3126 - - - 134 - 173 - 3126 - - - 173 - 242 - 3126 - - - 243 - 348 - 3126 - - - 348 - 489 - 3126 - - - 493 - 1269 - 3126 - - - 1337 - 57597 - 2626 - - - - - - - container - startColumn - - - 12 - - - 1 - 4 - 2251 - - - 4 - 7 - 3126 - - - 7 - 12 - 3502 - - - 12 - 16 - 3126 - - - 16 - 22 - 3376 - - - 22 - 28 - 3126 - - - 28 - 33 - 3251 - - - 33 - 39 - 3376 - - - 39 - 48 - 3376 - - - 48 - 60 - 3376 - - - 60 - 82 - 3376 - - - 83 - 98 - 3251 - - - 98 - 141 - 2501 - - - - - - - container - endLine - - - 12 - - - 1 - 13 - 3502 - - - 13 - 29 - 3251 - - - 29 - 42 - 3126 - - - 42 - 58 - 3376 - - - 58 - 76 - 3126 - - - 77 - 102 - 3251 - - - 102 - 134 - 3126 - - - 134 - 173 - 3251 - - - 174 - 244 - 3126 - - - 246 - 348 - 3126 - - - 348 - 494 - 3126 - - - 513 - 1349 - 3126 - - - 1407 - 57597 - 2501 - - - - - - - container - endColumn - - - 12 - - - 1 - 12 - 3376 - - - 13 - 24 - 3251 - - - 25 - 33 - 3251 - - - 33 - 39 - 3376 - - - 39 - 45 - 3627 - - - 45 - 54 - 3126 - - - 54 - 62 - 3627 - - - 62 - 71 - 3376 - - - 71 - 83 - 3502 - - - 83 - 99 - 3126 - - - 99 - 114 - 3126 - - - 114 - 136 - 3126 - - - 147 - 363 - 1125 - - - - - - - startLine - id - - - 12 - - - 1 - 2 - 4960358 - - - 2 - 3 - 800711 - - - 3 - 4 - 566326 - - - 4 - 12 - 593091 - - - 12 - 210 - 562324 - - - 210 - 534 - 13007 - - - - - - - startLine - container - - - 12 - - - 1 - 2 - 5018642 - - - 2 - 3 - 1234586 - - - 3 - 6 - 664132 - - - 6 - 106 - 562324 - - - 107 - 329 - 16134 - - - - - - - startLine - startColumn - - - 12 - - - 1 - 2 - 5655509 - - - 2 - 3 - 532682 - - - 3 - 7 - 579333 - - - 7 - 24 - 571454 - - - 24 - 72 - 156840 - - - - - - - startLine - endLine - - - 12 - - - 1 - 2 - 7320969 - - - 2 - 81 - 174850 - - - - - - - startLine - endColumn - - - 12 - - - 1 - 2 - 5027272 - - - 2 - 3 - 767567 - - - 3 - 4 - 559822 - - - 4 - 12 - 604348 - - - 12 - 235 - 536809 - - - - - - - startColumn - id - - - 12 - - - 1 - 2 - 1500 - - - 2 - 4 - 1876 - - - 4 - 9 - 1625 - - - 9 - 19 - 1751 - - - 20 - 74 - 1625 - - - 81 - 173 - 1625 - - - 173 - 435 - 1625 - - - 468 - 904 - 1625 - - - 945 - 1309 - 1625 - - - 1328 - 1510 - 1625 - - - 1531 - 1774 - 1625 - - - 1834 - 2887 - 1625 - - - 3491 - 119749 - 1500 - - - - - - - startColumn - container - - - 12 - - - 1 - 2 - 1876 - - - 2 - 4 - 1751 - - - 4 - 6 - 1500 - - - 6 - 11 - 1751 - - - 11 - 33 - 1625 - - - 34 - 45 - 1625 - - - 50 - 75 - 1751 - - - 78 - 98 - 1751 - - - 101 - 131 - 1625 - - - 131 - 147 - 1876 - - - 149 - 161 - 1625 - - - 162 - 198 - 1625 - - - 202 - 329 - 875 - - - - - - - startColumn - startLine - - - 12 - - - 1 - 2 - 1625 - - - 2 - 4 - 1876 - - - 4 - 9 - 1625 - - - 9 - 19 - 1751 - - - 20 - 74 - 1625 - - - 80 - 169 - 1625 - - - 171 - 432 - 1625 - - - 467 - 822 - 1625 - - - 861 - 1001 - 1625 - - - 1002 - 1190 - 1625 - - - 1201 - 1338 - 1625 - - - 1347 - 1920 - 1625 - - - 2210 - 59360 - 1375 - - - - - - - startColumn - endLine - - - 12 - - - 1 - 2 - 1625 - - - 2 - 4 - 1876 - - - 4 - 9 - 1625 - - - 9 - 19 - 1751 - - - 20 - 74 - 1625 - - - 80 - 169 - 1625 - - - 171 - 432 - 1625 - - - 467 - 822 - 1625 - - - 861 - 1003 - 1625 - - - 1003 - 1198 - 1625 - - - 1201 - 1338 - 1625 - - - 1347 - 1920 - 1625 - - - 2220 - 59375 - 1375 - - - - - - - startColumn - endColumn - - - 12 - - - 1 - 2 - 1876 - - - 2 - 4 - 1751 - - - 4 - 7 - 1876 - - - 7 - 13 - 1751 - - - 13 - 21 - 1751 - - - 21 - 29 - 1625 - - - 29 - 37 - 1500 - - - 37 - 50 - 1625 - - - 50 - 58 - 1625 - - - 61 - 67 - 1751 - - - 67 - 76 - 1751 - - - 76 - 140 - 1625 - - - 144 - 299 - 750 - - - - - - - endLine - id - - - 12 - - - 1 - 2 - 4959983 - - - 2 - 3 - 807965 - - - 3 - 4 - 561448 - - - 4 - 12 - 593467 - - - 12 - 214 - 562449 - - - 214 - 530 - 12507 - - - - - - - endLine - container - - - 12 - - - 1 - 2 - 5017141 - - - 2 - 3 - 1237713 - - - 3 - 6 - 664507 - - - 6 - 107 - 562449 - - - 107 - 329 - 16009 - - - - - - - endLine - startLine - - - 12 - - - 1 - 2 - 7316466 - - - 2 - 7 - 181354 - - - - - - - endLine - startColumn - - - 12 - - - 1 - 2 - 5658136 - - - 2 - 3 - 531306 - - - 3 - 7 - 580209 - - - 7 - 24 - 571079 - - - 24 - 72 - 157090 - - - - - - - endLine - endColumn - - - 12 - - - 1 - 2 - 5027147 - - - 2 - 3 - 774196 - - - 3 - 4 - 555194 - - - 4 - 12 - 605348 - - - 12 - 235 - 535933 - - - - - - - endColumn - id - - - 12 - - - 1 - 2 - 15759 - - - 2 - 3 - 5628 - - - 3 - 6 - 4127 - - - 6 - 16 - 4252 - - - 16 - 29 - 4127 - - - 30 - 97 - 4127 - - - 97 - 518 - 4127 - - - 523 - 1928 - 4127 - - - 1990 - 3352 - 4127 - - - 3386 - 33692 - 3126 - - - - - - - endColumn - container - - - 12 - - - 1 - 2 - 18760 - - - 2 - 3 - 5628 - - - 3 - 5 - 4127 - - - 5 - 7 - 3376 - - - 7 - 15 - 4752 - - - 15 - 79 - 4127 - - - 80 - 143 - 4127 - - - 150 - 202 - 4127 - - - 203 - 263 - 4127 - - - 266 - 329 - 375 - - - - - - - endColumn - startLine - - - 12 - - - 1 - 2 - 16009 - - - 2 - 3 - 6128 - - - 3 - 8 - 4127 - - - 8 - 17 - 4127 - - - 17 - 35 - 4127 - - - 35 - 140 - 4127 - - - 157 - 601 - 4127 - - - 610 - 1713 - 4127 - - - 1749 - 2382 - 4127 - - - 2421 - 30689 - 2501 - - - - - - - endColumn - startColumn - - - 12 - - - 1 - 2 - 17385 - - - 2 - 3 - 6378 - - - 3 - 4 - 3502 - - - 4 - 6 - 3502 - - - 6 - 11 - 4627 - - - 11 - 22 - 4127 - - - 22 - 40 - 4252 - - - 42 - 60 - 4877 - - - 60 - 68 - 4127 - - - 68 - 73 - 750 - - - - - - - endColumn - endLine - - - 12 - - - 1 - 2 - 16009 - - - 2 - 3 - 6128 - - - 3 - 8 - 4127 - - - 8 - 17 - 4252 - - - 17 - 36 - 4252 - - - 36 - 170 - 4127 - - - 173 - 619 - 4127 - - - 622 - 1824 - 4127 - - - 1843 - 2449 - 4127 - - - 2460 - 30688 - 2251 - - - - - - - - - locations_stmt - 5202209 - - - id - 5202209 - - - container - 4152 - - - startLine - 272815 - - - startColumn - 2553 - - - endLine - 264987 - - - endColumn - 3226 - - - - - id - container - - - 12 - - - 1 - 2 - 5202209 - - - - - - - id - startLine - - - 12 - - - 1 - 2 - 5202209 - - - - - - - id - startColumn - - - 12 - - - 1 - 2 - 5202209 - - - - - - - id - endLine - - - 12 - - - 1 - 2 - 5202209 - - - - - - - id - endColumn - - - 12 - - - 1 - 2 - 5202209 - - - - - - - container - id - - - 12 - - - 1 - 18 - 336 - - - 18 - 60 - 336 - - - 61 - 180 - 336 - - - 190 - 450 - 336 - - - 454 - 628 - 336 - - - 653 - 883 - 336 - - - 906 - 1161 - 336 - - - 1167 - 1466 - 336 - - - 1508 - 1785 - 336 - - - 1858 - 2296 - 336 - - - 2347 - 2833 - 336 - - - 2871 - 4105 - 336 - - - 4275 - 4993 - 112 - - - - - - - container - startLine - - - 12 - - - 1 - 18 - 336 - - - 18 - 49 - 336 - - - 59 - 170 - 336 - - - 170 - 394 - 336 - - - 434 - 603 - 336 - - - 610 - 846 - 336 - - - 880 - 1132 - 336 - - - 1135 - 1395 - 336 - - - 1409 - 1727 - 336 - - - 1761 - 2226 - 336 - - - 2250 - 2778 - 336 - - - 2800 - 3886 - 336 - - - 3965 - 4846 - 112 - - - - - - - container - startColumn - - - 12 - - - 1 - 3 - 280 - - - 3 - 7 - 308 - - - 7 - 9 - 308 - - - 9 - 11 - 336 - - - 11 - 13 - 308 - - - 13 - 14 - 308 - - - 14 - 16 - 336 - - - 16 - 17 - 224 - - - 17 - 19 - 280 - - - 19 - 21 - 252 - - - 21 - 23 - 336 - - - 23 - 29 - 336 - - - 29 - 43 - 336 - - - 48 - 60 - 196 - - - - - - - container - endLine - - - 12 - - - 1 - 15 - 336 - - - 15 - 44 - 336 - - - 47 - 137 - 336 - - - 141 - 314 - 336 - - - 328 - 472 - 336 - - - 488 - 643 - 336 - - - 675 - 858 - 364 - - - 865 - 1107 - 336 - - - 1178 - 1343 - 336 - - - 1401 - 1768 - 336 - - - 1782 - 2165 - 336 - - - 2254 - 3130 - 336 - - - 3343 - 3873 - 84 - - - - - - - container - endColumn - - - 12 - - - 1 - 7 - 336 - - - 8 - 26 - 364 - - - 26 - 47 - 364 - - - 47 - 59 - 336 - - - 59 - 64 - 308 - - - 64 - 67 - 280 - - - 67 - 69 - 336 - - - 69 - 71 - 308 - - - 71 - 72 - 336 - - - 72 - 74 - 336 - - - 74 - 76 - 336 - - - 76 - 80 - 336 - - - 81 - 96 - 168 - - - - - - - startLine - id - - - 12 - - - 1 - 2 - 29405 - - - 2 - 3 - 20875 - - - 3 - 4 - 17031 - - - 4 - 6 - 19725 - - - 6 - 8 - 17087 - - - 8 - 11 - 22811 - - - 11 - 16 - 23569 - - - 16 - 22 - 20931 - - - 22 - 29 - 23232 - - - 29 - 37 - 23681 - - - 37 - 45 - 20623 - - - 45 - 56 - 22138 - - - 56 - 73 - 11700 - - - - - - - startLine - container - - - 12 - - - 1 - 2 - 30443 - - - 2 - 3 - 21464 - - - 3 - 4 - 17312 - - - 4 - 6 - 19641 - - - 6 - 8 - 17368 - - - 8 - 11 - 23990 - - - 11 - 16 - 22334 - - - 16 - 22 - 22138 - - - 22 - 29 - 23148 - - - 29 - 36 - 21857 - - - 36 - 44 - 22306 - - - 44 - 54 - 21661 - - - 54 - 68 - 9147 - - - - - - - startLine - startColumn - - - 12 - - - 1 - 2 - 36616 - - - 2 - 3 - 28451 - - - 3 - 4 - 22952 - - - 4 - 5 - 21970 - - - 5 - 6 - 23793 - - - 6 - 7 - 27104 - - - 7 - 8 - 31061 - - - 8 - 9 - 27890 - - - 9 - 10 - 20426 - - - 10 - 12 - 22699 - - - 12 - 18 - 9848 - - - - - - - startLine - endLine - - - 12 - - - 1 - 2 - 47222 - - - 2 - 3 - 35213 - - - 3 - 4 - 25168 - - - 4 - 5 - 22110 - - - 5 - 6 - 17452 - - - 6 - 7 - 16470 - - - 7 - 8 - 13917 - - - 8 - 9 - 15067 - - - 9 - 10 - 14730 - - - 10 - 11 - 14394 - - - 11 - 12 - 13861 - - - 12 - 14 - 21577 - - - 14 - 24 - 15628 - - - - - - - startLine - endColumn - - - 12 - - - 1 - 2 - 30219 - - - 2 - 3 - 22110 - - - 3 - 4 - 17677 - - - 4 - 6 - 21941 - - - 6 - 8 - 20062 - - - 8 - 10 - 18013 - - - 10 - 14 - 24944 - - - 14 - 18 - 23232 - - - 18 - 22 - 24074 - - - 22 - 26 - 25224 - - - 26 - 30 - 22531 - - - 30 - 36 - 20679 - - - 36 - 42 - 2104 - - - - - - - startColumn - id - - - 12 - - - 1 - 2 - 308 - - - 2 - 3 - 196 - - - 3 - 7 - 224 - - - 7 - 12 - 196 - - - 12 - 20 - 224 - - - 21 - 53 - 196 - - - 54 - 74 - 196 - - - 78 - 92 - 196 - - - 92 - 134 - 196 - - - 134 - 228 - 196 - - - 228 - 2062 - 196 - - - 3248 - 40806 - 196 - - - 53241 - 53242 - 28 - - - - - - - startColumn - container - - - 12 - - - 1 - 2 - 392 - - - 2 - 3 - 140 - - - 3 - 5 - 224 - - - 5 - 8 - 224 - - - 8 - 13 - 196 - - - 13 - 18 - 196 - - - 18 - 22 - 196 - - - 22 - 24 - 196 - - - 24 - 29 - 196 - - - 33 - 42 - 196 - - - 47 - 110 - 196 - - - 116 - 148 - 196 - - - - - - - startColumn - startLine - - - 12 - - - 1 - 2 - 308 - - - 2 - 3 - 196 - - - 3 - 7 - 224 - - - 7 - 12 - 196 - - - 12 - 20 - 224 - - - 21 - 53 - 196 - - - 54 - 74 - 196 - - - 77 - 88 - 196 - - - 90 - 131 - 196 - - - 134 - 224 - 196 - - - 226 - 1699 - 196 - - - 2432 - 7900 - 196 - - - 8302 - 8303 - 28 - - - - - - - startColumn - endLine - - - 12 - - - 1 - 2 - 308 - - - 2 - 3 - 196 - - - 3 - 7 - 224 - - - 7 - 12 - 196 - - - 12 - 20 - 224 - - - 21 - 53 - 196 - - - 54 - 74 - 196 - - - 77 - 88 - 196 - - - 90 - 130 - 196 - - - 134 - 221 - 196 - - - 226 - 1414 - 196 - - - 2291 - 7741 - 196 - - - 8096 - 8097 - 28 - - - - - - - startColumn - endColumn - - - 12 - - - 1 - 2 - 392 - - - 2 - 3 - 196 - - - 3 - 4 - 112 - - - 4 - 5 - 224 - - - 5 - 8 - 224 - - - 8 - 11 - 196 - - - 11 - 15 - 224 - - - 15 - 19 - 196 - - - 19 - 26 - 196 - - - 28 - 35 - 196 - - - 41 - 69 - 196 - - - 70 - 104 - 196 - - - - - - - endLine - id - - - 12 - - - 1 - 2 - 23765 - - - 2 - 3 - 19669 - - - 3 - 4 - 15684 - - - 4 - 6 - 21296 - - - 6 - 8 - 17059 - - - 8 - 11 - 21100 - - - 11 - 15 - 20005 - - - 15 - 21 - 21941 - - - 21 - 27 - 21072 - - - 27 - 34 - 20370 - - - 34 - 42 - 21549 - - - 42 - 51 - 19921 - - - 51 - 68 - 20258 - - - 68 - 130 - 1290 - - - - - - - endLine - container - - - 12 - - - 1 - 2 - 34063 - - - 2 - 3 - 22026 - - - 3 - 4 - 17424 - - - 4 - 6 - 21380 - - - 6 - 8 - 20482 - - - 8 - 11 - 21689 - - - 11 - 16 - 23793 - - - 16 - 20 - 19921 - - - 20 - 26 - 23429 - - - 26 - 32 - 22222 - - - 32 - 39 - 20454 - - - 39 - 58 - 18097 - - - - - - - endLine - startLine - - - 12 - - - 1 - 2 - 44332 - - - 2 - 3 - 32407 - - - 3 - 4 - 25196 - - - 4 - 5 - 20791 - - - 5 - 6 - 18855 - - - 6 - 7 - 15853 - - - 7 - 8 - 16246 - - - 8 - 9 - 14927 - - - 9 - 10 - 13917 - - - 10 - 12 - 24439 - - - 12 - 15 - 24186 - - - 15 - 100 - 13832 - - - - - - - endLine - startColumn - - - 12 - - - 1 - 2 - 34063 - - - 2 - 3 - 27834 - - - 3 - 4 - 22980 - - - 4 - 5 - 24326 - - - 5 - 6 - 25337 - - - 6 - 7 - 27946 - - - 7 - 8 - 30612 - - - 8 - 9 - 25589 - - - 9 - 10 - 17620 - - - 10 - 12 - 20454 - - - 12 - 18 - 8221 - - - - - - - endLine - endColumn - - - 12 - - - 1 - 2 - 33726 - - - 2 - 3 - 22699 - - - 3 - 4 - 17115 - - - 4 - 6 - 24326 - - - 6 - 8 - 20931 - - - 8 - 10 - 17480 - - - 10 - 13 - 19697 - - - 13 - 16 - 20510 - - - 16 - 19 - 20062 - - - 19 - 22 - 18967 - - - 22 - 26 - 23681 - - - 26 - 31 - 20959 - - - 31 - 39 - 4826 - - - - - - - endColumn - id - - - 12 - - - 1 - 2 - 252 - - - 2 - 4 - 252 - - - 4 - 7 - 224 - - - 7 - 16 - 252 - - - 23 - 131 - 252 - - - 149 - 388 - 252 - - - 392 - 675 - 252 - - - 710 - 1137 - 252 - - - 1139 - 1672 - 252 - - - 1883 - 2794 - 252 - - - 2937 - 4095 - 252 - - - 4146 - 4771 - 252 - - - 5032 - 15404 - 224 - - - - - - - endColumn - container - - - 12 - - - 1 - 2 - 280 - - - 2 - 3 - 252 - - - 3 - 6 - 252 - - - 6 - 21 - 252 - - - 31 - 67 - 252 - - - 68 - 93 - 252 - - - 94 - 106 - 252 - - - 107 - 112 - 252 - - - 112 - 118 - 252 - - - 118 - 122 - 196 - - - 122 - 123 - 140 - - - 123 - 124 - 224 - - - 124 - 127 - 252 - - - 127 - 147 - 112 - - - - - - - endColumn - startLine - - - 12 - - - 1 - 2 - 252 - - - 2 - 4 - 252 - - - 4 - 7 - 224 - - - 7 - 15 - 252 - - - 22 - 129 - 252 - - - 143 - 374 - 252 - - - 379 - 646 - 252 - - - 666 - 963 - 252 - - - 1000 - 1430 - 252 - - - 1586 - 2172 - 252 - - - 2265 - 2916 - 252 - - - 2948 - 3215 - 252 - - - 3417 - 5821 - 224 - - - - - - - endColumn - startColumn - - - 12 - - - 1 - 2 - 280 - - - 2 - 3 - 224 - - - 3 - 5 - 280 - - - 5 - 8 - 252 - - - 8 - 12 - 252 - - - 12 - 14 - 168 - - - 14 - 16 - 252 - - - 16 - 19 - 168 - - - 19 - 21 - 224 - - - 21 - 23 - 252 - - - 23 - 25 - 252 - - - 25 - 28 - 252 - - - 28 - 33 - 280 - - - 45 - 57 - 84 - - - - - - - endColumn - endLine - - - 12 - - - 1 - 2 - 280 - - - 2 - 4 - 224 - - - 4 - 7 - 280 - - - 7 - 27 - 252 - - - 42 - 130 - 252 - - - 139 - 325 - 252 - - - 364 - 584 - 252 - - - 610 - 967 - 252 - - - 1056 - 1409 - 252 - - - 1420 - 2038 - 252 - - - 2065 - 2627 - 252 - - - 2651 - 3073 - 252 - - - 3086 - 4516 - 168 - - - - - - - - - locations_expr - 17956521 - - - id - 17956521 - - - container - 6341 - - - startLine - 261984 - - - startColumn - 3367 - - - endLine - 261956 - - - endColumn - 3815 - - - - - id - container - - - 12 - - - 1 - 2 - 17956521 - - - - - - - id - startLine - - - 12 - - - 1 - 2 - 17956521 - - - - - - - id - startColumn - - - 12 - - - 1 - 2 - 17956521 - - - - - - - id - endLine - - - 12 - - - 1 - 2 - 17956521 - - - - - - - id - endColumn - - - 12 - - - 1 - 2 - 17956521 - - - - - - - container - id - - - 12 - - - 1 - 2 - 561 - - - 2 - 6 - 476 - - - 6 - 11 - 476 - - - 12 - 26 - 505 - - - 27 - 87 - 476 - - - 95 - 514 - 476 - - - 525 - 1401 - 476 - - - 1526 - 2343 - 476 - - - 2404 - 3615 - 476 - - - 3668 - 5162 - 476 - - - 5341 - 7345 - 476 - - - 7399 - 9307 - 476 - - - 9382 - 16759 - 476 - - - 18811 - 18812 - 28 - - - - - - - container - startLine - - - 12 - - - 1 - 2 - 673 - - - 2 - 4 - 476 - - - 4 - 10 - 533 - - - 10 - 20 - 505 - - - 20 - 66 - 476 - - - 67 - 162 - 476 - - - 166 - 362 - 476 - - - 376 - 591 - 476 - - - 593 - 929 - 476 - - - 960 - 1269 - 476 - - - 1291 - 1782 - 476 - - - 1851 - 2492 - 476 - - - 2594 - 4241 - 336 - - - - - - - container - startColumn - - - 12 - - - 1 - 2 - 673 - - - 2 - 4 - 505 - - - 4 - 7 - 533 - - - 7 - 16 - 476 - - - 16 - 34 - 505 - - - 36 - 59 - 476 - - - 59 - 66 - 505 - - - 66 - 68 - 364 - - - 68 - 69 - 280 - - - 69 - 70 - 420 - - - 70 - 71 - 252 - - - 71 - 72 - 420 - - - 72 - 74 - 364 - - - 74 - 92 - 505 - - - 94 - 109 - 56 - - - - - - - container - endLine - - - 12 - - - 1 - 2 - 673 - - - 2 - 4 - 476 - - - 4 - 10 - 533 - - - 10 - 20 - 505 - - - 20 - 68 - 476 - - - 68 - 163 - 476 - - - 166 - 362 - 476 - - - 376 - 592 - 476 - - - 593 - 931 - 476 - - - 960 - 1273 - 476 - - - 1292 - 1786 - 476 - - - 1855 - 2501 - 476 - - - 2593 - 4416 - 336 - - - - - - - container - endColumn - - - 12 - - - 1 - 2 - 617 - - - 2 - 4 - 476 + 13 + 3371 - 4 - 7 - 505 + 13 + 31 + 3371 - 7 - 15 - 476 + 31 + 46 + 3121 - 15 - 36 - 476 + 46 + 63 + 3121 - 36 - 62 - 476 + 63 + 84 + 3121 - 62 - 71 - 533 + 84 + 114 + 3121 - 71 - 73 - 280 + 118 + 160 + 3246 - 73 - 75 - 448 + 160 + 206 + 3121 - 75 - 76 - 168 + 207 + 291 + 3121 - 76 - 77 - 561 + 300 + 390 + 3121 - 77 - 79 - 476 + 395 + 562 + 3121 - 79 - 84 - 476 + 564 + 1350 + 3121 - 84 - 116 - 364 + 1420 + 57764 + 2871 - startLine - id + file + endColumn 12 1 - 5 - 21998 + 12 + 3371 - 5 - 9 - 22503 + 13 + 26 + 3496 - 9 - 15 - 21885 + 26 + 34 + 3246 - 15 - 23 - 20623 + 34 + 42 + 3246 - 23 - 32 - 20679 + 42 + 50 + 3246 - 32 - 44 - 20482 + 50 + 61 + 3121 - 44 - 60 - 20146 + 61 + 67 + 3246 - 60 - 80 - 20286 + 67 + 76 + 3496 - 80 - 103 - 19949 + 76 + 88 + 3246 - 103 - 130 - 20090 + 89 + 102 + 3121 - 130 - 159 - 19893 + 102 + 116 + 3496 - 159 - 194 - 19949 + 116 + 133 + 3121 - 194 - 297 - 13496 + 136 + 363 + 1498 - startLine - container + beginLine + id 12 @@ -8872,141 +3989,76 @@ 1 2 - 32099 + 4961954 2 3 - 21324 + 779773 3 4 - 15488 + 544405 4 - 6 - 22334 - - - 6 - 8 - 18602 - - - 8 - 11 - 22418 - - - 11 - 16 - 23681 - - - 16 - 21 - 22503 - - - 21 - 28 - 22671 - - - 28 - 35 - 21633 + 12 + 570876 - 35 - 43 - 21773 + 12 + 97 + 563134 - 43 - 61 - 17452 + 97 + 637 + 87279 - startLine - startColumn + beginLine + file 12 1 - 4 - 21801 - - - 4 - 7 - 23934 - - - 7 - 11 - 22783 - - - 11 - 16 - 23765 - - - 16 - 21 - 23906 - - - 21 - 26 - 20567 - - - 26 - 31 - 22082 - - - 31 - 36 - 24102 + 2 + 5024012 - 36 - 40 - 21464 + 2 + 3 + 1222414 - 40 - 44 - 22615 + 3 + 6 + 640550 - 44 - 49 - 22755 + 6 + 57 + 563509 - 49 - 63 - 12205 + 57 + 329 + 56937 - startLine - endLine + beginLine + beginColumn 12 @@ -9014,187 +4066,97 @@ 1 2 - 138947 + 5646457 2 3 - 61112 + 483596 3 - 4 - 37682 - - - 4 - 6 - 19977 - - - 6 - 23 - 4264 - - - - - - - startLine - endColumn - - - 12 - - - 1 - 4 - 23148 - - - 4 7 - 22727 + 582613 7 - 11 - 22418 - - - 11 - 16 - 22138 - - - 16 - 21 - 22447 - - - 21 - 27 - 22867 - - - 27 - 33 - 22475 - - - 33 - 38 - 19753 - - - 38 - 43 - 21296 - - - 43 - 47 - 19949 - - - 47 - 52 - 23036 - - - 52 - 66 - 19669 + 25 + 566256 - 68 - 69 - 56 + 25 + 94 + 228500 - startColumn - id + beginLine + endLine 12 - - - 1 - 2 - 420 - - - 2 - 4 - 252 - - - 4 - 8 - 280 - - - 8 - 26 - 280 - - - 43 - 253 - 252 - + - 278 - 844 - 252 + 1 + 2 + 7041183 - 949 - 1891 - 252 + 2 + 85 + 466240 + + + + + + beginLine + endColumn + + + 12 + - 2093 - 4169 - 252 + 1 + 2 + 5031004 - 4251 - 7004 - 252 + 2 + 3 + 740066 - 7173 - 11370 - 252 + 3 + 4 + 540284 - 12331 - 15107 - 252 + 4 + 12 + 587483 - 15374 - 30162 - 252 + 12 + 72 + 565257 - 30211 - 49563 - 112 + 72 + 250 + 43327 - startColumn - container + beginColumn + id 12 @@ -9202,75 +4164,75 @@ 1 2 - 448 + 1748 2 - 3 - 168 + 6 + 1997 - 3 - 4 - 196 + 6 + 12 + 1872 - 4 - 6 - 252 + 12 + 40 + 1748 - 7 - 32 - 252 + 49 + 128 + 1748 - 43 - 99 - 252 + 129 + 253 + 1748 - 101 - 121 - 252 + 316 + 707 + 1748 - 121 - 130 - 252 + 791 + 1267 + 1748 - 130 - 138 - 252 + 1281 + 1943 + 1748 - 138 - 142 - 280 + 2017 + 2398 + 1748 - 142 - 144 - 224 + 2491 + 3203 + 1748 - 144 - 150 - 280 + 3252 + 7915 + 1748 - 151 - 158 - 252 + 10983 + 121029 + 624 - startColumn - startLine + beginColumn + file 12 @@ -9278,75 +4240,75 @@ 1 2 - 420 + 1997 2 4 - 252 + 1748 4 7 - 252 + 1748 7 - 19 - 252 + 18 + 1872 - 20 - 152 - 252 + 19 + 43 + 1748 - 199 - 588 - 252 + 44 + 60 + 1748 - 633 - 1287 - 252 + 66 + 93 + 1748 - 1365 - 2343 - 252 + 96 + 117 + 1748 - 2576 - 3504 - 252 + 117 + 150 + 1748 - 3522 - 4709 - 252 + 150 + 169 + 1748 - 4736 - 5298 - 252 + 169 + 181 + 1748 - 5332 - 5999 - 252 + 182 + 217 + 1872 - 6157 - 6996 - 168 + 243 + 329 + 499 - startColumn - endLine + beginColumn + beginLine 12 @@ -9354,75 +4316,75 @@ 1 2 - 420 + 1872 2 - 4 - 252 + 5 + 1872 - 4 - 7 - 252 + 5 + 11 + 1748 - 7 - 19 - 252 + 11 + 36 + 1748 - 20 - 152 - 252 + 36 + 101 + 1748 - 199 - 588 - 252 + 108 + 217 + 1748 - 648 - 1289 - 252 + 226 + 543 + 1748 - 1365 - 2347 - 252 + 633 + 1057 + 1748 - 2579 - 3510 - 252 + 1072 + 1409 + 1748 - 3529 - 4710 - 252 + 1416 + 1614 + 1748 - 4739 - 5323 - 252 + 1615 + 1810 + 1748 - 5346 - 6023 - 252 + 1826 + 3777 + 1748 - 6201 - 7039 - 168 + 3834 + 59554 + 749 - startColumn - endColumn + beginColumn + endLine 12 @@ -9430,143 +4392,143 @@ 1 2 - 448 + 1872 2 - 3 - 168 - - - 3 5 - 252 + 1872 5 - 9 - 252 + 11 + 1748 - 9 - 13 - 252 + 11 + 36 + 1748 - 13 - 20 - 252 + 36 + 102 + 1748 - 20 - 30 - 252 + 109 + 218 + 1748 - 30 - 42 - 252 + 225 + 545 + 1748 - 44 - 60 - 280 + 631 + 1055 + 1748 - 60 - 69 - 252 + 1074 + 1407 + 1748 - 69 - 74 - 252 + 1425 + 1611 + 1748 - 74 - 84 - 308 + 1614 + 1807 + 1748 - 84 - 96 - 140 + 1827 + 3760 + 1748 + + + 3827 + 59562 + 749 - endLine - id + beginColumn + endColumn 12 1 + 2 + 2122 + + + 2 5 - 22026 + 1498 5 - 9 - 22503 + 8 + 1623 - 9 - 15 - 21577 + 8 + 13 + 1748 - 15 + 13 23 - 20595 + 1997 23 - 32 - 21352 + 33 + 1872 - 32 + 34 44 - 20118 - - - 44 - 60 - 19781 + 1748 - 60 - 80 - 20875 + 45 + 57 + 1748 - 80 - 103 - 19809 + 58 + 74 + 1997 - 103 - 130 - 20005 + 77 + 86 + 1872 - 130 - 159 - 19949 + 86 + 98 + 1748 - 159 - 193 - 19669 + 98 + 160 + 1748 - 193 - 296 - 13692 + 258 + 299 + 249 @@ -9574,7 +4536,7 @@ endLine - container + id 12 @@ -9582,67 +4544,32 @@ 1 2 - 32099 + 4959832 2 3 - 21240 + 782270 3 4 - 15488 + 545279 4 - 6 - 21913 - - - 6 - 8 - 18406 - - - 8 - 11 - 22503 - - - 11 - 15 - 19781 - - - 15 - 20 - 22811 - - - 20 - 26 - 20454 - - - 26 - 33 - 21913 - - - 33 - 40 - 19893 + 12 + 568379 - 40 - 49 - 20033 + 12 + 96 + 564758 - 49 - 61 - 5415 + 96 + 620 + 88028 @@ -9650,7 +4577,7 @@ endLine - startLine + file 12 @@ -9658,27 +4585,27 @@ 1 2 - 130248 + 5021140 2 3 - 68210 + 1224912 3 - 4 - 40152 - - - 4 6 - 21380 + 633932 6 - 11 - 1964 + 52 + 564633 + + + 52 + 329 + 63930 @@ -9686,141 +4613,158 @@ endLine - startColumn + beginLine 12 1 - 4 - 21605 + 2 + 7057915 - 4 - 7 - 23821 + 2 + 18 + 450632 + + + + + + endLine + beginColumn + + + 12 + - 7 - 11 - 22503 + 1 + 2 + 5645583 - 11 - 16 - 23681 + 2 + 3 + 480974 - 16 - 21 - 23625 + 3 + 7 + 587608 - 21 - 26 - 20679 + 7 + 25 + 569752 - 26 - 31 - 22278 + 25 + 89 + 224629 + + + + + + endLine + endColumn + + + 12 + - 31 - 36 - 24074 + 1 + 2 + 5029631 - 36 - 40 - 20875 + 2 + 3 + 744436 - 40 - 44 - 22587 + 3 + 4 + 540035 - 44 - 49 - 23148 + 4 + 12 + 588107 - 49 - 63 - 13075 + 12 + 72 + 563509 + + + 72 + 250 + 42828 - endLine - endColumn + endColumn + id 12 1 - 4 - 23457 - - - 4 - 7 - 22924 - - - 7 - 11 - 22418 + 2 + 15732 - 11 - 16 - 23036 + 2 + 3 + 5618 - 16 - 21 - 21857 + 3 + 7 + 4245 - 21 - 26 - 19809 + 7 + 17 + 4120 - 26 - 32 - 22054 + 17 + 33 + 4120 - 32 - 38 - 23878 + 33 + 106 + 4120 - 38 - 43 - 22110 + 114 + 689 + 4120 - 43 - 47 - 19781 + 721 + 2458 + 4120 - 47 - 52 - 22755 + 2593 + 4731 + 4120 - 52 - 69 - 17873 + 4759 + 33780 + 3121 @@ -9828,7 +4772,7 @@ endColumn - id + file 12 @@ -9836,67 +4780,52 @@ 1 2 - 308 + 18604 2 - 4 - 308 - - - 4 - 10 - 280 - - - 10 - 16 - 336 - - - 16 - 51 - 308 + 3 + 5618 - 56 - 618 - 308 + 3 + 5 + 3621 - 841 - 2290 - 308 + 5 + 7 + 3745 - 2328 - 4142 - 308 + 7 + 16 + 4370 - 4177 - 7140 - 308 + 16 + 80 + 4120 - 8235 - 11725 - 308 + 81 + 152 + 4245 - 12344 - 15458 - 308 + 158 + 212 + 4245 - 15684 - 18219 - 308 + 212 + 265 + 4120 - 18696 - 19124 - 112 + 265 + 329 + 749 @@ -9904,7 +4833,7 @@ endColumn - container + beginLine 12 @@ -9912,67 +4841,52 @@ 1 2 - 448 + 15982 2 - 4 - 280 - - - 4 - 6 - 280 - - - 6 - 12 - 308 - - - 12 - 41 - 308 + 3 + 5993 - 50 - 114 - 308 + 3 + 8 + 4245 - 115 - 128 - 308 + 8 + 18 + 4370 - 128 - 137 - 280 + 18 + 42 + 4120 - 137 - 142 - 336 + 43 + 218 + 4120 - 142 - 146 - 280 + 235 + 759 + 4120 - 146 - 148 - 280 + 768 + 2177 + 4120 - 148 - 152 - 308 + 2209 + 2884 + 4120 - 152 - 163 - 84 + 2885 + 30763 + 2247 @@ -9980,7 +4894,7 @@ endColumn - startLine + beginColumn 12 @@ -9988,67 +4902,52 @@ 1 2 - 420 + 17231 2 - 4 - 224 - - - 4 - 8 - 336 - - - 8 - 15 - 308 - - - 18 - 54 - 308 + 3 + 6243 - 74 - 489 - 308 + 3 + 4 + 3246 - 511 - 1338 - 308 + 4 + 7 + 4245 - 1390 - 2420 - 308 + 7 + 14 + 4245 - 2767 - 3740 - 308 + 14 + 28 + 4120 - 3802 - 4530 - 308 + 28 + 45 + 4245 - 4643 - 5303 - 308 + 45 + 69 + 4120 - 5379 - 5736 - 308 + 69 + 81 + 4245 - 5747 - 5806 - 56 + 81 + 117 + 1498 @@ -10056,7 +4955,7 @@ endColumn - startColumn + endLine 12 @@ -10064,70 +4963,76 @@ 1 2 - 364 + 15982 2 - 4 - 280 - - - 4 - 9 - 336 - - - 9 - 14 - 336 + 3 + 5993 - 14 - 22 - 336 + 3 + 8 + 4245 - 23 - 28 - 308 + 8 + 18 + 4370 - 28 - 36 - 308 + 18 + 41 + 4120 - 36 - 41 - 308 + 43 + 217 + 4120 - 41 - 47 - 308 + 233 + 756 + 4120 - 47 - 56 - 308 + 768 + 2177 + 4120 - 56 - 64 - 308 + 2208 + 2858 + 4120 - 64 - 72 - 308 + 2868 + 30757 + 2247 + + + + files + 65232 + + + id + 65232 + + + name + 65232 + + + - endColumn - endLine + id + name 12 @@ -10135,67 +5040,154 @@ 1 2 - 420 + 65232 + + + + + + name + id + + + 12 + - 2 - 4 - 224 + 1 + 2 + 65232 + + + + + + + + folders + 12393 + + + id + 12393 + + + name + 12393 + + + + + id + name + + + 12 + - 4 - 8 - 336 + 1 + 2 + 12393 + + + + + + name + id + + + 12 + - 8 - 15 - 308 + 1 + 2 + 12393 + + + + + + + + containerparent + 77604 + + + parent + 12393 + + + child + 77604 + + + + + parent + child + + + 12 + - 17 - 54 - 308 + 1 + 2 + 6032 - 74 - 471 - 308 + 2 + 3 + 1521 - 500 - 1307 - 308 + 3 + 4 + 665 - 1356 - 2389 - 308 + 4 + 6 + 1003 - 2629 - 3660 - 308 + 6 + 10 + 972 - 3731 - 4490 - 308 + 10 + 16 + 1003 - 4640 - 5281 - 308 + 16 + 44 + 929 - 5368 - 5729 - 308 + 44 + 151 + 264 + + + + + + child + parent + + + 12 + - 5734 - 5796 - 56 + 1 + 2 + 77604 @@ -10205,23 +5197,23 @@ numlines - 809466 + 808616 element_id - 808340 + 807492 num_lines - 39522 + 39456 num_code - 34019 + 34087 num_comment - 18385 + 18230 @@ -10235,12 +5227,12 @@ 1 2 - 807215 + 806369 2 3 - 1125 + 1123 @@ -10256,12 +5248,12 @@ 1 2 - 807215 + 806369 2 3 - 1125 + 1123 @@ -10277,12 +5269,12 @@ 1 2 - 808090 + 807243 2 3 - 250 + 249 @@ -10298,27 +5290,27 @@ 1 2 - 26765 + 26720 2 3 - 3752 + 3745 3 5 - 3376 + 3371 5 - 37 - 3126 + 35 + 2996 - 41 - 1978 - 2501 + 39 + 1983 + 2622 @@ -10334,27 +5326,27 @@ 1 2 - 27265 + 27220 2 3 - 4127 + 4120 3 4 - 2501 + 2497 4 7 - 3502 + 3496 7 12 - 2126 + 2122 @@ -10370,27 +5362,27 @@ 1 2 - 26890 + 26845 2 3 - 4127 + 4120 3 4 - 2501 + 2372 4 6 - 3126 + 3246 6 - 11 - 2876 + 10 + 2871 @@ -10406,32 +5398,32 @@ 1 2 - 21637 + 21851 2 3 - 3752 + 3621 3 4 - 2376 + 2372 4 13 - 2876 + 2871 14 - 197 - 2626 + 198 + 2622 - 205 - 2101 - 750 + 204 + 2092 + 749 @@ -10447,32 +5439,32 @@ 1 2 - 22012 + 22225 2 3 - 3752 + 3621 3 4 - 2126 + 2122 4 6 - 1876 + 1872 6 9 - 2751 + 2746 9 13 - 1500 + 1498 @@ -10488,27 +5480,27 @@ 1 2 - 21762 + 21975 2 3 - 4377 + 4245 3 5 - 2876 + 2871 5 8 - 3126 + 3121 8 12 - 1876 + 1872 @@ -10524,32 +5516,32 @@ 1 2 - 11381 + 11112 2 3 - 1751 + 2122 3 4 - 1500 + 1123 4 7 - 1375 + 1498 8 - 22 - 1500 + 21 + 1373 - 42 - 3650 - 875 + 21 + 3651 + 998 @@ -10565,32 +5557,32 @@ 1 2 - 11381 + 11112 2 3 - 1751 + 2122 3 4 - 1500 + 1123 4 7 - 1500 + 1623 8 - 27 - 1500 + 21 + 1373 - 30 + 26 48 - 750 + 874 @@ -10606,32 +5598,32 @@ 1 2 - 11381 + 11112 2 3 - 1751 + 2122 3 4 - 1751 + 1373 4 - 9 - 1500 + 7 + 1373 - 10 - 36 - 1625 + 7 + 21 + 1373 - 36 - 43 - 375 + 23 + 42 + 874 @@ -10641,31 +5633,31 @@ diagnostics - 1588 + 1483 id - 1588 + 1483 severity - 23 + 21 error_tag - 46 + 42 error_message - 161 + 150 full_error_message - 161 + 150 location - 69 + 64 @@ -10679,7 +5671,7 @@ 1 2 - 1588 + 1483 @@ -10695,7 +5687,7 @@ 1 2 - 1588 + 1483 @@ -10711,7 +5703,7 @@ 1 2 - 1588 + 1483 @@ -10727,7 +5719,7 @@ 1 2 - 1588 + 1483 @@ -10743,7 +5735,7 @@ 1 2 - 1588 + 1483 @@ -10759,7 +5751,7 @@ 69 70 - 23 + 21 @@ -10775,7 +5767,7 @@ 2 3 - 23 + 21 @@ -10791,7 +5783,7 @@ 7 8 - 23 + 21 @@ -10807,7 +5799,7 @@ 7 8 - 23 + 21 @@ -10823,7 +5815,7 @@ 3 4 - 23 + 21 @@ -10839,12 +5831,12 @@ 6 7 - 23 + 21 63 64 - 23 + 21 @@ -10860,7 +5852,7 @@ 1 2 - 46 + 42 @@ -10876,12 +5868,12 @@ 1 2 - 23 + 21 6 7 - 23 + 21 @@ -10897,12 +5889,12 @@ 1 2 - 23 + 21 6 7 - 23 + 21 @@ -10918,12 +5910,12 @@ 1 2 - 23 + 21 2 3 - 23 + 21 @@ -10939,12 +5931,12 @@ 1 2 - 138 + 128 63 64 - 23 + 21 @@ -10960,7 +5952,7 @@ 1 2 - 161 + 150 @@ -10976,7 +5968,7 @@ 1 2 - 161 + 150 @@ -10992,7 +5984,7 @@ 1 2 - 161 + 150 @@ -11008,7 +6000,7 @@ 1 2 - 161 + 150 @@ -11024,12 +6016,12 @@ 1 2 - 138 + 128 63 64 - 23 + 21 @@ -11045,7 +6037,7 @@ 1 2 - 161 + 150 @@ -11061,7 +6053,7 @@ 1 2 - 161 + 150 @@ -11077,7 +6069,7 @@ 1 2 - 161 + 150 @@ -11093,7 +6085,7 @@ 1 2 - 161 + 150 @@ -11109,12 +6101,12 @@ 3 4 - 46 + 42 63 64 - 23 + 21 @@ -11130,7 +6122,7 @@ 1 2 - 69 + 64 @@ -11146,7 +6138,7 @@ 1 2 - 69 + 64 @@ -11162,12 +6154,12 @@ 1 2 - 23 + 21 3 4 - 46 + 42 @@ -11183,108 +6175,12 @@ 1 2 - 23 + 21 3 4 - 46 - - - - - - - - - files - 83260 - - - id - 83260 - - - name - 83260 - - - - - id - name - - - 12 - - - 1 - 2 - 83260 - - - - - - - name - id - - - 12 - - - 1 - 2 - 83260 - - - - - - - - - folders - 15818 - - - id - 15818 - - - name - 15818 - - - - - id - name - - - 12 - - - 1 - 2 - 15818 - - - - - - - name - id - - - 12 - - - 1 - 2 - 15818 + 42 @@ -11293,22 +6189,22 @@ - containerparent - 99052 + extractor_version + 124 - parent - 15818 + codeql_version + 124 - child - 99052 + frontend_version + 124 - parent - child + codeql_version + frontend_version 12 @@ -11316,50 +6212,15 @@ 1 2 - 7700 - - - 2 - 3 - 1941 - - - 3 - 4 - 849 - - - 4 - 6 - 1281 - - - 6 - 10 - 1240 - - - 10 - 16 - 1281 - - - 16 - 44 - 1186 - - - 44 - 151 - 337 + 124 - child - parent + frontend_version + codeql_version 12 @@ -11367,7 +6228,7 @@ 1 2 - 99052 + 124 @@ -11377,23 +6238,23 @@ fileannotations - 5363077 + 4201815 id - 7363 + 5768 kind - 26 + 21 name - 74967 + 58734 value - 50450 + 39526 @@ -11407,12 +6268,12 @@ 1 2 - 256 + 200 2 3 - 7106 + 5568 @@ -11428,62 +6289,62 @@ 1 86 - 552 + 433 88 206 - 552 + 433 212 291 - 566 + 443 291 359 - 552 + 433 362 401 - 552 + 433 402 479 - 552 + 433 480 549 - 323 + 253 550 551 - 1699 + 1331 553 628 - 552 + 433 631 753 - 579 + 454 753 1231 - 566 + 443 1234 2155 - 310 + 243 @@ -11499,67 +6360,67 @@ 1 98 - 552 + 433 102 244 - 552 + 433 244 351 - 552 + 433 352 434 - 566 + 443 434 490 - 566 + 443 490 628 - 552 + 433 632 702 - 80 + 63 706 707 - 1699 + 1331 710 939 - 552 + 433 939 1038 - 552 + 433 1066 1853 - 552 + 433 1853 3292 - 552 + 433 3423 3742 - 26 + 21 @@ -11575,12 +6436,12 @@ 527 528 - 13 + 10 546 547 - 13 + 10 @@ -11596,12 +6457,12 @@ 2 3 - 13 + 10 5557 5558 - 13 + 10 @@ -11617,12 +6478,12 @@ 1 2 - 13 + 10 3741 3742 - 13 + 10 @@ -11638,62 +6499,62 @@ 1 2 - 14079 + 11030 2 3 - 5569 + 4363 3 5 - 6459 + 5060 5 7 - 5232 + 4099 7 9 - 5866 + 4596 9 16 - 5529 + 4331 16 19 - 6243 + 4891 19 27 - 5434 + 4257 27 47 - 6176 + 4839 47 128 - 6284 + 4923 128 459 - 5906 + 4627 459 546 - 2184 + 1711 @@ -11709,7 +6570,7 @@ 1 2 - 74967 + 58734 @@ -11725,57 +6586,57 @@ 1 2 - 14793 + 11590 2 3 - 9817 + 7691 3 4 - 5232 + 4099 4 6 - 5191 + 4067 6 8 - 4369 + 3423 8 11 - 6055 + 4743 11 17 - 6891 + 5399 17 23 - 6001 + 4701 23 41 - 5974 + 4680 41 95 - 5704 + 4469 95 1726 - 4935 + 3867 @@ -11791,72 +6652,72 @@ 1 2 - 4288 + 3359 2 4 - 2090 + 1637 4 5 - 4072 + 3190 5 8 - 3142 + 2461 8 14 - 3789 + 2968 14 17 - 2467 + 1933 17 24 - 3883 + 3042 24 51 - 4517 + 3539 51 58 - 3870 + 3032 58 80 - 3802 + 2979 81 151 - 3937 + 3085 151 334 - 3802 + 2979 334 473 - 3829 + 3000 473 547 - 2953 + 2313 @@ -11872,12 +6733,12 @@ 1 2 - 50436 + 39515 2 3 - 13 + 10 @@ -11893,72 +6754,72 @@ 1 2 - 4342 + 3402 2 4 - 2440 + 1912 4 5 - 3897 + 3053 5 8 - 3169 + 2482 8 14 - 4450 + 3486 14 18 - 4409 + 3454 18 28 - 4086 + 3201 28 34 - 4018 + 3148 34 41 - 4086 + 3201 41 66 - 3816 + 2990 66 92 - 3924 + 3074 92 113 - 3816 + 2990 113 145 - 3870 + 3032 145 172 - 121 + 95 @@ -11968,15 +6829,15 @@ inmacroexpansion - 149575195 + 149996022 id - 24600427 + 24670888 inv - 3693421 + 3705273 @@ -11990,37 +6851,37 @@ 1 3 - 2201734 + 2209400 3 5 - 1470855 + 1474978 5 6 - 1615840 + 1620370 6 7 - 6564145 + 6582548 7 8 - 8694629 + 8719004 8 9 - 3547106 + 3557050 9 22 - 506116 + 507535 @@ -12036,57 +6897,57 @@ 1 2 - 528682 + 531662 2 3 - 741131 + 743208 3 4 - 480166 + 481512 4 7 - 274533 + 275303 7 8 - 281364 + 282153 8 9 - 329323 + 330247 9 10 - 3037 + 3046 10 11 - 443407 + 444650 11 337 - 306938 + 307798 339 423 - 280967 + 281755 423 7616 - 23868 + 23934 @@ -12096,15 +6957,15 @@ affectedbymacroexpansion - 48599612 + 48735860 id - 7025049 + 7044743 inv - 3792491 + 3803123 @@ -12118,37 +6979,37 @@ 1 2 - 3835957 + 3846711 2 3 - 764163 + 766305 3 4 - 360830 + 361842 4 5 - 770576 + 772736 5 12 - 533664 + 535160 12 50 - 554712 + 556267 50 9900 - 205144 + 205719 @@ -12164,67 +7025,67 @@ 1 4 - 312373 + 313248 4 7 - 315722 + 316607 7 9 - 300246 + 301088 9 12 - 341980 + 342939 12 13 - 454730 + 456004 13 14 - 225467 + 226099 14 15 - 406898 + 408038 15 16 - 165963 + 166429 16 17 - 376622 + 377678 17 18 - 200076 + 200636 18 20 - 343293 + 344255 20 25 - 284595 + 285393 25 207 - 64521 + 64702 @@ -12234,23 +7095,23 @@ macroinvocations - 40422573 + 40338485 id - 40422573 + 40338485 macro_id - 109396 + 182070 location - 1065236 + 5912757 kind - 26 + 108 @@ -12264,7 +7125,7 @@ 1 2 - 40422573 + 40338485 @@ -12280,7 +7141,7 @@ 1 2 - 40422573 + 40338485 @@ -12296,7 +7157,7 @@ 1 2 - 40422573 + 40338485 @@ -12312,52 +7173,47 @@ 1 2 - 23235 + 60781 2 3 - 20471 + 27558 3 4 - 7484 + 17972 4 - 6 - 10019 - - - 6 - 11 - 9413 + 5 + 10021 - 11 - 21 - 9048 + 5 + 7 + 13779 - 21 - 48 - 8334 + 7 + 13 + 14705 - 48 - 145 - 8280 + 13 + 33 + 13779 - 145 - 955 - 8212 + 33 + 180 + 13670 - 955 - 175302 - 4895 + 181 + 72144 + 9803 @@ -12373,37 +7229,42 @@ 1 2 - 59970 + 77283 2 3 - 13580 + 30553 3 4 - 6850 + 14323 4 - 6 - 8684 + 5 + 10293 - 6 - 13 - 9399 + 5 + 8 + 14106 - 13 - 67 - 8253 + 8 + 18 + 14160 - 67 - 4815 - 2656 + 18 + 88 + 13670 + + + 89 + 12189 + 7679 @@ -12419,12 +7280,12 @@ 1 2 - 100980 + 177496 2 3 - 8415 + 4574 @@ -12440,37 +7301,17 @@ 1 2 - 424327 + 5255929 2 - 3 - 251670 - - - 3 4 - 112794 + 422363 4 - 6 - 77246 - - - 6 - 11 - 81763 - - - 11 - 41 - 80374 - - - 41 - 226300 - 37058 + 72144 + 234464 @@ -12486,12 +7327,12 @@ 1 2 - 1005062 + 5890590 2 - 367 - 60173 + 37 + 22166 @@ -12507,7 +7348,7 @@ 1 2 - 1065236 + 5912757 @@ -12521,14 +7362,14 @@ 12 - 22298 - 22299 - 13 + 1490 + 1491 + 54 - 2975140 - 2975141 - 13 + 739164 + 739165 + 54 @@ -12542,14 +7383,14 @@ 12 - 2368 - 2369 - 13 + 282 + 283 + 54 - 6368 - 6369 - 13 + 3145 + 3146 + 54 @@ -12563,14 +7404,14 @@ 12 - 7695 - 7696 - 13 + 1069 + 1070 + 54 - 71295 - 71296 - 13 + 107495 + 107496 + 54 @@ -12580,15 +7421,15 @@ macroparent - 35648322 + 33655998 id - 35648322 + 33655998 parent_id - 27932475 + 15926385 @@ -12602,7 +7443,7 @@ 1 2 - 35648322 + 33655998 @@ -12618,17 +7459,27 @@ 1 2 - 21758475 + 7806501 2 3 - 5150852 + 1595448 3 - 91 - 1023147 + 4 + 4702908 + + + 4 + 5 + 1295464 + + + 5 + 205 + 526061 @@ -12638,15 +7489,15 @@ macrolocationbind - 5543583 + 6058841 id - 3882063 + 4241799 location - 2758591 + 2277063 @@ -12660,22 +7511,27 @@ 1 2 - 3056719 + 3316469 2 3 - 469858 + 490781 3 - 7 - 314935 + 4 + 7888 - 7 - 57 - 40549 + 4 + 5 + 413483 + + + 5 + 17 + 13176 @@ -12691,22 +7547,27 @@ 1 2 - 2198268 + 1335697 2 3 - 240004 + 481667 3 - 8 - 216571 + 4 + 7802 - 8 - 723 - 103748 + 4 + 5 + 427799 + + + 5 + 522 + 24096 @@ -12716,19 +7577,19 @@ macro_argument_unexpanded - 102782052 + 82524830 invocation - 31085973 + 26294983 argument_index - 890 + 697 text - 438272 + 343373 @@ -12742,22 +7603,22 @@ 1 2 - 9939829 + 9687115 2 3 - 12443923 + 9773574 3 4 - 6366751 + 5003770 4 67 - 2335468 + 1830521 @@ -12773,22 +7634,22 @@ 1 2 - 10173011 + 9869806 2 3 - 12465325 + 9791124 3 4 - 6167729 + 4847060 4 67 - 2279907 + 1786991 @@ -12804,17 +7665,17 @@ 46457 46458 - 782 + 612 46659 - 173182 - 67 + 173253 + 52 - 645292 - 2305106 - 40 + 646840 + 2488722 + 31 @@ -12830,17 +7691,17 @@ 2 3 - 782 + 612 13 1115 - 67 + 52 7702 22873 - 40 + 31 @@ -12856,57 +7717,57 @@ 1 2 - 51717 + 39716 2 3 - 79633 + 62347 3 4 - 29533 + 21036 4 5 - 44314 + 34591 5 6 - 49964 + 39261 6 9 - 36465 + 30883 9 15 - 36654 + 28992 15 - 27 - 33377 + 26 + 25896 - 27 + 26 57 - 33970 + 27153 57 517 - 33093 + 26002 518 - 485092 - 9547 + 486610 + 7491 @@ -12922,17 +7783,17 @@ 1 2 - 310481 + 243253 2 3 - 114749 + 89903 3 9 - 13040 + 10216 @@ -12942,19 +7803,19 @@ macro_argument_expanded - 102782052 + 82524830 invocation - 31085973 + 26294983 argument_index - 890 + 697 text - 265479 + 207995 @@ -12968,22 +7829,22 @@ 1 2 - 9939829 + 9687115 2 3 - 12443923 + 9773574 3 4 - 6366751 + 5003770 4 67 - 2335468 + 1830521 @@ -12999,22 +7860,22 @@ 1 2 - 13706388 + 12646684 2 3 - 10736336 + 8431006 3 4 - 5379705 + 4226602 4 9 - 1263543 + 990689 @@ -13030,17 +7891,17 @@ 46457 46458 - 782 + 612 46659 - 173182 - 67 + 173253 + 52 - 645292 - 2305106 - 40 + 646840 + 2488722 + 31 @@ -13056,17 +7917,17 @@ 1 2 - 768 + 602 2 96 - 67 + 52 950 16176 - 53 + 42 @@ -13082,57 +7943,57 @@ 1 2 - 28171 + 21839 2 3 - 34927 + 26868 3 4 - 58231 + 43509 4 5 - 20538 + 15911 5 6 - 3964 + 3264 6 7 - 23235 + 18405 7 10 - 21590 + 18975 10 19 - 22939 + 18331 19 51 - 19931 + 15785 51 - 253 - 20053 + 252 + 15605 - 254 - 990275 - 11894 + 252 + 1169625 + 9498 @@ -13148,17 +8009,17 @@ 1 2 - 134169 + 105117 2 3 - 113522 + 88941 3 66 - 17787 + 13936 @@ -13168,19 +8029,19 @@ functions - 4015439 + 4053072 id - 4015439 + 4053072 name - 1650451 + 1694898 kind - 1000 + 998 @@ -13194,7 +8055,7 @@ 1 2 - 4015439 + 4053072 @@ -13210,7 +8071,7 @@ 1 2 - 4015439 + 4053072 @@ -13226,17 +8087,17 @@ 1 2 - 1403934 + 1448542 2 4 - 139330 + 139098 4 3162 - 107186 + 107257 @@ -13252,12 +8113,12 @@ 1 2 - 1647574 + 1692026 2 3 - 2876 + 2871 @@ -13273,42 +8134,42 @@ 8 9 - 125 + 124 13 14 - 125 + 124 47 48 - 125 + 124 83 84 - 125 + 124 - 690 - 691 - 125 + 691 + 692 + 124 - 4450 - 4451 - 125 + 4453 + 4454 + 124 5230 5231 - 125 + 124 - 21584 - 21585 - 125 + 21935 + 21936 + 124 @@ -13324,42 +8185,42 @@ 2 3 - 125 + 124 13 14 - 125 + 124 18 19 - 125 + 124 41 42 - 125 + 124 43 44 - 125 + 124 302 303 - 125 + 124 504 505 - 125 + 124 - 12296 - 12297 - 125 + 12674 + 12675 + 124 @@ -13369,15 +8230,15 @@ function_entry_point - 1432100 + 1141500 id - 1427396 + 1137753 entry_point - 1432100 + 1141500 @@ -13391,12 +8252,12 @@ 1 2 - 1423376 + 1134551 2 17 - 4020 + 3202 @@ -13412,7 +8273,7 @@ 1 2 - 1432100 + 1141500 @@ -13422,15 +8283,15 @@ function_return_type - 4032949 + 4070553 id - 4015439 + 4053072 return_type - 623609 + 619822 @@ -13444,12 +8305,12 @@ 1 2 - 3997929 + 4035591 2 3 - 17510 + 17480 @@ -13465,27 +8326,27 @@ 1 2 - 313305 + 310161 2 3 - 213748 + 213891 3 5 - 48527 + 48072 5 - 354 - 46776 + 365 + 46574 - 358 - 9897 - 1250 + 432 + 9944 + 1123 @@ -13765,59 +8626,59 @@ purefunctions - 138705 + 131414 id - 138705 + 131414 function_deleted - 94271 + 88001 id - 94271 + 88001 function_defaulted - 55310 + 51631 id - 55310 + 51631 function_prototyped - 4013938 + 4051574 id - 4013938 + 4051574 deduction_guide_for_class - 5878 + 5868 id - 5878 + 5868 class_template - 2251 + 2247 @@ -13831,7 +8692,7 @@ 1 2 - 5878 + 5868 @@ -13847,32 +8708,32 @@ 1 2 - 1125 + 1123 2 3 - 375 + 374 3 4 - 125 + 124 4 5 - 250 + 249 5 6 - 125 + 124 8 9 - 250 + 249 @@ -13882,15 +8743,15 @@ member_function_this_type - 841186 + 674762 id - 841186 + 674762 this_type - 239923 + 176182 @@ -13904,7 +8765,7 @@ 1 2 - 841186 + 674762 @@ -13920,37 +8781,37 @@ 1 2 - 73730 + 47198 2 3 - 70223 + 36959 3 4 - 33743 + 32714 4 5 - 15396 + 20103 5 - 7 - 21854 + 6 + 12860 - 7 - 13 - 18903 + 6 + 10 + 14484 - 13 - 530 - 6072 + 10 + 65 + 11862 @@ -13960,27 +8821,27 @@ fun_decls - 4160522 + 4212773 id - 4154519 + 4206779 function - 3990925 + 4028474 type_id - 615604 + 611831 name - 1648950 + 1693400 location - 2773098 + 2815799 @@ -13994,7 +8855,7 @@ 1 2 - 4154519 + 4206779 @@ -14010,12 +8871,12 @@ 1 2 - 4148516 + 4200786 2 3 - 6003 + 5993 @@ -14031,7 +8892,7 @@ 1 2 - 4154519 + 4206779 @@ -14047,7 +8908,7 @@ 1 2 - 4154519 + 4206779 @@ -14063,12 +8924,12 @@ 1 2 - 3840713 + 3864778 2 - 4 - 150211 + 5 + 163696 @@ -14084,12 +8945,12 @@ 1 2 - 3972414 + 4009994 2 3 - 18510 + 18479 @@ -14105,7 +8966,7 @@ 1 2 - 3990925 + 4028474 @@ -14121,12 +8982,12 @@ 1 2 - 3847467 + 3885256 2 4 - 143457 + 143218 @@ -14142,27 +9003,27 @@ 1 2 - 298547 + 295427 2 3 - 220627 + 220758 3 5 - 48903 + 48447 5 - 354 - 46276 + 364 + 45949 - 358 - 10246 - 1250 + 364 + 10292 + 1248 @@ -14178,27 +9039,27 @@ 1 2 - 308677 + 305541 2 3 - 211872 + 212018 3 5 - 48527 + 48072 5 - 1033 - 46276 + 1163 + 45949 1483 - 9847 - 250 + 9893 + 249 @@ -14214,22 +9075,22 @@ 1 2 - 495160 + 491962 2 3 - 52780 + 52942 3 7 - 51154 + 50195 7 - 2211 - 16509 + 2238 + 16731 @@ -14245,22 +9106,22 @@ 1 2 - 458514 + 455377 2 3 - 69540 + 69549 3 6 - 55907 + 56063 6 - 4728 - 31643 + 4756 + 30841 @@ -14276,22 +9137,22 @@ 1 2 - 1299248 + 1332544 2 3 - 184106 + 194662 3 - 10 - 125697 + 11 + 129608 - 10 + 11 3169 - 39897 + 36585 @@ -14307,17 +9168,17 @@ 1 2 - 1403433 + 1448043 2 4 - 139705 + 139597 4 3162 - 105810 + 105759 @@ -14333,12 +9194,12 @@ 1 2 - 1558773 + 1603498 2 1596 - 90176 + 89901 @@ -14354,17 +9215,17 @@ 1 2 - 1323637 + 1368505 2 3 - 208745 + 208522 3 1592 - 116567 + 116372 @@ -14380,17 +9241,17 @@ 1 2 - 2392879 + 2422478 2 3 - 238012 + 251725 3 211 - 142206 + 141595 @@ -14406,17 +9267,17 @@ 1 2 - 2396631 + 2441208 2 3 - 234760 + 233494 3 211 - 141706 + 141095 @@ -14432,12 +9293,12 @@ 1 2 - 2657656 + 2701299 2 211 - 115441 + 114499 @@ -14453,12 +9314,12 @@ 1 2 - 2733825 + 2776592 2 8 - 39272 + 39207 @@ -14468,48 +9329,48 @@ fun_def - 1584950 + 1423570 id - 1584950 + 1423570 fun_specialized - 8434 + 7936 id - 8434 + 7936 fun_implicit - 271 + 272 id - 271 + 272 fun_decl_specifiers - 4106992 + 4283570 id - 1690224 + 1749838 name - 1375 + 1373 @@ -14523,22 +9384,22 @@ 1 2 - 361958 + 363228 2 3 - 262776 + 262463 3 4 - 1042475 + 1101172 4 5 - 23013 + 22974 @@ -14554,57 +9415,57 @@ 15 16 - 125 + 124 19 20 - 125 + 124 224 225 - 125 + 124 261 262 - 125 + 124 - 546 - 547 - 125 + 561 + 562 + 124 826 827 - 125 + 124 1032 1033 - 125 + 124 - 1089 - 1090 - 125 + 1093 + 1094 + 124 - 7668 - 7669 - 125 + 8148 + 8149 + 124 - 10543 - 10544 - 125 + 11028 + 11029 + 124 - 10614 - 10615 - 125 + 11099 + 11100 + 124 @@ -14735,26 +9596,26 @@ fun_decl_empty_throws - 436983 + 420457 fun_decl - 436983 + 420457 fun_decl_noexcept - 178039 + 141823 fun_decl - 178039 + 141823 constant - 177440 + 141346 @@ -14768,7 +9629,7 @@ 1 2 - 178039 + 141823 @@ -14784,12 +9645,12 @@ 1 2 - 176884 + 140903 2 4 - 555 + 442 @@ -14799,26 +9660,26 @@ fun_decl_empty_noexcept - 1165171 + 1164727 fun_decl - 1165171 + 1164727 fun_decl_typedef_type - 2796 + 2763 fun_decl - 2796 + 2763 typedeftype_id - 125 + 124 @@ -14832,7 +9693,7 @@ 1 2 - 2796 + 2763 @@ -14908,19 +9769,19 @@ fun_requires - 31155 + 29083 id - 10822 + 10102 kind - 46 + 42 constraint - 30901 + 28846 @@ -14934,12 +9795,12 @@ 1 2 - 10753 + 10038 2 3 - 69 + 64 @@ -14955,32 +9816,32 @@ 1 2 - 7783 + 7265 2 3 - 529 + 494 3 6 - 921 + 859 6 13 - 345 + 322 13 14 - 1220 + 1139 19 20 - 23 + 21 @@ -14996,12 +9857,12 @@ 208 209 - 23 + 21 265 266 - 23 + 21 @@ -15017,12 +9878,12 @@ 580 581 - 23 + 21 762 763 - 23 + 21 @@ -15038,12 +9899,12 @@ 1 2 - 30648 + 28610 2 3 - 253 + 236 @@ -15059,7 +9920,7 @@ 1 2 - 30901 + 28846 @@ -15069,19 +9930,19 @@ param_decl_bind - 7198273 + 7317007 id - 7198273 + 7317007 index - 8004 + 7991 fun_decl - 3482131 + 3534888 @@ -15095,7 +9956,7 @@ 1 2 - 7198273 + 7317007 @@ -15111,7 +9972,7 @@ 1 2 - 7198273 + 7317007 @@ -15127,32 +9988,32 @@ 2 3 - 4002 + 3995 6 7 - 2001 + 1997 16 20 - 625 + 624 25 - 143 - 625 + 147 + 624 - 332 - 15841 - 625 + 343 + 16215 + 624 - 27841 - 27842 - 125 + 28310 + 28311 + 124 @@ -15168,32 +10029,32 @@ 2 3 - 4002 + 3995 6 7 - 2001 + 1997 16 20 - 625 + 624 25 - 143 - 625 + 147 + 624 - 332 - 15841 - 625 + 343 + 16215 + 624 - 27841 - 27842 - 125 + 28310 + 28311 + 124 @@ -15209,27 +10070,27 @@ 1 2 - 1500990 + 1510350 2 3 - 957927 + 977182 3 4 - 580584 + 602591 4 5 - 283413 + 290932 5 65 - 159216 + 153831 @@ -15245,27 +10106,27 @@ 1 2 - 1500990 + 1510350 2 3 - 957927 + 977182 3 4 - 580584 + 602591 4 5 - 283413 + 290932 5 65 - 159216 + 153831 @@ -15275,27 +10136,27 @@ var_decls - 9254083 + 9398483 id - 9247204 + 9391616 variable - 8956662 + 9042872 type_id - 1464093 + 1457782 name - 853366 + 853317 location - 6211705 + 6280264 @@ -15309,7 +10170,7 @@ 1 2 - 9247204 + 9391616 @@ -15325,12 +10186,12 @@ 1 2 - 9240325 + 9384748 2 3 - 6878 + 6867 @@ -15346,7 +10207,7 @@ 1 2 - 9247204 + 9391616 @@ -15362,7 +10223,7 @@ 1 2 - 9247204 + 9391616 @@ -15378,12 +10239,12 @@ 1 2 - 8679127 + 8711609 2 - 4 - 277534 + 5 + 331263 @@ -15399,12 +10260,12 @@ 1 2 - 8917889 + 8989305 2 3 - 38772 + 53566 @@ -15420,12 +10281,12 @@ 1 2 - 8850851 + 8937362 2 4 - 105810 + 105509 @@ -15441,12 +10302,12 @@ 1 2 - 8704516 + 8791022 2 4 - 252145 + 251849 @@ -15462,27 +10323,27 @@ 1 2 - 855743 + 850695 2 3 - 285289 + 284314 3 5 - 128198 + 127485 5 11 - 113065 + 113251 11 - 2767 - 81797 + 2944 + 82035 @@ -15498,27 +10359,27 @@ 1 2 - 876129 + 871547 2 3 - 270781 + 269330 3 5 - 123571 + 122865 5 11 - 113065 + 113126 11 - 2682 - 80546 + 2860 + 80911 @@ -15534,22 +10395,22 @@ 1 2 - 1126274 + 1120526 2 3 - 193361 + 192789 3 7 - 115316 + 115373 7 1038 - 29141 + 29093 @@ -15565,27 +10426,27 @@ 1 2 - 992071 + 986297 2 3 - 219376 + 219260 3 6 - 134202 + 133728 6 95 - 109938 + 109380 97 - 2570 - 8504 + 2622 + 9115 @@ -15601,32 +10462,32 @@ 1 2 - 466393 + 466365 2 3 - 165970 + 165943 3 4 - 60159 + 59684 4 7 - 66038 + 65927 7 25 - 64537 + 64179 25 - 26622 - 30267 + 27139 + 31215 @@ -15642,32 +10503,32 @@ 1 2 - 479276 + 479351 2 3 - 165220 + 165194 3 4 - 55031 + 54690 4 8 - 71916 + 71671 8 45 - 64036 + 64304 45 - 26187 - 17885 + 26704 + 18105 @@ -15683,22 +10544,22 @@ 1 2 - 655627 + 655284 2 3 - 110563 + 110878 3 11 - 65412 + 65553 11 - 3460 - 21762 + 3463 + 21601 @@ -15714,27 +10575,27 @@ 1 2 - 493659 + 494210 2 3 - 183480 + 183424 3 4 - 52405 + 51693 4 8 - 65287 + 65053 8 - 22104 - 58533 + 22619 + 58935 @@ -15750,12 +10611,17 @@ 1 2 - 5763571 + 5780061 2 + 21 + 472733 + + + 21 2943 - 448133 + 27469 @@ -15771,12 +10637,12 @@ 1 2 - 5787585 + 5860972 2 2935 - 424119 + 419291 @@ -15792,12 +10658,12 @@ 1 2 - 5927416 + 5981466 2 2555 - 284288 + 298798 @@ -15813,12 +10679,12 @@ 1 2 - 6199197 + 6267903 2 5 - 12507 + 12361 @@ -15828,37 +10694,37 @@ var_def - 3714015 + 3770381 id - 3714015 + 3770381 var_specialized - 690 + 644 id - 690 + 644 var_decl_specifiers - 489532 + 490339 id - 489532 + 490339 name - 500 + 499 @@ -15872,7 +10738,7 @@ 1 2 - 489532 + 490339 @@ -15888,22 +10754,22 @@ 16 17 - 125 + 124 77 78 - 125 + 124 - 651 - 652 - 125 + 653 + 654 + 124 - 3170 - 3171 - 125 + 3181 + 3182 + 124 @@ -15913,26 +10779,26 @@ is_structured_binding - 1013 + 945 id - 1013 + 945 var_requires - 414 + 386 id - 69 + 64 constraint - 414 + 386 @@ -15946,17 +10812,17 @@ 2 3 - 23 + 21 3 4 - 23 + 21 13 14 - 23 + 21 @@ -15972,7 +10838,7 @@ 1 2 - 414 + 386 @@ -15982,19 +10848,19 @@ type_decls - 1882105 + 1634964 id - 1882105 + 1634964 type_id - 1840893 + 1615984 location - 1478788 + 1548808 @@ -16008,7 +10874,7 @@ 1 2 - 1882105 + 1634964 @@ -16024,7 +10890,7 @@ 1 2 - 1882105 + 1634964 @@ -16040,12 +10906,12 @@ 1 2 - 1811238 + 1599627 2 - 24 - 29655 + 10 + 16357 @@ -16061,12 +10927,12 @@ 1 2 - 1812560 + 1599752 2 - 24 - 28333 + 10 + 16232 @@ -16082,12 +10948,12 @@ 1 2 - 1402608 + 1526707 2 - 651 - 76180 + 64 + 22100 @@ -16103,12 +10969,12 @@ 1 2 - 1403943 + 1526832 2 - 651 - 74845 + 64 + 21975 @@ -16118,37 +10984,37 @@ type_def - 1291458 + 1096552 id - 1291458 + 1096552 type_decl_top - 670615 + 673602 type_decl - 670615 + 673602 type_requires - 8220 + 7673 id - 2187 + 2042 constraint - 8197 + 7652 @@ -16162,27 +11028,27 @@ 1 2 - 1082 + 1010 2 5 - 115 + 107 5 6 - 644 + 601 6 13 - 184 + 171 13 14 - 161 + 150 @@ -16198,12 +11064,12 @@ 1 2 - 8174 + 7630 2 3 - 23 + 21 @@ -16213,23 +11079,23 @@ namespace_decls - 430914 + 407321 id - 430914 + 407321 namespace_id - 1959 + 1844 location - 430914 + 407321 bodylocation - 430914 + 407321 @@ -16243,7 +11109,7 @@ 1 2 - 430914 + 407321 @@ -16259,7 +11125,7 @@ 1 2 - 430914 + 407321 @@ -16275,7 +11141,7 @@ 1 2 - 430914 + 407321 @@ -16291,57 +11157,57 @@ 1 2 - 414 + 389 2 3 - 215 + 203 3 6 - 181 + 170 6 15 - 164 + 154 15 34 - 155 + 146 35 62 - 164 + 154 63 87 - 155 + 146 90 - 142 - 155 + 144 + 154 - 143 - 219 - 155 + 146 + 264 + 146 - 263 - 1505 - 155 + 268 + 1868 + 146 - 1854 - 12392 - 43 + 2205 + 12449 + 32 @@ -16357,57 +11223,57 @@ 1 2 - 414 + 389 2 3 - 215 + 203 3 6 - 181 + 170 6 15 - 164 + 154 15 34 - 155 + 146 35 62 - 164 + 154 63 87 - 155 + 146 90 - 142 - 155 + 144 + 154 - 143 - 219 - 155 + 146 + 264 + 146 - 263 - 1505 - 155 + 268 + 1868 + 146 - 1854 - 12392 - 43 + 2205 + 12449 + 32 @@ -16423,57 +11289,57 @@ 1 2 - 414 + 389 2 3 - 215 + 203 3 6 - 181 + 170 6 15 - 164 + 154 15 34 - 155 + 146 35 62 - 164 + 154 63 87 - 155 + 146 90 - 142 - 155 + 144 + 154 - 143 - 219 - 155 + 146 + 264 + 146 - 263 - 1505 - 155 + 268 + 1868 + 146 - 1854 - 12392 - 43 + 2205 + 12449 + 32 @@ -16489,7 +11355,7 @@ 1 2 - 430914 + 407321 @@ -16505,7 +11371,7 @@ 1 2 - 430914 + 407321 @@ -16521,7 +11387,7 @@ 1 2 - 430914 + 407321 @@ -16537,7 +11403,7 @@ 1 2 - 430914 + 407321 @@ -16553,7 +11419,7 @@ 1 2 - 430914 + 407321 @@ -16569,7 +11435,7 @@ 1 2 - 430914 + 407321 @@ -16579,23 +11445,23 @@ usings - 347162 + 272108 id - 347162 + 272108 element_id - 75169 + 59009 location - 34280 + 26857 kind - 26 + 21 @@ -16609,7 +11475,7 @@ 1 2 - 347162 + 272108 @@ -16625,7 +11491,7 @@ 1 2 - 347162 + 272108 @@ -16641,7 +11507,7 @@ 1 2 - 347162 + 272108 @@ -16657,17 +11523,17 @@ 1 2 - 65297 + 51275 2 5 - 6877 + 5388 5 134 - 2993 + 2345 @@ -16683,17 +11549,17 @@ 1 2 - 65297 + 51275 2 5 - 6877 + 5388 5 134 - 2993 + 2345 @@ -16709,7 +11575,7 @@ 1 2 - 75169 + 59009 @@ -16725,22 +11591,22 @@ 1 2 - 27038 + 21184 2 4 - 2926 + 2303 4 132 - 2494 + 1944 145 365 - 1820 + 1426 @@ -16756,22 +11622,22 @@ 1 2 - 27038 + 21184 2 4 - 2926 + 2303 4 132 - 2494 + 1944 145 365 - 1820 + 1426 @@ -16787,7 +11653,7 @@ 1 2 - 34280 + 26857 @@ -16803,12 +11669,12 @@ 393 394 - 13 + 10 - 25350 - 25351 - 13 + 25361 + 25362 + 10 @@ -16824,12 +11690,12 @@ 214 215 - 13 + 10 - 5360 - 5361 - 13 + 5371 + 5372 + 10 @@ -16845,12 +11711,12 @@ 356 357 - 13 + 10 2186 2187 - 13 + 10 @@ -16860,15 +11726,15 @@ using_container - 738908 + 580276 parent - 27038 + 21892 child - 347162 + 272108 @@ -16882,42 +11748,42 @@ 1 2 - 12528 + 10375 2 3 - 1995 + 1616 3 6 - 2292 + 1859 6 7 - 2885 + 2282 7 - 27 - 2063 + 28 + 1669 - 27 + 28 136 - 1051 + 781 145 146 - 3344 + 2620 146 437 - 876 + 686 @@ -16933,27 +11799,27 @@ 1 2 - 123785 + 96570 2 3 - 153561 + 120321 3 4 - 25123 + 20106 4 5 - 34078 + 26720 5 65 - 10613 + 8389 @@ -16963,27 +11829,27 @@ static_asserts - 183493 + 173266 id - 183493 + 173266 condition - 183493 + 173266 message - 41092 + 38765 location - 23921 + 22648 enclosing - 6647 + 6807 @@ -16997,7 +11863,7 @@ 1 2 - 183493 + 173266 @@ -17013,7 +11879,7 @@ 1 2 - 183493 + 173266 @@ -17029,7 +11895,7 @@ 1 2 - 183493 + 173266 @@ -17045,7 +11911,7 @@ 1 2 - 183493 + 173266 @@ -17061,7 +11927,7 @@ 1 2 - 183493 + 173266 @@ -17077,7 +11943,7 @@ 1 2 - 183493 + 173266 @@ -17093,7 +11959,7 @@ 1 2 - 183493 + 173266 @@ -17109,7 +11975,7 @@ 1 2 - 183493 + 173266 @@ -17125,32 +11991,32 @@ 1 2 - 30232 + 28505 2 3 - 673 + 641 3 4 - 3876 + 3623 4 12 - 2184 + 2087 12 17 - 3315 + 3135 17 513 - 811 + 771 @@ -17166,32 +12032,32 @@ 1 2 - 30232 + 28505 2 3 - 673 + 641 3 4 - 3876 + 3623 4 12 - 2184 + 2087 12 17 - 3315 + 3135 17 513 - 811 + 771 @@ -17207,12 +12073,12 @@ 1 2 - 38079 + 35922 2 33 - 3012 + 2843 @@ -17228,27 +12094,27 @@ 1 2 - 32166 + 30316 2 3 - 353 + 349 3 4 - 3625 + 3387 4 12 - 1985 + 1909 12 43 - 2961 + 2802 @@ -17264,52 +12130,52 @@ 1 2 - 4489 + 4281 2 3 - 3893 + 3728 3 4 - 1873 + 1738 4 5 - 112 + 121 5 6 - 5024 + 4736 6 13 - 457 + 430 14 15 - 2814 + 2648 16 17 - 60 + 64 17 18 - 4670 + 4394 19 52 - 526 + 503 @@ -17325,52 +12191,52 @@ 1 2 - 4489 + 4281 2 3 - 3893 + 3728 3 4 - 1873 + 1738 4 5 - 112 + 121 5 6 - 5024 + 4736 6 13 - 457 + 430 14 15 - 2814 + 2648 16 17 - 60 + 64 17 18 - 4670 + 4394 19 52 - 526 + 503 @@ -17386,22 +12252,22 @@ 1 2 - 7243 + 6953 2 3 - 8158 + 7676 3 4 - 8270 + 7782 4 7 - 250 + 235 @@ -17417,37 +12283,37 @@ 1 2 - 5326 + 5069 2 3 - 8537 + 8099 3 4 - 1597 + 1478 4 5 - 5041 + 4760 5 13 - 517 + 495 13 14 - 2814 + 2648 16 43 - 86 + 97 @@ -17463,22 +12329,22 @@ 1 2 - 5481 + 5702 2 3 - 561 + 528 3 - 210 - 500 + 228 + 528 - 223 + 229 11052 - 103 + 48 @@ -17494,22 +12360,22 @@ 1 2 - 5481 + 5702 2 3 - 561 + 528 3 - 210 - 500 + 228 + 528 - 223 + 229 11052 - 103 + 48 @@ -17525,17 +12391,17 @@ 1 2 - 5645 + 5857 2 3 - 552 + 519 3 2936 - 448 + 430 @@ -17551,17 +12417,17 @@ 1 2 - 5628 + 5840 2 3 - 569 + 536 3 1929 - 448 + 430 @@ -17571,23 +12437,23 @@ params - 6992280 + 7067155 id - 6965639 + 7026200 function - 3369817 + 3408027 index - 8004 + 7991 type_id - 1226832 + 1221415 @@ -17601,7 +12467,7 @@ 1 2 - 6965639 + 7026200 @@ -17617,7 +12483,7 @@ 1 2 - 6965639 + 7026200 @@ -17633,12 +12499,12 @@ 1 2 - 6938999 + 6985244 2 3 - 26640 + 40955 @@ -17654,27 +12520,27 @@ 1 2 - 1464594 + 1474514 2 3 - 909774 + 927112 3 4 - 561823 + 579242 4 5 - 277660 + 281067 5 65 - 155964 + 146090 @@ -17690,27 +12556,27 @@ 1 2 - 1464594 + 1474514 2 3 - 909774 + 927112 3 4 - 561823 + 579242 4 5 - 277660 + 281067 5 65 - 155964 + 146090 @@ -17726,22 +12592,22 @@ 1 2 - 1765517 + 1783302 2 3 - 1009581 + 1031623 3 4 - 437502 + 437896 4 11 - 157215 + 155205 @@ -17757,32 +12623,32 @@ 2 3 - 4002 + 3995 6 7 - 2001 + 1997 14 18 - 625 + 624 23 138 - 625 + 624 - 323 - 15234 - 625 + 320 + 15486 + 624 - 26943 - 26944 - 125 + 27294 + 27295 + 124 @@ -17798,32 +12664,32 @@ 2 3 - 4002 + 3995 6 7 - 2001 + 1997 14 18 - 625 + 624 23 138 - 625 + 624 - 323 - 15234 - 625 + 320 + 15486 + 624 - 26943 - 26944 - 125 + 27294 + 27295 + 124 @@ -17839,32 +12705,32 @@ 1 2 - 4002 + 3995 2 3 - 2001 + 1997 4 7 - 625 + 624 9 - 54 - 625 + 55 + 624 - 115 - 2700 - 625 + 116 + 2703 + 624 - 7528 - 7529 - 125 + 7497 + 7498 + 124 @@ -17880,27 +12746,27 @@ 1 2 - 741677 + 738193 2 3 - 242264 + 240612 3 5 - 93929 + 93273 5 13 - 93804 + 93897 13 - 2570 - 55156 + 2574 + 55439 @@ -17916,27 +12782,27 @@ 1 2 - 824099 + 820353 2 3 - 181354 + 179803 3 6 - 106686 + 106258 6 27 - 92553 + 92274 27 - 2558 - 22137 + 2562 + 22725 @@ -17952,17 +12818,17 @@ 1 2 - 1001202 + 996037 2 3 - 167221 + 166942 3 65 - 58408 + 58436 @@ -17972,15 +12838,15 @@ overrides - 169801 + 159781 new - 160547 + 151073 old - 19122 + 17993 @@ -17994,12 +12860,12 @@ 1 2 - 151301 + 142372 2 4 - 9245 + 8700 @@ -18015,32 +12881,32 @@ 1 2 - 10463 + 9845 2 3 - 2589 + 2437 3 4 - 1735 + 1632 4 6 - 1579 + 1486 6 18 - 1441 + 1356 18 230 - 1312 + 1234 @@ -18050,19 +12916,19 @@ membervariables - 1491583 + 1499266 id - 1489139 + 1496815 type_id - 453830 + 456075 name - 638893 + 641686 @@ -18076,12 +12942,12 @@ 1 2 - 1486803 + 1494473 2 4 - 2335 + 2341 @@ -18097,7 +12963,7 @@ 1 2 - 1489139 + 1496815 @@ -18113,22 +12979,22 @@ 1 2 - 336774 + 338326 2 3 - 71917 + 72218 3 10 - 35035 + 35401 10 - 4422 - 10103 + 4444 + 10130 @@ -18144,22 +13010,22 @@ 1 2 - 354264 + 355917 2 3 - 63932 + 64321 3 49 - 34111 + 34311 56 - 2175 - 1520 + 2185 + 1524 @@ -18175,22 +13041,22 @@ 1 2 - 419772 + 421164 2 3 - 121781 + 122542 3 5 - 57305 + 57785 5 - 654 - 40032 + 656 + 40193 @@ -18206,17 +13072,17 @@ 1 2 - 522217 + 524318 2 3 - 72297 + 72817 3 - 658 - 44378 + 660 + 44551 @@ -18226,19 +13092,19 @@ globalvariables - 466518 + 488591 id - 466518 + 488591 type_id - 10380 + 10363 name - 112564 + 112626 @@ -18252,7 +13118,7 @@ 1 2 - 466518 + 488591 @@ -18268,7 +13134,7 @@ 1 2 - 466518 + 488591 @@ -18284,32 +13150,32 @@ 1 2 - 7004 + 6992 2 3 - 375 + 374 3 5 - 750 + 749 5 20 - 875 + 874 20 74 - 875 + 874 152 - 2037 - 500 + 2216 + 499 @@ -18325,32 +13191,32 @@ 1 2 - 7129 + 7117 2 3 - 375 + 374 3 5 - 750 + 749 5 20 - 750 + 749 20 74 - 875 + 874 - 124 - 226 - 500 + 125 + 228 + 499 @@ -18366,17 +13232,17 @@ 1 2 - 95430 + 95395 2 7 - 8755 + 8865 7 - 500 - 8379 + 604 + 8365 @@ -18392,17 +13258,17 @@ 1 2 - 97055 + 97019 2 3 - 15258 + 15358 3 4 - 250 + 249 @@ -18412,19 +13278,19 @@ localvariables - 734804 + 726278 id - 734804 + 726278 type_id - 54064 + 53441 name - 102754 + 101531 @@ -18438,7 +13304,7 @@ 1 2 - 734804 + 726278 @@ -18454,7 +13320,7 @@ 1 2 - 734804 + 726278 @@ -18470,37 +13336,37 @@ 1 2 - 29233 + 28885 2 3 - 7920 + 7838 3 4 - 4073 + 4029 4 6 - 4098 + 4053 6 12 - 4199 + 4145 12 - 166 - 4057 + 165 + 4009 - 168 - 19320 - 482 + 165 + 19323 + 480 @@ -18516,22 +13382,22 @@ 1 2 - 38827 + 38385 2 3 - 6781 + 6700 3 5 - 4519 + 4465 5 3502 - 3935 + 3889 @@ -18547,32 +13413,32 @@ 1 2 - 63217 + 62453 2 3 - 16238 + 16032 3 4 - 6611 + 6524 4 8 - 8228 + 8146 8 - 135 - 7709 + 132 + 7617 - 135 - 7544 - 749 + 132 + 7547 + 756 @@ -18588,22 +13454,22 @@ 1 2 - 85502 + 84485 2 3 - 8520 + 8414 3 15 - 7766 + 7677 15 1509 - 964 + 953 @@ -18613,15 +13479,15 @@ autoderivation - 229507 + 229374 var - 229507 + 229374 derivation_type - 625 + 624 @@ -18635,7 +13501,7 @@ 1 2 - 229507 + 229374 @@ -18651,27 +13517,27 @@ 38 39 - 125 + 124 79 80 - 125 + 124 454 455 - 125 + 124 530 531 - 125 + 124 - 734 - 735 - 125 + 736 + 737 + 124 @@ -18681,15 +13547,15 @@ orphaned_variables - 55640 + 44321 var - 55640 + 44321 function - 51534 + 41051 @@ -18703,7 +13569,7 @@ 1 2 - 55640 + 44321 @@ -18719,12 +13585,12 @@ 1 2 - 50465 + 40199 2 47 - 1069 + 851 @@ -18734,19 +13600,19 @@ enumconstants - 343781 + 345733 id - 343781 + 345733 parent - 41173 + 41337 index - 13905 + 13942 type_id @@ -18754,11 +13620,11 @@ name - 343400 + 345351 location - 316459 + 318338 @@ -18772,7 +13638,7 @@ 1 2 - 343781 + 345733 @@ -18788,7 +13654,7 @@ 1 2 - 343781 + 345733 @@ -18804,7 +13670,7 @@ 1 2 - 343781 + 345733 @@ -18820,7 +13686,7 @@ 1 2 - 343781 + 345733 @@ -18836,7 +13702,7 @@ 1 2 - 343781 + 345733 @@ -18852,57 +13718,57 @@ 1 2 - 1520 + 1524 2 3 - 5703 + 5773 3 4 - 8690 + 8714 4 5 - 5486 + 5500 5 6 - 4617 + 4574 6 7 - 2661 + 2559 7 8 - 1955 + 1960 8 - 11 - 3802 + 10 + 2941 - 11 - 17 - 3150 + 10 + 15 + 3322 - 17 - 64 - 3096 + 15 + 32 + 3104 - 79 + 32 257 - 488 + 1361 @@ -18918,57 +13784,57 @@ 1 2 - 1520 + 1524 2 3 - 5703 + 5773 3 4 - 8690 + 8714 4 5 - 5486 + 5500 5 6 - 4617 + 4574 6 7 - 2661 + 2559 7 8 - 1955 + 1960 8 - 11 - 3802 + 10 + 2941 - 11 - 17 - 3150 + 10 + 15 + 3322 - 17 - 64 - 3096 + 15 + 32 + 3104 - 79 + 32 257 - 488 + 1361 @@ -18984,7 +13850,7 @@ 1 2 - 41173 + 41337 @@ -19000,57 +13866,57 @@ 1 2 - 1520 + 1524 2 3 - 5703 + 5773 3 4 - 8690 + 8714 4 5 - 5486 + 5500 5 6 - 4617 + 4574 6 7 - 2661 + 2559 7 8 - 1955 + 1960 8 - 11 - 3802 + 10 + 2941 - 11 - 17 - 3150 + 10 + 15 + 3322 - 17 - 64 - 3096 + 15 + 32 + 3104 - 79 + 32 257 - 488 + 1361 @@ -19066,52 +13932,57 @@ 1 2 - 2118 + 2124 2 3 - 5920 + 5990 3 4 - 8745 + 8768 4 5 - 5431 + 5446 5 6 - 4617 + 4574 6 7 - 2607 + 2505 7 8 - 1846 + 1851 8 11 - 3693 + 3757 11 - 18 - 3096 + 17 + 3104 - 18 + 17 + 123 + 3104 + + + 164 257 - 3096 + 108 @@ -19127,47 +13998,47 @@ 1 2 - 2770 + 2777 2 3 - 2227 + 2232 3 4 - 2281 + 2287 4 5 - 1249 + 1198 5 9 - 1086 + 1143 9 12 - 1086 + 1089 12 - 19 - 1086 + 20 + 1143 - 19 - 55 - 1086 + 20 + 59 + 1089 - 58 - 759 - 1032 + 64 + 760 + 980 @@ -19183,47 +14054,47 @@ 1 2 - 2770 + 2777 2 3 - 2227 + 2232 3 4 - 2281 + 2287 4 5 - 1249 + 1198 5 9 - 1086 + 1143 9 12 - 1086 + 1089 12 - 19 - 1086 + 20 + 1143 - 19 - 55 - 1086 + 20 + 59 + 1089 - 58 - 759 - 1032 + 64 + 760 + 980 @@ -19239,7 +14110,7 @@ 1 2 - 13905 + 13942 @@ -19255,47 +14126,47 @@ 1 2 - 2770 + 2777 2 3 - 2227 + 2232 3 4 - 2281 + 2287 4 5 - 1249 + 1198 5 9 - 1086 + 1143 9 12 - 1086 + 1089 12 - 19 - 1086 + 20 + 1143 - 19 - 55 - 1086 + 20 + 59 + 1089 - 58 - 756 - 1032 + 64 + 757 + 980 @@ -19311,47 +14182,47 @@ 1 2 - 2770 + 2777 2 3 - 2227 + 2232 3 4 - 2281 + 2287 4 5 - 1249 + 1198 5 9 - 1086 + 1143 9 12 - 1086 + 1089 12 - 19 - 1086 + 20 + 1143 - 19 - 55 - 1086 + 20 + 59 + 1089 - 58 - 759 - 1032 + 64 + 760 + 980 @@ -19365,8 +14236,8 @@ 12 - 6329 - 6330 + 6348 + 6349 54 @@ -19381,8 +14252,8 @@ 12 - 758 - 759 + 759 + 760 54 @@ -19413,8 +14284,8 @@ 12 - 6322 - 6323 + 6341 + 6342 54 @@ -19429,8 +14300,8 @@ 12 - 5826 - 5827 + 5845 + 5846 54 @@ -19447,12 +14318,12 @@ 1 2 - 343020 + 344970 2 3 - 380 + 381 @@ -19468,12 +14339,12 @@ 1 2 - 343020 + 344970 2 3 - 380 + 381 @@ -19489,7 +14360,7 @@ 1 2 - 343400 + 345351 @@ -19505,7 +14376,7 @@ 1 2 - 343400 + 345351 @@ -19521,12 +14392,12 @@ 1 2 - 343020 + 344970 2 3 - 380 + 381 @@ -19542,12 +14413,12 @@ 1 2 - 315427 + 317303 2 205 - 1032 + 1034 @@ -19563,7 +14434,7 @@ 1 2 - 316459 + 318338 @@ -19579,12 +14450,12 @@ 1 2 - 315427 + 317303 2 205 - 1032 + 1034 @@ -19600,7 +14471,7 @@ 1 2 - 316459 + 318338 @@ -19616,12 +14487,12 @@ 1 2 - 315427 + 317303 2 205 - 1032 + 1034 @@ -19631,31 +14502,31 @@ builtintypes - 7004 + 7616 id - 7004 + 7616 name - 7004 + 7616 kind - 7004 + 7616 size - 875 + 874 sign - 375 + 374 alignment - 625 + 624 @@ -19669,7 +14540,7 @@ 1 2 - 7004 + 7616 @@ -19685,7 +14556,7 @@ 1 2 - 7004 + 7616 @@ -19701,7 +14572,7 @@ 1 2 - 7004 + 7616 @@ -19717,7 +14588,7 @@ 1 2 - 7004 + 7616 @@ -19733,7 +14604,7 @@ 1 2 - 7004 + 7616 @@ -19749,7 +14620,7 @@ 1 2 - 7004 + 7616 @@ -19765,7 +14636,7 @@ 1 2 - 7004 + 7616 @@ -19781,7 +14652,7 @@ 1 2 - 7004 + 7616 @@ -19797,7 +14668,7 @@ 1 2 - 7004 + 7616 @@ -19813,7 +14684,7 @@ 1 2 - 7004 + 7616 @@ -19829,7 +14700,7 @@ 1 2 - 7004 + 7616 @@ -19845,7 +14716,7 @@ 1 2 - 7004 + 7616 @@ -19861,7 +14732,7 @@ 1 2 - 7004 + 7616 @@ -19877,7 +14748,7 @@ 1 2 - 7004 + 7616 @@ -19893,7 +14764,7 @@ 1 2 - 7004 + 7616 @@ -19906,40 +14777,35 @@ 12 - - 1 - 2 - 125 - 2 3 - 125 + 249 - 7 - 8 - 125 + 8 + 9 + 124 9 10 - 125 + 124 11 12 - 125 - - - 12 - 13 - 125 + 124 14 15 - 125 + 124 + + + 15 + 16 + 124 @@ -19952,40 +14818,35 @@ 12 - - 1 - 2 - 125 - 2 3 - 125 + 249 - 7 - 8 - 125 + 8 + 9 + 124 9 10 - 125 + 124 11 12 - 125 - - - 12 - 13 - 125 + 124 14 15 - 125 + 124 + + + 15 + 16 + 124 @@ -19998,40 +14859,35 @@ 12 - - 1 - 2 - 125 - 2 3 - 125 + 249 - 7 - 8 - 125 + 8 + 9 + 124 9 10 - 125 + 124 11 12 - 125 - - - 12 - 13 - 125 + 124 14 15 - 125 + 124 + + + 15 + 16 + 124 @@ -20047,12 +14903,12 @@ 1 2 - 250 + 249 3 4 - 625 + 624 @@ -20068,12 +14924,12 @@ 1 2 - 500 + 499 2 3 - 375 + 374 @@ -20089,17 +14945,17 @@ 6 7 - 125 + 124 12 13 - 125 + 124 - 38 - 39 - 125 + 43 + 44 + 124 @@ -20115,17 +14971,17 @@ 6 7 - 125 + 124 12 13 - 125 + 124 - 38 - 39 - 125 + 43 + 44 + 124 @@ -20141,17 +14997,17 @@ 6 7 - 125 + 124 12 13 - 125 + 124 - 38 - 39 - 125 + 43 + 44 + 124 @@ -20167,12 +15023,12 @@ 5 6 - 250 + 249 7 8 - 125 + 124 @@ -20188,7 +15044,7 @@ 5 6 - 375 + 374 @@ -20204,22 +15060,22 @@ 8 9 - 250 + 124 10 11 - 125 + 124 13 14 - 125 + 249 17 18 - 125 + 124 @@ -20235,22 +15091,22 @@ 8 9 - 250 + 124 10 11 - 125 + 124 13 14 - 125 + 249 17 18 - 125 + 124 @@ -20266,22 +15122,22 @@ 8 9 - 250 + 124 10 11 - 125 + 124 13 14 - 125 + 249 17 18 - 125 + 124 @@ -20297,7 +15153,7 @@ 2 3 - 625 + 624 @@ -20313,7 +15169,7 @@ 3 4 - 625 + 624 @@ -20323,23 +15179,23 @@ derivedtypes - 3047881 + 3033686 id - 3047881 + 3033686 name - 1475975 + 1461903 kind - 750 + 749 type_id - 1949998 + 1948496 @@ -20353,7 +15209,7 @@ 1 2 - 3047881 + 3033686 @@ -20369,7 +15225,7 @@ 1 2 - 3047881 + 3033686 @@ -20385,7 +15241,7 @@ 1 2 - 3047881 + 3033686 @@ -20401,17 +15257,17 @@ 1 2 - 1358908 + 1345280 2 - 30 - 110938 + 28 + 110004 - 30 - 4274 - 6128 + 29 + 4302 + 6617 @@ -20427,7 +15283,7 @@ 1 2 - 1475975 + 1461903 @@ -20443,17 +15299,17 @@ 1 2 - 1359033 + 1345405 2 - 30 - 110813 + 28 + 109879 - 30 - 4274 - 6128 + 29 + 4302 + 6617 @@ -20467,34 +15323,34 @@ 12 - 787 - 788 - 125 + 724 + 725 + 124 2333 2334 - 125 + 124 - 3647 - 3648 - 125 + 3627 + 3628 + 124 - 4273 - 4274 - 125 + 4301 + 4302 + 124 - 5569 - 5570 - 125 + 5557 + 5558 + 124 - 7760 - 7761 - 125 + 7754 + 7755 + 124 @@ -20510,32 +15366,32 @@ 1 2 - 125 + 124 - 733 - 734 - 125 + 671 + 672 + 124 1613 1614 - 125 + 124 - 2433 - 2434 - 125 + 2429 + 2430 + 124 - 2678 - 2679 - 125 + 2654 + 2655 + 124 - 4343 - 4344 - 125 + 4340 + 4341 + 124 @@ -20549,34 +15405,34 @@ 12 - 208 - 209 - 125 + 207 + 208 + 124 2333 2334 - 125 + 124 - 3643 - 3644 - 125 + 3623 + 3624 + 124 - 4273 - 4274 - 125 + 4301 + 4302 + 124 - 5502 - 5503 - 125 + 5492 + 5493 + 124 - 7760 - 7761 - 125 + 7754 + 7755 + 124 @@ -20592,22 +15448,22 @@ 1 2 - 1317134 + 1318684 2 3 - 378593 + 376214 3 4 - 122945 + 123365 4 - 135 - 131325 + 137 + 130232 @@ -20623,22 +15479,22 @@ 1 2 - 1318635 + 1320182 2 3 - 378593 + 376214 3 4 - 121444 + 121866 4 - 135 - 131325 + 137 + 130232 @@ -20654,22 +15510,22 @@ 1 2 - 1319010 + 1320557 2 3 - 379468 + 376838 3 4 - 122945 + 123614 4 6 - 128574 + 127485 @@ -20679,19 +15535,19 @@ pointerishsize - 2252923 + 2249417 id - 2252923 + 2249417 size - 250 + 249 alignment - 250 + 249 @@ -20705,7 +15561,7 @@ 1 2 - 2252923 + 2249417 @@ -20721,7 +15577,7 @@ 1 2 - 2252923 + 2249417 @@ -20737,12 +15593,12 @@ 3 4 - 125 + 124 - 18010 - 18011 - 125 + 18012 + 18013 + 124 @@ -20758,7 +15614,7 @@ 1 2 - 250 + 249 @@ -20774,12 +15630,12 @@ 3 4 - 125 + 124 - 18010 - 18011 - 125 + 18012 + 18013 + 124 @@ -20795,7 +15651,7 @@ 1 2 - 250 + 249 @@ -20805,23 +15661,23 @@ arraysizes - 88676 + 80661 id - 88676 + 80661 num_elements - 18510 + 17855 bytesize - 22888 + 20227 alignment - 625 + 624 @@ -20835,7 +15691,7 @@ 1 2 - 88676 + 80661 @@ -20851,7 +15707,7 @@ 1 2 - 88676 + 80661 @@ -20867,7 +15723,7 @@ 1 2 - 88676 + 80661 @@ -20883,37 +15739,37 @@ 1 2 - 250 + 249 2 3 - 8880 + 10863 3 4 - 250 + 249 4 5 - 5628 + 3496 - 6 - 7 - 1625 + 5 + 9 + 1498 - 8 - 27 - 1500 + 9 + 42 + 1373 - 34 + 56 57 - 375 + 124 @@ -20929,22 +15785,22 @@ 1 2 - 9505 + 11737 2 3 - 6628 + 3995 3 5 - 1250 + 998 5 11 - 1125 + 1123 @@ -20960,22 +15816,22 @@ 1 2 - 9505 + 11737 2 3 - 6628 + 3995 3 4 - 1000 + 749 4 6 - 1375 + 1373 @@ -20991,37 +15847,37 @@ 1 2 - 625 + 624 2 3 - 14758 + 12736 3 4 - 375 + 499 4 5 - 3251 + 2746 5 7 - 1500 + 1498 7 17 - 1751 + 1623 - 17 + 24 45 - 625 + 499 @@ -21037,22 +15893,22 @@ 1 2 - 16509 + 14609 2 3 - 4002 + 3621 3 - 5 - 1751 + 6 + 1872 - 5 + 6 7 - 625 + 124 @@ -21068,22 +15924,22 @@ 1 2 - 16634 + 14858 2 3 - 4002 + 3371 3 5 - 1876 + 1623 5 6 - 375 + 374 @@ -21099,27 +15955,27 @@ 10 11 - 125 + 124 86 87 - 125 + 124 91 92 - 125 + 124 - 187 - 188 - 125 + 121 + 122 + 124 - 335 - 336 - 125 + 338 + 339 + 124 @@ -21135,22 +15991,22 @@ 4 5 - 125 + 124 16 17 - 250 + 249 - 80 - 81 - 125 + 48 + 49 + 124 - 137 - 138 - 125 + 139 + 140 + 124 @@ -21166,27 +16022,75 @@ 4 5 - 125 + 124 19 20 - 125 + 124 20 21 - 125 + 124 - 80 - 81 - 125 + 48 + 49 + 124 - 138 - 139 - 125 + 140 + 141 + 124 + + + + + + + + + tupleelements + 1 + + + id + 1 + + + num_elements + 1 + + + + + id + num_elements + + + 12 + + + 1 + 2 + 1 + + + + + + + num_elements + id + + + 12 + + + 1 + 2 + 1 @@ -21196,15 +16100,15 @@ typedefbase - 2164787 + 1762320 id - 2164787 + 1762320 type_id - 901360 + 838043 @@ -21218,7 +16122,7 @@ 1 2 - 2164787 + 1762320 @@ -21234,22 +16138,22 @@ 1 2 - 727340 + 662586 2 3 - 81343 + 80931 3 6 - 69667 + 64157 6 - 2848 - 23008 + 4526 + 30367 @@ -21259,15 +16163,15 @@ decltypes - 812151 + 814476 id - 27485 + 27563 expr - 812151 + 814476 kind @@ -21275,7 +16179,7 @@ base_type - 3331 + 3341 parentheses_would_change_meaning @@ -21293,32 +16197,32 @@ 1 2 - 9709 + 9737 2 3 - 3638 + 3648 4 5 - 3616 + 3626 6 9 - 547 + 549 23 24 - 3243 + 3253 29 30 - 3134 + 3143 32 @@ -21328,12 +16232,12 @@ 171 172 - 3068 + 3077 173 224 - 394 + 395 @@ -21349,7 +16253,7 @@ 1 2 - 27485 + 27563 @@ -21365,7 +16269,7 @@ 1 2 - 27485 + 27563 @@ -21381,7 +16285,7 @@ 1 2 - 27485 + 27563 @@ -21397,7 +16301,7 @@ 1 2 - 812151 + 814476 @@ -21413,7 +16317,7 @@ 1 2 - 812151 + 814476 @@ -21429,7 +16333,7 @@ 1 2 - 812151 + 814476 @@ -21445,7 +16349,7 @@ 1 2 - 812151 + 814476 @@ -21525,17 +16429,17 @@ 1 2 - 1205 + 1208 2 3 - 1030 + 1033 3 4 - 350 + 351 4 @@ -21545,7 +16449,7 @@ 5 8 - 284 + 285 8 @@ -21571,27 +16475,27 @@ 1 2 - 1161 + 1164 2 3 - 854 + 857 3 4 - 328 + 329 4 7 - 284 + 285 7 201 - 306 + 307 340 @@ -21617,7 +16521,7 @@ 1 2 - 3331 + 3341 @@ -21633,7 +16537,7 @@ 1 2 - 3331 + 3341 @@ -21707,23 +16611,23 @@ type_operators - 8519 + 7953 id - 8519 + 7953 arg_type - 7690 + 7179 kind - 92 + 85 base_type - 5618 + 5244 @@ -21737,7 +16641,7 @@ 1 2 - 8519 + 7953 @@ -21753,7 +16657,7 @@ 1 2 - 8519 + 7953 @@ -21769,7 +16673,7 @@ 1 2 - 8519 + 7953 @@ -21785,12 +16689,12 @@ 1 2 - 6861 + 6405 2 3 - 828 + 773 @@ -21806,12 +16710,12 @@ 1 2 - 6861 + 6405 2 3 - 828 + 773 @@ -21827,12 +16731,12 @@ 1 2 - 7667 + 7157 2 3 - 23 + 21 @@ -21848,22 +16752,22 @@ 1 2 - 23 + 21 7 8 - 23 + 21 96 97 - 23 + 21 266 267 - 23 + 21 @@ -21879,22 +16783,22 @@ 1 2 - 23 + 21 7 8 - 23 + 21 96 97 - 23 + 21 266 267 - 23 + 21 @@ -21910,22 +16814,22 @@ 1 2 - 23 + 21 4 5 - 23 + 21 72 73 - 23 + 21 222 223 - 23 + 21 @@ -21941,22 +16845,22 @@ 1 2 - 3891 + 3632 2 3 - 967 + 902 3 4 - 368 + 343 4 6 - 391 + 365 @@ -21972,22 +16876,22 @@ 1 2 - 4052 + 3783 2 3 - 1059 + 988 3 4 - 483 + 451 4 5 - 23 + 21 @@ -22003,17 +16907,17 @@ 1 2 - 4375 + 4084 2 3 - 1220 + 1139 3 4 - 23 + 21 @@ -22023,19 +16927,19 @@ usertypes - 4962767 + 4151861 id - 4962767 + 4151861 name - 1069983 + 918789 kind - 161 + 126 @@ -22049,7 +16953,7 @@ 1 2 - 4962767 + 4151861 @@ -22065,7 +16969,7 @@ 1 2 - 4962767 + 4151861 @@ -22081,22 +16985,22 @@ 1 2 - 740028 + 654542 2 3 - 195960 + 158590 3 - 7 - 85634 + 8 + 70610 - 7 - 30188 - 48359 + 8 + 32669 + 35046 @@ -22112,12 +17016,12 @@ 1 2 - 1003916 + 867028 2 10 - 66066 + 51761 @@ -22133,62 +17037,62 @@ 28 29 - 13 + 10 64 65 - 13 + 10 579 580 - 13 + 10 - 1042 - 1043 - 13 + 1052 + 1053 + 10 - 1426 - 1427 - 13 + 1594 + 1595 + 10 1874 1875 - 13 + 10 4586 4587 - 13 + 10 - 19665 - 19666 - 13 + 20078 + 20079 + 10 - 20058 - 20059 - 13 + 21485 + 21486 + 10 82092 82093 - 13 + 10 - 85546 - 85547 - 13 + 92762 + 92763 + 10 - 151042 - 151043 - 13 + 166764 + 166765 + 10 @@ -22204,62 +17108,62 @@ 19 20 - 13 + 10 47 48 - 13 + 10 50 51 - 13 + 10 153 154 - 13 + 10 417 418 - 13 + 10 771 772 - 13 + 10 1565 1566 - 13 + 10 3066 3067 - 13 - - - 5585 - 5586 - 13 + 10 - 10827 - 10828 - 13 + 5589 + 5590 + 10 10903 10904 - 13 + 10 - 51351 - 51352 - 13 + 12187 + 12188 + 10 + + + 57608 + 57609 + 10 @@ -22269,19 +17173,19 @@ usertypesize - 1624097 + 1364111 id - 1624097 + 1364111 size - 1887 + 1479 alignment - 107 + 84 @@ -22295,7 +17199,7 @@ 1 2 - 1624097 + 1364111 @@ -22311,7 +17215,7 @@ 1 2 - 1624097 + 1364111 @@ -22327,52 +17231,52 @@ 1 2 - 593 + 464 2 3 - 256 + 190 3 4 - 107 + 95 4 6 - 121 + 95 6 - 8 - 148 + 9 + 116 - 8 - 14 - 148 + 9 + 19 + 116 - 14 - 26 - 148 + 19 + 30 + 116 - 26 - 86 - 148 + 30 + 115 + 116 - 96 - 1588 - 148 + 118 + 1731 + 116 - 1733 - 92740 - 67 + 1839 + 99773 + 52 @@ -22388,17 +17292,17 @@ 1 2 - 1550 + 1204 2 3 - 215 + 179 3 6 - 121 + 95 @@ -22414,42 +17318,42 @@ 1 2 - 13 + 10 3 4 - 13 + 10 7 8 - 13 + 10 54 55 - 13 + 10 56 57 - 13 + 10 - 1909 - 1910 - 13 + 2079 + 2080 + 10 - 10475 - 10476 - 13 + 11940 + 11941 + 10 - 107926 - 107927 - 13 + 114968 + 114969 + 10 @@ -22465,37 +17369,37 @@ 1 2 - 26 + 21 3 4 - 13 + 10 11 12 - 13 + 10 12 13 - 13 + 10 17 18 - 13 + 10 27 28 - 13 + 10 - 110 - 111 - 13 + 111 + 112 + 10 @@ -22505,26 +17409,26 @@ usertype_final - 11506 + 11487 id - 11506 + 11487 usertype_uuid - 50407 + 47628 id - 50407 + 47628 uuid - 49898 + 47148 @@ -22538,7 +17442,7 @@ 1 2 - 50407 + 47628 @@ -22554,12 +17458,12 @@ 1 2 - 49389 + 46669 2 3 - 509 + 479 @@ -22569,15 +17473,15 @@ usertype_alias_kind - 2164830 + 1762320 id - 2164787 + 1762320 alias_kind - 85 + 21 @@ -22591,12 +17495,7 @@ 1 2 - 2164744 - - - 2 - 3 - 42 + 1762320 @@ -22610,14 +17509,14 @@ 12 - 21658 - 21659 - 42 + 36900 + 36901 + 10 - 28961 - 28962 - 42 + 129944 + 129945 + 10 @@ -22627,26 +17526,26 @@ nontype_template_parameters - 961918 + 766246 id - 961918 + 766246 type_template_type_constraint - 29059 + 27127 id - 14322 + 13370 constraint - 27839 + 25987 @@ -22660,27 +17559,27 @@ 1 2 - 10937 + 10210 2 3 - 967 + 902 3 5 - 1105 + 1031 5 14 - 1197 + 1117 14 17 - 115 + 107 @@ -22696,12 +17595,12 @@ 1 2 - 26618 + 24848 2 3 - 1220 + 1139 @@ -22711,19 +17610,19 @@ mangled_name - 7827011 + 7859539 id - 7827011 + 7859539 mangled_name - 6329773 + 6370041 is_complete - 250 + 249 @@ -22737,7 +17636,7 @@ 1 2 - 7827011 + 7859539 @@ -22753,7 +17652,7 @@ 1 2 - 7827011 + 7859539 @@ -22769,12 +17668,12 @@ 1 2 - 6000083 + 6041650 2 - 1127 - 329690 + 1120 + 328391 @@ -22790,7 +17689,7 @@ 1 2 - 6329773 + 6370041 @@ -22806,12 +17705,12 @@ 6 7 - 125 + 124 - 62574 - 62575 - 125 + 62939 + 62940 + 124 @@ -22827,12 +17726,12 @@ 6 7 - 125 + 124 - 50603 - 50604 - 125 + 51010 + 51011 + 124 @@ -22842,59 +17741,59 @@ is_pod_class - 742865 + 593728 id - 742865 + 593728 is_standard_layout_class - 1338834 + 1124682 id - 1338834 + 1124682 is_complete - 1604003 + 1346593 id - 1604003 + 1346593 is_class_template - 290846 + 232233 id - 290846 + 232233 class_instantiation - 1320911 + 1126267 to - 1317027 + 1123214 from - 91190 + 71825 @@ -22908,12 +17807,12 @@ 1 2 - 1314303 + 1121069 2 8 - 2724 + 2144 @@ -22929,47 +17828,47 @@ 1 2 - 26607 + 20497 2 3 - 16533 + 12890 3 4 - 9021 + 7110 4 5 - 5974 + 4659 5 7 - 7700 + 6064 7 10 - 6904 + 5737 10 17 - 7336 + 5916 17 - 53 - 6904 + 51 + 5388 - 53 - 4219 - 4207 + 51 + 4223 + 3560 @@ -22979,19 +17878,19 @@ class_template_argument - 3486149 + 2899301 type_id - 1623773 + 1367407 index - 1510 + 1183 arg_type - 1029795 + 822314 @@ -23005,27 +17904,27 @@ 1 2 - 675431 + 579515 2 3 - 488142 + 410328 3 4 - 307433 + 251124 4 7 - 123542 + 103120 7 113 - 29223 + 23318 @@ -23041,22 +17940,22 @@ 1 2 - 709847 + 608064 2 3 - 503407 + 424338 3 4 - 305505 + 251959 4 113 - 105013 + 83046 @@ -23072,37 +17971,37 @@ 2 3 - 13 + 10 4 5 - 957 + 750 5 30 - 121 + 95 33 90 - 121 + 95 95 453 - 121 + 95 643 - 6818 - 121 + 7127 + 95 - 11328 - 120405 - 53 + 11967 + 129418 + 42 @@ -23118,37 +18017,37 @@ 2 3 - 13 + 10 4 5 - 957 + 750 5 16 - 134 + 105 16 35 - 121 + 95 37 155 - 121 + 95 196 - 3251 - 121 + 3263 + 95 - 10040 - 43709 - 40 + 10413 + 44531 + 31 @@ -23164,27 +18063,27 @@ 1 2 - 646113 + 513871 2 3 - 211415 + 167677 3 - 4 - 61737 + 5 + 75111 - 4 - 11 - 78284 + 5 + 47 + 61745 - 11 - 11552 - 32244 + 47 + 12616 + 3909 @@ -23200,17 +18099,17 @@ 1 2 - 908181 + 724001 2 3 - 98486 + 79939 3 22 - 23127 + 18373 @@ -23220,19 +18119,19 @@ class_template_argument_value - 640309 + 510059 type_id - 258356 + 205801 index - 384 + 306 arg_value - 640138 + 509922 @@ -23246,17 +18145,17 @@ 1 2 - 195574 + 155790 2 3 - 54442 + 43367 3 8 - 8339 + 6643 @@ -23272,22 +18171,22 @@ 1 2 - 185694 + 147921 2 3 - 50807 + 40472 3 45 - 19501 + 15534 45 154 - 2352 + 1873 @@ -23303,47 +18202,47 @@ 2 3 - 42 + 34 20 21 - 42 + 34 49 50 - 42 + 34 84 85 - 42 + 34 105 106 - 42 + 34 278 279 - 42 + 34 981 982 - 42 + 34 2471 2472 - 42 + 34 3753 3754 - 42 + 34 @@ -23359,47 +18258,47 @@ 3 4 - 42 + 34 74 75 - 42 + 34 105 106 - 42 + 34 273 274 - 42 + 34 336 337 - 42 + 34 892 893 - 42 + 34 2433 2434 - 42 + 34 4801 4802 - 42 + 34 6051 6052 - 42 + 34 @@ -23415,12 +18314,12 @@ 1 2 - 639967 + 509786 2 3 - 171 + 136 @@ -23436,7 +18335,7 @@ 1 2 - 640138 + 509922 @@ -23446,15 +18345,15 @@ is_proxy_class_for - 61845 + 48454 id - 61845 + 48454 templ_param_id - 58433 + 45781 @@ -23468,7 +18367,7 @@ 1 2 - 61845 + 48454 @@ -23484,12 +18383,12 @@ 1 2 - 57516 + 45062 2 79 - 917 + 718 @@ -23499,19 +18398,19 @@ type_mentions - 5812069 + 5902899 id - 5812069 + 5902899 type_id - 275231 + 276673 location - 5766496 + 5846584 kind @@ -23529,7 +18428,7 @@ 1 2 - 5812069 + 5902899 @@ -23545,7 +18444,7 @@ 1 2 - 5812069 + 5902899 @@ -23561,7 +18460,7 @@ 1 2 - 5812069 + 5902899 @@ -23577,42 +18476,42 @@ 1 2 - 136121 + 136594 2 3 - 30907 + 31153 3 4 - 11135 + 11273 4 5 - 14665 + 14922 5 7 - 19934 + 19988 7 12 - 21781 + 21785 12 28 - 21021 + 21077 28 - 8907 - 19663 + 8940 + 19879 @@ -23628,42 +18527,42 @@ 1 2 - 136121 + 136594 2 3 - 30907 + 31153 3 4 - 11135 + 11273 4 5 - 14665 + 14922 5 7 - 19934 + 19988 7 12 - 21781 + 21785 12 28 - 21021 + 21077 28 - 8907 - 19663 + 8940 + 19879 @@ -23679,7 +18578,7 @@ 1 2 - 275231 + 276673 @@ -23695,12 +18594,12 @@ 1 2 - 5720923 + 5800889 2 - 3 - 45573 + 4 + 45694 @@ -23716,12 +18615,12 @@ 1 2 - 5720923 + 5800889 2 - 3 - 45573 + 4 + 45694 @@ -23737,7 +18636,7 @@ 1 2 - 5766496 + 5846584 @@ -23751,8 +18650,8 @@ 12 - 107000 - 107001 + 108383 + 108384 54 @@ -23767,8 +18666,8 @@ 12 - 5067 - 5068 + 5080 + 5081 54 @@ -23783,8 +18682,8 @@ 12 - 106161 - 106162 + 107349 + 107350 54 @@ -23795,26 +18694,26 @@ is_function_template - 1383517 + 1332544 id - 1383517 + 1332544 function_instantiation - 1221386 + 973581 to - 1221386 + 973581 from - 229146 + 182636 @@ -23828,7 +18727,7 @@ 1 2 - 1221386 + 973581 @@ -23844,27 +18743,27 @@ 1 2 - 139378 + 110583 2 3 - 53031 + 42788 3 9 - 18047 + 14376 9 - 103 - 17192 + 104 + 13729 - 103 + 119 1532 - 1496 + 1158 @@ -23874,19 +18773,19 @@ function_template_argument - 3119179 + 2484681 function_id - 1824318 + 1453218 index - 598 + 476 arg_type - 374084 + 297988 @@ -23900,22 +18799,22 @@ 1 2 - 982917 + 782974 2 3 - 518637 + 413136 3 4 - 215674 + 171802 4 15 - 107088 + 85305 @@ -23931,22 +18830,22 @@ 1 2 - 1006952 + 802120 2 3 - 516242 + 411229 3 4 - 212937 + 169622 4 9 - 88185 + 70247 @@ -23962,52 +18861,52 @@ 1 2 - 213 + 170 7 8 - 42 + 34 45 46 - 42 + 34 77 78 - 42 + 34 138 139 - 42 + 34 280 281 - 42 + 34 2504 2505 - 42 + 34 7547 7548 - 42 + 34 19674 19675 - 42 + 34 42657 42658 - 42 + 34 @@ -24023,52 +18922,52 @@ 1 2 - 213 + 170 4 5 - 42 + 34 17 18 - 42 + 34 27 28 - 42 + 34 52 53 - 42 + 34 112 113 - 42 + 34 315 316 - 42 + 34 972 973 - 42 + 34 2754 2755 - 42 + 34 6081 6082 - 42 + 34 @@ -24084,37 +18983,37 @@ 1 2 - 219395 + 174766 2 3 - 33059 + 26334 3 4 - 25104 + 19997 4 6 - 28440 + 22654 6 11 - 29167 + 23234 11 76 - 29338 + 23370 79 2452 - 9579 + 7631 @@ -24130,17 +19029,17 @@ 1 2 - 322378 + 256801 2 3 - 40329 + 32125 3 15 - 11376 + 9061 @@ -24150,19 +19049,19 @@ function_template_argument_value - 568375 + 452757 function_id - 247023 + 196774 index - 598 + 476 arg_value - 564996 + 450066 @@ -24176,17 +19075,17 @@ 1 2 - 190057 + 151396 2 3 - 53843 + 42891 3 8 - 3122 + 2486 @@ -24202,22 +19101,22 @@ 1 2 - 181375 + 144480 2 3 - 46060 + 36690 3 54 - 18646 + 14853 54 113 - 940 + 749 @@ -24233,52 +19132,52 @@ 1 2 - 213 + 170 2 3 - 42 + 34 3 4 - 42 + 34 4 5 - 42 + 34 15 16 - 42 + 34 27 28 - 42 + 34 1345 1346 - 42 + 34 1388 1389 - 42 + 34 1850 1851 - 42 + 34 2547 2548 - 42 + 34 @@ -24294,52 +19193,52 @@ 1 2 - 213 + 170 2 3 - 42 + 34 3 4 - 42 + 34 4 5 - 42 + 34 51 52 - 42 + 34 63 64 - 42 + 34 1906 1907 - 42 + 34 3295 3296 - 42 + 34 3702 3703 - 42 + 34 4180 4181 - 42 + 34 @@ -24355,12 +19254,12 @@ 1 2 - 561618 + 447374 2 3 - 3378 + 2691 @@ -24376,7 +19275,7 @@ 1 2 - 564996 + 450066 @@ -24386,26 +19285,26 @@ is_variable_template - 58783 + 58685 id - 58783 + 58685 variable_instantiation - 395853 + 423162 to - 395853 + 423162 from - 35145 + 35336 @@ -24419,7 +19318,7 @@ 1 2 - 395853 + 423162 @@ -24435,47 +19334,42 @@ 1 2 - 15383 + 15233 2 3 - 3752 + 3870 3 4 - 2251 + 2372 4 6 - 2876 + 2996 6 8 - 2251 + 2247 8 - 11 - 2751 - - - 11 - 25 - 2876 + 12 + 3121 - 26 - 181 - 2751 + 12 + 31 + 2746 - 388 - 447 - 250 + 32 + 546 + 2746 @@ -24485,19 +19379,19 @@ variable_template_argument - 719414 + 769159 variable_id - 379093 + 401311 index - 2001 + 1997 arg_type - 255397 + 256344 @@ -24511,22 +19405,22 @@ 1 2 - 151962 + 156703 2 3 - 173725 + 189917 3 4 - 36521 + 36460 4 17 - 16884 + 18230 @@ -24542,22 +19436,22 @@ 1 2 - 165470 + 171562 2 3 - 165345 + 180178 3 4 - 33769 + 33713 4 17 - 14508 + 15857 @@ -24571,44 +19465,44 @@ 12 - 23 - 24 - 875 + 28 + 29 + 874 - 29 - 30 - 375 + 34 + 35 + 374 - 32 - 33 - 125 + 37 + 38 + 124 - 61 - 62 - 125 + 66 + 67 + 124 - 135 - 136 - 125 + 146 + 147 + 124 - 427 - 428 - 125 + 438 + 439 + 124 - 1816 - 1817 - 125 + 1959 + 1960 + 124 - 3031 - 3032 - 125 + 3214 + 3215 + 124 @@ -24624,42 +19518,42 @@ 1 2 - 875 + 874 2 3 - 375 + 374 5 6 - 125 + 124 28 29 - 125 + 124 54 55 - 125 + 124 161 162 - 125 + 124 - 731 - 732 - 125 + 745 + 746 + 124 - 1321 - 1322 - 125 + 1325 + 1326 + 124 @@ -24675,22 +19569,22 @@ 1 2 - 176226 + 175558 2 3 - 44150 + 44701 3 6 - 21137 + 21601 6 - 190 - 13883 + 206 + 14484 @@ -24706,17 +19600,17 @@ 1 2 - 227756 + 228000 2 3 - 24138 + 24722 3 7 - 3502 + 3621 @@ -24726,19 +19620,19 @@ variable_template_argument_value - 20011 + 19978 variable_id - 14883 + 14858 index - 500 + 499 arg_value - 20011 + 19978 @@ -24752,12 +19646,12 @@ 1 2 - 13382 + 13360 2 3 - 1500 + 1498 @@ -24773,17 +19667,17 @@ 1 2 - 10506 + 10488 2 3 - 4002 + 3995 4 5 - 375 + 374 @@ -24799,22 +19693,22 @@ 17 18 - 125 + 124 27 28 - 125 + 124 41 42 - 125 + 124 46 47 - 125 + 124 @@ -24830,22 +19724,22 @@ 22 23 - 125 + 124 29 30 - 125 + 124 50 51 - 125 + 124 59 60 - 125 + 124 @@ -24861,7 +19755,7 @@ 1 2 - 20011 + 19978 @@ -24877,7 +19771,7 @@ 1 2 - 20011 + 19978 @@ -24887,15 +19781,15 @@ template_template_instantiation - 7403 + 6368 to - 6945 + 4994 from - 4908 + 1123 @@ -24909,12 +19803,12 @@ 1 2 - 6796 + 3621 2 - 15 - 148 + 3 + 1373 @@ -24930,17 +19824,22 @@ 1 2 - 3209 + 749 2 3 - 1523 + 124 - 3 - 20 - 175 + 16 + 17 + 124 + + + 27 + 28 + 124 @@ -24950,19 +19849,19 @@ template_template_argument - 12352 + 9678 type_id - 7808 + 6117 index - 134 + 105 arg_type - 11597 + 9086 @@ -24976,22 +19875,22 @@ 1 2 - 6405 + 5018 2 3 - 539 + 422 3 8 - 647 + 507 8 11 - 215 + 169 @@ -25007,22 +19906,22 @@ 1 2 - 6432 + 5039 2 4 - 714 + 559 4 10 - 593 + 464 10 11 - 67 + 52 @@ -25038,52 +19937,52 @@ 6 7 - 13 + 10 11 12 - 13 + 10 16 17 - 13 + 10 21 22 - 13 + 10 27 28 - 13 + 10 38 39 - 13 + 10 50 51 - 13 + 10 64 65 - 13 + 10 104 105 - 13 + 10 579 580 - 13 + 10 @@ -25099,52 +19998,52 @@ 6 7 - 13 + 10 11 12 - 13 + 10 16 17 - 13 + 10 21 22 - 13 + 10 27 28 - 13 + 10 38 39 - 13 + 10 50 51 - 13 + 10 64 65 - 13 + 10 99 100 - 13 + 10 538 539 - 13 + 10 @@ -25160,12 +20059,12 @@ 1 2 - 11557 + 9054 3 43 - 40 + 31 @@ -25181,12 +20080,12 @@ 1 2 - 11570 + 9065 2 11 - 26 + 21 @@ -25196,19 +20095,19 @@ template_template_argument_value - 795 + 623 type_id - 674 + 528 index - 26 + 21 arg_value - 795 + 623 @@ -25222,7 +20121,7 @@ 1 2 - 674 + 528 @@ -25238,17 +20137,17 @@ 1 2 - 579 + 454 2 3 - 67 + 52 3 4 - 26 + 21 @@ -25264,12 +20163,12 @@ 8 9 - 13 + 10 42 43 - 13 + 10 @@ -25285,12 +20184,12 @@ 17 18 - 13 + 10 42 43 - 13 + 10 @@ -25306,7 +20205,7 @@ 1 2 - 795 + 623 @@ -25322,7 +20221,7 @@ 1 2 - 795 + 623 @@ -25332,19 +20231,19 @@ concept_templates - 3868 + 3611 concept_id - 3868 + 3611 name - 3868 + 3611 location - 3868 + 3611 @@ -25358,7 +20257,7 @@ 1 2 - 3868 + 3611 @@ -25374,7 +20273,7 @@ 1 2 - 3868 + 3611 @@ -25390,7 +20289,7 @@ 1 2 - 3868 + 3611 @@ -25406,7 +20305,7 @@ 1 2 - 3868 + 3611 @@ -25422,7 +20321,7 @@ 1 2 - 3868 + 3611 @@ -25438,7 +20337,7 @@ 1 2 - 3868 + 3611 @@ -25448,15 +20347,15 @@ concept_instantiation - 96781 + 90344 to - 96781 + 90344 from - 3684 + 3439 @@ -25470,7 +20369,7 @@ 1 2 - 96781 + 90344 @@ -25486,77 +20385,77 @@ 1 2 - 253 + 236 2 3 - 115 + 107 3 4 - 391 + 365 4 5 - 138 + 128 5 6 - 322 + 300 6 8 - 253 + 236 8 10 - 115 + 107 10 12 - 299 + 279 12 15 - 230 + 214 15 19 - 230 + 214 19 25 - 276 + 257 25 37 - 276 + 257 38 49 - 276 + 257 50 72 - 276 + 257 78 387 - 230 + 214 @@ -25566,30 +20465,30 @@ is_type_constraint - 39490 + 36864 concept_id - 39490 + 36864 concept_template_argument - 120982 + 112936 concept_id - 81744 + 76308 index - 138 + 128 arg_type - 22934 + 21409 @@ -25603,17 +20502,17 @@ 1 2 - 49737 + 46429 2 3 - 26411 + 24655 3 7 - 5595 + 5223 @@ -25629,17 +20528,17 @@ 1 2 - 53606 + 50041 2 3 - 23947 + 22355 3 7 - 4190 + 3912 @@ -25655,32 +20554,32 @@ 11 12 - 23 + 21 26 27 - 23 + 21 34 35 - 23 + 21 243 244 - 23 + 21 1390 1391 - 23 + 21 3550 3551 - 23 + 21 @@ -25696,32 +20595,32 @@ 11 12 - 23 + 21 23 24 - 23 + 21 31 32 - 23 + 21 96 97 - 23 + 21 359 360 - 23 + 21 640 641 - 23 + 21 @@ -25737,42 +20636,42 @@ 1 2 - 11121 + 10382 2 3 - 3177 + 2966 3 4 - 1128 + 1053 4 5 - 1450 + 1354 5 6 - 1243 + 1160 6 9 - 1727 + 1612 9 14 - 2118 + 1977 14 259 - 967 + 902 @@ -25788,17 +20687,17 @@ 1 2 - 19296 + 18013 2 3 - 3500 + 3267 3 4 - 138 + 128 @@ -25808,19 +20707,19 @@ concept_template_argument_value - 115 + 106 concept_id - 90 + 83 index - 16 + 15 arg_value - 115 + 106 @@ -25834,7 +20733,7 @@ 1 2 - 90 + 83 @@ -25850,12 +20749,12 @@ 1 2 - 65 + 60 2 3 - 24 + 22 @@ -25871,12 +20770,12 @@ 3 4 - 8 + 7 8 9 - 8 + 7 @@ -25892,12 +20791,12 @@ 4 5 - 8 + 7 10 11 - 8 + 7 @@ -25913,7 +20812,7 @@ 1 2 - 115 + 106 @@ -25929,7 +20828,7 @@ 1 2 - 115 + 106 @@ -25939,15 +20838,15 @@ routinetypes - 758603 + 604289 id - 758603 + 604289 return_type - 356335 + 283850 @@ -25961,7 +20860,7 @@ 1 2 - 758603 + 604289 @@ -25977,17 +20876,17 @@ 1 2 - 294024 + 234214 2 3 - 44050 + 35089 3 4676 - 18261 + 14546 @@ -25997,19 +20896,19 @@ routinetypeargs - 1165836 + 1176789 routine - 412059 + 415119 index - 977 + 980 type_id - 111081 + 111595 @@ -26023,32 +20922,32 @@ 1 2 - 82129 + 82511 2 3 - 125475 + 126028 3 4 - 106844 + 107456 4 5 - 48614 + 49289 5 7 - 32482 + 33168 7 19 - 16512 + 16665 @@ -26064,27 +20963,27 @@ 1 2 - 88104 + 88502 2 3 - 138023 + 138663 3 4 - 113525 + 114209 4 5 - 40141 + 40738 5 10 - 32156 + 32895 10 @@ -26148,38 +21047,38 @@ 54 - 304 - 305 + 306 + 307 54 - 576 - 577 + 584 + 585 54 - 902 - 903 + 915 + 916 54 - 1797 - 1798 + 1820 + 1821 54 - 3764 - 3765 + 3793 + 3794 54 - 6074 - 6075 + 6107 + 6108 54 - 7586 - 7587 + 7622 + 7623 54 @@ -26234,38 +21133,38 @@ 54 - 96 - 97 + 97 + 98 54 - 126 - 127 + 127 + 128 54 - 191 - 192 + 192 + 193 54 - 313 - 314 + 314 + 315 54 - 509 - 510 + 510 + 511 54 - 786 - 787 + 787 + 788 54 - 1172 - 1173 + 1174 + 1175 54 @@ -26282,47 +21181,47 @@ 1 2 - 33188 + 33222 2 3 - 14991 + 15195 3 4 - 13199 + 13234 4 5 - 9831 + 9803 5 6 - 6355 + 6372 6 8 - 9505 + 9476 8 13 - 9451 + 9531 13 26 - 8745 + 8659 26 - 916 - 5812 + 918 + 6099 @@ -26338,22 +21237,22 @@ 1 2 - 78490 + 78917 2 3 - 17544 + 17537 3 5 - 9451 + 9476 5 17 - 5594 + 5664 @@ -26363,19 +21262,19 @@ ptrtomembers - 12029 + 9730 id - 12029 + 9730 type_id - 10114 + 7977 class_id - 5960 + 4870 @@ -26389,7 +21288,7 @@ 1 2 - 12029 + 9730 @@ -26405,7 +21304,7 @@ 1 2 - 12029 + 9730 @@ -26421,12 +21320,12 @@ 1 2 - 9831 + 7755 2 - 74 - 283 + 84 + 221 @@ -26442,12 +21341,12 @@ 1 2 - 9831 + 7755 2 - 74 - 283 + 84 + 221 @@ -26463,22 +21362,22 @@ 1 2 - 4854 + 3898 2 3 - 539 + 528 8 9 - 512 + 401 10 65 - 53 + 42 @@ -26494,22 +21393,22 @@ 1 2 - 4854 + 3898 2 3 - 539 + 528 8 9 - 512 + 401 10 65 - 53 + 42 @@ -26519,15 +21418,15 @@ specifiers - 7754 + 7741 id - 7754 + 7741 str - 7754 + 7741 @@ -26541,7 +21440,7 @@ 1 2 - 7754 + 7741 @@ -26557,7 +21456,7 @@ 1 2 - 7754 + 7741 @@ -26567,15 +21466,15 @@ typespecifiers - 985913 + 854941 type_id - 979359 + 847449 spec_id - 107 + 1623 @@ -26589,12 +21488,12 @@ 1 2 - 972805 + 839957 2 3 - 6554 + 7491 @@ -26608,44 +21507,69 @@ 12 - 164 - 165 - 13 + 1 + 2 + 124 - 224 - 225 - 13 + 2 + 3 + 124 + + + 16 + 17 + 124 + + + 17 + 18 + 124 + + + 24 + 25 + 124 + + + 44 + 45 + 124 + + + 49 + 50 + 124 - 529 - 530 - 13 + 51 + 52 + 124 - 820 - 821 - 13 + 112 + 113 + 124 - 1568 - 1569 - 13 + 199 + 200 + 124 - 4147 - 4148 - 13 + 325 + 326 + 124 - 17356 - 17357 - 13 + 545 + 546 + 124 - 48300 - 48301 - 13 + 5462 + 5463 + 124 @@ -26655,15 +21579,15 @@ funspecifiers - 9699590 + 9723254 func_id - 3974790 + 4012492 spec_id - 2376 + 2372 @@ -26677,27 +21601,27 @@ 1 2 - 1485356 + 1528455 2 3 - 507167 + 506696 3 4 - 1039223 + 1037866 4 5 - 697026 + 693492 5 8 - 246016 + 245981 @@ -26713,97 +21637,97 @@ 17 18 - 125 + 124 18 19 - 125 + 124 53 54 - 125 + 124 114 115 - 125 + 124 - 206 - 207 - 125 + 216 + 217 + 124 272 273 - 125 + 124 - 354 - 355 - 125 + 355 + 356 + 124 653 654 - 125 + 124 - 766 - 767 - 125 + 767 + 768 + 124 823 824 - 125 + 124 - 1075 - 1076 - 125 + 1095 + 1096 + 124 - 1258 - 1259 - 125 + 1261 + 1262 + 124 - 1662 - 1663 - 125 + 1663 + 1664 + 124 - 3340 - 3341 - 125 + 3301 + 3302 + 124 - 3351 - 3352 - 125 + 3355 + 3356 + 124 - 6166 - 6167 - 125 + 6170 + 6171 + 124 - 15136 - 15137 - 125 + 15121 + 15122 + 124 - 19863 - 19864 - 125 + 19840 + 19841 + 124 - 22425 - 22426 - 125 + 22777 + 22778 + 124 @@ -26813,15 +21737,15 @@ varspecifiers - 2999353 + 3078137 var_id - 2281064 + 2316969 spec_id - 1125 + 1123 @@ -26835,17 +21759,17 @@ 1 2 - 1661582 + 1659562 2 3 - 521175 + 554144 3 5 - 98306 + 103262 @@ -26858,50 +21782,50 @@ 12 - - 67 - 68 - 125 - 97 98 - 125 + 124 + + + 240 + 241 + 124 1091 1092 - 125 + 124 - 1325 - 1326 - 125 + 1332 + 1333 + 124 - 2236 - 2237 - 125 + 2238 + 2239 + 124 - 2557 - 2558 - 125 + 2773 + 2774 + 124 - 3227 - 3228 - 125 + 3449 + 3450 + 124 - 4931 - 4932 - 125 + 4939 + 4940 + 124 - 8450 - 8451 - 125 + 8493 + 8494 + 124 @@ -26911,15 +21835,15 @@ explicit_specifier_exprs - 41398 + 41329 func_id - 41398 + 41329 constant - 41398 + 41329 @@ -26933,7 +21857,7 @@ 1 2 - 41398 + 41329 @@ -26949,7 +21873,7 @@ 1 2 - 41398 + 41329 @@ -26959,27 +21883,27 @@ attributes - 651875 + 654410 id - 651875 + 654410 kind - 375 + 374 name - 2126 + 2122 name_space - 250 + 249 location - 645747 + 648291 @@ -26993,7 +21917,7 @@ 1 2 - 651875 + 654410 @@ -27009,7 +21933,7 @@ 1 2 - 651875 + 654410 @@ -27025,7 +21949,7 @@ 1 2 - 651875 + 654410 @@ -27041,7 +21965,7 @@ 1 2 - 651875 + 654410 @@ -27057,17 +21981,17 @@ 7 8 - 125 + 124 - 2402 - 2403 - 125 + 2406 + 2407 + 124 - 2803 - 2804 - 125 + 2828 + 2829 + 124 @@ -27083,17 +22007,17 @@ 1 2 - 125 + 124 6 7 - 125 + 124 12 13 - 125 + 124 @@ -27109,12 +22033,12 @@ 1 2 - 250 + 249 2 3 - 125 + 124 @@ -27130,17 +22054,17 @@ 4 5 - 125 + 124 - 2356 - 2357 - 125 + 2360 + 2361 + 124 - 2803 - 2804 - 125 + 2828 + 2829 + 124 @@ -27156,77 +22080,72 @@ 1 2 - 250 + 249 3 4 - 125 + 124 6 7 - 125 + 124 7 8 - 125 - - - 8 - 9 - 125 + 249 10 11 - 250 + 249 14 15 - 125 + 124 18 19 - 125 + 124 24 25 - 125 + 124 - 55 - 56 - 125 + 59 + 60 + 124 62 63 - 125 + 124 72 73 - 125 + 124 - 340 - 341 - 125 + 341 + 342 + 124 1977 1978 - 125 + 124 - 2604 - 2605 - 125 + 2629 + 2630 + 124 @@ -27242,12 +22161,12 @@ 1 2 - 1876 + 1872 2 3 - 250 + 249 @@ -27263,7 +22182,7 @@ 1 2 - 2126 + 2122 @@ -27279,77 +22198,77 @@ 1 2 - 250 + 249 3 4 - 125 + 124 4 5 - 125 + 124 6 7 - 125 + 124 - 8 - 9 - 125 + 7 + 8 + 124 10 11 - 250 + 249 14 15 - 125 + 124 18 19 - 125 + 124 24 25 - 125 + 124 - 55 - 56 - 125 + 59 + 60 + 124 62 63 - 125 + 124 72 73 - 125 + 124 - 335 - 336 - 125 + 336 + 337 + 124 1977 1978 - 125 + 124 - 2604 - 2605 - 125 + 2629 + 2630 + 124 @@ -27365,12 +22284,12 @@ 11 12 - 125 + 124 - 5201 - 5202 - 125 + 5230 + 5231 + 124 @@ -27386,12 +22305,12 @@ 1 2 - 125 + 124 3 4 - 125 + 124 @@ -27407,12 +22326,12 @@ 2 3 - 125 + 124 15 16 - 125 + 124 @@ -27428,12 +22347,12 @@ 11 12 - 125 + 124 - 5152 - 5153 - 125 + 5181 + 5182 + 124 @@ -27449,12 +22368,12 @@ 1 2 - 639868 + 642423 2 5 - 5878 + 5868 @@ -27470,7 +22389,7 @@ 1 2 - 645747 + 648291 @@ -27486,12 +22405,12 @@ 1 2 - 640619 + 643172 2 3 - 5127 + 5119 @@ -27507,7 +22426,7 @@ 1 2 - 645747 + 648291 @@ -27517,27 +22436,27 @@ attribute_args - 98337 + 82562 id - 98337 + 82562 kind - 53 + 17 attribute - 84946 + 71259 index - 67 + 40 location - 91527 + 57184 @@ -27551,7 +22470,7 @@ 1 2 - 98337 + 82562 @@ -27567,7 +22486,7 @@ 1 2 - 98337 + 82562 @@ -27583,7 +22502,7 @@ 1 2 - 98337 + 82562 @@ -27599,7 +22518,7 @@ 1 2 - 98337 + 82562 @@ -27613,24 +22532,19 @@ 12 - 10 - 11 - 13 - - - 133 - 134 - 13 + 100 + 101 + 5 - 560 - 561 - 13 + 2252 + 2253 + 5 - 6589 - 6590 - 13 + 11914 + 11915 + 5 @@ -27644,24 +22558,19 @@ 12 - 10 - 11 - 13 - - - 133 - 134 - 13 + 100 + 101 + 5 - 156 - 157 - 13 + 1892 + 1893 + 5 - 6170 - 6171 - 13 + 10583 + 10584 + 5 @@ -27677,17 +22586,17 @@ 1 2 - 26 + 5 4 5 - 13 + 5 - 5 - 6 - 13 + 7 + 8 + 5 @@ -27701,24 +22610,19 @@ 12 - 8 - 9 - 13 - - - 18 - 19 - 13 + 15 + 16 + 5 - 535 - 536 - 13 + 2183 + 2184 + 5 - 6242 - 6243 - 13 + 9330 + 9331 + 5 @@ -27734,17 +22638,17 @@ 1 2 - 77165 + 65790 2 - 4 - 6432 + 7 + 5347 - 4 - 18 - 1348 + 7 + 25 + 121 @@ -27760,12 +22664,12 @@ 1 2 - 82653 + 69743 2 3 - 2292 + 1516 @@ -27781,12 +22685,12 @@ 1 2 - 78689 + 68215 2 - 6 - 6257 + 8 + 3044 @@ -27802,12 +22706,12 @@ 1 2 - 80293 + 68747 2 6 - 4652 + 2511 @@ -27821,29 +22725,39 @@ 12 - 94 - 95 - 13 + 2 + 3 + 5 - 96 - 97 - 13 + 9 + 10 + 5 + + + 82 + 83 + 5 + + + 83 + 84 + 5 - 166 - 167 - 13 + 271 + 272 + 5 - 464 - 465 - 13 + 526 + 527 + 5 - 6472 - 6473 - 13 + 13293 + 13294 + 5 @@ -27859,17 +22773,17 @@ 1 2 - 13 + 17 2 3 - 40 + 17 - 4 - 5 - 13 + 3 + 4 + 5 @@ -27883,29 +22797,39 @@ 12 - 94 - 95 - 13 + 2 + 3 + 5 - 96 - 97 - 13 + 9 + 10 + 5 + + + 82 + 83 + 5 - 166 - 167 - 13 + 83 + 84 + 5 + + + 271 + 272 + 5 - 464 - 465 - 13 + 526 + 527 + 5 - 6299 - 6300 - 13 + 12313 + 12314 + 5 @@ -27919,29 +22843,39 @@ 12 - 94 - 95 - 13 + 2 + 3 + 5 - 96 - 97 - 13 + 9 + 10 + 5 + + + 82 + 83 + 5 + + + 83 + 84 + 5 - 166 - 167 - 13 + 271 + 272 + 5 - 349 - 350 - 13 + 441 + 442 + 5 - 6123 - 6124 - 13 + 9074 + 9075 + 5 @@ -27957,12 +22891,17 @@ 1 2 - 89261 + 41506 2 - 23 - 2265 + 3 + 11858 + + + 3 + 25 + 3819 @@ -27978,12 +22917,12 @@ 1 2 - 91311 + 47653 2 3 - 215 + 9531 @@ -27999,12 +22938,17 @@ 1 2 - 91122 + 42861 2 - 18 - 404 + 3 + 12298 + + + 3 + 11 + 2025 @@ -28020,12 +22964,12 @@ 1 2 - 90974 + 56935 2 - 3 - 552 + 8 + 248 @@ -28035,15 +22979,15 @@ attribute_arg_value - 20955 + 16693 arg - 20955 + 16693 value - 641 + 511 @@ -28057,7 +23001,7 @@ 1 2 - 20955 + 16693 @@ -28073,52 +23017,52 @@ 1 2 - 256 + 204 5 6 - 42 + 34 6 7 - 42 + 34 15 16 - 42 + 34 25 26 - 42 + 34 51 52 - 42 + 34 52 53 - 42 + 34 71 72 - 42 + 34 76 77 - 42 + 34 183 184 - 42 + 34 @@ -28128,15 +23072,15 @@ attribute_arg_type - 466 + 460 arg - 466 + 460 type_id - 85 + 84 @@ -28150,7 +23094,7 @@ 1 2 - 466 + 460 @@ -28191,15 +23135,15 @@ attribute_arg_constant - 88857 + 71994 arg - 88857 + 71994 constant - 88857 + 71994 @@ -28213,7 +23157,7 @@ 1 2 - 88857 + 71994 @@ -28229,7 +23173,7 @@ 1 2 - 88857 + 71994 @@ -28239,15 +23183,15 @@ attribute_arg_expr - 1793 + 1405 arg - 1793 + 1405 expr - 1793 + 1405 @@ -28261,7 +23205,7 @@ 1 2 - 1793 + 1405 @@ -28277,7 +23221,7 @@ 1 2 - 1793 + 1405 @@ -28340,15 +23284,15 @@ typeattributes - 92303 + 96394 type_id - 90677 + 94646 spec_id - 29266 + 32464 @@ -28362,12 +23306,12 @@ 1 2 - 89051 + 92898 2 3 - 1625 + 1748 @@ -28383,17 +23327,17 @@ 1 2 - 24764 + 27969 2 - 7 - 2251 + 9 + 2497 - 7 + 11 58 - 2251 + 1997 @@ -28403,15 +23347,15 @@ funcattributes - 845862 + 844327 func_id - 800961 + 799751 spec_id - 617856 + 617325 @@ -28425,12 +23369,12 @@ 1 2 - 760563 + 759670 2 7 - 40398 + 40081 @@ -28446,12 +23390,12 @@ 1 2 - 572079 + 572249 2 213 - 45776 + 45075 @@ -28522,17 +23466,75 @@ + + namespaceattributes + 5995 + + + namespace_id + 136 + + + spec_id + 5995 + + + + + namespace_id + spec_id + + + 12 + + + 1 + 2 + 68 + + + 11 + 12 + 34 + + + 163 + 164 + 34 + + + + + + + spec_id + namespace_id + + + 12 + + + 1 + 2 + 5995 + + + + + + + stmtattributes - 2371 + 2214 stmt_id - 2371 + 2214 spec_id - 598 + 558 @@ -28546,7 +23548,7 @@ 1 2 - 2371 + 2214 @@ -28562,27 +23564,27 @@ 1 2 - 230 + 214 2 3 - 161 + 150 3 4 - 46 + 42 9 10 - 115 + 107 13 16 - 46 + 42 @@ -28592,15 +23594,15 @@ unspecifiedtype - 8313750 + 7179407 type_id - 8313750 + 7179407 unspecified_type_id - 4783555 + 3965917 @@ -28614,7 +23616,7 @@ 1 2 - 8313750 + 7179407 @@ -28630,17 +23632,22 @@ 1 2 - 3189801 + 2482788 2 3 - 1303717 + 1117779 3 - 6277 - 290037 + 7 + 302919 + + + 7 + 537 + 62431 @@ -28650,19 +23657,19 @@ member - 4663372 + 4193419 parent - 558581 + 543781 index - 10691 + 29717 child - 4546703 + 4188799 @@ -28676,52 +23683,57 @@ 1 2 - 232140 + 129108 2 3 - 24548 + 83408 3 4 - 29295 + 32464 4 5 - 37592 + 44950 5 + 6 + 42453 + + + 6 7 - 47642 + 33962 7 - 11 - 43152 + 9 + 42328 - 11 - 14 - 41569 + 9 + 13 + 41204 - 14 - 19 - 45162 + 13 + 18 + 41329 - 19 - 53 - 42125 + 18 + 42 + 40830 - 53 - 251 - 15353 + 42 + 239 + 11737 @@ -28737,52 +23749,57 @@ 1 2 - 232011 + 128859 2 3 - 24676 + 83533 3 4 - 29338 + 32214 4 5 - 37677 + 45075 5 + 6 + 42578 + + + 6 7 - 47428 + 32839 7 - 11 - 43579 + 9 + 42703 - 11 - 14 - 41484 + 9 + 13 + 41579 - 14 - 19 - 44948 + 13 + 18 + 41454 - 19 - 53 - 42125 + 18 + 42 + 40955 - 53 - 255 - 15310 + 42 + 265 + 11986 @@ -28798,57 +23815,57 @@ 1 2 - 2822 + 6492 2 - 4 - 812 + 3 + 2622 - 4 - 22 - 812 + 3 + 8 + 1872 - 22 - 31 - 812 + 9 + 10 + 2871 - 31 - 53 - 855 + 10 + 19 + 2247 - 53 - 108 - 812 + 19 + 26 + 2247 - 110 - 218 - 812 + 26 + 36 + 2497 - 223 - 328 - 812 + 36 + 50 + 2247 - 328 - 581 - 812 + 54 + 141 + 2247 - 653 - 2518 - 812 + 150 + 468 + 2247 - 2899 - 12712 - 513 + 480 + 4310 + 2122 @@ -28864,62 +23881,57 @@ 1 2 - 1753 + 5493 2 3 - 1368 + 3621 3 - 8 - 812 - - - 8 - 31 - 855 + 9 + 1872 - 31 - 41 - 855 + 9 + 10 + 2871 - 41 - 97 - 812 + 10 + 20 + 2372 - 97 - 161 - 812 + 20 + 28 + 2372 - 164 - 314 - 855 + 28 + 37 + 2372 - 318 - 386 - 812 + 37 + 56 + 2372 - 435 - 1127 - 812 + 58 + 156 + 2247 - 1145 - 6168 - 812 + 163 + 527 + 2247 - 6496 - 12724 - 128 + 547 + 4330 + 1872 @@ -28935,7 +23947,7 @@ 1 2 - 4546703 + 4188799 @@ -28951,12 +23963,12 @@ 1 2 - 4459244 + 4184179 2 - 13 - 87458 + 3 + 4619 @@ -28966,15 +23978,15 @@ enclosingfunction - 144125 + 114807 child - 144125 + 114807 parent - 89554 + 71337 @@ -28988,7 +24000,7 @@ 1 2 - 144125 + 114807 @@ -29004,22 +24016,22 @@ 1 2 - 61926 + 49329 2 3 - 5816 + 4633 3 4 - 19287 + 15364 4 37 - 2523 + 2009 @@ -29029,27 +24041,27 @@ derivations - 597157 + 476877 derivation - 597157 + 476877 sub - 569872 + 455142 index - 299 + 238 super - 294708 + 235542 location - 44435 + 35396 @@ -29063,7 +24075,7 @@ 1 2 - 597157 + 476877 @@ -29079,7 +24091,7 @@ 1 2 - 597157 + 476877 @@ -29095,7 +24107,7 @@ 1 2 - 597157 + 476877 @@ -29111,7 +24123,7 @@ 1 2 - 597157 + 476877 @@ -29127,12 +24139,12 @@ 1 2 - 549130 + 438619 2 9 - 20742 + 16522 @@ -29148,12 +24160,12 @@ 1 2 - 549130 + 438619 2 8 - 20742 + 16522 @@ -29169,12 +24181,12 @@ 1 2 - 549130 + 438619 2 9 - 20742 + 16522 @@ -29190,12 +24202,12 @@ 1 2 - 549130 + 438619 2 8 - 20742 + 16522 @@ -29211,27 +24223,27 @@ 25 26 - 128 + 102 26 27 - 42 + 34 52 53 - 42 + 34 485 486 - 42 + 34 - 13325 - 13326 - 42 + 13360 + 13361 + 34 @@ -29247,22 +24259,22 @@ 25 26 - 171 + 136 52 53 - 42 + 34 485 486 - 42 + 34 - 13325 - 13326 - 42 + 13360 + 13361 + 34 @@ -29278,32 +24290,32 @@ 23 24 - 42 + 34 24 25 - 42 + 34 25 26 - 85 + 68 32 33 - 42 + 34 289 290 - 42 + 34 - 6487 - 6488 - 42 + 6510 + 6511 + 34 @@ -29319,22 +24331,22 @@ 1 2 - 171 + 136 7 8 - 42 + 34 65 66 - 42 + 34 963 964 - 42 + 34 @@ -29350,12 +24362,12 @@ 1 2 - 282648 + 225731 2 1655 - 12060 + 9811 @@ -29371,12 +24383,12 @@ 1 2 - 282648 + 225731 2 1655 - 12060 + 9811 @@ -29392,12 +24404,12 @@ 1 2 - 294152 + 235100 2 4 - 555 + 442 @@ -29413,12 +24425,12 @@ 1 2 - 288207 + 230194 2 81 - 6500 + 5348 @@ -29434,27 +24446,27 @@ 1 2 - 33358 + 26504 2 5 - 3977 + 3134 5 22 - 3378 + 2759 - 23 + 22 383 - 3335 + 2691 388 928 - 384 + 306 @@ -29470,27 +24482,27 @@ 1 2 - 33358 + 26504 2 5 - 3977 + 3134 5 22 - 3378 + 2759 - 23 + 22 383 - 3335 + 2691 388 928 - 384 + 306 @@ -29506,7 +24518,7 @@ 1 2 - 44435 + 35396 @@ -29522,22 +24534,22 @@ 1 2 - 36138 + 28718 2 4 - 3293 + 2623 4 26 - 3464 + 2827 26 928 - 1539 + 1226 @@ -29547,15 +24559,15 @@ derspecifiers - 599381 + 478648 der_id - 596601 + 476434 spec_id - 171 + 136 @@ -29569,12 +24581,12 @@ 1 2 - 593821 + 474220 2 3 - 2779 + 2214 @@ -29590,22 +24602,22 @@ 65 66 - 42 + 34 92 93 - 42 + 34 1104 1105 - 42 + 34 - 12754 - 12755 - 42 + 12789 + 12790 + 34 @@ -29615,15 +24627,15 @@ direct_base_offsets - 563371 + 449963 der_id - 563371 + 449963 offset - 641 + 511 @@ -29637,7 +24649,7 @@ 1 2 - 563371 + 449963 @@ -29653,42 +24665,42 @@ 1 2 - 128 + 102 2 3 - 171 + 136 3 4 - 128 + 102 4 5 - 42 + 34 7 8 - 42 + 34 9 10 - 42 + 34 110 111 - 42 + 34 - 13023 - 13024 - 42 + 13058 + 13059 + 34 @@ -29698,19 +24710,19 @@ virtual_base_offsets - 7313 + 5825 sub - 7313 + 5825 super - 128 + 102 offset - 427 + 340 @@ -29724,7 +24736,7 @@ 1 2 - 7313 + 5825 @@ -29740,7 +24752,7 @@ 1 2 - 7313 + 5825 @@ -29756,12 +24768,12 @@ 9 10 - 85 + 68 153 154 - 42 + 34 @@ -29777,12 +24789,12 @@ 1 2 - 42 + 34 9 10 - 85 + 68 @@ -29798,12 +24810,12 @@ 2 3 - 384 + 306 153 154 - 42 + 34 @@ -29819,12 +24831,12 @@ 1 2 - 42 + 34 2 3 - 384 + 306 @@ -29834,23 +24846,23 @@ frienddecls - 879292 + 700420 id - 879292 + 700420 type_id - 53245 + 42413 decl_id - 97594 + 77741 location - 7655 + 6098 @@ -29864,7 +24876,7 @@ 1 2 - 879292 + 700420 @@ -29880,7 +24892,7 @@ 1 2 - 879292 + 700420 @@ -29896,7 +24908,7 @@ 1 2 - 879292 + 700420 @@ -29912,47 +24924,47 @@ 1 2 - 7740 + 6166 2 3 - 17534 + 13967 3 7 - 4490 + 3577 7 12 - 4319 + 3440 12 20 - 4576 + 3645 20 32 - 4148 + 3304 33 50 - 4747 + 3781 50 80 - 4747 + 3781 101 120 - 940 + 749 @@ -29968,47 +24980,47 @@ 1 2 - 7740 + 6166 2 3 - 17534 + 13967 3 7 - 4490 + 3577 7 12 - 4319 + 3440 12 20 - 4576 + 3645 20 32 - 4148 + 3304 33 50 - 4747 + 3781 50 80 - 4747 + 3781 101 120 - 940 + 749 @@ -30024,12 +25036,12 @@ 1 2 - 51534 + 41050 2 13 - 1710 + 1362 @@ -30045,32 +25057,32 @@ 1 2 - 60087 + 47864 2 3 - 7612 + 6063 3 8 - 7527 + 5995 8 15 - 7612 + 6063 15 40 - 7612 + 6063 40 164 - 7142 + 5689 @@ -30086,32 +25098,32 @@ 1 2 - 60087 + 47864 2 3 - 7612 + 6063 3 8 - 7527 + 5995 8 15 - 7612 + 6063 15 40 - 7612 + 6063 40 164 - 7142 + 5689 @@ -30127,12 +25139,12 @@ 1 2 - 96739 + 77059 2 5 - 855 + 681 @@ -30148,12 +25160,12 @@ 1 2 - 7184 + 5723 2 20371 - 470 + 374 @@ -30169,12 +25181,12 @@ 1 2 - 7484 + 5961 2 1148 - 171 + 136 @@ -30190,12 +25202,12 @@ 1 2 - 7227 + 5757 2 2129 - 427 + 340 @@ -30205,19 +25217,19 @@ comments - 11233849 + 11241970 id - 11233849 + 11241970 contents - 4296351 + 4306670 location - 11233849 + 11241970 @@ -30231,7 +25243,7 @@ 1 2 - 11233849 + 11241970 @@ -30247,7 +25259,7 @@ 1 2 - 11233849 + 11241970 @@ -30263,17 +25275,17 @@ 1 2 - 3921885 + 3932329 2 - 6 - 322310 + 7 + 330014 - 6 - 34359 - 52155 + 7 + 34447 + 44326 @@ -30289,17 +25301,17 @@ 1 2 - 3921885 + 3932329 2 - 6 - 322310 + 7 + 330014 - 6 - 34359 - 52155 + 7 + 34447 + 44326 @@ -30315,7 +25327,7 @@ 1 2 - 11233849 + 11241970 @@ -30331,7 +25343,7 @@ 1 2 - 11233849 + 11241970 @@ -30341,15 +25353,15 @@ commentbinding - 3842839 + 3916721 id - 3355433 + 3352213 element - 3676619 + 3751027 @@ -30363,12 +25375,12 @@ 1 2 - 3299151 + 3290530 2 1706 - 56282 + 61682 @@ -30384,12 +25396,12 @@ 1 2 - 3510398 + 3585333 2 3 - 166220 + 165694 @@ -30399,15 +25411,15 @@ exprconv - 9606161 + 9633092 converted - 9606056 + 9632986 conversion - 9606161 + 9633092 @@ -30421,7 +25433,7 @@ 1 2 - 9605951 + 9632881 2 @@ -30442,7 +25454,7 @@ 1 2 - 9606161 + 9633092 @@ -30452,30 +25464,30 @@ compgenerated - 10707572 + 9891533 id - 10707572 + 9891533 synthetic_destructor_call - 1789036 + 1670057 element - 1332347 + 1243740 i - 414 + 386 destructor_call - 1789036 + 1670057 @@ -30489,17 +25501,17 @@ 1 2 - 886850 + 827870 2 3 - 438221 + 409077 3 19 - 7276 + 6792 @@ -30515,17 +25527,17 @@ 1 2 - 886850 + 827870 2 3 - 438221 + 409077 3 19 - 7276 + 6792 @@ -30541,57 +25553,57 @@ 1 2 - 46 + 42 2 3 - 92 + 85 3 4 - 92 + 85 13 14 - 23 + 21 23 24 - 23 + 21 27 28 - 23 + 21 32 33 - 23 + 21 53 54 - 23 + 21 316 317 - 23 + 21 19347 19348 - 23 + 21 57861 57862 - 23 + 21 @@ -30607,57 +25619,57 @@ 1 2 - 46 + 42 2 3 - 92 + 85 3 4 - 92 + 85 13 14 - 23 + 21 23 24 - 23 + 21 27 28 - 23 + 21 32 33 - 23 + 21 53 54 - 23 + 21 316 317 - 23 + 21 19347 19348 - 23 + 21 57861 57862 - 23 + 21 @@ -30673,7 +25685,7 @@ 1 2 - 1789036 + 1670057 @@ -30689,7 +25701,7 @@ 1 2 - 1789036 + 1670057 @@ -30699,15 +25711,15 @@ namespaces - 11044 + 8653 id - 11044 + 8653 name - 5839 + 4574 @@ -30721,7 +25733,7 @@ 1 2 - 11044 + 8653 @@ -30737,17 +25749,17 @@ 1 2 - 4773 + 3740 2 3 - 674 + 528 3 149 - 391 + 306 @@ -30757,26 +25769,26 @@ namespace_inline - 500 + 499 id - 500 + 499 namespacembrs - 2018038 + 2039522 parentid - 4002 + 3995 memberid - 2018038 + 2039522 @@ -30790,67 +25802,67 @@ 1 2 - 500 + 499 2 3 - 250 + 249 3 4 - 500 + 499 4 5 - 625 + 624 5 10 - 250 + 249 10 12 - 250 + 249 12 18 - 250 + 249 19 21 - 250 + 249 23 24 - 250 + 249 25 29 - 250 + 249 70 83 - 250 + 249 165 170 - 250 + 249 - 15407 - 15408 - 125 + 15606 + 15607 + 124 @@ -30866,7 +25878,7 @@ 1 2 - 2018038 + 2039522 @@ -30876,19 +25888,19 @@ exprparents - 19398686 + 19454225 expr_id - 19398686 + 19454225 child_index - 19977 + 20035 parent_id - 12903052 + 12939994 @@ -30902,7 +25914,7 @@ 1 2 - 19398686 + 19454225 @@ -30918,7 +25930,7 @@ 1 2 - 19398686 + 19454225 @@ -30934,42 +25946,42 @@ 1 2 - 3844 + 3855 2 3 - 1515 + 1519 3 4 - 364 + 365 4 5 - 8950 + 8976 5 8 - 1655 + 1660 8 11 - 1627 + 1632 11 53 - 1515 + 1519 56 354800 - 505 + 506 @@ -30985,42 +25997,42 @@ 1 2 - 3844 + 3855 2 3 - 1515 + 1519 3 4 - 364 + 365 4 5 - 8950 + 8976 5 8 - 1655 + 1660 8 11 - 1627 + 1632 11 53 - 1515 + 1519 56 354800 - 505 + 506 @@ -31036,17 +26048,17 @@ 1 2 - 7373649 + 7394760 2 3 - 5068172 + 5082682 3 712 - 461230 + 462550 @@ -31062,17 +26074,17 @@ 1 2 - 7373649 + 7394760 2 3 - 5068172 + 5082682 3 712 - 461230 + 462550 @@ -31082,22 +26094,22 @@ expr_isload - 6822557 + 6909477 expr_id - 6822557 + 6909477 conversionkinds - 6049042 + 6050435 expr_id - 6049042 + 6050435 kind @@ -31115,7 +26127,7 @@ 1 2 - 6049042 + 6050435 @@ -31154,13 +26166,13 @@ 1 - 93175 - 93176 + 93247 + 93248 1 - 5830215 - 5830216 + 5831536 + 5831537 1 @@ -31171,15 +26183,15 @@ iscall - 6210093 + 5797114 caller - 6210093 + 5797114 kind - 69 + 64 @@ -31193,7 +26205,7 @@ 1 2 - 6210093 + 5797114 @@ -31209,17 +26221,17 @@ 230 231 - 23 + 21 1408 1409 - 23 + 21 - 268053 - 268054 - 23 + 268054 + 268055 + 21 @@ -31229,15 +26241,15 @@ numtemplatearguments - 720113 + 627939 expr_id - 720113 + 627939 num - 384 + 374 @@ -31251,7 +26263,7 @@ 1 2 - 720113 + 627939 @@ -31265,44 +26277,19 @@ 12 - 1 - 2 - 85 - - - 3 - 4 - 42 - - - 5 - 6 - 42 - - - 32 - 33 - 42 - - - 107 - 108 - 42 - - - 362 - 363 - 42 + 7 + 8 + 124 - 754 - 755 - 42 + 1263 + 1264 + 124 - 15573 - 15574 - 42 + 3759 + 3760 + 124 @@ -31312,15 +26299,15 @@ specialnamequalifyingelements - 125 + 124 id - 125 + 124 name - 125 + 124 @@ -31334,7 +26321,7 @@ 1 2 - 125 + 124 @@ -31350,7 +26337,7 @@ 1 2 - 125 + 124 @@ -31360,23 +26347,23 @@ namequalifiers - 3254040 + 3038986 id - 3254040 + 3038986 qualifiableelement - 3254040 + 3038986 qualifyingelement - 50221 + 47440 location - 590842 + 551913 @@ -31390,7 +26377,7 @@ 1 2 - 3254040 + 3038986 @@ -31406,7 +26393,7 @@ 1 2 - 3254040 + 3038986 @@ -31422,7 +26409,7 @@ 1 2 - 3254040 + 3038986 @@ -31438,7 +26425,7 @@ 1 2 - 3254040 + 3038986 @@ -31454,7 +26441,7 @@ 1 2 - 3254040 + 3038986 @@ -31470,7 +26457,7 @@ 1 2 - 3254040 + 3038986 @@ -31486,27 +26473,27 @@ 1 2 - 33757 + 31512 2 3 - 8220 + 8168 3 5 - 4352 + 4105 5 - 1601 - 3776 + 6811 + 3568 - 6806 + 19018 41956 - 115 + 85 @@ -31522,27 +26509,27 @@ 1 2 - 33757 + 31512 2 3 - 8220 + 8168 3 5 - 4352 + 4105 5 - 1601 - 3776 + 6811 + 3568 - 6806 + 19018 41956 - 115 + 85 @@ -31558,22 +26545,22 @@ 1 2 - 36474 + 34371 2 3 - 7644 + 7351 3 6 - 3799 + 3568 6 20057 - 2302 + 2149 @@ -31589,22 +26576,22 @@ 1 2 - 84761 + 79059 2 6 - 40365 + 38068 6 7 - 427076 + 398609 7 192 - 38638 + 36176 @@ -31620,22 +26607,22 @@ 1 2 - 84761 + 79059 2 6 - 40365 + 38068 6 7 - 427076 + 398609 7 192 - 38638 + 36176 @@ -31651,22 +26638,22 @@ 1 2 - 119071 + 111431 2 4 - 14184 + 13284 4 5 - 444530 + 414902 5 33 - 13056 + 12295 @@ -31676,15 +26663,15 @@ varbind - 8231069 + 8254635 expr - 8231069 + 8254635 var - 1047377 + 1050376 @@ -31698,7 +26685,7 @@ 1 2 - 8231069 + 8254635 @@ -31714,52 +26701,52 @@ 1 2 - 171046 + 171536 2 3 - 188162 + 188700 3 4 - 145232 + 145648 4 5 - 116303 + 116636 5 6 - 82913 + 83151 6 7 - 65629 + 65817 7 9 - 80584 + 80815 9 13 - 81342 + 81575 13 27 - 78901 + 79127 27 5137 - 37262 + 37368 @@ -31769,15 +26756,15 @@ funbind - 6220501 + 5806808 expr - 6217853 + 5804336 fun - 295317 + 275677 @@ -31791,12 +26778,12 @@ 1 2 - 6215204 + 5801865 2 3 - 2648 + 2471 @@ -31812,27 +26799,27 @@ 1 2 - 194184 + 181269 2 3 - 41563 + 38799 3 4 - 18398 + 17174 4 8 - 24339 + 22720 8 37798 - 16832 + 15713 @@ -31842,19 +26829,19 @@ expr_allocator - 56794 + 45241 expr - 56794 + 45241 func - 128 + 102 form - 42 + 34 @@ -31868,7 +26855,7 @@ 1 2 - 56794 + 45241 @@ -31884,7 +26871,7 @@ 1 2 - 56794 + 45241 @@ -31900,17 +26887,17 @@ 1 2 - 42 + 34 591 592 - 42 + 34 736 737 - 42 + 34 @@ -31926,7 +26913,7 @@ 1 2 - 128 + 102 @@ -31942,7 +26929,7 @@ 1328 1329 - 42 + 34 @@ -31958,7 +26945,7 @@ 3 4 - 42 + 34 @@ -31968,19 +26955,19 @@ expr_deallocator - 67572 + 53826 expr - 67572 + 53826 func - 128 + 102 form - 85 + 68 @@ -31994,7 +26981,7 @@ 1 2 - 67572 + 53826 @@ -32010,7 +26997,7 @@ 1 2 - 67572 + 53826 @@ -32026,17 +27013,17 @@ 1 2 - 42 + 34 723 724 - 42 + 34 856 857 - 42 + 34 @@ -32052,7 +27039,7 @@ 1 2 - 128 + 102 @@ -32068,12 +27055,12 @@ 723 724 - 42 + 34 857 858 - 42 + 34 @@ -32089,12 +27076,12 @@ 1 2 - 42 + 34 2 3 - 42 + 34 @@ -32104,26 +27091,26 @@ expr_cond_two_operand - 652 + 653 cond - 652 + 653 expr_cond_guard - 895370 + 897880 cond - 895370 + 897880 guard - 895370 + 897880 @@ -32137,7 +27124,7 @@ 1 2 - 895370 + 897880 @@ -32153,7 +27140,7 @@ 1 2 - 895370 + 897880 @@ -32163,15 +27150,15 @@ expr_cond_true - 895366 + 897876 cond - 895366 + 897876 true - 895366 + 897876 @@ -32185,7 +27172,7 @@ 1 2 - 895366 + 897876 @@ -32201,7 +27188,7 @@ 1 2 - 895366 + 897876 @@ -32211,15 +27198,15 @@ expr_cond_false - 895370 + 897880 cond - 895370 + 897880 false - 895370 + 897880 @@ -32233,7 +27220,7 @@ 1 2 - 895370 + 897880 @@ -32249,7 +27236,7 @@ 1 2 - 895370 + 897880 @@ -32259,15 +27246,15 @@ values - 13436143 + 13474612 id - 13436143 + 13474612 str - 114239 + 114566 @@ -32281,7 +27268,7 @@ 1 2 - 13436143 + 13474612 @@ -32297,27 +27284,27 @@ 1 2 - 78079 + 78302 2 3 - 15258 + 15301 3 6 - 8869 + 8895 6 52 - 8604 + 8628 52 674264 - 3427 + 3437 @@ -32327,15 +27314,15 @@ valuetext - 6643521 + 6647584 id - 6643521 + 6647584 text - 1095396 + 1095412 @@ -32349,7 +27336,7 @@ 1 2 - 6643521 + 6647584 @@ -32365,22 +27352,22 @@ 1 2 - 833981 + 833985 2 3 - 146939 + 146940 3 7 - 86534 + 86537 7 - 593537 - 27942 + 593553 + 27950 @@ -32390,15 +27377,15 @@ valuebind - 13544416 + 13583194 val - 13436143 + 13474612 expr - 13544416 + 13583194 @@ -32412,12 +27399,12 @@ 1 2 - 13345847 + 13384057 2 6 - 90296 + 90554 @@ -32433,7 +27420,7 @@ 1 2 - 13544416 + 13583194 @@ -32443,19 +27430,19 @@ fieldoffsets - 1489139 + 1496815 id - 1489139 + 1496815 byteoffset - 31287 + 31370 bitoffset - 434 + 435 @@ -32469,7 +27456,7 @@ 1 2 - 1489139 + 1496815 @@ -32485,7 +27472,7 @@ 1 2 - 1489139 + 1496815 @@ -32501,37 +27488,37 @@ 1 2 - 17653 + 17700 2 3 - 2444 + 2450 3 5 - 2661 + 2668 5 12 - 2607 + 2614 12 - 34 - 2390 + 35 + 2450 - 34 - 198 - 2390 + 35 + 211 + 2396 - 209 - 5931 - 1140 + 250 + 5947 + 1089 @@ -32547,12 +27534,12 @@ 1 2 - 30309 + 30390 2 9 - 977 + 980 @@ -32576,8 +27563,8 @@ 54 - 43 - 44 + 44 + 45 54 @@ -32591,18 +27578,18 @@ 54 - 63 - 64 + 64 + 65 54 - 79 - 80 + 81 + 82 54 - 27063 - 27064 + 27127 + 27128 54 @@ -32619,7 +27606,7 @@ 12 13 - 162 + 163 13 @@ -32644,19 +27631,19 @@ bitfield - 30392 + 30341 id - 30392 + 30341 bits - 3502 + 3496 declared_bits - 3502 + 3496 @@ -32670,7 +27657,7 @@ 1 2 - 30392 + 30341 @@ -32686,7 +27673,7 @@ 1 2 - 30392 + 30341 @@ -32702,42 +27689,42 @@ 1 2 - 1000 + 998 2 3 - 750 + 749 3 4 - 250 + 249 4 5 - 500 + 499 5 7 - 250 + 249 8 9 - 250 + 249 9 11 - 250 + 249 13 143 - 250 + 249 @@ -32753,7 +27740,7 @@ 1 2 - 3502 + 3496 @@ -32769,42 +27756,42 @@ 1 2 - 1000 + 998 2 3 - 750 + 749 3 4 - 250 + 249 4 5 - 500 + 499 5 7 - 250 + 249 8 9 - 250 + 249 9 11 - 250 + 249 13 143 - 250 + 249 @@ -32820,7 +27807,7 @@ 1 2 - 3502 + 3496 @@ -32830,23 +27817,23 @@ initialisers - 2338659 + 2251036 init - 2338659 + 2251036 var - 989337 + 980972 expr - 2338659 + 2251036 location - 539154 + 516371 @@ -32860,7 +27847,7 @@ 1 2 - 2338659 + 2251036 @@ -32876,7 +27863,7 @@ 1 2 - 2338659 + 2251036 @@ -32892,7 +27879,7 @@ 1 2 - 2338659 + 2251036 @@ -32908,17 +27895,17 @@ 1 2 - 872291 + 870557 2 15 - 39495 + 37441 16 25 - 77549 + 72973 @@ -32934,17 +27921,17 @@ 1 2 - 872291 + 870557 2 15 - 39495 + 37441 16 25 - 77549 + 72973 @@ -32960,7 +27947,7 @@ 1 2 - 989328 + 980964 2 @@ -32981,7 +27968,7 @@ 1 2 - 2338659 + 2251036 @@ -32997,7 +27984,7 @@ 1 2 - 2338659 + 2251036 @@ -33013,7 +28000,7 @@ 1 2 - 2338659 + 2251036 @@ -33029,22 +28016,22 @@ 1 2 - 439236 + 414356 2 3 - 33072 + 33607 3 - 15 - 42172 + 13 + 42250 - 15 - 111796 - 24672 + 13 + 111911 + 26157 @@ -33060,17 +28047,17 @@ 1 2 - 470366 + 443658 2 - 4 - 49613 + 3 + 34516 - 4 - 12163 - 19173 + 3 + 12237 + 38196 @@ -33086,22 +28073,22 @@ 1 2 - 439236 + 414356 2 3 - 33072 + 33607 3 - 15 - 42172 + 13 + 42250 - 15 - 111796 - 24672 + 13 + 111911 + 26157 @@ -33111,26 +28098,26 @@ braced_initialisers - 74182 + 68468 init - 74182 + 68468 expr_ancestor - 1795437 + 1676032 exp - 1795437 + 1676032 ancestor - 898593 + 838833 @@ -33144,7 +28131,7 @@ 1 2 - 1795437 + 1676032 @@ -33160,17 +28147,17 @@ 1 2 - 18283 + 17067 2 3 - 869534 + 811706 3 19 - 10776 + 10059 @@ -33180,19 +28167,19 @@ exprs - 25138614 + 25210587 id - 25138614 + 25210587 kind - 1456 + 1450 location - 5896962 + 10582675 @@ -33206,7 +28193,7 @@ 1 2 - 25138614 + 25210587 @@ -33222,7 +28209,7 @@ 1 2 - 25138614 + 25210587 @@ -33237,63 +28224,73 @@ 1 - 13 - 121 + 10 + 109 - 13 - 46 - 121 + 12 + 18 + 109 - 53 - 76 - 121 + 26 + 100 + 109 - 79 - 245 - 121 + 105 + 305 + 109 - 302 - 524 - 121 + 323 + 467 + 109 - 530 - 969 - 121 + 607 + 893 + 109 - 1043 - 2109 - 121 + 906 + 1658 + 109 - 2204 - 3636 - 121 + 1781 + 2386 + 109 - 4328 - 7013 - 121 + 3390 + 4336 + 109 - 7403 - 8498 - 121 + 4809 + 5185 + 109 - 9709 - 32322 - 121 + 5187 + 22128 + 109 - 33490 - 447645 - 121 + 26432 + 50205 + 109 + + + 63936 + 144106 + 109 + + + 313148 + 313149 + 21 @@ -33308,68 +28305,73 @@ 1 - 3 - 107 + 9 + 109 - 4 + 9 15 - 121 + 109 17 - 26 - 121 + 96 + 109 - 28 - 40 - 121 + 99 + 222 + 109 - 47 - 105 - 121 + 260 + 383 + 109 - 133 - 276 - 121 + 408 + 594 + 109 - 305 - 552 - 121 + 599 + 749 + 109 - 620 - 1425 - 121 + 864 + 1774 + 109 - 1437 - 1711 - 121 + 1812 + 2545 + 109 - 1929 - 3215 - 121 + 2623 + 2919 + 109 - 3232 - 8454 - 121 + 3419 + 4913 + 109 - 11521 - 87503 - 121 + 5473 + 21165 + 109 + + + 26254 + 76840 + 109 - 155156 - 155157 - 13 + 224080 + 224081 + 21 @@ -33385,32 +28387,22 @@ 1 2 - 2750855 + 8900705 2 3 - 1390969 + 820609 3 - 4 - 522854 - - - 4 - 6 - 539333 - - - 6 - 13 - 455210 + 16 + 797199 - 13 - 144777 - 237739 + 16 + 71733 + 64161 @@ -33426,17 +28418,17 @@ 1 2 - 4271139 + 9040107 2 3 - 1230098 + 774273 3 - 30 - 395724 + 32 + 768294 @@ -33446,19 +28438,19 @@ expr_reuse - 906491 + 846206 reuse - 906491 + 846206 original - 906491 + 846206 value_category - 46 + 42 @@ -33472,7 +28464,7 @@ 1 2 - 906491 + 846206 @@ -33488,7 +28480,7 @@ 1 2 - 906491 + 846206 @@ -33504,7 +28496,7 @@ 1 2 - 906491 + 846206 @@ -33520,7 +28512,7 @@ 1 2 - 906491 + 846206 @@ -33536,12 +28528,12 @@ 58 59 - 23 + 21 39309 39310 - 23 + 21 @@ -33557,12 +28549,12 @@ 58 59 - 23 + 21 39309 39310 - 23 + 21 @@ -33572,19 +28564,19 @@ expr_types - 25138614 + 25210587 id - 25138614 + 25210587 typeid - 120596 + 214202 value_category - 56 + 43 @@ -33598,7 +28590,7 @@ 1 2 - 25138614 + 25210587 @@ -33614,7 +28606,7 @@ 1 2 - 25138614 + 25210587 @@ -33630,57 +28622,52 @@ 1 2 - 17845 + 52512 2 3 - 19220 + 35191 3 4 - 10269 + 14507 4 5 - 8080 - - - 5 - 7 - 10690 + 14529 - 7 - 11 - 11111 + 5 + 8 + 17562 - 11 - 18 - 10157 + 8 + 14 + 17386 - 18 - 33 - 9483 + 14 + 24 + 16441 - 33 - 70 - 9119 + 24 + 49 + 16067 - 70 - 233 - 9062 + 49 + 134 + 16177 - 233 - 379496 - 5555 + 134 + 441505 + 13825 @@ -33696,12 +28683,12 @@ 1 2 - 100590 + 185913 2 3 - 20005 + 28289 @@ -33715,14 +28702,14 @@ 12 - 118902 - 118903 - 28 + 153745 + 153746 + 21 - 777025 - 777026 - 28 + 993192 + 993193 + 21 @@ -33736,14 +28723,14 @@ 12 - 1298 - 1299 - 28 + 2282 + 2283 + 21 - 3713 - 3714 - 28 + 8750 + 8751 + 21 @@ -33753,26 +28740,26 @@ compound_requirement_is_noexcept - 69 + 64 expr - 69 + 64 new_allocated_type - 57992 + 46195 expr - 57992 + 46195 type_id - 34384 + 27390 @@ -33786,7 +28773,7 @@ 1 2 - 57992 + 46195 @@ -33802,17 +28789,17 @@ 1 2 - 14455 + 11514 2 3 - 18176 + 14478 3 19 - 1753 + 1396 @@ -33822,15 +28809,15 @@ new_array_allocated_type - 6932 + 6653 expr - 6932 + 6653 type_id - 2978 + 2843 @@ -33844,7 +28831,7 @@ 1 2 - 6932 + 6653 @@ -33860,22 +28847,22 @@ 1 2 - 43 + 40 2 3 - 2633 + 2510 3 5 - 224 + 219 6 15 - 77 + 73 @@ -33885,7 +28872,7 @@ aggregate_field_init - 5717380 + 5717382 aggregate @@ -33893,7 +28880,7 @@ initializer - 5717202 + 5717204 field @@ -34093,7 +29080,7 @@ 1 2 - 5717202 + 5717204 @@ -34109,7 +29096,7 @@ 1 2 - 5717024 + 5717026 2 @@ -34130,7 +29117,7 @@ 1 2 - 5717202 + 5717204 @@ -34146,7 +29133,7 @@ 1 2 - 5717202 + 5717204 @@ -35221,15 +30208,15 @@ condition_decl_bind - 437622 + 408518 expr - 437622 + 408518 decl - 437622 + 408518 @@ -35243,7 +30230,7 @@ 1 2 - 437622 + 408518 @@ -35259,7 +30246,7 @@ 1 2 - 437622 + 408518 @@ -35269,15 +30256,15 @@ typeid_bind - 60130 + 47898 expr - 60130 + 47898 type_id - 20015 + 15943 @@ -35291,7 +30278,7 @@ 1 2 - 60130 + 47898 @@ -35307,17 +30294,17 @@ 1 2 - 3720 + 2963 2 3 - 15781 + 12570 3 328 - 513 + 408 @@ -35327,15 +30314,15 @@ uuidof_bind - 28057 + 26588 expr - 28057 + 26588 type_id - 27789 + 26336 @@ -35349,7 +30336,7 @@ 1 2 - 28057 + 26588 @@ -35365,12 +30352,12 @@ 1 2 - 27565 + 26125 2 4 - 224 + 211 @@ -35380,15 +30367,15 @@ sizeof_bind - 241336 + 242027 expr - 241336 + 242027 type_id - 11178 + 11210 @@ -35402,7 +30389,7 @@ 1 2 - 241336 + 242027 @@ -35418,37 +30405,37 @@ 1 2 - 3866 + 3877 2 3 - 2775 + 2783 3 4 - 1021 + 1024 4 5 - 1136 + 1140 5 6 - 294 + 295 6 7 - 1061 + 1064 7 40 - 854 + 856 40 @@ -35511,19 +30498,23 @@ lambdas - 17748 + 19057 expr - 17748 + 19057 default_capture - 128 + 24 has_explicit_return_type - 85 + 16 + + + has_explicit_parameter_list + 16 @@ -35537,7 +30528,7 @@ 1 2 - 17748 + 19057 @@ -35553,7 +30544,23 @@ 1 2 - 17748 + 19057 + + + + + + + expr + has_explicit_parameter_list + + + 12 + + + 1 + 2 + 19057 @@ -35567,19 +30574,19 @@ 12 - 37 - 38 - 42 + 306 + 307 + 8 - 82 - 83 - 42 + 719 + 720 + 8 - 296 - 297 - 42 + 1321 + 1322 + 8 @@ -35593,14 +30600,25 @@ 12 - 1 - 2 - 42 + 2 + 3 + 24 + + + + + + default_capture + has_explicit_parameter_list + + + 12 + 2 3 - 85 + 24 @@ -35614,14 +30632,14 @@ 12 - 55 - 56 - 42 + 813 + 814 + 8 - 360 - 361 - 42 + 1533 + 1534 + 8 @@ -35634,15 +30652,89 @@ 12 + + 3 + 4 + 16 + + + + + + + has_explicit_return_type + has_explicit_parameter_list + + + 12 + + + 1 + 2 + 8 + 2 3 - 42 + 8 + + + + + + + has_explicit_parameter_list + expr + + + 12 + + + 34 + 35 + 8 + + 2312 + 2313 + 8 + + + + + + + has_explicit_parameter_list + default_capture + + + 12 + 3 4 - 42 + 16 + + + + + + + has_explicit_parameter_list + has_explicit_return_type + + + 12 + + + 1 + 2 + 8 + + + 2 + 3 + 8 @@ -35652,35 +30744,35 @@ lambda_capture - 28523 + 31966 id - 28523 + 31966 lambda - 13294 + 15491 index - 146 + 138 field - 28523 + 31966 captured_by_reference - 17 + 16 is_implicit - 17 + 16 location - 18396 + 17944 @@ -35694,7 +30786,7 @@ 1 2 - 28523 + 31966 @@ -35710,7 +30802,7 @@ 1 2 - 28523 + 31966 @@ -35726,7 +30818,7 @@ 1 2 - 28523 + 31966 @@ -35742,7 +30834,7 @@ 1 2 - 28523 + 31966 @@ -35758,7 +30850,7 @@ 1 2 - 28523 + 31966 @@ -35774,7 +30866,7 @@ 1 2 - 28523 + 31966 @@ -35790,27 +30882,27 @@ 1 2 - 6673 + 8212 2 3 - 3081 + 3541 3 4 - 1614 + 1657 4 6 - 1225 + 1259 6 18 - 699 + 820 @@ -35826,27 +30918,27 @@ 1 2 - 6673 + 8212 2 3 - 3081 + 3541 3 4 - 1614 + 1657 4 6 - 1225 + 1259 6 18 - 699 + 820 @@ -35862,27 +30954,27 @@ 1 2 - 6673 + 8212 2 3 - 3081 + 3541 3 4 - 1614 + 1657 4 6 - 1225 + 1259 6 18 - 699 + 820 @@ -35898,12 +30990,12 @@ 1 2 - 12724 + 14248 2 3 - 569 + 1242 @@ -35919,12 +31011,12 @@ 1 2 - 13268 + 15369 2 3 - 25 + 121 @@ -35940,27 +31032,27 @@ 1 2 - 7303 + 8805 2 3 - 3245 + 3696 3 4 - 1329 + 1389 4 7 - 1087 + 1291 7 18 - 328 + 308 @@ -36029,33 +31121,33 @@ 8 - 81 - 82 + 101 + 102 8 - 139 - 140 + 171 + 172 8 - 223 - 224 + 256 + 257 8 - 410 - 411 + 460 + 461 8 - 767 - 768 + 896 + 897 8 - 1540 - 1541 + 1907 + 1908 8 @@ -36125,33 +31217,33 @@ 8 - 81 - 82 + 101 + 102 8 - 139 - 140 + 171 + 172 8 - 223 - 224 + 256 + 257 8 - 410 - 411 + 460 + 461 8 - 767 - 768 + 896 + 897 8 - 1540 - 1541 + 1907 + 1908 8 @@ -36221,33 +31313,33 @@ 8 - 81 - 82 + 101 + 102 8 - 139 - 140 + 171 + 172 8 - 223 - 224 + 256 + 257 8 - 410 - 411 + 460 + 461 8 - 767 - 768 + 896 + 897 8 - 1540 - 1541 + 1907 + 1908 8 @@ -36264,12 +31356,12 @@ 1 2 - 34 + 32 2 3 - 112 + 105 @@ -36285,12 +31377,12 @@ 1 2 - 86 + 81 2 3 - 60 + 56 @@ -36359,33 +31451,33 @@ 8 - 65 - 66 + 66 + 67 8 - 98 - 99 + 100 + 101 8 - 179 - 180 + 182 + 183 8 - 347 - 348 + 354 + 355 8 - 585 - 586 + 604 + 605 8 - 933 - 934 + 979 + 980 8 @@ -36402,7 +31494,7 @@ 1 2 - 28523 + 31966 @@ -36418,7 +31510,7 @@ 1 2 - 28523 + 31966 @@ -36434,7 +31526,7 @@ 1 2 - 28523 + 31966 @@ -36450,7 +31542,7 @@ 1 2 - 28523 + 31966 @@ -36466,7 +31558,7 @@ 1 2 - 28523 + 31966 @@ -36482,7 +31574,7 @@ 1 2 - 28523 + 31966 @@ -36496,13 +31588,13 @@ 12 - 1180 - 1181 + 1457 + 1458 8 - 2124 - 2125 + 2478 + 2479 8 @@ -36517,13 +31609,13 @@ 12 - 590 - 591 + 819 + 820 8 - 1016 - 1017 + 1241 + 1242 8 @@ -36559,13 +31651,13 @@ 12 - 1180 - 1181 + 1457 + 1458 8 - 2124 - 2125 + 2478 + 2479 8 @@ -36582,7 +31674,7 @@ 2 3 - 17 + 16 @@ -36596,13 +31688,13 @@ 12 - 545 - 546 + 573 + 574 8 - 1589 - 1590 + 1639 + 1640 8 @@ -36617,13 +31709,13 @@ 12 - 827 - 828 + 1351 + 1352 8 - 2477 - 2478 + 2584 + 2585 8 @@ -36638,13 +31730,13 @@ 12 - 620 - 621 + 955 + 956 8 - 923 - 924 + 967 + 968 8 @@ -36680,13 +31772,13 @@ 12 - 827 - 828 + 1351 + 1352 8 - 2477 - 2478 + 2584 + 2585 8 @@ -36703,7 +31795,7 @@ 2 3 - 17 + 16 @@ -36717,13 +31809,13 @@ 12 - 328 - 329 + 377 + 378 8 - 1803 - 1804 + 1832 + 1833 8 @@ -36740,17 +31832,17 @@ 1 2 - 16566 + 15694 2 6 - 1398 + 1437 6 68 - 431 + 812 @@ -36766,12 +31858,17 @@ 1 2 - 17179 + 16271 2 + 13 + 1470 + + + 13 68 - 1217 + 203 @@ -36787,12 +31884,12 @@ 1 2 - 17663 + 17254 2 8 - 733 + 690 @@ -36808,17 +31905,17 @@ 1 2 - 16566 + 15694 2 6 - 1398 + 1437 6 68 - 431 + 812 @@ -36834,12 +31931,12 @@ 1 2 - 18370 + 17920 2 3 - 25 + 24 @@ -36855,7 +31952,7 @@ 1 2 - 18396 + 17944 @@ -36865,11 +31962,11 @@ fold - 1368 + 1246 expr - 1368 + 1246 operator @@ -36877,7 +31974,7 @@ is_left_fold - 42 + 21 @@ -36891,7 +31988,7 @@ 1 2 - 1368 + 1246 @@ -36907,7 +32004,7 @@ 1 2 - 1368 + 1246 @@ -36920,15 +32017,20 @@ 12 + + 1 + 2 + 42 + 2 3 - 42 + 21 - 30 - 31 - 42 + 54 + 55 + 21 @@ -36956,11 +32058,11 @@ 12 - - - 32 - 33 - 42 + + + 58 + 59 + 21 @@ -36974,9 +32076,9 @@ 12 - 2 - 3 - 42 + 4 + 5 + 21 @@ -36986,19 +32088,19 @@ stmts - 6258938 + 6368971 id - 6258938 + 6368971 kind - 172 + 162 location - 2754699 + 2684539 @@ -37012,7 +32114,7 @@ 1 2 - 6258938 + 6368971 @@ -37028,7 +32130,7 @@ 1 2 - 6258938 + 6368971 @@ -37052,93 +32154,93 @@ 8 - 418 - 419 + 430 + 431 8 - 546 - 547 + 595 + 596 8 - 827 - 828 + 1066 + 1067 8 - 1470 - 1471 + 1635 + 1636 8 - 1577 - 1578 + 1818 + 1819 8 - 1802 - 1803 + 2311 + 2312 8 - 2462 - 2463 + 2807 + 2808 8 - 3217 - 3218 + 3233 + 3234 8 - 3610 - 3611 + 3809 + 3810 8 - 4863 - 4864 + 5052 + 5053 8 - 16249 - 16250 + 16980 + 16981 8 - 16732 - 16733 + 18543 + 18544 8 - 21439 - 21440 + 22520 + 22521 8 - 68795 - 68796 + 74878 + 74879 8 - 89075 - 89076 + 95087 + 95088 8 - 112007 - 112008 + 119871 + 119872 8 - 185649 - 185650 + 200105 + 200106 8 - 194240 - 194241 + 213249 + 213250 8 @@ -37163,93 +32265,93 @@ 8 - 109 - 110 + 111 + 112 8 - 419 - 420 + 436 + 437 8 - 778 - 779 + 945 + 946 8 - 1079 - 1080 + 1155 + 1156 8 - 1311 - 1312 + 1353 + 1354 8 - 1347 - 1348 + 1388 + 1389 8 - 1388 - 1389 + 1394 + 1395 8 - 2061 - 2062 + 2197 + 2198 8 - 2309 - 2310 + 2362 + 2363 8 - 2476 - 2477 + 2509 + 2510 8 - 7043 - 7044 + 7327 + 7328 8 - 8622 - 8623 + 8943 + 8944 8 - 11206 - 11207 + 11676 + 11677 8 - 36340 - 36341 + 37583 + 37584 8 - 43405 - 43406 + 44536 + 44537 8 - 47752 - 47753 + 49039 + 49040 8 - 83834 - 83835 + 86405 + 86406 8 - 97372 - 97373 + 101101 + 101102 8 @@ -37266,17 +32368,22 @@ 1 2 - 2352912 + 2225040 2 - 4 - 239081 + 3 + 182234 - 4 - 1581 - 162705 + 3 + 10 + 202178 + + + 10 + 1789 + 75085 @@ -37292,12 +32399,12 @@ 1 2 - 2667989 + 2601582 2 10 - 86709 + 82957 @@ -37414,15 +32521,15 @@ if_initialization - 375 + 374 if_stmt - 375 + 374 init_id - 375 + 374 @@ -37436,7 +32543,7 @@ 1 2 - 375 + 374 @@ -37452,7 +32559,7 @@ 1 2 - 375 + 374 @@ -37462,15 +32569,15 @@ if_then - 987388 + 990215 if_stmt - 987388 + 990215 then_id - 987388 + 990215 @@ -37484,7 +32591,7 @@ 1 2 - 987388 + 990215 @@ -37500,7 +32607,7 @@ 1 2 - 987388 + 990215 @@ -37510,15 +32617,15 @@ if_else - 467787 + 436677 if_stmt - 467787 + 436677 else_id - 467787 + 436677 @@ -37532,7 +32639,7 @@ 1 2 - 467787 + 436677 @@ -37548,7 +32655,7 @@ 1 2 - 467787 + 436677 @@ -37606,15 +32713,15 @@ constexpr_if_then - 103934 + 106134 constexpr_if_stmt - 103934 + 106134 then_id - 103934 + 106134 @@ -37628,7 +32735,7 @@ 1 2 - 103934 + 106134 @@ -37644,7 +32751,7 @@ 1 2 - 103934 + 106134 @@ -37654,15 +32761,15 @@ constexpr_if_else - 74042 + 76166 constexpr_if_stmt - 74042 + 76166 else_id - 74042 + 76166 @@ -37676,7 +32783,7 @@ 1 2 - 74042 + 76166 @@ -37692,7 +32799,7 @@ 1 2 - 74042 + 76166 @@ -37798,15 +32905,15 @@ while_body - 39534 + 39648 while_stmt - 39534 + 39648 body_id - 39534 + 39648 @@ -37820,7 +32927,7 @@ 1 2 - 39534 + 39648 @@ -37836,7 +32943,7 @@ 1 2 - 39534 + 39648 @@ -37846,15 +32953,15 @@ do_body - 232974 + 233641 do_stmt - 232974 + 233641 body_id - 232974 + 233641 @@ -37868,7 +32975,7 @@ 1 2 - 232974 + 233641 @@ -37884,7 +32991,7 @@ 1 2 - 232974 + 233641 @@ -37942,19 +33049,19 @@ switch_case - 894840 + 835329 switch_stmt - 440777 + 411463 index - 414 + 386 case_id - 894840 + 835329 @@ -37968,17 +33075,17 @@ 1 2 - 23 + 21 2 3 - 437691 + 408582 3 19 - 3062 + 2858 @@ -37994,17 +33101,17 @@ 1 2 - 23 + 21 2 3 - 437691 + 408582 3 19 - 3062 + 2858 @@ -38020,62 +33127,62 @@ 5 6 - 161 + 150 10 11 - 23 + 21 19 20 - 23 + 21 27 28 - 23 + 21 48 49 - 23 + 21 51 52 - 23 + 21 58 59 - 23 + 21 83 84 - 23 + 21 114 115 - 23 + 21 133 134 - 23 + 21 19141 19142 - 23 + 21 19142 19143 - 23 + 21 @@ -38091,62 +33198,62 @@ 5 6 - 161 + 150 10 11 - 23 + 21 19 20 - 23 + 21 27 28 - 23 + 21 48 49 - 23 + 21 51 52 - 23 + 21 58 59 - 23 + 21 83 84 - 23 + 21 114 115 - 23 + 21 133 134 - 23 + 21 19141 19142 - 23 + 21 19142 19143 - 23 + 21 @@ -38162,7 +33269,7 @@ 1 2 - 894840 + 835329 @@ -38178,7 +33285,7 @@ 1 2 - 894840 + 835329 @@ -38188,15 +33295,15 @@ switch_body - 440777 + 411463 switch_stmt - 440777 + 411463 body_id - 440777 + 411463 @@ -38210,7 +33317,7 @@ 1 2 - 440777 + 411463 @@ -38226,7 +33333,7 @@ 1 2 - 440777 + 411463 @@ -38236,15 +33343,15 @@ for_initialization - 73036 + 73246 for_stmt - 73036 + 73246 init_id - 73036 + 73246 @@ -38258,7 +33365,7 @@ 1 2 - 73036 + 73246 @@ -38274,7 +33381,7 @@ 1 2 - 73036 + 73246 @@ -38284,15 +33391,15 @@ for_condition - 76123 + 76341 for_stmt - 76123 + 76341 condition_id - 76123 + 76341 @@ -38306,7 +33413,7 @@ 1 2 - 76123 + 76341 @@ -38322,7 +33429,7 @@ 1 2 - 76123 + 76341 @@ -38332,15 +33439,15 @@ for_update - 73177 + 73386 for_stmt - 73177 + 73386 update_id - 73177 + 73386 @@ -38354,7 +33461,7 @@ 1 2 - 73177 + 73386 @@ -38370,7 +33477,7 @@ 1 2 - 73177 + 73386 @@ -38380,15 +33487,15 @@ for_body - 84148 + 84389 for_stmt - 84148 + 84389 body_id - 84148 + 84389 @@ -38402,7 +33509,7 @@ 1 2 - 84148 + 84389 @@ -38418,7 +33525,7 @@ 1 2 - 84148 + 84389 @@ -38428,19 +33535,19 @@ stmtparents - 5523824 + 5628382 id - 5523824 + 5628382 index - 16765 + 15775 parent - 2342363 + 2381491 @@ -38454,7 +33561,7 @@ 1 2 - 5523824 + 5628382 @@ -38470,7 +33577,7 @@ 1 2 - 5523824 + 5628382 @@ -38486,52 +33593,52 @@ 1 2 - 5507 + 5182 2 3 - 1372 + 1291 3 4 - 302 + 284 4 5 - 2132 + 2006 7 8 - 1398 + 1316 8 12 - 1087 + 1023 12 29 - 1476 + 1389 29 - 38 - 1260 + 39 + 1186 - 41 - 77 - 1269 + 42 + 78 + 1194 - 77 - 195079 - 958 + 78 + 209668 + 901 @@ -38547,52 +33654,52 @@ 1 2 - 5507 + 5182 2 3 - 1372 + 1291 3 4 - 302 + 284 4 5 - 2132 + 2006 7 8 - 1398 + 1316 8 12 - 1087 + 1023 12 29 - 1476 + 1389 29 - 38 - 1260 + 39 + 1186 - 41 - 77 - 1269 + 42 + 78 + 1194 - 77 - 195079 - 958 + 78 + 209668 + 901 @@ -38608,32 +33715,32 @@ 1 2 - 1344445 + 1359016 2 3 - 507773 + 517378 3 4 - 144118 + 151519 4 6 - 151422 + 155727 6 16 - 175775 + 178871 16 1943 - 18828 + 18976 @@ -38649,32 +33756,32 @@ 1 2 - 1344445 + 1359016 2 3 - 507773 + 517378 3 4 - 144118 + 151519 4 6 - 151422 + 155727 6 16 - 175775 + 178871 16 1943 - 18828 + 18976 @@ -38684,30 +33791,30 @@ ishandler - 47389 + 43746 block - 47389 + 43746 stmt_decl_bind - 730244 + 725885 stmt - 689803 + 715316 num - 125 + 73 decl - 730175 + 725885 @@ -38721,12 +33828,12 @@ 1 2 - 667590 + 707851 2 - 32 - 22212 + 10 + 7465 @@ -38742,12 +33849,12 @@ 1 2 - 667590 + 707851 2 - 32 - 22212 + 10 + 7465 @@ -38761,53 +33868,48 @@ 12 - 1 - 2 - 52 - - - 2 - 3 + 14 + 15 8 - 3 - 5 + 15 + 16 8 - 7 - 11 + 18 + 19 8 - 11 - 15 + 21 + 22 8 - 21 - 45 + 25 + 26 8 - 86 - 121 + 60 + 61 8 - 204 - 356 + 229 + 230 8 - 1063 - 2539 + 919 + 920 8 - 5480 - 170179 + 88055 + 88056 8 @@ -38822,53 +33924,48 @@ 12 - 1 - 2 - 52 - - - 2 - 3 + 14 + 15 8 - 3 - 5 + 15 + 16 8 - 7 - 11 + 18 + 19 8 - 11 - 15 + 21 + 22 8 - 21 - 45 + 25 + 26 8 - 86 - 121 + 60 + 61 8 - 204 - 356 + 229 + 230 8 - 1063 - 2539 + 919 + 920 8 - 5480 - 170162 + 88055 + 88056 8 @@ -38885,12 +33982,7 @@ 1 2 - 730151 - - - 2 - 8 - 24 + 725885 @@ -38906,7 +33998,7 @@ 1 2 - 730175 + 725885 @@ -38916,19 +34008,19 @@ stmt_decl_entry_bind - 730244 + 725885 stmt - 689803 + 715316 num - 125 + 73 decl_entry - 730244 + 725885 @@ -38942,12 +34034,12 @@ 1 2 - 667590 + 707851 2 - 32 - 22212 + 10 + 7465 @@ -38963,12 +34055,12 @@ 1 2 - 667590 + 707851 2 - 32 - 22212 + 10 + 7465 @@ -38982,53 +34074,48 @@ 12 - 1 - 2 - 52 - - - 2 - 3 + 14 + 15 8 - 3 - 5 + 15 + 16 8 - 7 - 11 + 18 + 19 8 - 11 - 15 + 21 + 22 8 - 21 - 45 + 25 + 26 8 - 86 - 121 + 60 + 61 8 - 204 - 356 + 229 + 230 8 - 1063 - 2539 + 919 + 920 8 - 5480 - 170179 + 88055 + 88056 8 @@ -39043,53 +34130,48 @@ 12 - 1 - 2 - 52 - - - 2 - 3 + 14 + 15 8 - 3 - 5 + 15 + 16 8 - 7 - 11 + 18 + 19 8 - 11 - 15 + 21 + 22 8 - 21 - 45 + 25 + 26 8 - 86 - 121 + 60 + 61 8 - 204 - 356 + 229 + 230 8 - 1063 - 2539 + 919 + 920 8 - 5480 - 170179 + 88055 + 88056 8 @@ -39106,7 +34188,7 @@ 1 2 - 730244 + 725885 @@ -39122,7 +34204,7 @@ 1 2 - 730244 + 725885 @@ -39132,15 +34214,15 @@ blockscope - 1764517 + 1644953 block - 1764517 + 1644953 enclosing - 1509119 + 1428065 @@ -39154,7 +34236,7 @@ 1 2 - 1764517 + 1644953 @@ -39170,17 +34252,17 @@ 1 2 - 1337771 + 1295584 2 - 3 - 128699 + 4 + 117122 - 3 + 4 28 - 42649 + 15358 @@ -39190,19 +34272,19 @@ jumpinfo - 347327 + 348321 id - 347327 + 348321 str - 28866 + 28948 target - 72498 + 72706 @@ -39216,7 +34298,7 @@ 1 2 - 347327 + 348321 @@ -39232,7 +34314,7 @@ 1 2 - 347327 + 348321 @@ -39248,37 +34330,37 @@ 2 3 - 13558 + 13596 3 4 - 6041 + 6058 4 5 - 2008 + 2014 5 6 - 1883 + 1888 6 10 - 2191 + 2197 10 25 - 2183 + 2189 25 13711 - 999 + 1002 @@ -39294,17 +34376,17 @@ 1 2 - 23124 + 23190 2 3 - 3616 + 3626 3 3321 - 2124 + 2131 @@ -39325,27 +34407,27 @@ 2 3 - 36107 + 36211 3 4 - 17583 + 17633 4 5 - 7358 + 7379 5 8 - 6399 + 6418 8 2124 - 5016 + 5030 @@ -39361,7 +34443,7 @@ 1 2 - 72498 + 72706 @@ -39371,19 +34453,19 @@ preprocdirects - 5407616 + 5413336 id - 5407616 + 5413336 kind - 1375 + 1373 location - 5404364 + 5410090 @@ -39397,7 +34479,7 @@ 1 2 - 5407616 + 5413336 @@ -39413,7 +34495,7 @@ 1 2 - 5407616 + 5413336 @@ -39429,57 +34511,57 @@ 1 2 - 125 + 124 - 145 - 146 - 125 + 139 + 140 + 124 - 808 - 809 - 125 + 805 + 806 + 124 - 866 - 867 - 125 + 880 + 881 + 124 973 974 - 125 + 124 1509 1510 - 125 + 124 - 1891 - 1892 - 125 + 1883 + 1884 + 124 3256 3257 - 125 + 124 - 4714 - 4715 - 125 + 4737 + 4738 + 124 - 7089 - 7090 - 125 + 7126 + 7127 + 124 - 21984 - 21985 - 125 + 22045 + 22046 + 124 @@ -39495,57 +34577,57 @@ 1 2 - 125 + 124 - 145 - 146 - 125 + 139 + 140 + 124 - 808 - 809 - 125 + 805 + 806 + 124 - 866 - 867 - 125 + 880 + 881 + 124 973 974 - 125 + 124 1509 1510 - 125 + 124 - 1891 - 1892 - 125 + 1883 + 1884 + 124 3256 3257 - 125 + 124 - 4714 - 4715 - 125 + 4737 + 4738 + 124 - 7089 - 7090 - 125 + 7126 + 7127 + 124 - 21958 - 21959 - 125 + 22019 + 22020 + 124 @@ -39561,12 +34643,12 @@ 1 2 - 5404239 + 5409965 27 28 - 125 + 124 @@ -39582,7 +34664,7 @@ 1 2 - 5404364 + 5410090 @@ -39592,15 +34674,15 @@ preprocpair - 1141282 + 1142252 begin - 886636 + 889778 elseelifend - 1141282 + 1142252 @@ -39614,17 +34696,17 @@ 1 2 - 645622 + 650164 2 3 - 231383 + 230623 3 9 - 9630 + 8990 @@ -39640,7 +34722,7 @@ 1 2 - 1141282 + 1142252 @@ -39650,41 +34732,41 @@ preproctrue - 437752 + 439769 branch - 437752 + 439769 preprocfalse - 284664 + 285563 branch - 284664 + 285563 preproctext - 4352508 + 4356366 id - 4352508 + 4356366 head - 2954828 + 2957769 body - 1681344 + 1684909 @@ -39698,7 +34780,7 @@ 1 2 - 4352508 + 4356366 @@ -39714,7 +34796,7 @@ 1 2 - 4352508 + 4356366 @@ -39730,12 +34812,12 @@ 1 2 - 2758089 + 2758986 2 798 - 196738 + 198782 @@ -39751,12 +34833,12 @@ 1 2 - 2875157 + 2876482 2 5 - 79670 + 81286 @@ -39772,17 +34854,17 @@ 1 2 - 1532758 + 1536571 2 10 - 127698 + 127360 10 - 13579 - 20887 + 13606 + 20977 @@ -39798,17 +34880,17 @@ 1 2 - 1537010 + 1540816 2 12 - 127323 + 126986 12 - 3231 - 17009 + 3246 + 17106 @@ -39818,15 +34900,15 @@ includes - 406823 + 318734 id - 406823 + 318734 included - 74940 + 58713 @@ -39840,7 +34922,7 @@ 1 2 - 406823 + 318734 @@ -39856,37 +34938,37 @@ 1 2 - 37085 + 29055 2 3 - 12056 + 9445 3 4 - 6324 + 4955 4 6 - 6837 + 5356 6 11 - 5771 + 4522 11 47 - 5623 + 4405 47 793 - 1240 + 972 @@ -39896,15 +34978,15 @@ link_targets - 943 + 816 id - 943 + 816 binary - 943 + 816 @@ -39918,7 +35000,7 @@ 1 2 - 943 + 816 @@ -39934,7 +35016,7 @@ 1 2 - 943 + 816 @@ -39944,15 +35026,15 @@ link_parent - 38129861 + 30396619 element - 4849837 + 3865915 link_target - 427 + 340 @@ -39966,17 +35048,17 @@ 1 2 - 665798 + 530431 2 9 - 33828 + 26947 9 10 - 4150209 + 3308536 @@ -39992,52 +35074,52 @@ 3 4 - 42 + 34 - 97300 - 97301 - 42 + 97375 + 97376 + 34 - 97419 - 97420 - 42 + 97494 + 97495 + 34 - 97472 - 97473 - 42 + 97547 + 97548 + 34 - 97499 - 97500 - 42 + 97574 + 97575 + 34 - 97521 - 97522 - 42 + 97596 + 97597 + 34 - 97553 - 97554 - 42 + 97628 + 97629 + 34 - 99560 - 99561 - 42 + 99635 + 99636 + 34 - 102940 - 102941 - 42 + 103015 + 103016 + 34 - 104302 - 104303 - 42 + 104379 + 104380 + 34 diff --git a/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme new file mode 100644 index 000000000000..3c45f8b9e71e --- /dev/null +++ b/cpp/ql/lib/upgrades/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/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..a8c2176e9a5c --- /dev/null +++ b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme @@ -0,0 +1,2494 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties new file mode 100644 index 000000000000..bd639edb8f24 --- /dev/null +++ b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties @@ -0,0 +1,2 @@ +description: Support `__leave` statement +compatibility: partial diff --git a/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/locations_default.ql b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/locations_default.ql new file mode 100644 index 000000000000..7e17030fb6f3 --- /dev/null +++ b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/locations_default.ql @@ -0,0 +1,18 @@ +class LocationBase = @location_default or @location_stmt or @location_expr; + +class Location extends LocationBase { + string toString() { none() } +} + +class Container extends @container { + string toString() { none() } +} + +from Location l, Container c, int startLine, int startColumn, int endLine, int endColumn +where + locations_default(l, c, startLine, startColumn, endLine, endColumn) + or + locations_stmt(l, c, startLine, startColumn, endLine, endColumn) + or + locations_expr(l, c, startLine, startColumn, endLine, endColumn) +select l, c, startLine, startColumn, endLine, endColumn diff --git a/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/old.dbscheme b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/old.dbscheme new file mode 100644 index 000000000000..7bc12b02a436 --- /dev/null +++ b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/old.dbscheme @@ -0,0 +1,2509 @@ + +/** + * 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..e70d0b653187 --- /dev/null +++ b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/semmlecode.cpp.dbscheme @@ -0,0 +1,2475 @@ + +/** + * 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_default ; + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** 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 +); + +/** 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 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 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 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 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 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 ref, + int bodylocation: @location 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 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 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 ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location 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 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 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 ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location 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 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 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 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 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 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 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 ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location 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/7bc12b02a4363149f0727a4bce07952dbb9d98aa/upgrade.properties b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/upgrade.properties new file mode 100644 index 000000000000..347caa4decdf --- /dev/null +++ b/cpp/ql/lib/upgrades/7bc12b02a4363149f0727a4bce07952dbb9d98aa/upgrade.properties @@ -0,0 +1,5 @@ +description: Merge location tables +compatibility: full +locations_default.rel: run locations_default.qlo +locations_expr.rel: delete +locations_stmt.rel: delete diff --git a/cpp/ql/lib/upgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/old.dbscheme b/cpp/ql/lib/upgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/old.dbscheme new file mode 100644 index 000000000000..827dbc206ea5 --- /dev/null +++ b/cpp/ql/lib/upgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/old.dbscheme @@ -0,0 +1,2451 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +/** + * 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 +); + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..5491582ac851 --- /dev/null +++ b/cpp/ql/lib/upgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/semmlecode.cpp.dbscheme @@ -0,0 +1,2428 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/upgrade.properties b/cpp/ql/lib/upgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/upgrade.properties new file mode 100644 index 000000000000..495e77045ea0 --- /dev/null +++ b/cpp/ql/lib/upgrades/827dbc206ea55377e032a8a934c8903fedc50fa0/upgrade.properties @@ -0,0 +1,4 @@ +description: Remove unused external_package tables from the dbscheme +compatibility: full +external_packages.rel: delete +header_to_external_package.rel: delete diff --git a/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/old.dbscheme b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/old.dbscheme new file mode 100644 index 000000000000..9a7c3c14c107 --- /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 000000000000..af887e83a815 --- /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 000000000000..3fdb0aa5a823 --- /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/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme b/cpp/ql/lib/upgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme new file mode 100644 index 000000000000..9baef67d1ffc --- /dev/null +++ b/cpp/ql/lib/upgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme @@ -0,0 +1,2499 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/9baef67d1ffc1551429dbe1c1130815693e28218/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/9baef67d1ffc1551429dbe1c1130815693e28218/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..e38346051783 --- /dev/null +++ b/cpp/ql/lib/upgrades/9baef67d1ffc1551429dbe1c1130815693e28218/semmlecode.cpp.dbscheme @@ -0,0 +1,2506 @@ + +/** + * 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 +| 63 = @scalable_vector_count // __SVCount_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/9baef67d1ffc1551429dbe1c1130815693e28218/upgrade.properties b/cpp/ql/lib/upgrades/9baef67d1ffc1551429dbe1c1130815693e28218/upgrade.properties new file mode 100644 index 000000000000..f0abb02d32cc --- /dev/null +++ b/cpp/ql/lib/upgrades/9baef67d1ffc1551429dbe1c1130815693e28218/upgrade.properties @@ -0,0 +1,2 @@ +description: Arm scalable vector type support +compatibility: full diff --git a/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme new file mode 100644 index 000000000000..a8c2176e9a5c --- /dev/null +++ b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme @@ -0,0 +1,2494 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..9baef67d1ffc --- /dev/null +++ b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme @@ -0,0 +1,2499 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties new file mode 100644 index 000000000000..9a6e7e428a7f --- /dev/null +++ b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties @@ -0,0 +1,2 @@ +description: Add a predicate `getAnAttribute` to `Namespace` +compatibility: backwards diff --git a/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/lambdas.ql b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/lambdas.ql new file mode 100644 index 000000000000..f3891442a864 --- /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 000000000000..af887e83a815 --- /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 000000000000..3c45f8b9e71e --- /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 000000000000..9dc80bb35fcb --- /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/lib/upgrades/e38346051783182ea75822e4adf8d4c6a949bc37/old.dbscheme b/cpp/ql/lib/upgrades/e38346051783182ea75822e4adf8d4c6a949bc37/old.dbscheme new file mode 100644 index 000000000000..e38346051783 --- /dev/null +++ b/cpp/ql/lib/upgrades/e38346051783182ea75822e4adf8d4c6a949bc37/old.dbscheme @@ -0,0 +1,2506 @@ + +/** + * 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 +| 63 = @scalable_vector_count // __SVCount_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/e38346051783182ea75822e4adf8d4c6a949bc37/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/e38346051783182ea75822e4adf8d4c6a949bc37/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..7bc12b02a436 --- /dev/null +++ b/cpp/ql/lib/upgrades/e38346051783182ea75822e4adf8d4c6a949bc37/semmlecode.cpp.dbscheme @@ -0,0 +1,2509 @@ + +/** + * 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/e38346051783182ea75822e4adf8d4c6a949bc37/upgrade.properties b/cpp/ql/lib/upgrades/e38346051783182ea75822e4adf8d4c6a949bc37/upgrade.properties new file mode 100644 index 000000000000..03985f017e32 --- /dev/null +++ b/cpp/ql/lib/upgrades/e38346051783182ea75822e4adf8d4c6a949bc37/upgrade.properties @@ -0,0 +1,2 @@ +description: Support more complex 16-bit floating-point types +compatibility: full diff --git a/cpp/ql/lib/upgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/old.dbscheme b/cpp/ql/lib/upgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/old.dbscheme new file mode 100644 index 000000000000..e70d0b653187 --- /dev/null +++ b/cpp/ql/lib/upgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/old.dbscheme @@ -0,0 +1,2475 @@ + +/** + * 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_default ; + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** 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 +); + +/** 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 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 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 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 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 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 ref, + int bodylocation: @location 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 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 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 ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location 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 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 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 ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location 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 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 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 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 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 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 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 ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location 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/e70d0b653187b93d9688f21c9db46bb1cd46ab78/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..827dbc206ea5 --- /dev/null +++ b/cpp/ql/lib/upgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/semmlecode.cpp.dbscheme @@ -0,0 +1,2451 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +/** + * 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 +); + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/upgrade.properties b/cpp/ql/lib/upgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/upgrade.properties new file mode 100644 index 000000000000..6d50eaf29c76 --- /dev/null +++ b/cpp/ql/lib/upgrades/e70d0b653187b93d9688f21c9db46bb1cd46ab78/upgrade.properties @@ -0,0 +1,6 @@ +description: sync dbscheme and delete svn tables +compatibility: full +svnentries.rel: delete +svnaffectedfiles.rel: delete +svnentrymsg.rel: delete +svnchurn.rel: delete diff --git a/cpp/ql/lib/utils/test/PrettyPrintModels.ql b/cpp/ql/lib/utils/test/PrettyPrintModels.ql new file mode 100644 index 000000000000..8cc172cfbf12 --- /dev/null +++ b/cpp/ql/lib/utils/test/PrettyPrintModels.ql @@ -0,0 +1,6 @@ +/** + * @kind test-postprocess + */ + +import semmle.code.cpp.dataflow.ExternalFlow +import codeql.dataflow.test.ProvenancePathGraph::TestPostProcessing::TranslateProvenanceResults diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 4edd493015a3..7fc5b0d92bd9 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.4.3 + +### Minor Analysis Improvements + +* Added flow model for the following libraries: `madler/zlib`, `google/brotli`, `libidn/libidn2`, `libssh2/libssh2/`, `nghttp2/nghttp2`, `libuv/libuv/`, and `curl/curl`. This may result in more alerts when running queries on codebases that use these libraries. + ## 1.4.2 No user-facing changes. diff --git a/cpp/ql/src/Critical/GlobalUseBeforeInit.ql b/cpp/ql/src/Critical/GlobalUseBeforeInit.ql index e9a637bd7d73..946fc755a9fe 100644 --- a/cpp/ql/src/Critical/GlobalUseBeforeInit.ql +++ b/cpp/ql/src/Critical/GlobalUseBeforeInit.ql @@ -21,13 +21,29 @@ predicate initFunc(GlobalVariable v, Function f) { ) } +/** Holds if `v` has an initializer in function `f` that dominates `node`. */ +predicate dominatingInitInFunc(GlobalVariable v, Function f, ControlFlowNode node) { + exists(VariableAccess initAccess | + v.getAnAccess() = initAccess and + initAccess.isUsedAsLValue() and + initAccess.getEnclosingFunction() = f and + dominates(initAccess, node) + ) +} + +predicate safeAccess(VariableAccess access) { + // it is safe if the variable access is part of a `sizeof` expression + exists(SizeofExprOperator e | e.getAChild*() = access) +} + predicate useFunc(GlobalVariable v, Function f) { exists(VariableAccess access | v.getAnAccess() = access and access.isRValue() and - access.getEnclosingFunction() = f - ) and - not initFunc(v, f) + access.getEnclosingFunction() = f and + not safeAccess(access) and + not dominatingInitInFunc(v, f, access) + ) } predicate uninitialisedBefore(GlobalVariable v, Function f) { @@ -38,12 +54,14 @@ predicate uninitialisedBefore(GlobalVariable v, Function f) { exists(Call call, Function g | uninitialisedBefore(v, g) and call.getEnclosingFunction() = g and - (not functionInitialises(f, v) or locallyUninitialisedAt(v, call)) and + (not functionInitialises(g, v) or locallyUninitialisedAt(v, call)) and resolvedCall(call, f) ) } predicate functionInitialises(Function f, GlobalVariable v) { + initFunc(v, f) + or exists(Call call | call.getEnclosingFunction() = f and initialisedBy(v, call) @@ -60,7 +78,8 @@ predicate locallyUninitialisedAt(GlobalVariable v, Call call) { exists(Call mid | locallyUninitialisedAt(v, mid) and not initialisedBy(v, mid) and callPair(mid, call) ) - ) + ) and + not dominatingInitInFunc(v, call.getEnclosingFunction(), call) } predicate initialisedBy(GlobalVariable v, Call call) { diff --git a/cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql b/cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql index d1645007a321..23240d385adc 100644 --- a/cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql +++ b/cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql @@ -48,6 +48,8 @@ module CastToPointerArithFlowConfig implements DataFlow::StateConfigSig { predicate isBarrierIn(DataFlow::Node node) { isSource(node, _) } predicate isBarrierOut(DataFlow::Node node) { isSink(node, _) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/cpp/ql/src/Likely Bugs/Memory Management/NtohlArrayNoBound.qll b/cpp/ql/src/Likely Bugs/Memory Management/NtohlArrayNoBound.qll index ecb60d113d86..40c0f2173d90 100644 --- a/cpp/ql/src/Likely Bugs/Memory Management/NtohlArrayNoBound.qll +++ b/cpp/ql/src/Likely Bugs/Memory Management/NtohlArrayNoBound.qll @@ -141,6 +141,8 @@ private module NetworkToBufferSizeConfig implements DataFlow::ConfigSig { gc.controls(node.asExpr().getBasicBlock(), _) ) } + + predicate observeDiffInformedIncrementalMode() { any() } } module NetworkToBufferSizeFlow = DataFlow::Global; diff --git a/cpp/ql/src/Metrics/Dependencies/ExternalDependencies.qll b/cpp/ql/src/Metrics/Dependencies/ExternalDependencies.qll index fed054262e69..16a8b22d168a 100644 --- a/cpp/ql/src/Metrics/Dependencies/ExternalDependencies.qll +++ b/cpp/ql/src/Metrics/Dependencies/ExternalDependencies.qll @@ -26,12 +26,6 @@ private newtype LibraryT = LibraryTElement(LibraryElement lib, string name, string version) { lib.getName() = name and lib.getVersion() = version - } or - LibraryTExternalPackage(@external_package ep, string name, string version) { - exists(string package_name | - external_packages(ep, _, package_name, version) and - name = package_name - ) } /** @@ -41,10 +35,7 @@ class Library extends LibraryT { string name; string version; - Library() { - this = LibraryTElement(_, name, version) or - this = LibraryTExternalPackage(_, name, version) - } + Library() { this = LibraryTElement(_, name, version) } string getName() { result = name } @@ -63,11 +54,6 @@ class Library extends LibraryT { this = LibraryTElement(lib, _, _) and result = lib.getAFile() ) - or - exists(@external_package ep | - this = LibraryTExternalPackage(ep, _, _) and - header_to_external_package(unresolveElement(result), ep) - ) } } diff --git a/cpp/ql/src/Security/CWE/CWE-089/SqlTainted.ql b/cpp/ql/src/Security/CWE/CWE-089/SqlTainted.ql index 2ea1cb024658..0ea4ce2e95f4 100644 --- a/cpp/ql/src/Security/CWE/CWE-089/SqlTainted.ql +++ b/cpp/ql/src/Security/CWE/CWE-089/SqlTainted.ql @@ -38,6 +38,9 @@ module SqlTaintedConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node node) { exists(SqlLikeFunction runSql | runSql.outermostWrapperFunctionCall(asSinkExpr(node), _)) + or + // sink defined using models-as-data + sinkNode(node, "sql-injection") } predicate isBarrier(DataFlow::Node node) { @@ -56,13 +59,21 @@ module SqlTaintedConfig implements DataFlow::ConfigSig { module SqlTainted = TaintTracking::Global; from - SqlLikeFunction runSql, Expr taintedArg, FlowSource taintSource, SqlTainted::PathNode sourceNode, - SqlTainted::PathNode sinkNode, string callChain + Expr taintedArg, FlowSource taintSource, SqlTainted::PathNode sourceNode, + SqlTainted::PathNode sinkNode, string extraText where - runSql.outermostWrapperFunctionCall(taintedArg, callChain) and + ( + exists(SqlLikeFunction runSql, string callChain | + runSql.outermostWrapperFunctionCall(taintedArg, callChain) and + extraText = " and then passed to " + callChain + ) + or + sinkNode(sinkNode.getNode(), "sql-injection") and + extraText = "" + ) and SqlTainted::flowPath(sourceNode, sinkNode) and taintedArg = asSinkExpr(sinkNode.getNode()) and taintSource = sourceNode.getNode() select taintedArg, sourceNode, sinkNode, - "This argument to a SQL query function is derived from $@ and then passed to " + callChain + ".", - taintSource, "user input (" + taintSource.getSourceType() + ")" + "This argument to a SQL query function is derived from $@" + extraText + ".", taintSource, + "user input (" + taintSource.getSourceType() + ")" diff --git a/cpp/ql/src/Security/CWE/CWE-114/UncontrolledProcessOperation.ql b/cpp/ql/src/Security/CWE/CWE-114/UncontrolledProcessOperation.ql index e5fd1a94f181..aedb21da5167 100644 --- a/cpp/ql/src/Security/CWE/CWE-114/UncontrolledProcessOperation.ql +++ b/cpp/ql/src/Security/CWE/CWE-114/UncontrolledProcessOperation.ql @@ -39,6 +39,8 @@ module Config implements DataFlow::ConfigSig { or node.asCertainDefinition().getUnspecifiedType() instanceof ArithmeticType } + + predicate observeDiffInformedIncrementalMode() { any() } } module Flow = TaintTracking::Global; diff --git a/cpp/ql/src/Security/CWE/CWE-129/ImproperArrayIndexValidation.ql b/cpp/ql/src/Security/CWE/CWE-129/ImproperArrayIndexValidation.ql index 3fd2be384a98..463d6e583bd3 100644 --- a/cpp/ql/src/Security/CWE/CWE-129/ImproperArrayIndexValidation.ql +++ b/cpp/ql/src/Security/CWE/CWE-129/ImproperArrayIndexValidation.ql @@ -69,6 +69,8 @@ module ImproperArrayIndexValidationConfig implements DataFlow::ConfigSig { not offsetIsAlwaysInBounds(arrayExpr, offsetExpr) ) } + + predicate observeDiffInformedIncrementalMode() { any() } } module ImproperArrayIndexValidation = TaintTracking::Global; diff --git a/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql b/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql index 04b4fe45fcfa..37e3fa0c49f8 100644 --- a/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql +++ b/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql @@ -44,6 +44,8 @@ module Config implements DataFlow::ConfigSig { or isArithmeticNonCharType(node.asCertainDefinition().getUnspecifiedType()) } + + predicate observeDiffInformedIncrementalMode() { any() } } module Flow = TaintTracking::Global; diff --git a/cpp/ql/src/Security/CWE/CWE-190/IntegerOverflowTainted.ql b/cpp/ql/src/Security/CWE/CWE-190/IntegerOverflowTainted.ql index 8e6bbefbaace..6ff06d355b9b 100644 --- a/cpp/ql/src/Security/CWE/CWE-190/IntegerOverflowTainted.ql +++ b/cpp/ql/src/Security/CWE/CWE-190/IntegerOverflowTainted.ql @@ -94,6 +94,8 @@ module Config implements DataFlow::ConfigSig { not iTo instanceof PointerArithmeticInstruction ) } + + predicate observeDiffInformedIncrementalMode() { any() } } module Flow = TaintTracking::Global; diff --git a/cpp/ql/src/Security/CWE/CWE-497/ExposedSystemData.ql b/cpp/ql/src/Security/CWE/CWE-497/ExposedSystemData.ql index 5a6b50675e80..121595e61b0b 100644 --- a/cpp/ql/src/Security/CWE/CWE-497/ExposedSystemData.ql +++ b/cpp/ql/src/Security/CWE/CWE-497/ExposedSystemData.ql @@ -34,6 +34,8 @@ module ExposedSystemDataConfig implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node node) { node.asIndirectArgument() = any(MemsetFunction func).getACallToThisFunction().getAnArgument() } + + predicate observeDiffInformedIncrementalMode() { any() } } module ExposedSystemData = TaintTracking::Global; diff --git a/cpp/ql/src/Security/CWE/CWE-497/PotentiallyExposedSystemData.ql b/cpp/ql/src/Security/CWE/CWE-497/PotentiallyExposedSystemData.ql index f3c9ca189b94..2a22f122ca51 100644 --- a/cpp/ql/src/Security/CWE/CWE-497/PotentiallyExposedSystemData.ql +++ b/cpp/ql/src/Security/CWE/CWE-497/PotentiallyExposedSystemData.ql @@ -54,6 +54,8 @@ module PotentiallyExposedSystemDataConfig implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node node) { node.asIndirectArgument() = any(MemsetFunction func).getACallToThisFunction().getAnArgument() } + + predicate observeDiffInformedIncrementalMode() { any() } } module PotentiallyExposedSystemData = TaintTracking::Global; diff --git a/cpp/ql/src/Security/CWE/CWE-611/XXE.ql b/cpp/ql/src/Security/CWE/CWE-611/XXE.ql index 56a74d2f70b5..ba09e797491b 100644 --- a/cpp/ql/src/Security/CWE/CWE-611/XXE.ql +++ b/cpp/ql/src/Security/CWE/CWE-611/XXE.ql @@ -45,6 +45,8 @@ module XxeConfig implements DataFlow::StateConfigSig { } predicate neverSkip(DataFlow::Node node) { none() } + + predicate observeDiffInformedIncrementalMode() { any() } } module XxeFlow = DataFlow::GlobalWithState; diff --git a/cpp/ql/src/change-notes/2025-06-20-sql-injection-models.md b/cpp/ql/src/change-notes/2025-06-20-sql-injection-models.md new file mode 100644 index 000000000000..ebb517d0a395 --- /dev/null +++ b/cpp/ql/src/change-notes/2025-06-20-sql-injection-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The query `cpp/sql-injection` now can be extended using the `sql-injection` Models as Data (MaD) sink kind. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2025-07-01-global-vars-ubi-query-fixes.md.md b/cpp/ql/src/change-notes/2025-07-01-global-vars-ubi-query-fixes.md.md new file mode 100644 index 000000000000..b5ab2362bf43 --- /dev/null +++ b/cpp/ql/src/change-notes/2025-07-01-global-vars-ubi-query-fixes.md.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Fixed a number of false positives and false negatives in `cpp/global-use-before-init`. Note that this query is not part of any of the default query suites. diff --git a/cpp/ql/src/change-notes/released/1.4.3.md b/cpp/ql/src/change-notes/released/1.4.3.md new file mode 100644 index 000000000000..2280196429bd --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.4.3.md @@ -0,0 +1,5 @@ +## 1.4.3 + +### Minor Analysis Improvements + +* Added flow model for the following libraries: `madler/zlib`, `google/brotli`, `libidn/libidn2`, `libssh2/libssh2/`, `nghttp2/nghttp2`, `libuv/libuv/`, and `curl/curl`. This may result in more alerts when running queries on codebases that use these libraries. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index a76cacdf7997..08f88b689fb6 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.2 +lastReleaseVersion: 1.4.3 diff --git a/cpp/ql/src/codeql-suites/cpp-code-quality-extended.qls b/cpp/ql/src/codeql-suites/cpp-code-quality-extended.qls new file mode 100644 index 000000000000..1ee85cae856c --- /dev/null +++ b/cpp/ql/src/codeql-suites/cpp-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql b/cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql index d5b7b97c136f..1d032a63ba34 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql @@ -48,6 +48,10 @@ module WordexpTaintConfig implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node node) { node.asExpr().getUnspecifiedType() instanceof IntegralType } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node source) { none() } } module WordexpTaint = TaintTracking::Global; diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-190/AllocMultiplicationOverflow.ql b/cpp/ql/src/experimental/Security/CWE/CWE-190/AllocMultiplicationOverflow.ql index 00cf017297ff..397a0325d777 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-190/AllocMultiplicationOverflow.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-190/AllocMultiplicationOverflow.ql @@ -30,6 +30,8 @@ module MultToAllocConfig implements DataFlow::ConfigSig { // something that affects an allocation size node.asExpr() = any(HeuristicAllocationExpr ae).getSizeExpr().getAChild*() } + + predicate observeDiffInformedIncrementalMode() { any() } } module MultToAlloc = DataFlow::Global; diff --git a/cpp/ql/src/jsf/4.07 Header Files/AV Rule 35.ql b/cpp/ql/src/jsf/4.07 Header Files/AV Rule 35.ql index 704c5baa0672..59a6838c23e3 100644 --- a/cpp/ql/src/jsf/4.07 Header Files/AV Rule 35.ql +++ b/cpp/ql/src/jsf/4.07 Header Files/AV Rule 35.ql @@ -37,7 +37,7 @@ abstract class MaybePreprocessorDirective extends TMaybePreprocessorDirective { class NoPreprocessorDirective extends TNoPreprocessorDirective, MaybePreprocessorDirective { override string toString() { result = "" } - override Location getLocation() { result instanceof UnknownDefaultLocation } + override Location getLocation() { result instanceof UnknownLocation } } class SomePreprocessorDirective extends TSomePreprocessorDirective, MaybePreprocessorDirective { diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 52f0f08a4c55..ade2daeb369a 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.4.2 +version: 1.4.4-dev groups: - cpp - queries diff --git a/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected b/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected new file mode 100644 index 000000000000..27be8e5cfba5 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected @@ -0,0 +1,164 @@ +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Mode | openssl_basic.c:23:37:23:51 | ModeOfOperation | +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Padding | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | +| openssl_basic.c:31:49:31:51 | Key | Source | openssl_basic.c:179:43:179:76 | Constant | +| openssl_basic.c:31:54:31:55 | Nonce | Source | openssl_basic.c:180:42:180:59 | Constant | +| openssl_basic.c:35:54:35:62 | Message | Source | openssl_basic.c:181:49:181:87 | Constant | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Algorithm | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Input | openssl_basic.c:35:54:35:62 | Message | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Key | openssl_basic.c:31:49:31:51 | Key | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Nonce | openssl_basic.c:31:54:31:55 | Nonce | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Output | openssl_basic.c:35:36:35:45 | KeyOperationOutput | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Output | openssl_basic.c:40:38:40:53 | KeyOperationOutput | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Mode | openssl_basic.c:69:33:69:47 | ModeOfOperation | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Padding | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | +| openssl_basic.c:77:45:77:47 | Key | Source | openssl_basic.c:179:43:179:76 | Constant | +| openssl_basic.c:77:50:77:51 | Nonce | Source | openssl_basic.c:180:42:180:59 | Constant | +| openssl_basic.c:81:49:81:58 | Message | Source | openssl_basic.c:81:49:81:58 | Message | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Algorithm | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Input | openssl_basic.c:81:49:81:58 | Message | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Key | openssl_basic.c:77:45:77:47 | Key | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Nonce | openssl_basic.c:77:50:77:51 | Nonce | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Output | openssl_basic.c:81:32:81:40 | KeyOperationOutput | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Output | openssl_basic.c:90:36:90:50 | KeyOperationOutput | +| openssl_basic.c:120:37:120:43 | Message | Source | openssl_basic.c:181:49:181:87 | Constant | +| openssl_basic.c:124:13:124:30 | HashOperation | Algorithm | openssl_basic.c:116:38:116:47 | HashAlgorithm | +| openssl_basic.c:124:13:124:30 | HashOperation | Digest | openssl_basic.c:124:39:124:44 | Digest | +| openssl_basic.c:124:13:124:30 | HashOperation | Message | openssl_basic.c:120:37:120:43 | Message | +| openssl_basic.c:124:39:124:44 | Digest | Source | openssl_basic.c:124:39:124:44 | Digest | +| openssl_basic.c:144:13:144:22 | HashOperation | Algorithm | openssl_basic.c:144:67:144:73 | HashAlgorithm | +| openssl_basic.c:144:13:144:22 | HashOperation | Digest | openssl_basic.c:144:46:144:51 | Digest | +| openssl_basic.c:144:13:144:22 | HashOperation | Message | openssl_basic.c:144:24:144:30 | Message | +| openssl_basic.c:144:24:144:30 | Message | Source | openssl_basic.c:181:49:181:87 | Constant | +| openssl_basic.c:144:46:144:51 | Digest | Source | openssl_basic.c:144:46:144:51 | Digest | +| openssl_basic.c:155:22:155:41 | Key | Algorithm | openssl_basic.c:155:22:155:41 | Key | +| openssl_basic.c:155:22:155:41 | KeyGeneration | Algorithm | openssl_basic.c:155:22:155:41 | KeyGeneration | +| openssl_basic.c:155:22:155:41 | KeyGeneration | KeyInput | openssl_basic.c:155:64:155:66 | Key | +| openssl_basic.c:155:22:155:41 | KeyGeneration | Output | openssl_basic.c:155:22:155:41 | Key | +| openssl_basic.c:155:43:155:55 | MACAlgorithm | H | openssl_basic.c:160:39:160:48 | HashAlgorithm | +| openssl_basic.c:155:64:155:66 | Key | Source | openssl_basic.c:179:43:179:76 | Constant | +| openssl_basic.c:160:59:160:62 | Key | Source | openssl_basic.c:155:22:155:41 | Key | +| openssl_basic.c:163:35:163:41 | Message | Source | openssl_basic.c:181:49:181:87 | Constant | +| openssl_basic.c:167:9:167:27 | SignOperation | Algorithm | openssl_basic.c:167:9:167:27 | SignOperation | +| openssl_basic.c:167:9:167:27 | SignOperation | HashAlgorithm | openssl_basic.c:160:39:160:48 | HashAlgorithm | +| openssl_basic.c:167:9:167:27 | SignOperation | Input | openssl_basic.c:163:35:163:41 | Message | +| openssl_basic.c:167:9:167:27 | SignOperation | Key | openssl_basic.c:160:59:160:62 | Key | +| openssl_basic.c:167:9:167:27 | SignOperation | Output | openssl_basic.c:167:34:167:36 | SignatureOutput | +| openssl_pkey.c:21:10:21:28 | KeyGeneration | Algorithm | openssl_pkey.c:21:10:21:28 | KeyGeneration | +| openssl_pkey.c:21:10:21:28 | KeyGeneration | Output | openssl_pkey.c:21:30:21:32 | Key | +| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | Mode | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | +| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | Padding | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | +| openssl_pkey.c:21:30:21:32 | Key | Algorithm | openssl_pkey.c:21:30:21:32 | Key | +| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | Mode | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | +| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | Padding | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | +| openssl_pkey.c:55:9:55:23 | KeyGeneration | Algorithm | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | +| openssl_pkey.c:55:9:55:23 | KeyGeneration | Output | openssl_pkey.c:55:30:55:34 | Key | +| openssl_pkey.c:55:30:55:34 | Key | Algorithm | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | +| openssl_pkey.c:60:28:60:31 | Key | Source | openssl_pkey.c:55:30:55:34 | Key | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | Algorithm | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | Input | openssl_pkey.c:64:58:64:66 | Message | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | Key | openssl_pkey.c:60:28:60:31 | Key | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | Nonce | openssl_pkey.c:64:9:64:24 | EncryptOperation | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | Output | openssl_pkey.c:64:31:64:39 | KeyOperationOutput | +| openssl_pkey.c:64:58:64:66 | Message | Source | openssl_pkey.c:45:49:45:65 | Constant | +| openssl_signature.c:22:34:22:40 | Message | Source | openssl_signature.c:602:37:602:77 | Constant | +| openssl_signature.c:22:34:22:40 | Message | Source | openssl_signature.c:685:37:685:77 | Constant | +| openssl_signature.c:22:34:22:40 | Message | Source | openssl_signature.c:741:37:741:77 | Constant | +| openssl_signature.c:23:9:23:26 | HashOperation | Algorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:23:9:23:26 | HashOperation | Algorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:23:9:23:26 | HashOperation | Digest | openssl_signature.c:23:36:23:41 | Digest | +| openssl_signature.c:23:9:23:26 | HashOperation | Message | openssl_signature.c:22:34:22:40 | Message | +| openssl_signature.c:23:36:23:41 | Digest | Source | openssl_signature.c:23:36:23:41 | Digest | +| openssl_signature.c:70:32:70:38 | Message | Source | openssl_signature.c:602:37:602:77 | Constant | +| openssl_signature.c:75:28:75:36 | Message | Source | openssl_signature.c:75:28:75:36 | Message | +| openssl_signature.c:80:9:80:21 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:80:9:80:21 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:80:9:80:21 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:80:9:80:21 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:80:9:80:21 | SignOperation | Input | openssl_signature.c:70:32:70:38 | Message | +| openssl_signature.c:80:9:80:21 | SignOperation | Input | openssl_signature.c:75:28:75:36 | Message | +| openssl_signature.c:80:9:80:21 | SignOperation | Key | openssl_signature.c:80:53:80:56 | Key | +| openssl_signature.c:80:9:80:21 | SignOperation | Output | openssl_signature.c:80:31:80:40 | SignatureOutput | +| openssl_signature.c:80:53:80:56 | Key | Source | openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:80:53:80:56 | Key | Source | openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:133:52:133:55 | Key | Source | openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:133:52:133:55 | Key | Source | openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:134:38:134:44 | Message | Source | openssl_signature.c:602:37:602:77 | Constant | +| openssl_signature.c:135:9:135:27 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:135:9:135:27 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:135:9:135:27 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:135:9:135:27 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:135:9:135:27 | SignOperation | Input | openssl_signature.c:134:38:134:44 | Message | +| openssl_signature.c:135:9:135:27 | SignOperation | Key | openssl_signature.c:133:52:133:55 | Key | +| openssl_signature.c:135:9:135:27 | SignOperation | Output | openssl_signature.c:135:37:135:40 | SignatureOutput | +| openssl_signature.c:142:9:142:27 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:142:9:142:27 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:142:9:142:27 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:142:9:142:27 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:142:9:142:27 | SignOperation | Input | openssl_signature.c:134:38:134:44 | Message | +| openssl_signature.c:142:9:142:27 | SignOperation | Key | openssl_signature.c:133:52:133:55 | Key | +| openssl_signature.c:142:9:142:27 | SignOperation | Output | openssl_signature.c:142:37:142:46 | SignatureOutput | +| openssl_signature.c:190:57:190:60 | Key | Source | openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:190:57:190:60 | Key | Source | openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:196:38:196:44 | Message | Source | openssl_signature.c:602:37:602:77 | Constant | +| openssl_signature.c:197:9:197:27 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:197:9:197:27 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:197:9:197:27 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:197:9:197:27 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:197:9:197:27 | SignOperation | Input | openssl_signature.c:196:38:196:44 | Message | +| openssl_signature.c:197:9:197:27 | SignOperation | Key | openssl_signature.c:190:57:190:60 | Key | +| openssl_signature.c:197:9:197:27 | SignOperation | Output | openssl_signature.c:197:37:197:40 | SignatureOutput | +| openssl_signature.c:204:9:204:27 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:204:9:204:27 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:204:9:204:27 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:204:9:204:27 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:204:9:204:27 | SignOperation | Input | openssl_signature.c:196:38:196:44 | Message | +| openssl_signature.c:204:9:204:27 | SignOperation | Key | openssl_signature.c:190:57:190:60 | Key | +| openssl_signature.c:204:9:204:27 | SignOperation | Output | openssl_signature.c:204:37:204:46 | SignatureOutput | +| openssl_signature.c:260:39:260:42 | Key | Source | openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:260:39:260:42 | Key | Source | openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:263:9:263:21 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:263:9:263:21 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:263:9:263:21 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:263:9:263:21 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:263:9:263:21 | SignOperation | Input | openssl_signature.c:263:54:263:59 | Message | +| openssl_signature.c:263:9:263:21 | SignOperation | Key | openssl_signature.c:260:39:260:42 | Key | +| openssl_signature.c:263:9:263:21 | SignOperation | Output | openssl_signature.c:263:33:263:36 | SignatureOutput | +| openssl_signature.c:263:54:263:59 | Message | Source | openssl_signature.c:263:54:263:59 | Message | +| openssl_signature.c:270:9:270:21 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:270:9:270:21 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:270:9:270:21 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:270:9:270:21 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:270:9:270:21 | SignOperation | Input | openssl_signature.c:270:60:270:65 | Message | +| openssl_signature.c:270:9:270:21 | SignOperation | Key | openssl_signature.c:260:39:260:42 | Key | +| openssl_signature.c:270:9:270:21 | SignOperation | Output | openssl_signature.c:270:33:270:42 | SignatureOutput | +| openssl_signature.c:270:60:270:65 | Message | Source | openssl_signature.c:270:60:270:65 | Message | +| openssl_signature.c:321:39:321:42 | Key | Source | openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:321:39:321:42 | Key | Source | openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:326:48:326:54 | Message | Source | openssl_signature.c:602:37:602:77 | Constant | +| openssl_signature.c:327:9:327:35 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:327:9:327:35 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:327:9:327:35 | SignOperation | Algorithm | openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | +| openssl_signature.c:327:9:327:35 | SignOperation | Algorithm | openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | +| openssl_signature.c:327:9:327:35 | SignOperation | HashAlgorithm | openssl_signature.c:327:9:327:35 | SignOperation | +| openssl_signature.c:327:9:327:35 | SignOperation | Input | openssl_signature.c:326:48:326:54 | Message | +| openssl_signature.c:327:9:327:35 | SignOperation | Key | openssl_signature.c:321:39:321:42 | Key | +| openssl_signature.c:327:9:327:35 | SignOperation | Output | openssl_signature.c:327:47:327:50 | SignatureOutput | +| openssl_signature.c:334:9:334:35 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:334:9:334:35 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:334:9:334:35 | SignOperation | Algorithm | openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | +| openssl_signature.c:334:9:334:35 | SignOperation | Algorithm | openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | +| openssl_signature.c:334:9:334:35 | SignOperation | HashAlgorithm | openssl_signature.c:334:9:334:35 | SignOperation | +| openssl_signature.c:334:9:334:35 | SignOperation | Input | openssl_signature.c:326:48:326:54 | Message | +| openssl_signature.c:334:9:334:35 | SignOperation | Key | openssl_signature.c:321:39:321:42 | Key | +| openssl_signature.c:334:9:334:35 | SignOperation | Output | openssl_signature.c:334:47:334:56 | SignatureOutput | +| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | Mode | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | Padding | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:548:9:548:23 | KeyGeneration | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:548:9:548:23 | KeyGeneration | Output | openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:548:34:548:37 | Key | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:575:32:575:37 | Key | Source | openssl_signature.c:575:32:575:37 | Key | +| openssl_signature.c:578:9:578:23 | KeyGeneration | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:578:9:578:23 | KeyGeneration | KeyInput | openssl_signature.c:575:32:575:37 | Key | +| openssl_signature.c:578:9:578:23 | KeyGeneration | Output | openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:578:34:578:37 | Key | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | Padding | openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | diff --git a/cpp/ql/test/experimental/library-tests/quantum/node_edges.ql b/cpp/ql/test/experimental/library-tests/quantum/node_edges.ql new file mode 100644 index 000000000000..6d6507a91bfc --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/node_edges.ql @@ -0,0 +1,5 @@ +import cpp +import experimental.quantum.Language + +from Crypto::NodeBase n, string key +select n, key, n.getChild(key) diff --git a/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected b/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected new file mode 100644 index 000000000000..52a7c61502bd --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected @@ -0,0 +1,86 @@ +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | KeySize | 256 | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Name | AES | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | RawName | EVP_aes_256_gcm | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Structure | Block | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | +| openssl_basic.c:23:37:23:51 | ModeOfOperation | Name | GCM | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | +| openssl_basic.c:23:37:23:51 | ModeOfOperation | RawName | EVP_aes_256_gcm | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | +| openssl_basic.c:31:49:31:51 | Key | KeyType | Unknown | openssl_basic.c:31:49:31:51 | openssl_basic.c:31:49:31:51 | +| openssl_basic.c:40:13:40:31 | EncryptOperation | KeyOperationSubtype | Encrypt | openssl_basic.c:40:13:40:31 | openssl_basic.c:40:13:40:31 | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | KeySize | 256 | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Name | AES | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | RawName | EVP_aes_256_gcm | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Structure | Block | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | +| openssl_basic.c:69:33:69:47 | ModeOfOperation | Name | GCM | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | +| openssl_basic.c:69:33:69:47 | ModeOfOperation | RawName | EVP_aes_256_gcm | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | +| openssl_basic.c:77:45:77:47 | Key | KeyType | Unknown | openssl_basic.c:77:45:77:47 | openssl_basic.c:77:45:77:47 | +| openssl_basic.c:90:11:90:29 | DecryptOperation | KeyOperationSubtype | Decrypt | openssl_basic.c:90:11:90:29 | openssl_basic.c:90:11:90:29 | +| openssl_basic.c:116:38:116:47 | HashAlgorithm | DigestSize | 256 | openssl_basic.c:116:38:116:47 | openssl_basic.c:116:38:116:47 | +| openssl_basic.c:116:38:116:47 | HashAlgorithm | Name | SHA2 | openssl_basic.c:116:38:116:47 | openssl_basic.c:116:38:116:47 | +| openssl_basic.c:116:38:116:47 | HashAlgorithm | RawName | EVP_sha256 | openssl_basic.c:116:38:116:47 | openssl_basic.c:116:38:116:47 | +| openssl_basic.c:144:67:144:73 | HashAlgorithm | DigestSize | 128 | openssl_basic.c:144:67:144:73 | openssl_basic.c:144:67:144:73 | +| openssl_basic.c:144:67:144:73 | HashAlgorithm | Name | MD5 | openssl_basic.c:144:67:144:73 | openssl_basic.c:144:67:144:73 | +| openssl_basic.c:144:67:144:73 | HashAlgorithm | RawName | EVP_md5 | openssl_basic.c:144:67:144:73 | openssl_basic.c:144:67:144:73 | +| openssl_basic.c:155:22:155:41 | Key | KeyType | Asymmetric | openssl_basic.c:155:22:155:41 | openssl_basic.c:155:22:155:41 | +| openssl_basic.c:155:43:155:55 | MACAlgorithm | Name | HMAC | openssl_basic.c:155:43:155:55 | openssl_basic.c:155:43:155:55 | +| openssl_basic.c:155:43:155:55 | MACAlgorithm | RawName | 855 | openssl_basic.c:155:43:155:55 | openssl_basic.c:155:43:155:55 | +| openssl_basic.c:155:64:155:66 | Key | KeyType | Unknown | openssl_basic.c:155:64:155:66 | openssl_basic.c:155:64:155:66 | +| openssl_basic.c:160:39:160:48 | HashAlgorithm | DigestSize | 256 | openssl_basic.c:160:39:160:48 | openssl_basic.c:160:39:160:48 | +| openssl_basic.c:160:39:160:48 | HashAlgorithm | Name | SHA2 | openssl_basic.c:160:39:160:48 | openssl_basic.c:160:39:160:48 | +| openssl_basic.c:160:39:160:48 | HashAlgorithm | RawName | EVP_sha256 | openssl_basic.c:160:39:160:48 | openssl_basic.c:160:39:160:48 | +| openssl_basic.c:160:59:160:62 | Key | KeyType | Unknown | openssl_basic.c:160:59:160:62 | openssl_basic.c:160:59:160:62 | +| openssl_basic.c:167:9:167:27 | SignOperation | KeyOperationSubtype | Sign | openssl_basic.c:167:9:167:27 | openssl_basic.c:167:9:167:27 | +| openssl_basic.c:179:43:179:76 | Constant | Description | 01234567890123456789012345678901 | openssl_basic.c:179:43:179:76 | openssl_basic.c:179:43:179:76 | +| openssl_basic.c:180:42:180:59 | Constant | Description | 0123456789012345 | openssl_basic.c:180:42:180:59 | openssl_basic.c:180:42:180:59 | +| openssl_basic.c:181:49:181:87 | Constant | Description | This is a test message for encryption | openssl_basic.c:181:49:181:87 | openssl_basic.c:181:49:181:87 | +| openssl_basic.c:218:32:218:33 | Constant | Description | 32 | openssl_basic.c:218:32:218:33 | openssl_basic.c:218:32:218:33 | +| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | Name | RSA | openssl_pkey.c:21:10:21:28 | openssl_pkey.c:21:10:21:28 | +| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | RawName | RSA_generate_key_ex | openssl_pkey.c:21:10:21:28 | openssl_pkey.c:21:10:21:28 | +| openssl_pkey.c:21:30:21:32 | Key | KeyType | Asymmetric | openssl_pkey.c:21:30:21:32 | openssl_pkey.c:21:30:21:32 | +| openssl_pkey.c:45:49:45:65 | Constant | Description | Hello, OpenSSL! | openssl_pkey.c:45:49:45:65 | openssl_pkey.c:45:49:45:65 | +| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | Name | RSA | openssl_pkey.c:50:31:50:42 | openssl_pkey.c:50:31:50:42 | +| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | RawName | 6 | openssl_pkey.c:50:31:50:42 | openssl_pkey.c:50:31:50:42 | +| openssl_pkey.c:54:47:54:50 | Constant | Description | 2048 | openssl_pkey.c:54:47:54:50 | openssl_pkey.c:54:47:54:50 | +| openssl_pkey.c:55:30:55:34 | Key | KeyType | Asymmetric | openssl_pkey.c:55:30:55:34 | openssl_pkey.c:55:30:55:34 | +| openssl_pkey.c:60:28:60:31 | Key | KeyType | Unknown | openssl_pkey.c:60:28:60:31 | openssl_pkey.c:60:28:60:31 | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | KeyOperationSubtype | Encrypt | openssl_pkey.c:64:9:64:24 | openssl_pkey.c:64:9:64:24 | +| openssl_signature.c:80:9:80:21 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:80:9:80:21 | openssl_signature.c:80:9:80:21 | +| openssl_signature.c:80:53:80:56 | Key | KeyType | Unknown | openssl_signature.c:80:53:80:56 | openssl_signature.c:80:53:80:56 | +| openssl_signature.c:133:52:133:55 | Key | KeyType | Unknown | openssl_signature.c:133:52:133:55 | openssl_signature.c:133:52:133:55 | +| openssl_signature.c:135:9:135:27 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:135:9:135:27 | openssl_signature.c:135:9:135:27 | +| openssl_signature.c:142:9:142:27 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:142:9:142:27 | openssl_signature.c:142:9:142:27 | +| openssl_signature.c:190:57:190:60 | Key | KeyType | Unknown | openssl_signature.c:190:57:190:60 | openssl_signature.c:190:57:190:60 | +| openssl_signature.c:197:9:197:27 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:197:9:197:27 | openssl_signature.c:197:9:197:27 | +| openssl_signature.c:204:9:204:27 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:204:9:204:27 | openssl_signature.c:204:9:204:27 | +| openssl_signature.c:260:39:260:42 | Key | KeyType | Unknown | openssl_signature.c:260:39:260:42 | openssl_signature.c:260:39:260:42 | +| openssl_signature.c:263:9:263:21 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:263:9:263:21 | openssl_signature.c:263:9:263:21 | +| openssl_signature.c:270:9:270:21 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:270:9:270:21 | openssl_signature.c:270:9:270:21 | +| openssl_signature.c:321:39:321:42 | Key | KeyType | Unknown | openssl_signature.c:321:39:321:42 | openssl_signature.c:321:39:321:42 | +| openssl_signature.c:327:9:327:35 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:327:9:327:35 | openssl_signature.c:327:9:327:35 | +| openssl_signature.c:334:9:334:35 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:334:9:334:35 | openssl_signature.c:334:9:334:35 | +| openssl_signature.c:521:46:521:66 | PaddingAlgorithm | Name | PSS | openssl_signature.c:521:46:521:66 | openssl_signature.c:521:46:521:66 | +| openssl_signature.c:521:46:521:66 | PaddingAlgorithm | RawName | 6 | openssl_signature.c:521:46:521:66 | openssl_signature.c:521:46:521:66 | +| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:543:35:543:46 | openssl_signature.c:543:35:543:46 | +| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | RawName | 6 | openssl_signature.c:543:35:543:46 | openssl_signature.c:543:35:543:46 | +| openssl_signature.c:547:51:547:54 | Constant | Description | 2048 | openssl_signature.c:547:51:547:54 | openssl_signature.c:547:51:547:54 | +| openssl_signature.c:548:34:548:37 | Key | KeyType | Asymmetric | openssl_signature.c:548:34:548:37 | openssl_signature.c:548:34:548:37 | +| openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | Name | DSA | openssl_signature.c:565:50:565:54 | openssl_signature.c:565:50:565:54 | +| openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | RawName | dsa | openssl_signature.c:565:50:565:54 | openssl_signature.c:565:50:565:54 | +| openssl_signature.c:569:55:569:58 | Constant | Description | 2048 | openssl_signature.c:569:55:569:58 | openssl_signature.c:569:55:569:58 | +| openssl_signature.c:575:32:575:37 | Key | KeyType | Unknown | openssl_signature.c:575:32:575:37 | openssl_signature.c:575:32:575:37 | +| openssl_signature.c:578:34:578:37 | Key | KeyType | Asymmetric | openssl_signature.c:578:34:578:37 | openssl_signature.c:578:34:578:37 | +| openssl_signature.c:602:37:602:77 | Constant | Description | Test message for OpenSSL signature APIs | openssl_signature.c:602:37:602:77 | openssl_signature.c:602:37:602:77 | +| openssl_signature.c:684:24:684:33 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:684:24:684:33 | openssl_signature.c:684:24:684:33 | +| openssl_signature.c:684:24:684:33 | HashAlgorithm | Name | SHA2 | openssl_signature.c:684:24:684:33 | openssl_signature.c:684:24:684:33 | +| openssl_signature.c:684:24:684:33 | HashAlgorithm | RawName | EVP_sha256 | openssl_signature.c:684:24:684:33 | openssl_signature.c:684:24:684:33 | +| openssl_signature.c:685:37:685:77 | Constant | Description | Test message for OpenSSL signature APIs | openssl_signature.c:685:37:685:77 | openssl_signature.c:685:37:685:77 | +| openssl_signature.c:702:60:702:71 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 | +| openssl_signature.c:702:60:702:71 | HashAlgorithm | Name | SHA2 | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 | +| openssl_signature.c:702:60:702:71 | HashAlgorithm | RawName | RSA-SHA256 | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 | +| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 | +| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | RawName | RSA-SHA256 | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 | +| openssl_signature.c:740:24:740:33 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:740:24:740:33 | openssl_signature.c:740:24:740:33 | +| openssl_signature.c:740:24:740:33 | HashAlgorithm | Name | SHA2 | openssl_signature.c:740:24:740:33 | openssl_signature.c:740:24:740:33 | +| openssl_signature.c:740:24:740:33 | HashAlgorithm | RawName | EVP_sha256 | openssl_signature.c:740:24:740:33 | openssl_signature.c:740:24:740:33 | +| openssl_signature.c:741:37:741:77 | Constant | Description | Test message for OpenSSL signature APIs | openssl_signature.c:741:37:741:77 | openssl_signature.c:741:37:741:77 | +| openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | Name | DSA | openssl_signature.c:758:60:758:64 | openssl_signature.c:758:60:758:64 | +| openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | RawName | dsa | openssl_signature.c:758:60:758:64 | openssl_signature.c:758:60:758:64 | diff --git a/cpp/ql/test/experimental/library-tests/quantum/node_properties.ql b/cpp/ql/test/experimental/library-tests/quantum/node_properties.ql new file mode 100644 index 000000000000..38d3a59b31f1 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/node_properties.ql @@ -0,0 +1,6 @@ +import cpp +import experimental.quantum.Language + +from Crypto::NodeBase n, string key, string value, Location location +where n.properties(key, value, location) +select n, key, value, location diff --git a/cpp/ql/test/experimental/library-tests/quantum/nodes.expected b/cpp/ql/test/experimental/library-tests/quantum/nodes.expected new file mode 100644 index 000000000000..223f7bfca6c5 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/nodes.expected @@ -0,0 +1,100 @@ +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | +| openssl_basic.c:23:37:23:51 | ModeOfOperation | +| openssl_basic.c:31:49:31:51 | Key | +| openssl_basic.c:31:54:31:55 | Nonce | +| openssl_basic.c:35:36:35:45 | KeyOperationOutput | +| openssl_basic.c:35:54:35:62 | Message | +| openssl_basic.c:40:13:40:31 | EncryptOperation | +| openssl_basic.c:40:38:40:53 | KeyOperationOutput | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | +| openssl_basic.c:69:33:69:47 | ModeOfOperation | +| openssl_basic.c:77:45:77:47 | Key | +| openssl_basic.c:77:50:77:51 | Nonce | +| openssl_basic.c:81:32:81:40 | KeyOperationOutput | +| openssl_basic.c:81:49:81:58 | Message | +| openssl_basic.c:90:11:90:29 | DecryptOperation | +| openssl_basic.c:90:36:90:50 | KeyOperationOutput | +| openssl_basic.c:116:38:116:47 | HashAlgorithm | +| openssl_basic.c:120:37:120:43 | Message | +| openssl_basic.c:124:13:124:30 | HashOperation | +| openssl_basic.c:124:39:124:44 | Digest | +| openssl_basic.c:144:13:144:22 | HashOperation | +| openssl_basic.c:144:24:144:30 | Message | +| openssl_basic.c:144:46:144:51 | Digest | +| openssl_basic.c:144:67:144:73 | HashAlgorithm | +| openssl_basic.c:155:22:155:41 | Key | +| openssl_basic.c:155:22:155:41 | KeyGeneration | +| openssl_basic.c:155:43:155:55 | MACAlgorithm | +| openssl_basic.c:155:64:155:66 | Key | +| openssl_basic.c:160:39:160:48 | HashAlgorithm | +| openssl_basic.c:160:59:160:62 | Key | +| openssl_basic.c:163:35:163:41 | Message | +| openssl_basic.c:167:9:167:27 | SignOperation | +| openssl_basic.c:167:34:167:36 | SignatureOutput | +| openssl_basic.c:179:43:179:76 | Constant | +| openssl_basic.c:180:42:180:59 | Constant | +| openssl_basic.c:181:49:181:87 | Constant | +| openssl_basic.c:218:32:218:33 | Constant | +| openssl_pkey.c:21:10:21:28 | KeyGeneration | +| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | +| openssl_pkey.c:21:30:21:32 | Key | +| openssl_pkey.c:45:49:45:65 | Constant | +| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | +| openssl_pkey.c:54:47:54:50 | Constant | +| openssl_pkey.c:55:9:55:23 | KeyGeneration | +| openssl_pkey.c:55:30:55:34 | Key | +| openssl_pkey.c:60:28:60:31 | Key | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | +| openssl_pkey.c:64:31:64:39 | KeyOperationOutput | +| openssl_pkey.c:64:58:64:66 | Message | +| openssl_signature.c:22:34:22:40 | Message | +| openssl_signature.c:23:9:23:26 | HashOperation | +| openssl_signature.c:23:36:23:41 | Digest | +| openssl_signature.c:70:32:70:38 | Message | +| openssl_signature.c:75:28:75:36 | Message | +| openssl_signature.c:80:9:80:21 | SignOperation | +| openssl_signature.c:80:31:80:40 | SignatureOutput | +| openssl_signature.c:80:53:80:56 | Key | +| openssl_signature.c:133:52:133:55 | Key | +| openssl_signature.c:134:38:134:44 | Message | +| openssl_signature.c:135:9:135:27 | SignOperation | +| openssl_signature.c:135:37:135:40 | SignatureOutput | +| openssl_signature.c:142:9:142:27 | SignOperation | +| openssl_signature.c:142:37:142:46 | SignatureOutput | +| openssl_signature.c:190:57:190:60 | Key | +| openssl_signature.c:196:38:196:44 | Message | +| openssl_signature.c:197:9:197:27 | SignOperation | +| openssl_signature.c:197:37:197:40 | SignatureOutput | +| openssl_signature.c:204:9:204:27 | SignOperation | +| openssl_signature.c:204:37:204:46 | SignatureOutput | +| openssl_signature.c:260:39:260:42 | Key | +| openssl_signature.c:263:9:263:21 | SignOperation | +| openssl_signature.c:263:33:263:36 | SignatureOutput | +| openssl_signature.c:263:54:263:59 | Message | +| openssl_signature.c:270:9:270:21 | SignOperation | +| openssl_signature.c:270:33:270:42 | SignatureOutput | +| openssl_signature.c:270:60:270:65 | Message | +| openssl_signature.c:321:39:321:42 | Key | +| openssl_signature.c:326:48:326:54 | Message | +| openssl_signature.c:327:9:327:35 | SignOperation | +| openssl_signature.c:327:47:327:50 | SignatureOutput | +| openssl_signature.c:334:9:334:35 | SignOperation | +| openssl_signature.c:334:47:334:56 | SignatureOutput | +| openssl_signature.c:521:46:521:66 | PaddingAlgorithm | +| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:547:51:547:54 | Constant | +| openssl_signature.c:548:9:548:23 | KeyGeneration | +| openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:569:55:569:58 | Constant | +| openssl_signature.c:575:32:575:37 | Key | +| openssl_signature.c:578:9:578:23 | KeyGeneration | +| openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:602:37:602:77 | Constant | +| openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:685:37:685:77 | Constant | +| openssl_signature.c:702:60:702:71 | HashAlgorithm | +| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | +| openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:741:37:741:77 | Constant | +| openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | diff --git a/cpp/ql/test/experimental/library-tests/quantum/nodes.ql b/cpp/ql/test/experimental/library-tests/quantum/nodes.ql new file mode 100644 index 000000000000..83858a7d60d8 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/nodes.ql @@ -0,0 +1,5 @@ +import cpp +import experimental.quantum.Language + +from Crypto::NodeBase n +select n diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_key_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_key_sources.expected deleted file mode 100644 index 749e7ee0fc61..000000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_key_sources.expected +++ /dev/null @@ -1,2 +0,0 @@ -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:31:49:31:51 | Key | openssl_basic.c:179:43:179:76 | Constant | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:77:45:77:47 | Key | openssl_basic.c:179:43:179:76 | Constant | diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_key_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_key_sources.ql deleted file mode 100644 index 039477ebc6ac..000000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_key_sources.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::CipherOperationNode op, Crypto::KeyArtifactNode k -where op.getAKey() = k -select op, k, k.getSourceNode() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_nonce_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_nonce_sources.expected deleted file mode 100644 index 76cce2449439..000000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_nonce_sources.expected +++ /dev/null @@ -1,2 +0,0 @@ -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:31:54:31:55 | Nonce | openssl_basic.c:180:42:180:59 | Constant | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:77:50:77:51 | Nonce | openssl_basic.c:180:42:180:59 | Constant | diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_nonce_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_nonce_sources.ql deleted file mode 100644 index d37ccf3762d5..000000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_nonce_sources.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::CipherOperationNode op, Crypto::NonceArtifactNode n -where op.getANonce() = n -select op, n, n.getSourceNode() 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 deleted file mode 100644 index 73b0af3ad5f4..000000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_operations.expected +++ /dev/null @@ -1,16 +0,0 @@ -| 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/cipher_operations.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_operations.ql deleted file mode 100644 index 9ce06567195d..000000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_operations.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::CipherOperationNode n -select n, n.getAnInputArtifact(), n.getAnOutputArtifact(), n.getAKey(), n.getANonce(), - n.getAnAlgorithmOrGenericSource(), n.getKeyOperationSubtype() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_plaintext_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_plaintext_sources.expected deleted file mode 100644 index 1bea7895a349..000000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_plaintext_sources.expected +++ /dev/null @@ -1 +0,0 @@ -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:181:49:181:87 | Constant | diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_plaintext_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_plaintext_sources.ql deleted file mode 100644 index 762dfb0c02bd..000000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_plaintext_sources.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::CipherOperationNode n, Crypto::MessageArtifactNode m -where n.getAnInputArtifact() = m -select n, m, m.getSourceNode() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.expected deleted file mode 100644 index 79ba1387a1ec..000000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.expected +++ /dev/null @@ -1,2 +0,0 @@ -| openssl_basic.c:124:13:124:30 | HashOperation | openssl_basic.c:120:37:120:43 | Message | openssl_basic.c:181:49:181:87 | Constant | -| openssl_basic.c:144:13:144:22 | HashOperation | openssl_basic.c:144:24:144:30 | Message | openssl_basic.c:181:49:181:87 | Constant | diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.ql deleted file mode 100644 index fff38028b642..000000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::HashOperationNode n, Crypto::MessageArtifactNode m -where n.getInputArtifact() = m -select n, m, m.getSourceNode() 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 deleted file mode 100644 index 247c4389bc1a..000000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/experimental/library-tests/quantum/openssl/hash_operations.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.ql deleted file mode 100644 index 50d831230e8f..000000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.ql +++ /dev/null @@ -1,5 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::HashOperationNode n -select n, n.getDigest(), n.getAnAlgorithmOrGenericSource(), n.getInputArtifact() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/options b/cpp/ql/test/experimental/library-tests/quantum/openssl/options deleted file mode 100644 index eb3abc42d12c..000000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/options +++ /dev/null @@ -1 +0,0 @@ -semmle-extractor-options: -I ../../../stubs \ No newline at end of file diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_basic.c b/cpp/ql/test/experimental/library-tests/quantum/openssl_basic.c similarity index 98% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_basic.c rename to cpp/ql/test/experimental/library-tests/quantum/openssl_basic.c index ba6aa805c0b3..f1ffbfa24d36 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_basic.c +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl_basic.c @@ -1,6 +1,6 @@ -#include "openssl/evp_stubs.h" -#include "openssl/alg_macro_stubs.h" -#include "openssl/rand_stubs.h" +#include "openssl/evp.h" +#include "openssl/obj_mac.h" +#include "openssl/rand.h" size_t strlen(const char* str); diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl_pkey.c b/cpp/ql/test/experimental/library-tests/quantum/openssl_pkey.c new file mode 100644 index 000000000000..ba5e43bf33c7 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl_pkey.c @@ -0,0 +1,70 @@ + +#include +#include +#include +#include + +// #include +// #include +// #include +// #include +// #include +// #include + + +int generate_rsa_pkey() { + int key_length = 2048; + RSA *rsa = RSA_new(); + BIGNUM *bne = BN_new(); + BN_set_word(bne, RSA_F4); + + if (!RSA_generate_key_ex(rsa, key_length, bne, NULL)) { + return -1; + } + + // Save private key + FILE *priv_file = fopen("private_key.pem", "wb"); + PEM_write_RSAPrivateKey(priv_file, rsa, NULL, NULL, 0, NULL, NULL); + fclose(priv_file); + + // Save public key + FILE *pub_file = fopen("public_key.pem", "wb"); + PEM_write_RSA_PUBKEY(pub_file, rsa); + fclose(pub_file); + + RSA_free(rsa); + BN_free(bne); + + return 0; +} + + +int generate_evp_pkey() { + EVP_PKEY_CTX *ctx; + EVP_PKEY *pkey = NULL; + unsigned char *plaintext = (unsigned char *)"Hello, OpenSSL!"; + unsigned char encrypted[256]; + size_t encrypted_len; + + // Generate RSA key + ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL); + if (!ctx) return -1; + + if (EVP_PKEY_keygen_init(ctx) <= 0) return -1; + if (EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, 2048) <= 0) return -1; + if (EVP_PKEY_keygen(ctx, &pkey) <= 0) return -1; + + EVP_PKEY_CTX_free(ctx); + + // Encrypt using the generated key + ctx = EVP_PKEY_CTX_new(pkey, NULL); + if (!ctx) handleErrors(); + + if (EVP_PKEY_encrypt_init(ctx) <= 0) return -1; + if (EVP_PKEY_encrypt(ctx, encrypted, &encrypted_len, plaintext, strlen((char *)plaintext)) <= 0) return -1; + + EVP_PKEY_CTX_free(ctx); + EVP_PKEY_free(pkey); + + return 0; +} diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl_signature.c b/cpp/ql/test/experimental/library-tests/quantum/openssl_signature.c new file mode 100644 index 000000000000..f8be74416423 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl_signature.c @@ -0,0 +1,819 @@ +// #ifdef USE_REAL_HEADERS +#include +#include +#include +#include + +/* ============================================================================= + * UTILITY FUNCTIONS - Common operations shared across signature APIs + * ============================================================================= + */ + +/** + * Create message digest from raw message data + */ +static int create_digest(const unsigned char *message, size_t message_len, + const EVP_MD *md, unsigned char *digest, unsigned int *digest_len) { + EVP_MD_CTX *md_ctx = EVP_MD_CTX_new(); + int ret = 0; + + if (!md_ctx || + EVP_DigestInit_ex(md_ctx, md, NULL) != 1 || + EVP_DigestUpdate(md_ctx, message, message_len) != 1 || + EVP_DigestFinal_ex(md_ctx, digest, digest_len) != 1) { + goto cleanup; + } + ret = 1; + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/** + * Allocate signature buffer with appropriate size + */ +static unsigned char* allocate_signature_buffer(size_t *sig_len, const EVP_PKEY *pkey) { + *sig_len = EVP_PKEY_size(pkey); + return OPENSSL_malloc(*sig_len); +} + +/** + * Helper to extract key from EVP_PKEY + */ +static RSA* get_rsa_from_pkey(EVP_PKEY *pkey) { + return EVP_PKEY_get1_RSA(pkey); +} + +static DSA* get_dsa_from_pkey(EVP_PKEY *pkey) { + return EVP_PKEY_get1_DSA(pkey); +} + +/* ============================================================================= + * EVP_SIGN/VERIFY API - Legacy high-level API (older, simpler) + * ============================================================================= + */ + +/** + * Sign message using EVP_Sign API (legacy) + * Simple API with built-in hashing and signing + */ +int sign_using_evp_sign(const unsigned char *message, size_t message_len, + unsigned char **signature, size_t *signature_len, + EVP_PKEY *pkey, const EVP_MD *md) { + EVP_MD_CTX *md_ctx = NULL; + unsigned int sig_len = 0; + int ret = 0; + + if (!(md_ctx = EVP_MD_CTX_new()) || + EVP_SignInit(md_ctx, md) != 1 || + EVP_SignUpdate(md_ctx, message, message_len) != 1) { + goto cleanup; + } + + // more updates + EVP_SignUpdate(md_ctx, message+1, message_len-1); + + *signature = allocate_signature_buffer(signature_len, pkey); + if (!*signature) goto cleanup; + + if (EVP_SignFinal(md_ctx, *signature, &sig_len, pkey) == 1) { + *signature_len = sig_len; + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/** + * Verify signature using EVP_Verify API (legacy) + * Simple API with built-in hashing and verification + */ +int verify_using_evp_verify(const unsigned char *message, size_t message_len, + const unsigned char *signature, size_t signature_len, + EVP_PKEY *pkey, const EVP_MD *md) { + EVP_MD_CTX *md_ctx = NULL; + int ret = 0; + + if (!(md_ctx = EVP_MD_CTX_new()) || + EVP_VerifyInit(md_ctx, md) != 1 || + EVP_VerifyUpdate(md_ctx, message, message_len) != 1 || + EVP_VerifyUpdate(md_ctx, message+1, message_len-1) != 1 || + EVP_VerifyFinal(md_ctx, signature, (unsigned int)signature_len, pkey) != 1) { + goto cleanup; + } + ret = 1; + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/* ============================================================================= + * EVP_DIGESTSIGN/DIGESTVERIFY API - Modern recommended API + * ============================================================================= + */ + +/** + * Sign message using EVP_DigestSign API (recommended) + * Modern flexible API with better algorithm support + */ +int sign_using_evp_digestsign(const unsigned char *message, size_t message_len, + unsigned char **signature, size_t *signature_len, + EVP_PKEY *pkey, const EVP_MD *md) { + EVP_MD_CTX *md_ctx = NULL; + int ret = 0; + + if (!(md_ctx = EVP_MD_CTX_new()) || + EVP_DigestSignInit(md_ctx, NULL, md, NULL, pkey) != 1 || + EVP_DigestSignUpdate(md_ctx, message, message_len) != 1 || + EVP_DigestSignFinal(md_ctx, NULL, signature_len) != 1) { + goto cleanup; + } + + *signature = OPENSSL_malloc(*signature_len); + if (!*signature) goto cleanup; + + if (EVP_DigestSignFinal(md_ctx, *signature, signature_len) == 1) { + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/** + * Verify signature using EVP_DigestVerify API (recommended) + * Modern flexible API with better algorithm support + */ +int verify_using_evp_digestverify(const unsigned char *message, size_t message_len, + const unsigned char *signature, size_t signature_len, + EVP_PKEY *pkey, const EVP_MD *md) { + EVP_MD_CTX *md_ctx = NULL; + int ret = 0; + + if (!(md_ctx = EVP_MD_CTX_new()) || + EVP_DigestVerifyInit(md_ctx, NULL, md, NULL, pkey) != 1 || + EVP_DigestVerifyUpdate(md_ctx, message, message_len) != 1 || + EVP_DigestVerifyFinal(md_ctx, signature, signature_len) != 1) { + goto cleanup; + } + ret = 1; + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/** + * Sign with explicit PKEY_CTX for fine-grained parameter control + * Allows custom parameter settings (e.g., padding, salt length) + */ +int sign_using_digestsign_with_ctx(const unsigned char *message, size_t message_len, + unsigned char **signature, size_t *signature_len, + EVP_PKEY *pkey, const EVP_MD *md, + int (*param_setter)(EVP_PKEY_CTX *ctx)) { + EVP_MD_CTX *md_ctx = NULL; + EVP_PKEY_CTX *pkey_ctx = NULL; + int ret = 0; + + if (!(md_ctx = EVP_MD_CTX_new()) || + EVP_DigestSignInit(md_ctx, &pkey_ctx, md, NULL, pkey) != 1) { + goto cleanup; + } + + if (param_setter && param_setter(pkey_ctx) != 1) goto cleanup; + + if (EVP_DigestSignUpdate(md_ctx, message, message_len) != 1 || + EVP_DigestSignFinal(md_ctx, NULL, signature_len) != 1) { + goto cleanup; + } + + *signature = OPENSSL_malloc(*signature_len); + if (!*signature) goto cleanup; + + if (EVP_DigestSignFinal(md_ctx, *signature, signature_len) == 1) { + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/** + * Verify with explicit PKEY_CTX for fine-grained parameter control + */ +int verify_using_digestverify_with_ctx(const unsigned char *message, size_t message_len, + const unsigned char *signature, size_t signature_len, + EVP_PKEY *pkey, const EVP_MD *md, + int (*param_setter)(EVP_PKEY_CTX *ctx)) { + EVP_MD_CTX *md_ctx = NULL; + EVP_PKEY_CTX *pkey_ctx = NULL; + int ret = 0; + + if (!(md_ctx = EVP_MD_CTX_new()) || + EVP_DigestVerifyInit(md_ctx, &pkey_ctx, md, NULL, pkey) != 1) { + goto cleanup; + } + + if (param_setter && param_setter(pkey_ctx) != 1) goto cleanup; + + if (EVP_DigestVerifyUpdate(md_ctx, message, message_len) != 1 || + EVP_DigestVerifyFinal(md_ctx, signature, signature_len) != 1) { + goto cleanup; + } + ret = 1; + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/* ============================================================================= + * EVP_PKEY_SIGN/VERIFY API - Lower level API with pre-hashed input + * ============================================================================= + */ + +/** + * Sign pre-hashed digest using EVP_PKEY_sign API + * Lower-level API requiring pre-computed digest + */ +int sign_using_evp_pkey_sign(const unsigned char *digest, size_t digest_len, + unsigned char **signature, size_t *signature_len, + EVP_PKEY *pkey, const EVP_MD *md) { + EVP_PKEY_CTX *pkey_ctx = NULL; + int ret = 0; + + if (!(pkey_ctx = EVP_PKEY_CTX_new(pkey, NULL)) || + EVP_PKEY_sign_init(pkey_ctx) != 1 || + EVP_PKEY_CTX_set_signature_md(pkey_ctx, md) != 1 || + EVP_PKEY_sign(pkey_ctx, NULL, signature_len, digest, digest_len) != 1) { + goto cleanup; + } + + *signature = OPENSSL_malloc(*signature_len); + if (!*signature) goto cleanup; + + if (EVP_PKEY_sign(pkey_ctx, *signature, signature_len, digest, digest_len) == 1) { + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + +cleanup: + EVP_PKEY_CTX_free(pkey_ctx); + return ret; +} + +/** + * Verify pre-hashed digest using EVP_PKEY_verify API + * Lower-level API requiring pre-computed digest + */ +int verify_using_evp_pkey_verify(const unsigned char *digest, size_t digest_len, + const unsigned char *signature, size_t signature_len, + EVP_PKEY *pkey, const EVP_MD *md) { + EVP_PKEY_CTX *pkey_ctx = NULL; + int ret = 0; + + if (!(pkey_ctx = EVP_PKEY_CTX_new(pkey, NULL)) || + EVP_PKEY_verify_init(pkey_ctx) != 1 || + EVP_PKEY_CTX_set_signature_md(pkey_ctx, md) != 1 || + EVP_PKEY_verify(pkey_ctx, signature, signature_len, digest, digest_len) != 1) { + goto cleanup; + } + ret = 1; + +cleanup: + EVP_PKEY_CTX_free(pkey_ctx); + return ret; +} + +/* ============================================================================= + * EVP_PKEY_SIGN_MESSAGE API - Streamlined message signing + * ============================================================================= + */ + +/** + * Sign message using EVP_PKEY_sign_message API + * Streamlined interface for direct message signing + */ +int sign_using_evp_pkey_sign_message(const unsigned char *message, size_t message_len, + unsigned char **signature, size_t *signature_len, + EVP_PKEY *pkey, const EVP_MD *md, const char *alg_name) { + EVP_PKEY_CTX *pkey_ctx = NULL; + EVP_SIGNATURE *alg = NULL; + int ret = 0; + + if (!(pkey_ctx = EVP_PKEY_CTX_new(pkey, NULL))) goto cleanup; + + alg = EVP_SIGNATURE_fetch(NULL, alg_name, NULL); + + if (EVP_PKEY_sign_message_init(pkey_ctx, alg, NULL) != 1 || + EVP_PKEY_sign_message_update(pkey_ctx, message, message_len) != 1 || + EVP_PKEY_sign_message_final(pkey_ctx, NULL, signature_len) != 1) { + goto cleanup; + } + + *signature = OPENSSL_malloc(*signature_len); + if (!*signature) goto cleanup; + + if (EVP_PKEY_sign_message_final(pkey_ctx, *signature, signature_len) == 1) { + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + +cleanup: + EVP_PKEY_CTX_free(pkey_ctx); + return ret; +} + +/** + * Verify message using EVP_PKEY_verify_message API + * Streamlined interface for direct message verification + */ +int verify_using_evp_pkey_verify_message(const unsigned char *message, size_t message_len, + const unsigned char *signature, size_t signature_len, + EVP_PKEY *pkey, const EVP_MD *md, const char *alg_name) { + EVP_PKEY_CTX *pkey_ctx = NULL; + EVP_SIGNATURE *alg = NULL; + int ret = 0; + + if (!(pkey_ctx = EVP_PKEY_CTX_new(pkey, NULL))) goto cleanup; + + alg = EVP_SIGNATURE_fetch(NULL, alg_name, NULL); + + if (EVP_PKEY_verify_message_init(pkey_ctx, alg, NULL) != 1) goto cleanup; + + EVP_PKEY_CTX_set_signature(pkey_ctx, signature, signature_len); + + if (EVP_PKEY_verify_message_update(pkey_ctx, message, message_len) != 1 || + EVP_PKEY_verify_message_final(pkey_ctx) != 1) { + goto cleanup; + } + ret = 1; + +cleanup: + EVP_PKEY_CTX_free(pkey_ctx); + return ret; +} + +/* ============================================================================= + * LOW-LEVEL RSA API - Algorithm-specific functions (deprecated) + * ============================================================================= + */ + +/** + * Sign using low-level RSA_sign API (deprecated, RSA-only) + * Direct RSA signing with manual digest computation + */ +int sign_using_rsa_sign(const unsigned char *message, size_t message_len, + unsigned char **signature, size_t *signature_len, + RSA *rsa_key, int hash_nid, const EVP_MD *md) { + unsigned char digest[EVP_MAX_MD_SIZE]; + unsigned int digest_len; + int ret = 0; + + if (!create_digest(message, message_len, md, digest, &digest_len)) return 0; + + *signature_len = RSA_size(rsa_key); + *signature = OPENSSL_malloc(*signature_len); + if (!*signature) return 0; + + if (RSA_sign(hash_nid, digest, digest_len, *signature, + (unsigned int*)signature_len, rsa_key) == 1) { + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + + return ret; +} + +/** + * Verify using low-level RSA_verify API (deprecated, RSA-only) + * Direct RSA verification with manual digest computation + */ +int verify_using_rsa_verify(const unsigned char *message, size_t message_len, + const unsigned char *signature, size_t signature_len, + RSA *rsa_key, int hash_nid, const EVP_MD *md) { + unsigned char digest[EVP_MAX_MD_SIZE]; + unsigned int digest_len; + + if (!create_digest(message, message_len, md, digest, &digest_len)) return 0; + + return RSA_verify(hash_nid, digest, digest_len, signature, + (unsigned int)signature_len, rsa_key); +} + +/* ============================================================================= + * LOW-LEVEL DSA API - Algorithm-specific functions (deprecated) + * ============================================================================= + */ + +/** + * Sign using low-level DSA_do_sign API (deprecated, DSA-only) + * Direct DSA signing with manual digest and signature encoding + */ +int sign_using_dsa_sign(const unsigned char *message, size_t message_len, + unsigned char **signature, size_t *signature_len, + DSA *dsa_key, const EVP_MD *md) { + unsigned char digest[EVP_MAX_MD_SIZE]; + unsigned int digest_len; + DSA_SIG *sig = NULL; + const BIGNUM *r = NULL, *s = NULL; + unsigned int bn_len; + int ret = 0; + + if (!create_digest(message, message_len, md, digest, &digest_len)) return 0; + + sig = DSA_do_sign(digest, digest_len, dsa_key); + if (!sig) return 0; + + DSA_SIG_get0(sig, &r, &s); + if (!r || !s) goto cleanup; + + bn_len = DSA_size(dsa_key) / 2; + *signature_len = DSA_size(dsa_key); + *signature = OPENSSL_malloc(*signature_len); + if (!*signature) goto cleanup; + + memset(*signature, 0, *signature_len); + + if (BN_bn2bin(r, *signature + (bn_len - BN_num_bytes(r))) > 0 && + BN_bn2bin(s, *signature + bn_len + (bn_len - BN_num_bytes(s))) > 0) { + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + +cleanup: + DSA_SIG_free(sig); + return ret; +} + +/** + * Verify using low-level DSA_do_verify API (deprecated, DSA-only) + * Direct DSA verification with manual digest and signature decoding + */ +int verify_using_dsa_verify(const unsigned char *message, size_t message_len, + const unsigned char *signature, size_t signature_len, + DSA *dsa_key, const EVP_MD *md) { + unsigned char digest[EVP_MAX_MD_SIZE]; + unsigned int digest_len; + DSA_SIG *sig = NULL; + BIGNUM *r = NULL, *s = NULL; + unsigned int bn_len; + int ret = 0; + + if (!create_digest(message, message_len, md, digest, &digest_len)) return 0; + + sig = DSA_SIG_new(); + if (!sig) return 0; + + r = BN_new(); + s = BN_new(); + if (!r || !s) goto cleanup; + + bn_len = DSA_size(dsa_key) / 2; + + if (BN_bin2bn(signature, bn_len, r) && + BN_bin2bn(signature + bn_len, bn_len, s) && + DSA_SIG_set0(sig, r, s) == 1) { + /* r and s are now owned by sig */ + r = s = NULL; + ret = DSA_do_verify(digest, digest_len, sig, dsa_key); + } + +cleanup: + DSA_SIG_free(sig); + BN_free(r); + BN_free(s); + return (ret == 1); +} + +/* ============================================================================= + * PARAMETER SETTERS - Helper functions for algorithm configuration + * ============================================================================= + */ + +/** + * Set RSA PSS padding mode + */ +int set_rsa_pss_padding(EVP_PKEY_CTX *ctx) { + return EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING); +} + +/** + * No-op parameter setter for default behavior + */ +int no_parameter_setter(EVP_PKEY_CTX *ctx) { + return 1; +} + +/* ============================================================================= + * KEY GENERATION HELPERS + * ============================================================================= + */ + +/** + * Generate RSA key pair for testing + */ +static EVP_PKEY* generate_rsa_key(void) { + EVP_PKEY_CTX *key_ctx = NULL; + EVP_PKEY *key = NULL; + + key_ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL); + if (!key_ctx) return NULL; + + if (EVP_PKEY_keygen_init(key_ctx) <= 0 || + EVP_PKEY_CTX_set_rsa_keygen_bits(key_ctx, 2048) <= 0 || + EVP_PKEY_keygen(key_ctx, &key) <= 0) { + EVP_PKEY_free(key); + key = NULL; + } + + EVP_PKEY_CTX_free(key_ctx); + return key; +} + +/** + * Generate DSA key pair for testing + */ +static EVP_PKEY* generate_dsa_key(void) { + EVP_PKEY_CTX *param_ctx = NULL, *key_ctx = NULL; + EVP_PKEY *params = NULL, *key = NULL; + + /* Generate parameters first */ + param_ctx = EVP_PKEY_CTX_new_from_name(NULL, "dsa", NULL); + if (!param_ctx) return NULL; + + if (EVP_PKEY_paramgen_init(param_ctx) <= 0 || + EVP_PKEY_CTX_set_dsa_paramgen_bits(param_ctx, 2048) <= 0 || + EVP_PKEY_paramgen(param_ctx, ¶ms) <= 0) { + goto cleanup; + } + + /* Generate key using parameters */ + key_ctx = EVP_PKEY_CTX_new(params, NULL); + if (!key_ctx || + EVP_PKEY_keygen_init(key_ctx) <= 0 || + EVP_PKEY_keygen(key_ctx, &key) <= 0) { + EVP_PKEY_free(key); + key = NULL; + } + +cleanup: + EVP_PKEY_CTX_free(param_ctx); + EVP_PKEY_CTX_free(key_ctx); + EVP_PKEY_free(params); + return key; +} + +/* ============================================================================= + * TEST FUNCTIONS - Comprehensive API testing + * ============================================================================= + */ + +/** + * Test all signature APIs with a given key and algorithm + * Demonstrates the 6 different signature API approaches + */ +int test_signature_apis(EVP_PKEY *key, const EVP_MD *md, + int (*param_setter)(EVP_PKEY_CTX *ctx), + const char *algo_name) { + const unsigned char message[] = "Test message for OpenSSL signature APIs"; + const size_t message_len = strlen((char *)message); + + unsigned char *sig1 = NULL, *sig2 = NULL, *sig3 = NULL, + *sig4 = NULL, *sig6 = NULL; + size_t sig_len1 = 0, sig_len2 = 0, sig_len3 = 0, sig_len4 = 0, sig_len6 = 0; + + unsigned char digest[EVP_MAX_MD_SIZE]; + unsigned int digest_len; + int success = 1; + + printf("\nTesting signature APIs with %s:\n", algo_name); + + /* Test 1: EVP_Sign API */ + printf("1. EVP_Sign API: "); + if (sign_using_evp_sign(message, message_len, &sig1, &sig_len1, key, md) && + verify_using_evp_verify(message, message_len, sig1, sig_len1, key, md)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + /* Test 2: EVP_DigestSign API */ + printf("2. EVP_DigestSign API: "); + if (sign_using_evp_digestsign(message, message_len, &sig2, &sig_len2, key, md) && + verify_using_evp_digestverify(message, message_len, sig2, sig_len2, key, md)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + /* Test 3: EVP_PKEY_sign API (requires pre-hashed input) */ + printf("3. EVP_PKEY_sign API: "); + if (create_digest(message, message_len, md, digest, &digest_len) && + sign_using_evp_pkey_sign(digest, digest_len, &sig3, &sig_len3, key, md) && + verify_using_evp_pkey_verify(digest, digest_len, sig3, sig_len3, key, md)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + /* Test 4: EVP_DigestSign with explicit PKEY_CTX */ + printf("4. EVP_DigestSign with explicit PKEY_CTX: "); + if (sign_using_digestsign_with_ctx(message, message_len, &sig4, &sig_len4, + key, md, param_setter) && + verify_using_digestverify_with_ctx(message, message_len, sig4, sig_len4, + key, md, param_setter)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + /* Test 6: EVP_PKEY_sign_message API */ + printf("6. EVP_PKEY_sign_message API: "); + if (sign_using_evp_pkey_sign_message(message, message_len, &sig6, &sig_len6, key, md, algo_name) && + verify_using_evp_pkey_verify_message(message, message_len, sig6, sig_len6, key, md, algo_name)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + /* Cleanup */ + OPENSSL_free(sig1); + OPENSSL_free(sig2); + OPENSSL_free(sig3); + OPENSSL_free(sig4); + OPENSSL_free(sig6); + + return success; +} + +/** + * Test RSA-specific signature APIs including low-level RSA functions + */ +int test_signature_apis_rsa(void) { + EVP_PKEY *key = NULL; + RSA *rsa_key = NULL; + const EVP_MD *md = EVP_sha256(); + const unsigned char message[] = "Test message for OpenSSL signature APIs"; + const size_t message_len = strlen((char *)message); + unsigned char *sig5 = NULL; + size_t sig_len5 = 0; + int success = 1; + + printf("\nGenerating RSA key pair...\n"); + key = generate_rsa_key(); + if (!key) return 0; + + rsa_key = get_rsa_from_pkey(key); + if (!rsa_key) { + EVP_PKEY_free(key); + return 0; + } + + /* Test generic APIs */ + if (!test_signature_apis(key, md, set_rsa_pss_padding, "RSA-SHA256")) { + success = 0; + } + + /* Test 5: Low-level RSA API */ + printf("5. Low-level RSA API: "); + if (sign_using_rsa_sign(message, message_len, &sig5, &sig_len5, + rsa_key, NID_sha256, md) && + verify_using_rsa_verify(message, message_len, sig5, sig_len5, + rsa_key, NID_sha256, md)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + printf("\nRSA API Summary:\n"); + printf("1. EVP_Sign API: Legacy, simple\n"); + printf("2. EVP_DigestSign API: Modern, recommended\n"); + printf("3. EVP_PKEY_sign API: Lower-level, pre-hashed input\n"); + printf("4. EVP_DigestSign with PKEY_CTX: Fine-grained control\n"); + printf("5. Low-level RSA API: Deprecated, algorithm-specific\n"); + printf("6. EVP_PKEY_sign_message API: Streamlined message signing\n"); + + /* Cleanup */ + OPENSSL_free(sig5); + RSA_free(rsa_key); + EVP_PKEY_free(key); + + return success; +} + +/** + * Test DSA-specific signature APIs including low-level DSA functions + */ +int test_signature_apis_dsa(void) { + EVP_PKEY *key = NULL; + DSA *dsa_key = NULL; + const EVP_MD *md = EVP_sha256(); + const unsigned char message[] = "Test message for OpenSSL signature APIs"; + const size_t message_len = strlen((char *)message); + unsigned char *sig5 = NULL; + size_t sig_len5 = 0; + int success = 1; + + printf("\nGenerating DSA key pair...\n"); + key = generate_dsa_key(); + if (!key) return 0; + + dsa_key = get_dsa_from_pkey(key); + if (!dsa_key) { + EVP_PKEY_free(key); + return 0; + } + + /* Test generic APIs */ + if (!test_signature_apis(key, md, no_parameter_setter, "dsa")) { + success = 0; + } + + /* Test 5: Low-level DSA API */ + printf("5. Low-level DSA API: "); + if (sign_using_dsa_sign(message, message_len, &sig5, &sig_len5, dsa_key, md) && + verify_using_dsa_verify(message, message_len, sig5, sig_len5, dsa_key, md)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + printf("\nDSA API Summary:\n"); + printf("1. EVP_Sign API: Legacy, simple\n"); + printf("2. EVP_DigestSign API: Modern, recommended\n"); + printf("3. EVP_PKEY_sign API: Lower-level, pre-hashed input\n"); + printf("4. EVP_DigestSign with PKEY_CTX: Fine-grained control\n"); + printf("5. Low-level DSA API: Deprecated, algorithm-specific\n"); + printf("6. EVP_PKEY_sign_message API: Streamlined message signing\n"); + + /* Cleanup */ + OPENSSL_free(sig5); + EVP_PKEY_free(key); + + return success; +} + +/* ============================================================================= + * MAIN FUNCTION - Entry point for testing all signature APIs + * ============================================================================= + */ + +// /** +// * Main function demonstrating all OpenSSL signature APIs +// * Tests both RSA and DSA algorithms with all 6 API approaches +// */ +// int main(void) { +// /* Initialize OpenSSL */ +// OpenSSL_add_all_algorithms(); +// ERR_load_crypto_strings(); + +// printf("=================================================================\n"); +// printf("OpenSSL Signature API Demonstration\n"); +// printf("=================================================================\n"); + +// printf("\n-------- TESTING RSA SIGNATURES --------\n"); +// int rsa_result = test_signature_apis_rsa(); + +// printf("\n-------- TESTING DSA SIGNATURES --------\n"); +// int dsa_result = test_signature_apis_dsa(); + +// printf("\n=================================================================\n"); +// if (rsa_result && dsa_result) { +// printf("All tests completed successfully.\n"); +// return 0; +// } else { +// printf("Some tests failed.\n"); +// return 1; +// } +// } \ No newline at end of file diff --git a/cpp/ql/test/experimental/library-tests/quantum/options b/cpp/ql/test/experimental/library-tests/quantum/options new file mode 100644 index 000000000000..41ee5b35e27e --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/options @@ -0,0 +1 @@ +semmle-extractor-options: -I ../../stubs \ No newline at end of file diff --git a/cpp/ql/test/experimental/library-tests/rangeanalysis/rangeanalysis/RangeAnalysis.ql b/cpp/ql/test/experimental/library-tests/rangeanalysis/rangeanalysis/RangeAnalysis.ql index 1b77763682ad..240567b536c2 100644 --- a/cpp/ql/test/experimental/library-tests/rangeanalysis/rangeanalysis/RangeAnalysis.ql +++ b/cpp/ql/test/experimental/library-tests/rangeanalysis/rangeanalysis/RangeAnalysis.ql @@ -15,5 +15,5 @@ query predicate instructionBounds( not valueNumber(b.getInstruction()) = valueNumber(i) and if reason instanceof CondReason then reasonLoc = reason.(CondReason).getCond().getLocation() - else reasonLoc instanceof UnknownDefaultLocation + else reasonLoc instanceof UnknownLocation } diff --git a/cpp/ql/test/experimental/stubs/openssl/alg_macro_stubs.h b/cpp/ql/test/experimental/stubs/openssl/alg_macro_stubs.h deleted file mode 100644 index 3058681d71d7..000000000000 --- a/cpp/ql/test/experimental/stubs/openssl/alg_macro_stubs.h +++ /dev/null @@ -1,3741 +0,0 @@ -# define EVP_PKEY_NONE NID_undef -# define EVP_PKEY_RSA NID_rsaEncryption -# define EVP_PKEY_RSA2 NID_rsa -# define EVP_PKEY_RSA_PSS NID_rsassaPss -# define EVP_PKEY_DSA NID_dsa -# define EVP_PKEY_DSA1 NID_dsa_2 -# define EVP_PKEY_DSA2 NID_dsaWithSHA -# define EVP_PKEY_DSA3 NID_dsaWithSHA1 -# define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 -# define EVP_PKEY_DH NID_dhKeyAgreement -# define EVP_PKEY_DHX NID_dhpublicnumber -# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey -# define EVP_PKEY_SM2 NID_sm2 -# define EVP_PKEY_HMAC NID_hmac -# define EVP_PKEY_CMAC NID_cmac -# define EVP_PKEY_SCRYPT NID_id_scrypt -# define EVP_PKEY_TLS1_PRF NID_tls1_prf -# define EVP_PKEY_HKDF NID_hkdf -# define EVP_PKEY_POLY1305 NID_poly1305 -# define EVP_PKEY_SIPHASH NID_siphash -# define EVP_PKEY_X25519 NID_X25519 -# define EVP_PKEY_ED25519 NID_ED25519 -# define EVP_PKEY_X448 NID_X448 -# define EVP_PKEY_ED448 NID_ED448 - -#define NID_crl_reason 141 -#define NID_invalidity_date 142 -#define NID_hold_instruction_code 430 -#define NID_undef 0 -#define NID_pkcs9_emailAddress 48 -#define NID_crl_number 88 -#define SN_aes_256_cbc "AES-256-CBC" -#define NID_id_it_caCerts 1223 -#define NID_id_it_rootCaCert 1254 -#define NID_id_it_crlStatusList 1256 -#define NID_id_it_certReqTemplate 1225 -#define NID_id_regCtrl_algId 1259 -#define NID_id_regCtrl_rsaKeyLen 1260 -#define NID_pkcs7_signed 22 -#define NID_pkcs7_data 21 -#define NID_ED25519 1087 -#define NID_ED448 1088 -#define SN_sha256 "SHA256" -#define NID_hmac 855 -#define SN_X9_62_prime192v1 "prime192v1" -#define SN_X9_62_prime256v1 "prime256v1" -#define NID_grasshopper_mac NID_kuznyechik_mac -#define SN_grasshopper_mac SN_kuznyechik_mac -#define NID_grasshopper_cfb NID_kuznyechik_cfb -#define SN_grasshopper_cfb SN_kuznyechik_cfb -#define NID_grasshopper_cbc NID_kuznyechik_cbc -#define SN_grasshopper_cbc SN_kuznyechik_cbc -#define NID_grasshopper_ofb NID_kuznyechik_ofb -#define SN_grasshopper_ofb SN_kuznyechik_ofb -#define NID_grasshopper_ctr NID_kuznyechik_ctr -#define SN_grasshopper_ctr SN_kuznyechik_ctr -#define NID_grasshopper_ecb NID_kuznyechik_ecb -#define SN_grasshopper_ecb SN_kuznyechik_ecb -#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 NID_kuznyechik_kexp15 -#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 SN_kuznyechik_kexp15 -#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 NID_magma_kexp15 -#define SN_id_tc26_wrap_gostr3412_2015_magma_kexp15 SN_magma_kexp15 -#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac NID_kuznyechik_ctr_acpkm_omac -#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac SN_kuznyechik_ctr_acpkm_omac -#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm NID_kuznyechik_ctr_acpkm -#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm SN_kuznyechik_ctr_acpkm -#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac NID_magma_ctr_acpkm_omac -#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac SN_magma_ctr_acpkm_omac -#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm NID_magma_ctr_acpkm -#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm SN_magma_ctr_acpkm -#define NID_ML_KEM_1024 1456 -#define LN_ML_KEM_1024 "ML-KEM-1024" -#define SN_ML_KEM_1024 "id-alg-ml-kem-1024" -#define NID_ML_KEM_768 1455 -#define LN_ML_KEM_768 "ML-KEM-768" -#define SN_ML_KEM_768 "id-alg-ml-kem-768" -#define NID_ML_KEM_512 1454 -#define LN_ML_KEM_512 "ML-KEM-512" -#define SN_ML_KEM_512 "id-alg-ml-kem-512" -#define NID_tcg_tr_cat_PublicKey 1453 -#define LN_tcg_tr_cat_PublicKey "Public Key Trait Category" -#define SN_tcg_tr_cat_PublicKey "tcg-tr-cat-PublicKey" -#define NID_tcg_tr_cat_RTM 1452 -#define LN_tcg_tr_cat_RTM "Root of Trust of Measurement Trait Category" -#define SN_tcg_tr_cat_RTM "tcg-tr-cat-RTM" -#define NID_tcg_tr_cat_platformFirmwareUpdateCompliance 1451 -#define LN_tcg_tr_cat_platformFirmwareUpdateCompliance "Platform Firmware Update Compliance Trait Category" -#define SN_tcg_tr_cat_platformFirmwareUpdateCompliance "tcg-tr-cat-platformFirmwareUpdateCompliance" -#define NID_tcg_tr_cat_platformFirmwareSignatureVerification 1450 -#define LN_tcg_tr_cat_platformFirmwareSignatureVerification "Platform Firmware Signature Verification Trait Category" -#define SN_tcg_tr_cat_platformFirmwareSignatureVerification "tcg-tr-cat-platformFirmwareSignatureVerification" -#define NID_tcg_tr_cat_platformHardwareCapabilities 1449 -#define LN_tcg_tr_cat_platformHardwareCapabilities "Platform Hardware Capabilities Trait Category" -#define SN_tcg_tr_cat_platformHardwareCapabilities "tcg-tr-cat-platformHardwareCapabilities" -#define NID_tcg_tr_cat_platformFirmwareCapabilities 1448 -#define LN_tcg_tr_cat_platformFirmwareCapabilities "Platform Firmware Capabilities Trait Category" -#define SN_tcg_tr_cat_platformFirmwareCapabilities "tcg-tr-cat-platformFirmwareCapabilities" -#define NID_tcg_tr_cat_PEN 1447 -#define LN_tcg_tr_cat_PEN "Private Enterprise Number Trait Category" -#define SN_tcg_tr_cat_PEN "tcg-tr-cat-PEN" -#define NID_tcg_tr_cat_attestationProtocol 1446 -#define LN_tcg_tr_cat_attestationProtocol "Attestation Protocol Trait Category" -#define SN_tcg_tr_cat_attestationProtocol "tcg-tr-cat-attestationProtocol" -#define NID_tcg_tr_cat_networkMAC 1445 -#define LN_tcg_tr_cat_networkMAC "Network MAC Trait Category" -#define SN_tcg_tr_cat_networkMAC "tcg-tr-cat-networkMAC" -#define NID_tcg_tr_cat_ISO9000 1444 -#define LN_tcg_tr_cat_ISO9000 "ISO 9000 Trait Category" -#define SN_tcg_tr_cat_ISO9000 "tcg-tr-cat-ISO9000" -#define NID_tcg_tr_cat_FIPSLevel 1443 -#define LN_tcg_tr_cat_FIPSLevel "FIPS Level Trait Category" -#define SN_tcg_tr_cat_FIPSLevel "tcg-tr-cat-FIPSLevel" -#define NID_tcg_tr_cat_componentIdentifierV11 1442 -#define LN_tcg_tr_cat_componentIdentifierV11 "Component Identifier V1.1 Trait Category" -#define SN_tcg_tr_cat_componentIdentifierV11 "tcg-tr-cat-componentIdentifierV11" -#define NID_tcg_tr_cat_CommonCriteria 1441 -#define LN_tcg_tr_cat_CommonCriteria "Common Criteria Trait Category" -#define SN_tcg_tr_cat_CommonCriteria "tcg-tr-cat-CommonCriteria" -#define NID_tcg_tr_cat_genericCertificate 1440 -#define LN_tcg_tr_cat_genericCertificate "Generic Certificate Trait Category" -#define SN_tcg_tr_cat_genericCertificate "tcg-tr-cat-genericCertificate" -#define NID_tcg_tr_cat_RebasePlatformCertificate 1439 -#define LN_tcg_tr_cat_RebasePlatformCertificate "Rebase Platform Certificate Trait Category" -#define SN_tcg_tr_cat_RebasePlatformCertificate "tcg-tr-cat-RebasePlatformCertificate" -#define NID_tcg_tr_cat_DeltaPlatformCertificate 1438 -#define LN_tcg_tr_cat_DeltaPlatformCertificate "Delta Platform Certificate Trait Category" -#define SN_tcg_tr_cat_DeltaPlatformCertificate "tcg-tr-cat-DeltaPlatformCertificate" -#define NID_tcg_tr_cat_PlatformCertificate 1437 -#define LN_tcg_tr_cat_PlatformCertificate "Platform Certificate Trait Category" -#define SN_tcg_tr_cat_PlatformCertificate "tcg-tr-cat-PlatformCertificate" -#define NID_tcg_tr_cat_PEMCertificate 1436 -#define LN_tcg_tr_cat_PEMCertificate "PEM Certificate Trait Category" -#define SN_tcg_tr_cat_PEMCertificate "tcg-tr-cat-PEMCertificate" -#define NID_tcg_tr_cat_SPDMCertificate 1435 -#define LN_tcg_tr_cat_SPDMCertificate "SPDM Certificate Trait Category" -#define SN_tcg_tr_cat_SPDMCertificate "tcg-tr-cat-SPDMCertificate" -#define NID_tcg_tr_cat_DICECertificate 1434 -#define LN_tcg_tr_cat_DICECertificate "DICE Certificate Trait Category" -#define SN_tcg_tr_cat_DICECertificate "tcg-tr-cat-DICECertificate" -#define NID_tcg_tr_cat_IDevIDCertificate 1433 -#define LN_tcg_tr_cat_IDevIDCertificate "IDevID Certificate Trait Category" -#define SN_tcg_tr_cat_IDevIDCertificate "tcg-tr-cat-IDevIDCertificate" -#define NID_tcg_tr_cat_IAKCertificate 1432 -#define LN_tcg_tr_cat_IAKCertificate "IAK Certificate Trait Category" -#define SN_tcg_tr_cat_IAKCertificate "tcg-tr-cat-IAKCertificate" -#define NID_tcg_tr_cat_EKCertificate 1431 -#define LN_tcg_tr_cat_EKCertificate "EK Certificate Trait Category" -#define SN_tcg_tr_cat_EKCertificate "tcg-tr-cat-EKCertificate" -#define NID_tcg_tr_cat_componentFieldReplaceable 1430 -#define LN_tcg_tr_cat_componentFieldReplaceable "Component Field Replaceable Trait Category" -#define SN_tcg_tr_cat_componentFieldReplaceable "tcg-tr-cat-componentFieldReplaceable" -#define NID_tcg_tr_cat_componentRevision 1429 -#define LN_tcg_tr_cat_componentRevision "Component Revision Trait Category" -#define SN_tcg_tr_cat_componentRevision "tcg-tr-cat-componentRevision" -#define NID_tcg_tr_cat_componentLocation 1428 -#define LN_tcg_tr_cat_componentLocation "Component Location Trait Category" -#define SN_tcg_tr_cat_componentLocation "tcg-tr-cat-componentLocation" -#define NID_tcg_tr_cat_componentStatus 1427 -#define LN_tcg_tr_cat_componentStatus "Component Status Trait Category" -#define SN_tcg_tr_cat_componentStatus "tcg-tr-cat-componentStatus" -#define NID_tcg_tr_cat_componentSerial 1426 -#define LN_tcg_tr_cat_componentSerial "Component Serial Trait Category" -#define SN_tcg_tr_cat_componentSerial "tcg-tr-cat-componentSerial" -#define NID_tcg_tr_cat_componentModel 1425 -#define LN_tcg_tr_cat_componentModel "Component Model Trait Category" -#define SN_tcg_tr_cat_componentModel "tcg-tr-cat-componentModel" -#define NID_tcg_tr_cat_componentManufacturer 1424 -#define LN_tcg_tr_cat_componentManufacturer "Component Manufacturer Trait Category" -#define SN_tcg_tr_cat_componentManufacturer "tcg-tr-cat-componentManufacturer" -#define NID_tcg_tr_cat_componentClass 1423 -#define LN_tcg_tr_cat_componentClass "Component Class Trait Category" -#define SN_tcg_tr_cat_componentClass "tcg-tr-cat-componentClass" -#define NID_tcg_tr_cat_platformOwnership 1422 -#define LN_tcg_tr_cat_platformOwnership "Platform Ownership Trait Category" -#define SN_tcg_tr_cat_platformOwnership "tcg-tr-cat-platformOwnership" -#define NID_tcg_tr_cat_platformManufacturerIdentifier 1421 -#define LN_tcg_tr_cat_platformManufacturerIdentifier "Platform Manufacturer Identifier Trait Category" -#define SN_tcg_tr_cat_platformManufacturerIdentifier "tcg-tr-cat-platformManufacturerIdentifier" -#define NID_tcg_tr_cat_platformSerial 1420 -#define LN_tcg_tr_cat_platformSerial "Platform Serial Trait Category" -#define SN_tcg_tr_cat_platformSerial "tcg-tr-cat-platformSerial" -#define NID_tcg_tr_cat_platformVersion 1419 -#define LN_tcg_tr_cat_platformVersion "Platform Version Trait Category" -#define SN_tcg_tr_cat_platformVersion "tcg-tr-cat-platformVersion" -#define NID_tcg_tr_cat_platformModel 1418 -#define LN_tcg_tr_cat_platformModel "Platform Model Trait Category" -#define SN_tcg_tr_cat_platformModel "tcg-tr-cat-platformModel" -#define NID_tcg_tr_cat_platformManufacturer 1417 -#define LN_tcg_tr_cat_platformManufacturer "Platform Manufacturer Trait Category" -#define SN_tcg_tr_cat_platformManufacturer "tcg-tr-cat-platformManufacturer" -#define NID_tcg_tr_ID_PublicKey 1416 -#define LN_tcg_tr_ID_PublicKey "Public Key Trait" -#define SN_tcg_tr_ID_PublicKey "tcg-tr-ID-PublicKey" -#define NID_tcg_tr_ID_PEMCertString 1415 -#define LN_tcg_tr_ID_PEMCertString "PEM-Encoded Certificate String Trait" -#define SN_tcg_tr_ID_PEMCertString "tcg-tr-ID-PEMCertString" -#define NID_tcg_tr_ID_IA5String 1414 -#define LN_tcg_tr_ID_IA5String "IA5String Trait" -#define SN_tcg_tr_ID_IA5String "tcg-tr-ID-IA5String" -#define NID_tcg_tr_ID_UTF8String 1413 -#define LN_tcg_tr_ID_UTF8String "UTF8String Trait" -#define SN_tcg_tr_ID_UTF8String "tcg-tr-ID-UTF8String" -#define NID_tcg_tr_ID_URI 1412 -#define LN_tcg_tr_ID_URI "Uniform Resource Identifier Trait" -#define SN_tcg_tr_ID_URI "tcg-tr-ID-URI" -#define NID_tcg_tr_ID_status 1411 -#define LN_tcg_tr_ID_status "Attribute Status Trait" -#define SN_tcg_tr_ID_status "tcg-tr-ID-status" -#define NID_tcg_tr_ID_RTM 1410 -#define LN_tcg_tr_ID_RTM "Root of Trust for Measurement Trait" -#define SN_tcg_tr_ID_RTM "tcg-tr-ID-RTM" -#define NID_tcg_tr_ID_platformHardwareCapabilities 1409 -#define LN_tcg_tr_ID_platformHardwareCapabilities "Platform Hardware Capabilities Trait" -#define SN_tcg_tr_ID_platformHardwareCapabilities "tcg-tr-ID-platformHardwareCapabilities" -#define NID_tcg_tr_ID_platformFirmwareUpdateCompliance 1408 -#define LN_tcg_tr_ID_platformFirmwareUpdateCompliance "Platform Firmware Update Compliance Trait" -#define SN_tcg_tr_ID_platformFirmwareUpdateCompliance "tcg-tr-ID-platformFirmwareUpdateCompliance" -#define NID_tcg_tr_ID_platformFirmwareSignatureVerification 1407 -#define LN_tcg_tr_ID_platformFirmwareSignatureVerification "Platform Firmware Signature Verification Trait" -#define SN_tcg_tr_ID_platformFirmwareSignatureVerification "tcg-tr-ID-platformFirmwareSignatureVerification" -#define NID_tcg_tr_ID_platformFirmwareCapabilities 1406 -#define LN_tcg_tr_ID_platformFirmwareCapabilities "Platform Firmware Capabilities Trait" -#define SN_tcg_tr_ID_platformFirmwareCapabilities "tcg-tr-ID-platformFirmwareCapabilities" -#define NID_tcg_tr_ID_PEN 1405 -#define LN_tcg_tr_ID_PEN "Private Enterprise Number Trait" -#define SN_tcg_tr_ID_PEN "tcg-tr-ID-PEN" -#define NID_tcg_tr_ID_OID 1404 -#define LN_tcg_tr_ID_OID "Object Identifier Trait" -#define SN_tcg_tr_ID_OID "tcg-tr-ID-OID" -#define NID_tcg_tr_ID_networkMAC 1403 -#define LN_tcg_tr_ID_networkMAC "Network MAC Trait" -#define SN_tcg_tr_ID_networkMAC "tcg-tr-ID-networkMAC" -#define NID_tcg_tr_ID_ISO9000Level 1402 -#define LN_tcg_tr_ID_ISO9000Level "ISO 9000 Level Trait" -#define SN_tcg_tr_ID_ISO9000Level "tcg-tr-ID-ISO9000Level" -#define NID_tcg_tr_ID_FIPSLevel 1401 -#define LN_tcg_tr_ID_FIPSLevel "FIPS Level Trait" -#define SN_tcg_tr_ID_FIPSLevel "tcg-tr-ID-FIPSLevel" -#define NID_tcg_tr_ID_componentIdentifierV11 1400 -#define LN_tcg_tr_ID_componentIdentifierV11 "Component Identifier V1.1 Trait" -#define SN_tcg_tr_ID_componentIdentifierV11 "tcg-tr-ID-componentIdentifierV11" -#define NID_tcg_tr_ID_componentClass 1399 -#define LN_tcg_tr_ID_componentClass "Component Class Trait" -#define SN_tcg_tr_ID_componentClass "tcg-tr-ID-componentClass" -#define NID_tcg_tr_ID_CommonCriteria 1398 -#define LN_tcg_tr_ID_CommonCriteria "Common Criteria Trait" -#define SN_tcg_tr_ID_CommonCriteria "tcg-tr-ID-CommonCriteria" -#define NID_tcg_tr_ID_CertificateIdentifier 1397 -#define LN_tcg_tr_ID_CertificateIdentifier "Certificate Identifier Trait" -#define SN_tcg_tr_ID_CertificateIdentifier "tcg-tr-ID-CertificateIdentifier" -#define NID_tcg_tr_ID_Boolean 1396 -#define LN_tcg_tr_ID_Boolean "Boolean Trait" -#define SN_tcg_tr_ID_Boolean "tcg-tr-ID-Boolean" -#define NID_tcg_tr_registry 1395 -#define LN_tcg_tr_registry "TCG Trait Registries" -#define SN_tcg_tr_registry "tcg-tr-registry" -#define NID_tcg_tr_category 1394 -#define LN_tcg_tr_category "TCG Trait Categories" -#define SN_tcg_tr_category "tcg-tr-category" -#define NID_tcg_tr_ID 1393 -#define LN_tcg_tr_ID "TCG Trait Identifiers" -#define SN_tcg_tr_ID "tcg-tr-ID" -#define NID_tcg_cap_verifiedPlatformCertificate 1392 -#define LN_tcg_cap_verifiedPlatformCertificate "TCG Verified Platform Certificate CA Policy" -#define SN_tcg_cap_verifiedPlatformCertificate "tcg-cap-verifiedPlatformCertificate" -#define NID_tcg_registry_componentClass_disk 1391 -#define LN_tcg_registry_componentClass_disk "Disk Component Class" -#define SN_tcg_registry_componentClass_disk "tcg-registry-componentClass-disk" -#define NID_tcg_registry_componentClass_pcie 1390 -#define LN_tcg_registry_componentClass_pcie "PCIE Component Class" -#define SN_tcg_registry_componentClass_pcie "tcg-registry-componentClass-pcie" -#define NID_tcg_registry_componentClass_dmtf 1389 -#define LN_tcg_registry_componentClass_dmtf "Distributed Management Task Force Registry" -#define SN_tcg_registry_componentClass_dmtf "tcg-registry-componentClass-dmtf" -#define NID_tcg_registry_componentClass_ietf 1388 -#define LN_tcg_registry_componentClass_ietf "Internet Engineering Task Force Registry" -#define SN_tcg_registry_componentClass_ietf "tcg-registry-componentClass-ietf" -#define NID_tcg_registry_componentClass_tcg 1387 -#define LN_tcg_registry_componentClass_tcg "Trusted Computed Group Registry" -#define SN_tcg_registry_componentClass_tcg "tcg-registry-componentClass-tcg" -#define NID_tcg_registry_componentClass 1386 -#define LN_tcg_registry_componentClass "TCG Component Class" -#define SN_tcg_registry_componentClass "tcg-registry-componentClass" -#define NID_tcg_address_bluetoothmac 1385 -#define LN_tcg_address_bluetoothmac "Bluetooth MAC Address" -#define SN_tcg_address_bluetoothmac "tcg-address-bluetoothmac" -#define NID_tcg_address_wlanmac 1384 -#define LN_tcg_address_wlanmac "WLAN MAC Address" -#define SN_tcg_address_wlanmac "tcg-address-wlanmac" -#define NID_tcg_address_ethernetmac 1383 -#define LN_tcg_address_ethernetmac "Ethernet MAC Address" -#define SN_tcg_address_ethernetmac "tcg-address-ethernetmac" -#define NID_tcg_prt_tpmIdProtocol 1382 -#define LN_tcg_prt_tpmIdProtocol "TCG TPM Protocol" -#define SN_tcg_prt_tpmIdProtocol "tcg-prt-tpmIdProtocol" -#define NID_tcg_ce_virtualPlatformBackupService 1381 -#define LN_tcg_ce_virtualPlatformBackupService "Virtual Platform Backup Service" -#define SN_tcg_ce_virtualPlatformBackupService "tcg-ce-virtualPlatformBackupService" -#define NID_tcg_ce_migrationControllerRegistrationService 1380 -#define LN_tcg_ce_migrationControllerRegistrationService "Migration Controller Registration Service" -#define SN_tcg_ce_migrationControllerRegistrationService "tcg-ce-migrationControllerRegistrationService" -#define NID_tcg_ce_migrationControllerAttestationService 1379 -#define LN_tcg_ce_migrationControllerAttestationService "Migration Controller Attestation Service" -#define SN_tcg_ce_migrationControllerAttestationService "tcg-ce-migrationControllerAttestationService" -#define NID_tcg_ce_virtualPlatformAttestationService 1378 -#define LN_tcg_ce_virtualPlatformAttestationService "Virtual Platform Attestation Service" -#define SN_tcg_ce_virtualPlatformAttestationService "tcg-ce-virtualPlatformAttestationService" -#define NID_tcg_ce_relevantManifests 1377 -#define LN_tcg_ce_relevantManifests "Relevant Manifests" -#define SN_tcg_ce_relevantManifests "tcg-ce-relevantManifests" -#define NID_tcg_ce_relevantCredentials 1376 -#define LN_tcg_ce_relevantCredentials "Relevant Credentials" -#define SN_tcg_ce_relevantCredentials "tcg-ce-relevantCredentials" -#define NID_tcg_kp_AdditionalPlatformKeyCertificate 1375 -#define LN_tcg_kp_AdditionalPlatformKeyCertificate "Additional Platform Key Certificate" -#define SN_tcg_kp_AdditionalPlatformKeyCertificate "tcg-kp-AdditionalPlatformKeyCertificate" -#define NID_tcg_kp_AdditionalPlatformAttributeCertificate 1374 -#define LN_tcg_kp_AdditionalPlatformAttributeCertificate "Additional Platform Attribute Certificate" -#define SN_tcg_kp_AdditionalPlatformAttributeCertificate "tcg-kp-AdditionalPlatformAttributeCertificate" -#define NID_tcg_kp_DeltaPlatformKeyCertificate 1373 -#define LN_tcg_kp_DeltaPlatformKeyCertificate "Delta Platform Key Certificate" -#define SN_tcg_kp_DeltaPlatformKeyCertificate "tcg-kp-DeltaPlatformKeyCertificate" -#define NID_tcg_kp_DeltaPlatformAttributeCertificate 1372 -#define LN_tcg_kp_DeltaPlatformAttributeCertificate "Delta Platform Attribute Certificate" -#define SN_tcg_kp_DeltaPlatformAttributeCertificate "tcg-kp-DeltaPlatformAttributeCertificate" -#define NID_tcg_kp_PlatformKeyCertificate 1371 -#define LN_tcg_kp_PlatformKeyCertificate "Platform Key Certificate" -#define SN_tcg_kp_PlatformKeyCertificate "tcg-kp-PlatformKeyCertificate" -#define NID_tcg_kp_AIKCertificate 1370 -#define LN_tcg_kp_AIKCertificate "Attestation Identity Key Certificate" -#define SN_tcg_kp_AIKCertificate "tcg-kp-AIKCertificate" -#define NID_tcg_kp_PlatformAttributeCertificate 1369 -#define LN_tcg_kp_PlatformAttributeCertificate "Platform Attribute Certificate" -#define SN_tcg_kp_PlatformAttributeCertificate "tcg-kp-PlatformAttributeCertificate" -#define NID_tcg_kp_EKCertificate 1368 -#define LN_tcg_kp_EKCertificate "Endorsement Key Certificate" -#define SN_tcg_kp_EKCertificate "tcg-kp-EKCertificate" -#define NID_tcg_algorithm_null 1367 -#define LN_tcg_algorithm_null "TCG NULL Algorithm" -#define SN_tcg_algorithm_null "tcg-algorithm-null" -#define NID_tcg_at_platformConfigUri_v3 1366 -#define LN_tcg_at_platformConfigUri_v3 "Platform Configuration URI Version 3" -#define SN_tcg_at_platformConfigUri_v3 "tcg-at-platformConfigUri-v3" -#define NID_tcg_at_platformConfiguration_v3 1365 -#define LN_tcg_at_platformConfiguration_v3 "Platform Configuration Version 3" -#define SN_tcg_at_platformConfiguration_v3 "tcg-at-platformConfiguration-v3" -#define NID_tcg_at_platformConfiguration_v2 1364 -#define LN_tcg_at_platformConfiguration_v2 "Platform Configuration Version 2" -#define SN_tcg_at_platformConfiguration_v2 "tcg-at-platformConfiguration-v2" -#define NID_tcg_at_platformConfiguration_v1 1363 -#define LN_tcg_at_platformConfiguration_v1 "Platform Configuration Version 1" -#define SN_tcg_at_platformConfiguration_v1 "tcg-at-platformConfiguration-v1" -#define NID_tcg_at_cryptographicAnchors 1362 -#define LN_tcg_at_cryptographicAnchors "TCG Cryptographic Anchors" -#define SN_tcg_at_cryptographicAnchors "tcg-at-cryptographicAnchors" -#define NID_tcg_at_tbbSecurityAssertions_v3 1361 -#define LN_tcg_at_tbbSecurityAssertions_v3 "TCG TBB Security Assertions V3" -#define SN_tcg_at_tbbSecurityAssertions_v3 "tcg-at-tbbSecurityAssertions-v3" -#define NID_tcg_at_previousPlatformCertificates 1360 -#define LN_tcg_at_previousPlatformCertificates "TCG Previous Platform Certificates" -#define SN_tcg_at_previousPlatformCertificates "tcg-at-previousPlatformCertificates" -#define NID_tcg_at_tcgCredentialType 1359 -#define LN_tcg_at_tcgCredentialType "TCG Credential Type" -#define SN_tcg_at_tcgCredentialType "tcg-at-tcgCredentialType" -#define NID_tcg_at_tcgCredentialSpecification 1358 -#define LN_tcg_at_tcgCredentialSpecification "TCG Credential Specification" -#define SN_tcg_at_tcgCredentialSpecification "tcg-at-tcgCredentialSpecification" -#define NID_tcg_at_tbbSecurityAssertions 1357 -#define LN_tcg_at_tbbSecurityAssertions "TBB Security Assertions" -#define SN_tcg_at_tbbSecurityAssertions "tcg-at-tbbSecurityAssertions" -#define NID_tcg_at_tpmSecurityAssertions 1356 -#define LN_tcg_at_tpmSecurityAssertions "TPM Security Assertions" -#define SN_tcg_at_tpmSecurityAssertions "tcg-at-tpmSecurityAssertions" -#define NID_tcg_at_tcgPlatformSpecification 1355 -#define LN_tcg_at_tcgPlatformSpecification "TPM Platform Specification" -#define SN_tcg_at_tcgPlatformSpecification "tcg-at-tcgPlatformSpecification" -#define NID_tcg_at_tpmSpecification 1354 -#define LN_tcg_at_tpmSpecification "TPM Specification" -#define SN_tcg_at_tpmSpecification "tcg-at-tpmSpecification" -#define NID_tcg_at_tpmIdLabel 1353 -#define LN_tcg_at_tpmIdLabel "TPM ID Label" -#define SN_tcg_at_tpmIdLabel "tcg-at-tpmIdLabel" -#define NID_tcg_at_tbbSecurityTarget 1352 -#define LN_tcg_at_tbbSecurityTarget "TBB Security Target" -#define SN_tcg_at_tbbSecurityTarget "tcg-at-tbbSecurityTarget" -#define NID_tcg_at_tbbProtectionProfile 1351 -#define LN_tcg_at_tbbProtectionProfile "TBB Protection Profile" -#define SN_tcg_at_tbbProtectionProfile "tcg-at-tbbProtectionProfile" -#define NID_tcg_at_tpmSecurityTarget 1350 -#define LN_tcg_at_tpmSecurityTarget "TPM Security Target" -#define SN_tcg_at_tpmSecurityTarget "tcg-at-tpmSecurityTarget" -#define NID_tcg_at_tpmProtectionProfile 1349 -#define LN_tcg_at_tpmProtectionProfile "TPM Protection Profile" -#define SN_tcg_at_tpmProtectionProfile "tcg-at-tpmProtectionProfile" -#define NID_tcg_at_securityQualities 1348 -#define LN_tcg_at_securityQualities "Security Qualities" -#define SN_tcg_at_securityQualities "tcg-at-securityQualities" -#define NID_tcg_at_tpmVersion 1347 -#define LN_tcg_at_tpmVersion "TPM Version" -#define SN_tcg_at_tpmVersion "tcg-at-tpmVersion" -#define NID_tcg_at_tpmModel 1346 -#define LN_tcg_at_tpmModel "TPM Model" -#define SN_tcg_at_tpmModel "tcg-at-tpmModel" -#define NID_tcg_at_tpmManufacturer 1345 -#define LN_tcg_at_tpmManufacturer "TPM Manufacturer" -#define SN_tcg_at_tpmManufacturer "tcg-at-tpmManufacturer" -#define NID_tcg_at_platformIdentifier 1344 -#define LN_tcg_at_platformIdentifier "TCG Platform Identifier" -#define SN_tcg_at_platformIdentifier "tcg-at-platformIdentifier" -#define NID_tcg_at_platformConfiguration 1343 -#define LN_tcg_at_platformConfiguration "TCG Platform Configuration" -#define SN_tcg_at_platformConfiguration "tcg-at-platformConfiguration" -#define NID_tcg_at_platformSerial 1342 -#define LN_tcg_at_platformSerial "TCG Platform Serial Number" -#define SN_tcg_at_platformSerial "tcg-at-platformSerial" -#define NID_tcg_at_platformVersion 1341 -#define LN_tcg_at_platformVersion "TCG Platform Version" -#define SN_tcg_at_platformVersion "tcg-at-platformVersion" -#define NID_tcg_at_platformModel 1340 -#define LN_tcg_at_platformModel "TCG Platform Model" -#define SN_tcg_at_platformModel "tcg-at-platformModel" -#define NID_tcg_at_platformConfigUri 1339 -#define LN_tcg_at_platformConfigUri "TCG Platform Configuration URI" -#define SN_tcg_at_platformConfigUri "tcg-at-platformConfigUri" -#define NID_tcg_at_platformManufacturerId 1338 -#define LN_tcg_at_platformManufacturerId "TCG Platform Manufacturer ID" -#define SN_tcg_at_platformManufacturerId "tcg-at-platformManufacturerId" -#define NID_tcg_at_platformManufacturerStr 1337 -#define LN_tcg_at_platformManufacturerStr "TCG Platform Manufacturer String" -#define SN_tcg_at_platformManufacturerStr "tcg-at-platformManufacturerStr" -#define NID_tcg_common 1336 -#define LN_tcg_common "Trusted Computing Group Common" -#define SN_tcg_common "tcg-common" -#define NID_tcg_traits 1335 -#define LN_tcg_traits "Trusted Computing Group Traits" -#define SN_tcg_traits "tcg-traits" -#define NID_tcg_registry 1334 -#define LN_tcg_registry "Trusted Computing Group Registry" -#define SN_tcg_registry "tcg-registry" -#define NID_tcg_address 1333 -#define LN_tcg_address "Trusted Computing Group Address Formats" -#define SN_tcg_address "tcg-address" -#define NID_tcg_ca 1332 -#define LN_tcg_ca "Trusted Computing Group Certificate Policies" -#define SN_tcg_ca "tcg-ca" -#define NID_tcg_kp 1331 -#define LN_tcg_kp "Trusted Computing Group Key Purposes" -#define SN_tcg_kp "tcg-kp" -#define NID_tcg_ce 1330 -#define LN_tcg_ce "Trusted Computing Group Certificate Extensions" -#define SN_tcg_ce "tcg-ce" -#define NID_tcg_platformClass 1329 -#define LN_tcg_platformClass "Trusted Computing Group Platform Classes" -#define SN_tcg_platformClass "tcg-platformClass" -#define NID_tcg_algorithm 1328 -#define LN_tcg_algorithm "Trusted Computing Group Algorithms" -#define SN_tcg_algorithm "tcg-algorithm" -#define NID_tcg_protocol 1327 -#define LN_tcg_protocol "Trusted Computing Group Protocols" -#define SN_tcg_protocol "tcg-protocol" -#define NID_tcg_attribute 1326 -#define LN_tcg_attribute "Trusted Computing Group Attributes" -#define SN_tcg_attribute "tcg-attribute" -#define NID_tcg_tcpaSpecVersion 1325 -#define SN_tcg_tcpaSpecVersion "tcg-tcpaSpecVersion" -#define NID_tcg 1324 -#define LN_tcg "Trusted Computing Group" -#define SN_tcg "tcg" -#define NID_zstd 1289 -#define LN_zstd "Zstandard compression" -#define SN_zstd "zstd" -#define NID_brotli 1288 -#define LN_brotli "Brotli compression" -#define SN_brotli "brotli" -#define NID_oracle_jdk_trustedkeyusage 1283 -#define LN_oracle_jdk_trustedkeyusage "Trusted key usage (Oracle)" -#define SN_oracle_jdk_trustedkeyusage "oracle-jdk-trustedkeyusage" -#define NID_oracle 1282 -#define LN_oracle "Oracle organization" -#define SN_oracle "oracle-organization" -#define NID_aes_256_siv 1200 -#define LN_aes_256_siv "aes-256-siv" -#define SN_aes_256_siv "AES-256-SIV" -#define NID_aes_192_siv 1199 -#define LN_aes_192_siv "aes-192-siv" -#define SN_aes_192_siv "AES-192-SIV" -#define NID_aes_128_siv 1198 -#define LN_aes_128_siv "aes-128-siv" -#define SN_aes_128_siv "AES-128-SIV" -#define NID_uacurve9 1169 -#define LN_uacurve9 "DSTU curve 9" -#define SN_uacurve9 "uacurve9" -#define NID_uacurve8 1168 -#define LN_uacurve8 "DSTU curve 8" -#define SN_uacurve8 "uacurve8" -#define NID_uacurve7 1167 -#define LN_uacurve7 "DSTU curve 7" -#define SN_uacurve7 "uacurve7" -#define NID_uacurve6 1166 -#define LN_uacurve6 "DSTU curve 6" -#define SN_uacurve6 "uacurve6" -#define NID_uacurve5 1165 -#define LN_uacurve5 "DSTU curve 5" -#define SN_uacurve5 "uacurve5" -#define NID_uacurve4 1164 -#define LN_uacurve4 "DSTU curve 4" -#define SN_uacurve4 "uacurve4" -#define NID_uacurve3 1163 -#define LN_uacurve3 "DSTU curve 3" -#define SN_uacurve3 "uacurve3" -#define NID_uacurve2 1162 -#define LN_uacurve2 "DSTU curve 2" -#define SN_uacurve2 "uacurve2" -#define NID_uacurve1 1161 -#define LN_uacurve1 "DSTU curve 1" -#define SN_uacurve1 "uacurve1" -#define NID_uacurve0 1160 -#define LN_uacurve0 "DSTU curve 0" -#define SN_uacurve0 "uacurve0" -#define NID_dstu4145be 1159 -#define LN_dstu4145be "DSTU 4145-2002 big endian" -#define SN_dstu4145be "dstu4145be" -#define NID_dstu4145le 1158 -#define LN_dstu4145le "DSTU 4145-2002 little endian" -#define SN_dstu4145le "dstu4145le" -#define NID_dstu34311 1157 -#define LN_dstu34311 "DSTU Gost 34311-95" -#define SN_dstu34311 "dstu34311" -#define NID_hmacWithDstu34311 1156 -#define LN_hmacWithDstu34311 "HMAC DSTU Gost 34311-95" -#define SN_hmacWithDstu34311 "hmacWithDstu34311" -#define NID_dstu28147_wrap 1155 -#define LN_dstu28147_wrap "DSTU Gost 28147-2009 key wrap" -#define SN_dstu28147_wrap "dstu28147-wrap" -#define NID_dstu28147_cfb 1154 -#define LN_dstu28147_cfb "DSTU Gost 28147-2009 CFB mode" -#define SN_dstu28147_cfb "dstu28147-cfb" -#define NID_dstu28147_ofb 1153 -#define LN_dstu28147_ofb "DSTU Gost 28147-2009 OFB mode" -#define SN_dstu28147_ofb "dstu28147-ofb" -#define NID_dstu28147 1152 -#define LN_dstu28147 "DSTU Gost 28147-2009" -#define SN_dstu28147 "dstu28147" -#define NID_ua_pki 1151 -#define SN_ua_pki "ua-pki" -#define NID_ISO_UA 1150 -#define SN_ISO_UA "ISO-UA" -#define NID_modp_8192 1217 -#define SN_modp_8192 "modp_8192" -#define NID_modp_6144 1216 -#define SN_modp_6144 "modp_6144" -#define NID_modp_4096 1215 -#define SN_modp_4096 "modp_4096" -#define NID_modp_3072 1214 -#define SN_modp_3072 "modp_3072" -#define NID_modp_2048 1213 -#define SN_modp_2048 "modp_2048" -#define NID_modp_1536 1212 -#define SN_modp_1536 "modp_1536" -#define NID_ffdhe8192 1130 -#define SN_ffdhe8192 "ffdhe8192" -#define NID_ffdhe6144 1129 -#define SN_ffdhe6144 "ffdhe6144" -#define NID_ffdhe4096 1128 -#define SN_ffdhe4096 "ffdhe4096" -#define NID_ffdhe3072 1127 -#define SN_ffdhe3072 "ffdhe3072" -#define NID_ffdhe2048 1126 -#define SN_ffdhe2048 "ffdhe2048" -#define NID_siphash 1062 -#define LN_siphash "siphash" -#define SN_siphash "SipHash" -#define NID_poly1305 1061 -#define LN_poly1305 "poly1305" -#define SN_poly1305 "Poly1305" -#define NID_auth_any 1064 -#define LN_auth_any "auth-any" -#define SN_auth_any "AuthANY" -#define NID_auth_null 1053 -#define LN_auth_null "auth-null" -#define SN_auth_null "AuthNULL" -#define NID_auth_srp 1052 -#define LN_auth_srp "auth-srp" -#define SN_auth_srp "AuthSRP" -#define NID_auth_gost12 1051 -#define LN_auth_gost12 "auth-gost12" -#define SN_auth_gost12 "AuthGOST12" -#define NID_auth_gost01 1050 -#define LN_auth_gost01 "auth-gost01" -#define SN_auth_gost01 "AuthGOST01" -#define NID_auth_dss 1049 -#define LN_auth_dss "auth-dss" -#define SN_auth_dss "AuthDSS" -#define NID_auth_psk 1048 -#define LN_auth_psk "auth-psk" -#define SN_auth_psk "AuthPSK" -#define NID_auth_ecdsa 1047 -#define LN_auth_ecdsa "auth-ecdsa" -#define SN_auth_ecdsa "AuthECDSA" -#define NID_auth_rsa 1046 -#define LN_auth_rsa "auth-rsa" -#define SN_auth_rsa "AuthRSA" -#define NID_kx_any 1063 -#define LN_kx_any "kx-any" -#define SN_kx_any "KxANY" -#define NID_kx_gost18 1218 -#define LN_kx_gost18 "kx-gost18" -#define SN_kx_gost18 "KxGOST18" -#define NID_kx_gost 1045 -#define LN_kx_gost "kx-gost" -#define SN_kx_gost "KxGOST" -#define NID_kx_srp 1044 -#define LN_kx_srp "kx-srp" -#define SN_kx_srp "KxSRP" -#define NID_kx_psk 1043 -#define LN_kx_psk "kx-psk" -#define SN_kx_psk "KxPSK" -#define NID_kx_rsa_psk 1042 -#define LN_kx_rsa_psk "kx-rsa-psk" -#define SN_kx_rsa_psk "KxRSA_PSK" -#define NID_kx_dhe_psk 1041 -#define LN_kx_dhe_psk "kx-dhe-psk" -#define SN_kx_dhe_psk "KxDHE-PSK" -#define NID_kx_ecdhe_psk 1040 -#define LN_kx_ecdhe_psk "kx-ecdhe-psk" -#define SN_kx_ecdhe_psk "KxECDHE-PSK" -#define NID_kx_dhe 1039 -#define LN_kx_dhe "kx-dhe" -#define SN_kx_dhe "KxDHE" -#define NID_kx_ecdhe 1038 -#define LN_kx_ecdhe "kx-ecdhe" -#define SN_kx_ecdhe "KxECDHE" -#define NID_kx_rsa 1037 -#define LN_kx_rsa "kx-rsa" -#define SN_kx_rsa "KxRSA" -#define SN_ED448 "ED448" -#define SN_ED25519 "ED25519" -#define NID_X448 1035 -#define SN_X448 "X448" -#define NID_X25519 1034 -#define SN_X25519 "X25519" -#define NID_pkInitKDC 1033 -#define LN_pkInitKDC "Signing KDC Response" -#define SN_pkInitKDC "pkInitKDC" -#define NID_pkInitClientAuth 1032 -#define LN_pkInitClientAuth "PKINIT Client Auth" -#define SN_pkInitClientAuth "pkInitClientAuth" -#define NID_id_pkinit 1031 -#define SN_id_pkinit "id-pkinit" -#define NID_x963kdf 1206 -#define LN_x963kdf "x963kdf" -#define SN_x963kdf "X963KDF" -#define NID_x942kdf 1207 -#define LN_x942kdf "x942kdf" -#define SN_x942kdf "X942KDF" -#define NID_sskdf 1205 -#define LN_sskdf "sskdf" -#define SN_sskdf "SSKDF" -#define NID_sshkdf 1203 -#define LN_sshkdf "sshkdf" -#define SN_sshkdf "SSHKDF" -#define NID_hkdf 1036 -#define LN_hkdf "hkdf" -#define SN_hkdf "HKDF" -#define NID_tls1_prf 1021 -#define LN_tls1_prf "tls1-prf" -#define SN_tls1_prf "TLS1-PRF" -#define NID_id_scrypt 973 -#define LN_id_scrypt "scrypt" -#define SN_id_scrypt "id-scrypt" -#define NID_jurisdictionCountryName 957 -#define LN_jurisdictionCountryName "jurisdictionCountryName" -#define SN_jurisdictionCountryName "jurisdictionC" -#define NID_jurisdictionStateOrProvinceName 956 -#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" -#define SN_jurisdictionStateOrProvinceName "jurisdictionST" -#define NID_jurisdictionLocalityName 955 -#define LN_jurisdictionLocalityName "jurisdictionLocalityName" -#define SN_jurisdictionLocalityName "jurisdictionL" -#define NID_ct_cert_scts 954 -#define LN_ct_cert_scts "CT Certificate SCTs" -#define SN_ct_cert_scts "ct_cert_scts" -#define NID_ct_precert_signer 953 -#define LN_ct_precert_signer "CT Precertificate Signer" -#define SN_ct_precert_signer "ct_precert_signer" -#define NID_ct_precert_poison 952 -#define LN_ct_precert_poison "CT Precertificate Poison" -#define SN_ct_precert_poison "ct_precert_poison" -#define NID_ct_precert_scts 951 -#define LN_ct_precert_scts "CT Precertificate SCTs" -#define SN_ct_precert_scts "ct_precert_scts" -#define NID_dh_cofactor_kdf 947 -#define SN_dh_cofactor_kdf "dh-cofactor-kdf" -#define NID_dh_std_kdf 946 -#define SN_dh_std_kdf "dh-std-kdf" -#define NID_dhSinglePass_cofactorDH_sha512kdf_scheme 945 -#define SN_dhSinglePass_cofactorDH_sha512kdf_scheme "dhSinglePass-cofactorDH-sha512kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha384kdf_scheme 944 -#define SN_dhSinglePass_cofactorDH_sha384kdf_scheme "dhSinglePass-cofactorDH-sha384kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha256kdf_scheme 943 -#define SN_dhSinglePass_cofactorDH_sha256kdf_scheme "dhSinglePass-cofactorDH-sha256kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha224kdf_scheme 942 -#define SN_dhSinglePass_cofactorDH_sha224kdf_scheme "dhSinglePass-cofactorDH-sha224kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha1kdf_scheme 941 -#define SN_dhSinglePass_cofactorDH_sha1kdf_scheme "dhSinglePass-cofactorDH-sha1kdf-scheme" -#define NID_dhSinglePass_stdDH_sha512kdf_scheme 940 -#define SN_dhSinglePass_stdDH_sha512kdf_scheme "dhSinglePass-stdDH-sha512kdf-scheme" -#define NID_dhSinglePass_stdDH_sha384kdf_scheme 939 -#define SN_dhSinglePass_stdDH_sha384kdf_scheme "dhSinglePass-stdDH-sha384kdf-scheme" -#define NID_dhSinglePass_stdDH_sha256kdf_scheme 938 -#define SN_dhSinglePass_stdDH_sha256kdf_scheme "dhSinglePass-stdDH-sha256kdf-scheme" -#define NID_dhSinglePass_stdDH_sha224kdf_scheme 937 -#define SN_dhSinglePass_stdDH_sha224kdf_scheme "dhSinglePass-stdDH-sha224kdf-scheme" -#define NID_dhSinglePass_stdDH_sha1kdf_scheme 936 -#define SN_dhSinglePass_stdDH_sha1kdf_scheme "dhSinglePass-stdDH-sha1kdf-scheme" -#define NID_brainpoolP512t1 934 -#define SN_brainpoolP512t1 "brainpoolP512t1" -#define NID_brainpoolP512r1tls13 1287 -#define SN_brainpoolP512r1tls13 "brainpoolP512r1tls13" -#define NID_brainpoolP512r1 933 -#define SN_brainpoolP512r1 "brainpoolP512r1" -#define NID_brainpoolP384t1 932 -#define SN_brainpoolP384t1 "brainpoolP384t1" -#define NID_brainpoolP384r1tls13 1286 -#define SN_brainpoolP384r1tls13 "brainpoolP384r1tls13" -#define NID_brainpoolP384r1 931 -#define SN_brainpoolP384r1 "brainpoolP384r1" -#define NID_brainpoolP320t1 930 -#define SN_brainpoolP320t1 "brainpoolP320t1" -#define NID_brainpoolP320r1 929 -#define SN_brainpoolP320r1 "brainpoolP320r1" -#define NID_brainpoolP256t1 928 -#define SN_brainpoolP256t1 "brainpoolP256t1" -#define NID_brainpoolP256r1tls13 1285 -#define SN_brainpoolP256r1tls13 "brainpoolP256r1tls13" -#define NID_brainpoolP256r1 927 -#define SN_brainpoolP256r1 "brainpoolP256r1" -#define NID_brainpoolP224t1 926 -#define SN_brainpoolP224t1 "brainpoolP224t1" -#define NID_brainpoolP224r1 925 -#define SN_brainpoolP224r1 "brainpoolP224r1" -#define NID_brainpoolP192t1 924 -#define SN_brainpoolP192t1 "brainpoolP192t1" -#define NID_brainpoolP192r1 923 -#define SN_brainpoolP192r1 "brainpoolP192r1" -#define NID_brainpoolP160t1 922 -#define SN_brainpoolP160t1 "brainpoolP160t1" -#define NID_brainpoolP160r1 921 -#define SN_brainpoolP160r1 "brainpoolP160r1" -#define NID_dhpublicnumber 920 -#define LN_dhpublicnumber "X9.42 DH" -#define SN_dhpublicnumber "dhpublicnumber" -#define NID_chacha20 1019 -#define LN_chacha20 "chacha20" -#define SN_chacha20 "ChaCha20" -#define NID_chacha20_poly1305 1018 -#define LN_chacha20_poly1305 "chacha20-poly1305" -#define SN_chacha20_poly1305 "ChaCha20-Poly1305" -#define NID_aes_256_cbc_hmac_sha256 950 -#define LN_aes_256_cbc_hmac_sha256 "aes-256-cbc-hmac-sha256" -#define SN_aes_256_cbc_hmac_sha256 "AES-256-CBC-HMAC-SHA256" -#define NID_aes_192_cbc_hmac_sha256 949 -#define LN_aes_192_cbc_hmac_sha256 "aes-192-cbc-hmac-sha256" -#define SN_aes_192_cbc_hmac_sha256 "AES-192-CBC-HMAC-SHA256" -#define NID_aes_128_cbc_hmac_sha256 948 -#define LN_aes_128_cbc_hmac_sha256 "aes-128-cbc-hmac-sha256" -#define SN_aes_128_cbc_hmac_sha256 "AES-128-CBC-HMAC-SHA256" -#define NID_aes_256_cbc_hmac_sha1 918 -#define LN_aes_256_cbc_hmac_sha1 "aes-256-cbc-hmac-sha1" -#define SN_aes_256_cbc_hmac_sha1 "AES-256-CBC-HMAC-SHA1" -#define NID_aes_192_cbc_hmac_sha1 917 -#define LN_aes_192_cbc_hmac_sha1 "aes-192-cbc-hmac-sha1" -#define SN_aes_192_cbc_hmac_sha1 "AES-192-CBC-HMAC-SHA1" -#define NID_aes_128_cbc_hmac_sha1 916 -#define LN_aes_128_cbc_hmac_sha1 "aes-128-cbc-hmac-sha1" -#define SN_aes_128_cbc_hmac_sha1 "AES-128-CBC-HMAC-SHA1" -#define NID_rc4_hmac_md5 915 -#define LN_rc4_hmac_md5 "rc4-hmac-md5" -#define SN_rc4_hmac_md5 "RC4-HMAC-MD5" -#define NID_cmac 894 -#define LN_cmac "cmac" -#define SN_cmac "CMAC" -#define LN_hmac "hmac" -#define SN_hmac "HMAC" -#define NID_sm4_xts 1290 -#define LN_sm4_xts "sm4-xts" -#define SN_sm4_xts "SM4-XTS" -#define NID_sm4_ccm 1249 -#define LN_sm4_ccm "sm4-ccm" -#define SN_sm4_ccm "SM4-CCM" -#define NID_sm4_gcm 1248 -#define LN_sm4_gcm "sm4-gcm" -#define SN_sm4_gcm "SM4-GCM" -#define NID_sm4_ctr 1139 -#define LN_sm4_ctr "sm4-ctr" -#define SN_sm4_ctr "SM4-CTR" -#define NID_sm4_cfb8 1138 -#define LN_sm4_cfb8 "sm4-cfb8" -#define SN_sm4_cfb8 "SM4-CFB8" -#define NID_sm4_cfb1 1136 -#define LN_sm4_cfb1 "sm4-cfb1" -#define SN_sm4_cfb1 "SM4-CFB1" -#define NID_sm4_cfb128 1137 -#define LN_sm4_cfb128 "sm4-cfb" -#define SN_sm4_cfb128 "SM4-CFB" -#define NID_sm4_ofb128 1135 -#define LN_sm4_ofb128 "sm4-ofb" -#define SN_sm4_ofb128 "SM4-OFB" -#define NID_sm4_cbc 1134 -#define LN_sm4_cbc "sm4-cbc" -#define SN_sm4_cbc "SM4-CBC" -#define NID_sm4_ecb 1133 -#define LN_sm4_ecb "sm4-ecb" -#define SN_sm4_ecb "SM4-ECB" -#define NID_seed_ofb128 778 -#define LN_seed_ofb128 "seed-ofb" -#define SN_seed_ofb128 "SEED-OFB" -#define NID_seed_cfb128 779 -#define LN_seed_cfb128 "seed-cfb" -#define SN_seed_cfb128 "SEED-CFB" -#define NID_seed_cbc 777 -#define LN_seed_cbc "seed-cbc" -#define SN_seed_cbc "SEED-CBC" -#define NID_seed_ecb 776 -#define LN_seed_ecb "seed-ecb" -#define SN_seed_ecb "SEED-ECB" -#define NID_kisa 773 -#define LN_kisa "kisa" -#define SN_kisa "KISA" -#define NID_aria_256_gcm 1125 -#define LN_aria_256_gcm "aria-256-gcm" -#define SN_aria_256_gcm "ARIA-256-GCM" -#define NID_aria_192_gcm 1124 -#define LN_aria_192_gcm "aria-192-gcm" -#define SN_aria_192_gcm "ARIA-192-GCM" -#define NID_aria_128_gcm 1123 -#define LN_aria_128_gcm "aria-128-gcm" -#define SN_aria_128_gcm "ARIA-128-GCM" -#define NID_aria_256_ccm 1122 -#define LN_aria_256_ccm "aria-256-ccm" -#define SN_aria_256_ccm "ARIA-256-CCM" -#define NID_aria_192_ccm 1121 -#define LN_aria_192_ccm "aria-192-ccm" -#define SN_aria_192_ccm "ARIA-192-CCM" -#define NID_aria_128_ccm 1120 -#define LN_aria_128_ccm "aria-128-ccm" -#define SN_aria_128_ccm "ARIA-128-CCM" -#define NID_aria_256_cfb8 1085 -#define LN_aria_256_cfb8 "aria-256-cfb8" -#define SN_aria_256_cfb8 "ARIA-256-CFB8" -#define NID_aria_192_cfb8 1084 -#define LN_aria_192_cfb8 "aria-192-cfb8" -#define SN_aria_192_cfb8 "ARIA-192-CFB8" -#define NID_aria_128_cfb8 1083 -#define LN_aria_128_cfb8 "aria-128-cfb8" -#define SN_aria_128_cfb8 "ARIA-128-CFB8" -#define NID_aria_256_cfb1 1082 -#define LN_aria_256_cfb1 "aria-256-cfb1" -#define SN_aria_256_cfb1 "ARIA-256-CFB1" -#define NID_aria_192_cfb1 1081 -#define LN_aria_192_cfb1 "aria-192-cfb1" -#define SN_aria_192_cfb1 "ARIA-192-CFB1" -#define NID_aria_128_cfb1 1080 -#define LN_aria_128_cfb1 "aria-128-cfb1" -#define SN_aria_128_cfb1 "ARIA-128-CFB1" -#define NID_aria_256_ctr 1079 -#define LN_aria_256_ctr "aria-256-ctr" -#define SN_aria_256_ctr "ARIA-256-CTR" -#define NID_aria_256_ofb128 1078 -#define LN_aria_256_ofb128 "aria-256-ofb" -#define SN_aria_256_ofb128 "ARIA-256-OFB" -#define NID_aria_256_cfb128 1077 -#define LN_aria_256_cfb128 "aria-256-cfb" -#define SN_aria_256_cfb128 "ARIA-256-CFB" -#define NID_aria_256_cbc 1076 -#define LN_aria_256_cbc "aria-256-cbc" -#define SN_aria_256_cbc "ARIA-256-CBC" -#define NID_aria_256_ecb 1075 -#define LN_aria_256_ecb "aria-256-ecb" -#define SN_aria_256_ecb "ARIA-256-ECB" -#define NID_aria_192_ctr 1074 -#define LN_aria_192_ctr "aria-192-ctr" -#define SN_aria_192_ctr "ARIA-192-CTR" -#define NID_aria_192_ofb128 1073 -#define LN_aria_192_ofb128 "aria-192-ofb" -#define SN_aria_192_ofb128 "ARIA-192-OFB" -#define NID_aria_192_cfb128 1072 -#define LN_aria_192_cfb128 "aria-192-cfb" -#define SN_aria_192_cfb128 "ARIA-192-CFB" -#define NID_aria_192_cbc 1071 -#define LN_aria_192_cbc "aria-192-cbc" -#define SN_aria_192_cbc "ARIA-192-CBC" -#define NID_aria_192_ecb 1070 -#define LN_aria_192_ecb "aria-192-ecb" -#define SN_aria_192_ecb "ARIA-192-ECB" -#define NID_aria_128_ctr 1069 -#define LN_aria_128_ctr "aria-128-ctr" -#define SN_aria_128_ctr "ARIA-128-CTR" -#define NID_aria_128_ofb128 1068 -#define LN_aria_128_ofb128 "aria-128-ofb" -#define SN_aria_128_ofb128 "ARIA-128-OFB" -#define NID_aria_128_cfb128 1067 -#define LN_aria_128_cfb128 "aria-128-cfb" -#define SN_aria_128_cfb128 "ARIA-128-CFB" -#define NID_aria_128_cbc 1066 -#define LN_aria_128_cbc "aria-128-cbc" -#define SN_aria_128_cbc "ARIA-128-CBC" -#define NID_aria_128_ecb 1065 -#define LN_aria_128_ecb "aria-128-ecb" -#define SN_aria_128_ecb "ARIA-128-ECB" -#define NID_camellia_256_cfb8 765 -#define LN_camellia_256_cfb8 "camellia-256-cfb8" -#define SN_camellia_256_cfb8 "CAMELLIA-256-CFB8" -#define NID_camellia_192_cfb8 764 -#define LN_camellia_192_cfb8 "camellia-192-cfb8" -#define SN_camellia_192_cfb8 "CAMELLIA-192-CFB8" -#define NID_camellia_128_cfb8 763 -#define LN_camellia_128_cfb8 "camellia-128-cfb8" -#define SN_camellia_128_cfb8 "CAMELLIA-128-CFB8" -#define NID_camellia_256_cfb1 762 -#define LN_camellia_256_cfb1 "camellia-256-cfb1" -#define SN_camellia_256_cfb1 "CAMELLIA-256-CFB1" -#define NID_camellia_192_cfb1 761 -#define LN_camellia_192_cfb1 "camellia-192-cfb1" -#define SN_camellia_192_cfb1 "CAMELLIA-192-CFB1" -#define NID_camellia_128_cfb1 760 -#define LN_camellia_128_cfb1 "camellia-128-cfb1" -#define SN_camellia_128_cfb1 "CAMELLIA-128-CFB1" -#define NID_camellia_256_cmac 972 -#define LN_camellia_256_cmac "camellia-256-cmac" -#define SN_camellia_256_cmac "CAMELLIA-256-CMAC" -#define NID_camellia_256_ctr 971 -#define LN_camellia_256_ctr "camellia-256-ctr" -#define SN_camellia_256_ctr "CAMELLIA-256-CTR" -#define NID_camellia_256_ccm 970 -#define LN_camellia_256_ccm "camellia-256-ccm" -#define SN_camellia_256_ccm "CAMELLIA-256-CCM" -#define NID_camellia_256_gcm 969 -#define LN_camellia_256_gcm "camellia-256-gcm" -#define SN_camellia_256_gcm "CAMELLIA-256-GCM" -#define NID_camellia_256_cfb128 759 -#define LN_camellia_256_cfb128 "camellia-256-cfb" -#define SN_camellia_256_cfb128 "CAMELLIA-256-CFB" -#define NID_camellia_256_ofb128 768 -#define LN_camellia_256_ofb128 "camellia-256-ofb" -#define SN_camellia_256_ofb128 "CAMELLIA-256-OFB" -#define NID_camellia_256_ecb 756 -#define LN_camellia_256_ecb "camellia-256-ecb" -#define SN_camellia_256_ecb "CAMELLIA-256-ECB" -#define NID_camellia_192_cmac 968 -#define LN_camellia_192_cmac "camellia-192-cmac" -#define SN_camellia_192_cmac "CAMELLIA-192-CMAC" -#define NID_camellia_192_ctr 967 -#define LN_camellia_192_ctr "camellia-192-ctr" -#define SN_camellia_192_ctr "CAMELLIA-192-CTR" -#define NID_camellia_192_ccm 966 -#define LN_camellia_192_ccm "camellia-192-ccm" -#define SN_camellia_192_ccm "CAMELLIA-192-CCM" -#define NID_camellia_192_gcm 965 -#define LN_camellia_192_gcm "camellia-192-gcm" -#define SN_camellia_192_gcm "CAMELLIA-192-GCM" -#define NID_camellia_192_cfb128 758 -#define LN_camellia_192_cfb128 "camellia-192-cfb" -#define SN_camellia_192_cfb128 "CAMELLIA-192-CFB" -#define NID_camellia_192_ofb128 767 -#define LN_camellia_192_ofb128 "camellia-192-ofb" -#define SN_camellia_192_ofb128 "CAMELLIA-192-OFB" -#define NID_camellia_192_ecb 755 -#define LN_camellia_192_ecb "camellia-192-ecb" -#define SN_camellia_192_ecb "CAMELLIA-192-ECB" -#define NID_camellia_128_cmac 964 -#define LN_camellia_128_cmac "camellia-128-cmac" -#define SN_camellia_128_cmac "CAMELLIA-128-CMAC" -#define NID_camellia_128_ctr 963 -#define LN_camellia_128_ctr "camellia-128-ctr" -#define SN_camellia_128_ctr "CAMELLIA-128-CTR" -#define NID_camellia_128_ccm 962 -#define LN_camellia_128_ccm "camellia-128-ccm" -#define SN_camellia_128_ccm "CAMELLIA-128-CCM" -#define NID_camellia_128_gcm 961 -#define LN_camellia_128_gcm "camellia-128-gcm" -#define SN_camellia_128_gcm "CAMELLIA-128-GCM" -#define NID_camellia_128_cfb128 757 -#define LN_camellia_128_cfb128 "camellia-128-cfb" -#define SN_camellia_128_cfb128 "CAMELLIA-128-CFB" -#define NID_camellia_128_ofb128 766 -#define LN_camellia_128_ofb128 "camellia-128-ofb" -#define SN_camellia_128_ofb128 "CAMELLIA-128-OFB" -#define NID_camellia_128_ecb 754 -#define LN_camellia_128_ecb "camellia-128-ecb" -#define SN_camellia_128_ecb "CAMELLIA-128-ECB" -#define NID_id_camellia256_wrap 909 -#define SN_id_camellia256_wrap "id-camellia256-wrap" -#define NID_id_camellia192_wrap 908 -#define SN_id_camellia192_wrap "id-camellia192-wrap" -#define NID_id_camellia128_wrap 907 -#define SN_id_camellia128_wrap "id-camellia128-wrap" -#define NID_camellia_256_cbc 753 -#define LN_camellia_256_cbc "camellia-256-cbc" -#define SN_camellia_256_cbc "CAMELLIA-256-CBC" -#define NID_camellia_192_cbc 752 -#define LN_camellia_192_cbc "camellia-192-cbc" -#define SN_camellia_192_cbc "CAMELLIA-192-CBC" -#define NID_camellia_128_cbc 751 -#define LN_camellia_128_cbc "camellia-128-cbc" -#define SN_camellia_128_cbc "CAMELLIA-128-CBC" -#define NID_magma_mac 1192 -#define SN_magma_mac "magma-mac" -#define NID_magma_cfb 1191 -#define SN_magma_cfb "magma-cfb" -#define NID_magma_cbc 1190 -#define SN_magma_cbc "magma-cbc" -#define NID_magma_ofb 1189 -#define SN_magma_ofb "magma-ofb" -#define NID_magma_ctr 1188 -#define SN_magma_ctr "magma-ctr" -#define NID_magma_ecb 1187 -#define SN_magma_ecb "magma-ecb" -#define NID_kuznyechik_mac 1017 -#define SN_kuznyechik_mac "kuznyechik-mac" -#define NID_kuznyechik_cfb 1016 -#define SN_kuznyechik_cfb "kuznyechik-cfb" -#define NID_kuznyechik_cbc 1015 -#define SN_kuznyechik_cbc "kuznyechik-cbc" -#define NID_kuznyechik_ofb 1014 -#define SN_kuznyechik_ofb "kuznyechik-ofb" -#define NID_kuznyechik_ctr 1013 -#define SN_kuznyechik_ctr "kuznyechik-ctr" -#define NID_kuznyechik_ecb 1012 -#define SN_kuznyechik_ecb "kuznyechik-ecb" -#define NID_classSignToolKA1 1233 -#define LN_classSignToolKA1 "Class of Signing Tool KA1" -#define SN_classSignToolKA1 "classSignToolKA1" -#define NID_classSignToolKB2 1232 -#define LN_classSignToolKB2 "Class of Signing Tool KB2" -#define SN_classSignToolKB2 "classSignToolKB2" -#define NID_classSignToolKB1 1231 -#define LN_classSignToolKB1 "Class of Signing Tool KB1" -#define SN_classSignToolKB1 "classSignToolKB1" -#define NID_classSignToolKC3 1230 -#define LN_classSignToolKC3 "Class of Signing Tool KC3" -#define SN_classSignToolKC3 "classSignToolKC3" -#define NID_classSignToolKC2 1229 -#define LN_classSignToolKC2 "Class of Signing Tool KC2" -#define SN_classSignToolKC2 "classSignToolKC2" -#define NID_classSignToolKC1 1228 -#define LN_classSignToolKC1 "Class of Signing Tool KC1" -#define SN_classSignToolKC1 "classSignToolKC1" -#define NID_classSignTool 1227 -#define LN_classSignTool "Class of Signing Tool" -#define SN_classSignTool "classSignTool" -#define NID_issuerSignTool 1008 -#define LN_issuerSignTool "Signing Tool of Issuer" -#define SN_issuerSignTool "issuerSignTool" -#define NID_subjectSignTool 1007 -#define LN_subjectSignTool "Signing Tool of Subject" -#define SN_subjectSignTool "subjectSignTool" -#define NID_OGRNIP 1226 -#define LN_OGRNIP "OGRNIP" -#define SN_OGRNIP "OGRNIP" -#define NID_SNILS 1006 -#define LN_SNILS "SNILS" -#define SN_SNILS "SNILS" -#define NID_OGRN 1005 -#define LN_OGRN "OGRN" -#define SN_OGRN "OGRN" -#define NID_INN 1004 -#define LN_INN "INN" -#define SN_INN "INN" -#define NID_id_tc26_gost_28147_param_Z 1003 -#define LN_id_tc26_gost_28147_param_Z "GOST 28147-89 TC26 parameter set" -#define SN_id_tc26_gost_28147_param_Z "id-tc26-gost-28147-param-Z" -#define NID_id_tc26_gost_28147_constants 1002 -#define SN_id_tc26_gost_28147_constants "id-tc26-gost-28147-constants" -#define NID_id_tc26_cipher_constants 1001 -#define SN_id_tc26_cipher_constants "id-tc26-cipher-constants" -#define NID_id_tc26_digest_constants 1000 -#define SN_id_tc26_digest_constants "id-tc26-digest-constants" -#define NID_id_tc26_gost_3410_2012_512_paramSetC 1149 -#define LN_id_tc26_gost_3410_2012_512_paramSetC "GOST R 34.10-2012 (512 bit) ParamSet C" -#define SN_id_tc26_gost_3410_2012_512_paramSetC "id-tc26-gost-3410-2012-512-paramSetC" -#define NID_id_tc26_gost_3410_2012_512_paramSetB 999 -#define LN_id_tc26_gost_3410_2012_512_paramSetB "GOST R 34.10-2012 (512 bit) ParamSet B" -#define SN_id_tc26_gost_3410_2012_512_paramSetB "id-tc26-gost-3410-2012-512-paramSetB" -#define NID_id_tc26_gost_3410_2012_512_paramSetA 998 -#define LN_id_tc26_gost_3410_2012_512_paramSetA "GOST R 34.10-2012 (512 bit) ParamSet A" -#define SN_id_tc26_gost_3410_2012_512_paramSetA "id-tc26-gost-3410-2012-512-paramSetA" -#define NID_id_tc26_gost_3410_2012_512_paramSetTest 997 -#define LN_id_tc26_gost_3410_2012_512_paramSetTest "GOST R 34.10-2012 (512 bit) testing parameter set" -#define SN_id_tc26_gost_3410_2012_512_paramSetTest "id-tc26-gost-3410-2012-512-paramSetTest" -#define NID_id_tc26_gost_3410_2012_512_constants 996 -#define SN_id_tc26_gost_3410_2012_512_constants "id-tc26-gost-3410-2012-512-constants" -#define NID_id_tc26_gost_3410_2012_256_paramSetD 1186 -#define LN_id_tc26_gost_3410_2012_256_paramSetD "GOST R 34.10-2012 (256 bit) ParamSet D" -#define SN_id_tc26_gost_3410_2012_256_paramSetD "id-tc26-gost-3410-2012-256-paramSetD" -#define NID_id_tc26_gost_3410_2012_256_paramSetC 1185 -#define LN_id_tc26_gost_3410_2012_256_paramSetC "GOST R 34.10-2012 (256 bit) ParamSet C" -#define SN_id_tc26_gost_3410_2012_256_paramSetC "id-tc26-gost-3410-2012-256-paramSetC" -#define NID_id_tc26_gost_3410_2012_256_paramSetB 1184 -#define LN_id_tc26_gost_3410_2012_256_paramSetB "GOST R 34.10-2012 (256 bit) ParamSet B" -#define SN_id_tc26_gost_3410_2012_256_paramSetB "id-tc26-gost-3410-2012-256-paramSetB" -#define NID_id_tc26_gost_3410_2012_256_paramSetA 1148 -#define LN_id_tc26_gost_3410_2012_256_paramSetA "GOST R 34.10-2012 (256 bit) ParamSet A" -#define SN_id_tc26_gost_3410_2012_256_paramSetA "id-tc26-gost-3410-2012-256-paramSetA" -#define NID_id_tc26_gost_3410_2012_256_constants 1147 -#define SN_id_tc26_gost_3410_2012_256_constants "id-tc26-gost-3410-2012-256-constants" -#define NID_id_tc26_sign_constants 995 -#define SN_id_tc26_sign_constants "id-tc26-sign-constants" -#define NID_id_tc26_constants 994 -#define SN_id_tc26_constants "id-tc26-constants" -#define NID_kuznyechik_kexp15 1183 -#define SN_kuznyechik_kexp15 "kuznyechik-kexp15" -#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik 1182 -#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik "id-tc26-wrap-gostr3412-2015-kuznyechik" -#define NID_magma_kexp15 1181 -#define SN_magma_kexp15 "magma-kexp15" -#define NID_id_tc26_wrap_gostr3412_2015_magma 1180 -#define SN_id_tc26_wrap_gostr3412_2015_magma "id-tc26-wrap-gostr3412-2015-magma" -#define NID_id_tc26_wrap 1179 -#define SN_id_tc26_wrap "id-tc26-wrap" -#define NID_id_tc26_agreement_gost_3410_2012_512 993 -#define SN_id_tc26_agreement_gost_3410_2012_512 "id-tc26-agreement-gost-3410-2012-512" -#define NID_id_tc26_agreement_gost_3410_2012_256 992 -#define SN_id_tc26_agreement_gost_3410_2012_256 "id-tc26-agreement-gost-3410-2012-256" -#define NID_id_tc26_agreement 991 -#define SN_id_tc26_agreement "id-tc26-agreement" -#define NID_kuznyechik_ctr_acpkm_omac 1178 -#define SN_kuznyechik_ctr_acpkm_omac "kuznyechik-ctr-acpkm-omac" -#define NID_kuznyechik_ctr_acpkm 1177 -#define SN_kuznyechik_ctr_acpkm "kuznyechik-ctr-acpkm" -#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik 1176 -#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik "id-tc26-cipher-gostr3412-2015-kuznyechik" -#define NID_magma_ctr_acpkm_omac 1175 -#define SN_magma_ctr_acpkm_omac "magma-ctr-acpkm-omac" -#define NID_magma_ctr_acpkm 1174 -#define SN_magma_ctr_acpkm "magma-ctr-acpkm" -#define NID_id_tc26_cipher_gostr3412_2015_magma 1173 -#define SN_id_tc26_cipher_gostr3412_2015_magma "id-tc26-cipher-gostr3412-2015-magma" -#define NID_id_tc26_cipher 990 -#define SN_id_tc26_cipher "id-tc26-cipher" -#define NID_id_tc26_hmac_gost_3411_2012_512 989 -#define LN_id_tc26_hmac_gost_3411_2012_512 "HMAC GOST 34.11-2012 512 bit" -#define SN_id_tc26_hmac_gost_3411_2012_512 "id-tc26-hmac-gost-3411-2012-512" -#define NID_id_tc26_hmac_gost_3411_2012_256 988 -#define LN_id_tc26_hmac_gost_3411_2012_256 "HMAC GOST 34.11-2012 256 bit" -#define SN_id_tc26_hmac_gost_3411_2012_256 "id-tc26-hmac-gost-3411-2012-256" -#define NID_id_tc26_mac 987 -#define SN_id_tc26_mac "id-tc26-mac" -#define NID_id_tc26_signwithdigest_gost3410_2012_512 986 -#define LN_id_tc26_signwithdigest_gost3410_2012_512 "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" -#define SN_id_tc26_signwithdigest_gost3410_2012_512 "id-tc26-signwithdigest-gost3410-2012-512" -#define NID_id_tc26_signwithdigest_gost3410_2012_256 985 -#define LN_id_tc26_signwithdigest_gost3410_2012_256 "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" -#define SN_id_tc26_signwithdigest_gost3410_2012_256 "id-tc26-signwithdigest-gost3410-2012-256" -#define NID_id_tc26_signwithdigest 984 -#define SN_id_tc26_signwithdigest "id-tc26-signwithdigest" -#define NID_id_GostR3411_2012_512 983 -#define LN_id_GostR3411_2012_512 "GOST R 34.11-2012 with 512 bit hash" -#define SN_id_GostR3411_2012_512 "md_gost12_512" -#define NID_id_GostR3411_2012_256 982 -#define LN_id_GostR3411_2012_256 "GOST R 34.11-2012 with 256 bit hash" -#define SN_id_GostR3411_2012_256 "md_gost12_256" -#define NID_id_tc26_digest 981 -#define SN_id_tc26_digest "id-tc26-digest" -#define NID_id_GostR3410_2012_512 980 -#define LN_id_GostR3410_2012_512 "GOST R 34.10-2012 with 512 bit modulus" -#define SN_id_GostR3410_2012_512 "gost2012_512" -#define NID_id_GostR3410_2012_256 979 -#define LN_id_GostR3410_2012_256 "GOST R 34.10-2012 with 256 bit modulus" -#define SN_id_GostR3410_2012_256 "gost2012_256" -#define NID_id_tc26_sign 978 -#define SN_id_tc26_sign "id-tc26-sign" -#define NID_id_tc26_algorithms 977 -#define SN_id_tc26_algorithms "id-tc26-algorithms" -#define NID_id_GostR3410_2001_ParamSet_cc 854 -#define LN_id_GostR3410_2001_ParamSet_cc "GOST R 3410-2001 Parameter Set Cryptocom" -#define SN_id_GostR3410_2001_ParamSet_cc "id-GostR3410-2001-ParamSet-cc" -#define NID_id_GostR3411_94_with_GostR3410_2001_cc 853 -#define LN_id_GostR3411_94_with_GostR3410_2001_cc "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" -#define SN_id_GostR3411_94_with_GostR3410_2001_cc "id-GostR3411-94-with-GostR3410-2001-cc" -#define NID_id_GostR3411_94_with_GostR3410_94_cc 852 -#define LN_id_GostR3411_94_with_GostR3410_94_cc "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" -#define SN_id_GostR3411_94_with_GostR3410_94_cc "id-GostR3411-94-with-GostR3410-94-cc" -#define NID_id_GostR3410_2001_cc 851 -#define LN_id_GostR3410_2001_cc "GOST 34.10-2001 Cryptocom" -#define SN_id_GostR3410_2001_cc "gost2001cc" -#define NID_id_GostR3410_94_cc 850 -#define LN_id_GostR3410_94_cc "GOST 34.10-94 Cryptocom" -#define SN_id_GostR3410_94_cc "gost94cc" -#define NID_id_Gost28147_89_cc 849 -#define LN_id_Gost28147_89_cc "GOST 28147-89 Cryptocom ParamSet" -#define SN_id_Gost28147_89_cc "id-Gost28147-89-cc" -#define NID_id_GostR3410_94_bBis 848 -#define SN_id_GostR3410_94_bBis "id-GostR3410-94-bBis" -#define NID_id_GostR3410_94_b 847 -#define SN_id_GostR3410_94_b "id-GostR3410-94-b" -#define NID_id_GostR3410_94_aBis 846 -#define SN_id_GostR3410_94_aBis "id-GostR3410-94-aBis" -#define NID_id_GostR3410_94_a 845 -#define SN_id_GostR3410_94_a "id-GostR3410-94-a" -#define NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet 844 -#define SN_id_GostR3410_2001_CryptoPro_XchB_ParamSet "id-GostR3410-2001-CryptoPro-XchB-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet 843 -#define SN_id_GostR3410_2001_CryptoPro_XchA_ParamSet "id-GostR3410-2001-CryptoPro-XchA-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_C_ParamSet 842 -#define SN_id_GostR3410_2001_CryptoPro_C_ParamSet "id-GostR3410-2001-CryptoPro-C-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_B_ParamSet 841 -#define SN_id_GostR3410_2001_CryptoPro_B_ParamSet "id-GostR3410-2001-CryptoPro-B-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_A_ParamSet 840 -#define SN_id_GostR3410_2001_CryptoPro_A_ParamSet "id-GostR3410-2001-CryptoPro-A-ParamSet" -#define NID_id_GostR3410_2001_TestParamSet 839 -#define SN_id_GostR3410_2001_TestParamSet "id-GostR3410-2001-TestParamSet" -#define NID_id_GostR3410_94_CryptoPro_XchC_ParamSet 838 -#define SN_id_GostR3410_94_CryptoPro_XchC_ParamSet "id-GostR3410-94-CryptoPro-XchC-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_XchB_ParamSet 837 -#define SN_id_GostR3410_94_CryptoPro_XchB_ParamSet "id-GostR3410-94-CryptoPro-XchB-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_XchA_ParamSet 836 -#define SN_id_GostR3410_94_CryptoPro_XchA_ParamSet "id-GostR3410-94-CryptoPro-XchA-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_D_ParamSet 835 -#define SN_id_GostR3410_94_CryptoPro_D_ParamSet "id-GostR3410-94-CryptoPro-D-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_C_ParamSet 834 -#define SN_id_GostR3410_94_CryptoPro_C_ParamSet "id-GostR3410-94-CryptoPro-C-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_B_ParamSet 833 -#define SN_id_GostR3410_94_CryptoPro_B_ParamSet "id-GostR3410-94-CryptoPro-B-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_A_ParamSet 832 -#define SN_id_GostR3410_94_CryptoPro_A_ParamSet "id-GostR3410-94-CryptoPro-A-ParamSet" -#define NID_id_GostR3410_94_TestParamSet 831 -#define SN_id_GostR3410_94_TestParamSet "id-GostR3410-94-TestParamSet" -#define NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 830 -#define SN_id_Gost28147_89_CryptoPro_RIC_1_ParamSet "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 829 -#define SN_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 828 -#define SN_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_D_ParamSet 827 -#define SN_id_Gost28147_89_CryptoPro_D_ParamSet "id-Gost28147-89-CryptoPro-D-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_C_ParamSet 826 -#define SN_id_Gost28147_89_CryptoPro_C_ParamSet "id-Gost28147-89-CryptoPro-C-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_B_ParamSet 825 -#define SN_id_Gost28147_89_CryptoPro_B_ParamSet "id-Gost28147-89-CryptoPro-B-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_A_ParamSet 824 -#define SN_id_Gost28147_89_CryptoPro_A_ParamSet "id-Gost28147-89-CryptoPro-A-ParamSet" -#define NID_id_Gost28147_89_TestParamSet 823 -#define SN_id_Gost28147_89_TestParamSet "id-Gost28147-89-TestParamSet" -#define NID_id_GostR3411_94_CryptoProParamSet 822 -#define SN_id_GostR3411_94_CryptoProParamSet "id-GostR3411-94-CryptoProParamSet" -#define NID_id_GostR3411_94_TestParamSet 821 -#define SN_id_GostR3411_94_TestParamSet "id-GostR3411-94-TestParamSet" -#define NID_id_Gost28147_89_None_KeyMeshing 820 -#define SN_id_Gost28147_89_None_KeyMeshing "id-Gost28147-89-None-KeyMeshing" -#define NID_id_Gost28147_89_CryptoPro_KeyMeshing 819 -#define SN_id_Gost28147_89_CryptoPro_KeyMeshing "id-Gost28147-89-CryptoPro-KeyMeshing" -#define NID_id_GostR3410_94DH 818 -#define LN_id_GostR3410_94DH "GOST R 34.10-94 DH" -#define SN_id_GostR3410_94DH "id-GostR3410-94DH" -#define NID_id_GostR3410_2001DH 817 -#define LN_id_GostR3410_2001DH "GOST R 34.10-2001 DH" -#define SN_id_GostR3410_2001DH "id-GostR3410-2001DH" -#define NID_id_GostR3411_94_prf 816 -#define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" -#define SN_id_GostR3411_94_prf "prf-gostr3411-94" -#define NID_gost_mac_12 976 -#define SN_gost_mac_12 "gost-mac-12" -#define NID_id_Gost28147_89_MAC 815 -#define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" -#define SN_id_Gost28147_89_MAC "gost-mac" -#define NID_gost89_ctr 1011 -#define SN_gost89_ctr "gost89-ctr" -#define NID_gost89_ecb 1010 -#define SN_gost89_ecb "gost89-ecb" -#define NID_gost89_cbc 1009 -#define SN_gost89_cbc "gost89-cbc" -#define NID_gost89_cnt_12 975 -#define SN_gost89_cnt_12 "gost89-cnt-12" -#define NID_gost89_cnt 814 -#define SN_gost89_cnt "gost89-cnt" -#define NID_id_Gost28147_89 813 -#define LN_id_Gost28147_89 "GOST 28147-89" -#define SN_id_Gost28147_89 "gost89" -#define NID_id_GostR3410_94 812 -#define LN_id_GostR3410_94 "GOST R 34.10-94" -#define SN_id_GostR3410_94 "gost94" -#define NID_id_GostR3410_2001 811 -#define LN_id_GostR3410_2001 "GOST R 34.10-2001" -#define SN_id_GostR3410_2001 "gost2001" -#define NID_id_HMACGostR3411_94 810 -#define LN_id_HMACGostR3411_94 "HMAC GOST 34.11-94" -#define SN_id_HMACGostR3411_94 "id-HMACGostR3411-94" -#define NID_id_GostR3411_94 809 -#define LN_id_GostR3411_94 "GOST R 34.11-94" -#define SN_id_GostR3411_94 "md_gost94" -#define NID_id_GostR3411_94_with_GostR3410_94 808 -#define LN_id_GostR3411_94_with_GostR3410_94 "GOST R 34.11-94 with GOST R 34.10-94" -#define SN_id_GostR3411_94_with_GostR3410_94 "id-GostR3411-94-with-GostR3410-94" -#define NID_id_GostR3411_94_with_GostR3410_2001 807 -#define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" -#define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" -#define NID_id_tc26 974 -#define SN_id_tc26 "id-tc26" -#define NID_cryptocom 806 -#define SN_cryptocom "cryptocom" -#define NID_cryptopro 805 -#define SN_cryptopro "cryptopro" -#define NID_whirlpool 804 -#define SN_whirlpool "whirlpool" -#define NID_ipsec4 750 -#define LN_ipsec4 "ipsec4" -#define SN_ipsec4 "Oakley-EC2N-4" -#define NID_ipsec3 749 -#define LN_ipsec3 "ipsec3" -#define SN_ipsec3 "Oakley-EC2N-3" -#define NID_rsaOAEPEncryptionSET 644 -#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET" -#define NID_des_cdmf 643 -#define LN_des_cdmf "des-cdmf" -#define SN_des_cdmf "DES-CDMF" -#define NID_set_brand_Novus 642 -#define SN_set_brand_Novus "set-brand-Novus" -#define NID_set_brand_MasterCard 641 -#define SN_set_brand_MasterCard "set-brand-MasterCard" -#define NID_set_brand_Visa 640 -#define SN_set_brand_Visa "set-brand-Visa" -#define NID_set_brand_JCB 639 -#define SN_set_brand_JCB "set-brand-JCB" -#define NID_set_brand_AmericanExpress 638 -#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress" -#define NID_set_brand_Diners 637 -#define SN_set_brand_Diners "set-brand-Diners" -#define NID_set_brand_IATA_ATA 636 -#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA" -#define NID_setAttr_SecDevSig 635 -#define LN_setAttr_SecDevSig "secure device signature" -#define SN_setAttr_SecDevSig "setAttr-SecDevSig" -#define NID_setAttr_TokICCsig 634 -#define LN_setAttr_TokICCsig "ICC or token signature" -#define SN_setAttr_TokICCsig "setAttr-TokICCsig" -#define NID_setAttr_T2cleartxt 633 -#define LN_setAttr_T2cleartxt "cleartext track 2" -#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt" -#define NID_setAttr_T2Enc 632 -#define LN_setAttr_T2Enc "encrypted track 2" -#define SN_setAttr_T2Enc "setAttr-T2Enc" -#define NID_setAttr_GenCryptgrm 631 -#define LN_setAttr_GenCryptgrm "generate cryptogram" -#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm" -#define NID_setAttr_IssCap_Sig 630 -#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig" -#define NID_setAttr_IssCap_T2 629 -#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2" -#define NID_setAttr_IssCap_CVM 628 -#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM" -#define NID_setAttr_Token_B0Prime 627 -#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime" -#define NID_setAttr_Token_EMV 626 -#define SN_setAttr_Token_EMV "setAttr-Token-EMV" -#define NID_set_addPolicy 625 -#define SN_set_addPolicy "set-addPolicy" -#define NID_set_rootKeyThumb 624 -#define SN_set_rootKeyThumb "set-rootKeyThumb" -#define NID_setAttr_IssCap 623 -#define LN_setAttr_IssCap "issuer capabilities" -#define SN_setAttr_IssCap "setAttr-IssCap" -#define NID_setAttr_TokenType 622 -#define SN_setAttr_TokenType "setAttr-TokenType" -#define NID_setAttr_PGWYcap 621 -#define LN_setAttr_PGWYcap "payment gateway capabilities" -#define SN_setAttr_PGWYcap "setAttr-PGWYcap" -#define NID_setAttr_Cert 620 -#define SN_setAttr_Cert "setAttr-Cert" -#define NID_setCext_IssuerCapabilities 619 -#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities" -#define NID_setCext_TokenType 618 -#define SN_setCext_TokenType "setCext-TokenType" -#define NID_setCext_Track2Data 617 -#define SN_setCext_Track2Data "setCext-Track2Data" -#define NID_setCext_TokenIdentifier 616 -#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier" -#define NID_setCext_PGWYcapabilities 615 -#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities" -#define NID_setCext_setQualf 614 -#define SN_setCext_setQualf "setCext-setQualf" -#define NID_setCext_setExt 613 -#define SN_setCext_setExt "setCext-setExt" -#define NID_setCext_tunneling 612 -#define SN_setCext_tunneling "setCext-tunneling" -#define NID_setCext_cCertRequired 611 -#define SN_setCext_cCertRequired "setCext-cCertRequired" -#define NID_setCext_merchData 610 -#define SN_setCext_merchData "setCext-merchData" -#define NID_setCext_certType 609 -#define SN_setCext_certType "setCext-certType" -#define NID_setCext_hashedRoot 608 -#define SN_setCext_hashedRoot "setCext-hashedRoot" -#define NID_set_policy_root 607 -#define SN_set_policy_root "set-policy-root" -#define NID_setext_cv 606 -#define LN_setext_cv "additional verification" -#define SN_setext_cv "setext-cv" -#define NID_setext_track2 605 -#define SN_setext_track2 "setext-track2" -#define NID_setext_pinAny 604 -#define SN_setext_pinAny "setext-pinAny" -#define NID_setext_pinSecure 603 -#define SN_setext_pinSecure "setext-pinSecure" -#define NID_setext_miAuth 602 -#define LN_setext_miAuth "merchant initiated auth" -#define SN_setext_miAuth "setext-miAuth" -#define NID_setext_genCrypt 601 -#define LN_setext_genCrypt "generic cryptogram" -#define SN_setext_genCrypt "setext-genCrypt" -#define NID_setct_BCIDistributionTBS 600 -#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS" -#define NID_setct_CRLNotificationResTBS 599 -#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS" -#define NID_setct_CRLNotificationTBS 598 -#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS" -#define NID_setct_CertResTBE 597 -#define SN_setct_CertResTBE "setct-CertResTBE" -#define NID_setct_CertReqTBEX 596 -#define SN_setct_CertReqTBEX "setct-CertReqTBEX" -#define NID_setct_CertReqTBE 595 -#define SN_setct_CertReqTBE "setct-CertReqTBE" -#define NID_setct_RegFormReqTBE 594 -#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE" -#define NID_setct_BatchAdminResTBE 593 -#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE" -#define NID_setct_BatchAdminReqTBE 592 -#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE" -#define NID_setct_CredRevResTBE 591 -#define SN_setct_CredRevResTBE "setct-CredRevResTBE" -#define NID_setct_CredRevReqTBEX 590 -#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX" -#define NID_setct_CredRevReqTBE 589 -#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE" -#define NID_setct_CredResTBE 588 -#define SN_setct_CredResTBE "setct-CredResTBE" -#define NID_setct_CredReqTBEX 587 -#define SN_setct_CredReqTBEX "setct-CredReqTBEX" -#define NID_setct_CredReqTBE 586 -#define SN_setct_CredReqTBE "setct-CredReqTBE" -#define NID_setct_CapRevResTBE 585 -#define SN_setct_CapRevResTBE "setct-CapRevResTBE" -#define NID_setct_CapRevReqTBEX 584 -#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX" -#define NID_setct_CapRevReqTBE 583 -#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE" -#define NID_setct_CapResTBE 582 -#define SN_setct_CapResTBE "setct-CapResTBE" -#define NID_setct_CapReqTBEX 581 -#define SN_setct_CapReqTBEX "setct-CapReqTBEX" -#define NID_setct_CapReqTBE 580 -#define SN_setct_CapReqTBE "setct-CapReqTBE" -#define NID_setct_AuthRevResTBEB 579 -#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB" -#define NID_setct_AuthRevResTBE 578 -#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE" -#define NID_setct_AuthRevReqTBE 577 -#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE" -#define NID_setct_AcqCardCodeMsgTBE 576 -#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE" -#define NID_setct_CapTokenTBEX 575 -#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX" -#define NID_setct_CapTokenTBE 574 -#define SN_setct_CapTokenTBE "setct-CapTokenTBE" -#define NID_setct_AuthTokenTBE 573 -#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE" -#define NID_setct_AuthResTBEX 572 -#define SN_setct_AuthResTBEX "setct-AuthResTBEX" -#define NID_setct_AuthResTBE 571 -#define SN_setct_AuthResTBE "setct-AuthResTBE" -#define NID_setct_AuthReqTBE 570 -#define SN_setct_AuthReqTBE "setct-AuthReqTBE" -#define NID_setct_PIUnsignedTBE 569 -#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE" -#define NID_setct_PIDualSignedTBE 568 -#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE" -#define NID_setct_ErrorTBS 567 -#define SN_setct_ErrorTBS "setct-ErrorTBS" -#define NID_setct_CertInqReqTBS 566 -#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS" -#define NID_setct_CertResData 565 -#define SN_setct_CertResData "setct-CertResData" -#define NID_setct_CertReqTBS 564 -#define SN_setct_CertReqTBS "setct-CertReqTBS" -#define NID_setct_CertReqData 563 -#define SN_setct_CertReqData "setct-CertReqData" -#define NID_setct_RegFormResTBS 562 -#define SN_setct_RegFormResTBS "setct-RegFormResTBS" -#define NID_setct_MeAqCInitResTBS 561 -#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS" -#define NID_setct_CardCInitResTBS 560 -#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS" -#define NID_setct_BatchAdminResData 559 -#define SN_setct_BatchAdminResData "setct-BatchAdminResData" -#define NID_setct_BatchAdminReqData 558 -#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData" -#define NID_setct_PCertResTBS 557 -#define SN_setct_PCertResTBS "setct-PCertResTBS" -#define NID_setct_PCertReqData 556 -#define SN_setct_PCertReqData "setct-PCertReqData" -#define NID_setct_CredRevResData 555 -#define SN_setct_CredRevResData "setct-CredRevResData" -#define NID_setct_CredRevReqTBSX 554 -#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX" -#define NID_setct_CredRevReqTBS 553 -#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS" -#define NID_setct_CredResData 552 -#define SN_setct_CredResData "setct-CredResData" -#define NID_setct_CredReqTBSX 551 -#define SN_setct_CredReqTBSX "setct-CredReqTBSX" -#define NID_setct_CredReqTBS 550 -#define SN_setct_CredReqTBS "setct-CredReqTBS" -#define NID_setct_CapRevResData 549 -#define SN_setct_CapRevResData "setct-CapRevResData" -#define NID_setct_CapRevReqTBSX 548 -#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX" -#define NID_setct_CapRevReqTBS 547 -#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS" -#define NID_setct_CapResData 546 -#define SN_setct_CapResData "setct-CapResData" -#define NID_setct_CapReqTBSX 545 -#define SN_setct_CapReqTBSX "setct-CapReqTBSX" -#define NID_setct_CapReqTBS 544 -#define SN_setct_CapReqTBS "setct-CapReqTBS" -#define NID_setct_AuthRevResTBS 543 -#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS" -#define NID_setct_AuthRevResData 542 -#define SN_setct_AuthRevResData "setct-AuthRevResData" -#define NID_setct_AuthRevReqTBS 541 -#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS" -#define NID_setct_AcqCardCodeMsg 540 -#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg" -#define NID_setct_CapTokenTBS 539 -#define SN_setct_CapTokenTBS "setct-CapTokenTBS" -#define NID_setct_CapTokenData 538 -#define SN_setct_CapTokenData "setct-CapTokenData" -#define NID_setct_AuthTokenTBS 537 -#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS" -#define NID_setct_AuthResTBSX 536 -#define SN_setct_AuthResTBSX "setct-AuthResTBSX" -#define NID_setct_AuthResTBS 535 -#define SN_setct_AuthResTBS "setct-AuthResTBS" -#define NID_setct_AuthReqTBS 534 -#define SN_setct_AuthReqTBS "setct-AuthReqTBS" -#define NID_setct_PResData 533 -#define SN_setct_PResData "setct-PResData" -#define NID_setct_PI_TBS 532 -#define SN_setct_PI_TBS "setct-PI-TBS" -#define NID_setct_PInitResData 531 -#define SN_setct_PInitResData "setct-PInitResData" -#define NID_setct_CapTokenSeq 530 -#define SN_setct_CapTokenSeq "setct-CapTokenSeq" -#define NID_setct_AuthRevResBaggage 529 -#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage" -#define NID_setct_AuthRevReqBaggage 528 -#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage" -#define NID_setct_AuthResBaggage 527 -#define SN_setct_AuthResBaggage "setct-AuthResBaggage" -#define NID_setct_HODInput 526 -#define SN_setct_HODInput "setct-HODInput" -#define NID_setct_PIDataUnsigned 525 -#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned" -#define NID_setct_PIData 524 -#define SN_setct_PIData "setct-PIData" -#define NID_setct_PI 523 -#define SN_setct_PI "setct-PI" -#define NID_setct_OIData 522 -#define SN_setct_OIData "setct-OIData" -#define NID_setct_PANOnly 521 -#define SN_setct_PANOnly "setct-PANOnly" -#define NID_setct_PANToken 520 -#define SN_setct_PANToken "setct-PANToken" -#define NID_setct_PANData 519 -#define SN_setct_PANData "setct-PANData" -#define NID_set_brand 518 -#define SN_set_brand "set-brand" -#define NID_set_certExt 517 -#define LN_set_certExt "certificate extensions" -#define SN_set_certExt "set-certExt" -#define NID_set_policy 516 -#define SN_set_policy "set-policy" -#define NID_set_attr 515 -#define SN_set_attr "set-attr" -#define NID_set_msgExt 514 -#define LN_set_msgExt "message extensions" -#define SN_set_msgExt "set-msgExt" -#define NID_set_ctype 513 -#define LN_set_ctype "content types" -#define SN_set_ctype "set-ctype" -#define NID_id_set 512 -#define LN_id_set "Secure Electronic Transactions" -#define SN_id_set "id-set" -#define NID_documentPublisher 502 -#define LN_documentPublisher "documentPublisher" -#define NID_audio 501 -#define SN_audio "audio" -#define NID_dITRedirect 500 -#define LN_dITRedirect "dITRedirect" -#define NID_personalSignature 499 -#define LN_personalSignature "personalSignature" -#define NID_subtreeMaximumQuality 498 -#define LN_subtreeMaximumQuality "subtreeMaximumQuality" -#define NID_subtreeMinimumQuality 497 -#define LN_subtreeMinimumQuality "subtreeMinimumQuality" -#define NID_singleLevelQuality 496 -#define LN_singleLevelQuality "singleLevelQuality" -#define NID_dSAQuality 495 -#define LN_dSAQuality "dSAQuality" -#define NID_buildingName 494 -#define LN_buildingName "buildingName" -#define NID_mailPreferenceOption 493 -#define LN_mailPreferenceOption "mailPreferenceOption" -#define NID_janetMailbox 492 -#define LN_janetMailbox "janetMailbox" -#define NID_organizationalStatus 491 -#define LN_organizationalStatus "organizationalStatus" -#define NID_uniqueIdentifier 102 -#define LN_uniqueIdentifier "uniqueIdentifier" -#define SN_uniqueIdentifier "uid" -#define NID_friendlyCountryName 490 -#define LN_friendlyCountryName "friendlyCountryName" -#define NID_pagerTelephoneNumber 489 -#define LN_pagerTelephoneNumber "pagerTelephoneNumber" -#define NID_mobileTelephoneNumber 488 -#define LN_mobileTelephoneNumber "mobileTelephoneNumber" -#define NID_personalTitle 487 -#define LN_personalTitle "personalTitle" -#define NID_homePostalAddress 486 -#define LN_homePostalAddress "homePostalAddress" -#define NID_associatedName 485 -#define LN_associatedName "associatedName" -#define NID_associatedDomain 484 -#define LN_associatedDomain "associatedDomain" -#define NID_cNAMERecord 483 -#define LN_cNAMERecord "cNAMERecord" -#define NID_sOARecord 482 -#define LN_sOARecord "sOARecord" -#define NID_nSRecord 481 -#define LN_nSRecord "nSRecord" -#define NID_mXRecord 480 -#define LN_mXRecord "mXRecord" -#define NID_pilotAttributeType27 479 -#define LN_pilotAttributeType27 "pilotAttributeType27" -#define NID_aRecord 478 -#define LN_aRecord "aRecord" -#define NID_domainComponent 391 -#define LN_domainComponent "domainComponent" -#define SN_domainComponent "DC" -#define NID_lastModifiedBy 477 -#define LN_lastModifiedBy "lastModifiedBy" -#define NID_lastModifiedTime 476 -#define LN_lastModifiedTime "lastModifiedTime" -#define NID_otherMailbox 475 -#define LN_otherMailbox "otherMailbox" -#define NID_secretary 474 -#define SN_secretary "secretary" -#define NID_homeTelephoneNumber 473 -#define LN_homeTelephoneNumber "homeTelephoneNumber" -#define NID_documentLocation 472 -#define LN_documentLocation "documentLocation" -#define NID_documentAuthor 471 -#define LN_documentAuthor "documentAuthor" -#define NID_documentVersion 470 -#define LN_documentVersion "documentVersion" -#define NID_documentTitle 469 -#define LN_documentTitle "documentTitle" -#define NID_documentIdentifier 468 -#define LN_documentIdentifier "documentIdentifier" -#define NID_manager 467 -#define SN_manager "manager" -#define NID_host 466 -#define SN_host "host" -#define NID_userClass 465 -#define LN_userClass "userClass" -#define NID_photo 464 -#define SN_photo "photo" -#define NID_roomNumber 463 -#define LN_roomNumber "roomNumber" -#define NID_favouriteDrink 462 -#define LN_favouriteDrink "favouriteDrink" -#define NID_info 461 -#define SN_info "info" -#define NID_rfc822Mailbox 460 -#define LN_rfc822Mailbox "rfc822Mailbox" -#define SN_rfc822Mailbox "mail" -#define NID_textEncodedORAddress 459 -#define LN_textEncodedORAddress "textEncodedORAddress" -#define NID_userId 458 -#define LN_userId "userId" -#define SN_userId "UID" -#define NID_qualityLabelledData 457 -#define LN_qualityLabelledData "qualityLabelledData" -#define NID_pilotDSA 456 -#define LN_pilotDSA "pilotDSA" -#define NID_pilotOrganization 455 -#define LN_pilotOrganization "pilotOrganization" -#define NID_simpleSecurityObject 454 -#define LN_simpleSecurityObject "simpleSecurityObject" -#define NID_friendlyCountry 453 -#define LN_friendlyCountry "friendlyCountry" -#define NID_domainRelatedObject 452 -#define LN_domainRelatedObject "domainRelatedObject" -#define NID_dNSDomain 451 -#define LN_dNSDomain "dNSDomain" -#define NID_rFC822localPart 450 -#define LN_rFC822localPart "rFC822localPart" -#define NID_Domain 392 -#define LN_Domain "Domain" -#define SN_Domain "domain" -#define NID_documentSeries 449 -#define LN_documentSeries "documentSeries" -#define NID_room 448 -#define SN_room "room" -#define NID_document 447 -#define SN_document "document" -#define NID_account 446 -#define SN_account "account" -#define NID_pilotPerson 445 -#define LN_pilotPerson "pilotPerson" -#define NID_pilotObject 444 -#define LN_pilotObject "pilotObject" -#define NID_caseIgnoreIA5StringSyntax 443 -#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax" -#define NID_iA5StringSyntax 442 -#define LN_iA5StringSyntax "iA5StringSyntax" -#define NID_pilotGroups 441 -#define LN_pilotGroups "pilotGroups" -#define NID_pilotObjectClass 440 -#define LN_pilotObjectClass "pilotObjectClass" -#define NID_pilotAttributeSyntax 439 -#define LN_pilotAttributeSyntax "pilotAttributeSyntax" -#define NID_pilotAttributeType 438 -#define LN_pilotAttributeType "pilotAttributeType" -#define NID_pilot 437 -#define SN_pilot "pilot" -#define NID_ucl 436 -#define SN_ucl "ucl" -#define NID_pss 435 -#define SN_pss "pss" -#define NID_data 434 -#define SN_data "data" -#define NID_signedAssertion 1279 -#define SN_signedAssertion "signedAssertion" -#define NID_id_aa_ATSHashIndex_v3 1278 -#define SN_id_aa_ATSHashIndex_v3 "id-aa-ATSHashIndex-v3" -#define NID_id_aa_ATSHashIndex_v2 1277 -#define SN_id_aa_ATSHashIndex_v2 "id-aa-ATSHashIndex-v2" -#define NID_id_aa_ets_sigPolicyStore 1276 -#define SN_id_aa_ets_sigPolicyStore "id-aa-ets-sigPolicyStore" -#define NID_id_aa_ets_signerAttrV2 1275 -#define SN_id_aa_ets_signerAttrV2 "id-aa-ets-signerAttrV2" -#define NID_cades_attributes 1274 -#define SN_cades_attributes "cades-attributes" -#define NID_cades 1273 -#define SN_cades "cades" -#define NID_id_aa_ATSHashIndex 1272 -#define SN_id_aa_ATSHashIndex "id-aa-ATSHashIndex" -#define NID_id_aa_ets_archiveTimestampV3 1271 -#define SN_id_aa_ets_archiveTimestampV3 "id-aa-ets-archiveTimestampV3" -#define NID_id_aa_ets_SignaturePolicyDocument 1270 -#define SN_id_aa_ets_SignaturePolicyDocument "id-aa-ets-SignaturePolicyDocument" -#define NID_id_aa_ets_longTermValidation 1269 -#define SN_id_aa_ets_longTermValidation "id-aa-ets-longTermValidation" -#define NID_id_aa_ets_mimeType 1268 -#define SN_id_aa_ets_mimeType "id-aa-ets-mimeType" -#define NID_ess_attributes 1267 -#define SN_ess_attributes "ess-attributes" -#define NID_electronic_signature_standard 1266 -#define SN_electronic_signature_standard "electronic-signature-standard" -#define NID_etsi 1265 -#define SN_etsi "etsi" -#define NID_itu_t_identified_organization 1264 -#define SN_itu_t_identified_organization "itu-t-identified-organization" -#define NID_hold_instruction_reject 433 -#define LN_hold_instruction_reject "Hold Instruction Reject" -#define SN_hold_instruction_reject "holdInstructionReject" -#define NID_hold_instruction_call_issuer 432 -#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer" -#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer" -#define NID_hold_instruction_none 431 -#define LN_hold_instruction_none "Hold Instruction None" -#define SN_hold_instruction_none "holdInstructionNone" -#define LN_hold_instruction_code "Hold Instruction Code" -#define SN_hold_instruction_code "holdInstructionCode" -#define NID_SLH_DSA_SHAKE_256f_WITH_SHAKE256 1486 -#define LN_SLH_DSA_SHAKE_256f_WITH_SHAKE256 "SLH-DSA-SHAKE-256f-WITH-SHAKE256" -#define SN_SLH_DSA_SHAKE_256f_WITH_SHAKE256 "id-hash-slh-dsa-shake-256f-with-shake256" -#define NID_SLH_DSA_SHAKE_256s_WITH_SHAKE256 1485 -#define LN_SLH_DSA_SHAKE_256s_WITH_SHAKE256 "SLH-DSA-SHAKE-256s-WITH-SHAKE256" -#define SN_SLH_DSA_SHAKE_256s_WITH_SHAKE256 "id-hash-slh-dsa-shake-256s-with-shake256" -#define NID_SLH_DSA_SHAKE_192f_WITH_SHAKE256 1484 -#define LN_SLH_DSA_SHAKE_192f_WITH_SHAKE256 "SLH-DSA-SHAKE-192f-WITH-SHAKE256" -#define SN_SLH_DSA_SHAKE_192f_WITH_SHAKE256 "id-hash-slh-dsa-shake-192f-with-shake256" -#define NID_SLH_DSA_SHAKE_192s_WITH_SHAKE256 1483 -#define LN_SLH_DSA_SHAKE_192s_WITH_SHAKE256 "SLH-DSA-SHAKE-192s-WITH-SHAKE256" -#define SN_SLH_DSA_SHAKE_192s_WITH_SHAKE256 "id-hash-slh-dsa-shake-192s-with-shake256" -#define NID_SLH_DSA_SHAKE_128f_WITH_SHAKE128 1482 -#define LN_SLH_DSA_SHAKE_128f_WITH_SHAKE128 "SLH-DSA-SHAKE-128f-WITH-SHAKE128" -#define SN_SLH_DSA_SHAKE_128f_WITH_SHAKE128 "id-hash-slh-dsa-shake-128f-with-shake128" -#define NID_SLH_DSA_SHAKE_128s_WITH_SHAKE128 1481 -#define LN_SLH_DSA_SHAKE_128s_WITH_SHAKE128 "SLH-DSA-SHAKE-128s-WITH-SHAKE128" -#define SN_SLH_DSA_SHAKE_128s_WITH_SHAKE128 "id-hash-slh-dsa-shake-128s-with-shake128" -#define NID_SLH_DSA_SHA2_256f_WITH_SHA512 1480 -#define LN_SLH_DSA_SHA2_256f_WITH_SHA512 "SLH-DSA-SHA2-256f-WITH-SHA512" -#define SN_SLH_DSA_SHA2_256f_WITH_SHA512 "id-hash-slh-dsa-sha2-256f-with-sha512" -#define NID_SLH_DSA_SHA2_256s_WITH_SHA512 1479 -#define LN_SLH_DSA_SHA2_256s_WITH_SHA512 "SLH-DSA-SHA2-256s-WITH-SHA512" -#define SN_SLH_DSA_SHA2_256s_WITH_SHA512 "id-hash-slh-dsa-sha2-256s-with-sha512" -#define NID_SLH_DSA_SHA2_192f_WITH_SHA512 1478 -#define LN_SLH_DSA_SHA2_192f_WITH_SHA512 "SLH-DSA-SHA2-192f-WITH-SHA512" -#define SN_SLH_DSA_SHA2_192f_WITH_SHA512 "id-hash-slh-dsa-sha2-192f-with-sha512" -#define NID_SLH_DSA_SHA2_192s_WITH_SHA512 1477 -#define LN_SLH_DSA_SHA2_192s_WITH_SHA512 "SLH-DSA-SHA2-192s-WITH-SHA512" -#define SN_SLH_DSA_SHA2_192s_WITH_SHA512 "id-hash-slh-dsa-sha2-192s-with-sha512" -#define NID_SLH_DSA_SHA2_128f_WITH_SHA256 1476 -#define LN_SLH_DSA_SHA2_128f_WITH_SHA256 "SLH-DSA-SHA2-128f-WITH-SHA256" -#define SN_SLH_DSA_SHA2_128f_WITH_SHA256 "id-hash-slh-dsa-sha2-128f-with-sha256" -#define NID_SLH_DSA_SHA2_128s_WITH_SHA256 1475 -#define LN_SLH_DSA_SHA2_128s_WITH_SHA256 "SLH-DSA-SHA2-128s-WITH-SHA256" -#define SN_SLH_DSA_SHA2_128s_WITH_SHA256 "id-hash-slh-dsa-sha2-128s-with-sha256" -#define NID_HASH_ML_DSA_87_WITH_SHA512 1474 -#define LN_HASH_ML_DSA_87_WITH_SHA512 "HASH-ML-DSA-87-WITH-SHA512" -#define SN_HASH_ML_DSA_87_WITH_SHA512 "id-hash-ml-dsa-87-with-sha512" -#define NID_HASH_ML_DSA_65_WITH_SHA512 1473 -#define LN_HASH_ML_DSA_65_WITH_SHA512 "HASH-ML-DSA-65-WITH-SHA512" -#define SN_HASH_ML_DSA_65_WITH_SHA512 "id-hash-ml-dsa-65-with-sha512" -#define NID_HASH_ML_DSA_44_WITH_SHA512 1472 -#define LN_HASH_ML_DSA_44_WITH_SHA512 "HASH-ML-DSA-44-WITH-SHA512" -#define SN_HASH_ML_DSA_44_WITH_SHA512 "id-hash-ml-dsa-44-with-sha512" -#define NID_SLH_DSA_SHAKE_256f 1471 -#define LN_SLH_DSA_SHAKE_256f "SLH-DSA-SHAKE-256f" -#define SN_SLH_DSA_SHAKE_256f "id-slh-dsa-shake-256f" -#define NID_SLH_DSA_SHAKE_256s 1470 -#define LN_SLH_DSA_SHAKE_256s "SLH-DSA-SHAKE-256s" -#define SN_SLH_DSA_SHAKE_256s "id-slh-dsa-shake-256s" -#define NID_SLH_DSA_SHAKE_192f 1469 -#define LN_SLH_DSA_SHAKE_192f "SLH-DSA-SHAKE-192f" -#define SN_SLH_DSA_SHAKE_192f "id-slh-dsa-shake-192f" -#define NID_SLH_DSA_SHAKE_192s 1468 -#define LN_SLH_DSA_SHAKE_192s "SLH-DSA-SHAKE-192s" -#define SN_SLH_DSA_SHAKE_192s "id-slh-dsa-shake-192s" -#define NID_SLH_DSA_SHAKE_128f 1467 -#define LN_SLH_DSA_SHAKE_128f "SLH-DSA-SHAKE-128f" -#define SN_SLH_DSA_SHAKE_128f "id-slh-dsa-shake-128f" -#define NID_SLH_DSA_SHAKE_128s 1466 -#define LN_SLH_DSA_SHAKE_128s "SLH-DSA-SHAKE-128s" -#define SN_SLH_DSA_SHAKE_128s "id-slh-dsa-shake-128s" -#define NID_SLH_DSA_SHA2_256f 1465 -#define LN_SLH_DSA_SHA2_256f "SLH-DSA-SHA2-256f" -#define SN_SLH_DSA_SHA2_256f "id-slh-dsa-sha2-256f" -#define NID_SLH_DSA_SHA2_256s 1464 -#define LN_SLH_DSA_SHA2_256s "SLH-DSA-SHA2-256s" -#define SN_SLH_DSA_SHA2_256s "id-slh-dsa-sha2-256s" -#define NID_SLH_DSA_SHA2_192f 1463 -#define LN_SLH_DSA_SHA2_192f "SLH-DSA-SHA2-192f" -#define SN_SLH_DSA_SHA2_192f "id-slh-dsa-sha2-192f" -#define NID_SLH_DSA_SHA2_192s 1462 -#define LN_SLH_DSA_SHA2_192s "SLH-DSA-SHA2-192s" -#define SN_SLH_DSA_SHA2_192s "id-slh-dsa-sha2-192s" -#define NID_SLH_DSA_SHA2_128f 1461 -#define LN_SLH_DSA_SHA2_128f "SLH-DSA-SHA2-128f" -#define SN_SLH_DSA_SHA2_128f "id-slh-dsa-sha2-128f" -#define NID_SLH_DSA_SHA2_128s 1460 -#define LN_SLH_DSA_SHA2_128s "SLH-DSA-SHA2-128s" -#define SN_SLH_DSA_SHA2_128s "id-slh-dsa-sha2-128s" -#define NID_ML_DSA_87 1459 -#define LN_ML_DSA_87 "ML-DSA-87" -#define SN_ML_DSA_87 "id-ml-dsa-87" -#define NID_ML_DSA_65 1458 -#define LN_ML_DSA_65 "ML-DSA-65" -#define SN_ML_DSA_65 "id-ml-dsa-65" -#define NID_ML_DSA_44 1457 -#define LN_ML_DSA_44 "ML-DSA-44" -#define SN_ML_DSA_44 "id-ml-dsa-44" -#define NID_RSA_SHA3_512 1119 -#define LN_RSA_SHA3_512 "RSA-SHA3-512" -#define SN_RSA_SHA3_512 "id-rsassa-pkcs1-v1_5-with-sha3-512" -#define NID_RSA_SHA3_384 1118 -#define LN_RSA_SHA3_384 "RSA-SHA3-384" -#define SN_RSA_SHA3_384 "id-rsassa-pkcs1-v1_5-with-sha3-384" -#define NID_RSA_SHA3_256 1117 -#define LN_RSA_SHA3_256 "RSA-SHA3-256" -#define SN_RSA_SHA3_256 "id-rsassa-pkcs1-v1_5-with-sha3-256" -#define NID_RSA_SHA3_224 1116 -#define LN_RSA_SHA3_224 "RSA-SHA3-224" -#define SN_RSA_SHA3_224 "id-rsassa-pkcs1-v1_5-with-sha3-224" -#define NID_ecdsa_with_SHA3_512 1115 -#define LN_ecdsa_with_SHA3_512 "ecdsa_with_SHA3-512" -#define SN_ecdsa_with_SHA3_512 "id-ecdsa-with-sha3-512" -#define NID_ecdsa_with_SHA3_384 1114 -#define LN_ecdsa_with_SHA3_384 "ecdsa_with_SHA3-384" -#define SN_ecdsa_with_SHA3_384 "id-ecdsa-with-sha3-384" -#define NID_ecdsa_with_SHA3_256 1113 -#define LN_ecdsa_with_SHA3_256 "ecdsa_with_SHA3-256" -#define SN_ecdsa_with_SHA3_256 "id-ecdsa-with-sha3-256" -#define NID_ecdsa_with_SHA3_224 1112 -#define LN_ecdsa_with_SHA3_224 "ecdsa_with_SHA3-224" -#define SN_ecdsa_with_SHA3_224 "id-ecdsa-with-sha3-224" -#define NID_dsa_with_SHA3_512 1111 -#define LN_dsa_with_SHA3_512 "dsa_with_SHA3-512" -#define SN_dsa_with_SHA3_512 "id-dsa-with-sha3-512" -#define NID_dsa_with_SHA3_384 1110 -#define LN_dsa_with_SHA3_384 "dsa_with_SHA3-384" -#define SN_dsa_with_SHA3_384 "id-dsa-with-sha3-384" -#define NID_dsa_with_SHA3_256 1109 -#define LN_dsa_with_SHA3_256 "dsa_with_SHA3-256" -#define SN_dsa_with_SHA3_256 "id-dsa-with-sha3-256" -#define NID_dsa_with_SHA3_224 1108 -#define LN_dsa_with_SHA3_224 "dsa_with_SHA3-224" -#define SN_dsa_with_SHA3_224 "id-dsa-with-sha3-224" -#define NID_dsa_with_SHA512 1107 -#define LN_dsa_with_SHA512 "dsa_with_SHA512" -#define SN_dsa_with_SHA512 "id-dsa-with-sha512" -#define NID_dsa_with_SHA384 1106 -#define LN_dsa_with_SHA384 "dsa_with_SHA384" -#define SN_dsa_with_SHA384 "id-dsa-with-sha384" -#define NID_dsa_with_SHA256 803 -#define SN_dsa_with_SHA256 "dsa_with_SHA256" -#define NID_dsa_with_SHA224 802 -#define SN_dsa_with_SHA224 "dsa_with_SHA224" -#define NID_kmac256 1197 -#define LN_kmac256 "kmac256" -#define SN_kmac256 "KMAC256" -#define NID_kmac128 1196 -#define LN_kmac128 "kmac128" -#define SN_kmac128 "KMAC128" -#define NID_hmac_sha3_512 1105 -#define LN_hmac_sha3_512 "hmac-sha3-512" -#define SN_hmac_sha3_512 "id-hmacWithSHA3-512" -#define NID_hmac_sha3_384 1104 -#define LN_hmac_sha3_384 "hmac-sha3-384" -#define SN_hmac_sha3_384 "id-hmacWithSHA3-384" -#define NID_hmac_sha3_256 1103 -#define LN_hmac_sha3_256 "hmac-sha3-256" -#define SN_hmac_sha3_256 "id-hmacWithSHA3-256" -#define NID_hmac_sha3_224 1102 -#define LN_hmac_sha3_224 "hmac-sha3-224" -#define SN_hmac_sha3_224 "id-hmacWithSHA3-224" -#define NID_shake256 1101 -#define LN_shake256 "shake256" -#define SN_shake256 "SHAKE256" -#define NID_shake128 1100 -#define LN_shake128 "shake128" -#define SN_shake128 "SHAKE128" -#define NID_sha3_512 1099 -#define LN_sha3_512 "sha3-512" -#define SN_sha3_512 "SHA3-512" -#define NID_sha3_384 1098 -#define LN_sha3_384 "sha3-384" -#define SN_sha3_384 "SHA3-384" -#define NID_sha3_256 1097 -#define LN_sha3_256 "sha3-256" -#define SN_sha3_256 "SHA3-256" -#define NID_sha3_224 1096 -#define LN_sha3_224 "sha3-224" -#define SN_sha3_224 "SHA3-224" -#define NID_sha512_256 1095 -#define LN_sha512_256 "sha512-256" -#define SN_sha512_256 "SHA512-256" -#define NID_sha512_224 1094 -#define LN_sha512_224 "sha512-224" -#define SN_sha512_224 "SHA512-224" -#define NID_sha224 675 -#define LN_sha224 "sha224" -#define SN_sha224 "SHA224" -#define NID_sha512 674 -#define LN_sha512 "sha512" -#define SN_sha512 "SHA512" -#define NID_sha384 673 -#define LN_sha384 "sha384" -#define SN_sha384 "SHA384" -#define NID_sha256 672 -#define LN_sha256 "sha256" -#define NID_des_ede3_cfb8 659 -#define LN_des_ede3_cfb8 "des-ede3-cfb8" -#define SN_des_ede3_cfb8 "DES-EDE3-CFB8" -#define NID_des_ede3_cfb1 658 -#define LN_des_ede3_cfb1 "des-ede3-cfb1" -#define SN_des_ede3_cfb1 "DES-EDE3-CFB1" -#define NID_des_cfb8 657 -#define LN_des_cfb8 "des-cfb8" -#define SN_des_cfb8 "DES-CFB8" -#define NID_des_cfb1 656 -#define LN_des_cfb1 "des-cfb1" -#define SN_des_cfb1 "DES-CFB1" -#define NID_aes_256_ocb 960 -#define LN_aes_256_ocb "aes-256-ocb" -#define SN_aes_256_ocb "AES-256-OCB" -#define NID_aes_192_ocb 959 -#define LN_aes_192_ocb "aes-192-ocb" -#define SN_aes_192_ocb "AES-192-OCB" -#define NID_aes_128_ocb 958 -#define LN_aes_128_ocb "aes-128-ocb" -#define SN_aes_128_ocb "AES-128-OCB" -#define NID_aes_256_ctr 906 -#define LN_aes_256_ctr "aes-256-ctr" -#define SN_aes_256_ctr "AES-256-CTR" -#define NID_aes_192_ctr 905 -#define LN_aes_192_ctr "aes-192-ctr" -#define SN_aes_192_ctr "AES-192-CTR" -#define NID_aes_128_ctr 904 -#define LN_aes_128_ctr "aes-128-ctr" -#define SN_aes_128_ctr "AES-128-CTR" -#define NID_aes_256_cfb8 655 -#define LN_aes_256_cfb8 "aes-256-cfb8" -#define SN_aes_256_cfb8 "AES-256-CFB8" -#define NID_aes_192_cfb8 654 -#define LN_aes_192_cfb8 "aes-192-cfb8" -#define SN_aes_192_cfb8 "AES-192-CFB8" -#define NID_aes_128_cfb8 653 -#define LN_aes_128_cfb8 "aes-128-cfb8" -#define SN_aes_128_cfb8 "AES-128-CFB8" -#define NID_aes_256_cfb1 652 -#define LN_aes_256_cfb1 "aes-256-cfb1" -#define SN_aes_256_cfb1 "AES-256-CFB1" -#define NID_aes_192_cfb1 651 -#define LN_aes_192_cfb1 "aes-192-cfb1" -#define SN_aes_192_cfb1 "AES-192-CFB1" -#define NID_aes_128_cfb1 650 -#define LN_aes_128_cfb1 "aes-128-cfb1" -#define SN_aes_128_cfb1 "AES-128-CFB1" -#define NID_aes_256_xts 914 -#define LN_aes_256_xts "aes-256-xts" -#define SN_aes_256_xts "AES-256-XTS" -#define NID_aes_128_xts 913 -#define LN_aes_128_xts "aes-128-xts" -#define SN_aes_128_xts "AES-128-XTS" -#define NID_id_aes256_wrap_pad 903 -#define SN_id_aes256_wrap_pad "id-aes256-wrap-pad" -#define NID_aes_256_ccm 902 -#define LN_aes_256_ccm "aes-256-ccm" -#define SN_aes_256_ccm "id-aes256-CCM" -#define NID_aes_256_gcm 901 -#define LN_aes_256_gcm "aes-256-gcm" -#define SN_aes_256_gcm "id-aes256-GCM" -#define NID_id_aes256_wrap 790 -#define SN_id_aes256_wrap "id-aes256-wrap" -#define NID_aes_256_cfb128 429 -#define LN_aes_256_cfb128 "aes-256-cfb" -#define SN_aes_256_cfb128 "AES-256-CFB" -#define NID_aes_256_ofb128 428 -#define LN_aes_256_ofb128 "aes-256-ofb" -#define SN_aes_256_ofb128 "AES-256-OFB" -#define NID_aes_256_cbc 427 -#define LN_aes_256_cbc "aes-256-cbc" -#define NID_aes_256_ecb 426 -#define LN_aes_256_ecb "aes-256-ecb" -#define SN_aes_256_ecb "AES-256-ECB" -#define NID_id_aes192_wrap_pad 900 -#define SN_id_aes192_wrap_pad "id-aes192-wrap-pad" -#define NID_aes_192_ccm 899 -#define LN_aes_192_ccm "aes-192-ccm" -#define SN_aes_192_ccm "id-aes192-CCM" -#define NID_aes_192_gcm 898 -#define LN_aes_192_gcm "aes-192-gcm" -#define SN_aes_192_gcm "id-aes192-GCM" -#define NID_id_aes192_wrap 789 -#define SN_id_aes192_wrap "id-aes192-wrap" -#define NID_aes_192_cfb128 425 -#define LN_aes_192_cfb128 "aes-192-cfb" -#define SN_aes_192_cfb128 "AES-192-CFB" -#define NID_aes_192_ofb128 424 -#define LN_aes_192_ofb128 "aes-192-ofb" -#define SN_aes_192_ofb128 "AES-192-OFB" -#define NID_aes_192_cbc 423 -#define LN_aes_192_cbc "aes-192-cbc" -#define SN_aes_192_cbc "AES-192-CBC" -#define NID_aes_192_ecb 422 -#define LN_aes_192_ecb "aes-192-ecb" -#define SN_aes_192_ecb "AES-192-ECB" -#define NID_id_aes128_wrap_pad 897 -#define SN_id_aes128_wrap_pad "id-aes128-wrap-pad" -#define NID_aes_128_ccm 896 -#define LN_aes_128_ccm "aes-128-ccm" -#define SN_aes_128_ccm "id-aes128-CCM" -#define NID_aes_128_gcm 895 -#define LN_aes_128_gcm "aes-128-gcm" -#define SN_aes_128_gcm "id-aes128-GCM" -#define NID_id_aes128_wrap 788 -#define SN_id_aes128_wrap "id-aes128-wrap" -#define NID_aes_128_cfb128 421 -#define LN_aes_128_cfb128 "aes-128-cfb" -#define SN_aes_128_cfb128 "AES-128-CFB" -#define NID_aes_128_ofb128 420 -#define LN_aes_128_ofb128 "aes-128-ofb" -#define SN_aes_128_ofb128 "AES-128-OFB" -#define NID_aes_128_cbc 419 -#define LN_aes_128_cbc "aes-128-cbc" -#define SN_aes_128_cbc "AES-128-CBC" -#define NID_aes_128_ecb 418 -#define LN_aes_128_ecb "aes-128-ecb" -#define SN_aes_128_ecb "AES-128-ECB" -#define NID_zlib_compression 125 -#define LN_zlib_compression "zlib compression" -#define SN_zlib_compression "ZLIB" -#define NID_id_hex_multipart_message 508 -#define LN_id_hex_multipart_message "id-hex-multipart-message" -#define SN_id_hex_multipart_message "id-hex-multipart-message" -#define NID_id_hex_partial_message 507 -#define LN_id_hex_partial_message "id-hex-partial-message" -#define SN_id_hex_partial_message "id-hex-partial-message" -#define NID_mime_mhs_bodies 506 -#define LN_mime_mhs_bodies "mime-mhs-bodies" -#define SN_mime_mhs_bodies "mime-mhs-bodies" -#define NID_mime_mhs_headings 505 -#define LN_mime_mhs_headings "mime-mhs-headings" -#define SN_mime_mhs_headings "mime-mhs-headings" -#define NID_mime_mhs 504 -#define LN_mime_mhs "MIME MHS" -#define SN_mime_mhs "mime-mhs" -#define NID_id_kp_wisun_fan_device 1322 -#define LN_id_kp_wisun_fan_device "Wi-SUN Alliance Field Area Network (FAN)" -#define SN_id_kp_wisun_fan_device "id-kp-wisun-fan-device" -#define NID_dcObject 390 -#define LN_dcObject "dcObject" -#define SN_dcObject "dcobject" -#define NID_Enterprises 389 -#define LN_Enterprises "Enterprises" -#define SN_Enterprises "enterprises" -#define NID_Mail 388 -#define LN_Mail "Mail" -#define NID_SNMPv2 387 -#define LN_SNMPv2 "SNMPv2" -#define SN_SNMPv2 "snmpv2" -#define NID_Security 386 -#define LN_Security "Security" -#define SN_Security "security" -#define NID_Private 385 -#define LN_Private "Private" -#define SN_Private "private" -#define NID_Experimental 384 -#define LN_Experimental "Experimental" -#define SN_Experimental "experimental" -#define NID_Management 383 -#define LN_Management "Management" -#define SN_Management "mgmt" -#define NID_Directory 382 -#define LN_Directory "Directory" -#define SN_Directory "directory" -#define NID_iana 381 -#define LN_iana "iana" -#define SN_iana "IANA" -#define NID_dod 380 -#define LN_dod "dod" -#define SN_dod "DOD" -#define NID_org 379 -#define LN_org "org" -#define SN_org "ORG" -#define NID_ns_sgc 139 -#define LN_ns_sgc "Netscape Server Gated Crypto" -#define SN_ns_sgc "nsSGC" -#define NID_netscape_cert_sequence 79 -#define LN_netscape_cert_sequence "Netscape Certificate Sequence" -#define SN_netscape_cert_sequence "nsCertSequence" -#define NID_netscape_comment 78 -#define LN_netscape_comment "Netscape Comment" -#define SN_netscape_comment "nsComment" -#define NID_netscape_ssl_server_name 77 -#define LN_netscape_ssl_server_name "Netscape SSL Server Name" -#define SN_netscape_ssl_server_name "nsSslServerName" -#define NID_netscape_ca_policy_url 76 -#define LN_netscape_ca_policy_url "Netscape CA Policy Url" -#define SN_netscape_ca_policy_url "nsCaPolicyUrl" -#define NID_netscape_renewal_url 75 -#define LN_netscape_renewal_url "Netscape Renewal Url" -#define SN_netscape_renewal_url "nsRenewalUrl" -#define NID_netscape_ca_revocation_url 74 -#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" -#define SN_netscape_ca_revocation_url "nsCaRevocationUrl" -#define NID_netscape_revocation_url 73 -#define LN_netscape_revocation_url "Netscape Revocation Url" -#define SN_netscape_revocation_url "nsRevocationUrl" -#define NID_netscape_base_url 72 -#define LN_netscape_base_url "Netscape Base Url" -#define SN_netscape_base_url "nsBaseUrl" -#define NID_netscape_cert_type 71 -#define LN_netscape_cert_type "Netscape Cert Type" -#define SN_netscape_cert_type "nsCertType" -#define NID_netscape_data_type 59 -#define LN_netscape_data_type "Netscape Data Type" -#define SN_netscape_data_type "nsDataType" -#define NID_netscape_cert_extension 58 -#define LN_netscape_cert_extension "Netscape Certificate Extension" -#define SN_netscape_cert_extension "nsCertExt" -#define NID_netscape 57 -#define LN_netscape "Netscape Communications Corp." -#define SN_netscape "Netscape" -#define NID_anyExtendedKeyUsage 910 -#define LN_anyExtendedKeyUsage "Any Extended Key Usage" -#define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" -#define NID_associated_information 1319 -#define LN_associated_information "X509v3 Associated Information" -#define SN_associated_information "associatedInformation" -#define NID_alt_signature_value 1318 -#define LN_alt_signature_value "X509v3 Alternative Signature Value" -#define SN_alt_signature_value "altSignatureValue" -#define NID_alt_signature_algorithm 1317 -#define LN_alt_signature_algorithm "X509v3 Alternative Signature Algorithm" -#define SN_alt_signature_algorithm "altSignatureAlgorithm" -#define NID_subject_alt_public_key_info 1316 -#define LN_subject_alt_public_key_info "X509v3 Subject Alternative Public Key Info" -#define SN_subject_alt_public_key_info "subjectAltPublicKeyInfo" -#define NID_prot_restrict 1315 -#define LN_prot_restrict "X509v3 Protocol Restriction" -#define SN_prot_restrict "protRestrict" -#define NID_authorization_validation 1314 -#define LN_authorization_validation "X509v3 Authorization Validation" -#define SN_authorization_validation "authorizationValidation" -#define NID_holder_name_constraints 1313 -#define LN_holder_name_constraints "X509v3 Holder Name Constraints" -#define SN_holder_name_constraints "holderNameConstraints" -#define NID_attribute_mappings 1312 -#define LN_attribute_mappings "X509v3 Attribute Mappings" -#define SN_attribute_mappings "attributeMappings" -#define NID_allowed_attribute_assignments 1311 -#define LN_allowed_attribute_assignments "X509v3 Allowed Attribute Assignments" -#define SN_allowed_attribute_assignments "allowedAttributeAssignments" -#define NID_group_ac 1310 -#define LN_group_ac "X509v3 Group Attribute Certificate" -#define SN_group_ac "groupAC" -#define NID_single_use 1309 -#define LN_single_use "X509v3 Single Use" -#define SN_single_use "singleUse" -#define NID_issued_on_behalf_of 1308 -#define LN_issued_on_behalf_of "X509v3 Issued On Behalf Of" -#define SN_issued_on_behalf_of "issuedOnBehalfOf" -#define NID_id_aa_issuing_distribution_point 1307 -#define LN_id_aa_issuing_distribution_point "X509v3 Attribute Authority Issuing Distribution Point" -#define SN_id_aa_issuing_distribution_point "aAissuingDistributionPoint" -#define NID_no_assertion 1306 -#define LN_no_assertion "X509v3 No Assertion" -#define SN_no_assertion "noAssertion" -#define NID_indirect_issuer 1305 -#define LN_indirect_issuer "X509v3 Indirect Issuer" -#define SN_indirect_issuer "indirectIssuer" -#define NID_acceptable_privilege_policies 1304 -#define LN_acceptable_privilege_policies "X509v3 Acceptable Privilege Policies" -#define SN_acceptable_privilege_policies "acceptablePrivPolicies" -#define NID_no_rev_avail 403 -#define LN_no_rev_avail "X509v3 No Revocation Available" -#define SN_no_rev_avail "noRevAvail" -#define NID_target_information 402 -#define LN_target_information "X509v3 AC Targeting" -#define SN_target_information "targetInformation" -#define NID_inhibit_any_policy 748 -#define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" -#define SN_inhibit_any_policy "inhibitAnyPolicy" -#define NID_acceptable_cert_policies 1303 -#define LN_acceptable_cert_policies "X509v3 Acceptable Certification Policies" -#define SN_acceptable_cert_policies "acceptableCertPolicies" -#define NID_soa_identifier 1302 -#define LN_soa_identifier "X509v3 Source of Authority Identifier" -#define SN_soa_identifier "sOAIdentifier" -#define NID_user_notice 1301 -#define LN_user_notice "X509v3 User Notice" -#define SN_user_notice "userNotice" -#define NID_attribute_descriptor 1300 -#define LN_attribute_descriptor "X509v3 Attribute Descriptor" -#define SN_attribute_descriptor "attributeDescriptor" -#define NID_freshest_crl 857 -#define LN_freshest_crl "X509v3 Freshest CRL" -#define SN_freshest_crl "freshestCRL" -#define NID_time_specification 1299 -#define LN_time_specification "X509v3 Time Specification" -#define SN_time_specification "timeSpecification" -#define NID_delegated_name_constraints 1298 -#define LN_delegated_name_constraints "X509v3 Delegated Name Constraints" -#define SN_delegated_name_constraints "delegatedNameConstraints" -#define NID_basic_att_constraints 1297 -#define LN_basic_att_constraints "X509v3 Basic Attribute Certificate Constraints" -#define SN_basic_att_constraints "basicAttConstraints" -#define NID_role_spec_cert_identifier 1296 -#define LN_role_spec_cert_identifier "X509v3 Role Specification Certificate Identifier" -#define SN_role_spec_cert_identifier "roleSpecCertIdentifier" -#define NID_authority_attribute_identifier 1295 -#define LN_authority_attribute_identifier "X509v3 Authority Attribute Identifier" -#define SN_authority_attribute_identifier "authorityAttributeIdentifier" -#define NID_ext_key_usage 126 -#define LN_ext_key_usage "X509v3 Extended Key Usage" -#define SN_ext_key_usage "extendedKeyUsage" -#define NID_policy_constraints 401 -#define LN_policy_constraints "X509v3 Policy Constraints" -#define SN_policy_constraints "policyConstraints" -#define NID_authority_key_identifier 90 -#define LN_authority_key_identifier "X509v3 Authority Key Identifier" -#define SN_authority_key_identifier "authorityKeyIdentifier" -#define NID_policy_mappings 747 -#define LN_policy_mappings "X509v3 Policy Mappings" -#define SN_policy_mappings "policyMappings" -#define NID_any_policy 746 -#define LN_any_policy "X509v3 Any Policy" -#define SN_any_policy "anyPolicy" -#define NID_certificate_policies 89 -#define LN_certificate_policies "X509v3 Certificate Policies" -#define SN_certificate_policies "certificatePolicies" -#define NID_crl_distribution_points 103 -#define LN_crl_distribution_points "X509v3 CRL Distribution Points" -#define SN_crl_distribution_points "crlDistributionPoints" -#define NID_name_constraints 666 -#define LN_name_constraints "X509v3 Name Constraints" -#define SN_name_constraints "nameConstraints" -#define NID_certificate_issuer 771 -#define LN_certificate_issuer "X509v3 Certificate Issuer" -#define SN_certificate_issuer "certificateIssuer" -#define NID_issuing_distribution_point 770 -#define LN_issuing_distribution_point "X509v3 Issuing Distribution Point" -#define SN_issuing_distribution_point "issuingDistributionPoint" -#define NID_delta_crl 140 -#define LN_delta_crl "X509v3 Delta CRL Indicator" -#define SN_delta_crl "deltaCRL" -#define LN_invalidity_date "Invalidity Date" -#define SN_invalidity_date "invalidityDate" -#define LN_crl_reason "X509v3 CRL Reason Code" -#define SN_crl_reason "CRLReason" -#define LN_crl_number "X509v3 CRL Number" -#define SN_crl_number "crlNumber" -#define NID_basic_constraints 87 -#define LN_basic_constraints "X509v3 Basic Constraints" -#define SN_basic_constraints "basicConstraints" -#define NID_issuer_alt_name 86 -#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" -#define SN_issuer_alt_name "issuerAltName" -#define NID_subject_alt_name 85 -#define LN_subject_alt_name "X509v3 Subject Alternative Name" -#define SN_subject_alt_name "subjectAltName" -#define NID_private_key_usage_period 84 -#define LN_private_key_usage_period "X509v3 Private Key Usage Period" -#define SN_private_key_usage_period "privateKeyUsagePeriod" -#define NID_key_usage 83 -#define LN_key_usage "X509v3 Key Usage" -#define SN_key_usage "keyUsage" -#define NID_subject_key_identifier 82 -#define LN_subject_key_identifier "X509v3 Subject Key Identifier" -#define SN_subject_key_identifier "subjectKeyIdentifier" -#define NID_subject_directory_attributes 769 -#define LN_subject_directory_attributes "X509v3 Subject Directory Attributes" -#define SN_subject_directory_attributes "subjectDirectoryAttributes" -#define NID_id_ce 81 -#define SN_id_ce "id-ce" -#define NID_mdc2 95 -#define LN_mdc2 "mdc2" -#define SN_mdc2 "MDC2" -#define NID_mdc2WithRSA 96 -#define LN_mdc2WithRSA "mdc2WithRSA" -#define SN_mdc2WithRSA "RSA-MDC2" -#define NID_rsa 19 -#define LN_rsa "rsa" -#define SN_rsa "RSA" -#define NID_X500algorithms 378 -#define LN_X500algorithms "directory services - algorithms" -#define SN_X500algorithms "X500algorithms" -#define NID_dnsName 1092 -#define LN_dnsName "dnsName" -#define NID_countryCode3n 1091 -#define LN_countryCode3n "countryCode3n" -#define SN_countryCode3n "n3" -#define NID_countryCode3c 1090 -#define LN_countryCode3c "countryCode3c" -#define SN_countryCode3c "c3" -#define NID_organizationIdentifier 1089 -#define LN_organizationIdentifier "organizationIdentifier" -#define NID_role 400 -#define LN_role "role" -#define SN_role "role" -#define NID_pseudonym 510 -#define LN_pseudonym "pseudonym" -#define NID_dmdName 892 -#define SN_dmdName "dmdName" -#define NID_deltaRevocationList 891 -#define LN_deltaRevocationList "deltaRevocationList" -#define NID_supportedAlgorithms 890 -#define LN_supportedAlgorithms "supportedAlgorithms" -#define NID_houseIdentifier 889 -#define LN_houseIdentifier "houseIdentifier" -#define NID_uniqueMember 888 -#define LN_uniqueMember "uniqueMember" -#define NID_distinguishedName 887 -#define LN_distinguishedName "distinguishedName" -#define NID_protocolInformation 886 -#define LN_protocolInformation "protocolInformation" -#define NID_enhancedSearchGuide 885 -#define LN_enhancedSearchGuide "enhancedSearchGuide" -#define NID_dnQualifier 174 -#define LN_dnQualifier "dnQualifier" -#define SN_dnQualifier "dnQualifier" -#define NID_x500UniqueIdentifier 503 -#define LN_x500UniqueIdentifier "x500UniqueIdentifier" -#define NID_generationQualifier 509 -#define LN_generationQualifier "generationQualifier" -#define NID_initials 101 -#define LN_initials "initials" -#define SN_initials "initials" -#define NID_givenName 99 -#define LN_givenName "givenName" -#define SN_givenName "GN" -#define NID_name 173 -#define LN_name "name" -#define SN_name "name" -#define NID_crossCertificatePair 884 -#define LN_crossCertificatePair "crossCertificatePair" -#define NID_certificateRevocationList 883 -#define LN_certificateRevocationList "certificateRevocationList" -#define NID_authorityRevocationList 882 -#define LN_authorityRevocationList "authorityRevocationList" -#define NID_cACertificate 881 -#define LN_cACertificate "cACertificate" -#define NID_userCertificate 880 -#define LN_userCertificate "userCertificate" -#define NID_userPassword 879 -#define LN_userPassword "userPassword" -#define NID_seeAlso 878 -#define SN_seeAlso "seeAlso" -#define NID_roleOccupant 877 -#define LN_roleOccupant "roleOccupant" -#define NID_owner 876 -#define SN_owner "owner" -#define NID_member 875 -#define SN_member "member" -#define NID_supportedApplicationContext 874 -#define LN_supportedApplicationContext "supportedApplicationContext" -#define NID_presentationAddress 873 -#define LN_presentationAddress "presentationAddress" -#define NID_preferredDeliveryMethod 872 -#define LN_preferredDeliveryMethod "preferredDeliveryMethod" -#define NID_destinationIndicator 871 -#define LN_destinationIndicator "destinationIndicator" -#define NID_registeredAddress 870 -#define LN_registeredAddress "registeredAddress" -#define NID_internationaliSDNNumber 869 -#define LN_internationaliSDNNumber "internationaliSDNNumber" -#define NID_x121Address 868 -#define LN_x121Address "x121Address" -#define NID_facsimileTelephoneNumber 867 -#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber" -#define NID_teletexTerminalIdentifier 866 -#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier" -#define NID_telexNumber 865 -#define LN_telexNumber "telexNumber" -#define NID_telephoneNumber 864 -#define LN_telephoneNumber "telephoneNumber" -#define NID_physicalDeliveryOfficeName 863 -#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName" -#define NID_postOfficeBox 862 -#define LN_postOfficeBox "postOfficeBox" -#define NID_postalCode 661 -#define LN_postalCode "postalCode" -#define NID_postalAddress 861 -#define LN_postalAddress "postalAddress" -#define NID_businessCategory 860 -#define LN_businessCategory "businessCategory" -#define NID_searchGuide 859 -#define LN_searchGuide "searchGuide" -#define NID_description 107 -#define LN_description "description" -#define NID_title 106 -#define LN_title "title" -#define SN_title "title" -#define NID_organizationalUnitName 18 -#define LN_organizationalUnitName "organizationalUnitName" -#define SN_organizationalUnitName "OU" -#define NID_organizationName 17 -#define LN_organizationName "organizationName" -#define SN_organizationName "O" -#define NID_streetAddress 660 -#define LN_streetAddress "streetAddress" -#define SN_streetAddress "street" -#define NID_stateOrProvinceName 16 -#define LN_stateOrProvinceName "stateOrProvinceName" -#define SN_stateOrProvinceName "ST" -#define NID_localityName 15 -#define LN_localityName "localityName" -#define SN_localityName "L" -#define NID_countryName 14 -#define LN_countryName "countryName" -#define SN_countryName "C" -#define NID_serialNumber 105 -#define LN_serialNumber "serialNumber" -#define NID_surname 100 -#define LN_surname "surname" -#define SN_surname "SN" -#define NID_commonName 13 -#define LN_commonName "commonName" -#define SN_commonName "CN" -#define NID_X509 12 -#define SN_X509 "X509" -#define NID_X500 11 -#define LN_X500 "directory services (X.500)" -#define SN_X500 "X500" -#define NID_sxnet 143 -#define LN_sxnet "Strong Extranet ID" -#define SN_sxnet "SXNetID" -#define NID_blake2s256 1057 -#define LN_blake2s256 "blake2s256" -#define SN_blake2s256 "BLAKE2s256" -#define NID_blake2b512 1056 -#define LN_blake2b512 "blake2b512" -#define SN_blake2b512 "BLAKE2b512" -#define NID_blake2smac 1202 -#define LN_blake2smac "blake2smac" -#define SN_blake2smac "BLAKE2SMAC" -#define NID_blake2bmac 1201 -#define LN_blake2bmac "blake2bmac" -#define SN_blake2bmac "BLAKE2BMAC" -#define NID_ripemd160WithRSA 119 -#define LN_ripemd160WithRSA "ripemd160WithRSA" -#define SN_ripemd160WithRSA "RSA-RIPEMD160" -#define NID_ripemd160 117 -#define LN_ripemd160 "ripemd160" -#define SN_ripemd160 "RIPEMD160" -#define NID_sha1WithRSA 115 -#define LN_sha1WithRSA "sha1WithRSA" -#define SN_sha1WithRSA "RSA-SHA1-2" -#define NID_dsaWithSHA1_2 70 -#define LN_dsaWithSHA1_2 "dsaWithSHA1-old" -#define SN_dsaWithSHA1_2 "DSA-SHA1-old" -#define NID_sha1 64 -#define LN_sha1 "sha1" -#define SN_sha1 "SHA1" -#define NID_sha 41 -#define LN_sha "sha" -#define SN_sha "SHA" -#define NID_desx_cbc 80 -#define LN_desx_cbc "desx-cbc" -#define SN_desx_cbc "DESX-CBC" -#define NID_des_ede3_ofb64 63 -#define LN_des_ede3_ofb64 "des-ede3-ofb" -#define SN_des_ede3_ofb64 "DES-EDE3-OFB" -#define NID_des_ede_ofb64 62 -#define LN_des_ede_ofb64 "des-ede-ofb" -#define SN_des_ede_ofb64 "DES-EDE-OFB" -#define NID_des_ede3_cfb64 61 -#define LN_des_ede3_cfb64 "des-ede3-cfb" -#define SN_des_ede3_cfb64 "DES-EDE3-CFB" -#define NID_des_ede_cfb64 60 -#define LN_des_ede_cfb64 "des-ede-cfb" -#define SN_des_ede_cfb64 "DES-EDE-CFB" -#define NID_des_ede_cbc 43 -#define LN_des_ede_cbc "des-ede-cbc" -#define SN_des_ede_cbc "DES-EDE-CBC" -#define NID_des_ede3_ecb 33 -#define LN_des_ede3_ecb "des-ede3" -#define SN_des_ede3_ecb "DES-EDE3" -#define NID_des_ede_ecb 32 -#define LN_des_ede_ecb "des-ede" -#define SN_des_ede_ecb "DES-EDE" -#define NID_shaWithRSAEncryption 42 -#define LN_shaWithRSAEncryption "shaWithRSAEncryption" -#define SN_shaWithRSAEncryption "RSA-SHA" -#define NID_dsaWithSHA 66 -#define LN_dsaWithSHA "dsaWithSHA" -#define SN_dsaWithSHA "DSA-SHA" -#define NID_dsa_2 67 -#define LN_dsa_2 "dsaEncryption-old" -#define SN_dsa_2 "DSA-old" -#define NID_rsaSignature 377 -#define SN_rsaSignature "rsaSignature" -#define NID_des_cfb64 30 -#define LN_des_cfb64 "des-cfb" -#define SN_des_cfb64 "DES-CFB" -#define NID_des_ofb64 45 -#define LN_des_ofb64 "des-ofb" -#define SN_des_ofb64 "DES-OFB" -#define NID_des_cbc 31 -#define LN_des_cbc "des-cbc" -#define SN_des_cbc "DES-CBC" -#define NID_des_ecb 29 -#define LN_des_ecb "des-ecb" -#define SN_des_ecb "DES-ECB" -#define NID_md5WithRSA 104 -#define LN_md5WithRSA "md5WithRSA" -#define SN_md5WithRSA "RSA-NP-MD5" -#define NID_algorithm 376 -#define LN_algorithm "algorithm" -#define SN_algorithm "algorithm" -#define NID_id_pkix_OCSP_trustRoot 375 -#define LN_id_pkix_OCSP_trustRoot "Trust Root" -#define SN_id_pkix_OCSP_trustRoot "trustRoot" -#define NID_id_pkix_OCSP_path 374 -#define SN_id_pkix_OCSP_path "path" -#define NID_id_pkix_OCSP_valid 373 -#define SN_id_pkix_OCSP_valid "valid" -#define NID_id_pkix_OCSP_extendedStatus 372 -#define LN_id_pkix_OCSP_extendedStatus "Extended OCSP Status" -#define SN_id_pkix_OCSP_extendedStatus "extendedStatus" -#define NID_id_pkix_OCSP_serviceLocator 371 -#define LN_id_pkix_OCSP_serviceLocator "OCSP Service Locator" -#define SN_id_pkix_OCSP_serviceLocator "serviceLocator" -#define NID_id_pkix_OCSP_archiveCutoff 370 -#define LN_id_pkix_OCSP_archiveCutoff "OCSP Archive Cutoff" -#define SN_id_pkix_OCSP_archiveCutoff "archiveCutoff" -#define NID_id_pkix_OCSP_noCheck 369 -#define LN_id_pkix_OCSP_noCheck "OCSP No Check" -#define SN_id_pkix_OCSP_noCheck "noCheck" -#define NID_id_pkix_OCSP_acceptableResponses 368 -#define LN_id_pkix_OCSP_acceptableResponses "Acceptable OCSP Responses" -#define SN_id_pkix_OCSP_acceptableResponses "acceptableResponses" -#define NID_id_pkix_OCSP_CrlID 367 -#define LN_id_pkix_OCSP_CrlID "OCSP CRL ID" -#define SN_id_pkix_OCSP_CrlID "CrlID" -#define NID_id_pkix_OCSP_Nonce 366 -#define LN_id_pkix_OCSP_Nonce "OCSP Nonce" -#define SN_id_pkix_OCSP_Nonce "Nonce" -#define NID_id_pkix_OCSP_basic 365 -#define LN_id_pkix_OCSP_basic "Basic OCSP Response" -#define SN_id_pkix_OCSP_basic "basicOCSPResponse" -#define NID_rpkiNotify 1245 -#define LN_rpkiNotify "RPKI Notify" -#define SN_rpkiNotify "rpkiNotify" -#define NID_signedObject 1244 -#define LN_signedObject "Signed Object" -#define SN_signedObject "signedObject" -#define NID_rpkiManifest 1243 -#define LN_rpkiManifest "RPKI Manifest" -#define SN_rpkiManifest "rpkiManifest" -#define NID_caRepository 785 -#define LN_caRepository "CA Repository" -#define SN_caRepository "caRepository" -#define NID_ad_dvcs 364 -#define LN_ad_dvcs "ad dvcs" -#define SN_ad_dvcs "AD_DVCS" -#define NID_ad_timeStamping 363 -#define LN_ad_timeStamping "AD Time Stamping" -#define SN_ad_timeStamping "ad_timestamping" -#define NID_ad_ca_issuers 179 -#define LN_ad_ca_issuers "CA Issuers" -#define SN_ad_ca_issuers "caIssuers" -#define NID_ad_OCSP 178 -#define LN_ad_OCSP "OCSP" -#define SN_ad_OCSP "OCSP" -#define NID_Independent 667 -#define LN_Independent "Independent" -#define SN_Independent "id-ppl-independent" -#define NID_id_ppl_inheritAll 665 -#define LN_id_ppl_inheritAll "Inherit all" -#define SN_id_ppl_inheritAll "id-ppl-inheritAll" -#define NID_id_ppl_anyLanguage 664 -#define LN_id_ppl_anyLanguage "Any language" -#define SN_id_ppl_anyLanguage "id-ppl-anyLanguage" -#define NID_id_cct_PKIResponse 362 -#define SN_id_cct_PKIResponse "id-cct-PKIResponse" -#define NID_id_cct_PKIData 361 -#define SN_id_cct_PKIData "id-cct-PKIData" -#define NID_id_cct_crs 360 -#define SN_id_cct_crs "id-cct-crs" -#define NID_ipAddr_asNumberv2 1242 -#define SN_ipAddr_asNumberv2 "ipAddr-asNumberv2" -#define NID_ipAddr_asNumber 1241 -#define SN_ipAddr_asNumber "ipAddr-asNumber" -#define NID_id_qcs_pkixQCSyntax_v1 359 -#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1" -#define NID_id_aca_encAttrs 399 -#define SN_id_aca_encAttrs "id-aca-encAttrs" -#define NID_id_aca_role 358 -#define SN_id_aca_role "id-aca-role" -#define NID_id_aca_group 357 -#define SN_id_aca_group "id-aca-group" -#define NID_id_aca_chargingIdentity 356 -#define SN_id_aca_chargingIdentity "id-aca-chargingIdentity" -#define NID_id_aca_accessIdentity 355 -#define SN_id_aca_accessIdentity "id-aca-accessIdentity" -#define NID_id_aca_authenticationInfo 354 -#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo" -#define NID_id_pda_countryOfResidence 353 -#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence" -#define NID_id_pda_countryOfCitizenship 352 -#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship" -#define NID_id_pda_gender 351 -#define SN_id_pda_gender "id-pda-gender" -#define NID_id_pda_placeOfBirth 349 -#define SN_id_pda_placeOfBirth "id-pda-placeOfBirth" -#define NID_id_pda_dateOfBirth 348 -#define SN_id_pda_dateOfBirth "id-pda-dateOfBirth" -#define NID_id_on_SmtpUTF8Mailbox 1208 -#define LN_id_on_SmtpUTF8Mailbox "Smtp UTF8 Mailbox" -#define SN_id_on_SmtpUTF8Mailbox "id-on-SmtpUTF8Mailbox" -#define NID_NAIRealm 1211 -#define LN_NAIRealm "NAIRealm" -#define SN_NAIRealm "id-on-NAIRealm" -#define NID_SRVName 1210 -#define LN_SRVName "SRVName" -#define SN_SRVName "id-on-dnsSRV" -#define NID_XmppAddr 1209 -#define LN_XmppAddr "XmppAddr" -#define SN_XmppAddr "id-on-xmppAddr" -#define NID_id_on_hardwareModuleName 1321 -#define LN_id_on_hardwareModuleName "Hardware Module Name" -#define SN_id_on_hardwareModuleName "id-on-hardwareModuleName" -#define NID_id_on_permanentIdentifier 858 -#define LN_id_on_permanentIdentifier "Permanent Identifier" -#define SN_id_on_permanentIdentifier "id-on-permanentIdentifier" -#define NID_id_on_personalData 347 -#define SN_id_on_personalData "id-on-personalData" -#define NID_id_cmc_confirmCertAcceptance 346 -#define SN_id_cmc_confirmCertAcceptance "id-cmc-confirmCertAcceptance" -#define NID_id_cmc_popLinkWitness 345 -#define SN_id_cmc_popLinkWitness "id-cmc-popLinkWitness" -#define NID_id_cmc_popLinkRandom 344 -#define SN_id_cmc_popLinkRandom "id-cmc-popLinkRandom" -#define NID_id_cmc_queryPending 343 -#define SN_id_cmc_queryPending "id-cmc-queryPending" -#define NID_id_cmc_responseInfo 342 -#define SN_id_cmc_responseInfo "id-cmc-responseInfo" -#define NID_id_cmc_regInfo 341 -#define SN_id_cmc_regInfo "id-cmc-regInfo" -#define NID_id_cmc_revokeRequest 340 -#define SN_id_cmc_revokeRequest "id-cmc-revokeRequest" -#define NID_id_cmc_getCRL 339 -#define SN_id_cmc_getCRL "id-cmc-getCRL" -#define NID_id_cmc_getCert 338 -#define SN_id_cmc_getCert "id-cmc-getCert" -#define NID_id_cmc_lraPOPWitness 337 -#define SN_id_cmc_lraPOPWitness "id-cmc-lraPOPWitness" -#define NID_id_cmc_decryptedPOP 336 -#define SN_id_cmc_decryptedPOP "id-cmc-decryptedPOP" -#define NID_id_cmc_encryptedPOP 335 -#define SN_id_cmc_encryptedPOP "id-cmc-encryptedPOP" -#define NID_id_cmc_addExtensions 334 -#define SN_id_cmc_addExtensions "id-cmc-addExtensions" -#define NID_id_cmc_recipientNonce 333 -#define SN_id_cmc_recipientNonce "id-cmc-recipientNonce" -#define NID_id_cmc_senderNonce 332 -#define SN_id_cmc_senderNonce "id-cmc-senderNonce" -#define NID_id_cmc_transactionId 331 -#define SN_id_cmc_transactionId "id-cmc-transactionId" -#define NID_id_cmc_dataReturn 330 -#define SN_id_cmc_dataReturn "id-cmc-dataReturn" -#define NID_id_cmc_identityProof 329 -#define SN_id_cmc_identityProof "id-cmc-identityProof" -#define NID_id_cmc_identification 328 -#define SN_id_cmc_identification "id-cmc-identification" -#define NID_id_cmc_statusInfo 327 -#define SN_id_cmc_statusInfo "id-cmc-statusInfo" -#define NID_id_alg_dh_pop 326 -#define SN_id_alg_dh_pop "id-alg-dh-pop" -#define NID_id_alg_dh_sig_hmac_sha1 325 -#define SN_id_alg_dh_sig_hmac_sha1 "id-alg-dh-sig-hmac-sha1" -#define NID_id_alg_noSignature 324 -#define SN_id_alg_noSignature "id-alg-noSignature" -#define NID_id_alg_des40 323 -#define SN_id_alg_des40 "id-alg-des40" -#define NID_id_regInfo_certReq 322 -#define SN_id_regInfo_certReq "id-regInfo-certReq" -#define NID_id_regInfo_utf8Pairs 321 -#define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" -#define SN_id_regCtrl_rsaKeyLen "id-regCtrl-rsaKeyLen" -#define SN_id_regCtrl_algId "id-regCtrl-algId" -#define NID_id_regCtrl_altCertTemplate 1258 -#define SN_id_regCtrl_altCertTemplate "id-regCtrl-altCertTemplate" -#define NID_id_regCtrl_protocolEncrKey 320 -#define SN_id_regCtrl_protocolEncrKey "id-regCtrl-protocolEncrKey" -#define NID_id_regCtrl_oldCertID 319 -#define SN_id_regCtrl_oldCertID "id-regCtrl-oldCertID" -#define NID_id_regCtrl_pkiArchiveOptions 318 -#define SN_id_regCtrl_pkiArchiveOptions "id-regCtrl-pkiArchiveOptions" -#define NID_id_regCtrl_pkiPublicationInfo 317 -#define SN_id_regCtrl_pkiPublicationInfo "id-regCtrl-pkiPublicationInfo" -#define NID_id_regCtrl_authenticator 316 -#define SN_id_regCtrl_authenticator "id-regCtrl-authenticator" -#define NID_id_regCtrl_regToken 315 -#define SN_id_regCtrl_regToken "id-regCtrl-regToken" -#define NID_id_regInfo 314 -#define SN_id_regInfo "id-regInfo" -#define NID_id_regCtrl 313 -#define SN_id_regCtrl "id-regCtrl" -#define NID_id_it_crls 1257 -#define SN_id_it_crls "id-it-crls" -#define SN_id_it_crlStatusList "id-it-crlStatusList" -#define NID_id_it_certProfile 1255 -#define SN_id_it_certProfile "id-it-certProfile" -#define SN_id_it_rootCaCert "id-it-rootCaCert" -#define SN_id_it_certReqTemplate "id-it-certReqTemplate" -#define NID_id_it_rootCaKeyUpdate 1224 -#define SN_id_it_rootCaKeyUpdate "id-it-rootCaKeyUpdate" -#define SN_id_it_caCerts "id-it-caCerts" -#define NID_id_it_suppLangTags 784 -#define SN_id_it_suppLangTags "id-it-suppLangTags" -#define NID_id_it_origPKIMessage 312 -#define SN_id_it_origPKIMessage "id-it-origPKIMessage" -#define NID_id_it_confirmWaitTime 311 -#define SN_id_it_confirmWaitTime "id-it-confirmWaitTime" -#define NID_id_it_implicitConfirm 310 -#define SN_id_it_implicitConfirm "id-it-implicitConfirm" -#define NID_id_it_revPassphrase 309 -#define SN_id_it_revPassphrase "id-it-revPassphrase" -#define NID_id_it_keyPairParamRep 308 -#define SN_id_it_keyPairParamRep "id-it-keyPairParamRep" -#define NID_id_it_keyPairParamReq 307 -#define SN_id_it_keyPairParamReq "id-it-keyPairParamReq" -#define NID_id_it_subscriptionResponse 306 -#define SN_id_it_subscriptionResponse "id-it-subscriptionResponse" -#define NID_id_it_subscriptionRequest 305 -#define SN_id_it_subscriptionRequest "id-it-subscriptionRequest" -#define NID_id_it_unsupportedOIDs 304 -#define SN_id_it_unsupportedOIDs "id-it-unsupportedOIDs" -#define NID_id_it_currentCRL 303 -#define SN_id_it_currentCRL "id-it-currentCRL" -#define NID_id_it_caKeyUpdateInfo 302 -#define SN_id_it_caKeyUpdateInfo "id-it-caKeyUpdateInfo" -#define NID_id_it_preferredSymmAlg 301 -#define SN_id_it_preferredSymmAlg "id-it-preferredSymmAlg" -#define NID_id_it_encKeyPairTypes 300 -#define SN_id_it_encKeyPairTypes "id-it-encKeyPairTypes" -#define NID_id_it_signKeyPairTypes 299 -#define SN_id_it_signKeyPairTypes "id-it-signKeyPairTypes" -#define NID_id_it_caProtEncCert 298 -#define SN_id_it_caProtEncCert "id-it-caProtEncCert" -#define NID_cmKGA 1222 -#define LN_cmKGA "Certificate Management Key Generation Authority" -#define SN_cmKGA "cmKGA" -#define NID_id_kp_BrandIndicatorforMessageIdentification 1221 -#define LN_id_kp_BrandIndicatorforMessageIdentification "Brand Indicator for Message Identification" -#define SN_id_kp_BrandIndicatorforMessageIdentification "id-kp-BrandIndicatorforMessageIdentification" -#define NID_id_kp_bgpsec_router 1220 -#define LN_id_kp_bgpsec_router "BGPsec Router" -#define SN_id_kp_bgpsec_router "id-kp-bgpsec-router" -#define NID_cmcArchive 1219 -#define LN_cmcArchive "CMC Archive Server" -#define SN_cmcArchive "cmcArchive" -#define NID_cmcRA 1132 -#define LN_cmcRA "CMC Registration Authority" -#define SN_cmcRA "cmcRA" -#define NID_cmcCA 1131 -#define LN_cmcCA "CMC Certificate Authority" -#define SN_cmcCA "cmcCA" -#define NID_sendProxiedOwner 1030 -#define LN_sendProxiedOwner "Send Proxied Owner" -#define SN_sendProxiedOwner "sendProxiedOwner" -#define NID_sendOwner 1029 -#define LN_sendOwner "Send Owner" -#define SN_sendOwner "sendOwner" -#define NID_sendProxiedRouter 1028 -#define LN_sendProxiedRouter "Send Proxied Router" -#define SN_sendProxiedRouter "sendProxiedRouter" -#define NID_sendRouter 1027 -#define LN_sendRouter "Send Router" -#define SN_sendRouter "sendRouter" -#define NID_sshServer 1026 -#define LN_sshServer "SSH Server" -#define SN_sshServer "secureShellServer" -#define NID_sshClient 1025 -#define LN_sshClient "SSH Client" -#define SN_sshClient "secureShellClient" -#define NID_capwapWTP 1024 -#define LN_capwapWTP "Ctrl/Provision WAP Termination" -#define SN_capwapWTP "capwapWTP" -#define NID_capwapAC 1023 -#define LN_capwapAC "Ctrl/provision WAP Access" -#define SN_capwapAC "capwapAC" -#define NID_ipsec_IKE 1022 -#define LN_ipsec_IKE "ipsec Internet Key Exchange" -#define SN_ipsec_IKE "ipsecIKE" -#define NID_dvcs 297 -#define LN_dvcs "dvcs" -#define SN_dvcs "DVCS" -#define NID_OCSP_sign 180 -#define LN_OCSP_sign "OCSP Signing" -#define SN_OCSP_sign "OCSPSigning" -#define NID_time_stamp 133 -#define LN_time_stamp "Time Stamping" -#define SN_time_stamp "timeStamping" -#define NID_ipsecUser 296 -#define LN_ipsecUser "IPSec User" -#define SN_ipsecUser "ipsecUser" -#define NID_ipsecTunnel 295 -#define LN_ipsecTunnel "IPSec Tunnel" -#define SN_ipsecTunnel "ipsecTunnel" -#define NID_ipsecEndSystem 294 -#define LN_ipsecEndSystem "IPSec End System" -#define SN_ipsecEndSystem "ipsecEndSystem" -#define NID_email_protect 132 -#define LN_email_protect "E-mail Protection" -#define SN_email_protect "emailProtection" -#define NID_code_sign 131 -#define LN_code_sign "Code Signing" -#define SN_code_sign "codeSigning" -#define NID_client_auth 130 -#define LN_client_auth "TLS Web Client Authentication" -#define SN_client_auth "clientAuth" -#define NID_server_auth 129 -#define LN_server_auth "TLS Web Server Authentication" -#define SN_server_auth "serverAuth" -#define NID_textNotice 293 -#define SN_textNotice "textNotice" -#define NID_id_qt_unotice 165 -#define LN_id_qt_unotice "Policy Qualifier User Notice" -#define SN_id_qt_unotice "id-qt-unotice" -#define NID_id_qt_cps 164 -#define LN_id_qt_cps "Policy Qualifier CPS" -#define SN_id_qt_cps "id-qt-cps" -#define NID_sbgp_autonomousSysNumv2 1240 -#define SN_sbgp_autonomousSysNumv2 "sbgp-autonomousSysNumv2" -#define NID_sbgp_ipAddrBlockv2 1239 -#define SN_sbgp_ipAddrBlockv2 "sbgp-ipAddrBlockv2" -#define NID_tlsfeature 1020 -#define LN_tlsfeature "TLS Feature" -#define SN_tlsfeature "tlsfeature" -#define NID_proxyCertInfo 663 -#define LN_proxyCertInfo "Proxy Certificate Information" -#define SN_proxyCertInfo "proxyCertInfo" -#define NID_sinfo_access 398 -#define LN_sinfo_access "Subject Information Access" -#define SN_sinfo_access "subjectInfoAccess" -#define NID_ac_proxying 397 -#define SN_ac_proxying "ac-proxying" -#define NID_sbgp_routerIdentifier 292 -#define SN_sbgp_routerIdentifier "sbgp-routerIdentifier" -#define NID_sbgp_autonomousSysNum 291 -#define SN_sbgp_autonomousSysNum "sbgp-autonomousSysNum" -#define NID_sbgp_ipAddrBlock 290 -#define SN_sbgp_ipAddrBlock "sbgp-ipAddrBlock" -#define NID_aaControls 289 -#define SN_aaControls "aaControls" -#define NID_ac_targeting 288 -#define SN_ac_targeting "ac-targeting" -#define NID_ac_auditEntity 1323 -#define NID_ac_auditIdentity 287 -#define LN_ac_auditIdentity "X509v3 Audit Identity" -#define SN_ac_auditIdentity "ac-auditIdentity" -#define NID_qcStatements 286 -#define SN_qcStatements "qcStatements" -#define NID_biometricInfo 285 -#define LN_biometricInfo "Biometric Info" -#define SN_biometricInfo "biometricInfo" -#define NID_info_access 177 -#define LN_info_access "Authority Information Access" -#define SN_info_access "authorityInfoAccess" -#define NID_id_mod_cmp2021_02 1253 -#define SN_id_mod_cmp2021_02 "id-mod-cmp2021-02" -#define NID_id_mod_cmp2021_88 1252 -#define SN_id_mod_cmp2021_88 "id-mod-cmp2021-88" -#define NID_id_mod_cmp2000_02 1251 -#define SN_id_mod_cmp2000_02 "id-mod-cmp2000-02" -#define NID_id_mod_cmp2000 284 -#define SN_id_mod_cmp2000 "id-mod-cmp2000" -#define NID_id_mod_dvcs 283 -#define SN_id_mod_dvcs "id-mod-dvcs" -#define NID_id_mod_ocsp 282 -#define SN_id_mod_ocsp "id-mod-ocsp" -#define NID_id_mod_timestamp_protocol 281 -#define SN_id_mod_timestamp_protocol "id-mod-timestamp-protocol" -#define NID_id_mod_attribute_cert 280 -#define SN_id_mod_attribute_cert "id-mod-attribute-cert" -#define NID_id_mod_qualified_cert_93 279 -#define SN_id_mod_qualified_cert_93 "id-mod-qualified-cert-93" -#define NID_id_mod_qualified_cert_88 278 -#define SN_id_mod_qualified_cert_88 "id-mod-qualified-cert-88" -#define NID_id_mod_cmp 277 -#define SN_id_mod_cmp "id-mod-cmp" -#define NID_id_mod_kea_profile_93 276 -#define SN_id_mod_kea_profile_93 "id-mod-kea-profile-93" -#define NID_id_mod_kea_profile_88 275 -#define SN_id_mod_kea_profile_88 "id-mod-kea-profile-88" -#define NID_id_mod_cmc 274 -#define SN_id_mod_cmc "id-mod-cmc" -#define NID_id_mod_crmf 273 -#define SN_id_mod_crmf "id-mod-crmf" -#define NID_id_pkix1_implicit_93 272 -#define SN_id_pkix1_implicit_93 "id-pkix1-implicit-93" -#define NID_id_pkix1_explicit_93 271 -#define SN_id_pkix1_explicit_93 "id-pkix1-explicit-93" -#define NID_id_pkix1_implicit_88 270 -#define SN_id_pkix1_implicit_88 "id-pkix1-implicit-88" -#define NID_id_pkix1_explicit_88 269 -#define SN_id_pkix1_explicit_88 "id-pkix1-explicit-88" -#define NID_id_ad 176 -#define SN_id_ad "id-ad" -#define NID_id_ppl 662 -#define SN_id_ppl "id-ppl" -#define NID_id_cct 268 -#define SN_id_cct "id-cct" -#define NID_id_cp 1238 -#define SN_id_cp "id-cp" -#define NID_id_qcs 267 -#define SN_id_qcs "id-qcs" -#define NID_id_aca 266 -#define SN_id_aca "id-aca" -#define NID_id_pda 265 -#define SN_id_pda "id-pda" -#define NID_id_on 264 -#define SN_id_on "id-on" -#define NID_id_cmc 263 -#define SN_id_cmc "id-cmc" -#define NID_id_alg 262 -#define SN_id_alg "id-alg" -#define NID_id_pkip 261 -#define SN_id_pkip "id-pkip" -#define NID_id_it 260 -#define SN_id_it "id-it" -#define NID_id_kp 128 -#define SN_id_kp "id-kp" -#define NID_id_qt 259 -#define SN_id_qt "id-qt" -#define NID_id_pe 175 -#define SN_id_pe "id-pe" -#define NID_id_pkix_mod 258 -#define SN_id_pkix_mod "id-pkix-mod" -#define NID_id_pkix 127 -#define SN_id_pkix "PKIX" -#define NID_bf_ofb64 94 -#define LN_bf_ofb64 "bf-ofb" -#define SN_bf_ofb64 "BF-OFB" -#define NID_bf_cfb64 93 -#define LN_bf_cfb64 "bf-cfb" -#define SN_bf_cfb64 "BF-CFB" -#define NID_bf_ecb 92 -#define LN_bf_ecb "bf-ecb" -#define SN_bf_ecb "BF-ECB" -#define NID_bf_cbc 91 -#define LN_bf_cbc "bf-cbc" -#define SN_bf_cbc "BF-CBC" -#define NID_idea_ofb64 46 -#define LN_idea_ofb64 "idea-ofb" -#define SN_idea_ofb64 "IDEA-OFB" -#define NID_idea_cfb64 35 -#define LN_idea_cfb64 "idea-cfb" -#define SN_idea_cfb64 "IDEA-CFB" -#define NID_idea_ecb 36 -#define LN_idea_ecb "idea-ecb" -#define SN_idea_ecb "IDEA-ECB" -#define NID_idea_cbc 34 -#define LN_idea_cbc "idea-cbc" -#define SN_idea_cbc "IDEA-CBC" -#define NID_ms_app_policies 1294 -#define LN_ms_app_policies "Microsoft Application Policies Extension" -#define SN_ms_app_policies "ms-app-policies" -#define NID_ms_cert_templ 1293 -#define LN_ms_cert_templ "Microsoft certificate template" -#define SN_ms_cert_templ "ms-cert-templ" -#define NID_ms_ntds_obj_sid 1291 -#define LN_ms_ntds_obj_sid "Microsoft NTDS AD objectSid" -#define SN_ms_ntds_obj_sid "ms-ntds-obj-sid" -#define NID_ms_ntds_sec_ext 1292 -#define LN_ms_ntds_sec_ext "Microsoft NTDS CA Extension" -#define SN_ms_ntds_sec_ext "ms-ntds-sec-ext" -#define NID_ms_upn 649 -#define LN_ms_upn "Microsoft User Principal Name" -#define SN_ms_upn "msUPN" -#define NID_ms_smartcard_login 648 -#define LN_ms_smartcard_login "Microsoft Smartcard Login" -#define SN_ms_smartcard_login "msSmartcardLogin" -#define NID_ms_efs 138 -#define LN_ms_efs "Microsoft Encrypted File System" -#define SN_ms_efs "msEFS" -#define NID_ms_sgc 137 -#define LN_ms_sgc "Microsoft Server Gated Crypto" -#define SN_ms_sgc "msSGC" -#define NID_ms_ctl_sign 136 -#define LN_ms_ctl_sign "Microsoft Trust List Signing" -#define SN_ms_ctl_sign "msCTLSign" -#define NID_ms_code_com 135 -#define LN_ms_code_com "Microsoft Commercial Code Signing" -#define SN_ms_code_com "msCodeCom" -#define NID_ms_code_ind 134 -#define LN_ms_code_ind "Microsoft Individual Code Signing" -#define SN_ms_code_ind "msCodeInd" -#define NID_ms_ext_req 171 -#define LN_ms_ext_req "Microsoft Extension Request" -#define SN_ms_ext_req "msExtReq" -#define NID_rc5_ofb64 123 -#define LN_rc5_ofb64 "rc5-ofb" -#define SN_rc5_ofb64 "RC5-OFB" -#define NID_rc5_cfb64 122 -#define LN_rc5_cfb64 "rc5-cfb" -#define SN_rc5_cfb64 "RC5-CFB" -#define NID_rc5_ecb 121 -#define LN_rc5_ecb "rc5-ecb" -#define SN_rc5_ecb "RC5-ECB" -#define NID_rc5_cbc 120 -#define LN_rc5_cbc "rc5-cbc" -#define SN_rc5_cbc "RC5-CBC" -#define NID_des_ede3_cbc 44 -#define LN_des_ede3_cbc "des-ede3-cbc" -#define SN_des_ede3_cbc "DES-EDE3-CBC" -#define NID_rc4_40 97 -#define LN_rc4_40 "rc4-40" -#define SN_rc4_40 "RC4-40" -#define NID_rc4 5 -#define LN_rc4 "rc4" -#define SN_rc4 "RC4" -#define NID_rc2_64_cbc 166 -#define LN_rc2_64_cbc "rc2-64-cbc" -#define SN_rc2_64_cbc "RC2-64-CBC" -#define NID_rc2_40_cbc 98 -#define LN_rc2_40_cbc "rc2-40-cbc" -#define SN_rc2_40_cbc "RC2-40-CBC" -#define NID_rc2_ofb64 40 -#define LN_rc2_ofb64 "rc2-ofb" -#define SN_rc2_ofb64 "RC2-OFB" -#define NID_rc2_cfb64 39 -#define LN_rc2_cfb64 "rc2-cfb" -#define SN_rc2_cfb64 "RC2-CFB" -#define NID_rc2_ecb 38 -#define LN_rc2_ecb "rc2-ecb" -#define SN_rc2_ecb "RC2-ECB" -#define NID_rc2_cbc 37 -#define LN_rc2_cbc "rc2-cbc" -#define SN_rc2_cbc "RC2-CBC" -#define NID_hmacWithSHA512_256 1194 -#define LN_hmacWithSHA512_256 "hmacWithSHA512-256" -#define NID_hmacWithSHA512_224 1193 -#define LN_hmacWithSHA512_224 "hmacWithSHA512-224" -#define NID_hmacWithSHA512 801 -#define LN_hmacWithSHA512 "hmacWithSHA512" -#define NID_hmacWithSHA384 800 -#define LN_hmacWithSHA384 "hmacWithSHA384" -#define NID_hmacWithSHA256 799 -#define LN_hmacWithSHA256 "hmacWithSHA256" -#define NID_hmacWithSHA224 798 -#define LN_hmacWithSHA224 "hmacWithSHA224" -#define NID_hmacWithSM3 1281 -#define LN_hmacWithSM3 "hmacWithSM3" -#define NID_SM2_with_SM3 1204 -#define LN_SM2_with_SM3 "SM2-with-SM3" -#define SN_SM2_with_SM3 "SM2-SM3" -#define NID_sm3WithRSAEncryption 1144 -#define LN_sm3WithRSAEncryption "sm3WithRSAEncryption" -#define SN_sm3WithRSAEncryption "RSA-SM3" -#define NID_sm3 1143 -#define LN_sm3 "sm3" -#define SN_sm3 "SM3" -#define NID_sm2 1172 -#define LN_sm2 "sm2" -#define SN_sm2 "SM2" -#define NID_hmacWithSHA1 163 -#define LN_hmacWithSHA1 "hmacWithSHA1" -#define NID_hmacWithMD5 797 -#define LN_hmacWithMD5 "hmacWithMD5" -#define NID_md5_sha1 114 -#define LN_md5_sha1 "md5-sha1" -#define SN_md5_sha1 "MD5-SHA1" -#define NID_md5 4 -#define LN_md5 "md5" -#define SN_md5 "MD5" -#define NID_md4 257 -#define LN_md4 "md4" -#define SN_md4 "MD4" -#define NID_md2 3 -#define LN_md2 "md2" -#define SN_md2 "MD2" -#define NID_safeContentsBag 155 -#define LN_safeContentsBag "safeContentsBag" -#define NID_secretBag 154 -#define LN_secretBag "secretBag" -#define NID_crlBag 153 -#define LN_crlBag "crlBag" -#define NID_certBag 152 -#define LN_certBag "certBag" -#define NID_pkcs8ShroudedKeyBag 151 -#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" -#define NID_keyBag 150 -#define LN_keyBag "keyBag" -#define NID_pbe_WithSHA1And40BitRC2_CBC 149 -#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" -#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" -#define NID_pbe_WithSHA1And128BitRC2_CBC 148 -#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" -#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" -#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 -#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" -#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" -#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 -#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" -#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" -#define NID_pbe_WithSHA1And40BitRC4 145 -#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" -#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" -#define NID_pbe_WithSHA1And128BitRC4 144 -#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" -#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" -#define NID_id_aa_CMSAlgorithmProtection 1263 -#define SN_id_aa_CMSAlgorithmProtection "id-aa-CMSAlgorithmProtection" -#define NID_x509Crl 160 -#define LN_x509Crl "x509Crl" -#define NID_sdsiCertificate 159 -#define LN_sdsiCertificate "sdsiCertificate" -#define NID_x509Certificate 158 -#define LN_x509Certificate "x509Certificate" -#define NID_LocalKeySet 856 -#define LN_LocalKeySet "Microsoft Local Key set" -#define SN_LocalKeySet "LocalKeySet" -#define NID_ms_csp_name 417 -#define LN_ms_csp_name "Microsoft CSP Name" -#define SN_ms_csp_name "CSPName" -#define NID_localKeyID 157 -#define LN_localKeyID "localKeyID" -#define NID_friendlyName 156 -#define LN_friendlyName "friendlyName" -#define NID_id_smime_cti_ets_proofOfCreation 256 -#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation" -#define NID_id_smime_cti_ets_proofOfApproval 255 -#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval" -#define NID_id_smime_cti_ets_proofOfSender 254 -#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender" -#define NID_id_smime_cti_ets_proofOfDelivery 253 -#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery" -#define NID_id_smime_cti_ets_proofOfReceipt 252 -#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt" -#define NID_id_smime_cti_ets_proofOfOrigin 251 -#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin" -#define NID_id_smime_spq_ets_sqt_unotice 250 -#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice" -#define NID_id_smime_spq_ets_sqt_uri 249 -#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri" -#define NID_id_smime_cd_ldap 248 -#define SN_id_smime_cd_ldap "id-smime-cd-ldap" -#define NID_id_alg_PWRI_KEK 893 -#define SN_id_alg_PWRI_KEK "id-alg-PWRI-KEK" -#define NID_id_smime_alg_CMSRC2wrap 247 -#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap" -#define NID_id_smime_alg_CMS3DESwrap 246 -#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap" -#define NID_id_smime_alg_ESDH 245 -#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH" -#define NID_id_smime_alg_RC2wrap 244 -#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap" -#define NID_id_smime_alg_3DESwrap 243 -#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap" -#define NID_id_smime_alg_ESDHwithRC2 242 -#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2" -#define NID_id_smime_alg_ESDHwith3DES 241 -#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" -#define NID_id_aa_ets_archiveTimestampV2 1280 -#define SN_id_aa_ets_archiveTimestampV2 "id-aa-ets-archiveTimestampV2" -#define NID_id_smime_aa_signingCertificateV2 1086 -#define SN_id_smime_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" -#define NID_id_aa_ets_attrRevocationRefs 1262 -#define SN_id_aa_ets_attrRevocationRefs "id-aa-ets-attrRevocationRefs" -#define NID_id_aa_ets_attrCertificateRefs 1261 -#define SN_id_aa_ets_attrCertificateRefs "id-aa-ets-attrCertificateRefs" -#define NID_id_smime_aa_dvcs_dvc 240 -#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc" -#define NID_id_smime_aa_signatureType 239 -#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType" -#define NID_id_smime_aa_ets_archiveTimeStamp 238 -#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp" -#define NID_id_smime_aa_ets_certCRLTimestamp 237 -#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp" -#define NID_id_smime_aa_ets_escTimeStamp 236 -#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp" -#define NID_id_smime_aa_ets_revocationValues 235 -#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues" -#define NID_id_smime_aa_ets_certValues 234 -#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues" -#define NID_id_smime_aa_ets_RevocationRefs 233 -#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs" -#define NID_id_smime_aa_ets_CertificateRefs 232 -#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs" -#define NID_id_smime_aa_ets_contentTimestamp 231 -#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp" -#define NID_id_smime_aa_ets_otherSigCert 230 -#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert" -#define NID_id_smime_aa_ets_signerAttr 229 -#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr" -#define NID_id_smime_aa_ets_signerLocation 228 -#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation" -#define NID_id_smime_aa_ets_commitmentType 227 -#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType" -#define NID_id_smime_aa_ets_sigPolicyId 226 -#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId" -#define NID_id_smime_aa_timeStampToken 225 -#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken" -#define NID_id_smime_aa_smimeEncryptCerts 224 -#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts" -#define NID_id_smime_aa_signingCertificate 223 -#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate" -#define NID_id_smime_aa_encrypKeyPref 222 -#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref" -#define NID_id_smime_aa_contentReference 221 -#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference" -#define NID_id_smime_aa_equivalentLabels 220 -#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels" -#define NID_id_smime_aa_macValue 219 -#define SN_id_smime_aa_macValue "id-smime-aa-macValue" -#define NID_id_smime_aa_contentIdentifier 218 -#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier" -#define NID_id_smime_aa_encapContentType 217 -#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType" -#define NID_id_smime_aa_msgSigDigest 216 -#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest" -#define NID_id_smime_aa_contentHint 215 -#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint" -#define NID_id_smime_aa_mlExpandHistory 214 -#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory" -#define NID_id_smime_aa_securityLabel 213 -#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel" -#define NID_id_smime_aa_receiptRequest 212 -#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" -#define NID_id_ct_rpkiSignedPrefixList 1320 -#define SN_id_ct_rpkiSignedPrefixList "id-ct-rpkiSignedPrefixList" -#define NID_id_ct_signedTAL 1284 -#define SN_id_ct_signedTAL "id-ct-signedTAL" -#define NID_id_ct_ASPA 1250 -#define SN_id_ct_ASPA "id-ct-ASPA" -#define NID_id_ct_signedChecklist 1247 -#define SN_id_ct_signedChecklist "id-ct-signedChecklist" -#define NID_id_ct_geofeedCSVwithCRLF 1246 -#define SN_id_ct_geofeedCSVwithCRLF "id-ct-geofeedCSVwithCRLF" -#define NID_id_ct_resourceTaggedAttest 1237 -#define SN_id_ct_resourceTaggedAttest "id-ct-resourceTaggedAttest" -#define NID_id_ct_rpkiGhostbusters 1236 -#define SN_id_ct_rpkiGhostbusters "id-ct-rpkiGhostbusters" -#define NID_id_ct_xml 1060 -#define SN_id_ct_xml "id-ct-xml" -#define NID_id_ct_asciiTextWithCRLF 787 -#define SN_id_ct_asciiTextWithCRLF "id-ct-asciiTextWithCRLF" -#define NID_id_ct_rpkiManifest 1235 -#define SN_id_ct_rpkiManifest "id-ct-rpkiManifest" -#define NID_id_ct_routeOriginAuthz 1234 -#define SN_id_ct_routeOriginAuthz "id-ct-routeOriginAuthz" -#define NID_id_smime_ct_authEnvelopedData 1059 -#define SN_id_smime_ct_authEnvelopedData "id-smime-ct-authEnvelopedData" -#define NID_id_smime_ct_contentCollection 1058 -#define SN_id_smime_ct_contentCollection "id-smime-ct-contentCollection" -#define NID_id_smime_ct_compressedData 786 -#define SN_id_smime_ct_compressedData "id-smime-ct-compressedData" -#define NID_id_smime_ct_DVCSResponseData 211 -#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData" -#define NID_id_smime_ct_DVCSRequestData 210 -#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData" -#define NID_id_smime_ct_contentInfo 209 -#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo" -#define NID_id_smime_ct_TDTInfo 208 -#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo" -#define NID_id_smime_ct_TSTInfo 207 -#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo" -#define NID_id_smime_ct_publishCert 206 -#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert" -#define NID_id_smime_ct_authData 205 -#define SN_id_smime_ct_authData "id-smime-ct-authData" -#define NID_id_smime_ct_receipt 204 -#define SN_id_smime_ct_receipt "id-smime-ct-receipt" -#define NID_id_smime_mod_ets_eSigPolicy_97 203 -#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97" -#define NID_id_smime_mod_ets_eSigPolicy_88 202 -#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88" -#define NID_id_smime_mod_ets_eSignature_97 201 -#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97" -#define NID_id_smime_mod_ets_eSignature_88 200 -#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88" -#define NID_id_smime_mod_msg_v3 199 -#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3" -#define NID_id_smime_mod_oid 198 -#define SN_id_smime_mod_oid "id-smime-mod-oid" -#define NID_id_smime_mod_ess 197 -#define SN_id_smime_mod_ess "id-smime-mod-ess" -#define NID_id_smime_mod_cms 196 -#define SN_id_smime_mod_cms "id-smime-mod-cms" -#define NID_id_smime_cti 195 -#define SN_id_smime_cti "id-smime-cti" -#define NID_id_smime_spq 194 -#define SN_id_smime_spq "id-smime-spq" -#define NID_id_smime_cd 193 -#define SN_id_smime_cd "id-smime-cd" -#define NID_id_smime_alg 192 -#define SN_id_smime_alg "id-smime-alg" -#define NID_id_smime_aa 191 -#define SN_id_smime_aa "id-smime-aa" -#define NID_id_smime_ct 190 -#define SN_id_smime_ct "id-smime-ct" -#define NID_id_smime_mod 189 -#define SN_id_smime_mod "id-smime-mod" -#define NID_SMIME 188 -#define LN_SMIME "S/MIME" -#define SN_SMIME "SMIME" -#define NID_SMIMECapabilities 167 -#define LN_SMIMECapabilities "S/MIME Capabilities" -#define SN_SMIMECapabilities "SMIME-CAPS" -#define NID_ext_req 172 -#define LN_ext_req "Extension Request" -#define SN_ext_req "extReq" -#define NID_pkcs9_extCertAttributes 56 -#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" -#define NID_pkcs9_unstructuredAddress 55 -#define LN_pkcs9_unstructuredAddress "unstructuredAddress" -#define NID_pkcs9_challengePassword 54 -#define LN_pkcs9_challengePassword "challengePassword" -#define NID_pkcs9_countersignature 53 -#define LN_pkcs9_countersignature "countersignature" -#define NID_pkcs9_signingTime 52 -#define LN_pkcs9_signingTime "signingTime" -#define NID_pkcs9_messageDigest 51 -#define LN_pkcs9_messageDigest "messageDigest" -#define NID_pkcs9_contentType 50 -#define LN_pkcs9_contentType "contentType" -#define NID_pkcs9_unstructuredName 49 -#define LN_pkcs9_unstructuredName "unstructuredName" -#define LN_pkcs9_emailAddress "emailAddress" -#define NID_pkcs9 47 -#define SN_pkcs9 "pkcs9" -#define NID_pkcs7_encrypted 26 -#define LN_pkcs7_encrypted "pkcs7-encryptedData" -#define NID_pkcs7_digest 25 -#define LN_pkcs7_digest "pkcs7-digestData" -#define NID_pkcs7_signedAndEnveloped 24 -#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" -#define NID_pkcs7_enveloped 23 -#define LN_pkcs7_enveloped "pkcs7-envelopedData" -#define LN_pkcs7_signed "pkcs7-signedData" -#define LN_pkcs7_data "pkcs7-data" -#define NID_pkcs7 20 -#define SN_pkcs7 "pkcs7" -#define NID_pbmac1 162 -#define LN_pbmac1 "PBMAC1" -#define NID_pbes2 161 -#define LN_pbes2 "PBES2" -#define NID_id_pbkdf2 69 -#define LN_id_pbkdf2 "PBKDF2" -#define NID_pbeWithSHA1AndRC2_CBC 68 -#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" -#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" -#define NID_pbeWithSHA1AndDES_CBC 170 -#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" -#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" -#define NID_pbeWithMD5AndRC2_CBC 169 -#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" -#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" -#define NID_pbeWithMD2AndRC2_CBC 168 -#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" -#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" -#define NID_pbeWithMD5AndDES_CBC 10 -#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" -#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" -#define NID_pbeWithMD2AndDES_CBC 9 -#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" -#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" -#define NID_pkcs5 187 -#define SN_pkcs5 "pkcs5" -#define NID_dhKeyAgreement 28 -#define LN_dhKeyAgreement "dhKeyAgreement" -#define NID_pkcs3 27 -#define SN_pkcs3 "pkcs3" -#define NID_sha512_256WithRSAEncryption 1146 -#define LN_sha512_256WithRSAEncryption "sha512-256WithRSAEncryption" -#define SN_sha512_256WithRSAEncryption "RSA-SHA512/256" -#define NID_sha512_224WithRSAEncryption 1145 -#define LN_sha512_224WithRSAEncryption "sha512-224WithRSAEncryption" -#define SN_sha512_224WithRSAEncryption "RSA-SHA512/224" -#define NID_sha224WithRSAEncryption 671 -#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption" -#define SN_sha224WithRSAEncryption "RSA-SHA224" -#define NID_sha512WithRSAEncryption 670 -#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption" -#define SN_sha512WithRSAEncryption "RSA-SHA512" -#define NID_sha384WithRSAEncryption 669 -#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption" -#define SN_sha384WithRSAEncryption "RSA-SHA384" -#define NID_sha256WithRSAEncryption 668 -#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption" -#define SN_sha256WithRSAEncryption "RSA-SHA256" -#define NID_rsassaPss 912 -#define LN_rsassaPss "rsassaPss" -#define SN_rsassaPss "RSASSA-PSS" -#define NID_pSpecified 935 -#define LN_pSpecified "pSpecified" -#define SN_pSpecified "PSPECIFIED" -#define NID_mgf1 911 -#define LN_mgf1 "mgf1" -#define SN_mgf1 "MGF1" -#define NID_rsaesOaep 919 -#define LN_rsaesOaep "rsaesOaep" -#define SN_rsaesOaep "RSAES-OAEP" -#define NID_sha1WithRSAEncryption 65 -#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" -#define SN_sha1WithRSAEncryption "RSA-SHA1" -#define NID_md5WithRSAEncryption 8 -#define LN_md5WithRSAEncryption "md5WithRSAEncryption" -#define SN_md5WithRSAEncryption "RSA-MD5" -#define NID_md4WithRSAEncryption 396 -#define LN_md4WithRSAEncryption "md4WithRSAEncryption" -#define SN_md4WithRSAEncryption "RSA-MD4" -#define NID_md2WithRSAEncryption 7 -#define LN_md2WithRSAEncryption "md2WithRSAEncryption" -#define SN_md2WithRSAEncryption "RSA-MD2" -#define NID_rsaEncryption 6 -#define LN_rsaEncryption "rsaEncryption" -#define NID_pkcs1 186 -#define SN_pkcs1 "pkcs1" -#define NID_pkcs 2 -#define LN_pkcs "RSA Data Security, Inc. PKCS" -#define SN_pkcs "pkcs" -#define NID_rsadsi 1 -#define LN_rsadsi "RSA Data Security, Inc." -#define SN_rsadsi "rsadsi" -#define NID_id_DHBasedMac 783 -#define LN_id_DHBasedMac "Diffie-Hellman based MAC" -#define SN_id_DHBasedMac "id-DHBasedMac" -#define NID_id_PasswordBasedMAC 782 -#define LN_id_PasswordBasedMAC "password based MAC" -#define SN_id_PasswordBasedMAC "id-PasswordBasedMAC" -#define NID_pbeWithMD5AndCast5_CBC 112 -#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" -#define NID_cast5_ofb64 111 -#define LN_cast5_ofb64 "cast5-ofb" -#define SN_cast5_ofb64 "CAST5-OFB" -#define NID_cast5_cfb64 110 -#define LN_cast5_cfb64 "cast5-cfb" -#define SN_cast5_cfb64 "CAST5-CFB" -#define NID_cast5_ecb 109 -#define LN_cast5_ecb "cast5-ecb" -#define SN_cast5_ecb "CAST5-ECB" -#define NID_cast5_cbc 108 -#define LN_cast5_cbc "cast5-cbc" -#define SN_cast5_cbc "CAST5-CBC" -#define NID_wap_wsg_idm_ecid_wtls12 745 -#define SN_wap_wsg_idm_ecid_wtls12 "wap-wsg-idm-ecid-wtls12" -#define NID_wap_wsg_idm_ecid_wtls11 744 -#define SN_wap_wsg_idm_ecid_wtls11 "wap-wsg-idm-ecid-wtls11" -#define NID_wap_wsg_idm_ecid_wtls10 743 -#define SN_wap_wsg_idm_ecid_wtls10 "wap-wsg-idm-ecid-wtls10" -#define NID_wap_wsg_idm_ecid_wtls9 742 -#define SN_wap_wsg_idm_ecid_wtls9 "wap-wsg-idm-ecid-wtls9" -#define NID_wap_wsg_idm_ecid_wtls8 741 -#define SN_wap_wsg_idm_ecid_wtls8 "wap-wsg-idm-ecid-wtls8" -#define NID_wap_wsg_idm_ecid_wtls7 740 -#define SN_wap_wsg_idm_ecid_wtls7 "wap-wsg-idm-ecid-wtls7" -#define NID_wap_wsg_idm_ecid_wtls6 739 -#define SN_wap_wsg_idm_ecid_wtls6 "wap-wsg-idm-ecid-wtls6" -#define NID_wap_wsg_idm_ecid_wtls5 738 -#define SN_wap_wsg_idm_ecid_wtls5 "wap-wsg-idm-ecid-wtls5" -#define NID_wap_wsg_idm_ecid_wtls4 737 -#define SN_wap_wsg_idm_ecid_wtls4 "wap-wsg-idm-ecid-wtls4" -#define NID_wap_wsg_idm_ecid_wtls3 736 -#define SN_wap_wsg_idm_ecid_wtls3 "wap-wsg-idm-ecid-wtls3" -#define NID_wap_wsg_idm_ecid_wtls1 735 -#define SN_wap_wsg_idm_ecid_wtls1 "wap-wsg-idm-ecid-wtls1" -#define NID_sect571r1 734 -#define SN_sect571r1 "sect571r1" -#define NID_sect571k1 733 -#define SN_sect571k1 "sect571k1" -#define NID_sect409r1 732 -#define SN_sect409r1 "sect409r1" -#define NID_sect409k1 731 -#define SN_sect409k1 "sect409k1" -#define NID_sect283r1 730 -#define SN_sect283r1 "sect283r1" -#define NID_sect283k1 729 -#define SN_sect283k1 "sect283k1" -#define NID_sect239k1 728 -#define SN_sect239k1 "sect239k1" -#define NID_sect233r1 727 -#define SN_sect233r1 "sect233r1" -#define NID_sect233k1 726 -#define SN_sect233k1 "sect233k1" -#define NID_sect193r2 725 -#define SN_sect193r2 "sect193r2" -#define NID_sect193r1 724 -#define SN_sect193r1 "sect193r1" -#define NID_sect163r2 723 -#define SN_sect163r2 "sect163r2" -#define NID_sect163r1 722 -#define SN_sect163r1 "sect163r1" -#define NID_sect163k1 721 -#define SN_sect163k1 "sect163k1" -#define NID_sect131r2 720 -#define SN_sect131r2 "sect131r2" -#define NID_sect131r1 719 -#define SN_sect131r1 "sect131r1" -#define NID_sect113r2 718 -#define SN_sect113r2 "sect113r2" -#define NID_sect113r1 717 -#define SN_sect113r1 "sect113r1" -#define NID_secp521r1 716 -#define SN_secp521r1 "secp521r1" -#define NID_secp384r1 715 -#define SN_secp384r1 "secp384r1" -#define NID_secp256k1 714 -#define SN_secp256k1 "secp256k1" -#define NID_secp224r1 713 -#define SN_secp224r1 "secp224r1" -#define NID_secp224k1 712 -#define SN_secp224k1 "secp224k1" -#define NID_secp192k1 711 -#define SN_secp192k1 "secp192k1" -#define NID_secp160r2 710 -#define SN_secp160r2 "secp160r2" -#define NID_secp160r1 709 -#define SN_secp160r1 "secp160r1" -#define NID_secp160k1 708 -#define SN_secp160k1 "secp160k1" -#define NID_secp128r2 707 -#define SN_secp128r2 "secp128r2" -#define NID_secp128r1 706 -#define SN_secp128r1 "secp128r1" -#define NID_secp112r2 705 -#define SN_secp112r2 "secp112r2" -#define NID_secp112r1 704 -#define SN_secp112r1 "secp112r1" -#define NID_ecdsa_with_SHA512 796 -#define SN_ecdsa_with_SHA512 "ecdsa-with-SHA512" -#define NID_ecdsa_with_SHA384 795 -#define SN_ecdsa_with_SHA384 "ecdsa-with-SHA384" -#define NID_ecdsa_with_SHA256 794 -#define SN_ecdsa_with_SHA256 "ecdsa-with-SHA256" -#define NID_ecdsa_with_SHA224 793 -#define SN_ecdsa_with_SHA224 "ecdsa-with-SHA224" -#define NID_ecdsa_with_Specified 792 -#define SN_ecdsa_with_Specified "ecdsa-with-Specified" -#define NID_ecdsa_with_Recommended 791 -#define SN_ecdsa_with_Recommended "ecdsa-with-Recommended" -#define NID_ecdsa_with_SHA1 416 -#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1" -#define NID_X9_62_prime256v1 415 -#define NID_X9_62_prime239v3 414 -#define SN_X9_62_prime239v3 "prime239v3" -#define NID_X9_62_prime239v2 413 -#define SN_X9_62_prime239v2 "prime239v2" -#define NID_X9_62_prime239v1 412 -#define SN_X9_62_prime239v1 "prime239v1" -#define NID_X9_62_prime192v3 411 -#define SN_X9_62_prime192v3 "prime192v3" -#define NID_X9_62_prime192v2 410 -#define SN_X9_62_prime192v2 "prime192v2" -#define NID_X9_62_prime192v1 409 -#define NID_X9_62_c2tnb431r1 703 -#define SN_X9_62_c2tnb431r1 "c2tnb431r1" -#define NID_X9_62_c2pnb368w1 702 -#define SN_X9_62_c2pnb368w1 "c2pnb368w1" -#define NID_X9_62_c2tnb359v1 701 -#define SN_X9_62_c2tnb359v1 "c2tnb359v1" -#define NID_X9_62_c2pnb304w1 700 -#define SN_X9_62_c2pnb304w1 "c2pnb304w1" -#define NID_X9_62_c2pnb272w1 699 -#define SN_X9_62_c2pnb272w1 "c2pnb272w1" -#define NID_X9_62_c2onb239v5 698 -#define SN_X9_62_c2onb239v5 "c2onb239v5" -#define NID_X9_62_c2onb239v4 697 -#define SN_X9_62_c2onb239v4 "c2onb239v4" -#define NID_X9_62_c2tnb239v3 696 -#define SN_X9_62_c2tnb239v3 "c2tnb239v3" -#define NID_X9_62_c2tnb239v2 695 -#define SN_X9_62_c2tnb239v2 "c2tnb239v2" -#define NID_X9_62_c2tnb239v1 694 -#define SN_X9_62_c2tnb239v1 "c2tnb239v1" -#define NID_X9_62_c2pnb208w1 693 -#define SN_X9_62_c2pnb208w1 "c2pnb208w1" -#define NID_X9_62_c2onb191v5 692 -#define SN_X9_62_c2onb191v5 "c2onb191v5" -#define NID_X9_62_c2onb191v4 691 -#define SN_X9_62_c2onb191v4 "c2onb191v4" -#define NID_X9_62_c2tnb191v3 690 -#define SN_X9_62_c2tnb191v3 "c2tnb191v3" -#define NID_X9_62_c2tnb191v2 689 -#define SN_X9_62_c2tnb191v2 "c2tnb191v2" -#define NID_X9_62_c2tnb191v1 688 -#define SN_X9_62_c2tnb191v1 "c2tnb191v1" -#define NID_X9_62_c2pnb176v1 687 -#define SN_X9_62_c2pnb176v1 "c2pnb176v1" -#define NID_X9_62_c2pnb163v3 686 -#define SN_X9_62_c2pnb163v3 "c2pnb163v3" -#define NID_X9_62_c2pnb163v2 685 -#define SN_X9_62_c2pnb163v2 "c2pnb163v2" -#define NID_X9_62_c2pnb163v1 684 -#define SN_X9_62_c2pnb163v1 "c2pnb163v1" -#define NID_X9_62_id_ecPublicKey 408 -#define SN_X9_62_id_ecPublicKey "id-ecPublicKey" -#define NID_X9_62_ppBasis 683 -#define SN_X9_62_ppBasis "ppBasis" -#define NID_X9_62_tpBasis 682 -#define SN_X9_62_tpBasis "tpBasis" -#define NID_X9_62_onBasis 681 -#define SN_X9_62_onBasis "onBasis" -#define NID_X9_62_id_characteristic_two_basis 680 -#define SN_X9_62_id_characteristic_two_basis "id-characteristic-two-basis" -#define NID_X9_62_characteristic_two_field 407 -#define SN_X9_62_characteristic_two_field "characteristic-two-field" -#define NID_X9_62_prime_field 406 -#define SN_X9_62_prime_field "prime-field" -#define NID_ansi_X9_62 405 -#define LN_ansi_X9_62 "ANSI X9.62" -#define SN_ansi_X9_62 "ansi-X9-62" -#define NID_dsaWithSHA1 113 -#define LN_dsaWithSHA1 "dsaWithSHA1" -#define SN_dsaWithSHA1 "DSA-SHA1" -#define NID_dsa 116 -#define LN_dsa "dsaEncryption" -#define SN_dsa "DSA" -#define NID_sm_scheme 1142 -#define SN_sm_scheme "sm-scheme" -#define NID_oscca 1141 -#define SN_oscca "oscca" -#define NID_ISO_CN 1140 -#define LN_ISO_CN "ISO CN Member Body" -#define SN_ISO_CN "ISO-CN" -#define NID_X9cm 185 -#define LN_X9cm "X9.57 CM ?" -#define SN_X9cm "X9cm" -#define NID_X9_57 184 -#define LN_X9_57 "X9.57" -#define SN_X9_57 "X9-57" -#define NID_ISO_US 183 -#define LN_ISO_US "ISO US Member Body" -#define SN_ISO_US "ISO-US" -#define NID_clearance 395 -#define SN_clearance "clearance" -#define NID_selected_attribute_types 394 -#define LN_selected_attribute_types "Selected Attribute Types" -#define SN_selected_attribute_types "selected-attribute-types" -#define NID_wap_wsg 679 -#define SN_wap_wsg "wap-wsg" -#define NID_wap 678 -#define SN_wap "wap" -#define NID_international_organizations 647 -#define LN_international_organizations "International Organizations" -#define SN_international_organizations "international-organizations" -#define NID_ieee_siswg 1171 -#define LN_ieee_siswg "IEEE Security in Storage Working Group" -#define SN_ieee_siswg "ieee-siswg" -#define NID_ieee 1170 -#define SN_ieee "ieee" -#define NID_certicom_arc 677 -#define SN_certicom_arc "certicom-arc" -#define NID_x509ExtAdmission 1093 -#define LN_x509ExtAdmission "Professional Information or basis for Admission" -#define SN_x509ExtAdmission "x509ExtAdmission" -#define NID_hmac_sha1 781 -#define LN_hmac_sha1 "hmac-sha1" -#define SN_hmac_sha1 "HMAC-SHA1" -#define NID_hmac_md5 780 -#define LN_hmac_md5 "hmac-md5" -#define SN_hmac_md5 "HMAC-MD5" -#define NID_gmac 1195 -#define LN_gmac "gmac" -#define SN_gmac "GMAC" -#define NID_identified_organization 676 -#define SN_identified_organization "identified-organization" -#define NID_member_body 182 -#define LN_member_body "ISO Member Body" -#define SN_member_body "member-body" -#define NID_joint_iso_ccitt 393 -#define NID_joint_iso_itu_t 646 -#define LN_joint_iso_itu_t "joint-iso-itu-t" -#define SN_joint_iso_itu_t "JOINT-ISO-ITU-T" -#define NID_iso 181 -#define LN_iso "iso" -#define SN_iso "ISO" -#define NID_ccitt 404 -#define NID_itu_t 645 -#define LN_itu_t "itu-t" -#define SN_itu_t "ITU-T" -#define LN_undef "undefined" -#define SN_undef "UNDEF" diff --git a/cpp/ql/test/experimental/stubs/openssl/dsa.h b/cpp/ql/test/experimental/stubs/openssl/dsa.h new file mode 100644 index 000000000000..ceda764a3687 --- /dev/null +++ b/cpp/ql/test/experimental/stubs/openssl/dsa.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +# pragma once +# include "type_stubs.h" + +/* + * DSA Paramgen types + * Note, adding to this list requires adjustments to various checks + * in dsa_gen range validation checks + */ +#define DSA_PARAMGEN_TYPE_FIPS_186_4 0 /* Use FIPS186-4 standard */ +#define DSA_PARAMGEN_TYPE_FIPS_186_2 1 /* Use legacy FIPS186-2 standard */ +#define DSA_PARAMGEN_TYPE_FIPS_DEFAULT 2 + +DSA *ossl_dsa_new(OSSL_LIB_CTX *libctx); +void ossl_dsa_set0_libctx(DSA *d, OSSL_LIB_CTX *libctx); + +int ossl_dsa_generate_ffc_parameters(DSA *dsa, int type, int pbits, int qbits, + BN_GENCB *cb); + +int ossl_dsa_sign_int(int type, const unsigned char *dgst, int dlen, + unsigned char *sig, unsigned int *siglen, DSA *dsa, + unsigned int nonce_type, const char *digestname, + OSSL_LIB_CTX *libctx, const char *propq); + +FFC_PARAMS *ossl_dsa_get0_params(DSA *dsa); +int ossl_dsa_ffc_params_fromdata(DSA *dsa, const OSSL_PARAM params[]); +int ossl_dsa_key_fromdata(DSA *dsa, const OSSL_PARAM params[], + int include_private); +DSA *ossl_dsa_key_from_pkcs8(const PKCS8_PRIV_KEY_INFO *p8inf, + OSSL_LIB_CTX *libctx, const char *propq); + +int ossl_dsa_generate_public_key(BN_CTX *ctx, const DSA *dsa, + const BIGNUM *priv_key, BIGNUM *pub_key); +int ossl_dsa_check_params(const DSA *dsa, int checktype, int *ret); +int ossl_dsa_check_pub_key(const DSA *dsa, const BIGNUM *pub_key, int *ret); +int ossl_dsa_check_pub_key_partial(const DSA *dsa, const BIGNUM *pub_key, + int *ret); +int ossl_dsa_check_priv_key(const DSA *dsa, const BIGNUM *priv_key, int *ret); +int ossl_dsa_check_pairwise(const DSA *dsa); +int ossl_dsa_is_foreign(const DSA *dsa); +DSA *ossl_dsa_dup(const DSA *dsa, int selection); + + +int EVP_PKEY_CTX_set_dsa_paramgen_bits(EVP_PKEY_CTX *ctx, int nbits); +int EVP_PKEY_CTX_set_dsa_paramgen_q_bits(EVP_PKEY_CTX *ctx, int qbits); +int EVP_PKEY_CTX_set_dsa_paramgen_md_props(EVP_PKEY_CTX *ctx, + const char *md_name, + const char *md_properties); +int EVP_PKEY_CTX_set_dsa_paramgen_gindex(EVP_PKEY_CTX *ctx, int gindex); +int EVP_PKEY_CTX_set_dsa_paramgen_type(EVP_PKEY_CTX *ctx, const char *name); +int EVP_PKEY_CTX_set_dsa_paramgen_seed(EVP_PKEY_CTX *ctx, + const unsigned char *seed, + size_t seedlen); +int EVP_PKEY_CTX_set_dsa_paramgen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +# define EVP_PKEY_CTRL_DSA_PARAMGEN_BITS (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_MD (EVP_PKEY_ALG_CTRL + 3) + + +# define OPENSSL_DSA_MAX_MODULUS_BITS 10000 + +# define OPENSSL_DSA_FIPS_MIN_MODULUS_BITS 1024 + +typedef int DSA_SIG; +DSA_SIG *DSA_SIG_new(void); +void DSA_SIG_free(DSA_SIG *a); + +void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); +int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s); diff --git a/cpp/ql/test/experimental/stubs/openssl/evp.h b/cpp/ql/test/experimental/stubs/openssl/evp.h new file mode 100644 index 000000000000..cd5194343747 --- /dev/null +++ b/cpp/ql/test/experimental/stubs/openssl/evp.h @@ -0,0 +1,4360 @@ +#include "type_stubs.h" +#ifndef OSSL_EVP_H +#define OSSL_EVP_H + + +# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ +# define EVP_MAX_KEY_LENGTH 64 +# define EVP_MAX_IV_LENGTH 16 +# define EVP_MAX_BLOCK_LENGTH 32 +# define EVP_MAX_AEAD_TAG_LENGTH 16 + +/* Maximum pipes in cipher pipelining */ +# define EVP_MAX_PIPES 32 + +# define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +# define PKCS5_DEFAULT_ITER 2048 + +// Common defines and integer types. +# define EVP_CTRL_INIT 0x0 +# define EVP_CTRL_SET_KEY_LENGTH 0x1 +# define EVP_CTRL_GET_RC2_KEY_BITS 0x2 +# define EVP_CTRL_SET_RC2_KEY_BITS 0x3 +# define EVP_CTRL_GET_RC5_ROUNDS 0x4 +# define EVP_CTRL_SET_RC5_ROUNDS 0x5 +# define EVP_CTRL_RAND_KEY 0x6 +# define EVP_CTRL_PBE_PRF_NID 0x7 +# define EVP_CTRL_COPY 0x8 +# define EVP_CTRL_AEAD_SET_IVLEN 0x9 +# define EVP_CTRL_AEAD_GET_TAG 0x10 +# define EVP_CTRL_AEAD_SET_TAG 0x11 +# define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 +# define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +# define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +# define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +# define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +# define EVP_CTRL_GCM_IV_GEN 0x13 +# define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +# define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +# define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +# define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +# define EVP_CTRL_CCM_SET_L 0x14 +# define EVP_CTRL_CCM_SET_MSGLEN 0x15 + +// Function stubs. +OSSL_FUNC_core_gettable_params_fn * OSSL_FUNC_core_gettable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_core_get_params_fn * OSSL_FUNC_core_get_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_core_thread_start_fn * OSSL_FUNC_core_thread_start(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_core_get_libctx_fn * OSSL_FUNC_core_get_libctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_core_new_error_fn * OSSL_FUNC_core_new_error(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_core_set_error_debug_fn * OSSL_FUNC_core_set_error_debug(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_core_vset_error_fn * OSSL_FUNC_core_vset_error(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_core_set_error_mark_fn * OSSL_FUNC_core_set_error_mark(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_core_clear_last_error_mark_fn * OSSL_FUNC_core_clear_last_error_mark(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_core_pop_error_to_mark_fn * OSSL_FUNC_core_pop_error_to_mark(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_core_obj_add_sigid_fn * OSSL_FUNC_core_obj_add_sigid(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_core_obj_create_fn * OSSL_FUNC_core_obj_create(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_CRYPTO_malloc_fn * OSSL_FUNC_CRYPTO_malloc(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_CRYPTO_zalloc_fn * OSSL_FUNC_CRYPTO_zalloc(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_CRYPTO_free_fn * OSSL_FUNC_CRYPTO_free(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_CRYPTO_clear_free_fn * OSSL_FUNC_CRYPTO_clear_free(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_CRYPTO_realloc_fn * OSSL_FUNC_CRYPTO_realloc(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_CRYPTO_clear_realloc_fn * OSSL_FUNC_CRYPTO_clear_realloc(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_CRYPTO_secure_malloc_fn * OSSL_FUNC_CRYPTO_secure_malloc(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_CRYPTO_secure_zalloc_fn * OSSL_FUNC_CRYPTO_secure_zalloc(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_CRYPTO_secure_free_fn * OSSL_FUNC_CRYPTO_secure_free(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_CRYPTO_secure_clear_free_fn * OSSL_FUNC_CRYPTO_secure_clear_free(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_CRYPTO_secure_allocated_fn * OSSL_FUNC_CRYPTO_secure_allocated(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_OPENSSL_cleanse_fn * OSSL_FUNC_OPENSSL_cleanse(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_BIO_new_file_fn * OSSL_FUNC_BIO_new_file(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_BIO_new_membuf_fn * OSSL_FUNC_BIO_new_membuf(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_BIO_read_ex_fn * OSSL_FUNC_BIO_read_ex(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_BIO_write_ex_fn * OSSL_FUNC_BIO_write_ex(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_BIO_gets_fn * OSSL_FUNC_BIO_gets(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_BIO_puts_fn * OSSL_FUNC_BIO_puts(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_BIO_up_ref_fn * OSSL_FUNC_BIO_up_ref(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_BIO_free_fn * OSSL_FUNC_BIO_free(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_BIO_vprintf_fn * OSSL_FUNC_BIO_vprintf(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_BIO_vsnprintf_fn * OSSL_FUNC_BIO_vsnprintf(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_BIO_ctrl_fn * OSSL_FUNC_BIO_ctrl(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_indicator_cb_fn * OSSL_FUNC_indicator_cb(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_self_test_cb_fn * OSSL_FUNC_self_test_cb(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_get_entropy_fn * OSSL_FUNC_get_entropy(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_get_user_entropy_fn * OSSL_FUNC_get_user_entropy(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cleanup_entropy_fn * OSSL_FUNC_cleanup_entropy(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cleanup_user_entropy_fn * OSSL_FUNC_cleanup_user_entropy(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_get_nonce_fn * OSSL_FUNC_get_nonce(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_get_user_nonce_fn * OSSL_FUNC_get_user_nonce(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cleanup_nonce_fn * OSSL_FUNC_cleanup_nonce(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cleanup_user_nonce_fn * OSSL_FUNC_cleanup_user_nonce(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_register_child_cb_fn * OSSL_FUNC_provider_register_child_cb(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_deregister_child_cb_fn * OSSL_FUNC_provider_deregister_child_cb(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_name_fn * OSSL_FUNC_provider_name(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_get0_provider_ctx_fn * OSSL_FUNC_provider_get0_provider_ctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_get0_dispatch_fn * OSSL_FUNC_provider_get0_dispatch(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_up_ref_fn * OSSL_FUNC_provider_up_ref(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_free_fn * OSSL_FUNC_provider_free(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_teardown_fn * OSSL_FUNC_provider_teardown(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_gettable_params_fn * OSSL_FUNC_provider_gettable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_get_params_fn * OSSL_FUNC_provider_get_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_query_operation_fn * OSSL_FUNC_provider_query_operation(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_unquery_operation_fn * OSSL_FUNC_provider_unquery_operation(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_get_reason_strings_fn * OSSL_FUNC_provider_get_reason_strings(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_get_capabilities_fn * OSSL_FUNC_provider_get_capabilities(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_self_test_fn * OSSL_FUNC_provider_self_test(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_provider_random_bytes_fn * OSSL_FUNC_provider_random_bytes(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_SSL_QUIC_TLS_crypto_send_fn * OSSL_FUNC_SSL_QUIC_TLS_crypto_send(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_SSL_QUIC_TLS_crypto_recv_rcd_fn * OSSL_FUNC_SSL_QUIC_TLS_crypto_recv_rcd(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_SSL_QUIC_TLS_crypto_release_rcd_fn * OSSL_FUNC_SSL_QUIC_TLS_crypto_release_rcd(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_SSL_QUIC_TLS_yield_secret_fn * OSSL_FUNC_SSL_QUIC_TLS_yield_secret(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_SSL_QUIC_TLS_got_transport_params_fn * OSSL_FUNC_SSL_QUIC_TLS_got_transport_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_SSL_QUIC_TLS_alert_fn * OSSL_FUNC_SSL_QUIC_TLS_alert(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_newctx_fn * OSSL_FUNC_digest_newctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_init_fn * OSSL_FUNC_digest_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_update_fn * OSSL_FUNC_digest_update(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_final_fn * OSSL_FUNC_digest_final(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_squeeze_fn * OSSL_FUNC_digest_squeeze(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_digest_fn * OSSL_FUNC_digest_digest(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_freectx_fn * OSSL_FUNC_digest_freectx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_dupctx_fn * OSSL_FUNC_digest_dupctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_copyctx_fn * OSSL_FUNC_digest_copyctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_get_params_fn * OSSL_FUNC_digest_get_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_set_ctx_params_fn * OSSL_FUNC_digest_set_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_get_ctx_params_fn * OSSL_FUNC_digest_get_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_gettable_params_fn * OSSL_FUNC_digest_gettable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_settable_ctx_params_fn * OSSL_FUNC_digest_settable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_digest_gettable_ctx_params_fn * OSSL_FUNC_digest_gettable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_newctx_fn * OSSL_FUNC_cipher_newctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_encrypt_init_fn * OSSL_FUNC_cipher_encrypt_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_decrypt_init_fn * OSSL_FUNC_cipher_decrypt_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_update_fn * OSSL_FUNC_cipher_update(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_final_fn * OSSL_FUNC_cipher_final(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_cipher_fn * OSSL_FUNC_cipher_cipher(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_pipeline_encrypt_init_fn * OSSL_FUNC_cipher_pipeline_encrypt_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_pipeline_decrypt_init_fn * OSSL_FUNC_cipher_pipeline_decrypt_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_pipeline_update_fn * OSSL_FUNC_cipher_pipeline_update(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_pipeline_final_fn * OSSL_FUNC_cipher_pipeline_final(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_freectx_fn * OSSL_FUNC_cipher_freectx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_dupctx_fn * OSSL_FUNC_cipher_dupctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_get_params_fn * OSSL_FUNC_cipher_get_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_get_ctx_params_fn * OSSL_FUNC_cipher_get_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_set_ctx_params_fn * OSSL_FUNC_cipher_set_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_gettable_params_fn * OSSL_FUNC_cipher_gettable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_settable_ctx_params_fn * OSSL_FUNC_cipher_settable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_gettable_ctx_params_fn * OSSL_FUNC_cipher_gettable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_encrypt_skey_init_fn * OSSL_FUNC_cipher_encrypt_skey_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_cipher_decrypt_skey_init_fn * OSSL_FUNC_cipher_decrypt_skey_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_mac_newctx_fn * OSSL_FUNC_mac_newctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_mac_dupctx_fn * OSSL_FUNC_mac_dupctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_mac_freectx_fn * OSSL_FUNC_mac_freectx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_mac_init_fn * OSSL_FUNC_mac_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_mac_update_fn * OSSL_FUNC_mac_update(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_mac_final_fn * OSSL_FUNC_mac_final(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_mac_gettable_params_fn * OSSL_FUNC_mac_gettable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_mac_gettable_ctx_params_fn * OSSL_FUNC_mac_gettable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_mac_settable_ctx_params_fn * OSSL_FUNC_mac_settable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_mac_get_params_fn * OSSL_FUNC_mac_get_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_mac_get_ctx_params_fn * OSSL_FUNC_mac_get_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_mac_set_ctx_params_fn * OSSL_FUNC_mac_set_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_mac_init_skey_fn * OSSL_FUNC_mac_init_skey(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kdf_newctx_fn * OSSL_FUNC_kdf_newctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kdf_dupctx_fn * OSSL_FUNC_kdf_dupctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kdf_freectx_fn * OSSL_FUNC_kdf_freectx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kdf_reset_fn * OSSL_FUNC_kdf_reset(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kdf_derive_fn * OSSL_FUNC_kdf_derive(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kdf_gettable_params_fn * OSSL_FUNC_kdf_gettable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kdf_gettable_ctx_params_fn * OSSL_FUNC_kdf_gettable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kdf_settable_ctx_params_fn * OSSL_FUNC_kdf_settable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kdf_get_params_fn * OSSL_FUNC_kdf_get_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kdf_get_ctx_params_fn * OSSL_FUNC_kdf_get_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kdf_set_ctx_params_fn * OSSL_FUNC_kdf_set_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_newctx_fn * OSSL_FUNC_rand_newctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_freectx_fn * OSSL_FUNC_rand_freectx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_instantiate_fn * OSSL_FUNC_rand_instantiate(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_uninstantiate_fn * OSSL_FUNC_rand_uninstantiate(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_generate_fn * OSSL_FUNC_rand_generate(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_reseed_fn * OSSL_FUNC_rand_reseed(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_nonce_fn * OSSL_FUNC_rand_nonce(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_enable_locking_fn * OSSL_FUNC_rand_enable_locking(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_lock_fn * OSSL_FUNC_rand_lock(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_unlock_fn * OSSL_FUNC_rand_unlock(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_gettable_params_fn * OSSL_FUNC_rand_gettable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_gettable_ctx_params_fn * OSSL_FUNC_rand_gettable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_settable_ctx_params_fn * OSSL_FUNC_rand_settable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_get_params_fn * OSSL_FUNC_rand_get_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_get_ctx_params_fn * OSSL_FUNC_rand_get_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_set_ctx_params_fn * OSSL_FUNC_rand_set_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_set_callbacks_fn * OSSL_FUNC_rand_set_callbacks(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_verify_zeroization_fn * OSSL_FUNC_rand_verify_zeroization(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_get_seed_fn * OSSL_FUNC_rand_get_seed(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_rand_clear_seed_fn * OSSL_FUNC_rand_clear_seed(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_new_fn * OSSL_FUNC_keymgmt_new(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_gen_init_fn * OSSL_FUNC_keymgmt_gen_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_gen_set_template_fn * OSSL_FUNC_keymgmt_gen_set_template(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_gen_set_params_fn * OSSL_FUNC_keymgmt_gen_set_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_gen_settable_params_fn * OSSL_FUNC_keymgmt_gen_settable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_gen_get_params_fn * OSSL_FUNC_keymgmt_gen_get_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_gen_gettable_params_fn * OSSL_FUNC_keymgmt_gen_gettable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_gen_fn * OSSL_FUNC_keymgmt_gen(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_gen_cleanup_fn * OSSL_FUNC_keymgmt_gen_cleanup(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_load_fn * OSSL_FUNC_keymgmt_load(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_free_fn * OSSL_FUNC_keymgmt_free(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_get_params_fn * OSSL_FUNC_keymgmt_get_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_gettable_params_fn * OSSL_FUNC_keymgmt_gettable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_set_params_fn * OSSL_FUNC_keymgmt_set_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_settable_params_fn * OSSL_FUNC_keymgmt_settable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_query_operation_name_fn * OSSL_FUNC_keymgmt_query_operation_name(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_has_fn * OSSL_FUNC_keymgmt_has(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_validate_fn * OSSL_FUNC_keymgmt_validate(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_match_fn * OSSL_FUNC_keymgmt_match(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_import_fn * OSSL_FUNC_keymgmt_import(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_import_types_fn * OSSL_FUNC_keymgmt_import_types(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_export_fn * OSSL_FUNC_keymgmt_export(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_export_types_fn * OSSL_FUNC_keymgmt_export_types(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_dup_fn * OSSL_FUNC_keymgmt_dup(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_import_types_ex_fn * OSSL_FUNC_keymgmt_import_types_ex(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keymgmt_export_types_ex_fn * OSSL_FUNC_keymgmt_export_types_ex(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keyexch_newctx_fn * OSSL_FUNC_keyexch_newctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keyexch_init_fn * OSSL_FUNC_keyexch_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keyexch_derive_fn * OSSL_FUNC_keyexch_derive(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keyexch_set_peer_fn * OSSL_FUNC_keyexch_set_peer(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keyexch_freectx_fn * OSSL_FUNC_keyexch_freectx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keyexch_dupctx_fn * OSSL_FUNC_keyexch_dupctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keyexch_set_ctx_params_fn * OSSL_FUNC_keyexch_set_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keyexch_settable_ctx_params_fn * OSSL_FUNC_keyexch_settable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keyexch_get_ctx_params_fn * OSSL_FUNC_keyexch_get_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_keyexch_gettable_ctx_params_fn * OSSL_FUNC_keyexch_gettable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_newctx_fn * OSSL_FUNC_signature_newctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_sign_init_fn * OSSL_FUNC_signature_sign_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_sign_fn * OSSL_FUNC_signature_sign(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_sign_message_init_fn * OSSL_FUNC_signature_sign_message_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_sign_message_update_fn * OSSL_FUNC_signature_sign_message_update(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_sign_message_final_fn * OSSL_FUNC_signature_sign_message_final(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_verify_init_fn * OSSL_FUNC_signature_verify_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_verify_fn * OSSL_FUNC_signature_verify(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_verify_message_init_fn * OSSL_FUNC_signature_verify_message_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_verify_message_update_fn * OSSL_FUNC_signature_verify_message_update(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_verify_message_final_fn * OSSL_FUNC_signature_verify_message_final(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_verify_recover_init_fn * OSSL_FUNC_signature_verify_recover_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_verify_recover_fn * OSSL_FUNC_signature_verify_recover(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_digest_sign_init_fn * OSSL_FUNC_signature_digest_sign_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_digest_sign_update_fn * OSSL_FUNC_signature_digest_sign_update(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_digest_sign_final_fn * OSSL_FUNC_signature_digest_sign_final(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_digest_sign_fn * OSSL_FUNC_signature_digest_sign(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_digest_verify_init_fn * OSSL_FUNC_signature_digest_verify_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_digest_verify_update_fn * OSSL_FUNC_signature_digest_verify_update(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_digest_verify_final_fn * OSSL_FUNC_signature_digest_verify_final(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_digest_verify_fn * OSSL_FUNC_signature_digest_verify(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_freectx_fn * OSSL_FUNC_signature_freectx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_dupctx_fn * OSSL_FUNC_signature_dupctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_get_ctx_params_fn * OSSL_FUNC_signature_get_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_gettable_ctx_params_fn * OSSL_FUNC_signature_gettable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_set_ctx_params_fn * OSSL_FUNC_signature_set_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_settable_ctx_params_fn * OSSL_FUNC_signature_settable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_get_ctx_md_params_fn * OSSL_FUNC_signature_get_ctx_md_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_gettable_ctx_md_params_fn * OSSL_FUNC_signature_gettable_ctx_md_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_set_ctx_md_params_fn * OSSL_FUNC_signature_set_ctx_md_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_settable_ctx_md_params_fn * OSSL_FUNC_signature_settable_ctx_md_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_signature_query_key_types_fn * OSSL_FUNC_signature_query_key_types(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_skeymgmt_free_fn * OSSL_FUNC_skeymgmt_free(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_skeymgmt_imp_settable_params_fn * OSSL_FUNC_skeymgmt_imp_settable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_skeymgmt_import_fn * OSSL_FUNC_skeymgmt_import(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_skeymgmt_export_fn * OSSL_FUNC_skeymgmt_export(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_skeymgmt_gen_settable_params_fn * OSSL_FUNC_skeymgmt_gen_settable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_skeymgmt_generate_fn * OSSL_FUNC_skeymgmt_generate(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_skeymgmt_get_key_id_fn * OSSL_FUNC_skeymgmt_get_key_id(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_asym_cipher_newctx_fn * OSSL_FUNC_asym_cipher_newctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_asym_cipher_encrypt_init_fn * OSSL_FUNC_asym_cipher_encrypt_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_asym_cipher_encrypt_fn * OSSL_FUNC_asym_cipher_encrypt(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_asym_cipher_decrypt_init_fn * OSSL_FUNC_asym_cipher_decrypt_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_asym_cipher_decrypt_fn * OSSL_FUNC_asym_cipher_decrypt(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_asym_cipher_freectx_fn * OSSL_FUNC_asym_cipher_freectx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_asym_cipher_dupctx_fn * OSSL_FUNC_asym_cipher_dupctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_asym_cipher_get_ctx_params_fn * OSSL_FUNC_asym_cipher_get_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_asym_cipher_gettable_ctx_params_fn * OSSL_FUNC_asym_cipher_gettable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_asym_cipher_set_ctx_params_fn * OSSL_FUNC_asym_cipher_set_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_asym_cipher_settable_ctx_params_fn * OSSL_FUNC_asym_cipher_settable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kem_newctx_fn * OSSL_FUNC_kem_newctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kem_encapsulate_init_fn * OSSL_FUNC_kem_encapsulate_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kem_auth_encapsulate_init_fn * OSSL_FUNC_kem_auth_encapsulate_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kem_encapsulate_fn * OSSL_FUNC_kem_encapsulate(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kem_decapsulate_init_fn * OSSL_FUNC_kem_decapsulate_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kem_auth_decapsulate_init_fn * OSSL_FUNC_kem_auth_decapsulate_init(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kem_decapsulate_fn * OSSL_FUNC_kem_decapsulate(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kem_freectx_fn * OSSL_FUNC_kem_freectx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kem_dupctx_fn * OSSL_FUNC_kem_dupctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kem_get_ctx_params_fn * OSSL_FUNC_kem_get_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kem_gettable_ctx_params_fn * OSSL_FUNC_kem_gettable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kem_set_ctx_params_fn * OSSL_FUNC_kem_set_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_kem_settable_ctx_params_fn * OSSL_FUNC_kem_settable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_encoder_newctx_fn * OSSL_FUNC_encoder_newctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_encoder_freectx_fn * OSSL_FUNC_encoder_freectx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_encoder_get_params_fn * OSSL_FUNC_encoder_get_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_encoder_gettable_params_fn * OSSL_FUNC_encoder_gettable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_encoder_set_ctx_params_fn * OSSL_FUNC_encoder_set_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_encoder_settable_ctx_params_fn * OSSL_FUNC_encoder_settable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_encoder_does_selection_fn * OSSL_FUNC_encoder_does_selection(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_encoder_encode_fn * OSSL_FUNC_encoder_encode(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_encoder_import_object_fn * OSSL_FUNC_encoder_import_object(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_encoder_free_object_fn * OSSL_FUNC_encoder_free_object(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_decoder_newctx_fn * OSSL_FUNC_decoder_newctx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_decoder_freectx_fn * OSSL_FUNC_decoder_freectx(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_decoder_get_params_fn * OSSL_FUNC_decoder_get_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_decoder_gettable_params_fn * OSSL_FUNC_decoder_gettable_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_decoder_set_ctx_params_fn * OSSL_FUNC_decoder_set_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_decoder_settable_ctx_params_fn * OSSL_FUNC_decoder_settable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_decoder_does_selection_fn * OSSL_FUNC_decoder_does_selection(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_decoder_decode_fn * OSSL_FUNC_decoder_decode(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_decoder_export_object_fn * OSSL_FUNC_decoder_export_object(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_store_open_fn * OSSL_FUNC_store_open(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_store_attach_fn * OSSL_FUNC_store_attach(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_store_settable_ctx_params_fn * OSSL_FUNC_store_settable_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_store_set_ctx_params_fn * OSSL_FUNC_store_set_ctx_params(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_store_load_fn * OSSL_FUNC_store_load(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_store_eof_fn * OSSL_FUNC_store_eof(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_store_close_fn * OSSL_FUNC_store_close(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_store_export_object_fn * OSSL_FUNC_store_export_object(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_store_delete_fn * OSSL_FUNC_store_delete(const OSSL_DISPATCH * opf) { + return NULL; +} + +OSSL_FUNC_store_open_ex_fn * OSSL_FUNC_store_open_ex(const OSSL_DISPATCH * opf) { + return NULL; +} + +int EVP_set_default_properties(OSSL_LIB_CTX * libctx, const char * propq) { + return 0; +} + +char * EVP_get1_default_properties(OSSL_LIB_CTX * libctx) { + return NULL; +} + +int EVP_default_properties_is_fips_enabled(OSSL_LIB_CTX * libctx) { + return 0; +} + +int EVP_default_properties_enable_fips(OSSL_LIB_CTX * libctx, int enable) { + return 0; +} + +EVP_MD * EVP_MD_meth_new(int md_type, int pkey_type) { + return NULL; +} + +EVP_MD * EVP_MD_meth_dup(const EVP_MD * md) { + return NULL; +} + +void EVP_MD_meth_free(EVP_MD * md) ; + + +int EVP_MD_meth_set_input_blocksize(EVP_MD * md, int blocksize) { + return 0; +} + +int EVP_MD_meth_set_result_size(EVP_MD * md, int resultsize) { + return 0; +} + +int EVP_MD_meth_set_app_datasize(EVP_MD * md, int datasize) { + return 0; +} + +int EVP_MD_meth_set_flags(EVP_MD * md, unsigned long flags) { + return 0; +} + +int EVP_MD_meth_set_init(EVP_MD * md, int (*init)(EVP_MD_CTX *)) { + return 0; +} + +int EVP_MD_meth_set_update(EVP_MD * md, int (*update)(EVP_MD_CTX *, const void *, size_t)) { + return 0; +} + +int EVP_MD_meth_set_final(EVP_MD * md, int (*final)(EVP_MD_CTX *, unsigned char *)) { + return 0; +} + +int EVP_MD_meth_set_copy(EVP_MD * md, int (*copy)(EVP_MD_CTX *, const EVP_MD_CTX *)) { + return 0; +} + +int EVP_MD_meth_set_cleanup(EVP_MD * md, int (*cleanup)(EVP_MD_CTX *)) { + return 0; +} + +int EVP_MD_meth_set_ctrl(EVP_MD * md, int (*ctrl)(EVP_MD_CTX *, int, int, void *)) { + return 0; +} + +int EVP_MD_meth_get_input_blocksize(const EVP_MD * md) { + return 0; +} + +int EVP_MD_meth_get_result_size(const EVP_MD * md) { + return 0; +} + +int EVP_MD_meth_get_app_datasize(const EVP_MD * md) { + return 0; +} + +unsigned long EVP_MD_meth_get_flags(const EVP_MD * md) { + return 0; +} + +int EVP_MD_meth_get_init(const EVP_MD * md) { + return 0; +} + +int EVP_MD_meth_get_update(const EVP_MD * md) { + return 0; +} + +int EVP_MD_meth_get_final(const EVP_MD * md) { + return 0; +} + +int EVP_MD_meth_get_copy(const EVP_MD * md) { + return 0; +} + +int EVP_MD_meth_get_cleanup(const EVP_MD * md) { + return 0; +} + +int EVP_MD_meth_get_ctrl(const EVP_MD * md) { + return 0; +} + +EVP_CIPHER * EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len) { + return NULL; +} + +EVP_CIPHER * EVP_CIPHER_meth_dup(const EVP_CIPHER * cipher) { + return NULL; +} + +void EVP_CIPHER_meth_free(EVP_CIPHER * cipher) ; + + +int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER * cipher, int iv_len) { + return 0; +} + +int EVP_CIPHER_meth_set_flags(EVP_CIPHER * cipher, unsigned long flags) { + return 0; +} + +int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER * cipher, int ctx_size) { + return 0; +} + +int EVP_CIPHER_meth_set_init(EVP_CIPHER * cipher, int (*init)(EVP_CIPHER_CTX *, const unsigned char *, const unsigned char *, int)) { + return 0; +} + +int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER * cipher, int (*do_cipher)(EVP_CIPHER_CTX *, unsigned char *, const unsigned char *, size_t)) { + return 0; +} + +int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER * cipher, int (*cleanup)(EVP_CIPHER_CTX *)) { + return 0; +} + +int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER * cipher, int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *)) { + return 0; +} + +int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER * cipher, int (*get_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *)) { + return 0; +} + +int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER * cipher, int (*ctrl)(EVP_CIPHER_CTX *, int, int, void *)) { + return 0; +} + +int EVP_CIPHER_meth_get_init(const EVP_CIPHER * cipher) { + return 0; +} + +int EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER * cipher) { + return 0; +} + +int EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER * cipher) { + return 0; +} + +int EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER * cipher) { + return 0; +} + +int EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER * cipher) { + return 0; +} + +int EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER * cipher) { + return 0; +} + +int EVP_MD_get_type(const EVP_MD * md) { + return 0; +} + +const char * EVP_MD_get0_name(const EVP_MD * md) { + return NULL; +} + +const char * EVP_MD_get0_description(const EVP_MD * md) { + return NULL; +} + +int EVP_MD_is_a(const EVP_MD * md, const char * name) { + return 0; +} + +int EVP_MD_names_do_all(const EVP_MD * md, void (*fn)(const char *, void *), void * data) { + return 0; +} + +const OSSL_PROVIDER * EVP_MD_get0_provider(const EVP_MD * md) { + return NULL; +} + +int EVP_MD_get_pkey_type(const EVP_MD * md) { + return 0; +} + +int EVP_MD_get_size(const EVP_MD * md) { + return 0; +} + +int EVP_MD_get_block_size(const EVP_MD * md) { + return 0; +} + +unsigned long EVP_MD_get_flags(const EVP_MD * md) { + return 0; +} + +int EVP_MD_xof(const EVP_MD * md) { + return 0; +} + +const EVP_MD * EVP_MD_CTX_get0_md(const EVP_MD_CTX * ctx) { + return NULL; +} + +EVP_MD * EVP_MD_CTX_get1_md(EVP_MD_CTX * ctx) { + return NULL; +} + +const EVP_MD * EVP_MD_CTX_md(const EVP_MD_CTX * ctx) { + return NULL; +} + +int EVP_MD_CTX_update_fn(EVP_MD_CTX * ctx) { + return 0; +} + +void EVP_MD_CTX_set_update_fn(EVP_MD_CTX * ctx, int (*update)(EVP_MD_CTX *, const void *, size_t)) ; + + +int EVP_MD_CTX_get_size_ex(const EVP_MD_CTX * ctx) { + return 0; +} + +EVP_PKEY_CTX * EVP_MD_CTX_get_pkey_ctx(const EVP_MD_CTX * ctx) { + return NULL; +} + +void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX * ctx, EVP_PKEY_CTX * pctx) ; + + +void * EVP_MD_CTX_get0_md_data(const EVP_MD_CTX * ctx) { + return NULL; +} + +int EVP_CIPHER_get_nid(const EVP_CIPHER * cipher) { + return 0; +} + +const char * EVP_CIPHER_get0_name(const EVP_CIPHER * cipher) { + return NULL; +} + +const char * EVP_CIPHER_get0_description(const EVP_CIPHER * cipher) { + return NULL; +} + +int EVP_CIPHER_is_a(const EVP_CIPHER * cipher, const char * name) { + return 0; +} + +int EVP_CIPHER_names_do_all(const EVP_CIPHER * cipher, void (*fn)(const char *, void *), void * data) { + return 0; +} + +const OSSL_PROVIDER * EVP_CIPHER_get0_provider(const EVP_CIPHER * cipher) { + return NULL; +} + +int EVP_CIPHER_get_block_size(const EVP_CIPHER * cipher) { + return 0; +} + +int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER * cipher) { + return 0; +} + +int EVP_CIPHER_get_key_length(const EVP_CIPHER * cipher) { + return 0; +} + +int EVP_CIPHER_get_iv_length(const EVP_CIPHER * cipher) { + return 0; +} + +unsigned long EVP_CIPHER_get_flags(const EVP_CIPHER * cipher) { + return 0; +} + +int EVP_CIPHER_get_mode(const EVP_CIPHER * cipher) { + return 0; +} + +int EVP_CIPHER_get_type(const EVP_CIPHER * cipher) { + return 0; +} + +EVP_CIPHER * EVP_CIPHER_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { + return NULL; +} + +int EVP_CIPHER_can_pipeline(const EVP_CIPHER * cipher, int enc) { + return 0; +} + +int EVP_CIPHER_up_ref(EVP_CIPHER * cipher) { + return 0; +} + +void EVP_CIPHER_free(EVP_CIPHER * cipher) ; + + +const EVP_CIPHER * EVP_CIPHER_CTX_get0_cipher(const EVP_CIPHER_CTX * ctx) { + return NULL; +} + +EVP_CIPHER * EVP_CIPHER_CTX_get1_cipher(EVP_CIPHER_CTX * ctx) { + return NULL; +} + +int EVP_CIPHER_CTX_is_encrypting(const EVP_CIPHER_CTX * ctx) { + return 0; +} + +int EVP_CIPHER_CTX_get_nid(const EVP_CIPHER_CTX * ctx) { + return 0; +} + +int EVP_CIPHER_CTX_get_block_size(const EVP_CIPHER_CTX * ctx) { + return 0; +} + +int EVP_CIPHER_CTX_get_key_length(const EVP_CIPHER_CTX * ctx) { + return 0; +} + +int EVP_CIPHER_CTX_get_iv_length(const EVP_CIPHER_CTX * ctx) { + return 0; +} + +int EVP_CIPHER_CTX_get_tag_length(const EVP_CIPHER_CTX * ctx) { + return 0; +} + +const EVP_CIPHER * EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX * ctx) { + return NULL; +} + +const unsigned char * EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX * ctx) { + return NULL; +} + +const unsigned char * EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX * ctx) { + return NULL; +} + +unsigned char * EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX * ctx) { + return NULL; +} + +int EVP_CIPHER_CTX_get_updated_iv(EVP_CIPHER_CTX * ctx, void * buf, size_t len) { + return 0; +} + +int EVP_CIPHER_CTX_get_original_iv(EVP_CIPHER_CTX * ctx, void * buf, size_t len) { + return 0; +} + +unsigned char * EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX * ctx) { + return NULL; +} + +int EVP_CIPHER_CTX_get_num(const EVP_CIPHER_CTX * ctx) { + return 0; +} + +int EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX * ctx, int num) { + return 0; +} + +EVP_CIPHER_CTX * EVP_CIPHER_CTX_dup(const EVP_CIPHER_CTX * in) { + return NULL; +} + +int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX * out, const EVP_CIPHER_CTX * in) { + return 0; +} + +void * EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX * ctx) { + return NULL; +} + +void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX * ctx, void * data) ; + + +void * EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX * ctx) { + return NULL; +} + +void * EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX * ctx, void * cipher_data) { + return NULL; +} + +int EVP_Cipher(EVP_CIPHER_CTX * c, unsigned char * out, const unsigned char * in, unsigned int inl) { + return 0; +} + +int EVP_MD_get_params(const EVP_MD * digest, OSSL_PARAM * params) { + return 0; +} + +int EVP_MD_CTX_set_params(EVP_MD_CTX * ctx, const OSSL_PARAM * params) { + return 0; +} + +int EVP_MD_CTX_get_params(EVP_MD_CTX * ctx, OSSL_PARAM * params) { + return 0; +} + +const OSSL_PARAM * EVP_MD_gettable_params(const EVP_MD * digest) { + return NULL; +} + +const OSSL_PARAM * EVP_MD_settable_ctx_params(const EVP_MD * md) { + return NULL; +} + +const OSSL_PARAM * EVP_MD_gettable_ctx_params(const EVP_MD * md) { + return NULL; +} + +const OSSL_PARAM * EVP_MD_CTX_settable_params(EVP_MD_CTX * ctx) { + return NULL; +} + +const OSSL_PARAM * EVP_MD_CTX_gettable_params(EVP_MD_CTX * ctx) { + return NULL; +} + +int EVP_MD_CTX_ctrl(EVP_MD_CTX * ctx, int cmd, int p1, void * p2) { + return 0; +} + +EVP_MD_CTX * EVP_MD_CTX_new(void) { + return NULL; +} + +int EVP_MD_CTX_reset(EVP_MD_CTX * ctx) { + return 0; +} + +void EVP_MD_CTX_free(EVP_MD_CTX * ctx) ; + + +EVP_MD_CTX * EVP_MD_CTX_dup(const EVP_MD_CTX * in) { + return NULL; +} + +int EVP_MD_CTX_copy_ex(EVP_MD_CTX * out, const EVP_MD_CTX * in) { + return 0; +} + +void EVP_MD_CTX_set_flags(EVP_MD_CTX * ctx, int flags) ; + + +void EVP_MD_CTX_clear_flags(EVP_MD_CTX * ctx, int flags) ; + + +int EVP_MD_CTX_test_flags(const EVP_MD_CTX * ctx, int flags) { + return 0; +} + +int EVP_DigestInit_ex2(EVP_MD_CTX * ctx, const EVP_MD * type, const OSSL_PARAM * params) { + return 0; +} + +int EVP_DigestInit_ex(EVP_MD_CTX * ctx, const EVP_MD * type, ENGINE * impl) { + return 0; +} + +int EVP_DigestUpdate(EVP_MD_CTX * ctx, const void * d, size_t cnt) { + return 0; +} + +int EVP_DigestFinal_ex(EVP_MD_CTX * ctx, unsigned char * md, unsigned int * s) { + return 0; +} + +int EVP_Digest(const void * data, size_t count, unsigned char * md, unsigned int * size, const EVP_MD * type, ENGINE * impl) { + return 0; +} + +int EVP_Q_digest(OSSL_LIB_CTX * libctx, const char * name, const char * propq, const void * data, size_t datalen, unsigned char * md, size_t * mdlen) { + return 0; +} + +int EVP_MD_CTX_copy(EVP_MD_CTX * out, const EVP_MD_CTX * in) { + return 0; +} + +int EVP_DigestInit(EVP_MD_CTX * ctx, const EVP_MD * type) { + return 0; +} + +int EVP_DigestFinal(EVP_MD_CTX * ctx, unsigned char * md, unsigned int * s) { + return 0; +} + +int EVP_DigestFinalXOF(EVP_MD_CTX * ctx, unsigned char * out, size_t outlen) { + return 0; +} + +int EVP_DigestSqueeze(EVP_MD_CTX * ctx, unsigned char * out, size_t outlen) { + return 0; +} + +EVP_MD * EVP_MD_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { + return NULL; +} + +int EVP_MD_up_ref(EVP_MD * md) { + return 0; +} + +void EVP_MD_free(EVP_MD * md) ; + + +int EVP_read_pw_string(char * buf, int length, const char * prompt, int verify) { + return 0; +} + +int EVP_read_pw_string_min(char * buf, int minlen, int maxlen, const char * prompt, int verify) { + return 0; +} + +void EVP_set_pw_prompt(const char * prompt) ; + + +char * EVP_get_pw_prompt(void) { + return NULL; +} + +int EVP_BytesToKey(const EVP_CIPHER * type, const EVP_MD * md, const unsigned char * salt, const unsigned char * data, int datal, int count, unsigned char * key, unsigned char * iv) { + return 0; +} + +void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX * ctx, int flags) ; + + +void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX * ctx, int flags) ; + + +int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX * ctx, int flags) { + return 0; +} + +int EVP_EncryptInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, const unsigned char * iv) { + return 0; +} + +int EVP_EncryptInit_ex(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, ENGINE * impl, const unsigned char * key, const unsigned char * iv) { + return 0; +} + +int EVP_EncryptInit_ex2(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, const unsigned char * iv, const OSSL_PARAM * params) { + return 0; +} + +int EVP_EncryptUpdate(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl, const unsigned char * in, int inl) { + return 0; +} + +int EVP_EncryptFinal_ex(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl) { + return 0; +} + +int EVP_EncryptFinal(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl) { + return 0; +} + +int EVP_DecryptInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, const unsigned char * iv) { + return 0; +} + +int EVP_DecryptInit_ex(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, ENGINE * impl, const unsigned char * key, const unsigned char * iv) { + return 0; +} + +int EVP_DecryptInit_ex2(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, const unsigned char * iv, const OSSL_PARAM * params) { + return 0; +} + +int EVP_DecryptUpdate(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl, const unsigned char * in, int inl) { + return 0; +} + +int EVP_DecryptFinal(EVP_CIPHER_CTX * ctx, unsigned char * outm, int * outl) { + return 0; +} + +int EVP_DecryptFinal_ex(EVP_CIPHER_CTX * ctx, unsigned char * outm, int * outl) { + return 0; +} + +int EVP_CipherInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, const unsigned char * iv, int enc) { + return 0; +} + +int EVP_CipherInit_ex(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, ENGINE * impl, const unsigned char * key, const unsigned char * iv, int enc) { + return 0; +} + +int EVP_CipherInit_SKEY(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, EVP_SKEY * skey, const unsigned char * iv, size_t iv_len, int enc, const OSSL_PARAM * params) { + return 0; +} + +int EVP_CipherInit_ex2(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, const unsigned char * iv, int enc, const OSSL_PARAM * params) { + return 0; +} + +int EVP_CipherUpdate(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl, const unsigned char * in, int inl) { + return 0; +} + +int EVP_CipherFinal(EVP_CIPHER_CTX * ctx, unsigned char * outm, int * outl) { + return 0; +} + +int EVP_CipherPipelineEncryptInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, size_t keylen, size_t numpipes, const unsigned char ** iv, size_t ivlen) { + return 0; +} + +int EVP_CipherPipelineDecryptInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, size_t keylen, size_t numpipes, const unsigned char ** iv, size_t ivlen) { + return 0; +} + +int EVP_CipherPipelineUpdate(EVP_CIPHER_CTX * ctx, unsigned char ** out, size_t * outl, const size_t * outsize, const unsigned char ** in, const size_t * inl) { + return 0; +} + +int EVP_CipherPipelineFinal(EVP_CIPHER_CTX * ctx, unsigned char ** outm, size_t * outl, const size_t * outsize) { + return 0; +} + +int EVP_CipherFinal_ex(EVP_CIPHER_CTX * ctx, unsigned char * outm, int * outl) { + return 0; +} + +int EVP_SignFinal(EVP_MD_CTX * ctx, unsigned char * md, unsigned int * s, EVP_PKEY * pkey) { + return 0; +} + +int EVP_SignFinal_ex(EVP_MD_CTX * ctx, unsigned char * md, unsigned int * s, EVP_PKEY * pkey, OSSL_LIB_CTX * libctx, const char * propq) { + return 0; +} + +int EVP_DigestSign(EVP_MD_CTX * ctx, unsigned char * sigret, size_t * siglen, const unsigned char * tbs, size_t tbslen) { + return 0; +} + +int EVP_VerifyFinal(EVP_MD_CTX * ctx, const unsigned char * sigbuf, unsigned int siglen, EVP_PKEY * pkey) { + return 0; +} + +int EVP_VerifyFinal_ex(EVP_MD_CTX * ctx, const unsigned char * sigbuf, unsigned int siglen, EVP_PKEY * pkey, OSSL_LIB_CTX * libctx, const char * propq) { + return 0; +} + +int EVP_DigestVerify(EVP_MD_CTX * ctx, const unsigned char * sigret, size_t siglen, const unsigned char * tbs, size_t tbslen) { + return 0; +} + +int EVP_DigestSignInit_ex(EVP_MD_CTX * ctx, EVP_PKEY_CTX ** pctx, const char * mdname, OSSL_LIB_CTX * libctx, const char * props, EVP_PKEY * pkey, const OSSL_PARAM * params) { + return 0; +} + +int EVP_DigestSignInit(EVP_MD_CTX * ctx, EVP_PKEY_CTX ** pctx, const EVP_MD * type, ENGINE * e, EVP_PKEY * pkey) { + return 0; +} + +int EVP_DigestSignUpdate(EVP_MD_CTX * ctx, const void * data, size_t dsize) { + return 0; +} + +int EVP_DigestSignFinal(EVP_MD_CTX * ctx, unsigned char * sigret, size_t * siglen) { + return 0; +} + +int EVP_DigestVerifyInit_ex(EVP_MD_CTX * ctx, EVP_PKEY_CTX ** pctx, const char * mdname, OSSL_LIB_CTX * libctx, const char * props, EVP_PKEY * pkey, const OSSL_PARAM * params) { + return 0; +} + +int EVP_DigestVerifyInit(EVP_MD_CTX * ctx, EVP_PKEY_CTX ** pctx, const EVP_MD * type, ENGINE * e, EVP_PKEY * pkey) { + return 0; +} + +int EVP_DigestVerifyUpdate(EVP_MD_CTX * ctx, const void * data, size_t dsize) { + return 0; +} + +int EVP_DigestVerifyFinal(EVP_MD_CTX * ctx, const unsigned char * sig, size_t siglen) { + return 0; +} + +int EVP_OpenInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * type, const unsigned char * ek, int ekl, const unsigned char * iv, EVP_PKEY * priv) { + return 0; +} + +int EVP_OpenFinal(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl) { + return 0; +} + +int EVP_SealInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * type, unsigned char ** ek, int * ekl, unsigned char * iv, EVP_PKEY ** pubk, int npubk) { + return 0; +} + +int EVP_SealFinal(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl) { + return 0; +} + +EVP_ENCODE_CTX * EVP_ENCODE_CTX_new(void) { + return NULL; +} + +void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX * ctx) ; + + +int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX * dctx, const EVP_ENCODE_CTX * sctx) { + return 0; +} + +int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX * ctx) { + return 0; +} + +void EVP_EncodeInit(EVP_ENCODE_CTX * ctx) ; + + +int EVP_EncodeUpdate(EVP_ENCODE_CTX * ctx, unsigned char * out, int * outl, const unsigned char * in, int inl) { + return 0; +} + +void EVP_EncodeFinal(EVP_ENCODE_CTX * ctx, unsigned char * out, int * outl) ; + + +int EVP_EncodeBlock(unsigned char * t, const unsigned char * f, int n) { + return 0; +} + +void EVP_DecodeInit(EVP_ENCODE_CTX * ctx) ; + + +int EVP_DecodeUpdate(EVP_ENCODE_CTX * ctx, unsigned char * out, int * outl, const unsigned char * in, int inl) { + return 0; +} + +int EVP_DecodeFinal(EVP_ENCODE_CTX * ctx, unsigned char * out, int * outl) { + return 0; +} + +int EVP_DecodeBlock(unsigned char * t, const unsigned char * f, int n) { + return 0; +} + +EVP_CIPHER_CTX * EVP_CIPHER_CTX_new(void) { + return NULL; +} + +int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX * c) { + return 0; +} + +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX * c) ; + + +int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX * x, int keylen) { + return 0; +} + +int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX * c, int pad) { + return 0; +} + +int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX * ctx, int type, int arg, void * ptr) { + return 0; +} + +int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX * ctx, unsigned char * key) { + return 0; +} + +int EVP_CIPHER_get_params(EVP_CIPHER * cipher, OSSL_PARAM * params) { + return 0; +} + +int EVP_CIPHER_CTX_set_params(EVP_CIPHER_CTX * ctx, const OSSL_PARAM * params) { + return 0; +} + +int EVP_CIPHER_CTX_get_params(EVP_CIPHER_CTX * ctx, OSSL_PARAM * params) { + return 0; +} + +const OSSL_PARAM * EVP_CIPHER_gettable_params(const EVP_CIPHER * cipher) { + return NULL; +} + +const OSSL_PARAM * EVP_CIPHER_settable_ctx_params(const EVP_CIPHER * cipher) { + return NULL; +} + +const OSSL_PARAM * EVP_CIPHER_gettable_ctx_params(const EVP_CIPHER * cipher) { + return NULL; +} + +const OSSL_PARAM * EVP_CIPHER_CTX_settable_params(EVP_CIPHER_CTX * ctx) { + return NULL; +} + +const OSSL_PARAM * EVP_CIPHER_CTX_gettable_params(EVP_CIPHER_CTX * ctx) { + return NULL; +} + +int EVP_CIPHER_CTX_set_algor_params(EVP_CIPHER_CTX * ctx, const X509_ALGOR * alg) { + return 0; +} + +int EVP_CIPHER_CTX_get_algor_params(EVP_CIPHER_CTX * ctx, X509_ALGOR * alg) { + return 0; +} + +int EVP_CIPHER_CTX_get_algor(EVP_CIPHER_CTX * ctx, X509_ALGOR ** alg) { + return 0; +} + +const int * BIO_f_md(void) { + return NULL; +} + +const int * BIO_f_base64(void) { + return NULL; +} + +const int * BIO_f_cipher(void) { + return NULL; +} + +const int * BIO_f_reliable(void) { + return NULL; +} + +int BIO_set_cipher(BIO * b, const EVP_CIPHER * c, const unsigned char * k, const unsigned char * i, int enc) { + return 0; +} + +const EVP_MD * EVP_md_null(void) { + return NULL; +} + +const EVP_MD * EVP_md2(void) { + return NULL; +} + +const EVP_MD * EVP_md4(void) { + return NULL; +} + +const EVP_MD * EVP_md5(void) { + return NULL; +} + +const EVP_MD * EVP_md5_sha1(void) { + return NULL; +} + +const EVP_MD * EVP_blake2b512(void) { + return NULL; +} + +const EVP_MD * EVP_blake2s256(void) { + return NULL; +} + +const EVP_MD * EVP_sha1(void) { + return NULL; +} + +const EVP_MD * EVP_sha224(void) { + return NULL; +} + +const EVP_MD * EVP_sha256(void) { + return NULL; +} + +const EVP_MD * EVP_sha384(void) { + return NULL; +} + +const EVP_MD * EVP_sha512(void) { + return NULL; +} + +const EVP_MD * EVP_sha512_224(void) { + return NULL; +} + +const EVP_MD * EVP_sha512_256(void) { + return NULL; +} + +const EVP_MD * EVP_sha3_224(void) { + return NULL; +} + +const EVP_MD * EVP_sha3_256(void) { + return NULL; +} + +const EVP_MD * EVP_sha3_384(void) { + return NULL; +} + +const EVP_MD * EVP_sha3_512(void) { + return NULL; +} + +const EVP_MD * EVP_shake128(void) { + return NULL; +} + +const EVP_MD * EVP_shake256(void) { + return NULL; +} + +const EVP_MD * EVP_mdc2(void) { + return NULL; +} + +const EVP_MD * EVP_ripemd160(void) { + return NULL; +} + +const EVP_MD * EVP_whirlpool(void) { + return NULL; +} + +const EVP_MD * EVP_sm3(void) { + return NULL; +} + +const EVP_CIPHER * EVP_enc_null(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ede(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ede3(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ede_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ede3_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_cfb64(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_cfb1(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_cfb8(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ede_cfb64(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ede3_cfb64(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ede3_cfb1(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ede3_cfb8(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ede_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ede3_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ede_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ede3_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_desx_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_des_ede3_wrap(void) { + return NULL; +} + +const EVP_CIPHER * EVP_rc4(void) { + return NULL; +} + +const EVP_CIPHER * EVP_rc4_40(void) { + return NULL; +} + +const EVP_CIPHER * EVP_rc4_hmac_md5(void) { + return NULL; +} + +const EVP_CIPHER * EVP_idea_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_idea_cfb64(void) { + return NULL; +} + +const EVP_CIPHER * EVP_idea_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_idea_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_rc2_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_rc2_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_rc2_40_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_rc2_64_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_rc2_cfb64(void) { + return NULL; +} + +const EVP_CIPHER * EVP_rc2_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_bf_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_bf_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_bf_cfb64(void) { + return NULL; +} + +const EVP_CIPHER * EVP_bf_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_cast5_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_cast5_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_cast5_cfb64(void) { + return NULL; +} + +const EVP_CIPHER * EVP_cast5_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_rc5_32_12_16_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_rc5_32_12_16_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_rc5_32_12_16_cfb64(void) { + return NULL; +} + +const EVP_CIPHER * EVP_rc5_32_12_16_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_cfb1(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_cfb8(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_cfb128(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_ctr(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_ccm(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_gcm(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_xts(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_wrap(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_wrap_pad(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_ocb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_192_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_192_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_192_cfb1(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_192_cfb8(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_192_cfb128(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_192_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_192_ctr(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_192_ccm(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_192_gcm(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_192_wrap(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_192_wrap_pad(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_192_ocb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_cfb1(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_cfb8(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_cfb128(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_ctr(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_ccm(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_gcm(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_xts(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_wrap(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_wrap_pad(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_ocb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_cbc_hmac_sha1(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_cbc_hmac_sha1(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_128_cbc_hmac_sha256(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aes_256_cbc_hmac_sha256(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_128_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_128_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_128_cfb1(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_128_cfb8(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_128_cfb128(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_128_ctr(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_128_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_128_gcm(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_128_ccm(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_192_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_192_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_192_cfb1(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_192_cfb8(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_192_cfb128(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_192_ctr(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_192_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_192_gcm(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_192_ccm(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_256_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_256_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_256_cfb1(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_256_cfb8(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_256_cfb128(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_256_ctr(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_256_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_256_gcm(void) { + return NULL; +} + +const EVP_CIPHER * EVP_aria_256_ccm(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_128_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_128_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_128_cfb1(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_128_cfb8(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_128_cfb128(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_128_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_128_ctr(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_192_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_192_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_192_cfb1(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_192_cfb8(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_192_cfb128(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_192_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_192_ctr(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_256_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_256_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_256_cfb1(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_256_cfb8(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_256_cfb128(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_256_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_camellia_256_ctr(void) { + return NULL; +} + +const EVP_CIPHER * EVP_chacha20(void) { + return NULL; +} + +const EVP_CIPHER * EVP_chacha20_poly1305(void) { + return NULL; +} + +const EVP_CIPHER * EVP_seed_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_seed_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_seed_cfb128(void) { + return NULL; +} + +const EVP_CIPHER * EVP_seed_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_sm4_ecb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_sm4_cbc(void) { + return NULL; +} + +const EVP_CIPHER * EVP_sm4_cfb128(void) { + return NULL; +} + +const EVP_CIPHER * EVP_sm4_ofb(void) { + return NULL; +} + +const EVP_CIPHER * EVP_sm4_ctr(void) { + return NULL; +} + +int EVP_add_cipher(const EVP_CIPHER * cipher) { + return 0; +} + +int EVP_add_digest(const EVP_MD * digest) { + return 0; +} + +const EVP_CIPHER * EVP_get_cipherbyname(const char * name) { + return NULL; +} + +const EVP_MD * EVP_get_digestbyname(const char * name) { + return NULL; +} + +void EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *, const char *, const char *, void *), void * arg) ; + + +void EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *, const char *, const char *, void *), void * arg) ; + + +void EVP_CIPHER_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_CIPHER *, void *), void * arg) ; + + +void EVP_MD_do_all(void (*fn)(const EVP_MD *, const char *, const char *, void *), void * arg) ; + + +void EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *, const char *, const char *, void *), void * arg) ; + + +void EVP_MD_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_MD *, void *), void * arg) ; + + +EVP_MAC * EVP_MAC_fetch(OSSL_LIB_CTX * libctx, const char * algorithm, const char * properties) { + return NULL; +} + +int EVP_MAC_up_ref(EVP_MAC * mac) { + return 0; +} + +void EVP_MAC_free(EVP_MAC * mac) ; + + +const char * EVP_MAC_get0_name(const EVP_MAC * mac) { + return NULL; +} + +const char * EVP_MAC_get0_description(const EVP_MAC * mac) { + return NULL; +} + +int EVP_MAC_is_a(const EVP_MAC * mac, const char * name) { + return 0; +} + +const OSSL_PROVIDER * EVP_MAC_get0_provider(const EVP_MAC * mac) { + return NULL; +} + +int EVP_MAC_get_params(EVP_MAC * mac, OSSL_PARAM * params) { + return 0; +} + +EVP_MAC_CTX * EVP_MAC_CTX_new(EVP_MAC * mac) { + return NULL; +} + +void EVP_MAC_CTX_free(EVP_MAC_CTX * ctx) ; + + +EVP_MAC_CTX * EVP_MAC_CTX_dup(const EVP_MAC_CTX * src) { + return NULL; +} + +EVP_MAC * EVP_MAC_CTX_get0_mac(EVP_MAC_CTX * ctx) { + return NULL; +} + +int EVP_MAC_CTX_get_params(EVP_MAC_CTX * ctx, OSSL_PARAM * params) { + return 0; +} + +int EVP_MAC_CTX_set_params(EVP_MAC_CTX * ctx, const OSSL_PARAM * params) { + return 0; +} + +size_t EVP_MAC_CTX_get_mac_size(EVP_MAC_CTX * ctx) { + return 0; +} + +size_t EVP_MAC_CTX_get_block_size(EVP_MAC_CTX * ctx) { + return 0; +} + +unsigned char * EVP_Q_mac(OSSL_LIB_CTX * libctx, const char * name, const char * propq, const char * subalg, const OSSL_PARAM * params, const void * key, size_t keylen, const unsigned char * data, size_t datalen, unsigned char * out, size_t outsize, size_t * outlen) { + return NULL; +} + +int EVP_MAC_init(EVP_MAC_CTX * ctx, const unsigned char * key, size_t keylen, const OSSL_PARAM * params) { + return 0; +} + +int EVP_MAC_init_SKEY(EVP_MAC_CTX * ctx, EVP_SKEY * skey, const OSSL_PARAM * params) { + return 0; +} + +int EVP_MAC_update(EVP_MAC_CTX * ctx, const unsigned char * data, size_t datalen) { + return 0; +} + +int EVP_MAC_final(EVP_MAC_CTX * ctx, unsigned char * out, size_t * outl, size_t outsize) { + return 0; +} + +int EVP_MAC_finalXOF(EVP_MAC_CTX * ctx, unsigned char * out, size_t outsize) { + return 0; +} + +const OSSL_PARAM * EVP_MAC_gettable_params(const EVP_MAC * mac) { + return NULL; +} + +const OSSL_PARAM * EVP_MAC_gettable_ctx_params(const EVP_MAC * mac) { + return NULL; +} + +const OSSL_PARAM * EVP_MAC_settable_ctx_params(const EVP_MAC * mac) { + return NULL; +} + +const OSSL_PARAM * EVP_MAC_CTX_gettable_params(EVP_MAC_CTX * ctx) { + return NULL; +} + +const OSSL_PARAM * EVP_MAC_CTX_settable_params(EVP_MAC_CTX * ctx) { + return NULL; +} + +void EVP_MAC_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_MAC *, void *), void * arg) ; + + +int EVP_MAC_names_do_all(const EVP_MAC * mac, void (*fn)(const char *, void *), void * data) { + return 0; +} + +EVP_RAND * EVP_RAND_fetch(OSSL_LIB_CTX * libctx, const char * algorithm, const char * properties) { + return NULL; +} + +int EVP_RAND_up_ref(EVP_RAND * rand) { + return 0; +} + +void EVP_RAND_free(EVP_RAND * rand) ; + + +const char * EVP_RAND_get0_name(const EVP_RAND * rand) { + return NULL; +} + +const char * EVP_RAND_get0_description(const EVP_RAND * md) { + return NULL; +} + +int EVP_RAND_is_a(const EVP_RAND * rand, const char * name) { + return 0; +} + +const OSSL_PROVIDER * EVP_RAND_get0_provider(const EVP_RAND * rand) { + return NULL; +} + +int EVP_RAND_get_params(EVP_RAND * rand, OSSL_PARAM * params) { + return 0; +} + +EVP_RAND_CTX * EVP_RAND_CTX_new(EVP_RAND * rand, EVP_RAND_CTX * parent) { + return NULL; +} + +int EVP_RAND_CTX_up_ref(EVP_RAND_CTX * ctx) { + return 0; +} + +void EVP_RAND_CTX_free(EVP_RAND_CTX * ctx) ; + + +EVP_RAND * EVP_RAND_CTX_get0_rand(EVP_RAND_CTX * ctx) { + return NULL; +} + +int EVP_RAND_CTX_get_params(EVP_RAND_CTX * ctx, OSSL_PARAM * params) { + return 0; +} + +int EVP_RAND_CTX_set_params(EVP_RAND_CTX * ctx, const OSSL_PARAM * params) { + return 0; +} + +const OSSL_PARAM * EVP_RAND_gettable_params(const EVP_RAND * rand) { + return NULL; +} + +const OSSL_PARAM * EVP_RAND_gettable_ctx_params(const EVP_RAND * rand) { + return NULL; +} + +const OSSL_PARAM * EVP_RAND_settable_ctx_params(const EVP_RAND * rand) { + return NULL; +} + +const OSSL_PARAM * EVP_RAND_CTX_gettable_params(EVP_RAND_CTX * ctx) { + return NULL; +} + +const OSSL_PARAM * EVP_RAND_CTX_settable_params(EVP_RAND_CTX * ctx) { + return NULL; +} + +void EVP_RAND_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_RAND *, void *), void * arg) ; + + +int EVP_RAND_names_do_all(const EVP_RAND * rand, void (*fn)(const char *, void *), void * data) { + return 0; +} + +int EVP_RAND_instantiate(EVP_RAND_CTX * ctx, unsigned int strength, int prediction_resistance, const unsigned char * pstr, size_t pstr_len, const OSSL_PARAM * params) { + return 0; +} + +int EVP_RAND_uninstantiate(EVP_RAND_CTX * ctx) { + return 0; +} + +int EVP_RAND_generate(EVP_RAND_CTX * ctx, unsigned char * out, size_t outlen, unsigned int strength, int prediction_resistance, const unsigned char * addin, size_t addin_len) { + return 0; +} + +int EVP_RAND_reseed(EVP_RAND_CTX * ctx, int prediction_resistance, const unsigned char * ent, size_t ent_len, const unsigned char * addin, size_t addin_len) { + return 0; +} + +int EVP_RAND_nonce(EVP_RAND_CTX * ctx, unsigned char * out, size_t outlen) { + return 0; +} + +int EVP_RAND_enable_locking(EVP_RAND_CTX * ctx) { + return 0; +} + +int EVP_RAND_verify_zeroization(EVP_RAND_CTX * ctx) { + return 0; +} + +unsigned int EVP_RAND_get_strength(EVP_RAND_CTX * ctx) { + return 0; +} + +int EVP_RAND_get_state(EVP_RAND_CTX * ctx) { + return 0; +} + +int EVP_PKEY_decrypt_old(unsigned char * dec_key, const unsigned char * enc_key, int enc_key_len, EVP_PKEY * private_key) { + return 0; +} + +int EVP_PKEY_encrypt_old(unsigned char * enc_key, const unsigned char * key, int key_len, EVP_PKEY * pub_key) { + return 0; +} + +int EVP_PKEY_is_a(const EVP_PKEY * pkey, const char * name) { + return 0; +} + +int EVP_PKEY_type_names_do_all(const EVP_PKEY * pkey, void (*fn)(const char *, void *), void * data) { + return 0; +} + +int EVP_PKEY_type(int type) { + return 0; +} + +int EVP_PKEY_get_id(const EVP_PKEY * pkey) { + return 0; +} + +int EVP_PKEY_get_base_id(const EVP_PKEY * pkey) { + return 0; +} + +int EVP_PKEY_get_bits(const EVP_PKEY * pkey) { + return 0; +} + +int EVP_PKEY_get_security_bits(const EVP_PKEY * pkey) { + return 0; +} + +int EVP_PKEY_get_size(const EVP_PKEY * pkey) { + return 0; +} + +int EVP_PKEY_can_sign(const EVP_PKEY * pkey) { + return 0; +} + +int EVP_PKEY_set_type(EVP_PKEY * pkey, int type) { + return 0; +} + +int EVP_PKEY_set_type_str(EVP_PKEY * pkey, const char * str, int len) { + return 0; +} + +int EVP_PKEY_set_type_by_keymgmt(EVP_PKEY * pkey, EVP_KEYMGMT * keymgmt) { + return 0; +} + +int EVP_PKEY_set1_engine(EVP_PKEY * pkey, ENGINE * e) { + return 0; +} + +ENGINE * EVP_PKEY_get0_engine(const EVP_PKEY * pkey) { + return NULL; +} + +int EVP_PKEY_assign(EVP_PKEY * pkey, int type, void * key) { + return 0; +} + +void * EVP_PKEY_get0(const EVP_PKEY * pkey) { + return NULL; +} + +const unsigned char * EVP_PKEY_get0_hmac(const EVP_PKEY * pkey, size_t * len) { + return NULL; +} + +const unsigned char * EVP_PKEY_get0_poly1305(const EVP_PKEY * pkey, size_t * len) { + return NULL; +} + +const unsigned char * EVP_PKEY_get0_siphash(const EVP_PKEY * pkey, size_t * len) { + return NULL; +} + +int EVP_PKEY_set1_RSA(EVP_PKEY * pkey, struct rsa_st * key) { + return 0; +} + +const struct rsa_st * EVP_PKEY_get0_RSA(const EVP_PKEY * pkey) { + return NULL; +} + +struct rsa_st * EVP_PKEY_get1_RSA(EVP_PKEY * pkey) { + return NULL; +} + +int EVP_PKEY_set1_DSA(EVP_PKEY * pkey, struct dsa_st * key) { + return 0; +} + +const struct dsa_st * EVP_PKEY_get0_DSA(const EVP_PKEY * pkey) { + return NULL; +} + +struct dsa_st * EVP_PKEY_get1_DSA(EVP_PKEY * pkey) { + return NULL; +} + +int EVP_PKEY_set1_DH(EVP_PKEY * pkey, struct dh_st * key) { + return 0; +} + +const struct dh_st * EVP_PKEY_get0_DH(const EVP_PKEY * pkey) { + return NULL; +} + +struct dh_st * EVP_PKEY_get1_DH(EVP_PKEY * pkey) { + return NULL; +} + +int EVP_PKEY_set1_EC_KEY(EVP_PKEY * pkey, struct ec_key_st * key) { + return 0; +} + +const struct ec_key_st * EVP_PKEY_get0_EC_KEY(const EVP_PKEY * pkey) { + return NULL; +} + +struct ec_key_st * EVP_PKEY_get1_EC_KEY(EVP_PKEY * pkey) { + return NULL; +} + +EVP_PKEY * EVP_PKEY_new(void) { + return NULL; +} + +int EVP_PKEY_up_ref(EVP_PKEY * pkey) { + return 0; +} + +EVP_PKEY * EVP_PKEY_dup(EVP_PKEY * pkey) { + return NULL; +} + +void EVP_PKEY_free(EVP_PKEY * pkey) ; + + +const char * EVP_PKEY_get0_description(const EVP_PKEY * pkey) { + return NULL; +} + +const OSSL_PROVIDER * EVP_PKEY_get0_provider(const EVP_PKEY * key) { + return NULL; +} + +EVP_PKEY * d2i_PublicKey(int type, EVP_PKEY ** a, const unsigned char ** pp, long length) { + return NULL; +} + +int i2d_PublicKey(const EVP_PKEY * a, unsigned char ** pp) { + return 0; +} + +EVP_PKEY * d2i_PrivateKey_ex(int type, EVP_PKEY ** a, const unsigned char ** pp, long length, OSSL_LIB_CTX * libctx, const char * propq) { + return NULL; +} + +EVP_PKEY * d2i_PrivateKey(int type, EVP_PKEY ** a, const unsigned char ** pp, long length) { + return NULL; +} + +EVP_PKEY * d2i_AutoPrivateKey_ex(EVP_PKEY ** a, const unsigned char ** pp, long length, OSSL_LIB_CTX * libctx, const char * propq) { + return NULL; +} + +EVP_PKEY * d2i_AutoPrivateKey(EVP_PKEY ** a, const unsigned char ** pp, long length) { + return NULL; +} + +int i2d_PrivateKey(const EVP_PKEY * a, unsigned char ** pp) { + return 0; +} + +int i2d_PKCS8PrivateKey(const EVP_PKEY * a, unsigned char ** pp) { + return 0; +} + +int i2d_KeyParams(const EVP_PKEY * a, unsigned char ** pp) { + return 0; +} + +EVP_PKEY * d2i_KeyParams(int type, EVP_PKEY ** a, const unsigned char ** pp, long length) { + return NULL; +} + +int i2d_KeyParams_bio(BIO * bp, const EVP_PKEY * pkey) { + return 0; +} + +EVP_PKEY * d2i_KeyParams_bio(int type, EVP_PKEY ** a, BIO * in) { + return NULL; +} + +int EVP_PKEY_copy_parameters(EVP_PKEY * to, const EVP_PKEY * from) { + return 0; +} + +int EVP_PKEY_missing_parameters(const EVP_PKEY * pkey) { + return 0; +} + +int EVP_PKEY_save_parameters(EVP_PKEY * pkey, int mode) { + return 0; +} + +int EVP_PKEY_parameters_eq(const EVP_PKEY * a, const EVP_PKEY * b) { + return 0; +} + +int EVP_PKEY_eq(const EVP_PKEY * a, const EVP_PKEY * b) { + return 0; +} + +int EVP_PKEY_cmp_parameters(const EVP_PKEY * a, const EVP_PKEY * b) { + return 0; +} + +int EVP_PKEY_cmp(const EVP_PKEY * a, const EVP_PKEY * b) { + return 0; +} + +int EVP_PKEY_print_public(BIO * out, const EVP_PKEY * pkey, int indent, ASN1_PCTX * pctx) { + return 0; +} + +int EVP_PKEY_print_private(BIO * out, const EVP_PKEY * pkey, int indent, ASN1_PCTX * pctx) { + return 0; +} + +int EVP_PKEY_print_params(BIO * out, const EVP_PKEY * pkey, int indent, ASN1_PCTX * pctx) { + return 0; +} + +int EVP_PKEY_print_public_fp(FILE * fp, const EVP_PKEY * pkey, int indent, ASN1_PCTX * pctx) { + return 0; +} + +int EVP_PKEY_print_private_fp(FILE * fp, const EVP_PKEY * pkey, int indent, ASN1_PCTX * pctx) { + return 0; +} + +int EVP_PKEY_print_params_fp(FILE * fp, const EVP_PKEY * pkey, int indent, ASN1_PCTX * pctx) { + return 0; +} + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY * pkey, int * pnid) { + return 0; +} + +int EVP_PKEY_get_default_digest_name(EVP_PKEY * pkey, char * mdname, size_t mdname_sz) { + return 0; +} + +int EVP_PKEY_digestsign_supports_digest(EVP_PKEY * pkey, OSSL_LIB_CTX * libctx, const char * name, const char * propq) { + return 0; +} + +int EVP_PKEY_set1_encoded_public_key(EVP_PKEY * pkey, const unsigned char * pub, size_t publen) { + return 0; +} + +size_t EVP_PKEY_get1_encoded_public_key(EVP_PKEY * pkey, unsigned char ** ppub) { + return 0; +} + +int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX * c, ASN1_TYPE * type) { + return 0; +} + +int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX * c, ASN1_TYPE * type) { + return 0; +} + +int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX * c, ASN1_TYPE * type) { + return 0; +} + +int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX * c, ASN1_TYPE * type) { + return 0; +} + +int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX * ctx, const char * pass, int passlen, ASN1_TYPE * param, const EVP_CIPHER * cipher, const EVP_MD * md, int en_de) { + return 0; +} + +int PKCS5_PBE_keyivgen_ex(EVP_CIPHER_CTX * cctx, const char * pass, int passlen, ASN1_TYPE * param, const EVP_CIPHER * cipher, const EVP_MD * md, int en_de, OSSL_LIB_CTX * libctx, const char * propq) { + return 0; +} + +int PKCS5_PBKDF2_HMAC_SHA1(const char * pass, int passlen, const unsigned char * salt, int saltlen, int iter, int keylen, unsigned char * out) { + return 0; +} + +int PKCS5_PBKDF2_HMAC(const char * pass, int passlen, const unsigned char * salt, int saltlen, int iter, const EVP_MD * digest, int keylen, unsigned char * out) { + return 0; +} + +int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX * ctx, const char * pass, int passlen, ASN1_TYPE * param, const EVP_CIPHER * cipher, const EVP_MD * md, int en_de) { + return 0; +} + +int PKCS5_v2_PBE_keyivgen_ex(EVP_CIPHER_CTX * ctx, const char * pass, int passlen, ASN1_TYPE * param, const EVP_CIPHER * cipher, const EVP_MD * md, int en_de, OSSL_LIB_CTX * libctx, const char * propq) { + return 0; +} + +int EVP_PBE_scrypt(const char * pass, size_t passlen, const unsigned char * salt, size_t saltlen, uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, unsigned char * key, size_t keylen) { + return 0; +} + +int EVP_PBE_scrypt_ex(const char * pass, size_t passlen, const unsigned char * salt, size_t saltlen, uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, unsigned char * key, size_t keylen, OSSL_LIB_CTX * ctx, const char * propq) { + return 0; +} + +int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX * ctx, const char * pass, int passlen, ASN1_TYPE * param, const EVP_CIPHER * c, const EVP_MD * md, int en_de) { + return 0; +} + +int PKCS5_v2_scrypt_keyivgen_ex(EVP_CIPHER_CTX * ctx, const char * pass, int passlen, ASN1_TYPE * param, const EVP_CIPHER * c, const EVP_MD * md, int en_de, OSSL_LIB_CTX * libctx, const char * propq) { + return 0; +} + +void PKCS5_PBE_add(void) ; + + +int EVP_PBE_CipherInit(ASN1_OBJECT * pbe_obj, const char * pass, int passlen, ASN1_TYPE * param, EVP_CIPHER_CTX * ctx, int en_de) { + return 0; +} + +int EVP_PBE_CipherInit_ex(ASN1_OBJECT * pbe_obj, const char * pass, int passlen, ASN1_TYPE * param, EVP_CIPHER_CTX * ctx, int en_de, OSSL_LIB_CTX * libctx, const char * propq) { + return 0; +} + +int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, int md_nid, EVP_PBE_KEYGEN * keygen) { + return 0; +} + +int EVP_PBE_alg_add(int nid, const EVP_CIPHER * cipher, const EVP_MD * md, EVP_PBE_KEYGEN * keygen) { + return 0; +} + +int EVP_PBE_find(int type, int pbe_nid, int * pcnid, int * pmnid, EVP_PBE_KEYGEN ** pkeygen) { + return 0; +} + +int EVP_PBE_find_ex(int type, int pbe_nid, int * pcnid, int * pmnid, EVP_PBE_KEYGEN ** pkeygen, EVP_PBE_KEYGEN_EX ** pkeygen_ex) { + return 0; +} + +void EVP_PBE_cleanup(void) ; + + +int EVP_PBE_get(int * ptype, int * ppbe_nid, size_t num) { + return 0; +} + +int EVP_PKEY_asn1_get_count(void) { + return 0; +} + +const EVP_PKEY_ASN1_METHOD * EVP_PKEY_asn1_get0(int idx) { + return NULL; +} + +const EVP_PKEY_ASN1_METHOD * EVP_PKEY_asn1_find(ENGINE ** pe, int type) { + return NULL; +} + +const EVP_PKEY_ASN1_METHOD * EVP_PKEY_asn1_find_str(ENGINE ** pe, const char * str, int len) { + return NULL; +} + +int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD * ameth) { + return 0; +} + +int EVP_PKEY_asn1_add_alias(int to, int from) { + return 0; +} + +int EVP_PKEY_asn1_get0_info(int * ppkey_id, int * pkey_base_id, int * ppkey_flags, const char ** pinfo, const char ** ppem_str, const EVP_PKEY_ASN1_METHOD * ameth) { + return 0; +} + +const EVP_PKEY_ASN1_METHOD * EVP_PKEY_get0_asn1(const EVP_PKEY * pkey) { + return NULL; +} + +EVP_PKEY_ASN1_METHOD * EVP_PKEY_asn1_new(int id, int flags, const char * pem_str, const char * info) { + return NULL; +} + +void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD * dst, const EVP_PKEY_ASN1_METHOD * src) ; + + +void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD * ameth) ; + + +void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD * ameth, int (*pub_decode)(EVP_PKEY *, const X509_PUBKEY *), int (*pub_encode)(X509_PUBKEY *, const EVP_PKEY *), int (*pub_cmp)(const EVP_PKEY *, const EVP_PKEY *), int (*pub_print)(BIO *, const EVP_PKEY *, int, ASN1_PCTX *), int (*pkey_size)(const EVP_PKEY *), int (*pkey_bits)(const EVP_PKEY *)) ; + + +void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD * ameth, int (*priv_decode)(EVP_PKEY *, const PKCS8_PRIV_KEY_INFO *), int (*priv_encode)(PKCS8_PRIV_KEY_INFO *, const EVP_PKEY *), int (*priv_print)(BIO *, const EVP_PKEY *, int, ASN1_PCTX *)) ; + + +void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD * ameth, int (*param_decode)(EVP_PKEY *, const unsigned char **, int), int (*param_encode)(const EVP_PKEY *, unsigned char **), int (*param_missing)(const EVP_PKEY *), int (*param_copy)(EVP_PKEY *, const EVP_PKEY *), int (*param_cmp)(const EVP_PKEY *, const EVP_PKEY *), int (*param_print)(BIO *, const EVP_PKEY *, int, ASN1_PCTX *)) ; + + +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD * ameth, void (*pkey_free)(EVP_PKEY *)) ; + + +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD * ameth, int (*pkey_ctrl)(EVP_PKEY *, int, long, void *)) ; + + +void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD * ameth, int (*item_verify)(EVP_MD_CTX *, const ASN1_ITEM *, const void *, const X509_ALGOR *, const ASN1_BIT_STRING *, EVP_PKEY *), int (*item_sign)(EVP_MD_CTX *, const ASN1_ITEM *, const void *, X509_ALGOR *, X509_ALGOR *, ASN1_BIT_STRING *)) ; + + +void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD * ameth, int (*siginf_set)(X509_SIG_INFO *, const X509_ALGOR *, const ASN1_STRING *)) ; + + +void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD * ameth, int (*pkey_check)(const EVP_PKEY *)) ; + + +void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD * ameth, int (*pkey_pub_check)(const EVP_PKEY *)) ; + + +void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD * ameth, int (*pkey_param_check)(const EVP_PKEY *)) ; + + +void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD * ameth, int (*set_priv_key)(EVP_PKEY *, const unsigned char *, size_t)) ; + + +void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD * ameth, int (*set_pub_key)(EVP_PKEY *, const unsigned char *, size_t)) ; + + +void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD * ameth, int (*get_priv_key)(const EVP_PKEY *, unsigned char *, size_t *)) ; + + +void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD * ameth, int (*get_pub_key)(const EVP_PKEY *, unsigned char *, size_t *)) ; + + +void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD * ameth, int (*pkey_security_bits)(const EVP_PKEY *)) ; + + +int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX * ctx, const EVP_MD ** md) { + return 0; +} + +int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX * ctx, const EVP_MD * md) { + return 0; +} + +int EVP_PKEY_CTX_set1_id(EVP_PKEY_CTX * ctx, const void * id, int len) { + return 0; +} + +int EVP_PKEY_CTX_get1_id(EVP_PKEY_CTX * ctx, void * id) { + return 0; +} + +int EVP_PKEY_CTX_get1_id_len(EVP_PKEY_CTX * ctx, size_t * id_len) { + return 0; +} + +int EVP_PKEY_CTX_set_kem_op(EVP_PKEY_CTX * ctx, const char * op) { + return 0; +} + +const char * EVP_PKEY_get0_type_name(const EVP_PKEY * key) { + return NULL; +} + +int EVP_PKEY_CTX_set_mac_key(EVP_PKEY_CTX * ctx, const unsigned char * key, int keylen) { + return 0; +} + +const EVP_PKEY_METHOD * EVP_PKEY_meth_find(int type) { + return NULL; +} + +EVP_PKEY_METHOD * EVP_PKEY_meth_new(int id, int flags) { + return NULL; +} + +void EVP_PKEY_meth_get0_info(int * ppkey_id, int * pflags, const EVP_PKEY_METHOD * meth) ; + + +void EVP_PKEY_meth_copy(EVP_PKEY_METHOD * dst, const EVP_PKEY_METHOD * src) ; + + +void EVP_PKEY_meth_free(EVP_PKEY_METHOD * pmeth) ; + + +int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD * pmeth) { + return 0; +} + +int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD * pmeth) { + return 0; +} + +size_t EVP_PKEY_meth_get_count(void) { + return 0; +} + +const EVP_PKEY_METHOD * EVP_PKEY_meth_get0(size_t idx) { + return NULL; +} + +EVP_KEYMGMT * EVP_KEYMGMT_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { + return NULL; +} + +int EVP_KEYMGMT_up_ref(EVP_KEYMGMT * keymgmt) { + return 0; +} + +void EVP_KEYMGMT_free(EVP_KEYMGMT * keymgmt) ; + + +const OSSL_PROVIDER * EVP_KEYMGMT_get0_provider(const EVP_KEYMGMT * keymgmt) { + return NULL; +} + +const char * EVP_KEYMGMT_get0_name(const EVP_KEYMGMT * keymgmt) { + return NULL; +} + +const char * EVP_KEYMGMT_get0_description(const EVP_KEYMGMT * keymgmt) { + return NULL; +} + +int EVP_KEYMGMT_is_a(const EVP_KEYMGMT * keymgmt, const char * name) { + return 0; +} + +void EVP_KEYMGMT_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_KEYMGMT *, void *), void * arg) ; + + +int EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT * keymgmt, void (*fn)(const char *, void *), void * data) { + return 0; +} + +const OSSL_PARAM * EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT * keymgmt) { + return NULL; +} + +const OSSL_PARAM * EVP_KEYMGMT_settable_params(const EVP_KEYMGMT * keymgmt) { + return NULL; +} + +const OSSL_PARAM * EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT * keymgmt) { + return NULL; +} + +const OSSL_PARAM * EVP_KEYMGMT_gen_gettable_params(const EVP_KEYMGMT * keymgmt) { + return NULL; +} + +EVP_SKEYMGMT * EVP_SKEYMGMT_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { + return NULL; +} + +int EVP_SKEYMGMT_up_ref(EVP_SKEYMGMT * keymgmt) { + return 0; +} + +void EVP_SKEYMGMT_free(EVP_SKEYMGMT * keymgmt) ; + + +const OSSL_PROVIDER * EVP_SKEYMGMT_get0_provider(const EVP_SKEYMGMT * keymgmt) { + return NULL; +} + +const char * EVP_SKEYMGMT_get0_name(const EVP_SKEYMGMT * keymgmt) { + return NULL; +} + +const char * EVP_SKEYMGMT_get0_description(const EVP_SKEYMGMT * keymgmt) { + return NULL; +} + +int EVP_SKEYMGMT_is_a(const EVP_SKEYMGMT * keymgmt, const char * name) { + return 0; +} + +void EVP_SKEYMGMT_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_SKEYMGMT *, void *), void * arg) ; + + +int EVP_SKEYMGMT_names_do_all(const EVP_SKEYMGMT * keymgmt, void (*fn)(const char *, void *), void * data) { + return 0; +} + +const OSSL_PARAM * EVP_SKEYMGMT_get0_gen_settable_params(const EVP_SKEYMGMT * skeymgmt) { + return NULL; +} + +const OSSL_PARAM * EVP_SKEYMGMT_get0_imp_settable_params(const EVP_SKEYMGMT * skeymgmt) { + return NULL; +} + +EVP_PKEY_CTX * EVP_PKEY_CTX_new(EVP_PKEY * pkey, ENGINE * e) { + return NULL; +} + +EVP_PKEY_CTX * EVP_PKEY_CTX_new_id(int id, ENGINE * e) { + return NULL; +} + +EVP_PKEY_CTX * EVP_PKEY_CTX_new_from_name(OSSL_LIB_CTX * libctx, const char * name, const char * propquery) { + return NULL; +} + +EVP_PKEY_CTX * EVP_PKEY_CTX_new_from_pkey(OSSL_LIB_CTX * libctx, EVP_PKEY * pkey, const char * propquery) { + return NULL; +} + +EVP_PKEY_CTX * EVP_PKEY_CTX_dup(const EVP_PKEY_CTX * ctx) { + return NULL; +} + +void EVP_PKEY_CTX_free(EVP_PKEY_CTX * ctx) ; + + +int EVP_PKEY_CTX_is_a(EVP_PKEY_CTX * ctx, const char * keytype) { + return 0; +} + +int EVP_PKEY_CTX_get_params(EVP_PKEY_CTX * ctx, OSSL_PARAM * params) { + return 0; +} + +const OSSL_PARAM * EVP_PKEY_CTX_gettable_params(const EVP_PKEY_CTX * ctx) { + return NULL; +} + +int EVP_PKEY_CTX_set_params(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { + return 0; +} + +const OSSL_PARAM * EVP_PKEY_CTX_settable_params(const EVP_PKEY_CTX * ctx) { + return NULL; +} + +int EVP_PKEY_CTX_set_algor_params(EVP_PKEY_CTX * ctx, const X509_ALGOR * alg) { + return 0; +} + +int EVP_PKEY_CTX_get_algor_params(EVP_PKEY_CTX * ctx, X509_ALGOR * alg) { + return 0; +} + +int EVP_PKEY_CTX_get_algor(EVP_PKEY_CTX * ctx, X509_ALGOR ** alg) { + return 0; +} + +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX * ctx, int keytype, int optype, int cmd, int p1, void * p2) { + return 0; +} + +int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX * ctx, const char * type, const char * value) { + return 0; +} + +int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX * ctx, int keytype, int optype, int cmd, uint64_t value) { + return 0; +} + +int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX * ctx, int cmd, const char * str) { + return 0; +} + +int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX * ctx, int cmd, const char * hex) { + return 0; +} + +int EVP_PKEY_CTX_md(EVP_PKEY_CTX * ctx, int optype, int cmd, const char * md) { + return 0; +} + +int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX * ctx) { + return 0; +} + +void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX * ctx, int * dat, int datlen) ; + + +EVP_PKEY * EVP_PKEY_new_mac_key(int type, ENGINE * e, const unsigned char * key, int keylen) { + return NULL; +} + +EVP_PKEY * EVP_PKEY_new_raw_private_key_ex(OSSL_LIB_CTX * libctx, const char * keytype, const char * propq, const unsigned char * priv, size_t len) { + return NULL; +} + +EVP_PKEY * EVP_PKEY_new_raw_private_key(int type, ENGINE * e, const unsigned char * priv, size_t len) { + return NULL; +} + +EVP_PKEY * EVP_PKEY_new_raw_public_key_ex(OSSL_LIB_CTX * libctx, const char * keytype, const char * propq, const unsigned char * pub, size_t len) { + return NULL; +} + +EVP_PKEY * EVP_PKEY_new_raw_public_key(int type, ENGINE * e, const unsigned char * pub, size_t len) { + return NULL; +} + +int EVP_PKEY_get_raw_private_key(const EVP_PKEY * pkey, unsigned char * priv, size_t * len) { + return 0; +} + +int EVP_PKEY_get_raw_public_key(const EVP_PKEY * pkey, unsigned char * pub, size_t * len) { + return 0; +} + +EVP_PKEY * EVP_PKEY_new_CMAC_key(ENGINE * e, const unsigned char * priv, size_t len, const EVP_CIPHER * cipher) { + return NULL; +} + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX * ctx, void * data) ; + + +void * EVP_PKEY_CTX_get_data(const EVP_PKEY_CTX * ctx) { + return NULL; +} + +EVP_PKEY * EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX * ctx) { + return NULL; +} + +EVP_PKEY * EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX * ctx) { + return NULL; +} + +void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX * ctx, void * data) ; + + +void * EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX * ctx) { + return NULL; +} + +int EVP_PKEY_CTX_set_signature(EVP_PKEY_CTX * pctx, const unsigned char * sig, size_t siglen) { + return 0; +} + +void EVP_SIGNATURE_free(EVP_SIGNATURE * signature) ; + + +int EVP_SIGNATURE_up_ref(EVP_SIGNATURE * signature) { + return 0; +} + +OSSL_PROVIDER * EVP_SIGNATURE_get0_provider(const EVP_SIGNATURE * signature) { + return NULL; +} + +EVP_SIGNATURE * EVP_SIGNATURE_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { + return NULL; +} + +int EVP_SIGNATURE_is_a(const EVP_SIGNATURE * signature, const char * name) { + return 0; +} + +const char * EVP_SIGNATURE_get0_name(const EVP_SIGNATURE * signature) { + return NULL; +} + +const char * EVP_SIGNATURE_get0_description(const EVP_SIGNATURE * signature) { + return NULL; +} + +void EVP_SIGNATURE_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_SIGNATURE *, void *), void * data) ; + + +int EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE * signature, void (*fn)(const char *, void *), void * data) { + return 0; +} + +const OSSL_PARAM * EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE * sig) { + return NULL; +} + +const OSSL_PARAM * EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE * sig) { + return NULL; +} + +void EVP_ASYM_CIPHER_free(EVP_ASYM_CIPHER * cipher) ; + + +int EVP_ASYM_CIPHER_up_ref(EVP_ASYM_CIPHER * cipher) { + return 0; +} + +OSSL_PROVIDER * EVP_ASYM_CIPHER_get0_provider(const EVP_ASYM_CIPHER * cipher) { + return NULL; +} + +EVP_ASYM_CIPHER * EVP_ASYM_CIPHER_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { + return NULL; +} + +int EVP_ASYM_CIPHER_is_a(const EVP_ASYM_CIPHER * cipher, const char * name) { + return 0; +} + +const char * EVP_ASYM_CIPHER_get0_name(const EVP_ASYM_CIPHER * cipher) { + return NULL; +} + +const char * EVP_ASYM_CIPHER_get0_description(const EVP_ASYM_CIPHER * cipher) { + return NULL; +} + +void EVP_ASYM_CIPHER_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_ASYM_CIPHER *, void *), void * arg) ; + + +int EVP_ASYM_CIPHER_names_do_all(const EVP_ASYM_CIPHER * cipher, void (*fn)(const char *, void *), void * data) { + return 0; +} + +const OSSL_PARAM * EVP_ASYM_CIPHER_gettable_ctx_params(const EVP_ASYM_CIPHER * ciph) { + return NULL; +} + +const OSSL_PARAM * EVP_ASYM_CIPHER_settable_ctx_params(const EVP_ASYM_CIPHER * ciph) { + return NULL; +} + +void EVP_KEM_free(EVP_KEM * wrap) ; + + +int EVP_KEM_up_ref(EVP_KEM * wrap) { + return 0; +} + +OSSL_PROVIDER * EVP_KEM_get0_provider(const EVP_KEM * wrap) { + return NULL; +} + +EVP_KEM * EVP_KEM_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { + return NULL; +} + +int EVP_KEM_is_a(const EVP_KEM * wrap, const char * name) { + return 0; +} + +const char * EVP_KEM_get0_name(const EVP_KEM * wrap) { + return NULL; +} + +const char * EVP_KEM_get0_description(const EVP_KEM * wrap) { + return NULL; +} + +void EVP_KEM_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_KEM *, void *), void * arg) ; + + +int EVP_KEM_names_do_all(const EVP_KEM * wrap, void (*fn)(const char *, void *), void * data) { + return 0; +} + +const OSSL_PARAM * EVP_KEM_gettable_ctx_params(const EVP_KEM * kem) { + return NULL; +} + +const OSSL_PARAM * EVP_KEM_settable_ctx_params(const EVP_KEM * kem) { + return NULL; +} + +int EVP_PKEY_sign_init(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_sign_init_ex(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_sign_init_ex2(EVP_PKEY_CTX * ctx, EVP_SIGNATURE * algo, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_sign(EVP_PKEY_CTX * ctx, unsigned char * sig, size_t * siglen, const unsigned char * tbs, size_t tbslen) { + return 0; +} + +int EVP_PKEY_sign_message_init(EVP_PKEY_CTX * ctx, EVP_SIGNATURE * algo, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_sign_message_update(EVP_PKEY_CTX * ctx, const unsigned char * in, size_t inlen) { + return 0; +} + +int EVP_PKEY_sign_message_final(EVP_PKEY_CTX * ctx, unsigned char * sig, size_t * siglen) { + return 0; +} + +int EVP_PKEY_verify_init(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_verify_init_ex(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_verify_init_ex2(EVP_PKEY_CTX * ctx, EVP_SIGNATURE * algo, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_verify(EVP_PKEY_CTX * ctx, const unsigned char * sig, size_t siglen, const unsigned char * tbs, size_t tbslen) { + return 0; +} + +int EVP_PKEY_verify_message_init(EVP_PKEY_CTX * ctx, EVP_SIGNATURE * algo, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_verify_message_update(EVP_PKEY_CTX * ctx, const unsigned char * in, size_t inlen) { + return 0; +} + +int EVP_PKEY_verify_message_final(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_verify_recover_init_ex(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_verify_recover_init_ex2(EVP_PKEY_CTX * ctx, EVP_SIGNATURE * algo, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_verify_recover(EVP_PKEY_CTX * ctx, unsigned char * rout, size_t * routlen, const unsigned char * sig, size_t siglen) { + return 0; +} + +int EVP_PKEY_encrypt_init(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_encrypt_init_ex(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_encrypt(EVP_PKEY_CTX * ctx, unsigned char * out, size_t * outlen, const unsigned char * in, size_t inlen) { + return 0; +} + +int EVP_PKEY_decrypt_init(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_decrypt_init_ex(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_decrypt(EVP_PKEY_CTX * ctx, unsigned char * out, size_t * outlen, const unsigned char * in, size_t inlen) { + return 0; +} + +int EVP_PKEY_derive_init(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX * ctx, EVP_PKEY * peer, int validate_peer) { + return 0; +} + +int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX * ctx, EVP_PKEY * peer) { + return 0; +} + +int EVP_PKEY_derive(EVP_PKEY_CTX * ctx, unsigned char * key, size_t * keylen) { + return 0; +} + +int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_auth_encapsulate_init(EVP_PKEY_CTX * ctx, EVP_PKEY * authpriv, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_encapsulate(EVP_PKEY_CTX * ctx, unsigned char * wrappedkey, size_t * wrappedkeylen, unsigned char * genkey, size_t * genkeylen) { + return 0; +} + +int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_auth_decapsulate_init(EVP_PKEY_CTX * ctx, EVP_PKEY * authpub, const OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_decapsulate(EVP_PKEY_CTX * ctx, unsigned char * unwrapped, size_t * unwrappedlen, const unsigned char * wrapped, size_t wrappedlen) { + return 0; +} + +int EVP_PKEY_fromdata_init(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_fromdata(EVP_PKEY_CTX * ctx, EVP_PKEY ** ppkey, int selection, OSSL_PARAM * param) { + return 0; +} + +const OSSL_PARAM * EVP_PKEY_fromdata_settable(EVP_PKEY_CTX * ctx, int selection) { + return NULL; +} + +int EVP_PKEY_todata(const EVP_PKEY * pkey, int selection, OSSL_PARAM ** params) { + return 0; +} + +int EVP_PKEY_export(const EVP_PKEY * pkey, int selection, OSSL_CALLBACK * export_cb, void * export_cbarg) { + return 0; +} + +const OSSL_PARAM * EVP_PKEY_gettable_params(const EVP_PKEY * pkey) { + return NULL; +} + +int EVP_PKEY_get_params(const EVP_PKEY * pkey, OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_get_int_param(const EVP_PKEY * pkey, const char * key_name, int * out) { + return 0; +} + +int EVP_PKEY_get_size_t_param(const EVP_PKEY * pkey, const char * key_name, size_t * out) { + return 0; +} + +int EVP_PKEY_get_bn_param(const EVP_PKEY * pkey, const char * key_name, BIGNUM ** bn) { + return 0; +} + +int EVP_PKEY_get_utf8_string_param(const EVP_PKEY * pkey, const char * key_name, char * str, size_t max_buf_sz, size_t * out_sz) { + return 0; +} + +int EVP_PKEY_get_octet_string_param(const EVP_PKEY * pkey, const char * key_name, unsigned char * buf, size_t max_buf_sz, size_t * out_sz) { + return 0; +} + +const OSSL_PARAM * EVP_PKEY_settable_params(const EVP_PKEY * pkey) { + return NULL; +} + +int EVP_PKEY_set_params(EVP_PKEY * pkey, OSSL_PARAM * params) { + return 0; +} + +int EVP_PKEY_set_int_param(EVP_PKEY * pkey, const char * key_name, int in) { + return 0; +} + +int EVP_PKEY_set_size_t_param(EVP_PKEY * pkey, const char * key_name, size_t in) { + return 0; +} + +int EVP_PKEY_set_bn_param(EVP_PKEY * pkey, const char * key_name, const BIGNUM * bn) { + return 0; +} + +int EVP_PKEY_set_utf8_string_param(EVP_PKEY * pkey, const char * key_name, const char * str) { + return 0; +} + +int EVP_PKEY_set_octet_string_param(EVP_PKEY * pkey, const char * key_name, const unsigned char * buf, size_t bsize) { + return 0; +} + +int EVP_PKEY_get_ec_point_conv_form(const EVP_PKEY * pkey) { + return 0; +} + +int EVP_PKEY_get_field_type(const EVP_PKEY * pkey) { + return 0; +} + +EVP_PKEY * EVP_PKEY_Q_keygen(OSSL_LIB_CTX * libctx, const char * propq, const char * type, ...) { + return NULL; +} + +int EVP_PKEY_paramgen_init(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_paramgen(EVP_PKEY_CTX * ctx, EVP_PKEY ** ppkey) { + return 0; +} + +int EVP_PKEY_keygen_init(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_keygen(EVP_PKEY_CTX * ctx, EVP_PKEY ** ppkey) { + return 0; +} + +int EVP_PKEY_generate(EVP_PKEY_CTX * ctx, EVP_PKEY ** ppkey) { + return 0; +} + +int EVP_PKEY_check(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_public_check(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_public_check_quick(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_param_check(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_param_check_quick(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_private_check(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_pairwise_check(EVP_PKEY_CTX * ctx) { + return 0; +} + +int EVP_PKEY_set_ex_data(EVP_PKEY * key, int idx, void * arg) { + return 0; +} + +void * EVP_PKEY_get_ex_data(const EVP_PKEY * key, int idx) { + return NULL; +} + +void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX * ctx, EVP_PKEY_gen_cb * cb) ; + + +EVP_PKEY_gen_cb * EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX * ctx) { + return NULL; +} + +int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX * ctx, int idx) { + return 0; +} + +void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD * pmeth, int (*init)(EVP_PKEY_CTX *)) ; + + +void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD * pmeth, int (*copy)(EVP_PKEY_CTX *, const EVP_PKEY_CTX *)) ; + + +void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD * pmeth, void (*cleanup)(EVP_PKEY_CTX *)) ; + + +void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD * pmeth, int (*paramgen_init)(EVP_PKEY_CTX *), int (*paramgen)(EVP_PKEY_CTX *, EVP_PKEY *)) ; + + +void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD * pmeth, int (*keygen_init)(EVP_PKEY_CTX *), int (*keygen)(EVP_PKEY_CTX *, EVP_PKEY *)) ; + + +void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD * pmeth, int (*sign_init)(EVP_PKEY_CTX *), int (*sign)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; + + +void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD * pmeth, int (*verify_init)(EVP_PKEY_CTX *), int (*verify)(EVP_PKEY_CTX *, const unsigned char *, size_t, const unsigned char *, size_t)) ; + + +void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD * pmeth, int (*verify_recover_init)(EVP_PKEY_CTX *), int (*verify_recover)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; + + +void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD * pmeth, int (*signctx_init)(EVP_PKEY_CTX *, EVP_MD_CTX *), int (*signctx)(EVP_PKEY_CTX *, unsigned char *, size_t *, EVP_MD_CTX *)) ; + + +void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD * pmeth, int (*verifyctx_init)(EVP_PKEY_CTX *, EVP_MD_CTX *), int (*verifyctx)(EVP_PKEY_CTX *, const unsigned char *, int, EVP_MD_CTX *)) ; + + +void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD * pmeth, int (*encrypt_init)(EVP_PKEY_CTX *), int (*encryptfn)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; + + +void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD * pmeth, int (*decrypt_init)(EVP_PKEY_CTX *), int (*decrypt)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; + + +void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD * pmeth, int (*derive_init)(EVP_PKEY_CTX *), int (*derive)(EVP_PKEY_CTX *, unsigned char *, size_t *)) ; + + +void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD * pmeth, int (*ctrl)(EVP_PKEY_CTX *, int, int, void *), int (*ctrl_str)(EVP_PKEY_CTX *, const char *, const char *)) ; + + +void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD * pmeth, int (*digestsign)(EVP_MD_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; + + +void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD * pmeth, int (*digestverify)(EVP_MD_CTX *, const unsigned char *, size_t, const unsigned char *, size_t)) ; + + +void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD * pmeth, int (*check)(EVP_PKEY *)) ; + + +void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD * pmeth, int (*check)(EVP_PKEY *)) ; + + +void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD * pmeth, int (*check)(EVP_PKEY *)) ; + + +void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD * pmeth, int (*digest_custom)(EVP_PKEY_CTX *, EVP_MD_CTX *)) ; + + +void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *)) ; + + +void EVP_PKEY_meth_get_copy(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *, const EVP_PKEY_CTX *)) ; + + +void EVP_PKEY_meth_get_cleanup(const EVP_PKEY_METHOD * pmeth, void (**)(EVP_PKEY_CTX *)) ; + + +void EVP_PKEY_meth_get_paramgen(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, EVP_PKEY *)) ; + + +void EVP_PKEY_meth_get_keygen(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, EVP_PKEY *)) ; + + +void EVP_PKEY_meth_get_sign(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; + + +void EVP_PKEY_meth_get_verify(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, const unsigned char *, size_t, const unsigned char *, size_t)) ; + + +void EVP_PKEY_meth_get_verify_recover(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; + + +void EVP_PKEY_meth_get_signctx(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *, EVP_MD_CTX *), int (**)(EVP_PKEY_CTX *, unsigned char *, size_t *, EVP_MD_CTX *)) ; + + +void EVP_PKEY_meth_get_verifyctx(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *, EVP_MD_CTX *), int (**)(EVP_PKEY_CTX *, const unsigned char *, int, EVP_MD_CTX *)) ; + + +void EVP_PKEY_meth_get_encrypt(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; + + +void EVP_PKEY_meth_get_decrypt(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; + + +void EVP_PKEY_meth_get_derive(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, unsigned char *, size_t *)) ; + + +void EVP_PKEY_meth_get_ctrl(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *, int, int, void *), int (**)(EVP_PKEY_CTX *, const char *, const char *)) ; + + +void EVP_PKEY_meth_get_digestsign(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_MD_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)); + +void EVP_PKEY_meth_get_digestverify(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_MD_CTX *, const unsigned char *, size_t, const unsigned char *, size_t)); + +void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY *)); + +void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY *)); + +void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY *)); + +void EVP_PKEY_meth_get_digest_custom(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *, EVP_MD_CTX *)); + +void EVP_KEYEXCH_free(EVP_KEYEXCH * exchange) ; + + +int EVP_KEYEXCH_up_ref(EVP_KEYEXCH * exchange) { + return 0; +} + +EVP_KEYEXCH * EVP_KEYEXCH_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { + return NULL; +} + +OSSL_PROVIDER * EVP_KEYEXCH_get0_provider(const EVP_KEYEXCH * exchange) { + return NULL; +} + +int EVP_KEYEXCH_is_a(const EVP_KEYEXCH * keyexch, const char * name) { + return 0; +} + +const char * EVP_KEYEXCH_get0_name(const EVP_KEYEXCH * keyexch) { + return NULL; +} + +const char * EVP_KEYEXCH_get0_description(const EVP_KEYEXCH * keyexch) { + return NULL; +} + +void EVP_KEYEXCH_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_KEYEXCH *, void *), void * data) ; + + +int EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH * keyexch, void (*fn)(const char *, void *), void * data) { + return 0; +} + +const OSSL_PARAM * EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH * keyexch) { + return NULL; +} + +const OSSL_PARAM * EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH * keyexch) { + return NULL; +} + +void EVP_add_alg_module(void) ; + + +int EVP_PKEY_CTX_set_group_name(EVP_PKEY_CTX * ctx, const char * name) { + return 0; +} + +int EVP_PKEY_CTX_get_group_name(EVP_PKEY_CTX * ctx, char * name, size_t namelen) { + return 0; +} + +int EVP_PKEY_get_group_name(const EVP_PKEY * pkey, char * name, size_t name_sz, size_t * gname_len) { + return 0; +} + +OSSL_LIB_CTX * EVP_PKEY_CTX_get0_libctx(EVP_PKEY_CTX * ctx) { + return NULL; +} + +const char * EVP_PKEY_CTX_get0_propq(const EVP_PKEY_CTX * ctx) { + return NULL; +} + +const OSSL_PROVIDER * EVP_PKEY_CTX_get0_provider(const EVP_PKEY_CTX * ctx) { + return NULL; +} + +int EVP_SKEY_is_a(const EVP_SKEY * skey, const char * name) { + return 0; +} + +EVP_SKEY * EVP_SKEY_import(OSSL_LIB_CTX * libctx, const char * skeymgmtname, const char * propquery, int selection, const OSSL_PARAM * params) { + return NULL; +} + +EVP_SKEY * EVP_SKEY_generate(OSSL_LIB_CTX * libctx, const char * skeymgmtname, const char * propquery, const OSSL_PARAM * params) { + return NULL; +} + +EVP_SKEY * EVP_SKEY_import_raw_key(OSSL_LIB_CTX * libctx, const char * skeymgmtname, unsigned char * key, size_t keylen, const char * propquery) { + return NULL; +} + +int EVP_SKEY_get0_raw_key(const EVP_SKEY * skey, const unsigned char ** key, size_t * len) { + return 0; +} + +const char * EVP_SKEY_get0_key_id(const EVP_SKEY * skey) { + return NULL; +} + +int EVP_SKEY_export(const EVP_SKEY * skey, int selection, OSSL_CALLBACK * export_cb, void * export_cbarg) { + return 0; +} + +int EVP_SKEY_up_ref(EVP_SKEY * skey) { + return 0; +} + +void EVP_SKEY_free(EVP_SKEY * skey) ; + + +const char * EVP_SKEY_get0_skeymgmt_name(const EVP_SKEY * skey) { + return NULL; +} + +const char * EVP_SKEY_get0_provider_name(const EVP_SKEY * skey) { + return NULL; +} + +EVP_SKEY * EVP_SKEY_to_provider(EVP_SKEY * skey, OSSL_LIB_CTX * libctx, OSSL_PROVIDER * prov, const char * propquery) { + return NULL; +} + +#endif /* OSSL_EVP_H */ diff --git a/cpp/ql/test/experimental/stubs/openssl/evp_stubs.h b/cpp/ql/test/experimental/stubs/openssl/evp_stubs.h deleted file mode 100644 index 4bc1af0b15d6..000000000000 --- a/cpp/ql/test/experimental/stubs/openssl/evp_stubs.h +++ /dev/null @@ -1,4986 +0,0 @@ -#ifndef OSSL_EVP_H -#define OSSL_EVP_H - -// Common defines and integer types. -#define NULL 0 - -# define EVP_CTRL_INIT 0x0 -# define EVP_CTRL_SET_KEY_LENGTH 0x1 -# define EVP_CTRL_GET_RC2_KEY_BITS 0x2 -# define EVP_CTRL_SET_RC2_KEY_BITS 0x3 -# define EVP_CTRL_GET_RC5_ROUNDS 0x4 -# define EVP_CTRL_SET_RC5_ROUNDS 0x5 -# define EVP_CTRL_RAND_KEY 0x6 -# define EVP_CTRL_PBE_PRF_NID 0x7 -# define EVP_CTRL_COPY 0x8 -# define EVP_CTRL_AEAD_SET_IVLEN 0x9 -# define EVP_CTRL_AEAD_GET_TAG 0x10 -# define EVP_CTRL_AEAD_SET_TAG 0x11 -# define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 -# define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN -# define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG -# define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG -# define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED -# define EVP_CTRL_GCM_IV_GEN 0x13 -# define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN -# define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG -# define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG -# define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED -# define EVP_CTRL_CCM_SET_L 0x14 -# define EVP_CTRL_CCM_SET_MSGLEN 0x15 - -typedef unsigned long size_t; - -typedef unsigned char uint8_t; -typedef unsigned int uint32_t; -typedef unsigned long long uint64_t; - -// Type aliases. -typedef int OSSL_PROVIDER; - -typedef int OSSL_FUNC_keymgmt_import_fn; - -typedef int OSSL_FUNC_digest_get_ctx_params_fn; - -typedef int OSSL_FUNC_cipher_settable_ctx_params_fn; - -typedef int ASN1_STRING; - -typedef int OSSL_FUNC_mac_set_ctx_params_fn; - -typedef int OSSL_FUNC_signature_digest_verify_update_fn; - -typedef int OSSL_FUNC_provider_get_reason_strings_fn; - -typedef int OSSL_FUNC_core_get_params_fn; - -typedef int OSSL_FUNC_rand_get_seed_fn; - -typedef int OSSL_FUNC_rand_instantiate_fn; - -typedef int OSSL_FUNC_keymgmt_gen_get_params_fn; - -typedef int EVP_PKEY_gen_cb; - -typedef int OSSL_FUNC_provider_unquery_operation_fn; - -typedef int OSSL_FUNC_cleanup_user_entropy_fn; - -typedef int OSSL_FUNC_asym_cipher_decrypt_fn; - -typedef int OSSL_FUNC_cipher_pipeline_decrypt_init_fn; - -typedef int X509_PUBKEY; - -typedef int OSSL_FUNC_BIO_puts_fn; - -typedef int OSSL_FUNC_signature_verify_fn; - -typedef int OSSL_FUNC_encoder_gettable_params_fn; - -typedef int OSSL_FUNC_keymgmt_validate_fn; - -typedef int EVP_PBE_KEYGEN_EX; - -typedef int OSSL_FUNC_keyexch_dupctx_fn; - -typedef int OSSL_FUNC_kdf_newctx_fn; - -typedef int OSSL_FUNC_signature_digest_verify_final_fn; - -typedef int OSSL_FUNC_signature_set_ctx_params_fn; - -typedef int OSSL_FUNC_rand_reseed_fn; - -typedef int OSSL_FUNC_SSL_QUIC_TLS_crypto_release_rcd_fn; - -typedef int OSSL_FUNC_store_open_fn; - -typedef int OSSL_FUNC_encoder_newctx_fn; - -typedef int EVP_KEYMGMT; - -typedef int OSSL_FUNC_core_vset_error_fn; - -typedef int EVP_KEYEXCH; - -typedef int OSSL_FUNC_signature_gettable_ctx_md_params_fn; - -typedef int OSSL_FUNC_CRYPTO_secure_free_fn; - -typedef int OSSL_FUNC_keymgmt_import_types_fn; - -typedef int OSSL_FUNC_signature_sign_message_update_fn; - -typedef int OSSL_FUNC_keymgmt_gen_gettable_params_fn; - -typedef int OSSL_FUNC_cipher_update_fn; - -typedef int OSSL_FUNC_mac_newctx_fn; - -typedef int OSSL_FUNC_keymgmt_set_params_fn; - -typedef int X509_ALGOR; - -typedef int OSSL_FUNC_signature_get_ctx_params_fn; - -typedef int ASN1_ITEM; - -typedef int EVP_SIGNATURE; - -typedef int OSSL_FUNC_CRYPTO_realloc_fn; - -typedef int OSSL_FUNC_BIO_new_file_fn; - -typedef int OSSL_FUNC_signature_sign_message_final_fn; - -typedef int OSSL_FUNC_cipher_newctx_fn; - -typedef int OSSL_FUNC_rand_nonce_fn; - -typedef int EVP_MD; - -typedef int OSSL_FUNC_kdf_reset_fn; - -typedef int OSSL_FUNC_keyexch_settable_ctx_params_fn; - -typedef int OSSL_FUNC_store_export_object_fn; - -typedef int OSSL_FUNC_CRYPTO_secure_allocated_fn; - -typedef int OSSL_FUNC_cipher_pipeline_update_fn; - -typedef int OSSL_FUNC_keyexch_freectx_fn; - -typedef int OSSL_FUNC_kdf_gettable_params_fn; - -typedef int OSSL_FUNC_rand_set_ctx_params_fn; - -typedef int OSSL_FUNC_signature_verify_message_init_fn; - -typedef int OSSL_FUNC_keymgmt_free_fn; - -typedef int OSSL_FUNC_rand_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_signature_digest_sign_update_fn; - -typedef int OSSL_FUNC_keymgmt_has_fn; - -typedef int OSSL_FUNC_kdf_get_ctx_params_fn; - -typedef int OSSL_FUNC_provider_get0_dispatch_fn; - -typedef int OSSL_FUNC_signature_verify_message_update_fn; - -typedef int OSSL_FUNC_rand_lock_fn; - -typedef int EVP_KEM; - -typedef int OSSL_FUNC_BIO_read_ex_fn; - -typedef int X509_SIG_INFO; - -typedef int OSSL_FUNC_keymgmt_import_types_ex_fn; - -typedef int OSSL_FUNC_encoder_free_object_fn; - -typedef int OSSL_FUNC_asym_cipher_decrypt_init_fn; - -typedef int OSSL_FUNC_SSL_QUIC_TLS_alert_fn; - -typedef int OSSL_FUNC_cipher_get_params_fn; - -typedef int OSSL_FUNC_get_nonce_fn; - -typedef int ASN1_OBJECT; - -typedef int OSSL_LIB_CTX; - -typedef int OSSL_FUNC_keymgmt_gen_set_params_fn; - -typedef int OSSL_FUNC_provider_deregister_child_cb_fn; - -typedef int OSSL_PARAM; - -typedef int OSSL_FUNC_decoder_gettable_params_fn; - -typedef int OSSL_FUNC_cipher_pipeline_final_fn; - -typedef int OSSL_FUNC_signature_freectx_fn; - -typedef int EVP_PKEY_METHOD; - -typedef int OSSL_FUNC_CRYPTO_zalloc_fn; - -typedef int OSSL_FUNC_keymgmt_query_operation_name_fn; - -typedef int OSSL_FUNC_core_set_error_mark_fn; - -typedef int OSSL_FUNC_asym_cipher_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_CRYPTO_free_fn; - -typedef int OSSL_FUNC_indicator_cb_fn; - -typedef int OSSL_FUNC_kdf_freectx_fn; - -typedef int ENGINE; - -typedef int EVP_PKEY; - -typedef int PKCS8_PRIV_KEY_INFO; - -typedef int OSSL_FUNC_signature_digest_verify_fn; - -typedef int OSSL_FUNC_mac_final_fn; - -typedef int OSSL_FUNC_core_pop_error_to_mark_fn; - -typedef int OSSL_FUNC_signature_verify_recover_fn; - -typedef int OSSL_FUNC_keymgmt_gen_settable_params_fn; - -typedef int OSSL_FUNC_provider_self_test_fn; - -typedef int OSSL_FUNC_digest_gettable_params_fn; - -typedef int OSSL_FUNC_CRYPTO_secure_malloc_fn; - -typedef int OSSL_FUNC_keymgmt_get_params_fn; - -typedef int OSSL_FUNC_mac_freectx_fn; - -typedef int OSSL_FUNC_cleanup_user_nonce_fn; - -typedef int EVP_SKEYMGMT; - -typedef int OSSL_FUNC_core_set_error_debug_fn; - -typedef int OSSL_FUNC_cipher_decrypt_skey_init_fn; - -typedef int OSSL_FUNC_BIO_new_membuf_fn; - -typedef int OSSL_FUNC_provider_query_operation_fn; - -typedef int OSSL_FUNC_signature_set_ctx_md_params_fn; - -typedef int OSSL_FUNC_encoder_does_selection_fn; - -typedef int OSSL_FUNC_kem_get_ctx_params_fn; - -typedef int OSSL_FUNC_cipher_gettable_params_fn; - -typedef int OSSL_FUNC_digest_final_fn; - -typedef int OSSL_FUNC_rand_generate_fn; - -typedef int EVP_PKEY_CTX; - -typedef int OSSL_FUNC_kem_decapsulate_fn; - -typedef int OSSL_FUNC_skeymgmt_generate_fn; - -typedef int OSSL_FUNC_asym_cipher_encrypt_init_fn; - -typedef int OSSL_FUNC_kdf_get_params_fn; - -typedef int OSSL_FUNC_cipher_encrypt_skey_init_fn; - -typedef int OSSL_FUNC_encoder_get_params_fn; - -typedef int OSSL_FUNC_asym_cipher_freectx_fn; - -typedef int OSSL_FUNC_CRYPTO_secure_clear_free_fn; - -typedef int OSSL_FUNC_store_load_fn; - -typedef int OSSL_FUNC_digest_update_fn; - -typedef int OSSL_FUNC_provider_up_ref_fn; - -typedef int OSSL_FUNC_SSL_QUIC_TLS_crypto_recv_rcd_fn; - -typedef int OSSL_FUNC_signature_digest_sign_init_fn; - -typedef int OSSL_FUNC_keymgmt_load_fn; - -typedef int OSSL_FUNC_keyexch_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_rand_get_params_fn; - -typedef int OSSL_FUNC_rand_verify_zeroization_fn; - -typedef int OSSL_FUNC_skeymgmt_export_fn; - -typedef int OSSL_FUNC_BIO_free_fn; - -typedef int OSSL_FUNC_rand_settable_ctx_params_fn; - -typedef int OSSL_FUNC_cleanup_entropy_fn; - -typedef int OSSL_FUNC_encoder_settable_ctx_params_fn; - -typedef int OSSL_DISPATCH; - -typedef int OSSL_FUNC_OPENSSL_cleanse_fn; - -typedef int OSSL_FUNC_digest_dupctx_fn; - -typedef int OSSL_FUNC_kem_decapsulate_init_fn; - -typedef int EVP_MAC_CTX; - -typedef int OSSL_FUNC_digest_squeeze_fn; - -typedef int OSSL_FUNC_keyexch_set_ctx_params_fn; - -typedef int EVP_ENCODE_CTX; - -typedef int OSSL_FUNC_BIO_vsnprintf_fn; - -typedef int OSSL_FUNC_mac_dupctx_fn; - -typedef int OSSL_FUNC_kdf_derive_fn; - -typedef int OSSL_FUNC_encoder_set_ctx_params_fn; - -typedef int OSSL_FUNC_rand_freectx_fn; - -typedef int OSSL_FUNC_BIO_ctrl_fn; - -typedef int EVP_CIPHER; - -typedef int OSSL_FUNC_cipher_set_ctx_params_fn; - -typedef int OSSL_FUNC_rand_enable_locking_fn; - -typedef int OSSL_FUNC_keyexch_newctx_fn; - -typedef int OSSL_FUNC_signature_settable_ctx_params_fn; - -typedef int OSSL_FUNC_provider_gettable_params_fn; - -typedef int OSSL_FUNC_keymgmt_gen_set_template_fn; - -typedef int OSSL_FUNC_keymgmt_settable_params_fn; - -typedef int OSSL_FUNC_keymgmt_gen_cleanup_fn; - -typedef int OSSL_FUNC_kdf_set_ctx_params_fn; - -typedef int OSSL_FUNC_rand_unlock_fn; - -typedef int OSSL_FUNC_SSL_QUIC_TLS_yield_secret_fn; - -typedef int OSSL_FUNC_signature_digest_sign_fn; - -typedef int OSSL_FUNC_keymgmt_gettable_params_fn; - -typedef int OSSL_FUNC_kem_auth_encapsulate_init_fn; - -typedef int OSSL_FUNC_kem_encapsulate_fn; - -typedef int OSSL_FUNC_CRYPTO_secure_zalloc_fn; - -typedef int OSSL_FUNC_rand_get_ctx_params_fn; - -typedef int OSSL_FUNC_store_delete_fn; - -typedef int OSSL_FUNC_cipher_pipeline_encrypt_init_fn; - -typedef int OSSL_FUNC_cipher_dupctx_fn; - -typedef int OSSL_FUNC_store_settable_ctx_params_fn; - -typedef int FILE; - -typedef int OSSL_FUNC_provider_teardown_fn; - -typedef int OSSL_FUNC_kdf_dupctx_fn; - -typedef int OSSL_FUNC_decoder_newctx_fn; - -typedef int ASN1_BIT_STRING; - -typedef int OSSL_FUNC_core_clear_last_error_mark_fn; - -typedef int OSSL_FUNC_core_obj_create_fn; - -typedef int OSSL_FUNC_keyexch_init_fn; - -typedef int OSSL_FUNC_kem_gettable_ctx_params_fn; - -typedef int EVP_MD_CTX; - -typedef int OSSL_FUNC_decoder_decode_fn; - -typedef int OSSL_FUNC_mac_gettable_params_fn; - -typedef int OSSL_FUNC_kem_set_ctx_params_fn; - -typedef int OSSL_FUNC_encoder_encode_fn; - -typedef int OSSL_FUNC_core_gettable_params_fn; - -typedef int OSSL_FUNC_mac_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_get_user_entropy_fn; - -typedef int OSSL_FUNC_kdf_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_keymgmt_gen_fn; - -typedef int OSSL_FUNC_keyexch_set_peer_fn; - -typedef int OSSL_FUNC_core_obj_add_sigid_fn; - -typedef int OSSL_FUNC_keymgmt_export_types_ex_fn; - -typedef int OSSL_FUNC_kem_newctx_fn; - -typedef int OSSL_FUNC_signature_sign_init_fn; - -typedef int OSSL_FUNC_asym_cipher_get_ctx_params_fn; - -typedef int OSSL_FUNC_CRYPTO_clear_free_fn; - -typedef int OSSL_FUNC_encoder_freectx_fn; - -typedef int OSSL_FUNC_kem_freectx_fn; - -typedef int OSSL_FUNC_provider_get0_provider_ctx_fn; - -typedef int OSSL_FUNC_digest_copyctx_fn; - -typedef int OSSL_FUNC_provider_name_fn; - -typedef int OSSL_FUNC_cipher_decrypt_init_fn; - -typedef int EVP_PKEY_ASN1_METHOD; - -typedef int OSSL_FUNC_keyexch_get_ctx_params_fn; - -typedef int OSSL_FUNC_store_set_ctx_params_fn; - -typedef int ASN1_TYPE; - -typedef int OSSL_FUNC_skeymgmt_imp_settable_params_fn; - -typedef int OSSL_FUNC_cipher_get_ctx_params_fn; - -typedef int EVP_MAC; - -typedef int OSSL_FUNC_store_attach_fn; - -typedef int OSSL_FUNC_signature_get_ctx_md_params_fn; - -typedef int OSSL_FUNC_encoder_import_object_fn; - -typedef int OSSL_FUNC_cleanup_nonce_fn; - -typedef int OSSL_FUNC_kem_auth_decapsulate_init_fn; - -typedef int OSSL_CALLBACK; - -typedef int OSSL_FUNC_skeymgmt_import_fn; - -typedef int OSSL_FUNC_cipher_freectx_fn; - -typedef int OSSL_FUNC_asym_cipher_dupctx_fn; - -typedef int OSSL_FUNC_SSL_QUIC_TLS_crypto_send_fn; - -typedef int OSSL_FUNC_CRYPTO_clear_realloc_fn; - -typedef int OSSL_FUNC_signature_verify_recover_init_fn; - -typedef int OSSL_FUNC_provider_free_fn; - -typedef int EVP_RAND; - -typedef int OSSL_FUNC_digest_newctx_fn; - -typedef int OSSL_FUNC_cipher_final_fn; - -typedef int OSSL_FUNC_keymgmt_new_fn; - -typedef int EVP_CIPHER_CTX; - -typedef int OSSL_FUNC_decoder_does_selection_fn; - -typedef int OSSL_FUNC_signature_digest_verify_init_fn; - -typedef int OSSL_FUNC_digest_set_ctx_params_fn; - -typedef int OSSL_FUNC_rand_newctx_fn; - -typedef int OSSL_FUNC_BIO_vprintf_fn; - -typedef int OSSL_FUNC_keymgmt_gen_init_fn; - -typedef int EVP_RAND_CTX; - -typedef int OSSL_FUNC_store_close_fn; - -typedef int OSSL_FUNC_asym_cipher_encrypt_fn; - -typedef int OSSL_FUNC_mac_get_params_fn; - -typedef int OSSL_FUNC_get_entropy_fn; - -typedef int OSSL_FUNC_digest_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_SSL_QUIC_TLS_got_transport_params_fn; - -typedef int OSSL_FUNC_skeymgmt_free_fn; - -typedef int OSSL_FUNC_mac_settable_ctx_params_fn; - -typedef int OSSL_FUNC_decoder_export_object_fn; - -typedef int OSSL_FUNC_rand_clear_seed_fn; - -typedef int OSSL_FUNC_mac_get_ctx_params_fn; - -typedef int OSSL_FUNC_digest_digest_fn; - -typedef int EVP_SKEY; - -typedef int OSSL_FUNC_cipher_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_CRYPTO_malloc_fn; - -typedef int OSSL_FUNC_asym_cipher_settable_ctx_params_fn; - -typedef int OSSL_FUNC_signature_dupctx_fn; - -typedef int OSSL_FUNC_BIO_write_ex_fn; - -typedef int OSSL_FUNC_rand_set_callbacks_fn; - -typedef int OSSL_FUNC_keymgmt_match_fn; - -typedef int OSSL_FUNC_signature_digest_sign_final_fn; - -typedef int OSSL_FUNC_provider_get_params_fn; - -typedef int OSSL_FUNC_BIO_gets_fn; - -typedef int OSSL_FUNC_cipher_encrypt_init_fn; - -typedef int OSSL_FUNC_signature_verify_message_final_fn; - -typedef int BIGNUM; - -typedef int OSSL_FUNC_digest_freectx_fn; - -typedef int OSSL_FUNC_asym_cipher_set_ctx_params_fn; - -typedef int OSSL_FUNC_signature_gettable_ctx_params_fn; - -typedef int BIO; - -typedef int OSSL_FUNC_digest_get_params_fn; - -typedef int OSSL_FUNC_skeymgmt_get_key_id_fn; - -typedef int OSSL_FUNC_rand_uninstantiate_fn; - -typedef int OSSL_FUNC_decoder_get_params_fn; - -typedef int OSSL_FUNC_signature_newctx_fn; - -typedef int OSSL_FUNC_signature_sign_fn; - -typedef int OSSL_FUNC_decoder_set_ctx_params_fn; - -typedef int OSSL_FUNC_kem_dupctx_fn; - -typedef int OSSL_FUNC_get_user_nonce_fn; - -typedef int OSSL_FUNC_mac_init_skey_fn; - -typedef int ASN1_PCTX; - -typedef int OSSL_FUNC_provider_get_capabilities_fn; - -typedef int OSSL_FUNC_provider_register_child_cb_fn; - -typedef int OSSL_FUNC_kem_settable_ctx_params_fn; - -typedef int OSSL_FUNC_signature_query_key_types_fn; - -typedef int OSSL_FUNC_signature_settable_ctx_md_params_fn; - -typedef int OSSL_FUNC_asym_cipher_newctx_fn; - -typedef int OSSL_FUNC_store_open_ex_fn; - -typedef int OSSL_FUNC_keyexch_derive_fn; - -typedef int OSSL_FUNC_kdf_settable_ctx_params_fn; - -typedef int OSSL_FUNC_skeymgmt_gen_settable_params_fn; - -typedef int OSSL_FUNC_digest_settable_ctx_params_fn; - -typedef int OSSL_FUNC_kem_encapsulate_init_fn; - -typedef int OSSL_FUNC_core_new_error_fn; - -typedef int OSSL_FUNC_BIO_up_ref_fn; - -typedef int OSSL_FUNC_self_test_cb_fn; - -typedef int OSSL_FUNC_keymgmt_export_types_fn; - -typedef int OSSL_FUNC_core_get_libctx_fn; - -typedef int OSSL_FUNC_digest_init_fn; - -typedef int EVP_ASYM_CIPHER; - -typedef int OSSL_FUNC_decoder_settable_ctx_params_fn; - -typedef int OSSL_FUNC_signature_sign_message_init_fn; - -typedef int OSSL_FUNC_rand_gettable_params_fn; - -typedef int OSSL_FUNC_mac_update_fn; - -typedef int OSSL_FUNC_keymgmt_export_fn; - -typedef int OSSL_FUNC_provider_random_bytes_fn; - -typedef int OSSL_FUNC_decoder_freectx_fn; - -typedef int OSSL_FUNC_mac_init_fn; - -typedef int OSSL_FUNC_store_eof_fn; - -typedef int OSSL_FUNC_signature_verify_init_fn; - -typedef int EVP_PBE_KEYGEN; - -typedef int OSSL_FUNC_core_thread_start_fn; - -typedef int OSSL_FUNC_cipher_cipher_fn; - -typedef int OSSL_FUNC_keymgmt_dup_fn; - -// Function stubs. -OSSL_FUNC_core_gettable_params_fn * OSSL_FUNC_core_gettable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_core_get_params_fn * OSSL_FUNC_core_get_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_core_thread_start_fn * OSSL_FUNC_core_thread_start(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_core_get_libctx_fn * OSSL_FUNC_core_get_libctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_core_new_error_fn * OSSL_FUNC_core_new_error(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_core_set_error_debug_fn * OSSL_FUNC_core_set_error_debug(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_core_vset_error_fn * OSSL_FUNC_core_vset_error(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_core_set_error_mark_fn * OSSL_FUNC_core_set_error_mark(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_core_clear_last_error_mark_fn * OSSL_FUNC_core_clear_last_error_mark(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_core_pop_error_to_mark_fn * OSSL_FUNC_core_pop_error_to_mark(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_core_obj_add_sigid_fn * OSSL_FUNC_core_obj_add_sigid(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_core_obj_create_fn * OSSL_FUNC_core_obj_create(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_CRYPTO_malloc_fn * OSSL_FUNC_CRYPTO_malloc(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_CRYPTO_zalloc_fn * OSSL_FUNC_CRYPTO_zalloc(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_CRYPTO_free_fn * OSSL_FUNC_CRYPTO_free(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_CRYPTO_clear_free_fn * OSSL_FUNC_CRYPTO_clear_free(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_CRYPTO_realloc_fn * OSSL_FUNC_CRYPTO_realloc(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_CRYPTO_clear_realloc_fn * OSSL_FUNC_CRYPTO_clear_realloc(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_CRYPTO_secure_malloc_fn * OSSL_FUNC_CRYPTO_secure_malloc(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_CRYPTO_secure_zalloc_fn * OSSL_FUNC_CRYPTO_secure_zalloc(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_CRYPTO_secure_free_fn * OSSL_FUNC_CRYPTO_secure_free(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_CRYPTO_secure_clear_free_fn * OSSL_FUNC_CRYPTO_secure_clear_free(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_CRYPTO_secure_allocated_fn * OSSL_FUNC_CRYPTO_secure_allocated(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_OPENSSL_cleanse_fn * OSSL_FUNC_OPENSSL_cleanse(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_BIO_new_file_fn * OSSL_FUNC_BIO_new_file(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_BIO_new_membuf_fn * OSSL_FUNC_BIO_new_membuf(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_BIO_read_ex_fn * OSSL_FUNC_BIO_read_ex(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_BIO_write_ex_fn * OSSL_FUNC_BIO_write_ex(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_BIO_gets_fn * OSSL_FUNC_BIO_gets(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_BIO_puts_fn * OSSL_FUNC_BIO_puts(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_BIO_up_ref_fn * OSSL_FUNC_BIO_up_ref(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_BIO_free_fn * OSSL_FUNC_BIO_free(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_BIO_vprintf_fn * OSSL_FUNC_BIO_vprintf(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_BIO_vsnprintf_fn * OSSL_FUNC_BIO_vsnprintf(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_BIO_ctrl_fn * OSSL_FUNC_BIO_ctrl(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_indicator_cb_fn * OSSL_FUNC_indicator_cb(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_self_test_cb_fn * OSSL_FUNC_self_test_cb(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_get_entropy_fn * OSSL_FUNC_get_entropy(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_get_user_entropy_fn * OSSL_FUNC_get_user_entropy(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cleanup_entropy_fn * OSSL_FUNC_cleanup_entropy(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cleanup_user_entropy_fn * OSSL_FUNC_cleanup_user_entropy(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_get_nonce_fn * OSSL_FUNC_get_nonce(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_get_user_nonce_fn * OSSL_FUNC_get_user_nonce(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cleanup_nonce_fn * OSSL_FUNC_cleanup_nonce(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cleanup_user_nonce_fn * OSSL_FUNC_cleanup_user_nonce(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_register_child_cb_fn * OSSL_FUNC_provider_register_child_cb(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_deregister_child_cb_fn * OSSL_FUNC_provider_deregister_child_cb(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_name_fn * OSSL_FUNC_provider_name(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_get0_provider_ctx_fn * OSSL_FUNC_provider_get0_provider_ctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_get0_dispatch_fn * OSSL_FUNC_provider_get0_dispatch(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_up_ref_fn * OSSL_FUNC_provider_up_ref(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_free_fn * OSSL_FUNC_provider_free(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_teardown_fn * OSSL_FUNC_provider_teardown(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_gettable_params_fn * OSSL_FUNC_provider_gettable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_get_params_fn * OSSL_FUNC_provider_get_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_query_operation_fn * OSSL_FUNC_provider_query_operation(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_unquery_operation_fn * OSSL_FUNC_provider_unquery_operation(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_get_reason_strings_fn * OSSL_FUNC_provider_get_reason_strings(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_get_capabilities_fn * OSSL_FUNC_provider_get_capabilities(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_self_test_fn * OSSL_FUNC_provider_self_test(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_provider_random_bytes_fn * OSSL_FUNC_provider_random_bytes(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_SSL_QUIC_TLS_crypto_send_fn * OSSL_FUNC_SSL_QUIC_TLS_crypto_send(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_SSL_QUIC_TLS_crypto_recv_rcd_fn * OSSL_FUNC_SSL_QUIC_TLS_crypto_recv_rcd(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_SSL_QUIC_TLS_crypto_release_rcd_fn * OSSL_FUNC_SSL_QUIC_TLS_crypto_release_rcd(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_SSL_QUIC_TLS_yield_secret_fn * OSSL_FUNC_SSL_QUIC_TLS_yield_secret(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_SSL_QUIC_TLS_got_transport_params_fn * OSSL_FUNC_SSL_QUIC_TLS_got_transport_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_SSL_QUIC_TLS_alert_fn * OSSL_FUNC_SSL_QUIC_TLS_alert(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_newctx_fn * OSSL_FUNC_digest_newctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_init_fn * OSSL_FUNC_digest_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_update_fn * OSSL_FUNC_digest_update(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_final_fn * OSSL_FUNC_digest_final(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_squeeze_fn * OSSL_FUNC_digest_squeeze(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_digest_fn * OSSL_FUNC_digest_digest(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_freectx_fn * OSSL_FUNC_digest_freectx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_dupctx_fn * OSSL_FUNC_digest_dupctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_copyctx_fn * OSSL_FUNC_digest_copyctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_get_params_fn * OSSL_FUNC_digest_get_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_set_ctx_params_fn * OSSL_FUNC_digest_set_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_get_ctx_params_fn * OSSL_FUNC_digest_get_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_gettable_params_fn * OSSL_FUNC_digest_gettable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_settable_ctx_params_fn * OSSL_FUNC_digest_settable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_digest_gettable_ctx_params_fn * OSSL_FUNC_digest_gettable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_newctx_fn * OSSL_FUNC_cipher_newctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_encrypt_init_fn * OSSL_FUNC_cipher_encrypt_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_decrypt_init_fn * OSSL_FUNC_cipher_decrypt_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_update_fn * OSSL_FUNC_cipher_update(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_final_fn * OSSL_FUNC_cipher_final(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_cipher_fn * OSSL_FUNC_cipher_cipher(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_pipeline_encrypt_init_fn * OSSL_FUNC_cipher_pipeline_encrypt_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_pipeline_decrypt_init_fn * OSSL_FUNC_cipher_pipeline_decrypt_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_pipeline_update_fn * OSSL_FUNC_cipher_pipeline_update(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_pipeline_final_fn * OSSL_FUNC_cipher_pipeline_final(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_freectx_fn * OSSL_FUNC_cipher_freectx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_dupctx_fn * OSSL_FUNC_cipher_dupctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_get_params_fn * OSSL_FUNC_cipher_get_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_get_ctx_params_fn * OSSL_FUNC_cipher_get_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_set_ctx_params_fn * OSSL_FUNC_cipher_set_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_gettable_params_fn * OSSL_FUNC_cipher_gettable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_settable_ctx_params_fn * OSSL_FUNC_cipher_settable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_gettable_ctx_params_fn * OSSL_FUNC_cipher_gettable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_encrypt_skey_init_fn * OSSL_FUNC_cipher_encrypt_skey_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_cipher_decrypt_skey_init_fn * OSSL_FUNC_cipher_decrypt_skey_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_mac_newctx_fn * OSSL_FUNC_mac_newctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_mac_dupctx_fn * OSSL_FUNC_mac_dupctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_mac_freectx_fn * OSSL_FUNC_mac_freectx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_mac_init_fn * OSSL_FUNC_mac_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_mac_update_fn * OSSL_FUNC_mac_update(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_mac_final_fn * OSSL_FUNC_mac_final(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_mac_gettable_params_fn * OSSL_FUNC_mac_gettable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_mac_gettable_ctx_params_fn * OSSL_FUNC_mac_gettable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_mac_settable_ctx_params_fn * OSSL_FUNC_mac_settable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_mac_get_params_fn * OSSL_FUNC_mac_get_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_mac_get_ctx_params_fn * OSSL_FUNC_mac_get_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_mac_set_ctx_params_fn * OSSL_FUNC_mac_set_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_mac_init_skey_fn * OSSL_FUNC_mac_init_skey(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kdf_newctx_fn * OSSL_FUNC_kdf_newctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kdf_dupctx_fn * OSSL_FUNC_kdf_dupctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kdf_freectx_fn * OSSL_FUNC_kdf_freectx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kdf_reset_fn * OSSL_FUNC_kdf_reset(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kdf_derive_fn * OSSL_FUNC_kdf_derive(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kdf_gettable_params_fn * OSSL_FUNC_kdf_gettable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kdf_gettable_ctx_params_fn * OSSL_FUNC_kdf_gettable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kdf_settable_ctx_params_fn * OSSL_FUNC_kdf_settable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kdf_get_params_fn * OSSL_FUNC_kdf_get_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kdf_get_ctx_params_fn * OSSL_FUNC_kdf_get_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kdf_set_ctx_params_fn * OSSL_FUNC_kdf_set_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_newctx_fn * OSSL_FUNC_rand_newctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_freectx_fn * OSSL_FUNC_rand_freectx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_instantiate_fn * OSSL_FUNC_rand_instantiate(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_uninstantiate_fn * OSSL_FUNC_rand_uninstantiate(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_generate_fn * OSSL_FUNC_rand_generate(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_reseed_fn * OSSL_FUNC_rand_reseed(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_nonce_fn * OSSL_FUNC_rand_nonce(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_enable_locking_fn * OSSL_FUNC_rand_enable_locking(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_lock_fn * OSSL_FUNC_rand_lock(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_unlock_fn * OSSL_FUNC_rand_unlock(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_gettable_params_fn * OSSL_FUNC_rand_gettable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_gettable_ctx_params_fn * OSSL_FUNC_rand_gettable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_settable_ctx_params_fn * OSSL_FUNC_rand_settable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_get_params_fn * OSSL_FUNC_rand_get_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_get_ctx_params_fn * OSSL_FUNC_rand_get_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_set_ctx_params_fn * OSSL_FUNC_rand_set_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_set_callbacks_fn * OSSL_FUNC_rand_set_callbacks(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_verify_zeroization_fn * OSSL_FUNC_rand_verify_zeroization(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_get_seed_fn * OSSL_FUNC_rand_get_seed(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_rand_clear_seed_fn * OSSL_FUNC_rand_clear_seed(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_new_fn * OSSL_FUNC_keymgmt_new(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_gen_init_fn * OSSL_FUNC_keymgmt_gen_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_gen_set_template_fn * OSSL_FUNC_keymgmt_gen_set_template(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_gen_set_params_fn * OSSL_FUNC_keymgmt_gen_set_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_gen_settable_params_fn * OSSL_FUNC_keymgmt_gen_settable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_gen_get_params_fn * OSSL_FUNC_keymgmt_gen_get_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_gen_gettable_params_fn * OSSL_FUNC_keymgmt_gen_gettable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_gen_fn * OSSL_FUNC_keymgmt_gen(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_gen_cleanup_fn * OSSL_FUNC_keymgmt_gen_cleanup(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_load_fn * OSSL_FUNC_keymgmt_load(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_free_fn * OSSL_FUNC_keymgmt_free(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_get_params_fn * OSSL_FUNC_keymgmt_get_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_gettable_params_fn * OSSL_FUNC_keymgmt_gettable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_set_params_fn * OSSL_FUNC_keymgmt_set_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_settable_params_fn * OSSL_FUNC_keymgmt_settable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_query_operation_name_fn * OSSL_FUNC_keymgmt_query_operation_name(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_has_fn * OSSL_FUNC_keymgmt_has(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_validate_fn * OSSL_FUNC_keymgmt_validate(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_match_fn * OSSL_FUNC_keymgmt_match(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_import_fn * OSSL_FUNC_keymgmt_import(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_import_types_fn * OSSL_FUNC_keymgmt_import_types(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_export_fn * OSSL_FUNC_keymgmt_export(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_export_types_fn * OSSL_FUNC_keymgmt_export_types(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_dup_fn * OSSL_FUNC_keymgmt_dup(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_import_types_ex_fn * OSSL_FUNC_keymgmt_import_types_ex(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keymgmt_export_types_ex_fn * OSSL_FUNC_keymgmt_export_types_ex(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keyexch_newctx_fn * OSSL_FUNC_keyexch_newctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keyexch_init_fn * OSSL_FUNC_keyexch_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keyexch_derive_fn * OSSL_FUNC_keyexch_derive(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keyexch_set_peer_fn * OSSL_FUNC_keyexch_set_peer(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keyexch_freectx_fn * OSSL_FUNC_keyexch_freectx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keyexch_dupctx_fn * OSSL_FUNC_keyexch_dupctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keyexch_set_ctx_params_fn * OSSL_FUNC_keyexch_set_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keyexch_settable_ctx_params_fn * OSSL_FUNC_keyexch_settable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keyexch_get_ctx_params_fn * OSSL_FUNC_keyexch_get_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_keyexch_gettable_ctx_params_fn * OSSL_FUNC_keyexch_gettable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_newctx_fn * OSSL_FUNC_signature_newctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_sign_init_fn * OSSL_FUNC_signature_sign_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_sign_fn * OSSL_FUNC_signature_sign(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_sign_message_init_fn * OSSL_FUNC_signature_sign_message_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_sign_message_update_fn * OSSL_FUNC_signature_sign_message_update(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_sign_message_final_fn * OSSL_FUNC_signature_sign_message_final(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_verify_init_fn * OSSL_FUNC_signature_verify_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_verify_fn * OSSL_FUNC_signature_verify(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_verify_message_init_fn * OSSL_FUNC_signature_verify_message_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_verify_message_update_fn * OSSL_FUNC_signature_verify_message_update(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_verify_message_final_fn * OSSL_FUNC_signature_verify_message_final(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_verify_recover_init_fn * OSSL_FUNC_signature_verify_recover_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_verify_recover_fn * OSSL_FUNC_signature_verify_recover(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_digest_sign_init_fn * OSSL_FUNC_signature_digest_sign_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_digest_sign_update_fn * OSSL_FUNC_signature_digest_sign_update(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_digest_sign_final_fn * OSSL_FUNC_signature_digest_sign_final(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_digest_sign_fn * OSSL_FUNC_signature_digest_sign(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_digest_verify_init_fn * OSSL_FUNC_signature_digest_verify_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_digest_verify_update_fn * OSSL_FUNC_signature_digest_verify_update(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_digest_verify_final_fn * OSSL_FUNC_signature_digest_verify_final(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_digest_verify_fn * OSSL_FUNC_signature_digest_verify(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_freectx_fn * OSSL_FUNC_signature_freectx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_dupctx_fn * OSSL_FUNC_signature_dupctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_get_ctx_params_fn * OSSL_FUNC_signature_get_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_gettable_ctx_params_fn * OSSL_FUNC_signature_gettable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_set_ctx_params_fn * OSSL_FUNC_signature_set_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_settable_ctx_params_fn * OSSL_FUNC_signature_settable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_get_ctx_md_params_fn * OSSL_FUNC_signature_get_ctx_md_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_gettable_ctx_md_params_fn * OSSL_FUNC_signature_gettable_ctx_md_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_set_ctx_md_params_fn * OSSL_FUNC_signature_set_ctx_md_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_settable_ctx_md_params_fn * OSSL_FUNC_signature_settable_ctx_md_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_signature_query_key_types_fn * OSSL_FUNC_signature_query_key_types(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_skeymgmt_free_fn * OSSL_FUNC_skeymgmt_free(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_skeymgmt_imp_settable_params_fn * OSSL_FUNC_skeymgmt_imp_settable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_skeymgmt_import_fn * OSSL_FUNC_skeymgmt_import(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_skeymgmt_export_fn * OSSL_FUNC_skeymgmt_export(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_skeymgmt_gen_settable_params_fn * OSSL_FUNC_skeymgmt_gen_settable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_skeymgmt_generate_fn * OSSL_FUNC_skeymgmt_generate(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_skeymgmt_get_key_id_fn * OSSL_FUNC_skeymgmt_get_key_id(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_asym_cipher_newctx_fn * OSSL_FUNC_asym_cipher_newctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_asym_cipher_encrypt_init_fn * OSSL_FUNC_asym_cipher_encrypt_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_asym_cipher_encrypt_fn * OSSL_FUNC_asym_cipher_encrypt(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_asym_cipher_decrypt_init_fn * OSSL_FUNC_asym_cipher_decrypt_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_asym_cipher_decrypt_fn * OSSL_FUNC_asym_cipher_decrypt(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_asym_cipher_freectx_fn * OSSL_FUNC_asym_cipher_freectx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_asym_cipher_dupctx_fn * OSSL_FUNC_asym_cipher_dupctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_asym_cipher_get_ctx_params_fn * OSSL_FUNC_asym_cipher_get_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_asym_cipher_gettable_ctx_params_fn * OSSL_FUNC_asym_cipher_gettable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_asym_cipher_set_ctx_params_fn * OSSL_FUNC_asym_cipher_set_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_asym_cipher_settable_ctx_params_fn * OSSL_FUNC_asym_cipher_settable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kem_newctx_fn * OSSL_FUNC_kem_newctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kem_encapsulate_init_fn * OSSL_FUNC_kem_encapsulate_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kem_auth_encapsulate_init_fn * OSSL_FUNC_kem_auth_encapsulate_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kem_encapsulate_fn * OSSL_FUNC_kem_encapsulate(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kem_decapsulate_init_fn * OSSL_FUNC_kem_decapsulate_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kem_auth_decapsulate_init_fn * OSSL_FUNC_kem_auth_decapsulate_init(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kem_decapsulate_fn * OSSL_FUNC_kem_decapsulate(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kem_freectx_fn * OSSL_FUNC_kem_freectx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kem_dupctx_fn * OSSL_FUNC_kem_dupctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kem_get_ctx_params_fn * OSSL_FUNC_kem_get_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kem_gettable_ctx_params_fn * OSSL_FUNC_kem_gettable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kem_set_ctx_params_fn * OSSL_FUNC_kem_set_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_kem_settable_ctx_params_fn * OSSL_FUNC_kem_settable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_encoder_newctx_fn * OSSL_FUNC_encoder_newctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_encoder_freectx_fn * OSSL_FUNC_encoder_freectx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_encoder_get_params_fn * OSSL_FUNC_encoder_get_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_encoder_gettable_params_fn * OSSL_FUNC_encoder_gettable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_encoder_set_ctx_params_fn * OSSL_FUNC_encoder_set_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_encoder_settable_ctx_params_fn * OSSL_FUNC_encoder_settable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_encoder_does_selection_fn * OSSL_FUNC_encoder_does_selection(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_encoder_encode_fn * OSSL_FUNC_encoder_encode(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_encoder_import_object_fn * OSSL_FUNC_encoder_import_object(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_encoder_free_object_fn * OSSL_FUNC_encoder_free_object(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_decoder_newctx_fn * OSSL_FUNC_decoder_newctx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_decoder_freectx_fn * OSSL_FUNC_decoder_freectx(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_decoder_get_params_fn * OSSL_FUNC_decoder_get_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_decoder_gettable_params_fn * OSSL_FUNC_decoder_gettable_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_decoder_set_ctx_params_fn * OSSL_FUNC_decoder_set_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_decoder_settable_ctx_params_fn * OSSL_FUNC_decoder_settable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_decoder_does_selection_fn * OSSL_FUNC_decoder_does_selection(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_decoder_decode_fn * OSSL_FUNC_decoder_decode(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_decoder_export_object_fn * OSSL_FUNC_decoder_export_object(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_store_open_fn * OSSL_FUNC_store_open(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_store_attach_fn * OSSL_FUNC_store_attach(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_store_settable_ctx_params_fn * OSSL_FUNC_store_settable_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_store_set_ctx_params_fn * OSSL_FUNC_store_set_ctx_params(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_store_load_fn * OSSL_FUNC_store_load(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_store_eof_fn * OSSL_FUNC_store_eof(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_store_close_fn * OSSL_FUNC_store_close(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_store_export_object_fn * OSSL_FUNC_store_export_object(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_store_delete_fn * OSSL_FUNC_store_delete(const OSSL_DISPATCH * opf) { - return NULL; -} - -OSSL_FUNC_store_open_ex_fn * OSSL_FUNC_store_open_ex(const OSSL_DISPATCH * opf) { - return NULL; -} - -int EVP_set_default_properties(OSSL_LIB_CTX * libctx, const char * propq) { - return 0; -} - -char * EVP_get1_default_properties(OSSL_LIB_CTX * libctx) { - return NULL; -} - -int EVP_default_properties_is_fips_enabled(OSSL_LIB_CTX * libctx) { - return 0; -} - -int EVP_default_properties_enable_fips(OSSL_LIB_CTX * libctx, int enable) { - return 0; -} - -EVP_MD * EVP_MD_meth_new(int md_type, int pkey_type) { - return NULL; -} - -EVP_MD * EVP_MD_meth_dup(const EVP_MD * md) { - return NULL; -} - -void EVP_MD_meth_free(EVP_MD * md) ; - - -int EVP_MD_meth_set_input_blocksize(EVP_MD * md, int blocksize) { - return 0; -} - -int EVP_MD_meth_set_result_size(EVP_MD * md, int resultsize) { - return 0; -} - -int EVP_MD_meth_set_app_datasize(EVP_MD * md, int datasize) { - return 0; -} - -int EVP_MD_meth_set_flags(EVP_MD * md, unsigned long flags) { - return 0; -} - -int EVP_MD_meth_set_init(EVP_MD * md, int (*init)(EVP_MD_CTX *)) { - return 0; -} - -int EVP_MD_meth_set_update(EVP_MD * md, int (*update)(EVP_MD_CTX *, const void *, size_t)) { - return 0; -} - -int EVP_MD_meth_set_final(EVP_MD * md, int (*final)(EVP_MD_CTX *, unsigned char *)) { - return 0; -} - -int EVP_MD_meth_set_copy(EVP_MD * md, int (*copy)(EVP_MD_CTX *, const EVP_MD_CTX *)) { - return 0; -} - -int EVP_MD_meth_set_cleanup(EVP_MD * md, int (*cleanup)(EVP_MD_CTX *)) { - return 0; -} - -int EVP_MD_meth_set_ctrl(EVP_MD * md, int (*ctrl)(EVP_MD_CTX *, int, int, void *)) { - return 0; -} - -int EVP_MD_meth_get_input_blocksize(const EVP_MD * md) { - return 0; -} - -int EVP_MD_meth_get_result_size(const EVP_MD * md) { - return 0; -} - -int EVP_MD_meth_get_app_datasize(const EVP_MD * md) { - return 0; -} - -unsigned long EVP_MD_meth_get_flags(const EVP_MD * md) { - return 0; -} - -int EVP_MD_meth_get_init(const EVP_MD * md) { - return 0; -} - -int EVP_MD_meth_get_update(const EVP_MD * md) { - return 0; -} - -int EVP_MD_meth_get_final(const EVP_MD * md) { - return 0; -} - -int EVP_MD_meth_get_copy(const EVP_MD * md) { - return 0; -} - -int EVP_MD_meth_get_cleanup(const EVP_MD * md) { - return 0; -} - -int EVP_MD_meth_get_ctrl(const EVP_MD * md) { - return 0; -} - -EVP_CIPHER * EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len) { - return NULL; -} - -EVP_CIPHER * EVP_CIPHER_meth_dup(const EVP_CIPHER * cipher) { - return NULL; -} - -void EVP_CIPHER_meth_free(EVP_CIPHER * cipher) ; - - -int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER * cipher, int iv_len) { - return 0; -} - -int EVP_CIPHER_meth_set_flags(EVP_CIPHER * cipher, unsigned long flags) { - return 0; -} - -int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER * cipher, int ctx_size) { - return 0; -} - -int EVP_CIPHER_meth_set_init(EVP_CIPHER * cipher, int (*init)(EVP_CIPHER_CTX *, const unsigned char *, const unsigned char *, int)) { - return 0; -} - -int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER * cipher, int (*do_cipher)(EVP_CIPHER_CTX *, unsigned char *, const unsigned char *, size_t)) { - return 0; -} - -int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER * cipher, int (*cleanup)(EVP_CIPHER_CTX *)) { - return 0; -} - -int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER * cipher, int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *)) { - return 0; -} - -int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER * cipher, int (*get_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *)) { - return 0; -} - -int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER * cipher, int (*ctrl)(EVP_CIPHER_CTX *, int, int, void *)) { - return 0; -} - -int EVP_CIPHER_meth_get_init(const EVP_CIPHER * cipher) { - return 0; -} - -int EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER * cipher) { - return 0; -} - -int EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER * cipher) { - return 0; -} - -int EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER * cipher) { - return 0; -} - -int EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER * cipher) { - return 0; -} - -int EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER * cipher) { - return 0; -} - -int EVP_MD_get_type(const EVP_MD * md) { - return 0; -} - -const char * EVP_MD_get0_name(const EVP_MD * md) { - return NULL; -} - -const char * EVP_MD_get0_description(const EVP_MD * md) { - return NULL; -} - -int EVP_MD_is_a(const EVP_MD * md, const char * name) { - return 0; -} - -int EVP_MD_names_do_all(const EVP_MD * md, void (*fn)(const char *, void *), void * data) { - return 0; -} - -const OSSL_PROVIDER * EVP_MD_get0_provider(const EVP_MD * md) { - return NULL; -} - -int EVP_MD_get_pkey_type(const EVP_MD * md) { - return 0; -} - -int EVP_MD_get_size(const EVP_MD * md) { - return 0; -} - -int EVP_MD_get_block_size(const EVP_MD * md) { - return 0; -} - -unsigned long EVP_MD_get_flags(const EVP_MD * md) { - return 0; -} - -int EVP_MD_xof(const EVP_MD * md) { - return 0; -} - -const EVP_MD * EVP_MD_CTX_get0_md(const EVP_MD_CTX * ctx) { - return NULL; -} - -EVP_MD * EVP_MD_CTX_get1_md(EVP_MD_CTX * ctx) { - return NULL; -} - -const EVP_MD * EVP_MD_CTX_md(const EVP_MD_CTX * ctx) { - return NULL; -} - -int EVP_MD_CTX_update_fn(EVP_MD_CTX * ctx) { - return 0; -} - -void EVP_MD_CTX_set_update_fn(EVP_MD_CTX * ctx, int (*update)(EVP_MD_CTX *, const void *, size_t)) ; - - -int EVP_MD_CTX_get_size_ex(const EVP_MD_CTX * ctx) { - return 0; -} - -EVP_PKEY_CTX * EVP_MD_CTX_get_pkey_ctx(const EVP_MD_CTX * ctx) { - return NULL; -} - -void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX * ctx, EVP_PKEY_CTX * pctx) ; - - -void * EVP_MD_CTX_get0_md_data(const EVP_MD_CTX * ctx) { - return NULL; -} - -int EVP_CIPHER_get_nid(const EVP_CIPHER * cipher) { - return 0; -} - -const char * EVP_CIPHER_get0_name(const EVP_CIPHER * cipher) { - return NULL; -} - -const char * EVP_CIPHER_get0_description(const EVP_CIPHER * cipher) { - return NULL; -} - -int EVP_CIPHER_is_a(const EVP_CIPHER * cipher, const char * name) { - return 0; -} - -int EVP_CIPHER_names_do_all(const EVP_CIPHER * cipher, void (*fn)(const char *, void *), void * data) { - return 0; -} - -const OSSL_PROVIDER * EVP_CIPHER_get0_provider(const EVP_CIPHER * cipher) { - return NULL; -} - -int EVP_CIPHER_get_block_size(const EVP_CIPHER * cipher) { - return 0; -} - -int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER * cipher) { - return 0; -} - -int EVP_CIPHER_get_key_length(const EVP_CIPHER * cipher) { - return 0; -} - -int EVP_CIPHER_get_iv_length(const EVP_CIPHER * cipher) { - return 0; -} - -unsigned long EVP_CIPHER_get_flags(const EVP_CIPHER * cipher) { - return 0; -} - -int EVP_CIPHER_get_mode(const EVP_CIPHER * cipher) { - return 0; -} - -int EVP_CIPHER_get_type(const EVP_CIPHER * cipher) { - return 0; -} - -EVP_CIPHER * EVP_CIPHER_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { - return NULL; -} - -int EVP_CIPHER_can_pipeline(const EVP_CIPHER * cipher, int enc) { - return 0; -} - -int EVP_CIPHER_up_ref(EVP_CIPHER * cipher) { - return 0; -} - -void EVP_CIPHER_free(EVP_CIPHER * cipher) ; - - -const EVP_CIPHER * EVP_CIPHER_CTX_get0_cipher(const EVP_CIPHER_CTX * ctx) { - return NULL; -} - -EVP_CIPHER * EVP_CIPHER_CTX_get1_cipher(EVP_CIPHER_CTX * ctx) { - return NULL; -} - -int EVP_CIPHER_CTX_is_encrypting(const EVP_CIPHER_CTX * ctx) { - return 0; -} - -int EVP_CIPHER_CTX_get_nid(const EVP_CIPHER_CTX * ctx) { - return 0; -} - -int EVP_CIPHER_CTX_get_block_size(const EVP_CIPHER_CTX * ctx) { - return 0; -} - -int EVP_CIPHER_CTX_get_key_length(const EVP_CIPHER_CTX * ctx) { - return 0; -} - -int EVP_CIPHER_CTX_get_iv_length(const EVP_CIPHER_CTX * ctx) { - return 0; -} - -int EVP_CIPHER_CTX_get_tag_length(const EVP_CIPHER_CTX * ctx) { - return 0; -} - -const EVP_CIPHER * EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX * ctx) { - return NULL; -} - -const unsigned char * EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX * ctx) { - return NULL; -} - -const unsigned char * EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX * ctx) { - return NULL; -} - -unsigned char * EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX * ctx) { - return NULL; -} - -int EVP_CIPHER_CTX_get_updated_iv(EVP_CIPHER_CTX * ctx, void * buf, size_t len) { - return 0; -} - -int EVP_CIPHER_CTX_get_original_iv(EVP_CIPHER_CTX * ctx, void * buf, size_t len) { - return 0; -} - -unsigned char * EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX * ctx) { - return NULL; -} - -int EVP_CIPHER_CTX_get_num(const EVP_CIPHER_CTX * ctx) { - return 0; -} - -int EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX * ctx, int num) { - return 0; -} - -EVP_CIPHER_CTX * EVP_CIPHER_CTX_dup(const EVP_CIPHER_CTX * in) { - return NULL; -} - -int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX * out, const EVP_CIPHER_CTX * in) { - return 0; -} - -void * EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX * ctx) { - return NULL; -} - -void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX * ctx, void * data) ; - - -void * EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX * ctx) { - return NULL; -} - -void * EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX * ctx, void * cipher_data) { - return NULL; -} - -int EVP_Cipher(EVP_CIPHER_CTX * c, unsigned char * out, const unsigned char * in, unsigned int inl) { - return 0; -} - -int EVP_MD_get_params(const EVP_MD * digest, OSSL_PARAM * params) { - return 0; -} - -int EVP_MD_CTX_set_params(EVP_MD_CTX * ctx, const OSSL_PARAM * params) { - return 0; -} - -int EVP_MD_CTX_get_params(EVP_MD_CTX * ctx, OSSL_PARAM * params) { - return 0; -} - -const OSSL_PARAM * EVP_MD_gettable_params(const EVP_MD * digest) { - return NULL; -} - -const OSSL_PARAM * EVP_MD_settable_ctx_params(const EVP_MD * md) { - return NULL; -} - -const OSSL_PARAM * EVP_MD_gettable_ctx_params(const EVP_MD * md) { - return NULL; -} - -const OSSL_PARAM * EVP_MD_CTX_settable_params(EVP_MD_CTX * ctx) { - return NULL; -} - -const OSSL_PARAM * EVP_MD_CTX_gettable_params(EVP_MD_CTX * ctx) { - return NULL; -} - -int EVP_MD_CTX_ctrl(EVP_MD_CTX * ctx, int cmd, int p1, void * p2) { - return 0; -} - -EVP_MD_CTX * EVP_MD_CTX_new(void) { - return NULL; -} - -int EVP_MD_CTX_reset(EVP_MD_CTX * ctx) { - return 0; -} - -void EVP_MD_CTX_free(EVP_MD_CTX * ctx) ; - - -EVP_MD_CTX * EVP_MD_CTX_dup(const EVP_MD_CTX * in) { - return NULL; -} - -int EVP_MD_CTX_copy_ex(EVP_MD_CTX * out, const EVP_MD_CTX * in) { - return 0; -} - -void EVP_MD_CTX_set_flags(EVP_MD_CTX * ctx, int flags) ; - - -void EVP_MD_CTX_clear_flags(EVP_MD_CTX * ctx, int flags) ; - - -int EVP_MD_CTX_test_flags(const EVP_MD_CTX * ctx, int flags) { - return 0; -} - -int EVP_DigestInit_ex2(EVP_MD_CTX * ctx, const EVP_MD * type, const OSSL_PARAM * params) { - return 0; -} - -int EVP_DigestInit_ex(EVP_MD_CTX * ctx, const EVP_MD * type, ENGINE * impl) { - return 0; -} - -int EVP_DigestUpdate(EVP_MD_CTX * ctx, const void * d, size_t cnt) { - return 0; -} - -int EVP_DigestFinal_ex(EVP_MD_CTX * ctx, unsigned char * md, unsigned int * s) { - return 0; -} - -int EVP_Digest(const void * data, size_t count, unsigned char * md, unsigned int * size, const EVP_MD * type, ENGINE * impl) { - return 0; -} - -int EVP_Q_digest(OSSL_LIB_CTX * libctx, const char * name, const char * propq, const void * data, size_t datalen, unsigned char * md, size_t * mdlen) { - return 0; -} - -int EVP_MD_CTX_copy(EVP_MD_CTX * out, const EVP_MD_CTX * in) { - return 0; -} - -int EVP_DigestInit(EVP_MD_CTX * ctx, const EVP_MD * type) { - return 0; -} - -int EVP_DigestFinal(EVP_MD_CTX * ctx, unsigned char * md, unsigned int * s) { - return 0; -} - -int EVP_DigestFinalXOF(EVP_MD_CTX * ctx, unsigned char * out, size_t outlen) { - return 0; -} - -int EVP_DigestSqueeze(EVP_MD_CTX * ctx, unsigned char * out, size_t outlen) { - return 0; -} - -EVP_MD * EVP_MD_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { - return NULL; -} - -int EVP_MD_up_ref(EVP_MD * md) { - return 0; -} - -void EVP_MD_free(EVP_MD * md) ; - - -int EVP_read_pw_string(char * buf, int length, const char * prompt, int verify) { - return 0; -} - -int EVP_read_pw_string_min(char * buf, int minlen, int maxlen, const char * prompt, int verify) { - return 0; -} - -void EVP_set_pw_prompt(const char * prompt) ; - - -char * EVP_get_pw_prompt(void) { - return NULL; -} - -int EVP_BytesToKey(const EVP_CIPHER * type, const EVP_MD * md, const unsigned char * salt, const unsigned char * data, int datal, int count, unsigned char * key, unsigned char * iv) { - return 0; -} - -void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX * ctx, int flags) ; - - -void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX * ctx, int flags) ; - - -int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX * ctx, int flags) { - return 0; -} - -int EVP_EncryptInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, const unsigned char * iv) { - return 0; -} - -int EVP_EncryptInit_ex(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, ENGINE * impl, const unsigned char * key, const unsigned char * iv) { - return 0; -} - -int EVP_EncryptInit_ex2(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, const unsigned char * iv, const OSSL_PARAM * params) { - return 0; -} - -int EVP_EncryptUpdate(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl, const unsigned char * in, int inl) { - return 0; -} - -int EVP_EncryptFinal_ex(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl) { - return 0; -} - -int EVP_EncryptFinal(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl) { - return 0; -} - -int EVP_DecryptInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, const unsigned char * iv) { - return 0; -} - -int EVP_DecryptInit_ex(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, ENGINE * impl, const unsigned char * key, const unsigned char * iv) { - return 0; -} - -int EVP_DecryptInit_ex2(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, const unsigned char * iv, const OSSL_PARAM * params) { - return 0; -} - -int EVP_DecryptUpdate(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl, const unsigned char * in, int inl) { - return 0; -} - -int EVP_DecryptFinal(EVP_CIPHER_CTX * ctx, unsigned char * outm, int * outl) { - return 0; -} - -int EVP_DecryptFinal_ex(EVP_CIPHER_CTX * ctx, unsigned char * outm, int * outl) { - return 0; -} - -int EVP_CipherInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, const unsigned char * iv, int enc) { - return 0; -} - -int EVP_CipherInit_ex(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, ENGINE * impl, const unsigned char * key, const unsigned char * iv, int enc) { - return 0; -} - -int EVP_CipherInit_SKEY(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, EVP_SKEY * skey, const unsigned char * iv, size_t iv_len, int enc, const OSSL_PARAM * params) { - return 0; -} - -int EVP_CipherInit_ex2(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, const unsigned char * iv, int enc, const OSSL_PARAM * params) { - return 0; -} - -int EVP_CipherUpdate(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl, const unsigned char * in, int inl) { - return 0; -} - -int EVP_CipherFinal(EVP_CIPHER_CTX * ctx, unsigned char * outm, int * outl) { - return 0; -} - -int EVP_CipherPipelineEncryptInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, size_t keylen, size_t numpipes, const unsigned char ** iv, size_t ivlen) { - return 0; -} - -int EVP_CipherPipelineDecryptInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * cipher, const unsigned char * key, size_t keylen, size_t numpipes, const unsigned char ** iv, size_t ivlen) { - return 0; -} - -int EVP_CipherPipelineUpdate(EVP_CIPHER_CTX * ctx, unsigned char ** out, size_t * outl, const size_t * outsize, const unsigned char ** in, const size_t * inl) { - return 0; -} - -int EVP_CipherPipelineFinal(EVP_CIPHER_CTX * ctx, unsigned char ** outm, size_t * outl, const size_t * outsize) { - return 0; -} - -int EVP_CipherFinal_ex(EVP_CIPHER_CTX * ctx, unsigned char * outm, int * outl) { - return 0; -} - -int EVP_SignFinal(EVP_MD_CTX * ctx, unsigned char * md, unsigned int * s, EVP_PKEY * pkey) { - return 0; -} - -int EVP_SignFinal_ex(EVP_MD_CTX * ctx, unsigned char * md, unsigned int * s, EVP_PKEY * pkey, OSSL_LIB_CTX * libctx, const char * propq) { - return 0; -} - -int EVP_DigestSign(EVP_MD_CTX * ctx, unsigned char * sigret, size_t * siglen, const unsigned char * tbs, size_t tbslen) { - return 0; -} - -int EVP_VerifyFinal(EVP_MD_CTX * ctx, const unsigned char * sigbuf, unsigned int siglen, EVP_PKEY * pkey) { - return 0; -} - -int EVP_VerifyFinal_ex(EVP_MD_CTX * ctx, const unsigned char * sigbuf, unsigned int siglen, EVP_PKEY * pkey, OSSL_LIB_CTX * libctx, const char * propq) { - return 0; -} - -int EVP_DigestVerify(EVP_MD_CTX * ctx, const unsigned char * sigret, size_t siglen, const unsigned char * tbs, size_t tbslen) { - return 0; -} - -int EVP_DigestSignInit_ex(EVP_MD_CTX * ctx, EVP_PKEY_CTX ** pctx, const char * mdname, OSSL_LIB_CTX * libctx, const char * props, EVP_PKEY * pkey, const OSSL_PARAM * params) { - return 0; -} - -int EVP_DigestSignInit(EVP_MD_CTX * ctx, EVP_PKEY_CTX ** pctx, const EVP_MD * type, ENGINE * e, EVP_PKEY * pkey) { - return 0; -} - -int EVP_DigestSignUpdate(EVP_MD_CTX * ctx, const void * data, size_t dsize) { - return 0; -} - -int EVP_DigestSignFinal(EVP_MD_CTX * ctx, unsigned char * sigret, size_t * siglen) { - return 0; -} - -int EVP_DigestVerifyInit_ex(EVP_MD_CTX * ctx, EVP_PKEY_CTX ** pctx, const char * mdname, OSSL_LIB_CTX * libctx, const char * props, EVP_PKEY * pkey, const OSSL_PARAM * params) { - return 0; -} - -int EVP_DigestVerifyInit(EVP_MD_CTX * ctx, EVP_PKEY_CTX ** pctx, const EVP_MD * type, ENGINE * e, EVP_PKEY * pkey) { - return 0; -} - -int EVP_DigestVerifyUpdate(EVP_MD_CTX * ctx, const void * data, size_t dsize) { - return 0; -} - -int EVP_DigestVerifyFinal(EVP_MD_CTX * ctx, const unsigned char * sig, size_t siglen) { - return 0; -} - -int EVP_OpenInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * type, const unsigned char * ek, int ekl, const unsigned char * iv, EVP_PKEY * priv) { - return 0; -} - -int EVP_OpenFinal(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl) { - return 0; -} - -int EVP_SealInit(EVP_CIPHER_CTX * ctx, const EVP_CIPHER * type, unsigned char ** ek, int * ekl, unsigned char * iv, EVP_PKEY ** pubk, int npubk) { - return 0; -} - -int EVP_SealFinal(EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl) { - return 0; -} - -EVP_ENCODE_CTX * EVP_ENCODE_CTX_new(void) { - return NULL; -} - -void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX * ctx) ; - - -int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX * dctx, const EVP_ENCODE_CTX * sctx) { - return 0; -} - -int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX * ctx) { - return 0; -} - -void EVP_EncodeInit(EVP_ENCODE_CTX * ctx) ; - - -int EVP_EncodeUpdate(EVP_ENCODE_CTX * ctx, unsigned char * out, int * outl, const unsigned char * in, int inl) { - return 0; -} - -void EVP_EncodeFinal(EVP_ENCODE_CTX * ctx, unsigned char * out, int * outl) ; - - -int EVP_EncodeBlock(unsigned char * t, const unsigned char * f, int n) { - return 0; -} - -void EVP_DecodeInit(EVP_ENCODE_CTX * ctx) ; - - -int EVP_DecodeUpdate(EVP_ENCODE_CTX * ctx, unsigned char * out, int * outl, const unsigned char * in, int inl) { - return 0; -} - -int EVP_DecodeFinal(EVP_ENCODE_CTX * ctx, unsigned char * out, int * outl) { - return 0; -} - -int EVP_DecodeBlock(unsigned char * t, const unsigned char * f, int n) { - return 0; -} - -EVP_CIPHER_CTX * EVP_CIPHER_CTX_new(void) { - return NULL; -} - -int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX * c) { - return 0; -} - -void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX * c) ; - - -int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX * x, int keylen) { - return 0; -} - -int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX * c, int pad) { - return 0; -} - -int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX * ctx, int type, int arg, void * ptr) { - return 0; -} - -int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX * ctx, unsigned char * key) { - return 0; -} - -int EVP_CIPHER_get_params(EVP_CIPHER * cipher, OSSL_PARAM * params) { - return 0; -} - -int EVP_CIPHER_CTX_set_params(EVP_CIPHER_CTX * ctx, const OSSL_PARAM * params) { - return 0; -} - -int EVP_CIPHER_CTX_get_params(EVP_CIPHER_CTX * ctx, OSSL_PARAM * params) { - return 0; -} - -const OSSL_PARAM * EVP_CIPHER_gettable_params(const EVP_CIPHER * cipher) { - return NULL; -} - -const OSSL_PARAM * EVP_CIPHER_settable_ctx_params(const EVP_CIPHER * cipher) { - return NULL; -} - -const OSSL_PARAM * EVP_CIPHER_gettable_ctx_params(const EVP_CIPHER * cipher) { - return NULL; -} - -const OSSL_PARAM * EVP_CIPHER_CTX_settable_params(EVP_CIPHER_CTX * ctx) { - return NULL; -} - -const OSSL_PARAM * EVP_CIPHER_CTX_gettable_params(EVP_CIPHER_CTX * ctx) { - return NULL; -} - -int EVP_CIPHER_CTX_set_algor_params(EVP_CIPHER_CTX * ctx, const X509_ALGOR * alg) { - return 0; -} - -int EVP_CIPHER_CTX_get_algor_params(EVP_CIPHER_CTX * ctx, X509_ALGOR * alg) { - return 0; -} - -int EVP_CIPHER_CTX_get_algor(EVP_CIPHER_CTX * ctx, X509_ALGOR ** alg) { - return 0; -} - -const int * BIO_f_md(void) { - return NULL; -} - -const int * BIO_f_base64(void) { - return NULL; -} - -const int * BIO_f_cipher(void) { - return NULL; -} - -const int * BIO_f_reliable(void) { - return NULL; -} - -int BIO_set_cipher(BIO * b, const EVP_CIPHER * c, const unsigned char * k, const unsigned char * i, int enc) { - return 0; -} - -const EVP_MD * EVP_md_null(void) { - return NULL; -} - -const EVP_MD * EVP_md2(void) { - return NULL; -} - -const EVP_MD * EVP_md4(void) { - return NULL; -} - -const EVP_MD * EVP_md5(void) { - return NULL; -} - -const EVP_MD * EVP_md5_sha1(void) { - return NULL; -} - -const EVP_MD * EVP_blake2b512(void) { - return NULL; -} - -const EVP_MD * EVP_blake2s256(void) { - return NULL; -} - -const EVP_MD * EVP_sha1(void) { - return NULL; -} - -const EVP_MD * EVP_sha224(void) { - return NULL; -} - -const EVP_MD * EVP_sha256(void) { - return NULL; -} - -const EVP_MD * EVP_sha384(void) { - return NULL; -} - -const EVP_MD * EVP_sha512(void) { - return NULL; -} - -const EVP_MD * EVP_sha512_224(void) { - return NULL; -} - -const EVP_MD * EVP_sha512_256(void) { - return NULL; -} - -const EVP_MD * EVP_sha3_224(void) { - return NULL; -} - -const EVP_MD * EVP_sha3_256(void) { - return NULL; -} - -const EVP_MD * EVP_sha3_384(void) { - return NULL; -} - -const EVP_MD * EVP_sha3_512(void) { - return NULL; -} - -const EVP_MD * EVP_shake128(void) { - return NULL; -} - -const EVP_MD * EVP_shake256(void) { - return NULL; -} - -const EVP_MD * EVP_mdc2(void) { - return NULL; -} - -const EVP_MD * EVP_ripemd160(void) { - return NULL; -} - -const EVP_MD * EVP_whirlpool(void) { - return NULL; -} - -const EVP_MD * EVP_sm3(void) { - return NULL; -} - -const EVP_CIPHER * EVP_enc_null(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ede(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ede3(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ede_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ede3_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_cfb64(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_cfb1(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_cfb8(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ede_cfb64(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ede3_cfb64(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ede3_cfb1(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ede3_cfb8(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ede_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ede3_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ede_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ede3_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_desx_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_des_ede3_wrap(void) { - return NULL; -} - -const EVP_CIPHER * EVP_rc4(void) { - return NULL; -} - -const EVP_CIPHER * EVP_rc4_40(void) { - return NULL; -} - -const EVP_CIPHER * EVP_rc4_hmac_md5(void) { - return NULL; -} - -const EVP_CIPHER * EVP_idea_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_idea_cfb64(void) { - return NULL; -} - -const EVP_CIPHER * EVP_idea_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_idea_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_rc2_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_rc2_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_rc2_40_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_rc2_64_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_rc2_cfb64(void) { - return NULL; -} - -const EVP_CIPHER * EVP_rc2_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_bf_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_bf_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_bf_cfb64(void) { - return NULL; -} - -const EVP_CIPHER * EVP_bf_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_cast5_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_cast5_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_cast5_cfb64(void) { - return NULL; -} - -const EVP_CIPHER * EVP_cast5_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_rc5_32_12_16_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_rc5_32_12_16_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_rc5_32_12_16_cfb64(void) { - return NULL; -} - -const EVP_CIPHER * EVP_rc5_32_12_16_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_cfb1(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_cfb8(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_cfb128(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_ctr(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_ccm(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_gcm(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_xts(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_wrap(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_wrap_pad(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_ocb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_192_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_192_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_192_cfb1(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_192_cfb8(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_192_cfb128(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_192_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_192_ctr(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_192_ccm(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_192_gcm(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_192_wrap(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_192_wrap_pad(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_192_ocb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_cfb1(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_cfb8(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_cfb128(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_ctr(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_ccm(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_gcm(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_xts(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_wrap(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_wrap_pad(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_ocb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_cbc_hmac_sha1(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_cbc_hmac_sha1(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_128_cbc_hmac_sha256(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aes_256_cbc_hmac_sha256(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_128_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_128_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_128_cfb1(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_128_cfb8(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_128_cfb128(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_128_ctr(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_128_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_128_gcm(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_128_ccm(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_192_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_192_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_192_cfb1(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_192_cfb8(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_192_cfb128(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_192_ctr(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_192_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_192_gcm(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_192_ccm(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_256_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_256_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_256_cfb1(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_256_cfb8(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_256_cfb128(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_256_ctr(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_256_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_256_gcm(void) { - return NULL; -} - -const EVP_CIPHER * EVP_aria_256_ccm(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_128_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_128_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_128_cfb1(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_128_cfb8(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_128_cfb128(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_128_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_128_ctr(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_192_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_192_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_192_cfb1(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_192_cfb8(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_192_cfb128(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_192_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_192_ctr(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_256_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_256_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_256_cfb1(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_256_cfb8(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_256_cfb128(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_256_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_camellia_256_ctr(void) { - return NULL; -} - -const EVP_CIPHER * EVP_chacha20(void) { - return NULL; -} - -const EVP_CIPHER * EVP_chacha20_poly1305(void) { - return NULL; -} - -const EVP_CIPHER * EVP_seed_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_seed_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_seed_cfb128(void) { - return NULL; -} - -const EVP_CIPHER * EVP_seed_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_sm4_ecb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_sm4_cbc(void) { - return NULL; -} - -const EVP_CIPHER * EVP_sm4_cfb128(void) { - return NULL; -} - -const EVP_CIPHER * EVP_sm4_ofb(void) { - return NULL; -} - -const EVP_CIPHER * EVP_sm4_ctr(void) { - return NULL; -} - -int EVP_add_cipher(const EVP_CIPHER * cipher) { - return 0; -} - -int EVP_add_digest(const EVP_MD * digest) { - return 0; -} - -const EVP_CIPHER * EVP_get_cipherbyname(const char * name) { - return NULL; -} - -const EVP_MD * EVP_get_digestbyname(const char * name) { - return NULL; -} - -void EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *, const char *, const char *, void *), void * arg) ; - - -void EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *, const char *, const char *, void *), void * arg) ; - - -void EVP_CIPHER_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_CIPHER *, void *), void * arg) ; - - -void EVP_MD_do_all(void (*fn)(const EVP_MD *, const char *, const char *, void *), void * arg) ; - - -void EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *, const char *, const char *, void *), void * arg) ; - - -void EVP_MD_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_MD *, void *), void * arg) ; - - -EVP_MAC * EVP_MAC_fetch(OSSL_LIB_CTX * libctx, const char * algorithm, const char * properties) { - return NULL; -} - -int EVP_MAC_up_ref(EVP_MAC * mac) { - return 0; -} - -void EVP_MAC_free(EVP_MAC * mac) ; - - -const char * EVP_MAC_get0_name(const EVP_MAC * mac) { - return NULL; -} - -const char * EVP_MAC_get0_description(const EVP_MAC * mac) { - return NULL; -} - -int EVP_MAC_is_a(const EVP_MAC * mac, const char * name) { - return 0; -} - -const OSSL_PROVIDER * EVP_MAC_get0_provider(const EVP_MAC * mac) { - return NULL; -} - -int EVP_MAC_get_params(EVP_MAC * mac, OSSL_PARAM * params) { - return 0; -} - -EVP_MAC_CTX * EVP_MAC_CTX_new(EVP_MAC * mac) { - return NULL; -} - -void EVP_MAC_CTX_free(EVP_MAC_CTX * ctx) ; - - -EVP_MAC_CTX * EVP_MAC_CTX_dup(const EVP_MAC_CTX * src) { - return NULL; -} - -EVP_MAC * EVP_MAC_CTX_get0_mac(EVP_MAC_CTX * ctx) { - return NULL; -} - -int EVP_MAC_CTX_get_params(EVP_MAC_CTX * ctx, OSSL_PARAM * params) { - return 0; -} - -int EVP_MAC_CTX_set_params(EVP_MAC_CTX * ctx, const OSSL_PARAM * params) { - return 0; -} - -size_t EVP_MAC_CTX_get_mac_size(EVP_MAC_CTX * ctx) { - return 0; -} - -size_t EVP_MAC_CTX_get_block_size(EVP_MAC_CTX * ctx) { - return 0; -} - -unsigned char * EVP_Q_mac(OSSL_LIB_CTX * libctx, const char * name, const char * propq, const char * subalg, const OSSL_PARAM * params, const void * key, size_t keylen, const unsigned char * data, size_t datalen, unsigned char * out, size_t outsize, size_t * outlen) { - return NULL; -} - -int EVP_MAC_init(EVP_MAC_CTX * ctx, const unsigned char * key, size_t keylen, const OSSL_PARAM * params) { - return 0; -} - -int EVP_MAC_init_SKEY(EVP_MAC_CTX * ctx, EVP_SKEY * skey, const OSSL_PARAM * params) { - return 0; -} - -int EVP_MAC_update(EVP_MAC_CTX * ctx, const unsigned char * data, size_t datalen) { - return 0; -} - -int EVP_MAC_final(EVP_MAC_CTX * ctx, unsigned char * out, size_t * outl, size_t outsize) { - return 0; -} - -int EVP_MAC_finalXOF(EVP_MAC_CTX * ctx, unsigned char * out, size_t outsize) { - return 0; -} - -const OSSL_PARAM * EVP_MAC_gettable_params(const EVP_MAC * mac) { - return NULL; -} - -const OSSL_PARAM * EVP_MAC_gettable_ctx_params(const EVP_MAC * mac) { - return NULL; -} - -const OSSL_PARAM * EVP_MAC_settable_ctx_params(const EVP_MAC * mac) { - return NULL; -} - -const OSSL_PARAM * EVP_MAC_CTX_gettable_params(EVP_MAC_CTX * ctx) { - return NULL; -} - -const OSSL_PARAM * EVP_MAC_CTX_settable_params(EVP_MAC_CTX * ctx) { - return NULL; -} - -void EVP_MAC_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_MAC *, void *), void * arg) ; - - -int EVP_MAC_names_do_all(const EVP_MAC * mac, void (*fn)(const char *, void *), void * data) { - return 0; -} - -EVP_RAND * EVP_RAND_fetch(OSSL_LIB_CTX * libctx, const char * algorithm, const char * properties) { - return NULL; -} - -int EVP_RAND_up_ref(EVP_RAND * rand) { - return 0; -} - -void EVP_RAND_free(EVP_RAND * rand) ; - - -const char * EVP_RAND_get0_name(const EVP_RAND * rand) { - return NULL; -} - -const char * EVP_RAND_get0_description(const EVP_RAND * md) { - return NULL; -} - -int EVP_RAND_is_a(const EVP_RAND * rand, const char * name) { - return 0; -} - -const OSSL_PROVIDER * EVP_RAND_get0_provider(const EVP_RAND * rand) { - return NULL; -} - -int EVP_RAND_get_params(EVP_RAND * rand, OSSL_PARAM * params) { - return 0; -} - -EVP_RAND_CTX * EVP_RAND_CTX_new(EVP_RAND * rand, EVP_RAND_CTX * parent) { - return NULL; -} - -int EVP_RAND_CTX_up_ref(EVP_RAND_CTX * ctx) { - return 0; -} - -void EVP_RAND_CTX_free(EVP_RAND_CTX * ctx) ; - - -EVP_RAND * EVP_RAND_CTX_get0_rand(EVP_RAND_CTX * ctx) { - return NULL; -} - -int EVP_RAND_CTX_get_params(EVP_RAND_CTX * ctx, OSSL_PARAM * params) { - return 0; -} - -int EVP_RAND_CTX_set_params(EVP_RAND_CTX * ctx, const OSSL_PARAM * params) { - return 0; -} - -const OSSL_PARAM * EVP_RAND_gettable_params(const EVP_RAND * rand) { - return NULL; -} - -const OSSL_PARAM * EVP_RAND_gettable_ctx_params(const EVP_RAND * rand) { - return NULL; -} - -const OSSL_PARAM * EVP_RAND_settable_ctx_params(const EVP_RAND * rand) { - return NULL; -} - -const OSSL_PARAM * EVP_RAND_CTX_gettable_params(EVP_RAND_CTX * ctx) { - return NULL; -} - -const OSSL_PARAM * EVP_RAND_CTX_settable_params(EVP_RAND_CTX * ctx) { - return NULL; -} - -void EVP_RAND_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_RAND *, void *), void * arg) ; - - -int EVP_RAND_names_do_all(const EVP_RAND * rand, void (*fn)(const char *, void *), void * data) { - return 0; -} - -int EVP_RAND_instantiate(EVP_RAND_CTX * ctx, unsigned int strength, int prediction_resistance, const unsigned char * pstr, size_t pstr_len, const OSSL_PARAM * params) { - return 0; -} - -int EVP_RAND_uninstantiate(EVP_RAND_CTX * ctx) { - return 0; -} - -int EVP_RAND_generate(EVP_RAND_CTX * ctx, unsigned char * out, size_t outlen, unsigned int strength, int prediction_resistance, const unsigned char * addin, size_t addin_len) { - return 0; -} - -int EVP_RAND_reseed(EVP_RAND_CTX * ctx, int prediction_resistance, const unsigned char * ent, size_t ent_len, const unsigned char * addin, size_t addin_len) { - return 0; -} - -int EVP_RAND_nonce(EVP_RAND_CTX * ctx, unsigned char * out, size_t outlen) { - return 0; -} - -int EVP_RAND_enable_locking(EVP_RAND_CTX * ctx) { - return 0; -} - -int EVP_RAND_verify_zeroization(EVP_RAND_CTX * ctx) { - return 0; -} - -unsigned int EVP_RAND_get_strength(EVP_RAND_CTX * ctx) { - return 0; -} - -int EVP_RAND_get_state(EVP_RAND_CTX * ctx) { - return 0; -} - -int EVP_PKEY_decrypt_old(unsigned char * dec_key, const unsigned char * enc_key, int enc_key_len, EVP_PKEY * private_key) { - return 0; -} - -int EVP_PKEY_encrypt_old(unsigned char * enc_key, const unsigned char * key, int key_len, EVP_PKEY * pub_key) { - return 0; -} - -int EVP_PKEY_is_a(const EVP_PKEY * pkey, const char * name) { - return 0; -} - -int EVP_PKEY_type_names_do_all(const EVP_PKEY * pkey, void (*fn)(const char *, void *), void * data) { - return 0; -} - -int EVP_PKEY_type(int type) { - return 0; -} - -int EVP_PKEY_get_id(const EVP_PKEY * pkey) { - return 0; -} - -int EVP_PKEY_get_base_id(const EVP_PKEY * pkey) { - return 0; -} - -int EVP_PKEY_get_bits(const EVP_PKEY * pkey) { - return 0; -} - -int EVP_PKEY_get_security_bits(const EVP_PKEY * pkey) { - return 0; -} - -int EVP_PKEY_get_size(const EVP_PKEY * pkey) { - return 0; -} - -int EVP_PKEY_can_sign(const EVP_PKEY * pkey) { - return 0; -} - -int EVP_PKEY_set_type(EVP_PKEY * pkey, int type) { - return 0; -} - -int EVP_PKEY_set_type_str(EVP_PKEY * pkey, const char * str, int len) { - return 0; -} - -int EVP_PKEY_set_type_by_keymgmt(EVP_PKEY * pkey, EVP_KEYMGMT * keymgmt) { - return 0; -} - -int EVP_PKEY_set1_engine(EVP_PKEY * pkey, ENGINE * e) { - return 0; -} - -ENGINE * EVP_PKEY_get0_engine(const EVP_PKEY * pkey) { - return NULL; -} - -int EVP_PKEY_assign(EVP_PKEY * pkey, int type, void * key) { - return 0; -} - -void * EVP_PKEY_get0(const EVP_PKEY * pkey) { - return NULL; -} - -const unsigned char * EVP_PKEY_get0_hmac(const EVP_PKEY * pkey, size_t * len) { - return NULL; -} - -const unsigned char * EVP_PKEY_get0_poly1305(const EVP_PKEY * pkey, size_t * len) { - return NULL; -} - -const unsigned char * EVP_PKEY_get0_siphash(const EVP_PKEY * pkey, size_t * len) { - return NULL; -} - -int EVP_PKEY_set1_RSA(EVP_PKEY * pkey, struct rsa_st * key) { - return 0; -} - -const struct rsa_st * EVP_PKEY_get0_RSA(const EVP_PKEY * pkey) { - return NULL; -} - -struct rsa_st * EVP_PKEY_get1_RSA(EVP_PKEY * pkey) { - return NULL; -} - -int EVP_PKEY_set1_DSA(EVP_PKEY * pkey, struct dsa_st * key) { - return 0; -} - -const struct dsa_st * EVP_PKEY_get0_DSA(const EVP_PKEY * pkey) { - return NULL; -} - -struct dsa_st * EVP_PKEY_get1_DSA(EVP_PKEY * pkey) { - return NULL; -} - -int EVP_PKEY_set1_DH(EVP_PKEY * pkey, struct dh_st * key) { - return 0; -} - -const struct dh_st * EVP_PKEY_get0_DH(const EVP_PKEY * pkey) { - return NULL; -} - -struct dh_st * EVP_PKEY_get1_DH(EVP_PKEY * pkey) { - return NULL; -} - -int EVP_PKEY_set1_EC_KEY(EVP_PKEY * pkey, struct ec_key_st * key) { - return 0; -} - -const struct ec_key_st * EVP_PKEY_get0_EC_KEY(const EVP_PKEY * pkey) { - return NULL; -} - -struct ec_key_st * EVP_PKEY_get1_EC_KEY(EVP_PKEY * pkey) { - return NULL; -} - -EVP_PKEY * EVP_PKEY_new(void) { - return NULL; -} - -int EVP_PKEY_up_ref(EVP_PKEY * pkey) { - return 0; -} - -EVP_PKEY * EVP_PKEY_dup(EVP_PKEY * pkey) { - return NULL; -} - -void EVP_PKEY_free(EVP_PKEY * pkey) ; - - -const char * EVP_PKEY_get0_description(const EVP_PKEY * pkey) { - return NULL; -} - -const OSSL_PROVIDER * EVP_PKEY_get0_provider(const EVP_PKEY * key) { - return NULL; -} - -EVP_PKEY * d2i_PublicKey(int type, EVP_PKEY ** a, const unsigned char ** pp, long length) { - return NULL; -} - -int i2d_PublicKey(const EVP_PKEY * a, unsigned char ** pp) { - return 0; -} - -EVP_PKEY * d2i_PrivateKey_ex(int type, EVP_PKEY ** a, const unsigned char ** pp, long length, OSSL_LIB_CTX * libctx, const char * propq) { - return NULL; -} - -EVP_PKEY * d2i_PrivateKey(int type, EVP_PKEY ** a, const unsigned char ** pp, long length) { - return NULL; -} - -EVP_PKEY * d2i_AutoPrivateKey_ex(EVP_PKEY ** a, const unsigned char ** pp, long length, OSSL_LIB_CTX * libctx, const char * propq) { - return NULL; -} - -EVP_PKEY * d2i_AutoPrivateKey(EVP_PKEY ** a, const unsigned char ** pp, long length) { - return NULL; -} - -int i2d_PrivateKey(const EVP_PKEY * a, unsigned char ** pp) { - return 0; -} - -int i2d_PKCS8PrivateKey(const EVP_PKEY * a, unsigned char ** pp) { - return 0; -} - -int i2d_KeyParams(const EVP_PKEY * a, unsigned char ** pp) { - return 0; -} - -EVP_PKEY * d2i_KeyParams(int type, EVP_PKEY ** a, const unsigned char ** pp, long length) { - return NULL; -} - -int i2d_KeyParams_bio(BIO * bp, const EVP_PKEY * pkey) { - return 0; -} - -EVP_PKEY * d2i_KeyParams_bio(int type, EVP_PKEY ** a, BIO * in) { - return NULL; -} - -int EVP_PKEY_copy_parameters(EVP_PKEY * to, const EVP_PKEY * from) { - return 0; -} - -int EVP_PKEY_missing_parameters(const EVP_PKEY * pkey) { - return 0; -} - -int EVP_PKEY_save_parameters(EVP_PKEY * pkey, int mode) { - return 0; -} - -int EVP_PKEY_parameters_eq(const EVP_PKEY * a, const EVP_PKEY * b) { - return 0; -} - -int EVP_PKEY_eq(const EVP_PKEY * a, const EVP_PKEY * b) { - return 0; -} - -int EVP_PKEY_cmp_parameters(const EVP_PKEY * a, const EVP_PKEY * b) { - return 0; -} - -int EVP_PKEY_cmp(const EVP_PKEY * a, const EVP_PKEY * b) { - return 0; -} - -int EVP_PKEY_print_public(BIO * out, const EVP_PKEY * pkey, int indent, ASN1_PCTX * pctx) { - return 0; -} - -int EVP_PKEY_print_private(BIO * out, const EVP_PKEY * pkey, int indent, ASN1_PCTX * pctx) { - return 0; -} - -int EVP_PKEY_print_params(BIO * out, const EVP_PKEY * pkey, int indent, ASN1_PCTX * pctx) { - return 0; -} - -int EVP_PKEY_print_public_fp(FILE * fp, const EVP_PKEY * pkey, int indent, ASN1_PCTX * pctx) { - return 0; -} - -int EVP_PKEY_print_private_fp(FILE * fp, const EVP_PKEY * pkey, int indent, ASN1_PCTX * pctx) { - return 0; -} - -int EVP_PKEY_print_params_fp(FILE * fp, const EVP_PKEY * pkey, int indent, ASN1_PCTX * pctx) { - return 0; -} - -int EVP_PKEY_get_default_digest_nid(EVP_PKEY * pkey, int * pnid) { - return 0; -} - -int EVP_PKEY_get_default_digest_name(EVP_PKEY * pkey, char * mdname, size_t mdname_sz) { - return 0; -} - -int EVP_PKEY_digestsign_supports_digest(EVP_PKEY * pkey, OSSL_LIB_CTX * libctx, const char * name, const char * propq) { - return 0; -} - -int EVP_PKEY_set1_encoded_public_key(EVP_PKEY * pkey, const unsigned char * pub, size_t publen) { - return 0; -} - -size_t EVP_PKEY_get1_encoded_public_key(EVP_PKEY * pkey, unsigned char ** ppub) { - return 0; -} - -int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX * c, ASN1_TYPE * type) { - return 0; -} - -int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX * c, ASN1_TYPE * type) { - return 0; -} - -int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX * c, ASN1_TYPE * type) { - return 0; -} - -int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX * c, ASN1_TYPE * type) { - return 0; -} - -int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX * ctx, const char * pass, int passlen, ASN1_TYPE * param, const EVP_CIPHER * cipher, const EVP_MD * md, int en_de) { - return 0; -} - -int PKCS5_PBE_keyivgen_ex(EVP_CIPHER_CTX * cctx, const char * pass, int passlen, ASN1_TYPE * param, const EVP_CIPHER * cipher, const EVP_MD * md, int en_de, OSSL_LIB_CTX * libctx, const char * propq) { - return 0; -} - -int PKCS5_PBKDF2_HMAC_SHA1(const char * pass, int passlen, const unsigned char * salt, int saltlen, int iter, int keylen, unsigned char * out) { - return 0; -} - -int PKCS5_PBKDF2_HMAC(const char * pass, int passlen, const unsigned char * salt, int saltlen, int iter, const EVP_MD * digest, int keylen, unsigned char * out) { - return 0; -} - -int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX * ctx, const char * pass, int passlen, ASN1_TYPE * param, const EVP_CIPHER * cipher, const EVP_MD * md, int en_de) { - return 0; -} - -int PKCS5_v2_PBE_keyivgen_ex(EVP_CIPHER_CTX * ctx, const char * pass, int passlen, ASN1_TYPE * param, const EVP_CIPHER * cipher, const EVP_MD * md, int en_de, OSSL_LIB_CTX * libctx, const char * propq) { - return 0; -} - -int EVP_PBE_scrypt(const char * pass, size_t passlen, const unsigned char * salt, size_t saltlen, uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, unsigned char * key, size_t keylen) { - return 0; -} - -int EVP_PBE_scrypt_ex(const char * pass, size_t passlen, const unsigned char * salt, size_t saltlen, uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, unsigned char * key, size_t keylen, OSSL_LIB_CTX * ctx, const char * propq) { - return 0; -} - -int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX * ctx, const char * pass, int passlen, ASN1_TYPE * param, const EVP_CIPHER * c, const EVP_MD * md, int en_de) { - return 0; -} - -int PKCS5_v2_scrypt_keyivgen_ex(EVP_CIPHER_CTX * ctx, const char * pass, int passlen, ASN1_TYPE * param, const EVP_CIPHER * c, const EVP_MD * md, int en_de, OSSL_LIB_CTX * libctx, const char * propq) { - return 0; -} - -void PKCS5_PBE_add(void) ; - - -int EVP_PBE_CipherInit(ASN1_OBJECT * pbe_obj, const char * pass, int passlen, ASN1_TYPE * param, EVP_CIPHER_CTX * ctx, int en_de) { - return 0; -} - -int EVP_PBE_CipherInit_ex(ASN1_OBJECT * pbe_obj, const char * pass, int passlen, ASN1_TYPE * param, EVP_CIPHER_CTX * ctx, int en_de, OSSL_LIB_CTX * libctx, const char * propq) { - return 0; -} - -int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, int md_nid, EVP_PBE_KEYGEN * keygen) { - return 0; -} - -int EVP_PBE_alg_add(int nid, const EVP_CIPHER * cipher, const EVP_MD * md, EVP_PBE_KEYGEN * keygen) { - return 0; -} - -int EVP_PBE_find(int type, int pbe_nid, int * pcnid, int * pmnid, EVP_PBE_KEYGEN ** pkeygen) { - return 0; -} - -int EVP_PBE_find_ex(int type, int pbe_nid, int * pcnid, int * pmnid, EVP_PBE_KEYGEN ** pkeygen, EVP_PBE_KEYGEN_EX ** pkeygen_ex) { - return 0; -} - -void EVP_PBE_cleanup(void) ; - - -int EVP_PBE_get(int * ptype, int * ppbe_nid, size_t num) { - return 0; -} - -int EVP_PKEY_asn1_get_count(void) { - return 0; -} - -const EVP_PKEY_ASN1_METHOD * EVP_PKEY_asn1_get0(int idx) { - return NULL; -} - -const EVP_PKEY_ASN1_METHOD * EVP_PKEY_asn1_find(ENGINE ** pe, int type) { - return NULL; -} - -const EVP_PKEY_ASN1_METHOD * EVP_PKEY_asn1_find_str(ENGINE ** pe, const char * str, int len) { - return NULL; -} - -int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD * ameth) { - return 0; -} - -int EVP_PKEY_asn1_add_alias(int to, int from) { - return 0; -} - -int EVP_PKEY_asn1_get0_info(int * ppkey_id, int * pkey_base_id, int * ppkey_flags, const char ** pinfo, const char ** ppem_str, const EVP_PKEY_ASN1_METHOD * ameth) { - return 0; -} - -const EVP_PKEY_ASN1_METHOD * EVP_PKEY_get0_asn1(const EVP_PKEY * pkey) { - return NULL; -} - -EVP_PKEY_ASN1_METHOD * EVP_PKEY_asn1_new(int id, int flags, const char * pem_str, const char * info) { - return NULL; -} - -void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD * dst, const EVP_PKEY_ASN1_METHOD * src) ; - - -void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD * ameth) ; - - -void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD * ameth, int (*pub_decode)(EVP_PKEY *, const X509_PUBKEY *), int (*pub_encode)(X509_PUBKEY *, const EVP_PKEY *), int (*pub_cmp)(const EVP_PKEY *, const EVP_PKEY *), int (*pub_print)(BIO *, const EVP_PKEY *, int, ASN1_PCTX *), int (*pkey_size)(const EVP_PKEY *), int (*pkey_bits)(const EVP_PKEY *)) ; - - -void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD * ameth, int (*priv_decode)(EVP_PKEY *, const PKCS8_PRIV_KEY_INFO *), int (*priv_encode)(PKCS8_PRIV_KEY_INFO *, const EVP_PKEY *), int (*priv_print)(BIO *, const EVP_PKEY *, int, ASN1_PCTX *)) ; - - -void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD * ameth, int (*param_decode)(EVP_PKEY *, const unsigned char **, int), int (*param_encode)(const EVP_PKEY *, unsigned char **), int (*param_missing)(const EVP_PKEY *), int (*param_copy)(EVP_PKEY *, const EVP_PKEY *), int (*param_cmp)(const EVP_PKEY *, const EVP_PKEY *), int (*param_print)(BIO *, const EVP_PKEY *, int, ASN1_PCTX *)) ; - - -void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD * ameth, void (*pkey_free)(EVP_PKEY *)) ; - - -void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD * ameth, int (*pkey_ctrl)(EVP_PKEY *, int, long, void *)) ; - - -void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD * ameth, int (*item_verify)(EVP_MD_CTX *, const ASN1_ITEM *, const void *, const X509_ALGOR *, const ASN1_BIT_STRING *, EVP_PKEY *), int (*item_sign)(EVP_MD_CTX *, const ASN1_ITEM *, const void *, X509_ALGOR *, X509_ALGOR *, ASN1_BIT_STRING *)) ; - - -void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD * ameth, int (*siginf_set)(X509_SIG_INFO *, const X509_ALGOR *, const ASN1_STRING *)) ; - - -void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD * ameth, int (*pkey_check)(const EVP_PKEY *)) ; - - -void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD * ameth, int (*pkey_pub_check)(const EVP_PKEY *)) ; - - -void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD * ameth, int (*pkey_param_check)(const EVP_PKEY *)) ; - - -void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD * ameth, int (*set_priv_key)(EVP_PKEY *, const unsigned char *, size_t)) ; - - -void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD * ameth, int (*set_pub_key)(EVP_PKEY *, const unsigned char *, size_t)) ; - - -void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD * ameth, int (*get_priv_key)(const EVP_PKEY *, unsigned char *, size_t *)) ; - - -void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD * ameth, int (*get_pub_key)(const EVP_PKEY *, unsigned char *, size_t *)) ; - - -void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD * ameth, int (*pkey_security_bits)(const EVP_PKEY *)) ; - - -int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX * ctx, const EVP_MD ** md) { - return 0; -} - -int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX * ctx, const EVP_MD * md) { - return 0; -} - -int EVP_PKEY_CTX_set1_id(EVP_PKEY_CTX * ctx, const void * id, int len) { - return 0; -} - -int EVP_PKEY_CTX_get1_id(EVP_PKEY_CTX * ctx, void * id) { - return 0; -} - -int EVP_PKEY_CTX_get1_id_len(EVP_PKEY_CTX * ctx, size_t * id_len) { - return 0; -} - -int EVP_PKEY_CTX_set_kem_op(EVP_PKEY_CTX * ctx, const char * op) { - return 0; -} - -const char * EVP_PKEY_get0_type_name(const EVP_PKEY * key) { - return NULL; -} - -int EVP_PKEY_CTX_set_mac_key(EVP_PKEY_CTX * ctx, const unsigned char * key, int keylen) { - return 0; -} - -const EVP_PKEY_METHOD * EVP_PKEY_meth_find(int type) { - return NULL; -} - -EVP_PKEY_METHOD * EVP_PKEY_meth_new(int id, int flags) { - return NULL; -} - -void EVP_PKEY_meth_get0_info(int * ppkey_id, int * pflags, const EVP_PKEY_METHOD * meth) ; - - -void EVP_PKEY_meth_copy(EVP_PKEY_METHOD * dst, const EVP_PKEY_METHOD * src) ; - - -void EVP_PKEY_meth_free(EVP_PKEY_METHOD * pmeth) ; - - -int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD * pmeth) { - return 0; -} - -int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD * pmeth) { - return 0; -} - -size_t EVP_PKEY_meth_get_count(void) { - return 0; -} - -const EVP_PKEY_METHOD * EVP_PKEY_meth_get0(size_t idx) { - return NULL; -} - -EVP_KEYMGMT * EVP_KEYMGMT_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { - return NULL; -} - -int EVP_KEYMGMT_up_ref(EVP_KEYMGMT * keymgmt) { - return 0; -} - -void EVP_KEYMGMT_free(EVP_KEYMGMT * keymgmt) ; - - -const OSSL_PROVIDER * EVP_KEYMGMT_get0_provider(const EVP_KEYMGMT * keymgmt) { - return NULL; -} - -const char * EVP_KEYMGMT_get0_name(const EVP_KEYMGMT * keymgmt) { - return NULL; -} - -const char * EVP_KEYMGMT_get0_description(const EVP_KEYMGMT * keymgmt) { - return NULL; -} - -int EVP_KEYMGMT_is_a(const EVP_KEYMGMT * keymgmt, const char * name) { - return 0; -} - -void EVP_KEYMGMT_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_KEYMGMT *, void *), void * arg) ; - - -int EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT * keymgmt, void (*fn)(const char *, void *), void * data) { - return 0; -} - -const OSSL_PARAM * EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT * keymgmt) { - return NULL; -} - -const OSSL_PARAM * EVP_KEYMGMT_settable_params(const EVP_KEYMGMT * keymgmt) { - return NULL; -} - -const OSSL_PARAM * EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT * keymgmt) { - return NULL; -} - -const OSSL_PARAM * EVP_KEYMGMT_gen_gettable_params(const EVP_KEYMGMT * keymgmt) { - return NULL; -} - -EVP_SKEYMGMT * EVP_SKEYMGMT_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { - return NULL; -} - -int EVP_SKEYMGMT_up_ref(EVP_SKEYMGMT * keymgmt) { - return 0; -} - -void EVP_SKEYMGMT_free(EVP_SKEYMGMT * keymgmt) ; - - -const OSSL_PROVIDER * EVP_SKEYMGMT_get0_provider(const EVP_SKEYMGMT * keymgmt) { - return NULL; -} - -const char * EVP_SKEYMGMT_get0_name(const EVP_SKEYMGMT * keymgmt) { - return NULL; -} - -const char * EVP_SKEYMGMT_get0_description(const EVP_SKEYMGMT * keymgmt) { - return NULL; -} - -int EVP_SKEYMGMT_is_a(const EVP_SKEYMGMT * keymgmt, const char * name) { - return 0; -} - -void EVP_SKEYMGMT_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_SKEYMGMT *, void *), void * arg) ; - - -int EVP_SKEYMGMT_names_do_all(const EVP_SKEYMGMT * keymgmt, void (*fn)(const char *, void *), void * data) { - return 0; -} - -const OSSL_PARAM * EVP_SKEYMGMT_get0_gen_settable_params(const EVP_SKEYMGMT * skeymgmt) { - return NULL; -} - -const OSSL_PARAM * EVP_SKEYMGMT_get0_imp_settable_params(const EVP_SKEYMGMT * skeymgmt) { - return NULL; -} - -EVP_PKEY_CTX * EVP_PKEY_CTX_new(EVP_PKEY * pkey, ENGINE * e) { - return NULL; -} - -EVP_PKEY_CTX * EVP_PKEY_CTX_new_id(int id, ENGINE * e) { - return NULL; -} - -EVP_PKEY_CTX * EVP_PKEY_CTX_new_from_name(OSSL_LIB_CTX * libctx, const char * name, const char * propquery) { - return NULL; -} - -EVP_PKEY_CTX * EVP_PKEY_CTX_new_from_pkey(OSSL_LIB_CTX * libctx, EVP_PKEY * pkey, const char * propquery) { - return NULL; -} - -EVP_PKEY_CTX * EVP_PKEY_CTX_dup(const EVP_PKEY_CTX * ctx) { - return NULL; -} - -void EVP_PKEY_CTX_free(EVP_PKEY_CTX * ctx) ; - - -int EVP_PKEY_CTX_is_a(EVP_PKEY_CTX * ctx, const char * keytype) { - return 0; -} - -int EVP_PKEY_CTX_get_params(EVP_PKEY_CTX * ctx, OSSL_PARAM * params) { - return 0; -} - -const OSSL_PARAM * EVP_PKEY_CTX_gettable_params(const EVP_PKEY_CTX * ctx) { - return NULL; -} - -int EVP_PKEY_CTX_set_params(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { - return 0; -} - -const OSSL_PARAM * EVP_PKEY_CTX_settable_params(const EVP_PKEY_CTX * ctx) { - return NULL; -} - -int EVP_PKEY_CTX_set_algor_params(EVP_PKEY_CTX * ctx, const X509_ALGOR * alg) { - return 0; -} - -int EVP_PKEY_CTX_get_algor_params(EVP_PKEY_CTX * ctx, X509_ALGOR * alg) { - return 0; -} - -int EVP_PKEY_CTX_get_algor(EVP_PKEY_CTX * ctx, X509_ALGOR ** alg) { - return 0; -} - -int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX * ctx, int keytype, int optype, int cmd, int p1, void * p2) { - return 0; -} - -int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX * ctx, const char * type, const char * value) { - return 0; -} - -int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX * ctx, int keytype, int optype, int cmd, uint64_t value) { - return 0; -} - -int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX * ctx, int cmd, const char * str) { - return 0; -} - -int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX * ctx, int cmd, const char * hex) { - return 0; -} - -int EVP_PKEY_CTX_md(EVP_PKEY_CTX * ctx, int optype, int cmd, const char * md) { - return 0; -} - -int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX * ctx) { - return 0; -} - -void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX * ctx, int * dat, int datlen) ; - - -EVP_PKEY * EVP_PKEY_new_mac_key(int type, ENGINE * e, const unsigned char * key, int keylen) { - return NULL; -} - -EVP_PKEY * EVP_PKEY_new_raw_private_key_ex(OSSL_LIB_CTX * libctx, const char * keytype, const char * propq, const unsigned char * priv, size_t len) { - return NULL; -} - -EVP_PKEY * EVP_PKEY_new_raw_private_key(int type, ENGINE * e, const unsigned char * priv, size_t len) { - return NULL; -} - -EVP_PKEY * EVP_PKEY_new_raw_public_key_ex(OSSL_LIB_CTX * libctx, const char * keytype, const char * propq, const unsigned char * pub, size_t len) { - return NULL; -} - -EVP_PKEY * EVP_PKEY_new_raw_public_key(int type, ENGINE * e, const unsigned char * pub, size_t len) { - return NULL; -} - -int EVP_PKEY_get_raw_private_key(const EVP_PKEY * pkey, unsigned char * priv, size_t * len) { - return 0; -} - -int EVP_PKEY_get_raw_public_key(const EVP_PKEY * pkey, unsigned char * pub, size_t * len) { - return 0; -} - -EVP_PKEY * EVP_PKEY_new_CMAC_key(ENGINE * e, const unsigned char * priv, size_t len, const EVP_CIPHER * cipher) { - return NULL; -} - -void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX * ctx, void * data) ; - - -void * EVP_PKEY_CTX_get_data(const EVP_PKEY_CTX * ctx) { - return NULL; -} - -EVP_PKEY * EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX * ctx) { - return NULL; -} - -EVP_PKEY * EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX * ctx) { - return NULL; -} - -void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX * ctx, void * data) ; - - -void * EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX * ctx) { - return NULL; -} - -int EVP_PKEY_CTX_set_signature(EVP_PKEY_CTX * pctx, const unsigned char * sig, size_t siglen) { - return 0; -} - -void EVP_SIGNATURE_free(EVP_SIGNATURE * signature) ; - - -int EVP_SIGNATURE_up_ref(EVP_SIGNATURE * signature) { - return 0; -} - -OSSL_PROVIDER * EVP_SIGNATURE_get0_provider(const EVP_SIGNATURE * signature) { - return NULL; -} - -EVP_SIGNATURE * EVP_SIGNATURE_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { - return NULL; -} - -int EVP_SIGNATURE_is_a(const EVP_SIGNATURE * signature, const char * name) { - return 0; -} - -const char * EVP_SIGNATURE_get0_name(const EVP_SIGNATURE * signature) { - return NULL; -} - -const char * EVP_SIGNATURE_get0_description(const EVP_SIGNATURE * signature) { - return NULL; -} - -void EVP_SIGNATURE_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_SIGNATURE *, void *), void * data) ; - - -int EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE * signature, void (*fn)(const char *, void *), void * data) { - return 0; -} - -const OSSL_PARAM * EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE * sig) { - return NULL; -} - -const OSSL_PARAM * EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE * sig) { - return NULL; -} - -void EVP_ASYM_CIPHER_free(EVP_ASYM_CIPHER * cipher) ; - - -int EVP_ASYM_CIPHER_up_ref(EVP_ASYM_CIPHER * cipher) { - return 0; -} - -OSSL_PROVIDER * EVP_ASYM_CIPHER_get0_provider(const EVP_ASYM_CIPHER * cipher) { - return NULL; -} - -EVP_ASYM_CIPHER * EVP_ASYM_CIPHER_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { - return NULL; -} - -int EVP_ASYM_CIPHER_is_a(const EVP_ASYM_CIPHER * cipher, const char * name) { - return 0; -} - -const char * EVP_ASYM_CIPHER_get0_name(const EVP_ASYM_CIPHER * cipher) { - return NULL; -} - -const char * EVP_ASYM_CIPHER_get0_description(const EVP_ASYM_CIPHER * cipher) { - return NULL; -} - -void EVP_ASYM_CIPHER_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_ASYM_CIPHER *, void *), void * arg) ; - - -int EVP_ASYM_CIPHER_names_do_all(const EVP_ASYM_CIPHER * cipher, void (*fn)(const char *, void *), void * data) { - return 0; -} - -const OSSL_PARAM * EVP_ASYM_CIPHER_gettable_ctx_params(const EVP_ASYM_CIPHER * ciph) { - return NULL; -} - -const OSSL_PARAM * EVP_ASYM_CIPHER_settable_ctx_params(const EVP_ASYM_CIPHER * ciph) { - return NULL; -} - -void EVP_KEM_free(EVP_KEM * wrap) ; - - -int EVP_KEM_up_ref(EVP_KEM * wrap) { - return 0; -} - -OSSL_PROVIDER * EVP_KEM_get0_provider(const EVP_KEM * wrap) { - return NULL; -} - -EVP_KEM * EVP_KEM_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { - return NULL; -} - -int EVP_KEM_is_a(const EVP_KEM * wrap, const char * name) { - return 0; -} - -const char * EVP_KEM_get0_name(const EVP_KEM * wrap) { - return NULL; -} - -const char * EVP_KEM_get0_description(const EVP_KEM * wrap) { - return NULL; -} - -void EVP_KEM_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_KEM *, void *), void * arg) ; - - -int EVP_KEM_names_do_all(const EVP_KEM * wrap, void (*fn)(const char *, void *), void * data) { - return 0; -} - -const OSSL_PARAM * EVP_KEM_gettable_ctx_params(const EVP_KEM * kem) { - return NULL; -} - -const OSSL_PARAM * EVP_KEM_settable_ctx_params(const EVP_KEM * kem) { - return NULL; -} - -int EVP_PKEY_sign_init(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_sign_init_ex(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_sign_init_ex2(EVP_PKEY_CTX * ctx, EVP_SIGNATURE * algo, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_sign(EVP_PKEY_CTX * ctx, unsigned char * sig, size_t * siglen, const unsigned char * tbs, size_t tbslen) { - return 0; -} - -int EVP_PKEY_sign_message_init(EVP_PKEY_CTX * ctx, EVP_SIGNATURE * algo, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_sign_message_update(EVP_PKEY_CTX * ctx, const unsigned char * in, size_t inlen) { - return 0; -} - -int EVP_PKEY_sign_message_final(EVP_PKEY_CTX * ctx, unsigned char * sig, size_t * siglen) { - return 0; -} - -int EVP_PKEY_verify_init(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_verify_init_ex(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_verify_init_ex2(EVP_PKEY_CTX * ctx, EVP_SIGNATURE * algo, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_verify(EVP_PKEY_CTX * ctx, const unsigned char * sig, size_t siglen, const unsigned char * tbs, size_t tbslen) { - return 0; -} - -int EVP_PKEY_verify_message_init(EVP_PKEY_CTX * ctx, EVP_SIGNATURE * algo, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_verify_message_update(EVP_PKEY_CTX * ctx, const unsigned char * in, size_t inlen) { - return 0; -} - -int EVP_PKEY_verify_message_final(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_verify_recover_init_ex(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_verify_recover_init_ex2(EVP_PKEY_CTX * ctx, EVP_SIGNATURE * algo, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_verify_recover(EVP_PKEY_CTX * ctx, unsigned char * rout, size_t * routlen, const unsigned char * sig, size_t siglen) { - return 0; -} - -int EVP_PKEY_encrypt_init(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_encrypt_init_ex(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_encrypt(EVP_PKEY_CTX * ctx, unsigned char * out, size_t * outlen, const unsigned char * in, size_t inlen) { - return 0; -} - -int EVP_PKEY_decrypt_init(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_decrypt_init_ex(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_decrypt(EVP_PKEY_CTX * ctx, unsigned char * out, size_t * outlen, const unsigned char * in, size_t inlen) { - return 0; -} - -int EVP_PKEY_derive_init(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX * ctx, EVP_PKEY * peer, int validate_peer) { - return 0; -} - -int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX * ctx, EVP_PKEY * peer) { - return 0; -} - -int EVP_PKEY_derive(EVP_PKEY_CTX * ctx, unsigned char * key, size_t * keylen) { - return 0; -} - -int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_auth_encapsulate_init(EVP_PKEY_CTX * ctx, EVP_PKEY * authpriv, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_encapsulate(EVP_PKEY_CTX * ctx, unsigned char * wrappedkey, size_t * wrappedkeylen, unsigned char * genkey, size_t * genkeylen) { - return 0; -} - -int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX * ctx, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_auth_decapsulate_init(EVP_PKEY_CTX * ctx, EVP_PKEY * authpub, const OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_decapsulate(EVP_PKEY_CTX * ctx, unsigned char * unwrapped, size_t * unwrappedlen, const unsigned char * wrapped, size_t wrappedlen) { - return 0; -} - -int EVP_PKEY_fromdata_init(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_fromdata(EVP_PKEY_CTX * ctx, EVP_PKEY ** ppkey, int selection, OSSL_PARAM * param) { - return 0; -} - -const OSSL_PARAM * EVP_PKEY_fromdata_settable(EVP_PKEY_CTX * ctx, int selection) { - return NULL; -} - -int EVP_PKEY_todata(const EVP_PKEY * pkey, int selection, OSSL_PARAM ** params) { - return 0; -} - -int EVP_PKEY_export(const EVP_PKEY * pkey, int selection, OSSL_CALLBACK * export_cb, void * export_cbarg) { - return 0; -} - -const OSSL_PARAM * EVP_PKEY_gettable_params(const EVP_PKEY * pkey) { - return NULL; -} - -int EVP_PKEY_get_params(const EVP_PKEY * pkey, OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_get_int_param(const EVP_PKEY * pkey, const char * key_name, int * out) { - return 0; -} - -int EVP_PKEY_get_size_t_param(const EVP_PKEY * pkey, const char * key_name, size_t * out) { - return 0; -} - -int EVP_PKEY_get_bn_param(const EVP_PKEY * pkey, const char * key_name, BIGNUM ** bn) { - return 0; -} - -int EVP_PKEY_get_utf8_string_param(const EVP_PKEY * pkey, const char * key_name, char * str, size_t max_buf_sz, size_t * out_sz) { - return 0; -} - -int EVP_PKEY_get_octet_string_param(const EVP_PKEY * pkey, const char * key_name, unsigned char * buf, size_t max_buf_sz, size_t * out_sz) { - return 0; -} - -const OSSL_PARAM * EVP_PKEY_settable_params(const EVP_PKEY * pkey) { - return NULL; -} - -int EVP_PKEY_set_params(EVP_PKEY * pkey, OSSL_PARAM * params) { - return 0; -} - -int EVP_PKEY_set_int_param(EVP_PKEY * pkey, const char * key_name, int in) { - return 0; -} - -int EVP_PKEY_set_size_t_param(EVP_PKEY * pkey, const char * key_name, size_t in) { - return 0; -} - -int EVP_PKEY_set_bn_param(EVP_PKEY * pkey, const char * key_name, const BIGNUM * bn) { - return 0; -} - -int EVP_PKEY_set_utf8_string_param(EVP_PKEY * pkey, const char * key_name, const char * str) { - return 0; -} - -int EVP_PKEY_set_octet_string_param(EVP_PKEY * pkey, const char * key_name, const unsigned char * buf, size_t bsize) { - return 0; -} - -int EVP_PKEY_get_ec_point_conv_form(const EVP_PKEY * pkey) { - return 0; -} - -int EVP_PKEY_get_field_type(const EVP_PKEY * pkey) { - return 0; -} - -EVP_PKEY * EVP_PKEY_Q_keygen(OSSL_LIB_CTX * libctx, const char * propq, const char * type, ...) { - return NULL; -} - -int EVP_PKEY_paramgen_init(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_paramgen(EVP_PKEY_CTX * ctx, EVP_PKEY ** ppkey) { - return 0; -} - -int EVP_PKEY_keygen_init(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_keygen(EVP_PKEY_CTX * ctx, EVP_PKEY ** ppkey) { - return 0; -} - -int EVP_PKEY_generate(EVP_PKEY_CTX * ctx, EVP_PKEY ** ppkey) { - return 0; -} - -int EVP_PKEY_check(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_public_check(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_public_check_quick(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_param_check(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_param_check_quick(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_private_check(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_pairwise_check(EVP_PKEY_CTX * ctx) { - return 0; -} - -int EVP_PKEY_set_ex_data(EVP_PKEY * key, int idx, void * arg) { - return 0; -} - -void * EVP_PKEY_get_ex_data(const EVP_PKEY * key, int idx) { - return NULL; -} - -void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX * ctx, EVP_PKEY_gen_cb * cb) ; - - -EVP_PKEY_gen_cb * EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX * ctx) { - return NULL; -} - -int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX * ctx, int idx) { - return 0; -} - -void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD * pmeth, int (*init)(EVP_PKEY_CTX *)) ; - - -void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD * pmeth, int (*copy)(EVP_PKEY_CTX *, const EVP_PKEY_CTX *)) ; - - -void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD * pmeth, void (*cleanup)(EVP_PKEY_CTX *)) ; - - -void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD * pmeth, int (*paramgen_init)(EVP_PKEY_CTX *), int (*paramgen)(EVP_PKEY_CTX *, EVP_PKEY *)) ; - - -void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD * pmeth, int (*keygen_init)(EVP_PKEY_CTX *), int (*keygen)(EVP_PKEY_CTX *, EVP_PKEY *)) ; - - -void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD * pmeth, int (*sign_init)(EVP_PKEY_CTX *), int (*sign)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; - - -void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD * pmeth, int (*verify_init)(EVP_PKEY_CTX *), int (*verify)(EVP_PKEY_CTX *, const unsigned char *, size_t, const unsigned char *, size_t)) ; - - -void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD * pmeth, int (*verify_recover_init)(EVP_PKEY_CTX *), int (*verify_recover)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; - - -void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD * pmeth, int (*signctx_init)(EVP_PKEY_CTX *, EVP_MD_CTX *), int (*signctx)(EVP_PKEY_CTX *, unsigned char *, size_t *, EVP_MD_CTX *)) ; - - -void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD * pmeth, int (*verifyctx_init)(EVP_PKEY_CTX *, EVP_MD_CTX *), int (*verifyctx)(EVP_PKEY_CTX *, const unsigned char *, int, EVP_MD_CTX *)) ; - - -void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD * pmeth, int (*encrypt_init)(EVP_PKEY_CTX *), int (*encryptfn)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; - - -void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD * pmeth, int (*decrypt_init)(EVP_PKEY_CTX *), int (*decrypt)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; - - -void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD * pmeth, int (*derive_init)(EVP_PKEY_CTX *), int (*derive)(EVP_PKEY_CTX *, unsigned char *, size_t *)) ; - - -void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD * pmeth, int (*ctrl)(EVP_PKEY_CTX *, int, int, void *), int (*ctrl_str)(EVP_PKEY_CTX *, const char *, const char *)) ; - - -void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD * pmeth, int (*digestsign)(EVP_MD_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; - - -void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD * pmeth, int (*digestverify)(EVP_MD_CTX *, const unsigned char *, size_t, const unsigned char *, size_t)) ; - - -void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD * pmeth, int (*check)(EVP_PKEY *)) ; - - -void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD * pmeth, int (*check)(EVP_PKEY *)) ; - - -void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD * pmeth, int (*check)(EVP_PKEY *)) ; - - -void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD * pmeth, int (*digest_custom)(EVP_PKEY_CTX *, EVP_MD_CTX *)) ; - - -void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *)) ; - - -void EVP_PKEY_meth_get_copy(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *, const EVP_PKEY_CTX *)) ; - - -void EVP_PKEY_meth_get_cleanup(const EVP_PKEY_METHOD * pmeth, void (**)(EVP_PKEY_CTX *)) ; - - -void EVP_PKEY_meth_get_paramgen(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, EVP_PKEY *)) ; - - -void EVP_PKEY_meth_get_keygen(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, EVP_PKEY *)) ; - - -void EVP_PKEY_meth_get_sign(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; - - -void EVP_PKEY_meth_get_verify(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, const unsigned char *, size_t, const unsigned char *, size_t)) ; - - -void EVP_PKEY_meth_get_verify_recover(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; - - -void EVP_PKEY_meth_get_signctx(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *, EVP_MD_CTX *), int (**)(EVP_PKEY_CTX *, unsigned char *, size_t *, EVP_MD_CTX *)) ; - - -void EVP_PKEY_meth_get_verifyctx(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *, EVP_MD_CTX *), int (**)(EVP_PKEY_CTX *, const unsigned char *, int, EVP_MD_CTX *)) ; - - -void EVP_PKEY_meth_get_encrypt(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; - - -void EVP_PKEY_meth_get_decrypt(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)) ; - - -void EVP_PKEY_meth_get_derive(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *), int (**)(EVP_PKEY_CTX *, unsigned char *, size_t *)) ; - - -void EVP_PKEY_meth_get_ctrl(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *, int, int, void *), int (**)(EVP_PKEY_CTX *, const char *, const char *)) ; - - -void EVP_PKEY_meth_get_digestsign(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_MD_CTX *, unsigned char *, size_t *, const unsigned char *, size_t)); - -void EVP_PKEY_meth_get_digestverify(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_MD_CTX *, const unsigned char *, size_t, const unsigned char *, size_t)); - -void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY *)); - -void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY *)); - -void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY *)); - -void EVP_PKEY_meth_get_digest_custom(const EVP_PKEY_METHOD * pmeth, int (**)(EVP_PKEY_CTX *, EVP_MD_CTX *)); - -void EVP_KEYEXCH_free(EVP_KEYEXCH * exchange) ; - - -int EVP_KEYEXCH_up_ref(EVP_KEYEXCH * exchange) { - return 0; -} - -EVP_KEYEXCH * EVP_KEYEXCH_fetch(OSSL_LIB_CTX * ctx, const char * algorithm, const char * properties) { - return NULL; -} - -OSSL_PROVIDER * EVP_KEYEXCH_get0_provider(const EVP_KEYEXCH * exchange) { - return NULL; -} - -int EVP_KEYEXCH_is_a(const EVP_KEYEXCH * keyexch, const char * name) { - return 0; -} - -const char * EVP_KEYEXCH_get0_name(const EVP_KEYEXCH * keyexch) { - return NULL; -} - -const char * EVP_KEYEXCH_get0_description(const EVP_KEYEXCH * keyexch) { - return NULL; -} - -void EVP_KEYEXCH_do_all_provided(OSSL_LIB_CTX * libctx, void (*fn)(EVP_KEYEXCH *, void *), void * data) ; - - -int EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH * keyexch, void (*fn)(const char *, void *), void * data) { - return 0; -} - -const OSSL_PARAM * EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH * keyexch) { - return NULL; -} - -const OSSL_PARAM * EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH * keyexch) { - return NULL; -} - -void EVP_add_alg_module(void) ; - - -int EVP_PKEY_CTX_set_group_name(EVP_PKEY_CTX * ctx, const char * name) { - return 0; -} - -int EVP_PKEY_CTX_get_group_name(EVP_PKEY_CTX * ctx, char * name, size_t namelen) { - return 0; -} - -int EVP_PKEY_get_group_name(const EVP_PKEY * pkey, char * name, size_t name_sz, size_t * gname_len) { - return 0; -} - -OSSL_LIB_CTX * EVP_PKEY_CTX_get0_libctx(EVP_PKEY_CTX * ctx) { - return NULL; -} - -const char * EVP_PKEY_CTX_get0_propq(const EVP_PKEY_CTX * ctx) { - return NULL; -} - -const OSSL_PROVIDER * EVP_PKEY_CTX_get0_provider(const EVP_PKEY_CTX * ctx) { - return NULL; -} - -int EVP_SKEY_is_a(const EVP_SKEY * skey, const char * name) { - return 0; -} - -EVP_SKEY * EVP_SKEY_import(OSSL_LIB_CTX * libctx, const char * skeymgmtname, const char * propquery, int selection, const OSSL_PARAM * params) { - return NULL; -} - -EVP_SKEY * EVP_SKEY_generate(OSSL_LIB_CTX * libctx, const char * skeymgmtname, const char * propquery, const OSSL_PARAM * params) { - return NULL; -} - -EVP_SKEY * EVP_SKEY_import_raw_key(OSSL_LIB_CTX * libctx, const char * skeymgmtname, unsigned char * key, size_t keylen, const char * propquery) { - return NULL; -} - -int EVP_SKEY_get0_raw_key(const EVP_SKEY * skey, const unsigned char ** key, size_t * len) { - return 0; -} - -const char * EVP_SKEY_get0_key_id(const EVP_SKEY * skey) { - return NULL; -} - -int EVP_SKEY_export(const EVP_SKEY * skey, int selection, OSSL_CALLBACK * export_cb, void * export_cbarg) { - return 0; -} - -int EVP_SKEY_up_ref(EVP_SKEY * skey) { - return 0; -} - -void EVP_SKEY_free(EVP_SKEY * skey) ; - - -const char * EVP_SKEY_get0_skeymgmt_name(const EVP_SKEY * skey) { - return NULL; -} - -const char * EVP_SKEY_get0_provider_name(const EVP_SKEY * skey) { - return NULL; -} - -EVP_SKEY * EVP_SKEY_to_provider(EVP_SKEY * skey, OSSL_LIB_CTX * libctx, OSSL_PROVIDER * prov, const char * propquery) { - return NULL; -} - -#endif /* OSSL_EVP_H */ diff --git a/cpp/ql/test/experimental/stubs/openssl/obj_mac.h b/cpp/ql/test/experimental/stubs/openssl/obj_mac.h new file mode 100644 index 000000000000..8737d21e63e4 --- /dev/null +++ b/cpp/ql/test/experimental/stubs/openssl/obj_mac.h @@ -0,0 +1,3751 @@ +/* + * Generated by crypto/objects/objects.pl + * + * Copyright 2000-2025 The OpenSSL Project Authors. All Rights Reserved. + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +# define EVP_PKEY_NONE NID_undef +# define EVP_PKEY_RSA NID_rsaEncryption +# define EVP_PKEY_RSA2 NID_rsa +# define EVP_PKEY_RSA_PSS NID_rsassaPss +# define EVP_PKEY_DSA NID_dsa +# define EVP_PKEY_DSA1 NID_dsa_2 +# define EVP_PKEY_DSA2 NID_dsaWithSHA +# define EVP_PKEY_DSA3 NID_dsaWithSHA1 +# define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 +# define EVP_PKEY_DH NID_dhKeyAgreement +# define EVP_PKEY_DHX NID_dhpublicnumber +# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey +# define EVP_PKEY_SM2 NID_sm2 +# define EVP_PKEY_HMAC NID_hmac +# define EVP_PKEY_CMAC NID_cmac +# define EVP_PKEY_SCRYPT NID_id_scrypt +# define EVP_PKEY_TLS1_PRF NID_tls1_prf +# define EVP_PKEY_HKDF NID_hkdf +# define EVP_PKEY_POLY1305 NID_poly1305 +# define EVP_PKEY_SIPHASH NID_siphash +# define EVP_PKEY_X25519 NID_X25519 +# define EVP_PKEY_ED25519 NID_ED25519 +# define EVP_PKEY_X448 NID_X448 +# define EVP_PKEY_ED448 NID_ED448 + +#define NID_crl_reason 141 +#define NID_invalidity_date 142 +#define NID_hold_instruction_code 430 +#define NID_undef 0 +#define NID_pkcs9_emailAddress 48 +#define NID_crl_number 88 +#define SN_aes_256_cbc "AES-256-CBC" +#define NID_id_it_caCerts 1223 +#define NID_id_it_rootCaCert 1254 +#define NID_id_it_crlStatusList 1256 +#define NID_id_it_certReqTemplate 1225 +#define NID_id_regCtrl_algId 1259 +#define NID_id_regCtrl_rsaKeyLen 1260 +#define NID_pkcs7_signed 22 +#define NID_pkcs7_data 21 +#define NID_ED25519 1087 +#define NID_ED448 1088 +#define SN_sha256 "SHA256" +#define NID_hmac 855 +#define SN_X9_62_prime192v1 "prime192v1" +#define SN_X9_62_prime256v1 "prime256v1" +#define NID_grasshopper_mac NID_kuznyechik_mac +#define SN_grasshopper_mac SN_kuznyechik_mac +#define NID_grasshopper_cfb NID_kuznyechik_cfb +#define SN_grasshopper_cfb SN_kuznyechik_cfb +#define NID_grasshopper_cbc NID_kuznyechik_cbc +#define SN_grasshopper_cbc SN_kuznyechik_cbc +#define NID_grasshopper_ofb NID_kuznyechik_ofb +#define SN_grasshopper_ofb SN_kuznyechik_ofb +#define NID_grasshopper_ctr NID_kuznyechik_ctr +#define SN_grasshopper_ctr SN_kuznyechik_ctr +#define NID_grasshopper_ecb NID_kuznyechik_ecb +#define SN_grasshopper_ecb SN_kuznyechik_ecb +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 NID_kuznyechik_kexp15 +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 SN_kuznyechik_kexp15 +#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 NID_magma_kexp15 +#define SN_id_tc26_wrap_gostr3412_2015_magma_kexp15 SN_magma_kexp15 +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac NID_kuznyechik_ctr_acpkm_omac +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac SN_kuznyechik_ctr_acpkm_omac +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm NID_kuznyechik_ctr_acpkm +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm SN_kuznyechik_ctr_acpkm +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac NID_magma_ctr_acpkm_omac +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac SN_magma_ctr_acpkm_omac +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm NID_magma_ctr_acpkm +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm SN_magma_ctr_acpkm +#define NID_ML_KEM_1024 1456 +#define LN_ML_KEM_1024 "ML-KEM-1024" +#define SN_ML_KEM_1024 "id-alg-ml-kem-1024" +#define NID_ML_KEM_768 1455 +#define LN_ML_KEM_768 "ML-KEM-768" +#define SN_ML_KEM_768 "id-alg-ml-kem-768" +#define NID_ML_KEM_512 1454 +#define LN_ML_KEM_512 "ML-KEM-512" +#define SN_ML_KEM_512 "id-alg-ml-kem-512" +#define NID_tcg_tr_cat_PublicKey 1453 +#define LN_tcg_tr_cat_PublicKey "Public Key Trait Category" +#define SN_tcg_tr_cat_PublicKey "tcg-tr-cat-PublicKey" +#define NID_tcg_tr_cat_RTM 1452 +#define LN_tcg_tr_cat_RTM "Root of Trust of Measurement Trait Category" +#define SN_tcg_tr_cat_RTM "tcg-tr-cat-RTM" +#define NID_tcg_tr_cat_platformFirmwareUpdateCompliance 1451 +#define LN_tcg_tr_cat_platformFirmwareUpdateCompliance "Platform Firmware Update Compliance Trait Category" +#define SN_tcg_tr_cat_platformFirmwareUpdateCompliance "tcg-tr-cat-platformFirmwareUpdateCompliance" +#define NID_tcg_tr_cat_platformFirmwareSignatureVerification 1450 +#define LN_tcg_tr_cat_platformFirmwareSignatureVerification "Platform Firmware Signature Verification Trait Category" +#define SN_tcg_tr_cat_platformFirmwareSignatureVerification "tcg-tr-cat-platformFirmwareSignatureVerification" +#define NID_tcg_tr_cat_platformHardwareCapabilities 1449 +#define LN_tcg_tr_cat_platformHardwareCapabilities "Platform Hardware Capabilities Trait Category" +#define SN_tcg_tr_cat_platformHardwareCapabilities "tcg-tr-cat-platformHardwareCapabilities" +#define NID_tcg_tr_cat_platformFirmwareCapabilities 1448 +#define LN_tcg_tr_cat_platformFirmwareCapabilities "Platform Firmware Capabilities Trait Category" +#define SN_tcg_tr_cat_platformFirmwareCapabilities "tcg-tr-cat-platformFirmwareCapabilities" +#define NID_tcg_tr_cat_PEN 1447 +#define LN_tcg_tr_cat_PEN "Private Enterprise Number Trait Category" +#define SN_tcg_tr_cat_PEN "tcg-tr-cat-PEN" +#define NID_tcg_tr_cat_attestationProtocol 1446 +#define LN_tcg_tr_cat_attestationProtocol "Attestation Protocol Trait Category" +#define SN_tcg_tr_cat_attestationProtocol "tcg-tr-cat-attestationProtocol" +#define NID_tcg_tr_cat_networkMAC 1445 +#define LN_tcg_tr_cat_networkMAC "Network MAC Trait Category" +#define SN_tcg_tr_cat_networkMAC "tcg-tr-cat-networkMAC" +#define NID_tcg_tr_cat_ISO9000 1444 +#define LN_tcg_tr_cat_ISO9000 "ISO 9000 Trait Category" +#define SN_tcg_tr_cat_ISO9000 "tcg-tr-cat-ISO9000" +#define NID_tcg_tr_cat_FIPSLevel 1443 +#define LN_tcg_tr_cat_FIPSLevel "FIPS Level Trait Category" +#define SN_tcg_tr_cat_FIPSLevel "tcg-tr-cat-FIPSLevel" +#define NID_tcg_tr_cat_componentIdentifierV11 1442 +#define LN_tcg_tr_cat_componentIdentifierV11 "Component Identifier V1.1 Trait Category" +#define SN_tcg_tr_cat_componentIdentifierV11 "tcg-tr-cat-componentIdentifierV11" +#define NID_tcg_tr_cat_CommonCriteria 1441 +#define LN_tcg_tr_cat_CommonCriteria "Common Criteria Trait Category" +#define SN_tcg_tr_cat_CommonCriteria "tcg-tr-cat-CommonCriteria" +#define NID_tcg_tr_cat_genericCertificate 1440 +#define LN_tcg_tr_cat_genericCertificate "Generic Certificate Trait Category" +#define SN_tcg_tr_cat_genericCertificate "tcg-tr-cat-genericCertificate" +#define NID_tcg_tr_cat_RebasePlatformCertificate 1439 +#define LN_tcg_tr_cat_RebasePlatformCertificate "Rebase Platform Certificate Trait Category" +#define SN_tcg_tr_cat_RebasePlatformCertificate "tcg-tr-cat-RebasePlatformCertificate" +#define NID_tcg_tr_cat_DeltaPlatformCertificate 1438 +#define LN_tcg_tr_cat_DeltaPlatformCertificate "Delta Platform Certificate Trait Category" +#define SN_tcg_tr_cat_DeltaPlatformCertificate "tcg-tr-cat-DeltaPlatformCertificate" +#define NID_tcg_tr_cat_PlatformCertificate 1437 +#define LN_tcg_tr_cat_PlatformCertificate "Platform Certificate Trait Category" +#define SN_tcg_tr_cat_PlatformCertificate "tcg-tr-cat-PlatformCertificate" +#define NID_tcg_tr_cat_PEMCertificate 1436 +#define LN_tcg_tr_cat_PEMCertificate "PEM Certificate Trait Category" +#define SN_tcg_tr_cat_PEMCertificate "tcg-tr-cat-PEMCertificate" +#define NID_tcg_tr_cat_SPDMCertificate 1435 +#define LN_tcg_tr_cat_SPDMCertificate "SPDM Certificate Trait Category" +#define SN_tcg_tr_cat_SPDMCertificate "tcg-tr-cat-SPDMCertificate" +#define NID_tcg_tr_cat_DICECertificate 1434 +#define LN_tcg_tr_cat_DICECertificate "DICE Certificate Trait Category" +#define SN_tcg_tr_cat_DICECertificate "tcg-tr-cat-DICECertificate" +#define NID_tcg_tr_cat_IDevIDCertificate 1433 +#define LN_tcg_tr_cat_IDevIDCertificate "IDevID Certificate Trait Category" +#define SN_tcg_tr_cat_IDevIDCertificate "tcg-tr-cat-IDevIDCertificate" +#define NID_tcg_tr_cat_IAKCertificate 1432 +#define LN_tcg_tr_cat_IAKCertificate "IAK Certificate Trait Category" +#define SN_tcg_tr_cat_IAKCertificate "tcg-tr-cat-IAKCertificate" +#define NID_tcg_tr_cat_EKCertificate 1431 +#define LN_tcg_tr_cat_EKCertificate "EK Certificate Trait Category" +#define SN_tcg_tr_cat_EKCertificate "tcg-tr-cat-EKCertificate" +#define NID_tcg_tr_cat_componentFieldReplaceable 1430 +#define LN_tcg_tr_cat_componentFieldReplaceable "Component Field Replaceable Trait Category" +#define SN_tcg_tr_cat_componentFieldReplaceable "tcg-tr-cat-componentFieldReplaceable" +#define NID_tcg_tr_cat_componentRevision 1429 +#define LN_tcg_tr_cat_componentRevision "Component Revision Trait Category" +#define SN_tcg_tr_cat_componentRevision "tcg-tr-cat-componentRevision" +#define NID_tcg_tr_cat_componentLocation 1428 +#define LN_tcg_tr_cat_componentLocation "Component Location Trait Category" +#define SN_tcg_tr_cat_componentLocation "tcg-tr-cat-componentLocation" +#define NID_tcg_tr_cat_componentStatus 1427 +#define LN_tcg_tr_cat_componentStatus "Component Status Trait Category" +#define SN_tcg_tr_cat_componentStatus "tcg-tr-cat-componentStatus" +#define NID_tcg_tr_cat_componentSerial 1426 +#define LN_tcg_tr_cat_componentSerial "Component Serial Trait Category" +#define SN_tcg_tr_cat_componentSerial "tcg-tr-cat-componentSerial" +#define NID_tcg_tr_cat_componentModel 1425 +#define LN_tcg_tr_cat_componentModel "Component Model Trait Category" +#define SN_tcg_tr_cat_componentModel "tcg-tr-cat-componentModel" +#define NID_tcg_tr_cat_componentManufacturer 1424 +#define LN_tcg_tr_cat_componentManufacturer "Component Manufacturer Trait Category" +#define SN_tcg_tr_cat_componentManufacturer "tcg-tr-cat-componentManufacturer" +#define NID_tcg_tr_cat_componentClass 1423 +#define LN_tcg_tr_cat_componentClass "Component Class Trait Category" +#define SN_tcg_tr_cat_componentClass "tcg-tr-cat-componentClass" +#define NID_tcg_tr_cat_platformOwnership 1422 +#define LN_tcg_tr_cat_platformOwnership "Platform Ownership Trait Category" +#define SN_tcg_tr_cat_platformOwnership "tcg-tr-cat-platformOwnership" +#define NID_tcg_tr_cat_platformManufacturerIdentifier 1421 +#define LN_tcg_tr_cat_platformManufacturerIdentifier "Platform Manufacturer Identifier Trait Category" +#define SN_tcg_tr_cat_platformManufacturerIdentifier "tcg-tr-cat-platformManufacturerIdentifier" +#define NID_tcg_tr_cat_platformSerial 1420 +#define LN_tcg_tr_cat_platformSerial "Platform Serial Trait Category" +#define SN_tcg_tr_cat_platformSerial "tcg-tr-cat-platformSerial" +#define NID_tcg_tr_cat_platformVersion 1419 +#define LN_tcg_tr_cat_platformVersion "Platform Version Trait Category" +#define SN_tcg_tr_cat_platformVersion "tcg-tr-cat-platformVersion" +#define NID_tcg_tr_cat_platformModel 1418 +#define LN_tcg_tr_cat_platformModel "Platform Model Trait Category" +#define SN_tcg_tr_cat_platformModel "tcg-tr-cat-platformModel" +#define NID_tcg_tr_cat_platformManufacturer 1417 +#define LN_tcg_tr_cat_platformManufacturer "Platform Manufacturer Trait Category" +#define SN_tcg_tr_cat_platformManufacturer "tcg-tr-cat-platformManufacturer" +#define NID_tcg_tr_ID_PublicKey 1416 +#define LN_tcg_tr_ID_PublicKey "Public Key Trait" +#define SN_tcg_tr_ID_PublicKey "tcg-tr-ID-PublicKey" +#define NID_tcg_tr_ID_PEMCertString 1415 +#define LN_tcg_tr_ID_PEMCertString "PEM-Encoded Certificate String Trait" +#define SN_tcg_tr_ID_PEMCertString "tcg-tr-ID-PEMCertString" +#define NID_tcg_tr_ID_IA5String 1414 +#define LN_tcg_tr_ID_IA5String "IA5String Trait" +#define SN_tcg_tr_ID_IA5String "tcg-tr-ID-IA5String" +#define NID_tcg_tr_ID_UTF8String 1413 +#define LN_tcg_tr_ID_UTF8String "UTF8String Trait" +#define SN_tcg_tr_ID_UTF8String "tcg-tr-ID-UTF8String" +#define NID_tcg_tr_ID_URI 1412 +#define LN_tcg_tr_ID_URI "Uniform Resource Identifier Trait" +#define SN_tcg_tr_ID_URI "tcg-tr-ID-URI" +#define NID_tcg_tr_ID_status 1411 +#define LN_tcg_tr_ID_status "Attribute Status Trait" +#define SN_tcg_tr_ID_status "tcg-tr-ID-status" +#define NID_tcg_tr_ID_RTM 1410 +#define LN_tcg_tr_ID_RTM "Root of Trust for Measurement Trait" +#define SN_tcg_tr_ID_RTM "tcg-tr-ID-RTM" +#define NID_tcg_tr_ID_platformHardwareCapabilities 1409 +#define LN_tcg_tr_ID_platformHardwareCapabilities "Platform Hardware Capabilities Trait" +#define SN_tcg_tr_ID_platformHardwareCapabilities "tcg-tr-ID-platformHardwareCapabilities" +#define NID_tcg_tr_ID_platformFirmwareUpdateCompliance 1408 +#define LN_tcg_tr_ID_platformFirmwareUpdateCompliance "Platform Firmware Update Compliance Trait" +#define SN_tcg_tr_ID_platformFirmwareUpdateCompliance "tcg-tr-ID-platformFirmwareUpdateCompliance" +#define NID_tcg_tr_ID_platformFirmwareSignatureVerification 1407 +#define LN_tcg_tr_ID_platformFirmwareSignatureVerification "Platform Firmware Signature Verification Trait" +#define SN_tcg_tr_ID_platformFirmwareSignatureVerification "tcg-tr-ID-platformFirmwareSignatureVerification" +#define NID_tcg_tr_ID_platformFirmwareCapabilities 1406 +#define LN_tcg_tr_ID_platformFirmwareCapabilities "Platform Firmware Capabilities Trait" +#define SN_tcg_tr_ID_platformFirmwareCapabilities "tcg-tr-ID-platformFirmwareCapabilities" +#define NID_tcg_tr_ID_PEN 1405 +#define LN_tcg_tr_ID_PEN "Private Enterprise Number Trait" +#define SN_tcg_tr_ID_PEN "tcg-tr-ID-PEN" +#define NID_tcg_tr_ID_OID 1404 +#define LN_tcg_tr_ID_OID "Object Identifier Trait" +#define SN_tcg_tr_ID_OID "tcg-tr-ID-OID" +#define NID_tcg_tr_ID_networkMAC 1403 +#define LN_tcg_tr_ID_networkMAC "Network MAC Trait" +#define SN_tcg_tr_ID_networkMAC "tcg-tr-ID-networkMAC" +#define NID_tcg_tr_ID_ISO9000Level 1402 +#define LN_tcg_tr_ID_ISO9000Level "ISO 9000 Level Trait" +#define SN_tcg_tr_ID_ISO9000Level "tcg-tr-ID-ISO9000Level" +#define NID_tcg_tr_ID_FIPSLevel 1401 +#define LN_tcg_tr_ID_FIPSLevel "FIPS Level Trait" +#define SN_tcg_tr_ID_FIPSLevel "tcg-tr-ID-FIPSLevel" +#define NID_tcg_tr_ID_componentIdentifierV11 1400 +#define LN_tcg_tr_ID_componentIdentifierV11 "Component Identifier V1.1 Trait" +#define SN_tcg_tr_ID_componentIdentifierV11 "tcg-tr-ID-componentIdentifierV11" +#define NID_tcg_tr_ID_componentClass 1399 +#define LN_tcg_tr_ID_componentClass "Component Class Trait" +#define SN_tcg_tr_ID_componentClass "tcg-tr-ID-componentClass" +#define NID_tcg_tr_ID_CommonCriteria 1398 +#define LN_tcg_tr_ID_CommonCriteria "Common Criteria Trait" +#define SN_tcg_tr_ID_CommonCriteria "tcg-tr-ID-CommonCriteria" +#define NID_tcg_tr_ID_CertificateIdentifier 1397 +#define LN_tcg_tr_ID_CertificateIdentifier "Certificate Identifier Trait" +#define SN_tcg_tr_ID_CertificateIdentifier "tcg-tr-ID-CertificateIdentifier" +#define NID_tcg_tr_ID_Boolean 1396 +#define LN_tcg_tr_ID_Boolean "Boolean Trait" +#define SN_tcg_tr_ID_Boolean "tcg-tr-ID-Boolean" +#define NID_tcg_tr_registry 1395 +#define LN_tcg_tr_registry "TCG Trait Registries" +#define SN_tcg_tr_registry "tcg-tr-registry" +#define NID_tcg_tr_category 1394 +#define LN_tcg_tr_category "TCG Trait Categories" +#define SN_tcg_tr_category "tcg-tr-category" +#define NID_tcg_tr_ID 1393 +#define LN_tcg_tr_ID "TCG Trait Identifiers" +#define SN_tcg_tr_ID "tcg-tr-ID" +#define NID_tcg_cap_verifiedPlatformCertificate 1392 +#define LN_tcg_cap_verifiedPlatformCertificate "TCG Verified Platform Certificate CA Policy" +#define SN_tcg_cap_verifiedPlatformCertificate "tcg-cap-verifiedPlatformCertificate" +#define NID_tcg_registry_componentClass_disk 1391 +#define LN_tcg_registry_componentClass_disk "Disk Component Class" +#define SN_tcg_registry_componentClass_disk "tcg-registry-componentClass-disk" +#define NID_tcg_registry_componentClass_pcie 1390 +#define LN_tcg_registry_componentClass_pcie "PCIE Component Class" +#define SN_tcg_registry_componentClass_pcie "tcg-registry-componentClass-pcie" +#define NID_tcg_registry_componentClass_dmtf 1389 +#define LN_tcg_registry_componentClass_dmtf "Distributed Management Task Force Registry" +#define SN_tcg_registry_componentClass_dmtf "tcg-registry-componentClass-dmtf" +#define NID_tcg_registry_componentClass_ietf 1388 +#define LN_tcg_registry_componentClass_ietf "Internet Engineering Task Force Registry" +#define SN_tcg_registry_componentClass_ietf "tcg-registry-componentClass-ietf" +#define NID_tcg_registry_componentClass_tcg 1387 +#define LN_tcg_registry_componentClass_tcg "Trusted Computed Group Registry" +#define SN_tcg_registry_componentClass_tcg "tcg-registry-componentClass-tcg" +#define NID_tcg_registry_componentClass 1386 +#define LN_tcg_registry_componentClass "TCG Component Class" +#define SN_tcg_registry_componentClass "tcg-registry-componentClass" +#define NID_tcg_address_bluetoothmac 1385 +#define LN_tcg_address_bluetoothmac "Bluetooth MAC Address" +#define SN_tcg_address_bluetoothmac "tcg-address-bluetoothmac" +#define NID_tcg_address_wlanmac 1384 +#define LN_tcg_address_wlanmac "WLAN MAC Address" +#define SN_tcg_address_wlanmac "tcg-address-wlanmac" +#define NID_tcg_address_ethernetmac 1383 +#define LN_tcg_address_ethernetmac "Ethernet MAC Address" +#define SN_tcg_address_ethernetmac "tcg-address-ethernetmac" +#define NID_tcg_prt_tpmIdProtocol 1382 +#define LN_tcg_prt_tpmIdProtocol "TCG TPM Protocol" +#define SN_tcg_prt_tpmIdProtocol "tcg-prt-tpmIdProtocol" +#define NID_tcg_ce_virtualPlatformBackupService 1381 +#define LN_tcg_ce_virtualPlatformBackupService "Virtual Platform Backup Service" +#define SN_tcg_ce_virtualPlatformBackupService "tcg-ce-virtualPlatformBackupService" +#define NID_tcg_ce_migrationControllerRegistrationService 1380 +#define LN_tcg_ce_migrationControllerRegistrationService "Migration Controller Registration Service" +#define SN_tcg_ce_migrationControllerRegistrationService "tcg-ce-migrationControllerRegistrationService" +#define NID_tcg_ce_migrationControllerAttestationService 1379 +#define LN_tcg_ce_migrationControllerAttestationService "Migration Controller Attestation Service" +#define SN_tcg_ce_migrationControllerAttestationService "tcg-ce-migrationControllerAttestationService" +#define NID_tcg_ce_virtualPlatformAttestationService 1378 +#define LN_tcg_ce_virtualPlatformAttestationService "Virtual Platform Attestation Service" +#define SN_tcg_ce_virtualPlatformAttestationService "tcg-ce-virtualPlatformAttestationService" +#define NID_tcg_ce_relevantManifests 1377 +#define LN_tcg_ce_relevantManifests "Relevant Manifests" +#define SN_tcg_ce_relevantManifests "tcg-ce-relevantManifests" +#define NID_tcg_ce_relevantCredentials 1376 +#define LN_tcg_ce_relevantCredentials "Relevant Credentials" +#define SN_tcg_ce_relevantCredentials "tcg-ce-relevantCredentials" +#define NID_tcg_kp_AdditionalPlatformKeyCertificate 1375 +#define LN_tcg_kp_AdditionalPlatformKeyCertificate "Additional Platform Key Certificate" +#define SN_tcg_kp_AdditionalPlatformKeyCertificate "tcg-kp-AdditionalPlatformKeyCertificate" +#define NID_tcg_kp_AdditionalPlatformAttributeCertificate 1374 +#define LN_tcg_kp_AdditionalPlatformAttributeCertificate "Additional Platform Attribute Certificate" +#define SN_tcg_kp_AdditionalPlatformAttributeCertificate "tcg-kp-AdditionalPlatformAttributeCertificate" +#define NID_tcg_kp_DeltaPlatformKeyCertificate 1373 +#define LN_tcg_kp_DeltaPlatformKeyCertificate "Delta Platform Key Certificate" +#define SN_tcg_kp_DeltaPlatformKeyCertificate "tcg-kp-DeltaPlatformKeyCertificate" +#define NID_tcg_kp_DeltaPlatformAttributeCertificate 1372 +#define LN_tcg_kp_DeltaPlatformAttributeCertificate "Delta Platform Attribute Certificate" +#define SN_tcg_kp_DeltaPlatformAttributeCertificate "tcg-kp-DeltaPlatformAttributeCertificate" +#define NID_tcg_kp_PlatformKeyCertificate 1371 +#define LN_tcg_kp_PlatformKeyCertificate "Platform Key Certificate" +#define SN_tcg_kp_PlatformKeyCertificate "tcg-kp-PlatformKeyCertificate" +#define NID_tcg_kp_AIKCertificate 1370 +#define LN_tcg_kp_AIKCertificate "Attestation Identity Key Certificate" +#define SN_tcg_kp_AIKCertificate "tcg-kp-AIKCertificate" +#define NID_tcg_kp_PlatformAttributeCertificate 1369 +#define LN_tcg_kp_PlatformAttributeCertificate "Platform Attribute Certificate" +#define SN_tcg_kp_PlatformAttributeCertificate "tcg-kp-PlatformAttributeCertificate" +#define NID_tcg_kp_EKCertificate 1368 +#define LN_tcg_kp_EKCertificate "Endorsement Key Certificate" +#define SN_tcg_kp_EKCertificate "tcg-kp-EKCertificate" +#define NID_tcg_algorithm_null 1367 +#define LN_tcg_algorithm_null "TCG NULL Algorithm" +#define SN_tcg_algorithm_null "tcg-algorithm-null" +#define NID_tcg_at_platformConfigUri_v3 1366 +#define LN_tcg_at_platformConfigUri_v3 "Platform Configuration URI Version 3" +#define SN_tcg_at_platformConfigUri_v3 "tcg-at-platformConfigUri-v3" +#define NID_tcg_at_platformConfiguration_v3 1365 +#define LN_tcg_at_platformConfiguration_v3 "Platform Configuration Version 3" +#define SN_tcg_at_platformConfiguration_v3 "tcg-at-platformConfiguration-v3" +#define NID_tcg_at_platformConfiguration_v2 1364 +#define LN_tcg_at_platformConfiguration_v2 "Platform Configuration Version 2" +#define SN_tcg_at_platformConfiguration_v2 "tcg-at-platformConfiguration-v2" +#define NID_tcg_at_platformConfiguration_v1 1363 +#define LN_tcg_at_platformConfiguration_v1 "Platform Configuration Version 1" +#define SN_tcg_at_platformConfiguration_v1 "tcg-at-platformConfiguration-v1" +#define NID_tcg_at_cryptographicAnchors 1362 +#define LN_tcg_at_cryptographicAnchors "TCG Cryptographic Anchors" +#define SN_tcg_at_cryptographicAnchors "tcg-at-cryptographicAnchors" +#define NID_tcg_at_tbbSecurityAssertions_v3 1361 +#define LN_tcg_at_tbbSecurityAssertions_v3 "TCG TBB Security Assertions V3" +#define SN_tcg_at_tbbSecurityAssertions_v3 "tcg-at-tbbSecurityAssertions-v3" +#define NID_tcg_at_previousPlatformCertificates 1360 +#define LN_tcg_at_previousPlatformCertificates "TCG Previous Platform Certificates" +#define SN_tcg_at_previousPlatformCertificates "tcg-at-previousPlatformCertificates" +#define NID_tcg_at_tcgCredentialType 1359 +#define LN_tcg_at_tcgCredentialType "TCG Credential Type" +#define SN_tcg_at_tcgCredentialType "tcg-at-tcgCredentialType" +#define NID_tcg_at_tcgCredentialSpecification 1358 +#define LN_tcg_at_tcgCredentialSpecification "TCG Credential Specification" +#define SN_tcg_at_tcgCredentialSpecification "tcg-at-tcgCredentialSpecification" +#define NID_tcg_at_tbbSecurityAssertions 1357 +#define LN_tcg_at_tbbSecurityAssertions "TBB Security Assertions" +#define SN_tcg_at_tbbSecurityAssertions "tcg-at-tbbSecurityAssertions" +#define NID_tcg_at_tpmSecurityAssertions 1356 +#define LN_tcg_at_tpmSecurityAssertions "TPM Security Assertions" +#define SN_tcg_at_tpmSecurityAssertions "tcg-at-tpmSecurityAssertions" +#define NID_tcg_at_tcgPlatformSpecification 1355 +#define LN_tcg_at_tcgPlatformSpecification "TPM Platform Specification" +#define SN_tcg_at_tcgPlatformSpecification "tcg-at-tcgPlatformSpecification" +#define NID_tcg_at_tpmSpecification 1354 +#define LN_tcg_at_tpmSpecification "TPM Specification" +#define SN_tcg_at_tpmSpecification "tcg-at-tpmSpecification" +#define NID_tcg_at_tpmIdLabel 1353 +#define LN_tcg_at_tpmIdLabel "TPM ID Label" +#define SN_tcg_at_tpmIdLabel "tcg-at-tpmIdLabel" +#define NID_tcg_at_tbbSecurityTarget 1352 +#define LN_tcg_at_tbbSecurityTarget "TBB Security Target" +#define SN_tcg_at_tbbSecurityTarget "tcg-at-tbbSecurityTarget" +#define NID_tcg_at_tbbProtectionProfile 1351 +#define LN_tcg_at_tbbProtectionProfile "TBB Protection Profile" +#define SN_tcg_at_tbbProtectionProfile "tcg-at-tbbProtectionProfile" +#define NID_tcg_at_tpmSecurityTarget 1350 +#define LN_tcg_at_tpmSecurityTarget "TPM Security Target" +#define SN_tcg_at_tpmSecurityTarget "tcg-at-tpmSecurityTarget" +#define NID_tcg_at_tpmProtectionProfile 1349 +#define LN_tcg_at_tpmProtectionProfile "TPM Protection Profile" +#define SN_tcg_at_tpmProtectionProfile "tcg-at-tpmProtectionProfile" +#define NID_tcg_at_securityQualities 1348 +#define LN_tcg_at_securityQualities "Security Qualities" +#define SN_tcg_at_securityQualities "tcg-at-securityQualities" +#define NID_tcg_at_tpmVersion 1347 +#define LN_tcg_at_tpmVersion "TPM Version" +#define SN_tcg_at_tpmVersion "tcg-at-tpmVersion" +#define NID_tcg_at_tpmModel 1346 +#define LN_tcg_at_tpmModel "TPM Model" +#define SN_tcg_at_tpmModel "tcg-at-tpmModel" +#define NID_tcg_at_tpmManufacturer 1345 +#define LN_tcg_at_tpmManufacturer "TPM Manufacturer" +#define SN_tcg_at_tpmManufacturer "tcg-at-tpmManufacturer" +#define NID_tcg_at_platformIdentifier 1344 +#define LN_tcg_at_platformIdentifier "TCG Platform Identifier" +#define SN_tcg_at_platformIdentifier "tcg-at-platformIdentifier" +#define NID_tcg_at_platformConfiguration 1343 +#define LN_tcg_at_platformConfiguration "TCG Platform Configuration" +#define SN_tcg_at_platformConfiguration "tcg-at-platformConfiguration" +#define NID_tcg_at_platformSerial 1342 +#define LN_tcg_at_platformSerial "TCG Platform Serial Number" +#define SN_tcg_at_platformSerial "tcg-at-platformSerial" +#define NID_tcg_at_platformVersion 1341 +#define LN_tcg_at_platformVersion "TCG Platform Version" +#define SN_tcg_at_platformVersion "tcg-at-platformVersion" +#define NID_tcg_at_platformModel 1340 +#define LN_tcg_at_platformModel "TCG Platform Model" +#define SN_tcg_at_platformModel "tcg-at-platformModel" +#define NID_tcg_at_platformConfigUri 1339 +#define LN_tcg_at_platformConfigUri "TCG Platform Configuration URI" +#define SN_tcg_at_platformConfigUri "tcg-at-platformConfigUri" +#define NID_tcg_at_platformManufacturerId 1338 +#define LN_tcg_at_platformManufacturerId "TCG Platform Manufacturer ID" +#define SN_tcg_at_platformManufacturerId "tcg-at-platformManufacturerId" +#define NID_tcg_at_platformManufacturerStr 1337 +#define LN_tcg_at_platformManufacturerStr "TCG Platform Manufacturer String" +#define SN_tcg_at_platformManufacturerStr "tcg-at-platformManufacturerStr" +#define NID_tcg_common 1336 +#define LN_tcg_common "Trusted Computing Group Common" +#define SN_tcg_common "tcg-common" +#define NID_tcg_traits 1335 +#define LN_tcg_traits "Trusted Computing Group Traits" +#define SN_tcg_traits "tcg-traits" +#define NID_tcg_registry 1334 +#define LN_tcg_registry "Trusted Computing Group Registry" +#define SN_tcg_registry "tcg-registry" +#define NID_tcg_address 1333 +#define LN_tcg_address "Trusted Computing Group Address Formats" +#define SN_tcg_address "tcg-address" +#define NID_tcg_ca 1332 +#define LN_tcg_ca "Trusted Computing Group Certificate Policies" +#define SN_tcg_ca "tcg-ca" +#define NID_tcg_kp 1331 +#define LN_tcg_kp "Trusted Computing Group Key Purposes" +#define SN_tcg_kp "tcg-kp" +#define NID_tcg_ce 1330 +#define LN_tcg_ce "Trusted Computing Group Certificate Extensions" +#define SN_tcg_ce "tcg-ce" +#define NID_tcg_platformClass 1329 +#define LN_tcg_platformClass "Trusted Computing Group Platform Classes" +#define SN_tcg_platformClass "tcg-platformClass" +#define NID_tcg_algorithm 1328 +#define LN_tcg_algorithm "Trusted Computing Group Algorithms" +#define SN_tcg_algorithm "tcg-algorithm" +#define NID_tcg_protocol 1327 +#define LN_tcg_protocol "Trusted Computing Group Protocols" +#define SN_tcg_protocol "tcg-protocol" +#define NID_tcg_attribute 1326 +#define LN_tcg_attribute "Trusted Computing Group Attributes" +#define SN_tcg_attribute "tcg-attribute" +#define NID_tcg_tcpaSpecVersion 1325 +#define SN_tcg_tcpaSpecVersion "tcg-tcpaSpecVersion" +#define NID_tcg 1324 +#define LN_tcg "Trusted Computing Group" +#define SN_tcg "tcg" +#define NID_zstd 1289 +#define LN_zstd "Zstandard compression" +#define SN_zstd "zstd" +#define NID_brotli 1288 +#define LN_brotli "Brotli compression" +#define SN_brotli "brotli" +#define NID_oracle_jdk_trustedkeyusage 1283 +#define LN_oracle_jdk_trustedkeyusage "Trusted key usage (Oracle)" +#define SN_oracle_jdk_trustedkeyusage "oracle-jdk-trustedkeyusage" +#define NID_oracle 1282 +#define LN_oracle "Oracle organization" +#define SN_oracle "oracle-organization" +#define NID_aes_256_siv 1200 +#define LN_aes_256_siv "aes-256-siv" +#define SN_aes_256_siv "AES-256-SIV" +#define NID_aes_192_siv 1199 +#define LN_aes_192_siv "aes-192-siv" +#define SN_aes_192_siv "AES-192-SIV" +#define NID_aes_128_siv 1198 +#define LN_aes_128_siv "aes-128-siv" +#define SN_aes_128_siv "AES-128-SIV" +#define NID_uacurve9 1169 +#define LN_uacurve9 "DSTU curve 9" +#define SN_uacurve9 "uacurve9" +#define NID_uacurve8 1168 +#define LN_uacurve8 "DSTU curve 8" +#define SN_uacurve8 "uacurve8" +#define NID_uacurve7 1167 +#define LN_uacurve7 "DSTU curve 7" +#define SN_uacurve7 "uacurve7" +#define NID_uacurve6 1166 +#define LN_uacurve6 "DSTU curve 6" +#define SN_uacurve6 "uacurve6" +#define NID_uacurve5 1165 +#define LN_uacurve5 "DSTU curve 5" +#define SN_uacurve5 "uacurve5" +#define NID_uacurve4 1164 +#define LN_uacurve4 "DSTU curve 4" +#define SN_uacurve4 "uacurve4" +#define NID_uacurve3 1163 +#define LN_uacurve3 "DSTU curve 3" +#define SN_uacurve3 "uacurve3" +#define NID_uacurve2 1162 +#define LN_uacurve2 "DSTU curve 2" +#define SN_uacurve2 "uacurve2" +#define NID_uacurve1 1161 +#define LN_uacurve1 "DSTU curve 1" +#define SN_uacurve1 "uacurve1" +#define NID_uacurve0 1160 +#define LN_uacurve0 "DSTU curve 0" +#define SN_uacurve0 "uacurve0" +#define NID_dstu4145be 1159 +#define LN_dstu4145be "DSTU 4145-2002 big endian" +#define SN_dstu4145be "dstu4145be" +#define NID_dstu4145le 1158 +#define LN_dstu4145le "DSTU 4145-2002 little endian" +#define SN_dstu4145le "dstu4145le" +#define NID_dstu34311 1157 +#define LN_dstu34311 "DSTU Gost 34311-95" +#define SN_dstu34311 "dstu34311" +#define NID_hmacWithDstu34311 1156 +#define LN_hmacWithDstu34311 "HMAC DSTU Gost 34311-95" +#define SN_hmacWithDstu34311 "hmacWithDstu34311" +#define NID_dstu28147_wrap 1155 +#define LN_dstu28147_wrap "DSTU Gost 28147-2009 key wrap" +#define SN_dstu28147_wrap "dstu28147-wrap" +#define NID_dstu28147_cfb 1154 +#define LN_dstu28147_cfb "DSTU Gost 28147-2009 CFB mode" +#define SN_dstu28147_cfb "dstu28147-cfb" +#define NID_dstu28147_ofb 1153 +#define LN_dstu28147_ofb "DSTU Gost 28147-2009 OFB mode" +#define SN_dstu28147_ofb "dstu28147-ofb" +#define NID_dstu28147 1152 +#define LN_dstu28147 "DSTU Gost 28147-2009" +#define SN_dstu28147 "dstu28147" +#define NID_ua_pki 1151 +#define SN_ua_pki "ua-pki" +#define NID_ISO_UA 1150 +#define SN_ISO_UA "ISO-UA" +#define NID_modp_8192 1217 +#define SN_modp_8192 "modp_8192" +#define NID_modp_6144 1216 +#define SN_modp_6144 "modp_6144" +#define NID_modp_4096 1215 +#define SN_modp_4096 "modp_4096" +#define NID_modp_3072 1214 +#define SN_modp_3072 "modp_3072" +#define NID_modp_2048 1213 +#define SN_modp_2048 "modp_2048" +#define NID_modp_1536 1212 +#define SN_modp_1536 "modp_1536" +#define NID_ffdhe8192 1130 +#define SN_ffdhe8192 "ffdhe8192" +#define NID_ffdhe6144 1129 +#define SN_ffdhe6144 "ffdhe6144" +#define NID_ffdhe4096 1128 +#define SN_ffdhe4096 "ffdhe4096" +#define NID_ffdhe3072 1127 +#define SN_ffdhe3072 "ffdhe3072" +#define NID_ffdhe2048 1126 +#define SN_ffdhe2048 "ffdhe2048" +#define NID_siphash 1062 +#define LN_siphash "siphash" +#define SN_siphash "SipHash" +#define NID_poly1305 1061 +#define LN_poly1305 "poly1305" +#define SN_poly1305 "Poly1305" +#define NID_auth_any 1064 +#define LN_auth_any "auth-any" +#define SN_auth_any "AuthANY" +#define NID_auth_null 1053 +#define LN_auth_null "auth-null" +#define SN_auth_null "AuthNULL" +#define NID_auth_srp 1052 +#define LN_auth_srp "auth-srp" +#define SN_auth_srp "AuthSRP" +#define NID_auth_gost12 1051 +#define LN_auth_gost12 "auth-gost12" +#define SN_auth_gost12 "AuthGOST12" +#define NID_auth_gost01 1050 +#define LN_auth_gost01 "auth-gost01" +#define SN_auth_gost01 "AuthGOST01" +#define NID_auth_dss 1049 +#define LN_auth_dss "auth-dss" +#define SN_auth_dss "AuthDSS" +#define NID_auth_psk 1048 +#define LN_auth_psk "auth-psk" +#define SN_auth_psk "AuthPSK" +#define NID_auth_ecdsa 1047 +#define LN_auth_ecdsa "auth-ecdsa" +#define SN_auth_ecdsa "AuthECDSA" +#define NID_auth_rsa 1046 +#define LN_auth_rsa "auth-rsa" +#define SN_auth_rsa "AuthRSA" +#define NID_kx_any 1063 +#define LN_kx_any "kx-any" +#define SN_kx_any "KxANY" +#define NID_kx_gost18 1218 +#define LN_kx_gost18 "kx-gost18" +#define SN_kx_gost18 "KxGOST18" +#define NID_kx_gost 1045 +#define LN_kx_gost "kx-gost" +#define SN_kx_gost "KxGOST" +#define NID_kx_srp 1044 +#define LN_kx_srp "kx-srp" +#define SN_kx_srp "KxSRP" +#define NID_kx_psk 1043 +#define LN_kx_psk "kx-psk" +#define SN_kx_psk "KxPSK" +#define NID_kx_rsa_psk 1042 +#define LN_kx_rsa_psk "kx-rsa-psk" +#define SN_kx_rsa_psk "KxRSA_PSK" +#define NID_kx_dhe_psk 1041 +#define LN_kx_dhe_psk "kx-dhe-psk" +#define SN_kx_dhe_psk "KxDHE-PSK" +#define NID_kx_ecdhe_psk 1040 +#define LN_kx_ecdhe_psk "kx-ecdhe-psk" +#define SN_kx_ecdhe_psk "KxECDHE-PSK" +#define NID_kx_dhe 1039 +#define LN_kx_dhe "kx-dhe" +#define SN_kx_dhe "KxDHE" +#define NID_kx_ecdhe 1038 +#define LN_kx_ecdhe "kx-ecdhe" +#define SN_kx_ecdhe "KxECDHE" +#define NID_kx_rsa 1037 +#define LN_kx_rsa "kx-rsa" +#define SN_kx_rsa "KxRSA" +#define SN_ED448 "ED448" +#define SN_ED25519 "ED25519" +#define NID_X448 1035 +#define SN_X448 "X448" +#define NID_X25519 1034 +#define SN_X25519 "X25519" +#define NID_pkInitKDC 1033 +#define LN_pkInitKDC "Signing KDC Response" +#define SN_pkInitKDC "pkInitKDC" +#define NID_pkInitClientAuth 1032 +#define LN_pkInitClientAuth "PKINIT Client Auth" +#define SN_pkInitClientAuth "pkInitClientAuth" +#define NID_id_pkinit 1031 +#define SN_id_pkinit "id-pkinit" +#define NID_x963kdf 1206 +#define LN_x963kdf "x963kdf" +#define SN_x963kdf "X963KDF" +#define NID_x942kdf 1207 +#define LN_x942kdf "x942kdf" +#define SN_x942kdf "X942KDF" +#define NID_sskdf 1205 +#define LN_sskdf "sskdf" +#define SN_sskdf "SSKDF" +#define NID_sshkdf 1203 +#define LN_sshkdf "sshkdf" +#define SN_sshkdf "SSHKDF" +#define NID_hkdf 1036 +#define LN_hkdf "hkdf" +#define SN_hkdf "HKDF" +#define NID_tls1_prf 1021 +#define LN_tls1_prf "tls1-prf" +#define SN_tls1_prf "TLS1-PRF" +#define NID_id_scrypt 973 +#define LN_id_scrypt "scrypt" +#define SN_id_scrypt "id-scrypt" +#define NID_jurisdictionCountryName 957 +#define LN_jurisdictionCountryName "jurisdictionCountryName" +#define SN_jurisdictionCountryName "jurisdictionC" +#define NID_jurisdictionStateOrProvinceName 956 +#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" +#define SN_jurisdictionStateOrProvinceName "jurisdictionST" +#define NID_jurisdictionLocalityName 955 +#define LN_jurisdictionLocalityName "jurisdictionLocalityName" +#define SN_jurisdictionLocalityName "jurisdictionL" +#define NID_ct_cert_scts 954 +#define LN_ct_cert_scts "CT Certificate SCTs" +#define SN_ct_cert_scts "ct_cert_scts" +#define NID_ct_precert_signer 953 +#define LN_ct_precert_signer "CT Precertificate Signer" +#define SN_ct_precert_signer "ct_precert_signer" +#define NID_ct_precert_poison 952 +#define LN_ct_precert_poison "CT Precertificate Poison" +#define SN_ct_precert_poison "ct_precert_poison" +#define NID_ct_precert_scts 951 +#define LN_ct_precert_scts "CT Precertificate SCTs" +#define SN_ct_precert_scts "ct_precert_scts" +#define NID_dh_cofactor_kdf 947 +#define SN_dh_cofactor_kdf "dh-cofactor-kdf" +#define NID_dh_std_kdf 946 +#define SN_dh_std_kdf "dh-std-kdf" +#define NID_dhSinglePass_cofactorDH_sha512kdf_scheme 945 +#define SN_dhSinglePass_cofactorDH_sha512kdf_scheme "dhSinglePass-cofactorDH-sha512kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha384kdf_scheme 944 +#define SN_dhSinglePass_cofactorDH_sha384kdf_scheme "dhSinglePass-cofactorDH-sha384kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha256kdf_scheme 943 +#define SN_dhSinglePass_cofactorDH_sha256kdf_scheme "dhSinglePass-cofactorDH-sha256kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha224kdf_scheme 942 +#define SN_dhSinglePass_cofactorDH_sha224kdf_scheme "dhSinglePass-cofactorDH-sha224kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha1kdf_scheme 941 +#define SN_dhSinglePass_cofactorDH_sha1kdf_scheme "dhSinglePass-cofactorDH-sha1kdf-scheme" +#define NID_dhSinglePass_stdDH_sha512kdf_scheme 940 +#define SN_dhSinglePass_stdDH_sha512kdf_scheme "dhSinglePass-stdDH-sha512kdf-scheme" +#define NID_dhSinglePass_stdDH_sha384kdf_scheme 939 +#define SN_dhSinglePass_stdDH_sha384kdf_scheme "dhSinglePass-stdDH-sha384kdf-scheme" +#define NID_dhSinglePass_stdDH_sha256kdf_scheme 938 +#define SN_dhSinglePass_stdDH_sha256kdf_scheme "dhSinglePass-stdDH-sha256kdf-scheme" +#define NID_dhSinglePass_stdDH_sha224kdf_scheme 937 +#define SN_dhSinglePass_stdDH_sha224kdf_scheme "dhSinglePass-stdDH-sha224kdf-scheme" +#define NID_dhSinglePass_stdDH_sha1kdf_scheme 936 +#define SN_dhSinglePass_stdDH_sha1kdf_scheme "dhSinglePass-stdDH-sha1kdf-scheme" +#define NID_brainpoolP512t1 934 +#define SN_brainpoolP512t1 "brainpoolP512t1" +#define NID_brainpoolP512r1tls13 1287 +#define SN_brainpoolP512r1tls13 "brainpoolP512r1tls13" +#define NID_brainpoolP512r1 933 +#define SN_brainpoolP512r1 "brainpoolP512r1" +#define NID_brainpoolP384t1 932 +#define SN_brainpoolP384t1 "brainpoolP384t1" +#define NID_brainpoolP384r1tls13 1286 +#define SN_brainpoolP384r1tls13 "brainpoolP384r1tls13" +#define NID_brainpoolP384r1 931 +#define SN_brainpoolP384r1 "brainpoolP384r1" +#define NID_brainpoolP320t1 930 +#define SN_brainpoolP320t1 "brainpoolP320t1" +#define NID_brainpoolP320r1 929 +#define SN_brainpoolP320r1 "brainpoolP320r1" +#define NID_brainpoolP256t1 928 +#define SN_brainpoolP256t1 "brainpoolP256t1" +#define NID_brainpoolP256r1tls13 1285 +#define SN_brainpoolP256r1tls13 "brainpoolP256r1tls13" +#define NID_brainpoolP256r1 927 +#define SN_brainpoolP256r1 "brainpoolP256r1" +#define NID_brainpoolP224t1 926 +#define SN_brainpoolP224t1 "brainpoolP224t1" +#define NID_brainpoolP224r1 925 +#define SN_brainpoolP224r1 "brainpoolP224r1" +#define NID_brainpoolP192t1 924 +#define SN_brainpoolP192t1 "brainpoolP192t1" +#define NID_brainpoolP192r1 923 +#define SN_brainpoolP192r1 "brainpoolP192r1" +#define NID_brainpoolP160t1 922 +#define SN_brainpoolP160t1 "brainpoolP160t1" +#define NID_brainpoolP160r1 921 +#define SN_brainpoolP160r1 "brainpoolP160r1" +#define NID_dhpublicnumber 920 +#define LN_dhpublicnumber "X9.42 DH" +#define SN_dhpublicnumber "dhpublicnumber" +#define NID_chacha20 1019 +#define LN_chacha20 "chacha20" +#define SN_chacha20 "ChaCha20" +#define NID_chacha20_poly1305 1018 +#define LN_chacha20_poly1305 "chacha20-poly1305" +#define SN_chacha20_poly1305 "ChaCha20-Poly1305" +#define NID_aes_256_cbc_hmac_sha256 950 +#define LN_aes_256_cbc_hmac_sha256 "aes-256-cbc-hmac-sha256" +#define SN_aes_256_cbc_hmac_sha256 "AES-256-CBC-HMAC-SHA256" +#define NID_aes_192_cbc_hmac_sha256 949 +#define LN_aes_192_cbc_hmac_sha256 "aes-192-cbc-hmac-sha256" +#define SN_aes_192_cbc_hmac_sha256 "AES-192-CBC-HMAC-SHA256" +#define NID_aes_128_cbc_hmac_sha256 948 +#define LN_aes_128_cbc_hmac_sha256 "aes-128-cbc-hmac-sha256" +#define SN_aes_128_cbc_hmac_sha256 "AES-128-CBC-HMAC-SHA256" +#define NID_aes_256_cbc_hmac_sha1 918 +#define LN_aes_256_cbc_hmac_sha1 "aes-256-cbc-hmac-sha1" +#define SN_aes_256_cbc_hmac_sha1 "AES-256-CBC-HMAC-SHA1" +#define NID_aes_192_cbc_hmac_sha1 917 +#define LN_aes_192_cbc_hmac_sha1 "aes-192-cbc-hmac-sha1" +#define SN_aes_192_cbc_hmac_sha1 "AES-192-CBC-HMAC-SHA1" +#define NID_aes_128_cbc_hmac_sha1 916 +#define LN_aes_128_cbc_hmac_sha1 "aes-128-cbc-hmac-sha1" +#define SN_aes_128_cbc_hmac_sha1 "AES-128-CBC-HMAC-SHA1" +#define NID_rc4_hmac_md5 915 +#define LN_rc4_hmac_md5 "rc4-hmac-md5" +#define SN_rc4_hmac_md5 "RC4-HMAC-MD5" +#define NID_cmac 894 +#define LN_cmac "cmac" +#define SN_cmac "CMAC" +#define LN_hmac "hmac" +#define SN_hmac "HMAC" +#define NID_sm4_xts 1290 +#define LN_sm4_xts "sm4-xts" +#define SN_sm4_xts "SM4-XTS" +#define NID_sm4_ccm 1249 +#define LN_sm4_ccm "sm4-ccm" +#define SN_sm4_ccm "SM4-CCM" +#define NID_sm4_gcm 1248 +#define LN_sm4_gcm "sm4-gcm" +#define SN_sm4_gcm "SM4-GCM" +#define NID_sm4_ctr 1139 +#define LN_sm4_ctr "sm4-ctr" +#define SN_sm4_ctr "SM4-CTR" +#define NID_sm4_cfb8 1138 +#define LN_sm4_cfb8 "sm4-cfb8" +#define SN_sm4_cfb8 "SM4-CFB8" +#define NID_sm4_cfb1 1136 +#define LN_sm4_cfb1 "sm4-cfb1" +#define SN_sm4_cfb1 "SM4-CFB1" +#define NID_sm4_cfb128 1137 +#define LN_sm4_cfb128 "sm4-cfb" +#define SN_sm4_cfb128 "SM4-CFB" +#define NID_sm4_ofb128 1135 +#define LN_sm4_ofb128 "sm4-ofb" +#define SN_sm4_ofb128 "SM4-OFB" +#define NID_sm4_cbc 1134 +#define LN_sm4_cbc "sm4-cbc" +#define SN_sm4_cbc "SM4-CBC" +#define NID_sm4_ecb 1133 +#define LN_sm4_ecb "sm4-ecb" +#define SN_sm4_ecb "SM4-ECB" +#define NID_seed_ofb128 778 +#define LN_seed_ofb128 "seed-ofb" +#define SN_seed_ofb128 "SEED-OFB" +#define NID_seed_cfb128 779 +#define LN_seed_cfb128 "seed-cfb" +#define SN_seed_cfb128 "SEED-CFB" +#define NID_seed_cbc 777 +#define LN_seed_cbc "seed-cbc" +#define SN_seed_cbc "SEED-CBC" +#define NID_seed_ecb 776 +#define LN_seed_ecb "seed-ecb" +#define SN_seed_ecb "SEED-ECB" +#define NID_kisa 773 +#define LN_kisa "kisa" +#define SN_kisa "KISA" +#define NID_aria_256_gcm 1125 +#define LN_aria_256_gcm "aria-256-gcm" +#define SN_aria_256_gcm "ARIA-256-GCM" +#define NID_aria_192_gcm 1124 +#define LN_aria_192_gcm "aria-192-gcm" +#define SN_aria_192_gcm "ARIA-192-GCM" +#define NID_aria_128_gcm 1123 +#define LN_aria_128_gcm "aria-128-gcm" +#define SN_aria_128_gcm "ARIA-128-GCM" +#define NID_aria_256_ccm 1122 +#define LN_aria_256_ccm "aria-256-ccm" +#define SN_aria_256_ccm "ARIA-256-CCM" +#define NID_aria_192_ccm 1121 +#define LN_aria_192_ccm "aria-192-ccm" +#define SN_aria_192_ccm "ARIA-192-CCM" +#define NID_aria_128_ccm 1120 +#define LN_aria_128_ccm "aria-128-ccm" +#define SN_aria_128_ccm "ARIA-128-CCM" +#define NID_aria_256_cfb8 1085 +#define LN_aria_256_cfb8 "aria-256-cfb8" +#define SN_aria_256_cfb8 "ARIA-256-CFB8" +#define NID_aria_192_cfb8 1084 +#define LN_aria_192_cfb8 "aria-192-cfb8" +#define SN_aria_192_cfb8 "ARIA-192-CFB8" +#define NID_aria_128_cfb8 1083 +#define LN_aria_128_cfb8 "aria-128-cfb8" +#define SN_aria_128_cfb8 "ARIA-128-CFB8" +#define NID_aria_256_cfb1 1082 +#define LN_aria_256_cfb1 "aria-256-cfb1" +#define SN_aria_256_cfb1 "ARIA-256-CFB1" +#define NID_aria_192_cfb1 1081 +#define LN_aria_192_cfb1 "aria-192-cfb1" +#define SN_aria_192_cfb1 "ARIA-192-CFB1" +#define NID_aria_128_cfb1 1080 +#define LN_aria_128_cfb1 "aria-128-cfb1" +#define SN_aria_128_cfb1 "ARIA-128-CFB1" +#define NID_aria_256_ctr 1079 +#define LN_aria_256_ctr "aria-256-ctr" +#define SN_aria_256_ctr "ARIA-256-CTR" +#define NID_aria_256_ofb128 1078 +#define LN_aria_256_ofb128 "aria-256-ofb" +#define SN_aria_256_ofb128 "ARIA-256-OFB" +#define NID_aria_256_cfb128 1077 +#define LN_aria_256_cfb128 "aria-256-cfb" +#define SN_aria_256_cfb128 "ARIA-256-CFB" +#define NID_aria_256_cbc 1076 +#define LN_aria_256_cbc "aria-256-cbc" +#define SN_aria_256_cbc "ARIA-256-CBC" +#define NID_aria_256_ecb 1075 +#define LN_aria_256_ecb "aria-256-ecb" +#define SN_aria_256_ecb "ARIA-256-ECB" +#define NID_aria_192_ctr 1074 +#define LN_aria_192_ctr "aria-192-ctr" +#define SN_aria_192_ctr "ARIA-192-CTR" +#define NID_aria_192_ofb128 1073 +#define LN_aria_192_ofb128 "aria-192-ofb" +#define SN_aria_192_ofb128 "ARIA-192-OFB" +#define NID_aria_192_cfb128 1072 +#define LN_aria_192_cfb128 "aria-192-cfb" +#define SN_aria_192_cfb128 "ARIA-192-CFB" +#define NID_aria_192_cbc 1071 +#define LN_aria_192_cbc "aria-192-cbc" +#define SN_aria_192_cbc "ARIA-192-CBC" +#define NID_aria_192_ecb 1070 +#define LN_aria_192_ecb "aria-192-ecb" +#define SN_aria_192_ecb "ARIA-192-ECB" +#define NID_aria_128_ctr 1069 +#define LN_aria_128_ctr "aria-128-ctr" +#define SN_aria_128_ctr "ARIA-128-CTR" +#define NID_aria_128_ofb128 1068 +#define LN_aria_128_ofb128 "aria-128-ofb" +#define SN_aria_128_ofb128 "ARIA-128-OFB" +#define NID_aria_128_cfb128 1067 +#define LN_aria_128_cfb128 "aria-128-cfb" +#define SN_aria_128_cfb128 "ARIA-128-CFB" +#define NID_aria_128_cbc 1066 +#define LN_aria_128_cbc "aria-128-cbc" +#define SN_aria_128_cbc "ARIA-128-CBC" +#define NID_aria_128_ecb 1065 +#define LN_aria_128_ecb "aria-128-ecb" +#define SN_aria_128_ecb "ARIA-128-ECB" +#define NID_camellia_256_cfb8 765 +#define LN_camellia_256_cfb8 "camellia-256-cfb8" +#define SN_camellia_256_cfb8 "CAMELLIA-256-CFB8" +#define NID_camellia_192_cfb8 764 +#define LN_camellia_192_cfb8 "camellia-192-cfb8" +#define SN_camellia_192_cfb8 "CAMELLIA-192-CFB8" +#define NID_camellia_128_cfb8 763 +#define LN_camellia_128_cfb8 "camellia-128-cfb8" +#define SN_camellia_128_cfb8 "CAMELLIA-128-CFB8" +#define NID_camellia_256_cfb1 762 +#define LN_camellia_256_cfb1 "camellia-256-cfb1" +#define SN_camellia_256_cfb1 "CAMELLIA-256-CFB1" +#define NID_camellia_192_cfb1 761 +#define LN_camellia_192_cfb1 "camellia-192-cfb1" +#define SN_camellia_192_cfb1 "CAMELLIA-192-CFB1" +#define NID_camellia_128_cfb1 760 +#define LN_camellia_128_cfb1 "camellia-128-cfb1" +#define SN_camellia_128_cfb1 "CAMELLIA-128-CFB1" +#define NID_camellia_256_cmac 972 +#define LN_camellia_256_cmac "camellia-256-cmac" +#define SN_camellia_256_cmac "CAMELLIA-256-CMAC" +#define NID_camellia_256_ctr 971 +#define LN_camellia_256_ctr "camellia-256-ctr" +#define SN_camellia_256_ctr "CAMELLIA-256-CTR" +#define NID_camellia_256_ccm 970 +#define LN_camellia_256_ccm "camellia-256-ccm" +#define SN_camellia_256_ccm "CAMELLIA-256-CCM" +#define NID_camellia_256_gcm 969 +#define LN_camellia_256_gcm "camellia-256-gcm" +#define SN_camellia_256_gcm "CAMELLIA-256-GCM" +#define NID_camellia_256_cfb128 759 +#define LN_camellia_256_cfb128 "camellia-256-cfb" +#define SN_camellia_256_cfb128 "CAMELLIA-256-CFB" +#define NID_camellia_256_ofb128 768 +#define LN_camellia_256_ofb128 "camellia-256-ofb" +#define SN_camellia_256_ofb128 "CAMELLIA-256-OFB" +#define NID_camellia_256_ecb 756 +#define LN_camellia_256_ecb "camellia-256-ecb" +#define SN_camellia_256_ecb "CAMELLIA-256-ECB" +#define NID_camellia_192_cmac 968 +#define LN_camellia_192_cmac "camellia-192-cmac" +#define SN_camellia_192_cmac "CAMELLIA-192-CMAC" +#define NID_camellia_192_ctr 967 +#define LN_camellia_192_ctr "camellia-192-ctr" +#define SN_camellia_192_ctr "CAMELLIA-192-CTR" +#define NID_camellia_192_ccm 966 +#define LN_camellia_192_ccm "camellia-192-ccm" +#define SN_camellia_192_ccm "CAMELLIA-192-CCM" +#define NID_camellia_192_gcm 965 +#define LN_camellia_192_gcm "camellia-192-gcm" +#define SN_camellia_192_gcm "CAMELLIA-192-GCM" +#define NID_camellia_192_cfb128 758 +#define LN_camellia_192_cfb128 "camellia-192-cfb" +#define SN_camellia_192_cfb128 "CAMELLIA-192-CFB" +#define NID_camellia_192_ofb128 767 +#define LN_camellia_192_ofb128 "camellia-192-ofb" +#define SN_camellia_192_ofb128 "CAMELLIA-192-OFB" +#define NID_camellia_192_ecb 755 +#define LN_camellia_192_ecb "camellia-192-ecb" +#define SN_camellia_192_ecb "CAMELLIA-192-ECB" +#define NID_camellia_128_cmac 964 +#define LN_camellia_128_cmac "camellia-128-cmac" +#define SN_camellia_128_cmac "CAMELLIA-128-CMAC" +#define NID_camellia_128_ctr 963 +#define LN_camellia_128_ctr "camellia-128-ctr" +#define SN_camellia_128_ctr "CAMELLIA-128-CTR" +#define NID_camellia_128_ccm 962 +#define LN_camellia_128_ccm "camellia-128-ccm" +#define SN_camellia_128_ccm "CAMELLIA-128-CCM" +#define NID_camellia_128_gcm 961 +#define LN_camellia_128_gcm "camellia-128-gcm" +#define SN_camellia_128_gcm "CAMELLIA-128-GCM" +#define NID_camellia_128_cfb128 757 +#define LN_camellia_128_cfb128 "camellia-128-cfb" +#define SN_camellia_128_cfb128 "CAMELLIA-128-CFB" +#define NID_camellia_128_ofb128 766 +#define LN_camellia_128_ofb128 "camellia-128-ofb" +#define SN_camellia_128_ofb128 "CAMELLIA-128-OFB" +#define NID_camellia_128_ecb 754 +#define LN_camellia_128_ecb "camellia-128-ecb" +#define SN_camellia_128_ecb "CAMELLIA-128-ECB" +#define NID_id_camellia256_wrap 909 +#define SN_id_camellia256_wrap "id-camellia256-wrap" +#define NID_id_camellia192_wrap 908 +#define SN_id_camellia192_wrap "id-camellia192-wrap" +#define NID_id_camellia128_wrap 907 +#define SN_id_camellia128_wrap "id-camellia128-wrap" +#define NID_camellia_256_cbc 753 +#define LN_camellia_256_cbc "camellia-256-cbc" +#define SN_camellia_256_cbc "CAMELLIA-256-CBC" +#define NID_camellia_192_cbc 752 +#define LN_camellia_192_cbc "camellia-192-cbc" +#define SN_camellia_192_cbc "CAMELLIA-192-CBC" +#define NID_camellia_128_cbc 751 +#define LN_camellia_128_cbc "camellia-128-cbc" +#define SN_camellia_128_cbc "CAMELLIA-128-CBC" +#define NID_magma_mac 1192 +#define SN_magma_mac "magma-mac" +#define NID_magma_cfb 1191 +#define SN_magma_cfb "magma-cfb" +#define NID_magma_cbc 1190 +#define SN_magma_cbc "magma-cbc" +#define NID_magma_ofb 1189 +#define SN_magma_ofb "magma-ofb" +#define NID_magma_ctr 1188 +#define SN_magma_ctr "magma-ctr" +#define NID_magma_ecb 1187 +#define SN_magma_ecb "magma-ecb" +#define NID_kuznyechik_mac 1017 +#define SN_kuznyechik_mac "kuznyechik-mac" +#define NID_kuznyechik_cfb 1016 +#define SN_kuznyechik_cfb "kuznyechik-cfb" +#define NID_kuznyechik_cbc 1015 +#define SN_kuznyechik_cbc "kuznyechik-cbc" +#define NID_kuznyechik_ofb 1014 +#define SN_kuznyechik_ofb "kuznyechik-ofb" +#define NID_kuznyechik_ctr 1013 +#define SN_kuznyechik_ctr "kuznyechik-ctr" +#define NID_kuznyechik_ecb 1012 +#define SN_kuznyechik_ecb "kuznyechik-ecb" +#define NID_classSignToolKA1 1233 +#define LN_classSignToolKA1 "Class of Signing Tool KA1" +#define SN_classSignToolKA1 "classSignToolKA1" +#define NID_classSignToolKB2 1232 +#define LN_classSignToolKB2 "Class of Signing Tool KB2" +#define SN_classSignToolKB2 "classSignToolKB2" +#define NID_classSignToolKB1 1231 +#define LN_classSignToolKB1 "Class of Signing Tool KB1" +#define SN_classSignToolKB1 "classSignToolKB1" +#define NID_classSignToolKC3 1230 +#define LN_classSignToolKC3 "Class of Signing Tool KC3" +#define SN_classSignToolKC3 "classSignToolKC3" +#define NID_classSignToolKC2 1229 +#define LN_classSignToolKC2 "Class of Signing Tool KC2" +#define SN_classSignToolKC2 "classSignToolKC2" +#define NID_classSignToolKC1 1228 +#define LN_classSignToolKC1 "Class of Signing Tool KC1" +#define SN_classSignToolKC1 "classSignToolKC1" +#define NID_classSignTool 1227 +#define LN_classSignTool "Class of Signing Tool" +#define SN_classSignTool "classSignTool" +#define NID_issuerSignTool 1008 +#define LN_issuerSignTool "Signing Tool of Issuer" +#define SN_issuerSignTool "issuerSignTool" +#define NID_subjectSignTool 1007 +#define LN_subjectSignTool "Signing Tool of Subject" +#define SN_subjectSignTool "subjectSignTool" +#define NID_OGRNIP 1226 +#define LN_OGRNIP "OGRNIP" +#define SN_OGRNIP "OGRNIP" +#define NID_SNILS 1006 +#define LN_SNILS "SNILS" +#define SN_SNILS "SNILS" +#define NID_OGRN 1005 +#define LN_OGRN "OGRN" +#define SN_OGRN "OGRN" +#define NID_INN 1004 +#define LN_INN "INN" +#define SN_INN "INN" +#define NID_id_tc26_gost_28147_param_Z 1003 +#define LN_id_tc26_gost_28147_param_Z "GOST 28147-89 TC26 parameter set" +#define SN_id_tc26_gost_28147_param_Z "id-tc26-gost-28147-param-Z" +#define NID_id_tc26_gost_28147_constants 1002 +#define SN_id_tc26_gost_28147_constants "id-tc26-gost-28147-constants" +#define NID_id_tc26_cipher_constants 1001 +#define SN_id_tc26_cipher_constants "id-tc26-cipher-constants" +#define NID_id_tc26_digest_constants 1000 +#define SN_id_tc26_digest_constants "id-tc26-digest-constants" +#define NID_id_tc26_gost_3410_2012_512_paramSetC 1149 +#define LN_id_tc26_gost_3410_2012_512_paramSetC "GOST R 34.10-2012 (512 bit) ParamSet C" +#define SN_id_tc26_gost_3410_2012_512_paramSetC "id-tc26-gost-3410-2012-512-paramSetC" +#define NID_id_tc26_gost_3410_2012_512_paramSetB 999 +#define LN_id_tc26_gost_3410_2012_512_paramSetB "GOST R 34.10-2012 (512 bit) ParamSet B" +#define SN_id_tc26_gost_3410_2012_512_paramSetB "id-tc26-gost-3410-2012-512-paramSetB" +#define NID_id_tc26_gost_3410_2012_512_paramSetA 998 +#define LN_id_tc26_gost_3410_2012_512_paramSetA "GOST R 34.10-2012 (512 bit) ParamSet A" +#define SN_id_tc26_gost_3410_2012_512_paramSetA "id-tc26-gost-3410-2012-512-paramSetA" +#define NID_id_tc26_gost_3410_2012_512_paramSetTest 997 +#define LN_id_tc26_gost_3410_2012_512_paramSetTest "GOST R 34.10-2012 (512 bit) testing parameter set" +#define SN_id_tc26_gost_3410_2012_512_paramSetTest "id-tc26-gost-3410-2012-512-paramSetTest" +#define NID_id_tc26_gost_3410_2012_512_constants 996 +#define SN_id_tc26_gost_3410_2012_512_constants "id-tc26-gost-3410-2012-512-constants" +#define NID_id_tc26_gost_3410_2012_256_paramSetD 1186 +#define LN_id_tc26_gost_3410_2012_256_paramSetD "GOST R 34.10-2012 (256 bit) ParamSet D" +#define SN_id_tc26_gost_3410_2012_256_paramSetD "id-tc26-gost-3410-2012-256-paramSetD" +#define NID_id_tc26_gost_3410_2012_256_paramSetC 1185 +#define LN_id_tc26_gost_3410_2012_256_paramSetC "GOST R 34.10-2012 (256 bit) ParamSet C" +#define SN_id_tc26_gost_3410_2012_256_paramSetC "id-tc26-gost-3410-2012-256-paramSetC" +#define NID_id_tc26_gost_3410_2012_256_paramSetB 1184 +#define LN_id_tc26_gost_3410_2012_256_paramSetB "GOST R 34.10-2012 (256 bit) ParamSet B" +#define SN_id_tc26_gost_3410_2012_256_paramSetB "id-tc26-gost-3410-2012-256-paramSetB" +#define NID_id_tc26_gost_3410_2012_256_paramSetA 1148 +#define LN_id_tc26_gost_3410_2012_256_paramSetA "GOST R 34.10-2012 (256 bit) ParamSet A" +#define SN_id_tc26_gost_3410_2012_256_paramSetA "id-tc26-gost-3410-2012-256-paramSetA" +#define NID_id_tc26_gost_3410_2012_256_constants 1147 +#define SN_id_tc26_gost_3410_2012_256_constants "id-tc26-gost-3410-2012-256-constants" +#define NID_id_tc26_sign_constants 995 +#define SN_id_tc26_sign_constants "id-tc26-sign-constants" +#define NID_id_tc26_constants 994 +#define SN_id_tc26_constants "id-tc26-constants" +#define NID_kuznyechik_kexp15 1183 +#define SN_kuznyechik_kexp15 "kuznyechik-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik 1182 +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik "id-tc26-wrap-gostr3412-2015-kuznyechik" +#define NID_magma_kexp15 1181 +#define SN_magma_kexp15 "magma-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_magma 1180 +#define SN_id_tc26_wrap_gostr3412_2015_magma "id-tc26-wrap-gostr3412-2015-magma" +#define NID_id_tc26_wrap 1179 +#define SN_id_tc26_wrap "id-tc26-wrap" +#define NID_id_tc26_agreement_gost_3410_2012_512 993 +#define SN_id_tc26_agreement_gost_3410_2012_512 "id-tc26-agreement-gost-3410-2012-512" +#define NID_id_tc26_agreement_gost_3410_2012_256 992 +#define SN_id_tc26_agreement_gost_3410_2012_256 "id-tc26-agreement-gost-3410-2012-256" +#define NID_id_tc26_agreement 991 +#define SN_id_tc26_agreement "id-tc26-agreement" +#define NID_kuznyechik_ctr_acpkm_omac 1178 +#define SN_kuznyechik_ctr_acpkm_omac "kuznyechik-ctr-acpkm-omac" +#define NID_kuznyechik_ctr_acpkm 1177 +#define SN_kuznyechik_ctr_acpkm "kuznyechik-ctr-acpkm" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik 1176 +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik "id-tc26-cipher-gostr3412-2015-kuznyechik" +#define NID_magma_ctr_acpkm_omac 1175 +#define SN_magma_ctr_acpkm_omac "magma-ctr-acpkm-omac" +#define NID_magma_ctr_acpkm 1174 +#define SN_magma_ctr_acpkm "magma-ctr-acpkm" +#define NID_id_tc26_cipher_gostr3412_2015_magma 1173 +#define SN_id_tc26_cipher_gostr3412_2015_magma "id-tc26-cipher-gostr3412-2015-magma" +#define NID_id_tc26_cipher 990 +#define SN_id_tc26_cipher "id-tc26-cipher" +#define NID_id_tc26_hmac_gost_3411_2012_512 989 +#define LN_id_tc26_hmac_gost_3411_2012_512 "HMAC GOST 34.11-2012 512 bit" +#define SN_id_tc26_hmac_gost_3411_2012_512 "id-tc26-hmac-gost-3411-2012-512" +#define NID_id_tc26_hmac_gost_3411_2012_256 988 +#define LN_id_tc26_hmac_gost_3411_2012_256 "HMAC GOST 34.11-2012 256 bit" +#define SN_id_tc26_hmac_gost_3411_2012_256 "id-tc26-hmac-gost-3411-2012-256" +#define NID_id_tc26_mac 987 +#define SN_id_tc26_mac "id-tc26-mac" +#define NID_id_tc26_signwithdigest_gost3410_2012_512 986 +#define LN_id_tc26_signwithdigest_gost3410_2012_512 "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" +#define SN_id_tc26_signwithdigest_gost3410_2012_512 "id-tc26-signwithdigest-gost3410-2012-512" +#define NID_id_tc26_signwithdigest_gost3410_2012_256 985 +#define LN_id_tc26_signwithdigest_gost3410_2012_256 "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" +#define SN_id_tc26_signwithdigest_gost3410_2012_256 "id-tc26-signwithdigest-gost3410-2012-256" +#define NID_id_tc26_signwithdigest 984 +#define SN_id_tc26_signwithdigest "id-tc26-signwithdigest" +#define NID_id_GostR3411_2012_512 983 +#define LN_id_GostR3411_2012_512 "GOST R 34.11-2012 with 512 bit hash" +#define SN_id_GostR3411_2012_512 "md_gost12_512" +#define NID_id_GostR3411_2012_256 982 +#define LN_id_GostR3411_2012_256 "GOST R 34.11-2012 with 256 bit hash" +#define SN_id_GostR3411_2012_256 "md_gost12_256" +#define NID_id_tc26_digest 981 +#define SN_id_tc26_digest "id-tc26-digest" +#define NID_id_GostR3410_2012_512 980 +#define LN_id_GostR3410_2012_512 "GOST R 34.10-2012 with 512 bit modulus" +#define SN_id_GostR3410_2012_512 "gost2012_512" +#define NID_id_GostR3410_2012_256 979 +#define LN_id_GostR3410_2012_256 "GOST R 34.10-2012 with 256 bit modulus" +#define SN_id_GostR3410_2012_256 "gost2012_256" +#define NID_id_tc26_sign 978 +#define SN_id_tc26_sign "id-tc26-sign" +#define NID_id_tc26_algorithms 977 +#define SN_id_tc26_algorithms "id-tc26-algorithms" +#define NID_id_GostR3410_2001_ParamSet_cc 854 +#define LN_id_GostR3410_2001_ParamSet_cc "GOST R 3410-2001 Parameter Set Cryptocom" +#define SN_id_GostR3410_2001_ParamSet_cc "id-GostR3410-2001-ParamSet-cc" +#define NID_id_GostR3411_94_with_GostR3410_2001_cc 853 +#define LN_id_GostR3411_94_with_GostR3410_2001_cc "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" +#define SN_id_GostR3411_94_with_GostR3410_2001_cc "id-GostR3411-94-with-GostR3410-2001-cc" +#define NID_id_GostR3411_94_with_GostR3410_94_cc 852 +#define LN_id_GostR3411_94_with_GostR3410_94_cc "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" +#define SN_id_GostR3411_94_with_GostR3410_94_cc "id-GostR3411-94-with-GostR3410-94-cc" +#define NID_id_GostR3410_2001_cc 851 +#define LN_id_GostR3410_2001_cc "GOST 34.10-2001 Cryptocom" +#define SN_id_GostR3410_2001_cc "gost2001cc" +#define NID_id_GostR3410_94_cc 850 +#define LN_id_GostR3410_94_cc "GOST 34.10-94 Cryptocom" +#define SN_id_GostR3410_94_cc "gost94cc" +#define NID_id_Gost28147_89_cc 849 +#define LN_id_Gost28147_89_cc "GOST 28147-89 Cryptocom ParamSet" +#define SN_id_Gost28147_89_cc "id-Gost28147-89-cc" +#define NID_id_GostR3410_94_bBis 848 +#define SN_id_GostR3410_94_bBis "id-GostR3410-94-bBis" +#define NID_id_GostR3410_94_b 847 +#define SN_id_GostR3410_94_b "id-GostR3410-94-b" +#define NID_id_GostR3410_94_aBis 846 +#define SN_id_GostR3410_94_aBis "id-GostR3410-94-aBis" +#define NID_id_GostR3410_94_a 845 +#define SN_id_GostR3410_94_a "id-GostR3410-94-a" +#define NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet 844 +#define SN_id_GostR3410_2001_CryptoPro_XchB_ParamSet "id-GostR3410-2001-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet 843 +#define SN_id_GostR3410_2001_CryptoPro_XchA_ParamSet "id-GostR3410-2001-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_C_ParamSet 842 +#define SN_id_GostR3410_2001_CryptoPro_C_ParamSet "id-GostR3410-2001-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_B_ParamSet 841 +#define SN_id_GostR3410_2001_CryptoPro_B_ParamSet "id-GostR3410-2001-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_A_ParamSet 840 +#define SN_id_GostR3410_2001_CryptoPro_A_ParamSet "id-GostR3410-2001-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_2001_TestParamSet 839 +#define SN_id_GostR3410_2001_TestParamSet "id-GostR3410-2001-TestParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchC_ParamSet 838 +#define SN_id_GostR3410_94_CryptoPro_XchC_ParamSet "id-GostR3410-94-CryptoPro-XchC-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchB_ParamSet 837 +#define SN_id_GostR3410_94_CryptoPro_XchB_ParamSet "id-GostR3410-94-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchA_ParamSet 836 +#define SN_id_GostR3410_94_CryptoPro_XchA_ParamSet "id-GostR3410-94-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_D_ParamSet 835 +#define SN_id_GostR3410_94_CryptoPro_D_ParamSet "id-GostR3410-94-CryptoPro-D-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_C_ParamSet 834 +#define SN_id_GostR3410_94_CryptoPro_C_ParamSet "id-GostR3410-94-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_B_ParamSet 833 +#define SN_id_GostR3410_94_CryptoPro_B_ParamSet "id-GostR3410-94-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_A_ParamSet 832 +#define SN_id_GostR3410_94_CryptoPro_A_ParamSet "id-GostR3410-94-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_94_TestParamSet 831 +#define SN_id_GostR3410_94_TestParamSet "id-GostR3410-94-TestParamSet" +#define NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 830 +#define SN_id_Gost28147_89_CryptoPro_RIC_1_ParamSet "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 829 +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 828 +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_D_ParamSet 827 +#define SN_id_Gost28147_89_CryptoPro_D_ParamSet "id-Gost28147-89-CryptoPro-D-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_C_ParamSet 826 +#define SN_id_Gost28147_89_CryptoPro_C_ParamSet "id-Gost28147-89-CryptoPro-C-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_B_ParamSet 825 +#define SN_id_Gost28147_89_CryptoPro_B_ParamSet "id-Gost28147-89-CryptoPro-B-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_A_ParamSet 824 +#define SN_id_Gost28147_89_CryptoPro_A_ParamSet "id-Gost28147-89-CryptoPro-A-ParamSet" +#define NID_id_Gost28147_89_TestParamSet 823 +#define SN_id_Gost28147_89_TestParamSet "id-Gost28147-89-TestParamSet" +#define NID_id_GostR3411_94_CryptoProParamSet 822 +#define SN_id_GostR3411_94_CryptoProParamSet "id-GostR3411-94-CryptoProParamSet" +#define NID_id_GostR3411_94_TestParamSet 821 +#define SN_id_GostR3411_94_TestParamSet "id-GostR3411-94-TestParamSet" +#define NID_id_Gost28147_89_None_KeyMeshing 820 +#define SN_id_Gost28147_89_None_KeyMeshing "id-Gost28147-89-None-KeyMeshing" +#define NID_id_Gost28147_89_CryptoPro_KeyMeshing 819 +#define SN_id_Gost28147_89_CryptoPro_KeyMeshing "id-Gost28147-89-CryptoPro-KeyMeshing" +#define NID_id_GostR3410_94DH 818 +#define LN_id_GostR3410_94DH "GOST R 34.10-94 DH" +#define SN_id_GostR3410_94DH "id-GostR3410-94DH" +#define NID_id_GostR3410_2001DH 817 +#define LN_id_GostR3410_2001DH "GOST R 34.10-2001 DH" +#define SN_id_GostR3410_2001DH "id-GostR3410-2001DH" +#define NID_id_GostR3411_94_prf 816 +#define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" +#define SN_id_GostR3411_94_prf "prf-gostr3411-94" +#define NID_gost_mac_12 976 +#define SN_gost_mac_12 "gost-mac-12" +#define NID_id_Gost28147_89_MAC 815 +#define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" +#define SN_id_Gost28147_89_MAC "gost-mac" +#define NID_gost89_ctr 1011 +#define SN_gost89_ctr "gost89-ctr" +#define NID_gost89_ecb 1010 +#define SN_gost89_ecb "gost89-ecb" +#define NID_gost89_cbc 1009 +#define SN_gost89_cbc "gost89-cbc" +#define NID_gost89_cnt_12 975 +#define SN_gost89_cnt_12 "gost89-cnt-12" +#define NID_gost89_cnt 814 +#define SN_gost89_cnt "gost89-cnt" +#define NID_id_Gost28147_89 813 +#define LN_id_Gost28147_89 "GOST 28147-89" +#define SN_id_Gost28147_89 "gost89" +#define NID_id_GostR3410_94 812 +#define LN_id_GostR3410_94 "GOST R 34.10-94" +#define SN_id_GostR3410_94 "gost94" +#define NID_id_GostR3410_2001 811 +#define LN_id_GostR3410_2001 "GOST R 34.10-2001" +#define SN_id_GostR3410_2001 "gost2001" +#define NID_id_HMACGostR3411_94 810 +#define LN_id_HMACGostR3411_94 "HMAC GOST 34.11-94" +#define SN_id_HMACGostR3411_94 "id-HMACGostR3411-94" +#define NID_id_GostR3411_94 809 +#define LN_id_GostR3411_94 "GOST R 34.11-94" +#define SN_id_GostR3411_94 "md_gost94" +#define NID_id_GostR3411_94_with_GostR3410_94 808 +#define LN_id_GostR3411_94_with_GostR3410_94 "GOST R 34.11-94 with GOST R 34.10-94" +#define SN_id_GostR3411_94_with_GostR3410_94 "id-GostR3411-94-with-GostR3410-94" +#define NID_id_GostR3411_94_with_GostR3410_2001 807 +#define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" +#define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" +#define NID_id_tc26 974 +#define SN_id_tc26 "id-tc26" +#define NID_cryptocom 806 +#define SN_cryptocom "cryptocom" +#define NID_cryptopro 805 +#define SN_cryptopro "cryptopro" +#define NID_whirlpool 804 +#define SN_whirlpool "whirlpool" +#define NID_ipsec4 750 +#define LN_ipsec4 "ipsec4" +#define SN_ipsec4 "Oakley-EC2N-4" +#define NID_ipsec3 749 +#define LN_ipsec3 "ipsec3" +#define SN_ipsec3 "Oakley-EC2N-3" +#define NID_rsaOAEPEncryptionSET 644 +#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET" +#define NID_des_cdmf 643 +#define LN_des_cdmf "des-cdmf" +#define SN_des_cdmf "DES-CDMF" +#define NID_set_brand_Novus 642 +#define SN_set_brand_Novus "set-brand-Novus" +#define NID_set_brand_MasterCard 641 +#define SN_set_brand_MasterCard "set-brand-MasterCard" +#define NID_set_brand_Visa 640 +#define SN_set_brand_Visa "set-brand-Visa" +#define NID_set_brand_JCB 639 +#define SN_set_brand_JCB "set-brand-JCB" +#define NID_set_brand_AmericanExpress 638 +#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress" +#define NID_set_brand_Diners 637 +#define SN_set_brand_Diners "set-brand-Diners" +#define NID_set_brand_IATA_ATA 636 +#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA" +#define NID_setAttr_SecDevSig 635 +#define LN_setAttr_SecDevSig "secure device signature" +#define SN_setAttr_SecDevSig "setAttr-SecDevSig" +#define NID_setAttr_TokICCsig 634 +#define LN_setAttr_TokICCsig "ICC or token signature" +#define SN_setAttr_TokICCsig "setAttr-TokICCsig" +#define NID_setAttr_T2cleartxt 633 +#define LN_setAttr_T2cleartxt "cleartext track 2" +#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt" +#define NID_setAttr_T2Enc 632 +#define LN_setAttr_T2Enc "encrypted track 2" +#define SN_setAttr_T2Enc "setAttr-T2Enc" +#define NID_setAttr_GenCryptgrm 631 +#define LN_setAttr_GenCryptgrm "generate cryptogram" +#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm" +#define NID_setAttr_IssCap_Sig 630 +#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig" +#define NID_setAttr_IssCap_T2 629 +#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2" +#define NID_setAttr_IssCap_CVM 628 +#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM" +#define NID_setAttr_Token_B0Prime 627 +#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime" +#define NID_setAttr_Token_EMV 626 +#define SN_setAttr_Token_EMV "setAttr-Token-EMV" +#define NID_set_addPolicy 625 +#define SN_set_addPolicy "set-addPolicy" +#define NID_set_rootKeyThumb 624 +#define SN_set_rootKeyThumb "set-rootKeyThumb" +#define NID_setAttr_IssCap 623 +#define LN_setAttr_IssCap "issuer capabilities" +#define SN_setAttr_IssCap "setAttr-IssCap" +#define NID_setAttr_TokenType 622 +#define SN_setAttr_TokenType "setAttr-TokenType" +#define NID_setAttr_PGWYcap 621 +#define LN_setAttr_PGWYcap "payment gateway capabilities" +#define SN_setAttr_PGWYcap "setAttr-PGWYcap" +#define NID_setAttr_Cert 620 +#define SN_setAttr_Cert "setAttr-Cert" +#define NID_setCext_IssuerCapabilities 619 +#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities" +#define NID_setCext_TokenType 618 +#define SN_setCext_TokenType "setCext-TokenType" +#define NID_setCext_Track2Data 617 +#define SN_setCext_Track2Data "setCext-Track2Data" +#define NID_setCext_TokenIdentifier 616 +#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier" +#define NID_setCext_PGWYcapabilities 615 +#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities" +#define NID_setCext_setQualf 614 +#define SN_setCext_setQualf "setCext-setQualf" +#define NID_setCext_setExt 613 +#define SN_setCext_setExt "setCext-setExt" +#define NID_setCext_tunneling 612 +#define SN_setCext_tunneling "setCext-tunneling" +#define NID_setCext_cCertRequired 611 +#define SN_setCext_cCertRequired "setCext-cCertRequired" +#define NID_setCext_merchData 610 +#define SN_setCext_merchData "setCext-merchData" +#define NID_setCext_certType 609 +#define SN_setCext_certType "setCext-certType" +#define NID_setCext_hashedRoot 608 +#define SN_setCext_hashedRoot "setCext-hashedRoot" +#define NID_set_policy_root 607 +#define SN_set_policy_root "set-policy-root" +#define NID_setext_cv 606 +#define LN_setext_cv "additional verification" +#define SN_setext_cv "setext-cv" +#define NID_setext_track2 605 +#define SN_setext_track2 "setext-track2" +#define NID_setext_pinAny 604 +#define SN_setext_pinAny "setext-pinAny" +#define NID_setext_pinSecure 603 +#define SN_setext_pinSecure "setext-pinSecure" +#define NID_setext_miAuth 602 +#define LN_setext_miAuth "merchant initiated auth" +#define SN_setext_miAuth "setext-miAuth" +#define NID_setext_genCrypt 601 +#define LN_setext_genCrypt "generic cryptogram" +#define SN_setext_genCrypt "setext-genCrypt" +#define NID_setct_BCIDistributionTBS 600 +#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS" +#define NID_setct_CRLNotificationResTBS 599 +#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS" +#define NID_setct_CRLNotificationTBS 598 +#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS" +#define NID_setct_CertResTBE 597 +#define SN_setct_CertResTBE "setct-CertResTBE" +#define NID_setct_CertReqTBEX 596 +#define SN_setct_CertReqTBEX "setct-CertReqTBEX" +#define NID_setct_CertReqTBE 595 +#define SN_setct_CertReqTBE "setct-CertReqTBE" +#define NID_setct_RegFormReqTBE 594 +#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE" +#define NID_setct_BatchAdminResTBE 593 +#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE" +#define NID_setct_BatchAdminReqTBE 592 +#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE" +#define NID_setct_CredRevResTBE 591 +#define SN_setct_CredRevResTBE "setct-CredRevResTBE" +#define NID_setct_CredRevReqTBEX 590 +#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX" +#define NID_setct_CredRevReqTBE 589 +#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE" +#define NID_setct_CredResTBE 588 +#define SN_setct_CredResTBE "setct-CredResTBE" +#define NID_setct_CredReqTBEX 587 +#define SN_setct_CredReqTBEX "setct-CredReqTBEX" +#define NID_setct_CredReqTBE 586 +#define SN_setct_CredReqTBE "setct-CredReqTBE" +#define NID_setct_CapRevResTBE 585 +#define SN_setct_CapRevResTBE "setct-CapRevResTBE" +#define NID_setct_CapRevReqTBEX 584 +#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX" +#define NID_setct_CapRevReqTBE 583 +#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE" +#define NID_setct_CapResTBE 582 +#define SN_setct_CapResTBE "setct-CapResTBE" +#define NID_setct_CapReqTBEX 581 +#define SN_setct_CapReqTBEX "setct-CapReqTBEX" +#define NID_setct_CapReqTBE 580 +#define SN_setct_CapReqTBE "setct-CapReqTBE" +#define NID_setct_AuthRevResTBEB 579 +#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB" +#define NID_setct_AuthRevResTBE 578 +#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE" +#define NID_setct_AuthRevReqTBE 577 +#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE" +#define NID_setct_AcqCardCodeMsgTBE 576 +#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE" +#define NID_setct_CapTokenTBEX 575 +#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX" +#define NID_setct_CapTokenTBE 574 +#define SN_setct_CapTokenTBE "setct-CapTokenTBE" +#define NID_setct_AuthTokenTBE 573 +#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE" +#define NID_setct_AuthResTBEX 572 +#define SN_setct_AuthResTBEX "setct-AuthResTBEX" +#define NID_setct_AuthResTBE 571 +#define SN_setct_AuthResTBE "setct-AuthResTBE" +#define NID_setct_AuthReqTBE 570 +#define SN_setct_AuthReqTBE "setct-AuthReqTBE" +#define NID_setct_PIUnsignedTBE 569 +#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE" +#define NID_setct_PIDualSignedTBE 568 +#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE" +#define NID_setct_ErrorTBS 567 +#define SN_setct_ErrorTBS "setct-ErrorTBS" +#define NID_setct_CertInqReqTBS 566 +#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS" +#define NID_setct_CertResData 565 +#define SN_setct_CertResData "setct-CertResData" +#define NID_setct_CertReqTBS 564 +#define SN_setct_CertReqTBS "setct-CertReqTBS" +#define NID_setct_CertReqData 563 +#define SN_setct_CertReqData "setct-CertReqData" +#define NID_setct_RegFormResTBS 562 +#define SN_setct_RegFormResTBS "setct-RegFormResTBS" +#define NID_setct_MeAqCInitResTBS 561 +#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS" +#define NID_setct_CardCInitResTBS 560 +#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS" +#define NID_setct_BatchAdminResData 559 +#define SN_setct_BatchAdminResData "setct-BatchAdminResData" +#define NID_setct_BatchAdminReqData 558 +#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData" +#define NID_setct_PCertResTBS 557 +#define SN_setct_PCertResTBS "setct-PCertResTBS" +#define NID_setct_PCertReqData 556 +#define SN_setct_PCertReqData "setct-PCertReqData" +#define NID_setct_CredRevResData 555 +#define SN_setct_CredRevResData "setct-CredRevResData" +#define NID_setct_CredRevReqTBSX 554 +#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX" +#define NID_setct_CredRevReqTBS 553 +#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS" +#define NID_setct_CredResData 552 +#define SN_setct_CredResData "setct-CredResData" +#define NID_setct_CredReqTBSX 551 +#define SN_setct_CredReqTBSX "setct-CredReqTBSX" +#define NID_setct_CredReqTBS 550 +#define SN_setct_CredReqTBS "setct-CredReqTBS" +#define NID_setct_CapRevResData 549 +#define SN_setct_CapRevResData "setct-CapRevResData" +#define NID_setct_CapRevReqTBSX 548 +#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX" +#define NID_setct_CapRevReqTBS 547 +#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS" +#define NID_setct_CapResData 546 +#define SN_setct_CapResData "setct-CapResData" +#define NID_setct_CapReqTBSX 545 +#define SN_setct_CapReqTBSX "setct-CapReqTBSX" +#define NID_setct_CapReqTBS 544 +#define SN_setct_CapReqTBS "setct-CapReqTBS" +#define NID_setct_AuthRevResTBS 543 +#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS" +#define NID_setct_AuthRevResData 542 +#define SN_setct_AuthRevResData "setct-AuthRevResData" +#define NID_setct_AuthRevReqTBS 541 +#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS" +#define NID_setct_AcqCardCodeMsg 540 +#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg" +#define NID_setct_CapTokenTBS 539 +#define SN_setct_CapTokenTBS "setct-CapTokenTBS" +#define NID_setct_CapTokenData 538 +#define SN_setct_CapTokenData "setct-CapTokenData" +#define NID_setct_AuthTokenTBS 537 +#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS" +#define NID_setct_AuthResTBSX 536 +#define SN_setct_AuthResTBSX "setct-AuthResTBSX" +#define NID_setct_AuthResTBS 535 +#define SN_setct_AuthResTBS "setct-AuthResTBS" +#define NID_setct_AuthReqTBS 534 +#define SN_setct_AuthReqTBS "setct-AuthReqTBS" +#define NID_setct_PResData 533 +#define SN_setct_PResData "setct-PResData" +#define NID_setct_PI_TBS 532 +#define SN_setct_PI_TBS "setct-PI-TBS" +#define NID_setct_PInitResData 531 +#define SN_setct_PInitResData "setct-PInitResData" +#define NID_setct_CapTokenSeq 530 +#define SN_setct_CapTokenSeq "setct-CapTokenSeq" +#define NID_setct_AuthRevResBaggage 529 +#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage" +#define NID_setct_AuthRevReqBaggage 528 +#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage" +#define NID_setct_AuthResBaggage 527 +#define SN_setct_AuthResBaggage "setct-AuthResBaggage" +#define NID_setct_HODInput 526 +#define SN_setct_HODInput "setct-HODInput" +#define NID_setct_PIDataUnsigned 525 +#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned" +#define NID_setct_PIData 524 +#define SN_setct_PIData "setct-PIData" +#define NID_setct_PI 523 +#define SN_setct_PI "setct-PI" +#define NID_setct_OIData 522 +#define SN_setct_OIData "setct-OIData" +#define NID_setct_PANOnly 521 +#define SN_setct_PANOnly "setct-PANOnly" +#define NID_setct_PANToken 520 +#define SN_setct_PANToken "setct-PANToken" +#define NID_setct_PANData 519 +#define SN_setct_PANData "setct-PANData" +#define NID_set_brand 518 +#define SN_set_brand "set-brand" +#define NID_set_certExt 517 +#define LN_set_certExt "certificate extensions" +#define SN_set_certExt "set-certExt" +#define NID_set_policy 516 +#define SN_set_policy "set-policy" +#define NID_set_attr 515 +#define SN_set_attr "set-attr" +#define NID_set_msgExt 514 +#define LN_set_msgExt "message extensions" +#define SN_set_msgExt "set-msgExt" +#define NID_set_ctype 513 +#define LN_set_ctype "content types" +#define SN_set_ctype "set-ctype" +#define NID_id_set 512 +#define LN_id_set "Secure Electronic Transactions" +#define SN_id_set "id-set" +#define NID_documentPublisher 502 +#define LN_documentPublisher "documentPublisher" +#define NID_audio 501 +#define SN_audio "audio" +#define NID_dITRedirect 500 +#define LN_dITRedirect "dITRedirect" +#define NID_personalSignature 499 +#define LN_personalSignature "personalSignature" +#define NID_subtreeMaximumQuality 498 +#define LN_subtreeMaximumQuality "subtreeMaximumQuality" +#define NID_subtreeMinimumQuality 497 +#define LN_subtreeMinimumQuality "subtreeMinimumQuality" +#define NID_singleLevelQuality 496 +#define LN_singleLevelQuality "singleLevelQuality" +#define NID_dSAQuality 495 +#define LN_dSAQuality "dSAQuality" +#define NID_buildingName 494 +#define LN_buildingName "buildingName" +#define NID_mailPreferenceOption 493 +#define LN_mailPreferenceOption "mailPreferenceOption" +#define NID_janetMailbox 492 +#define LN_janetMailbox "janetMailbox" +#define NID_organizationalStatus 491 +#define LN_organizationalStatus "organizationalStatus" +#define NID_uniqueIdentifier 102 +#define LN_uniqueIdentifier "uniqueIdentifier" +#define SN_uniqueIdentifier "uid" +#define NID_friendlyCountryName 490 +#define LN_friendlyCountryName "friendlyCountryName" +#define NID_pagerTelephoneNumber 489 +#define LN_pagerTelephoneNumber "pagerTelephoneNumber" +#define NID_mobileTelephoneNumber 488 +#define LN_mobileTelephoneNumber "mobileTelephoneNumber" +#define NID_personalTitle 487 +#define LN_personalTitle "personalTitle" +#define NID_homePostalAddress 486 +#define LN_homePostalAddress "homePostalAddress" +#define NID_associatedName 485 +#define LN_associatedName "associatedName" +#define NID_associatedDomain 484 +#define LN_associatedDomain "associatedDomain" +#define NID_cNAMERecord 483 +#define LN_cNAMERecord "cNAMERecord" +#define NID_sOARecord 482 +#define LN_sOARecord "sOARecord" +#define NID_nSRecord 481 +#define LN_nSRecord "nSRecord" +#define NID_mXRecord 480 +#define LN_mXRecord "mXRecord" +#define NID_pilotAttributeType27 479 +#define LN_pilotAttributeType27 "pilotAttributeType27" +#define NID_aRecord 478 +#define LN_aRecord "aRecord" +#define NID_domainComponent 391 +#define LN_domainComponent "domainComponent" +#define SN_domainComponent "DC" +#define NID_lastModifiedBy 477 +#define LN_lastModifiedBy "lastModifiedBy" +#define NID_lastModifiedTime 476 +#define LN_lastModifiedTime "lastModifiedTime" +#define NID_otherMailbox 475 +#define LN_otherMailbox "otherMailbox" +#define NID_secretary 474 +#define SN_secretary "secretary" +#define NID_homeTelephoneNumber 473 +#define LN_homeTelephoneNumber "homeTelephoneNumber" +#define NID_documentLocation 472 +#define LN_documentLocation "documentLocation" +#define NID_documentAuthor 471 +#define LN_documentAuthor "documentAuthor" +#define NID_documentVersion 470 +#define LN_documentVersion "documentVersion" +#define NID_documentTitle 469 +#define LN_documentTitle "documentTitle" +#define NID_documentIdentifier 468 +#define LN_documentIdentifier "documentIdentifier" +#define NID_manager 467 +#define SN_manager "manager" +#define NID_host 466 +#define SN_host "host" +#define NID_userClass 465 +#define LN_userClass "userClass" +#define NID_photo 464 +#define SN_photo "photo" +#define NID_roomNumber 463 +#define LN_roomNumber "roomNumber" +#define NID_favouriteDrink 462 +#define LN_favouriteDrink "favouriteDrink" +#define NID_info 461 +#define SN_info "info" +#define NID_rfc822Mailbox 460 +#define LN_rfc822Mailbox "rfc822Mailbox" +#define SN_rfc822Mailbox "mail" +#define NID_textEncodedORAddress 459 +#define LN_textEncodedORAddress "textEncodedORAddress" +#define NID_userId 458 +#define LN_userId "userId" +#define SN_userId "UID" +#define NID_qualityLabelledData 457 +#define LN_qualityLabelledData "qualityLabelledData" +#define NID_pilotDSA 456 +#define LN_pilotDSA "pilotDSA" +#define NID_pilotOrganization 455 +#define LN_pilotOrganization "pilotOrganization" +#define NID_simpleSecurityObject 454 +#define LN_simpleSecurityObject "simpleSecurityObject" +#define NID_friendlyCountry 453 +#define LN_friendlyCountry "friendlyCountry" +#define NID_domainRelatedObject 452 +#define LN_domainRelatedObject "domainRelatedObject" +#define NID_dNSDomain 451 +#define LN_dNSDomain "dNSDomain" +#define NID_rFC822localPart 450 +#define LN_rFC822localPart "rFC822localPart" +#define NID_Domain 392 +#define LN_Domain "Domain" +#define SN_Domain "domain" +#define NID_documentSeries 449 +#define LN_documentSeries "documentSeries" +#define NID_room 448 +#define SN_room "room" +#define NID_document 447 +#define SN_document "document" +#define NID_account 446 +#define SN_account "account" +#define NID_pilotPerson 445 +#define LN_pilotPerson "pilotPerson" +#define NID_pilotObject 444 +#define LN_pilotObject "pilotObject" +#define NID_caseIgnoreIA5StringSyntax 443 +#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax" +#define NID_iA5StringSyntax 442 +#define LN_iA5StringSyntax "iA5StringSyntax" +#define NID_pilotGroups 441 +#define LN_pilotGroups "pilotGroups" +#define NID_pilotObjectClass 440 +#define LN_pilotObjectClass "pilotObjectClass" +#define NID_pilotAttributeSyntax 439 +#define LN_pilotAttributeSyntax "pilotAttributeSyntax" +#define NID_pilotAttributeType 438 +#define LN_pilotAttributeType "pilotAttributeType" +#define NID_pilot 437 +#define SN_pilot "pilot" +#define NID_ucl 436 +#define SN_ucl "ucl" +#define NID_pss 435 +#define SN_pss "pss" +#define NID_data 434 +#define SN_data "data" +#define NID_signedAssertion 1279 +#define SN_signedAssertion "signedAssertion" +#define NID_id_aa_ATSHashIndex_v3 1278 +#define SN_id_aa_ATSHashIndex_v3 "id-aa-ATSHashIndex-v3" +#define NID_id_aa_ATSHashIndex_v2 1277 +#define SN_id_aa_ATSHashIndex_v2 "id-aa-ATSHashIndex-v2" +#define NID_id_aa_ets_sigPolicyStore 1276 +#define SN_id_aa_ets_sigPolicyStore "id-aa-ets-sigPolicyStore" +#define NID_id_aa_ets_signerAttrV2 1275 +#define SN_id_aa_ets_signerAttrV2 "id-aa-ets-signerAttrV2" +#define NID_cades_attributes 1274 +#define SN_cades_attributes "cades-attributes" +#define NID_cades 1273 +#define SN_cades "cades" +#define NID_id_aa_ATSHashIndex 1272 +#define SN_id_aa_ATSHashIndex "id-aa-ATSHashIndex" +#define NID_id_aa_ets_archiveTimestampV3 1271 +#define SN_id_aa_ets_archiveTimestampV3 "id-aa-ets-archiveTimestampV3" +#define NID_id_aa_ets_SignaturePolicyDocument 1270 +#define SN_id_aa_ets_SignaturePolicyDocument "id-aa-ets-SignaturePolicyDocument" +#define NID_id_aa_ets_longTermValidation 1269 +#define SN_id_aa_ets_longTermValidation "id-aa-ets-longTermValidation" +#define NID_id_aa_ets_mimeType 1268 +#define SN_id_aa_ets_mimeType "id-aa-ets-mimeType" +#define NID_ess_attributes 1267 +#define SN_ess_attributes "ess-attributes" +#define NID_electronic_signature_standard 1266 +#define SN_electronic_signature_standard "electronic-signature-standard" +#define NID_etsi 1265 +#define SN_etsi "etsi" +#define NID_itu_t_identified_organization 1264 +#define SN_itu_t_identified_organization "itu-t-identified-organization" +#define NID_hold_instruction_reject 433 +#define LN_hold_instruction_reject "Hold Instruction Reject" +#define SN_hold_instruction_reject "holdInstructionReject" +#define NID_hold_instruction_call_issuer 432 +#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer" +#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer" +#define NID_hold_instruction_none 431 +#define LN_hold_instruction_none "Hold Instruction None" +#define SN_hold_instruction_none "holdInstructionNone" +#define LN_hold_instruction_code "Hold Instruction Code" +#define SN_hold_instruction_code "holdInstructionCode" +#define NID_SLH_DSA_SHAKE_256f_WITH_SHAKE256 1486 +#define LN_SLH_DSA_SHAKE_256f_WITH_SHAKE256 "SLH-DSA-SHAKE-256f-WITH-SHAKE256" +#define SN_SLH_DSA_SHAKE_256f_WITH_SHAKE256 "id-hash-slh-dsa-shake-256f-with-shake256" +#define NID_SLH_DSA_SHAKE_256s_WITH_SHAKE256 1485 +#define LN_SLH_DSA_SHAKE_256s_WITH_SHAKE256 "SLH-DSA-SHAKE-256s-WITH-SHAKE256" +#define SN_SLH_DSA_SHAKE_256s_WITH_SHAKE256 "id-hash-slh-dsa-shake-256s-with-shake256" +#define NID_SLH_DSA_SHAKE_192f_WITH_SHAKE256 1484 +#define LN_SLH_DSA_SHAKE_192f_WITH_SHAKE256 "SLH-DSA-SHAKE-192f-WITH-SHAKE256" +#define SN_SLH_DSA_SHAKE_192f_WITH_SHAKE256 "id-hash-slh-dsa-shake-192f-with-shake256" +#define NID_SLH_DSA_SHAKE_192s_WITH_SHAKE256 1483 +#define LN_SLH_DSA_SHAKE_192s_WITH_SHAKE256 "SLH-DSA-SHAKE-192s-WITH-SHAKE256" +#define SN_SLH_DSA_SHAKE_192s_WITH_SHAKE256 "id-hash-slh-dsa-shake-192s-with-shake256" +#define NID_SLH_DSA_SHAKE_128f_WITH_SHAKE128 1482 +#define LN_SLH_DSA_SHAKE_128f_WITH_SHAKE128 "SLH-DSA-SHAKE-128f-WITH-SHAKE128" +#define SN_SLH_DSA_SHAKE_128f_WITH_SHAKE128 "id-hash-slh-dsa-shake-128f-with-shake128" +#define NID_SLH_DSA_SHAKE_128s_WITH_SHAKE128 1481 +#define LN_SLH_DSA_SHAKE_128s_WITH_SHAKE128 "SLH-DSA-SHAKE-128s-WITH-SHAKE128" +#define SN_SLH_DSA_SHAKE_128s_WITH_SHAKE128 "id-hash-slh-dsa-shake-128s-with-shake128" +#define NID_SLH_DSA_SHA2_256f_WITH_SHA512 1480 +#define LN_SLH_DSA_SHA2_256f_WITH_SHA512 "SLH-DSA-SHA2-256f-WITH-SHA512" +#define SN_SLH_DSA_SHA2_256f_WITH_SHA512 "id-hash-slh-dsa-sha2-256f-with-sha512" +#define NID_SLH_DSA_SHA2_256s_WITH_SHA512 1479 +#define LN_SLH_DSA_SHA2_256s_WITH_SHA512 "SLH-DSA-SHA2-256s-WITH-SHA512" +#define SN_SLH_DSA_SHA2_256s_WITH_SHA512 "id-hash-slh-dsa-sha2-256s-with-sha512" +#define NID_SLH_DSA_SHA2_192f_WITH_SHA512 1478 +#define LN_SLH_DSA_SHA2_192f_WITH_SHA512 "SLH-DSA-SHA2-192f-WITH-SHA512" +#define SN_SLH_DSA_SHA2_192f_WITH_SHA512 "id-hash-slh-dsa-sha2-192f-with-sha512" +#define NID_SLH_DSA_SHA2_192s_WITH_SHA512 1477 +#define LN_SLH_DSA_SHA2_192s_WITH_SHA512 "SLH-DSA-SHA2-192s-WITH-SHA512" +#define SN_SLH_DSA_SHA2_192s_WITH_SHA512 "id-hash-slh-dsa-sha2-192s-with-sha512" +#define NID_SLH_DSA_SHA2_128f_WITH_SHA256 1476 +#define LN_SLH_DSA_SHA2_128f_WITH_SHA256 "SLH-DSA-SHA2-128f-WITH-SHA256" +#define SN_SLH_DSA_SHA2_128f_WITH_SHA256 "id-hash-slh-dsa-sha2-128f-with-sha256" +#define NID_SLH_DSA_SHA2_128s_WITH_SHA256 1475 +#define LN_SLH_DSA_SHA2_128s_WITH_SHA256 "SLH-DSA-SHA2-128s-WITH-SHA256" +#define SN_SLH_DSA_SHA2_128s_WITH_SHA256 "id-hash-slh-dsa-sha2-128s-with-sha256" +#define NID_HASH_ML_DSA_87_WITH_SHA512 1474 +#define LN_HASH_ML_DSA_87_WITH_SHA512 "HASH-ML-DSA-87-WITH-SHA512" +#define SN_HASH_ML_DSA_87_WITH_SHA512 "id-hash-ml-dsa-87-with-sha512" +#define NID_HASH_ML_DSA_65_WITH_SHA512 1473 +#define LN_HASH_ML_DSA_65_WITH_SHA512 "HASH-ML-DSA-65-WITH-SHA512" +#define SN_HASH_ML_DSA_65_WITH_SHA512 "id-hash-ml-dsa-65-with-sha512" +#define NID_HASH_ML_DSA_44_WITH_SHA512 1472 +#define LN_HASH_ML_DSA_44_WITH_SHA512 "HASH-ML-DSA-44-WITH-SHA512" +#define SN_HASH_ML_DSA_44_WITH_SHA512 "id-hash-ml-dsa-44-with-sha512" +#define NID_SLH_DSA_SHAKE_256f 1471 +#define LN_SLH_DSA_SHAKE_256f "SLH-DSA-SHAKE-256f" +#define SN_SLH_DSA_SHAKE_256f "id-slh-dsa-shake-256f" +#define NID_SLH_DSA_SHAKE_256s 1470 +#define LN_SLH_DSA_SHAKE_256s "SLH-DSA-SHAKE-256s" +#define SN_SLH_DSA_SHAKE_256s "id-slh-dsa-shake-256s" +#define NID_SLH_DSA_SHAKE_192f 1469 +#define LN_SLH_DSA_SHAKE_192f "SLH-DSA-SHAKE-192f" +#define SN_SLH_DSA_SHAKE_192f "id-slh-dsa-shake-192f" +#define NID_SLH_DSA_SHAKE_192s 1468 +#define LN_SLH_DSA_SHAKE_192s "SLH-DSA-SHAKE-192s" +#define SN_SLH_DSA_SHAKE_192s "id-slh-dsa-shake-192s" +#define NID_SLH_DSA_SHAKE_128f 1467 +#define LN_SLH_DSA_SHAKE_128f "SLH-DSA-SHAKE-128f" +#define SN_SLH_DSA_SHAKE_128f "id-slh-dsa-shake-128f" +#define NID_SLH_DSA_SHAKE_128s 1466 +#define LN_SLH_DSA_SHAKE_128s "SLH-DSA-SHAKE-128s" +#define SN_SLH_DSA_SHAKE_128s "id-slh-dsa-shake-128s" +#define NID_SLH_DSA_SHA2_256f 1465 +#define LN_SLH_DSA_SHA2_256f "SLH-DSA-SHA2-256f" +#define SN_SLH_DSA_SHA2_256f "id-slh-dsa-sha2-256f" +#define NID_SLH_DSA_SHA2_256s 1464 +#define LN_SLH_DSA_SHA2_256s "SLH-DSA-SHA2-256s" +#define SN_SLH_DSA_SHA2_256s "id-slh-dsa-sha2-256s" +#define NID_SLH_DSA_SHA2_192f 1463 +#define LN_SLH_DSA_SHA2_192f "SLH-DSA-SHA2-192f" +#define SN_SLH_DSA_SHA2_192f "id-slh-dsa-sha2-192f" +#define NID_SLH_DSA_SHA2_192s 1462 +#define LN_SLH_DSA_SHA2_192s "SLH-DSA-SHA2-192s" +#define SN_SLH_DSA_SHA2_192s "id-slh-dsa-sha2-192s" +#define NID_SLH_DSA_SHA2_128f 1461 +#define LN_SLH_DSA_SHA2_128f "SLH-DSA-SHA2-128f" +#define SN_SLH_DSA_SHA2_128f "id-slh-dsa-sha2-128f" +#define NID_SLH_DSA_SHA2_128s 1460 +#define LN_SLH_DSA_SHA2_128s "SLH-DSA-SHA2-128s" +#define SN_SLH_DSA_SHA2_128s "id-slh-dsa-sha2-128s" +#define NID_ML_DSA_87 1459 +#define LN_ML_DSA_87 "ML-DSA-87" +#define SN_ML_DSA_87 "id-ml-dsa-87" +#define NID_ML_DSA_65 1458 +#define LN_ML_DSA_65 "ML-DSA-65" +#define SN_ML_DSA_65 "id-ml-dsa-65" +#define NID_ML_DSA_44 1457 +#define LN_ML_DSA_44 "ML-DSA-44" +#define SN_ML_DSA_44 "id-ml-dsa-44" +#define NID_RSA_SHA3_512 1119 +#define LN_RSA_SHA3_512 "RSA-SHA3-512" +#define SN_RSA_SHA3_512 "id-rsassa-pkcs1-v1_5-with-sha3-512" +#define NID_RSA_SHA3_384 1118 +#define LN_RSA_SHA3_384 "RSA-SHA3-384" +#define SN_RSA_SHA3_384 "id-rsassa-pkcs1-v1_5-with-sha3-384" +#define NID_RSA_SHA3_256 1117 +#define LN_RSA_SHA3_256 "RSA-SHA3-256" +#define SN_RSA_SHA3_256 "id-rsassa-pkcs1-v1_5-with-sha3-256" +#define NID_RSA_SHA3_224 1116 +#define LN_RSA_SHA3_224 "RSA-SHA3-224" +#define SN_RSA_SHA3_224 "id-rsassa-pkcs1-v1_5-with-sha3-224" +#define NID_ecdsa_with_SHA3_512 1115 +#define LN_ecdsa_with_SHA3_512 "ecdsa_with_SHA3-512" +#define SN_ecdsa_with_SHA3_512 "id-ecdsa-with-sha3-512" +#define NID_ecdsa_with_SHA3_384 1114 +#define LN_ecdsa_with_SHA3_384 "ecdsa_with_SHA3-384" +#define SN_ecdsa_with_SHA3_384 "id-ecdsa-with-sha3-384" +#define NID_ecdsa_with_SHA3_256 1113 +#define LN_ecdsa_with_SHA3_256 "ecdsa_with_SHA3-256" +#define SN_ecdsa_with_SHA3_256 "id-ecdsa-with-sha3-256" +#define NID_ecdsa_with_SHA3_224 1112 +#define LN_ecdsa_with_SHA3_224 "ecdsa_with_SHA3-224" +#define SN_ecdsa_with_SHA3_224 "id-ecdsa-with-sha3-224" +#define NID_dsa_with_SHA3_512 1111 +#define LN_dsa_with_SHA3_512 "dsa_with_SHA3-512" +#define SN_dsa_with_SHA3_512 "id-dsa-with-sha3-512" +#define NID_dsa_with_SHA3_384 1110 +#define LN_dsa_with_SHA3_384 "dsa_with_SHA3-384" +#define SN_dsa_with_SHA3_384 "id-dsa-with-sha3-384" +#define NID_dsa_with_SHA3_256 1109 +#define LN_dsa_with_SHA3_256 "dsa_with_SHA3-256" +#define SN_dsa_with_SHA3_256 "id-dsa-with-sha3-256" +#define NID_dsa_with_SHA3_224 1108 +#define LN_dsa_with_SHA3_224 "dsa_with_SHA3-224" +#define SN_dsa_with_SHA3_224 "id-dsa-with-sha3-224" +#define NID_dsa_with_SHA512 1107 +#define LN_dsa_with_SHA512 "dsa_with_SHA512" +#define SN_dsa_with_SHA512 "id-dsa-with-sha512" +#define NID_dsa_with_SHA384 1106 +#define LN_dsa_with_SHA384 "dsa_with_SHA384" +#define SN_dsa_with_SHA384 "id-dsa-with-sha384" +#define NID_dsa_with_SHA256 803 +#define SN_dsa_with_SHA256 "dsa_with_SHA256" +#define NID_dsa_with_SHA224 802 +#define SN_dsa_with_SHA224 "dsa_with_SHA224" +#define NID_kmac256 1197 +#define LN_kmac256 "kmac256" +#define SN_kmac256 "KMAC256" +#define NID_kmac128 1196 +#define LN_kmac128 "kmac128" +#define SN_kmac128 "KMAC128" +#define NID_hmac_sha3_512 1105 +#define LN_hmac_sha3_512 "hmac-sha3-512" +#define SN_hmac_sha3_512 "id-hmacWithSHA3-512" +#define NID_hmac_sha3_384 1104 +#define LN_hmac_sha3_384 "hmac-sha3-384" +#define SN_hmac_sha3_384 "id-hmacWithSHA3-384" +#define NID_hmac_sha3_256 1103 +#define LN_hmac_sha3_256 "hmac-sha3-256" +#define SN_hmac_sha3_256 "id-hmacWithSHA3-256" +#define NID_hmac_sha3_224 1102 +#define LN_hmac_sha3_224 "hmac-sha3-224" +#define SN_hmac_sha3_224 "id-hmacWithSHA3-224" +#define NID_shake256 1101 +#define LN_shake256 "shake256" +#define SN_shake256 "SHAKE256" +#define NID_shake128 1100 +#define LN_shake128 "shake128" +#define SN_shake128 "SHAKE128" +#define NID_sha3_512 1099 +#define LN_sha3_512 "sha3-512" +#define SN_sha3_512 "SHA3-512" +#define NID_sha3_384 1098 +#define LN_sha3_384 "sha3-384" +#define SN_sha3_384 "SHA3-384" +#define NID_sha3_256 1097 +#define LN_sha3_256 "sha3-256" +#define SN_sha3_256 "SHA3-256" +#define NID_sha3_224 1096 +#define LN_sha3_224 "sha3-224" +#define SN_sha3_224 "SHA3-224" +#define NID_sha512_256 1095 +#define LN_sha512_256 "sha512-256" +#define SN_sha512_256 "SHA512-256" +#define NID_sha512_224 1094 +#define LN_sha512_224 "sha512-224" +#define SN_sha512_224 "SHA512-224" +#define NID_sha224 675 +#define LN_sha224 "sha224" +#define SN_sha224 "SHA224" +#define NID_sha512 674 +#define LN_sha512 "sha512" +#define SN_sha512 "SHA512" +#define NID_sha384 673 +#define LN_sha384 "sha384" +#define SN_sha384 "SHA384" +#define NID_sha256 672 +#define LN_sha256 "sha256" +#define NID_des_ede3_cfb8 659 +#define LN_des_ede3_cfb8 "des-ede3-cfb8" +#define SN_des_ede3_cfb8 "DES-EDE3-CFB8" +#define NID_des_ede3_cfb1 658 +#define LN_des_ede3_cfb1 "des-ede3-cfb1" +#define SN_des_ede3_cfb1 "DES-EDE3-CFB1" +#define NID_des_cfb8 657 +#define LN_des_cfb8 "des-cfb8" +#define SN_des_cfb8 "DES-CFB8" +#define NID_des_cfb1 656 +#define LN_des_cfb1 "des-cfb1" +#define SN_des_cfb1 "DES-CFB1" +#define NID_aes_256_ocb 960 +#define LN_aes_256_ocb "aes-256-ocb" +#define SN_aes_256_ocb "AES-256-OCB" +#define NID_aes_192_ocb 959 +#define LN_aes_192_ocb "aes-192-ocb" +#define SN_aes_192_ocb "AES-192-OCB" +#define NID_aes_128_ocb 958 +#define LN_aes_128_ocb "aes-128-ocb" +#define SN_aes_128_ocb "AES-128-OCB" +#define NID_aes_256_ctr 906 +#define LN_aes_256_ctr "aes-256-ctr" +#define SN_aes_256_ctr "AES-256-CTR" +#define NID_aes_192_ctr 905 +#define LN_aes_192_ctr "aes-192-ctr" +#define SN_aes_192_ctr "AES-192-CTR" +#define NID_aes_128_ctr 904 +#define LN_aes_128_ctr "aes-128-ctr" +#define SN_aes_128_ctr "AES-128-CTR" +#define NID_aes_256_cfb8 655 +#define LN_aes_256_cfb8 "aes-256-cfb8" +#define SN_aes_256_cfb8 "AES-256-CFB8" +#define NID_aes_192_cfb8 654 +#define LN_aes_192_cfb8 "aes-192-cfb8" +#define SN_aes_192_cfb8 "AES-192-CFB8" +#define NID_aes_128_cfb8 653 +#define LN_aes_128_cfb8 "aes-128-cfb8" +#define SN_aes_128_cfb8 "AES-128-CFB8" +#define NID_aes_256_cfb1 652 +#define LN_aes_256_cfb1 "aes-256-cfb1" +#define SN_aes_256_cfb1 "AES-256-CFB1" +#define NID_aes_192_cfb1 651 +#define LN_aes_192_cfb1 "aes-192-cfb1" +#define SN_aes_192_cfb1 "AES-192-CFB1" +#define NID_aes_128_cfb1 650 +#define LN_aes_128_cfb1 "aes-128-cfb1" +#define SN_aes_128_cfb1 "AES-128-CFB1" +#define NID_aes_256_xts 914 +#define LN_aes_256_xts "aes-256-xts" +#define SN_aes_256_xts "AES-256-XTS" +#define NID_aes_128_xts 913 +#define LN_aes_128_xts "aes-128-xts" +#define SN_aes_128_xts "AES-128-XTS" +#define NID_id_aes256_wrap_pad 903 +#define SN_id_aes256_wrap_pad "id-aes256-wrap-pad" +#define NID_aes_256_ccm 902 +#define LN_aes_256_ccm "aes-256-ccm" +#define SN_aes_256_ccm "id-aes256-CCM" +#define NID_aes_256_gcm 901 +#define LN_aes_256_gcm "aes-256-gcm" +#define SN_aes_256_gcm "id-aes256-GCM" +#define NID_id_aes256_wrap 790 +#define SN_id_aes256_wrap "id-aes256-wrap" +#define NID_aes_256_cfb128 429 +#define LN_aes_256_cfb128 "aes-256-cfb" +#define SN_aes_256_cfb128 "AES-256-CFB" +#define NID_aes_256_ofb128 428 +#define LN_aes_256_ofb128 "aes-256-ofb" +#define SN_aes_256_ofb128 "AES-256-OFB" +#define NID_aes_256_cbc 427 +#define LN_aes_256_cbc "aes-256-cbc" +#define NID_aes_256_ecb 426 +#define LN_aes_256_ecb "aes-256-ecb" +#define SN_aes_256_ecb "AES-256-ECB" +#define NID_id_aes192_wrap_pad 900 +#define SN_id_aes192_wrap_pad "id-aes192-wrap-pad" +#define NID_aes_192_ccm 899 +#define LN_aes_192_ccm "aes-192-ccm" +#define SN_aes_192_ccm "id-aes192-CCM" +#define NID_aes_192_gcm 898 +#define LN_aes_192_gcm "aes-192-gcm" +#define SN_aes_192_gcm "id-aes192-GCM" +#define NID_id_aes192_wrap 789 +#define SN_id_aes192_wrap "id-aes192-wrap" +#define NID_aes_192_cfb128 425 +#define LN_aes_192_cfb128 "aes-192-cfb" +#define SN_aes_192_cfb128 "AES-192-CFB" +#define NID_aes_192_ofb128 424 +#define LN_aes_192_ofb128 "aes-192-ofb" +#define SN_aes_192_ofb128 "AES-192-OFB" +#define NID_aes_192_cbc 423 +#define LN_aes_192_cbc "aes-192-cbc" +#define SN_aes_192_cbc "AES-192-CBC" +#define NID_aes_192_ecb 422 +#define LN_aes_192_ecb "aes-192-ecb" +#define SN_aes_192_ecb "AES-192-ECB" +#define NID_id_aes128_wrap_pad 897 +#define SN_id_aes128_wrap_pad "id-aes128-wrap-pad" +#define NID_aes_128_ccm 896 +#define LN_aes_128_ccm "aes-128-ccm" +#define SN_aes_128_ccm "id-aes128-CCM" +#define NID_aes_128_gcm 895 +#define LN_aes_128_gcm "aes-128-gcm" +#define SN_aes_128_gcm "id-aes128-GCM" +#define NID_id_aes128_wrap 788 +#define SN_id_aes128_wrap "id-aes128-wrap" +#define NID_aes_128_cfb128 421 +#define LN_aes_128_cfb128 "aes-128-cfb" +#define SN_aes_128_cfb128 "AES-128-CFB" +#define NID_aes_128_ofb128 420 +#define LN_aes_128_ofb128 "aes-128-ofb" +#define SN_aes_128_ofb128 "AES-128-OFB" +#define NID_aes_128_cbc 419 +#define LN_aes_128_cbc "aes-128-cbc" +#define SN_aes_128_cbc "AES-128-CBC" +#define NID_aes_128_ecb 418 +#define LN_aes_128_ecb "aes-128-ecb" +#define SN_aes_128_ecb "AES-128-ECB" +#define NID_zlib_compression 125 +#define LN_zlib_compression "zlib compression" +#define SN_zlib_compression "ZLIB" +#define NID_id_hex_multipart_message 508 +#define LN_id_hex_multipart_message "id-hex-multipart-message" +#define SN_id_hex_multipart_message "id-hex-multipart-message" +#define NID_id_hex_partial_message 507 +#define LN_id_hex_partial_message "id-hex-partial-message" +#define SN_id_hex_partial_message "id-hex-partial-message" +#define NID_mime_mhs_bodies 506 +#define LN_mime_mhs_bodies "mime-mhs-bodies" +#define SN_mime_mhs_bodies "mime-mhs-bodies" +#define NID_mime_mhs_headings 505 +#define LN_mime_mhs_headings "mime-mhs-headings" +#define SN_mime_mhs_headings "mime-mhs-headings" +#define NID_mime_mhs 504 +#define LN_mime_mhs "MIME MHS" +#define SN_mime_mhs "mime-mhs" +#define NID_id_kp_wisun_fan_device 1322 +#define LN_id_kp_wisun_fan_device "Wi-SUN Alliance Field Area Network (FAN)" +#define SN_id_kp_wisun_fan_device "id-kp-wisun-fan-device" +#define NID_dcObject 390 +#define LN_dcObject "dcObject" +#define SN_dcObject "dcobject" +#define NID_Enterprises 389 +#define LN_Enterprises "Enterprises" +#define SN_Enterprises "enterprises" +#define NID_Mail 388 +#define LN_Mail "Mail" +#define NID_SNMPv2 387 +#define LN_SNMPv2 "SNMPv2" +#define SN_SNMPv2 "snmpv2" +#define NID_Security 386 +#define LN_Security "Security" +#define SN_Security "security" +#define NID_Private 385 +#define LN_Private "Private" +#define SN_Private "private" +#define NID_Experimental 384 +#define LN_Experimental "Experimental" +#define SN_Experimental "experimental" +#define NID_Management 383 +#define LN_Management "Management" +#define SN_Management "mgmt" +#define NID_Directory 382 +#define LN_Directory "Directory" +#define SN_Directory "directory" +#define NID_iana 381 +#define LN_iana "iana" +#define SN_iana "IANA" +#define NID_dod 380 +#define LN_dod "dod" +#define SN_dod "DOD" +#define NID_org 379 +#define LN_org "org" +#define SN_org "ORG" +#define NID_ns_sgc 139 +#define LN_ns_sgc "Netscape Server Gated Crypto" +#define SN_ns_sgc "nsSGC" +#define NID_netscape_cert_sequence 79 +#define LN_netscape_cert_sequence "Netscape Certificate Sequence" +#define SN_netscape_cert_sequence "nsCertSequence" +#define NID_netscape_comment 78 +#define LN_netscape_comment "Netscape Comment" +#define SN_netscape_comment "nsComment" +#define NID_netscape_ssl_server_name 77 +#define LN_netscape_ssl_server_name "Netscape SSL Server Name" +#define SN_netscape_ssl_server_name "nsSslServerName" +#define NID_netscape_ca_policy_url 76 +#define LN_netscape_ca_policy_url "Netscape CA Policy Url" +#define SN_netscape_ca_policy_url "nsCaPolicyUrl" +#define NID_netscape_renewal_url 75 +#define LN_netscape_renewal_url "Netscape Renewal Url" +#define SN_netscape_renewal_url "nsRenewalUrl" +#define NID_netscape_ca_revocation_url 74 +#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" +#define SN_netscape_ca_revocation_url "nsCaRevocationUrl" +#define NID_netscape_revocation_url 73 +#define LN_netscape_revocation_url "Netscape Revocation Url" +#define SN_netscape_revocation_url "nsRevocationUrl" +#define NID_netscape_base_url 72 +#define LN_netscape_base_url "Netscape Base Url" +#define SN_netscape_base_url "nsBaseUrl" +#define NID_netscape_cert_type 71 +#define LN_netscape_cert_type "Netscape Cert Type" +#define SN_netscape_cert_type "nsCertType" +#define NID_netscape_data_type 59 +#define LN_netscape_data_type "Netscape Data Type" +#define SN_netscape_data_type "nsDataType" +#define NID_netscape_cert_extension 58 +#define LN_netscape_cert_extension "Netscape Certificate Extension" +#define SN_netscape_cert_extension "nsCertExt" +#define NID_netscape 57 +#define LN_netscape "Netscape Communications Corp." +#define SN_netscape "Netscape" +#define NID_anyExtendedKeyUsage 910 +#define LN_anyExtendedKeyUsage "Any Extended Key Usage" +#define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" +#define NID_associated_information 1319 +#define LN_associated_information "X509v3 Associated Information" +#define SN_associated_information "associatedInformation" +#define NID_alt_signature_value 1318 +#define LN_alt_signature_value "X509v3 Alternative Signature Value" +#define SN_alt_signature_value "altSignatureValue" +#define NID_alt_signature_algorithm 1317 +#define LN_alt_signature_algorithm "X509v3 Alternative Signature Algorithm" +#define SN_alt_signature_algorithm "altSignatureAlgorithm" +#define NID_subject_alt_public_key_info 1316 +#define LN_subject_alt_public_key_info "X509v3 Subject Alternative Public Key Info" +#define SN_subject_alt_public_key_info "subjectAltPublicKeyInfo" +#define NID_prot_restrict 1315 +#define LN_prot_restrict "X509v3 Protocol Restriction" +#define SN_prot_restrict "protRestrict" +#define NID_authorization_validation 1314 +#define LN_authorization_validation "X509v3 Authorization Validation" +#define SN_authorization_validation "authorizationValidation" +#define NID_holder_name_constraints 1313 +#define LN_holder_name_constraints "X509v3 Holder Name Constraints" +#define SN_holder_name_constraints "holderNameConstraints" +#define NID_attribute_mappings 1312 +#define LN_attribute_mappings "X509v3 Attribute Mappings" +#define SN_attribute_mappings "attributeMappings" +#define NID_allowed_attribute_assignments 1311 +#define LN_allowed_attribute_assignments "X509v3 Allowed Attribute Assignments" +#define SN_allowed_attribute_assignments "allowedAttributeAssignments" +#define NID_group_ac 1310 +#define LN_group_ac "X509v3 Group Attribute Certificate" +#define SN_group_ac "groupAC" +#define NID_single_use 1309 +#define LN_single_use "X509v3 Single Use" +#define SN_single_use "singleUse" +#define NID_issued_on_behalf_of 1308 +#define LN_issued_on_behalf_of "X509v3 Issued On Behalf Of" +#define SN_issued_on_behalf_of "issuedOnBehalfOf" +#define NID_id_aa_issuing_distribution_point 1307 +#define LN_id_aa_issuing_distribution_point "X509v3 Attribute Authority Issuing Distribution Point" +#define SN_id_aa_issuing_distribution_point "aAissuingDistributionPoint" +#define NID_no_assertion 1306 +#define LN_no_assertion "X509v3 No Assertion" +#define SN_no_assertion "noAssertion" +#define NID_indirect_issuer 1305 +#define LN_indirect_issuer "X509v3 Indirect Issuer" +#define SN_indirect_issuer "indirectIssuer" +#define NID_acceptable_privilege_policies 1304 +#define LN_acceptable_privilege_policies "X509v3 Acceptable Privilege Policies" +#define SN_acceptable_privilege_policies "acceptablePrivPolicies" +#define NID_no_rev_avail 403 +#define LN_no_rev_avail "X509v3 No Revocation Available" +#define SN_no_rev_avail "noRevAvail" +#define NID_target_information 402 +#define LN_target_information "X509v3 AC Targeting" +#define SN_target_information "targetInformation" +#define NID_inhibit_any_policy 748 +#define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" +#define SN_inhibit_any_policy "inhibitAnyPolicy" +#define NID_acceptable_cert_policies 1303 +#define LN_acceptable_cert_policies "X509v3 Acceptable Certification Policies" +#define SN_acceptable_cert_policies "acceptableCertPolicies" +#define NID_soa_identifier 1302 +#define LN_soa_identifier "X509v3 Source of Authority Identifier" +#define SN_soa_identifier "sOAIdentifier" +#define NID_user_notice 1301 +#define LN_user_notice "X509v3 User Notice" +#define SN_user_notice "userNotice" +#define NID_attribute_descriptor 1300 +#define LN_attribute_descriptor "X509v3 Attribute Descriptor" +#define SN_attribute_descriptor "attributeDescriptor" +#define NID_freshest_crl 857 +#define LN_freshest_crl "X509v3 Freshest CRL" +#define SN_freshest_crl "freshestCRL" +#define NID_time_specification 1299 +#define LN_time_specification "X509v3 Time Specification" +#define SN_time_specification "timeSpecification" +#define NID_delegated_name_constraints 1298 +#define LN_delegated_name_constraints "X509v3 Delegated Name Constraints" +#define SN_delegated_name_constraints "delegatedNameConstraints" +#define NID_basic_att_constraints 1297 +#define LN_basic_att_constraints "X509v3 Basic Attribute Certificate Constraints" +#define SN_basic_att_constraints "basicAttConstraints" +#define NID_role_spec_cert_identifier 1296 +#define LN_role_spec_cert_identifier "X509v3 Role Specification Certificate Identifier" +#define SN_role_spec_cert_identifier "roleSpecCertIdentifier" +#define NID_authority_attribute_identifier 1295 +#define LN_authority_attribute_identifier "X509v3 Authority Attribute Identifier" +#define SN_authority_attribute_identifier "authorityAttributeIdentifier" +#define NID_ext_key_usage 126 +#define LN_ext_key_usage "X509v3 Extended Key Usage" +#define SN_ext_key_usage "extendedKeyUsage" +#define NID_policy_constraints 401 +#define LN_policy_constraints "X509v3 Policy Constraints" +#define SN_policy_constraints "policyConstraints" +#define NID_authority_key_identifier 90 +#define LN_authority_key_identifier "X509v3 Authority Key Identifier" +#define SN_authority_key_identifier "authorityKeyIdentifier" +#define NID_policy_mappings 747 +#define LN_policy_mappings "X509v3 Policy Mappings" +#define SN_policy_mappings "policyMappings" +#define NID_any_policy 746 +#define LN_any_policy "X509v3 Any Policy" +#define SN_any_policy "anyPolicy" +#define NID_certificate_policies 89 +#define LN_certificate_policies "X509v3 Certificate Policies" +#define SN_certificate_policies "certificatePolicies" +#define NID_crl_distribution_points 103 +#define LN_crl_distribution_points "X509v3 CRL Distribution Points" +#define SN_crl_distribution_points "crlDistributionPoints" +#define NID_name_constraints 666 +#define LN_name_constraints "X509v3 Name Constraints" +#define SN_name_constraints "nameConstraints" +#define NID_certificate_issuer 771 +#define LN_certificate_issuer "X509v3 Certificate Issuer" +#define SN_certificate_issuer "certificateIssuer" +#define NID_issuing_distribution_point 770 +#define LN_issuing_distribution_point "X509v3 Issuing Distribution Point" +#define SN_issuing_distribution_point "issuingDistributionPoint" +#define NID_delta_crl 140 +#define LN_delta_crl "X509v3 Delta CRL Indicator" +#define SN_delta_crl "deltaCRL" +#define LN_invalidity_date "Invalidity Date" +#define SN_invalidity_date "invalidityDate" +#define LN_crl_reason "X509v3 CRL Reason Code" +#define SN_crl_reason "CRLReason" +#define LN_crl_number "X509v3 CRL Number" +#define SN_crl_number "crlNumber" +#define NID_basic_constraints 87 +#define LN_basic_constraints "X509v3 Basic Constraints" +#define SN_basic_constraints "basicConstraints" +#define NID_issuer_alt_name 86 +#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" +#define SN_issuer_alt_name "issuerAltName" +#define NID_subject_alt_name 85 +#define LN_subject_alt_name "X509v3 Subject Alternative Name" +#define SN_subject_alt_name "subjectAltName" +#define NID_private_key_usage_period 84 +#define LN_private_key_usage_period "X509v3 Private Key Usage Period" +#define SN_private_key_usage_period "privateKeyUsagePeriod" +#define NID_key_usage 83 +#define LN_key_usage "X509v3 Key Usage" +#define SN_key_usage "keyUsage" +#define NID_subject_key_identifier 82 +#define LN_subject_key_identifier "X509v3 Subject Key Identifier" +#define SN_subject_key_identifier "subjectKeyIdentifier" +#define NID_subject_directory_attributes 769 +#define LN_subject_directory_attributes "X509v3 Subject Directory Attributes" +#define SN_subject_directory_attributes "subjectDirectoryAttributes" +#define NID_id_ce 81 +#define SN_id_ce "id-ce" +#define NID_mdc2 95 +#define LN_mdc2 "mdc2" +#define SN_mdc2 "MDC2" +#define NID_mdc2WithRSA 96 +#define LN_mdc2WithRSA "mdc2WithRSA" +#define SN_mdc2WithRSA "RSA-MDC2" +#define NID_rsa 19 +#define LN_rsa "rsa" +#define SN_rsa "RSA" +#define NID_X500algorithms 378 +#define LN_X500algorithms "directory services - algorithms" +#define SN_X500algorithms "X500algorithms" +#define NID_dnsName 1092 +#define LN_dnsName "dnsName" +#define NID_countryCode3n 1091 +#define LN_countryCode3n "countryCode3n" +#define SN_countryCode3n "n3" +#define NID_countryCode3c 1090 +#define LN_countryCode3c "countryCode3c" +#define SN_countryCode3c "c3" +#define NID_organizationIdentifier 1089 +#define LN_organizationIdentifier "organizationIdentifier" +#define NID_role 400 +#define LN_role "role" +#define SN_role "role" +#define NID_pseudonym 510 +#define LN_pseudonym "pseudonym" +#define NID_dmdName 892 +#define SN_dmdName "dmdName" +#define NID_deltaRevocationList 891 +#define LN_deltaRevocationList "deltaRevocationList" +#define NID_supportedAlgorithms 890 +#define LN_supportedAlgorithms "supportedAlgorithms" +#define NID_houseIdentifier 889 +#define LN_houseIdentifier "houseIdentifier" +#define NID_uniqueMember 888 +#define LN_uniqueMember "uniqueMember" +#define NID_distinguishedName 887 +#define LN_distinguishedName "distinguishedName" +#define NID_protocolInformation 886 +#define LN_protocolInformation "protocolInformation" +#define NID_enhancedSearchGuide 885 +#define LN_enhancedSearchGuide "enhancedSearchGuide" +#define NID_dnQualifier 174 +#define LN_dnQualifier "dnQualifier" +#define SN_dnQualifier "dnQualifier" +#define NID_x500UniqueIdentifier 503 +#define LN_x500UniqueIdentifier "x500UniqueIdentifier" +#define NID_generationQualifier 509 +#define LN_generationQualifier "generationQualifier" +#define NID_initials 101 +#define LN_initials "initials" +#define SN_initials "initials" +#define NID_givenName 99 +#define LN_givenName "givenName" +#define SN_givenName "GN" +#define NID_name 173 +#define LN_name "name" +#define SN_name "name" +#define NID_crossCertificatePair 884 +#define LN_crossCertificatePair "crossCertificatePair" +#define NID_certificateRevocationList 883 +#define LN_certificateRevocationList "certificateRevocationList" +#define NID_authorityRevocationList 882 +#define LN_authorityRevocationList "authorityRevocationList" +#define NID_cACertificate 881 +#define LN_cACertificate "cACertificate" +#define NID_userCertificate 880 +#define LN_userCertificate "userCertificate" +#define NID_userPassword 879 +#define LN_userPassword "userPassword" +#define NID_seeAlso 878 +#define SN_seeAlso "seeAlso" +#define NID_roleOccupant 877 +#define LN_roleOccupant "roleOccupant" +#define NID_owner 876 +#define SN_owner "owner" +#define NID_member 875 +#define SN_member "member" +#define NID_supportedApplicationContext 874 +#define LN_supportedApplicationContext "supportedApplicationContext" +#define NID_presentationAddress 873 +#define LN_presentationAddress "presentationAddress" +#define NID_preferredDeliveryMethod 872 +#define LN_preferredDeliveryMethod "preferredDeliveryMethod" +#define NID_destinationIndicator 871 +#define LN_destinationIndicator "destinationIndicator" +#define NID_registeredAddress 870 +#define LN_registeredAddress "registeredAddress" +#define NID_internationaliSDNNumber 869 +#define LN_internationaliSDNNumber "internationaliSDNNumber" +#define NID_x121Address 868 +#define LN_x121Address "x121Address" +#define NID_facsimileTelephoneNumber 867 +#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber" +#define NID_teletexTerminalIdentifier 866 +#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier" +#define NID_telexNumber 865 +#define LN_telexNumber "telexNumber" +#define NID_telephoneNumber 864 +#define LN_telephoneNumber "telephoneNumber" +#define NID_physicalDeliveryOfficeName 863 +#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName" +#define NID_postOfficeBox 862 +#define LN_postOfficeBox "postOfficeBox" +#define NID_postalCode 661 +#define LN_postalCode "postalCode" +#define NID_postalAddress 861 +#define LN_postalAddress "postalAddress" +#define NID_businessCategory 860 +#define LN_businessCategory "businessCategory" +#define NID_searchGuide 859 +#define LN_searchGuide "searchGuide" +#define NID_description 107 +#define LN_description "description" +#define NID_title 106 +#define LN_title "title" +#define SN_title "title" +#define NID_organizationalUnitName 18 +#define LN_organizationalUnitName "organizationalUnitName" +#define SN_organizationalUnitName "OU" +#define NID_organizationName 17 +#define LN_organizationName "organizationName" +#define SN_organizationName "O" +#define NID_streetAddress 660 +#define LN_streetAddress "streetAddress" +#define SN_streetAddress "street" +#define NID_stateOrProvinceName 16 +#define LN_stateOrProvinceName "stateOrProvinceName" +#define SN_stateOrProvinceName "ST" +#define NID_localityName 15 +#define LN_localityName "localityName" +#define SN_localityName "L" +#define NID_countryName 14 +#define LN_countryName "countryName" +#define SN_countryName "C" +#define NID_serialNumber 105 +#define LN_serialNumber "serialNumber" +#define NID_surname 100 +#define LN_surname "surname" +#define SN_surname "SN" +#define NID_commonName 13 +#define LN_commonName "commonName" +#define SN_commonName "CN" +#define NID_X509 12 +#define SN_X509 "X509" +#define NID_X500 11 +#define LN_X500 "directory services (X.500)" +#define SN_X500 "X500" +#define NID_sxnet 143 +#define LN_sxnet "Strong Extranet ID" +#define SN_sxnet "SXNetID" +#define NID_blake2s256 1057 +#define LN_blake2s256 "blake2s256" +#define SN_blake2s256 "BLAKE2s256" +#define NID_blake2b512 1056 +#define LN_blake2b512 "blake2b512" +#define SN_blake2b512 "BLAKE2b512" +#define NID_blake2smac 1202 +#define LN_blake2smac "blake2smac" +#define SN_blake2smac "BLAKE2SMAC" +#define NID_blake2bmac 1201 +#define LN_blake2bmac "blake2bmac" +#define SN_blake2bmac "BLAKE2BMAC" +#define NID_ripemd160WithRSA 119 +#define LN_ripemd160WithRSA "ripemd160WithRSA" +#define SN_ripemd160WithRSA "RSA-RIPEMD160" +#define NID_ripemd160 117 +#define LN_ripemd160 "ripemd160" +#define SN_ripemd160 "RIPEMD160" +#define NID_sha1WithRSA 115 +#define LN_sha1WithRSA "sha1WithRSA" +#define SN_sha1WithRSA "RSA-SHA1-2" +#define NID_dsaWithSHA1_2 70 +#define LN_dsaWithSHA1_2 "dsaWithSHA1-old" +#define SN_dsaWithSHA1_2 "DSA-SHA1-old" +#define NID_sha1 64 +#define LN_sha1 "sha1" +#define SN_sha1 "SHA1" +#define NID_sha 41 +#define LN_sha "sha" +#define SN_sha "SHA" +#define NID_desx_cbc 80 +#define LN_desx_cbc "desx-cbc" +#define SN_desx_cbc "DESX-CBC" +#define NID_des_ede3_ofb64 63 +#define LN_des_ede3_ofb64 "des-ede3-ofb" +#define SN_des_ede3_ofb64 "DES-EDE3-OFB" +#define NID_des_ede_ofb64 62 +#define LN_des_ede_ofb64 "des-ede-ofb" +#define SN_des_ede_ofb64 "DES-EDE-OFB" +#define NID_des_ede3_cfb64 61 +#define LN_des_ede3_cfb64 "des-ede3-cfb" +#define SN_des_ede3_cfb64 "DES-EDE3-CFB" +#define NID_des_ede_cfb64 60 +#define LN_des_ede_cfb64 "des-ede-cfb" +#define SN_des_ede_cfb64 "DES-EDE-CFB" +#define NID_des_ede_cbc 43 +#define LN_des_ede_cbc "des-ede-cbc" +#define SN_des_ede_cbc "DES-EDE-CBC" +#define NID_des_ede3_ecb 33 +#define LN_des_ede3_ecb "des-ede3" +#define SN_des_ede3_ecb "DES-EDE3" +#define NID_des_ede_ecb 32 +#define LN_des_ede_ecb "des-ede" +#define SN_des_ede_ecb "DES-EDE" +#define NID_shaWithRSAEncryption 42 +#define LN_shaWithRSAEncryption "shaWithRSAEncryption" +#define SN_shaWithRSAEncryption "RSA-SHA" +#define NID_dsaWithSHA 66 +#define LN_dsaWithSHA "dsaWithSHA" +#define SN_dsaWithSHA "DSA-SHA" +#define NID_dsa_2 67 +#define LN_dsa_2 "dsaEncryption-old" +#define SN_dsa_2 "DSA-old" +#define NID_rsaSignature 377 +#define SN_rsaSignature "rsaSignature" +#define NID_des_cfb64 30 +#define LN_des_cfb64 "des-cfb" +#define SN_des_cfb64 "DES-CFB" +#define NID_des_ofb64 45 +#define LN_des_ofb64 "des-ofb" +#define SN_des_ofb64 "DES-OFB" +#define NID_des_cbc 31 +#define LN_des_cbc "des-cbc" +#define SN_des_cbc "DES-CBC" +#define NID_des_ecb 29 +#define LN_des_ecb "des-ecb" +#define SN_des_ecb "DES-ECB" +#define NID_md5WithRSA 104 +#define LN_md5WithRSA "md5WithRSA" +#define SN_md5WithRSA "RSA-NP-MD5" +#define NID_algorithm 376 +#define LN_algorithm "algorithm" +#define SN_algorithm "algorithm" +#define NID_id_pkix_OCSP_trustRoot 375 +#define LN_id_pkix_OCSP_trustRoot "Trust Root" +#define SN_id_pkix_OCSP_trustRoot "trustRoot" +#define NID_id_pkix_OCSP_path 374 +#define SN_id_pkix_OCSP_path "path" +#define NID_id_pkix_OCSP_valid 373 +#define SN_id_pkix_OCSP_valid "valid" +#define NID_id_pkix_OCSP_extendedStatus 372 +#define LN_id_pkix_OCSP_extendedStatus "Extended OCSP Status" +#define SN_id_pkix_OCSP_extendedStatus "extendedStatus" +#define NID_id_pkix_OCSP_serviceLocator 371 +#define LN_id_pkix_OCSP_serviceLocator "OCSP Service Locator" +#define SN_id_pkix_OCSP_serviceLocator "serviceLocator" +#define NID_id_pkix_OCSP_archiveCutoff 370 +#define LN_id_pkix_OCSP_archiveCutoff "OCSP Archive Cutoff" +#define SN_id_pkix_OCSP_archiveCutoff "archiveCutoff" +#define NID_id_pkix_OCSP_noCheck 369 +#define LN_id_pkix_OCSP_noCheck "OCSP No Check" +#define SN_id_pkix_OCSP_noCheck "noCheck" +#define NID_id_pkix_OCSP_acceptableResponses 368 +#define LN_id_pkix_OCSP_acceptableResponses "Acceptable OCSP Responses" +#define SN_id_pkix_OCSP_acceptableResponses "acceptableResponses" +#define NID_id_pkix_OCSP_CrlID 367 +#define LN_id_pkix_OCSP_CrlID "OCSP CRL ID" +#define SN_id_pkix_OCSP_CrlID "CrlID" +#define NID_id_pkix_OCSP_Nonce 366 +#define LN_id_pkix_OCSP_Nonce "OCSP Nonce" +#define SN_id_pkix_OCSP_Nonce "Nonce" +#define NID_id_pkix_OCSP_basic 365 +#define LN_id_pkix_OCSP_basic "Basic OCSP Response" +#define SN_id_pkix_OCSP_basic "basicOCSPResponse" +#define NID_rpkiNotify 1245 +#define LN_rpkiNotify "RPKI Notify" +#define SN_rpkiNotify "rpkiNotify" +#define NID_signedObject 1244 +#define LN_signedObject "Signed Object" +#define SN_signedObject "signedObject" +#define NID_rpkiManifest 1243 +#define LN_rpkiManifest "RPKI Manifest" +#define SN_rpkiManifest "rpkiManifest" +#define NID_caRepository 785 +#define LN_caRepository "CA Repository" +#define SN_caRepository "caRepository" +#define NID_ad_dvcs 364 +#define LN_ad_dvcs "ad dvcs" +#define SN_ad_dvcs "AD_DVCS" +#define NID_ad_timeStamping 363 +#define LN_ad_timeStamping "AD Time Stamping" +#define SN_ad_timeStamping "ad_timestamping" +#define NID_ad_ca_issuers 179 +#define LN_ad_ca_issuers "CA Issuers" +#define SN_ad_ca_issuers "caIssuers" +#define NID_ad_OCSP 178 +#define LN_ad_OCSP "OCSP" +#define SN_ad_OCSP "OCSP" +#define NID_Independent 667 +#define LN_Independent "Independent" +#define SN_Independent "id-ppl-independent" +#define NID_id_ppl_inheritAll 665 +#define LN_id_ppl_inheritAll "Inherit all" +#define SN_id_ppl_inheritAll "id-ppl-inheritAll" +#define NID_id_ppl_anyLanguage 664 +#define LN_id_ppl_anyLanguage "Any language" +#define SN_id_ppl_anyLanguage "id-ppl-anyLanguage" +#define NID_id_cct_PKIResponse 362 +#define SN_id_cct_PKIResponse "id-cct-PKIResponse" +#define NID_id_cct_PKIData 361 +#define SN_id_cct_PKIData "id-cct-PKIData" +#define NID_id_cct_crs 360 +#define SN_id_cct_crs "id-cct-crs" +#define NID_ipAddr_asNumberv2 1242 +#define SN_ipAddr_asNumberv2 "ipAddr-asNumberv2" +#define NID_ipAddr_asNumber 1241 +#define SN_ipAddr_asNumber "ipAddr-asNumber" +#define NID_id_qcs_pkixQCSyntax_v1 359 +#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1" +#define NID_id_aca_encAttrs 399 +#define SN_id_aca_encAttrs "id-aca-encAttrs" +#define NID_id_aca_role 358 +#define SN_id_aca_role "id-aca-role" +#define NID_id_aca_group 357 +#define SN_id_aca_group "id-aca-group" +#define NID_id_aca_chargingIdentity 356 +#define SN_id_aca_chargingIdentity "id-aca-chargingIdentity" +#define NID_id_aca_accessIdentity 355 +#define SN_id_aca_accessIdentity "id-aca-accessIdentity" +#define NID_id_aca_authenticationInfo 354 +#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo" +#define NID_id_pda_countryOfResidence 353 +#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence" +#define NID_id_pda_countryOfCitizenship 352 +#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship" +#define NID_id_pda_gender 351 +#define SN_id_pda_gender "id-pda-gender" +#define NID_id_pda_placeOfBirth 349 +#define SN_id_pda_placeOfBirth "id-pda-placeOfBirth" +#define NID_id_pda_dateOfBirth 348 +#define SN_id_pda_dateOfBirth "id-pda-dateOfBirth" +#define NID_id_on_SmtpUTF8Mailbox 1208 +#define LN_id_on_SmtpUTF8Mailbox "Smtp UTF8 Mailbox" +#define SN_id_on_SmtpUTF8Mailbox "id-on-SmtpUTF8Mailbox" +#define NID_NAIRealm 1211 +#define LN_NAIRealm "NAIRealm" +#define SN_NAIRealm "id-on-NAIRealm" +#define NID_SRVName 1210 +#define LN_SRVName "SRVName" +#define SN_SRVName "id-on-dnsSRV" +#define NID_XmppAddr 1209 +#define LN_XmppAddr "XmppAddr" +#define SN_XmppAddr "id-on-xmppAddr" +#define NID_id_on_hardwareModuleName 1321 +#define LN_id_on_hardwareModuleName "Hardware Module Name" +#define SN_id_on_hardwareModuleName "id-on-hardwareModuleName" +#define NID_id_on_permanentIdentifier 858 +#define LN_id_on_permanentIdentifier "Permanent Identifier" +#define SN_id_on_permanentIdentifier "id-on-permanentIdentifier" +#define NID_id_on_personalData 347 +#define SN_id_on_personalData "id-on-personalData" +#define NID_id_cmc_confirmCertAcceptance 346 +#define SN_id_cmc_confirmCertAcceptance "id-cmc-confirmCertAcceptance" +#define NID_id_cmc_popLinkWitness 345 +#define SN_id_cmc_popLinkWitness "id-cmc-popLinkWitness" +#define NID_id_cmc_popLinkRandom 344 +#define SN_id_cmc_popLinkRandom "id-cmc-popLinkRandom" +#define NID_id_cmc_queryPending 343 +#define SN_id_cmc_queryPending "id-cmc-queryPending" +#define NID_id_cmc_responseInfo 342 +#define SN_id_cmc_responseInfo "id-cmc-responseInfo" +#define NID_id_cmc_regInfo 341 +#define SN_id_cmc_regInfo "id-cmc-regInfo" +#define NID_id_cmc_revokeRequest 340 +#define SN_id_cmc_revokeRequest "id-cmc-revokeRequest" +#define NID_id_cmc_getCRL 339 +#define SN_id_cmc_getCRL "id-cmc-getCRL" +#define NID_id_cmc_getCert 338 +#define SN_id_cmc_getCert "id-cmc-getCert" +#define NID_id_cmc_lraPOPWitness 337 +#define SN_id_cmc_lraPOPWitness "id-cmc-lraPOPWitness" +#define NID_id_cmc_decryptedPOP 336 +#define SN_id_cmc_decryptedPOP "id-cmc-decryptedPOP" +#define NID_id_cmc_encryptedPOP 335 +#define SN_id_cmc_encryptedPOP "id-cmc-encryptedPOP" +#define NID_id_cmc_addExtensions 334 +#define SN_id_cmc_addExtensions "id-cmc-addExtensions" +#define NID_id_cmc_recipientNonce 333 +#define SN_id_cmc_recipientNonce "id-cmc-recipientNonce" +#define NID_id_cmc_senderNonce 332 +#define SN_id_cmc_senderNonce "id-cmc-senderNonce" +#define NID_id_cmc_transactionId 331 +#define SN_id_cmc_transactionId "id-cmc-transactionId" +#define NID_id_cmc_dataReturn 330 +#define SN_id_cmc_dataReturn "id-cmc-dataReturn" +#define NID_id_cmc_identityProof 329 +#define SN_id_cmc_identityProof "id-cmc-identityProof" +#define NID_id_cmc_identification 328 +#define SN_id_cmc_identification "id-cmc-identification" +#define NID_id_cmc_statusInfo 327 +#define SN_id_cmc_statusInfo "id-cmc-statusInfo" +#define NID_id_alg_dh_pop 326 +#define SN_id_alg_dh_pop "id-alg-dh-pop" +#define NID_id_alg_dh_sig_hmac_sha1 325 +#define SN_id_alg_dh_sig_hmac_sha1 "id-alg-dh-sig-hmac-sha1" +#define NID_id_alg_noSignature 324 +#define SN_id_alg_noSignature "id-alg-noSignature" +#define NID_id_alg_des40 323 +#define SN_id_alg_des40 "id-alg-des40" +#define NID_id_regInfo_certReq 322 +#define SN_id_regInfo_certReq "id-regInfo-certReq" +#define NID_id_regInfo_utf8Pairs 321 +#define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" +#define SN_id_regCtrl_rsaKeyLen "id-regCtrl-rsaKeyLen" +#define SN_id_regCtrl_algId "id-regCtrl-algId" +#define NID_id_regCtrl_altCertTemplate 1258 +#define SN_id_regCtrl_altCertTemplate "id-regCtrl-altCertTemplate" +#define NID_id_regCtrl_protocolEncrKey 320 +#define SN_id_regCtrl_protocolEncrKey "id-regCtrl-protocolEncrKey" +#define NID_id_regCtrl_oldCertID 319 +#define SN_id_regCtrl_oldCertID "id-regCtrl-oldCertID" +#define NID_id_regCtrl_pkiArchiveOptions 318 +#define SN_id_regCtrl_pkiArchiveOptions "id-regCtrl-pkiArchiveOptions" +#define NID_id_regCtrl_pkiPublicationInfo 317 +#define SN_id_regCtrl_pkiPublicationInfo "id-regCtrl-pkiPublicationInfo" +#define NID_id_regCtrl_authenticator 316 +#define SN_id_regCtrl_authenticator "id-regCtrl-authenticator" +#define NID_id_regCtrl_regToken 315 +#define SN_id_regCtrl_regToken "id-regCtrl-regToken" +#define NID_id_regInfo 314 +#define SN_id_regInfo "id-regInfo" +#define NID_id_regCtrl 313 +#define SN_id_regCtrl "id-regCtrl" +#define NID_id_it_crls 1257 +#define SN_id_it_crls "id-it-crls" +#define SN_id_it_crlStatusList "id-it-crlStatusList" +#define NID_id_it_certProfile 1255 +#define SN_id_it_certProfile "id-it-certProfile" +#define SN_id_it_rootCaCert "id-it-rootCaCert" +#define SN_id_it_certReqTemplate "id-it-certReqTemplate" +#define NID_id_it_rootCaKeyUpdate 1224 +#define SN_id_it_rootCaKeyUpdate "id-it-rootCaKeyUpdate" +#define SN_id_it_caCerts "id-it-caCerts" +#define NID_id_it_suppLangTags 784 +#define SN_id_it_suppLangTags "id-it-suppLangTags" +#define NID_id_it_origPKIMessage 312 +#define SN_id_it_origPKIMessage "id-it-origPKIMessage" +#define NID_id_it_confirmWaitTime 311 +#define SN_id_it_confirmWaitTime "id-it-confirmWaitTime" +#define NID_id_it_implicitConfirm 310 +#define SN_id_it_implicitConfirm "id-it-implicitConfirm" +#define NID_id_it_revPassphrase 309 +#define SN_id_it_revPassphrase "id-it-revPassphrase" +#define NID_id_it_keyPairParamRep 308 +#define SN_id_it_keyPairParamRep "id-it-keyPairParamRep" +#define NID_id_it_keyPairParamReq 307 +#define SN_id_it_keyPairParamReq "id-it-keyPairParamReq" +#define NID_id_it_subscriptionResponse 306 +#define SN_id_it_subscriptionResponse "id-it-subscriptionResponse" +#define NID_id_it_subscriptionRequest 305 +#define SN_id_it_subscriptionRequest "id-it-subscriptionRequest" +#define NID_id_it_unsupportedOIDs 304 +#define SN_id_it_unsupportedOIDs "id-it-unsupportedOIDs" +#define NID_id_it_currentCRL 303 +#define SN_id_it_currentCRL "id-it-currentCRL" +#define NID_id_it_caKeyUpdateInfo 302 +#define SN_id_it_caKeyUpdateInfo "id-it-caKeyUpdateInfo" +#define NID_id_it_preferredSymmAlg 301 +#define SN_id_it_preferredSymmAlg "id-it-preferredSymmAlg" +#define NID_id_it_encKeyPairTypes 300 +#define SN_id_it_encKeyPairTypes "id-it-encKeyPairTypes" +#define NID_id_it_signKeyPairTypes 299 +#define SN_id_it_signKeyPairTypes "id-it-signKeyPairTypes" +#define NID_id_it_caProtEncCert 298 +#define SN_id_it_caProtEncCert "id-it-caProtEncCert" +#define NID_cmKGA 1222 +#define LN_cmKGA "Certificate Management Key Generation Authority" +#define SN_cmKGA "cmKGA" +#define NID_id_kp_BrandIndicatorforMessageIdentification 1221 +#define LN_id_kp_BrandIndicatorforMessageIdentification "Brand Indicator for Message Identification" +#define SN_id_kp_BrandIndicatorforMessageIdentification "id-kp-BrandIndicatorforMessageIdentification" +#define NID_id_kp_bgpsec_router 1220 +#define LN_id_kp_bgpsec_router "BGPsec Router" +#define SN_id_kp_bgpsec_router "id-kp-bgpsec-router" +#define NID_cmcArchive 1219 +#define LN_cmcArchive "CMC Archive Server" +#define SN_cmcArchive "cmcArchive" +#define NID_cmcRA 1132 +#define LN_cmcRA "CMC Registration Authority" +#define SN_cmcRA "cmcRA" +#define NID_cmcCA 1131 +#define LN_cmcCA "CMC Certificate Authority" +#define SN_cmcCA "cmcCA" +#define NID_sendProxiedOwner 1030 +#define LN_sendProxiedOwner "Send Proxied Owner" +#define SN_sendProxiedOwner "sendProxiedOwner" +#define NID_sendOwner 1029 +#define LN_sendOwner "Send Owner" +#define SN_sendOwner "sendOwner" +#define NID_sendProxiedRouter 1028 +#define LN_sendProxiedRouter "Send Proxied Router" +#define SN_sendProxiedRouter "sendProxiedRouter" +#define NID_sendRouter 1027 +#define LN_sendRouter "Send Router" +#define SN_sendRouter "sendRouter" +#define NID_sshServer 1026 +#define LN_sshServer "SSH Server" +#define SN_sshServer "secureShellServer" +#define NID_sshClient 1025 +#define LN_sshClient "SSH Client" +#define SN_sshClient "secureShellClient" +#define NID_capwapWTP 1024 +#define LN_capwapWTP "Ctrl/Provision WAP Termination" +#define SN_capwapWTP "capwapWTP" +#define NID_capwapAC 1023 +#define LN_capwapAC "Ctrl/provision WAP Access" +#define SN_capwapAC "capwapAC" +#define NID_ipsec_IKE 1022 +#define LN_ipsec_IKE "ipsec Internet Key Exchange" +#define SN_ipsec_IKE "ipsecIKE" +#define NID_dvcs 297 +#define LN_dvcs "dvcs" +#define SN_dvcs "DVCS" +#define NID_OCSP_sign 180 +#define LN_OCSP_sign "OCSP Signing" +#define SN_OCSP_sign "OCSPSigning" +#define NID_time_stamp 133 +#define LN_time_stamp "Time Stamping" +#define SN_time_stamp "timeStamping" +#define NID_ipsecUser 296 +#define LN_ipsecUser "IPSec User" +#define SN_ipsecUser "ipsecUser" +#define NID_ipsecTunnel 295 +#define LN_ipsecTunnel "IPSec Tunnel" +#define SN_ipsecTunnel "ipsecTunnel" +#define NID_ipsecEndSystem 294 +#define LN_ipsecEndSystem "IPSec End System" +#define SN_ipsecEndSystem "ipsecEndSystem" +#define NID_email_protect 132 +#define LN_email_protect "E-mail Protection" +#define SN_email_protect "emailProtection" +#define NID_code_sign 131 +#define LN_code_sign "Code Signing" +#define SN_code_sign "codeSigning" +#define NID_client_auth 130 +#define LN_client_auth "TLS Web Client Authentication" +#define SN_client_auth "clientAuth" +#define NID_server_auth 129 +#define LN_server_auth "TLS Web Server Authentication" +#define SN_server_auth "serverAuth" +#define NID_textNotice 293 +#define SN_textNotice "textNotice" +#define NID_id_qt_unotice 165 +#define LN_id_qt_unotice "Policy Qualifier User Notice" +#define SN_id_qt_unotice "id-qt-unotice" +#define NID_id_qt_cps 164 +#define LN_id_qt_cps "Policy Qualifier CPS" +#define SN_id_qt_cps "id-qt-cps" +#define NID_sbgp_autonomousSysNumv2 1240 +#define SN_sbgp_autonomousSysNumv2 "sbgp-autonomousSysNumv2" +#define NID_sbgp_ipAddrBlockv2 1239 +#define SN_sbgp_ipAddrBlockv2 "sbgp-ipAddrBlockv2" +#define NID_tlsfeature 1020 +#define LN_tlsfeature "TLS Feature" +#define SN_tlsfeature "tlsfeature" +#define NID_proxyCertInfo 663 +#define LN_proxyCertInfo "Proxy Certificate Information" +#define SN_proxyCertInfo "proxyCertInfo" +#define NID_sinfo_access 398 +#define LN_sinfo_access "Subject Information Access" +#define SN_sinfo_access "subjectInfoAccess" +#define NID_ac_proxying 397 +#define SN_ac_proxying "ac-proxying" +#define NID_sbgp_routerIdentifier 292 +#define SN_sbgp_routerIdentifier "sbgp-routerIdentifier" +#define NID_sbgp_autonomousSysNum 291 +#define SN_sbgp_autonomousSysNum "sbgp-autonomousSysNum" +#define NID_sbgp_ipAddrBlock 290 +#define SN_sbgp_ipAddrBlock "sbgp-ipAddrBlock" +#define NID_aaControls 289 +#define SN_aaControls "aaControls" +#define NID_ac_targeting 288 +#define SN_ac_targeting "ac-targeting" +#define NID_ac_auditEntity 1323 +#define NID_ac_auditIdentity 287 +#define LN_ac_auditIdentity "X509v3 Audit Identity" +#define SN_ac_auditIdentity "ac-auditIdentity" +#define NID_qcStatements 286 +#define SN_qcStatements "qcStatements" +#define NID_biometricInfo 285 +#define LN_biometricInfo "Biometric Info" +#define SN_biometricInfo "biometricInfo" +#define NID_info_access 177 +#define LN_info_access "Authority Information Access" +#define SN_info_access "authorityInfoAccess" +#define NID_id_mod_cmp2021_02 1253 +#define SN_id_mod_cmp2021_02 "id-mod-cmp2021-02" +#define NID_id_mod_cmp2021_88 1252 +#define SN_id_mod_cmp2021_88 "id-mod-cmp2021-88" +#define NID_id_mod_cmp2000_02 1251 +#define SN_id_mod_cmp2000_02 "id-mod-cmp2000-02" +#define NID_id_mod_cmp2000 284 +#define SN_id_mod_cmp2000 "id-mod-cmp2000" +#define NID_id_mod_dvcs 283 +#define SN_id_mod_dvcs "id-mod-dvcs" +#define NID_id_mod_ocsp 282 +#define SN_id_mod_ocsp "id-mod-ocsp" +#define NID_id_mod_timestamp_protocol 281 +#define SN_id_mod_timestamp_protocol "id-mod-timestamp-protocol" +#define NID_id_mod_attribute_cert 280 +#define SN_id_mod_attribute_cert "id-mod-attribute-cert" +#define NID_id_mod_qualified_cert_93 279 +#define SN_id_mod_qualified_cert_93 "id-mod-qualified-cert-93" +#define NID_id_mod_qualified_cert_88 278 +#define SN_id_mod_qualified_cert_88 "id-mod-qualified-cert-88" +#define NID_id_mod_cmp 277 +#define SN_id_mod_cmp "id-mod-cmp" +#define NID_id_mod_kea_profile_93 276 +#define SN_id_mod_kea_profile_93 "id-mod-kea-profile-93" +#define NID_id_mod_kea_profile_88 275 +#define SN_id_mod_kea_profile_88 "id-mod-kea-profile-88" +#define NID_id_mod_cmc 274 +#define SN_id_mod_cmc "id-mod-cmc" +#define NID_id_mod_crmf 273 +#define SN_id_mod_crmf "id-mod-crmf" +#define NID_id_pkix1_implicit_93 272 +#define SN_id_pkix1_implicit_93 "id-pkix1-implicit-93" +#define NID_id_pkix1_explicit_93 271 +#define SN_id_pkix1_explicit_93 "id-pkix1-explicit-93" +#define NID_id_pkix1_implicit_88 270 +#define SN_id_pkix1_implicit_88 "id-pkix1-implicit-88" +#define NID_id_pkix1_explicit_88 269 +#define SN_id_pkix1_explicit_88 "id-pkix1-explicit-88" +#define NID_id_ad 176 +#define SN_id_ad "id-ad" +#define NID_id_ppl 662 +#define SN_id_ppl "id-ppl" +#define NID_id_cct 268 +#define SN_id_cct "id-cct" +#define NID_id_cp 1238 +#define SN_id_cp "id-cp" +#define NID_id_qcs 267 +#define SN_id_qcs "id-qcs" +#define NID_id_aca 266 +#define SN_id_aca "id-aca" +#define NID_id_pda 265 +#define SN_id_pda "id-pda" +#define NID_id_on 264 +#define SN_id_on "id-on" +#define NID_id_cmc 263 +#define SN_id_cmc "id-cmc" +#define NID_id_alg 262 +#define SN_id_alg "id-alg" +#define NID_id_pkip 261 +#define SN_id_pkip "id-pkip" +#define NID_id_it 260 +#define SN_id_it "id-it" +#define NID_id_kp 128 +#define SN_id_kp "id-kp" +#define NID_id_qt 259 +#define SN_id_qt "id-qt" +#define NID_id_pe 175 +#define SN_id_pe "id-pe" +#define NID_id_pkix_mod 258 +#define SN_id_pkix_mod "id-pkix-mod" +#define NID_id_pkix 127 +#define SN_id_pkix "PKIX" +#define NID_bf_ofb64 94 +#define LN_bf_ofb64 "bf-ofb" +#define SN_bf_ofb64 "BF-OFB" +#define NID_bf_cfb64 93 +#define LN_bf_cfb64 "bf-cfb" +#define SN_bf_cfb64 "BF-CFB" +#define NID_bf_ecb 92 +#define LN_bf_ecb "bf-ecb" +#define SN_bf_ecb "BF-ECB" +#define NID_bf_cbc 91 +#define LN_bf_cbc "bf-cbc" +#define SN_bf_cbc "BF-CBC" +#define NID_idea_ofb64 46 +#define LN_idea_ofb64 "idea-ofb" +#define SN_idea_ofb64 "IDEA-OFB" +#define NID_idea_cfb64 35 +#define LN_idea_cfb64 "idea-cfb" +#define SN_idea_cfb64 "IDEA-CFB" +#define NID_idea_ecb 36 +#define LN_idea_ecb "idea-ecb" +#define SN_idea_ecb "IDEA-ECB" +#define NID_idea_cbc 34 +#define LN_idea_cbc "idea-cbc" +#define SN_idea_cbc "IDEA-CBC" +#define NID_ms_app_policies 1294 +#define LN_ms_app_policies "Microsoft Application Policies Extension" +#define SN_ms_app_policies "ms-app-policies" +#define NID_ms_cert_templ 1293 +#define LN_ms_cert_templ "Microsoft certificate template" +#define SN_ms_cert_templ "ms-cert-templ" +#define NID_ms_ntds_obj_sid 1291 +#define LN_ms_ntds_obj_sid "Microsoft NTDS AD objectSid" +#define SN_ms_ntds_obj_sid "ms-ntds-obj-sid" +#define NID_ms_ntds_sec_ext 1292 +#define LN_ms_ntds_sec_ext "Microsoft NTDS CA Extension" +#define SN_ms_ntds_sec_ext "ms-ntds-sec-ext" +#define NID_ms_upn 649 +#define LN_ms_upn "Microsoft User Principal Name" +#define SN_ms_upn "msUPN" +#define NID_ms_smartcard_login 648 +#define LN_ms_smartcard_login "Microsoft Smartcard Login" +#define SN_ms_smartcard_login "msSmartcardLogin" +#define NID_ms_efs 138 +#define LN_ms_efs "Microsoft Encrypted File System" +#define SN_ms_efs "msEFS" +#define NID_ms_sgc 137 +#define LN_ms_sgc "Microsoft Server Gated Crypto" +#define SN_ms_sgc "msSGC" +#define NID_ms_ctl_sign 136 +#define LN_ms_ctl_sign "Microsoft Trust List Signing" +#define SN_ms_ctl_sign "msCTLSign" +#define NID_ms_code_com 135 +#define LN_ms_code_com "Microsoft Commercial Code Signing" +#define SN_ms_code_com "msCodeCom" +#define NID_ms_code_ind 134 +#define LN_ms_code_ind "Microsoft Individual Code Signing" +#define SN_ms_code_ind "msCodeInd" +#define NID_ms_ext_req 171 +#define LN_ms_ext_req "Microsoft Extension Request" +#define SN_ms_ext_req "msExtReq" +#define NID_rc5_ofb64 123 +#define LN_rc5_ofb64 "rc5-ofb" +#define SN_rc5_ofb64 "RC5-OFB" +#define NID_rc5_cfb64 122 +#define LN_rc5_cfb64 "rc5-cfb" +#define SN_rc5_cfb64 "RC5-CFB" +#define NID_rc5_ecb 121 +#define LN_rc5_ecb "rc5-ecb" +#define SN_rc5_ecb "RC5-ECB" +#define NID_rc5_cbc 120 +#define LN_rc5_cbc "rc5-cbc" +#define SN_rc5_cbc "RC5-CBC" +#define NID_des_ede3_cbc 44 +#define LN_des_ede3_cbc "des-ede3-cbc" +#define SN_des_ede3_cbc "DES-EDE3-CBC" +#define NID_rc4_40 97 +#define LN_rc4_40 "rc4-40" +#define SN_rc4_40 "RC4-40" +#define NID_rc4 5 +#define LN_rc4 "rc4" +#define SN_rc4 "RC4" +#define NID_rc2_64_cbc 166 +#define LN_rc2_64_cbc "rc2-64-cbc" +#define SN_rc2_64_cbc "RC2-64-CBC" +#define NID_rc2_40_cbc 98 +#define LN_rc2_40_cbc "rc2-40-cbc" +#define SN_rc2_40_cbc "RC2-40-CBC" +#define NID_rc2_ofb64 40 +#define LN_rc2_ofb64 "rc2-ofb" +#define SN_rc2_ofb64 "RC2-OFB" +#define NID_rc2_cfb64 39 +#define LN_rc2_cfb64 "rc2-cfb" +#define SN_rc2_cfb64 "RC2-CFB" +#define NID_rc2_ecb 38 +#define LN_rc2_ecb "rc2-ecb" +#define SN_rc2_ecb "RC2-ECB" +#define NID_rc2_cbc 37 +#define LN_rc2_cbc "rc2-cbc" +#define SN_rc2_cbc "RC2-CBC" +#define NID_hmacWithSHA512_256 1194 +#define LN_hmacWithSHA512_256 "hmacWithSHA512-256" +#define NID_hmacWithSHA512_224 1193 +#define LN_hmacWithSHA512_224 "hmacWithSHA512-224" +#define NID_hmacWithSHA512 801 +#define LN_hmacWithSHA512 "hmacWithSHA512" +#define NID_hmacWithSHA384 800 +#define LN_hmacWithSHA384 "hmacWithSHA384" +#define NID_hmacWithSHA256 799 +#define LN_hmacWithSHA256 "hmacWithSHA256" +#define NID_hmacWithSHA224 798 +#define LN_hmacWithSHA224 "hmacWithSHA224" +#define NID_hmacWithSM3 1281 +#define LN_hmacWithSM3 "hmacWithSM3" +#define NID_SM2_with_SM3 1204 +#define LN_SM2_with_SM3 "SM2-with-SM3" +#define SN_SM2_with_SM3 "SM2-SM3" +#define NID_sm3WithRSAEncryption 1144 +#define LN_sm3WithRSAEncryption "sm3WithRSAEncryption" +#define SN_sm3WithRSAEncryption "RSA-SM3" +#define NID_sm3 1143 +#define LN_sm3 "sm3" +#define SN_sm3 "SM3" +#define NID_sm2 1172 +#define LN_sm2 "sm2" +#define SN_sm2 "SM2" +#define NID_hmacWithSHA1 163 +#define LN_hmacWithSHA1 "hmacWithSHA1" +#define NID_hmacWithMD5 797 +#define LN_hmacWithMD5 "hmacWithMD5" +#define NID_md5_sha1 114 +#define LN_md5_sha1 "md5-sha1" +#define SN_md5_sha1 "MD5-SHA1" +#define NID_md5 4 +#define LN_md5 "md5" +#define SN_md5 "MD5" +#define NID_md4 257 +#define LN_md4 "md4" +#define SN_md4 "MD4" +#define NID_md2 3 +#define LN_md2 "md2" +#define SN_md2 "MD2" +#define NID_safeContentsBag 155 +#define LN_safeContentsBag "safeContentsBag" +#define NID_secretBag 154 +#define LN_secretBag "secretBag" +#define NID_crlBag 153 +#define LN_crlBag "crlBag" +#define NID_certBag 152 +#define LN_certBag "certBag" +#define NID_pkcs8ShroudedKeyBag 151 +#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" +#define NID_keyBag 150 +#define LN_keyBag "keyBag" +#define NID_pbe_WithSHA1And40BitRC2_CBC 149 +#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" +#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" +#define NID_pbe_WithSHA1And128BitRC2_CBC 148 +#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" +#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" +#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 +#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" +#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" +#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 +#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" +#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" +#define NID_pbe_WithSHA1And40BitRC4 145 +#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" +#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" +#define NID_pbe_WithSHA1And128BitRC4 144 +#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" +#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" +#define NID_id_aa_CMSAlgorithmProtection 1263 +#define SN_id_aa_CMSAlgorithmProtection "id-aa-CMSAlgorithmProtection" +#define NID_x509Crl 160 +#define LN_x509Crl "x509Crl" +#define NID_sdsiCertificate 159 +#define LN_sdsiCertificate "sdsiCertificate" +#define NID_x509Certificate 158 +#define LN_x509Certificate "x509Certificate" +#define NID_LocalKeySet 856 +#define LN_LocalKeySet "Microsoft Local Key set" +#define SN_LocalKeySet "LocalKeySet" +#define NID_ms_csp_name 417 +#define LN_ms_csp_name "Microsoft CSP Name" +#define SN_ms_csp_name "CSPName" +#define NID_localKeyID 157 +#define LN_localKeyID "localKeyID" +#define NID_friendlyName 156 +#define LN_friendlyName "friendlyName" +#define NID_id_smime_cti_ets_proofOfCreation 256 +#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation" +#define NID_id_smime_cti_ets_proofOfApproval 255 +#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval" +#define NID_id_smime_cti_ets_proofOfSender 254 +#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender" +#define NID_id_smime_cti_ets_proofOfDelivery 253 +#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery" +#define NID_id_smime_cti_ets_proofOfReceipt 252 +#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt" +#define NID_id_smime_cti_ets_proofOfOrigin 251 +#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin" +#define NID_id_smime_spq_ets_sqt_unotice 250 +#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice" +#define NID_id_smime_spq_ets_sqt_uri 249 +#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri" +#define NID_id_smime_cd_ldap 248 +#define SN_id_smime_cd_ldap "id-smime-cd-ldap" +#define NID_id_alg_PWRI_KEK 893 +#define SN_id_alg_PWRI_KEK "id-alg-PWRI-KEK" +#define NID_id_smime_alg_CMSRC2wrap 247 +#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap" +#define NID_id_smime_alg_CMS3DESwrap 246 +#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap" +#define NID_id_smime_alg_ESDH 245 +#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH" +#define NID_id_smime_alg_RC2wrap 244 +#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap" +#define NID_id_smime_alg_3DESwrap 243 +#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap" +#define NID_id_smime_alg_ESDHwithRC2 242 +#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2" +#define NID_id_smime_alg_ESDHwith3DES 241 +#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" +#define NID_id_aa_ets_archiveTimestampV2 1280 +#define SN_id_aa_ets_archiveTimestampV2 "id-aa-ets-archiveTimestampV2" +#define NID_id_smime_aa_signingCertificateV2 1086 +#define SN_id_smime_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" +#define NID_id_aa_ets_attrRevocationRefs 1262 +#define SN_id_aa_ets_attrRevocationRefs "id-aa-ets-attrRevocationRefs" +#define NID_id_aa_ets_attrCertificateRefs 1261 +#define SN_id_aa_ets_attrCertificateRefs "id-aa-ets-attrCertificateRefs" +#define NID_id_smime_aa_dvcs_dvc 240 +#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc" +#define NID_id_smime_aa_signatureType 239 +#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType" +#define NID_id_smime_aa_ets_archiveTimeStamp 238 +#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp" +#define NID_id_smime_aa_ets_certCRLTimestamp 237 +#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp" +#define NID_id_smime_aa_ets_escTimeStamp 236 +#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp" +#define NID_id_smime_aa_ets_revocationValues 235 +#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues" +#define NID_id_smime_aa_ets_certValues 234 +#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues" +#define NID_id_smime_aa_ets_RevocationRefs 233 +#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs" +#define NID_id_smime_aa_ets_CertificateRefs 232 +#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs" +#define NID_id_smime_aa_ets_contentTimestamp 231 +#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp" +#define NID_id_smime_aa_ets_otherSigCert 230 +#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert" +#define NID_id_smime_aa_ets_signerAttr 229 +#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr" +#define NID_id_smime_aa_ets_signerLocation 228 +#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation" +#define NID_id_smime_aa_ets_commitmentType 227 +#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType" +#define NID_id_smime_aa_ets_sigPolicyId 226 +#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId" +#define NID_id_smime_aa_timeStampToken 225 +#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken" +#define NID_id_smime_aa_smimeEncryptCerts 224 +#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts" +#define NID_id_smime_aa_signingCertificate 223 +#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate" +#define NID_id_smime_aa_encrypKeyPref 222 +#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref" +#define NID_id_smime_aa_contentReference 221 +#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference" +#define NID_id_smime_aa_equivalentLabels 220 +#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels" +#define NID_id_smime_aa_macValue 219 +#define SN_id_smime_aa_macValue "id-smime-aa-macValue" +#define NID_id_smime_aa_contentIdentifier 218 +#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier" +#define NID_id_smime_aa_encapContentType 217 +#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType" +#define NID_id_smime_aa_msgSigDigest 216 +#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest" +#define NID_id_smime_aa_contentHint 215 +#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint" +#define NID_id_smime_aa_mlExpandHistory 214 +#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory" +#define NID_id_smime_aa_securityLabel 213 +#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel" +#define NID_id_smime_aa_receiptRequest 212 +#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" +#define NID_id_ct_rpkiSignedPrefixList 1320 +#define SN_id_ct_rpkiSignedPrefixList "id-ct-rpkiSignedPrefixList" +#define NID_id_ct_signedTAL 1284 +#define SN_id_ct_signedTAL "id-ct-signedTAL" +#define NID_id_ct_ASPA 1250 +#define SN_id_ct_ASPA "id-ct-ASPA" +#define NID_id_ct_signedChecklist 1247 +#define SN_id_ct_signedChecklist "id-ct-signedChecklist" +#define NID_id_ct_geofeedCSVwithCRLF 1246 +#define SN_id_ct_geofeedCSVwithCRLF "id-ct-geofeedCSVwithCRLF" +#define NID_id_ct_resourceTaggedAttest 1237 +#define SN_id_ct_resourceTaggedAttest "id-ct-resourceTaggedAttest" +#define NID_id_ct_rpkiGhostbusters 1236 +#define SN_id_ct_rpkiGhostbusters "id-ct-rpkiGhostbusters" +#define NID_id_ct_xml 1060 +#define SN_id_ct_xml "id-ct-xml" +#define NID_id_ct_asciiTextWithCRLF 787 +#define SN_id_ct_asciiTextWithCRLF "id-ct-asciiTextWithCRLF" +#define NID_id_ct_rpkiManifest 1235 +#define SN_id_ct_rpkiManifest "id-ct-rpkiManifest" +#define NID_id_ct_routeOriginAuthz 1234 +#define SN_id_ct_routeOriginAuthz "id-ct-routeOriginAuthz" +#define NID_id_smime_ct_authEnvelopedData 1059 +#define SN_id_smime_ct_authEnvelopedData "id-smime-ct-authEnvelopedData" +#define NID_id_smime_ct_contentCollection 1058 +#define SN_id_smime_ct_contentCollection "id-smime-ct-contentCollection" +#define NID_id_smime_ct_compressedData 786 +#define SN_id_smime_ct_compressedData "id-smime-ct-compressedData" +#define NID_id_smime_ct_DVCSResponseData 211 +#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData" +#define NID_id_smime_ct_DVCSRequestData 210 +#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData" +#define NID_id_smime_ct_contentInfo 209 +#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo" +#define NID_id_smime_ct_TDTInfo 208 +#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo" +#define NID_id_smime_ct_TSTInfo 207 +#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo" +#define NID_id_smime_ct_publishCert 206 +#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert" +#define NID_id_smime_ct_authData 205 +#define SN_id_smime_ct_authData "id-smime-ct-authData" +#define NID_id_smime_ct_receipt 204 +#define SN_id_smime_ct_receipt "id-smime-ct-receipt" +#define NID_id_smime_mod_ets_eSigPolicy_97 203 +#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97" +#define NID_id_smime_mod_ets_eSigPolicy_88 202 +#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88" +#define NID_id_smime_mod_ets_eSignature_97 201 +#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97" +#define NID_id_smime_mod_ets_eSignature_88 200 +#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88" +#define NID_id_smime_mod_msg_v3 199 +#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3" +#define NID_id_smime_mod_oid 198 +#define SN_id_smime_mod_oid "id-smime-mod-oid" +#define NID_id_smime_mod_ess 197 +#define SN_id_smime_mod_ess "id-smime-mod-ess" +#define NID_id_smime_mod_cms 196 +#define SN_id_smime_mod_cms "id-smime-mod-cms" +#define NID_id_smime_cti 195 +#define SN_id_smime_cti "id-smime-cti" +#define NID_id_smime_spq 194 +#define SN_id_smime_spq "id-smime-spq" +#define NID_id_smime_cd 193 +#define SN_id_smime_cd "id-smime-cd" +#define NID_id_smime_alg 192 +#define SN_id_smime_alg "id-smime-alg" +#define NID_id_smime_aa 191 +#define SN_id_smime_aa "id-smime-aa" +#define NID_id_smime_ct 190 +#define SN_id_smime_ct "id-smime-ct" +#define NID_id_smime_mod 189 +#define SN_id_smime_mod "id-smime-mod" +#define NID_SMIME 188 +#define LN_SMIME "S/MIME" +#define SN_SMIME "SMIME" +#define NID_SMIMECapabilities 167 +#define LN_SMIMECapabilities "S/MIME Capabilities" +#define SN_SMIMECapabilities "SMIME-CAPS" +#define NID_ext_req 172 +#define LN_ext_req "Extension Request" +#define SN_ext_req "extReq" +#define NID_pkcs9_extCertAttributes 56 +#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" +#define NID_pkcs9_unstructuredAddress 55 +#define LN_pkcs9_unstructuredAddress "unstructuredAddress" +#define NID_pkcs9_challengePassword 54 +#define LN_pkcs9_challengePassword "challengePassword" +#define NID_pkcs9_countersignature 53 +#define LN_pkcs9_countersignature "countersignature" +#define NID_pkcs9_signingTime 52 +#define LN_pkcs9_signingTime "signingTime" +#define NID_pkcs9_messageDigest 51 +#define LN_pkcs9_messageDigest "messageDigest" +#define NID_pkcs9_contentType 50 +#define LN_pkcs9_contentType "contentType" +#define NID_pkcs9_unstructuredName 49 +#define LN_pkcs9_unstructuredName "unstructuredName" +#define LN_pkcs9_emailAddress "emailAddress" +#define NID_pkcs9 47 +#define SN_pkcs9 "pkcs9" +#define NID_pkcs7_encrypted 26 +#define LN_pkcs7_encrypted "pkcs7-encryptedData" +#define NID_pkcs7_digest 25 +#define LN_pkcs7_digest "pkcs7-digestData" +#define NID_pkcs7_signedAndEnveloped 24 +#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" +#define NID_pkcs7_enveloped 23 +#define LN_pkcs7_enveloped "pkcs7-envelopedData" +#define LN_pkcs7_signed "pkcs7-signedData" +#define LN_pkcs7_data "pkcs7-data" +#define NID_pkcs7 20 +#define SN_pkcs7 "pkcs7" +#define NID_pbmac1 162 +#define LN_pbmac1 "PBMAC1" +#define NID_pbes2 161 +#define LN_pbes2 "PBES2" +#define NID_id_pbkdf2 69 +#define LN_id_pbkdf2 "PBKDF2" +#define NID_pbeWithSHA1AndRC2_CBC 68 +#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" +#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" +#define NID_pbeWithSHA1AndDES_CBC 170 +#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" +#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" +#define NID_pbeWithMD5AndRC2_CBC 169 +#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" +#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" +#define NID_pbeWithMD2AndRC2_CBC 168 +#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" +#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" +#define NID_pbeWithMD5AndDES_CBC 10 +#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" +#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" +#define NID_pbeWithMD2AndDES_CBC 9 +#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" +#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" +#define NID_pkcs5 187 +#define SN_pkcs5 "pkcs5" +#define NID_dhKeyAgreement 28 +#define LN_dhKeyAgreement "dhKeyAgreement" +#define NID_pkcs3 27 +#define SN_pkcs3 "pkcs3" +#define NID_sha512_256WithRSAEncryption 1146 +#define LN_sha512_256WithRSAEncryption "sha512-256WithRSAEncryption" +#define SN_sha512_256WithRSAEncryption "RSA-SHA512/256" +#define NID_sha512_224WithRSAEncryption 1145 +#define LN_sha512_224WithRSAEncryption "sha512-224WithRSAEncryption" +#define SN_sha512_224WithRSAEncryption "RSA-SHA512/224" +#define NID_sha224WithRSAEncryption 671 +#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption" +#define SN_sha224WithRSAEncryption "RSA-SHA224" +#define NID_sha512WithRSAEncryption 670 +#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption" +#define SN_sha512WithRSAEncryption "RSA-SHA512" +#define NID_sha384WithRSAEncryption 669 +#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption" +#define SN_sha384WithRSAEncryption "RSA-SHA384" +#define NID_sha256WithRSAEncryption 668 +#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption" +#define SN_sha256WithRSAEncryption "RSA-SHA256" +#define NID_rsassaPss 912 +#define LN_rsassaPss "rsassaPss" +#define SN_rsassaPss "RSASSA-PSS" +#define NID_pSpecified 935 +#define LN_pSpecified "pSpecified" +#define SN_pSpecified "PSPECIFIED" +#define NID_mgf1 911 +#define LN_mgf1 "mgf1" +#define SN_mgf1 "MGF1" +#define NID_rsaesOaep 919 +#define LN_rsaesOaep "rsaesOaep" +#define SN_rsaesOaep "RSAES-OAEP" +#define NID_sha1WithRSAEncryption 65 +#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" +#define SN_sha1WithRSAEncryption "RSA-SHA1" +#define NID_md5WithRSAEncryption 8 +#define LN_md5WithRSAEncryption "md5WithRSAEncryption" +#define SN_md5WithRSAEncryption "RSA-MD5" +#define NID_md4WithRSAEncryption 396 +#define LN_md4WithRSAEncryption "md4WithRSAEncryption" +#define SN_md4WithRSAEncryption "RSA-MD4" +#define NID_md2WithRSAEncryption 7 +#define LN_md2WithRSAEncryption "md2WithRSAEncryption" +#define SN_md2WithRSAEncryption "RSA-MD2" +#define NID_rsaEncryption 6 +#define LN_rsaEncryption "rsaEncryption" +#define NID_pkcs1 186 +#define SN_pkcs1 "pkcs1" +#define NID_pkcs 2 +#define LN_pkcs "RSA Data Security, Inc. PKCS" +#define SN_pkcs "pkcs" +#define NID_rsadsi 1 +#define LN_rsadsi "RSA Data Security, Inc." +#define SN_rsadsi "rsadsi" +#define NID_id_DHBasedMac 783 +#define LN_id_DHBasedMac "Diffie-Hellman based MAC" +#define SN_id_DHBasedMac "id-DHBasedMac" +#define NID_id_PasswordBasedMAC 782 +#define LN_id_PasswordBasedMAC "password based MAC" +#define SN_id_PasswordBasedMAC "id-PasswordBasedMAC" +#define NID_pbeWithMD5AndCast5_CBC 112 +#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" +#define NID_cast5_ofb64 111 +#define LN_cast5_ofb64 "cast5-ofb" +#define SN_cast5_ofb64 "CAST5-OFB" +#define NID_cast5_cfb64 110 +#define LN_cast5_cfb64 "cast5-cfb" +#define SN_cast5_cfb64 "CAST5-CFB" +#define NID_cast5_ecb 109 +#define LN_cast5_ecb "cast5-ecb" +#define SN_cast5_ecb "CAST5-ECB" +#define NID_cast5_cbc 108 +#define LN_cast5_cbc "cast5-cbc" +#define SN_cast5_cbc "CAST5-CBC" +#define NID_wap_wsg_idm_ecid_wtls12 745 +#define SN_wap_wsg_idm_ecid_wtls12 "wap-wsg-idm-ecid-wtls12" +#define NID_wap_wsg_idm_ecid_wtls11 744 +#define SN_wap_wsg_idm_ecid_wtls11 "wap-wsg-idm-ecid-wtls11" +#define NID_wap_wsg_idm_ecid_wtls10 743 +#define SN_wap_wsg_idm_ecid_wtls10 "wap-wsg-idm-ecid-wtls10" +#define NID_wap_wsg_idm_ecid_wtls9 742 +#define SN_wap_wsg_idm_ecid_wtls9 "wap-wsg-idm-ecid-wtls9" +#define NID_wap_wsg_idm_ecid_wtls8 741 +#define SN_wap_wsg_idm_ecid_wtls8 "wap-wsg-idm-ecid-wtls8" +#define NID_wap_wsg_idm_ecid_wtls7 740 +#define SN_wap_wsg_idm_ecid_wtls7 "wap-wsg-idm-ecid-wtls7" +#define NID_wap_wsg_idm_ecid_wtls6 739 +#define SN_wap_wsg_idm_ecid_wtls6 "wap-wsg-idm-ecid-wtls6" +#define NID_wap_wsg_idm_ecid_wtls5 738 +#define SN_wap_wsg_idm_ecid_wtls5 "wap-wsg-idm-ecid-wtls5" +#define NID_wap_wsg_idm_ecid_wtls4 737 +#define SN_wap_wsg_idm_ecid_wtls4 "wap-wsg-idm-ecid-wtls4" +#define NID_wap_wsg_idm_ecid_wtls3 736 +#define SN_wap_wsg_idm_ecid_wtls3 "wap-wsg-idm-ecid-wtls3" +#define NID_wap_wsg_idm_ecid_wtls1 735 +#define SN_wap_wsg_idm_ecid_wtls1 "wap-wsg-idm-ecid-wtls1" +#define NID_sect571r1 734 +#define SN_sect571r1 "sect571r1" +#define NID_sect571k1 733 +#define SN_sect571k1 "sect571k1" +#define NID_sect409r1 732 +#define SN_sect409r1 "sect409r1" +#define NID_sect409k1 731 +#define SN_sect409k1 "sect409k1" +#define NID_sect283r1 730 +#define SN_sect283r1 "sect283r1" +#define NID_sect283k1 729 +#define SN_sect283k1 "sect283k1" +#define NID_sect239k1 728 +#define SN_sect239k1 "sect239k1" +#define NID_sect233r1 727 +#define SN_sect233r1 "sect233r1" +#define NID_sect233k1 726 +#define SN_sect233k1 "sect233k1" +#define NID_sect193r2 725 +#define SN_sect193r2 "sect193r2" +#define NID_sect193r1 724 +#define SN_sect193r1 "sect193r1" +#define NID_sect163r2 723 +#define SN_sect163r2 "sect163r2" +#define NID_sect163r1 722 +#define SN_sect163r1 "sect163r1" +#define NID_sect163k1 721 +#define SN_sect163k1 "sect163k1" +#define NID_sect131r2 720 +#define SN_sect131r2 "sect131r2" +#define NID_sect131r1 719 +#define SN_sect131r1 "sect131r1" +#define NID_sect113r2 718 +#define SN_sect113r2 "sect113r2" +#define NID_sect113r1 717 +#define SN_sect113r1 "sect113r1" +#define NID_secp521r1 716 +#define SN_secp521r1 "secp521r1" +#define NID_secp384r1 715 +#define SN_secp384r1 "secp384r1" +#define NID_secp256k1 714 +#define SN_secp256k1 "secp256k1" +#define NID_secp224r1 713 +#define SN_secp224r1 "secp224r1" +#define NID_secp224k1 712 +#define SN_secp224k1 "secp224k1" +#define NID_secp192k1 711 +#define SN_secp192k1 "secp192k1" +#define NID_secp160r2 710 +#define SN_secp160r2 "secp160r2" +#define NID_secp160r1 709 +#define SN_secp160r1 "secp160r1" +#define NID_secp160k1 708 +#define SN_secp160k1 "secp160k1" +#define NID_secp128r2 707 +#define SN_secp128r2 "secp128r2" +#define NID_secp128r1 706 +#define SN_secp128r1 "secp128r1" +#define NID_secp112r2 705 +#define SN_secp112r2 "secp112r2" +#define NID_secp112r1 704 +#define SN_secp112r1 "secp112r1" +#define NID_ecdsa_with_SHA512 796 +#define SN_ecdsa_with_SHA512 "ecdsa-with-SHA512" +#define NID_ecdsa_with_SHA384 795 +#define SN_ecdsa_with_SHA384 "ecdsa-with-SHA384" +#define NID_ecdsa_with_SHA256 794 +#define SN_ecdsa_with_SHA256 "ecdsa-with-SHA256" +#define NID_ecdsa_with_SHA224 793 +#define SN_ecdsa_with_SHA224 "ecdsa-with-SHA224" +#define NID_ecdsa_with_Specified 792 +#define SN_ecdsa_with_Specified "ecdsa-with-Specified" +#define NID_ecdsa_with_Recommended 791 +#define SN_ecdsa_with_Recommended "ecdsa-with-Recommended" +#define NID_ecdsa_with_SHA1 416 +#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1" +#define NID_X9_62_prime256v1 415 +#define NID_X9_62_prime239v3 414 +#define SN_X9_62_prime239v3 "prime239v3" +#define NID_X9_62_prime239v2 413 +#define SN_X9_62_prime239v2 "prime239v2" +#define NID_X9_62_prime239v1 412 +#define SN_X9_62_prime239v1 "prime239v1" +#define NID_X9_62_prime192v3 411 +#define SN_X9_62_prime192v3 "prime192v3" +#define NID_X9_62_prime192v2 410 +#define SN_X9_62_prime192v2 "prime192v2" +#define NID_X9_62_prime192v1 409 +#define NID_X9_62_c2tnb431r1 703 +#define SN_X9_62_c2tnb431r1 "c2tnb431r1" +#define NID_X9_62_c2pnb368w1 702 +#define SN_X9_62_c2pnb368w1 "c2pnb368w1" +#define NID_X9_62_c2tnb359v1 701 +#define SN_X9_62_c2tnb359v1 "c2tnb359v1" +#define NID_X9_62_c2pnb304w1 700 +#define SN_X9_62_c2pnb304w1 "c2pnb304w1" +#define NID_X9_62_c2pnb272w1 699 +#define SN_X9_62_c2pnb272w1 "c2pnb272w1" +#define NID_X9_62_c2onb239v5 698 +#define SN_X9_62_c2onb239v5 "c2onb239v5" +#define NID_X9_62_c2onb239v4 697 +#define SN_X9_62_c2onb239v4 "c2onb239v4" +#define NID_X9_62_c2tnb239v3 696 +#define SN_X9_62_c2tnb239v3 "c2tnb239v3" +#define NID_X9_62_c2tnb239v2 695 +#define SN_X9_62_c2tnb239v2 "c2tnb239v2" +#define NID_X9_62_c2tnb239v1 694 +#define SN_X9_62_c2tnb239v1 "c2tnb239v1" +#define NID_X9_62_c2pnb208w1 693 +#define SN_X9_62_c2pnb208w1 "c2pnb208w1" +#define NID_X9_62_c2onb191v5 692 +#define SN_X9_62_c2onb191v5 "c2onb191v5" +#define NID_X9_62_c2onb191v4 691 +#define SN_X9_62_c2onb191v4 "c2onb191v4" +#define NID_X9_62_c2tnb191v3 690 +#define SN_X9_62_c2tnb191v3 "c2tnb191v3" +#define NID_X9_62_c2tnb191v2 689 +#define SN_X9_62_c2tnb191v2 "c2tnb191v2" +#define NID_X9_62_c2tnb191v1 688 +#define SN_X9_62_c2tnb191v1 "c2tnb191v1" +#define NID_X9_62_c2pnb176v1 687 +#define SN_X9_62_c2pnb176v1 "c2pnb176v1" +#define NID_X9_62_c2pnb163v3 686 +#define SN_X9_62_c2pnb163v3 "c2pnb163v3" +#define NID_X9_62_c2pnb163v2 685 +#define SN_X9_62_c2pnb163v2 "c2pnb163v2" +#define NID_X9_62_c2pnb163v1 684 +#define SN_X9_62_c2pnb163v1 "c2pnb163v1" +#define NID_X9_62_id_ecPublicKey 408 +#define SN_X9_62_id_ecPublicKey "id-ecPublicKey" +#define NID_X9_62_ppBasis 683 +#define SN_X9_62_ppBasis "ppBasis" +#define NID_X9_62_tpBasis 682 +#define SN_X9_62_tpBasis "tpBasis" +#define NID_X9_62_onBasis 681 +#define SN_X9_62_onBasis "onBasis" +#define NID_X9_62_id_characteristic_two_basis 680 +#define SN_X9_62_id_characteristic_two_basis "id-characteristic-two-basis" +#define NID_X9_62_characteristic_two_field 407 +#define SN_X9_62_characteristic_two_field "characteristic-two-field" +#define NID_X9_62_prime_field 406 +#define SN_X9_62_prime_field "prime-field" +#define NID_ansi_X9_62 405 +#define LN_ansi_X9_62 "ANSI X9.62" +#define SN_ansi_X9_62 "ansi-X9-62" +#define NID_dsaWithSHA1 113 +#define LN_dsaWithSHA1 "dsaWithSHA1" +#define SN_dsaWithSHA1 "DSA-SHA1" +#define NID_dsa 116 +#define LN_dsa "dsaEncryption" +#define SN_dsa "DSA" +#define NID_sm_scheme 1142 +#define SN_sm_scheme "sm-scheme" +#define NID_oscca 1141 +#define SN_oscca "oscca" +#define NID_ISO_CN 1140 +#define LN_ISO_CN "ISO CN Member Body" +#define SN_ISO_CN "ISO-CN" +#define NID_X9cm 185 +#define LN_X9cm "X9.57 CM ?" +#define SN_X9cm "X9cm" +#define NID_X9_57 184 +#define LN_X9_57 "X9.57" +#define SN_X9_57 "X9-57" +#define NID_ISO_US 183 +#define LN_ISO_US "ISO US Member Body" +#define SN_ISO_US "ISO-US" +#define NID_clearance 395 +#define SN_clearance "clearance" +#define NID_selected_attribute_types 394 +#define LN_selected_attribute_types "Selected Attribute Types" +#define SN_selected_attribute_types "selected-attribute-types" +#define NID_wap_wsg 679 +#define SN_wap_wsg "wap-wsg" +#define NID_wap 678 +#define SN_wap "wap" +#define NID_international_organizations 647 +#define LN_international_organizations "International Organizations" +#define SN_international_organizations "international-organizations" +#define NID_ieee_siswg 1171 +#define LN_ieee_siswg "IEEE Security in Storage Working Group" +#define SN_ieee_siswg "ieee-siswg" +#define NID_ieee 1170 +#define SN_ieee "ieee" +#define NID_certicom_arc 677 +#define SN_certicom_arc "certicom-arc" +#define NID_x509ExtAdmission 1093 +#define LN_x509ExtAdmission "Professional Information or basis for Admission" +#define SN_x509ExtAdmission "x509ExtAdmission" +#define NID_hmac_sha1 781 +#define LN_hmac_sha1 "hmac-sha1" +#define SN_hmac_sha1 "HMAC-SHA1" +#define NID_hmac_md5 780 +#define LN_hmac_md5 "hmac-md5" +#define SN_hmac_md5 "HMAC-MD5" +#define NID_gmac 1195 +#define LN_gmac "gmac" +#define SN_gmac "GMAC" +#define NID_identified_organization 676 +#define SN_identified_organization "identified-organization" +#define NID_member_body 182 +#define LN_member_body "ISO Member Body" +#define SN_member_body "member-body" +#define NID_joint_iso_ccitt 393 +#define NID_joint_iso_itu_t 646 +#define LN_joint_iso_itu_t "joint-iso-itu-t" +#define SN_joint_iso_itu_t "JOINT-ISO-ITU-T" +#define NID_iso 181 +#define LN_iso "iso" +#define SN_iso "ISO" +#define NID_ccitt 404 +#define NID_itu_t 645 +#define LN_itu_t "itu-t" +#define SN_itu_t "ITU-T" +#define LN_undef "undefined" +#define SN_undef "UNDEF" diff --git a/cpp/ql/test/experimental/stubs/openssl/pem.h b/cpp/ql/test/experimental/stubs/openssl/pem.h new file mode 100644 index 000000000000..48b785e8f9a1 --- /dev/null +++ b/cpp/ql/test/experimental/stubs/openssl/pem.h @@ -0,0 +1,527 @@ +/* + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +#include "type_stubs.h" + +#ifndef OPENSSL_PEM_H +# define OPENSSL_PEM_H +#ifdef __cplusplus +extern "C" { +#endif + +# define PEM_BUFSIZE 1024 + +# define PEM_STRING_X509_OLD "X509 CERTIFICATE" +# define PEM_STRING_X509 "CERTIFICATE" +# define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +# define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +# define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +# define PEM_STRING_X509_CRL "X509 CRL" +# define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +# define PEM_STRING_PUBLIC "PUBLIC KEY" +# define PEM_STRING_RSA "RSA PRIVATE KEY" +# define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +# define PEM_STRING_DSA "DSA PRIVATE KEY" +# define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +# define PEM_STRING_PKCS7 "PKCS7" +# define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +# define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +# define PEM_STRING_PKCS8INF "PRIVATE KEY" +# define PEM_STRING_DHPARAMS "DH PARAMETERS" +# define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +# define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +# define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +# define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +# define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +# define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +# define PEM_STRING_PARAMETERS "PARAMETERS" +# define PEM_STRING_CMS "CMS" +# define PEM_STRING_SM2PARAMETERS "SM2 PARAMETERS" +# define PEM_STRING_ACERT "ATTRIBUTE CERTIFICATE" + +# define PEM_TYPE_ENCRYPTED 10 +# define PEM_TYPE_MIC_ONLY 20 +# define PEM_TYPE_MIC_CLEAR 30 +# define PEM_TYPE_CLEAR 40 + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +# define PEM_read_cb_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u) +# define PEM_read_cb_ex_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name##_ex(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +# define PEM_write_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x) +# define PEM_write_cb_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u) +# define PEM_write_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) +# define PEM_write_cb_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +# ifdef OPENSSL_NO_STDIO + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +# endif +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +# endif +# else + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str, fp, \ + (void **)x, cb, u); \ + } + +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ + PEM_write_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL, NULL, 0, NULL, NULL); \ + } + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) +# endif +# endif + +# define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + type *PEM_read_bio_##name(BIO *bp, type **x, \ + pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str, bp, \ + (void **)x, cb, u); \ + } + +# define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + PEM_write_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL,NULL,0,NULL,NULL); \ + } + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_read_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write(name, type, str, asn1) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb(name, type, str, asn1) + +/* These are the same except they are for the declarations */ + +/* + * The mysterious 'extern' that's passed to some macros is innocuous, + * and is there to quiet pre-C99 compilers that may complain about empty + * arguments in macro calls. + */ +# if defined(OPENSSL_NO_STDIO) + +# define DECLARE_PEM_read_fp_attr(attr, name, type) /**/ +# define DECLARE_PEM_read_fp_ex_attr(attr, name, type) /**/ +# define DECLARE_PEM_write_fp_attr(attr, name, type) /**/ +# define DECLARE_PEM_write_fp_ex_attr(attr, name, type) /**/ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_fp_const_attr(attr, name, type) /**/ +# endif +# define DECLARE_PEM_write_cb_fp_attr(attr, name, type) /**/ +# define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) /**/ + +# else + +# define DECLARE_PEM_read_fp_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); +# define DECLARE_PEM_read_fp_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); \ + attr PEM_read_cb_ex_fnsig(name, type, FILE, read); + +# define DECLARE_PEM_write_fp_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +# define DECLARE_PEM_write_fp_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); \ + attr PEM_write_ex_fnsig(name, type, FILE, write); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_fp_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +# endif +# define DECLARE_PEM_write_cb_fp_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); +# define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); \ + attr PEM_write_cb_ex_fnsig(name, type, FILE, write); + +# endif + +# define DECLARE_PEM_read_fp(name, type) \ + DECLARE_PEM_read_fp_attr(extern, name, type) +# define DECLARE_PEM_write_fp(name, type) \ + DECLARE_PEM_write_fp_attr(extern, name, type) +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_fp_const(name, type) \ + DECLARE_PEM_write_fp_const_attr(extern, name, type) +# endif +# define DECLARE_PEM_write_cb_fp(name, type) \ + DECLARE_PEM_write_cb_fp_attr(extern, name, type) + +# define DECLARE_PEM_read_bio_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); +# define DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); \ + attr PEM_read_cb_ex_fnsig(name, type, BIO, read_bio); +# define DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_bio_attr(extern, name, type) +# define DECLARE_PEM_read_bio_ex(name, type) \ + DECLARE_PEM_read_bio_ex_attr(extern, name, type) + +# define DECLARE_PEM_write_bio_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_ex_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_bio_attr(extern, name, type) +# define DECLARE_PEM_write_bio_ex(name, type) \ + DECLARE_PEM_write_bio_ex_attr(extern, name, type) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_bio_const_attr(extern, name, type) +# endif + +# define DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_cb_ex_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_bio_attr(extern, name, type) +# define DECLARE_PEM_write_cb_ex_bio(name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(extern, name, type) + +# define DECLARE_PEM_write_attr(attr, name, type) \ + DECLARE_PEM_write_bio_attr(attr, name, type) \ + DECLARE_PEM_write_fp_attr(attr, name, type) +# define DECLARE_PEM_write_ex_attr(attr, name, type) \ + DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_fp_ex_attr(attr, name, type) +# define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_attr(extern, name, type) +# define DECLARE_PEM_write_ex(name, type) \ + DECLARE_PEM_write_ex_attr(extern, name, type) +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_const_attr(attr, name, type) \ + DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + DECLARE_PEM_write_fp_const_attr(attr, name, type) +# define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_const_attr(extern, name, type) +# endif +# define DECLARE_PEM_write_cb_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_attr(attr, name, type) +# define DECLARE_PEM_write_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) +# define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_attr(extern, name, type) +# define DECLARE_PEM_write_cb_ex(name, type) \ + DECLARE_PEM_write_cb_ex_attr(extern, name, type) +# define DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_read_bio_attr(attr, name, type) \ + DECLARE_PEM_read_fp_attr(attr, name, type) +# define DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_read_fp_ex_attr(attr, name, type) +# define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_attr(extern, name, type) +# define DECLARE_PEM_read_ex(name, type) \ + DECLARE_PEM_read_ex_attr(extern, name, type) +# define DECLARE_PEM_rw_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_attr(attr, name, type) +# define DECLARE_PEM_rw_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_ex_attr(attr, name, type) +# define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_rw_attr(extern, name, type) +# define DECLARE_PEM_rw_ex(name, type) \ + DECLARE_PEM_rw_ex_attr(extern, name, type) +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_rw_const_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_const_attr(attr, name, type) +# define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_rw_const_attr(extern, name, type) +# endif +# define DECLARE_PEM_rw_cb_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_cb_attr(attr, name, type) +# define DECLARE_PEM_rw_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_ex_attr(attr, name, type) +# define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_rw_cb_attr(extern, name, type) +# define DECLARE_PEM_rw_cb_ex(name, type) \ + DECLARE_PEM_rw_cb_ex_attr(extern, name, type) + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +# define PEM_FLAG_SECURE 0x1 +# define PEM_FLAG_EAY_COMPATIBLE 0x2 +# define PEM_FLAG_ONLY_B64 0x4 +int PEM_read_bio_ex(BIO *bp, char **name, char **header, + unsigned char **data, long *len, unsigned int flags); +int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, + const void *x, const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio_ctx(OSSL_i2d_of_void_ctx *i2d, void *vctx, + const char *name, BIO *bp, const void *x, + const EVP_CIPHER *enc, const unsigned char *kstr, + int klen, pem_password_cb *cb, void *u); + +X509_INFO *PEM_X509_INFO_read_bio(BIO *bp, X509_INFO *sk, + pem_password_cb *cb, void *u); +X509_INFO +*PEM_X509_INFO_read_bio_ex(BIO *bp, X509_INFO *sk, + pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, + const char *propq); + +int PEM_X509_INFO_write_bio(BIO *bp, const X509_INFO *xi, EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cd, void *u); + +int PEM_read(FILE *fp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write(FILE *fp, const char *name, const char *hdr, + const unsigned char *data, long len); +void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, + const void *x, const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *callback, void *u); +X509_INFO *PEM_X509_INFO_read(FILE *fp, X509_INFO *sk, + pem_password_cb *cb, void *u); +X509_INFO +*PEM_X509_INFO_read_ex(FILE *fp, X509_INFO *sk, pem_password_cb *cb, + void *u, OSSL_LIB_CTX *libctx, const char *propq); + +int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +int PEM_SignUpdate(EVP_MD_CTX *ctx, const unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +/* The default pem_password_cb that's used internally */ +int PEM_def_callback(char *buf, int num, int rwflag, void *userdata); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, const char *str); + + + +// DECLARE_PEM_rw(X509, X509) +// DECLARE_PEM_rw(X509_AUX, X509) +// DECLARE_PEM_rw(X509_REQ, X509_REQ) +// DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) +// DECLARE_PEM_rw(X509_CRL, X509_CRL) +// DECLARE_PEM_rw(X509_PUBKEY, X509_PUBKEY) +// DECLARE_PEM_rw(PKCS7, PKCS7) +// DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) +// DECLARE_PEM_rw(PKCS8, X509_SIG) +DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) +// # ifndef OPENSSL_NO_DEPRECATED_3_0 +// DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA) +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSAPublicKey, RSA) +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSA_PUBKEY, RSA) +// # endif +// # ifndef OPENSSL_NO_DEPRECATED_3_0 +// # ifndef OPENSSL_NO_DSA +// DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA) +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSA_PUBKEY, DSA) +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSAparams, DSA) +// # endif +// # endif + +// # ifndef OPENSSL_NO_DEPRECATED_3_0 +// # ifndef OPENSSL_NO_EC +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, ECPKParameters, EC_GROUP) +// DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, ECPrivateKey, EC_KEY) +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, EC_PUBKEY, EC_KEY) +// # endif +// # endif + +// # ifndef OPENSSL_NO_DH +// # ifndef OPENSSL_NO_DEPRECATED_3_0 +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DHparams, DH) +// DECLARE_PEM_write_attr(OSSL_DEPRECATEDIN_3_0, DHxparams, DH) +// # endif +// # endif +DECLARE_PEM_rw_cb_ex(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw_ex(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PrivateKey_traditional(BIO *bp, const EVP_PKEY *x, + const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +/* Why do these take a signed char *kstr? */ +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, const EVP_PKEY *, const EVP_CIPHER *, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_bio(BIO *bp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int i2d_PKCS8PrivateKey_fp(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); + +EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int PEM_write_PKCS8PrivateKey(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cd, void *u); +EVP_PKEY *PEM_read_bio_Parameters_ex(BIO *bp, EVP_PKEY **x, + OSSL_LIB_CTX *libctx, const char *propq); +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, const EVP_PKEY *x); + +EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PrivateKey_bio(BIO *in); +EVP_PKEY *b2i_PublicKey_bio(BIO *in); +int i2b_PrivateKey_bio(BIO *out, const EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, const EVP_PKEY *pk); +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +EVP_PKEY *b2i_PVK_bio_ex(BIO *in, pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); +int i2b_PVK_bio(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +int i2b_PVK_bio_ex(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); + +# ifdef __cplusplus +} +# endif +#endif \ No newline at end of file diff --git a/cpp/ql/test/experimental/stubs/openssl/rand.h b/cpp/ql/test/experimental/stubs/openssl/rand.h new file mode 100644 index 000000000000..9b632725b9d7 --- /dev/null +++ b/cpp/ql/test/experimental/stubs/openssl/rand.h @@ -0,0 +1,20 @@ +/* + * Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Licensed under the Apache License 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * https://www.openssl.org/source/license.html + * or in the file LICENSE in the source distribution. + */ + +int RAND_bytes(unsigned char *buf, int num); + +int RAND_pseudo_bytes(unsigned char *buf, int num); \ No newline at end of file diff --git a/cpp/ql/test/experimental/stubs/openssl/rand_stubs.h b/cpp/ql/test/experimental/stubs/openssl/rand_stubs.h deleted file mode 100644 index 8d9b5c53c9ff..000000000000 --- a/cpp/ql/test/experimental/stubs/openssl/rand_stubs.h +++ /dev/null @@ -1,3 +0,0 @@ -int RAND_bytes(unsigned char *buf, int num); - -int RAND_pseudo_bytes(unsigned char *buf, int num); \ No newline at end of file diff --git a/cpp/ql/test/experimental/stubs/openssl/rsa.h b/cpp/ql/test/experimental/stubs/openssl/rsa.h new file mode 100644 index 000000000000..4bacb17f9c6f --- /dev/null +++ b/cpp/ql/test/experimental/stubs/openssl/rsa.h @@ -0,0 +1,585 @@ +/* + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +# include "type_stubs.h" + +#ifndef OPENSSL_RSA_H +# define OPENSSL_RSA_H +# pragma once + + +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_RSA_MAX_MODULUS_BITS +# define OPENSSL_RSA_MAX_MODULUS_BITS 16384 +# endif + +# define RSA_3 0x3L +# define RSA_F4 0x10001L + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/* The types RSA and RSA_METHOD are defined in ossl_typ.h */ + +# define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 2048 + +# ifndef OPENSSL_RSA_SMALL_MODULUS_BITS +# define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 +# endif + +/* exponent limit enforced for "large" modulus only */ +# ifndef OPENSSL_RSA_MAX_PUBEXP_BITS +# define OPENSSL_RSA_MAX_PUBEXP_BITS 64 +# endif +/* based on RFC 8017 appendix A.1.2 */ +# define RSA_ASN1_VERSION_DEFAULT 0 +# define RSA_ASN1_VERSION_MULTI 1 + +# define RSA_DEFAULT_PRIME_NUM 2 + +# define RSA_METHOD_FLAG_NO_CHECK 0x0001 +# define RSA_FLAG_CACHE_PUBLIC 0x0002 +# define RSA_FLAG_CACHE_PRIVATE 0x0004 +# define RSA_FLAG_BLINDING 0x0008 +# define RSA_FLAG_THREAD_SAFE 0x0010 +/* + * This flag means the private key operations will be handled by rsa_mod_exp + * and that they do not depend on the private key components being present: + * for example a key stored in external hardware. Without this flag + * bn_mod_exp gets called when private key components are absent. + */ +# define RSA_FLAG_EXT_PKEY 0x0020 + +/* + * new with 0.9.6j and 0.9.7b; the built-in + * RSA implementation now uses blinding by + * default (ignoring RSA_FLAG_BLINDING), + * but other engines might not need it + */ +# define RSA_FLAG_NO_BLINDING 0x0080 +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define RSA_FLAG_NO_CONSTTIME 0x0000 +# endif +/* deprecated name for the flag*/ +/* + * new with 0.9.7h; the built-in RSA + * implementation now uses constant time + * modular exponentiation for secret exponents + * by default. This flag causes the + * faster variable sliding window method to + * be used for all exponents. + */ +# ifndef OPENSSL_NO_DEPRECATED_0_9_8 +# define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME +# endif + +/*- + * New with 3.0: use part of the flags to denote exact type of RSA key, + * some of which are limited to specific signature and encryption schemes. + * These different types share the same RSA structure, but indicate the + * use of certain fields in that structure. + * Currently known are: + * RSA - this is the "normal" unlimited RSA structure (typenum 0) + * RSASSA-PSS - indicates that the PSS parameters are used. + * RSAES-OAEP - no specific field used for the moment, but OAEP padding + * is expected. (currently unused) + * + * 4 bits allow for 16 types + */ +# define RSA_FLAG_TYPE_MASK 0xF000 +# define RSA_FLAG_TYPE_RSA 0x0000 +# define RSA_FLAG_TYPE_RSASSAPSS 0x1000 +# define RSA_FLAG_TYPE_RSAESOAEP 0x2000 + +int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int pad_mode); +int EVP_PKEY_CTX_get_rsa_padding(EVP_PKEY_CTX *ctx, int *pad_mode); + +int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +int EVP_PKEY_CTX_get_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int *saltlen); + +int EVP_PKEY_CTX_set_rsa_keygen_bits(EVP_PKEY_CTX *ctx, int bits); +int EVP_PKEY_CTX_set1_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); +int EVP_PKEY_CTX_set_rsa_keygen_primes(EVP_PKEY_CTX *ctx, int primes); +int EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); + +/* Salt length matches digest */ +# define RSA_PSS_SALTLEN_DIGEST -1 +/* Verify only: auto detect salt length */ +# define RSA_PSS_SALTLEN_AUTO -2 +/* Set salt length to maximum possible */ +# define RSA_PSS_SALTLEN_MAX -3 +/* Auto-detect on verify, set salt length to min(maximum possible, digest + * length) on sign */ +# define RSA_PSS_SALTLEN_AUTO_DIGEST_MAX -4 +/* Old compatible max salt length for sign only */ +# define RSA_PSS_SALTLEN_MAX_SIGN -2 + +int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md_name(EVP_PKEY_CTX *ctx, + const char *mdname); + +int EVP_PKEY_CTX_set_rsa_pss_keygen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_md_name(EVP_PKEY_CTX *ctx, + const char *mdname, + const char *mdprops); + +int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *ctx, void *label, int llen); +int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label); + +# define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5) + +# define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8) + +# define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 10) + +# define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 12) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) + +# define EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION (EVP_PKEY_ALG_CTRL + 14) + + +# define RSA_PKCS1_PADDING 1 +# define RSA_NO_PADDING 3 +# define RSA_PKCS1_OAEP_PADDING 4 +# define RSA_X931_PADDING 5 + +/* EVP_PKEY_ only */ +# define RSA_PKCS1_PSS_PADDING 6 +# define RSA_PKCS1_WITH_TLS_PADDING 7 + +/* internal RSA_ only */ +# define RSA_PKCS1_NO_IMPLICIT_REJECT_PADDING 8 + +# define RSA_PKCS1_PADDING_SIZE 11 + +# define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg) +# define RSA_get_app_data(s) RSA_get_ex_data(s,0) + +RSA *RSA_new(void); +RSA *RSA_new_method(ENGINE *engine); +int RSA_bits(const RSA *rsa); +int RSA_size(const RSA *rsa); +int RSA_security_bits(const RSA *rsa); + +int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); +int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); +int RSA_set0_crt_params(RSA *r, + BIGNUM *dmp1, BIGNUM *dmq1, + BIGNUM *iqmp); +int RSA_set0_multi_prime_params(RSA *r, + BIGNUM *primes[], + BIGNUM *exps[], + BIGNUM *coeffs[], + int pnum); +void RSA_get0_key(const RSA *r, + const BIGNUM **n, const BIGNUM **e, + const BIGNUM **d); +void RSA_get0_factors(const RSA *r, + const BIGNUM **p, const BIGNUM **q); +int RSA_get_multi_prime_extra_count(const RSA *r); +int RSA_get0_multi_prime_factors(const RSA *r, + const BIGNUM *primes[]); +void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, + const BIGNUM **dmq1, + const BIGNUM **iqmp); + +int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], + const BIGNUM *coeffs[]); +const BIGNUM *RSA_get0_n(const RSA *d); +const BIGNUM *RSA_get0_e(const RSA *d); +const BIGNUM *RSA_get0_d(const RSA *d); +const BIGNUM *RSA_get0_p(const RSA *d); +const BIGNUM *RSA_get0_q(const RSA *d); +const BIGNUM *RSA_get0_dmp1(const RSA *r); +const BIGNUM *RSA_get0_dmq1(const RSA *r); +const BIGNUM *RSA_get0_iqmp(const RSA *r); +const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); +void RSA_clear_flags(RSA *r, int flags); +int RSA_test_flags(const RSA *r, int flags); +void RSA_set_flags(RSA *r, int flags); +int RSA_get_version(RSA *r); +ENGINE *RSA_get0_engine(const RSA *r); + +# define EVP_RSA_gen(bits) \ + EVP_PKEY_Q_keygen(NULL, NULL, "RSA", (size_t)(0 + (bits))) + +/* Deprecated version */ +RSA *RSA_generate_key(int bits, unsigned long e, void + (*callback) (int, int, void *), + void *cb_arg); + +/* New version */ +int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb); +/* Multi-prime version */ +int RSA_generate_multi_prime_key(RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb); + + +int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, + BIGNUM *q1, BIGNUM *q2, + const BIGNUM *Xp1, const BIGNUM *Xp2, + const BIGNUM *Xp, const BIGNUM *Xq1, + const BIGNUM *Xq2, const BIGNUM *Xq, + const BIGNUM *e, BN_GENCB *cb); +int RSA_X931_generate_key_ex(RSA *rsa, int bits, + const BIGNUM *e, + BN_GENCB *cb); + +int RSA_check_key(const RSA *); +int RSA_check_key_ex(const RSA *, BN_GENCB *cb); + /* next 4 return -1 on error */ + +int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); + +int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); + +int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); + +int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +void RSA_free(RSA *r); +/* "up" the RSA object's reference count */ +int RSA_up_ref(RSA *r); +int RSA_flags(const RSA *r); + +void RSA_set_default_method(const RSA_METHOD *meth); +const RSA_METHOD *RSA_get_default_method(void); +const RSA_METHOD *RSA_null_method(void); +const RSA_METHOD *RSA_get_method(const RSA *rsa); +int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); + +/* these are the actual RSA functions */ +const RSA_METHOD *RSA_PKCS1_OpenSSL(void); + + +int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); + +struct rsa_pss_params_st { + X509_ALGOR *hashAlgorithm; + X509_ALGOR *maskGenAlgorithm; + ASN1_INTEGER *saltLength; + ASN1_INTEGER *trailerField; + /* Decoded hash algorithm from maskGenAlgorithm */ + X509_ALGOR *maskHash; +}; + +// DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) +// DECLARE_ASN1_DUP_FUNCTION(RSA_PSS_PARAMS) + +typedef struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; + /* Decoded hash algorithm from maskGenFunc */ + X509_ALGOR *maskHash; +} RSA_OAEP_PARAMS; + +// DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_STDIO +int RSA_print_fp(FILE *fp, const RSA *r, int offset); +# endif + +int RSA_print(BIO *bp, const RSA *r, int offset); + +/* + * The following 2 functions sign and verify a X509_SIG ASN1 object inside + * PKCS#1 padded RSA encryption + */ +int RSA_sign(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigret, + unsigned int *siglen, RSA *rsa); +int RSA_verify(int type, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, RSA *rsa); + +/* + * The following 2 function sign and verify a ASN1_OCTET_STRING object inside + * PKCS#1 padded RSA encryption + */ + +int RSA_sign_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + RSA *rsa); + +int RSA_verify_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigbuf, unsigned int siglen, + RSA *rsa); + +int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); +void RSA_blinding_off(RSA *rsa); +BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); + + +int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl); + +int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); + +int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl); + +int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int PKCS1_MGF1(unsigned char *mask, long len, + const unsigned char *seed, long seedlen, + const EVP_MD *dgst); + +int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, + const unsigned char *p, int pl); + +int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len, + const unsigned char *p, int pl); + +int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); + +int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + int num, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +int RSA_padding_add_none(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_none(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int RSA_padding_add_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int RSA_X931_hash_id(int nid); + + +int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const unsigned char *EM, + int sLen); + +int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, const EVP_MD *Hash, + int sLen); + + +int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + const unsigned char *EM, int sLen); + + +int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + int sLen); + +# define RSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, l, p, newf, dupf, freef) +int RSA_set_ex_data(RSA *r, int idx, void *arg); +void *RSA_get_ex_data(const RSA *r, int idx); + +// DECLARE_ASN1_DUP_FUNCTION_name_attr(, RSA, RSAPublicKey) +// DECLARE_ASN1_DUP_FUNCTION_name_attr(, RSA, RSAPrivateKey) + +/* + * If this flag is set the RSA method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define RSA_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define RSA_FLAG_NON_FIPS_ALLOW 0x0400 +/* + * Application has decided PRNG is good enough to generate a key: don't + * check. + */ +# define RSA_FLAG_CHECKED 0x0800 + +RSA_METHOD *RSA_meth_new(const char *name, int flags); +void RSA_meth_free(RSA_METHOD *meth); +RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); +const char *RSA_meth_get0_name(const RSA_METHOD *meth); +int RSA_meth_set1_name(RSA_METHOD *meth, + const char *name); +int RSA_meth_get_flags(const RSA_METHOD *meth); +int RSA_meth_set_flags(RSA_METHOD *meth, int flags); +void *RSA_meth_get0_app_data(const RSA_METHOD *meth); +int RSA_meth_set0_app_data(RSA_METHOD *meth, + void *app_data); + +int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth)) (int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); + +int RSA_meth_set_pub_enc(RSA_METHOD *rsa, + int (*pub_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); + +int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth)) (int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); + +int RSA_meth_set_pub_dec(RSA_METHOD *rsa, + int (*pub_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); + +int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth)) (int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); + +int RSA_meth_set_priv_enc(RSA_METHOD *rsa, + int (*priv_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); + +int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth)) (int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); + +int RSA_meth_set_priv_dec(RSA_METHOD *rsa, + int (*priv_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); + +int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth)) (BIGNUM *r0, + const BIGNUM *i, + RSA *rsa, BN_CTX *ctx); + +int RSA_meth_set_mod_exp(RSA_METHOD *rsa, + int (*mod_exp) (BIGNUM *r0, const BIGNUM *i, RSA *rsa, + BN_CTX *ctx)); + +int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth)) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx); + +int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx)); + +int (*RSA_meth_get_init(const RSA_METHOD *meth)) (RSA *rsa); + +int RSA_meth_set_init(RSA_METHOD *rsa, int (*init) (RSA *rsa)); + +int (*RSA_meth_get_finish(const RSA_METHOD *meth)) (RSA *rsa); + +int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish) (RSA *rsa)); + +int (*RSA_meth_get_sign(const RSA_METHOD *meth)) (int type, + const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, + unsigned int *siglen, + const RSA *rsa); + +int RSA_meth_set_sign(RSA_METHOD *rsa, + int (*sign) (int type, const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa)); + +int (*RSA_meth_get_verify(const RSA_METHOD *meth)) (int dtype, + const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, + const RSA *rsa); + +int RSA_meth_set_verify(RSA_METHOD *rsa, + int (*verify) (int dtype, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa)); + +int (*RSA_meth_get_keygen(const RSA_METHOD *meth)) (RSA *rsa, int bits, + BIGNUM *e, BN_GENCB *cb); + +int RSA_meth_set_keygen(RSA_METHOD *rsa, + int (*keygen) (RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb)); + +int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth)) (RSA *rsa, + int bits, + int primes, + BIGNUM *e, + BN_GENCB *cb); + +int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, + int (*keygen) (RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb)); +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +# ifdef __cplusplus +} +# endif +#endif \ No newline at end of file diff --git a/cpp/ql/test/experimental/stubs/openssl/type_stubs.h b/cpp/ql/test/experimental/stubs/openssl/type_stubs.h new file mode 100644 index 000000000000..f14e39234478 --- /dev/null +++ b/cpp/ql/test/experimental/stubs/openssl/type_stubs.h @@ -0,0 +1,702 @@ +#pragma once + +#define NULL 0 + +typedef unsigned long size_t; + +typedef unsigned char uint8_t; +typedef unsigned int uint32_t; +typedef unsigned long long uint64_t; + +typedef int OSSL_PROVIDER; + +typedef int OSSL_FUNC_keymgmt_import_fn; + +typedef int OSSL_FUNC_digest_get_ctx_params_fn; + +typedef int OSSL_FUNC_cipher_settable_ctx_params_fn; + +typedef int OSSL_FUNC_mac_set_ctx_params_fn; + +typedef int OSSL_FUNC_signature_digest_verify_update_fn; + +typedef int OSSL_FUNC_provider_get_reason_strings_fn; + +typedef int OSSL_FUNC_core_get_params_fn; + +typedef int OSSL_FUNC_rand_get_seed_fn; + +typedef int OSSL_FUNC_rand_instantiate_fn; + +typedef int OSSL_FUNC_keymgmt_gen_get_params_fn; + +typedef int EVP_PKEY_gen_cb; + +typedef int OSSL_FUNC_provider_unquery_operation_fn; + +typedef int OSSL_FUNC_cleanup_user_entropy_fn; + +typedef int OSSL_FUNC_asym_cipher_decrypt_fn; + +typedef int OSSL_FUNC_cipher_pipeline_decrypt_init_fn; + +typedef int X509_PUBKEY; + +typedef int OSSL_FUNC_BIO_puts_fn; + +typedef int OSSL_FUNC_signature_verify_fn; + +typedef int OSSL_FUNC_encoder_gettable_params_fn; + +typedef int OSSL_FUNC_keymgmt_validate_fn; + +typedef int EVP_PBE_KEYGEN_EX; + +typedef int OSSL_FUNC_keyexch_dupctx_fn; + +typedef int OSSL_FUNC_kdf_newctx_fn; + +typedef int OSSL_FUNC_signature_digest_verify_final_fn; + +typedef int OSSL_FUNC_signature_set_ctx_params_fn; + +typedef int OSSL_FUNC_rand_reseed_fn; + +typedef int OSSL_FUNC_SSL_QUIC_TLS_crypto_release_rcd_fn; + +typedef int OSSL_FUNC_store_open_fn; + +typedef int OSSL_FUNC_encoder_newctx_fn; + +typedef int EVP_KEYMGMT; + +typedef int OSSL_FUNC_core_vset_error_fn; + +typedef int EVP_KEYEXCH; + +typedef int OSSL_FUNC_signature_gettable_ctx_md_params_fn; + +typedef int OSSL_FUNC_CRYPTO_secure_free_fn; + +typedef int OSSL_FUNC_keymgmt_import_types_fn; + +typedef int OSSL_FUNC_signature_sign_message_update_fn; + +typedef int OSSL_FUNC_keymgmt_gen_gettable_params_fn; + +typedef int OSSL_FUNC_cipher_update_fn; + +typedef int OSSL_FUNC_mac_newctx_fn; + +typedef int OSSL_FUNC_keymgmt_set_params_fn; + +typedef int X509_ALGOR; + +typedef int OSSL_FUNC_signature_get_ctx_params_fn; + +typedef int ASN1_ITEM; + +typedef int EVP_SIGNATURE; + +typedef int OSSL_FUNC_CRYPTO_realloc_fn; + +typedef int OSSL_FUNC_BIO_new_file_fn; + +typedef int OSSL_FUNC_signature_sign_message_final_fn; + +typedef int OSSL_FUNC_cipher_newctx_fn; + +typedef int OSSL_FUNC_rand_nonce_fn; + +typedef int EVP_MD; + +typedef int OSSL_FUNC_kdf_reset_fn; + +typedef int OSSL_FUNC_keyexch_settable_ctx_params_fn; + +typedef int OSSL_FUNC_store_export_object_fn; + +typedef int OSSL_FUNC_CRYPTO_secure_allocated_fn; + +typedef int OSSL_FUNC_cipher_pipeline_update_fn; + +typedef int OSSL_FUNC_keyexch_freectx_fn; + +typedef int OSSL_FUNC_kdf_gettable_params_fn; + +typedef int OSSL_FUNC_rand_set_ctx_params_fn; + +typedef int OSSL_FUNC_signature_verify_message_init_fn; + +typedef int OSSL_FUNC_keymgmt_free_fn; + +typedef int OSSL_FUNC_rand_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_signature_digest_sign_update_fn; + +typedef int OSSL_FUNC_keymgmt_has_fn; + +typedef int OSSL_FUNC_kdf_get_ctx_params_fn; + +typedef int OSSL_FUNC_provider_get0_dispatch_fn; + +typedef int OSSL_FUNC_signature_verify_message_update_fn; + +typedef int OSSL_FUNC_rand_lock_fn; + +typedef int EVP_KEM; + +typedef int OSSL_FUNC_BIO_read_ex_fn; + +typedef int X509_SIG_INFO; + +typedef int OSSL_FUNC_keymgmt_import_types_ex_fn; + +typedef int OSSL_FUNC_encoder_free_object_fn; + +typedef int OSSL_FUNC_asym_cipher_decrypt_init_fn; + +typedef int OSSL_FUNC_SSL_QUIC_TLS_alert_fn; + +typedef int OSSL_FUNC_cipher_get_params_fn; + +typedef int OSSL_FUNC_get_nonce_fn; + +typedef int ASN1_OBJECT; + +typedef int OSSL_LIB_CTX; + +typedef int OSSL_FUNC_keymgmt_gen_set_params_fn; + +typedef int OSSL_FUNC_provider_deregister_child_cb_fn; + +typedef int OSSL_PARAM; + +typedef int OSSL_FUNC_decoder_gettable_params_fn; + +typedef int OSSL_FUNC_cipher_pipeline_final_fn; + +typedef int OSSL_FUNC_signature_freectx_fn; + +typedef int EVP_PKEY_METHOD; + +typedef int OSSL_FUNC_CRYPTO_zalloc_fn; + +typedef int OSSL_FUNC_keymgmt_query_operation_name_fn; + +typedef int OSSL_FUNC_core_set_error_mark_fn; + +typedef int OSSL_FUNC_asym_cipher_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_CRYPTO_free_fn; + +typedef int OSSL_FUNC_indicator_cb_fn; + +typedef int OSSL_FUNC_kdf_freectx_fn; + +typedef int ENGINE; + +typedef int EVP_PKEY; + +typedef int PKCS8_PRIV_KEY_INFO; + +typedef int OSSL_FUNC_signature_digest_verify_fn; + +typedef int OSSL_FUNC_mac_final_fn; + +typedef int OSSL_FUNC_core_pop_error_to_mark_fn; + +typedef int OSSL_FUNC_signature_verify_recover_fn; + +typedef int OSSL_FUNC_keymgmt_gen_settable_params_fn; + +typedef int OSSL_FUNC_provider_self_test_fn; + +typedef int OSSL_FUNC_digest_gettable_params_fn; + +typedef int OSSL_FUNC_CRYPTO_secure_malloc_fn; + +typedef int OSSL_FUNC_keymgmt_get_params_fn; + +typedef int OSSL_FUNC_mac_freectx_fn; + +typedef int OSSL_FUNC_cleanup_user_nonce_fn; + +typedef int EVP_SKEYMGMT; + +typedef int OSSL_FUNC_core_set_error_debug_fn; + +typedef int OSSL_FUNC_cipher_decrypt_skey_init_fn; + +typedef int OSSL_FUNC_BIO_new_membuf_fn; + +typedef int OSSL_FUNC_provider_query_operation_fn; + +typedef int OSSL_FUNC_signature_set_ctx_md_params_fn; + +typedef int OSSL_FUNC_encoder_does_selection_fn; + +typedef int OSSL_FUNC_kem_get_ctx_params_fn; + +typedef int OSSL_FUNC_cipher_gettable_params_fn; + +typedef int OSSL_FUNC_digest_final_fn; + +typedef int OSSL_FUNC_rand_generate_fn; + +typedef int EVP_PKEY_CTX; + +typedef int OSSL_FUNC_kem_decapsulate_fn; + +typedef int OSSL_FUNC_skeymgmt_generate_fn; + +typedef int OSSL_FUNC_asym_cipher_encrypt_init_fn; + +typedef int OSSL_FUNC_kdf_get_params_fn; + +typedef int OSSL_FUNC_cipher_encrypt_skey_init_fn; + +typedef int OSSL_FUNC_encoder_get_params_fn; + +typedef int OSSL_FUNC_asym_cipher_freectx_fn; + +typedef int OSSL_FUNC_CRYPTO_secure_clear_free_fn; + +typedef int OSSL_FUNC_store_load_fn; + +typedef int OSSL_FUNC_digest_update_fn; + +typedef int OSSL_FUNC_provider_up_ref_fn; + +typedef int OSSL_FUNC_SSL_QUIC_TLS_crypto_recv_rcd_fn; + +typedef int OSSL_FUNC_signature_digest_sign_init_fn; + +typedef int OSSL_FUNC_keymgmt_load_fn; + +typedef int OSSL_FUNC_keyexch_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_rand_get_params_fn; + +typedef int OSSL_FUNC_rand_verify_zeroization_fn; + +typedef int OSSL_FUNC_skeymgmt_export_fn; + +typedef int OSSL_FUNC_BIO_free_fn; + +typedef int OSSL_FUNC_rand_settable_ctx_params_fn; + +typedef int OSSL_FUNC_cleanup_entropy_fn; + +typedef int OSSL_FUNC_encoder_settable_ctx_params_fn; + +typedef int OSSL_DISPATCH; + +typedef int OSSL_FUNC_OPENSSL_cleanse_fn; + +typedef int OSSL_FUNC_digest_dupctx_fn; + +typedef int OSSL_FUNC_kem_decapsulate_init_fn; + +typedef int EVP_MAC_CTX; + +typedef int OSSL_FUNC_digest_squeeze_fn; + +typedef int OSSL_FUNC_keyexch_set_ctx_params_fn; + +typedef int EVP_ENCODE_CTX; + +typedef int OSSL_FUNC_BIO_vsnprintf_fn; + +typedef int OSSL_FUNC_mac_dupctx_fn; + +typedef int OSSL_FUNC_kdf_derive_fn; + +typedef int OSSL_FUNC_encoder_set_ctx_params_fn; + +typedef int OSSL_FUNC_rand_freectx_fn; + +typedef int OSSL_FUNC_BIO_ctrl_fn; + +typedef int EVP_CIPHER; + +typedef int OSSL_FUNC_cipher_set_ctx_params_fn; + +typedef int OSSL_FUNC_rand_enable_locking_fn; + +typedef int OSSL_FUNC_keyexch_newctx_fn; + +typedef int OSSL_FUNC_signature_settable_ctx_params_fn; + +typedef int OSSL_FUNC_provider_gettable_params_fn; + +typedef int OSSL_FUNC_keymgmt_gen_set_template_fn; + +typedef int OSSL_FUNC_keymgmt_settable_params_fn; + +typedef int OSSL_FUNC_keymgmt_gen_cleanup_fn; + +typedef int OSSL_FUNC_kdf_set_ctx_params_fn; + +typedef int OSSL_FUNC_rand_unlock_fn; + +typedef int OSSL_FUNC_SSL_QUIC_TLS_yield_secret_fn; + +typedef int OSSL_FUNC_signature_digest_sign_fn; + +typedef int OSSL_FUNC_keymgmt_gettable_params_fn; + +typedef int OSSL_FUNC_kem_auth_encapsulate_init_fn; + +typedef int OSSL_FUNC_kem_encapsulate_fn; + +typedef int OSSL_FUNC_CRYPTO_secure_zalloc_fn; + +typedef int OSSL_FUNC_rand_get_ctx_params_fn; + +typedef int OSSL_FUNC_store_delete_fn; + +typedef int OSSL_FUNC_cipher_pipeline_encrypt_init_fn; + +typedef int OSSL_FUNC_cipher_dupctx_fn; + +typedef int OSSL_FUNC_store_settable_ctx_params_fn; + +typedef int FILE; + +typedef int OSSL_FUNC_provider_teardown_fn; + +typedef int OSSL_FUNC_kdf_dupctx_fn; + +typedef int OSSL_FUNC_decoder_newctx_fn; + +typedef int OSSL_FUNC_core_clear_last_error_mark_fn; + +typedef int OSSL_FUNC_core_obj_create_fn; + +typedef int OSSL_FUNC_keyexch_init_fn; + +typedef int OSSL_FUNC_kem_gettable_ctx_params_fn; + +typedef int EVP_MD_CTX; + +typedef int OSSL_FUNC_decoder_decode_fn; + +typedef int OSSL_FUNC_mac_gettable_params_fn; + +typedef int OSSL_FUNC_kem_set_ctx_params_fn; + +typedef int OSSL_FUNC_encoder_encode_fn; + +typedef int OSSL_FUNC_core_gettable_params_fn; + +typedef int OSSL_FUNC_mac_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_get_user_entropy_fn; + +typedef int OSSL_FUNC_kdf_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_keymgmt_gen_fn; + +typedef int OSSL_FUNC_keyexch_set_peer_fn; + +typedef int OSSL_FUNC_core_obj_add_sigid_fn; + +typedef int OSSL_FUNC_keymgmt_export_types_ex_fn; + +typedef int OSSL_FUNC_kem_newctx_fn; + +typedef int OSSL_FUNC_signature_sign_init_fn; + +typedef int OSSL_FUNC_asym_cipher_get_ctx_params_fn; + +typedef int OSSL_FUNC_CRYPTO_clear_free_fn; + +typedef int OSSL_FUNC_encoder_freectx_fn; + +typedef int OSSL_FUNC_kem_freectx_fn; + +typedef int OSSL_FUNC_provider_get0_provider_ctx_fn; + +typedef int OSSL_FUNC_digest_copyctx_fn; + +typedef int OSSL_FUNC_provider_name_fn; + +typedef int OSSL_FUNC_cipher_decrypt_init_fn; + +typedef int EVP_PKEY_ASN1_METHOD; + +typedef int OSSL_FUNC_keyexch_get_ctx_params_fn; + +typedef int OSSL_FUNC_store_set_ctx_params_fn; + +typedef int ASN1_TYPE; + +typedef int OSSL_FUNC_skeymgmt_imp_settable_params_fn; + +typedef int OSSL_FUNC_cipher_get_ctx_params_fn; + +typedef int EVP_MAC; + +typedef int OSSL_FUNC_store_attach_fn; + +typedef int OSSL_FUNC_signature_get_ctx_md_params_fn; + +typedef int OSSL_FUNC_encoder_import_object_fn; + +typedef int OSSL_FUNC_cleanup_nonce_fn; + +typedef int OSSL_FUNC_kem_auth_decapsulate_init_fn; + +typedef int OSSL_CALLBACK; + +typedef int OSSL_FUNC_skeymgmt_import_fn; + +typedef int OSSL_FUNC_cipher_freectx_fn; + +typedef int OSSL_FUNC_asym_cipher_dupctx_fn; + +typedef int OSSL_FUNC_SSL_QUIC_TLS_crypto_send_fn; + +typedef int OSSL_FUNC_CRYPTO_clear_realloc_fn; + +typedef int OSSL_FUNC_signature_verify_recover_init_fn; + +typedef int OSSL_FUNC_provider_free_fn; + +typedef int EVP_RAND; + +typedef int OSSL_FUNC_digest_newctx_fn; + +typedef int OSSL_FUNC_cipher_final_fn; + +typedef int OSSL_FUNC_keymgmt_new_fn; + +typedef int EVP_CIPHER_CTX; + +typedef int OSSL_FUNC_decoder_does_selection_fn; + +typedef int OSSL_FUNC_signature_digest_verify_init_fn; + +typedef int OSSL_FUNC_digest_set_ctx_params_fn; + +typedef int OSSL_FUNC_rand_newctx_fn; + +typedef int OSSL_FUNC_BIO_vprintf_fn; + +typedef int OSSL_FUNC_keymgmt_gen_init_fn; + +typedef int EVP_RAND_CTX; + +typedef int OSSL_FUNC_store_close_fn; + +typedef int OSSL_FUNC_asym_cipher_encrypt_fn; + +typedef int OSSL_FUNC_mac_get_params_fn; + +typedef int OSSL_FUNC_get_entropy_fn; + +typedef int OSSL_FUNC_digest_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_SSL_QUIC_TLS_got_transport_params_fn; + +typedef int OSSL_FUNC_skeymgmt_free_fn; + +typedef int OSSL_FUNC_mac_settable_ctx_params_fn; + +typedef int OSSL_FUNC_decoder_export_object_fn; + +typedef int OSSL_FUNC_rand_clear_seed_fn; + +typedef int OSSL_FUNC_mac_get_ctx_params_fn; + +typedef int OSSL_FUNC_digest_digest_fn; + +typedef int EVP_SKEY; + +typedef int OSSL_FUNC_cipher_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_CRYPTO_malloc_fn; + +typedef int OSSL_FUNC_asym_cipher_settable_ctx_params_fn; + +typedef int OSSL_FUNC_signature_dupctx_fn; + +typedef int OSSL_FUNC_BIO_write_ex_fn; + +typedef int OSSL_FUNC_rand_set_callbacks_fn; + +typedef int OSSL_FUNC_keymgmt_match_fn; + +typedef int OSSL_FUNC_signature_digest_sign_final_fn; + +typedef int OSSL_FUNC_provider_get_params_fn; + +typedef int OSSL_FUNC_BIO_gets_fn; + +typedef int OSSL_FUNC_cipher_encrypt_init_fn; + +typedef int OSSL_FUNC_signature_verify_message_final_fn; + +typedef int BIGNUM; + +typedef int OSSL_FUNC_digest_freectx_fn; + +typedef int OSSL_FUNC_asym_cipher_set_ctx_params_fn; + +typedef int OSSL_FUNC_signature_gettable_ctx_params_fn; + +typedef int BIO; + +typedef int OSSL_FUNC_digest_get_params_fn; + +typedef int OSSL_FUNC_skeymgmt_get_key_id_fn; + +typedef int OSSL_FUNC_rand_uninstantiate_fn; + +typedef int OSSL_FUNC_decoder_get_params_fn; + +typedef int OSSL_FUNC_signature_newctx_fn; + +typedef int OSSL_FUNC_signature_sign_fn; + +typedef int OSSL_FUNC_decoder_set_ctx_params_fn; + +typedef int OSSL_FUNC_kem_dupctx_fn; + +typedef int OSSL_FUNC_get_user_nonce_fn; + +typedef int OSSL_FUNC_mac_init_skey_fn; + +typedef int ASN1_PCTX; + +typedef int OSSL_FUNC_provider_get_capabilities_fn; + +typedef int OSSL_FUNC_provider_register_child_cb_fn; + +typedef int OSSL_FUNC_kem_settable_ctx_params_fn; + +typedef int OSSL_FUNC_signature_query_key_types_fn; + +typedef int OSSL_FUNC_signature_settable_ctx_md_params_fn; + +typedef int OSSL_FUNC_asym_cipher_newctx_fn; + +typedef int OSSL_FUNC_store_open_ex_fn; + +typedef int OSSL_FUNC_keyexch_derive_fn; + +typedef int OSSL_FUNC_kdf_settable_ctx_params_fn; + +typedef int OSSL_FUNC_skeymgmt_gen_settable_params_fn; + +typedef int OSSL_FUNC_digest_settable_ctx_params_fn; + +typedef int OSSL_FUNC_kem_encapsulate_init_fn; + +typedef int OSSL_FUNC_core_new_error_fn; + +typedef int OSSL_FUNC_BIO_up_ref_fn; + +typedef int OSSL_FUNC_self_test_cb_fn; + +typedef int OSSL_FUNC_keymgmt_export_types_fn; + +typedef int OSSL_FUNC_core_get_libctx_fn; + +typedef int OSSL_FUNC_digest_init_fn; + +typedef int EVP_ASYM_CIPHER; + +typedef int OSSL_FUNC_decoder_settable_ctx_params_fn; + +typedef int OSSL_FUNC_signature_sign_message_init_fn; + +typedef int OSSL_FUNC_rand_gettable_params_fn; + +typedef int OSSL_FUNC_mac_update_fn; + +typedef int OSSL_FUNC_keymgmt_export_fn; + +typedef int OSSL_FUNC_provider_random_bytes_fn; + +typedef int OSSL_FUNC_decoder_freectx_fn; + +typedef int OSSL_FUNC_mac_init_fn; + +typedef int OSSL_FUNC_store_eof_fn; + +typedef int OSSL_FUNC_signature_verify_init_fn; + +typedef int EVP_PBE_KEYGEN; + +typedef int OSSL_FUNC_core_thread_start_fn; + +typedef int OSSL_FUNC_cipher_cipher_fn; + +typedef int OSSL_FUNC_keymgmt_dup_fn; + +typedef int RSA; + +typedef int BIGNUM; + +typedef int ENGINE; + +typedef int RSA_METHOD; + +struct asn1_string_st { + int length; + int type; + unsigned char *data; + /* + * The value of the following field depends on the type being held. It + * is mostly being used for BIT_STRING so if the input data has a + * non-zero 'unused bits' value, it will be handled correctly + */ + long flags; +}; + +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct asn1_string_st ASN1_ENUMERATED; +typedef struct asn1_string_st ASN1_BIT_STRING; +typedef struct asn1_string_st ASN1_OCTET_STRING; +typedef struct asn1_string_st ASN1_PRINTABLESTRING; +typedef struct asn1_string_st ASN1_T61STRING; +typedef struct asn1_string_st ASN1_IA5STRING; +typedef struct asn1_string_st ASN1_GENERALSTRING; +typedef struct asn1_string_st ASN1_UNIVERSALSTRING; +typedef struct asn1_string_st ASN1_BMPSTRING; +typedef struct asn1_string_st ASN1_UTCTIME; +typedef struct asn1_string_st ASN1_TIME; +typedef struct asn1_string_st ASN1_GENERALIZEDTIME; +typedef struct asn1_string_st ASN1_VISIBLESTRING; +typedef struct asn1_string_st ASN1_UTF8STRING; +typedef struct asn1_string_st ASN1_STRING; +typedef int ASN1_BOOLEAN; +typedef int ASN1_NULL; + +typedef int EVP_CIPHER_INFO; + +typedef int pem_password_cb; + +typedef int X509_INFO; + +typedef int RSA_PSS_PARAMS; + +typedef int BN_GENCB; + +typedef int BN_CTX; + +typedef int BN_BLINDING; + +typedef int BN_MONT_CTX; + +typedef int d2i_of_void; + +typedef int i2d_of_void; + +typedef int OSSL_i2d_of_void_ctx; + +typedef int DSA; + +typedef int FFC_PARAMS; \ No newline at end of file diff --git a/cpp/ql/test/library-tests/attributes/namespace/namespace.expected b/cpp/ql/test/library-tests/attributes/namespace/namespace.expected new file mode 100644 index 000000000000..a6def774033d --- /dev/null +++ b/cpp/ql/test/library-tests/attributes/namespace/namespace.expected @@ -0,0 +1,11 @@ +| file://:0:0:0:0 | MultiSquared | test.cpp:10:13:10:22 | deprecated | +| file://:0:0:0:0 | MultiSquared | test.cpp:10:25:10:36 | maybe_unused | +| file://:0:0:0:0 | MultiSquared | test.cpp:11:13:11:22 | deprecated | +| file://:0:0:0:0 | MultiSquared | test.cpp:11:25:11:36 | maybe_unused | +| file://:0:0:0:0 | NamespaceTest | test.cpp:1:26:1:35 | deprecated | +| file://:0:0:0:0 | NamespaceTest | test.cpp:2:26:2:35 | deprecated | +| file://:0:0:0:0 | NamespaceTest | test.cpp:3:26:3:37 | maybe_unused | +| test.cpp:4:53:4:61 | MultiAttr | test.cpp:4:26:4:35 | deprecated | +| test.cpp:4:53:4:61 | MultiAttr | test.cpp:4:38:4:49 | maybe_unused | +| test.cpp:6:43:6:56 | OuterNamespace::InnerNamespace | test.cpp:6:30:6:39 | deprecated | +| test.cpp:9:46:9:61 | NamespaceSquared | test.cpp:9:13:9:22 | deprecated | diff --git a/cpp/ql/test/library-tests/attributes/namespace/namespace.ql b/cpp/ql/test/library-tests/attributes/namespace/namespace.ql new file mode 100644 index 000000000000..b1de550728a0 --- /dev/null +++ b/cpp/ql/test/library-tests/attributes/namespace/namespace.ql @@ -0,0 +1,4 @@ +import cpp + +from Namespace ns +select ns, ns.getAnAttribute() diff --git a/cpp/ql/test/library-tests/attributes/namespace/test.cpp b/cpp/ql/test/library-tests/attributes/namespace/test.cpp new file mode 100644 index 000000000000..564947e36b91 --- /dev/null +++ b/cpp/ql/test/library-tests/attributes/namespace/test.cpp @@ -0,0 +1,11 @@ +namespace __attribute__((deprecated)) NamespaceTest {} +namespace __attribute__((deprecated)) NamespaceTest {} +namespace __attribute__((maybe_unused)) NamespaceTest {} +namespace __attribute__((deprecated, maybe_unused)) MultiAttr {} +namespace OuterNamespace { + namespace __attribute__((deprecated)) InnerNamespace {} +} + +namespace [[deprecated("NamespaceSquared")]] NamespaceSquared {} +namespace [[deprecated, maybe_unused]] MultiSquared {} +namespace [[deprecated, maybe_unused]] MultiSquared {} \ No newline at end of file diff --git a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected index 472e48a05b0f..1d138afcbeac 100644 --- a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected +++ b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected @@ -448,7 +448,6 @@ astGuardsControl | test.cpp:31:7:31:13 | ... == ... | false | 34 | 34 | | test.cpp:31:7:31:13 | ... == ... | true | 30 | 30 | | test.cpp:31:7:31:13 | ... == ... | true | 31 | 32 | -| test.cpp:42:13:42:20 | call to getABool | false | 53 | 53 | | test.cpp:42:13:42:20 | call to getABool | true | 43 | 45 | astGuardsEnsure | test.c:7:9:7:13 | ... > ... | test.c:7:9:7:9 | x | < | test.c:7:13:7:13 | 0 | 1 | 10 | 11 | @@ -893,8 +892,6 @@ astGuardsEnsure_const | test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 30 | 30 | | test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 31 | 32 | | test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 0 | 43 | 45 | -| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 1 | 53 | 53 | -| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 0 | 53 | 53 | | test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 1 | 43 | 45 | irGuards | test.c:7:9:7:13 | CompareGT: ... > ... | @@ -1301,8 +1298,8 @@ irGuardsControl | test.cpp:31:7:31:13 | CompareEQ: ... == ... | false | 34 | 34 | | test.cpp:31:7:31:13 | CompareEQ: ... == ... | true | 30 | 30 | | test.cpp:31:7:31:13 | CompareEQ: ... == ... | true | 32 | 32 | -| test.cpp:42:13:42:20 | Call: call to getABool | false | 53 | 53 | | test.cpp:42:13:42:20 | Call: call to getABool | true | 44 | 44 | +| test.cpp:42:13:42:20 | Call: call to getABool | true | 45 | 45 | irGuardsEnsure | test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:9 | Load: x | < | test.c:7:13:7:13 | Constant: 0 | 1 | 11 | 11 | | test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:9 | Load: x | >= | test.c:7:13:7:13 | Constant: 0 | 1 | 8 | 8 | @@ -1781,6 +1778,6 @@ irGuardsEnsure_const | test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:13 | CompareEQ: ... == ... | == | 1 | 30 | 30 | | test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:13 | CompareEQ: ... == ... | == | 1 | 32 | 32 | | test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | != | 0 | 44 | 44 | -| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | != | 1 | 53 | 53 | -| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | == | 0 | 53 | 53 | +| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | != | 0 | 45 | 45 | | test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | == | 1 | 44 | 44 | +| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | == | 1 | 45 | 45 | diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected b/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected index 57f5fe4065d7..a60784a0e10e 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected @@ -104,7 +104,6 @@ | test.cpp:31:7:31:13 | ... == ... | false | 34 | 34 | | test.cpp:31:7:31:13 | ... == ... | true | 30 | 30 | | test.cpp:31:7:31:13 | ... == ... | true | 31 | 32 | -| test.cpp:42:13:42:20 | call to getABool | false | 53 | 53 | | test.cpp:42:13:42:20 | call to getABool | true | 43 | 45 | | test.cpp:61:10:61:10 | i | Case[0] | 62 | 64 | | test.cpp:61:10:61:10 | i | Case[1] | 65 | 66 | diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsEnsure.expected b/cpp/ql/test/library-tests/controlflow/guards/GuardsEnsure.expected index 0f57d5e04501..67dd6f68ed41 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsEnsure.expected +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsEnsure.expected @@ -635,8 +635,6 @@ unary | test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 30 | 30 | | test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 31 | 32 | | test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 0 | 43 | 45 | -| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 1 | 53 | 53 | -| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 0 | 53 | 53 | | test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 1 | 43 | 45 | | test.cpp:61:10:61:10 | i | test.cpp:61:10:61:10 | i | == | 0 | 62 | 64 | | test.cpp:61:10:61:10 | i | test.cpp:61:10:61:10 | i | == | 1 | 65 | 66 | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected index a4f7767db566..40b9275766c7 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected @@ -1,57 +1,80 @@ -testFailures +models +| 1 | Sink: ; ; false; ymlSink; ; ; Argument[0]; test-sink; manual | +| 2 | Sink: boost::asio; ; false; write; ; ; Argument[*1]; remote-sink; manual | +| 3 | Source: ; ; false; GetCommandLineA; ; ; ReturnValue[*]; local; manual | +| 4 | Source: ; ; false; GetEnvironmentStringsA; ; ; ReturnValue[*]; local; manual | +| 5 | Source: ; ; false; GetEnvironmentVariableA; ; ; Argument[*1]; local; manual | +| 6 | Source: ; ; false; MapViewOfFile2; ; ; ReturnValue[*]; local; manual | +| 7 | Source: ; ; false; MapViewOfFile3; ; ; ReturnValue[*]; local; manual | +| 8 | Source: ; ; false; MapViewOfFile3FromApp; ; ; ReturnValue[*]; local; manual | +| 9 | Source: ; ; false; MapViewOfFile; ; ; ReturnValue[*]; local; manual | +| 10 | Source: ; ; false; MapViewOfFileEx; ; ; ReturnValue[*]; local; manual | +| 11 | Source: ; ; false; MapViewOfFileFromApp; ; ; ReturnValue[*]; local; manual | +| 12 | Source: ; ; false; MapViewOfFileNuma2; ; ; ReturnValue[*]; local; manual | +| 13 | Source: ; ; false; NtReadFile; ; ; Argument[*5]; local; manual | +| 14 | Source: ; ; false; ReadFile; ; ; Argument[*1]; local; manual | +| 15 | Source: ; ; false; ReadFileEx; ; ; Argument[*1]; local; manual | +| 16 | Source: ; ; false; ymlSource; ; ; ReturnValue; local; manual | +| 17 | Source: boost::asio; ; false; read_until; ; ; Argument[*1]; remote; manual | +| 18 | Summary: ; ; false; CommandLineToArgvA; ; ; Argument[*0]; ReturnValue[**]; taint; manual | +| 19 | Summary: ; ; false; ReadFileEx; ; ; Argument[*3].Field[@hEvent]; Argument[4].Parameter[*2].Field[@hEvent]; value; manual | +| 20 | Summary: ; ; false; ymlStepGenerated; ; ; Argument[0]; ReturnValue; taint; df-generated | +| 21 | Summary: ; ; false; ymlStepManual; ; ; Argument[0]; ReturnValue; taint; manual | +| 22 | Summary: ; ; false; ymlStepManual_with_body; ; ; Argument[0]; ReturnValue; taint; manual | +| 23 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | edges -| asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | asio_streams.cpp:56:18:56:23 | [summary] to write: ReturnValue in buffer | provenance | MaD:10 | -| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:91:7:91:17 | recv_buffer | provenance | Src:MaD:2 | -| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:93:29:93:39 | *recv_buffer | provenance | Src:MaD:2 Sink:MaD:6 | +| asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | asio_streams.cpp:56:18:56:23 | [summary] to write: ReturnValue in buffer | provenance | MaD:23 | +| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:91:7:91:17 | recv_buffer | provenance | Src:MaD:17 | +| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:93:29:93:39 | *recv_buffer | provenance | Src:MaD:17 Sink:MaD:2 | | asio_streams.cpp:97:37:97:44 | call to source | asio_streams.cpp:98:7:98:14 | send_str | provenance | TaintFunction | | asio_streams.cpp:97:37:97:44 | call to source | asio_streams.cpp:100:64:100:71 | *send_str | provenance | TaintFunction | | asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | | | asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:101:7:101:17 | send_buffer | provenance | | -| asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:103:29:103:39 | *send_buffer | provenance | Sink:MaD:6 | +| asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:103:29:103:39 | *send_buffer | provenance | Sink:MaD:2 | | asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | provenance | | -| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:10 | -| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | provenance | MaD:23508 | -| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | provenance | MaD:23509 | -| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | provenance | MaD:23510 | +| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:23 | +| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | provenance | MaD:21 | +| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | provenance | MaD:20 | +| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | provenance | MaD:22 | | test.cpp:7:47:7:52 | value2 | test.cpp:7:64:7:69 | value2 | provenance | | | test.cpp:7:64:7:69 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | provenance | | -| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:10:10:10:18 | call to ymlSource | provenance | Src:MaD:23506 | -| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:14:10:14:10 | x | provenance | Sink:MaD:23507 | +| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:10:10:10:18 | call to ymlSource | provenance | Src:MaD:16 | +| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:14:10:14:10 | x | provenance | Sink:MaD:1 | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:17:24:17:24 | x | provenance | | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:21:27:21:27 | x | provenance | | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:25:35:25:35 | x | provenance | | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:32:41:32:41 | x | provenance | | | test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | | -| test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:18:10:18:10 | y | provenance | Sink:MaD:23507 | +| test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:18:10:18:10 | y | provenance | Sink:MaD:1 | | test.cpp:17:24:17:24 | x | test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | provenance | | -| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:23508 | +| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:21 | | test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | | -| test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:22:10:22:10 | z | provenance | Sink:MaD:23507 | +| test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:22:10:22:10 | z | provenance | Sink:MaD:1 | | test.cpp:21:27:21:27 | x | test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | provenance | | -| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:23509 | +| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:20 | | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | | -| test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:26:10:26:11 | y2 | provenance | Sink:MaD:23507 | +| test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:26:10:26:11 | y2 | provenance | Sink:MaD:1 | | test.cpp:25:35:25:35 | x | test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | provenance | | -| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:23510 | +| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:22 | | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | provenance | | -| test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:33:10:33:11 | z2 | provenance | Sink:MaD:23507 | +| test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:33:10:33:11 | z2 | provenance | Sink:MaD:1 | | test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | provenance | | | test.cpp:32:41:32:41 | x | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | provenance | | -| windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | provenance | MaD:341 | -| windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:22:15:22:29 | *call to GetCommandLineA | provenance | Src:MaD:325 | +| windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | provenance | MaD:18 | +| windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:22:15:22:29 | *call to GetCommandLineA | provenance | Src:MaD:3 | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:24:8:24:11 | * ... | provenance | | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:27:36:27:38 | *cmd | provenance | | | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | provenance | | | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | windows.cpp:30:8:30:15 | * ... | provenance | | | windows.cpp:27:36:27:38 | *cmd | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | provenance | | -| windows.cpp:27:36:27:38 | *cmd | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | provenance | MaD:341 | -| windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | provenance | Src:MaD:327 | +| windows.cpp:27:36:27:38 | *cmd | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | provenance | MaD:18 | +| windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | provenance | Src:MaD:4 | | windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | windows.cpp:36:10:36:13 | * ... | provenance | | -| windows.cpp:39:36:39:38 | GetEnvironmentVariableA output argument | windows.cpp:41:10:41:13 | * ... | provenance | Src:MaD:329 | +| windows.cpp:39:36:39:38 | GetEnvironmentVariableA output argument | windows.cpp:41:10:41:13 | * ... | provenance | Src:MaD:5 | | windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [*hEvent] | windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[*hEvent] in ReadFileEx | provenance | | | windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [hEvent] | windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[hEvent] in ReadFileEx | provenance | | -| windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[*hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[*hEvent] in ReadFileEx | provenance | MaD:343 | -| windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[hEvent] in ReadFileEx | provenance | MaD:343 | +| windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[*hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[*hEvent] in ReadFileEx | provenance | MaD:19 | +| windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[hEvent] in ReadFileEx | provenance | MaD:19 | | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [*hEvent] | windows.cpp:147:16:147:27 | *lpOverlapped [*hEvent] | provenance | | | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [hEvent] | windows.cpp:157:16:157:27 | *lpOverlapped [hEvent] | provenance | | | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[*hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [*hEvent] | provenance | | @@ -67,36 +90,36 @@ edges | windows.cpp:159:12:159:55 | hEvent | windows.cpp:160:8:160:8 | c | provenance | | | windows.cpp:159:35:159:46 | *lpOverlapped [hEvent] | windows.cpp:159:12:159:55 | hEvent | provenance | | | windows.cpp:159:35:159:46 | *lpOverlapped [hEvent] | windows.cpp:159:12:159:55 | hEvent | provenance | | -| windows.cpp:168:35:168:40 | ReadFile output argument | windows.cpp:170:10:170:16 | * ... | provenance | Src:MaD:331 | -| windows.cpp:177:23:177:28 | ReadFileEx output argument | windows.cpp:179:10:179:16 | * ... | provenance | Src:MaD:332 | -| windows.cpp:189:21:189:26 | ReadFile output argument | windows.cpp:190:5:190:56 | *... = ... | provenance | Src:MaD:331 | +| windows.cpp:168:35:168:40 | ReadFile output argument | windows.cpp:170:10:170:16 | * ... | provenance | Src:MaD:14 | +| windows.cpp:177:23:177:28 | ReadFileEx output argument | windows.cpp:179:10:179:16 | * ... | provenance | Src:MaD:15 | +| windows.cpp:189:21:189:26 | ReadFile output argument | windows.cpp:190:5:190:56 | *... = ... | provenance | Src:MaD:14 | | windows.cpp:190:5:190:14 | *overlapped [post update] [*hEvent] | windows.cpp:192:53:192:63 | *& ... [*hEvent] | provenance | | | windows.cpp:190:5:190:56 | *... = ... | windows.cpp:190:5:190:14 | *overlapped [post update] [*hEvent] | provenance | | | windows.cpp:192:53:192:63 | *& ... [*hEvent] | windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [*hEvent] | provenance | | -| windows.cpp:198:21:198:26 | ReadFile output argument | windows.cpp:199:5:199:57 | ... = ... | provenance | Src:MaD:331 | +| windows.cpp:198:21:198:26 | ReadFile output argument | windows.cpp:199:5:199:57 | ... = ... | provenance | Src:MaD:14 | | windows.cpp:199:5:199:14 | *overlapped [post update] [hEvent] | windows.cpp:201:53:201:63 | *& ... [hEvent] | provenance | | | windows.cpp:199:5:199:57 | ... = ... | windows.cpp:199:5:199:14 | *overlapped [post update] [hEvent] | provenance | | | windows.cpp:201:53:201:63 | *& ... [hEvent] | windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [hEvent] | provenance | | -| windows.cpp:209:84:209:89 | NtReadFile output argument | windows.cpp:211:10:211:16 | * ... | provenance | Src:MaD:340 | -| windows.cpp:286:23:286:35 | *call to MapViewOfFile | windows.cpp:286:23:286:35 | *call to MapViewOfFile | provenance | Src:MaD:333 | +| windows.cpp:209:84:209:89 | NtReadFile output argument | windows.cpp:211:10:211:16 | * ... | provenance | Src:MaD:13 | +| windows.cpp:286:23:286:35 | *call to MapViewOfFile | windows.cpp:286:23:286:35 | *call to MapViewOfFile | provenance | Src:MaD:9 | | windows.cpp:286:23:286:35 | *call to MapViewOfFile | windows.cpp:287:20:287:52 | *pMapView | provenance | | | windows.cpp:287:20:287:52 | *pMapView | windows.cpp:289:10:289:16 | * ... | provenance | | -| windows.cpp:293:23:293:36 | *call to MapViewOfFile2 | windows.cpp:293:23:293:36 | *call to MapViewOfFile2 | provenance | Src:MaD:334 | +| windows.cpp:293:23:293:36 | *call to MapViewOfFile2 | windows.cpp:293:23:293:36 | *call to MapViewOfFile2 | provenance | Src:MaD:6 | | windows.cpp:293:23:293:36 | *call to MapViewOfFile2 | windows.cpp:294:20:294:52 | *pMapView | provenance | | | windows.cpp:294:20:294:52 | *pMapView | windows.cpp:296:10:296:16 | * ... | provenance | | -| windows.cpp:302:23:302:36 | *call to MapViewOfFile3 | windows.cpp:302:23:302:36 | *call to MapViewOfFile3 | provenance | Src:MaD:335 | +| windows.cpp:302:23:302:36 | *call to MapViewOfFile3 | windows.cpp:302:23:302:36 | *call to MapViewOfFile3 | provenance | Src:MaD:7 | | windows.cpp:302:23:302:36 | *call to MapViewOfFile3 | windows.cpp:303:20:303:52 | *pMapView | provenance | | | windows.cpp:303:20:303:52 | *pMapView | windows.cpp:305:10:305:16 | * ... | provenance | | -| windows.cpp:311:23:311:43 | *call to MapViewOfFile3FromApp | windows.cpp:311:23:311:43 | *call to MapViewOfFile3FromApp | provenance | Src:MaD:336 | +| windows.cpp:311:23:311:43 | *call to MapViewOfFile3FromApp | windows.cpp:311:23:311:43 | *call to MapViewOfFile3FromApp | provenance | Src:MaD:8 | | windows.cpp:311:23:311:43 | *call to MapViewOfFile3FromApp | windows.cpp:312:20:312:52 | *pMapView | provenance | | | windows.cpp:312:20:312:52 | *pMapView | windows.cpp:314:10:314:16 | * ... | provenance | | -| windows.cpp:318:23:318:37 | *call to MapViewOfFileEx | windows.cpp:318:23:318:37 | *call to MapViewOfFileEx | provenance | Src:MaD:337 | +| windows.cpp:318:23:318:37 | *call to MapViewOfFileEx | windows.cpp:318:23:318:37 | *call to MapViewOfFileEx | provenance | Src:MaD:10 | | windows.cpp:318:23:318:37 | *call to MapViewOfFileEx | windows.cpp:319:20:319:52 | *pMapView | provenance | | | windows.cpp:319:20:319:52 | *pMapView | windows.cpp:321:10:321:16 | * ... | provenance | | -| windows.cpp:325:23:325:42 | *call to MapViewOfFileFromApp | windows.cpp:325:23:325:42 | *call to MapViewOfFileFromApp | provenance | Src:MaD:338 | +| windows.cpp:325:23:325:42 | *call to MapViewOfFileFromApp | windows.cpp:325:23:325:42 | *call to MapViewOfFileFromApp | provenance | Src:MaD:11 | | windows.cpp:325:23:325:42 | *call to MapViewOfFileFromApp | windows.cpp:326:20:326:52 | *pMapView | provenance | | | windows.cpp:326:20:326:52 | *pMapView | windows.cpp:328:10:328:16 | * ... | provenance | | -| windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | provenance | Src:MaD:339 | +| windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | provenance | Src:MaD:12 | | windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | windows.cpp:333:20:333:52 | *pMapView | provenance | | | windows.cpp:333:20:333:52 | *pMapView | windows.cpp:335:10:335:16 | * ... | provenance | | nodes @@ -222,3 +245,4 @@ subpaths | test.cpp:25:35:25:35 | x | test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | | test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | | windows.cpp:27:36:27:38 | *cmd | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | +testFailures diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.ql b/cpp/ql/test/library-tests/dataflow/external-models/flow.ql index 7d41597c3b8e..8419248c70dc 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.ql +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.ql @@ -1,7 +1,7 @@ import utils.test.dataflow.FlowTestCommon import cpp import semmle.code.cpp.security.FlowSources -import IRTest::IRFlow::PathGraph +import codeql.dataflow.test.ProvenancePathGraph module IRTest { private import semmle.code.cpp.ir.IR @@ -33,3 +33,4 @@ module IRTest { } import MakeTest> +import ShowProvenance diff --git a/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected b/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected index a1511035d9e5..8f06adc1826f 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected @@ -15,6 +15,7 @@ | Dubious member name "operator[]" in summary model. | | Dubious signature "(..(*)(..))" in summary model. | | Dubious signature "(..(*)(..),..(*)(..),..(*)(..),..(*)(..))" in summary model. | +| Dubious signature "(..(*)(..),..(*)(..),..(*)(..),void *)" in summary model. | | Dubious signature "(..(*)(..),d2i_of_void *,BIO *,void **)" in summary model. | | Dubious signature "(..(*)(..),d2i_of_void *,FILE *,void **)" in summary model. | | Dubious signature "(..(*)(..),void *)" in summary model. | @@ -137,7 +138,12 @@ | Dubious signature "(BASIC_CONSTRAINTS *)" in summary model. | | Dubious signature "(BASIC_CONSTRAINTS **,const unsigned char **,long)" in summary model. | | Dubious signature "(BIGNUM *)" in summary model. | +| Dubious signature "(BIGNUM **)" in summary model. | +| Dubious signature "(BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *)" in summary model. | +| Dubious signature "(BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *)" in summary model. | +| Dubious signature "(BIGNUM **,EVP_PKEY *,const unsigned char *,size_t)" in summary model. | | Dubious signature "(BIGNUM **,const char *)" in summary model. | +| Dubious signature "(BIGNUM **,uint8_t[32],uint8_t[32])" in summary model. | | Dubious signature "(BIGNUM *,ASN1_INTEGER *)" in summary model. | | Dubious signature "(BIGNUM *,BIGNUM *)" in summary model. | | Dubious signature "(BIGNUM *,BIGNUM *,BIGNUM *,BIGNUM *,BIGNUM *,const BIGNUM *,const BIGNUM *,BN_CTX *,BN_GENCB *)" in summary model. | @@ -359,6 +365,25 @@ | Dubious signature "(BN_MONT_CTX *,const BIGNUM *,int,const unsigned char *,size_t,uint32_t,uint32_t)" in summary model. | | Dubious signature "(BN_RECP_CTX *,const BIGNUM *,BN_CTX *)" in summary model. | | Dubious signature "(BUF_MEM *,size_t)" in summary model. | +| Dubious signature "(BrotliBitReader *const,uint64_t,uint64_t *)" in summary model. | +| Dubious signature "(BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])" in summary model. | +| Dubious signature "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)" in summary model. | +| Dubious signature "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)" in summary model. | +| Dubious signature "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)" in summary model. | +| Dubious signature "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)" in summary model. | +| Dubious signature "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)" in summary model. | +| Dubious signature "(BrotliDistanceParams *,uint32_t,uint32_t,int)" in summary model. | +| Dubious signature "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)" in summary model. | +| Dubious signature "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t)" in summary model. | +| Dubious signature "(BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *)" in summary model. | +| Dubious signature "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)" in summary model. | +| Dubious signature "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)" in summary model. | +| Dubious signature "(BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])" in summary model. | +| Dubious signature "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)" in summary model. | +| Dubious signature "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)" in summary model. | +| Dubious signature "(Bytef *,uLongf *,const Bytef *,uLong *)" in summary model. | +| Dubious signature "(Bytef *,uLongf *,const Bytef *,uLong)" in summary model. | +| Dubious signature "(Bytef *,uLongf *,const Bytef *,uLong,int)" in summary model. | | Dubious signature "(CA_DB *,time_t *)" in summary model. | | Dubious signature "(CAtlFile &)" in summary model. | | Dubious signature "(CCM128_CONTEXT *,const unsigned char *,size_t)" in summary model. | @@ -454,6 +479,142 @@ | Dubious signature "(CT_POLICY_EVAL_CTX *,CTLOG_STORE *)" in summary model. | | Dubious signature "(CT_POLICY_EVAL_CTX *,X509 *)" in summary model. | | Dubious signature "(CT_POLICY_EVAL_CTX *,uint64_t)" in summary model. | +| Dubious signature "(CURL *)" in summary model. | +| Dubious signature "(CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *)" in summary model. | +| Dubious signature "(CURL *,char **,const char *)" in summary model. | +| Dubious signature "(CURL *,const char *,size_t,unsigned int,int,curl_header **)" in summary model. | +| Dubious signature "(CURL *,const void *,size_t,size_t *)" in summary model. | +| Dubious signature "(CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int)" in summary model. | +| Dubious signature "(CURL *,curl_mimepart *,curl_httppost *,curl_read_callback)" in summary model. | +| Dubious signature "(CURL *,int)" in summary model. | +| Dubious signature "(CURL *,tool_mime *,curl_mime **)" in summary model. | +| Dubious signature "(CURL *,unsigned int,int,curl_header *)" in summary model. | +| Dubious signature "(CURL *,void *,size_t,size_t *)" in summary model. | +| Dubious signature "(CURL *,void *,size_t,size_t *,const curl_ws_frame **)" in summary model. | +| Dubious signature "(CURLM *,CURL *)" in summary model. | +| Dubious signature "(CURLM *,curl_socket_t,int *)" in summary model. | +| Dubious signature "(CURLM *,curl_socket_t,int,int *)" in summary model. | +| Dubious signature "(CURLM *,int *)" in summary model. | +| Dubious signature "(CURLSH *,CURLSHoption,...)" in summary model. | +| Dubious signature "(CURLU *,CURLUPart,const char *,unsigned int)" in summary model. | +| Dubious signature "(CURLU *,const char *)" in summary model. | +| Dubious signature "(CURLU *,const char *,char **,OperationConfig *)" in summary model. | +| Dubious signature "(CompoundDictionary *,const PreparedDictionary *)" in summary model. | +| Dubious signature "(Curl_cfilter *)" in summary model. | +| Dubious signature "(Curl_cfilter **,Curl_easy *)" in summary model. | +| Dubious signature "(Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int)" in summary model. | +| Dubious signature "(Curl_cfilter **,const Curl_cftype *,void *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_cfilter *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,bool,int,int,void *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,const char *,void **)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,easy_pollset *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,timediff_t)" in summary model. | +| Dubious signature "(Curl_cfilter *,const char **,int *,bool *)" in summary model. | +| Dubious signature "(Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase)" in summary model. | +| Dubious signature "(Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase)" in summary model. | +| Dubious signature "(Curl_easy *)" in summary model. | +| Dubious signature "(Curl_easy **)" in summary model. | +| Dubious signature "(Curl_easy *,CURLcode,bool)" in summary model. | +| Dubious signature "(Curl_easy *,CURLoption,va_list)" in summary model. | +| Dubious signature "(Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_chunker *)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_chunker *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_chunker *,char *,size_t,size_t *)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_creader *)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_cwriter *)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_dns_entry **)" in summary model. | +| Dubious signature "(Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short)" in summary model. | +| Dubious signature "(Curl_easy *,bool *)" in summary model. | +| Dubious signature "(Curl_easy *,bool *,bool *)" in summary model. | +| Dubious signature "(Curl_easy *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,bool,dynbuf *)" in summary model. | +| Dubious signature "(Curl_easy *,char **)" in summary model. | +| Dubious signature "(Curl_easy *,char **,size_t *)" in summary model. | +| Dubious signature "(Curl_easy *,char *,size_t,size_t *,bool *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,const char **,Curl_HttpReq *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,curl_socket_t *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,curltime *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,int)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,int,Curl_cfilter *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,int,const Curl_dns_entry *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,int,const Curl_dns_entry *,int)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,int,const char *,size_t)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,int,curl_socket_t *)" in summary model. | +| Dubious signature "(Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *)" in summary model. | +| Dubious signature "(Curl_easy *,const Curl_crtype *)" in summary model. | +| Dubious signature "(Curl_easy *,const Curl_cwtype *)" in summary model. | +| Dubious signature "(Curl_easy *,const bufref *,ntlmdata *)" in summary model. | +| Dubious signature "(Curl_easy *,const char *)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,CookieInfo *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,FILE **,char **)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,const char *,ntlmdata *,bufref *)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,size_t,bool)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,size_t,size_t *)" in summary model. | +| Dubious signature "(Curl_easy *,const void *,size_t,bool,size_t *)" in summary model. | +| Dubious signature "(Curl_easy *,const void *,size_t,size_t *)" in summary model. | +| Dubious signature "(Curl_easy *,curl_mimepart *,const curl_mimepart *)" in summary model. | +| Dubious signature "(Curl_easy *,curl_off_t)" in summary model. | +| Dubious signature "(Curl_easy *,curltime *)" in summary model. | +| Dubious signature "(Curl_easy *,curltime *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,curltime)" in summary model. | +| Dubious signature "(Curl_easy *,dynbuf *)" in summary model. | +| Dubious signature "(Curl_easy *,easy_pollset *,..(*)(..))" in summary model. | +| Dubious signature "(Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *)" in summary model. | +| Dubious signature "(Curl_easy *,easy_pollset *,curl_socket_t,bool,bool)" in summary model. | +| Dubious signature "(Curl_easy *,easy_pollset *,curl_socket_t,int,int)" in summary model. | +| Dubious signature "(Curl_easy *,int)" in summary model. | +| Dubious signature "(Curl_easy *,int,Curl_addrinfo *)" in summary model. | +| Dubious signature "(Curl_easy *,int,bool,bool *)" in summary model. | +| Dubious signature "(Curl_easy *,int,const char **,const char **,int *)" in summary model. | +| Dubious signature "(Curl_easy *,int,curltime *)" in summary model. | +| Dubious signature "(Curl_easy *,int,pingpong *,int *,size_t *)" in summary model. | +| Dubious signature "(Curl_easy *,pingpong *)" in summary model. | +| Dubious signature "(Curl_easy *,pingpong *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,pingpong *,const char *,va_list)" in summary model. | +| Dubious signature "(Curl_easy *,pingpong *,curl_socket_t *)" in summary model. | +| Dubious signature "(Curl_easy *,size_t,bool)" in summary model. | +| Dubious signature "(Curl_easy *,size_t,char **)" in summary model. | +| Dubious signature "(Curl_easy *,ssize_t *,int *)" in summary model. | +| Dubious signature "(Curl_easy *,timerid,curltime)" in summary model. | +| Dubious signature "(Curl_easy *,unsigned char *,size_t)" in summary model. | +| Dubious signature "(Curl_easy *,unsigned int)" in summary model. | +| Dubious signature "(Curl_easy *,void **)" in summary model. | +| Dubious signature "(Curl_easy *,void **,void *)" in summary model. | +| Dubious signature "(Curl_hash *)" in summary model. | +| Dubious signature "(Curl_hash *,Curl_hash_iterator *)" in summary model. | +| Dubious signature "(Curl_hash *,curl_off_t,void *)" in summary model. | +| Dubious signature "(Curl_hash *,size_t)" in summary model. | +| Dubious signature "(Curl_hash *,size_t,Curl_hash_dtor)" in summary model. | +| Dubious signature "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)" in summary model. | +| Dubious signature "(Curl_hash *,void *,..(*)(..))" in summary model. | +| Dubious signature "(Curl_hash *,void *,size_t,void *)" in summary model. | +| Dubious signature "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)" in summary model. | +| Dubious signature "(Curl_hash_iterator *)" in summary model. | +| Dubious signature "(Curl_llist *)" in summary model. | +| Dubious signature "(Curl_llist *,Curl_llist_dtor)" in summary model. | +| Dubious signature "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)" in summary model. | +| Dubious signature "(Curl_llist *,const void *,Curl_llist_node *)" in summary model. | +| Dubious signature "(Curl_llist_node *)" in summary model. | +| Dubious signature "(Curl_multi *)" in summary model. | +| Dubious signature "(Curl_multi *,Curl_easy *,connectdata *)" in summary model. | +| Dubious signature "(Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *)" in summary model. | +| Dubious signature "(Curl_sockaddr_ex *,const Curl_addrinfo *,int)" in summary model. | +| Dubious signature "(Curl_tree *)" in summary model. | +| Dubious signature "(Curl_tree *,Curl_tree *,Curl_tree **)" in summary model. | +| Dubious signature "(Curl_tree *,void *)" in summary model. | +| Dubious signature "(Curl_waitfds *,curl_waitfd *,unsigned int)" in summary model. | +| Dubious signature "(Curl_waitfds *,easy_pollset *)" in summary model. | | Dubious signature "(DES_LONG *,DES_key_schedule *,DES_key_schedule *,DES_key_schedule *)" in summary model. | | Dubious signature "(DES_cblock *)" in summary model. | | Dubious signature "(DH *)" in summary model. | @@ -583,6 +744,8 @@ | Dubious signature "(EVP_CIPHER *,int)" in summary model. | | Dubious signature "(EVP_CIPHER *,unsigned long)" in summary model. | | Dubious signature "(EVP_CIPHER_CTX *)" in summary model. | +| Dubious signature "(EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int)" in summary model. | +| Dubious signature "(EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int)" in summary model. | | Dubious signature "(EVP_CIPHER_CTX *,ASN1_TYPE *)" in summary model. | | Dubious signature "(EVP_CIPHER_CTX *,ASN1_TYPE *,evp_cipher_aead_asn1_params *)" in summary model. | | Dubious signature "(EVP_CIPHER_CTX *,X509_ALGOR **)" in summary model. | @@ -619,12 +782,19 @@ | Dubious signature "(EVP_KEYMGMT *,void *,char *,size_t)" in summary model. | | Dubious signature "(EVP_MAC *)" in summary model. | | Dubious signature "(EVP_MAC_CTX *)" in summary model. | +| Dubious signature "(EVP_MAC_CTX **)" in summary model. | | Dubious signature "(EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *)" in summary model. | +| Dubious signature "(EVP_MAC_CTX **,const void *,size_t)" in summary model. | +| Dubious signature "(EVP_MAC_CTX **,void *)" in summary model. | +| Dubious signature "(EVP_MAC_CTX **,void *,size_t)" in summary model. | | Dubious signature "(EVP_MAC_CTX *,const OSSL_PARAM[],const char *,const char *,const char *,const char *,const unsigned char *,size_t)" in summary model. | | Dubious signature "(EVP_MD *,..(*)(..))" in summary model. | | Dubious signature "(EVP_MD *,int)" in summary model. | | Dubious signature "(EVP_MD *,unsigned long)" in summary model. | | Dubious signature "(EVP_MD_CTX *)" in summary model. | +| Dubious signature "(EVP_MD_CTX **)" in summary model. | +| Dubious signature "(EVP_MD_CTX **,const void *,size_t)" in summary model. | +| Dubious signature "(EVP_MD_CTX **,unsigned char *)" in summary model. | | Dubious signature "(EVP_MD_CTX *,..(*)(..))" in summary model. | | Dubious signature "(EVP_MD_CTX *,BIO *,X509_ALGOR *)" in summary model. | | Dubious signature "(EVP_MD_CTX *,EVP_MD *)" in summary model. | @@ -649,10 +819,15 @@ | Dubious signature "(EVP_MD_CTX *,unsigned char *,unsigned int *,EVP_PKEY *)" in summary model. | | Dubious signature "(EVP_MD_CTX *,unsigned char *,unsigned int *,EVP_PKEY *,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(EVP_PKEY *)" in summary model. | +| Dubious signature "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *)" in summary model. | +| Dubious signature "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)" in summary model. | | Dubious signature "(EVP_PKEY **,const EVP_PKEY *)" in summary model. | | Dubious signature "(EVP_PKEY **,const char *,const char *,const char *,int,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(EVP_PKEY **,const unsigned char **,long)" in summary model. | | Dubious signature "(EVP_PKEY **,const unsigned char **,long,OSSL_LIB_CTX *,const char *)" in summary model. | +| Dubious signature "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *)" in summary model. | +| Dubious signature "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)" in summary model. | +| Dubious signature "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)" in summary model. | | Dubious signature "(EVP_PKEY *,DH *,dh_st *)" in summary model. | | Dubious signature "(EVP_PKEY *,DSA *,dsa_st *)" in summary model. | | Dubious signature "(EVP_PKEY *,EC_KEY *,ec_key_st *)" in summary model. | @@ -801,6 +976,11 @@ | Dubious signature "(FILE *,const X509_PUBKEY *)" in summary model. | | Dubious signature "(FILE *,const X509_REQ *)" in summary model. | | Dubious signature "(FILE *,const X509_SIG *)" in summary model. | +| Dubious signature "(FILE *,const char *,const char *,const char *,...)" in summary model. | +| Dubious signature "(FILE *,const char *,const char *,const char *,const char *const *)" in summary model. | +| Dubious signature "(FILE *,const char *,const char *,const char *,const char *const *,size_t)" in summary model. | +| Dubious signature "(FILE *,const char *,const char *,const char *,va_list)" in summary model. | +| Dubious signature "(FILE *,const char *,va_list)" in summary model. | | Dubious signature "(FILE *,int *)" in summary model. | | Dubious signature "(FILE *,int,char *)" in summary model. | | Dubious signature "(FILE *,lemon *,char *,int *)" in summary model. | @@ -829,14 +1009,27 @@ | Dubious signature "(GENERAL_SUBTREE *)" in summary model. | | Dubious signature "(GOST_KX_MESSAGE *)" in summary model. | | Dubious signature "(GOST_KX_MESSAGE **,const unsigned char **,long)" in summary model. | +| Dubious signature "(GlobalConfig *,char **,const char *)" in summary model. | +| Dubious signature "(GlobalConfig *,const char *)" in summary model. | +| Dubious signature "(GlobalConfig *,const char *,dynbuf *,bool *)" in summary model. | +| Dubious signature "(GlobalConfig *,int,char *[])" in summary model. | +| Dubious signature "(GlobalConfig *,timeval *,bool)" in summary model. | | Dubious signature "(HMAC_CTX *,HMAC_CTX *)" in summary model. | | Dubious signature "(HMAC_CTX *,const void *,int,const EVP_MD *)" in summary model. | | Dubious signature "(HMAC_CTX *,const void *,int,const EVP_MD *,ENGINE *)" in summary model. | | Dubious signature "(HMAC_CTX *,unsigned long)" in summary model. | +| Dubious signature "(HMAC_context *,unsigned char *)" in summary model. | | Dubious signature "(HT *)" in summary model. | | Dubious signature "(HT *,..(*)(..),void *)" in summary model. | | Dubious signature "(HT *,HT_KEY *,HT_VALUE *,HT_VALUE **)" in summary model. | | Dubious signature "(HT *,size_t,..(*)(..),void *)" in summary model. | +| Dubious signature "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)" in summary model. | +| Dubious signature "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)" in summary model. | +| Dubious signature "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)" in summary model. | +| Dubious signature "(HuffmanCode *,const uint8_t *const,uint16_t *)" in summary model. | +| Dubious signature "(HuffmanCode *,int,const uint16_t *const,uint16_t *)" in summary model. | +| Dubious signature "(HuffmanCode *,int,uint16_t *,uint32_t)" in summary model. | +| Dubious signature "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)" in summary model. | | Dubious signature "(IPAddressChoice *)" in summary model. | | Dubious signature "(IPAddressChoice **,const unsigned char **,long)" in summary model. | | Dubious signature "(IPAddressFamily *)" in summary model. | @@ -905,6 +1098,108 @@ | Dubious signature "(KECCAK1600_CTX *,unsigned char *,size_t)" in summary model. | | Dubious signature "(KECCAK1600_CTX *,unsigned char,size_t)" in summary model. | | Dubious signature "(KECCAK1600_CTX *,unsigned char,size_t,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_AGENT *)" in summary model. | +| Dubious signature "(LIBSSH2_AGENT *,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *)" in summary model. | +| Dubious signature "(LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *)" in summary model. | +| Dubious signature "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,const char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,int)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,int,char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,int,const char *,const char *,int)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,int,const char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,int,const unsigned char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,int,int,int,int)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,unsigned long *)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,unsigned long *,unsigned long *)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,unsigned long,unsigned char)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *)" in summary model. | +| Dubious signature "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)" in summary model. | +| Dubious signature "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)" in summary model. | +| Dubious signature "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **)" in summary model. | +| Dubious signature "(LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **)" in summary model. | +| Dubious signature "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *)" in summary model. | +| Dubious signature "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int)" in summary model. | +| Dubious signature "(LIBSSH2_LISTENER *)" in summary model. | +| Dubious signature "(LIBSSH2_POLLFD *,unsigned int,long)" in summary model. | +| Dubious signature "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)" in summary model. | +| Dubious signature "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])" in summary model. | +| Dubious signature "(LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,char **)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,char **,int *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,char **,size_t *,const char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,const char *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,int,const char *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,int,int *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,stat *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..))" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..))" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,const char ***)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,const char *,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,const char *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,key_exchange_state_t *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,libssh2_cb_generic *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,void *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,libssh2_nonblocking_states *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,libssh2_socket_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,long)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,size_t *,int *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,time_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,uint32_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,size_t,const char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,long)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP_HANDLE *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_STATVFS *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP_HANDLE *,char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP_HANDLE *,const char *,size_t)" in summary model. | | Dubious signature "(LPCSTR,IAtlStringMgr *)" in summary model. | | Dubious signature "(LPCTSTR,DWORD *,void *,ULONG *)" in summary model. | | Dubious signature "(LPCWSTR,IAtlStringMgr *)" in summary model. | @@ -919,6 +1214,21 @@ | Dubious signature "(ML_DSA_KEY *,const uint8_t *,size_t)" in summary model. | | Dubious signature "(ML_DSA_KEY *,int,int,const uint8_t *,size_t,const uint8_t *,size_t)" in summary model. | | Dubious signature "(ML_DSA_SIG *,const uint8_t *,size_t,const ML_DSA_PARAMS *)" in summary model. | +| Dubious signature "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)" in summary model. | +| Dubious signature "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)" in summary model. | +| Dubious signature "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)" in summary model. | +| Dubious signature "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)" in summary model. | +| Dubious signature "(MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *)" in summary model. | +| Dubious signature "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)" in summary model. | +| Dubious signature "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)" in summary model. | +| Dubious signature "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)" in summary model. | +| Dubious signature "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)" in summary model. | +| Dubious signature "(MemoryManager *,const uint8_t *,size_t)" in summary model. | +| Dubious signature "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)" in summary model. | +| Dubious signature "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)" in summary model. | +| Dubious signature "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)" in summary model. | +| Dubious signature "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)" in summary model. | +| Dubious signature "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *)" in summary model. | | Dubious signature "(NAME_CONSTRAINTS *)" in summary model. | | Dubious signature "(NAMING_AUTHORITY *)" in summary model. | | Dubious signature "(NAMING_AUTHORITY **,const unsigned char **,long)" in summary model. | @@ -1495,6 +1805,10 @@ | Dubious signature "(OTHERNAME *)" in summary model. | | Dubious signature "(OTHERNAME **,const unsigned char **,long)" in summary model. | | Dubious signature "(OTHERNAME *,OTHERNAME *)" in summary model. | +| Dubious signature "(OperationConfig *)" in summary model. | +| Dubious signature "(OperationConfig *,HttpReq,HttpReq *)" in summary model. | +| Dubious signature "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)" in summary model. | +| Dubious signature "(OperationConfig *,const char *const *,char **,const char *)" in summary model. | | Dubious signature "(PACKET *)" in summary model. | | Dubious signature "(PACKET *,BIGNUM *)" in summary model. | | Dubious signature "(PACKET *,OSSL_QUIC_FRAME_CONN_CLOSE *)" in summary model. | @@ -1632,6 +1946,7 @@ | Dubious signature "(PROXY_CERT_INFO_EXTENSION **,const unsigned char **,long)" in summary model. | | Dubious signature "(PROXY_POLICY *)" in summary model. | | Dubious signature "(PROXY_POLICY **,const unsigned char **,long)" in summary model. | +| Dubious signature "(ProgressData *,OperationConfig *)" in summary model. | | Dubious signature "(QLOG *,BIO *)" in summary model. | | Dubious signature "(QLOG *,OSSL_TIME)" in summary model. | | Dubious signature "(QLOG *,uint32_t)" in summary model. | @@ -1792,6 +2107,8 @@ | Dubious signature "(RSA_PSS_PARAMS_30 *,const RSA_PSS_PARAMS_30 *)" in summary model. | | Dubious signature "(RSA_PSS_PARAMS_30 *,int *,const OSSL_PARAM[],OSSL_LIB_CTX *)" in summary model. | | Dubious signature "(RSA_PSS_PARAMS_30 *,int)" in summary model. | +| Dubious signature "(SASL *,Curl_easy *,bool,saslprogress *)" in summary model. | +| Dubious signature "(SASL *,Curl_easy *,const SASLproto *)" in summary model. | | Dubious signature "(SCRYPT_PARAMS *)" in summary model. | | Dubious signature "(SCRYPT_PARAMS **,const unsigned char **,long)" in summary model. | | Dubious signature "(SCT **,const unsigned char **,size_t)" in summary model. | @@ -2045,6 +2362,8 @@ | Dubious signature "(SXNET **,unsigned long,const char *,int)" in summary model. | | Dubious signature "(SXNETID *)" in summary model. | | Dubious signature "(SXNETID **,const unsigned char **,long)" in summary model. | +| Dubious signature "(SharedEncoderDictionary *)" in summary model. | +| Dubious signature "(SingleRequest *,Curl_easy *)" in summary model. | | Dubious signature "(StrAccum *,sqlite3_str *,const char *,...)" in summary model. | | Dubious signature "(TLS_FEATURE *)" in summary model. | | Dubious signature "(TLS_RL_RECORD *,const unsigned char *)" in summary model. | @@ -2121,6 +2440,8 @@ | Dubious signature "(UI_METHOD *,..(*)(..))" in summary model. | | Dubious signature "(UI_METHOD *,..(*)(..),..(*)(..))" in summary model. | | Dubious signature "(UI_STRING *)" in summary model. | +| Dubious signature "(URLGlob **)" in summary model. | +| Dubious signature "(URLGlob **,char *,curl_off_t *,FILE *)" in summary model. | | Dubious signature "(USERNOTICE *)" in summary model. | | Dubious signature "(USERNOTICE **,const unsigned char **,long)" in summary model. | | Dubious signature "(WHIRLPOOL_CTX *,const void *,size_t)" in summary model. | @@ -2151,6 +2472,7 @@ | Dubious signature "(WPACKET *,unsigned char *,size_t)" in summary model. | | Dubious signature "(WPACKET *,unsigned char *,size_t,size_t)" in summary model. | | Dubious signature "(WPACKET *,unsigned int)" in summary model. | +| Dubious signature "(WildcardData **)" in summary model. | | Dubious signature "(X9_62_CHARACTERISTIC_TWO *)" in summary model. | | Dubious signature "(X9_62_PENTANOMIAL *)" in summary model. | | Dubious signature "(X509 *)" in summary model. | @@ -2362,29 +2684,72 @@ | Dubious signature "(acttab *)" in summary model. | | Dubious signature "(acttab *,int)" in summary model. | | Dubious signature "(acttab *,int,int)" in summary model. | +| Dubious signature "(alpn_proto_buf *,const alpn_spec *)" in summary model. | +| Dubious signature "(altsvcinfo **)" in summary model. | +| Dubious signature "(altsvcinfo *,const long)" in summary model. | +| Dubious signature "(brotli_alloc_func,brotli_free_func,void *)" in summary model. | +| Dubious signature "(bufc_pool *,size_t,size_t)" in summary model. | +| Dubious signature "(bufq *,Curl_bufq_reader *,void *,CURLcode *)" in summary model. | +| Dubious signature "(bufq *,Curl_bufq_writer *,void *,CURLcode *)" in summary model. | +| Dubious signature "(bufq *,bufc_pool *,size_t,int)" in summary model. | +| Dubious signature "(bufq *,char *,size_t,size_t *)" in summary model. | +| Dubious signature "(bufq *,const char *,size_t,size_t *)" in summary model. | +| Dubious signature "(bufq *,const unsigned char **,size_t *)" in summary model. | +| Dubious signature "(bufq *,const unsigned char *,size_t,CURLcode *)" in summary model. | +| Dubious signature "(bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *)" in summary model. | +| Dubious signature "(bufq *,size_t)" in summary model. | +| Dubious signature "(bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *)" in summary model. | +| Dubious signature "(bufq *,size_t,const unsigned char **,size_t *)" in summary model. | +| Dubious signature "(bufq *,size_t,size_t)" in summary model. | +| Dubious signature "(bufq *,size_t,size_t,int)" in summary model. | +| Dubious signature "(bufq *,unsigned char *,size_t,CURLcode *)" in summary model. | +| Dubious signature "(bufref *,const void *,size_t)" in summary model. | +| Dubious signature "(bufref *,const void *,size_t,..(*)(..))" in summary model. | +| Dubious signature "(chacha_ctx *,const u8 *,const u8 *)" in summary model. | +| Dubious signature "(chacha_ctx *,const u8 *,u8 *,u32)" in summary model. | +| Dubious signature "(chacha_ctx *,const u8 *,u32)" in summary model. | +| Dubious signature "(chachapoly_ctx *,const u_char *,u_int)" in summary model. | +| Dubious signature "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)" in summary model. | +| Dubious signature "(chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int)" in summary model. | | Dubious signature "(char *)" in summary model. | | Dubious signature "(char **)" in summary model. | +| Dubious signature "(char **,Curl_str *,const size_t)" in summary model. | +| Dubious signature "(char **,Curl_str *,const size_t,char)" in summary model. | +| Dubious signature "(char **,URLGlob *)" in summary model. | +| Dubious signature "(char **,char *,URLGlob *)" in summary model. | +| Dubious signature "(char **,char)" in summary model. | +| Dubious signature "(char **,const char *)" in summary model. | | Dubious signature "(char **,s_options *,FILE *)" in summary model. | +| Dubious signature "(char **,size_t *,size_t)" in summary model. | | Dubious signature "(char *,EVP_CIPHER_INFO *)" in summary model. | | Dubious signature "(char *,FILE *,FILE *,int *)" in summary model. | +| Dubious signature "(char *,const char *,char **)" in summary model. | | Dubious signature "(char *,const char *,const char *,X509_VERIFY_PARAM *)" in summary model. | | Dubious signature "(char *,const char *,int,const char *)" in summary model. | | Dubious signature "(char *,const char *,size_t)" in summary model. | +| Dubious signature "(char *,const char *,va_list)" in summary model. | | Dubious signature "(char *,int)" in summary model. | | Dubious signature "(char *,int,const ASN1_OBJECT *)" in summary model. | | Dubious signature "(char *,int,const ASN1_OBJECT *,int)" in summary model. | | Dubious signature "(char *,int,int,void *)" in summary model. | +| Dubious signature "(char *,size_t *)" in summary model. | | Dubious signature "(char *,size_t)" in summary model. | | Dubious signature "(char *,size_t,const char *,...)" in summary model. | | Dubious signature "(char *,size_t,const char *,va_list)" in summary model. | | Dubious signature "(char *,size_t,size_t *,const OSSL_PARAM[],int,ossl_passphrase_data_st *)" in summary model. | | Dubious signature "(char *,size_t,size_t *,const OSSL_PARAM[],void *)" in summary model. | | Dubious signature "(char *,size_t,size_t *,const unsigned char *,size_t,const char)" in summary model. | +| Dubious signature "(char *,size_t,size_t,void *)" in summary model. | | Dubious signature "(char *,uint8_t)" in summary model. | | Dubious signature "(char *,unsigned int)" in summary model. | | Dubious signature "(char,const CStringT &)" in summary model. | +| Dubious signature "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)" in summary model. | | Dubious signature "(config *)" in summary model. | | Dubious signature "(config *,config *)" in summary model. | +| Dubious signature "(connectdata *,Curl_easy *,curltime *)" in summary model. | +| Dubious signature "(connectdata *,curltime *)" in summary model. | +| Dubious signature "(connectdata *,int)" in summary model. | +| Dubious signature "(connectdata *,int,curltime *)" in summary model. | | Dubious signature "(const ACCESS_DESCRIPTION *,unsigned char **)" in summary model. | | Dubious signature "(const ADMISSIONS *)" in summary model. | | Dubious signature "(const ADMISSIONS *,unsigned char **)" in summary model. | @@ -2504,6 +2869,9 @@ | Dubious signature "(const BIO_ADDRINFO *)" in summary model. | | Dubious signature "(const BIO_METHOD *)" in summary model. | | Dubious signature "(const BN_BLINDING *)" in summary model. | +| Dubious signature "(const BrotliDecoderState *,const BrotliDecoderStateInternal *)" in summary model. | +| Dubious signature "(const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *)" in summary model. | +| Dubious signature "(const BrotliEncoderPreparedDictionary *)" in summary model. | | Dubious signature "(const CComBSTR &)" in summary model. | | Dubious signature "(const CComSafeArray &)" in summary model. | | Dubious signature "(const CERTIFICATEPOLICIES *,unsigned char **)" in summary model. | @@ -2535,6 +2903,10 @@ | Dubious signature "(const CTLOG *,const uint8_t **,size_t *)" in summary model. | | Dubious signature "(const CTLOG_STORE *,const uint8_t *,size_t)" in summary model. | | Dubious signature "(const CT_POLICY_EVAL_CTX *)" in summary model. | +| Dubious signature "(const CURLU *)" in summary model. | +| Dubious signature "(const CURLU *,CURLUPart,char **,unsigned int)" in summary model. | +| Dubious signature "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)" in summary model. | +| Dubious signature "(const Curl_easy *,const connectdata *,int)" in summary model. | | Dubious signature "(const DH *)" in summary model. | | Dubious signature "(const DH *,const BIGNUM *)" in summary model. | | Dubious signature "(const DH *,const BIGNUM **,const BIGNUM **)" in summary model. | @@ -2695,7 +3067,21 @@ | Dubious signature "(const GENERAL_NAMES *,unsigned char **)" in summary model. | | Dubious signature "(const GOST_KX_MESSAGE *,unsigned char **)" in summary model. | | Dubious signature "(const HMAC_CTX *)" in summary model. | +| Dubious signature "(const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *)" in summary model. | +| Dubious signature "(const HMAC_params *,const unsigned char *,unsigned int)" in summary model. | | Dubious signature "(const HT_CONFIG *)" in summary model. | +| Dubious signature "(const HistogramCommand *)" in summary model. | +| Dubious signature "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)" in summary model. | +| Dubious signature "(const HistogramCommand *,const HistogramCommand *,HistogramCommand *)" in summary model. | +| Dubious signature "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)" in summary model. | +| Dubious signature "(const HistogramDistance *)" in summary model. | +| Dubious signature "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)" in summary model. | +| Dubious signature "(const HistogramDistance *,const HistogramDistance *,HistogramDistance *)" in summary model. | +| Dubious signature "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)" in summary model. | +| Dubious signature "(const HistogramLiteral *)" in summary model. | +| Dubious signature "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)" in summary model. | +| Dubious signature "(const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *)" in summary model. | +| Dubious signature "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)" in summary model. | | Dubious signature "(const IPAddressChoice *,unsigned char **)" in summary model. | | Dubious signature "(const IPAddressFamily *)" in summary model. | | Dubious signature "(const IPAddressFamily *,unsigned char **)" in summary model. | @@ -2704,6 +3090,7 @@ | Dubious signature "(const ISSUER_SIGN_TOOL *,unsigned char **)" in summary model. | | Dubious signature "(const ISSUING_DIST_POINT *,unsigned char **)" in summary model. | | Dubious signature "(const MATRIX *,const VECTOR *,VECTOR *)" in summary model. | +| Dubious signature "(const MD5_params *)" in summary model. | | Dubious signature "(const ML_DSA_KEY *)" in summary model. | | Dubious signature "(const ML_DSA_KEY *,int)" in summary model. | | Dubious signature "(const ML_DSA_KEY *,int,const uint8_t *,size_t)" in summary model. | @@ -3164,8 +3551,12 @@ | Dubious signature "(const YCHAR *)" in summary model. | | Dubious signature "(const YCHAR *,int)" in summary model. | | Dubious signature "(const YCHAR *,int,IAtlStringMgr *)" in summary model. | +| Dubious signature "(const bufq *)" in summary model. | +| Dubious signature "(const bufref *)" in summary model. | | Dubious signature "(const char *)" in summary model. | | Dubious signature "(const char **)" in summary model. | +| Dubious signature "(const char **,char **,const char *)" in summary model. | +| Dubious signature "(const char **,const char *)" in summary model. | | Dubious signature "(const char **,int *)" in summary model. | | Dubious signature "(const char **,int *,const char **,const char **,int *)" in summary model. | | Dubious signature "(const char **,int *,const char **,int *)" in summary model. | @@ -3177,16 +3568,25 @@ | Dubious signature "(const char *,DES_cblock *,DES_cblock *)" in summary model. | | Dubious signature "(const char *,EVP_CIPHER **)" in summary model. | | Dubious signature "(const char *,EVP_MD **)" in summary model. | +| Dubious signature "(const char *,GlobalConfig *)" in summary model. | | Dubious signature "(const char *,OSSL_CMP_severity *,char **,char **,int *)" in summary model. | | Dubious signature "(const char *,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(const char *,OSSL_LIB_CTX *,const char *,const UI_METHOD *,void *,const OSSL_PARAM[],OSSL_STORE_post_process_info_fn,void *)" in summary model. | | Dubious signature "(const char *,X509 **,stack_st_X509 **,int,const char *,const char *,X509_VERIFY_PARAM *)" in summary model. | +| Dubious signature "(const char *,bufref *)" in summary model. | | Dubious signature "(const char *,char *)" in summary model. | | Dubious signature "(const char *,char **,char **,BIO_hostserv_priorities)" in summary model. | +| Dubious signature "(const char *,char **,char **,char **)" in summary model. | | Dubious signature "(const char *,char **,char **,char **,char **,int *,char **,char **,char **)" in summary model. | +| Dubious signature "(const char *,char **,int)" in summary model. | +| Dubious signature "(const char *,char **,int,curl_off_t *)" in summary model. | | Dubious signature "(const char *,char **,int,unsigned long *)" in summary model. | | Dubious signature "(const char *,char **,size_t)" in summary model. | +| Dubious signature "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)" in summary model. | +| Dubious signature "(const char *,char *,char *,const char **)" in summary model. | +| Dubious signature "(const char *,char *,size_t *)" in summary model. | | Dubious signature "(const char *,char *,size_t)" in summary model. | +| Dubious signature "(const char *,char *,size_t,bool)" in summary model. | | Dubious signature "(const char *,const ASN1_INTEGER *,stack_st_CONF_VALUE **)" in summary model. | | Dubious signature "(const char *,const ML_COMMON_PKCS8_FMT *,const char *,const char *)" in summary model. | | Dubious signature "(const char *,const OPT_PAIR *,int *)" in summary model. | @@ -3203,20 +3603,28 @@ | Dubious signature "(const char *,const char *,char **,char **)" in summary model. | | Dubious signature "(const char *,const char *,char **,char **,const char *,const char *)" in summary model. | | Dubious signature "(const char *,const char *,char **,char **,const char *,const char *,OSSL_LIB_CTX *,const char *)" in summary model. | +| Dubious signature "(const char *,const char *,char **,int)" in summary model. | +| Dubious signature "(const char *,const char *,char *,char *)" in summary model. | | Dubious signature "(const char *,const char *,const BIGNUM *,ASN1_INTEGER **)" in summary model. | | Dubious signature "(const char *,const char *,const char *,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,const stack_st_CONF_VALUE *,const char *,int,size_t,int)" in summary model. | | Dubious signature "(const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,long,const char *,const ASN1_ITEM *)" in summary model. | +| Dubious signature "(const char *,const char *,const char *,bool,iconv_ilseq_handler)" in summary model. | +| Dubious signature "(const char *,const char *,const char *,bufref *)" in summary model. | | Dubious signature "(const char *,const char *,const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,const char *,ASN1_VALUE *,const ASN1_ITEM *,const char *,long,const ASN1_ITEM *)" in summary model. | | Dubious signature "(const char *,const char *,const char *,const char *,int,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,int)" in summary model. | +| Dubious signature "(const char *,const char *,const char *,iconv_ilseq_handler)" in summary model. | | Dubious signature "(const char *,const char *,const char *,int)" in summary model. | | Dubious signature "(const char *,const char *,int)" in summary model. | | Dubious signature "(const char *,const char *,int,int,int,int,BIO_ADDRINFO **)" in summary model. | | Dubious signature "(const char *,const char *,size_t)" in summary model. | | Dubious signature "(const char *,const char *,stack_st_CONF_VALUE **)" in summary model. | | Dubious signature "(const char *,const char *,unsigned int)" in summary model. | +| Dubious signature "(const char *,const size_t,char **,char **,char **)" in summary model. | | Dubious signature "(const char *,const size_t,unsigned int *,unsigned int *)" in summary model. | +| Dubious signature "(const char *,const time_t *)" in summary model. | | Dubious signature "(const char *,const unsigned char *,size_t,stack_st_CONF_VALUE **)" in summary model. | | Dubious signature "(const char *,const unsigned char *,stack_st_CONF_VALUE **)" in summary model. | +| Dubious signature "(const char *,digestdata *)" in summary model. | | Dubious signature "(const char *,double *)" in summary model. | | Dubious signature "(const char *,int32_t *)" in summary model. | | Dubious signature "(const char *,int64_t *)" in summary model. | @@ -3238,7 +3646,13 @@ | Dubious signature "(const char *,long *,int)" in summary model. | | Dubious signature "(const char *,size_t *)" in summary model. | | Dubious signature "(const char *,size_t)" in summary model. | +| Dubious signature "(const char *,size_t,char **,size_t *,urlreject)" in summary model. | +| Dubious signature "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)" in summary model. | +| Dubious signature "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)" in summary model. | | Dubious signature "(const char *,size_t,const char *,int)" in summary model. | +| Dubious signature "(const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *)" in summary model. | +| Dubious signature "(const char *,size_t,dynbuf *,bool)" in summary model. | +| Dubious signature "(const char *,size_t,uint32_t *,size_t *)" in summary model. | | Dubious signature "(const char *,sqlite3 **,int,const char *)" in summary model. | | Dubious signature "(const char *,sqlite3_filename)" in summary model. | | Dubious signature "(const char *,sqlite3_filename,const char *)" in summary model. | @@ -3247,8 +3661,10 @@ | Dubious signature "(const char *,sqlite3_filename,int)" in summary model. | | Dubious signature "(const char *,stack_st_X509_CRL **,const char *,const char *)" in summary model. | | Dubious signature "(const char *,time_t *)" in summary model. | +| Dubious signature "(const char *,uint16_t *,size_t)" in summary model. | | Dubious signature "(const char *,uint32_t *)" in summary model. | | Dubious signature "(const char *,uint64_t *)" in summary model. | +| Dubious signature "(const char *,unsigned char *)" in summary model. | | Dubious signature "(const char *,unsigned char *,size_t)" in summary model. | | Dubious signature "(const char *,unsigned int *)" in summary model. | | Dubious signature "(const char *,unsigned long *)" in summary model. | @@ -3257,10 +3673,12 @@ | Dubious signature "(const char *,void **,size_t)" in summary model. | | Dubious signature "(const char *,void *,size_t)" in summary model. | | Dubious signature "(const char *const *,const char *const *)" in summary model. | +| Dubious signature "(const curl_easyoption *)" in summary model. | | Dubious signature "(const curve448_point_t)" in summary model. | | Dubious signature "(const custom_ext_methods *,ENDPOINT,unsigned int,size_t *)" in summary model. | | Dubious signature "(const deque &)" in summary model. | | Dubious signature "(const deque &,const Allocator &)" in summary model. | +| Dubious signature "(const dynbuf *)" in summary model. | | Dubious signature "(const forward_list &)" in summary model. | | Dubious signature "(const forward_list &,const Allocator &)" in summary model. | | Dubious signature "(const gf)" in summary model. | @@ -3269,6 +3687,16 @@ | Dubious signature "(const int_dhx942_dh *,unsigned char **)" in summary model. | | Dubious signature "(const list &)" in summary model. | | Dubious signature "(const list &,const Allocator &)" in summary model. | +| Dubious signature "(const nghttp2_extpri *)" in summary model. | +| Dubious signature "(const nghttp2_map *)" in summary model. | +| Dubious signature "(const nghttp2_map *,..(*)(..),void *)" in summary model. | +| Dubious signature "(const nghttp2_map *,nghttp2_map_key_type)" in summary model. | +| Dubious signature "(const nghttp2_nv *,const nghttp2_nv *)" in summary model. | +| Dubious signature "(const nghttp2_settings_entry *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)" in summary model. | +| Dubious signature "(const sockaddr *,char *,size_t)" in summary model. | +| Dubious signature "(const sockaddr_in6 *,char *,size_t)" in summary model. | +| Dubious signature "(const sockaddr_in *,char *,size_t)" in summary model. | | Dubious signature "(const sqlite3_value *)" in summary model. | | Dubious signature "(const stack_st_SCT *,unsigned char **)" in summary model. | | Dubious signature "(const stack_st_X509 *)" in summary model. | @@ -3282,17 +3710,28 @@ | Dubious signature "(const stack_st_X509_EXTENSION *,int,int *,int *)" in summary model. | | Dubious signature "(const stack_st_X509_EXTENSION *,int,int)" in summary model. | | Dubious signature "(const stack_st_X509_NAME *)" in summary model. | +| Dubious signature "(const stat *)" in summary model. | | Dubious signature "(const time_t *,tm *)" in summary model. | | Dubious signature "(const u128[16],uint8_t *,const uint8_t *,size_t)" in summary model. | | Dubious signature "(const uint8_t *,SM4_KEY *)" in summary model. | +| Dubious signature "(const uint8_t *,const uint8_t *,uint8_t **,int)" in summary model. | | Dubious signature "(const uint8_t *,int,int,PROV_CTX *,const char *)" in summary model. | | Dubious signature "(const uint8_t *,size_t)" in summary model. | +| Dubious signature "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)" in summary model. | | Dubious signature "(const uint8_t *,size_t,ML_KEM_KEY *)" in summary model. | +| Dubious signature "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)" in summary model. | +| Dubious signature "(const uint8_t *,size_t,uint16_t *)" in summary model. | +| Dubious signature "(const uint8_t *,uint8_t **,int)" in summary model. | | Dubious signature "(const uint8_t *,uint8_t *,const SM4_KEY *)" in summary model. | +| Dubious signature "(const uint16_t *,ssize_t,char **,size_t *)" in summary model. | +| Dubious signature "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)" in summary model. | +| Dubious signature "(const uint32_t *,size_t,char *,size_t *)" in summary model. | +| Dubious signature "(const uint32_t *,size_t,uint32_t *,size_t *,int)" in summary model. | | Dubious signature "(const unsigned char *)" in summary model. | | Dubious signature "(const unsigned char **,long *,int *,int *,long)" in summary model. | | Dubious signature "(const unsigned char **,long)" in summary model. | | Dubious signature "(const unsigned char **,long,OSSL_LIB_CTX *,const char *)" in summary model. | +| Dubious signature "(const unsigned char **,unsigned char *,const unsigned char *,unsigned int)" in summary model. | | Dubious signature "(const unsigned char **,unsigned int,int *)" in summary model. | | Dubious signature "(const unsigned char **,unsigned int,int)" in summary model. | | Dubious signature "(const unsigned char **,unsigned int,int,int *,unsigned int *,unsigned int *)" in summary model. | @@ -3320,6 +3759,7 @@ | Dubious signature "(const unsigned char *,size_t,size_t,QUIC_CONN_ID *)" in summary model. | | Dubious signature "(const unsigned char *,size_t,uint64_t *)" in summary model. | | Dubious signature "(const unsigned char *,size_t,unsigned char *)" in summary model. | +| Dubious signature "(const unsigned char *,size_t,unsigned char *,size_t)" in summary model. | | Dubious signature "(const unsigned char *,unsigned char *,IDEA_KEY_SCHEDULE *)" in summary model. | | Dubious signature "(const unsigned char *,unsigned char *,RC2_KEY *,int)" in summary model. | | Dubious signature "(const unsigned char *,unsigned char *,const ARIA_KEY *)" in summary model. | @@ -3365,12 +3805,31 @@ | Dubious signature "(const unsigned char *,unsigned char *,size_t,const void *,unsigned char[16],unsigned char[16],unsigned int *,ctr128_f)" in summary model. | | Dubious signature "(const unsigned char[16],SEED_KEY_SCHEDULE *)" in summary model. | | Dubious signature "(const unsigned char[16],unsigned char[16],const SEED_KEY_SCHEDULE *)" in summary model. | +| Dubious signature "(const uv__io_t *,unsigned int)" in summary model. | +| Dubious signature "(const uv__statx *,uv_stat_t *)" in summary model. | +| Dubious signature "(const uv_buf_t[],unsigned int)" in summary model. | +| Dubious signature "(const uv_fs_t *)" in summary model. | +| Dubious signature "(const uv_handle_t *)" in summary model. | +| Dubious signature "(const uv_handle_t *,uv__peersockfunc,sockaddr *,int *)" in summary model. | +| Dubious signature "(const uv_handle_t *,uv_os_fd_t *)" in summary model. | +| Dubious signature "(const uv_lib_t *)" in summary model. | +| Dubious signature "(const uv_loop_t *)" in summary model. | +| Dubious signature "(const uv_pipe_t *,char *,size_t *)" in summary model. | +| Dubious signature "(const uv_process_t *)" in summary model. | +| Dubious signature "(const uv_req_t *)" in summary model. | +| Dubious signature "(const uv_stream_t *)" in summary model. | +| Dubious signature "(const uv_tcp_t *,sockaddr *,int *)" in summary model. | +| Dubious signature "(const uv_timer_t *)" in summary model. | +| Dubious signature "(const uv_udp_t *)" in summary model. | +| Dubious signature "(const uv_udp_t *,sockaddr *,int *)" in summary model. | | Dubious signature "(const vector &)" in summary model. | | Dubious signature "(const vector &,const Allocator &)" in summary model. | | Dubious signature "(const void *,const void *)" in summary model. | | Dubious signature "(const void *,const void *,int)" in summary model. | | Dubious signature "(const void *,const void *,int,int,..(*)(..))" in summary model. | | Dubious signature "(const void *,const void *,int,int,..(*)(..),int)" in summary model. | +| Dubious signature "(const void *,const void *,size_t)" in summary model. | +| Dubious signature "(const void *,size_t)" in summary model. | | Dubious signature "(const void *,size_t,const char *,int)" in summary model. | | Dubious signature "(const void *,size_t,unsigned char *)" in summary model. | | Dubious signature "(const void *,size_t,unsigned char **,size_t *)" in summary model. | @@ -3379,6 +3838,31 @@ | Dubious signature "(const_iterator,T &&)" in summary model. | | Dubious signature "(const_iterator,const T &)" in summary model. | | Dubious signature "(const_iterator,size_type,const T &)" in summary model. | +| Dubious signature "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)" in summary model. | +| Dubious signature "(cpool *,fd_set *,fd_set *,int *)" in summary model. | +| Dubious signature "(curl_blob **,const curl_blob *)" in summary model. | +| Dubious signature "(curl_httppost **,curl_httppost **,...)" in summary model. | +| Dubious signature "(curl_mime *)" in summary model. | +| Dubious signature "(curl_mimepart *)" in summary model. | +| Dubious signature "(curl_mimepart *,const char *)" in summary model. | +| Dubious signature "(curl_mimepart *,const char *,size_t)" in summary model. | +| Dubious signature "(curl_mimepart *,curl_mime *)" in summary model. | +| Dubious signature "(curl_mimepart *,curl_mime *,int)" in summary model. | +| Dubious signature "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)" in summary model. | +| Dubious signature "(curl_mimepart *,curl_slist *,int)" in summary model. | +| Dubious signature "(curl_off_t *,const char *)" in summary model. | +| Dubious signature "(curl_pollfds *,curl_socket_t,short)" in summary model. | +| Dubious signature "(curl_pollfds *,easy_pollset *)" in summary model. | +| Dubious signature "(curl_pollfds *,pollfd *,unsigned int)" in summary model. | +| Dubious signature "(curl_pushheaders *,const char *)" in summary model. | +| Dubious signature "(curl_pushheaders *,size_t)" in summary model. | +| Dubious signature "(curl_slist *)" in summary model. | +| Dubious signature "(curl_slist **,const char *)" in summary model. | +| Dubious signature "(curl_slist *,char *)" in summary model. | +| Dubious signature "(curl_slist *,const char *)" in summary model. | +| Dubious signature "(curltime,Curl_tree *)" in summary model. | +| Dubious signature "(curltime,Curl_tree *,Curl_tree *)" in summary model. | +| Dubious signature "(curltime,Curl_tree *,Curl_tree **)" in summary model. | | Dubious signature "(curve448_point_t,const curve448_point_t)" in summary model. | | Dubious signature "(curve448_point_t,const curve448_precomputed_s *,const curve448_scalar_t)" in summary model. | | Dubious signature "(curve448_point_t,const curve448_scalar_t,const curve448_point_t,const curve448_scalar_t)" in summary model. | @@ -3390,24 +3874,62 @@ | Dubious signature "(custom_ext_methods *,const custom_ext_methods *)" in summary model. | | Dubious signature "(d2i_of_void *,const char *,BIO *,void **,pem_password_cb *,void *)" in summary model. | | Dubious signature "(d2i_of_void *,const char *,FILE *,void **,pem_password_cb *,void *)" in summary model. | +| Dubious signature "(deflate_state *,charf *,ulg,int)" in summary model. | +| Dubious signature "(deflate_state *,unsigned int,unsigned int)" in summary model. | | Dubious signature "(deque &&)" in summary model. | | Dubious signature "(deque &&,const Allocator &)" in summary model. | +| Dubious signature "(dynbuf *)" in summary model. | +| Dubious signature "(dynbuf *,Curl_easy *)" in summary model. | +| Dubious signature "(dynbuf *,FILE *)" in summary model. | +| Dubious signature "(dynbuf *,const char *)" in summary model. | +| Dubious signature "(dynbuf *,const char *,va_list)" in summary model. | +| Dubious signature "(dynbuf *,const void *,size_t)" in summary model. | +| Dubious signature "(dynbuf *,size_t *)" in summary model. | +| Dubious signature "(dynbuf *,size_t)" in summary model. | +| Dubious signature "(dynhds *)" in summary model. | +| Dubious signature "(dynhds *,const char *)" in summary model. | +| Dubious signature "(dynhds *,const char *,const char *)" in summary model. | +| Dubious signature "(dynhds *,const char *,size_t)" in summary model. | +| Dubious signature "(dynhds *,const char *,size_t,const char *,size_t)" in summary model. | +| Dubious signature "(dynhds *,int)" in summary model. | +| Dubious signature "(dynhds *,size_t *)" in summary model. | +| Dubious signature "(dynhds *,size_t)" in summary model. | +| Dubious signature "(dynhds *,size_t,size_t)" in summary model. | +| Dubious signature "(fileinfo *)" in summary model. | | Dubious signature "(format_string,Args &&)" in summary model. | | Dubious signature "(forward_list &&)" in summary model. | | Dubious signature "(forward_list &&,const Allocator &)" in summary model. | +| Dubious signature "(ftp_parselist_data *)" in summary model. | +| Dubious signature "(ftp_parselist_data **)" in summary model. | | Dubious signature "(gf,const gf,const gf)" in summary model. | | Dubious signature "(gf,const uint8_t[56],int,uint8_t)" in summary model. | +| Dubious signature "(gzFile,char *,int)" in summary model. | +| Dubious signature "(gzFile,const char *)" in summary model. | +| Dubious signature "(gzFile,const char *,va_list)" in summary model. | +| Dubious signature "(gzFile,int *)" in summary model. | +| Dubious signature "(gzFile,unsigned int)" in summary model. | +| Dubious signature "(gzFile,voidp,unsigned int)" in summary model. | +| Dubious signature "(gzFile,voidpc,unsigned int)" in summary model. | +| Dubious signature "(gz_statep,int,const char *)" in summary model. | +| Dubious signature "(h1_req_parser *,const char *,size_t,const char *,int,CURLcode *)" in summary model. | +| Dubious signature "(h1_req_parser *,size_t)" in summary model. | +| Dubious signature "(hsts **)" in summary model. | +| Dubious signature "(http_resp **,int,const char *)" in summary model. | +| Dubious signature "(httpreq **,const char *,size_t,CURLU *,const char *)" in summary model. | +| Dubious signature "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)" in summary model. | | Dubious signature "(i2d_of_void *,BIO *,const void *)" in summary model. | | Dubious signature "(i2d_of_void *,FILE *,const void *)" in summary model. | | Dubious signature "(i2d_of_void *,X509_ALGOR *,X509_ALGOR *,ASN1_BIT_STRING *,char *,EVP_PKEY *,const EVP_MD *)" in summary model. | | Dubious signature "(i2d_of_void *,const char *,BIO *,const void *,const EVP_CIPHER *,const unsigned char *,int,pem_password_cb *,void *)" in summary model. | | Dubious signature "(i2d_of_void *,const char *,FILE *,const void *,const EVP_CIPHER *,const unsigned char *,int,pem_password_cb *,void *)" in summary model. | | Dubious signature "(i2d_of_void *,d2i_of_void *,const void *)" in summary model. | +| Dubious signature "(int32_t *,int32_t *,int32_t *,int32_t *)" in summary model. | | Dubious signature "(int64_t *,const ASN1_ENUMERATED *)" in summary model. | | Dubious signature "(int64_t *,const ASN1_INTEGER *)" in summary model. | | Dubious signature "(int *,ASN1_TIME **,const ASN1_TIME *)" in summary model. | | Dubious signature "(int *,X509 *,stack_st_X509 *,unsigned long)" in summary model. | | Dubious signature "(int *,const char *,const char *,const char *,const char *,int,int,int,int,int,BIO_ADDR **)" in summary model. | +| Dubious signature "(int *,const char *,size_t)" in summary model. | | Dubious signature "(int *,int *,const ASN1_TIME *,const ASN1_TIME *)" in summary model. | | Dubious signature "(int *,int *,const EVP_PKEY_METHOD *)" in summary model. | | Dubious signature "(int *,int *,const tm *,const tm *)" in summary model. | @@ -3437,8 +3959,12 @@ | Dubious signature "(int,char **)" in summary model. | | Dubious signature "(int,char **,char *[])" in summary model. | | Dubious signature "(int,char **,const OPTIONS *)" in summary model. | +| Dubious signature "(int,char **,gengetopt_args_info *)" in summary model. | +| Dubious signature "(int,char **,gengetopt_args_info *,cmdline_parser_params *)" in summary model. | +| Dubious signature "(int,char **,gengetopt_args_info *,int,int,int)" in summary model. | | Dubious signature "(int,char *,const char *,...)" in summary model. | | Dubious signature "(int,char *,const char *,va_list)" in summary model. | +| Dubious signature "(int,char *,size_t)" in summary model. | | Dubious signature "(int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *)" in summary model. | | Dubious signature "(int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(int,const OSSL_ALGORITHM *,OSSL_PROVIDER *)" in summary model. | @@ -3450,13 +3976,17 @@ | Dubious signature "(int,const char *,int,unsigned char *,int,int,stack_st_PKCS12_SAFEBAG *)" in summary model. | | Dubious signature "(int,const char *,int,unsigned char *,int,int,stack_st_PKCS12_SAFEBAG *,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(int,const regex_t *,char *,size_t)" in summary model. | +| Dubious signature "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)" in summary model. | | Dubious signature "(int,const unsigned char *,int,const unsigned char *,int,DSA *)" in summary model. | | Dubious signature "(int,const unsigned char *,int,const unsigned char *,int,EC_KEY *)" in summary model. | | Dubious signature "(int,const unsigned char *,int,unsigned char *,unsigned int *,DSA *)" in summary model. | | Dubious signature "(int,const unsigned char *,int,unsigned char *,unsigned int *,DSA *,unsigned int,const char *,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(int,const unsigned char *,int,unsigned char *,unsigned int *,const BIGNUM *,const BIGNUM *,EC_KEY *)" in summary model. | | Dubious signature "(int,const unsigned char *,unsigned int,unsigned char *,size_t *,const unsigned char *,size_t,RSA *)" in summary model. | +| Dubious signature "(int,const void *,char *,size_t)" in summary model. | +| Dubious signature "(int,const void *,const char *,int)" in summary model. | | Dubious signature "(int,int *,int *,int)" in summary model. | +| Dubious signature "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])" in summary model. | | Dubious signature "(int,int,TLS_GROUP_INFO *,size_t,long,stack_st_OPENSSL_CSTRING *)" in summary model. | | Dubious signature "(int,int,const char *)" in summary model. | | Dubious signature "(int,int,const char *,const char *)" in summary model. | @@ -3468,6 +3998,7 @@ | Dubious signature "(int,int,void *)" in summary model. | | Dubious signature "(int,long,void *,CRYPTO_EX_new *,CRYPTO_EX_dup *,CRYPTO_EX_free *)" in summary model. | | Dubious signature "(int,sqlite3_int64 *,sqlite3_int64 *,int)" in summary model. | +| Dubious signature "(int,stat *)" in summary model. | | Dubious signature "(int,unsigned char *,int,const char *,const char *)" in summary model. | | Dubious signature "(int,unsigned char *,int,int *,unsigned long *,..(*)(..),void *)" in summary model. | | Dubious signature "(int,unsigned long,..(*)(..),void *)" in summary model. | @@ -3483,16 +4014,182 @@ | Dubious signature "(lhash_st_CONF_VALUE *,const char *,long *)" in summary model. | | Dubious signature "(list &&)" in summary model. | | Dubious signature "(list &&,const Allocator &)" in summary model. | +| Dubious signature "(list_head *)" in summary model. | +| Dubious signature "(list_head *,list_node *)" in summary model. | +| Dubious signature "(list_node *)" in summary model. | +| Dubious signature "(long *,const char *)" in summary model. | +| Dubious signature "(long *,const char *,long)" in summary model. | +| Dubious signature "(long long *)" in summary model. | +| Dubious signature "(nghttp2_buf *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_buf *,uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_bufs *,nghttp2_frame_hd *,size_t,int)" in summary model. | +| Dubious signature "(nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *)" in summary model. | +| Dubious signature "(nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *)" in summary model. | +| Dubious signature "(nghttp2_bufs *,size_t)" in summary model. | +| Dubious signature "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_data *,uint8_t,int32_t)" in summary model. | +| Dubious signature "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)" in summary model. | +| Dubious signature "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)" in summary model. | +| Dubious signature "(nghttp2_extension *,int32_t,uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_extension *,nghttp2_origin_entry *,size_t)" in summary model. | +| Dubious signature "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)" in summary model. | +| Dubious signature "(nghttp2_extpri *,const uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_extpri *,uint8_t)" in summary model. | +| Dubious signature "(nghttp2_frame *,size_t)" in summary model. | +| Dubious signature "(nghttp2_frame_hd *,const uint8_t *)" in summary model. | +| Dubious signature "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)" in summary model. | +| Dubious signature "(nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_goaway *,const uint8_t *,uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_context *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater **,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,const nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_entry *,nghttp2_hd_nv *)" in summary model. | +| Dubious signature "(nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater *)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater **,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater *,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater *,size_t)" in summary model. | +| Dubious signature "(nghttp2_headers *,const uint8_t *)" in summary model. | +| Dubious signature "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_map *,nghttp2_map_key_type,void *)" in summary model. | +| Dubious signature "(nghttp2_map *,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_option **)" in summary model. | +| Dubious signature "(nghttp2_option *,int)" in summary model. | +| Dubious signature "(nghttp2_option *,size_t)" in summary model. | +| Dubious signature "(nghttp2_option *,uint8_t)" in summary model. | +| Dubious signature "(nghttp2_option *,uint32_t)" in summary model. | +| Dubious signature "(nghttp2_option *,uint64_t,uint64_t)" in summary model. | +| Dubious signature "(nghttp2_outbound_queue *)" in summary model. | +| Dubious signature "(nghttp2_outbound_queue *,nghttp2_outbound_item *)" in summary model. | +| Dubious signature "(nghttp2_ping *,const uint8_t *)" in summary model. | +| Dubious signature "(nghttp2_ping *,uint8_t,const uint8_t *)" in summary model. | +| Dubious signature "(nghttp2_pq *)" in summary model. | +| Dubious signature "(nghttp2_pq *,nghttp2_less,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_pq *,nghttp2_pq_entry *)" in summary model. | +| Dubious signature "(nghttp2_priority *,const uint8_t *)" in summary model. | +| Dubious signature "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)" in summary model. | +| Dubious signature "(nghttp2_priority_spec *,const uint8_t *)" in summary model. | +| Dubious signature "(nghttp2_priority_spec *,int32_t,int32_t,int)" in summary model. | +| Dubious signature "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_queue *)" in summary model. | +| Dubious signature "(nghttp2_queue *,void *)" in summary model. | +| Dubious signature "(nghttp2_ratelim *,uint64_t)" in summary model. | +| Dubious signature "(nghttp2_ratelim *,uint64_t,uint64_t)" in summary model. | +| Dubious signature "(nghttp2_rcbuf *)" in summary model. | +| Dubious signature "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_rcbuf **,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_rst_stream *,int32_t,uint32_t)" in summary model. | +| Dubious signature "(nghttp2_session *)" in summary model. | +| Dubious signature "(nghttp2_session **,const nghttp2_session_callbacks *,void *)" in summary model. | +| Dubious signature "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)" in summary model. | +| Dubious signature "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,const uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_session *,const uint8_t *,size_t,int,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,const uint8_t *,size_t,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t,const nghttp2_extpri *,int)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t,size_t)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_extpri *,int32_t)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_frame *)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_outbound_item *)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_settings_entry *,size_t)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_settings_id)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_stream *)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_stream *,size_t,int)" in summary model. | +| Dubious signature "(nghttp2_session *,size_t)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,int32_t,int32_t)" in summary model. | +| Dubious signature "(nghttp2_session *,void *)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks **)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_before_frame_send_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_error_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_error_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_begin_frame_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_begin_headers_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_data_chunk_recv_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_extension_chunk_recv_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_frame_not_send_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_frame_recv_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_frame_send_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_header_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_header_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_invalid_frame_recv_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_stream_close_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_pack_extension_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_pack_extension_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_recv_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_recv_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_select_padding_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_select_padding_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_send_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_send_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_send_data_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_unpack_extension_callback)" in summary model. | +| Dubious signature "(nghttp2_settings *,nghttp2_settings_entry *,size_t)" in summary model. | +| Dubious signature "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)" in summary model. | +| Dubious signature "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_stream *)" in summary model. | +| Dubious signature "(nghttp2_stream *,int32_t,int32_t)" in summary model. | +| Dubious signature "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)" in summary model. | +| Dubious signature "(nghttp2_stream *,nghttp2_outbound_item *)" in summary model. | +| Dubious signature "(nghttp2_stream *,nghttp2_shut_flag)" in summary model. | +| Dubious signature "(nghttp2_stream *,size_t)" in summary model. | +| Dubious signature "(nghttp2_stream *,uint8_t)" in summary model. | +| Dubious signature "(nghttp2_window_update *,uint8_t,int32_t,int32_t)" in summary model. | +| Dubious signature "(pgrs_dir *,curl_off_t,curltime)" in summary model. | | Dubious signature "(piterator *)" in summary model. | | Dubious signature "(plink *)" in summary model. | | Dubious signature "(plink **,config *)" in summary model. | | Dubious signature "(plink **,plink *)" in summary model. | +| Dubious signature "(pollfd[],unsigned int,timediff_t)" in summary model. | | Dubious signature "(pqueue *)" in summary model. | | Dubious signature "(pqueue *,pitem *)" in summary model. | | Dubious signature "(pqueue *,unsigned char *)" in summary model. | +| Dubious signature "(pthread_t *)" in summary model. | +| Dubious signature "(pthread_t **)" in summary model. | | Dubious signature "(regex_t *,const char *,int)" in summary model. | | Dubious signature "(regex_t *,const char *,size_t,regmatch_t[],int)" in summary model. | | Dubious signature "(rule *,int)" in summary model. | +| Dubious signature "(scan_ctx *,const char *,const char *,const char *)" in summary model. | +| Dubious signature "(sfparse_parser *,const uint8_t *,size_t)" in summary model. | +| Dubious signature "(sfparse_parser *,sfparse_value *)" in summary model. | +| Dubious signature "(sfparse_parser *,sfparse_vec *,sfparse_value *)" in summary model. | +| Dubious signature "(sfparse_vec *,const sfparse_vec *)" in summary model. | | Dubious signature "(size_t *,const char *)" in summary model. | | Dubious signature "(size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,OSSL_LIB_CTX *)" in summary model. | | Dubious signature "(size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,int,OSSL_LIB_CTX *)" in summary model. | @@ -3500,9 +4197,18 @@ | Dubious signature "(size_t,SSL_CTX *)" in summary model. | | Dubious signature "(size_t,const QUIC_PKT_HDR *)" in summary model. | | Dubious signature "(size_t,const char **,size_t *)" in summary model. | +| Dubious signature "(size_t,const char[],size_t *,uint32_t[])" in summary model. | +| Dubious signature "(size_t,const uint8_t[],size_t *,uint8_t[])" in summary model. | +| Dubious signature "(size_t,const uint32_t[],size_t *,char[])" in summary model. | +| Dubious signature "(size_t,size_t,Curl_ssl_scache **)" in summary model. | +| Dubious signature "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)" in summary model. | +| Dubious signature "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)" in summary model. | | Dubious signature "(size_t,size_t,void **,const char *,int)" in summary model. | +| Dubious signature "(size_t,uint32_t *,uint8_t *)" in summary model. | | Dubious signature "(size_type,const T &)" in summary model. | | Dubious signature "(size_type,const T &,const Allocator &)" in summary model. | +| Dubious signature "(slist_wc **,const char *)" in summary model. | +| Dubious signature "(slist_wc *,const char *)" in summary model. | | Dubious signature "(sqlite3 *)" in summary model. | | Dubious signature "(sqlite3 *,..(*)(..),void *)" in summary model. | | Dubious signature "(sqlite3 *,..(*)(..),void *,..(*)(..))" in summary model. | @@ -3593,6 +4299,7 @@ | Dubious signature "(sqlite3expert *,char **)" in summary model. | | Dubious signature "(sqlite3expert *,const char *,char **)" in summary model. | | Dubious signature "(sqlite3expert *,int,int)" in summary model. | +| Dubious signature "(ssl_peer *,Curl_cfilter *,const char *,int)" in summary model. | | Dubious signature "(stack_st_ASN1_UTF8STRING *)" in summary model. | | Dubious signature "(stack_st_ASN1_UTF8STRING *,const char *,int)" in summary model. | | Dubious signature "(stack_st_OPENSSL_STRING *,const OSSL_PARAM *)" in summary model. | @@ -3639,15 +4346,37 @@ | Dubious signature "(stack_st_X509_OBJECT *,X509_OBJECT *)" in summary model. | | Dubious signature "(stack_st_X509_POLICY_NODE *,const ASN1_OBJECT *)" in summary model. | | Dubious signature "(state *,config *)" in summary model. | +| Dubious signature "(store_netrc *)" in summary model. | +| Dubious signature "(store_netrc *,const char *,char **,char **,char *)" in summary model. | +| Dubious signature "(string_buf *,libssh2_uint64_t *)" in summary model. | +| Dubious signature "(string_buf *,uint32_t *)" in summary model. | +| Dubious signature "(string_buf *,unsigned char *)" in summary model. | +| Dubious signature "(string_buf *,unsigned char **,size_t *)" in summary model. | | Dubious signature "(symbol *,lemon *)" in summary model. | +| Dubious signature "(timeval *)" in summary model. | +| Dubious signature "(timeval *,timediff_t)" in summary model. | | Dubious signature "(tm *,const ASN1_TIME *)" in summary model. | | Dubious signature "(tm *,const ASN1_UTCTIME *)" in summary model. | | Dubious signature "(tm *,int,long)" in summary model. | | Dubious signature "(u64[2],const u128[16],const u8 *,size_t)" in summary model. | +| Dubious signature "(uLong,const Bytef *,uInt)" in summary model. | +| Dubious signature "(uLong,const Bytef *,z_size_t)" in summary model. | +| Dubious signature "(uLong,unsigned long,const Bytef *,const unsigned char *,uInt)" in summary model. | +| Dubious signature "(uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t)" in summary model. | +| Dubious signature "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])" in summary model. | +| Dubious signature "(ucs4_t *,const uint8_t *,size_t)" in summary model. | +| Dubious signature "(ucs4_t,ucs4_t *)" in summary model. | +| Dubious signature "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)" in summary model. | +| Dubious signature "(uint8_t *,const nghttp2_frame_hd *)" in summary model. | +| Dubious signature "(uint8_t *,const nghttp2_priority_spec *)" in summary model. | +| Dubious signature "(uint8_t *,const nghttp2_settings_entry *,size_t)" in summary model. | +| Dubious signature "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)" in summary model. | | Dubious signature "(uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *)" in summary model. | +| Dubious signature "(uint8_t *,const void *,size_t)" in summary model. | | Dubious signature "(uint8_t *,size_t)" in summary model. | | Dubious signature "(uint8_t *,size_t,ML_KEM_KEY *)" in summary model. | | Dubious signature "(uint8_t *,size_t,const ML_KEM_KEY *)" in summary model. | +| Dubious signature "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)" in summary model. | | Dubious signature "(uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *)" in summary model. | | Dubious signature "(uint8_t *,size_t,uint8_t *,size_t,const ML_KEM_KEY *)" in summary model. | | Dubious signature "(uint8_t *,size_t,uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *)" in summary model. | @@ -3662,6 +4391,8 @@ | Dubious signature "(uint16_t **,size_t *,uint16_t **,size_t *,size_t **,size_t *,int *,size_t)" in summary model. | | Dubious signature "(uint16_t **,size_t *,uint16_t **,size_t *,size_t **,size_t *,void *)" in summary model. | | Dubious signature "(uint32_t *,SSL_CONNECTION *,int)" in summary model. | +| Dubious signature "(uint32_t *,const IDNAMap *)" in summary model. | +| Dubious signature "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)" in summary model. | | Dubious signature "(uint32_t,uint32_t *,uint32_t *)" in summary model. | | Dubious signature "(uint32_t,uint32_t,uint32_t *,int32_t *)" in summary model. | | Dubious signature "(uint64_t *,const ASN1_INTEGER *)" in summary model. | @@ -3670,13 +4401,21 @@ | Dubious signature "(uint64_t *,uint64_t,CRYPTO_RWLOCK *)" in summary model. | | Dubious signature "(uint64_t *,uint64_t,uint64_t *,CRYPTO_RWLOCK *)" in summary model. | | Dubious signature "(uint64_t,uint64_t *)" in summary model. | +| Dubious signature "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)" in summary model. | | Dubious signature "(unsigned char *)" in summary model. | | Dubious signature "(unsigned char **)" in summary model. | | Dubious signature "(unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int)" in summary model. | +| Dubious signature "(unsigned char **,const char *,size_t)" in summary model. | +| Dubious signature "(unsigned char **,const unsigned char *,size_t)" in summary model. | | Dubious signature "(unsigned char **,int,int,int,int)" in summary model. | +| Dubious signature "(unsigned char **,libssh2_uint64_t)" in summary model. | | Dubious signature "(unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *)" in summary model. | | Dubious signature "(unsigned char **,long)" in summary model. | +| Dubious signature "(unsigned char **,size_t *)" in summary model. | | Dubious signature "(unsigned char **,size_t *,const EC_POINT *,const EC_KEY *)" in summary model. | +| Dubious signature "(unsigned char **,size_t *,unsigned char **,unsigned int *)" in summary model. | +| Dubious signature "(unsigned char **,uint32_t)" in summary model. | +| Dubious signature "(unsigned char **,unsigned char *,const unsigned char *,unsigned int)" in summary model. | | Dubious signature "(unsigned char **,unsigned char *,const unsigned char *,unsigned int,const unsigned char *,unsigned int)" in summary model. | | Dubious signature "(unsigned char *,BLAKE2B_CTX *)" in summary model. | | Dubious signature "(unsigned char *,BLAKE2S_CTX *)" in summary model. | @@ -3692,6 +4431,7 @@ | Dubious signature "(unsigned char *,WHIRLPOOL_CTX *)" in summary model. | | Dubious signature "(unsigned char *,const BIGNUM *,DH *)" in summary model. | | Dubious signature "(unsigned char *,const char *)" in summary model. | +| Dubious signature "(unsigned char *,const unsigned char *,const unsigned char *,size_t)" in summary model. | | Dubious signature "(unsigned char *,const unsigned char *,int)" in summary model. | | Dubious signature "(unsigned char *,const unsigned char *,size_t)" in summary model. | | Dubious signature "(unsigned char *,int)" in summary model. | @@ -3709,7 +4449,14 @@ | Dubious signature "(unsigned char *,long,int,OSSL_CALLBACK *,void *,OSSL_PASSPHRASE_CALLBACK *,void *,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(unsigned char *,size_t *,size_t)" in summary model. | | Dubious signature "(unsigned char *,size_t *,size_t,const unsigned char **,size_t *)" in summary model. | +| Dubious signature "(unsigned char *,size_t,const unsigned char *,size_t)" in summary model. | +| Dubious signature "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)" in summary model. | +| Dubious signature "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)" in summary model. | +| Dubious signature "(unsigned char *,size_t,scan_ctx *)" in summary model. | +| Dubious signature "(unsigned char *,uint32_t)" in summary model. | | Dubious signature "(unsigned char *,uint64_t,int)" in summary model. | +| Dubious signature "(unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *)" in summary model. | +| Dubious signature "(unsigned char *,unsigned char *,unsigned char *,unsigned char *)" in summary model. | | Dubious signature "(unsigned char *,void *)" in summary model. | | Dubious signature "(unsigned char)" in summary model. | | Dubious signature "(unsigned char,const char *,ct_log_entry_type_t,uint64_t,const char *,const char *)" in summary model. | @@ -3717,6 +4464,7 @@ | Dubious signature "(unsigned int *,const BF_KEY *)" in summary model. | | Dubious signature "(unsigned int *,const CAST_KEY *)" in summary model. | | Dubious signature "(unsigned int)" in summary model. | +| Dubious signature "(unsigned int,char *,size_t *)" in summary model. | | Dubious signature "(unsigned int,int,int)" in summary model. | | Dubious signature "(unsigned int[5],const unsigned char[64])" in summary model. | | Dubious signature "(unsigned long *,IDEA_KEY_SCHEDULE *)" in summary model. | @@ -3738,6 +4486,117 @@ | Dubious signature "(unsigned long[8],const unsigned long[8],const unsigned long[8],const unsigned long[8],unsigned long,const unsigned long[8])" in summary model. | | Dubious signature "(unsigned long[16],const unsigned long[16],const unsigned long[16],const unsigned long[16],const unsigned long[16],unsigned long)" in summary model. | | Dubious signature "(unsigned short,int)" in summary model. | +| Dubious signature "(uv__io_t *,uv__io_cb,int)" in summary model. | +| Dubious signature "(uv_async_t *)" in summary model. | +| Dubious signature "(uv_check_t *,uv_check_cb)" in summary model. | +| Dubious signature "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)" in summary model. | +| Dubious signature "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)" in summary model. | +| Dubious signature "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)" in summary model. | +| Dubious signature "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)" in summary model. | +| Dubious signature "(uv_cpu_info_t **,int *)" in summary model. | +| Dubious signature "(uv_env_item_t **,int *)" in summary model. | +| Dubious signature "(uv_env_item_t *,int)" in summary model. | +| Dubious signature "(uv_fs_event_t *,char *,size_t *)" in summary model. | +| Dubious signature "(uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int)" in summary model. | +| Dubious signature "(uv_fs_poll_t *)" in summary model. | +| Dubious signature "(uv_fs_poll_t *,char *,size_t *)" in summary model. | +| Dubious signature "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)" in summary model. | +| Dubious signature "(uv_fs_t *)" in summary model. | +| Dubious signature "(uv_fs_t *,uv_dirent_t *)" in summary model. | +| Dubious signature "(uv_handle_t *)" in summary model. | +| Dubious signature "(uv_handle_t *,int *)" in summary model. | +| Dubious signature "(uv_handle_t *,int,int *)" in summary model. | +| Dubious signature "(uv_handle_t *,uv_close_cb)" in summary model. | +| Dubious signature "(uv_handle_t *,void *)" in summary model. | +| Dubious signature "(uv_idle_t *,uv_idle_cb)" in summary model. | +| Dubious signature "(uv_interface_address_t **,int *)" in summary model. | +| Dubious signature "(uv_key_t *)" in summary model. | +| Dubious signature "(uv_key_t *,void *)" in summary model. | +| Dubious signature "(uv_lib_t *,const char *,void **)" in summary model. | +| Dubious signature "(uv_loop_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,FILE *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv__io_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv__io_t *,unsigned int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))" in summary model. | +| Dubious signature "(uv_loop_t *,uv_async_t *,uv_async_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_check_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_event_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_poll_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,int,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uint32_t)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_idle_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_loop_option,va_list)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_pipe_t *,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_poll_t *,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_poll_t *,uv_os_sock_t)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_prepare_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_process_t *,const uv_process_options_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_signal_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_stream_t *,uv_handle_type)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_tcp_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_tcp_t *,unsigned int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_timer_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_tty_t *,int,uv_file,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_udp_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_udp_t *,unsigned int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_udp_t *,unsigned int,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,void *)" in summary model. | +| Dubious signature "(uv_pipe_t *)" in summary model. | +| Dubious signature "(uv_pipe_t *,const char *)" in summary model. | +| Dubious signature "(uv_pipe_t *,const char *,size_t,unsigned int)" in summary model. | +| Dubious signature "(uv_pipe_t *,int,uv_connection_cb)" in summary model. | +| Dubious signature "(uv_pipe_t *,uv_file)" in summary model. | +| Dubious signature "(uv_poll_t *,int,uv_poll_cb)" in summary model. | +| Dubious signature "(uv_prepare_t *,uv_prepare_cb)" in summary model. | +| Dubious signature "(uv_req_t *,void *)" in summary model. | +| Dubious signature "(uv_sem_t *)" in summary model. | +| Dubious signature "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)" in summary model. | +| Dubious signature "(uv_signal_t *,uv_signal_cb,int)" in summary model. | +| Dubious signature "(uv_stream_t *,int,int)" in summary model. | +| Dubious signature "(uv_stream_t *,int,uv_connection_cb)" in summary model. | +| Dubious signature "(uv_stream_t *,uv_alloc_cb,uv_read_cb)" in summary model. | +| Dubious signature "(uv_stream_t *,uv_stream_t *)" in summary model. | +| Dubious signature "(uv_tcp_t *,int,uv_connection_cb)" in summary model. | +| Dubious signature "(uv_tcp_t *,uv_close_cb)" in summary model. | +| Dubious signature "(uv_tcp_t *,uv_os_sock_t)" in summary model. | +| Dubious signature "(uv_thread_t *)" in summary model. | +| Dubious signature "(uv_thread_t *,char *,char *,size_t)" in summary model. | +| Dubious signature "(uv_thread_t *,char *,size_t)" in summary model. | +| Dubious signature "(uv_timer_t *,uint64_t)" in summary model. | +| Dubious signature "(uv_timer_t *,uv_timer_cb,uint64_t,uint64_t)" in summary model. | +| Dubious signature "(uv_tty_t *,uv_tty_mode_t)" in summary model. | +| Dubious signature "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)" in summary model. | +| Dubious signature "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)" in summary model. | +| Dubious signature "(uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *)" in summary model. | +| Dubious signature "(uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int)" in summary model. | +| Dubious signature "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[])" in summary model. | +| Dubious signature "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int)" in summary model. | +| Dubious signature "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)" in summary model. | +| Dubious signature "(uv_udp_t *,uv_os_sock_t)" in summary model. | +| Dubious signature "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)" in summary model. | +| Dubious signature "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)" in summary model. | | Dubious signature "(vector &&)" in summary model. | | Dubious signature "(vector &&,const Allocator &)" in summary model. | | Dubious signature "(void *)" in summary model. | @@ -3751,12 +4610,15 @@ | Dubious signature "(void *,const char *,int)" in summary model. | | Dubious signature "(void *,const unsigned char *,size_t,const unsigned char *,size_t,const OSSL_PARAM[])" in summary model. | | Dubious signature "(void *,const unsigned char *,unsigned char *,const unsigned char *,size_t,block128_f)" in summary model. | +| Dubious signature "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)" in summary model. | +| Dubious signature "(void *,curl_off_t,int)" in summary model. | | Dubious signature "(void *,int)" in summary model. | | Dubious signature "(void *,int,const OSSL_PARAM[])" in summary model. | | Dubious signature "(void *,int,size_t,size_t,size_t,uint64_t,const PROV_CIPHER_HW *)" in summary model. | | Dubious signature "(void *,size_t)" in summary model. | | Dubious signature "(void *,size_t,const EC_POINT *,const EC_KEY *,..(*)(..))" in summary model. | | Dubious signature "(void *,size_t,const char *,int)" in summary model. | +| Dubious signature "(void *,size_t,size_t)" in summary model. | | Dubious signature "(void *,size_t,size_t,const char *,int)" in summary model. | | Dubious signature "(void *,size_t,size_t,size_t,unsigned int,uint64_t,const PROV_CIPHER_HW *,void *)" in summary model. | | Dubious signature "(void *,sqlite3 *,int,const char *)" in summary model. | @@ -3771,6 +4633,11 @@ | Dubious signature "(wchar_t *)" in summary model. | | Dubious signature "(wchar_t, const CStringT &)" in summary model. | | Dubious signature "(wchar_t,const CStringT &)" in summary model. | +| Dubious signature "(z_streamp,Bytef *,uInt *)" in summary model. | +| Dubious signature "(z_streamp,const Bytef *,uInt)" in summary model. | +| Dubious signature "(z_streamp,int *)" in summary model. | +| Dubious signature "(z_streamp,unsigned int *,int *)" in summary model. | +| Dubious signature "(z_streamp,unsigned int)" in summary model. | | Unrecognized input specification "Field[****hEvent]" in summary model. | | Unrecognized input specification "Field[***hEvent]" in summary model. | | Unrecognized output specification "Field[****hEvent]" in summary model. | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected index 24f651ca3892..1eab706df430 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected @@ -4717,7 +4717,7 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | stl.h:292:30:292:40 | call to allocator | stl.h:292:21:292:41 | noexcept(...) | TAINT | | stl.h:292:30:292:40 | call to allocator | stl.h:292:21:292:41 | noexcept(...) | TAINT | | stl.h:292:30:292:40 | call to allocator | stl.h:292:21:292:41 | noexcept(...) | TAINT | -| stl.h:292:53:292:63 | 0 | stl.h:292:46:292:64 | (no string representation) | TAINT | +| stl.h:292:53:292:63 | 0 | stl.h:292:46:292:64 | constructor init | TAINT | | stl.h:396:3:396:3 | this | stl.h:396:36:396:43 | constructor init of field first [pre-this] | | | stl.h:396:3:396:3 | this | stl.h:396:36:396:43 | constructor init of field first [pre-this] | | | stl.h:396:3:396:3 | this | stl.h:396:36:396:43 | constructor init of field first [pre-this] | | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected index 7a5791c27569..5311879eebf2 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected @@ -17,6 +17,9 @@ signatureMatches | arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_TRUST_get0 | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | c_tolower | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | c_toupper | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | curlx_sitouz | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | evp_pkey_type2name | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | ossl_tolower | 0 | @@ -24,6 +27,12 @@ signatureMatches | arrayassignment.cpp:3:6:3:9 | sink | (int) | | sqlite3_compileoption_get | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | sqlite3_errstr | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | tls13_alert_code | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv__accept | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_err_name | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_get_osfhandle | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_strerror | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_translate_sys_error | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | zError | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_STRING_type_new | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_tag2bit | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_tag2str | 0 | @@ -42,6 +51,9 @@ signatureMatches | arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_TRUST_get0 | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_TRUST_get_by_id | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | c_tolower | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | c_toupper | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | curlx_sitouz | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | evp_pkey_type2name | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | ossl_cmp_bodytype_to_string | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | ossl_tolower | 0 | @@ -49,6 +61,12 @@ signatureMatches | arrayassignment.cpp:88:7:88:9 | get | (int) | | sqlite3_compileoption_get | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | sqlite3_errstr | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | tls13_alert_code | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv__accept | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_err_name | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_get_osfhandle | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_strerror | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_translate_sys_error | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | zError | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_STRING_type_new | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_tag2bit | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_tag2str | 0 | @@ -67,6 +85,9 @@ signatureMatches | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_TRUST_get0 | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | c_tolower | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | c_toupper | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | curlx_sitouz | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | evp_pkey_type2name | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ossl_tolower | 0 | @@ -74,12 +95,22 @@ signatureMatches | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | sqlite3_compileoption_get | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | sqlite3_errstr | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | tls13_alert_code | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv__accept | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_err_name | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_get_osfhandle | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_strerror | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_translate_sys_error | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | zError | 0 | | atl.cpp:71:5:71:17 | _U_STRINGorID | (UINT) | CComBSTR | LoadString | 0 | | atl.cpp:71:5:71:17 | _U_STRINGorID | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | Jim_IntHashFunction | 0 | +| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | curlx_uitous | 0 | | atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | ssl3_get_cipher | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Jim_StrDup | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -90,11 +121,20 @@ signatureMatches | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | last_component | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | opt_path_end | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | opt_progname | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | strhash | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uc_script_byname | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uv__strdup | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uv_wtf8_length_as_utf16 | 0 | +| atl.cpp:201:8:201:12 | GetAt | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | | atl.cpp:201:8:201:12 | GetAt | (size_t) | | EVP_PKEY_meth_get0 | 0 | +| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztosi | 0 | +| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztosz | 0 | +| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztoui | 0 | +| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztoul | 0 | | atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_get_extension_type | 0 | | atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_param_bytes_to_blocks | 0 | | atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_quic_sstream_new | 0 | @@ -109,9 +149,20 @@ signatureMatches | atl.cpp:206:10:206:17 | InsertAt | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 | | atl.cpp:206:10:206:17 | InsertAt | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | | atl.cpp:206:10:206:17 | InsertAt | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | | atl.cpp:206:10:206:17 | InsertAt | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | | atl.cpp:206:10:206:17 | InsertAt | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | | atl.cpp:206:10:206:17 | InsertAt | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | | atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | | atl.cpp:206:10:206:17 | InsertAt | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | | atl.cpp:206:10:206:17 | InsertAt | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | @@ -122,6 +173,9 @@ signatureMatches | atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | | atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | | atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | | atl.cpp:206:10:206:17 | InsertAt | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | | atl.cpp:206:10:206:17 | InsertAt | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 | | atl.cpp:206:10:206:17 | InsertAt | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 | @@ -129,6 +183,7 @@ signatureMatches | atl.cpp:206:10:206:17 | InsertAt | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | | atl.cpp:206:10:206:17 | InsertAt | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | | atl.cpp:206:10:206:17 | InsertAt | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | | atl.cpp:206:10:206:17 | InsertAt | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | | atl.cpp:206:10:206:17 | InsertAt | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | | atl.cpp:206:10:206:17 | InsertAt | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | @@ -199,8 +254,15 @@ signatureMatches | atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | | atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | | atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (char **,size_t *,size_t) | | Curl_str_number | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | Curl_strntolower | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | Curl_strntoupper | 2 | | atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | | atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | uv__strscpy | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | @@ -214,20 +276,64 @@ signatureMatches | atl.cpp:206:10:206:17 | InsertAt | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | getpass_r | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const char *,const char *,size_t) | | c_strncasecmp | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const char *,void *,size_t) | | uv__random_readpath | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | | atl.cpp:206:10:206:17 | InsertAt | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | | atl.cpp:206:10:206:17 | InsertAt | (int *,int *,size_t) | | EVP_PBE_get | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | Curl_strerror | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | uv_err_name_r | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | uv_strerror_r | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | | atl.cpp:206:10:206:17 | InsertAt | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | | atl.cpp:206:10:206:17 | InsertAt | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | | atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | | atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | | atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (void *,size_t,size_t) | | Curl_hash_str | 2 | | atl.cpp:206:10:206:17 | InsertAt | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | +| atl.cpp:213:8:213:17 | operator[] | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | | atl.cpp:213:8:213:17 | operator[] | (size_t) | | EVP_PKEY_meth_get0 | 0 | +| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztosi | 0 | +| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztosz | 0 | +| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztoui | 0 | +| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztoul | 0 | | atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_get_extension_type | 0 | | atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_param_bytes_to_blocks | 0 | | atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_quic_sstream_new | 0 | @@ -238,10 +344,22 @@ signatureMatches | atl.cpp:259:5:259:12 | CAtlList | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | Jim_IntHashFunction | 0 | | atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | Jim_IntHashFunction | 0 | +| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | curlx_uitous | 0 | +| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | curlx_uitous | 0 | | atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | ssl3_get_cipher | 0 | | atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | ssl3_get_cipher | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | | atl.cpp:268:14:268:22 | FindIndex | (size_t) | | EVP_PKEY_meth_get0 | 0 | | atl.cpp:268:14:268:22 | FindIndex | (size_t) | | EVP_PKEY_meth_get0 | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosi | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosi | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosz | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosz | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoui | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoui | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoul | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoul | 0 | | atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_get_extension_type | 0 | | atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_get_extension_type | 0 | | atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_param_bytes_to_blocks | 0 | @@ -272,6 +390,9 @@ signatureMatches | atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | c_tolower | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | c_toupper | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | curlx_sitouz | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | evp_pkey_type2name | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | ossl_tolower | 0 | @@ -279,6 +400,12 @@ signatureMatches | atl.cpp:412:5:412:12 | CComBSTR | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | sqlite3_errstr | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | tls13_alert_code | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv__accept | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_err_name | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_strerror | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | zError | 0 | | atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 0 | | atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | @@ -290,6 +417,9 @@ signatureMatches | atl.cpp:414:5:414:12 | CComBSTR | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (CONF *,const char *) | | _CONF_new_section | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -300,10 +430,14 @@ signatureMatches | atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (GlobalConfig *,const char *) | | setvariable | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -360,22 +494,45 @@ signatureMatches | atl.cpp:414:5:414:12 | CComBSTR | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (char **,const char *) | | Curl_setstropt | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (const char **,const char *) | | uv__utf8_decode1 | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | Configcmp | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | Curl_timestrcmp | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | DES_crypt | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | c_strcasecmp | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | get_passwd | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | gzopen | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | gzopen64 | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | openssl_fopen | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | ossl_pem_check_suffix | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | ossl_v3_name_cmp | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | sqlite3_strglob | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | sqlite3_stricmp | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (curl_off_t *,const char *) | | str2offset | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (curl_slist **,const char *) | | add2list | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (curl_slist *,const char *) | | curl_slist_append | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (gzFile,const char *) | | gzputs | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 0 | | atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | BIO_meth_new | 0 | | atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | BIO_meth_new | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | gzdopen | 0 | +| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | gzdopen | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (lemon *,const char *) | | file_makename | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | secs2ms | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | str2num | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | str2unum | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (size_t *,const char *) | | next_protos_parse | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (slist_wc **,const char *) | | easysrc_add | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (slist_wc *,const char *) | | slist_wc_append | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -386,11 +543,15 @@ signatureMatches | atl.cpp:414:5:414:12 | CComBSTR | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (unsigned long *,const char *) | | set_cert_ex | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (unsigned long *,const char *) | | set_name_ex | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | atl.cpp:415:5:415:12 | CComBSTR | (LPCOLESTR) | CComBSTR | Append | 0 | | atl.cpp:415:5:415:12 | CComBSTR | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (LPCSTR) | CComBSTR | Append | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (LPCSTR) | CComBSTR | CComBSTR | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Jim_StrDup | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -401,16 +562,23 @@ signatureMatches | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | last_component | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | opt_path_end | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | opt_progname | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | strhash | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uc_script_byname | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uv__strdup | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:417:5:417:12 | CComBSTR | (CComBSTR &&) | CComBSTR | CComBSTR | 0 | | atl.cpp:420:13:420:18 | Append | (const CComBSTR &) | CComBSTR | Append | 0 | | atl.cpp:420:13:420:18 | Append | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | | atl.cpp:421:13:421:18 | Append | (wchar_t) | | operator+= | 0 | | atl.cpp:421:13:421:18 | Append | (wchar_t) | CComBSTR | Append | 0 | | atl.cpp:421:13:421:18 | Append | (wchar_t) | CSimpleStringT | operator+= | 0 | +| atl.cpp:422:13:422:18 | Append | (char) | | Curl_raw_tolower | 0 | +| atl.cpp:422:13:422:18 | Append | (char) | | Curl_raw_toupper | 0 | +| atl.cpp:422:13:422:18 | Append | (char) | | findshortopt | 0 | | atl.cpp:422:13:422:18 | Append | (char) | | operator+= | 0 | | atl.cpp:422:13:422:18 | Append | (char) | CComBSTR | Append | 0 | | atl.cpp:422:13:422:18 | Append | (char) | CSimpleStringT | operator+= | 0 | @@ -419,6 +587,9 @@ signatureMatches | atl.cpp:424:13:424:18 | Append | (LPCSTR) | CComBSTR | Append | 0 | | atl.cpp:424:13:424:18 | Append | (LPCSTR) | CComBSTR | CComBSTR | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | Jim_StrDup | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -429,10 +600,14 @@ signatureMatches | atl.cpp:424:13:424:18 | Append | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | last_component | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | opt_path_end | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | opt_progname | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | strhash | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | uc_script_byname | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | uv__strdup | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:425:13:425:18 | Append | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | atl.cpp:425:13:425:18 | Append | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -451,6 +626,8 @@ signatureMatches | atl.cpp:425:13:425:18 | Append | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:425:13:425:18 | Append | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:425:13:425:18 | Append | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:425:13:425:18 | Append | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:425:13:425:18 | Append | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:425:13:425:18 | Append | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:425:13:425:18 | Append | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:425:13:425:18 | Append | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -494,6 +671,17 @@ signatureMatches | atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 0 | | atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:425:13:425:18 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | @@ -612,8 +800,10 @@ signatureMatches | atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:425:13:425:18 | Append | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:425:13:425:18 | Append | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:425:13:425:18 | Append | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:425:13:425:18 | Append | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:425:13:425:18 | Append | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:425:13:425:18 | Append | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:425:13:425:18 | Append | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:425:13:425:18 | Append | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -680,12 +870,22 @@ signatureMatches | atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:425:13:425:18 | Append | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:425:13:425:18 | Append | (gzFile,int) | | gzflush | 1 | +| atl.cpp:425:13:425:18 | Append | (gzFile,int) | | gzputc | 1 | | atl.cpp:425:13:425:18 | Append | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:425:13:425:18 | Append | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:425:13:425:18 | Append | (int,int) | | BN_security_bits | 1 | | atl.cpp:425:13:425:18 | Append | (int,int) | | EVP_MD_meth_new | 1 | | atl.cpp:425:13:425:18 | Append | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:425:13:425:18 | Append | (int,int) | | acttab_alloc | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:425:13:425:18 | Append | (rule *,int) | | Configlist_add | 1 | | atl.cpp:425:13:425:18 | Append | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:425:13:425:18 | Append | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -720,6 +920,7 @@ signatureMatches | atl.cpp:425:13:425:18 | Append | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:425:13:425:18 | Append | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:425:13:425:18 | Append | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:425:13:425:18 | Append | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:425:13:425:18 | Append | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:425:13:425:18 | Append | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:425:13:425:18 | Append | (wchar_t,int) | CStringT | CStringT | 1 | @@ -742,6 +943,8 @@ signatureMatches | atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -785,6 +988,17 @@ signatureMatches | atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -902,8 +1116,10 @@ signatureMatches | atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -976,12 +1192,22 @@ signatureMatches | atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (gzFile,int) | | gzflush | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (gzFile,int) | | gzputc | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | BN_security_bits | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | EVP_MD_meth_new | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | acttab_alloc | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (rule *,int) | | Configlist_add | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -1016,6 +1242,7 @@ signatureMatches | atl.cpp:427:13:427:23 | AppendBytes | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (wchar_t,int) | CStringT | CStringT | 1 | @@ -1024,6 +1251,7 @@ signatureMatches | atl.cpp:428:13:428:23 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | | atl.cpp:430:10:430:15 | Attach | (wchar_t *) | CStringT | CStringT | 0 | | atl.cpp:440:10:440:19 | LoadString | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 | +| atl.cpp:440:10:440:19 | LoadString | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | | atl.cpp:440:10:440:19 | LoadString | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 | | atl.cpp:440:10:440:19 | LoadString | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 | | atl.cpp:440:10:440:19 | LoadString | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 | @@ -1041,9 +1269,15 @@ signatureMatches | atl.cpp:440:10:440:19 | LoadString | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 | | atl.cpp:440:10:440:19 | LoadString | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 | | atl.cpp:440:10:440:19 | LoadString | (char *,unsigned int) | | utf8_fromunicode | 1 | +| atl.cpp:440:10:440:19 | LoadString | (char *,unsigned int) | | uv_buf_init | 1 | +| atl.cpp:440:10:440:19 | LoadString | (const uv__io_t *,unsigned int) | | uv__io_active | 1 | +| atl.cpp:440:10:440:19 | LoadString | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | +| atl.cpp:440:10:440:19 | LoadString | (gzFile,unsigned int) | | gzbuffer | 1 | +| atl.cpp:440:10:440:19 | LoadString | (z_streamp,unsigned int) | | inflate_fast | 1 | | atl.cpp:441:10:441:19 | LoadString | (UINT) | CComBSTR | LoadString | 0 | | atl.cpp:441:10:441:19 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | Jim_IntHashFunction | 0 | +| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | curlx_uitous | 0 | | atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | ssl3_get_cipher | 0 | | atl.cpp:449:15:449:24 | operator+= | (const CComBSTR &) | CComBSTR | Append | 0 | | atl.cpp:449:15:449:24 | operator+= | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | @@ -1055,8 +1289,26 @@ signatureMatches | atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | Add | 0 | | atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | | atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | +| atl.cpp:546:13:546:15 | Add | (Curl_easy *,bool) | | Curl_creader_set_rewind | 1 | +| atl.cpp:546:13:546:15 | Add | (Curl_easy *,bool) | | Curl_set_in_callback | 1 | | atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 0 | | atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 1 | +| atl.cpp:546:13:546:15 | Add | (curl_socket_t[2],bool) | | Curl_eventfd | 1 | +| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltosi | 0 | +| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltoui | 0 | +| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltous | 0 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,CURLcode,bool) | | Curl_http_done | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,curltime *,bool) | | Curl_timeleft | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 2 | +| atl.cpp:565:13:565:17 | SetAt | (GlobalConfig *,timeval *,bool) | | progress_meter | 2 | +| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltosi | 0 | +| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltoui | 0 | +| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltous | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_STRING_type_new | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_tag2bit | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_tag2str | 0 | @@ -1075,6 +1327,9 @@ signatureMatches | atl.cpp:568:8:568:17 | operator[] | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | c_tolower | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | c_toupper | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | curlx_sitouz | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | evp_pkey_type2name | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | ossl_tolower | 0 | @@ -1082,6 +1337,12 @@ signatureMatches | atl.cpp:568:8:568:17 | operator[] | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | sqlite3_errstr | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | tls13_alert_code | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | uv__accept | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_err_name | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_strerror | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | zError | 0 | | atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | | operator+= | 0 | | atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | CSimpleStringT | operator+= | 0 | | atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | CStringT | operator= | 0 | @@ -1119,6 +1380,9 @@ signatureMatches | atl.cpp:731:8:731:17 | operator[] | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | c_tolower | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | c_toupper | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | curlx_sitouz | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | evp_pkey_type2name | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | ossl_tolower | 0 | @@ -1126,6 +1390,12 @@ signatureMatches | atl.cpp:731:8:731:17 | operator[] | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | sqlite3_errstr | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | tls13_alert_code | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | uv__accept | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_err_name | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_strerror | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | zError | 0 | | atl.cpp:765:10:765:12 | Add | (const deque &,const Allocator &) | deque | deque | 1 | | atl.cpp:765:10:765:12 | Add | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | | atl.cpp:765:10:765:12 | Add | (const list &,const Allocator &) | list | list | 1 | @@ -1152,6 +1422,9 @@ signatureMatches | atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | c_tolower | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | c_toupper | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | curlx_sitouz | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | evp_pkey_type2name | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | ossl_tolower | 0 | @@ -1159,6 +1432,12 @@ signatureMatches | atl.cpp:770:11:770:20 | GetValueAt | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | sqlite3_errstr | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | tls13_alert_code | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv__accept | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_err_name | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_strerror | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | zError | 0 | | atl.cpp:776:10:776:14 | SetAt | (const deque &,const Allocator &) | deque | deque | 1 | | atl.cpp:776:10:776:14 | SetAt | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | | atl.cpp:776:10:776:14 | SetAt | (const list &,const Allocator &) | list | list | 1 | @@ -1181,6 +1460,8 @@ signatureMatches | atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | vector | vector | 2 | | atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | BN_num_bits_word | 0 | | atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | BUF_MEM_new_ex | 0 | +| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | curlx_ultouc | 0 | +| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | curlx_ultous | 0 | | atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | | atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | | atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | @@ -1218,6 +1499,9 @@ signatureMatches | atl.cpp:825:17:825:25 | CreateUrl | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | | atl.cpp:842:17:842:28 | SetExtraInfo | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Jim_StrDup | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -1228,12 +1512,19 @@ signatureMatches | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | last_component | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | opt_path_end | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | opt_progname | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | strhash | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uc_script_byname | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uv__strdup | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:843:17:843:27 | SetHostName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Jim_StrDup | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -1244,12 +1535,19 @@ signatureMatches | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | last_component | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | opt_path_end | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | opt_progname | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | strhash | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uc_script_byname | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uv__strdup | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:844:17:844:27 | SetPassword | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Jim_StrDup | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -1260,12 +1558,19 @@ signatureMatches | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | last_component | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | opt_path_end | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | opt_progname | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | strhash | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uc_script_byname | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uv__strdup | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Jim_StrDup | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -1276,12 +1581,19 @@ signatureMatches | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | last_component | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | opt_path_end | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | opt_progname | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | strhash | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uc_script_byname | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uv__strdup | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Jim_StrDup | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -1292,12 +1604,19 @@ signatureMatches | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | last_component | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | opt_path_end | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | opt_progname | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | strhash | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uc_script_byname | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uv__strdup | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:849:17:849:27 | SetUserName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Jim_StrDup | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -1308,10 +1627,14 @@ signatureMatches | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | last_component | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | opt_path_end | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | opt_progname | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | strhash | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uc_script_byname | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uv__strdup | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | | atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | | atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 2 | @@ -1351,6 +1674,8 @@ signatureMatches | atl.cpp:922:10:922:15 | Append | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:922:10:922:15 | Append | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:922:10:922:15 | Append | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:922:10:922:15 | Append | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:922:10:922:15 | Append | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:922:10:922:15 | Append | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:922:10:922:15 | Append | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:922:10:922:15 | Append | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -1394,6 +1719,17 @@ signatureMatches | atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:922:10:922:15 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:922:10:922:15 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | atl.cpp:922:10:922:15 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -1511,8 +1847,10 @@ signatureMatches | atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:922:10:922:15 | Append | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:922:10:922:15 | Append | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:922:10:922:15 | Append | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:922:10:922:15 | Append | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:922:10:922:15 | Append | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:922:10:922:15 | Append | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:922:10:922:15 | Append | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:922:10:922:15 | Append | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -1579,12 +1917,22 @@ signatureMatches | atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:922:10:922:15 | Append | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:922:10:922:15 | Append | (gzFile,int) | | gzflush | 1 | +| atl.cpp:922:10:922:15 | Append | (gzFile,int) | | gzputc | 1 | | atl.cpp:922:10:922:15 | Append | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:922:10:922:15 | Append | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:922:10:922:15 | Append | (int,int) | | BN_security_bits | 1 | | atl.cpp:922:10:922:15 | Append | (int,int) | | EVP_MD_meth_new | 1 | | atl.cpp:922:10:922:15 | Append | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:922:10:922:15 | Append | (int,int) | | acttab_alloc | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:922:10:922:15 | Append | (rule *,int) | | Configlist_add | 1 | | atl.cpp:922:10:922:15 | Append | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:922:10:922:15 | Append | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -1619,6 +1967,7 @@ signatureMatches | atl.cpp:922:10:922:15 | Append | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:922:10:922:15 | Append | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:922:10:922:15 | Append | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:922:10:922:15 | Append | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:922:10:922:15 | Append | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:922:10:922:15 | Append | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:922:10:922:15 | Append | (wchar_t,int) | CStringT | CStringT | 1 | @@ -1650,6 +1999,11 @@ signatureMatches | atl.cpp:927:17:927:25 | CopyChars | (BIO *,const RSA *,int) | | RSA_print | 2 | | atl.cpp:927:17:927:25 | CopyChars | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | | atl.cpp:927:17:927:25 | CopyChars | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | | atl.cpp:927:17:927:25 | CopyChars | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | | atl.cpp:927:17:927:25 | CopyChars | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | | atl.cpp:927:17:927:25 | CopyChars | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | @@ -1692,6 +2046,8 @@ signatureMatches | atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | | atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 1 | | atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | | atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | | atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | | atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | @@ -1792,6 +2148,7 @@ signatureMatches | atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | @@ -1821,6 +2178,7 @@ signatureMatches | atl.cpp:927:17:927:25 | CopyChars | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 1 | | atl.cpp:927:17:927:25 | CopyChars | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | CRYPTO_strdup | 1 | | atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | CRYPTO_strdup | 2 | @@ -1833,9 +2191,16 @@ signatureMatches | atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (gzFile,char *,int) | | gzgets | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (gzFile,int,int) | | gzsetparams | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (gzFile,off64_t,int) | | gzseek64 | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (gzFile,off_t,int) | | gzseek | 2 | | atl.cpp:927:17:927:25 | CopyChars | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | | atl.cpp:927:17:927:25 | CopyChars | (int,int,int) | | ASN1_object_size | 2 | | atl.cpp:927:17:927:25 | CopyChars | (int,int,int) | | EVP_CIPHER_meth_new | 2 | @@ -1873,8 +2238,16 @@ signatureMatches | atl.cpp:927:17:927:25 | CopyChars | (unsigned int,int,int) | | ossl_blob_length | 2 | | atl.cpp:927:17:927:25 | CopyChars | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | | atl.cpp:927:17:927:25 | CopyChars | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv_stream_t *,int,int) | | uv__stream_open | 2 | | atl.cpp:927:17:927:25 | CopyChars | (void *,const char *,int) | | CRYPTO_secure_free | 1 | | atl.cpp:927:17:927:25 | CopyChars | (void *,const char *,int) | | CRYPTO_secure_free | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | | atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,const BIGNUM *,const BIGNUM *,int) | | ossl_rsa_check_pminusq_diff | 3 | | atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_bntest_rand | 3 | | atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_priv_rand | 3 | @@ -1891,6 +2264,7 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (BIO *,const unsigned char *,long,int) | | ASN1_parse | 3 | | atl.cpp:928:17:928:25 | CopyChars | (BIO *,int,const ASN1_TYPE *,int) | | ossl_print_attribute_value | 3 | | atl.cpp:928:17:928:25 | CopyChars | (BIO *,void *,int,int) | | app_http_tls_cb | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 3 | | atl.cpp:928:17:928:25 | CopyChars | (CERT *,const int *,size_t,int) | | tls1_set_sigalgs | 3 | | atl.cpp:928:17:928:25 | CopyChars | (CERT *,const uint16_t *,size_t,int) | | tls1_set_raw_sigalgs | 3 | | atl.cpp:928:17:928:25 | CopyChars | (DH *,OSSL_PARAM_BLD *,OSSL_PARAM[],int) | | ossl_dh_key_todata | 3 | @@ -1908,6 +2282,11 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_AppendString | 3 | | atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_ListJoin | 2 | | atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_ListJoin | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 2 | +| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 2 | +| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 3 | | atl.cpp:928:17:928:25 | CopyChars | (OSSL_CMP_CTX *,const OSSL_CMP_MSG *,ossl_cmp_allow_unprotected_cb_t,int) | | ossl_cmp_msg_check_update | 3 | | atl.cpp:928:17:928:25 | CopyChars | (OSSL_CMP_CTX *,const OSSL_CMP_PKISI *,const OSSL_CRMF_CERTID *,int) | | ossl_cmp_rp_new | 3 | | atl.cpp:928:17:928:25 | CopyChars | (OSSL_LIB_CTX *,const char *,OSSL_PARAM *,int) | | OSSL_PROVIDER_try_load_ex | 3 | @@ -1935,6 +2314,8 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | | atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | | atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 3 | | atl.cpp:928:17:928:25 | CopyChars | (char *,int,const ASN1_OBJECT *,int) | | OBJ_obj2txt | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const DH *,unsigned char **,size_t,int) | | ossl_dh_key2buf | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const EVP_MD *,const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_v2_new_init | 3 | @@ -1942,6 +2323,7 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (const X509_NAME *,int,char *,int) | | X509_NAME_get_text_by_NID | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,BIO *,BIO *,int) | | X509_CRL_load_http | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,BIO *,BIO *,int) | | X509_load_http | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,char **,int) | | idn2_register_ul | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 2 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,int,int,int) | | append_str | 3 | @@ -1950,6 +2332,7 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,sqlite3_filename,const char *,int) | | sqlite3_uri_boolean | 2 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,sqlite3_filename,const char *,int) | | sqlite3_uri_boolean | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,RC2_KEY *,int) | | RC2_ecb_encrypt | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,const BF_KEY *,int) | | BF_ecb_encrypt | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,const CAST_KEY *,int) | | CAST_ecb_encrypt | 3 | @@ -1957,12 +2340,22 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 1 | | atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 2 | | atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 3 | | atl.cpp:928:17:928:25 | CopyChars | (int,ENGINE *,const unsigned char *,int) | | EVP_PKEY_new_mac_key | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (int,const void *,const char *,int) | | Curl_ip2addr | 2 | +| atl.cpp:928:17:928:25 | CopyChars | (int,const void *,const char *,int) | | Curl_ip2addr | 3 | | atl.cpp:928:17:928:25 | CopyChars | (int,int *,int *,int) | | sqlite3_status | 3 | | atl.cpp:928:17:928:25 | CopyChars | (int,int,const unsigned char *,int) | | PKCS5_pbe_set | 3 | | atl.cpp:928:17:928:25 | CopyChars | (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 3 | | atl.cpp:928:17:928:25 | CopyChars | (sqlite3_blob *,const void *,int,int) | | sqlite3_blob_write | 3 | | atl.cpp:928:17:928:25 | CopyChars | (sqlite3_blob *,void *,int,int) | | sqlite3_blob_read | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 2 | +| atl.cpp:928:17:928:25 | CopyChars | (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 3 | | atl.cpp:928:17:928:25 | CopyChars | (stack_st_PKCS12_SAFEBAG **,int,const unsigned char *,int) | | PKCS12_add_secret | 3 | | atl.cpp:928:17:928:25 | CopyChars | (uint8_t *,unsigned char *,uint64_t,int) | | ossl_quic_vlint_encode_n | 3 | | atl.cpp:928:17:928:25 | CopyChars | (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 3 | @@ -1974,6 +2367,8 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_none | 3 | | atl.cpp:928:17:928:25 | CopyChars | (unsigned long *,unsigned long *,unsigned long *,int) | | bn_mul_low_normal | 3 | | atl.cpp:928:17:928:25 | CopyChars | (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 3 | | atl.cpp:928:17:928:25 | CopyChars | (void *,const ASN1_ITEM *,int,int) | | PKCS12_item_pack_safebag | 3 | | atl.cpp:928:17:928:25 | CopyChars | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 1 | | atl.cpp:928:17:928:25 | CopyChars | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 2 | @@ -2003,6 +2398,11 @@ signatureMatches | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,const RSA *,int) | | RSA_print | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | @@ -2045,6 +2445,8 @@ signatureMatches | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 1 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | @@ -2145,6 +2547,7 @@ signatureMatches | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | @@ -2174,6 +2577,7 @@ signatureMatches | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 1 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | CRYPTO_strdup | 1 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | CRYPTO_strdup | 2 | @@ -2186,9 +2590,16 @@ signatureMatches | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,char *,int) | | gzgets | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,int,int) | | gzsetparams | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,off64_t,int) | | gzseek64 | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,off_t,int) | | gzseek | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,int,int) | | ASN1_object_size | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,int,int) | | EVP_CIPHER_meth_new | 2 | @@ -2226,8 +2637,16 @@ signatureMatches | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned int,int,int) | | ossl_blob_length | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_stream_t *,int,int) | | uv__stream_open | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,const char *,int) | | CRYPTO_secure_free | 1 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,const char *,int) | | CRYPTO_secure_free | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | | atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_STRING_type_new | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_tag2bit | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_tag2str | 0 | @@ -2246,6 +2665,9 @@ signatureMatches | atl.cpp:931:11:931:15 | GetAt | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | c_tolower | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | c_toupper | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | curlx_sitouz | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | evp_pkey_type2name | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | ossl_tolower | 0 | @@ -2253,6 +2675,12 @@ signatureMatches | atl.cpp:931:11:931:15 | GetAt | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | sqlite3_errstr | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | tls13_alert_code | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | uv__accept | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_err_name | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_strerror | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | zError | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_STRING_type_new | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_tag2bit | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_tag2str | 0 | @@ -2271,6 +2699,9 @@ signatureMatches | atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | c_tolower | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | c_toupper | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | curlx_sitouz | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | evp_pkey_type2name | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | ossl_tolower | 0 | @@ -2278,6 +2709,12 @@ signatureMatches | atl.cpp:932:11:932:19 | GetBuffer | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | sqlite3_errstr | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | tls13_alert_code | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv__accept | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_err_name | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_strerror | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | zError | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_STRING_type_new | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_tag2bit | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_tag2str | 0 | @@ -2296,6 +2733,9 @@ signatureMatches | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | c_tolower | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | c_toupper | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | curlx_sitouz | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | evp_pkey_type2name | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ossl_tolower | 0 | @@ -2303,7 +2743,14 @@ signatureMatches | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | sqlite3_errstr | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | tls13_alert_code | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv__accept | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_err_name | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_strerror | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | zError | 0 | | atl.cpp:938:10:938:14 | SetAt | (XCHAR,XCHAR) | CStringT | Replace | 1 | +| atl.cpp:938:10:938:14 | SetAt | (char **,char) | | Curl_str_single | 1 | | atl.cpp:938:10:938:14 | SetAt | (const CStringT &,char) | | operator+ | 1 | | atl.cpp:938:10:938:14 | SetAt | (int,XCHAR) | CStringT | Insert | 0 | | atl.cpp:938:10:938:14 | SetAt | (int,XCHAR) | CStringT | Insert | 1 | @@ -2325,6 +2772,8 @@ signatureMatches | atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:939:10:939:18 | SetString | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:939:10:939:18 | SetString | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:939:10:939:18 | SetString | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:939:10:939:18 | SetString | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:939:10:939:18 | SetString | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:939:10:939:18 | SetString | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:939:10:939:18 | SetString | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -2368,6 +2817,17 @@ signatureMatches | atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:939:10:939:18 | SetString | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:939:10:939:18 | SetString | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | atl.cpp:939:10:939:18 | SetString | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -2485,8 +2945,10 @@ signatureMatches | atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:939:10:939:18 | SetString | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:939:10:939:18 | SetString | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:939:10:939:18 | SetString | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:939:10:939:18 | SetString | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:939:10:939:18 | SetString | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:939:10:939:18 | SetString | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:939:10:939:18 | SetString | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:939:10:939:18 | SetString | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -2553,12 +3015,22 @@ signatureMatches | atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:939:10:939:18 | SetString | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:939:10:939:18 | SetString | (gzFile,int) | | gzflush | 1 | +| atl.cpp:939:10:939:18 | SetString | (gzFile,int) | | gzputc | 1 | | atl.cpp:939:10:939:18 | SetString | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:939:10:939:18 | SetString | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:939:10:939:18 | SetString | (int,int) | | BN_security_bits | 1 | | atl.cpp:939:10:939:18 | SetString | (int,int) | | EVP_MD_meth_new | 1 | | atl.cpp:939:10:939:18 | SetString | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:939:10:939:18 | SetString | (int,int) | | acttab_alloc | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:939:10:939:18 | SetString | (rule *,int) | | Configlist_add | 1 | | atl.cpp:939:10:939:18 | SetString | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:939:10:939:18 | SetString | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -2593,6 +3065,7 @@ signatureMatches | atl.cpp:939:10:939:18 | SetString | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:939:10:939:18 | SetString | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:939:10:939:18 | SetString | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:939:10:939:18 | SetString | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:939:10:939:18 | SetString | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:939:10:939:18 | SetString | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:939:10:939:18 | SetString | (wchar_t,int) | CStringT | CStringT | 1 | @@ -2617,6 +3090,9 @@ signatureMatches | atl.cpp:942:11:942:20 | operator[] | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | c_tolower | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | c_toupper | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | curlx_sitouz | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | evp_pkey_type2name | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | ossl_tolower | 0 | @@ -2624,6 +3100,12 @@ signatureMatches | atl.cpp:942:11:942:20 | operator[] | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | sqlite3_errstr | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | tls13_alert_code | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | uv__accept | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_err_name | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_strerror | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | zError | 0 | | atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | | operator+= | 0 | | atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | CStringT | CStringT | 0 | | atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | CStringT | operator= | 0 | @@ -2672,6 +3154,8 @@ signatureMatches | atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -2715,6 +3199,17 @@ signatureMatches | atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -2832,9 +3327,11 @@ signatureMatches | atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 0 | | atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -2901,12 +3398,22 @@ signatureMatches | atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (gzFile,int) | | gzflush | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (gzFile,int) | | gzputc | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | BN_security_bits | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | EVP_MD_meth_new | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | acttab_alloc | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (rule *,int) | | Configlist_add | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -2941,6 +3448,7 @@ signatureMatches | atl.cpp:1049:5:1049:12 | CStringT | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 1 | @@ -2962,6 +3470,8 @@ signatureMatches | atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -3005,6 +3515,17 @@ signatureMatches | atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -3122,8 +3643,10 @@ signatureMatches | atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -3190,12 +3713,22 @@ signatureMatches | atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (gzFile,int) | | gzflush | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (gzFile,int) | | gzputc | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | BN_security_bits | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | EVP_MD_meth_new | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | acttab_alloc | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (rule *,int) | | Configlist_add | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -3230,6 +3763,7 @@ signatureMatches | atl.cpp:1050:5:1050:12 | CStringT | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 0 | @@ -3277,6 +3811,9 @@ signatureMatches | atl.cpp:1072:14:1072:17 | Left | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | c_tolower | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | c_toupper | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | curlx_sitouz | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | evp_pkey_type2name | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | ossl_tolower | 0 | @@ -3284,9 +3821,16 @@ signatureMatches | atl.cpp:1072:14:1072:17 | Left | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | sqlite3_errstr | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | tls13_alert_code | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | uv__accept | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_err_name | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_strerror | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | zError | 0 | | atl.cpp:1075:10:1075:19 | LoadString | (UINT) | CComBSTR | LoadString | 0 | | atl.cpp:1075:10:1075:19 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | Jim_IntHashFunction | 0 | +| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | curlx_uitous | 0 | | atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | ssl3_get_cipher | 0 | | atl.cpp:1079:14:1079:16 | Mid | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | atl.cpp:1079:14:1079:16 | Mid | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | @@ -3306,6 +3850,8 @@ signatureMatches | atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:1079:14:1079:16 | Mid | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:1079:14:1079:16 | Mid | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:1079:14:1079:16 | Mid | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:1079:14:1079:16 | Mid | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:1079:14:1079:16 | Mid | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -3349,6 +3895,17 @@ signatureMatches | atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:1079:14:1079:16 | Mid | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:1079:14:1079:16 | Mid | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | atl.cpp:1079:14:1079:16 | Mid | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -3466,8 +4023,10 @@ signatureMatches | atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:1079:14:1079:16 | Mid | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:1079:14:1079:16 | Mid | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:1079:14:1079:16 | Mid | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:1079:14:1079:16 | Mid | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:1079:14:1079:16 | Mid | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:1079:14:1079:16 | Mid | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -3534,6 +4093,9 @@ signatureMatches | atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (gzFile,int) | | gzflush | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (gzFile,int) | | gzputc | 1 | | atl.cpp:1079:14:1079:16 | Mid | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:1079:14:1079:16 | Mid | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:1079:14:1079:16 | Mid | (int,int) | | BN_security_bits | 0 | @@ -3544,6 +4106,13 @@ signatureMatches | atl.cpp:1079:14:1079:16 | Mid | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:1079:14:1079:16 | Mid | (int,int) | | acttab_alloc | 0 | | atl.cpp:1079:14:1079:16 | Mid | (int,int) | | acttab_alloc | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:1079:14:1079:16 | Mid | (rule *,int) | | Configlist_add | 1 | | atl.cpp:1079:14:1079:16 | Mid | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:1079:14:1079:16 | Mid | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -3578,6 +4147,7 @@ signatureMatches | atl.cpp:1079:14:1079:16 | Mid | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:1079:14:1079:16 | Mid | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:1079:14:1079:16 | Mid | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:1079:14:1079:16 | Mid | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:1079:14:1079:16 | Mid | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:1079:14:1079:16 | Mid | (wchar_t,int) | CStringT | CStringT | 1 | @@ -3606,6 +4176,9 @@ signatureMatches | atl.cpp:1083:14:1083:18 | Right | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | c_tolower | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | c_toupper | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | curlx_sitouz | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | evp_pkey_type2name | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | ossl_tolower | 0 | @@ -3613,6 +4186,12 @@ signatureMatches | atl.cpp:1083:14:1083:18 | Right | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | sqlite3_errstr | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | tls13_alert_code | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | uv__accept | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_err_name | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_strerror | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | zError | 0 | | atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | | operator+= | 0 | | atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | CSimpleStringT | operator+= | 0 | | atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | CStringT | operator= | 0 | @@ -3639,6 +4218,8 @@ signatureMatches | atl.cpp:1231:5:1231:12 | CStrBufT | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | | atl.cpp:1231:5:1231:12 | CStrBufT | (unsigned char *,int,unsigned long) | | UTF8_putc | 1 | | atl.cpp:1231:5:1231:12 | CStrBufT | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | +| bsd.cpp:12:5:12:10 | accept | (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 2 | +| bsd.cpp:12:5:12:10 | accept | (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 2 | | bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_CipherFinal | 2 | | bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_CipherFinal_ex | 2 | | bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_DecryptFinal | 2 | @@ -3655,6 +4236,7 @@ signatureMatches | bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetIndex | 2 | | bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetReturnCode | 2 | | bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetSourceInfo | 2 | +| bsd.cpp:12:5:12:10 | accept | (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 2 | | bsd.cpp:12:5:12:10 | accept | (OPENSSL_STACK *,const void *,int *) | | OPENSSL_sk_find_all | 2 | | bsd.cpp:12:5:12:10 | accept | (OSSL_DECODER *,const char *,int *) | | ossl_decoder_fast_is_a | 2 | | bsd.cpp:12:5:12:10 | accept | (OSSL_LIB_CTX *,uint32_t,int *) | | ossl_rand_uniform_uint32 | 2 | @@ -3676,8 +4258,18 @@ signatureMatches | bsd.cpp:12:5:12:10 | accept | (const X509 *,EVP_MD **,int *) | | X509_digest_sig | 2 | | bsd.cpp:12:5:12:10 | accept | (const char *,const OPT_PAIR *,int *) | | opt_pair | 2 | | bsd.cpp:12:5:12:10 | accept | (const unsigned char **,unsigned int,int *) | | ossl_b2i | 2 | +| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 1 | +| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 2 | +| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 1 | +| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 2 | +| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 1 | +| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 2 | +| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 1 | +| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 2 | | bsd.cpp:12:5:12:10 | accept | (int,const char **,int *) | | sqlite3_keyword_name | 2 | | bsd.cpp:12:5:12:10 | accept | (int,int,int *) | | ssl_set_version_bound | 2 | +| bsd.cpp:12:5:12:10 | accept | (uv_handle_t *,int,int *) | | uv__socket_sockopt | 2 | +| bsd.cpp:12:5:12:10 | accept | (z_streamp,unsigned int *,int *) | | deflatePending | 2 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_STRING_type_new | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_tag2bit | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_tag2str | 0 | @@ -3696,6 +4288,9 @@ signatureMatches | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_TRUST_get0 | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_TRUST_get_by_id | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | c_tolower | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | c_toupper | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | curlx_sitouz | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | evp_pkey_type2name | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ossl_cmp_bodytype_to_string | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ossl_tolower | 0 | @@ -3703,6 +4298,15 @@ signatureMatches | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | sqlite3_compileoption_get | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | sqlite3_errstr | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | tls13_alert_code | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv__accept | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_err_name | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_get_osfhandle | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_strerror | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_translate_sys_error | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | zError | 0 | +| constructor_delegation.cpp:9:2:9:8 | MyValue | (Curl_easy *,bool) | | Curl_creader_set_rewind | 1 | +| constructor_delegation.cpp:9:2:9:8 | MyValue | (Curl_easy *,bool) | | Curl_set_in_callback | 1 | +| constructor_delegation.cpp:9:2:9:8 | MyValue | (curl_socket_t[2],bool) | | Curl_eventfd | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -3721,6 +4325,8 @@ signatureMatches | constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | TXT_DB_read | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (CURL *,int) | | curl_easy_pause | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (DH *,int) | | DH_clear_flags | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (DH *,int) | | DH_set_flags | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -3764,6 +4370,17 @@ signatureMatches | constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (LPCOLESTR,int) | CComBSTR | Append | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -3881,8 +4498,10 @@ signatureMatches | constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (acttab *,int) | | acttab_insert | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (char *,int) | | Curl_str2addr | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (char *,int) | | PEM_proc_type | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (char,int) | CStringT | CStringT | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIGNUM *,int) | | BN_get_flags | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -3949,6 +4568,9 @@ signatureMatches | constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (gzFile,int) | | gzflush | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (gzFile,int) | | gzputc | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (int *,int) | | X509_PURPOSE_set | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (int *,int) | | X509_TRUST_set | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | BN_security_bits | 0 | @@ -3959,6 +4581,13 @@ signatureMatches | constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | EVP_PKEY_meth_new | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | acttab_alloc | 0 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | acttab_alloc | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (rule *,int) | | Configlist_add | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (rule *,int) | | Configlist_addbasis | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -3993,9 +4622,19 @@ signatureMatches | constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned char *,int) | | RAND_priv_bytes | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (void *,int) | | DSO_dsobyaddr | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (void *,int) | | sqlite3_realloc | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (wchar_t,int) | CStringT | CStringT | 1 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,CURLcode,bool) | | Curl_http_done | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,curltime *,bool) | | Curl_timeleft | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (GlobalConfig *,timeval *,bool) | | progress_meter | 2 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -4014,6 +4653,8 @@ signatureMatches | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | TXT_DB_read | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CURL *,int) | | curl_easy_pause | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH *,int) | | DH_clear_flags | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH *,int) | | DH_set_flags | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -4057,6 +4698,17 @@ signatureMatches | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LPCOLESTR,int) | CComBSTR | Append | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -4174,8 +4826,10 @@ signatureMatches | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (acttab *,int) | | acttab_insert | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char *,int) | | Curl_str2addr | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char *,int) | | PEM_proc_type | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char,int) | CStringT | CStringT | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIGNUM *,int) | | BN_get_flags | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -4242,12 +4896,22 @@ signatureMatches | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (gzFile,int) | | gzflush | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (gzFile,int) | | gzputc | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int *,int) | | X509_PURPOSE_set | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int *,int) | | X509_TRUST_set | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | BN_security_bits | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | EVP_MD_meth_new | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | EVP_PKEY_meth_new | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | acttab_alloc | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (rule *,int) | | Configlist_add | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (rule *,int) | | Configlist_addbasis | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -4282,6 +4946,7 @@ signatureMatches | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned char *,int) | | RAND_priv_bytes | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (void *,int) | | DSO_dsobyaddr | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (void *,int) | | sqlite3_realloc | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (wchar_t,int) | CStringT | CStringT | 1 | @@ -4303,6 +4968,9 @@ signatureMatches | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_TRUST_get0 | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_TRUST_get_by_id | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | c_tolower | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | c_toupper | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | curlx_sitouz | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | evp_pkey_type2name | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ossl_cmp_bodytype_to_string | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ossl_tolower | 0 | @@ -4310,6 +4978,12 @@ signatureMatches | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | sqlite3_compileoption_get | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | sqlite3_errstr | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | tls13_alert_code | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv__accept | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_err_name | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_get_osfhandle | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_strerror | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_translate_sys_error | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | zError | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_STRING_type_new | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_tag2bit | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_tag2str | 0 | @@ -4328,6 +5002,9 @@ signatureMatches | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_TRUST_get0 | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_TRUST_get_by_id | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | c_tolower | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | c_toupper | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | curlx_sitouz | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | evp_pkey_type2name | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ossl_cmp_bodytype_to_string | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ossl_tolower | 0 | @@ -4335,9 +5012,18 @@ signatureMatches | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | sqlite3_compileoption_get | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | sqlite3_errstr | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | tls13_alert_code | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv__accept | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_err_name | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_get_osfhandle | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_strerror | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_translate_sys_error | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | zError | 0 | +| file://:0:0:0:0 | operator delete | (void *) | | Curl_cpool_upkeep | 0 | | file://:0:0:0:0 | operator delete | (void *) | | ossl_kdf_data_new | 0 | | file://:0:0:0:0 | operator new | (unsigned long) | | BN_num_bits_word | 0 | | file://:0:0:0:0 | operator new | (unsigned long) | | BUF_MEM_new_ex | 0 | +| file://:0:0:0:0 | operator new | (unsigned long) | | curlx_ultouc | 0 | +| file://:0:0:0:0 | operator new | (unsigned long) | | curlx_ultous | 0 | | format.cpp:5:5:5:12 | snprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 2 | | format.cpp:5:5:5:12 | snprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 3 | | format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 0 | @@ -4346,11 +5032,14 @@ signatureMatches | format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 | | format.cpp:5:5:5:12 | snprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 2 | | format.cpp:5:5:5:12 | snprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 | +| format.cpp:6:5:6:11 | sprintf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | | format.cpp:6:5:6:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | | format.cpp:6:5:6:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | +| format.cpp:6:5:6:11 | sprintf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | | format.cpp:7:5:7:12 | swprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 3 | | format.cpp:7:5:7:12 | swprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 | | format.cpp:7:5:7:12 | swprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 3 | | format.cpp:14:5:14:13 | vsnprintf | (BIO *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_bio_CMS | 3 | | format.cpp:14:5:14:13 | vsnprintf | (BIO *,DH **,pem_password_cb *,void *) | | PEM_read_bio_DHparams | 3 | | format.cpp:14:5:14:13 | vsnprintf | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAPrivateKey | 3 | @@ -4378,6 +5067,11 @@ signatureMatches | format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8 | 3 | | format.cpp:14:5:14:13 | vsnprintf | (BIO *,size_t,..(*)(..),void *) | | ossl_quic_demux_new | 3 | | format.cpp:14:5:14:13 | vsnprintf | (BIO *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read_bio | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 2 | +| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 3 | | format.cpp:14:5:14:13 | vsnprintf | (DSO *,int,long,void *) | | DSO_ctrl | 3 | | format.cpp:14:5:14:13 | vsnprintf | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 3 | | format.cpp:14:5:14:13 | vsnprintf | (FILE *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_CMS | 3 | @@ -4408,6 +5102,7 @@ signatureMatches | format.cpp:14:5:14:13 | vsnprintf | (FILE *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read | 3 | | format.cpp:14:5:14:13 | vsnprintf | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 3 | | format.cpp:14:5:14:13 | vsnprintf | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 3 | | format.cpp:14:5:14:13 | vsnprintf | (OCB128_CONTEXT *,OCB128_CONTEXT *,void *,void *) | | CRYPTO_ocb128_copy_ctx | 3 | | format.cpp:14:5:14:13 | vsnprintf | (OPENSSL_LHASH *,OPENSSL_LH_DOALL_FUNCARG_THUNK,OPENSSL_LH_DOALL_FUNCARG,void *) | | OPENSSL_LH_doall_arg_thunk | 3 | | format.cpp:14:5:14:13 | vsnprintf | (OSSL_PROVIDER *,int,..(*)(..),void *) | | evp_names_do_all | 3 | @@ -4432,12 +5127,22 @@ signatureMatches | format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 1 | | format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 2 | | format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 0 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 1 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 2 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | Curl_mime_read | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_header_cb | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_read_cb | 3 | | format.cpp:14:5:14:13 | vsnprintf | (const OSSL_NAMEMAP *,int,..(*)(..),void *) | | ossl_namemap_doall_names | 3 | | format.cpp:14:5:14:13 | vsnprintf | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 2 | | format.cpp:14:5:14:13 | vsnprintf | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 3 | | format.cpp:14:5:14:13 | vsnprintf | (int,int,const char *,va_list) | | ERR_vset_error | 2 | | format.cpp:14:5:14:13 | vsnprintf | (int,int,const char *,va_list) | | ERR_vset_error | 3 | | format.cpp:14:5:14:13 | vsnprintf | (int,unsigned long,..(*)(..),void *) | | RSA_generate_key | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 3 | | format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_recover_init_sql | 3 | | format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_rtree_geometry_callback | 3 | | format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,const sqlite3_module *,void *) | | sqlite3_create_module | 3 | @@ -4452,9 +5157,14 @@ signatureMatches | format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 | | format.cpp:16:5:16:13 | mysprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 2 | | format.cpp:16:5:16:13 | mysprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 | +| format.cpp:28:5:28:10 | sscanf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | | format.cpp:28:5:28:10 | sscanf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | | format.cpp:28:5:28:10 | sscanf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | +| format.cpp:28:5:28:10 | sscanf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | | format.cpp:142:8:142:13 | strlen | (const char *) | | BIO_gethostbyname | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_copy_header_value | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_get_scheme_handler | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_getdate_capped | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | Jim_StrDup | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | OPENSSL_LH_strhash | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -4465,16 +5175,23 @@ signatureMatches | format.cpp:142:8:142:13 | strlen | (const char *) | | X509_LOOKUP_meth_new | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | a2i_IPADDRESS | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | a2i_IPADDRESS_NC | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | last_component | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | opt_path_end | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | opt_progname | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | ossl_lh_strcasehash | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | strhash | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | uc_script_byname | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | uv__strdup | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | map.cpp:8:6:8:9 | sink | (char *) | | SRP_VBASE_new | 0 | | map.cpp:8:6:8:9 | sink | (char *) | | defossilize | 0 | | map.cpp:8:6:8:9 | sink | (char *) | | make_uppercase | 0 | | map.cpp:8:6:8:9 | sink | (char *) | | next_item | 0 | | map.cpp:8:6:8:9 | sink | (char *) | CStringT | CStringT | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | BIO_gethostbyname | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_copy_header_value | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_get_scheme_handler | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_getdate_capped | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | Jim_StrDup | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | OPENSSL_LH_strhash | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -4485,10 +5202,14 @@ signatureMatches | map.cpp:9:6:9:9 | sink | (const char *) | | X509_LOOKUP_meth_new | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | a2i_IPADDRESS | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | a2i_IPADDRESS_NC | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | last_component | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | opt_path_end | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | opt_progname | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | ossl_lh_strcasehash | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | strhash | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | uc_script_byname | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | uv__strdup | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_STRING_type_new | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_tag2bit | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_tag2str | 0 | @@ -4507,6 +5228,9 @@ signatureMatches | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_TRUST_get0 | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_TRUST_get_by_id | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | c_tolower | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | c_toupper | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | curlx_sitouz | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | evp_pkey_type2name | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ossl_cmp_bodytype_to_string | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ossl_tolower | 0 | @@ -4514,6 +5238,12 @@ signatureMatches | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | sqlite3_compileoption_get | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | sqlite3_errstr | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | tls13_alert_code | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv__accept | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_err_name | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_get_osfhandle | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_strerror | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_translate_sys_error | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | zError | 0 | | set.cpp:8:6:8:9 | sink | (char *) | | SRP_VBASE_new | 0 | | set.cpp:8:6:8:9 | sink | (char *) | | defossilize | 0 | | set.cpp:8:6:8:9 | sink | (char *) | | make_uppercase | 0 | @@ -4537,6 +5267,9 @@ signatureMatches | smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get0 | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | c_tolower | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | c_toupper | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | curlx_sitouz | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | evp_pkey_type2name | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | ossl_tolower | 0 | @@ -4544,6 +5277,12 @@ signatureMatches | smart_pointer.cpp:4:6:4:9 | sink | (int) | | sqlite3_compileoption_get | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | sqlite3_errstr | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | tls13_alert_code | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv__accept | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_err_name | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_get_osfhandle | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_strerror | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_translate_sys_error | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | zError | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_tag2str | 0 | @@ -4562,6 +5301,9 @@ signatureMatches | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ossl_tolower | 0 | @@ -4569,6 +5311,12 @@ signatureMatches | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | zError | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_tag2str | 0 | @@ -4587,6 +5335,9 @@ signatureMatches | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ossl_tolower | 0 | @@ -4594,6 +5345,12 @@ signatureMatches | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | zError | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_tag2str | 0 | @@ -4612,6 +5369,9 @@ signatureMatches | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ossl_tolower | 0 | @@ -4619,6 +5379,12 @@ signatureMatches | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | zError | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_tag2str | 0 | @@ -4637,6 +5403,9 @@ signatureMatches | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ossl_tolower | 0 | @@ -4644,6 +5413,12 @@ signatureMatches | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | zError | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_tag2str | 0 | @@ -4662,6 +5437,9 @@ signatureMatches | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ossl_tolower | 0 | @@ -4669,6 +5447,12 @@ signatureMatches | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | zError | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_tag2str | 0 | @@ -4687,6 +5471,9 @@ signatureMatches | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ossl_tolower | 0 | @@ -4694,6 +5481,12 @@ signatureMatches | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | zError | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_tag2str | 0 | @@ -4712,6 +5505,9 @@ signatureMatches | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ossl_tolower | 0 | @@ -4719,6 +5515,12 @@ signatureMatches | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | zError | 0 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -4737,6 +5539,8 @@ signatureMatches | standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | TXT_DB_read | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (CURL *,int) | | curl_easy_pause | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (DH *,int) | | DH_clear_flags | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (DH *,int) | | DH_set_flags | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -4780,6 +5584,17 @@ signatureMatches | standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (LPCOLESTR,int) | CComBSTR | Append | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -4897,8 +5712,10 @@ signatureMatches | standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (acttab *,int) | | acttab_insert | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (char *,int) | | Curl_str2addr | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (char *,int) | | PEM_proc_type | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (char,int) | CStringT | CStringT | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIGNUM *,int) | | BN_get_flags | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -4965,12 +5782,22 @@ signatureMatches | standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (gzFile,int) | | gzflush | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (gzFile,int) | | gzputc | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (int *,int) | | X509_PURPOSE_set | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (int *,int) | | X509_TRUST_set | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | BN_security_bits | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | EVP_MD_meth_new | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | EVP_PKEY_meth_new | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | acttab_alloc | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (rule *,int) | | Configlist_add | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (rule *,int) | | Configlist_addbasis | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -5005,6 +5832,7 @@ signatureMatches | standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned char *,int) | | RAND_priv_bytes | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (void *,int) | | DSO_dsobyaddr | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (void *,int) | | sqlite3_realloc | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (wchar_t,int) | CStringT | CStringT | 1 | @@ -5098,6 +5926,21 @@ signatureMatches | stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | @@ -5133,6 +5976,36 @@ signatureMatches | stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | ASN1_STRING_type_new | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | ASN1_tag2bit | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | ASN1_tag2str | 0 | @@ -5151,6 +6024,9 @@ signatureMatches | stl.h:54:12:54:21 | operator-- | (int) | | X509_TRUST_get0 | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | c_tolower | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | c_toupper | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | curlx_sitouz | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | evp_pkey_type2name | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | ossl_cmp_bodytype_to_string | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | ossl_tolower | 0 | @@ -5158,6 +6034,12 @@ signatureMatches | stl.h:54:12:54:21 | operator-- | (int) | | sqlite3_compileoption_get | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | sqlite3_errstr | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | tls13_alert_code | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | uv__accept | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | uv_err_name | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | uv_get_osfhandle | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | uv_strerror | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | uv_translate_sys_error | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | zError | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | ASN1_STRING_type_new | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | ASN1_tag2bit | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | ASN1_tag2str | 0 | @@ -5176,6 +6058,9 @@ signatureMatches | stl.h:59:12:59:20 | operator+ | (int) | | X509_TRUST_get0 | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | c_tolower | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | c_toupper | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | curlx_sitouz | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | evp_pkey_type2name | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | ossl_cmp_bodytype_to_string | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | ossl_tolower | 0 | @@ -5183,6 +6068,12 @@ signatureMatches | stl.h:59:12:59:20 | operator+ | (int) | | sqlite3_compileoption_get | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | sqlite3_errstr | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | tls13_alert_code | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | uv__accept | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | uv_err_name | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | uv_get_osfhandle | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | uv_strerror | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | uv_translate_sys_error | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | zError | 0 | | stl.h:60:12:60:20 | operator- | (int) | | ASN1_STRING_type_new | 0 | | stl.h:60:12:60:20 | operator- | (int) | | ASN1_tag2bit | 0 | | stl.h:60:12:60:20 | operator- | (int) | | ASN1_tag2str | 0 | @@ -5201,6 +6092,9 @@ signatureMatches | stl.h:60:12:60:20 | operator- | (int) | | X509_TRUST_get0 | 0 | | stl.h:60:12:60:20 | operator- | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:60:12:60:20 | operator- | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | c_tolower | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | c_toupper | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | curlx_sitouz | 0 | | stl.h:60:12:60:20 | operator- | (int) | | evp_pkey_type2name | 0 | | stl.h:60:12:60:20 | operator- | (int) | | ossl_cmp_bodytype_to_string | 0 | | stl.h:60:12:60:20 | operator- | (int) | | ossl_tolower | 0 | @@ -5208,6 +6102,12 @@ signatureMatches | stl.h:60:12:60:20 | operator- | (int) | | sqlite3_compileoption_get | 0 | | stl.h:60:12:60:20 | operator- | (int) | | sqlite3_errstr | 0 | | stl.h:60:12:60:20 | operator- | (int) | | tls13_alert_code | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | uv__accept | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | uv_err_name | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | uv_get_osfhandle | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | uv_strerror | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | uv_translate_sys_error | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | zError | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | ASN1_STRING_type_new | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | ASN1_STRING_type_new | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | ASN1_tag2bit | 0 | @@ -5244,6 +6144,12 @@ signatureMatches | stl.h:61:13:61:22 | operator+= | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | X509_VERIFY_PARAM_get0 | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | c_tolower | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | c_tolower | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | c_toupper | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | c_toupper | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | curlx_sitouz | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | curlx_sitouz | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | evp_pkey_type2name | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | evp_pkey_type2name | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | ossl_cmp_bodytype_to_string | 0 | @@ -5258,6 +6164,18 @@ signatureMatches | stl.h:61:13:61:22 | operator+= | (int) | | sqlite3_errstr | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | tls13_alert_code | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | tls13_alert_code | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv__accept | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv__accept | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_err_name | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_err_name | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_get_osfhandle | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_get_osfhandle | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_strerror | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_strerror | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_translate_sys_error | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_translate_sys_error | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | zError | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | zError | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | ASN1_STRING_type_new | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | ASN1_tag2bit | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | ASN1_tag2str | 0 | @@ -5276,6 +6194,9 @@ signatureMatches | stl.h:62:13:62:22 | operator-= | (int) | | X509_TRUST_get0 | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | c_tolower | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | c_toupper | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | curlx_sitouz | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | evp_pkey_type2name | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | ossl_cmp_bodytype_to_string | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | ossl_tolower | 0 | @@ -5283,6 +6204,12 @@ signatureMatches | stl.h:62:13:62:22 | operator-= | (int) | | sqlite3_compileoption_get | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | sqlite3_errstr | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | tls13_alert_code | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | uv__accept | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | uv_err_name | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | uv_get_osfhandle | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | uv_strerror | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | uv_translate_sys_error | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | zError | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | ASN1_STRING_type_new | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | ASN1_tag2bit | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | ASN1_tag2str | 0 | @@ -5301,6 +6228,9 @@ signatureMatches | stl.h:64:18:64:27 | operator[] | (int) | | X509_TRUST_get0 | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | c_tolower | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | c_toupper | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | curlx_sitouz | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | evp_pkey_type2name | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | ossl_tolower | 0 | @@ -5308,6 +6238,12 @@ signatureMatches | stl.h:64:18:64:27 | operator[] | (int) | | sqlite3_compileoption_get | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | sqlite3_errstr | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | tls13_alert_code | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | uv__accept | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | uv_err_name | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | uv_get_osfhandle | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | uv_strerror | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | uv_translate_sys_error | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | zError | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | ASN1_STRING_type_new | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | ASN1_STRING_type_new | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | ASN1_tag2bit | 0 | @@ -5344,6 +6280,12 @@ signatureMatches | stl.h:91:24:91:33 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | c_tolower | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | c_tolower | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | c_toupper | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | c_toupper | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | curlx_sitouz | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | curlx_sitouz | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | evp_pkey_type2name | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | evp_pkey_type2name | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | @@ -5358,6 +6300,18 @@ signatureMatches | stl.h:91:24:91:33 | operator++ | (int) | | sqlite3_errstr | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | tls13_alert_code | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | tls13_alert_code | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv__accept | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv__accept | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | zError | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | zError | 0 | | stl.h:182:17:182:22 | assign | (InputIt,InputIt) | deque | assign | 0 | | stl.h:182:17:182:22 | assign | (InputIt,InputIt) | deque | assign | 1 | | stl.h:182:17:182:22 | assign | (InputIt,InputIt) | forward_list | assign | 0 | @@ -5520,6 +6474,9 @@ signatureMatches | stl.h:240:33:240:42 | operator<< | (int) | | X509_TRUST_get0 | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | c_tolower | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | c_toupper | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | curlx_sitouz | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | evp_pkey_type2name | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | ossl_cmp_bodytype_to_string | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | ossl_tolower | 0 | @@ -5527,6 +6484,12 @@ signatureMatches | stl.h:240:33:240:42 | operator<< | (int) | | sqlite3_compileoption_get | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | sqlite3_errstr | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | tls13_alert_code | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | uv__accept | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | uv_err_name | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | uv_get_osfhandle | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | uv_strerror | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | uv_translate_sys_error | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | zError | 0 | | stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | | stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | | stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | @@ -5677,6 +6640,12 @@ signatureMatches | stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | | stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | | stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | +| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | +| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | +| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | +| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | +| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | +| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | | stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | | stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | | stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | @@ -5684,6 +6653,7 @@ signatureMatches | stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | | stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | | stl.h:318:13:318:14 | at | (unsigned int) | | Jim_IntHashFunction | 0 | +| stl.h:318:13:318:14 | at | (unsigned int) | | curlx_uitous | 0 | | stl.h:318:13:318:14 | at | (unsigned int) | | ssl3_get_cipher | 0 | | stl.h:331:12:331:17 | insert | (const_iterator,T &&) | deque | insert | 0 | | stl.h:331:12:331:17 | insert | (const_iterator,T &&) | deque | insert | 1 | @@ -5829,6 +6799,9 @@ signatureMatches | stl.h:683:6:683:48 | same_signature_as_format_but_different_name | (format_string,Args &&) | | format | 0 | | stl.h:683:6:683:48 | same_signature_as_format_but_different_name | (format_string,Args &&) | | format | 1 | | string.cpp:17:6:17:9 | sink | (const char *) | | BIO_gethostbyname | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_copy_header_value | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_get_scheme_handler | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_getdate_capped | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | Jim_StrDup | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | OPENSSL_LH_strhash | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -5839,10 +6812,14 @@ signatureMatches | string.cpp:17:6:17:9 | sink | (const char *) | | X509_LOOKUP_meth_new | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | a2i_IPADDRESS | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | a2i_IPADDRESS_NC | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | last_component | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | opt_path_end | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | opt_progname | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | ossl_lh_strcasehash | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | strhash | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | uc_script_byname | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | uv__strdup | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | string.cpp:19:6:19:9 | sink | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | | string.cpp:19:6:19:9 | sink | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | | string.cpp:19:6:19:9 | sink | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | @@ -5852,6 +6829,9 @@ signatureMatches | string.cpp:19:6:19:9 | sink | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | string.cpp:19:6:19:9 | sink | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | string.cpp:19:6:19:9 | sink | (CONF *,const char *) | | _CONF_new_section | 1 | +| string.cpp:19:6:19:9 | sink | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| string.cpp:19:6:19:9 | sink | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| string.cpp:19:6:19:9 | sink | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | string.cpp:19:6:19:9 | sink | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | string.cpp:19:6:19:9 | sink | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | string.cpp:19:6:19:9 | sink | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -5862,10 +6842,14 @@ signatureMatches | string.cpp:19:6:19:9 | sink | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | string.cpp:19:6:19:9 | sink | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | string.cpp:19:6:19:9 | sink | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| string.cpp:19:6:19:9 | sink | (GlobalConfig *,const char *) | | setvariable | 1 | | string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| string.cpp:19:6:19:9 | sink | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| string.cpp:19:6:19:9 | sink | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| string.cpp:19:6:19:9 | sink | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | string.cpp:19:6:19:9 | sink | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | string.cpp:19:6:19:9 | sink | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | string.cpp:19:6:19:9 | sink | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -5922,15 +6906,25 @@ signatureMatches | string.cpp:19:6:19:9 | sink | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | string.cpp:19:6:19:9 | sink | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | string.cpp:19:6:19:9 | sink | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| string.cpp:19:6:19:9 | sink | (char **,const char *) | | Curl_setstropt | 1 | | string.cpp:19:6:19:9 | sink | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| string.cpp:19:6:19:9 | sink | (const char **,const char *) | | uv__utf8_decode1 | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Configcmp | 0 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Configcmp | 1 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Curl_timestrcmp | 0 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Curl_timestrcmp | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | DES_crypt | 0 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | DES_crypt | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | c_strcasecmp | 0 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | c_strcasecmp | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | get_passwd | 0 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | get_passwd | 1 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen | 0 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen | 1 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen64 | 0 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen64 | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | openssl_fopen | 0 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | openssl_fopen | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | ossl_pem_check_suffix | 0 | @@ -5941,9 +6935,25 @@ signatureMatches | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_strglob | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_stricmp | 0 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_stricmp | 1 | +| string.cpp:19:6:19:9 | sink | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| string.cpp:19:6:19:9 | sink | (curl_off_t *,const char *) | | str2offset | 1 | +| string.cpp:19:6:19:9 | sink | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| string.cpp:19:6:19:9 | sink | (curl_slist **,const char *) | | add2list | 1 | +| string.cpp:19:6:19:9 | sink | (curl_slist *,const char *) | | curl_slist_append | 1 | +| string.cpp:19:6:19:9 | sink | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| string.cpp:19:6:19:9 | sink | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| string.cpp:19:6:19:9 | sink | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| string.cpp:19:6:19:9 | sink | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| string.cpp:19:6:19:9 | sink | (gzFile,const char *) | | gzputs | 1 | | string.cpp:19:6:19:9 | sink | (int,const char *) | | BIO_meth_new | 1 | +| string.cpp:19:6:19:9 | sink | (int,const char *) | | gzdopen | 1 | | string.cpp:19:6:19:9 | sink | (lemon *,const char *) | | file_makename | 1 | +| string.cpp:19:6:19:9 | sink | (long *,const char *) | | secs2ms | 1 | +| string.cpp:19:6:19:9 | sink | (long *,const char *) | | str2num | 1 | +| string.cpp:19:6:19:9 | sink | (long *,const char *) | | str2unum | 1 | | string.cpp:19:6:19:9 | sink | (size_t *,const char *) | | next_protos_parse | 1 | +| string.cpp:19:6:19:9 | sink | (slist_wc **,const char *) | | easysrc_add | 1 | +| string.cpp:19:6:19:9 | sink | (slist_wc *,const char *) | | slist_wc_append | 1 | | string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -5954,6 +6964,10 @@ signatureMatches | string.cpp:19:6:19:9 | sink | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | string.cpp:19:6:19:9 | sink | (unsigned long *,const char *) | | set_cert_ex | 1 | | string.cpp:19:6:19:9 | sink | (unsigned long *,const char *) | | set_name_ex | 1 | +| string.cpp:19:6:19:9 | sink | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | +| string.cpp:20:6:20:9 | sink | (char) | | Curl_raw_tolower | 0 | +| string.cpp:20:6:20:9 | sink | (char) | | Curl_raw_toupper | 0 | +| string.cpp:20:6:20:9 | sink | (char) | | findshortopt | 0 | | string.cpp:20:6:20:9 | sink | (char) | | operator+= | 0 | | string.cpp:20:6:20:9 | sink | (char) | CComBSTR | Append | 0 | | string.cpp:20:6:20:9 | sink | (char) | CSimpleStringT | operator+= | 0 | @@ -5975,6 +6989,9 @@ signatureMatches | stringstream.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get0 | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | c_tolower | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | c_toupper | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | curlx_sitouz | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | evp_pkey_type2name | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | ossl_tolower | 0 | @@ -5982,6 +6999,12 @@ signatureMatches | stringstream.cpp:13:6:13:9 | sink | (int) | | sqlite3_compileoption_get | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | sqlite3_errstr | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | tls13_alert_code | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | uv__accept | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_err_name | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_get_osfhandle | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_strerror | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_translate_sys_error | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | zError | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_STRING_type_new | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_tag2bit | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_tag2str | 0 | @@ -6000,6 +7023,9 @@ signatureMatches | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_TRUST_get0 | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_TRUST_get_by_id | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | c_tolower | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | c_toupper | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | curlx_sitouz | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | evp_pkey_type2name | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ossl_cmp_bodytype_to_string | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ossl_tolower | 0 | @@ -6007,6 +7033,12 @@ signatureMatches | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | sqlite3_compileoption_get | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | sqlite3_errstr | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | tls13_alert_code | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv__accept | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_err_name | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_get_osfhandle | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_strerror | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_translate_sys_error | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | zError | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_STRING_type_new | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_tag2bit | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_tag2str | 0 | @@ -6025,6 +7057,9 @@ signatureMatches | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_TRUST_get0 | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_TRUST_get_by_id | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | c_tolower | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | c_toupper | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | curlx_sitouz | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | evp_pkey_type2name | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ossl_cmp_bodytype_to_string | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ossl_tolower | 0 | @@ -6032,6 +7067,12 @@ signatureMatches | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | sqlite3_compileoption_get | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | sqlite3_errstr | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | tls13_alert_code | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv__accept | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_err_name | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_get_osfhandle | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_strerror | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_translate_sys_error | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | zError | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_STRING_type_new | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_tag2bit | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_tag2str | 0 | @@ -6050,6 +7091,9 @@ signatureMatches | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_TRUST_get0 | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_TRUST_get_by_id | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | c_tolower | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | c_toupper | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | curlx_sitouz | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | evp_pkey_type2name | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ossl_cmp_bodytype_to_string | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ossl_tolower | 0 | @@ -6057,6 +7101,12 @@ signatureMatches | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | sqlite3_compileoption_get | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | sqlite3_errstr | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | tls13_alert_code | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv__accept | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_err_name | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_get_osfhandle | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_strerror | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_translate_sys_error | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | zError | 0 | | taint.cpp:4:6:4:21 | arithAssignments | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -6075,6 +7125,8 @@ signatureMatches | taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -6118,6 +7170,17 @@ signatureMatches | taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -6235,8 +7298,10 @@ signatureMatches | taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -6303,6 +7368,9 @@ signatureMatches | taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (gzFile,int) | | gzflush | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (gzFile,int) | | gzputc | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (int *,int) | | X509_TRUST_set | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | BN_security_bits | 0 | @@ -6313,6 +7381,13 @@ signatureMatches | taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | acttab_alloc | 0 | | taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | acttab_alloc | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (rule *,int) | | Configlist_add | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -6347,6 +7422,7 @@ signatureMatches | taint.cpp:4:6:4:21 | arithAssignments | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (wchar_t,int) | CStringT | CStringT | 1 | @@ -6368,6 +7444,9 @@ signatureMatches | taint.cpp:22:5:22:13 | increment | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | c_tolower | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | c_toupper | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | curlx_sitouz | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | evp_pkey_type2name | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | ossl_tolower | 0 | @@ -6375,6 +7454,12 @@ signatureMatches | taint.cpp:22:5:22:13 | increment | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | sqlite3_errstr | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | tls13_alert_code | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | uv__accept | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | uv_err_name | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | uv_strerror | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | zError | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | ASN1_STRING_type_new | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | ASN1_tag2bit | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | ASN1_tag2str | 0 | @@ -6393,6 +7478,9 @@ signatureMatches | taint.cpp:23:5:23:8 | zero | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | c_tolower | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | c_toupper | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | curlx_sitouz | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | evp_pkey_type2name | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | ossl_tolower | 0 | @@ -6400,6 +7488,12 @@ signatureMatches | taint.cpp:23:5:23:8 | zero | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | sqlite3_errstr | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | tls13_alert_code | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | uv__accept | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | uv_err_name | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | uv_strerror | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | zError | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_STRING_type_new | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_tag2bit | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_tag2str | 0 | @@ -6418,6 +7512,9 @@ signatureMatches | taint.cpp:100:6:100:15 | array_test | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | c_tolower | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | c_toupper | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | curlx_sitouz | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | evp_pkey_type2name | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | ossl_tolower | 0 | @@ -6425,6 +7522,12 @@ signatureMatches | taint.cpp:100:6:100:15 | array_test | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | sqlite3_errstr | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | tls13_alert_code | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | uv__accept | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | uv_err_name | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | uv_strerror | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | zError | 0 | | taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 1 | | taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | | taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | @@ -6451,6 +7554,11 @@ signatureMatches | taint.cpp:142:5:142:10 | select | (BIO *,const RSA *,int) | | RSA_print | 2 | | taint.cpp:142:5:142:10 | select | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | | taint.cpp:142:5:142:10 | select | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | +| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | +| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | +| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | +| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | +| taint.cpp:142:5:142:10 | select | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | | taint.cpp:142:5:142:10 | select | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | | taint.cpp:142:5:142:10 | select | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | | taint.cpp:142:5:142:10 | select | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | @@ -6487,6 +7595,9 @@ signatureMatches | taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | | taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | | taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | +| taint.cpp:142:5:142:10 | select | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 1 | +| taint.cpp:142:5:142:10 | select | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | +| taint.cpp:142:5:142:10 | select | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | | taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | | taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | | taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | @@ -6591,6 +7702,7 @@ signatureMatches | taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | | taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 1 | | taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | +| taint.cpp:142:5:142:10 | select | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | | taint.cpp:142:5:142:10 | select | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | | taint.cpp:142:5:142:10 | select | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | | taint.cpp:142:5:142:10 | select | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 1 | @@ -6629,6 +7741,7 @@ signatureMatches | taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 1 | | taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | | taint.cpp:142:5:142:10 | select | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | +| taint.cpp:142:5:142:10 | select | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | | taint.cpp:142:5:142:10 | select | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | | taint.cpp:142:5:142:10 | select | (const char *,const char *,int) | | CRYPTO_strdup | 2 | | taint.cpp:142:5:142:10 | select | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | @@ -6642,9 +7755,17 @@ signatureMatches | taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | | taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 1 | | taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | +| taint.cpp:142:5:142:10 | select | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | | taint.cpp:142:5:142:10 | select | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | | taint.cpp:142:5:142:10 | select | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | | taint.cpp:142:5:142:10 | select | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | +| taint.cpp:142:5:142:10 | select | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | +| taint.cpp:142:5:142:10 | select | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | +| taint.cpp:142:5:142:10 | select | (gzFile,char *,int) | | gzgets | 2 | +| taint.cpp:142:5:142:10 | select | (gzFile,int,int) | | gzsetparams | 1 | +| taint.cpp:142:5:142:10 | select | (gzFile,int,int) | | gzsetparams | 2 | +| taint.cpp:142:5:142:10 | select | (gzFile,off64_t,int) | | gzseek64 | 2 | +| taint.cpp:142:5:142:10 | select | (gzFile,off_t,int) | | gzseek | 2 | | taint.cpp:142:5:142:10 | select | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | | taint.cpp:142:5:142:10 | select | (int,int,int) | | ASN1_object_size | 0 | | taint.cpp:142:5:142:10 | select | (int,int,int) | | ASN1_object_size | 1 | @@ -6690,7 +7811,16 @@ signatureMatches | taint.cpp:142:5:142:10 | select | (unsigned int,int,int) | | ossl_blob_length | 2 | | taint.cpp:142:5:142:10 | select | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | | taint.cpp:142:5:142:10 | select | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | +| taint.cpp:142:5:142:10 | select | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | +| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | +| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | +| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | +| taint.cpp:142:5:142:10 | select | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | +| taint.cpp:142:5:142:10 | select | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | +| taint.cpp:142:5:142:10 | select | (uv_stream_t *,int,int) | | uv__stream_open | 1 | +| taint.cpp:142:5:142:10 | select | (uv_stream_t *,int,int) | | uv__stream_open | 2 | | taint.cpp:142:5:142:10 | select | (void *,const char *,int) | | CRYPTO_secure_free | 2 | +| taint.cpp:142:5:142:10 | select | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | | taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_STRING_type_new | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_tag2bit | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_tag2str | 0 | @@ -6709,6 +7839,9 @@ signatureMatches | taint.cpp:150:6:150:12 | fn_test | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | c_tolower | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | c_toupper | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | curlx_sitouz | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | evp_pkey_type2name | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | ossl_tolower | 0 | @@ -6716,6 +7849,12 @@ signatureMatches | taint.cpp:150:6:150:12 | fn_test | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | sqlite3_errstr | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | tls13_alert_code | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | uv__accept | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_err_name | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_strerror | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | zError | 0 | | taint.cpp:156:7:156:12 | strcpy | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | | taint.cpp:156:7:156:12 | strcpy | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | | taint.cpp:156:7:156:12 | strcpy | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | @@ -6725,6 +7864,9 @@ signatureMatches | taint.cpp:156:7:156:12 | strcpy | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:156:7:156:12 | strcpy | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:156:7:156:12 | strcpy | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:156:7:156:12 | strcpy | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:156:7:156:12 | strcpy | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:156:7:156:12 | strcpy | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:156:7:156:12 | strcpy | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:156:7:156:12 | strcpy | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:156:7:156:12 | strcpy | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -6735,10 +7877,14 @@ signatureMatches | taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:156:7:156:12 | strcpy | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:156:7:156:12 | strcpy | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:156:7:156:12 | strcpy | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:156:7:156:12 | strcpy | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -6795,19 +7941,41 @@ signatureMatches | taint.cpp:156:7:156:12 | strcpy | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:156:7:156:12 | strcpy | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:156:7:156:12 | strcpy | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:156:7:156:12 | strcpy | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:156:7:156:12 | strcpy | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:156:7:156:12 | strcpy | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | ossl_pem_check_suffix | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | ossl_v3_name_cmp | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:156:7:156:12 | strcpy | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:156:7:156:12 | strcpy | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:156:7:156:12 | strcpy | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:156:7:156:12 | strcpy | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:156:7:156:12 | strcpy | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:156:7:156:12 | strcpy | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:156:7:156:12 | strcpy | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:156:7:156:12 | strcpy | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:156:7:156:12 | strcpy | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:156:7:156:12 | strcpy | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | gzdopen | 1 | | taint.cpp:156:7:156:12 | strcpy | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | str2num | 1 | +| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | str2unum | 1 | | taint.cpp:156:7:156:12 | strcpy | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:156:7:156:12 | strcpy | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:156:7:156:12 | strcpy | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -6818,6 +7986,7 @@ signatureMatches | taint.cpp:156:7:156:12 | strcpy | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:156:7:156:12 | strcpy | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:156:7:156:12 | strcpy | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:156:7:156:12 | strcpy | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | taint.cpp:157:7:157:12 | strcat | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | | taint.cpp:157:7:157:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | | taint.cpp:157:7:157:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | @@ -6827,6 +7996,9 @@ signatureMatches | taint.cpp:157:7:157:12 | strcat | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:157:7:157:12 | strcat | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:157:7:157:12 | strcat | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:157:7:157:12 | strcat | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:157:7:157:12 | strcat | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:157:7:157:12 | strcat | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:157:7:157:12 | strcat | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:157:7:157:12 | strcat | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:157:7:157:12 | strcat | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -6837,10 +8009,14 @@ signatureMatches | taint.cpp:157:7:157:12 | strcat | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:157:7:157:12 | strcat | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:157:7:157:12 | strcat | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:157:7:157:12 | strcat | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:157:7:157:12 | strcat | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:157:7:157:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:157:7:157:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -6897,19 +8073,41 @@ signatureMatches | taint.cpp:157:7:157:12 | strcat | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:157:7:157:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:157:7:157:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:157:7:157:12 | strcat | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:157:7:157:12 | strcat | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:157:7:157:12 | strcat | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | ossl_pem_check_suffix | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | ossl_v3_name_cmp | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:157:7:157:12 | strcat | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:157:7:157:12 | strcat | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:157:7:157:12 | strcat | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:157:7:157:12 | strcat | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:157:7:157:12 | strcat | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:157:7:157:12 | strcat | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:157:7:157:12 | strcat | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:157:7:157:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:157:7:157:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:157:7:157:12 | strcat | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:157:7:157:12 | strcat | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | gzdopen | 1 | | taint.cpp:157:7:157:12 | strcat | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | str2num | 1 | +| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | str2unum | 1 | | taint.cpp:157:7:157:12 | strcat | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:157:7:157:12 | strcat | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:157:7:157:12 | strcat | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -6920,6 +8118,7 @@ signatureMatches | taint.cpp:157:7:157:12 | strcat | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:157:7:157:12 | strcat | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:157:7:157:12 | strcat | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:157:7:157:12 | strcat | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | taint.cpp:190:7:190:12 | memcpy | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | | taint.cpp:190:7:190:12 | memcpy | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | | taint.cpp:190:7:190:12 | memcpy | (ASN1_OCTET_STRING **,const unsigned char *,int) | | ossl_cmp_asn1_octet_string_set1_bytes | 2 | @@ -6947,6 +8146,11 @@ signatureMatches | taint.cpp:190:7:190:12 | memcpy | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | | taint.cpp:190:7:190:12 | memcpy | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 1 | | taint.cpp:190:7:190:12 | memcpy | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | +| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | +| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | +| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | +| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | +| taint.cpp:190:7:190:12 | memcpy | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | | taint.cpp:190:7:190:12 | memcpy | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | | taint.cpp:190:7:190:12 | memcpy | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | | taint.cpp:190:7:190:12 | memcpy | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | @@ -6983,6 +8187,8 @@ signatureMatches | taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | | taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | | taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | +| taint.cpp:190:7:190:12 | memcpy | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | +| taint.cpp:190:7:190:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | | taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | | taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | | taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | @@ -7071,6 +8277,7 @@ signatureMatches | taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | | taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | | taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | +| taint.cpp:190:7:190:12 | memcpy | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | | taint.cpp:190:7:190:12 | memcpy | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | | taint.cpp:190:7:190:12 | memcpy | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | | taint.cpp:190:7:190:12 | memcpy | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | @@ -7098,6 +8305,7 @@ signatureMatches | taint.cpp:190:7:190:12 | memcpy | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | | taint.cpp:190:7:190:12 | memcpy | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | | taint.cpp:190:7:190:12 | memcpy | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | +| taint.cpp:190:7:190:12 | memcpy | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | | taint.cpp:190:7:190:12 | memcpy | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | | taint.cpp:190:7:190:12 | memcpy | (const char *,const char *,int) | | CRYPTO_strdup | 2 | | taint.cpp:190:7:190:12 | memcpy | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | @@ -7108,9 +8316,16 @@ signatureMatches | taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | | taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | | taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | +| taint.cpp:190:7:190:12 | memcpy | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | | taint.cpp:190:7:190:12 | memcpy | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | | taint.cpp:190:7:190:12 | memcpy | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | | taint.cpp:190:7:190:12 | memcpy | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | +| taint.cpp:190:7:190:12 | memcpy | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | +| taint.cpp:190:7:190:12 | memcpy | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | +| taint.cpp:190:7:190:12 | memcpy | (gzFile,char *,int) | | gzgets | 2 | +| taint.cpp:190:7:190:12 | memcpy | (gzFile,int,int) | | gzsetparams | 2 | +| taint.cpp:190:7:190:12 | memcpy | (gzFile,off64_t,int) | | gzseek64 | 2 | +| taint.cpp:190:7:190:12 | memcpy | (gzFile,off_t,int) | | gzseek | 2 | | taint.cpp:190:7:190:12 | memcpy | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | | taint.cpp:190:7:190:12 | memcpy | (int,int,int) | | ASN1_object_size | 2 | | taint.cpp:190:7:190:12 | memcpy | (int,int,int) | | EVP_CIPHER_meth_new | 2 | @@ -7143,7 +8358,15 @@ signatureMatches | taint.cpp:190:7:190:12 | memcpy | (unsigned int,int,int) | | ossl_blob_length | 2 | | taint.cpp:190:7:190:12 | memcpy | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | | taint.cpp:190:7:190:12 | memcpy | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv_stream_t *,int,int) | | uv__stream_open | 2 | | taint.cpp:190:7:190:12 | memcpy | (void *,const char *,int) | | CRYPTO_secure_free | 2 | +| taint.cpp:190:7:190:12 | memcpy | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | | taint.cpp:249:13:249:13 | _FUN | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | taint.cpp:249:13:249:13 | _FUN | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -7162,6 +8385,8 @@ signatureMatches | taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:249:13:249:13 | _FUN | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:249:13:249:13 | _FUN | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:249:13:249:13 | _FUN | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:249:13:249:13 | _FUN | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:249:13:249:13 | _FUN | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:249:13:249:13 | _FUN | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:249:13:249:13 | _FUN | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -7205,6 +8430,17 @@ signatureMatches | taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:249:13:249:13 | _FUN | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:249:13:249:13 | _FUN | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:249:13:249:13 | _FUN | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -7322,8 +8558,10 @@ signatureMatches | taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:249:13:249:13 | _FUN | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:249:13:249:13 | _FUN | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:249:13:249:13 | _FUN | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:249:13:249:13 | _FUN | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:249:13:249:13 | _FUN | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:249:13:249:13 | _FUN | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:249:13:249:13 | _FUN | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:249:13:249:13 | _FUN | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -7390,6 +8628,9 @@ signatureMatches | taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:249:13:249:13 | _FUN | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:249:13:249:13 | _FUN | (gzFile,int) | | gzflush | 1 | +| taint.cpp:249:13:249:13 | _FUN | (gzFile,int) | | gzputc | 1 | | taint.cpp:249:13:249:13 | _FUN | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:249:13:249:13 | _FUN | (int *,int) | | X509_TRUST_set | 1 | | taint.cpp:249:13:249:13 | _FUN | (int,int) | | BN_security_bits | 0 | @@ -7400,6 +8641,13 @@ signatureMatches | taint.cpp:249:13:249:13 | _FUN | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:249:13:249:13 | _FUN | (int,int) | | acttab_alloc | 0 | | taint.cpp:249:13:249:13 | _FUN | (int,int) | | acttab_alloc | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:249:13:249:13 | _FUN | (rule *,int) | | Configlist_add | 1 | | taint.cpp:249:13:249:13 | _FUN | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:249:13:249:13 | _FUN | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -7434,6 +8682,7 @@ signatureMatches | taint.cpp:249:13:249:13 | _FUN | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:249:13:249:13 | _FUN | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:249:13:249:13 | _FUN | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:249:13:249:13 | _FUN | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:249:13:249:13 | _FUN | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:249:13:249:13 | _FUN | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:249:13:249:13 | _FUN | (wchar_t,int) | CStringT | CStringT | 1 | @@ -7455,6 +8704,8 @@ signatureMatches | taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:249:13:249:13 | operator() | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:249:13:249:13 | operator() | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:249:13:249:13 | operator() | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:249:13:249:13 | operator() | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:249:13:249:13 | operator() | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:249:13:249:13 | operator() | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:249:13:249:13 | operator() | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -7498,6 +8749,17 @@ signatureMatches | taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:249:13:249:13 | operator() | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:249:13:249:13 | operator() | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:249:13:249:13 | operator() | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -7615,8 +8877,10 @@ signatureMatches | taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:249:13:249:13 | operator() | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:249:13:249:13 | operator() | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:249:13:249:13 | operator() | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:249:13:249:13 | operator() | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:249:13:249:13 | operator() | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:249:13:249:13 | operator() | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:249:13:249:13 | operator() | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:249:13:249:13 | operator() | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -7683,6 +8947,9 @@ signatureMatches | taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:249:13:249:13 | operator() | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:249:13:249:13 | operator() | (gzFile,int) | | gzflush | 1 | +| taint.cpp:249:13:249:13 | operator() | (gzFile,int) | | gzputc | 1 | | taint.cpp:249:13:249:13 | operator() | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:249:13:249:13 | operator() | (int *,int) | | X509_TRUST_set | 1 | | taint.cpp:249:13:249:13 | operator() | (int,int) | | BN_security_bits | 0 | @@ -7693,6 +8960,13 @@ signatureMatches | taint.cpp:249:13:249:13 | operator() | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:249:13:249:13 | operator() | (int,int) | | acttab_alloc | 0 | | taint.cpp:249:13:249:13 | operator() | (int,int) | | acttab_alloc | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:249:13:249:13 | operator() | (rule *,int) | | Configlist_add | 1 | | taint.cpp:249:13:249:13 | operator() | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:249:13:249:13 | operator() | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -7727,6 +9001,7 @@ signatureMatches | taint.cpp:249:13:249:13 | operator() | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:249:13:249:13 | operator() | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:249:13:249:13 | operator() | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:249:13:249:13 | operator() | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:249:13:249:13 | operator() | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:249:13:249:13 | operator() | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:249:13:249:13 | operator() | (wchar_t,int) | CStringT | CStringT | 1 | @@ -7748,6 +9023,9 @@ signatureMatches | taint.cpp:266:5:266:6 | id | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:266:5:266:6 | id | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:266:5:266:6 | id | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | c_tolower | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | c_toupper | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | curlx_sitouz | 0 | | taint.cpp:266:5:266:6 | id | (int) | | evp_pkey_type2name | 0 | | taint.cpp:266:5:266:6 | id | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:266:5:266:6 | id | (int) | | ossl_tolower | 0 | @@ -7755,6 +9033,12 @@ signatureMatches | taint.cpp:266:5:266:6 | id | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:266:5:266:6 | id | (int) | | sqlite3_errstr | 0 | | taint.cpp:266:5:266:6 | id | (int) | | tls13_alert_code | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | uv__accept | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | uv_err_name | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | uv_strerror | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | zError | 0 | | taint.cpp:302:6:302:14 | myAssign2 | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -7773,6 +9057,8 @@ signatureMatches | taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -7816,6 +9102,17 @@ signatureMatches | taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -7933,8 +9230,10 @@ signatureMatches | taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -8001,12 +9300,22 @@ signatureMatches | taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (gzFile,int) | | gzflush | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (gzFile,int) | | gzputc | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (int *,int) | | X509_TRUST_set | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | BN_security_bits | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | EVP_MD_meth_new | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | acttab_alloc | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (rule *,int) | | Configlist_add | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -8041,6 +9350,7 @@ signatureMatches | taint.cpp:302:6:302:14 | myAssign2 | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (wchar_t,int) | CStringT | CStringT | 1 | @@ -8062,6 +9372,8 @@ signatureMatches | taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -8105,6 +9417,17 @@ signatureMatches | taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -8222,8 +9545,10 @@ signatureMatches | taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -8290,6 +9615,9 @@ signatureMatches | taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (gzFile,int) | | gzflush | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (gzFile,int) | | gzputc | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_PURPOSE_set | 0 | | taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_TRUST_set | 0 | @@ -8298,6 +9626,13 @@ signatureMatches | taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | EVP_MD_meth_new | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | acttab_alloc | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (rule *,int) | | Configlist_add | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -8332,6 +9667,7 @@ signatureMatches | taint.cpp:307:6:307:14 | myAssign3 | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (wchar_t,int) | CStringT | CStringT | 1 | @@ -8353,6 +9689,8 @@ signatureMatches | taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -8396,6 +9734,17 @@ signatureMatches | taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -8513,8 +9862,10 @@ signatureMatches | taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -8581,6 +9932,9 @@ signatureMatches | taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (gzFile,int) | | gzflush | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (gzFile,int) | | gzputc | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_PURPOSE_set | 0 | | taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_TRUST_set | 0 | @@ -8589,6 +9943,13 @@ signatureMatches | taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | EVP_MD_meth_new | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | acttab_alloc | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (rule *,int) | | Configlist_add | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -8623,10 +9984,14 @@ signatureMatches | taint.cpp:312:6:312:14 | myAssign4 | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (wchar_t,int) | CStringT | CStringT | 1 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | BIO_gethostbyname | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_copy_header_value | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_get_scheme_handler | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_getdate_capped | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | Jim_StrDup | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | OPENSSL_LH_strhash | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -8637,10 +10002,14 @@ signatureMatches | taint.cpp:361:7:361:12 | strdup | (const char *) | | X509_LOOKUP_meth_new | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | a2i_IPADDRESS | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | a2i_IPADDRESS_NC | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | last_component | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | opt_path_end | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | opt_progname | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | ossl_lh_strcasehash | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | strhash | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | uc_script_byname | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | uv__strdup | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | | taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | | taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | @@ -8654,6 +10023,7 @@ signatureMatches | taint.cpp:362:7:362:13 | strndup | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | | taint.cpp:362:7:362:13 | strndup | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | | taint.cpp:362:7:362:13 | strndup | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | +| taint.cpp:362:7:362:13 | strndup | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | | taint.cpp:362:7:362:13 | strndup | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | | taint.cpp:362:7:362:13 | strndup | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | | taint.cpp:362:7:362:13 | strndup | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | @@ -8699,16 +10069,58 @@ signatureMatches | taint.cpp:362:7:362:13 | strndup | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | | taint.cpp:362:7:362:13 | strndup | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | | taint.cpp:362:7:362:13 | strndup | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | +| taint.cpp:362:7:362:13 | strndup | (bufq *,size_t) | | Curl_bufq_skip | 1 | +| taint.cpp:362:7:362:13 | strndup | (bufq *,size_t) | | Curl_bufq_unwrite | 1 | | taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | RAND_file_name | 1 | +| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | plain_method | 1 | | taint.cpp:362:7:362:13 | strndup | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | +| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_getn_scheme_handler | 0 | +| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_getn_scheme_handler | 1 | +| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_memdup0 | 0 | +| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_memdup0 | 1 | | taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | OPENSSL_strnlen | 0 | | taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | OPENSSL_strnlen | 1 | +| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | uv__strndup | 0 | +| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | uv__strndup | 1 | | taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | +| taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | | taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | +| taint.cpp:362:7:362:13 | strndup | (const void *,size_t) | | Curl_memdup | 1 | +| taint.cpp:362:7:362:13 | strndup | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_init | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_tail | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_init | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_tail | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynhds *,size_t) | | Curl_dynhds_getn | 1 | +| taint.cpp:362:7:362:13 | strndup | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | | taint.cpp:362:7:362:13 | strndup | (int,size_t) | | ossl_calculate_comp_expansion | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | +| taint.cpp:362:7:362:13 | strndup | (uint8_t *,size_t) | | nghttp2_downcase | 1 | | taint.cpp:362:7:362:13 | strndup | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | | taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | JimDefaultAllocator | 1 | +| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | uv__random_devurandom | 1 | +| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | uv__random_getrandom | 1 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | BIO_gethostbyname | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_copy_header_value | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_get_scheme_handler | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_getdate_capped | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | Jim_StrDup | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | OPENSSL_LH_strhash | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -8719,10 +10131,14 @@ signatureMatches | taint.cpp:364:7:364:13 | strdupa | (const char *) | | X509_LOOKUP_meth_new | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | a2i_IPADDRESS | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | a2i_IPADDRESS_NC | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | last_component | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | opt_path_end | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | opt_progname | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | ossl_lh_strcasehash | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | strhash | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uc_script_byname | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uv__strdup | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | | taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | | taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | @@ -8736,6 +10152,7 @@ signatureMatches | taint.cpp:365:7:365:14 | strndupa | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | | taint.cpp:365:7:365:14 | strndupa | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | | taint.cpp:365:7:365:14 | strndupa | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | +| taint.cpp:365:7:365:14 | strndupa | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | | taint.cpp:365:7:365:14 | strndupa | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | | taint.cpp:365:7:365:14 | strndupa | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | | taint.cpp:365:7:365:14 | strndupa | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | @@ -8781,15 +10198,54 @@ signatureMatches | taint.cpp:365:7:365:14 | strndupa | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | | taint.cpp:365:7:365:14 | strndupa | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | | taint.cpp:365:7:365:14 | strndupa | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | +| taint.cpp:365:7:365:14 | strndupa | (bufq *,size_t) | | Curl_bufq_skip | 1 | +| taint.cpp:365:7:365:14 | strndupa | (bufq *,size_t) | | Curl_bufq_unwrite | 1 | | taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | RAND_file_name | 1 | +| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | plain_method | 1 | | taint.cpp:365:7:365:14 | strndupa | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | +| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_getn_scheme_handler | 0 | +| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_getn_scheme_handler | 1 | +| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_memdup0 | 0 | +| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_memdup0 | 1 | | taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | OPENSSL_strnlen | 0 | | taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | OPENSSL_strnlen | 1 | +| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | uv__strndup | 0 | +| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | uv__strndup | 1 | | taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | +| taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | | taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | +| taint.cpp:365:7:365:14 | strndupa | (const void *,size_t) | | Curl_memdup | 1 | +| taint.cpp:365:7:365:14 | strndupa | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_init | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_tail | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_init | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_tail | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynhds *,size_t) | | Curl_dynhds_getn | 1 | +| taint.cpp:365:7:365:14 | strndupa | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | | taint.cpp:365:7:365:14 | strndupa | (int,size_t) | | ossl_calculate_comp_expansion | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | +| taint.cpp:365:7:365:14 | strndupa | (uint8_t *,size_t) | | nghttp2_downcase | 1 | | taint.cpp:365:7:365:14 | strndupa | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | | taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | JimDefaultAllocator | 1 | +| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | uv__random_devurandom | 1 | +| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | uv__random_getrandom | 1 | | taint.cpp:367:6:367:16 | test_strdup | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:367:6:367:16 | test_strdup | (char *) | | defossilize | 0 | | taint.cpp:367:6:367:16 | test_strdup | (char *) | | make_uppercase | 0 | @@ -8813,6 +10269,9 @@ signatureMatches | taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | c_tolower | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | c_toupper | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | curlx_sitouz | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | evp_pkey_type2name | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | ossl_tolower | 0 | @@ -8820,6 +10279,12 @@ signatureMatches | taint.cpp:379:6:379:17 | test_strndup | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | sqlite3_errstr | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | tls13_alert_code | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv__accept | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_err_name | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_strerror | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | zError | 0 | | taint.cpp:387:6:387:16 | test_wcsdup | (wchar_t *) | CStringT | CStringT | 0 | | taint.cpp:397:6:397:17 | test_strdupa | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:397:6:397:17 | test_strdupa | (char *) | | defossilize | 0 | @@ -8844,6 +10309,9 @@ signatureMatches | taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | c_tolower | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | c_toupper | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | curlx_sitouz | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | evp_pkey_type2name | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | ossl_tolower | 0 | @@ -8851,6 +10319,12 @@ signatureMatches | taint.cpp:409:6:409:18 | test_strndupa | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | sqlite3_errstr | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | tls13_alert_code | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv__accept | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_err_name | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_strerror | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | zError | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_STRING_type_new | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_tag2bit | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_tag2str | 0 | @@ -8869,6 +10343,9 @@ signatureMatches | taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | c_tolower | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | c_toupper | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | curlx_sitouz | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | evp_pkey_type2name | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | ossl_tolower | 0 | @@ -8876,6 +10353,12 @@ signatureMatches | taint.cpp:421:2:421:9 | MyClass2 | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | sqlite3_errstr | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | tls13_alert_code | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv__accept | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_err_name | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_strerror | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | zError | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_STRING_type_new | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_tag2bit | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_tag2str | 0 | @@ -8894,6 +10377,9 @@ signatureMatches | taint.cpp:422:7:422:15 | setMember | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | c_tolower | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | c_toupper | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | curlx_sitouz | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | evp_pkey_type2name | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | ossl_tolower | 0 | @@ -8901,7 +10387,16 @@ signatureMatches | taint.cpp:422:7:422:15 | setMember | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | sqlite3_errstr | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | tls13_alert_code | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | uv__accept | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | uv_err_name | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | uv_strerror | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | zError | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | BIO_gethostbyname | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_copy_header_value | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_get_scheme_handler | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_getdate_capped | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Jim_StrDup | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | OPENSSL_LH_strhash | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -8912,11 +10407,18 @@ signatureMatches | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | X509_LOOKUP_meth_new | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | a2i_IPADDRESS | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | a2i_IPADDRESS_NC | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | last_component | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | opt_path_end | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | opt_progname | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | ossl_lh_strcasehash | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | strhash | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uc_script_byname | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uv__strdup | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | BIO_gethostbyname | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_copy_header_value | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_get_scheme_handler | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_getdate_capped | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | Jim_StrDup | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | OPENSSL_LH_strhash | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -8927,10 +10429,15 @@ signatureMatches | taint.cpp:431:7:431:15 | setString | (const char *) | | X509_LOOKUP_meth_new | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | a2i_IPADDRESS | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | a2i_IPADDRESS_NC | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | last_component | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | opt_path_end | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | opt_progname | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | ossl_lh_strcasehash | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | strhash | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | uc_script_byname | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | uv__strdup | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | uv_wtf8_length_as_utf16 | 0 | +| taint.cpp:500:5:500:12 | getdelim | (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 3 | | taint.cpp:512:7:512:12 | strtok | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | | taint.cpp:512:7:512:12 | strtok | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | | taint.cpp:512:7:512:12 | strtok | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | @@ -8940,6 +10447,9 @@ signatureMatches | taint.cpp:512:7:512:12 | strtok | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:512:7:512:12 | strtok | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:512:7:512:12 | strtok | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:512:7:512:12 | strtok | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:512:7:512:12 | strtok | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:512:7:512:12 | strtok | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:512:7:512:12 | strtok | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:512:7:512:12 | strtok | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:512:7:512:12 | strtok | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -8950,10 +10460,14 @@ signatureMatches | taint.cpp:512:7:512:12 | strtok | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:512:7:512:12 | strtok | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:512:7:512:12 | strtok | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:512:7:512:12 | strtok | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:512:7:512:12 | strtok | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:512:7:512:12 | strtok | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:512:7:512:12 | strtok | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -9010,19 +10524,41 @@ signatureMatches | taint.cpp:512:7:512:12 | strtok | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:512:7:512:12 | strtok | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:512:7:512:12 | strtok | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:512:7:512:12 | strtok | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:512:7:512:12 | strtok | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:512:7:512:12 | strtok | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | ossl_pem_check_suffix | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | ossl_v3_name_cmp | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:512:7:512:12 | strtok | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:512:7:512:12 | strtok | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:512:7:512:12 | strtok | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:512:7:512:12 | strtok | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:512:7:512:12 | strtok | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:512:7:512:12 | strtok | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:512:7:512:12 | strtok | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:512:7:512:12 | strtok | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:512:7:512:12 | strtok | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:512:7:512:12 | strtok | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:512:7:512:12 | strtok | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | gzdopen | 1 | | taint.cpp:512:7:512:12 | strtok | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | str2num | 1 | +| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | str2unum | 1 | | taint.cpp:512:7:512:12 | strtok | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:512:7:512:12 | strtok | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:512:7:512:12 | strtok | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -9033,6 +10569,7 @@ signatureMatches | taint.cpp:512:7:512:12 | strtok | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:512:7:512:12 | strtok | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:512:7:512:12 | strtok | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:512:7:512:12 | strtok | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | taint.cpp:514:6:514:16 | test_strtok | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:514:6:514:16 | test_strtok | (char *) | | defossilize | 0 | | taint.cpp:514:6:514:16 | test_strtok | (char *) | | make_uppercase | 0 | @@ -9056,6 +10593,8 @@ signatureMatches | taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:523:7:523:13 | _strset | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:523:7:523:13 | _strset | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:523:7:523:13 | _strset | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:523:7:523:13 | _strset | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:523:7:523:13 | _strset | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:523:7:523:13 | _strset | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:523:7:523:13 | _strset | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -9099,6 +10638,17 @@ signatureMatches | taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:523:7:523:13 | _strset | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:523:7:523:13 | _strset | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:523:7:523:13 | _strset | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -9216,9 +10766,12 @@ signatureMatches | taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:523:7:523:13 | _strset | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:523:7:523:13 | _strset | (char *,int) | | Curl_str2addr | 0 | +| taint.cpp:523:7:523:13 | _strset | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:523:7:523:13 | _strset | (char *,int) | | PEM_proc_type | 0 | | taint.cpp:523:7:523:13 | _strset | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:523:7:523:13 | _strset | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:523:7:523:13 | _strset | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:523:7:523:13 | _strset | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:523:7:523:13 | _strset | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:523:7:523:13 | _strset | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -9285,12 +10838,22 @@ signatureMatches | taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:523:7:523:13 | _strset | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:523:7:523:13 | _strset | (gzFile,int) | | gzflush | 1 | +| taint.cpp:523:7:523:13 | _strset | (gzFile,int) | | gzputc | 1 | | taint.cpp:523:7:523:13 | _strset | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:523:7:523:13 | _strset | (int *,int) | | X509_TRUST_set | 1 | | taint.cpp:523:7:523:13 | _strset | (int,int) | | BN_security_bits | 1 | | taint.cpp:523:7:523:13 | _strset | (int,int) | | EVP_MD_meth_new | 1 | | taint.cpp:523:7:523:13 | _strset | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:523:7:523:13 | _strset | (int,int) | | acttab_alloc | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:523:7:523:13 | _strset | (rule *,int) | | Configlist_add | 1 | | taint.cpp:523:7:523:13 | _strset | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:523:7:523:13 | _strset | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -9325,9 +10888,11 @@ signatureMatches | taint.cpp:523:7:523:13 | _strset | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:523:7:523:13 | _strset | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:523:7:523:13 | _strset | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:523:7:523:13 | _strset | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:523:7:523:13 | _strset | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:523:7:523:13 | _strset | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:523:7:523:13 | _strset | (wchar_t,int) | CStringT | CStringT | 1 | +| taint.cpp:525:6:525:18 | test_strset_1 | (char **,char) | | Curl_str_single | 1 | | taint.cpp:525:6:525:18 | test_strset_1 | (const CStringT &,char) | | operator+ | 1 | | taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | defossilize | 0 | @@ -9352,9 +10917,25 @@ signatureMatches | taint.cpp:538:7:538:13 | mempcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 1 | | taint.cpp:538:7:538:13 | mempcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | | taint.cpp:538:7:538:13 | mempcpy | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | | taint.cpp:538:7:538:13 | mempcpy | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | | taint.cpp:538:7:538:13 | mempcpy | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | | taint.cpp:538:7:538:13 | mempcpy | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | | taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | | taint.cpp:538:7:538:13 | mempcpy | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | | taint.cpp:538:7:538:13 | mempcpy | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | @@ -9367,6 +10948,9 @@ signatureMatches | taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | | taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | | taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | | taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 1 | | taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | | taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 1 | @@ -9378,6 +10962,7 @@ signatureMatches | taint.cpp:538:7:538:13 | mempcpy | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | | taint.cpp:538:7:538:13 | mempcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | | taint.cpp:538:7:538:13 | mempcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | | taint.cpp:538:7:538:13 | mempcpy | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | | taint.cpp:538:7:538:13 | mempcpy | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | | taint.cpp:538:7:538:13 | mempcpy | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | @@ -9465,8 +11050,16 @@ signatureMatches | taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | | taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | | taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (char **,size_t *,size_t) | | Curl_str_number | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | Curl_strntolower | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | Curl_strntoupper | 2 | | taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | | taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | uv__strscpy | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | @@ -9480,20 +11073,64 @@ signatureMatches | taint.cpp:538:7:538:13 | mempcpy | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | getpass_r | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const char *,const char *,size_t) | | c_strncasecmp | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const char *,void *,size_t) | | uv__random_readpath | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | | taint.cpp:538:7:538:13 | mempcpy | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | | taint.cpp:538:7:538:13 | mempcpy | (int *,int *,size_t) | | EVP_PBE_get | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | Curl_strerror | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | uv_err_name_r | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | uv_strerror_r | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | | taint.cpp:538:7:538:13 | mempcpy | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | | taint.cpp:538:7:538:13 | mempcpy | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | | taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | | taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | | taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | | taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (void *,size_t,size_t) | | Curl_hash_str | 2 | | taint.cpp:538:7:538:13 | mempcpy | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | +| taint.cpp:548:7:548:13 | memccpy | (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 3 | | taint.cpp:548:7:548:13 | memccpy | (BIGNUM *,BIGNUM *,const unsigned char **,size_t) | | ossl_decode_der_dsa_sig | 3 | | taint.cpp:548:7:548:13 | memccpy | (BIO *,X509 *,unsigned long,unsigned long) | | X509_print_ex | 3 | | taint.cpp:548:7:548:13 | memccpy | (BIO *,X509_ACERT *,unsigned long,unsigned long) | | X509_ACERT_print_ex | 3 | @@ -9509,6 +11146,13 @@ signatureMatches | taint.cpp:548:7:548:13 | memccpy | (GCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_gcm128_decrypt | 3 | | taint.cpp:548:7:548:13 | memccpy | (GCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_gcm128_encrypt | 3 | | taint.cpp:548:7:548:13 | memccpy | (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 3 | +| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 3 | +| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 3 | +| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 3 | +| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 3 | +| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 3 | +| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 3 | +| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 3 | | taint.cpp:548:7:548:13 | memccpy | (OCB128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ocb128_decrypt | 3 | | taint.cpp:548:7:548:13 | memccpy | (OCB128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ocb128_encrypt | 3 | | taint.cpp:548:7:548:13 | memccpy | (OSSL_HPKE_CTX *,const char *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_psk | 3 | @@ -9545,16 +11189,31 @@ signatureMatches | taint.cpp:548:7:548:13 | memccpy | (const ML_DSA_KEY *,int,const uint8_t *,size_t) | | ossl_ml_dsa_mu_init | 3 | | taint.cpp:548:7:548:13 | memccpy | (const VECTOR *,uint32_t,uint8_t *,size_t) | | ossl_ml_dsa_w1_encode | 3 | | taint.cpp:548:7:548:13 | memccpy | (const u128[16],uint8_t *,const uint8_t *,size_t) | | ossl_polyval_ghash_hash | 3 | +| taint.cpp:548:7:548:13 | memccpy | (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 3 | | taint.cpp:548:7:548:13 | memccpy | (int *,X509 *,stack_st_X509 *,unsigned long) | | X509_chain_check_suiteb | 3 | | taint.cpp:548:7:548:13 | memccpy | (int,ENGINE *,const unsigned char *,size_t) | | EVP_PKEY_new_raw_private_key | 3 | | taint.cpp:548:7:548:13 | memccpy | (int,ENGINE *,const unsigned char *,size_t) | | EVP_PKEY_new_raw_public_key | 3 | | taint.cpp:548:7:548:13 | memccpy | (int,const regex_t *,char *,size_t) | | jim_regerror | 3 | +| taint.cpp:548:7:548:13 | memccpy | (int,const void *,char *,size_t) | | uv_inet_ntop | 3 | | taint.cpp:548:7:548:13 | memccpy | (int,int,size_t,size_t) | | ossl_rand_pool_new | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 3 | +| taint.cpp:548:7:548:13 | memccpy | (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 3 | | taint.cpp:548:7:548:13 | memccpy | (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 3 | +| taint.cpp:548:7:548:13 | memccpy | (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 3 | +| taint.cpp:548:7:548:13 | memccpy | (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 3 | +| taint.cpp:548:7:548:13 | memccpy | (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 3 | +| taint.cpp:548:7:548:13 | memccpy | (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 3 | | taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_add_words | 2 | | taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_add_words | 3 | | taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_words | 2 | | taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_words | 3 | +| taint.cpp:548:7:548:13 | memccpy | (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 3 | | taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_ccm_stream_final | 3 | | taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_cipher_generic_block_final | 3 | | taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_gcm_stream_final | 3 | @@ -9567,6 +11226,9 @@ signatureMatches | taint.cpp:558:7:558:12 | strcat | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:558:7:558:12 | strcat | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:558:7:558:12 | strcat | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:558:7:558:12 | strcat | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:558:7:558:12 | strcat | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:558:7:558:12 | strcat | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:558:7:558:12 | strcat | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:558:7:558:12 | strcat | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:558:7:558:12 | strcat | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -9577,10 +11239,14 @@ signatureMatches | taint.cpp:558:7:558:12 | strcat | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:558:7:558:12 | strcat | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:558:7:558:12 | strcat | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:558:7:558:12 | strcat | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:558:7:558:12 | strcat | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:558:7:558:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:558:7:558:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -9637,19 +11303,41 @@ signatureMatches | taint.cpp:558:7:558:12 | strcat | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:558:7:558:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:558:7:558:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:558:7:558:12 | strcat | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:558:7:558:12 | strcat | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:558:7:558:12 | strcat | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | ossl_pem_check_suffix | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | ossl_v3_name_cmp | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:558:7:558:12 | strcat | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:558:7:558:12 | strcat | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:558:7:558:12 | strcat | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:558:7:558:12 | strcat | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:558:7:558:12 | strcat | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:558:7:558:12 | strcat | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:558:7:558:12 | strcat | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:558:7:558:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:558:7:558:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:558:7:558:12 | strcat | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:558:7:558:12 | strcat | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | gzdopen | 1 | | taint.cpp:558:7:558:12 | strcat | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | str2num | 1 | +| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | str2unum | 1 | | taint.cpp:558:7:558:12 | strcat | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:558:7:558:12 | strcat | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:558:7:558:12 | strcat | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -9660,12 +11348,16 @@ signatureMatches | taint.cpp:558:7:558:12 | strcat | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:558:7:558:12 | strcat | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:558:7:558:12 | strcat | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:558:7:558:12 | strcat | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | taint.cpp:560:6:560:16 | test_strcat | (PKCS7 *,int,long,char *) | | PKCS7_ctrl | 3 | | taint.cpp:560:6:560:16 | test_strcat | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 2 | | taint.cpp:560:6:560:16 | test_strcat | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 3 | | taint.cpp:560:6:560:16 | test_strcat | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_init | 3 | | taint.cpp:560:6:560:16 | test_strcat | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_old_init | 3 | | taint.cpp:560:6:560:16 | test_strcat | (action **,e_action,symbol *,char *) | | Action_add | 3 | +| taint.cpp:560:6:560:16 | test_strcat | (const char *,const char *,char *,char *) | | uv__idna_toascii | 2 | +| taint.cpp:560:6:560:16 | test_strcat | (const char *,const char *,char *,char *) | | uv__idna_toascii | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_bio_CMS | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DH **,pem_password_cb *,void *) | | PEM_read_bio_DHparams | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAPrivateKey | 3 | @@ -9693,6 +11385,9 @@ signatureMatches | taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8 | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,size_t,..(*)(..),void *) | | ossl_quic_demux_new | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read_bio | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (DSO *,int,long,void *) | | DSO_ctrl | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 2 | | taint.cpp:570:16:570:25 | _mbsncat_l | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 3 | @@ -9725,6 +11420,7 @@ signatureMatches | taint.cpp:570:16:570:25 | _mbsncat_l | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 2 | | taint.cpp:570:16:570:25 | _mbsncat_l | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (OCB128_CONTEXT *,OCB128_CONTEXT *,void *,void *) | | CRYPTO_ocb128_copy_ctx | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (OPENSSL_LHASH *,OPENSSL_LH_DOALL_FUNCARG_THUNK,OPENSSL_LH_DOALL_FUNCARG,void *) | | OPENSSL_LH_doall_arg_thunk | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (OSSL_PROVIDER *,int,..(*)(..),void *) | | evp_names_do_all | 3 | @@ -9750,8 +11446,14 @@ signatureMatches | taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pem_password | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pvk_password | 2 | | taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pvk_password | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | Curl_mime_read | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_header_cb | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_read_cb | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (const OSSL_NAMEMAP *,int,..(*)(..),void *) | | ossl_namemap_doall_names | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (int,unsigned long,..(*)(..),void *) | | RSA_generate_key | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_recover_init_sql | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_rtree_geometry_callback | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,const sqlite3_module *,void *) | | sqlite3_create_module | 3 | @@ -9761,11 +11463,15 @@ signatureMatches | taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,unsigned int,..(*)(..),void *) | | sqlite3_trace_v2 | 3 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (ENGINE *,const char *,long,void *,..(*)(..),int) | | ENGINE_ctrl_cmd | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (ENGINE_TABLE **,ENGINE_CLEANUP_CB *,ENGINE *,const int *,int,int) | | engine_table_register | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (EVP_CIPHER_CTX *,const EVP_CIPHER *,ENGINE *,const unsigned char *,const unsigned char *,int) | | EVP_CipherInit_ex | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (GENERAL_NAME *,const X509V3_EXT_METHOD *,X509V3_CTX *,int,const char *,int) | | a2i_GENERAL_NAME | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,Jim_Obj *const *,int,Jim_Obj **,int) | | Jim_DictKeysVector | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,Jim_Obj *const *,int,Jim_Obj *,int) | | Jim_SetDictKeysVector | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,const char *const *,int *,const char *,int) | | Jim_GetEnum | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (PKCS7 *,stack_st_X509 *,X509_STORE *,BIO *,BIO *,int) | | PKCS7_verify | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (QUIC_STREAM_MAP *,..(*)(..),void *,QUIC_RXFC *,QUIC_RXFC *,int) | | ossl_quic_stream_map_init | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (RSA *,const unsigned char *,const EVP_MD *,const EVP_MD *,const unsigned char *,int) | | RSA_verify_PKCS1_PSS_mgf1 | 5 | @@ -9792,6 +11498,11 @@ signatureMatches | taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,size_t,const SEED_KEY_SCHEDULE *,unsigned char[16],int) | | SEED_cbc_encrypt | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (const void *,const void *,int,int,..(*)(..),int) | | OBJ_bsearch_ex_ | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (unsigned char *,int,const unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_PKCS1_OAEP | 5 | | taint.cpp:589:7:589:12 | strsep | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | | taint.cpp:589:7:589:12 | strsep | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | @@ -9802,6 +11513,9 @@ signatureMatches | taint.cpp:589:7:589:12 | strsep | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:589:7:589:12 | strsep | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:589:7:589:12 | strsep | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:589:7:589:12 | strsep | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:589:7:589:12 | strsep | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:589:7:589:12 | strsep | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:589:7:589:12 | strsep | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:589:7:589:12 | strsep | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:589:7:589:12 | strsep | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -9812,10 +11526,14 @@ signatureMatches | taint.cpp:589:7:589:12 | strsep | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:589:7:589:12 | strsep | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:589:7:589:12 | strsep | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:589:7:589:12 | strsep | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:589:7:589:12 | strsep | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:589:7:589:12 | strsep | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:589:7:589:12 | strsep | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -9872,19 +11590,42 @@ signatureMatches | taint.cpp:589:7:589:12 | strsep | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:589:7:589:12 | strsep | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:589:7:589:12 | strsep | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | Curl_setstropt | 0 | +| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:589:7:589:12 | strsep | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:589:7:589:12 | strsep | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | ossl_pem_check_suffix | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | ossl_v3_name_cmp | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:589:7:589:12 | strsep | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:589:7:589:12 | strsep | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:589:7:589:12 | strsep | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:589:7:589:12 | strsep | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:589:7:589:12 | strsep | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:589:7:589:12 | strsep | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:589:7:589:12 | strsep | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:589:7:589:12 | strsep | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:589:7:589:12 | strsep | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:589:7:589:12 | strsep | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:589:7:589:12 | strsep | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | gzdopen | 1 | | taint.cpp:589:7:589:12 | strsep | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | str2num | 1 | +| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | str2unum | 1 | | taint.cpp:589:7:589:12 | strsep | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:589:7:589:12 | strsep | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:589:7:589:12 | strsep | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -9895,6 +11636,7 @@ signatureMatches | taint.cpp:589:7:589:12 | strsep | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:589:7:589:12 | strsep | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:589:7:589:12 | strsep | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:589:7:589:12 | strsep | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | taint.cpp:591:6:591:16 | test_strsep | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:591:6:591:16 | test_strsep | (char *) | | defossilize | 0 | | taint.cpp:591:6:591:16 | test_strsep | (char *) | | make_uppercase | 0 | @@ -9906,11 +11648,13 @@ signatureMatches | taint.cpp:602:7:602:13 | _strinc | (CONF_IMODULE *,void *) | | CONF_imodule_set_usr_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (CONF_MODULE *,void *) | | CONF_module_set_usr_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (CRYPTO_THREAD_LOCAL *,void *) | | CRYPTO_THREAD_set_local | 1 | +| taint.cpp:602:7:602:13 | _strinc | (Curl_tree *,void *) | | Curl_splayset | 1 | | taint.cpp:602:7:602:13 | _strinc | (DH_METHOD *,void *) | | DH_meth_set0_app_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (DSA_METHOD *,void *) | | DSA_meth_set0_app_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (EVP_CIPHER_CTX *,void *) | | EVP_CIPHER_CTX_set_app_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (EVP_CIPHER_CTX *,void *) | | EVP_CIPHER_CTX_set_cipher_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (EVP_KEYMGMT *,void *) | | evp_keymgmt_util_make_pkey | 1 | +| taint.cpp:602:7:602:13 | _strinc | (EVP_MAC_CTX **,void *) | | _libssh2_hmac_final | 1 | | taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_get1_id | 1 | | taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_set_app_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_set_data | 1 | @@ -9945,7 +11689,18 @@ signatureMatches | taint.cpp:602:7:602:13 | _strinc | (const char *,void *) | | collect_names | 1 | | taint.cpp:602:7:602:13 | _strinc | (int,void *) | | OSSL_STORE_INFO_new | 1 | | taint.cpp:602:7:602:13 | _strinc | (int,void *) | | sqlite3_randomness | 1 | +| taint.cpp:602:7:602:13 | _strinc | (nghttp2_queue *,void *) | | nghttp2_queue_push | 1 | +| taint.cpp:602:7:602:13 | _strinc | (nghttp2_session *,void *) | | nghttp2_session_set_user_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (unsigned char *,void *) | | pitem_new | 1 | +| taint.cpp:602:7:602:13 | _strinc | (uv_handle_t *,void *) | | uv_handle_set_data | 1 | +| taint.cpp:602:7:602:13 | _strinc | (uv_key_t *,void *) | | uv_key_set | 1 | +| taint.cpp:602:7:602:13 | _strinc | (uv_loop_t *,void *) | | uv_loop_set_data | 1 | +| taint.cpp:602:7:602:13 | _strinc | (uv_req_t *,void *) | | uv_req_set_data | 1 | +| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read16_be | 0 | +| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read16_le | 0 | +| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read32_le | 0 | +| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _libssh2_ntohu32 | 0 | +| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _libssh2_ntohu64 | 0 | | taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | ossl_quic_vlint_decode_unchecked | 0 | | taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | CStringT | CStringT | 0 | | taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | CStringT | operator= | 0 | @@ -9954,6 +11709,7 @@ signatureMatches | taint.cpp:604:16:604:22 | _strdec | (SM3_CTX *,const unsigned char *) | | ossl_sm3_transform | 1 | | taint.cpp:604:16:604:22 | _strdec | (TLS_RL_RECORD *,const unsigned char *) | | ossl_tls_rl_record_set_seq_num | 1 | | taint.cpp:606:6:606:17 | test__strinc | (BIO *,const EVP_PKEY *,int,pem_password_cb *,void *) | | i2b_PVK_bio | 4 | +| taint.cpp:606:6:606:17 | test__strinc | (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 4 | | taint.cpp:606:6:606:17 | test__strinc | (EVP_CIPHER_INFO *,unsigned char *,long *,pem_password_cb *,void *) | | PEM_do_header | 4 | | taint.cpp:606:6:606:17 | test__strinc | (EVP_PKEY *,EVP_KEYMGMT *,void *,OSSL_CALLBACK *,void *) | | evp_keymgmt_util_gen | 4 | | taint.cpp:606:6:606:17 | test__strinc | (EVP_PKEY_CTX *,int,int,int,void *) | | RSA_pkey_ctx_ctrl | 4 | @@ -9963,12 +11719,16 @@ signatureMatches | taint.cpp:606:6:606:17 | test__strinc | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *) | | BN_is_prime | 4 | | taint.cpp:606:6:606:17 | test__strinc | (const char *,const UI_METHOD *,void *,OSSL_STORE_post_process_info_fn,void *) | | OSSL_STORE_open | 4 | | taint.cpp:606:6:606:17 | test__strinc | (const char *,int,int,..(*)(..),void *) | | CONF_parse_list | 4 | +| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 4 | +| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 4 | +| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 4 | | taint.cpp:606:6:606:17 | test__strinc | (sqlite3 *,const char *,const char *,..(*)(..),void *) | | recoverInit | 4 | | taint.cpp:616:6:616:17 | test__mbsinc | (PKCS7 *,int,long,char *) | | PKCS7_ctrl | 3 | | taint.cpp:616:6:616:17 | test__mbsinc | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 3 | | taint.cpp:616:6:616:17 | test__mbsinc | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_init | 3 | | taint.cpp:616:6:616:17 | test__mbsinc | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_old_init | 3 | | taint.cpp:616:6:616:17 | test__mbsinc | (action **,e_action,symbol *,char *) | | Action_add | 3 | +| taint.cpp:616:6:616:17 | test__mbsinc | (const char *,const char *,char *,char *) | | uv__idna_toascii | 3 | | taint.cpp:626:6:626:17 | test__strdec | (BIO *,const BIGNUM *,const char *,int,unsigned char *) | | print_bignum_var | 4 | | taint.cpp:626:6:626:17 | test__strdec | (OSSL_LIB_CTX *,const char *,const QUIC_PKT_HDR *,const QUIC_CONN_ID *,unsigned char *) | | ossl_quic_calculate_retry_integrity_tag | 4 | | taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_decrypt_fields | 3 | @@ -9976,6 +11736,9 @@ signatureMatches | taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_encrypt_fields | 3 | | taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_encrypt_fields | 4 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | BIO_gethostbyname | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_copy_header_value | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_get_scheme_handler | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_getdate_capped | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Jim_StrDup | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | OPENSSL_LH_strhash | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -9986,11 +11749,18 @@ signatureMatches | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | X509_LOOKUP_meth_new | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | a2i_IPADDRESS | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | a2i_IPADDRESS_NC | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | last_component | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | opt_path_end | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | opt_progname | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | ossl_lh_strcasehash | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | strhash | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uc_script_byname | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uv__strdup | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | BIO_gethostbyname | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_copy_header_value | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_get_scheme_handler | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_getdate_capped | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Jim_StrDup | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | OPENSSL_LH_strhash | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -10001,10 +11771,14 @@ signatureMatches | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | X509_LOOKUP_meth_new | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | a2i_IPADDRESS | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | a2i_IPADDRESS_NC | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | last_component | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | opt_path_end | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | opt_progname | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | ossl_lh_strcasehash | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | strhash | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uc_script_byname | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uv__strdup | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | defossilize | 0 | | taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | make_uppercase | 0 | @@ -10015,6 +11789,7 @@ signatureMatches | taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | make_uppercase | 0 | | taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | next_item | 0 | | taint.cpp:677:6:677:27 | test_with_const_member | (char *) | CStringT | CStringT | 0 | +| taint.cpp:683:6:683:20 | argument_source | (void *) | | Curl_cpool_upkeep | 0 | | taint.cpp:683:6:683:20 | argument_source | (void *) | | ossl_kdf_data_new | 0 | | taint.cpp:707:8:707:14 | strncpy | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | | taint.cpp:707:8:707:14 | strncpy | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | @@ -10031,6 +11806,7 @@ signatureMatches | taint.cpp:709:6:709:17 | test_strncpy | (SSL_CTX *,char *) | | SSL_CTX_set_srp_username | 1 | | taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | sha1sum_file | 1 | | taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | sha3sum_file | 1 | +| taint.cpp:709:6:709:17 | test_strncpy | (curl_slist *,char *) | | Curl_slist_append_nodup | 1 | | taint.cpp:709:6:709:17 | test_strncpy | (unsigned long,char *) | | ERR_error_string | 1 | | taint.cpp:725:10:725:15 | strtol | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | | taint.cpp:725:10:725:15 | strtol | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | @@ -10057,6 +11833,11 @@ signatureMatches | taint.cpp:725:10:725:15 | strtol | (BIO *,const RSA *,int) | | RSA_print | 2 | | taint.cpp:725:10:725:15 | strtol | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | | taint.cpp:725:10:725:15 | strtol | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | +| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | +| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | +| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | +| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | +| taint.cpp:725:10:725:15 | strtol | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | | taint.cpp:725:10:725:15 | strtol | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | | taint.cpp:725:10:725:15 | strtol | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | | taint.cpp:725:10:725:15 | strtol | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | @@ -10093,6 +11874,8 @@ signatureMatches | taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | | taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | | taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | +| taint.cpp:725:10:725:15 | strtol | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | +| taint.cpp:725:10:725:15 | strtol | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | | taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | | taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | | taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | @@ -10178,6 +11961,7 @@ signatureMatches | taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | | taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | | taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | +| taint.cpp:725:10:725:15 | strtol | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | | taint.cpp:725:10:725:15 | strtol | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | | taint.cpp:725:10:725:15 | strtol | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | | taint.cpp:725:10:725:15 | strtol | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | @@ -10205,6 +11989,9 @@ signatureMatches | taint.cpp:725:10:725:15 | strtol | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | | taint.cpp:725:10:725:15 | strtol | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | | taint.cpp:725:10:725:15 | strtol | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | +| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 0 | +| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 1 | +| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | | taint.cpp:725:10:725:15 | strtol | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | | taint.cpp:725:10:725:15 | strtol | (const char *,const char *,int) | | CRYPTO_strdup | 2 | | taint.cpp:725:10:725:15 | strtol | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | @@ -10215,9 +12002,16 @@ signatureMatches | taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | | taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | | taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | +| taint.cpp:725:10:725:15 | strtol | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | | taint.cpp:725:10:725:15 | strtol | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | | taint.cpp:725:10:725:15 | strtol | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | | taint.cpp:725:10:725:15 | strtol | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | +| taint.cpp:725:10:725:15 | strtol | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | +| taint.cpp:725:10:725:15 | strtol | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | +| taint.cpp:725:10:725:15 | strtol | (gzFile,char *,int) | | gzgets | 2 | +| taint.cpp:725:10:725:15 | strtol | (gzFile,int,int) | | gzsetparams | 2 | +| taint.cpp:725:10:725:15 | strtol | (gzFile,off64_t,int) | | gzseek64 | 2 | +| taint.cpp:725:10:725:15 | strtol | (gzFile,off_t,int) | | gzseek | 2 | | taint.cpp:725:10:725:15 | strtol | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | | taint.cpp:725:10:725:15 | strtol | (int,int,int) | | ASN1_object_size | 2 | | taint.cpp:725:10:725:15 | strtol | (int,int,int) | | EVP_CIPHER_meth_new | 2 | @@ -10250,19 +12044,34 @@ signatureMatches | taint.cpp:725:10:725:15 | strtol | (unsigned int,int,int) | | ossl_blob_length | 2 | | taint.cpp:725:10:725:15 | strtol | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | | taint.cpp:725:10:725:15 | strtol | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv_stream_t *,int,int) | | uv__stream_open | 2 | | taint.cpp:725:10:725:15 | strtol | (void *,const char *,int) | | CRYPTO_secure_free | 2 | +| taint.cpp:725:10:725:15 | strtol | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | | taint.cpp:727:6:727:16 | test_strtol | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:727:6:727:16 | test_strtol | (char *) | | defossilize | 0 | | taint.cpp:727:6:727:16 | test_strtol | (char *) | | make_uppercase | 0 | | taint.cpp:727:6:727:16 | test_strtol | (char *) | | next_item | 0 | | taint.cpp:727:6:727:16 | test_strtol | (char *) | CStringT | CStringT | 0 | +| taint.cpp:735:7:735:12 | malloc | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | | taint.cpp:735:7:735:12 | malloc | (size_t) | | EVP_PKEY_meth_get0 | 0 | +| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztosi | 0 | +| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztosz | 0 | +| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztoui | 0 | +| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztoul | 0 | | taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_get_extension_type | 0 | | taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_param_bytes_to_blocks | 0 | | taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_quic_sstream_new | 0 | | taint.cpp:735:7:735:12 | malloc | (size_t) | | ssl_cert_new | 0 | | taint.cpp:735:7:735:12 | malloc | (unsigned long) | | BN_num_bits_word | 0 | | taint.cpp:735:7:735:12 | malloc | (unsigned long) | | BUF_MEM_new_ex | 0 | +| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | curlx_ultouc | 0 | +| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | curlx_ultous | 0 | | taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | | taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | | taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | @@ -10276,6 +12085,7 @@ signatureMatches | taint.cpp:736:7:736:13 | realloc | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | | taint.cpp:736:7:736:13 | realloc | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | | taint.cpp:736:7:736:13 | realloc | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | +| taint.cpp:736:7:736:13 | realloc | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | | taint.cpp:736:7:736:13 | realloc | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | | taint.cpp:736:7:736:13 | realloc | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | | taint.cpp:736:7:736:13 | realloc | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | @@ -10321,17 +12131,57 @@ signatureMatches | taint.cpp:736:7:736:13 | realloc | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | | taint.cpp:736:7:736:13 | realloc | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | | taint.cpp:736:7:736:13 | realloc | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | +| taint.cpp:736:7:736:13 | realloc | (bufq *,size_t) | | Curl_bufq_skip | 1 | +| taint.cpp:736:7:736:13 | realloc | (bufq *,size_t) | | Curl_bufq_unwrite | 1 | | taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | RAND_file_name | 1 | +| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | plain_method | 1 | | taint.cpp:736:7:736:13 | realloc | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | +| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | Curl_getn_scheme_handler | 1 | +| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | Curl_memdup0 | 1 | | taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | OPENSSL_strnlen | 1 | +| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | uv__strndup | 1 | | taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | +| taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | | taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | +| taint.cpp:736:7:736:13 | realloc | (const void *,size_t) | | Curl_memdup | 1 | +| taint.cpp:736:7:736:13 | realloc | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_init | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_tail | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_init | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_tail | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynhds *,size_t) | | Curl_dynhds_getn | 1 | +| taint.cpp:736:7:736:13 | realloc | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | | taint.cpp:736:7:736:13 | realloc | (int,size_t) | | ossl_calculate_comp_expansion | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | +| taint.cpp:736:7:736:13 | realloc | (uint8_t *,size_t) | | nghttp2_downcase | 1 | | taint.cpp:736:7:736:13 | realloc | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | | taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | JimDefaultAllocator | 0 | | taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | JimDefaultAllocator | 1 | +| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_devurandom | 0 | +| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_devurandom | 1 | +| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_getrandom | 0 | +| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_getrandom | 1 | +| taint.cpp:758:5:758:11 | sprintf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | | taint.cpp:758:5:758:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | | taint.cpp:758:5:758:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | +| taint.cpp:758:5:758:11 | sprintf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | | taint.cpp:760:6:760:23 | call_sprintf_twice | (ARGS *,char *) | | chopup_args | 1 | | taint.cpp:760:6:760:23 | call_sprintf_twice | (BIO *,char *) | | BIO_set_callback_arg | 1 | | taint.cpp:760:6:760:23 | call_sprintf_twice | (SRP_VBASE *,char *) | | SRP_VBASE_get1_by_user | 1 | @@ -10340,6 +12190,7 @@ signatureMatches | taint.cpp:760:6:760:23 | call_sprintf_twice | (SSL_CTX *,char *) | | SSL_CTX_set_srp_username | 1 | | taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | sha1sum_file | 1 | | taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | sha3sum_file | 1 | +| taint.cpp:760:6:760:23 | call_sprintf_twice | (curl_slist *,char *) | | Curl_slist_append_nodup | 1 | | taint.cpp:760:6:760:23 | call_sprintf_twice | (unsigned long,char *) | | ERR_error_string | 1 | | taint.cpp:782:7:782:11 | fopen | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | | taint.cpp:782:7:782:11 | fopen | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | @@ -10350,6 +12201,9 @@ signatureMatches | taint.cpp:782:7:782:11 | fopen | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:782:7:782:11 | fopen | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:782:7:782:11 | fopen | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:782:7:782:11 | fopen | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:782:7:782:11 | fopen | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:782:7:782:11 | fopen | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:782:7:782:11 | fopen | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:782:7:782:11 | fopen | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:782:7:782:11 | fopen | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -10360,10 +12214,14 @@ signatureMatches | taint.cpp:782:7:782:11 | fopen | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:782:7:782:11 | fopen | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:782:7:782:11 | fopen | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:782:7:782:11 | fopen | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:782:7:782:11 | fopen | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:782:7:782:11 | fopen | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:782:7:782:11 | fopen | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -10420,15 +12278,25 @@ signatureMatches | taint.cpp:782:7:782:11 | fopen | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:782:7:782:11 | fopen | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:782:7:782:11 | fopen | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:782:7:782:11 | fopen | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:782:7:782:11 | fopen | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:782:7:782:11 | fopen | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Configcmp | 0 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Curl_timestrcmp | 0 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | DES_crypt | 0 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | c_strcasecmp | 0 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | get_passwd | 0 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen | 0 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen64 | 0 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | openssl_fopen | 0 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | ossl_pem_check_suffix | 0 | @@ -10439,9 +12307,25 @@ signatureMatches | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_stricmp | 0 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:782:7:782:11 | fopen | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:782:7:782:11 | fopen | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:782:7:782:11 | fopen | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:782:7:782:11 | fopen | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:782:7:782:11 | fopen | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:782:7:782:11 | fopen | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:782:7:782:11 | fopen | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:782:7:782:11 | fopen | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:782:7:782:11 | fopen | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:782:7:782:11 | fopen | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:782:7:782:11 | fopen | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | gzdopen | 1 | | taint.cpp:782:7:782:11 | fopen | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | str2num | 1 | +| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | str2unum | 1 | | taint.cpp:782:7:782:11 | fopen | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:782:7:782:11 | fopen | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:782:7:782:11 | fopen | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -10452,17 +12336,22 @@ signatureMatches | taint.cpp:782:7:782:11 | fopen | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:782:7:782:11 | fopen | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:782:7:782:11 | fopen | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:782:7:782:11 | fopen | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | taint.cpp:783:5:783:11 | fopen_s | (CTLOG **,const char *,const char *) | | CTLOG_new_from_base64 | 1 | | taint.cpp:783:5:783:11 | fopen_s | (CTLOG **,const char *,const char *) | | CTLOG_new_from_base64 | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (CURL *,char **,const char *) | | add_file_name_to_url | 2 | | taint.cpp:783:5:783:11 | fopen_s | (ENGINE *,const char *,const char *) | | make_engine_uri | 1 | | taint.cpp:783:5:783:11 | fopen_s | (ENGINE *,const char *,const char *) | | make_engine_uri | 2 | | taint.cpp:783:5:783:11 | fopen_s | (EVP_PKEY_CTX *,const char *,const char *) | | EVP_PKEY_CTX_ctrl_str | 1 | | taint.cpp:783:5:783:11 | fopen_s | (EVP_PKEY_CTX *,const char *,const char *) | | EVP_PKEY_CTX_ctrl_str | 2 | | taint.cpp:783:5:783:11 | fopen_s | (FFC_PARAMS *,const char *,const char *) | | ossl_ffc_set_digest | 1 | | taint.cpp:783:5:783:11 | fopen_s | (FFC_PARAMS *,const char *,const char *) | | ossl_ffc_set_digest | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (GlobalConfig *,char **,const char *) | | get_url_file_name | 2 | | taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,Jim_Obj *,const char *) | | Jim_CompareStringImmediate | 2 | | taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,const char *,const char *) | | Jim_SetVariableStrWithStr | 1 | | taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,const char *,const char *) | | Jim_SetVariableStrWithStr | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 2 | | taint.cpp:783:5:783:11 | fopen_s | (OSSL_CMP_MSG *,OSSL_LIB_CTX *,const char *) | | ossl_cmp_msg_set0_libctx | 2 | | taint.cpp:783:5:783:11 | fopen_s | (OSSL_DECODER *,void *,const char *) | | ossl_decoder_instance_new_forprov | 2 | | taint.cpp:783:5:783:11 | fopen_s | (OSSL_LIB_CTX *,EVP_PKEY *,const char *) | | EVP_PKEY_CTX_new_from_pkey | 2 | @@ -10500,8 +12389,13 @@ signatureMatches | taint.cpp:783:5:783:11 | fopen_s | (const QUIC_TSERVER_ARGS *,const char *,const char *) | | ossl_quic_tserver_new | 1 | | taint.cpp:783:5:783:11 | fopen_s | (const QUIC_TSERVER_ARGS *,const char *,const char *) | | ossl_quic_tserver_new | 2 | | taint.cpp:783:5:783:11 | fopen_s | (const X509_ALGOR *,OSSL_LIB_CTX *,const char *) | | ossl_ec_key_param_from_x509_algor | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (const char **,char **,const char *) | | Curl_get_pathname | 2 | | taint.cpp:783:5:783:11 | fopen_s | (const char *,OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_read | 2 | | taint.cpp:783:5:783:11 | fopen_s | (const char *,sqlite3_filename,const char *) | | sqlite3_uri_parameter | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 1 | +| taint.cpp:783:5:783:11 | fopen_s | (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (gz_statep,int,const char *) | | gz_error | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (http_resp **,int,const char *) | | Curl_http_resp_make | 2 | | taint.cpp:783:5:783:11 | fopen_s | (int,OSSL_LIB_CTX *,const char *) | | PKCS12_init_ex | 2 | | taint.cpp:783:5:783:11 | fopen_s | (int,int,const char *) | | OSSL_CMP_STATUSINFO_new | 2 | | taint.cpp:783:5:783:11 | fopen_s | (lemon *,const char *,const char *) | | file_open | 1 | @@ -10514,6 +12408,7 @@ signatureMatches | taint.cpp:785:6:785:15 | fopen_test | (char *) | | next_item | 0 | | taint.cpp:785:6:785:15 | fopen_test | (char *) | CStringT | CStringT | 0 | | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 | +| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 | | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 | | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 | @@ -10529,7 +12424,13 @@ signatureMatches | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 | | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 | | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (char *,unsigned int) | | utf8_fromunicode | 1 | +| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (char *,unsigned int) | | uv_buf_init | 1 | +| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (const uv__io_t *,unsigned int) | | uv__io_active | 1 | +| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | +| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (gzFile,unsigned int) | | gzbuffer | 1 | +| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (z_streamp,unsigned int) | | inflate_fast | 1 | | taint.cpp:802:6:802:22 | SysAllocStringLen | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 | +| taint.cpp:802:6:802:22 | SysAllocStringLen | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | | taint.cpp:802:6:802:22 | SysAllocStringLen | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 | | taint.cpp:802:6:802:22 | SysAllocStringLen | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 | | taint.cpp:802:6:802:22 | SysAllocStringLen | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 | @@ -10545,6 +12446,11 @@ signatureMatches | taint.cpp:802:6:802:22 | SysAllocStringLen | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 | | taint.cpp:802:6:802:22 | SysAllocStringLen | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 | | taint.cpp:802:6:802:22 | SysAllocStringLen | (char *,unsigned int) | | utf8_fromunicode | 1 | +| taint.cpp:802:6:802:22 | SysAllocStringLen | (char *,unsigned int) | | uv_buf_init | 1 | +| taint.cpp:802:6:802:22 | SysAllocStringLen | (const uv__io_t *,unsigned int) | | uv__io_active | 1 | +| taint.cpp:802:6:802:22 | SysAllocStringLen | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | +| taint.cpp:802:6:802:22 | SysAllocStringLen | (gzFile,unsigned int) | | gzbuffer | 1 | +| taint.cpp:802:6:802:22 | SysAllocStringLen | (z_streamp,unsigned int) | | inflate_fast | 1 | | taint.cpp:815:7:815:12 | strchr | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | taint.cpp:815:7:815:12 | strchr | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -10563,6 +12469,8 @@ signatureMatches | taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:815:7:815:12 | strchr | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:815:7:815:12 | strchr | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:815:7:815:12 | strchr | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:815:7:815:12 | strchr | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:815:7:815:12 | strchr | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:815:7:815:12 | strchr | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:815:7:815:12 | strchr | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -10606,6 +12514,17 @@ signatureMatches | taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:815:7:815:12 | strchr | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:815:7:815:12 | strchr | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:815:7:815:12 | strchr | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -10723,8 +12642,10 @@ signatureMatches | taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:815:7:815:12 | strchr | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:815:7:815:12 | strchr | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:815:7:815:12 | strchr | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:815:7:815:12 | strchr | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:815:7:815:12 | strchr | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:815:7:815:12 | strchr | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:815:7:815:12 | strchr | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:815:7:815:12 | strchr | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -10797,12 +12718,22 @@ signatureMatches | taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:815:7:815:12 | strchr | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:815:7:815:12 | strchr | (gzFile,int) | | gzflush | 1 | +| taint.cpp:815:7:815:12 | strchr | (gzFile,int) | | gzputc | 1 | | taint.cpp:815:7:815:12 | strchr | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:815:7:815:12 | strchr | (int *,int) | | X509_TRUST_set | 1 | | taint.cpp:815:7:815:12 | strchr | (int,int) | | BN_security_bits | 1 | | taint.cpp:815:7:815:12 | strchr | (int,int) | | EVP_MD_meth_new | 1 | | taint.cpp:815:7:815:12 | strchr | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:815:7:815:12 | strchr | (int,int) | | acttab_alloc | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:815:7:815:12 | strchr | (rule *,int) | | Configlist_add | 1 | | taint.cpp:815:7:815:12 | strchr | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:815:7:815:12 | strchr | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -10837,6 +12768,7 @@ signatureMatches | taint.cpp:815:7:815:12 | strchr | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:815:7:815:12 | strchr | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:815:7:815:12 | strchr | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:815:7:815:12 | strchr | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:815:7:815:12 | strchr | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:815:7:815:12 | strchr | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:815:7:815:12 | strchr | (wchar_t,int) | CStringT | CStringT | 1 | @@ -10853,6 +12785,9 @@ signatureMatches | taint.cpp:822:6:822:19 | take_const_ptr | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -10863,10 +12798,14 @@ signatureMatches | taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -10923,15 +12862,25 @@ signatureMatches | taint.cpp:822:6:822:19 | take_const_ptr | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Configcmp | 0 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Curl_timestrcmp | 0 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | DES_crypt | 0 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | c_strcasecmp | 0 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | get_passwd | 0 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen | 0 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen64 | 0 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | openssl_fopen | 0 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | ossl_pem_check_suffix | 0 | @@ -10942,9 +12891,25 @@ signatureMatches | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_stricmp | 0 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | gzdopen | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | str2num | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | str2unum | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -10955,6 +12920,7 @@ signatureMatches | taint.cpp:822:6:822:19 | take_const_ptr | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | vector.cpp:13:6:13:9 | sink | (int) | | ASN1_STRING_type_new | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2bit | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2str | 0 | @@ -10973,6 +12939,9 @@ signatureMatches | vector.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get0 | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | c_tolower | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | c_toupper | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | curlx_sitouz | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | evp_pkey_type2name | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | ossl_tolower | 0 | @@ -10980,6 +12949,12 @@ signatureMatches | vector.cpp:13:6:13:9 | sink | (int) | | sqlite3_compileoption_get | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | sqlite3_errstr | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | tls13_alert_code | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | uv__accept | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | uv_err_name | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | uv_get_osfhandle | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | uv_strerror | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | uv_translate_sys_error | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | zError | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_STRING_type_new | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_tag2bit | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_tag2str | 0 | @@ -10998,6 +12973,9 @@ signatureMatches | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_TRUST_get0 | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_TRUST_get_by_id | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | c_tolower | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | c_toupper | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | curlx_sitouz | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | evp_pkey_type2name | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ossl_cmp_bodytype_to_string | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ossl_tolower | 0 | @@ -11005,6 +12983,12 @@ signatureMatches | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | sqlite3_compileoption_get | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | sqlite3_errstr | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | tls13_alert_code | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv__accept | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_err_name | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_get_osfhandle | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_strerror | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_translate_sys_error | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | zError | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_STRING_type_new | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_tag2bit | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_tag2str | 0 | @@ -11023,6 +13007,9 @@ signatureMatches | vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_TRUST_get0 | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_TRUST_get_by_id | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | c_tolower | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | c_toupper | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | curlx_sitouz | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | evp_pkey_type2name | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | ossl_cmp_bodytype_to_string | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | ossl_tolower | 0 | @@ -11030,6 +13017,12 @@ signatureMatches | vector.cpp:37:6:37:23 | test_element_taint | (int) | | sqlite3_compileoption_get | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | sqlite3_errstr | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | tls13_alert_code | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv__accept | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_err_name | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_get_osfhandle | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_strerror | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_translate_sys_error | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | zError | 0 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -11048,6 +13041,8 @@ signatureMatches | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | TXT_DB_read | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CURL *,int) | | curl_easy_pause | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH *,int) | | DH_clear_flags | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH *,int) | | DH_set_flags | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -11091,6 +13086,17 @@ signatureMatches | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LPCOLESTR,int) | CComBSTR | Append | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -11208,8 +13214,10 @@ signatureMatches | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (acttab *,int) | | acttab_insert | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char *,int) | | Curl_str2addr | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char *,int) | | PEM_proc_type | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char,int) | CStringT | CStringT | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIGNUM *,int) | | BN_get_flags | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -11276,12 +13284,22 @@ signatureMatches | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (gzFile,int) | | gzflush | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (gzFile,int) | | gzputc | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int *,int) | | X509_PURPOSE_set | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int *,int) | | X509_TRUST_set | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | BN_security_bits | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | EVP_MD_meth_new | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | EVP_PKEY_meth_new | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | acttab_alloc | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (rule *,int) | | Configlist_add | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (rule *,int) | | Configlist_addbasis | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -11316,6 +13334,7 @@ signatureMatches | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned char *,int) | | RAND_priv_bytes | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (void *,int) | | DSO_dsobyaddr | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (void *,int) | | sqlite3_realloc | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (wchar_t,int) | CStringT | CStringT | 1 | @@ -11337,6 +13356,9 @@ signatureMatches | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_TRUST_get0 | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_TRUST_get_by_id | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | c_tolower | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | c_toupper | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | curlx_sitouz | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | evp_pkey_type2name | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ossl_cmp_bodytype_to_string | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ossl_tolower | 0 | @@ -11344,6 +13366,12 @@ signatureMatches | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | sqlite3_compileoption_get | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | sqlite3_errstr | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | tls13_alert_code | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv__accept | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_err_name | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_get_osfhandle | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_strerror | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_translate_sys_error | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | zError | 0 | | vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | SRP_VBASE_new | 0 | | vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | defossilize | 0 | | vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | make_uppercase | 0 | @@ -11367,9 +13395,25 @@ signatureMatches | vector.cpp:454:7:454:12 | memcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 1 | | vector.cpp:454:7:454:12 | memcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | | vector.cpp:454:7:454:12 | memcpy | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | +| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | +| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | +| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | | vector.cpp:454:7:454:12 | memcpy | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | | vector.cpp:454:7:454:12 | memcpy | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | | vector.cpp:454:7:454:12 | memcpy | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 1 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 1 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 1 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 1 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 1 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | | vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | | vector.cpp:454:7:454:12 | memcpy | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | | vector.cpp:454:7:454:12 | memcpy | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | @@ -11382,6 +13426,9 @@ signatureMatches | vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | | vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | | vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | +| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | +| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | | vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 1 | | vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | | vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 1 | @@ -11393,6 +13440,7 @@ signatureMatches | vector.cpp:454:7:454:12 | memcpy | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | | vector.cpp:454:7:454:12 | memcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | | vector.cpp:454:7:454:12 | memcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | +| vector.cpp:454:7:454:12 | memcpy | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | | vector.cpp:454:7:454:12 | memcpy | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | | vector.cpp:454:7:454:12 | memcpy | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | | vector.cpp:454:7:454:12 | memcpy | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | @@ -11480,8 +13528,16 @@ signatureMatches | vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | | vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | | vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | +| vector.cpp:454:7:454:12 | memcpy | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 1 | +| vector.cpp:454:7:454:12 | memcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | +| vector.cpp:454:7:454:12 | memcpy | (char **,size_t *,size_t) | | Curl_str_number | 2 | +| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | Curl_strntolower | 2 | +| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | Curl_strntoupper | 2 | | vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | | vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | +| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | uv__strscpy | 2 | | vector.cpp:454:7:454:12 | memcpy | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | | vector.cpp:454:7:454:12 | memcpy | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | | vector.cpp:454:7:454:12 | memcpy | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | @@ -11495,21 +13551,65 @@ signatureMatches | vector.cpp:454:7:454:12 | memcpy | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | | vector.cpp:454:7:454:12 | memcpy | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | | vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | getpass_r | 2 | | vector.cpp:454:7:454:12 | memcpy | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const char *,const char *,size_t) | | c_strncasecmp | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | | vector.cpp:454:7:454:12 | memcpy | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | | vector.cpp:454:7:454:12 | memcpy | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | | vector.cpp:454:7:454:12 | memcpy | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const char *,void *,size_t) | | uv__random_readpath | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | | vector.cpp:454:7:454:12 | memcpy | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 1 | +| vector.cpp:454:7:454:12 | memcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | +| vector.cpp:454:7:454:12 | memcpy | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | | vector.cpp:454:7:454:12 | memcpy | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | +| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 1 | +| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | +| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 1 | +| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | +| vector.cpp:454:7:454:12 | memcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | +| vector.cpp:454:7:454:12 | memcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | +| vector.cpp:454:7:454:12 | memcpy | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | | vector.cpp:454:7:454:12 | memcpy | (int *,int *,size_t) | | EVP_PBE_get | 2 | +| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | Curl_strerror | 2 | +| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | uv_err_name_r | 2 | +| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | uv_strerror_r | 2 | +| vector.cpp:454:7:454:12 | memcpy | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | +| vector.cpp:454:7:454:12 | memcpy | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | | vector.cpp:454:7:454:12 | memcpy | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | | vector.cpp:454:7:454:12 | memcpy | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | +| vector.cpp:454:7:454:12 | memcpy | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | +| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | +| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 1 | +| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | +| vector.cpp:454:7:454:12 | memcpy | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | +| vector.cpp:454:7:454:12 | memcpy | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | | vector.cpp:454:7:454:12 | memcpy | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | | vector.cpp:454:7:454:12 | memcpy | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | | vector.cpp:454:7:454:12 | memcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | | vector.cpp:454:7:454:12 | memcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | +| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | +| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | +| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | +| vector.cpp:454:7:454:12 | memcpy | (void *,size_t,size_t) | | Curl_hash_str | 2 | | vector.cpp:454:7:454:12 | memcpy | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (BIO *,const EVP_PKEY *,int,pem_password_cb *,void *) | | i2b_PVK_bio | 4 | +| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 4 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_CIPHER_INFO *,unsigned char *,long *,pem_password_cb *,void *) | | PEM_do_header | 4 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_PKEY *,EVP_KEYMGMT *,void *,OSSL_CALLBACK *,void *) | | evp_keymgmt_util_gen | 4 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_PKEY_CTX *,int,int,int,void *) | | RSA_pkey_ctx_ctrl | 4 | @@ -11519,6 +13619,9 @@ signatureMatches | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *) | | BN_is_prime | 4 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const char *,const UI_METHOD *,void *,OSSL_STORE_post_process_info_fn,void *) | | OSSL_STORE_open | 4 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const char *,int,int,..(*)(..),void *) | | CONF_parse_list | 4 | +| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 4 | +| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 4 | +| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 4 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (sqlite3 *,const char *,const char *,..(*)(..),void *) | | recoverInit | 4 | | zmq.cpp:17:6:17:13 | test_zmc | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | @@ -11535,9 +13638,20 @@ signatureMatches | zmq.cpp:17:6:17:13 | test_zmc | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 1 | | zmq.cpp:17:6:17:13 | test_zmc | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | @@ -11550,6 +13664,10 @@ signatureMatches | zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 | @@ -11557,6 +13675,7 @@ signatureMatches | zmq.cpp:17:6:17:13 | test_zmc | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | @@ -11627,8 +13746,15 @@ signatureMatches | zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (char **,size_t *,size_t) | | Curl_str_number | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | Curl_strntolower | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | Curl_strntoupper | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | uv__strscpy | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | @@ -11645,19 +13771,68 @@ signatureMatches | zmq.cpp:17:6:17:13 | test_zmc | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 1 | | zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | getpass_r | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | getpass_r | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const char *,const char *,size_t) | | c_strncasecmp | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const char *,void *,size_t) | | uv__random_readpath | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr *,char *,size_t) | | uv_ip_name | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (int *,int *,size_t) | | EVP_PBE_get | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | Curl_strerror | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | Curl_strerror | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_err_name_r | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_err_name_r | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_strerror_r | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_strerror_r | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (void *,size_t,size_t) | | Curl_hash_str | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | getSignatureParameterName | (..(*)(..)) | | ASN1_SCTX_new | 0 | ..(*)(..) | @@ -11666,6 +13841,10 @@ getSignatureParameterName | (..(*)(..),..(*)(..),..(*)(..),..(*)(..)) | | X509_CRL_METHOD_new | 1 | ..(*)(..) | | (..(*)(..),..(*)(..),..(*)(..),..(*)(..)) | | X509_CRL_METHOD_new | 2 | ..(*)(..) | | (..(*)(..),..(*)(..),..(*)(..),..(*)(..)) | | X509_CRL_METHOD_new | 3 | ..(*)(..) | +| (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 0 | ..(*)(..) | +| (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 1 | ..(*)(..) | +| (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 2 | ..(*)(..) | +| (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 3 | void * | | (..(*)(..),d2i_of_void *,BIO *,void **) | | ASN1_d2i_bio | 0 | ..(*)(..) | | (..(*)(..),d2i_of_void *,BIO *,void **) | | ASN1_d2i_bio | 1 | d2i_of_void * | | (..(*)(..),d2i_of_void *,BIO *,void **) | | ASN1_d2i_bio | 2 | BIO * | @@ -12075,12 +14254,31 @@ getSignatureParameterName | (BIGNUM *) | | BN_get_rfc3526_prime_4096 | 0 | BIGNUM * | | (BIGNUM *) | | BN_get_rfc3526_prime_6144 | 0 | BIGNUM * | | (BIGNUM *) | | BN_get_rfc3526_prime_8192 | 0 | BIGNUM * | +| (BIGNUM **) | | _libssh2_dh_dtor | 0 | BIGNUM ** | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 0 | BIGNUM ** | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 1 | BIGNUM * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 2 | BIGNUM * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 3 | BIGNUM * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 4 | BN_CTX * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 0 | BIGNUM ** | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 1 | BIGNUM * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 2 | BIGNUM * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 3 | BIGNUM * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 4 | int | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 5 | BN_CTX * | +| (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 0 | BIGNUM ** | +| (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 1 | EVP_PKEY * | +| (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 2 | const unsigned char * | +| (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 3 | size_t | | (BIGNUM **,const char *) | | BN_asc2bn | 0 | BIGNUM ** | | (BIGNUM **,const char *) | | BN_asc2bn | 1 | const char * | | (BIGNUM **,const char *) | | BN_dec2bn | 0 | BIGNUM ** | | (BIGNUM **,const char *) | | BN_dec2bn | 1 | const char * | | (BIGNUM **,const char *) | | BN_hex2bn | 0 | BIGNUM ** | | (BIGNUM **,const char *) | | BN_hex2bn | 1 | const char * | +| (BIGNUM **,uint8_t[32],uint8_t[32]) | | _libssh2_curve25519_gen_k | 0 | BIGNUM ** | +| (BIGNUM **,uint8_t[32],uint8_t[32]) | | _libssh2_curve25519_gen_k | 1 | uint8_t[32] | +| (BIGNUM **,uint8_t[32],uint8_t[32]) | | _libssh2_curve25519_gen_k | 2 | uint8_t[32] | | (BIGNUM *,ASN1_INTEGER *) | | rand_serial | 0 | BIGNUM * | | (BIGNUM *,ASN1_INTEGER *) | | rand_serial | 1 | ASN1_INTEGER * | | (BIGNUM *,BIGNUM *) | | BN_swap | 0 | BIGNUM * | @@ -13444,6 +15642,106 @@ getSignatureParameterName | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | size_t | | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 0 | BUF_MEM * | | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | size_t | +| (BrotliBitReader *const,uint64_t,uint64_t *) | | BrotliSafeReadBits32Slow | 0 | BrotliBitReader *const | +| (BrotliBitReader *const,uint64_t,uint64_t *) | | BrotliSafeReadBits32Slow | 1 | uint64_t | +| (BrotliBitReader *const,uint64_t,uint64_t *) | | BrotliSafeReadBits32Slow | 2 | uint64_t * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 0 | BrotliDecoderState * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 1 | BrotliDecoderStateInternal * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 2 | BrotliSharedDictionaryType | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 3 | size_t | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 4 | const uint8_t[] | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 0 | BrotliDecoderState * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 1 | BrotliDecoderStateInternal * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 2 | brotli_decoder_metadata_start_func | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 3 | brotli_decoder_metadata_chunk_func | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 4 | void * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *) | | BrotliDecoderTakeOutput | 0 | BrotliDecoderState * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *) | | BrotliDecoderTakeOutput | 1 | BrotliDecoderStateInternal * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *) | | BrotliDecoderTakeOutput | 2 | size_t * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 0 | BrotliDecoderState * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 1 | BrotliDecoderStateInternal * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 2 | size_t * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 3 | const uint8_t ** | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 4 | size_t * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 5 | uint8_t ** | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 6 | size_t * | +| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 0 | BrotliDecoderStateInternal * | +| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 1 | HuffmanTreeGroup * | +| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 2 | uint64_t | +| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 3 | uint64_t | +| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 4 | uint64_t | +| (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 0 | BrotliDecoderStateInternal * | +| (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 1 | brotli_alloc_func | +| (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 2 | brotli_free_func | +| (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 3 | void * | +| (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 0 | BrotliDistanceParams * | +| (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 1 | uint32_t | +| (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 2 | uint32_t | +| (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 3 | int | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 0 | BrotliEncoderState * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 1 | BrotliEncoderStateInternal * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 2 | BrotliEncoderOperation | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 3 | size_t * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 4 | const uint8_t ** | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 5 | size_t * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 6 | uint8_t ** | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 7 | size_t * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t) | | BrotliEncoderSetParameter | 0 | BrotliEncoderState * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t) | | BrotliEncoderSetParameter | 1 | BrotliEncoderStateInternal * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t) | | BrotliEncoderSetParameter | 2 | BrotliEncoderParameter | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t) | | BrotliEncoderSetParameter | 3 | uint32_t | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *) | | BrotliEncoderAttachPreparedDictionary | 0 | BrotliEncoderState * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *) | | BrotliEncoderAttachPreparedDictionary | 1 | BrotliEncoderStateInternal * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *) | | BrotliEncoderAttachPreparedDictionary | 2 | const BrotliEncoderPreparedDictionary * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *) | | BrotliEncoderTakeOutput | 0 | BrotliEncoderState * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *) | | BrotliEncoderTakeOutput | 1 | BrotliEncoderStateInternal * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *) | | BrotliEncoderTakeOutput | 2 | size_t * | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 0 | BrotliOnePassArena * | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 1 | const uint8_t * | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 2 | size_t | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 3 | int | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 4 | int * | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 5 | size_t | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 6 | size_t * | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 7 | uint8_t * | +| (BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliSharedDictionaryAttach | 0 | BrotliSharedDictionaryInternal * | +| (BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliSharedDictionaryAttach | 1 | BrotliSharedDictionaryType | +| (BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliSharedDictionaryAttach | 2 | size_t | +| (BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliSharedDictionaryAttach | 3 | const uint8_t[] | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 0 | BrotliSharedDictionaryType | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 1 | size_t | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 2 | const uint8_t[] | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 3 | int | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 4 | brotli_alloc_func | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 5 | brotli_free_func | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 6 | void * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 0 | BrotliTwoPassArena * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 1 | const uint8_t * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 2 | size_t | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 3 | int | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 4 | uint32_t * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 5 | uint8_t * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 6 | int * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 7 | size_t | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 8 | size_t * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 9 | uint8_t * | +| (Bytef *,uLongf *,const Bytef *,uLong *) | | uncompress2 | 0 | Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong *) | | uncompress2 | 1 | uLongf * | +| (Bytef *,uLongf *,const Bytef *,uLong *) | | uncompress2 | 2 | const Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong *) | | uncompress2 | 3 | uLong * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | compress | 0 | Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | compress | 1 | uLongf * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | compress | 2 | const Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | compress | 3 | uLong | +| (Bytef *,uLongf *,const Bytef *,uLong) | | uncompress | 0 | Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | uncompress | 1 | uLongf * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | uncompress | 2 | const Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | uncompress | 3 | uLong | +| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 0 | Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 1 | uLongf * | +| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 2 | const Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 3 | uLong | +| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 4 | int | | (CA_DB *,time_t *) | | do_updatedb | 0 | CA_DB * | | (CA_DB *,time_t *) | | do_updatedb | 1 | time_t * | | (CAtlFile &) | CAtlFile | CAtlFile | 0 | CAtlFile & | @@ -13772,6 +16070,529 @@ getSignatureParameterName | (CT_POLICY_EVAL_CTX *,X509 *) | | CT_POLICY_EVAL_CTX_set1_issuer | 1 | X509 * | | (CT_POLICY_EVAL_CTX *,uint64_t) | | CT_POLICY_EVAL_CTX_set_time | 0 | CT_POLICY_EVAL_CTX * | | (CT_POLICY_EVAL_CTX *,uint64_t) | | CT_POLICY_EVAL_CTX_set_time | 1 | uint64_t | +| (CURL *) | | curl_easy_cleanup | 0 | CURL * | +| (CURL *) | | curl_easy_duphandle | 0 | CURL * | +| (CURL *) | | curl_easy_perform | 0 | CURL * | +| (CURL *) | | curl_easy_upkeep | 0 | CURL * | +| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 0 | CURL * | +| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 1 | GlobalConfig * | +| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 2 | const char * | +| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 3 | CURLoption | +| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 4 | curl_slist * | +| (CURL *,char **,const char *) | | add_file_name_to_url | 0 | CURL * | +| (CURL *,char **,const char *) | | add_file_name_to_url | 1 | char ** | +| (CURL *,char **,const char *) | | add_file_name_to_url | 2 | const char * | +| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 0 | CURL * | +| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 1 | const char * | +| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 2 | size_t | +| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 3 | unsigned int | +| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 4 | int | +| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 5 | curl_header ** | +| (CURL *,const void *,size_t,size_t *) | | curl_easy_send | 0 | CURL * | +| (CURL *,const void *,size_t,size_t *) | | curl_easy_send | 1 | const void * | +| (CURL *,const void *,size_t,size_t *) | | curl_easy_send | 2 | size_t | +| (CURL *,const void *,size_t,size_t *) | | curl_easy_send | 3 | size_t * | +| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 0 | CURL * | +| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 1 | const void * | +| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 2 | size_t | +| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 3 | size_t * | +| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 4 | curl_off_t | +| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 5 | unsigned int | +| (CURL *,curl_mimepart *,curl_httppost *,curl_read_callback) | | Curl_getformdata | 0 | CURL * | +| (CURL *,curl_mimepart *,curl_httppost *,curl_read_callback) | | Curl_getformdata | 1 | curl_mimepart * | +| (CURL *,curl_mimepart *,curl_httppost *,curl_read_callback) | | Curl_getformdata | 2 | curl_httppost * | +| (CURL *,curl_mimepart *,curl_httppost *,curl_read_callback) | | Curl_getformdata | 3 | curl_read_callback | +| (CURL *,int) | | curl_easy_pause | 0 | CURL * | +| (CURL *,int) | | curl_easy_pause | 1 | int | +| (CURL *,tool_mime *,curl_mime **) | | tool2curlmime | 0 | CURL * | +| (CURL *,tool_mime *,curl_mime **) | | tool2curlmime | 1 | tool_mime * | +| (CURL *,tool_mime *,curl_mime **) | | tool2curlmime | 2 | curl_mime ** | +| (CURL *,unsigned int,int,curl_header *) | | curl_easy_nextheader | 0 | CURL * | +| (CURL *,unsigned int,int,curl_header *) | | curl_easy_nextheader | 1 | unsigned int | +| (CURL *,unsigned int,int,curl_header *) | | curl_easy_nextheader | 2 | int | +| (CURL *,unsigned int,int,curl_header *) | | curl_easy_nextheader | 3 | curl_header * | +| (CURL *,void *,size_t,size_t *) | | curl_easy_recv | 0 | CURL * | +| (CURL *,void *,size_t,size_t *) | | curl_easy_recv | 1 | void * | +| (CURL *,void *,size_t,size_t *) | | curl_easy_recv | 2 | size_t | +| (CURL *,void *,size_t,size_t *) | | curl_easy_recv | 3 | size_t * | +| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 0 | CURL * | +| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 1 | void * | +| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 2 | size_t | +| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 3 | size_t * | +| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 4 | const curl_ws_frame ** | +| (CURLM *,CURL *) | | curl_multi_add_handle | 0 | CURLM * | +| (CURLM *,CURL *) | | curl_multi_add_handle | 1 | CURL * | +| (CURLM *,CURL *) | | curl_multi_remove_handle | 0 | CURLM * | +| (CURLM *,CURL *) | | curl_multi_remove_handle | 1 | CURL * | +| (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 0 | CURLM * | +| (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 1 | curl_socket_t | +| (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 2 | int * | +| (CURLM *,curl_socket_t,int,int *) | | curl_multi_socket_action | 0 | CURLM * | +| (CURLM *,curl_socket_t,int,int *) | | curl_multi_socket_action | 1 | curl_socket_t | +| (CURLM *,curl_socket_t,int,int *) | | curl_multi_socket_action | 2 | int | +| (CURLM *,curl_socket_t,int,int *) | | curl_multi_socket_action | 3 | int * | +| (CURLM *,int *) | | curl_multi_info_read | 0 | CURLM * | +| (CURLM *,int *) | | curl_multi_info_read | 1 | int * | +| (CURLM *,int *) | | curl_multi_perform | 0 | CURLM * | +| (CURLM *,int *) | | curl_multi_perform | 1 | int * | +| (CURLM *,int *) | | curl_multi_socket_all | 0 | CURLM * | +| (CURLM *,int *) | | curl_multi_socket_all | 1 | int * | +| (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 0 | CURLSH * | +| (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 1 | CURLSHoption | +| (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | ... | +| (CURLU *,CURLUPart,const char *,unsigned int) | | curl_url_set | 0 | CURLU * | +| (CURLU *,CURLUPart,const char *,unsigned int) | | curl_url_set | 1 | CURLUPart | +| (CURLU *,CURLUPart,const char *,unsigned int) | | curl_url_set | 2 | const char * | +| (CURLU *,CURLUPart,const char *,unsigned int) | | curl_url_set | 3 | unsigned int | +| (CURLU *,const char *) | | Curl_url_set_authority | 0 | CURLU * | +| (CURLU *,const char *) | | Curl_url_set_authority | 1 | const char * | +| (CURLU *,const char *,char **,OperationConfig *) | | ipfs_url_rewrite | 0 | CURLU * | +| (CURLU *,const char *,char **,OperationConfig *) | | ipfs_url_rewrite | 1 | const char * | +| (CURLU *,const char *,char **,OperationConfig *) | | ipfs_url_rewrite | 2 | char ** | +| (CURLU *,const char *,char **,OperationConfig *) | | ipfs_url_rewrite | 3 | OperationConfig * | +| (CompoundDictionary *,const PreparedDictionary *) | | AttachPreparedDictionary | 0 | CompoundDictionary * | +| (CompoundDictionary *,const PreparedDictionary *) | | AttachPreparedDictionary | 1 | const PreparedDictionary * | +| (Curl_cfilter *) | | Curl_conn_cf_is_ssl | 0 | Curl_cfilter * | +| (Curl_cfilter *) | | Curl_ssl_cf_get_primary_config | 0 | Curl_cfilter * | +| (Curl_cfilter **,Curl_easy *) | | Curl_conn_cf_discard_chain | 0 | Curl_cfilter ** | +| (Curl_cfilter **,Curl_easy *) | | Curl_conn_cf_discard_chain | 1 | Curl_easy * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 0 | Curl_cfilter ** | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 1 | Curl_easy * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 2 | connectdata * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 3 | const Curl_addrinfo * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 4 | int | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 0 | Curl_cfilter ** | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 1 | Curl_easy * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 2 | connectdata * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 3 | const Curl_addrinfo * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 4 | int | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 0 | Curl_cfilter ** | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 1 | Curl_easy * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 2 | connectdata * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 3 | const Curl_addrinfo * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 4 | int | +| (Curl_cfilter **,const Curl_cftype *,void *) | | Curl_cf_create | 0 | Curl_cfilter ** | +| (Curl_cfilter **,const Curl_cftype *,void *) | | Curl_cf_create | 1 | const Curl_cftype * | +| (Curl_cfilter **,const Curl_cftype *,void *) | | Curl_cf_create | 2 | void * | +| (Curl_cfilter *,Curl_cfilter *) | | Curl_conn_cf_insert_after | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_cfilter *) | | Curl_conn_cf_insert_after | 1 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *) | | Curl_ssl_cf_get_config | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *) | | Curl_ssl_cf_get_config | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 2 | bool | +| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 3 | int | +| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 4 | int | +| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 5 | void * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_put | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_put | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_put | 2 | const char * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_put | 3 | Curl_ssl_session * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_return | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_return | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_return | 2 | const char * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_return | 3 | Curl_ssl_session * | +| (Curl_cfilter *,Curl_easy *,const char *,void **) | | Curl_ssl_scache_get_obj | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,const char *,void **) | | Curl_ssl_scache_get_obj | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,const char *,void **) | | Curl_ssl_scache_get_obj | 2 | const char * | +| (Curl_cfilter *,Curl_easy *,const char *,void **) | | Curl_ssl_scache_get_obj | 3 | void ** | +| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 2 | curl_socket_t * | +| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 3 | const Curl_sockaddr_ex ** | +| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 4 | ip_quadruple * | +| (Curl_cfilter *,Curl_easy *,easy_pollset *) | | Curl_conn_cf_adjust_pollset | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,easy_pollset *) | | Curl_conn_cf_adjust_pollset | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,easy_pollset *) | | Curl_conn_cf_adjust_pollset | 2 | easy_pollset * | +| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 2 | ssl_connect_data * | +| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 3 | const unsigned char * | +| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 4 | size_t | +| (Curl_cfilter *,Curl_easy *,timediff_t) | | Curl_conn_cf_poll | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,timediff_t) | | Curl_conn_cf_poll | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,timediff_t) | | Curl_conn_cf_poll | 2 | timediff_t | +| (Curl_cfilter *,const char **,int *,bool *) | | Curl_http_proxy_get_destination | 0 | Curl_cfilter * | +| (Curl_cfilter *,const char **,int *,bool *) | | Curl_http_proxy_get_destination | 1 | const char ** | +| (Curl_cfilter *,const char **,int *,bool *) | | Curl_http_proxy_get_destination | 2 | int * | +| (Curl_cfilter *,const char **,int *,bool *) | | Curl_http_proxy_get_destination | 3 | bool * | +| (Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase) | | Curl_creader_create | 0 | Curl_creader ** | +| (Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase) | | Curl_creader_create | 1 | Curl_easy * | +| (Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase) | | Curl_creader_create | 2 | const Curl_crtype * | +| (Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase) | | Curl_creader_create | 3 | Curl_creader_phase | +| (Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase) | | Curl_cwriter_create | 0 | Curl_cwriter ** | +| (Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase) | | Curl_cwriter_create | 1 | Curl_easy * | +| (Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase) | | Curl_cwriter_create | 2 | const Curl_cwtype * | +| (Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase) | | Curl_cwriter_create | 3 | Curl_cwriter_phase | +| (Curl_easy *) | | Curl_connect_only_attach | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_cpool_prune_dead | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_creader_will_rewind | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_init_userdefined | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_psl_use | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_req_send_more | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_ssl_easy_config_init | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_updatesocket | 0 | Curl_easy * | +| (Curl_easy **) | | Curl_close | 0 | Curl_easy ** | +| (Curl_easy *,CURLcode,bool) | | Curl_http_done | 0 | Curl_easy * | +| (Curl_easy *,CURLcode,bool) | | Curl_http_done | 1 | CURLcode | +| (Curl_easy *,CURLcode,bool) | | Curl_http_done | 2 | bool | +| (Curl_easy *,CURLoption,va_list) | | Curl_vsetopt | 0 | Curl_easy * | +| (Curl_easy *,CURLoption,va_list) | | Curl_vsetopt | 1 | CURLoption | +| (Curl_easy *,CURLoption,va_list) | | Curl_vsetopt | 2 | va_list | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 0 | Curl_easy * | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 1 | CookieInfo * | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 2 | bool | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 3 | bool | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 4 | const char * | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 5 | const char * | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 6 | const char * | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 7 | bool | +| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 0 | Curl_easy * | +| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 1 | CookieInfo * | +| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 2 | const char * | +| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 3 | const char * | +| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 4 | bool | +| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 5 | Curl_llist * | +| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 0 | Curl_easy * | +| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 1 | Curl_addrinfo * | +| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 2 | const char * | +| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 3 | size_t | +| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 4 | int | +| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 5 | bool | +| (Curl_easy *,Curl_chunker *) | | Curl_httpchunk_free | 0 | Curl_easy * | +| (Curl_easy *,Curl_chunker *) | | Curl_httpchunk_free | 1 | Curl_chunker * | +| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 0 | Curl_easy * | +| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 1 | Curl_chunker * | +| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 2 | bool | +| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 0 | Curl_easy * | +| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 1 | Curl_chunker * | +| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 2 | bool | +| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 0 | Curl_easy * | +| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 1 | Curl_chunker * | +| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 2 | char * | +| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 3 | size_t | +| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 4 | size_t * | +| (Curl_easy *,Curl_creader *) | | Curl_creader_add | 0 | Curl_easy * | +| (Curl_easy *,Curl_creader *) | | Curl_creader_add | 1 | Curl_creader * | +| (Curl_easy *,Curl_creader *) | | Curl_creader_set | 0 | Curl_easy * | +| (Curl_easy *,Curl_creader *) | | Curl_creader_set | 1 | Curl_creader * | +| (Curl_easy *,Curl_cwriter *) | | Curl_cwriter_add | 0 | Curl_easy * | +| (Curl_easy *,Curl_cwriter *) | | Curl_cwriter_add | 1 | Curl_cwriter * | +| (Curl_easy *,Curl_dns_entry **) | | Curl_resolv_check | 0 | Curl_easy * | +| (Curl_easy *,Curl_dns_entry **) | | Curl_resolv_check | 1 | Curl_dns_entry ** | +| (Curl_easy *,Curl_dns_entry **) | | Curl_resolv_unlink | 0 | Curl_easy * | +| (Curl_easy *,Curl_dns_entry **) | | Curl_resolv_unlink | 1 | Curl_dns_entry ** | +| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 0 | Curl_easy * | +| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 1 | altsvcinfo * | +| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 2 | const char * | +| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 3 | alpnid | +| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 4 | const char * | +| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 5 | unsigned short | +| (Curl_easy *,bool *) | | Curl_http | 0 | Curl_easy * | +| (Curl_easy *,bool *) | | Curl_http | 1 | bool * | +| (Curl_easy *,bool *) | | Curl_http_connect | 0 | Curl_easy * | +| (Curl_easy *,bool *) | | Curl_http_connect | 1 | bool * | +| (Curl_easy *,bool *) | | Curl_once_resolved | 0 | Curl_easy * | +| (Curl_easy *,bool *) | | Curl_once_resolved | 1 | bool * | +| (Curl_easy *,bool *,bool *) | | Curl_connect | 0 | Curl_easy * | +| (Curl_easy *,bool *,bool *) | | Curl_connect | 1 | bool * | +| (Curl_easy *,bool *,bool *) | | Curl_connect | 2 | bool * | +| (Curl_easy *,bool) | | Curl_creader_set_rewind | 0 | Curl_easy * | +| (Curl_easy *,bool) | | Curl_creader_set_rewind | 1 | bool | +| (Curl_easy *,bool) | | Curl_set_in_callback | 0 | Curl_easy * | +| (Curl_easy *,bool) | | Curl_set_in_callback | 1 | bool | +| (Curl_easy *,bool,dynbuf *) | | Curl_add_custom_headers | 0 | Curl_easy * | +| (Curl_easy *,bool,dynbuf *) | | Curl_add_custom_headers | 1 | bool | +| (Curl_easy *,bool,dynbuf *) | | Curl_add_custom_headers | 2 | dynbuf * | +| (Curl_easy *,char **) | | Curl_retry_request | 0 | Curl_easy * | +| (Curl_easy *,char **) | | Curl_retry_request | 1 | char ** | +| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_buf_borrow | 0 | Curl_easy * | +| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_buf_borrow | 1 | char ** | +| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_buf_borrow | 2 | size_t * | +| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_ulbuf_borrow | 0 | Curl_easy * | +| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_ulbuf_borrow | 1 | char ** | +| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_ulbuf_borrow | 2 | size_t * | +| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 0 | Curl_easy * | +| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 1 | char * | +| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 2 | size_t | +| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 3 | size_t * | +| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 4 | bool * | +| (Curl_easy *,connectdata *) | | Curl_attach_connection | 0 | Curl_easy * | +| (Curl_easy *,connectdata *) | | Curl_attach_connection | 1 | connectdata * | +| (Curl_easy *,connectdata *) | | Curl_cpool_add_conn | 0 | Curl_easy * | +| (Curl_easy *,connectdata *) | | Curl_cpool_add_conn | 1 | connectdata * | +| (Curl_easy *,connectdata *) | | Curl_cpool_check_limits | 0 | Curl_easy * | +| (Curl_easy *,connectdata *) | | Curl_cpool_check_limits | 1 | connectdata * | +| (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 1 | connectdata * | +| (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 2 | Curl_cpool_conn_do_cb * | +| (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 3 | void * | +| (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 1 | connectdata * | +| (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 2 | bool | +| (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 1 | connectdata * | +| (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 2 | bool | +| (Curl_easy *,connectdata *,const char **,Curl_HttpReq *) | | Curl_http_method | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,const char **,Curl_HttpReq *) | | Curl_http_method | 1 | connectdata * | +| (Curl_easy *,connectdata *,const char **,Curl_HttpReq *) | | Curl_http_method | 2 | const char ** | +| (Curl_easy *,connectdata *,const char **,Curl_HttpReq *) | | Curl_http_method | 3 | Curl_HttpReq * | +| (Curl_easy *,connectdata *,curl_socket_t *) | | Curl_http_getsock_do | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,curl_socket_t *) | | Curl_http_getsock_do | 1 | connectdata * | +| (Curl_easy *,connectdata *,curl_socket_t *) | | Curl_http_getsock_do | 2 | curl_socket_t * | +| (Curl_easy *,connectdata *,curltime *) | | Curl_conn_upkeep | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,curltime *) | | Curl_conn_upkeep | 1 | connectdata * | +| (Curl_easy *,connectdata *,curltime *) | | Curl_conn_upkeep | 2 | curltime * | +| (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 1 | connectdata * | +| (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | int | +| (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 1 | connectdata * | +| (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | int | +| (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 1 | connectdata * | +| (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | int | +| (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 1 | connectdata * | +| (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | int | +| (Curl_easy *,connectdata *,int,Curl_cfilter *) | | Curl_conn_cf_add | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int,Curl_cfilter *) | | Curl_conn_cf_add | 1 | connectdata * | +| (Curl_easy *,connectdata *,int,Curl_cfilter *) | | Curl_conn_cf_add | 2 | int | +| (Curl_easy *,connectdata *,int,Curl_cfilter *) | | Curl_conn_cf_add | 3 | Curl_cfilter * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *) | | Curl_cf_https_setup | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *) | | Curl_cf_https_setup | 1 | connectdata * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *) | | Curl_cf_https_setup | 2 | int | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *) | | Curl_cf_https_setup | 3 | const Curl_dns_entry * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 1 | connectdata * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 2 | int | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 3 | const Curl_dns_entry * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 4 | int | +| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 1 | connectdata * | +| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 2 | int | +| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 3 | const char * | +| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 4 | size_t | +| (Curl_easy *,connectdata *,int,curl_socket_t *) | | Curl_conn_tcp_listen_set | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int,curl_socket_t *) | | Curl_conn_tcp_listen_set | 1 | connectdata * | +| (Curl_easy *,connectdata *,int,curl_socket_t *) | | Curl_conn_tcp_listen_set | 2 | int | +| (Curl_easy *,connectdata *,int,curl_socket_t *) | | Curl_conn_tcp_listen_set | 3 | curl_socket_t * | +| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 0 | Curl_easy * | +| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 1 | const Curl_addrinfo * | +| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 2 | Curl_sockaddr_ex * | +| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 3 | int | +| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 4 | curl_socket_t * | +| (Curl_easy *,const Curl_crtype *) | | Curl_creader_get_by_type | 0 | Curl_easy * | +| (Curl_easy *,const Curl_crtype *) | | Curl_creader_get_by_type | 1 | const Curl_crtype * | +| (Curl_easy *,const Curl_cwtype *) | | Curl_cwriter_get_by_type | 0 | Curl_easy * | +| (Curl_easy *,const Curl_cwtype *) | | Curl_cwriter_get_by_type | 1 | const Curl_cwtype * | +| (Curl_easy *,const bufref *,ntlmdata *) | | Curl_auth_decode_ntlm_type2_message | 0 | Curl_easy * | +| (Curl_easy *,const bufref *,ntlmdata *) | | Curl_auth_decode_ntlm_type2_message | 1 | const bufref * | +| (Curl_easy *,const bufref *,ntlmdata *) | | Curl_auth_decode_ntlm_type2_message | 2 | ntlmdata * | +| (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 0 | Curl_easy * | +| (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | const char * | +| (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 0 | Curl_easy * | +| (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | const char * | +| (Curl_easy *,const char *,CookieInfo *,bool) | | Curl_cookie_init | 0 | Curl_easy * | +| (Curl_easy *,const char *,CookieInfo *,bool) | | Curl_cookie_init | 1 | const char * | +| (Curl_easy *,const char *,CookieInfo *,bool) | | Curl_cookie_init | 2 | CookieInfo * | +| (Curl_easy *,const char *,CookieInfo *,bool) | | Curl_cookie_init | 3 | bool | +| (Curl_easy *,const char *,FILE **,char **) | | Curl_fopen | 0 | Curl_easy * | +| (Curl_easy *,const char *,FILE **,char **) | | Curl_fopen | 1 | const char * | +| (Curl_easy *,const char *,FILE **,char **) | | Curl_fopen | 2 | FILE ** | +| (Curl_easy *,const char *,FILE **,char **) | | Curl_fopen | 3 | char ** | +| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 0 | Curl_easy * | +| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 1 | const char * | +| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 2 | const char * | +| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 3 | ntlmdata * | +| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 4 | bufref * | +| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 0 | Curl_easy * | +| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 1 | const char * | +| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 2 | int | +| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 3 | Curl_dns_entry ** | +| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 4 | timediff_t | +| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 0 | Curl_easy * | +| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 1 | const char * | +| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 2 | int | +| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 3 | bool | +| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 4 | Curl_dns_entry ** | +| (Curl_easy *,const char *,size_t,bool) | | Curl_http_write_resp_hd | 0 | Curl_easy * | +| (Curl_easy *,const char *,size_t,bool) | | Curl_http_write_resp_hd | 1 | const char * | +| (Curl_easy *,const char *,size_t,bool) | | Curl_http_write_resp_hd | 2 | size_t | +| (Curl_easy *,const char *,size_t,bool) | | Curl_http_write_resp_hd | 3 | bool | +| (Curl_easy *,const char *,size_t,size_t *) | | Curl_http_write_resp_hds | 0 | Curl_easy * | +| (Curl_easy *,const char *,size_t,size_t *) | | Curl_http_write_resp_hds | 1 | const char * | +| (Curl_easy *,const char *,size_t,size_t *) | | Curl_http_write_resp_hds | 2 | size_t | +| (Curl_easy *,const char *,size_t,size_t *) | | Curl_http_write_resp_hds | 3 | size_t * | +| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 0 | Curl_easy * | +| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 1 | const void * | +| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 2 | size_t | +| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 3 | bool | +| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 4 | size_t * | +| (Curl_easy *,const void *,size_t,size_t *) | | Curl_senddata | 0 | Curl_easy * | +| (Curl_easy *,const void *,size_t,size_t *) | | Curl_senddata | 1 | const void * | +| (Curl_easy *,const void *,size_t,size_t *) | | Curl_senddata | 2 | size_t | +| (Curl_easy *,const void *,size_t,size_t *) | | Curl_senddata | 3 | size_t * | +| (Curl_easy *,curl_mimepart *,const curl_mimepart *) | | Curl_mime_duppart | 0 | Curl_easy * | +| (Curl_easy *,curl_mimepart *,const curl_mimepart *) | | Curl_mime_duppart | 1 | curl_mimepart * | +| (Curl_easy *,curl_mimepart *,const curl_mimepart *) | | Curl_mime_duppart | 2 | const curl_mimepart * | +| (Curl_easy *,curl_off_t) | | Curl_pgrsEarlyData | 0 | Curl_easy * | +| (Curl_easy *,curl_off_t) | | Curl_pgrsEarlyData | 1 | curl_off_t | +| (Curl_easy *,curltime *) | | Curl_sendrecv | 0 | Curl_easy * | +| (Curl_easy *,curltime *) | | Curl_sendrecv | 1 | curltime * | +| (Curl_easy *,curltime *,bool) | | Curl_timeleft | 0 | Curl_easy * | +| (Curl_easy *,curltime *,bool) | | Curl_timeleft | 1 | curltime * | +| (Curl_easy *,curltime *,bool) | | Curl_timeleft | 2 | bool | +| (Curl_easy *,curltime) | | Curl_speedcheck | 0 | Curl_easy * | +| (Curl_easy *,curltime) | | Curl_speedcheck | 1 | curltime | +| (Curl_easy *,dynbuf *) | | Curl_req_send | 0 | Curl_easy * | +| (Curl_easy *,dynbuf *) | | Curl_req_send | 1 | dynbuf * | +| (Curl_easy *,easy_pollset *,..(*)(..)) | | Curl_pollset_add_socks | 0 | Curl_easy * | +| (Curl_easy *,easy_pollset *,..(*)(..)) | | Curl_pollset_add_socks | 1 | easy_pollset * | +| (Curl_easy *,easy_pollset *,..(*)(..)) | | Curl_pollset_add_socks | 2 | ..(*)(..) | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 0 | Curl_easy * | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 1 | easy_pollset * | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 2 | curl_socket_t | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 3 | bool * | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 4 | bool * | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 0 | Curl_easy * | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 1 | easy_pollset * | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 2 | curl_socket_t | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 3 | bool | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 4 | bool | +| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 0 | Curl_easy * | +| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 1 | easy_pollset * | +| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 2 | curl_socket_t | +| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 3 | int | +| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 4 | int | +| (Curl_easy *,int) | | Curl_conn_get_socket | 0 | Curl_easy * | +| (Curl_easy *,int) | | Curl_conn_get_socket | 1 | int | +| (Curl_easy *,int,Curl_addrinfo *) | | Curl_addrinfo_callback | 0 | Curl_easy * | +| (Curl_easy *,int,Curl_addrinfo *) | | Curl_addrinfo_callback | 1 | int | +| (Curl_easy *,int,Curl_addrinfo *) | | Curl_addrinfo_callback | 2 | Curl_addrinfo * | +| (Curl_easy *,int,bool,bool *) | | Curl_conn_connect | 0 | Curl_easy * | +| (Curl_easy *,int,bool,bool *) | | Curl_conn_connect | 1 | int | +| (Curl_easy *,int,bool,bool *) | | Curl_conn_connect | 2 | bool | +| (Curl_easy *,int,bool,bool *) | | Curl_conn_connect | 3 | bool * | +| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 0 | Curl_easy * | +| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 1 | int | +| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 2 | const char ** | +| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 3 | const char ** | +| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 4 | int * | +| (Curl_easy *,int,curltime *) | | Curl_shutdown_start | 0 | Curl_easy * | +| (Curl_easy *,int,curltime *) | | Curl_shutdown_start | 1 | int | +| (Curl_easy *,int,curltime *) | | Curl_shutdown_start | 2 | curltime * | +| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 0 | Curl_easy * | +| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 1 | int | +| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 2 | pingpong * | +| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 3 | int * | +| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 4 | size_t * | +| (Curl_easy *,pingpong *) | | Curl_pp_flushsend | 0 | Curl_easy * | +| (Curl_easy *,pingpong *) | | Curl_pp_flushsend | 1 | pingpong * | +| (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 0 | Curl_easy * | +| (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 1 | pingpong * | +| (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 2 | bool | +| (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 0 | Curl_easy * | +| (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 1 | pingpong * | +| (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 2 | const char * | +| (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 3 | va_list | +| (Curl_easy *,pingpong *,curl_socket_t *) | | Curl_pp_getsock | 0 | Curl_easy * | +| (Curl_easy *,pingpong *,curl_socket_t *) | | Curl_pp_getsock | 1 | pingpong * | +| (Curl_easy *,pingpong *,curl_socket_t *) | | Curl_pp_getsock | 2 | curl_socket_t * | +| (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 0 | Curl_easy * | +| (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 1 | size_t | +| (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 2 | bool | +| (Curl_easy *,size_t,char **) | | Curl_multi_xfer_sockbuf_borrow | 0 | Curl_easy * | +| (Curl_easy *,size_t,char **) | | Curl_multi_xfer_sockbuf_borrow | 1 | size_t | +| (Curl_easy *,size_t,char **) | | Curl_multi_xfer_sockbuf_borrow | 2 | char ** | +| (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 0 | Curl_easy * | +| (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 1 | ssize_t * | +| (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 2 | int * | +| (Curl_easy *,timerid,curltime) | | Curl_pgrsTimeWas | 0 | Curl_easy * | +| (Curl_easy *,timerid,curltime) | | Curl_pgrsTimeWas | 1 | timerid | +| (Curl_easy *,timerid,curltime) | | Curl_pgrsTimeWas | 2 | curltime | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 0 | Curl_easy * | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 1 | unsigned char * | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | size_t | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 0 | Curl_easy * | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 1 | unsigned char * | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | size_t | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 0 | Curl_easy * | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 1 | unsigned char * | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | size_t | +| (Curl_easy *,unsigned int) | | Curl_ssl_supports | 0 | Curl_easy * | +| (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | unsigned int | +| (Curl_easy *,void **) | | Curl_resolver_init | 0 | Curl_easy * | +| (Curl_easy *,void **) | | Curl_resolver_init | 1 | void ** | +| (Curl_easy *,void **,void *) | | Curl_resolver_duphandle | 0 | Curl_easy * | +| (Curl_easy *,void **,void *) | | Curl_resolver_duphandle | 1 | void ** | +| (Curl_easy *,void **,void *) | | Curl_resolver_duphandle | 2 | void * | +| (Curl_hash *) | | Curl_hash_count | 0 | Curl_hash * | +| (Curl_hash *,Curl_hash_iterator *) | | Curl_hash_start_iterate | 0 | Curl_hash * | +| (Curl_hash *,Curl_hash_iterator *) | | Curl_hash_start_iterate | 1 | Curl_hash_iterator * | +| (Curl_hash *,curl_off_t,void *) | | Curl_hash_offt_set | 0 | Curl_hash * | +| (Curl_hash *,curl_off_t,void *) | | Curl_hash_offt_set | 1 | curl_off_t | +| (Curl_hash *,curl_off_t,void *) | | Curl_hash_offt_set | 2 | void * | +| (Curl_hash *,size_t) | | Curl_init_dnscache | 0 | Curl_hash * | +| (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | size_t | +| (Curl_hash *,size_t,Curl_hash_dtor) | | Curl_hash_offt_init | 0 | Curl_hash * | +| (Curl_hash *,size_t,Curl_hash_dtor) | | Curl_hash_offt_init | 1 | size_t | +| (Curl_hash *,size_t,Curl_hash_dtor) | | Curl_hash_offt_init | 2 | Curl_hash_dtor | +| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 0 | Curl_hash * | +| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 1 | size_t | +| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 2 | hash_function | +| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 3 | comp_function | +| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 4 | Curl_hash_dtor | +| (Curl_hash *,void *,..(*)(..)) | | Curl_hash_clean_with_criterium | 0 | Curl_hash * | +| (Curl_hash *,void *,..(*)(..)) | | Curl_hash_clean_with_criterium | 1 | void * | +| (Curl_hash *,void *,..(*)(..)) | | Curl_hash_clean_with_criterium | 2 | ..(*)(..) | +| (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 0 | Curl_hash * | +| (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 1 | void * | +| (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 2 | size_t | +| (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 3 | void * | +| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 0 | Curl_hash * | +| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 1 | void * | +| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 2 | size_t | +| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 3 | void * | +| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 4 | Curl_hash_elem_dtor | +| (Curl_hash_iterator *) | | Curl_hash_next_element | 0 | Curl_hash_iterator * | +| (Curl_llist *) | | Curl_llist_count | 0 | Curl_llist * | +| (Curl_llist *) | | Curl_llist_head | 0 | Curl_llist * | +| (Curl_llist *,Curl_llist_dtor) | | Curl_llist_init | 0 | Curl_llist * | +| (Curl_llist *,Curl_llist_dtor) | | Curl_llist_init | 1 | Curl_llist_dtor | +| (Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *) | | Curl_llist_insert_next | 0 | Curl_llist * | +| (Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *) | | Curl_llist_insert_next | 1 | Curl_llist_node * | +| (Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *) | | Curl_llist_insert_next | 2 | const void * | +| (Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *) | | Curl_llist_insert_next | 3 | Curl_llist_node * | +| (Curl_llist *,const void *,Curl_llist_node *) | | Curl_llist_append | 0 | Curl_llist * | +| (Curl_llist *,const void *,Curl_llist_node *) | | Curl_llist_append | 1 | const void * | +| (Curl_llist *,const void *,Curl_llist_node *) | | Curl_llist_append | 2 | Curl_llist_node * | +| (Curl_llist_node *) | | Curl_node_elem | 0 | Curl_llist_node * | +| (Curl_llist_node *) | | Curl_node_llist | 0 | Curl_llist_node * | +| (Curl_llist_node *) | | Curl_node_next | 0 | Curl_llist_node * | +| (Curl_llist_node *) | | Curl_node_take_elem | 0 | Curl_llist_node * | +| (Curl_multi *) | | Curl_multi_max_concurrent_streams | 0 | Curl_multi * | +| (Curl_multi *,Curl_easy *,connectdata *) | | Curl_multi_add_perform | 0 | Curl_multi * | +| (Curl_multi *,Curl_easy *,connectdata *) | | Curl_multi_add_perform | 1 | Curl_easy * | +| (Curl_multi *,Curl_easy *,connectdata *) | | Curl_multi_add_perform | 2 | connectdata * | +| (Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *) | | Curl_multi_pollset_ev | 0 | Curl_multi * | +| (Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *) | | Curl_multi_pollset_ev | 1 | Curl_easy * | +| (Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *) | | Curl_multi_pollset_ev | 2 | easy_pollset * | +| (Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *) | | Curl_multi_pollset_ev | 3 | easy_pollset * | +| (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 0 | Curl_sockaddr_ex * | +| (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 1 | const Curl_addrinfo * | +| (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | int | +| (Curl_tree *) | | Curl_splayget | 0 | Curl_tree * | +| (Curl_tree *,Curl_tree *,Curl_tree **) | | Curl_splayremove | 0 | Curl_tree * | +| (Curl_tree *,Curl_tree *,Curl_tree **) | | Curl_splayremove | 1 | Curl_tree * | +| (Curl_tree *,Curl_tree *,Curl_tree **) | | Curl_splayremove | 2 | Curl_tree ** | +| (Curl_tree *,void *) | | Curl_splayset | 0 | Curl_tree * | +| (Curl_tree *,void *) | | Curl_splayset | 1 | void * | +| (Curl_waitfds *,curl_waitfd *,unsigned int) | | Curl_waitfds_init | 0 | Curl_waitfds * | +| (Curl_waitfds *,curl_waitfd *,unsigned int) | | Curl_waitfds_init | 1 | curl_waitfd * | +| (Curl_waitfds *,curl_waitfd *,unsigned int) | | Curl_waitfds_init | 2 | unsigned int | +| (Curl_waitfds *,easy_pollset *) | | Curl_waitfds_add_ps | 0 | Curl_waitfds * | +| (Curl_waitfds *,easy_pollset *) | | Curl_waitfds_add_ps | 1 | easy_pollset * | | (DES_LONG *,DES_key_schedule *,DES_key_schedule *,DES_key_schedule *) | | DES_decrypt3 | 0 | DES_LONG * | | (DES_LONG *,DES_key_schedule *,DES_key_schedule *,DES_key_schedule *) | | DES_decrypt3 | 1 | DES_key_schedule * | | (DES_LONG *,DES_key_schedule *,DES_key_schedule *,DES_key_schedule *) | | DES_decrypt3 | 2 | DES_key_schedule * | @@ -14257,6 +17078,17 @@ getSignatureParameterName | (EVP_CIPHER_CTX *) | | EVP_CIPHER_CTX_buf_noconst | 0 | EVP_CIPHER_CTX * | | (EVP_CIPHER_CTX *) | | EVP_CIPHER_CTX_get1_cipher | 0 | EVP_CIPHER_CTX * | | (EVP_CIPHER_CTX *) | | EVP_CIPHER_CTX_iv_noconst | 0 | EVP_CIPHER_CTX * | +| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 0 | EVP_CIPHER_CTX ** | +| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 1 | ..(*)(..) | +| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 2 | int | +| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 3 | unsigned char * | +| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 4 | size_t | +| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 5 | int | +| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 0 | EVP_CIPHER_CTX ** | +| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 1 | ..(*)(..) | +| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 2 | unsigned char * | +| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 3 | unsigned char * | +| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 4 | int | | (EVP_CIPHER_CTX *,ASN1_TYPE *) | | EVP_CIPHER_param_to_asn1 | 0 | EVP_CIPHER_CTX * | | (EVP_CIPHER_CTX *,ASN1_TYPE *) | | EVP_CIPHER_param_to_asn1 | 1 | ASN1_TYPE * | | (EVP_CIPHER_CTX *,ASN1_TYPE *) | | EVP_CIPHER_set_asn1_iv | 0 | EVP_CIPHER_CTX * | @@ -14524,12 +17356,27 @@ getSignatureParameterName | (EVP_KEYMGMT *,void *,char *,size_t) | | evp_keymgmt_util_get_deflt_digest_name | 3 | size_t | | (EVP_MAC *) | | EVP_MAC_CTX_new | 0 | EVP_MAC * | | (EVP_MAC_CTX *) | | EVP_MAC_CTX_get0_mac | 0 | EVP_MAC_CTX * | +| (EVP_MAC_CTX **) | | _libssh2_hmac_cleanup | 0 | EVP_MAC_CTX ** | | (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 0 | EVP_MAC_CTX ** | | (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 1 | const OSSL_PARAM[] | | (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 2 | const char * | | (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 3 | const char * | | (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 4 | const char * | | (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 5 | OSSL_LIB_CTX * | +| (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 0 | EVP_MAC_CTX ** | +| (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 1 | const void * | +| (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | size_t | +| (EVP_MAC_CTX **,void *) | | _libssh2_hmac_final | 0 | EVP_MAC_CTX ** | +| (EVP_MAC_CTX **,void *) | | _libssh2_hmac_final | 1 | void * | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 0 | EVP_MAC_CTX ** | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 1 | void * | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | size_t | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 0 | EVP_MAC_CTX ** | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 1 | void * | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | size_t | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 0 | EVP_MAC_CTX ** | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 1 | void * | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | size_t | | (EVP_MAC_CTX *,const OSSL_PARAM[],const char *,const char *,const char *,const char *,const unsigned char *,size_t) | | ossl_prov_set_macctx | 0 | EVP_MAC_CTX * | | (EVP_MAC_CTX *,const OSSL_PARAM[],const char *,const char *,const char *,const char *,const unsigned char *,size_t) | | ossl_prov_set_macctx | 1 | const OSSL_PARAM[] | | (EVP_MAC_CTX *,const OSSL_PARAM[],const char *,const char *,const char *,const char *,const unsigned char *,size_t) | | ossl_prov_set_macctx | 2 | const char * | @@ -14560,6 +17407,30 @@ getSignatureParameterName | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | unsigned long | | (EVP_MD_CTX *) | | EVP_MD_CTX_get1_md | 0 | EVP_MD_CTX * | | (EVP_MD_CTX *) | | EVP_MD_CTX_update_fn | 0 | EVP_MD_CTX * | +| (EVP_MD_CTX **) | | _libssh2_sha1_init | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **) | | _libssh2_sha256_init | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **) | | _libssh2_sha384_init | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **) | | _libssh2_sha512_init | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 1 | const void * | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | size_t | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 1 | const void * | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | size_t | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 1 | const void * | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | size_t | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 1 | const void * | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | size_t | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha1_final | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha1_final | 1 | unsigned char * | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha256_final | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha256_final | 1 | unsigned char * | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha384_final | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha384_final | 1 | unsigned char * | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha512_final | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha512_final | 1 | unsigned char * | | (EVP_MD_CTX *,..(*)(..)) | | EVP_MD_CTX_set_update_fn | 0 | EVP_MD_CTX * | | (EVP_MD_CTX *,..(*)(..)) | | EVP_MD_CTX_set_update_fn | 1 | ..(*)(..) | | (EVP_MD_CTX *,BIO *,X509_ALGOR *) | | ossl_cms_DigestAlgorithm_find_ctx | 0 | EVP_MD_CTX * | @@ -14682,6 +17553,24 @@ getSignatureParameterName | (EVP_PKEY *) | | ossl_evp_pkey_get1_ED25519 | 0 | EVP_PKEY * | | (EVP_PKEY *) | | ossl_evp_pkey_get1_X448 | 0 | EVP_PKEY * | | (EVP_PKEY *) | | ossl_evp_pkey_get1_X25519 | 0 | EVP_PKEY * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private | 0 | EVP_PKEY ** | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private | 1 | LIBSSH2_SESSION * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private | 2 | const char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private | 3 | const unsigned char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_rsa_new_private | 0 | EVP_PKEY ** | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_rsa_new_private | 1 | LIBSSH2_SESSION * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_rsa_new_private | 2 | const char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_rsa_new_private | 3 | const unsigned char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 0 | EVP_PKEY ** | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 1 | LIBSSH2_SESSION * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 2 | const char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 3 | size_t | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 4 | const unsigned char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 0 | EVP_PKEY ** | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 1 | LIBSSH2_SESSION * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 2 | const char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 3 | size_t | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 4 | const unsigned char * | | (EVP_PKEY **,const EVP_PKEY *) | | evp_pkey_copy_downgraded | 0 | EVP_PKEY ** | | (EVP_PKEY **,const EVP_PKEY *) | | evp_pkey_copy_downgraded | 1 | const EVP_PKEY * | | (EVP_PKEY **,const char *,const char *,const char *,int,OSSL_LIB_CTX *,const char *) | | OSSL_DECODER_CTX_new_for_pkey | 0 | EVP_PKEY ** | @@ -14710,6 +17599,40 @@ getSignatureParameterName | (EVP_PKEY **,const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | d2i_PUBKEY_ex | 2 | long | | (EVP_PKEY **,const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | d2i_PUBKEY_ex | 3 | OSSL_LIB_CTX * | | (EVP_PKEY **,const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | d2i_PUBKEY_ex | 4 | const char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 0 | EVP_PKEY ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 1 | unsigned char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 2 | const char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 3 | const unsigned char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 4 | size_t * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 5 | LIBSSH2_SESSION * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 6 | const char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 7 | const uint8_t * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 0 | EVP_PKEY ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 1 | unsigned char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 2 | const char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 3 | const unsigned char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 4 | size_t * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 5 | LIBSSH2_SESSION * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 6 | const char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 7 | const unsigned char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 0 | EVP_PKEY ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 1 | unsigned char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 2 | const char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 3 | const unsigned char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 4 | size_t * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 5 | LIBSSH2_SESSION * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 6 | const char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 7 | size_t | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 8 | const unsigned char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 0 | EVP_PKEY ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 1 | unsigned char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 2 | const char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 3 | const unsigned char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 4 | size_t * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 5 | LIBSSH2_SESSION * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 6 | const char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 7 | size_t | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 8 | const unsigned char * | | (EVP_PKEY *,DH *,dh_st *) | | EVP_PKEY_set1_DH | 0 | EVP_PKEY * | | (EVP_PKEY *,DH *,dh_st *) | | EVP_PKEY_set1_DH | 1 | DH * | | (EVP_PKEY *,DH *,dh_st *) | | EVP_PKEY_set1_DH | 2 | dh_st * | @@ -15466,6 +18389,30 @@ getSignatureParameterName | (FILE *,const X509_REQ *) | | i2d_X509_REQ_fp | 1 | const X509_REQ * | | (FILE *,const X509_SIG *) | | PEM_write_PKCS8 | 0 | FILE * | | (FILE *,const X509_SIG *) | | PEM_write_PKCS8 | 1 | const X509_SIG * | +| (FILE *,const char *,const char *,const char *,...) | | version_etc | 0 | FILE * | +| (FILE *,const char *,const char *,const char *,...) | | version_etc | 1 | const char * | +| (FILE *,const char *,const char *,const char *,...) | | version_etc | 2 | const char * | +| (FILE *,const char *,const char *,const char *,...) | | version_etc | 3 | const char * | +| (FILE *,const char *,const char *,const char *,...) | | version_etc | 4 | ... | +| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 0 | FILE * | +| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 1 | const char * | +| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 2 | const char * | +| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 3 | const char * | +| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 4 | const char *const * | +| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 0 | FILE * | +| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 1 | const char * | +| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 2 | const char * | +| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 3 | const char * | +| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 4 | const char *const * | +| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 5 | size_t | +| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 0 | FILE * | +| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 1 | const char * | +| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 2 | const char * | +| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 3 | const char * | +| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 4 | va_list | +| (FILE *,const char *,va_list) | | curl_mvfprintf | 0 | FILE * | +| (FILE *,const char *,va_list) | | curl_mvfprintf | 1 | const char * | +| (FILE *,const char *,va_list) | | curl_mvfprintf | 2 | va_list | | (FILE *,int *) | | tplt_skip_header | 0 | FILE * | | (FILE *,int *) | | tplt_skip_header | 1 | int * | | (FILE *,int,char *) | | tplt_linedir | 0 | FILE * | @@ -15565,6 +18512,24 @@ getSignatureParameterName | (GOST_KX_MESSAGE **,const unsigned char **,long) | | d2i_GOST_KX_MESSAGE | 0 | GOST_KX_MESSAGE ** | | (GOST_KX_MESSAGE **,const unsigned char **,long) | | d2i_GOST_KX_MESSAGE | 1 | const unsigned char ** | | (GOST_KX_MESSAGE **,const unsigned char **,long) | | d2i_GOST_KX_MESSAGE | 2 | long | +| (GlobalConfig *,char **,const char *) | | get_url_file_name | 0 | GlobalConfig * | +| (GlobalConfig *,char **,const char *) | | get_url_file_name | 1 | char ** | +| (GlobalConfig *,char **,const char *) | | get_url_file_name | 2 | const char * | +| (GlobalConfig *,const char *) | | setvariable | 0 | GlobalConfig * | +| (GlobalConfig *,const char *) | | setvariable | 1 | const char * | +| (GlobalConfig *,const char *,dynbuf *,bool *) | | varexpand | 0 | GlobalConfig * | +| (GlobalConfig *,const char *,dynbuf *,bool *) | | varexpand | 1 | const char * | +| (GlobalConfig *,const char *,dynbuf *,bool *) | | varexpand | 2 | dynbuf * | +| (GlobalConfig *,const char *,dynbuf *,bool *) | | varexpand | 3 | bool * | +| (GlobalConfig *,int,char *[]) | | operate | 0 | GlobalConfig * | +| (GlobalConfig *,int,char *[]) | | operate | 1 | int | +| (GlobalConfig *,int,char *[]) | | operate | 2 | char *[] | +| (GlobalConfig *,int,char *[]) | | parse_args | 0 | GlobalConfig * | +| (GlobalConfig *,int,char *[]) | | parse_args | 1 | int | +| (GlobalConfig *,int,char *[]) | | parse_args | 2 | char *[] | +| (GlobalConfig *,timeval *,bool) | | progress_meter | 0 | GlobalConfig * | +| (GlobalConfig *,timeval *,bool) | | progress_meter | 1 | timeval * | +| (GlobalConfig *,timeval *,bool) | | progress_meter | 2 | bool | | (HANDLE) | CAtlFile | CAtlFile | 0 | HANDLE | | (HINSTANCE,UINT) | CComBSTR | LoadString | 0 | HINSTANCE | | (HINSTANCE,UINT) | CComBSTR | LoadString | 1 | UINT | @@ -15582,6 +18547,8 @@ getSignatureParameterName | (HMAC_CTX *,const void *,int,const EVP_MD *,ENGINE *) | | HMAC_Init_ex | 4 | ENGINE * | | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 0 | HMAC_CTX * | | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | unsigned long | +| (HMAC_context *,unsigned char *) | | Curl_HMAC_final | 0 | HMAC_context * | +| (HMAC_context *,unsigned char *) | | Curl_HMAC_final | 1 | unsigned char * | | (HT *) | | ossl_ht_count | 0 | HT * | | (HT *,..(*)(..),void *) | | ossl_ht_foreach_until | 0 | HT * | | (HT *,..(*)(..),void *) | | ossl_ht_foreach_until | 1 | ..(*)(..) | @@ -15594,6 +18561,55 @@ getSignatureParameterName | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 1 | size_t | | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 2 | ..(*)(..) | | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 3 | void * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 0 | HistogramCommand * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 1 | HistogramCommand * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 2 | uint32_t * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 3 | uint32_t * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 4 | uint32_t * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 5 | HistogramPair * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 6 | size_t | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 7 | size_t | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 8 | size_t | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 9 | size_t | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 0 | HistogramDistance * | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 1 | HistogramDistance * | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 2 | uint32_t * | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 3 | uint32_t * | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 4 | uint32_t * | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 5 | HistogramPair * | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 6 | size_t | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 7 | size_t | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 8 | size_t | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 9 | size_t | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 0 | HistogramLiteral * | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 1 | HistogramLiteral * | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 2 | uint32_t * | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 3 | uint32_t * | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 4 | uint32_t * | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 5 | HistogramPair * | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 6 | size_t | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 7 | size_t | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 8 | size_t | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 9 | size_t | +| (HuffmanCode *,const uint8_t *const,uint16_t *) | | BrotliBuildCodeLengthsHuffmanTable | 0 | HuffmanCode * | +| (HuffmanCode *,const uint8_t *const,uint16_t *) | | BrotliBuildCodeLengthsHuffmanTable | 1 | const uint8_t *const | +| (HuffmanCode *,const uint8_t *const,uint16_t *) | | BrotliBuildCodeLengthsHuffmanTable | 2 | uint16_t * | +| (HuffmanCode *,int,const uint16_t *const,uint16_t *) | | BrotliBuildHuffmanTable | 0 | HuffmanCode * | +| (HuffmanCode *,int,const uint16_t *const,uint16_t *) | | BrotliBuildHuffmanTable | 1 | int | +| (HuffmanCode *,int,const uint16_t *const,uint16_t *) | | BrotliBuildHuffmanTable | 2 | const uint16_t *const | +| (HuffmanCode *,int,const uint16_t *const,uint16_t *) | | BrotliBuildHuffmanTable | 3 | uint16_t * | +| (HuffmanCode *,int,uint16_t *,uint32_t) | | BrotliBuildSimpleHuffmanTable | 0 | HuffmanCode * | +| (HuffmanCode *,int,uint16_t *,uint32_t) | | BrotliBuildSimpleHuffmanTable | 1 | int | +| (HuffmanCode *,int,uint16_t *,uint32_t) | | BrotliBuildSimpleHuffmanTable | 2 | uint16_t * | +| (HuffmanCode *,int,uint16_t *,uint32_t) | | BrotliBuildSimpleHuffmanTable | 3 | uint32_t | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 0 | HuffmanTree * | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 1 | const uint32_t * | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 2 | const size_t | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 3 | const size_t | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 4 | uint8_t * | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 5 | uint16_t * | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 6 | size_t * | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 7 | uint8_t * | | (IPAddressChoice *) | | IPAddressChoice_free | 0 | IPAddressChoice * | | (IPAddressChoice **,const unsigned char **,long) | | d2i_IPAddressChoice | 0 | IPAddressChoice ** | | (IPAddressChoice **,const unsigned char **,long) | | d2i_IPAddressChoice | 1 | const unsigned char ** | @@ -15970,6 +18986,530 @@ getSignatureParameterName | (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 1 | unsigned char | | (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 2 | size_t | | (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 3 | size_t | +| (LIBSSH2_AGENT *) | | libssh2_agent_get_identity_path | 0 | LIBSSH2_AGENT * | +| (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 0 | LIBSSH2_AGENT * | +| (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | const char * | +| (LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *) | | libssh2_agent_userauth | 0 | LIBSSH2_AGENT * | +| (LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *) | | libssh2_agent_userauth | 1 | const char * | +| (LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *) | | libssh2_agent_userauth | 2 | libssh2_agent_publickey * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *) | | libssh2_agent_get_identity | 0 | LIBSSH2_AGENT * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *) | | libssh2_agent_get_identity | 1 | libssh2_agent_publickey ** | +| (LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *) | | libssh2_agent_get_identity | 2 | libssh2_agent_publickey * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 0 | LIBSSH2_AGENT * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 1 | libssh2_agent_publickey * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 2 | unsigned char ** | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 3 | size_t * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 4 | const unsigned char * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 5 | size_t | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 6 | const char * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 7 | unsigned int | +| (LIBSSH2_CHANNEL *) | | _libssh2_channel_close | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | _libssh2_channel_free | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_close | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_eof | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_free | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_get_exit_status | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_request_auth_agent | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_send_eof | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_wait_closed | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_wait_eof | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 1 | char ** | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 2 | size_t * | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 3 | char ** | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 4 | size_t * | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 5 | char ** | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 6 | size_t * | +| (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 1 | const char * | +| (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | size_t | +| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 1 | const char * | +| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 2 | size_t | +| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 3 | const char * | +| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 4 | size_t | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 1 | const char * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 2 | unsigned int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 3 | const char * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 4 | unsigned int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 1 | const char * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 2 | unsigned int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 3 | const char * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 4 | unsigned int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 1 | const char * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 2 | unsigned int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 3 | const char * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 4 | unsigned int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 5 | int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 6 | int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 7 | int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 8 | int | +| (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | int | +| (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | int | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | int | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | int | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | int | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | int | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 1 | int | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 2 | char * | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 3 | size_t | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 1 | int | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 2 | char * | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 3 | size_t | +| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 1 | int | +| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 2 | const char * | +| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 3 | const char * | +| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 4 | int | +| (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 1 | int | +| (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 2 | const char * | +| (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 3 | size_t | +| (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 1 | int | +| (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 2 | const unsigned char * | +| (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 3 | size_t | +| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 1 | int | +| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 2 | int | +| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 3 | int | +| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 4 | int | +| (LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *) | | _libssh2_channel_receive_window_adjust | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *) | | _libssh2_channel_receive_window_adjust | 1 | uint32_t | +| (LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *) | | _libssh2_channel_receive_window_adjust | 2 | unsigned char | +| (LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *) | | _libssh2_channel_receive_window_adjust | 3 | unsigned int * | +| (LIBSSH2_CHANNEL *,unsigned long *) | | libssh2_channel_window_write_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,unsigned long *) | | libssh2_channel_window_write_ex | 1 | unsigned long * | +| (LIBSSH2_CHANNEL *,unsigned long *,unsigned long *) | | libssh2_channel_window_read_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,unsigned long *,unsigned long *) | | libssh2_channel_window_read_ex | 1 | unsigned long * | +| (LIBSSH2_CHANNEL *,unsigned long *,unsigned long *) | | libssh2_channel_window_read_ex | 2 | unsigned long * | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char) | | libssh2_channel_receive_window_adjust | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char) | | libssh2_channel_receive_window_adjust | 1 | unsigned long | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char) | | libssh2_channel_receive_window_adjust | 2 | unsigned char | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *) | | libssh2_channel_receive_window_adjust2 | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *) | | libssh2_channel_receive_window_adjust2 | 1 | unsigned long | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *) | | libssh2_channel_receive_window_adjust2 | 2 | unsigned char | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *) | | libssh2_channel_receive_window_adjust2 | 3 | unsigned int * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 0 | LIBSSH2_KNOWNHOSTS * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 1 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 2 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 3 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 4 | size_t | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 5 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 6 | size_t | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 7 | int | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 8 | libssh2_knownhost ** | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 0 | LIBSSH2_KNOWNHOSTS * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 1 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 2 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 3 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 4 | size_t | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 5 | int | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 6 | libssh2_knownhost ** | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 0 | LIBSSH2_KNOWNHOSTS * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 1 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 2 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 3 | size_t | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 4 | int | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 5 | libssh2_knownhost ** | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 0 | LIBSSH2_KNOWNHOSTS * | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 1 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 2 | int | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 3 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 4 | size_t | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 5 | int | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 6 | libssh2_knownhost ** | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *) | | libssh2_knownhost_get | 0 | LIBSSH2_KNOWNHOSTS * | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *) | | libssh2_knownhost_get | 1 | libssh2_knownhost ** | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *) | | libssh2_knownhost_get | 2 | libssh2_knownhost * | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 0 | LIBSSH2_KNOWNHOSTS * | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 1 | libssh2_knownhost * | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 2 | char * | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 3 | size_t | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 4 | size_t * | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 5 | int | +| (LIBSSH2_LISTENER *) | | _libssh2_channel_forward_cancel | 0 | LIBSSH2_LISTENER * | +| (LIBSSH2_LISTENER *) | | libssh2_channel_forward_accept | 0 | LIBSSH2_LISTENER * | +| (LIBSSH2_LISTENER *) | | libssh2_channel_forward_cancel | 0 | LIBSSH2_LISTENER * | +| (LIBSSH2_POLLFD *,unsigned int,long) | | libssh2_poll | 0 | LIBSSH2_POLLFD * | +| (LIBSSH2_POLLFD *,unsigned int,long) | | libssh2_poll | 1 | unsigned int | +| (LIBSSH2_POLLFD *,unsigned int,long) | | libssh2_poll | 2 | long | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 0 | LIBSSH2_PUBLICKEY * | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 1 | const unsigned char * | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 2 | unsigned long | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 3 | const unsigned char * | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 4 | unsigned long | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 0 | LIBSSH2_PUBLICKEY * | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 1 | const unsigned char * | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 2 | unsigned long | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 3 | const unsigned char * | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 4 | unsigned long | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 5 | char | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 6 | unsigned long | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 7 | const libssh2_publickey_attribute[] | +| (LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **) | | libssh2_publickey_list_fetch | 0 | LIBSSH2_PUBLICKEY * | +| (LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **) | | libssh2_publickey_list_fetch | 1 | unsigned long * | +| (LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **) | | libssh2_publickey_list_fetch | 2 | libssh2_publickey_list ** | +| (LIBSSH2_SESSION *) | | _libssh2_channel_nextid | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | _libssh2_transport_read | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_agent_init | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_knownhost_init | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_publickey_init | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_abstract | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_banner_get | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_block_directions | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_free | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_get_blocking | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_get_read_timeout | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_get_timeout | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_last_errno | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_sftp_init | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 1 | EVP_PKEY ** | +| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 2 | unsigned char ** | +| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 3 | size_t * | +| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 4 | libssh2_curve_type | +| (LIBSSH2_SESSION *,char **) | | libssh2_userauth_banner | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,char **) | | libssh2_userauth_banner | 1 | char ** | +| (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 1 | char ** | +| (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 2 | int * | +| (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 3 | int | +| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 1 | char ** | +| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 2 | size_t * | +| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 3 | const char * | +| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 4 | size_t | +| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 1 | char ** | +| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 2 | unsigned int * | +| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 3 | const char * | +| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 4 | unsigned int | +| (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | const char * | +| (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 2 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 3 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 4 | size_t | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 5 | unsigned char ** | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 6 | size_t * | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 2 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 3 | const unsigned char * | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 4 | FILE * | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 5 | unsigned char ** | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 6 | size_t * | +| (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 2 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 3 | int | +| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 2 | const unsigned char * | +| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 3 | size_t | +| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 4 | ..(*)(..) | +| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 5 | void ** | +| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 2 | int | +| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 3 | const char * | +| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 4 | int | +| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 2 | int | +| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 3 | int * | +| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 4 | int | +| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 2 | int | +| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 3 | libssh2_int64_t | +| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 4 | time_t | +| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 5 | time_t | +| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 2 | int | +| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 3 | size_t | +| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 4 | long | +| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 5 | long | +| (LIBSSH2_SESSION *,const char *,libssh2_struct_stat *) | | libssh2_scp_recv2 | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,libssh2_struct_stat *) | | libssh2_scp_recv2 | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,libssh2_struct_stat *) | | libssh2_scp_recv2 | 2 | libssh2_struct_stat * | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 2 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 3 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 4 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 5 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 6 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 7 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 2 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 3 | const unsigned char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 4 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 5 | ..(*)(..) | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 6 | void * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 2 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 3 | const unsigned char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 4 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 5 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 6 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 7 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 8 | ..(*)(..) | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 9 | void ** | +| (LIBSSH2_SESSION *,const char *,stat *) | | libssh2_scp_recv | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,stat *) | | libssh2_scp_recv | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,stat *) | | libssh2_scp_recv | 2 | stat * | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 2 | uint32_t | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 3 | uint32_t | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 4 | uint32_t | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 5 | const unsigned char * | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 6 | size_t | +| (LIBSSH2_SESSION *,const char *,unsigned int) | | libssh2_userauth_list | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,unsigned int) | | libssh2_userauth_list | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int) | | libssh2_userauth_list | 2 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_keyboard_interactive_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_keyboard_interactive_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_keyboard_interactive_ex | 2 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_keyboard_interactive_ex | 3 | ..(*)(..) | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 2 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 3 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 4 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 5 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 2 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 3 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 4 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 5 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 6 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 7 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 8 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 9 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 2 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 3 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 4 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 5 | ..(*)(..) | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 2 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 3 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 4 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 5 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 6 | unsigned int | +| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 1 | const unsigned char * | +| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 2 | size_t | +| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 3 | const unsigned char * | +| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 4 | size_t | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 1 | const unsigned char * | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 2 | unsigned char ** | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 3 | size_t * | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 4 | int | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 5 | const unsigned char * | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 6 | size_t | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 7 | packet_requirev_state_t * | +| (LIBSSH2_SESSION *,int *) | | libssh2_keepalive_send | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int *) | | libssh2_keepalive_send | 1 | int * | +| (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | int | +| (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | int | +| (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | int | +| (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | int | +| (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | int | +| (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 1 | int | +| (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 2 | const char * | +| (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 1 | int | +| (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 2 | const char * | +| (LIBSSH2_SESSION *,int,const char ***) | | libssh2_session_supported_algs | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,const char ***) | | libssh2_session_supported_algs | 1 | int | +| (LIBSSH2_SESSION *,int,const char ***) | | libssh2_session_supported_algs | 2 | const char *** | +| (LIBSSH2_SESSION *,int,const char *,const char *) | | libssh2_session_disconnect_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,const char *,const char *) | | libssh2_session_disconnect_ex | 1 | int | +| (LIBSSH2_SESSION *,int,const char *,const char *) | | libssh2_session_disconnect_ex | 2 | const char * | +| (LIBSSH2_SESSION *,int,const char *,const char *) | | libssh2_session_disconnect_ex | 3 | const char * | +| (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 1 | int | +| (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 2 | const char * | +| (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 3 | int | +| (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 1 | int | +| (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | int | +| (LIBSSH2_SESSION *,int,key_exchange_state_t *) | | _libssh2_kex_exchange | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,key_exchange_state_t *) | | _libssh2_kex_exchange | 1 | int | +| (LIBSSH2_SESSION *,int,key_exchange_state_t *) | | _libssh2_kex_exchange | 2 | key_exchange_state_t * | +| (LIBSSH2_SESSION *,int,libssh2_cb_generic *) | | libssh2_session_callback_set2 | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,libssh2_cb_generic *) | | libssh2_session_callback_set2 | 1 | int | +| (LIBSSH2_SESSION *,int,libssh2_cb_generic *) | | libssh2_session_callback_set2 | 2 | libssh2_cb_generic * | +| (LIBSSH2_SESSION *,int,unsigned int) | | libssh2_keepalive_config | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,unsigned int) | | libssh2_keepalive_config | 1 | int | +| (LIBSSH2_SESSION *,int,unsigned int) | | libssh2_keepalive_config | 2 | unsigned int | +| (LIBSSH2_SESSION *,int,void *) | | libssh2_session_callback_set | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,void *) | | libssh2_session_callback_set | 1 | int | +| (LIBSSH2_SESSION *,int,void *) | | libssh2_session_callback_set | 2 | void * | +| (LIBSSH2_SESSION *,libssh2_nonblocking_states *) | | _libssh2_packet_burn | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,libssh2_nonblocking_states *) | | _libssh2_packet_burn | 1 | libssh2_nonblocking_states * | +| (LIBSSH2_SESSION *,libssh2_socket_t) | | libssh2_session_handshake | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,libssh2_socket_t) | | libssh2_session_handshake | 1 | libssh2_socket_t | +| (LIBSSH2_SESSION *,long) | | libssh2_session_set_read_timeout | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,long) | | libssh2_session_set_read_timeout | 1 | long | +| (LIBSSH2_SESSION *,long) | | libssh2_session_set_timeout | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,long) | | libssh2_session_set_timeout | 1 | long | +| (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 1 | size_t * | +| (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 2 | int * | +| (LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *) | | _libssh2_copy_string | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *) | | _libssh2_copy_string | 1 | string_buf * | +| (LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *) | | _libssh2_copy_string | 2 | unsigned char ** | +| (LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *) | | _libssh2_copy_string | 3 | size_t * | +| (LIBSSH2_SESSION *,time_t) | | _libssh2_wait_socket | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,time_t) | | _libssh2_wait_socket | 1 | time_t | +| (LIBSSH2_SESSION *,uint32_t) | | _libssh2_channel_locate | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,uint32_t) | | _libssh2_channel_locate | 1 | uint32_t | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 1 | unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 2 | size_t * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 3 | const unsigned char * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 4 | size_t | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 5 | void ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 1 | unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 2 | size_t * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 3 | unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 4 | size_t * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 5 | const char * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 6 | size_t | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 7 | const char * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 1 | unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 2 | size_t * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 3 | unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 4 | size_t * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 5 | int * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 6 | unsigned char * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 7 | const char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 8 | const unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 9 | size_t * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 10 | const char * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 11 | size_t | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 12 | const char * | +| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 1 | unsigned char * | +| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 2 | size_t | +| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 3 | int | +| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 4 | uint32_t | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 1 | unsigned char | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 2 | unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 3 | size_t * | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 4 | int | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 5 | const unsigned char * | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 6 | size_t | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 7 | packet_require_state_t * | +| (LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **) | | libssh2_sftp_dtor | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **) | | libssh2_sftp_dtor | 1 | void ** | +| (LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **) | | libssh2_sftp_dtor | 2 | LIBSSH2_CHANNEL * | +| (LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **) | | libssh2_sftp_dtor | 3 | void ** | +| (LIBSSH2_SFTP *) | | libssh2_sftp_get_channel | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *) | | libssh2_sftp_last_error | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_statvfs | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_statvfs | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_statvfs | 2 | size_t | +| (LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_statvfs | 3 | LIBSSH2_SFTP_STATVFS * | +| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 2 | size_t | +| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 3 | const char * | +| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 4 | size_t | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 2 | size_t | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 3 | unsigned long | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 4 | long | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 5 | int | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 6 | LIBSSH2_SFTP_ATTRIBUTES * | +| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_rmdir_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_rmdir_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_rmdir_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_unlink_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_unlink_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_unlink_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 3 | char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 4 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 5 | int | +| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 3 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 4 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 5 | long | +| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 3 | int | +| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 4 | LIBSSH2_SFTP_ATTRIBUTES * | +| (LIBSSH2_SFTP *,const char *,unsigned int,long) | | libssh2_sftp_mkdir_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int,long) | | libssh2_sftp_mkdir_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,long) | | libssh2_sftp_mkdir_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,long) | | libssh2_sftp_mkdir_ex | 3 | long | +| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 3 | unsigned long | +| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 4 | long | +| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 5 | int | +| (LIBSSH2_SFTP_HANDLE *) | | libssh2_sftp_close_handle | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *) | | libssh2_sftp_fsync | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 1 | LIBSSH2_SFTP_ATTRIBUTES * | +| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | int | +| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_fstatvfs | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_fstatvfs | 1 | LIBSSH2_SFTP_STATVFS * | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 1 | char * | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | size_t | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 1 | char * | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 2 | size_t | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 3 | char * | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 4 | size_t | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 5 | LIBSSH2_SFTP_ATTRIBUTES * | +| (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 1 | const char * | +| (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | size_t | | (LPCOLESTR) | CComBSTR | Append | 0 | LPCOLESTR | | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | LPCOLESTR | | (LPCOLESTR,int) | CComBSTR | Append | 0 | LPCOLESTR | @@ -16027,6 +19567,152 @@ getSignatureParameterName | (ML_DSA_SIG *,const uint8_t *,size_t,const ML_DSA_PARAMS *) | | ossl_ml_dsa_sig_decode | 1 | const uint8_t * | | (ML_DSA_SIG *,const uint8_t *,size_t,const ML_DSA_PARAMS *) | | ossl_ml_dsa_sig_decode | 2 | size_t | | (ML_DSA_SIG *,const uint8_t *,size_t,const ML_DSA_PARAMS *) | | ossl_ml_dsa_sig_decode | 3 | const ML_DSA_PARAMS * | +| (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 0 | MemoryManager * | +| (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 1 | HistogramCommand * | +| (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 2 | uint32_t * | +| (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 3 | size_t | +| (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 0 | MemoryManager * | +| (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 1 | HistogramDistance * | +| (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 2 | uint32_t * | +| (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 3 | size_t | +| (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 0 | MemoryManager * | +| (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 1 | HistogramLiteral * | +| (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 2 | uint32_t * | +| (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 3 | size_t | +| (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 0 | MemoryManager * | +| (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 1 | brotli_alloc_func | +| (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 2 | brotli_free_func | +| (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 3 | void * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 0 | MemoryManager * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 1 | const Command * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 2 | const size_t | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 3 | const uint8_t * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 4 | const size_t | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 5 | const size_t | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 6 | const BrotliEncoderParams * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 7 | BlockSplit * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 8 | BlockSplit * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 9 | BlockSplit * | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 0 | MemoryManager * | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 1 | const HistogramCommand * | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 2 | const size_t | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 3 | size_t | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 4 | HistogramCommand * | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 5 | size_t * | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 6 | uint32_t * | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 0 | MemoryManager * | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 1 | const HistogramDistance * | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 2 | const size_t | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 3 | size_t | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 4 | HistogramDistance * | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 5 | size_t * | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 6 | uint32_t * | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 0 | MemoryManager * | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 1 | const HistogramLiteral * | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 2 | const size_t | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 3 | size_t | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 4 | HistogramLiteral * | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 5 | size_t * | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 6 | uint32_t * | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 0 | MemoryManager * | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 1 | const uint8_t * | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 2 | const size_t | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 3 | const size_t | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 4 | BrotliEncoderParams * | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 5 | uint8_t | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 6 | uint8_t | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 7 | Command * | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 8 | size_t | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 9 | ContextType | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 10 | MetaBlockSplit * | +| (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 0 | MemoryManager * | +| (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 1 | const uint8_t * | +| (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 0 | MemoryManager * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 1 | const uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 2 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 3 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 4 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 5 | int | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 6 | const BrotliEncoderParams * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 7 | const Command * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 8 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 9 | size_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 10 | uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 0 | MemoryManager * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 1 | const uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 2 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 3 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 4 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 5 | int | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 6 | const BrotliEncoderParams * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 7 | const Command * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 8 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 9 | size_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 10 | uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 0 | MemoryManager * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 1 | const uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 2 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 3 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 4 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 5 | uint8_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 6 | uint8_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 7 | int | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 8 | const BrotliEncoderParams * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 9 | ContextType | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 10 | const Command * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 11 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 12 | const MetaBlockSplit * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 13 | size_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 14 | uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 0 | MemoryManager * | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 1 | const uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 2 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 3 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 4 | uint8_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 5 | uint8_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 6 | ContextLut | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 7 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 8 | const uint32_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 9 | const Command * | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 10 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 11 | MetaBlockSplit * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 0 | MemoryManager * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 1 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 2 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 3 | const uint8_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 4 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 5 | ContextLut | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 6 | const BrotliEncoderParams * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 7 | Hasher * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 8 | int * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 9 | size_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 10 | Command * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 11 | size_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 12 | size_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 0 | MemoryManager * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 1 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 2 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 3 | const uint8_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 4 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 5 | ContextLut | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 6 | const BrotliEncoderParams * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 7 | Hasher * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 8 | int * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 9 | size_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 10 | Command * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 11 | size_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 12 | size_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 0 | MemoryManager * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 1 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 2 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 3 | const uint8_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 4 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 5 | ContextLut | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 6 | const BrotliEncoderParams * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 7 | const int * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 8 | Hasher * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 9 | ZopfliNode * | | (NAME_CONSTRAINTS *) | | NAME_CONSTRAINTS_free | 0 | NAME_CONSTRAINTS * | | (NAMING_AUTHORITY *) | | NAMING_AUTHORITY_free | 0 | NAMING_AUTHORITY * | | (NAMING_AUTHORITY **,const unsigned char **,long) | | d2i_NAMING_AUTHORITY | 0 | NAMING_AUTHORITY ** | @@ -18012,6 +21698,19 @@ getSignatureParameterName | (OTHERNAME **,const unsigned char **,long) | | d2i_OTHERNAME | 2 | long | | (OTHERNAME *,OTHERNAME *) | | OTHERNAME_cmp | 0 | OTHERNAME * | | (OTHERNAME *,OTHERNAME *) | | OTHERNAME_cmp | 1 | OTHERNAME * | +| (OperationConfig *) | | new_getout | 0 | OperationConfig * | +| (OperationConfig *,HttpReq,HttpReq *) | | SetHTTPrequest | 0 | OperationConfig * | +| (OperationConfig *,HttpReq,HttpReq *) | | SetHTTPrequest | 1 | HttpReq | +| (OperationConfig *,HttpReq,HttpReq *) | | SetHTTPrequest | 2 | HttpReq * | +| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 0 | OperationConfig * | +| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 1 | const char * | +| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 2 | tool_mime ** | +| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 3 | tool_mime ** | +| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 4 | bool | +| (OperationConfig *,const char *const *,char **,const char *) | | proto2num | 0 | OperationConfig * | +| (OperationConfig *,const char *const *,char **,const char *) | | proto2num | 1 | const char *const * | +| (OperationConfig *,const char *const *,char **,const char *) | | proto2num | 2 | char ** | +| (OperationConfig *,const char *const *,char **,const char *) | | proto2num | 3 | const char * | | (PACKET *) | | ossl_quic_wire_decode_padding | 0 | PACKET * | | (PACKET *,BIGNUM *) | | ossl_decode_der_integer | 0 | PACKET * | | (PACKET *,BIGNUM *) | | ossl_decode_der_integer | 1 | BIGNUM * | @@ -18471,6 +22170,8 @@ getSignatureParameterName | (PROXY_POLICY **,const unsigned char **,long) | | d2i_PROXY_POLICY | 0 | PROXY_POLICY ** | | (PROXY_POLICY **,const unsigned char **,long) | | d2i_PROXY_POLICY | 1 | const unsigned char ** | | (PROXY_POLICY **,const unsigned char **,long) | | d2i_PROXY_POLICY | 2 | long | +| (ProgressData *,OperationConfig *) | | progressbarinit | 0 | ProgressData * | +| (ProgressData *,OperationConfig *) | | progressbarinit | 1 | OperationConfig * | | (QLOG *,BIO *) | | ossl_qlog_set_sink_bio | 0 | QLOG * | | (QLOG *,BIO *) | | ossl_qlog_set_sink_bio | 1 | BIO * | | (QLOG *,OSSL_TIME) | | ossl_qlog_override_time | 0 | QLOG * | @@ -19090,6 +22791,13 @@ getSignatureParameterName | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | int | | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 0 | RSA_PSS_PARAMS_30 * | | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | int | +| (SASL *,Curl_easy *,bool,saslprogress *) | | Curl_sasl_start | 0 | SASL * | +| (SASL *,Curl_easy *,bool,saslprogress *) | | Curl_sasl_start | 1 | Curl_easy * | +| (SASL *,Curl_easy *,bool,saslprogress *) | | Curl_sasl_start | 2 | bool | +| (SASL *,Curl_easy *,bool,saslprogress *) | | Curl_sasl_start | 3 | saslprogress * | +| (SASL *,Curl_easy *,const SASLproto *) | | Curl_sasl_init | 0 | SASL * | +| (SASL *,Curl_easy *,const SASLproto *) | | Curl_sasl_init | 1 | Curl_easy * | +| (SASL *,Curl_easy *,const SASLproto *) | | Curl_sasl_init | 2 | const SASLproto * | | (SCRYPT_PARAMS *) | | SCRYPT_PARAMS_free | 0 | SCRYPT_PARAMS * | | (SCRYPT_PARAMS **,const unsigned char **,long) | | d2i_SCRYPT_PARAMS | 0 | SCRYPT_PARAMS ** | | (SCRYPT_PARAMS **,const unsigned char **,long) | | d2i_SCRYPT_PARAMS | 1 | const unsigned char ** | @@ -20453,6 +24161,13 @@ getSignatureParameterName | (SXNETID **,const unsigned char **,long) | | d2i_SXNETID | 0 | SXNETID ** | | (SXNETID **,const unsigned char **,long) | | d2i_SXNETID | 1 | const unsigned char ** | | (SXNETID **,const unsigned char **,long) | | d2i_SXNETID | 2 | long | +| (SharedEncoderDictionary *) | | BrotliInitSharedEncoderDictionary | 0 | SharedEncoderDictionary * | +| (SingleRequest *,Curl_easy *) | | Curl_req_hard_reset | 0 | SingleRequest * | +| (SingleRequest *,Curl_easy *) | | Curl_req_hard_reset | 1 | Curl_easy * | +| (SingleRequest *,Curl_easy *) | | Curl_req_soft_reset | 0 | SingleRequest * | +| (SingleRequest *,Curl_easy *) | | Curl_req_soft_reset | 1 | Curl_easy * | +| (SingleRequest *,Curl_easy *) | | Curl_req_start | 0 | SingleRequest * | +| (SingleRequest *,Curl_easy *) | | Curl_req_start | 1 | Curl_easy * | | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 0 | StrAccum * | | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 1 | sqlite3_str * | | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 2 | const char * | @@ -20741,6 +24456,11 @@ getSignatureParameterName | (UI_STRING *) | | UI_get_input_flags | 0 | UI_STRING * | | (UI_STRING *) | | UI_get_result_string_length | 0 | UI_STRING * | | (UI_STRING *) | | UI_get_string_type | 0 | UI_STRING * | +| (URLGlob **) | | glob_cleanup | 0 | URLGlob ** | +| (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 0 | URLGlob ** | +| (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 1 | char * | +| (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 2 | curl_off_t * | +| (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 3 | FILE * | | (USERNOTICE *) | | USERNOTICE_free | 0 | USERNOTICE * | | (USERNOTICE **,const unsigned char **,long) | | d2i_USERNOTICE | 0 | USERNOTICE ** | | (USERNOTICE **,const unsigned char **,long) | | d2i_USERNOTICE | 1 | const unsigned char ** | @@ -20852,6 +24572,7 @@ getSignatureParameterName | (WPACKET *,unsigned char *,size_t,size_t) | | WPACKET_init_static_len | 3 | size_t | | (WPACKET *,unsigned int) | | WPACKET_set_flags | 0 | WPACKET * | | (WPACKET *,unsigned int) | | WPACKET_set_flags | 1 | unsigned int | +| (WildcardData **) | | Curl_wildcard_dtor | 0 | WildcardData ** | | (X9_62_CHARACTERISTIC_TWO *) | | X9_62_CHARACTERISTIC_TWO_free | 0 | X9_62_CHARACTERISTIC_TWO * | | (X9_62_PENTANOMIAL *) | | X9_62_PENTANOMIAL_free | 0 | X9_62_PENTANOMIAL * | | (X509 *) | | OSSL_STORE_INFO_new_CERT | 0 | X509 * | @@ -21526,22 +25247,160 @@ getSignatureParameterName | (acttab *,int,int) | | acttab_action | 0 | acttab * | | (acttab *,int,int) | | acttab_action | 1 | int | | (acttab *,int,int) | | acttab_action | 2 | int | +| (alpn_proto_buf *,const alpn_spec *) | | Curl_alpn_to_proto_buf | 0 | alpn_proto_buf * | +| (alpn_proto_buf *,const alpn_spec *) | | Curl_alpn_to_proto_buf | 1 | const alpn_spec * | +| (alpn_proto_buf *,const alpn_spec *) | | Curl_alpn_to_proto_str | 0 | alpn_proto_buf * | +| (alpn_proto_buf *,const alpn_spec *) | | Curl_alpn_to_proto_str | 1 | const alpn_spec * | +| (altsvcinfo **) | | Curl_altsvc_cleanup | 0 | altsvcinfo ** | +| (altsvcinfo *,const long) | | Curl_altsvc_ctrl | 0 | altsvcinfo * | +| (altsvcinfo *,const long) | | Curl_altsvc_ctrl | 1 | const long | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliCreateManagedDictionary | 0 | brotli_alloc_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliCreateManagedDictionary | 1 | brotli_free_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliCreateManagedDictionary | 2 | void * | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderCreateInstance | 0 | brotli_alloc_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderCreateInstance | 1 | brotli_free_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderCreateInstance | 2 | void * | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderCreateInstance | 0 | brotli_alloc_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderCreateInstance | 1 | brotli_free_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderCreateInstance | 2 | void * | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliSharedDictionaryCreateInstance | 0 | brotli_alloc_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliSharedDictionaryCreateInstance | 1 | brotli_free_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliSharedDictionaryCreateInstance | 2 | void * | +| (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 0 | bufc_pool * | +| (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 1 | size_t | +| (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | size_t | +| (bufq *,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_slurp | 0 | bufq * | +| (bufq *,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_slurp | 1 | Curl_bufq_reader * | +| (bufq *,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_slurp | 2 | void * | +| (bufq *,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_slurp | 3 | CURLcode * | +| (bufq *,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_pass | 0 | bufq * | +| (bufq *,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_pass | 1 | Curl_bufq_writer * | +| (bufq *,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_pass | 2 | void * | +| (bufq *,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_pass | 3 | CURLcode * | +| (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 0 | bufq * | +| (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 1 | bufc_pool * | +| (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 2 | size_t | +| (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 3 | int | +| (bufq *,char *,size_t,size_t *) | | Curl_bufq_cread | 0 | bufq * | +| (bufq *,char *,size_t,size_t *) | | Curl_bufq_cread | 1 | char * | +| (bufq *,char *,size_t,size_t *) | | Curl_bufq_cread | 2 | size_t | +| (bufq *,char *,size_t,size_t *) | | Curl_bufq_cread | 3 | size_t * | +| (bufq *,const char *,size_t,size_t *) | | Curl_bufq_cwrite | 0 | bufq * | +| (bufq *,const char *,size_t,size_t *) | | Curl_bufq_cwrite | 1 | const char * | +| (bufq *,const char *,size_t,size_t *) | | Curl_bufq_cwrite | 2 | size_t | +| (bufq *,const char *,size_t,size_t *) | | Curl_bufq_cwrite | 3 | size_t * | +| (bufq *,const unsigned char **,size_t *) | | Curl_bufq_peek | 0 | bufq * | +| (bufq *,const unsigned char **,size_t *) | | Curl_bufq_peek | 1 | const unsigned char ** | +| (bufq *,const unsigned char **,size_t *) | | Curl_bufq_peek | 2 | size_t * | +| (bufq *,const unsigned char *,size_t,CURLcode *) | | Curl_bufq_write | 0 | bufq * | +| (bufq *,const unsigned char *,size_t,CURLcode *) | | Curl_bufq_write | 1 | const unsigned char * | +| (bufq *,const unsigned char *,size_t,CURLcode *) | | Curl_bufq_write | 2 | size_t | +| (bufq *,const unsigned char *,size_t,CURLcode *) | | Curl_bufq_write | 3 | CURLcode * | +| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 0 | bufq * | +| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 1 | const unsigned char * | +| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 2 | size_t | +| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 3 | Curl_bufq_writer * | +| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 4 | void * | +| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 5 | CURLcode * | +| (bufq *,size_t) | | Curl_bufq_skip | 0 | bufq * | +| (bufq *,size_t) | | Curl_bufq_skip | 1 | size_t | +| (bufq *,size_t) | | Curl_bufq_unwrite | 0 | bufq * | +| (bufq *,size_t) | | Curl_bufq_unwrite | 1 | size_t | +| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 0 | bufq * | +| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 1 | size_t | +| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 2 | Curl_bufq_reader * | +| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 3 | void * | +| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 4 | CURLcode * | +| (bufq *,size_t,const unsigned char **,size_t *) | | Curl_bufq_peek_at | 0 | bufq * | +| (bufq *,size_t,const unsigned char **,size_t *) | | Curl_bufq_peek_at | 1 | size_t | +| (bufq *,size_t,const unsigned char **,size_t *) | | Curl_bufq_peek_at | 2 | const unsigned char ** | +| (bufq *,size_t,const unsigned char **,size_t *) | | Curl_bufq_peek_at | 3 | size_t * | +| (bufq *,size_t,size_t) | | Curl_bufq_init | 0 | bufq * | +| (bufq *,size_t,size_t) | | Curl_bufq_init | 1 | size_t | +| (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | size_t | +| (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 0 | bufq * | +| (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 1 | size_t | +| (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 2 | size_t | +| (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 3 | int | +| (bufq *,unsigned char *,size_t,CURLcode *) | | Curl_bufq_read | 0 | bufq * | +| (bufq *,unsigned char *,size_t,CURLcode *) | | Curl_bufq_read | 1 | unsigned char * | +| (bufq *,unsigned char *,size_t,CURLcode *) | | Curl_bufq_read | 2 | size_t | +| (bufq *,unsigned char *,size_t,CURLcode *) | | Curl_bufq_read | 3 | CURLcode * | +| (bufref *,const void *,size_t) | | Curl_bufref_memdup | 0 | bufref * | +| (bufref *,const void *,size_t) | | Curl_bufref_memdup | 1 | const void * | +| (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | size_t | +| (bufref *,const void *,size_t,..(*)(..)) | | Curl_bufref_set | 0 | bufref * | +| (bufref *,const void *,size_t,..(*)(..)) | | Curl_bufref_set | 1 | const void * | +| (bufref *,const void *,size_t,..(*)(..)) | | Curl_bufref_set | 2 | size_t | +| (bufref *,const void *,size_t,..(*)(..)) | | Curl_bufref_set | 3 | ..(*)(..) | +| (chacha_ctx *,const u8 *,const u8 *) | | chacha_ivsetup | 0 | chacha_ctx * | +| (chacha_ctx *,const u8 *,const u8 *) | | chacha_ivsetup | 1 | const u8 * | +| (chacha_ctx *,const u8 *,const u8 *) | | chacha_ivsetup | 2 | const u8 * | +| (chacha_ctx *,const u8 *,u8 *,u32) | | chacha_encrypt_bytes | 0 | chacha_ctx * | +| (chacha_ctx *,const u8 *,u8 *,u32) | | chacha_encrypt_bytes | 1 | const u8 * | +| (chacha_ctx *,const u8 *,u8 *,u32) | | chacha_encrypt_bytes | 2 | u8 * | +| (chacha_ctx *,const u8 *,u8 *,u32) | | chacha_encrypt_bytes | 3 | u32 | +| (chacha_ctx *,const u8 *,u32) | | chacha_keysetup | 0 | chacha_ctx * | +| (chacha_ctx *,const u8 *,u32) | | chacha_keysetup | 1 | const u8 * | +| (chacha_ctx *,const u8 *,u32) | | chacha_keysetup | 2 | u32 | +| (chachapoly_ctx *,const u_char *,u_int) | | chachapoly_init | 0 | chachapoly_ctx * | +| (chachapoly_ctx *,const u_char *,u_int) | | chachapoly_init | 1 | const u_char * | +| (chachapoly_ctx *,const u_char *,u_int) | | chachapoly_init | 2 | u_int | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 0 | chachapoly_ctx * | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 1 | u_int | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 2 | u_char * | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 3 | const u_char * | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 4 | u_int | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 5 | u_int | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 6 | int | +| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 0 | chachapoly_ctx * | +| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 1 | unsigned int * | +| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 2 | unsigned int | +| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 3 | const unsigned char * | +| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 4 | unsigned int | | (char *) | | SRP_VBASE_new | 0 | char * | | (char *) | | defossilize | 0 | char * | | (char *) | | make_uppercase | 0 | char * | | (char *) | | next_item | 0 | char * | | (char *) | CStringT | CStringT | 0 | char * | +| (char **) | | Curl_str_newline | 0 | char ** | +| (char **) | | Curl_str_singlespace | 0 | char ** | | (char **) | | OCSP_accept_responses_new | 0 | char ** | | (char **) | | sqlite3_free_table | 0 | char ** | +| (char **,Curl_str *,const size_t) | | Curl_str_quotedword | 0 | char ** | +| (char **,Curl_str *,const size_t) | | Curl_str_quotedword | 1 | Curl_str * | +| (char **,Curl_str *,const size_t) | | Curl_str_quotedword | 2 | const size_t | +| (char **,Curl_str *,const size_t) | | Curl_str_word | 0 | char ** | +| (char **,Curl_str *,const size_t) | | Curl_str_word | 1 | Curl_str * | +| (char **,Curl_str *,const size_t) | | Curl_str_word | 2 | const size_t | +| (char **,Curl_str *,const size_t,char) | | Curl_str_until | 0 | char ** | +| (char **,Curl_str *,const size_t,char) | | Curl_str_until | 1 | Curl_str * | +| (char **,Curl_str *,const size_t,char) | | Curl_str_until | 2 | const size_t | +| (char **,Curl_str *,const size_t,char) | | Curl_str_until | 3 | char | +| (char **,URLGlob *) | | glob_next_url | 0 | char ** | +| (char **,URLGlob *) | | glob_next_url | 1 | URLGlob * | +| (char **,char *,URLGlob *) | | glob_match_url | 0 | char ** | +| (char **,char *,URLGlob *) | | glob_match_url | 1 | char * | +| (char **,char *,URLGlob *) | | glob_match_url | 2 | URLGlob * | +| (char **,char) | | Curl_str_single | 0 | char ** | +| (char **,char) | | Curl_str_single | 1 | char | +| (char **,const char *) | | Curl_setstropt | 0 | char ** | +| (char **,const char *) | | Curl_setstropt | 1 | const char * | | (char **,s_options *,FILE *) | | OptInit | 0 | char ** | | (char **,s_options *,FILE *) | | OptInit | 1 | s_options * | | (char **,s_options *,FILE *) | | OptInit | 2 | FILE * | +| (char **,size_t *,size_t) | | Curl_str_number | 0 | char ** | +| (char **,size_t *,size_t) | | Curl_str_number | 1 | size_t * | +| (char **,size_t *,size_t) | | Curl_str_number | 2 | size_t | | (char *,EVP_CIPHER_INFO *) | | PEM_get_EVP_CIPHER_INFO | 0 | char * | | (char *,EVP_CIPHER_INFO *) | | PEM_get_EVP_CIPHER_INFO | 1 | EVP_CIPHER_INFO * | | (char *,FILE *,FILE *,int *) | | tplt_xfer | 0 | char * | | (char *,FILE *,FILE *,int *) | | tplt_xfer | 1 | FILE * | | (char *,FILE *,FILE *,int *) | | tplt_xfer | 2 | FILE * | | (char *,FILE *,FILE *,int *) | | tplt_xfer | 3 | int * | +| (char *,const char *,char **) | | uv__strtok | 0 | char * | +| (char *,const char *,char **) | | uv__strtok | 1 | const char * | +| (char *,const char *,char **) | | uv__strtok | 2 | char ** | | (char *,const char *,const char *,X509_VERIFY_PARAM *) | | load_certs_multifile | 0 | char * | | (char *,const char *,const char *,X509_VERIFY_PARAM *) | | load_certs_multifile | 1 | const char * | | (char *,const char *,const char *,X509_VERIFY_PARAM *) | | load_certs_multifile | 2 | const char * | @@ -21554,12 +25413,26 @@ getSignatureParameterName | (char *,const char *,int,const char *) | | PEM_dek_info | 1 | const char * | | (char *,const char *,int,const char *) | | PEM_dek_info | 2 | int | | (char *,const char *,int,const char *) | | PEM_dek_info | 3 | const char * | +| (char *,const char *,size_t) | | Curl_strntolower | 0 | char * | +| (char *,const char *,size_t) | | Curl_strntolower | 1 | const char * | +| (char *,const char *,size_t) | | Curl_strntolower | 2 | size_t | +| (char *,const char *,size_t) | | Curl_strntoupper | 0 | char * | +| (char *,const char *,size_t) | | Curl_strntoupper | 1 | const char * | +| (char *,const char *,size_t) | | Curl_strntoupper | 2 | size_t | | (char *,const char *,size_t) | | OPENSSL_strlcat | 0 | char * | | (char *,const char *,size_t) | | OPENSSL_strlcat | 1 | const char * | | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | size_t | | (char *,const char *,size_t) | | OPENSSL_strlcpy | 0 | char * | | (char *,const char *,size_t) | | OPENSSL_strlcpy | 1 | const char * | | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | size_t | +| (char *,const char *,size_t) | | uv__strscpy | 0 | char * | +| (char *,const char *,size_t) | | uv__strscpy | 1 | const char * | +| (char *,const char *,size_t) | | uv__strscpy | 2 | size_t | +| (char *,const char *,va_list) | | curl_mvsprintf | 0 | char * | +| (char *,const char *,va_list) | | curl_mvsprintf | 1 | const char * | +| (char *,const char *,va_list) | | curl_mvsprintf | 2 | va_list | +| (char *,int) | | Curl_str2addr | 0 | char * | +| (char *,int) | | Curl_str2addr | 1 | int | | (char *,int) | | PEM_proc_type | 0 | char * | | (char *,int) | | PEM_proc_type | 1 | int | | (char *,int,const ASN1_OBJECT *) | | i2t_ASN1_OBJECT | 0 | char * | @@ -21581,8 +25454,20 @@ getSignatureParameterName | (char *,int,int,void *) | | ossl_pw_pvk_password | 1 | int | | (char *,int,int,void *) | | ossl_pw_pvk_password | 2 | int | | (char *,int,int,void *) | | ossl_pw_pvk_password | 3 | void * | +| (char *,size_t *) | | uv_cwd | 0 | char * | +| (char *,size_t *) | | uv_cwd | 1 | size_t * | +| (char *,size_t *) | | uv_exepath | 0 | char * | +| (char *,size_t *) | | uv_exepath | 1 | size_t * | +| (char *,size_t *) | | uv_os_gethostname | 0 | char * | +| (char *,size_t *) | | uv_os_gethostname | 1 | size_t * | +| (char *,size_t *) | | uv_os_homedir | 0 | char * | +| (char *,size_t *) | | uv_os_homedir | 1 | size_t * | +| (char *,size_t *) | | uv_os_tmpdir | 0 | char * | +| (char *,size_t *) | | uv_os_tmpdir | 1 | size_t * | | (char *,size_t) | | RAND_file_name | 0 | char * | | (char *,size_t) | | RAND_file_name | 1 | size_t | +| (char *,size_t) | | plain_method | 0 | char * | +| (char *,size_t) | | plain_method | 1 | size_t | | (char *,size_t,const char *,...) | | BIO_snprintf | 0 | char * | | (char *,size_t,const char *,...) | | BIO_snprintf | 1 | size_t | | (char *,size_t,const char *,...) | | BIO_snprintf | 2 | const char * | @@ -21591,6 +25476,10 @@ getSignatureParameterName | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 1 | size_t | | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 2 | const char * | | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 3 | va_list | +| (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 0 | char * | +| (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 1 | size_t | +| (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 2 | const char * | +| (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 3 | va_list | | (char *,size_t,size_t *,const OSSL_PARAM[],int,ossl_passphrase_data_st *) | | ossl_pw_get_passphrase | 0 | char * | | (char *,size_t,size_t *,const OSSL_PARAM[],int,ossl_passphrase_data_st *) | | ossl_pw_get_passphrase | 1 | size_t | | (char *,size_t,size_t *,const OSSL_PARAM[],int,ossl_passphrase_data_st *) | | ossl_pw_get_passphrase | 2 | size_t * | @@ -21613,10 +25502,35 @@ getSignatureParameterName | (char *,size_t,size_t *,const unsigned char *,size_t,const char) | | OPENSSL_buf2hexstr_ex | 3 | const unsigned char * | | (char *,size_t,size_t *,const unsigned char *,size_t,const char) | | OPENSSL_buf2hexstr_ex | 4 | size_t | | (char *,size_t,size_t *,const unsigned char *,size_t,const char) | | OPENSSL_buf2hexstr_ex | 5 | const char | +| (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 0 | char * | +| (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 1 | size_t | +| (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 2 | size_t | +| (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 3 | void * | +| (char *,size_t,size_t,void *) | | Curl_mime_read | 0 | char * | +| (char *,size_t,size_t,void *) | | Curl_mime_read | 1 | size_t | +| (char *,size_t,size_t,void *) | | Curl_mime_read | 2 | size_t | +| (char *,size_t,size_t,void *) | | Curl_mime_read | 3 | void * | +| (char *,size_t,size_t,void *) | | tool_header_cb | 0 | char * | +| (char *,size_t,size_t,void *) | | tool_header_cb | 1 | size_t | +| (char *,size_t,size_t,void *) | | tool_header_cb | 2 | size_t | +| (char *,size_t,size_t,void *) | | tool_header_cb | 3 | void * | +| (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 0 | char * | +| (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 1 | size_t | +| (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 2 | size_t | +| (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 3 | void * | +| (char *,size_t,size_t,void *) | | tool_read_cb | 0 | char * | +| (char *,size_t,size_t,void *) | | tool_read_cb | 1 | size_t | +| (char *,size_t,size_t,void *) | | tool_read_cb | 2 | size_t | +| (char *,size_t,size_t,void *) | | tool_read_cb | 3 | void * | | (char *,uint8_t) | | ossl_to_hex | 0 | char * | | (char *,uint8_t) | | ossl_to_hex | 1 | uint8_t | | (char *,unsigned int) | | utf8_fromunicode | 0 | char * | | (char *,unsigned int) | | utf8_fromunicode | 1 | unsigned int | +| (char *,unsigned int) | | uv_buf_init | 0 | char * | +| (char *,unsigned int) | | uv_buf_init | 1 | unsigned int | +| (char) | | Curl_raw_tolower | 0 | char | +| (char) | | Curl_raw_toupper | 0 | char | +| (char) | | findshortopt | 0 | char | | (char) | | operator+= | 0 | char | | (char) | CComBSTR | Append | 0 | char | | (char) | CSimpleStringT | operator+= | 0 | char | @@ -21624,11 +25538,27 @@ getSignatureParameterName | (char,const CStringT &) | | operator+ | 1 | const CStringT & | | (char,int) | CStringT | CStringT | 0 | char | | (char,int) | CStringT | CStringT | 1 | int | +| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 0 | codetype | +| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 1 | unsigned short * | +| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 2 | unsigned int | +| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 3 | code ** | +| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 4 | unsigned int * | +| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 5 | unsigned short * | | (config *) | | State_find | 0 | config * | | (config *) | | confighash | 0 | config * | | (config *) | | statehash | 0 | config * | | (config *,config *) | | statecmp | 0 | config * | | (config *,config *) | | statecmp | 1 | config * | +| (connectdata *,Curl_easy *,curltime *) | | Curl_conn_seems_dead | 0 | connectdata * | +| (connectdata *,Curl_easy *,curltime *) | | Curl_conn_seems_dead | 1 | Curl_easy * | +| (connectdata *,Curl_easy *,curltime *) | | Curl_conn_seems_dead | 2 | curltime * | +| (connectdata *,curltime *) | | Curl_conn_shutdown_timeleft | 0 | connectdata * | +| (connectdata *,curltime *) | | Curl_conn_shutdown_timeleft | 1 | curltime * | +| (connectdata *,int) | | Curl_conn_is_ssl | 0 | connectdata * | +| (connectdata *,int) | | Curl_conn_is_ssl | 1 | int | +| (connectdata *,int,curltime *) | | Curl_shutdown_timeleft | 0 | connectdata * | +| (connectdata *,int,curltime *) | | Curl_shutdown_timeleft | 1 | int | +| (connectdata *,int,curltime *) | | Curl_shutdown_timeleft | 2 | curltime * | | (const ACCESS_DESCRIPTION *,unsigned char **) | | i2d_ACCESS_DESCRIPTION | 0 | const ACCESS_DESCRIPTION * | | (const ACCESS_DESCRIPTION *,unsigned char **) | | i2d_ACCESS_DESCRIPTION | 1 | unsigned char ** | | (const ADMISSIONS *) | | ADMISSIONS_get0_admissionAuthority | 0 | const ADMISSIONS * | @@ -22067,6 +25997,14 @@ getSignatureParameterName | (const BIO_METHOD *) | | BIO_meth_get_write_ex | 0 | const BIO_METHOD * | | (const BIO_METHOD *) | | BIO_new | 0 | const BIO_METHOD * | | (const BN_BLINDING *) | | BN_BLINDING_get_flags | 0 | const BN_BLINDING * | +| (const BrotliDecoderState *,const BrotliDecoderStateInternal *) | | BrotliDecoderGetErrorCode | 0 | const BrotliDecoderState * | +| (const BrotliDecoderState *,const BrotliDecoderStateInternal *) | | BrotliDecoderGetErrorCode | 1 | const BrotliDecoderStateInternal * | +| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 0 | const BrotliEncoderDictionary * | +| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 1 | const uint8_t * | +| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 2 | size_t | +| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 3 | size_t | +| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 4 | uint32_t * | +| (const BrotliEncoderPreparedDictionary *) | | BrotliEncoderGetPreparedDictionarySize | 0 | const BrotliEncoderPreparedDictionary * | | (const CComBSTR &) | CComBSTR | Append | 0 | const CComBSTR & | | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | const CComBSTR & | | (const CComSafeArray &) | CComSafeArray | CComSafeArray | 0 | const CComSafeArray & | @@ -22148,6 +26086,28 @@ getSignatureParameterName | (const CT_POLICY_EVAL_CTX *) | | CT_POLICY_EVAL_CTX_get0_issuer | 0 | const CT_POLICY_EVAL_CTX * | | (const CT_POLICY_EVAL_CTX *) | | CT_POLICY_EVAL_CTX_get0_log_store | 0 | const CT_POLICY_EVAL_CTX * | | (const CT_POLICY_EVAL_CTX *) | | CT_POLICY_EVAL_CTX_get_time | 0 | const CT_POLICY_EVAL_CTX * | +| (const CURLU *) | | curl_url_dup | 0 | const CURLU * | +| (const CURLU *,CURLUPart,char **,unsigned int) | | curl_url_get | 0 | const CURLU * | +| (const CURLU *,CURLUPart,char **,unsigned int) | | curl_url_get | 1 | CURLUPart | +| (const CURLU *,CURLUPart,char **,unsigned int) | | curl_url_get | 2 | char ** | +| (const CURLU *,CURLUPart,char **,unsigned int) | | curl_url_get | 3 | unsigned int | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 0 | const Command * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 1 | const size_t | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 2 | const BlockSplit * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 3 | const BlockSplit * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 4 | const BlockSplit * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 5 | const uint8_t * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 6 | size_t | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 7 | size_t | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 8 | uint8_t | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 9 | uint8_t | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 10 | const ContextType * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 11 | HistogramLiteral * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 12 | HistogramCommand * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 13 | HistogramDistance * | +| (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 0 | const Curl_easy * | +| (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 1 | const connectdata * | +| (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | int | | (const DH *) | | DH_get0_g | 0 | const DH * | | (const DH *) | | DH_get0_p | 0 | const DH * | | (const DH *) | | DH_get0_priv_key | 0 | const DH * | @@ -23041,7 +27001,73 @@ getSignatureParameterName | (const GOST_KX_MESSAGE *,unsigned char **) | | i2d_GOST_KX_MESSAGE | 1 | unsigned char ** | | (const HMAC_CTX *) | | HMAC_CTX_get_md | 0 | const HMAC_CTX * | | (const HMAC_CTX *) | | HMAC_size | 0 | const HMAC_CTX * | +| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 0 | const HMAC_params * | +| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 1 | const unsigned char * | +| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 2 | const size_t | +| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 3 | const unsigned char * | +| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 4 | const size_t | +| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 5 | unsigned char * | +| (const HMAC_params *,const unsigned char *,unsigned int) | | Curl_HMAC_init | 0 | const HMAC_params * | +| (const HMAC_params *,const unsigned char *,unsigned int) | | Curl_HMAC_init | 1 | const unsigned char * | +| (const HMAC_params *,const unsigned char *,unsigned int) | | Curl_HMAC_init | 2 | unsigned int | | (const HT_CONFIG *) | | ossl_ht_new | 0 | const HT_CONFIG * | +| (const HistogramCommand *) | | BrotliPopulationCostCommand | 0 | const HistogramCommand * | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 0 | const HistogramCommand * | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 1 | HistogramCommand * | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 2 | const uint32_t * | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 3 | uint32_t | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 4 | uint32_t | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 5 | size_t | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 6 | HistogramPair * | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 7 | size_t * | +| (const HistogramCommand *,const HistogramCommand *,HistogramCommand *) | | BrotliHistogramBitCostDistanceCommand | 0 | const HistogramCommand * | +| (const HistogramCommand *,const HistogramCommand *,HistogramCommand *) | | BrotliHistogramBitCostDistanceCommand | 1 | const HistogramCommand * | +| (const HistogramCommand *,const HistogramCommand *,HistogramCommand *) | | BrotliHistogramBitCostDistanceCommand | 2 | HistogramCommand * | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 0 | const HistogramCommand * | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 1 | size_t | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 2 | const uint32_t * | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 3 | size_t | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 4 | HistogramCommand * | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 5 | HistogramCommand * | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 6 | uint32_t * | +| (const HistogramDistance *) | | BrotliPopulationCostDistance | 0 | const HistogramDistance * | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 0 | const HistogramDistance * | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 1 | HistogramDistance * | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 2 | const uint32_t * | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 3 | uint32_t | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 4 | uint32_t | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 5 | size_t | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 6 | HistogramPair * | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 7 | size_t * | +| (const HistogramDistance *,const HistogramDistance *,HistogramDistance *) | | BrotliHistogramBitCostDistanceDistance | 0 | const HistogramDistance * | +| (const HistogramDistance *,const HistogramDistance *,HistogramDistance *) | | BrotliHistogramBitCostDistanceDistance | 1 | const HistogramDistance * | +| (const HistogramDistance *,const HistogramDistance *,HistogramDistance *) | | BrotliHistogramBitCostDistanceDistance | 2 | HistogramDistance * | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 0 | const HistogramDistance * | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 1 | size_t | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 2 | const uint32_t * | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 3 | size_t | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 4 | HistogramDistance * | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 5 | HistogramDistance * | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 6 | uint32_t * | +| (const HistogramLiteral *) | | BrotliPopulationCostLiteral | 0 | const HistogramLiteral * | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 0 | const HistogramLiteral * | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 1 | HistogramLiteral * | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 2 | const uint32_t * | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 3 | uint32_t | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 4 | uint32_t | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 5 | size_t | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 6 | HistogramPair * | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 7 | size_t * | +| (const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *) | | BrotliHistogramBitCostDistanceLiteral | 0 | const HistogramLiteral * | +| (const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *) | | BrotliHistogramBitCostDistanceLiteral | 1 | const HistogramLiteral * | +| (const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *) | | BrotliHistogramBitCostDistanceLiteral | 2 | HistogramLiteral * | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 0 | const HistogramLiteral * | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 1 | size_t | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 2 | const uint32_t * | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 3 | size_t | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 4 | HistogramLiteral * | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 5 | HistogramLiteral * | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 6 | uint32_t * | | (const IPAddressChoice *,unsigned char **) | | i2d_IPAddressChoice | 0 | const IPAddressChoice * | | (const IPAddressChoice *,unsigned char **) | | i2d_IPAddressChoice | 1 | unsigned char ** | | (const IPAddressFamily *) | | X509v3_addr_get_afi | 0 | const IPAddressFamily * | @@ -23058,6 +27084,7 @@ getSignatureParameterName | (const MATRIX *,const VECTOR *,VECTOR *) | | ossl_ml_dsa_matrix_mult_vector | 0 | const MATRIX * | | (const MATRIX *,const VECTOR *,VECTOR *) | | ossl_ml_dsa_matrix_mult_vector | 1 | const VECTOR * | | (const MATRIX *,const VECTOR *,VECTOR *) | | ossl_ml_dsa_matrix_mult_vector | 2 | VECTOR * | +| (const MD5_params *) | | Curl_MD5_init | 0 | const MD5_params * | | (const ML_DSA_KEY *) | | ossl_ml_dsa_key_get0_libctx | 0 | const ML_DSA_KEY * | | (const ML_DSA_KEY *) | | ossl_ml_dsa_key_get_collision_strength_bits | 0 | const ML_DSA_KEY * | | (const ML_DSA_KEY *) | | ossl_ml_dsa_key_get_name | 0 | const ML_DSA_KEY * | @@ -24544,7 +28571,13 @@ getSignatureParameterName | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 0 | const YCHAR * | | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 1 | int | | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 2 | IAtlStringMgr * | +| (const bufq *) | | Curl_bufq_len | 0 | const bufq * | +| (const bufref *) | | Curl_bufref_len | 0 | const bufref * | +| (const bufref *) | | Curl_bufref_ptr | 0 | const bufref * | | (const char *) | | BIO_gethostbyname | 0 | const char * | +| (const char *) | | Curl_copy_header_value | 0 | const char * | +| (const char *) | | Curl_get_scheme_handler | 0 | const char * | +| (const char *) | | Curl_getdate_capped | 0 | const char * | | (const char *) | | Jim_StrDup | 0 | const char * | | (const char *) | | OPENSSL_LH_strhash | 0 | const char * | | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | const char * | @@ -24555,12 +28588,21 @@ getSignatureParameterName | (const char *) | | X509_LOOKUP_meth_new | 0 | const char * | | (const char *) | | a2i_IPADDRESS | 0 | const char * | | (const char *) | | a2i_IPADDRESS_NC | 0 | const char * | +| (const char *) | | last_component | 0 | const char * | | (const char *) | | opt_path_end | 0 | const char * | | (const char *) | | opt_progname | 0 | const char * | | (const char *) | | ossl_lh_strcasehash | 0 | const char * | | (const char *) | | strhash | 0 | const char * | +| (const char *) | | uc_script_byname | 0 | const char * | +| (const char *) | | uv__strdup | 0 | const char * | +| (const char *) | | uv_wtf8_length_as_utf16 | 0 | const char * | | (const char **) | | ERR_peek_error_func | 0 | const char ** | | (const char **) | | ERR_peek_last_error_func | 0 | const char ** | +| (const char **,char **,const char *) | | Curl_get_pathname | 0 | const char ** | +| (const char **,char **,const char *) | | Curl_get_pathname | 1 | char ** | +| (const char **,char **,const char *) | | Curl_get_pathname | 2 | const char * | +| (const char **,const char *) | | uv__utf8_decode1 | 0 | const char ** | +| (const char **,const char *) | | uv__utf8_decode1 | 1 | const char * | | (const char **,int *) | | ERR_get_error_line | 0 | const char ** | | (const char **,int *) | | ERR_get_error_line | 1 | int * | | (const char **,int *) | | ERR_peek_error_data | 0 | const char ** | @@ -24629,6 +28671,8 @@ getSignatureParameterName | (const char *,EVP_MD **) | | opt_md | 1 | EVP_MD ** | | (const char *,EVP_MD **) | | opt_md_silent | 0 | const char * | | (const char *,EVP_MD **) | | opt_md_silent | 1 | EVP_MD ** | +| (const char *,GlobalConfig *) | | parseconfig | 0 | const char * | +| (const char *,GlobalConfig *) | | parseconfig | 1 | GlobalConfig * | | (const char *,OSSL_CMP_severity *,char **,char **,int *) | | ossl_cmp_log_parse_metadata | 0 | const char * | | (const char *,OSSL_CMP_severity *,char **,char **,int *) | | ossl_cmp_log_parse_metadata | 1 | OSSL_CMP_severity * | | (const char *,OSSL_CMP_severity *,char **,char **,int *) | | ossl_cmp_log_parse_metadata | 2 | char ** | @@ -24652,6 +28696,10 @@ getSignatureParameterName | (const char *,X509 **,stack_st_X509 **,int,const char *,const char *,X509_VERIFY_PARAM *) | | load_cert_certs | 4 | const char * | | (const char *,X509 **,stack_st_X509 **,int,const char *,const char *,X509_VERIFY_PARAM *) | | load_cert_certs | 5 | const char * | | (const char *,X509 **,stack_st_X509 **,int,const char *,const char *,X509_VERIFY_PARAM *) | | load_cert_certs | 6 | X509_VERIFY_PARAM * | +| (const char *,bufref *) | | Curl_auth_create_external_message | 0 | const char * | +| (const char *,bufref *) | | Curl_auth_create_external_message | 1 | bufref * | +| (const char *,bufref *) | | Curl_auth_create_login_message | 0 | const char * | +| (const char *,bufref *) | | Curl_auth_create_login_message | 1 | bufref * | | (const char *,char *) | | sha1sum_file | 0 | const char * | | (const char *,char *) | | sha1sum_file | 1 | char * | | (const char *,char *) | | sha3sum_file | 0 | const char * | @@ -24660,6 +28708,10 @@ getSignatureParameterName | (const char *,char **,char **,BIO_hostserv_priorities) | | BIO_parse_hostserv | 1 | char ** | | (const char *,char **,char **,BIO_hostserv_priorities) | | BIO_parse_hostserv | 2 | char ** | | (const char *,char **,char **,BIO_hostserv_priorities) | | BIO_parse_hostserv | 3 | BIO_hostserv_priorities | +| (const char *,char **,char **,char **) | | Curl_parse_interface | 0 | const char * | +| (const char *,char **,char **,char **) | | Curl_parse_interface | 1 | char ** | +| (const char *,char **,char **,char **) | | Curl_parse_interface | 2 | char ** | +| (const char *,char **,char **,char **) | | Curl_parse_interface | 3 | char ** | | (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 0 | const char * | | (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 1 | char ** | | (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 2 | char ** | @@ -24669,6 +28721,13 @@ getSignatureParameterName | (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 6 | char ** | | (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 7 | char ** | | (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 8 | char ** | +| (const char *,char **,int) | | idn2_to_ascii_8z | 0 | const char * | +| (const char *,char **,int) | | idn2_to_ascii_8z | 1 | char ** | +| (const char *,char **,int) | | idn2_to_ascii_8z | 2 | int | +| (const char *,char **,int,curl_off_t *) | | curlx_strtoofft | 0 | const char * | +| (const char *,char **,int,curl_off_t *) | | curlx_strtoofft | 1 | char ** | +| (const char *,char **,int,curl_off_t *) | | curlx_strtoofft | 2 | int | +| (const char *,char **,int,curl_off_t *) | | curlx_strtoofft | 3 | curl_off_t * | | (const char *,char **,int,unsigned long *) | | OPENSSL_strtoul | 0 | const char * | | (const char *,char **,int,unsigned long *) | | OPENSSL_strtoul | 1 | char ** | | (const char *,char **,int,unsigned long *) | | OPENSSL_strtoul | 2 | int | @@ -24676,9 +28735,32 @@ getSignatureParameterName | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 0 | const char * | | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 1 | char ** | | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | size_t | +| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 0 | const char * | +| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 1 | char * | +| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 2 | char * | +| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 3 | bool * | +| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 4 | GlobalConfig * | +| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 5 | OperationConfig * | +| (const char *,char *,char *,const char **) | | Curl_auth_digest_get_pair | 0 | const char * | +| (const char *,char *,char *,const char **) | | Curl_auth_digest_get_pair | 1 | char * | +| (const char *,char *,char *,const char **) | | Curl_auth_digest_get_pair | 2 | char * | +| (const char *,char *,char *,const char **) | | Curl_auth_digest_get_pair | 3 | const char ** | +| (const char *,char *,size_t *) | | uv__search_path | 0 | const char * | +| (const char *,char *,size_t *) | | uv__search_path | 1 | char * | +| (const char *,char *,size_t *) | | uv__search_path | 2 | size_t * | +| (const char *,char *,size_t *) | | uv_os_getenv | 0 | const char * | +| (const char *,char *,size_t *) | | uv_os_getenv | 1 | char * | +| (const char *,char *,size_t *) | | uv_os_getenv | 2 | size_t * | | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 0 | const char * | | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 1 | char * | | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | size_t | +| (const char *,char *,size_t) | | getpass_r | 0 | const char * | +| (const char *,char *,size_t) | | getpass_r | 1 | char * | +| (const char *,char *,size_t) | | getpass_r | 2 | size_t | +| (const char *,char *,size_t,bool) | | Curl_is_absolute_url | 0 | const char * | +| (const char *,char *,size_t,bool) | | Curl_is_absolute_url | 1 | char * | +| (const char *,char *,size_t,bool) | | Curl_is_absolute_url | 2 | size_t | +| (const char *,char *,size_t,bool) | | Curl_is_absolute_url | 3 | bool | | (const char *,const ASN1_INTEGER *,stack_st_CONF_VALUE **) | | X509V3_add_value_int | 0 | const char * | | (const char *,const ASN1_INTEGER *,stack_st_CONF_VALUE **) | | X509V3_add_value_int | 1 | const ASN1_INTEGER * | | (const char *,const ASN1_INTEGER *,stack_st_CONF_VALUE **) | | X509V3_add_value_int | 2 | stack_st_CONF_VALUE ** | @@ -24699,12 +28781,20 @@ getSignatureParameterName | (const char *,const UI_METHOD *,void *,OSSL_STORE_post_process_info_fn,void *) | | OSSL_STORE_open | 4 | void * | | (const char *,const char *) | | Configcmp | 0 | const char * | | (const char *,const char *) | | Configcmp | 1 | const char * | +| (const char *,const char *) | | Curl_timestrcmp | 0 | const char * | +| (const char *,const char *) | | Curl_timestrcmp | 1 | const char * | | (const char *,const char *) | | DES_crypt | 0 | const char * | | (const char *,const char *) | | DES_crypt | 1 | const char * | | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | const char * | | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | const char * | +| (const char *,const char *) | | c_strcasecmp | 0 | const char * | +| (const char *,const char *) | | c_strcasecmp | 1 | const char * | | (const char *,const char *) | | get_passwd | 0 | const char * | | (const char *,const char *) | | get_passwd | 1 | const char * | +| (const char *,const char *) | | gzopen | 0 | const char * | +| (const char *,const char *) | | gzopen | 1 | const char * | +| (const char *,const char *) | | gzopen64 | 0 | const char * | +| (const char *,const char *) | | gzopen64 | 1 | const char * | | (const char *,const char *) | | openssl_fopen | 0 | const char * | | (const char *,const char *) | | openssl_fopen | 1 | const char * | | (const char *,const char *) | | ossl_pem_check_suffix | 0 | const char * | @@ -24792,6 +28882,14 @@ getSignatureParameterName | (const char *,const char *,char **,char **,const char *,const char *,OSSL_LIB_CTX *,const char *) | | SRP_create_verifier_ex | 5 | const char * | | (const char *,const char *,char **,char **,const char *,const char *,OSSL_LIB_CTX *,const char *) | | SRP_create_verifier_ex | 6 | OSSL_LIB_CTX * | | (const char *,const char *,char **,char **,const char *,const char *,OSSL_LIB_CTX *,const char *) | | SRP_create_verifier_ex | 7 | const char * | +| (const char *,const char *,char **,int) | | idn2_register_ul | 0 | const char * | +| (const char *,const char *,char **,int) | | idn2_register_ul | 1 | const char * | +| (const char *,const char *,char **,int) | | idn2_register_ul | 2 | char ** | +| (const char *,const char *,char **,int) | | idn2_register_ul | 3 | int | +| (const char *,const char *,char *,char *) | | uv__idna_toascii | 0 | const char * | +| (const char *,const char *,char *,char *) | | uv__idna_toascii | 1 | const char * | +| (const char *,const char *,char *,char *) | | uv__idna_toascii | 2 | char * | +| (const char *,const char *,char *,char *) | | uv__idna_toascii | 3 | char * | | (const char *,const char *,const BIGNUM *,ASN1_INTEGER **) | | save_serial | 0 | const char * | | (const char *,const char *,const BIGNUM *,ASN1_INTEGER **) | | save_serial | 1 | const char * | | (const char *,const char *,const BIGNUM *,ASN1_INTEGER **) | | save_serial | 2 | const BIGNUM * | @@ -24817,6 +28915,15 @@ getSignatureParameterName | (const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,long,const char *,const ASN1_ITEM *) | | app_http_get_asn1 | 5 | long | | (const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,long,const char *,const ASN1_ITEM *) | | app_http_get_asn1 | 6 | const char * | | (const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,long,const char *,const ASN1_ITEM *) | | app_http_get_asn1 | 7 | const ASN1_ITEM * | +| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 0 | const char * | +| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 1 | const char * | +| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 2 | const char * | +| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 3 | bool | +| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 4 | iconv_ilseq_handler | +| (const char *,const char *,const char *,bufref *) | | Curl_auth_create_plain_message | 0 | const char * | +| (const char *,const char *,const char *,bufref *) | | Curl_auth_create_plain_message | 1 | const char * | +| (const char *,const char *,const char *,bufref *) | | Curl_auth_create_plain_message | 2 | const char * | +| (const char *,const char *,const char *,bufref *) | | Curl_auth_create_plain_message | 3 | bufref * | | (const char *,const char *,const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,const char *,ASN1_VALUE *,const ASN1_ITEM *,const char *,long,const ASN1_ITEM *) | | app_http_post_asn1 | 0 | const char * | | (const char *,const char *,const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,const char *,ASN1_VALUE *,const ASN1_ITEM *,const char *,long,const ASN1_ITEM *) | | app_http_post_asn1 | 1 | const char * | | (const char *,const char *,const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,const char *,ASN1_VALUE *,const ASN1_ITEM *,const char *,long,const ASN1_ITEM *) | | app_http_post_asn1 | 2 | const char * | @@ -24841,6 +28948,10 @@ getSignatureParameterName | (const char *,const char *,const char *,const char *,int,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,int) | | OSSL_HTTP_open | 8 | void * | | (const char *,const char *,const char *,const char *,int,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,int) | | OSSL_HTTP_open | 9 | int | | (const char *,const char *,const char *,const char *,int,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,int) | | OSSL_HTTP_open | 10 | int | +| (const char *,const char *,const char *,iconv_ilseq_handler) | | str_iconveh | 0 | const char * | +| (const char *,const char *,const char *,iconv_ilseq_handler) | | str_iconveh | 1 | const char * | +| (const char *,const char *,const char *,iconv_ilseq_handler) | | str_iconveh | 2 | const char * | +| (const char *,const char *,const char *,iconv_ilseq_handler) | | str_iconveh | 3 | iconv_ilseq_handler | | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 0 | const char * | | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 1 | const char * | | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 2 | const char * | @@ -24861,16 +28972,26 @@ getSignatureParameterName | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 0 | const char * | | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 1 | const char * | | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | size_t | +| (const char *,const char *,size_t) | | c_strncasecmp | 0 | const char * | +| (const char *,const char *,size_t) | | c_strncasecmp | 1 | const char * | +| (const char *,const char *,size_t) | | c_strncasecmp | 2 | size_t | | (const char *,const char *,stack_st_CONF_VALUE **) | | X509V3_add_value | 0 | const char * | | (const char *,const char *,stack_st_CONF_VALUE **) | | X509V3_add_value | 1 | const char * | | (const char *,const char *,stack_st_CONF_VALUE **) | | X509V3_add_value | 2 | stack_st_CONF_VALUE ** | | (const char *,const char *,unsigned int) | | sqlite3_strlike | 0 | const char * | | (const char *,const char *,unsigned int) | | sqlite3_strlike | 1 | const char * | | (const char *,const char *,unsigned int) | | sqlite3_strlike | 2 | unsigned int | +| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 0 | const char * | +| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 1 | const size_t | +| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 2 | char ** | +| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 3 | char ** | +| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 4 | char ** | | (const char *,const size_t,unsigned int *,unsigned int *) | | ossl_punycode_decode | 0 | const char * | | (const char *,const size_t,unsigned int *,unsigned int *) | | ossl_punycode_decode | 1 | const size_t | | (const char *,const size_t,unsigned int *,unsigned int *) | | ossl_punycode_decode | 2 | unsigned int * | | (const char *,const size_t,unsigned int *,unsigned int *) | | ossl_punycode_decode | 3 | unsigned int * | +| (const char *,const time_t *) | | curl_getdate | 0 | const char * | +| (const char *,const time_t *) | | curl_getdate | 1 | const time_t * | | (const char *,const unsigned char *,size_t,stack_st_CONF_VALUE **) | | x509v3_add_len_value_uchar | 0 | const char * | | (const char *,const unsigned char *,size_t,stack_st_CONF_VALUE **) | | x509v3_add_len_value_uchar | 1 | const unsigned char * | | (const char *,const unsigned char *,size_t,stack_st_CONF_VALUE **) | | x509v3_add_len_value_uchar | 2 | size_t | @@ -24878,6 +28999,8 @@ getSignatureParameterName | (const char *,const unsigned char *,stack_st_CONF_VALUE **) | | X509V3_add_value_uchar | 0 | const char * | | (const char *,const unsigned char *,stack_st_CONF_VALUE **) | | X509V3_add_value_uchar | 1 | const unsigned char * | | (const char *,const unsigned char *,stack_st_CONF_VALUE **) | | X509V3_add_value_uchar | 2 | stack_st_CONF_VALUE ** | +| (const char *,digestdata *) | | Curl_auth_decode_digest_http_message | 0 | const char * | +| (const char *,digestdata *) | | Curl_auth_decode_digest_http_message | 1 | digestdata * | | (const char *,double *) | | Jim_StringToDouble | 0 | const char * | | (const char *,double *) | | Jim_StringToDouble | 1 | double * | | (const char *,double *) | | OSSL_PARAM_construct_double | 0 | const char * | @@ -24981,12 +29104,55 @@ getSignatureParameterName | (const char *,long *,int) | | Jim_StringToWide | 2 | int | | (const char *,size_t *) | | OSSL_PARAM_construct_size_t | 0 | const char * | | (const char *,size_t *) | | OSSL_PARAM_construct_size_t | 1 | size_t * | +| (const char *,size_t) | | Curl_getn_scheme_handler | 0 | const char * | +| (const char *,size_t) | | Curl_getn_scheme_handler | 1 | size_t | +| (const char *,size_t) | | Curl_memdup0 | 0 | const char * | +| (const char *,size_t) | | Curl_memdup0 | 1 | size_t | | (const char *,size_t) | | OPENSSL_strnlen | 0 | const char * | | (const char *,size_t) | | OPENSSL_strnlen | 1 | size_t | +| (const char *,size_t) | | uv__strndup | 0 | const char * | +| (const char *,size_t) | | uv__strndup | 1 | size_t | +| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 0 | const char * | +| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 1 | size_t | +| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 2 | char ** | +| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 3 | size_t * | +| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 4 | urlreject | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 0 | const char * | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 1 | size_t | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 2 | const char * | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 3 | const char * | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 4 | bool | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 5 | iconv_ilseq_handler | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 6 | size_t * | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 7 | char ** | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 8 | size_t * | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 0 | const char * | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 1 | size_t | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 2 | const char * | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 3 | const char * | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 4 | iconv_ilseq_handler | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 5 | size_t * | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 6 | char ** | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 7 | size_t * | | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 0 | const char * | | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 1 | size_t | | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 2 | const char * | | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 3 | int | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 0 | const char * | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 1 | size_t | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 2 | const iconveh_t * | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 3 | iconv_ilseq_handler | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 4 | size_t * | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 5 | char ** | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 6 | size_t * | +| (const char *,size_t,dynbuf *,bool) | | jsonquoted | 0 | const char * | +| (const char *,size_t,dynbuf *,bool) | | jsonquoted | 1 | size_t | +| (const char *,size_t,dynbuf *,bool) | | jsonquoted | 2 | dynbuf * | +| (const char *,size_t,dynbuf *,bool) | | jsonquoted | 3 | bool | +| (const char *,size_t,uint32_t *,size_t *) | | idn2_punycode_decode | 0 | const char * | +| (const char *,size_t,uint32_t *,size_t *) | | idn2_punycode_decode | 1 | size_t | +| (const char *,size_t,uint32_t *,size_t *) | | idn2_punycode_decode | 2 | uint32_t * | +| (const char *,size_t,uint32_t *,size_t *) | | idn2_punycode_decode | 3 | size_t * | | (const char *,sqlite3 **,int,const char *) | | sqlite3_open_v2 | 0 | const char * | | (const char *,sqlite3 **,int,const char *) | | sqlite3_open_v2 | 1 | sqlite3 ** | | (const char *,sqlite3 **,int,const char *) | | sqlite3_open_v2 | 2 | int | @@ -25019,10 +29185,17 @@ getSignatureParameterName | (const char *,stack_st_X509_CRL **,const char *,const char *) | | load_crls | 3 | const char * | | (const char *,time_t *) | | OSSL_PARAM_construct_time_t | 0 | const char * | | (const char *,time_t *) | | OSSL_PARAM_construct_time_t | 1 | time_t * | +| (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 0 | const char * | +| (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 1 | uint16_t * | +| (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | size_t | | (const char *,uint32_t *) | | OSSL_PARAM_construct_uint32 | 0 | const char * | | (const char *,uint32_t *) | | OSSL_PARAM_construct_uint32 | 1 | uint32_t * | | (const char *,uint64_t *) | | OSSL_PARAM_construct_uint64 | 0 | const char * | | (const char *,uint64_t *) | | OSSL_PARAM_construct_uint64 | 1 | uint64_t * | +| (const char *,unsigned char *) | | Curl_ntlm_core_mk_lm_hash | 0 | const char * | +| (const char *,unsigned char *) | | Curl_ntlm_core_mk_lm_hash | 1 | unsigned char * | +| (const char *,unsigned char *) | | Curl_ntlm_core_mk_nt_hash | 0 | const char * | +| (const char *,unsigned char *) | | Curl_ntlm_core_mk_nt_hash | 1 | unsigned char * | | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 0 | const char * | | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 1 | unsigned char * | | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | size_t | @@ -25032,6 +29205,10 @@ getSignatureParameterName | (const char *,unsigned long *) | | OSSL_PARAM_construct_ulong | 1 | unsigned long * | | (const char *,unsigned long *) | | opt_ulong | 0 | const char * | | (const char *,unsigned long *) | | opt_ulong | 1 | unsigned long * | +| (const char *,va_list) | | curl_mvaprintf | 0 | const char * | +| (const char *,va_list) | | curl_mvaprintf | 1 | va_list | +| (const char *,va_list) | | curl_mvprintf | 0 | const char * | +| (const char *,va_list) | | curl_mvprintf | 1 | va_list | | (const char *,va_list) | | sqlite3_vmprintf | 0 | const char * | | (const char *,va_list) | | sqlite3_vmprintf | 1 | va_list | | (const char *,void *) | | collect_names | 0 | const char * | @@ -25042,8 +29219,12 @@ getSignatureParameterName | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 0 | const char * | | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 1 | void * | | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | size_t | +| (const char *,void *,size_t) | | uv__random_readpath | 0 | const char * | +| (const char *,void *,size_t) | | uv__random_readpath | 1 | void * | +| (const char *,void *,size_t) | | uv__random_readpath | 2 | size_t | | (const char *const *,const char *const *) | | name_cmp | 0 | const char *const * | | (const char *const *,const char *const *) | | name_cmp | 1 | const char *const * | +| (const curl_easyoption *) | | curl_easy_option_next | 0 | const curl_easyoption * | | (const curve448_point_t) | | ossl_curve448_point_valid | 0 | const curve448_point_t | | (const custom_ext_methods *,ENDPOINT,unsigned int,size_t *) | | custom_ext_find | 0 | const custom_ext_methods * | | (const custom_ext_methods *,ENDPOINT,unsigned int,size_t *) | | custom_ext_find | 1 | ENDPOINT | @@ -25052,6 +29233,12 @@ getSignatureParameterName | (const deque &) | deque | deque | 0 | const deque & | | (const deque &,const Allocator &) | deque | deque | 0 | const deque & | | (const deque &,const Allocator &) | deque | deque | 1 | const class:1 & | +| (const dynbuf *) | | Curl_dyn_len | 0 | const dynbuf * | +| (const dynbuf *) | | Curl_dyn_ptr | 0 | const dynbuf * | +| (const dynbuf *) | | Curl_dyn_uptr | 0 | const dynbuf * | +| (const dynbuf *) | | curlx_dyn_len | 0 | const dynbuf * | +| (const dynbuf *) | | curlx_dyn_ptr | 0 | const dynbuf * | +| (const dynbuf *) | | curlx_dyn_uptr | 0 | const dynbuf * | | (const forward_list &) | forward_list | forward_list | 0 | const forward_list & | | (const forward_list &,const Allocator &) | forward_list | forward_list | 0 | const forward_list & | | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | const class:1 & | @@ -25066,6 +29253,35 @@ getSignatureParameterName | (const list &) | list | list | 0 | const list & | | (const list &,const Allocator &) | list | list | 0 | const list & | | (const list &,const Allocator &) | list | list | 1 | const class:1 & | +| (const nghttp2_extpri *) | | nghttp2_extpri_to_uint8 | 0 | const nghttp2_extpri * | +| (const nghttp2_map *) | | nghttp2_map_size | 0 | const nghttp2_map * | +| (const nghttp2_map *,..(*)(..),void *) | | nghttp2_map_each | 0 | const nghttp2_map * | +| (const nghttp2_map *,..(*)(..),void *) | | nghttp2_map_each | 1 | ..(*)(..) | +| (const nghttp2_map *,..(*)(..),void *) | | nghttp2_map_each | 2 | void * | +| (const nghttp2_map *,nghttp2_map_key_type) | | nghttp2_map_find | 0 | const nghttp2_map * | +| (const nghttp2_map *,nghttp2_map_key_type) | | nghttp2_map_find | 1 | nghttp2_map_key_type | +| (const nghttp2_nv *,const nghttp2_nv *) | | nghttp2_nv_compare_name | 0 | const nghttp2_nv * | +| (const nghttp2_nv *,const nghttp2_nv *) | | nghttp2_nv_compare_name | 1 | const nghttp2_nv * | +| (const nghttp2_settings_entry *,size_t,nghttp2_mem *) | | nghttp2_frame_iv_copy | 0 | const nghttp2_settings_entry * | +| (const nghttp2_settings_entry *,size_t,nghttp2_mem *) | | nghttp2_frame_iv_copy | 1 | size_t | +| (const nghttp2_settings_entry *,size_t,nghttp2_mem *) | | nghttp2_frame_iv_copy | 2 | nghttp2_mem * | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 0 | const size_t | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 1 | const size_t | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 2 | const ZopfliNode * | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 3 | int * | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 4 | size_t * | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 5 | const BrotliEncoderParams * | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 6 | Command * | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 7 | size_t * | +| (const sockaddr *,char *,size_t) | | uv_ip_name | 0 | const sockaddr * | +| (const sockaddr *,char *,size_t) | | uv_ip_name | 1 | char * | +| (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | size_t | +| (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 0 | const sockaddr_in6 * | +| (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 1 | char * | +| (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | size_t | +| (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 0 | const sockaddr_in * | +| (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 1 | char * | +| (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | size_t | | (const sqlite3_value *) | | sqlite3_value_dup | 0 | const sqlite3_value * | | (const stack_st_SCT *,unsigned char **) | | i2d_SCT_LIST | 0 | const stack_st_SCT * | | (const stack_st_SCT *,unsigned char **) | | i2d_SCT_LIST | 1 | unsigned char ** | @@ -25099,6 +29315,12 @@ getSignatureParameterName | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 1 | int | | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | int | | (const stack_st_X509_NAME *) | | SSL_dup_CA_list | 0 | const stack_st_X509_NAME * | +| (const stat *) | | get_stat_atime | 0 | const stat * | +| (const stat *) | | get_stat_atime_ns | 0 | const stat * | +| (const stat *) | | get_stat_ctime | 0 | const stat * | +| (const stat *) | | get_stat_ctime_ns | 0 | const stat * | +| (const stat *) | | get_stat_mtime | 0 | const stat * | +| (const stat *) | | get_stat_mtime_ns | 0 | const stat * | | (const time_t *,tm *) | | OPENSSL_gmtime | 0 | const time_t * | | (const time_t *,tm *) | | OPENSSL_gmtime | 1 | tm * | | (const u128[16],uint8_t *,const uint8_t *,size_t) | | ossl_polyval_ghash_hash | 0 | const u128[16] | @@ -25107,6 +29329,10 @@ getSignatureParameterName | (const u128[16],uint8_t *,const uint8_t *,size_t) | | ossl_polyval_ghash_hash | 3 | size_t | | (const uint8_t *,SM4_KEY *) | | ossl_sm4_set_key | 0 | const uint8_t * | | (const uint8_t *,SM4_KEY *) | | ossl_sm4_set_key | 1 | SM4_KEY * | +| (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 0 | const uint8_t * | +| (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 1 | const uint8_t * | +| (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 2 | uint8_t ** | +| (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 3 | int | | (const uint8_t *,int,int,PROV_CTX *,const char *) | | ossl_ml_dsa_d2i_PKCS8 | 0 | const uint8_t * | | (const uint8_t *,int,int,PROV_CTX *,const char *) | | ossl_ml_dsa_d2i_PKCS8 | 1 | int | | (const uint8_t *,int,int,PROV_CTX *,const char *) | | ossl_ml_dsa_d2i_PKCS8 | 2 | int | @@ -25129,8 +29355,15 @@ getSignatureParameterName | (const uint8_t *,int,int,PROV_CTX *,const char *) | | ossl_ml_kem_d2i_PUBKEY | 4 | const char * | | (const uint8_t *,size_t) | | FuzzerTestOneInput | 0 | const uint8_t * | | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | size_t | +| (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 0 | const uint8_t * | +| (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | size_t | | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 0 | const uint8_t * | | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | size_t | +| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 0 | const uint8_t * | +| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 1 | size_t | +| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 2 | HuffmanTree * | +| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 3 | size_t * | +| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 4 | uint8_t * | | (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_parse_private_key | 0 | const uint8_t * | | (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_parse_private_key | 1 | size_t | | (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_parse_private_key | 2 | ML_KEM_KEY * | @@ -25140,12 +29373,46 @@ getSignatureParameterName | (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_set_seed | 0 | const uint8_t * | | (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_set_seed | 1 | size_t | | (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_set_seed | 2 | ML_KEM_KEY * | +| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 0 | const uint8_t * | +| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 1 | size_t | +| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 2 | size_t * | +| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 3 | uint8_t * | +| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 4 | uint8_t * | +| (const uint8_t *,size_t,uint16_t *) | | BrotliConvertBitDepthsToSymbols | 0 | const uint8_t * | +| (const uint8_t *,size_t,uint16_t *) | | BrotliConvertBitDepthsToSymbols | 1 | size_t | +| (const uint8_t *,size_t,uint16_t *) | | BrotliConvertBitDepthsToSymbols | 2 | uint16_t * | +| (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 0 | const uint8_t * | +| (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 1 | uint8_t ** | +| (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | int | | (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_decrypt | 0 | const uint8_t * | | (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_decrypt | 1 | uint8_t * | | (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_decrypt | 2 | const SM4_KEY * | | (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_encrypt | 0 | const uint8_t * | | (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_encrypt | 1 | uint8_t * | | (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_encrypt | 2 | const SM4_KEY * | +| (const uint16_t *,ssize_t,char **,size_t *) | | uv_utf16_to_wtf8 | 0 | const uint16_t * | +| (const uint16_t *,ssize_t,char **,size_t *) | | uv_utf16_to_wtf8 | 1 | ssize_t | +| (const uint16_t *,ssize_t,char **,size_t *) | | uv_utf16_to_wtf8 | 2 | char ** | +| (const uint16_t *,ssize_t,char **,size_t *) | | uv_utf16_to_wtf8 | 3 | size_t * | +| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 0 | const uint32_t * | +| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 1 | const size_t | +| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 2 | const int | +| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 3 | HuffmanTree * | +| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 4 | uint8_t * | +| (const uint32_t *,size_t,char *,size_t *) | | idn2_punycode_encode | 0 | const uint32_t * | +| (const uint32_t *,size_t,char *,size_t *) | | idn2_punycode_encode | 1 | size_t | +| (const uint32_t *,size_t,char *,size_t *) | | idn2_punycode_encode | 2 | char * | +| (const uint32_t *,size_t,char *,size_t *) | | idn2_punycode_encode | 3 | size_t * | +| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 0 | const uint32_t * | +| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 1 | size_t | +| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 2 | uint32_t * | +| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 3 | size_t * | +| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 4 | int | +| (const unsigned char *) | | Curl_read16_be | 0 | const unsigned char * | +| (const unsigned char *) | | Curl_read16_le | 0 | const unsigned char * | +| (const unsigned char *) | | Curl_read32_le | 0 | const unsigned char * | +| (const unsigned char *) | | _libssh2_ntohu32 | 0 | const unsigned char * | +| (const unsigned char *) | | _libssh2_ntohu64 | 0 | const unsigned char * | | (const unsigned char *) | | ossl_quic_vlint_decode_unchecked | 0 | const unsigned char * | | (const unsigned char *) | CStringT | CStringT | 0 | const unsigned char * | | (const unsigned char *) | CStringT | operator= | 0 | const unsigned char * | @@ -25164,6 +29431,10 @@ getSignatureParameterName | (const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | ossl_d2i_X509_PUBKEY_INTERNAL | 1 | long | | (const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | ossl_d2i_X509_PUBKEY_INTERNAL | 2 | OSSL_LIB_CTX * | | (const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | ossl_d2i_X509_PUBKEY_INTERNAL | 3 | const char * | +| (const unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_alpn | 0 | const unsigned char ** | +| (const unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_alpn | 1 | unsigned char * | +| (const unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_alpn | 2 | const unsigned char * | +| (const unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_alpn | 3 | unsigned int | | (const unsigned char **,unsigned int,int *) | | ossl_b2i | 0 | const unsigned char ** | | (const unsigned char **,unsigned int,int *) | | ossl_b2i | 1 | unsigned int | | (const unsigned char **,unsigned int,int *) | | ossl_b2i | 2 | int * | @@ -25328,6 +29599,10 @@ getSignatureParameterName | (const unsigned char *,size_t,unsigned char *) | | ossl_sha1 | 0 | const unsigned char * | | (const unsigned char *,size_t,unsigned char *) | | ossl_sha1 | 1 | size_t | | (const unsigned char *,size_t,unsigned char *) | | ossl_sha1 | 2 | unsigned char * | +| (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 0 | const unsigned char * | +| (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 1 | size_t | +| (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 2 | unsigned char * | +| (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 3 | size_t | | (const unsigned char *,unsigned char *,IDEA_KEY_SCHEDULE *) | | IDEA_ecb_encrypt | 0 | const unsigned char * | | (const unsigned char *,unsigned char *,IDEA_KEY_SCHEDULE *) | | IDEA_ecb_encrypt | 1 | unsigned char * | | (const unsigned char *,unsigned char *,IDEA_KEY_SCHEDULE *) | | IDEA_ecb_encrypt | 2 | IDEA_KEY_SCHEDULE * | @@ -25706,6 +29981,61 @@ getSignatureParameterName | (const unsigned char[16],unsigned char[16],const SEED_KEY_SCHEDULE *) | | SEED_encrypt | 0 | const unsigned char[16] | | (const unsigned char[16],unsigned char[16],const SEED_KEY_SCHEDULE *) | | SEED_encrypt | 1 | unsigned char[16] | | (const unsigned char[16],unsigned char[16],const SEED_KEY_SCHEDULE *) | | SEED_encrypt | 2 | const SEED_KEY_SCHEDULE * | +| (const uv__io_t *,unsigned int) | | uv__io_active | 0 | const uv__io_t * | +| (const uv__io_t *,unsigned int) | | uv__io_active | 1 | unsigned int | +| (const uv__statx *,uv_stat_t *) | | uv__statx_to_stat | 0 | const uv__statx * | +| (const uv__statx *,uv_stat_t *) | | uv__statx_to_stat | 1 | uv_stat_t * | +| (const uv_buf_t[],unsigned int) | | uv__count_bufs | 0 | const uv_buf_t[] | +| (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | unsigned int | +| (const uv_fs_t *) | | uv_fs_get_path | 0 | const uv_fs_t * | +| (const uv_fs_t *) | | uv_fs_get_ptr | 0 | const uv_fs_t * | +| (const uv_fs_t *) | | uv_fs_get_result | 0 | const uv_fs_t * | +| (const uv_fs_t *) | | uv_fs_get_system_error | 0 | const uv_fs_t * | +| (const uv_fs_t *) | | uv_fs_get_type | 0 | const uv_fs_t * | +| (const uv_handle_t *) | | uv_handle_get_data | 0 | const uv_handle_t * | +| (const uv_handle_t *) | | uv_handle_get_loop | 0 | const uv_handle_t * | +| (const uv_handle_t *) | | uv_handle_get_type | 0 | const uv_handle_t * | +| (const uv_handle_t *) | | uv_has_ref | 0 | const uv_handle_t * | +| (const uv_handle_t *) | | uv_is_active | 0 | const uv_handle_t * | +| (const uv_handle_t *) | | uv_is_closing | 0 | const uv_handle_t * | +| (const uv_handle_t *,uv__peersockfunc,sockaddr *,int *) | | uv__getsockpeername | 0 | const uv_handle_t * | +| (const uv_handle_t *,uv__peersockfunc,sockaddr *,int *) | | uv__getsockpeername | 1 | uv__peersockfunc | +| (const uv_handle_t *,uv__peersockfunc,sockaddr *,int *) | | uv__getsockpeername | 2 | sockaddr * | +| (const uv_handle_t *,uv__peersockfunc,sockaddr *,int *) | | uv__getsockpeername | 3 | int * | +| (const uv_handle_t *,uv_os_fd_t *) | | uv_fileno | 0 | const uv_handle_t * | +| (const uv_handle_t *,uv_os_fd_t *) | | uv_fileno | 1 | uv_os_fd_t * | +| (const uv_lib_t *) | | uv_dlerror | 0 | const uv_lib_t * | +| (const uv_loop_t *) | | uv__next_timeout | 0 | const uv_loop_t * | +| (const uv_loop_t *) | | uv_backend_fd | 0 | const uv_loop_t * | +| (const uv_loop_t *) | | uv_backend_timeout | 0 | const uv_loop_t * | +| (const uv_loop_t *) | | uv_loop_get_data | 0 | const uv_loop_t * | +| (const uv_loop_t *) | | uv_now | 0 | const uv_loop_t * | +| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getpeername | 0 | const uv_pipe_t * | +| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getpeername | 1 | char * | +| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getpeername | 2 | size_t * | +| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getsockname | 0 | const uv_pipe_t * | +| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getsockname | 1 | char * | +| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getsockname | 2 | size_t * | +| (const uv_process_t *) | | uv_process_get_pid | 0 | const uv_process_t * | +| (const uv_req_t *) | | uv_req_get_data | 0 | const uv_req_t * | +| (const uv_req_t *) | | uv_req_get_type | 0 | const uv_req_t * | +| (const uv_stream_t *) | | uv_stream_get_write_queue_size | 0 | const uv_stream_t * | +| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 0 | const uv_tcp_t * | +| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 1 | sockaddr * | +| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 2 | int * | +| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 0 | const uv_tcp_t * | +| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 1 | sockaddr * | +| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 2 | int * | +| (const uv_timer_t *) | | uv_timer_get_due_in | 0 | const uv_timer_t * | +| (const uv_timer_t *) | | uv_timer_get_repeat | 0 | const uv_timer_t * | +| (const uv_udp_t *) | | uv_udp_get_send_queue_count | 0 | const uv_udp_t * | +| (const uv_udp_t *) | | uv_udp_get_send_queue_size | 0 | const uv_udp_t * | +| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 0 | const uv_udp_t * | +| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 1 | sockaddr * | +| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 2 | int * | +| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 0 | const uv_udp_t * | +| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 1 | sockaddr * | +| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 2 | int * | | (const vector &) | vector | vector | 0 | const vector & | | (const vector &,const Allocator &) | vector | vector | 0 | const vector & | | (const vector &,const Allocator &) | vector | vector | 1 | const class:1 & | @@ -25731,6 +30061,11 @@ getSignatureParameterName | (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 3 | int | | (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 4 | ..(*)(..) | | (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 5 | int | +| (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 0 | const void * | +| (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 1 | const void * | +| (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | size_t | +| (const void *,size_t) | | Curl_memdup | 0 | const void * | +| (const void *,size_t) | | Curl_memdup | 1 | size_t | | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 0 | const void * | | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 1 | size_t | | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 2 | const char * | @@ -25785,6 +30120,79 @@ getSignatureParameterName | (const_iterator,size_type,const T &) | vector | insert | 0 | const_iterator | | (const_iterator,size_type,const T &) | vector | insert | 1 | size_type | | (const_iterator,size_type,const T &) | vector | insert | 2 | const class:0 & | +| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 0 | cpool * | +| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 1 | Curl_cpool_disconnect_cb * | +| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 2 | Curl_multi * | +| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 3 | Curl_share * | +| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 4 | size_t | +| (cpool *,fd_set *,fd_set *,int *) | | Curl_cpool_setfds | 0 | cpool * | +| (cpool *,fd_set *,fd_set *,int *) | | Curl_cpool_setfds | 1 | fd_set * | +| (cpool *,fd_set *,fd_set *,int *) | | Curl_cpool_setfds | 2 | fd_set * | +| (cpool *,fd_set *,fd_set *,int *) | | Curl_cpool_setfds | 3 | int * | +| (curl_blob **,const curl_blob *) | | Curl_setblobopt | 0 | curl_blob ** | +| (curl_blob **,const curl_blob *) | | Curl_setblobopt | 1 | const curl_blob * | +| (curl_httppost **,curl_httppost **,...) | | curl_formadd | 0 | curl_httppost ** | +| (curl_httppost **,curl_httppost **,...) | | curl_formadd | 1 | curl_httppost ** | +| (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | ... | +| (curl_mime *) | | curl_mime_addpart | 0 | curl_mime * | +| (curl_mimepart *) | | Curl_mime_cleanpart | 0 | curl_mimepart * | +| (curl_mimepart *,const char *) | | curl_mime_filedata | 0 | curl_mimepart * | +| (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | const char * | +| (curl_mimepart *,const char *,size_t) | | curl_mime_data | 0 | curl_mimepart * | +| (curl_mimepart *,const char *,size_t) | | curl_mime_data | 1 | const char * | +| (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | size_t | +| (curl_mimepart *,curl_mime *) | | curl_mime_subparts | 0 | curl_mimepart * | +| (curl_mimepart *,curl_mime *) | | curl_mime_subparts | 1 | curl_mime * | +| (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 0 | curl_mimepart * | +| (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 1 | curl_mime * | +| (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | int | +| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 0 | curl_mimepart * | +| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 1 | curl_off_t | +| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 2 | curl_read_callback | +| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 3 | curl_seek_callback | +| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 4 | curl_free_callback | +| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 5 | void * | +| (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 0 | curl_mimepart * | +| (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 1 | curl_slist * | +| (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | int | +| (curl_off_t *,const char *) | | str2offset | 0 | curl_off_t * | +| (curl_off_t *,const char *) | | str2offset | 1 | const char * | +| (curl_off_t) | | curlx_sotouz | 0 | curl_off_t | +| (curl_pollfds *,curl_socket_t,short) | | Curl_pollfds_add_sock | 0 | curl_pollfds * | +| (curl_pollfds *,curl_socket_t,short) | | Curl_pollfds_add_sock | 1 | curl_socket_t | +| (curl_pollfds *,curl_socket_t,short) | | Curl_pollfds_add_sock | 2 | short | +| (curl_pollfds *,easy_pollset *) | | Curl_pollfds_add_ps | 0 | curl_pollfds * | +| (curl_pollfds *,easy_pollset *) | | Curl_pollfds_add_ps | 1 | easy_pollset * | +| (curl_pollfds *,pollfd *,unsigned int) | | Curl_pollfds_init | 0 | curl_pollfds * | +| (curl_pollfds *,pollfd *,unsigned int) | | Curl_pollfds_init | 1 | pollfd * | +| (curl_pollfds *,pollfd *,unsigned int) | | Curl_pollfds_init | 2 | unsigned int | +| (curl_pushheaders *,const char *) | | curl_pushheader_byname | 0 | curl_pushheaders * | +| (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | const char * | +| (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 0 | curl_pushheaders * | +| (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | size_t | +| (curl_slist *) | | Curl_slist_duplicate | 0 | curl_slist * | +| (curl_slist **,const char *) | | add2list | 0 | curl_slist ** | +| (curl_slist **,const char *) | | add2list | 1 | const char * | +| (curl_slist *,char *) | | Curl_slist_append_nodup | 0 | curl_slist * | +| (curl_slist *,char *) | | Curl_slist_append_nodup | 1 | char * | +| (curl_slist *,const char *) | | curl_slist_append | 0 | curl_slist * | +| (curl_slist *,const char *) | | curl_slist_append | 1 | const char * | +| (curl_socket_t[2],bool) | | Curl_eventfd | 0 | curl_socket_t[2] | +| (curl_socket_t[2],bool) | | Curl_eventfd | 1 | bool | +| (curltime,Curl_tree *) | | Curl_splay | 0 | curltime | +| (curltime,Curl_tree *) | | Curl_splay | 1 | Curl_tree * | +| (curltime,Curl_tree *,Curl_tree *) | | Curl_splayinsert | 0 | curltime | +| (curltime,Curl_tree *,Curl_tree *) | | Curl_splayinsert | 1 | Curl_tree * | +| (curltime,Curl_tree *,Curl_tree *) | | Curl_splayinsert | 2 | Curl_tree * | +| (curltime,Curl_tree *,Curl_tree **) | | Curl_splaygetbest | 0 | curltime | +| (curltime,Curl_tree *,Curl_tree **) | | Curl_splaygetbest | 1 | Curl_tree * | +| (curltime,Curl_tree *,Curl_tree **) | | Curl_splaygetbest | 2 | Curl_tree ** | +| (curltime,curltime) | | Curl_timediff | 0 | curltime | +| (curltime,curltime) | | Curl_timediff | 1 | curltime | +| (curltime,curltime) | | Curl_timediff_ceil | 0 | curltime | +| (curltime,curltime) | | Curl_timediff_ceil | 1 | curltime | +| (curltime,curltime) | | Curl_timediff_us | 0 | curltime | +| (curltime,curltime) | | Curl_timediff_us | 1 | curltime | | (curve448_point_t,const curve448_point_t) | | ossl_curve448_point_double | 0 | curve448_point_t | | (curve448_point_t,const curve448_point_t) | | ossl_curve448_point_double | 1 | const curve448_point_t | | (curve448_point_t,const curve448_precomputed_s *,const curve448_scalar_t) | | ossl_curve448_precomputed_scalarmul | 0 | curve448_point_t | @@ -25826,14 +30234,99 @@ getSignatureParameterName | (d2i_of_void *,const char *,FILE *,void **,pem_password_cb *,void *) | | PEM_ASN1_read | 3 | void ** | | (d2i_of_void *,const char *,FILE *,void **,pem_password_cb *,void *) | | PEM_ASN1_read | 4 | pem_password_cb * | | (d2i_of_void *,const char *,FILE *,void **,pem_password_cb *,void *) | | PEM_ASN1_read | 5 | void * | +| (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 0 | deflate_state * | +| (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 1 | charf * | +| (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 2 | ulg | +| (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 3 | int | +| (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 0 | deflate_state * | +| (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 1 | charf * | +| (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 2 | ulg | +| (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 3 | int | +| (deflate_state *,unsigned int,unsigned int) | | _tr_tally | 0 | deflate_state * | +| (deflate_state *,unsigned int,unsigned int) | | _tr_tally | 1 | unsigned int | +| (deflate_state *,unsigned int,unsigned int) | | _tr_tally | 2 | unsigned int | | (deque &&) | deque | deque | 0 | deque && | | (deque &&,const Allocator &) | deque | deque | 0 | deque && | | (deque &&,const Allocator &) | deque | deque | 1 | const class:1 & | +| (dynbuf *) | | Curl_dyn_free | 0 | dynbuf * | +| (dynbuf *) | | curlx_dyn_free | 0 | dynbuf * | +| (dynbuf *,Curl_easy *) | | Curl_http2_request_upgrade | 0 | dynbuf * | +| (dynbuf *,Curl_easy *) | | Curl_http2_request_upgrade | 1 | Curl_easy * | +| (dynbuf *,FILE *) | | Curl_get_line | 0 | dynbuf * | +| (dynbuf *,FILE *) | | Curl_get_line | 1 | FILE * | +| (dynbuf *,FILE *) | | curlx_get_line | 0 | dynbuf * | +| (dynbuf *,FILE *) | | curlx_get_line | 1 | FILE * | +| (dynbuf *,const char *) | | Curl_dyn_add | 0 | dynbuf * | +| (dynbuf *,const char *) | | Curl_dyn_add | 1 | const char * | +| (dynbuf *,const char *) | | curlx_dyn_add | 0 | dynbuf * | +| (dynbuf *,const char *) | | curlx_dyn_add | 1 | const char * | +| (dynbuf *,const char *,va_list) | | Curl_dyn_vaddf | 0 | dynbuf * | +| (dynbuf *,const char *,va_list) | | Curl_dyn_vaddf | 1 | const char * | +| (dynbuf *,const char *,va_list) | | Curl_dyn_vaddf | 2 | va_list | +| (dynbuf *,const char *,va_list) | | Curl_dyn_vprintf | 0 | dynbuf * | +| (dynbuf *,const char *,va_list) | | Curl_dyn_vprintf | 1 | const char * | +| (dynbuf *,const char *,va_list) | | Curl_dyn_vprintf | 2 | va_list | +| (dynbuf *,const char *,va_list) | | curlx_dyn_vaddf | 0 | dynbuf * | +| (dynbuf *,const char *,va_list) | | curlx_dyn_vaddf | 1 | const char * | +| (dynbuf *,const char *,va_list) | | curlx_dyn_vaddf | 2 | va_list | +| (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 0 | dynbuf * | +| (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 1 | const void * | +| (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | size_t | +| (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 0 | dynbuf * | +| (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 1 | const void * | +| (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | size_t | +| (dynbuf *,size_t *) | | Curl_dyn_take | 0 | dynbuf * | +| (dynbuf *,size_t *) | | Curl_dyn_take | 1 | size_t * | +| (dynbuf *,size_t *) | | curlx_dyn_take | 0 | dynbuf * | +| (dynbuf *,size_t *) | | curlx_dyn_take | 1 | size_t * | +| (dynbuf *,size_t) | | Curl_dyn_init | 0 | dynbuf * | +| (dynbuf *,size_t) | | Curl_dyn_init | 1 | size_t | +| (dynbuf *,size_t) | | Curl_dyn_setlen | 0 | dynbuf * | +| (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | size_t | +| (dynbuf *,size_t) | | Curl_dyn_tail | 0 | dynbuf * | +| (dynbuf *,size_t) | | Curl_dyn_tail | 1 | size_t | +| (dynbuf *,size_t) | | curlx_dyn_init | 0 | dynbuf * | +| (dynbuf *,size_t) | | curlx_dyn_init | 1 | size_t | +| (dynbuf *,size_t) | | curlx_dyn_setlen | 0 | dynbuf * | +| (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | size_t | +| (dynbuf *,size_t) | | curlx_dyn_tail | 0 | dynbuf * | +| (dynbuf *,size_t) | | curlx_dyn_tail | 1 | size_t | +| (dynhds *) | | Curl_dynhds_count | 0 | dynhds * | +| (dynhds *,const char *) | | Curl_dynhds_cget | 0 | dynhds * | +| (dynhds *,const char *) | | Curl_dynhds_cget | 1 | const char * | +| (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 0 | dynhds * | +| (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | const char * | +| (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 0 | dynhds * | +| (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 1 | const char * | +| (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 2 | const char * | +| (dynhds *,const char *,size_t) | | Curl_dynhds_get | 0 | dynhds * | +| (dynhds *,const char *,size_t) | | Curl_dynhds_get | 1 | const char * | +| (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | size_t | +| (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 0 | dynhds * | +| (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 1 | const char * | +| (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | size_t | +| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 0 | dynhds * | +| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 1 | const char * | +| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 2 | size_t | +| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 3 | const char * | +| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 4 | size_t | +| (dynhds *,int) | | Curl_dynhds_set_opts | 0 | dynhds * | +| (dynhds *,int) | | Curl_dynhds_set_opts | 1 | int | +| (dynhds *,size_t *) | | Curl_dynhds_to_nva | 0 | dynhds * | +| (dynhds *,size_t *) | | Curl_dynhds_to_nva | 1 | size_t * | +| (dynhds *,size_t) | | Curl_dynhds_getn | 0 | dynhds * | +| (dynhds *,size_t) | | Curl_dynhds_getn | 1 | size_t | +| (dynhds *,size_t,size_t) | | Curl_dynhds_init | 0 | dynhds * | +| (dynhds *,size_t,size_t) | | Curl_dynhds_init | 1 | size_t | +| (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | size_t | +| (fileinfo *) | | Curl_fileinfo_cleanup | 0 | fileinfo * | | (format_string,Args &&) | | format | 0 | format_string | | (format_string,Args &&) | | format | 1 | func:0 && | | (forward_list &&) | forward_list | forward_list | 0 | forward_list && | | (forward_list &&,const Allocator &) | forward_list | forward_list | 0 | forward_list && | | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | const class:1 & | +| (ftp_parselist_data *) | | Curl_ftp_parselist_geterror | 0 | ftp_parselist_data * | +| (ftp_parselist_data **) | | Curl_ftp_parselist_data_free | 0 | ftp_parselist_data ** | | (gf,const gf,const gf) | | gf_add | 0 | gf | | (gf,const gf,const gf) | | gf_add | 1 | const gf | | (gf,const gf,const gf) | | gf_add | 2 | const gf | @@ -25844,6 +30337,78 @@ getSignatureParameterName | (gf,const uint8_t[56],int,uint8_t) | | gf_deserialize | 1 | const uint8_t[56] | | (gf,const uint8_t[56],int,uint8_t) | | gf_deserialize | 2 | int | | (gf,const uint8_t[56],int,uint8_t) | | gf_deserialize | 3 | uint8_t | +| (gzFile) | | gzclearerr | 0 | gzFile | +| (gzFile) | | gzclose | 0 | gzFile | +| (gzFile) | | gzclose_w | 0 | gzFile | +| (gzFile) | | gzdirect | 0 | gzFile | +| (gzFile) | | gzeof | 0 | gzFile | +| (gzFile) | | gzgetc | 0 | gzFile | +| (gzFile) | | gzgetc_ | 0 | gzFile | +| (gzFile) | | gzoffset | 0 | gzFile | +| (gzFile) | | gzoffset64 | 0 | gzFile | +| (gzFile) | | gzrewind | 0 | gzFile | +| (gzFile) | | gztell | 0 | gzFile | +| (gzFile) | | gztell64 | 0 | gzFile | +| (gzFile,char *,int) | | gzgets | 0 | gzFile | +| (gzFile,char *,int) | | gzgets | 1 | char * | +| (gzFile,char *,int) | | gzgets | 2 | int | +| (gzFile,const char *) | | gzputs | 0 | gzFile | +| (gzFile,const char *) | | gzputs | 1 | const char * | +| (gzFile,const char *,va_list) | | gzvprintf | 0 | gzFile | +| (gzFile,const char *,va_list) | | gzvprintf | 1 | const char * | +| (gzFile,const char *,va_list) | | gzvprintf | 2 | va_list | +| (gzFile,int *) | | gzerror | 0 | gzFile | +| (gzFile,int *) | | gzerror | 1 | int * | +| (gzFile,int) | | gzflush | 0 | gzFile | +| (gzFile,int) | | gzflush | 1 | int | +| (gzFile,int) | | gzputc | 0 | gzFile | +| (gzFile,int) | | gzputc | 1 | int | +| (gzFile,int,int) | | gzsetparams | 0 | gzFile | +| (gzFile,int,int) | | gzsetparams | 1 | int | +| (gzFile,int,int) | | gzsetparams | 2 | int | +| (gzFile,off64_t,int) | | gzseek64 | 0 | gzFile | +| (gzFile,off64_t,int) | | gzseek64 | 1 | off64_t | +| (gzFile,off64_t,int) | | gzseek64 | 2 | int | +| (gzFile,off_t,int) | | gzseek | 0 | gzFile | +| (gzFile,off_t,int) | | gzseek | 1 | off_t | +| (gzFile,off_t,int) | | gzseek | 2 | int | +| (gzFile,unsigned int) | | gzbuffer | 0 | gzFile | +| (gzFile,unsigned int) | | gzbuffer | 1 | unsigned int | +| (gzFile,voidp,unsigned int) | | gzread | 0 | gzFile | +| (gzFile,voidp,unsigned int) | | gzread | 1 | voidp | +| (gzFile,voidp,unsigned int) | | gzread | 2 | unsigned int | +| (gzFile,voidpc,unsigned int) | | gzwrite | 0 | gzFile | +| (gzFile,voidpc,unsigned int) | | gzwrite | 1 | voidpc | +| (gzFile,voidpc,unsigned int) | | gzwrite | 2 | unsigned int | +| (gz_statep,int,const char *) | | gz_error | 0 | gz_statep | +| (gz_statep,int,const char *) | | gz_error | 1 | int | +| (gz_statep,int,const char *) | | gz_error | 2 | const char * | +| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 0 | h1_req_parser * | +| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 1 | const char * | +| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 2 | size_t | +| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 3 | const char * | +| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 4 | int | +| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 5 | CURLcode * | +| (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 0 | h1_req_parser * | +| (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | size_t | +| (hsts **) | | Curl_hsts_cleanup | 0 | hsts ** | +| (http_resp **,int,const char *) | | Curl_http_resp_make | 0 | http_resp ** | +| (http_resp **,int,const char *) | | Curl_http_resp_make | 1 | int | +| (http_resp **,int,const char *) | | Curl_http_resp_make | 2 | const char * | +| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 0 | httpreq ** | +| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 1 | const char * | +| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 2 | size_t | +| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 3 | CURLU * | +| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 4 | const char * | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 0 | httpreq ** | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 1 | const char * | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 2 | size_t | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 3 | const char * | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 4 | size_t | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 5 | const char * | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 6 | size_t | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 7 | const char * | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 8 | size_t | | (i2d_of_void *,BIO *,const void *) | | ASN1_i2d_bio | 0 | i2d_of_void * | | (i2d_of_void *,BIO *,const void *) | | ASN1_i2d_bio | 1 | BIO * | | (i2d_of_void *,BIO *,const void *) | | ASN1_i2d_bio | 2 | const void * | @@ -25878,6 +30443,14 @@ getSignatureParameterName | (i2d_of_void *,d2i_of_void *,const void *) | | ASN1_dup | 0 | i2d_of_void * | | (i2d_of_void *,d2i_of_void *,const void *) | | ASN1_dup | 1 | d2i_of_void * | | (i2d_of_void *,d2i_of_void *,const void *) | | ASN1_dup | 2 | const void * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_adjust_local_window_size | 0 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_adjust_local_window_size | 1 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_adjust_local_window_size | 2 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_adjust_local_window_size | 3 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_increase_local_window_size | 0 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_increase_local_window_size | 1 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_increase_local_window_size | 2 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_increase_local_window_size | 3 | int32_t * | | (int64_t *,const ASN1_ENUMERATED *) | | ASN1_ENUMERATED_get_int64 | 0 | int64_t * | | (int64_t *,const ASN1_ENUMERATED *) | | ASN1_ENUMERATED_get_int64 | 1 | const ASN1_ENUMERATED * | | (int64_t *,const ASN1_INTEGER *) | | ASN1_INTEGER_get_int64 | 0 | int64_t * | @@ -25900,6 +30473,9 @@ getSignatureParameterName | (int *,const char *,const char *,const char *,const char *,int,int,int,int,int,BIO_ADDR **) | | init_client | 8 | int | | (int *,const char *,const char *,const char *,const char *,int,int,int,int,int,BIO_ADDR **) | | init_client | 9 | int | | (int *,const char *,const char *,const char *,const char *,int,int,int,int,int,BIO_ADDR **) | | init_client | 10 | BIO_ADDR ** | +| (int *,const char *,size_t) | | Curl_http_decode_status | 0 | int * | +| (int *,const char *,size_t) | | Curl_http_decode_status | 1 | const char * | +| (int *,const char *,size_t) | | Curl_http_decode_status | 2 | size_t | | (int *,int *,const ASN1_TIME *,const ASN1_TIME *) | | ASN1_TIME_diff | 0 | int * | | (int *,int *,const ASN1_TIME *,const ASN1_TIME *) | | ASN1_TIME_diff | 1 | int * | | (int *,int *,const ASN1_TIME *,const ASN1_TIME *) | | ASN1_TIME_diff | 2 | const ASN1_TIME * | @@ -25948,6 +30524,9 @@ getSignatureParameterName | (int) | | X509_TRUST_get0 | 0 | int | | (int) | | X509_TRUST_get_by_id | 0 | int | | (int) | | X509_VERIFY_PARAM_get0 | 0 | int | +| (int) | | c_tolower | 0 | int | +| (int) | | c_toupper | 0 | int | +| (int) | | curlx_sitouz | 0 | int | | (int) | | evp_pkey_type2name | 0 | int | | (int) | | ossl_cmp_bodytype_to_string | 0 | int | | (int) | | ossl_tolower | 0 | int | @@ -25955,6 +30534,12 @@ getSignatureParameterName | (int) | | sqlite3_compileoption_get | 0 | int | | (int) | | sqlite3_errstr | 0 | int | | (int) | | tls13_alert_code | 0 | int | +| (int) | | uv__accept | 0 | int | +| (int) | | uv_err_name | 0 | int | +| (int) | | uv_get_osfhandle | 0 | int | +| (int) | | uv_strerror | 0 | int | +| (int) | | uv_translate_sys_error | 0 | int | +| (int) | | zError | 0 | int | | (int,BIO_ADDR *,int) | | BIO_accept_ex | 0 | int | | (int,BIO_ADDR *,int) | | BIO_accept_ex | 1 | BIO_ADDR * | | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | int | @@ -26048,6 +30633,8 @@ getSignatureParameterName | (int,XCHAR) | CStringT | Insert | 1 | XCHAR | | (int,char **) | | BIO_accept | 0 | int | | (int,char **) | | BIO_accept | 1 | char ** | +| (int,char **) | | uv_setup_args | 0 | int | +| (int,char **) | | uv_setup_args | 1 | char ** | | (int,char **,char *[]) | | ca_main | 0 | int | | (int,char **,char *[]) | | ca_main | 1 | char ** | | (int,char **,char *[]) | | ca_main | 2 | char *[] | @@ -26204,6 +30791,19 @@ getSignatureParameterName | (int,char **,const OPTIONS *) | | opt_init | 0 | int | | (int,char **,const OPTIONS *) | | opt_init | 1 | char ** | | (int,char **,const OPTIONS *) | | opt_init | 2 | const OPTIONS * | +| (int,char **,gengetopt_args_info *) | | cmdline_parser | 0 | int | +| (int,char **,gengetopt_args_info *) | | cmdline_parser | 1 | char ** | +| (int,char **,gengetopt_args_info *) | | cmdline_parser | 2 | gengetopt_args_info * | +| (int,char **,gengetopt_args_info *,cmdline_parser_params *) | | cmdline_parser_ext | 0 | int | +| (int,char **,gengetopt_args_info *,cmdline_parser_params *) | | cmdline_parser_ext | 1 | char ** | +| (int,char **,gengetopt_args_info *,cmdline_parser_params *) | | cmdline_parser_ext | 2 | gengetopt_args_info * | +| (int,char **,gengetopt_args_info *,cmdline_parser_params *) | | cmdline_parser_ext | 3 | cmdline_parser_params * | +| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 0 | int | +| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 1 | char ** | +| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 2 | gengetopt_args_info * | +| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 3 | int | +| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 4 | int | +| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 5 | int | | (int,char *,const char *,...) | | sqlite3_snprintf | 0 | int | | (int,char *,const char *,...) | | sqlite3_snprintf | 1 | char * | | (int,char *,const char *,...) | | sqlite3_snprintf | 2 | const char * | @@ -26212,6 +30812,15 @@ getSignatureParameterName | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 1 | char * | | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 2 | const char * | | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 3 | va_list | +| (int,char *,size_t) | | Curl_strerror | 0 | int | +| (int,char *,size_t) | | Curl_strerror | 1 | char * | +| (int,char *,size_t) | | Curl_strerror | 2 | size_t | +| (int,char *,size_t) | | uv_err_name_r | 0 | int | +| (int,char *,size_t) | | uv_err_name_r | 1 | char * | +| (int,char *,size_t) | | uv_err_name_r | 2 | size_t | +| (int,char *,size_t) | | uv_strerror_r | 0 | int | +| (int,char *,size_t) | | uv_strerror_r | 1 | char * | +| (int,char *,size_t) | | uv_strerror_r | 2 | size_t | | (int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *) | | PKCS8_encrypt | 0 | int | | (int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *) | | PKCS8_encrypt | 1 | const EVP_CIPHER * | | (int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *) | | PKCS8_encrypt | 2 | const char * | @@ -26237,6 +30846,8 @@ getSignatureParameterName | (int,const OSSL_STORE_INFO *) | | OSSL_STORE_INFO_get0_data | 1 | const OSSL_STORE_INFO * | | (int,const char *) | | BIO_meth_new | 0 | int | | (int,const char *) | | BIO_meth_new | 1 | const char * | +| (int,const char *) | | gzdopen | 0 | int | +| (int,const char *) | | gzdopen | 1 | const char * | | (int,const char **,int *) | | sqlite3_keyword_name | 0 | int | | (int,const char **,int *) | | sqlite3_keyword_name | 1 | const char ** | | (int,const char **,int *) | | sqlite3_keyword_name | 2 | int * | @@ -26276,6 +30887,13 @@ getSignatureParameterName | (int,const regex_t *,char *,size_t) | | jim_regerror | 1 | const regex_t * | | (int,const regex_t *,char *,size_t) | | jim_regerror | 2 | char * | | (int,const regex_t *,char *,size_t) | | jim_regerror | 3 | size_t | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 0 | int | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 1 | const uint8_t *__restrict__ | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 2 | size_t | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 3 | size_t | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 4 | size_t | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 5 | size_t *__restrict__ | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 6 | uint8_t *__restrict__ | | (int,const unsigned char *,int,const unsigned char *,int,DSA *) | | DSA_verify | 0 | int | | (int,const unsigned char *,int,const unsigned char *,int,DSA *) | | DSA_verify | 1 | const unsigned char * | | (int,const unsigned char *,int,const unsigned char *,int,DSA *) | | DSA_verify | 2 | int | @@ -26320,6 +30938,16 @@ getSignatureParameterName | (int,const unsigned char *,unsigned int,unsigned char *,size_t *,const unsigned char *,size_t,RSA *) | | ossl_rsa_verify | 5 | const unsigned char * | | (int,const unsigned char *,unsigned int,unsigned char *,size_t *,const unsigned char *,size_t,RSA *) | | ossl_rsa_verify | 6 | size_t | | (int,const unsigned char *,unsigned int,unsigned char *,size_t *,const unsigned char *,size_t,RSA *) | | ossl_rsa_verify | 7 | RSA * | +| (int,const void *,char *,size_t) | | uv_inet_ntop | 0 | int | +| (int,const void *,char *,size_t) | | uv_inet_ntop | 1 | const void * | +| (int,const void *,char *,size_t) | | uv_inet_ntop | 2 | char * | +| (int,const void *,char *,size_t) | | uv_inet_ntop | 3 | size_t | +| (int,const void *,const char *,int) | | Curl_ip2addr | 0 | int | +| (int,const void *,const char *,int) | | Curl_ip2addr | 1 | const void * | +| (int,const void *,const char *,int) | | Curl_ip2addr | 2 | const char * | +| (int,const void *,const char *,int) | | Curl_ip2addr | 3 | int | +| (int,gzFile) | | gzungetc | 0 | int | +| (int,gzFile) | | gzungetc | 1 | gzFile | | (int,int *,int *,int) | | sqlite3_status | 0 | int | | (int,int *,int *,int) | | sqlite3_status | 1 | int * | | (int,int *,int *,int) | | sqlite3_status | 2 | int * | @@ -26332,6 +30960,13 @@ getSignatureParameterName | (int,int) | | EVP_PKEY_meth_new | 1 | int | | (int,int) | | acttab_alloc | 0 | int | | (int,int) | | acttab_alloc | 1 | int | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 0 | int | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 1 | int | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 2 | BrotliEncoderMode | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 3 | size_t | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 4 | const uint8_t[] | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 5 | size_t * | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 6 | uint8_t[] | | (int,int,TLS_GROUP_INFO *,size_t,long,stack_st_OPENSSL_CSTRING *) | | tls1_get0_implemented_groups | 0 | int | | (int,int,TLS_GROUP_INFO *,size_t,long,stack_st_OPENSSL_CSTRING *) | | tls1_get0_implemented_groups | 1 | int | | (int,int,TLS_GROUP_INFO *,size_t,long,stack_st_OPENSSL_CSTRING *) | | tls1_get0_implemented_groups | 2 | TLS_GROUP_INFO * | @@ -26374,6 +31009,9 @@ getSignatureParameterName | (int,int,int,const void *,size_t,SSL *,void *) | | SSL_trace | 4 | size_t | | (int,int,int,const void *,size_t,SSL *,void *) | | SSL_trace | 5 | SSL * | | (int,int,int,const void *,size_t,SSL *,void *) | | SSL_trace | 6 | void * | +| (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 0 | int | +| (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 1 | int | +| (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | size_t | | (int,int,size_t,size_t) | | ossl_rand_pool_new | 0 | int | | (int,int,size_t,size_t) | | ossl_rand_pool_new | 1 | int | | (int,int,size_t,size_t) | | ossl_rand_pool_new | 2 | size_t | @@ -26399,6 +31037,8 @@ getSignatureParameterName | (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 1 | sqlite3_int64 * | | (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 2 | sqlite3_int64 * | | (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 3 | int | +| (int,stat *) | | stat_time_normalize | 0 | int | +| (int,stat *) | | stat_time_normalize | 1 | stat * | | (int,unsigned char *,int,const char *,const char *) | | ASN1_OBJECT_create | 0 | int | | (int,unsigned char *,int,const char *,const char *) | | ASN1_OBJECT_create | 1 | unsigned char * | | (int,unsigned char *,int,const char *,const char *) | | ASN1_OBJECT_create | 2 | int | @@ -26449,12 +31089,626 @@ getSignatureParameterName | (list &&) | list | list | 0 | list && | | (list &&,const Allocator &) | list | list | 0 | list && | | (list &&,const Allocator &) | list | list | 1 | const class:1 & | +| (list_head *) | | _libssh2_list_first | 0 | list_head * | +| (list_head *) | | _libssh2_list_init | 0 | list_head * | +| (list_head *,list_node *) | | _libssh2_list_add | 0 | list_head * | +| (list_head *,list_node *) | | _libssh2_list_add | 1 | list_node * | +| (list_node *) | | _libssh2_list_next | 0 | list_node * | +| (list_node *) | | _libssh2_list_prev | 0 | list_node * | +| (long *,const char *) | | secs2ms | 0 | long * | +| (long *,const char *) | | secs2ms | 1 | const char * | +| (long *,const char *) | | str2num | 0 | long * | +| (long *,const char *) | | str2num | 1 | const char * | +| (long *,const char *) | | str2unum | 0 | long * | +| (long *,const char *) | | str2unum | 1 | const char * | +| (long *,const char *,long) | | oct2nummax | 0 | long * | +| (long *,const char *,long) | | oct2nummax | 1 | const char * | +| (long *,const char *,long) | | oct2nummax | 2 | long | +| (long *,const char *,long) | | str2unummax | 0 | long * | +| (long *,const char *,long) | | str2unummax | 1 | const char * | +| (long *,const char *,long) | | str2unummax | 2 | long | +| (long long *) | | uv__get_constrained_cpu | 0 | long long * | +| (long) | | curlx_sltosi | 0 | long | +| (long) | | curlx_sltoui | 0 | long | +| (long) | | curlx_sltous | 0 | long | +| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_init2 | 0 | nghttp2_buf * | +| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_init2 | 1 | size_t | +| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_init2 | 2 | nghttp2_mem * | +| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_reserve | 0 | nghttp2_buf * | +| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_reserve | 1 | size_t | +| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_reserve | 2 | nghttp2_mem * | +| (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 0 | nghttp2_buf * | +| (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 1 | uint8_t * | +| (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | size_t | +| (nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init2 | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init2 | 1 | const nghttp2_vec * | +| (nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init2 | 2 | size_t | +| (nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init2 | 3 | nghttp2_mem * | +| (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 1 | nghttp2_frame_hd * | +| (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 2 | size_t | +| (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 3 | int | +| (nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_headers | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_headers | 1 | nghttp2_headers * | +| (nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_headers | 2 | nghttp2_hd_deflater * | +| (nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_push_promise | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_push_promise | 1 | nghttp2_push_promise * | +| (nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_push_promise | 2 | nghttp2_hd_deflater * | +| (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | size_t | +| (nghttp2_bufs *,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init | 1 | size_t | +| (nghttp2_bufs *,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init | 2 | size_t | +| (nghttp2_bufs *,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init | 3 | nghttp2_mem * | +| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 1 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 2 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 3 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 4 | nghttp2_mem * | +| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 1 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 2 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 3 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 4 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 5 | nghttp2_mem * | +| (nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init | 1 | uint8_t * | +| (nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init | 2 | size_t | +| (nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init | 3 | nghttp2_mem * | +| (nghttp2_data *,uint8_t,int32_t) | | nghttp2_frame_data_init | 0 | nghttp2_data * | +| (nghttp2_data *,uint8_t,int32_t) | | nghttp2_frame_data_init | 1 | uint8_t | +| (nghttp2_data *,uint8_t,int32_t) | | nghttp2_frame_data_init | 2 | int32_t | +| (nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *) | | nghttp2_data_provider_wrap_v2 | 0 | nghttp2_data_provider_wrap * | +| (nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *) | | nghttp2_data_provider_wrap_v2 | 1 | const nghttp2_data_provider2 * | +| (nghttp2_data_provider_wrap *,const nghttp2_data_provider *) | | nghttp2_data_provider_wrap_v1 | 0 | nghttp2_data_provider_wrap * | +| (nghttp2_data_provider_wrap *,const nghttp2_data_provider *) | | nghttp2_data_provider_wrap_v1 | 1 | const nghttp2_data_provider * | +| (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 0 | nghttp2_extension * | +| (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 1 | int32_t | +| (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 2 | uint8_t * | +| (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 3 | size_t | +| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 0 | nghttp2_extension * | +| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 1 | int32_t | +| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 2 | uint8_t * | +| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 3 | size_t | +| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 4 | uint8_t * | +| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 5 | size_t | +| (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 0 | nghttp2_extension * | +| (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 1 | nghttp2_origin_entry * | +| (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | size_t | +| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 0 | nghttp2_extension * | +| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 1 | uint8_t | +| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 2 | uint8_t | +| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 3 | int32_t | +| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 4 | void * | +| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 0 | nghttp2_extpri * | +| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 1 | const uint8_t * | +| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | size_t | +| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 0 | nghttp2_extpri * | +| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 1 | const uint8_t * | +| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | size_t | +| (nghttp2_extpri *,uint8_t) | | nghttp2_extpri_from_uint8 | 0 | nghttp2_extpri * | +| (nghttp2_extpri *,uint8_t) | | nghttp2_extpri_from_uint8 | 1 | uint8_t | +| (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 0 | nghttp2_frame * | +| (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | size_t | +| (nghttp2_frame_hd *,const uint8_t *) | | nghttp2_frame_unpack_frame_hd | 0 | nghttp2_frame_hd * | +| (nghttp2_frame_hd *,const uint8_t *) | | nghttp2_frame_unpack_frame_hd | 1 | const uint8_t * | +| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 0 | nghttp2_frame_hd * | +| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 1 | size_t | +| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 2 | uint8_t | +| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 3 | uint8_t | +| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 4 | int32_t | +| (nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_goaway_payload2 | 0 | nghttp2_goaway * | +| (nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_goaway_payload2 | 1 | const uint8_t * | +| (nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_goaway_payload2 | 2 | size_t | +| (nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_goaway_payload2 | 3 | nghttp2_mem * | +| (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 0 | nghttp2_goaway * | +| (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 1 | const uint8_t * | +| (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 2 | uint8_t * | +| (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 3 | size_t | +| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 0 | nghttp2_goaway * | +| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 1 | int32_t | +| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 2 | uint32_t | +| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 3 | uint8_t * | +| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 4 | size_t | +| (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 0 | nghttp2_hd_context * | +| (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | size_t | +| (nghttp2_hd_deflater *) | | nghttp2_hd_deflate_get_dynamic_table_size | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *) | | nghttp2_hd_deflate_get_max_dynamic_table_size | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 0 | nghttp2_hd_deflater ** | +| (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | size_t | +| (nghttp2_hd_deflater **,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_new2 | 0 | nghttp2_hd_deflater ** | +| (nghttp2_hd_deflater **,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_new2 | 1 | size_t | +| (nghttp2_hd_deflater **,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_new2 | 2 | nghttp2_mem * | +| (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 1 | const nghttp2_nv * | +| (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | size_t | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 1 | const nghttp2_vec * | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 2 | size_t | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 3 | const nghttp2_nv * | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 4 | size_t | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 1 | const nghttp2_vec * | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 2 | size_t | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 3 | const nghttp2_nv * | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 4 | size_t | +| (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 1 | nghttp2_bufs * | +| (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 2 | const nghttp2_nv * | +| (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 3 | size_t | +| (nghttp2_hd_deflater *,nghttp2_mem *) | | nghttp2_hd_deflate_init | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,nghttp2_mem *) | | nghttp2_hd_deflate_init | 1 | nghttp2_mem * | +| (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | size_t | +| (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | size_t | +| (nghttp2_hd_deflater *,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_init2 | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_init2 | 1 | size_t | +| (nghttp2_hd_deflater *,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_init2 | 2 | nghttp2_mem * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 1 | uint8_t * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 2 | size_t | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 3 | const nghttp2_nv * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 4 | size_t | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 1 | uint8_t * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 2 | size_t | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 3 | const nghttp2_nv * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 4 | size_t | +| (nghttp2_hd_entry *,nghttp2_hd_nv *) | | nghttp2_hd_entry_init | 0 | nghttp2_hd_entry * | +| (nghttp2_hd_entry *,nghttp2_hd_nv *) | | nghttp2_hd_entry_init | 1 | nghttp2_hd_nv * | +| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 0 | nghttp2_hd_huff_decode_context * | +| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 1 | nghttp2_buf * | +| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 2 | const uint8_t * | +| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 3 | size_t | +| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 4 | int | +| (nghttp2_hd_inflater *) | | nghttp2_hd_inflate_get_dynamic_table_size | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *) | | nghttp2_hd_inflate_get_max_dynamic_table_size | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater **,nghttp2_mem *) | | nghttp2_hd_inflate_new2 | 0 | nghttp2_hd_inflater ** | +| (nghttp2_hd_inflater **,nghttp2_mem *) | | nghttp2_hd_inflate_new2 | 1 | nghttp2_mem * | +| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 1 | nghttp2_hd_nv * | +| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 2 | int * | +| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 3 | const uint8_t * | +| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 4 | size_t | +| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 5 | int | +| (nghttp2_hd_inflater *,nghttp2_mem *) | | nghttp2_hd_inflate_init | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,nghttp2_mem *) | | nghttp2_hd_inflate_init | 1 | nghttp2_mem * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 1 | nghttp2_nv * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 2 | int * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 3 | const uint8_t * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 4 | size_t | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 5 | int | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 1 | nghttp2_nv * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 2 | int * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 3 | const uint8_t * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 4 | size_t | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 5 | int | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 1 | nghttp2_nv * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 2 | int * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 3 | uint8_t * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 4 | size_t | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 5 | int | +| (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | size_t | +| (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | size_t | +| (nghttp2_headers *,const uint8_t *) | | nghttp2_frame_unpack_headers_payload | 0 | nghttp2_headers * | +| (nghttp2_headers *,const uint8_t *) | | nghttp2_frame_unpack_headers_payload | 1 | const uint8_t * | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 0 | nghttp2_headers * | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 1 | uint8_t | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 2 | int32_t | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 3 | nghttp2_headers_category | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 4 | const nghttp2_priority_spec * | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 5 | nghttp2_nv * | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 6 | size_t | +| (nghttp2_map *,nghttp2_map_key_type,void *) | | nghttp2_map_insert | 0 | nghttp2_map * | +| (nghttp2_map *,nghttp2_map_key_type,void *) | | nghttp2_map_insert | 1 | nghttp2_map_key_type | +| (nghttp2_map *,nghttp2_map_key_type,void *) | | nghttp2_map_insert | 2 | void * | +| (nghttp2_map *,nghttp2_mem *) | | nghttp2_map_init | 0 | nghttp2_map * | +| (nghttp2_map *,nghttp2_mem *) | | nghttp2_map_init | 1 | nghttp2_mem * | +| (nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *) | | nghttp2_nv_array_copy | 0 | nghttp2_nv ** | +| (nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *) | | nghttp2_nv_array_copy | 1 | const nghttp2_nv * | +| (nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *) | | nghttp2_nv_array_copy | 2 | size_t | +| (nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *) | | nghttp2_nv_array_copy | 3 | nghttp2_mem * | +| (nghttp2_option **) | | nghttp2_option_new | 0 | nghttp2_option ** | +| (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | int | +| (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | int | +| (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | int | +| (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | int | +| (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | int | +| (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | int | +| (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | int | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 0 | nghttp2_option * | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | size_t | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 0 | nghttp2_option * | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | size_t | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 0 | nghttp2_option * | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | size_t | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 0 | nghttp2_option * | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | size_t | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 0 | nghttp2_option * | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | size_t | +| (nghttp2_option *,uint8_t) | | nghttp2_option_set_user_recv_extension_type | 0 | nghttp2_option * | +| (nghttp2_option *,uint8_t) | | nghttp2_option_set_user_recv_extension_type | 1 | uint8_t | +| (nghttp2_option *,uint32_t) | | nghttp2_option_set_max_reserved_remote_streams | 0 | nghttp2_option * | +| (nghttp2_option *,uint32_t) | | nghttp2_option_set_max_reserved_remote_streams | 1 | uint32_t | +| (nghttp2_option *,uint32_t) | | nghttp2_option_set_peer_max_concurrent_streams | 0 | nghttp2_option * | +| (nghttp2_option *,uint32_t) | | nghttp2_option_set_peer_max_concurrent_streams | 1 | uint32_t | +| (nghttp2_option *,uint64_t,uint64_t) | | nghttp2_option_set_stream_reset_rate_limit | 0 | nghttp2_option * | +| (nghttp2_option *,uint64_t,uint64_t) | | nghttp2_option_set_stream_reset_rate_limit | 1 | uint64_t | +| (nghttp2_option *,uint64_t,uint64_t) | | nghttp2_option_set_stream_reset_rate_limit | 2 | uint64_t | +| (nghttp2_outbound_queue *) | | nghttp2_outbound_queue_init | 0 | nghttp2_outbound_queue * | +| (nghttp2_outbound_queue *,nghttp2_outbound_item *) | | nghttp2_outbound_queue_push | 0 | nghttp2_outbound_queue * | +| (nghttp2_outbound_queue *,nghttp2_outbound_item *) | | nghttp2_outbound_queue_push | 1 | nghttp2_outbound_item * | +| (nghttp2_ping *,const uint8_t *) | | nghttp2_frame_unpack_ping_payload | 0 | nghttp2_ping * | +| (nghttp2_ping *,const uint8_t *) | | nghttp2_frame_unpack_ping_payload | 1 | const uint8_t * | +| (nghttp2_ping *,uint8_t,const uint8_t *) | | nghttp2_frame_ping_init | 0 | nghttp2_ping * | +| (nghttp2_ping *,uint8_t,const uint8_t *) | | nghttp2_frame_ping_init | 1 | uint8_t | +| (nghttp2_ping *,uint8_t,const uint8_t *) | | nghttp2_frame_ping_init | 2 | const uint8_t * | +| (nghttp2_pq *) | | nghttp2_pq_size | 0 | nghttp2_pq * | +| (nghttp2_pq *) | | nghttp2_pq_top | 0 | nghttp2_pq * | +| (nghttp2_pq *,nghttp2_less,nghttp2_mem *) | | nghttp2_pq_init | 0 | nghttp2_pq * | +| (nghttp2_pq *,nghttp2_less,nghttp2_mem *) | | nghttp2_pq_init | 1 | nghttp2_less | +| (nghttp2_pq *,nghttp2_less,nghttp2_mem *) | | nghttp2_pq_init | 2 | nghttp2_mem * | +| (nghttp2_pq *,nghttp2_pq_entry *) | | nghttp2_pq_push | 0 | nghttp2_pq * | +| (nghttp2_pq *,nghttp2_pq_entry *) | | nghttp2_pq_push | 1 | nghttp2_pq_entry * | +| (nghttp2_pq *,nghttp2_pq_entry *) | | nghttp2_pq_remove | 0 | nghttp2_pq * | +| (nghttp2_pq *,nghttp2_pq_entry *) | | nghttp2_pq_remove | 1 | nghttp2_pq_entry * | +| (nghttp2_priority *,const uint8_t *) | | nghttp2_frame_unpack_priority_payload | 0 | nghttp2_priority * | +| (nghttp2_priority *,const uint8_t *) | | nghttp2_frame_unpack_priority_payload | 1 | const uint8_t * | +| (nghttp2_priority *,int32_t,const nghttp2_priority_spec *) | | nghttp2_frame_priority_init | 0 | nghttp2_priority * | +| (nghttp2_priority *,int32_t,const nghttp2_priority_spec *) | | nghttp2_frame_priority_init | 1 | int32_t | +| (nghttp2_priority *,int32_t,const nghttp2_priority_spec *) | | nghttp2_frame_priority_init | 2 | const nghttp2_priority_spec * | +| (nghttp2_priority_spec *,const uint8_t *) | | nghttp2_frame_unpack_priority_spec | 0 | nghttp2_priority_spec * | +| (nghttp2_priority_spec *,const uint8_t *) | | nghttp2_frame_unpack_priority_spec | 1 | const uint8_t * | +| (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 0 | nghttp2_priority_spec * | +| (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 1 | int32_t | +| (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 2 | int32_t | +| (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 3 | int | +| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 0 | nghttp2_push_promise * | +| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 1 | uint8_t | +| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 2 | int32_t | +| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 3 | int32_t | +| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 4 | nghttp2_nv * | +| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 5 | size_t | +| (nghttp2_queue *) | | nghttp2_queue_back | 0 | nghttp2_queue * | +| (nghttp2_queue *) | | nghttp2_queue_front | 0 | nghttp2_queue * | +| (nghttp2_queue *) | | nghttp2_queue_init | 0 | nghttp2_queue * | +| (nghttp2_queue *) | | nghttp2_queue_pop | 0 | nghttp2_queue * | +| (nghttp2_queue *,void *) | | nghttp2_queue_push | 0 | nghttp2_queue * | +| (nghttp2_queue *,void *) | | nghttp2_queue_push | 1 | void * | +| (nghttp2_ratelim *,uint64_t) | | nghttp2_ratelim_drain | 0 | nghttp2_ratelim * | +| (nghttp2_ratelim *,uint64_t) | | nghttp2_ratelim_drain | 1 | uint64_t | +| (nghttp2_ratelim *,uint64_t) | | nghttp2_ratelim_update | 0 | nghttp2_ratelim * | +| (nghttp2_ratelim *,uint64_t) | | nghttp2_ratelim_update | 1 | uint64_t | +| (nghttp2_ratelim *,uint64_t,uint64_t) | | nghttp2_ratelim_init | 0 | nghttp2_ratelim * | +| (nghttp2_ratelim *,uint64_t,uint64_t) | | nghttp2_ratelim_init | 1 | uint64_t | +| (nghttp2_ratelim *,uint64_t,uint64_t) | | nghttp2_ratelim_init | 2 | uint64_t | +| (nghttp2_rcbuf *) | | nghttp2_rcbuf_get_buf | 0 | nghttp2_rcbuf * | +| (nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new2 | 0 | nghttp2_rcbuf ** | +| (nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new2 | 1 | const uint8_t * | +| (nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new2 | 2 | size_t | +| (nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new2 | 3 | nghttp2_mem * | +| (nghttp2_rcbuf **,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new | 0 | nghttp2_rcbuf ** | +| (nghttp2_rcbuf **,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new | 1 | size_t | +| (nghttp2_rcbuf **,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new | 2 | nghttp2_mem * | +| (nghttp2_rst_stream *,int32_t,uint32_t) | | nghttp2_frame_rst_stream_init | 0 | nghttp2_rst_stream * | +| (nghttp2_rst_stream *,int32_t,uint32_t) | | nghttp2_frame_rst_stream_init | 1 | int32_t | +| (nghttp2_rst_stream *,int32_t,uint32_t) | | nghttp2_frame_rst_stream_init | 2 | uint32_t | +| (nghttp2_session *) | | nghttp2_session_check_server_session | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_effective_local_window_size | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_effective_recv_data_length | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_last_proc_stream_id | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_local_window_size | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_next_ob_item | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_next_stream_id | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_outbound_queue_size | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_remote_window_size | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_pop_next_ob_item | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_recv | 0 | nghttp2_session * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_client_new | 0 | nghttp2_session ** | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_client_new | 1 | const nghttp2_session_callbacks * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_client_new | 2 | void * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_server_new | 0 | nghttp2_session ** | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_server_new | 1 | const nghttp2_session_callbacks * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_server_new | 2 | void * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_client_new2 | 0 | nghttp2_session ** | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_client_new2 | 1 | const nghttp2_session_callbacks * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_client_new2 | 2 | void * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_client_new2 | 3 | const nghttp2_option * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_server_new2 | 0 | nghttp2_session ** | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_server_new2 | 1 | const nghttp2_session_callbacks * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_server_new2 | 2 | void * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_server_new2 | 3 | const nghttp2_option * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 0 | nghttp2_session ** | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 1 | const nghttp2_session_callbacks * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 2 | void * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 3 | const nghttp2_option * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 4 | nghttp2_mem * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 0 | nghttp2_session ** | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 1 | const nghttp2_session_callbacks * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 2 | void * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 3 | const nghttp2_option * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 4 | nghttp2_mem * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 0 | nghttp2_session * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 1 | const nghttp2_priority_spec * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 2 | const nghttp2_nv * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 3 | size_t | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 4 | const nghttp2_data_provider2 * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 5 | void * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 0 | nghttp2_session * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 1 | const nghttp2_priority_spec * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 2 | const nghttp2_nv * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 3 | size_t | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 4 | const nghttp2_data_provider * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 5 | void * | +| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 0 | nghttp2_session * | +| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 1 | const uint8_t * | +| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | size_t | +| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 0 | nghttp2_session * | +| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 1 | const uint8_t * | +| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | size_t | +| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 0 | nghttp2_session * | +| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 1 | const uint8_t * | +| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 2 | size_t | +| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 3 | int | +| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 4 | void * | +| (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 0 | nghttp2_session * | +| (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 1 | const uint8_t * | +| (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 2 | size_t | +| (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 3 | void * | +| (nghttp2_session *,int32_t) | | nghttp2_session_find_stream | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_find_stream | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_effective_local_window_size | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_effective_local_window_size | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_effective_recv_data_length | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_effective_recv_data_length | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_local_close | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_local_close | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_local_window_size | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_local_window_size | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_raw | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_raw | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_remote_close | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_remote_close | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_remote_window_size | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_remote_window_size | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_user_data | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_user_data | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_set_next_stream_id | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_set_next_stream_id | 1 | int32_t | +| (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 1 | int32_t | +| (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 2 | const nghttp2_extpri * | +| (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 3 | int | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 1 | int32_t | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 2 | const nghttp2_nv * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 3 | size_t | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 1 | int32_t | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 2 | const nghttp2_nv * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 3 | size_t | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 4 | const nghttp2_data_provider2 * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 1 | int32_t | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 2 | const nghttp2_nv * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 3 | size_t | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 4 | const nghttp2_data_provider * | +| (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 1 | int32_t | +| (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | size_t | +| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 1 | int32_t | +| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 2 | uint8_t | +| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 3 | nghttp2_stream_state | +| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 4 | void * | +| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 1 | nghttp2_bufs * | +| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 2 | size_t | +| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 3 | nghttp2_frame * | +| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 4 | nghttp2_data_aux_data * | +| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 5 | nghttp2_stream * | +| (nghttp2_session *,nghttp2_extpri *,int32_t) | | nghttp2_session_get_extpri_stream_priority | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_extpri *,int32_t) | | nghttp2_session_get_extpri_stream_priority | 1 | nghttp2_extpri * | +| (nghttp2_session *,nghttp2_extpri *,int32_t) | | nghttp2_session_get_extpri_stream_priority | 2 | int32_t | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_goaway_received | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_goaway_received | 1 | nghttp2_frame * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_push_promise_received | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_push_promise_received | 1 | nghttp2_frame * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_request_headers_received | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_request_headers_received | 1 | nghttp2_frame * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_window_update_received | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_window_update_received | 1 | nghttp2_frame * | +| (nghttp2_session *,nghttp2_outbound_item *) | | nghttp2_session_add_item | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_outbound_item *) | | nghttp2_session_add_item | 1 | nghttp2_outbound_item * | +| (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 1 | nghttp2_settings_entry * | +| (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | size_t | +| (nghttp2_session *,nghttp2_settings_id) | | nghttp2_session_get_local_settings | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_settings_id) | | nghttp2_session_get_local_settings | 1 | nghttp2_settings_id | +| (nghttp2_session *,nghttp2_settings_id) | | nghttp2_session_get_remote_settings | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_settings_id) | | nghttp2_session_get_remote_settings | 1 | nghttp2_settings_id | +| (nghttp2_session *,nghttp2_stream *) | | nghttp2_session_destroy_stream | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_stream *) | | nghttp2_session_destroy_stream | 1 | nghttp2_stream * | +| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 1 | nghttp2_stream * | +| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 2 | nghttp2_frame * | +| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 3 | nghttp2_hd_nv * | +| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 4 | int | +| (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 1 | nghttp2_stream * | +| (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 2 | size_t | +| (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 3 | int | +| (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 0 | nghttp2_session * | +| (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | size_t | +| (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 0 | nghttp2_session * | +| (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | size_t | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 1 | uint8_t | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 2 | const nghttp2_settings_entry * | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 3 | size_t | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 1 | uint8_t | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 2 | const nghttp2_settings_entry * | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 3 | size_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *) | | nghttp2_submit_data2 | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *) | | nghttp2_submit_data2 | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *) | | nghttp2_submit_data2 | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *) | | nghttp2_submit_data2 | 3 | const nghttp2_data_provider2 * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *) | | nghttp2_submit_data | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *) | | nghttp2_submit_data | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *) | | nghttp2_submit_data | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *) | | nghttp2_submit_data | 3 | const nghttp2_data_provider * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *) | | nghttp2_submit_data_shared | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *) | | nghttp2_submit_data_shared | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *) | | nghttp2_submit_data_shared | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *) | | nghttp2_submit_data_shared | 3 | const nghttp2_data_provider_wrap * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 3 | const nghttp2_nv * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 4 | size_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 5 | void * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 3 | const nghttp2_priority_spec * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 4 | const nghttp2_nv * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 5 | size_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 6 | void * | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_session_set_local_window_size | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_session_set_local_window_size | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_session_set_local_window_size | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_session_set_local_window_size | 3 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_submit_window_update | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_submit_window_update | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_submit_window_update | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_submit_window_update | 3 | int32_t | +| (nghttp2_session *,void *) | | nghttp2_session_set_user_data | 0 | nghttp2_session * | +| (nghttp2_session *,void *) | | nghttp2_session_set_user_data | 1 | void * | +| (nghttp2_session_callbacks **) | | nghttp2_session_callbacks_new | 0 | nghttp2_session_callbacks ** | +| (nghttp2_session_callbacks *,nghttp2_before_frame_send_callback) | | nghttp2_session_callbacks_set_before_frame_send_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_before_frame_send_callback) | | nghttp2_session_callbacks_set_before_frame_send_callback | 1 | nghttp2_before_frame_send_callback | +| (nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback2) | | nghttp2_session_callbacks_set_data_source_read_length_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback2) | | nghttp2_session_callbacks_set_data_source_read_length_callback2 | 1 | nghttp2_data_source_read_length_callback2 | +| (nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback) | | nghttp2_session_callbacks_set_data_source_read_length_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback) | | nghttp2_session_callbacks_set_data_source_read_length_callback | 1 | nghttp2_data_source_read_length_callback | +| (nghttp2_session_callbacks *,nghttp2_error_callback2) | | nghttp2_session_callbacks_set_error_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_error_callback2) | | nghttp2_session_callbacks_set_error_callback2 | 1 | nghttp2_error_callback2 | +| (nghttp2_session_callbacks *,nghttp2_error_callback) | | nghttp2_session_callbacks_set_error_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_error_callback) | | nghttp2_session_callbacks_set_error_callback | 1 | nghttp2_error_callback | +| (nghttp2_session_callbacks *,nghttp2_on_begin_frame_callback) | | nghttp2_session_callbacks_set_on_begin_frame_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_begin_frame_callback) | | nghttp2_session_callbacks_set_on_begin_frame_callback | 1 | nghttp2_on_begin_frame_callback | +| (nghttp2_session_callbacks *,nghttp2_on_begin_headers_callback) | | nghttp2_session_callbacks_set_on_begin_headers_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_begin_headers_callback) | | nghttp2_session_callbacks_set_on_begin_headers_callback | 1 | nghttp2_on_begin_headers_callback | +| (nghttp2_session_callbacks *,nghttp2_on_data_chunk_recv_callback) | | nghttp2_session_callbacks_set_on_data_chunk_recv_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_data_chunk_recv_callback) | | nghttp2_session_callbacks_set_on_data_chunk_recv_callback | 1 | nghttp2_on_data_chunk_recv_callback | +| (nghttp2_session_callbacks *,nghttp2_on_extension_chunk_recv_callback) | | nghttp2_session_callbacks_set_on_extension_chunk_recv_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_extension_chunk_recv_callback) | | nghttp2_session_callbacks_set_on_extension_chunk_recv_callback | 1 | nghttp2_on_extension_chunk_recv_callback | +| (nghttp2_session_callbacks *,nghttp2_on_frame_not_send_callback) | | nghttp2_session_callbacks_set_on_frame_not_send_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_frame_not_send_callback) | | nghttp2_session_callbacks_set_on_frame_not_send_callback | 1 | nghttp2_on_frame_not_send_callback | +| (nghttp2_session_callbacks *,nghttp2_on_frame_recv_callback) | | nghttp2_session_callbacks_set_on_frame_recv_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_frame_recv_callback) | | nghttp2_session_callbacks_set_on_frame_recv_callback | 1 | nghttp2_on_frame_recv_callback | +| (nghttp2_session_callbacks *,nghttp2_on_frame_send_callback) | | nghttp2_session_callbacks_set_on_frame_send_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_frame_send_callback) | | nghttp2_session_callbacks_set_on_frame_send_callback | 1 | nghttp2_on_frame_send_callback | +| (nghttp2_session_callbacks *,nghttp2_on_header_callback2) | | nghttp2_session_callbacks_set_on_header_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_header_callback2) | | nghttp2_session_callbacks_set_on_header_callback2 | 1 | nghttp2_on_header_callback2 | +| (nghttp2_session_callbacks *,nghttp2_on_header_callback) | | nghttp2_session_callbacks_set_on_header_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_header_callback) | | nghttp2_session_callbacks_set_on_header_callback | 1 | nghttp2_on_header_callback | +| (nghttp2_session_callbacks *,nghttp2_on_invalid_frame_recv_callback) | | nghttp2_session_callbacks_set_on_invalid_frame_recv_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_invalid_frame_recv_callback) | | nghttp2_session_callbacks_set_on_invalid_frame_recv_callback | 1 | nghttp2_on_invalid_frame_recv_callback | +| (nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback2) | | nghttp2_session_callbacks_set_on_invalid_header_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback2) | | nghttp2_session_callbacks_set_on_invalid_header_callback2 | 1 | nghttp2_on_invalid_header_callback2 | +| (nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback) | | nghttp2_session_callbacks_set_on_invalid_header_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback) | | nghttp2_session_callbacks_set_on_invalid_header_callback | 1 | nghttp2_on_invalid_header_callback | +| (nghttp2_session_callbacks *,nghttp2_on_stream_close_callback) | | nghttp2_session_callbacks_set_on_stream_close_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_stream_close_callback) | | nghttp2_session_callbacks_set_on_stream_close_callback | 1 | nghttp2_on_stream_close_callback | +| (nghttp2_session_callbacks *,nghttp2_pack_extension_callback2) | | nghttp2_session_callbacks_set_pack_extension_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_pack_extension_callback2) | | nghttp2_session_callbacks_set_pack_extension_callback2 | 1 | nghttp2_pack_extension_callback2 | +| (nghttp2_session_callbacks *,nghttp2_pack_extension_callback) | | nghttp2_session_callbacks_set_pack_extension_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_pack_extension_callback) | | nghttp2_session_callbacks_set_pack_extension_callback | 1 | nghttp2_pack_extension_callback | +| (nghttp2_session_callbacks *,nghttp2_recv_callback2) | | nghttp2_session_callbacks_set_recv_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_recv_callback2) | | nghttp2_session_callbacks_set_recv_callback2 | 1 | nghttp2_recv_callback2 | +| (nghttp2_session_callbacks *,nghttp2_recv_callback) | | nghttp2_session_callbacks_set_recv_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_recv_callback) | | nghttp2_session_callbacks_set_recv_callback | 1 | nghttp2_recv_callback | +| (nghttp2_session_callbacks *,nghttp2_select_padding_callback2) | | nghttp2_session_callbacks_set_select_padding_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_select_padding_callback2) | | nghttp2_session_callbacks_set_select_padding_callback2 | 1 | nghttp2_select_padding_callback2 | +| (nghttp2_session_callbacks *,nghttp2_select_padding_callback) | | nghttp2_session_callbacks_set_select_padding_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_select_padding_callback) | | nghttp2_session_callbacks_set_select_padding_callback | 1 | nghttp2_select_padding_callback | +| (nghttp2_session_callbacks *,nghttp2_send_callback2) | | nghttp2_session_callbacks_set_send_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_send_callback2) | | nghttp2_session_callbacks_set_send_callback2 | 1 | nghttp2_send_callback2 | +| (nghttp2_session_callbacks *,nghttp2_send_callback) | | nghttp2_session_callbacks_set_send_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_send_callback) | | nghttp2_session_callbacks_set_send_callback | 1 | nghttp2_send_callback | +| (nghttp2_session_callbacks *,nghttp2_send_data_callback) | | nghttp2_session_callbacks_set_send_data_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_send_data_callback) | | nghttp2_session_callbacks_set_send_data_callback | 1 | nghttp2_send_data_callback | +| (nghttp2_session_callbacks *,nghttp2_unpack_extension_callback) | | nghttp2_session_callbacks_set_unpack_extension_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_unpack_extension_callback) | | nghttp2_session_callbacks_set_unpack_extension_callback | 1 | nghttp2_unpack_extension_callback | +| (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 0 | nghttp2_settings * | +| (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 1 | nghttp2_settings_entry * | +| (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | size_t | +| (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 0 | nghttp2_settings * | +| (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 1 | uint8_t | +| (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 2 | nghttp2_settings_entry * | +| (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 3 | size_t | +| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 0 | nghttp2_settings_entry ** | +| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 1 | size_t * | +| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 2 | const uint8_t * | +| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 3 | size_t | +| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 4 | nghttp2_mem * | +| (nghttp2_stream *) | | nghttp2_stream_get_stream_id | 0 | nghttp2_stream * | +| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_local_initial_window_size | 0 | nghttp2_stream * | +| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_local_initial_window_size | 1 | int32_t | +| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_local_initial_window_size | 2 | int32_t | +| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_remote_initial_window_size | 0 | nghttp2_stream * | +| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_remote_initial_window_size | 1 | int32_t | +| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_remote_initial_window_size | 2 | int32_t | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 0 | nghttp2_stream * | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 1 | int32_t | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 2 | uint8_t | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 3 | nghttp2_stream_state | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 4 | int32_t | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 5 | int32_t | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 6 | void * | +| (nghttp2_stream *,nghttp2_outbound_item *) | | nghttp2_stream_attach_item | 0 | nghttp2_stream * | +| (nghttp2_stream *,nghttp2_outbound_item *) | | nghttp2_stream_attach_item | 1 | nghttp2_outbound_item * | +| (nghttp2_stream *,nghttp2_shut_flag) | | nghttp2_stream_shutdown | 0 | nghttp2_stream * | +| (nghttp2_stream *,nghttp2_shut_flag) | | nghttp2_stream_shutdown | 1 | nghttp2_shut_flag | +| (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 0 | nghttp2_stream * | +| (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | size_t | +| (nghttp2_stream *,uint8_t) | | nghttp2_stream_defer_item | 0 | nghttp2_stream * | +| (nghttp2_stream *,uint8_t) | | nghttp2_stream_defer_item | 1 | uint8_t | +| (nghttp2_stream *,uint8_t) | | nghttp2_stream_resume_deferred_item | 0 | nghttp2_stream * | +| (nghttp2_stream *,uint8_t) | | nghttp2_stream_resume_deferred_item | 1 | uint8_t | +| (nghttp2_window_update *,uint8_t,int32_t,int32_t) | | nghttp2_frame_window_update_init | 0 | nghttp2_window_update * | +| (nghttp2_window_update *,uint8_t,int32_t,int32_t) | | nghttp2_frame_window_update_init | 1 | uint8_t | +| (nghttp2_window_update *,uint8_t,int32_t,int32_t) | | nghttp2_frame_window_update_init | 2 | int32_t | +| (nghttp2_window_update *,uint8_t,int32_t,int32_t) | | nghttp2_frame_window_update_init | 3 | int32_t | +| (pgrs_dir *,curl_off_t,curltime) | | Curl_pgrsLimitWaitTime | 0 | pgrs_dir * | +| (pgrs_dir *,curl_off_t,curltime) | | Curl_pgrsLimitWaitTime | 1 | curl_off_t | +| (pgrs_dir *,curl_off_t,curltime) | | Curl_pgrsLimitWaitTime | 2 | curltime | | (piterator *) | | pqueue_next | 0 | piterator * | | (plink *) | | Plink_delete | 0 | plink * | | (plink **,config *) | | Plink_add | 0 | plink ** | | (plink **,config *) | | Plink_add | 1 | config * | | (plink **,plink *) | | Plink_copy | 0 | plink ** | | (plink **,plink *) | | Plink_copy | 1 | plink * | +| (pollfd[],unsigned int,timediff_t) | | Curl_poll | 0 | pollfd[] | +| (pollfd[],unsigned int,timediff_t) | | Curl_poll | 1 | unsigned int | +| (pollfd[],unsigned int,timediff_t) | | Curl_poll | 2 | timediff_t | | (pqueue *) | | pqueue_iterator | 0 | pqueue * | | (pqueue *) | | pqueue_peek | 0 | pqueue * | | (pqueue *) | | pqueue_pop | 0 | pqueue * | @@ -26462,6 +31716,8 @@ getSignatureParameterName | (pqueue *,pitem *) | | pqueue_insert | 1 | pitem * | | (pqueue *,unsigned char *) | | pqueue_find | 0 | pqueue * | | (pqueue *,unsigned char *) | | pqueue_find | 1 | unsigned char * | +| (pthread_t *) | | Curl_thread_destroy | 0 | pthread_t * | +| (pthread_t **) | | Curl_thread_join | 0 | pthread_t ** | | (regex_t *,const char *,int) | | jim_regcomp | 0 | regex_t * | | (regex_t *,const char *,int) | | jim_regcomp | 1 | const char * | | (regex_t *,const char *,int) | | jim_regcomp | 2 | int | @@ -26474,6 +31730,31 @@ getSignatureParameterName | (rule *,int) | | Configlist_add | 1 | int | | (rule *,int) | | Configlist_addbasis | 0 | rule * | | (rule *,int) | | Configlist_addbasis | 1 | int | +| (scan_ctx *,const char *,const char *,const char *) | | inithelpscan | 0 | scan_ctx * | +| (scan_ctx *,const char *,const char *,const char *) | | inithelpscan | 1 | const char * | +| (scan_ctx *,const char *,const char *,const char *) | | inithelpscan | 2 | const char * | +| (scan_ctx *,const char *,const char *,const char *) | | inithelpscan | 3 | const char * | +| (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 0 | sfparse_parser * | +| (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 1 | const uint8_t * | +| (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | size_t | +| (sfparse_parser *,sfparse_value *) | | sfparse_parser_inner_list | 0 | sfparse_parser * | +| (sfparse_parser *,sfparse_value *) | | sfparse_parser_inner_list | 1 | sfparse_value * | +| (sfparse_parser *,sfparse_value *) | | sfparse_parser_item | 0 | sfparse_parser * | +| (sfparse_parser *,sfparse_value *) | | sfparse_parser_item | 1 | sfparse_value * | +| (sfparse_parser *,sfparse_value *) | | sfparse_parser_list | 0 | sfparse_parser * | +| (sfparse_parser *,sfparse_value *) | | sfparse_parser_list | 1 | sfparse_value * | +| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_dict | 0 | sfparse_parser * | +| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_dict | 1 | sfparse_vec * | +| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_dict | 2 | sfparse_value * | +| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_param | 0 | sfparse_parser * | +| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_param | 1 | sfparse_vec * | +| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_param | 2 | sfparse_value * | +| (sfparse_vec *,const sfparse_vec *) | | sfparse_base64decode | 0 | sfparse_vec * | +| (sfparse_vec *,const sfparse_vec *) | | sfparse_base64decode | 1 | const sfparse_vec * | +| (sfparse_vec *,const sfparse_vec *) | | sfparse_pctdecode | 0 | sfparse_vec * | +| (sfparse_vec *,const sfparse_vec *) | | sfparse_pctdecode | 1 | const sfparse_vec * | +| (sfparse_vec *,const sfparse_vec *) | | sfparse_unescape | 0 | sfparse_vec * | +| (sfparse_vec *,const sfparse_vec *) | | sfparse_unescape | 1 | const sfparse_vec * | | (size_t *,const char *) | | next_protos_parse | 0 | size_t * | | (size_t *,const char *) | | next_protos_parse | 1 | const char * | | (size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,OSSL_LIB_CTX *) | | ssl3_cbc_remove_padding_and_mac | 0 | size_t * | @@ -26493,7 +31774,12 @@ getSignatureParameterName | (size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,int,OSSL_LIB_CTX *) | | tls1_cbc_remove_padding_and_mac | 6 | size_t | | (size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,int,OSSL_LIB_CTX *) | | tls1_cbc_remove_padding_and_mac | 7 | int | | (size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,int,OSSL_LIB_CTX *) | | tls1_cbc_remove_padding_and_mac | 8 | OSSL_LIB_CTX * | +| (size_t) | | BrotliEncoderMaxCompressedSize | 0 | size_t | | (size_t) | | EVP_PKEY_meth_get0 | 0 | size_t | +| (size_t) | | curlx_uztosi | 0 | size_t | +| (size_t) | | curlx_uztosz | 0 | size_t | +| (size_t) | | curlx_uztoui | 0 | size_t | +| (size_t) | | curlx_uztoul | 0 | size_t | | (size_t) | | ossl_get_extension_type | 0 | size_t | | (size_t) | | ossl_param_bytes_to_blocks | 0 | size_t | | (size_t) | | ossl_quic_sstream_new | 0 | size_t | @@ -26508,11 +31794,51 @@ getSignatureParameterName | (size_t,const char **,size_t *) | | conf_ssl_get | 0 | size_t | | (size_t,const char **,size_t *) | | conf_ssl_get | 1 | const char ** | | (size_t,const char **,size_t *) | | conf_ssl_get | 2 | size_t * | +| (size_t,const char[],size_t *,uint32_t[]) | | _idn2_punycode_decode | 0 | size_t | +| (size_t,const char[],size_t *,uint32_t[]) | | _idn2_punycode_decode | 1 | const char[] | +| (size_t,const char[],size_t *,uint32_t[]) | | _idn2_punycode_decode | 2 | size_t * | +| (size_t,const char[],size_t *,uint32_t[]) | | _idn2_punycode_decode | 3 | uint32_t[] | +| (size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliDecoderDecompress | 0 | size_t | +| (size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliDecoderDecompress | 1 | const uint8_t[] | +| (size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliDecoderDecompress | 2 | size_t * | +| (size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliDecoderDecompress | 3 | uint8_t[] | +| (size_t,const uint32_t[],size_t *,char[]) | | _idn2_punycode_encode | 0 | size_t | +| (size_t,const uint32_t[],size_t *,char[]) | | _idn2_punycode_encode | 1 | const uint32_t[] | +| (size_t,const uint32_t[],size_t *,char[]) | | _idn2_punycode_encode | 2 | size_t * | +| (size_t,const uint32_t[],size_t *,char[]) | | _idn2_punycode_encode | 3 | char[] | +| (size_t,size_t,Curl_ssl_scache **) | | Curl_ssl_scache_create | 0 | size_t | +| (size_t,size_t,Curl_ssl_scache **) | | Curl_ssl_scache_create | 1 | size_t | +| (size_t,size_t,Curl_ssl_scache **) | | Curl_ssl_scache_create | 2 | Curl_ssl_scache ** | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 0 | size_t | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 1 | size_t | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 2 | const uint8_t * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 3 | size_t | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 4 | ContextLut | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 5 | const BrotliEncoderParams * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 6 | Hasher * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 7 | int * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 8 | size_t * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 9 | Command * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 10 | size_t * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 11 | size_t * | +| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 0 | size_t | +| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 1 | size_t | +| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 2 | size_t | +| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 3 | const uint8_t * | +| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 4 | size_t * | +| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 5 | float * | +| (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 0 | size_t | +| (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 1 | size_t | +| (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 2 | size_t | +| (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 3 | size_t | | (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 0 | size_t | | (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 1 | size_t | | (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 2 | void ** | | (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 3 | const char * | | (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 4 | int | +| (size_t,uint32_t *,uint8_t *) | | BrotliOptimizeHuffmanCountsForRle | 0 | size_t | +| (size_t,uint32_t *,uint8_t *) | | BrotliOptimizeHuffmanCountsForRle | 1 | uint32_t * | +| (size_t,uint32_t *,uint8_t *) | | BrotliOptimizeHuffmanCountsForRle | 2 | uint8_t * | | (size_type,const T &) | deque | assign | 0 | size_type | | (size_type,const T &) | deque | assign | 1 | const class:0 & | | (size_type,const T &) | forward_list | assign | 0 | size_type | @@ -26533,6 +31859,10 @@ getSignatureParameterName | (size_type,const T &,const Allocator &) | vector | vector | 0 | size_type | | (size_type,const T &,const Allocator &) | vector | vector | 1 | const class:0 & | | (size_type,const T &,const Allocator &) | vector | vector | 2 | const class:1 & | +| (slist_wc **,const char *) | | easysrc_add | 0 | slist_wc ** | +| (slist_wc **,const char *) | | easysrc_add | 1 | const char * | +| (slist_wc *,const char *) | | slist_wc_append | 0 | slist_wc * | +| (slist_wc *,const char *) | | slist_wc_append | 1 | const char * | | (sqlite3 *) | | close_db | 0 | sqlite3 * | | (sqlite3 *) | | sqlite3CompletionVtabInit | 0 | sqlite3 * | | (sqlite3 *) | | sqlite3_changes | 0 | sqlite3 * | @@ -27047,6 +32377,11 @@ getSignatureParameterName | (sqlite3expert *,int,int) | | sqlite3_expert_report | 0 | sqlite3expert * | | (sqlite3expert *,int,int) | | sqlite3_expert_report | 1 | int | | (sqlite3expert *,int,int) | | sqlite3_expert_report | 2 | int | +| (ssize_t) | | curlx_sztosi | 0 | ssize_t | +| (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 0 | ssl_peer * | +| (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 1 | Curl_cfilter * | +| (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 2 | const char * | +| (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 3 | int | | (stack_st_ASN1_UTF8STRING *) | | OSSL_CMP_ITAV_new0_certProfile | 0 | stack_st_ASN1_UTF8STRING * | | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 0 | stack_st_ASN1_UTF8STRING * | | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 1 | const char * | @@ -27207,8 +32542,31 @@ getSignatureParameterName | (stack_st_X509_POLICY_NODE *,const ASN1_OBJECT *) | | ossl_policy_tree_find_sk | 1 | const ASN1_OBJECT * | | (state *,config *) | | State_insert | 0 | state * | | (state *,config *) | | State_insert | 1 | config * | +| (store_netrc *) | | Curl_netrc_cleanup | 0 | store_netrc * | +| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 0 | store_netrc * | +| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 1 | const char * | +| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 2 | char ** | +| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 3 | char ** | +| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 4 | char * | +| (string_buf *,libssh2_uint64_t *) | | _libssh2_get_u64 | 0 | string_buf * | +| (string_buf *,libssh2_uint64_t *) | | _libssh2_get_u64 | 1 | libssh2_uint64_t * | +| (string_buf *,uint32_t *) | | _libssh2_get_u32 | 0 | string_buf * | +| (string_buf *,uint32_t *) | | _libssh2_get_u32 | 1 | uint32_t * | +| (string_buf *,unsigned char *) | | _libssh2_get_byte | 0 | string_buf * | +| (string_buf *,unsigned char *) | | _libssh2_get_byte | 1 | unsigned char * | +| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_bignum_bytes | 0 | string_buf * | +| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_bignum_bytes | 1 | unsigned char ** | +| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_bignum_bytes | 2 | size_t * | +| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_string | 0 | string_buf * | +| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_string | 1 | unsigned char ** | +| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_string | 2 | size_t * | | (symbol *,lemon *) | | has_destructor | 0 | symbol * | | (symbol *,lemon *) | | has_destructor | 1 | lemon * | +| (timeval *) | | curlx_tvtoms | 0 | timeval * | +| (timeval *,timediff_t) | | curlx_mstotv | 0 | timeval * | +| (timeval *,timediff_t) | | curlx_mstotv | 1 | timediff_t | +| (timeval,timeval) | | tvdiff | 0 | timeval | +| (timeval,timeval) | | tvdiff | 1 | timeval | | (tm *,const ASN1_TIME *) | | ossl_asn1_time_to_tm | 0 | tm * | | (tm *,const ASN1_TIME *) | | ossl_asn1_time_to_tm | 1 | const ASN1_TIME * | | (tm *,const ASN1_UTCTIME *) | | ossl_asn1_utctime_to_tm | 0 | tm * | @@ -27220,6 +32578,75 @@ getSignatureParameterName | (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 1 | const u128[16] | | (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 2 | const u8 * | | (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 3 | size_t | +| (uLong) | | compressBound | 0 | uLong | +| (uLong,const Bytef *,uInt) | | adler32 | 0 | uLong | +| (uLong,const Bytef *,uInt) | | adler32 | 1 | const Bytef * | +| (uLong,const Bytef *,uInt) | | adler32 | 2 | uInt | +| (uLong,const Bytef *,z_size_t) | | adler32_z | 0 | uLong | +| (uLong,const Bytef *,z_size_t) | | adler32_z | 1 | const Bytef * | +| (uLong,const Bytef *,z_size_t) | | adler32_z | 2 | z_size_t | +| (uLong,uLong,off64_t) | | adler32_combine64 | 0 | uLong | +| (uLong,uLong,off64_t) | | adler32_combine64 | 1 | uLong | +| (uLong,uLong,off64_t) | | adler32_combine64 | 2 | off64_t | +| (uLong,uLong,off64_t) | | crc32_combine64 | 0 | uLong | +| (uLong,uLong,off64_t) | | crc32_combine64 | 1 | uLong | +| (uLong,uLong,off64_t) | | crc32_combine64 | 2 | off64_t | +| (uLong,uLong,off_t) | | adler32_combine | 0 | uLong | +| (uLong,uLong,off_t) | | adler32_combine | 1 | uLong | +| (uLong,uLong,off_t) | | adler32_combine | 2 | off_t | +| (uLong,uLong,off_t) | | crc32_combine | 0 | uLong | +| (uLong,uLong,off_t) | | crc32_combine | 1 | uLong | +| (uLong,uLong,off_t) | | crc32_combine | 2 | off_t | +| (uLong,uLong,uLong) | | crc32_combine_op | 0 | uLong | +| (uLong,uLong,uLong) | | crc32_combine_op | 1 | uLong | +| (uLong,uLong,uLong) | | crc32_combine_op | 2 | uLong | +| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 0 | uLong | +| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 1 | unsigned long | +| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 2 | const Bytef * | +| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 3 | const unsigned char * | +| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 4 | uInt | +| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 0 | uLong | +| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 1 | unsigned long | +| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 2 | const Bytef * | +| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 3 | const unsigned char * | +| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 4 | z_size_t | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 0 | u_char[16] | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 1 | unsigned char[16] | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 2 | const u_char * | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 3 | const unsigned char * | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 4 | size_t | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 5 | const u_char[32] | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 6 | const unsigned char[32] | +| (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 0 | ucs4_t * | +| (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 1 | const uint8_t * | +| (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | size_t | +| (ucs4_t) | | uc_bidi_category | 0 | ucs4_t | +| (ucs4_t) | | uc_bidi_class | 0 | ucs4_t | +| (ucs4_t) | | uc_combining_class | 0 | ucs4_t | +| (ucs4_t) | | uc_general_category | 0 | ucs4_t | +| (ucs4_t) | | uc_joining_type | 0 | ucs4_t | +| (ucs4_t) | | uc_script | 0 | ucs4_t | +| (ucs4_t,ucs4_t *) | | uc_canonical_decomposition | 0 | ucs4_t | +| (ucs4_t,ucs4_t *) | | uc_canonical_decomposition | 1 | ucs4_t * | +| (ucs4_t,ucs4_t) | | uc_composition | 0 | ucs4_t | +| (ucs4_t,ucs4_t) | | uc_composition | 1 | ucs4_t | +| (ucs4_t,uint32_t) | | uc_is_general_category_withtable | 0 | ucs4_t | +| (ucs4_t,uint32_t) | | uc_is_general_category_withtable | 1 | uint32_t | +| (ucs4_with_ccc *,size_t,ucs4_with_ccc *) | | gl_uninorm_decompose_merge_sort_inplace | 0 | ucs4_with_ccc * | +| (ucs4_with_ccc *,size_t,ucs4_with_ccc *) | | gl_uninorm_decompose_merge_sort_inplace | 1 | size_t | +| (ucs4_with_ccc *,size_t,ucs4_with_ccc *) | | gl_uninorm_decompose_merge_sort_inplace | 2 | ucs4_with_ccc * | +| (uint8_t *,const nghttp2_frame_hd *) | | nghttp2_frame_pack_frame_hd | 0 | uint8_t * | +| (uint8_t *,const nghttp2_frame_hd *) | | nghttp2_frame_pack_frame_hd | 1 | const nghttp2_frame_hd * | +| (uint8_t *,const nghttp2_priority_spec *) | | nghttp2_frame_pack_priority_spec | 0 | uint8_t * | +| (uint8_t *,const nghttp2_priority_spec *) | | nghttp2_frame_pack_priority_spec | 1 | const nghttp2_priority_spec * | +| (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 0 | uint8_t * | +| (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 1 | const nghttp2_settings_entry * | +| (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | size_t | +| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 0 | uint8_t * | +| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 1 | const uint8_t * | +| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 2 | int | +| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 3 | const BrotliTransforms * | +| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 4 | int | | (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 0 | uint8_t * | | (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 1 | const uint8_t * | | (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 2 | size_t | @@ -27232,6 +32659,11 @@ getSignatureParameterName | (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 9 | size_t | | (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 10 | OSSL_LIB_CTX * | | (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 11 | const char * | +| (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 0 | uint8_t * | +| (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 1 | const void * | +| (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | size_t | +| (uint8_t *,size_t) | | nghttp2_downcase | 0 | uint8_t * | +| (uint8_t *,size_t) | | nghttp2_downcase | 1 | size_t | | (uint8_t *,size_t) | | ossl_fnv1a_hash | 0 | uint8_t * | | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | size_t | | (uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_genkey | 0 | uint8_t * | @@ -27246,6 +32678,14 @@ getSignatureParameterName | (uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_encode_seed | 0 | uint8_t * | | (uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_encode_seed | 1 | size_t | | (uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_encode_seed | 2 | const ML_KEM_KEY * | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 0 | uint8_t * | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 1 | size_t | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 2 | const nghttp2_settings_entry * | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 3 | size_t | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 0 | uint8_t * | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 1 | size_t | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 2 | const nghttp2_settings_entry * | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 3 | size_t | | (uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_decap | 0 | uint8_t * | | (uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_decap | 1 | size_t | | (uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_decap | 2 | const uint8_t * | @@ -27308,6 +32748,16 @@ getSignatureParameterName | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 0 | uint32_t * | | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 1 | SSL_CONNECTION * | | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 2 | int | +| (uint32_t *,const IDNAMap *) | | get_map_data | 0 | uint32_t * | +| (uint32_t *,const IDNAMap *) | | get_map_data | 1 | const IDNAMap * | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 0 | uint32_t * | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 1 | size_t * | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 2 | int * | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 3 | uint32_t | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 4 | size_t | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 5 | uint8_t * | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 6 | uint8_t * | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 7 | size_t | | (uint32_t,uint32_t *,uint32_t *) | | ossl_ml_dsa_key_compress_power2_round | 0 | uint32_t | | (uint32_t,uint32_t *,uint32_t *) | | ossl_ml_dsa_key_compress_power2_round | 1 | uint32_t * | | (uint32_t,uint32_t *,uint32_t *) | | ossl_ml_dsa_key_compress_power2_round | 2 | uint32_t * | @@ -27348,17 +32798,31 @@ getSignatureParameterName | (uint64_t *,uint64_t,uint64_t *,CRYPTO_RWLOCK *) | | CRYPTO_atomic_or | 3 | CRYPTO_RWLOCK * | | (uint64_t,uint64_t *) | | ossl_adjust_domain_flags | 0 | uint64_t | | (uint64_t,uint64_t *) | | ossl_adjust_domain_flags | 1 | uint64_t * | +| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 0 | uninorm_t | +| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 1 | const uint32_t * | +| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 2 | size_t | +| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 3 | uint32_t * | +| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 4 | uint32_t *__restrict__ | +| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 5 | size_t * | | (unsigned char *) | CStringT | CStringT | 0 | unsigned char * | | (unsigned char **) | | ASN1_put_eoc | 0 | unsigned char ** | | (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 0 | unsigned char ** | | (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 1 | X509_ALGOR * | | (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 2 | ASN1_OCTET_STRING * | | (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 3 | int | +| (unsigned char **,const char *,size_t) | | _libssh2_store_str | 0 | unsigned char ** | +| (unsigned char **,const char *,size_t) | | _libssh2_store_str | 1 | const char * | +| (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | size_t | +| (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 0 | unsigned char ** | +| (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 1 | const unsigned char * | +| (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | size_t | | (unsigned char **,int,int,int,int) | | ASN1_put_object | 0 | unsigned char ** | | (unsigned char **,int,int,int,int) | | ASN1_put_object | 1 | int | | (unsigned char **,int,int,int,int) | | ASN1_put_object | 2 | int | | (unsigned char **,int,int,int,int) | | ASN1_put_object | 3 | int | | (unsigned char **,int,int,int,int) | | ASN1_put_object | 4 | int | +| (unsigned char **,libssh2_uint64_t) | | _libssh2_store_u64 | 0 | unsigned char ** | +| (unsigned char **,libssh2_uint64_t) | | _libssh2_store_u64 | 1 | libssh2_uint64_t | | (unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *) | | PEM_bytes_read_bio | 0 | unsigned char ** | | (unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *) | | PEM_bytes_read_bio | 1 | long * | | (unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *) | | PEM_bytes_read_bio | 2 | char ** | @@ -27375,10 +32839,22 @@ getSignatureParameterName | (unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *) | | PEM_bytes_read_bio_secmem | 6 | void * | | (unsigned char **,long) | | ASN1_check_infinite_end | 0 | unsigned char ** | | (unsigned char **,long) | | ASN1_check_infinite_end | 1 | long | +| (unsigned char **,size_t *) | | _libssh2_pem_decode_sequence | 0 | unsigned char ** | +| (unsigned char **,size_t *) | | _libssh2_pem_decode_sequence | 1 | size_t * | | (unsigned char **,size_t *,const EC_POINT *,const EC_KEY *) | | ossl_ecdh_simple_compute_key | 0 | unsigned char ** | | (unsigned char **,size_t *,const EC_POINT *,const EC_KEY *) | | ossl_ecdh_simple_compute_key | 1 | size_t * | | (unsigned char **,size_t *,const EC_POINT *,const EC_KEY *) | | ossl_ecdh_simple_compute_key | 2 | const EC_POINT * | | (unsigned char **,size_t *,const EC_POINT *,const EC_KEY *) | | ossl_ecdh_simple_compute_key | 3 | const EC_KEY * | +| (unsigned char **,size_t *,unsigned char **,unsigned int *) | | _libssh2_pem_decode_integer | 0 | unsigned char ** | +| (unsigned char **,size_t *,unsigned char **,unsigned int *) | | _libssh2_pem_decode_integer | 1 | size_t * | +| (unsigned char **,size_t *,unsigned char **,unsigned int *) | | _libssh2_pem_decode_integer | 2 | unsigned char ** | +| (unsigned char **,size_t *,unsigned char **,unsigned int *) | | _libssh2_pem_decode_integer | 3 | unsigned int * | +| (unsigned char **,uint32_t) | | _libssh2_store_u32 | 0 | unsigned char ** | +| (unsigned char **,uint32_t) | | _libssh2_store_u32 | 1 | uint32_t | +| (unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_next_protocol | 0 | unsigned char ** | +| (unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_next_protocol | 1 | unsigned char * | +| (unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_next_protocol | 2 | const unsigned char * | +| (unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_next_protocol | 3 | unsigned int | | (unsigned char **,unsigned char *,const unsigned char *,unsigned int,const unsigned char *,unsigned int) | | SSL_select_next_proto | 0 | unsigned char ** | | (unsigned char **,unsigned char *,const unsigned char *,unsigned int,const unsigned char *,unsigned int) | | SSL_select_next_proto | 1 | unsigned char * | | (unsigned char **,unsigned char *,const unsigned char *,unsigned int,const unsigned char *,unsigned int) | | SSL_select_next_proto | 2 | const unsigned char * | @@ -27424,6 +32900,10 @@ getSignatureParameterName | (unsigned char *,const BIGNUM *,DH *) | | ossl_dh_compute_key | 2 | DH * | | (unsigned char *,const char *) | | ossl_a2i_ipadd | 0 | unsigned char * | | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | const char * | +| (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 0 | unsigned char * | +| (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 1 | const unsigned char * | +| (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 2 | const unsigned char * | +| (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 3 | size_t | | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 0 | unsigned char * | | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 1 | const unsigned char * | | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 2 | int | @@ -27562,9 +33042,43 @@ getSignatureParameterName | (unsigned char *,size_t *,size_t,const unsigned char **,size_t *) | | ossl_cipher_trailingdata | 2 | size_t | | (unsigned char *,size_t *,size_t,const unsigned char **,size_t *) | | ossl_cipher_trailingdata | 3 | const unsigned char ** | | (unsigned char *,size_t *,size_t,const unsigned char **,size_t *) | | ossl_cipher_trailingdata | 4 | size_t * | +| (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 0 | unsigned char * | +| (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 1 | size_t | +| (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 2 | const unsigned char * | +| (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 3 | size_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 0 | unsigned char * | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 1 | size_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 2 | int | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 3 | const char * | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 4 | curl_off_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 5 | size_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 6 | Curl_ssl_session ** | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 0 | unsigned char * | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 1 | size_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 2 | int | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 3 | const char * | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 4 | curl_off_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 5 | size_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 6 | unsigned char * | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 7 | size_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 8 | Curl_ssl_session ** | +| (unsigned char *,size_t,scan_ctx *) | | helpscan | 0 | unsigned char * | +| (unsigned char *,size_t,scan_ctx *) | | helpscan | 1 | size_t | +| (unsigned char *,size_t,scan_ctx *) | | helpscan | 2 | scan_ctx * | +| (unsigned char *,uint32_t) | | _libssh2_htonu32 | 0 | unsigned char * | +| (unsigned char *,uint32_t) | | _libssh2_htonu32 | 1 | uint32_t | | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 0 | unsigned char * | | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 1 | uint64_t | | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 2 | int | +| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 0 | unsigned char * | +| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 1 | unsigned char * | +| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 2 | ntlmdata * | +| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 3 | unsigned char ** | +| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 4 | unsigned int * | +| (unsigned char *,unsigned char *,unsigned char *,unsigned char *) | | Curl_ntlm_core_mk_lmv2_resp | 0 | unsigned char * | +| (unsigned char *,unsigned char *,unsigned char *,unsigned char *) | | Curl_ntlm_core_mk_lmv2_resp | 1 | unsigned char * | +| (unsigned char *,unsigned char *,unsigned char *,unsigned char *) | | Curl_ntlm_core_mk_lmv2_resp | 2 | unsigned char * | +| (unsigned char *,unsigned char *,unsigned char *,unsigned char *) | | Curl_ntlm_core_mk_lmv2_resp | 3 | unsigned char * | | (unsigned char *,void *) | | pitem_new | 0 | unsigned char * | | (unsigned char *,void *) | | pitem_new | 1 | void * | | (unsigned char) | | operator+= | 0 | unsigned char | @@ -27586,7 +33100,14 @@ getSignatureParameterName | (unsigned int *,const CAST_KEY *) | | CAST_encrypt | 0 | unsigned int * | | (unsigned int *,const CAST_KEY *) | | CAST_encrypt | 1 | const CAST_KEY * | | (unsigned int) | | Jim_IntHashFunction | 0 | unsigned int | +| (unsigned int) | | curlx_uitous | 0 | unsigned int | | (unsigned int) | | ssl3_get_cipher | 0 | unsigned int | +| (unsigned int,char *,size_t *) | | uv_if_indextoiid | 0 | unsigned int | +| (unsigned int,char *,size_t *) | | uv_if_indextoiid | 1 | char * | +| (unsigned int,char *,size_t *) | | uv_if_indextoiid | 2 | size_t * | +| (unsigned int,char *,size_t *) | | uv_if_indextoname | 0 | unsigned int | +| (unsigned int,char *,size_t *) | | uv_if_indextoname | 1 | char * | +| (unsigned int,char *,size_t *) | | uv_if_indextoname | 2 | size_t * | | (unsigned int,int,int) | | ossl_blob_length | 0 | unsigned int | | (unsigned int,int,int) | | ossl_blob_length | 1 | int | | (unsigned int,int,int) | | ossl_blob_length | 2 | int | @@ -27672,6 +33193,8 @@ getSignatureParameterName | (unsigned long *,unsigned long *,unsigned long *,int,unsigned long *) | | bn_mul_low_recursive | 4 | unsigned long * | | (unsigned long) | | BN_num_bits_word | 0 | unsigned long | | (unsigned long) | | BUF_MEM_new_ex | 0 | unsigned long | +| (unsigned long) | | curlx_ultouc | 0 | unsigned long | +| (unsigned long) | | curlx_ultous | 0 | unsigned long | | (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 0 | unsigned long | | (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 1 | BIGNUM * | | (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 2 | BIGNUM * | @@ -27692,9 +33215,524 @@ getSignatureParameterName | (unsigned long[16],const unsigned long[16],const unsigned long[16],const unsigned long[16],const unsigned long[16],unsigned long) | | RSAZ_1024_mod_exp_avx2 | 5 | unsigned long | | (unsigned short,int) | | dtls1_get_queue_priority | 0 | unsigned short | | (unsigned short,int) | | dtls1_get_queue_priority | 1 | int | +| (uv__io_t *,uv__io_cb,int) | | uv__io_init | 0 | uv__io_t * | +| (uv__io_t *,uv__io_cb,int) | | uv__io_init | 1 | uv__io_cb | +| (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | int | +| (uv_async_t *) | | uv__work_done | 0 | uv_async_t * | +| (uv_check_t *,uv_check_cb) | | uv_check_start | 0 | uv_check_t * | +| (uv_check_t *,uv_check_cb) | | uv_check_start | 1 | uv_check_cb | +| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 0 | uv_connect_t * | +| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 1 | uv_pipe_t * | +| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 2 | const char * | +| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 3 | size_t | +| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 4 | unsigned int | +| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 5 | uv_connect_cb | +| (uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb) | | uv_pipe_connect | 0 | uv_connect_t * | +| (uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb) | | uv_pipe_connect | 1 | uv_pipe_t * | +| (uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb) | | uv_pipe_connect | 2 | const char * | +| (uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb) | | uv_pipe_connect | 3 | uv_connect_cb | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 0 | uv_connect_t * | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 1 | uv_tcp_t * | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 2 | const sockaddr * | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 3 | unsigned int | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 4 | uv_connect_cb | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb) | | uv_tcp_connect | 0 | uv_connect_t * | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb) | | uv_tcp_connect | 1 | uv_tcp_t * | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb) | | uv_tcp_connect | 2 | const sockaddr * | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb) | | uv_tcp_connect | 3 | uv_connect_cb | +| (uv_cpu_info_t **,int *) | | uv_cpu_info | 0 | uv_cpu_info_t ** | +| (uv_cpu_info_t **,int *) | | uv_cpu_info | 1 | int * | +| (uv_env_item_t **,int *) | | uv_os_environ | 0 | uv_env_item_t ** | +| (uv_env_item_t **,int *) | | uv_os_environ | 1 | int * | +| (uv_env_item_t *,int) | | uv_os_free_environ | 0 | uv_env_item_t * | +| (uv_env_item_t *,int) | | uv_os_free_environ | 1 | int | +| (uv_fs_event_t *,char *,size_t *) | | uv_fs_event_getpath | 0 | uv_fs_event_t * | +| (uv_fs_event_t *,char *,size_t *) | | uv_fs_event_getpath | 1 | char * | +| (uv_fs_event_t *,char *,size_t *) | | uv_fs_event_getpath | 2 | size_t * | +| (uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int) | | uv_fs_event_start | 0 | uv_fs_event_t * | +| (uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int) | | uv_fs_event_start | 1 | uv_fs_event_cb | +| (uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int) | | uv_fs_event_start | 2 | const char * | +| (uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int) | | uv_fs_event_start | 3 | unsigned int | +| (uv_fs_poll_t *) | | uv__fs_poll_close | 0 | uv_fs_poll_t * | +| (uv_fs_poll_t *,char *,size_t *) | | uv_fs_poll_getpath | 0 | uv_fs_poll_t * | +| (uv_fs_poll_t *,char *,size_t *) | | uv_fs_poll_getpath | 1 | char * | +| (uv_fs_poll_t *,char *,size_t *) | | uv_fs_poll_getpath | 2 | size_t * | +| (uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int) | | uv_fs_poll_start | 0 | uv_fs_poll_t * | +| (uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int) | | uv_fs_poll_start | 1 | uv_fs_poll_cb | +| (uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int) | | uv_fs_poll_start | 2 | const char * | +| (uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int) | | uv_fs_poll_start | 3 | unsigned int | +| (uv_fs_t *) | | uv_fs_get_statbuf | 0 | uv_fs_t * | +| (uv_fs_t *,uv_dirent_t *) | | uv_fs_scandir_next | 0 | uv_fs_t * | +| (uv_fs_t *,uv_dirent_t *) | | uv_fs_scandir_next | 1 | uv_dirent_t * | +| (uv_handle_t *) | | uv__make_close_pending | 0 | uv_handle_t * | +| (uv_handle_t *,int *) | | uv_recv_buffer_size | 0 | uv_handle_t * | +| (uv_handle_t *,int *) | | uv_recv_buffer_size | 1 | int * | +| (uv_handle_t *,int *) | | uv_send_buffer_size | 0 | uv_handle_t * | +| (uv_handle_t *,int *) | | uv_send_buffer_size | 1 | int * | +| (uv_handle_t *,int,int *) | | uv__socket_sockopt | 0 | uv_handle_t * | +| (uv_handle_t *,int,int *) | | uv__socket_sockopt | 1 | int | +| (uv_handle_t *,int,int *) | | uv__socket_sockopt | 2 | int * | +| (uv_handle_t *,uv_close_cb) | | uv_close | 0 | uv_handle_t * | +| (uv_handle_t *,uv_close_cb) | | uv_close | 1 | uv_close_cb | +| (uv_handle_t *,void *) | | uv_handle_set_data | 0 | uv_handle_t * | +| (uv_handle_t *,void *) | | uv_handle_set_data | 1 | void * | +| (uv_idle_t *,uv_idle_cb) | | uv_idle_start | 0 | uv_idle_t * | +| (uv_idle_t *,uv_idle_cb) | | uv_idle_start | 1 | uv_idle_cb | +| (uv_interface_address_t **,int *) | | uv_interface_addresses | 0 | uv_interface_address_t ** | +| (uv_interface_address_t **,int *) | | uv_interface_addresses | 1 | int * | +| (uv_key_t *) | | uv_key_delete | 0 | uv_key_t * | +| (uv_key_t *) | | uv_key_get | 0 | uv_key_t * | +| (uv_key_t *,void *) | | uv_key_set | 0 | uv_key_t * | +| (uv_key_t *,void *) | | uv_key_set | 1 | void * | +| (uv_lib_t *,const char *,void **) | | uv_dlsym | 0 | uv_lib_t * | +| (uv_lib_t *,const char *,void **) | | uv_dlsym | 1 | const char * | +| (uv_lib_t *,const char *,void **) | | uv_dlsym | 2 | void ** | +| (uv_loop_t *) | | uv__process_init | 0 | uv_loop_t * | +| (uv_loop_t *) | | uv_loop_init | 0 | uv_loop_t * | +| (uv_loop_t *,FILE *) | | uv_print_active_handles | 0 | uv_loop_t * | +| (uv_loop_t *,FILE *) | | uv_print_active_handles | 1 | FILE * | +| (uv_loop_t *,FILE *) | | uv_print_all_handles | 0 | uv_loop_t * | +| (uv_loop_t *,FILE *) | | uv_print_all_handles | 1 | FILE * | +| (uv_loop_t *,uv__io_t *) | | uv__io_close | 0 | uv_loop_t * | +| (uv_loop_t *,uv__io_t *) | | uv__io_close | 1 | uv__io_t * | +| (uv_loop_t *,uv__io_t *) | | uv__io_feed | 0 | uv_loop_t * | +| (uv_loop_t *,uv__io_t *) | | uv__io_feed | 1 | uv__io_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_start | 0 | uv_loop_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_start | 1 | uv__io_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_start | 2 | unsigned int | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_stop | 0 | uv_loop_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_stop | 1 | uv__io_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_stop | 2 | unsigned int | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__server_io | 0 | uv_loop_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__server_io | 1 | uv__io_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__server_io | 2 | unsigned int | +| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 0 | uv_loop_t * | +| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 1 | uv__io_t * | +| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 2 | uv__io_cb | +| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 3 | int | +| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 4 | unsigned int | +| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 0 | uv_loop_t * | +| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 1 | uv__work * | +| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 2 | uv__work_kind | +| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 3 | ..(*)(..) | +| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 4 | ..(*)(..) | +| (uv_loop_t *,uv_async_t *,uv_async_cb) | | uv_async_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_async_t *,uv_async_cb) | | uv_async_init | 1 | uv_async_t * | +| (uv_loop_t *,uv_async_t *,uv_async_cb) | | uv_async_init | 2 | uv_async_cb | +| (uv_loop_t *,uv_check_t *) | | uv_check_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_check_t *) | | uv_check_init | 1 | uv_check_t * | +| (uv_loop_t *,uv_fs_event_t *) | | uv_fs_event_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_event_t *) | | uv_fs_event_init | 1 | uv_fs_event_t * | +| (uv_loop_t *,uv_fs_poll_t *) | | uv_fs_poll_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_poll_t *) | | uv_fs_poll_init | 1 | uv_fs_poll_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__fs_post | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__fs_post | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_close | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_close | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_ftruncate | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_ftruncate | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_link | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_link | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_mkdir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_mkdir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_open | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_open | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_rename | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_rename | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_symlink | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_symlink | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_unlink | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_unlink | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 3 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 4 | int | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 3 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 4 | int | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 3 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 3 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 3 | double | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 4 | double | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 3 | double | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 4 | double | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 3 | int | +| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 4 | int | +| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 3 | int | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 3 | int | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 3 | int | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 3 | int | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_lstat | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_lstat | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_lstat | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_lstat | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkdtemp | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkdtemp | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkdtemp | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkdtemp | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkstemp | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkstemp | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkstemp | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkstemp | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_opendir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_opendir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_opendir | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_opendir | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_readlink | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_readlink | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_readlink | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_readlink | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_realpath | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_realpath | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_realpath | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_realpath | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_rmdir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_rmdir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_rmdir | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_rmdir | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_stat | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_stat | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_stat | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_stat | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_statfs | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_statfs | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_statfs | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_statfs | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_unlink | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_unlink | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_unlink | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_unlink | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 3 | uv_uid_t | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 4 | uv_gid_t | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 3 | uv_uid_t | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 4 | uv_gid_t | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | int | +| (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 2 | int | +| (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 3 | int | +| (uv_loop_t *,uv_fs_t *,uint32_t) | | uv__iou_fs_fsync_or_fdatasync | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uint32_t) | | uv__iou_fs_fsync_or_fdatasync | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uint32_t) | | uv__iou_fs_fsync_or_fdatasync | 2 | uint32_t | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_closedir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_closedir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_closedir | 2 | uv_dir_t * | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_closedir | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_readdir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_readdir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_readdir | 2 | uv_dir_t * | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_readdir | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 3 | const uv_buf_t[] | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 4 | unsigned int | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 5 | int64_t | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 6 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 3 | const uv_buf_t[] | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 4 | unsigned int | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 5 | int64_t | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 6 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 3 | double | +| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 4 | double | +| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 3 | int64_t | +| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 3 | int | +| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 3 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 4 | int64_t | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 5 | size_t | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 6 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_close | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_close | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_close | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_close | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fdatasync | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fdatasync | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fdatasync | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fdatasync | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fstat | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fstat | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fstat | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fstat | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fsync | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fsync | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fsync | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fsync | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 3 | uv_uid_t | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 4 | uv_gid_t | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 5 | uv_fs_cb | +| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 0 | uv_loop_t * | +| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 1 | uv_getaddrinfo_t * | +| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 2 | uv_getaddrinfo_cb | +| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 3 | const char * | +| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 4 | const char * | +| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 5 | const addrinfo * | +| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 0 | uv_loop_t * | +| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 1 | uv_getnameinfo_t * | +| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 2 | uv_getnameinfo_cb | +| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 3 | const sockaddr * | +| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 4 | int | +| (uv_loop_t *,uv_idle_t *) | | uv_idle_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_idle_t *) | | uv_idle_init | 1 | uv_idle_t * | +| (uv_loop_t *,uv_loop_option,va_list) | | uv__loop_configure | 0 | uv_loop_t * | +| (uv_loop_t *,uv_loop_option,va_list) | | uv__loop_configure | 1 | uv_loop_option | +| (uv_loop_t *,uv_loop_option,va_list) | | uv__loop_configure | 2 | va_list | +| (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 1 | uv_pipe_t * | +| (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | int | +| (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 1 | uv_poll_t * | +| (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | int | +| (uv_loop_t *,uv_poll_t *,uv_os_sock_t) | | uv_poll_init_socket | 0 | uv_loop_t * | +| (uv_loop_t *,uv_poll_t *,uv_os_sock_t) | | uv_poll_init_socket | 1 | uv_poll_t * | +| (uv_loop_t *,uv_poll_t *,uv_os_sock_t) | | uv_poll_init_socket | 2 | uv_os_sock_t | +| (uv_loop_t *,uv_prepare_t *) | | uv_prepare_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_prepare_t *) | | uv_prepare_init | 1 | uv_prepare_t * | +| (uv_loop_t *,uv_process_t *,const uv_process_options_t *) | | uv_spawn | 0 | uv_loop_t * | +| (uv_loop_t *,uv_process_t *,const uv_process_options_t *) | | uv_spawn | 1 | uv_process_t * | +| (uv_loop_t *,uv_process_t *,const uv_process_options_t *) | | uv_spawn | 2 | const uv_process_options_t * | +| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 0 | uv_loop_t * | +| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 1 | uv_random_t * | +| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 2 | void * | +| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 3 | size_t | +| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 4 | unsigned int | +| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 5 | uv_random_cb | +| (uv_loop_t *,uv_signal_t *) | | uv_signal_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_signal_t *) | | uv_signal_init | 1 | uv_signal_t * | +| (uv_loop_t *,uv_stream_t *,uv_handle_type) | | uv__stream_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_stream_t *,uv_handle_type) | | uv__stream_init | 1 | uv_stream_t * | +| (uv_loop_t *,uv_stream_t *,uv_handle_type) | | uv__stream_init | 2 | uv_handle_type | +| (uv_loop_t *,uv_tcp_t *) | | uv_tcp_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_tcp_t *) | | uv_tcp_init | 1 | uv_tcp_t * | +| (uv_loop_t *,uv_tcp_t *,unsigned int) | | uv_tcp_init_ex | 0 | uv_loop_t * | +| (uv_loop_t *,uv_tcp_t *,unsigned int) | | uv_tcp_init_ex | 1 | uv_tcp_t * | +| (uv_loop_t *,uv_tcp_t *,unsigned int) | | uv_tcp_init_ex | 2 | unsigned int | +| (uv_loop_t *,uv_timer_t *) | | uv_timer_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_timer_t *) | | uv_timer_init | 1 | uv_timer_t * | +| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 1 | uv_tty_t * | +| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 2 | int | +| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 3 | uv_file | +| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 4 | int | +| (uv_loop_t *,uv_udp_t *) | | uv_udp_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_udp_t *) | | uv_udp_init | 1 | uv_udp_t * | +| (uv_loop_t *,uv_udp_t *,unsigned int) | | uv_udp_init_ex | 0 | uv_loop_t * | +| (uv_loop_t *,uv_udp_t *,unsigned int) | | uv_udp_init_ex | 1 | uv_udp_t * | +| (uv_loop_t *,uv_udp_t *,unsigned int) | | uv_udp_init_ex | 2 | unsigned int | +| (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 0 | uv_loop_t * | +| (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 1 | uv_udp_t * | +| (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 2 | unsigned int | +| (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 3 | int | +| (uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb) | | uv_queue_work | 0 | uv_loop_t * | +| (uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb) | | uv_queue_work | 1 | uv_work_t * | +| (uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb) | | uv_queue_work | 2 | uv_work_cb | +| (uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb) | | uv_queue_work | 3 | uv_after_work_cb | +| (uv_loop_t *,void *) | | uv_loop_set_data | 0 | uv_loop_t * | +| (uv_loop_t *,void *) | | uv_loop_set_data | 1 | void * | +| (uv_os_fd_t) | | uv_open_osfhandle | 0 | uv_os_fd_t | +| (uv_pipe_t *) | | uv_pipe_pending_count | 0 | uv_pipe_t * | +| (uv_pipe_t *,const char *) | | uv_pipe_bind | 0 | uv_pipe_t * | +| (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | const char * | +| (uv_pipe_t *,const char *,size_t,unsigned int) | | uv_pipe_bind2 | 0 | uv_pipe_t * | +| (uv_pipe_t *,const char *,size_t,unsigned int) | | uv_pipe_bind2 | 1 | const char * | +| (uv_pipe_t *,const char *,size_t,unsigned int) | | uv_pipe_bind2 | 2 | size_t | +| (uv_pipe_t *,const char *,size_t,unsigned int) | | uv_pipe_bind2 | 3 | unsigned int | +| (uv_pipe_t *,int,uv_connection_cb) | | uv__pipe_listen | 0 | uv_pipe_t * | +| (uv_pipe_t *,int,uv_connection_cb) | | uv__pipe_listen | 1 | int | +| (uv_pipe_t *,int,uv_connection_cb) | | uv__pipe_listen | 2 | uv_connection_cb | +| (uv_pipe_t *,uv_file) | | uv_pipe_open | 0 | uv_pipe_t * | +| (uv_pipe_t *,uv_file) | | uv_pipe_open | 1 | uv_file | +| (uv_poll_t *,int,uv_poll_cb) | | uv_poll_start | 0 | uv_poll_t * | +| (uv_poll_t *,int,uv_poll_cb) | | uv_poll_start | 1 | int | +| (uv_poll_t *,int,uv_poll_cb) | | uv_poll_start | 2 | uv_poll_cb | +| (uv_prepare_t *,uv_prepare_cb) | | uv_prepare_start | 0 | uv_prepare_t * | +| (uv_prepare_t *,uv_prepare_cb) | | uv_prepare_start | 1 | uv_prepare_cb | +| (uv_req_t *,void *) | | uv_req_set_data | 0 | uv_req_t * | +| (uv_req_t *,void *) | | uv_req_set_data | 1 | void * | +| (uv_sem_t *) | | uv_sem_destroy | 0 | uv_sem_t * | +| (uv_sem_t *) | | uv_sem_post | 0 | uv_sem_t * | +| (uv_sem_t *) | | uv_sem_trywait | 0 | uv_sem_t * | +| (uv_sem_t *) | | uv_sem_wait | 0 | uv_sem_t * | +| (uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb) | | uv_shutdown | 0 | uv_shutdown_t * | +| (uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb) | | uv_shutdown | 1 | uv_stream_t * | +| (uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb) | | uv_shutdown | 2 | uv_shutdown_cb | +| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 0 | uv_signal_t * | +| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 1 | uv_signal_cb | +| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | int | +| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 0 | uv_signal_t * | +| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 1 | uv_signal_cb | +| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | int | +| (uv_stream_t *,int,int) | | uv__stream_open | 0 | uv_stream_t * | +| (uv_stream_t *,int,int) | | uv__stream_open | 1 | int | +| (uv_stream_t *,int,int) | | uv__stream_open | 2 | int | +| (uv_stream_t *,int,uv_connection_cb) | | uv_listen | 0 | uv_stream_t * | +| (uv_stream_t *,int,uv_connection_cb) | | uv_listen | 1 | int | +| (uv_stream_t *,int,uv_connection_cb) | | uv_listen | 2 | uv_connection_cb | +| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv__read_start | 0 | uv_stream_t * | +| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv__read_start | 1 | uv_alloc_cb | +| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv__read_start | 2 | uv_read_cb | +| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv_read_start | 0 | uv_stream_t * | +| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv_read_start | 1 | uv_alloc_cb | +| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv_read_start | 2 | uv_read_cb | +| (uv_stream_t *,uv_stream_t *) | | uv_accept | 0 | uv_stream_t * | +| (uv_stream_t *,uv_stream_t *) | | uv_accept | 1 | uv_stream_t * | +| (uv_tcp_t *,int,uv_connection_cb) | | uv__tcp_listen | 0 | uv_tcp_t * | +| (uv_tcp_t *,int,uv_connection_cb) | | uv__tcp_listen | 1 | int | +| (uv_tcp_t *,int,uv_connection_cb) | | uv__tcp_listen | 2 | uv_connection_cb | +| (uv_tcp_t *,uv_close_cb) | | uv_tcp_close_reset | 0 | uv_tcp_t * | +| (uv_tcp_t *,uv_close_cb) | | uv_tcp_close_reset | 1 | uv_close_cb | +| (uv_tcp_t *,uv_os_sock_t) | | uv_tcp_open | 0 | uv_tcp_t * | +| (uv_tcp_t *,uv_os_sock_t) | | uv_tcp_open | 1 | uv_os_sock_t | +| (uv_thread_t *) | | uv_thread_detach | 0 | uv_thread_t * | +| (uv_thread_t *) | | uv_thread_join | 0 | uv_thread_t * | +| (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 0 | uv_thread_t * | +| (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 1 | char * | +| (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 2 | char * | +| (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 3 | size_t | +| (uv_thread_t *,char *,size_t) | | uv__thread_getname | 0 | uv_thread_t * | +| (uv_thread_t *,char *,size_t) | | uv__thread_getname | 1 | char * | +| (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | size_t | +| (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 0 | uv_thread_t * | +| (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 1 | char * | +| (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | size_t | +| (uv_thread_t *,char *,size_t) | | uv_thread_getname | 0 | uv_thread_t * | +| (uv_thread_t *,char *,size_t) | | uv_thread_getname | 1 | char * | +| (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | size_t | +| (uv_timer_t *,uint64_t) | | uv_timer_set_repeat | 0 | uv_timer_t * | +| (uv_timer_t *,uint64_t) | | uv_timer_set_repeat | 1 | uint64_t | +| (uv_timer_t *,uv_timer_cb,uint64_t,uint64_t) | | uv_timer_start | 0 | uv_timer_t * | +| (uv_timer_t *,uv_timer_cb,uint64_t,uint64_t) | | uv_timer_start | 1 | uv_timer_cb | +| (uv_timer_t *,uv_timer_cb,uint64_t,uint64_t) | | uv_timer_start | 2 | uint64_t | +| (uv_timer_t *,uv_timer_cb,uint64_t,uint64_t) | | uv_timer_start | 3 | uint64_t | +| (uv_tty_t *,uv_tty_mode_t) | | uv_tty_set_mode | 0 | uv_tty_t * | +| (uv_tty_t *,uv_tty_mode_t) | | uv_tty_set_mode | 1 | uv_tty_mode_t | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 0 | uv_udp_send_t * | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 1 | uv_udp_t * | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 2 | const uv_buf_t[] | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 3 | unsigned int | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 4 | const sockaddr * | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 5 | unsigned int | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 6 | uv_udp_send_cb | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 0 | uv_udp_send_t * | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 1 | uv_udp_t * | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 2 | const uv_buf_t[] | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 3 | unsigned int | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 4 | const sockaddr * | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 5 | uv_udp_send_cb | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *) | | uv_udp_try_send | 0 | uv_udp_t * | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *) | | uv_udp_try_send | 1 | const uv_buf_t[] | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *) | | uv_udp_try_send | 2 | unsigned int | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *) | | uv_udp_try_send | 3 | const sockaddr * | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 0 | uv_udp_t * | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 1 | const uv_buf_t[] | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 2 | unsigned int | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 3 | const sockaddr * | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 4 | unsigned int | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 0 | uv_udp_t * | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 1 | unsigned int | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 2 | uv_buf_t *[] | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 3 | unsigned int[] | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 4 | sockaddr *[] | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 0 | uv_udp_t * | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 1 | unsigned int | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 2 | uv_buf_t *[] | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 3 | unsigned int[] | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 4 | sockaddr *[] | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 5 | unsigned int | +| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv__udp_recv_start | 0 | uv_udp_t * | +| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv__udp_recv_start | 1 | uv_alloc_cb | +| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv__udp_recv_start | 2 | uv_udp_recv_cb | +| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv_udp_recv_start | 0 | uv_udp_t * | +| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv_udp_recv_start | 1 | uv_alloc_cb | +| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv_udp_recv_start | 2 | uv_udp_recv_cb | +| (uv_udp_t *,uv_os_sock_t) | | uv_udp_open | 0 | uv_udp_t * | +| (uv_udp_t *,uv_os_sock_t) | | uv_udp_open | 1 | uv_os_sock_t | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 0 | uv_write_t * | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 1 | uv_stream_t * | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 2 | const uv_buf_t[] | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 3 | unsigned int | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 4 | uv_stream_t * | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 5 | uv_write_cb | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 0 | uv_write_t * | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 1 | uv_stream_t * | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 2 | const uv_buf_t[] | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 3 | unsigned int | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 4 | uv_write_cb | | (vector &&) | vector | vector | 0 | vector && | | (vector &&,const Allocator &) | vector | vector | 0 | vector && | | (vector &&,const Allocator &) | vector | vector | 1 | const class:1 & | +| (void *) | | Curl_cpool_upkeep | 0 | void * | | (void *) | | ossl_kdf_data_new | 0 | void * | | (void *,CRYPTO_THREAD_RETVAL *) | | ossl_crypto_thread_join | 0 | void * | | (void *,CRYPTO_THREAD_RETVAL *) | | ossl_crypto_thread_join | 1 | CRYPTO_THREAD_RETVAL * | @@ -27825,6 +33863,14 @@ getSignatureParameterName | (void *,const unsigned char *,unsigned char *,const unsigned char *,size_t,block128_f) | | CRYPTO_128_wrap_pad | 3 | const unsigned char * | | (void *,const unsigned char *,unsigned char *,const unsigned char *,size_t,block128_f) | | CRYPTO_128_wrap_pad | 4 | size_t | | (void *,const unsigned char *,unsigned char *,const unsigned char *,size_t,block128_f) | | CRYPTO_128_wrap_pad | 5 | block128_f | +| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 0 | void * | +| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 1 | curl_off_t | +| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 2 | curl_off_t | +| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 3 | curl_off_t | +| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 4 | curl_off_t | +| (void *,curl_off_t,int) | | tool_mime_stdin_seek | 0 | void * | +| (void *,curl_off_t,int) | | tool_mime_stdin_seek | 1 | curl_off_t | +| (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | int | | (void *,int) | | DSO_dsobyaddr | 0 | void * | | (void *,int) | | DSO_dsobyaddr | 1 | int | | (void *,int) | | sqlite3_realloc | 0 | void * | @@ -27841,6 +33887,10 @@ getSignatureParameterName | (void *,int,size_t,size_t,size_t,uint64_t,const PROV_CIPHER_HW *) | | ossl_tdes_newctx | 6 | const PROV_CIPHER_HW * | | (void *,size_t) | | JimDefaultAllocator | 0 | void * | | (void *,size_t) | | JimDefaultAllocator | 1 | size_t | +| (void *,size_t) | | uv__random_devurandom | 0 | void * | +| (void *,size_t) | | uv__random_devurandom | 1 | size_t | +| (void *,size_t) | | uv__random_getrandom | 0 | void * | +| (void *,size_t) | | uv__random_getrandom | 1 | size_t | | (void *,size_t,const EC_POINT *,const EC_KEY *,..(*)(..)) | | ECDH_compute_key | 0 | void * | | (void *,size_t,const EC_POINT *,const EC_KEY *,..(*)(..)) | | ECDH_compute_key | 1 | size_t | | (void *,size_t,const EC_POINT *,const EC_KEY *,..(*)(..)) | | ECDH_compute_key | 2 | const EC_POINT * | @@ -27850,6 +33900,9 @@ getSignatureParameterName | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 1 | size_t | | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 2 | const char * | | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 3 | int | +| (void *,size_t,size_t) | | Curl_hash_str | 0 | void * | +| (void *,size_t,size_t) | | Curl_hash_str | 1 | size_t | +| (void *,size_t,size_t) | | Curl_hash_str | 2 | size_t | | (void *,size_t,size_t,const char *,int) | | CRYPTO_clear_realloc | 0 | void * | | (void *,size_t,size_t,const char *,int) | | CRYPTO_clear_realloc | 1 | size_t | | (void *,size_t,size_t,const char *,int) | | CRYPTO_clear_realloc | 2 | size_t | @@ -27964,6 +34017,14 @@ getSignatureParameterName | (void *,void *,const unsigned char *,size_t,const OSSL_PARAM[]) | | ossl_cipher_generic_skey_einit | 2 | const unsigned char * | | (void *,void *,const unsigned char *,size_t,const OSSL_PARAM[]) | | ossl_cipher_generic_skey_einit | 3 | size_t | | (void *,void *,const unsigned char *,size_t,const OSSL_PARAM[]) | | ossl_cipher_generic_skey_einit | 4 | const OSSL_PARAM[] | +| (voidp,z_size_t,z_size_t,gzFile) | | gzfread | 0 | voidp | +| (voidp,z_size_t,z_size_t,gzFile) | | gzfread | 1 | z_size_t | +| (voidp,z_size_t,z_size_t,gzFile) | | gzfread | 2 | z_size_t | +| (voidp,z_size_t,z_size_t,gzFile) | | gzfread | 3 | gzFile | +| (voidpc,z_size_t,z_size_t,gzFile) | | gzfwrite | 0 | voidpc | +| (voidpc,z_size_t,z_size_t,gzFile) | | gzfwrite | 1 | z_size_t | +| (voidpc,z_size_t,z_size_t,gzFile) | | gzfwrite | 2 | z_size_t | +| (voidpc,z_size_t,z_size_t,gzFile) | | gzfwrite | 3 | gzFile | | (wchar_t *) | CStringT | CStringT | 0 | wchar_t * | | (wchar_t) | | operator+= | 0 | wchar_t | | (wchar_t) | CComBSTR | Append | 0 | wchar_t | @@ -27974,6 +34035,33 @@ getSignatureParameterName | (wchar_t,const CStringT &) | | operator+ | 1 | const CStringT & | | (wchar_t,int) | CStringT | CStringT | 0 | wchar_t | | (wchar_t,int) | CStringT | CStringT | 1 | int | +| (z_streamp) | | deflateResetKeep | 0 | z_streamp | +| (z_streamp) | | inflateCodesUsed | 0 | z_streamp | +| (z_streamp) | | inflateMark | 0 | z_streamp | +| (z_streamp,Bytef *,uInt *) | | deflateGetDictionary | 0 | z_streamp | +| (z_streamp,Bytef *,uInt *) | | deflateGetDictionary | 1 | Bytef * | +| (z_streamp,Bytef *,uInt *) | | deflateGetDictionary | 2 | uInt * | +| (z_streamp,Bytef *,uInt *) | | inflateGetDictionary | 0 | z_streamp | +| (z_streamp,Bytef *,uInt *) | | inflateGetDictionary | 1 | Bytef * | +| (z_streamp,Bytef *,uInt *) | | inflateGetDictionary | 2 | uInt * | +| (z_streamp,const Bytef *,uInt) | | deflateSetDictionary | 0 | z_streamp | +| (z_streamp,const Bytef *,uInt) | | deflateSetDictionary | 1 | const Bytef * | +| (z_streamp,const Bytef *,uInt) | | deflateSetDictionary | 2 | uInt | +| (z_streamp,gz_headerp) | | deflateSetHeader | 0 | z_streamp | +| (z_streamp,gz_headerp) | | deflateSetHeader | 1 | gz_headerp | +| (z_streamp,int *) | | deflateUsed | 0 | z_streamp | +| (z_streamp,int *) | | deflateUsed | 1 | int * | +| (z_streamp,uLong) | | deflateBound | 0 | z_streamp | +| (z_streamp,uLong) | | deflateBound | 1 | uLong | +| (z_streamp,unsigned int *,int *) | | deflatePending | 0 | z_streamp | +| (z_streamp,unsigned int *,int *) | | deflatePending | 1 | unsigned int * | +| (z_streamp,unsigned int *,int *) | | deflatePending | 2 | int * | +| (z_streamp,unsigned int) | | inflate_fast | 0 | z_streamp | +| (z_streamp,unsigned int) | | inflate_fast | 1 | unsigned int | +| (z_streamp,z_streamp) | | deflateCopy | 0 | z_streamp | +| (z_streamp,z_streamp) | | deflateCopy | 1 | z_streamp | +| (z_streamp,z_streamp) | | inflateCopy | 0 | z_streamp | +| (z_streamp,z_streamp) | | inflateCopy | 1 | z_streamp | getParameterTypeName | arrayassignment.cpp:3:6:3:9 | sink | 0 | int | | arrayassignment.cpp:4:6:4:9 | sink | 0 | MyInt | diff --git a/cpp/ql/test/library-tests/floats/float128/usertypes.ql b/cpp/ql/test/library-tests/floats/float128/usertypes.ql index d3677562532a..2b85c9519abf 100644 --- a/cpp/ql/test/library-tests/floats/float128/usertypes.ql +++ b/cpp/ql/test/library-tests/floats/float128/usertypes.ql @@ -2,6 +2,9 @@ import cpp from UserType t, Type related where - related = t.(Class).getABaseClass() or - related = t.(TypedefType).getUnderlyingType() + ( + related = t.(Class).getABaseClass() or + related = t.(TypedefType).getUnderlyingType() + ) and + exists(t.getFile()) select t, related diff --git a/cpp/ql/test/library-tests/includes/includes/locations.expected b/cpp/ql/test/library-tests/includes/includes/locations.expected index 1b6b3b068923..c61055c84413 100644 --- a/cpp/ql/test/library-tests/includes/includes/locations.expected +++ b/cpp/ql/test/library-tests/includes/includes/locations.expected @@ -1,7 +1,5 @@ | bar.h:0:0:0:0 | bar.h:0:0:0:0 | | file://:0:0:0:0 | file://:0:0:0:0 | -| file://:0:0:0:0 | file://:0:0:0:0 | -| file://:0:0:0:0 | file://:0:0:0:0 | | includes.c:0:0:0:0 | includes.c:0:0:0:0 | | includes.c:2:1:2:15 | includes.c:2:1:2:15 | | includes.c:4:1:4:16 | includes.c:4:1:4:16 | diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 0b825a0a855b..8f280c89764c 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -58,6 +58,123 @@ #-----| Type = [LongType] unsigned long #-----| getParameter(1): [Parameter] (unnamed parameter 1) #-----| Type = [ScopedEnum] align_val_t +arm_neon.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) +# 10| [TopLevelFunction] uint16x8_t vaddl_u8(uint8x8_t, uint8x8_t) +# 10| : +# 10| getParameter(0): [Parameter] a +# 10| Type = [CTypedefType] uint8x8_t +# 10| getParameter(1): [Parameter] b +# 10| Type = [CTypedefType] uint8x8_t +# 12| [TopLevelFunction] uint16x8_t arm_add(uint8x8_t, uint8x8_t*) +# 12| : +# 12| getParameter(0): [Parameter] a +# 12| Type = [CTypedefType] uint8x8_t +# 12| getParameter(1): [Parameter] b +# 12| Type = [PointerType] uint8x8_t * +# 12| getEntryPoint(): [BlockStmt] { ... } +# 13| getStmt(0): [DeclStmt] declaration +# 13| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 13| Type = [CTypedefType] uint8x8_t +# 13| getVariable().getInitializer(): [Initializer] initializer for c +# 13| getExpr(): [FunctionCall] call to vadd_u8 +# 13| Type = [CTypedefType] uint8x8_t +# 13| ValueCategory = prvalue +# 13| getArgument(0): [VariableAccess] a +# 13| Type = [CTypedefType] uint8x8_t +# 13| ValueCategory = prvalue(load) +# 13| getArgument(1): [PointerDereferenceExpr] * ... +# 13| Type = [CTypedefType] uint8x8_t +# 13| ValueCategory = prvalue(load) +# 13| getOperand(): [VariableAccess] b +# 13| Type = [PointerType] uint8x8_t * +# 13| ValueCategory = prvalue(load) +# 14| getStmt(1): [ReturnStmt] return ... +# 14| getExpr(): [FunctionCall] call to vaddl_u8 +# 14| Type = [CTypedefType] uint16x8_t +# 14| ValueCategory = prvalue +# 14| getArgument(0): [VariableAccess] a +# 14| Type = [CTypedefType] uint8x8_t +# 14| ValueCategory = prvalue(load) +# 14| getArgument(1): [VariableAccess] c +# 14| Type = [CTypedefType] uint8x8_t +# 14| ValueCategory = prvalue(load) +# 20| [TopLevelFunction] mfloat8x8_t vreinterpret_mf8_s8(int8x8_t) +# 20| : +# 20| getParameter(0): [Parameter] (unnamed parameter 0) +# 20| Type = [CTypedefType] int8x8_t +# 22| [TopLevelFunction] mfloat8x8_t arm_reinterpret(int8x8_t*) +# 22| : +# 22| getParameter(0): [Parameter] a +# 22| Type = [PointerType] int8x8_t * +# 22| getEntryPoint(): [BlockStmt] { ... } +# 23| getStmt(0): [ReturnStmt] return ... +# 23| getExpr(): [FunctionCall] call to vreinterpret_mf8_s8 +# 23| Type = [CTypedefType] mfloat8x8_t +# 23| ValueCategory = prvalue +# 23| getArgument(0): [PointerDereferenceExpr] * ... +# 23| Type = [CTypedefType] int8x8_t +# 23| ValueCategory = prvalue(load) +# 23| getOperand(): [VariableAccess] a +# 23| Type = [PointerType] int8x8_t * +# 23| ValueCategory = prvalue(load) +arm_sve.cpp: +# 6| [TopLevelFunction] svuint8x2_t svsel_u8_x2(svcount_t, svuint8x2_t, svuint8x2_t) +# 6| : +# 6| getParameter(0): [Parameter] (unnamed parameter 0) +# 6| Type = [CTypedefType] svcount_t +# 6| getParameter(1): [Parameter] (unnamed parameter 1) +# 6| Type = [CTypedefType] svuint8x2_t +# 6| getParameter(2): [Parameter] (unnamed parameter 2) +# 6| Type = [CTypedefType] svuint8x2_t +# 8| [TopLevelFunction] svuint8x2_t arm_sel(svcount_t, svuint8x2_t, svuint8x2_t*) +# 8| : +# 8| getParameter(0): [Parameter] a +# 8| Type = [CTypedefType] svcount_t +# 8| getParameter(1): [Parameter] b +# 8| Type = [CTypedefType] svuint8x2_t +# 8| getParameter(2): [Parameter] c +# 8| Type = [PointerType] svuint8x2_t * +# 8| getEntryPoint(): [BlockStmt] { ... } +# 9| getStmt(0): [DeclStmt] declaration +# 9| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 9| Type = [CTypedefType] svuint8x2_t +# 9| getVariable().getInitializer(): [Initializer] initializer for d +# 9| getExpr(): [FunctionCall] call to svsel_u8_x2 +# 9| Type = [CTypedefType] svuint8x2_t +# 9| ValueCategory = prvalue +# 9| getArgument(0): [VariableAccess] a +# 9| Type = [CTypedefType] svcount_t +# 9| ValueCategory = prvalue(load) +# 9| getArgument(1): [VariableAccess] b +# 9| Type = [CTypedefType] svuint8x2_t +# 9| ValueCategory = prvalue(load) +# 9| getArgument(2): [PointerDereferenceExpr] * ... +# 9| Type = [CTypedefType] svuint8x2_t +# 9| ValueCategory = prvalue(load) +# 9| getOperand(): [VariableAccess] c +# 9| Type = [PointerType] svuint8x2_t * +# 9| ValueCategory = prvalue(load) +# 10| getStmt(1): [ReturnStmt] return ... +# 10| getExpr(): [VariableAccess] d +# 10| Type = [CTypedefType] svuint8x2_t +# 10| ValueCategory = prvalue(load) bad_asts.cpp: # 5| [CopyAssignmentOperator] Bad::S& Bad::S::operator=(Bad::S const&) # 5| : @@ -10736,22 +10853,22 @@ ir.cpp: # 885| Type = [FunctionPointerType] ..(*)(..) # 885| ValueCategory = prvalue # 886| getStmt(2): [ReturnStmt] return ... -# 888| [TopLevelFunction] void VAListUsage(int, __va_list_tag[1]) +# 888| [TopLevelFunction] void VAListUsage(int, __builtin_va_list) # 888| : # 888| getParameter(0): [Parameter] x # 888| Type = [IntType] int # 888| getParameter(1): [Parameter] args -# 888| Type = [ArrayType] __va_list_tag[1] +# 888| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 888| getEntryPoint(): [BlockStmt] { ... } # 889| getStmt(0): [DeclStmt] declaration # 889| getDeclarationEntry(0): [VariableDeclarationEntry] definition of args2 -# 889| Type = [ArrayType] __va_list_tag[1] +# 889| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 890| getStmt(1): [ExprStmt] ExprStmt # 890| getExpr(): [BuiltInVarArgCopy] __builtin_va_copy # 890| Type = [VoidType] void # 890| ValueCategory = prvalue # 890| getDestinationVAList(): [VariableAccess] args2 -# 890| Type = [ArrayType] __va_list_tag[1] +# 890| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 890| ValueCategory = lvalue # 890| getSourceVAList(): [VariableAccess] args # 890| Type = [PointerType] __va_list_tag * @@ -10788,7 +10905,7 @@ ir.cpp: # 893| Type = [VoidType] void # 893| ValueCategory = prvalue # 893| getVAList(): [VariableAccess] args2 -# 893| Type = [ArrayType] __va_list_tag[1] +# 893| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 893| ValueCategory = lvalue # 893| getVAList().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 893| Type = [PointerType] __va_list_tag * @@ -10801,13 +10918,13 @@ ir.cpp: # 896| getEntryPoint(): [BlockStmt] { ... } # 897| getStmt(0): [DeclStmt] declaration # 897| getDeclarationEntry(0): [VariableDeclarationEntry] definition of args -# 897| Type = [ArrayType] __va_list_tag[1] +# 897| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 899| getStmt(1): [ExprStmt] ExprStmt # 899| getExpr(): [BuiltInVarArgsStart] __builtin_va_start # 899| Type = [VoidType] void # 899| ValueCategory = prvalue # 899| getVAList(): [VariableAccess] args -# 899| Type = [ArrayType] __va_list_tag[1] +# 899| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 899| ValueCategory = lvalue # 899| getLastNamedParameter(): [VariableAccess] x # 899| Type = [IntType] int @@ -10817,16 +10934,16 @@ ir.cpp: # 899| ValueCategory = prvalue # 900| getStmt(2): [DeclStmt] declaration # 900| getDeclarationEntry(0): [VariableDeclarationEntry] definition of args2 -# 900| Type = [ArrayType] __va_list_tag[1] +# 900| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 901| getStmt(3): [ExprStmt] ExprStmt # 901| getExpr(): [BuiltInVarArgCopy] __builtin_va_copy # 901| Type = [VoidType] void # 901| ValueCategory = prvalue # 901| getDestinationVAList(): [VariableAccess] args2 -# 901| Type = [ArrayType] __va_list_tag[1] +# 901| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 901| ValueCategory = lvalue # 901| getSourceVAList(): [VariableAccess] args -# 901| Type = [ArrayType] __va_list_tag[1] +# 901| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 901| ValueCategory = lvalue # 901| getDestinationVAList().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 901| Type = [PointerType] __va_list_tag * @@ -10842,7 +10959,7 @@ ir.cpp: # 902| Type = [DoubleType] double # 902| ValueCategory = prvalue(load) # 902| getVAList(): [VariableAccess] args -# 902| Type = [ArrayType] __va_list_tag[1] +# 902| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 902| ValueCategory = lvalue # 902| getVAList().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 902| Type = [PointerType] __va_list_tag * @@ -10855,7 +10972,7 @@ ir.cpp: # 903| Type = [IntType] int # 903| ValueCategory = prvalue(load) # 903| getVAList(): [VariableAccess] args -# 903| Type = [ArrayType] __va_list_tag[1] +# 903| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 903| ValueCategory = lvalue # 903| getVAList().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 903| Type = [PointerType] __va_list_tag * @@ -10869,7 +10986,7 @@ ir.cpp: # 904| Type = [VoidType] void # 904| ValueCategory = prvalue # 904| getVAList(): [VariableAccess] args -# 904| Type = [ArrayType] __va_list_tag[1] +# 904| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 904| ValueCategory = lvalue # 904| getVAList().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 904| Type = [PointerType] __va_list_tag * @@ -10882,7 +10999,7 @@ ir.cpp: # 905| Type = [IntType] int # 905| ValueCategory = prvalue(load) # 905| getArgument(1): [VariableAccess] args2 -# 905| Type = [ArrayType] __va_list_tag[1] +# 905| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 905| ValueCategory = lvalue # 905| getArgument(1).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 905| Type = [PointerType] __va_list_tag * @@ -10892,7 +11009,7 @@ ir.cpp: # 906| Type = [VoidType] void # 906| ValueCategory = prvalue # 906| getVAList(): [VariableAccess] args2 -# 906| Type = [ArrayType] __va_list_tag[1] +# 906| Type = [BuiltInVarArgsList,CTypedefType] __builtin_va_list # 906| ValueCategory = lvalue # 906| getVAList().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 906| Type = [PointerType] __va_list_tag * @@ -15017,7 +15134,7 @@ ir.cpp: # 1506| [Constructor] void Inheritance_Test_A::Inheritance_Test_A() # 1506| : # 1506| : -# 1506| getInitializer(0): (no string representation) +# 1506| getInitializer(0): [ConstructorInit] constructor init # 1506| Type = [Struct] Inheritance_Test_B # 1506| ValueCategory = prvalue # 1506| getInitializer(1): [ConstructorFieldInit] constructor init of field x @@ -17088,7 +17205,7 @@ ir.cpp: # 1785| getExpr(): [ReferenceDereferenceExpr] (reference dereference) # 1785| Type = [SpecifiedType] const CopyConstructorTestNonVirtualClass # 1785| ValueCategory = lvalue -# 1785| getInitializer(1): (no string representation) +# 1785| getInitializer(1): [ConstructorInit] constructor init # 1785| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass # 1785| ValueCategory = prvalue # 1785| getEntryPoint(): [BlockStmt] { ... } @@ -17137,7 +17254,7 @@ ir.cpp: # 1792| getExpr(): [ReferenceDereferenceExpr] (reference dereference) # 1792| Type = [SpecifiedType] const CopyConstructorTestVirtualClass # 1792| ValueCategory = lvalue -# 1792| getInitializer(1): (no string representation) +# 1792| getInitializer(1): [ConstructorInit] constructor init # 1792| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass # 1792| ValueCategory = prvalue # 1792| getEntryPoint(): [BlockStmt] { ... } @@ -49581,6 +49698,111 @@ try_except.c: # 40| Type = [IntType] int # 40| ValueCategory = prvalue(load) # 42| getStmt(2): [ReturnStmt] return ... +# 44| [TopLevelFunction] int i() +# 44| : +# 46| [TopLevelFunction] void j(int) +# 46| : +# 46| getParameter(0): [Parameter] b +# 46| Type = [IntType] int +# 46| getEntryPoint(): [BlockStmt] { ... } +# 47| getStmt(0): [DeclStmt] declaration +# 47| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 47| Type = [IntType] int +# 47| getVariable().getInitializer(): [Initializer] initializer for x +# 47| getExpr(): [Literal] 0 +# 47| Type = [IntType] int +# 47| Value = [Literal] 0 +# 47| ValueCategory = prvalue +# 48| getStmt(1): [MicrosoftTryExceptStmt] __try { ... } __except( ... ) { ... } +# 48| getStmt(): [BlockStmt] { ... } +# 49| getStmt(0): [DeclStmt] declaration +# 49| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 49| Type = [IntType] int +# 49| getVariable().getInitializer(): [Initializer] initializer for y +# 49| getExpr(): [FunctionCall] call to i +# 49| Type = [IntType] int +# 49| ValueCategory = prvalue +# 51| getCondition(): [Literal] 1 +# 51| Type = [IntType] int +# 51| Value = [Literal] 1 +# 51| ValueCategory = prvalue +# 51| getExcept(): [BlockStmt] { ... } +# 52| getStmt(0): [ExprStmt] ExprStmt +# 52| getExpr(): [FunctionCall] call to sink +# 52| Type = [VoidType] void +# 52| ValueCategory = prvalue +# 52| getArgument(0): [VariableAccess] x +# 52| Type = [IntType] int +# 52| ValueCategory = prvalue(load) +# 54| getStmt(2): [ReturnStmt] return ... +# 56| [TopLevelFunction] void k(int*, int*, int*) +# 56| : +# 56| getParameter(0): [Parameter] b +# 56| Type = [IntPointerType] int * +# 56| getParameter(1): [Parameter] c +# 56| Type = [IntPointerType] int * +# 56| getParameter(2): [Parameter] d +# 56| Type = [IntPointerType] int * +# 56| getEntryPoint(): [BlockStmt] { ... } +# 57| getStmt(0): [DeclStmt] declaration +# 57| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 57| Type = [IntType] int +# 57| getVariable().getInitializer(): [Initializer] initializer for x +# 57| getExpr(): [Literal] 0 +# 57| Type = [IntType] int +# 57| Value = [Literal] 0 +# 57| ValueCategory = prvalue +# 58| getStmt(1): [MicrosoftTryExceptStmt] __try { ... } __except( ... ) { ... } +# 58| getStmt(): [BlockStmt] { ... } +# 59| getStmt(0): [ExprStmt] ExprStmt +# 59| getExpr(): [AssignExpr] ... = ... +# 59| Type = [IntType] int +# 59| ValueCategory = prvalue +# 59| getLValue(): [VariableAccess] x +# 59| Type = [IntType] int +# 59| ValueCategory = lvalue +# 59| getRValue(): [PointerDereferenceExpr] * ... +# 59| Type = [IntType] int +# 59| ValueCategory = prvalue(load) +# 59| getOperand(): [VariableAccess] b +# 59| Type = [IntPointerType] int * +# 59| ValueCategory = prvalue(load) +# 60| getStmt(1): [ExprStmt] ExprStmt +# 60| getExpr(): [AssignExpr] ... = ... +# 60| Type = [IntType] int +# 60| ValueCategory = prvalue +# 60| getLValue(): [PointerDereferenceExpr] * ... +# 60| Type = [IntType] int +# 60| ValueCategory = lvalue +# 60| getOperand(): [VariableAccess] c +# 60| Type = [IntPointerType] int * +# 60| ValueCategory = prvalue(load) +# 60| getRValue(): [VariableAccess] x +# 60| Type = [IntType] int +# 60| ValueCategory = prvalue(load) +# 61| getStmt(2): [DeclStmt] declaration +# 61| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 61| Type = [IntType] int +# 61| getVariable().getInitializer(): [Initializer] initializer for y +# 61| getExpr(): [PointerDereferenceExpr] * ... +# 61| Type = [IntType] int +# 61| ValueCategory = prvalue(load) +# 61| getOperand(): [VariableAccess] d +# 61| Type = [IntPointerType] int * +# 61| ValueCategory = prvalue(load) +# 63| getCondition(): [Literal] 1 +# 63| Type = [IntType] int +# 63| Value = [Literal] 1 +# 63| ValueCategory = prvalue +# 63| getExcept(): [BlockStmt] { ... } +# 64| getStmt(0): [ExprStmt] ExprStmt +# 64| getExpr(): [FunctionCall] call to sink +# 64| Type = [VoidType] void +# 64| ValueCategory = prvalue +# 64| getArgument(0): [VariableAccess] x +# 64| Type = [IntType] int +# 64| ValueCategory = prvalue(load) +# 66| getStmt(2): [ReturnStmt] return ... try_except.cpp: # 3| [TopLevelFunction] void ProbeFunction() # 3| : 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 20d593e2379a..575631ab0417 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,128 @@ +arm_neon.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 : + +# 12| uint16x8_t arm_add(uint8x8_t, uint8x8_t*) +# 12| Block 0 +# 12| v12_1(void) = EnterFunction : +# 12| m12_2(unknown) = AliasedDefinition : +# 12| m12_3(unknown) = InitializeNonLocal : +# 12| m12_4(unknown) = Chi : total:m12_2, partial:m12_3 +# 12| r12_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 12| m12_6(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r12_5 +# 12| r12_7(glval<__attribute((neon_vector_type(8))) unsigned char *>) = VariableAddress[b] : +# 12| m12_8(__attribute((neon_vector_type(8))) unsigned char *) = InitializeParameter[b] : &:r12_7 +# 12| r12_9(__attribute((neon_vector_type(8))) unsigned char *) = Load[b] : &:r12_7, m12_8 +# 12| m12_10(unknown) = InitializeIndirection[b] : &:r12_9 +# 13| r13_1(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[c] : +# 13| r13_2(glval) = FunctionAddress[vadd_u8] : +# 13| r13_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 13| r13_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r13_3, m12_6 +# 13| r13_5(glval<__attribute((neon_vector_type(8))) unsigned char *>) = VariableAddress[b] : +# 13| r13_6(__attribute((neon_vector_type(8))) unsigned char *) = Load[b] : &:r13_5, m12_8 +# 13| r13_7(__attribute((neon_vector_type(8))) unsigned char) = Load[?] : &:r13_6, ~m12_10 +# 13| r13_8(__attribute((neon_vector_type(8))) unsigned char) = Call[vadd_u8] : func:r13_2, 0:r13_4, 1:r13_7 +# 13| m13_9(unknown) = ^CallSideEffect : ~m12_4 +# 13| m13_10(unknown) = Chi : total:m12_4, partial:m13_9 +# 13| m13_11(__attribute((neon_vector_type(8))) unsigned char) = Store[c] : &:r13_1, r13_8 +# 14| r14_1(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] : +# 14| r14_2(glval) = FunctionAddress[vaddl_u8] : +# 14| r14_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 14| r14_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r14_3, m12_6 +# 14| r14_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[c] : +# 14| r14_6(__attribute((neon_vector_type(8))) unsigned char) = Load[c] : &:r14_5, m13_11 +# 14| r14_7(__attribute((neon_vector_type(8))) unsigned short) = Call[vaddl_u8] : func:r14_2, 0:r14_4, 1:r14_6 +# 14| m14_8(unknown) = ^CallSideEffect : ~m13_10 +# 14| m14_9(unknown) = Chi : total:m13_10, partial:m14_8 +# 14| m14_10(__attribute((neon_vector_type(8))) unsigned short) = Store[#return] : &:r14_1, r14_7 +# 12| v12_11(void) = ReturnIndirection[b] : &:r12_9, m12_10 +# 12| r12_12(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] : +# 12| v12_13(void) = ReturnValue : &:r12_12, m14_10 +# 12| v12_14(void) = AliasedUse : ~m14_9 +# 12| v12_15(void) = ExitFunction : + +# 22| mfloat8x8_t arm_reinterpret(int8x8_t*) +# 22| Block 0 +# 22| v22_1(void) = EnterFunction : +# 22| m22_2(unknown) = AliasedDefinition : +# 22| m22_3(unknown) = InitializeNonLocal : +# 22| m22_4(unknown) = Chi : total:m22_2, partial:m22_3 +# 22| r22_5(glval) = VariableAddress[a] : +# 22| m22_6(char *) = InitializeParameter[a] : &:r22_5 +# 22| r22_7(char *) = Load[a] : &:r22_5, m22_6 +# 22| m22_8(unknown) = InitializeIndirection[a] : &:r22_7 +# 23| r23_1(glval<__mfp8>) = VariableAddress[#return] : +# 23| r23_2(glval) = FunctionAddress[vreinterpret_mf8_s8] : +# 23| r23_3(glval) = VariableAddress[a] : +# 23| r23_4(char *) = Load[a] : &:r23_3, m22_6 +# 23| r23_5(char) = Load[?] : &:r23_4, ~m22_8 +# 23| r23_6(__mfp8) = Call[vreinterpret_mf8_s8] : func:r23_2, 0:r23_5 +# 23| m23_7(unknown) = ^CallSideEffect : ~m22_4 +# 23| m23_8(unknown) = Chi : total:m22_4, partial:m23_7 +# 23| m23_9(__mfp8) = Store[#return] : &:r23_1, r23_6 +# 22| v22_9(void) = ReturnIndirection[a] : &:r22_7, m22_8 +# 22| r22_10(glval<__mfp8>) = VariableAddress[#return] : +# 22| v22_11(void) = ReturnValue : &:r22_10, m23_9 +# 22| v22_12(void) = AliasedUse : ~m23_8 +# 22| v22_13(void) = ExitFunction : + +arm_sve.cpp: +# 8| svuint8x2_t arm_sel(svcount_t, svuint8x2_t, svuint8x2_t*) +# 8| Block 0 +# 8| v8_1(void) = EnterFunction : +# 8| m8_2(unknown) = AliasedDefinition : +# 8| m8_3(unknown) = InitializeNonLocal : +# 8| m8_4(unknown) = Chi : total:m8_2, partial:m8_3 +# 8| r8_5(glval<__SVCount_t>) = VariableAddress[a] : +# 8| m8_6(__SVCount_t) = InitializeParameter[a] : &:r8_5 +# 8| r8_7(glval<__edg_scalable_vector_type__(unsigned char, 2)>) = VariableAddress[b] : +# 8| m8_8(__edg_scalable_vector_type__(unsigned char, 2)) = InitializeParameter[b] : &:r8_7 +# 8| r8_9(glval<__edg_scalable_vector_type__(unsigned char, 2) *>) = VariableAddress[c] : +# 8| m8_10(__edg_scalable_vector_type__(unsigned char, 2) *) = InitializeParameter[c] : &:r8_9 +# 8| r8_11(__edg_scalable_vector_type__(unsigned char, 2) *) = Load[c] : &:r8_9, m8_10 +# 8| m8_12(unknown) = InitializeIndirection[c] : &:r8_11 +# 9| r9_1(glval<__edg_scalable_vector_type__(unsigned char, 2)>) = VariableAddress[d] : +# 9| r9_2(glval) = FunctionAddress[svsel_u8_x2] : +# 9| r9_3(glval<__SVCount_t>) = VariableAddress[a] : +# 9| r9_4(__SVCount_t) = Load[a] : &:r9_3, m8_6 +# 9| r9_5(glval<__edg_scalable_vector_type__(unsigned char, 2)>) = VariableAddress[b] : +# 9| r9_6(__edg_scalable_vector_type__(unsigned char, 2)) = Load[b] : &:r9_5, m8_8 +# 9| r9_7(glval<__edg_scalable_vector_type__(unsigned char, 2) *>) = VariableAddress[c] : +# 9| r9_8(__edg_scalable_vector_type__(unsigned char, 2) *) = Load[c] : &:r9_7, m8_10 +# 9| r9_9(__edg_scalable_vector_type__(unsigned char, 2)) = Load[?] : &:r9_8, ~m8_12 +# 9| r9_10(__edg_scalable_vector_type__(unsigned char, 2)) = Call[svsel_u8_x2] : func:r9_2, 0:r9_4, 1:r9_6, 2:r9_9 +# 9| m9_11(unknown) = ^CallSideEffect : ~m8_4 +# 9| m9_12(unknown) = Chi : total:m8_4, partial:m9_11 +# 9| m9_13(__edg_scalable_vector_type__(unsigned char, 2)) = Store[d] : &:r9_1, r9_10 +# 10| r10_1(glval<__edg_scalable_vector_type__(unsigned char, 2)>) = VariableAddress[#return] : +# 10| r10_2(glval<__edg_scalable_vector_type__(unsigned char, 2)>) = VariableAddress[d] : +# 10| r10_3(__edg_scalable_vector_type__(unsigned char, 2)) = Load[d] : &:r10_2, m9_13 +# 10| m10_4(__edg_scalable_vector_type__(unsigned char, 2)) = Store[#return] : &:r10_1, r10_3 +# 8| v8_13(void) = ReturnIndirection[c] : &:r8_11, m8_12 +# 8| r8_14(glval<__edg_scalable_vector_type__(unsigned char, 2)>) = VariableAddress[#return] : +# 8| v8_15(void) = ReturnValue : &:r8_14, m10_4 +# 8| v8_16(void) = AliasedUse : ~m9_12 +# 8| v8_17(void) = ExitFunction : + bad_asts.cpp: # 9| int Bad::S::MemberFunction(int) # 9| Block 0 @@ -804,14 +929,13 @@ coroutines.cpp: #-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m0_15 #-----| m0_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_11 #-----| m0_18(unknown) = Chi : total:m0_15, partial:m0_17 -# 88| v88_1(void) = NoOp : -#-----| v0_19(void) = NoOp : -#-----| Goto (back edge) -> Block 3 +#-----| C++ Exception -> Block 4 +#-----| Goto -> Block 3 # 87| Block 2 # 87| r87_42(suspend_always *) = CopyValue : r87_27 # 87| r87_43(glval) = CopyValue : r87_42 -#-----| r0_20(glval) = Convert : r87_43 +#-----| r0_19(glval) = Convert : r87_43 # 87| r87_44(glval) = FunctionAddress[await_suspend] : # 87| r87_45(glval>) = VariableAddress[#temp87:20] : # 87| m87_46(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_45 @@ -827,87 +951,116 @@ coroutines.cpp: # 87| m87_56(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_45 # 87| m87_57(unknown) = Chi : total:m87_54, partial:m87_56 # 87| r87_58(coroutine_handle) = Load[#temp87:20] : &:r87_45, ~m87_57 -# 87| v87_59(void) = Call[await_suspend] : func:r87_44, this:r0_20, 0:r87_58 +# 87| v87_59(void) = Call[await_suspend] : func:r87_44, this:r0_19, 0:r87_58 # 87| m87_60(unknown) = ^CallSideEffect : ~m87_57 # 87| m87_61(unknown) = Chi : total:m87_57, partial:m87_60 -#-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m87_61 +#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m87_61 #-----| Goto -> Block 1 -#-----| Block 3 -#-----| v0_22(void) = NoOp : -# 87| r87_62(glval) = VariableAddress[(unnamed local variable)] : -# 87| r87_63(glval) = FunctionAddress[final_suspend] : -# 87| r87_64(suspend_always) = Call[final_suspend] : func:r87_63, this:r87_62 -# 87| m87_65(unknown) = ^CallSideEffect : ~m0_18 -# 87| m87_66(unknown) = Chi : total:m0_18, partial:m87_65 -# 87| v87_67(void) = ^IndirectReadSideEffect[-1] : &:r87_62, ~m87_66 -# 87| m87_68(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_62 -# 87| m87_69(unknown) = Chi : total:m87_66, partial:m87_68 -#-----| r0_23(glval) = VariableAddress[#temp0:0] : -# 87| r87_70(glval) = VariableAddress[#temp87:20] : -# 87| r87_71(glval) = VariableAddress[(unnamed local variable)] : -# 87| r87_72(glval) = FunctionAddress[final_suspend] : -# 87| r87_73(suspend_always) = Call[final_suspend] : func:r87_72, this:r87_71 -# 87| m87_74(unknown) = ^CallSideEffect : ~m87_69 -# 87| m87_75(unknown) = Chi : total:m87_69, partial:m87_74 -# 87| v87_76(void) = ^IndirectReadSideEffect[-1] : &:r87_71, ~m87_75 -# 87| m87_77(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_71 -# 87| m87_78(unknown) = Chi : total:m87_75, partial:m87_77 -# 87| m87_79(suspend_always) = Store[#temp87:20] : &:r87_70, r87_73 -# 87| m87_80(unknown) = Chi : total:m87_78, partial:m87_79 -# 87| r87_81(suspend_always *) = CopyValue : r87_70 -# 87| m87_82(suspend_always *) = Store[#temp0:0] : &:r0_23, r87_81 -#-----| r0_24(suspend_always *) = Load[#temp0:0] : &:r0_23, m87_82 -# 87| r87_83(glval) = CopyValue : r0_24 -# 87| r87_84(glval) = Convert : r87_83 -# 87| r87_85(glval) = FunctionAddress[await_ready] : -# 87| r87_86(bool) = Call[await_ready] : func:r87_85, this:r87_84 -# 87| m87_87(unknown) = ^CallSideEffect : ~m87_80 -# 87| m87_88(unknown) = Chi : total:m87_80, partial:m87_87 -# 87| v87_89(void) = ^IndirectReadSideEffect[-1] : &:r87_84, ~m87_88 -#-----| v0_25(void) = ConditionalBranch : r87_86 -#-----| False -> Block 5 -#-----| True -> Block 4 +# 88| Block 3 +# 88| v88_1(void) = NoOp : +#-----| v0_21(void) = NoOp : +#-----| Goto (back edge) -> Block 6 -# 87| Block 4 -# 87| m87_90(unknown) = Phi : from 3:~m87_88, from 5:~m87_120 -# 87| r87_91(suspend_always *) = CopyValue : r87_81 -# 87| r87_92(glval) = CopyValue : r87_91 -#-----| r0_26(glval) = Convert : r87_92 -# 87| r87_93(glval) = FunctionAddress[await_resume] : -# 87| v87_94(void) = Call[await_resume] : func:r87_93, this:r0_26 -# 87| m87_95(unknown) = ^CallSideEffect : ~m87_90 -# 87| m87_96(unknown) = Chi : total:m87_90, partial:m87_95 -#-----| v0_27(void) = ^IndirectReadSideEffect[-1] : &:r0_26, ~m87_96 -# 87| r87_97(glval) = VariableAddress[#return] : -# 87| v87_98(void) = ReturnValue : &:r87_97, ~m87_96 -# 87| v87_99(void) = AliasedUse : ~m87_96 -# 87| v87_100(void) = ExitFunction : +#-----| Block 4 +#-----| v0_22(void) = CatchAny : +#-----| r0_23(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_24(bool) = Load[(unnamed local variable)] : &:r0_23, m0_7 +#-----| r0_25(bool) = LogicalNot : r0_24 +#-----| v0_26(void) = ConditionalBranch : r0_25 +#-----| False -> Block 5 +#-----| True -> Block 9 # 87| Block 5 -# 87| r87_101(suspend_always *) = CopyValue : r87_81 -# 87| r87_102(glval) = CopyValue : r87_101 -#-----| r0_28(glval) = Convert : r87_102 -# 87| r87_103(glval) = FunctionAddress[await_suspend] : -# 87| r87_104(glval>) = VariableAddress[#temp87:20] : -# 87| m87_105(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_104 -# 87| m87_106(unknown) = Chi : total:m87_88, partial:m87_105 -# 87| r87_107(glval) = FunctionAddress[coroutine_handle] : -# 87| r87_108(glval>) = VariableAddress[(unnamed local variable)] : -# 87| r87_109(glval>) = Convert : r87_108 -# 87| r87_110(coroutine_handle &) = CopyValue : r87_109 -# 87| v87_111(void) = Call[coroutine_handle] : func:r87_107, this:r87_104, 0:r87_110 -# 87| m87_112(unknown) = ^CallSideEffect : ~m87_106 -# 87| m87_113(unknown) = Chi : total:m87_106, partial:m87_112 -# 87| v87_114(void) = ^BufferReadSideEffect[0] : &:r87_110, ~m87_113 -# 87| m87_115(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_104 -# 87| m87_116(unknown) = Chi : total:m87_113, partial:m87_115 -# 87| r87_117(coroutine_handle) = Load[#temp87:20] : &:r87_104, ~m87_116 -# 87| v87_118(void) = Call[await_suspend] : func:r87_103, this:r0_28, 0:r87_117 -# 87| m87_119(unknown) = ^CallSideEffect : ~m87_116 -# 87| m87_120(unknown) = Chi : total:m87_116, partial:m87_119 -#-----| v0_29(void) = ^IndirectReadSideEffect[-1] : &:r0_28, ~m87_120 -#-----| Goto -> Block 4 +# 87| r87_62(glval) = VariableAddress[(unnamed local variable)] : +# 87| r87_63(glval) = FunctionAddress[unhandled_exception] : +# 87| v87_64(void) = Call[unhandled_exception] : func:r87_63, this:r87_62 +# 87| m87_65(unknown) = ^CallSideEffect : ~m0_18 +# 87| m87_66(unknown) = Chi : total:m0_18, partial:m87_65 +# 87| v87_67(void) = ^IndirectReadSideEffect[-1] : &:r87_62, ~m87_66 +# 87| m87_68(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_62 +# 87| m87_69(unknown) = Chi : total:m87_66, partial:m87_68 +#-----| Goto -> Block 6 + +#-----| Block 6 +#-----| m0_27(unknown) = Phi : from 3:~m0_18, from 5:~m87_69 +#-----| v0_28(void) = NoOp : +# 87| r87_70(glval) = VariableAddress[(unnamed local variable)] : +# 87| r87_71(glval) = FunctionAddress[final_suspend] : +# 87| r87_72(suspend_always) = Call[final_suspend] : func:r87_71, this:r87_70 +# 87| m87_73(unknown) = ^CallSideEffect : ~m0_27 +# 87| m87_74(unknown) = Chi : total:m0_27, partial:m87_73 +# 87| v87_75(void) = ^IndirectReadSideEffect[-1] : &:r87_70, ~m87_74 +# 87| m87_76(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_70 +# 87| m87_77(unknown) = Chi : total:m87_74, partial:m87_76 +#-----| r0_29(glval) = VariableAddress[#temp0:0] : +# 87| r87_78(glval) = VariableAddress[#temp87:20] : +# 87| r87_79(glval) = VariableAddress[(unnamed local variable)] : +# 87| r87_80(glval) = FunctionAddress[final_suspend] : +# 87| r87_81(suspend_always) = Call[final_suspend] : func:r87_80, this:r87_79 +# 87| m87_82(unknown) = ^CallSideEffect : ~m87_77 +# 87| m87_83(unknown) = Chi : total:m87_77, partial:m87_82 +# 87| v87_84(void) = ^IndirectReadSideEffect[-1] : &:r87_79, ~m87_83 +# 87| m87_85(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_79 +# 87| m87_86(unknown) = Chi : total:m87_83, partial:m87_85 +# 87| m87_87(suspend_always) = Store[#temp87:20] : &:r87_78, r87_81 +# 87| m87_88(unknown) = Chi : total:m87_86, partial:m87_87 +# 87| r87_89(suspend_always *) = CopyValue : r87_78 +# 87| m87_90(suspend_always *) = Store[#temp0:0] : &:r0_29, r87_89 +#-----| r0_30(suspend_always *) = Load[#temp0:0] : &:r0_29, m87_90 +# 87| r87_91(glval) = CopyValue : r0_30 +# 87| r87_92(glval) = Convert : r87_91 +# 87| r87_93(glval) = FunctionAddress[await_ready] : +# 87| r87_94(bool) = Call[await_ready] : func:r87_93, this:r87_92 +# 87| m87_95(unknown) = ^CallSideEffect : ~m87_88 +# 87| m87_96(unknown) = Chi : total:m87_88, partial:m87_95 +# 87| v87_97(void) = ^IndirectReadSideEffect[-1] : &:r87_92, ~m87_96 +#-----| v0_31(void) = ConditionalBranch : r87_94 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 87| Block 7 +# 87| m87_98(unknown) = Phi : from 6:~m87_96, from 8:~m87_128 +# 87| r87_99(suspend_always *) = CopyValue : r87_89 +# 87| r87_100(glval) = CopyValue : r87_99 +#-----| r0_32(glval) = Convert : r87_100 +# 87| r87_101(glval) = FunctionAddress[await_resume] : +# 87| v87_102(void) = Call[await_resume] : func:r87_101, this:r0_32 +# 87| m87_103(unknown) = ^CallSideEffect : ~m87_98 +# 87| m87_104(unknown) = Chi : total:m87_98, partial:m87_103 +#-----| v0_33(void) = ^IndirectReadSideEffect[-1] : &:r0_32, ~m87_104 +# 87| r87_105(glval) = VariableAddress[#return] : +# 87| v87_106(void) = ReturnValue : &:r87_105, ~m87_104 +# 87| v87_107(void) = AliasedUse : ~m87_104 +# 87| v87_108(void) = ExitFunction : + +# 87| Block 8 +# 87| r87_109(suspend_always *) = CopyValue : r87_89 +# 87| r87_110(glval) = CopyValue : r87_109 +#-----| r0_34(glval) = Convert : r87_110 +# 87| r87_111(glval) = FunctionAddress[await_suspend] : +# 87| r87_112(glval>) = VariableAddress[#temp87:20] : +# 87| m87_113(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_112 +# 87| m87_114(unknown) = Chi : total:m87_96, partial:m87_113 +# 87| r87_115(glval) = FunctionAddress[coroutine_handle] : +# 87| r87_116(glval>) = VariableAddress[(unnamed local variable)] : +# 87| r87_117(glval>) = Convert : r87_116 +# 87| r87_118(coroutine_handle &) = CopyValue : r87_117 +# 87| v87_119(void) = Call[coroutine_handle] : func:r87_115, this:r87_112, 0:r87_118 +# 87| m87_120(unknown) = ^CallSideEffect : ~m87_114 +# 87| m87_121(unknown) = Chi : total:m87_114, partial:m87_120 +# 87| v87_122(void) = ^BufferReadSideEffect[0] : &:r87_118, ~m87_121 +# 87| m87_123(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_112 +# 87| m87_124(unknown) = Chi : total:m87_121, partial:m87_123 +# 87| r87_125(coroutine_handle) = Load[#temp87:20] : &:r87_112, ~m87_124 +# 87| v87_126(void) = Call[await_suspend] : func:r87_111, this:r0_34, 0:r87_125 +# 87| m87_127(unknown) = ^CallSideEffect : ~m87_124 +# 87| m87_128(unknown) = Chi : total:m87_124, partial:m87_127 +#-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, ~m87_128 +#-----| Goto -> Block 7 + +# 87| Block 9 +# 87| v87_129(void) = Unreached : # 91| co_returnable_value co_return_int(int) # 91| Block 0 @@ -982,14 +1135,13 @@ coroutines.cpp: #-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m0_19 #-----| m0_21(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_15 #-----| m0_22(unknown) = Chi : total:m0_19, partial:m0_21 -# 92| v92_3(void) = NoOp : -#-----| v0_23(void) = NoOp : -#-----| Goto (back edge) -> Block 3 +#-----| C++ Exception -> Block 4 +#-----| Goto -> Block 3 # 91| Block 2 # 91| r91_44(suspend_always *) = CopyValue : r91_29 # 91| r91_45(glval) = CopyValue : r91_44 -#-----| r0_24(glval) = Convert : r91_45 +#-----| r0_23(glval) = Convert : r91_45 # 91| r91_46(glval) = FunctionAddress[await_suspend] : # 91| r91_47(glval>) = VariableAddress[#temp91:21] : # 91| m91_48(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_47 @@ -1005,87 +1157,116 @@ coroutines.cpp: # 91| m91_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_47 # 91| m91_59(unknown) = Chi : total:m91_56, partial:m91_58 # 91| r91_60(coroutine_handle) = Load[#temp91:21] : &:r91_47, ~m91_59 -# 91| v91_61(void) = Call[await_suspend] : func:r91_46, this:r0_24, 0:r91_60 +# 91| v91_61(void) = Call[await_suspend] : func:r91_46, this:r0_23, 0:r91_60 # 91| m91_62(unknown) = ^CallSideEffect : ~m91_59 # 91| m91_63(unknown) = Chi : total:m91_59, partial:m91_62 -#-----| v0_25(void) = ^IndirectReadSideEffect[-1] : &:r0_24, ~m91_63 +#-----| v0_24(void) = ^IndirectReadSideEffect[-1] : &:r0_23, ~m91_63 #-----| Goto -> Block 1 -#-----| Block 3 -#-----| v0_26(void) = NoOp : -# 91| r91_64(glval) = VariableAddress[(unnamed local variable)] : -# 91| r91_65(glval) = FunctionAddress[final_suspend] : -# 91| r91_66(suspend_always) = Call[final_suspend] : func:r91_65, this:r91_64 -# 91| m91_67(unknown) = ^CallSideEffect : ~m0_22 -# 91| m91_68(unknown) = Chi : total:m0_22, partial:m91_67 -# 91| v91_69(void) = ^IndirectReadSideEffect[-1] : &:r91_64, ~m91_68 -# 91| m91_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_64 -# 91| m91_71(unknown) = Chi : total:m91_68, partial:m91_70 -#-----| r0_27(glval) = VariableAddress[#temp0:0] : -# 91| r91_72(glval) = VariableAddress[#temp91:21] : -# 91| r91_73(glval) = VariableAddress[(unnamed local variable)] : -# 91| r91_74(glval) = FunctionAddress[final_suspend] : -# 91| r91_75(suspend_always) = Call[final_suspend] : func:r91_74, this:r91_73 -# 91| m91_76(unknown) = ^CallSideEffect : ~m91_71 -# 91| m91_77(unknown) = Chi : total:m91_71, partial:m91_76 -# 91| v91_78(void) = ^IndirectReadSideEffect[-1] : &:r91_73, ~m91_77 -# 91| m91_79(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_73 -# 91| m91_80(unknown) = Chi : total:m91_77, partial:m91_79 -# 91| m91_81(suspend_always) = Store[#temp91:21] : &:r91_72, r91_75 -# 91| m91_82(unknown) = Chi : total:m91_80, partial:m91_81 -# 91| r91_83(suspend_always *) = CopyValue : r91_72 -# 91| m91_84(suspend_always *) = Store[#temp0:0] : &:r0_27, r91_83 -#-----| r0_28(suspend_always *) = Load[#temp0:0] : &:r0_27, m91_84 -# 91| r91_85(glval) = CopyValue : r0_28 -# 91| r91_86(glval) = Convert : r91_85 -# 91| r91_87(glval) = FunctionAddress[await_ready] : -# 91| r91_88(bool) = Call[await_ready] : func:r91_87, this:r91_86 -# 91| m91_89(unknown) = ^CallSideEffect : ~m91_82 -# 91| m91_90(unknown) = Chi : total:m91_82, partial:m91_89 -# 91| v91_91(void) = ^IndirectReadSideEffect[-1] : &:r91_86, ~m91_90 -#-----| v0_29(void) = ConditionalBranch : r91_88 -#-----| False -> Block 5 -#-----| True -> Block 4 +# 92| Block 3 +# 92| v92_3(void) = NoOp : +#-----| v0_25(void) = NoOp : +#-----| Goto (back edge) -> Block 6 -# 91| Block 4 -# 91| m91_92(unknown) = Phi : from 3:~m91_90, from 5:~m91_122 -# 91| r91_93(suspend_always *) = CopyValue : r91_83 -# 91| r91_94(glval) = CopyValue : r91_93 -#-----| r0_30(glval) = Convert : r91_94 -# 91| r91_95(glval) = FunctionAddress[await_resume] : -# 91| v91_96(void) = Call[await_resume] : func:r91_95, this:r0_30 -# 91| m91_97(unknown) = ^CallSideEffect : ~m91_92 -# 91| m91_98(unknown) = Chi : total:m91_92, partial:m91_97 -#-----| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_30, ~m91_98 -# 91| r91_99(glval) = VariableAddress[#return] : -# 91| v91_100(void) = ReturnValue : &:r91_99, ~m91_98 -# 91| v91_101(void) = AliasedUse : ~m91_98 -# 91| v91_102(void) = ExitFunction : +#-----| Block 4 +#-----| v0_26(void) = CatchAny : +#-----| r0_27(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_28(bool) = Load[(unnamed local variable)] : &:r0_27, m0_11 +#-----| r0_29(bool) = LogicalNot : r0_28 +#-----| v0_30(void) = ConditionalBranch : r0_29 +#-----| False -> Block 5 +#-----| True -> Block 9 # 91| Block 5 -# 91| r91_103(suspend_always *) = CopyValue : r91_83 -# 91| r91_104(glval) = CopyValue : r91_103 -#-----| r0_32(glval) = Convert : r91_104 -# 91| r91_105(glval) = FunctionAddress[await_suspend] : -# 91| r91_106(glval>) = VariableAddress[#temp91:21] : -# 91| m91_107(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_106 -# 91| m91_108(unknown) = Chi : total:m91_90, partial:m91_107 -# 91| r91_109(glval) = FunctionAddress[coroutine_handle] : -# 91| r91_110(glval>) = VariableAddress[(unnamed local variable)] : -# 91| r91_111(glval>) = Convert : r91_110 -# 91| r91_112(coroutine_handle &) = CopyValue : r91_111 -# 91| v91_113(void) = Call[coroutine_handle] : func:r91_109, this:r91_106, 0:r91_112 -# 91| m91_114(unknown) = ^CallSideEffect : ~m91_108 -# 91| m91_115(unknown) = Chi : total:m91_108, partial:m91_114 -# 91| v91_116(void) = ^BufferReadSideEffect[0] : &:r91_112, ~m91_115 -# 91| m91_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_106 -# 91| m91_118(unknown) = Chi : total:m91_115, partial:m91_117 -# 91| r91_119(coroutine_handle) = Load[#temp91:21] : &:r91_106, ~m91_118 -# 91| v91_120(void) = Call[await_suspend] : func:r91_105, this:r0_32, 0:r91_119 -# 91| m91_121(unknown) = ^CallSideEffect : ~m91_118 -# 91| m91_122(unknown) = Chi : total:m91_118, partial:m91_121 -#-----| v0_33(void) = ^IndirectReadSideEffect[-1] : &:r0_32, ~m91_122 -#-----| Goto -> Block 4 +# 91| r91_64(glval) = VariableAddress[(unnamed local variable)] : +# 91| r91_65(glval) = FunctionAddress[unhandled_exception] : +# 91| v91_66(void) = Call[unhandled_exception] : func:r91_65, this:r91_64 +# 91| m91_67(unknown) = ^CallSideEffect : ~m0_22 +# 91| m91_68(unknown) = Chi : total:m0_22, partial:m91_67 +# 91| v91_69(void) = ^IndirectReadSideEffect[-1] : &:r91_64, ~m91_68 +# 91| m91_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_64 +# 91| m91_71(unknown) = Chi : total:m91_68, partial:m91_70 +#-----| Goto -> Block 6 + +#-----| Block 6 +#-----| m0_31(unknown) = Phi : from 3:~m0_22, from 5:~m91_71 +#-----| v0_32(void) = NoOp : +# 91| r91_72(glval) = VariableAddress[(unnamed local variable)] : +# 91| r91_73(glval) = FunctionAddress[final_suspend] : +# 91| r91_74(suspend_always) = Call[final_suspend] : func:r91_73, this:r91_72 +# 91| m91_75(unknown) = ^CallSideEffect : ~m0_31 +# 91| m91_76(unknown) = Chi : total:m0_31, partial:m91_75 +# 91| v91_77(void) = ^IndirectReadSideEffect[-1] : &:r91_72, ~m91_76 +# 91| m91_78(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_72 +# 91| m91_79(unknown) = Chi : total:m91_76, partial:m91_78 +#-----| r0_33(glval) = VariableAddress[#temp0:0] : +# 91| r91_80(glval) = VariableAddress[#temp91:21] : +# 91| r91_81(glval) = VariableAddress[(unnamed local variable)] : +# 91| r91_82(glval) = FunctionAddress[final_suspend] : +# 91| r91_83(suspend_always) = Call[final_suspend] : func:r91_82, this:r91_81 +# 91| m91_84(unknown) = ^CallSideEffect : ~m91_79 +# 91| m91_85(unknown) = Chi : total:m91_79, partial:m91_84 +# 91| v91_86(void) = ^IndirectReadSideEffect[-1] : &:r91_81, ~m91_85 +# 91| m91_87(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_81 +# 91| m91_88(unknown) = Chi : total:m91_85, partial:m91_87 +# 91| m91_89(suspend_always) = Store[#temp91:21] : &:r91_80, r91_83 +# 91| m91_90(unknown) = Chi : total:m91_88, partial:m91_89 +# 91| r91_91(suspend_always *) = CopyValue : r91_80 +# 91| m91_92(suspend_always *) = Store[#temp0:0] : &:r0_33, r91_91 +#-----| r0_34(suspend_always *) = Load[#temp0:0] : &:r0_33, m91_92 +# 91| r91_93(glval) = CopyValue : r0_34 +# 91| r91_94(glval) = Convert : r91_93 +# 91| r91_95(glval) = FunctionAddress[await_ready] : +# 91| r91_96(bool) = Call[await_ready] : func:r91_95, this:r91_94 +# 91| m91_97(unknown) = ^CallSideEffect : ~m91_90 +# 91| m91_98(unknown) = Chi : total:m91_90, partial:m91_97 +# 91| v91_99(void) = ^IndirectReadSideEffect[-1] : &:r91_94, ~m91_98 +#-----| v0_35(void) = ConditionalBranch : r91_96 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 91| Block 7 +# 91| m91_100(unknown) = Phi : from 6:~m91_98, from 8:~m91_130 +# 91| r91_101(suspend_always *) = CopyValue : r91_91 +# 91| r91_102(glval) = CopyValue : r91_101 +#-----| r0_36(glval) = Convert : r91_102 +# 91| r91_103(glval) = FunctionAddress[await_resume] : +# 91| v91_104(void) = Call[await_resume] : func:r91_103, this:r0_36 +# 91| m91_105(unknown) = ^CallSideEffect : ~m91_100 +# 91| m91_106(unknown) = Chi : total:m91_100, partial:m91_105 +#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m91_106 +# 91| r91_107(glval) = VariableAddress[#return] : +# 91| v91_108(void) = ReturnValue : &:r91_107, ~m91_106 +# 91| v91_109(void) = AliasedUse : ~m91_106 +# 91| v91_110(void) = ExitFunction : + +# 91| Block 8 +# 91| r91_111(suspend_always *) = CopyValue : r91_91 +# 91| r91_112(glval) = CopyValue : r91_111 +#-----| r0_38(glval) = Convert : r91_112 +# 91| r91_113(glval) = FunctionAddress[await_suspend] : +# 91| r91_114(glval>) = VariableAddress[#temp91:21] : +# 91| m91_115(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_114 +# 91| m91_116(unknown) = Chi : total:m91_98, partial:m91_115 +# 91| r91_117(glval) = FunctionAddress[coroutine_handle] : +# 91| r91_118(glval>) = VariableAddress[(unnamed local variable)] : +# 91| r91_119(glval>) = Convert : r91_118 +# 91| r91_120(coroutine_handle &) = CopyValue : r91_119 +# 91| v91_121(void) = Call[coroutine_handle] : func:r91_117, this:r91_114, 0:r91_120 +# 91| m91_122(unknown) = ^CallSideEffect : ~m91_116 +# 91| m91_123(unknown) = Chi : total:m91_116, partial:m91_122 +# 91| v91_124(void) = ^BufferReadSideEffect[0] : &:r91_120, ~m91_123 +# 91| m91_125(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_114 +# 91| m91_126(unknown) = Chi : total:m91_123, partial:m91_125 +# 91| r91_127(coroutine_handle) = Load[#temp91:21] : &:r91_114, ~m91_126 +# 91| v91_128(void) = Call[await_suspend] : func:r91_113, this:r0_38, 0:r91_127 +# 91| m91_129(unknown) = ^CallSideEffect : ~m91_126 +# 91| m91_130(unknown) = Chi : total:m91_126, partial:m91_129 +#-----| v0_39(void) = ^IndirectReadSideEffect[-1] : &:r0_38, ~m91_130 +#-----| Goto -> Block 7 + +# 91| Block 9 +# 91| v91_131(void) = Unreached : # 95| co_returnable_void co_yield_value_void(int) # 95| Block 0 @@ -1137,61 +1318,36 @@ coroutines.cpp: #-----| True -> Block 1 #-----| Block 1 -#-----| m0_8(unknown) = Phi : from 0:~m95_36, from 2:~m95_63 -#-----| r0_9(bool) = Constant[1] : -#-----| r0_10(glval) = VariableAddress[(unnamed local variable)] : -#-----| m0_11(bool) = Store[(unnamed local variable)] : &:r0_10, r0_9 -# 95| r95_38(suspend_always *) = CopyValue : r95_29 -# 95| r95_39(glval) = CopyValue : r95_38 -#-----| r0_12(glval) = Convert : r95_39 -# 95| r95_40(glval) = FunctionAddress[await_resume] : -# 95| v95_41(void) = Call[await_resume] : func:r95_40, this:r0_12 -# 95| m95_42(unknown) = ^CallSideEffect : ~m0_8 -# 95| m95_43(unknown) = Chi : total:m0_8, partial:m95_42 -#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m95_43 -#-----| v0_14(void) = CopyValue : v95_41 -# 96| r96_1(glval) = VariableAddress[(unnamed local variable)] : -# 96| r96_2(glval) = FunctionAddress[yield_value] : -# 96| r96_3(glval) = VariableAddress[i] : -# 96| r96_4(int) = Load[i] : &:r96_3, m0_4 -# 96| r96_5(suspend_always) = Call[yield_value] : func:r96_2, this:r96_1, 0:r96_4 -# 96| m96_6(unknown) = ^CallSideEffect : ~m95_43 -# 96| m96_7(unknown) = Chi : total:m95_43, partial:m96_6 -# 96| v96_8(void) = ^IndirectReadSideEffect[-1] : &:r96_1, ~m96_7 -# 96| m96_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_1 -# 96| m96_10(unknown) = Chi : total:m96_7, partial:m96_9 -#-----| r0_15(glval) = VariableAddress[#temp0:0] : -# 96| r96_11(glval) = VariableAddress[#temp96:13] : -# 96| r96_12(glval) = VariableAddress[(unnamed local variable)] : -# 96| r96_13(glval) = FunctionAddress[yield_value] : -# 96| r96_14(glval) = VariableAddress[i] : -# 96| r96_15(int) = Load[i] : &:r96_14, m0_4 -# 96| r96_16(suspend_always) = Call[yield_value] : func:r96_13, this:r96_12, 0:r96_15 -# 96| m96_17(unknown) = ^CallSideEffect : ~m96_10 -# 96| m96_18(unknown) = Chi : total:m96_10, partial:m96_17 -# 96| v96_19(void) = ^IndirectReadSideEffect[-1] : &:r96_12, ~m96_18 -# 96| m96_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_12 -# 96| m96_21(unknown) = Chi : total:m96_18, partial:m96_20 -# 96| m96_22(suspend_always) = Store[#temp96:13] : &:r96_11, r96_16 -# 96| m96_23(unknown) = Chi : total:m96_21, partial:m96_22 -# 96| r96_24(suspend_always *) = CopyValue : r96_11 -# 96| m96_25(suspend_always *) = Store[#temp0:0] : &:r0_15, r96_24 -#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_15, m96_25 -# 96| r96_26(glval) = CopyValue : r0_16 -# 96| r96_27(glval) = Convert : r96_26 -# 96| r96_28(glval) = FunctionAddress[await_ready] : -# 96| r96_29(bool) = Call[await_ready] : func:r96_28, this:r96_27 -# 96| m96_30(unknown) = ^CallSideEffect : ~m96_23 -# 96| m96_31(unknown) = Chi : total:m96_23, partial:m96_30 -# 96| v96_32(void) = ^IndirectReadSideEffect[-1] : &:r96_27, ~m96_31 -# 96| v96_33(void) = ConditionalBranch : r96_29 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| m0_8(unknown) = Phi : from 0:~m95_36, from 2:~m95_63 +#-----| r0_9(bool) = Constant[1] : +#-----| r0_10(glval) = VariableAddress[(unnamed local variable)] : +#-----| m0_11(bool) = Store[(unnamed local variable)] : &:r0_10, r0_9 +# 95| r95_38(suspend_always *) = CopyValue : r95_29 +# 95| r95_39(glval) = CopyValue : r95_38 +#-----| r0_12(glval) = Convert : r95_39 +# 95| r95_40(glval) = FunctionAddress[await_resume] : +# 95| v95_41(void) = Call[await_resume] : func:r95_40, this:r0_12 +# 95| m95_42(unknown) = ^CallSideEffect : ~m0_8 +# 95| m95_43(unknown) = Chi : total:m0_8, partial:m95_42 +#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m95_43 +#-----| v0_14(void) = CopyValue : v95_41 +# 96| r96_1(glval) = VariableAddress[(unnamed local variable)] : +# 96| r96_2(glval) = FunctionAddress[yield_value] : +# 96| r96_3(glval) = VariableAddress[i] : +# 96| r96_4(int) = Load[i] : &:r96_3, m0_4 +# 96| r96_5(suspend_always) = Call[yield_value] : func:r96_2, this:r96_1, 0:r96_4 +# 96| m96_6(unknown) = ^CallSideEffect : ~m95_43 +# 96| m96_7(unknown) = Chi : total:m95_43, partial:m96_6 +# 96| v96_8(void) = ^IndirectReadSideEffect[-1] : &:r96_1, ~m96_7 +# 96| m96_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_1 +# 96| m96_10(unknown) = Chi : total:m96_7, partial:m96_9 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 3 # 95| Block 2 # 95| r95_44(suspend_always *) = CopyValue : r95_29 # 95| r95_45(glval) = CopyValue : r95_44 -#-----| r0_17(glval) = Convert : r95_45 +#-----| r0_15(glval) = Convert : r95_45 # 95| r95_46(glval) = FunctionAddress[await_suspend] : # 95| r95_47(glval>) = VariableAddress[#temp95:20] : # 95| m95_48(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_47 @@ -1207,14 +1363,47 @@ coroutines.cpp: # 95| m95_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_47 # 95| m95_59(unknown) = Chi : total:m95_56, partial:m95_58 # 95| r95_60(coroutine_handle) = Load[#temp95:20] : &:r95_47, ~m95_59 -# 95| v95_61(void) = Call[await_suspend] : func:r95_46, this:r0_17, 0:r95_60 +# 95| v95_61(void) = Call[await_suspend] : func:r95_46, this:r0_15, 0:r95_60 # 95| m95_62(unknown) = ^CallSideEffect : ~m95_59 # 95| m95_63(unknown) = Chi : total:m95_59, partial:m95_62 -#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m95_63 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m95_63 #-----| Goto -> Block 1 -# 96| Block 3 -# 96| m96_34(unknown) = Phi : from 1:~m96_31, from 4:~m96_60 +#-----| Block 3 +#-----| r0_17(glval) = VariableAddress[#temp0:0] : +# 96| r96_11(glval) = VariableAddress[#temp96:13] : +# 96| r96_12(glval) = VariableAddress[(unnamed local variable)] : +# 96| r96_13(glval) = FunctionAddress[yield_value] : +# 96| r96_14(glval) = VariableAddress[i] : +# 96| r96_15(int) = Load[i] : &:r96_14, m0_4 +# 96| r96_16(suspend_always) = Call[yield_value] : func:r96_13, this:r96_12, 0:r96_15 +# 96| m96_17(unknown) = ^CallSideEffect : ~m96_10 +# 96| m96_18(unknown) = Chi : total:m96_10, partial:m96_17 +# 96| v96_19(void) = ^IndirectReadSideEffect[-1] : &:r96_12, ~m96_18 +# 96| m96_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_12 +# 96| m96_21(unknown) = Chi : total:m96_18, partial:m96_20 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 4 + +# 96| Block 4 +# 96| m96_22(suspend_always) = Store[#temp96:13] : &:r96_11, r96_16 +# 96| m96_23(unknown) = Chi : total:m96_21, partial:m96_22 +# 96| r96_24(suspend_always *) = CopyValue : r96_11 +# 96| m96_25(suspend_always *) = Store[#temp0:0] : &:r0_17, r96_24 +#-----| r0_18(suspend_always *) = Load[#temp0:0] : &:r0_17, m96_25 +# 96| r96_26(glval) = CopyValue : r0_18 +# 96| r96_27(glval) = Convert : r96_26 +# 96| r96_28(glval) = FunctionAddress[await_ready] : +# 96| r96_29(bool) = Call[await_ready] : func:r96_28, this:r96_27 +# 96| m96_30(unknown) = ^CallSideEffect : ~m96_23 +# 96| m96_31(unknown) = Chi : total:m96_23, partial:m96_30 +# 96| v96_32(void) = ^IndirectReadSideEffect[-1] : &:r96_27, ~m96_31 +# 96| v96_33(void) = ConditionalBranch : r96_29 +#-----| False -> Block 6 +#-----| True -> Block 5 + +# 96| Block 5 +# 96| m96_34(unknown) = Phi : from 4:~m96_31, from 6:~m96_60 # 96| r96_35(suspend_always *) = CopyValue : r96_24 # 96| r96_36(glval) = CopyValue : r96_35 #-----| r0_19(glval) = Convert : r96_36 @@ -1231,14 +1420,13 @@ coroutines.cpp: #-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m0_25 #-----| m0_27(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_21 #-----| m0_28(unknown) = Chi : total:m0_25, partial:m0_27 -# 97| v97_1(void) = NoOp : -#-----| v0_29(void) = NoOp : -#-----| Goto (back edge) -> Block 5 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 7 -# 96| Block 4 +# 96| Block 6 # 96| r96_41(suspend_always *) = CopyValue : r96_24 # 96| r96_42(glval) = CopyValue : r96_41 -#-----| r0_30(glval) = Convert : r96_42 +#-----| r0_29(glval) = Convert : r96_42 # 96| r96_43(glval) = FunctionAddress[await_suspend] : # 96| r96_44(glval>) = VariableAddress[#temp96:3] : # 96| m96_45(coroutine_handle) = Uninitialized[#temp96:3] : &:r96_44 @@ -1254,87 +1442,117 @@ coroutines.cpp: # 96| m96_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r96_44 # 96| m96_56(unknown) = Chi : total:m96_53, partial:m96_55 # 96| r96_57(coroutine_handle) = Load[#temp96:3] : &:r96_44, ~m96_56 -# 96| v96_58(void) = Call[await_suspend] : func:r96_43, this:r0_30, 0:r96_57 +# 96| v96_58(void) = Call[await_suspend] : func:r96_43, this:r0_29, 0:r96_57 # 96| m96_59(unknown) = ^CallSideEffect : ~m96_56 # 96| m96_60(unknown) = Chi : total:m96_56, partial:m96_59 -#-----| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_30, ~m96_60 -#-----| Goto -> Block 3 +#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_29, ~m96_60 +#-----| Goto -> Block 5 -#-----| Block 5 -#-----| v0_32(void) = NoOp : -# 95| r95_64(glval) = VariableAddress[(unnamed local variable)] : -# 95| r95_65(glval) = FunctionAddress[final_suspend] : -# 95| r95_66(suspend_always) = Call[final_suspend] : func:r95_65, this:r95_64 -# 95| m95_67(unknown) = ^CallSideEffect : ~m0_28 -# 95| m95_68(unknown) = Chi : total:m0_28, partial:m95_67 -# 95| v95_69(void) = ^IndirectReadSideEffect[-1] : &:r95_64, ~m95_68 -# 95| m95_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_64 -# 95| m95_71(unknown) = Chi : total:m95_68, partial:m95_70 -#-----| r0_33(glval) = VariableAddress[#temp0:0] : -# 95| r95_72(glval) = VariableAddress[#temp95:20] : -# 95| r95_73(glval) = VariableAddress[(unnamed local variable)] : -# 95| r95_74(glval) = FunctionAddress[final_suspend] : -# 95| r95_75(suspend_always) = Call[final_suspend] : func:r95_74, this:r95_73 -# 95| m95_76(unknown) = ^CallSideEffect : ~m95_71 -# 95| m95_77(unknown) = Chi : total:m95_71, partial:m95_76 -# 95| v95_78(void) = ^IndirectReadSideEffect[-1] : &:r95_73, ~m95_77 -# 95| m95_79(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_73 -# 95| m95_80(unknown) = Chi : total:m95_77, partial:m95_79 -# 95| m95_81(suspend_always) = Store[#temp95:20] : &:r95_72, r95_75 -# 95| m95_82(unknown) = Chi : total:m95_80, partial:m95_81 -# 95| r95_83(suspend_always *) = CopyValue : r95_72 -# 95| m95_84(suspend_always *) = Store[#temp0:0] : &:r0_33, r95_83 -#-----| r0_34(suspend_always *) = Load[#temp0:0] : &:r0_33, m95_84 -# 95| r95_85(glval) = CopyValue : r0_34 -# 95| r95_86(glval) = Convert : r95_85 -# 95| r95_87(glval) = FunctionAddress[await_ready] : -# 95| r95_88(bool) = Call[await_ready] : func:r95_87, this:r95_86 -# 95| m95_89(unknown) = ^CallSideEffect : ~m95_82 -# 95| m95_90(unknown) = Chi : total:m95_82, partial:m95_89 -# 95| v95_91(void) = ^IndirectReadSideEffect[-1] : &:r95_86, ~m95_90 -#-----| v0_35(void) = ConditionalBranch : r95_88 -#-----| False -> Block 7 -#-----| True -> Block 6 +# 97| Block 7 +# 97| v97_1(void) = NoOp : +#-----| v0_31(void) = NoOp : +#-----| Goto (back edge) -> Block 10 -# 95| Block 6 -# 95| m95_92(unknown) = Phi : from 5:~m95_90, from 7:~m95_122 -# 95| r95_93(suspend_always *) = CopyValue : r95_83 -# 95| r95_94(glval) = CopyValue : r95_93 -#-----| r0_36(glval) = Convert : r95_94 -# 95| r95_95(glval) = FunctionAddress[await_resume] : -# 95| v95_96(void) = Call[await_resume] : func:r95_95, this:r0_36 -# 95| m95_97(unknown) = ^CallSideEffect : ~m95_92 -# 95| m95_98(unknown) = Chi : total:m95_92, partial:m95_97 -#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m95_98 -# 95| r95_99(glval) = VariableAddress[#return] : -# 95| v95_100(void) = ReturnValue : &:r95_99, ~m95_98 -# 95| v95_101(void) = AliasedUse : ~m95_98 -# 95| v95_102(void) = ExitFunction : - -# 95| Block 7 -# 95| r95_103(suspend_always *) = CopyValue : r95_83 -# 95| r95_104(glval) = CopyValue : r95_103 -#-----| r0_38(glval) = Convert : r95_104 -# 95| r95_105(glval) = FunctionAddress[await_suspend] : -# 95| r95_106(glval>) = VariableAddress[#temp95:20] : -# 95| m95_107(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_106 -# 95| m95_108(unknown) = Chi : total:m95_90, partial:m95_107 -# 95| r95_109(glval) = FunctionAddress[coroutine_handle] : -# 95| r95_110(glval>) = VariableAddress[(unnamed local variable)] : -# 95| r95_111(glval>) = Convert : r95_110 -# 95| r95_112(coroutine_handle &) = CopyValue : r95_111 -# 95| v95_113(void) = Call[coroutine_handle] : func:r95_109, this:r95_106, 0:r95_112 -# 95| m95_114(unknown) = ^CallSideEffect : ~m95_108 -# 95| m95_115(unknown) = Chi : total:m95_108, partial:m95_114 -# 95| v95_116(void) = ^BufferReadSideEffect[0] : &:r95_112, ~m95_115 -# 95| m95_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_106 -# 95| m95_118(unknown) = Chi : total:m95_115, partial:m95_117 -# 95| r95_119(coroutine_handle) = Load[#temp95:20] : &:r95_106, ~m95_118 -# 95| v95_120(void) = Call[await_suspend] : func:r95_105, this:r0_38, 0:r95_119 -# 95| m95_121(unknown) = ^CallSideEffect : ~m95_118 -# 95| m95_122(unknown) = Chi : total:m95_118, partial:m95_121 -#-----| v0_39(void) = ^IndirectReadSideEffect[-1] : &:r0_38, ~m95_122 -#-----| Goto -> Block 6 +#-----| Block 8 +#-----| m0_32(unknown) = Phi : from 1:~m96_10, from 3:~m96_21, from 5:~m0_28 +#-----| v0_33(void) = CatchAny : +#-----| r0_34(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_35(bool) = Load[(unnamed local variable)] : &:r0_34, m0_11 +#-----| r0_36(bool) = LogicalNot : r0_35 +#-----| v0_37(void) = ConditionalBranch : r0_36 +#-----| False -> Block 9 +#-----| True -> Block 13 + +# 95| Block 9 +# 95| r95_64(glval) = VariableAddress[(unnamed local variable)] : +# 95| r95_65(glval) = FunctionAddress[unhandled_exception] : +# 95| v95_66(void) = Call[unhandled_exception] : func:r95_65, this:r95_64 +# 95| m95_67(unknown) = ^CallSideEffect : ~m0_32 +# 95| m95_68(unknown) = Chi : total:m0_32, partial:m95_67 +# 95| v95_69(void) = ^IndirectReadSideEffect[-1] : &:r95_64, ~m95_68 +# 95| m95_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_64 +# 95| m95_71(unknown) = Chi : total:m95_68, partial:m95_70 +#-----| Goto -> Block 10 + +#-----| Block 10 +#-----| m0_38(unknown) = Phi : from 7:~m0_28, from 9:~m95_71 +#-----| v0_39(void) = NoOp : +# 95| r95_72(glval) = VariableAddress[(unnamed local variable)] : +# 95| r95_73(glval) = FunctionAddress[final_suspend] : +# 95| r95_74(suspend_always) = Call[final_suspend] : func:r95_73, this:r95_72 +# 95| m95_75(unknown) = ^CallSideEffect : ~m0_38 +# 95| m95_76(unknown) = Chi : total:m0_38, partial:m95_75 +# 95| v95_77(void) = ^IndirectReadSideEffect[-1] : &:r95_72, ~m95_76 +# 95| m95_78(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_72 +# 95| m95_79(unknown) = Chi : total:m95_76, partial:m95_78 +#-----| r0_40(glval) = VariableAddress[#temp0:0] : +# 95| r95_80(glval) = VariableAddress[#temp95:20] : +# 95| r95_81(glval) = VariableAddress[(unnamed local variable)] : +# 95| r95_82(glval) = FunctionAddress[final_suspend] : +# 95| r95_83(suspend_always) = Call[final_suspend] : func:r95_82, this:r95_81 +# 95| m95_84(unknown) = ^CallSideEffect : ~m95_79 +# 95| m95_85(unknown) = Chi : total:m95_79, partial:m95_84 +# 95| v95_86(void) = ^IndirectReadSideEffect[-1] : &:r95_81, ~m95_85 +# 95| m95_87(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_81 +# 95| m95_88(unknown) = Chi : total:m95_85, partial:m95_87 +# 95| m95_89(suspend_always) = Store[#temp95:20] : &:r95_80, r95_83 +# 95| m95_90(unknown) = Chi : total:m95_88, partial:m95_89 +# 95| r95_91(suspend_always *) = CopyValue : r95_80 +# 95| m95_92(suspend_always *) = Store[#temp0:0] : &:r0_40, r95_91 +#-----| r0_41(suspend_always *) = Load[#temp0:0] : &:r0_40, m95_92 +# 95| r95_93(glval) = CopyValue : r0_41 +# 95| r95_94(glval) = Convert : r95_93 +# 95| r95_95(glval) = FunctionAddress[await_ready] : +# 95| r95_96(bool) = Call[await_ready] : func:r95_95, this:r95_94 +# 95| m95_97(unknown) = ^CallSideEffect : ~m95_90 +# 95| m95_98(unknown) = Chi : total:m95_90, partial:m95_97 +# 95| v95_99(void) = ^IndirectReadSideEffect[-1] : &:r95_94, ~m95_98 +#-----| v0_42(void) = ConditionalBranch : r95_96 +#-----| False -> Block 12 +#-----| True -> Block 11 + +# 95| Block 11 +# 95| m95_100(unknown) = Phi : from 10:~m95_98, from 12:~m95_130 +# 95| r95_101(suspend_always *) = CopyValue : r95_91 +# 95| r95_102(glval) = CopyValue : r95_101 +#-----| r0_43(glval) = Convert : r95_102 +# 95| r95_103(glval) = FunctionAddress[await_resume] : +# 95| v95_104(void) = Call[await_resume] : func:r95_103, this:r0_43 +# 95| m95_105(unknown) = ^CallSideEffect : ~m95_100 +# 95| m95_106(unknown) = Chi : total:m95_100, partial:m95_105 +#-----| v0_44(void) = ^IndirectReadSideEffect[-1] : &:r0_43, ~m95_106 +# 95| r95_107(glval) = VariableAddress[#return] : +# 95| v95_108(void) = ReturnValue : &:r95_107, ~m95_106 +# 95| v95_109(void) = AliasedUse : ~m95_106 +# 95| v95_110(void) = ExitFunction : + +# 95| Block 12 +# 95| r95_111(suspend_always *) = CopyValue : r95_91 +# 95| r95_112(glval) = CopyValue : r95_111 +#-----| r0_45(glval) = Convert : r95_112 +# 95| r95_113(glval) = FunctionAddress[await_suspend] : +# 95| r95_114(glval>) = VariableAddress[#temp95:20] : +# 95| m95_115(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_114 +# 95| m95_116(unknown) = Chi : total:m95_98, partial:m95_115 +# 95| r95_117(glval) = FunctionAddress[coroutine_handle] : +# 95| r95_118(glval>) = VariableAddress[(unnamed local variable)] : +# 95| r95_119(glval>) = Convert : r95_118 +# 95| r95_120(coroutine_handle &) = CopyValue : r95_119 +# 95| v95_121(void) = Call[coroutine_handle] : func:r95_117, this:r95_114, 0:r95_120 +# 95| m95_122(unknown) = ^CallSideEffect : ~m95_116 +# 95| m95_123(unknown) = Chi : total:m95_116, partial:m95_122 +# 95| v95_124(void) = ^BufferReadSideEffect[0] : &:r95_120, ~m95_123 +# 95| m95_125(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_114 +# 95| m95_126(unknown) = Chi : total:m95_123, partial:m95_125 +# 95| r95_127(coroutine_handle) = Load[#temp95:20] : &:r95_114, ~m95_126 +# 95| v95_128(void) = Call[await_suspend] : func:r95_113, this:r0_45, 0:r95_127 +# 95| m95_129(unknown) = ^CallSideEffect : ~m95_126 +# 95| m95_130(unknown) = Chi : total:m95_126, partial:m95_129 +#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_45, ~m95_130 +#-----| Goto -> Block 11 + +# 95| Block 13 +# 95| v95_131(void) = Unreached : # 99| co_returnable_value co_yield_value_value(int) # 99| Block 0 @@ -1386,61 +1604,36 @@ coroutines.cpp: #-----| True -> Block 1 #-----| Block 1 -#-----| m0_8(unknown) = Phi : from 0:~m99_36, from 2:~m99_63 -#-----| r0_9(bool) = Constant[1] : -#-----| r0_10(glval) = VariableAddress[(unnamed local variable)] : -#-----| m0_11(bool) = Store[(unnamed local variable)] : &:r0_10, r0_9 -# 99| r99_38(suspend_always *) = CopyValue : r99_29 -# 99| r99_39(glval) = CopyValue : r99_38 -#-----| r0_12(glval) = Convert : r99_39 -# 99| r99_40(glval) = FunctionAddress[await_resume] : -# 99| v99_41(void) = Call[await_resume] : func:r99_40, this:r0_12 -# 99| m99_42(unknown) = ^CallSideEffect : ~m0_8 -# 99| m99_43(unknown) = Chi : total:m0_8, partial:m99_42 -#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m99_43 -#-----| v0_14(void) = CopyValue : v99_41 -# 100| r100_1(glval) = VariableAddress[(unnamed local variable)] : -# 100| r100_2(glval) = FunctionAddress[yield_value] : -# 100| r100_3(glval) = VariableAddress[i] : -# 100| r100_4(int) = Load[i] : &:r100_3, m0_4 -# 100| r100_5(suspend_always) = Call[yield_value] : func:r100_2, this:r100_1, 0:r100_4 -# 100| m100_6(unknown) = ^CallSideEffect : ~m99_43 -# 100| m100_7(unknown) = Chi : total:m99_43, partial:m100_6 -# 100| v100_8(void) = ^IndirectReadSideEffect[-1] : &:r100_1, ~m100_7 -# 100| m100_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_1 -# 100| m100_10(unknown) = Chi : total:m100_7, partial:m100_9 -#-----| r0_15(glval) = VariableAddress[#temp0:0] : -# 100| r100_11(glval) = VariableAddress[#temp100:13] : -# 100| r100_12(glval) = VariableAddress[(unnamed local variable)] : -# 100| r100_13(glval) = FunctionAddress[yield_value] : -# 100| r100_14(glval) = VariableAddress[i] : -# 100| r100_15(int) = Load[i] : &:r100_14, m0_4 -# 100| r100_16(suspend_always) = Call[yield_value] : func:r100_13, this:r100_12, 0:r100_15 -# 100| m100_17(unknown) = ^CallSideEffect : ~m100_10 -# 100| m100_18(unknown) = Chi : total:m100_10, partial:m100_17 -# 100| v100_19(void) = ^IndirectReadSideEffect[-1] : &:r100_12, ~m100_18 -# 100| m100_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_12 -# 100| m100_21(unknown) = Chi : total:m100_18, partial:m100_20 -# 100| m100_22(suspend_always) = Store[#temp100:13] : &:r100_11, r100_16 -# 100| m100_23(unknown) = Chi : total:m100_21, partial:m100_22 -# 100| r100_24(suspend_always *) = CopyValue : r100_11 -# 100| m100_25(suspend_always *) = Store[#temp0:0] : &:r0_15, r100_24 -#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_15, m100_25 -# 100| r100_26(glval) = CopyValue : r0_16 -# 100| r100_27(glval) = Convert : r100_26 -# 100| r100_28(glval) = FunctionAddress[await_ready] : -# 100| r100_29(bool) = Call[await_ready] : func:r100_28, this:r100_27 -# 100| m100_30(unknown) = ^CallSideEffect : ~m100_23 -# 100| m100_31(unknown) = Chi : total:m100_23, partial:m100_30 -# 100| v100_32(void) = ^IndirectReadSideEffect[-1] : &:r100_27, ~m100_31 -# 100| v100_33(void) = ConditionalBranch : r100_29 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| m0_8(unknown) = Phi : from 0:~m99_36, from 2:~m99_63 +#-----| r0_9(bool) = Constant[1] : +#-----| r0_10(glval) = VariableAddress[(unnamed local variable)] : +#-----| m0_11(bool) = Store[(unnamed local variable)] : &:r0_10, r0_9 +# 99| r99_38(suspend_always *) = CopyValue : r99_29 +# 99| r99_39(glval) = CopyValue : r99_38 +#-----| r0_12(glval) = Convert : r99_39 +# 99| r99_40(glval) = FunctionAddress[await_resume] : +# 99| v99_41(void) = Call[await_resume] : func:r99_40, this:r0_12 +# 99| m99_42(unknown) = ^CallSideEffect : ~m0_8 +# 99| m99_43(unknown) = Chi : total:m0_8, partial:m99_42 +#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m99_43 +#-----| v0_14(void) = CopyValue : v99_41 +# 100| r100_1(glval) = VariableAddress[(unnamed local variable)] : +# 100| r100_2(glval) = FunctionAddress[yield_value] : +# 100| r100_3(glval) = VariableAddress[i] : +# 100| r100_4(int) = Load[i] : &:r100_3, m0_4 +# 100| r100_5(suspend_always) = Call[yield_value] : func:r100_2, this:r100_1, 0:r100_4 +# 100| m100_6(unknown) = ^CallSideEffect : ~m99_43 +# 100| m100_7(unknown) = Chi : total:m99_43, partial:m100_6 +# 100| v100_8(void) = ^IndirectReadSideEffect[-1] : &:r100_1, ~m100_7 +# 100| m100_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_1 +# 100| m100_10(unknown) = Chi : total:m100_7, partial:m100_9 +#-----| C++ Exception -> Block 7 +#-----| Goto -> Block 3 # 99| Block 2 # 99| r99_44(suspend_always *) = CopyValue : r99_29 # 99| r99_45(glval) = CopyValue : r99_44 -#-----| r0_17(glval) = Convert : r99_45 +#-----| r0_15(glval) = Convert : r99_45 # 99| r99_46(glval) = FunctionAddress[await_suspend] : # 99| r99_47(glval>) = VariableAddress[#temp99:21] : # 99| m99_48(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_47 @@ -1456,61 +1649,61 @@ coroutines.cpp: # 99| m99_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_47 # 99| m99_59(unknown) = Chi : total:m99_56, partial:m99_58 # 99| r99_60(coroutine_handle) = Load[#temp99:21] : &:r99_47, ~m99_59 -# 99| v99_61(void) = Call[await_suspend] : func:r99_46, this:r0_17, 0:r99_60 +# 99| v99_61(void) = Call[await_suspend] : func:r99_46, this:r0_15, 0:r99_60 # 99| m99_62(unknown) = ^CallSideEffect : ~m99_59 # 99| m99_63(unknown) = Chi : total:m99_59, partial:m99_62 -#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m99_63 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m99_63 #-----| Goto -> Block 1 -# 100| Block 3 -# 100| m100_34(unknown) = Phi : from 1:~m100_31, from 4:~m100_60 -# 100| r100_35(suspend_always *) = CopyValue : r100_24 -# 100| r100_36(glval) = CopyValue : r100_35 -#-----| r0_19(glval) = Convert : r100_36 -# 100| r100_37(glval) = FunctionAddress[await_resume] : -# 100| v100_38(void) = Call[await_resume] : func:r100_37, this:r0_19 -# 100| m100_39(unknown) = ^CallSideEffect : ~m100_34 -# 100| m100_40(unknown) = Chi : total:m100_34, partial:m100_39 -#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m100_40 -#-----| v0_21(void) = NoOp : -# 99| r99_64(glval) = VariableAddress[(unnamed local variable)] : -# 99| r99_65(glval) = FunctionAddress[final_suspend] : -# 99| r99_66(suspend_always) = Call[final_suspend] : func:r99_65, this:r99_64 -# 99| m99_67(unknown) = ^CallSideEffect : ~m100_40 -# 99| m99_68(unknown) = Chi : total:m100_40, partial:m99_67 -# 99| v99_69(void) = ^IndirectReadSideEffect[-1] : &:r99_64, ~m99_68 -# 99| m99_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_64 -# 99| m99_71(unknown) = Chi : total:m99_68, partial:m99_70 -#-----| r0_22(glval) = VariableAddress[#temp0:0] : -# 99| r99_72(glval) = VariableAddress[#temp99:21] : -# 99| r99_73(glval) = VariableAddress[(unnamed local variable)] : -# 99| r99_74(glval) = FunctionAddress[final_suspend] : -# 99| r99_75(suspend_always) = Call[final_suspend] : func:r99_74, this:r99_73 -# 99| m99_76(unknown) = ^CallSideEffect : ~m99_71 -# 99| m99_77(unknown) = Chi : total:m99_71, partial:m99_76 -# 99| v99_78(void) = ^IndirectReadSideEffect[-1] : &:r99_73, ~m99_77 -# 99| m99_79(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_73 -# 99| m99_80(unknown) = Chi : total:m99_77, partial:m99_79 -# 99| m99_81(suspend_always) = Store[#temp99:21] : &:r99_72, r99_75 -# 99| m99_82(unknown) = Chi : total:m99_80, partial:m99_81 -# 99| r99_83(suspend_always *) = CopyValue : r99_72 -# 99| m99_84(suspend_always *) = Store[#temp0:0] : &:r0_22, r99_83 -#-----| r0_23(suspend_always *) = Load[#temp0:0] : &:r0_22, m99_84 -# 99| r99_85(glval) = CopyValue : r0_23 -# 99| r99_86(glval) = Convert : r99_85 -# 99| r99_87(glval) = FunctionAddress[await_ready] : -# 99| r99_88(bool) = Call[await_ready] : func:r99_87, this:r99_86 -# 99| m99_89(unknown) = ^CallSideEffect : ~m99_82 -# 99| m99_90(unknown) = Chi : total:m99_82, partial:m99_89 -# 99| v99_91(void) = ^IndirectReadSideEffect[-1] : &:r99_86, ~m99_90 -#-----| v0_24(void) = ConditionalBranch : r99_88 +#-----| Block 3 +#-----| r0_17(glval) = VariableAddress[#temp0:0] : +# 100| r100_11(glval) = VariableAddress[#temp100:13] : +# 100| r100_12(glval) = VariableAddress[(unnamed local variable)] : +# 100| r100_13(glval) = FunctionAddress[yield_value] : +# 100| r100_14(glval) = VariableAddress[i] : +# 100| r100_15(int) = Load[i] : &:r100_14, m0_4 +# 100| r100_16(suspend_always) = Call[yield_value] : func:r100_13, this:r100_12, 0:r100_15 +# 100| m100_17(unknown) = ^CallSideEffect : ~m100_10 +# 100| m100_18(unknown) = Chi : total:m100_10, partial:m100_17 +# 100| v100_19(void) = ^IndirectReadSideEffect[-1] : &:r100_12, ~m100_18 +# 100| m100_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_12 +# 100| m100_21(unknown) = Chi : total:m100_18, partial:m100_20 +#-----| C++ Exception -> Block 7 +#-----| Goto -> Block 4 + +# 100| Block 4 +# 100| m100_22(suspend_always) = Store[#temp100:13] : &:r100_11, r100_16 +# 100| m100_23(unknown) = Chi : total:m100_21, partial:m100_22 +# 100| r100_24(suspend_always *) = CopyValue : r100_11 +# 100| m100_25(suspend_always *) = Store[#temp0:0] : &:r0_17, r100_24 +#-----| r0_18(suspend_always *) = Load[#temp0:0] : &:r0_17, m100_25 +# 100| r100_26(glval) = CopyValue : r0_18 +# 100| r100_27(glval) = Convert : r100_26 +# 100| r100_28(glval) = FunctionAddress[await_ready] : +# 100| r100_29(bool) = Call[await_ready] : func:r100_28, this:r100_27 +# 100| m100_30(unknown) = ^CallSideEffect : ~m100_23 +# 100| m100_31(unknown) = Chi : total:m100_23, partial:m100_30 +# 100| v100_32(void) = ^IndirectReadSideEffect[-1] : &:r100_27, ~m100_31 +# 100| v100_33(void) = ConditionalBranch : r100_29 #-----| False -> Block 6 #-----| True -> Block 5 -# 100| Block 4 +# 100| Block 5 +# 100| m100_34(unknown) = Phi : from 4:~m100_31, from 6:~m100_60 +# 100| r100_35(suspend_always *) = CopyValue : r100_24 +# 100| r100_36(glval) = CopyValue : r100_35 +#-----| r0_19(glval) = Convert : r100_36 +# 100| r100_37(glval) = FunctionAddress[await_resume] : +# 100| v100_38(void) = Call[await_resume] : func:r100_37, this:r0_19 +# 100| m100_39(unknown) = ^CallSideEffect : ~m100_34 +# 100| m100_40(unknown) = Chi : total:m100_34, partial:m100_39 +#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m100_40 +#-----| Goto -> Block 9 + +# 100| Block 6 # 100| r100_41(suspend_always *) = CopyValue : r100_24 # 100| r100_42(glval) = CopyValue : r100_41 -#-----| r0_25(glval) = Convert : r100_42 +#-----| r0_21(glval) = Convert : r100_42 # 100| r100_43(glval) = FunctionAddress[await_suspend] : # 100| r100_44(glval>) = VariableAddress[#temp100:3] : # 100| m100_45(coroutine_handle) = Uninitialized[#temp100:3] : &:r100_44 @@ -1526,52 +1719,113 @@ coroutines.cpp: # 100| m100_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r100_44 # 100| m100_56(unknown) = Chi : total:m100_53, partial:m100_55 # 100| r100_57(coroutine_handle) = Load[#temp100:3] : &:r100_44, ~m100_56 -# 100| v100_58(void) = Call[await_suspend] : func:r100_43, this:r0_25, 0:r100_57 +# 100| v100_58(void) = Call[await_suspend] : func:r100_43, this:r0_21, 0:r100_57 # 100| m100_59(unknown) = ^CallSideEffect : ~m100_56 # 100| m100_60(unknown) = Chi : total:m100_56, partial:m100_59 -#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_25, ~m100_60 -#-----| Goto -> Block 3 - -# 99| Block 5 -# 99| m99_92(unknown) = Phi : from 3:~m99_90, from 6:~m99_122 -# 99| r99_93(suspend_always *) = CopyValue : r99_83 -# 99| r99_94(glval) = CopyValue : r99_93 -#-----| r0_27(glval) = Convert : r99_94 -# 99| r99_95(glval) = FunctionAddress[await_resume] : -# 99| v99_96(void) = Call[await_resume] : func:r99_95, this:r0_27 -# 99| m99_97(unknown) = ^CallSideEffect : ~m99_92 -# 99| m99_98(unknown) = Chi : total:m99_92, partial:m99_97 -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m99_98 -# 99| r99_99(glval) = VariableAddress[#return] : -# 99| v99_100(void) = ReturnValue : &:r99_99, ~m99_98 -# 99| v99_101(void) = AliasedUse : ~m99_98 -# 99| v99_102(void) = ExitFunction : - -# 99| Block 6 -# 99| r99_103(suspend_always *) = CopyValue : r99_83 -# 99| r99_104(glval) = CopyValue : r99_103 -#-----| r0_29(glval) = Convert : r99_104 -# 99| r99_105(glval) = FunctionAddress[await_suspend] : -# 99| r99_106(glval>) = VariableAddress[#temp99:21] : -# 99| m99_107(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_106 -# 99| m99_108(unknown) = Chi : total:m99_90, partial:m99_107 -# 99| r99_109(glval) = FunctionAddress[coroutine_handle] : -# 99| r99_110(glval>) = VariableAddress[(unnamed local variable)] : -# 99| r99_111(glval>) = Convert : r99_110 -# 99| r99_112(coroutine_handle &) = CopyValue : r99_111 -# 99| v99_113(void) = Call[coroutine_handle] : func:r99_109, this:r99_106, 0:r99_112 -# 99| m99_114(unknown) = ^CallSideEffect : ~m99_108 -# 99| m99_115(unknown) = Chi : total:m99_108, partial:m99_114 -# 99| v99_116(void) = ^BufferReadSideEffect[0] : &:r99_112, ~m99_115 -# 99| m99_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_106 -# 99| m99_118(unknown) = Chi : total:m99_115, partial:m99_117 -# 99| r99_119(coroutine_handle) = Load[#temp99:21] : &:r99_106, ~m99_118 -# 99| v99_120(void) = Call[await_suspend] : func:r99_105, this:r0_29, 0:r99_119 -# 99| m99_121(unknown) = ^CallSideEffect : ~m99_118 -# 99| m99_122(unknown) = Chi : total:m99_118, partial:m99_121 -#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_29, ~m99_122 +#-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m100_60 #-----| Goto -> Block 5 +#-----| Block 7 +#-----| m0_23(unknown) = Phi : from 1:~m100_10, from 3:~m100_21 +#-----| v0_24(void) = CatchAny : +#-----| r0_25(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_26(bool) = Load[(unnamed local variable)] : &:r0_25, m0_11 +#-----| r0_27(bool) = LogicalNot : r0_26 +#-----| v0_28(void) = ConditionalBranch : r0_27 +#-----| False -> Block 8 +#-----| True -> Block 12 + +# 99| Block 8 +# 99| r99_64(glval) = VariableAddress[(unnamed local variable)] : +# 99| r99_65(glval) = FunctionAddress[unhandled_exception] : +# 99| v99_66(void) = Call[unhandled_exception] : func:r99_65, this:r99_64 +# 99| m99_67(unknown) = ^CallSideEffect : ~m0_23 +# 99| m99_68(unknown) = Chi : total:m0_23, partial:m99_67 +# 99| v99_69(void) = ^IndirectReadSideEffect[-1] : &:r99_64, ~m99_68 +# 99| m99_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_64 +# 99| m99_71(unknown) = Chi : total:m99_68, partial:m99_70 +#-----| Goto -> Block 9 + +#-----| Block 9 +#-----| m0_29(unknown) = Phi : from 5:~m100_40, from 8:~m99_71 +#-----| v0_30(void) = NoOp : +# 99| r99_72(glval) = VariableAddress[(unnamed local variable)] : +# 99| r99_73(glval) = FunctionAddress[final_suspend] : +# 99| r99_74(suspend_always) = Call[final_suspend] : func:r99_73, this:r99_72 +# 99| m99_75(unknown) = ^CallSideEffect : ~m0_29 +# 99| m99_76(unknown) = Chi : total:m0_29, partial:m99_75 +# 99| v99_77(void) = ^IndirectReadSideEffect[-1] : &:r99_72, ~m99_76 +# 99| m99_78(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_72 +# 99| m99_79(unknown) = Chi : total:m99_76, partial:m99_78 +#-----| r0_31(glval) = VariableAddress[#temp0:0] : +# 99| r99_80(glval) = VariableAddress[#temp99:21] : +# 99| r99_81(glval) = VariableAddress[(unnamed local variable)] : +# 99| r99_82(glval) = FunctionAddress[final_suspend] : +# 99| r99_83(suspend_always) = Call[final_suspend] : func:r99_82, this:r99_81 +# 99| m99_84(unknown) = ^CallSideEffect : ~m99_79 +# 99| m99_85(unknown) = Chi : total:m99_79, partial:m99_84 +# 99| v99_86(void) = ^IndirectReadSideEffect[-1] : &:r99_81, ~m99_85 +# 99| m99_87(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_81 +# 99| m99_88(unknown) = Chi : total:m99_85, partial:m99_87 +# 99| m99_89(suspend_always) = Store[#temp99:21] : &:r99_80, r99_83 +# 99| m99_90(unknown) = Chi : total:m99_88, partial:m99_89 +# 99| r99_91(suspend_always *) = CopyValue : r99_80 +# 99| m99_92(suspend_always *) = Store[#temp0:0] : &:r0_31, r99_91 +#-----| r0_32(suspend_always *) = Load[#temp0:0] : &:r0_31, m99_92 +# 99| r99_93(glval) = CopyValue : r0_32 +# 99| r99_94(glval) = Convert : r99_93 +# 99| r99_95(glval) = FunctionAddress[await_ready] : +# 99| r99_96(bool) = Call[await_ready] : func:r99_95, this:r99_94 +# 99| m99_97(unknown) = ^CallSideEffect : ~m99_90 +# 99| m99_98(unknown) = Chi : total:m99_90, partial:m99_97 +# 99| v99_99(void) = ^IndirectReadSideEffect[-1] : &:r99_94, ~m99_98 +#-----| v0_33(void) = ConditionalBranch : r99_96 +#-----| False -> Block 11 +#-----| True -> Block 10 + +# 99| Block 10 +# 99| m99_100(unknown) = Phi : from 9:~m99_98, from 11:~m99_130 +# 99| r99_101(suspend_always *) = CopyValue : r99_91 +# 99| r99_102(glval) = CopyValue : r99_101 +#-----| r0_34(glval) = Convert : r99_102 +# 99| r99_103(glval) = FunctionAddress[await_resume] : +# 99| v99_104(void) = Call[await_resume] : func:r99_103, this:r0_34 +# 99| m99_105(unknown) = ^CallSideEffect : ~m99_100 +# 99| m99_106(unknown) = Chi : total:m99_100, partial:m99_105 +#-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, ~m99_106 +# 99| r99_107(glval) = VariableAddress[#return] : +# 99| v99_108(void) = ReturnValue : &:r99_107, ~m99_106 +# 99| v99_109(void) = AliasedUse : ~m99_106 +# 99| v99_110(void) = ExitFunction : + +# 99| Block 11 +# 99| r99_111(suspend_always *) = CopyValue : r99_91 +# 99| r99_112(glval) = CopyValue : r99_111 +#-----| r0_36(glval) = Convert : r99_112 +# 99| r99_113(glval) = FunctionAddress[await_suspend] : +# 99| r99_114(glval>) = VariableAddress[#temp99:21] : +# 99| m99_115(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_114 +# 99| m99_116(unknown) = Chi : total:m99_98, partial:m99_115 +# 99| r99_117(glval) = FunctionAddress[coroutine_handle] : +# 99| r99_118(glval>) = VariableAddress[(unnamed local variable)] : +# 99| r99_119(glval>) = Convert : r99_118 +# 99| r99_120(coroutine_handle &) = CopyValue : r99_119 +# 99| v99_121(void) = Call[coroutine_handle] : func:r99_117, this:r99_114, 0:r99_120 +# 99| m99_122(unknown) = ^CallSideEffect : ~m99_116 +# 99| m99_123(unknown) = Chi : total:m99_116, partial:m99_122 +# 99| v99_124(void) = ^BufferReadSideEffect[0] : &:r99_120, ~m99_123 +# 99| m99_125(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_114 +# 99| m99_126(unknown) = Chi : total:m99_123, partial:m99_125 +# 99| r99_127(coroutine_handle) = Load[#temp99:21] : &:r99_114, ~m99_126 +# 99| v99_128(void) = Call[await_suspend] : func:r99_113, this:r0_36, 0:r99_127 +# 99| m99_129(unknown) = ^CallSideEffect : ~m99_126 +# 99| m99_130(unknown) = Chi : total:m99_126, partial:m99_129 +#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m99_130 +#-----| Goto -> Block 10 + +# 99| Block 12 +# 99| v99_131(void) = Unreached : + # 103| co_returnable_void co_yield_and_return_void(int) # 103| Block 0 # 103| v103_1(void) = EnterFunction : @@ -1645,38 +1899,13 @@ coroutines.cpp: # 104| v104_8(void) = ^IndirectReadSideEffect[-1] : &:r104_1, ~m104_7 # 104| m104_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_1 # 104| m104_10(unknown) = Chi : total:m104_7, partial:m104_9 -#-----| r0_15(glval) = VariableAddress[#temp0:0] : -# 104| r104_11(glval) = VariableAddress[#temp104:13] : -# 104| r104_12(glval) = VariableAddress[(unnamed local variable)] : -# 104| r104_13(glval) = FunctionAddress[yield_value] : -# 104| r104_14(glval) = VariableAddress[i] : -# 104| r104_15(int) = Load[i] : &:r104_14, m0_4 -# 104| r104_16(suspend_always) = Call[yield_value] : func:r104_13, this:r104_12, 0:r104_15 -# 104| m104_17(unknown) = ^CallSideEffect : ~m104_10 -# 104| m104_18(unknown) = Chi : total:m104_10, partial:m104_17 -# 104| v104_19(void) = ^IndirectReadSideEffect[-1] : &:r104_12, ~m104_18 -# 104| m104_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_12 -# 104| m104_21(unknown) = Chi : total:m104_18, partial:m104_20 -# 104| m104_22(suspend_always) = Store[#temp104:13] : &:r104_11, r104_16 -# 104| m104_23(unknown) = Chi : total:m104_21, partial:m104_22 -# 104| r104_24(suspend_always *) = CopyValue : r104_11 -# 104| m104_25(suspend_always *) = Store[#temp0:0] : &:r0_15, r104_24 -#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_15, m104_25 -# 104| r104_26(glval) = CopyValue : r0_16 -# 104| r104_27(glval) = Convert : r104_26 -# 104| r104_28(glval) = FunctionAddress[await_ready] : -# 104| r104_29(bool) = Call[await_ready] : func:r104_28, this:r104_27 -# 104| m104_30(unknown) = ^CallSideEffect : ~m104_23 -# 104| m104_31(unknown) = Chi : total:m104_23, partial:m104_30 -# 104| v104_32(void) = ^IndirectReadSideEffect[-1] : &:r104_27, ~m104_31 -# 104| v104_33(void) = ConditionalBranch : r104_29 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 3 # 103| Block 2 # 103| r103_44(suspend_always *) = CopyValue : r103_29 # 103| r103_45(glval) = CopyValue : r103_44 -#-----| r0_17(glval) = Convert : r103_45 +#-----| r0_15(glval) = Convert : r103_45 # 103| r103_46(glval) = FunctionAddress[await_suspend] : # 103| r103_47(glval>) = VariableAddress[#temp103:20] : # 103| m103_48(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_47 @@ -1692,14 +1921,47 @@ coroutines.cpp: # 103| m103_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_47 # 103| m103_59(unknown) = Chi : total:m103_56, partial:m103_58 # 103| r103_60(coroutine_handle) = Load[#temp103:20] : &:r103_47, ~m103_59 -# 103| v103_61(void) = Call[await_suspend] : func:r103_46, this:r0_17, 0:r103_60 +# 103| v103_61(void) = Call[await_suspend] : func:r103_46, this:r0_15, 0:r103_60 # 103| m103_62(unknown) = ^CallSideEffect : ~m103_59 # 103| m103_63(unknown) = Chi : total:m103_59, partial:m103_62 -#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m103_63 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m103_63 #-----| Goto -> Block 1 -# 104| Block 3 -# 104| m104_34(unknown) = Phi : from 1:~m104_31, from 4:~m104_60 +#-----| Block 3 +#-----| r0_17(glval) = VariableAddress[#temp0:0] : +# 104| r104_11(glval) = VariableAddress[#temp104:13] : +# 104| r104_12(glval) = VariableAddress[(unnamed local variable)] : +# 104| r104_13(glval) = FunctionAddress[yield_value] : +# 104| r104_14(glval) = VariableAddress[i] : +# 104| r104_15(int) = Load[i] : &:r104_14, m0_4 +# 104| r104_16(suspend_always) = Call[yield_value] : func:r104_13, this:r104_12, 0:r104_15 +# 104| m104_17(unknown) = ^CallSideEffect : ~m104_10 +# 104| m104_18(unknown) = Chi : total:m104_10, partial:m104_17 +# 104| v104_19(void) = ^IndirectReadSideEffect[-1] : &:r104_12, ~m104_18 +# 104| m104_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_12 +# 104| m104_21(unknown) = Chi : total:m104_18, partial:m104_20 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 4 + +# 104| Block 4 +# 104| m104_22(suspend_always) = Store[#temp104:13] : &:r104_11, r104_16 +# 104| m104_23(unknown) = Chi : total:m104_21, partial:m104_22 +# 104| r104_24(suspend_always *) = CopyValue : r104_11 +# 104| m104_25(suspend_always *) = Store[#temp0:0] : &:r0_17, r104_24 +#-----| r0_18(suspend_always *) = Load[#temp0:0] : &:r0_17, m104_25 +# 104| r104_26(glval) = CopyValue : r0_18 +# 104| r104_27(glval) = Convert : r104_26 +# 104| r104_28(glval) = FunctionAddress[await_ready] : +# 104| r104_29(bool) = Call[await_ready] : func:r104_28, this:r104_27 +# 104| m104_30(unknown) = ^CallSideEffect : ~m104_23 +# 104| m104_31(unknown) = Chi : total:m104_23, partial:m104_30 +# 104| v104_32(void) = ^IndirectReadSideEffect[-1] : &:r104_27, ~m104_31 +# 104| v104_33(void) = ConditionalBranch : r104_29 +#-----| False -> Block 6 +#-----| True -> Block 5 + +# 104| Block 5 +# 104| m104_34(unknown) = Phi : from 4:~m104_31, from 6:~m104_60 # 104| r104_35(suspend_always *) = CopyValue : r104_24 # 104| r104_36(glval) = CopyValue : r104_35 #-----| r0_19(glval) = Convert : r104_36 @@ -1716,14 +1978,13 @@ coroutines.cpp: #-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m0_25 #-----| m0_27(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_21 #-----| m0_28(unknown) = Chi : total:m0_25, partial:m0_27 -# 105| v105_1(void) = NoOp : -#-----| v0_29(void) = NoOp : -#-----| Goto (back edge) -> Block 5 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 7 -# 104| Block 4 +# 104| Block 6 # 104| r104_41(suspend_always *) = CopyValue : r104_24 # 104| r104_42(glval) = CopyValue : r104_41 -#-----| r0_30(glval) = Convert : r104_42 +#-----| r0_29(glval) = Convert : r104_42 # 104| r104_43(glval) = FunctionAddress[await_suspend] : # 104| r104_44(glval>) = VariableAddress[#temp104:3] : # 104| m104_45(coroutine_handle) = Uninitialized[#temp104:3] : &:r104_44 @@ -1739,87 +2000,117 @@ coroutines.cpp: # 104| m104_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r104_44 # 104| m104_56(unknown) = Chi : total:m104_53, partial:m104_55 # 104| r104_57(coroutine_handle) = Load[#temp104:3] : &:r104_44, ~m104_56 -# 104| v104_58(void) = Call[await_suspend] : func:r104_43, this:r0_30, 0:r104_57 +# 104| v104_58(void) = Call[await_suspend] : func:r104_43, this:r0_29, 0:r104_57 # 104| m104_59(unknown) = ^CallSideEffect : ~m104_56 # 104| m104_60(unknown) = Chi : total:m104_56, partial:m104_59 -#-----| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_30, ~m104_60 -#-----| Goto -> Block 3 +#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_29, ~m104_60 +#-----| Goto -> Block 5 -#-----| Block 5 -#-----| v0_32(void) = NoOp : -# 103| r103_64(glval) = VariableAddress[(unnamed local variable)] : -# 103| r103_65(glval) = FunctionAddress[final_suspend] : -# 103| r103_66(suspend_always) = Call[final_suspend] : func:r103_65, this:r103_64 -# 103| m103_67(unknown) = ^CallSideEffect : ~m0_28 -# 103| m103_68(unknown) = Chi : total:m0_28, partial:m103_67 -# 103| v103_69(void) = ^IndirectReadSideEffect[-1] : &:r103_64, ~m103_68 -# 103| m103_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_64 -# 103| m103_71(unknown) = Chi : total:m103_68, partial:m103_70 -#-----| r0_33(glval) = VariableAddress[#temp0:0] : -# 103| r103_72(glval) = VariableAddress[#temp103:20] : -# 103| r103_73(glval) = VariableAddress[(unnamed local variable)] : -# 103| r103_74(glval) = FunctionAddress[final_suspend] : -# 103| r103_75(suspend_always) = Call[final_suspend] : func:r103_74, this:r103_73 -# 103| m103_76(unknown) = ^CallSideEffect : ~m103_71 -# 103| m103_77(unknown) = Chi : total:m103_71, partial:m103_76 -# 103| v103_78(void) = ^IndirectReadSideEffect[-1] : &:r103_73, ~m103_77 -# 103| m103_79(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_73 -# 103| m103_80(unknown) = Chi : total:m103_77, partial:m103_79 -# 103| m103_81(suspend_always) = Store[#temp103:20] : &:r103_72, r103_75 -# 103| m103_82(unknown) = Chi : total:m103_80, partial:m103_81 -# 103| r103_83(suspend_always *) = CopyValue : r103_72 -# 103| m103_84(suspend_always *) = Store[#temp0:0] : &:r0_33, r103_83 -#-----| r0_34(suspend_always *) = Load[#temp0:0] : &:r0_33, m103_84 -# 103| r103_85(glval) = CopyValue : r0_34 -# 103| r103_86(glval) = Convert : r103_85 -# 103| r103_87(glval) = FunctionAddress[await_ready] : -# 103| r103_88(bool) = Call[await_ready] : func:r103_87, this:r103_86 -# 103| m103_89(unknown) = ^CallSideEffect : ~m103_82 -# 103| m103_90(unknown) = Chi : total:m103_82, partial:m103_89 -# 103| v103_91(void) = ^IndirectReadSideEffect[-1] : &:r103_86, ~m103_90 -#-----| v0_35(void) = ConditionalBranch : r103_88 -#-----| False -> Block 7 -#-----| True -> Block 6 +# 105| Block 7 +# 105| v105_1(void) = NoOp : +#-----| v0_31(void) = NoOp : +#-----| Goto (back edge) -> Block 10 -# 103| Block 6 -# 103| m103_92(unknown) = Phi : from 5:~m103_90, from 7:~m103_122 -# 103| r103_93(suspend_always *) = CopyValue : r103_83 -# 103| r103_94(glval) = CopyValue : r103_93 -#-----| r0_36(glval) = Convert : r103_94 -# 103| r103_95(glval) = FunctionAddress[await_resume] : -# 103| v103_96(void) = Call[await_resume] : func:r103_95, this:r0_36 -# 103| m103_97(unknown) = ^CallSideEffect : ~m103_92 -# 103| m103_98(unknown) = Chi : total:m103_92, partial:m103_97 -#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m103_98 -# 103| r103_99(glval) = VariableAddress[#return] : -# 103| v103_100(void) = ReturnValue : &:r103_99, ~m103_98 -# 103| v103_101(void) = AliasedUse : ~m103_98 -# 103| v103_102(void) = ExitFunction : - -# 103| Block 7 -# 103| r103_103(suspend_always *) = CopyValue : r103_83 -# 103| r103_104(glval) = CopyValue : r103_103 -#-----| r0_38(glval) = Convert : r103_104 -# 103| r103_105(glval) = FunctionAddress[await_suspend] : -# 103| r103_106(glval>) = VariableAddress[#temp103:20] : -# 103| m103_107(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_106 -# 103| m103_108(unknown) = Chi : total:m103_90, partial:m103_107 -# 103| r103_109(glval) = FunctionAddress[coroutine_handle] : -# 103| r103_110(glval>) = VariableAddress[(unnamed local variable)] : -# 103| r103_111(glval>) = Convert : r103_110 -# 103| r103_112(coroutine_handle &) = CopyValue : r103_111 -# 103| v103_113(void) = Call[coroutine_handle] : func:r103_109, this:r103_106, 0:r103_112 -# 103| m103_114(unknown) = ^CallSideEffect : ~m103_108 -# 103| m103_115(unknown) = Chi : total:m103_108, partial:m103_114 -# 103| v103_116(void) = ^BufferReadSideEffect[0] : &:r103_112, ~m103_115 -# 103| m103_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_106 -# 103| m103_118(unknown) = Chi : total:m103_115, partial:m103_117 -# 103| r103_119(coroutine_handle) = Load[#temp103:20] : &:r103_106, ~m103_118 -# 103| v103_120(void) = Call[await_suspend] : func:r103_105, this:r0_38, 0:r103_119 -# 103| m103_121(unknown) = ^CallSideEffect : ~m103_118 -# 103| m103_122(unknown) = Chi : total:m103_118, partial:m103_121 -#-----| v0_39(void) = ^IndirectReadSideEffect[-1] : &:r0_38, ~m103_122 -#-----| Goto -> Block 6 +#-----| Block 8 +#-----| m0_32(unknown) = Phi : from 1:~m104_10, from 3:~m104_21, from 5:~m0_28 +#-----| v0_33(void) = CatchAny : +#-----| r0_34(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_35(bool) = Load[(unnamed local variable)] : &:r0_34, m0_11 +#-----| r0_36(bool) = LogicalNot : r0_35 +#-----| v0_37(void) = ConditionalBranch : r0_36 +#-----| False -> Block 9 +#-----| True -> Block 13 + +# 103| Block 9 +# 103| r103_64(glval) = VariableAddress[(unnamed local variable)] : +# 103| r103_65(glval) = FunctionAddress[unhandled_exception] : +# 103| v103_66(void) = Call[unhandled_exception] : func:r103_65, this:r103_64 +# 103| m103_67(unknown) = ^CallSideEffect : ~m0_32 +# 103| m103_68(unknown) = Chi : total:m0_32, partial:m103_67 +# 103| v103_69(void) = ^IndirectReadSideEffect[-1] : &:r103_64, ~m103_68 +# 103| m103_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_64 +# 103| m103_71(unknown) = Chi : total:m103_68, partial:m103_70 +#-----| Goto -> Block 10 + +#-----| Block 10 +#-----| m0_38(unknown) = Phi : from 7:~m0_28, from 9:~m103_71 +#-----| v0_39(void) = NoOp : +# 103| r103_72(glval) = VariableAddress[(unnamed local variable)] : +# 103| r103_73(glval) = FunctionAddress[final_suspend] : +# 103| r103_74(suspend_always) = Call[final_suspend] : func:r103_73, this:r103_72 +# 103| m103_75(unknown) = ^CallSideEffect : ~m0_38 +# 103| m103_76(unknown) = Chi : total:m0_38, partial:m103_75 +# 103| v103_77(void) = ^IndirectReadSideEffect[-1] : &:r103_72, ~m103_76 +# 103| m103_78(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_72 +# 103| m103_79(unknown) = Chi : total:m103_76, partial:m103_78 +#-----| r0_40(glval) = VariableAddress[#temp0:0] : +# 103| r103_80(glval) = VariableAddress[#temp103:20] : +# 103| r103_81(glval) = VariableAddress[(unnamed local variable)] : +# 103| r103_82(glval) = FunctionAddress[final_suspend] : +# 103| r103_83(suspend_always) = Call[final_suspend] : func:r103_82, this:r103_81 +# 103| m103_84(unknown) = ^CallSideEffect : ~m103_79 +# 103| m103_85(unknown) = Chi : total:m103_79, partial:m103_84 +# 103| v103_86(void) = ^IndirectReadSideEffect[-1] : &:r103_81, ~m103_85 +# 103| m103_87(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_81 +# 103| m103_88(unknown) = Chi : total:m103_85, partial:m103_87 +# 103| m103_89(suspend_always) = Store[#temp103:20] : &:r103_80, r103_83 +# 103| m103_90(unknown) = Chi : total:m103_88, partial:m103_89 +# 103| r103_91(suspend_always *) = CopyValue : r103_80 +# 103| m103_92(suspend_always *) = Store[#temp0:0] : &:r0_40, r103_91 +#-----| r0_41(suspend_always *) = Load[#temp0:0] : &:r0_40, m103_92 +# 103| r103_93(glval) = CopyValue : r0_41 +# 103| r103_94(glval) = Convert : r103_93 +# 103| r103_95(glval) = FunctionAddress[await_ready] : +# 103| r103_96(bool) = Call[await_ready] : func:r103_95, this:r103_94 +# 103| m103_97(unknown) = ^CallSideEffect : ~m103_90 +# 103| m103_98(unknown) = Chi : total:m103_90, partial:m103_97 +# 103| v103_99(void) = ^IndirectReadSideEffect[-1] : &:r103_94, ~m103_98 +#-----| v0_42(void) = ConditionalBranch : r103_96 +#-----| False -> Block 12 +#-----| True -> Block 11 + +# 103| Block 11 +# 103| m103_100(unknown) = Phi : from 10:~m103_98, from 12:~m103_130 +# 103| r103_101(suspend_always *) = CopyValue : r103_91 +# 103| r103_102(glval) = CopyValue : r103_101 +#-----| r0_43(glval) = Convert : r103_102 +# 103| r103_103(glval) = FunctionAddress[await_resume] : +# 103| v103_104(void) = Call[await_resume] : func:r103_103, this:r0_43 +# 103| m103_105(unknown) = ^CallSideEffect : ~m103_100 +# 103| m103_106(unknown) = Chi : total:m103_100, partial:m103_105 +#-----| v0_44(void) = ^IndirectReadSideEffect[-1] : &:r0_43, ~m103_106 +# 103| r103_107(glval) = VariableAddress[#return] : +# 103| v103_108(void) = ReturnValue : &:r103_107, ~m103_106 +# 103| v103_109(void) = AliasedUse : ~m103_106 +# 103| v103_110(void) = ExitFunction : + +# 103| Block 12 +# 103| r103_111(suspend_always *) = CopyValue : r103_91 +# 103| r103_112(glval) = CopyValue : r103_111 +#-----| r0_45(glval) = Convert : r103_112 +# 103| r103_113(glval) = FunctionAddress[await_suspend] : +# 103| r103_114(glval>) = VariableAddress[#temp103:20] : +# 103| m103_115(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_114 +# 103| m103_116(unknown) = Chi : total:m103_98, partial:m103_115 +# 103| r103_117(glval) = FunctionAddress[coroutine_handle] : +# 103| r103_118(glval>) = VariableAddress[(unnamed local variable)] : +# 103| r103_119(glval>) = Convert : r103_118 +# 103| r103_120(coroutine_handle &) = CopyValue : r103_119 +# 103| v103_121(void) = Call[coroutine_handle] : func:r103_117, this:r103_114, 0:r103_120 +# 103| m103_122(unknown) = ^CallSideEffect : ~m103_116 +# 103| m103_123(unknown) = Chi : total:m103_116, partial:m103_122 +# 103| v103_124(void) = ^BufferReadSideEffect[0] : &:r103_120, ~m103_123 +# 103| m103_125(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_114 +# 103| m103_126(unknown) = Chi : total:m103_123, partial:m103_125 +# 103| r103_127(coroutine_handle) = Load[#temp103:20] : &:r103_114, ~m103_126 +# 103| v103_128(void) = Call[await_suspend] : func:r103_113, this:r0_45, 0:r103_127 +# 103| m103_129(unknown) = ^CallSideEffect : ~m103_126 +# 103| m103_130(unknown) = Chi : total:m103_126, partial:m103_129 +#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_45, ~m103_130 +#-----| Goto -> Block 11 + +# 103| Block 13 +# 103| v103_131(void) = Unreached : # 108| co_returnable_value co_yield_and_return_value(int) # 108| Block 0 @@ -1894,38 +2185,13 @@ coroutines.cpp: # 109| v109_8(void) = ^IndirectReadSideEffect[-1] : &:r109_1, ~m109_7 # 109| m109_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_1 # 109| m109_10(unknown) = Chi : total:m109_7, partial:m109_9 -#-----| r0_15(glval) = VariableAddress[#temp0:0] : -# 109| r109_11(glval) = VariableAddress[#temp109:13] : -# 109| r109_12(glval) = VariableAddress[(unnamed local variable)] : -# 109| r109_13(glval) = FunctionAddress[yield_value] : -# 109| r109_14(glval) = VariableAddress[i] : -# 109| r109_15(int) = Load[i] : &:r109_14, m0_4 -# 109| r109_16(suspend_always) = Call[yield_value] : func:r109_13, this:r109_12, 0:r109_15 -# 109| m109_17(unknown) = ^CallSideEffect : ~m109_10 -# 109| m109_18(unknown) = Chi : total:m109_10, partial:m109_17 -# 109| v109_19(void) = ^IndirectReadSideEffect[-1] : &:r109_12, ~m109_18 -# 109| m109_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_12 -# 109| m109_21(unknown) = Chi : total:m109_18, partial:m109_20 -# 109| m109_22(suspend_always) = Store[#temp109:13] : &:r109_11, r109_16 -# 109| m109_23(unknown) = Chi : total:m109_21, partial:m109_22 -# 109| r109_24(suspend_always *) = CopyValue : r109_11 -# 109| m109_25(suspend_always *) = Store[#temp0:0] : &:r0_15, r109_24 -#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_15, m109_25 -# 109| r109_26(glval) = CopyValue : r0_16 -# 109| r109_27(glval) = Convert : r109_26 -# 109| r109_28(glval) = FunctionAddress[await_ready] : -# 109| r109_29(bool) = Call[await_ready] : func:r109_28, this:r109_27 -# 109| m109_30(unknown) = ^CallSideEffect : ~m109_23 -# 109| m109_31(unknown) = Chi : total:m109_23, partial:m109_30 -# 109| v109_32(void) = ^IndirectReadSideEffect[-1] : &:r109_27, ~m109_31 -# 109| v109_33(void) = ConditionalBranch : r109_29 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 3 # 108| Block 2 # 108| r108_44(suspend_always *) = CopyValue : r108_29 # 108| r108_45(glval) = CopyValue : r108_44 -#-----| r0_17(glval) = Convert : r108_45 +#-----| r0_15(glval) = Convert : r108_45 # 108| r108_46(glval) = FunctionAddress[await_suspend] : # 108| r108_47(glval>) = VariableAddress[#temp108:21] : # 108| m108_48(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_47 @@ -1941,14 +2207,47 @@ coroutines.cpp: # 108| m108_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_47 # 108| m108_59(unknown) = Chi : total:m108_56, partial:m108_58 # 108| r108_60(coroutine_handle) = Load[#temp108:21] : &:r108_47, ~m108_59 -# 108| v108_61(void) = Call[await_suspend] : func:r108_46, this:r0_17, 0:r108_60 +# 108| v108_61(void) = Call[await_suspend] : func:r108_46, this:r0_15, 0:r108_60 # 108| m108_62(unknown) = ^CallSideEffect : ~m108_59 # 108| m108_63(unknown) = Chi : total:m108_59, partial:m108_62 -#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m108_63 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m108_63 #-----| Goto -> Block 1 -# 109| Block 3 -# 109| m109_34(unknown) = Phi : from 1:~m109_31, from 4:~m109_60 +#-----| Block 3 +#-----| r0_17(glval) = VariableAddress[#temp0:0] : +# 109| r109_11(glval) = VariableAddress[#temp109:13] : +# 109| r109_12(glval) = VariableAddress[(unnamed local variable)] : +# 109| r109_13(glval) = FunctionAddress[yield_value] : +# 109| r109_14(glval) = VariableAddress[i] : +# 109| r109_15(int) = Load[i] : &:r109_14, m0_4 +# 109| r109_16(suspend_always) = Call[yield_value] : func:r109_13, this:r109_12, 0:r109_15 +# 109| m109_17(unknown) = ^CallSideEffect : ~m109_10 +# 109| m109_18(unknown) = Chi : total:m109_10, partial:m109_17 +# 109| v109_19(void) = ^IndirectReadSideEffect[-1] : &:r109_12, ~m109_18 +# 109| m109_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_12 +# 109| m109_21(unknown) = Chi : total:m109_18, partial:m109_20 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 4 + +# 109| Block 4 +# 109| m109_22(suspend_always) = Store[#temp109:13] : &:r109_11, r109_16 +# 109| m109_23(unknown) = Chi : total:m109_21, partial:m109_22 +# 109| r109_24(suspend_always *) = CopyValue : r109_11 +# 109| m109_25(suspend_always *) = Store[#temp0:0] : &:r0_17, r109_24 +#-----| r0_18(suspend_always *) = Load[#temp0:0] : &:r0_17, m109_25 +# 109| r109_26(glval) = CopyValue : r0_18 +# 109| r109_27(glval) = Convert : r109_26 +# 109| r109_28(glval) = FunctionAddress[await_ready] : +# 109| r109_29(bool) = Call[await_ready] : func:r109_28, this:r109_27 +# 109| m109_30(unknown) = ^CallSideEffect : ~m109_23 +# 109| m109_31(unknown) = Chi : total:m109_23, partial:m109_30 +# 109| v109_32(void) = ^IndirectReadSideEffect[-1] : &:r109_27, ~m109_31 +# 109| v109_33(void) = ConditionalBranch : r109_29 +#-----| False -> Block 6 +#-----| True -> Block 5 + +# 109| Block 5 +# 109| m109_34(unknown) = Phi : from 4:~m109_31, from 6:~m109_60 # 109| r109_35(suspend_always *) = CopyValue : r109_24 # 109| r109_36(glval) = CopyValue : r109_35 #-----| r0_19(glval) = Convert : r109_36 @@ -1969,14 +2268,13 @@ coroutines.cpp: #-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m0_25 #-----| m0_27(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_21 #-----| m0_28(unknown) = Chi : total:m0_25, partial:m0_27 -# 110| v110_5(void) = NoOp : -#-----| v0_29(void) = NoOp : -#-----| Goto (back edge) -> Block 5 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 7 -# 109| Block 4 +# 109| Block 6 # 109| r109_41(suspend_always *) = CopyValue : r109_24 # 109| r109_42(glval) = CopyValue : r109_41 -#-----| r0_30(glval) = Convert : r109_42 +#-----| r0_29(glval) = Convert : r109_42 # 109| r109_43(glval) = FunctionAddress[await_suspend] : # 109| r109_44(glval>) = VariableAddress[#temp109:3] : # 109| m109_45(coroutine_handle) = Uninitialized[#temp109:3] : &:r109_44 @@ -1992,87 +2290,117 @@ coroutines.cpp: # 109| m109_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r109_44 # 109| m109_56(unknown) = Chi : total:m109_53, partial:m109_55 # 109| r109_57(coroutine_handle) = Load[#temp109:3] : &:r109_44, ~m109_56 -# 109| v109_58(void) = Call[await_suspend] : func:r109_43, this:r0_30, 0:r109_57 +# 109| v109_58(void) = Call[await_suspend] : func:r109_43, this:r0_29, 0:r109_57 # 109| m109_59(unknown) = ^CallSideEffect : ~m109_56 # 109| m109_60(unknown) = Chi : total:m109_56, partial:m109_59 -#-----| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_30, ~m109_60 -#-----| Goto -> Block 3 +#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_29, ~m109_60 +#-----| Goto -> Block 5 -#-----| Block 5 -#-----| v0_32(void) = NoOp : -# 108| r108_64(glval) = VariableAddress[(unnamed local variable)] : -# 108| r108_65(glval) = FunctionAddress[final_suspend] : -# 108| r108_66(suspend_always) = Call[final_suspend] : func:r108_65, this:r108_64 -# 108| m108_67(unknown) = ^CallSideEffect : ~m0_28 -# 108| m108_68(unknown) = Chi : total:m0_28, partial:m108_67 -# 108| v108_69(void) = ^IndirectReadSideEffect[-1] : &:r108_64, ~m108_68 -# 108| m108_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_64 -# 108| m108_71(unknown) = Chi : total:m108_68, partial:m108_70 -#-----| r0_33(glval) = VariableAddress[#temp0:0] : -# 108| r108_72(glval) = VariableAddress[#temp108:21] : -# 108| r108_73(glval) = VariableAddress[(unnamed local variable)] : -# 108| r108_74(glval) = FunctionAddress[final_suspend] : -# 108| r108_75(suspend_always) = Call[final_suspend] : func:r108_74, this:r108_73 -# 108| m108_76(unknown) = ^CallSideEffect : ~m108_71 -# 108| m108_77(unknown) = Chi : total:m108_71, partial:m108_76 -# 108| v108_78(void) = ^IndirectReadSideEffect[-1] : &:r108_73, ~m108_77 -# 108| m108_79(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_73 -# 108| m108_80(unknown) = Chi : total:m108_77, partial:m108_79 -# 108| m108_81(suspend_always) = Store[#temp108:21] : &:r108_72, r108_75 -# 108| m108_82(unknown) = Chi : total:m108_80, partial:m108_81 -# 108| r108_83(suspend_always *) = CopyValue : r108_72 -# 108| m108_84(suspend_always *) = Store[#temp0:0] : &:r0_33, r108_83 -#-----| r0_34(suspend_always *) = Load[#temp0:0] : &:r0_33, m108_84 -# 108| r108_85(glval) = CopyValue : r0_34 -# 108| r108_86(glval) = Convert : r108_85 -# 108| r108_87(glval) = FunctionAddress[await_ready] : -# 108| r108_88(bool) = Call[await_ready] : func:r108_87, this:r108_86 -# 108| m108_89(unknown) = ^CallSideEffect : ~m108_82 -# 108| m108_90(unknown) = Chi : total:m108_82, partial:m108_89 -# 108| v108_91(void) = ^IndirectReadSideEffect[-1] : &:r108_86, ~m108_90 -#-----| v0_35(void) = ConditionalBranch : r108_88 -#-----| False -> Block 7 -#-----| True -> Block 6 +# 110| Block 7 +# 110| v110_5(void) = NoOp : +#-----| v0_31(void) = NoOp : +#-----| Goto (back edge) -> Block 10 -# 108| Block 6 -# 108| m108_92(unknown) = Phi : from 5:~m108_90, from 7:~m108_122 -# 108| r108_93(suspend_always *) = CopyValue : r108_83 -# 108| r108_94(glval) = CopyValue : r108_93 -#-----| r0_36(glval) = Convert : r108_94 -# 108| r108_95(glval) = FunctionAddress[await_resume] : -# 108| v108_96(void) = Call[await_resume] : func:r108_95, this:r0_36 -# 108| m108_97(unknown) = ^CallSideEffect : ~m108_92 -# 108| m108_98(unknown) = Chi : total:m108_92, partial:m108_97 -#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m108_98 -# 108| r108_99(glval) = VariableAddress[#return] : -# 108| v108_100(void) = ReturnValue : &:r108_99, ~m108_98 -# 108| v108_101(void) = AliasedUse : ~m108_98 -# 108| v108_102(void) = ExitFunction : - -# 108| Block 7 -# 108| r108_103(suspend_always *) = CopyValue : r108_83 -# 108| r108_104(glval) = CopyValue : r108_103 -#-----| r0_38(glval) = Convert : r108_104 -# 108| r108_105(glval) = FunctionAddress[await_suspend] : -# 108| r108_106(glval>) = VariableAddress[#temp108:21] : -# 108| m108_107(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_106 -# 108| m108_108(unknown) = Chi : total:m108_90, partial:m108_107 -# 108| r108_109(glval) = FunctionAddress[coroutine_handle] : -# 108| r108_110(glval>) = VariableAddress[(unnamed local variable)] : -# 108| r108_111(glval>) = Convert : r108_110 -# 108| r108_112(coroutine_handle &) = CopyValue : r108_111 -# 108| v108_113(void) = Call[coroutine_handle] : func:r108_109, this:r108_106, 0:r108_112 -# 108| m108_114(unknown) = ^CallSideEffect : ~m108_108 -# 108| m108_115(unknown) = Chi : total:m108_108, partial:m108_114 -# 108| v108_116(void) = ^BufferReadSideEffect[0] : &:r108_112, ~m108_115 -# 108| m108_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_106 -# 108| m108_118(unknown) = Chi : total:m108_115, partial:m108_117 -# 108| r108_119(coroutine_handle) = Load[#temp108:21] : &:r108_106, ~m108_118 -# 108| v108_120(void) = Call[await_suspend] : func:r108_105, this:r0_38, 0:r108_119 -# 108| m108_121(unknown) = ^CallSideEffect : ~m108_118 -# 108| m108_122(unknown) = Chi : total:m108_118, partial:m108_121 -#-----| v0_39(void) = ^IndirectReadSideEffect[-1] : &:r0_38, ~m108_122 -#-----| Goto -> Block 6 +#-----| Block 8 +#-----| m0_32(unknown) = Phi : from 1:~m109_10, from 3:~m109_21, from 5:~m0_28 +#-----| v0_33(void) = CatchAny : +#-----| r0_34(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_35(bool) = Load[(unnamed local variable)] : &:r0_34, m0_11 +#-----| r0_36(bool) = LogicalNot : r0_35 +#-----| v0_37(void) = ConditionalBranch : r0_36 +#-----| False -> Block 9 +#-----| True -> Block 13 + +# 108| Block 9 +# 108| r108_64(glval) = VariableAddress[(unnamed local variable)] : +# 108| r108_65(glval) = FunctionAddress[unhandled_exception] : +# 108| v108_66(void) = Call[unhandled_exception] : func:r108_65, this:r108_64 +# 108| m108_67(unknown) = ^CallSideEffect : ~m0_32 +# 108| m108_68(unknown) = Chi : total:m0_32, partial:m108_67 +# 108| v108_69(void) = ^IndirectReadSideEffect[-1] : &:r108_64, ~m108_68 +# 108| m108_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_64 +# 108| m108_71(unknown) = Chi : total:m108_68, partial:m108_70 +#-----| Goto -> Block 10 + +#-----| Block 10 +#-----| m0_38(unknown) = Phi : from 7:~m0_28, from 9:~m108_71 +#-----| v0_39(void) = NoOp : +# 108| r108_72(glval) = VariableAddress[(unnamed local variable)] : +# 108| r108_73(glval) = FunctionAddress[final_suspend] : +# 108| r108_74(suspend_always) = Call[final_suspend] : func:r108_73, this:r108_72 +# 108| m108_75(unknown) = ^CallSideEffect : ~m0_38 +# 108| m108_76(unknown) = Chi : total:m0_38, partial:m108_75 +# 108| v108_77(void) = ^IndirectReadSideEffect[-1] : &:r108_72, ~m108_76 +# 108| m108_78(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_72 +# 108| m108_79(unknown) = Chi : total:m108_76, partial:m108_78 +#-----| r0_40(glval) = VariableAddress[#temp0:0] : +# 108| r108_80(glval) = VariableAddress[#temp108:21] : +# 108| r108_81(glval) = VariableAddress[(unnamed local variable)] : +# 108| r108_82(glval) = FunctionAddress[final_suspend] : +# 108| r108_83(suspend_always) = Call[final_suspend] : func:r108_82, this:r108_81 +# 108| m108_84(unknown) = ^CallSideEffect : ~m108_79 +# 108| m108_85(unknown) = Chi : total:m108_79, partial:m108_84 +# 108| v108_86(void) = ^IndirectReadSideEffect[-1] : &:r108_81, ~m108_85 +# 108| m108_87(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_81 +# 108| m108_88(unknown) = Chi : total:m108_85, partial:m108_87 +# 108| m108_89(suspend_always) = Store[#temp108:21] : &:r108_80, r108_83 +# 108| m108_90(unknown) = Chi : total:m108_88, partial:m108_89 +# 108| r108_91(suspend_always *) = CopyValue : r108_80 +# 108| m108_92(suspend_always *) = Store[#temp0:0] : &:r0_40, r108_91 +#-----| r0_41(suspend_always *) = Load[#temp0:0] : &:r0_40, m108_92 +# 108| r108_93(glval) = CopyValue : r0_41 +# 108| r108_94(glval) = Convert : r108_93 +# 108| r108_95(glval) = FunctionAddress[await_ready] : +# 108| r108_96(bool) = Call[await_ready] : func:r108_95, this:r108_94 +# 108| m108_97(unknown) = ^CallSideEffect : ~m108_90 +# 108| m108_98(unknown) = Chi : total:m108_90, partial:m108_97 +# 108| v108_99(void) = ^IndirectReadSideEffect[-1] : &:r108_94, ~m108_98 +#-----| v0_42(void) = ConditionalBranch : r108_96 +#-----| False -> Block 12 +#-----| True -> Block 11 + +# 108| Block 11 +# 108| m108_100(unknown) = Phi : from 10:~m108_98, from 12:~m108_130 +# 108| r108_101(suspend_always *) = CopyValue : r108_91 +# 108| r108_102(glval) = CopyValue : r108_101 +#-----| r0_43(glval) = Convert : r108_102 +# 108| r108_103(glval) = FunctionAddress[await_resume] : +# 108| v108_104(void) = Call[await_resume] : func:r108_103, this:r0_43 +# 108| m108_105(unknown) = ^CallSideEffect : ~m108_100 +# 108| m108_106(unknown) = Chi : total:m108_100, partial:m108_105 +#-----| v0_44(void) = ^IndirectReadSideEffect[-1] : &:r0_43, ~m108_106 +# 108| r108_107(glval) = VariableAddress[#return] : +# 108| v108_108(void) = ReturnValue : &:r108_107, ~m108_106 +# 108| v108_109(void) = AliasedUse : ~m108_106 +# 108| v108_110(void) = ExitFunction : + +# 108| Block 12 +# 108| r108_111(suspend_always *) = CopyValue : r108_91 +# 108| r108_112(glval) = CopyValue : r108_111 +#-----| r0_45(glval) = Convert : r108_112 +# 108| r108_113(glval) = FunctionAddress[await_suspend] : +# 108| r108_114(glval>) = VariableAddress[#temp108:21] : +# 108| m108_115(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_114 +# 108| m108_116(unknown) = Chi : total:m108_98, partial:m108_115 +# 108| r108_117(glval) = FunctionAddress[coroutine_handle] : +# 108| r108_118(glval>) = VariableAddress[(unnamed local variable)] : +# 108| r108_119(glval>) = Convert : r108_118 +# 108| r108_120(coroutine_handle &) = CopyValue : r108_119 +# 108| v108_121(void) = Call[coroutine_handle] : func:r108_117, this:r108_114, 0:r108_120 +# 108| m108_122(unknown) = ^CallSideEffect : ~m108_116 +# 108| m108_123(unknown) = Chi : total:m108_116, partial:m108_122 +# 108| v108_124(void) = ^BufferReadSideEffect[0] : &:r108_120, ~m108_123 +# 108| m108_125(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_114 +# 108| m108_126(unknown) = Chi : total:m108_123, partial:m108_125 +# 108| r108_127(coroutine_handle) = Load[#temp108:21] : &:r108_114, ~m108_126 +# 108| v108_128(void) = Call[await_suspend] : func:r108_113, this:r0_45, 0:r108_127 +# 108| m108_129(unknown) = ^CallSideEffect : ~m108_126 +# 108| m108_130(unknown) = Chi : total:m108_126, partial:m108_129 +#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_45, ~m108_130 +#-----| Goto -> Block 11 + +# 108| Block 13 +# 108| v108_131(void) = Unreached : destructors_for_temps.cpp: # 9| void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor&&) @@ -3161,7 +3489,7 @@ ir.c: # 25| v25_4(void) = Call[ExRaiseAccessViolation] : func:r25_1, 0:r25_3 # 25| m25_5(unknown) = ^CallSideEffect : ~m21_4 # 25| m25_6(unknown) = Chi : total:m21_4, partial:m25_5 -#-----| C++ Exception -> Block 3 +#-----| SEH Exception -> Block 3 # 26| Block 1 # 26| r26_1(int) = Constant[0] : @@ -3208,7 +3536,7 @@ ir.c: # 36| v36_3(void) = Call[ExRaiseAccessViolation] : func:r36_1, 0:r36_2 # 36| m36_4(unknown) = ^CallSideEffect : ~m32_4 # 36| m36_5(unknown) = Chi : total:m32_4, partial:m36_4 -#-----| C++ Exception -> Block 4 +#-----| SEH Exception -> Block 4 # 32| Block 1 # 32| v32_5(void) = Unwind : @@ -3243,7 +3571,7 @@ ir.c: # 40| v40_3(void) = Call[ExRaiseAccessViolation] : func:r40_1, 0:r40_2 # 40| m40_4(unknown) = ^CallSideEffect : ~m36_5 # 40| m40_5(unknown) = Chi : total:m36_5, partial:m40_4 -#-----| C++ Exception -> Block 1 +#-----| SEH Exception -> Block 1 # 32| Block 6 # 32| v32_8(void) = Unreached : @@ -3282,7 +3610,7 @@ ir.c: # 62| v62_3(void) = Call[ExRaiseAccessViolation] : func:r62_1, 0:r62_2 # 62| m62_4(unknown) = ^CallSideEffect : ~m57_4 # 62| m62_5(unknown) = Chi : total:m57_4, partial:m62_4 -#-----| C++ Exception -> Block 1 +#-----| SEH Exception -> Block 1 # 66| Block 1 # 66| r66_1(int) = Constant[1] : @@ -3304,7 +3632,7 @@ ir.c: # 73| v73_3(void) = Call[ExRaiseAccessViolation] : func:r73_1, 0:r73_2 # 73| m73_4(unknown) = ^CallSideEffect : ~m70_4 # 73| m73_5(unknown) = Chi : total:m70_4, partial:m73_4 -#-----| C++ Exception -> Block 2 +#-----| SEH Exception -> Block 2 # 70| Block 1 # 70| v70_5(void) = Unwind : @@ -3317,7 +3645,7 @@ ir.c: # 76| v76_3(void) = Call[ExRaiseAccessViolation] : func:r76_1, 0:r76_2 # 76| m76_4(unknown) = ^CallSideEffect : ~m73_5 # 76| m76_5(unknown) = Chi : total:m73_5, partial:m76_4 -#-----| C++ Exception -> Block 1 +#-----| SEH Exception -> Block 1 # 80| void raise_access_violation() # 80| Block 0 @@ -3330,7 +3658,7 @@ ir.c: # 81| v81_3(void) = Call[ExRaiseAccessViolation] : func:r81_1, 0:r81_2 # 81| m81_4(unknown) = ^CallSideEffect : ~m80_4 # 81| m81_5(unknown) = Chi : total:m80_4, partial:m81_4 -#-----| C++ Exception -> Block 1 +#-----| SEH Exception -> Block 1 # 80| Block 1 # 80| v80_5(void) = Unwind : @@ -8328,7 +8656,7 @@ ir.cpp: # 883| v883_13(void) = AliasedUse : m883_3 # 883| v883_14(void) = ExitFunction : -# 888| void VAListUsage(int, __va_list_tag[1]) +# 888| void VAListUsage(int, __builtin_va_list) # 888| Block 0 # 888| v888_1(void) = EnterFunction : # 888| m888_2(unknown) = AliasedDefinition : @@ -16973,23 +17301,27 @@ ir.cpp: # 2276| m2276_7(unknown) = Chi : total:m2276_3, partial:m2276_6 # 2276| m2276_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2276_1 # 2276| m2276_9(unknown) = Chi : total:m2276_7, partial:m2276_8 -# 2277| r2277_1(glval) = VariableAddress[b] : -# 2277| r2277_2(bool) = Load[b] : &:r2277_1, m2274_6 -# 2277| v2277_3(void) = ConditionalBranch : r2277_2 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| C++ Exception -> Block 7 +#-----| Goto -> Block 3 # 2274| Block 1 -# 2274| m2274_7(unknown) = Phi : from 2:~m2274_10, from 10:~m2290_1 +# 2274| m2274_7(unknown) = Phi : from 2:~m2274_10, from 12:~m2290_1 # 2274| v2274_8(void) = AliasedUse : ~m2274_7 # 2274| v2274_9(void) = ExitFunction : # 2274| Block 2 -# 2274| m2274_10(unknown) = Phi : from 6:~m2283_12, from 9:~m2281_8 +# 2274| m2274_10(unknown) = Phi : from 8:~m2283_12, from 11:~m2282_1 # 2274| v2274_11(void) = Unwind : #-----| Goto -> Block 1 -# 2278| Block 3 +# 2277| Block 3 +# 2277| r2277_1(glval) = VariableAddress[b] : +# 2277| r2277_2(bool) = Load[b] : &:r2277_1, m2274_6 +# 2277| v2277_3(void) = ConditionalBranch : r2277_2 +#-----| False -> Block 5 +#-----| True -> Block 4 + +# 2278| Block 4 # 2278| r2278_1(glval) = VariableAddress[#throw2278:7] : # 2278| r2278_2(glval) = StringConstant["string literal"] : # 2278| r2278_3(char *) = Convert : r2278_2 @@ -17003,18 +17335,22 @@ ir.cpp: # 2281| v2281_6(void) = ^IndirectReadSideEffect[-1] : &:r2281_1, ~m2281_5 # 2281| m2281_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_1 # 2281| m2281_8(unknown) = Chi : total:m2281_5, partial:m2281_7 -#-----| C++ Exception -> Block 5 - -# 2280| Block 4 -# 2280| r2280_1(glval) = VariableAddress[s2] : -# 2280| m2280_2(String) = Uninitialized[s2] : &:r2280_1 -# 2280| m2280_3(unknown) = Chi : total:m2276_9, partial:m2280_2 -# 2280| r2280_4(glval) = FunctionAddress[String] : -# 2280| v2280_5(void) = Call[String] : func:r2280_4, this:r2280_1 -# 2280| m2280_6(unknown) = ^CallSideEffect : ~m2280_3 -# 2280| m2280_7(unknown) = Chi : total:m2280_3, partial:m2280_6 -# 2280| m2280_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 -# 2280| m2280_9(unknown) = Chi : total:m2280_7, partial:m2280_8 +#-----| C++ Exception -> Block 7 + +# 2280| Block 5 +# 2280| r2280_1(glval) = VariableAddress[s2] : +# 2280| m2280_2(String) = Uninitialized[s2] : &:r2280_1 +# 2280| m2280_3(unknown) = Chi : total:m2276_9, partial:m2280_2 +# 2280| r2280_4(glval) = FunctionAddress[String] : +# 2280| v2280_5(void) = Call[String] : func:r2280_4, this:r2280_1 +# 2280| m2280_6(unknown) = ^CallSideEffect : ~m2280_3 +# 2280| m2280_7(unknown) = Chi : total:m2280_3, partial:m2280_6 +# 2280| m2280_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 +# 2280| m2280_9(unknown) = Chi : total:m2280_7, partial:m2280_8 +#-----| C++ Exception -> Block 7 +#-----| Goto -> Block 6 + +# 2281| Block 6 # 2281| r2281_9(glval) = VariableAddress[s2] : # 2281| r2281_10(glval) = FunctionAddress[~String] : # 2281| v2281_11(void) = Call[~String] : func:r2281_10, this:r2281_9 @@ -17031,25 +17367,26 @@ ir.cpp: # 2281| v2281_22(void) = ^IndirectReadSideEffect[-1] : &:r2281_17, ~m2281_21 # 2281| m2281_23(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_17 # 2281| m2281_24(unknown) = Chi : total:m2281_21, partial:m2281_23 -#-----| Goto -> Block 10 +#-----| Goto -> Block 12 -# 2282| Block 5 -# 2282| v2282_1(void) = CatchByType[const char *] : -#-----| C++ Exception -> Block 7 -#-----| Goto -> Block 6 +# 2282| Block 7 +# 2282| m2282_1(unknown) = Phi : from 0:~m2276_9, from 4:~m2281_8, from 5:~m2280_9 +# 2282| v2282_2(void) = CatchByType[const char *] : +#-----| C++ Exception -> Block 9 +#-----| Goto -> Block 8 -# 2282| Block 6 -# 2282| r2282_2(glval) = VariableAddress[s] : -# 2282| m2282_3(char *) = InitializeParameter[s] : &:r2282_2 -# 2282| r2282_4(char *) = Load[s] : &:r2282_2, m2282_3 -# 2282| m2282_5(unknown) = InitializeIndirection[s] : &:r2282_4 -# 2282| m2282_6(unknown) = Chi : total:m2281_8, partial:m2282_5 +# 2282| Block 8 +# 2282| r2282_3(glval) = VariableAddress[s] : +# 2282| m2282_4(char *) = InitializeParameter[s] : &:r2282_3 +# 2282| r2282_5(char *) = Load[s] : &:r2282_3, m2282_4 +# 2282| m2282_6(unknown) = InitializeIndirection[s] : &:r2282_5 +# 2282| m2282_7(unknown) = Chi : total:m2282_1, partial:m2282_6 # 2283| r2283_1(glval) = VariableAddress[#throw2283:5] : # 2283| m2283_2(String) = Uninitialized[#throw2283:5] : &:r2283_1 -# 2283| m2283_3(unknown) = Chi : total:m2282_6, partial:m2283_2 +# 2283| m2283_3(unknown) = Chi : total:m2282_7, partial:m2283_2 # 2283| r2283_4(glval) = FunctionAddress[String] : # 2283| r2283_5(glval) = VariableAddress[s] : -# 2283| r2283_6(char *) = Load[s] : &:r2283_5, m2282_3 +# 2283| r2283_6(char *) = Load[s] : &:r2283_5, m2282_4 # 2283| v2283_7(void) = Call[String] : func:r2283_4, this:r2283_1, 0:r2283_6 # 2283| m2283_8(unknown) = ^CallSideEffect : ~m2283_3 # 2283| m2283_9(unknown) = Chi : total:m2283_3, partial:m2283_8 @@ -17059,26 +17396,26 @@ ir.cpp: # 2283| v2283_13(void) = ThrowValue : &:r2283_1, ~m2283_12 #-----| C++ Exception -> Block 2 -# 2285| Block 7 +# 2285| Block 9 # 2285| v2285_1(void) = CatchByType[const String &] : -#-----| C++ Exception -> Block 9 -#-----| Goto -> Block 8 +#-----| C++ Exception -> Block 11 +#-----| Goto -> Block 10 -# 2285| Block 8 +# 2285| Block 10 # 2285| r2285_2(glval) = VariableAddress[e] : # 2285| m2285_3(String &) = InitializeParameter[e] : &:r2285_2 # 2285| r2285_4(String &) = Load[e] : &:r2285_2, m2285_3 # 2285| m2285_5(unknown) = InitializeIndirection[e] : &:r2285_4 # 2285| v2285_6(void) = NoOp : -#-----| Goto -> Block 10 +#-----| Goto -> Block 12 -# 2287| Block 9 +# 2287| Block 11 # 2287| v2287_1(void) = CatchAny : # 2288| v2288_1(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 2290| Block 10 -# 2290| m2290_1(unknown) = Phi : from 4:~m2281_24, from 8:~m2281_8 +# 2290| Block 12 +# 2290| m2290_1(unknown) = Phi : from 6:~m2281_24, from 10:~m2282_1 # 2290| v2290_2(void) = NoOp : # 2274| v2274_12(void) = ReturnVoid : #-----| Goto -> Block 1 @@ -38935,20 +39272,33 @@ struct_init.cpp: try_except.c: # 6| void f() # 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 -# 7| r7_1(glval) = VariableAddress[x] : -# 7| m7_2(int) = Uninitialized[x] : &:r7_1 -# 7| r7_3(glval) = VariableAddress[y] : -# 7| r7_4(int) = Constant[0] : -# 7| m7_5(int) = Store[y] : &:r7_3, r7_4 -# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : -# 9| r9_2(int) = Constant[0] : -# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 -# 9| m9_4(unknown) = ^CallSideEffect : ~m6_4 -# 9| m9_5(unknown) = Chi : total:m6_4, partial:m9_4 +# 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 +# 7| r7_1(glval) = VariableAddress[x] : +# 7| m7_2(int) = Uninitialized[x] : &:r7_1 +# 7| r7_3(glval) = VariableAddress[y] : +# 7| r7_4(int) = Constant[0] : +# 7| m7_5(int) = Store[y] : &:r7_3, r7_4 +# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : +# 9| r9_2(int) = Constant[0] : +# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 +# 9| m9_4(unknown) = ^CallSideEffect : ~m6_4 +# 9| m9_5(unknown) = Chi : total:m6_4, partial:m9_4 +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 5 + +# 6| Block 1 +# 6| m6_5(unknown) = Phi : from 2:~m13_4, from 6:~m11_5 +# 6| v6_6(void) = AliasedUse : ~m6_5 +# 6| v6_7(void) = ExitFunction : + +# 6| Block 2 +# 6| v6_8(void) = Unwind : +#-----| Goto -> Block 1 + +# 10| Block 3 # 10| r10_1(glval) = VariableAddress[y] : # 10| r10_2(int) = Load[y] : &:r10_1, m7_5 # 10| r10_3(glval) = VariableAddress[x] : @@ -38958,13 +39308,32 @@ try_except.c: # 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 # 11| m11_4(unknown) = ^CallSideEffect : ~m9_5 # 11| m11_5(unknown) = Chi : total:m9_5, partial:m11_4 -# 16| v16_1(void) = NoOp : -# 6| v6_5(void) = ReturnVoid : -# 6| v6_6(void) = AliasedUse : ~m11_5 -# 6| v6_7(void) = ExitFunction : +#-----| Goto -> Block 6 +#-----| SEH Exception -> Block 5 -# 6| Block 1 -# 6| v6_8(void) = Unreached : +# 13| Block 4 +# 13| r13_1(int) = Constant[0] : +# 13| r13_2(bool) = CompareEQ : r13_5, r13_1 +# 13| v13_3(void) = ConditionalBranch : r13_2 +#-----| False -> Block 7 +#-----| True -> Block 2 + +# 13| Block 5 +# 13| m13_4(unknown) = Phi : from 0:~m9_5, from 3:~m11_5 +# 13| r13_5(int) = Constant[0] : +# 13| r13_6(int) = Constant[-1] : +# 13| r13_7(bool) = CompareEQ : r13_5, r13_6 +# 13| v13_8(void) = ConditionalBranch : r13_7 +#-----| False -> Block 4 +#-----| True -> Block 7 + +# 16| Block 6 +# 16| v16_1(void) = NoOp : +# 6| v6_9(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 6| Block 7 +# 6| v6_10(void) = Unreached : # 18| void g() # 18| Block 0 @@ -38982,6 +39351,10 @@ try_except.c: # 21| v21_3(void) = Call[ProbeFunction] : func:r21_1, 0:r21_2 # 21| m21_4(unknown) = ^CallSideEffect : ~m18_4 # 21| m21_5(unknown) = Chi : total:m18_4, partial:m21_4 +#-----| Goto -> Block 1 +#-----| SEH Exception -> Block 2 + +# 22| Block 1 # 22| r22_1(glval) = VariableAddress[y] : # 22| r22_2(int) = Load[y] : &:r22_1, m19_5 # 22| r22_3(glval) = VariableAddress[x] : @@ -38991,16 +39364,21 @@ try_except.c: # 23| v23_3(void) = Call[ProbeFunction] : func:r23_1, 0:r23_2 # 23| m23_4(unknown) = ^CallSideEffect : ~m21_5 # 23| m23_5(unknown) = Chi : total:m21_5, partial:m23_4 -# 26| r26_1(glval) = FunctionAddress[sink] : -# 26| r26_2(glval) = VariableAddress[x] : -# 26| r26_3(int) = Load[x] : &:r26_2, m22_4 -# 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 -# 26| m26_5(unknown) = ^CallSideEffect : ~m23_5 -# 26| m26_6(unknown) = Chi : total:m23_5, partial:m26_5 -# 28| v28_1(void) = NoOp : -# 18| v18_5(void) = ReturnVoid : -# 18| v18_6(void) = AliasedUse : ~m26_6 -# 18| v18_7(void) = ExitFunction : +#-----| Goto|SEH Exception -> Block 2 + +# 26| Block 2 +# 26| m26_1(unknown) = Phi : from 0:~m21_5, from 1:~m23_5 +# 26| m26_2(int) = Phi : from 0:m19_2, from 1:m22_4 +# 26| r26_3(glval) = FunctionAddress[sink] : +# 26| r26_4(glval) = VariableAddress[x] : +# 26| r26_5(int) = Load[x] : &:r26_4, m26_2 +# 26| v26_6(void) = Call[sink] : func:r26_3, 0:r26_5 +# 26| m26_7(unknown) = ^CallSideEffect : ~m26_1 +# 26| m26_8(unknown) = Chi : total:m26_1, partial:m26_7 +# 28| v28_1(void) = NoOp : +# 18| v18_5(void) = ReturnVoid : +# 18| v18_6(void) = AliasedUse : ~m26_8 +# 18| v18_7(void) = ExitFunction : # 32| void h(int) # 32| Block 0 @@ -39018,7 +39396,7 @@ try_except.c: # 35| r35_3(int) = Constant[0] : # 35| r35_4(bool) = CompareNE : r35_2, r35_3 # 35| v35_5(void) = ConditionalBranch : r35_4 -#-----| False -> Block 2 +#-----| False -> Block 6 #-----| True -> Block 1 # 36| Block 1 @@ -39026,35 +39404,243 @@ try_except.c: # 36| v36_2(void) = Call[AfxThrowMemoryException] : func:r36_1 # 36| m36_3(unknown) = ^CallSideEffect : ~m32_4 # 36| m36_4(unknown) = Chi : total:m32_4, partial:m36_3 -#-----| Goto -> Block 2 +#-----| Goto -> Block 6 +#-----| SEH Exception -> Block 4 -# 42| Block 2 -# 42| m42_1(unknown) = Phi : from 0:~m32_4, from 1:~m36_4 +# 39| Block 2 +# 39| r39_1(int) = Constant[0] : +# 39| r39_2(bool) = CompareEQ : r39_7, r39_1 +# 39| v39_3(void) = ConditionalBranch : r39_2 +#-----| False -> Block 3 +#-----| True -> Block 7 + +# 39| Block 3 +# 39| r39_4(int) = Constant[1] : +# 39| r39_5(bool) = CompareEQ : r39_7, r39_4 +# 39| v39_6(void) = ConditionalBranch : r39_5 +#-----| False -> Block 7 +#-----| True -> Block 5 + +# 39| Block 4 +# 39| r39_7(int) = Constant[1] : +# 39| r39_8(int) = Constant[-1] : +# 39| r39_9(bool) = CompareEQ : r39_7, r39_8 +# 39| v39_10(void) = ConditionalBranch : r39_9 +#-----| False -> Block 2 +#-----| True -> Block 7 + +# 40| Block 5 +# 40| r40_1(glval) = FunctionAddress[sink] : +# 40| r40_2(glval) = VariableAddress[x] : +# 40| r40_3(int) = Load[x] : &:r40_2, m33_3 +# 40| v40_4(void) = Call[sink] : func:r40_1, 0:r40_3 +# 40| m40_5(unknown) = ^CallSideEffect : ~m36_4 +# 40| m40_6(unknown) = Chi : total:m36_4, partial:m40_5 +#-----| Goto -> Block 6 + +# 42| Block 6 +# 42| m42_1(unknown) = Phi : from 0:~m32_4, from 1:~m36_4, from 5:~m40_6 # 42| v42_2(void) = NoOp : # 32| v32_7(void) = ReturnVoid : # 32| v32_8(void) = AliasedUse : ~m42_1 # 32| v32_9(void) = ExitFunction : -# 32| Block 3 +# 32| Block 7 # 32| v32_10(void) = Unreached : +# 46| void j(int) +# 46| Block 0 +# 46| v46_1(void) = EnterFunction : +# 46| m46_2(unknown) = AliasedDefinition : +# 46| m46_3(unknown) = InitializeNonLocal : +# 46| m46_4(unknown) = Chi : total:m46_2, partial:m46_3 +# 46| r46_5(glval) = VariableAddress[b] : +# 46| m46_6(int) = InitializeParameter[b] : &:r46_5 +# 47| r47_1(glval) = VariableAddress[x] : +# 47| r47_2(int) = Constant[0] : +# 47| m47_3(int) = Store[x] : &:r47_1, r47_2 +# 49| r49_1(glval) = VariableAddress[y] : +# 49| r49_2(glval) = FunctionAddress[i] : +# 49| r49_3(int) = Call[i] : func:r49_2 +# 49| m49_4(unknown) = ^CallSideEffect : ~m46_4 +# 49| m49_5(unknown) = Chi : total:m46_4, partial:m49_4 +#-----| Goto -> Block 1 +#-----| SEH Exception -> Block 4 + +# 49| Block 1 +# 49| m49_6(int) = Store[y] : &:r49_1, r49_3 +#-----| Goto -> Block 6 + +# 51| Block 2 +# 51| r51_1(int) = Constant[0] : +# 51| r51_2(bool) = CompareEQ : r51_7, r51_1 +# 51| v51_3(void) = ConditionalBranch : r51_2 +#-----| False -> Block 3 +#-----| True -> Block 7 + +# 51| Block 3 +# 51| r51_4(int) = Constant[1] : +# 51| r51_5(bool) = CompareEQ : r51_7, r51_4 +# 51| v51_6(void) = ConditionalBranch : r51_5 +#-----| False -> Block 7 +#-----| True -> Block 5 + +# 51| Block 4 +# 51| r51_7(int) = Constant[1] : +# 51| r51_8(int) = Constant[-1] : +# 51| r51_9(bool) = CompareEQ : r51_7, r51_8 +# 51| v51_10(void) = ConditionalBranch : r51_9 +#-----| False -> Block 2 +#-----| True -> Block 7 + +# 52| Block 5 +# 52| r52_1(glval) = FunctionAddress[sink] : +# 52| r52_2(glval) = VariableAddress[x] : +# 52| r52_3(int) = Load[x] : &:r52_2, m47_3 +# 52| v52_4(void) = Call[sink] : func:r52_1, 0:r52_3 +# 52| m52_5(unknown) = ^CallSideEffect : ~m49_5 +# 52| m52_6(unknown) = Chi : total:m49_5, partial:m52_5 +#-----| Goto -> Block 6 + +# 54| Block 6 +# 54| m54_1(unknown) = Phi : from 1:~m49_5, from 5:~m52_6 +# 54| v54_2(void) = NoOp : +# 46| v46_7(void) = ReturnVoid : +# 46| v46_8(void) = AliasedUse : ~m54_1 +# 46| v46_9(void) = ExitFunction : + +# 46| Block 7 +# 46| v46_10(void) = Unreached : + +# 56| void k(int*, int*, int*) +# 56| Block 0 +# 56| v56_1(void) = EnterFunction : +# 56| m56_2(unknown) = AliasedDefinition : +# 56| m56_3(unknown) = InitializeNonLocal : +# 56| m56_4(unknown) = Chi : total:m56_2, partial:m56_3 +# 56| r56_5(glval) = VariableAddress[b] : +# 56| m56_6(int *) = InitializeParameter[b] : &:r56_5 +# 56| r56_7(int *) = Load[b] : &:r56_5, m56_6 +# 56| m56_8(unknown) = InitializeIndirection[b] : &:r56_7 +# 56| r56_9(glval) = VariableAddress[c] : +# 56| m56_10(int *) = InitializeParameter[c] : &:r56_9 +# 56| r56_11(int *) = Load[c] : &:r56_9, m56_10 +# 56| m56_12(unknown) = InitializeIndirection[c] : &:r56_11 +# 56| r56_13(glval) = VariableAddress[d] : +# 56| m56_14(int *) = InitializeParameter[d] : &:r56_13 +# 56| r56_15(int *) = Load[d] : &:r56_13, m56_14 +# 56| m56_16(unknown) = InitializeIndirection[d] : &:r56_15 +# 57| r57_1(glval) = VariableAddress[x] : +# 57| r57_2(int) = Constant[0] : +# 57| m57_3(int) = Store[x] : &:r57_1, r57_2 +# 59| r59_1(glval) = VariableAddress[b] : +# 59| r59_2(int *) = Load[b] : &:r59_1, m56_6 +# 59| r59_3(int) = Load[?] : &:r59_2, ~m56_8 +#-----| Goto -> Block 1 +#-----| SEH Exception -> Block 6 + +# 59| Block 1 +# 59| r59_4(glval) = VariableAddress[x] : +# 59| m59_5(int) = Store[x] : &:r59_4, r59_3 +# 60| r60_1(glval) = VariableAddress[x] : +# 60| r60_2(int) = Load[x] : &:r60_1, m59_5 +# 60| r60_3(glval) = VariableAddress[c] : +# 60| r60_4(int *) = Load[c] : &:r60_3, m56_10 +# 60| r60_5(glval) = CopyValue : r60_4 +# 60| m60_6(int) = Store[?] : &:r60_5, r60_2 +# 60| m60_7(unknown) = Chi : total:m56_12, partial:m60_6 +#-----| Goto -> Block 2 +#-----| SEH Exception -> Block 6 + +# 61| Block 2 +# 61| r61_1(glval) = VariableAddress[y] : +# 61| r61_2(glval) = VariableAddress[d] : +# 61| r61_3(int *) = Load[d] : &:r61_2, m56_14 +# 61| r61_4(int) = Load[?] : &:r61_3, ~m56_16 +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 6 + +# 61| Block 3 +# 61| m61_5(int) = Store[y] : &:r61_1, r61_4 +#-----| Goto -> Block 8 + +# 63| Block 4 +# 63| r63_1(int) = Constant[0] : +# 63| r63_2(bool) = CompareEQ : r63_9, r63_1 +# 63| v63_3(void) = ConditionalBranch : r63_2 +#-----| False -> Block 5 +#-----| True -> Block 9 + +# 63| Block 5 +# 63| r63_4(int) = Constant[1] : +# 63| r63_5(bool) = CompareEQ : r63_9, r63_4 +# 63| v63_6(void) = ConditionalBranch : r63_5 +#-----| False -> Block 9 +#-----| True -> Block 7 + +# 63| Block 6 +# 63| m63_7(unknown) = Phi : from 0:m56_12, from 1:m60_7, from 2:m60_7 +# 63| m63_8(int) = Phi : from 0:m57_3, from 1:m59_5, from 2:m59_5 +# 63| r63_9(int) = Constant[1] : +# 63| r63_10(int) = Constant[-1] : +# 63| r63_11(bool) = CompareEQ : r63_9, r63_10 +# 63| v63_12(void) = ConditionalBranch : r63_11 +#-----| False -> Block 4 +#-----| True -> Block 9 + +# 64| Block 7 +# 64| r64_1(glval) = FunctionAddress[sink] : +# 64| r64_2(glval) = VariableAddress[x] : +# 64| r64_3(int) = Load[x] : &:r64_2, m63_8 +# 64| v64_4(void) = Call[sink] : func:r64_1, 0:r64_3 +# 64| m64_5(unknown) = ^CallSideEffect : ~m56_4 +# 64| m64_6(unknown) = Chi : total:m56_4, partial:m64_5 +#-----| Goto -> Block 8 + +# 66| Block 8 +# 66| m66_1(unknown) = Phi : from 3:m60_7, from 7:m63_7 +# 66| m66_2(unknown) = Phi : from 3:~m56_4, from 7:~m64_6 +# 66| v66_3(void) = NoOp : +# 56| v56_17(void) = ReturnIndirection[b] : &:r56_7, m56_8 +# 56| v56_18(void) = ReturnIndirection[c] : &:r56_11, m66_1 +# 56| v56_19(void) = ReturnIndirection[d] : &:r56_15, m56_16 +# 56| v56_20(void) = ReturnVoid : +# 56| v56_21(void) = AliasedUse : ~m66_2 +# 56| v56_22(void) = ExitFunction : + +# 56| Block 9 +# 56| v56_23(void) = Unreached : + try_except.cpp: # 6| void f_cpp() # 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 -# 7| r7_1(glval) = VariableAddress[x] : -# 7| m7_2(int) = Uninitialized[x] : &:r7_1 -# 7| r7_3(glval) = VariableAddress[y] : -# 7| r7_4(int) = Constant[0] : -# 7| m7_5(int) = Store[y] : &:r7_3, r7_4 -# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : -# 9| r9_2(int) = Constant[0] : -# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 -# 9| m9_4(unknown) = ^CallSideEffect : ~m6_4 -# 9| m9_5(unknown) = Chi : total:m6_4, partial:m9_4 +# 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 +# 7| r7_1(glval) = VariableAddress[x] : +# 7| m7_2(int) = Uninitialized[x] : &:r7_1 +# 7| r7_3(glval) = VariableAddress[y] : +# 7| r7_4(int) = Constant[0] : +# 7| m7_5(int) = Store[y] : &:r7_3, r7_4 +# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : +# 9| r9_2(int) = Constant[0] : +# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 +# 9| m9_4(unknown) = ^CallSideEffect : ~m6_4 +# 9| m9_5(unknown) = Chi : total:m6_4, partial:m9_4 +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 5 + +# 6| Block 1 +# 6| m6_5(unknown) = Phi : from 2:~m13_4, from 6:~m11_5 +# 6| v6_6(void) = AliasedUse : ~m6_5 +# 6| v6_7(void) = ExitFunction : + +# 6| Block 2 +# 6| v6_8(void) = Unwind : +#-----| Goto -> Block 1 + +# 10| Block 3 # 10| r10_1(glval) = VariableAddress[y] : # 10| r10_2(int) = Load[y] : &:r10_1, m7_5 # 10| r10_3(glval) = VariableAddress[x] : @@ -39064,13 +39650,32 @@ try_except.cpp: # 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 # 11| m11_4(unknown) = ^CallSideEffect : ~m9_5 # 11| m11_5(unknown) = Chi : total:m9_5, partial:m11_4 -# 16| v16_1(void) = NoOp : -# 6| v6_5(void) = ReturnVoid : -# 6| v6_6(void) = AliasedUse : ~m11_5 -# 6| v6_7(void) = ExitFunction : +#-----| Goto -> Block 6 +#-----| SEH Exception -> Block 5 -# 6| Block 1 -# 6| v6_8(void) = Unreached : +# 13| Block 4 +# 13| r13_1(int) = Constant[0] : +# 13| r13_2(bool) = CompareEQ : r13_5, r13_1 +# 13| v13_3(void) = ConditionalBranch : r13_2 +#-----| False -> Block 7 +#-----| True -> Block 2 + +# 13| Block 5 +# 13| m13_4(unknown) = Phi : from 0:~m9_5, from 3:~m11_5 +# 13| r13_5(int) = Constant[0] : +# 13| r13_6(int) = Constant[-1] : +# 13| r13_7(bool) = CompareEQ : r13_5, r13_6 +# 13| v13_8(void) = ConditionalBranch : r13_7 +#-----| False -> Block 4 +#-----| True -> Block 7 + +# 16| Block 6 +# 16| v16_1(void) = NoOp : +# 6| v6_9(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 6| Block 7 +# 6| v6_10(void) = Unreached : # 18| void g_cpp() # 18| Block 0 @@ -39088,6 +39693,10 @@ try_except.cpp: # 21| v21_3(void) = Call[ProbeFunction] : func:r21_1, 0:r21_2 # 21| m21_4(unknown) = ^CallSideEffect : ~m18_4 # 21| m21_5(unknown) = Chi : total:m18_4, partial:m21_4 +#-----| Goto -> Block 1 +#-----| SEH Exception -> Block 2 + +# 22| Block 1 # 22| r22_1(glval) = VariableAddress[y] : # 22| r22_2(int) = Load[y] : &:r22_1, m19_5 # 22| r22_3(glval) = VariableAddress[x] : @@ -39097,16 +39706,21 @@ try_except.cpp: # 23| v23_3(void) = Call[ProbeFunction] : func:r23_1, 0:r23_2 # 23| m23_4(unknown) = ^CallSideEffect : ~m21_5 # 23| m23_5(unknown) = Chi : total:m21_5, partial:m23_4 -# 26| r26_1(glval) = FunctionAddress[sink] : -# 26| r26_2(glval) = VariableAddress[x] : -# 26| r26_3(int) = Load[x] : &:r26_2, m22_4 -# 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 -# 26| m26_5(unknown) = ^CallSideEffect : ~m23_5 -# 26| m26_6(unknown) = Chi : total:m23_5, partial:m26_5 -# 28| v28_1(void) = NoOp : -# 18| v18_5(void) = ReturnVoid : -# 18| v18_6(void) = AliasedUse : ~m26_6 -# 18| v18_7(void) = ExitFunction : +#-----| Goto|SEH Exception -> Block 2 + +# 26| Block 2 +# 26| m26_1(unknown) = Phi : from 0:~m21_5, from 1:~m23_5 +# 26| m26_2(int) = Phi : from 0:m19_2, from 1:m22_4 +# 26| r26_3(glval) = FunctionAddress[sink] : +# 26| r26_4(glval) = VariableAddress[x] : +# 26| r26_5(int) = Load[x] : &:r26_4, m26_2 +# 26| v26_6(void) = Call[sink] : func:r26_3, 0:r26_5 +# 26| m26_7(unknown) = ^CallSideEffect : ~m26_1 +# 26| m26_8(unknown) = Chi : total:m26_1, partial:m26_7 +# 28| v28_1(void) = NoOp : +# 18| v18_5(void) = ReturnVoid : +# 18| v18_6(void) = AliasedUse : ~m26_8 +# 18| v18_7(void) = ExitFunction : # 32| void h_cpp(int) # 32| Block 0 @@ -39124,7 +39738,7 @@ try_except.cpp: # 35| r35_3(int) = Constant[0] : # 35| r35_4(bool) = CompareNE : r35_2, r35_3 # 35| v35_5(void) = ConditionalBranch : r35_4 -#-----| False -> Block 2 +#-----| False -> Block 6 #-----| True -> Block 1 # 36| Block 1 @@ -39132,16 +39746,48 @@ try_except.cpp: # 36| v36_2(void) = Call[AfxThrowMemoryException] : func:r36_1 # 36| m36_3(unknown) = ^CallSideEffect : ~m32_4 # 36| m36_4(unknown) = Chi : total:m32_4, partial:m36_3 -#-----| Goto -> Block 2 +#-----| Goto -> Block 6 +#-----| SEH Exception -> Block 4 -# 42| Block 2 -# 42| m42_1(unknown) = Phi : from 0:~m32_4, from 1:~m36_4 +# 39| Block 2 +# 39| r39_1(int) = Constant[0] : +# 39| r39_2(bool) = CompareEQ : r39_7, r39_1 +# 39| v39_3(void) = ConditionalBranch : r39_2 +#-----| False -> Block 3 +#-----| True -> Block 7 + +# 39| Block 3 +# 39| r39_4(int) = Constant[1] : +# 39| r39_5(bool) = CompareEQ : r39_7, r39_4 +# 39| v39_6(void) = ConditionalBranch : r39_5 +#-----| False -> Block 7 +#-----| True -> Block 5 + +# 39| Block 4 +# 39| r39_7(int) = Constant[1] : +# 39| r39_8(int) = Constant[-1] : +# 39| r39_9(bool) = CompareEQ : r39_7, r39_8 +# 39| v39_10(void) = ConditionalBranch : r39_9 +#-----| False -> Block 2 +#-----| True -> Block 7 + +# 40| Block 5 +# 40| r40_1(glval) = FunctionAddress[sink] : +# 40| r40_2(glval) = VariableAddress[x] : +# 40| r40_3(int) = Load[x] : &:r40_2, m33_3 +# 40| v40_4(void) = Call[sink] : func:r40_1, 0:r40_3 +# 40| m40_5(unknown) = ^CallSideEffect : ~m36_4 +# 40| m40_6(unknown) = Chi : total:m36_4, partial:m40_5 +#-----| Goto -> Block 6 + +# 42| Block 6 +# 42| m42_1(unknown) = Phi : from 0:~m32_4, from 1:~m36_4, from 5:~m40_6 # 42| v42_2(void) = NoOp : # 32| v32_7(void) = ReturnVoid : # 32| v32_8(void) = AliasedUse : ~m42_1 # 32| v32_9(void) = ExitFunction : -# 32| Block 3 +# 32| Block 7 # 32| v32_10(void) = Unreached : # 44| void throw_cpp(int) @@ -39164,10 +39810,10 @@ try_except.cpp: #-----| True -> Block 1 # 48| Block 1 -# 48| r48_1(glval) = VariableAddress[#throw48:13] : -# 48| r48_2(int) = Constant[1] : -# 48| m48_3(int) = Store[#throw48:13] : &:r48_1, r48_2 -# 48| v48_4(void) = ThrowValue : &:r48_1, m48_3 +# 48| r48_1(glval) = VariableAddress[#throw48:7] : +# 48| r48_2(int) = Constant[1] : +# 48| m48_3(int) = Store[#throw48:7] : &:r48_1, r48_2 +# 48| v48_4(void) = ThrowValue : &:r48_1, m48_3 #-----| C++ Exception -> Block 4 # 51| Block 2 diff --git a/cpp/ql/test/library-tests/ir/ir/arm_neon.cpp b/cpp/ql/test/library-tests/ir/ir/arm_neon.cpp new file mode 100644 index 000000000000..d1659dfba35a --- /dev/null +++ b/cpp/ql/test/library-tests/ir/ir/arm_neon.cpp @@ -0,0 +1,24 @@ +// semmle-extractor-options: --edg --target --edg linux_arm64 --gnu_version 150000 + +typedef __Uint8x8_t uint8x8_t; +typedef __Uint16x8_t uint16x8_t; + +uint8x8_t vadd_u8(uint8x8_t a, uint8x8_t b) { + return a + b; +} + +uint16x8_t vaddl_u8(uint8x8_t a, uint8x8_t b); + +uint16x8_t arm_add(uint8x8_t a, uint8x8_t *b) { + uint8x8_t c = vadd_u8(a, *b); + return vaddl_u8(a, c); +} + +typedef __attribute__((neon_vector_type(8))) __mfp8 mfloat8x8_t; +typedef __attribute__((neon_vector_type(8))) char int8x8_t; + +mfloat8x8_t vreinterpret_mf8_s8(int8x8_t); + +mfloat8x8_t arm_reinterpret(int8x8_t *a) { + return vreinterpret_mf8_s8(*a); +} diff --git a/cpp/ql/test/library-tests/ir/ir/arm_sve.cpp b/cpp/ql/test/library-tests/ir/ir/arm_sve.cpp new file mode 100644 index 000000000000..33bad8abbe4e --- /dev/null +++ b/cpp/ql/test/library-tests/ir/ir/arm_sve.cpp @@ -0,0 +1,11 @@ +// semmle-extractor-options: --edg --target --edg linux_arm64 --clang_version 190000 + +typedef __clang_svuint8x2_t svuint8x2_t; +typedef __SVCount_t svcount_t; + +svuint8x2_t svsel_u8_x2(svcount_t, svuint8x2_t, svuint8x2_t); + +svuint8x2_t arm_sel(svcount_t a, svuint8x2_t b, svuint8x2_t *c) { + svuint8x2_t d = svsel_u8_x2(a, b, *c); + return d; +} diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index ee6f9f2073a7..e30106d35204 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -21,14 +21,6 @@ lostReachability backEdgeCountMismatch useNotDominatedByDefinition | ir.cpp:1535:8:1535:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1535:8:1535:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | -| try_except.c:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:6:6:6:6 | void f() | void f() | -| try_except.c:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:6:6:6:6 | void f() | void f() | -| try_except.c:39:15:39:15 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) | -| try_except.c:39:15:39:15 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) | -| try_except.cpp:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.cpp:6:6:6:10 | void f_cpp() | void f_cpp() | -| try_except.cpp:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.cpp:6:6:6:10 | void f_cpp() | void f_cpp() | -| try_except.cpp:39:15:39:15 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.cpp:32:6:32:10 | void h_cpp(int) | void h_cpp(int) | -| try_except.cpp:39:15:39:15 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.cpp:32:6:32:10 | void h_cpp(int) | void h_cpp(int) | switchInstructionWithoutDefaultEdge notMarkedAsConflated wronglyMarkedAsConflated 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 11d74a2a26bd..e57a3bc11b5e 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,120 @@ +arm_neon.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 : + +# 12| uint16x8_t arm_add(uint8x8_t, uint8x8_t*) +# 12| Block 0 +# 12| v12_1(void) = EnterFunction : +# 12| mu12_2(unknown) = AliasedDefinition : +# 12| mu12_3(unknown) = InitializeNonLocal : +# 12| r12_4(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 12| mu12_5(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r12_4 +# 12| r12_6(glval<__attribute((neon_vector_type(8))) unsigned char *>) = VariableAddress[b] : +# 12| mu12_7(__attribute((neon_vector_type(8))) unsigned char *) = InitializeParameter[b] : &:r12_6 +# 12| r12_8(__attribute((neon_vector_type(8))) unsigned char *) = Load[b] : &:r12_6, ~m? +# 12| mu12_9(unknown) = InitializeIndirection[b] : &:r12_8 +# 13| r13_1(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[c] : +# 13| r13_2(glval) = FunctionAddress[vadd_u8] : +# 13| r13_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 13| r13_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r13_3, ~m? +# 13| r13_5(glval<__attribute((neon_vector_type(8))) unsigned char *>) = VariableAddress[b] : +# 13| r13_6(__attribute((neon_vector_type(8))) unsigned char *) = Load[b] : &:r13_5, ~m? +# 13| r13_7(__attribute((neon_vector_type(8))) unsigned char) = Load[?] : &:r13_6, ~m? +# 13| r13_8(__attribute((neon_vector_type(8))) unsigned char) = Call[vadd_u8] : func:r13_2, 0:r13_4, 1:r13_7 +# 13| mu13_9(unknown) = ^CallSideEffect : ~m? +# 13| mu13_10(__attribute((neon_vector_type(8))) unsigned char) = Store[c] : &:r13_1, r13_8 +# 14| r14_1(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] : +# 14| r14_2(glval) = FunctionAddress[vaddl_u8] : +# 14| r14_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 14| r14_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r14_3, ~m? +# 14| r14_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[c] : +# 14| r14_6(__attribute((neon_vector_type(8))) unsigned char) = Load[c] : &:r14_5, ~m? +# 14| r14_7(__attribute((neon_vector_type(8))) unsigned short) = Call[vaddl_u8] : func:r14_2, 0:r14_4, 1:r14_6 +# 14| mu14_8(unknown) = ^CallSideEffect : ~m? +# 14| mu14_9(__attribute((neon_vector_type(8))) unsigned short) = Store[#return] : &:r14_1, r14_7 +# 12| v12_10(void) = ReturnIndirection[b] : &:r12_8, ~m? +# 12| r12_11(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] : +# 12| v12_12(void) = ReturnValue : &:r12_11, ~m? +# 12| v12_13(void) = AliasedUse : ~m? +# 12| v12_14(void) = ExitFunction : + +# 22| mfloat8x8_t arm_reinterpret(int8x8_t*) +# 22| Block 0 +# 22| v22_1(void) = EnterFunction : +# 22| mu22_2(unknown) = AliasedDefinition : +# 22| mu22_3(unknown) = InitializeNonLocal : +# 22| r22_4(glval) = VariableAddress[a] : +# 22| mu22_5(char *) = InitializeParameter[a] : &:r22_4 +# 22| r22_6(char *) = Load[a] : &:r22_4, ~m? +# 22| mu22_7(unknown) = InitializeIndirection[a] : &:r22_6 +# 23| r23_1(glval<__mfp8>) = VariableAddress[#return] : +# 23| r23_2(glval) = FunctionAddress[vreinterpret_mf8_s8] : +# 23| r23_3(glval) = VariableAddress[a] : +# 23| r23_4(char *) = Load[a] : &:r23_3, ~m? +# 23| r23_5(char) = Load[?] : &:r23_4, ~m? +# 23| r23_6(__mfp8) = Call[vreinterpret_mf8_s8] : func:r23_2, 0:r23_5 +# 23| mu23_7(unknown) = ^CallSideEffect : ~m? +# 23| mu23_8(__mfp8) = Store[#return] : &:r23_1, r23_6 +# 22| v22_8(void) = ReturnIndirection[a] : &:r22_6, ~m? +# 22| r22_9(glval<__mfp8>) = VariableAddress[#return] : +# 22| v22_10(void) = ReturnValue : &:r22_9, ~m? +# 22| v22_11(void) = AliasedUse : ~m? +# 22| v22_12(void) = ExitFunction : + +arm_sve.cpp: +# 8| svuint8x2_t arm_sel(svcount_t, svuint8x2_t, svuint8x2_t*) +# 8| Block 0 +# 8| v8_1(void) = EnterFunction : +# 8| mu8_2(unknown) = AliasedDefinition : +# 8| mu8_3(unknown) = InitializeNonLocal : +# 8| r8_4(glval<__SVCount_t>) = VariableAddress[a] : +# 8| mu8_5(__SVCount_t) = InitializeParameter[a] : &:r8_4 +# 8| r8_6(glval<__edg_scalable_vector_type__(unsigned char, 2)>) = VariableAddress[b] : +# 8| mu8_7(__edg_scalable_vector_type__(unsigned char, 2)) = InitializeParameter[b] : &:r8_6 +# 8| r8_8(glval<__edg_scalable_vector_type__(unsigned char, 2) *>) = VariableAddress[c] : +# 8| mu8_9(__edg_scalable_vector_type__(unsigned char, 2) *) = InitializeParameter[c] : &:r8_8 +# 8| r8_10(__edg_scalable_vector_type__(unsigned char, 2) *) = Load[c] : &:r8_8, ~m? +# 8| mu8_11(unknown) = InitializeIndirection[c] : &:r8_10 +# 9| r9_1(glval<__edg_scalable_vector_type__(unsigned char, 2)>) = VariableAddress[d] : +# 9| r9_2(glval) = FunctionAddress[svsel_u8_x2] : +# 9| r9_3(glval<__SVCount_t>) = VariableAddress[a] : +# 9| r9_4(__SVCount_t) = Load[a] : &:r9_3, ~m? +# 9| r9_5(glval<__edg_scalable_vector_type__(unsigned char, 2)>) = VariableAddress[b] : +# 9| r9_6(__edg_scalable_vector_type__(unsigned char, 2)) = Load[b] : &:r9_5, ~m? +# 9| r9_7(glval<__edg_scalable_vector_type__(unsigned char, 2) *>) = VariableAddress[c] : +# 9| r9_8(__edg_scalable_vector_type__(unsigned char, 2) *) = Load[c] : &:r9_7, ~m? +# 9| r9_9(__edg_scalable_vector_type__(unsigned char, 2)) = Load[?] : &:r9_8, ~m? +# 9| r9_10(__edg_scalable_vector_type__(unsigned char, 2)) = Call[svsel_u8_x2] : func:r9_2, 0:r9_4, 1:r9_6, 2:r9_9 +# 9| mu9_11(unknown) = ^CallSideEffect : ~m? +# 9| mu9_12(__edg_scalable_vector_type__(unsigned char, 2)) = Store[d] : &:r9_1, r9_10 +# 10| r10_1(glval<__edg_scalable_vector_type__(unsigned char, 2)>) = VariableAddress[#return] : +# 10| r10_2(glval<__edg_scalable_vector_type__(unsigned char, 2)>) = VariableAddress[d] : +# 10| r10_3(__edg_scalable_vector_type__(unsigned char, 2)) = Load[d] : &:r10_2, ~m? +# 10| mu10_4(__edg_scalable_vector_type__(unsigned char, 2)) = Store[#return] : &:r10_1, r10_3 +# 8| v8_12(void) = ReturnIndirection[c] : &:r8_10, ~m? +# 8| r8_13(glval<__edg_scalable_vector_type__(unsigned char, 2)>) = VariableAddress[#return] : +# 8| v8_14(void) = ReturnValue : &:r8_13, ~m? +# 8| v8_15(void) = AliasedUse : ~m? +# 8| v8_16(void) = ExitFunction : + bad_asts.cpp: # 9| int Bad::S::MemberFunction(int) # 9| Block 0 @@ -786,14 +903,13 @@ coroutines.cpp: #-----| mu0_13(unknown) = ^CallSideEffect : ~m? #-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_10, ~m? #-----| mu0_15(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_10 -# 88| v88_1(void) = NoOp : -#-----| v0_16(void) = NoOp : -#-----| Goto (back edge) -> Block 8 +#-----| C++ Exception -> Block 6 +#-----| Goto -> Block 5 # 87| Block 4 # 87| r87_36(suspend_always *) = CopyValue : r87_20 # 87| r87_37(glval) = CopyValue : r87_36 -#-----| r0_17(glval) = Convert : r87_37 +#-----| r0_16(glval) = Convert : r87_37 # 87| r87_38(glval) = FunctionAddress[await_suspend] : # 87| r87_39(glval>) = VariableAddress[#temp87:20] : # 87| mu87_40(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_39 @@ -806,34 +922,39 @@ coroutines.cpp: # 87| v87_47(void) = ^BufferReadSideEffect[0] : &:r87_44, ~m? # 87| mu87_48(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_39 # 87| r87_49(coroutine_handle) = Load[#temp87:20] : &:r87_39, ~m? -# 87| v87_50(void) = Call[await_suspend] : func:r87_38, this:r0_17, 0:r87_49 +# 87| v87_50(void) = Call[await_suspend] : func:r87_38, this:r0_16, 0:r87_49 # 87| mu87_51(unknown) = ^CallSideEffect : ~m? -#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m? +#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? #-----| Goto -> Block 3 -#-----| Block 5 +# 88| Block 5 +# 88| v88_1(void) = NoOp : +#-----| v0_18(void) = NoOp : +#-----| Goto (back edge) -> Block 9 + +#-----| Block 6 #-----| v0_19(void) = CatchAny : #-----| r0_20(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_21(bool) = Load[(unnamed local variable)] : &:r0_20, ~m? #-----| r0_22(bool) = LogicalNot : r0_21 #-----| v0_23(void) = ConditionalBranch : r0_22 -#-----| False -> Block 7 -#-----| True -> Block 6 +#-----| False -> Block 8 +#-----| True -> Block 7 -#-----| Block 6 +#-----| Block 7 #-----| v0_24(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 87| Block 7 +# 87| Block 8 # 87| r87_52(glval) = VariableAddress[(unnamed local variable)] : # 87| r87_53(glval) = FunctionAddress[unhandled_exception] : # 87| v87_54(void) = Call[unhandled_exception] : func:r87_53, this:r87_52 # 87| mu87_55(unknown) = ^CallSideEffect : ~m? # 87| v87_56(void) = ^IndirectReadSideEffect[-1] : &:r87_52, ~m? # 87| mu87_57(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_52 -#-----| Goto -> Block 8 +#-----| Goto -> Block 9 -#-----| Block 8 +#-----| Block 9 #-----| v0_25(void) = NoOp : # 87| r87_58(glval) = VariableAddress[(unnamed local variable)] : # 87| r87_59(glval) = FunctionAddress[final_suspend] : @@ -860,10 +981,10 @@ coroutines.cpp: # 87| mu87_78(unknown) = ^CallSideEffect : ~m? # 87| v87_79(void) = ^IndirectReadSideEffect[-1] : &:r87_75, ~m? #-----| v0_28(void) = ConditionalBranch : r87_77 -#-----| False -> Block 10 -#-----| True -> Block 9 +#-----| False -> Block 11 +#-----| True -> Block 10 -# 87| Block 9 +# 87| Block 10 # 87| r87_80(suspend_always *) = CopyValue : r87_72 # 87| r87_81(glval) = CopyValue : r87_80 #-----| r0_29(glval) = Convert : r87_81 @@ -875,7 +996,7 @@ coroutines.cpp: # 87| v87_86(void) = ReturnValue : &:r87_85, ~m? #-----| Goto -> Block 1 -# 87| Block 10 +# 87| Block 11 # 87| r87_87(suspend_always *) = CopyValue : r87_72 # 87| r87_88(glval) = CopyValue : r87_87 #-----| r0_31(glval) = Convert : r87_88 @@ -894,7 +1015,7 @@ coroutines.cpp: # 87| v87_101(void) = Call[await_suspend] : func:r87_89, this:r0_31, 0:r87_100 # 87| mu87_102(unknown) = ^CallSideEffect : ~m? #-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, ~m? -#-----| Goto -> Block 9 +#-----| Goto -> Block 10 # 91| co_returnable_value co_return_int(int) # 91| Block 0 @@ -965,14 +1086,13 @@ coroutines.cpp: #-----| mu0_17(unknown) = ^CallSideEffect : ~m? #-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_14, ~m? #-----| mu0_19(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_14 -# 92| v92_3(void) = NoOp : -#-----| v0_20(void) = NoOp : -#-----| Goto (back edge) -> Block 8 +#-----| C++ Exception -> Block 6 +#-----| Goto -> Block 5 # 91| Block 4 # 91| r91_38(suspend_always *) = CopyValue : r91_22 # 91| r91_39(glval) = CopyValue : r91_38 -#-----| r0_21(glval) = Convert : r91_39 +#-----| r0_20(glval) = Convert : r91_39 # 91| r91_40(glval) = FunctionAddress[await_suspend] : # 91| r91_41(glval>) = VariableAddress[#temp91:21] : # 91| mu91_42(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_41 @@ -985,34 +1105,39 @@ coroutines.cpp: # 91| v91_49(void) = ^BufferReadSideEffect[0] : &:r91_46, ~m? # 91| mu91_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_41 # 91| r91_51(coroutine_handle) = Load[#temp91:21] : &:r91_41, ~m? -# 91| v91_52(void) = Call[await_suspend] : func:r91_40, this:r0_21, 0:r91_51 +# 91| v91_52(void) = Call[await_suspend] : func:r91_40, this:r0_20, 0:r91_51 # 91| mu91_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m? +#-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m? #-----| Goto -> Block 3 -#-----| Block 5 +# 92| Block 5 +# 92| v92_3(void) = NoOp : +#-----| v0_22(void) = NoOp : +#-----| Goto (back edge) -> Block 9 + +#-----| Block 6 #-----| v0_23(void) = CatchAny : #-----| r0_24(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_25(bool) = Load[(unnamed local variable)] : &:r0_24, ~m? #-----| r0_26(bool) = LogicalNot : r0_25 #-----| v0_27(void) = ConditionalBranch : r0_26 -#-----| False -> Block 7 -#-----| True -> Block 6 +#-----| False -> Block 8 +#-----| True -> Block 7 -#-----| Block 6 +#-----| Block 7 #-----| v0_28(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 91| Block 7 +# 91| Block 8 # 91| r91_54(glval) = VariableAddress[(unnamed local variable)] : # 91| r91_55(glval) = FunctionAddress[unhandled_exception] : # 91| v91_56(void) = Call[unhandled_exception] : func:r91_55, this:r91_54 # 91| mu91_57(unknown) = ^CallSideEffect : ~m? # 91| v91_58(void) = ^IndirectReadSideEffect[-1] : &:r91_54, ~m? # 91| mu91_59(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_54 -#-----| Goto -> Block 8 +#-----| Goto -> Block 9 -#-----| Block 8 +#-----| Block 9 #-----| v0_29(void) = NoOp : # 91| r91_60(glval) = VariableAddress[(unnamed local variable)] : # 91| r91_61(glval) = FunctionAddress[final_suspend] : @@ -1039,10 +1164,10 @@ coroutines.cpp: # 91| mu91_80(unknown) = ^CallSideEffect : ~m? # 91| v91_81(void) = ^IndirectReadSideEffect[-1] : &:r91_77, ~m? #-----| v0_32(void) = ConditionalBranch : r91_79 -#-----| False -> Block 10 -#-----| True -> Block 9 +#-----| False -> Block 11 +#-----| True -> Block 10 -# 91| Block 9 +# 91| Block 10 # 91| r91_82(suspend_always *) = CopyValue : r91_74 # 91| r91_83(glval) = CopyValue : r91_82 #-----| r0_33(glval) = Convert : r91_83 @@ -1054,7 +1179,7 @@ coroutines.cpp: # 91| v91_88(void) = ReturnValue : &:r91_87, ~m? #-----| Goto -> Block 1 -# 91| Block 10 +# 91| Block 11 # 91| r91_89(suspend_always *) = CopyValue : r91_74 # 91| r91_90(glval) = CopyValue : r91_89 #-----| r0_35(glval) = Convert : r91_90 @@ -1073,7 +1198,7 @@ coroutines.cpp: # 91| v91_103(void) = Call[await_suspend] : func:r91_91, this:r0_35, 0:r91_102 # 91| mu91_104(unknown) = ^CallSideEffect : ~m? #-----| v0_36(void) = ^IndirectReadSideEffect[-1] : &:r0_35, ~m? -#-----| Goto -> Block 9 +#-----| Goto -> Block 10 # 95| co_returnable_void co_yield_value_void(int) # 95| Block 0 @@ -1125,53 +1250,32 @@ coroutines.cpp: #-----| Goto -> Block 1 #-----| Block 3 -#-----| r0_8(bool) = Constant[1] : -#-----| r0_9(glval) = VariableAddress[(unnamed local variable)] : -#-----| mu0_10(bool) = Store[(unnamed local variable)] : &:r0_9, r0_8 -# 95| r95_33(suspend_always *) = CopyValue : r95_22 -# 95| r95_34(glval) = CopyValue : r95_33 -#-----| r0_11(glval) = Convert : r95_34 -# 95| r95_35(glval) = FunctionAddress[await_resume] : -# 95| v95_36(void) = Call[await_resume] : func:r95_35, this:r0_11 -# 95| mu95_37(unknown) = ^CallSideEffect : ~m? -#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m? -#-----| v0_13(void) = CopyValue : v95_36 -# 96| r96_1(glval) = VariableAddress[(unnamed local variable)] : -# 96| r96_2(glval) = FunctionAddress[yield_value] : -# 96| r96_3(glval) = VariableAddress[i] : -# 96| r96_4(int) = Load[i] : &:r96_3, ~m? -# 96| r96_5(suspend_always) = Call[yield_value] : func:r96_2, this:r96_1, 0:r96_4 -# 96| mu96_6(unknown) = ^CallSideEffect : ~m? -# 96| v96_7(void) = ^IndirectReadSideEffect[-1] : &:r96_1, ~m? -# 96| mu96_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_1 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 96| r96_9(glval) = VariableAddress[#temp96:13] : -# 96| r96_10(glval) = VariableAddress[(unnamed local variable)] : -# 96| r96_11(glval) = FunctionAddress[yield_value] : -# 96| r96_12(glval) = VariableAddress[i] : -# 96| r96_13(int) = Load[i] : &:r96_12, ~m? -# 96| r96_14(suspend_always) = Call[yield_value] : func:r96_11, this:r96_10, 0:r96_13 -# 96| mu96_15(unknown) = ^CallSideEffect : ~m? -# 96| v96_16(void) = ^IndirectReadSideEffect[-1] : &:r96_10, ~m? -# 96| mu96_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_10 -# 96| mu96_18(suspend_always) = Store[#temp96:13] : &:r96_9, r96_14 -# 96| r96_19(suspend_always *) = CopyValue : r96_9 -# 96| mu96_20(suspend_always *) = Store[#temp0:0] : &:r0_14, r96_19 -#-----| r0_15(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 96| r96_21(glval) = CopyValue : r0_15 -# 96| r96_22(glval) = Convert : r96_21 -# 96| r96_23(glval) = FunctionAddress[await_ready] : -# 96| r96_24(bool) = Call[await_ready] : func:r96_23, this:r96_22 -# 96| mu96_25(unknown) = ^CallSideEffect : ~m? -# 96| v96_26(void) = ^IndirectReadSideEffect[-1] : &:r96_22, ~m? -# 96| v96_27(void) = ConditionalBranch : r96_24 -#-----| False -> Block 6 -#-----| True -> Block 5 +#-----| r0_8(bool) = Constant[1] : +#-----| r0_9(glval) = VariableAddress[(unnamed local variable)] : +#-----| mu0_10(bool) = Store[(unnamed local variable)] : &:r0_9, r0_8 +# 95| r95_33(suspend_always *) = CopyValue : r95_22 +# 95| r95_34(glval) = CopyValue : r95_33 +#-----| r0_11(glval) = Convert : r95_34 +# 95| r95_35(glval) = FunctionAddress[await_resume] : +# 95| v95_36(void) = Call[await_resume] : func:r95_35, this:r0_11 +# 95| mu95_37(unknown) = ^CallSideEffect : ~m? +#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m? +#-----| v0_13(void) = CopyValue : v95_36 +# 96| r96_1(glval) = VariableAddress[(unnamed local variable)] : +# 96| r96_2(glval) = FunctionAddress[yield_value] : +# 96| r96_3(glval) = VariableAddress[i] : +# 96| r96_4(int) = Load[i] : &:r96_3, ~m? +# 96| r96_5(suspend_always) = Call[yield_value] : func:r96_2, this:r96_1, 0:r96_4 +# 96| mu96_6(unknown) = ^CallSideEffect : ~m? +# 96| v96_7(void) = ^IndirectReadSideEffect[-1] : &:r96_1, ~m? +# 96| mu96_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_1 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 5 # 95| Block 4 # 95| r95_38(suspend_always *) = CopyValue : r95_22 # 95| r95_39(glval) = CopyValue : r95_38 -#-----| r0_16(glval) = Convert : r95_39 +#-----| r0_14(glval) = Convert : r95_39 # 95| r95_40(glval) = FunctionAddress[await_suspend] : # 95| r95_41(glval>) = VariableAddress[#temp95:20] : # 95| mu95_42(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_41 @@ -1184,12 +1288,41 @@ coroutines.cpp: # 95| v95_49(void) = ^BufferReadSideEffect[0] : &:r95_46, ~m? # 95| mu95_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_41 # 95| r95_51(coroutine_handle) = Load[#temp95:20] : &:r95_41, ~m? -# 95| v95_52(void) = Call[await_suspend] : func:r95_40, this:r0_16, 0:r95_51 +# 95| v95_52(void) = Call[await_suspend] : func:r95_40, this:r0_14, 0:r95_51 # 95| mu95_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? +#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_14, ~m? #-----| Goto -> Block 3 -# 96| Block 5 +#-----| Block 5 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 96| r96_9(glval) = VariableAddress[#temp96:13] : +# 96| r96_10(glval) = VariableAddress[(unnamed local variable)] : +# 96| r96_11(glval) = FunctionAddress[yield_value] : +# 96| r96_12(glval) = VariableAddress[i] : +# 96| r96_13(int) = Load[i] : &:r96_12, ~m? +# 96| r96_14(suspend_always) = Call[yield_value] : func:r96_11, this:r96_10, 0:r96_13 +# 96| mu96_15(unknown) = ^CallSideEffect : ~m? +# 96| v96_16(void) = ^IndirectReadSideEffect[-1] : &:r96_10, ~m? +# 96| mu96_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_10 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 6 + +# 96| Block 6 +# 96| mu96_18(suspend_always) = Store[#temp96:13] : &:r96_9, r96_14 +# 96| r96_19(suspend_always *) = CopyValue : r96_9 +# 96| mu96_20(suspend_always *) = Store[#temp0:0] : &:r0_16, r96_19 +#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 96| r96_21(glval) = CopyValue : r0_17 +# 96| r96_22(glval) = Convert : r96_21 +# 96| r96_23(glval) = FunctionAddress[await_ready] : +# 96| r96_24(bool) = Call[await_ready] : func:r96_23, this:r96_22 +# 96| mu96_25(unknown) = ^CallSideEffect : ~m? +# 96| v96_26(void) = ^IndirectReadSideEffect[-1] : &:r96_22, ~m? +# 96| v96_27(void) = ConditionalBranch : r96_24 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 96| Block 7 # 96| r96_28(suspend_always *) = CopyValue : r96_19 # 96| r96_29(glval) = CopyValue : r96_28 #-----| r0_18(glval) = Convert : r96_29 @@ -1203,14 +1336,13 @@ coroutines.cpp: #-----| mu0_23(unknown) = ^CallSideEffect : ~m? #-----| v0_24(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m? #-----| mu0_25(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_20 -# 97| v97_1(void) = NoOp : -#-----| v0_26(void) = NoOp : -#-----| Goto (back edge) -> Block 10 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 9 -# 96| Block 6 +# 96| Block 8 # 96| r96_33(suspend_always *) = CopyValue : r96_19 # 96| r96_34(glval) = CopyValue : r96_33 -#-----| r0_27(glval) = Convert : r96_34 +#-----| r0_26(glval) = Convert : r96_34 # 96| r96_35(glval) = FunctionAddress[await_suspend] : # 96| r96_36(glval>) = VariableAddress[#temp96:3] : # 96| mu96_37(coroutine_handle) = Uninitialized[#temp96:3] : &:r96_36 @@ -1223,34 +1355,39 @@ coroutines.cpp: # 96| v96_44(void) = ^BufferReadSideEffect[0] : &:r96_41, ~m? # 96| mu96_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r96_36 # 96| r96_46(coroutine_handle) = Load[#temp96:3] : &:r96_36, ~m? -# 96| v96_47(void) = Call[await_suspend] : func:r96_35, this:r0_27, 0:r96_46 +# 96| v96_47(void) = Call[await_suspend] : func:r96_35, this:r0_26, 0:r96_46 # 96| mu96_48(unknown) = ^CallSideEffect : ~m? -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? -#-----| Goto -> Block 5 +#-----| v0_27(void) = ^IndirectReadSideEffect[-1] : &:r0_26, ~m? +#-----| Goto -> Block 7 -#-----| Block 7 +# 97| Block 9 +# 97| v97_1(void) = NoOp : +#-----| v0_28(void) = NoOp : +#-----| Goto (back edge) -> Block 13 + +#-----| Block 10 #-----| v0_29(void) = CatchAny : #-----| r0_30(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_31(bool) = Load[(unnamed local variable)] : &:r0_30, ~m? #-----| r0_32(bool) = LogicalNot : r0_31 #-----| v0_33(void) = ConditionalBranch : r0_32 -#-----| False -> Block 9 -#-----| True -> Block 8 +#-----| False -> Block 12 +#-----| True -> Block 11 -#-----| Block 8 +#-----| Block 11 #-----| v0_34(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 95| Block 9 +# 95| Block 12 # 95| r95_54(glval) = VariableAddress[(unnamed local variable)] : # 95| r95_55(glval) = FunctionAddress[unhandled_exception] : # 95| v95_56(void) = Call[unhandled_exception] : func:r95_55, this:r95_54 # 95| mu95_57(unknown) = ^CallSideEffect : ~m? # 95| v95_58(void) = ^IndirectReadSideEffect[-1] : &:r95_54, ~m? # 95| mu95_59(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_54 -#-----| Goto -> Block 10 +#-----| Goto -> Block 13 -#-----| Block 10 +#-----| Block 13 #-----| v0_35(void) = NoOp : # 95| r95_60(glval) = VariableAddress[(unnamed local variable)] : # 95| r95_61(glval) = FunctionAddress[final_suspend] : @@ -1277,10 +1414,10 @@ coroutines.cpp: # 95| mu95_80(unknown) = ^CallSideEffect : ~m? # 95| v95_81(void) = ^IndirectReadSideEffect[-1] : &:r95_77, ~m? #-----| v0_38(void) = ConditionalBranch : r95_79 -#-----| False -> Block 12 -#-----| True -> Block 11 +#-----| False -> Block 15 +#-----| True -> Block 14 -# 95| Block 11 +# 95| Block 14 # 95| r95_82(suspend_always *) = CopyValue : r95_74 # 95| r95_83(glval) = CopyValue : r95_82 #-----| r0_39(glval) = Convert : r95_83 @@ -1292,7 +1429,7 @@ coroutines.cpp: # 95| v95_88(void) = ReturnValue : &:r95_87, ~m? #-----| Goto -> Block 1 -# 95| Block 12 +# 95| Block 15 # 95| r95_89(suspend_always *) = CopyValue : r95_74 # 95| r95_90(glval) = CopyValue : r95_89 #-----| r0_41(glval) = Convert : r95_90 @@ -1311,7 +1448,7 @@ coroutines.cpp: # 95| v95_103(void) = Call[await_suspend] : func:r95_91, this:r0_41, 0:r95_102 # 95| mu95_104(unknown) = ^CallSideEffect : ~m? #-----| v0_42(void) = ^IndirectReadSideEffect[-1] : &:r0_41, ~m? -#-----| Goto -> Block 11 +#-----| Goto -> Block 14 # 99| co_returnable_value co_yield_value_value(int) # 99| Block 0 @@ -1363,53 +1500,32 @@ coroutines.cpp: #-----| Goto -> Block 1 #-----| Block 3 -#-----| r0_8(bool) = Constant[1] : -#-----| r0_9(glval) = VariableAddress[(unnamed local variable)] : -#-----| mu0_10(bool) = Store[(unnamed local variable)] : &:r0_9, r0_8 -# 99| r99_33(suspend_always *) = CopyValue : r99_22 -# 99| r99_34(glval) = CopyValue : r99_33 -#-----| r0_11(glval) = Convert : r99_34 -# 99| r99_35(glval) = FunctionAddress[await_resume] : -# 99| v99_36(void) = Call[await_resume] : func:r99_35, this:r0_11 -# 99| mu99_37(unknown) = ^CallSideEffect : ~m? -#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m? -#-----| v0_13(void) = CopyValue : v99_36 -# 100| r100_1(glval) = VariableAddress[(unnamed local variable)] : -# 100| r100_2(glval) = FunctionAddress[yield_value] : -# 100| r100_3(glval) = VariableAddress[i] : -# 100| r100_4(int) = Load[i] : &:r100_3, ~m? -# 100| r100_5(suspend_always) = Call[yield_value] : func:r100_2, this:r100_1, 0:r100_4 -# 100| mu100_6(unknown) = ^CallSideEffect : ~m? -# 100| v100_7(void) = ^IndirectReadSideEffect[-1] : &:r100_1, ~m? -# 100| mu100_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_1 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 100| r100_9(glval) = VariableAddress[#temp100:13] : -# 100| r100_10(glval) = VariableAddress[(unnamed local variable)] : -# 100| r100_11(glval) = FunctionAddress[yield_value] : -# 100| r100_12(glval) = VariableAddress[i] : -# 100| r100_13(int) = Load[i] : &:r100_12, ~m? -# 100| r100_14(suspend_always) = Call[yield_value] : func:r100_11, this:r100_10, 0:r100_13 -# 100| mu100_15(unknown) = ^CallSideEffect : ~m? -# 100| v100_16(void) = ^IndirectReadSideEffect[-1] : &:r100_10, ~m? -# 100| mu100_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_10 -# 100| mu100_18(suspend_always) = Store[#temp100:13] : &:r100_9, r100_14 -# 100| r100_19(suspend_always *) = CopyValue : r100_9 -# 100| mu100_20(suspend_always *) = Store[#temp0:0] : &:r0_14, r100_19 -#-----| r0_15(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 100| r100_21(glval) = CopyValue : r0_15 -# 100| r100_22(glval) = Convert : r100_21 -# 100| r100_23(glval) = FunctionAddress[await_ready] : -# 100| r100_24(bool) = Call[await_ready] : func:r100_23, this:r100_22 -# 100| mu100_25(unknown) = ^CallSideEffect : ~m? -# 100| v100_26(void) = ^IndirectReadSideEffect[-1] : &:r100_22, ~m? -# 100| v100_27(void) = ConditionalBranch : r100_24 -#-----| False -> Block 6 -#-----| True -> Block 5 +#-----| r0_8(bool) = Constant[1] : +#-----| r0_9(glval) = VariableAddress[(unnamed local variable)] : +#-----| mu0_10(bool) = Store[(unnamed local variable)] : &:r0_9, r0_8 +# 99| r99_33(suspend_always *) = CopyValue : r99_22 +# 99| r99_34(glval) = CopyValue : r99_33 +#-----| r0_11(glval) = Convert : r99_34 +# 99| r99_35(glval) = FunctionAddress[await_resume] : +# 99| v99_36(void) = Call[await_resume] : func:r99_35, this:r0_11 +# 99| mu99_37(unknown) = ^CallSideEffect : ~m? +#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m? +#-----| v0_13(void) = CopyValue : v99_36 +# 100| r100_1(glval) = VariableAddress[(unnamed local variable)] : +# 100| r100_2(glval) = FunctionAddress[yield_value] : +# 100| r100_3(glval) = VariableAddress[i] : +# 100| r100_4(int) = Load[i] : &:r100_3, ~m? +# 100| r100_5(suspend_always) = Call[yield_value] : func:r100_2, this:r100_1, 0:r100_4 +# 100| mu100_6(unknown) = ^CallSideEffect : ~m? +# 100| v100_7(void) = ^IndirectReadSideEffect[-1] : &:r100_1, ~m? +# 100| mu100_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_1 +#-----| C++ Exception -> Block 9 +#-----| Goto -> Block 5 # 99| Block 4 # 99| r99_38(suspend_always *) = CopyValue : r99_22 # 99| r99_39(glval) = CopyValue : r99_38 -#-----| r0_16(glval) = Convert : r99_39 +#-----| r0_14(glval) = Convert : r99_39 # 99| r99_40(glval) = FunctionAddress[await_suspend] : # 99| r99_41(glval>) = VariableAddress[#temp99:21] : # 99| mu99_42(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_41 @@ -1422,12 +1538,41 @@ coroutines.cpp: # 99| v99_49(void) = ^BufferReadSideEffect[0] : &:r99_46, ~m? # 99| mu99_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_41 # 99| r99_51(coroutine_handle) = Load[#temp99:21] : &:r99_41, ~m? -# 99| v99_52(void) = Call[await_suspend] : func:r99_40, this:r0_16, 0:r99_51 +# 99| v99_52(void) = Call[await_suspend] : func:r99_40, this:r0_14, 0:r99_51 # 99| mu99_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? +#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_14, ~m? #-----| Goto -> Block 3 -# 100| Block 5 +#-----| Block 5 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 100| r100_9(glval) = VariableAddress[#temp100:13] : +# 100| r100_10(glval) = VariableAddress[(unnamed local variable)] : +# 100| r100_11(glval) = FunctionAddress[yield_value] : +# 100| r100_12(glval) = VariableAddress[i] : +# 100| r100_13(int) = Load[i] : &:r100_12, ~m? +# 100| r100_14(suspend_always) = Call[yield_value] : func:r100_11, this:r100_10, 0:r100_13 +# 100| mu100_15(unknown) = ^CallSideEffect : ~m? +# 100| v100_16(void) = ^IndirectReadSideEffect[-1] : &:r100_10, ~m? +# 100| mu100_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_10 +#-----| C++ Exception -> Block 9 +#-----| Goto -> Block 6 + +# 100| Block 6 +# 100| mu100_18(suspend_always) = Store[#temp100:13] : &:r100_9, r100_14 +# 100| r100_19(suspend_always *) = CopyValue : r100_9 +# 100| mu100_20(suspend_always *) = Store[#temp0:0] : &:r0_16, r100_19 +#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 100| r100_21(glval) = CopyValue : r0_17 +# 100| r100_22(glval) = Convert : r100_21 +# 100| r100_23(glval) = FunctionAddress[await_ready] : +# 100| r100_24(bool) = Call[await_ready] : func:r100_23, this:r100_22 +# 100| mu100_25(unknown) = ^CallSideEffect : ~m? +# 100| v100_26(void) = ^IndirectReadSideEffect[-1] : &:r100_22, ~m? +# 100| v100_27(void) = ConditionalBranch : r100_24 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 100| Block 7 # 100| r100_28(suspend_always *) = CopyValue : r100_19 # 100| r100_29(glval) = CopyValue : r100_28 #-----| r0_18(glval) = Convert : r100_29 @@ -1435,9 +1580,9 @@ coroutines.cpp: # 100| v100_31(void) = Call[await_resume] : func:r100_30, this:r0_18 # 100| mu100_32(unknown) = ^CallSideEffect : ~m? #-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, ~m? -#-----| Goto -> Block 10 +#-----| Goto -> Block 12 -# 100| Block 6 +# 100| Block 8 # 100| r100_33(suspend_always *) = CopyValue : r100_19 # 100| r100_34(glval) = CopyValue : r100_33 #-----| r0_20(glval) = Convert : r100_34 @@ -1456,31 +1601,31 @@ coroutines.cpp: # 100| v100_47(void) = Call[await_suspend] : func:r100_35, this:r0_20, 0:r100_46 # 100| mu100_48(unknown) = ^CallSideEffect : ~m? #-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m? -#-----| Goto -> Block 5 +#-----| Goto -> Block 7 -#-----| Block 7 +#-----| Block 9 #-----| v0_22(void) = CatchAny : #-----| r0_23(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_24(bool) = Load[(unnamed local variable)] : &:r0_23, ~m? #-----| r0_25(bool) = LogicalNot : r0_24 #-----| v0_26(void) = ConditionalBranch : r0_25 -#-----| False -> Block 9 -#-----| True -> Block 8 +#-----| False -> Block 11 +#-----| True -> Block 10 -#-----| Block 8 +#-----| Block 10 #-----| v0_27(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 99| Block 9 +# 99| Block 11 # 99| r99_54(glval) = VariableAddress[(unnamed local variable)] : # 99| r99_55(glval) = FunctionAddress[unhandled_exception] : # 99| v99_56(void) = Call[unhandled_exception] : func:r99_55, this:r99_54 # 99| mu99_57(unknown) = ^CallSideEffect : ~m? # 99| v99_58(void) = ^IndirectReadSideEffect[-1] : &:r99_54, ~m? # 99| mu99_59(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_54 -#-----| Goto -> Block 10 +#-----| Goto -> Block 12 -#-----| Block 10 +#-----| Block 12 #-----| v0_28(void) = NoOp : # 99| r99_60(glval) = VariableAddress[(unnamed local variable)] : # 99| r99_61(glval) = FunctionAddress[final_suspend] : @@ -1507,10 +1652,10 @@ coroutines.cpp: # 99| mu99_80(unknown) = ^CallSideEffect : ~m? # 99| v99_81(void) = ^IndirectReadSideEffect[-1] : &:r99_77, ~m? #-----| v0_31(void) = ConditionalBranch : r99_79 -#-----| False -> Block 12 -#-----| True -> Block 11 +#-----| False -> Block 14 +#-----| True -> Block 13 -# 99| Block 11 +# 99| Block 13 # 99| r99_82(suspend_always *) = CopyValue : r99_74 # 99| r99_83(glval) = CopyValue : r99_82 #-----| r0_32(glval) = Convert : r99_83 @@ -1522,7 +1667,7 @@ coroutines.cpp: # 99| v99_88(void) = ReturnValue : &:r99_87, ~m? #-----| Goto -> Block 1 -# 99| Block 12 +# 99| Block 14 # 99| r99_89(suspend_always *) = CopyValue : r99_74 # 99| r99_90(glval) = CopyValue : r99_89 #-----| r0_34(glval) = Convert : r99_90 @@ -1541,7 +1686,7 @@ coroutines.cpp: # 99| v99_103(void) = Call[await_suspend] : func:r99_91, this:r0_34, 0:r99_102 # 99| mu99_104(unknown) = ^CallSideEffect : ~m? #-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, ~m? -#-----| Goto -> Block 11 +#-----| Goto -> Block 13 # 103| co_returnable_void co_yield_and_return_void(int) # 103| Block 0 @@ -1612,34 +1757,13 @@ coroutines.cpp: # 104| mu104_6(unknown) = ^CallSideEffect : ~m? # 104| v104_7(void) = ^IndirectReadSideEffect[-1] : &:r104_1, ~m? # 104| mu104_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_1 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 104| r104_9(glval) = VariableAddress[#temp104:13] : -# 104| r104_10(glval) = VariableAddress[(unnamed local variable)] : -# 104| r104_11(glval) = FunctionAddress[yield_value] : -# 104| r104_12(glval) = VariableAddress[i] : -# 104| r104_13(int) = Load[i] : &:r104_12, ~m? -# 104| r104_14(suspend_always) = Call[yield_value] : func:r104_11, this:r104_10, 0:r104_13 -# 104| mu104_15(unknown) = ^CallSideEffect : ~m? -# 104| v104_16(void) = ^IndirectReadSideEffect[-1] : &:r104_10, ~m? -# 104| mu104_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_10 -# 104| mu104_18(suspend_always) = Store[#temp104:13] : &:r104_9, r104_14 -# 104| r104_19(suspend_always *) = CopyValue : r104_9 -# 104| mu104_20(suspend_always *) = Store[#temp0:0] : &:r0_14, r104_19 -#-----| r0_15(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 104| r104_21(glval) = CopyValue : r0_15 -# 104| r104_22(glval) = Convert : r104_21 -# 104| r104_23(glval) = FunctionAddress[await_ready] : -# 104| r104_24(bool) = Call[await_ready] : func:r104_23, this:r104_22 -# 104| mu104_25(unknown) = ^CallSideEffect : ~m? -# 104| v104_26(void) = ^IndirectReadSideEffect[-1] : &:r104_22, ~m? -# 104| v104_27(void) = ConditionalBranch : r104_24 -#-----| False -> Block 6 -#-----| True -> Block 5 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 5 # 103| Block 4 # 103| r103_38(suspend_always *) = CopyValue : r103_22 # 103| r103_39(glval) = CopyValue : r103_38 -#-----| r0_16(glval) = Convert : r103_39 +#-----| r0_14(glval) = Convert : r103_39 # 103| r103_40(glval) = FunctionAddress[await_suspend] : # 103| r103_41(glval>) = VariableAddress[#temp103:20] : # 103| mu103_42(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_41 @@ -1652,12 +1776,41 @@ coroutines.cpp: # 103| v103_49(void) = ^BufferReadSideEffect[0] : &:r103_46, ~m? # 103| mu103_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_41 # 103| r103_51(coroutine_handle) = Load[#temp103:20] : &:r103_41, ~m? -# 103| v103_52(void) = Call[await_suspend] : func:r103_40, this:r0_16, 0:r103_51 +# 103| v103_52(void) = Call[await_suspend] : func:r103_40, this:r0_14, 0:r103_51 # 103| mu103_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? +#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_14, ~m? #-----| Goto -> Block 3 -# 104| Block 5 +#-----| Block 5 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 104| r104_9(glval) = VariableAddress[#temp104:13] : +# 104| r104_10(glval) = VariableAddress[(unnamed local variable)] : +# 104| r104_11(glval) = FunctionAddress[yield_value] : +# 104| r104_12(glval) = VariableAddress[i] : +# 104| r104_13(int) = Load[i] : &:r104_12, ~m? +# 104| r104_14(suspend_always) = Call[yield_value] : func:r104_11, this:r104_10, 0:r104_13 +# 104| mu104_15(unknown) = ^CallSideEffect : ~m? +# 104| v104_16(void) = ^IndirectReadSideEffect[-1] : &:r104_10, ~m? +# 104| mu104_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_10 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 6 + +# 104| Block 6 +# 104| mu104_18(suspend_always) = Store[#temp104:13] : &:r104_9, r104_14 +# 104| r104_19(suspend_always *) = CopyValue : r104_9 +# 104| mu104_20(suspend_always *) = Store[#temp0:0] : &:r0_16, r104_19 +#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 104| r104_21(glval) = CopyValue : r0_17 +# 104| r104_22(glval) = Convert : r104_21 +# 104| r104_23(glval) = FunctionAddress[await_ready] : +# 104| r104_24(bool) = Call[await_ready] : func:r104_23, this:r104_22 +# 104| mu104_25(unknown) = ^CallSideEffect : ~m? +# 104| v104_26(void) = ^IndirectReadSideEffect[-1] : &:r104_22, ~m? +# 104| v104_27(void) = ConditionalBranch : r104_24 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 104| Block 7 # 104| r104_28(suspend_always *) = CopyValue : r104_19 # 104| r104_29(glval) = CopyValue : r104_28 #-----| r0_18(glval) = Convert : r104_29 @@ -1671,14 +1824,13 @@ coroutines.cpp: #-----| mu0_23(unknown) = ^CallSideEffect : ~m? #-----| v0_24(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m? #-----| mu0_25(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_20 -# 105| v105_1(void) = NoOp : -#-----| v0_26(void) = NoOp : -#-----| Goto (back edge) -> Block 10 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 9 -# 104| Block 6 +# 104| Block 8 # 104| r104_33(suspend_always *) = CopyValue : r104_19 # 104| r104_34(glval) = CopyValue : r104_33 -#-----| r0_27(glval) = Convert : r104_34 +#-----| r0_26(glval) = Convert : r104_34 # 104| r104_35(glval) = FunctionAddress[await_suspend] : # 104| r104_36(glval>) = VariableAddress[#temp104:3] : # 104| mu104_37(coroutine_handle) = Uninitialized[#temp104:3] : &:r104_36 @@ -1691,34 +1843,39 @@ coroutines.cpp: # 104| v104_44(void) = ^BufferReadSideEffect[0] : &:r104_41, ~m? # 104| mu104_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r104_36 # 104| r104_46(coroutine_handle) = Load[#temp104:3] : &:r104_36, ~m? -# 104| v104_47(void) = Call[await_suspend] : func:r104_35, this:r0_27, 0:r104_46 +# 104| v104_47(void) = Call[await_suspend] : func:r104_35, this:r0_26, 0:r104_46 # 104| mu104_48(unknown) = ^CallSideEffect : ~m? -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? -#-----| Goto -> Block 5 +#-----| v0_27(void) = ^IndirectReadSideEffect[-1] : &:r0_26, ~m? +#-----| Goto -> Block 7 -#-----| Block 7 +# 105| Block 9 +# 105| v105_1(void) = NoOp : +#-----| v0_28(void) = NoOp : +#-----| Goto (back edge) -> Block 13 + +#-----| Block 10 #-----| v0_29(void) = CatchAny : #-----| r0_30(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_31(bool) = Load[(unnamed local variable)] : &:r0_30, ~m? #-----| r0_32(bool) = LogicalNot : r0_31 #-----| v0_33(void) = ConditionalBranch : r0_32 -#-----| False -> Block 9 -#-----| True -> Block 8 +#-----| False -> Block 12 +#-----| True -> Block 11 -#-----| Block 8 +#-----| Block 11 #-----| v0_34(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 103| Block 9 +# 103| Block 12 # 103| r103_54(glval) = VariableAddress[(unnamed local variable)] : # 103| r103_55(glval) = FunctionAddress[unhandled_exception] : # 103| v103_56(void) = Call[unhandled_exception] : func:r103_55, this:r103_54 # 103| mu103_57(unknown) = ^CallSideEffect : ~m? # 103| v103_58(void) = ^IndirectReadSideEffect[-1] : &:r103_54, ~m? # 103| mu103_59(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_54 -#-----| Goto -> Block 10 +#-----| Goto -> Block 13 -#-----| Block 10 +#-----| Block 13 #-----| v0_35(void) = NoOp : # 103| r103_60(glval) = VariableAddress[(unnamed local variable)] : # 103| r103_61(glval) = FunctionAddress[final_suspend] : @@ -1745,10 +1902,10 @@ coroutines.cpp: # 103| mu103_80(unknown) = ^CallSideEffect : ~m? # 103| v103_81(void) = ^IndirectReadSideEffect[-1] : &:r103_77, ~m? #-----| v0_38(void) = ConditionalBranch : r103_79 -#-----| False -> Block 12 -#-----| True -> Block 11 +#-----| False -> Block 15 +#-----| True -> Block 14 -# 103| Block 11 +# 103| Block 14 # 103| r103_82(suspend_always *) = CopyValue : r103_74 # 103| r103_83(glval) = CopyValue : r103_82 #-----| r0_39(glval) = Convert : r103_83 @@ -1760,7 +1917,7 @@ coroutines.cpp: # 103| v103_88(void) = ReturnValue : &:r103_87, ~m? #-----| Goto -> Block 1 -# 103| Block 12 +# 103| Block 15 # 103| r103_89(suspend_always *) = CopyValue : r103_74 # 103| r103_90(glval) = CopyValue : r103_89 #-----| r0_41(glval) = Convert : r103_90 @@ -1779,7 +1936,7 @@ coroutines.cpp: # 103| v103_103(void) = Call[await_suspend] : func:r103_91, this:r0_41, 0:r103_102 # 103| mu103_104(unknown) = ^CallSideEffect : ~m? #-----| v0_42(void) = ^IndirectReadSideEffect[-1] : &:r0_41, ~m? -#-----| Goto -> Block 11 +#-----| Goto -> Block 14 # 108| co_returnable_value co_yield_and_return_value(int) # 108| Block 0 @@ -1850,34 +2007,13 @@ coroutines.cpp: # 109| mu109_6(unknown) = ^CallSideEffect : ~m? # 109| v109_7(void) = ^IndirectReadSideEffect[-1] : &:r109_1, ~m? # 109| mu109_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_1 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 109| r109_9(glval) = VariableAddress[#temp109:13] : -# 109| r109_10(glval) = VariableAddress[(unnamed local variable)] : -# 109| r109_11(glval) = FunctionAddress[yield_value] : -# 109| r109_12(glval) = VariableAddress[i] : -# 109| r109_13(int) = Load[i] : &:r109_12, ~m? -# 109| r109_14(suspend_always) = Call[yield_value] : func:r109_11, this:r109_10, 0:r109_13 -# 109| mu109_15(unknown) = ^CallSideEffect : ~m? -# 109| v109_16(void) = ^IndirectReadSideEffect[-1] : &:r109_10, ~m? -# 109| mu109_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_10 -# 109| mu109_18(suspend_always) = Store[#temp109:13] : &:r109_9, r109_14 -# 109| r109_19(suspend_always *) = CopyValue : r109_9 -# 109| mu109_20(suspend_always *) = Store[#temp0:0] : &:r0_14, r109_19 -#-----| r0_15(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 109| r109_21(glval) = CopyValue : r0_15 -# 109| r109_22(glval) = Convert : r109_21 -# 109| r109_23(glval) = FunctionAddress[await_ready] : -# 109| r109_24(bool) = Call[await_ready] : func:r109_23, this:r109_22 -# 109| mu109_25(unknown) = ^CallSideEffect : ~m? -# 109| v109_26(void) = ^IndirectReadSideEffect[-1] : &:r109_22, ~m? -# 109| v109_27(void) = ConditionalBranch : r109_24 -#-----| False -> Block 6 -#-----| True -> Block 5 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 5 # 108| Block 4 # 108| r108_38(suspend_always *) = CopyValue : r108_22 # 108| r108_39(glval) = CopyValue : r108_38 -#-----| r0_16(glval) = Convert : r108_39 +#-----| r0_14(glval) = Convert : r108_39 # 108| r108_40(glval) = FunctionAddress[await_suspend] : # 108| r108_41(glval>) = VariableAddress[#temp108:21] : # 108| mu108_42(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_41 @@ -1890,12 +2026,41 @@ coroutines.cpp: # 108| v108_49(void) = ^BufferReadSideEffect[0] : &:r108_46, ~m? # 108| mu108_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_41 # 108| r108_51(coroutine_handle) = Load[#temp108:21] : &:r108_41, ~m? -# 108| v108_52(void) = Call[await_suspend] : func:r108_40, this:r0_16, 0:r108_51 +# 108| v108_52(void) = Call[await_suspend] : func:r108_40, this:r0_14, 0:r108_51 # 108| mu108_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? +#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_14, ~m? #-----| Goto -> Block 3 -# 109| Block 5 +#-----| Block 5 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 109| r109_9(glval) = VariableAddress[#temp109:13] : +# 109| r109_10(glval) = VariableAddress[(unnamed local variable)] : +# 109| r109_11(glval) = FunctionAddress[yield_value] : +# 109| r109_12(glval) = VariableAddress[i] : +# 109| r109_13(int) = Load[i] : &:r109_12, ~m? +# 109| r109_14(suspend_always) = Call[yield_value] : func:r109_11, this:r109_10, 0:r109_13 +# 109| mu109_15(unknown) = ^CallSideEffect : ~m? +# 109| v109_16(void) = ^IndirectReadSideEffect[-1] : &:r109_10, ~m? +# 109| mu109_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_10 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 6 + +# 109| Block 6 +# 109| mu109_18(suspend_always) = Store[#temp109:13] : &:r109_9, r109_14 +# 109| r109_19(suspend_always *) = CopyValue : r109_9 +# 109| mu109_20(suspend_always *) = Store[#temp0:0] : &:r0_16, r109_19 +#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 109| r109_21(glval) = CopyValue : r0_17 +# 109| r109_22(glval) = Convert : r109_21 +# 109| r109_23(glval) = FunctionAddress[await_ready] : +# 109| r109_24(bool) = Call[await_ready] : func:r109_23, this:r109_22 +# 109| mu109_25(unknown) = ^CallSideEffect : ~m? +# 109| v109_26(void) = ^IndirectReadSideEffect[-1] : &:r109_22, ~m? +# 109| v109_27(void) = ConditionalBranch : r109_24 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 109| Block 7 # 109| r109_28(suspend_always *) = CopyValue : r109_19 # 109| r109_29(glval) = CopyValue : r109_28 #-----| r0_18(glval) = Convert : r109_29 @@ -1913,14 +2078,13 @@ coroutines.cpp: #-----| mu0_23(unknown) = ^CallSideEffect : ~m? #-----| v0_24(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m? #-----| mu0_25(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_20 -# 110| v110_5(void) = NoOp : -#-----| v0_26(void) = NoOp : -#-----| Goto (back edge) -> Block 10 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 9 -# 109| Block 6 +# 109| Block 8 # 109| r109_33(suspend_always *) = CopyValue : r109_19 # 109| r109_34(glval) = CopyValue : r109_33 -#-----| r0_27(glval) = Convert : r109_34 +#-----| r0_26(glval) = Convert : r109_34 # 109| r109_35(glval) = FunctionAddress[await_suspend] : # 109| r109_36(glval>) = VariableAddress[#temp109:3] : # 109| mu109_37(coroutine_handle) = Uninitialized[#temp109:3] : &:r109_36 @@ -1933,34 +2097,39 @@ coroutines.cpp: # 109| v109_44(void) = ^BufferReadSideEffect[0] : &:r109_41, ~m? # 109| mu109_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r109_36 # 109| r109_46(coroutine_handle) = Load[#temp109:3] : &:r109_36, ~m? -# 109| v109_47(void) = Call[await_suspend] : func:r109_35, this:r0_27, 0:r109_46 +# 109| v109_47(void) = Call[await_suspend] : func:r109_35, this:r0_26, 0:r109_46 # 109| mu109_48(unknown) = ^CallSideEffect : ~m? -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? -#-----| Goto -> Block 5 +#-----| v0_27(void) = ^IndirectReadSideEffect[-1] : &:r0_26, ~m? +#-----| Goto -> Block 7 -#-----| Block 7 +# 110| Block 9 +# 110| v110_5(void) = NoOp : +#-----| v0_28(void) = NoOp : +#-----| Goto (back edge) -> Block 13 + +#-----| Block 10 #-----| v0_29(void) = CatchAny : #-----| r0_30(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_31(bool) = Load[(unnamed local variable)] : &:r0_30, ~m? #-----| r0_32(bool) = LogicalNot : r0_31 #-----| v0_33(void) = ConditionalBranch : r0_32 -#-----| False -> Block 9 -#-----| True -> Block 8 +#-----| False -> Block 12 +#-----| True -> Block 11 -#-----| Block 8 +#-----| Block 11 #-----| v0_34(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 108| Block 9 +# 108| Block 12 # 108| r108_54(glval) = VariableAddress[(unnamed local variable)] : # 108| r108_55(glval) = FunctionAddress[unhandled_exception] : # 108| v108_56(void) = Call[unhandled_exception] : func:r108_55, this:r108_54 # 108| mu108_57(unknown) = ^CallSideEffect : ~m? # 108| v108_58(void) = ^IndirectReadSideEffect[-1] : &:r108_54, ~m? # 108| mu108_59(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_54 -#-----| Goto -> Block 10 +#-----| Goto -> Block 13 -#-----| Block 10 +#-----| Block 13 #-----| v0_35(void) = NoOp : # 108| r108_60(glval) = VariableAddress[(unnamed local variable)] : # 108| r108_61(glval) = FunctionAddress[final_suspend] : @@ -1987,10 +2156,10 @@ coroutines.cpp: # 108| mu108_80(unknown) = ^CallSideEffect : ~m? # 108| v108_81(void) = ^IndirectReadSideEffect[-1] : &:r108_77, ~m? #-----| v0_38(void) = ConditionalBranch : r108_79 -#-----| False -> Block 12 -#-----| True -> Block 11 +#-----| False -> Block 15 +#-----| True -> Block 14 -# 108| Block 11 +# 108| Block 14 # 108| r108_82(suspend_always *) = CopyValue : r108_74 # 108| r108_83(glval) = CopyValue : r108_82 #-----| r0_39(glval) = Convert : r108_83 @@ -2002,7 +2171,7 @@ coroutines.cpp: # 108| v108_88(void) = ReturnValue : &:r108_87, ~m? #-----| Goto -> Block 1 -# 108| Block 12 +# 108| Block 15 # 108| r108_89(suspend_always *) = CopyValue : r108_74 # 108| r108_90(glval) = CopyValue : r108_89 #-----| r0_41(glval) = Convert : r108_90 @@ -2021,7 +2190,7 @@ coroutines.cpp: # 108| v108_103(void) = Call[await_suspend] : func:r108_91, this:r0_41, 0:r108_102 # 108| mu108_104(unknown) = ^CallSideEffect : ~m? #-----| v0_42(void) = ^IndirectReadSideEffect[-1] : &:r0_41, ~m? -#-----| Goto -> Block 11 +#-----| Goto -> Block 14 destructors_for_temps.cpp: # 9| void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor&&) @@ -2923,7 +3092,7 @@ ir.c: # 25| r25_3(int) = Load[x] : &:r25_2, ~m? # 25| v25_4(void) = Call[ExRaiseAccessViolation] : func:r25_1, 0:r25_3 # 25| mu25_5(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 6 +#-----| SEH Exception -> Block 6 # 21| Block 1 # 21| v21_6(void) = AliasedUse : ~m? @@ -2980,7 +3149,7 @@ ir.c: # 36| r36_2(int) = Constant[0] : # 36| v36_3(void) = Call[ExRaiseAccessViolation] : func:r36_1, 0:r36_2 # 36| mu36_4(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 5 +#-----| SEH Exception -> Block 5 # 32| Block 1 # 32| v32_4(void) = AliasedUse : ~m? @@ -3016,7 +3185,7 @@ ir.c: # 40| r40_2(int) = Constant[1] : # 40| v40_3(void) = Call[ExRaiseAccessViolation] : func:r40_1, 0:r40_2 # 40| mu40_4(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 2 +#-----| SEH Exception -> Block 2 # 42| Block 7 # 42| v42_1(void) = NoOp : @@ -3061,7 +3230,7 @@ ir.c: # 62| r62_2(int) = Constant[0] : # 62| v62_3(void) = Call[ExRaiseAccessViolation] : func:r62_1, 0:r62_2 # 62| mu62_4(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 3 +#-----| SEH Exception -> Block 3 # 57| Block 1 # 57| v57_4(void) = AliasedUse : ~m? @@ -3088,7 +3257,7 @@ ir.c: # 73| r73_2(int) = Constant[0] : # 73| v73_3(void) = Call[ExRaiseAccessViolation] : func:r73_1, 0:r73_2 # 73| mu73_4(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 3 +#-----| SEH Exception -> Block 3 # 70| Block 1 # 70| v70_4(void) = AliasedUse : ~m? @@ -3103,7 +3272,7 @@ ir.c: # 76| r76_2(int) = Constant[0] : # 76| v76_3(void) = Call[ExRaiseAccessViolation] : func:r76_1, 0:r76_2 # 76| mu76_4(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 2 +#-----| SEH Exception -> Block 2 # 78| Block 4 # 78| v78_1(void) = NoOp : @@ -3119,7 +3288,7 @@ ir.c: # 81| r81_2(int) = Constant[1] : # 81| v81_3(void) = Call[ExRaiseAccessViolation] : func:r81_1, 0:r81_2 # 81| mu81_4(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 2 +#-----| SEH Exception -> Block 2 # 80| Block 1 # 80| v80_4(void) = AliasedUse : ~m? @@ -6692,7 +6861,7 @@ ir.cpp: # 728| r728_3(char *) = Convert : r728_2 # 728| mu728_4(char *) = Store[#throw728:7] : &:r728_1, r728_3 # 728| v728_5(void) = ThrowValue : &:r728_1, ~m? -#-----| C++ Exception -> Block 9 +#-----| C++ Exception -> Block 10 # 730| Block 4 # 730| r730_1(glval) = VariableAddress[x] : @@ -6700,7 +6869,7 @@ ir.cpp: # 730| r730_3(int) = Constant[2] : # 730| r730_4(bool) = CompareLT : r730_2, r730_3 # 730| v730_5(void) = ConditionalBranch : r730_4 -#-----| False -> Block 8 +#-----| False -> Block 9 #-----| True -> Block 5 # 731| Block 5 @@ -6718,7 +6887,7 @@ ir.cpp: # 731| r731_8(int) = Load[#temp731:11] : &:r731_7, ~m? # 731| r731_9(glval) = VariableAddress[x] : # 731| mu731_10(int) = Store[x] : &:r731_9, r731_8 -#-----| Goto -> Block 8 +#-----| Goto -> Block 9 # 731| Block 7 # 731| r731_11(glval) = VariableAddress[#throw731:19] : @@ -6730,21 +6899,25 @@ ir.cpp: # 731| mu731_17(unknown) = ^CallSideEffect : ~m? # 731| v731_18(void) = ^BufferReadSideEffect[0] : &:r731_15, ~m? # 731| mu731_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r731_11 -# 731| v731_20(void) = ThrowValue : &:r731_11, ~m? -#-----| C++ Exception -> Block 9 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 8 + +# 731| Block 8 +# 731| v731_20(void) = ThrowValue : &:r731_11, ~m? +#-----| C++ Exception -> Block 10 -# 733| Block 8 +# 733| Block 9 # 733| r733_1(int) = Constant[7] : # 733| r733_2(glval) = VariableAddress[x] : # 733| mu733_3(int) = Store[x] : &:r733_2, r733_1 -#-----| Goto -> Block 14 +#-----| Goto -> Block 15 -# 735| Block 9 +# 735| Block 10 # 735| v735_1(void) = CatchByType[const char *] : -#-----| C++ Exception -> Block 11 -#-----| Goto -> Block 10 +#-----| C++ Exception -> Block 12 +#-----| Goto -> Block 11 -# 735| Block 10 +# 735| Block 11 # 735| r735_2(glval) = VariableAddress[s] : # 735| mu735_3(char *) = InitializeParameter[s] : &:r735_2 # 735| r735_4(char *) = Load[s] : &:r735_2, ~m? @@ -6761,25 +6934,25 @@ ir.cpp: # 736| v736_10(void) = ThrowValue : &:r736_1, ~m? #-----| C++ Exception -> Block 2 -# 738| Block 11 +# 738| Block 12 # 738| v738_1(void) = CatchByType[const String &] : -#-----| C++ Exception -> Block 13 -#-----| Goto -> Block 12 +#-----| C++ Exception -> Block 14 +#-----| Goto -> Block 13 -# 738| Block 12 +# 738| Block 13 # 738| r738_2(glval) = VariableAddress[e] : # 738| mu738_3(String &) = InitializeParameter[e] : &:r738_2 # 738| r738_4(String &) = Load[e] : &:r738_2, ~m? # 738| mu738_5(unknown) = InitializeIndirection[e] : &:r738_4 # 738| v738_6(void) = NoOp : -#-----| Goto -> Block 14 +#-----| Goto -> Block 15 -# 740| Block 13 +# 740| Block 14 # 740| v740_1(void) = CatchAny : # 741| v741_1(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 743| Block 14 +# 743| Block 15 # 743| v743_1(void) = NoOp : # 724| v724_9(void) = ReturnVoid : #-----| Goto -> Block 1 @@ -7822,7 +7995,7 @@ ir.cpp: # 883| v883_12(void) = AliasedUse : ~m? # 883| v883_13(void) = ExitFunction : -# 888| void VAListUsage(int, __va_list_tag[1]) +# 888| void VAListUsage(int, __builtin_va_list) # 888| Block 0 # 888| v888_1(void) = EnterFunction : # 888| mu888_2(unknown) = AliasedDefinition : @@ -9362,7 +9535,7 @@ ir.cpp: # 1195| r1195_3(char *) = Convert : r1195_2 # 1195| mu1195_4(char *) = Store[#throw1195:7] : &:r1195_1, r1195_3 # 1195| v1195_5(void) = ThrowValue : &:r1195_1, ~m? -#-----| C++ Exception -> Block 9 +#-----| C++ Exception -> Block 10 # 1197| Block 4 # 1197| r1197_1(glval) = VariableAddress[x] : @@ -9370,7 +9543,7 @@ ir.cpp: # 1197| r1197_3(int) = Constant[2] : # 1197| r1197_4(bool) = CompareLT : r1197_2, r1197_3 # 1197| v1197_5(void) = ConditionalBranch : r1197_4 -#-----| False -> Block 8 +#-----| False -> Block 9 #-----| True -> Block 5 # 1198| Block 5 @@ -9388,7 +9561,7 @@ ir.cpp: # 1198| r1198_8(int) = Load[#temp1198:11] : &:r1198_7, ~m? # 1198| r1198_9(glval) = VariableAddress[x] : # 1198| mu1198_10(int) = Store[x] : &:r1198_9, r1198_8 -#-----| Goto -> Block 8 +#-----| Goto -> Block 9 # 1198| Block 7 # 1198| r1198_11(glval) = VariableAddress[#throw1198:19] : @@ -9400,21 +9573,25 @@ ir.cpp: # 1198| mu1198_17(unknown) = ^CallSideEffect : ~m? # 1198| v1198_18(void) = ^BufferReadSideEffect[0] : &:r1198_15, ~m? # 1198| mu1198_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r1198_11 -# 1198| v1198_20(void) = ThrowValue : &:r1198_11, ~m? -#-----| C++ Exception -> Block 9 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 8 -# 1200| Block 8 +# 1198| Block 8 +# 1198| v1198_20(void) = ThrowValue : &:r1198_11, ~m? +#-----| C++ Exception -> Block 10 + +# 1200| Block 9 # 1200| r1200_1(int) = Constant[7] : # 1200| r1200_2(glval) = VariableAddress[x] : # 1200| mu1200_3(int) = Store[x] : &:r1200_2, r1200_1 -#-----| Goto -> Block 13 +#-----| Goto -> Block 14 -# 1202| Block 9 +# 1202| Block 10 # 1202| v1202_1(void) = CatchByType[const char *] : -#-----| C++ Exception -> Block 11 -#-----| Goto -> Block 10 +#-----| C++ Exception -> Block 12 +#-----| Goto -> Block 11 -# 1202| Block 10 +# 1202| Block 11 # 1202| r1202_2(glval) = VariableAddress[s] : # 1202| mu1202_3(char *) = InitializeParameter[s] : &:r1202_2 # 1202| r1202_4(char *) = Load[s] : &:r1202_2, ~m? @@ -9431,20 +9608,20 @@ ir.cpp: # 1203| v1203_10(void) = ThrowValue : &:r1203_1, ~m? #-----| C++ Exception -> Block 2 -# 1205| Block 11 +# 1205| Block 12 # 1205| v1205_1(void) = CatchByType[const String &] : #-----| C++ Exception -> Block 2 -#-----| Goto -> Block 12 +#-----| Goto -> Block 13 -# 1205| Block 12 +# 1205| Block 13 # 1205| r1205_2(glval) = VariableAddress[e] : # 1205| mu1205_3(String &) = InitializeParameter[e] : &:r1205_2 # 1205| r1205_4(String &) = Load[e] : &:r1205_2, ~m? # 1205| mu1205_5(unknown) = InitializeIndirection[e] : &:r1205_4 # 1205| v1205_6(void) = NoOp : -#-----| Goto -> Block 13 +#-----| Goto -> Block 14 -# 1207| Block 13 +# 1207| Block 14 # 1207| v1207_1(void) = NoOp : # 1191| v1191_9(void) = ReturnVoid : #-----| Goto -> Block 1 @@ -15622,11 +15799,8 @@ ir.cpp: # 2276| v2276_4(void) = Call[String] : func:r2276_3, this:r2276_1 # 2276| mu2276_5(unknown) = ^CallSideEffect : ~m? # 2276| mu2276_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2276_1 -# 2277| r2277_1(glval) = VariableAddress[b] : -# 2277| r2277_2(bool) = Load[b] : &:r2277_1, ~m? -# 2277| v2277_3(void) = ConditionalBranch : r2277_2 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| C++ Exception -> Block 7 +#-----| Goto -> Block 3 # 2274| Block 1 # 2274| v2274_6(void) = AliasedUse : ~m? @@ -15636,7 +15810,14 @@ ir.cpp: # 2274| v2274_8(void) = Unwind : #-----| Goto -> Block 1 -# 2278| Block 3 +# 2277| Block 3 +# 2277| r2277_1(glval) = VariableAddress[b] : +# 2277| r2277_2(bool) = Load[b] : &:r2277_1, ~m? +# 2277| v2277_3(void) = ConditionalBranch : r2277_2 +#-----| False -> Block 5 +#-----| True -> Block 4 + +# 2278| Block 4 # 2278| r2278_1(glval) = VariableAddress[#throw2278:7] : # 2278| r2278_2(glval) = StringConstant["string literal"] : # 2278| r2278_3(char *) = Convert : r2278_2 @@ -15648,15 +15829,19 @@ ir.cpp: # 2281| mu2281_4(unknown) = ^CallSideEffect : ~m? # 2281| v2281_5(void) = ^IndirectReadSideEffect[-1] : &:r2281_1, ~m? # 2281| mu2281_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_1 -#-----| C++ Exception -> Block 5 - -# 2280| Block 4 -# 2280| r2280_1(glval) = VariableAddress[s2] : -# 2280| mu2280_2(String) = Uninitialized[s2] : &:r2280_1 -# 2280| r2280_3(glval) = FunctionAddress[String] : -# 2280| v2280_4(void) = Call[String] : func:r2280_3, this:r2280_1 -# 2280| mu2280_5(unknown) = ^CallSideEffect : ~m? -# 2280| mu2280_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 +#-----| C++ Exception -> Block 7 + +# 2280| Block 5 +# 2280| r2280_1(glval) = VariableAddress[s2] : +# 2280| mu2280_2(String) = Uninitialized[s2] : &:r2280_1 +# 2280| r2280_3(glval) = FunctionAddress[String] : +# 2280| v2280_4(void) = Call[String] : func:r2280_3, this:r2280_1 +# 2280| mu2280_5(unknown) = ^CallSideEffect : ~m? +# 2280| mu2280_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 +#-----| C++ Exception -> Block 7 +#-----| Goto -> Block 6 + +# 2281| Block 6 # 2281| r2281_7(glval) = VariableAddress[s2] : # 2281| r2281_8(glval) = FunctionAddress[~String] : # 2281| v2281_9(void) = Call[~String] : func:r2281_8, this:r2281_7 @@ -15669,14 +15854,14 @@ ir.cpp: # 2281| mu2281_16(unknown) = ^CallSideEffect : ~m? # 2281| v2281_17(void) = ^IndirectReadSideEffect[-1] : &:r2281_13, ~m? # 2281| mu2281_18(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_13 -#-----| Goto -> Block 10 +#-----| Goto -> Block 12 -# 2282| Block 5 +# 2282| Block 7 # 2282| v2282_1(void) = CatchByType[const char *] : -#-----| C++ Exception -> Block 7 -#-----| Goto -> Block 6 +#-----| C++ Exception -> Block 9 +#-----| Goto -> Block 8 -# 2282| Block 6 +# 2282| Block 8 # 2282| r2282_2(glval) = VariableAddress[s] : # 2282| mu2282_3(char *) = InitializeParameter[s] : &:r2282_2 # 2282| r2282_4(char *) = Load[s] : &:r2282_2, ~m? @@ -15693,25 +15878,25 @@ ir.cpp: # 2283| v2283_10(void) = ThrowValue : &:r2283_1, ~m? #-----| C++ Exception -> Block 2 -# 2285| Block 7 +# 2285| Block 9 # 2285| v2285_1(void) = CatchByType[const String &] : -#-----| C++ Exception -> Block 9 -#-----| Goto -> Block 8 +#-----| C++ Exception -> Block 11 +#-----| Goto -> Block 10 -# 2285| Block 8 +# 2285| Block 10 # 2285| r2285_2(glval) = VariableAddress[e] : # 2285| mu2285_3(String &) = InitializeParameter[e] : &:r2285_2 # 2285| r2285_4(String &) = Load[e] : &:r2285_2, ~m? # 2285| mu2285_5(unknown) = InitializeIndirection[e] : &:r2285_4 # 2285| v2285_6(void) = NoOp : -#-----| Goto -> Block 10 +#-----| Goto -> Block 12 -# 2287| Block 9 +# 2287| Block 11 # 2287| v2287_1(void) = CatchAny : # 2288| v2288_1(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 2290| Block 10 +# 2290| Block 12 # 2290| v2290_1(void) = NoOp : # 2274| v2274_9(void) = ReturnVoid : #-----| Goto -> Block 1 @@ -37211,27 +37396,20 @@ struct_init.cpp: try_except.c: # 6| void f() # 6| Block 0 -# 6| v6_1(void) = EnterFunction : -# 6| mu6_2(unknown) = AliasedDefinition : -# 6| mu6_3(unknown) = InitializeNonLocal : -# 7| r7_1(glval) = VariableAddress[x] : -# 7| mu7_2(int) = Uninitialized[x] : &:r7_1 -# 7| r7_3(glval) = VariableAddress[y] : -# 7| r7_4(int) = Constant[0] : -# 7| mu7_5(int) = Store[y] : &:r7_3, r7_4 -# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : -# 9| r9_2(int) = Constant[0] : -# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 -# 9| mu9_4(unknown) = ^CallSideEffect : ~m? -# 10| r10_1(glval) = VariableAddress[y] : -# 10| r10_2(int) = Load[y] : &:r10_1, ~m? -# 10| r10_3(glval) = VariableAddress[x] : -# 10| mu10_4(int) = Store[x] : &:r10_3, r10_2 -# 11| r11_1(glval) = FunctionAddress[ProbeFunction] : -# 11| r11_2(int) = Constant[0] : -# 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 -# 11| mu11_4(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 +# 6| v6_1(void) = EnterFunction : +# 6| mu6_2(unknown) = AliasedDefinition : +# 6| mu6_3(unknown) = InitializeNonLocal : +# 7| r7_1(glval) = VariableAddress[x] : +# 7| mu7_2(int) = Uninitialized[x] : &:r7_1 +# 7| r7_3(glval) = VariableAddress[y] : +# 7| r7_4(int) = Constant[0] : +# 7| mu7_5(int) = Store[y] : &:r7_3, r7_4 +# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : +# 9| r9_2(int) = Constant[0] : +# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 +# 9| mu9_4(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 6 # 6| Block 1 # 6| v6_4(void) = AliasedUse : ~m? @@ -37241,36 +37419,48 @@ try_except.c: # 6| v6_6(void) = Unwind : #-----| Goto -> Block 1 -# 13| Block 3 +# 10| Block 3 +# 10| r10_1(glval) = VariableAddress[y] : +# 10| r10_2(int) = Load[y] : &:r10_1, ~m? +# 10| r10_3(glval) = VariableAddress[x] : +# 10| mu10_4(int) = Store[x] : &:r10_3, r10_2 +# 11| r11_1(glval) = FunctionAddress[ProbeFunction] : +# 11| r11_2(int) = Constant[0] : +# 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 +# 11| mu11_4(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 8 +#-----| SEH Exception -> Block 6 + +# 13| Block 4 # 13| r13_1(int) = Constant[0] : # 13| r13_2(bool) = CompareEQ : r13_7, r13_1 # 13| v13_3(void) = ConditionalBranch : r13_2 -#-----| False -> Block 4 +#-----| False -> Block 5 #-----| True -> Block 2 -# 13| Block 4 +# 13| Block 5 # 13| r13_4(int) = Constant[1] : # 13| r13_5(bool) = CompareEQ : r13_7, r13_4 # 13| v13_6(void) = ConditionalBranch : r13_5 -#-----| True -> Block 6 +#-----| True -> Block 7 -# 13| Block 5 +# 13| Block 6 # 13| r13_7(int) = Constant[0] : # 13| r13_8(int) = Constant[-1] : # 13| r13_9(bool) = CompareEQ : r13_7, r13_8 # 13| v13_10(void) = ConditionalBranch : r13_9 -#-----| False -> Block 3 +#-----| False -> Block 4 #-----| True -> Block 2 -# 14| Block 6 +# 14| Block 7 # 14| r14_1(glval) = FunctionAddress[sink] : # 14| r14_2(glval) = VariableAddress[x] : # 14| r14_3(int) = Load[x] : &:r14_2, ~m? # 14| v14_4(void) = Call[sink] : func:r14_1, 0:r14_3 # 14| mu14_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 +#-----| Goto -> Block 8 -# 16| Block 7 +# 16| Block 8 # 16| v16_1(void) = NoOp : # 6| v6_7(void) = ReturnVoid : #-----| Goto -> Block 1 @@ -37289,6 +37479,18 @@ try_except.c: # 21| r21_2(int) = Constant[0] : # 21| v21_3(void) = Call[ProbeFunction] : func:r21_1, 0:r21_2 # 21| mu21_4(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 4 + +# 18| Block 1 +# 18| v18_4(void) = AliasedUse : ~m? +# 18| v18_5(void) = ExitFunction : + +# 18| Block 2 +# 18| v18_6(void) = Unwind : +#-----| Goto -> Block 1 + +# 22| Block 3 # 22| r22_1(glval) = VariableAddress[y] : # 22| r22_2(int) = Load[y] : &:r22_1, ~m? # 22| r22_3(glval) = VariableAddress[x] : @@ -37297,21 +37499,16 @@ try_except.c: # 23| r23_2(int) = Constant[0] : # 23| v23_3(void) = Call[ProbeFunction] : func:r23_1, 0:r23_2 # 23| mu23_4(unknown) = ^CallSideEffect : ~m? -# 26| r26_1(glval) = FunctionAddress[sink] : -# 26| r26_2(glval) = VariableAddress[x] : -# 26| r26_3(int) = Load[x] : &:r26_2, ~m? -# 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 -# 26| mu26_5(unknown) = ^CallSideEffect : ~m? -# 28| v28_1(void) = NoOp : -# 18| v18_4(void) = ReturnVoid : -#-----| Goto -> Block 1 - -# 18| Block 1 -# 18| v18_5(void) = AliasedUse : ~m? -# 18| v18_6(void) = ExitFunction : +#-----| Goto|SEH Exception -> Block 4 -# 18| Block 2 -# 18| v18_7(void) = Unwind : +# 26| Block 4 +# 26| r26_1(glval) = FunctionAddress[sink] : +# 26| r26_2(glval) = VariableAddress[x] : +# 26| r26_3(int) = Load[x] : &:r26_2, ~m? +# 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 +# 26| mu26_5(unknown) = ^CallSideEffect : ~m? +# 28| v28_1(void) = NoOp : +# 18| v18_7(void) = ReturnVoid : #-----| Goto -> Block 1 # 32| void h(int) @@ -37345,6 +37542,7 @@ try_except.c: # 36| v36_2(void) = Call[AfxThrowMemoryException] : func:r36_1 # 36| mu36_3(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 8 +#-----| SEH Exception -> Block 6 # 39| Block 4 # 39| r39_1(int) = Constant[0] : @@ -37380,30 +37578,181 @@ try_except.c: # 32| v32_9(void) = ReturnVoid : #-----| Goto -> Block 1 +# 46| void j(int) +# 46| Block 0 +# 46| v46_1(void) = EnterFunction : +# 46| mu46_2(unknown) = AliasedDefinition : +# 46| mu46_3(unknown) = InitializeNonLocal : +# 46| r46_4(glval) = VariableAddress[b] : +# 46| mu46_5(int) = InitializeParameter[b] : &:r46_4 +# 47| r47_1(glval) = VariableAddress[x] : +# 47| r47_2(int) = Constant[0] : +# 47| mu47_3(int) = Store[x] : &:r47_1, r47_2 +# 49| r49_1(glval) = VariableAddress[y] : +# 49| r49_2(glval) = FunctionAddress[i] : +# 49| r49_3(int) = Call[i] : func:r49_2 +# 49| mu49_4(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 6 + +# 46| Block 1 +# 46| v46_6(void) = AliasedUse : ~m? +# 46| v46_7(void) = ExitFunction : + +# 46| Block 2 +# 46| v46_8(void) = Unwind : +#-----| Goto -> Block 1 + +# 49| Block 3 +# 49| mu49_5(int) = Store[y] : &:r49_1, r49_3 +#-----| Goto -> Block 8 + +# 51| Block 4 +# 51| r51_1(int) = Constant[0] : +# 51| r51_2(bool) = CompareEQ : r51_7, r51_1 +# 51| v51_3(void) = ConditionalBranch : r51_2 +#-----| False -> Block 5 +#-----| True -> Block 2 + +# 51| Block 5 +# 51| r51_4(int) = Constant[1] : +# 51| r51_5(bool) = CompareEQ : r51_7, r51_4 +# 51| v51_6(void) = ConditionalBranch : r51_5 +#-----| True -> Block 7 + +# 51| Block 6 +# 51| r51_7(int) = Constant[1] : +# 51| r51_8(int) = Constant[-1] : +# 51| r51_9(bool) = CompareEQ : r51_7, r51_8 +# 51| v51_10(void) = ConditionalBranch : r51_9 +#-----| False -> Block 4 +#-----| True -> Block 2 + +# 52| Block 7 +# 52| r52_1(glval) = FunctionAddress[sink] : +# 52| r52_2(glval) = VariableAddress[x] : +# 52| r52_3(int) = Load[x] : &:r52_2, ~m? +# 52| v52_4(void) = Call[sink] : func:r52_1, 0:r52_3 +# 52| mu52_5(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 8 + +# 54| Block 8 +# 54| v54_1(void) = NoOp : +# 46| v46_9(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 56| void k(int*, int*, int*) +# 56| Block 0 +# 56| v56_1(void) = EnterFunction : +# 56| mu56_2(unknown) = AliasedDefinition : +# 56| mu56_3(unknown) = InitializeNonLocal : +# 56| r56_4(glval) = VariableAddress[b] : +# 56| mu56_5(int *) = InitializeParameter[b] : &:r56_4 +# 56| r56_6(int *) = Load[b] : &:r56_4, ~m? +# 56| mu56_7(unknown) = InitializeIndirection[b] : &:r56_6 +# 56| r56_8(glval) = VariableAddress[c] : +# 56| mu56_9(int *) = InitializeParameter[c] : &:r56_8 +# 56| r56_10(int *) = Load[c] : &:r56_8, ~m? +# 56| mu56_11(unknown) = InitializeIndirection[c] : &:r56_10 +# 56| r56_12(glval) = VariableAddress[d] : +# 56| mu56_13(int *) = InitializeParameter[d] : &:r56_12 +# 56| r56_14(int *) = Load[d] : &:r56_12, ~m? +# 56| mu56_15(unknown) = InitializeIndirection[d] : &:r56_14 +# 57| r57_1(glval) = VariableAddress[x] : +# 57| r57_2(int) = Constant[0] : +# 57| mu57_3(int) = Store[x] : &:r57_1, r57_2 +# 59| r59_1(glval) = VariableAddress[b] : +# 59| r59_2(int *) = Load[b] : &:r59_1, ~m? +# 59| r59_3(int) = Load[?] : &:r59_2, ~m? +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 8 + +# 56| Block 1 +# 56| v56_16(void) = AliasedUse : ~m? +# 56| v56_17(void) = ExitFunction : + +# 56| Block 2 +# 56| v56_18(void) = Unwind : +#-----| Goto -> Block 1 + +# 59| Block 3 +# 59| r59_4(glval) = VariableAddress[x] : +# 59| mu59_5(int) = Store[x] : &:r59_4, r59_3 +# 60| r60_1(glval) = VariableAddress[x] : +# 60| r60_2(int) = Load[x] : &:r60_1, ~m? +# 60| r60_3(glval) = VariableAddress[c] : +# 60| r60_4(int *) = Load[c] : &:r60_3, ~m? +# 60| r60_5(glval) = CopyValue : r60_4 +# 60| mu60_6(int) = Store[?] : &:r60_5, r60_2 +#-----| Goto -> Block 4 +#-----| SEH Exception -> Block 8 + +# 61| Block 4 +# 61| r61_1(glval) = VariableAddress[y] : +# 61| r61_2(glval) = VariableAddress[d] : +# 61| r61_3(int *) = Load[d] : &:r61_2, ~m? +# 61| r61_4(int) = Load[?] : &:r61_3, ~m? +#-----| Goto -> Block 5 +#-----| SEH Exception -> Block 8 + +# 61| Block 5 +# 61| mu61_5(int) = Store[y] : &:r61_1, r61_4 +#-----| Goto -> Block 10 + +# 63| Block 6 +# 63| r63_1(int) = Constant[0] : +# 63| r63_2(bool) = CompareEQ : r63_7, r63_1 +# 63| v63_3(void) = ConditionalBranch : r63_2 +#-----| False -> Block 7 +#-----| True -> Block 2 + +# 63| Block 7 +# 63| r63_4(int) = Constant[1] : +# 63| r63_5(bool) = CompareEQ : r63_7, r63_4 +# 63| v63_6(void) = ConditionalBranch : r63_5 +#-----| True -> Block 9 + +# 63| Block 8 +# 63| r63_7(int) = Constant[1] : +# 63| r63_8(int) = Constant[-1] : +# 63| r63_9(bool) = CompareEQ : r63_7, r63_8 +# 63| v63_10(void) = ConditionalBranch : r63_9 +#-----| False -> Block 6 +#-----| True -> Block 2 + +# 64| Block 9 +# 64| r64_1(glval) = FunctionAddress[sink] : +# 64| r64_2(glval) = VariableAddress[x] : +# 64| r64_3(int) = Load[x] : &:r64_2, ~m? +# 64| v64_4(void) = Call[sink] : func:r64_1, 0:r64_3 +# 64| mu64_5(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 10 + +# 66| Block 10 +# 66| v66_1(void) = NoOp : +# 56| v56_19(void) = ReturnIndirection[b] : &:r56_6, ~m? +# 56| v56_20(void) = ReturnIndirection[c] : &:r56_10, ~m? +# 56| v56_21(void) = ReturnIndirection[d] : &:r56_14, ~m? +# 56| v56_22(void) = ReturnVoid : +#-----| Goto -> Block 1 + try_except.cpp: # 6| void f_cpp() # 6| Block 0 -# 6| v6_1(void) = EnterFunction : -# 6| mu6_2(unknown) = AliasedDefinition : -# 6| mu6_3(unknown) = InitializeNonLocal : -# 7| r7_1(glval) = VariableAddress[x] : -# 7| mu7_2(int) = Uninitialized[x] : &:r7_1 -# 7| r7_3(glval) = VariableAddress[y] : -# 7| r7_4(int) = Constant[0] : -# 7| mu7_5(int) = Store[y] : &:r7_3, r7_4 -# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : -# 9| r9_2(int) = Constant[0] : -# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 -# 9| mu9_4(unknown) = ^CallSideEffect : ~m? -# 10| r10_1(glval) = VariableAddress[y] : -# 10| r10_2(int) = Load[y] : &:r10_1, ~m? -# 10| r10_3(glval) = VariableAddress[x] : -# 10| mu10_4(int) = Store[x] : &:r10_3, r10_2 -# 11| r11_1(glval) = FunctionAddress[ProbeFunction] : -# 11| r11_2(int) = Constant[0] : -# 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 -# 11| mu11_4(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 +# 6| v6_1(void) = EnterFunction : +# 6| mu6_2(unknown) = AliasedDefinition : +# 6| mu6_3(unknown) = InitializeNonLocal : +# 7| r7_1(glval) = VariableAddress[x] : +# 7| mu7_2(int) = Uninitialized[x] : &:r7_1 +# 7| r7_3(glval) = VariableAddress[y] : +# 7| r7_4(int) = Constant[0] : +# 7| mu7_5(int) = Store[y] : &:r7_3, r7_4 +# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : +# 9| r9_2(int) = Constant[0] : +# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 +# 9| mu9_4(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 6 # 6| Block 1 # 6| v6_4(void) = AliasedUse : ~m? @@ -37413,36 +37762,48 @@ try_except.cpp: # 6| v6_6(void) = Unwind : #-----| Goto -> Block 1 -# 13| Block 3 +# 10| Block 3 +# 10| r10_1(glval) = VariableAddress[y] : +# 10| r10_2(int) = Load[y] : &:r10_1, ~m? +# 10| r10_3(glval) = VariableAddress[x] : +# 10| mu10_4(int) = Store[x] : &:r10_3, r10_2 +# 11| r11_1(glval) = FunctionAddress[ProbeFunction] : +# 11| r11_2(int) = Constant[0] : +# 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 +# 11| mu11_4(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 8 +#-----| SEH Exception -> Block 6 + +# 13| Block 4 # 13| r13_1(int) = Constant[0] : # 13| r13_2(bool) = CompareEQ : r13_7, r13_1 # 13| v13_3(void) = ConditionalBranch : r13_2 -#-----| False -> Block 4 +#-----| False -> Block 5 #-----| True -> Block 2 -# 13| Block 4 +# 13| Block 5 # 13| r13_4(int) = Constant[1] : # 13| r13_5(bool) = CompareEQ : r13_7, r13_4 # 13| v13_6(void) = ConditionalBranch : r13_5 -#-----| True -> Block 6 +#-----| True -> Block 7 -# 13| Block 5 +# 13| Block 6 # 13| r13_7(int) = Constant[0] : # 13| r13_8(int) = Constant[-1] : # 13| r13_9(bool) = CompareEQ : r13_7, r13_8 # 13| v13_10(void) = ConditionalBranch : r13_9 -#-----| False -> Block 3 +#-----| False -> Block 4 #-----| True -> Block 2 -# 14| Block 6 +# 14| Block 7 # 14| r14_1(glval) = FunctionAddress[sink] : # 14| r14_2(glval) = VariableAddress[x] : # 14| r14_3(int) = Load[x] : &:r14_2, ~m? # 14| v14_4(void) = Call[sink] : func:r14_1, 0:r14_3 # 14| mu14_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 +#-----| Goto -> Block 8 -# 16| Block 7 +# 16| Block 8 # 16| v16_1(void) = NoOp : # 6| v6_7(void) = ReturnVoid : #-----| Goto -> Block 1 @@ -37461,6 +37822,18 @@ try_except.cpp: # 21| r21_2(int) = Constant[0] : # 21| v21_3(void) = Call[ProbeFunction] : func:r21_1, 0:r21_2 # 21| mu21_4(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 4 + +# 18| Block 1 +# 18| v18_4(void) = AliasedUse : ~m? +# 18| v18_5(void) = ExitFunction : + +# 18| Block 2 +# 18| v18_6(void) = Unwind : +#-----| Goto -> Block 1 + +# 22| Block 3 # 22| r22_1(glval) = VariableAddress[y] : # 22| r22_2(int) = Load[y] : &:r22_1, ~m? # 22| r22_3(glval) = VariableAddress[x] : @@ -37469,21 +37842,16 @@ try_except.cpp: # 23| r23_2(int) = Constant[0] : # 23| v23_3(void) = Call[ProbeFunction] : func:r23_1, 0:r23_2 # 23| mu23_4(unknown) = ^CallSideEffect : ~m? -# 26| r26_1(glval) = FunctionAddress[sink] : -# 26| r26_2(glval) = VariableAddress[x] : -# 26| r26_3(int) = Load[x] : &:r26_2, ~m? -# 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 -# 26| mu26_5(unknown) = ^CallSideEffect : ~m? -# 28| v28_1(void) = NoOp : -# 18| v18_4(void) = ReturnVoid : -#-----| Goto -> Block 1 +#-----| Goto|SEH Exception -> Block 4 -# 18| Block 1 -# 18| v18_5(void) = AliasedUse : ~m? -# 18| v18_6(void) = ExitFunction : - -# 18| Block 2 -# 18| v18_7(void) = Unwind : +# 26| Block 4 +# 26| r26_1(glval) = FunctionAddress[sink] : +# 26| r26_2(glval) = VariableAddress[x] : +# 26| r26_3(int) = Load[x] : &:r26_2, ~m? +# 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 +# 26| mu26_5(unknown) = ^CallSideEffect : ~m? +# 28| v28_1(void) = NoOp : +# 18| v18_7(void) = ReturnVoid : #-----| Goto -> Block 1 # 32| void h_cpp(int) @@ -37517,6 +37885,7 @@ try_except.cpp: # 36| v36_2(void) = Call[AfxThrowMemoryException] : func:r36_1 # 36| mu36_3(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 8 +#-----| SEH Exception -> Block 6 # 39| Block 4 # 39| r39_1(int) = Constant[0] : @@ -37579,10 +37948,10 @@ try_except.cpp: #-----| Goto -> Block 1 # 48| Block 3 -# 48| r48_1(glval) = VariableAddress[#throw48:13] : -# 48| r48_2(int) = Constant[1] : -# 48| mu48_3(int) = Store[#throw48:13] : &:r48_1, r48_2 -# 48| v48_4(void) = ThrowValue : &:r48_1, ~m? +# 48| r48_1(glval) = VariableAddress[#throw48:7] : +# 48| r48_2(int) = Constant[1] : +# 48| mu48_3(int) = Store[#throw48:7] : &:r48_1, r48_2 +# 48| v48_4(void) = ThrowValue : &:r48_1, ~m? #-----| C++ Exception -> Block 6 # 51| Block 4 diff --git a/cpp/ql/test/library-tests/ir/ir/try_except.c b/cpp/ql/test/library-tests/ir/ir/try_except.c index 410068dae5ea..27eb8d24e174 100644 --- a/cpp/ql/test/library-tests/ir/ir/try_except.c +++ b/cpp/ql/test/library-tests/ir/ir/try_except.c @@ -31,12 +31,36 @@ void AfxThrowMemoryException(); void h(int b) { int x = 0; - __try { - if (b) { - AfxThrowMemoryException(); - } - } - __except (1) { - sink(x); + __try { + if (b) { + AfxThrowMemoryException(); } -} \ No newline at end of file + } + __except (1) { + sink(x); + } +} + +int i(); + +void j(int b) { + int x = 0; + __try { + int y = i(); + } + __except (1) { + sink(x); + } +} + +void k(int *b, int *c, int *d) { + int x = 0; + __try { + x = *b; + *c = x; + int y = *d; + } + __except (1) { + sink(x); + } +} diff --git a/cpp/ql/test/library-tests/ir/ir/try_except.cpp b/cpp/ql/test/library-tests/ir/ir/try_except.cpp index 9bf297263b75..3db7128de716 100644 --- a/cpp/ql/test/library-tests/ir/ir/try_except.cpp +++ b/cpp/ql/test/library-tests/ir/ir/try_except.cpp @@ -31,24 +31,24 @@ void AfxThrowMemoryException(); void h_cpp(int b) { int x = 0; - __try { - if (b) { - AfxThrowMemoryException(); - } - } - __except (1) { - sink(x); + __try { + if (b) { + AfxThrowMemoryException(); } + } + __except (1) { + sink(x); + } } void throw_cpp(int b) { int x = 0; - __try { - if (b) { - throw 1; - } - } - __except (1) { - sink(x); + __try { + if (b) { + throw 1; } + } + __except (1) { + sink(x); + } } 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 000000000000..1beb3eed3b39 --- /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 000000000000..ae2043687a0a --- /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 000000000000..6d9bca191b16 --- /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/macros/inmacroexpansion/inmacroexpansion.expected b/cpp/ql/test/library-tests/macros/inmacroexpansion/inmacroexpansion.expected index f8eff955d47c..4e477a101a90 100644 --- a/cpp/ql/test/library-tests/macros/inmacroexpansion/inmacroexpansion.expected +++ b/cpp/ql/test/library-tests/macros/inmacroexpansion/inmacroexpansion.expected @@ -14,14 +14,14 @@ | test.cpp:4:1:4:1 | operator= | false | | test.cpp:4:1:4:1 | operator= | false | | test.cpp:4:1:4:10 | CLASS_DECL | false | -| test.cpp:4:1:4:10 | S | false | +| test.cpp:4:1:4:10 | S | true | | test.cpp:4:1:4:10 | declaration | true | | test.cpp:4:1:4:10 | definition of S | true | | test.cpp:4:1:4:10 | definition of f | true | | test.cpp:4:1:4:10 | definition of i | true | | test.cpp:4:1:4:10 | definition of j | true | -| test.cpp:4:1:4:10 | f | false | -| test.cpp:4:1:4:10 | i | false | +| test.cpp:4:1:4:10 | f | true | +| test.cpp:4:1:4:10 | i | true | | test.cpp:4:1:4:10 | j | true | | test.cpp:4:1:4:10 | return ... | true | | test.cpp:4:1:4:10 | { ... } | true | @@ -30,7 +30,7 @@ | test.cpp:8:1:8:13 | declaration | true | | test.cpp:8:1:8:13 | definition of f1 | true | | test.cpp:8:1:8:13 | definition of k | true | -| test.cpp:8:1:8:13 | f1 | false | +| test.cpp:8:1:8:13 | f1 | true | | test.cpp:8:1:8:13 | k | true | | test.cpp:8:1:8:13 | return ... | true | | test.cpp:8:1:8:13 | { ... } | true | @@ -68,18 +68,18 @@ | test.cpp:38:1:38:13 | 1 | true | | test.cpp:38:1:38:13 | ... == ... | true | | test.cpp:38:1:38:13 | STATIC_ASSERT | false | -| test.cpp:38:1:38:13 | static_assert(..., "") | false | +| test.cpp:38:1:38:13 | static_assert(..., "") | true | | test.cpp:40:1:40:42 | #define ATTRIBUTE [[nodiscard("reason1")]] | false | | test.cpp:42:1:42:9 | ATTRIBUTE | false | -| test.cpp:42:1:42:9 | nodiscard | false | -| test.cpp:42:1:42:9 | reason1 | false | +| test.cpp:42:1:42:9 | nodiscard | true | +| test.cpp:42:1:42:9 | reason1 | true | | test.cpp:42:1:42:9 | reason1 | true | | test.cpp:43:5:43:6 | declaration of f2 | false | | test.cpp:43:5:43:6 | f2 | false | | test.cpp:45:1:45:31 | #define ATTRIBUTE_ARG "reason2" | false | | test.cpp:47:3:47:11 | nodiscard | false | | test.cpp:47:13:47:25 | ATTRIBUTE_ARG | false | -| test.cpp:47:13:47:25 | reason2 | false | +| test.cpp:47:13:47:25 | reason2 | true | | test.cpp:47:13:47:25 | reason2 | true | | test.cpp:48:5:48:6 | declaration of f3 | false | | test.cpp:48:5:48:6 | f3 | false | diff --git a/cpp/ql/test/library-tests/ptr_to_member/segfault/exprs.expected b/cpp/ql/test/library-tests/ptr_to_member/segfault/exprs.expected index d808cf89139c..46cdbc64c6ef 100644 --- a/cpp/ql/test/library-tests/ptr_to_member/segfault/exprs.expected +++ b/cpp/ql/test/library-tests/ptr_to_member/segfault/exprs.expected @@ -4,6 +4,7 @@ | file://:0:0:0:0 | uls | file://:0:0:0:0 | unsigned long | | segfault.cpp:25:46:25:65 | call to S | file://:0:0:0:0 | void | | segfault.cpp:25:46:25:65 | call to S | file://:0:0:0:0 | void | +| segfault.cpp:25:46:25:65 | constructor init | segfault.cpp:22:8:22:8 | S | | segfault.cpp:25:48:25:55 | __second | segfault.cpp:15:7:15:11 | tuple | | segfault.cpp:25:48:25:55 | __second | segfault.cpp:15:7:15:11 | tuple | | segfault.cpp:25:48:25:55 | __second | segfault.cpp:15:7:15:11 | tuple | diff --git a/cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.cpp b/cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.cpp new file mode 100644 index 000000000000..393ab4c7d9ea --- /dev/null +++ b/cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.cpp @@ -0,0 +1,7 @@ +typedef int int_t; +int_t g1[10]; +int_t g2[2][4]; + +typedef float float_t; +float_t arr1[5]; +float_t (*a_pointer)[10]; diff --git a/cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.expected b/cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.expected new file mode 100644 index 000000000000..83e003b5bb15 --- /dev/null +++ b/cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.expected @@ -0,0 +1,5 @@ +| file://:0:0:0:0 | float_t[5] | file://:0:0:0:0 | float[5] | ArrayTypedefs.cpp:6:9:6:12 | definition of arr1 | +| file://:0:0:0:0 | float_t[10] | file://:0:0:0:0 | float[10] | ArrayTypedefs.cpp:7:11:7:19 | definition of a_pointer | +| file://:0:0:0:0 | int_t[2][4] | file://:0:0:0:0 | int[2][4] | ArrayTypedefs.cpp:3:7:3:8 | definition of g2 | +| file://:0:0:0:0 | int_t[4] | file://:0:0:0:0 | int[4] | ArrayTypedefs.cpp:3:7:3:8 | definition of g2 | +| file://:0:0:0:0 | int_t[10] | file://:0:0:0:0 | int[10] | ArrayTypedefs.cpp:2:7:2:8 | definition of g1 | diff --git a/cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.ql b/cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.ql new file mode 100644 index 000000000000..73ebe35d8ff7 --- /dev/null +++ b/cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.ql @@ -0,0 +1,4 @@ +import cpp + +from ArrayType type +select type, type.resolveTypedefs(), type.getATypeNameUse() diff --git a/cpp/ql/test/library-tests/stmt/leave/leave.cpp b/cpp/ql/test/library-tests/stmt/leave/leave.cpp new file mode 100644 index 000000000000..f81f63d4a922 --- /dev/null +++ b/cpp/ql/test/library-tests/stmt/leave/leave.cpp @@ -0,0 +1,28 @@ +//semmle-extractor-options: --microsoft +void leave_try_finally_test(bool condition){ + __try { + if(condition){ + __leave; + } + } + __finally { + } +} + +int except_handler(); + +void leave_try_except_test(bool condition){ + __try { + try { + if(condition) + __leave; + } + catch(...) { + } + if(condition){ + __leave; + } + } + __except (except_handler()) { + } +} diff --git a/cpp/ql/test/library-tests/stmt/leave/leave.expected b/cpp/ql/test/library-tests/stmt/leave/leave.expected new file mode 100644 index 000000000000..d33c0876597f --- /dev/null +++ b/cpp/ql/test/library-tests/stmt/leave/leave.expected @@ -0,0 +1,3 @@ +| leave.cpp:5:8:5:15 | __leave; | leave.cpp:3:5:7:5 | __try { ... } __finally { ... } | +| leave.cpp:18:17:18:24 | __leave; | leave.cpp:15:5:25:5 | __try { ... } __except( ... ) { ... } | +| leave.cpp:23:13:23:20 | __leave; | leave.cpp:15:5:25:5 | __try { ... } __except( ... ) { ... } | diff --git a/cpp/ql/test/library-tests/stmt/leave/leave.ql b/cpp/ql/test/library-tests/stmt/leave/leave.ql new file mode 100644 index 000000000000..c863b64d3510 --- /dev/null +++ b/cpp/ql/test/library-tests/stmt/leave/leave.ql @@ -0,0 +1,4 @@ +import cpp + +from LeaveStmt s +select s, s.getEnclosingTry() diff --git a/cpp/ql/test/library-tests/templates/instantiation_directive/functions.expected b/cpp/ql/test/library-tests/templates/instantiation_directive/functions.expected index 672fae72e062..eba49fd1c6d6 100644 --- a/cpp/ql/test/library-tests/templates/instantiation_directive/functions.expected +++ b/cpp/ql/test/library-tests/templates/instantiation_directive/functions.expected @@ -1,3 +1,5 @@ | file://:0:0:0:0 | operator= | file://:0:0:0:0 | __va_list_tag && | | file://:0:0:0:0 | operator= | file://:0:0:0:0 | const __va_list_tag & | +| test.cpp:2:6:2:6 | foo | file://:0:0:0:0 | float | +| test.cpp:2:6:2:6 | foo | file://:0:0:0:0 | int | | test.cpp:2:6:2:8 | foo | test.cpp:1:19:1:19 | T | diff --git a/cpp/ql/test/library-tests/templates/isfromtemplateinstantiation/instantiations.expected b/cpp/ql/test/library-tests/templates/isfromtemplateinstantiation/instantiations.expected index e1c7f956c7b6..7a7b1761e987 100644 --- a/cpp/ql/test/library-tests/templates/isfromtemplateinstantiation/instantiations.expected +++ b/cpp/ql/test/library-tests/templates/isfromtemplateinstantiation/instantiations.expected @@ -10,3 +10,4 @@ | isfromtemplateinstantiation.cpp:134:29:134:33 | Outer | ClassTemplateInstantiation | file://:0:0:0:0 | int | | isfromtemplateinstantiation.cpp:135:31:135:35 | Inner | ClassTemplateInstantiation | file://:0:0:0:0 | long | | load.cpp:13:7:13:27 | basic_text_iprimitive | ClassTemplateInstantiation | load.cpp:3:7:3:24 | std_istream_mockup | +| load.cpp:22:10:22:10 | load | FunctionTemplateInstantiation | file://:0:0:0:0 | short | diff --git a/cpp/ql/test/library-tests/templates/isfromtemplateinstantiation/isfromtemplateinstantiation.expected b/cpp/ql/test/library-tests/templates/isfromtemplateinstantiation/isfromtemplateinstantiation.expected index cb35f7a6dd09..316b5273cdce 100644 --- a/cpp/ql/test/library-tests/templates/isfromtemplateinstantiation/isfromtemplateinstantiation.expected +++ b/cpp/ql/test/library-tests/templates/isfromtemplateinstantiation/isfromtemplateinstantiation.expected @@ -104,6 +104,15 @@ | isfromtemplateinstantiation.cpp:99:1:99:1 | return ... | isfromtemplateinstantiation.cpp:77:26:77:45 | AnotherTemplateClass | | isfromtemplateinstantiation.cpp:99:1:99:1 | return ... | isfromtemplateinstantiation.cpp:97:52:97:52 | AnotherTemplateClass::myMethod2(MyClassEnum) | | isfromtemplateinstantiation.cpp:110:3:110:3 | definition of var_template | isfromtemplateinstantiation.cpp:110:3:110:3 | var_template | +| isfromtemplateinstantiation.cpp:129:6:129:6 | AnotherTemplateClass::f() | isfromtemplateinstantiation.cpp:128:7:128:30 | AnotherTemplateClass | +| isfromtemplateinstantiation.cpp:129:6:129:6 | definition of f | isfromtemplateinstantiation.cpp:128:7:128:30 | AnotherTemplateClass | +| isfromtemplateinstantiation.cpp:129:6:129:6 | definition of f | isfromtemplateinstantiation.cpp:129:6:129:6 | AnotherTemplateClass::f() | +| isfromtemplateinstantiation.cpp:129:10:129:22 | { ... } | isfromtemplateinstantiation.cpp:128:7:128:30 | AnotherTemplateClass | +| isfromtemplateinstantiation.cpp:129:10:129:22 | { ... } | isfromtemplateinstantiation.cpp:129:6:129:6 | AnotherTemplateClass::f() | +| isfromtemplateinstantiation.cpp:129:12:129:20 | return ... | isfromtemplateinstantiation.cpp:128:7:128:30 | AnotherTemplateClass | +| isfromtemplateinstantiation.cpp:129:12:129:20 | return ... | isfromtemplateinstantiation.cpp:129:6:129:6 | AnotherTemplateClass::f() | +| isfromtemplateinstantiation.cpp:129:19:129:19 | 1 | isfromtemplateinstantiation.cpp:128:7:128:30 | AnotherTemplateClass | +| isfromtemplateinstantiation.cpp:129:19:129:19 | 1 | isfromtemplateinstantiation.cpp:129:6:129:6 | AnotherTemplateClass::f() | | isfromtemplateinstantiation.cpp:135:31:135:35 | Inner | isfromtemplateinstantiation.cpp:134:29:134:33 | Outer | | isfromtemplateinstantiation.cpp:135:31:135:35 | declaration of Inner | isfromtemplateinstantiation.cpp:134:29:134:33 | Outer | | isfromtemplateinstantiation.cpp:136:7:136:7 | definition of x | isfromtemplateinstantiation.cpp:135:31:135:35 | Inner | @@ -112,7 +121,94 @@ | isfromtemplateinstantiation.cpp:137:7:137:7 | y | isfromtemplateinstantiation.cpp:135:31:135:35 | Inner | | load.cpp:15:14:15:15 | definition of is | load.cpp:13:7:13:27 | basic_text_iprimitive | | load.cpp:15:14:15:15 | is | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:18:5:18:5 | basic_text_iprimitive::basic_text_iprimitive(std_istream_mockup &) | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:18:5:18:5 | definition of basic_text_iprimitive | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:18:5:18:5 | definition of basic_text_iprimitive | load.cpp:18:5:18:5 | basic_text_iprimitive::basic_text_iprimitive(std_istream_mockup &) | +| load.cpp:18:36:18:42 | definition of isParam | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:18:36:18:42 | definition of isParam | load.cpp:18:5:18:5 | basic_text_iprimitive::basic_text_iprimitive(std_istream_mockup &) | +| load.cpp:18:36:18:42 | std_istream_mockup & isParam | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:18:36:18:42 | std_istream_mockup & isParam | load.cpp:18:5:18:5 | basic_text_iprimitive::basic_text_iprimitive(std_istream_mockup &) | +| load.cpp:19:11:19:21 | constructor init of field is | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:19:11:19:21 | constructor init of field is | load.cpp:18:5:18:5 | basic_text_iprimitive::basic_text_iprimitive(std_istream_mockup &) | +| load.cpp:19:14:19:20 | (reference dereference) | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:19:14:19:20 | (reference dereference) | load.cpp:18:5:18:5 | basic_text_iprimitive::basic_text_iprimitive(std_istream_mockup &) | +| load.cpp:19:14:19:20 | (reference to) | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:19:14:19:20 | (reference to) | load.cpp:18:5:18:5 | basic_text_iprimitive::basic_text_iprimitive(std_istream_mockup &) | +| load.cpp:19:14:19:20 | isParam | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:19:14:19:20 | isParam | load.cpp:18:5:18:5 | basic_text_iprimitive::basic_text_iprimitive(std_istream_mockup &) | +| load.cpp:19:23:19:24 | { ... } | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:19:23:19:24 | { ... } | load.cpp:18:5:18:5 | basic_text_iprimitive::basic_text_iprimitive(std_istream_mockup &) | +| load.cpp:19:24:19:24 | return ... | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:19:24:19:24 | return ... | load.cpp:18:5:18:5 | basic_text_iprimitive::basic_text_iprimitive(std_istream_mockup &) | +| load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:22:10:22:10 | definition of load | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:22:10:22:10 | definition of load | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | | load.cpp:22:10:22:13 | basic_text_iprimitive::load(T &) | load.cpp:13:7:13:27 | basic_text_iprimitive | | load.cpp:22:10:22:13 | declaration of load | load.cpp:13:7:13:27 | basic_text_iprimitive | | load.cpp:22:19:22:19 | T & t | load.cpp:13:7:13:27 | basic_text_iprimitive | | load.cpp:22:19:22:19 | declaration of t | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:22:19:22:19 | definition of t | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:22:19:22:19 | definition of t | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | +| load.cpp:22:19:22:19 | short & t | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:22:19:22:19 | short & t | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | +| load.cpp:23:5:25:5 | { ... } | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:23:5:25:5 | { ... } | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | +| load.cpp:24:9:24:10 | (reference dereference) | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:24:9:24:10 | (reference dereference) | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | +| load.cpp:24:9:24:10 | is | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:24:9:24:10 | is | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | +| load.cpp:24:9:24:10 | this | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:24:9:24:10 | this | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | +| load.cpp:24:9:24:16 | ExprStmt | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:24:9:24:16 | ExprStmt | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | +| load.cpp:24:12:24:12 | call to operator>> | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:24:12:24:12 | call to operator>> | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | +| load.cpp:24:12:24:16 | (reference dereference) | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:24:12:24:16 | (reference dereference) | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | +| load.cpp:24:15:24:15 | (reference dereference) | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:24:15:24:15 | (reference dereference) | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | +| load.cpp:24:15:24:15 | (reference to) | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:24:15:24:15 | (reference to) | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | +| load.cpp:24:15:24:15 | t | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:24:15:24:15 | t | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | +| load.cpp:25:5:25:5 | return ... | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:25:5:25:5 | return ... | load.cpp:22:10:22:10 | basic_text_iprimitive::load(short &) | +| load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:27:10:27:10 | definition of load | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:27:10:27:10 | definition of load | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:27:22:27:22 | char & t | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:27:22:27:22 | char & t | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:27:22:27:22 | definition of t | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:27:22:27:22 | definition of t | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:28:5:32:5 | { ... } | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:28:5:32:5 | { ... } | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:29:9:29:20 | declaration | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:29:9:29:20 | declaration | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:29:19:29:19 | definition of i | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:29:19:29:19 | definition of i | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:29:19:29:19 | i | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:29:19:29:19 | i | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:30:9:30:12 | call to load | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:30:9:30:12 | call to load | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:30:9:30:12 | this | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:30:9:30:12 | this | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:30:9:30:16 | ExprStmt | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:30:9:30:16 | ExprStmt | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:30:14:30:14 | (reference to) | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:30:14:30:14 | (reference to) | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:30:14:30:14 | i | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:30:14:30:14 | i | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:31:9:31:9 | (reference dereference) | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:31:9:31:9 | (reference dereference) | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:31:9:31:9 | t | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:31:9:31:9 | t | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:31:9:31:13 | ... = ... | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:31:9:31:13 | ... = ... | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:31:9:31:14 | ExprStmt | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:31:9:31:14 | ExprStmt | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:31:13:31:13 | (char)... | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:31:13:31:13 | (char)... | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:31:13:31:13 | i | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:31:13:31:13 | i | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | +| load.cpp:32:5:32:5 | return ... | load.cpp:13:7:13:27 | basic_text_iprimitive | +| load.cpp:32:5:32:5 | return ... | load.cpp:27:10:27:10 | basic_text_iprimitive::load(char &) | diff --git a/cpp/ql/test/library-tests/templates/isfromtemplateinstantiation/isfromuninstantiatedtemplate.expected b/cpp/ql/test/library-tests/templates/isfromtemplateinstantiation/isfromuninstantiatedtemplate.expected index 8a78058a7230..ce20dedcfca2 100644 --- a/cpp/ql/test/library-tests/templates/isfromtemplateinstantiation/isfromuninstantiatedtemplate.expected +++ b/cpp/ql/test/library-tests/templates/isfromtemplateinstantiation/isfromuninstantiatedtemplate.expected @@ -425,7 +425,16 @@ isFromUninstantiatedTemplate | isfromtemplateinstantiation.cpp:123:6:123:6 | f | | | Declaration | | | isfromtemplateinstantiation.cpp:128:7:128:30 | AnotherTemplateClass | | T | Declaration | | | isfromtemplateinstantiation.cpp:128:7:128:30 | AnotherTemplateClass | I | | Declaration | | +| isfromtemplateinstantiation.cpp:129:6:129:6 | definition of f | | T | Definition | | +| isfromtemplateinstantiation.cpp:129:6:129:6 | definition of f | I | | Definition | | | isfromtemplateinstantiation.cpp:129:6:129:6 | f | | T | Declaration | | +| isfromtemplateinstantiation.cpp:129:6:129:6 | f | I | | Declaration | | +| isfromtemplateinstantiation.cpp:129:10:129:22 | { ... } | | T | Stmt | | +| isfromtemplateinstantiation.cpp:129:10:129:22 | { ... } | I | | Stmt | | +| isfromtemplateinstantiation.cpp:129:12:129:20 | return ... | | T | Stmt | | +| isfromtemplateinstantiation.cpp:129:12:129:20 | return ... | I | | Stmt | | +| isfromtemplateinstantiation.cpp:129:19:129:19 | 1 | | T | Expr | | +| isfromtemplateinstantiation.cpp:129:19:129:19 | 1 | I | | Expr | | | isfromtemplateinstantiation.cpp:134:29:134:33 | Outer | | T | Declaration | | | isfromtemplateinstantiation.cpp:134:29:134:33 | Outer | I | | Declaration | | | isfromtemplateinstantiation.cpp:135:31:135:35 | Inner | | T | Declaration | | @@ -461,21 +470,82 @@ isFromUninstantiatedTemplate | load.cpp:15:14:15:15 | definition of is | I | | Definition | | | load.cpp:15:14:15:15 | is | | T | Declaration | | | load.cpp:15:14:15:15 | is | I | | Declaration | | +| load.cpp:18:5:18:5 | basic_text_iprimitive | I | | Declaration | | | load.cpp:18:5:18:25 | basic_text_iprimitive | | T | Declaration | | +| load.cpp:18:36:18:42 | definition of isParam | | T | Definition | | +| load.cpp:18:36:18:42 | definition of isParam | I | | Definition | | +| load.cpp:18:36:18:42 | isParam | | T | Declaration | | +| load.cpp:18:36:18:42 | isParam | I | | Declaration | | +| load.cpp:19:11:19:21 | constructor init of field is | | T | Expr | | +| load.cpp:19:11:19:21 | constructor init of field is | I | | Expr | | | load.cpp:19:14:19:20 | (reference dereference) | | T | Expr | | +| load.cpp:19:14:19:20 | (reference dereference) | I | | Expr | | | load.cpp:19:14:19:20 | (reference to) | | T | Expr | | +| load.cpp:19:14:19:20 | (reference to) | I | | Expr | | | load.cpp:19:14:19:20 | isParam | | T | Expr | Ref | +| load.cpp:19:14:19:20 | isParam | I | | Expr | Ref | +| load.cpp:19:23:19:24 | { ... } | | T | Stmt | | +| load.cpp:19:23:19:24 | { ... } | I | | Stmt | | +| load.cpp:19:24:19:24 | return ... | | T | Stmt | | +| load.cpp:19:24:19:24 | return ... | I | | Stmt | | +| load.cpp:22:10:22:10 | load | I | | Declaration | | | load.cpp:22:10:22:13 | load | | T | Declaration | | | load.cpp:22:10:22:13 | load | I | T | Declaration | | +| load.cpp:22:19:22:19 | definition of t | | T | Definition | | +| load.cpp:22:19:22:19 | definition of t | I | | Definition | | | load.cpp:22:19:22:19 | t | | T | Declaration | | +| load.cpp:22:19:22:19 | t | I | | Declaration | | | load.cpp:22:19:22:19 | t | I | T | Declaration | | +| load.cpp:23:5:25:5 | { ... } | | T | Stmt | | +| load.cpp:23:5:25:5 | { ... } | I | | Stmt | | | load.cpp:24:9:24:10 | (reference dereference) | | T | Expr | | +| load.cpp:24:9:24:10 | (reference dereference) | I | | Expr | | | load.cpp:24:9:24:10 | is | | T | Expr | Not ref | +| load.cpp:24:9:24:10 | is | I | | Expr | Not ref | | load.cpp:24:9:24:10 | this | | T | Expr | | +| load.cpp:24:9:24:10 | this | I | | Expr | | +| load.cpp:24:9:24:16 | ExprStmt | | T | Stmt | | +| load.cpp:24:9:24:16 | ExprStmt | I | | Stmt | | | load.cpp:24:15:24:15 | (reference dereference) | | T | Expr | | +| load.cpp:24:15:24:15 | (reference dereference) | I | | Expr | | +| load.cpp:24:15:24:15 | (reference to) | I | | Expr | | | load.cpp:24:15:24:15 | t | | T | Expr | Not ref | +| load.cpp:24:15:24:15 | t | I | | Expr | Ref | +| load.cpp:25:5:25:5 | return ... | | T | Stmt | | +| load.cpp:25:5:25:5 | return ... | I | | Stmt | | +| load.cpp:27:10:27:10 | load | I | | Declaration | | | load.cpp:27:10:27:13 | load | | T | Declaration | | +| load.cpp:27:22:27:22 | definition of t | | T | Definition | | +| load.cpp:27:22:27:22 | definition of t | I | | Definition | | +| load.cpp:27:22:27:22 | t | | T | Declaration | | +| load.cpp:27:22:27:22 | t | I | | Declaration | | +| load.cpp:28:5:32:5 | { ... } | | T | Stmt | | +| load.cpp:28:5:32:5 | { ... } | I | | Stmt | | +| load.cpp:29:9:29:20 | declaration | | T | Stmt | | +| load.cpp:29:9:29:20 | declaration | I | | Stmt | | +| load.cpp:29:19:29:19 | definition of i | | T | Definition | | +| load.cpp:29:19:29:19 | definition of i | I | | Definition | | +| load.cpp:29:19:29:19 | i | | T | Declaration | | +| load.cpp:29:19:29:19 | i | I | | Declaration | | +| load.cpp:30:9:30:12 | Unknown literal | | T | Expr | | +| load.cpp:30:9:30:12 | call to load | I | | Expr | | +| load.cpp:30:9:30:12 | this | I | | Expr | | +| load.cpp:30:9:30:16 | ExprStmt | | T | Stmt | | +| load.cpp:30:9:30:16 | ExprStmt | I | | Stmt | | +| load.cpp:30:14:30:14 | (reference to) | I | | Expr | | +| load.cpp:30:14:30:14 | i | | T | Expr | Not ref | +| load.cpp:30:14:30:14 | i | I | | Expr | Ref | | load.cpp:31:9:31:9 | (reference dereference) | | T | Expr | | +| load.cpp:31:9:31:9 | (reference dereference) | I | | Expr | | | load.cpp:31:9:31:9 | t | | T | Expr | Not ref | +| load.cpp:31:9:31:9 | t | I | | Expr | Not ref | +| load.cpp:31:9:31:13 | ... = ... | | T | Expr | | +| load.cpp:31:9:31:13 | ... = ... | I | | Expr | | +| load.cpp:31:9:31:14 | ExprStmt | | T | Stmt | | +| load.cpp:31:9:31:14 | ExprStmt | I | | Stmt | | | load.cpp:31:13:31:13 | (char)... | | T | Expr | | +| load.cpp:31:13:31:13 | (char)... | I | | Expr | | | load.cpp:31:13:31:13 | i | | T | Expr | Not ref | +| load.cpp:31:13:31:13 | i | I | | Expr | Not ref | +| load.cpp:32:5:32:5 | return ... | | T | Stmt | | +| load.cpp:32:5:32:5 | return ... | I | | Stmt | | diff --git a/cpp/ql/test/library-tests/templates/switch/test.expected b/cpp/ql/test/library-tests/templates/switch/test.expected index 1ba49e1caf9d..b4124494ffeb 100644 --- a/cpp/ql/test/library-tests/templates/switch/test.expected +++ b/cpp/ql/test/library-tests/templates/switch/test.expected @@ -1 +1,2 @@ | test.cpp:13:3:20:3 | switch (...) ... | 3 | +| test.cpp:13:3:20:3 | switch (...) ... | 3 | 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 3539e52eecfb..e6c8b1d9406b 100644 --- a/cpp/ql/test/library-tests/templates/type_instantiations/types.expected +++ b/cpp/ql/test/library-tests/templates/type_instantiations/types.expected @@ -5,10 +5,13 @@ | file://:0:0:0:0 | _Complex _Float64 | | file://:0:0:0:0 | _Complex _Float64x | | file://:0:0:0:0 | _Complex _Float128 | +| file://:0:0:0:0 | _Complex __bf16 | | file://:0:0:0:0 | _Complex __float128 | +| file://:0:0:0:0 | _Complex __fp16 | | file://:0:0:0:0 | _Complex double | | file://:0:0:0:0 | _Complex float | | file://:0:0:0:0 | _Complex long double | +| file://:0:0:0:0 | _Complex std::float16_t | | file://:0:0:0:0 | _Decimal32 | | file://:0:0:0:0 | _Decimal64 | | file://:0:0:0:0 | _Decimal128 | @@ -21,10 +24,12 @@ | file://:0:0:0:0 | _Imaginary double | | file://:0:0:0:0 | _Imaginary float | | file://:0:0:0:0 | _Imaginary long double | +| file://:0:0:0:0 | __SVCount_t | | file://:0:0:0:0 | __bf16 | | 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 b7bc9e04fe34..ac1344753e9c 100644 --- a/cpp/ql/test/library-tests/type_sizes/type_sizes.expected +++ b/cpp/ql/test/library-tests/type_sizes/type_sizes.expected @@ -25,10 +25,13 @@ | file://:0:0:0:0 | _Complex _Float64 | 16 | | file://:0:0:0:0 | _Complex _Float64x | 32 | | file://:0:0:0:0 | _Complex _Float128 | 32 | +| file://:0:0:0:0 | _Complex __bf16 | 4 | | file://:0:0:0:0 | _Complex __float128 | 32 | +| file://:0:0:0:0 | _Complex __fp16 | 4 | | file://:0:0:0:0 | _Complex double | 16 | | file://:0:0:0:0 | _Complex float | 8 | | file://:0:0:0:0 | _Complex long double | 32 | +| file://:0:0:0:0 | _Complex std::float16_t | 4 | | file://:0:0:0:0 | _Decimal32 | 4 | | file://:0:0:0:0 | _Decimal64 | 8 | | file://:0:0:0:0 | _Decimal128 | 16 | @@ -41,11 +44,13 @@ | file://:0:0:0:0 | _Imaginary double | 8 | | file://:0:0:0:0 | _Imaginary float | 4 | | file://:0:0:0:0 | _Imaginary long double | 16 | +| file://:0:0:0:0 | __SVCount_t | 0 | | file://:0:0:0:0 | __attribute((vector_size(16))) int | 16 | | file://:0:0:0:0 | __bf16 | 2 | | 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 00ae3fa5d8f3..3f22b9f98f52 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 @@ -7,10 +7,13 @@ | file://:0:0:0:0 | _Complex _Float64 | _Complex _Float64 | | file://:0:0:0:0 | _Complex _Float64x | _Complex _Float64x | | file://:0:0:0:0 | _Complex _Float128 | _Complex _Float128 | +| file://:0:0:0:0 | _Complex __bf16 | _Complex __bf16 | | file://:0:0:0:0 | _Complex __float128 | _Complex __float128 | +| file://:0:0:0:0 | _Complex __fp16 | _Complex __fp16 | | file://:0:0:0:0 | _Complex double | _Complex double | | file://:0:0:0:0 | _Complex float | _Complex float | | file://:0:0:0:0 | _Complex long double | _Complex long double | +| file://:0:0:0:0 | _Complex std::float16_t | _Complex std::float16_t | | file://:0:0:0:0 | _Decimal32 | _Decimal32 | | file://:0:0:0:0 | _Decimal64 | _Decimal64 | | file://:0:0:0:0 | _Decimal128 | _Decimal128 | @@ -23,10 +26,12 @@ | file://:0:0:0:0 | _Imaginary double | _Imaginary double | | file://:0:0:0:0 | _Imaginary float | _Imaginary float | | file://:0:0:0:0 | _Imaginary long double | _Imaginary long double | +| file://:0:0:0:0 | __SVCount_t | __SVCount_t | | file://:0:0:0:0 | __bf16 | __bf16 | | 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 6ecf14875ca4..c2ea5f7cfe3c 100644 --- a/cpp/ql/test/library-tests/variables/variables/types.expected +++ b/cpp/ql/test/library-tests/variables/variables/types.expected @@ -6,10 +6,13 @@ | _Complex _Float64 | BinaryFloatingPointType, ComplexNumberType | | | | | | _Complex _Float64x | BinaryFloatingPointType, ComplexNumberType | | | | | | _Complex _Float128 | BinaryFloatingPointType, ComplexNumberType | | | | | +| _Complex __bf16 | BinaryFloatingPointType, ComplexNumberType | | | | | | _Complex __float128 | BinaryFloatingPointType, ComplexNumberType | | | | | +| _Complex __fp16 | BinaryFloatingPointType, ComplexNumberType | | | | | | _Complex double | BinaryFloatingPointType, ComplexNumberType | | | | | | _Complex float | BinaryFloatingPointType, ComplexNumberType | | | | | | _Complex long double | BinaryFloatingPointType, ComplexNumberType | | | | | +| _Complex std::float16_t | BinaryFloatingPointType, ComplexNumberType | | | | | | _Decimal32 | Decimal32Type | | | | | | _Decimal64 | Decimal64Type | | | | | | _Decimal128 | Decimal128Type | | | | | @@ -22,10 +25,12 @@ | _Imaginary double | BinaryFloatingPointType, ImaginaryNumberType | | | | | | _Imaginary float | BinaryFloatingPointType, ImaginaryNumberType | | | | | | _Imaginary long double | BinaryFloatingPointType, ImaginaryNumberType | | | | | +| __SVCount_t | ScalableVectorCount | | | | | | __bf16 | BinaryFloatingPointType, RealNumberType | | | | | | __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/cpp/ql/test/query-tests/Critical/GlobalUseBeforeInit/GlobalUseBeforeInit.expected b/cpp/ql/test/query-tests/Critical/GlobalUseBeforeInit/GlobalUseBeforeInit.expected index c7c2d1ffad49..8298707a6b0a 100644 --- a/cpp/ql/test/query-tests/Critical/GlobalUseBeforeInit/GlobalUseBeforeInit.expected +++ b/cpp/ql/test/query-tests/Critical/GlobalUseBeforeInit/GlobalUseBeforeInit.expected @@ -1 +1,2 @@ -| test.cpp:27:5:27:6 | f1 | The variable $@ is used in this function but may not be initialized when it is called. | test.cpp:14:5:14:5 | b | b | +| test.cpp:28:5:28:6 | f1 | The variable $@ is used in this function but may not be initialized when it is called. | test.cpp:14:5:14:5 | b | b | +| test.cpp:39:5:39:8 | main | The variable $@ is used in this function but may not be initialized when it is called. | test.cpp:14:5:14:5 | b | b | diff --git a/cpp/ql/test/query-tests/Critical/GlobalUseBeforeInit/test.cpp b/cpp/ql/test/query-tests/Critical/GlobalUseBeforeInit/test.cpp index fcecf6c5c44a..81883a1a8a16 100644 --- a/cpp/ql/test/query-tests/Critical/GlobalUseBeforeInit/test.cpp +++ b/cpp/ql/test/query-tests/Critical/GlobalUseBeforeInit/test.cpp @@ -12,6 +12,7 @@ int vfprintf (FILE *, const char *, va_list); int a = 1; int b; +int *c; int my_printf(const char * fmt, ...) { @@ -31,8 +32,15 @@ int f1() return 0; } +void f2() { + my_printf("%d\n", b); // GOOD +} + int main() { - int b = f1(); + unsigned size = sizeof(*c); // GOOD + my_printf("%d\n", b); // BAD + b = f1(); + f2(); return 0; -} \ No newline at end of file +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft/WrongTypeFormatArguments.expected b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft/WrongTypeFormatArguments.expected index 8a05434fde65..6e17cecc33b9 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft/WrongTypeFormatArguments.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft/WrongTypeFormatArguments.expected @@ -10,6 +10,8 @@ | printf1.h:44:18:44:20 | ull | This format specifier for type 'int' does not match the argument type 'unsigned long long'. | | printf1.h:45:18:45:20 | ull | This format specifier for type 'unsigned int' does not match the argument type 'unsigned long long'. | | printf1.h:46:18:46:20 | ull | This format specifier for type 'unsigned int' does not match the argument type 'unsigned long long'. | +| printf1.h:62:19:62:20 | ul | This format specifier for type 'size_t' does not match the argument type 'unsigned long'. | +| printf1.h:68:19:68:21 | sst | This format specifier for type 'size_t' does not match the argument type 'long'. | | printf1.h:71:19:71:20 | st | This format specifier for type 'ssize_t' does not match the argument type 'unsigned long long'. | | printf1.h:72:19:72:20 | ST | This format specifier for type 'ssize_t' does not match the argument type 'unsigned long long'. | | printf1.h:73:19:73:22 | c_st | This format specifier for type 'ssize_t' does not match the argument type 'unsigned long long'. | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft/printf1.h b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft/printf1.h index e2d4f50fc1f3..2fb361d485c5 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft/printf1.h +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft/printf1.h @@ -59,13 +59,13 @@ void g() const SIZE_T C_ST = sizeof(st); ssize_t sst; - printf("%zu", ul); // ok (dubious, e.g. on 64-bit Windows `long` is 4 bytes but `size_t` is 8) + printf("%zu", ul); // not ok printf("%zu", st); // ok printf("%zu", ST); // ok printf("%zu", c_st); // ok printf("%zu", C_ST); // ok printf("%zu", sizeof(ul)); // ok - printf("%zu", sst); // not ok [NOT DETECTED] + printf("%zu", sst); // not ok printf("%zd", ul); // not ok [NOT DETECTED] printf("%zd", st); // not ok diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft_no_wchar/WrongTypeFormatArguments.expected b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft_no_wchar/WrongTypeFormatArguments.expected index f50708f9eb4c..0958cba59e72 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft_no_wchar/WrongTypeFormatArguments.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft_no_wchar/WrongTypeFormatArguments.expected @@ -10,6 +10,8 @@ | printf1.h:44:18:44:20 | ull | This format specifier for type 'int' does not match the argument type 'unsigned long long'. | | printf1.h:45:18:45:20 | ull | This format specifier for type 'unsigned int' does not match the argument type 'unsigned long long'. | | printf1.h:46:18:46:20 | ull | This format specifier for type 'unsigned int' does not match the argument type 'unsigned long long'. | +| printf1.h:62:19:62:20 | ul | This format specifier for type 'size_t' does not match the argument type 'unsigned long'. | +| printf1.h:68:19:68:21 | sst | This format specifier for type 'size_t' does not match the argument type 'long'. | | printf1.h:71:19:71:20 | st | This format specifier for type 'ssize_t' does not match the argument type 'unsigned long long'. | | printf1.h:72:19:72:20 | ST | This format specifier for type 'ssize_t' does not match the argument type 'unsigned long long'. | | printf1.h:73:19:73:22 | c_st | This format specifier for type 'ssize_t' does not match the argument type 'unsigned long long'. | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft_no_wchar/printf1.h b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft_no_wchar/printf1.h index 223ffc6a2128..8222cfa67b25 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft_no_wchar/printf1.h +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Microsoft_no_wchar/printf1.h @@ -59,13 +59,13 @@ void g() const SIZE_T C_ST = sizeof(st); ssize_t sst; - printf("%zu", ul); // ok (dubious, e.g. on 64-bit Windows `long` is 4 bytes but `size_t` is 8) + printf("%zu", ul); // not ok printf("%zu", st); // ok printf("%zu", ST); // ok printf("%zu", c_st); // ok printf("%zu", C_ST); // ok printf("%zu", sizeof(ul)); // ok - printf("%zu", sst); // not ok [NOT DETECTED] + printf("%zu", sst); // not ok printf("%zd", ul); // not ok [NOT DETECTED] printf("%zd", st); // not ok diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/SqlTainted.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/SqlTainted.expected index 0a554d96f6d3..df780acdd8d0 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/SqlTainted.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/SqlTainted.expected @@ -1,3 +1,11 @@ +#select +| test.c:21:18:21:23 | query1 | test.c:14:27:14:30 | **argv | test.c:21:18:21:23 | *query1 | This argument to a SQL query function is derived from $@ and then passed to mysql_query(sqlArg). | test.c:14:27:14:30 | **argv | user input (a command-line argument) | +| test.c:51:18:51:23 | query1 | test.c:14:27:14:30 | **argv | test.c:51:18:51:23 | *query1 | This argument to a SQL query function is derived from $@ and then passed to mysql_query(sqlArg). | test.c:14:27:14:30 | **argv | user input (a command-line argument) | +| test.c:76:17:76:25 | userInput | test.c:75:8:75:16 | gets output argument | test.c:76:17:76:25 | *userInput | This argument to a SQL query function is derived from $@ and then passed to SQLPrepare(StatementText). | test.c:75:8:75:16 | gets output argument | user input (string read by gets) | +| test.c:77:20:77:28 | userInput | test.c:75:8:75:16 | gets output argument | test.c:77:20:77:28 | *userInput | This argument to a SQL query function is derived from $@ and then passed to SQLExecDirect(StatementText). | test.c:75:8:75:16 | gets output argument | user input (string read by gets) | +| test.c:106:24:106:29 | query1 | test.c:101:8:101:16 | gets output argument | test.c:106:24:106:29 | *query1 | This argument to a SQL query function is derived from $@. | test.c:101:8:101:16 | gets output argument | user input (string read by gets) | +| test.c:107:28:107:33 | query1 | test.c:101:8:101:16 | gets output argument | test.c:107:28:107:33 | *query1 | This argument to a SQL query function is derived from $@. | test.c:101:8:101:16 | gets output argument | user input (string read by gets) | +| test.cpp:43:27:43:33 | access to array | test.cpp:39:27:39:30 | **argv | test.cpp:43:27:43:33 | *access to array | This argument to a SQL query function is derived from $@ and then passed to pqxx::work::exec1((unnamed parameter 0)). | test.cpp:39:27:39:30 | **argv | user input (a command-line argument) | edges | test.c:14:27:14:30 | **argv | test.c:15:20:15:26 | *access to array | provenance | | | test.c:15:20:15:26 | *access to array | test.c:21:18:21:23 | *query1 | provenance | TaintFunction | @@ -9,7 +17,12 @@ edges | test.c:48:20:48:33 | *globalUsername | test.c:51:18:51:23 | *query1 | provenance | TaintFunction | | test.c:75:8:75:16 | gets output argument | test.c:76:17:76:25 | *userInput | provenance | | | test.c:75:8:75:16 | gets output argument | test.c:77:20:77:28 | *userInput | provenance | | +| test.c:101:8:101:16 | gets output argument | test.c:106:24:106:29 | *query1 | provenance | TaintFunction Sink:MaD:2 | +| test.c:101:8:101:16 | gets output argument | test.c:107:28:107:33 | *query1 | provenance | TaintFunction Sink:MaD:1 | | test.cpp:39:27:39:30 | **argv | test.cpp:43:27:43:33 | *access to array | provenance | | +models +| 1 | Sink: ; ; false; OCIStmtPrepare2; ; ; Argument[*3]; sql-injection; manual | +| 2 | Sink: ; ; false; OCIStmtPrepare; ; ; Argument[*2]; sql-injection; manual | nodes | test.c:14:27:14:30 | **argv | semmle.label | **argv | | test.c:15:20:15:26 | *access to array | semmle.label | *access to array | @@ -23,12 +36,9 @@ nodes | test.c:75:8:75:16 | gets output argument | semmle.label | gets output argument | | test.c:76:17:76:25 | *userInput | semmle.label | *userInput | | test.c:77:20:77:28 | *userInput | semmle.label | *userInput | +| test.c:101:8:101:16 | gets output argument | semmle.label | gets output argument | +| test.c:106:24:106:29 | *query1 | semmle.label | *query1 | +| test.c:107:28:107:33 | *query1 | semmle.label | *query1 | | test.cpp:39:27:39:30 | **argv | semmle.label | **argv | | test.cpp:43:27:43:33 | *access to array | semmle.label | *access to array | subpaths -#select -| test.c:21:18:21:23 | query1 | test.c:14:27:14:30 | **argv | test.c:21:18:21:23 | *query1 | This argument to a SQL query function is derived from $@ and then passed to mysql_query(sqlArg). | test.c:14:27:14:30 | **argv | user input (a command-line argument) | -| test.c:51:18:51:23 | query1 | test.c:14:27:14:30 | **argv | test.c:51:18:51:23 | *query1 | This argument to a SQL query function is derived from $@ and then passed to mysql_query(sqlArg). | test.c:14:27:14:30 | **argv | user input (a command-line argument) | -| test.c:76:17:76:25 | userInput | test.c:75:8:75:16 | gets output argument | test.c:76:17:76:25 | *userInput | This argument to a SQL query function is derived from $@ and then passed to SQLPrepare(StatementText). | test.c:75:8:75:16 | gets output argument | user input (string read by gets) | -| test.c:77:20:77:28 | userInput | test.c:75:8:75:16 | gets output argument | test.c:77:20:77:28 | *userInput | This argument to a SQL query function is derived from $@ and then passed to SQLExecDirect(StatementText). | test.c:75:8:75:16 | gets output argument | user input (string read by gets) | -| test.cpp:43:27:43:33 | access to array | test.cpp:39:27:39:30 | **argv | test.cpp:43:27:43:33 | *access to array | This argument to a SQL query function is derived from $@ and then passed to pqxx::work::exec1((unnamed parameter 0)). | test.cpp:39:27:39:30 | **argv | user input (a command-line argument) | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/SqlTainted.qlref b/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/SqlTainted.qlref index 21a12e5eadd7..0519b7976c37 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/SqlTainted.qlref +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/SqlTainted.qlref @@ -1 +1,5 @@ -Security/CWE/CWE-089/SqlTainted.ql +query: Security/CWE/CWE-089/SqlTainted.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql + \ No newline at end of file diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/test.c b/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/test.c index 9e9a4dcc8365..11766347306b 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/test.c +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/test.c @@ -11,14 +11,14 @@ int atoi(const char *nptr); void exit(int i); ///// Test code ///// -int main(int argc, char** argv) { +int main(int argc, char** argv) { // $ Source char *userName = argv[2]; int userNumber = atoi(argv[3]); // a string from the user is injected directly into an SQL query. char query1[1000] = {0}; snprintf(query1, 1000, "SELECT UID FROM USERS where name = \"%s\"", userName); - mysql_query(0, query1); // BAD + mysql_query(0, query1); // $ Alert // the user string is encoded by a library routine. char userNameSanitized[1000] = {0}; @@ -48,7 +48,7 @@ void badFunc() { char *userName = globalUsername; char query1[1000] = {0}; snprintf(query1, 1000, "SELECT UID FROM USERS where name = \"%s\"", userName); - mysql_query(0, query1); // BAD + mysql_query(0, query1); // $ Alert } //ODBC Library Rountines @@ -72,7 +72,44 @@ SQLRETURN SQLPrepare( void ODBCTests(){ char userInput[100]; - gets(userInput); - SQLPrepare(0, userInput, 100); // BAD - SQLExecDirect(0, userInput, 100); // BAD + gets(userInput); // $ Source + SQLPrepare(0, userInput, 100); // $ Alert + SQLExecDirect(0, userInput, 100); // $ Alert +} + +// Oracle Call Interface (OCI) Routines +int OCIStmtPrepare( + void *arg0, + void *arg1, + const unsigned char *sql, + unsigned int arg3, + unsigned int arg4, + unsigned int arg5); +int OCIStmtPrepare2( + void *arg0, + void **arg1, + void *arg2, + const unsigned char *sql, + unsigned int arg4, + const unsigned char *arg5, + unsigned int arg6, + unsigned int arg7, + unsigned int arg8); + +void OCITests(){ + char userInput[100]; + gets(userInput); // $ Source + + // a string from the user is injected directly into an SQL query. + char query1[1000] = {0}; + snprintf(query1, 1000, "SELECT UID FROM USERS where name = \"%s\"", userInput); + OCIStmtPrepare(0, 0, query1, 0, 0, 0); // $ Alert + OCIStmtPrepare2(0, 0, 0, query1, 0, 0, 0, 0, 0); // $ Alert + + // an integer from the user is injected into an SQL query. + int userNumber = atoi(userInput); + char query2[1000] = {0}; + snprintf(query2, 1000, "SELECT UID FROM USERS where number = \"%i\"", userNumber); + OCIStmtPrepare(0, 0, query2, 0, 0, 0); // GOOD + OCIStmtPrepare2(0, 0, 0, query2, 0, 0, 0, 0, 0); // GOOD } \ No newline at end of file diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/test.cpp index 8bdf7dded232..9dc7aed970ea 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/test.cpp @@ -36,11 +36,11 @@ namespace pqxx { }; } -int main(int argc, char** argv) { +int main(int argc, char** argv) { // $ Source pqxx::connection c; pqxx::work w(c); - pqxx::row r = w.exec1(argv[1]); // BAD + pqxx::row r = w.exec1(argv[1]); // $ Alert pqxx::result r2 = w.exec(w.quote(argv[1])); // GOOD diff --git a/csharp/documentation/library-coverage/coverage.csv b/csharp/documentation/library-coverage/coverage.csv index 70a2dfec6cc0..ea5961f0c4ee 100644 --- a/csharp/documentation/library-coverage/coverage.csv +++ b/csharp/documentation/library-coverage/coverage.csv @@ -15,6 +15,7 @@ Microsoft.AspNetCore.Http,,,1,,,,,,,,,,,,,,,,,,,1, Microsoft.AspNetCore.Mvc,,,2,,,,,,,,,,,,,,,,,,,,2 Microsoft.AspNetCore.WebUtilities,,,2,,,,,,,,,,,,,,,,,,,2, Microsoft.CSharp,,,2,,,,,,,,,,,,,,,,,,,2, +Microsoft.Data.SqlClient,7,,4,,,,,,,,,,7,,,,,,,,,4, Microsoft.Diagnostics.Tools.Pgo,,,21,,,,,,,,,,,,,,,,,,,,21 Microsoft.DotNet.Build.Tasks,,,11,,,,,,,,,,,,,,,,,,,9,2 Microsoft.DotNet.PlatformAbstractions,,,1,,,,,,,,,,,,,,,,,,,1, diff --git a/csharp/documentation/library-coverage/coverage.rst b/csharp/documentation/library-coverage/coverage.rst index 6762de6ed129..6ab5a55b3e68 100644 --- a/csharp/documentation/library-coverage/coverage.rst +++ b/csharp/documentation/library-coverage/coverage.rst @@ -9,6 +9,6 @@ C# framework & library support Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE-079` :sub:`Cross-site scripting` `ServiceStack `_,"``ServiceStack.*``, ``ServiceStack``",,7,194, System,"``System.*``, ``System``",47,12139,54,5 - Others,"``Amazon.Lambda.APIGatewayEvents``, ``Amazon.Lambda.Core``, ``Dapper``, ``ILCompiler``, ``ILLink.RoslynAnalyzer``, ``ILLink.Shared``, ``ILLink.Tasks``, ``Internal.IL``, ``Internal.Pgo``, ``Internal.TypeSystem``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.AspNetCore.Components``, ``Microsoft.AspNetCore.Http``, ``Microsoft.AspNetCore.Mvc``, ``Microsoft.AspNetCore.WebUtilities``, ``Microsoft.CSharp``, ``Microsoft.Diagnostics.Tools.Pgo``, ``Microsoft.DotNet.Build.Tasks``, ``Microsoft.DotNet.PlatformAbstractions``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.Diagnostics.Metrics``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.JSInterop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.VisualBasic``, ``Microsoft.Win32``, ``Mono.Linker``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``SourceGenerators``, ``Windows.Security.Cryptography.Core``",60,2253,152,4 - Totals,,107,14399,400,9 + Others,"``Amazon.Lambda.APIGatewayEvents``, ``Amazon.Lambda.Core``, ``Dapper``, ``ILCompiler``, ``ILLink.RoslynAnalyzer``, ``ILLink.Shared``, ``ILLink.Tasks``, ``Internal.IL``, ``Internal.Pgo``, ``Internal.TypeSystem``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.AspNetCore.Components``, ``Microsoft.AspNetCore.Http``, ``Microsoft.AspNetCore.Mvc``, ``Microsoft.AspNetCore.WebUtilities``, ``Microsoft.CSharp``, ``Microsoft.Data.SqlClient``, ``Microsoft.Diagnostics.Tools.Pgo``, ``Microsoft.DotNet.Build.Tasks``, ``Microsoft.DotNet.PlatformAbstractions``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.Diagnostics.Metrics``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.JSInterop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.VisualBasic``, ``Microsoft.Win32``, ``Mono.Linker``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``SourceGenerators``, ``Windows.Security.Cryptography.Core``",60,2257,159,4 + Totals,,107,14403,407,9 diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 127bb19bbc64..99267b32a407 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.43 + +No user-facing changes. + ## 1.7.42 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.43.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.43.md new file mode 100644 index 000000000000..10a22c6b4bea --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.43.md @@ -0,0 +1,3 @@ +## 1.7.43 + +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 8317cee0ddb3..9b37539bf65f 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.42 +lastReleaseVersion: 1.7.43 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 212ac56d39d6..b9e0c245b855 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.42 +version: 1.7.44-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 127bb19bbc64..99267b32a407 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.43 + +No user-facing changes. + ## 1.7.42 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.43.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.43.md new file mode 100644 index 000000000000..10a22c6b4bea --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.43.md @@ -0,0 +1,3 @@ +## 1.7.43 + +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 8317cee0ddb3..9b37539bf65f 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.42 +lastReleaseVersion: 1.7.43 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 16bf35874035..7cf7f04a63ad 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.42 +version: 1.7.44-dev groups: - csharp - solorigate diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected new file mode 100644 index 000000000000..53810418624d --- /dev/null +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected @@ -0,0 +1,72 @@ +ql/csharp/ql/src/API Abuse/CallToGCCollect.ql +ql/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql +ql/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql +ql/csharp/ql/src/API Abuse/FormatInvalid.ql +ql/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql +ql/csharp/ql/src/API Abuse/NullArgumentToEquals.ql +ql/csharp/ql/src/ASP/BlockCodeResponseWrite.ql +ql/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql +ql/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql +ql/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql +ql/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql +ql/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql +ql/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql +ql/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql +ql/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql +ql/csharp/ql/src/Bad Practices/PathCombine.ql +ql/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql +ql/csharp/ql/src/CSI/CompareIdenticalValues.ql +ql/csharp/ql/src/CSI/NullAlways.ql +ql/csharp/ql/src/CSI/NullMaybe.ql +ql/csharp/ql/src/Concurrency/FutileSyncOnField.ql +ql/csharp/ql/src/Concurrency/LockOrder.ql +ql/csharp/ql/src/Concurrency/LockThis.ql +ql/csharp/ql/src/Concurrency/LockedWait.ql +ql/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql +ql/csharp/ql/src/Documentation/XmldocMissingSummary.ql +ql/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql +ql/csharp/ql/src/Language Abuse/CatchOfGenericException.ql +ql/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql +ql/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql +ql/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql +ql/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql +ql/csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql +ql/csharp/ql/src/Language Abuse/NestedIf.ql +ql/csharp/ql/src/Language Abuse/RethrowException.ql +ql/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql +ql/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql +ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql +ql/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql +ql/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql +ql/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +ql/csharp/ql/src/Likely Bugs/ConstantComparison.ql +ql/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql +ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql +ql/csharp/ql/src/Likely Bugs/EqualsArray.ql +ql/csharp/ql/src/Likely Bugs/HashedButNoHash.ql +ql/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql +ql/csharp/ql/src/Likely Bugs/IncomparableEquals.ql +ql/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql +ql/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql +ql/csharp/ql/src/Likely Bugs/RecursiveEquals.ql +ql/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql +ql/csharp/ql/src/Likely Bugs/SelfAssignment.ql +ql/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql +ql/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql +ql/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql +ql/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql +ql/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql +ql/csharp/ql/src/Linq/MissedAllOpportunity.ql +ql/csharp/ql/src/Linq/MissedCastOpportunity.ql +ql/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql +ql/csharp/ql/src/Linq/MissedSelectOpportunity.ql +ql/csharp/ql/src/Linq/MissedWhereOpportunity.ql +ql/csharp/ql/src/Linq/RedundantSelect.ql +ql/csharp/ql/src/Performance/StringBuilderInLoop.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/FutileConditional.ql +ql/csharp/ql/src/Useless code/IntGetHashCode.ql +ql/csharp/ql/src/Useless code/RedundantToStringCall.ql +ql/csharp/ql/src/Useless code/UnusedLabel.ql 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 14934899e0d8..53810418624d 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 @@ -1,16 +1,72 @@ ql/csharp/ql/src/API Abuse/CallToGCCollect.ql +ql/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql +ql/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql ql/csharp/ql/src/API Abuse/FormatInvalid.ql ql/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql +ql/csharp/ql/src/API Abuse/NullArgumentToEquals.ql +ql/csharp/ql/src/ASP/BlockCodeResponseWrite.ql +ql/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql +ql/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql ql/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql +ql/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql +ql/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql +ql/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql +ql/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql +ql/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql +ql/csharp/ql/src/Bad Practices/PathCombine.ql +ql/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql +ql/csharp/ql/src/CSI/CompareIdenticalValues.ql +ql/csharp/ql/src/CSI/NullAlways.ql +ql/csharp/ql/src/CSI/NullMaybe.ql +ql/csharp/ql/src/Concurrency/FutileSyncOnField.ql +ql/csharp/ql/src/Concurrency/LockOrder.ql +ql/csharp/ql/src/Concurrency/LockThis.ql +ql/csharp/ql/src/Concurrency/LockedWait.ql ql/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql +ql/csharp/ql/src/Documentation/XmldocMissingSummary.ql +ql/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql +ql/csharp/ql/src/Language Abuse/CatchOfGenericException.ql +ql/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql +ql/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql ql/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql +ql/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql +ql/csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql +ql/csharp/ql/src/Language Abuse/NestedIf.ql +ql/csharp/ql/src/Language Abuse/RethrowException.ql +ql/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql +ql/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql ql/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql +ql/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql +ql/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +ql/csharp/ql/src/Likely Bugs/ConstantComparison.ql ql/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql +ql/csharp/ql/src/Likely Bugs/EqualsArray.ql +ql/csharp/ql/src/Likely Bugs/HashedButNoHash.ql +ql/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql +ql/csharp/ql/src/Likely Bugs/IncomparableEquals.ql +ql/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql +ql/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql +ql/csharp/ql/src/Likely Bugs/RecursiveEquals.ql ql/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql ql/csharp/ql/src/Likely Bugs/SelfAssignment.ql +ql/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql +ql/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql +ql/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql +ql/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql ql/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql +ql/csharp/ql/src/Linq/MissedAllOpportunity.ql +ql/csharp/ql/src/Linq/MissedCastOpportunity.ql +ql/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql +ql/csharp/ql/src/Linq/MissedSelectOpportunity.ql +ql/csharp/ql/src/Linq/MissedWhereOpportunity.ql +ql/csharp/ql/src/Linq/RedundantSelect.ql +ql/csharp/ql/src/Performance/StringBuilderInLoop.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/FutileConditional.ql ql/csharp/ql/src/Useless code/IntGetHashCode.ql +ql/csharp/ql/src/Useless code/RedundantToStringCall.ql +ql/csharp/ql/src/Useless code/UnusedLabel.ql diff --git a/csharp/ql/integration-tests/posix/query-suite/test.py b/csharp/ql/integration-tests/posix/query-suite/test.py index 38f0643dfbbd..0bc7182bc086 100644 --- a/csharp/ql/integration-tests/posix/query-suite/test.py +++ b/csharp/ql/integration-tests/posix/query-suite/test.py @@ -2,7 +2,7 @@ import pytest from query_suites import * -well_known_query_suites = ['csharp-code-quality.qls', 'csharp-security-and-quality.qls', 'csharp-security-extended.qls', 'csharp-code-scanning.qls'] +well_known_query_suites = ['csharp-code-quality.qls', 'csharp-code-quality-extended.qls', 'csharp-security-and-quality.qls', 'csharp-security-extended.qls', 'csharp-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 5eeedc6f77be..3124c68b6ab1 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.1.9 + +No user-facing changes. + ## 5.1.8 No user-facing changes. diff --git a/csharp/ql/lib/change-notes/released/5.1.9.md b/csharp/ql/lib/change-notes/released/5.1.9.md new file mode 100644 index 000000000000..78965f168e07 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/5.1.9.md @@ -0,0 +1,3 @@ +## 5.1.9 + +No user-facing changes. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 8ffbb79d2249..f9bf26052618 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.1.8 +lastReleaseVersion: 5.1.9 diff --git a/csharp/ql/lib/ext/Microsoft.Data.SqlClient.model.yml b/csharp/ql/lib/ext/Microsoft.Data.SqlClient.model.yml new file mode 100644 index 000000000000..ca888c801b08 --- /dev/null +++ b/csharp/ql/lib/ext/Microsoft.Data.SqlClient.model.yml @@ -0,0 +1,20 @@ +extensions: + - addsTo: + pack: codeql/csharp-all + extensible: sinkModel + data: + - ["Microsoft.Data.SqlClient", "SqlCommand", False, "SqlCommand", "(System.String)", "", "Argument[0]", "sql-injection", "manual"] + - ["Microsoft.Data.SqlClient", "SqlCommand", False, "SqlCommand", "(System.String,Microsoft.Data.SqlClient.SqlConnection)", "", "Argument[0]", "sql-injection", "manual"] + - ["Microsoft.Data.SqlClient", "SqlCommand", False, "SqlCommand", "(System.String,Microsoft.Data.SqlClient.SqlConnection,Microsoft.Data.SqlClient.SqlTransaction)", "", "Argument[0]", "sql-injection", "manual"] + - ["Microsoft.Data.SqlClient", "SqlCommand", False, "SqlCommand", "(System.String,Microsoft.Data.SqlClient.SqlConnection,Microsoft.Data.SqlClient.SqlTransaction,Microsoft.Data.SqlClient.SqlCommandColumnEncryptionSetting)", "", "Argument[0]", "sql-injection", "manual"] + - ["Microsoft.Data.SqlClient", "SqlDataAdapter", False, "SqlDataAdapter", "(Microsoft.Data.SqlClient.SqlCommand)", "", "Argument[0]", "sql-injection", "manual"] + - ["Microsoft.Data.SqlClient", "SqlDataAdapter", False, "SqlDataAdapter", "(System.String,Microsoft.Data.SqlClient.SqlConnection)", "", "Argument[0]", "sql-injection", "manual"] + - ["Microsoft.Data.SqlClient", "SqlDataAdapter", False, "SqlDataAdapter", "(System.String,System.String)", "", "Argument[0]", "sql-injection", "manual"] + - addsTo: + pack: codeql/csharp-all + extensible: summaryModel + data: + - ["Microsoft.Data.SqlClient", "SqlCommand", False, "SqlCommand", "(System.String)", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["Microsoft.Data.SqlClient", "SqlCommand", False, "SqlCommand", "(System.String,Microsoft.Data.SqlClient.SqlConnection)", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["Microsoft.Data.SqlClient", "SqlCommand", False, "SqlCommand", "(System.String,Microsoft.Data.SqlClient.SqlConnection,Microsoft.Data.SqlClient.SqlTransaction)", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["Microsoft.Data.SqlClient", "SqlCommand", False, "SqlCommand", "(System.String,Microsoft.Data.SqlClient.SqlConnection,Microsoft.Data.SqlClient.SqlTransaction,Microsoft.Data.SqlClient.SqlCommandColumnEncryptionSetting)", "", "Argument[0]", "Argument[this]", "taint", "manual"] diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index b2c0106a2016..fc88c5575bc7 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.1.8 +version: 5.1.10-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/lib/semmle/code/csharp/Generics.qll b/csharp/ql/lib/semmle/code/csharp/Generics.qll index b5ef16c575e9..1a4b56124541 100644 --- a/csharp/ql/lib/semmle/code/csharp/Generics.qll +++ b/csharp/ql/lib/semmle/code/csharp/Generics.qll @@ -110,9 +110,12 @@ private string getTypeArgumentsToString(ConstructedGeneric cg) { strictconcat(Type t, int i | t = cg.getTypeArgument(i) | t.toStringWithTypes(), ", " order by i) } +language[monotonicAggregates] pragma[nomagic] private string getTypeArgumentName(ConstructedGeneric cg, int i) { - result = cg.getTypeArgument(i).getName() + // Normally, `cg.getTypeArgument(i)` will be unique, and in those cases the line below + // is simply the same as `result = cg.getTypeArgument(i).getName()`. + result = strictconcat(Type t | t = cg.getTypeArgument(i) | t.getName(), "/") } /** Gets the concatenation of the `getName()` of type arguments. */ diff --git a/csharp/ql/lib/semmle/code/csharp/commons/QualifiedName.qll b/csharp/ql/lib/semmle/code/csharp/commons/QualifiedName.qll index 417dc137027f..2af02f3e85f2 100644 --- a/csharp/ql/lib/semmle/code/csharp/commons/QualifiedName.qll +++ b/csharp/ql/lib/semmle/code/csharp/commons/QualifiedName.qll @@ -48,9 +48,12 @@ module QualifiedName { ) } + language[monotonicAggregates] pragma[nomagic] private string getTypeArgumentsQualifiedName(ConstructedGeneric cg, int i) { - result = getFullName(cg.getTypeArgument(i)) + // Normally, `cg.getTypeArgument(i)` will be unique, and in those cases the line below + // is simply the same as `result = getFullName(cg.getTypeArgument(i))`. + result = strictconcat(Type t | t = cg.getTypeArgument(i) | getFullName(t), "/") } /** Gets the concatenation of the `getFullName` of type arguments. */ diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Bound.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Bound.qll index 08826b7ae8f1..65af6fb13a81 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Bound.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Bound.qll @@ -1,6 +1,8 @@ /** * Provides classes for representing abstract bounds for use in, for example, range analysis. */ +overlay[local?] +module; private import internal.rangeanalysis.BoundSpecific diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/ModulusAnalysis.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/ModulusAnalysis.qll index 3e5a45da247d..1451a605cdb0 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/ModulusAnalysis.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/ModulusAnalysis.qll @@ -3,6 +3,8 @@ * an expression, `b` is a `Bound` (typically zero or the value of an SSA * variable), and `v` is an integer in the range `[0 .. m-1]`. */ +overlay[local?] +module; private import internal.rangeanalysis.ModulusAnalysisSpecific::Private private import Bound diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index a990455f4307..7e8ed0aadc04 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/dataflow/internal/rangeanalysis/Sign.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/Sign.qll index 30cc089f30bb..a8b715648321 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/Sign.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/Sign.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + newtype TSign = TNeg() or TZero() or diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SignAnalysisCommon.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SignAnalysisCommon.qll index 6f0067517f90..8f8d884c9566 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SignAnalysisCommon.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SignAnalysisCommon.qll @@ -5,6 +5,8 @@ * The analysis is implemented as an abstract interpretation over the * three-valued domain `{negative, zero, positive}`. */ +overlay[local?] +module; private import SignAnalysisSpecific::Private private import SsaReadPositionCommon diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaReadPositionCommon.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaReadPositionCommon.qll index 08335f6680dd..1e3c4db95bed 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaReadPositionCommon.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaReadPositionCommon.qll @@ -1,6 +1,8 @@ /** * Provides classes for representing a position at which an SSA variable is read. */ +overlay[local?] +module; private import SsaReadPositionSpecific import SsaReadPositionSpecific::Public diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll index 75f72352deb6..77d749a03333 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll @@ -35,6 +35,7 @@ class IDbCommandConstructionSqlExpr extends SqlExpr, ObjectCreation { ic.getParameter(0).getType() instanceof StringType and not exists(Type t | t = ic.getDeclaringType() | // Known sealed classes: + t.hasFullyQualifiedName("Microsoft.Data.SqlClient", "SqlCommand") or t.hasFullyQualifiedName("System.Data.SqlClient", "SqlCommand") or t.hasFullyQualifiedName("System.Data.Odbc", "OdbcCommand") or t.hasFullyQualifiedName("System.Data.OleDb", "OleDbCommand") or 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 14d7497ec330..b5c036fa9f40 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/lib/semmle/code/csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll index 82bd0d30cab5..61c036f031b1 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll @@ -70,6 +70,8 @@ private module SymmetricKeyConfig implements DataFlow::ConfigSig { /** Holds if the node is a key sanitizer. */ predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof KeySanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll b/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll index 2e387cc2da67..37690c169c0b 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll @@ -82,6 +82,8 @@ module HardcodedSymmetricEncryptionKey { succ.asExpr() = mc ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CleartextStorageQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CleartextStorageQuery.qll index cbb10146a6a1..3e4642411f0c 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CleartextStorageQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CleartextStorageQuery.qll @@ -32,6 +32,8 @@ private module ClearTextStorageConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll index 8ec9122864fb..20d5bbe10cab 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll @@ -33,6 +33,8 @@ private module CodeInjectionConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll index 84352389c419..9528676af8e6 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll @@ -42,6 +42,8 @@ module CommandInjectionConfig implements DataFlow::ConfigSig { * `node` from the data flow graph. */ predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExposureOfPrivateInformationQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExposureOfPrivateInformationQuery.qll index 0726acb05ed9..85782fe49369 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExposureOfPrivateInformationQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExposureOfPrivateInformationQuery.qll @@ -32,6 +32,8 @@ private module ExposureOfPrivateInformationConfig implements DataFlow::ConfigSig predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll index e2e96034c41e..c2e25f0e522d 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll @@ -45,6 +45,8 @@ module LdapInjectionConfig implements DataFlow::ConfigSig { * `node` from the data flow graph. */ predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll index 422b5dc717a5..e06e728514de 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll @@ -35,6 +35,8 @@ private module LogForgingConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/MissingXMLValidationQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/MissingXMLValidationQuery.qll index 3401dab7ea24..3fcdc2b88ca7 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/MissingXMLValidationQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/MissingXMLValidationQuery.qll @@ -39,6 +39,8 @@ private module MissingXmlValidationConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(sink.(Sink).getReason()) } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll index 94dbf1d4cdcc..c3fdbc2dc3e9 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll @@ -33,6 +33,8 @@ private module ReDoSConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/RegexInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/RegexInjectionQuery.qll index 620c07a9ea21..5cd232588296 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/RegexInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/RegexInjectionQuery.qll @@ -33,6 +33,8 @@ private module RegexInjectionConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll index 40814729e559..e1542986411f 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll @@ -32,6 +32,8 @@ private module ResourceInjectionConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll index cc7b61c31f21..510b03811432 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll @@ -43,6 +43,8 @@ module SqlInjectionConfig implements DataFlow::ConfigSig { * `node` from the data flow graph. */ predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll index 241a147135bc..44b6b8a08bf9 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll @@ -108,11 +108,13 @@ private module TaintedPathConfig implements DataFlow::StateConfigSig { s2 = Normalized() } - predicate isBarrier(DataFlow::Node node, FlowState state) { node.(Sanitizer).isBarrier(state) } - predicate isBarrierOut(DataFlow::Node node, FlowState state) { isAdditionalFlowStep(_, state, node, _) } + + predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll index 0838fe7be4b6..b095305742dd 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll @@ -37,6 +37,8 @@ private module UrlRedirectConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XPathInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XPathInjectionQuery.qll index 140870c70fae..5cf934ef43e7 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XPathInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XPathInjectionQuery.qll @@ -43,6 +43,8 @@ module XpathInjectionConfig implements DataFlow::ConfigSig { * `node` from the data flow graph. */ predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll index a4ff6a7b7e6a..fea4a1a46e8b 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll @@ -457,6 +457,8 @@ private module ZipSlipConfig implements DataFlow::ConfigSig { // If the sink is a method call, and the source is an argument to that method call exists(MethodCall mc | succ.asExpr() = mc and pred.asExpr() = mc.getAnArgument()) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/src/API Abuse/CallToGCCollect.ql b/csharp/ql/src/API Abuse/CallToGCCollect.ql index 1757336d32af..b6b892e085e0 100644 --- a/csharp/ql/src/API Abuse/CallToGCCollect.ql +++ b/csharp/ql/src/API Abuse/CallToGCCollect.ql @@ -5,9 +5,9 @@ * @problem.severity warning * @precision very-high * @id cs/call-to-gc - * @tags efficiency - * maintainability - * quality + * @tags quality + * reliability + * performance */ import csharp diff --git a/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql b/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql index 8ec7119107e7..4b70b779567e 100644 --- a/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql +++ b/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision very-high * @id cs/call-to-obsolete-method - * @tags changeability + * @tags quality * maintainability + * changeability * external/cwe/cwe-477 */ diff --git a/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql b/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql index 71f19b639dc4..43caeecbcd28 100644 --- a/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql +++ b/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql @@ -6,7 +6,7 @@ * @problem.severity recommendation * @precision very-high * @id cs/class-implements-icloneable - * @tags reliability + * @tags quality * maintainability */ diff --git a/csharp/ql/src/API Abuse/FormatInvalid.ql b/csharp/ql/src/API Abuse/FormatInvalid.ql index 2bcd15612eea..d213cce805fc 100644 --- a/csharp/ql/src/API Abuse/FormatInvalid.ql +++ b/csharp/ql/src/API Abuse/FormatInvalid.ql @@ -6,9 +6,9 @@ * @problem.severity error * @precision high * @id cs/invalid-string-formatting - * @tags reliability - * maintainability - * quality + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql b/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql index f02b0d49b542..3fc8e07f6afe 100644 --- a/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql +++ b/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql @@ -6,9 +6,10 @@ * @problem.severity warning * @precision high * @id cs/local-not-disposed - * @tags efficiency - * maintainability - * quality + * @tags quality + * reliability + * correctness + * efficiency * external/cwe/cwe-404 * external/cwe/cwe-459 * external/cwe/cwe-460 diff --git a/csharp/ql/src/API Abuse/NullArgumentToEquals.ql b/csharp/ql/src/API Abuse/NullArgumentToEquals.ql index ec644f3f56c2..14347965eb7d 100644 --- a/csharp/ql/src/API Abuse/NullArgumentToEquals.ql +++ b/csharp/ql/src/API Abuse/NullArgumentToEquals.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision high * @id cs/null-argument-to-equals - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/csharp/ql/src/ASP/BlockCodeResponseWrite.ql b/csharp/ql/src/ASP/BlockCodeResponseWrite.ql index 369a4a5bb4e1..93f43342f0ee 100644 --- a/csharp/ql/src/ASP/BlockCodeResponseWrite.ql +++ b/csharp/ql/src/ASP/BlockCodeResponseWrite.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/asp/response-write - * @tags maintainability + * @tags quality + * maintainability + * readability * frameworks/asp.net */ diff --git a/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql b/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql index 3e9ae20c97c1..78f6ab5b57a3 100644 --- a/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql +++ b/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql @@ -7,6 +7,7 @@ * @precision high * @id cs/coupled-types * @tags maintainability + * complexity * modularity */ diff --git a/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql b/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql index 035e22c7d3e8..4ff3dfffcf00 100644 --- a/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql +++ b/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/call-to-unmanaged-code - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql b/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql index a78d6b99c1cf..39dba529b17d 100644 --- a/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql +++ b/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql @@ -5,8 +5,10 @@ * @problem.severity warning * @precision very-high * @id cs/catch-nullreferenceexception - * @tags reliability + * @tags quality + * reliability * correctness + * error-handling * external/cwe/cwe-395 */ diff --git a/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql b/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql index 7bfdea1e9064..5ec702f77e04 100644 --- a/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql +++ b/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql @@ -7,9 +7,9 @@ * @problem.severity warning * @precision very-high * @id cs/constant-condition - * @tags maintainability + * @tags quality + * maintainability * readability - * quality * external/cwe/cwe-835 */ diff --git a/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql b/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql index 766fb6d890a6..cd1401a2c782 100644 --- a/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql +++ b/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql @@ -6,7 +6,8 @@ * @problem.severity recommendation * @precision high * @id cs/local-shadows-member - * @tags maintainability + * @tags quality + * maintainability * readability */ diff --git a/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql b/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql index 048aad579785..05ebd97484c5 100644 --- a/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql +++ b/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql @@ -6,8 +6,9 @@ * @problem.severity recommendation * @precision very-high * @id cs/too-many-ref-parameters - * @tags testability + * @tags maintainability * readability + * testability */ import csharp diff --git a/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql b/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql index 144d53dc61f4..7f2996566e36 100644 --- a/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql +++ b/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision very-high * @id cs/empty-catch-block - * @tags reliability - * readability + * @tags quality + * reliability + * error-handling * exceptions * external/cwe/cwe-390 * external/cwe/cwe-391 diff --git a/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql b/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql index 3aec796daf78..8c86e2a41872 100644 --- a/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql +++ b/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/expose-implementation - * @tags reliability + * @tags quality + * reliability + * correctness * external/cwe/cwe-485 */ diff --git a/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql b/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql index 3515e710d82a..2fe61148ed20 100644 --- a/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql +++ b/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql @@ -7,7 +7,8 @@ * @problem.severity warning * @precision high * @id cs/field-masks-base-field - * @tags reliability + * @tags quality + * maintainability * readability * naming */ diff --git a/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql b/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql index 83c795a3985f..d292fd93422b 100644 --- a/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql +++ b/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision high * @id cs/class-name-matches-base-class - * @tags maintainability + * @tags quality + * maintainability * readability * naming */ diff --git a/csharp/ql/src/Bad Practices/PathCombine.ql b/csharp/ql/src/Bad Practices/PathCombine.ql index aa841486bdff..24d358e83aa5 100644 --- a/csharp/ql/src/Bad Practices/PathCombine.ql +++ b/csharp/ql/src/Bad Practices/PathCombine.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision very-high * @id cs/path-combine - * @tags reliability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql b/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql index 6a59fa1d1fae..4103e29b0141 100644 --- a/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql +++ b/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/unmanaged-code - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 4eabf64f6a57..da76eab521c1 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,14 @@ +## 1.3.0 + +### Query Metadata Changes + +* Query metadata tags have been systematically updated for many C# queries. Primary categorization as either `reliability` or `maintainability`, and relevant sub-category tags such as `readability`, `useless-code`, `complexity`, `performance`, `correctness`, `error-handling`, and `concurrency`. Aligns with the established [Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags). +* 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. + +### Minor Analysis Improvements + +* 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. + ## 1.2.2 No user-facing changes. diff --git a/csharp/ql/src/CSI/CompareIdenticalValues.ql b/csharp/ql/src/CSI/CompareIdenticalValues.ql index 55f48d5f9a9e..503067a8a3eb 100644 --- a/csharp/ql/src/CSI/CompareIdenticalValues.ql +++ b/csharp/ql/src/CSI/CompareIdenticalValues.ql @@ -7,7 +7,9 @@ * @problem.severity warning * @precision high * @id cs/comparison-of-identical-expressions - * @tags reliability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/CSI/NullAlways.ql b/csharp/ql/src/CSI/NullAlways.ql index e52abdc3cd5a..f8b7791ab895 100644 --- a/csharp/ql/src/CSI/NullAlways.ql +++ b/csharp/ql/src/CSI/NullAlways.ql @@ -5,7 +5,8 @@ * @problem.severity error * @precision very-high * @id cs/dereferenced-value-is-always-null - * @tags reliability + * @tags quality + * reliability * correctness * exceptions * external/cwe/cwe-476 diff --git a/csharp/ql/src/CSI/NullMaybe.ql b/csharp/ql/src/CSI/NullMaybe.ql index bb886f199290..67873ebb291e 100644 --- a/csharp/ql/src/CSI/NullMaybe.ql +++ b/csharp/ql/src/CSI/NullMaybe.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision high * @id cs/dereferenced-value-may-be-null - * @tags reliability + * @tags quality + * reliability * correctness * exceptions * external/cwe/cwe-476 diff --git a/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql b/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql index e725b6e1a944..783ab64a3754 100644 --- a/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql +++ b/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql @@ -8,8 +8,8 @@ * @precision high * @id cs/complex-block * @tags maintainability - * testability * complexity + * testability */ import csharp diff --git a/csharp/ql/src/Complexity/ComplexCondition.ql b/csharp/ql/src/Complexity/ComplexCondition.ql index 2813db1cda5f..0afb27e2a945 100644 --- a/csharp/ql/src/Complexity/ComplexCondition.ql +++ b/csharp/ql/src/Complexity/ComplexCondition.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/complex-condition - * @tags testability + * @tags maintainability * readability + * testability */ import csharp diff --git a/csharp/ql/src/Concurrency/FutileSyncOnField.ql b/csharp/ql/src/Concurrency/FutileSyncOnField.ql index 01beb9c90408..c2b59cc5e227 100644 --- a/csharp/ql/src/Concurrency/FutileSyncOnField.ql +++ b/csharp/ql/src/Concurrency/FutileSyncOnField.ql @@ -6,9 +6,10 @@ * @problem.severity error * @precision high * @id cs/unsafe-sync-on-field - * @tags reliability - * correctness + * @tags quality + * reliability * concurrency + * correctness * external/cwe/cwe-662 * external/cwe/cwe-366 */ diff --git a/csharp/ql/src/Concurrency/LockOrder.ql b/csharp/ql/src/Concurrency/LockOrder.ql index 923f4bba2ce5..2803a15afd85 100644 --- a/csharp/ql/src/Concurrency/LockOrder.ql +++ b/csharp/ql/src/Concurrency/LockOrder.ql @@ -5,9 +5,10 @@ * @problem.severity error * @precision high * @id cs/inconsistent-lock-sequence - * @tags reliability - * correctness + * @tags quality + * reliability * concurrency + * correctness * external/cwe/cwe-662 */ diff --git a/csharp/ql/src/Concurrency/LockThis.ql b/csharp/ql/src/Concurrency/LockThis.ql index 59d08337d300..81fd2045d367 100644 --- a/csharp/ql/src/Concurrency/LockThis.ql +++ b/csharp/ql/src/Concurrency/LockThis.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision high * @id cs/lock-this - * @tags reliability - * maintainability + * @tags quality + * reliability + * concurrency * modularity * external/cwe/cwe-662 */ diff --git a/csharp/ql/src/Concurrency/LockedWait.ql b/csharp/ql/src/Concurrency/LockedWait.ql index b59736fc72ba..dbba723ab095 100644 --- a/csharp/ql/src/Concurrency/LockedWait.ql +++ b/csharp/ql/src/Concurrency/LockedWait.ql @@ -5,9 +5,10 @@ * @problem.severity warning * @precision high * @id cs/locked-wait - * @tags reliability - * correctness + * @tags quality + * reliability * concurrency + * correctness * external/cwe/cwe-662 * external/cwe/cwe-833 */ diff --git a/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql b/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql index 5be820ee74c0..0f6e6d11fb2c 100644 --- a/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql +++ b/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity warning * @id cs/useless-assignment-to-local - * @tags maintainability - * quality + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-563 * @precision very-high */ diff --git a/csharp/ql/src/Documentation/XmldocMissingSummary.ql b/csharp/ql/src/Documentation/XmldocMissingSummary.ql index 312848b6bdf1..43b76d38017a 100644 --- a/csharp/ql/src/Documentation/XmldocMissingSummary.ql +++ b/csharp/ql/src/Documentation/XmldocMissingSummary.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/xmldoc/missing-summary - * @tags maintainability + * @tags quality + * maintainability + * readability */ import Documentation diff --git a/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql b/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql index 0842845ed271..d394e1c08a40 100644 --- a/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql +++ b/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/cast-of-this-to-type-parameter - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * language-features */ diff --git a/csharp/ql/src/Language Abuse/CatchOfGenericException.ql b/csharp/ql/src/Language Abuse/CatchOfGenericException.ql index c0a4b0196410..e31a63372953 100644 --- a/csharp/ql/src/Language Abuse/CatchOfGenericException.ql +++ b/csharp/ql/src/Language Abuse/CatchOfGenericException.ql @@ -6,8 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/catch-of-all-exceptions - * @tags reliability - * maintainability + * @tags quality + * reliability + * error-handling * external/cwe/cwe-396 */ diff --git a/csharp/ql/src/Language Abuse/ChainedIs.ql b/csharp/ql/src/Language Abuse/ChainedIs.ql index c10e5dc67323..ec66e150baef 100644 --- a/csharp/ql/src/Language Abuse/ChainedIs.ql +++ b/csharp/ql/src/Language Abuse/ChainedIs.ql @@ -6,8 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/chained-type-tests - * @tags changeability - * maintainability + * @tags reliability + * performance + * changeability * language-features */ diff --git a/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql b/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql index 4082a2b3ce8d..9439956f4c11 100644 --- a/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql +++ b/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql @@ -5,8 +5,10 @@ * @problem.severity warning * @precision high * @id cs/downcast-of-this - * @tags testability - * maintainability + * @tags quality + * reliability + * correctness + * testability * language-features */ diff --git a/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql b/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql index fe5cd65266ab..da61754f46e4 100644 --- a/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql +++ b/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql @@ -5,8 +5,10 @@ * @problem.severity warning * @precision high * @id cs/type-test-of-this - * @tags testability - * maintainability + * @tags quality + * reliability + * correctness + * testability * language-features */ diff --git a/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql b/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql index 78cce5126dfc..20016a17f2e4 100644 --- a/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql +++ b/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql @@ -6,9 +6,10 @@ * @problem.severity recommendation * @precision high * @id cs/missed-readonly-modifier - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features - * quality */ import csharp diff --git a/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql b/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql index b8da7e43cc5b..bd7492b8583e 100644 --- a/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql +++ b/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/missed-ternary-operator - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql b/csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql index 1e3534dee696..f3d5414060b9 100644 --- a/csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql +++ b/csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/missed-using-statement - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Language Abuse/NestedIf.ql b/csharp/ql/src/Language Abuse/NestedIf.ql index 4532fbbebeed..2541d4b7d738 100644 --- a/csharp/ql/src/Language Abuse/NestedIf.ql +++ b/csharp/ql/src/Language Abuse/NestedIf.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/nested-if-statements - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Language Abuse/RethrowException.ql b/csharp/ql/src/Language Abuse/RethrowException.ql index bd3e29029075..ff5f40d3bd0d 100644 --- a/csharp/ql/src/Language Abuse/RethrowException.ql +++ b/csharp/ql/src/Language Abuse/RethrowException.ql @@ -6,9 +6,10 @@ * @problem.severity warning * @precision very-high * @id cs/rethrown-exception-variable - * @tags maintainability + * @tags quality + * reliability + * error-handling * language-features - * exceptions */ import csharp diff --git a/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql b/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql index a8ce9c420655..8fea284ae317 100644 --- a/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql +++ b/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity recommendation * @precision high - * @tags readability + * @tags quality * maintainability + * readability */ import csharp diff --git a/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql b/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql index d1c2e9566fd3..4ae23430597e 100644 --- a/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql +++ b/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision high * @id cs/unused-property-value - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * language-features */ diff --git a/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql b/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql index 754ed8ad773e..230abf77a3f6 100644 --- a/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql +++ b/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql @@ -6,11 +6,10 @@ * @problem.severity error * @precision high * @id cs/index-out-of-bounds - * @tags reliability + * @tags quality + * reliability * correctness - * logic - * quality - * external/cwe/cwe-193 + * external/cwe/cwe-193 */ import csharp diff --git a/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql b/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql index 90f5b981e24b..44ead3cfd97a 100644 --- a/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql +++ b/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql @@ -5,10 +5,9 @@ * @problem.severity warning * @precision very-high * @id cs/test-for-negative-container-size - * @tags reliability + * @tags quality + * reliability * correctness - * logic - * quality */ import csharp diff --git a/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql b/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql index 15dbf92bc9f2..f429a52982bf 100644 --- a/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql +++ b/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql @@ -5,9 +5,9 @@ * @problem.severity error * @precision high * @id cs/empty-collection - * @tags reliability - * maintainability - * useless-code + * @tags quality + * reliability + * correctness * external/cwe/cwe-561 */ diff --git a/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql b/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql index 1a36fc733e5f..5a24a1f5f519 100644 --- a/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +++ b/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql @@ -5,7 +5,8 @@ * @problem.severity error * @precision high * @id cs/unused-collection - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/csharp/ql/src/Likely Bugs/ConstantComparison.ql b/csharp/ql/src/Likely Bugs/ConstantComparison.ql index 790cb53e80b7..983523482142 100644 --- a/csharp/ql/src/Likely Bugs/ConstantComparison.ql +++ b/csharp/ql/src/Likely Bugs/ConstantComparison.ql @@ -5,7 +5,9 @@ * @problem.severity warning * @precision high * @id cs/constant-comparison - * @tags correctness + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql b/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql index f3defa47a430..d40a28450fca 100644 --- a/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql +++ b/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql @@ -6,10 +6,9 @@ * @problem.severity error * @precision high * @id cs/non-short-circuit - * @tags reliability + * @tags quality + * reliability * correctness - * logic - * quality * external/cwe/cwe-480 * external/cwe/cwe-691 */ diff --git a/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql b/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql index 108e6f45f94f..ba7710a87931 100644 --- a/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql +++ b/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql @@ -7,9 +7,9 @@ * @problem.severity warning * @precision high * @id cs/equality-on-floats - * @tags reliability + * @tags quality + * reliability * correctness - * quality */ import csharp diff --git a/csharp/ql/src/Likely Bugs/EqualsArray.ql b/csharp/ql/src/Likely Bugs/EqualsArray.ql index 78d86d61364f..36978278e04d 100644 --- a/csharp/ql/src/Likely Bugs/EqualsArray.ql +++ b/csharp/ql/src/Likely Bugs/EqualsArray.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision high * @id cs/equals-on-arrays - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/csharp/ql/src/Likely Bugs/HashedButNoHash.ql b/csharp/ql/src/Likely Bugs/HashedButNoHash.ql index 9948def013c9..575605a5c54c 100644 --- a/csharp/ql/src/Likely Bugs/HashedButNoHash.ql +++ b/csharp/ql/src/Likely Bugs/HashedButNoHash.ql @@ -5,8 +5,9 @@ * @problem.severity warning * @precision high * @id cs/gethashcode-is-not-defined - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql b/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql index a3a9f66f3f7f..60719f7587b6 100644 --- a/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql +++ b/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql @@ -5,9 +5,9 @@ * @problem.severity error * @precision high * @id cs/impossible-array-cast - * @tags reliability + * @tags quality + * reliability * correctness - * logic */ import csharp diff --git a/csharp/ql/src/Likely Bugs/IncomparableEquals.ql b/csharp/ql/src/Likely Bugs/IncomparableEquals.ql index 9c1aac0cef93..f5bb977f7404 100644 --- a/csharp/ql/src/Likely Bugs/IncomparableEquals.ql +++ b/csharp/ql/src/Likely Bugs/IncomparableEquals.ql @@ -5,7 +5,8 @@ * @problem.severity error * @precision high * @id cs/equals-on-unrelated-types - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql b/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql index c98f2bef8a2b..8da3a910b0da 100644 --- a/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql +++ b/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql @@ -26,6 +26,8 @@ module UnsafeYearCreationFromArithmeticConfig implements DataFlow::ConfigSig { oc.getObjectType().getABaseType*().hasFullyQualifiedName("System", "DateTime") ) } + + predicate observeDiffInformedIncrementalMode() { any() } } module UnsafeYearCreationFromArithmetic = diff --git a/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql b/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql index 848246a0b462..0831eb561997 100644 --- a/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql +++ b/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision high * @id cs/nested-loops-with-same-variable - * @tags maintainability + * @tags quality + * reliability * correctness - * logic */ import csharp diff --git a/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql b/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql index 1f97debc4ef1..c66bbbeedbdd 100644 --- a/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql +++ b/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision high * @id cs/loss-of-precision - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-190 * external/cwe/cwe-192 diff --git a/csharp/ql/src/Likely Bugs/RecursiveEquals.ql b/csharp/ql/src/Likely Bugs/RecursiveEquals.ql index c82c36aa50ee..b1ce4a73354f 100644 --- a/csharp/ql/src/Likely Bugs/RecursiveEquals.ql +++ b/csharp/ql/src/Likely Bugs/RecursiveEquals.ql @@ -6,8 +6,9 @@ * @problem.severity error * @precision high * @id cs/recursive-equals-call - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql b/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql index de29f6109ad3..a73aaf443d8d 100644 --- a/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql +++ b/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql @@ -5,9 +5,9 @@ * @problem.severity error * @precision high * @id cs/reference-equality-on-valuetypes - * @tags reliability + * @tags quality + * reliability * correctness - * quality * external/cwe/cwe-595 */ diff --git a/csharp/ql/src/Likely Bugs/SelfAssignment.ql b/csharp/ql/src/Likely Bugs/SelfAssignment.ql index e010d18292cd..f01a1378242e 100644 --- a/csharp/ql/src/Likely Bugs/SelfAssignment.ql +++ b/csharp/ql/src/Likely Bugs/SelfAssignment.ql @@ -5,10 +5,9 @@ * @problem.severity error * @precision high * @id cs/self-assignment - * @tags reliability + * @tags quality + * reliability * correctness - * logic - * quality */ import csharp diff --git a/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql b/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql index 5929e7e8f918..92664ce8792e 100644 --- a/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql +++ b/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision high * @id cs/empty-block - * @tags reliability - * readability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql b/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql index 4f2b37518765..ddcc7ef01950 100644 --- a/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql +++ b/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql @@ -6,9 +6,10 @@ * @problem.severity warning * @precision high * @id cs/empty-lock-statement - * @tags changeability - * readability + * @tags quality + * reliability * concurrency + * changeability * language-features * external/cwe/cwe-585 */ diff --git a/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql b/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql index 4acea4a35b3a..4dd78a81aab1 100644 --- a/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql +++ b/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql @@ -7,7 +7,7 @@ * @problem.severity recommendation * @precision high * @id cs/static-field-written-by-instance - * @tags reliability + * @tags quality * maintainability * modularity */ diff --git a/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql b/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql index f2d0a61efe26..2e96cdb4b365 100644 --- a/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql +++ b/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql @@ -6,7 +6,9 @@ * @problem.severity error * @precision high * @id cs/stringbuilder-initialized-with-character - * @tags maintainability + * @tags quality + * reliability + * correctness */ import semmle.code.csharp.frameworks.system.Text diff --git a/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql b/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql index d1e2dbdf0563..5c11a77f30df 100644 --- a/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql +++ b/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql @@ -5,9 +5,9 @@ * @problem.severity warning * @precision high * @id cs/unchecked-cast-in-equals - * @tags reliability - * maintainability - * quality + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Linq/MissedAllOpportunity.ql b/csharp/ql/src/Linq/MissedAllOpportunity.ql index 54fe40faeec1..1c03372d23b6 100644 --- a/csharp/ql/src/Linq/MissedAllOpportunity.ql +++ b/csharp/ql/src/Linq/MissedAllOpportunity.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/linq/missed-all - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Linq/MissedCastOpportunity.ql b/csharp/ql/src/Linq/MissedCastOpportunity.ql index 8d3de1f31b47..d40009e24c89 100644 --- a/csharp/ql/src/Linq/MissedCastOpportunity.ql +++ b/csharp/ql/src/Linq/MissedCastOpportunity.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/linq/missed-cast - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql b/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql index 3d61acfa523d..a4c8dff4b538 100644 --- a/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql +++ b/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/linq/missed-oftype - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Linq/MissedSelectOpportunity.ql b/csharp/ql/src/Linq/MissedSelectOpportunity.ql index 9f36c3de82bb..8ea2a1c11d73 100644 --- a/csharp/ql/src/Linq/MissedSelectOpportunity.ql +++ b/csharp/ql/src/Linq/MissedSelectOpportunity.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/linq/missed-select - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Linq/MissedWhereOpportunity.ql b/csharp/ql/src/Linq/MissedWhereOpportunity.ql index 401248d61761..62b34b93305a 100644 --- a/csharp/ql/src/Linq/MissedWhereOpportunity.ql +++ b/csharp/ql/src/Linq/MissedWhereOpportunity.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/linq/missed-where - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Linq/RedundantSelect.ql b/csharp/ql/src/Linq/RedundantSelect.ql index 5dea1ababfd3..73b1c92d247a 100644 --- a/csharp/ql/src/Linq/RedundantSelect.ql +++ b/csharp/ql/src/Linq/RedundantSelect.ql @@ -5,7 +5,9 @@ * @problem.severity warning * @precision very-high * @id cs/linq/useless-select - * @tags maintainability + * @tags quality + * maintainability + * useless-code * language-features * external/cwe/cwe-561 */ diff --git a/csharp/ql/src/Performance/StringBuilderInLoop.ql b/csharp/ql/src/Performance/StringBuilderInLoop.ql index 8becb0c7eb26..f1f23ebf5e0d 100644 --- a/csharp/ql/src/Performance/StringBuilderInLoop.ql +++ b/csharp/ql/src/Performance/StringBuilderInLoop.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision very-high * @id cs/stringbuilder-creation-in-loop - * @tags efficiency + * @tags quality + * reliability + * performance */ import csharp diff --git a/csharp/ql/src/Performance/StringConcatenationInLoop.ql b/csharp/ql/src/Performance/StringConcatenationInLoop.ql index aba7d3b74368..a015771610d5 100644 --- a/csharp/ql/src/Performance/StringConcatenationInLoop.ql +++ b/csharp/ql/src/Performance/StringConcatenationInLoop.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision very-high * @id cs/string-concatenation-in-loop - * @tags efficiency - * maintainability + * @tags quality + * reliability + * performance */ import csharp diff --git a/csharp/ql/src/Performance/UseTryGetValue.ql b/csharp/ql/src/Performance/UseTryGetValue.ql index c33c0d1e8d7c..3eb97931f304 100644 --- a/csharp/ql/src/Performance/UseTryGetValue.ql +++ b/csharp/ql/src/Performance/UseTryGetValue.ql @@ -6,9 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/inefficient-containskey - * @tags maintainability - * efficiency - * quality + * @tags quality + * reliability + * performance */ import csharp diff --git a/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql b/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql index 16eca675e6a1..2276b660f9f7 100644 --- a/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql +++ b/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql @@ -45,6 +45,8 @@ module XmlInjectionConfig implements DataFlow::ConfigSig { mc = node.asExpr() ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql b/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql index 118591f3f9ef..9cd6fc68b4ce 100644 --- a/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql +++ b/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql @@ -41,6 +41,8 @@ module AssemblyPathInjectionConfig implements DataFlow::ConfigSig { name = "UnsafeLoadFrom" and arg = 0 ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql b/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql index b99839226c59..cccb6a4ace66 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 @@ -22,6 +22,8 @@ module FormatStringConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink.asExpr() = any(FormatStringParseCall call).getFormatExpr() } + + predicate observeDiffInformedIncrementalMode() { any() } } module FormatString = TaintTracking::Global; diff --git a/csharp/ql/src/Security Features/CWE-201/ExposureInTransmittedData.ql b/csharp/ql/src/Security Features/CWE-201/ExposureInTransmittedData.ql index 0d71a08fe97e..a29919fc09dc 100644 --- a/csharp/ql/src/Security Features/CWE-201/ExposureInTransmittedData.ql +++ b/csharp/ql/src/Security Features/CWE-201/ExposureInTransmittedData.ql @@ -41,6 +41,8 @@ module ExposureInTransmittedDataConfig implements DataFlow::ConfigSig { } predicate isSink(DataFlow::Node sink) { sink instanceof RemoteFlowSink } + + predicate observeDiffInformedIncrementalMode() { any() } } module ExposureInTransmittedData = TaintTracking::Global; diff --git a/csharp/ql/src/Security Features/CWE-209/ExceptionInformationExposure.ql b/csharp/ql/src/Security Features/CWE-209/ExceptionInformationExposure.ql index 114bdf7ccea4..7ec34b7c3cce 100644 --- a/csharp/ql/src/Security Features/CWE-209/ExceptionInformationExposure.ql +++ b/csharp/ql/src/Security Features/CWE-209/ExceptionInformationExposure.ql @@ -59,6 +59,8 @@ module ExceptionInformationExposureConfig implements DataFlow::ConfigSig { // Do not flow through Message sanitizer.asExpr().getType().(RefType).getABaseType*() instanceof SystemExceptionClass } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql b/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql index 15da9c2d8243..d2d226716777 100644 --- a/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql +++ b/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql @@ -37,6 +37,10 @@ module AddCertToRootStoreConfig implements DataFlow::ConfigSig { sink.asExpr() = mc.getQualifier() ) } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module AddCertToRootStore = DataFlow::Global; diff --git a/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql b/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql index e5fc7e720925..710228ffc0ef 100644 --- a/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql +++ b/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql @@ -63,6 +63,7 @@ module InsecureSqlConnectionConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof Source } predicate isSink(DataFlow::Node sink) { sink instanceof Sink } + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/src/Security Features/InsecureRandomness.ql b/csharp/ql/src/Security Features/InsecureRandomness.ql index 504756e1db50..2c2df7010c67 100644 --- a/csharp/ql/src/Security Features/InsecureRandomness.ql +++ b/csharp/ql/src/Security Features/InsecureRandomness.ql @@ -49,6 +49,8 @@ module Random { // succ = array_or_indexer[pred] - use of random numbers in an index succ.asExpr().(ElementAccess).getAnIndex() = pred.asExpr() } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/src/Useless code/DefaultToString.ql b/csharp/ql/src/Useless code/DefaultToString.ql index ea33fe7874b6..c0039fc90520 100644 --- a/csharp/ql/src/Useless code/DefaultToString.ql +++ b/csharp/ql/src/Useless code/DefaultToString.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision very-high * @id cs/call-to-object-tostring - * @tags reliability - * maintainability - * quality + * @tags quality + * reliability + * correctness */ import DefaultToStringQuery diff --git a/csharp/ql/src/Useless code/FutileConditional.ql b/csharp/ql/src/Useless code/FutileConditional.ql index d77fd55a434a..c1ef924bfdd3 100644 --- a/csharp/ql/src/Useless code/FutileConditional.ql +++ b/csharp/ql/src/Useless code/FutileConditional.ql @@ -5,8 +5,10 @@ * @problem.severity warning * @precision very-high * @id cs/useless-if-statement - * @tags reliability + * @tags quality + * maintainability * readability + * useless-code */ import csharp diff --git a/csharp/ql/src/Useless code/IntGetHashCode.ql b/csharp/ql/src/Useless code/IntGetHashCode.ql index 847443d018e6..94849639f3dd 100644 --- a/csharp/ql/src/Useless code/IntGetHashCode.ql +++ b/csharp/ql/src/Useless code/IntGetHashCode.ql @@ -6,9 +6,10 @@ * @problem.severity recommendation * @precision high * @id cs/useless-gethashcode-call - * @tags readability + * @tags quality + * maintainability + * readability * useless-code - * quality */ import csharp diff --git a/csharp/ql/src/Useless code/RedundantToStringCall.ql b/csharp/ql/src/Useless code/RedundantToStringCall.ql index f0507f9d8a43..55e7056e9a08 100644 --- a/csharp/ql/src/Useless code/RedundantToStringCall.ql +++ b/csharp/ql/src/Useless code/RedundantToStringCall.ql @@ -6,7 +6,8 @@ * @problem.severity recommendation * @precision high * @id cs/useless-tostring-call - * @tags maintainability + * @tags quality + * maintainability * useless-code */ diff --git a/csharp/ql/src/Useless code/UnusedLabel.ql b/csharp/ql/src/Useless code/UnusedLabel.ql index 53ba4180f14e..cc625cbc5212 100644 --- a/csharp/ql/src/Useless code/UnusedLabel.ql +++ b/csharp/ql/src/Useless code/UnusedLabel.ql @@ -5,7 +5,8 @@ * @problem.severity warning * @precision high * @id cs/unused-label - * @tags maintainability + * @tags quality + * maintainability * useless-code */ diff --git a/csharp/ql/src/change-notes/2025-06-25-sqlcommand-models.md b/csharp/ql/src/change-notes/2025-06-25-sqlcommand-models.md new file mode 100644 index 000000000000..8d800aa75801 --- /dev/null +++ b/csharp/ql/src/change-notes/2025-06-25-sqlcommand-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added explicit SQL injection Models as Data models for `Microsoft.Data.SqlClient.SqlCommand` and `Microsoft.Data.SqlClient.SqlDataAdapter`. This reduces false negatives for the query `cs/sql-injection`. diff --git a/csharp/ql/src/change-notes/released/1.3.0.md b/csharp/ql/src/change-notes/released/1.3.0.md new file mode 100644 index 000000000000..91cd3426944b --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.3.0.md @@ -0,0 +1,10 @@ +## 1.3.0 + +### Query Metadata Changes + +* Query metadata tags have been systematically updated for many C# queries. Primary categorization as either `reliability` or `maintainability`, and relevant sub-category tags such as `readability`, `useless-code`, `complexity`, `performance`, `correctness`, `error-handling`, and `concurrency`. Aligns with the established [Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags). +* 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. + +### Minor Analysis Improvements + +* 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/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 0a70a9a01a7e..ec16350ed6fd 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.2.2 +lastReleaseVersion: 1.3.0 diff --git a/csharp/ql/src/codeql-suites/csharp-code-quality-extended.qls b/csharp/ql/src/codeql-suites/csharp-code-quality-extended.qls new file mode 100644 index 000000000000..1ee85cae856c --- /dev/null +++ b/csharp/ql/src/codeql-suites/csharp-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers 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 5bb3a54f6eec..21d39db383d3 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,108 @@ - description: Security-and-quality queries for C# - queries: . -- apply: security-and-quality-selectors.yml +- apply: security-and-frozen-quality-selectors.yml from: codeql/suite-helpers +- 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 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 24cacd047ce0..b6307e4210a8 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.2.2 +version: 1.3.1-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 51bbc280e3c8..12f5d74d5a29 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 @@ public void Lock() 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 @@ public void Access() 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 @@ public void OutOrRef() 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 0236977aa393..86a99708a1f5 100644 --- a/csharp/ql/test/query-tests/Nullness/Assert.cs +++ b/csharp/ql/test/query-tests/Nullness/Assert.cs @@ -12,7 +12,7 @@ void Fn(bool b) 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 @@ void Fn(bool b) 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 @@ void Fn(bool b) 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 @@ void Fn(bool b) 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 76ebb6ffd8ee..946bacecefba 100644 --- a/csharp/ql/test/query-tests/Nullness/B.cs +++ b/csharp/ql/test/query-tests/Nullness/B.cs @@ -10,7 +10,7 @@ public void OperatorCall() 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 @@ public void OperatorCall() 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 805d9e2cae4f..405dceb74d5a 100644 --- a/csharp/ql/test/query-tests/Nullness/C.cs +++ b/csharp/ql/test/query-tests/Nullness/C.cs @@ -15,7 +15,7 @@ public void NotTest() if (!(o != null)) { - o.GetHashCode(); // BAD (always) + o.GetHashCode(); // $ Alert[cs/dereferenced-value-is-always-null] } } @@ -39,7 +39,7 @@ public void AssertTest() { 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 void AssertNullTest() { 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 void InstanceOf() 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 void DoWhile() 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 void DoWhile() 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 void While() 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 void If() } 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 void For() { 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 void Access() 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 40419b7f5775..ffc4fd193c77 100644 --- a/csharp/ql/test/query-tests/Nullness/D.cs +++ b/csharp/ql/test/query-tests/Nullness/D.cs @@ -14,22 +14,22 @@ public D(bool b, bool f) 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 void NullGuards() 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 void F(bool b) 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 void LengthGuard(int[] a, int[] b) { 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 void LengthGuard(int[] a, int[] b) 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 @@ private object MkMaybe() public void Exceptions() { - object obj = null; + object obj = null; // $ Source[cs/dereferenced-value-may-be-null] try { obj = MkMaybe(); @@ -168,7 +168,7 @@ public void Exceptions() 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 void ClearNotNull() { 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 void ClearNotNull() 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 void ClearNotNull() 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 void CorrelatedConditions(bool cond, int num) 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 void TrackingVariable(int[] a) } 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 void TrackingVariable(int[] a) } 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 void TrackingVariable(int[] a) } 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 void TrackingVariable(int[] a) 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 void TrackingVariable(int[] a) 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 void G(object obj) 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 @@ void Test(Exception e, bool b) 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 ec1fa1613923..f8264523b687 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 void Ex2(bool x, bool y) 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 void Ex4(IEnumerable list, int step) { 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 void Ex4(IEnumerable list, int step) 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 void Ex6(int[] vals, bool b1, bool b2) 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 void Ex8(int x, int lim) 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 void Ex8(int x, int lim) } else { - obj = null; + obj = null; // $ Source[cs/dereferenced-value-may-be-null] } continue; } @@ -149,33 +149,33 @@ public void Ex9(bool cond, object obj1) { 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 void Ex11(object obj, bool b1) } 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 void Ex23(bool b) { 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 void Ex24(bool b) 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 @@ static void Ex27(string s1, string s2) { 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 @@ static void Ex29(string s) 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 @@ static void Ex33(string s, object o) 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 @@ static int Ex36(object o) { 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 @@ int Ex40() { 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 @@ int Ex41() 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 @@ static void Ex45(string s) { 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 000000000000..b5d6b66b9496 --- /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 fc7b69da490f..122c5036567b 100644 --- a/csharp/ql/test/query-tests/Nullness/Forwarding.cs +++ b/csharp/ql/test/query-tests/Nullness/Forwarding.cs @@ -33,11 +33,11 @@ void Fn() 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 b5b74cf19cab..797955d95eb6 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 @@ void Fn(bool b) 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 dbb6ab23a9aa..ec660dd44a42 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 ec8a78e817b5..e2e594b2e2c1 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 16785ed3e7ad..9f937e609520 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 6f0d486f1c77..107a4f3381ef 100644 --- a/csharp/ql/test/query-tests/Nullness/NullAlwaysBad.cs +++ b/csharp/ql/test/query-tests/Nullness/NullAlwaysBad.cs @@ -6,7 +6,7 @@ class Bad { 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 631c2cd77660..876cde548b6a 100644 --- a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected +++ b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected @@ -1,457 +1,92 @@ -nodes -| A.cs:7:16:7:40 | SSA def(synchronizedAlways) | -| A.cs:8:15:8:32 | access to local variable 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:27:18:27:35 | SSA def(fieldAccess) | -| A.cs:28:16:28:34 | SSA def(methodAccess) | -| A.cs:29:16:29:32 | SSA def(methodCall) | -| A.cs:31:27:31:37 | access to local variable arrayAccess | -| A.cs:32:27:32:37 | access to local variable fieldAccess | -| A.cs:33:28:33:39 | access to local variable methodAccess | -| A.cs:34:27:34:36 | access to local variable methodCall | -| A.cs:36:27:36:37 | access to local variable arrayAccess | -| A.cs:37:27:37:37 | access to local variable fieldAccess | -| A.cs:38:15:38:26 | access to local variable methodAccess | -| 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:13:9:13:25 | [b (line 7): true] SSA def(s) | -| Assert.cs:15:27:15:27 | access to local variable 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:21:9:21:25 | [b (line 7): true] SSA def(s) | -| Assert.cs:23:27:23:27 | access to local variable 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:29:9:29:25 | [b (line 7): true] SSA def(s) | -| Assert.cs:31:27:31:27 | access to local variable 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:23:46:36 | [true, b (line 7): true] ... && ... | -| Assert.cs:46:36:46:36 | [b (line 7): true] access to parameter b | -| Assert.cs:47:27:47:27 | access to local variable s | -| Assert.cs:49:9:49:25 | [b (line 7): true] SSA def(s) | -| Assert.cs:50:24:50:38 | [false] ... \|\| ... | -| Assert.cs:50:37:50:38 | [false] !... | -| Assert.cs:50:38:50:38 | [b (line 7): true] access to parameter b | -| Assert.cs:51:27:51:27 | access to local variable s | -| B.cs:7:11:7:29 | SSA def(eqCallAlways) | -| B.cs:10:11:10:30 | SSA def(neqCallAlways) | -| B.cs:13:13:13:24 | access to local variable eqCallAlways | -| B.cs:13:13:13:36 | ...; | -| B.cs:15:9:16:26 | if (...) ... | -| B.cs:16:13:16:26 | ...; | -| B.cs:18:9:20:26 | if (...) ... | -| B.cs:18:25:18:27 | {...} | -| B.cs:20:13:20:26 | ...; | -| 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:13:11:30 | [false] !... | -| C.cs:11:15:11:29 | [true] !... | -| C.cs:11:17:11:28 | [false] !... | -| C.cs:16:9:19:9 | if (...) ... | -| 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:96:13:96:13 | access to local variable o | -| C.cs:102:13:102:23 | SSA def(list) | -| C.cs:103:9:107:9 | foreach (... ... in ...) ... | -| C.cs:103:22:103:22 | Int32 x | -| C.cs:103:27:103:30 | access to parameter list | -| C.cs:103:27:103:30 | access to parameter list | -| C.cs:106:13:106:16 | access to parameter list | -| 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:177:13:177:13 | access to local variable s | -| C.cs:178:13:178:20 | SSA def(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: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:210:13:210:35 | SSA def(s) | -| C.cs:214:13:214:20 | SSA def(s) | -| 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:229:33:229:40 | SSA def(s) | -| C.cs:233:9:233:9 | 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:35:235:42 | SSA def(s) | -| C.cs:237:13:237: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 | -| 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:258:18:258:26 | SSA def(sa) | -| C.cs:260:9:260:10 | access to local variable ia | -| C.cs:261:20:261:21 | access to local variable sa | -| C.cs:263:9:263:10 | access to local variable ia | -| 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: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:73:13:73:14 | access to local variable o7 | -| D.cs:75:13:75:34 | SSA def(o8) | -| D.cs:76:21:76:43 | ... ? ... : ... | -| D.cs:76:34:76:35 | 42 | -| D.cs:79:9:80:26 | if (...) ... | -| D.cs:81:9:82:26 | if (...) ... | -| D.cs:82:13:82:14 | access to local variable o8 | -| D.cs:82:13:82:26 | ...; | -| 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:91:13:91:22 | ...; | -| D.cs:93:9:94:30 | if (...) ... | -| D.cs:94:13:94:30 | ...; | -| D.cs:94:21:94:22 | access to local variable xs | -| D.cs:96:9:99:9 | if (...) ... | -| D.cs:97:9:99:9 | {...} | -| D.cs:98:21:98:22 | access to local variable xs | -| D.cs:101:9:102:35 | if (...) ... | -| D.cs:102:13:102:35 | foreach (... ... in ...) ... | -| D.cs:102:26:102:26 | Int32 _ | -| D.cs:102:31:102:32 | access to local variable xs | -| D.cs:102:31:102:32 | access to local variable xs | -| D.cs:104:9:106:30 | if (...) ... | -| D.cs:105:19:105:20 | access to local variable xs | -| 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:125:35:125:35 | SSA param(a) | -| D.cs:125:44:125:44 | SSA param(b) | -| D.cs:127:20:127:43 | ... ? ... : ... | -| D.cs:127:20:127:43 | ... ? ... : ... | -| D.cs:127:32:127:32 | 0 | -| D.cs:127:32:127:32 | 0 | -| D.cs:127:36:127:36 | access to parameter a | -| D.cs:128:20:128:43 | ... ? ... : ... | -| D.cs:128:20:128:43 | ... ? ... : ... | -| D.cs:128:32:128:32 | 0 | -| D.cs:128:32:128:32 | 0 | -| D.cs:128:36:128:36 | access to parameter b | -| D.cs:131:9:137:9 | {...} | -| 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:133:13:136:13 | {...} | -| D.cs:134:24:134:24 | access to parameter a | -| D.cs:135:24:135:24 | access to parameter b | -| D.cs:138:9:138:18 | ... ...; | -| D.cs:142:13:142:22 | ...; | -| D.cs:143:9:146:9 | for (...;...;...) ... | -| D.cs:143:25:143:25 | access to local variable i | -| D.cs:144:9:146:9 | {...} | -| D.cs:145:20:145:20 | access to parameter a | -| 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: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:21:241:37 | ... ? ... : ... | -| D.cs:241:29:241:32 | null | -| D.cs:241:36:241:37 | "" | -| D.cs:244:9:247:25 | if (...) ... | -| D.cs:245:13:245:13 | access to local variable o | -| 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: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:39:272:39 | access to local variable i | -| D.cs:273:9:288:9 | {...} | -| D.cs:281:13:287:13 | if (...) ... | -| D.cs:283:17:283:24 | SSA def(o) | -| D.cs:285:28:285:30 | {...} | -| D.cs:286:17:286:30 | ...; | -| D.cs:290:9:291:25 | if (...) ... | -| D.cs:291:13:291:13 | access to local variable o | -| D.cs:291:13:291:25 | ...; | -| 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: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:312:13:313:29 | if (...) ... | -| 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:62 | [false] ... && ... | -| D.cs:318:41:318:44 | access to local variable stat | -| D.cs:324:9:324:9 | access to local variable r | -| D.cs:351:15:351:22 | SSA def(a) | -| D.cs:355:9:356:21 | for (...;...;...) ... | -| D.cs:355:25:355:25 | access to local variable i | -| D.cs:356:13:356:13 | access to local variable a | -| D.cs:356:13:356:21 | ...; | -| D.cs:360:20:360:30 | SSA def(last) | -| 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:370:9:373:9 | for (...;...;...) ... | -| D.cs:370:25:370:25 | access to local variable i | -| D.cs:371:9:373:9 | {...} | -| D.cs:372:13:372:13 | access to local variable b | -| D.cs:378:19:378:28 | SSA def(ioe) | -| 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:388:45:388:45 | SSA param(b) | -| D.cs:390:20:390:43 | ... ? ... : ... | -| D.cs:390:20:390:43 | ... ? ... : ... | -| D.cs:390:32:390:32 | 0 | -| D.cs:390:32:390:32 | 0 | -| D.cs:390:36:390:36 | access to parameter a | -| D.cs:393:21:393:21 | access to local variable i | -| D.cs:393:21:393:21 | access to local variable i | -| D.cs:394:9:396:9 | {...} | -| D.cs:394:9:396:9 | {...} | -| D.cs:395:20:395:20 | access to parameter a | -| D.cs:397:9:397:44 | ... ...; | -| D.cs:397:20:397:43 | ... ? ... : ... | -| D.cs:397:32:397:32 | 0 | -| D.cs:398:21:398:21 | access to local variable i | -| D.cs:399:9:401:9 | {...} | -| D.cs:400:20:400:20 | access to parameter b | -| D.cs:405:35:405:35 | SSA param(x) | -| D.cs:405:35:405:35 | SSA param(x) | -| D.cs:405:35:405:35 | SSA param(x) | -| D.cs:405:45:405:45 | SSA param(y) | -| D.cs:405:45:405:45 | SSA param(y) | -| D.cs:405:45:405:45 | SSA param(y) | -| D.cs:407:13:407:64 | [false] ... \|\| ... | -| D.cs:407:13:407:64 | [false] ... \|\| ... | -| D.cs:407:14:407:35 | [false] ... && ... | -| 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:63 | [false] ... && ... | -| D.cs:407:55:407:55 | access to parameter y | -| D.cs:407:55:407:55 | access to parameter y | -| D.cs:409:9:410:25 | if (...) ... | -| D.cs:409:9:410:25 | if (...) ... | -| D.cs:410:13:410:13 | access to parameter y | -| 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:11:16:11:24 | SSA def(a3) | -| E.cs:12:22:12:52 | ... && ... | -| E.cs:12:38:12:39 | access to local variable a2 | -| E.cs:14:13:14:14 | access to local variable a3 | -| E.cs:23:13:23:30 | SSA def(s1) | -| E.cs:24:18:24:41 | ... ? ... : ... | -| E.cs:24:33:24:36 | null | -| 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:54:9:63:9 | {...} | -| E.cs:61:13:61:17 | access to local variable slice | -| E.cs:61:13:61:27 | ...; | -| E.cs:66:40:66:42 | SSA param(arr) | -| E.cs:70:13:70:50 | ...; | -| E.cs:70:22:70:49 | ... ? ... : ... | -| E.cs:70:36:70:36 | 0 | -| 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:25:111:25 | access to local variable i | -| E.cs:112:13:112:16 | access to local variable arr2 | -| E.cs:112:13:112:30 | ...; | -| E.cs:120:16:120:20 | [true] !... | -| E.cs:120:17:120:20 | access to local variable stop | -| E.cs:121:9:143:9 | {...} | -| E.cs:123:20:123:24 | [false] !... | -| E.cs:123:20:123:24 | [true] !... | -| E.cs:123:20:123:35 | [false] ... && ... | -| E.cs:123:20:123:35 | [true] ... && ... | -| E.cs:123:21:123:24 | access to local variable stop | -| E.cs:123:29:123:29 | access to local variable j | -| E.cs:124:13:142:13 | {...} | -| E.cs:125:33:125:35 | access to local variable obj | -| E.cs:128:21:128:23 | access to local variable obj | -| E.cs:137:25:137:34 | SSA def(obj) | -| E.cs:139:21:139:29 | continue; | -| E.cs:141:17:141:26 | ...; | -| E.cs:152:16:152:26 | SSA def(obj2) | -| E.cs:153:13:153:54 | [false] ... && ... | -| 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:17:164:40 | ... ? ... : ... | -| E.cs:164:29:164:29 | 0 | -| E.cs:165:25:165:25 | access to local variable i | -| E.cs:165:32:165:32 | access to local variable i | -| E.cs:166:9:170:9 | {...} | -| E.cs:167:21:167:21 | access to parameter a | -| E.cs:173:29:173:31 | SSA param(obj) | -| E.cs:173:29:173:31 | SSA param(obj) | -| E.cs:175:19:175:42 | ... ? ... : ... | -| E.cs:175:33:175:37 | false | -| E.cs:177:9:179:9 | {...} | -| E.cs:178:13:178:15 | access to parameter obj | -| E.cs:180:9:183:9 | if (...) ... | -| E.cs:181:9:183:9 | {...} | -| 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:198:13:198:29 | [b (line 196): true] SSA def(o) | -| E.cs:201:13:201:13 | access to local variable o | -| E.cs:203:13:203: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: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: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: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:283:13:283:22 | [b (line 279): true] SSA def(o) | -| E.cs:285:9:285:9 | access to local variable 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:13:321:30 | [true] ... is ... | -| E.cs:321:14:321:21 | ... ?? ... | -| E.cs:321:20:321:21 | access to parameter s2 | -| E.cs:323:13:323:14 | access to parameter s1 | -| 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:380:24:380:25 | SSA param(e1) | -| E.cs:380:24:380:25 | SSA param(e1) | -| E.cs:380:30:380:31 | SSA param(e2) | -| E.cs:380:30:380:31 | SSA param(e2) | -| E.cs:380:30:380:31 | SSA param(e2) | -| E.cs:382:13:382:68 | [false] ... \|\| ... | -| E.cs:382:13:382:68 | [false] ... \|\| ... | -| E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:382:44:382:45 | access to parameter e1 | -| 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:384:9:385:24 | if (...) ... | -| E.cs:384:9:385:24 | if (...) ... | -| E.cs:384:13:384:36 | [false] ... && ... | -| E.cs:384:13:384:36 | [false] ... && ... | -| E.cs:384:27:384:28 | access to parameter e2 | -| E.cs:386:16:386:17 | access to parameter e1 | -| E.cs:386:27:386:28 | access to parameter e2 | -| E.cs:404:9:404:18 | SSA def(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: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:14:9:17:9 | if (...) ... | -| Forwarding.cs:19:9:22:9 | if (...) ... | -| Forwarding.cs:19:13:19:23 | [false] !... | -| Forwarding.cs:24:9:27:9 | if (...) ... | -| Forwarding.cs:29:9:32:9 | if (...) ... | -| Forwarding.cs:34:9:37:9 | if (...) ... | -| Forwarding.cs:35:9:37:9 | {...} | -| Forwarding.cs:36:31:36:31 | access to local variable s | -| 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:14:9:17:9 | if (...) ... | -| GuardedString.cs:14:13:14:41 | [false] !... | -| GuardedString.cs:19:9:20:40 | if (...) ... | -| GuardedString.cs:19:26:19:26 | 0 | -| GuardedString.cs:22:9:23:40 | if (...) ... | -| GuardedString.cs:22:25:22:25 | 0 | -| GuardedString.cs:25:9:26:40 | if (...) ... | -| GuardedString.cs:25:26:25:26 | 0 | -| GuardedString.cs:28:9:29:40 | if (...) ... | -| GuardedString.cs:28:25:28:26 | 10 | -| GuardedString.cs:31:9:32:40 | if (...) ... | -| GuardedString.cs:31:26:31:27 | 10 | -| GuardedString.cs:34:9:37:40 | if (...) ... | -| 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:7:27:7:27 | access to parameter o | -| NullMaybeBad.cs:13:17:13:20 | null | -| Params.cs:14:17:14:20 | access to parameter args | -| Params.cs:20:12:20:15 | null | -| 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 | +#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 | @@ -784,150 +419,518 @@ edges | 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 | +| 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 | +| 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:27:18:27:35 | SSA def(fieldAccess) | +| A.cs:28:16:28:34 | SSA def(methodAccess) | +| A.cs:29:16:29:32 | SSA def(methodCall) | +| A.cs:31:27:31:37 | access to local variable arrayAccess | +| A.cs:32:27:32:37 | access to local variable fieldAccess | +| A.cs:33:28:33:39 | access to local variable methodAccess | +| A.cs:34:27:34:36 | access to local variable methodCall | +| A.cs:36:27:36:37 | access to local variable arrayAccess | +| A.cs:37:27:37:37 | access to local variable fieldAccess | +| A.cs:38:15:38:26 | access to local variable methodAccess | +| 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:13:9:13:25 | [b (line 7): true] SSA def(s) | +| Assert.cs:15:27:15:27 | access to local variable 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:21:9:21:25 | [b (line 7): true] SSA def(s) | +| Assert.cs:23:27:23:27 | access to local variable 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:29:9:29:25 | [b (line 7): true] SSA def(s) | +| Assert.cs:31:27:31:27 | access to local variable 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:23:46:36 | [true, b (line 7): true] ... && ... | +| Assert.cs:46:36:46:36 | [b (line 7): true] access to parameter b | +| Assert.cs:47:27:47:27 | access to local variable s | +| Assert.cs:49:9:49:25 | [b (line 7): true] SSA def(s) | +| Assert.cs:50:24:50:38 | [false] ... \|\| ... | +| Assert.cs:50:37:50:38 | [false] !... | +| Assert.cs:50:38:50:38 | [b (line 7): true] access to parameter b | +| Assert.cs:51:27:51:27 | access to local variable s | +| B.cs:7:11:7:29 | SSA def(eqCallAlways) | +| B.cs:10:11:10:30 | SSA def(neqCallAlways) | +| B.cs:13:13:13:24 | access to local variable eqCallAlways | +| B.cs:13:13:13:36 | ...; | +| B.cs:15:9:16:26 | if (...) ... | +| B.cs:16:13:16:26 | ...; | +| B.cs:18:9:20:26 | if (...) ... | +| B.cs:18:25:18:27 | {...} | +| B.cs:20:13:20:26 | ...; | +| 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:13:11:30 | [false] !... | +| C.cs:11:15:11:29 | [true] !... | +| C.cs:11:17:11:28 | [false] !... | +| C.cs:16:9:19:9 | if (...) ... | +| 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:96:13:96:13 | access to local variable o | +| C.cs:102:13:102:23 | SSA def(list) | +| C.cs:103:9:107:9 | foreach (... ... in ...) ... | +| C.cs:103:22:103:22 | Int32 x | +| C.cs:103:27:103:30 | access to parameter list | +| C.cs:103:27:103:30 | access to parameter list | +| C.cs:106:13:106:16 | access to parameter list | +| 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:177:13:177:13 | access to local variable s | +| C.cs:178:13:178:20 | SSA def(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: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:210:13:210:35 | SSA def(s) | +| C.cs:214:13:214:20 | SSA def(s) | +| 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:229:33:229:40 | SSA def(s) | +| C.cs:233:9:233:9 | 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:35:235:42 | SSA def(s) | +| C.cs:237:13:237: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 | +| 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:258:18:258:26 | SSA def(sa) | +| C.cs:260:9:260:10 | access to local variable ia | +| C.cs:261:20:261:21 | access to local variable sa | +| C.cs:263:9:263:10 | access to local variable ia | +| 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: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:73:13:73:14 | access to local variable o7 | +| D.cs:75:13:75:34 | SSA def(o8) | +| D.cs:76:21:76:43 | ... ? ... : ... | +| D.cs:76:34:76:35 | 42 | +| D.cs:79:9:80:26 | if (...) ... | +| D.cs:81:9:82:26 | if (...) ... | +| D.cs:82:13:82:14 | access to local variable o8 | +| D.cs:82:13:82:26 | ...; | +| 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:91:13:91:22 | ...; | +| D.cs:93:9:94:30 | if (...) ... | +| D.cs:94:13:94:30 | ...; | +| D.cs:94:21:94:22 | access to local variable xs | +| D.cs:96:9:99:9 | if (...) ... | +| D.cs:97:9:99:9 | {...} | +| D.cs:98:21:98:22 | access to local variable xs | +| D.cs:101:9:102:35 | if (...) ... | +| D.cs:102:13:102:35 | foreach (... ... in ...) ... | +| D.cs:102:26:102:26 | Int32 _ | +| D.cs:102:31:102:32 | access to local variable xs | +| D.cs:102:31:102:32 | access to local variable xs | +| D.cs:104:9:106:30 | if (...) ... | +| D.cs:105:19:105:20 | access to local variable xs | +| 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:125:35:125:35 | SSA param(a) | +| D.cs:125:44:125:44 | SSA param(b) | +| D.cs:127:20:127:43 | ... ? ... : ... | +| D.cs:127:20:127:43 | ... ? ... : ... | +| D.cs:127:32:127:32 | 0 | +| D.cs:127:32:127:32 | 0 | +| D.cs:127:36:127:36 | access to parameter a | +| D.cs:128:20:128:43 | ... ? ... : ... | +| D.cs:128:20:128:43 | ... ? ... : ... | +| D.cs:128:32:128:32 | 0 | +| D.cs:128:32:128:32 | 0 | +| D.cs:128:36:128:36 | access to parameter b | +| D.cs:131:9:137:9 | {...} | +| 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:133:13:136:13 | {...} | +| D.cs:134:24:134:24 | access to parameter a | +| D.cs:135:24:135:24 | access to parameter b | +| D.cs:138:9:138:18 | ... ...; | +| D.cs:142:13:142:22 | ...; | +| D.cs:143:9:146:9 | for (...;...;...) ... | +| D.cs:143:25:143:25 | access to local variable i | +| D.cs:144:9:146:9 | {...} | +| D.cs:145:20:145:20 | access to parameter a | +| 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: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:21:241:37 | ... ? ... : ... | +| D.cs:241:29:241:32 | null | +| D.cs:241:36:241:37 | "" | +| D.cs:244:9:247:25 | if (...) ... | +| D.cs:245:13:245:13 | access to local variable o | +| 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: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:39:272:39 | access to local variable i | +| D.cs:273:9:288:9 | {...} | +| D.cs:281:13:287:13 | if (...) ... | +| D.cs:283:17:283:24 | SSA def(o) | +| D.cs:285:28:285:30 | {...} | +| D.cs:286:17:286:30 | ...; | +| D.cs:290:9:291:25 | if (...) ... | +| D.cs:291:13:291:13 | access to local variable o | +| D.cs:291:13:291:25 | ...; | +| 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: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:312:13:313:29 | if (...) ... | +| 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:62 | [false] ... && ... | +| D.cs:318:41:318:44 | access to local variable stat | +| D.cs:324:9:324:9 | access to local variable r | +| D.cs:351:15:351:22 | SSA def(a) | +| D.cs:355:9:356:21 | for (...;...;...) ... | +| D.cs:355:25:355:25 | access to local variable i | +| D.cs:356:13:356:13 | access to local variable a | +| D.cs:356:13:356:21 | ...; | +| D.cs:360:20:360:30 | SSA def(last) | +| 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:370:9:373:9 | for (...;...;...) ... | +| D.cs:370:25:370:25 | access to local variable i | +| D.cs:371:9:373:9 | {...} | +| D.cs:372:13:372:13 | access to local variable b | +| D.cs:378:19:378:28 | SSA def(ioe) | +| 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:388:45:388:45 | SSA param(b) | +| D.cs:390:20:390:43 | ... ? ... : ... | +| D.cs:390:20:390:43 | ... ? ... : ... | +| D.cs:390:32:390:32 | 0 | +| D.cs:390:32:390:32 | 0 | +| D.cs:390:36:390:36 | access to parameter a | +| D.cs:393:21:393:21 | access to local variable i | +| D.cs:393:21:393:21 | access to local variable i | +| D.cs:394:9:396:9 | {...} | +| D.cs:394:9:396:9 | {...} | +| D.cs:395:20:395:20 | access to parameter a | +| D.cs:397:9:397:44 | ... ...; | +| D.cs:397:20:397:43 | ... ? ... : ... | +| D.cs:397:32:397:32 | 0 | +| D.cs:398:21:398:21 | access to local variable i | +| D.cs:399:9:401:9 | {...} | +| D.cs:400:20:400:20 | access to parameter b | +| D.cs:405:35:405:35 | SSA param(x) | +| D.cs:405:35:405:35 | SSA param(x) | +| D.cs:405:35:405:35 | SSA param(x) | +| D.cs:405:45:405:45 | SSA param(y) | +| D.cs:405:45:405:45 | SSA param(y) | +| D.cs:405:45:405:45 | SSA param(y) | +| D.cs:407:13:407:64 | [false] ... \|\| ... | +| D.cs:407:13:407:64 | [false] ... \|\| ... | +| D.cs:407:14:407:35 | [false] ... && ... | +| 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:63 | [false] ... && ... | +| D.cs:407:55:407:55 | access to parameter y | +| D.cs:407:55:407:55 | access to parameter y | +| D.cs:409:9:410:25 | if (...) ... | +| D.cs:409:9:410:25 | if (...) ... | +| D.cs:410:13:410:13 | access to parameter y | +| 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:11:16:11:24 | SSA def(a3) | +| E.cs:12:22:12:52 | ... && ... | +| E.cs:12:38:12:39 | access to local variable a2 | +| E.cs:14:13:14:14 | access to local variable a3 | +| E.cs:23:13:23:30 | SSA def(s1) | +| E.cs:24:18:24:41 | ... ? ... : ... | +| E.cs:24:33:24:36 | null | +| 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:54:9:63:9 | {...} | +| E.cs:61:13:61:17 | access to local variable slice | +| E.cs:61:13:61:27 | ...; | +| E.cs:66:40:66:42 | SSA param(arr) | +| E.cs:70:13:70:50 | ...; | +| E.cs:70:22:70:49 | ... ? ... : ... | +| E.cs:70:36:70:36 | 0 | +| 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:25:111:25 | access to local variable i | +| E.cs:112:13:112:16 | access to local variable arr2 | +| E.cs:112:13:112:30 | ...; | +| E.cs:120:16:120:20 | [true] !... | +| E.cs:120:17:120:20 | access to local variable stop | +| E.cs:121:9:143:9 | {...} | +| E.cs:123:20:123:24 | [false] !... | +| E.cs:123:20:123:24 | [true] !... | +| E.cs:123:20:123:35 | [false] ... && ... | +| E.cs:123:20:123:35 | [true] ... && ... | +| E.cs:123:21:123:24 | access to local variable stop | +| E.cs:123:29:123:29 | access to local variable j | +| E.cs:124:13:142:13 | {...} | +| E.cs:125:33:125:35 | access to local variable obj | +| E.cs:128:21:128:23 | access to local variable obj | +| E.cs:137:25:137:34 | SSA def(obj) | +| E.cs:139:21:139:29 | continue; | +| E.cs:141:17:141:26 | ...; | +| E.cs:152:16:152:26 | SSA def(obj2) | +| E.cs:153:13:153:54 | [false] ... && ... | +| 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:17:164:40 | ... ? ... : ... | +| E.cs:164:29:164:29 | 0 | +| E.cs:165:25:165:25 | access to local variable i | +| E.cs:165:32:165:32 | access to local variable i | +| E.cs:166:9:170:9 | {...} | +| E.cs:167:21:167:21 | access to parameter a | +| E.cs:173:29:173:31 | SSA param(obj) | +| E.cs:173:29:173:31 | SSA param(obj) | +| E.cs:175:19:175:42 | ... ? ... : ... | +| E.cs:175:33:175:37 | false | +| E.cs:177:9:179:9 | {...} | +| E.cs:178:13:178:15 | access to parameter obj | +| E.cs:180:9:183:9 | if (...) ... | +| E.cs:181:9:183:9 | {...} | +| 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:198:13:198:29 | [b (line 196): true] SSA def(o) | +| E.cs:201:13:201:13 | access to local variable o | +| E.cs:203:13:203: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: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: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: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:283:13:283:22 | [b (line 279): true] SSA def(o) | +| E.cs:285:9:285:9 | access to local variable 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:13:321:30 | [true] ... is ... | +| E.cs:321:14:321:21 | ... ?? ... | +| E.cs:321:20:321:21 | access to parameter s2 | +| E.cs:323:13:323:14 | access to parameter s1 | +| 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:380:24:380:25 | SSA param(e1) | +| E.cs:380:24:380:25 | SSA param(e1) | +| E.cs:380:30:380:31 | SSA param(e2) | +| E.cs:380:30:380:31 | SSA param(e2) | +| E.cs:380:30:380:31 | SSA param(e2) | +| E.cs:382:13:382:68 | [false] ... \|\| ... | +| E.cs:382:13:382:68 | [false] ... \|\| ... | +| E.cs:382:14:382:37 | [false] ... && ... | +| E.cs:382:14:382:37 | [false] ... && ... | +| E.cs:382:28:382:29 | access to parameter e2 | +| E.cs:382:28:382:29 | access to parameter e2 | +| E.cs:382:44:382:45 | access to parameter e1 | +| 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:384:9:385:24 | if (...) ... | +| E.cs:384:9:385:24 | if (...) ... | +| E.cs:384:13:384:36 | [false] ... && ... | +| E.cs:384:13:384:36 | [false] ... && ... | +| E.cs:384:27:384:28 | access to parameter e2 | +| E.cs:386:16:386:17 | access to parameter e1 | +| E.cs:386:27:386:28 | access to parameter e2 | +| E.cs:404:9:404:18 | SSA def(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: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 (...) ... | +| Forwarding.cs:19:9:22:9 | if (...) ... | +| Forwarding.cs:19:13:19:23 | [false] !... | +| Forwarding.cs:24:9:27:9 | if (...) ... | +| Forwarding.cs:29:9:32:9 | if (...) ... | +| Forwarding.cs:34:9:37:9 | if (...) ... | +| Forwarding.cs:35:9:37:9 | {...} | +| Forwarding.cs:36:31:36:31 | access to local variable s | +| 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:14:9:17:9 | if (...) ... | +| GuardedString.cs:14:13:14:41 | [false] !... | +| GuardedString.cs:19:9:20:40 | if (...) ... | +| GuardedString.cs:19:26:19:26 | 0 | +| GuardedString.cs:22:9:23:40 | if (...) ... | +| GuardedString.cs:22:25:22:25 | 0 | +| GuardedString.cs:25:9:26:40 | if (...) ... | +| GuardedString.cs:25:26:25:26 | 0 | +| GuardedString.cs:28:9:29:40 | if (...) ... | +| GuardedString.cs:28:25:28:26 | 10 | +| GuardedString.cs:31:9:32:40 | if (...) ... | +| GuardedString.cs:31:26:31:27 | 10 | +| GuardedString.cs:34:9:37:40 | if (...) ... | +| 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:7:27:7:27 | access to parameter o | +| NullMaybeBad.cs:13:17:13:20 | null | +| Params.cs:14:17:14:20 | access to parameter args | +| Params.cs:20:12:20:15 | null | +| 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 | diff --git a/csharp/ql/test/query-tests/Nullness/NullMaybe.qlref b/csharp/ql/test/query-tests/Nullness/NullMaybe.qlref index caf2eefb3d8f..6615576178c6 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 9950bc3c1ee8..433a4edc1126 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 17c9cf861d7b..b7f2c9e46e8a 100644 --- a/csharp/ql/test/query-tests/Nullness/Params.cs +++ b/csharp/ql/test/query-tests/Nullness/Params.cs @@ -11,12 +11,12 @@ public void M1(params string[] args) 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 394ea9077693..1cc8f146aec7 100644 --- a/csharp/ql/test/query-tests/Nullness/StringConcatenation.cs +++ b/csharp/ql/test/query-tests/Nullness/StringConcatenation.cs @@ -11,9 +11,9 @@ void StringAdded() 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 ca78c4312494..1039aa6de18c 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/query-tests/Security Features/CWE-089-2/SqlInjection.cs b/csharp/ql/test/query-tests/Security Features/CWE-089-2/SqlInjection.cs new file mode 100644 index 000000000000..739f0ea30ee0 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-089-2/SqlInjection.cs @@ -0,0 +1,33 @@ +using System; +using Microsoft.Data; +using Microsoft.Data.SqlClient; + +namespace Test +{ + class SqlInjection + { + string connectionString; + System.Windows.Forms.TextBox box1; + + public void MakeSqlCommand() + { + // BAD: Text from a local textbox + using (var connection = new SqlConnection(connectionString)) + { + var queryString = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + + box1.Text + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] + var cmd = new SqlCommand(queryString); // $ Alert[cs/sql-injection] + var adapter = new SqlDataAdapter(cmd); // $ Alert[cs/sql-injection] + } + + // BAD: Input from the command line. + using (var connection = new SqlConnection(connectionString)) + { + var queryString = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + + Console.ReadLine() + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] + var cmd = new SqlCommand(queryString); // $ Alert[cs/sql-injection] + var adapter = new SqlDataAdapter(cmd); // $ Alert[cs/sql-injection] + } + } + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089-2/SqlInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-089-2/SqlInjection.expected new file mode 100644 index 000000000000..d6582d877edd --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-089-2/SqlInjection.expected @@ -0,0 +1,39 @@ +#select +| SqlInjection.cs:19:42:19:52 | access to local variable queryString | SqlInjection.cs:18:21:18:29 | access to property Text : String | SqlInjection.cs:19:42:19:52 | access to local variable queryString | This query depends on $@. | SqlInjection.cs:18:21:18:29 | access to property Text : String | this TextBox text | +| SqlInjection.cs:20:50:20:52 | access to local variable cmd | SqlInjection.cs:18:21:18:29 | access to property Text : String | SqlInjection.cs:20:50:20:52 | access to local variable cmd | This query depends on $@. | SqlInjection.cs:18:21:18:29 | access to property Text : String | this TextBox text | +| SqlInjection.cs:28:42:28:52 | access to local variable queryString | SqlInjection.cs:27:21:27:38 | call to method ReadLine : String | SqlInjection.cs:28:42:28:52 | access to local variable queryString | This query depends on $@. | SqlInjection.cs:27:21:27:38 | call to method ReadLine : String | this read from stdin | +| SqlInjection.cs:29:50:29:52 | access to local variable cmd | SqlInjection.cs:27:21:27:38 | call to method ReadLine : String | SqlInjection.cs:29:50:29:52 | access to local variable cmd | This query depends on $@. | SqlInjection.cs:27:21:27:38 | call to method ReadLine : String | this read from stdin | +edges +| SqlInjection.cs:17:21:17:31 | access to local variable queryString : String | SqlInjection.cs:19:42:19:52 | access to local variable queryString | provenance | Sink:MaD:1 | +| SqlInjection.cs:17:21:17:31 | access to local variable queryString : String | SqlInjection.cs:19:42:19:52 | access to local variable queryString : String | provenance | | +| SqlInjection.cs:18:21:18:29 | access to property Text : String | SqlInjection.cs:17:21:17:31 | access to local variable queryString : String | provenance | | +| SqlInjection.cs:19:21:19:23 | access to local variable cmd : SqlCommand | SqlInjection.cs:20:50:20:52 | access to local variable cmd | provenance | Sink:MaD:2 | +| SqlInjection.cs:19:27:19:53 | object creation of type SqlCommand : SqlCommand | SqlInjection.cs:19:21:19:23 | access to local variable cmd : SqlCommand | provenance | | +| SqlInjection.cs:19:42:19:52 | access to local variable queryString : String | SqlInjection.cs:19:27:19:53 | object creation of type SqlCommand : SqlCommand | provenance | MaD:4 | +| SqlInjection.cs:26:21:26:31 | access to local variable queryString : String | SqlInjection.cs:28:42:28:52 | access to local variable queryString | provenance | Sink:MaD:1 | +| SqlInjection.cs:26:21:26:31 | access to local variable queryString : String | SqlInjection.cs:28:42:28:52 | access to local variable queryString : String | provenance | | +| SqlInjection.cs:27:21:27:38 | call to method ReadLine : String | SqlInjection.cs:26:21:26:31 | access to local variable queryString : String | provenance | Src:MaD:3 | +| SqlInjection.cs:28:21:28:23 | access to local variable cmd : SqlCommand | SqlInjection.cs:29:50:29:52 | access to local variable cmd | provenance | Sink:MaD:2 | +| SqlInjection.cs:28:27:28:53 | object creation of type SqlCommand : SqlCommand | SqlInjection.cs:28:21:28:23 | access to local variable cmd : SqlCommand | provenance | | +| SqlInjection.cs:28:42:28:52 | access to local variable queryString : String | SqlInjection.cs:28:27:28:53 | object creation of type SqlCommand : SqlCommand | provenance | MaD:4 | +models +| 1 | Sink: Microsoft.Data.SqlClient; SqlCommand; false; SqlCommand; (System.String); ; Argument[0]; sql-injection; manual | +| 2 | Sink: Microsoft.Data.SqlClient; SqlDataAdapter; false; SqlDataAdapter; (Microsoft.Data.SqlClient.SqlCommand); ; Argument[0]; sql-injection; manual | +| 3 | Source: System; Console; false; ReadLine; ; ; ReturnValue; stdin; manual | +| 4 | Summary: Microsoft.Data.SqlClient; SqlCommand; false; SqlCommand; (System.String); ; Argument[0]; Argument[this]; taint; manual | +nodes +| SqlInjection.cs:17:21:17:31 | access to local variable queryString : String | semmle.label | access to local variable queryString : String | +| SqlInjection.cs:18:21:18:29 | access to property Text : String | semmle.label | access to property Text : String | +| SqlInjection.cs:19:21:19:23 | access to local variable cmd : SqlCommand | semmle.label | access to local variable cmd : SqlCommand | +| SqlInjection.cs:19:27:19:53 | object creation of type SqlCommand : SqlCommand | semmle.label | object creation of type SqlCommand : SqlCommand | +| SqlInjection.cs:19:42:19:52 | access to local variable queryString | semmle.label | access to local variable queryString | +| SqlInjection.cs:19:42:19:52 | access to local variable queryString : String | semmle.label | access to local variable queryString : String | +| SqlInjection.cs:20:50:20:52 | access to local variable cmd | semmle.label | access to local variable cmd | +| SqlInjection.cs:26:21:26:31 | access to local variable queryString : String | semmle.label | access to local variable queryString : String | +| SqlInjection.cs:27:21:27:38 | call to method ReadLine : String | semmle.label | call to method ReadLine : String | +| SqlInjection.cs:28:21:28:23 | access to local variable cmd : SqlCommand | semmle.label | access to local variable cmd : SqlCommand | +| SqlInjection.cs:28:27:28:53 | object creation of type SqlCommand : SqlCommand | semmle.label | object creation of type SqlCommand : SqlCommand | +| SqlInjection.cs:28:42:28:52 | access to local variable queryString | semmle.label | access to local variable queryString | +| SqlInjection.cs:28:42:28:52 | access to local variable queryString : String | semmle.label | access to local variable queryString : String | +| SqlInjection.cs:29:50:29:52 | access to local variable cmd | semmle.label | access to local variable cmd | +subpaths diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089-2/SqlInjection.ext.yml b/csharp/ql/test/query-tests/Security Features/CWE-089-2/SqlInjection.ext.yml new file mode 100644 index 000000000000..82f107ae1d71 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-089-2/SqlInjection.ext.yml @@ -0,0 +1,7 @@ +extensions: + + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["local", true, 0] \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089-2/SqlInjection.qlref b/csharp/ql/test/query-tests/Security Features/CWE-089-2/SqlInjection.qlref new file mode 100644 index 000000000000..1421faac8072 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-089-2/SqlInjection.qlref @@ -0,0 +1,4 @@ +query: Security Features/CWE-089/SqlInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089-2/options b/csharp/ql/test/query-tests/Security Features/CWE-089-2/options new file mode 100644 index 000000000000..5601356ee484 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-089-2/options @@ -0,0 +1,4 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/Microsoft.Data.SqlClient/6.0.2/Microsoft.Data.SqlClient.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Windows.cs +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.cs b/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.cs index b8ecf0b8e0a6..b2240908686e 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.cs @@ -17,12 +17,12 @@ public void ProcessRequest() { connection.Open(); SqlCommand customerCommand = new SqlCommand("SELECT * FROM customers", connection); - SqlDataReader customerReader = customerCommand.ExecuteReader(); + SqlDataReader customerReader = customerCommand.ExecuteReader(); // $ Source[cs/sql-injection] while (customerReader.Read()) { // BAD: Read from database, write it straight to another query - SqlCommand secondCustomerCommand = new SqlCommand("SELECT * FROM customers WHERE customerName=" + customerReader.GetString(1), connection); + SqlCommand secondCustomerCommand = new SqlCommand("SELECT * FROM customers WHERE customerName=" + customerReader.GetString(1), connection); // $ Alert[cs/sql-injection] } customerReader.Close(); } @@ -30,7 +30,7 @@ public void ProcessRequest() public void RunSQLFromFile() { - using (FileStream fs = new FileStream("myfile.txt", FileMode.Open)) + using (FileStream fs = new FileStream("myfile.txt", FileMode.Open)) // $ Source[cs/sql-injection] { using (StreamReader sr = new StreamReader(fs, Encoding.UTF8)) { @@ -42,7 +42,7 @@ public void RunSQLFromFile() continue; using (var connection = new SQLiteConnection("")) { - var cmd = new SQLiteCommand(sql, connection); + var cmd = new SQLiteCommand(sql, connection); // $ Alert[cs/sql-injection] cmd.ExecuteScalar(); } } diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.cs b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.cs index 38dcf94ef8d0..e7dd2f732603 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.cs @@ -35,8 +35,8 @@ public void GetDataSetByCategory() using (var connection = new SqlConnection(connectionString)) { var query1 = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" - + categoryTextBox.Text + "' ORDER BY PRICE"; - var adapter = new SqlDataAdapter(query1, connection); + + categoryTextBox.Text + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] + var adapter = new SqlDataAdapter(query1, connection); // $ Alert[cs/sql-injection] var result = new DataSet(); adapter.Fill(result); } @@ -70,9 +70,9 @@ public void GetDataSetByCategory() { // BAD: Use EntityFramework direct Sql execution methods var query1 = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" - + categoryTextBox.Text + "' ORDER BY PRICE"; - context.Database.ExecuteSqlCommand(query1); - context.Database.SqlQuery(query1); + + categoryTextBox.Text + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] + context.Database.ExecuteSqlCommand(query1); // $ Alert[cs/sql-injection] + context.Database.SqlQuery(query1); // $ Alert[cs/sql-injection] // GOOD: Use EntityFramework direct Sql execution methods with parameter var query2 = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY=" + "@p0 ORDER BY PRICE"; @@ -84,8 +84,8 @@ public void GetDataSetByCategory() using (var connection = new SqlConnection(connectionString)) { var query1 = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" - + box1.Text + "' ORDER BY PRICE"; - var adapter = new SqlDataAdapter(query1, connection); + + box1.Text + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] + var adapter = new SqlDataAdapter(query1, connection); // $ Alert[cs/sql-injection] var result = new DataSet(); adapter.Fill(result); } @@ -94,9 +94,9 @@ public void GetDataSetByCategory() using (var connection = new SqlConnection(connectionString)) { var queryString = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" - + box1.Text + "' ORDER BY PRICE"; - var cmd = new SqlCommand(queryString); - var adapter = new SqlDataAdapter(cmd); + + box1.Text + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] + var cmd = new SqlCommand(queryString); // $ Alert[cs/sql-injection] + var adapter = new SqlDataAdapter(cmd); // $ Alert[cs/sql-injection] var result = new DataSet(); adapter.Fill(result); } @@ -105,9 +105,9 @@ public void GetDataSetByCategory() using (var connection = new SqlConnection(connectionString)) { var queryString = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" - + Console.ReadLine()! + "' ORDER BY PRICE"; - var cmd = new SqlCommand(queryString); - var adapter = new SqlDataAdapter(cmd); + + Console.ReadLine()! + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] + var cmd = new SqlCommand(queryString); // $ Alert[cs/sql-injection] + var adapter = new SqlDataAdapter(cmd); // $ Alert[cs/sql-injection] var result = new DataSet(); adapter.Fill(result); } @@ -119,14 +119,14 @@ public void GetDataSetByCategory() public abstract class MyController : Controller { [HttpPost("{userId:string}")] - public async Task GetUserById([FromRoute] string userId, CancellationToken cancellationToken) + public async Task GetUserById([FromRoute] string userId, CancellationToken cancellationToken) // $ Source[cs/sql-injection] { // This is a vulnerable method due to SQL injection string query = "SELECT * FROM Users WHERE UserId = '" + userId + "'"; using (SqlConnection connection = new SqlConnection("YourConnectionString")) { - SqlCommand command = new SqlCommand(query, connection); + SqlCommand command = new SqlCommand(query, connection); // $ Alert[cs/sql-injection] connection.Open(); SqlDataReader reader = command.ExecuteReader(); diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.qlref b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.qlref index 56829ee8e8fc..1421faac8072 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.qlref +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.qlref @@ -1,2 +1,4 @@ query: Security Features/CWE-089/SqlInjection.ql -postprocess: utils/test/PrettyPrintModels.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjectionDapper.cs b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjectionDapper.cs index ec54c70ddeb2..360264c5776f 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjectionDapper.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjectionDapper.cs @@ -17,8 +17,8 @@ public void Bad01() { using (var connection = new SqlConnection(connectionString)) { - var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; - var result = connection.Query(query); + var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] + var result = connection.Query(query); // $ Alert[cs/sql-injection] } } @@ -26,8 +26,8 @@ public async Task Bad02() { using (var connection = new SqlConnection(connectionString)) { - var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; - var result = await connection.QueryAsync(query); + var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] + var result = await connection.QueryAsync(query); // $ Alert[cs/sql-injection] } } @@ -35,8 +35,8 @@ public async Task Bad03() { using (var connection = new SqlConnection(connectionString)) { - var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; - var result = await connection.QueryFirstAsync(query); + var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] + var result = await connection.QueryFirstAsync(query); // $ Alert[cs/sql-injection] } } @@ -44,9 +44,9 @@ public async Task Bad04() { using (var connection = new SqlConnection(connectionString)) { - var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; + var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] - await connection.ExecuteAsync(query); + await connection.ExecuteAsync(query); // $ Alert[cs/sql-injection] } } @@ -54,8 +54,8 @@ public void Bad05() { using (var connection = new SqlConnection(connectionString)) { - var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; - connection.ExecuteScalar(query); + var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] + connection.ExecuteScalar(query); // $ Alert[cs/sql-injection] } } @@ -63,8 +63,8 @@ public void Bad06() { using (var connection = new SqlConnection(connectionString)) { - var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; - connection.ExecuteReader(query); + var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] + connection.ExecuteReader(query); // $ Alert[cs/sql-injection] } } @@ -72,9 +72,9 @@ public async Task Bad07() { using (var connection = new SqlConnection(connectionString)) { - var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; + var query = "SELECT ITEM,PRICE FROM PRODUCT WHERE ITEM_CATEGORY='" + box1.Text + "' ORDER BY PRICE"; // $ Source[cs/sql-injection] - var comDef = new CommandDefinition(query); + var comDef = new CommandDefinition(query); // $ Alert[cs/sql-injection] var result = await connection.QueryFirstAsync(comDef); } } diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjectionSqlite.cs b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjectionSqlite.cs index 6654a8fdec10..c7b6f1db072f 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjectionSqlite.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjectionSqlite.cs @@ -16,12 +16,12 @@ class SqlInjection public void InjectUntrustedData() { // BAD: untrusted data is not sanitized. - SQLiteCommand cmd = new SQLiteCommand(untrustedData.Text); + SQLiteCommand cmd = new SQLiteCommand(untrustedData.Text); // $ Alert[cs/sql-injection] // BAD: untrusted data is not sanitized. using (var connection = new SQLiteConnection(connectionString)) { - cmd = new SQLiteCommand(untrustedData.Text, connection); + cmd = new SQLiteCommand(untrustedData.Text, connection); // $ Source[cs/sql-injection] Alert[cs/sql-injection] } SQLiteDataAdapter adapter; @@ -30,23 +30,23 @@ public void InjectUntrustedData() // BAD: untrusted data is not sanitized. using (var connection = new SQLiteConnection(connectionString)) { - adapter = new SQLiteDataAdapter(untrustedData.Text, connection); + adapter = new SQLiteDataAdapter(untrustedData.Text, connection); // $ Alert[cs/sql-injection] result = new DataSet(); adapter.Fill(result); } // BAD: untrusted data is not sanitized. - adapter = new SQLiteDataAdapter(untrustedData.Text, connectionString); + adapter = new SQLiteDataAdapter(untrustedData.Text, connectionString); // $ Alert[cs/sql-injection] result = new DataSet(); adapter.Fill(result); // BAD: untrusted data is not sanitized. - adapter = new SQLiteDataAdapter(cmd); + adapter = new SQLiteDataAdapter(cmd); // $ Alert[cs/sql-injection] result = new DataSet(); adapter.Fill(result); // BAD: untrusted data as filename is not sanitized. - using (FileStream fs = new FileStream(untrustedData.Text, FileMode.Open)) + using (FileStream fs = new FileStream(untrustedData.Text, FileMode.Open)) // $ Source[cs/sql-injection] { using (StreamReader sr = new StreamReader(fs, Encoding.UTF8)) { @@ -58,7 +58,7 @@ public void InjectUntrustedData() continue; using (var connection = new SQLiteConnection("")) { - cmd = new SQLiteCommand(sql, connection); + cmd = new SQLiteCommand(sql, connection); // $ Alert[cs/sql-injection] cmd.ExecuteScalar(); } } @@ -66,4 +66,4 @@ public void InjectUntrustedData() } } } -} \ No newline at end of file +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-285/MissingAccessControl/MVCTests/ProfileController.cs b/csharp/ql/test/query-tests/Security Features/CWE-285/MissingAccessControl/MVCTests/ProfileController.cs index 9c20313b84b7..84af3b50d1f4 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-285/MissingAccessControl/MVCTests/ProfileController.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-285/MissingAccessControl/MVCTests/ProfileController.cs @@ -41,6 +41,14 @@ public ActionResult Delete4(int id) doThings(); return View(); } + + // GOOD: The Authorize attribute is used. + [Authorize("foo")] + public ActionResult Delete5(int id) + { + doThings(); + return View(); + } } [Authorize] diff --git a/csharp/ql/test/resources/stubs/Azure.Core/1.38.0/Azure.Core.cs b/csharp/ql/test/resources/stubs/Azure.Core/1.38.0/Azure.Core.cs new file mode 100644 index 000000000000..c56fc0888b00 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Azure.Core/1.38.0/Azure.Core.cs @@ -0,0 +1,1104 @@ +// This file contains auto-generated code. +// Generated from `Azure.Core, Version=1.38.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8`. +namespace Azure +{ + public abstract class AsyncPageable : System.Collections.Generic.IAsyncEnumerable + { + public abstract System.Collections.Generic.IAsyncEnumerable> AsPages(string continuationToken = default(string), int? pageSizeHint = default(int?)); + protected virtual System.Threading.CancellationToken CancellationToken { get => throw null; } + protected AsyncPageable() => throw null; + protected AsyncPageable(System.Threading.CancellationToken cancellationToken) => throw null; + public override bool Equals(object obj) => throw null; + public static Azure.AsyncPageable FromPages(System.Collections.Generic.IEnumerable> pages) => throw null; + public virtual System.Collections.Generic.IAsyncEnumerator GetAsyncEnumerator(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override int GetHashCode() => throw null; + public override string ToString() => throw null; + } + public static partial class AzureCoreExtensions + { + public static dynamic ToDynamicFromJson(this System.BinaryData utf8Json) => throw null; + public static dynamic ToDynamicFromJson(this System.BinaryData utf8Json, Azure.Core.Serialization.JsonPropertyNames propertyNameFormat, string dateTimeFormat = default(string)) => throw null; + public static T ToObject(this System.BinaryData data, Azure.Core.Serialization.ObjectSerializer serializer, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public static System.Threading.Tasks.ValueTask ToObjectAsync(this System.BinaryData data, Azure.Core.Serialization.ObjectSerializer serializer, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public static object ToObjectFromJson(this System.BinaryData data) => throw null; + } + public class AzureKeyCredential + { + public AzureKeyCredential(string key) => throw null; + public string Key { get => throw null; } + public void Update(string key) => throw null; + } + public class AzureNamedKeyCredential + { + public AzureNamedKeyCredential(string name, string key) => throw null; + public void Deconstruct(out string name, out string key) => throw null; + public string Name { get => throw null; } + public void Update(string name, string key) => throw null; + } + public class AzureSasCredential + { + public AzureSasCredential(string signature) => throw null; + public string Signature { get => throw null; } + public void Update(string signature) => throw null; + } + namespace Core + { + public struct AccessToken + { + public AccessToken(string accessToken, System.DateTimeOffset expiresOn) => throw null; + public override bool Equals(object obj) => throw null; + public System.DateTimeOffset ExpiresOn { get => throw null; } + public override int GetHashCode() => throw null; + public string Token { get => throw null; } + } + public struct AzureLocation : System.IEquatable + { + public static Azure.Core.AzureLocation AustraliaCentral { get => throw null; } + public static Azure.Core.AzureLocation AustraliaCentral2 { get => throw null; } + public static Azure.Core.AzureLocation AustraliaEast { get => throw null; } + public static Azure.Core.AzureLocation AustraliaSoutheast { get => throw null; } + public static Azure.Core.AzureLocation BrazilSouth { get => throw null; } + public static Azure.Core.AzureLocation BrazilSoutheast { get => throw null; } + public static Azure.Core.AzureLocation CanadaCentral { get => throw null; } + public static Azure.Core.AzureLocation CanadaEast { get => throw null; } + public static Azure.Core.AzureLocation CentralIndia { get => throw null; } + public static Azure.Core.AzureLocation CentralUS { get => throw null; } + public static Azure.Core.AzureLocation ChinaEast { get => throw null; } + public static Azure.Core.AzureLocation ChinaEast2 { get => throw null; } + public static Azure.Core.AzureLocation ChinaEast3 { get => throw null; } + public static Azure.Core.AzureLocation ChinaNorth { get => throw null; } + public static Azure.Core.AzureLocation ChinaNorth2 { get => throw null; } + public static Azure.Core.AzureLocation ChinaNorth3 { get => throw null; } + public AzureLocation(string location) => throw null; + public AzureLocation(string name, string displayName) => throw null; + public string DisplayName { get => throw null; } + public static Azure.Core.AzureLocation EastAsia { get => throw null; } + public static Azure.Core.AzureLocation EastUS { get => throw null; } + public static Azure.Core.AzureLocation EastUS2 { get => throw null; } + public bool Equals(Azure.Core.AzureLocation other) => throw null; + public override bool Equals(object obj) => throw null; + public static Azure.Core.AzureLocation FranceCentral { get => throw null; } + public static Azure.Core.AzureLocation FranceSouth { get => throw null; } + public static Azure.Core.AzureLocation GermanyCentral { get => throw null; } + public static Azure.Core.AzureLocation GermanyNorth { get => throw null; } + public static Azure.Core.AzureLocation GermanyNorthEast { get => throw null; } + public static Azure.Core.AzureLocation GermanyWestCentral { get => throw null; } + public override int GetHashCode() => throw null; + public static Azure.Core.AzureLocation IsraelCentral { get => throw null; } + public static Azure.Core.AzureLocation ItalyNorth { get => throw null; } + public static Azure.Core.AzureLocation JapanEast { get => throw null; } + public static Azure.Core.AzureLocation JapanWest { get => throw null; } + public static Azure.Core.AzureLocation KoreaCentral { get => throw null; } + public static Azure.Core.AzureLocation KoreaSouth { get => throw null; } + public string Name { get => throw null; } + public static Azure.Core.AzureLocation NorthCentralUS { get => throw null; } + public static Azure.Core.AzureLocation NorthEurope { get => throw null; } + public static Azure.Core.AzureLocation NorwayEast { get => throw null; } + public static Azure.Core.AzureLocation NorwayWest { get => throw null; } + public static bool operator ==(Azure.Core.AzureLocation left, Azure.Core.AzureLocation right) => throw null; + public static implicit operator Azure.Core.AzureLocation(string location) => throw null; + public static implicit operator string(Azure.Core.AzureLocation location) => throw null; + public static bool operator !=(Azure.Core.AzureLocation left, Azure.Core.AzureLocation right) => throw null; + public static Azure.Core.AzureLocation PolandCentral { get => throw null; } + public static Azure.Core.AzureLocation QatarCentral { get => throw null; } + public static Azure.Core.AzureLocation SouthAfricaNorth { get => throw null; } + public static Azure.Core.AzureLocation SouthAfricaWest { get => throw null; } + public static Azure.Core.AzureLocation SouthCentralUS { get => throw null; } + public static Azure.Core.AzureLocation SoutheastAsia { get => throw null; } + public static Azure.Core.AzureLocation SouthIndia { get => throw null; } + public static Azure.Core.AzureLocation SwedenCentral { get => throw null; } + public static Azure.Core.AzureLocation SwedenSouth { get => throw null; } + public static Azure.Core.AzureLocation SwitzerlandNorth { get => throw null; } + public static Azure.Core.AzureLocation SwitzerlandWest { get => throw null; } + public override string ToString() => throw null; + public static Azure.Core.AzureLocation UAECentral { get => throw null; } + public static Azure.Core.AzureLocation UAENorth { get => throw null; } + public static Azure.Core.AzureLocation UKSouth { get => throw null; } + public static Azure.Core.AzureLocation UKWest { get => throw null; } + public static Azure.Core.AzureLocation USDoDCentral { get => throw null; } + public static Azure.Core.AzureLocation USDoDEast { get => throw null; } + public static Azure.Core.AzureLocation USGovArizona { get => throw null; } + public static Azure.Core.AzureLocation USGovIowa { get => throw null; } + public static Azure.Core.AzureLocation USGovTexas { get => throw null; } + public static Azure.Core.AzureLocation USGovVirginia { get => throw null; } + public static Azure.Core.AzureLocation WestCentralUS { get => throw null; } + public static Azure.Core.AzureLocation WestEurope { get => throw null; } + public static Azure.Core.AzureLocation WestIndia { get => throw null; } + public static Azure.Core.AzureLocation WestUS { get => throw null; } + public static Azure.Core.AzureLocation WestUS2 { get => throw null; } + public static Azure.Core.AzureLocation WestUS3 { get => throw null; } + } + public abstract class ClientOptions + { + public void AddPolicy(Azure.Core.Pipeline.HttpPipelinePolicy policy, Azure.Core.HttpPipelinePosition position) => throw null; + protected ClientOptions() => throw null; + protected ClientOptions(Azure.Core.DiagnosticsOptions diagnostics) => throw null; + public static Azure.Core.ClientOptions Default { get => throw null; } + public Azure.Core.DiagnosticsOptions Diagnostics { get => throw null; } + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + public Azure.Core.RetryOptions Retry { get => throw null; } + public Azure.Core.Pipeline.HttpPipelinePolicy RetryPolicy { get => throw null; set { } } + public override string ToString() => throw null; + public Azure.Core.Pipeline.HttpPipelineTransport Transport { get => throw null; set { } } + } + public struct ContentType : System.IEquatable, System.IEquatable + { + public static Azure.Core.ContentType ApplicationJson { get => throw null; } + public static Azure.Core.ContentType ApplicationOctetStream { get => throw null; } + public ContentType(string contentType) => throw null; + public bool Equals(Azure.Core.ContentType other) => throw null; + public bool Equals(string other) => throw null; + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + public static bool operator ==(Azure.Core.ContentType left, Azure.Core.ContentType right) => throw null; + public static implicit operator Azure.Core.ContentType(string contentType) => throw null; + public static bool operator !=(Azure.Core.ContentType left, Azure.Core.ContentType right) => throw null; + public static Azure.Core.ContentType TextPlain { get => throw null; } + public override string ToString() => throw null; + } + namespace Cryptography + { + public interface IKeyEncryptionKey + { + string KeyId { get; } + byte[] UnwrapKey(string algorithm, System.ReadOnlyMemory encryptedKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + System.Threading.Tasks.Task UnwrapKeyAsync(string algorithm, System.ReadOnlyMemory encryptedKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + byte[] WrapKey(string algorithm, System.ReadOnlyMemory key, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + System.Threading.Tasks.Task WrapKeyAsync(string algorithm, System.ReadOnlyMemory key, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + } + public interface IKeyEncryptionKeyResolver + { + Azure.Core.Cryptography.IKeyEncryptionKey Resolve(string keyId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + System.Threading.Tasks.Task ResolveAsync(string keyId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + } + } + public abstract class DelayStrategy + { + public static Azure.Core.DelayStrategy CreateExponentialDelayStrategy(System.TimeSpan? initialDelay = default(System.TimeSpan?), System.TimeSpan? maxDelay = default(System.TimeSpan?)) => throw null; + public static Azure.Core.DelayStrategy CreateFixedDelayStrategy(System.TimeSpan? delay = default(System.TimeSpan?)) => throw null; + protected DelayStrategy(System.TimeSpan? maxDelay = default(System.TimeSpan?), double jitterFactor = default(double)) => throw null; + public System.TimeSpan GetNextDelay(Azure.Response response, int retryNumber) => throw null; + protected abstract System.TimeSpan GetNextDelayCore(Azure.Response response, int retryNumber); + protected static System.TimeSpan Max(System.TimeSpan val1, System.TimeSpan val2) => throw null; + protected static System.TimeSpan Min(System.TimeSpan val1, System.TimeSpan val2) => throw null; + } + public static class DelegatedTokenCredential + { + public static Azure.Core.TokenCredential Create(System.Func getToken, System.Func> getTokenAsync) => throw null; + public static Azure.Core.TokenCredential Create(System.Func getToken) => throw null; + } + namespace Diagnostics + { + public class AzureEventSourceListener : System.Diagnostics.Tracing.EventListener + { + public static Azure.Core.Diagnostics.AzureEventSourceListener CreateConsoleLogger(System.Diagnostics.Tracing.EventLevel level = default(System.Diagnostics.Tracing.EventLevel)) => throw null; + public static Azure.Core.Diagnostics.AzureEventSourceListener CreateTraceLogger(System.Diagnostics.Tracing.EventLevel level = default(System.Diagnostics.Tracing.EventLevel)) => throw null; + public AzureEventSourceListener(System.Action log, System.Diagnostics.Tracing.EventLevel level) => throw null; + protected override sealed void OnEventSourceCreated(System.Diagnostics.Tracing.EventSource eventSource) => throw null; + protected override sealed void OnEventWritten(System.Diagnostics.Tracing.EventWrittenEventArgs eventData) => throw null; + public const string TraitName = default; + public const string TraitValue = default; + } + } + public class DiagnosticsOptions + { + public string ApplicationId { get => throw null; set { } } + protected DiagnosticsOptions() => throw null; + public static string DefaultApplicationId { get => throw null; set { } } + public bool IsDistributedTracingEnabled { get => throw null; set { } } + public bool IsLoggingContentEnabled { get => throw null; set { } } + public bool IsLoggingEnabled { get => throw null; set { } } + public bool IsTelemetryEnabled { get => throw null; set { } } + public int LoggedContentSizeLimit { get => throw null; set { } } + public System.Collections.Generic.IList LoggedHeaderNames { get => throw null; } + public System.Collections.Generic.IList LoggedQueryParameters { get => throw null; } + } + namespace Extensions + { + public interface IAzureClientBuilder where TOptions : class + { + } + public interface IAzureClientFactoryBuilder + { + Azure.Core.Extensions.IAzureClientBuilder RegisterClientFactory(System.Func clientFactory) where TOptions : class; + } + public interface IAzureClientFactoryBuilderWithConfiguration : Azure.Core.Extensions.IAzureClientFactoryBuilder + { + Azure.Core.Extensions.IAzureClientBuilder RegisterClientFactory(TConfiguration configuration) where TOptions : class; + } + public interface IAzureClientFactoryBuilderWithCredential + { + Azure.Core.Extensions.IAzureClientBuilder RegisterClientFactory(System.Func clientFactory, bool requiresCredential = default(bool)) where TOptions : class; + } + } + namespace GeoJson + { + public struct GeoArray : System.Collections.Generic.IEnumerable, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection, System.Collections.Generic.IReadOnlyList + { + public int Count { get => throw null; } + public struct Enumerator : System.IDisposable, System.Collections.Generic.IEnumerator, System.Collections.IEnumerator + { + object System.Collections.IEnumerator.Current { get => throw null; } + public T Current { get => throw null; } + public void Dispose() => throw null; + public bool MoveNext() => throw null; + public void Reset() => throw null; + } + public Azure.Core.GeoJson.GeoArray.Enumerator GetEnumerator() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + System.Collections.Generic.IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator() => throw null; + public T this[int index] { get => throw null; } + } + public sealed class GeoBoundingBox : System.IEquatable + { + public GeoBoundingBox(double west, double south, double east, double north) => throw null; + public GeoBoundingBox(double west, double south, double east, double north, double? minAltitude, double? maxAltitude) => throw null; + public double East { get => throw null; } + public bool Equals(Azure.Core.GeoJson.GeoBoundingBox other) => throw null; + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + public double? MaxAltitude { get => throw null; } + public double? MinAltitude { get => throw null; } + public double North { get => throw null; } + public double South { get => throw null; } + public double this[int index] { get => throw null; } + public override string ToString() => throw null; + public double West { get => throw null; } + } + public sealed class GeoCollection : Azure.Core.GeoJson.GeoObject, System.Collections.Generic.IEnumerable, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection, System.Collections.Generic.IReadOnlyList + { + public int Count { get => throw null; } + public GeoCollection(System.Collections.Generic.IEnumerable geometries) => throw null; + public GeoCollection(System.Collections.Generic.IEnumerable geometries, Azure.Core.GeoJson.GeoBoundingBox boundingBox, System.Collections.Generic.IReadOnlyDictionary customProperties) => throw null; + public System.Collections.Generic.IEnumerator GetEnumerator() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public Azure.Core.GeoJson.GeoObject this[int index] { get => throw null; } + public override Azure.Core.GeoJson.GeoObjectType Type { get => throw null; } + } + public sealed class GeoLinearRing + { + public Azure.Core.GeoJson.GeoArray Coordinates { get => throw null; } + public GeoLinearRing(System.Collections.Generic.IEnumerable coordinates) => throw null; + } + public sealed class GeoLineString : Azure.Core.GeoJson.GeoObject + { + public Azure.Core.GeoJson.GeoArray Coordinates { get => throw null; } + public GeoLineString(System.Collections.Generic.IEnumerable coordinates) => throw null; + public GeoLineString(System.Collections.Generic.IEnumerable coordinates, Azure.Core.GeoJson.GeoBoundingBox boundingBox, System.Collections.Generic.IReadOnlyDictionary customProperties) => throw null; + public override Azure.Core.GeoJson.GeoObjectType Type { get => throw null; } + } + public sealed class GeoLineStringCollection : Azure.Core.GeoJson.GeoObject, System.Collections.Generic.IEnumerable, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection, System.Collections.Generic.IReadOnlyList + { + public Azure.Core.GeoJson.GeoArray> Coordinates { get => throw null; } + public int Count { get => throw null; } + public GeoLineStringCollection(System.Collections.Generic.IEnumerable lines) => throw null; + public GeoLineStringCollection(System.Collections.Generic.IEnumerable lines, Azure.Core.GeoJson.GeoBoundingBox boundingBox, System.Collections.Generic.IReadOnlyDictionary customProperties) => throw null; + public System.Collections.Generic.IEnumerator GetEnumerator() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public Azure.Core.GeoJson.GeoLineString this[int index] { get => throw null; } + public override Azure.Core.GeoJson.GeoObjectType Type { get => throw null; } + } + public abstract class GeoObject + { + public Azure.Core.GeoJson.GeoBoundingBox BoundingBox { get => throw null; } + public static Azure.Core.GeoJson.GeoObject Parse(string json) => throw null; + public override string ToString() => throw null; + public bool TryGetCustomProperty(string name, out object value) => throw null; + public abstract Azure.Core.GeoJson.GeoObjectType Type { get; } + } + public enum GeoObjectType + { + Point = 0, + MultiPoint = 1, + Polygon = 2, + MultiPolygon = 3, + LineString = 4, + MultiLineString = 5, + GeometryCollection = 6, + } + public sealed class GeoPoint : Azure.Core.GeoJson.GeoObject + { + public Azure.Core.GeoJson.GeoPosition Coordinates { get => throw null; } + public GeoPoint(double longitude, double latitude) => throw null; + public GeoPoint(double longitude, double latitude, double? altitude) => throw null; + public GeoPoint(Azure.Core.GeoJson.GeoPosition position) => throw null; + public GeoPoint(Azure.Core.GeoJson.GeoPosition position, Azure.Core.GeoJson.GeoBoundingBox boundingBox, System.Collections.Generic.IReadOnlyDictionary customProperties) => throw null; + public override Azure.Core.GeoJson.GeoObjectType Type { get => throw null; } + } + public sealed class GeoPointCollection : Azure.Core.GeoJson.GeoObject, System.Collections.Generic.IEnumerable, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection, System.Collections.Generic.IReadOnlyList + { + public Azure.Core.GeoJson.GeoArray Coordinates { get => throw null; } + public int Count { get => throw null; } + public GeoPointCollection(System.Collections.Generic.IEnumerable points) => throw null; + public GeoPointCollection(System.Collections.Generic.IEnumerable points, Azure.Core.GeoJson.GeoBoundingBox boundingBox, System.Collections.Generic.IReadOnlyDictionary customProperties) => throw null; + public System.Collections.Generic.IEnumerator GetEnumerator() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public Azure.Core.GeoJson.GeoPoint this[int index] { get => throw null; } + public override Azure.Core.GeoJson.GeoObjectType Type { get => throw null; } + } + public sealed class GeoPolygon : Azure.Core.GeoJson.GeoObject + { + public Azure.Core.GeoJson.GeoArray> Coordinates { get => throw null; } + public GeoPolygon(System.Collections.Generic.IEnumerable positions) => throw null; + public GeoPolygon(System.Collections.Generic.IEnumerable rings) => throw null; + public GeoPolygon(System.Collections.Generic.IEnumerable rings, Azure.Core.GeoJson.GeoBoundingBox boundingBox, System.Collections.Generic.IReadOnlyDictionary customProperties) => throw null; + public Azure.Core.GeoJson.GeoLinearRing OuterRing { get => throw null; } + public System.Collections.Generic.IReadOnlyList Rings { get => throw null; } + public override Azure.Core.GeoJson.GeoObjectType Type { get => throw null; } + } + public sealed class GeoPolygonCollection : Azure.Core.GeoJson.GeoObject, System.Collections.Generic.IEnumerable, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection, System.Collections.Generic.IReadOnlyList + { + public Azure.Core.GeoJson.GeoArray>> Coordinates { get => throw null; } + public int Count { get => throw null; } + public GeoPolygonCollection(System.Collections.Generic.IEnumerable polygons) => throw null; + public GeoPolygonCollection(System.Collections.Generic.IEnumerable polygons, Azure.Core.GeoJson.GeoBoundingBox boundingBox, System.Collections.Generic.IReadOnlyDictionary customProperties) => throw null; + public System.Collections.Generic.IEnumerator GetEnumerator() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public Azure.Core.GeoJson.GeoPolygon this[int index] { get => throw null; } + public override Azure.Core.GeoJson.GeoObjectType Type { get => throw null; } + } + public struct GeoPosition : System.IEquatable + { + public double? Altitude { get => throw null; } + public int Count { get => throw null; } + public GeoPosition(double longitude, double latitude) => throw null; + public GeoPosition(double longitude, double latitude, double? altitude) => throw null; + public bool Equals(Azure.Core.GeoJson.GeoPosition other) => throw null; + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + public double Latitude { get => throw null; } + public double Longitude { get => throw null; } + public static bool operator ==(Azure.Core.GeoJson.GeoPosition left, Azure.Core.GeoJson.GeoPosition right) => throw null; + public static bool operator !=(Azure.Core.GeoJson.GeoPosition left, Azure.Core.GeoJson.GeoPosition right) => throw null; + public double this[int index] { get => throw null; } + public override string ToString() => throw null; + } + } + public struct HttpHeader : System.IEquatable + { + public static class Common + { + public static readonly Azure.Core.HttpHeader FormUrlEncodedContentType; + public static readonly Azure.Core.HttpHeader JsonAccept; + public static readonly Azure.Core.HttpHeader JsonContentType; + public static readonly Azure.Core.HttpHeader OctetStreamContentType; + } + public HttpHeader(string name, string value) => throw null; + public override bool Equals(object obj) => throw null; + public bool Equals(Azure.Core.HttpHeader other) => throw null; + public override int GetHashCode() => throw null; + public string Name { get => throw null; } + public static class Names + { + public static string Accept { get => throw null; } + public static string Authorization { get => throw null; } + public static string ContentDisposition { get => throw null; } + public static string ContentLength { get => throw null; } + public static string ContentType { get => throw null; } + public static string Date { get => throw null; } + public static string ETag { get => throw null; } + public static string Host { get => throw null; } + public static string IfMatch { get => throw null; } + public static string IfModifiedSince { get => throw null; } + public static string IfNoneMatch { get => throw null; } + public static string IfUnmodifiedSince { get => throw null; } + public static string Prefer { get => throw null; } + public static string Range { get => throw null; } + public static string Referer { get => throw null; } + public static string UserAgent { get => throw null; } + public static string WwwAuthenticate { get => throw null; } + public static string XMsDate { get => throw null; } + public static string XMsRange { get => throw null; } + public static string XMsRequestId { get => throw null; } + } + public override string ToString() => throw null; + public string Value { get => throw null; } + } + public sealed class HttpMessage : System.IDisposable + { + public bool BufferResponse { get => throw null; set { } } + public System.Threading.CancellationToken CancellationToken { get => throw null; } + public HttpMessage(Azure.Core.Request request, Azure.Core.ResponseClassifier responseClassifier) => throw null; + public void Dispose() => throw null; + public System.IO.Stream ExtractResponseContent() => throw null; + public bool HasResponse { get => throw null; } + public System.TimeSpan? NetworkTimeout { get => throw null; set { } } + public Azure.Core.MessageProcessingContext ProcessingContext { get => throw null; } + public Azure.Core.Request Request { get => throw null; } + public Azure.Response Response { get => throw null; set { } } + public Azure.Core.ResponseClassifier ResponseClassifier { get => throw null; set { } } + public void SetProperty(string name, object value) => throw null; + public void SetProperty(System.Type type, object value) => throw null; + public bool TryGetProperty(string name, out object value) => throw null; + public bool TryGetProperty(System.Type type, out object value) => throw null; + } + public enum HttpPipelinePosition + { + PerCall = 0, + PerRetry = 1, + BeforeTransport = 2, + } + public struct MessageProcessingContext + { + public int RetryNumber { get => throw null; set { } } + public System.DateTimeOffset StartTime { get => throw null; } + } + public static class MultipartResponse + { + public static Azure.Response[] Parse(Azure.Response response, bool expectCrLf, System.Threading.CancellationToken cancellationToken) => throw null; + public static System.Threading.Tasks.Task ParseAsync(Azure.Response response, bool expectCrLf, System.Threading.CancellationToken cancellationToken) => throw null; + } + namespace Pipeline + { + public class BearerTokenAuthenticationPolicy : Azure.Core.Pipeline.HttpPipelinePolicy + { + protected void AuthenticateAndAuthorizeRequest(Azure.Core.HttpMessage message, Azure.Core.TokenRequestContext context) => throw null; + protected System.Threading.Tasks.ValueTask AuthenticateAndAuthorizeRequestAsync(Azure.Core.HttpMessage message, Azure.Core.TokenRequestContext context) => throw null; + protected virtual void AuthorizeRequest(Azure.Core.HttpMessage message) => throw null; + protected virtual System.Threading.Tasks.ValueTask AuthorizeRequestAsync(Azure.Core.HttpMessage message) => throw null; + protected virtual bool AuthorizeRequestOnChallenge(Azure.Core.HttpMessage message) => throw null; + protected virtual System.Threading.Tasks.ValueTask AuthorizeRequestOnChallengeAsync(Azure.Core.HttpMessage message) => throw null; + public BearerTokenAuthenticationPolicy(Azure.Core.TokenCredential credential, string scope) => throw null; + public BearerTokenAuthenticationPolicy(Azure.Core.TokenCredential credential, System.Collections.Generic.IEnumerable scopes) => throw null; + public override void Process(Azure.Core.HttpMessage message, System.ReadOnlyMemory pipeline) => throw null; + public override System.Threading.Tasks.ValueTask ProcessAsync(Azure.Core.HttpMessage message, System.ReadOnlyMemory pipeline) => throw null; + } + public sealed class DisposableHttpPipeline : Azure.Core.Pipeline.HttpPipeline, System.IDisposable + { + public void Dispose() => throw null; + internal DisposableHttpPipeline() : base(default(Azure.Core.Pipeline.HttpPipelineTransport), default(Azure.Core.Pipeline.HttpPipelinePolicy[]), default(Azure.Core.ResponseClassifier)) { } + } + public class HttpClientTransport : Azure.Core.Pipeline.HttpPipelineTransport, System.IDisposable + { + public override sealed Azure.Core.Request CreateRequest() => throw null; + public HttpClientTransport() => throw null; + public HttpClientTransport(System.Net.Http.HttpMessageHandler messageHandler) => throw null; + public HttpClientTransport(System.Net.Http.HttpClient client) => throw null; + public void Dispose() => throw null; + public override void Process(Azure.Core.HttpMessage message) => throw null; + public override System.Threading.Tasks.ValueTask ProcessAsync(Azure.Core.HttpMessage message) => throw null; + public static readonly Azure.Core.Pipeline.HttpClientTransport Shared; + } + public class HttpPipeline + { + public static System.IDisposable CreateClientRequestIdScope(string clientRequestId) => throw null; + public static System.IDisposable CreateHttpMessagePropertiesScope(System.Collections.Generic.IDictionary messageProperties) => throw null; + public Azure.Core.HttpMessage CreateMessage() => throw null; + public Azure.Core.HttpMessage CreateMessage(Azure.RequestContext context) => throw null; + public Azure.Core.HttpMessage CreateMessage(Azure.RequestContext context, Azure.Core.ResponseClassifier classifier = default(Azure.Core.ResponseClassifier)) => throw null; + public Azure.Core.Request CreateRequest() => throw null; + public HttpPipeline(Azure.Core.Pipeline.HttpPipelineTransport transport, Azure.Core.Pipeline.HttpPipelinePolicy[] policies = default(Azure.Core.Pipeline.HttpPipelinePolicy[]), Azure.Core.ResponseClassifier responseClassifier = default(Azure.Core.ResponseClassifier)) => throw null; + public Azure.Core.ResponseClassifier ResponseClassifier { get => throw null; } + public void Send(Azure.Core.HttpMessage message, System.Threading.CancellationToken cancellationToken) => throw null; + public System.Threading.Tasks.ValueTask SendAsync(Azure.Core.HttpMessage message, System.Threading.CancellationToken cancellationToken) => throw null; + public Azure.Response SendRequest(Azure.Core.Request request, System.Threading.CancellationToken cancellationToken) => throw null; + public System.Threading.Tasks.ValueTask SendRequestAsync(Azure.Core.Request request, System.Threading.CancellationToken cancellationToken) => throw null; + } + public static class HttpPipelineBuilder + { + public static Azure.Core.Pipeline.HttpPipeline Build(Azure.Core.ClientOptions options, params Azure.Core.Pipeline.HttpPipelinePolicy[] perRetryPolicies) => throw null; + public static Azure.Core.Pipeline.HttpPipeline Build(Azure.Core.ClientOptions options, Azure.Core.Pipeline.HttpPipelinePolicy[] perCallPolicies, Azure.Core.Pipeline.HttpPipelinePolicy[] perRetryPolicies, Azure.Core.ResponseClassifier responseClassifier) => throw null; + public static Azure.Core.Pipeline.DisposableHttpPipeline Build(Azure.Core.ClientOptions options, Azure.Core.Pipeline.HttpPipelinePolicy[] perCallPolicies, Azure.Core.Pipeline.HttpPipelinePolicy[] perRetryPolicies, Azure.Core.Pipeline.HttpPipelineTransportOptions transportOptions, Azure.Core.ResponseClassifier responseClassifier) => throw null; + public static Azure.Core.Pipeline.HttpPipeline Build(Azure.Core.Pipeline.HttpPipelineOptions options) => throw null; + public static Azure.Core.Pipeline.DisposableHttpPipeline Build(Azure.Core.Pipeline.HttpPipelineOptions options, Azure.Core.Pipeline.HttpPipelineTransportOptions transportOptions) => throw null; + } + public class HttpPipelineOptions + { + public Azure.Core.ClientOptions ClientOptions { get => throw null; } + public HttpPipelineOptions(Azure.Core.ClientOptions options) => throw null; + public System.Collections.Generic.IList PerCallPolicies { get => throw null; } + public System.Collections.Generic.IList PerRetryPolicies { get => throw null; } + public Azure.Core.RequestFailedDetailsParser RequestFailedDetailsParser { get => throw null; set { } } + public Azure.Core.ResponseClassifier ResponseClassifier { get => throw null; set { } } + } + public abstract class HttpPipelinePolicy + { + protected HttpPipelinePolicy() => throw null; + public abstract void Process(Azure.Core.HttpMessage message, System.ReadOnlyMemory pipeline); + public abstract System.Threading.Tasks.ValueTask ProcessAsync(Azure.Core.HttpMessage message, System.ReadOnlyMemory pipeline); + protected static void ProcessNext(Azure.Core.HttpMessage message, System.ReadOnlyMemory pipeline) => throw null; + protected static System.Threading.Tasks.ValueTask ProcessNextAsync(Azure.Core.HttpMessage message, System.ReadOnlyMemory pipeline) => throw null; + } + public abstract class HttpPipelineSynchronousPolicy : Azure.Core.Pipeline.HttpPipelinePolicy + { + protected HttpPipelineSynchronousPolicy() => throw null; + public virtual void OnReceivedResponse(Azure.Core.HttpMessage message) => throw null; + public virtual void OnSendingRequest(Azure.Core.HttpMessage message) => throw null; + public override void Process(Azure.Core.HttpMessage message, System.ReadOnlyMemory pipeline) => throw null; + public override System.Threading.Tasks.ValueTask ProcessAsync(Azure.Core.HttpMessage message, System.ReadOnlyMemory pipeline) => throw null; + } + public abstract class HttpPipelineTransport + { + public abstract Azure.Core.Request CreateRequest(); + protected HttpPipelineTransport() => throw null; + public abstract void Process(Azure.Core.HttpMessage message); + public abstract System.Threading.Tasks.ValueTask ProcessAsync(Azure.Core.HttpMessage message); + } + public class HttpPipelineTransportOptions + { + public System.Collections.Generic.IList ClientCertificates { get => throw null; } + public HttpPipelineTransportOptions() => throw null; + public bool IsClientRedirectEnabled { get => throw null; set { } } + public System.Func ServerCertificateCustomValidationCallback { get => throw null; set { } } + } + public sealed class RedirectPolicy : Azure.Core.Pipeline.HttpPipelinePolicy + { + public override void Process(Azure.Core.HttpMessage message, System.ReadOnlyMemory pipeline) => throw null; + public override System.Threading.Tasks.ValueTask ProcessAsync(Azure.Core.HttpMessage message, System.ReadOnlyMemory pipeline) => throw null; + public static void SetAllowAutoRedirect(Azure.Core.HttpMessage message, bool allowAutoRedirect) => throw null; + } + public class RetryPolicy : Azure.Core.Pipeline.HttpPipelinePolicy + { + public RetryPolicy(int maxRetries = default(int), Azure.Core.DelayStrategy delayStrategy = default(Azure.Core.DelayStrategy)) => throw null; + protected virtual void OnRequestSent(Azure.Core.HttpMessage message) => throw null; + protected virtual System.Threading.Tasks.ValueTask OnRequestSentAsync(Azure.Core.HttpMessage message) => throw null; + protected virtual void OnSendingRequest(Azure.Core.HttpMessage message) => throw null; + protected virtual System.Threading.Tasks.ValueTask OnSendingRequestAsync(Azure.Core.HttpMessage message) => throw null; + public override void Process(Azure.Core.HttpMessage message, System.ReadOnlyMemory pipeline) => throw null; + public override System.Threading.Tasks.ValueTask ProcessAsync(Azure.Core.HttpMessage message, System.ReadOnlyMemory pipeline) => throw null; + protected virtual bool ShouldRetry(Azure.Core.HttpMessage message, System.Exception exception) => throw null; + protected virtual System.Threading.Tasks.ValueTask ShouldRetryAsync(Azure.Core.HttpMessage message, System.Exception exception) => throw null; + } + public class ServerCertificateCustomValidationArgs + { + public System.Security.Cryptography.X509Certificates.X509Certificate2 Certificate { get => throw null; } + public System.Security.Cryptography.X509Certificates.X509Chain CertificateAuthorityChain { get => throw null; } + public ServerCertificateCustomValidationArgs(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, System.Security.Cryptography.X509Certificates.X509Chain certificateAuthorityChain, System.Net.Security.SslPolicyErrors sslPolicyErrors) => throw null; + public System.Net.Security.SslPolicyErrors SslPolicyErrors { get => throw null; } + } + } + public struct RehydrationToken : System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel, System.ClientModel.Primitives.IPersistableModel + { + Azure.Core.RehydrationToken System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) => throw null; + Azure.Core.RehydrationToken System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) => throw null; + object System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) => throw null; + object System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) => throw null; + string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) => throw null; + string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) => throw null; + public string Id { get => throw null; } + void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) => throw null; + System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) => throw null; + System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) => throw null; + void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) => throw null; + } + public abstract class Request : System.IDisposable + { + protected abstract void AddHeader(string name, string value); + public abstract string ClientRequestId { get; set; } + protected abstract bool ContainsHeader(string name); + public virtual Azure.Core.RequestContent Content { get => throw null; set { } } + protected Request() => throw null; + public abstract void Dispose(); + protected abstract System.Collections.Generic.IEnumerable EnumerateHeaders(); + public Azure.Core.RequestHeaders Headers { get => throw null; } + public virtual Azure.Core.RequestMethod Method { get => throw null; set { } } + protected abstract bool RemoveHeader(string name); + protected virtual void SetHeader(string name, string value) => throw null; + protected abstract bool TryGetHeader(string name, out string value); + protected abstract bool TryGetHeaderValues(string name, out System.Collections.Generic.IEnumerable values); + public virtual Azure.Core.RequestUriBuilder Uri { get => throw null; set { } } + } + public abstract class RequestContent : System.IDisposable + { + public static Azure.Core.RequestContent Create(System.IO.Stream stream) => throw null; + public static Azure.Core.RequestContent Create(byte[] bytes) => throw null; + public static Azure.Core.RequestContent Create(byte[] bytes, int index, int length) => throw null; + public static Azure.Core.RequestContent Create(System.ReadOnlyMemory bytes) => throw null; + public static Azure.Core.RequestContent Create(System.Buffers.ReadOnlySequence bytes) => throw null; + public static Azure.Core.RequestContent Create(string content) => throw null; + public static Azure.Core.RequestContent Create(System.BinaryData content) => throw null; + public static Azure.Core.RequestContent Create(Azure.Core.Serialization.DynamicData content) => throw null; + public static Azure.Core.RequestContent Create(object serializable) => throw null; + public static Azure.Core.RequestContent Create(object serializable, Azure.Core.Serialization.ObjectSerializer serializer) => throw null; + public static Azure.Core.RequestContent Create(object serializable, Azure.Core.Serialization.JsonPropertyNames propertyNameFormat, string dateTimeFormat = default(string)) => throw null; + protected RequestContent() => throw null; + public abstract void Dispose(); + public static implicit operator Azure.Core.RequestContent(string content) => throw null; + public static implicit operator Azure.Core.RequestContent(System.BinaryData content) => throw null; + public static implicit operator Azure.Core.RequestContent(Azure.Core.Serialization.DynamicData content) => throw null; + public abstract bool TryComputeLength(out long length); + public abstract void WriteTo(System.IO.Stream stream, System.Threading.CancellationToken cancellation); + public abstract System.Threading.Tasks.Task WriteToAsync(System.IO.Stream stream, System.Threading.CancellationToken cancellation); + } + public abstract class RequestFailedDetailsParser + { + protected RequestFailedDetailsParser() => throw null; + public abstract bool TryParse(Azure.Response response, out Azure.ResponseError error, out System.Collections.Generic.IDictionary data); + } + public struct RequestHeaders : System.Collections.Generic.IEnumerable, System.Collections.IEnumerable + { + public void Add(Azure.Core.HttpHeader header) => throw null; + public void Add(string name, string value) => throw null; + public bool Contains(string name) => throw null; + public System.Collections.Generic.IEnumerator GetEnumerator() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public bool Remove(string name) => throw null; + public void SetValue(string name, string value) => throw null; + public bool TryGetValue(string name, out string value) => throw null; + public bool TryGetValues(string name, out System.Collections.Generic.IEnumerable values) => throw null; + } + public struct RequestMethod : System.IEquatable + { + public RequestMethod(string method) => throw null; + public static Azure.Core.RequestMethod Delete { get => throw null; } + public bool Equals(Azure.Core.RequestMethod other) => throw null; + public override bool Equals(object obj) => throw null; + public static Azure.Core.RequestMethod Get { get => throw null; } + public override int GetHashCode() => throw null; + public static Azure.Core.RequestMethod Head { get => throw null; } + public string Method { get => throw null; } + public static bool operator ==(Azure.Core.RequestMethod left, Azure.Core.RequestMethod right) => throw null; + public static bool operator !=(Azure.Core.RequestMethod left, Azure.Core.RequestMethod right) => throw null; + public static Azure.Core.RequestMethod Options { get => throw null; } + public static Azure.Core.RequestMethod Parse(string method) => throw null; + public static Azure.Core.RequestMethod Patch { get => throw null; } + public static Azure.Core.RequestMethod Post { get => throw null; } + public static Azure.Core.RequestMethod Put { get => throw null; } + public override string ToString() => throw null; + public static Azure.Core.RequestMethod Trace { get => throw null; } + } + public class RequestUriBuilder + { + public void AppendPath(string value) => throw null; + public void AppendPath(string value, bool escape) => throw null; + public void AppendPath(System.ReadOnlySpan value, bool escape) => throw null; + public void AppendQuery(string name, string value) => throw null; + public void AppendQuery(string name, string value, bool escapeValue) => throw null; + public void AppendQuery(System.ReadOnlySpan name, System.ReadOnlySpan value, bool escapeValue) => throw null; + public RequestUriBuilder() => throw null; + protected bool HasPath { get => throw null; } + protected bool HasQuery { get => throw null; } + public string Host { get => throw null; set { } } + public string Path { get => throw null; set { } } + public string PathAndQuery { get => throw null; } + public int Port { get => throw null; set { } } + public string Query { get => throw null; set { } } + public void Reset(System.Uri value) => throw null; + public string Scheme { get => throw null; set { } } + public override string ToString() => throw null; + public System.Uri ToUri() => throw null; + } + public sealed class ResourceIdentifier : System.IComparable, System.IEquatable + { + public Azure.Core.ResourceIdentifier AppendChildResource(string childResourceType, string childResourceName) => throw null; + public Azure.Core.ResourceIdentifier AppendProviderResource(string providerNamespace, string resourceType, string resourceName) => throw null; + public int CompareTo(Azure.Core.ResourceIdentifier other) => throw null; + public ResourceIdentifier(string resourceId) => throw null; + public bool Equals(Azure.Core.ResourceIdentifier other) => throw null; + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + public Azure.Core.AzureLocation? Location { get => throw null; } + public string Name { get => throw null; } + public static bool operator ==(Azure.Core.ResourceIdentifier left, Azure.Core.ResourceIdentifier right) => throw null; + public static bool operator >(Azure.Core.ResourceIdentifier left, Azure.Core.ResourceIdentifier right) => throw null; + public static bool operator >=(Azure.Core.ResourceIdentifier left, Azure.Core.ResourceIdentifier right) => throw null; + public static implicit operator string(Azure.Core.ResourceIdentifier id) => throw null; + public static bool operator !=(Azure.Core.ResourceIdentifier left, Azure.Core.ResourceIdentifier right) => throw null; + public static bool operator <(Azure.Core.ResourceIdentifier left, Azure.Core.ResourceIdentifier right) => throw null; + public static bool operator <=(Azure.Core.ResourceIdentifier left, Azure.Core.ResourceIdentifier right) => throw null; + public Azure.Core.ResourceIdentifier Parent { get => throw null; } + public static Azure.Core.ResourceIdentifier Parse(string input) => throw null; + public string Provider { get => throw null; } + public string ResourceGroupName { get => throw null; } + public Azure.Core.ResourceType ResourceType { get => throw null; } + public static readonly Azure.Core.ResourceIdentifier Root; + public string SubscriptionId { get => throw null; } + public override string ToString() => throw null; + public static bool TryParse(string input, out Azure.Core.ResourceIdentifier result) => throw null; + } + public struct ResourceType : System.IEquatable + { + public ResourceType(string resourceType) => throw null; + public bool Equals(Azure.Core.ResourceType other) => throw null; + public override bool Equals(object other) => throw null; + public override int GetHashCode() => throw null; + public string GetLastType() => throw null; + public string Namespace { get => throw null; } + public static bool operator ==(Azure.Core.ResourceType left, Azure.Core.ResourceType right) => throw null; + public static implicit operator Azure.Core.ResourceType(string resourceType) => throw null; + public static implicit operator string(Azure.Core.ResourceType resourceType) => throw null; + public static bool operator !=(Azure.Core.ResourceType left, Azure.Core.ResourceType right) => throw null; + public override string ToString() => throw null; + public string Type { get => throw null; } + } + public abstract class ResponseClassificationHandler + { + protected ResponseClassificationHandler() => throw null; + public abstract bool TryClassify(Azure.Core.HttpMessage message, out bool isError); + } + public class ResponseClassifier + { + public ResponseClassifier() => throw null; + public virtual bool IsErrorResponse(Azure.Core.HttpMessage message) => throw null; + public virtual bool IsRetriable(Azure.Core.HttpMessage message, System.Exception exception) => throw null; + public virtual bool IsRetriableException(System.Exception exception) => throw null; + public virtual bool IsRetriableResponse(Azure.Core.HttpMessage message) => throw null; + } + public struct ResponseHeaders : System.Collections.Generic.IEnumerable, System.Collections.IEnumerable + { + public bool Contains(string name) => throw null; + public int? ContentLength { get => throw null; } + public long? ContentLengthLong { get => throw null; } + public string ContentType { get => throw null; } + public System.DateTimeOffset? Date { get => throw null; } + public Azure.ETag? ETag { get => throw null; } + public System.Collections.Generic.IEnumerator GetEnumerator() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public string RequestId { get => throw null; } + public bool TryGetValue(string name, out string value) => throw null; + public bool TryGetValues(string name, out System.Collections.Generic.IEnumerable values) => throw null; + } + public enum RetryMode + { + Fixed = 0, + Exponential = 1, + } + public class RetryOptions + { + public System.TimeSpan Delay { get => throw null; set { } } + public System.TimeSpan MaxDelay { get => throw null; set { } } + public int MaxRetries { get => throw null; set { } } + public Azure.Core.RetryMode Mode { get => throw null; set { } } + public System.TimeSpan NetworkTimeout { get => throw null; set { } } + } + namespace Serialization + { + public sealed class DynamicData : System.IDisposable, System.Dynamic.IDynamicMetaObjectProvider + { + public void Dispose() => throw null; + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + System.Dynamic.DynamicMetaObject System.Dynamic.IDynamicMetaObjectProvider.GetMetaObject(System.Linq.Expressions.Expression parameter) => throw null; + public static bool operator ==(Azure.Core.Serialization.DynamicData left, object right) => throw null; + public static explicit operator System.DateTime(Azure.Core.Serialization.DynamicData value) => throw null; + public static explicit operator System.DateTimeOffset(Azure.Core.Serialization.DynamicData value) => throw null; + public static explicit operator System.Guid(Azure.Core.Serialization.DynamicData value) => throw null; + public static implicit operator bool(Azure.Core.Serialization.DynamicData value) => throw null; + public static implicit operator string(Azure.Core.Serialization.DynamicData value) => throw null; + public static implicit operator byte(Azure.Core.Serialization.DynamicData value) => throw null; + public static implicit operator sbyte(Azure.Core.Serialization.DynamicData value) => throw null; + public static implicit operator short(Azure.Core.Serialization.DynamicData value) => throw null; + public static implicit operator ushort(Azure.Core.Serialization.DynamicData value) => throw null; + public static implicit operator int(Azure.Core.Serialization.DynamicData value) => throw null; + public static implicit operator uint(Azure.Core.Serialization.DynamicData value) => throw null; + public static implicit operator long(Azure.Core.Serialization.DynamicData value) => throw null; + public static implicit operator ulong(Azure.Core.Serialization.DynamicData value) => throw null; + public static implicit operator float(Azure.Core.Serialization.DynamicData value) => throw null; + public static implicit operator double(Azure.Core.Serialization.DynamicData value) => throw null; + public static implicit operator decimal(Azure.Core.Serialization.DynamicData value) => throw null; + public static bool operator !=(Azure.Core.Serialization.DynamicData left, object right) => throw null; + public override string ToString() => throw null; + } + public interface IMemberNameConverter + { + string ConvertMemberName(System.Reflection.MemberInfo member); + } + public class JsonObjectSerializer : Azure.Core.Serialization.ObjectSerializer, Azure.Core.Serialization.IMemberNameConverter + { + string Azure.Core.Serialization.IMemberNameConverter.ConvertMemberName(System.Reflection.MemberInfo member) => throw null; + public JsonObjectSerializer() => throw null; + public JsonObjectSerializer(System.Text.Json.JsonSerializerOptions options) => throw null; + public static Azure.Core.Serialization.JsonObjectSerializer Default { get => throw null; } + public override object Deserialize(System.IO.Stream stream, System.Type returnType, System.Threading.CancellationToken cancellationToken) => throw null; + public override System.Threading.Tasks.ValueTask DeserializeAsync(System.IO.Stream stream, System.Type returnType, System.Threading.CancellationToken cancellationToken) => throw null; + public override void Serialize(System.IO.Stream stream, object value, System.Type inputType, System.Threading.CancellationToken cancellationToken) => throw null; + public override System.BinaryData Serialize(object value, System.Type inputType = default(System.Type), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask SerializeAsync(System.IO.Stream stream, object value, System.Type inputType, System.Threading.CancellationToken cancellationToken) => throw null; + public override System.Threading.Tasks.ValueTask SerializeAsync(object value, System.Type inputType = default(System.Type), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public enum JsonPropertyNames + { + UseExact = 0, + CamelCase = 1, + } + public abstract class ObjectSerializer + { + protected ObjectSerializer() => throw null; + public abstract object Deserialize(System.IO.Stream stream, System.Type returnType, System.Threading.CancellationToken cancellationToken); + public abstract System.Threading.Tasks.ValueTask DeserializeAsync(System.IO.Stream stream, System.Type returnType, System.Threading.CancellationToken cancellationToken); + public abstract void Serialize(System.IO.Stream stream, object value, System.Type inputType, System.Threading.CancellationToken cancellationToken); + public virtual System.BinaryData Serialize(object value, System.Type inputType = default(System.Type), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public abstract System.Threading.Tasks.ValueTask SerializeAsync(System.IO.Stream stream, object value, System.Type inputType, System.Threading.CancellationToken cancellationToken); + public virtual System.Threading.Tasks.ValueTask SerializeAsync(object value, System.Type inputType = default(System.Type), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + } + public class StatusCodeClassifier : Azure.Core.ResponseClassifier + { + public StatusCodeClassifier(System.ReadOnlySpan successStatusCodes) => throw null; + public override bool IsErrorResponse(Azure.Core.HttpMessage message) => throw null; + } + public delegate System.Threading.Tasks.Task SyncAsyncEventHandler(T e) where T : Azure.SyncAsyncEventArgs; + public class TelemetryDetails + { + public string ApplicationId { get => throw null; } + public void Apply(Azure.Core.HttpMessage message) => throw null; + public System.Reflection.Assembly Assembly { get => throw null; } + public TelemetryDetails(System.Reflection.Assembly assembly, string applicationId = default(string)) => throw null; + public override string ToString() => throw null; + } + public abstract class TokenCredential + { + protected TokenCredential() => throw null; + public abstract Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken); + public abstract System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken); + } + public struct TokenRequestContext + { + public string Claims { get => throw null; } + public TokenRequestContext(string[] scopes, string parentRequestId) => throw null; + public TokenRequestContext(string[] scopes, string parentRequestId, string claims) => throw null; + public TokenRequestContext(string[] scopes, string parentRequestId, string claims, string tenantId) => throw null; + public TokenRequestContext(string[] scopes, string parentRequestId = default(string), string claims = default(string), string tenantId = default(string), bool isCaeEnabled = default(bool)) => throw null; + public bool IsCaeEnabled { get => throw null; } + public string ParentRequestId { get => throw null; } + public string[] Scopes { get => throw null; } + public string TenantId { get => throw null; } + } + } + [System.Flags] + public enum ErrorOptions + { + Default = 0, + NoThrow = 1, + } + public struct ETag : System.IEquatable + { + public static readonly Azure.ETag All; + public ETag(string etag) => throw null; + public bool Equals(Azure.ETag other) => throw null; + public bool Equals(string other) => throw null; + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + public static bool operator ==(Azure.ETag left, Azure.ETag right) => throw null; + public static bool operator !=(Azure.ETag left, Azure.ETag right) => throw null; + public override string ToString() => throw null; + public string ToString(string format) => throw null; + } + public class HttpAuthorization + { + public HttpAuthorization(string scheme, string parameter) => throw null; + public string Parameter { get => throw null; } + public string Scheme { get => throw null; } + public override string ToString() => throw null; + } + public struct HttpRange : System.IEquatable + { + public HttpRange(long offset = default(long), long? length = default(long?)) => throw null; + public bool Equals(Azure.HttpRange other) => throw null; + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + public long? Length { get => throw null; } + public long Offset { get => throw null; } + public static bool operator ==(Azure.HttpRange left, Azure.HttpRange right) => throw null; + public static bool operator !=(Azure.HttpRange left, Azure.HttpRange right) => throw null; + public override string ToString() => throw null; + } + public class JsonPatchDocument + { + public void AppendAdd(string path, T value) => throw null; + public void AppendAddRaw(string path, string rawJsonValue) => throw null; + public void AppendCopy(string from, string path) => throw null; + public void AppendMove(string from, string path) => throw null; + public void AppendRemove(string path) => throw null; + public void AppendReplace(string path, T value) => throw null; + public void AppendReplaceRaw(string path, string rawJsonValue) => throw null; + public void AppendTest(string path, T value) => throw null; + public void AppendTestRaw(string path, string rawJsonValue) => throw null; + public JsonPatchDocument() => throw null; + public JsonPatchDocument(Azure.Core.Serialization.ObjectSerializer serializer) => throw null; + public JsonPatchDocument(System.ReadOnlyMemory rawDocument) => throw null; + public JsonPatchDocument(System.ReadOnlyMemory rawDocument, Azure.Core.Serialization.ObjectSerializer serializer) => throw null; + public System.ReadOnlyMemory ToBytes() => throw null; + public override string ToString() => throw null; + } + public class MatchConditions + { + public MatchConditions() => throw null; + public Azure.ETag? IfMatch { get => throw null; set { } } + public Azure.ETag? IfNoneMatch { get => throw null; set { } } + } + namespace Messaging + { + public class CloudEvent + { + public CloudEvent(string source, string type, object jsonSerializableData, System.Type dataSerializationType = default(System.Type)) => throw null; + public CloudEvent(string source, string type, System.BinaryData data, string dataContentType, Azure.Messaging.CloudEventDataFormat dataFormat = default(Azure.Messaging.CloudEventDataFormat)) => throw null; + public System.BinaryData Data { get => throw null; set { } } + public string DataContentType { get => throw null; set { } } + public string DataSchema { get => throw null; set { } } + public System.Collections.Generic.IDictionary ExtensionAttributes { get => throw null; } + public string Id { get => throw null; set { } } + public static Azure.Messaging.CloudEvent Parse(System.BinaryData json, bool skipValidation = default(bool)) => throw null; + public static Azure.Messaging.CloudEvent[] ParseMany(System.BinaryData json, bool skipValidation = default(bool)) => throw null; + public string Source { get => throw null; set { } } + public string Subject { get => throw null; set { } } + public System.DateTimeOffset? Time { get => throw null; set { } } + public string Type { get => throw null; set { } } + } + public enum CloudEventDataFormat + { + Binary = 0, + Json = 1, + } + public class MessageContent + { + public virtual Azure.Core.ContentType? ContentType { get => throw null; set { } } + protected virtual Azure.Core.ContentType? ContentTypeCore { get => throw null; set { } } + public MessageContent() => throw null; + public virtual System.BinaryData Data { get => throw null; set { } } + public virtual bool IsReadOnly { get => throw null; } + } + } + public abstract class NullableResponse + { + protected NullableResponse() => throw null; + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + public abstract Azure.Response GetRawResponse(); + public abstract bool HasValue { get; } + public override string ToString() => throw null; + public abstract T Value { get; } + } + public abstract class Operation + { + protected Operation() => throw null; + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + public abstract Azure.Response GetRawResponse(); + public virtual Azure.Core.RehydrationToken? GetRehydrationToken() => throw null; + public abstract bool HasCompleted { get; } + public abstract string Id { get; } + public override string ToString() => throw null; + public abstract Azure.Response UpdateStatus(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + public abstract System.Threading.Tasks.ValueTask UpdateStatusAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + public virtual Azure.Response WaitForCompletionResponse(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual Azure.Response WaitForCompletionResponse(System.TimeSpan pollingInterval, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual Azure.Response WaitForCompletionResponse(Azure.Core.DelayStrategy delayStrategy, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual System.Threading.Tasks.ValueTask WaitForCompletionResponseAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual System.Threading.Tasks.ValueTask WaitForCompletionResponseAsync(System.TimeSpan pollingInterval, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual System.Threading.Tasks.ValueTask WaitForCompletionResponseAsync(Azure.Core.DelayStrategy delayStrategy, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public abstract class Operation : Azure.Operation + { + protected Operation() => throw null; + public abstract bool HasValue { get; } + public abstract T Value { get; } + public virtual Azure.Response WaitForCompletion(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual Azure.Response WaitForCompletion(System.TimeSpan pollingInterval, System.Threading.CancellationToken cancellationToken) => throw null; + public virtual Azure.Response WaitForCompletion(Azure.Core.DelayStrategy delayStrategy, System.Threading.CancellationToken cancellationToken) => throw null; + public virtual System.Threading.Tasks.ValueTask> WaitForCompletionAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual System.Threading.Tasks.ValueTask> WaitForCompletionAsync(System.TimeSpan pollingInterval, System.Threading.CancellationToken cancellationToken) => throw null; + public virtual System.Threading.Tasks.ValueTask> WaitForCompletionAsync(Azure.Core.DelayStrategy delayStrategy, System.Threading.CancellationToken cancellationToken) => throw null; + public override System.Threading.Tasks.ValueTask WaitForCompletionResponseAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask WaitForCompletionResponseAsync(System.TimeSpan pollingInterval, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public abstract class Page + { + public abstract string ContinuationToken { get; } + protected Page() => throw null; + public override bool Equals(object obj) => throw null; + public static Azure.Page FromValues(System.Collections.Generic.IReadOnlyList values, string continuationToken, Azure.Response response) => throw null; + public override int GetHashCode() => throw null; + public abstract Azure.Response GetRawResponse(); + public override string ToString() => throw null; + public abstract System.Collections.Generic.IReadOnlyList Values { get; } + } + public abstract class Pageable : System.Collections.Generic.IEnumerable, System.Collections.IEnumerable + { + public abstract System.Collections.Generic.IEnumerable> AsPages(string continuationToken = default(string), int? pageSizeHint = default(int?)); + protected virtual System.Threading.CancellationToken CancellationToken { get => throw null; } + protected Pageable() => throw null; + protected Pageable(System.Threading.CancellationToken cancellationToken) => throw null; + public override bool Equals(object obj) => throw null; + public static Azure.Pageable FromPages(System.Collections.Generic.IEnumerable> pages) => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public virtual System.Collections.Generic.IEnumerator GetEnumerator() => throw null; + public override int GetHashCode() => throw null; + public override string ToString() => throw null; + } + public abstract class PageableOperation : Azure.Operation> + { + protected PageableOperation() => throw null; + public abstract Azure.Pageable GetValues(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + public abstract Azure.AsyncPageable GetValuesAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + public override Azure.AsyncPageable Value { get => throw null; } + } + public class RequestConditions : Azure.MatchConditions + { + public RequestConditions() => throw null; + public System.DateTimeOffset? IfModifiedSince { get => throw null; set { } } + public System.DateTimeOffset? IfUnmodifiedSince { get => throw null; set { } } + } + public class RequestContext + { + public void AddClassifier(int statusCode, bool isError) => throw null; + public void AddClassifier(Azure.Core.ResponseClassificationHandler classifier) => throw null; + public void AddPolicy(Azure.Core.Pipeline.HttpPipelinePolicy policy, Azure.Core.HttpPipelinePosition position) => throw null; + public System.Threading.CancellationToken CancellationToken { get => throw null; set { } } + public RequestContext() => throw null; + public Azure.ErrorOptions ErrorOptions { get => throw null; set { } } + public static implicit operator Azure.RequestContext(Azure.ErrorOptions options) => throw null; + } + public class RequestFailedException : System.Exception, System.Runtime.Serialization.ISerializable + { + public RequestFailedException(string message) => throw null; + public RequestFailedException(string message, System.Exception innerException) => throw null; + public RequestFailedException(int status, string message) => throw null; + public RequestFailedException(int status, string message, System.Exception innerException) => throw null; + public RequestFailedException(int status, string message, string errorCode, System.Exception innerException) => throw null; + public RequestFailedException(Azure.Response response) => throw null; + public RequestFailedException(Azure.Response response, System.Exception innerException) => throw null; + public RequestFailedException(Azure.Response response, System.Exception innerException, Azure.Core.RequestFailedDetailsParser detailsParser) => throw null; + protected RequestFailedException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public string ErrorCode { get => throw null; } + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public Azure.Response GetRawResponse() => throw null; + public int Status { get => throw null; } + } + public abstract class Response : System.IDisposable + { + public abstract string ClientRequestId { get; set; } + protected abstract bool ContainsHeader(string name); + public virtual System.BinaryData Content { get => throw null; } + public abstract System.IO.Stream ContentStream { get; set; } + protected Response() => throw null; + public abstract void Dispose(); + protected abstract System.Collections.Generic.IEnumerable EnumerateHeaders(); + public static Azure.Response FromValue(T value, Azure.Response response) => throw null; + public virtual Azure.Core.ResponseHeaders Headers { get => throw null; } + public virtual bool IsError { get => throw null; set { } } + public abstract string ReasonPhrase { get; } + public abstract int Status { get; } + public override string ToString() => throw null; + protected abstract bool TryGetHeader(string name, out string value); + protected abstract bool TryGetHeaderValues(string name, out System.Collections.Generic.IEnumerable values); + } + public abstract class Response : Azure.NullableResponse + { + protected Response() => throw null; + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + public override bool HasValue { get => throw null; } + public static implicit operator T(Azure.Response response) => throw null; + public override T Value { get => throw null; } + } + public sealed class ResponseError + { + public string Code { get => throw null; } + public ResponseError(string code, string message) => throw null; + public string Message { get => throw null; } + public override string ToString() => throw null; + } + public class SyncAsyncEventArgs : System.EventArgs + { + public System.Threading.CancellationToken CancellationToken { get => throw null; } + public SyncAsyncEventArgs(bool isRunningSynchronously, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public bool IsRunningSynchronously { get => throw null; } + } + public enum WaitUntil + { + Completed = 0, + Started = 1, + } +} diff --git a/csharp/ql/test/resources/stubs/Azure.Core/1.38.0/Azure.Core.csproj b/csharp/ql/test/resources/stubs/Azure.Core/1.38.0/Azure.Core.csproj new file mode 100644 index 000000000000..a440919775d7 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Azure.Core/1.38.0/Azure.Core.csproj @@ -0,0 +1,20 @@ + + + net9.0 + true + bin\ + false + + + + + + + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Azure.Identity/1.11.4/Azure.Identity.cs b/csharp/ql/test/resources/stubs/Azure.Identity/1.11.4/Azure.Identity.cs new file mode 100644 index 000000000000..253b97a6585a --- /dev/null +++ b/csharp/ql/test/resources/stubs/Azure.Identity/1.11.4/Azure.Identity.cs @@ -0,0 +1,431 @@ +// This file contains auto-generated code. +// Generated from `Azure.Identity, Version=1.11.4.0, Culture=neutral, PublicKeyToken=92742159e12e44c8`. +namespace Azure +{ + namespace Identity + { + public class AuthenticationFailedException : System.Exception + { + public AuthenticationFailedException(string message) => throw null; + public AuthenticationFailedException(string message, System.Exception innerException) => throw null; + protected AuthenticationFailedException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class AuthenticationRecord + { + public string Authority { get => throw null; } + public string ClientId { get => throw null; } + public static Azure.Identity.AuthenticationRecord Deserialize(System.IO.Stream stream, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public static System.Threading.Tasks.Task DeserializeAsync(System.IO.Stream stream, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public string HomeAccountId { get => throw null; } + public void Serialize(System.IO.Stream stream, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public System.Threading.Tasks.Task SerializeAsync(System.IO.Stream stream, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public string TenantId { get => throw null; } + public string Username { get => throw null; } + } + public class AuthenticationRequiredException : Azure.Identity.CredentialUnavailableException + { + public AuthenticationRequiredException(string message, Azure.Core.TokenRequestContext context) : base(default(string)) => throw null; + public AuthenticationRequiredException(string message, Azure.Core.TokenRequestContext context, System.Exception innerException) : base(default(string)) => throw null; + protected AuthenticationRequiredException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(default(string)) => throw null; + public Azure.Core.TokenRequestContext TokenRequestContext { get => throw null; } + } + public class AuthorizationCodeCredential : Azure.Core.TokenCredential + { + protected AuthorizationCodeCredential() => throw null; + public AuthorizationCodeCredential(string tenantId, string clientId, string clientSecret, string authorizationCode) => throw null; + public AuthorizationCodeCredential(string tenantId, string clientId, string clientSecret, string authorizationCode, Azure.Identity.AuthorizationCodeCredentialOptions options) => throw null; + public AuthorizationCodeCredential(string tenantId, string clientId, string clientSecret, string authorizationCode, Azure.Identity.TokenCredentialOptions options) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class AuthorizationCodeCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public AuthorizationCodeCredentialOptions() => throw null; + public bool DisableInstanceDiscovery { get => throw null; set { } } + public System.Uri RedirectUri { get => throw null; set { } } + } + public static class AzureAuthorityHosts + { + public static System.Uri AzureChina { get => throw null; } + public static System.Uri AzureGermany { get => throw null; } + public static System.Uri AzureGovernment { get => throw null; } + public static System.Uri AzurePublicCloud { get => throw null; } + } + public class AzureCliCredential : Azure.Core.TokenCredential + { + public AzureCliCredential() => throw null; + public AzureCliCredential(Azure.Identity.AzureCliCredentialOptions options) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class AzureCliCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public AzureCliCredentialOptions() => throw null; + public System.TimeSpan? ProcessTimeout { get => throw null; set { } } + public string TenantId { get => throw null; set { } } + } + public class AzureDeveloperCliCredential : Azure.Core.TokenCredential + { + public AzureDeveloperCliCredential() => throw null; + public AzureDeveloperCliCredential(Azure.Identity.AzureDeveloperCliCredentialOptions options) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class AzureDeveloperCliCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public AzureDeveloperCliCredentialOptions() => throw null; + public System.TimeSpan? ProcessTimeout { get => throw null; set { } } + public string TenantId { get => throw null; set { } } + } + public class AzurePowerShellCredential : Azure.Core.TokenCredential + { + public AzurePowerShellCredential() => throw null; + public AzurePowerShellCredential(Azure.Identity.AzurePowerShellCredentialOptions options) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class AzurePowerShellCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public AzurePowerShellCredentialOptions() => throw null; + public System.TimeSpan? ProcessTimeout { get => throw null; set { } } + public string TenantId { get => throw null; set { } } + } + public class BrowserCustomizationOptions + { + public BrowserCustomizationOptions() => throw null; + public string ErrorMessage { get => throw null; set { } } + public string SuccessMessage { get => throw null; set { } } + public bool? UseEmbeddedWebView { get => throw null; set { } } + } + public class ChainedTokenCredential : Azure.Core.TokenCredential + { + public ChainedTokenCredential(params Azure.Core.TokenCredential[] sources) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class ClientAssertionCredential : Azure.Core.TokenCredential + { + protected ClientAssertionCredential() => throw null; + public ClientAssertionCredential(string tenantId, string clientId, System.Func> assertionCallback, Azure.Identity.ClientAssertionCredentialOptions options = default(Azure.Identity.ClientAssertionCredentialOptions)) => throw null; + public ClientAssertionCredential(string tenantId, string clientId, System.Func assertionCallback, Azure.Identity.ClientAssertionCredentialOptions options = default(Azure.Identity.ClientAssertionCredentialOptions)) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class ClientAssertionCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public ClientAssertionCredentialOptions() => throw null; + public bool DisableInstanceDiscovery { get => throw null; set { } } + } + public class ClientCertificateCredential : Azure.Core.TokenCredential + { + protected ClientCertificateCredential() => throw null; + public ClientCertificateCredential(string tenantId, string clientId, string clientCertificatePath) => throw null; + public ClientCertificateCredential(string tenantId, string clientId, string clientCertificatePath, Azure.Identity.TokenCredentialOptions options) => throw null; + public ClientCertificateCredential(string tenantId, string clientId, string clientCertificatePath, Azure.Identity.ClientCertificateCredentialOptions options) => throw null; + public ClientCertificateCredential(string tenantId, string clientId, System.Security.Cryptography.X509Certificates.X509Certificate2 clientCertificate) => throw null; + public ClientCertificateCredential(string tenantId, string clientId, System.Security.Cryptography.X509Certificates.X509Certificate2 clientCertificate, Azure.Identity.TokenCredentialOptions options) => throw null; + public ClientCertificateCredential(string tenantId, string clientId, System.Security.Cryptography.X509Certificates.X509Certificate2 clientCertificate, Azure.Identity.ClientCertificateCredentialOptions options) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class ClientCertificateCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public ClientCertificateCredentialOptions() => throw null; + public bool DisableInstanceDiscovery { get => throw null; set { } } + public bool SendCertificateChain { get => throw null; set { } } + public Azure.Identity.TokenCachePersistenceOptions TokenCachePersistenceOptions { get => throw null; set { } } + } + public class ClientSecretCredential : Azure.Core.TokenCredential + { + protected ClientSecretCredential() => throw null; + public ClientSecretCredential(string tenantId, string clientId, string clientSecret) => throw null; + public ClientSecretCredential(string tenantId, string clientId, string clientSecret, Azure.Identity.ClientSecretCredentialOptions options) => throw null; + public ClientSecretCredential(string tenantId, string clientId, string clientSecret, Azure.Identity.TokenCredentialOptions options) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class ClientSecretCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public ClientSecretCredentialOptions() => throw null; + public bool DisableInstanceDiscovery { get => throw null; set { } } + public Azure.Identity.TokenCachePersistenceOptions TokenCachePersistenceOptions { get => throw null; set { } } + } + public class CredentialUnavailableException : Azure.Identity.AuthenticationFailedException + { + public CredentialUnavailableException(string message) : base(default(string)) => throw null; + public CredentialUnavailableException(string message, System.Exception innerException) : base(default(string)) => throw null; + protected CredentialUnavailableException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(default(string)) => throw null; + } + public class DefaultAzureCredential : Azure.Core.TokenCredential + { + public DefaultAzureCredential(bool includeInteractiveCredentials = default(bool)) => throw null; + public DefaultAzureCredential(Azure.Identity.DefaultAzureCredentialOptions options) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class DefaultAzureCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public System.TimeSpan? CredentialProcessTimeout { get => throw null; set { } } + public DefaultAzureCredentialOptions() => throw null; + public bool DisableInstanceDiscovery { get => throw null; set { } } + public bool ExcludeAzureCliCredential { get => throw null; set { } } + public bool ExcludeAzureDeveloperCliCredential { get => throw null; set { } } + public bool ExcludeAzurePowerShellCredential { get => throw null; set { } } + public bool ExcludeEnvironmentCredential { get => throw null; set { } } + public bool ExcludeInteractiveBrowserCredential { get => throw null; set { } } + public bool ExcludeManagedIdentityCredential { get => throw null; set { } } + public bool ExcludeSharedTokenCacheCredential { get => throw null; set { } } + public bool ExcludeVisualStudioCodeCredential { get => throw null; set { } } + public bool ExcludeVisualStudioCredential { get => throw null; set { } } + public bool ExcludeWorkloadIdentityCredential { get => throw null; set { } } + public string InteractiveBrowserCredentialClientId { get => throw null; set { } } + public string InteractiveBrowserTenantId { get => throw null; set { } } + public string ManagedIdentityClientId { get => throw null; set { } } + public Azure.Core.ResourceIdentifier ManagedIdentityResourceId { get => throw null; set { } } + public string SharedTokenCacheTenantId { get => throw null; set { } } + public string SharedTokenCacheUsername { get => throw null; set { } } + public string TenantId { get => throw null; set { } } + public string VisualStudioCodeTenantId { get => throw null; set { } } + public string VisualStudioTenantId { get => throw null; set { } } + public string WorkloadIdentityClientId { get => throw null; set { } } + } + public class DeviceCodeCredential : Azure.Core.TokenCredential + { + public virtual Azure.Identity.AuthenticationRecord Authenticate(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual Azure.Identity.AuthenticationRecord Authenticate(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual System.Threading.Tasks.Task AuthenticateAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual System.Threading.Tasks.Task AuthenticateAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public DeviceCodeCredential() => throw null; + public DeviceCodeCredential(Azure.Identity.DeviceCodeCredentialOptions options) => throw null; + public DeviceCodeCredential(System.Func deviceCodeCallback, string clientId, Azure.Identity.TokenCredentialOptions options = default(Azure.Identity.TokenCredentialOptions)) => throw null; + public DeviceCodeCredential(System.Func deviceCodeCallback, string tenantId, string clientId, Azure.Identity.TokenCredentialOptions options = default(Azure.Identity.TokenCredentialOptions)) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class DeviceCodeCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public Azure.Identity.AuthenticationRecord AuthenticationRecord { get => throw null; set { } } + public string ClientId { get => throw null; set { } } + public DeviceCodeCredentialOptions() => throw null; + public System.Func DeviceCodeCallback { get => throw null; set { } } + public bool DisableAutomaticAuthentication { get => throw null; set { } } + public bool DisableInstanceDiscovery { get => throw null; set { } } + public string TenantId { get => throw null; set { } } + public Azure.Identity.TokenCachePersistenceOptions TokenCachePersistenceOptions { get => throw null; set { } } + } + public struct DeviceCodeInfo + { + public string ClientId { get => throw null; } + public string DeviceCode { get => throw null; } + public System.DateTimeOffset ExpiresOn { get => throw null; } + public string Message { get => throw null; } + public System.Collections.Generic.IReadOnlyCollection Scopes { get => throw null; } + public string UserCode { get => throw null; } + public System.Uri VerificationUri { get => throw null; } + } + public class EnvironmentCredential : Azure.Core.TokenCredential + { + public EnvironmentCredential() => throw null; + public EnvironmentCredential(Azure.Identity.TokenCredentialOptions options) => throw null; + public EnvironmentCredential(Azure.Identity.EnvironmentCredentialOptions options) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class EnvironmentCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public EnvironmentCredentialOptions() => throw null; + public bool DisableInstanceDiscovery { get => throw null; set { } } + } + public static class IdentityModelFactory + { + public static Azure.Identity.AuthenticationRecord AuthenticationRecord(string username, string authority, string homeAccountId, string tenantId, string clientId) => throw null; + public static Azure.Identity.DeviceCodeInfo DeviceCodeInfo(string userCode, string deviceCode, System.Uri verificationUri, System.DateTimeOffset expiresOn, string message, string clientId, System.Collections.Generic.IReadOnlyCollection scopes) => throw null; + } + public class InteractiveBrowserCredential : Azure.Core.TokenCredential + { + public virtual Azure.Identity.AuthenticationRecord Authenticate(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual Azure.Identity.AuthenticationRecord Authenticate(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual System.Threading.Tasks.Task AuthenticateAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual System.Threading.Tasks.Task AuthenticateAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public InteractiveBrowserCredential() => throw null; + public InteractiveBrowserCredential(Azure.Identity.InteractiveBrowserCredentialOptions options) => throw null; + public InteractiveBrowserCredential(string clientId) => throw null; + public InteractiveBrowserCredential(string tenantId, string clientId, Azure.Identity.TokenCredentialOptions options = default(Azure.Identity.TokenCredentialOptions)) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class InteractiveBrowserCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public Azure.Identity.AuthenticationRecord AuthenticationRecord { get => throw null; set { } } + public Azure.Identity.BrowserCustomizationOptions BrowserCustomization { get => throw null; set { } } + public string ClientId { get => throw null; set { } } + public InteractiveBrowserCredentialOptions() => throw null; + public bool DisableAutomaticAuthentication { get => throw null; set { } } + public bool DisableInstanceDiscovery { get => throw null; set { } } + public string LoginHint { get => throw null; set { } } + public System.Uri RedirectUri { get => throw null; set { } } + public string TenantId { get => throw null; set { } } + public Azure.Identity.TokenCachePersistenceOptions TokenCachePersistenceOptions { get => throw null; set { } } + } + public class ManagedIdentityCredential : Azure.Core.TokenCredential + { + protected ManagedIdentityCredential() => throw null; + public ManagedIdentityCredential(string clientId = default(string), Azure.Identity.TokenCredentialOptions options = default(Azure.Identity.TokenCredentialOptions)) => throw null; + public ManagedIdentityCredential(Azure.Core.ResourceIdentifier resourceId, Azure.Identity.TokenCredentialOptions options = default(Azure.Identity.TokenCredentialOptions)) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class OnBehalfOfCredential : Azure.Core.TokenCredential + { + protected OnBehalfOfCredential() => throw null; + public OnBehalfOfCredential(string tenantId, string clientId, System.Security.Cryptography.X509Certificates.X509Certificate2 clientCertificate, string userAssertion) => throw null; + public OnBehalfOfCredential(string tenantId, string clientId, System.Security.Cryptography.X509Certificates.X509Certificate2 clientCertificate, string userAssertion, Azure.Identity.OnBehalfOfCredentialOptions options) => throw null; + public OnBehalfOfCredential(string tenantId, string clientId, string clientSecret, string userAssertion) => throw null; + public OnBehalfOfCredential(string tenantId, string clientId, string clientSecret, string userAssertion, Azure.Identity.OnBehalfOfCredentialOptions options) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken) => throw null; + } + public class OnBehalfOfCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public OnBehalfOfCredentialOptions() => throw null; + public bool DisableInstanceDiscovery { get => throw null; set { } } + public bool SendCertificateChain { get => throw null; set { } } + public Azure.Identity.TokenCachePersistenceOptions TokenCachePersistenceOptions { get => throw null; set { } } + } + public class SharedTokenCacheCredential : Azure.Core.TokenCredential + { + public SharedTokenCacheCredential() => throw null; + public SharedTokenCacheCredential(Azure.Identity.SharedTokenCacheCredentialOptions options) => throw null; + public SharedTokenCacheCredential(string username, Azure.Identity.TokenCredentialOptions options = default(Azure.Identity.TokenCredentialOptions)) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class SharedTokenCacheCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public Azure.Identity.AuthenticationRecord AuthenticationRecord { get => throw null; set { } } + public string ClientId { get => throw null; set { } } + public SharedTokenCacheCredentialOptions() => throw null; + public SharedTokenCacheCredentialOptions(Azure.Identity.TokenCachePersistenceOptions tokenCacheOptions) => throw null; + public bool DisableInstanceDiscovery { get => throw null; set { } } + public bool EnableGuestTenantAuthentication { get => throw null; set { } } + public string TenantId { get => throw null; set { } } + public Azure.Identity.TokenCachePersistenceOptions TokenCachePersistenceOptions { get => throw null; set { } } + public string Username { get => throw null; set { } } + } + public struct TokenCacheData + { + public System.ReadOnlyMemory CacheBytes { get => throw null; } + public TokenCacheData(System.ReadOnlyMemory cacheBytes) => throw null; + } + public class TokenCachePersistenceOptions + { + public TokenCachePersistenceOptions() => throw null; + public string Name { get => throw null; set { } } + public bool UnsafeAllowUnencryptedStorage { get => throw null; set { } } + } + public class TokenCacheRefreshArgs + { + public bool IsCaeEnabled { get => throw null; } + public string SuggestedCacheKey { get => throw null; } + } + public class TokenCacheUpdatedArgs + { + public bool IsCaeEnabled { get => throw null; } + public System.ReadOnlyMemory UnsafeCacheData { get => throw null; } + } + public class TokenCredentialDiagnosticsOptions : Azure.Core.DiagnosticsOptions + { + public TokenCredentialDiagnosticsOptions() => throw null; + public bool IsAccountIdentifierLoggingEnabled { get => throw null; set { } } + } + public class TokenCredentialOptions : Azure.Core.ClientOptions + { + public System.Uri AuthorityHost { get => throw null; set { } } + public TokenCredentialOptions() => throw null; + public Azure.Identity.TokenCredentialDiagnosticsOptions Diagnostics { get => throw null; } + public bool IsUnsafeSupportLoggingEnabled { get => throw null; set { } } + } + public abstract class UnsafeTokenCacheOptions : Azure.Identity.TokenCachePersistenceOptions + { + protected UnsafeTokenCacheOptions() => throw null; + protected abstract System.Threading.Tasks.Task> RefreshCacheAsync(); + protected virtual System.Threading.Tasks.Task RefreshCacheAsync(Azure.Identity.TokenCacheRefreshArgs args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + protected abstract System.Threading.Tasks.Task TokenCacheUpdatedAsync(Azure.Identity.TokenCacheUpdatedArgs tokenCacheUpdatedArgs); + } + public class UsernamePasswordCredential : Azure.Core.TokenCredential + { + public virtual Azure.Identity.AuthenticationRecord Authenticate(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual Azure.Identity.AuthenticationRecord Authenticate(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual System.Threading.Tasks.Task AuthenticateAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public virtual System.Threading.Tasks.Task AuthenticateAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + protected UsernamePasswordCredential() => throw null; + public UsernamePasswordCredential(string username, string password, string tenantId, string clientId) => throw null; + public UsernamePasswordCredential(string username, string password, string tenantId, string clientId, Azure.Identity.TokenCredentialOptions options) => throw null; + public UsernamePasswordCredential(string username, string password, string tenantId, string clientId, Azure.Identity.UsernamePasswordCredentialOptions options) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class UsernamePasswordCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public UsernamePasswordCredentialOptions() => throw null; + public bool DisableInstanceDiscovery { get => throw null; set { } } + public Azure.Identity.TokenCachePersistenceOptions TokenCachePersistenceOptions { get => throw null; set { } } + } + public class VisualStudioCodeCredential : Azure.Core.TokenCredential + { + public VisualStudioCodeCredential() => throw null; + public VisualStudioCodeCredential(Azure.Identity.VisualStudioCodeCredentialOptions options) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken) => throw null; + } + public class VisualStudioCodeCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public VisualStudioCodeCredentialOptions() => throw null; + public string TenantId { get => throw null; set { } } + } + public class VisualStudioCredential : Azure.Core.TokenCredential + { + public VisualStudioCredential() => throw null; + public VisualStudioCredential(Azure.Identity.VisualStudioCredentialOptions options) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken) => throw null; + } + public class VisualStudioCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public VisualStudioCredentialOptions() => throw null; + public System.TimeSpan? ProcessTimeout { get => throw null; set { } } + public string TenantId { get => throw null; set { } } + } + public class WorkloadIdentityCredential : Azure.Core.TokenCredential + { + public WorkloadIdentityCredential() => throw null; + public WorkloadIdentityCredential(Azure.Identity.WorkloadIdentityCredentialOptions options) => throw null; + public override Azure.Core.AccessToken GetToken(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override System.Threading.Tasks.ValueTask GetTokenAsync(Azure.Core.TokenRequestContext requestContext, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class WorkloadIdentityCredentialOptions : Azure.Identity.TokenCredentialOptions + { + public System.Collections.Generic.IList AdditionallyAllowedTenants { get => throw null; } + public string ClientId { get => throw null; set { } } + public WorkloadIdentityCredentialOptions() => throw null; + public bool DisableInstanceDiscovery { get => throw null; set { } } + public string TenantId { get => throw null; set { } } + public string TokenFilePath { get => throw null; set { } } + } + } +} diff --git a/csharp/ql/test/resources/stubs/Azure.Identity/1.11.4/Azure.Identity.csproj b/csharp/ql/test/resources/stubs/Azure.Identity/1.11.4/Azure.Identity.csproj new file mode 100644 index 000000000000..e16e446b3a1b --- /dev/null +++ b/csharp/ql/test/resources/stubs/Azure.Identity/1.11.4/Azure.Identity.csproj @@ -0,0 +1,19 @@ + + + net9.0 + true + bin\ + false + + + + + + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Library.cs b/csharp/ql/test/resources/stubs/Library.cs new file mode 100644 index 000000000000..0efffd3f21b7 --- /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/csharp/ql/test/resources/stubs/Microsoft.Bcl.AsyncInterfaces/1.1.1/Microsoft.Bcl.AsyncInterfaces.csproj b/csharp/ql/test/resources/stubs/Microsoft.Bcl.AsyncInterfaces/1.1.1/Microsoft.Bcl.AsyncInterfaces.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Bcl.AsyncInterfaces/1.1.1/Microsoft.Bcl.AsyncInterfaces.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.Bcl.Cryptography/9.0.4/Microsoft.Bcl.Cryptography.csproj b/csharp/ql/test/resources/stubs/Microsoft.Bcl.Cryptography/9.0.4/Microsoft.Bcl.Cryptography.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Bcl.Cryptography/9.0.4/Microsoft.Bcl.Cryptography.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.Data.SqlClient.SNI.runtime/6.0.2/Microsoft.Data.SqlClient.SNI.runtime.csproj b/csharp/ql/test/resources/stubs/Microsoft.Data.SqlClient.SNI.runtime/6.0.2/Microsoft.Data.SqlClient.SNI.runtime.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Data.SqlClient.SNI.runtime/6.0.2/Microsoft.Data.SqlClient.SNI.runtime.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.Data.SqlClient/6.0.2/Microsoft.Data.SqlClient.cs b/csharp/ql/test/resources/stubs/Microsoft.Data.SqlClient/6.0.2/Microsoft.Data.SqlClient.cs new file mode 100644 index 000000000000..754a0767f37f --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Data.SqlClient/6.0.2/Microsoft.Data.SqlClient.cs @@ -0,0 +1,1445 @@ +// This file contains auto-generated code. +// Generated from `Microsoft.Data.SqlClient, Version=6.0.0.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5`. +namespace Microsoft +{ + namespace Data + { + public sealed class OperationAbortedException : System.SystemException + { + } + namespace Sql + { + public sealed class SqlDataSourceEnumerator : System.Data.Common.DbDataSourceEnumerator + { + public SqlDataSourceEnumerator() => throw null; + public override System.Data.DataTable GetDataSources() => throw null; + public static Microsoft.Data.Sql.SqlDataSourceEnumerator Instance { get => throw null; } + } + public sealed class SqlNotificationRequest + { + public SqlNotificationRequest() => throw null; + public SqlNotificationRequest(string userData, string options, int timeout) => throw null; + public string Options { get => throw null; set { } } + public int Timeout { get => throw null; set { } } + public string UserData { get => throw null; set { } } + } + } + namespace SqlClient + { + public sealed class ActiveDirectoryAuthenticationProvider : Microsoft.Data.SqlClient.SqlAuthenticationProvider + { + public override System.Threading.Tasks.Task AcquireTokenAsync(Microsoft.Data.SqlClient.SqlAuthenticationParameters parameters) => throw null; + public override void BeforeLoad(Microsoft.Data.SqlClient.SqlAuthenticationMethod authentication) => throw null; + public override void BeforeUnload(Microsoft.Data.SqlClient.SqlAuthenticationMethod authentication) => throw null; + public static void ClearUserTokenCache() => throw null; + public ActiveDirectoryAuthenticationProvider() => throw null; + public ActiveDirectoryAuthenticationProvider(string applicationClientId) => throw null; + public ActiveDirectoryAuthenticationProvider(System.Func deviceCodeFlowCallbackMethod, string applicationClientId = default(string)) => throw null; + public override bool IsSupported(Microsoft.Data.SqlClient.SqlAuthenticationMethod authentication) => throw null; + public void SetAcquireAuthorizationCodeAsyncCallback(System.Func> acquireAuthorizationCodeAsyncCallback) => throw null; + public void SetDeviceCodeFlowCallback(System.Func deviceCodeFlowCallbackMethod) => throw null; + } + public enum ApplicationIntent + { + ReadOnly = 1, + ReadWrite = 0, + } + namespace DataClassification + { + public class ColumnSensitivity + { + public ColumnSensitivity(System.Collections.Generic.IList sensitivityProperties) => throw null; + public System.Collections.ObjectModel.ReadOnlyCollection SensitivityProperties { get => throw null; } + } + public class InformationType + { + public InformationType(string name, string id) => throw null; + public string Id { get => throw null; } + public string Name { get => throw null; } + } + public class Label + { + public Label(string name, string id) => throw null; + public string Id { get => throw null; } + public string Name { get => throw null; } + } + public class SensitivityClassification + { + public System.Collections.ObjectModel.ReadOnlyCollection ColumnSensitivities { get => throw null; } + public SensitivityClassification(System.Collections.Generic.IList labels, System.Collections.Generic.IList informationTypes, System.Collections.Generic.IList columnSensitivity, Microsoft.Data.SqlClient.DataClassification.SensitivityRank sensitivityRank) => throw null; + public System.Collections.ObjectModel.ReadOnlyCollection InformationTypes { get => throw null; } + public System.Collections.ObjectModel.ReadOnlyCollection Labels { get => throw null; } + public Microsoft.Data.SqlClient.DataClassification.SensitivityRank SensitivityRank { get => throw null; } + } + public class SensitivityProperty + { + public SensitivityProperty(Microsoft.Data.SqlClient.DataClassification.Label label, Microsoft.Data.SqlClient.DataClassification.InformationType informationType, Microsoft.Data.SqlClient.DataClassification.SensitivityRank sensitivityRank) => throw null; + public Microsoft.Data.SqlClient.DataClassification.InformationType InformationType { get => throw null; } + public Microsoft.Data.SqlClient.DataClassification.Label Label { get => throw null; } + public Microsoft.Data.SqlClient.DataClassification.SensitivityRank SensitivityRank { get => throw null; } + } + public enum SensitivityRank + { + NOT_DEFINED = -1, + NONE = 0, + LOW = 10, + MEDIUM = 20, + HIGH = 30, + CRITICAL = 40, + } + } + namespace Diagnostics + { + public sealed class SqlClientCommandAfter : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public Microsoft.Data.SqlClient.SqlCommand Command { get => throw null; } + public System.Guid? ConnectionId { get => throw null; } + public int Count { get => throw null; } + public SqlClientCommandAfter() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.IDictionary Statistics { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + public long? TransactionId { get => throw null; } + } + public sealed class SqlClientCommandBefore : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public Microsoft.Data.SqlClient.SqlCommand Command { get => throw null; } + public System.Guid? ConnectionId { get => throw null; } + public int Count { get => throw null; } + public SqlClientCommandBefore() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + public long? TransactionId { get => throw null; } + } + public sealed class SqlClientCommandError : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public Microsoft.Data.SqlClient.SqlCommand Command { get => throw null; } + public System.Guid? ConnectionId { get => throw null; } + public int Count { get => throw null; } + public SqlClientCommandError() => throw null; + public System.Exception Exception { get => throw null; } + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + public long? TransactionId { get => throw null; } + } + public sealed class SqlClientConnectionCloseAfter : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + public System.Guid? ConnectionId { get => throw null; } + public int Count { get => throw null; } + public SqlClientConnectionCloseAfter() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.IDictionary Statistics { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + } + public sealed class SqlClientConnectionCloseBefore : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + public System.Guid? ConnectionId { get => throw null; } + public int Count { get => throw null; } + public SqlClientConnectionCloseBefore() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.IDictionary Statistics { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + } + public sealed class SqlClientConnectionCloseError : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + public System.Guid? ConnectionId { get => throw null; } + public int Count { get => throw null; } + public SqlClientConnectionCloseError() => throw null; + public System.Exception Exception { get => throw null; } + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.IDictionary Statistics { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + } + public sealed class SqlClientConnectionOpenAfter : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public string ClientVersion { get => throw null; } + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + public System.Guid ConnectionId { get => throw null; } + public int Count { get => throw null; } + public SqlClientConnectionOpenAfter() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.IDictionary Statistics { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + } + public sealed class SqlClientConnectionOpenBefore : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public string ClientVersion { get => throw null; } + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + public int Count { get => throw null; } + public SqlClientConnectionOpenBefore() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + } + public sealed class SqlClientConnectionOpenError : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public string ClientVersion { get => throw null; } + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + public System.Guid ConnectionId { get => throw null; } + public int Count { get => throw null; } + public SqlClientConnectionOpenError() => throw null; + public System.Exception Exception { get => throw null; } + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + } + public sealed class SqlClientTransactionCommitAfter : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + public int Count { get => throw null; } + public SqlClientTransactionCommitAfter() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public System.Data.IsolationLevel IsolationLevel { get => throw null; } + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + public long? TransactionId { get => throw null; } + } + public sealed class SqlClientTransactionCommitBefore : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + public int Count { get => throw null; } + public SqlClientTransactionCommitBefore() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public System.Data.IsolationLevel IsolationLevel { get => throw null; } + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + public long? TransactionId { get => throw null; } + } + public sealed class SqlClientTransactionCommitError : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + public int Count { get => throw null; } + public SqlClientTransactionCommitError() => throw null; + public System.Exception Exception { get => throw null; } + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public System.Data.IsolationLevel IsolationLevel { get => throw null; } + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + public long? TransactionId { get => throw null; } + } + public sealed class SqlClientTransactionRollbackAfter : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + public int Count { get => throw null; } + public SqlClientTransactionRollbackAfter() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public System.Data.IsolationLevel IsolationLevel { get => throw null; } + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + public long? TransactionId { get => throw null; } + public string TransactionName { get => throw null; } + } + public sealed class SqlClientTransactionRollbackBefore : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + public int Count { get => throw null; } + public SqlClientTransactionRollbackBefore() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public System.Data.IsolationLevel IsolationLevel { get => throw null; } + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + public long? TransactionId { get => throw null; } + public string TransactionName { get => throw null; } + } + public sealed class SqlClientTransactionRollbackError : System.Collections.Generic.IEnumerable>, System.Collections.IEnumerable, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyList> + { + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + public int Count { get => throw null; } + public SqlClientTransactionRollbackError() => throw null; + public System.Exception Exception { get => throw null; } + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public System.Collections.Generic.IEnumerator> GetEnumerator() => throw null; + public System.Data.IsolationLevel IsolationLevel { get => throw null; } + public const string Name = default; + public string Operation { get => throw null; } + public System.Guid OperationId { get => throw null; } + public System.Collections.Generic.KeyValuePair this[int index] { get => throw null; } + public long Timestamp { get => throw null; } + public long? TransactionId { get => throw null; } + public string TransactionName { get => throw null; } + } + } + public delegate void OnChangeEventHandler(object sender, Microsoft.Data.SqlClient.SqlNotificationEventArgs e); + public enum PoolBlockingPeriod + { + Auto = 0, + AlwaysBlock = 1, + NeverBlock = 2, + } + namespace Server + { + public class SqlDataRecord : System.Data.IDataRecord + { + public SqlDataRecord(params Microsoft.Data.SqlClient.Server.SqlMetaData[] metaData) => throw null; + public virtual int FieldCount { get => throw null; } + public virtual bool GetBoolean(int ordinal) => throw null; + public virtual byte GetByte(int ordinal) => throw null; + public virtual long GetBytes(int ordinal, long fieldOffset, byte[] buffer, int bufferOffset, int length) => throw null; + public virtual char GetChar(int ordinal) => throw null; + public virtual long GetChars(int ordinal, long fieldOffset, char[] buffer, int bufferOffset, int length) => throw null; + System.Data.IDataReader System.Data.IDataRecord.GetData(int ordinal) => throw null; + public virtual string GetDataTypeName(int ordinal) => throw null; + public virtual System.DateTime GetDateTime(int ordinal) => throw null; + public virtual System.DateTimeOffset GetDateTimeOffset(int ordinal) => throw null; + public virtual decimal GetDecimal(int ordinal) => throw null; + public virtual double GetDouble(int ordinal) => throw null; + public virtual System.Type GetFieldType(int ordinal) => throw null; + public virtual float GetFloat(int ordinal) => throw null; + public virtual System.Guid GetGuid(int ordinal) => throw null; + public virtual short GetInt16(int ordinal) => throw null; + public virtual int GetInt32(int ordinal) => throw null; + public virtual long GetInt64(int ordinal) => throw null; + public virtual string GetName(int ordinal) => throw null; + public virtual int GetOrdinal(string name) => throw null; + public virtual System.Data.SqlTypes.SqlBinary GetSqlBinary(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlBoolean GetSqlBoolean(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlByte GetSqlByte(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlBytes GetSqlBytes(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlChars GetSqlChars(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlDateTime GetSqlDateTime(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlDecimal GetSqlDecimal(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlDouble GetSqlDouble(int ordinal) => throw null; + public virtual System.Type GetSqlFieldType(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlGuid GetSqlGuid(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlInt16 GetSqlInt16(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlInt32 GetSqlInt32(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlInt64 GetSqlInt64(int ordinal) => throw null; + public virtual Microsoft.Data.SqlClient.Server.SqlMetaData GetSqlMetaData(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlMoney GetSqlMoney(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlSingle GetSqlSingle(int ordinal) => throw null; + public virtual System.Data.SqlTypes.SqlString GetSqlString(int ordinal) => throw null; + public virtual object GetSqlValue(int ordinal) => throw null; + public virtual int GetSqlValues(object[] values) => throw null; + public virtual System.Data.SqlTypes.SqlXml GetSqlXml(int ordinal) => throw null; + public virtual string GetString(int ordinal) => throw null; + public virtual System.TimeSpan GetTimeSpan(int ordinal) => throw null; + public virtual object GetValue(int ordinal) => throw null; + public virtual int GetValues(object[] values) => throw null; + public virtual bool IsDBNull(int ordinal) => throw null; + public virtual void SetBoolean(int ordinal, bool value) => throw null; + public virtual void SetByte(int ordinal, byte value) => throw null; + public virtual void SetBytes(int ordinal, long fieldOffset, byte[] buffer, int bufferOffset, int length) => throw null; + public virtual void SetChar(int ordinal, char value) => throw null; + public virtual void SetChars(int ordinal, long fieldOffset, char[] buffer, int bufferOffset, int length) => throw null; + public virtual void SetDateTime(int ordinal, System.DateTime value) => throw null; + public virtual void SetDateTimeOffset(int ordinal, System.DateTimeOffset value) => throw null; + public virtual void SetDBNull(int ordinal) => throw null; + public virtual void SetDecimal(int ordinal, decimal value) => throw null; + public virtual void SetDouble(int ordinal, double value) => throw null; + public virtual void SetFloat(int ordinal, float value) => throw null; + public virtual void SetGuid(int ordinal, System.Guid value) => throw null; + public virtual void SetInt16(int ordinal, short value) => throw null; + public virtual void SetInt32(int ordinal, int value) => throw null; + public virtual void SetInt64(int ordinal, long value) => throw null; + public virtual void SetSqlBinary(int ordinal, System.Data.SqlTypes.SqlBinary value) => throw null; + public virtual void SetSqlBoolean(int ordinal, System.Data.SqlTypes.SqlBoolean value) => throw null; + public virtual void SetSqlByte(int ordinal, System.Data.SqlTypes.SqlByte value) => throw null; + public virtual void SetSqlBytes(int ordinal, System.Data.SqlTypes.SqlBytes value) => throw null; + public virtual void SetSqlChars(int ordinal, System.Data.SqlTypes.SqlChars value) => throw null; + public virtual void SetSqlDateTime(int ordinal, System.Data.SqlTypes.SqlDateTime value) => throw null; + public virtual void SetSqlDecimal(int ordinal, System.Data.SqlTypes.SqlDecimal value) => throw null; + public virtual void SetSqlDouble(int ordinal, System.Data.SqlTypes.SqlDouble value) => throw null; + public virtual void SetSqlGuid(int ordinal, System.Data.SqlTypes.SqlGuid value) => throw null; + public virtual void SetSqlInt16(int ordinal, System.Data.SqlTypes.SqlInt16 value) => throw null; + public virtual void SetSqlInt32(int ordinal, System.Data.SqlTypes.SqlInt32 value) => throw null; + public virtual void SetSqlInt64(int ordinal, System.Data.SqlTypes.SqlInt64 value) => throw null; + public virtual void SetSqlMoney(int ordinal, System.Data.SqlTypes.SqlMoney value) => throw null; + public virtual void SetSqlSingle(int ordinal, System.Data.SqlTypes.SqlSingle value) => throw null; + public virtual void SetSqlString(int ordinal, System.Data.SqlTypes.SqlString value) => throw null; + public virtual void SetSqlXml(int ordinal, System.Data.SqlTypes.SqlXml value) => throw null; + public virtual void SetString(int ordinal, string value) => throw null; + public virtual void SetTimeSpan(int ordinal, System.TimeSpan value) => throw null; + public virtual void SetValue(int ordinal, object value) => throw null; + public virtual int SetValues(params object[] values) => throw null; + public virtual object this[int ordinal] { get => throw null; } + public virtual object this[string name] { get => throw null; } + } + public sealed class SqlMetaData + { + public bool Adjust(bool value) => throw null; + public byte Adjust(byte value) => throw null; + public byte[] Adjust(byte[] value) => throw null; + public char Adjust(char value) => throw null; + public char[] Adjust(char[] value) => throw null; + public System.Data.SqlTypes.SqlBinary Adjust(System.Data.SqlTypes.SqlBinary value) => throw null; + public System.Data.SqlTypes.SqlBoolean Adjust(System.Data.SqlTypes.SqlBoolean value) => throw null; + public System.Data.SqlTypes.SqlByte Adjust(System.Data.SqlTypes.SqlByte value) => throw null; + public System.Data.SqlTypes.SqlBytes Adjust(System.Data.SqlTypes.SqlBytes value) => throw null; + public System.Data.SqlTypes.SqlChars Adjust(System.Data.SqlTypes.SqlChars value) => throw null; + public System.Data.SqlTypes.SqlDateTime Adjust(System.Data.SqlTypes.SqlDateTime value) => throw null; + public System.Data.SqlTypes.SqlDecimal Adjust(System.Data.SqlTypes.SqlDecimal value) => throw null; + public System.Data.SqlTypes.SqlDouble Adjust(System.Data.SqlTypes.SqlDouble value) => throw null; + public System.Data.SqlTypes.SqlGuid Adjust(System.Data.SqlTypes.SqlGuid value) => throw null; + public System.Data.SqlTypes.SqlInt16 Adjust(System.Data.SqlTypes.SqlInt16 value) => throw null; + public System.Data.SqlTypes.SqlInt32 Adjust(System.Data.SqlTypes.SqlInt32 value) => throw null; + public System.Data.SqlTypes.SqlInt64 Adjust(System.Data.SqlTypes.SqlInt64 value) => throw null; + public System.Data.SqlTypes.SqlMoney Adjust(System.Data.SqlTypes.SqlMoney value) => throw null; + public System.Data.SqlTypes.SqlSingle Adjust(System.Data.SqlTypes.SqlSingle value) => throw null; + public System.Data.SqlTypes.SqlString Adjust(System.Data.SqlTypes.SqlString value) => throw null; + public System.Data.SqlTypes.SqlXml Adjust(System.Data.SqlTypes.SqlXml value) => throw null; + public System.DateTime Adjust(System.DateTime value) => throw null; + public System.DateTimeOffset Adjust(System.DateTimeOffset value) => throw null; + public decimal Adjust(decimal value) => throw null; + public double Adjust(double value) => throw null; + public System.Guid Adjust(System.Guid value) => throw null; + public short Adjust(short value) => throw null; + public int Adjust(int value) => throw null; + public long Adjust(long value) => throw null; + public object Adjust(object value) => throw null; + public float Adjust(float value) => throw null; + public string Adjust(string value) => throw null; + public System.TimeSpan Adjust(System.TimeSpan value) => throw null; + public System.Data.SqlTypes.SqlCompareOptions CompareOptions { get => throw null; } + public SqlMetaData(string name, System.Data.SqlDbType dbType) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, bool useServerDefault, bool isUniqueKey, Microsoft.Data.SqlClient.SortOrder columnSortOrder, int sortOrdinal) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, byte precision, byte scale) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, byte precision, byte scale, bool useServerDefault, bool isUniqueKey, Microsoft.Data.SqlClient.SortOrder columnSortOrder, int sortOrdinal) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, long maxLength) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, long maxLength, bool useServerDefault, bool isUniqueKey, Microsoft.Data.SqlClient.SortOrder columnSortOrder, int sortOrdinal) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, long maxLength, byte precision, byte scale, long locale, System.Data.SqlTypes.SqlCompareOptions compareOptions, System.Type userDefinedType) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, long maxLength, byte precision, byte scale, long localeId, System.Data.SqlTypes.SqlCompareOptions compareOptions, System.Type userDefinedType, bool useServerDefault, bool isUniqueKey, Microsoft.Data.SqlClient.SortOrder columnSortOrder, int sortOrdinal) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, long maxLength, long locale, System.Data.SqlTypes.SqlCompareOptions compareOptions) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, long maxLength, long locale, System.Data.SqlTypes.SqlCompareOptions compareOptions, bool useServerDefault, bool isUniqueKey, Microsoft.Data.SqlClient.SortOrder columnSortOrder, int sortOrdinal) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, string database, string owningSchema, string objectName) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, string database, string owningSchema, string objectName, bool useServerDefault, bool isUniqueKey, Microsoft.Data.SqlClient.SortOrder columnSortOrder, int sortOrdinal) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, System.Type userDefinedType) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, System.Type userDefinedType, string serverTypeName) => throw null; + public SqlMetaData(string name, System.Data.SqlDbType dbType, System.Type userDefinedType, string serverTypeName, bool useServerDefault, bool isUniqueKey, Microsoft.Data.SqlClient.SortOrder columnSortOrder, int sortOrdinal) => throw null; + public System.Data.DbType DbType { get => throw null; } + public static Microsoft.Data.SqlClient.Server.SqlMetaData InferFromValue(object value, string name) => throw null; + public bool IsUniqueKey { get => throw null; } + public long LocaleId { get => throw null; } + public static long Max { get => throw null; } + public long MaxLength { get => throw null; } + public string Name { get => throw null; } + public byte Precision { get => throw null; } + public byte Scale { get => throw null; } + public Microsoft.Data.SqlClient.SortOrder SortOrder { get => throw null; } + public int SortOrdinal { get => throw null; } + public System.Data.SqlDbType SqlDbType { get => throw null; } + public System.Type Type { get => throw null; } + public string TypeName { get => throw null; } + public bool UseServerDefault { get => throw null; } + public string XmlSchemaCollectionDatabase { get => throw null; } + public string XmlSchemaCollectionName { get => throw null; } + public string XmlSchemaCollectionOwningSchema { get => throw null; } + } + } + public enum SortOrder + { + Unspecified = -1, + Ascending = 0, + Descending = 1, + } + public abstract class SqlAuthenticationInitializer + { + protected SqlAuthenticationInitializer() => throw null; + public abstract void Initialize(); + } + public enum SqlAuthenticationMethod + { + NotSpecified = 0, + SqlPassword = 1, + ActiveDirectoryPassword = 2, + ActiveDirectoryIntegrated = 3, + ActiveDirectoryInteractive = 4, + ActiveDirectoryServicePrincipal = 5, + ActiveDirectoryDeviceCodeFlow = 6, + ActiveDirectoryManagedIdentity = 7, + ActiveDirectoryMSI = 8, + ActiveDirectoryDefault = 9, + ActiveDirectoryWorkloadIdentity = 10, + } + public class SqlAuthenticationParameters + { + public Microsoft.Data.SqlClient.SqlAuthenticationMethod AuthenticationMethod { get => throw null; } + public string Authority { get => throw null; } + public System.Guid ConnectionId { get => throw null; } + public int ConnectionTimeout { get => throw null; } + protected SqlAuthenticationParameters(Microsoft.Data.SqlClient.SqlAuthenticationMethod authenticationMethod, string serverName, string databaseName, string resource, string authority, string userId, string password, System.Guid connectionId, int connectionTimeout) => throw null; + public string DatabaseName { get => throw null; } + public string Password { get => throw null; } + public string Resource { get => throw null; } + public string ServerName { get => throw null; } + public string UserId { get => throw null; } + } + public abstract class SqlAuthenticationProvider + { + public abstract System.Threading.Tasks.Task AcquireTokenAsync(Microsoft.Data.SqlClient.SqlAuthenticationParameters parameters); + public virtual void BeforeLoad(Microsoft.Data.SqlClient.SqlAuthenticationMethod authenticationMethod) => throw null; + public virtual void BeforeUnload(Microsoft.Data.SqlClient.SqlAuthenticationMethod authenticationMethod) => throw null; + protected SqlAuthenticationProvider() => throw null; + public static Microsoft.Data.SqlClient.SqlAuthenticationProvider GetProvider(Microsoft.Data.SqlClient.SqlAuthenticationMethod authenticationMethod) => throw null; + public abstract bool IsSupported(Microsoft.Data.SqlClient.SqlAuthenticationMethod authenticationMethod); + public static bool SetProvider(Microsoft.Data.SqlClient.SqlAuthenticationMethod authenticationMethod, Microsoft.Data.SqlClient.SqlAuthenticationProvider provider) => throw null; + } + public class SqlAuthenticationToken + { + public string AccessToken { get => throw null; } + public SqlAuthenticationToken(string accessToken, System.DateTimeOffset expiresOn) => throw null; + public System.DateTimeOffset ExpiresOn { get => throw null; } + } + public class SqlBatch : System.Data.Common.DbBatch + { + public Microsoft.Data.SqlClient.SqlBatchCommandCollection BatchCommands { get => throw null; } + public override void Cancel() => throw null; + public System.Collections.Generic.List Commands { get => throw null; } + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; set { } } + protected override System.Data.Common.DbBatchCommand CreateDbBatchCommand() => throw null; + public SqlBatch() => throw null; + public SqlBatch(Microsoft.Data.SqlClient.SqlConnection connection, Microsoft.Data.SqlClient.SqlTransaction transaction = default(Microsoft.Data.SqlClient.SqlTransaction)) => throw null; + protected override System.Data.Common.DbBatchCommandCollection DbBatchCommands { get => throw null; } + protected override System.Data.Common.DbConnection DbConnection { get => throw null; set { } } + protected override System.Data.Common.DbTransaction DbTransaction { get => throw null; set { } } + public override void Dispose() => throw null; + protected override System.Data.Common.DbDataReader ExecuteDbDataReader(System.Data.CommandBehavior behavior) => throw null; + protected override System.Threading.Tasks.Task ExecuteDbDataReaderAsync(System.Data.CommandBehavior behavior, System.Threading.CancellationToken cancellationToken) => throw null; + public override int ExecuteNonQuery() => throw null; + public override System.Threading.Tasks.Task ExecuteNonQueryAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public Microsoft.Data.SqlClient.SqlDataReader ExecuteReader() => throw null; + public System.Threading.Tasks.Task ExecuteReaderAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override object ExecuteScalar() => throw null; + public override System.Threading.Tasks.Task ExecuteScalarAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override void Prepare() => throw null; + public override System.Threading.Tasks.Task PrepareAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public override int Timeout { get => throw null; set { } } + public Microsoft.Data.SqlClient.SqlTransaction Transaction { get => throw null; set { } } + } + public class SqlBatchCommand : System.Data.Common.DbBatchCommand + { + public Microsoft.Data.SqlClient.SqlCommandColumnEncryptionSetting ColumnEncryptionSetting { get => throw null; set { } } + public System.Data.CommandBehavior CommandBehavior { get => throw null; set { } } + public override string CommandText { get => throw null; set { } } + public override System.Data.CommandType CommandType { get => throw null; set { } } + public SqlBatchCommand() => throw null; + public SqlBatchCommand(string commandText, System.Data.CommandType commandType = default(System.Data.CommandType), System.Collections.Generic.IEnumerable parameters = default(System.Collections.Generic.IEnumerable), Microsoft.Data.SqlClient.SqlCommandColumnEncryptionSetting columnEncryptionSetting = default(Microsoft.Data.SqlClient.SqlCommandColumnEncryptionSetting)) => throw null; + protected override System.Data.Common.DbParameterCollection DbParameterCollection { get => throw null; } + public Microsoft.Data.SqlClient.SqlParameterCollection Parameters { get => throw null; } + public override int RecordsAffected { get => throw null; } + } + public class SqlBatchCommandCollection : System.Data.Common.DbBatchCommandCollection, System.Collections.Generic.ICollection, System.Collections.Generic.IEnumerable, System.Collections.IEnumerable, System.Collections.Generic.IList + { + public void Add(Microsoft.Data.SqlClient.SqlBatchCommand item) => throw null; + public override void Add(System.Data.Common.DbBatchCommand item) => throw null; + public override void Clear() => throw null; + public bool Contains(Microsoft.Data.SqlClient.SqlBatchCommand item) => throw null; + public override bool Contains(System.Data.Common.DbBatchCommand item) => throw null; + public void CopyTo(Microsoft.Data.SqlClient.SqlBatchCommand[] array, int arrayIndex) => throw null; + public override void CopyTo(System.Data.Common.DbBatchCommand[] array, int arrayIndex) => throw null; + public override int Count { get => throw null; } + public SqlBatchCommandCollection() => throw null; + protected override System.Data.Common.DbBatchCommand GetBatchCommand(int index) => throw null; + System.Collections.Generic.IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator() => throw null; + public override System.Collections.Generic.IEnumerator GetEnumerator() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public int IndexOf(Microsoft.Data.SqlClient.SqlBatchCommand item) => throw null; + public override int IndexOf(System.Data.Common.DbBatchCommand item) => throw null; + public void Insert(int index, Microsoft.Data.SqlClient.SqlBatchCommand item) => throw null; + public override void Insert(int index, System.Data.Common.DbBatchCommand item) => throw null; + public override bool IsReadOnly { get => throw null; } + Microsoft.Data.SqlClient.SqlBatchCommand System.Collections.Generic.IList.this[int index] { get => throw null; set { } } + public bool Remove(Microsoft.Data.SqlClient.SqlBatchCommand item) => throw null; + public override bool Remove(System.Data.Common.DbBatchCommand item) => throw null; + public override void RemoveAt(int index) => throw null; + protected override void SetBatchCommand(int index, System.Data.Common.DbBatchCommand batchCommand) => throw null; + public Microsoft.Data.SqlClient.SqlBatchCommand this[int index] { get => throw null; set { } } + } + public sealed class SqlBulkCopy : System.IDisposable + { + public int BatchSize { get => throw null; set { } } + public int BulkCopyTimeout { get => throw null; set { } } + public void Close() => throw null; + public Microsoft.Data.SqlClient.SqlBulkCopyColumnMappingCollection ColumnMappings { get => throw null; } + public Microsoft.Data.SqlClient.SqlBulkCopyColumnOrderHintCollection ColumnOrderHints { get => throw null; } + public SqlBulkCopy(Microsoft.Data.SqlClient.SqlConnection connection) => throw null; + public SqlBulkCopy(Microsoft.Data.SqlClient.SqlConnection connection, Microsoft.Data.SqlClient.SqlBulkCopyOptions copyOptions, Microsoft.Data.SqlClient.SqlTransaction externalTransaction) => throw null; + public SqlBulkCopy(string connectionString) => throw null; + public SqlBulkCopy(string connectionString, Microsoft.Data.SqlClient.SqlBulkCopyOptions copyOptions) => throw null; + public string DestinationTableName { get => throw null; set { } } + void System.IDisposable.Dispose() => throw null; + public bool EnableStreaming { get => throw null; set { } } + public int NotifyAfter { get => throw null; set { } } + public int RowsCopied { get => throw null; } + public long RowsCopied64 { get => throw null; } + public event Microsoft.Data.SqlClient.SqlRowsCopiedEventHandler SqlRowsCopied; + public void WriteToServer(System.Data.Common.DbDataReader reader) => throw null; + public void WriteToServer(System.Data.DataTable table) => throw null; + public void WriteToServer(System.Data.DataTable table, System.Data.DataRowState rowState) => throw null; + public void WriteToServer(System.Data.DataRow[] rows) => throw null; + public void WriteToServer(System.Data.IDataReader reader) => throw null; + public System.Threading.Tasks.Task WriteToServerAsync(System.Data.Common.DbDataReader reader) => throw null; + public System.Threading.Tasks.Task WriteToServerAsync(System.Data.Common.DbDataReader reader, System.Threading.CancellationToken cancellationToken) => throw null; + public System.Threading.Tasks.Task WriteToServerAsync(System.Data.DataRow[] rows) => throw null; + public System.Threading.Tasks.Task WriteToServerAsync(System.Data.DataRow[] rows, System.Threading.CancellationToken cancellationToken) => throw null; + public System.Threading.Tasks.Task WriteToServerAsync(System.Data.DataTable table) => throw null; + public System.Threading.Tasks.Task WriteToServerAsync(System.Data.DataTable table, System.Data.DataRowState rowState) => throw null; + public System.Threading.Tasks.Task WriteToServerAsync(System.Data.DataTable table, System.Data.DataRowState rowState, System.Threading.CancellationToken cancellationToken) => throw null; + public System.Threading.Tasks.Task WriteToServerAsync(System.Data.DataTable table, System.Threading.CancellationToken cancellationToken) => throw null; + public System.Threading.Tasks.Task WriteToServerAsync(System.Data.IDataReader reader) => throw null; + public System.Threading.Tasks.Task WriteToServerAsync(System.Data.IDataReader reader, System.Threading.CancellationToken cancellationToken) => throw null; + } + public sealed class SqlBulkCopyColumnMapping + { + public SqlBulkCopyColumnMapping() => throw null; + public SqlBulkCopyColumnMapping(int sourceColumnOrdinal, int destinationOrdinal) => throw null; + public SqlBulkCopyColumnMapping(int sourceColumnOrdinal, string destinationColumn) => throw null; + public SqlBulkCopyColumnMapping(string sourceColumn, int destinationOrdinal) => throw null; + public SqlBulkCopyColumnMapping(string sourceColumn, string destinationColumn) => throw null; + public string DestinationColumn { get => throw null; set { } } + public int DestinationOrdinal { get => throw null; set { } } + public string SourceColumn { get => throw null; set { } } + public int SourceOrdinal { get => throw null; set { } } + } + public sealed class SqlBulkCopyColumnMappingCollection : System.Collections.CollectionBase + { + public Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping Add(Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping bulkCopyColumnMapping) => throw null; + public Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping Add(int sourceColumnIndex, int destinationColumnIndex) => throw null; + public Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping Add(int sourceColumnIndex, string destinationColumn) => throw null; + public Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping Add(string sourceColumn, int destinationColumnIndex) => throw null; + public Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping Add(string sourceColumn, string destinationColumn) => throw null; + public void Clear() => throw null; + public bool Contains(Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping value) => throw null; + public void CopyTo(Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping[] array, int index) => throw null; + public int IndexOf(Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping value) => throw null; + public void Insert(int index, Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping value) => throw null; + public void Remove(Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping value) => throw null; + public void RemoveAt(int index) => throw null; + public Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping this[int index] { get => throw null; } + } + public sealed class SqlBulkCopyColumnOrderHint + { + public string Column { get => throw null; set { } } + public SqlBulkCopyColumnOrderHint(string column, Microsoft.Data.SqlClient.SortOrder sortOrder) => throw null; + public Microsoft.Data.SqlClient.SortOrder SortOrder { get => throw null; set { } } + } + public sealed class SqlBulkCopyColumnOrderHintCollection : System.Collections.CollectionBase + { + public Microsoft.Data.SqlClient.SqlBulkCopyColumnOrderHint Add(Microsoft.Data.SqlClient.SqlBulkCopyColumnOrderHint columnOrderHint) => throw null; + public Microsoft.Data.SqlClient.SqlBulkCopyColumnOrderHint Add(string column, Microsoft.Data.SqlClient.SortOrder sortOrder) => throw null; + public void Clear() => throw null; + public bool Contains(Microsoft.Data.SqlClient.SqlBulkCopyColumnOrderHint value) => throw null; + public void CopyTo(Microsoft.Data.SqlClient.SqlBulkCopyColumnOrderHint[] array, int index) => throw null; + public SqlBulkCopyColumnOrderHintCollection() => throw null; + public int IndexOf(Microsoft.Data.SqlClient.SqlBulkCopyColumnOrderHint value) => throw null; + public void Insert(int index, Microsoft.Data.SqlClient.SqlBulkCopyColumnOrderHint columnOrderHint) => throw null; + public void Remove(Microsoft.Data.SqlClient.SqlBulkCopyColumnOrderHint columnOrderHint) => throw null; + public void RemoveAt(int index) => throw null; + public Microsoft.Data.SqlClient.SqlBulkCopyColumnOrderHint this[int index] { get => throw null; } + } + [System.Flags] + public enum SqlBulkCopyOptions + { + AllowEncryptedValueModifications = 64, + CheckConstraints = 2, + Default = 0, + FireTriggers = 16, + KeepIdentity = 1, + KeepNulls = 8, + TableLock = 4, + UseInternalTransaction = 32, + } + public sealed class SqlClientFactory : System.Data.Common.DbProviderFactory + { + public override bool CanCreateBatch { get => throw null; } + public override System.Data.Common.DbBatch CreateBatch() => throw null; + public override System.Data.Common.DbBatchCommand CreateBatchCommand() => throw null; + public override System.Data.Common.DbCommand CreateCommand() => throw null; + public override System.Data.Common.DbCommandBuilder CreateCommandBuilder() => throw null; + public override System.Data.Common.DbConnection CreateConnection() => throw null; + public override System.Data.Common.DbConnectionStringBuilder CreateConnectionStringBuilder() => throw null; + public override System.Data.Common.DbDataAdapter CreateDataAdapter() => throw null; + public override System.Data.Common.DbDataSourceEnumerator CreateDataSourceEnumerator() => throw null; + public override System.Data.Common.DbParameter CreateParameter() => throw null; + public static readonly Microsoft.Data.SqlClient.SqlClientFactory Instance; + } + public class SqlClientLogger + { + public SqlClientLogger() => throw null; + public bool IsLoggingEnabled { get => throw null; } + public bool LogAssert(bool value, string type, string method, string message) => throw null; + public void LogError(string type, string method, string message) => throw null; + public void LogInfo(string type, string method, string message) => throw null; + public void LogWarning(string type, string method, string message) => throw null; + } + public static class SqlClientMetaDataCollectionNames + { + public static readonly string AllColumns; + public static readonly string Columns; + public static readonly string ColumnSetColumns; + public static readonly string Databases; + public static readonly string ForeignKeys; + public static readonly string IndexColumns; + public static readonly string Indexes; + public static readonly string ProcedureParameters; + public static readonly string Procedures; + public static readonly string StructuredTypeMembers; + public static readonly string Tables; + public static readonly string UserDefinedTypes; + public static readonly string Users; + public static readonly string ViewColumns; + public static readonly string Views; + } + public class SqlColumnEncryptionCertificateStoreProvider : Microsoft.Data.SqlClient.SqlColumnEncryptionKeyStoreProvider + { + public SqlColumnEncryptionCertificateStoreProvider() => throw null; + public override byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) => throw null; + public override byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey) => throw null; + public const string ProviderName = default; + public override byte[] SignColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations) => throw null; + public override bool VerifyColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations, byte[] signature) => throw null; + } + public class SqlColumnEncryptionCngProvider : Microsoft.Data.SqlClient.SqlColumnEncryptionKeyStoreProvider + { + public SqlColumnEncryptionCngProvider() => throw null; + public override byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) => throw null; + public override byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey) => throw null; + public const string ProviderName = default; + public override byte[] SignColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations) => throw null; + public override bool VerifyColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations, byte[] signature) => throw null; + } + public class SqlColumnEncryptionCspProvider : Microsoft.Data.SqlClient.SqlColumnEncryptionKeyStoreProvider + { + public SqlColumnEncryptionCspProvider() => throw null; + public override byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) => throw null; + public override byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey) => throw null; + public const string ProviderName = default; + public override byte[] SignColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations) => throw null; + public override bool VerifyColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations, byte[] signature) => throw null; + } + public abstract class SqlColumnEncryptionKeyStoreProvider + { + public virtual System.TimeSpan? ColumnEncryptionKeyCacheTtl { get => throw null; set { } } + protected SqlColumnEncryptionKeyStoreProvider() => throw null; + public abstract byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey); + public abstract byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey); + public virtual byte[] SignColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations) => throw null; + public virtual bool VerifyColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations, byte[] signature) => throw null; + } + public sealed class SqlCommand : System.Data.Common.DbCommand, System.ICloneable + { + public System.IAsyncResult BeginExecuteNonQuery() => throw null; + public System.IAsyncResult BeginExecuteNonQuery(System.AsyncCallback callback, object stateObject) => throw null; + public System.IAsyncResult BeginExecuteReader() => throw null; + public System.IAsyncResult BeginExecuteReader(System.AsyncCallback callback, object stateObject) => throw null; + public System.IAsyncResult BeginExecuteReader(System.AsyncCallback callback, object stateObject, System.Data.CommandBehavior behavior) => throw null; + public System.IAsyncResult BeginExecuteReader(System.Data.CommandBehavior behavior) => throw null; + public System.IAsyncResult BeginExecuteXmlReader() => throw null; + public System.IAsyncResult BeginExecuteXmlReader(System.AsyncCallback callback, object stateObject) => throw null; + public override void Cancel() => throw null; + object System.ICloneable.Clone() => throw null; + public Microsoft.Data.SqlClient.SqlCommand Clone() => throw null; + public Microsoft.Data.SqlClient.SqlCommandColumnEncryptionSetting ColumnEncryptionSetting { get => throw null; } + public override string CommandText { get => throw null; set { } } + public override int CommandTimeout { get => throw null; set { } } + public override System.Data.CommandType CommandType { get => throw null; set { } } + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; set { } } + protected override System.Data.Common.DbParameter CreateDbParameter() => throw null; + public Microsoft.Data.SqlClient.SqlParameter CreateParameter() => throw null; + public SqlCommand() => throw null; + public SqlCommand(string cmdText) => throw null; + public SqlCommand(string cmdText, Microsoft.Data.SqlClient.SqlConnection connection) => throw null; + public SqlCommand(string cmdText, Microsoft.Data.SqlClient.SqlConnection connection, Microsoft.Data.SqlClient.SqlTransaction transaction) => throw null; + public SqlCommand(string cmdText, Microsoft.Data.SqlClient.SqlConnection connection, Microsoft.Data.SqlClient.SqlTransaction transaction, Microsoft.Data.SqlClient.SqlCommandColumnEncryptionSetting columnEncryptionSetting) => throw null; + protected override System.Data.Common.DbConnection DbConnection { get => throw null; set { } } + protected override System.Data.Common.DbParameterCollection DbParameterCollection { get => throw null; } + protected override System.Data.Common.DbTransaction DbTransaction { get => throw null; set { } } + public override bool DesignTimeVisible { get => throw null; set { } } + protected override void Dispose(bool disposing) => throw null; + public bool EnableOptimizedParameterBinding { get => throw null; set { } } + public int EndExecuteNonQuery(System.IAsyncResult asyncResult) => throw null; + public Microsoft.Data.SqlClient.SqlDataReader EndExecuteReader(System.IAsyncResult asyncResult) => throw null; + public System.Xml.XmlReader EndExecuteXmlReader(System.IAsyncResult asyncResult) => throw null; + protected override System.Data.Common.DbDataReader ExecuteDbDataReader(System.Data.CommandBehavior behavior) => throw null; + protected override System.Threading.Tasks.Task ExecuteDbDataReaderAsync(System.Data.CommandBehavior behavior, System.Threading.CancellationToken cancellationToken) => throw null; + public override int ExecuteNonQuery() => throw null; + public override System.Threading.Tasks.Task ExecuteNonQueryAsync(System.Threading.CancellationToken cancellationToken) => throw null; + public Microsoft.Data.SqlClient.SqlDataReader ExecuteReader() => throw null; + public Microsoft.Data.SqlClient.SqlDataReader ExecuteReader(System.Data.CommandBehavior behavior) => throw null; + public System.Threading.Tasks.Task ExecuteReaderAsync() => throw null; + public System.Threading.Tasks.Task ExecuteReaderAsync(System.Data.CommandBehavior behavior) => throw null; + public System.Threading.Tasks.Task ExecuteReaderAsync(System.Data.CommandBehavior behavior, System.Threading.CancellationToken cancellationToken) => throw null; + public System.Threading.Tasks.Task ExecuteReaderAsync(System.Threading.CancellationToken cancellationToken) => throw null; + public override object ExecuteScalar() => throw null; + public override System.Threading.Tasks.Task ExecuteScalarAsync(System.Threading.CancellationToken cancellationToken) => throw null; + public System.Xml.XmlReader ExecuteXmlReader() => throw null; + public System.Threading.Tasks.Task ExecuteXmlReaderAsync() => throw null; + public System.Threading.Tasks.Task ExecuteXmlReaderAsync(System.Threading.CancellationToken cancellationToken) => throw null; + public Microsoft.Data.Sql.SqlNotificationRequest Notification { get => throw null; set { } } + public Microsoft.Data.SqlClient.SqlParameterCollection Parameters { get => throw null; } + public override void Prepare() => throw null; + public void RegisterColumnEncryptionKeyStoreProvidersOnCommand(System.Collections.Generic.IDictionary customProviders) => throw null; + public void ResetCommandTimeout() => throw null; + public Microsoft.Data.SqlClient.SqlRetryLogicBaseProvider RetryLogicProvider { get => throw null; set { } } + public event System.Data.StatementCompletedEventHandler StatementCompleted; + public Microsoft.Data.SqlClient.SqlTransaction Transaction { get => throw null; set { } } + public override System.Data.UpdateRowSource UpdatedRowSource { get => throw null; set { } } + } + public sealed class SqlCommandBuilder : System.Data.Common.DbCommandBuilder + { + protected override void ApplyParameterInfo(System.Data.Common.DbParameter parameter, System.Data.DataRow datarow, System.Data.StatementType statementType, bool whereClause) => throw null; + public override System.Data.Common.CatalogLocation CatalogLocation { get => throw null; set { } } + public override string CatalogSeparator { get => throw null; set { } } + public SqlCommandBuilder() => throw null; + public SqlCommandBuilder(Microsoft.Data.SqlClient.SqlDataAdapter adapter) => throw null; + public Microsoft.Data.SqlClient.SqlDataAdapter DataAdapter { get => throw null; set { } } + public static void DeriveParameters(Microsoft.Data.SqlClient.SqlCommand command) => throw null; + public Microsoft.Data.SqlClient.SqlCommand GetDeleteCommand() => throw null; + public Microsoft.Data.SqlClient.SqlCommand GetDeleteCommand(bool useColumnsForParameterNames) => throw null; + public Microsoft.Data.SqlClient.SqlCommand GetInsertCommand() => throw null; + public Microsoft.Data.SqlClient.SqlCommand GetInsertCommand(bool useColumnsForParameterNames) => throw null; + protected override string GetParameterName(int parameterOrdinal) => throw null; + protected override string GetParameterName(string parameterName) => throw null; + protected override string GetParameterPlaceholder(int parameterOrdinal) => throw null; + protected override System.Data.DataTable GetSchemaTable(System.Data.Common.DbCommand srcCommand) => throw null; + public Microsoft.Data.SqlClient.SqlCommand GetUpdateCommand() => throw null; + public Microsoft.Data.SqlClient.SqlCommand GetUpdateCommand(bool useColumnsForParameterNames) => throw null; + protected override System.Data.Common.DbCommand InitializeCommand(System.Data.Common.DbCommand command) => throw null; + public override string QuoteIdentifier(string unquotedIdentifier) => throw null; + public override string QuotePrefix { get => throw null; set { } } + public override string QuoteSuffix { get => throw null; set { } } + public override string SchemaSeparator { get => throw null; set { } } + protected override void SetRowUpdatingHandler(System.Data.Common.DbDataAdapter adapter) => throw null; + public override string UnquoteIdentifier(string quotedIdentifier) => throw null; + } + public enum SqlCommandColumnEncryptionSetting + { + Disabled = 3, + Enabled = 1, + ResultSetOnly = 2, + UseConnectionSetting = 0, + } + public sealed class SqlConfigurableRetryFactory + { + public static Microsoft.Data.SqlClient.SqlRetryLogicBaseProvider CreateExponentialRetryProvider(Microsoft.Data.SqlClient.SqlRetryLogicOption retryLogicOption) => throw null; + public static Microsoft.Data.SqlClient.SqlRetryLogicBaseProvider CreateFixedRetryProvider(Microsoft.Data.SqlClient.SqlRetryLogicOption retryLogicOption) => throw null; + public static Microsoft.Data.SqlClient.SqlRetryLogicBaseProvider CreateIncrementalRetryProvider(Microsoft.Data.SqlClient.SqlRetryLogicOption retryLogicOption) => throw null; + public static Microsoft.Data.SqlClient.SqlRetryLogicBaseProvider CreateNoneRetryProvider() => throw null; + public SqlConfigurableRetryFactory() => throw null; + } + public sealed class SqlConnection : System.Data.Common.DbConnection, System.ICloneable + { + public string AccessToken { get => throw null; set { } } + public System.Func> AccessTokenCallback { get => throw null; set { } } + protected override System.Data.Common.DbTransaction BeginDbTransaction(System.Data.IsolationLevel isolationLevel) => throw null; + public Microsoft.Data.SqlClient.SqlTransaction BeginTransaction() => throw null; + public Microsoft.Data.SqlClient.SqlTransaction BeginTransaction(System.Data.IsolationLevel iso) => throw null; + public Microsoft.Data.SqlClient.SqlTransaction BeginTransaction(System.Data.IsolationLevel iso, string transactionName) => throw null; + public Microsoft.Data.SqlClient.SqlTransaction BeginTransaction(string transactionName) => throw null; + public override bool CanCreateBatch { get => throw null; } + public override void ChangeDatabase(string database) => throw null; + public static void ChangePassword(string connectionString, Microsoft.Data.SqlClient.SqlCredential credential, System.Security.SecureString newSecurePassword) => throw null; + public static void ChangePassword(string connectionString, string newPassword) => throw null; + public static void ClearAllPools() => throw null; + public static void ClearPool(Microsoft.Data.SqlClient.SqlConnection connection) => throw null; + public System.Guid ClientConnectionId { get => throw null; } + object System.ICloneable.Clone() => throw null; + public override void Close() => throw null; + public static System.TimeSpan ColumnEncryptionKeyCacheTtl { get => throw null; set { } } + public static bool ColumnEncryptionQueryMetadataCacheEnabled { get => throw null; set { } } + public static System.Collections.Generic.IDictionary> ColumnEncryptionTrustedMasterKeyPaths { get => throw null; } + public int CommandTimeout { get => throw null; } + public override string ConnectionString { get => throw null; set { } } + public override int ConnectionTimeout { get => throw null; } + public Microsoft.Data.SqlClient.SqlCommand CreateCommand() => throw null; + protected override System.Data.Common.DbBatch CreateDbBatch() => throw null; + protected override System.Data.Common.DbCommand CreateDbCommand() => throw null; + public Microsoft.Data.SqlClient.SqlCredential Credential { get => throw null; set { } } + public SqlConnection() => throw null; + public SqlConnection(string connectionString) => throw null; + public SqlConnection(string connectionString, Microsoft.Data.SqlClient.SqlCredential credential) => throw null; + public override string Database { get => throw null; } + public override string DataSource { get => throw null; } + protected override void Dispose(bool disposing) => throw null; + public bool FireInfoMessageEventOnUserErrors { get => throw null; set { } } + public override System.Data.DataTable GetSchema() => throw null; + public override System.Data.DataTable GetSchema(string collectionName) => throw null; + public override System.Data.DataTable GetSchema(string collectionName, string[] restrictionValues) => throw null; + public event Microsoft.Data.SqlClient.SqlInfoMessageEventHandler InfoMessage; + public override void Open() => throw null; + public void Open(Microsoft.Data.SqlClient.SqlConnectionOverrides overrides) => throw null; + public override System.Threading.Tasks.Task OpenAsync(System.Threading.CancellationToken cancellationToken) => throw null; + public System.Threading.Tasks.Task OpenAsync(Microsoft.Data.SqlClient.SqlConnectionOverrides overrides, System.Threading.CancellationToken cancellationToken) => throw null; + public int PacketSize { get => throw null; } + public static void RegisterColumnEncryptionKeyStoreProviders(System.Collections.Generic.IDictionary customProviders) => throw null; + public void RegisterColumnEncryptionKeyStoreProvidersOnConnection(System.Collections.Generic.IDictionary customProviders) => throw null; + public void ResetStatistics() => throw null; + public System.Collections.Generic.IDictionary RetrieveInternalInfo() => throw null; + public System.Collections.IDictionary RetrieveStatistics() => throw null; + public Microsoft.Data.SqlClient.SqlRetryLogicBaseProvider RetryLogicProvider { get => throw null; set { } } + public int ServerProcessId { get => throw null; } + public override string ServerVersion { get => throw null; } + public override System.Data.ConnectionState State { get => throw null; } + public bool StatisticsEnabled { get => throw null; set { } } + public string WorkstationId { get => throw null; } + } + public enum SqlConnectionAttestationProtocol + { + NotSpecified = 0, + AAS = 1, + None = 2, + HGS = 3, + } + public enum SqlConnectionColumnEncryptionSetting + { + Disabled = 0, + Enabled = 1, + } + public sealed class SqlConnectionEncryptOption + { + public SqlConnectionEncryptOption() => throw null; + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + public static Microsoft.Data.SqlClient.SqlConnectionEncryptOption Mandatory { get => throw null; } + public static implicit operator Microsoft.Data.SqlClient.SqlConnectionEncryptOption(bool value) => throw null; + public static implicit operator bool(Microsoft.Data.SqlClient.SqlConnectionEncryptOption value) => throw null; + public static Microsoft.Data.SqlClient.SqlConnectionEncryptOption Optional { get => throw null; } + public static Microsoft.Data.SqlClient.SqlConnectionEncryptOption Parse(string value) => throw null; + public static Microsoft.Data.SqlClient.SqlConnectionEncryptOption Strict { get => throw null; } + public override string ToString() => throw null; + public static bool TryParse(string value, out Microsoft.Data.SqlClient.SqlConnectionEncryptOption result) => throw null; + } + public enum SqlConnectionIPAddressPreference + { + IPv4First = 0, + IPv6First = 1, + UsePlatformDefault = 2, + } + public enum SqlConnectionOverrides + { + None = 0, + OpenWithoutRetry = 1, + } + public sealed class SqlConnectionStringBuilder : System.Data.Common.DbConnectionStringBuilder + { + public Microsoft.Data.SqlClient.ApplicationIntent ApplicationIntent { get => throw null; set { } } + public string ApplicationName { get => throw null; set { } } + public string AttachDBFilename { get => throw null; set { } } + public Microsoft.Data.SqlClient.SqlConnectionAttestationProtocol AttestationProtocol { get => throw null; set { } } + public Microsoft.Data.SqlClient.SqlAuthenticationMethod Authentication { get => throw null; set { } } + public override void Clear() => throw null; + public Microsoft.Data.SqlClient.SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting { get => throw null; set { } } + public int CommandTimeout { get => throw null; set { } } + public int ConnectRetryCount { get => throw null; set { } } + public int ConnectRetryInterval { get => throw null; set { } } + public int ConnectTimeout { get => throw null; set { } } + public override bool ContainsKey(string keyword) => throw null; + public SqlConnectionStringBuilder() => throw null; + public SqlConnectionStringBuilder(string connectionString) => throw null; + public string CurrentLanguage { get => throw null; set { } } + public string DataSource { get => throw null; set { } } + public string EnclaveAttestationUrl { get => throw null; set { } } + public Microsoft.Data.SqlClient.SqlConnectionEncryptOption Encrypt { get => throw null; set { } } + public bool Enlist { get => throw null; set { } } + public string FailoverPartner { get => throw null; set { } } + public string FailoverPartnerSPN { get => throw null; set { } } + public string HostNameInCertificate { get => throw null; set { } } + public string InitialCatalog { get => throw null; set { } } + public bool IntegratedSecurity { get => throw null; set { } } + public Microsoft.Data.SqlClient.SqlConnectionIPAddressPreference IPAddressPreference { get => throw null; set { } } + public override bool IsFixedSize { get => throw null; } + public override System.Collections.ICollection Keys { get => throw null; } + public int LoadBalanceTimeout { get => throw null; set { } } + public int MaxPoolSize { get => throw null; set { } } + public int MinPoolSize { get => throw null; set { } } + public bool MultipleActiveResultSets { get => throw null; set { } } + public bool MultiSubnetFailover { get => throw null; set { } } + public int PacketSize { get => throw null; set { } } + public string Password { get => throw null; set { } } + public bool PersistSecurityInfo { get => throw null; set { } } + public Microsoft.Data.SqlClient.PoolBlockingPeriod PoolBlockingPeriod { get => throw null; set { } } + public bool Pooling { get => throw null; set { } } + public override bool Remove(string keyword) => throw null; + public bool Replication { get => throw null; set { } } + public string ServerCertificate { get => throw null; set { } } + public string ServerSPN { get => throw null; set { } } + public override bool ShouldSerialize(string keyword) => throw null; + public override object this[string keyword] { get => throw null; set { } } + public string TransactionBinding { get => throw null; set { } } + public bool TrustServerCertificate { get => throw null; set { } } + public override bool TryGetValue(string keyword, out object value) => throw null; + public string TypeSystemVersion { get => throw null; set { } } + public string UserID { get => throw null; set { } } + public bool UserInstance { get => throw null; set { } } + public override System.Collections.ICollection Values { get => throw null; } + public string WorkstationID { get => throw null; set { } } + } + public sealed class SqlCredential + { + public SqlCredential(string userId, System.Security.SecureString password) => throw null; + public System.Security.SecureString Password { get => throw null; } + public string UserId { get => throw null; } + } + public sealed class SqlDataAdapter : System.Data.Common.DbDataAdapter, System.ICloneable, System.Data.IDataAdapter, System.Data.IDbDataAdapter + { + object System.ICloneable.Clone() => throw null; + public SqlDataAdapter() => throw null; + public SqlDataAdapter(Microsoft.Data.SqlClient.SqlCommand selectCommand) => throw null; + public SqlDataAdapter(string selectCommandText, Microsoft.Data.SqlClient.SqlConnection selectConnection) => throw null; + public SqlDataAdapter(string selectCommandText, string selectConnectionString) => throw null; + public Microsoft.Data.SqlClient.SqlCommand DeleteCommand { get => throw null; set { } } + System.Data.IDbCommand System.Data.IDbDataAdapter.DeleteCommand { get => throw null; set { } } + public Microsoft.Data.SqlClient.SqlCommand InsertCommand { get => throw null; set { } } + System.Data.IDbCommand System.Data.IDbDataAdapter.InsertCommand { get => throw null; set { } } + protected override void OnRowUpdated(System.Data.Common.RowUpdatedEventArgs value) => throw null; + protected override void OnRowUpdating(System.Data.Common.RowUpdatingEventArgs value) => throw null; + public event Microsoft.Data.SqlClient.SqlRowUpdatedEventHandler RowUpdated; + public event Microsoft.Data.SqlClient.SqlRowUpdatingEventHandler RowUpdating; + public Microsoft.Data.SqlClient.SqlCommand SelectCommand { get => throw null; set { } } + System.Data.IDbCommand System.Data.IDbDataAdapter.SelectCommand { get => throw null; set { } } + public override int UpdateBatchSize { get => throw null; set { } } + System.Data.IDbCommand System.Data.IDbDataAdapter.UpdateCommand { get => throw null; set { } } + public Microsoft.Data.SqlClient.SqlCommand UpdateCommand { get => throw null; set { } } + } + public class SqlDataReader : System.Data.Common.DbDataReader, System.Data.IDataReader, System.Data.IDataRecord, System.IDisposable + { + public override void Close() => throw null; + protected Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + public override int Depth { get => throw null; } + public override int FieldCount { get => throw null; } + public override bool GetBoolean(int i) => throw null; + public override byte GetByte(int i) => throw null; + public override long GetBytes(int i, long dataIndex, byte[] buffer, int bufferIndex, int length) => throw null; + public override char GetChar(int i) => throw null; + public override long GetChars(int i, long dataIndex, char[] buffer, int bufferIndex, int length) => throw null; + public System.Collections.ObjectModel.ReadOnlyCollection GetColumnSchema() => throw null; + System.Data.IDataReader System.Data.IDataRecord.GetData(int i) => throw null; + public override string GetDataTypeName(int i) => throw null; + public override System.DateTime GetDateTime(int i) => throw null; + public virtual System.DateTimeOffset GetDateTimeOffset(int i) => throw null; + public override decimal GetDecimal(int i) => throw null; + public override double GetDouble(int i) => throw null; + public override System.Collections.IEnumerator GetEnumerator() => throw null; + public override System.Type GetFieldType(int i) => throw null; + public override T GetFieldValue(int i) => throw null; + public override System.Threading.Tasks.Task GetFieldValueAsync(int i, System.Threading.CancellationToken cancellationToken) => throw null; + public override float GetFloat(int i) => throw null; + public override System.Guid GetGuid(int i) => throw null; + public override short GetInt16(int i) => throw null; + public override int GetInt32(int i) => throw null; + public override long GetInt64(int i) => throw null; + public override string GetName(int i) => throw null; + public override int GetOrdinal(string name) => throw null; + public override System.Type GetProviderSpecificFieldType(int i) => throw null; + public override object GetProviderSpecificValue(int i) => throw null; + public override int GetProviderSpecificValues(object[] values) => throw null; + public override System.Data.DataTable GetSchemaTable() => throw null; + public virtual System.Data.SqlTypes.SqlBinary GetSqlBinary(int i) => throw null; + public virtual System.Data.SqlTypes.SqlBoolean GetSqlBoolean(int i) => throw null; + public virtual System.Data.SqlTypes.SqlByte GetSqlByte(int i) => throw null; + public virtual System.Data.SqlTypes.SqlBytes GetSqlBytes(int i) => throw null; + public virtual System.Data.SqlTypes.SqlChars GetSqlChars(int i) => throw null; + public virtual System.Data.SqlTypes.SqlDateTime GetSqlDateTime(int i) => throw null; + public virtual System.Data.SqlTypes.SqlDecimal GetSqlDecimal(int i) => throw null; + public virtual System.Data.SqlTypes.SqlDouble GetSqlDouble(int i) => throw null; + public virtual System.Data.SqlTypes.SqlGuid GetSqlGuid(int i) => throw null; + public virtual System.Data.SqlTypes.SqlInt16 GetSqlInt16(int i) => throw null; + public virtual System.Data.SqlTypes.SqlInt32 GetSqlInt32(int i) => throw null; + public virtual System.Data.SqlTypes.SqlInt64 GetSqlInt64(int i) => throw null; + public virtual Microsoft.Data.SqlTypes.SqlJson GetSqlJson(int i) => throw null; + public virtual System.Data.SqlTypes.SqlMoney GetSqlMoney(int i) => throw null; + public virtual System.Data.SqlTypes.SqlSingle GetSqlSingle(int i) => throw null; + public virtual System.Data.SqlTypes.SqlString GetSqlString(int i) => throw null; + public virtual object GetSqlValue(int i) => throw null; + public virtual int GetSqlValues(object[] values) => throw null; + public virtual System.Data.SqlTypes.SqlXml GetSqlXml(int i) => throw null; + public override System.IO.Stream GetStream(int i) => throw null; + public override string GetString(int i) => throw null; + public override System.IO.TextReader GetTextReader(int i) => throw null; + public virtual System.TimeSpan GetTimeSpan(int i) => throw null; + public override object GetValue(int i) => throw null; + public override int GetValues(object[] values) => throw null; + public virtual System.Xml.XmlReader GetXmlReader(int i) => throw null; + public override bool HasRows { get => throw null; } + public override bool IsClosed { get => throw null; } + protected bool IsCommandBehavior(System.Data.CommandBehavior condition) => throw null; + public override bool IsDBNull(int i) => throw null; + public override System.Threading.Tasks.Task IsDBNullAsync(int i, System.Threading.CancellationToken cancellationToken) => throw null; + public override bool NextResult() => throw null; + public override System.Threading.Tasks.Task NextResultAsync(System.Threading.CancellationToken cancellationToken) => throw null; + public override bool Read() => throw null; + public override System.Threading.Tasks.Task ReadAsync(System.Threading.CancellationToken cancellationToken) => throw null; + public override int RecordsAffected { get => throw null; } + public Microsoft.Data.SqlClient.DataClassification.SensitivityClassification SensitivityClassification { get => throw null; } + public override object this[int i] { get => throw null; } + public override object this[string name] { get => throw null; } + public override int VisibleFieldCount { get => throw null; } + } + public sealed class SqlDependency + { + public void AddCommandDependency(Microsoft.Data.SqlClient.SqlCommand command) => throw null; + public SqlDependency() => throw null; + public SqlDependency(Microsoft.Data.SqlClient.SqlCommand command) => throw null; + public SqlDependency(Microsoft.Data.SqlClient.SqlCommand command, string options, int timeout) => throw null; + public bool HasChanges { get => throw null; } + public string Id { get => throw null; } + public event Microsoft.Data.SqlClient.OnChangeEventHandler OnChange; + public static bool Start(string connectionString) => throw null; + public static bool Start(string connectionString, string queue) => throw null; + public static bool Stop(string connectionString) => throw null; + public static bool Stop(string connectionString, string queue) => throw null; + } + public sealed class SqlError + { + public byte Class { get => throw null; } + public int LineNumber { get => throw null; } + public string Message { get => throw null; } + public int Number { get => throw null; } + public string Procedure { get => throw null; } + public string Server { get => throw null; } + public string Source { get => throw null; } + public byte State { get => throw null; } + public override string ToString() => throw null; + } + public sealed class SqlErrorCollection : System.Collections.ICollection, System.Collections.IEnumerable + { + public void CopyTo(System.Array array, int index) => throw null; + public void CopyTo(Microsoft.Data.SqlClient.SqlError[] array, int index) => throw null; + public int Count { get => throw null; } + public System.Collections.IEnumerator GetEnumerator() => throw null; + bool System.Collections.ICollection.IsSynchronized { get => throw null; } + object System.Collections.ICollection.SyncRoot { get => throw null; } + public Microsoft.Data.SqlClient.SqlError this[int index] { get => throw null; } + } + public sealed class SqlException : System.Data.Common.DbException + { + public Microsoft.Data.SqlClient.SqlBatchCommand BatchCommand { get => throw null; } + public byte Class { get => throw null; } + public System.Guid ClientConnectionId { get => throw null; } + protected override System.Data.Common.DbBatchCommand DbBatchCommand { get => throw null; } + public Microsoft.Data.SqlClient.SqlErrorCollection Errors { get => throw null; } + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo si, System.Runtime.Serialization.StreamingContext context) => throw null; + public int LineNumber { get => throw null; } + public int Number { get => throw null; } + public string Procedure { get => throw null; } + public string Server { get => throw null; } + public override string Source { get => throw null; } + public byte State { get => throw null; } + public override string ToString() => throw null; + } + public sealed class SqlInfoMessageEventArgs : System.EventArgs + { + public Microsoft.Data.SqlClient.SqlErrorCollection Errors { get => throw null; } + public string Message { get => throw null; } + public string Source { get => throw null; } + public override string ToString() => throw null; + } + public delegate void SqlInfoMessageEventHandler(object sender, Microsoft.Data.SqlClient.SqlInfoMessageEventArgs e); + public class SqlNotificationEventArgs : System.EventArgs + { + public SqlNotificationEventArgs(Microsoft.Data.SqlClient.SqlNotificationType type, Microsoft.Data.SqlClient.SqlNotificationInfo info, Microsoft.Data.SqlClient.SqlNotificationSource source) => throw null; + public Microsoft.Data.SqlClient.SqlNotificationInfo Info { get => throw null; } + public Microsoft.Data.SqlClient.SqlNotificationSource Source { get => throw null; } + public Microsoft.Data.SqlClient.SqlNotificationType Type { get => throw null; } + } + public enum SqlNotificationInfo + { + AlreadyChanged = -2, + Alter = 5, + Delete = 3, + Drop = 4, + Error = 7, + Expired = 12, + Insert = 1, + Invalid = 9, + Isolation = 11, + Merge = 16, + Options = 10, + PreviousFire = 14, + Query = 8, + Resource = 13, + Restart = 6, + TemplateLimit = 15, + Truncate = 0, + Unknown = -1, + Update = 2, + } + public enum SqlNotificationSource + { + Client = -2, + Data = 0, + Database = 3, + Environment = 6, + Execution = 7, + Object = 2, + Owner = 8, + Statement = 5, + System = 4, + Timeout = 1, + Unknown = -1, + } + public enum SqlNotificationType + { + Change = 0, + Subscribe = 1, + Unknown = -1, + } + public sealed class SqlParameter : System.Data.Common.DbParameter, System.ICloneable, System.Data.IDataParameter, System.Data.IDbDataParameter + { + object System.ICloneable.Clone() => throw null; + public System.Data.SqlTypes.SqlCompareOptions CompareInfo { get => throw null; set { } } + public SqlParameter() => throw null; + public SqlParameter(string parameterName, System.Data.SqlDbType dbType) => throw null; + public SqlParameter(string parameterName, System.Data.SqlDbType dbType, int size) => throw null; + public SqlParameter(string parameterName, System.Data.SqlDbType dbType, int size, System.Data.ParameterDirection direction, bool isNullable, byte precision, byte scale, string sourceColumn, System.Data.DataRowVersion sourceVersion, object value) => throw null; + public SqlParameter(string parameterName, System.Data.SqlDbType dbType, int size, System.Data.ParameterDirection direction, byte precision, byte scale, string sourceColumn, System.Data.DataRowVersion sourceVersion, bool sourceColumnNullMapping, object value, string xmlSchemaCollectionDatabase, string xmlSchemaCollectionOwningSchema, string xmlSchemaCollectionName) => throw null; + public SqlParameter(string parameterName, System.Data.SqlDbType dbType, int size, string sourceColumn) => throw null; + public SqlParameter(string parameterName, object value) => throw null; + public override System.Data.DbType DbType { get => throw null; set { } } + public override System.Data.ParameterDirection Direction { get => throw null; set { } } + public bool ForceColumnEncryption { get => throw null; set { } } + public override bool IsNullable { get => throw null; set { } } + public int LocaleId { get => throw null; set { } } + public int Offset { get => throw null; set { } } + public override string ParameterName { get => throw null; set { } } + public byte Precision { get => throw null; set { } } + public override void ResetDbType() => throw null; + public void ResetSqlDbType() => throw null; + public byte Scale { get => throw null; set { } } + public override int Size { get => throw null; set { } } + public override string SourceColumn { get => throw null; set { } } + public override bool SourceColumnNullMapping { get => throw null; set { } } + public override System.Data.DataRowVersion SourceVersion { get => throw null; set { } } + public System.Data.SqlDbType SqlDbType { get => throw null; set { } } + public object SqlValue { get => throw null; set { } } + public override string ToString() => throw null; + public string TypeName { get => throw null; set { } } + public string UdtTypeName { get => throw null; set { } } + public override object Value { get => throw null; set { } } + public string XmlSchemaCollectionDatabase { get => throw null; set { } } + public string XmlSchemaCollectionName { get => throw null; set { } } + public string XmlSchemaCollectionOwningSchema { get => throw null; set { } } + } + public sealed class SqlParameterCollection : System.Data.Common.DbParameterCollection + { + public Microsoft.Data.SqlClient.SqlParameter Add(Microsoft.Data.SqlClient.SqlParameter value) => throw null; + public override int Add(object value) => throw null; + public Microsoft.Data.SqlClient.SqlParameter Add(string parameterName, System.Data.SqlDbType sqlDbType) => throw null; + public Microsoft.Data.SqlClient.SqlParameter Add(string parameterName, System.Data.SqlDbType sqlDbType, int size) => throw null; + public Microsoft.Data.SqlClient.SqlParameter Add(string parameterName, System.Data.SqlDbType sqlDbType, int size, string sourceColumn) => throw null; + public void AddRange(Microsoft.Data.SqlClient.SqlParameter[] values) => throw null; + public override void AddRange(System.Array values) => throw null; + public Microsoft.Data.SqlClient.SqlParameter AddWithValue(string parameterName, object value) => throw null; + public override void Clear() => throw null; + public bool Contains(Microsoft.Data.SqlClient.SqlParameter value) => throw null; + public override bool Contains(object value) => throw null; + public override bool Contains(string value) => throw null; + public override void CopyTo(System.Array array, int index) => throw null; + public void CopyTo(Microsoft.Data.SqlClient.SqlParameter[] array, int index) => throw null; + public override int Count { get => throw null; } + public override System.Collections.IEnumerator GetEnumerator() => throw null; + protected override System.Data.Common.DbParameter GetParameter(int index) => throw null; + protected override System.Data.Common.DbParameter GetParameter(string parameterName) => throw null; + public int IndexOf(Microsoft.Data.SqlClient.SqlParameter value) => throw null; + public override int IndexOf(object value) => throw null; + public override int IndexOf(string parameterName) => throw null; + public void Insert(int index, Microsoft.Data.SqlClient.SqlParameter value) => throw null; + public override void Insert(int index, object value) => throw null; + public override bool IsFixedSize { get => throw null; } + public override bool IsReadOnly { get => throw null; } + public void Remove(Microsoft.Data.SqlClient.SqlParameter value) => throw null; + public override void Remove(object value) => throw null; + public override void RemoveAt(int index) => throw null; + public override void RemoveAt(string parameterName) => throw null; + protected override void SetParameter(int index, System.Data.Common.DbParameter value) => throw null; + protected override void SetParameter(string parameterName, System.Data.Common.DbParameter value) => throw null; + public override object SyncRoot { get => throw null; } + public Microsoft.Data.SqlClient.SqlParameter this[int index] { get => throw null; set { } } + public Microsoft.Data.SqlClient.SqlParameter this[string parameterName] { get => throw null; set { } } + } + public sealed class SqlRetryingEventArgs : System.EventArgs + { + public bool Cancel { get => throw null; set { } } + public SqlRetryingEventArgs(int retryCount, System.TimeSpan delay, System.Collections.Generic.IList exceptions) => throw null; + public System.TimeSpan Delay { get => throw null; } + public System.Collections.Generic.IList Exceptions { get => throw null; } + public int RetryCount { get => throw null; } + } + public abstract class SqlRetryIntervalBaseEnumerator : System.ICloneable, System.IDisposable, System.Collections.Generic.IEnumerator, System.Collections.IEnumerator + { + public virtual object Clone() => throw null; + public SqlRetryIntervalBaseEnumerator() => throw null; + public SqlRetryIntervalBaseEnumerator(System.TimeSpan timeInterval, System.TimeSpan maxTime, System.TimeSpan minTime) => throw null; + public System.TimeSpan Current { get => throw null; set { } } + object System.Collections.IEnumerator.Current { get => throw null; } + public virtual void Dispose() => throw null; + public System.TimeSpan GapTimeInterval { get => throw null; set { } } + protected abstract System.TimeSpan GetNextInterval(); + public System.TimeSpan MaxTimeInterval { get => throw null; set { } } + public System.TimeSpan MinTimeInterval { get => throw null; set { } } + public virtual bool MoveNext() => throw null; + public virtual void Reset() => throw null; + protected virtual void Validate(System.TimeSpan timeInterval, System.TimeSpan maxTimeInterval, System.TimeSpan minTimeInterval) => throw null; + } + public abstract class SqlRetryLogicBase : System.ICloneable + { + public virtual object Clone() => throw null; + protected SqlRetryLogicBase() => throw null; + public int Current { get => throw null; set { } } + public int NumberOfTries { get => throw null; set { } } + public abstract void Reset(); + public virtual bool RetryCondition(object sender) => throw null; + public Microsoft.Data.SqlClient.SqlRetryIntervalBaseEnumerator RetryIntervalEnumerator { get => throw null; set { } } + public System.Predicate TransientPredicate { get => throw null; set { } } + public abstract bool TryNextInterval(out System.TimeSpan intervalTime); + } + public abstract class SqlRetryLogicBaseProvider + { + protected SqlRetryLogicBaseProvider() => throw null; + public abstract TResult Execute(object sender, System.Func function); + public abstract System.Threading.Tasks.Task ExecuteAsync(object sender, System.Func> function, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + public abstract System.Threading.Tasks.Task ExecuteAsync(object sender, System.Func function, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + public System.EventHandler Retrying { get => throw null; set { } } + public Microsoft.Data.SqlClient.SqlRetryLogicBase RetryLogic { get => throw null; set { } } + } + public sealed class SqlRetryLogicOption + { + public System.Predicate AuthorizedSqlCondition { get => throw null; set { } } + public SqlRetryLogicOption() => throw null; + public System.TimeSpan DeltaTime { get => throw null; set { } } + public System.TimeSpan MaxTimeInterval { get => throw null; set { } } + public System.TimeSpan MinTimeInterval { get => throw null; set { } } + public int NumberOfTries { get => throw null; set { } } + public System.Collections.Generic.IEnumerable TransientErrors { get => throw null; set { } } + } + public class SqlRowsCopiedEventArgs : System.EventArgs + { + public bool Abort { get => throw null; set { } } + public SqlRowsCopiedEventArgs(long rowsCopied) => throw null; + public long RowsCopied { get => throw null; } + } + public delegate void SqlRowsCopiedEventHandler(object sender, Microsoft.Data.SqlClient.SqlRowsCopiedEventArgs e); + public sealed class SqlRowUpdatedEventArgs : System.Data.Common.RowUpdatedEventArgs + { + public Microsoft.Data.SqlClient.SqlCommand Command { get => throw null; } + public SqlRowUpdatedEventArgs(System.Data.DataRow row, System.Data.IDbCommand command, System.Data.StatementType statementType, System.Data.Common.DataTableMapping tableMapping) : base(default(System.Data.DataRow), default(System.Data.IDbCommand), default(System.Data.StatementType), default(System.Data.Common.DataTableMapping)) => throw null; + } + public delegate void SqlRowUpdatedEventHandler(object sender, Microsoft.Data.SqlClient.SqlRowUpdatedEventArgs e); + public sealed class SqlRowUpdatingEventArgs : System.Data.Common.RowUpdatingEventArgs + { + protected override System.Data.IDbCommand BaseCommand { get => throw null; set { } } + public Microsoft.Data.SqlClient.SqlCommand Command { get => throw null; set { } } + public SqlRowUpdatingEventArgs(System.Data.DataRow row, System.Data.IDbCommand command, System.Data.StatementType statementType, System.Data.Common.DataTableMapping tableMapping) : base(default(System.Data.DataRow), default(System.Data.IDbCommand), default(System.Data.StatementType), default(System.Data.Common.DataTableMapping)) => throw null; + } + public delegate void SqlRowUpdatingEventHandler(object sender, Microsoft.Data.SqlClient.SqlRowUpdatingEventArgs e); + public sealed class SqlTransaction : System.Data.Common.DbTransaction + { + public override void Commit() => throw null; + public Microsoft.Data.SqlClient.SqlConnection Connection { get => throw null; } + protected override System.Data.Common.DbConnection DbConnection { get => throw null; } + protected override void Dispose(bool disposing) => throw null; + public override System.Data.IsolationLevel IsolationLevel { get => throw null; } + public override void Rollback() => throw null; + public override void Rollback(string transactionName) => throw null; + public override void Save(string savePointName) => throw null; + } + } + public static partial class SqlDbTypeExtensions + { + public const System.Data.SqlDbType Json = default; + } + namespace SqlTypes + { + public sealed class SqlFileStream : System.IO.Stream + { + public override System.IAsyncResult BeginRead(byte[] buffer, int offset, int count, System.AsyncCallback callback, object state) => throw null; + public override System.IAsyncResult BeginWrite(byte[] buffer, int offset, int count, System.AsyncCallback callback, object state) => throw null; + public override bool CanRead { get => throw null; } + public override bool CanSeek { get => throw null; } + public override bool CanTimeout { get => throw null; } + public override bool CanWrite { get => throw null; } + public SqlFileStream(string path, byte[] transactionContext, System.IO.FileAccess access) => throw null; + public SqlFileStream(string path, byte[] transactionContext, System.IO.FileAccess access, System.IO.FileOptions options, long allocationSize) => throw null; + public override int EndRead(System.IAsyncResult asyncResult) => throw null; + public override void EndWrite(System.IAsyncResult asyncResult) => throw null; + public override void Flush() => throw null; + public override long Length { get => throw null; } + public string Name { get => throw null; } + public override long Position { get => throw null; set { } } + public override int Read(byte[] buffer, int offset, int count) => throw null; + public override int ReadByte() => throw null; + public override int ReadTimeout { get => throw null; } + public override long Seek(long offset, System.IO.SeekOrigin origin) => throw null; + public override void SetLength(long value) => throw null; + public byte[] TransactionContext { get => throw null; } + public override void Write(byte[] buffer, int offset, int count) => throw null; + public override void WriteByte(byte value) => throw null; + public override int WriteTimeout { get => throw null; } + } + public class SqlJson : System.Data.SqlTypes.INullable + { + public SqlJson() => throw null; + public SqlJson(string jsonString) => throw null; + public SqlJson(System.Text.Json.JsonDocument jsonDoc) => throw null; + public bool IsNull { get => throw null; } + public static Microsoft.Data.SqlTypes.SqlJson Null { get => throw null; } + public string Value { get => throw null; } + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/Microsoft.Data.SqlClient/6.0.2/Microsoft.Data.SqlClient.csproj b/csharp/ql/test/resources/stubs/Microsoft.Data.SqlClient/6.0.2/Microsoft.Data.SqlClient.csproj new file mode 100644 index 000000000000..457f65b723ba --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Data.SqlClient/6.0.2/Microsoft.Data.SqlClient.csproj @@ -0,0 +1,21 @@ + + + net9.0 + true + bin\ + false + + + + + + + + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.Extensions.Caching.Abstractions/9.0.4/Microsoft.Extensions.Caching.Abstractions.csproj b/csharp/ql/test/resources/stubs/Microsoft.Extensions.Caching.Abstractions/9.0.4/Microsoft.Extensions.Caching.Abstractions.csproj new file mode 100644 index 000000000000..ba6857adb2b9 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Extensions.Caching.Abstractions/9.0.4/Microsoft.Extensions.Caching.Abstractions.csproj @@ -0,0 +1,13 @@ + + + net9.0 + true + bin\ + false + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.Extensions.Caching.Memory/9.0.4/Microsoft.Extensions.Caching.Memory.csproj b/csharp/ql/test/resources/stubs/Microsoft.Extensions.Caching.Memory/9.0.4/Microsoft.Extensions.Caching.Memory.csproj new file mode 100644 index 000000000000..611dcc85a91d --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Extensions.Caching.Memory/9.0.4/Microsoft.Extensions.Caching.Memory.csproj @@ -0,0 +1,17 @@ + + + net9.0 + true + bin\ + false + + + + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.Extensions.DependencyInjection.Abstractions/9.0.4/Microsoft.Extensions.DependencyInjection.Abstractions.csproj b/csharp/ql/test/resources/stubs/Microsoft.Extensions.DependencyInjection.Abstractions/9.0.4/Microsoft.Extensions.DependencyInjection.Abstractions.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Extensions.DependencyInjection.Abstractions/9.0.4/Microsoft.Extensions.DependencyInjection.Abstractions.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.Extensions.Logging.Abstractions/9.0.4/Microsoft.Extensions.Logging.Abstractions.csproj b/csharp/ql/test/resources/stubs/Microsoft.Extensions.Logging.Abstractions/9.0.4/Microsoft.Extensions.Logging.Abstractions.csproj new file mode 100644 index 000000000000..24dcab514cf1 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Extensions.Logging.Abstractions/9.0.4/Microsoft.Extensions.Logging.Abstractions.csproj @@ -0,0 +1,13 @@ + + + net9.0 + true + bin\ + false + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.Extensions.Options/9.0.4/Microsoft.Extensions.Options.csproj b/csharp/ql/test/resources/stubs/Microsoft.Extensions.Options/9.0.4/Microsoft.Extensions.Options.csproj new file mode 100644 index 000000000000..be3f78d87fc7 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Extensions.Options/9.0.4/Microsoft.Extensions.Options.csproj @@ -0,0 +1,14 @@ + + + net9.0 + true + bin\ + false + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.Extensions.Primitives/9.0.4/Microsoft.Extensions.Primitives.csproj b/csharp/ql/test/resources/stubs/Microsoft.Extensions.Primitives/9.0.4/Microsoft.Extensions.Primitives.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Extensions.Primitives/9.0.4/Microsoft.Extensions.Primitives.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.Identity.Client.Extensions.Msal/4.61.3/Microsoft.Identity.Client.Extensions.Msal.cs b/csharp/ql/test/resources/stubs/Microsoft.Identity.Client.Extensions.Msal/4.61.3/Microsoft.Identity.Client.Extensions.Msal.cs new file mode 100644 index 000000000000..878df0d485a8 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Identity.Client.Extensions.Msal/4.61.3/Microsoft.Identity.Client.Extensions.Msal.cs @@ -0,0 +1,103 @@ +// This file contains auto-generated code. +// Generated from `Microsoft.Identity.Client.Extensions.Msal, Version=4.61.3.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae`. +namespace Microsoft +{ + namespace Identity + { + namespace Client + { + namespace Extensions + { + namespace Msal + { + public class CacheChangedEventArgs : System.EventArgs + { + public readonly System.Collections.Generic.IEnumerable AccountsAdded; + public readonly System.Collections.Generic.IEnumerable AccountsRemoved; + public CacheChangedEventArgs(System.Collections.Generic.IEnumerable added, System.Collections.Generic.IEnumerable removed) => throw null; + } + public sealed class CrossPlatLock : System.IDisposable + { + public CrossPlatLock(string lockfilePath, int lockFileRetryDelay = default(int), int lockFileRetryCount = default(int)) => throw null; + public void Dispose() => throw null; + } + public class MsalCacheHelper + { + public event System.EventHandler CacheChanged; + public void Clear() => throw null; + public static System.Threading.Tasks.Task CreateAsync(Microsoft.Identity.Client.Extensions.Msal.StorageCreationProperties storageCreationProperties, System.Diagnostics.TraceSource logger = default(System.Diagnostics.TraceSource)) => throw null; + public const string LinuxKeyRingDefaultCollection = default; + public const string LinuxKeyRingSessionCollection = default; + public byte[] LoadUnencryptedTokenCache() => throw null; + public void RegisterCache(Microsoft.Identity.Client.ITokenCache tokenCache) => throw null; + public void SaveUnencryptedTokenCache(byte[] tokenCache) => throw null; + public void UnregisterCache(Microsoft.Identity.Client.ITokenCache tokenCache) => throw null; + public static string UserRootDirectory { get => throw null; } + public void VerifyPersistence() => throw null; + } + public class MsalCachePersistenceException : System.Exception + { + public MsalCachePersistenceException() => throw null; + public MsalCachePersistenceException(string message) => throw null; + public MsalCachePersistenceException(string message, System.Exception innerException) => throw null; + protected MsalCachePersistenceException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public static class SharedUtilities + { + public static string GetUserRootDirectory() => throw null; + public static bool IsLinuxPlatform() => throw null; + public static bool IsMacPlatform() => throw null; + public static bool IsWindowsPlatform() => throw null; + } + public class Storage + { + public void Clear(bool ignoreExceptions = default(bool)) => throw null; + public static Microsoft.Identity.Client.Extensions.Msal.Storage Create(Microsoft.Identity.Client.Extensions.Msal.StorageCreationProperties creationProperties, System.Diagnostics.TraceSource logger = default(System.Diagnostics.TraceSource)) => throw null; + public byte[] ReadData() => throw null; + public void VerifyPersistence() => throw null; + public void WriteData(byte[] data) => throw null; + } + public class StorageCreationProperties + { + public string Authority { get => throw null; } + public readonly string CacheDirectory; + public readonly string CacheFileName; + public string CacheFilePath { get => throw null; } + public string ClientId { get => throw null; } + public readonly System.Collections.Generic.KeyValuePair KeyringAttribute1; + public readonly System.Collections.Generic.KeyValuePair KeyringAttribute2; + public readonly string KeyringCollection; + public readonly string KeyringSchemaName; + public readonly string KeyringSecretLabel; + public readonly int LockRetryCount; + public readonly int LockRetryDelay; + public readonly string MacKeyChainAccountName; + public readonly string MacKeyChainServiceName; + public readonly bool UseLinuxUnencryptedFallback; + public readonly bool UseUnencryptedFallback; + } + public class StorageCreationPropertiesBuilder + { + public Microsoft.Identity.Client.Extensions.Msal.StorageCreationProperties Build() => throw null; + public StorageCreationPropertiesBuilder(string cacheFileName, string cacheDirectory, string clientId) => throw null; + public StorageCreationPropertiesBuilder(string cacheFileName, string cacheDirectory) => throw null; + public Microsoft.Identity.Client.Extensions.Msal.StorageCreationPropertiesBuilder CustomizeLockRetry(int lockRetryDelay, int lockRetryCount) => throw null; + public Microsoft.Identity.Client.Extensions.Msal.StorageCreationPropertiesBuilder WithCacheChangedEvent(string clientId, string authority = default(string)) => throw null; + public Microsoft.Identity.Client.Extensions.Msal.StorageCreationPropertiesBuilder WithLinuxKeyring(string schemaName, string collection, string secretLabel, System.Collections.Generic.KeyValuePair attribute1, System.Collections.Generic.KeyValuePair attribute2) => throw null; + public Microsoft.Identity.Client.Extensions.Msal.StorageCreationPropertiesBuilder WithLinuxUnprotectedFile() => throw null; + public Microsoft.Identity.Client.Extensions.Msal.StorageCreationPropertiesBuilder WithMacKeyChain(string serviceName, string accountName) => throw null; + public Microsoft.Identity.Client.Extensions.Msal.StorageCreationPropertiesBuilder WithUnprotectedFile() => throw null; + } + public class TraceSourceLogger + { + public TraceSourceLogger(System.Diagnostics.TraceSource traceSource) => throw null; + public void LogError(string message) => throw null; + public void LogInformation(string message) => throw null; + public void LogWarning(string message) => throw null; + public System.Diagnostics.TraceSource Source { get => throw null; } + } + } + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/Microsoft.Identity.Client.Extensions.Msal/4.61.3/Microsoft.Identity.Client.Extensions.Msal.csproj b/csharp/ql/test/resources/stubs/Microsoft.Identity.Client.Extensions.Msal/4.61.3/Microsoft.Identity.Client.Extensions.Msal.csproj new file mode 100644 index 000000000000..a085743bd520 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Identity.Client.Extensions.Msal/4.61.3/Microsoft.Identity.Client.Extensions.Msal.csproj @@ -0,0 +1,14 @@ + + + net9.0 + true + bin\ + false + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.Identity.Client/4.61.3/Microsoft.Identity.Client.cs b/csharp/ql/test/resources/stubs/Microsoft.Identity.Client/4.61.3/Microsoft.Identity.Client.cs new file mode 100644 index 000000000000..01ea5340e8ef --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Identity.Client/4.61.3/Microsoft.Identity.Client.cs @@ -0,0 +1,1350 @@ +// This file contains auto-generated code. +// Generated from `Microsoft.Identity.Client, Version=4.61.3.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae`. +namespace Microsoft +{ + namespace Identity + { + namespace Client + { + public enum AadAuthorityAudience + { + None = 0, + AzureAdMyOrg = 1, + AzureAdAndPersonalMicrosoftAccount = 2, + AzureAdMultipleOrgs = 3, + PersonalMicrosoftAccount = 4, + } + public abstract class AbstractAcquireTokenParameterBuilder : Microsoft.Identity.Client.BaseAbstractAcquireTokenParameterBuilder where T : Microsoft.Identity.Client.BaseAbstractAcquireTokenParameterBuilder + { + protected AbstractAcquireTokenParameterBuilder() => throw null; + public T WithAdfsAuthority(string authorityUri, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(string authorityUri, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(string cloudInstanceUri, System.Guid tenantId, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(string cloudInstanceUri, string tenant, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(Microsoft.Identity.Client.AzureCloudInstance azureCloudInstance, System.Guid tenantId, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(Microsoft.Identity.Client.AzureCloudInstance azureCloudInstance, string tenant, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(Microsoft.Identity.Client.AzureCloudInstance azureCloudInstance, Microsoft.Identity.Client.AadAuthorityAudience authorityAudience, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(Microsoft.Identity.Client.AadAuthorityAudience authorityAudience, bool validateAuthority = default(bool)) => throw null; + public T WithB2CAuthority(string authorityUri) => throw null; + public T WithClaims(string claims) => throw null; + public T WithExtraQueryParameters(System.Collections.Generic.Dictionary extraQueryParameters) => throw null; + public T WithExtraQueryParameters(string extraQueryParameters) => throw null; + protected T WithScopes(System.Collections.Generic.IEnumerable scopes) => throw null; + public T WithTenantId(string tenantId) => throw null; + public T WithTenantIdFromAuthority(System.Uri authorityUri) => throw null; + } + public abstract class AbstractApplicationBuilder : Microsoft.Identity.Client.BaseAbstractApplicationBuilder where T : Microsoft.Identity.Client.BaseAbstractApplicationBuilder + { + public T WithAdfsAuthority(string authorityUri, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(System.Uri authorityUri, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(string authorityUri, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(string cloudInstanceUri, System.Guid tenantId, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(string cloudInstanceUri, string tenant, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(Microsoft.Identity.Client.AzureCloudInstance azureCloudInstance, System.Guid tenantId, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(Microsoft.Identity.Client.AzureCloudInstance azureCloudInstance, string tenant, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(Microsoft.Identity.Client.AzureCloudInstance azureCloudInstance, Microsoft.Identity.Client.AadAuthorityAudience authorityAudience, bool validateAuthority = default(bool)) => throw null; + public T WithAuthority(Microsoft.Identity.Client.AadAuthorityAudience authorityAudience, bool validateAuthority = default(bool)) => throw null; + public T WithB2CAuthority(string authorityUri) => throw null; + public T WithCacheOptions(Microsoft.Identity.Client.CacheOptions options) => throw null; + public T WithClientCapabilities(System.Collections.Generic.IEnumerable clientCapabilities) => throw null; + public T WithClientId(string clientId) => throw null; + public T WithClientName(string clientName) => throw null; + public T WithClientVersion(string clientVersion) => throw null; + public T WithExtraQueryParameters(System.Collections.Generic.IDictionary extraQueryParameters) => throw null; + public T WithExtraQueryParameters(string extraQueryParameters) => throw null; + public T WithInstanceDicoveryMetadata(string instanceDiscoveryJson) => throw null; + public T WithInstanceDicoveryMetadata(System.Uri instanceDiscoveryUri) => throw null; + public T WithInstanceDiscovery(bool enableInstanceDiscovery) => throw null; + public T WithInstanceDiscoveryMetadata(string instanceDiscoveryJson) => throw null; + public T WithInstanceDiscoveryMetadata(System.Uri instanceDiscoveryUri) => throw null; + public T WithLegacyCacheCompatibility(bool enableLegacyCacheCompatibility = default(bool)) => throw null; + protected T WithOptions(Microsoft.Identity.Client.ApplicationOptions applicationOptions) => throw null; + public T WithRedirectUri(string redirectUri) => throw null; + public T WithTelemetry(Microsoft.Identity.Client.ITelemetryConfig telemetryConfig) => throw null; + public T WithTenantId(string tenantId) => throw null; + } + public abstract class AbstractClientAppBaseAcquireTokenParameterBuilder : Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder where T : Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder + { + public override System.Threading.Tasks.Task ExecuteAsync(System.Threading.CancellationToken cancellationToken) => throw null; + } + public abstract class AbstractConfidentialClientAcquireTokenParameterBuilder : Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder where T : Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder + { + public override System.Threading.Tasks.Task ExecuteAsync(System.Threading.CancellationToken cancellationToken) => throw null; + protected override void Validate() => throw null; + public T WithProofOfPossession(Microsoft.Identity.Client.AppConfig.PoPAuthenticationConfiguration popAuthenticationConfiguration) => throw null; + } + public abstract class AbstractManagedIdentityAcquireTokenParameterBuilder : Microsoft.Identity.Client.BaseAbstractAcquireTokenParameterBuilder where T : Microsoft.Identity.Client.BaseAbstractAcquireTokenParameterBuilder + { + protected AbstractManagedIdentityAcquireTokenParameterBuilder() => throw null; + public override System.Threading.Tasks.Task ExecuteAsync(System.Threading.CancellationToken cancellationToken) => throw null; + } + public abstract class AbstractPublicClientAcquireTokenParameterBuilder : Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder where T : Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder + { + public override System.Threading.Tasks.Task ExecuteAsync(System.Threading.CancellationToken cancellationToken) => throw null; + } + public static partial class AccountExtensions + { + public static System.Collections.Generic.IEnumerable GetTenantProfiles(this Microsoft.Identity.Client.IAccount account) => throw null; + } + public class AccountId + { + public AccountId(string identifier, string objectId, string tenantId) => throw null; + public AccountId(string adfsIdentifier) => throw null; + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + public string Identifier { get => throw null; } + public string ObjectId { get => throw null; } + public string TenantId { get => throw null; } + public override string ToString() => throw null; + } + public sealed class AcquireTokenByAuthorizationCodeParameterBuilder : Microsoft.Identity.Client.AbstractConfidentialClientAcquireTokenParameterBuilder + { + protected override void Validate() => throw null; + public Microsoft.Identity.Client.AcquireTokenByAuthorizationCodeParameterBuilder WithCcsRoutingHint(string userObjectIdentifier, string tenantIdentifier) => throw null; + public Microsoft.Identity.Client.AcquireTokenByAuthorizationCodeParameterBuilder WithCcsRoutingHint(string userName) => throw null; + public Microsoft.Identity.Client.AcquireTokenByAuthorizationCodeParameterBuilder WithPkceCodeVerifier(string pkceCodeVerifier) => throw null; + public Microsoft.Identity.Client.AcquireTokenByAuthorizationCodeParameterBuilder WithSendX5C(bool withSendX5C) => throw null; + public Microsoft.Identity.Client.AcquireTokenByAuthorizationCodeParameterBuilder WithSpaAuthorizationCode(bool requestSpaAuthorizationCode = default(bool)) => throw null; + } + public sealed class AcquireTokenByIntegratedWindowsAuthParameterBuilder : Microsoft.Identity.Client.AbstractPublicClientAcquireTokenParameterBuilder + { + public Microsoft.Identity.Client.AcquireTokenByIntegratedWindowsAuthParameterBuilder WithFederationMetadata(string federationMetadata) => throw null; + public Microsoft.Identity.Client.AcquireTokenByIntegratedWindowsAuthParameterBuilder WithUsername(string username) => throw null; + } + public sealed class AcquireTokenByRefreshTokenParameterBuilder : Microsoft.Identity.Client.AbstractClientAppBaseAcquireTokenParameterBuilder + { + protected override void Validate() => throw null; + public Microsoft.Identity.Client.AcquireTokenByRefreshTokenParameterBuilder WithSendX5C(bool withSendX5C) => throw null; + } + public sealed class AcquireTokenByUsernamePasswordParameterBuilder : Microsoft.Identity.Client.AbstractPublicClientAcquireTokenParameterBuilder + { + public Microsoft.Identity.Client.AcquireTokenByUsernamePasswordParameterBuilder WithFederationMetadata(string federationMetadata) => throw null; + public Microsoft.Identity.Client.AcquireTokenByUsernamePasswordParameterBuilder WithProofOfPossession(string nonce, System.Net.Http.HttpMethod httpMethod, System.Uri requestUri) => throw null; + } + public sealed class AcquireTokenForClientParameterBuilder : Microsoft.Identity.Client.AbstractConfidentialClientAcquireTokenParameterBuilder + { + protected override void Validate() => throw null; + public Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder WithAzureRegion(bool useAzureRegion) => throw null; + public Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder WithForceRefresh(bool forceRefresh) => throw null; + public Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder WithPreferredAzureRegion(bool useAzureRegion = default(bool), string regionUsedIfAutoDetectFails = default(string), bool fallbackToGlobal = default(bool)) => throw null; + public Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder WithSendX5C(bool withSendX5C) => throw null; + } + public sealed class AcquireTokenForManagedIdentityParameterBuilder : Microsoft.Identity.Client.AbstractManagedIdentityAcquireTokenParameterBuilder + { + public Microsoft.Identity.Client.AcquireTokenForManagedIdentityParameterBuilder WithForceRefresh(bool forceRefresh) => throw null; + } + public sealed class AcquireTokenInteractiveParameterBuilder : Microsoft.Identity.Client.AbstractPublicClientAcquireTokenParameterBuilder + { + protected override void Validate() => throw null; + public Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder WithAccount(Microsoft.Identity.Client.IAccount account) => throw null; + public Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder WithEmbeddedWebViewOptions(Microsoft.Identity.Client.EmbeddedWebViewOptions options) => throw null; + public Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder WithExtraScopesToConsent(System.Collections.Generic.IEnumerable extraScopesToConsent) => throw null; + public Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder WithLoginHint(string loginHint) => throw null; + public Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder WithParentActivityOrWindow(object parent) => throw null; + public Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder WithParentActivityOrWindow(nint window) => throw null; + public Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder WithPrompt(Microsoft.Identity.Client.Prompt prompt) => throw null; + public Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder WithProofOfPossession(string nonce, System.Net.Http.HttpMethod httpMethod, System.Uri requestUri) => throw null; + public Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder WithSystemWebViewOptions(Microsoft.Identity.Client.SystemWebViewOptions options) => throw null; + public Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder WithUseEmbeddedWebView(bool useEmbeddedWebView) => throw null; + } + public sealed class AcquireTokenOnBehalfOfParameterBuilder : Microsoft.Identity.Client.AbstractConfidentialClientAcquireTokenParameterBuilder + { + protected override void Validate() => throw null; + public Microsoft.Identity.Client.AcquireTokenOnBehalfOfParameterBuilder WithCcsRoutingHint(string userObjectIdentifier, string tenantIdentifier) => throw null; + public Microsoft.Identity.Client.AcquireTokenOnBehalfOfParameterBuilder WithCcsRoutingHint(string userName) => throw null; + public Microsoft.Identity.Client.AcquireTokenOnBehalfOfParameterBuilder WithForceRefresh(bool forceRefresh) => throw null; + public Microsoft.Identity.Client.AcquireTokenOnBehalfOfParameterBuilder WithSendX5C(bool withSendX5C) => throw null; + } + public sealed class AcquireTokenSilentParameterBuilder : Microsoft.Identity.Client.AbstractClientAppBaseAcquireTokenParameterBuilder + { + protected override void Validate() => throw null; + public Microsoft.Identity.Client.AcquireTokenSilentParameterBuilder WithForceRefresh(bool forceRefresh) => throw null; + public Microsoft.Identity.Client.AcquireTokenSilentParameterBuilder WithProofOfPossession(Microsoft.Identity.Client.AppConfig.PoPAuthenticationConfiguration popAuthenticationConfiguration) => throw null; + public Microsoft.Identity.Client.AcquireTokenSilentParameterBuilder WithProofOfPossession(string nonce, System.Net.Http.HttpMethod httpMethod, System.Uri requestUri) => throw null; + public Microsoft.Identity.Client.AcquireTokenSilentParameterBuilder WithSendX5C(bool withSendX5C) => throw null; + } + public sealed class AcquireTokenWithDeviceCodeParameterBuilder : Microsoft.Identity.Client.AbstractPublicClientAcquireTokenParameterBuilder + { + protected override void Validate() => throw null; + public Microsoft.Identity.Client.AcquireTokenWithDeviceCodeParameterBuilder WithDeviceCodeResultCallback(System.Func deviceCodeResultCallback) => throw null; + } + namespace Advanced + { + public static partial class AcquireTokenParameterBuilderExtensions + { + public static T WithExtraHttpHeaders(this Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder builder, System.Collections.Generic.IDictionary extraHttpHeaders) where T : Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder => throw null; + } + } + namespace AppConfig + { + public class ManagedIdentityId + { + public static Microsoft.Identity.Client.AppConfig.ManagedIdentityId SystemAssigned { get => throw null; } + public static Microsoft.Identity.Client.AppConfig.ManagedIdentityId WithUserAssignedClientId(string clientId) => throw null; + public static Microsoft.Identity.Client.AppConfig.ManagedIdentityId WithUserAssignedObjectId(string objectId) => throw null; + public static Microsoft.Identity.Client.AppConfig.ManagedIdentityId WithUserAssignedResourceId(string resourceId) => throw null; + } + public class PoPAuthenticationConfiguration + { + public PoPAuthenticationConfiguration() => throw null; + public PoPAuthenticationConfiguration(System.Net.Http.HttpRequestMessage httpRequestMessage) => throw null; + public PoPAuthenticationConfiguration(System.Uri requestUri) => throw null; + public string HttpHost { get => throw null; set { } } + public System.Net.Http.HttpMethod HttpMethod { get => throw null; set { } } + public string HttpPath { get => throw null; set { } } + public string Nonce { get => throw null; set { } } + public Microsoft.Identity.Client.AuthScheme.PoP.IPoPCryptoProvider PopCryptoProvider { get => throw null; set { } } + public bool SignHttpRequest { get => throw null; set { } } + } + } + public abstract class ApplicationBase : Microsoft.Identity.Client.IApplicationBase + { + } + public abstract class ApplicationOptions : Microsoft.Identity.Client.BaseApplicationOptions + { + public Microsoft.Identity.Client.AadAuthorityAudience AadAuthorityAudience { get => throw null; set { } } + public Microsoft.Identity.Client.AzureCloudInstance AzureCloudInstance { get => throw null; set { } } + public System.Collections.Generic.IEnumerable ClientCapabilities { get => throw null; set { } } + public string ClientId { get => throw null; set { } } + public string ClientName { get => throw null; set { } } + public string ClientVersion { get => throw null; set { } } + protected ApplicationOptions() => throw null; + public string Instance { get => throw null; set { } } + public string KerberosServicePrincipalName { get => throw null; set { } } + public bool LegacyCacheCompatibilityEnabled { get => throw null; set { } } + public string RedirectUri { get => throw null; set { } } + public string TenantId { get => throw null; set { } } + public Microsoft.Identity.Client.Kerberos.KerberosTicketContainer TicketContainer { get => throw null; set { } } + } + public class AssertionRequestOptions + { + public System.Threading.CancellationToken CancellationToken { get => throw null; set { } } + public string ClientID { get => throw null; set { } } + public AssertionRequestOptions() => throw null; + public string TokenEndpoint { get => throw null; set { } } + } + public class AuthenticationHeaderParser + { + public Microsoft.Identity.Client.AuthenticationInfoParameters AuthenticationInfoParameters { get => throw null; } + public AuthenticationHeaderParser() => throw null; + public static Microsoft.Identity.Client.AuthenticationHeaderParser ParseAuthenticationHeaders(System.Net.Http.Headers.HttpResponseHeaders httpResponseHeaders) => throw null; + public static System.Threading.Tasks.Task ParseAuthenticationHeadersAsync(string resourceUri, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public static System.Threading.Tasks.Task ParseAuthenticationHeadersAsync(string resourceUri, System.Net.Http.HttpClient httpClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public string PopNonce { get => throw null; } + public System.Collections.Generic.IReadOnlyList WwwAuthenticateParameters { get => throw null; } + } + public class AuthenticationInfoParameters + { + public static Microsoft.Identity.Client.AuthenticationInfoParameters CreateFromResponseHeaders(System.Net.Http.Headers.HttpResponseHeaders httpResponseHeaders) => throw null; + public AuthenticationInfoParameters() => throw null; + public string NextNonce { get => throw null; } + public string this[string key] { get => throw null; } + } + public class AuthenticationResult + { + public string AccessToken { get => throw null; } + public Microsoft.Identity.Client.IAccount Account { get => throw null; } + public System.Collections.Generic.IReadOnlyDictionary AdditionalResponseParameters { get => throw null; } + public Microsoft.Identity.Client.AuthenticationResultMetadata AuthenticationResultMetadata { get => throw null; } + public System.Security.Claims.ClaimsPrincipal ClaimsPrincipal { get => throw null; } + public System.Guid CorrelationId { get => throw null; } + public string CreateAuthorizationHeader() => throw null; + public AuthenticationResult(string accessToken, bool isExtendedLifeTimeToken, string uniqueId, System.DateTimeOffset expiresOn, System.DateTimeOffset extendedExpiresOn, string tenantId, Microsoft.Identity.Client.IAccount account, string idToken, System.Collections.Generic.IEnumerable scopes, System.Guid correlationId, string tokenType = default(string), Microsoft.Identity.Client.AuthenticationResultMetadata authenticationResultMetadata = default(Microsoft.Identity.Client.AuthenticationResultMetadata), System.Security.Claims.ClaimsPrincipal claimsPrincipal = default(System.Security.Claims.ClaimsPrincipal), string spaAuthCode = default(string), System.Collections.Generic.IReadOnlyDictionary additionalResponseParameters = default(System.Collections.Generic.IReadOnlyDictionary)) => throw null; + public AuthenticationResult(string accessToken, bool isExtendedLifeTimeToken, string uniqueId, System.DateTimeOffset expiresOn, System.DateTimeOffset extendedExpiresOn, string tenantId, Microsoft.Identity.Client.IAccount account, string idToken, System.Collections.Generic.IEnumerable scopes, System.Guid correlationId, Microsoft.Identity.Client.AuthenticationResultMetadata authenticationResultMetadata, string tokenType = default(string)) => throw null; + public System.DateTimeOffset ExpiresOn { get => throw null; } + public System.DateTimeOffset ExtendedExpiresOn { get => throw null; } + public string IdToken { get => throw null; } + public bool IsExtendedLifeTimeToken { get => throw null; } + public System.Collections.Generic.IEnumerable Scopes { get => throw null; } + public string SpaAuthCode { get => throw null; } + public string TenantId { get => throw null; } + public string TokenType { get => throw null; } + public string UniqueId { get => throw null; } + public Microsoft.Identity.Client.IUser User { get => throw null; } + } + public class AuthenticationResultMetadata + { + public Microsoft.Identity.Client.Cache.CacheLevel CacheLevel { get => throw null; set { } } + public Microsoft.Identity.Client.CacheRefreshReason CacheRefreshReason { get => throw null; set { } } + public AuthenticationResultMetadata(Microsoft.Identity.Client.TokenSource tokenSource) => throw null; + public long DurationInCacheInMs { get => throw null; set { } } + public long DurationInHttpInMs { get => throw null; set { } } + public long DurationTotalInMs { get => throw null; set { } } + public System.DateTimeOffset? RefreshOn { get => throw null; set { } } + public Microsoft.Identity.Client.RegionDetails RegionDetails { get => throw null; set { } } + public string Telemetry { get => throw null; set { } } + public string TokenEndpoint { get => throw null; set { } } + public Microsoft.Identity.Client.TokenSource TokenSource { get => throw null; } + } + namespace AuthScheme + { + namespace PoP + { + public interface IPoPCryptoProvider + { + string CannonicalPublicKeyJwk { get; } + string CryptographicAlgorithm { get; } + byte[] Sign(byte[] data); + } + } + } + public enum AzureCloudInstance + { + None = 0, + AzurePublic = 1, + AzureChina = 2, + AzureGermany = 3, + AzureUsGovernment = 4, + } + public abstract class BaseAbstractAcquireTokenParameterBuilder where T : Microsoft.Identity.Client.BaseAbstractAcquireTokenParameterBuilder + { + protected BaseAbstractAcquireTokenParameterBuilder() => throw null; + public abstract System.Threading.Tasks.Task ExecuteAsync(System.Threading.CancellationToken cancellationToken); + public System.Threading.Tasks.Task ExecuteAsync() => throw null; + protected virtual void Validate() => throw null; + public T WithCorrelationId(System.Guid correlationId) => throw null; + } + public abstract class BaseAbstractApplicationBuilder where T : Microsoft.Identity.Client.BaseAbstractApplicationBuilder + { + public T WithDebugLoggingCallback(Microsoft.Identity.Client.LogLevel logLevel = default(Microsoft.Identity.Client.LogLevel), bool enablePiiLogging = default(bool), bool withDefaultPlatformLoggingEnabled = default(bool)) => throw null; + public T WithExperimentalFeatures(bool enableExperimentalFeatures = default(bool)) => throw null; + public T WithHttpClientFactory(Microsoft.Identity.Client.IMsalHttpClientFactory httpClientFactory) => throw null; + public T WithHttpClientFactory(Microsoft.Identity.Client.IMsalHttpClientFactory httpClientFactory, bool retryOnceOn5xx) => throw null; + public T WithLogging(Microsoft.Identity.Client.LogCallback loggingCallback, Microsoft.Identity.Client.LogLevel? logLevel = default(Microsoft.Identity.Client.LogLevel?), bool? enablePiiLogging = default(bool?), bool? enableDefaultPlatformLogging = default(bool?)) => throw null; + public T WithLogging(Microsoft.IdentityModel.Abstractions.IIdentityLogger identityLogger, bool enablePiiLogging = default(bool)) => throw null; + protected T WithOptions(Microsoft.Identity.Client.BaseApplicationOptions applicationOptions) => throw null; + } + public abstract class BaseApplicationOptions + { + protected BaseApplicationOptions() => throw null; + public bool EnablePiiLogging { get => throw null; set { } } + public bool IsDefaultPlatformLoggingEnabled { get => throw null; set { } } + public Microsoft.Identity.Client.LogLevel LogLevel { get => throw null; set { } } + } + public class BrokerOptions + { + public BrokerOptions(Microsoft.Identity.Client.BrokerOptions.OperatingSystems enabledOn) => throw null; + public Microsoft.Identity.Client.BrokerOptions.OperatingSystems EnabledOn { get => throw null; } + public bool ListOperatingSystemAccounts { get => throw null; set { } } + public bool MsaPassthrough { get => throw null; set { } } + [System.Flags] + public enum OperatingSystems + { + None = 0, + Windows = 1, + } + public string Title { get => throw null; set { } } + } + namespace Cache + { + public class CacheData + { + public byte[] AdalV3State { get => throw null; set { } } + public CacheData() => throw null; + public byte[] UnifiedState { get => throw null; set { } } + } + public enum CacheLevel + { + None = 0, + Unknown = 1, + L1Cache = 2, + L2Cache = 3, + } + } + public class CacheOptions + { + public CacheOptions() => throw null; + public CacheOptions(bool useSharedCache) => throw null; + public static Microsoft.Identity.Client.CacheOptions EnableSharedCacheOptions { get => throw null; } + public bool UseSharedCache { get => throw null; set { } } + } + public enum CacheRefreshReason + { + NotApplicable = 0, + ForceRefreshOrClaims = 1, + NoCachedAccessToken = 2, + Expired = 3, + ProactivelyRefreshed = 4, + } + public abstract class ClientApplicationBase : Microsoft.Identity.Client.ApplicationBase, Microsoft.Identity.Client.IApplicationBase, Microsoft.Identity.Client.IClientApplicationBase + { + public Microsoft.Identity.Client.AcquireTokenSilentParameterBuilder AcquireTokenSilent(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account) => throw null; + public Microsoft.Identity.Client.AcquireTokenSilentParameterBuilder AcquireTokenSilent(System.Collections.Generic.IEnumerable scopes, string loginHint) => throw null; + public System.Threading.Tasks.Task AcquireTokenSilentAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account, string authority, bool forceRefresh) => throw null; + public System.Threading.Tasks.Task AcquireTokenSilentAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account) => throw null; + public Microsoft.Identity.Client.IAppConfig AppConfig { get => throw null; } + public string Authority { get => throw null; } + public string ClientId { get => throw null; } + public string Component { get => throw null; set { } } + public System.Threading.Tasks.Task GetAccountAsync(string accountId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public System.Threading.Tasks.Task GetAccountAsync(string accountId) => throw null; + public System.Threading.Tasks.Task> GetAccountsAsync() => throw null; + public System.Threading.Tasks.Task> GetAccountsAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public System.Threading.Tasks.Task> GetAccountsAsync(string userFlow) => throw null; + public System.Threading.Tasks.Task> GetAccountsAsync(string userFlow, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public Microsoft.Identity.Client.IUser GetUser(string identifier) => throw null; + public string RedirectUri { get => throw null; set { } } + public void Remove(Microsoft.Identity.Client.IUser user) => throw null; + public System.Threading.Tasks.Task RemoveAsync(Microsoft.Identity.Client.IAccount account) => throw null; + public System.Threading.Tasks.Task RemoveAsync(Microsoft.Identity.Client.IAccount account, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public string SliceParameters { get => throw null; set { } } + public System.Collections.Generic.IEnumerable Users { get => throw null; } + public Microsoft.Identity.Client.ITokenCache UserTokenCache { get => throw null; } + public bool ValidateAuthority { get => throw null; set { } } + } + public sealed class ClientAssertionCertificate + { + public System.Security.Cryptography.X509Certificates.X509Certificate2 Certificate { get => throw null; } + public ClientAssertionCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) => throw null; + public static int MinKeySizeInBits { get => throw null; } + } + public sealed class ClientCredential + { + public ClientCredential(Microsoft.Identity.Client.ClientAssertionCertificate certificate) => throw null; + public ClientCredential(string secret) => throw null; + } + public sealed class ConfidentialClientApplication : Microsoft.Identity.Client.ClientApplicationBase, Microsoft.Identity.Client.IApplicationBase, Microsoft.Identity.Client.IByRefreshToken, Microsoft.Identity.Client.IClientApplicationBase, Microsoft.Identity.Client.IConfidentialClientApplication, Microsoft.Identity.Client.IConfidentialClientApplicationWithCertificate, Microsoft.Identity.Client.ILongRunningWebApi + { + public Microsoft.Identity.Client.AcquireTokenByAuthorizationCodeParameterBuilder AcquireTokenByAuthorizationCode(System.Collections.Generic.IEnumerable scopes, string authorizationCode) => throw null; + public System.Threading.Tasks.Task AcquireTokenByAuthorizationCodeAsync(string authorizationCode, System.Collections.Generic.IEnumerable scopes) => throw null; + Microsoft.Identity.Client.AcquireTokenByRefreshTokenParameterBuilder Microsoft.Identity.Client.IByRefreshToken.AcquireTokenByRefreshToken(System.Collections.Generic.IEnumerable scopes, string refreshToken) => throw null; + System.Threading.Tasks.Task Microsoft.Identity.Client.IByRefreshToken.AcquireTokenByRefreshTokenAsync(System.Collections.Generic.IEnumerable scopes, string refreshToken) => throw null; + public Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder AcquireTokenForClient(System.Collections.Generic.IEnumerable scopes) => throw null; + public System.Threading.Tasks.Task AcquireTokenForClientAsync(System.Collections.Generic.IEnumerable scopes) => throw null; + public System.Threading.Tasks.Task AcquireTokenForClientAsync(System.Collections.Generic.IEnumerable scopes, bool forceRefresh) => throw null; + System.Threading.Tasks.Task Microsoft.Identity.Client.IConfidentialClientApplicationWithCertificate.AcquireTokenForClientWithCertificateAsync(System.Collections.Generic.IEnumerable scopes) => throw null; + System.Threading.Tasks.Task Microsoft.Identity.Client.IConfidentialClientApplicationWithCertificate.AcquireTokenForClientWithCertificateAsync(System.Collections.Generic.IEnumerable scopes, bool forceRefresh) => throw null; + public Microsoft.Identity.Client.AcquireTokenOnBehalfOfParameterBuilder AcquireTokenInLongRunningProcess(System.Collections.Generic.IEnumerable scopes, string longRunningProcessSessionKey) => throw null; + public Microsoft.Identity.Client.AcquireTokenOnBehalfOfParameterBuilder AcquireTokenOnBehalfOf(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.UserAssertion userAssertion) => throw null; + public System.Threading.Tasks.Task AcquireTokenOnBehalfOfAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.UserAssertion userAssertion) => throw null; + public System.Threading.Tasks.Task AcquireTokenOnBehalfOfAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.UserAssertion userAssertion, string authority) => throw null; + System.Threading.Tasks.Task Microsoft.Identity.Client.IConfidentialClientApplicationWithCertificate.AcquireTokenOnBehalfOfWithCertificateAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.UserAssertion userAssertion) => throw null; + System.Threading.Tasks.Task Microsoft.Identity.Client.IConfidentialClientApplicationWithCertificate.AcquireTokenOnBehalfOfWithCertificateAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.UserAssertion userAssertion, string authority) => throw null; + public Microsoft.Identity.Client.ITokenCache AppTokenCache { get => throw null; } + public const string AttemptRegionDiscovery = default; + public System.Security.Cryptography.X509Certificates.X509Certificate2 Certificate { get => throw null; } + public ConfidentialClientApplication(string clientId, string redirectUri, Microsoft.Identity.Client.ClientCredential clientCredential, Microsoft.Identity.Client.TokenCache userTokenCache, Microsoft.Identity.Client.TokenCache appTokenCache) => throw null; + public ConfidentialClientApplication(string clientId, string authority, string redirectUri, Microsoft.Identity.Client.ClientCredential clientCredential, Microsoft.Identity.Client.TokenCache userTokenCache, Microsoft.Identity.Client.TokenCache appTokenCache) => throw null; + public Microsoft.Identity.Client.GetAuthorizationRequestUrlParameterBuilder GetAuthorizationRequestUrl(System.Collections.Generic.IEnumerable scopes) => throw null; + public System.Threading.Tasks.Task GetAuthorizationRequestUrlAsync(System.Collections.Generic.IEnumerable scopes, string loginHint, string extraQueryParameters) => throw null; + public System.Threading.Tasks.Task GetAuthorizationRequestUrlAsync(System.Collections.Generic.IEnumerable scopes, string redirectUri, string loginHint, string extraQueryParameters, System.Collections.Generic.IEnumerable extraScopesToConsent, string authority) => throw null; + public Microsoft.Identity.Client.AcquireTokenOnBehalfOfParameterBuilder InitiateLongRunningProcessInWebApi(System.Collections.Generic.IEnumerable scopes, string userToken, ref string longRunningProcessSessionKey) => throw null; + public System.Threading.Tasks.Task StopLongRunningProcessInWebApiAsync(string longRunningProcessSessionKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public class ConfidentialClientApplicationBuilder : Microsoft.Identity.Client.AbstractApplicationBuilder + { + public Microsoft.Identity.Client.IConfidentialClientApplication Build() => throw null; + public static Microsoft.Identity.Client.ConfidentialClientApplicationBuilder Create(string clientId) => throw null; + public static Microsoft.Identity.Client.ConfidentialClientApplicationBuilder CreateWithApplicationOptions(Microsoft.Identity.Client.ConfidentialClientApplicationOptions options) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithAzureRegion(string azureRegion = default(string)) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithCacheSynchronization(bool enableCacheSynchronization) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, bool sendX5C) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithClientAssertion(string signedClientAssertion) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithClientAssertion(System.Func clientAssertionDelegate) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithClientAssertion(System.Func> clientAssertionAsyncDelegate) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithClientAssertion(System.Func> clientAssertionAsyncDelegate) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithClientClaims(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, System.Collections.Generic.IDictionary claimsToSign, bool mergeWithDefaultClaims) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithClientClaims(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, System.Collections.Generic.IDictionary claimsToSign, bool mergeWithDefaultClaims = default(bool), bool sendX5C = default(bool)) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithClientSecret(string clientSecret) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithGenericAuthority(string authorityUri) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithOidcAuthority(string authorityUri) => throw null; + public Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithTelemetryClient(params Microsoft.IdentityModel.Abstractions.ITelemetryClient[] telemetryClients) => throw null; + } + public class ConfidentialClientApplicationOptions : Microsoft.Identity.Client.ApplicationOptions + { + public string AzureRegion { get => throw null; set { } } + public string ClientSecret { get => throw null; set { } } + public ConfidentialClientApplicationOptions() => throw null; + public bool EnableCacheSynchronization { get => throw null; set { } } + } + public class DeviceCodeResult + { + public string ClientId { get => throw null; } + public string DeviceCode { get => throw null; } + public System.DateTimeOffset ExpiresOn { get => throw null; } + public long Interval { get => throw null; } + public string Message { get => throw null; } + public System.Collections.Generic.IReadOnlyCollection Scopes { get => throw null; } + public string UserCode { get => throw null; } + public string VerificationUrl { get => throw null; } + } + public class EmbeddedWebViewOptions + { + public EmbeddedWebViewOptions() => throw null; + public string Title { get => throw null; set { } } + public string WebView2BrowserExecutableFolder { get => throw null; set { } } + } + namespace Extensibility + { + public static class AbstractConfidentialClientAcquireTokenParameterBuilderExtension + { + public static Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder OnBeforeTokenRequest(this Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder builder, System.Func onBeforeTokenRequestHandler) where T : Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder => throw null; + public static Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder WithProofOfPosessionKeyId(this Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder builder, string keyId, string expectedTokenTypeFromAad = default(string)) where T : Microsoft.Identity.Client.AbstractAcquireTokenParameterBuilder => throw null; + } + public static partial class AcquireTokenForClientBuilderExtensions + { + public static Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder WithProofOfPosessionKeyId(this Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder builder, string keyId, string expectedTokenTypeFromAad = default(string)) => throw null; + } + public static partial class AcquireTokenInteractiveParameterBuilderExtensions + { + public static Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder WithCustomWebUi(this Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder builder, Microsoft.Identity.Client.Extensibility.ICustomWebUi customWebUi) => throw null; + } + public static partial class AcquireTokenOnBehalfOfParameterBuilderExtensions + { + public static Microsoft.Identity.Client.AcquireTokenOnBehalfOfParameterBuilder WithSearchInCacheForLongRunningProcess(this Microsoft.Identity.Client.AcquireTokenOnBehalfOfParameterBuilder builder, bool searchInCache = default(bool)) => throw null; + } + public class AppTokenProviderParameters + { + public System.Threading.CancellationToken CancellationToken { get => throw null; } + public string Claims { get => throw null; } + public string CorrelationId { get => throw null; } + public AppTokenProviderParameters() => throw null; + public System.Collections.Generic.IEnumerable Scopes { get => throw null; } + public string TenantId { get => throw null; } + } + public class AppTokenProviderResult + { + public string AccessToken { get => throw null; set { } } + public AppTokenProviderResult() => throw null; + public long ExpiresInSeconds { get => throw null; set { } } + public long? RefreshInSeconds { get => throw null; set { } } + } + public static partial class ConfidentialClientApplicationBuilderExtensions + { + public static Microsoft.Identity.Client.ConfidentialClientApplicationBuilder WithAppTokenProvider(this Microsoft.Identity.Client.ConfidentialClientApplicationBuilder builder, System.Func> appTokenProvider) => throw null; + } + public static partial class ConfidentialClientApplicationExtensions + { + public static System.Threading.Tasks.Task StopLongRunningProcessInWebApiAsync(this Microsoft.Identity.Client.ILongRunningWebApi clientApp, string longRunningProcessSessionKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + } + public interface ICustomWebUi + { + System.Threading.Tasks.Task AcquireAuthorizationCodeAsync(System.Uri authorizationUri, System.Uri redirectUri, System.Threading.CancellationToken cancellationToken); + } + public sealed class OnBeforeTokenRequestData + { + public System.Collections.Generic.IDictionary BodyParameters { get => throw null; } + public System.Threading.CancellationToken CancellationToken { get => throw null; } + public OnBeforeTokenRequestData(System.Collections.Generic.IDictionary bodyParameters, System.Collections.Generic.IDictionary headers, System.Uri requestUri, System.Threading.CancellationToken cancellationToken) => throw null; + public System.Collections.Generic.IDictionary Headers { get => throw null; } + public System.Uri RequestUri { get => throw null; set { } } + } + } + public sealed class GetAuthorizationRequestUrlParameterBuilder : Microsoft.Identity.Client.AbstractConfidentialClientAcquireTokenParameterBuilder + { + public System.Threading.Tasks.Task ExecuteAsync(System.Threading.CancellationToken cancellationToken) => throw null; + public System.Threading.Tasks.Task ExecuteAsync() => throw null; + public Microsoft.Identity.Client.GetAuthorizationRequestUrlParameterBuilder WithAccount(Microsoft.Identity.Client.IAccount account) => throw null; + public Microsoft.Identity.Client.GetAuthorizationRequestUrlParameterBuilder WithCcsRoutingHint(string userObjectIdentifier, string tenantIdentifier) => throw null; + public Microsoft.Identity.Client.GetAuthorizationRequestUrlParameterBuilder WithExtraScopesToConsent(System.Collections.Generic.IEnumerable extraScopesToConsent) => throw null; + public Microsoft.Identity.Client.GetAuthorizationRequestUrlParameterBuilder WithLoginHint(string loginHint) => throw null; + public Microsoft.Identity.Client.GetAuthorizationRequestUrlParameterBuilder WithPkce(out string codeVerifier) => throw null; + public Microsoft.Identity.Client.GetAuthorizationRequestUrlParameterBuilder WithPrompt(Microsoft.Identity.Client.Prompt prompt) => throw null; + public Microsoft.Identity.Client.GetAuthorizationRequestUrlParameterBuilder WithRedirectUri(string redirectUri) => throw null; + } + public interface IAccount + { + string Environment { get; } + Microsoft.Identity.Client.AccountId HomeAccountId { get; } + string Username { get; } + } + public interface IAppConfig + { + System.Collections.Generic.IEnumerable ClientCapabilities { get; } + System.Security.Cryptography.X509Certificates.X509Certificate2 ClientCredentialCertificate { get; } + string ClientId { get; } + string ClientName { get; } + string ClientSecret { get; } + string ClientVersion { get; } + bool EnablePiiLogging { get; } + bool ExperimentalFeaturesEnabled { get; } + System.Collections.Generic.IDictionary ExtraQueryParameters { get; } + Microsoft.Identity.Client.IMsalHttpClientFactory HttpClientFactory { get; } + bool IsBrokerEnabled { get; } + bool IsDefaultPlatformLoggingEnabled { get; } + bool LegacyCacheCompatibilityEnabled { get; } + Microsoft.Identity.Client.LogCallback LoggingCallback { get; } + Microsoft.Identity.Client.LogLevel LogLevel { get; } + System.Func ParentActivityOrWindowFunc { get; } + string RedirectUri { get; } + Microsoft.Identity.Client.ITelemetryConfig TelemetryConfig { get; } + string TenantId { get; } + } + public interface IApplicationBase + { + } + public interface IByRefreshToken + { + Microsoft.Identity.Client.AcquireTokenByRefreshTokenParameterBuilder AcquireTokenByRefreshToken(System.Collections.Generic.IEnumerable scopes, string refreshToken); + System.Threading.Tasks.Task AcquireTokenByRefreshTokenAsync(System.Collections.Generic.IEnumerable scopes, string refreshToken); + } + public interface IClientApplicationBase : Microsoft.Identity.Client.IApplicationBase + { + Microsoft.Identity.Client.AcquireTokenSilentParameterBuilder AcquireTokenSilent(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account); + Microsoft.Identity.Client.AcquireTokenSilentParameterBuilder AcquireTokenSilent(System.Collections.Generic.IEnumerable scopes, string loginHint); + System.Threading.Tasks.Task AcquireTokenSilentAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account); + System.Threading.Tasks.Task AcquireTokenSilentAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account, string authority, bool forceRefresh); + Microsoft.Identity.Client.IAppConfig AppConfig { get; } + string Authority { get; } + string ClientId { get; } + string Component { get; set; } + System.Threading.Tasks.Task GetAccountAsync(string identifier); + System.Threading.Tasks.Task> GetAccountsAsync(); + System.Threading.Tasks.Task> GetAccountsAsync(string userFlow); + Microsoft.Identity.Client.IUser GetUser(string identifier); + string RedirectUri { get; set; } + void Remove(Microsoft.Identity.Client.IUser user); + System.Threading.Tasks.Task RemoveAsync(Microsoft.Identity.Client.IAccount account); + string SliceParameters { get; set; } + System.Collections.Generic.IEnumerable Users { get; } + Microsoft.Identity.Client.ITokenCache UserTokenCache { get; } + bool ValidateAuthority { get; } + } + public interface IConfidentialClientApplication : Microsoft.Identity.Client.IApplicationBase, Microsoft.Identity.Client.IClientApplicationBase + { + Microsoft.Identity.Client.AcquireTokenByAuthorizationCodeParameterBuilder AcquireTokenByAuthorizationCode(System.Collections.Generic.IEnumerable scopes, string authorizationCode); + System.Threading.Tasks.Task AcquireTokenByAuthorizationCodeAsync(string authorizationCode, System.Collections.Generic.IEnumerable scopes); + Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder AcquireTokenForClient(System.Collections.Generic.IEnumerable scopes); + System.Threading.Tasks.Task AcquireTokenForClientAsync(System.Collections.Generic.IEnumerable scopes); + System.Threading.Tasks.Task AcquireTokenForClientAsync(System.Collections.Generic.IEnumerable scopes, bool forceRefresh); + Microsoft.Identity.Client.AcquireTokenOnBehalfOfParameterBuilder AcquireTokenOnBehalfOf(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.UserAssertion userAssertion); + System.Threading.Tasks.Task AcquireTokenOnBehalfOfAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.UserAssertion userAssertion); + System.Threading.Tasks.Task AcquireTokenOnBehalfOfAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.UserAssertion userAssertion, string authority); + Microsoft.Identity.Client.AcquireTokenSilentParameterBuilder AcquireTokenSilent(System.Collections.Generic.IEnumerable scopes, string loginHint); + Microsoft.Identity.Client.ITokenCache AppTokenCache { get; } + System.Threading.Tasks.Task> GetAccountsAsync(); + Microsoft.Identity.Client.GetAuthorizationRequestUrlParameterBuilder GetAuthorizationRequestUrl(System.Collections.Generic.IEnumerable scopes); + System.Threading.Tasks.Task GetAuthorizationRequestUrlAsync(System.Collections.Generic.IEnumerable scopes, string loginHint, string extraQueryParameters); + System.Threading.Tasks.Task GetAuthorizationRequestUrlAsync(System.Collections.Generic.IEnumerable scopes, string redirectUri, string loginHint, string extraQueryParameters, System.Collections.Generic.IEnumerable extraScopesToConsent, string authority); + } + public interface IConfidentialClientApplicationWithCertificate + { + System.Threading.Tasks.Task AcquireTokenForClientWithCertificateAsync(System.Collections.Generic.IEnumerable scopes); + System.Threading.Tasks.Task AcquireTokenForClientWithCertificateAsync(System.Collections.Generic.IEnumerable scopes, bool forceRefresh); + System.Threading.Tasks.Task AcquireTokenOnBehalfOfWithCertificateAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.UserAssertion userAssertion); + System.Threading.Tasks.Task AcquireTokenOnBehalfOfWithCertificateAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.UserAssertion userAssertion, string authority); + } + public interface ILongRunningWebApi + { + Microsoft.Identity.Client.AcquireTokenOnBehalfOfParameterBuilder AcquireTokenInLongRunningProcess(System.Collections.Generic.IEnumerable scopes, string longRunningProcessSessionKey); + Microsoft.Identity.Client.AcquireTokenOnBehalfOfParameterBuilder InitiateLongRunningProcessInWebApi(System.Collections.Generic.IEnumerable scopes, string userToken, ref string longRunningProcessSessionKey); + } + public interface IManagedIdentityApplication : Microsoft.Identity.Client.IApplicationBase + { + Microsoft.Identity.Client.AcquireTokenForManagedIdentityParameterBuilder AcquireTokenForManagedIdentity(string resource); + } + public interface IMsalHttpClientFactory + { + System.Net.Http.HttpClient GetHttpClient(); + } + public class IntuneAppProtectionPolicyRequiredException : Microsoft.Identity.Client.MsalServiceException + { + public string AccountUserId { get => throw null; set { } } + public string AuthorityUrl { get => throw null; set { } } + public IntuneAppProtectionPolicyRequiredException(string errorCode, string errorMessage) : base(default(string), default(string)) => throw null; + public string TenantId { get => throw null; set { } } + public string Upn { get => throw null; set { } } + } + public interface IPublicClientApplication : Microsoft.Identity.Client.IApplicationBase, Microsoft.Identity.Client.IClientApplicationBase + { + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes); + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, string loginHint); + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account); + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, string loginHint, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters); + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters); + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, string loginHint, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters, System.Collections.Generic.IEnumerable extraScopesToConsent, string authority); + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters, System.Collections.Generic.IEnumerable extraScopesToConsent, string authority); + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.UIParent parent); + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, string loginHint, Microsoft.Identity.Client.UIParent parent); + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account, Microsoft.Identity.Client.UIParent parent); + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, string loginHint, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters, Microsoft.Identity.Client.UIParent parent); + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters, Microsoft.Identity.Client.UIParent parent); + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, string loginHint, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters, System.Collections.Generic.IEnumerable extraScopesToConsent, string authority, Microsoft.Identity.Client.UIParent parent); + System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters, System.Collections.Generic.IEnumerable extraScopesToConsent, string authority, Microsoft.Identity.Client.UIParent parent); + Microsoft.Identity.Client.AcquireTokenByIntegratedWindowsAuthParameterBuilder AcquireTokenByIntegratedWindowsAuth(System.Collections.Generic.IEnumerable scopes); + System.Threading.Tasks.Task AcquireTokenByIntegratedWindowsAuthAsync(System.Collections.Generic.IEnumerable scopes); + System.Threading.Tasks.Task AcquireTokenByIntegratedWindowsAuthAsync(System.Collections.Generic.IEnumerable scopes, string username); + Microsoft.Identity.Client.AcquireTokenByUsernamePasswordParameterBuilder AcquireTokenByUsernamePassword(System.Collections.Generic.IEnumerable scopes, string username, System.Security.SecureString password); + Microsoft.Identity.Client.AcquireTokenByUsernamePasswordParameterBuilder AcquireTokenByUsernamePassword(System.Collections.Generic.IEnumerable scopes, string username, string password); + System.Threading.Tasks.Task AcquireTokenByUsernamePasswordAsync(System.Collections.Generic.IEnumerable scopes, string username, System.Security.SecureString securePassword); + Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder AcquireTokenInteractive(System.Collections.Generic.IEnumerable scopes); + Microsoft.Identity.Client.AcquireTokenWithDeviceCodeParameterBuilder AcquireTokenWithDeviceCode(System.Collections.Generic.IEnumerable scopes, System.Func deviceCodeResultCallback); + System.Threading.Tasks.Task AcquireTokenWithDeviceCodeAsync(System.Collections.Generic.IEnumerable scopes, System.Func deviceCodeResultCallback); + System.Threading.Tasks.Task AcquireTokenWithDeviceCodeAsync(System.Collections.Generic.IEnumerable scopes, string extraQueryParameters, System.Func deviceCodeResultCallback); + System.Threading.Tasks.Task AcquireTokenWithDeviceCodeAsync(System.Collections.Generic.IEnumerable scopes, System.Func deviceCodeResultCallback, System.Threading.CancellationToken cancellationToken); + System.Threading.Tasks.Task AcquireTokenWithDeviceCodeAsync(System.Collections.Generic.IEnumerable scopes, string extraQueryParameters, System.Func deviceCodeResultCallback, System.Threading.CancellationToken cancellationToken); + bool IsSystemWebViewAvailable { get; } + } + public interface ITelemetryConfig + { + Microsoft.Identity.Client.TelemetryAudienceType AudienceType { get; } + System.Action DispatchAction { get; } + string SessionId { get; } + } + public interface ITelemetryEventPayload + { + System.Collections.Generic.IReadOnlyDictionary BoolValues { get; } + System.Collections.Generic.IReadOnlyDictionary Int64Values { get; } + System.Collections.Generic.IReadOnlyDictionary IntValues { get; } + string Name { get; } + System.Collections.Generic.IReadOnlyDictionary StringValues { get; } + string ToJsonString(); + } + public interface ITokenCache + { + void Deserialize(byte[] msalV2State); + void DeserializeAdalV3(byte[] adalV3State); + void DeserializeMsalV2(byte[] msalV2State); + void DeserializeMsalV3(byte[] msalV3State, bool shouldClearExistingCache = default(bool)); + void DeserializeUnifiedAndAdalCache(Microsoft.Identity.Client.Cache.CacheData cacheData); + byte[] Serialize(); + byte[] SerializeAdalV3(); + byte[] SerializeMsalV2(); + byte[] SerializeMsalV3(); + Microsoft.Identity.Client.Cache.CacheData SerializeUnifiedAndAdalCache(); + void SetAfterAccess(Microsoft.Identity.Client.TokenCacheCallback afterAccess); + void SetAfterAccessAsync(System.Func afterAccess); + void SetBeforeAccess(Microsoft.Identity.Client.TokenCacheCallback beforeAccess); + void SetBeforeAccessAsync(System.Func beforeAccess); + void SetBeforeWrite(Microsoft.Identity.Client.TokenCacheCallback beforeWrite); + void SetBeforeWriteAsync(System.Func beforeWrite); + } + public interface ITokenCacheSerializer + { + void DeserializeAdalV3(byte[] adalV3State); + void DeserializeMsalV2(byte[] msalV2State); + void DeserializeMsalV3(byte[] msalV3State, bool shouldClearExistingCache = default(bool)); + byte[] SerializeAdalV3(); + byte[] SerializeMsalV2(); + byte[] SerializeMsalV3(); + } + public interface IUser + { + string DisplayableId { get; } + string Identifier { get; } + string IdentityProvider { get; } + string Name { get; } + } + namespace Kerberos + { + public enum KerberosKeyTypes + { + None = 0, + DecCbcCrc = 1, + DesCbcMd5 = 3, + Aes128CtsHmacSha196 = 17, + Aes256CtsHmacSha196 = 18, + } + public class KerberosSupplementalTicket + { + public string ClientKey { get => throw null; set { } } + public string ClientName { get => throw null; set { } } + public KerberosSupplementalTicket() => throw null; + public KerberosSupplementalTicket(string errorMessage) => throw null; + public string ErrorMessage { get => throw null; set { } } + public string KerberosMessageBuffer { get => throw null; set { } } + public Microsoft.Identity.Client.Kerberos.KerberosKeyTypes KeyType { get => throw null; set { } } + public string Realm { get => throw null; set { } } + public string ServicePrincipalName { get => throw null; set { } } + public override string ToString() => throw null; + } + public static class KerberosSupplementalTicketManager + { + public static Microsoft.Identity.Client.Kerberos.KerberosSupplementalTicket FromIdToken(string idToken) => throw null; + public static byte[] GetKerberosTicketFromWindowsTicketCache(string servicePrincipalName) => throw null; + public static byte[] GetKerberosTicketFromWindowsTicketCache(string servicePrincipalName, long logonId) => throw null; + public static byte[] GetKrbCred(Microsoft.Identity.Client.Kerberos.KerberosSupplementalTicket ticket) => throw null; + public static void SaveToWindowsTicketCache(Microsoft.Identity.Client.Kerberos.KerberosSupplementalTicket ticket) => throw null; + public static void SaveToWindowsTicketCache(Microsoft.Identity.Client.Kerberos.KerberosSupplementalTicket ticket, long logonId) => throw null; + } + public enum KerberosTicketContainer + { + IdToken = 0, + AccessToken = 1, + } + } + public delegate void LogCallback(Microsoft.Identity.Client.LogLevel level, string message, bool containsPii); + public sealed class Logger + { + public Logger() => throw null; + public static bool DefaultLoggingEnabled { get => throw null; set { } } + public static Microsoft.Identity.Client.LogLevel Level { get => throw null; set { } } + public static Microsoft.Identity.Client.LogCallback LogCallback { set { } } + public static bool PiiLoggingEnabled { get => throw null; set { } } + } + public enum LogLevel + { + Always = -1, + Error = 0, + Warning = 1, + Info = 2, + Verbose = 3, + } + namespace ManagedIdentity + { + public enum ManagedIdentitySource + { + None = 0, + Imds = 1, + AppService = 2, + AzureArc = 3, + CloudShell = 4, + ServiceFabric = 5, + DefaultToImds = 6, + } + } + public sealed class ManagedIdentityApplication : Microsoft.Identity.Client.ApplicationBase, Microsoft.Identity.Client.IApplicationBase, Microsoft.Identity.Client.IManagedIdentityApplication + { + public Microsoft.Identity.Client.AcquireTokenForManagedIdentityParameterBuilder AcquireTokenForManagedIdentity(string resource) => throw null; + public static Microsoft.Identity.Client.ManagedIdentity.ManagedIdentitySource GetManagedIdentitySource() => throw null; + } + public sealed class ManagedIdentityApplicationBuilder : Microsoft.Identity.Client.BaseAbstractApplicationBuilder + { + public Microsoft.Identity.Client.IManagedIdentityApplication Build() => throw null; + public static Microsoft.Identity.Client.ManagedIdentityApplicationBuilder Create(Microsoft.Identity.Client.AppConfig.ManagedIdentityId managedIdentityId) => throw null; + public Microsoft.Identity.Client.ManagedIdentityApplicationBuilder WithTelemetryClient(params Microsoft.IdentityModel.Abstractions.ITelemetryClient[] telemetryClients) => throw null; + } + public class Metrics + { + public static long TotalAccessTokensFromBroker { get => throw null; } + public static long TotalAccessTokensFromCache { get => throw null; } + public static long TotalAccessTokensFromIdP { get => throw null; } + public static long TotalDurationInMs { get => throw null; } + } + public class MsalClaimsChallengeException : Microsoft.Identity.Client.MsalUiRequiredException + { + public MsalClaimsChallengeException(string errorCode, string errorMessage) : base(default(string), default(string)) => throw null; + public MsalClaimsChallengeException(string errorCode, string errorMessage, System.Exception innerException) : base(default(string), default(string)) => throw null; + public MsalClaimsChallengeException(string errorCode, string errorMessage, System.Exception innerException, Microsoft.Identity.Client.UiRequiredExceptionClassification classification) : base(default(string), default(string)) => throw null; + } + public class MsalClientException : Microsoft.Identity.Client.MsalException + { + public MsalClientException(string errorCode) => throw null; + public MsalClientException(string errorCode, string errorMessage) => throw null; + public MsalClientException(string errorCode, string errorMessage, System.Exception innerException) => throw null; + } + public static class MsalError + { + public const string AccessDenied = default; + public const string AccessingWsMetadataExchangeFailed = default; + public const string AccessTokenTypeMissing = default; + public const string ActivityRequired = default; + public const string AdfsNotSupportedWithBroker = default; + public const string AndroidBrokerOperationFailed = default; + public const string AndroidBrokerSignatureVerificationFailed = default; + public const string AuthenticationCanceledError = default; + public const string AuthenticationFailed = default; + public const string AuthenticationUiFailed = default; + public const string AuthenticationUiFailedError = default; + public const string AuthorityHostMismatch = default; + public const string AuthorityTenantSpecifiedTwice = default; + public const string AuthorityTypeMismatch = default; + public const string AuthorityValidationFailed = default; + public const string B2CAuthorityHostMismatch = default; + public const string BrokerApplicationRequired = default; + public const string BrokerDoesNotSupportPop = default; + public const string BrokerNonceMismatch = default; + public const string BrokerRequiredForPop = default; + public const string BrokerResponseHashMismatch = default; + public const string BrokerResponseReturnedError = default; + public const string CannotAccessUserInformationOrUserNotDomainJoined = default; + public const string CannotInvokeBroker = default; + public const string CertificateNotRsa = default; + public const string CertWithoutPrivateKey = default; + public const string ClientCredentialAuthenticationTypeMustBeDefined = default; + public const string ClientCredentialAuthenticationTypesAreMutuallyExclusive = default; + public const string CodeExpired = default; + public const string CombinedUserAppCacheNotSupported = default; + public const string CryptographicError = default; + public const string CurrentBrokerAccount = default; + public const string CustomMetadataInstanceOrUri = default; + public const string CustomWebUiRedirectUriMismatch = default; + public const string CustomWebUiReturnedInvalidUri = default; + public const string DefaultRedirectUriIsInvalid = default; + public const string DeviceCertificateNotFound = default; + public const string DuplicateQueryParameterError = default; + public const string EncodedTokenTooLong = default; + public const string ExactlyOneScopeExpected = default; + public const string ExperimentalFeature = default; + public const string FailedToAcquireTokenSilentlyFromBroker = default; + public const string FailedToGetBrokerResponse = default; + public const string FailedToRefreshToken = default; + public const string FederatedServiceReturnedError = default; + public const string GetUserNameFailed = default; + public const string HttpListenerError = default; + public const string HttpStatusCodeNotOk = default; + public const string HttpStatusNotFound = default; + public const string InitializeProcessSecurityError = default; + public const string IntegratedWindowsAuthenticationFailed = default; + public const string IntegratedWindowsAuthNotSupportedForManagedUser = default; + public const string InteractionRequired = default; + public const string InternalError = default; + public const string InvalidAdalCacheMultipleRTs = default; + public const string InvalidAuthority = default; + public const string InvalidAuthorityType = default; + public const string InvalidAuthorizationUri = default; + public const string InvalidClient = default; + public const string InvalidGrantError = default; + public const string InvalidInstance = default; + public const string InvalidJsonClaimsFormat = default; + public const string InvalidJwtError = default; + public const string InvalidManagedIdentityEndpoint = default; + public const string InvalidManagedIdentityResponse = default; + public const string InvalidOwnerWindowType = default; + public const string InvalidRequest = default; + public const string InvalidTokenProviderResponseValue = default; + public const string InvalidUserInstanceMetadata = default; + public const string JsonParseError = default; + public const string LinuxXdgOpen = default; + public const string LoopbackRedirectUri = default; + public const string LoopbackResponseUriMismatch = default; + public const string ManagedIdentityRequestFailed = default; + public const string ManagedIdentityUnreachableNetwork = default; + public const string MissingFederationMetadataUrl = default; + public const string MissingPassiveAuthEndpoint = default; + public const string MultipleAccountsForLoginHint = default; + public const string MultipleTokensMatchedError = default; + public const string NetworkNotAvailableError = default; + public const string NoAccountForLoginHint = default; + public const string NoAndroidBrokerAccountFound = default; + public const string NoAndroidBrokerInstalledOnDevice = default; + public const string NoClientId = default; + public const string NonceRequiredForPopOnPCA = default; + public const string NonHttpsRedirectNotSupported = default; + public const string NonParsableOAuthError = default; + public const string NoPromptFailedError = default; + public const string NoRedirectUri = default; + public const string NoTokensFoundError = default; + public const string NoUsernameOrAccountIDProvidedForSilentAndroidBrokerAuthentication = default; + public const string NullIntentReturnedFromAndroidBroker = default; + public const string OboCacheKeyNotInCacheError = default; + public const string ParsingWsMetadataExchangeFailed = default; + public const string ParsingWsTrustResponseFailed = default; + public const string PasswordRequiredForManagedUserError = default; + public const string PlatformNotSupported = default; + public const string RedirectUriValidationFailed = default; + public const string RegionalAndAuthorityOverride = default; + public const string RegionalAuthorityValidation = default; + public const string RegionDiscoveryFailed = default; + public const string RegionDiscoveryNotEnabled = default; + public const string RegionDiscoveryWithCustomInstanceMetadata = default; + public const string RequestThrottled = default; + public const string RequestTimeout = default; + public const string RopcDoesNotSupportMsaAccounts = default; + public const string ScopesRequired = default; + public const string ServiceNotAvailable = default; + public const string SetCiamAuthorityAtRequestLevelNotSupported = default; + public const string SSHCertUsedAsHttpHeader = default; + public const string StateMismatchError = default; + public const string StaticCacheWithExternalSerialization = default; + public const string SystemWebviewOptionsNotApplicable = default; + public const string TelemetryConfigOrTelemetryCallback = default; + public const string TenantDiscoveryFailedError = default; + public const string TenantOverrideNonAad = default; + public const string TokenCacheNullError = default; + public const string TokenTypeMismatch = default; + public const string UapCannotFindDomainUser = default; + public const string UapCannotFindUpn = default; + public const string UnableToParseAuthenticationHeader = default; + public const string UnauthorizedClient = default; + public const string UnknownBrokerError = default; + public const string UnknownError = default; + public const string UnknownManagedIdentityError = default; + public const string UnknownUser = default; + public const string UnknownUserType = default; + public const string UpnRequired = default; + public const string UserAssertionNullError = default; + public const string UserAssignedManagedIdentityNotConfigurableAtRuntime = default; + public const string UserAssignedManagedIdentityNotSupported = default; + public const string UserMismatch = default; + public const string UserNullError = default; + public const string UserRealmDiscoveryFailed = default; + public const string ValidateAuthorityOrCustomMetadata = default; + public const string WABError = default; + public const string WamFailedToSignout = default; + public const string WamInteractiveError = default; + public const string WamNoB2C = default; + public const string WamPickerError = default; + public const string WamScopesRequired = default; + public const string WamUiThread = default; + public const string WebView2LoaderNotFound = default; + public const string WebView2NotInstalled = default; + public const string WebviewUnavailable = default; + public const string WsTrustEndpointNotFoundInMetadataDocument = default; + } + public class MsalException : System.Exception + { + public System.Collections.Generic.IReadOnlyDictionary AdditionalExceptionData { get => throw null; set { } } + public const string BrokerErrorCode = default; + public const string BrokerErrorContext = default; + public const string BrokerErrorStatus = default; + public const string BrokerErrorTag = default; + public const string BrokerTelemetry = default; + public string CorrelationId { get => throw null; set { } } + public MsalException() => throw null; + public MsalException(string errorCode) => throw null; + public MsalException(string errorCode, string errorMessage) => throw null; + public MsalException(string errorCode, string errorMessage, System.Exception innerException) => throw null; + public string ErrorCode { get => throw null; } + public static Microsoft.Identity.Client.MsalException FromJsonString(string json) => throw null; + public bool IsRetryable { get => throw null; set { } } + public const string ManagedIdentitySource = default; + public string ToJsonString() => throw null; + public override string ToString() => throw null; + } + public class MsalManagedIdentityException : Microsoft.Identity.Client.MsalServiceException + { + public MsalManagedIdentityException(string errorCode, string errorMessage, Microsoft.Identity.Client.ManagedIdentity.ManagedIdentitySource source) : base(default(string), default(string)) => throw null; + public MsalManagedIdentityException(string errorCode, string errorMessage, Microsoft.Identity.Client.ManagedIdentity.ManagedIdentitySource source, int statusCode) : base(default(string), default(string)) => throw null; + public MsalManagedIdentityException(string errorCode, string errorMessage, System.Exception innerException, Microsoft.Identity.Client.ManagedIdentity.ManagedIdentitySource source, int statusCode) : base(default(string), default(string)) => throw null; + public MsalManagedIdentityException(string errorCode, string errorMessage, System.Exception innerException, Microsoft.Identity.Client.ManagedIdentity.ManagedIdentitySource source) : base(default(string), default(string)) => throw null; + public Microsoft.Identity.Client.ManagedIdentity.ManagedIdentitySource ManagedIdentitySource { get => throw null; } + protected override void UpdateIsRetryable() => throw null; + } + public class MsalServiceException : Microsoft.Identity.Client.MsalException + { + public string Claims { get => throw null; } + public MsalServiceException(string errorCode, string errorMessage) => throw null; + public MsalServiceException(string errorCode, string errorMessage, int statusCode) => throw null; + public MsalServiceException(string errorCode, string errorMessage, System.Exception innerException) => throw null; + public MsalServiceException(string errorCode, string errorMessage, int statusCode, System.Exception innerException) => throw null; + public MsalServiceException(string errorCode, string errorMessage, int statusCode, string claims, System.Exception innerException) => throw null; + public System.Net.Http.Headers.HttpResponseHeaders Headers { get => throw null; set { } } + public string ResponseBody { get => throw null; set { } } + public int StatusCode { get => throw null; } + public override string ToString() => throw null; + protected virtual void UpdateIsRetryable() => throw null; + } + public class MsalThrottledServiceException : Microsoft.Identity.Client.MsalServiceException + { + public MsalThrottledServiceException(Microsoft.Identity.Client.MsalServiceException originalException) : base(default(string), default(string)) => throw null; + public Microsoft.Identity.Client.MsalServiceException OriginalServiceException { get => throw null; } + } + public class MsalThrottledUiRequiredException : Microsoft.Identity.Client.MsalUiRequiredException + { + public MsalThrottledUiRequiredException(Microsoft.Identity.Client.MsalUiRequiredException originalException) : base(default(string), default(string)) => throw null; + public Microsoft.Identity.Client.MsalUiRequiredException OriginalServiceException { get => throw null; } + } + public class MsalUiRequiredException : Microsoft.Identity.Client.MsalServiceException + { + public Microsoft.Identity.Client.UiRequiredExceptionClassification Classification { get => throw null; } + public MsalUiRequiredException(string errorCode, string errorMessage) : base(default(string), default(string)) => throw null; + public MsalUiRequiredException(string errorCode, string errorMessage, System.Exception innerException) : base(default(string), default(string)) => throw null; + public MsalUiRequiredException(string errorCode, string errorMessage, System.Exception innerException, Microsoft.Identity.Client.UiRequiredExceptionClassification classification) : base(default(string), default(string)) => throw null; + } + public static partial class OsCapabilitiesExtensions + { + public static System.Security.Cryptography.X509Certificates.X509Certificate2 GetCertificate(this Microsoft.Identity.Client.IConfidentialClientApplication confidentialClientApplication) => throw null; + public static bool IsEmbeddedWebViewAvailable(this Microsoft.Identity.Client.IPublicClientApplication publicClientApplication) => throw null; + public static bool IsSystemWebViewAvailable(this Microsoft.Identity.Client.IPublicClientApplication publicClientApplication) => throw null; + public static bool IsUserInteractive(this Microsoft.Identity.Client.IPublicClientApplication publicClientApplication) => throw null; + } + namespace Platforms + { + namespace Features + { + namespace DesktopOs + { + namespace Kerberos + { + public abstract class Credential + { + protected Credential() => throw null; + public static Microsoft.Identity.Client.Platforms.Features.DesktopOs.Kerberos.Credential Current() => throw null; + } + } + } + } + } + public struct Prompt + { + public static readonly Microsoft.Identity.Client.Prompt Consent; + public static readonly Microsoft.Identity.Client.Prompt Create; + public override bool Equals(object obj) => throw null; + public static readonly Microsoft.Identity.Client.Prompt ForceLogin; + public override int GetHashCode() => throw null; + public static readonly Microsoft.Identity.Client.Prompt NoPrompt; + public static bool operator ==(Microsoft.Identity.Client.Prompt x, Microsoft.Identity.Client.Prompt y) => throw null; + public static bool operator !=(Microsoft.Identity.Client.Prompt x, Microsoft.Identity.Client.Prompt y) => throw null; + public static readonly Microsoft.Identity.Client.Prompt SelectAccount; + } + public sealed class PublicClientApplication : Microsoft.Identity.Client.ClientApplicationBase, Microsoft.Identity.Client.IApplicationBase, Microsoft.Identity.Client.IByRefreshToken, Microsoft.Identity.Client.IClientApplicationBase, Microsoft.Identity.Client.IPublicClientApplication + { + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes) => throw null; + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, string loginHint) => throw null; + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account) => throw null; + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, string loginHint, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters) => throw null; + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters) => throw null; + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, string loginHint, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters, System.Collections.Generic.IEnumerable extraScopesToConsent, string authority) => throw null; + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters, System.Collections.Generic.IEnumerable extraScopesToConsent, string authority) => throw null; + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.UIParent parent) => throw null; + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, string loginHint, Microsoft.Identity.Client.UIParent parent) => throw null; + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account, Microsoft.Identity.Client.UIParent parent) => throw null; + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, string loginHint, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters, Microsoft.Identity.Client.UIParent parent) => throw null; + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters, Microsoft.Identity.Client.UIParent parent) => throw null; + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, string loginHint, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters, System.Collections.Generic.IEnumerable extraScopesToConsent, string authority, Microsoft.Identity.Client.UIParent parent) => throw null; + public System.Threading.Tasks.Task AcquireTokenAsync(System.Collections.Generic.IEnumerable scopes, Microsoft.Identity.Client.IAccount account, Microsoft.Identity.Client.Prompt prompt, string extraQueryParameters, System.Collections.Generic.IEnumerable extraScopesToConsent, string authority, Microsoft.Identity.Client.UIParent parent) => throw null; + public Microsoft.Identity.Client.AcquireTokenByIntegratedWindowsAuthParameterBuilder AcquireTokenByIntegratedWindowsAuth(System.Collections.Generic.IEnumerable scopes) => throw null; + public System.Threading.Tasks.Task AcquireTokenByIntegratedWindowsAuthAsync(System.Collections.Generic.IEnumerable scopes) => throw null; + public System.Threading.Tasks.Task AcquireTokenByIntegratedWindowsAuthAsync(System.Collections.Generic.IEnumerable scopes, string username) => throw null; + Microsoft.Identity.Client.AcquireTokenByRefreshTokenParameterBuilder Microsoft.Identity.Client.IByRefreshToken.AcquireTokenByRefreshToken(System.Collections.Generic.IEnumerable scopes, string refreshToken) => throw null; + System.Threading.Tasks.Task Microsoft.Identity.Client.IByRefreshToken.AcquireTokenByRefreshTokenAsync(System.Collections.Generic.IEnumerable scopes, string refreshToken) => throw null; + public Microsoft.Identity.Client.AcquireTokenByUsernamePasswordParameterBuilder AcquireTokenByUsernamePassword(System.Collections.Generic.IEnumerable scopes, string username, System.Security.SecureString password) => throw null; + public Microsoft.Identity.Client.AcquireTokenByUsernamePasswordParameterBuilder AcquireTokenByUsernamePassword(System.Collections.Generic.IEnumerable scopes, string username, string password) => throw null; + public System.Threading.Tasks.Task AcquireTokenByUsernamePasswordAsync(System.Collections.Generic.IEnumerable scopes, string username, System.Security.SecureString securePassword) => throw null; + public Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder AcquireTokenInteractive(System.Collections.Generic.IEnumerable scopes) => throw null; + public Microsoft.Identity.Client.AcquireTokenWithDeviceCodeParameterBuilder AcquireTokenWithDeviceCode(System.Collections.Generic.IEnumerable scopes, System.Func deviceCodeResultCallback) => throw null; + public System.Threading.Tasks.Task AcquireTokenWithDeviceCodeAsync(System.Collections.Generic.IEnumerable scopes, System.Func deviceCodeResultCallback) => throw null; + public System.Threading.Tasks.Task AcquireTokenWithDeviceCodeAsync(System.Collections.Generic.IEnumerable scopes, string extraQueryParameters, System.Func deviceCodeResultCallback) => throw null; + public System.Threading.Tasks.Task AcquireTokenWithDeviceCodeAsync(System.Collections.Generic.IEnumerable scopes, System.Func deviceCodeResultCallback, System.Threading.CancellationToken cancellationToken) => throw null; + public System.Threading.Tasks.Task AcquireTokenWithDeviceCodeAsync(System.Collections.Generic.IEnumerable scopes, string extraQueryParameters, System.Func deviceCodeResultCallback, System.Threading.CancellationToken cancellationToken) => throw null; + public PublicClientApplication(string clientId) => throw null; + public PublicClientApplication(string clientId, string authority) => throw null; + public PublicClientApplication(string clientId, string authority, Microsoft.Identity.Client.TokenCache userTokenCache) => throw null; + public bool IsBrokerAvailable() => throw null; + public bool IsEmbeddedWebViewAvailable() => throw null; + public bool IsProofOfPossessionSupportedByClient() => throw null; + public bool IsSystemWebViewAvailable { get => throw null; } + public bool IsUserInteractive() => throw null; + public static Microsoft.Identity.Client.IAccount OperatingSystemAccount { get => throw null; } + } + public sealed class PublicClientApplicationBuilder : Microsoft.Identity.Client.AbstractApplicationBuilder + { + public Microsoft.Identity.Client.IPublicClientApplication Build() => throw null; + public static Microsoft.Identity.Client.PublicClientApplicationBuilder Create(string clientId) => throw null; + public static Microsoft.Identity.Client.PublicClientApplicationBuilder CreateWithApplicationOptions(Microsoft.Identity.Client.PublicClientApplicationOptions options) => throw null; + public bool IsBrokerAvailable() => throw null; + public Microsoft.Identity.Client.PublicClientApplicationBuilder WithBroker(bool enableBroker = default(bool)) => throw null; + public Microsoft.Identity.Client.PublicClientApplicationBuilder WithDefaultRedirectUri() => throw null; + public Microsoft.Identity.Client.PublicClientApplicationBuilder WithIosKeychainSecurityGroup(string keychainSecurityGroup) => throw null; + public Microsoft.Identity.Client.PublicClientApplicationBuilder WithKerberosTicketClaim(string servicePrincipalName, Microsoft.Identity.Client.Kerberos.KerberosTicketContainer ticketContainer) => throw null; + public Microsoft.Identity.Client.PublicClientApplicationBuilder WithMultiCloudSupport(bool enableMultiCloudSupport) => throw null; + public Microsoft.Identity.Client.PublicClientApplicationBuilder WithOidcAuthority(string authorityUri) => throw null; + public Microsoft.Identity.Client.PublicClientApplicationBuilder WithParentActivityOrWindow(System.Func parentActivityOrWindowFunc) => throw null; + public Microsoft.Identity.Client.PublicClientApplicationBuilder WithParentActivityOrWindow(System.Func windowFunc) => throw null; + public Microsoft.Identity.Client.PublicClientApplicationBuilder WithWindowsBrokerOptions(Microsoft.Identity.Client.WindowsBrokerOptions options) => throw null; + } + public static partial class PublicClientApplicationExtensions + { + public static bool IsProofOfPossessionSupportedByClient(this Microsoft.Identity.Client.IPublicClientApplication app) => throw null; + } + public class PublicClientApplicationOptions : Microsoft.Identity.Client.ApplicationOptions + { + public PublicClientApplicationOptions() => throw null; + } + namespace Region + { + public enum RegionOutcome + { + None = 0, + UserProvidedValid = 1, + UserProvidedAutodetectionFailed = 2, + UserProvidedInvalid = 3, + AutodetectSuccess = 4, + FallbackToGlobal = 5, + } + } + public class RegionDetails + { + public string AutoDetectionError { get => throw null; } + public RegionDetails(Microsoft.Identity.Client.Region.RegionOutcome regionOutcome, string regionUsed, string autoDetectionError) => throw null; + public Microsoft.Identity.Client.Region.RegionOutcome RegionOutcome { get => throw null; } + public string RegionUsed { get => throw null; } + } + namespace SSHCertificates + { + public static partial class SSHExtensions + { + public static Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder WithSSHCertificateAuthenticationScheme(this Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder builder, string publicKeyJwk, string keyId) => throw null; + public static Microsoft.Identity.Client.AcquireTokenSilentParameterBuilder WithSSHCertificateAuthenticationScheme(this Microsoft.Identity.Client.AcquireTokenSilentParameterBuilder builder, string publicKeyJwk, string keyId) => throw null; + } + } + public class SystemWebViewOptions + { + public System.Uri BrowserRedirectError { get => throw null; set { } } + public System.Uri BrowserRedirectSuccess { get => throw null; set { } } + public SystemWebViewOptions() => throw null; + public string HtmlMessageError { get => throw null; set { } } + public string HtmlMessageSuccess { get => throw null; set { } } + public bool iOSHidePrivacyPrompt { get => throw null; set { } } + public System.Func OpenBrowserAsync { get => throw null; set { } } + public static System.Threading.Tasks.Task OpenWithChromeEdgeBrowserAsync(System.Uri uri) => throw null; + public static System.Threading.Tasks.Task OpenWithEdgeBrowserAsync(System.Uri uri) => throw null; + } + public class Telemetry + { + public Telemetry() => throw null; + public static Microsoft.Identity.Client.Telemetry GetInstance() => throw null; + public bool HasRegisteredReceiver() => throw null; + public delegate void Receiver(System.Collections.Generic.List> events); + public void RegisterReceiver(Microsoft.Identity.Client.Telemetry.Receiver r) => throw null; + public bool TelemetryOnFailureOnly { get => throw null; set { } } + } + public enum TelemetryAudienceType + { + PreProduction = 0, + Production = 1, + } + namespace TelemetryCore + { + namespace TelemetryClient + { + public class TelemetryData + { + public Microsoft.Identity.Client.Cache.CacheLevel CacheLevel { get => throw null; set { } } + public TelemetryData() => throw null; + } + } + } + public class TenantProfile + { + public System.Security.Claims.ClaimsPrincipal ClaimsPrincipal { get => throw null; } + public bool IsHomeTenant { get => throw null; } + public string Oid { get => throw null; } + public string TenantId { get => throw null; } + } + public sealed class TokenCache : Microsoft.Identity.Client.ITokenCache, Microsoft.Identity.Client.ITokenCacheSerializer + { + public TokenCache() => throw null; + public void Deserialize(byte[] msalV2State) => throw null; + public void DeserializeAdalV3(byte[] adalV3State) => throw null; + void Microsoft.Identity.Client.ITokenCacheSerializer.DeserializeAdalV3(byte[] adalV3State) => throw null; + public void DeserializeMsalV2(byte[] msalV2State) => throw null; + void Microsoft.Identity.Client.ITokenCacheSerializer.DeserializeMsalV2(byte[] msalV2State) => throw null; + public void DeserializeMsalV3(byte[] msalV3State, bool shouldClearExistingCache) => throw null; + void Microsoft.Identity.Client.ITokenCacheSerializer.DeserializeMsalV3(byte[] msalV3State, bool shouldClearExistingCache) => throw null; + public void DeserializeUnifiedAndAdalCache(Microsoft.Identity.Client.Cache.CacheData cacheData) => throw null; + public bool HasStateChanged { get => throw null; set { } } + public byte[] Serialize() => throw null; + public byte[] SerializeAdalV3() => throw null; + byte[] Microsoft.Identity.Client.ITokenCacheSerializer.SerializeAdalV3() => throw null; + public byte[] SerializeMsalV2() => throw null; + byte[] Microsoft.Identity.Client.ITokenCacheSerializer.SerializeMsalV2() => throw null; + public byte[] SerializeMsalV3() => throw null; + byte[] Microsoft.Identity.Client.ITokenCacheSerializer.SerializeMsalV3() => throw null; + public Microsoft.Identity.Client.Cache.CacheData SerializeUnifiedAndAdalCache() => throw null; + public void SetAfterAccess(Microsoft.Identity.Client.TokenCacheCallback afterAccess) => throw null; + public void SetAfterAccessAsync(System.Func afterAccess) => throw null; + public void SetBeforeAccess(Microsoft.Identity.Client.TokenCacheCallback beforeAccess) => throw null; + public void SetBeforeAccessAsync(System.Func beforeAccess) => throw null; + public void SetBeforeWrite(Microsoft.Identity.Client.TokenCacheCallback beforeWrite) => throw null; + public void SetBeforeWriteAsync(System.Func beforeWrite) => throw null; + public void SetIosKeychainSecurityGroup(string securityGroup) => throw null; + public delegate void TokenCacheNotification(Microsoft.Identity.Client.TokenCacheNotificationArgs args); + } + public delegate void TokenCacheCallback(Microsoft.Identity.Client.TokenCacheNotificationArgs args); + public static partial class TokenCacheExtensions + { + public static void SetCacheOptions(this Microsoft.Identity.Client.ITokenCache tokenCache, Microsoft.Identity.Client.CacheOptions options) => throw null; + } + public sealed class TokenCacheNotificationArgs + { + public Microsoft.Identity.Client.IAccount Account { get => throw null; } + public System.Threading.CancellationToken CancellationToken { get => throw null; } + public string ClientId { get => throw null; } + public System.Guid CorrelationId { get => throw null; } + public TokenCacheNotificationArgs(Microsoft.Identity.Client.ITokenCacheSerializer tokenCache, string clientId, Microsoft.Identity.Client.IAccount account, bool hasStateChanged, bool isApplicationCache, string suggestedCacheKey, bool hasTokens, System.DateTimeOffset? suggestedCacheExpiry, System.Threading.CancellationToken cancellationToken) => throw null; + public TokenCacheNotificationArgs(Microsoft.Identity.Client.ITokenCacheSerializer tokenCache, string clientId, Microsoft.Identity.Client.IAccount account, bool hasStateChanged, bool isApplicationCache, string suggestedCacheKey, bool hasTokens, System.DateTimeOffset? suggestedCacheExpiry, System.Threading.CancellationToken cancellationToken, System.Guid correlationId) => throw null; + public TokenCacheNotificationArgs(Microsoft.Identity.Client.ITokenCacheSerializer tokenCache, string clientId, Microsoft.Identity.Client.IAccount account, bool hasStateChanged, bool isApplicationCache, string suggestedCacheKey, bool hasTokens, System.DateTimeOffset? suggestedCacheExpiry, System.Threading.CancellationToken cancellationToken, System.Guid correlationId, System.Collections.Generic.IEnumerable requestScopes, string requestTenantId) => throw null; + public TokenCacheNotificationArgs(Microsoft.Identity.Client.ITokenCacheSerializer tokenCache, string clientId, Microsoft.Identity.Client.IAccount account, bool hasStateChanged, bool isApplicationCache, string suggestedCacheKey, bool hasTokens, System.DateTimeOffset? suggestedCacheExpiry, System.Threading.CancellationToken cancellationToken, System.Guid correlationId, System.Collections.Generic.IEnumerable requestScopes, string requestTenantId, Microsoft.IdentityModel.Abstractions.IIdentityLogger identityLogger, bool piiLoggingEnabled, Microsoft.Identity.Client.TelemetryCore.TelemetryClient.TelemetryData telemetryData = default(Microsoft.Identity.Client.TelemetryCore.TelemetryClient.TelemetryData)) => throw null; + public bool HasStateChanged { get => throw null; } + public bool HasTokens { get => throw null; } + public Microsoft.IdentityModel.Abstractions.IIdentityLogger IdentityLogger { get => throw null; } + public bool IsApplicationCache { get => throw null; } + public bool PiiLoggingEnabled { get => throw null; } + public System.Collections.Generic.IEnumerable RequestScopes { get => throw null; } + public string RequestTenantId { get => throw null; } + public System.DateTimeOffset? SuggestedCacheExpiry { get => throw null; } + public string SuggestedCacheKey { get => throw null; } + public Microsoft.Identity.Client.TelemetryCore.TelemetryClient.TelemetryData TelemetryData { get => throw null; } + public Microsoft.Identity.Client.ITokenCacheSerializer TokenCache { get => throw null; } + public Microsoft.Identity.Client.IUser User { get => throw null; } + } + public enum TokenSource + { + IdentityProvider = 0, + Cache = 1, + Broker = 2, + } + public class TraceTelemetryConfig : Microsoft.Identity.Client.ITelemetryConfig + { + public System.Collections.Generic.IEnumerable AllowedScopes { get => throw null; } + public Microsoft.Identity.Client.TelemetryAudienceType AudienceType { get => throw null; } + public TraceTelemetryConfig() => throw null; + public System.Action DispatchAction { get => throw null; } + public string SessionId { get => throw null; } + } + public struct UIBehavior + { + } + public sealed class UIParent + { + public UIParent() => throw null; + public UIParent(object parent, bool useEmbeddedWebView) => throw null; + public static bool IsSystemWebviewAvailable() => throw null; + } + public enum UiRequiredExceptionClassification + { + None = 0, + MessageOnly = 1, + BasicAction = 2, + AdditionalAction = 3, + ConsentRequired = 4, + UserPasswordExpired = 5, + PromptNeverFailed = 6, + AcquireTokenSilentFailed = 7, + } + public sealed class UserAssertion + { + public string Assertion { get => throw null; } + public string AssertionType { get => throw null; } + public UserAssertion(string jwtBearerToken) => throw null; + public UserAssertion(string assertion, string assertionType) => throw null; + } + namespace Utils + { + namespace Windows + { + public static class WindowsNativeUtils + { + public static void InitializeProcessSecurity() => throw null; + public static bool IsElevatedUser() => throw null; + } + } + } + public class WindowsBrokerOptions + { + public WindowsBrokerOptions() => throw null; + public string HeaderText { get => throw null; set { } } + public bool ListWindowsWorkAndSchoolAccounts { get => throw null; set { } } + public bool MsaPassthrough { get => throw null; set { } } + } + public class WwwAuthenticateParameters + { + public string AuthenticationScheme { get => throw null; } + public string Authority { get => throw null; set { } } + public string Claims { get => throw null; set { } } + public static Microsoft.Identity.Client.WwwAuthenticateParameters CreateFromAuthenticationHeaders(System.Net.Http.Headers.HttpResponseHeaders httpResponseHeaders, string scheme) => throw null; + public static System.Collections.Generic.IReadOnlyList CreateFromAuthenticationHeaders(System.Net.Http.Headers.HttpResponseHeaders httpResponseHeaders) => throw null; + public static System.Threading.Tasks.Task CreateFromAuthenticationResponseAsync(string resourceUri, string scheme, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public static System.Threading.Tasks.Task CreateFromAuthenticationResponseAsync(string resourceUri, string scheme, System.Net.Http.HttpClient httpClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public static System.Threading.Tasks.Task> CreateFromAuthenticationResponseAsync(string resourceUri, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public static System.Threading.Tasks.Task> CreateFromAuthenticationResponseAsync(string resourceUri, System.Net.Http.HttpClient httpClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public static System.Threading.Tasks.Task CreateFromResourceResponseAsync(string resourceUri) => throw null; + public static System.Threading.Tasks.Task CreateFromResourceResponseAsync(string resourceUri, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public static System.Threading.Tasks.Task CreateFromResourceResponseAsync(System.Net.Http.HttpClient httpClient, string resourceUri, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public static Microsoft.Identity.Client.WwwAuthenticateParameters CreateFromResponseHeaders(System.Net.Http.Headers.HttpResponseHeaders httpResponseHeaders, string scheme = default(string)) => throw null; + public static Microsoft.Identity.Client.WwwAuthenticateParameters CreateFromWwwAuthenticateHeaderValue(string wwwAuthenticateValue) => throw null; + public WwwAuthenticateParameters() => throw null; + public string Error { get => throw null; set { } } + public static string GetClaimChallengeFromResponseHeaders(System.Net.Http.Headers.HttpResponseHeaders httpResponseHeaders, string scheme = default(string)) => throw null; + public string GetTenantId() => throw null; + public string Nonce { get => throw null; } + public string Resource { get => throw null; set { } } + public System.Collections.Generic.IEnumerable Scopes { get => throw null; set { } } + public string this[string key] { get => throw null; } + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/Microsoft.Identity.Client/4.61.3/Microsoft.Identity.Client.csproj b/csharp/ql/test/resources/stubs/Microsoft.Identity.Client/4.61.3/Microsoft.Identity.Client.csproj new file mode 100644 index 000000000000..3951c0cd04ff --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.Identity.Client/4.61.3/Microsoft.Identity.Client.csproj @@ -0,0 +1,14 @@ + + + net9.0 + true + bin\ + false + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Abstractions/7.5.0/Microsoft.IdentityModel.Abstractions.cs b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Abstractions/7.5.0/Microsoft.IdentityModel.Abstractions.cs new file mode 100644 index 000000000000..04ee4e6d957e --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Abstractions/7.5.0/Microsoft.IdentityModel.Abstractions.cs @@ -0,0 +1,77 @@ +// This file contains auto-generated code. +// Generated from `Microsoft.IdentityModel.Abstractions, Version=7.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35`. +namespace Microsoft +{ + namespace IdentityModel + { + namespace Abstractions + { + public enum EventLogLevel + { + LogAlways = 0, + Critical = 1, + Error = 2, + Warning = 3, + Informational = 4, + Verbose = 5, + } + public interface IIdentityLogger + { + bool IsEnabled(Microsoft.IdentityModel.Abstractions.EventLogLevel eventLogLevel); + void Log(Microsoft.IdentityModel.Abstractions.LogEntry entry); + } + public interface ITelemetryClient + { + string ClientId { get; set; } + void Initialize(); + bool IsEnabled(); + bool IsEnabled(string eventName); + void TrackEvent(Microsoft.IdentityModel.Abstractions.TelemetryEventDetails eventDetails); + void TrackEvent(string eventName, System.Collections.Generic.IDictionary stringProperties = default(System.Collections.Generic.IDictionary), System.Collections.Generic.IDictionary longProperties = default(System.Collections.Generic.IDictionary), System.Collections.Generic.IDictionary boolProperties = default(System.Collections.Generic.IDictionary), System.Collections.Generic.IDictionary dateTimeProperties = default(System.Collections.Generic.IDictionary), System.Collections.Generic.IDictionary doubleProperties = default(System.Collections.Generic.IDictionary), System.Collections.Generic.IDictionary guidProperties = default(System.Collections.Generic.IDictionary)); + } + public class LogEntry + { + public string CorrelationId { get => throw null; set { } } + public LogEntry() => throw null; + public Microsoft.IdentityModel.Abstractions.EventLogLevel EventLogLevel { get => throw null; set { } } + public string Message { get => throw null; set { } } + } + public sealed class NullIdentityModelLogger : Microsoft.IdentityModel.Abstractions.IIdentityLogger + { + public static Microsoft.IdentityModel.Abstractions.NullIdentityModelLogger Instance { get => throw null; } + public bool IsEnabled(Microsoft.IdentityModel.Abstractions.EventLogLevel eventLogLevel) => throw null; + public void Log(Microsoft.IdentityModel.Abstractions.LogEntry entry) => throw null; + } + public class NullTelemetryClient : Microsoft.IdentityModel.Abstractions.ITelemetryClient + { + public string ClientId { get => throw null; set { } } + public void Initialize() => throw null; + public static Microsoft.IdentityModel.Abstractions.NullTelemetryClient Instance { get => throw null; } + public bool IsEnabled() => throw null; + public bool IsEnabled(string eventName) => throw null; + public void TrackEvent(Microsoft.IdentityModel.Abstractions.TelemetryEventDetails eventDetails) => throw null; + public void TrackEvent(string eventName, System.Collections.Generic.IDictionary stringProperties = default(System.Collections.Generic.IDictionary), System.Collections.Generic.IDictionary longProperties = default(System.Collections.Generic.IDictionary), System.Collections.Generic.IDictionary boolProperties = default(System.Collections.Generic.IDictionary), System.Collections.Generic.IDictionary dateTimeProperties = default(System.Collections.Generic.IDictionary), System.Collections.Generic.IDictionary doubleProperties = default(System.Collections.Generic.IDictionary), System.Collections.Generic.IDictionary guidProperties = default(System.Collections.Generic.IDictionary)) => throw null; + } + public static class ObservabilityConstants + { + public const string ActivityId = default; + public const string ClientId = default; + public const string Duration = default; + public const string Succeeded = default; + } + public abstract class TelemetryEventDetails + { + protected TelemetryEventDetails() => throw null; + public virtual string Name { get => throw null; set { } } + public virtual System.Collections.Generic.IReadOnlyDictionary Properties { get => throw null; } + protected System.Collections.Generic.IDictionary PropertyValues { get => throw null; } + public virtual void SetProperty(string key, string value) => throw null; + public virtual void SetProperty(string key, long value) => throw null; + public virtual void SetProperty(string key, bool value) => throw null; + public virtual void SetProperty(string key, System.DateTime value) => throw null; + public virtual void SetProperty(string key, double value) => throw null; + public virtual void SetProperty(string key, System.Guid value) => throw null; + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Abstractions/7.5.0/Microsoft.IdentityModel.Abstractions.csproj b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Abstractions/7.5.0/Microsoft.IdentityModel.Abstractions.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Abstractions/7.5.0/Microsoft.IdentityModel.Abstractions.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.JsonWebTokens/7.5.0/Microsoft.IdentityModel.JsonWebTokens.cs b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.JsonWebTokens/7.5.0/Microsoft.IdentityModel.JsonWebTokens.cs new file mode 100644 index 000000000000..b5068997c2c6 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.JsonWebTokens/7.5.0/Microsoft.IdentityModel.JsonWebTokens.cs @@ -0,0 +1,174 @@ +// This file contains auto-generated code. +// Generated from `Microsoft.IdentityModel.JsonWebTokens, Version=7.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35`. +namespace Microsoft +{ + namespace IdentityModel + { + namespace JsonWebTokens + { + public static class JsonClaimValueTypes + { + public const string Json = default; + public const string JsonArray = default; + public const string JsonNull = default; + } + public class JsonWebToken : Microsoft.IdentityModel.Tokens.SecurityToken + { + public string Actor { get => throw null; } + public string Alg { get => throw null; } + public System.Collections.Generic.IEnumerable Audiences { get => throw null; } + public string AuthenticationTag { get => throw null; } + public string Azp { get => throw null; } + public string Ciphertext { get => throw null; } + public virtual System.Collections.Generic.IEnumerable Claims { get => throw null; } + public JsonWebToken(string jwtEncodedString) => throw null; + public JsonWebToken(System.ReadOnlyMemory encodedTokenMemory) => throw null; + public JsonWebToken(string header, string payload) => throw null; + public string Cty { get => throw null; } + public string Enc { get => throw null; } + public string EncodedHeader { get => throw null; } + public string EncodedPayload { get => throw null; } + public string EncodedSignature { get => throw null; } + public string EncodedToken { get => throw null; } + public string EncryptedKey { get => throw null; } + public System.Security.Claims.Claim GetClaim(string key) => throw null; + public T GetHeaderValue(string key) => throw null; + public T GetPayloadValue(string key) => throw null; + public override string Id { get => throw null; } + public string InitializationVector { get => throw null; } + public Microsoft.IdentityModel.JsonWebTokens.JsonWebToken InnerToken { get => throw null; } + public bool IsEncrypted { get => throw null; } + public bool IsSigned { get => throw null; } + public System.DateTime IssuedAt { get => throw null; } + public override string Issuer { get => throw null; } + public string Kid { get => throw null; } + public override Microsoft.IdentityModel.Tokens.SecurityKey SecurityKey { get => throw null; } + public override Microsoft.IdentityModel.Tokens.SecurityKey SigningKey { get => throw null; set { } } + public string Subject { get => throw null; } + public override string ToString() => throw null; + public bool TryGetClaim(string key, out System.Security.Claims.Claim value) => throw null; + public bool TryGetHeaderValue(string key, out T value) => throw null; + public bool TryGetPayloadValue(string key, out T value) => throw null; + public bool TryGetValue(string key, out T value) => throw null; + public string Typ { get => throw null; } + public override string UnsafeToString() => throw null; + public override System.DateTime ValidFrom { get => throw null; } + public override System.DateTime ValidTo { get => throw null; } + public string X5t { get => throw null; } + public string Zip { get => throw null; } + } + public class JsonWebTokenHandler : Microsoft.IdentityModel.Tokens.TokenHandler + { + public const string Base64UrlEncodedUnsignedJWSHeader = default; + public virtual bool CanReadToken(string token) => throw null; + public virtual bool CanValidateToken { get => throw null; } + protected virtual System.Security.Claims.ClaimsIdentity CreateClaimsIdentity(Microsoft.IdentityModel.JsonWebTokens.JsonWebToken jwtToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + protected virtual System.Security.Claims.ClaimsIdentity CreateClaimsIdentity(Microsoft.IdentityModel.JsonWebTokens.JsonWebToken jwtToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters, string issuer) => throw null; + public virtual string CreateToken(string payload) => throw null; + public virtual string CreateToken(string payload, System.Collections.Generic.IDictionary additionalHeaderClaims) => throw null; + public virtual string CreateToken(string payload, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials) => throw null; + public virtual string CreateToken(string payload, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, System.Collections.Generic.IDictionary additionalHeaderClaims) => throw null; + public virtual string CreateToken(Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor tokenDescriptor) => throw null; + public virtual string CreateToken(string payload, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials) => throw null; + public virtual string CreateToken(string payload, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, System.Collections.Generic.IDictionary additionalHeaderClaims) => throw null; + public virtual string CreateToken(string payload, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials) => throw null; + public virtual string CreateToken(string payload, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, System.Collections.Generic.IDictionary additionalHeaderClaims) => throw null; + public virtual string CreateToken(string payload, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, string compressionAlgorithm) => throw null; + public virtual string CreateToken(string payload, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, string compressionAlgorithm) => throw null; + public virtual string CreateToken(string payload, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, string compressionAlgorithm, System.Collections.Generic.IDictionary additionalHeaderClaims, System.Collections.Generic.IDictionary additionalInnerHeaderClaims) => throw null; + public virtual string CreateToken(string payload, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, string compressionAlgorithm, System.Collections.Generic.IDictionary additionalHeaderClaims) => throw null; + public JsonWebTokenHandler() => throw null; + public string DecryptToken(Microsoft.IdentityModel.JsonWebTokens.JsonWebToken jwtToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public static System.Collections.Generic.IDictionary DefaultInboundClaimTypeMap; + public static bool DefaultMapInboundClaims; + public string EncryptToken(string innerJwt, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials) => throw null; + public string EncryptToken(string innerJwt, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, System.Collections.Generic.IDictionary additionalHeaderClaims) => throw null; + public string EncryptToken(string innerJwt, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, string algorithm) => throw null; + public string EncryptToken(string innerJwt, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, string algorithm, System.Collections.Generic.IDictionary additionalHeaderClaims) => throw null; + public System.Collections.Generic.IDictionary InboundClaimTypeMap { get => throw null; set { } } + public bool MapInboundClaims { get => throw null; set { } } + public virtual Microsoft.IdentityModel.JsonWebTokens.JsonWebToken ReadJsonWebToken(string token) => throw null; + public override Microsoft.IdentityModel.Tokens.SecurityToken ReadToken(string token) => throw null; + protected virtual Microsoft.IdentityModel.Tokens.SecurityKey ResolveTokenDecryptionKey(string token, Microsoft.IdentityModel.JsonWebTokens.JsonWebToken jwtToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public static string ShortClaimTypeProperty { get => throw null; set { } } + public System.Type TokenType { get => throw null; } + public virtual Microsoft.IdentityModel.Tokens.TokenValidationResult ValidateToken(string token, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public override System.Threading.Tasks.Task ValidateTokenAsync(string token, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public override System.Threading.Tasks.Task ValidateTokenAsync(Microsoft.IdentityModel.Tokens.SecurityToken token, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + } + public static class JwtConstants + { + public const string DirectKeyUseAlg = default; + public const string HeaderType = default; + public const string HeaderTypeAlt = default; + public const string JsonCompactSerializationRegex = default; + public const string JweCompactSerializationRegex = default; + public const int JweSegmentCount = 5; + public const int JwsSegmentCount = 3; + public const int MaxJwtSegmentCount = 5; + public const string TokenType = default; + public const string TokenTypeAlt = default; + } + public struct JwtHeaderParameterNames + { + public const string Alg = default; + public const string Apu = default; + public const string Apv = default; + public const string Cty = default; + public const string Enc = default; + public const string Epk = default; + public const string IV = default; + public const string Jku = default; + public const string Jwk = default; + public const string Kid = default; + public const string Typ = default; + public const string X5c = default; + public const string X5t = default; + public const string X5u = default; + public const string Zip = default; + } + public struct JwtRegisteredClaimNames + { + public const string Acr = default; + public const string Actort = default; + public const string Amr = default; + public const string AtHash = default; + public const string Aud = default; + public const string AuthTime = default; + public const string Azp = default; + public const string Birthdate = default; + public const string CHash = default; + public const string Email = default; + public const string Exp = default; + public const string FamilyName = default; + public const string Gender = default; + public const string GivenName = default; + public const string Iat = default; + public const string Iss = default; + public const string Jti = default; + public const string Name = default; + public const string NameId = default; + public const string Nbf = default; + public const string Nonce = default; + public const string PhoneNumber = default; + public const string PhoneNumberVerified = default; + public const string Prn = default; + public const string Sid = default; + public const string Sub = default; + public const string Typ = default; + public const string UniqueName = default; + public const string Website = default; + } + public class JwtTokenUtilities + { + public static string CreateEncodedSignature(string input, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials) => throw null; + public static string CreateEncodedSignature(string input, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, bool cacheProvider) => throw null; + public JwtTokenUtilities() => throw null; + public static byte[] GenerateKeyBytes(int sizeInBits) => throw null; + public static System.Collections.Generic.IEnumerable GetAllDecryptionKeys(Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public static System.Text.RegularExpressions.Regex RegexJwe; + public static System.Text.RegularExpressions.Regex RegexJws; + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.JsonWebTokens/7.5.0/Microsoft.IdentityModel.JsonWebTokens.csproj b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.JsonWebTokens/7.5.0/Microsoft.IdentityModel.JsonWebTokens.csproj new file mode 100644 index 000000000000..3f7a9eeb43fa --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.JsonWebTokens/7.5.0/Microsoft.IdentityModel.JsonWebTokens.csproj @@ -0,0 +1,13 @@ + + + net9.0 + true + bin\ + false + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Logging/7.5.0/Microsoft.IdentityModel.Logging.cs b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Logging/7.5.0/Microsoft.IdentityModel.Logging.cs new file mode 100644 index 000000000000..0952b4a44244 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Logging/7.5.0/Microsoft.IdentityModel.Logging.cs @@ -0,0 +1,98 @@ +// This file contains auto-generated code. +// Generated from `Microsoft.IdentityModel.Logging, Version=7.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35`. +namespace Microsoft +{ + namespace IdentityModel + { + namespace Logging + { + public class IdentityModelEventSource : System.Diagnostics.Tracing.EventSource + { + public static bool HeaderWritten { get => throw null; set { } } + public static string HiddenPIIString { get => throw null; } + public static string HiddenSecurityArtifactString { get => throw null; } + public static bool LogCompleteSecurityArtifact { get => throw null; set { } } + public static Microsoft.IdentityModel.Logging.IdentityModelEventSource Logger { get => throw null; } + public System.Diagnostics.Tracing.EventLevel LogLevel { get => throw null; set { } } + public static bool ShowPII { get => throw null; set { } } + public void Write(System.Diagnostics.Tracing.EventLevel level, System.Exception innerException, string message) => throw null; + public void Write(System.Diagnostics.Tracing.EventLevel level, System.Exception innerException, string message, params object[] args) => throw null; + public void WriteAlways(string message) => throw null; + public void WriteAlways(string message, params object[] args) => throw null; + public void WriteCritical(string message) => throw null; + public void WriteCritical(string message, params object[] args) => throw null; + public void WriteError(string message) => throw null; + public void WriteError(string message, params object[] args) => throw null; + public void WriteInformation(string message) => throw null; + public void WriteInformation(string message, params object[] args) => throw null; + public void WriteVerbose(string message) => throw null; + public void WriteVerbose(string message, params object[] args) => throw null; + public void WriteWarning(string message) => throw null; + public void WriteWarning(string message, params object[] args) => throw null; + } + public static class IdentityModelTelemetryUtil + { + public static bool AddTelemetryData(string key, string value) => throw null; + public static string ClientSku { get => throw null; } + public static string ClientVer { get => throw null; } + public static bool RemoveTelemetryData(string key) => throw null; + } + public interface ISafeLogSecurityArtifact + { + string UnsafeToString(); + } + public class LoggerContext + { + public System.Guid ActivityId { get => throw null; set { } } + public bool CaptureLogs { get => throw null; set { } } + public LoggerContext() => throw null; + public LoggerContext(System.Guid activityId) => throw null; + public virtual string DebugId { get => throw null; set { } } + public System.Collections.Generic.ICollection Logs { get => throw null; } + public System.Collections.Generic.IDictionary PropertyBag { get => throw null; set { } } + } + public class LogHelper + { + public LogHelper() => throw null; + public static string FormatInvariant(string format, params object[] args) => throw null; + public static bool IsEnabled(Microsoft.IdentityModel.Abstractions.EventLogLevel level) => throw null; + public static T LogArgumentException(string argumentName, string message) where T : System.ArgumentException => throw null; + public static T LogArgumentException(string argumentName, string format, params object[] args) where T : System.ArgumentException => throw null; + public static T LogArgumentException(string argumentName, System.Exception innerException, string message) where T : System.ArgumentException => throw null; + public static T LogArgumentException(string argumentName, System.Exception innerException, string format, params object[] args) where T : System.ArgumentException => throw null; + public static T LogArgumentException(System.Diagnostics.Tracing.EventLevel eventLevel, string argumentName, string message) where T : System.ArgumentException => throw null; + public static T LogArgumentException(System.Diagnostics.Tracing.EventLevel eventLevel, string argumentName, string format, params object[] args) where T : System.ArgumentException => throw null; + public static T LogArgumentException(System.Diagnostics.Tracing.EventLevel eventLevel, string argumentName, System.Exception innerException, string message) where T : System.ArgumentException => throw null; + public static T LogArgumentException(System.Diagnostics.Tracing.EventLevel eventLevel, string argumentName, System.Exception innerException, string format, params object[] args) where T : System.ArgumentException => throw null; + public static System.ArgumentNullException LogArgumentNullException(string argument) => throw null; + public static T LogException(string message) where T : System.Exception => throw null; + public static T LogException(string format, params object[] args) where T : System.Exception => throw null; + public static T LogException(System.Exception innerException, string message) where T : System.Exception => throw null; + public static T LogException(System.Exception innerException, string format, params object[] args) where T : System.Exception => throw null; + public static T LogException(System.Diagnostics.Tracing.EventLevel eventLevel, string message) where T : System.Exception => throw null; + public static T LogException(System.Diagnostics.Tracing.EventLevel eventLevel, string format, params object[] args) where T : System.Exception => throw null; + public static T LogException(System.Diagnostics.Tracing.EventLevel eventLevel, System.Exception innerException, string message) where T : System.Exception => throw null; + public static T LogException(System.Diagnostics.Tracing.EventLevel eventLevel, System.Exception innerException, string format, params object[] args) where T : System.Exception => throw null; + public static System.Exception LogExceptionMessage(System.Exception exception) => throw null; + public static System.Exception LogExceptionMessage(System.Diagnostics.Tracing.EventLevel eventLevel, System.Exception exception) => throw null; + public static Microsoft.IdentityModel.Abstractions.IIdentityLogger Logger { get => throw null; set { } } + public static void LogInformation(string message, params object[] args) => throw null; + public static void LogVerbose(string message, params object[] args) => throw null; + public static void LogWarning(string message, params object[] args) => throw null; + public static object MarkAsNonPII(object arg) => throw null; + public static object MarkAsSecurityArtifact(object arg, System.Func callback) => throw null; + public static object MarkAsSecurityArtifact(object arg, System.Func callback, System.Func callbackUnsafe) => throw null; + public static object MarkAsUnsafeSecurityArtifact(object arg, System.Func callbackUnsafe) => throw null; + } + public class TextWriterEventListener : System.Diagnostics.Tracing.EventListener + { + public TextWriterEventListener() => throw null; + public TextWriterEventListener(string filePath) => throw null; + public TextWriterEventListener(System.IO.StreamWriter streamWriter) => throw null; + public static readonly string DefaultLogFileName; + public override void Dispose() => throw null; + protected override void OnEventWritten(System.Diagnostics.Tracing.EventWrittenEventArgs eventData) => throw null; + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Logging/7.5.0/Microsoft.IdentityModel.Logging.csproj b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Logging/7.5.0/Microsoft.IdentityModel.Logging.csproj new file mode 100644 index 000000000000..ccae125b498e --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Logging/7.5.0/Microsoft.IdentityModel.Logging.csproj @@ -0,0 +1,13 @@ + + + net9.0 + true + bin\ + false + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Protocols.OpenIdConnect/7.5.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.cs b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Protocols.OpenIdConnect/7.5.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.cs new file mode 100644 index 000000000000..9d945dc9033c --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Protocols.OpenIdConnect/7.5.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.cs @@ -0,0 +1,396 @@ +// This file contains auto-generated code. +// Generated from `Microsoft.IdentityModel.Protocols.OpenIdConnect, Version=7.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35`. +namespace Microsoft +{ + namespace IdentityModel + { + namespace Protocols + { + namespace OpenIdConnect + { + public static class ActiveDirectoryOpenIdConnectEndpoints + { + public const string Authorize = default; + public const string Logout = default; + public const string Token = default; + } + namespace Configuration + { + public class OpenIdConnectConfigurationValidator : Microsoft.IdentityModel.Protocols.IConfigurationValidator + { + public OpenIdConnectConfigurationValidator() => throw null; + public int MinimumNumberOfKeys { get => throw null; set { } } + public Microsoft.IdentityModel.Protocols.ConfigurationValidationResult Validate(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfiguration openIdConnectConfiguration) => throw null; + } + } + public delegate void IdTokenValidator(System.IdentityModel.Tokens.Jwt.JwtSecurityToken idToken, Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidationContext context); + public class OpenIdConnectConfiguration : Microsoft.IdentityModel.Tokens.BaseConfiguration + { + public System.Collections.Generic.ICollection AcrValuesSupported { get => throw null; } + public override string ActiveTokenEndpoint { get => throw null; set { } } + public System.Collections.Generic.IDictionary AdditionalData { get => throw null; } + public string AuthorizationEndpoint { get => throw null; set { } } + public string CheckSessionIframe { get => throw null; set { } } + public System.Collections.Generic.ICollection ClaimsLocalesSupported { get => throw null; } + public bool ClaimsParameterSupported { get => throw null; set { } } + public System.Collections.Generic.ICollection ClaimsSupported { get => throw null; } + public System.Collections.Generic.ICollection ClaimTypesSupported { get => throw null; } + public static Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfiguration Create(string json) => throw null; + public OpenIdConnectConfiguration() => throw null; + public OpenIdConnectConfiguration(string json) => throw null; + public System.Collections.Generic.ICollection DisplayValuesSupported { get => throw null; } + public string EndSessionEndpoint { get => throw null; set { } } + public string FrontchannelLogoutSessionSupported { get => throw null; set { } } + public string FrontchannelLogoutSupported { get => throw null; set { } } + public System.Collections.Generic.ICollection GrantTypesSupported { get => throw null; } + public bool HttpLogoutSupported { get => throw null; set { } } + public System.Collections.Generic.ICollection IdTokenEncryptionAlgValuesSupported { get => throw null; } + public System.Collections.Generic.ICollection IdTokenEncryptionEncValuesSupported { get => throw null; } + public System.Collections.Generic.ICollection IdTokenSigningAlgValuesSupported { get => throw null; } + public string IntrospectionEndpoint { get => throw null; set { } } + public System.Collections.Generic.ICollection IntrospectionEndpointAuthMethodsSupported { get => throw null; } + public System.Collections.Generic.ICollection IntrospectionEndpointAuthSigningAlgValuesSupported { get => throw null; } + public override string Issuer { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.JsonWebKeySet JsonWebKeySet { get => throw null; set { } } + public string JwksUri { get => throw null; set { } } + public bool LogoutSessionSupported { get => throw null; set { } } + public string OpPolicyUri { get => throw null; set { } } + public string OpTosUri { get => throw null; set { } } + public string RegistrationEndpoint { get => throw null; set { } } + public System.Collections.Generic.ICollection RequestObjectEncryptionAlgValuesSupported { get => throw null; } + public System.Collections.Generic.ICollection RequestObjectEncryptionEncValuesSupported { get => throw null; } + public System.Collections.Generic.ICollection RequestObjectSigningAlgValuesSupported { get => throw null; } + public bool RequestParameterSupported { get => throw null; set { } } + public bool RequestUriParameterSupported { get => throw null; set { } } + public bool RequireRequestUriRegistration { get => throw null; set { } } + public System.Collections.Generic.ICollection ResponseModesSupported { get => throw null; } + public System.Collections.Generic.ICollection ResponseTypesSupported { get => throw null; } + public System.Collections.Generic.ICollection ScopesSupported { get => throw null; } + public string ServiceDocumentation { get => throw null; set { } } + public bool ShouldSerializeAcrValuesSupported() => throw null; + public bool ShouldSerializeClaimsLocalesSupported() => throw null; + public bool ShouldSerializeClaimsSupported() => throw null; + public bool ShouldSerializeClaimTypesSupported() => throw null; + public bool ShouldSerializeDisplayValuesSupported() => throw null; + public bool ShouldSerializeGrantTypesSupported() => throw null; + public bool ShouldSerializeIdTokenEncryptionAlgValuesSupported() => throw null; + public bool ShouldSerializeIdTokenEncryptionEncValuesSupported() => throw null; + public bool ShouldSerializeIdTokenSigningAlgValuesSupported() => throw null; + public bool ShouldSerializeIntrospectionEndpointAuthMethodsSupported() => throw null; + public bool ShouldSerializeIntrospectionEndpointAuthSigningAlgValuesSupported() => throw null; + public bool ShouldSerializeRequestObjectEncryptionAlgValuesSupported() => throw null; + public bool ShouldSerializeRequestObjectEncryptionEncValuesSupported() => throw null; + public bool ShouldSerializeRequestObjectSigningAlgValuesSupported() => throw null; + public bool ShouldSerializeResponseModesSupported() => throw null; + public bool ShouldSerializeResponseTypesSupported() => throw null; + public bool ShouldSerializeScopesSupported() => throw null; + public bool ShouldSerializeSigningKeys() => throw null; + public bool ShouldSerializeSubjectTypesSupported() => throw null; + public bool ShouldSerializeTokenEndpointAuthMethodsSupported() => throw null; + public bool ShouldSerializeTokenEndpointAuthSigningAlgValuesSupported() => throw null; + public bool ShouldSerializeUILocalesSupported() => throw null; + public bool ShouldSerializeUserInfoEndpointEncryptionAlgValuesSupported() => throw null; + public bool ShouldSerializeUserInfoEndpointEncryptionEncValuesSupported() => throw null; + public bool ShouldSerializeUserInfoEndpointSigningAlgValuesSupported() => throw null; + public override System.Collections.Generic.ICollection SigningKeys { get => throw null; } + public System.Collections.Generic.ICollection SubjectTypesSupported { get => throw null; } + public override string TokenEndpoint { get => throw null; set { } } + public System.Collections.Generic.ICollection TokenEndpointAuthMethodsSupported { get => throw null; } + public System.Collections.Generic.ICollection TokenEndpointAuthSigningAlgValuesSupported { get => throw null; } + public System.Collections.Generic.ICollection UILocalesSupported { get => throw null; } + public string UserInfoEndpoint { get => throw null; set { } } + public System.Collections.Generic.ICollection UserInfoEndpointEncryptionAlgValuesSupported { get => throw null; } + public System.Collections.Generic.ICollection UserInfoEndpointEncryptionEncValuesSupported { get => throw null; } + public System.Collections.Generic.ICollection UserInfoEndpointSigningAlgValuesSupported { get => throw null; } + public static string Write(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfiguration configuration) => throw null; + } + public class OpenIdConnectConfigurationRetriever : Microsoft.IdentityModel.Protocols.IConfigurationRetriever + { + public OpenIdConnectConfigurationRetriever() => throw null; + public static System.Threading.Tasks.Task GetAsync(string address, System.Threading.CancellationToken cancel) => throw null; + public static System.Threading.Tasks.Task GetAsync(string address, System.Net.Http.HttpClient httpClient, System.Threading.CancellationToken cancel) => throw null; + public static System.Threading.Tasks.Task GetAsync(string address, Microsoft.IdentityModel.Protocols.IDocumentRetriever retriever, System.Threading.CancellationToken cancel) => throw null; + System.Threading.Tasks.Task Microsoft.IdentityModel.Protocols.IConfigurationRetriever.GetConfigurationAsync(string address, Microsoft.IdentityModel.Protocols.IDocumentRetriever retriever, System.Threading.CancellationToken cancel) => throw null; + } + public static class OpenIdConnectGrantTypes + { + public const string AuthorizationCode = default; + public const string ClientCredentials = default; + public const string Password = default; + public const string RefreshToken = default; + } + public class OpenIdConnectMessage : Microsoft.IdentityModel.Protocols.AuthenticationProtocolMessage + { + public string AccessToken { get => throw null; set { } } + public string AcrValues { get => throw null; set { } } + public string AuthorizationEndpoint { get => throw null; set { } } + public string ClaimsLocales { get => throw null; set { } } + public string ClientAssertion { get => throw null; set { } } + public string ClientAssertionType { get => throw null; set { } } + public string ClientId { get => throw null; set { } } + public string ClientSecret { get => throw null; set { } } + public virtual Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage Clone() => throw null; + public string Code { get => throw null; set { } } + public virtual string CreateAuthenticationRequestUrl() => throw null; + public virtual string CreateLogoutRequestUrl() => throw null; + public OpenIdConnectMessage() => throw null; + public OpenIdConnectMessage(string json) => throw null; + protected OpenIdConnectMessage(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage other) => throw null; + public OpenIdConnectMessage(System.Collections.Specialized.NameValueCollection nameValueCollection) => throw null; + public OpenIdConnectMessage(System.Collections.Generic.IEnumerable> parameters) => throw null; + public string Display { get => throw null; set { } } + public string DomainHint { get => throw null; set { } } + public bool EnableTelemetryParameters { get => throw null; set { } } + public static bool EnableTelemetryParametersByDefault { get => throw null; set { } } + public string Error { get => throw null; set { } } + public string ErrorDescription { get => throw null; set { } } + public string ErrorUri { get => throw null; set { } } + public string ExpiresIn { get => throw null; set { } } + public string GrantType { get => throw null; set { } } + public string IdentityProvider { get => throw null; set { } } + public string IdToken { get => throw null; set { } } + public string IdTokenHint { get => throw null; set { } } + public string Iss { get => throw null; set { } } + public string LoginHint { get => throw null; set { } } + public string MaxAge { get => throw null; set { } } + public string Nonce { get => throw null; set { } } + public string Password { get => throw null; set { } } + public string PostLogoutRedirectUri { get => throw null; set { } } + public string Prompt { get => throw null; set { } } + public string RedirectUri { get => throw null; set { } } + public string RefreshToken { get => throw null; set { } } + public Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectRequestType RequestType { get => throw null; set { } } + public string RequestUri { get => throw null; set { } } + public string Resource { get => throw null; set { } } + public string ResponseMode { get => throw null; set { } } + public string ResponseType { get => throw null; set { } } + public string Scope { get => throw null; set { } } + public string SessionState { get => throw null; set { } } + public string Sid { get => throw null; set { } } + public string SkuTelemetryValue { get => throw null; set { } } + public string State { get => throw null; set { } } + public string TargetLinkUri { get => throw null; set { } } + public string TokenEndpoint { get => throw null; set { } } + public string TokenType { get => throw null; set { } } + public string UiLocales { get => throw null; set { } } + public string UserId { get => throw null; set { } } + public string Username { get => throw null; set { } } + } + public static class OpenIdConnectParameterNames + { + public const string AccessToken = default; + public const string AcrValues = default; + public const string ClaimsLocales = default; + public const string ClientAssertion = default; + public const string ClientAssertionType = default; + public const string ClientId = default; + public const string ClientSecret = default; + public const string Code = default; + public const string Display = default; + public const string DomainHint = default; + public const string Error = default; + public const string ErrorDescription = default; + public const string ErrorUri = default; + public const string ExpiresIn = default; + public const string GrantType = default; + public const string IdentityProvider = default; + public const string IdToken = default; + public const string IdTokenHint = default; + public const string Iss = default; + public const string LoginHint = default; + public const string MaxAge = default; + public const string Nonce = default; + public const string Password = default; + public const string PostLogoutRedirectUri = default; + public const string Prompt = default; + public const string RedirectUri = default; + public const string RefreshToken = default; + public const string RequestUri = default; + public const string Resource = default; + public const string ResponseMode = default; + public const string ResponseType = default; + public const string Scope = default; + public const string SessionState = default; + public const string Sid = default; + public const string SkuTelemetry = default; + public const string State = default; + public const string TargetLinkUri = default; + public const string TokenType = default; + public const string UiLocales = default; + public const string UserId = default; + public const string Username = default; + public const string VersionTelemetry = default; + } + public static class OpenIdConnectPrompt + { + public const string Consent = default; + public const string Login = default; + public const string None = default; + public const string SelectAccount = default; + } + public class OpenIdConnectProtocolException : System.Exception + { + public OpenIdConnectProtocolException() => throw null; + public OpenIdConnectProtocolException(string message) => throw null; + public OpenIdConnectProtocolException(string message, System.Exception innerException) => throw null; + protected OpenIdConnectProtocolException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class OpenIdConnectProtocolInvalidAtHashException : Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolException + { + public OpenIdConnectProtocolInvalidAtHashException() => throw null; + public OpenIdConnectProtocolInvalidAtHashException(string message) => throw null; + public OpenIdConnectProtocolInvalidAtHashException(string message, System.Exception innerException) => throw null; + protected OpenIdConnectProtocolInvalidAtHashException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class OpenIdConnectProtocolInvalidCHashException : Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolException + { + public OpenIdConnectProtocolInvalidCHashException() => throw null; + public OpenIdConnectProtocolInvalidCHashException(string message) => throw null; + public OpenIdConnectProtocolInvalidCHashException(string message, System.Exception innerException) => throw null; + protected OpenIdConnectProtocolInvalidCHashException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class OpenIdConnectProtocolInvalidNonceException : Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolException + { + public OpenIdConnectProtocolInvalidNonceException() => throw null; + public OpenIdConnectProtocolInvalidNonceException(string message) => throw null; + public OpenIdConnectProtocolInvalidNonceException(string message, System.Exception innerException) => throw null; + protected OpenIdConnectProtocolInvalidNonceException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class OpenIdConnectProtocolInvalidStateException : Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolException + { + public OpenIdConnectProtocolInvalidStateException() => throw null; + public OpenIdConnectProtocolInvalidStateException(string message) => throw null; + public OpenIdConnectProtocolInvalidStateException(string message, System.Exception innerException) => throw null; + protected OpenIdConnectProtocolInvalidStateException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class OpenIdConnectProtocolValidationContext + { + public string ClientId { get => throw null; set { } } + public OpenIdConnectProtocolValidationContext() => throw null; + public string Nonce { get => throw null; set { } } + public Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage ProtocolMessage { get => throw null; set { } } + public string State { get => throw null; set { } } + public string UserInfoEndpointResponse { get => throw null; set { } } + public System.IdentityModel.Tokens.Jwt.JwtSecurityToken ValidatedIdToken { get => throw null; set { } } + } + public class OpenIdConnectProtocolValidator + { + public Microsoft.IdentityModel.Tokens.CryptoProviderFactory CryptoProviderFactory { get => throw null; set { } } + public OpenIdConnectProtocolValidator() => throw null; + public static readonly System.TimeSpan DefaultNonceLifetime; + public virtual string GenerateNonce() => throw null; + public virtual System.Security.Cryptography.HashAlgorithm GetHashAlgorithm(string algorithm) => throw null; + public System.Collections.Generic.IDictionary HashAlgorithmMap { get => throw null; } + public Microsoft.IdentityModel.Protocols.OpenIdConnect.IdTokenValidator IdTokenValidator { get => throw null; set { } } + public System.TimeSpan NonceLifetime { get => throw null; set { } } + public bool RequireAcr { get => throw null; set { } } + public bool RequireAmr { get => throw null; set { } } + public bool RequireAuthTime { get => throw null; set { } } + public bool RequireAzp { get => throw null; set { } } + public bool RequireNonce { get => throw null; set { } } + public bool RequireState { get => throw null; set { } } + public bool RequireStateValidation { get => throw null; set { } } + public bool RequireSub { get => throw null; set { } } + public static bool RequireSubByDefault { get => throw null; set { } } + public bool RequireTimeStampInNonce { get => throw null; set { } } + protected virtual void ValidateAtHash(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidationContext validationContext) => throw null; + public virtual void ValidateAuthenticationResponse(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidationContext validationContext) => throw null; + protected virtual void ValidateCHash(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidationContext validationContext) => throw null; + protected virtual void ValidateIdToken(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidationContext validationContext) => throw null; + protected virtual void ValidateNonce(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidationContext validationContext) => throw null; + protected virtual void ValidateState(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidationContext validationContext) => throw null; + public virtual void ValidateTokenResponse(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidationContext validationContext) => throw null; + public virtual void ValidateUserInfoResponse(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidationContext validationContext) => throw null; + } + public enum OpenIdConnectRequestType + { + Authentication = 0, + Logout = 1, + Token = 2, + } + public static class OpenIdConnectResponseMode + { + public const string FormPost = default; + public const string Fragment = default; + public const string Query = default; + } + public static class OpenIdConnectResponseType + { + public const string Code = default; + public const string CodeIdToken = default; + public const string CodeIdTokenToken = default; + public const string CodeToken = default; + public const string IdToken = default; + public const string IdTokenToken = default; + public const string None = default; + public const string Token = default; + } + public static class OpenIdConnectScope + { + public const string Address = default; + public const string Email = default; + public const string OfflineAccess = default; + public const string OpenId = default; + public const string OpenIdProfile = default; + public const string Phone = default; + public const string UserImpersonation = default; + } + public static class OpenIdConnectSessionProperties + { + public const string CheckSessionIFrame = default; + public const string RedirectUri = default; + public const string SessionState = default; + } + public static class OpenIdProviderMetadataNames + { + public const string AcrValuesSupported = default; + public const string AuthorizationEndpoint = default; + public const string CheckSessionIframe = default; + public const string ClaimsLocalesSupported = default; + public const string ClaimsParameterSupported = default; + public const string ClaimsSupported = default; + public const string ClaimTypesSupported = default; + public const string Discovery = default; + public const string DisplayValuesSupported = default; + public const string EndSessionEndpoint = default; + public const string FrontchannelLogoutSessionSupported = default; + public const string FrontchannelLogoutSupported = default; + public const string GrantTypesSupported = default; + public const string HttpLogoutSupported = default; + public const string IdTokenEncryptionAlgValuesSupported = default; + public const string IdTokenEncryptionEncValuesSupported = default; + public const string IdTokenSigningAlgValuesSupported = default; + public const string IntrospectionEndpoint = default; + public const string IntrospectionEndpointAuthMethodsSupported = default; + public const string IntrospectionEndpointAuthSigningAlgValuesSupported = default; + public const string Issuer = default; + public const string JwksUri = default; + public const string LogoutSessionSupported = default; + public const string MicrosoftMultiRefreshToken = default; + public const string OpPolicyUri = default; + public const string OpTosUri = default; + public const string RegistrationEndpoint = default; + public const string RequestObjectEncryptionAlgValuesSupported = default; + public const string RequestObjectEncryptionEncValuesSupported = default; + public const string RequestObjectSigningAlgValuesSupported = default; + public const string RequestParameterSupported = default; + public const string RequestUriParameterSupported = default; + public const string RequireRequestUriRegistration = default; + public const string ResponseModesSupported = default; + public const string ResponseTypesSupported = default; + public const string ScopesSupported = default; + public const string ServiceDocumentation = default; + public const string SubjectTypesSupported = default; + public const string TokenEndpoint = default; + public const string TokenEndpointAuthMethodsSupported = default; + public const string TokenEndpointAuthSigningAlgValuesSupported = default; + public const string UILocalesSupported = default; + public const string UserInfoEncryptionAlgValuesSupported = default; + public const string UserInfoEncryptionEncValuesSupported = default; + public const string UserInfoEndpoint = default; + public const string UserInfoSigningAlgValuesSupported = default; + } + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Protocols.OpenIdConnect/7.5.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.csproj b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Protocols.OpenIdConnect/7.5.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.csproj new file mode 100644 index 000000000000..4fcb6a92ab72 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Protocols.OpenIdConnect/7.5.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.csproj @@ -0,0 +1,14 @@ + + + net9.0 + true + bin\ + false + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Protocols/7.5.0/Microsoft.IdentityModel.Protocols.cs b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Protocols/7.5.0/Microsoft.IdentityModel.Protocols.cs new file mode 100644 index 000000000000..d7d2fc40cd0f --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Protocols/7.5.0/Microsoft.IdentityModel.Protocols.cs @@ -0,0 +1,120 @@ +// This file contains auto-generated code. +// Generated from `Microsoft.IdentityModel.Protocols, Version=7.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35`. +namespace Microsoft +{ + namespace IdentityModel + { + namespace Protocols + { + public abstract class AuthenticationProtocolMessage + { + public virtual string BuildFormPost() => throw null; + public virtual string BuildRedirectUrl() => throw null; + protected AuthenticationProtocolMessage() => throw null; + public virtual string GetParameter(string parameter) => throw null; + public string IssuerAddress { get => throw null; set { } } + public System.Collections.Generic.IDictionary Parameters { get => throw null; } + public string PostTitle { get => throw null; set { } } + public virtual void RemoveParameter(string parameter) => throw null; + public string Script { get => throw null; set { } } + public string ScriptButtonText { get => throw null; set { } } + public string ScriptDisabledText { get => throw null; set { } } + public void SetParameter(string parameter, string value) => throw null; + public virtual void SetParameters(System.Collections.Specialized.NameValueCollection nameValueCollection) => throw null; + } + namespace Configuration + { + public class InvalidConfigurationException : System.Exception + { + public InvalidConfigurationException() => throw null; + public InvalidConfigurationException(string message) => throw null; + public InvalidConfigurationException(string message, System.Exception innerException) => throw null; + protected InvalidConfigurationException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class LastKnownGoodConfigurationCacheOptions : Microsoft.IdentityModel.Tokens.Configuration.LKGConfigurationCacheOptions + { + public LastKnownGoodConfigurationCacheOptions() => throw null; + public static readonly int DefaultLastKnownGoodConfigurationSizeLimit; + } + } + public class ConfigurationManager : Microsoft.IdentityModel.Tokens.BaseConfigurationManager, Microsoft.IdentityModel.Protocols.IConfigurationManager where T : class + { + public ConfigurationManager(string metadataAddress, Microsoft.IdentityModel.Protocols.IConfigurationRetriever configRetriever) => throw null; + public ConfigurationManager(string metadataAddress, Microsoft.IdentityModel.Protocols.IConfigurationRetriever configRetriever, System.Net.Http.HttpClient httpClient) => throw null; + public ConfigurationManager(string metadataAddress, Microsoft.IdentityModel.Protocols.IConfigurationRetriever configRetriever, Microsoft.IdentityModel.Protocols.IDocumentRetriever docRetriever) => throw null; + public ConfigurationManager(string metadataAddress, Microsoft.IdentityModel.Protocols.IConfigurationRetriever configRetriever, Microsoft.IdentityModel.Protocols.IDocumentRetriever docRetriever, Microsoft.IdentityModel.Protocols.Configuration.LastKnownGoodConfigurationCacheOptions lkgCacheOptions) => throw null; + public ConfigurationManager(string metadataAddress, Microsoft.IdentityModel.Protocols.IConfigurationRetriever configRetriever, Microsoft.IdentityModel.Protocols.IDocumentRetriever docRetriever, Microsoft.IdentityModel.Protocols.IConfigurationValidator configValidator) => throw null; + public ConfigurationManager(string metadataAddress, Microsoft.IdentityModel.Protocols.IConfigurationRetriever configRetriever, Microsoft.IdentityModel.Protocols.IDocumentRetriever docRetriever, Microsoft.IdentityModel.Protocols.IConfigurationValidator configValidator, Microsoft.IdentityModel.Protocols.Configuration.LastKnownGoodConfigurationCacheOptions lkgCacheOptions) => throw null; + public static readonly System.TimeSpan DefaultAutomaticRefreshInterval; + public static readonly System.TimeSpan DefaultRefreshInterval; + public override System.Threading.Tasks.Task GetBaseConfigurationAsync(System.Threading.CancellationToken cancel) => throw null; + public System.Threading.Tasks.Task GetConfigurationAsync() => throw null; + public System.Threading.Tasks.Task GetConfigurationAsync(System.Threading.CancellationToken cancel) => throw null; + public static readonly System.TimeSpan MinimumAutomaticRefreshInterval; + public static readonly System.TimeSpan MinimumRefreshInterval; + public override void RequestRefresh() => throw null; + } + public class ConfigurationValidationResult + { + public ConfigurationValidationResult() => throw null; + public string ErrorMessage { get => throw null; set { } } + public bool Succeeded { get => throw null; set { } } + } + public class FileDocumentRetriever : Microsoft.IdentityModel.Protocols.IDocumentRetriever + { + public FileDocumentRetriever() => throw null; + public System.Threading.Tasks.Task GetDocumentAsync(string address, System.Threading.CancellationToken cancel) => throw null; + } + public class HttpDocumentRetriever : Microsoft.IdentityModel.Protocols.IDocumentRetriever + { + public HttpDocumentRetriever() => throw null; + public HttpDocumentRetriever(System.Net.Http.HttpClient httpClient) => throw null; + public static bool DefaultSendAdditionalHeaderData { get => throw null; set { } } + public System.Threading.Tasks.Task GetDocumentAsync(string address, System.Threading.CancellationToken cancel) => throw null; + public bool RequireHttps { get => throw null; set { } } + public const string ResponseContent = default; + public bool SendAdditionalHeaderData { get => throw null; set { } } + public const string StatusCode = default; + } + public class HttpRequestData + { + public void AppendHeaders(System.Net.Http.Headers.HttpHeaders headers) => throw null; + public byte[] Body { get => throw null; set { } } + public System.Security.Cryptography.X509Certificates.X509Certificate2Collection ClientCertificates { get => throw null; } + public HttpRequestData() => throw null; + public System.Collections.Generic.IDictionary> Headers { get => throw null; set { } } + public string Method { get => throw null; set { } } + public System.Collections.Generic.IDictionary PropertyBag { get => throw null; set { } } + public System.Uri Uri { get => throw null; set { } } + } + public interface IConfigurationManager where T : class + { + System.Threading.Tasks.Task GetConfigurationAsync(System.Threading.CancellationToken cancel); + void RequestRefresh(); + } + public interface IConfigurationRetriever + { + System.Threading.Tasks.Task GetConfigurationAsync(string address, Microsoft.IdentityModel.Protocols.IDocumentRetriever retriever, System.Threading.CancellationToken cancel); + } + public interface IConfigurationValidator + { + Microsoft.IdentityModel.Protocols.ConfigurationValidationResult Validate(T configuration); + } + public interface IDocumentRetriever + { + System.Threading.Tasks.Task GetDocumentAsync(string address, System.Threading.CancellationToken cancel); + } + public class StaticConfigurationManager : Microsoft.IdentityModel.Tokens.BaseConfigurationManager, Microsoft.IdentityModel.Protocols.IConfigurationManager where T : class + { + public StaticConfigurationManager(T configuration) => throw null; + public override System.Threading.Tasks.Task GetBaseConfigurationAsync(System.Threading.CancellationToken cancel) => throw null; + public System.Threading.Tasks.Task GetConfigurationAsync(System.Threading.CancellationToken cancel) => throw null; + public override void RequestRefresh() => throw null; + } + public class X509CertificateValidationMode + { + public X509CertificateValidationMode() => throw null; + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Protocols/7.5.0/Microsoft.IdentityModel.Protocols.csproj b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Protocols/7.5.0/Microsoft.IdentityModel.Protocols.csproj new file mode 100644 index 000000000000..3f7a9eeb43fa --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Protocols/7.5.0/Microsoft.IdentityModel.Protocols.csproj @@ -0,0 +1,13 @@ + + + net9.0 + true + bin\ + false + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Tokens/7.5.0/Microsoft.IdentityModel.Tokens.cs b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Tokens/7.5.0/Microsoft.IdentityModel.Tokens.cs new file mode 100644 index 000000000000..8cc98b2580c1 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Tokens/7.5.0/Microsoft.IdentityModel.Tokens.cs @@ -0,0 +1,959 @@ +// This file contains auto-generated code. +// Generated from `Microsoft.IdentityModel.Tokens, Version=7.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35`. +namespace Microsoft +{ + namespace IdentityModel + { + namespace Tokens + { + public delegate bool AlgorithmValidator(string algorithm, Microsoft.IdentityModel.Tokens.SecurityKey securityKey, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters); + public abstract class AsymmetricSecurityKey : Microsoft.IdentityModel.Tokens.SecurityKey + { + public AsymmetricSecurityKey() => throw null; + public abstract bool HasPrivateKey { get; } + public abstract Microsoft.IdentityModel.Tokens.PrivateKeyStatus PrivateKeyStatus { get; } + } + public class AsymmetricSignatureProvider : Microsoft.IdentityModel.Tokens.SignatureProvider + { + public AsymmetricSignatureProvider(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) : base(default(Microsoft.IdentityModel.Tokens.SecurityKey), default(string)) => throw null; + public AsymmetricSignatureProvider(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm, bool willCreateSignatures) : base(default(Microsoft.IdentityModel.Tokens.SecurityKey), default(string)) => throw null; + public static readonly System.Collections.Generic.Dictionary DefaultMinimumAsymmetricKeySizeInBitsForSigningMap; + public static readonly System.Collections.Generic.Dictionary DefaultMinimumAsymmetricKeySizeInBitsForVerifyingMap; + protected override void Dispose(bool disposing) => throw null; + protected virtual System.Security.Cryptography.HashAlgorithmName GetHashAlgorithmName(string algorithm) => throw null; + public System.Collections.Generic.IReadOnlyDictionary MinimumAsymmetricKeySizeInBitsForSigningMap { get => throw null; } + public System.Collections.Generic.IReadOnlyDictionary MinimumAsymmetricKeySizeInBitsForVerifyingMap { get => throw null; } + public override bool Sign(System.ReadOnlySpan input, System.Span signature, out int bytesWritten) => throw null; + public override byte[] Sign(byte[] input) => throw null; + public override byte[] Sign(byte[] input, int offset, int count) => throw null; + public virtual void ValidateAsymmetricSecurityKeySize(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm, bool willCreateSignatures) => throw null; + public override bool Verify(byte[] input, byte[] signature) => throw null; + public override bool Verify(byte[] input, int inputOffset, int inputLength, byte[] signature, int signatureOffset, int signatureLength) => throw null; + } + public delegate bool AudienceValidator(System.Collections.Generic.IEnumerable audiences, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters); + public class AuthenticatedEncryptionProvider : System.IDisposable + { + public string Algorithm { get => throw null; } + public string Context { get => throw null; set { } } + public AuthenticatedEncryptionProvider(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + public virtual byte[] Decrypt(byte[] ciphertext, byte[] authenticatedData, byte[] iv, byte[] authenticationTag) => throw null; + public void Dispose() => throw null; + protected virtual void Dispose(bool disposing) => throw null; + public virtual Microsoft.IdentityModel.Tokens.AuthenticatedEncryptionResult Encrypt(byte[] plaintext, byte[] authenticatedData) => throw null; + public virtual Microsoft.IdentityModel.Tokens.AuthenticatedEncryptionResult Encrypt(byte[] plaintext, byte[] authenticatedData, byte[] iv) => throw null; + protected virtual byte[] GetKeyBytes(Microsoft.IdentityModel.Tokens.SecurityKey key) => throw null; + protected virtual bool IsSupportedAlgorithm(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + public Microsoft.IdentityModel.Tokens.SecurityKey Key { get => throw null; } + protected virtual void ValidateKeySize(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + } + public class AuthenticatedEncryptionResult + { + public byte[] AuthenticationTag { get => throw null; } + public byte[] Ciphertext { get => throw null; } + public AuthenticatedEncryptionResult(Microsoft.IdentityModel.Tokens.SecurityKey key, byte[] ciphertext, byte[] iv, byte[] authenticationTag) => throw null; + public byte[] IV { get => throw null; } + public Microsoft.IdentityModel.Tokens.SecurityKey Key { get => throw null; } + } + public static class Base64UrlEncoder + { + public static string Decode(string arg) => throw null; + public static byte[] DecodeBytes(string str) => throw null; + public static string Encode(string arg) => throw null; + public static string Encode(byte[] inArray) => throw null; + public static string Encode(byte[] inArray, int offset, int length) => throw null; + public static int Encode(System.ReadOnlySpan inArray, System.Span output) => throw null; + } + public abstract class BaseConfiguration + { + public virtual string ActiveTokenEndpoint { get => throw null; set { } } + protected BaseConfiguration() => throw null; + public virtual string Issuer { get => throw null; set { } } + public virtual System.Collections.Generic.ICollection SigningKeys { get => throw null; } + public virtual System.Collections.Generic.ICollection TokenDecryptionKeys { get => throw null; } + public virtual string TokenEndpoint { get => throw null; set { } } + } + public abstract class BaseConfigurationManager + { + public System.TimeSpan AutomaticRefreshInterval { get => throw null; set { } } + public BaseConfigurationManager() => throw null; + public BaseConfigurationManager(Microsoft.IdentityModel.Tokens.Configuration.LKGConfigurationCacheOptions options) => throw null; + public static readonly System.TimeSpan DefaultAutomaticRefreshInterval; + public static readonly System.TimeSpan DefaultLastKnownGoodConfigurationLifetime; + public static readonly System.TimeSpan DefaultRefreshInterval; + public virtual System.Threading.Tasks.Task GetBaseConfigurationAsync(System.Threading.CancellationToken cancel) => throw null; + public bool IsLastKnownGoodValid { get => throw null; } + public Microsoft.IdentityModel.Tokens.BaseConfiguration LastKnownGoodConfiguration { get => throw null; set { } } + public System.TimeSpan LastKnownGoodLifetime { get => throw null; set { } } + public string MetadataAddress { get => throw null; set { } } + public static readonly System.TimeSpan MinimumAutomaticRefreshInterval; + public static readonly System.TimeSpan MinimumRefreshInterval; + public System.TimeSpan RefreshInterval { get => throw null; set { } } + public abstract void RequestRefresh(); + public bool UseLastKnownGoodConfiguration { get => throw null; set { } } + } + public class CallContext : Microsoft.IdentityModel.Logging.LoggerContext + { + public CallContext() => throw null; + public CallContext(System.Guid activityId) => throw null; + } + public static class CollectionUtilities + { + public static bool IsNullOrEmpty(this System.Collections.Generic.IEnumerable enumerable) => throw null; + } + public class CompressionAlgorithms + { + public CompressionAlgorithms() => throw null; + public const string Deflate = default; + } + public class CompressionProviderFactory + { + public Microsoft.IdentityModel.Tokens.ICompressionProvider CreateCompressionProvider(string algorithm) => throw null; + public Microsoft.IdentityModel.Tokens.ICompressionProvider CreateCompressionProvider(string algorithm, int maximumDeflateSize) => throw null; + public CompressionProviderFactory() => throw null; + public CompressionProviderFactory(Microsoft.IdentityModel.Tokens.CompressionProviderFactory other) => throw null; + public Microsoft.IdentityModel.Tokens.ICompressionProvider CustomCompressionProvider { get => throw null; set { } } + public static Microsoft.IdentityModel.Tokens.CompressionProviderFactory Default { get => throw null; set { } } + public virtual bool IsSupportedAlgorithm(string algorithm) => throw null; + } + namespace Configuration + { + public class LKGConfigurationCacheOptions + { + public System.Collections.Generic.IEqualityComparer BaseConfigurationComparer { get => throw null; set { } } + public LKGConfigurationCacheOptions() => throw null; + public static readonly int DefaultLKGConfigurationSizeLimit; + public int LastKnownGoodConfigurationSizeLimit { get => throw null; set { } } + public bool RemoveExpiredValues { get => throw null; set { } } + public System.Threading.Tasks.TaskCreationOptions TaskCreationOptions { get => throw null; set { } } + } + } + public abstract class CryptoProviderCache + { + protected CryptoProviderCache() => throw null; + protected abstract string GetCacheKey(Microsoft.IdentityModel.Tokens.SignatureProvider signatureProvider); + protected abstract string GetCacheKey(Microsoft.IdentityModel.Tokens.SecurityKey securityKey, string algorithm, string typeofProvider); + public abstract bool TryAdd(Microsoft.IdentityModel.Tokens.SignatureProvider signatureProvider); + public abstract bool TryGetSignatureProvider(Microsoft.IdentityModel.Tokens.SecurityKey securityKey, string algorithm, string typeofProvider, bool willCreateSignatures, out Microsoft.IdentityModel.Tokens.SignatureProvider signatureProvider); + public abstract bool TryRemove(Microsoft.IdentityModel.Tokens.SignatureProvider signatureProvider); + } + public class CryptoProviderCacheOptions + { + public CryptoProviderCacheOptions() => throw null; + public static readonly int DefaultSizeLimit; + public int SizeLimit { get => throw null; set { } } + } + public class CryptoProviderFactory + { + public bool CacheSignatureProviders { get => throw null; set { } } + public virtual Microsoft.IdentityModel.Tokens.AuthenticatedEncryptionProvider CreateAuthenticatedEncryptionProvider(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + public virtual Microsoft.IdentityModel.Tokens.SignatureProvider CreateForSigning(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + public virtual Microsoft.IdentityModel.Tokens.SignatureProvider CreateForSigning(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm, bool cacheProvider) => throw null; + public virtual Microsoft.IdentityModel.Tokens.SignatureProvider CreateForVerifying(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + public virtual Microsoft.IdentityModel.Tokens.SignatureProvider CreateForVerifying(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm, bool cacheProvider) => throw null; + public virtual System.Security.Cryptography.HashAlgorithm CreateHashAlgorithm(System.Security.Cryptography.HashAlgorithmName algorithm) => throw null; + public virtual System.Security.Cryptography.HashAlgorithm CreateHashAlgorithm(string algorithm) => throw null; + public virtual System.Security.Cryptography.KeyedHashAlgorithm CreateKeyedHashAlgorithm(byte[] keyBytes, string algorithm) => throw null; + public virtual Microsoft.IdentityModel.Tokens.KeyWrapProvider CreateKeyWrapProvider(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + public virtual Microsoft.IdentityModel.Tokens.KeyWrapProvider CreateKeyWrapProviderForUnwrap(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + public Microsoft.IdentityModel.Tokens.CryptoProviderCache CryptoProviderCache { get => throw null; } + public CryptoProviderFactory() => throw null; + public CryptoProviderFactory(Microsoft.IdentityModel.Tokens.CryptoProviderCache cache) => throw null; + public CryptoProviderFactory(Microsoft.IdentityModel.Tokens.CryptoProviderFactory other) => throw null; + public Microsoft.IdentityModel.Tokens.ICryptoProvider CustomCryptoProvider { get => throw null; set { } } + public static Microsoft.IdentityModel.Tokens.CryptoProviderFactory Default { get => throw null; set { } } + public static bool DefaultCacheSignatureProviders { get => throw null; set { } } + public static int DefaultSignatureProviderObjectPoolCacheSize { get => throw null; set { } } + public virtual bool IsSupportedAlgorithm(string algorithm) => throw null; + public virtual bool IsSupportedAlgorithm(string algorithm, Microsoft.IdentityModel.Tokens.SecurityKey key) => throw null; + public virtual void ReleaseHashAlgorithm(System.Security.Cryptography.HashAlgorithm hashAlgorithm) => throw null; + public virtual void ReleaseKeyWrapProvider(Microsoft.IdentityModel.Tokens.KeyWrapProvider provider) => throw null; + public virtual void ReleaseRsaKeyWrapProvider(Microsoft.IdentityModel.Tokens.RsaKeyWrapProvider provider) => throw null; + public virtual void ReleaseSignatureProvider(Microsoft.IdentityModel.Tokens.SignatureProvider signatureProvider) => throw null; + public int SignatureProviderObjectPoolCacheSize { get => throw null; set { } } + } + public static class DateTimeUtil + { + public static System.DateTime Add(System.DateTime time, System.TimeSpan timespan) => throw null; + public static System.DateTime GetMaxValue(System.DateTimeKind kind) => throw null; + public static System.DateTime GetMinValue(System.DateTimeKind kind) => throw null; + public static System.DateTime? ToUniversalTime(System.DateTime? value) => throw null; + public static System.DateTime ToUniversalTime(System.DateTime value) => throw null; + } + public class DeflateCompressionProvider : Microsoft.IdentityModel.Tokens.ICompressionProvider + { + public string Algorithm { get => throw null; } + public byte[] Compress(byte[] value) => throw null; + public System.IO.Compression.CompressionLevel CompressionLevel { get => throw null; } + public DeflateCompressionProvider() => throw null; + public DeflateCompressionProvider(System.IO.Compression.CompressionLevel compressionLevel) => throw null; + public byte[] Decompress(byte[] value) => throw null; + public bool IsSupportedAlgorithm(string algorithm) => throw null; + public int MaximumDeflateSize { get => throw null; set { } } + } + public class EcdhKeyExchangeProvider + { + public EcdhKeyExchangeProvider(Microsoft.IdentityModel.Tokens.SecurityKey privateKey, Microsoft.IdentityModel.Tokens.SecurityKey publicKey, string alg, string enc) => throw null; + public Microsoft.IdentityModel.Tokens.SecurityKey GenerateKdf(string apu = default(string), string apv = default(string)) => throw null; + public int KeyDataLen { get => throw null; set { } } + } + public class ECDsaSecurityKey : Microsoft.IdentityModel.Tokens.AsymmetricSecurityKey + { + public override bool CanComputeJwkThumbprint() => throw null; + public override byte[] ComputeJwkThumbprint() => throw null; + public ECDsaSecurityKey(System.Security.Cryptography.ECDsa ecdsa) => throw null; + public System.Security.Cryptography.ECDsa ECDsa { get => throw null; } + public override bool HasPrivateKey { get => throw null; } + public override int KeySize { get => throw null; } + public override Microsoft.IdentityModel.Tokens.PrivateKeyStatus PrivateKeyStatus { get => throw null; } + } + public class EncryptingCredentials + { + public string Alg { get => throw null; } + public Microsoft.IdentityModel.Tokens.CryptoProviderFactory CryptoProviderFactory { get => throw null; set { } } + protected EncryptingCredentials(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, string alg, string enc) => throw null; + public EncryptingCredentials(Microsoft.IdentityModel.Tokens.SecurityKey key, string alg, string enc) => throw null; + public EncryptingCredentials(Microsoft.IdentityModel.Tokens.SymmetricSecurityKey key, string enc) => throw null; + public string Enc { get => throw null; } + public Microsoft.IdentityModel.Tokens.SecurityKey Key { get => throw null; } + public Microsoft.IdentityModel.Tokens.SecurityKey KeyExchangePublicKey { get => throw null; set { } } + public bool SetDefaultCtyClaim { get => throw null; set { } } + } + public static class EpochTime + { + public static System.DateTime DateTime(long secondsSinceUnixEpoch) => throw null; + public static long GetIntDate(System.DateTime datetime) => throw null; + public static readonly System.DateTime UnixEpoch; + } + public interface ICompressionProvider + { + string Algorithm { get; } + byte[] Compress(byte[] value); + byte[] Decompress(byte[] value); + bool IsSupportedAlgorithm(string algorithm); + } + public interface ICryptoProvider + { + object Create(string algorithm, params object[] args); + bool IsSupportedAlgorithm(string algorithm, params object[] args); + void Release(object cryptoInstance); + } + public class InMemoryCryptoProviderCache : Microsoft.IdentityModel.Tokens.CryptoProviderCache, System.IDisposable + { + public InMemoryCryptoProviderCache() => throw null; + public InMemoryCryptoProviderCache(Microsoft.IdentityModel.Tokens.CryptoProviderCacheOptions cryptoProviderCacheOptions) => throw null; + public void Dispose() => throw null; + protected virtual void Dispose(bool disposing) => throw null; + protected override string GetCacheKey(Microsoft.IdentityModel.Tokens.SignatureProvider signatureProvider) => throw null; + protected override string GetCacheKey(Microsoft.IdentityModel.Tokens.SecurityKey securityKey, string algorithm, string typeofProvider) => throw null; + public override bool TryAdd(Microsoft.IdentityModel.Tokens.SignatureProvider signatureProvider) => throw null; + public override bool TryGetSignatureProvider(Microsoft.IdentityModel.Tokens.SecurityKey securityKey, string algorithm, string typeofProvider, bool willCreateSignatures, out Microsoft.IdentityModel.Tokens.SignatureProvider signatureProvider) => throw null; + public override bool TryRemove(Microsoft.IdentityModel.Tokens.SignatureProvider signatureProvider) => throw null; + } + public interface ISecurityTokenValidator + { + bool CanReadToken(string securityToken); + bool CanValidateToken { get; } + int MaximumTokenSizeInBytes { get; set; } + System.Security.Claims.ClaimsPrincipal ValidateToken(string securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters, out Microsoft.IdentityModel.Tokens.SecurityToken validatedToken); + } + public delegate System.Collections.Generic.IEnumerable IssuerSigningKeyResolver(string token, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, string kid, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters); + public delegate System.Collections.Generic.IEnumerable IssuerSigningKeyResolverUsingConfiguration(string token, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, string kid, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters, Microsoft.IdentityModel.Tokens.BaseConfiguration configuration); + public delegate bool IssuerSigningKeyValidator(Microsoft.IdentityModel.Tokens.SecurityKey securityKey, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters); + public delegate bool IssuerSigningKeyValidatorUsingConfiguration(Microsoft.IdentityModel.Tokens.SecurityKey securityKey, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters, Microsoft.IdentityModel.Tokens.BaseConfiguration configuration); + public delegate string IssuerValidator(string issuer, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters); + public delegate string IssuerValidatorUsingConfiguration(string issuer, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters, Microsoft.IdentityModel.Tokens.BaseConfiguration configuration); + public interface ITokenReplayCache + { + bool TryAdd(string securityToken, System.DateTime expiresOn); + bool TryFind(string securityToken); + } + public static class JsonWebAlgorithmsKeyTypes + { + public const string EllipticCurve = default; + public const string Octet = default; + public const string RSA = default; + } + public class JsonWebKey : Microsoft.IdentityModel.Tokens.SecurityKey + { + public System.Collections.Generic.IDictionary AdditionalData { get => throw null; } + public string Alg { get => throw null; set { } } + public override bool CanComputeJwkThumbprint() => throw null; + public override byte[] ComputeJwkThumbprint() => throw null; + public static Microsoft.IdentityModel.Tokens.JsonWebKey Create(string json) => throw null; + public string Crv { get => throw null; set { } } + public JsonWebKey() => throw null; + public JsonWebKey(string json) => throw null; + public string D { get => throw null; set { } } + public string DP { get => throw null; set { } } + public string DQ { get => throw null; set { } } + public string E { get => throw null; set { } } + public bool HasPrivateKey { get => throw null; } + public string K { get => throw null; set { } } + public override string KeyId { get => throw null; set { } } + public System.Collections.Generic.IList KeyOps { get => throw null; } + public override int KeySize { get => throw null; } + public string Kid { get => throw null; set { } } + public string Kty { get => throw null; set { } } + public string N { get => throw null; set { } } + public System.Collections.Generic.IList Oth { get => throw null; } + public string P { get => throw null; set { } } + public string Q { get => throw null; set { } } + public string QI { get => throw null; set { } } + public override string ToString() => throw null; + public string Use { get => throw null; set { } } + public string X { get => throw null; set { } } + public System.Collections.Generic.IList X5c { get => throw null; } + public string X5t { get => throw null; set { } } + public string X5tS256 { get => throw null; set { } } + public string X5u { get => throw null; set { } } + public string Y { get => throw null; set { } } + } + public class JsonWebKeyConverter + { + public static Microsoft.IdentityModel.Tokens.JsonWebKey ConvertFromECDsaSecurityKey(Microsoft.IdentityModel.Tokens.ECDsaSecurityKey key) => throw null; + public static Microsoft.IdentityModel.Tokens.JsonWebKey ConvertFromRSASecurityKey(Microsoft.IdentityModel.Tokens.RsaSecurityKey key) => throw null; + public static Microsoft.IdentityModel.Tokens.JsonWebKey ConvertFromSecurityKey(Microsoft.IdentityModel.Tokens.SecurityKey key) => throw null; + public static Microsoft.IdentityModel.Tokens.JsonWebKey ConvertFromSymmetricSecurityKey(Microsoft.IdentityModel.Tokens.SymmetricSecurityKey key) => throw null; + public static Microsoft.IdentityModel.Tokens.JsonWebKey ConvertFromX509SecurityKey(Microsoft.IdentityModel.Tokens.X509SecurityKey key) => throw null; + public static Microsoft.IdentityModel.Tokens.JsonWebKey ConvertFromX509SecurityKey(Microsoft.IdentityModel.Tokens.X509SecurityKey key, bool representAsRsaKey) => throw null; + public JsonWebKeyConverter() => throw null; + } + public static class JsonWebKeyECTypes + { + public const string P256 = default; + public const string P384 = default; + public const string P512 = default; + public const string P521 = default; + } + public static class JsonWebKeyParameterNames + { + public const string Alg = default; + public const string Crv = default; + public const string D = default; + public const string DP = default; + public const string DQ = default; + public const string E = default; + public const string K = default; + public const string KeyOps = default; + public const string Keys = default; + public const string Kid = default; + public const string Kty = default; + public const string N = default; + public const string Oth = default; + public const string P = default; + public const string Q = default; + public const string QI = default; + public const string Use = default; + public const string X = default; + public const string X5c = default; + public const string X5t = default; + public const string X5tS256 = default; + public const string X5u = default; + public const string Y = default; + } + public class JsonWebKeySet + { + public System.Collections.Generic.IDictionary AdditionalData { get => throw null; } + public static Microsoft.IdentityModel.Tokens.JsonWebKeySet Create(string json) => throw null; + public JsonWebKeySet() => throw null; + public JsonWebKeySet(string json) => throw null; + public static bool DefaultSkipUnresolvedJsonWebKeys; + public System.Collections.Generic.IList GetSigningKeys() => throw null; + public System.Collections.Generic.IList Keys { get => throw null; } + public bool SkipUnresolvedJsonWebKeys { get => throw null; set { } } + } + public static class JsonWebKeySetParameterNames + { + public const string Keys = default; + } + public static class JsonWebKeyUseNames + { + public const string Enc = default; + public const string Sig = default; + } + public abstract class KeyWrapProvider : System.IDisposable + { + public abstract string Algorithm { get; } + public abstract string Context { get; set; } + protected KeyWrapProvider() => throw null; + public void Dispose() => throw null; + protected abstract void Dispose(bool disposing); + public abstract Microsoft.IdentityModel.Tokens.SecurityKey Key { get; } + public abstract byte[] UnwrapKey(byte[] keyBytes); + public abstract byte[] WrapKey(byte[] keyBytes); + } + public delegate bool LifetimeValidator(System.DateTime? notBefore, System.DateTime? expires, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters); + public enum PrivateKeyStatus + { + Exists = 0, + DoesNotExist = 1, + Unknown = 2, + } + public class RsaKeyWrapProvider : Microsoft.IdentityModel.Tokens.KeyWrapProvider + { + public override string Algorithm { get => throw null; } + public override string Context { get => throw null; set { } } + public RsaKeyWrapProvider(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm, bool willUnwrap) => throw null; + protected override void Dispose(bool disposing) => throw null; + protected virtual bool IsSupportedAlgorithm(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + public override Microsoft.IdentityModel.Tokens.SecurityKey Key { get => throw null; } + public override byte[] UnwrapKey(byte[] keyBytes) => throw null; + public override byte[] WrapKey(byte[] keyBytes) => throw null; + } + public class RsaSecurityKey : Microsoft.IdentityModel.Tokens.AsymmetricSecurityKey + { + public override bool CanComputeJwkThumbprint() => throw null; + public override byte[] ComputeJwkThumbprint() => throw null; + public RsaSecurityKey(System.Security.Cryptography.RSAParameters rsaParameters) => throw null; + public RsaSecurityKey(System.Security.Cryptography.RSA rsa) => throw null; + public override bool HasPrivateKey { get => throw null; } + public override int KeySize { get => throw null; } + public System.Security.Cryptography.RSAParameters Parameters { get => throw null; } + public override Microsoft.IdentityModel.Tokens.PrivateKeyStatus PrivateKeyStatus { get => throw null; } + public System.Security.Cryptography.RSA Rsa { get => throw null; } + } + public static class SecurityAlgorithms + { + public const string Aes128CbcHmacSha256 = default; + public const string Aes128Encryption = default; + public const string Aes128Gcm = default; + public const string Aes128KeyWrap = default; + public const string Aes128KW = default; + public const string Aes192CbcHmacSha384 = default; + public const string Aes192Encryption = default; + public const string Aes192Gcm = default; + public const string Aes192KeyWrap = default; + public const string Aes192KW = default; + public const string Aes256CbcHmacSha512 = default; + public const string Aes256Encryption = default; + public const string Aes256Gcm = default; + public const string Aes256KeyWrap = default; + public const string Aes256KW = default; + public const string DesEncryption = default; + public const string EcdhEs = default; + public const string EcdhEsA128kw = default; + public const string EcdhEsA192kw = default; + public const string EcdhEsA256kw = default; + public const string EcdsaSha256 = default; + public const string EcdsaSha256Signature = default; + public const string EcdsaSha384 = default; + public const string EcdsaSha384Signature = default; + public const string EcdsaSha512 = default; + public const string EcdsaSha512Signature = default; + public const string EnvelopedSignature = default; + public const string ExclusiveC14n = default; + public const string ExclusiveC14nWithComments = default; + public const string HmacSha256 = default; + public const string HmacSha256Signature = default; + public const string HmacSha384 = default; + public const string HmacSha384Signature = default; + public const string HmacSha512 = default; + public const string HmacSha512Signature = default; + public const string None = default; + public const string Ripemd160Digest = default; + public const string RsaOAEP = default; + public const string RsaOaepKeyWrap = default; + public const string RsaPKCS1 = default; + public const string RsaSha256 = default; + public const string RsaSha256Signature = default; + public const string RsaSha384 = default; + public const string RsaSha384Signature = default; + public const string RsaSha512 = default; + public const string RsaSha512Signature = default; + public const string RsaSsaPssSha256 = default; + public const string RsaSsaPssSha256Signature = default; + public const string RsaSsaPssSha384 = default; + public const string RsaSsaPssSha384Signature = default; + public const string RsaSsaPssSha512 = default; + public const string RsaSsaPssSha512Signature = default; + public const string RsaV15KeyWrap = default; + public const string Sha256 = default; + public const string Sha256Digest = default; + public const string Sha384 = default; + public const string Sha384Digest = default; + public const string Sha512 = default; + public const string Sha512Digest = default; + } + public abstract class SecurityKey + { + public virtual bool CanComputeJwkThumbprint() => throw null; + public virtual byte[] ComputeJwkThumbprint() => throw null; + public Microsoft.IdentityModel.Tokens.CryptoProviderFactory CryptoProviderFactory { get => throw null; set { } } + public SecurityKey() => throw null; + public virtual bool IsSupportedAlgorithm(string algorithm) => throw null; + public virtual string KeyId { get => throw null; set { } } + public abstract int KeySize { get; } + public override string ToString() => throw null; + } + public class SecurityKeyIdentifierClause + { + public SecurityKeyIdentifierClause() => throw null; + } + public abstract class SecurityToken : Microsoft.IdentityModel.Logging.ISafeLogSecurityArtifact + { + protected SecurityToken() => throw null; + public abstract string Id { get; } + public abstract string Issuer { get; } + public abstract Microsoft.IdentityModel.Tokens.SecurityKey SecurityKey { get; } + public abstract Microsoft.IdentityModel.Tokens.SecurityKey SigningKey { get; set; } + public virtual string UnsafeToString() => throw null; + public abstract System.DateTime ValidFrom { get; } + public abstract System.DateTime ValidTo { get; } + } + public class SecurityTokenArgumentException : System.ArgumentException + { + public SecurityTokenArgumentException() => throw null; + public SecurityTokenArgumentException(string message) => throw null; + public SecurityTokenArgumentException(string message, System.Exception innerException) => throw null; + protected SecurityTokenArgumentException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenCompressionFailedException : Microsoft.IdentityModel.Tokens.SecurityTokenException + { + public SecurityTokenCompressionFailedException() => throw null; + public SecurityTokenCompressionFailedException(string message) => throw null; + public SecurityTokenCompressionFailedException(string message, System.Exception inner) => throw null; + protected SecurityTokenCompressionFailedException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenDecompressionFailedException : Microsoft.IdentityModel.Tokens.SecurityTokenException + { + public SecurityTokenDecompressionFailedException() => throw null; + public SecurityTokenDecompressionFailedException(string message) => throw null; + public SecurityTokenDecompressionFailedException(string message, System.Exception inner) => throw null; + protected SecurityTokenDecompressionFailedException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenDecryptionFailedException : Microsoft.IdentityModel.Tokens.SecurityTokenException + { + public SecurityTokenDecryptionFailedException() => throw null; + public SecurityTokenDecryptionFailedException(string message) => throw null; + public SecurityTokenDecryptionFailedException(string message, System.Exception innerException) => throw null; + protected SecurityTokenDecryptionFailedException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenDescriptor + { + public System.Collections.Generic.IDictionary AdditionalHeaderClaims { get => throw null; set { } } + public System.Collections.Generic.IDictionary AdditionalInnerHeaderClaims { get => throw null; set { } } + public string Audience { get => throw null; set { } } + public System.Collections.Generic.IDictionary Claims { get => throw null; set { } } + public string CompressionAlgorithm { get => throw null; set { } } + public SecurityTokenDescriptor() => throw null; + public Microsoft.IdentityModel.Tokens.EncryptingCredentials EncryptingCredentials { get => throw null; set { } } + public System.DateTime? Expires { get => throw null; set { } } + public System.DateTime? IssuedAt { get => throw null; set { } } + public string Issuer { get => throw null; set { } } + public System.DateTime? NotBefore { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.SigningCredentials SigningCredentials { get => throw null; set { } } + public System.Security.Claims.ClaimsIdentity Subject { get => throw null; set { } } + public string TokenType { get => throw null; set { } } + } + public class SecurityTokenEncryptionFailedException : Microsoft.IdentityModel.Tokens.SecurityTokenException + { + public SecurityTokenEncryptionFailedException() => throw null; + public SecurityTokenEncryptionFailedException(string message) => throw null; + public SecurityTokenEncryptionFailedException(string message, System.Exception innerException) => throw null; + protected SecurityTokenEncryptionFailedException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenEncryptionKeyNotFoundException : Microsoft.IdentityModel.Tokens.SecurityTokenDecryptionFailedException + { + public SecurityTokenEncryptionKeyNotFoundException() => throw null; + public SecurityTokenEncryptionKeyNotFoundException(string message) => throw null; + public SecurityTokenEncryptionKeyNotFoundException(string message, System.Exception innerException) => throw null; + protected SecurityTokenEncryptionKeyNotFoundException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenException : System.Exception + { + public SecurityTokenException() => throw null; + public SecurityTokenException(string message) => throw null; + public SecurityTokenException(string message, System.Exception innerException) => throw null; + protected SecurityTokenException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenExpiredException : Microsoft.IdentityModel.Tokens.SecurityTokenValidationException + { + public SecurityTokenExpiredException() => throw null; + public SecurityTokenExpiredException(string message) => throw null; + public SecurityTokenExpiredException(string message, System.Exception inner) => throw null; + protected SecurityTokenExpiredException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public System.DateTime Expires { get => throw null; set { } } + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public abstract class SecurityTokenHandler : Microsoft.IdentityModel.Tokens.TokenHandler, Microsoft.IdentityModel.Tokens.ISecurityTokenValidator + { + public virtual bool CanReadToken(System.Xml.XmlReader reader) => throw null; + public virtual bool CanReadToken(string tokenString) => throw null; + public virtual bool CanValidateToken { get => throw null; } + public virtual bool CanWriteToken { get => throw null; } + public virtual Microsoft.IdentityModel.Tokens.SecurityKeyIdentifierClause CreateSecurityTokenReference(Microsoft.IdentityModel.Tokens.SecurityToken token, bool attached) => throw null; + public virtual Microsoft.IdentityModel.Tokens.SecurityToken CreateToken(Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor tokenDescriptor) => throw null; + protected SecurityTokenHandler() => throw null; + public virtual Microsoft.IdentityModel.Tokens.SecurityToken ReadToken(System.Xml.XmlReader reader) => throw null; + public abstract Microsoft.IdentityModel.Tokens.SecurityToken ReadToken(System.Xml.XmlReader reader, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters); + public abstract System.Type TokenType { get; } + public virtual System.Security.Claims.ClaimsPrincipal ValidateToken(string securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters, out Microsoft.IdentityModel.Tokens.SecurityToken validatedToken) => throw null; + public virtual System.Security.Claims.ClaimsPrincipal ValidateToken(System.Xml.XmlReader reader, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters, out Microsoft.IdentityModel.Tokens.SecurityToken validatedToken) => throw null; + public virtual string WriteToken(Microsoft.IdentityModel.Tokens.SecurityToken token) => throw null; + public abstract void WriteToken(System.Xml.XmlWriter writer, Microsoft.IdentityModel.Tokens.SecurityToken token); + } + public class SecurityTokenInvalidAlgorithmException : Microsoft.IdentityModel.Tokens.SecurityTokenValidationException + { + public SecurityTokenInvalidAlgorithmException() => throw null; + public SecurityTokenInvalidAlgorithmException(string message) => throw null; + public SecurityTokenInvalidAlgorithmException(string message, System.Exception innerException) => throw null; + protected SecurityTokenInvalidAlgorithmException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public string InvalidAlgorithm { get => throw null; set { } } + } + public class SecurityTokenInvalidAudienceException : Microsoft.IdentityModel.Tokens.SecurityTokenValidationException + { + public SecurityTokenInvalidAudienceException() => throw null; + public SecurityTokenInvalidAudienceException(string message) => throw null; + public SecurityTokenInvalidAudienceException(string message, System.Exception innerException) => throw null; + protected SecurityTokenInvalidAudienceException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public string InvalidAudience { get => throw null; set { } } + } + public class SecurityTokenInvalidIssuerException : Microsoft.IdentityModel.Tokens.SecurityTokenValidationException + { + public SecurityTokenInvalidIssuerException() => throw null; + public SecurityTokenInvalidIssuerException(string message) => throw null; + public SecurityTokenInvalidIssuerException(string message, System.Exception innerException) => throw null; + protected SecurityTokenInvalidIssuerException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public string InvalidIssuer { get => throw null; set { } } + } + public class SecurityTokenInvalidLifetimeException : Microsoft.IdentityModel.Tokens.SecurityTokenValidationException + { + public SecurityTokenInvalidLifetimeException() => throw null; + public SecurityTokenInvalidLifetimeException(string message) => throw null; + public SecurityTokenInvalidLifetimeException(string message, System.Exception innerException) => throw null; + protected SecurityTokenInvalidLifetimeException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public System.DateTime? Expires { get => throw null; set { } } + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public System.DateTime? NotBefore { get => throw null; set { } } + } + public class SecurityTokenInvalidSignatureException : Microsoft.IdentityModel.Tokens.SecurityTokenValidationException + { + public SecurityTokenInvalidSignatureException() => throw null; + public SecurityTokenInvalidSignatureException(string message) => throw null; + public SecurityTokenInvalidSignatureException(string message, System.Exception innerException) => throw null; + protected SecurityTokenInvalidSignatureException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenInvalidSigningKeyException : Microsoft.IdentityModel.Tokens.SecurityTokenValidationException + { + public SecurityTokenInvalidSigningKeyException() => throw null; + public SecurityTokenInvalidSigningKeyException(string message) => throw null; + public SecurityTokenInvalidSigningKeyException(string message, System.Exception inner) => throw null; + protected SecurityTokenInvalidSigningKeyException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public Microsoft.IdentityModel.Tokens.SecurityKey SigningKey { get => throw null; set { } } + } + public class SecurityTokenInvalidTypeException : Microsoft.IdentityModel.Tokens.SecurityTokenValidationException + { + public SecurityTokenInvalidTypeException() => throw null; + public SecurityTokenInvalidTypeException(string message) => throw null; + public SecurityTokenInvalidTypeException(string message, System.Exception innerException) => throw null; + protected SecurityTokenInvalidTypeException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public string InvalidType { get => throw null; set { } } + } + public class SecurityTokenKeyWrapException : Microsoft.IdentityModel.Tokens.SecurityTokenException + { + public SecurityTokenKeyWrapException() => throw null; + public SecurityTokenKeyWrapException(string message) => throw null; + public SecurityTokenKeyWrapException(string message, System.Exception innerException) => throw null; + protected SecurityTokenKeyWrapException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenMalformedException : Microsoft.IdentityModel.Tokens.SecurityTokenArgumentException + { + public SecurityTokenMalformedException() => throw null; + public SecurityTokenMalformedException(string message) => throw null; + public SecurityTokenMalformedException(string message, System.Exception innerException) => throw null; + protected SecurityTokenMalformedException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenNoExpirationException : Microsoft.IdentityModel.Tokens.SecurityTokenValidationException + { + public SecurityTokenNoExpirationException() => throw null; + public SecurityTokenNoExpirationException(string message) => throw null; + public SecurityTokenNoExpirationException(string message, System.Exception innerException) => throw null; + protected SecurityTokenNoExpirationException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenNotYetValidException : Microsoft.IdentityModel.Tokens.SecurityTokenValidationException + { + public SecurityTokenNotYetValidException() => throw null; + public SecurityTokenNotYetValidException(string message) => throw null; + public SecurityTokenNotYetValidException(string message, System.Exception inner) => throw null; + protected SecurityTokenNotYetValidException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public System.DateTime NotBefore { get => throw null; set { } } + } + public class SecurityTokenReplayAddFailedException : Microsoft.IdentityModel.Tokens.SecurityTokenValidationException + { + public SecurityTokenReplayAddFailedException() => throw null; + public SecurityTokenReplayAddFailedException(string message) => throw null; + public SecurityTokenReplayAddFailedException(string message, System.Exception innerException) => throw null; + protected SecurityTokenReplayAddFailedException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenReplayDetectedException : Microsoft.IdentityModel.Tokens.SecurityTokenValidationException + { + public SecurityTokenReplayDetectedException() => throw null; + public SecurityTokenReplayDetectedException(string message) => throw null; + public SecurityTokenReplayDetectedException(string message, System.Exception inner) => throw null; + protected SecurityTokenReplayDetectedException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenSignatureKeyNotFoundException : Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException + { + public SecurityTokenSignatureKeyNotFoundException() => throw null; + public SecurityTokenSignatureKeyNotFoundException(string message) => throw null; + public SecurityTokenSignatureKeyNotFoundException(string message, System.Exception innerException) => throw null; + protected SecurityTokenSignatureKeyNotFoundException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public class SecurityTokenUnableToValidateException : Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException + { + public SecurityTokenUnableToValidateException() => throw null; + public SecurityTokenUnableToValidateException(Microsoft.IdentityModel.Tokens.ValidationFailure validationFailure, string message) => throw null; + public SecurityTokenUnableToValidateException(string message) => throw null; + public SecurityTokenUnableToValidateException(string message, System.Exception innerException) => throw null; + protected SecurityTokenUnableToValidateException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public Microsoft.IdentityModel.Tokens.ValidationFailure ValidationFailure { get => throw null; set { } } + } + public class SecurityTokenValidationException : Microsoft.IdentityModel.Tokens.SecurityTokenException + { + public SecurityTokenValidationException() => throw null; + public SecurityTokenValidationException(string message) => throw null; + public SecurityTokenValidationException(string message, System.Exception innerException) => throw null; + protected SecurityTokenValidationException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public abstract class SignatureProvider : System.IDisposable + { + public string Algorithm { get => throw null; } + public string Context { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.CryptoProviderCache CryptoProviderCache { get => throw null; set { } } + protected SignatureProvider(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + public void Dispose() => throw null; + protected abstract void Dispose(bool disposing); + public Microsoft.IdentityModel.Tokens.SecurityKey Key { get => throw null; } + public abstract byte[] Sign(byte[] input); + public virtual byte[] Sign(byte[] input, int offset, int count) => throw null; + public virtual bool Sign(System.ReadOnlySpan data, System.Span destination, out int bytesWritten) => throw null; + public abstract bool Verify(byte[] input, byte[] signature); + public virtual bool Verify(byte[] input, int inputOffset, int inputLength, byte[] signature, int signatureOffset, int signatureLength) => throw null; + public bool WillCreateSignatures { get => throw null; set { } } + } + public delegate Microsoft.IdentityModel.Tokens.SecurityToken SignatureValidator(string token, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters); + public delegate Microsoft.IdentityModel.Tokens.SecurityToken SignatureValidatorUsingConfiguration(string token, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters, Microsoft.IdentityModel.Tokens.BaseConfiguration configuration); + public class SigningCredentials + { + public string Algorithm { get => throw null; } + public Microsoft.IdentityModel.Tokens.CryptoProviderFactory CryptoProviderFactory { get => throw null; set { } } + protected SigningCredentials(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) => throw null; + protected SigningCredentials(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, string algorithm) => throw null; + public SigningCredentials(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + public SigningCredentials(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm, string digest) => throw null; + public string Digest { get => throw null; } + public Microsoft.IdentityModel.Tokens.SecurityKey Key { get => throw null; } + public string Kid { get => throw null; } + } + public class SymmetricKeyWrapProvider : Microsoft.IdentityModel.Tokens.KeyWrapProvider + { + public override string Algorithm { get => throw null; } + public override string Context { get => throw null; set { } } + public SymmetricKeyWrapProvider(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + protected override void Dispose(bool disposing) => throw null; + protected virtual System.Security.Cryptography.SymmetricAlgorithm GetSymmetricAlgorithm(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + protected virtual bool IsSupportedAlgorithm(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) => throw null; + public override Microsoft.IdentityModel.Tokens.SecurityKey Key { get => throw null; } + public override byte[] UnwrapKey(byte[] keyBytes) => throw null; + public override byte[] WrapKey(byte[] keyBytes) => throw null; + } + public class SymmetricSecurityKey : Microsoft.IdentityModel.Tokens.SecurityKey + { + public override bool CanComputeJwkThumbprint() => throw null; + public override byte[] ComputeJwkThumbprint() => throw null; + public SymmetricSecurityKey(byte[] key) => throw null; + public virtual byte[] Key { get => throw null; } + public override int KeySize { get => throw null; } + } + public class SymmetricSignatureProvider : Microsoft.IdentityModel.Tokens.SignatureProvider + { + public SymmetricSignatureProvider(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm) : base(default(Microsoft.IdentityModel.Tokens.SecurityKey), default(string)) => throw null; + public SymmetricSignatureProvider(Microsoft.IdentityModel.Tokens.SecurityKey key, string algorithm, bool willCreateSignatures) : base(default(Microsoft.IdentityModel.Tokens.SecurityKey), default(string)) => throw null; + public static readonly int DefaultMinimumSymmetricKeySizeInBits; + protected override void Dispose(bool disposing) => throw null; + protected virtual byte[] GetKeyBytes(Microsoft.IdentityModel.Tokens.SecurityKey key) => throw null; + protected virtual System.Security.Cryptography.KeyedHashAlgorithm GetKeyedHashAlgorithm(byte[] keyBytes, string algorithm) => throw null; + public int MinimumSymmetricKeySizeInBits { get => throw null; set { } } + protected virtual void ReleaseKeyedHashAlgorithm(System.Security.Cryptography.KeyedHashAlgorithm keyedHashAlgorithm) => throw null; + public override byte[] Sign(byte[] input) => throw null; + public override bool Sign(System.ReadOnlySpan input, System.Span signature, out int bytesWritten) => throw null; + public override byte[] Sign(byte[] input, int offset, int count) => throw null; + public override bool Verify(byte[] input, byte[] signature) => throw null; + public bool Verify(byte[] input, byte[] signature, int length) => throw null; + public override bool Verify(byte[] input, int inputOffset, int inputLength, byte[] signature, int signatureOffset, int signatureLength) => throw null; + } + public class TokenContext : Microsoft.IdentityModel.Tokens.CallContext + { + public TokenContext() => throw null; + public TokenContext(System.Guid activityId) => throw null; + } + public delegate System.Collections.Generic.IEnumerable TokenDecryptionKeyResolver(string token, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, string kid, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters); + public abstract class TokenHandler + { + protected TokenHandler() => throw null; + public static readonly int DefaultTokenLifetimeInMinutes; + public virtual int MaximumTokenSizeInBytes { get => throw null; set { } } + public virtual Microsoft.IdentityModel.Tokens.SecurityToken ReadToken(string token) => throw null; + public bool SetDefaultTimesOnTokenCreation { get => throw null; set { } } + public int TokenLifetimeInMinutes { get => throw null; set { } } + public virtual System.Threading.Tasks.Task ValidateTokenAsync(string token, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public virtual System.Threading.Tasks.Task ValidateTokenAsync(Microsoft.IdentityModel.Tokens.SecurityToken token, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + } + public delegate Microsoft.IdentityModel.Tokens.SecurityToken TokenReader(string token, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters); + public delegate bool TokenReplayValidator(System.DateTime? expirationTime, string securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters); + public class TokenValidationParameters + { + public Microsoft.IdentityModel.Tokens.TokenValidationParameters ActorValidationParameters { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.AlgorithmValidator AlgorithmValidator { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.AudienceValidator AudienceValidator { get => throw null; set { } } + public string AuthenticationType { get => throw null; set { } } + public System.TimeSpan ClockSkew { get => throw null; set { } } + public virtual Microsoft.IdentityModel.Tokens.TokenValidationParameters Clone() => throw null; + public Microsoft.IdentityModel.Tokens.BaseConfigurationManager ConfigurationManager { get => throw null; set { } } + public virtual System.Security.Claims.ClaimsIdentity CreateClaimsIdentity(Microsoft.IdentityModel.Tokens.SecurityToken securityToken, string issuer) => throw null; + public Microsoft.IdentityModel.Tokens.CryptoProviderFactory CryptoProviderFactory { get => throw null; set { } } + protected TokenValidationParameters(Microsoft.IdentityModel.Tokens.TokenValidationParameters other) => throw null; + public TokenValidationParameters() => throw null; + public string DebugId { get => throw null; set { } } + public static readonly string DefaultAuthenticationType; + public static readonly System.TimeSpan DefaultClockSkew; + public const int DefaultMaximumTokenSizeInBytes = 256000; + public bool IgnoreTrailingSlashWhenValidatingAudience { get => throw null; set { } } + public bool IncludeTokenOnFailedValidation { get => throw null; set { } } + public System.Collections.Generic.IDictionary InstancePropertyBag { get => throw null; } + public bool IsClone { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.SecurityKey IssuerSigningKey { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.IssuerSigningKeyResolver IssuerSigningKeyResolver { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.IssuerSigningKeyResolverUsingConfiguration IssuerSigningKeyResolverUsingConfiguration { get => throw null; set { } } + public System.Collections.Generic.IEnumerable IssuerSigningKeys { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.IssuerSigningKeyValidator IssuerSigningKeyValidator { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.IssuerSigningKeyValidatorUsingConfiguration IssuerSigningKeyValidatorUsingConfiguration { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.IssuerValidator IssuerValidator { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.IssuerValidatorUsingConfiguration IssuerValidatorUsingConfiguration { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.LifetimeValidator LifetimeValidator { get => throw null; set { } } + public bool LogTokenId { get => throw null; set { } } + public bool LogValidationExceptions { get => throw null; set { } } + public string NameClaimType { get => throw null; set { } } + public System.Func NameClaimTypeRetriever { get => throw null; set { } } + public System.Collections.Generic.IDictionary PropertyBag { get => throw null; set { } } + public bool RefreshBeforeValidation { get => throw null; set { } } + public bool RequireAudience { get => throw null; set { } } + public bool RequireExpirationTime { get => throw null; set { } } + public bool RequireSignedTokens { get => throw null; set { } } + public string RoleClaimType { get => throw null; set { } } + public System.Func RoleClaimTypeRetriever { get => throw null; set { } } + public bool SaveSigninToken { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.SignatureValidator SignatureValidator { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.SignatureValidatorUsingConfiguration SignatureValidatorUsingConfiguration { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.SecurityKey TokenDecryptionKey { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.TokenDecryptionKeyResolver TokenDecryptionKeyResolver { get => throw null; set { } } + public System.Collections.Generic.IEnumerable TokenDecryptionKeys { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.TokenReader TokenReader { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.ITokenReplayCache TokenReplayCache { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.TokenReplayValidator TokenReplayValidator { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.TransformBeforeSignatureValidation TransformBeforeSignatureValidation { get => throw null; set { } } + public bool TryAllIssuerSigningKeys { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.TypeValidator TypeValidator { get => throw null; set { } } + public System.Collections.Generic.IEnumerable ValidAlgorithms { get => throw null; set { } } + public bool ValidateActor { get => throw null; set { } } + public bool ValidateAudience { get => throw null; set { } } + public bool ValidateIssuer { get => throw null; set { } } + public bool ValidateIssuerSigningKey { get => throw null; set { } } + public bool ValidateLifetime { get => throw null; set { } } + public bool ValidateSignatureLast { get => throw null; set { } } + public bool ValidateTokenReplay { get => throw null; set { } } + public bool ValidateWithLKG { get => throw null; set { } } + public string ValidAudience { get => throw null; set { } } + public System.Collections.Generic.IEnumerable ValidAudiences { get => throw null; set { } } + public string ValidIssuer { get => throw null; set { } } + public System.Collections.Generic.IEnumerable ValidIssuers { get => throw null; set { } } + public System.Collections.Generic.IEnumerable ValidTypes { get => throw null; set { } } + } + public class TokenValidationResult + { + public System.Collections.Generic.IDictionary Claims { get => throw null; } + public System.Security.Claims.ClaimsIdentity ClaimsIdentity { get => throw null; set { } } + public TokenValidationResult() => throw null; + public System.Exception Exception { get => throw null; set { } } + public string Issuer { get => throw null; set { } } + public bool IsValid { get => throw null; set { } } + public System.Collections.Generic.IDictionary PropertyBag { get => throw null; } + public Microsoft.IdentityModel.Tokens.SecurityToken SecurityToken { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.CallContext TokenContext { get => throw null; set { } } + public Microsoft.IdentityModel.Tokens.SecurityToken TokenOnFailedValidation { get => throw null; } + public string TokenType { get => throw null; set { } } + } + public delegate Microsoft.IdentityModel.Tokens.SecurityToken TransformBeforeSignatureValidation(Microsoft.IdentityModel.Tokens.SecurityToken token, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters); + public delegate string TypeValidator(string type, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters); + public static class UniqueId + { + public static string CreateRandomId() => throw null; + public static string CreateRandomId(string prefix) => throw null; + public static System.Uri CreateRandomUri() => throw null; + public static string CreateUniqueId() => throw null; + public static string CreateUniqueId(string prefix) => throw null; + } + public static class Utility + { + public static bool AreEqual(byte[] a, byte[] b) => throw null; + public static byte[] CloneByteArray(this byte[] src) => throw null; + public const string Empty = default; + public static bool IsHttps(string address) => throw null; + public static bool IsHttps(System.Uri uri) => throw null; + public const string Null = default; + } + public enum ValidationFailure + { + None = 0, + InvalidLifetime = 1, + InvalidIssuer = 2, + } + public static class Validators + { + public static void ValidateAlgorithm(string algorithm, Microsoft.IdentityModel.Tokens.SecurityKey securityKey, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public static void ValidateAudience(System.Collections.Generic.IEnumerable audiences, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public static string ValidateIssuer(string issuer, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public static void ValidateIssuerSecurityKey(Microsoft.IdentityModel.Tokens.SecurityKey securityKey, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public static void ValidateLifetime(System.DateTime? notBefore, System.DateTime? expires, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public static void ValidateTokenReplay(System.DateTime? expirationTime, string securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public static void ValidateTokenReplay(string securityToken, System.DateTime? expirationTime, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public static string ValidateTokenType(string type, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + } + public class X509EncryptingCredentials : Microsoft.IdentityModel.Tokens.EncryptingCredentials + { + public System.Security.Cryptography.X509Certificates.X509Certificate2 Certificate { get => throw null; } + public X509EncryptingCredentials(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) : base(default(Microsoft.IdentityModel.Tokens.SymmetricSecurityKey), default(string)) => throw null; + public X509EncryptingCredentials(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, string keyWrapAlgorithm, string dataEncryptionAlgorithm) : base(default(Microsoft.IdentityModel.Tokens.SymmetricSecurityKey), default(string)) => throw null; + } + public class X509SecurityKey : Microsoft.IdentityModel.Tokens.AsymmetricSecurityKey + { + public override bool CanComputeJwkThumbprint() => throw null; + public System.Security.Cryptography.X509Certificates.X509Certificate2 Certificate { get => throw null; } + public override byte[] ComputeJwkThumbprint() => throw null; + public X509SecurityKey(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) => throw null; + public X509SecurityKey(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, string keyId) => throw null; + public override bool Equals(object obj) => throw null; + public override int GetHashCode() => throw null; + public override bool HasPrivateKey { get => throw null; } + public override int KeySize { get => throw null; } + public System.Security.Cryptography.AsymmetricAlgorithm PrivateKey { get => throw null; } + public override Microsoft.IdentityModel.Tokens.PrivateKeyStatus PrivateKeyStatus { get => throw null; } + public System.Security.Cryptography.AsymmetricAlgorithm PublicKey { get => throw null; } + public string X5t { get => throw null; } + } + public class X509SigningCredentials : Microsoft.IdentityModel.Tokens.SigningCredentials + { + public System.Security.Cryptography.X509Certificates.X509Certificate2 Certificate { get => throw null; } + public X509SigningCredentials(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) : base(default(System.Security.Cryptography.X509Certificates.X509Certificate2)) => throw null; + public X509SigningCredentials(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, string algorithm) : base(default(System.Security.Cryptography.X509Certificates.X509Certificate2)) => throw null; + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Tokens/7.5.0/Microsoft.IdentityModel.Tokens.csproj b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Tokens/7.5.0/Microsoft.IdentityModel.Tokens.csproj new file mode 100644 index 000000000000..524740979fa2 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.IdentityModel.Tokens/7.5.0/Microsoft.IdentityModel.Tokens.csproj @@ -0,0 +1,13 @@ + + + net9.0 + true + bin\ + false + + + + + + + diff --git a/csharp/ql/test/resources/stubs/Microsoft.SqlServer.Server/1.0.0/Microsoft.SqlServer.Server.cs b/csharp/ql/test/resources/stubs/Microsoft.SqlServer.Server/1.0.0/Microsoft.SqlServer.Server.cs new file mode 100644 index 000000000000..8c197a3d6824 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.SqlServer.Server/1.0.0/Microsoft.SqlServer.Server.cs @@ -0,0 +1,91 @@ +// This file contains auto-generated code. +// Generated from `Microsoft.SqlServer.Server, Version=1.0.0.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5`. +namespace Microsoft +{ + namespace SqlServer + { + namespace Server + { + public enum DataAccessKind + { + None = 0, + Read = 1, + } + public enum Format + { + Unknown = 0, + Native = 1, + UserDefined = 2, + } + public interface IBinarySerialize + { + void Read(System.IO.BinaryReader r); + void Write(System.IO.BinaryWriter w); + } + public sealed class InvalidUdtException : System.SystemException + { + public static Microsoft.SqlServer.Server.InvalidUdtException Create(System.Type udtType, string resourceReason = default(string)) => throw null; + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo si, System.Runtime.Serialization.StreamingContext context) => throw null; + } + [System.AttributeUsage((System.AttributeTargets)10624, AllowMultiple = false, Inherited = false)] + public class SqlFacetAttribute : System.Attribute + { + public SqlFacetAttribute() => throw null; + public bool IsFixedLength { get => throw null; set { } } + public bool IsNullable { get => throw null; set { } } + public int MaxSize { get => throw null; set { } } + public int Precision { get => throw null; set { } } + public int Scale { get => throw null; set { } } + } + [System.AttributeUsage((System.AttributeTargets)64, AllowMultiple = false, Inherited = false)] + public class SqlFunctionAttribute : System.Attribute + { + public SqlFunctionAttribute() => throw null; + public Microsoft.SqlServer.Server.DataAccessKind DataAccess { get => throw null; set { } } + public string FillRowMethodName { get => throw null; set { } } + public bool IsDeterministic { get => throw null; set { } } + public bool IsPrecise { get => throw null; set { } } + public string Name { get => throw null; set { } } + public Microsoft.SqlServer.Server.SystemDataAccessKind SystemDataAccess { get => throw null; set { } } + public string TableDefinition { get => throw null; set { } } + } + [System.AttributeUsage((System.AttributeTargets)64, AllowMultiple = false, Inherited = false)] + public sealed class SqlMethodAttribute : Microsoft.SqlServer.Server.SqlFunctionAttribute + { + public SqlMethodAttribute() => throw null; + public bool InvokeIfReceiverIsNull { get => throw null; set { } } + public bool IsMutator { get => throw null; set { } } + public bool OnNullCall { get => throw null; set { } } + } + [System.AttributeUsage((System.AttributeTargets)12, AllowMultiple = false, Inherited = false)] + public sealed class SqlUserDefinedAggregateAttribute : System.Attribute + { + public SqlUserDefinedAggregateAttribute(Microsoft.SqlServer.Server.Format format) => throw null; + public Microsoft.SqlServer.Server.Format Format { get => throw null; } + public bool IsInvariantToDuplicates { get => throw null; set { } } + public bool IsInvariantToNulls { get => throw null; set { } } + public bool IsInvariantToOrder { get => throw null; set { } } + public bool IsNullIfEmpty { get => throw null; set { } } + public int MaxByteSize { get => throw null; set { } } + public const int MaxByteSizeValue = 8000; + public string Name { get => throw null; set { } } + } + [System.AttributeUsage((System.AttributeTargets)12, AllowMultiple = false, Inherited = true)] + public sealed class SqlUserDefinedTypeAttribute : System.Attribute + { + public SqlUserDefinedTypeAttribute(Microsoft.SqlServer.Server.Format format) => throw null; + public Microsoft.SqlServer.Server.Format Format { get => throw null; } + public bool IsByteOrdered { get => throw null; set { } } + public bool IsFixedLength { get => throw null; set { } } + public int MaxByteSize { get => throw null; set { } } + public string Name { get => throw null; set { } } + public string ValidationMethodName { get => throw null; set { } } + } + public enum SystemDataAccessKind + { + None = 0, + Read = 1, + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/Microsoft.SqlServer.Server/1.0.0/Microsoft.SqlServer.Server.csproj b/csharp/ql/test/resources/stubs/Microsoft.SqlServer.Server/1.0.0/Microsoft.SqlServer.Server.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.SqlServer.Server/1.0.0/Microsoft.SqlServer.Server.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.ClientModel/1.0.0/System.ClientModel.cs b/csharp/ql/test/resources/stubs/System.ClientModel/1.0.0/System.ClientModel.cs new file mode 100644 index 000000000000..964fecb626d4 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.ClientModel/1.0.0/System.ClientModel.cs @@ -0,0 +1,42 @@ +// This file contains auto-generated code. +// Generated from `System.ClientModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8`. +namespace System +{ + namespace ClientModel + { + namespace Primitives + { + public interface IJsonModel : System.ClientModel.Primitives.IPersistableModel + { + T Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options); + void Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options); + } + public interface IPersistableModel + { + T Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options); + string GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options); + System.BinaryData Write(System.ClientModel.Primitives.ModelReaderWriterOptions options); + } + public static class ModelReaderWriter + { + public static T Read(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options = default(System.ClientModel.Primitives.ModelReaderWriterOptions)) where T : System.ClientModel.Primitives.IPersistableModel => throw null; + public static object Read(System.BinaryData data, System.Type returnType, System.ClientModel.Primitives.ModelReaderWriterOptions options = default(System.ClientModel.Primitives.ModelReaderWriterOptions)) => throw null; + public static System.BinaryData Write(T model, System.ClientModel.Primitives.ModelReaderWriterOptions options = default(System.ClientModel.Primitives.ModelReaderWriterOptions)) where T : System.ClientModel.Primitives.IPersistableModel => throw null; + public static System.BinaryData Write(object model, System.ClientModel.Primitives.ModelReaderWriterOptions options = default(System.ClientModel.Primitives.ModelReaderWriterOptions)) => throw null; + } + public class ModelReaderWriterOptions + { + public ModelReaderWriterOptions(string format) => throw null; + public string Format { get => throw null; } + public static System.ClientModel.Primitives.ModelReaderWriterOptions Json { get => throw null; } + public static System.ClientModel.Primitives.ModelReaderWriterOptions Xml { get => throw null; } + } + [System.AttributeUsage((System.AttributeTargets)4)] + public sealed class PersistableModelProxyAttribute : System.Attribute + { + public PersistableModelProxyAttribute(System.Type proxyType) => throw null; + public System.Type ProxyType { get => throw null; } + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/System.ClientModel/1.0.0/System.ClientModel.csproj b/csharp/ql/test/resources/stubs/System.ClientModel/1.0.0/System.ClientModel.csproj new file mode 100644 index 000000000000..af9830f6d13d --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.ClientModel/1.0.0/System.ClientModel.csproj @@ -0,0 +1,14 @@ + + + net9.0 + true + bin\ + false + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Configuration.ConfigurationManager/9.0.4/System.Configuration.ConfigurationManager.csproj b/csharp/ql/test/resources/stubs/System.Configuration.ConfigurationManager/9.0.4/System.Configuration.ConfigurationManager.csproj new file mode 100644 index 000000000000..8017e89ccf27 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Configuration.ConfigurationManager/9.0.4/System.Configuration.ConfigurationManager.csproj @@ -0,0 +1,14 @@ + + + net9.0 + true + bin\ + false + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Diagnostics.DiagnosticSource/6.0.1/System.Diagnostics.DiagnosticSource.csproj b/csharp/ql/test/resources/stubs/System.Diagnostics.DiagnosticSource/6.0.1/System.Diagnostics.DiagnosticSource.csproj new file mode 100644 index 000000000000..44f3b6c98d18 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Diagnostics.DiagnosticSource/6.0.1/System.Diagnostics.DiagnosticSource.csproj @@ -0,0 +1,13 @@ + + + net9.0 + true + bin\ + false + + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Diagnostics.EventLog/9.0.4/System.Diagnostics.EventLog.csproj b/csharp/ql/test/resources/stubs/System.Diagnostics.EventLog/9.0.4/System.Diagnostics.EventLog.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Diagnostics.EventLog/9.0.4/System.Diagnostics.EventLog.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.IdentityModel.Tokens.Jwt/7.5.0/System.IdentityModel.Tokens.Jwt.cs b/csharp/ql/test/resources/stubs/System.IdentityModel.Tokens.Jwt/7.5.0/System.IdentityModel.Tokens.Jwt.cs new file mode 100644 index 000000000000..ad97899809de --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.IdentityModel.Tokens.Jwt/7.5.0/System.IdentityModel.Tokens.Jwt.cs @@ -0,0 +1,227 @@ +// This file contains auto-generated code. +// Generated from `System.IdentityModel.Tokens.Jwt, Version=7.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35`. +namespace System +{ + namespace IdentityModel + { + namespace Tokens + { + namespace Jwt + { + public static class JsonClaimValueTypes + { + public const string Json = default; + public const string JsonArray = default; + public const string JsonNull = default; + } + public static class JwtConstants + { + public const string DirectKeyUseAlg = default; + public const string HeaderType = default; + public const string HeaderTypeAlt = default; + public const string JsonCompactSerializationRegex = default; + public const string JweCompactSerializationRegex = default; + public const string TokenType = default; + public const string TokenTypeAlt = default; + } + public class JwtHeader : System.Collections.Generic.Dictionary + { + public string Alg { get => throw null; } + public static System.IdentityModel.Tokens.Jwt.JwtHeader Base64UrlDeserialize(string base64UrlEncodedJsonString) => throw null; + public virtual string Base64UrlEncode() => throw null; + public JwtHeader() => throw null; + public JwtHeader(Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials) => throw null; + public JwtHeader(Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials) => throw null; + public JwtHeader(Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, System.Collections.Generic.IDictionary outboundAlgorithmMap) => throw null; + public JwtHeader(Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, System.Collections.Generic.IDictionary outboundAlgorithmMap, string tokenType) => throw null; + public JwtHeader(Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, System.Collections.Generic.IDictionary outboundAlgorithmMap, string tokenType, System.Collections.Generic.IDictionary additionalInnerHeaderClaims) => throw null; + public JwtHeader(Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, System.Collections.Generic.IDictionary outboundAlgorithmMap) => throw null; + public JwtHeader(Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, System.Collections.Generic.IDictionary outboundAlgorithmMap, string tokenType) => throw null; + public JwtHeader(Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, System.Collections.Generic.IDictionary outboundAlgorithmMap, string tokenType, System.Collections.Generic.IDictionary additionalHeaderClaims) => throw null; + public string Cty { get => throw null; } + public string Enc { get => throw null; } + public Microsoft.IdentityModel.Tokens.EncryptingCredentials EncryptingCredentials { get => throw null; } + public string IV { get => throw null; } + public string Kid { get => throw null; } + public virtual string SerializeToJson() => throw null; + public Microsoft.IdentityModel.Tokens.SigningCredentials SigningCredentials { get => throw null; } + public string Typ { get => throw null; } + public string X5c { get => throw null; } + public string X5t { get => throw null; } + public string Zip { get => throw null; } + } + public struct JwtHeaderParameterNames + { + public const string Alg = default; + public const string Apu = default; + public const string Apv = default; + public const string Cty = default; + public const string Enc = default; + public const string Epk = default; + public const string IV = default; + public const string Jku = default; + public const string Jwk = default; + public const string Kid = default; + public const string Typ = default; + public const string X5c = default; + public const string X5t = default; + public const string X5u = default; + public const string Zip = default; + } + public class JwtPayload : System.Collections.Generic.Dictionary + { + public string Acr { get => throw null; } + public string Actort { get => throw null; } + public void AddClaim(System.Security.Claims.Claim claim) => throw null; + public void AddClaims(System.Collections.Generic.IEnumerable claims) => throw null; + public System.Collections.Generic.IList Amr { get => throw null; } + public System.Collections.Generic.IList Aud { get => throw null; } + public int? AuthTime { get => throw null; } + public string Azp { get => throw null; } + public static System.IdentityModel.Tokens.Jwt.JwtPayload Base64UrlDeserialize(string base64UrlEncodedJsonString) => throw null; + public virtual string Base64UrlEncode() => throw null; + public string CHash { get => throw null; } + public virtual System.Collections.Generic.IEnumerable Claims { get => throw null; } + public JwtPayload() => throw null; + public JwtPayload(System.Collections.Generic.IEnumerable claims) => throw null; + public JwtPayload(string issuer, string audience, System.Collections.Generic.IEnumerable claims, System.DateTime? notBefore, System.DateTime? expires) => throw null; + public JwtPayload(string issuer, string audience, System.Collections.Generic.IEnumerable claims, System.DateTime? notBefore, System.DateTime? expires, System.DateTime? issuedAt) => throw null; + public JwtPayload(string issuer, string audience, System.Collections.Generic.IEnumerable claims, System.Collections.Generic.IDictionary claimsCollection, System.DateTime? notBefore, System.DateTime? expires, System.DateTime? issuedAt) => throw null; + public static System.IdentityModel.Tokens.Jwt.JwtPayload Deserialize(string jsonString) => throw null; + public int? Exp { get => throw null; } + public long? Expiration { get => throw null; } + public int? Iat { get => throw null; } + public string Iss { get => throw null; } + public System.DateTime IssuedAt { get => throw null; } + public string Jti { get => throw null; } + public int? Nbf { get => throw null; } + public string Nonce { get => throw null; } + public long? NotBefore { get => throw null; } + public virtual string SerializeToJson() => throw null; + public string Sub { get => throw null; } + public System.DateTime ValidFrom { get => throw null; } + public System.DateTime ValidTo { get => throw null; } + } + public struct JwtRegisteredClaimNames + { + public const string Acr = default; + public const string Actort = default; + public const string Amr = default; + public const string AtHash = default; + public const string Aud = default; + public const string AuthTime = default; + public const string Azp = default; + public const string Birthdate = default; + public const string CHash = default; + public const string Email = default; + public const string Exp = default; + public const string FamilyName = default; + public const string Gender = default; + public const string GivenName = default; + public const string Iat = default; + public const string Iss = default; + public const string Jti = default; + public const string Name = default; + public const string NameId = default; + public const string Nbf = default; + public const string Nonce = default; + public const string Prn = default; + public const string Sid = default; + public const string Sub = default; + public const string Typ = default; + public const string UniqueName = default; + public const string Website = default; + } + public class JwtSecurityToken : Microsoft.IdentityModel.Tokens.SecurityToken + { + public string Actor { get => throw null; } + public System.Collections.Generic.IEnumerable Audiences { get => throw null; } + public System.Collections.Generic.IEnumerable Claims { get => throw null; } + public JwtSecurityToken(string jwtEncodedString) => throw null; + public JwtSecurityToken(System.IdentityModel.Tokens.Jwt.JwtHeader header, System.IdentityModel.Tokens.Jwt.JwtPayload payload, string rawHeader, string rawPayload, string rawSignature) => throw null; + public JwtSecurityToken(System.IdentityModel.Tokens.Jwt.JwtHeader header, System.IdentityModel.Tokens.Jwt.JwtSecurityToken innerToken, string rawHeader, string rawEncryptedKey, string rawInitializationVector, string rawCiphertext, string rawAuthenticationTag) => throw null; + public JwtSecurityToken(System.IdentityModel.Tokens.Jwt.JwtHeader header, System.IdentityModel.Tokens.Jwt.JwtPayload payload) => throw null; + public JwtSecurityToken(string issuer = default(string), string audience = default(string), System.Collections.Generic.IEnumerable claims = default(System.Collections.Generic.IEnumerable), System.DateTime? notBefore = default(System.DateTime?), System.DateTime? expires = default(System.DateTime?), Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials = default(Microsoft.IdentityModel.Tokens.SigningCredentials)) => throw null; + public virtual string EncodedHeader { get => throw null; } + public virtual string EncodedPayload { get => throw null; } + public Microsoft.IdentityModel.Tokens.EncryptingCredentials EncryptingCredentials { get => throw null; } + public System.IdentityModel.Tokens.Jwt.JwtHeader Header { get => throw null; } + public override string Id { get => throw null; } + public System.IdentityModel.Tokens.Jwt.JwtSecurityToken InnerToken { get => throw null; } + public virtual System.DateTime IssuedAt { get => throw null; } + public override string Issuer { get => throw null; } + public System.IdentityModel.Tokens.Jwt.JwtPayload Payload { get => throw null; } + public string RawAuthenticationTag { get => throw null; } + public string RawCiphertext { get => throw null; } + public string RawData { get => throw null; } + public string RawEncryptedKey { get => throw null; } + public string RawHeader { get => throw null; } + public string RawInitializationVector { get => throw null; } + public string RawPayload { get => throw null; } + public string RawSignature { get => throw null; } + public override Microsoft.IdentityModel.Tokens.SecurityKey SecurityKey { get => throw null; } + public string SignatureAlgorithm { get => throw null; } + public Microsoft.IdentityModel.Tokens.SigningCredentials SigningCredentials { get => throw null; } + public override Microsoft.IdentityModel.Tokens.SecurityKey SigningKey { get => throw null; set { } } + public string Subject { get => throw null; } + public override string ToString() => throw null; + public override string UnsafeToString() => throw null; + public override System.DateTime ValidFrom { get => throw null; } + public override System.DateTime ValidTo { get => throw null; } + } + public static class JwtSecurityTokenConverter + { + public static System.IdentityModel.Tokens.Jwt.JwtSecurityToken Convert(Microsoft.IdentityModel.JsonWebTokens.JsonWebToken token) => throw null; + } + public class JwtSecurityTokenHandler : Microsoft.IdentityModel.Tokens.SecurityTokenHandler + { + public override bool CanReadToken(string token) => throw null; + public override bool CanValidateToken { get => throw null; } + public override bool CanWriteToken { get => throw null; } + protected virtual string CreateActorValue(System.Security.Claims.ClaimsIdentity actor) => throw null; + protected virtual System.Security.Claims.ClaimsIdentity CreateClaimsIdentity(System.IdentityModel.Tokens.Jwt.JwtSecurityToken jwtToken, string issuer, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public virtual string CreateEncodedJwt(Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor tokenDescriptor) => throw null; + public virtual string CreateEncodedJwt(string issuer, string audience, System.Security.Claims.ClaimsIdentity subject, System.DateTime? notBefore, System.DateTime? expires, System.DateTime? issuedAt, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials) => throw null; + public virtual string CreateEncodedJwt(string issuer, string audience, System.Security.Claims.ClaimsIdentity subject, System.DateTime? notBefore, System.DateTime? expires, System.DateTime? issuedAt, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials) => throw null; + public virtual string CreateEncodedJwt(string issuer, string audience, System.Security.Claims.ClaimsIdentity subject, System.DateTime? notBefore, System.DateTime? expires, System.DateTime? issuedAt, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, System.Collections.Generic.IDictionary claimCollection) => throw null; + public virtual System.IdentityModel.Tokens.Jwt.JwtSecurityToken CreateJwtSecurityToken(Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor tokenDescriptor) => throw null; + public virtual System.IdentityModel.Tokens.Jwt.JwtSecurityToken CreateJwtSecurityToken(string issuer, string audience, System.Security.Claims.ClaimsIdentity subject, System.DateTime? notBefore, System.DateTime? expires, System.DateTime? issuedAt, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials) => throw null; + public virtual System.IdentityModel.Tokens.Jwt.JwtSecurityToken CreateJwtSecurityToken(string issuer, string audience, System.Security.Claims.ClaimsIdentity subject, System.DateTime? notBefore, System.DateTime? expires, System.DateTime? issuedAt, Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials, Microsoft.IdentityModel.Tokens.EncryptingCredentials encryptingCredentials, System.Collections.Generic.IDictionary claimCollection) => throw null; + public virtual System.IdentityModel.Tokens.Jwt.JwtSecurityToken CreateJwtSecurityToken(string issuer = default(string), string audience = default(string), System.Security.Claims.ClaimsIdentity subject = default(System.Security.Claims.ClaimsIdentity), System.DateTime? notBefore = default(System.DateTime?), System.DateTime? expires = default(System.DateTime?), System.DateTime? issuedAt = default(System.DateTime?), Microsoft.IdentityModel.Tokens.SigningCredentials signingCredentials = default(Microsoft.IdentityModel.Tokens.SigningCredentials)) => throw null; + public override Microsoft.IdentityModel.Tokens.SecurityToken CreateToken(Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor tokenDescriptor) => throw null; + public JwtSecurityTokenHandler() => throw null; + protected string DecryptToken(System.IdentityModel.Tokens.Jwt.JwtSecurityToken jwtToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public static System.Collections.Generic.ISet DefaultInboundClaimFilter; + public static System.Collections.Generic.IDictionary DefaultInboundClaimTypeMap; + public static bool DefaultMapInboundClaims; + public static System.Collections.Generic.IDictionary DefaultOutboundAlgorithmMap; + public static System.Collections.Generic.IDictionary DefaultOutboundClaimTypeMap; + public System.Collections.Generic.ISet InboundClaimFilter { get => throw null; set { } } + public System.Collections.Generic.IDictionary InboundClaimTypeMap { get => throw null; set { } } + public static string JsonClaimTypeProperty { get => throw null; set { } } + public bool MapInboundClaims { get => throw null; set { } } + public System.Collections.Generic.IDictionary OutboundAlgorithmMap { get => throw null; } + public System.Collections.Generic.IDictionary OutboundClaimTypeMap { get => throw null; set { } } + public System.IdentityModel.Tokens.Jwt.JwtSecurityToken ReadJwtToken(string token) => throw null; + public override Microsoft.IdentityModel.Tokens.SecurityToken ReadToken(string token) => throw null; + public override Microsoft.IdentityModel.Tokens.SecurityToken ReadToken(System.Xml.XmlReader reader, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + protected virtual Microsoft.IdentityModel.Tokens.SecurityKey ResolveIssuerSigningKey(string token, System.IdentityModel.Tokens.Jwt.JwtSecurityToken jwtToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + protected virtual Microsoft.IdentityModel.Tokens.SecurityKey ResolveTokenDecryptionKey(string token, System.IdentityModel.Tokens.Jwt.JwtSecurityToken jwtToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public static string ShortClaimTypeProperty { get => throw null; set { } } + public override System.Type TokenType { get => throw null; } + protected virtual void ValidateAudience(System.Collections.Generic.IEnumerable audiences, System.IdentityModel.Tokens.Jwt.JwtSecurityToken jwtToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + protected virtual string ValidateIssuer(string issuer, System.IdentityModel.Tokens.Jwt.JwtSecurityToken jwtToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + protected virtual void ValidateIssuerSecurityKey(Microsoft.IdentityModel.Tokens.SecurityKey key, System.IdentityModel.Tokens.Jwt.JwtSecurityToken securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + protected virtual void ValidateLifetime(System.DateTime? notBefore, System.DateTime? expires, System.IdentityModel.Tokens.Jwt.JwtSecurityToken jwtToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + protected virtual System.IdentityModel.Tokens.Jwt.JwtSecurityToken ValidateSignature(string token, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public override System.Security.Claims.ClaimsPrincipal ValidateToken(string token, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters, out Microsoft.IdentityModel.Tokens.SecurityToken validatedToken) => throw null; + public override System.Threading.Tasks.Task ValidateTokenAsync(string token, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + protected System.Security.Claims.ClaimsPrincipal ValidateTokenPayload(System.IdentityModel.Tokens.Jwt.JwtSecurityToken jwtToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + protected virtual void ValidateTokenReplay(System.DateTime? expires, string securityToken, Microsoft.IdentityModel.Tokens.TokenValidationParameters validationParameters) => throw null; + public override string WriteToken(Microsoft.IdentityModel.Tokens.SecurityToken token) => throw null; + public override void WriteToken(System.Xml.XmlWriter writer, Microsoft.IdentityModel.Tokens.SecurityToken token) => throw null; + } + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/System.IdentityModel.Tokens.Jwt/7.5.0/System.IdentityModel.Tokens.Jwt.csproj b/csharp/ql/test/resources/stubs/System.IdentityModel.Tokens.Jwt/7.5.0/System.IdentityModel.Tokens.Jwt.csproj new file mode 100644 index 000000000000..2f5d2330dc95 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.IdentityModel.Tokens.Jwt/7.5.0/System.IdentityModel.Tokens.Jwt.csproj @@ -0,0 +1,14 @@ + + + net9.0 + true + bin\ + false + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Memory.Data/1.0.2/System.Memory.Data.cs b/csharp/ql/test/resources/stubs/System.Memory.Data/1.0.2/System.Memory.Data.cs new file mode 100644 index 000000000000..123c87b4e1c6 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Memory.Data/1.0.2/System.Memory.Data.cs @@ -0,0 +1,27 @@ +// This file contains auto-generated code. +// Generated from `System.Memory.Data, Version=1.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51`. +namespace System +{ + public class BinaryData + { + public BinaryData(byte[] data) => throw null; + public BinaryData(object jsonSerializable, System.Text.Json.JsonSerializerOptions options = default(System.Text.Json.JsonSerializerOptions), System.Type type = default(System.Type)) => throw null; + public BinaryData(System.ReadOnlyMemory data) => throw null; + public BinaryData(string data) => throw null; + public override bool Equals(object obj) => throw null; + public static System.BinaryData FromBytes(System.ReadOnlyMemory data) => throw null; + public static System.BinaryData FromBytes(byte[] data) => throw null; + public static System.BinaryData FromObjectAsJson(T jsonSerializable, System.Text.Json.JsonSerializerOptions options = default(System.Text.Json.JsonSerializerOptions)) => throw null; + public static System.BinaryData FromStream(System.IO.Stream stream) => throw null; + public static System.Threading.Tasks.Task FromStreamAsync(System.IO.Stream stream, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) => throw null; + public static System.BinaryData FromString(string data) => throw null; + public override int GetHashCode() => throw null; + public static implicit operator System.ReadOnlyMemory(System.BinaryData data) => throw null; + public static implicit operator System.ReadOnlySpan(System.BinaryData data) => throw null; + public byte[] ToArray() => throw null; + public System.ReadOnlyMemory ToMemory() => throw null; + public T ToObjectFromJson(System.Text.Json.JsonSerializerOptions options = default(System.Text.Json.JsonSerializerOptions)) => throw null; + public System.IO.Stream ToStream() => throw null; + public override string ToString() => throw null; + } +} diff --git a/csharp/ql/test/resources/stubs/System.Memory.Data/1.0.2/System.Memory.Data.csproj b/csharp/ql/test/resources/stubs/System.Memory.Data/1.0.2/System.Memory.Data.csproj new file mode 100644 index 000000000000..c444f79ac6f3 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Memory.Data/1.0.2/System.Memory.Data.csproj @@ -0,0 +1,14 @@ + + + net9.0 + true + bin\ + false + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Memory/4.5.4/System.Memory.csproj b/csharp/ql/test/resources/stubs/System.Memory/4.5.4/System.Memory.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Memory/4.5.4/System.Memory.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Numerics.Vectors/4.5.0/System.Numerics.Vectors.csproj b/csharp/ql/test/resources/stubs/System.Numerics.Vectors/4.5.0/System.Numerics.Vectors.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Numerics.Vectors/4.5.0/System.Numerics.Vectors.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Runtime.CompilerServices.Unsafe/6.0.0/System.Runtime.CompilerServices.Unsafe.csproj b/csharp/ql/test/resources/stubs/System.Runtime.CompilerServices.Unsafe/6.0.0/System.Runtime.CompilerServices.Unsafe.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Runtime.CompilerServices.Unsafe/6.0.0/System.Runtime.CompilerServices.Unsafe.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Security.Cryptography.Pkcs/9.0.4/System.Security.Cryptography.Pkcs.cs b/csharp/ql/test/resources/stubs/System.Security.Cryptography.Pkcs/9.0.4/System.Security.Cryptography.Pkcs.cs new file mode 100644 index 000000000000..4dcb51a937f6 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Security.Cryptography.Pkcs/9.0.4/System.Security.Cryptography.Pkcs.cs @@ -0,0 +1,503 @@ +// This file contains auto-generated code. +// Generated from `System.Security.Cryptography.Pkcs, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a`. +namespace System +{ + namespace Security + { + namespace Cryptography + { + public sealed class CryptographicAttributeObject + { + public CryptographicAttributeObject(System.Security.Cryptography.Oid oid) => throw null; + public CryptographicAttributeObject(System.Security.Cryptography.Oid oid, System.Security.Cryptography.AsnEncodedDataCollection values) => throw null; + public System.Security.Cryptography.Oid Oid { get => throw null; } + public System.Security.Cryptography.AsnEncodedDataCollection Values { get => throw null; } + } + public sealed class CryptographicAttributeObjectCollection : System.Collections.ICollection, System.Collections.IEnumerable + { + public int Add(System.Security.Cryptography.AsnEncodedData asnEncodedData) => throw null; + public int Add(System.Security.Cryptography.CryptographicAttributeObject attribute) => throw null; + void System.Collections.ICollection.CopyTo(System.Array array, int index) => throw null; + public void CopyTo(System.Security.Cryptography.CryptographicAttributeObject[] array, int index) => throw null; + public int Count { get => throw null; } + public CryptographicAttributeObjectCollection() => throw null; + public CryptographicAttributeObjectCollection(System.Security.Cryptography.CryptographicAttributeObject attribute) => throw null; + public System.Security.Cryptography.CryptographicAttributeObjectEnumerator GetEnumerator() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public bool IsSynchronized { get => throw null; } + public void Remove(System.Security.Cryptography.CryptographicAttributeObject attribute) => throw null; + public object SyncRoot { get => throw null; } + public System.Security.Cryptography.CryptographicAttributeObject this[int index] { get => throw null; } + } + public sealed class CryptographicAttributeObjectEnumerator : System.Collections.IEnumerator + { + public System.Security.Cryptography.CryptographicAttributeObject Current { get => throw null; } + object System.Collections.IEnumerator.Current { get => throw null; } + public bool MoveNext() => throw null; + public void Reset() => throw null; + } + namespace Pkcs + { + public sealed class AlgorithmIdentifier + { + public AlgorithmIdentifier() => throw null; + public AlgorithmIdentifier(System.Security.Cryptography.Oid oid) => throw null; + public AlgorithmIdentifier(System.Security.Cryptography.Oid oid, int keyLength) => throw null; + public int KeyLength { get => throw null; set { } } + public System.Security.Cryptography.Oid Oid { get => throw null; set { } } + public byte[] Parameters { get => throw null; set { } } + } + public sealed class CmsRecipient + { + public System.Security.Cryptography.X509Certificates.X509Certificate2 Certificate { get => throw null; } + public CmsRecipient(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) => throw null; + public CmsRecipient(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, System.Security.Cryptography.RSAEncryptionPadding rsaEncryptionPadding) => throw null; + public CmsRecipient(System.Security.Cryptography.Pkcs.SubjectIdentifierType recipientIdentifierType, System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, System.Security.Cryptography.RSAEncryptionPadding rsaEncryptionPadding) => throw null; + public CmsRecipient(System.Security.Cryptography.Pkcs.SubjectIdentifierType recipientIdentifierType, System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) => throw null; + public System.Security.Cryptography.Pkcs.SubjectIdentifierType RecipientIdentifierType { get => throw null; } + public System.Security.Cryptography.RSAEncryptionPadding RSAEncryptionPadding { get => throw null; } + } + public sealed class CmsRecipientCollection : System.Collections.ICollection, System.Collections.IEnumerable + { + public int Add(System.Security.Cryptography.Pkcs.CmsRecipient recipient) => throw null; + public void CopyTo(System.Array array, int index) => throw null; + public void CopyTo(System.Security.Cryptography.Pkcs.CmsRecipient[] array, int index) => throw null; + public int Count { get => throw null; } + public CmsRecipientCollection() => throw null; + public CmsRecipientCollection(System.Security.Cryptography.Pkcs.CmsRecipient recipient) => throw null; + public CmsRecipientCollection(System.Security.Cryptography.Pkcs.SubjectIdentifierType recipientIdentifierType, System.Security.Cryptography.X509Certificates.X509Certificate2Collection certificates) => throw null; + public System.Security.Cryptography.Pkcs.CmsRecipientEnumerator GetEnumerator() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public bool IsSynchronized { get => throw null; } + public void Remove(System.Security.Cryptography.Pkcs.CmsRecipient recipient) => throw null; + public object SyncRoot { get => throw null; } + public System.Security.Cryptography.Pkcs.CmsRecipient this[int index] { get => throw null; } + } + public sealed class CmsRecipientEnumerator : System.Collections.IEnumerator + { + public System.Security.Cryptography.Pkcs.CmsRecipient Current { get => throw null; } + object System.Collections.IEnumerator.Current { get => throw null; } + public bool MoveNext() => throw null; + public void Reset() => throw null; + } + public sealed class CmsSigner + { + public System.Security.Cryptography.X509Certificates.X509Certificate2 Certificate { get => throw null; set { } } + public System.Security.Cryptography.X509Certificates.X509Certificate2Collection Certificates { get => throw null; } + public CmsSigner() => throw null; + public CmsSigner(System.Security.Cryptography.Pkcs.SubjectIdentifierType signerIdentifierType) => throw null; + public CmsSigner(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) => throw null; + public CmsSigner(System.Security.Cryptography.CspParameters parameters) => throw null; + public CmsSigner(System.Security.Cryptography.Pkcs.SubjectIdentifierType signerIdentifierType, System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) => throw null; + public CmsSigner(System.Security.Cryptography.Pkcs.SubjectIdentifierType signerIdentifierType, System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, System.Security.Cryptography.AsymmetricAlgorithm privateKey) => throw null; + public CmsSigner(System.Security.Cryptography.Pkcs.SubjectIdentifierType signerIdentifierType, System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, System.Security.Cryptography.RSA privateKey, System.Security.Cryptography.RSASignaturePadding signaturePadding) => throw null; + public System.Security.Cryptography.Oid DigestAlgorithm { get => throw null; set { } } + public System.Security.Cryptography.X509Certificates.X509IncludeOption IncludeOption { get => throw null; set { } } + public System.Security.Cryptography.AsymmetricAlgorithm PrivateKey { get => throw null; set { } } + public System.Security.Cryptography.RSASignaturePadding SignaturePadding { get => throw null; set { } } + public System.Security.Cryptography.CryptographicAttributeObjectCollection SignedAttributes { get => throw null; } + public System.Security.Cryptography.Pkcs.SubjectIdentifierType SignerIdentifierType { get => throw null; set { } } + public System.Security.Cryptography.CryptographicAttributeObjectCollection UnsignedAttributes { get => throw null; } + } + public sealed class ContentInfo + { + public byte[] Content { get => throw null; } + public System.Security.Cryptography.Oid ContentType { get => throw null; } + public ContentInfo(byte[] content) => throw null; + public ContentInfo(System.Security.Cryptography.Oid contentType, byte[] content) => throw null; + public static System.Security.Cryptography.Oid GetContentType(byte[] encodedMessage) => throw null; + public static System.Security.Cryptography.Oid GetContentType(System.ReadOnlySpan encodedMessage) => throw null; + } + public sealed class EnvelopedCms + { + public System.Security.Cryptography.X509Certificates.X509Certificate2Collection Certificates { get => throw null; } + public System.Security.Cryptography.Pkcs.AlgorithmIdentifier ContentEncryptionAlgorithm { get => throw null; } + public System.Security.Cryptography.Pkcs.ContentInfo ContentInfo { get => throw null; } + public EnvelopedCms() => throw null; + public EnvelopedCms(System.Security.Cryptography.Pkcs.ContentInfo contentInfo) => throw null; + public EnvelopedCms(System.Security.Cryptography.Pkcs.ContentInfo contentInfo, System.Security.Cryptography.Pkcs.AlgorithmIdentifier encryptionAlgorithm) => throw null; + public void Decode(byte[] encodedMessage) => throw null; + public void Decode(System.ReadOnlySpan encodedMessage) => throw null; + public void Decrypt() => throw null; + public void Decrypt(System.Security.Cryptography.Pkcs.RecipientInfo recipientInfo) => throw null; + public void Decrypt(System.Security.Cryptography.Pkcs.RecipientInfo recipientInfo, System.Security.Cryptography.X509Certificates.X509Certificate2Collection extraStore) => throw null; + public void Decrypt(System.Security.Cryptography.X509Certificates.X509Certificate2Collection extraStore) => throw null; + public void Decrypt(System.Security.Cryptography.Pkcs.RecipientInfo recipientInfo, System.Security.Cryptography.AsymmetricAlgorithm privateKey) => throw null; + public byte[] Encode() => throw null; + public void Encrypt(System.Security.Cryptography.Pkcs.CmsRecipient recipient) => throw null; + public void Encrypt(System.Security.Cryptography.Pkcs.CmsRecipientCollection recipients) => throw null; + public System.Security.Cryptography.Pkcs.RecipientInfoCollection RecipientInfos { get => throw null; } + public System.Security.Cryptography.CryptographicAttributeObjectCollection UnprotectedAttributes { get => throw null; } + public int Version { get => throw null; } + } + public sealed class KeyAgreeRecipientInfo : System.Security.Cryptography.Pkcs.RecipientInfo + { + public System.DateTime Date { get => throw null; } + public override byte[] EncryptedKey { get => throw null; } + public override System.Security.Cryptography.Pkcs.AlgorithmIdentifier KeyEncryptionAlgorithm { get => throw null; } + public System.Security.Cryptography.Pkcs.SubjectIdentifierOrKey OriginatorIdentifierOrKey { get => throw null; } + public System.Security.Cryptography.CryptographicAttributeObject OtherKeyAttribute { get => throw null; } + public override System.Security.Cryptography.Pkcs.SubjectIdentifier RecipientIdentifier { get => throw null; } + public override int Version { get => throw null; } + } + public sealed class KeyTransRecipientInfo : System.Security.Cryptography.Pkcs.RecipientInfo + { + public override byte[] EncryptedKey { get => throw null; } + public override System.Security.Cryptography.Pkcs.AlgorithmIdentifier KeyEncryptionAlgorithm { get => throw null; } + public override System.Security.Cryptography.Pkcs.SubjectIdentifier RecipientIdentifier { get => throw null; } + public override int Version { get => throw null; } + } + public sealed class Pkcs12Builder + { + public void AddSafeContentsEncrypted(System.Security.Cryptography.Pkcs.Pkcs12SafeContents safeContents, byte[] passwordBytes, System.Security.Cryptography.PbeParameters pbeParameters) => throw null; + public void AddSafeContentsEncrypted(System.Security.Cryptography.Pkcs.Pkcs12SafeContents safeContents, System.ReadOnlySpan passwordBytes, System.Security.Cryptography.PbeParameters pbeParameters) => throw null; + public void AddSafeContentsEncrypted(System.Security.Cryptography.Pkcs.Pkcs12SafeContents safeContents, string password, System.Security.Cryptography.PbeParameters pbeParameters) => throw null; + public void AddSafeContentsEncrypted(System.Security.Cryptography.Pkcs.Pkcs12SafeContents safeContents, System.ReadOnlySpan password, System.Security.Cryptography.PbeParameters pbeParameters) => throw null; + public void AddSafeContentsUnencrypted(System.Security.Cryptography.Pkcs.Pkcs12SafeContents safeContents) => throw null; + public Pkcs12Builder() => throw null; + public byte[] Encode() => throw null; + public bool IsSealed { get => throw null; } + public void SealWithMac(string password, System.Security.Cryptography.HashAlgorithmName hashAlgorithm, int iterationCount) => throw null; + public void SealWithMac(System.ReadOnlySpan password, System.Security.Cryptography.HashAlgorithmName hashAlgorithm, int iterationCount) => throw null; + public void SealWithoutIntegrity() => throw null; + public bool TryEncode(System.Span destination, out int bytesWritten) => throw null; + } + public sealed class Pkcs12CertBag : System.Security.Cryptography.Pkcs.Pkcs12SafeBag + { + public Pkcs12CertBag(System.Security.Cryptography.Oid certificateType, System.ReadOnlyMemory encodedCertificate) : base(default(string), default(System.ReadOnlyMemory), default(bool)) => throw null; + public System.ReadOnlyMemory EncodedCertificate { get => throw null; } + public System.Security.Cryptography.X509Certificates.X509Certificate2 GetCertificate() => throw null; + public System.Security.Cryptography.Oid GetCertificateType() => throw null; + public bool IsX509Certificate { get => throw null; } + } + public enum Pkcs12ConfidentialityMode + { + Unknown = 0, + None = 1, + Password = 2, + PublicKey = 3, + } + public sealed class Pkcs12Info + { + public System.Collections.ObjectModel.ReadOnlyCollection AuthenticatedSafe { get => throw null; } + public static System.Security.Cryptography.Pkcs.Pkcs12Info Decode(System.ReadOnlyMemory encodedBytes, out int bytesConsumed, bool skipCopy = default(bool)) => throw null; + public System.Security.Cryptography.Pkcs.Pkcs12IntegrityMode IntegrityMode { get => throw null; } + public bool VerifyMac(string password) => throw null; + public bool VerifyMac(System.ReadOnlySpan password) => throw null; + } + public enum Pkcs12IntegrityMode + { + Unknown = 0, + None = 1, + Password = 2, + PublicKey = 3, + } + public sealed class Pkcs12KeyBag : System.Security.Cryptography.Pkcs.Pkcs12SafeBag + { + public Pkcs12KeyBag(System.ReadOnlyMemory pkcs8PrivateKey, bool skipCopy = default(bool)) : base(default(string), default(System.ReadOnlyMemory), default(bool)) => throw null; + public System.ReadOnlyMemory Pkcs8PrivateKey { get => throw null; } + } + public abstract class Pkcs12SafeBag + { + public System.Security.Cryptography.CryptographicAttributeObjectCollection Attributes { get => throw null; } + protected Pkcs12SafeBag(string bagIdValue, System.ReadOnlyMemory encodedBagValue, bool skipCopy = default(bool)) => throw null; + public byte[] Encode() => throw null; + public System.ReadOnlyMemory EncodedBagValue { get => throw null; } + public System.Security.Cryptography.Oid GetBagId() => throw null; + public bool TryEncode(System.Span destination, out int bytesWritten) => throw null; + } + public sealed class Pkcs12SafeContents + { + public System.Security.Cryptography.Pkcs.Pkcs12CertBag AddCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) => throw null; + public System.Security.Cryptography.Pkcs.Pkcs12KeyBag AddKeyUnencrypted(System.Security.Cryptography.AsymmetricAlgorithm key) => throw null; + public System.Security.Cryptography.Pkcs.Pkcs12SafeContentsBag AddNestedContents(System.Security.Cryptography.Pkcs.Pkcs12SafeContents safeContents) => throw null; + public void AddSafeBag(System.Security.Cryptography.Pkcs.Pkcs12SafeBag safeBag) => throw null; + public System.Security.Cryptography.Pkcs.Pkcs12SecretBag AddSecret(System.Security.Cryptography.Oid secretType, System.ReadOnlyMemory secretValue) => throw null; + public System.Security.Cryptography.Pkcs.Pkcs12ShroudedKeyBag AddShroudedKey(System.Security.Cryptography.AsymmetricAlgorithm key, byte[] passwordBytes, System.Security.Cryptography.PbeParameters pbeParameters) => throw null; + public System.Security.Cryptography.Pkcs.Pkcs12ShroudedKeyBag AddShroudedKey(System.Security.Cryptography.AsymmetricAlgorithm key, System.ReadOnlySpan passwordBytes, System.Security.Cryptography.PbeParameters pbeParameters) => throw null; + public System.Security.Cryptography.Pkcs.Pkcs12ShroudedKeyBag AddShroudedKey(System.Security.Cryptography.AsymmetricAlgorithm key, string password, System.Security.Cryptography.PbeParameters pbeParameters) => throw null; + public System.Security.Cryptography.Pkcs.Pkcs12ShroudedKeyBag AddShroudedKey(System.Security.Cryptography.AsymmetricAlgorithm key, System.ReadOnlySpan password, System.Security.Cryptography.PbeParameters pbeParameters) => throw null; + public System.Security.Cryptography.Pkcs.Pkcs12ConfidentialityMode ConfidentialityMode { get => throw null; } + public Pkcs12SafeContents() => throw null; + public void Decrypt(byte[] passwordBytes) => throw null; + public void Decrypt(System.ReadOnlySpan passwordBytes) => throw null; + public void Decrypt(string password) => throw null; + public void Decrypt(System.ReadOnlySpan password) => throw null; + public System.Collections.Generic.IEnumerable GetBags() => throw null; + public bool IsReadOnly { get => throw null; } + } + public sealed class Pkcs12SafeContentsBag : System.Security.Cryptography.Pkcs.Pkcs12SafeBag + { + public System.Security.Cryptography.Pkcs.Pkcs12SafeContents SafeContents { get => throw null; } + internal Pkcs12SafeContentsBag() : base(default(string), default(System.ReadOnlyMemory), default(bool)) { } + } + public sealed class Pkcs12SecretBag : System.Security.Cryptography.Pkcs.Pkcs12SafeBag + { + public System.Security.Cryptography.Oid GetSecretType() => throw null; + public System.ReadOnlyMemory SecretValue { get => throw null; } + internal Pkcs12SecretBag() : base(default(string), default(System.ReadOnlyMemory), default(bool)) { } + } + public sealed class Pkcs12ShroudedKeyBag : System.Security.Cryptography.Pkcs.Pkcs12SafeBag + { + public Pkcs12ShroudedKeyBag(System.ReadOnlyMemory encryptedPkcs8PrivateKey, bool skipCopy = default(bool)) : base(default(string), default(System.ReadOnlyMemory), default(bool)) => throw null; + public System.ReadOnlyMemory EncryptedPkcs8PrivateKey { get => throw null; } + } + public sealed class Pkcs8PrivateKeyInfo + { + public System.Security.Cryptography.Oid AlgorithmId { get => throw null; } + public System.ReadOnlyMemory? AlgorithmParameters { get => throw null; } + public System.Security.Cryptography.CryptographicAttributeObjectCollection Attributes { get => throw null; } + public static System.Security.Cryptography.Pkcs.Pkcs8PrivateKeyInfo Create(System.Security.Cryptography.AsymmetricAlgorithm privateKey) => throw null; + public Pkcs8PrivateKeyInfo(System.Security.Cryptography.Oid algorithmId, System.ReadOnlyMemory? algorithmParameters, System.ReadOnlyMemory privateKey, bool skipCopies = default(bool)) => throw null; + public static System.Security.Cryptography.Pkcs.Pkcs8PrivateKeyInfo Decode(System.ReadOnlyMemory source, out int bytesRead, bool skipCopy = default(bool)) => throw null; + public static System.Security.Cryptography.Pkcs.Pkcs8PrivateKeyInfo DecryptAndDecode(System.ReadOnlySpan password, System.ReadOnlyMemory source, out int bytesRead) => throw null; + public static System.Security.Cryptography.Pkcs.Pkcs8PrivateKeyInfo DecryptAndDecode(System.ReadOnlySpan passwordBytes, System.ReadOnlyMemory source, out int bytesRead) => throw null; + public byte[] Encode() => throw null; + public byte[] Encrypt(System.ReadOnlySpan password, System.Security.Cryptography.PbeParameters pbeParameters) => throw null; + public byte[] Encrypt(System.ReadOnlySpan passwordBytes, System.Security.Cryptography.PbeParameters pbeParameters) => throw null; + public System.ReadOnlyMemory PrivateKeyBytes { get => throw null; } + public bool TryEncode(System.Span destination, out int bytesWritten) => throw null; + public bool TryEncrypt(System.ReadOnlySpan password, System.Security.Cryptography.PbeParameters pbeParameters, System.Span destination, out int bytesWritten) => throw null; + public bool TryEncrypt(System.ReadOnlySpan passwordBytes, System.Security.Cryptography.PbeParameters pbeParameters, System.Span destination, out int bytesWritten) => throw null; + } + public class Pkcs9AttributeObject : System.Security.Cryptography.AsnEncodedData + { + public override void CopyFrom(System.Security.Cryptography.AsnEncodedData asnEncodedData) => throw null; + public Pkcs9AttributeObject() => throw null; + public Pkcs9AttributeObject(string oid, byte[] encodedData) => throw null; + public Pkcs9AttributeObject(System.Security.Cryptography.Oid oid, byte[] encodedData) => throw null; + public Pkcs9AttributeObject(System.Security.Cryptography.AsnEncodedData asnEncodedData) => throw null; + public System.Security.Cryptography.Oid Oid { get => throw null; } + } + public sealed class Pkcs9ContentType : System.Security.Cryptography.Pkcs.Pkcs9AttributeObject + { + public System.Security.Cryptography.Oid ContentType { get => throw null; } + public override void CopyFrom(System.Security.Cryptography.AsnEncodedData asnEncodedData) => throw null; + public Pkcs9ContentType() => throw null; + } + public sealed class Pkcs9DocumentDescription : System.Security.Cryptography.Pkcs.Pkcs9AttributeObject + { + public override void CopyFrom(System.Security.Cryptography.AsnEncodedData asnEncodedData) => throw null; + public Pkcs9DocumentDescription() => throw null; + public Pkcs9DocumentDescription(string documentDescription) => throw null; + public Pkcs9DocumentDescription(byte[] encodedDocumentDescription) => throw null; + public string DocumentDescription { get => throw null; } + } + public sealed class Pkcs9DocumentName : System.Security.Cryptography.Pkcs.Pkcs9AttributeObject + { + public override void CopyFrom(System.Security.Cryptography.AsnEncodedData asnEncodedData) => throw null; + public Pkcs9DocumentName() => throw null; + public Pkcs9DocumentName(string documentName) => throw null; + public Pkcs9DocumentName(byte[] encodedDocumentName) => throw null; + public string DocumentName { get => throw null; } + } + public sealed class Pkcs9LocalKeyId : System.Security.Cryptography.Pkcs.Pkcs9AttributeObject + { + public override void CopyFrom(System.Security.Cryptography.AsnEncodedData asnEncodedData) => throw null; + public Pkcs9LocalKeyId() => throw null; + public Pkcs9LocalKeyId(byte[] keyId) => throw null; + public Pkcs9LocalKeyId(System.ReadOnlySpan keyId) => throw null; + public System.ReadOnlyMemory KeyId { get => throw null; } + } + public sealed class Pkcs9MessageDigest : System.Security.Cryptography.Pkcs.Pkcs9AttributeObject + { + public override void CopyFrom(System.Security.Cryptography.AsnEncodedData asnEncodedData) => throw null; + public Pkcs9MessageDigest() => throw null; + public byte[] MessageDigest { get => throw null; } + } + public sealed class Pkcs9SigningTime : System.Security.Cryptography.Pkcs.Pkcs9AttributeObject + { + public override void CopyFrom(System.Security.Cryptography.AsnEncodedData asnEncodedData) => throw null; + public Pkcs9SigningTime() => throw null; + public Pkcs9SigningTime(System.DateTime signingTime) => throw null; + public Pkcs9SigningTime(byte[] encodedSigningTime) => throw null; + public System.DateTime SigningTime { get => throw null; } + } + public sealed class PublicKeyInfo + { + public System.Security.Cryptography.Pkcs.AlgorithmIdentifier Algorithm { get => throw null; } + public byte[] KeyValue { get => throw null; } + } + public abstract class RecipientInfo + { + public abstract byte[] EncryptedKey { get; } + public abstract System.Security.Cryptography.Pkcs.AlgorithmIdentifier KeyEncryptionAlgorithm { get; } + public abstract System.Security.Cryptography.Pkcs.SubjectIdentifier RecipientIdentifier { get; } + public System.Security.Cryptography.Pkcs.RecipientInfoType Type { get => throw null; } + public abstract int Version { get; } + } + public sealed class RecipientInfoCollection : System.Collections.ICollection, System.Collections.IEnumerable + { + public void CopyTo(System.Array array, int index) => throw null; + public void CopyTo(System.Security.Cryptography.Pkcs.RecipientInfo[] array, int index) => throw null; + public int Count { get => throw null; } + public System.Security.Cryptography.Pkcs.RecipientInfoEnumerator GetEnumerator() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public bool IsSynchronized { get => throw null; } + public object SyncRoot { get => throw null; } + public System.Security.Cryptography.Pkcs.RecipientInfo this[int index] { get => throw null; } + } + public sealed class RecipientInfoEnumerator : System.Collections.IEnumerator + { + public System.Security.Cryptography.Pkcs.RecipientInfo Current { get => throw null; } + object System.Collections.IEnumerator.Current { get => throw null; } + public bool MoveNext() => throw null; + public void Reset() => throw null; + } + public enum RecipientInfoType + { + Unknown = 0, + KeyTransport = 1, + KeyAgreement = 2, + } + public sealed class Rfc3161TimestampRequest + { + public static System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest CreateFromData(System.ReadOnlySpan data, System.Security.Cryptography.HashAlgorithmName hashAlgorithm, System.Security.Cryptography.Oid requestedPolicyId = default(System.Security.Cryptography.Oid), System.ReadOnlyMemory? nonce = default(System.ReadOnlyMemory?), bool requestSignerCertificates = default(bool), System.Security.Cryptography.X509Certificates.X509ExtensionCollection extensions = default(System.Security.Cryptography.X509Certificates.X509ExtensionCollection)) => throw null; + public static System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest CreateFromHash(System.ReadOnlyMemory hash, System.Security.Cryptography.HashAlgorithmName hashAlgorithm, System.Security.Cryptography.Oid requestedPolicyId = default(System.Security.Cryptography.Oid), System.ReadOnlyMemory? nonce = default(System.ReadOnlyMemory?), bool requestSignerCertificates = default(bool), System.Security.Cryptography.X509Certificates.X509ExtensionCollection extensions = default(System.Security.Cryptography.X509Certificates.X509ExtensionCollection)) => throw null; + public static System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest CreateFromHash(System.ReadOnlyMemory hash, System.Security.Cryptography.Oid hashAlgorithmId, System.Security.Cryptography.Oid requestedPolicyId = default(System.Security.Cryptography.Oid), System.ReadOnlyMemory? nonce = default(System.ReadOnlyMemory?), bool requestSignerCertificates = default(bool), System.Security.Cryptography.X509Certificates.X509ExtensionCollection extensions = default(System.Security.Cryptography.X509Certificates.X509ExtensionCollection)) => throw null; + public static System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest CreateFromSignerInfo(System.Security.Cryptography.Pkcs.SignerInfo signerInfo, System.Security.Cryptography.HashAlgorithmName hashAlgorithm, System.Security.Cryptography.Oid requestedPolicyId = default(System.Security.Cryptography.Oid), System.ReadOnlyMemory? nonce = default(System.ReadOnlyMemory?), bool requestSignerCertificates = default(bool), System.Security.Cryptography.X509Certificates.X509ExtensionCollection extensions = default(System.Security.Cryptography.X509Certificates.X509ExtensionCollection)) => throw null; + public byte[] Encode() => throw null; + public System.Security.Cryptography.X509Certificates.X509ExtensionCollection GetExtensions() => throw null; + public System.ReadOnlyMemory GetMessageHash() => throw null; + public System.ReadOnlyMemory? GetNonce() => throw null; + public bool HasExtensions { get => throw null; } + public System.Security.Cryptography.Oid HashAlgorithmId { get => throw null; } + public System.Security.Cryptography.Pkcs.Rfc3161TimestampToken ProcessResponse(System.ReadOnlyMemory responseBytes, out int bytesConsumed) => throw null; + public System.Security.Cryptography.Oid RequestedPolicyId { get => throw null; } + public bool RequestSignerCertificate { get => throw null; } + public static bool TryDecode(System.ReadOnlyMemory encodedBytes, out System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest request, out int bytesConsumed) => throw null; + public bool TryEncode(System.Span destination, out int bytesWritten) => throw null; + public int Version { get => throw null; } + } + public sealed class Rfc3161TimestampToken + { + public System.Security.Cryptography.Pkcs.SignedCms AsSignedCms() => throw null; + public System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo TokenInfo { get => throw null; } + public static bool TryDecode(System.ReadOnlyMemory encodedBytes, out System.Security.Cryptography.Pkcs.Rfc3161TimestampToken token, out int bytesConsumed) => throw null; + public bool VerifySignatureForData(System.ReadOnlySpan data, out System.Security.Cryptography.X509Certificates.X509Certificate2 signerCertificate, System.Security.Cryptography.X509Certificates.X509Certificate2Collection extraCandidates = default(System.Security.Cryptography.X509Certificates.X509Certificate2Collection)) => throw null; + public bool VerifySignatureForHash(System.ReadOnlySpan hash, System.Security.Cryptography.HashAlgorithmName hashAlgorithm, out System.Security.Cryptography.X509Certificates.X509Certificate2 signerCertificate, System.Security.Cryptography.X509Certificates.X509Certificate2Collection extraCandidates = default(System.Security.Cryptography.X509Certificates.X509Certificate2Collection)) => throw null; + public bool VerifySignatureForHash(System.ReadOnlySpan hash, System.Security.Cryptography.Oid hashAlgorithmId, out System.Security.Cryptography.X509Certificates.X509Certificate2 signerCertificate, System.Security.Cryptography.X509Certificates.X509Certificate2Collection extraCandidates = default(System.Security.Cryptography.X509Certificates.X509Certificate2Collection)) => throw null; + public bool VerifySignatureForSignerInfo(System.Security.Cryptography.Pkcs.SignerInfo signerInfo, out System.Security.Cryptography.X509Certificates.X509Certificate2 signerCertificate, System.Security.Cryptography.X509Certificates.X509Certificate2Collection extraCandidates = default(System.Security.Cryptography.X509Certificates.X509Certificate2Collection)) => throw null; + } + public sealed class Rfc3161TimestampTokenInfo + { + public long? AccuracyInMicroseconds { get => throw null; } + public Rfc3161TimestampTokenInfo(System.Security.Cryptography.Oid policyId, System.Security.Cryptography.Oid hashAlgorithmId, System.ReadOnlyMemory messageHash, System.ReadOnlyMemory serialNumber, System.DateTimeOffset timestamp, long? accuracyInMicroseconds = default(long?), bool isOrdering = default(bool), System.ReadOnlyMemory? nonce = default(System.ReadOnlyMemory?), System.ReadOnlyMemory? timestampAuthorityName = default(System.ReadOnlyMemory?), System.Security.Cryptography.X509Certificates.X509ExtensionCollection extensions = default(System.Security.Cryptography.X509Certificates.X509ExtensionCollection)) => throw null; + public byte[] Encode() => throw null; + public System.Security.Cryptography.X509Certificates.X509ExtensionCollection GetExtensions() => throw null; + public System.ReadOnlyMemory GetMessageHash() => throw null; + public System.ReadOnlyMemory? GetNonce() => throw null; + public System.ReadOnlyMemory GetSerialNumber() => throw null; + public System.ReadOnlyMemory? GetTimestampAuthorityName() => throw null; + public bool HasExtensions { get => throw null; } + public System.Security.Cryptography.Oid HashAlgorithmId { get => throw null; } + public bool IsOrdering { get => throw null; } + public System.Security.Cryptography.Oid PolicyId { get => throw null; } + public System.DateTimeOffset Timestamp { get => throw null; } + public static bool TryDecode(System.ReadOnlyMemory encodedBytes, out System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo timestampTokenInfo, out int bytesConsumed) => throw null; + public bool TryEncode(System.Span destination, out int bytesWritten) => throw null; + public int Version { get => throw null; } + } + public sealed class SignedCms + { + public void AddCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) => throw null; + public System.Security.Cryptography.X509Certificates.X509Certificate2Collection Certificates { get => throw null; } + public void CheckHash() => throw null; + public void CheckSignature(bool verifySignatureOnly) => throw null; + public void CheckSignature(System.Security.Cryptography.X509Certificates.X509Certificate2Collection extraStore, bool verifySignatureOnly) => throw null; + public void ComputeSignature() => throw null; + public void ComputeSignature(System.Security.Cryptography.Pkcs.CmsSigner signer) => throw null; + public void ComputeSignature(System.Security.Cryptography.Pkcs.CmsSigner signer, bool silent) => throw null; + public System.Security.Cryptography.Pkcs.ContentInfo ContentInfo { get => throw null; } + public SignedCms(System.Security.Cryptography.Pkcs.SubjectIdentifierType signerIdentifierType, System.Security.Cryptography.Pkcs.ContentInfo contentInfo, bool detached) => throw null; + public SignedCms() => throw null; + public SignedCms(System.Security.Cryptography.Pkcs.SubjectIdentifierType signerIdentifierType) => throw null; + public SignedCms(System.Security.Cryptography.Pkcs.ContentInfo contentInfo) => throw null; + public SignedCms(System.Security.Cryptography.Pkcs.SubjectIdentifierType signerIdentifierType, System.Security.Cryptography.Pkcs.ContentInfo contentInfo) => throw null; + public SignedCms(System.Security.Cryptography.Pkcs.ContentInfo contentInfo, bool detached) => throw null; + public void Decode(byte[] encodedMessage) => throw null; + public void Decode(System.ReadOnlySpan encodedMessage) => throw null; + public bool Detached { get => throw null; } + public byte[] Encode() => throw null; + public void RemoveCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) => throw null; + public void RemoveSignature(int index) => throw null; + public void RemoveSignature(System.Security.Cryptography.Pkcs.SignerInfo signerInfo) => throw null; + public System.Security.Cryptography.Pkcs.SignerInfoCollection SignerInfos { get => throw null; } + public int Version { get => throw null; } + } + public sealed class SignerInfo + { + public void AddUnsignedAttribute(System.Security.Cryptography.AsnEncodedData unsignedAttribute) => throw null; + public System.Security.Cryptography.X509Certificates.X509Certificate2 Certificate { get => throw null; } + public void CheckHash() => throw null; + public void CheckSignature(bool verifySignatureOnly) => throw null; + public void CheckSignature(System.Security.Cryptography.X509Certificates.X509Certificate2Collection extraStore, bool verifySignatureOnly) => throw null; + public void ComputeCounterSignature() => throw null; + public void ComputeCounterSignature(System.Security.Cryptography.Pkcs.CmsSigner signer) => throw null; + public System.Security.Cryptography.Pkcs.SignerInfoCollection CounterSignerInfos { get => throw null; } + public System.Security.Cryptography.Oid DigestAlgorithm { get => throw null; } + public byte[] GetSignature() => throw null; + public void RemoveCounterSignature(int index) => throw null; + public void RemoveCounterSignature(System.Security.Cryptography.Pkcs.SignerInfo counterSignerInfo) => throw null; + public void RemoveUnsignedAttribute(System.Security.Cryptography.AsnEncodedData unsignedAttribute) => throw null; + public System.Security.Cryptography.Oid SignatureAlgorithm { get => throw null; } + public System.Security.Cryptography.CryptographicAttributeObjectCollection SignedAttributes { get => throw null; } + public System.Security.Cryptography.Pkcs.SubjectIdentifier SignerIdentifier { get => throw null; } + public System.Security.Cryptography.CryptographicAttributeObjectCollection UnsignedAttributes { get => throw null; } + public int Version { get => throw null; } + } + public sealed class SignerInfoCollection : System.Collections.ICollection, System.Collections.IEnumerable + { + public void CopyTo(System.Array array, int index) => throw null; + public void CopyTo(System.Security.Cryptography.Pkcs.SignerInfo[] array, int index) => throw null; + public int Count { get => throw null; } + public System.Security.Cryptography.Pkcs.SignerInfoEnumerator GetEnumerator() => throw null; + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; + public bool IsSynchronized { get => throw null; } + public object SyncRoot { get => throw null; } + public System.Security.Cryptography.Pkcs.SignerInfo this[int index] { get => throw null; } + } + public sealed class SignerInfoEnumerator : System.Collections.IEnumerator + { + public System.Security.Cryptography.Pkcs.SignerInfo Current { get => throw null; } + object System.Collections.IEnumerator.Current { get => throw null; } + public bool MoveNext() => throw null; + public void Reset() => throw null; + } + public sealed class SubjectIdentifier + { + public bool MatchesCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) => throw null; + public System.Security.Cryptography.Pkcs.SubjectIdentifierType Type { get => throw null; } + public object Value { get => throw null; } + } + public sealed class SubjectIdentifierOrKey + { + public System.Security.Cryptography.Pkcs.SubjectIdentifierOrKeyType Type { get => throw null; } + public object Value { get => throw null; } + } + public enum SubjectIdentifierOrKeyType + { + Unknown = 0, + IssuerAndSerialNumber = 1, + SubjectKeyIdentifier = 2, + PublicKeyInfo = 3, + } + public enum SubjectIdentifierType + { + Unknown = 0, + IssuerAndSerialNumber = 1, + SubjectKeyIdentifier = 2, + NoSignature = 3, + } + } + namespace Xml + { + public struct X509IssuerSerial + { + public string IssuerName { get => throw null; set { } } + public string SerialNumber { get => throw null; set { } } + } + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/System.Security.Cryptography.Pkcs/9.0.4/System.Security.Cryptography.Pkcs.csproj b/csharp/ql/test/resources/stubs/System.Security.Cryptography.Pkcs/9.0.4/System.Security.Cryptography.Pkcs.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Security.Cryptography.Pkcs/9.0.4/System.Security.Cryptography.Pkcs.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Security.Cryptography.ProtectedData/9.0.4/System.Security.Cryptography.ProtectedData.cs b/csharp/ql/test/resources/stubs/System.Security.Cryptography.ProtectedData/9.0.4/System.Security.Cryptography.ProtectedData.cs new file mode 100644 index 000000000000..112088cf6b5d --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Security.Cryptography.ProtectedData/9.0.4/System.Security.Cryptography.ProtectedData.cs @@ -0,0 +1,21 @@ +// This file contains auto-generated code. +// Generated from `System.Security.Cryptography.ProtectedData, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a`. +namespace System +{ + namespace Security + { + namespace Cryptography + { + public enum DataProtectionScope + { + CurrentUser = 0, + LocalMachine = 1, + } + public static class ProtectedData + { + public static byte[] Protect(byte[] userData, byte[] optionalEntropy, System.Security.Cryptography.DataProtectionScope scope) => throw null; + public static byte[] Unprotect(byte[] encryptedData, byte[] optionalEntropy, System.Security.Cryptography.DataProtectionScope scope) => throw null; + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/System.Security.Cryptography.ProtectedData/9.0.4/System.Security.Cryptography.ProtectedData.csproj b/csharp/ql/test/resources/stubs/System.Security.Cryptography.ProtectedData/9.0.4/System.Security.Cryptography.ProtectedData.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Security.Cryptography.ProtectedData/9.0.4/System.Security.Cryptography.ProtectedData.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Text.Encodings.Web/4.7.2/System.Text.Encodings.Web.csproj b/csharp/ql/test/resources/stubs/System.Text.Encodings.Web/4.7.2/System.Text.Encodings.Web.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Text.Encodings.Web/4.7.2/System.Text.Encodings.Web.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Text.Json/4.7.2/System.Text.Json.csproj b/csharp/ql/test/resources/stubs/System.Text.Json/4.7.2/System.Text.Json.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Text.Json/4.7.2/System.Text.Json.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Threading.Tasks.Extensions/4.5.4/System.Threading.Tasks.Extensions.csproj b/csharp/ql/test/resources/stubs/System.Threading.Tasks.Extensions/4.5.4/System.Threading.Tasks.Extensions.csproj new file mode 100644 index 000000000000..c7646fbae204 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Threading.Tasks.Extensions/4.5.4/System.Threading.Tasks.Extensions.csproj @@ -0,0 +1,12 @@ + + + net9.0 + true + bin\ + false + + + + + + diff --git a/csharp/scripts/stubs/make_stubs_all.py b/csharp/scripts/stubs/make_stubs_all.py index 5204d9ceb725..51d3dd894a73 100644 --- a/csharp/scripts/stubs/make_stubs_all.py +++ b/csharp/scripts/stubs/make_stubs_all.py @@ -14,6 +14,7 @@ "Amazon.Lambda.APIGatewayEvents", "Dapper", "EntityFramework", + "Microsoft.Data.SqlClient", "Newtonsoft.Json", "NHibernate", "System.Data.OleDb", diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-rust.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-rust.rst new file mode 100644 index 000000000000..8aed9fc93266 --- /dev/null +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-rust.rst @@ -0,0 +1,242 @@ +.. _analyzing-data-flow-in-rust: + +Analyzing data flow in Rust +============================= + +You can use CodeQL to track the flow of data through a Rust program to places where the data is used. + +About this article +------------------ + +This article describes how data flow analysis is implemented in the CodeQL libraries for Rust and includes examples to help you write your own data flow queries. +The following sections describe how to use the libraries for local data flow, global data flow, and taint tracking. +For a more general introduction to modeling data flow, see ":ref:`About data flow analysis `." + +.. include:: ../reusables/new-data-flow-api.rst + +Local data flow +--------------- + +Local data flow tracks the flow of data within a single method or callable. Local data flow is easier, faster, and more precise than global data flow. Before using more complex tracking, consider local tracking, as it is sufficient for many queries. + +Using local data flow +~~~~~~~~~~~~~~~~~~~~~ + +You can use the local data flow library by importing the ``codeql.rust.dataflow.DataFlow`` module. The library uses the class ``Node`` to represent any element through which data can flow. +Common ``Node`` types include expression nodes (``ExprNode``) and parameter nodes (``ParameterNode``). +You can use the ``asExpr`` member predicate to map a data flow ``ExprNode`` to its corresponding ``ExprCfgNode`` in the control-flow library. +Similarly, you can map a data flow ``ParameterNode`` to its corresponding ``Parameter`` AST node using the ``asParameter`` member predicate. + +.. code-block:: ql + + class Node { + /** + * Gets the expression corresponding to this node, if any. + */ + CfgNodes::ExprCfgNode asExpr() { ... } + + /** + * Gets the parameter corresponding to this node, if any. + */ + Parameter asParameter() { ... } + + ... + } + +Note that because ``asExpr`` maps from data-flow to control-flow nodes, you need to call the ``getExpr`` member predicate on the control-flow node to map to the corresponding AST node. For example, you can write ``node.asExpr().getExpr()``. +A control-flow graph considers every way control can flow through code, consequently, there can be multiple data-flow and control-flow nodes associated with a single expression node in the AST. + +The predicate ``localFlowStep(Node nodeFrom, Node nodeTo)`` holds if there is an immediate data flow edge from the node ``nodeFrom`` to the node ``nodeTo``. +You can apply the predicate recursively by using the ``+`` and ``*`` operators, or you can use the predefined recursive predicate ``localFlow``. + +For example, you can find flow from an expression ``source`` to an expression ``sink`` in zero or more local steps: + +.. code-block:: ql + + DataFlow::localFlow(source, sink) + +Using local taint tracking +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Local taint tracking extends local data flow to include flow steps where values are not preserved, for example, string manipulation. +For example: + +.. code-block:: rust + + let y: String = "Hello ".to_owned() + x + +If ``x`` is a tainted string then ``y`` is also tainted. + +The local taint tracking library is in the module ``TaintTracking``. +Like local data flow, a predicate ``localTaintStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo)`` holds if there is an immediate taint propagation edge from the node ``nodeFrom`` to the node ``nodeTo``. +You can apply the predicate recursively by using the ``+`` and ``*`` operators, or you can use the predefined recursive predicate ``localTaint``. + +For example, you can find taint propagation from an expression ``source`` to an expression ``sink`` in zero or more local steps: + +.. code-block:: ql + + TaintTracking::localTaint(source, sink) + + +Using local sources +~~~~~~~~~~~~~~~~~~~ + +When exploring local data flow or taint propagation between two expressions, such as in the previous example, you typically constrain the expressions to those relevant to your investigation. +The next section provides concrete examples, but first introduces the concept of a local source. + +A local source is a data-flow node with no local data flow into it. +It is a local origin of data flow, a place where a new value is created. +This includes parameters (which only receive values from global data flow) and most expressions (because they are not value-preserving). +The class ``LocalSourceNode`` represents data-flow nodes that are also local sources. +It includes a useful member predicate ``flowsTo(DataFlow::Node node)``, which holds if there is local data flow from the local source to ``node``. + +Examples of local data flow +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This query finds the argument passed in each call to ``File::create``: + +.. code-block:: ql + + import rust + + from CallExpr call + where call.getStaticTarget().(Function).getCanonicalPath() = "::create" + select call.getArg(0) + +Unfortunately, this only returns the expression used as the argument, not the possible values that could be passed to it. To address this, you can use local data flow to find all expressions that flow into the argument. + +.. code-block:: ql + + import rust + import codeql.rust.dataflow.DataFlow + + from CallExpr call, DataFlow::ExprNode source, DataFlow::ExprNode sink + where + call.getStaticTarget().(Function).getCanonicalPath() = "::create" and + sink.asExpr().getExpr() = call.getArg(0) and + DataFlow::localFlow(source, sink) + select source, sink + +You can vary the source by making the source the parameter of a function instead of an expression. The following query finds where a parameter is used in file creation: + +.. code-block:: ql + + import rust + import codeql.rust.dataflow.DataFlow + + from CallExpr call, DataFlow::ParameterNode source, DataFlow::ExprNode sink + where + call.getStaticTarget().(Function).getCanonicalPath() = "::create" and + sink.asExpr().getExpr() = call.getArg(0) and + DataFlow::localFlow(source, sink) + select source, sink + +Global data flow +---------------- + +Global data flow tracks data flow throughout the entire program, and is therefore more powerful than local data flow. +However, global data flow is less precise than local data flow, and the analysis typically requires significantly more time and memory to perform. + +.. pull-quote:: Note + + .. include:: ../reusables/path-problem.rst + +Using global data flow +~~~~~~~~~~~~~~~~~~~~~~ + +We can use the global data flow library by implementing the signature ``DataFlow::ConfigSig`` and applying the module ``DataFlow::Global``: + +.. code-block:: ql + + import codeql.rust.dataflow.DataFlow + + module MyDataFlowConfiguration implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + ... + } + + predicate isSink(DataFlow::Node sink) { + ... + } + } + + module MyDataFlow = DataFlow::Global; + +These predicates are defined in the configuration: + +- ``isSource`` - defines where data may flow from. +- ``isSink`` - defines where data may flow to. +- ``isBarrier`` - optional, defines where data flow is blocked. +- ``isAdditionalFlowStep`` - optional, adds additional flow steps. + +The last line (``module MyDataFlow = ...``) instantiates the parameterized module for data flow analysis by passing the configuration to the parameterized module. Data flow analysis can then be performed using ``MyDataFlow::flow(DataFlow::Node source, DataFlow::Node sink)``: + +.. code-block:: ql + + from DataFlow::Node source, DataFlow::Node sink + where MyDataFlow::flow(source, sink) + select source, "Dataflow to $@.", sink, sink.toString() + +Using global taint tracking +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Global taint tracking relates to global data flow in the same way that local taint tracking relates to local data flow. +In other words, global taint tracking extends global data flow with additional non-value-preserving steps. +The global taint tracking library uses the same configuration module as the global data flow library. You can perform taint flow analysis using ``TaintTracking::Global``: + +.. code-block:: ql + + module MyTaintFlow = TaintTracking::Global; + + from DataFlow::Node source, DataFlow::Node sink + where MyTaintFlow::flow(source, sink) + select source, "Taint flow to $@.", sink, sink.toString() + +Predefined sources +~~~~~~~~~~~~~~~~~~ + +The library module ``codeql.rust.Concepts`` contains a number of predefined sources and sinks that you can use to write security queries to track data flow and taint flow. + +Examples of global data flow +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The following global taint-tracking query finds places where a string literal is used in a function call argument named "password". + - Since this is a taint-tracking query, the ``TaintTracking::Global`` module is used. + - The ``isSource`` predicate defines sources as any ``StringLiteralExpr``. + - The ``isSink`` predicate defines sinks as arguments to a ``CallExpr`` called "password". + - The sources and sinks may need to be adjusted for a particular use. For example, passwords might be represented by a type other than ``String`` or passed in arguments with a different name than "password". + +.. code-block:: ql + + import rust + import codeql.rust.dataflow.DataFlow + import codeql.rust.dataflow.TaintTracking + + module ConstantPasswordConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { node.asExpr().getExpr() instanceof StringLiteralExpr } + + predicate isSink(DataFlow::Node node) { + // any argument going to a parameter called `password` + exists(Function f, CallExpr call, int index | + call.getArg(index) = node.asExpr().getExpr() and + call.getStaticTarget() = f and + f.getParam(index).getPat().(IdentPat).getName().getText() = "password" + ) + } + } + + module ConstantPasswordFlow = TaintTracking::Global; + + from DataFlow::Node sourceNode, DataFlow::Node sinkNode + where ConstantPasswordFlow::flow(sourceNode, sinkNode) + select sinkNode, "The value $@ is used as a constant password.", sourceNode, sourceNode.toString() + + +Further reading +--------------- + +- `Exploring data flow with path queries `__ in the GitHub documentation. + + +.. include:: ../reusables/rust-further-reading.rst +.. include:: ../reusables/codeql-ref-tools-further-reading.rst diff --git a/docs/codeql/codeql-language-guides/codeql-for-rust.rst b/docs/codeql/codeql-language-guides/codeql-for-rust.rst new file mode 100644 index 000000000000..24292909467e --- /dev/null +++ b/docs/codeql/codeql-language-guides/codeql-for-rust.rst @@ -0,0 +1,16 @@ + +.. _codeql-for-rust: + +CodeQL for Rust +========================= + +Experiment and learn how to write effective and efficient queries for CodeQL databases generated from Rust code. + +.. toctree:: + :hidden: + + codeql-library-for-rust + analyzing-data-flow-in-rust + +- :doc:`CodeQL library for Rust `: When analyzing Rust code, you can make use of the large collection of classes in the CodeQL library for Rust. +- :doc:`Analyzing data flow in Rust `: You can use CodeQL to track the flow of data through a Rust program to places where the data is used. diff --git a/docs/codeql/codeql-language-guides/codeql-library-for-rust.rst b/docs/codeql/codeql-language-guides/codeql-library-for-rust.rst new file mode 100644 index 000000000000..84da28c7dfc6 --- /dev/null +++ b/docs/codeql/codeql-language-guides/codeql-library-for-rust.rst @@ -0,0 +1,61 @@ +.. _codeql-library-for-rust: + +CodeQL library for Rust +================================= + +When analyzing Rust code, you can make use of the large collection of classes in the CodeQL library for Rust. + +Overview +-------- + +CodeQL ships with a library for analyzing Rust code. The classes in this library present the data from a CodeQL database in an object-oriented form and provide +abstractions and predicates to help you with common analysis tasks. + +The library is implemented as a set of CodeQL modules, which are files with the extension ``.qll``. The +module `rust.qll `__ imports most other standard library modules, so you can include them +by beginning your query with: + +.. code-block:: ql + + import rust + +The CodeQL libraries model various aspects of Rust code. The above import includes the abstract syntax tree (AST) library, which is used for locating program elements +to match syntactic elements in the source code. This can be used to find values, patterns, and structures. + +The control flow graph (CFG) is imported using: + +.. code-block:: ql + + import codeql.rust.controlflow.ControlFlowGraph + +The CFG models the control flow between statements and expressions. For example, it can determine whether one expression can +be evaluated before another expression, or whether an expression "dominates" another one, meaning that all paths to an +expression must flow through another expression first. + +The data flow library is imported using: + +.. code-block:: ql + + import codeql.rust.dataflow.DataFlow + +Data flow tracks the flow of data through the program, including across function calls (interprocedural data flow) and between steps in a job or workflow. +Data flow is particularly useful for security queries, where untrusted data flows to vulnerable parts of the program. The taint-tracking library is related to data flow, +and helps you find how data can *influence* other values in a program, even when it is not copied exactly. + +To summarize, the main Rust library modules are: + +.. list-table:: Main Rust library modules + :header-rows: 1 + + * - Import + - Description + * - ``rust`` + - The standard Rust library + * - ``codeql.rust.elements`` + - The abstract syntax tree library (also imported by `rust.qll`) + * - ``codeql.rust.controlflow.ControlFlowGraph`` + - The control flow graph library + * - ``codeql.rust.dataflow.DataFlow`` + - The data flow library + * - ``codeql.rust.dataflow.TaintTracking`` + - The taint tracking library diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst index fa2c1d4e8a82..413471be8854 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst @@ -517,7 +517,6 @@ The following components are supported: - **Member[**\ `name`\ **]** selects the property with the given name. - **AnyMember** selects any property regardless of name. - **ArrayElement** selects an element of an array. -- **Element** selects an element of an array, iterator, or set object. - **MapValue** selects a value of a map object. - **Awaited** selects the value of a promise. - **Instance** selects instances of a class, including instances of its subclasses. diff --git a/docs/codeql/codeql-language-guides/index.rst b/docs/codeql/codeql-language-guides/index.rst index ca03ebffd759..5ec9a715a4d7 100644 --- a/docs/codeql/codeql-language-guides/index.rst +++ b/docs/codeql/codeql-language-guides/index.rst @@ -15,4 +15,5 @@ Experiment and learn how to write effective and efficient queries for CodeQL dat codeql-for-javascript codeql-for-python codeql-for-ruby + codeql-for-rust codeql-for-swift 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 754b6d2c4dad..51ff05b0c3b1 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.22.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.22.0.rst new file mode 100644 index 000000000000..04920497e4ea --- /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 be6d2582d6ec..af427fd69150 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,7 @@ A list of queries for each suite and language `is available here `__, `source `__) - ``codeql/ruby-queries`` (`changelog `__, `source `__) - ``codeql/ruby-all`` (`changelog `__, `source `__) +- ``codeql/rust-queries`` (`changelog `__, `source `__) +- ``codeql/rust-all`` (`changelog `__, `source `__) - ``codeql/swift-queries`` (`changelog `__, `source `__) - ``codeql/swift-all`` (`changelog `__, `source `__) diff --git a/docs/codeql/query-help/codeql-cwe-coverage.rst b/docs/codeql/query-help/codeql-cwe-coverage.rst index 6236289a9ab5..0c0089a576da 100644 --- a/docs/codeql/query-help/codeql-cwe-coverage.rst +++ b/docs/codeql/query-help/codeql-cwe-coverage.rst @@ -35,5 +35,5 @@ Note that the CWE coverage includes both "`supported queries ` - :doc:`CodeQL query help for Python ` - :doc:`CodeQL query help for Ruby ` +- :doc:`CodeQL query help for Rust ` - :doc:`CodeQL query help for Swift ` .. pull-quote:: Information @@ -37,5 +38,6 @@ For a full list of the CWEs covered by these queries, see ":doc:`CodeQL CWE cove javascript python ruby + rust swift codeql-cwe-coverage diff --git a/docs/codeql/query-help/rust-cwe.md b/docs/codeql/query-help/rust-cwe.md new file mode 100644 index 000000000000..6468ff890acd --- /dev/null +++ b/docs/codeql/query-help/rust-cwe.md @@ -0,0 +1,7 @@ +# CWE coverage for Rust + +An overview of CWE coverage for Rust in the latest release of CodeQL. + +## Overview + + diff --git a/docs/codeql/query-help/rust.rst b/docs/codeql/query-help/rust.rst new file mode 100644 index 000000000000..b430fd3692e3 --- /dev/null +++ b/docs/codeql/query-help/rust.rst @@ -0,0 +1,8 @@ +CodeQL query help for Rust +============================ + +.. include:: ../reusables/query-help-overview.rst + +These queries are published in the CodeQL query pack ``codeql/rust-queries`` (`changelog `__, `source `__). + +.. include:: toc-rust.rst diff --git a/docs/codeql/reusables/extractors.rst b/docs/codeql/reusables/extractors.rst index 30ccef6e4654..c09926666b0a 100644 --- a/docs/codeql/reusables/extractors.rst +++ b/docs/codeql/reusables/extractors.rst @@ -6,9 +6,9 @@ - Identifier * - GitHub Actions - ``actions`` - * - C/C++ + * - C/C++ - ``cpp`` - * - C# + * - C# - ``csharp`` * - Go - ``go`` @@ -20,5 +20,7 @@ - ``python`` * - Ruby - ``ruby`` + - Rust + - ``rust`` * - Swift - - ``swift`` \ No newline at end of file + - ``swift`` diff --git a/docs/codeql/reusables/rust-further-reading.rst b/docs/codeql/reusables/rust-further-reading.rst new file mode 100644 index 000000000000..a82dee7f28e1 --- /dev/null +++ b/docs/codeql/reusables/rust-further-reading.rst @@ -0,0 +1,2 @@ +- `CodeQL queries for Rust `__ +- `CodeQL library reference for Rust `__ diff --git a/docs/codeql/reusables/supported-frameworks.rst b/docs/codeql/reusables/supported-frameworks.rst index 07a5e509fecb..3d89a6630041 100644 --- a/docs/codeql/reusables/supported-frameworks.rst +++ b/docs/codeql/reusables/supported-frameworks.rst @@ -307,6 +307,51 @@ and the CodeQL library pack ``codeql/ruby-all`` (`changelog `__, `source `__) +and the CodeQL library pack ``codeql/rust-all`` (`changelog `__, `source `__). +All support is experimental. + +.. csv-table:: + :header-rows: 1 + :class: fullWidthTable + :widths: auto + :align: left + + Name, Category + `actix-web `__, Web framework + alloc, Standard library + `clap `__, Utility library + core, Standard library + `digest `__, Cryptography library + `futures-executor `__, Utility library + `hyper `__, HTTP library + `hyper-util `__, HTTP library + `libc `__, Utility library + `log `__, Logging library + `md5 `__, Utility library + `memchr `__, Utility library + `once_cell `__, Utility library + `poem `__, Web framework + `postgres `__, Database + proc_macro, Standard library + `rand `__, Utility library + `regex `__, Utility library + `reqwest `__, HTTP client + `rocket `__, Web framework + `rusqlite `__, Database + std, Standard library + `rust-crypto `__, Cryptography library + `serde `__, Serialization + `smallvec `__, Utility library + `sqlx `__, Database + `tokio `__, Asynchronous IO + `tokio-postgres `__, Database + `url `__, Utility library + Swift built-in support ================================ diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index e85bc5d70f24..904a60b71cbd 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -25,8 +25,9 @@ JavaScript,ECMAScript 2022 or lower,Not applicable,"``.js``, ``.jsx``, ``.mjs``, ``.es``, ``.es6``, ``.htm``, ``.html``, ``.xhtm``, ``.xhtml``, ``.vue``, ``.hbs``, ``.ejs``, ``.njk``, ``.json``, ``.yaml``, ``.yml``, ``.raml``, ``.xml`` [8]_" Python [9]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13",Not applicable,``.py`` Ruby [10]_,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" - Swift [11]_,"Swift 5.4-6.1","Swift compiler","``.swift``" - TypeScript [12]_,"2.6-5.8",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" + Rust [11]_,"Rust editions 2021 and 2024","Rust compiler","``.rs``, ``Cargo.toml``" + Swift [12]_,"Swift 5.4-6.1","Swift compiler","``.swift``" + TypeScript [13]_,"2.6-5.8",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" .. container:: footnote-group @@ -40,5 +41,6 @@ .. [8] JSX and Flow code, YAML, JSON, HTML, and XML files may also be analyzed with JavaScript files. .. [9] The extractor requires Python 3 to run. To analyze Python 2.7 you should install both versions of Python. .. [10] Requires glibc 2.17. - .. [11] Support for the analysis of Swift requires macOS. - .. [12] TypeScript analysis is performed by running the JavaScript extractor with TypeScript enabled. This is the default. + .. [11] Requires ``rustup`` and ``cargo`` to be installed. Features from nightly toolchains are not supported. + .. [12] Support for the analysis of Swift requires macOS. + .. [13] TypeScript analysis is performed by running the JavaScript extractor with TypeScript enabled. This is the default. diff --git a/docs/codeql/writing-codeql-queries/about-codeql-queries.rst b/docs/codeql/writing-codeql-queries/about-codeql-queries.rst index f4e60b513c9a..92e4b963bff1 100644 --- a/docs/codeql/writing-codeql-queries/about-codeql-queries.rst +++ b/docs/codeql/writing-codeql-queries/about-codeql-queries.rst @@ -79,6 +79,7 @@ When writing your own alert queries, you would typically import the standard lib - :ref:`CodeQL library guide for JavaScript ` - :ref:`CodeQL library guide for Python ` - :ref:`CodeQL library guide for Ruby ` +- :ref:`CodeQL library guide for Rust ` - :ref:`CodeQL library guide for TypeScript ` There are also libraries containing commonly used predicates, types, and other modules associated with different analyses, including data flow, control flow, and taint-tracking. In order to calculate path graphs, path queries require you to import a data flow library into the query file. For more information, see ":doc:`Creating path queries `." diff --git a/docs/query-help-style-guide.md b/docs/query-help-style-guide.md index 88b9844fc224..820c1da0260b 100644 --- a/docs/query-help-style-guide.md +++ b/docs/query-help-style-guide.md @@ -16,11 +16,33 @@ When you contribute a new [supported query](supported-queries.md) to this reposi ### Location and file name -Query help files must have the same base name as the query they describe and must be located in the same directory. +Query help files must have the same base name as the query they describe and must be located in the same directory. ### File structure and layout -Query help files are written using a custom XML format, and stored in a file with a `.qhelp` extension. The basic structure is as follows: +Query help files can be written in either a custom XML format (with a `.qhelp` extension) or in Markdown (with a `.md` extension). Both formats are supported by the CodeQL documentation tooling. There are a few minor differences, noted in the section `Differences between XML and markdown formats` below. + +#### Markdown query help files + +A Markdown query help file should use the following structure and section order (note that the `Implementation notes` section is optional): + +``` +## Overview + +## Recommendation + +## Example + +## Implementation notes + +## References +``` + +Each section should be clearly marked with the appropriate heading. See the other Markdown files in this repository for examples. + +#### XML query help files + +Query help files can also be written using a custom XML format, and stored in a file with a `.qhelp` extension. The basic structure is as follows: ```xml @@ -33,7 +55,7 @@ The header and single top-level `` element are both mandatory. ### Section-level elements -Section-level elements are used to group the information within the query help file. All query help files should include at least the following section elements, in the order specified: +Section-level elements are used to group the information within the query help file. For both Markdown and XML formats, the following sections should be included, in the order specified: 1. `overview`—a short summary of the issue that the query identifies, including an explanation of how it could affect the behavior of the program. 2. `recommendation`—information on how to fix the issue highlighted by the query. @@ -42,10 +64,9 @@ Section-level elements are used to group the information within the query help f For further information about the other section-level, block, list and table elements supported by query help files, see [Query help files](https://codeql.github.com/docs/writing-codeql-queries/query-help-files/) on codeql.github.com. - ## English style -You should write the overview and recommendation elements in simple English that is easy to follow. You should: +You should write the overview and recommendation sections in simple English that is easy to follow. You should: * Use simple sentence structures and avoid complex or academic language. * Avoid colloquialisms and contractions. @@ -57,10 +78,11 @@ You should write the overview and recommendation elements in simple English that Whenever possible, you should include a code example that helps to explain the issue you are highlighting. Any code examples that you include should adhere to the following guidelines: * The example should be less than 20 lines, but it should still clearly illustrate the issue that the query identifies. If appropriate, then the example may also be runnable. -* Put the code example after the recommendation element where possible. Only include an example in the description element if absolutely necessary. +* Put the code example after the recommendation section where possible. Only include an example in the description section if absolutely necessary. * If you are using an example to illustrate the solution to a problem, and the change required is minor, avoid repeating the whole example. It is preferable to either describe the change required or to include a smaller snippet of the corrected code. * Clearly indicate which of the samples is an example of bad coding practice and which is recommended practice. -* Define the code examples in `src` files. The language is inferred from the file extension: +* For Markdown files, use fenced code blocks with the appropriate language identifier (for example, ```java ). +* For XML files, define the code examples in `src` files. The language is inferred from the file extension: ```xml @@ -74,11 +96,11 @@ Whenever possible, you should include a code example that helps to explain the i ``` -Note, if any code words are included in the `overview` and `recommendation` sections, they should be formatted with ` ... ` for emphasis. +Note, if any code words are included in the `overview` and `recommendation` sections, in Markdown they should be formatted with backticks (`...`) and in XML they should be formatted with` ... ` for emphasis. ## Including references -You should include one or more references, list formatted with `
  • ...
  • ` for each item, to provide further information about the problem that your query is designed to find. References can be of the following types: +You should include one or more references, formatted as an unordered list (`- ...` or `* ...`) in Markdown or with `
  • ...
  • ` for each item in XML, to provide further information about the problem that your query is designed to find. Each reference should end in a full stop. References can be of the following types: ### Books @@ -90,7 +112,7 @@ For example: >W. C. Wake, _Refactoring Workbook_, pp. 93 – 94, Addison-Wesley Professional, 2004. -Note, & symbols need to be replaced by \&. The symbol will be displayed correctly in the HTML files generated from the query help files. +Note, & symbols need to be replaced by \& in XML. The symbol will be displayed correctly in the HTML files generated from the query help files. ### Academic papers @@ -98,12 +120,11 @@ If you are citing an academic paper, we recommend adopting the reference style o >S. R. Chidamber and C. F. Kemerer, _A metrics suite for object-oriented design_. IEEE Transactions on Software Engineering, 20(6):476-493, 1994. - ### Websites If you are citing a website, please use the following format, without breadcrumb trails: ->\: \ +>\: \. For example: @@ -111,28 +132,123 @@ For example: ### Referencing potential security weaknesses -If your query checks code for a CWE weakness, you should use the `@tags` element in the query file to reference the associated CWEs, as explained [here](query-metadata-style-guide.md). When you use these tags, a link to the appropriate entry from the [MITRE.org](https://cwe.mitre.org/scoring/index.html) site will automatically appear as a reference in the output HTML file. +If your query checks code for a CWE weakness, you should use the `@tags` element in the query file to reference the associated CWEs, as explained [here](query-metadata-style-guide.md). When you use these tags in a query help file in the custom XML format, a link to the appropriate entry from the [MITRE.org](https://cwe.mitre.org/scoring/index.html) site will automatically appear as a reference in the output HTML file. -## Validating qhelp files +## Validating query help files -Before making a pull request, please ensure the `.qhelp` files are well-formed and can be generated without errors. This can be done locally with the CodeQL CLI, as shown in the following example: +Before making a pull request, please ensure the `.qhelp` or `.md` files are well-formed and can be generated without errors. This can be done locally with the CodeQL CLI, as shown in the following example: ```bash # codeql generate query-help --format= # For example: codeql generate query-help ./myCustomQuery.qhelp --format=markdown +codeql generate query-help ./myCustomQuery.md --format=markdown ``` +Please include the query help files (and any associated code snippets) in your pull request, but do not commit the generated Markdown. -Please include the `.qhelp` files (and any associated code snippets) in your pull request, but do not commit the generated Markdown. +More information on how to test your query help files can be found [within the documentation](https://docs.github.com/en/code-security/codeql-cli/using-the-codeql-cli/testing-query-help-files) -More information on how to test your `.qhelp` files can be found [within the documentation](https://docs.github.com/en/code-security/codeql-cli/using-the-codeql-cli/testing-query-help-files) +## Differences between XML and markdown formats + +1. The XML format allows for the contents of other files to be included in the output generated by processing the file, as mentioned in the section `Code examples`. This is not possible with the Markdown format. +2. When using the XML format, references are added to the output HTML file based on CWE tags, as mentioned in the section `Referencing potential security weaknesses`. +3. For custom queries and custom query packs, only the Markdown format is supported. ## Query help example -The following example is a query help file for a query from the standard query suite for Java: +The following example is a query help file for a query from the standard query suite for Java, shown in both Markdown and XML formats. -```xml +### Markdown example + +````markdown +# Overview + +A control structure (an `if` statement or a loop) has a body that is either a block +of statements surrounded by curly braces or a single statement. + +If you omit braces, it is particularly important to ensure that the indentation of the code +matches the control flow of the code. + +## Recommendation + +It is usually considered good practice to include braces for all control +structures in Java. This is because it makes it easier to maintain the code +later. For example, it's easy to see at a glance which part of the code is in the +scope of an `if` statement, and adding more statements to the body of the `if` +statement is less error-prone. + +You should also ensure that the indentation of the code is consistent with the actual flow of +control, so that it does not confuse programmers. + +## Example + +In the example below, the original version of `Cart` is missing braces. This means +that the code triggers a `NullPointerException` at runtime if `i` +is `null`. + +```java +class Cart { + Map items = ... + public void addItem(Item i) { + // No braces and misleading indentation. + if (i != null) + log("Adding item: " + i); + // Indentation suggests that the following statements + // are in the body of the 'if'. + Integer curQuantity = items.get(i.getID()); + if (curQuantity == null) curQuantity = 0; + items.put(i.getID(), curQuantity+1); + } +} +``` + +The corrected version of `Cart` does include braces, so +that the code executes as the indentation suggests. + +```java +class Cart { + Map items = ... + public void addItem(Item i) { + // Braces included. + if (i != null) { + log("Adding item: " + i); + Integer curQuantity = items.get(i.getID()); + if (curQuantity == null) curQuantity = 0; + items.put(i.getID(), curQuantity+1); + } + } +} +``` + +In the following example the indentation may or may not be misleading depending on your tab width +settings. As such, mixing tabs and spaces in this way is not recommended, since what looks fine in +one context can be very misleading in another. + +```java +// Tab width 8 + if (b) // Indentation: 1 tab + f(); // Indentation: 2 tabs + g(); // Indentation: 8 spaces + +// Tab width 4 + if (b) // Indentation: 1 tab + f(); // Indentation: 2 tabs + g(); // Indentation: 8 spaces +``` + +If you mix tabs and spaces in this way, then you might get seemingly false positives, since your +tab width settings cannot be taken into account. + +## References + +* Java SE Documentation: [Compound Statements](https://www.oracle.com/java/technologies/javase/codeconventions-statements.html#15395). +* Wikipedia: [Indentation style](https://en.wikipedia.org/wiki/Indentation_style). +```` + +### XML example + +````xml @@ -154,13 +270,13 @@ later. For example, it's easy to see at a glance which part of the code is in th scope of an if statement, and adding more statements to the body of the if statement is less error-prone.

    -

    You should also ensure that the indentation of the code is consistent with the actual flow of +

    You should also ensure that the indentation of the code is consistent with the actual flow of control, so that it does not confuse programmers.

    -

    In the example below, the original version of Cart is missing braces. This means +

    In the example below, the original version of Cart is missing braces. This means that the code triggers a NullPointerException at runtime if i is null.

    @@ -198,4 +314,4 @@ tab width settings cannot be taken into account.
    -``` +```` diff --git a/docs/query-metadata-style-guide.md b/docs/query-metadata-style-guide.md index f5f2143d8be4..18fa5d1880f5 100644 --- a/docs/query-metadata-style-guide.md +++ b/docs/query-metadata-style-guide.md @@ -25,6 +25,7 @@ For examples of query files for the languages supported by CodeQL, visit the fol * [JavaScript queries](https://codeql.github.com/codeql-query-help/javascript/) * [Python queries](https://codeql.github.com/codeql-query-help/python/) * [Ruby queries](https://codeql.github.com/codeql-query-help/ruby/) +* [Rust queries](https://codeql.github.com/codeql-query-help/rust/) * [Swift queries](https://codeql.github.com/codeql-query-help/swift/) ## Metadata area @@ -151,18 +152,18 @@ When you tag a query like this, the associated CWE pages from [MITRE.org](https: #### Quality query sub-category `@tags` +Each code quality related query should have **one** of these two "top-level" categories as a tag: + * `@tags maintainability`–for queries that detect patterns that make it harder for developers to make changes to the code. * `@tags reliability`–for queries that detect issues that affect whether the code will perform as expected during execution. -Software quality doesn't have as universally-agreed categorization method as security issues like CWE, so we will do our own categorization instead of using tags like CWE. - -We'll use two "top-level" categories of quality queries, with sub-categories beneath: +In addition to the "top-level" categories, we will also add sub-categories to further group code quality related queries: * `@tags maintainability`–for queries that detect patterns that make it harder for developers to make changes to the code. * `@tags readability`–for queries that detect confusing patterns that make it harder for developers to read the code. * `@tags useless-code`-for queries that detect functions that are never used and other instances of unused code * `@tags complexity`-for queries that detect patterns in the code that lead to unnecesary complexity such as unclear control flow, or high cyclomatic complexity - + * `@tags reliability`–for queries that detect issues that affect whether the code will perform as expected during execution. * `@tags correctness`–for queries that detect incorrect program behavior or couse result in unintended outcomes. diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 3fa1fa4c69be..0d814dec385b 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.26 + +No user-facing changes. + ## 1.0.25 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.26.md b/go/ql/consistency-queries/change-notes/released/1.0.26.md new file mode 100644 index 000000000000..4920e2b24354 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.26.md @@ -0,0 +1,3 @@ +## 1.0.26 + +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 a5a44030e851..125d169e44f8 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.25 +lastReleaseVersion: 1.0.26 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index aaa9a44cb15c..e964007a13da 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.25 +version: 1.0.27-dev groups: - go - queries diff --git a/go/ql/integration-tests/query-suite/go-code-quality-extended.qls.expected b/go/ql/integration-tests/query-suite/go-code-quality-extended.qls.expected new file mode 100644 index 000000000000..7eb72f2abc21 --- /dev/null +++ b/go/ql/integration-tests/query-suite/go-code-quality-extended.qls.expected @@ -0,0 +1,22 @@ +ql/go/ql/src/InconsistentCode/ConstantLengthComparison.ql +ql/go/ql/src/InconsistentCode/InconsistentLoopOrientation.ql +ql/go/ql/src/InconsistentCode/LengthComparisonOffByOne.ql +ql/go/ql/src/InconsistentCode/MissingErrorCheck.ql +ql/go/ql/src/InconsistentCode/MistypedExponentiation.ql +ql/go/ql/src/InconsistentCode/UnhandledCloseWritableHandle.ql +ql/go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql +ql/go/ql/src/InconsistentCode/WrappedErrorAlwaysNil.ql +ql/go/ql/src/RedundantCode/CompareIdenticalValues.ql +ql/go/ql/src/RedundantCode/DeadStoreOfField.ql +ql/go/ql/src/RedundantCode/DeadStoreOfLocal.ql +ql/go/ql/src/RedundantCode/DuplicateBranches.ql +ql/go/ql/src/RedundantCode/DuplicateCondition.ql +ql/go/ql/src/RedundantCode/DuplicateSwitchCase.ql +ql/go/ql/src/RedundantCode/ExprHasNoEffect.ql +ql/go/ql/src/RedundantCode/ImpossibleInterfaceNilCheck.ql +ql/go/ql/src/RedundantCode/NegativeLengthCheck.ql +ql/go/ql/src/RedundantCode/RedundantExpr.ql +ql/go/ql/src/RedundantCode/RedundantRecover.ql +ql/go/ql/src/RedundantCode/SelfAssignment.ql +ql/go/ql/src/RedundantCode/ShiftOutOfRange.ql +ql/go/ql/src/RedundantCode/UnreachableStatement.ql diff --git a/go/ql/integration-tests/query-suite/go-code-quality.qls.expected b/go/ql/integration-tests/query-suite/go-code-quality.qls.expected index 236c285ece05..7eb72f2abc21 100644 --- a/go/ql/integration-tests/query-suite/go-code-quality.qls.expected +++ b/go/ql/integration-tests/query-suite/go-code-quality.qls.expected @@ -1,6 +1,22 @@ +ql/go/ql/src/InconsistentCode/ConstantLengthComparison.ql +ql/go/ql/src/InconsistentCode/InconsistentLoopOrientation.ql ql/go/ql/src/InconsistentCode/LengthComparisonOffByOne.ql ql/go/ql/src/InconsistentCode/MissingErrorCheck.ql +ql/go/ql/src/InconsistentCode/MistypedExponentiation.ql ql/go/ql/src/InconsistentCode/UnhandledCloseWritableHandle.ql +ql/go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql ql/go/ql/src/InconsistentCode/WrappedErrorAlwaysNil.ql +ql/go/ql/src/RedundantCode/CompareIdenticalValues.ql +ql/go/ql/src/RedundantCode/DeadStoreOfField.ql +ql/go/ql/src/RedundantCode/DeadStoreOfLocal.ql +ql/go/ql/src/RedundantCode/DuplicateBranches.ql +ql/go/ql/src/RedundantCode/DuplicateCondition.ql +ql/go/ql/src/RedundantCode/DuplicateSwitchCase.ql +ql/go/ql/src/RedundantCode/ExprHasNoEffect.ql +ql/go/ql/src/RedundantCode/ImpossibleInterfaceNilCheck.ql ql/go/ql/src/RedundantCode/NegativeLengthCheck.ql +ql/go/ql/src/RedundantCode/RedundantExpr.ql ql/go/ql/src/RedundantCode/RedundantRecover.ql +ql/go/ql/src/RedundantCode/SelfAssignment.ql +ql/go/ql/src/RedundantCode/ShiftOutOfRange.ql +ql/go/ql/src/RedundantCode/UnreachableStatement.ql diff --git a/go/ql/integration-tests/query-suite/test.py b/go/ql/integration-tests/query-suite/test.py index d4c6f9f37099..fa48acf32b5f 100644 --- a/go/ql/integration-tests/query-suite/test.py +++ b/go/ql/integration-tests/query-suite/test.py @@ -2,7 +2,7 @@ import pytest from query_suites import * -well_known_query_suites = ['go-code-quality.qls', 'go-security-and-quality.qls', 'go-security-extended.qls', 'go-code-scanning.qls'] +well_known_query_suites = ['go-code-quality.qls', 'go-code-quality-extended.qls', 'go-security-and-quality.qls', 'go-security-extended.qls', 'go-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 879662575e20..c5fac252869a 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.2.8 + +No user-facing changes. + ## 4.2.7 ### Minor Analysis Improvements diff --git a/go/ql/lib/change-notes/2025-06-03-fix-definedtype-getbasetype.md b/go/ql/lib/change-notes/2025-06-03-fix-definedtype-getbasetype.md new file mode 100644 index 000000000000..b58ebf64f09a --- /dev/null +++ b/go/ql/lib/change-notes/2025-06-03-fix-definedtype-getbasetype.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Previously, `DefinedType.getBaseType` gave the underlying type. It now gives the right hand side of the type declaration, as the documentation indicated that it should. diff --git a/go/ql/lib/change-notes/2025-06-05-deprecate-DeclaredType-BuiltinType.md b/go/ql/lib/change-notes/2025-06-05-deprecate-DeclaredType-BuiltinType.md new file mode 100644 index 000000000000..6744743ea27a --- /dev/null +++ b/go/ql/lib/change-notes/2025-06-05-deprecate-DeclaredType-BuiltinType.md @@ -0,0 +1,5 @@ +--- +category: deprecated +--- +* The class `BuiltinType` is now deprecated. Use the new replacement `BuiltinTypeEntity` instead. +* The class `DeclaredType` is now deprecated. Use the new replacement `DeclaredTypeEntity` instead. diff --git a/go/ql/lib/change-notes/released/4.2.8.md b/go/ql/lib/change-notes/released/4.2.8.md new file mode 100644 index 000000000000..9b1c8820dc44 --- /dev/null +++ b/go/ql/lib/change-notes/released/4.2.8.md @@ -0,0 +1,3 @@ +## 4.2.8 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 0c0ee7d4dfd5..9b51fbc5ce54 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.2.7 +lastReleaseVersion: 4.2.8 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 6cf364479830..44d63e64e3b3 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 4.2.7 +version: 4.2.9-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/lib/semmle/go/Decls.qll b/go/ql/lib/semmle/go/Decls.qll index 785a09b25499..9d1e4d2611a9 100644 --- a/go/ql/lib/semmle/go/Decls.qll +++ b/go/ql/lib/semmle/go/Decls.qll @@ -381,10 +381,20 @@ class TypeSpec extends @typespec, Spec, TypeParamDeclParent { string getName() { result = this.getNameExpr().getName() } /** - * Gets the expression denoting the underlying type to which the newly declared type is bound. + * Gets the declared type of this specifier. + * + * Note that for alias types this will give the underlying type. + */ + Type getDeclaredType() { result = this.getNameExpr().getType() } + + /** + * Gets the expression denoting the underlying type to which the declared type is bound. */ Expr getTypeExpr() { result = this.getChildExpr(1) } + /** Gets the underlying type to which the declared type is bound. */ + Type getRhsType() { result = this.getTypeExpr().getType() } + override string toString() { result = "type declaration specifier" } override string getAPrimaryQlClass() { result = "TypeSpec" } @@ -461,6 +471,7 @@ class FieldBase extends @field, ExprParent { * Examples: * * ```go + * io.Reader * Name string `json:"name"` * x, y int * ``` @@ -469,8 +480,9 @@ class FieldBase extends @field, ExprParent { * * ```go * struct { - * Name string `json:"name"` - * x, y int + * io.Reader // embedded field + * Name string `json:"name"` // field with tag + * x, y int // declares two fields with the same type * } * ``` */ @@ -482,12 +494,24 @@ class FieldDecl extends FieldBase, Documentable, ExprParent { /** * Gets the expression representing the name of the `i`th field declared in this declaration * (0-based). + * + * This is not defined for embedded fields. */ Expr getNameExpr(int i) { i >= 0 and result = this.getChildExpr(i + 1) } + /** + * Gets the `i`th field declared in this declaration (0-based). + * + * This is not defined for embedded fields. + */ + Field getField(int i) { this.getNameExpr(i).(Ident).declares(result) } + + /** Holds if this field declaration declares an embedded type. */ + predicate isEmbedded() { not exists(this.getNameExpr(_)) } + /** Gets the tag expression of this field declaration, if any. */ Expr getTag() { result = this.getChildExpr(-1) } diff --git a/go/ql/lib/semmle/go/Scopes.qll b/go/ql/lib/semmle/go/Scopes.qll index 82b4db7e3221..2ab08b5b5b4f 100644 --- a/go/ql/lib/semmle/go/Scopes.qll +++ b/go/ql/lib/semmle/go/Scopes.qll @@ -202,13 +202,19 @@ class TypeEntity extends Entity, @typeobject { } class TypeParamParentEntity extends Entity, @typeparamparentobject { } /** A named type which has a declaration. */ -class DeclaredType extends TypeEntity, DeclaredEntity, TypeParamParentEntity, @decltypeobject { +class DeclaredTypeEntity extends TypeEntity, DeclaredEntity, TypeParamParentEntity, @decltypeobject { /** Gets the declaration specifier declaring this type. */ TypeSpec getSpec() { result.getNameExpr() = this.getDeclaration() } } +/** DEPRECATED: Use `DeclaredTypeEntity` instead. */ +deprecated class DeclaredType = DeclaredTypeEntity; + /** A built-in type. */ -class BuiltinType extends TypeEntity, BuiltinEntity, @builtintypeobject { } +class BuiltinTypeEntity extends TypeEntity, BuiltinEntity, @builtintypeobject { } + +/** DEPRECATED: Use `BuiltinTypeEntity` instead. */ +deprecated class BuiltinType = BuiltinTypeEntity; /** A built-in or declared constant, variable, field, method or function. */ class ValueEntity extends Entity, @valueobject { @@ -754,64 +760,64 @@ private predicate builtinFunction( module Builtin { // built-in types /** Gets the built-in type `bool`. */ - BuiltinType bool() { result.getName() = "bool" } + BuiltinTypeEntity bool() { result.getName() = "bool" } /** Gets the built-in type `byte`. */ - BuiltinType byte() { result.getName() = "byte" } + BuiltinTypeEntity byte() { result.getName() = "byte" } /** Gets the built-in type `complex64`. */ - BuiltinType complex64() { result.getName() = "complex64" } + BuiltinTypeEntity complex64() { result.getName() = "complex64" } /** Gets the built-in type `complex128`. */ - BuiltinType complex128() { result.getName() = "complex128" } + BuiltinTypeEntity complex128() { result.getName() = "complex128" } /** Gets the built-in type `error`. */ - BuiltinType error() { result.getName() = "error" } + BuiltinTypeEntity error() { result.getName() = "error" } /** Gets the built-in type `float32`. */ - BuiltinType float32() { result.getName() = "float32" } + BuiltinTypeEntity float32() { result.getName() = "float32" } /** Gets the built-in type `float64`. */ - BuiltinType float64() { result.getName() = "float64" } + BuiltinTypeEntity float64() { result.getName() = "float64" } /** Gets the built-in type `int`. */ - BuiltinType int_() { result.getName() = "int" } + BuiltinTypeEntity int_() { result.getName() = "int" } /** Gets the built-in type `int8`. */ - BuiltinType int8() { result.getName() = "int8" } + BuiltinTypeEntity int8() { result.getName() = "int8" } /** Gets the built-in type `int16`. */ - BuiltinType int16() { result.getName() = "int16" } + BuiltinTypeEntity int16() { result.getName() = "int16" } /** Gets the built-in type `int32`. */ - BuiltinType int32() { result.getName() = "int32" } + BuiltinTypeEntity int32() { result.getName() = "int32" } /** Gets the built-in type `int64`. */ - BuiltinType int64() { result.getName() = "int64" } + BuiltinTypeEntity int64() { result.getName() = "int64" } /** Gets the built-in type `rune`. */ - BuiltinType rune() { result.getName() = "rune" } + BuiltinTypeEntity rune() { result.getName() = "rune" } /** Gets the built-in type `string`. */ - BuiltinType string_() { result.getName() = "string" } + BuiltinTypeEntity string_() { result.getName() = "string" } /** Gets the built-in type `uint`. */ - BuiltinType uint() { result.getName() = "uint" } + BuiltinTypeEntity uint() { result.getName() = "uint" } /** Gets the built-in type `uint8`. */ - BuiltinType uint8() { result.getName() = "uint8" } + BuiltinTypeEntity uint8() { result.getName() = "uint8" } /** Gets the built-in type `uint16`. */ - BuiltinType uint16() { result.getName() = "uint16" } + BuiltinTypeEntity uint16() { result.getName() = "uint16" } /** Gets the built-in type `uint32`. */ - BuiltinType uint32() { result.getName() = "uint32" } + BuiltinTypeEntity uint32() { result.getName() = "uint32" } /** Gets the built-in type `uint64`. */ - BuiltinType uint64() { result.getName() = "uint64" } + BuiltinTypeEntity uint64() { result.getName() = "uint64" } /** Gets the built-in type `uintptr`. */ - BuiltinType uintptr() { result.getName() = "uintptr" } + BuiltinTypeEntity uintptr() { result.getName() = "uintptr" } // built-in constants /** Gets the built-in constant `true`. */ diff --git a/go/ql/lib/semmle/go/Types.qll b/go/ql/lib/semmle/go/Types.qll index d6765f136628..d377cb2c9d87 100644 --- a/go/ql/lib/semmle/go/Types.qll +++ b/go/ql/lib/semmle/go/Types.qll @@ -1038,8 +1038,15 @@ deprecated class NamedType = DefinedType; /** A defined type. */ class DefinedType extends @definedtype, CompositeType { - /** Gets the type which this type is defined to be. */ - Type getBaseType() { underlying_type(this, result) } + /** + * Gets the type which this type is defined to be, if available. + * + * Note that this is only defined for types declared in the project being + * analyzed. It will not be defined for types declared in external packages. + */ + Type getBaseType() { + result = this.getEntity().(DeclaredTypeEntity).getSpec().getTypeExpr().getType() + } override Method getMethod(string m) { result = CompositeType.super.getMethod(m) @@ -1049,7 +1056,7 @@ class DefinedType extends @definedtype, CompositeType { or // handle promoted methods exists(StructType s, Type embedded | - s = this.getBaseType() and + s = this.getUnderlyingType() and s.hasOwnField(_, _, embedded, true) and // ensure `m` can be promoted not s.hasOwnField(_, m, _, _) and @@ -1063,7 +1070,7 @@ class DefinedType extends @definedtype, CompositeType { ) } - override Type getUnderlyingType() { result = this.getBaseType().getUnderlyingType() } + override Type getUnderlyingType() { underlying_type(this, result) } } /** diff --git a/go/ql/lib/semmle/go/security/CleartextLogging.qll b/go/ql/lib/semmle/go/security/CleartextLogging.qll index 2e0c9665c4b6..5218d03d9081 100644 --- a/go/ql/lib/semmle/go/security/CleartextLogging.qll +++ b/go/ql/lib/semmle/go/security/CleartextLogging.qll @@ -46,6 +46,8 @@ module CleartextLogging { // Also exclude protobuf field fetches, since they amount to single field reads. not any(Protobuf::GetMethod gm).taintStep(src, trg) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/lib/semmle/go/security/ExternalAPIs.qll b/go/ql/lib/semmle/go/security/ExternalAPIs.qll index 6799099b999f..4a561c17136e 100644 --- a/go/ql/lib/semmle/go/security/ExternalAPIs.qll +++ b/go/ql/lib/semmle/go/security/ExternalAPIs.qll @@ -197,6 +197,8 @@ private module UntrustedDataToUnknownExternalApiConfig implements DataFlow::Conf predicate isSource(DataFlow::Node source) { source instanceof ActiveThreatModelSource } predicate isSink(DataFlow::Node sink) { sink instanceof UnknownExternalApiDataNode } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/lib/semmle/go/security/LogInjection.qll b/go/ql/lib/semmle/go/security/LogInjection.qll index d8bc586ed916..3db7e27c7815 100644 --- a/go/ql/lib/semmle/go/security/LogInjection.qll +++ b/go/ql/lib/semmle/go/security/LogInjection.qll @@ -21,6 +21,8 @@ module LogInjection { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about log injection vulnerabilities. */ diff --git a/go/ql/lib/semmle/go/security/MissingJwtSignatureCheck.qll b/go/ql/lib/semmle/go/security/MissingJwtSignatureCheck.qll index 73605d65b024..15afe81944ff 100644 --- a/go/ql/lib/semmle/go/security/MissingJwtSignatureCheck.qll +++ b/go/ql/lib/semmle/go/security/MissingJwtSignatureCheck.qll @@ -23,6 +23,8 @@ module MissingJwtSignatureCheck { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(AdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about JWT vulnerabilities. */ diff --git a/go/ql/lib/semmle/go/security/OpenUrlRedirect.qll b/go/ql/lib/semmle/go/security/OpenUrlRedirect.qll index bfe47f260cd6..1d2d7a1c60bb 100644 --- a/go/ql/lib/semmle/go/security/OpenUrlRedirect.qll +++ b/go/ql/lib/semmle/go/security/OpenUrlRedirect.qll @@ -54,6 +54,8 @@ module OpenUrlRedirect { or hostnameSanitizingPrefixEdge(node, _) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow from unvalidated, untrusted data to URL redirections. */ diff --git a/go/ql/lib/semmle/go/security/SqlInjection.qll b/go/ql/lib/semmle/go/security/SqlInjection.qll index e24b30f40d38..5b7513090258 100644 --- a/go/ql/lib/semmle/go/security/SqlInjection.qll +++ b/go/ql/lib/semmle/go/security/SqlInjection.qll @@ -23,6 +23,8 @@ module SqlInjection { } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about SQL-injection vulnerabilities. */ diff --git a/go/ql/lib/semmle/go/security/StoredCommand.qll b/go/ql/lib/semmle/go/security/StoredCommand.qll index 38555370cfcc..983f739bdab2 100644 --- a/go/ql/lib/semmle/go/security/StoredCommand.qll +++ b/go/ql/lib/semmle/go/security/StoredCommand.qll @@ -26,6 +26,8 @@ module StoredCommand { predicate isSink(DataFlow::Node sink) { sink instanceof CommandInjection::Sink } predicate isBarrier(DataFlow::Node node) { node instanceof CommandInjection::Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about command-injection vulnerabilities. */ diff --git a/go/ql/lib/semmle/go/security/StoredXss.qll b/go/ql/lib/semmle/go/security/StoredXss.qll index 2bf6bf248048..3bea8e8c1e00 100644 --- a/go/ql/lib/semmle/go/security/StoredXss.qll +++ b/go/ql/lib/semmle/go/security/StoredXss.qll @@ -22,6 +22,8 @@ module StoredXss { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about XSS. */ diff --git a/go/ql/lib/semmle/go/security/StringBreak.qll b/go/ql/lib/semmle/go/security/StringBreak.qll index 02b4c5b3313b..87a676b6f97f 100644 --- a/go/ql/lib/semmle/go/security/StringBreak.qll +++ b/go/ql/lib/semmle/go/security/StringBreak.qll @@ -26,6 +26,8 @@ module StringBreak { predicate isBarrier(DataFlow::Node node, FlowState state) { state = node.(Sanitizer).getQuote() } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/lib/semmle/go/security/TaintedPath.qll b/go/ql/lib/semmle/go/security/TaintedPath.qll index 674cda1157cf..b814ad5d4ac6 100644 --- a/go/ql/lib/semmle/go/security/TaintedPath.qll +++ b/go/ql/lib/semmle/go/security/TaintedPath.qll @@ -17,6 +17,8 @@ module TaintedPath { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about path-traversal vulnerabilities. */ diff --git a/go/ql/lib/semmle/go/security/UncontrolledAllocationSize.qll b/go/ql/lib/semmle/go/security/UncontrolledAllocationSize.qll index 885aa7a7053c..91bbcfaa1edd 100644 --- a/go/ql/lib/semmle/go/security/UncontrolledAllocationSize.qll +++ b/go/ql/lib/semmle/go/security/UncontrolledAllocationSize.qll @@ -27,6 +27,8 @@ module UncontrolledAllocationSize { node2 = cn.getResult(0) ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about uncontrolled allocation size issues. */ diff --git a/go/ql/lib/semmle/go/security/UnsafeUnzipSymlink.qll b/go/ql/lib/semmle/go/security/UnsafeUnzipSymlink.qll index 1d18ac5f639a..19047b12b788 100644 --- a/go/ql/lib/semmle/go/security/UnsafeUnzipSymlink.qll +++ b/go/ql/lib/semmle/go/security/UnsafeUnzipSymlink.qll @@ -44,6 +44,8 @@ module UnsafeUnzipSymlink { predicate isSink(DataFlow::Node sink) { sink instanceof SymlinkSink } predicate isBarrier(DataFlow::Node node) { node instanceof SymlinkSanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/lib/semmle/go/security/XPathInjection.qll b/go/ql/lib/semmle/go/security/XPathInjection.qll index 61bd00977daf..900b81053370 100644 --- a/go/ql/lib/semmle/go/security/XPathInjection.qll +++ b/go/ql/lib/semmle/go/security/XPathInjection.qll @@ -19,6 +19,8 @@ module XPathInjection { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/lib/semmle/go/security/ZipSlip.qll b/go/ql/lib/semmle/go/security/ZipSlip.qll index f16daf84c3dd..6de2be91509a 100644 --- a/go/ql/lib/semmle/go/security/ZipSlip.qll +++ b/go/ql/lib/semmle/go/security/ZipSlip.qll @@ -17,6 +17,8 @@ module ZipSlip { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about zip-slip vulnerabilities. */ diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index b711743ccc9a..521c13208390 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,8 +1,32 @@ +## 1.4.0 + +### Query Metadata Changes + +* The tag `quality` has been added to multiple Go quality queries for consistency. They have all been given a tag for one of the two top-level categories `reliability` or `maintainability`, and a tag for a sub-category. See [Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags) for more information about these categories. +* The tag `external/cwe/cwe-129` has been added to `go/constant-length-comparison`. +* The tag `external/cwe/cwe-193` has been added to `go/index-out-of-bounds`. +* The tag `external/cwe/cwe-197` has been added to `go/shift-out-of-range`. +* The tag `external/cwe/cwe-248` has been added to `go/redundant-recover`. +* The tag `external/cwe/cwe-252` has been added to `go/missing-error-check` and `go/unhandled-writable-file-close`. +* The tag `external/cwe/cwe-480` has been added to `go/mistyped-exponentiation`. +* The tag `external/cwe/cwe-570` has been added to `go/impossible-interface-nil-check` and `go/comparison-of-identical-expressions`. +* The tag `external/cwe/cwe-571` has been added to `go/negative-length-check` and `go/comparison-of-identical-expressions`. +* The tag `external/cwe/cwe-783` has been added to `go/whitespace-contradicts-precedence`. +* The tag `external/cwe/cwe-835` has been added to `go/inconsistent-loop-direction`. +* The tag `error-handling` has been added to `go/missing-error-check`, `go/unhandled-writable-file-close`, and `go/unexpected-nil-value`. +* The tag `useless-code` has been added to `go/useless-assignment-to-field`, `go/useless-assignment-to-local`, `go/useless-expression`, and `go/unreachable-statement`. +* The tag `logic` has been removed from `go/index-out-of-bounds` and `go/unexpected-nil-value`. +* The tags `call` and `defer` have been removed from `go/unhandled-writable-file-close`. +* The tags `correctness` and `quality` have been reordered in `go/missing-error-check` and `go/unhandled-writable-file-close`. +* The tag `maintainability` has been changed to `reliability` for `go/unhandled-writable-file-close`. +* The tag order has been standardized to have `quality` first, followed by the top-level category (`reliability` or `maintainability`), then sub-category tags, and finally CWE tags. +* The description text has been updated in `go/whitespace-contradicts-precedence` to change "may even indicate" to "may indicate". + ## 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 . +* 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 diff --git a/go/ql/src/InconsistentCode/ConstantLengthComparison.ql b/go/ql/src/InconsistentCode/ConstantLengthComparison.ql index c60e093650fc..d0bcec7a89cb 100644 --- a/go/ql/src/InconsistentCode/ConstantLengthComparison.ql +++ b/go/ql/src/InconsistentCode/ConstantLengthComparison.ql @@ -5,7 +5,10 @@ * @kind problem * @problem.severity warning * @id go/constant-length-comparison - * @tags correctness + * @tags quality + * reliability + * correctness + * external/cwe/cwe-129 * @precision high */ diff --git a/go/ql/src/InconsistentCode/InconsistentLoopOrientation.ql b/go/ql/src/InconsistentCode/InconsistentLoopOrientation.ql index fa5051ed5c72..c200ea010b22 100644 --- a/go/ql/src/InconsistentCode/InconsistentLoopOrientation.ql +++ b/go/ql/src/InconsistentCode/InconsistentLoopOrientation.ql @@ -8,7 +8,9 @@ * @kind problem * @problem.severity error * @id go/inconsistent-loop-direction - * @tags correctness + * @tags quality + * reliability + * correctness * external/cwe/cwe-835 * @precision very-high */ diff --git a/go/ql/src/InconsistentCode/LengthComparisonOffByOne.ql b/go/ql/src/InconsistentCode/LengthComparisonOffByOne.ql index 436eb8a8fe51..176e34bc9bbb 100644 --- a/go/ql/src/InconsistentCode/LengthComparisonOffByOne.ql +++ b/go/ql/src/InconsistentCode/LengthComparisonOffByOne.ql @@ -5,10 +5,9 @@ * @kind problem * @problem.severity error * @id go/index-out-of-bounds - * @tags reliability + * @tags quality + * reliability * correctness - * logic - * quality * external/cwe/cwe-193 * @precision high */ diff --git a/go/ql/src/InconsistentCode/MissingErrorCheck.ql b/go/ql/src/InconsistentCode/MissingErrorCheck.ql index 9acd7e136022..8e277c6ae747 100644 --- a/go/ql/src/InconsistentCode/MissingErrorCheck.ql +++ b/go/ql/src/InconsistentCode/MissingErrorCheck.ql @@ -5,10 +5,10 @@ * @kind problem * @problem.severity warning * @id go/missing-error-check - * @tags reliability - * correctness - * logic - * quality + * @tags quality + * reliability + * error-handling + * external/cwe/cwe-252 * @precision high */ diff --git a/go/ql/src/InconsistentCode/MistypedExponentiation.ql b/go/ql/src/InconsistentCode/MistypedExponentiation.ql index 989f536f3a55..b445a713ce6f 100644 --- a/go/ql/src/InconsistentCode/MistypedExponentiation.ql +++ b/go/ql/src/InconsistentCode/MistypedExponentiation.ql @@ -4,7 +4,10 @@ * @kind problem * @problem.severity warning * @id go/mistyped-exponentiation - * @tags correctness + * @tags quality + * reliability + * correctness + * external/cwe/cwe-480 * @precision high */ diff --git a/go/ql/src/InconsistentCode/UnhandledCloseWritableHandle.ql b/go/ql/src/InconsistentCode/UnhandledCloseWritableHandle.ql index 051e4644cc7c..d3210c48011e 100644 --- a/go/ql/src/InconsistentCode/UnhandledCloseWritableHandle.ql +++ b/go/ql/src/InconsistentCode/UnhandledCloseWritableHandle.ql @@ -7,11 +7,10 @@ * @problem.severity warning * @precision high * @id go/unhandled-writable-file-close - * @tags maintainability - * correctness - * call - * defer - * quality + * @tags quality + * reliability + * error-handling + * external/cwe/cwe-252 */ import go diff --git a/go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql b/go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql index f2303cf08a61..7e2846cf6b2f 100644 --- a/go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql +++ b/go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql @@ -1,11 +1,12 @@ /** * @name Whitespace contradicts operator precedence * @description Nested expressions where the formatting contradicts the grouping enforced by operator precedence - * are difficult to read and may even indicate a bug. + * are difficult to read and may indicate a bug. * @kind problem * @problem.severity warning * @id go/whitespace-contradicts-precedence - * @tags maintainability + * @tags quality + * reliability * correctness * external/cwe/cwe-783 * @precision very-high diff --git a/go/ql/src/InconsistentCode/WrappedErrorAlwaysNil.ql b/go/ql/src/InconsistentCode/WrappedErrorAlwaysNil.ql index fac236c7f036..8c6fcab7d282 100644 --- a/go/ql/src/InconsistentCode/WrappedErrorAlwaysNil.ql +++ b/go/ql/src/InconsistentCode/WrappedErrorAlwaysNil.ql @@ -4,10 +4,9 @@ * @kind problem * @problem.severity warning * @id go/unexpected-nil-value - * @tags reliability - * correctness - * logic - * quality + * @tags quality + * reliability + * error-handling * @precision high */ diff --git a/go/ql/src/RedundantCode/CompareIdenticalValues.ql b/go/ql/src/RedundantCode/CompareIdenticalValues.ql index cd4d9d6dbfa2..43be53387351 100644 --- a/go/ql/src/RedundantCode/CompareIdenticalValues.ql +++ b/go/ql/src/RedundantCode/CompareIdenticalValues.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity warning * @id go/comparison-of-identical-expressions - * @tags correctness + * @tags quality + * reliability + * correctness * external/cwe/cwe-570 * external/cwe/cwe-571 * @precision very-high diff --git a/go/ql/src/RedundantCode/DeadStoreOfField.ql b/go/ql/src/RedundantCode/DeadStoreOfField.ql index edc1d62cb00d..be3a77d3ac78 100644 --- a/go/ql/src/RedundantCode/DeadStoreOfField.ql +++ b/go/ql/src/RedundantCode/DeadStoreOfField.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity warning * @id go/useless-assignment-to-field - * @tags maintainability + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-563 * @precision very-high */ diff --git a/go/ql/src/RedundantCode/DeadStoreOfLocal.ql b/go/ql/src/RedundantCode/DeadStoreOfLocal.ql index d6e7351a76d7..3e3642f92db1 100644 --- a/go/ql/src/RedundantCode/DeadStoreOfLocal.ql +++ b/go/ql/src/RedundantCode/DeadStoreOfLocal.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity warning * @id go/useless-assignment-to-local - * @tags maintainability + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-563 * @precision very-high */ diff --git a/go/ql/src/RedundantCode/DuplicateBranches.ql b/go/ql/src/RedundantCode/DuplicateBranches.ql index c6aa7523e28e..589aa55246cd 100644 --- a/go/ql/src/RedundantCode/DuplicateBranches.ql +++ b/go/ql/src/RedundantCode/DuplicateBranches.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision very-high * @id go/duplicate-branches - * @tags maintainability + * @tags quality + * reliability * correctness * external/cwe/cwe-561 */ diff --git a/go/ql/src/RedundantCode/DuplicateCondition.ql b/go/ql/src/RedundantCode/DuplicateCondition.ql index fb031044e47d..e0ea97980438 100644 --- a/go/ql/src/RedundantCode/DuplicateCondition.ql +++ b/go/ql/src/RedundantCode/DuplicateCondition.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity error * @id go/duplicate-condition - * @tags maintainability + * @tags quality + * reliability * correctness * external/cwe/cwe-561 * @precision very-high diff --git a/go/ql/src/RedundantCode/DuplicateSwitchCase.ql b/go/ql/src/RedundantCode/DuplicateSwitchCase.ql index 3096f3bef942..b10ed6a794c0 100644 --- a/go/ql/src/RedundantCode/DuplicateSwitchCase.ql +++ b/go/ql/src/RedundantCode/DuplicateSwitchCase.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity error * @id go/duplicate-switch-case - * @tags maintainability + * @tags quality + * reliability * correctness * external/cwe/cwe-561 * @precision very-high diff --git a/go/ql/src/RedundantCode/ExprHasNoEffect.ql b/go/ql/src/RedundantCode/ExprHasNoEffect.ql index 5b722cfdbf7b..ba879054faf5 100644 --- a/go/ql/src/RedundantCode/ExprHasNoEffect.ql +++ b/go/ql/src/RedundantCode/ExprHasNoEffect.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity warning * @id go/useless-expression - * @tags maintainability + * @tags quality + * reliability * correctness * external/cwe/cwe-480 * external/cwe/cwe-561 diff --git a/go/ql/src/RedundantCode/ImpossibleInterfaceNilCheck.ql b/go/ql/src/RedundantCode/ImpossibleInterfaceNilCheck.ql index 8fe764ee88fa..c5aeb287358a 100644 --- a/go/ql/src/RedundantCode/ImpossibleInterfaceNilCheck.ql +++ b/go/ql/src/RedundantCode/ImpossibleInterfaceNilCheck.ql @@ -4,7 +4,10 @@ * @kind problem * @problem.severity warning * @id go/impossible-interface-nil-check - * @tags correctness + * @tags quality + * reliability + * correctness + * external/cwe/cwe-570 * @precision high */ diff --git a/go/ql/src/RedundantCode/NegativeLengthCheck.ql b/go/ql/src/RedundantCode/NegativeLengthCheck.ql index adac6fe78d97..443ec37154fd 100644 --- a/go/ql/src/RedundantCode/NegativeLengthCheck.ql +++ b/go/ql/src/RedundantCode/NegativeLengthCheck.ql @@ -8,8 +8,10 @@ * @problem.severity warning * @precision very-high * @id go/negative-length-check - * @tags correctness - * quality + * @tags quality + * reliability + * correctness + * external/cwe/cwe-571 */ import go diff --git a/go/ql/src/RedundantCode/RedundantExpr.ql b/go/ql/src/RedundantCode/RedundantExpr.ql index c4b0ea912f53..49cc06125e34 100644 --- a/go/ql/src/RedundantCode/RedundantExpr.ql +++ b/go/ql/src/RedundantCode/RedundantExpr.ql @@ -6,7 +6,9 @@ * @kind problem * @problem.severity warning * @id go/redundant-operation - * @tags correctness + * @tags quality + * reliability + * correctness * external/cwe/cwe-480 * external/cwe/cwe-561 * @precision very-high diff --git a/go/ql/src/RedundantCode/RedundantRecover.ql b/go/ql/src/RedundantCode/RedundantRecover.ql index 08fc06727e5c..40d415257e0a 100644 --- a/go/ql/src/RedundantCode/RedundantRecover.ql +++ b/go/ql/src/RedundantCode/RedundantRecover.ql @@ -6,9 +6,10 @@ * @kind problem * @problem.severity warning * @id go/redundant-recover - * @tags maintainability + * @tags quality + * reliability * correctness - * quality + * external/cwe/cwe-248 * @precision high */ diff --git a/go/ql/src/RedundantCode/SelfAssignment.ql b/go/ql/src/RedundantCode/SelfAssignment.ql index ca1c96147515..2b4701f2f7d1 100644 --- a/go/ql/src/RedundantCode/SelfAssignment.ql +++ b/go/ql/src/RedundantCode/SelfAssignment.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity warning * @id go/redundant-assignment - * @tags correctness + * @tags quality + * reliability + * correctness * external/cwe/cwe-480 * external/cwe/cwe-561 * @precision high diff --git a/go/ql/src/RedundantCode/ShiftOutOfRange.ql b/go/ql/src/RedundantCode/ShiftOutOfRange.ql index 275cae3bbebd..942a9cdbdab0 100644 --- a/go/ql/src/RedundantCode/ShiftOutOfRange.ql +++ b/go/ql/src/RedundantCode/ShiftOutOfRange.ql @@ -6,7 +6,9 @@ * @problem.severity warning * @id go/shift-out-of-range * @precision very-high - * @tags correctness + * @tags quality + * reliability + * correctness * external/cwe/cwe-197 */ diff --git a/go/ql/src/RedundantCode/UnreachableStatement.ql b/go/ql/src/RedundantCode/UnreachableStatement.ql index e67b3c4915f1..c177705a86f4 100644 --- a/go/ql/src/RedundantCode/UnreachableStatement.ql +++ b/go/ql/src/RedundantCode/UnreachableStatement.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity warning * @id go/unreachable-statement - * @tags maintainability + * @tags quality + * reliability * correctness * external/cwe/cwe-561 * @precision very-high diff --git a/go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.ql b/go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.ql index 89954b08f991..f6e3df7d1d91 100644 --- a/go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.ql +++ b/go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.ql @@ -103,6 +103,8 @@ module IncompleteHostNameRegexpConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { StringOps::Concatenation::taintStep(node1, node2) } + + predicate observeDiffInformedIncrementalMode() { any() } } module Flow = DataFlow::Global; diff --git a/go/ql/src/Security/CWE-020/MissingRegexpAnchor.ql b/go/ql/src/Security/CWE-020/MissingRegexpAnchor.ql index a478968e58b9..43a24b1aef36 100644 --- a/go/ql/src/Security/CWE-020/MissingRegexpAnchor.ql +++ b/go/ql/src/Security/CWE-020/MissingRegexpAnchor.ql @@ -72,6 +72,10 @@ module Config implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { isSourceString(source, _) } predicate isSink(DataFlow::Node sink) { sink instanceof RegexpPattern } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSinkLocation(DataFlow::Node sink) { none() } } module Flow = DataFlow::Global; diff --git a/go/ql/src/Security/CWE-020/SuspiciousCharacterInRegexp.ql b/go/ql/src/Security/CWE-020/SuspiciousCharacterInRegexp.ql index e58cf8644904..96688298ec39 100644 --- a/go/ql/src/Security/CWE-020/SuspiciousCharacterInRegexp.ql +++ b/go/ql/src/Security/CWE-020/SuspiciousCharacterInRegexp.ql @@ -40,6 +40,8 @@ module SuspiciousCharacterInRegexpConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { isSourceString(source, _) } predicate isSink(DataFlow::Node sink) { sink instanceof RegexpPattern } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql b/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql index 0618c8e88885..15373ee85edf 100644 --- a/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql +++ b/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql @@ -101,6 +101,8 @@ module UntrustedToTemplateExecWithConversionConfig implements DataFlow::StateCon conversion.getType().getUnderlyingType*() = unescapedType ) } + + predicate observeDiffInformedIncrementalMode() { any() } } module UntrustedToTemplateExecWithConversionFlow = diff --git a/go/ql/src/Security/CWE-209/StackTraceExposure.ql b/go/ql/src/Security/CWE-209/StackTraceExposure.ql index 3440fdba3148..408e12b3c15e 100644 --- a/go/ql/src/Security/CWE-209/StackTraceExposure.ql +++ b/go/ql/src/Security/CWE-209/StackTraceExposure.ql @@ -62,6 +62,8 @@ module StackTraceExposureConfig implements DataFlow::ConfigSig { cgn.dominates(node.getBasicBlock()) ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/Security/CWE-326/InsufficientKeySize.ql b/go/ql/src/Security/CWE-326/InsufficientKeySize.ql index 19db3ef63ae4..5d0ee7ac6ab3 100644 --- a/go/ql/src/Security/CWE-326/InsufficientKeySize.ql +++ b/go/ql/src/Security/CWE-326/InsufficientKeySize.ql @@ -25,6 +25,10 @@ module Config implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node node) { node = DataFlow::BarrierGuard::getABarrierNode() } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** diff --git a/go/ql/src/Security/CWE-352/ConstantOauth2State.ql b/go/ql/src/Security/CWE-352/ConstantOauth2State.ql index 31b6907ffddf..8898a6bb1018 100644 --- a/go/ql/src/Security/CWE-352/ConstantOauth2State.ql +++ b/go/ql/src/Security/CWE-352/ConstantOauth2State.ql @@ -40,6 +40,8 @@ module ConstantStateFlowConfig implements DataFlow::ConfigSig { } predicate isSink(DataFlow::Node sink) { isSinkCall(sink, _) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/Security/CWE-640/EmailInjection.qll b/go/ql/src/Security/CWE-640/EmailInjection.qll index 35b7795ad55f..e3016b44aa1a 100644 --- a/go/ql/src/Security/CWE-640/EmailInjection.qll +++ b/go/ql/src/Security/CWE-640/EmailInjection.qll @@ -20,6 +20,8 @@ module EmailInjection { predicate isSource(DataFlow::Node source) { source instanceof Source } predicate isSink(DataFlow::Node sink) { sink instanceof Sink } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about email-injection vulnerabilities. */ diff --git a/go/ql/src/change-notes/released/1.3.0.md b/go/ql/src/change-notes/released/1.3.0.md index fe0c5a7af3c4..84afeabc50de 100644 --- a/go/ql/src/change-notes/released/1.3.0.md +++ b/go/ql/src/change-notes/released/1.3.0.md @@ -2,4 +2,4 @@ ### 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 . +* 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/change-notes/released/1.4.0.md b/go/ql/src/change-notes/released/1.4.0.md new file mode 100644 index 000000000000..e97351b26ed2 --- /dev/null +++ b/go/ql/src/change-notes/released/1.4.0.md @@ -0,0 +1,23 @@ +## 1.4.0 + +### Query Metadata Changes + +* The tag `quality` has been added to multiple Go quality queries for consistency. They have all been given a tag for one of the two top-level categories `reliability` or `maintainability`, and a tag for a sub-category. See [Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags) for more information about these categories. +* The tag `external/cwe/cwe-129` has been added to `go/constant-length-comparison`. +* The tag `external/cwe/cwe-193` has been added to `go/index-out-of-bounds`. +* The tag `external/cwe/cwe-197` has been added to `go/shift-out-of-range`. +* The tag `external/cwe/cwe-248` has been added to `go/redundant-recover`. +* The tag `external/cwe/cwe-252` has been added to `go/missing-error-check` and `go/unhandled-writable-file-close`. +* The tag `external/cwe/cwe-480` has been added to `go/mistyped-exponentiation`. +* The tag `external/cwe/cwe-570` has been added to `go/impossible-interface-nil-check` and `go/comparison-of-identical-expressions`. +* The tag `external/cwe/cwe-571` has been added to `go/negative-length-check` and `go/comparison-of-identical-expressions`. +* The tag `external/cwe/cwe-783` has been added to `go/whitespace-contradicts-precedence`. +* The tag `external/cwe/cwe-835` has been added to `go/inconsistent-loop-direction`. +* The tag `error-handling` has been added to `go/missing-error-check`, `go/unhandled-writable-file-close`, and `go/unexpected-nil-value`. +* The tag `useless-code` has been added to `go/useless-assignment-to-field`, `go/useless-assignment-to-local`, `go/useless-expression`, and `go/unreachable-statement`. +* The tag `logic` has been removed from `go/index-out-of-bounds` and `go/unexpected-nil-value`. +* The tags `call` and `defer` have been removed from `go/unhandled-writable-file-close`. +* The tags `correctness` and `quality` have been reordered in `go/missing-error-check` and `go/unhandled-writable-file-close`. +* The tag `maintainability` has been changed to `reliability` for `go/unhandled-writable-file-close`. +* The tag order has been standardized to have `quality` first, followed by the top-level category (`reliability` or `maintainability`), then sub-category tags, and finally CWE tags. +* The description text has been updated in `go/whitespace-contradicts-precedence` to change "may even indicate" to "may indicate". diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index ec16350ed6fd..b8b2e97d5086 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.3.0 +lastReleaseVersion: 1.4.0 diff --git a/go/ql/src/codeql-suites/go-code-quality-extended.qls b/go/ql/src/codeql-suites/go-code-quality-extended.qls new file mode 100644 index 000000000000..1ee85cae856c --- /dev/null +++ b/go/ql/src/codeql-suites/go-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/go/ql/src/codeql-suites/go-security-and-quality.qls b/go/ql/src/codeql-suites/go-security-and-quality.qls index 1043f46b27f4..cb026a7700c9 100644 --- a/go/ql/src/codeql-suites/go-security-and-quality.qls +++ b/go/ql/src/codeql-suites/go-security-and-quality.qls @@ -1,4 +1,28 @@ - description: Security-and-quality queries for Go - queries: . -- apply: security-and-quality-selectors.yml +- apply: security-and-frozen-quality-selectors.yml from: codeql/suite-helpers +- include: + id: + - go/comparison-of-identical-expressions + - go/constant-length-comparison + - go/duplicate-branches + - go/duplicate-condition + - go/duplicate-switch-case + - go/impossible-interface-nil-check + - go/inconsistent-loop-direction + - go/index-out-of-bounds + - go/missing-error-check + - go/mistyped-exponentiation + - go/negative-length-check + - go/redundant-assignment + - go/redundant-operation + - go/redundant-recover + - go/shift-out-of-range + - go/unexpected-nil-value + - go/unhandled-writable-file-close + - go/unreachable-statement + - go/useless-assignment-to-field + - go/useless-assignment-to-local + - go/useless-expression + - go/whitespace-contradicts-precedence diff --git a/go/ql/src/experimental/CWE-090/LDAPInjection.qll b/go/ql/src/experimental/CWE-090/LDAPInjection.qll index fd138fa06458..a770666fe93e 100644 --- a/go/ql/src/experimental/CWE-090/LDAPInjection.qll +++ b/go/ql/src/experimental/CWE-090/LDAPInjection.qll @@ -101,6 +101,8 @@ private module LdapInjectionConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof LdapSink } predicate isBarrier(DataFlow::Node node) { node instanceof LdapSanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/experimental/CWE-203/Timing.ql b/go/ql/src/experimental/CWE-203/Timing.ql index ab0b50a657a9..e488adf2f97f 100644 --- a/go/ql/src/experimental/CWE-203/Timing.ql +++ b/go/ql/src/experimental/CWE-203/Timing.ql @@ -102,6 +102,8 @@ module Config implements DataFlow::ConfigSig { } predicate isSink(DataFlow::Node sink) { sink instanceof Sink and not isBadResult(sink) } + + predicate observeDiffInformedIncrementalMode() { any() } } module Flow = TaintTracking::Global; diff --git a/go/ql/src/experimental/CWE-285/PamAuthBypass.ql b/go/ql/src/experimental/CWE-285/PamAuthBypass.ql index 02f47ba2b738..755a023ef625 100644 --- a/go/ql/src/experimental/CWE-285/PamAuthBypass.ql +++ b/go/ql/src/experimental/CWE-285/PamAuthBypass.ql @@ -42,6 +42,10 @@ module PamStartToAcctMgmtConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(PamAcctMgmt p | p.getACall().getReceiver() = sink) } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSinkLocation(DataFlow::Node sink) { none() } } module PamStartToAcctMgmtFlow = TaintTracking::Global; @@ -55,6 +59,10 @@ module PamStartToAuthenticateConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(PamAuthenticate p | p.getACall().getReceiver() = sink) } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSinkLocation(DataFlow::Node sink) { none() } } module PamStartToAuthenticateFlow = TaintTracking::Global; diff --git a/go/ql/src/experimental/CWE-287/ImproperLdapAuthCustomizations.qll b/go/ql/src/experimental/CWE-287/ImproperLdapAuthCustomizations.qll index 7a62041a774a..0a2739eabc79 100644 --- a/go/ql/src/experimental/CWE-287/ImproperLdapAuthCustomizations.qll +++ b/go/ql/src/experimental/CWE-287/ImproperLdapAuthCustomizations.qll @@ -74,6 +74,8 @@ module ImproperLdapAuth { predicate isSink(DataFlow::Node sink) { sink instanceof LdapAuthSink } predicate isBarrier(DataFlow::Node node) { node instanceof LdapSanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/experimental/CWE-321-V2/HardCodedKeys.ql b/go/ql/src/experimental/CWE-321-V2/HardCodedKeys.ql index 39cc2ca99176..0cd5246519bf 100644 --- a/go/ql/src/experimental/CWE-321-V2/HardCodedKeys.ql +++ b/go/ql/src/experimental/CWE-321-V2/HardCodedKeys.ql @@ -33,6 +33,8 @@ module JwtParseWithConstantKeyConfig implements DataFlow::ConfigSig { // second part is the JWT Parsing Functions that get a string or byte as an argument sink = any(JwtParse jp).getKeyArg() } + + predicate observeDiffInformedIncrementalMode() { any() } } module GolangJwtKeyFuncConfig implements DataFlow::ConfigSig { diff --git a/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll b/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll index 1d64d731f507..b9104f1fe096 100644 --- a/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll +++ b/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll @@ -54,6 +54,8 @@ module WeakCryptoAlgorithm { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/experimental/CWE-369/DivideByZero.ql b/go/ql/src/experimental/CWE-369/DivideByZero.ql index b6709b97d712..8afd165832bc 100644 --- a/go/ql/src/experimental/CWE-369/DivideByZero.ql +++ b/go/ql/src/experimental/CWE-369/DivideByZero.ql @@ -45,6 +45,10 @@ module Config implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink = DataFlow::exprNode(any(QuoExpr e).getRightOperand()) } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** diff --git a/go/ql/src/experimental/CWE-74/DsnInjectionCustomizations.qll b/go/ql/src/experimental/CWE-74/DsnInjectionCustomizations.qll index 2c3208550720..88a45d70ba52 100644 --- a/go/ql/src/experimental/CWE-74/DsnInjectionCustomizations.qll +++ b/go/ql/src/experimental/CWE-74/DsnInjectionCustomizations.qll @@ -19,6 +19,8 @@ private module DsnInjectionConfig implements DataFlow::ConfigSig { } predicate isBarrier(DataFlow::Node node) { node instanceof RegexpCheckBarrier } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/experimental/frameworks/DecompressionBombs.qll b/go/ql/src/experimental/frameworks/DecompressionBombs.qll index 5828cd60e523..170104ebd43b 100644 --- a/go/ql/src/experimental/frameworks/DecompressionBombs.qll +++ b/go/ql/src/experimental/frameworks/DecompressionBombs.qll @@ -56,6 +56,8 @@ module DecompressionBomb { addStep.isAdditionalFlowStep(fromNode, fromState, toNode, toState) ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about decompression bomb vulnerabilities. */ diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 8278ece9be56..ad2712943a3c 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.3.0 +version: 1.4.1-dev groups: - go - queries diff --git a/go/ql/test/library-tests/semmle/go/Decl/TypeSpec.expected b/go/ql/test/library-tests/semmle/go/Decl/TypeSpec.expected index 73f614a03f14..d4000d910cf1 100644 --- a/go/ql/test/library-tests/semmle/go/Decl/TypeSpec.expected +++ b/go/ql/test/library-tests/semmle/go/Decl/TypeSpec.expected @@ -1,2 +1,2 @@ -| main.go:3:6:3:15 | type declaration specifier | status | int | def | -| main.go:5:6:5:20 | type declaration specifier | intlist | []int | alias | +| main.go:3:6:3:15 | type declaration specifier | status | status | main.go:3:13:3:15 | int | int | def | +| main.go:5:6:5:20 | type declaration specifier | intlist | []int | main.go:5:16:5:20 | array type | []int | alias | diff --git a/go/ql/test/library-tests/semmle/go/Decl/TypeSpec.ql b/go/ql/test/library-tests/semmle/go/Decl/TypeSpec.ql index 70a527d311c7..bbbc5345ed65 100644 --- a/go/ql/test/library-tests/semmle/go/Decl/TypeSpec.ql +++ b/go/ql/test/library-tests/semmle/go/Decl/TypeSpec.ql @@ -2,4 +2,4 @@ import go from TypeSpec ts, string kind where if ts instanceof AliasSpec then kind = "alias" else kind = "def" -select ts, ts.getName(), ts.getTypeExpr().getType().pp(), kind +select ts, ts.getName(), ts.getDeclaredType().pp(), ts.getTypeExpr(), ts.getRhsType().pp(), kind diff --git a/go/ql/test/library-tests/semmle/go/Types/DefinedType_getBaseType.expected b/go/ql/test/library-tests/semmle/go/Types/DefinedType_getBaseType.expected new file mode 100644 index 000000000000..123c6ac7a359 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/Types/DefinedType_getBaseType.expected @@ -0,0 +1,112 @@ +| aliases.go:19:6:19:7 | S3 | struct { x int } | +| aliases.go:29:6:29:11 | MyType | struct { x MyTypeT } | +| cyclic.go:3:6:3:6 | s | struct { * s } | +| cyclic.go:7:6:7:6 | t | struct { * u; f int } | +| cyclic.go:12:6:12:6 | u | struct { t } | +| cyclic.go:16:6:16:6 | v | struct { s } | +| depth.go:5:6:5:6 | a | struct { b; c } | +| depth.go:10:6:10:6 | b | struct { f int } | +| depth.go:14:6:14:6 | c | struct { d } | +| depth.go:18:6:18:6 | d | struct { f string } | +| embedded.go:3:6:3:8 | Baz | struct { A string } | +| embedded.go:7:6:7:8 | Qux | struct { * Baz } | +| embedded.go:11:6:11:14 | EmbedsBaz | struct { Qux; Baz string } | +| generic.go:3:6:3:19 | GenericStruct1 | struct { valueField T; pointerField * T; arrayField [10]T; sliceField []T; mapField [string]T } | +| generic.go:11:6:11:27 | CircularGenericStruct1 | struct { pointerField * CircularGenericStruct1 } | +| generic.go:15:6:15:31 | UsesCircularGenericStruct1 | struct { root CircularGenericStruct1 } | +| generic.go:19:6:19:19 | GenericStruct2 | struct { structField GenericStruct1; mapField [S]T } | +| generic.go:24:6:24:20 | GenericStruct2b | struct { structField GenericStruct2 } | +| generic.go:28:6:28:27 | CircularGenericStruct2 | struct { pointerField * CircularGenericStruct2 } | +| generic.go:32:6:32:21 | GenericInterface | interface { GetT func() T } | +| generic.go:36:6:36:17 | GenericArray | [10]T | +| generic.go:37:6:37:19 | GenericPointer | * T | +| generic.go:38:6:38:17 | GenericSlice | []T | +| generic.go:39:6:39:16 | GenericMap1 | [string]V | +| generic.go:40:6:40:16 | GenericMap2 | [K]V | +| generic.go:41:6:41:19 | GenericChannel | chan<- T | +| generic.go:42:6:42:14 | MyMapType | [string]int | +| generic.go:43:6:43:19 | GenericDefined | MyMapType | +| generic.go:44:6:44:16 | MyFuncType1 | func(T) | +| generic.go:45:6:45:16 | MyFuncType2 | func(T1) T2 | +| generic.go:47:6:47:16 | MyInterface | interface { clone func() MyInterface; dummy1 func() [10]U; dummy11 func() GenericArray; dummy12 func() GenericPointer; dummy13 func() GenericSlice; dummy14 func() GenericMap1; dummy15 func() GenericMap2; dummy17 func() GenericChannel; dummy18 func() GenericDefined; dummy19 func() MyFuncType1; dummy2 func() * U; dummy20 func() MyFuncType2; dummy3 func() []U; dummy4 func() [U]U; dummy5 func() chan<- U; dummy6 func() MyMapType; dummy7 func() MyFuncType2 } | +| generic.go:67:6:67:22 | HasBlankTypeParam | struct { } | +| generic.go:68:6:68:23 | HasBlankTypeParams | struct { } | +| generic.go:84:6:84:21 | GenericSignature | func(T) T | +| interface.go:3:6:3:7 | i0 | comparable | +| interface.go:5:6:5:7 | i1 | interface { int } | +| interface.go:9:6:9:7 | i2 | interface { ~string } | +| interface.go:13:6:13:7 | i3 | interface { [5]int \| ~string } | +| interface.go:18:6:18:7 | i4 | interface { i1 \| i2 \| float32 } | +| interface.go:23:6:23:7 | i5 | interface { []uint8; int \| ~[]uint8 } | +| interface.go:28:6:28:7 | i6 | interface { ~[]int \| ~string; String func() string } | +| interface.go:34:6:34:7 | i7 | interface { [5]int \| ~string; ~string; String func() string } | +| interface.go:41:6:41:7 | i8 | interface { ~[]int \| ~string; String func() string; StringA func() string } | +| interface.go:47:6:47:7 | i9 | interface { ~[]int \| ~string; String func() string; StringB func() string } | +| interface.go:52:6:52:8 | i10 | interface { comparable } | +| interface.go:57:6:57:8 | i11 | interface { [5]uint8 \| string; int } | +| interface.go:63:6:63:8 | i12 | interface { comparable; []uint8 \| string } | +| interface.go:69:6:69:8 | i13 | interface { comparable; []uint8 \| string } | +| interface.go:75:6:75:8 | i14 | interface { []uint8 \| string; ~[]int \| ~string; String func() string; StringA func() string } | +| interface.go:81:6:81:8 | i15 | interface { []uint8 \| string; ~[]int \| ~string; String func() string; StringB func() string } | +| interface.go:87:6:87:8 | i16 | interface { } | +| interface.go:91:6:91:8 | i17 | interface { StringA func() string } | +| interface.go:95:6:95:8 | i18 | interface { comparable; StringA func() string } | +| interface.go:101:6:101:8 | i19 | interface { StringB func() string } | +| interface.go:105:6:105:8 | i20 | interface { comparable; StringB func() string } | +| interface.go:114:6:114:19 | testComparable | struct { } | +| interface.go:115:6:115:20 | testComparable0 | struct { } | +| interface.go:116:6:116:20 | testComparable1 | struct { } | +| interface.go:117:6:117:20 | testComparable2 | struct { } | +| interface.go:118:6:118:20 | testComparable3 | struct { } | +| interface.go:119:6:119:20 | testComparable4 | struct { } | +| interface.go:120:6:120:20 | testComparable5 | struct { } | +| interface.go:121:6:121:20 | testComparable6 | struct { } | +| interface.go:122:6:122:20 | testComparable7 | struct { } | +| interface.go:123:6:123:20 | testComparable8 | struct { } | +| interface.go:124:6:124:20 | testComparable9 | struct { } | +| interface.go:125:6:125:21 | testComparable10 | struct { } | +| interface.go:126:6:126:21 | testComparable11 | struct { } | +| interface.go:127:6:127:21 | testComparable12 | struct { } | +| interface.go:128:6:128:21 | testComparable13 | struct { } | +| interface.go:129:6:129:21 | testComparable14 | struct { } | +| interface.go:130:6:130:21 | testComparable15 | struct { } | +| interface.go:131:6:131:21 | testComparable16 | struct { } | +| interface.go:132:6:132:21 | testComparable17 | struct { } | +| interface.go:133:6:133:21 | testComparable18 | struct { } | +| interface.go:134:6:134:21 | testComparable19 | struct { } | +| interface.go:135:6:135:21 | testComparable20 | struct { } | +| interface.go:136:6:136:21 | testComparable21 | struct { } | +| interface.go:137:6:137:21 | testComparable22 | struct { } | +| interface.go:138:6:138:21 | testComparable23 | struct { } | +| main.go:17:6:17:20 | EmbedsNameClash | struct { NameClash } | +| pkg1/embedding.go:8:6:8:9 | base | struct { } | +| pkg1/embedding.go:19:6:19:13 | embedder | struct { base } | +| pkg1/embedding.go:22:6:22:16 | ptrembedder | struct { * base } | +| pkg1/embedding.go:25:6:25:14 | embedder2 | struct { embedder } | +| pkg1/embedding.go:28:6:28:14 | embedder3 | struct { embedder } | +| pkg1/embedding.go:35:6:35:14 | embedder4 | struct { base; f int } | +| pkg1/interfaces.go:3:6:3:6 | A | interface { m func() } | +| pkg1/interfaces.go:7:6:7:6 | B | interface { m func() ; n func() } | +| pkg1/interfaces.go:12:6:12:6 | C | interface { n func() ; o func() } | +| pkg1/interfaces.go:17:6:17:14 | AEmbedded | interface { m func() } | +| pkg1/interfaces.go:21:6:21:7 | AC | interface { m func() ; n func() ; o func() } | +| pkg1/interfaces.go:26:6:26:14 | AExtended | interface { m func() ; n func() } | +| pkg1/interfaces.go:31:6:31:7 | A2 | interface { m func() } | +| pkg1/interfaces.go:35:6:35:24 | MixedExportedAndNot | interface { Exported func() ; notExported func() } | +| pkg1/promotedStructs.go:4:6:4:6 | S | struct { SField string } | +| pkg1/promotedStructs.go:13:6:13:6 | P | struct { PField string } | +| pkg1/promotedStructs.go:22:6:22:12 | SEmbedS | struct { S } | +| pkg1/promotedStructs.go:25:6:25:12 | SEmbedP | struct { P } | +| pkg1/tst.go:5:6:5:6 | T | struct { f int; Foo; Bar } | +| pkg1/tst.go:11:6:11:7 | T2 | struct { Foo Foo; Bar } | +| pkg1/tst.go:16:6:16:7 | T3 | struct { * Foo; * Bar } | +| pkg1/tst.go:21:6:21:7 | T4 | struct { * Foo; Bar Bar } | +| pkg1/tst.go:26:6:26:8 | Foo | struct { val int; flag bool } | +| pkg1/tst.go:31:6:31:8 | Bar | struct { flag bool } | +| pkg1/tst.go:61:6:61:14 | NameClash | struct { NameClash } | +| pkg2/tst.go:3:6:3:6 | T | struct { g int } | +| pkg2/tst.go:7:6:7:6 | G | struct { g int } | +| pkg2/tst.go:11:6:11:24 | MixedExportedAndNot | interface { Exported func() ; notExported func() } | +| pkg2/tst.go:16:6:16:14 | NameClash | struct { NCField string } | +| struct_tags.go:3:6:3:7 | S1 | struct { field1 int `tag1a`; field2 int `tag2a` } | +| struct_tags.go:8:6:8:7 | S2 | struct { field1 int `tag1b`; field2 int `tag2b` } | diff --git a/go/ql/test/library-tests/semmle/go/Types/DefinedType_getBaseType.ql b/go/ql/test/library-tests/semmle/go/Types/DefinedType_getBaseType.ql new file mode 100644 index 000000000000..6b257110792a --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/Types/DefinedType_getBaseType.ql @@ -0,0 +1,5 @@ +import go + +from DefinedType dt, Type tp +where tp = dt.getBaseType() +select dt, tp.pp() diff --git a/go/ql/test/library-tests/semmle/go/Types/FieldDecl.expected b/go/ql/test/library-tests/semmle/go/Types/FieldDecl.expected new file mode 100644 index 000000000000..b1eb47a7945f --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/Types/FieldDecl.expected @@ -0,0 +1,70 @@ +fieldDeclWithNamedFields +| aliases.go:6:26:6:35 | field declaration | 0 | aliases.go:6:26:6:26 | x | +| aliases.go:6:26:6:35 | field declaration | 0 | aliases.go:8:26:8:26 | x | +| aliases.go:6:26:6:35 | field declaration | 0 | aliases.go:19:17:19:17 | x | +| aliases.go:8:26:8:35 | field declaration | 0 | aliases.go:6:26:6:26 | x | +| aliases.go:8:26:8:35 | field declaration | 0 | aliases.go:8:26:8:26 | x | +| aliases.go:8:26:8:35 | field declaration | 0 | aliases.go:19:17:19:17 | x | +| aliases.go:19:17:19:21 | field declaration | 0 | aliases.go:6:26:6:26 | x | +| aliases.go:19:17:19:21 | field declaration | 0 | aliases.go:8:26:8:26 | x | +| aliases.go:19:17:19:21 | field declaration | 0 | aliases.go:19:17:19:17 | x | +| aliases.go:29:34:29:42 | field declaration | 0 | aliases.go:29:34:29:34 | x | +| cyclic.go:9:2:9:6 | field declaration | 0 | cyclic.go:9:2:9:2 | f | +| depth.go:11:2:11:6 | field declaration | 0 | depth.go:11:2:11:2 | f | +| depth.go:19:2:19:9 | field declaration | 0 | depth.go:19:2:19:2 | f | +| embedded.go:4:2:4:9 | field declaration | 0 | embedded.go:4:2:4:2 | A | +| embedded.go:13:2:13:11 | field declaration | 0 | embedded.go:13:2:13:4 | Baz | +| generic.go:4:2:4:15 | field declaration | 0 | generic.go:4:2:4:11 | valueField | +| generic.go:5:2:5:16 | field declaration | 0 | generic.go:5:2:5:13 | pointerField | +| generic.go:6:2:6:19 | field declaration | 0 | generic.go:6:2:6:11 | arrayField | +| generic.go:7:2:7:17 | field declaration | 0 | generic.go:7:2:7:11 | sliceField | +| generic.go:8:2:8:26 | field declaration | 0 | generic.go:8:2:8:9 | mapField | +| generic.go:12:2:12:40 | field declaration | 0 | generic.go:12:2:12:13 | pointerField | +| generic.go:16:2:16:31 | field declaration | 0 | generic.go:16:2:16:5 | root | +| generic.go:20:2:20:30 | field declaration | 0 | generic.go:20:2:20:12 | structField | +| generic.go:21:2:21:20 | field declaration | 0 | generic.go:21:2:21:9 | mapField | +| generic.go:25:2:25:33 | field declaration | 0 | generic.go:25:2:25:12 | structField | +| generic.go:29:2:29:43 | field declaration | 0 | generic.go:29:2:29:13 | pointerField | +| pkg1/embedding.go:37:2:37:6 | field declaration | 0 | pkg1/embedding.go:37:2:37:2 | f | +| pkg1/promotedStructs.go:5:2:5:14 | field declaration | 0 | pkg1/promotedStructs.go:5:2:5:7 | SField | +| pkg1/promotedStructs.go:14:2:14:14 | field declaration | 0 | pkg1/promotedStructs.go:14:2:14:7 | PField | +| pkg1/tst.go:6:2:6:6 | field declaration | 0 | pkg1/tst.go:6:2:6:2 | f | +| pkg1/tst.go:12:2:12:8 | field declaration | 0 | pkg1/tst.go:12:2:12:4 | Foo | +| pkg1/tst.go:23:2:23:8 | field declaration | 0 | pkg1/tst.go:23:2:23:4 | Bar | +| pkg1/tst.go:27:2:27:9 | field declaration | 0 | pkg1/tst.go:27:2:27:4 | val | +| pkg1/tst.go:28:2:28:10 | field declaration | 0 | pkg1/tst.go:28:2:28:5 | flag | +| pkg1/tst.go:32:2:32:10 | field declaration | 0 | pkg1/tst.go:32:2:32:5 | flag | +| pkg2/tst.go:4:2:4:6 | field declaration | 0 | pkg2/tst.go:4:2:4:2 | g | +| pkg2/tst.go:4:2:4:6 | field declaration | 0 | pkg2/tst.go:8:2:8:2 | g | +| pkg2/tst.go:8:2:8:6 | field declaration | 0 | pkg2/tst.go:4:2:4:2 | g | +| pkg2/tst.go:8:2:8:6 | field declaration | 0 | pkg2/tst.go:8:2:8:2 | g | +| pkg2/tst.go:17:2:17:15 | field declaration | 0 | pkg2/tst.go:17:2:17:8 | NCField | +| struct_tags.go:4:2:4:19 | field declaration | 0 | struct_tags.go:4:2:4:7 | field1 | +| struct_tags.go:5:2:5:19 | field declaration | 0 | struct_tags.go:5:2:5:7 | field2 | +| struct_tags.go:9:2:9:19 | field declaration | 0 | struct_tags.go:9:2:9:7 | field1 | +| struct_tags.go:10:2:10:19 | field declaration | 0 | struct_tags.go:10:2:10:7 | field2 | +fieldDeclWithEmbeddedField +| cyclic.go:4:2:4:3 | field declaration | * s | +| cyclic.go:8:2:8:3 | field declaration | * u | +| cyclic.go:13:2:13:2 | field declaration | t | +| cyclic.go:17:2:17:2 | field declaration | s | +| depth.go:6:2:6:2 | field declaration | b | +| depth.go:7:2:7:2 | field declaration | c | +| depth.go:15:2:15:2 | field declaration | d | +| embedded.go:8:2:8:5 | field declaration | * Baz | +| embedded.go:12:2:12:4 | field declaration | Qux | +| main.go:18:2:18:15 | field declaration | NameClash | +| pkg1/embedding.go:19:23:19:26 | field declaration | base | +| pkg1/embedding.go:22:26:22:30 | field declaration | * base | +| pkg1/embedding.go:25:24:25:31 | field declaration | embedder | +| pkg1/embedding.go:28:24:28:31 | field declaration | embedder | +| pkg1/embedding.go:36:2:36:5 | field declaration | base | +| pkg1/promotedStructs.go:22:22:22:22 | field declaration | S | +| pkg1/promotedStructs.go:25:22:25:22 | field declaration | P | +| pkg1/tst.go:7:2:7:4 | field declaration | Foo | +| pkg1/tst.go:8:2:8:4 | field declaration | Bar | +| pkg1/tst.go:13:2:13:4 | field declaration | Bar | +| pkg1/tst.go:17:2:17:5 | field declaration | * Foo | +| pkg1/tst.go:18:2:18:5 | field declaration | * Bar | +| pkg1/tst.go:22:2:22:5 | field declaration | * Foo | +| pkg1/tst.go:62:2:62:15 | field declaration | NameClash | diff --git a/go/ql/test/library-tests/semmle/go/Types/FieldDecl.ql b/go/ql/test/library-tests/semmle/go/Types/FieldDecl.ql new file mode 100644 index 000000000000..2cdbcc9e57b9 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/Types/FieldDecl.ql @@ -0,0 +1,7 @@ +import go + +query predicate fieldDeclWithNamedFields(FieldDecl fd, int i, Field f) { fd.getField(i) = f } + +query predicate fieldDeclWithEmbeddedField(FieldDecl fd, string tp) { + fd.isEmbedded() and tp = fd.getType().pp() +} diff --git a/go/ql/test/library-tests/semmle/go/Types/MethodTypes.expected b/go/ql/test/library-tests/semmle/go/Types/MethodTypes.expected index f5af1c53e406..0306a98051e6 100644 --- a/go/ql/test/library-tests/semmle/go/Types/MethodTypes.expected +++ b/go/ql/test/library-tests/semmle/go/Types/MethodTypes.expected @@ -31,12 +31,12 @@ | interface.go:101:6:101:8 | i19 | StringB | func() string | | interface.go:105:6:105:8 | i20 | StringB | func() string | | main.go:17:6:17:20 | EmbedsNameClash | NCMethod | func() | +| pkg1/embedding.go:8:6:8:9 | base | f | func() int | | pkg1/embedding.go:19:6:19:13 | embedder | f | func() int | | pkg1/embedding.go:22:6:22:16 | ptrembedder | f | func() int | | pkg1/embedding.go:22:6:22:16 | ptrembedder | g | func() int | | pkg1/embedding.go:25:6:25:14 | embedder2 | f | func() int | | pkg1/embedding.go:28:6:28:14 | embedder3 | f | func() int | -| pkg1/embedding.go:35:6:35:14 | embedder4 | f | func() int | | pkg1/interfaces.go:3:6:3:6 | A | m | func() | | pkg1/interfaces.go:7:6:7:6 | B | m | func() | | pkg1/interfaces.go:7:6:7:6 | B | n | func() | @@ -51,10 +51,13 @@ | pkg1/interfaces.go:31:6:31:7 | A2 | m | func() | | pkg1/interfaces.go:35:6:35:24 | MixedExportedAndNot | Exported | func() | | pkg1/interfaces.go:35:6:35:24 | MixedExportedAndNot | notExported | func() | +| pkg1/promotedStructs.go:4:6:4:6 | S | SMethod | func() interface { } | | pkg1/promotedStructs.go:22:6:22:12 | SEmbedS | SMethod | func() interface { } | | pkg1/tst.go:5:6:5:6 | T | half | func() Foo | | pkg1/tst.go:16:6:16:7 | T3 | half | func() Foo | | pkg1/tst.go:21:6:21:7 | T4 | half | func() Foo | +| pkg1/tst.go:26:6:26:8 | Foo | half | func() Foo | | pkg1/tst.go:61:6:61:14 | NameClash | NCMethod | func() | | pkg2/tst.go:11:6:11:24 | MixedExportedAndNot | Exported | func() | | pkg2/tst.go:11:6:11:24 | MixedExportedAndNot | notExported | func() | +| pkg2/tst.go:16:6:16:14 | NameClash | NCMethod | func() | diff --git a/go/ql/test/library-tests/semmle/go/Types/MethodTypes.ql b/go/ql/test/library-tests/semmle/go/Types/MethodTypes.ql index f9eae96b5296..89a62ef2f655 100644 --- a/go/ql/test/library-tests/semmle/go/Types/MethodTypes.ql +++ b/go/ql/test/library-tests/semmle/go/Types/MethodTypes.ql @@ -1,7 +1,7 @@ import go -from DefinedType t, string m, Type tp +from Type t, string m, Type tp where exists(t.getEntity().getDeclaration()) and - t.getBaseType().hasMethod(m, tp) + t.hasMethod(m, tp) select t, m, tp.pp() diff --git a/go/ql/test/query-tests/Security/CWE-681/FilterTestResults.ql b/go/ql/test/query-tests/Security/CWE-681/FilterTestResults.ql new file mode 100644 index 000000000000..9b3e77c416f9 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-681/FilterTestResults.ql @@ -0,0 +1,15 @@ +/** + * @kind test-postprocess + * @description Remove the query predicates that differ based on 32/64-bit architecture. This should leave behind `invalidModelRowAdd` and `testFailures` in case of test failures. + */ + +/** + * The input test results: query predicate `relation` contains `data` at (`row`, `column`). + */ +external private predicate queryResults(string relation, int row, int column, string data); + +/** Holds if the test output's query predicate `relation` contains `data` at (`row`, `column`). */ +query predicate results(string relation, int row, int column, string data) { + queryResults(relation, row, column, data) and + not relation in ["#select", "nodes", "edges"] +} diff --git a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.expected b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.expected index 42831abaf155..e69de29bb2d1 100644 --- a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.expected +++ b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.expected @@ -1,2 +0,0 @@ -invalidModelRow -testFailures diff --git a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.go b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.go index 7927a5fe252c..0eee414716b5 100644 --- a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.go +++ b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.go @@ -24,7 +24,7 @@ func lookupNumberByName(reg *registry, name string) (int32, error) { return 567, nil } func lab(s string) (*something, error) { - num, err := strconv.Atoi(s) + num, err := strconv.Atoi(s) // $ Source if err != nil { number, err := lookupNumberByName(®istry{}, s) @@ -33,7 +33,7 @@ func lab(s string) (*something, error) { } num = int(number) } - target, err := lookupTarget(&config{}, int32(num)) // $ hasValueFlow="num" + target, err := lookupTarget(&config{}, int32(num)) // $ Alert if err != nil { return nil, err } @@ -63,12 +63,12 @@ func testParseInt() { _ = uint(parsed) } { - parsed, err := strconv.ParseInt("3456", 10, 16) + parsed, err := strconv.ParseInt("3456", 10, 16) // $ Source if err != nil { panic(err) } - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert _ = int16(parsed) _ = uint16(parsed) _ = int32(parsed) @@ -79,14 +79,14 @@ func testParseInt() { _ = uint(parsed) } { - parsed, err := strconv.ParseInt("3456", 10, 32) + parsed, err := strconv.ParseInt("3456", 10, 32) // $ Source if err != nil { panic(err) } - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" - _ = int16(parsed) // $ hasValueFlow="parsed" - _ = uint16(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert + _ = int16(parsed) // $ Alert + _ = uint16(parsed) // $ Alert _ = int32(parsed) _ = uint32(parsed) _ = int64(parsed) @@ -95,32 +95,32 @@ func testParseInt() { _ = uint(parsed) } { - parsed, err := strconv.ParseInt("3456", 10, 64) + parsed, err := strconv.ParseInt("3456", 10, 64) // $ Source if err != nil { panic(err) } - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" - _ = int16(parsed) // $ hasValueFlow="parsed" - _ = uint16(parsed) // $ hasValueFlow="parsed" - _ = int32(parsed) // $ hasValueFlow="parsed" - _ = uint32(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert + _ = int16(parsed) // $ Alert + _ = uint16(parsed) // $ Alert + _ = int32(parsed) // $ Alert + _ = uint32(parsed) // $ Alert _ = int64(parsed) _ = uint64(parsed) - _ = int(parsed) // $ hasValueFlow="parsed" - _ = uint(parsed) // $ hasValueFlow="parsed" + _ = int(parsed) // $ Alert + _ = uint(parsed) // $ Alert } { - parsed, err := strconv.ParseInt("3456", 10, 0) + parsed, err := strconv.ParseInt("3456", 10, 0) // $ Source if err != nil { panic(err) } - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" - _ = int16(parsed) // $ hasValueFlow="parsed" - _ = uint16(parsed) // $ hasValueFlow="parsed" - _ = int32(parsed) // $ hasValueFlow="parsed" - _ = uint32(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert + _ = int16(parsed) // $ Alert + _ = uint16(parsed) // $ Alert + _ = int32(parsed) // $ Alert + _ = uint32(parsed) // $ Alert _ = int64(parsed) _ = uint64(parsed) _ = int(parsed) @@ -130,11 +130,11 @@ func testParseInt() { func testParseUint() { { - parsed, err := strconv.ParseUint("3456", 10, 8) + parsed, err := strconv.ParseUint("3456", 10, 8) // $ Source if err != nil { panic(err) } - _ = int8(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert _ = uint8(parsed) _ = int16(parsed) _ = uint16(parsed) @@ -146,13 +146,13 @@ func testParseUint() { _ = uint(parsed) } { - parsed, err := strconv.ParseUint("3456", 10, 16) + parsed, err := strconv.ParseUint("3456", 10, 16) // $ Source if err != nil { panic(err) } - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" - _ = int16(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert + _ = int16(parsed) // $ Alert _ = uint16(parsed) _ = int32(parsed) _ = uint32(parsed) @@ -162,66 +162,66 @@ func testParseUint() { _ = uint(parsed) } { - parsed, err := strconv.ParseUint("3456", 10, 32) + parsed, err := strconv.ParseUint("3456", 10, 32) // $ Source if err != nil { panic(err) } - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" - _ = int16(parsed) // $ hasValueFlow="parsed" - _ = uint16(parsed) // $ hasValueFlow="parsed" - _ = int32(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert + _ = int16(parsed) // $ Alert + _ = uint16(parsed) // $ Alert + _ = int32(parsed) // $ Alert _ = uint32(parsed) _ = int64(parsed) _ = uint64(parsed) - _ = int(parsed) // $ hasValueFlow="parsed" + _ = int(parsed) // $ Alert _ = uint(parsed) } { - parsed, err := strconv.ParseUint("3456", 10, 64) + parsed, err := strconv.ParseUint("3456", 10, 64) // $ Source if err != nil { panic(err) } - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" - _ = int16(parsed) // $ hasValueFlow="parsed" - _ = uint16(parsed) // $ hasValueFlow="parsed" - _ = int32(parsed) // $ hasValueFlow="parsed" - _ = uint32(parsed) // $ hasValueFlow="parsed" - _ = int64(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert + _ = int16(parsed) // $ Alert + _ = uint16(parsed) // $ Alert + _ = int32(parsed) // $ Alert + _ = uint32(parsed) // $ Alert + _ = int64(parsed) // $ Alert _ = uint64(parsed) - _ = int(parsed) // $ hasValueFlow="parsed" - _ = uint(parsed) // $ hasValueFlow="parsed" + _ = int(parsed) // $ Alert + _ = uint(parsed) // $ Alert } { - parsed, err := strconv.ParseUint("3456", 10, 0) + parsed, err := strconv.ParseUint("3456", 10, 0) // $ Source if err != nil { panic(err) } - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" - _ = int16(parsed) // $ hasValueFlow="parsed" - _ = uint16(parsed) // $ hasValueFlow="parsed" - _ = int32(parsed) // $ hasValueFlow="parsed" - _ = uint32(parsed) // $ hasValueFlow="parsed" - _ = int64(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert + _ = int16(parsed) // $ Alert + _ = uint16(parsed) // $ Alert + _ = int32(parsed) // $ Alert + _ = uint32(parsed) // $ Alert + _ = int64(parsed) // $ Alert _ = uint64(parsed) - _ = int(parsed) // $ hasValueFlow="parsed" + _ = int(parsed) // $ Alert _ = uint(parsed) } } func testAtoi() { - parsed, err := strconv.Atoi("3456") + parsed, err := strconv.Atoi("3456") // $ Source if err != nil { panic(err) } - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" - _ = int16(parsed) // $ hasValueFlow="parsed" - _ = uint16(parsed) // $ hasValueFlow="parsed" - _ = int32(parsed) // $ hasValueFlow="parsed" - _ = uint32(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert + _ = int16(parsed) // $ Alert + _ = uint16(parsed) // $ Alert + _ = int32(parsed) // $ Alert + _ = uint32(parsed) // $ Alert _ = int64(parsed) _ = uint64(parsed) _ = int(parsed) @@ -233,19 +233,19 @@ type customInt int16 // these should be caught: func typeAliases(input string) { { - parsed, err := strconv.ParseInt(input, 10, 32) + parsed, err := strconv.ParseInt(input, 10, 32) // $ Source if err != nil { panic(err) } // NOTE: byte is uint8 - _ = byte(parsed) // $ hasValueFlow="parsed" - _ = customInt(parsed) // $ hasValueFlow="parsed" + _ = byte(parsed) // $ Alert + _ = customInt(parsed) // $ Alert } } func testBoundsChecking(input string) { { - parsed, err := strconv.Atoi(input) + parsed, err := strconv.Atoi(input) // $ Source if err != nil { panic(err) } @@ -253,13 +253,13 @@ func testBoundsChecking(input string) { _ = int8(parsed) } if parsed < math.MaxInt8 { - _ = int8(parsed) // $ MISSING: hasValueFlow="parsed" // Not found because we only check for upper bounds + _ = int8(parsed) // $ MISSING: Alert // Not found because we only check for upper bounds if parsed >= 0 { _ = int16(parsed) } } if parsed >= math.MinInt8 { - _ = int8(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert if parsed <= 0 { _ = int16(parsed) } @@ -271,51 +271,51 @@ func testBoundsChecking(input string) { } } { - parsed, err := strconv.ParseUint(input, 10, 0) + parsed, err := strconv.ParseUint(input, 10, 0) // $ Source if err != nil { panic(err) } if parsed <= math.MaxUint64 { - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" - _ = int16(parsed) // $ hasValueFlow="parsed" - _ = uint16(parsed) // $ hasValueFlow="parsed" - _ = int32(parsed) // $ hasValueFlow="parsed" - _ = uint32(parsed) // $ hasValueFlow="parsed" - _ = int64(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert + _ = int16(parsed) // $ Alert + _ = uint16(parsed) // $ Alert + _ = int32(parsed) // $ Alert + _ = uint32(parsed) // $ Alert + _ = int64(parsed) // $ Alert _ = uint64(parsed) - _ = int(parsed) // $ hasValueFlow="parsed" + _ = int(parsed) // $ Alert _ = uint(parsed) } if parsed <= math.MaxInt64 { - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" - _ = int16(parsed) // $ hasValueFlow="parsed" - _ = uint16(parsed) // $ hasValueFlow="parsed" - _ = int32(parsed) // $ hasValueFlow="parsed" - _ = uint32(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert + _ = int16(parsed) // $ Alert + _ = uint16(parsed) // $ Alert + _ = int32(parsed) // $ Alert + _ = uint32(parsed) // $ Alert _ = int64(parsed) _ = uint64(parsed) - _ = int(parsed) // $ hasValueFlow="parsed" + _ = int(parsed) // $ Alert _ = uint(parsed) } if parsed <= math.MaxUint32 { - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" - _ = int16(parsed) // $ hasValueFlow="parsed" - _ = uint16(parsed) // $ hasValueFlow="parsed" - _ = int32(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert + _ = int16(parsed) // $ Alert + _ = uint16(parsed) // $ Alert + _ = int32(parsed) // $ Alert _ = uint32(parsed) _ = int64(parsed) _ = uint64(parsed) - _ = int(parsed) // $ hasValueFlow="parsed" + _ = int(parsed) // $ Alert _ = uint(parsed) } if parsed <= math.MaxInt32 { - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" - _ = int16(parsed) // $ hasValueFlow="parsed" - _ = uint16(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert + _ = int16(parsed) // $ Alert + _ = uint16(parsed) // $ Alert _ = int32(parsed) _ = uint32(parsed) _ = int64(parsed) @@ -325,25 +325,25 @@ func testBoundsChecking(input string) { } } { - parsed, err := strconv.ParseUint(input, 10, 32) + parsed, err := strconv.ParseUint(input, 10, 32) // $ Source if err != nil { panic(err) } if parsed <= math.MaxUint16 { _ = uint16(parsed) - _ = int16(parsed) // $ hasValueFlow="parsed" + _ = int16(parsed) // $ Alert } if parsed <= 255 { _ = uint8(parsed) } if parsed <= 256 { - _ = uint8(parsed) // $ hasValueFlow="parsed" + _ = uint8(parsed) // $ Alert } if err == nil && 1 == 1 && parsed < math.MaxInt8 { _ = int8(parsed) } if parsed > 42 { - _ = uint16(parsed) // $ hasValueFlow="parsed" + _ = uint16(parsed) // $ Alert } if parsed >= math.MaxUint8+1 { return @@ -389,64 +389,64 @@ func testRightShifted(input string) { _ = byte(parsed >> 8 & 0xff) } { - parsed, err := strconv.ParseInt(input, 10, 16) + parsed, err := strconv.ParseInt(input, 10, 16) // $ Source if err != nil { panic(err) } - _ = byte(parsed) // $ hasValueFlow="parsed" + _ = byte(parsed) // $ Alert _ = byte(parsed << 8) } } func testPathWithMoreThanOneSink(input string) { { - parsed, err := strconv.ParseInt(input, 10, 32) + parsed, err := strconv.ParseInt(input, 10, 32) // $ Source if err != nil { panic(err) } - v1 := int16(parsed) // $ hasValueFlow="parsed" + v1 := int16(parsed) // $ Alert _ = int16(v1) } { - parsed, err := strconv.ParseInt(input, 10, 32) + parsed, err := strconv.ParseInt(input, 10, 32) // $ Source if err != nil { panic(err) } - v := int16(parsed) // $ hasValueFlow="parsed" + v := int16(parsed) // $ Alert _ = int8(v) } { - parsed, err := strconv.ParseInt(input, 10, 32) + parsed, err := strconv.ParseInt(input, 10, 32) // $ Source if err != nil { panic(err) } v1 := int32(parsed) - v2 := int16(v1) // $ hasValueFlow="v1" + v2 := int16(v1) // $ Alert _ = int8(v2) } { - parsed, err := strconv.ParseInt(input, 10, 16) + parsed, err := strconv.ParseInt(input, 10, 16) // $ Source if err != nil { panic(err) } v1 := int64(parsed) v2 := int32(v1) v3 := int16(v2) - _ = int8(v3) // $ hasValueFlow="v3" + _ = int8(v3) // $ Alert } } func testUsingStrConvIntSize(input string) { - parsed, err := strconv.ParseInt(input, 10, strconv.IntSize) + parsed, err := strconv.ParseInt(input, 10, strconv.IntSize) // $ Source if err != nil { panic(err) } - _ = int8(parsed) // $ hasValueFlow="parsed" - _ = uint8(parsed) // $ hasValueFlow="parsed" - _ = int16(parsed) // $ hasValueFlow="parsed" - _ = uint16(parsed) // $ hasValueFlow="parsed" - _ = int32(parsed) // $ hasValueFlow="parsed" - _ = uint32(parsed) // $ hasValueFlow="parsed" + _ = int8(parsed) // $ Alert + _ = uint8(parsed) // $ Alert + _ = int16(parsed) // $ Alert + _ = uint16(parsed) // $ Alert + _ = int32(parsed) // $ Alert + _ = uint32(parsed) // $ Alert _ = int64(parsed) _ = uint64(parsed) _ = int(parsed) @@ -490,7 +490,7 @@ func dealWithArchSizeCorrectly(s string) uint { } func typeSwitch1(s string) { - i64, _ := strconv.ParseInt(s, 10, 64) + i64, _ := strconv.ParseInt(s, 10, 64) // $ Source var input any = i64 switch v := input.(type) { case int16, string: @@ -498,19 +498,19 @@ func typeSwitch1(s string) { return } _ = int16(v.(int16)) - _ = int8(v.(int16)) // $ hasValueFlow="type assertion" + _ = int8(v.(int16)) // $ Alert case int32: _ = int32(v) - _ = int8(v) // $ hasValueFlow="v" + _ = int8(v) // $ Alert case int64: - _ = int8(v) // $ hasValueFlow="v" + _ = int8(v) // $ Alert default: - _ = int8(v.(int64)) // $ hasValueFlow="type assertion" + _ = int8(v.(int64)) // $ Alert } } func typeSwitch2(s string) { - i64, _ := strconv.ParseInt(s, 10, 64) + i64, _ := strconv.ParseInt(s, 10, 64) // $ Source var input any = i64 switch input.(type) { case int16, string: @@ -518,25 +518,25 @@ func typeSwitch2(s string) { return } _ = int16(input.(int16)) - _ = int8(input.(int16)) // $ hasValueFlow="type assertion" + _ = int8(input.(int16)) // $ Alert case int32: _ = int32(input.(int32)) - _ = int8(input.(int32)) // $ hasValueFlow="type assertion" + _ = int8(input.(int32)) // $ Alert case int64: - _ = int8(input.(int64)) // $ hasValueFlow="type assertion" + _ = int8(input.(int64)) // $ Alert default: - _ = int8(input.(int64)) // $ hasValueFlow="type assertion" + _ = int8(input.(int64)) // $ Alert } } func checkedTypeAssertion(s string) { - i64, _ := strconv.ParseInt(s, 10, 64) + i64, _ := strconv.ParseInt(s, 10, 64) // $ Source var input any = i64 if v, ok := input.(int16); ok { // Need to account for the fact that within this case clause, v is an int16 _ = int16(v) - _ = int8(v) // $ hasValueFlow="v" + _ = int8(v) // $ Alert } else if v, ok := input.(int32); ok { - _ = int16(v) // $ hasValueFlow="v" + _ = int16(v) // $ Alert } } diff --git a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.ql b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.ql deleted file mode 100644 index e5d1b2aebabe..000000000000 --- a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.ql +++ /dev/null @@ -1,20 +0,0 @@ -import go -import semmle.go.dataflow.ExternalFlow -import ModelValidation -import utils.test.InlineExpectationsTest -import semmle.go.security.IncorrectIntegerConversionLib - -module TestIncorrectIntegerConversion implements TestSig { - string getARelevantTag() { result = "hasValueFlow" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasValueFlow" and - exists(DataFlow::Node sink | Flow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "\"" + sink.toString() + "\"" - ) - } -} - -import MakeTest diff --git a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.qlref b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.qlref new file mode 100644 index 000000000000..d424ad73de84 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.qlref @@ -0,0 +1,5 @@ +query: Security/CWE-681/IncorrectIntegerConversionQuery.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql + - ./FilterTestResults.ql diff --git a/go/ql/test/query-tests/Security/CWE-681/Test32BitArchitectureBuildConstraintInFileName_386.go b/go/ql/test/query-tests/Security/CWE-681/Test32BitArchitectureBuildConstraintInFileName_386.go index 0ff7b0e87acc..21eff8479a89 100644 --- a/go/ql/test/query-tests/Security/CWE-681/Test32BitArchitectureBuildConstraintInFileName_386.go +++ b/go/ql/test/query-tests/Security/CWE-681/Test32BitArchitectureBuildConstraintInFileName_386.go @@ -16,11 +16,11 @@ func testIntSource386() { _ = uint32(parsed) } { - parsed, err := strconv.ParseUint("3456", 10, 0) + parsed, err := strconv.ParseUint("3456", 10, 0) // $ Source if err != nil { panic(err) } - _ = int32(parsed) // $ hasValueFlow="parsed" + _ = int32(parsed) // $ Alert _ = uint32(parsed) } { diff --git a/go/ql/test/query-tests/Security/CWE-681/Test32BitArchitectureBuildConstraints.go b/go/ql/test/query-tests/Security/CWE-681/Test32BitArchitectureBuildConstraints.go index 79b776bdcac2..16d5bba86c64 100644 --- a/go/ql/test/query-tests/Security/CWE-681/Test32BitArchitectureBuildConstraints.go +++ b/go/ql/test/query-tests/Security/CWE-681/Test32BitArchitectureBuildConstraints.go @@ -19,11 +19,11 @@ func testIntSource32() { _ = uint32(parsed) } { - parsed, err := strconv.ParseUint("3456", 10, 0) + parsed, err := strconv.ParseUint("3456", 10, 0) // $ Source if err != nil { panic(err) } - _ = int32(parsed) // $ hasValueFlow="parsed" + _ = int32(parsed) // $ Alert _ = uint32(parsed) } { diff --git a/go/ql/test/query-tests/Security/CWE-681/Test64BitArchitectureBuildConstraintInFileName_amd64.go b/go/ql/test/query-tests/Security/CWE-681/Test64BitArchitectureBuildConstraintInFileName_amd64.go index b5becec4af90..d1bd2673729e 100644 --- a/go/ql/test/query-tests/Security/CWE-681/Test64BitArchitectureBuildConstraintInFileName_amd64.go +++ b/go/ql/test/query-tests/Security/CWE-681/Test64BitArchitectureBuildConstraintInFileName_amd64.go @@ -16,11 +16,11 @@ func testIntSinkAmd64() { _ = uint(parsed) } { - parsed, err := strconv.ParseUint("3456", 10, 64) + parsed, err := strconv.ParseUint("3456", 10, 64) // $ Source if err != nil { panic(err) } - _ = int(parsed) // $ hasValueFlow="parsed" + _ = int(parsed) // $ Alert _ = uint(parsed) } } diff --git a/go/ql/test/query-tests/Security/CWE-681/Test64BitArchitectureBuildConstraints.go b/go/ql/test/query-tests/Security/CWE-681/Test64BitArchitectureBuildConstraints.go index cf7aaf439a82..b07727d25ade 100644 --- a/go/ql/test/query-tests/Security/CWE-681/Test64BitArchitectureBuildConstraints.go +++ b/go/ql/test/query-tests/Security/CWE-681/Test64BitArchitectureBuildConstraints.go @@ -19,11 +19,11 @@ func testIntSink64() { _ = uint(parsed) } { - parsed, err := strconv.ParseUint("3456", 10, 64) + parsed, err := strconv.ParseUint("3456", 10, 64) // $ Source if err != nil { panic(err) } - _ = int(parsed) // $ hasValueFlow="parsed" + _ = int(parsed) // $ Alert _ = uint(parsed) } } diff --git a/go/ql/test/query-tests/Security/CWE-681/TestNoArchitectureBuildConstraints.go b/go/ql/test/query-tests/Security/CWE-681/TestNoArchitectureBuildConstraints.go index 70f1938b5b35..3138dd9a8c27 100644 --- a/go/ql/test/query-tests/Security/CWE-681/TestNoArchitectureBuildConstraints.go +++ b/go/ql/test/query-tests/Security/CWE-681/TestNoArchitectureBuildConstraints.go @@ -9,19 +9,19 @@ import ( func testIntSizeIsArchicturallyDependent1() { { - parsed, err := strconv.ParseInt("3456", 10, 0) + parsed, err := strconv.ParseInt("3456", 10, 0) // $ Source if err != nil { panic(err) } - _ = int32(parsed) // $ hasValueFlow="parsed" - _ = uint32(parsed) // $ hasValueFlow="parsed" + _ = int32(parsed) // $ Alert + _ = uint32(parsed) // $ Alert } { - parsed, err := strconv.ParseInt("3456", 10, 64) + parsed, err := strconv.ParseInt("3456", 10, 64) // $ Source if err != nil { panic(err) } - _ = int(parsed) // $ hasValueFlow="parsed" - _ = uint(parsed) // $ hasValueFlow="parsed" + _ = int(parsed) // $ Alert + _ = uint(parsed) // $ Alert } } diff --git a/go/ql/test/query-tests/Security/CWE-681/TestOldBuildConstraints.go b/go/ql/test/query-tests/Security/CWE-681/TestOldBuildConstraints.go index 34f686c6e8ad..35980ee9978d 100644 --- a/go/ql/test/query-tests/Security/CWE-681/TestOldBuildConstraints.go +++ b/go/ql/test/query-tests/Security/CWE-681/TestOldBuildConstraints.go @@ -20,11 +20,11 @@ func oldTestIntSink64() { _ = uint(parsed) } { - parsed, err := strconv.ParseUint("3456", 10, 64) + parsed, err := strconv.ParseUint("3456", 10, 64) // $ Source if err != nil { panic(err) } - _ = int(parsed) // $ hasValueFlow="parsed" + _ = int(parsed) // $ Alert _ = uint(parsed) } } diff --git a/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.expected b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.expected index 42831abaf155..bdcf83b8935f 100644 --- a/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.expected +++ b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.expected @@ -1,2 +1,22 @@ -invalidModelRow -testFailures +#select +| UncontrolledAllocationSizeBad.go:20:27:20:30 | sink | UncontrolledAllocationSizeBad.go:11:12:11:16 | selection of URL | UncontrolledAllocationSizeBad.go:20:27:20:30 | sink | This memory allocation depends on a $@. | UncontrolledAllocationSizeBad.go:11:12:11:16 | selection of URL | user-provided value | +edges +| UncontrolledAllocationSizeBad.go:11:12:11:16 | selection of URL | UncontrolledAllocationSizeBad.go:11:12:11:24 | call to Query | provenance | Src:MaD:1 MaD:2 | +| UncontrolledAllocationSizeBad.go:11:12:11:24 | call to Query | UncontrolledAllocationSizeBad.go:13:15:13:20 | source | provenance | | +| UncontrolledAllocationSizeBad.go:13:15:13:20 | source | UncontrolledAllocationSizeBad.go:13:15:13:29 | call to Get | provenance | MaD:3 | +| UncontrolledAllocationSizeBad.go:13:15:13:29 | call to Get | UncontrolledAllocationSizeBad.go:14:28:14:36 | sourceStr | provenance | | +| UncontrolledAllocationSizeBad.go:14:2:14:37 | ... := ...[0] | UncontrolledAllocationSizeBad.go:20:27:20:30 | sink | provenance | | +| UncontrolledAllocationSizeBad.go:14:28:14:36 | sourceStr | UncontrolledAllocationSizeBad.go:14:2:14:37 | ... := ...[0] | provenance | Config | +models +| 1 | Source: net/http; Request; true; URL; ; ; ; remote; manual | +| 2 | Summary: net/url; URL; true; Query; ; ; Argument[receiver]; ReturnValue; taint; manual | +| 3 | Summary: net/url; Values; true; Get; ; ; Argument[receiver]; ReturnValue; taint; manual | +nodes +| UncontrolledAllocationSizeBad.go:11:12:11:16 | selection of URL | semmle.label | selection of URL | +| UncontrolledAllocationSizeBad.go:11:12:11:24 | call to Query | semmle.label | call to Query | +| UncontrolledAllocationSizeBad.go:13:15:13:20 | source | semmle.label | source | +| UncontrolledAllocationSizeBad.go:13:15:13:29 | call to Get | semmle.label | call to Get | +| UncontrolledAllocationSizeBad.go:14:2:14:37 | ... := ...[0] | semmle.label | ... := ...[0] | +| UncontrolledAllocationSizeBad.go:14:28:14:36 | sourceStr | semmle.label | sourceStr | +| UncontrolledAllocationSizeBad.go:20:27:20:30 | sink | semmle.label | sink | +subpaths diff --git a/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.ql b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.ql deleted file mode 100644 index de10220d7e35..000000000000 --- a/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.ql +++ /dev/null @@ -1,6 +0,0 @@ -import go -import semmle.go.dataflow.ExternalFlow -import ModelValidation -import semmle.go.security.UncontrolledAllocationSize -import utils.test.InlineFlowTest -import FlowTest diff --git a/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.qlref b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.qlref new file mode 100644 index 000000000000..82741d2fbaaa --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.qlref @@ -0,0 +1,4 @@ +query: Security/CWE-770/UncontrolledAllocationSize.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSizeBad.go b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSizeBad.go index 0ae70436bdec..ae0525627058 100644 --- a/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSizeBad.go +++ b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSizeBad.go @@ -8,7 +8,7 @@ import ( ) func OutOfMemoryBad(w http.ResponseWriter, r *http.Request) { - source := r.URL.Query() + source := r.URL.Query() // $ Source sourceStr := source.Get("n") sink, err := strconv.Atoi(sourceStr) @@ -17,7 +17,7 @@ func OutOfMemoryBad(w http.ResponseWriter, r *http.Request) { return } - result := make([]string, sink) // $hasTaintFlow="sink" + result := make([]string, sink) // $ Alert for i := 0; i < sink; i++ { result[i] = fmt.Sprintf("Item %d", i+1) } diff --git a/java/kotlin-extractor/pick-kotlin-version.py b/java/kotlin-extractor/pick-kotlin-version.py index d4d85820a8e2..718592d2bd61 100755 --- a/java/kotlin-extractor/pick-kotlin-version.py +++ b/java/kotlin-extractor/pick-kotlin-version.py @@ -26,7 +26,7 @@ def version_tuple(v): res = subprocess.run([kotlinc, "-version"], text=True, stdout=subprocess.DEVNULL, stderr=subprocess.PIPE) if res.returncode != 0: raise Exception(f"kotlinc -version failed: {res.stderr}") -m = re.match(r'.* kotlinc-jvm ([0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z][a-zA-Z0-9]*)?) .*', res.stderr) +m = re.search(r' kotlinc-jvm ([0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z][a-zA-Z0-9]*)?) ', res.stderr) if m is None: raise Exception(f'Cannot detect version of kotlinc (got {res.stderr})') version = m[1] diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt index 690372d67f51..376736611d1c 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt @@ -8053,7 +8053,7 @@ open class KotlinFileExtractor( ?.symbol ?.typeWithArguments(listOf(functionNTypeArguments.last())) else - functionN(pluginContext)(functionNTypeArguments.size - 1) + pluginContext.irBuiltIns.functionN(functionNTypeArguments.size - 1) .symbol .typeWithArguments(functionNTypeArguments) diff --git a/java/kotlin-extractor/src/main/kotlin/MetaAnnotationSupport.kt b/java/kotlin-extractor/src/main/kotlin/MetaAnnotationSupport.kt index e591eed3eca6..368600267c11 100644 --- a/java/kotlin-extractor/src/main/kotlin/MetaAnnotationSupport.kt +++ b/java/kotlin-extractor/src/main/kotlin/MetaAnnotationSupport.kt @@ -2,7 +2,6 @@ package com.github.codeql import com.github.codeql.utils.versions.copyParameterToFunction import com.github.codeql.utils.versions.createImplicitParameterDeclarationWithWrappedDescriptor -import com.github.codeql.utils.versions.getAnnotationType import java.lang.annotation.ElementType import java.util.HashSet import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext @@ -375,7 +374,7 @@ class MetaAnnotationSupport( .apply { createImplicitParameterDeclarationWithWrappedDescriptor() parent = annotationClass - superTypes = listOf(getAnnotationType(pluginContext)) + superTypes = listOf(pluginContext.irBuiltIns.annotationType) } val propertyName = Name.identifier("value") diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FileEntry.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FileEntry.kt deleted file mode 100644 index 43597b1158c5..000000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FileEntry.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.SourceManager - -typealias FileEntry = SourceManager.FileEntry diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Functions.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Functions.kt deleted file mode 100644 index 2fd45e905d90..000000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Functions.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext -import org.jetbrains.kotlin.ir.declarations.IrClass - -fun functionN(pluginContext: IrPluginContext): (Int) -> IrClass { - return { i -> pluginContext.irBuiltIns.functionFactory.functionN(i) } -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrBuiltIns.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrBuiltIns.kt deleted file mode 100644 index 825fc46b0d86..000000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrBuiltIns.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns - -typealias IrBuiltIns = IrBuiltIns diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Psi2Ir.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Psi2Ir.kt deleted file mode 100644 index 2046b507bf87..000000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Psi2Ir.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import com.github.codeql.utils.Psi2IrFacade - -fun getPsi2Ir(): Psi2IrFacade? = null diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/annotationType.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/annotationType.kt deleted file mode 100644 index d4e2f17430f2..000000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/annotationType.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI - -@OptIn(ObsoleteDescriptorBasedAPI::class) -fun getAnnotationType(context: IrPluginContext) = - context.typeTranslator.translateType(context.builtIns.annotationType) diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_20/FileEntry.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_20/FileEntry.kt deleted file mode 100644 index 18308780bff4..000000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_20/FileEntry.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.IrFileEntry - -typealias FileEntry = IrFileEntry diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/CodeQLIrConst.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/CodeQLIrConst.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/CodeQLIrConst.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/CodeQLIrConst.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/CodeQLIsRoot.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/CodeQLIsRoot.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/CodeQLIsRoot.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/CodeQLIsRoot.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/CommentExtractorLighterAST.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/CommentExtractorLighterAST.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/CommentExtractorLighterAST.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/CommentExtractorLighterAST.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/ExperimentalCompilerApi.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/ExperimentalCompilerApi.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/ExperimentalCompilerApi.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/ExperimentalCompilerApi.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FirMetadataSourceFirFile.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/FirMetadataSourceFirFile.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FirMetadataSourceFirFile.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/FirMetadataSourceFirFile.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Functions.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Functions.kt deleted file mode 100644 index 7d6c3eda8c39..000000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Functions.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext - -fun functionN(pluginContext: IrPluginContext) = pluginContext.irBuiltIns::functionN diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrBuiltIns.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrBuiltIns.kt deleted file mode 100644 index 1bb2ca62aa21..000000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrBuiltIns.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.IrBuiltIns - -typealias IrBuiltIns = org.jetbrains.kotlin.ir.IrBuiltIns diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrLazyFunction.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrLazyFunction.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrLazyFunction.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrLazyFunction.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrSymbolInternals.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrSymbolInternals.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrSymbolInternals.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrSymbolInternals.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrVisitor.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrVisitor.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrVisitor.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrVisitor.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IsUnderscoreParameter.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IsUnderscoreParameter.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IsUnderscoreParameter.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IsUnderscoreParameter.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/JvmDefaultModeIsNoCompatibility.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/JvmDefaultModeIsNoCompatibility.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/JvmDefaultModeIsNoCompatibility.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/JvmDefaultModeIsNoCompatibility.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Kotlin2ComponentRegistrar.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Kotlin2ComponentRegistrar.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Kotlin2ComponentRegistrar.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Kotlin2ComponentRegistrar.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/LinesOfCodeLighterAST.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/LinesOfCodeLighterAST.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/LinesOfCodeLighterAST.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/LinesOfCodeLighterAST.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_20/Psi2Ir.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Psi2Ir.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_20/Psi2Ir.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Psi2Ir.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/ReferenceEntity.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/ReferenceEntity.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/ReferenceEntity.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/ReferenceEntity.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/SyntheticBodyKind.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/SyntheticBodyKind.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/SyntheticBodyKind.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/SyntheticBodyKind.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Types.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Types.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Types.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Types.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/UsesK2.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/UsesK2.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/UsesK2.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/UsesK2.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/VirtualFileBasedSourceElement.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/VirtualFileBasedSourceElement.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/VirtualFileBasedSourceElement.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/VirtualFileBasedSourceElement.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/allOverriddenIncludingSelf.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/allOverriddenIncludingSelf.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/allOverriddenIncludingSelf.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/allOverriddenIncludingSelf.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/annotationType.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/annotationType.kt deleted file mode 100644 index d51db5eb05c5..000000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/annotationType.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext - -fun getAnnotationType(context: IrPluginContext) = context.irBuiltIns.annotationType diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/copyTo.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/copyTo.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/copyTo.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/copyTo.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/createImplicitParameterDeclarationWithWrappedDescriptor.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/createImplicitParameterDeclarationWithWrappedDescriptor.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/createImplicitParameterDeclarationWithWrappedDescriptor.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/createImplicitParameterDeclarationWithWrappedDescriptor.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/getFileClassFqName.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/getFileClassFqName.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/getFileClassFqName.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/getFileClassFqName.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/getJvmDefaultMode.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/getJvmDefaultMode.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/getJvmDefaultMode.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/getJvmDefaultMode.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/getKotlinType.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/getKotlinType.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/getKotlinType.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/getKotlinType.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/isDispatchReceiver.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/isDispatchReceiver.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/isDispatchReceiver.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/isDispatchReceiver.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/packageFqName.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/packageFqName.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/packageFqName.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/packageFqName.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/parameterIndexExcludingReceivers.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/parameterIndexExcludingReceivers.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/parameterIndexExcludingReceivers.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/parameterIndexExcludingReceivers.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/parents.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/parents.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/parents.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/parents.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/typeUtils.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/typeUtils.kt similarity index 88% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/typeUtils.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/typeUtils.kt index 06829377a6b7..3724cafaab9e 100644 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/typeUtils.kt +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/typeUtils.kt @@ -1,6 +1,7 @@ package com.github.codeql.utils.versions import org.jetbrains.kotlin.ir.types.* +import org.jetbrains.kotlin.ir.IrBuiltIns fun IrType.isNullableCodeQL(): Boolean = this.isNullable() diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/withHasQuestionMark.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/withHasQuestionMark.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/withHasQuestionMark.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/withHasQuestionMark.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/typeUtils.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/typeUtils.kt index ac34e633116f..c6ffb89015e5 100644 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/typeUtils.kt +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/typeUtils.kt @@ -2,6 +2,7 @@ package com.github.codeql.utils.versions import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.util.* +import org.jetbrains.kotlin.ir.IrBuiltIns fun IrType.isNullableCodeQL(): Boolean = this.isNullable() diff --git a/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected new file mode 100644 index 000000000000..5c82bd5e3498 --- /dev/null +++ b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected @@ -0,0 +1,83 @@ +ql/java/ql/src/Advisory/Declarations/MissingOverrideAnnotation.ql +ql/java/ql/src/Advisory/Documentation/ImpossibleJavadocThrows.ql +ql/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql +ql/java/ql/src/Compatibility/JDK9/JdkInternalAccess.ql +ql/java/ql/src/Compatibility/JDK9/UnderscoreIdentifier.ql +ql/java/ql/src/DeadCode/UselessParameter.ql +ql/java/ql/src/Language Abuse/EmptyMethod.ql +ql/java/ql/src/Language Abuse/IterableIterator.ql +ql/java/ql/src/Language Abuse/TypeVariableHidesType.ql +ql/java/ql/src/Language Abuse/UselessNullCheck.ql +ql/java/ql/src/Language Abuse/UselessTypeTest.ql +ql/java/ql/src/Language Abuse/WrappedIterator.ql +ql/java/ql/src/Likely Bugs/Arithmetic/ConstantExpAppearsNonConstant.ql +ql/java/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql +ql/java/ql/src/Likely Bugs/Arithmetic/LShiftLargerThanTypeWidth.ql +ql/java/ql/src/Likely Bugs/Arithmetic/WhitespaceContradictsPrecedence.ql +ql/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql +ql/java/ql/src/Likely Bugs/Collections/ContainsTypeMismatch.ql +ql/java/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql +ql/java/ql/src/Likely Bugs/Collections/RemoveTypeMismatch.ql +ql/java/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +ql/java/ql/src/Likely Bugs/Comparison/CompareIdenticalValues.ql +ql/java/ql/src/Likely Bugs/Comparison/EqualsArray.ql +ql/java/ql/src/Likely Bugs/Comparison/HashedButNoHash.ql +ql/java/ql/src/Likely Bugs/Comparison/IncomparableEquals.ql +ql/java/ql/src/Likely Bugs/Comparison/InconsistentEqualsHashCode.ql +ql/java/ql/src/Likely Bugs/Comparison/MissingInstanceofInEquals.ql +ql/java/ql/src/Likely Bugs/Comparison/RefEqBoxed.ql +ql/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql +ql/java/ql/src/Likely Bugs/Comparison/WrongNanComparison.ql +ql/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.ql +ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.ql +ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLockingWithInitRace.ql +ql/java/ql/src/Likely Bugs/Concurrency/NonSynchronizedOverride.ql +ql/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.ql +ql/java/ql/src/Likely Bugs/Concurrency/SynchOnBoxedType.ql +ql/java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql +ql/java/ql/src/Likely Bugs/Frameworks/JUnit/JUnit5MissingNestedAnnotation.ql +ql/java/ql/src/Likely Bugs/Inheritance/NoNonFinalInConstructor.ql +ql/java/ql/src/Likely Bugs/Likely Typos/ContainerSizeCmpZero.ql +ql/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql +ql/java/ql/src/Likely Bugs/Likely Typos/MissingFormatArg.ql +ql/java/ql/src/Likely Bugs/Likely Typos/MissingSpaceTypo.ql +ql/java/ql/src/Likely Bugs/Likely Typos/SelfAssignment.ql +ql/java/ql/src/Likely Bugs/Likely Typos/StringBufferCharInit.ql +ql/java/ql/src/Likely Bugs/Likely Typos/SuspiciousDateFormat.ql +ql/java/ql/src/Likely Bugs/Likely Typos/UnusedFormatArg.ql +ql/java/ql/src/Likely Bugs/Nullness/NullAlways.ql +ql/java/ql/src/Likely Bugs/Nullness/NullExprDeref.ql +ql/java/ql/src/Likely Bugs/Nullness/NullMaybe.ql +ql/java/ql/src/Likely Bugs/Resource Leaks/CloseReader.ql +ql/java/ql/src/Likely Bugs/Resource Leaks/CloseSql.ql +ql/java/ql/src/Likely Bugs/Resource Leaks/CloseWriter.ql +ql/java/ql/src/Likely Bugs/Statements/ContinueInFalseLoop.ql +ql/java/ql/src/Likely Bugs/Statements/PartiallyMaskedCatch.ql +ql/java/ql/src/Likely Bugs/Statements/UseBraces.ql +ql/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql +ql/java/ql/src/Performance/InefficientEmptyStringTest.ql +ql/java/ql/src/Performance/InefficientKeySetIterator.ql +ql/java/ql/src/Performance/InefficientOutputStream.ql +ql/java/ql/src/Performance/InefficientPrimConstructor.ql +ql/java/ql/src/Performance/InnerClassCouldBeStatic.ql +ql/java/ql/src/Performance/NewStringString.ql +ql/java/ql/src/Performance/StringReplaceAllWithNonRegex.ql +ql/java/ql/src/Violations of Best Practice/Boxed Types/BoxedVariable.ql +ql/java/ql/src/Violations of Best Practice/Dead Code/DeadRefTypes.ql +ql/java/ql/src/Violations of Best Practice/Dead Code/InterfaceCannotBeImplemented.ql +ql/java/ql/src/Violations of Best Practice/Dead Code/UnreadLocal.ql +ql/java/ql/src/Violations of Best Practice/Dead Code/UnusedLabel.ql +ql/java/ql/src/Violations of Best Practice/Declarations/NoConstantsOnly.ql +ql/java/ql/src/Violations of Best Practice/Exception Handling/IgnoreExceptionalReturn.ql +ql/java/ql/src/Violations of Best Practice/Exception Handling/NumberFormatException.ql +ql/java/ql/src/Violations of Best Practice/Implementation Hiding/AbstractToConcreteCollection.ql +ql/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql +ql/java/ql/src/Violations of Best Practice/Naming Conventions/AmbiguousOuterSuper.ql +ql/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingMethodNames.ql +ql/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingOverloading.ql +ql/java/ql/src/Violations of Best Practice/Naming Conventions/LocalShadowsFieldConfusing.ql +ql/java/ql/src/Violations of Best Practice/Naming Conventions/SameNameAsSuper.ql +ql/java/ql/src/Violations of Best Practice/Undesirable Calls/CallsToStringToString.ql +ql/java/ql/src/Violations of Best Practice/Undesirable Calls/DefaultToString.ql +ql/java/ql/src/Violations of Best Practice/Undesirable Calls/DoNotCallFinalize.ql +ql/java/ql/src/Violations of Best Practice/Undesirable Calls/PrintLnArray.ql diff --git a/java/ql/integration-tests/java/query-suite/java-code-quality.qls.expected b/java/ql/integration-tests/java/query-suite/java-code-quality.qls.expected index 4af6a4dd5db2..e558cf3ffc48 100644 --- a/java/ql/integration-tests/java/query-suite/java-code-quality.qls.expected +++ b/java/ql/integration-tests/java/query-suite/java-code-quality.qls.expected @@ -1,13 +1,81 @@ +ql/java/ql/src/Advisory/Declarations/MissingOverrideAnnotation.ql +ql/java/ql/src/Advisory/Documentation/ImpossibleJavadocThrows.ql +ql/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql +ql/java/ql/src/Compatibility/JDK9/JdkInternalAccess.ql +ql/java/ql/src/Compatibility/JDK9/UnderscoreIdentifier.ql +ql/java/ql/src/DeadCode/UselessParameter.ql +ql/java/ql/src/Language Abuse/IterableIterator.ql +ql/java/ql/src/Language Abuse/UselessNullCheck.ql +ql/java/ql/src/Language Abuse/UselessTypeTest.ql +ql/java/ql/src/Language Abuse/WrappedIterator.ql +ql/java/ql/src/Likely Bugs/Arithmetic/ConstantExpAppearsNonConstant.ql ql/java/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql +ql/java/ql/src/Likely Bugs/Arithmetic/LShiftLargerThanTypeWidth.ql +ql/java/ql/src/Likely Bugs/Arithmetic/WhitespaceContradictsPrecedence.ql +ql/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql +ql/java/ql/src/Likely Bugs/Collections/ContainsTypeMismatch.ql +ql/java/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql +ql/java/ql/src/Likely Bugs/Collections/RemoveTypeMismatch.ql ql/java/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +ql/java/ql/src/Likely Bugs/Comparison/CompareIdenticalValues.ql +ql/java/ql/src/Likely Bugs/Comparison/EqualsArray.ql +ql/java/ql/src/Likely Bugs/Comparison/HashedButNoHash.ql ql/java/ql/src/Likely Bugs/Comparison/IncomparableEquals.ql ql/java/ql/src/Likely Bugs/Comparison/InconsistentEqualsHashCode.ql ql/java/ql/src/Likely Bugs/Comparison/MissingInstanceofInEquals.ql ql/java/ql/src/Likely Bugs/Comparison/RefEqBoxed.ql +ql/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql +ql/java/ql/src/Likely Bugs/Comparison/WrongNanComparison.ql +ql/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.ql +ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.ql +ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLockingWithInitRace.ql +ql/java/ql/src/Likely Bugs/Concurrency/NonSynchronizedOverride.ql +ql/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.ql +ql/java/ql/src/Likely Bugs/Concurrency/SynchOnBoxedType.ql +ql/java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql ql/java/ql/src/Likely Bugs/Frameworks/JUnit/JUnit5MissingNestedAnnotation.ql +ql/java/ql/src/Likely Bugs/Inheritance/NoNonFinalInConstructor.ql +ql/java/ql/src/Likely Bugs/Likely Typos/ContainerSizeCmpZero.ql ql/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql +ql/java/ql/src/Likely Bugs/Likely Typos/MissingFormatArg.ql +ql/java/ql/src/Likely Bugs/Likely Typos/MissingSpaceTypo.ql +ql/java/ql/src/Likely Bugs/Likely Typos/SelfAssignment.ql +ql/java/ql/src/Likely Bugs/Likely Typos/StringBufferCharInit.ql ql/java/ql/src/Likely Bugs/Likely Typos/SuspiciousDateFormat.ql +ql/java/ql/src/Likely Bugs/Likely Typos/UnusedFormatArg.ql +ql/java/ql/src/Likely Bugs/Nullness/NullAlways.ql +ql/java/ql/src/Likely Bugs/Nullness/NullExprDeref.ql +ql/java/ql/src/Likely Bugs/Nullness/NullMaybe.ql ql/java/ql/src/Likely Bugs/Resource Leaks/CloseReader.ql +ql/java/ql/src/Likely Bugs/Resource Leaks/CloseSql.ql ql/java/ql/src/Likely Bugs/Resource Leaks/CloseWriter.ql +ql/java/ql/src/Likely Bugs/Statements/ContinueInFalseLoop.ql +ql/java/ql/src/Likely Bugs/Statements/PartiallyMaskedCatch.ql +ql/java/ql/src/Likely Bugs/Statements/UseBraces.ql +ql/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql +ql/java/ql/src/Performance/InefficientEmptyStringTest.ql +ql/java/ql/src/Performance/InefficientKeySetIterator.ql +ql/java/ql/src/Performance/InefficientOutputStream.ql +ql/java/ql/src/Performance/InefficientPrimConstructor.ql +ql/java/ql/src/Performance/InnerClassCouldBeStatic.ql +ql/java/ql/src/Performance/NewStringString.ql ql/java/ql/src/Performance/StringReplaceAllWithNonRegex.ql +ql/java/ql/src/Violations of Best Practice/Boxed Types/BoxedVariable.ql +ql/java/ql/src/Violations of Best Practice/Dead Code/DeadRefTypes.ql +ql/java/ql/src/Violations of Best Practice/Dead Code/InterfaceCannotBeImplemented.ql +ql/java/ql/src/Violations of Best Practice/Dead Code/UnreadLocal.ql +ql/java/ql/src/Violations of Best Practice/Dead Code/UnusedLabel.ql +ql/java/ql/src/Violations of Best Practice/Declarations/NoConstantsOnly.ql +ql/java/ql/src/Violations of Best Practice/Exception Handling/IgnoreExceptionalReturn.ql +ql/java/ql/src/Violations of Best Practice/Exception Handling/NumberFormatException.ql +ql/java/ql/src/Violations of Best Practice/Implementation Hiding/AbstractToConcreteCollection.ql +ql/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql +ql/java/ql/src/Violations of Best Practice/Naming Conventions/AmbiguousOuterSuper.ql +ql/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingMethodNames.ql +ql/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingOverloading.ql +ql/java/ql/src/Violations of Best Practice/Naming Conventions/LocalShadowsFieldConfusing.ql +ql/java/ql/src/Violations of Best Practice/Naming Conventions/SameNameAsSuper.ql +ql/java/ql/src/Violations of Best Practice/Undesirable Calls/CallsToStringToString.ql +ql/java/ql/src/Violations of Best Practice/Undesirable Calls/DefaultToString.ql ql/java/ql/src/Violations of Best Practice/Undesirable Calls/DoNotCallFinalize.ql +ql/java/ql/src/Violations of Best Practice/Undesirable Calls/PrintLnArray.ql 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 a8ce00aca6c5..3290e0d84b0e 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/integration-tests/java/query-suite/not_included_in_qls.expected b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected index d0378fa2ea4c..1f58e51ad800 100644 --- a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected +++ b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected @@ -66,7 +66,6 @@ ql/java/ql/src/Frameworks/Spring/XML Configuration Errors/MissingSetters.ql ql/java/ql/src/Language Abuse/CastThisToTypeParameter.ql ql/java/ql/src/Language Abuse/DubiousDowncastOfThis.ql ql/java/ql/src/Language Abuse/DubiousTypeTestOfThis.ql -ql/java/ql/src/Language Abuse/EmptyMethod.ql ql/java/ql/src/Language Abuse/EmptyStatement.ql ql/java/ql/src/Language Abuse/EnumIdentifier.ql ql/java/ql/src/Language Abuse/ImplementsAnnotation.ql diff --git a/java/ql/integration-tests/java/query-suite/test.py b/java/ql/integration-tests/java/query-suite/test.py index 307a66c14316..6c606e17dc7f 100644 --- a/java/ql/integration-tests/java/query-suite/test.py +++ b/java/ql/integration-tests/java/query-suite/test.py @@ -2,7 +2,7 @@ import pytest from query_suites import * -well_known_query_suites = ['java-code-quality.qls', 'java-security-and-quality.qls', 'java-security-extended.qls', 'java-code-scanning.qls'] +well_known_query_suites = ['java-code-quality.qls', 'java-code-quality-extended.qls', 'java-security-and-quality.qls', 'java-security-extended.qls', 'java-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 1e624ba09133..320552a8f140 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 7.3.2 + +### Minor Analysis Improvements + +* Java `assert` statements are now assumed to be executed for the purpose of analysing control flow. This improves precision for a number of queries. + ## 7.3.1 No user-facing changes. diff --git a/java/ql/lib/Customizations.qll b/java/ql/lib/Customizations.qll index 1f5716726e30..f083e0864507 100644 --- a/java/ql/lib/Customizations.qll +++ b/java/ql/lib/Customizations.qll @@ -8,5 +8,7 @@ * the `RemoteFlowSource` and `AdditionalTaintStep` classes associated with the security queries * to model frameworks that are not covered by the standard library. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/IDEContextual.qll b/java/ql/lib/IDEContextual.qll index f26956bcca01..e74d51898e8d 100644 --- a/java/ql/lib/IDEContextual.qll +++ b/java/ql/lib/IDEContextual.qll @@ -1,6 +1,8 @@ /** * Provides shared predicates related to contextual queries in the code viewer. */ +overlay[local?] +module; import semmle.files.FileSystem private import codeql.util.FileSystem diff --git a/java/ql/lib/change-notes/released/7.3.2.md b/java/ql/lib/change-notes/released/7.3.2.md new file mode 100644 index 000000000000..6e3c03208608 --- /dev/null +++ b/java/ql/lib/change-notes/released/7.3.2.md @@ -0,0 +1,5 @@ +## 7.3.2 + +### Minor Analysis Improvements + +* Java `assert` statements are now assumed to be executed for the purpose of analysing control flow. This improves precision for a number of queries. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 43cb026b1392..cf3deb9367da 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.3.1 +lastReleaseVersion: 7.3.2 diff --git a/java/ql/lib/default.qll b/java/ql/lib/default.qll index 79ed05a7c378..66060273e966 100644 --- a/java/ql/lib/default.qll +++ b/java/ql/lib/default.qll @@ -1,3 +1,5 @@ /** DEPRECATED: use `java.qll` instead. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/definitions.qll b/java/ql/lib/definitions.qll index aa5de3eb4019..f0a4e859b08e 100644 --- a/java/ql/lib/definitions.qll +++ b/java/ql/lib/definitions.qll @@ -2,6 +2,8 @@ * Provides classes and predicates related to jump-to-definition links * in the code viewer. */ +overlay[local?] +module; import java import IDEContextual diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index f785c3c96285..dc86c4637505 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.dataflow.DataFlow import semmle.code.java.dataflow.TaintTracking @@ -5,7 +8,7 @@ import semmle.code.java.controlflow.Dominance module JCAModel { import Language - import Crypto::KeyOpAlg as KeyOpAlg + import codeql.quantum.experimental.Standardization::Types::KeyOpAlg as KeyOpAlg abstract class CipherAlgorithmValueConsumer extends Crypto::AlgorithmValueConsumer { } @@ -115,7 +118,7 @@ module JCAModel { } bindingset[name] - Crypto::THashType hash_name_to_type_known(string name, int digestLength) { + Crypto::HashType hash_name_to_type_known(string name, int digestLength) { name = "SHA-1" and result instanceof Crypto::SHA1 and digestLength = 160 or name = ["SHA-256", "SHA-384", "SHA-512"] and @@ -152,24 +155,22 @@ module JCAModel { } bindingset[name] - private predicate mode_name_to_type_known( - Crypto::TBlockCipherModeOfOperationType type, string name - ) { - type = Crypto::ECB() and name = "ECB" + private predicate mode_name_to_type_known(KeyOpAlg::ModeOfOperationType type, string name) { + type = KeyOpAlg::ECB() and name = "ECB" or - type = Crypto::CBC() and name = "CBC" + type = KeyOpAlg::CBC() and name = "CBC" or - type = Crypto::GCM() and name = "GCM" + type = KeyOpAlg::GCM() and name = "GCM" or - type = Crypto::CTR() and name = "CTR" + type = KeyOpAlg::CTR() and name = "CTR" or - type = Crypto::XTS() and name = "XTS" + type = KeyOpAlg::XTS() and name = "XTS" or - type = Crypto::CCM() and name = "CCM" + type = KeyOpAlg::CCM() and name = "CCM" or - type = Crypto::SIV() and name = "SIV" + type = KeyOpAlg::SIV() and name = "SIV" or - type = Crypto::OCB() and name = "OCB" + type = KeyOpAlg::OCB() and name = "OCB" } bindingset[name] @@ -182,7 +183,7 @@ module JCAModel { type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DES()) or upper = "TRIPLEDES" and - type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::TripleDES()) + type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::TRIPLE_DES()) or upper = "IDEA" and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::IDEA()) @@ -205,8 +206,8 @@ module JCAModel { } bindingset[name] - predicate mac_name_to_mac_type_known(Crypto::TMACType type, string name) { - type = Crypto::THMAC() and + predicate mac_name_to_mac_type_known(Crypto::TMacType type, string name) { + type = Crypto::HMAC() and name.toUpperCase().matches("HMAC%") } @@ -298,18 +299,18 @@ module JCAModel { override string getRawPaddingAlgorithmName() { result = super.getPadding() } bindingset[name] - private predicate paddingToNameMappingKnown(Crypto::TPaddingType type, string name) { - type instanceof Crypto::NoPadding and name = "NOPADDING" + private predicate paddingToNameMappingKnown(KeyOpAlg::PaddingSchemeType type, string name) { + type instanceof KeyOpAlg::NoPadding and name = "NOPADDING" or - type instanceof Crypto::PKCS7 and name = ["PKCS5Padding", "PKCS7Padding"] // TODO: misnomer in the JCA? + type instanceof KeyOpAlg::PKCS7 and name = ["PKCS5Padding", "PKCS7Padding"] // TODO: misnomer in the JCA? or - type instanceof Crypto::OAEP and name.matches("OAEP%") // TODO: handle OAEPWith% + type instanceof KeyOpAlg::OAEP and name.matches("OAEP%") // TODO: handle OAEPWith% } - override Crypto::TPaddingType getPaddingType() { + override KeyOpAlg::PaddingSchemeType getPaddingType() { if this.paddingToNameMappingKnown(_, super.getPadding()) then this.paddingToNameMappingKnown(result, super.getPadding()) - else result instanceof Crypto::OtherPadding + else result instanceof KeyOpAlg::OtherPadding } } @@ -320,10 +321,10 @@ module JCAModel { override string getRawModeAlgorithmName() { result = super.getMode() } - override Crypto::TBlockCipherModeOfOperationType getModeType() { + override KeyOpAlg::ModeOfOperationType getModeType() { if mode_name_to_type_known(_, super.getMode()) then mode_name_to_type_known(result, super.getMode()) - else result instanceof Crypto::OtherMode + else result instanceof KeyOpAlg::OtherMode } } @@ -347,7 +348,7 @@ module JCAModel { override string getRawAlgorithmName() { result = super.getValue() } - override KeyOpAlg::Algorithm getAlgorithmType() { + override KeyOpAlg::AlgorithmType getAlgorithmType() { if cipher_name_to_type_known(_, super.getAlgorithmName()) then cipher_name_to_type_known(result, super.getAlgorithmName()) else result instanceof KeyOpAlg::TUnknownKeyOperationAlgorithmType @@ -373,12 +374,12 @@ module JCAModel { oaep_padding_string_components(any(CipherStringLiteral s).getPadding(), hash, mfg) } - class OAEPPaddingHashAlgorithmInstance extends OAEPPaddingAlgorithmInstance, + class OaepPaddingHashAlgorithmInstance extends OaepPaddingAlgorithmInstance, Crypto::HashAlgorithmInstance instanceof CipherStringLiteral { string hashName; - OAEPPaddingHashAlgorithmInstance() { + OaepPaddingHashAlgorithmInstance() { oaep_padding_string_components(super.getPadding(), hashName, _) } @@ -389,12 +390,12 @@ module JCAModel { override int getFixedDigestLength() { exists(hash_name_to_type_known(hashName, result)) } } - class OAEPPaddingAlgorithmInstance extends Crypto::OAEPPaddingAlgorithmInstance, + class OaepPaddingAlgorithmInstance extends Crypto::OaepPaddingAlgorithmInstance, CipherStringLiteralPaddingAlgorithmInstance { - override Crypto::HashAlgorithmInstance getOAEPEncodingHashAlgorithm() { result = this } + override Crypto::HashAlgorithmInstance getOaepEncodingHashAlgorithm() { result = this } - override Crypto::HashAlgorithmInstance getMGF1HashAlgorithm() { none() } // TODO + override Crypto::HashAlgorithmInstance getMgf1HashAlgorithm() { none() } // TODO } /** @@ -1030,7 +1031,7 @@ module JCAModel { KeyGeneratorGetInstanceCall getInstantiationCall() { result = instantiationCall } } - // TODO: Link getAlgorithm from KeyPairGenerator to algorithm instances or AVCs? High priority. + //TODO: Link getAlgorithm from KeyPairGenerator to algorithm instances or AVCs? High priority. class KeyGeneratorGetInstanceCall extends MethodCall { KeyGeneratorGetInstanceCall() { this.getCallee().hasQualifiedName("javax.crypto", "KeyGenerator", "getInstance") @@ -1105,6 +1106,10 @@ module JCAModel { } override int getKeySizeFixed() { none() } + + override Crypto::ConsumerInputDataFlowNode getKeyValueConsumer() { none() } + + override predicate hasKeyValueConsumer() { none() } } class KeyGeneratorCipherAlgorithm extends CipherStringLiteralAlgorithmInstance { @@ -1156,9 +1161,7 @@ module JCAModel { } module KeySpecInstantiationToGenerateSecretFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node src) { - exists(KeySpecInstantiation call | src.asExpr() = call) - } + predicate isSource(DataFlow::Node src) { src.asExpr() instanceof KeySpecInstantiation } predicate isSink(DataFlow::Node sink) { exists(SecretKeyFactoryGenerateSecretCall call | sink.asExpr() = call.getKeySpecArg()) @@ -1207,29 +1210,29 @@ module JCAModel { predicate isIntermediate() { none() } } - class KDFAlgorithmStringLiteral extends Crypto::KeyDerivationAlgorithmInstance instanceof StringLiteral + class KdfAlgorithmStringLiteral extends Crypto::KeyDerivationAlgorithmInstance instanceof StringLiteral { SecretKeyFactoryKDFAlgorithmValueConsumer consumer; - KDFAlgorithmStringLiteral() { + KdfAlgorithmStringLiteral() { kdf_names(this.getValue()) and KDFAlgorithmStringToGetInstanceFlow::flow(DataFlow::exprNode(this), consumer.getInputNode()) } - override string getRawKDFAlgorithmName() { result = super.getValue() } + override string getRawKdfAlgorithmName() { result = super.getValue() } - override Crypto::TKeyDerivationType getKDFType() { + override Crypto::TKeyDerivationType getKdfType() { result = kdf_name_to_kdf_type(super.getValue(), _) } SecretKeyFactoryKDFAlgorithmValueConsumer getConsumer() { result = consumer } } - class PBKDF2AlgorithmStringLiteral extends KDFAlgorithmStringLiteral, - Crypto::PBKDF2AlgorithmInstance, Crypto::HMACAlgorithmInstance, Crypto::HashAlgorithmInstance, + class Pbkdf2AlgorithmStringLiteral extends KdfAlgorithmStringLiteral, + Crypto::Pbkdf2AlgorithmInstance, Crypto::HmacAlgorithmInstance, Crypto::HashAlgorithmInstance, Crypto::AlgorithmValueConsumer { - PBKDF2AlgorithmStringLiteral() { super.getKDFType() instanceof Crypto::PBKDF2 } + Pbkdf2AlgorithmStringLiteral() { super.getKdfType() instanceof Crypto::PBKDF2 } override Crypto::ConsumerInputDataFlowNode getInputNode() { none() } @@ -1243,17 +1246,17 @@ module JCAModel { exists(hash_name_to_type_known(this.getRawHashAlgorithmName(), result)) } - override string getRawMACAlgorithmName() { - result = super.getRawKDFAlgorithmName().splitAt("PBKDF2With", 1) + override string getRawMacAlgorithmName() { + result = super.getRawKdfAlgorithmName().splitAt("PBKDF2With", 1) } override string getRawHashAlgorithmName() { - result = super.getRawKDFAlgorithmName().splitAt("WithHmac", 1) + result = super.getRawKdfAlgorithmName().splitAt("WithHmac", 1) } - override Crypto::TMACType getMACType() { result instanceof Crypto::THMAC } + override Crypto::MacType getMacType() { result = Crypto::HMAC() } - override Crypto::AlgorithmValueConsumer getHMACAlgorithmValueConsumer() { result = this } + override Crypto::AlgorithmValueConsumer getHmacAlgorithmValueConsumer() { result = this } override Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { result = this } } @@ -1267,7 +1270,7 @@ module JCAModel { override Crypto::ConsumerInputDataFlowNode getInputNode() { result.asExpr() = this } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(KDFAlgorithmStringLiteral l | l.getConsumer() = this and result = l) + exists(KdfAlgorithmStringLiteral l | l.getConsumer() = this and result = l) } SecretKeyFactoryGetInstanceCall getInstantiation() { result = call } @@ -1442,105 +1445,103 @@ module JCAModel { * MACs */ - module MACKnownAlgorithmToConsumerConfig implements DataFlow::ConfigSig { + module MacKnownAlgorithmToConsumerConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node src) { mac_names(src.asExpr().(StringLiteral).getValue()) } predicate isSink(DataFlow::Node sink) { - exists(MACGetInstanceCall call | sink.asExpr() = call.getAlgorithmArg()) + exists(MacGetInstanceCall call | sink.asExpr() = call.getAlgorithmArg()) } } - module MACKnownAlgorithmToConsumerFlow = DataFlow::Global; + module MacKnownAlgorithmToConsumerFlow = DataFlow::Global; - module MACGetInstanceToMACOperationFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node src) { src.asExpr() instanceof MACGetInstanceCall } + module MacGetInstanceToMacOperationFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node src) { src.asExpr() instanceof MacGetInstanceCall } predicate isSink(DataFlow::Node sink) { - exists(MACOperationCall call | sink.asExpr() = call.(MethodCall).getQualifier()) or - exists(MACInitCall call | sink.asExpr() = call.(MethodCall).getQualifier()) + exists(MacOperationCall call | sink.asExpr() = call.(MethodCall).getQualifier()) or + exists(MacInitCall call | sink.asExpr() = call.(MethodCall).getQualifier()) } } - module MACGetInstanceToMACOperationFlow = - DataFlow::Global; + module MacGetInstanceToMacOperationFlow = + DataFlow::Global; - module MACInitCallToMACOperationFlowConfig implements DataFlow::ConfigSig { + module MacInitCallToMacOperationFlowConfig implements DataFlow::ConfigSig { // TODO: use flow state with one config predicate isSource(DataFlow::Node src) { - exists(MACInitCall init | src.asExpr() = init.getQualifier()) + exists(MacInitCall init | src.asExpr() = init.getQualifier()) } predicate isSink(DataFlow::Node sink) { - exists(MACOperationCall call | sink.asExpr() = call.(MethodCall).getQualifier()) + exists(MacOperationCall call | sink.asExpr() = call.(MethodCall).getQualifier()) } } - module MACInitCallToMACOperationFlow = DataFlow::Global; + module MacInitCallToMacOperationFlow = DataFlow::Global; - class KnownMACAlgorithm extends Crypto::MACAlgorithmInstance instanceof StringLiteral { - MACGetInstanceAlgorithmValueConsumer consumer; + class KnownMacAlgorithm extends Crypto::MacAlgorithmInstance instanceof StringLiteral { + MacGetInstanceAlgorithmValueConsumer consumer; - KnownMACAlgorithm() { + KnownMacAlgorithm() { mac_names(this.getValue()) and - MACKnownAlgorithmToConsumerFlow::flow(DataFlow::exprNode(this), consumer.getInputNode()) + MacKnownAlgorithmToConsumerFlow::flow(DataFlow::exprNode(this), consumer.getInputNode()) } - MACGetInstanceAlgorithmValueConsumer getConsumer() { result = consumer } + MacGetInstanceAlgorithmValueConsumer getConsumer() { result = consumer } - override string getRawMACAlgorithmName() { result = super.getValue() } + override string getRawMacAlgorithmName() { result = super.getValue() } - override Crypto::TMACType getMACType() { + override Crypto::MacType getMacType() { if mac_name_to_mac_type_known(_, super.getValue()) then mac_name_to_mac_type_known(result, super.getValue()) - else result instanceof Crypto::TOtherMACType + else result = Crypto::OtherMacType() } } - class MACGetInstanceCall extends MethodCall { - MACGetInstanceCall() { this.getCallee().hasQualifiedName("javax.crypto", "Mac", "getInstance") } + class MacGetInstanceCall extends MethodCall { + MacGetInstanceCall() { this.getCallee().hasQualifiedName("javax.crypto", "Mac", "getInstance") } Expr getAlgorithmArg() { result = this.getArgument(0) } - MACOperationCall getOperation() { - MACGetInstanceToMACOperationFlow::flow(DataFlow::exprNode(this), + MacOperationCall getOperation() { + MacGetInstanceToMacOperationFlow::flow(DataFlow::exprNode(this), DataFlow::exprNode(result.(MethodCall).getQualifier())) } - MACInitCall getInitCall() { - MACGetInstanceToMACOperationFlow::flow(DataFlow::exprNode(this), + MacInitCall getInitCall() { + MacGetInstanceToMacOperationFlow::flow(DataFlow::exprNode(this), DataFlow::exprNode(result.getQualifier())) } } - class MACInitCall extends MethodCall { - MACInitCall() { this.getCallee().hasQualifiedName("javax.crypto", "Mac", "init") } + class MacInitCall extends MethodCall { + MacInitCall() { this.getCallee().hasQualifiedName("javax.crypto", "Mac", "init") } Expr getKeyArg() { result = this.getArgument(0) and this.getMethod().getParameterType(0).hasName("Key") } - MACOperationCall getOperation() { - MACInitCallToMACOperationFlow::flow(DataFlow::exprNode(this.getQualifier()), + MacOperationCall getOperation() { + MacInitCallToMacOperationFlow::flow(DataFlow::exprNode(this.getQualifier()), DataFlow::exprNode(result.(MethodCall).getQualifier())) } } - class MACGetInstanceAlgorithmValueConsumer extends Crypto::AlgorithmValueConsumer { - MACGetInstanceCall call; - - MACGetInstanceAlgorithmValueConsumer() { this = call.getAlgorithmArg() } + class MacGetInstanceAlgorithmValueConsumer extends Crypto::AlgorithmValueConsumer { + MacGetInstanceAlgorithmValueConsumer() { this = any(MacGetInstanceCall c).getAlgorithmArg() } override Crypto::ConsumerInputDataFlowNode getInputNode() { result.asExpr() = this } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(KnownMACAlgorithm l | l.getConsumer() = this and result = l) + exists(KnownMacAlgorithm l | l.getConsumer() = this and result = l) } } - class MACOperationCall extends Crypto::MACOperationInstance instanceof MethodCall { + class MacOperationCall extends Crypto::MacOperationInstance instanceof MethodCall { Expr output; - MACOperationCall() { + MacOperationCall() { super.getMethod().getDeclaringType().hasQualifiedName("javax.crypto", "Mac") and ( super.getMethod().hasStringSignature(["doFinal()", "doFinal(byte[])"]) and this = output @@ -1551,13 +1552,13 @@ module JCAModel { } override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { - exists(MACGetInstanceCall instantiation | + exists(MacGetInstanceCall instantiation | instantiation.getOperation() = this and result = instantiation.getAlgorithmArg() ) } override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { - exists(MACGetInstanceCall instantiation, MACInitCall initCall | + exists(MacGetInstanceCall instantiation, MacInitCall initCall | instantiation.getOperation() = this and initCall.getOperation() = this and instantiation.getInitCall() = initCall and @@ -1599,15 +1600,18 @@ module JCAModel { override string getRawEllipticCurveName() { result = super.getValue() } - override Crypto::TEllipticCurveType getEllipticCurveType() { - if Crypto::ellipticCurveNameToKeySizeAndFamilyMapping(this.getRawEllipticCurveName(), _, _) + override Crypto::EllipticCurveFamilyType getEllipticCurveFamilyType() { + if + Crypto::ellipticCurveNameToKnownKeySizeAndFamilyMapping(this.getRawEllipticCurveName(), _, _) then - Crypto::ellipticCurveNameToKeySizeAndFamilyMapping(this.getRawEllipticCurveName(), _, result) + Crypto::ellipticCurveNameToKnownKeySizeAndFamilyMapping(this.getRawEllipticCurveName(), _, + result) else result = Crypto::OtherEllipticCurveType() } override int getKeySize() { - Crypto::ellipticCurveNameToKeySizeAndFamilyMapping(this.getRawEllipticCurveName(), result, _) + Crypto::ellipticCurveNameToKnownKeySizeAndFamilyMapping(this.getRawEllipticCurveName(), + result, _) } EllipticCurveAlgorithmValueConsumer getConsumer() { result = consumer } diff --git a/java/ql/lib/experimental/quantum/Language.qll b/java/ql/lib/experimental/quantum/Language.qll index 59164901c10c..975a8ad8e1fe 100644 --- a/java/ql/lib/experimental/quantum/Language.qll +++ b/java/ql/lib/experimental/quantum/Language.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import java as Language private import semmle.code.java.security.InsecureRandomnessQuery private import semmle.code.java.security.RandomQuery diff --git a/java/ql/lib/external/ExternalArtifact.qll b/java/ql/lib/external/ExternalArtifact.qll index 2e782a6a4da1..cdba653062ad 100644 --- a/java/ql/lib/external/ExternalArtifact.qll +++ b/java/ql/lib/external/ExternalArtifact.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java class ExternalData extends @externalDataElement { diff --git a/java/ql/lib/java.qll b/java/ql/lib/java.qll index ce0905184f40..9644343e93b6 100644 --- a/java/ql/lib/java.qll +++ b/java/ql/lib/java.qll @@ -1,4 +1,6 @@ /** Provides all default Java QL imports. */ +overlay[local?] +module; import Customizations import semmle.code.FileSystem diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 89b6a2353b9d..aec6dd194a4e 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.3.1 +version: 7.3.3-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/lib/semmle/code/FileSystem.qll b/java/ql/lib/semmle/code/FileSystem.qll index a7c38b41ca54..92c888304ff6 100644 --- a/java/ql/lib/semmle/code/FileSystem.qll +++ b/java/ql/lib/semmle/code/FileSystem.qll @@ -1,4 +1,6 @@ /** Provides classes for working with files and folders. */ +overlay[local?] +module; import Location private import codeql.util.FileSystem diff --git a/java/ql/lib/semmle/code/Location.qll b/java/ql/lib/semmle/code/Location.qll index abc1d19d0f89..7265164e8e15 100644 --- a/java/ql/lib/semmle/code/Location.qll +++ b/java/ql/lib/semmle/code/Location.qll @@ -3,9 +3,12 @@ * * Locations represent parts of files and are used to map elements to their source location. */ +overlay[local?] +module; import FileSystem import semmle.code.java.Element +private import semmle.code.java.Overlay private import semmle.code.SMAP /** Holds if element `e` has name `name`. */ @@ -219,3 +222,16 @@ private predicate fixedHasLocation(Top l, Location loc, File f) { not hasSourceLocation(l, _, _) and locations_default(loc, f, _, _, _, _) } + +overlay[local] +private predicate discardableLocation(string file, @location l) { + not isOverlay() and + file = getRawFileForLoc(l) and + not exists(@file f | hasLocation(f, l)) +} + +/** Discard base locations in files fully extracted in the overlay. */ +overlay[discard_entity] +private predicate discardLocation(@location l) { + exists(string file | discardableLocation(file, l) and extractedInOverlay(file)) +} diff --git a/java/ql/lib/semmle/code/SMAP.qll b/java/ql/lib/semmle/code/SMAP.qll index 575d54f92de1..96243a78d7b4 100644 --- a/java/ql/lib/semmle/code/SMAP.qll +++ b/java/ql/lib/semmle/code/SMAP.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with SMAP files (see JSR-045). */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/Unit.qll b/java/ql/lib/semmle/code/Unit.qll index 83a4a03321d9..e31457eae1aa 100644 --- a/java/ql/lib/semmle/code/Unit.qll +++ b/java/ql/lib/semmle/code/Unit.qll @@ -1,3 +1,5 @@ /** Provides the `Unit` class. */ +overlay[local?] +module; import codeql.util.Unit diff --git a/java/ql/lib/semmle/code/configfiles/ConfigFiles.qll b/java/ql/lib/semmle/code/configfiles/ConfigFiles.qll index 282f1c1228a3..0c69f45c56fa 100644 --- a/java/ql/lib/semmle/code/configfiles/ConfigFiles.qll +++ b/java/ql/lib/semmle/code/configfiles/ConfigFiles.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for working with configuration files, such * as Java `.properties` or `.ini` files. */ +overlay[local?] +module; import semmle.code.Location diff --git a/java/ql/lib/semmle/code/java/Annotation.qll b/java/ql/lib/semmle/code/java/Annotation.qll index f39b1f3420a5..ba5ce65daac8 100644 --- a/java/ql/lib/semmle/code/java/Annotation.qll +++ b/java/ql/lib/semmle/code/java/Annotation.qll @@ -8,6 +8,8 @@ * Each annotation type has zero or more annotation elements that contain a * name and possibly a value. */ +overlay[local?] +module; import Element import Expr diff --git a/java/ql/lib/semmle/code/java/Collections.qll b/java/ql/lib/semmle/code/java/Collections.qll index 9fd64dc60ee3..d121512c3196 100644 --- a/java/ql/lib/semmle/code/java/Collections.qll +++ b/java/ql/lib/semmle/code/java/Collections.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for reasoning about instances of * `java.util.Collection` and their methods. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/Compilation.qll b/java/ql/lib/semmle/code/java/Compilation.qll index c52f308e8e33..835505390468 100644 --- a/java/ql/lib/semmle/code/java/Compilation.qll +++ b/java/ql/lib/semmle/code/java/Compilation.qll @@ -1,6 +1,8 @@ /** * Provides a class representing individual compiler invocations that occurred during the build. */ +overlay[local?] +module; import semmle.code.FileSystem diff --git a/java/ql/lib/semmle/code/java/CompilationUnit.qll b/java/ql/lib/semmle/code/java/CompilationUnit.qll index 9b4b58e9a9bd..546c3d26ea39 100644 --- a/java/ql/lib/semmle/code/java/CompilationUnit.qll +++ b/java/ql/lib/semmle/code/java/CompilationUnit.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with Java compilation units. */ +overlay[local?] +module; import Element import Package diff --git a/java/ql/lib/semmle/code/java/Completion.qll b/java/ql/lib/semmle/code/java/Completion.qll index 6ccdb16df725..35d3c83e2ee9 100644 --- a/java/ql/lib/semmle/code/java/Completion.qll +++ b/java/ql/lib/semmle/code/java/Completion.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for representing completions. */ +overlay[local?] +module; /* * A completion represents how a statement or expression terminates. diff --git a/java/ql/lib/semmle/code/java/Concurrency.qll b/java/ql/lib/semmle/code/java/Concurrency.qll index 61e76525ec87..0e510db3443b 100644 --- a/java/ql/lib/semmle/code/java/Concurrency.qll +++ b/java/ql/lib/semmle/code/java/Concurrency.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java /** diff --git a/java/ql/lib/semmle/code/java/Constants.qll b/java/ql/lib/semmle/code/java/Constants.qll index 9e35a925be33..0cad92b7fc6d 100644 --- a/java/ql/lib/semmle/code/java/Constants.qll +++ b/java/ql/lib/semmle/code/java/Constants.qll @@ -1,6 +1,8 @@ /** * Provdides a module to calculate constant integer and boolean values. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll index e3c7ed6e5d9e..33b7a6c0a9fc 100644 --- a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll +++ b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll @@ -7,6 +7,8 @@ * statement, an expression, or an exit node for a callable, indicating that * execution of the callable terminates. */ +overlay[local?] +module; /* * The implementation is centered around the concept of a _completion_, which @@ -100,7 +102,8 @@ module ControlFlow { private newtype TNode = TExprNode(Expr e) { hasControlFlow(e) } or TStmtNode(Stmt s) or - TExitNode(Callable c) { exists(c.getBody()) } + TExitNode(Callable c) { exists(c.getBody()) } or + TAssertThrowNode(AssertStmt s) /** A node in the expression-level control-flow graph. */ class Node extends TNode { @@ -204,6 +207,25 @@ module ControlFlow { /** Gets the source location for this element. */ override Location getLocation() { result = c.getLocation() } } + + /** A control flow node indicating a failing assertion. */ + class AssertThrowNode extends Node, TAssertThrowNode { + AssertStmt s; + + AssertThrowNode() { this = TAssertThrowNode(s) } + + override Stmt getEnclosingStmt() { result = s } + + override Callable getEnclosingCallable() { result = s.getEnclosingCallable() } + + override ExprParent getAstNode() { result = s } + + /** Gets a textual representation of this element. */ + override string toString() { result = "Assert Throw" } + + /** Gets the source location for this element. */ + override Location getLocation() { result = s.getLocation() } + } } class ControlFlowNode = ControlFlow::Node; @@ -327,12 +349,28 @@ private module ControlFlowGraphImpl { ) } + private ThrowableType actualAssertionError() { + result.hasQualifiedName("java.lang", "AssertionError") + } + + private ThrowableType assertionError() { + result = actualAssertionError() + or + // In case `AssertionError` is not extracted, we use `Error` as a fallback. + not exists(actualAssertionError()) and + result.hasQualifiedName("java.lang", "Error") + } + /** * Gets an exception type that may be thrown during execution of the * body or the resources (if any) of `try`. */ private ThrowableType thrownInBody(TryStmt try) { - exists(AstNode n | mayThrow(n, result) | + exists(AstNode n | + mayThrow(n, result) + or + n instanceof AssertStmt and result = assertionError() + | n.getEnclosingStmt().getEnclosingStmt+() = try.getBlock() or n.(Expr).getParent*() = try.getAResource() ) @@ -394,10 +432,7 @@ private module ControlFlowGraphImpl { exists(LogicExpr logexpr | logexpr.(BinaryExpr).getLeftOperand() = b or - // Cannot use LogicExpr.getAnOperand or BinaryExpr.getAnOperand as they remove parentheses. - logexpr.(BinaryExpr).getRightOperand() = b and inBooleanContext(logexpr) - or - logexpr.(UnaryExpr).getExpr() = b and inBooleanContext(logexpr) + logexpr.getAnOperand() = b and inBooleanContext(logexpr) ) or exists(ConditionalExpr condexpr | @@ -407,6 +442,8 @@ private module ControlFlowGraphImpl { inBooleanContext(condexpr) ) or + exists(AssertStmt assertstmt | assertstmt.getExpr() = b) + or exists(SwitchExpr switch | inBooleanContext(switch) and switch.getAResult() = b @@ -672,8 +709,6 @@ private module ControlFlowGraphImpl { this instanceof EmptyStmt or this instanceof LocalTypeDeclStmt - or - this instanceof AssertStmt } /** Gets child nodes in their order of execution. Indexing starts at either -1 or 0. */ @@ -744,8 +779,6 @@ private module ControlFlowGraphImpl { or index = 0 and result = this.(ThrowStmt).getExpr() or - index = 0 and result = this.(AssertStmt).getExpr() - or result = this.(RecordPatternExpr).getSubPattern(index) } @@ -807,9 +840,12 @@ private module ControlFlowGraphImpl { or result = first(n.(SynchronizedStmt).getExpr()) or + result = first(n.(AssertStmt).getExpr()) + or result.asStmt() = n and not n instanceof PostOrderNode and - not n instanceof SynchronizedStmt + not n instanceof SynchronizedStmt and + not n instanceof AssertStmt or result.asExpr() = n and n instanceof SwitchExpr } @@ -1112,7 +1148,17 @@ private module ControlFlowGraphImpl { // `return` statements give rise to a `Return` completion last.asStmt() = n.(ReturnStmt) and completion = ReturnCompletion() or - // `throw` statements or throwing calls give rise to ` Throw` completion + exists(AssertStmt assertstmt | assertstmt = n | + // `assert` statements may complete normally - we use the `AssertStmt` itself + // to represent this outcome + last.asStmt() = assertstmt and completion = NormalCompletion() + or + // `assert` statements may throw + completion = ThrowCompletion(assertionError()) and + last.(AssertThrowNode).getAstNode() = assertstmt + ) + or + // `throw` statements or throwing calls give rise to `Throw` completion exists(ThrowableType tt | mayThrow(n, tt) | last = n.getCfgNode() and completion = ThrowCompletion(tt) ) @@ -1520,6 +1566,25 @@ private module ControlFlowGraphImpl { exists(int i | last(s.getVariable(i), n, completion) and result = first(s.getVariable(i + 1))) ) or + // Assert statements: + exists(AssertStmt assertstmt | + last(assertstmt.getExpr(), n, completion) and + completion = BooleanCompletion(true, _) and + result.asStmt() = assertstmt + or + last(assertstmt.getExpr(), n, completion) and + completion = BooleanCompletion(false, _) and + ( + result = first(assertstmt.getMessage()) + or + not exists(assertstmt.getMessage()) and + result.(AssertThrowNode).getAstNode() = assertstmt + ) + or + last(assertstmt.getMessage(), n, NormalCompletion()) and + result.(AssertThrowNode).getAstNode() = assertstmt + ) + or // When expressions: exists(WhenExpr whenexpr | n.asExpr() = whenexpr and diff --git a/java/ql/lib/semmle/code/java/Conversions.qll b/java/ql/lib/semmle/code/java/Conversions.qll index f3deb311a3df..76b74fd1eb7c 100644 --- a/java/ql/lib/semmle/code/java/Conversions.qll +++ b/java/ql/lib/semmle/code/java/Conversions.qll @@ -4,6 +4,8 @@ * * See the Java Language Specification, Section 5, for details. */ +overlay[local?] +module; import java import semmle.code.java.arithmetic.Overflow diff --git a/java/ql/lib/semmle/code/java/Dependency.qll b/java/ql/lib/semmle/code/java/Dependency.qll index 8514bcb466a1..138ab7523a4d 100644 --- a/java/ql/lib/semmle/code/java/Dependency.qll +++ b/java/ql/lib/semmle/code/java/Dependency.qll @@ -1,6 +1,8 @@ /** * Provides utility predicates for representing dependencies between types. */ +overlay[local?] +module; import Type import Generics diff --git a/java/ql/lib/semmle/code/java/DependencyCounts.qll b/java/ql/lib/semmle/code/java/DependencyCounts.qll index 4cb958373a93..13709ebaf291 100644 --- a/java/ql/lib/semmle/code/java/DependencyCounts.qll +++ b/java/ql/lib/semmle/code/java/DependencyCounts.qll @@ -1,6 +1,8 @@ /** * This library provides utility predicates for representing the number of dependencies between types. */ +overlay[local?] +module; import Type import Generics diff --git a/java/ql/lib/semmle/code/java/Diagnostics.qll b/java/ql/lib/semmle/code/java/Diagnostics.qll index 0134b32c5c0e..c93e6850b3de 100644 --- a/java/ql/lib/semmle/code/java/Diagnostics.qll +++ b/java/ql/lib/semmle/code/java/Diagnostics.qll @@ -1,6 +1,8 @@ /** * Provides classes representing warnings generated during compilation. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/Element.qll b/java/ql/lib/semmle/code/java/Element.qll index 2032d72ee5f9..dca3c8d91eb6 100644 --- a/java/ql/lib/semmle/code/java/Element.qll +++ b/java/ql/lib/semmle/code/java/Element.qll @@ -1,6 +1,8 @@ /** * Provides a class that represents named elements in Java programs. */ +overlay[local?] +module; import CompilationUnit import semmle.code.Location diff --git a/java/ql/lib/semmle/code/java/Exception.qll b/java/ql/lib/semmle/code/java/Exception.qll index 0b92975a580d..abd934994626 100644 --- a/java/ql/lib/semmle/code/java/Exception.qll +++ b/java/ql/lib/semmle/code/java/Exception.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with Java exceptions. */ +overlay[local?] +module; import Element import Type diff --git a/java/ql/lib/semmle/code/java/Expr.qll b/java/ql/lib/semmle/code/java/Expr.qll index e7dd817cecd9..282d90eaeee0 100644 --- a/java/ql/lib/semmle/code/java/Expr.qll +++ b/java/ql/lib/semmle/code/java/Expr.qll @@ -1,10 +1,13 @@ /** * Provides classes for working with Java expressions. */ +overlay[local?] +module; import java private import semmle.code.java.frameworks.android.Compose private import semmle.code.java.Constants +private import semmle.code.java.Overlay /** A common super-class that represents all kinds of expressions. */ class Expr extends ExprParent, @expr { @@ -2699,3 +2702,6 @@ class RecordPatternExpr extends Expr, @recordpatternexpr { ) } } + +overlay[local] +private class DiscardableExpr extends DiscardableLocatable, @expr { } diff --git a/java/ql/lib/semmle/code/java/GeneratedFiles.qll b/java/ql/lib/semmle/code/java/GeneratedFiles.qll index 31a229f507f2..7c4a6d4cbb5a 100644 --- a/java/ql/lib/semmle/code/java/GeneratedFiles.qll +++ b/java/ql/lib/semmle/code/java/GeneratedFiles.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the most common types of generated files. */ +overlay[local?] +module; import Type private import semmle.code.java.frameworks.JavaxAnnotations diff --git a/java/ql/lib/semmle/code/java/Generics.qll b/java/ql/lib/semmle/code/java/Generics.qll index a50dcabe2245..e0204b1beace 100644 --- a/java/ql/lib/semmle/code/java/Generics.qll +++ b/java/ql/lib/semmle/code/java/Generics.qll @@ -30,6 +30,8 @@ * * The terminology for generic methods is analogous. */ +overlay[local?] +module; import Type diff --git a/java/ql/lib/semmle/code/java/Import.qll b/java/ql/lib/semmle/code/java/Import.qll index cef66c34ae15..aed041155555 100644 --- a/java/ql/lib/semmle/code/java/Import.qll +++ b/java/ql/lib/semmle/code/java/Import.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with Java imports. */ +overlay[local?] +module; import semmle.code.Location import CompilationUnit diff --git a/java/ql/lib/semmle/code/java/J2EE.qll b/java/ql/lib/semmle/code/java/J2EE.qll index 70c207a35794..4412b3715e34 100644 --- a/java/ql/lib/semmle/code/java/J2EE.qll +++ b/java/ql/lib/semmle/code/java/J2EE.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with J2EE bean types. */ +overlay[local?] +module; import Type diff --git a/java/ql/lib/semmle/code/java/JDK.qll b/java/ql/lib/semmle/code/java/JDK.qll index 27a8b2a9ca73..897e857ba108 100644 --- a/java/ql/lib/semmle/code/java/JDK.qll +++ b/java/ql/lib/semmle/code/java/JDK.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with standard classes and methods from the JDK. */ +overlay[local?] +module; import Member import semmle.code.java.security.ExternalProcess diff --git a/java/ql/lib/semmle/code/java/JDKAnnotations.qll b/java/ql/lib/semmle/code/java/JDKAnnotations.qll index 5f3e70688558..aac7242ad4f1 100644 --- a/java/ql/lib/semmle/code/java/JDKAnnotations.qll +++ b/java/ql/lib/semmle/code/java/JDKAnnotations.qll @@ -1,6 +1,8 @@ /** * Provides classes that represent standard annotations from the JDK. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/JMX.qll b/java/ql/lib/semmle/code/java/JMX.qll index 11849be0beee..3f18e0ecf3d3 100644 --- a/java/ql/lib/semmle/code/java/JMX.qll +++ b/java/ql/lib/semmle/code/java/JMX.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with JMX bean types. */ +overlay[local?] +module; import Type diff --git a/java/ql/lib/semmle/code/java/Javadoc.qll b/java/ql/lib/semmle/code/java/Javadoc.qll index f14d8776ddc4..ac7a3c2cd6a5 100644 --- a/java/ql/lib/semmle/code/java/Javadoc.qll +++ b/java/ql/lib/semmle/code/java/Javadoc.qll @@ -1,8 +1,11 @@ /** * Provides classes and predicates for working with Javadoc documentation. */ +overlay[local?] +module; import semmle.code.Location +private import semmle.code.java.Overlay /** A Javadoc parent is an element whose child can be some Javadoc documentation. */ class JavadocParent extends @javadocParent, Top { @@ -194,3 +197,6 @@ class KtCommentSection extends @ktcommentsection { /** Gets the string representation of this section. */ string toString() { result = this.getContent() } } + +overlay[local] +private class DiscardableJavadoc extends DiscardableLocatable, @javadoc { } diff --git a/java/ql/lib/semmle/code/java/KotlinType.qll b/java/ql/lib/semmle/code/java/KotlinType.qll index 3e5597c5579d..9d29f3b441ef 100644 --- a/java/ql/lib/semmle/code/java/KotlinType.qll +++ b/java/ql/lib/semmle/code/java/KotlinType.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with Kotlin types. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/Maps.qll b/java/ql/lib/semmle/code/java/Maps.qll index 1089e8924156..25c8659f2c9e 100644 --- a/java/ql/lib/semmle/code/java/Maps.qll +++ b/java/ql/lib/semmle/code/java/Maps.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for reasoning about instances of * `java.util.Map` and their methods. */ +overlay[local?] +module; import java import Collections diff --git a/java/ql/lib/semmle/code/java/Member.qll b/java/ql/lib/semmle/code/java/Member.qll index f6f4ca56f92d..1e814117e9ee 100644 --- a/java/ql/lib/semmle/code/java/Member.qll +++ b/java/ql/lib/semmle/code/java/Member.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for working with members of Java classes and interfaces, * that is, methods, constructors, fields and nested types. */ +overlay[local?] +module; import Element import Type @@ -9,6 +11,7 @@ import Annotation import Exception import metrics.MetricField private import dispatch.VirtualDispatch +private import semmle.code.java.Overlay /** * A common abstraction for type member declarations, @@ -621,7 +624,13 @@ class SrcMethod extends Method { then implementsInterfaceMethod(result, this) else result.getASourceOverriddenMethod*() = this ) and - (exists(result.getBody()) or result.hasModifier("native")) + ( + // We allow empty method bodies for the local overlay variant to allow + // calls to methods only fully extracted in base. + isOverlay() or + exists(result.getBody()) or + result.hasModifier("native") + ) } } @@ -895,3 +904,13 @@ class ExtensionMethod extends Method { else result = 0 } } + +overlay[local] +private class DiscardableAnonymousMethod extends DiscardableLocatable, @method { + DiscardableAnonymousMethod() { + exists(@classorinterface c | methods(this, _, _, _, c, _) and isAnonymClass(c, _)) + } +} + +overlay[local] +private class DiscardableMethod extends DiscardableReferableLocatable, @method { } diff --git a/java/ql/lib/semmle/code/java/Modifier.qll b/java/ql/lib/semmle/code/java/Modifier.qll index 150b65be6716..864691bf835b 100644 --- a/java/ql/lib/semmle/code/java/Modifier.qll +++ b/java/ql/lib/semmle/code/java/Modifier.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with Java modifiers. */ +overlay[local?] +module; import Element diff --git a/java/ql/lib/semmle/code/java/Modules.qll b/java/ql/lib/semmle/code/java/Modules.qll index c8aed33a0fc3..a1bceb72e0bb 100644 --- a/java/ql/lib/semmle/code/java/Modules.qll +++ b/java/ql/lib/semmle/code/java/Modules.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with Java modules. */ +overlay[local?] +module; import CompilationUnit diff --git a/java/ql/lib/semmle/code/java/NumberFormatException.qll b/java/ql/lib/semmle/code/java/NumberFormatException.qll index 841d64b0098d..83f66d1a709d 100644 --- a/java/ql/lib/semmle/code/java/NumberFormatException.qll +++ b/java/ql/lib/semmle/code/java/NumberFormatException.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for reasoning about `java.lang.NumberFormatException`. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/Overlay.qll b/java/ql/lib/semmle/code/java/Overlay.qll new file mode 100644 index 000000000000..f1cfc5c434f2 --- /dev/null +++ b/java/ql/lib/semmle/code/java/Overlay.qll @@ -0,0 +1,83 @@ +/** + * Defines entity discard predicates for Java overlay analysis. + */ +overlay[local?] +module; + +import java + +/** + * A local predicate that always holds for the overlay variant and + * never holds for the base variant. This is used to define local + * predicates that behave differently for the base and overlay variant. + */ +overlay[local] +predicate isOverlay() { databaseMetadata("isOverlay", "true") } + +/** Gets the raw file for a locatable. */ +overlay[local] +string getRawFile(@locatable el) { + exists(@location loc, @file file | + hasLocation(el, loc) and + locations_default(loc, file, _, _, _, _) and + files(file, result) + ) +} + +/** Gets the raw file for a location. */ +overlay[local] +string getRawFileForLoc(@location l) { + exists(@file f | locations_default(l, f, _, _, _, _) and files(f, result)) +} + +/** Holds for files fully extracted in the overlay. */ +overlay[local] +predicate extractedInOverlay(string file) { + isOverlay() and + // numlines is used to restrict attention to fully extracted files and + // ignore skeleton extracted files in the overlay + exists(@locatable l | numlines(l, _, _, _) and file = getRawFile(l)) +} + +/** + * A `@locatable` that should be discarded in the base variant if its file is + * extracted in the overlay variant. + */ +overlay[local] +abstract class DiscardableLocatable extends @locatable { + /** Gets the raw file for a locatable in base. */ + string getRawFileInBase() { not isOverlay() and result = getRawFile(this) } + + /** Gets a textual representation of this discardable locatable. */ + string toString() { none() } +} + +overlay[discard_entity] +private predicate discardLocatable(@locatable el) { + extractedInOverlay(el.(DiscardableLocatable).getRawFileInBase()) +} + +/** + * A `@locatable` that should be discarded in the base variant if its file is + * extracted in the overlay variant and it is itself not extracted in the + * overlay, that is, it is deleted in the overlay. + */ +overlay[local] +abstract class DiscardableReferableLocatable extends @locatable { + /** Gets the raw file for a locatable in base. */ + string getRawFileInBase() { not isOverlay() and result = getRawFile(this) } + + /** Holds if the locatable exists in the overlay. */ + predicate existsInOverlay() { isOverlay() and exists(this) } + + /** Gets a textual representation of this discardable locatable. */ + string toString() { none() } +} + +overlay[discard_entity] +private predicate discardReferableLocatable(@locatable el) { + exists(DiscardableReferableLocatable drl | drl = el | + extractedInOverlay(drl.getRawFileInBase()) and + not drl.existsInOverlay() + ) +} diff --git a/java/ql/lib/semmle/code/java/Package.qll b/java/ql/lib/semmle/code/java/Package.qll index 466c97e561d6..e0621f4de541 100644 --- a/java/ql/lib/semmle/code/java/Package.qll +++ b/java/ql/lib/semmle/code/java/Package.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with Java packages. */ +overlay[local?] +module; import Element import Type diff --git a/java/ql/lib/semmle/code/java/PrettyPrintAst.qll b/java/ql/lib/semmle/code/java/PrettyPrintAst.qll index de1bf3100a37..3d907a5a0991 100644 --- a/java/ql/lib/semmle/code/java/PrettyPrintAst.qll +++ b/java/ql/lib/semmle/code/java/PrettyPrintAst.qll @@ -2,6 +2,8 @@ * Provides pretty-printed representations of the AST, in particular top-level * classes and interfaces. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/PrintAst.qll b/java/ql/lib/semmle/code/java/PrintAst.qll index 0af012234bb2..52d344401d70 100644 --- a/java/ql/lib/semmle/code/java/PrintAst.qll +++ b/java/ql/lib/semmle/code/java/PrintAst.qll @@ -5,6 +5,8 @@ * extend `PrintAstConfiguration` and override `shouldPrint` to hold for only the elements * you wish to view the AST for. */ +overlay[local?] +module; import java import semmle.code.java.regex.RegexTreeView as RegexTreeView diff --git a/java/ql/lib/semmle/code/java/Reflection.qll b/java/ql/lib/semmle/code/java/Reflection.qll index da287387e173..e37187231b93 100644 --- a/java/ql/lib/semmle/code/java/Reflection.qll +++ b/java/ql/lib/semmle/code/java/Reflection.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with Java Reflection. */ +overlay[local?] +module; import java import JDKAnnotations diff --git a/java/ql/lib/semmle/code/java/Serializability.qll b/java/ql/lib/semmle/code/java/Serializability.qll index 479d1d8cdb01..639cc0c18eba 100644 --- a/java/ql/lib/semmle/code/java/Serializability.qll +++ b/java/ql/lib/semmle/code/java/Serializability.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with Java Serialization. */ +overlay[local?] +module; import java private import frameworks.jackson.JacksonSerializability diff --git a/java/ql/lib/semmle/code/java/Statement.qll b/java/ql/lib/semmle/code/java/Statement.qll index da9621f9ce3a..a4872a32c914 100644 --- a/java/ql/lib/semmle/code/java/Statement.qll +++ b/java/ql/lib/semmle/code/java/Statement.qll @@ -1,9 +1,12 @@ /** * Provides classes and predicates for working with Java statements. */ +overlay[local?] +module; import Expr import metrics.MetricStmt +private import semmle.code.java.Overlay /** A common super-class of all statements. */ class Stmt extends StmtParent, ExprParent, @stmt { @@ -985,3 +988,6 @@ class SuperConstructorInvocationStmt extends Stmt, ConstructorCall, @superconstr override string getAPrimaryQlClass() { result = "SuperConstructorInvocationStmt" } } + +overlay[local] +private class DiscardableStmt extends DiscardableLocatable, @stmt { } diff --git a/java/ql/lib/semmle/code/java/StringFormat.qll b/java/ql/lib/semmle/code/java/StringFormat.qll index 4ed39c02a841..da69a5b9b8ff 100644 --- a/java/ql/lib/semmle/code/java/StringFormat.qll +++ b/java/ql/lib/semmle/code/java/StringFormat.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for reasoning about string formatting. */ +overlay[local?] +module; import java import dataflow.DefUse diff --git a/java/ql/lib/semmle/code/java/Type.qll b/java/ql/lib/semmle/code/java/Type.qll index 5036bbea6224..c30dd7012bfb 100644 --- a/java/ql/lib/semmle/code/java/Type.qll +++ b/java/ql/lib/semmle/code/java/Type.qll @@ -9,6 +9,8 @@ * Classes and interfaces can also be local (`LocalClassOrInterface`, `LocalClass`) or anonymous (`AnonymousClass`). * Enumerated types (`EnumType`) and records (`Record`) are special kinds of classes. */ +overlay[local?] +module; import Member import Modifier @@ -668,6 +670,7 @@ class RefType extends Type, Annotatable, Modifiable, @reftype { * * For the definition of the notion of *erasure* see JLS v8, section 4.6 (Type Erasure). */ + overlay[caller?] pragma[inline] RefType commonSubtype(RefType other) { result.getASourceSupertype*() = erase(this) and @@ -1257,6 +1260,7 @@ private Type erase(Type t) { * * For the definition of the notion of *erasure* see JLS v8, section 4.6 (Type Erasure). */ +overlay[caller?] pragma[inline] predicate haveIntersection(RefType t1, RefType t2) { exists(RefType e1, RefType e2 | e1 = erase(t1) and e2 = erase(t2) | diff --git a/java/ql/lib/semmle/code/java/UnitTests.qll b/java/ql/lib/semmle/code/java/UnitTests.qll index f229440e4eed..6c05fecab01c 100644 --- a/java/ql/lib/semmle/code/java/UnitTests.qll +++ b/java/ql/lib/semmle/code/java/UnitTests.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with test classes and methods. */ +overlay[local?] +module; import Type import Member diff --git a/java/ql/lib/semmle/code/java/Variable.qll b/java/ql/lib/semmle/code/java/Variable.qll index a4cf09df055d..cb76fe3a9c9a 100644 --- a/java/ql/lib/semmle/code/java/Variable.qll +++ b/java/ql/lib/semmle/code/java/Variable.qll @@ -1,8 +1,11 @@ /** * Provides classes and predicates for working with Java variables and their declarations. */ +overlay[local?] +module; import Element +private import semmle.code.java.Overlay /** A variable is a field, a local variable or a parameter. */ class Variable extends @variable, Annotatable, Element, Modifiable { @@ -131,3 +134,6 @@ class Parameter extends Element, @param, LocalScopeVariable { /** Holds if this is an anonymous parameter, `_` */ predicate isAnonymous() { this.getName() = "" } } + +overlay[local] +private class DiscardableLocalScopeVariable extends DiscardableLocatable, @localscopevariable { } diff --git a/java/ql/lib/semmle/code/java/arithmetic/Overflow.qll b/java/ql/lib/semmle/code/java/arithmetic/Overflow.qll index e92d8352fe9b..471f271eb866 100644 --- a/java/ql/lib/semmle/code/java/arithmetic/Overflow.qll +++ b/java/ql/lib/semmle/code/java/arithmetic/Overflow.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java /** A subclass of `PrimitiveType` with width-based ordering methods. */ diff --git a/java/ql/lib/semmle/code/java/comparison/Comparison.qll b/java/ql/lib/semmle/code/java/comparison/Comparison.qll index 27ed9271e999..7aea0f6fb258 100644 --- a/java/ql/lib/semmle/code/java/comparison/Comparison.qll +++ b/java/ql/lib/semmle/code/java/comparison/Comparison.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java /** diff --git a/java/ql/lib/semmle/code/java/controlflow/BasicBlocks.qll b/java/ql/lib/semmle/code/java/controlflow/BasicBlocks.qll index 284ee1dad0ce..844371da36b8 100644 --- a/java/ql/lib/semmle/code/java/controlflow/BasicBlocks.qll +++ b/java/ql/lib/semmle/code/java/controlflow/BasicBlocks.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with basic blocks in Java. */ +overlay[local?] +module; import java import Dominance @@ -85,6 +87,17 @@ class BasicBlock extends BbImpl::BasicBlock { */ predicate dominates(BasicBlock bb) { super.dominates(bb) } + /** + * Holds if this basic block strictly dominates basic block `bb`. + * + * That is, all paths reaching `bb` from the entry point basic block must + * go through this basic block and this basic block is different from `bb`. + */ + predicate strictlyDominates(BasicBlock bb) { super.strictlyDominates(bb) } + + /** Gets an immediate successor of this basic block of a given type, if any. */ + BasicBlock getASuccessor(Input::SuccessorType t) { result = super.getASuccessor(t) } + /** * DEPRECATED: Use `getASuccessor` instead. * diff --git a/java/ql/lib/semmle/code/java/controlflow/Dominance.qll b/java/ql/lib/semmle/code/java/controlflow/Dominance.qll index 6f0cb3d255c5..e2a50ba06df6 100644 --- a/java/ql/lib/semmle/code/java/controlflow/Dominance.qll +++ b/java/ql/lib/semmle/code/java/controlflow/Dominance.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for control-flow graph dominance. */ +overlay[local?] +module; import java @@ -93,6 +95,7 @@ predicate iDominates(ControlFlowNode dominator, ControlFlowNode node) { } /** Holds if `dom` strictly dominates `node`. */ +overlay[caller?] pragma[inline] predicate strictlyDominates(ControlFlowNode dom, ControlFlowNode node) { // This predicate is gigantic, so it must be inlined. @@ -102,6 +105,7 @@ predicate strictlyDominates(ControlFlowNode dom, ControlFlowNode node) { } /** Holds if `dom` dominates `node`. (This is reflexive.) */ +overlay[caller?] pragma[inline] predicate dominates(ControlFlowNode dom, ControlFlowNode node) { // This predicate is gigantic, so it must be inlined. @@ -111,6 +115,7 @@ predicate dominates(ControlFlowNode dom, ControlFlowNode node) { } /** Holds if `dom` strictly post-dominates `node`. */ +overlay[caller?] pragma[inline] predicate strictlyPostDominates(ControlFlowNode dom, ControlFlowNode node) { // This predicate is gigantic, so it must be inlined. @@ -120,6 +125,7 @@ predicate strictlyPostDominates(ControlFlowNode dom, ControlFlowNode node) { } /** Holds if `dom` post-dominates `node`. (This is reflexive.) */ +overlay[caller?] pragma[inline] predicate postDominates(ControlFlowNode dom, ControlFlowNode node) { // This predicate is gigantic, so it must be inlined. diff --git a/java/ql/lib/semmle/code/java/controlflow/Guards.qll b/java/ql/lib/semmle/code/java/controlflow/Guards.qll index 4042e7b29624..8cead5b666bb 100644 --- a/java/ql/lib/semmle/code/java/controlflow/Guards.qll +++ b/java/ql/lib/semmle/code/java/controlflow/Guards.qll @@ -2,12 +2,14 @@ * Provides classes and predicates for reasoning about guards and the control * flow elements controlled by those guards. */ +overlay[local?] +module; import java private import semmle.code.java.controlflow.Dominance -private import semmle.code.java.controlflow.internal.GuardsLogic private import semmle.code.java.controlflow.internal.Preconditions private import semmle.code.java.controlflow.internal.SwitchCases +private import codeql.controlflow.Guards as SharedGuards /** * A basic block that terminates in a condition, splitting the subsequent control flow. @@ -137,67 +139,378 @@ private predicate isNonFallThroughPredecessor(SwitchCase sc, ControlFlowNode pre ) } -/** - * A condition that can be evaluated to either true or false. This can either - * be an `Expr` of boolean type that isn't a boolean literal, or a case of a - * switch statement, or a method access that acts as a precondition check. - * - * Evaluating a switch case to true corresponds to taking that switch case, and - * evaluating it to false corresponds to taking some other branch. - */ -final class Guard extends ExprParent { - Guard() { - this.(Expr).getType() instanceof BooleanType and not this instanceof BooleanLiteral - or - this instanceof SwitchCase - or - conditionCheckArgument(this, _, _) +private module GuardsInput implements SharedGuards::InputSig { + private import java as J + private import semmle.code.java.dataflow.NullGuards as NullGuards + import SuccessorType + + class ControlFlowNode = J::ControlFlowNode; + + class BasicBlock = J::BasicBlock; + + predicate dominatingEdge(BasicBlock bb1, BasicBlock bb2) { J::dominatingEdge(bb1, bb2) } + + class AstNode = ExprParent; + + class Expr = J::Expr; + + private newtype TConstantValue = + TCharValue(string c) { any(CharacterLiteral lit).getValue() = c } or + TStringValue(string value) { any(CompileTimeConstantExpr c).getStringValue() = value } or + TEnumValue(EnumConstant c) + + class ConstantValue extends TConstantValue { + string toString() { + this = TCharValue(result) + or + this = TStringValue(result) + or + exists(EnumConstant c | this = TEnumValue(c) and result = c.toString()) + } } - /** Gets the immediately enclosing callable whose body contains this guard. */ - Callable getEnclosingCallable() { - result = this.(Expr).getEnclosingCallable() or - result = this.(SwitchCase).getEnclosingCallable() + abstract class ConstantExpr extends Expr { + predicate isNull() { none() } + + boolean asBooleanValue() { none() } + + int asIntegerValue() { none() } + + ConstantValue asConstantValue() { none() } } - /** Gets the statement containing this guard. */ - Stmt getEnclosingStmt() { - result = this.(Expr).getEnclosingStmt() or - result = this.(SwitchCase).getSwitch() or - result = this.(SwitchCase).getSwitchExpr().getEnclosingStmt() + private class NullConstant extends ConstantExpr instanceof J::NullLiteral { + override predicate isNull() { any() } } - /** - * Gets the basic block containing this guard or the basic block that tests the - * applicability of this switch case -- for a pattern case this is the case statement - * itself; for a non-pattern case this is the most recent pattern case or the top of - * the switch block if there is none. - */ - BasicBlock getBasicBlock() { - // Not a switch case - result = this.(Expr).getBasicBlock() + private class BooleanConstant extends ConstantExpr instanceof J::BooleanLiteral { + override boolean asBooleanValue() { result = super.getBooleanValue() } + } + + private class IntegerConstant extends ConstantExpr instanceof J::CompileTimeConstantExpr { + override int asIntegerValue() { result = super.getIntValue() } + } + + private class CharConstant extends ConstantExpr instanceof J::CharacterLiteral { + override ConstantValue asConstantValue() { result = TCharValue(super.getValue()) } + } + + private class StringConstant extends ConstantExpr instanceof J::CompileTimeConstantExpr { + override ConstantValue asConstantValue() { result = TStringValue(super.getStringValue()) } + } + + private class EnumConstantExpr extends ConstantExpr instanceof J::VarAccess { + override ConstantValue asConstantValue() { + exists(EnumConstant c | this = c.getAnAccess() and result = TEnumValue(c)) + } + } + + class NonNullExpr extends Expr { + NonNullExpr() { + this = NullGuards::baseNotNullExpr() + or + exists(Field f | + this = f.getAnAccess() and + f.isFinal() and + f.getInitializer() = NullGuards::baseNotNullExpr() + ) + } + } + + class Case extends ExprParent instanceof J::SwitchCase { + Expr getSwitchExpr() { result = super.getSelectorExpr() } + + predicate isDefaultCase() { this instanceof DefaultCase } + + ConstantExpr asConstantCase() { + exists(ConstCase cc | this = cc | + cc.getValue() = result and + strictcount(cc.getValue(_)) = 1 + ) + } + + private predicate hasPatternCaseMatchEdge(BasicBlock bb1, BasicBlock bb2, boolean isMatch) { + exists(ConditionNode patterncase | + this instanceof PatternCase and + patterncase = super.getControlFlowNode() and + bb1.getLastNode() = patterncase and + bb2.getFirstNode() = patterncase.getABranchSuccessor(isMatch) + ) + } + + predicate matchEdge(BasicBlock bb1, BasicBlock bb2) { + exists(ControlFlowNode pred | + // Pattern cases are handled as ConditionBlocks. + not this instanceof PatternCase and + bb2.getFirstNode() = super.getControlFlowNode() and + isNonFallThroughPredecessor(this, pred) and + bb1 = pred.getBasicBlock() + ) + or + this.hasPatternCaseMatchEdge(bb1, bb2, true) + } + + predicate nonMatchEdge(BasicBlock bb1, BasicBlock bb2) { + this.hasPatternCaseMatchEdge(bb1, bb2, false) + } + } + + abstract private class BinExpr extends Expr { + Expr getAnOperand() { + result = this.(BinaryExpr).getAnOperand() or result = this.(AssignOp).getSource() + } + } + + class AndExpr extends BinExpr { + AndExpr() { + this instanceof AndBitwiseExpr or + this instanceof AndLogicalExpr or + this instanceof AssignAndExpr + } + } + + class OrExpr extends BinExpr { + OrExpr() { + this instanceof OrBitwiseExpr or + this instanceof OrLogicalExpr or + this instanceof AssignOrExpr + } + } + + class NotExpr extends Expr instanceof J::LogNotExpr { + Expr getOperand() { result = this.(J::LogNotExpr).getExpr() } + } + + class IdExpr extends Expr { + IdExpr() { this instanceof AssignExpr or this instanceof CastExpr } + + Expr getEqualChildExpr() { + result = this.(AssignExpr).getSource() + or + result = this.(CastExpr).getExpr() + } + } + + private predicate objectsEquals(Method equals) { + equals.hasQualifiedName("java.util", "Objects", "equals") and + equals.getNumberOfParameters() = 2 + } + + pragma[nomagic] + predicate equalityTest(Expr eqtest, Expr left, Expr right, boolean polarity) { + exists(EqualityTest eq | eq = eqtest | + eq.getLeftOperand() = left and + eq.getRightOperand() = right and + eq.polarity() = polarity + ) or - // Return the closest pattern case statement before this one, including this one. - result = getClosestPrecedingPatternCase(this).getBasicBlock() + exists(MethodCall call | call = eqtest and polarity = true | + call.getMethod() instanceof EqualsMethod and + call.getQualifier() = left and + call.getAnArgument() = right + or + objectsEquals(call.getMethod()) and + call.getArgument(0) = left and + call.getArgument(1) = right + ) + } + + class ConditionalExpr extends Expr instanceof J::ConditionalExpr { + Expr getCondition() { result = super.getCondition() } + + Expr getThen() { result = super.getTrueExpr() } + + Expr getElse() { result = super.getFalseExpr() } + } +} + +private module GuardsImpl = SharedGuards::Make; + +private module LogicInputCommon { + private import semmle.code.java.dataflow.NullGuards as NullGuards + + predicate additionalNullCheck( + GuardsImpl::PreGuard guard, GuardValue val, GuardsInput::Expr e, boolean isNull + ) { + guard.(InstanceOfExpr).getExpr() = e and val.asBooleanValue() = true and isNull = false or - // Not a pattern case and no preceding pattern case -- return the top of the switch block. - not exists(getClosestPrecedingPatternCase(this)) and - result = this.(SwitchCase).getSelectorExpr().getBasicBlock() + exists(MethodCall call | + call = guard and + call.getAnArgument() = e and + NullGuards::nullCheckMethod(call.getMethod(), val.asBooleanValue(), isNull) + ) } +} - /** - * Holds if this guard is an equality test between `e1` and `e2`. The test - * can be either `==`, `!=`, `.equals`, or a switch case. If the test is - * negated, that is `!=`, then `polarity` is false, otherwise `polarity` is - * true. - */ - predicate isEquality(Expr e1, Expr e2, boolean polarity) { - exists(Expr exp1, Expr exp2 | equalityGuard(this, exp1, exp2, polarity) | - e1 = exp1 and e2 = exp2 - or - e2 = exp1 and e1 = exp2 +private module LogicInput_v1 implements GuardsImpl::LogicInputSig { + private import semmle.code.java.dataflow.internal.BaseSSA + + final private class FinalBaseSsaVariable = BaseSsaVariable; + + class SsaDefinition extends FinalBaseSsaVariable { + GuardsInput::Expr getARead() { result = this.getAUse() } + } + + class SsaWriteDefinition extends SsaDefinition instanceof BaseSsaUpdate { + GuardsInput::Expr getDefinition() { + super.getDefiningExpr().(VariableAssign).getSource() = result or + super.getDefiningExpr().(AssignOp) = result + } + } + + class SsaPhiNode extends SsaDefinition instanceof BaseSsaPhiNode { + predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb) { + super.hasInputFromBlock(inp, bb) + } + } + + predicate additionalNullCheck = LogicInputCommon::additionalNullCheck/4; + + predicate additionalImpliesStep( + GuardsImpl::PreGuard g1, GuardValue v1, GuardsImpl::PreGuard g2, GuardValue v2 + ) { + exists(MethodCall check, int argIndex | + g1 = check and + v1.getDualValue().isThrowsException() and + conditionCheckArgument(check, argIndex, v2.asBooleanValue()) and + g2 = check.getArgument(argIndex) ) } +} + +private module LogicInput_v2 implements GuardsImpl::LogicInputSig { + private import semmle.code.java.dataflow.SSA as SSA + + final private class FinalSsaVariable = SSA::SsaVariable; + + class SsaDefinition extends FinalSsaVariable { + GuardsInput::Expr getARead() { result = this.getAUse() } + } + + class SsaWriteDefinition extends SsaDefinition instanceof SSA::SsaExplicitUpdate { + GuardsInput::Expr getDefinition() { + super.getDefiningExpr().(VariableAssign).getSource() = result or + super.getDefiningExpr().(AssignOp) = result + } + } + + class SsaPhiNode extends SsaDefinition instanceof SSA::SsaPhiNode { + predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb) { + super.hasInputFromBlock(inp, bb) + } + } + + predicate additionalNullCheck = LogicInputCommon::additionalNullCheck/4; + + predicate additionalImpliesStep( + GuardsImpl::PreGuard g1, GuardValue v1, GuardsImpl::PreGuard g2, GuardValue v2 + ) { + LogicInput_v1::additionalImpliesStep(g1, v1, g2, v2) + or + CustomGuard::additionalImpliesStep(g1, v1, g2, v2) + } +} + +private module LogicInput_v3 implements GuardsImpl::LogicInputSig { + private import semmle.code.java.dataflow.IntegerGuards as IntegerGuards + import LogicInput_v2 + + predicate rangeGuard(GuardsImpl::PreGuard guard, GuardValue val, Expr e, int k, boolean upper) { + IntegerGuards::rangeGuard(guard, val.asBooleanValue(), e, k, upper) + } + + predicate additionalNullCheck = LogicInputCommon::additionalNullCheck/4; + + predicate additionalImpliesStep = LogicInput_v2::additionalImpliesStep/4; +} + +private module CustomGuardInput implements Guards_v2::CustomGuardInputSig { + private import semmle.code.java.dataflow.SSA + + private int parameterPosition() { result in [-1, any(Parameter p).getPosition()] } + + /** A parameter position represented by an integer. */ + class ParameterPosition extends int { + ParameterPosition() { this = parameterPosition() } + } + + /** An argument position represented by an integer. */ + class ArgumentPosition extends int { + ArgumentPosition() { this = parameterPosition() } + } + + /** Holds if arguments at position `apos` match parameters at position `ppos`. */ + overlay[caller?] + pragma[inline] + predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) { ppos = apos } + + final private class FinalMethod = Method; + + class BooleanMethod extends FinalMethod { + BooleanMethod() { + super.getReturnType().(PrimitiveType).hasName("boolean") and + not super.isOverridable() + } + + LogicInput_v2::SsaDefinition getParameter(ParameterPosition ppos) { + exists(Parameter p | + super.getParameter(ppos) = p and + not p.isVarargs() and + result.(SsaImplicitInit).isParameterDefinition(p) + ) + } + + GuardsInput::Expr getAReturnExpr() { + exists(ReturnStmt ret | + this = ret.getEnclosingCallable() and + ret.getResult() = result + ) + } + } + + private predicate booleanMethodCall(MethodCall call, BooleanMethod m) { + call.getMethod().getSourceDeclaration() = m + } + + class BooleanMethodCall extends GuardsInput::Expr instanceof MethodCall { + BooleanMethodCall() { booleanMethodCall(this, _) } + + BooleanMethod getMethod() { booleanMethodCall(this, result) } + + GuardsInput::Expr getArgument(ArgumentPosition apos) { result = super.getArgument(apos) } + } +} + +class GuardValue = GuardsImpl::GuardValue; + +private module CustomGuard = Guards_v2::CustomGuard; + +/** INTERNAL: Don't use. */ +module Guards_v1 = GuardsImpl::Logic; + +/** INTERNAL: Don't use. */ +module Guards_v2 = GuardsImpl::Logic; + +/** INTERNAL: Don't use. */ +module Guards_v3 = GuardsImpl::Logic; + +/** INTERNAL: Don't use. */ +predicate implies_v3(Guard g1, boolean b1, Guard g2, boolean b2) { + Guards_v3::boolImplies(g1, any(GuardValue v | v.asBooleanValue() = b1), g2, + any(GuardValue v | v.asBooleanValue() = b2)) +} + +/** + * A guard. This may be any expression whose value determines subsequent + * control flow. It may also be a switch case, which as a guard is considered + * to evaluate to either true or false depending on whether the case matches. + */ +final class Guard extends Guards_v3::Guard { + /** Gets the immediately enclosing callable whose body contains this guard. */ + Callable getEnclosingCallable() { + result = this.(Expr).getEnclosingCallable() or + result = this.(SwitchCase).getEnclosingCallable() + } /** * Holds if this guard tests whether `testedExpr` has type `testedType`. @@ -231,211 +544,14 @@ final class Guard extends ExprParent { else restricted = false ) } - - /** - * Holds if the evaluation of this guard to `branch` corresponds to the edge - * from `bb1` to `bb2`. - */ - predicate hasBranchEdge(BasicBlock bb1, BasicBlock bb2, boolean branch) { - exists(ConditionBlock cb | - cb = bb1 and - cb.getCondition() = this and - bb2 = cb.getTestSuccessor(branch) - ) - or - exists(SwitchCase sc, ControlFlowNode pred | - sc = this and - // Pattern cases are handled as ConditionBlocks above. - not sc instanceof PatternCase and - branch = true and - bb2.getFirstNode() = sc.getControlFlowNode() and - isNonFallThroughPredecessor(sc, pred) and - bb1 = pred.getBasicBlock() - ) - or - preconditionBranchEdge(this, bb1, bb2, branch) - } - - /** - * Holds if this guard evaluating to `branch` directly controls the block - * `controlled`. That is, the `true`- or `false`-successor of this guard (as - * given by `branch`) dominates `controlled`. - */ - predicate directlyControls(BasicBlock controlled, boolean branch) { - exists(ConditionBlock cb | - cb.getCondition() = this and - cb.controls(controlled, branch) - ) - or - switchCaseControls(this, controlled) and branch = true - or - preconditionControls(this, controlled, branch) - } - - /** - * Holds if this guard evaluating to `branch` controls the control-flow - * branch edge from `bb1` to `bb2`. That is, following the edge from - * `bb1` to `bb2` implies that this guard evaluated to `branch`. - */ - predicate controlsBranchEdge(BasicBlock bb1, BasicBlock bb2, boolean branch) { - guardControlsBranchEdge_v3(this, bb1, bb2, branch) - } - - /** - * Holds if this guard evaluating to `branch` directly or indirectly controls - * the block `controlled`. That is, the evaluation of `controlled` is - * dominated by this guard evaluating to `branch`. - */ - predicate controls(BasicBlock controlled, boolean branch) { - guardControls_v3(this, controlled, branch) - } -} - -private predicate switchCaseControls(SwitchCase sc, BasicBlock bb) { - exists(BasicBlock caseblock | - // Pattern cases are handled as condition blocks - not sc instanceof PatternCase and - caseblock.getFirstNode() = sc.getControlFlowNode() and - caseblock.dominates(bb) and - // Check we can't fall through from a previous block: - forall(ControlFlowNode pred | pred = sc.getControlFlowNode().getAPredecessor() | - isNonFallThroughPredecessor(sc, pred) - ) - ) -} - -private predicate preconditionBranchEdge( - MethodCall ma, BasicBlock bb1, BasicBlock bb2, boolean branch -) { - conditionCheckArgument(ma, _, branch) and - bb1.getLastNode() = ma.getControlFlowNode() and - bb2.getFirstNode() = bb1.getLastNode().getANormalSuccessor() -} - -private predicate preconditionControls(MethodCall ma, BasicBlock controlled, boolean branch) { - exists(BasicBlock check, BasicBlock succ | - preconditionBranchEdge(ma, check, succ, branch) and - dominatingEdge(check, succ) and - succ.dominates(controlled) - ) } /** - * INTERNAL: Use `Guards.controls` instead. + * INTERNAL: Use `Guard.controls` instead. * * Holds if `guard.controls(controlled, branch)`, except this only relies on * BaseSSA-based reasoning. */ -predicate guardControls_v1(Guard guard, BasicBlock controlled, boolean branch) { - guard.directlyControls(controlled, branch) - or - exists(Guard g, boolean b | - guardControls_v1(g, controlled, b) and - implies_v1(g, b, guard, branch) - ) -} - -/** - * INTERNAL: Use `Guards.controls` instead. - * - * Holds if `guard.controls(controlled, branch)`, except this doesn't rely on - * RangeAnalysis. - */ -predicate guardControls_v2(Guard guard, BasicBlock controlled, boolean branch) { - guard.directlyControls(controlled, branch) - or - exists(Guard g, boolean b | - guardControls_v2(g, controlled, b) and - implies_v2(g, b, guard, branch) - ) -} - -pragma[nomagic] -private predicate guardControls_v3(Guard guard, BasicBlock controlled, boolean branch) { - guard.directlyControls(controlled, branch) - or - exists(Guard g, boolean b | - guardControls_v3(g, controlled, b) and - implies_v3(g, b, guard, branch) - ) -} - -pragma[nomagic] -private predicate guardControlsBranchEdge_v2( - Guard guard, BasicBlock bb1, BasicBlock bb2, boolean branch -) { - guard.hasBranchEdge(bb1, bb2, branch) - or - exists(Guard g, boolean b | - guardControlsBranchEdge_v2(g, bb1, bb2, b) and - implies_v2(g, b, guard, branch) - ) -} - -pragma[nomagic] -private predicate guardControlsBranchEdge_v3( - Guard guard, BasicBlock bb1, BasicBlock bb2, boolean branch -) { - guard.hasBranchEdge(bb1, bb2, branch) - or - exists(Guard g, boolean b | - guardControlsBranchEdge_v3(g, bb1, bb2, b) and - implies_v3(g, b, guard, branch) - ) -} - -/** INTERNAL: Use `Guard` instead. */ -final class Guard_v2 extends Guard { - /** - * Holds if this guard evaluating to `branch` controls the control-flow - * branch edge from `bb1` to `bb2`. That is, following the edge from - * `bb1` to `bb2` implies that this guard evaluated to `branch`. - */ - predicate controlsBranchEdge(BasicBlock bb1, BasicBlock bb2, boolean branch) { - guardControlsBranchEdge_v2(this, bb1, bb2, branch) - } - - /** - * Holds if this guard evaluating to `branch` directly or indirectly controls - * the block `controlled`. That is, the evaluation of `controlled` is - * dominated by this guard evaluating to `branch`. - */ - predicate controls(BasicBlock controlled, boolean branch) { - guardControls_v2(this, controlled, branch) - } -} - -private predicate equalityGuard(Guard g, Expr e1, Expr e2, boolean polarity) { - exists(EqualityTest eqtest | - eqtest = g and - polarity = eqtest.polarity() and - eqtest.hasOperands(e1, e2) - ) - or - exists(MethodCall ma | - ma = g and - ma.getMethod() instanceof EqualsMethod and - polarity = true and - ma.getAnArgument() = e1 and - ma.getQualifier() = e2 - ) - or - exists(MethodCall ma, Method equals | - ma = g and - ma.getMethod() = equals and - polarity = true and - equals.hasName("equals") and - equals.getNumberOfParameters() = 2 and - equals.getDeclaringType().hasQualifiedName("java.util", "Objects") and - ma.getArgument(0) = e1 and - ma.getArgument(1) = e2 - ) - or - exists(ConstCase cc | - cc = g and - polarity = true and - cc.getSelectorExpr() = e1 and - cc.getValue() = e2 and - strictcount(cc.getValue(_)) = 1 - ) +predicate guardControls_v1(Guards_v1::Guard guard, BasicBlock controlled, boolean branch) { + guard.controls(controlled, branch) } diff --git a/java/ql/lib/semmle/code/java/controlflow/Paths.qll b/java/ql/lib/semmle/code/java/controlflow/Paths.qll index 8f87e19404a6..fb14c226484d 100644 --- a/java/ql/lib/semmle/code/java/controlflow/Paths.qll +++ b/java/ql/lib/semmle/code/java/controlflow/Paths.qll @@ -2,6 +2,8 @@ * This library provides predicates for reasoning about the set of all paths * through a callable. */ +overlay[local?] +module; import java import semmle.code.java.dispatch.VirtualDispatch diff --git a/java/ql/lib/semmle/code/java/controlflow/SuccessorType.qll b/java/ql/lib/semmle/code/java/controlflow/SuccessorType.qll index f03e4690a95a..feabc47552f3 100644 --- a/java/ql/lib/semmle/code/java/controlflow/SuccessorType.qll +++ b/java/ql/lib/semmle/code/java/controlflow/SuccessorType.qll @@ -1,6 +1,8 @@ /** * Provides different types of control flow successor types. */ +overlay[local?] +module; import java private import codeql.util.Boolean diff --git a/java/ql/lib/semmle/code/java/controlflow/UnreachableBlocks.qll b/java/ql/lib/semmle/code/java/controlflow/UnreachableBlocks.qll index 0ade780bc00c..0247417c6bb6 100644 --- a/java/ql/lib/semmle/code/java/controlflow/UnreachableBlocks.qll +++ b/java/ql/lib/semmle/code/java/controlflow/UnreachableBlocks.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for identifying unreachable blocks under a "closed-world" assumption. */ +overlay[local?] +module; import java import semmle.code.java.controlflow.Guards diff --git a/java/ql/lib/semmle/code/java/controlflow/internal/GuardsLogic.qll b/java/ql/lib/semmle/code/java/controlflow/internal/GuardsLogic.qll deleted file mode 100644 index 4cb3bc74f97f..000000000000 --- a/java/ql/lib/semmle/code/java/controlflow/internal/GuardsLogic.qll +++ /dev/null @@ -1,396 +0,0 @@ -/** - * Provides predicates for working with the internal logic of the `Guards` - * library. - */ - -import java -import semmle.code.java.controlflow.Guards -private import Preconditions -private import semmle.code.java.dataflow.SSA -private import semmle.code.java.dataflow.internal.BaseSSA -private import semmle.code.java.dataflow.NullGuards -private import semmle.code.java.dataflow.IntegerGuards - -/** - * Holds if the assumption that `g1` has been evaluated to `b1` implies that - * `g2` has been evaluated to `b2`, that is, the evaluation of `g2` to `b2` - * dominates the evaluation of `g1` to `b1`. - * - * Restricted to BaseSSA-based reasoning. - */ -predicate implies_v1(Guard g1, boolean b1, Guard g2, boolean b2) { - g1.(AndBitwiseExpr).getAnOperand() = g2 and b1 = true and b2 = true - or - g1.(OrBitwiseExpr).getAnOperand() = g2 and b1 = false and b2 = false - or - g1.(AssignAndExpr).getSource() = g2 and b1 = true and b2 = true - or - g1.(AssignOrExpr).getSource() = g2 and b1 = false and b2 = false - or - g1.(AndLogicalExpr).getAnOperand() = g2 and b1 = true and b2 = true - or - g1.(OrLogicalExpr).getAnOperand() = g2 and b1 = false and b2 = false - or - g1.(LogNotExpr).getExpr() = g2 and - b1 = b2.booleanNot() and - b1 = [true, false] - or - exists(EqualityTest eqtest, boolean polarity, BooleanLiteral boollit | - eqtest = g1 and - eqtest.hasOperands(g2, boollit) and - eqtest.polarity() = polarity and - b1 = [true, false] and - b2 = b1.booleanXor(polarity).booleanXor(boollit.getBooleanValue()) - ) - or - exists(ConditionalExpr cond, boolean branch, BooleanLiteral boollit, boolean boolval | - cond.getBranchExpr(branch) = boollit and - cond = g1 and - boolval = boollit.getBooleanValue() and - b1 = boolval.booleanNot() and - ( - g2 = cond.getCondition() and b2 = branch.booleanNot() - or - g2 = cond.getABranchExpr() and b2 = b1 - ) - ) - or - g1.(DefaultCase).getSwitch().getAConstCase() = g2 and b1 = true and b2 = false - or - g1.(DefaultCase).getSwitchExpr().getAConstCase() = g2 and b1 = true and b2 = false - or - exists(MethodCall check, int argIndex | check = g1 | - conditionCheckArgument(check, argIndex, _) and - g2 = check.getArgument(argIndex) and - b1 = [true, false] and - b2 = b1 - ) - or - exists(BaseSsaUpdate vbool | - vbool.getDefiningExpr().(VariableAssign).getSource() = g2 or - vbool.getDefiningExpr().(AssignOp) = g2 - | - vbool.getAUse() = g1 and - b1 = [true, false] and - b2 = b1 - ) - or - g1.(AssignExpr).getSource() = g2 and b2 = b1 and b1 = [true, false] -} - -/** - * Holds if the assumption that `g1` has been evaluated to `b1` implies that - * `g2` has been evaluated to `b2`, that is, the evaluation of `g2` to `b2` - * dominates the evaluation of `g1` to `b1`. - * - * Allows full use of SSA but is restricted to pre-RangeAnalysis reasoning. - */ -predicate implies_v2(Guard g1, boolean b1, Guard g2, boolean b2) { - implies_v1(g1, b1, g2, b2) - or - exists(SsaExplicitUpdate vbool | - vbool.getDefiningExpr().(VariableAssign).getSource() = g2 or - vbool.getDefiningExpr().(AssignOp) = g2 - | - vbool.getAUse() = g1 and - b1 = [true, false] and - b2 = b1 - ) - or - exists(SsaVariable v, AbstractValue k | - // If `v = g2 ? k : ...` or `v = g2 ? ... : k` then a guard - // proving `v != k` ensures that `g2` evaluates to `b2`. - conditionalAssignVal(v, g2, b2.booleanNot(), k) and - guardImpliesNotEqual1(g1, b1, v, k) - ) - or - exists(SsaVariable v, Expr e, AbstractValue k | - // If `v = g2 ? k : ...` and all other assignments to `v` are different from - // `k` then a guard proving `v == k` ensures that `g2` evaluates to `b2`. - uniqueValue(v, e, k) and - guardImpliesEqual(g1, b1, v, k) and - g2.directlyControls(e.getBasicBlock(), b2) and - not g2.directlyControls(g1.getBasicBlock(), b2) - ) -} - -/** - * Holds if the assumption that `g1` has been evaluated to `b1` implies that - * `g2` has been evaluated to `b2`, that is, the evaluation of `g2` to `b2` - * dominates the evaluation of `g1` to `b1`. - */ -cached -predicate implies_v3(Guard g1, boolean b1, Guard g2, boolean b2) { - implies_v2(g1, b1, g2, b2) - or - exists(SsaVariable v, AbstractValue k | - // If `v = g2 ? k : ...` or `v = g2 ? ... : k` then a guard - // proving `v != k` ensures that `g2` evaluates to `b2`. - conditionalAssignVal(v, g2, b2.booleanNot(), k) and - guardImpliesNotEqual2(g1, b1, v, k) - ) - or - exists(SsaVariable v | - conditionalAssign(v, g2, b2.booleanNot(), clearlyNotNullExpr()) and - guardImpliesEqual(g1, b1, v, TAbsValNull()) - ) -} - -private newtype TAbstractValue = - TAbsValNull() or - TAbsValInt(int i) { exists(CompileTimeConstantExpr c | c.getIntValue() = i) } or - TAbsValChar(string c) { exists(CharacterLiteral lit | lit.getValue() = c) } or - TAbsValString(string s) { exists(StringLiteral lit | lit.getValue() = s) } or - TAbsValEnum(EnumConstant c) - -/** The value of a constant expression. */ -abstract private class AbstractValue extends TAbstractValue { - abstract string toString(); - - /** Gets an expression whose value is this abstract value. */ - abstract Expr getExpr(); -} - -private class AbsValNull extends AbstractValue, TAbsValNull { - override string toString() { result = "null" } - - override Expr getExpr() { result = alwaysNullExpr() } -} - -private class AbsValInt extends AbstractValue, TAbsValInt { - int i; - - AbsValInt() { this = TAbsValInt(i) } - - override string toString() { result = i.toString() } - - override Expr getExpr() { result.(CompileTimeConstantExpr).getIntValue() = i } -} - -private class AbsValChar extends AbstractValue, TAbsValChar { - string c; - - AbsValChar() { this = TAbsValChar(c) } - - override string toString() { result = c } - - override Expr getExpr() { result.(CharacterLiteral).getValue() = c } -} - -private class AbsValString extends AbstractValue, TAbsValString { - string s; - - AbsValString() { this = TAbsValString(s) } - - override string toString() { result = s } - - override Expr getExpr() { result.(CompileTimeConstantExpr).getStringValue() = s } -} - -private class AbsValEnum extends AbstractValue, TAbsValEnum { - EnumConstant c; - - AbsValEnum() { this = TAbsValEnum(c) } - - override string toString() { result = c.toString() } - - override Expr getExpr() { result = c.getAnAccess() } -} - -/** - * Holds if `v` can have a value that is not representable as an `AbstractValue`. - */ -private predicate hasPossibleUnknownValue(SsaVariable v) { - exists(SsaVariable def | v.getAnUltimateDefinition() = def | - def instanceof SsaImplicitUpdate - or - def instanceof SsaImplicitInit - or - exists(VariableUpdate upd | upd = def.(SsaExplicitUpdate).getDefiningExpr() | - not exists(upd.(VariableAssign).getSource()) - ) - or - exists(VariableAssign a, Expr e | - a = def.(SsaExplicitUpdate).getDefiningExpr() and - e = possibleValue(a.getSource()) and - not exists(AbstractValue val | val.getExpr() = e) - ) - ) -} - -/** - * Gets a sub-expression of `e` whose value can flow to `e` through - * `ConditionalExpr`s. - */ -private Expr possibleValue(Expr e) { - result = possibleValue(e.(ConditionalExpr).getABranchExpr()) - or - result = e and not e instanceof ConditionalExpr -} - -/** - * Gets an ultimate definition of `v` that is not itself a phi node. The - * boolean `fromBackEdge` indicates whether the flow from `result` to `v` goes - * through a back edge. - */ -SsaVariable getADefinition(SsaVariable v, boolean fromBackEdge) { - result = v and not v instanceof SsaPhiNode and fromBackEdge = false - or - exists(SsaVariable inp, BasicBlock bb, boolean fbe | - v.(SsaPhiNode).hasInputFromBlock(inp, bb) and - result = getADefinition(inp, fbe) and - (if v.getBasicBlock().dominates(bb) then fromBackEdge = true else fromBackEdge = fbe) - ) -} - -/** - * Holds if `e` equals `k` and may be assigned to `v`. The boolean - * `fromBackEdge` indicates whether the flow from `e` to `v` goes through a - * back edge. - */ -private predicate possibleValue(SsaVariable v, boolean fromBackEdge, Expr e, AbstractValue k) { - not hasPossibleUnknownValue(v) and - exists(SsaExplicitUpdate def | - def = getADefinition(v, fromBackEdge) and - e = possibleValue(def.getDefiningExpr().(VariableAssign).getSource()) and - k.getExpr() = e - ) -} - -/** - * Holds if `e` equals `k` and may be assigned to `v` without going through - * back edges, and all other possible ultimate definitions of `v` are different - * from `k`. The trivial case where `v` is an `SsaExplicitUpdate` with `e` as - * the only possible value is excluded. - */ -private predicate uniqueValue(SsaVariable v, Expr e, AbstractValue k) { - possibleValue(v, false, e, k) and - forex(Expr other, AbstractValue otherval | possibleValue(v, _, other, otherval) and other != e | - otherval != k - ) -} - -/** - * Holds if `v1` and `v2` have the same value in `bb`. - */ -private predicate equalVarsInBlock(BasicBlock bb, SsaVariable v1, SsaVariable v2) { - exists(Guard guard, boolean branch | - guard.isEquality(v1.getAUse(), v2.getAUse(), branch) and - guardControls_v1(guard, bb, branch) - ) -} - -/** - * Holds if `guard` evaluating to `branch` implies that `v` equals `k`. - */ -private predicate guardImpliesEqual(Guard guard, boolean branch, SsaVariable v, AbstractValue k) { - exists(SsaVariable v0 | - guard.isEquality(v0.getAUse(), k.getExpr(), branch) and - (v = v0 or equalVarsInBlock(guard.getBasicBlock(), v0, v)) - ) -} - -private BasicBlock getAGuardBranchSuccessor(Guard g, boolean branch) { - result.getFirstNode() = g.(Expr).getControlFlowNode().(ConditionNode).getABranchSuccessor(branch) - or - result.getFirstNode() = g.(SwitchCase).getControlFlowNode() and branch = true -} - -/** - * Holds if `guard` dominates `phi` and `guard` evaluating to `branch` controls the definition - * `upd = e` where `upd` is a possible input to `phi`. - */ -private predicate guardControlsPhiBranch( - SsaExplicitUpdate upd, SsaPhiNode phi, Guard guard, boolean branch, Expr e -) { - guard.directlyControls(upd.getBasicBlock(), branch) and - upd.getDefiningExpr().(VariableAssign).getSource() = e and - upd = phi.getAPhiInput() and - guard.getBasicBlock().strictlyDominates(phi.getBasicBlock()) -} - -/** - * Holds if `v` is conditionally assigned `e` under the condition that `guard` evaluates to `branch`. - * - * The evaluation of `guard` dominates the definition of `v` and `guard` evaluating to `branch` - * implies that `e` is assigned to `v`. In particular, this allows us to conclude that if `v` has - * a value different from `e` then `guard` must have evaluated to `branch.booleanNot()`. - */ -private predicate conditionalAssign(SsaVariable v, Guard guard, boolean branch, Expr e) { - exists(ConditionalExpr c | - v.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = c and - guard = c.getCondition() - | - e = c.getBranchExpr(branch) - ) - or - exists(SsaExplicitUpdate upd, SsaPhiNode phi | - phi = v and - guardControlsPhiBranch(upd, phi, guard, branch, e) and - not guard.directlyControls(phi.getBasicBlock(), branch) and - forall(SsaVariable other | other != upd and other = phi.getAPhiInput() | - guard.directlyControls(other.getBasicBlock(), branch.booleanNot()) - or - other.getBasicBlock().dominates(guard.getBasicBlock()) and - not other.isLiveAtEndOfBlock(getAGuardBranchSuccessor(guard, branch)) - ) - ) -} - -/** - * Holds if `v` is conditionally assigned `val` under the condition that `guard` evaluates to `branch`. - */ -private predicate conditionalAssignVal(SsaVariable v, Guard guard, boolean branch, AbstractValue val) { - conditionalAssign(v, guard, branch, val.getExpr()) -} - -private predicate relevantEq(SsaVariable v, AbstractValue val) { - conditionalAssignVal(v, _, _, val) - or - exists(SsaVariable v0 | - conditionalAssignVal(v0, _, _, val) and - equalVarsInBlock(_, v0, v) - ) -} - -/** - * Holds if the evaluation of `guard` to `branch` implies that `v` does not have the value `val`. - */ -private predicate guardImpliesNotEqual1( - Guard guard, boolean branch, SsaVariable v, AbstractValue val -) { - exists(SsaVariable v0 | - relevantEq(v0, val) and - ( - guard.isEquality(v0.getAUse(), val.getExpr(), branch.booleanNot()) - or - exists(AbstractValue val2 | - guard.isEquality(v0.getAUse(), val2.getExpr(), branch) and - val != val2 - ) - or - guard.(InstanceOfExpr).getExpr() = sameValue(v0, _) and branch = true and val = TAbsValNull() - ) and - (v = v0 or equalVarsInBlock(guard.getBasicBlock(), v0, v)) - ) -} - -/** - * Holds if the evaluation of `guard` to `branch` implies that `v` does not have the value `val`. - */ -private predicate guardImpliesNotEqual2( - Guard guard, boolean branch, SsaVariable v, AbstractValue val -) { - exists(SsaVariable v0 | - relevantEq(v0, val) and - ( - guard = directNullGuard(v0, branch, false) and val = TAbsValNull() - or - exists(int k | - guard = integerGuard(v0.getAUse(), branch, k, false) and - val = TAbsValInt(k) - ) - ) and - (v = v0 or equalVarsInBlock(guard.getBasicBlock(), v0, v)) - ) -} diff --git a/java/ql/lib/semmle/code/java/controlflow/internal/Preconditions.qll b/java/ql/lib/semmle/code/java/controlflow/internal/Preconditions.qll index 6e6c5ec47f9c..a0d2e4ef03ec 100644 --- a/java/ql/lib/semmle/code/java/controlflow/internal/Preconditions.qll +++ b/java/ql/lib/semmle/code/java/controlflow/internal/Preconditions.qll @@ -3,6 +3,8 @@ * `com.google.common.base.Preconditions` and * `org.apache.commons.lang3.Validate`. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/controlflow/internal/SwitchCases.qll b/java/ql/lib/semmle/code/java/controlflow/internal/SwitchCases.qll index 1d94f075abbe..5366fa78a539 100644 --- a/java/ql/lib/semmle/code/java/controlflow/internal/SwitchCases.qll +++ b/java/ql/lib/semmle/code/java/controlflow/internal/SwitchCases.qll @@ -1,4 +1,6 @@ /** Provides utility predicates relating to switch cases. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/controlflow/unreachableblocks/ExcludeDebuggingProfilingLogging.qll b/java/ql/lib/semmle/code/java/controlflow/unreachableblocks/ExcludeDebuggingProfilingLogging.qll index 7b7a5943f6c6..bda7f9bee740 100644 --- a/java/ql/lib/semmle/code/java/controlflow/unreachableblocks/ExcludeDebuggingProfilingLogging.qll +++ b/java/ql/lib/semmle/code/java/controlflow/unreachableblocks/ExcludeDebuggingProfilingLogging.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.controlflow.UnreachableBlocks diff --git a/java/ql/lib/semmle/code/java/dataflow/ApiSinks.qll b/java/ql/lib/semmle/code/java/dataflow/ApiSinks.qll index c600bb1672d8..56027a4507c8 100644 --- a/java/ql/lib/semmle/code/java/dataflow/ApiSinks.qll +++ b/java/ql/lib/semmle/code/java/dataflow/ApiSinks.qll @@ -1,4 +1,6 @@ /** Provides classes representing various flow sinks for data flow / taint tracking. */ +overlay[local?] +module; private import semmle.code.java.dataflow.FlowSinks as FlowSinks diff --git a/java/ql/lib/semmle/code/java/dataflow/ApiSources.qll b/java/ql/lib/semmle/code/java/dataflow/ApiSources.qll index 8649b5cf830d..add0ec0d9a5b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/ApiSources.qll +++ b/java/ql/lib/semmle/code/java/dataflow/ApiSources.qll @@ -1,4 +1,6 @@ /** Provides classes representing various flow sources for data flow / taint tracking. */ +overlay[local?] +module; private import semmle.code.java.dataflow.FlowSources as FlowSources diff --git a/java/ql/lib/semmle/code/java/dataflow/Bound.qll b/java/ql/lib/semmle/code/java/dataflow/Bound.qll index 08826b7ae8f1..65af6fb13a81 100644 --- a/java/ql/lib/semmle/code/java/dataflow/Bound.qll +++ b/java/ql/lib/semmle/code/java/dataflow/Bound.qll @@ -1,6 +1,8 @@ /** * Provides classes for representing abstract bounds for use in, for example, range analysis. */ +overlay[local?] +module; private import internal.rangeanalysis.BoundSpecific diff --git a/java/ql/lib/semmle/code/java/dataflow/DataFlow.qll b/java/ql/lib/semmle/code/java/dataflow/DataFlow.qll index ab48577c02e7..54eb809c7b97 100644 --- a/java/ql/lib/semmle/code/java/dataflow/DataFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/DataFlow.qll @@ -2,6 +2,8 @@ * Provides classes for performing local (intra-procedural) and * global (inter-procedural) data flow analyses. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/dataflow/DataFlowStack.qll b/java/ql/lib/semmle/code/java/dataflow/DataFlowStack.qll index 120c548a8a8a..260531af95a6 100644 --- a/java/ql/lib/semmle/code/java/dataflow/DataFlowStack.qll +++ b/java/ql/lib/semmle/code/java/dataflow/DataFlowStack.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java private import semmle.code.java.dataflow.DataFlow private import semmle.code.java.dataflow.internal.DataFlowImplSpecific diff --git a/java/ql/lib/semmle/code/java/dataflow/DefUse.qll b/java/ql/lib/semmle/code/java/dataflow/DefUse.qll index 9fa08d62c27f..a93f2e30b462 100644 --- a/java/ql/lib/semmle/code/java/dataflow/DefUse.qll +++ b/java/ql/lib/semmle/code/java/dataflow/DefUse.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for def-use and use-use pairs. Built on top of the SSA library for * maximal precision. */ +overlay[local?] +module; import java private import SSA diff --git a/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll b/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll index a38e54f05134..d1849df0f3ec 100644 --- a/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll @@ -86,6 +86,8 @@ * This information is used in a heuristic for dataflow analysis to determine, if a * model or source code should be used for determining flow. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow::DataFlow diff --git a/java/ql/lib/semmle/code/java/dataflow/FlowSinks.qll b/java/ql/lib/semmle/code/java/dataflow/FlowSinks.qll index 72cd96f6745c..61066774e52b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/FlowSinks.qll +++ b/java/ql/lib/semmle/code/java/dataflow/FlowSinks.qll @@ -1,4 +1,6 @@ /** Provides classes representing various flow sinks for data flow / taint tracking. */ +overlay[local?] +module; private import java private import semmle.code.java.dataflow.ExternalFlow diff --git a/java/ql/lib/semmle/code/java/dataflow/FlowSources.qll b/java/ql/lib/semmle/code/java/dataflow/FlowSources.qll index f63eae183c49..8c6ac60eb24f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/FlowSources.qll +++ b/java/ql/lib/semmle/code/java/dataflow/FlowSources.qll @@ -1,6 +1,8 @@ /** * Provides classes representing various flow sources for taint tracking. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll b/java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll index d081a6289ecd..6dd8de89e213 100644 --- a/java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll +++ b/java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll @@ -1,6 +1,8 @@ /** * Provides classes representing various flow steps for taint tracking. */ +overlay[local?] +module; private import java private import semmle.code.java.dataflow.DataFlow @@ -160,7 +162,7 @@ private class NumberTaintPreservingCallable extends TaintPreservingCallable { int argument; NumberTaintPreservingCallable() { - this.getDeclaringType().getAnAncestor().hasQualifiedName("java.lang", "Number") and + this.getDeclaringType().getASourceSupertype*().hasQualifiedName("java.lang", "Number") and ( this instanceof Constructor and argument = 0 diff --git a/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll b/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll index acea2a10784f..d038851d8374 100644 --- a/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll +++ b/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for defining flow summaries. */ +overlay[local?] +module; import java private import internal.FlowSummaryImpl as Impl diff --git a/java/ql/lib/semmle/code/java/dataflow/InstanceAccess.qll b/java/ql/lib/semmle/code/java/dataflow/InstanceAccess.qll index 0bae1b5e9c10..feeb0d100c64 100644 --- a/java/ql/lib/semmle/code/java/dataflow/InstanceAccess.qll +++ b/java/ql/lib/semmle/code/java/dataflow/InstanceAccess.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for reasoning about explicit and implicit * instance accesses. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/dataflow/IntegerGuards.qll b/java/ql/lib/semmle/code/java/dataflow/IntegerGuards.qll index 58d77b649788..042fd5194f23 100644 --- a/java/ql/lib/semmle/code/java/dataflow/IntegerGuards.qll +++ b/java/ql/lib/semmle/code/java/dataflow/IntegerGuards.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for integer guards. */ +overlay[local?] +module; import java private import SSA @@ -32,6 +34,58 @@ class IntComparableExpr extends Expr { } } +/** + * Holds if `comp` evaluating to `branch` ensures that `e1` is less than `e2`. + * When `strict` is true, `e1` is strictly less than `e2`, otherwise it is less + * than or equal to `e2`. + */ +private predicate comparison(ComparisonExpr comp, boolean branch, Expr e1, Expr e2, boolean strict) { + branch = true and + e1 = comp.getLesserOperand() and + e2 = comp.getGreaterOperand() and + (if comp.isStrict() then strict = true else strict = false) + or + branch = false and + e1 = comp.getGreaterOperand() and + e2 = comp.getLesserOperand() and + (if comp.isStrict() then strict = false else strict = true) +} + +/** + * Holds if `guard` evaluating to `branch` ensures that: + * `e <= k` when `upper = true` + * `e >= k` when `upper = false` + */ +pragma[nomagic] +predicate rangeGuard(Expr guard, boolean branch, Expr e, int k, boolean upper) { + exists(EqualityTest eqtest, Expr c | + eqtest = guard and + eqtest.hasOperands(e, c) and + bounded(c, any(ZeroBound zb), k, upper, _) and + branch = eqtest.polarity() + ) + or + exists(Expr c, int val, boolean strict, int d | + bounded(c, any(ZeroBound zb), val, upper, _) and + ( + upper = true and + comparison(guard, branch, e, c, strict) and + d = -1 + or + upper = false and + comparison(guard, branch, c, e, strict) and + d = 1 + ) and + ( + strict = false and k = val + or + // e < c <= val ==> e <= c - 1 <= val - 1 + // e > c >= val ==> e >= c + 1 >= val + 1 + strict = true and k = val + d + ) + ) +} + /** * An expression that directly tests whether a given expression is equal to `k` or not. * The set of `k`s is restricted to those that are relevant for the expression or @@ -53,75 +107,14 @@ Expr integerGuard(IntComparableExpr e, boolean branch, int k, boolean is_k) { ) ) or - exists(EqualityTest eqtest, int val, Expr c, boolean upper | - k = e.relevantInt() and - eqtest = result and - eqtest.hasOperands(e, c) and - bounded(c, any(ZeroBound zb), val, upper, _) and - is_k = false and - ( - upper = true and val < k - or - upper = false and val > k - ) and - branch = eqtest.polarity() - ) - or - exists(ComparisonExpr comp, Expr c, int val, boolean upper | + exists(int val, boolean upper | + rangeGuard(result, branch, e, val, upper) and k = e.relevantInt() and - comp = result and - comp.hasOperands(e, c) and - bounded(c, any(ZeroBound zb), val, upper, _) and is_k = false | - // k <= val <= c < e, so e != k - comp.getLesserOperand() = c and - comp.isStrict() and - branch = true and - val >= k and - upper = false - or - comp.getLesserOperand() = c and - comp.isStrict() and - branch = false and - val < k and - upper = true - or - comp.getLesserOperand() = c and - not comp.isStrict() and - branch = true and - val > k and - upper = false + upper = true and val < k // e <= val < k ==> e != k or - comp.getLesserOperand() = c and - not comp.isStrict() and - branch = false and - val <= k and - upper = true - or - comp.getGreaterOperand() = c and - comp.isStrict() and - branch = true and - val <= k and - upper = true - or - comp.getGreaterOperand() = c and - comp.isStrict() and - branch = false and - val > k and - upper = false - or - comp.getGreaterOperand() = c and - not comp.isStrict() and - branch = true and - val < k and - upper = true - or - comp.getGreaterOperand() = c and - not comp.isStrict() and - branch = false and - val >= k and - upper = false + upper = false and val > k // e >= val > k ==> e != k ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/ModulusAnalysis.qll b/java/ql/lib/semmle/code/java/dataflow/ModulusAnalysis.qll index 3e5a45da247d..1451a605cdb0 100644 --- a/java/ql/lib/semmle/code/java/dataflow/ModulusAnalysis.qll +++ b/java/ql/lib/semmle/code/java/dataflow/ModulusAnalysis.qll @@ -3,6 +3,8 @@ * an expression, `b` is a `Bound` (typically zero or the value of an SSA * variable), and `v` is an integer in the range `[0 .. m-1]`. */ +overlay[local?] +module; private import internal.rangeanalysis.ModulusAnalysisSpecific::Private private import Bound diff --git a/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll b/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll index 2dd72d78a2ea..bf9a166e0489 100644 --- a/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll +++ b/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll @@ -1,10 +1,12 @@ /** * Provides classes and predicates for null guards. */ +overlay[local?] +module; import java import SSA -private import semmle.code.java.controlflow.internal.GuardsLogic +private import semmle.code.java.controlflow.Guards private import semmle.code.java.frameworks.apache.Collections private import IntegerGuards @@ -41,33 +43,44 @@ EqualityTest varEqualityTestExpr(SsaVariable v1, SsaVariable v2, boolean isEqual } /** Gets an expression that is provably not `null`. */ -Expr clearlyNotNullExpr(Expr reason) { - result instanceof ClassInstanceExpr and reason = result +Expr baseNotNullExpr() { + result instanceof ClassInstanceExpr or - result instanceof ArrayCreationExpr and reason = result + result instanceof ArrayCreationExpr or - result instanceof TypeLiteral and reason = result + result instanceof TypeLiteral or - result instanceof ThisAccess and reason = result + result instanceof ThisAccess or - result instanceof StringLiteral and reason = result + result instanceof StringLiteral or - result instanceof AddExpr and result.getType() instanceof TypeString and reason = result + result instanceof AddExpr and result.getType() instanceof TypeString or exists(Field f | result = f.getAnAccess() and (f.hasName("TRUE") or f.hasName("FALSE")) and - f.getDeclaringType().hasQualifiedName("java.lang", "Boolean") and - reason = result + f.getDeclaringType().hasQualifiedName("java.lang", "Boolean") ) or - result.(CastExpr).getExpr() = clearlyNotNullExpr(reason) + result = any(EnumConstant c).getAnAccess() or - result.(ImplicitCastExpr).getExpr() = clearlyNotNullExpr(reason) + result instanceof ImplicitNotNullExpr or - result instanceof ImplicitNotNullExpr and reason = result + result instanceof ImplicitCoercionToUnitExpr or - result instanceof ImplicitCoercionToUnitExpr and reason = result + result + .(MethodCall) + .getMethod() + .hasQualifiedName("com.google.common.base", "Strings", "nullToEmpty") +} + +/** Gets an expression that is provably not `null`. */ +Expr clearlyNotNullExpr(Expr reason) { + result = baseNotNullExpr() and reason = result + or + result.(CastExpr).getExpr() = clearlyNotNullExpr(reason) + or + result.(ImplicitCastExpr).getExpr() = clearlyNotNullExpr(reason) or result.(AssignExpr).getSource() = clearlyNotNullExpr(reason) or @@ -83,14 +96,14 @@ Expr clearlyNotNullExpr(Expr reason) { guard.controls(rval.getBasicBlock(), branch) and reason = guard and rval = v.getAUse() and - result = rval + result = rval and + not result = baseNotNullExpr() ) or - exists(SsaVariable v | clearlyNotNull(v, reason) and result = v.getAUse()) - or - exists(Method m | m = result.(MethodCall).getMethod() and reason = result | - m.getDeclaringType().hasQualifiedName("com.google.common.base", "Strings") and - m.hasName("nullToEmpty") + exists(SsaVariable v | + clearlyNotNull(v, reason) and + result = v.getAUse() and + not result = baseNotNullExpr() ) } @@ -173,50 +186,19 @@ predicate nullCheckMethod(Method m, boolean branch, boolean isnull) { * is true, and non-null if `isnull` is false. */ Expr basicNullGuard(Expr e, boolean branch, boolean isnull) { - exists(EqualityTest eqtest, boolean polarity | - eqtest = result and - eqtest.hasOperands(e, any(NullLiteral n)) and - polarity = eqtest.polarity() and - ( - branch = true and isnull = polarity - or - branch = false and isnull = polarity.booleanNot() - ) - ) - or - result.(InstanceOfExpr).getExpr() = e and branch = true and isnull = false - or - exists(MethodCall call | - call = result and - call.getAnArgument() = e and - nullCheckMethod(call.getMethod(), branch, isnull) - ) - or - exists(EqualityTest eqtest | - eqtest = result and - eqtest.hasOperands(e, clearlyNotNullExpr()) and - isnull = false and - branch = eqtest.polarity() - ) - or - result = enumConstEquality(e, branch, _) and isnull = false + Guards_v3::nullGuard(result, any(GuardValue v | v.asBooleanValue() = branch), e, isnull) } /** + * DEPRECATED: Use `basicNullGuard` instead. + * * Gets an expression that directly tests whether a given expression, `e`, is null or not. * * If `result` evaluates to `branch`, then `e` is guaranteed to be null if `isnull` * is true, and non-null if `isnull` is false. */ -Expr basicOrCustomNullGuard(Expr e, boolean branch, boolean isnull) { +deprecated Expr basicOrCustomNullGuard(Expr e, boolean branch, boolean isnull) { result = basicNullGuard(e, branch, isnull) - or - exists(MethodCall call, Method m, int ix | - call = result and - call.getArgument(ix) = e and - call.getMethod().getSourceDeclaration() = m and - m = customNullGuard(ix, branch, isnull) - ) } /** @@ -226,80 +208,61 @@ Expr basicOrCustomNullGuard(Expr e, boolean branch, boolean isnull) { * is true, and non-null if `isnull` is false. */ Expr directNullGuard(SsaVariable v, boolean branch, boolean isnull) { - result = basicOrCustomNullGuard(sameValue(v, _), branch, isnull) + result = basicNullGuard(sameValue(v, _), branch, isnull) } /** + * DEPRECATED: Use `nullGuardControls`/`nullGuardControlsBranchEdge` instead. + * * Gets a `Guard` that tests (possibly indirectly) whether a given SSA variable is null or not. * * If `result` evaluates to `branch`, then `v` is guaranteed to be null if `isnull` * is true, and non-null if `isnull` is false. */ -Guard nullGuard(SsaVariable v, boolean branch, boolean isnull) { - result = directNullGuard(v, branch, isnull) or - exists(boolean branch0 | implies_v3(result, branch, nullGuard(v, branch0, isnull), branch0)) +deprecated Guard nullGuard(SsaVariable v, boolean branch, boolean isnull) { + result = directNullGuard(v, branch, isnull) } /** - * A return statement in a non-overridable method that on a return value of - * `retval` allows the conclusion that the parameter `p` either is null or - * non-null as specified by `isnull`. + * Holds if there exists a null check on `v`, such that taking the branch edge + * from `bb1` to `bb2` implies that `v` is guaranteed to be null if `isnull` is + * true, and non-null if `isnull` is false. */ -private predicate validReturnInCustomNullGuard( - ReturnStmt ret, Parameter p, boolean retval, boolean isnull -) { - exists(Method m | - ret.getEnclosingCallable() = m and - p.getCallable() = m and - m.getReturnType().(PrimitiveType).hasName("boolean") and - not p.isVarargs() and - p.getType() instanceof RefType and - not m.isOverridable() - ) and - exists(SsaImplicitInit ssa | ssa.isParameterDefinition(p) | - nullGuardedReturn(ret, ssa, isnull) and - (retval = true or retval = false) - or - exists(Expr res | res = ret.getResult() | res = nullGuard(ssa, retval, isnull)) +predicate nullGuardControlsBranchEdge(SsaVariable v, boolean isnull, BasicBlock bb1, BasicBlock bb2) { + exists(GuardValue gv | + Guards_v3::ssaControlsBranchEdge(v, bb1, bb2, gv) and + gv.isNullness(isnull) ) } -private predicate nullGuardedReturn(ReturnStmt ret, SsaImplicitInit ssa, boolean isnull) { - exists(boolean branch | - nullGuard(ssa, branch, isnull).directlyControls(ret.getBasicBlock(), branch) +/** + * Holds if there exists a null check on `v` that controls `bb`, such that in + * `bb` `v` is guaranteed to be null if `isnull` is true, and non-null if + * `isnull` is false. + */ +predicate nullGuardControls(SsaVariable v, boolean isnull, BasicBlock bb) { + exists(GuardValue gv | + Guards_v3::ssaControls(v, bb, gv) and + gv.isNullness(isnull) ) } -pragma[nomagic] -private Method returnStmtGetEnclosingCallable(ReturnStmt ret) { - ret.getEnclosingCallable() = result -} - /** - * Gets a non-overridable method with a boolean return value that performs a null-check - * on the `index`th parameter. A return value equal to `retval` allows us to conclude - * that the argument either is null or non-null as specified by `isnull`. + * Holds if `guard` is a guard expression that suggests that `e` might be null. */ -private Method customNullGuard(int index, boolean retval, boolean isnull) { - exists(Parameter p | - p.getCallable() = result and - p.getPosition() = index and - forex(ReturnStmt ret | - returnStmtGetEnclosingCallable(ret) = result and - exists(Expr res | res = ret.getResult() | - not res.(BooleanLiteral).getBooleanValue() = retval.booleanNot() - ) - | - validReturnInCustomNullGuard(ret, p, retval, isnull) - ) +predicate guardSuggestsExprMaybeNull(Expr guard, Expr e) { + guard.(EqualityTest).hasOperands(e, any(NullLiteral n)) + or + exists(MethodCall call | + call = guard and + call.getAnArgument() = e and + nullCheckMethod(call.getMethod(), _, true) ) } /** - * `guard` is a guard expression that suggests that `v` might be null. - * - * This is equivalent to `guard = basicNullGuard(sameValue(v, _), _, true)`. + * Holds if `guard` is a guard expression that suggests that `v` might be null. */ predicate guardSuggestsVarMaybeNull(Expr guard, SsaVariable v) { - guard = basicNullGuard(sameValue(v, _), _, true) + guardSuggestsExprMaybeNull(guard, sameValue(v, _)) } diff --git a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll index 786207d34865..02f228d17dbe 100644 --- a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll +++ b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll @@ -6,6 +6,8 @@ * hold, so results guarded by, for example, `assert x != null;` or * `if (x == null) { assert false; }` are excluded. */ +overlay[local?] +module; /* * Implementation details: @@ -141,11 +143,9 @@ private ControlFlowNode varDereference(SsaVariable v, VarAccess va) { private ControlFlowNode ensureNotNull(SsaVariable v) { result = varDereference(v, _) or - result.asStmt().(AssertStmt).getExpr() = nullGuard(v, true, false) + exists(AssertTrueMethod m | result.asCall() = m.getACheck(directNullGuard(v, true, false))) or - exists(AssertTrueMethod m | result.asCall() = m.getACheck(nullGuard(v, true, false))) - or - exists(AssertFalseMethod m | result.asCall() = m.getACheck(nullGuard(v, false, false))) + exists(AssertFalseMethod m | result.asCall() = m.getACheck(directNullGuard(v, false, false))) or exists(AssertNotNullMethod m | result.asCall() = m.getACheck(v.getAUse())) or @@ -341,7 +341,7 @@ private predicate nullVarStep( not assertFail(mid, _) and bb = mid.getASuccessor() and not impossibleEdge(mid, bb) and - not exists(boolean branch | nullGuard(midssa, branch, false).hasBranchEdge(mid, bb, branch)) and + not nullGuardControlsBranchEdge(midssa, false, mid, bb) and not (leavingFinally(mid, bb, true) and midstoredcompletion = true) and if bb.getFirstNode().asStmt() = any(TryStmt try | | try.getFinally()) then @@ -478,6 +478,11 @@ private ConditionBlock ssaEnumConstEquality(SsaVariable v, boolean polarity, Enu result.getCondition() = enumConstEquality(v.getAUse(), polarity, c) } +private predicate conditionChecksNull(ConditionBlock cond, SsaVariable v, boolean branchIsNull) { + nullGuardControlsBranchEdge(v, true, cond, cond.getTestSuccessor(branchIsNull)) and + nullGuardControlsBranchEdge(v, false, cond, cond.getTestSuccessor(branchIsNull.booleanNot())) +} + /** A pair of correlated conditions for a given NPE candidate. */ private predicate correlatedConditions( SsaSourceVariable npecand, ConditionBlock cond1, ConditionBlock cond2, boolean inverted @@ -493,10 +498,8 @@ private predicate correlatedConditions( ) or exists(SsaVariable v, boolean branch1, boolean branch2 | - cond1.getCondition() = nullGuard(v, branch1, true) and - cond1.getCondition() = nullGuard(v, branch1.booleanNot(), false) and - cond2.getCondition() = nullGuard(v, branch2, true) and - cond2.getCondition() = nullGuard(v, branch2.booleanNot(), false) and + conditionChecksNull(cond1, v, branch1) and + conditionChecksNull(cond2, v, branch2) and inverted = branch1.booleanXor(branch2) ) or @@ -622,7 +625,7 @@ private Expr trackingVarGuard( SsaVariable trackssa, SsaSourceVariable trackvar, TrackVarKind kind, boolean branch, boolean isA ) { exists(Expr init | trackingVar(_, trackssa, trackvar, kind, init) | - result = basicOrCustomNullGuard(trackvar.getAnAccess(), branch, isA) and + result = basicNullGuard(trackvar.getAnAccess(), branch, isA) and kind = TrackVarKindNull() or result = trackvar.getAnAccess() and @@ -833,15 +836,13 @@ predicate alwaysNullDeref(SsaSourceVariable v, VarAccess va) { def.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = alwaysNullExpr() ) or - exists(boolean branch | - nullGuard(ssa, branch, true).directlyControls(bb, branch) and - not clearlyNotNull(ssa) - ) + nullGuardControls(ssa, true, bb) and + not clearlyNotNull(ssa) | // Exclude fields as they might not have an accurate ssa representation. not v.getVariable() instanceof Field and firstVarDereferenceInBlock(bb, ssa, va) and ssa.getSourceVariable() = v and - not exists(boolean branch | nullGuard(ssa, branch, false).directlyControls(bb, branch)) + not nullGuardControls(ssa, false, bb) ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll index 64f68b9c075a..f65e15d1c61b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll @@ -8,6 +8,8 @@ * If an inferred bound relies directly on a condition, then this condition is * reported as the reason for the bound. */ +overlay[local?] +module; /* * This library tackles range analysis as a flow problem. Consider e.g.: @@ -66,7 +68,6 @@ import java private import SSA private import RangeUtils -private import semmle.code.java.controlflow.internal.GuardsLogic private import semmle.code.java.security.RandomDataSource private import SignAnalysis private import semmle.code.java.Reflection @@ -79,7 +80,7 @@ module Sem implements Semantic { private import java as J private import SSA as SSA private import RangeUtils as RU - private import semmle.code.java.controlflow.internal.GuardsLogic as GL + private import semmle.code.java.controlflow.Guards as G class Expr = J::Expr; @@ -219,7 +220,7 @@ module Sem implements Semantic { int getBlockId1(BasicBlock bb) { idOf(bb, result) } - class Guard extends GL::Guard_v2 { + class Guard extends G::Guards_v2::Guard { Expr asExpr() { result = this } } diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll index 444fec8f8659..efd7bcd80889 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll @@ -1,10 +1,12 @@ /** * Provides utility predicates for range analysis. */ +overlay[local?] +module; import java private import SSA -private import semmle.code.java.controlflow.internal.GuardsLogic +private import semmle.code.java.controlflow.Guards private import semmle.code.java.Constants private import semmle.code.java.dataflow.RangeAnalysis private import codeql.rangeanalysis.internal.RangeUtils diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 680088b7c554..dd902b70e35a 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -10,6 +10,8 @@ * of the field in case the field is not amenable to a non-trivial SSA * representation. */ +overlay[local?] +module; import java private import internal.SsaImpl diff --git a/java/ql/lib/semmle/code/java/dataflow/SignAnalysis.qll b/java/ql/lib/semmle/code/java/dataflow/SignAnalysis.qll index 9cd629f4ef97..568bc8b6d580 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SignAnalysis.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SignAnalysis.qll @@ -5,5 +5,7 @@ * The analysis is implemented as an abstract interpretation over the * three-valued domain `{negative, zero, positive}`. */ +overlay[local?] +module; import semmle.code.java.dataflow.internal.rangeanalysis.SignAnalysisCommon diff --git a/java/ql/lib/semmle/code/java/dataflow/StringPrefixes.qll b/java/ql/lib/semmle/code/java/dataflow/StringPrefixes.qll index ed10d8aa4bb8..4b1bd0131bd4 100644 --- a/java/ql/lib/semmle/code/java/dataflow/StringPrefixes.qll +++ b/java/ql/lib/semmle/code/java/dataflow/StringPrefixes.qll @@ -25,6 +25,8 @@ * String.format("%sfoo:%s", notSuffix, suffix4); * ``` */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.TaintTracking diff --git a/java/ql/lib/semmle/code/java/dataflow/TaintTracking.qll b/java/ql/lib/semmle/code/java/dataflow/TaintTracking.qll index e62850fbc389..159604a95bd6 100644 --- a/java/ql/lib/semmle/code/java/dataflow/TaintTracking.qll +++ b/java/ql/lib/semmle/code/java/dataflow/TaintTracking.qll @@ -2,6 +2,8 @@ * Provides classes for performing local (intra-procedural) and * global (inter-procedural) taint-tracking analyses. */ +overlay[local?] +module; import semmle.code.java.dataflow.DataFlow import semmle.code.java.dataflow.internal.TaintTrackingUtil::StringBuilderVarModule diff --git a/java/ql/lib/semmle/code/java/dataflow/TaintTrackingStack.qll b/java/ql/lib/semmle/code/java/dataflow/TaintTrackingStack.qll index 3fdb962291a4..711b8dd5dbbe 100644 --- a/java/ql/lib/semmle/code/java/dataflow/TaintTrackingStack.qll +++ b/java/ql/lib/semmle/code/java/dataflow/TaintTrackingStack.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java private import semmle.code.java.dataflow.DataFlow private import semmle.code.java.dataflow.TaintTracking diff --git a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll index f2fcbc5951d4..8ce9b1b91202 100644 --- a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll @@ -7,6 +7,8 @@ * type has a subtype or if an inferred upper bound passed through at least one * explicit or implicit cast that lost type information. */ +overlay[local?] +module; import java as J private import semmle.code.java.dispatch.VirtualDispatch diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll index 874aca871832..5c0fbb88d664 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll @@ -10,6 +10,8 @@ * This is a restricted version of SSA.qll that only handles `LocalScopeVariable`s * in order to not depend on virtual dispatch. */ +overlay[local?] +module; import java private import codeql.ssa.Ssa as SsaImplCommon @@ -372,5 +374,10 @@ class BaseSsaImplicitInit extends BaseSsaVariable instanceof Impl::WriteDefiniti /** An SSA phi node. */ class BaseSsaPhiNode extends BaseSsaVariable instanceof Impl::PhiNode { /** Gets an input to the phi node defining the SSA variable. */ - BaseSsaVariable getAPhiInput() { phiHasInputFromBlock(this, result, _) } + BaseSsaVariable getAPhiInput() { this.hasInputFromBlock(result, _) } + + /** Holds if `inp` is an input to the phi node along the edge originating in `bb`. */ + predicate hasInputFromBlock(BaseSsaVariable inp, BasicBlock bb) { + phiHasInputFromBlock(this, inp, bb) + } } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll b/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll index e007ecd85ae5..f93139592269 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.Collections import semmle.code.java.Maps diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/ContentDataFlow.qll b/java/ql/lib/semmle/code/java/dataflow/internal/ContentDataFlow.qll index 2c9b12170440..ec14f494dd95 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/ContentDataFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/ContentDataFlow.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import java private import DataFlowImplSpecific private import codeql.dataflow.internal.ContentDataFlowImpl diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowDispatch.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowDispatch.qll index f63df6ad09ec..dc58529ed263 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowDispatch.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowDispatch.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import java private import DataFlowPrivate private import DataFlowUtil @@ -210,6 +213,7 @@ private module DispatchImpl { } /** Holds if arguments at position `apos` match parameters at position `ppos`. */ + overlay[caller?] pragma[inline] predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) { ppos = apos } } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll index 689e58daab89..1917c2007fe1 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImpl private import semmle.code.Location diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplCommon.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplCommon.qll index 00f388dfdf3a..d9a6a98b4598 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplCommon.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplCommon.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import DataFlowImplSpecific private import semmle.code.Location private import codeql.dataflow.internal.DataFlowImplCommon diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplConsistency.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplConsistency.qll index 0272af417ace..164bc9abbbdb 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplConsistency.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplConsistency.qll @@ -2,6 +2,8 @@ * Provides consistency queries for checking invariants in the language-specific * data-flow classes and predicates. */ +overlay[local?] +module; private import java private import DataFlowImplSpecific diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplSpecific.qll index 95b2baeab1ce..65034ee08b93 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplSpecific.qll @@ -1,6 +1,8 @@ /** * Provides Java-specific definitions for use in the data flow library. */ +overlay[local?] +module; private import semmle.code.Location private import codeql.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll index 7778f6ebc353..674c2380a5f5 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import java private import semmle.code.java.dataflow.InstanceAccess private import semmle.code.java.dataflow.ExternalFlow @@ -60,8 +63,6 @@ module SsaFlow { cached private module Cached { - private import semmle.code.java.controlflow.internal.GuardsLogic as GuardsLogic - cached newtype TNode = TExprNode(Expr e) { diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll index 9e924df12780..164e2d8aa262 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import java private import DataFlowUtil private import DataFlowImplCommon diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll index 6000c37c6cdd..ab2f7f89cb46 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll @@ -1,6 +1,8 @@ /** * Basic definitions for use in the data flow library. */ +overlay[local?] +module; private import java private import DataFlowPrivate @@ -77,6 +79,7 @@ private module ThisFlow { * Holds if data can flow from `node1` to `node2` in zero or more * local (intra-procedural) steps. */ +overlay[caller?] pragma[inline] predicate localFlow(Node node1, Node node2) { node1 = node2 or localFlowStepPlus(node1, node2) } @@ -86,6 +89,7 @@ private predicate localFlowStepPlus(Node node1, Node node2) = fastTC(localFlowSt * Holds if data can flow from `e1` to `e2` in zero or more * local (intra-procedural) steps. */ +overlay[caller?] pragma[inline] predicate localExprFlow(Expr e1, Expr e2) { localFlow(exprNode(e1), exprNode(e2)) } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/ExternalFlowExtensions.qll b/java/ql/lib/semmle/code/java/dataflow/internal/ExternalFlowExtensions.qll index ff931cbc5cee..32b5d289e28c 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/ExternalFlowExtensions.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/ExternalFlowExtensions.qll @@ -1,6 +1,8 @@ /** * This module provides extensible predicates for defining MaD models. */ +overlay[local?] +module; /** * Holds if a source model exists for the given parameters. diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll index bbb40785d6b4..a2d25cadd883 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for defining flow summaries. */ +overlay[local?] +module; private import java private import codeql.dataflow.internal.FlowSummaryImpl diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/ModelExclusions.qll b/java/ql/lib/semmle/code/java/dataflow/internal/ModelExclusions.qll index cc95a2b5c1ff..9635592476fa 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/ModelExclusions.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/ModelExclusions.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for exclusions related to MaD models. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll index 2a1ea8b0e068..45ad9d0a73b7 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java private import codeql.ssa.Ssa as SsaImplCommon private import semmle.code.java.dataflow.SSA diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingImplSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingImplSpecific.qll index 0f756200abeb..1ac2c7c60fe8 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingImplSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingImplSpecific.qll @@ -1,6 +1,8 @@ /** * Provides Java-specific definitions for use in the taint tracking library. */ +overlay[local?] +module; private import codeql.dataflow.TaintTracking private import DataFlowImplSpecific diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll index d4890b96f8e8..40e361ed1588 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import java private import semmle.code.java.dataflow.DataFlow private import semmle.code.java.Collections @@ -20,6 +23,7 @@ private import semmle.code.java.frameworks.JaxWS * Holds if taint can flow from `src` to `sink` in zero or more * local (intra-procedural) steps. */ +overlay[caller?] pragma[inline] predicate localTaint(DataFlow::Node src, DataFlow::Node sink) { localTaintStep*(src, sink) } @@ -27,6 +31,7 @@ predicate localTaint(DataFlow::Node src, DataFlow::Node sink) { localTaintStep*( * Holds if taint can flow from `src` to `sink` in zero or more * local (intra-procedural) steps. */ +overlay[caller?] pragma[inline] predicate localExprTaint(Expr src, Expr sink) { localTaint(DataFlow::exprNode(src), DataFlow::exprNode(sink)) @@ -69,6 +74,7 @@ module LocalTaintFlow { * (intra-procedural) steps that are restricted to be part of a path between * `source` and `sink`. */ + overlay[caller?] pragma[inline] predicate hasFlow(DataFlow::Node n1, DataFlow::Node n2) { step*(n1, n2) } @@ -77,6 +83,7 @@ module LocalTaintFlow { * (intra-procedural) steps that are restricted to be part of a path between * `source` and `sink`. */ + overlay[caller?] pragma[inline] predicate hasExprFlow(Expr n1, Expr n2) { hasFlow(DataFlow::exprNode(n1), DataFlow::exprNode(n2)) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll index 0af549f1f7ee..a1c690b7df4c 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll @@ -1,6 +1,8 @@ /** * Provides Java-specific definitions for bounds. */ +overlay[local?] +module; private import java as J private import semmle.code.java.dataflow.SSA as Ssa diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll index b639947793b5..e124b8f71378 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + module Private { private import java as J private import semmle.code.java.dataflow.SSA as Ssa @@ -14,7 +17,7 @@ module Private { class Expr = J::Expr; - class Guard = G::Guard_v2; + class Guard = G::Guards_v2::Guard; class ConstantIntegerExpr = RU::ConstantIntegerExpr; diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/Sign.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/Sign.qll index 30cc089f30bb..a8b715648321 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/Sign.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/Sign.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + newtype TSign = TNeg() or TZero() or diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisCommon.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisCommon.qll index 6f0067517f90..8f8d884c9566 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisCommon.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisCommon.qll @@ -5,6 +5,8 @@ * The analysis is implemented as an abstract interpretation over the * three-valued domain `{negative, zero, positive}`. */ +overlay[local?] +module; private import SignAnalysisSpecific::Private private import SsaReadPositionCommon diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll index 04e896b26011..8789661af7d2 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + /** * Provides Java-specific definitions for use in sign analysis. */ @@ -12,7 +15,7 @@ module Private { class ConstantIntegerExpr = RU::ConstantIntegerExpr; - class Guard = G::Guard_v2; + class Guard = G::Guards_v2::Guard; class SsaVariable = Ssa::SsaVariable; diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionCommon.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionCommon.qll index 08335f6680dd..1e3c4db95bed 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionCommon.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionCommon.qll @@ -1,6 +1,8 @@ /** * Provides classes for representing a position at which an SSA variable is read. */ +overlay[local?] +module; private import SsaReadPositionSpecific import SsaReadPositionSpecific::Public diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll index 9b081150e893..dbd7736acde4 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll @@ -1,6 +1,8 @@ /** * Provides Java-specific definitions for use in the `SsaReadPosition`. */ +overlay[local?] +module; private import semmle.code.java.dataflow.SSA as Ssa private import semmle.code.java.controlflow.BasicBlocks as BB diff --git a/java/ql/lib/semmle/code/java/deadcode/DeadCode.qll b/java/ql/lib/semmle/code/java/deadcode/DeadCode.qll index cab159b18043..140d5e9e2c81 100644 --- a/java/ql/lib/semmle/code/java/deadcode/DeadCode.qll +++ b/java/ql/lib/semmle/code/java/deadcode/DeadCode.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.deadcode.DeadEnumConstant import semmle.code.java.deadcode.DeadCodeCustomizations diff --git a/java/ql/lib/semmle/code/java/deadcode/DeadEnumConstant.qll b/java/ql/lib/semmle/code/java/deadcode/DeadEnumConstant.qll index e87671dba714..3a8491b8428e 100644 --- a/java/ql/lib/semmle/code/java/deadcode/DeadEnumConstant.qll +++ b/java/ql/lib/semmle/code/java/deadcode/DeadEnumConstant.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java /** diff --git a/java/ql/lib/semmle/code/java/deadcode/DeadField.qll b/java/ql/lib/semmle/code/java/deadcode/DeadField.qll index 2dcbb96f3b59..016350f23ec2 100644 --- a/java/ql/lib/semmle/code/java/deadcode/DeadField.qll +++ b/java/ql/lib/semmle/code/java/deadcode/DeadField.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.deadcode.DeadCode import semmle.code.java.frameworks.javaee.Persistence diff --git a/java/ql/lib/semmle/code/java/deadcode/EntryPoints.qll b/java/ql/lib/semmle/code/java/deadcode/EntryPoints.qll index 7c0a2fdc2d37..ec8ad6e2d4ff 100644 --- a/java/ql/lib/semmle/code/java/deadcode/EntryPoints.qll +++ b/java/ql/lib/semmle/code/java/deadcode/EntryPoints.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.deadcode.DeadCode import semmle.code.java.deadcode.frameworks.CamelEntryPoints diff --git a/java/ql/lib/semmle/code/java/deadcode/SpringEntryPoints.qll b/java/ql/lib/semmle/code/java/deadcode/SpringEntryPoints.qll index f280d9bf8285..7ee7416cecc4 100644 --- a/java/ql/lib/semmle/code/java/deadcode/SpringEntryPoints.qll +++ b/java/ql/lib/semmle/code/java/deadcode/SpringEntryPoints.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.deadcode.DeadCode import semmle.code.java.frameworks.spring.Spring diff --git a/java/ql/lib/semmle/code/java/deadcode/StrutsEntryPoints.qll b/java/ql/lib/semmle/code/java/deadcode/StrutsEntryPoints.qll index 86910a921f8a..a40417debcb5 100644 --- a/java/ql/lib/semmle/code/java/deadcode/StrutsEntryPoints.qll +++ b/java/ql/lib/semmle/code/java/deadcode/StrutsEntryPoints.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.deadcode.DeadCode import semmle.code.java.frameworks.struts.StrutsActions diff --git a/java/ql/lib/semmle/code/java/deadcode/TestEntryPoints.qll b/java/ql/lib/semmle/code/java/deadcode/TestEntryPoints.qll index b8013d2947a8..d8674817b17c 100644 --- a/java/ql/lib/semmle/code/java/deadcode/TestEntryPoints.qll +++ b/java/ql/lib/semmle/code/java/deadcode/TestEntryPoints.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.deadcode.DeadCode import semmle.code.java.frameworks.Cucumber diff --git a/java/ql/lib/semmle/code/java/deadcode/WebEntryPoints.qll b/java/ql/lib/semmle/code/java/deadcode/WebEntryPoints.qll index fc2d5f69df9a..df9ef0a7b7c5 100644 --- a/java/ql/lib/semmle/code/java/deadcode/WebEntryPoints.qll +++ b/java/ql/lib/semmle/code/java/deadcode/WebEntryPoints.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.deadcode.DeadCode import semmle.code.java.frameworks.gwt.GWT diff --git a/java/ql/lib/semmle/code/java/deadcode/frameworks/CamelEntryPoints.qll b/java/ql/lib/semmle/code/java/deadcode/frameworks/CamelEntryPoints.qll index a96565c606e4..453d75e179b5 100644 --- a/java/ql/lib/semmle/code/java/deadcode/frameworks/CamelEntryPoints.qll +++ b/java/ql/lib/semmle/code/java/deadcode/frameworks/CamelEntryPoints.qll @@ -1,6 +1,8 @@ /** * Apache Camel is a messaging framework, which can integrate with Spring. */ +overlay[local?] +module; import java import semmle.code.java.deadcode.DeadCode diff --git a/java/ql/lib/semmle/code/java/deadcode/frameworks/FitNesseEntryPoints.qll b/java/ql/lib/semmle/code/java/deadcode/frameworks/FitNesseEntryPoints.qll index a829ccef7d27..c817a9b7dac9 100644 --- a/java/ql/lib/semmle/code/java/deadcode/frameworks/FitNesseEntryPoints.qll +++ b/java/ql/lib/semmle/code/java/deadcode/frameworks/FitNesseEntryPoints.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import default import semmle.code.java.deadcode.DeadCode import external.ExternalArtifact diff --git a/java/ql/lib/semmle/code/java/deadcode/frameworks/GigaSpacesXAPEntryPoints.qll b/java/ql/lib/semmle/code/java/deadcode/frameworks/GigaSpacesXAPEntryPoints.qll index 39cb18db80a7..3e231e23fc31 100644 --- a/java/ql/lib/semmle/code/java/deadcode/frameworks/GigaSpacesXAPEntryPoints.qll +++ b/java/ql/lib/semmle/code/java/deadcode/frameworks/GigaSpacesXAPEntryPoints.qll @@ -1,6 +1,8 @@ /** * GigaSpaces XAP (eXtreme Application Platform) is a distributed in-memory "datagrid". */ +overlay[local?] +module; import java import semmle.code.java.deadcode.DeadCode diff --git a/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll b/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll index bd293eed6b3a..a9988e920c62 100644 --- a/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll +++ b/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll @@ -5,6 +5,8 @@ * data flow check for lambdas, anonymous classes, and other sufficiently * private classes where all object instantiations are accounted for. */ +overlay[local?] +module; import java private import VirtualDispatch diff --git a/java/ql/lib/semmle/code/java/dispatch/ObjFlow.qll b/java/ql/lib/semmle/code/java/dispatch/ObjFlow.qll index 293ba894fdfb..12fe1cba5e99 100644 --- a/java/ql/lib/semmle/code/java/dispatch/ObjFlow.qll +++ b/java/ql/lib/semmle/code/java/dispatch/ObjFlow.qll @@ -6,6 +6,8 @@ * The set of dispatch targets for `Object.toString()` calls are reduced based * on possible data flow from objects of more specific types to the qualifier. */ +overlay[local?] +module; import java private import VirtualDispatch diff --git a/java/ql/lib/semmle/code/java/dispatch/VirtualDispatch.qll b/java/ql/lib/semmle/code/java/dispatch/VirtualDispatch.qll index 78bf1ad0bdc1..877a62fb9455 100644 --- a/java/ql/lib/semmle/code/java/dispatch/VirtualDispatch.qll +++ b/java/ql/lib/semmle/code/java/dispatch/VirtualDispatch.qll @@ -2,6 +2,8 @@ * Provides predicates for reasoning about runtime call targets through virtual * dispatch. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.TypeFlow diff --git a/java/ql/lib/semmle/code/java/dispatch/WrappedInvocation.qll b/java/ql/lib/semmle/code/java/dispatch/WrappedInvocation.qll index f7840f197853..e76c252662a3 100644 --- a/java/ql/lib/semmle/code/java/dispatch/WrappedInvocation.qll +++ b/java/ql/lib/semmle/code/java/dispatch/WrappedInvocation.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for reasoning about calls that may invoke one * of their arguments. */ +overlay[local?] +module; import java import VirtualDispatch diff --git a/java/ql/lib/semmle/code/java/dispatch/internal/Unification.qll b/java/ql/lib/semmle/code/java/dispatch/internal/Unification.qll index 6c92f7298d92..cd585de58e4e 100644 --- a/java/ql/lib/semmle/code/java/dispatch/internal/Unification.qll +++ b/java/ql/lib/semmle/code/java/dispatch/internal/Unification.qll @@ -1,6 +1,8 @@ /** * Provides a module to check whether two `ParameterizedType`s are unifiable. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/environment/SystemProperty.qll b/java/ql/lib/semmle/code/java/environment/SystemProperty.qll index bee91d7c6b7f..add93ee56c39 100644 --- a/java/ql/lib/semmle/code/java/environment/SystemProperty.qll +++ b/java/ql/lib/semmle/code/java/environment/SystemProperty.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with java system properties. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/ApacheHttp.qll b/java/ql/lib/semmle/code/java/frameworks/ApacheHttp.qll index 61f6aa9a34ea..73078c1da83c 100644 --- a/java/ql/lib/semmle/code/java/frameworks/ApacheHttp.qll +++ b/java/ql/lib/semmle/code/java/frameworks/ApacheHttp.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates related to `org.apache.http.*` and `org.apache.hc.*`. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.FlowSteps diff --git a/java/ql/lib/semmle/code/java/frameworks/ApacheLdap.qll b/java/ql/lib/semmle/code/java/frameworks/ApacheLdap.qll index 8bcba2f044eb..6d76caf36d55 100644 --- a/java/ql/lib/semmle/code/java/frameworks/ApacheLdap.qll +++ b/java/ql/lib/semmle/code/java/frameworks/ApacheLdap.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Apache LDAP API. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Assertions.qll b/java/ql/lib/semmle/code/java/frameworks/Assertions.qll index e7f86b9bfd81..9849be5f3603 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Assertions.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Assertions.qll @@ -5,6 +5,8 @@ * `org.junit.jupiter.api.Assertions`, `com.google.common.base.Preconditions`, * and `java.util.Objects`. */ +overlay[local?] +module; import java @@ -110,11 +112,17 @@ predicate assertFail(BasicBlock bb, ControlFlowNode n) { ( exists(AssertTrueMethod m | n.asExpr() = m.getACheck(any(BooleanLiteral b | b.getBooleanValue() = false)) - ) or + ) + or exists(AssertFalseMethod m | n.asExpr() = m.getACheck(any(BooleanLiteral b | b.getBooleanValue() = true)) - ) or - exists(AssertFailMethod m | n.asExpr() = m.getACheck()) or - n.asStmt().(AssertStmt).getExpr().(BooleanLiteral).getBooleanValue() = false + ) + or + exists(AssertFailMethod m | n.asExpr() = m.getACheck()) + or + exists(AssertStmt a | + n.asExpr() = a.getExpr() and + a.getExpr().(BooleanLiteral).getBooleanValue() = false + ) ) } diff --git a/java/ql/lib/semmle/code/java/frameworks/Camel.qll b/java/ql/lib/semmle/code/java/frameworks/Camel.qll index 381ee3cb28e2..137855b5fa1a 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Camel.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Camel.qll @@ -1,6 +1,8 @@ /** * Apache Camel messaging framework. */ +overlay[local?] +module; import java import semmle.code.java.frameworks.spring.SpringCamel diff --git a/java/ql/lib/semmle/code/java/frameworks/Castor.qll b/java/ql/lib/semmle/code/java/frameworks/Castor.qll index f1e1b8257252..2becb2fbf178 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Castor.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Castor.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Castor framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Cucumber.qll b/java/ql/lib/semmle/code/java/frameworks/Cucumber.qll index 9bcfb24bae5a..15e71a25f890 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Cucumber.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Cucumber.qll @@ -1,6 +1,8 @@ /** * Cucumber is an open-source project for writing executable acceptance tests in human-readable `.feature` files. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/FastJson.qll b/java/ql/lib/semmle/code/java/frameworks/FastJson.qll index c9f7d9e8b89d..305f795017a6 100644 --- a/java/ql/lib/semmle/code/java/frameworks/FastJson.qll +++ b/java/ql/lib/semmle/code/java/frameworks/FastJson.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the FastJson framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Flexjson.qll b/java/ql/lib/semmle/code/java/frameworks/Flexjson.qll index 55a8e2624386..2e5cb2ce9593 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Flexjson.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Flexjson.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with the Flexjson framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Guice.qll b/java/ql/lib/semmle/code/java/frameworks/Guice.qll index 8dfb63983982..bf6a3d5467cc 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Guice.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Guice.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Guice framework. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.FlowSteps diff --git a/java/ql/lib/semmle/code/java/frameworks/HessianBurlap.qll b/java/ql/lib/semmle/code/java/frameworks/HessianBurlap.qll index e3c5269e5b20..3a10b75a2a69 100644 --- a/java/ql/lib/semmle/code/java/frameworks/HessianBurlap.qll +++ b/java/ql/lib/semmle/code/java/frameworks/HessianBurlap.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the HessianBurlap framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Hibernate.qll b/java/ql/lib/semmle/code/java/frameworks/Hibernate.qll index 28b281014547..4e5050b412ca 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Hibernate.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Hibernate.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Hibernate framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/InputStream.qll b/java/ql/lib/semmle/code/java/frameworks/InputStream.qll index 8f37ecc24ea0..f6097e8c4492 100644 --- a/java/ql/lib/semmle/code/java/frameworks/InputStream.qll +++ b/java/ql/lib/semmle/code/java/frameworks/InputStream.qll @@ -1,4 +1,6 @@ /** Provides definitions related to `java.io.InputStream`. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/IoJsonWebToken.qll b/java/ql/lib/semmle/code/java/frameworks/IoJsonWebToken.qll index 3da90bb7e67a..b4573013295b 100644 --- a/java/ql/lib/semmle/code/java/frameworks/IoJsonWebToken.qll +++ b/java/ql/lib/semmle/code/java/frameworks/IoJsonWebToken.qll @@ -1,4 +1,6 @@ /** Predicates and classes to reason about the `io.jsonwebtoken` library. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/JAXB.qll b/java/ql/lib/semmle/code/java/frameworks/JAXB.qll index e25add17ccb1..96075bbccf3c 100644 --- a/java/ql/lib/semmle/code/java/frameworks/JAXB.qll +++ b/java/ql/lib/semmle/code/java/frameworks/JAXB.qll @@ -1,4 +1,6 @@ /** Definitions related to JAXB. */ +overlay[local?] +module; import semmle.code.java.Type diff --git a/java/ql/lib/semmle/code/java/frameworks/JUnitAnnotations.qll b/java/ql/lib/semmle/code/java/frameworks/JUnitAnnotations.qll index d74fe683f063..ad58cd486e16 100644 --- a/java/ql/lib/semmle/code/java/frameworks/JUnitAnnotations.qll +++ b/java/ql/lib/semmle/code/java/frameworks/JUnitAnnotations.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with annotations from the `JUnit` framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/JYaml.qll b/java/ql/lib/semmle/code/java/frameworks/JYaml.qll index 9d77b86f6c1d..cd9414521c4e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/JYaml.qll +++ b/java/ql/lib/semmle/code/java/frameworks/JYaml.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the JYaml framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Jabsorb.qll b/java/ql/lib/semmle/code/java/frameworks/Jabsorb.qll index eede97b411cb..e8bb82f156fe 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Jabsorb.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Jabsorb.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with the Jabsorb JSON-RPC ORB framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Jackson.qll b/java/ql/lib/semmle/code/java/frameworks/Jackson.qll index 605370ec594f..5c1d02759231 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Jackson.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Jackson.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Jackson serialization framework. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/JavaxAnnotations.qll b/java/ql/lib/semmle/code/java/frameworks/JavaxAnnotations.qll index 0f5da6c39eac..22f33d346df0 100644 --- a/java/ql/lib/semmle/code/java/frameworks/JavaxAnnotations.qll +++ b/java/ql/lib/semmle/code/java/frameworks/JavaxAnnotations.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with annotations in the `javax` package. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/JaxWS.qll b/java/ql/lib/semmle/code/java/frameworks/JaxWS.qll index a0f891fd36ea..62289f737c02 100644 --- a/java/ql/lib/semmle/code/java/frameworks/JaxWS.qll +++ b/java/ql/lib/semmle/code/java/frameworks/JaxWS.qll @@ -2,6 +2,8 @@ * Definitions relating to JAX-WS (Java/Jakarta API for XML Web Services) and JAX-RS * (Java/Jakarta API for RESTful Web Services). */ +overlay[local?] +module; import java private import semmle.code.java.frameworks.Networking diff --git a/java/ql/lib/semmle/code/java/frameworks/Jdbc.qll b/java/ql/lib/semmle/code/java/frameworks/Jdbc.qll index 37be7dcf09a7..c7172527d1fe 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Jdbc.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Jdbc.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Java JDBC API. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Jms.qll b/java/ql/lib/semmle/code/java/frameworks/Jms.qll index 653582100bdb..3cc76771a776 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Jms.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Jms.qll @@ -1,4 +1,6 @@ /** Provides definitions for working with the JMS library. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Jndi.qll b/java/ql/lib/semmle/code/java/frameworks/Jndi.qll index 267cdcd59dc8..0d7d481dc1d0 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Jndi.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Jndi.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Java JNDI API. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/JoddJson.qll b/java/ql/lib/semmle/code/java/frameworks/JoddJson.qll index d92b80ca32b5..3f28b2e8c7e4 100644 --- a/java/ql/lib/semmle/code/java/frameworks/JoddJson.qll +++ b/java/ql/lib/semmle/code/java/frameworks/JoddJson.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Jodd JSON framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/JsonIo.qll b/java/ql/lib/semmle/code/java/frameworks/JsonIo.qll index 85f3a5ef06bb..433277a64728 100644 --- a/java/ql/lib/semmle/code/java/frameworks/JsonIo.qll +++ b/java/ql/lib/semmle/code/java/frameworks/JsonIo.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Json-io framework. */ +overlay[local?] +module; import java import semmle.code.java.Maps diff --git a/java/ql/lib/semmle/code/java/frameworks/Kryo.qll b/java/ql/lib/semmle/code/java/frameworks/Kryo.qll index 7dde62c4ba4b..77a423a8a9ef 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Kryo.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Kryo.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Kryo serialization framework. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/Lombok.qll b/java/ql/lib/semmle/code/java/frameworks/Lombok.qll index 39ee7c5393d5..84a890c498f8 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Lombok.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Lombok.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for identifying use of the Lombok framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Mail.qll b/java/ql/lib/semmle/code/java/frameworks/Mail.qll index eeb9665dc2ed..c61e5ae34f99 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Mail.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Mail.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates to work with email */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Mockito.qll b/java/ql/lib/semmle/code/java/frameworks/Mockito.qll index 0f5971a68ace..1a8d987a38e4 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Mockito.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Mockito.qll @@ -3,6 +3,8 @@ * * QL classes are provided for detecting uses of Mockito annotations on fields. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/MyBatis.qll b/java/ql/lib/semmle/code/java/frameworks/MyBatis.qll index c7fc09a33b4d..e3f89186821b 100644 --- a/java/ql/lib/semmle/code/java/frameworks/MyBatis.qll +++ b/java/ql/lib/semmle/code/java/frameworks/MyBatis.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the MyBatis framework. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/Netty.qll b/java/ql/lib/semmle/code/java/frameworks/Netty.qll index 9a72c7f64043..caaa429d69ec 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Netty.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Netty.qll @@ -1,4 +1,6 @@ /** Provides definitions related to the Netty framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Networking.qll b/java/ql/lib/semmle/code/java/frameworks/Networking.qll index 1139d0d00621..6eeb5aa90241 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Networking.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Networking.qll @@ -1,6 +1,8 @@ /** * Definitions related to `java.net.*`. */ +overlay[local?] +module; import semmle.code.java.Type private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/OpenSaml.qll b/java/ql/lib/semmle/code/java/frameworks/OpenSaml.qll index c8b9a320ec1b..5327db3af865 100644 --- a/java/ql/lib/semmle/code/java/frameworks/OpenSaml.qll +++ b/java/ql/lib/semmle/code/java/frameworks/OpenSaml.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the OpenSAML libraries. */ +overlay[local?] +module; import java private import semmle.code.java.security.InsecureRandomnessQuery diff --git a/java/ql/lib/semmle/code/java/frameworks/Properties.qll b/java/ql/lib/semmle/code/java/frameworks/Properties.qll index 15e7b6878858..50a13c236744 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Properties.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Properties.qll @@ -1,4 +1,6 @@ /** Definitions related to `java.util.Properties`. */ +overlay[local?] +module; import semmle.code.java.Type private import semmle.code.java.dataflow.FlowSteps diff --git a/java/ql/lib/semmle/code/java/frameworks/Protobuf.qll b/java/ql/lib/semmle/code/java/frameworks/Protobuf.qll index 14224bc148de..bbaa56f46119 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Protobuf.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Protobuf.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Protobuf framework. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.FlowSteps diff --git a/java/ql/lib/semmle/code/java/frameworks/Regex.qll b/java/ql/lib/semmle/code/java/frameworks/Regex.qll index 780dec48b923..f63f46c38780 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Regex.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Regex.qll @@ -1,4 +1,6 @@ /** Definitions related to `java.util.regex`. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Rmi.qll b/java/ql/lib/semmle/code/java/frameworks/Rmi.qll index 922f90bccb62..03ea238982d6 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Rmi.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Rmi.qll @@ -1,4 +1,6 @@ /** Remote Method Invocation. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/Selenium.qll b/java/ql/lib/semmle/code/java/frameworks/Selenium.qll index 0ea61ae0ecfe..6a85d5b09159 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Selenium.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Selenium.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for identifying classes reflectively constructed by Selenium using the * `PageFactory.initElements(...)` method. */ +overlay[local?] +module; import default import semmle.code.java.Reflection diff --git a/java/ql/lib/semmle/code/java/frameworks/Servlets.qll b/java/ql/lib/semmle/code/java/frameworks/Servlets.qll index 80e80c019b0a..7d7beb74fc30 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Servlets.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Servlets.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Java Servlet API. */ +overlay[local?] +module; import semmle.code.java.Type diff --git a/java/ql/lib/semmle/code/java/frameworks/SnakeYaml.qll b/java/ql/lib/semmle/code/java/frameworks/SnakeYaml.qll index 3bde32912180..0edbad2196e1 100644 --- a/java/ql/lib/semmle/code/java/frameworks/SnakeYaml.qll +++ b/java/ql/lib/semmle/code/java/frameworks/SnakeYaml.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the SnakeYaml serialization framework. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/SpringJdbc.qll b/java/ql/lib/semmle/code/java/frameworks/SpringJdbc.qll index 82eedca44e88..192e579a4f6b 100644 --- a/java/ql/lib/semmle/code/java/frameworks/SpringJdbc.qll +++ b/java/ql/lib/semmle/code/java/frameworks/SpringJdbc.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Spring JDBC framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/SpringLdap.qll b/java/ql/lib/semmle/code/java/frameworks/SpringLdap.qll index da40caf37445..79c3739dde4f 100644 --- a/java/ql/lib/semmle/code/java/frameworks/SpringLdap.qll +++ b/java/ql/lib/semmle/code/java/frameworks/SpringLdap.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Spring LDAP API. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/SpringWeb.qll b/java/ql/lib/semmle/code/java/frameworks/SpringWeb.qll index a011af98cd5c..9bb856e22604 100644 --- a/java/ql/lib/semmle/code/java/frameworks/SpringWeb.qll +++ b/java/ql/lib/semmle/code/java/frameworks/SpringWeb.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import spring.SpringController import spring.SpringWeb diff --git a/java/ql/lib/semmle/code/java/frameworks/Stream.qll b/java/ql/lib/semmle/code/java/frameworks/Stream.qll index a449f8bd99a6..8927355d6377 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Stream.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Stream.qll @@ -1,4 +1,6 @@ /** Definitions related to `java.util.stream`. */ +overlay[local?] +module; private import semmle.code.java.dataflow.FlowSummary diff --git a/java/ql/lib/semmle/code/java/frameworks/ThreadLocal.qll b/java/ql/lib/semmle/code/java/frameworks/ThreadLocal.qll index 826eed8dffcc..c813c0383eb6 100644 --- a/java/ql/lib/semmle/code/java/frameworks/ThreadLocal.qll +++ b/java/ql/lib/semmle/code/java/frameworks/ThreadLocal.qll @@ -1,4 +1,6 @@ /** Definitions related to `java.lang.ThreadLocal`. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/Thrift.qll b/java/ql/lib/semmle/code/java/frameworks/Thrift.qll index 4e07a2730dc2..5272745b4e97 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Thrift.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Thrift.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Apache Thrift framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/UnboundId.qll b/java/ql/lib/semmle/code/java/frameworks/UnboundId.qll index bfb7a6604246..6359fbf2afbc 100644 --- a/java/ql/lib/semmle/code/java/frameworks/UnboundId.qll +++ b/java/ql/lib/semmle/code/java/frameworks/UnboundId.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the UnboundID API. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/XStream.qll b/java/ql/lib/semmle/code/java/frameworks/XStream.qll index 0e62459e13d8..aca6117023ee 100644 --- a/java/ql/lib/semmle/code/java/frameworks/XStream.qll +++ b/java/ql/lib/semmle/code/java/frameworks/XStream.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the XStream XML serialization framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/YamlBeans.qll b/java/ql/lib/semmle/code/java/frameworks/YamlBeans.qll index b5db59926be4..040ae60fc710 100644 --- a/java/ql/lib/semmle/code/java/frameworks/YamlBeans.qll +++ b/java/ql/lib/semmle/code/java/frameworks/YamlBeans.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the YamlBeans framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/android/Android.qll b/java/ql/lib/semmle/code/java/frameworks/android/Android.qll index befcc036205e..85df4366ec27 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/Android.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/Android.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with Android components. */ +overlay[local?] +module; import java private import semmle.code.xml.AndroidManifest diff --git a/java/ql/lib/semmle/code/java/frameworks/android/AsyncTask.qll b/java/ql/lib/semmle/code/java/frameworks/android/AsyncTask.qll index 226a80709456..1aba64a4c7e0 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/AsyncTask.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/AsyncTask.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates to reason about `AsyncTask`s in Android. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/android/Compose.qll b/java/ql/lib/semmle/code/java/frameworks/android/Compose.qll index 0e6399cba1f0..9123600d4e48 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/Compose.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/Compose.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with components generated by the Android's Jetpack Compose compiler. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/android/ContentProviders.qll b/java/ql/lib/semmle/code/java/frameworks/android/ContentProviders.qll index 7bcd4baa3e50..f344377b9cd8 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/ContentProviders.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/ContentProviders.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with Content Providers. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/android/ExternalStorage.qll b/java/ql/lib/semmle/code/java/frameworks/android/ExternalStorage.qll index 7eb088a9514f..c07ddea6dbab 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/ExternalStorage.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/ExternalStorage.qll @@ -1,4 +1,6 @@ /** Provides definitions for working with uses of Android external storage */ +overlay[local?] +module; import java private import semmle.code.java.security.FileReadWrite diff --git a/java/ql/lib/semmle/code/java/frameworks/android/Fragment.qll b/java/ql/lib/semmle/code/java/frameworks/android/Fragment.qll index debdd69e1944..64c92955ee7b 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/Fragment.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/Fragment.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates to track Android fragments. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/android/Intent.qll b/java/ql/lib/semmle/code/java/frameworks/android/Intent.qll index 6e321b0ad900..c3b58873d1f0 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/Intent.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/Intent.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java private import semmle.code.java.frameworks.android.Android private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/android/Layout.qll b/java/ql/lib/semmle/code/java/frameworks/android/Layout.qll index ee430b62d577..0f6f5d845b86 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/Layout.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/Layout.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for working with Android layouts and UI elements. */ +overlay[local?] +module; import java import semmle.code.xml.AndroidManifest diff --git a/java/ql/lib/semmle/code/java/frameworks/android/OnActivityResultSource.qll b/java/ql/lib/semmle/code/java/frameworks/android/OnActivityResultSource.qll index 5253526f0fd1..5a1a9bf8c7a0 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/OnActivityResultSource.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/OnActivityResultSource.qll @@ -1,4 +1,6 @@ /** Provides a remote flow source for Android's `Activity.onActivityResult` method. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/android/PendingIntent.qll b/java/ql/lib/semmle/code/java/frameworks/android/PendingIntent.qll index 1c17d3c9b8df..720be6dce03a 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/PendingIntent.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/PendingIntent.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates related to the class `PendingIntent`. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/android/SQLite.qll b/java/ql/lib/semmle/code/java/frameworks/android/SQLite.qll index 2898b6aee54f..f46f4e0e51d6 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/SQLite.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/SQLite.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for working with SQLite databases. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.FlowSteps diff --git a/java/ql/lib/semmle/code/java/frameworks/android/SharedPreferences.qll b/java/ql/lib/semmle/code/java/frameworks/android/SharedPreferences.qll index a3298fd70d87..a11857e9f1f4 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/SharedPreferences.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/SharedPreferences.qll @@ -1,4 +1,6 @@ /** Provides classes related to `android.content.SharedPreferences`. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/android/Slice.qll b/java/ql/lib/semmle/code/java/frameworks/android/Slice.qll index 96ccb2a4401e..60811d9bc2d6 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/Slice.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/Slice.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates related to `androidx.slice`. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/android/WebView.qll b/java/ql/lib/semmle/code/java/frameworks/android/WebView.qll index 78eeae4bdf22..8fa804f52797 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/WebView.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/WebView.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java /** The class `android.webkit.WebView`. */ diff --git a/java/ql/lib/semmle/code/java/frameworks/android/Widget.qll b/java/ql/lib/semmle/code/java/frameworks/android/Widget.qll index 9a2729f5b794..7b277a797f90 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/Widget.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/Widget.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for working with Android widgets. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.ExternalFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/android/XmlParsing.qll b/java/ql/lib/semmle/code/java/frameworks/android/XmlParsing.qll index 4e6c39f25757..2235bc5eaecc 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/XmlParsing.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/XmlParsing.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java class XmlPullParser extends Interface { diff --git a/java/ql/lib/semmle/code/java/frameworks/apache/Collections.qll b/java/ql/lib/semmle/code/java/frameworks/apache/Collections.qll index 24030e35045d..97d51fc2cbc4 100644 --- a/java/ql/lib/semmle/code/java/frameworks/apache/Collections.qll +++ b/java/ql/lib/semmle/code/java/frameworks/apache/Collections.qll @@ -1,4 +1,6 @@ /** Definitions related to the Apache Commons Collections library. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.FlowSteps diff --git a/java/ql/lib/semmle/code/java/frameworks/apache/CommonsXml.qll b/java/ql/lib/semmle/code/java/frameworks/apache/CommonsXml.qll index 5e72b26e009b..163bd773dad0 100644 --- a/java/ql/lib/semmle/code/java/frameworks/apache/CommonsXml.qll +++ b/java/ql/lib/semmle/code/java/frameworks/apache/CommonsXml.qll @@ -1,4 +1,6 @@ /** Provides XML definitions related to the `org.apache.commons` package. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.RangeUtils diff --git a/java/ql/lib/semmle/code/java/frameworks/apache/Lang.qll b/java/ql/lib/semmle/code/java/frameworks/apache/Lang.qll index 9ea2400b8718..27c7f9530ad1 100644 --- a/java/ql/lib/semmle/code/java/frameworks/apache/Lang.qll +++ b/java/ql/lib/semmle/code/java/frameworks/apache/Lang.qll @@ -1,4 +1,6 @@ /** Definitions related to the Apache Commons Lang library. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.FlowSteps diff --git a/java/ql/lib/semmle/code/java/frameworks/camel/CamelJavaAnnotations.qll b/java/ql/lib/semmle/code/java/frameworks/camel/CamelJavaAnnotations.qll index 1d42bd4c94b4..b1637038b99a 100644 --- a/java/ql/lib/semmle/code/java/frameworks/camel/CamelJavaAnnotations.qll +++ b/java/ql/lib/semmle/code/java/frameworks/camel/CamelJavaAnnotations.qll @@ -14,6 +14,8 @@ * * This creates a route to the `ConsumeMdb` class for messages sent to "activemq:queue:sayhello". */ +overlay[local?] +module; import java import semmle.code.java.Reflection diff --git a/java/ql/lib/semmle/code/java/frameworks/camel/CamelJavaDSL.qll b/java/ql/lib/semmle/code/java/frameworks/camel/CamelJavaDSL.qll index ed09baf8ead2..df8903266592 100644 --- a/java/ql/lib/semmle/code/java/frameworks/camel/CamelJavaDSL.qll +++ b/java/ql/lib/semmle/code/java/frameworks/camel/CamelJavaDSL.qll @@ -13,6 +13,8 @@ * * This creates a route to the `TargetBean` class for messages sent to "direct.start". */ +overlay[local?] +module; import java import semmle.code.java.Reflection diff --git a/java/ql/lib/semmle/code/java/frameworks/gigaspaces/GigaSpaces.qll b/java/ql/lib/semmle/code/java/frameworks/gigaspaces/GigaSpaces.qll index 2b99e0fcff0b..a03ed1c5266e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/gigaspaces/GigaSpaces.qll +++ b/java/ql/lib/semmle/code/java/frameworks/gigaspaces/GigaSpaces.qll @@ -1,6 +1,8 @@ /** * GigaSpaces XAP (eXtreme Application Platform) is a distributed in-memory "datagrid". */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/google/GoogleHttpClientApi.qll b/java/ql/lib/semmle/code/java/frameworks/google/GoogleHttpClientApi.qll index db8bc2574c13..5e0304ca7b2a 100644 --- a/java/ql/lib/semmle/code/java/frameworks/google/GoogleHttpClientApi.qll +++ b/java/ql/lib/semmle/code/java/frameworks/google/GoogleHttpClientApi.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.Serializability import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/google/Gson.qll b/java/ql/lib/semmle/code/java/frameworks/google/Gson.qll index 9dc38a529415..7185c87b09f2 100644 --- a/java/ql/lib/semmle/code/java/frameworks/google/Gson.qll +++ b/java/ql/lib/semmle/code/java/frameworks/google/Gson.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with the Gson framework. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/google/GsonSerializability.qll b/java/ql/lib/semmle/code/java/frameworks/google/GsonSerializability.qll index 6abaee8ff720..bd8973b0adb8 100644 --- a/java/ql/lib/semmle/code/java/frameworks/google/GsonSerializability.qll +++ b/java/ql/lib/semmle/code/java/frameworks/google/GsonSerializability.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for working with Java Serialization in the context of * the `com.google.gson` JSON processing framework. */ +overlay[local?] +module; import java private import semmle.code.java.Serializability diff --git a/java/ql/lib/semmle/code/java/frameworks/guava/Collections.qll b/java/ql/lib/semmle/code/java/frameworks/guava/Collections.qll index 94dd356f62d7..aebdb22f42ac 100644 --- a/java/ql/lib/semmle/code/java/frameworks/guava/Collections.qll +++ b/java/ql/lib/semmle/code/java/frameworks/guava/Collections.qll @@ -1,4 +1,6 @@ /** Definitions of flow steps through the collection types in the Guava framework */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/guava/Guava.qll b/java/ql/lib/semmle/code/java/frameworks/guava/Guava.qll index 5dd8aaa18eeb..545aae763d55 100644 --- a/java/ql/lib/semmle/code/java/frameworks/guava/Guava.qll +++ b/java/ql/lib/semmle/code/java/frameworks/guava/Guava.qll @@ -1,6 +1,8 @@ /** * Definitions for tracking taint steps through the Guava framework. */ +overlay[local?] +module; import java import Collections diff --git a/java/ql/lib/semmle/code/java/frameworks/gwt/GWT.qll b/java/ql/lib/semmle/code/java/frameworks/gwt/GWT.qll index 6780a9261b9b..a58e49aa76f0 100644 --- a/java/ql/lib/semmle/code/java/frameworks/gwt/GWT.qll +++ b/java/ql/lib/semmle/code/java/frameworks/gwt/GWT.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for working with the GWT framework. */ +overlay[local?] +module; import java import GwtXml diff --git a/java/ql/lib/semmle/code/java/frameworks/gwt/GwtUiBinder.qll b/java/ql/lib/semmle/code/java/frameworks/gwt/GwtUiBinder.qll index 8532cc81bb30..d692740f40e6 100644 --- a/java/ql/lib/semmle/code/java/frameworks/gwt/GwtUiBinder.qll +++ b/java/ql/lib/semmle/code/java/frameworks/gwt/GwtUiBinder.qll @@ -4,6 +4,8 @@ * The UiBinder framework allows the specification of user interfaces in XML template files. These * can then be interacted with programmatically by writing an associated owner class. */ +overlay[local?] +module; import java import GwtUiBinderXml diff --git a/java/ql/lib/semmle/code/java/frameworks/gwt/GwtUiBinderXml.qll b/java/ql/lib/semmle/code/java/frameworks/gwt/GwtUiBinderXml.qll index 0fb8ed3cd70d..fef34f1bc44d 100644 --- a/java/ql/lib/semmle/code/java/frameworks/gwt/GwtUiBinderXml.qll +++ b/java/ql/lib/semmle/code/java/frameworks/gwt/GwtUiBinderXml.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for identifying GWT UiBinder framework XML templates. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/gwt/GwtXml.qll b/java/ql/lib/semmle/code/java/frameworks/gwt/GwtXml.qll index e143d06cccbc..b36824543005 100644 --- a/java/ql/lib/semmle/code/java/frameworks/gwt/GwtXml.qll +++ b/java/ql/lib/semmle/code/java/frameworks/gwt/GwtXml.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for working with `*.gwt.xml` files. */ +overlay[local?] +module; import semmle.code.xml.XML diff --git a/java/ql/lib/semmle/code/java/frameworks/hudson/Hudson.qll b/java/ql/lib/semmle/code/java/frameworks/hudson/Hudson.qll index ae316cf649e5..44752f94576b 100644 --- a/java/ql/lib/semmle/code/java/frameworks/hudson/Hudson.qll +++ b/java/ql/lib/semmle/code/java/frameworks/hudson/Hudson.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates related to the Hudson framework. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.FlowSources diff --git a/java/ql/lib/semmle/code/java/frameworks/j2objc/J2ObjC.qll b/java/ql/lib/semmle/code/java/frameworks/j2objc/J2ObjC.qll index 2e9b04d6a8ce..abb24b909e97 100644 --- a/java/ql/lib/semmle/code/java/frameworks/j2objc/J2ObjC.qll +++ b/java/ql/lib/semmle/code/java/frameworks/j2objc/J2ObjC.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with OCNI (Objective-C Native Interface). */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/jOOQ.qll b/java/ql/lib/semmle/code/java/frameworks/jOOQ.qll index 2aa78e9425da..e5bad7435d58 100644 --- a/java/ql/lib/semmle/code/java/frameworks/jOOQ.qll +++ b/java/ql/lib/semmle/code/java/frameworks/jOOQ.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the jOOQ framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/jackson/JacksonSerializability.qll b/java/ql/lib/semmle/code/java/frameworks/jackson/JacksonSerializability.qll index 8e1077d8bc01..aa7da753f434 100644 --- a/java/ql/lib/semmle/code/java/frameworks/jackson/JacksonSerializability.qll +++ b/java/ql/lib/semmle/code/java/frameworks/jackson/JacksonSerializability.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for working with Java Serialization in the context of * the `com.fasterxml.jackson` JSON processing framework. */ +overlay[local?] +module; import java import semmle.code.java.Serializability diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/JavaServerFaces.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/JavaServerFaces.qll index b4ae1b1c19cb..2f749962e94d 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/JavaServerFaces.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/JavaServerFaces.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for working with Java Server Faces. */ +overlay[local?] +module; import default import semmle.code.java.frameworks.javaee.jsf.JSFAnnotations diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/Persistence.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/Persistence.qll index b38cba889e00..b5031d7dff08 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/Persistence.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/Persistence.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the JavaEE Persistence API. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/PersistenceXML.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/PersistenceXML.qll index 7564dafa37e0..e6ada894fc6f 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/PersistenceXML.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/PersistenceXML.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for working with JavaEE * persistence configuration XML files (`persistence.xml`). */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/Xml.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/Xml.qll index c1a0b08d8e7c..222b778ba588 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/Xml.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/Xml.qll @@ -1,4 +1,6 @@ /** Provides definitions related to the `javax.xml` package. */ +overlay[local?] +module; import java private import semmle.code.java.security.XmlParsers diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJB.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJB.qll index d165370d1391..2b003b3c94e7 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJB.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJB.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for working with Enterprise Java Beans. */ +overlay[local?] +module; import java import EJBJarXML diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBJarXML.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBJarXML.qll index f44d77d89bd3..dc465ddc4c62 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBJarXML.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBJarXML.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for working with * EJB deployment descriptor XML files (`ejb-jar.xml`). */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBRestrictions.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBRestrictions.qll index f5a52490768c..2f5a88ba5c81 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBRestrictions.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBRestrictions.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for modeling * EJB Programming Restrictions (see EJB 3.0 specification, section 21.1.2). */ +overlay[local?] +module; import java import EJB diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFAnnotations.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFAnnotations.qll index 1db82875ad94..3338fa840ab0 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFAnnotations.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFAnnotations.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for working with Java Server Faces annotations. */ +overlay[local?] +module; import default diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFFacesContextXML.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFFacesContextXML.qll index 13ed765638d9..060398f648c1 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFFacesContextXML.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFFacesContextXML.qll @@ -1,6 +1,8 @@ /** * Provides classes for JSF "Application Configuration Resources File", usually called `faces-config.xml`. */ +overlay[local?] +module; import default diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFRenderer.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFRenderer.qll index 546d3be69833..df646e8a9a2c 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFRenderer.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFRenderer.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for working with JavaServer Faces renderer. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/javase/Beans.qll b/java/ql/lib/semmle/code/java/frameworks/javase/Beans.qll index dbdaf6960f31..1aa39c638286 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javase/Beans.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javase/Beans.qll @@ -1,4 +1,6 @@ /** Provides definitions related to the `java.beans` package. */ +overlay[local?] +module; import java private import semmle.code.java.security.XmlParsers diff --git a/java/ql/lib/semmle/code/java/frameworks/javase/Http.qll b/java/ql/lib/semmle/code/java/frameworks/javase/Http.qll index 5f03c0b190fd..addc4a576bdc 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javase/Http.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javase/Http.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates related to `java.net.http.*`. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/javase/WebSocket.qll b/java/ql/lib/semmle/code/java/frameworks/javase/WebSocket.qll index 17d3d4579d2a..2ea26630619b 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javase/WebSocket.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javase/WebSocket.qll @@ -1,6 +1,8 @@ /** * Provides classes for identifying methods called by the Java SE WebSocket package. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/kotlin/IO.qll b/java/ql/lib/semmle/code/java/frameworks/kotlin/IO.qll index 38af34bc6900..1c8181206f54 100644 --- a/java/ql/lib/semmle/code/java/frameworks/kotlin/IO.qll +++ b/java/ql/lib/semmle/code/java/frameworks/kotlin/IO.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates related to `kotlin.io`. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/kotlin/Kotlin.qll b/java/ql/lib/semmle/code/java/frameworks/kotlin/Kotlin.qll index 206996af321d..3f4d0e04c691 100644 --- a/java/ql/lib/semmle/code/java/frameworks/kotlin/Kotlin.qll +++ b/java/ql/lib/semmle/code/java/frameworks/kotlin/Kotlin.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates related to `kotlin`. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/kotlin/Serialization.qll b/java/ql/lib/semmle/code/java/frameworks/kotlin/Serialization.qll index c0269266a59e..1dc22be1a8b9 100644 --- a/java/ql/lib/semmle/code/java/frameworks/kotlin/Serialization.qll +++ b/java/ql/lib/semmle/code/java/frameworks/kotlin/Serialization.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the `kotlinx.serialization` plugin. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/kotlin/Text.qll b/java/ql/lib/semmle/code/java/frameworks/kotlin/Text.qll index 8521b2847848..1b576251f873 100644 --- a/java/ql/lib/semmle/code/java/frameworks/kotlin/Text.qll +++ b/java/ql/lib/semmle/code/java/frameworks/kotlin/Text.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates related to `kotlin.text`. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/mdht/MdhtXml.qll b/java/ql/lib/semmle/code/java/frameworks/mdht/MdhtXml.qll index b762fbcc8639..dc5ea6809948 100644 --- a/java/ql/lib/semmle/code/java/frameworks/mdht/MdhtXml.qll +++ b/java/ql/lib/semmle/code/java/frameworks/mdht/MdhtXml.qll @@ -1,4 +1,6 @@ /** Provides definitions related to XML parsing in Model-Driven Health Tools. */ +overlay[local?] +module; import java private import semmle.code.java.security.XmlParsers diff --git a/java/ql/lib/semmle/code/java/frameworks/owasp/Esapi.qll b/java/ql/lib/semmle/code/java/frameworks/owasp/Esapi.qll index 19cabda7073f..fe95cd0d39d3 100644 --- a/java/ql/lib/semmle/code/java/frameworks/owasp/Esapi.qll +++ b/java/ql/lib/semmle/code/java/frameworks/owasp/Esapi.qll @@ -1,4 +1,6 @@ /** Classes and predicates for reasoning about the `owasp.easpi` package. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/play/Play.qll b/java/ql/lib/semmle/code/java/frameworks/play/Play.qll index 7b99b23704e3..bbf6385fc0ad 100644 --- a/java/ql/lib/semmle/code/java/frameworks/play/Play.qll +++ b/java/ql/lib/semmle/code/java/frameworks/play/Play.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with the Play framework. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/ratpack/RatpackExec.qll b/java/ql/lib/semmle/code/java/frameworks/ratpack/RatpackExec.qll index 7efa72c3164a..f8259e95a2ee 100644 --- a/java/ql/lib/semmle/code/java/frameworks/ratpack/RatpackExec.qll +++ b/java/ql/lib/semmle/code/java/frameworks/ratpack/RatpackExec.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates related to `ratpack.exec.*`. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/rundeck/RundeckXml.qll b/java/ql/lib/semmle/code/java/frameworks/rundeck/RundeckXml.qll index 0f271e073e6e..78e7fbf30a9b 100644 --- a/java/ql/lib/semmle/code/java/frameworks/rundeck/RundeckXml.qll +++ b/java/ql/lib/semmle/code/java/frameworks/rundeck/RundeckXml.qll @@ -1,4 +1,6 @@ /** Provides definitions related to XML parsing in Rundeck. */ +overlay[local?] +module; import java private import semmle.code.java.security.XmlParsers diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/Spring.qll b/java/ql/lib/semmle/code/java/frameworks/spring/Spring.qll index 2b09288610e4..1c9c67838d48 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/Spring.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/Spring.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringAbstractRef import semmle.code.java.frameworks.spring.SpringAlias diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringAbstractRef.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringAbstractRef.qll index 4dd4b0ab9478..23ea64bd898e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringAbstractRef.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringAbstractRef.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement import semmle.code.java.frameworks.spring.SpringBean diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringAlias.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringAlias.qll index cbc4f025dacd..aab0bba6be2b 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringAlias.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringAlias.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement import semmle.code.java.frameworks.spring.SpringBean diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringArgType.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringArgType.qll index bddf5f01f9ea..37a162cc8901 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringArgType.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringArgType.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringAttribute.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringAttribute.qll index a20eef4d0d75..d99a28c56181 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringAttribute.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringAttribute.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringAutowire.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringAutowire.qll index 966db95afce6..e758811b368e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringAutowire.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringAutowire.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for identifying methods and constructors called by Spring injection. */ +overlay[local?] +module; import java import SpringComponentScan diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringBean.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringBean.qll index a53cbf67090f..ec06e9f28905 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringBean.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringBean.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement import semmle.code.java.frameworks.spring.SpringBeanRefType diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringBeanFile.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringBeanFile.qll index d96f264b91f5..810182d8f1f0 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringBeanFile.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringBeanFile.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringBean diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringBeanRefType.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringBeanRefType.qll index 4d85a56ab2bf..490fe3e05610 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringBeanRefType.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringBeanRefType.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringBean diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringBoot.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringBoot.qll index d77e4549e4e7..155afd41ba5e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringBoot.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringBoot.qll @@ -2,6 +2,8 @@ * Provides classes for working with Spring classes and interfaces from * `org.springframework.boot.*`. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll index 6fec620ccd55..28108865af41 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for identifying Spring integration for the Apache Camel messaging framework. */ +overlay[local?] +module; import java import semmle.code.java.frameworks.spring.SpringXMLElement diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringComponentScan.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringComponentScan.qll index d285e9d0e6a5..b5b3e9834c05 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringComponentScan.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringComponentScan.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringAutowire import semmle.code.java.frameworks.spring.SpringXMLElement diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringConstructorArg.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringConstructorArg.qll index e434e53ca3dd..3f0cc6a25af2 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringConstructorArg.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringConstructorArg.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement import semmle.code.java.frameworks.spring.SpringBean diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringController.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringController.qll index c93993336d95..ee00433da129 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringController.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringController.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.Maps import SpringWeb diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringDescription.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringDescription.qll index 34cf13a95716..5bcc2e896eb1 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringDescription.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringDescription.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringEntry.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringEntry.qll index e2ce38ea44e0..a568a6ee8c77 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringEntry.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringEntry.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement import semmle.code.java.frameworks.spring.SpringBean diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringExpression.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringExpression.qll index 49ec6e1fd8a5..aa02643d698e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringExpression.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringExpression.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with the Spring Expression Language (SpEL). */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringFlex.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringFlex.qll index af0afa91f4c3..a7b1b655693b 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringFlex.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringFlex.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for the Spring BlazeDS integration. BlazeDS allows Java applications to integrate with * Apache Flex applications, which are ultimately deployed as Adobe Flash applications. */ +overlay[local?] +module; import java import semmle.code.java.frameworks.spring.SpringBean diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringHttp.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringHttp.qll index e12e2b2643a0..5f9271c01490 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringHttp.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringHttp.qll @@ -2,6 +2,8 @@ * Provides classes for working with Spring classes and interfaces from * `org.springframework.http`. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringIdRef.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringIdRef.qll index 0b8b3e3a87b4..6dc2b313841a 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringIdRef.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringIdRef.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringAbstractRef diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringImport.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringImport.qll index 688a14da32e2..1081b157d224 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringImport.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringImport.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringInitializingBean.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringInitializingBean.qll index 216333da38ae..2766df0b8bc9 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringInitializingBean.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringInitializingBean.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java /** diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringKey.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringKey.qll index 5f07b2277067..b48834dc738e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringKey.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringKey.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringList.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringList.qll index 455fb956eb19..7e9b3423f888 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringList.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringList.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringListOrSet diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringListOrSet.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringListOrSet.qll index 521795d8b221..075cf7b7d8b4 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringListOrSet.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringListOrSet.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringMergable diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringLookupMethod.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringLookupMethod.qll index 4b17c23612a6..7371991cdaa6 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringLookupMethod.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringLookupMethod.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement import semmle.code.java.frameworks.spring.SpringBean diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringMap.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringMap.qll index 19b2cfffdac7..a5766d7c7111 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringMap.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringMap.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringMergable diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringMergable.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringMergable.qll index baef7d3b91af..94402918b8ee 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringMergable.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringMergable.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringMeta.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringMeta.qll index 640305b313a2..d4a524c3502f 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringMeta.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringMeta.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringNull.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringNull.qll index c3f2c00a2b72..f08746dae5a3 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringNull.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringNull.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringProfile.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringProfile.qll index 48a2b3679901..2d8a4577e567 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringProfile.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringProfile.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringComponentScan diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringProp.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringProp.qll index 771370a3e7a1..96da7fa271c5 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringProp.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringProp.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringProperty.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringProperty.qll index a83eeed13fab..aec85de58d4e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringProperty.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringProperty.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement import semmle.code.java.frameworks.spring.SpringBean diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringProps.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringProps.qll index 59a094f67612..00e7e8e52536 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringProps.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringProps.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringMergable diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringQualifier.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringQualifier.qll index eb57b37efe0a..ad927f48cbbc 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringQualifier.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringQualifier.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringRef.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringRef.qll index 89d58ff47fcd..8b799d632c23 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringRef.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringRef.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringAbstractRef diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringReplacedMethod.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringReplacedMethod.qll index 47e8d182898a..cf32c940f864 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringReplacedMethod.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringReplacedMethod.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement import semmle.code.java.frameworks.spring.SpringBean diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringSecurity.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringSecurity.qll index 835b679d50a6..694dae05773a 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringSecurity.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringSecurity.qll @@ -2,6 +2,8 @@ * Provides classes for working with Spring classes and interfaces from * `org.springframework.security.*`. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringSet.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringSet.qll index 21aca5ff54eb..4f75d08401b7 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringSet.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringSet.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringListOrSet diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringValue.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringValue.qll index 55854d60f9c7..68cdfa7efcc2 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringValue.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringValue.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringXMLElement diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringWeb.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringWeb.qll index 88db87e7e21e..362d4b323648 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringWeb.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringWeb.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with Spring web requests. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringWebClient.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringWebClient.qll index e84108394704..0580415a3448 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringWebClient.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringWebClient.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with Spring web clients. */ +overlay[local?] +module; import java import SpringHttp diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringXMLElement.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringXMLElement.qll index 312cd659b398..21bea51cd223 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringXMLElement.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringXMLElement.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.spring.SpringBeanFile import semmle.code.java.frameworks.spring.SpringBean diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/metrics/MetricSpringBean.qll b/java/ql/lib/semmle/code/java/frameworks/spring/metrics/MetricSpringBean.qll index ffbc5c9e5ecc..7624d4665719 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/metrics/MetricSpringBean.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/metrics/MetricSpringBean.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import semmle.code.java.frameworks.spring.SpringBean import semmle.code.java.frameworks.spring.SpringBeanFile import semmle.code.java.frameworks.spring.SpringEntry diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/metrics/MetricSpringBeanFile.qll b/java/ql/lib/semmle/code/java/frameworks/spring/metrics/MetricSpringBeanFile.qll index 999e34d1cea3..45d432848838 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/metrics/MetricSpringBeanFile.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/metrics/MetricSpringBeanFile.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import semmle.code.java.frameworks.spring.SpringBean import semmle.code.java.frameworks.spring.SpringBeanFile import semmle.code.java.frameworks.spring.metrics.MetricSpringBean diff --git a/java/ql/lib/semmle/code/java/frameworks/stapler/Stapler.qll b/java/ql/lib/semmle/code/java/frameworks/stapler/Stapler.qll index 599a08094dd4..28ca95b55413 100644 --- a/java/ql/lib/semmle/code/java/frameworks/stapler/Stapler.qll +++ b/java/ql/lib/semmle/code/java/frameworks/stapler/Stapler.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates related to the Stapler framework. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/frameworks/struts/Struts2Serializability.qll b/java/ql/lib/semmle/code/java/frameworks/struts/Struts2Serializability.qll index cb8b876be7ad..f9981a30393e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/struts/Struts2Serializability.qll +++ b/java/ql/lib/semmle/code/java/frameworks/struts/Struts2Serializability.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for working with objects bound from Http requests in the context of * the Struts2 web framework. */ +overlay[local?] +module; import java private import semmle.code.java.Serializability diff --git a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsActions.qll b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsActions.qll index 4200e83d4db2..641fb0c6e6f4 100644 --- a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsActions.qll +++ b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsActions.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.struts.StrutsConventions import semmle.code.java.frameworks.struts.StrutsXML @@ -130,7 +133,7 @@ class Struts2PrepareMethod extends Method { */ class Struts2ActionSupportClass extends Class { Struts2ActionSupportClass() { - this.getAStrictAncestor().hasQualifiedName("com.opensymphony.xwork2", "ActionSupport") + this.getASourceSupertype+().hasQualifiedName("com.opensymphony.xwork2", "ActionSupport") } /** diff --git a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsAnnotations.qll b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsAnnotations.qll index d97415354b35..823951b1d3c5 100644 --- a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsAnnotations.qll +++ b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsAnnotations.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java /** diff --git a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsConventions.qll b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsConventions.qll index 17ff35371945..3e2fd5c0b974 100644 --- a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsConventions.qll +++ b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsConventions.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java import semmle.code.java.frameworks.struts.StrutsAnnotations import semmle.code.java.frameworks.struts.StrutsXML diff --git a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsXML.qll b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsXML.qll index 273034978d17..33131a1641da 100644 --- a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsXML.qll +++ b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsXML.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java /** diff --git a/java/ql/lib/semmle/code/java/metrics/MetricCallable.qll b/java/ql/lib/semmle/code/java/metrics/MetricCallable.qll index d3dca781e54b..e6fa5d9e5c26 100644 --- a/java/ql/lib/semmle/code/java/metrics/MetricCallable.qll +++ b/java/ql/lib/semmle/code/java/metrics/MetricCallable.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for computing metrics on Java methods and constructors. */ +overlay[local?] +module; import semmle.code.java.Member diff --git a/java/ql/lib/semmle/code/java/metrics/MetricElement.qll b/java/ql/lib/semmle/code/java/metrics/MetricElement.qll index 086389e143cd..f9d57df7f800 100644 --- a/java/ql/lib/semmle/code/java/metrics/MetricElement.qll +++ b/java/ql/lib/semmle/code/java/metrics/MetricElement.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for computing metrics on Java elements. */ +overlay[local?] +module; import semmle.code.java.Element import semmle.code.java.Type diff --git a/java/ql/lib/semmle/code/java/metrics/MetricField.qll b/java/ql/lib/semmle/code/java/metrics/MetricField.qll index ef8e692ba5f8..32e3b263c282 100644 --- a/java/ql/lib/semmle/code/java/metrics/MetricField.qll +++ b/java/ql/lib/semmle/code/java/metrics/MetricField.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for computing metrics on Java fields. */ +overlay[local?] +module; import semmle.code.java.Member diff --git a/java/ql/lib/semmle/code/java/metrics/MetricPackage.qll b/java/ql/lib/semmle/code/java/metrics/MetricPackage.qll index eafdd57dd8ac..fa7556316429 100644 --- a/java/ql/lib/semmle/code/java/metrics/MetricPackage.qll +++ b/java/ql/lib/semmle/code/java/metrics/MetricPackage.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for computing metrics on Java packages. */ +overlay[local?] +module; import semmle.code.java.Package import MetricElement diff --git a/java/ql/lib/semmle/code/java/metrics/MetricRefType.qll b/java/ql/lib/semmle/code/java/metrics/MetricRefType.qll index 17271394b2e6..1652a1200708 100644 --- a/java/ql/lib/semmle/code/java/metrics/MetricRefType.qll +++ b/java/ql/lib/semmle/code/java/metrics/MetricRefType.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for computing metrics on Java classes and interfaces. */ +overlay[local?] +module; import semmle.code.java.Type import MetricElement diff --git a/java/ql/lib/semmle/code/java/metrics/MetricStmt.qll b/java/ql/lib/semmle/code/java/metrics/MetricStmt.qll index b818c30edf6f..bc2cf5ae1072 100644 --- a/java/ql/lib/semmle/code/java/metrics/MetricStmt.qll +++ b/java/ql/lib/semmle/code/java/metrics/MetricStmt.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for computing metrics on Java statements. */ +overlay[local?] +module; import semmle.code.java.Statement diff --git a/java/ql/lib/semmle/code/java/os/OSCheck.qll b/java/ql/lib/semmle/code/java/os/OSCheck.qll index e3b3e56f72ce..97ad27c83dfb 100644 --- a/java/ql/lib/semmle/code/java/os/OSCheck.qll +++ b/java/ql/lib/semmle/code/java/os/OSCheck.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for guards that check for the current OS. */ +overlay[local?] +module; import java import semmle.code.java.controlflow.Guards diff --git a/java/ql/lib/semmle/code/java/regex/RegexFlowConfigs.qll b/java/ql/lib/semmle/code/java/regex/RegexFlowConfigs.qll index 763b96f5a02d..6a934bdd5785 100644 --- a/java/ql/lib/semmle/code/java/regex/RegexFlowConfigs.qll +++ b/java/ql/lib/semmle/code/java/regex/RegexFlowConfigs.qll @@ -1,6 +1,8 @@ /** * Defines configurations and steps for handling regexes */ +overlay[local?] +module; import java import semmle.code.java.dataflow.ExternalFlow diff --git a/java/ql/lib/semmle/code/java/regex/RegexTreeView.qll b/java/ql/lib/semmle/code/java/regex/RegexTreeView.qll index a07d7c741faa..0fe4b47ec485 100644 --- a/java/ql/lib/semmle/code/java/regex/RegexTreeView.qll +++ b/java/ql/lib/semmle/code/java/regex/RegexTreeView.qll @@ -1,4 +1,6 @@ /** Provides a class hierarchy corresponding to a parse tree of regular expressions. */ +overlay[local?] +module; private import semmle.code.java.regex.regex as RE // importing under a namescape to avoid naming conflict for `Top`. private import codeql.regex.nfa.NfaUtils as NfaUtils diff --git a/java/ql/lib/semmle/code/java/regex/regex.qll b/java/ql/lib/semmle/code/java/regex/regex.qll index f0336c2d0235..13f398699663 100644 --- a/java/ql/lib/semmle/code/java/regex/regex.qll +++ b/java/ql/lib/semmle/code/java/regex/regex.qll @@ -1,6 +1,8 @@ /** * Definitions for parsing regular expressions. */ +overlay[local?] +module; import java private import RegexFlowConfigs diff --git a/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll b/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll index 56c45611b142..08a86092afbb 100644 --- a/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll +++ b/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about Android Intent redirect vulnerabilities. */ +overlay[local?] +module; import java private import semmle.code.java.controlflow.Guards diff --git a/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll b/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll index 4a31dc2568d1..aaa7dbc562b8 100644 --- a/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll +++ b/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll @@ -1,4 +1,6 @@ /** Definitions for the insecure local authentication query. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/AndroidWebViewCertificateValidationQuery.qll b/java/ql/lib/semmle/code/java/security/AndroidWebViewCertificateValidationQuery.qll index 8d53766e0080..728eca0eaf10 100644 --- a/java/ql/lib/semmle/code/java/security/AndroidWebViewCertificateValidationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/AndroidWebViewCertificateValidationQuery.qll @@ -1,4 +1,6 @@ /** Definitions for the web view certificate validation query */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/security/ArbitraryApkInstallation.qll b/java/ql/lib/semmle/code/java/security/ArbitraryApkInstallation.qll index 0402aca69872..8600ecda7ad1 100644 --- a/java/ql/lib/semmle/code/java/security/ArbitraryApkInstallation.qll +++ b/java/ql/lib/semmle/code/java/security/ArbitraryApkInstallation.qll @@ -1,4 +1,6 @@ /** Provide classes to reason about Android Intents that can install APKs. */ +overlay[local?] +module; import java import semmle.code.java.frameworks.android.Intent diff --git a/java/ql/lib/semmle/code/java/security/ArbitraryApkInstallationQuery.qll b/java/ql/lib/semmle/code/java/security/ArbitraryApkInstallationQuery.qll index be8eea879c50..8c833bb79d60 100644 --- a/java/ql/lib/semmle/code/java/security/ArbitraryApkInstallationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ArbitraryApkInstallationQuery.qll @@ -23,6 +23,10 @@ module ApkInstallationConfig implements DataFlow::ConfigSig { ) ) } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module ApkInstallationFlow = DataFlow::Global; diff --git a/java/ql/lib/semmle/code/java/security/ArithmeticCommon.qll b/java/ql/lib/semmle/code/java/security/ArithmeticCommon.qll index 785dce3da7ed..e0d6ff305c30 100644 --- a/java/ql/lib/semmle/code/java/security/ArithmeticCommon.qll +++ b/java/ql/lib/semmle/code/java/security/ArithmeticCommon.qll @@ -1,4 +1,6 @@ /** Provides guards and predicates to reason about arithmetic. */ +overlay[local?] +module; import semmle.code.java.arithmetic.Overflow import semmle.code.java.controlflow.Guards @@ -7,7 +9,6 @@ private import semmle.code.java.dataflow.DataFlow private import semmle.code.java.dataflow.RangeAnalysis private import semmle.code.java.dataflow.RangeUtils private import semmle.code.java.dataflow.SignAnalysis -private import semmle.code.java.controlflow.internal.GuardsLogic /** * Holds if the type of `exp` is narrower than or equal to `numType`, diff --git a/java/ql/lib/semmle/code/java/security/CleartextStorageCookieQuery.qll b/java/ql/lib/semmle/code/java/security/CleartextStorageCookieQuery.qll index 1f262ad57d61..1c99821386da 100644 --- a/java/ql/lib/semmle/code/java/security/CleartextStorageCookieQuery.qll +++ b/java/ql/lib/semmle/code/java/security/CleartextStorageCookieQuery.qll @@ -7,7 +7,17 @@ private import semmle.code.java.dataflow.FlowSinks private import semmle.code.java.dataflow.FlowSources private class CookieCleartextStorageSink extends CleartextStorageSink { - CookieCleartextStorageSink() { this.asExpr() = cookieInput(_) } + Cookie cookie; + + CookieCleartextStorageSink() { this.asExpr() = cookieInput(cookie) } + + override Location getASelectedLocation() { + result = this.getLocation() + or + result = cookie.getLocation() + or + result = cookie.getAStore().getLocation() + } } /** The instantiation of a cookie, which can act as storage. */ diff --git a/java/ql/lib/semmle/code/java/security/CleartextStorageQuery.qll b/java/ql/lib/semmle/code/java/security/CleartextStorageQuery.qll index a607fd8c8d2b..21d82bef657e 100644 --- a/java/ql/lib/semmle/code/java/security/CleartextStorageQuery.qll +++ b/java/ql/lib/semmle/code/java/security/CleartextStorageQuery.qll @@ -5,7 +5,14 @@ private import semmle.code.java.dataflow.TaintTracking private import semmle.code.java.security.SensitiveActions /** A sink representing persistent storage that saves data in clear text. */ -abstract class CleartextStorageSink extends DataFlow::Node { } +abstract class CleartextStorageSink extends DataFlow::Node { + /** + * Gets a location that will be selected in the diff-informed query where + * this sink is found. If this has no results for any sink, that's taken to + * mean the query is not diff-informed. + */ + Location getASelectedLocation() { none() } +} /** A sanitizer for flows tracking sensitive data being stored in persistent storage. */ abstract class CleartextStorageSanitizer extends DataFlow::Node { } @@ -46,6 +53,17 @@ private module SensitiveSourceFlowConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) { any(CleartextStorageAdditionalTaintStep c).step(n1, n2) } + + predicate observeDiffInformedIncrementalMode() { + // This configuration is used by several queries. A query can opt in to + // diff-informed mode by implementing `getASelectedLocation` on its sinks, + // indicating that it has considered which sinks are selected. + exists(CleartextStorageSink sink | exists(sink.getASelectedLocation())) + } + + Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.(CleartextStorageSink).getASelectedLocation() + } } private module SensitiveSourceFlow = TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/CommandArguments.qll b/java/ql/lib/semmle/code/java/security/CommandArguments.qll index eb4f589ac7f7..f161a83d17b0 100644 --- a/java/ql/lib/semmle/code/java/security/CommandArguments.qll +++ b/java/ql/lib/semmle/code/java/security/CommandArguments.qll @@ -1,6 +1,8 @@ /** * Definitions for reasoning about lists and arrays that are to be used as arguments to an external process. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.SSA diff --git a/java/ql/lib/semmle/code/java/security/ControlledString.qll b/java/ql/lib/semmle/code/java/security/ControlledString.qll index c760bf14e855..fa201b2e8b6f 100644 --- a/java/ql/lib/semmle/code/java/security/ControlledString.qll +++ b/java/ql/lib/semmle/code/java/security/ControlledString.qll @@ -3,6 +3,8 @@ * There is positive evidence that they are fully controlled by * the program source code. */ +overlay[local?] +module; import semmle.code.java.Expr import semmle.code.java.security.Validation diff --git a/java/ql/lib/semmle/code/java/security/Cookies.qll b/java/ql/lib/semmle/code/java/security/Cookies.qll index 202f18921ca6..b4db1b8fe467 100644 --- a/java/ql/lib/semmle/code/java/security/Cookies.qll +++ b/java/ql/lib/semmle/code/java/security/Cookies.qll @@ -1,4 +1,6 @@ /** Provides definitions to reason about HTTP cookies. */ +overlay[local?] +module; import java private import semmle.code.java.frameworks.Netty diff --git a/java/ql/lib/semmle/code/java/security/Encryption.qll b/java/ql/lib/semmle/code/java/security/Encryption.qll index ee8c1f5fbedc..b948a94962c7 100644 --- a/java/ql/lib/semmle/code/java/security/Encryption.qll +++ b/java/ql/lib/semmle/code/java/security/Encryption.qll @@ -1,6 +1,8 @@ /** * Provides predicates and classes relating to encryption in Java. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll b/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll index 360493e26356..809f45aa45a3 100644 --- a/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll +++ b/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll @@ -2,6 +2,8 @@ * Definitions for reasoning about untrusted data used in APIs defined outside the * database. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.FlowSources diff --git a/java/ql/lib/semmle/code/java/security/ExternalProcess.qll b/java/ql/lib/semmle/code/java/security/ExternalProcess.qll index 58f7457e9e30..600a45e509a0 100644 --- a/java/ql/lib/semmle/code/java/security/ExternalProcess.qll +++ b/java/ql/lib/semmle/code/java/security/ExternalProcess.qll @@ -1,4 +1,6 @@ /** Definitions related to external processes. */ +overlay[local?] +module; import semmle.code.java.Member private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/FileReadWrite.qll b/java/ql/lib/semmle/code/java/security/FileReadWrite.qll index 34d7ca1f2014..ae1b3f025a1a 100644 --- a/java/ql/lib/semmle/code/java/security/FileReadWrite.qll +++ b/java/ql/lib/semmle/code/java/security/FileReadWrite.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java /** diff --git a/java/ql/lib/semmle/code/java/security/FileWritable.qll b/java/ql/lib/semmle/code/java/security/FileWritable.qll index bb5d952802d1..d1833bf64d4d 100644 --- a/java/ql/lib/semmle/code/java/security/FileWritable.qll +++ b/java/ql/lib/semmle/code/java/security/FileWritable.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java /** diff --git a/java/ql/lib/semmle/code/java/security/FragmentInjection.qll b/java/ql/lib/semmle/code/java/security/FragmentInjection.qll index a22fad4d85e7..8cd5e32a5ecd 100644 --- a/java/ql/lib/semmle/code/java/security/FragmentInjection.qll +++ b/java/ql/lib/semmle/code/java/security/FragmentInjection.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates to reason about Android Fragment injection vulnerabilities. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.TaintTracking diff --git a/java/ql/lib/semmle/code/java/security/GroovyInjection.qll b/java/ql/lib/semmle/code/java/security/GroovyInjection.qll index ea688a26f6ec..45d664897775 100644 --- a/java/ql/lib/semmle/code/java/security/GroovyInjection.qll +++ b/java/ql/lib/semmle/code/java/security/GroovyInjection.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about Groovy code injection attacks. */ +overlay[local?] +module; private import semmle.code.java.dataflow.DataFlow private import semmle.code.java.dataflow.ExternalFlow diff --git a/java/ql/lib/semmle/code/java/security/HardcodedCredentials.qll b/java/ql/lib/semmle/code/java/security/HardcodedCredentials.qll index c8a12c72dadd..a0e68c3552c2 100644 --- a/java/ql/lib/semmle/code/java/security/HardcodedCredentials.qll +++ b/java/ql/lib/semmle/code/java/security/HardcodedCredentials.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates relating to hardcoded credentials. */ +overlay[local?] +module; import java import SensitiveApi diff --git a/java/ql/lib/semmle/code/java/security/HardcodedCredentialsApiCallQuery.qll b/java/ql/lib/semmle/code/java/security/HardcodedCredentialsApiCallQuery.qll index f623973a6573..c0e04424ec68 100644 --- a/java/ql/lib/semmle/code/java/security/HardcodedCredentialsApiCallQuery.qll +++ b/java/ql/lib/semmle/code/java/security/HardcodedCredentialsApiCallQuery.qll @@ -49,6 +49,8 @@ module HardcodedCredentialApiCallConfig implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node n) { n.asExpr().(MethodCall).getMethod() instanceof MethodSystemGetenv } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/java/ql/lib/semmle/code/java/security/HardcodedCredentialsComparison.qll b/java/ql/lib/semmle/code/java/security/HardcodedCredentialsComparison.qll index d15d9d05d301..c6ad9458ba91 100644 --- a/java/ql/lib/semmle/code/java/security/HardcodedCredentialsComparison.qll +++ b/java/ql/lib/semmle/code/java/security/HardcodedCredentialsComparison.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates to detect comparing a parameter to a hard-coded credential. */ +overlay[local?] +module; import java import HardcodedCredentials diff --git a/java/ql/lib/semmle/code/java/security/HardcodedCredentialsSourceCallQuery.qll b/java/ql/lib/semmle/code/java/security/HardcodedCredentialsSourceCallQuery.qll index 06d7869ce996..e3b5b235a4eb 100644 --- a/java/ql/lib/semmle/code/java/security/HardcodedCredentialsSourceCallQuery.qll +++ b/java/ql/lib/semmle/code/java/security/HardcodedCredentialsSourceCallQuery.qll @@ -14,6 +14,8 @@ module HardcodedCredentialSourceCallConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node n) { n.asExpr() instanceof HardcodedExpr } predicate isSink(DataFlow::Node n) { n.asExpr() instanceof FinalCredentialsSourceSink } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/java/ql/lib/semmle/code/java/security/HardcodedPasswordField.qll b/java/ql/lib/semmle/code/java/security/HardcodedPasswordField.qll index 995428b8e94f..03b3f7500809 100644 --- a/java/ql/lib/semmle/code/java/security/HardcodedPasswordField.qll +++ b/java/ql/lib/semmle/code/java/security/HardcodedPasswordField.qll @@ -1,6 +1,8 @@ /** * Provides a predicate identifying assignments of harcoded values to password fields. */ +overlay[local?] +module; import java import HardcodedCredentials diff --git a/java/ql/lib/semmle/code/java/security/HttpsUrls.qll b/java/ql/lib/semmle/code/java/security/HttpsUrls.qll index b56b8ba9c9f5..071f95b49902 100644 --- a/java/ql/lib/semmle/code/java/security/HttpsUrls.qll +++ b/java/ql/lib/semmle/code/java/security/HttpsUrls.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates to reason about plaintext HTTP vulnerabilities. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/HttpsUrlsQuery.qll b/java/ql/lib/semmle/code/java/security/HttpsUrlsQuery.qll index 031066d506e0..1e67e3ca59a7 100644 --- a/java/ql/lib/semmle/code/java/security/HttpsUrlsQuery.qll +++ b/java/ql/lib/semmle/code/java/security/HttpsUrlsQuery.qll @@ -19,6 +19,8 @@ module HttpStringToUrlOpenMethodFlowConfig implements DataFlow::ConfigSig { } predicate isBarrier(DataFlow::Node node) { node instanceof SimpleTypeSanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/java/ql/lib/semmle/code/java/security/ImplicitPendingIntents.qll b/java/ql/lib/semmle/code/java/security/ImplicitPendingIntents.qll index 650527e88e45..94951c10c532 100644 --- a/java/ql/lib/semmle/code/java/security/ImplicitPendingIntents.qll +++ b/java/ql/lib/semmle/code/java/security/ImplicitPendingIntents.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for working with implicit `PendingIntent`s. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.ExternalFlow diff --git a/java/ql/lib/semmle/code/java/security/ImplicitPendingIntentsQuery.qll b/java/ql/lib/semmle/code/java/security/ImplicitPendingIntentsQuery.qll index a57f643d8176..f66309c97bec 100644 --- a/java/ql/lib/semmle/code/java/security/ImplicitPendingIntentsQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ImplicitPendingIntentsQuery.qll @@ -1,4 +1,6 @@ /** Provides taint tracking configurations to be used in queries related to implicit `PendingIntent`s. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.TaintTracking diff --git a/java/ql/lib/semmle/code/java/security/ImplicitlyExportedAndroidComponent.qll b/java/ql/lib/semmle/code/java/security/ImplicitlyExportedAndroidComponent.qll index 4aa21c4a260b..11cfcb1c6e57 100644 --- a/java/ql/lib/semmle/code/java/security/ImplicitlyExportedAndroidComponent.qll +++ b/java/ql/lib/semmle/code/java/security/ImplicitlyExportedAndroidComponent.qll @@ -1,4 +1,6 @@ /** Provides a class to identify implicitly exported Android components. */ +overlay[local?] +module; private import semmle.code.xml.AndroidManifest diff --git a/java/ql/lib/semmle/code/java/security/InformationLeak.qll b/java/ql/lib/semmle/code/java/security/InformationLeak.qll index 8fe7d2151650..ba7a7a52a707 100644 --- a/java/ql/lib/semmle/code/java/security/InformationLeak.qll +++ b/java/ql/lib/semmle/code/java/security/InformationLeak.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about System Information Leak vulnerabilities. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/InsecureBasicAuth.qll b/java/ql/lib/semmle/code/java/security/InsecureBasicAuth.qll index b21492406adf..9d26077396bf 100644 --- a/java/ql/lib/semmle/code/java/security/InsecureBasicAuth.qll +++ b/java/ql/lib/semmle/code/java/security/InsecureBasicAuth.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates to reason about Insecure Basic Authentication vulnerabilities. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/InsecureBasicAuthQuery.qll b/java/ql/lib/semmle/code/java/security/InsecureBasicAuthQuery.qll index 9e69308e458e..e2c188d956b8 100644 --- a/java/ql/lib/semmle/code/java/security/InsecureBasicAuthQuery.qll +++ b/java/ql/lib/semmle/code/java/security/InsecureBasicAuthQuery.qll @@ -17,6 +17,8 @@ module BasicAuthFlowConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { any(HttpUrlsAdditionalTaintStep c).step(node1, node2) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/java/ql/lib/semmle/code/java/security/InsecureLdapAuth.qll b/java/ql/lib/semmle/code/java/security/InsecureLdapAuth.qll index 52d58afc9e76..117484b0241e 100644 --- a/java/ql/lib/semmle/code/java/security/InsecureLdapAuth.qll +++ b/java/ql/lib/semmle/code/java/security/InsecureLdapAuth.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about insecure LDAP authentication. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/InsecureTrustManager.qll b/java/ql/lib/semmle/code/java/security/InsecureTrustManager.qll index 41d8f28573ca..54e2b00b8f4b 100644 --- a/java/ql/lib/semmle/code/java/security/InsecureTrustManager.qll +++ b/java/ql/lib/semmle/code/java/security/InsecureTrustManager.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates to reason about insecure `TrustManager`s. */ +overlay[local?] +module; import java private import semmle.code.java.controlflow.Guards diff --git a/java/ql/lib/semmle/code/java/security/InsufficientKeySize.qll b/java/ql/lib/semmle/code/java/security/InsufficientKeySize.qll index 1f80136fdf19..6d28a124b854 100644 --- a/java/ql/lib/semmle/code/java/security/InsufficientKeySize.qll +++ b/java/ql/lib/semmle/code/java/security/InsufficientKeySize.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates related to insufficient key sizes in Java. */ +overlay[local?] +module; private import semmle.code.java.security.Encryption private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/InsufficientKeySizeQuery.qll b/java/ql/lib/semmle/code/java/security/InsufficientKeySizeQuery.qll index 876b2efd8409..d105db336101 100644 --- a/java/ql/lib/semmle/code/java/security/InsufficientKeySizeQuery.qll +++ b/java/ql/lib/semmle/code/java/security/InsufficientKeySizeQuery.qll @@ -1,4 +1,6 @@ /** Provides data flow configurations to be used in queries related to insufficient key sizes. */ +overlay[local?] +module; import semmle.code.java.dataflow.DataFlow import semmle.code.java.security.InsufficientKeySize diff --git a/java/ql/lib/semmle/code/java/security/IntentUriPermissionManipulation.qll b/java/ql/lib/semmle/code/java/security/IntentUriPermissionManipulation.qll index 2f9470f2bb9a..5ba3a6723467 100644 --- a/java/ql/lib/semmle/code/java/security/IntentUriPermissionManipulation.qll +++ b/java/ql/lib/semmle/code/java/security/IntentUriPermissionManipulation.qll @@ -2,6 +2,8 @@ * Provides classes and predicates to reason about Intent URI permission manipulation * vulnerabilities on Android. */ +overlay[local?] +module; import java private import semmle.code.java.controlflow.Guards diff --git a/java/ql/lib/semmle/code/java/security/JWT.qll b/java/ql/lib/semmle/code/java/security/JWT.qll index c282d32ea099..3f546d4edc05 100644 --- a/java/ql/lib/semmle/code/java/security/JWT.qll +++ b/java/ql/lib/semmle/code/java/security/JWT.qll @@ -1,4 +1,6 @@ /** Provides classes for working with JSON Web Token (JWT) libraries. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.FlowSinks diff --git a/java/ql/lib/semmle/code/java/security/JndiInjection.qll b/java/ql/lib/semmle/code/java/security/JndiInjection.qll index 3df8d6df378e..0e61a53c0ab0 100644 --- a/java/ql/lib/semmle/code/java/security/JndiInjection.qll +++ b/java/ql/lib/semmle/code/java/security/JndiInjection.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about JNDI injection vulnerabilities. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/LdapInjection.qll b/java/ql/lib/semmle/code/java/security/LdapInjection.qll index 54c8e28ba63d..ff92d40cf556 100644 --- a/java/ql/lib/semmle/code/java/security/LdapInjection.qll +++ b/java/ql/lib/semmle/code/java/security/LdapInjection.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about LDAP injection attacks. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.TaintTracking diff --git a/java/ql/lib/semmle/code/java/security/ListOfConstantsSanitizer.qll b/java/ql/lib/semmle/code/java/security/ListOfConstantsSanitizer.qll index cc57fbce648d..4294ac84f687 100644 --- a/java/ql/lib/semmle/code/java/security/ListOfConstantsSanitizer.qll +++ b/java/ql/lib/semmle/code/java/security/ListOfConstantsSanitizer.qll @@ -2,6 +2,8 @@ * Provides a default taint sanitizer identifying comparisons against lists of * compile-time constants. */ +overlay[local?] +module; import java private import codeql.typeflow.UniversalFlow as UniversalFlow diff --git a/java/ql/lib/semmle/code/java/security/LogInjection.qll b/java/ql/lib/semmle/code/java/security/LogInjection.qll index 554aa8e4ebc9..da5a1dc73a0c 100644 --- a/java/ql/lib/semmle/code/java/security/LogInjection.qll +++ b/java/ql/lib/semmle/code/java/security/LogInjection.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates related to Log Injection vulnerabilities. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/Mail.qll b/java/ql/lib/semmle/code/java/security/Mail.qll index 64bc22e4622f..5c68355ec3ee 100644 --- a/java/ql/lib/semmle/code/java/security/Mail.qll +++ b/java/ql/lib/semmle/code/java/security/Mail.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates to reason about email vulnerabilities. */ +overlay[local?] +module; import java import semmle.code.java.frameworks.Mail diff --git a/java/ql/lib/semmle/code/java/security/MvelInjection.qll b/java/ql/lib/semmle/code/java/security/MvelInjection.qll index a9773ffe1860..dc804d4a1854 100644 --- a/java/ql/lib/semmle/code/java/security/MvelInjection.qll +++ b/java/ql/lib/semmle/code/java/security/MvelInjection.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about MVEL injection attacks. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/OgnlInjection.qll b/java/ql/lib/semmle/code/java/security/OgnlInjection.qll index 37f31618fc32..e3f93b39ece1 100644 --- a/java/ql/lib/semmle/code/java/security/OgnlInjection.qll +++ b/java/ql/lib/semmle/code/java/security/OgnlInjection.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about OGNL injection vulnerabilities. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/PartialPathTraversal.qll b/java/ql/lib/semmle/code/java/security/PartialPathTraversal.qll index aaf578a6225f..63ffb62ef63b 100644 --- a/java/ql/lib/semmle/code/java/security/PartialPathTraversal.qll +++ b/java/ql/lib/semmle/code/java/security/PartialPathTraversal.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about partial path traversal vulnerabilities. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/PathSanitizer.qll b/java/ql/lib/semmle/code/java/security/PathSanitizer.qll index f3385c94646b..ed0761f6869e 100644 --- a/java/ql/lib/semmle/code/java/security/PathSanitizer.qll +++ b/java/ql/lib/semmle/code/java/security/PathSanitizer.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates to reason about sanitization of path injection vulnerabilities. */ +overlay[local?] +module; import java private import semmle.code.java.controlflow.Guards diff --git a/java/ql/lib/semmle/code/java/security/QueryInjection.qll b/java/ql/lib/semmle/code/java/security/QueryInjection.qll index df316155ba1a..583a41ce9335 100644 --- a/java/ql/lib/semmle/code/java/security/QueryInjection.qll +++ b/java/ql/lib/semmle/code/java/security/QueryInjection.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about database query language injection vulnerabilities. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/RandomDataSource.qll b/java/ql/lib/semmle/code/java/security/RandomDataSource.qll index b44bcc07efe2..f040c858d9ce 100644 --- a/java/ql/lib/semmle/code/java/security/RandomDataSource.qll +++ b/java/ql/lib/semmle/code/java/security/RandomDataSource.qll @@ -1,6 +1,8 @@ /** * Defines classes representing random data sources. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.TypeFlow diff --git a/java/ql/lib/semmle/code/java/security/RelativePaths.qll b/java/ql/lib/semmle/code/java/security/RelativePaths.qll index 458bb7aea5d4..0c9e145268b6 100644 --- a/java/ql/lib/semmle/code/java/security/RelativePaths.qll +++ b/java/ql/lib/semmle/code/java/security/RelativePaths.qll @@ -1,4 +1,6 @@ /** Detection of strings and arrays of strings containing relative paths. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/security/RequestForgery.qll b/java/ql/lib/semmle/code/java/security/RequestForgery.qll index 1f3ce61406f7..5eb35c05cd47 100644 --- a/java/ql/lib/semmle/code/java/security/RequestForgery.qll +++ b/java/ql/lib/semmle/code/java/security/RequestForgery.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about server-side request forgery (SSRF) attacks. */ +overlay[local?] +module; import java import semmle.code.java.frameworks.Networking diff --git a/java/ql/lib/semmle/code/java/security/ResponseSplitting.qll b/java/ql/lib/semmle/code/java/security/ResponseSplitting.qll index 340f696db622..1238793ffd70 100644 --- a/java/ql/lib/semmle/code/java/security/ResponseSplitting.qll +++ b/java/ql/lib/semmle/code/java/security/ResponseSplitting.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about header splitting attacks. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/Sanitizers.qll b/java/ql/lib/semmle/code/java/security/Sanitizers.qll index 5340ba344823..21e7ccf264f9 100644 --- a/java/ql/lib/semmle/code/java/security/Sanitizers.qll +++ b/java/ql/lib/semmle/code/java/security/Sanitizers.qll @@ -1,4 +1,6 @@ /** Classes to represent sanitizers commonly used in dataflow and taint tracking configurations. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/SecurityFlag.qll b/java/ql/lib/semmle/code/java/security/SecurityFlag.qll index dab5d52bcb20..30718e3300fb 100644 --- a/java/ql/lib/semmle/code/java/security/SecurityFlag.qll +++ b/java/ql/lib/semmle/code/java/security/SecurityFlag.qll @@ -1,6 +1,8 @@ /** * Provides utility predicates to spot variable names, parameter names, and string literals that suggest deliberately insecure settings. */ +overlay[local?] +module; import java import semmle.code.java.controlflow.Guards diff --git a/java/ql/lib/semmle/code/java/security/SecurityTests.qll b/java/ql/lib/semmle/code/java/security/SecurityTests.qll index d2260de22a19..d8b714c18a1e 100644 --- a/java/ql/lib/semmle/code/java/security/SecurityTests.qll +++ b/java/ql/lib/semmle/code/java/security/SecurityTests.qll @@ -1,4 +1,6 @@ /** Test detection for the security pack. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/security/SensitiveActions.qll b/java/ql/lib/semmle/code/java/security/SensitiveActions.qll index 2320afb8eef0..6733219a8d5f 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveActions.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveActions.qll @@ -10,6 +10,8 @@ * in a fashion that the user can control. This includes authorization * methods such as logins, and sending of data, etc. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/security/SensitiveApi.qll b/java/ql/lib/semmle/code/java/security/SensitiveApi.qll index 559919f792ec..408fe73f904b 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveApi.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveApi.qll @@ -1,6 +1,8 @@ /** * Provides predicates defining methods that consume sensitive data, such as usernames and passwords. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/SensitiveUiQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveUiQuery.qll index a7e76d0e2e31..ea58c08e07ce 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveUiQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveUiQuery.qll @@ -19,6 +19,8 @@ private module NotificationTrackingConfig implements DataFlow::ConfigSig { } predicate isBarrierIn(DataFlow::Node node) { isSource(node) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Taint tracking flow for sensitive data flowing to system notifications. */ @@ -75,6 +77,8 @@ private module TextFieldTrackingConfig implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node node) { node instanceof SimpleTypeSanitizer } predicate isBarrierIn(DataFlow::Node node) { isSource(node) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** A local flow step that also flows through access to fields containing `View`s */ diff --git a/java/ql/lib/semmle/code/java/security/SpelInjection.qll b/java/ql/lib/semmle/code/java/security/SpelInjection.qll index 13eb195eae46..3c36b207ac03 100644 --- a/java/ql/lib/semmle/code/java/security/SpelInjection.qll +++ b/java/ql/lib/semmle/code/java/security/SpelInjection.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about SpEL injection attacks. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/SpringBootActuatorsQuery.qll b/java/ql/lib/semmle/code/java/security/SpringBootActuatorsQuery.qll index 68c20adabdd1..9fb4e753aab5 100644 --- a/java/ql/lib/semmle/code/java/security/SpringBootActuatorsQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SpringBootActuatorsQuery.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates to reason about exposed actuators in Spring Boot. */ +overlay[local?] +module; import java private import semmle.code.java.frameworks.spring.SpringSecurity diff --git a/java/ql/lib/semmle/code/java/security/SpringCsrfProtection.qll b/java/ql/lib/semmle/code/java/security/SpringCsrfProtection.qll index c4259ee5b9de..88a53ef13e75 100644 --- a/java/ql/lib/semmle/code/java/security/SpringCsrfProtection.qll +++ b/java/ql/lib/semmle/code/java/security/SpringCsrfProtection.qll @@ -1,4 +1,6 @@ /** Provides predicates to reason about disabling CSRF protection in Spring. */ +overlay[local?] +module; import java diff --git a/java/ql/lib/semmle/code/java/security/SqlConcatenatedLib.qll b/java/ql/lib/semmle/code/java/security/SqlConcatenatedLib.qll index 5d3b1c803d22..2d59b18fa90e 100644 --- a/java/ql/lib/semmle/code/java/security/SqlConcatenatedLib.qll +++ b/java/ql/lib/semmle/code/java/security/SqlConcatenatedLib.qll @@ -1,4 +1,6 @@ /** Definitions used by `SqlConcatenated.ql`. */ +overlay[local?] +module; import semmle.code.java.security.ControlledString import semmle.code.java.dataflow.TaintTracking diff --git a/java/ql/lib/semmle/code/java/security/TempDirUtils.qll b/java/ql/lib/semmle/code/java/security/TempDirUtils.qll index 33b6c46b916c..3d1623fa334c 100644 --- a/java/ql/lib/semmle/code/java/security/TempDirUtils.qll +++ b/java/ql/lib/semmle/code/java/security/TempDirUtils.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for reasoning about temporary file/directory creations. */ +overlay[local?] +module; import java private import semmle.code.java.environment.SystemProperty diff --git a/java/ql/lib/semmle/code/java/security/TemplateInjection.qll b/java/ql/lib/semmle/code/java/security/TemplateInjection.qll index 0b703780a035..58c48bb7f224 100644 --- a/java/ql/lib/semmle/code/java/security/TemplateInjection.qll +++ b/java/ql/lib/semmle/code/java/security/TemplateInjection.qll @@ -1,4 +1,6 @@ /** Definitions related to the server-side template injection (SST) query. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.FlowSources diff --git a/java/ql/lib/semmle/code/java/security/UnsafeAndroidAccess.qll b/java/ql/lib/semmle/code/java/security/UnsafeAndroidAccess.qll index afd3af221bed..3137ad423e0e 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeAndroidAccess.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeAndroidAccess.qll @@ -1,6 +1,8 @@ /** * Provides classes to reason about Unsafe Resource Fetching vulnerabilities in Android. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/UnsafeAndroidAccessQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeAndroidAccessQuery.qll index 1c9d2809eba7..6fe849c7983e 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeAndroidAccessQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeAndroidAccessQuery.qll @@ -15,6 +15,8 @@ module FetchUntrustedResourceConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof UrlResourceSink } predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof RequestForgerySanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/java/ql/lib/semmle/code/java/security/UnsafeCertTrust.qll b/java/ql/lib/semmle/code/java/security/UnsafeCertTrust.qll index 60f0cef83847..61a76afecc8d 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeCertTrust.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeCertTrust.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates to reason about unsafe certificate trust vulnerablities. */ +overlay[local?] +module; import java private import semmle.code.java.frameworks.Networking diff --git a/java/ql/lib/semmle/code/java/security/UnsafeContentUriResolution.qll b/java/ql/lib/semmle/code/java/security/UnsafeContentUriResolution.qll index b19d06bbf88c..7cd10142a1e5 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeContentUriResolution.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeContentUriResolution.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about vulnerabilites related to content URIs. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.FlowSinks diff --git a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll index b16770c222b8..e10c6cebaf63 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll @@ -323,6 +323,10 @@ private module UnsafeDeserializationConfig implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node node) { isUnsafeDeserializationSanitizer(node) } predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.(UnsafeDeserializationSink).getMethodCall().getLocation() + } } module UnsafeDeserializationFlow = TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/UrlRedirect.qll b/java/ql/lib/semmle/code/java/security/UrlRedirect.qll index 02f66e3f0e95..be6addfa2529 100644 --- a/java/ql/lib/semmle/code/java/security/UrlRedirect.qll +++ b/java/ql/lib/semmle/code/java/security/UrlRedirect.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about URL redirect attacks. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/Validation.qll b/java/ql/lib/semmle/code/java/security/Validation.qll index 664c55e70d82..69f57474317f 100644 --- a/java/ql/lib/semmle/code/java/security/Validation.qll +++ b/java/ql/lib/semmle/code/java/security/Validation.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import semmle.code.java.Expr import semmle.code.java.dataflow.SSA import semmle.code.java.controlflow.Guards diff --git a/java/ql/lib/semmle/code/java/security/XPath.qll b/java/ql/lib/semmle/code/java/security/XPath.qll index c2992fdc272a..cc3fde30091b 100644 --- a/java/ql/lib/semmle/code/java/security/XPath.qll +++ b/java/ql/lib/semmle/code/java/security/XPath.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about XPath vulnerabilities. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/XSS.qll b/java/ql/lib/semmle/code/java/security/XSS.qll index 9aafcd15f683..990371cc8cfe 100644 --- a/java/ql/lib/semmle/code/java/security/XSS.qll +++ b/java/ql/lib/semmle/code/java/security/XSS.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about Cross-site scripting (XSS) vulnerabilities. */ +overlay[local?] +module; import java import semmle.code.java.frameworks.Servlets diff --git a/java/ql/lib/semmle/code/java/security/XmlParsers.qll b/java/ql/lib/semmle/code/java/security/XmlParsers.qll index 5ca1dd95f99e..8bb2a015a14d 100644 --- a/java/ql/lib/semmle/code/java/security/XmlParsers.qll +++ b/java/ql/lib/semmle/code/java/security/XmlParsers.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for modeling XML parsers in Java. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/XsltInjection.qll b/java/ql/lib/semmle/code/java/security/XsltInjection.qll index 56affafa2029..d54e92066443 100644 --- a/java/ql/lib/semmle/code/java/security/XsltInjection.qll +++ b/java/ql/lib/semmle/code/java/security/XsltInjection.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about XSLT injection vulnerabilities. */ +overlay[local?] +module; import java import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/Xxe.qll b/java/ql/lib/semmle/code/java/security/Xxe.qll index cf30b3c19c0d..5c3d075bfb1c 100644 --- a/java/ql/lib/semmle/code/java/security/Xxe.qll +++ b/java/ql/lib/semmle/code/java/security/Xxe.qll @@ -1,4 +1,6 @@ /** Provides classes to reason about XML eXternal Entity (XXE) vulnerabilities. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/internal/ArraySizing.qll b/java/ql/lib/semmle/code/java/security/internal/ArraySizing.qll index 29c4d0e5e3df..185b1b8a46e2 100644 --- a/java/ql/lib/semmle/code/java/security/internal/ArraySizing.qll +++ b/java/ql/lib/semmle/code/java/security/internal/ArraySizing.qll @@ -1,4 +1,6 @@ /** Provides predicates and classes to reason about the sizing and indexing of arrays. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/java/security/internal/BoundingChecks.qll b/java/ql/lib/semmle/code/java/security/internal/BoundingChecks.qll index 88dec6c2bb78..81bf8727e4fd 100644 --- a/java/ql/lib/semmle/code/java/security/internal/BoundingChecks.qll +++ b/java/ql/lib/semmle/code/java/security/internal/BoundingChecks.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for determining upper and lower bounds on a value determined by bounding checks that * have been made on dominant paths. */ +overlay[local?] +module; import java private import semmle.code.java.controlflow.Guards diff --git a/java/ql/lib/semmle/code/java/security/internal/EncryptionKeySizes.qll b/java/ql/lib/semmle/code/java/security/internal/EncryptionKeySizes.qll index 46df3a3ca7bb..f42e31b2d7e5 100644 --- a/java/ql/lib/semmle/code/java/security/internal/EncryptionKeySizes.qll +++ b/java/ql/lib/semmle/code/java/security/internal/EncryptionKeySizes.qll @@ -4,6 +4,8 @@ * Provides predicates for recommended encryption key sizes. * Such that we can share this logic across our CodeQL analysis of different languages. */ +overlay[local?] +module; /** Returns the minimum recommended key size for RSA. */ int minSecureKeySizeRsa() { result = 2048 } diff --git a/java/ql/lib/semmle/code/java/security/regexp/PolynomialReDoSQuery.qll b/java/ql/lib/semmle/code/java/security/regexp/PolynomialReDoSQuery.qll index 767ebc97437b..ba65e13dd611 100644 --- a/java/ql/lib/semmle/code/java/security/regexp/PolynomialReDoSQuery.qll +++ b/java/ql/lib/semmle/code/java/security/regexp/PolynomialReDoSQuery.qll @@ -47,18 +47,6 @@ module PolynomialRedosConfig implements DataFlow::ConfigSig { node instanceof SimpleTypeSanitizer or node.asExpr().(MethodCall).getMethod() instanceof LengthRestrictedMethod } - - predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(SuperlinearBackTracking::PolynomialBackTrackingTerm regexp | - regexp.getRootTerm() = sink.(PolynomialRedosSink).getRegExp() - | - result = sink.getLocation() - or - result = regexp.getLocation() - ) - } } module PolynomialRedosFlow = TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/regexp/RegexInjection.qll b/java/ql/lib/semmle/code/java/security/regexp/RegexInjection.qll index 92d5dab5289a..eb27ec873752 100644 --- a/java/ql/lib/semmle/code/java/security/regexp/RegexInjection.qll +++ b/java/ql/lib/semmle/code/java/security/regexp/RegexInjection.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates related to regex injection in Java. */ +overlay[local?] +module; import java private import semmle.code.java.dataflow.DataFlow diff --git a/java/ql/lib/semmle/code/xml/AndroidManifest.qll b/java/ql/lib/semmle/code/xml/AndroidManifest.qll index ad69546a4140..d20165a031ff 100644 --- a/java/ql/lib/semmle/code/xml/AndroidManifest.qll +++ b/java/ql/lib/semmle/code/xml/AndroidManifest.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with Android manifest files. */ +overlay[local?] +module; import XML diff --git a/java/ql/lib/semmle/code/xml/Ant.qll b/java/ql/lib/semmle/code/xml/Ant.qll index 59cd2889096a..84d6ea927f72 100644 --- a/java/ql/lib/semmle/code/xml/Ant.qll +++ b/java/ql/lib/semmle/code/xml/Ant.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with targets in Apache Ant build files. */ +overlay[local?] +module; import XML diff --git a/java/ql/lib/semmle/code/xml/MavenPom.qll b/java/ql/lib/semmle/code/xml/MavenPom.qll index 313a0e08bd83..68c81c4ab905 100644 --- a/java/ql/lib/semmle/code/xml/MavenPom.qll +++ b/java/ql/lib/semmle/code/xml/MavenPom.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with Maven POM files and their content. */ +overlay[local?] +module; import XML diff --git a/java/ql/lib/semmle/code/xml/WebXML.qll b/java/ql/lib/semmle/code/xml/WebXML.qll index c356081c95f6..c741ce7c66b0 100644 --- a/java/ql/lib/semmle/code/xml/WebXML.qll +++ b/java/ql/lib/semmle/code/xml/WebXML.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import java /** diff --git a/java/ql/lib/semmle/code/xml/XML.qll b/java/ql/lib/semmle/code/xml/XML.qll index 54157809260b..e4073362fc6f 100644 --- a/java/ql/lib/semmle/code/xml/XML.qll +++ b/java/ql/lib/semmle/code/xml/XML.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with XML files and their content. */ +overlay[local?] +module; import semmle.files.FileSystem private import codeql.xml.Xml diff --git a/java/ql/lib/semmle/files/FileSystem.qll b/java/ql/lib/semmle/files/FileSystem.qll index f56d54866140..bb55214dcd3b 100644 --- a/java/ql/lib/semmle/files/FileSystem.qll +++ b/java/ql/lib/semmle/files/FileSystem.qll @@ -1,3 +1,5 @@ /** Provides classes for working with files and folders. */ +overlay[local?] +module; import semmle.code.FileSystem diff --git a/java/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll b/java/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll index cd62fdb757e0..446b6a544c34 100644 --- a/java/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll +++ b/java/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import java as J private import codeql.util.test.InlineExpectationsTest diff --git a/java/ql/src/Advisory/Declarations/MissingOverrideAnnotation.ql b/java/ql/src/Advisory/Declarations/MissingOverrideAnnotation.ql index 0fd91f67178a..26160c90fdf4 100644 --- a/java/ql/src/Advisory/Declarations/MissingOverrideAnnotation.ql +++ b/java/ql/src/Advisory/Declarations/MissingOverrideAnnotation.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id java/missing-override-annotation - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Deprecated Code/AvoidDeprecatedCallableAccess.ql b/java/ql/src/Advisory/Deprecated Code/AvoidDeprecatedCallableAccess.ql index f20be6d7f349..5d8953f6168b 100644 --- a/java/ql/src/Advisory/Deprecated Code/AvoidDeprecatedCallableAccess.ql +++ b/java/ql/src/Advisory/Deprecated Code/AvoidDeprecatedCallableAccess.ql @@ -7,6 +7,7 @@ * @precision high * @id java/deprecated-call * @tags maintainability + * readability * non-attributable * external/cwe/cwe-477 */ diff --git a/java/ql/src/Advisory/Documentation/ImpossibleJavadocThrows.ql b/java/ql/src/Advisory/Documentation/ImpossibleJavadocThrows.ql index 7f8f4d4f983d..0a8529d91d1e 100644 --- a/java/ql/src/Advisory/Documentation/ImpossibleJavadocThrows.ql +++ b/java/ql/src/Advisory/Documentation/ImpossibleJavadocThrows.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id java/inconsistent-javadoc-throws - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql b/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql index 43afd978f014..fb6375d44de0 100644 --- a/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql +++ b/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision very-high * @id java/unknown-javadoc-parameter - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index ca355f5e6848..fe2be06be35d 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,24 @@ +## 1.6.0 + +### Query Metadata Changes + +* The tag `quality` has been added to multiple Java quality queries for consistency. They have all been given a tag for one of the two top-level categories `reliability` or `maintainability`, and a tag for a sub-category. See [Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags) for more information about these categories. +* The tag `external/cwe/cwe-571` has been added to `java/equals-on-unrelated-types`. +* The tag `readability` has been added to `java/missing-override-annotation`, `java/deprecated-call`, `java/inconsistent-javadoc-throws`, `java/unknown-javadoc-parameter`, `java/jdk-internal-api-access`, `java/underscore-identifier`, `java/misleading-indentation`, `java/inefficient-empty-string-test`, `java/non-static-nested-class`, `inefficient-string-constructor`, and `java/constants-only-interface`. +* The tag `useless-code` has been added to `java/useless-type-test`, and `java/useless-tostring-call`. +* The tag `complexity` has been added to `java/chained-type-tests`, and `java/abstract-to-concrete-cast`. +* The tag `error-handling` has been added to `java/ignored-error-status-of-call`, and `java/uncaught-number-format-exception`. +* The tag `correctness` has been added to `java/evaluation-to-constant`, `java/whitespace-contradicts-precedence`, `java/empty-container`, `java/string-buffer-char-init`, `java/call-to-object-tostring`, `java/print-array` and `java/internal-representation-exposure`. +* The tag `performance` has been added to `java/input-resource-leak`, `java/database-resource-leak`, `java/output-resource-leak`, `java/inefficient-key-set-iterator`, `java/inefficient-output-stream`, and `java/inefficient-boxed-constructor`. +* The tag `correctness` has been removed from `java/call-to-thread-run`, `java/unsafe-double-checked-locking`, `java/unsafe-double-checked-locking-init-order`, `java/non-sync-override`, `java/sync-on-boxed-types`, `java/unsynchronized-getter`, `java/input-resource-leak`, `java/output-resource-leak`, `java/database-resource-leak`, and `java/ignored-error-status-of-call`. +* The tags `maintainability` has been removed from `java/string-buffer-char-init`, `java/inefficient-key-set-iterator`, `java/inefficient-boxed-constructor`, and `java/internal-representation-exposure`. +* The tags `reliability` has been removed from `java/subtle-inherited-call`, `java/print-array`, and `java/call-to-object-tostring`. +* The tags `maintainability` and `useless-code` have been removed from `java/evaluation-to-constant`. +* The tags `maintainability` and `readability` have been removed from `java/whitespace-contradicts-precedence`. +* The tags `maintainability` and `useless-code` have been removed from `java/empty-container`. +* 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. +* 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. + ## 1.5.2 No user-facing changes. diff --git a/java/ql/src/Compatibility/JDK9/JdkInternalAccess.ql b/java/ql/src/Compatibility/JDK9/JdkInternalAccess.ql index 352af0ecb664..9eddcb64a14e 100644 --- a/java/ql/src/Compatibility/JDK9/JdkInternalAccess.ql +++ b/java/ql/src/Compatibility/JDK9/JdkInternalAccess.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id java/jdk-internal-api-access - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Compatibility/JDK9/UnderscoreIdentifier.ql b/java/ql/src/Compatibility/JDK9/UnderscoreIdentifier.ql index 1d04f0f0d370..9bfda3e3140e 100644 --- a/java/ql/src/Compatibility/JDK9/UnderscoreIdentifier.ql +++ b/java/ql/src/Compatibility/JDK9/UnderscoreIdentifier.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id java/underscore-identifier - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/DeadCode/UselessParameter.ql b/java/ql/src/DeadCode/UselessParameter.ql index 3d29c8faf10d..e9f996583f3b 100644 --- a/java/ql/src/DeadCode/UselessParameter.ql +++ b/java/ql/src/DeadCode/UselessParameter.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision high * @id java/unused-parameter - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/java/ql/src/Language Abuse/ChainedInstanceof.ql b/java/ql/src/Language Abuse/ChainedInstanceof.ql index bb646eeee785..c5cd39565d0a 100644 --- a/java/ql/src/Language Abuse/ChainedInstanceof.ql +++ b/java/ql/src/Language Abuse/ChainedInstanceof.ql @@ -6,6 +6,7 @@ * @precision high * @id java/chained-type-tests * @tags maintainability + * complexity * language-features */ diff --git a/java/ql/src/Language Abuse/IterableIterator.ql b/java/ql/src/Language Abuse/IterableIterator.ql index fd5c5107e2d2..72dfbcd99655 100644 --- a/java/ql/src/Language Abuse/IterableIterator.ql +++ b/java/ql/src/Language Abuse/IterableIterator.ql @@ -7,8 +7,9 @@ * @problem.severity warning * @precision very-high * @id java/iterator-implements-iterable - * @tags correctness + * @tags quality * reliability + * correctness */ import java diff --git a/java/ql/src/Language Abuse/UselessNullCheck.ql b/java/ql/src/Language Abuse/UselessNullCheck.ql index 93e5a92c3070..92041ca9e4a2 100644 --- a/java/ql/src/Language Abuse/UselessNullCheck.ql +++ b/java/ql/src/Language Abuse/UselessNullCheck.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision very-high * @id java/useless-null-check - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ @@ -17,10 +18,10 @@ import semmle.code.java.controlflow.Guards from Expr guard, Expr e, Expr reason, string msg where - guard = basicNullGuard(e, _, true) and + guardSuggestsExprMaybeNull(guard, e) and e = clearlyNotNullExpr(reason) and ( - if reason instanceof Guard + if reason = directNullGuard(_, _, _) then msg = "This check is useless. $@ cannot be null at this check, since it is guarded by $@." else if reason != e diff --git a/java/ql/src/Language Abuse/UselessTypeTest.ql b/java/ql/src/Language Abuse/UselessTypeTest.ql index 48ba740cbe8c..dc727485bda5 100644 --- a/java/ql/src/Language Abuse/UselessTypeTest.ql +++ b/java/ql/src/Language Abuse/UselessTypeTest.ql @@ -5,7 +5,9 @@ * @problem.severity warning * @precision very-high * @id java/useless-type-test - * @tags maintainability + * @tags quality + * maintainability + * useless-code * language-features * external/cwe/cwe-561 */ diff --git a/java/ql/src/Language Abuse/WrappedIterator.ql b/java/ql/src/Language Abuse/WrappedIterator.ql index 10dd8472fc46..a2479a2bad3d 100644 --- a/java/ql/src/Language Abuse/WrappedIterator.ql +++ b/java/ql/src/Language Abuse/WrappedIterator.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision very-high * @id java/iterable-wraps-iterator - * @tags correctness + * @tags quality * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Arithmetic/ConstantExpAppearsNonConstant.ql b/java/ql/src/Likely Bugs/Arithmetic/ConstantExpAppearsNonConstant.ql index e54c470de431..50f508626317 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/ConstantExpAppearsNonConstant.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/ConstantExpAppearsNonConstant.ql @@ -5,8 +5,9 @@ * @problem.severity warning * @precision very-high * @id java/evaluation-to-constant - * @tags maintainability - * useless-code + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql b/java/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql index 026096b63a70..37340bc7975e 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql @@ -6,10 +6,10 @@ * @problem.severity warning * @precision very-high * @id java/integer-multiplication-cast-to-long - * @tags reliability + * @tags quality + * reliability * correctness * types - * quality * external/cwe/cwe-190 * external/cwe/cwe-192 * external/cwe/cwe-197 diff --git a/java/ql/src/Likely Bugs/Arithmetic/LShiftLargerThanTypeWidth.ql b/java/ql/src/Likely Bugs/Arithmetic/LShiftLargerThanTypeWidth.ql index f3c0b2200809..57a05b0ac395 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/LShiftLargerThanTypeWidth.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/LShiftLargerThanTypeWidth.ql @@ -5,7 +5,9 @@ * @problem.severity warning * @precision very-high * @id java/lshift-larger-than-type-width - * @tags correctness + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Arithmetic/WhitespaceContradictsPrecedence.ql b/java/ql/src/Likely Bugs/Arithmetic/WhitespaceContradictsPrecedence.ql index b0508b8eb38c..52a5850e7d1d 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/WhitespaceContradictsPrecedence.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/WhitespaceContradictsPrecedence.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision very-high * @id java/whitespace-contradicts-precedence - * @tags maintainability - * readability + * @tags quality + * reliability + * correctness * external/cwe/cwe-783 */ diff --git a/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql b/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql index c94801189b3f..ecd83e39719b 100644 --- a/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql +++ b/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision high * @id java/index-out-of-bounds - * @tags reliability + * @tags quality + * reliability * correctness * exceptions * external/cwe/cwe-193 diff --git a/java/ql/src/Likely Bugs/Collections/ContainsTypeMismatch.ql b/java/ql/src/Likely Bugs/Collections/ContainsTypeMismatch.ql index e1137b111bf6..d1a398d1322c 100644 --- a/java/ql/src/Likely Bugs/Collections/ContainsTypeMismatch.ql +++ b/java/ql/src/Likely Bugs/Collections/ContainsTypeMismatch.ql @@ -7,7 +7,8 @@ * @problem.severity error * @precision very-high * @id java/type-mismatch-access - * @tags reliability + * @tags quality + * reliability * correctness * logic */ diff --git a/java/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql b/java/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql index 5b90341660be..2951f97d65fe 100644 --- a/java/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql +++ b/java/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql @@ -5,9 +5,9 @@ * @problem.severity error * @precision very-high * @id java/empty-container - * @tags reliability - * maintainability - * useless-code + * @tags quality + * reliability + * correctness * external/cwe/cwe-561 */ diff --git a/java/ql/src/Likely Bugs/Collections/RemoveTypeMismatch.ql b/java/ql/src/Likely Bugs/Collections/RemoveTypeMismatch.ql index 08a8da884846..54548b122e4f 100644 --- a/java/ql/src/Likely Bugs/Collections/RemoveTypeMismatch.ql +++ b/java/ql/src/Likely Bugs/Collections/RemoveTypeMismatch.ql @@ -7,7 +7,8 @@ * @problem.severity error * @precision very-high * @id java/type-mismatch-modification - * @tags reliability + * @tags quality + * reliability * correctness * logic */ diff --git a/java/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql b/java/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql index 1f4ebb3403d0..589000df5d4c 100644 --- a/java/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +++ b/java/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql @@ -5,9 +5,9 @@ * @problem.severity error * @precision very-high * @id java/unused-container - * @tags maintainability + * @tags quality + * maintainability * useless-code - * quality * external/cwe/cwe-561 */ diff --git a/java/ql/src/Likely Bugs/Comparison/CompareIdenticalValues.ql b/java/ql/src/Likely Bugs/Comparison/CompareIdenticalValues.ql index 4b52e937af26..e46dd7c5f79f 100644 --- a/java/ql/src/Likely Bugs/Comparison/CompareIdenticalValues.ql +++ b/java/ql/src/Likely Bugs/Comparison/CompareIdenticalValues.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision very-high * @id java/comparison-of-identical-expressions - * @tags reliability + * @tags quality + * reliability * correctness * logic */ diff --git a/java/ql/src/Likely Bugs/Comparison/EqualsArray.ql b/java/ql/src/Likely Bugs/Comparison/EqualsArray.ql index 2b04d8711540..e206d9c89c52 100644 --- a/java/ql/src/Likely Bugs/Comparison/EqualsArray.ql +++ b/java/ql/src/Likely Bugs/Comparison/EqualsArray.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision very-high * @id java/equals-on-arrays - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/java/ql/src/Likely Bugs/Comparison/HashedButNoHash.ql b/java/ql/src/Likely Bugs/Comparison/HashedButNoHash.ql index 6d3c4ce28218..f8b1cd85552a 100644 --- a/java/ql/src/Likely Bugs/Comparison/HashedButNoHash.ql +++ b/java/ql/src/Likely Bugs/Comparison/HashedButNoHash.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision very-high * @id java/hashing-without-hashcode - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/java/ql/src/Likely Bugs/Comparison/IncomparableEquals.ql b/java/ql/src/Likely Bugs/Comparison/IncomparableEquals.ql index f5019373b65e..cf75399caf45 100644 --- a/java/ql/src/Likely Bugs/Comparison/IncomparableEquals.ql +++ b/java/ql/src/Likely Bugs/Comparison/IncomparableEquals.ql @@ -6,9 +6,10 @@ * @problem.severity error * @precision very-high * @id java/equals-on-unrelated-types - * @tags reliability + * @tags quality + * reliability * correctness - * quality + * external/cwe/cwe-571 */ import java diff --git a/java/ql/src/Likely Bugs/Comparison/InconsistentEqualsHashCode.ql b/java/ql/src/Likely Bugs/Comparison/InconsistentEqualsHashCode.ql index 2fce3397346a..80153123b296 100644 --- a/java/ql/src/Likely Bugs/Comparison/InconsistentEqualsHashCode.ql +++ b/java/ql/src/Likely Bugs/Comparison/InconsistentEqualsHashCode.ql @@ -6,9 +6,9 @@ * @problem.severity error * @precision very-high * @id java/inconsistent-equals-and-hashcode - * @tags reliability + * @tags quality + * reliability * correctness - * quality * external/cwe/cwe-581 */ diff --git a/java/ql/src/Likely Bugs/Comparison/MissingInstanceofInEquals.ql b/java/ql/src/Likely Bugs/Comparison/MissingInstanceofInEquals.ql index 413a88bb0083..7cd495f90733 100644 --- a/java/ql/src/Likely Bugs/Comparison/MissingInstanceofInEquals.ql +++ b/java/ql/src/Likely Bugs/Comparison/MissingInstanceofInEquals.ql @@ -6,9 +6,9 @@ * @problem.severity error * @precision high * @id java/unchecked-cast-in-equals - * @tags reliability + * @tags quality + * reliability * correctness - * quality */ import java diff --git a/java/ql/src/Likely Bugs/Comparison/RefEqBoxed.ql b/java/ql/src/Likely Bugs/Comparison/RefEqBoxed.ql index 811edd9e2d7a..6ea867b34819 100644 --- a/java/ql/src/Likely Bugs/Comparison/RefEqBoxed.ql +++ b/java/ql/src/Likely Bugs/Comparison/RefEqBoxed.ql @@ -6,9 +6,9 @@ * @problem.severity error * @precision very-high * @id java/reference-equality-of-boxed-types - * @tags reliability + * @tags quality + * reliability * correctness - * quality * external/cwe/cwe-595 */ diff --git a/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql b/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql index b4076bee00b5..e60c65953d1e 100644 --- a/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql +++ b/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql @@ -7,7 +7,9 @@ * @problem.severity warning * @precision very-high * @id java/constant-comparison - * @tags correctness + * @tags quality + * reliability + * correctness * logic * external/cwe/cwe-570 * external/cwe/cwe-571 diff --git a/java/ql/src/Likely Bugs/Comparison/WrongNanComparison.ql b/java/ql/src/Likely Bugs/Comparison/WrongNanComparison.ql index b5ebc3a951c4..1656eab12182 100644 --- a/java/ql/src/Likely Bugs/Comparison/WrongNanComparison.ql +++ b/java/ql/src/Likely Bugs/Comparison/WrongNanComparison.ql @@ -6,7 +6,9 @@ * @problem.severity error * @precision very-high * @id java/comparison-with-nan - * @tags correctness + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.qhelp b/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.qhelp index b6cb3a730876..a97c17c13188 100644 --- a/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.qhelp +++ b/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.qhelp @@ -49,6 +49,15 @@ continue while the child thread is waiting, so that "Main thread activity" is pr
  • The Java Tutorials: Defining and Starting a Thread.
  • +
  • + SEI CERT Oracle Coding Standard for Java: THI00-J. Do not invoke Thread.run(). +
  • +
  • + Java API Specification: Thread. +
  • +
  • + Java API Specification: Runnable. +
  • diff --git a/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.ql b/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.ql index c31ef9962252..9e4e1dd47143 100644 --- a/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.ql +++ b/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.ql @@ -6,8 +6,9 @@ * @problem.severity recommendation * @precision high * @id java/call-to-thread-run - * @tags reliability - * correctness + * @previous-id java/run-method-called-on-java-lang-thread-directly + * @tags quality + * reliability * concurrency * external/cwe/cwe-572 */ diff --git a/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.ql b/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.ql index 21b8c805cbb3..ee7a807d4da6 100644 --- a/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.ql +++ b/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.ql @@ -6,8 +6,8 @@ * @problem.severity error * @precision high * @id java/unsafe-double-checked-locking - * @tags reliability - * correctness + * @tags quality + * reliability * concurrency * external/cwe/cwe-609 */ diff --git a/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLockingWithInitRace.ql b/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLockingWithInitRace.ql index 17b9fc93d211..6a480bd3f8d6 100644 --- a/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLockingWithInitRace.ql +++ b/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLockingWithInitRace.ql @@ -8,8 +8,8 @@ * @problem.severity warning * @precision high * @id java/unsafe-double-checked-locking-init-order - * @tags reliability - * correctness + * @tags quality + * reliability * concurrency * external/cwe/cwe-609 */ diff --git a/java/ql/src/Likely Bugs/Concurrency/NonSynchronizedOverride.ql b/java/ql/src/Likely Bugs/Concurrency/NonSynchronizedOverride.ql index a2e41c9bd055..3dcd44a5273d 100644 --- a/java/ql/src/Likely Bugs/Concurrency/NonSynchronizedOverride.ql +++ b/java/ql/src/Likely Bugs/Concurrency/NonSynchronizedOverride.ql @@ -6,8 +6,8 @@ * @problem.severity warning * @precision very-high * @id java/non-sync-override - * @tags reliability - * correctness + * @tags quality + * reliability * concurrency * language-features * external/cwe/cwe-820 diff --git a/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.md b/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.md new file mode 100644 index 000000000000..424407f5cc64 --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.md @@ -0,0 +1,24 @@ +## Overview + +According to the Java documentation on `ScheduledThreadPoolExecutor`, it is not a good idea to set `corePoolSize` to zero, since doing so indicates the executor to keep 0 threads in its pool and the executor will serve no purpose. + +## Recommendation + +Set the `ScheduledThreadPoolExecutor` to have 1 or more threads in its thread pool and use the class's other methods to create a thread execution schedule. + +## Example + +```java +public class Test { + void f() { + int i = 0; + ScheduledThreadPoolExecutor s = new ScheduledThreadPoolExecutor(1); // COMPLIANT + ScheduledThreadPoolExecutor s1 = new ScheduledThreadPoolExecutor(0); // NON_COMPLIANT + s.setCorePoolSize(0); // NON_COMPLIANT + s.setCorePoolSize(i); // NON_COMPLIANT + } +} +``` + +## References +- [ScheduledThreadPoolExecutor](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/ScheduledThreadPoolExecutor.html) diff --git a/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.ql b/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.ql new file mode 100644 index 000000000000..0b8acb5a0888 --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.ql @@ -0,0 +1,36 @@ +/** + * @id java/java-util-concurrent-scheduledthreadpoolexecutor + * @name Zero threads set for `java.util.concurrent.ScheduledThreadPoolExecutor` + * @description Setting `java.util.concurrent.ScheduledThreadPoolExecutor` to have 0 threads serves + * no purpose and may indicate programmer error. + * @kind problem + * @precision very-high + * @problem.severity recommendation + * @previous-id java/javautilconcurrentscheduledthreadpoolexecutor + * @tags quality + * reliability + * correctness + * concurrency + */ + +import java +import semmle.code.java.dataflow.DataFlow + +/** + * A `Call` that has the ability to set or modify the `corePoolSize` of the `java.util.concurrent.ScheduledThreadPoolExecutor` type. + */ +class Sink extends Call { + Sink() { + this.getCallee() + .hasQualifiedName("java.util.concurrent", "ThreadPoolExecutor", "setCorePoolSize") or + this.getCallee() + .hasQualifiedName("java.util.concurrent", "ScheduledThreadPoolExecutor", + "ScheduledThreadPoolExecutor") + } +} + +from IntegerLiteral zero, Sink set +where + DataFlow::localFlow(DataFlow::exprNode(zero), DataFlow::exprNode(set.getArgument(0))) and + zero.getIntValue() = 0 +select set, "ScheduledThreadPoolExecutor.corePoolSize is set to have 0 threads." diff --git a/java/ql/src/Likely Bugs/Concurrency/SynchOnBoxedType.ql b/java/ql/src/Likely Bugs/Concurrency/SynchOnBoxedType.ql index a217d019f324..aa13c652e006 100644 --- a/java/ql/src/Likely Bugs/Concurrency/SynchOnBoxedType.ql +++ b/java/ql/src/Likely Bugs/Concurrency/SynchOnBoxedType.ql @@ -7,8 +7,8 @@ * @problem.severity error * @precision very-high * @id java/sync-on-boxed-types - * @tags reliability - * correctness + * @tags quality + * reliability * concurrency * language-features * external/cwe/cwe-662 diff --git a/java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql b/java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql index f631ab145ed8..642a3f5e46fe 100644 --- a/java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql +++ b/java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql @@ -7,8 +7,8 @@ * @problem.severity error * @precision very-high * @id java/unsynchronized-getter - * @tags reliability - * correctness + * @tags quality + * reliability * concurrency * language-features * external/cwe/cwe-413 diff --git a/java/ql/src/Likely Bugs/Inheritance/NoNonFinalInConstructor.ql b/java/ql/src/Likely Bugs/Inheritance/NoNonFinalInConstructor.ql index 618160538970..606daac9c083 100644 --- a/java/ql/src/Likely Bugs/Inheritance/NoNonFinalInConstructor.ql +++ b/java/ql/src/Likely Bugs/Inheritance/NoNonFinalInConstructor.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision very-high * @id java/non-final-call-in-constructor - * @tags reliability + * @tags quality + * reliability * correctness * logic */ diff --git a/java/ql/src/Likely Bugs/Likely Typos/ContainerSizeCmpZero.ql b/java/ql/src/Likely Bugs/Likely Typos/ContainerSizeCmpZero.ql index 01f0ceac56cd..dea4426b2a14 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/ContainerSizeCmpZero.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/ContainerSizeCmpZero.ql @@ -5,7 +5,8 @@ * @problem.severity warning * @precision very-high * @id java/test-for-negative-container-size - * @tags reliability + * @tags quality + * reliability * correctness * logic */ diff --git a/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql b/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql index a8ff61f481d9..e48eb1f5ce65 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql @@ -7,9 +7,10 @@ * @problem.severity error * @precision very-high * @id java/contradictory-type-checks - * @tags correctness + * @tags quality + * reliability + * correctness * logic - * quality */ import java diff --git a/java/ql/src/Likely Bugs/Likely Typos/MissingFormatArg.ql b/java/ql/src/Likely Bugs/Likely Typos/MissingFormatArg.ql index 2297873be82e..4d9ec329ba31 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/MissingFormatArg.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/MissingFormatArg.ql @@ -6,7 +6,9 @@ * @problem.severity error * @precision very-high * @id java/missing-format-argument - * @tags correctness + * @tags quality + * reliability + * correctness * external/cwe/cwe-685 */ diff --git a/java/ql/src/Likely Bugs/Likely Typos/MissingSpaceTypo.ql b/java/ql/src/Likely Bugs/Likely Typos/MissingSpaceTypo.ql index f9f2c08f0b8a..67cc13424fa5 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/MissingSpaceTypo.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/MissingSpaceTypo.ql @@ -7,7 +7,9 @@ * @problem.severity recommendation * @precision very-high * @id java/missing-space-in-concatenation - * @tags readability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Likely Bugs/Likely Typos/SelfAssignment.ql b/java/ql/src/Likely Bugs/Likely Typos/SelfAssignment.ql index 83eb99d74980..8116a906910e 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/SelfAssignment.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/SelfAssignment.ql @@ -5,7 +5,8 @@ * @problem.severity error * @precision very-high * @id java/redundant-assignment - * @tags reliability + * @tags quality + * reliability * correctness * logic */ diff --git a/java/ql/src/Likely Bugs/Likely Typos/StringBufferCharInit.ql b/java/ql/src/Likely Bugs/Likely Typos/StringBufferCharInit.ql index 3eb9ee38e575..a7bc5e23fd4d 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/StringBufferCharInit.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/StringBufferCharInit.ql @@ -6,8 +6,9 @@ * @problem.severity error * @precision very-high * @id java/string-buffer-char-init - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Likely Typos/SuspiciousDateFormat.ql b/java/ql/src/Likely Bugs/Likely Typos/SuspiciousDateFormat.ql index 9e24a3b7b4ec..1e97c4250d97 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/SuspiciousDateFormat.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/SuspiciousDateFormat.ql @@ -5,8 +5,9 @@ * @problem.severity warning * @precision high * @id java/suspicious-date-format - * @tags correctness - * quality + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Likely Typos/UnusedFormatArg.ql b/java/ql/src/Likely Bugs/Likely Typos/UnusedFormatArg.ql index 286c731b5b86..e87a4b504404 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/UnusedFormatArg.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/UnusedFormatArg.ql @@ -7,7 +7,8 @@ * @problem.severity warning * @precision very-high * @id java/unused-format-argument - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-685 */ diff --git a/java/ql/src/Likely Bugs/Nullness/NullAlways.ql b/java/ql/src/Likely Bugs/Nullness/NullAlways.ql index c52c43acc554..e0fe795d5a77 100644 --- a/java/ql/src/Likely Bugs/Nullness/NullAlways.ql +++ b/java/ql/src/Likely Bugs/Nullness/NullAlways.ql @@ -5,7 +5,8 @@ * @problem.severity error * @precision very-high * @id java/dereferenced-value-is-always-null - * @tags reliability + * @tags quality + * reliability * correctness * exceptions * external/cwe/cwe-476 diff --git a/java/ql/src/Likely Bugs/Nullness/NullExprDeref.ql b/java/ql/src/Likely Bugs/Nullness/NullExprDeref.ql index 7929c839a41d..59e7ebd5ae09 100644 --- a/java/ql/src/Likely Bugs/Nullness/NullExprDeref.ql +++ b/java/ql/src/Likely Bugs/Nullness/NullExprDeref.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision high * @id java/dereferenced-expr-may-be-null - * @tags reliability + * @tags quality + * reliability * correctness * exceptions * external/cwe/cwe-476 diff --git a/java/ql/src/Likely Bugs/Nullness/NullMaybe.ql b/java/ql/src/Likely Bugs/Nullness/NullMaybe.ql index eedb2907f466..2202f1eb4543 100644 --- a/java/ql/src/Likely Bugs/Nullness/NullMaybe.ql +++ b/java/ql/src/Likely Bugs/Nullness/NullMaybe.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision high * @id java/dereferenced-value-may-be-null - * @tags reliability + * @tags quality + * reliability * correctness * exceptions * external/cwe/cwe-476 diff --git a/java/ql/src/Likely Bugs/Resource Leaks/CloseReader.ql b/java/ql/src/Likely Bugs/Resource Leaks/CloseReader.ql index d210581d20c0..0c7681d5a52a 100644 --- a/java/ql/src/Likely Bugs/Resource Leaks/CloseReader.ql +++ b/java/ql/src/Likely Bugs/Resource Leaks/CloseReader.ql @@ -6,10 +6,11 @@ * @problem.severity warning * @precision high * @id java/input-resource-leak - * @tags efficiency - * correctness + * @tags quality + * reliability + * performance + * efficiency * resources - * quality * external/cwe/cwe-404 * external/cwe/cwe-772 */ diff --git a/java/ql/src/Likely Bugs/Resource Leaks/CloseSql.ql b/java/ql/src/Likely Bugs/Resource Leaks/CloseSql.ql index e7584aba67dc..bf310d341230 100644 --- a/java/ql/src/Likely Bugs/Resource Leaks/CloseSql.ql +++ b/java/ql/src/Likely Bugs/Resource Leaks/CloseSql.ql @@ -5,7 +5,9 @@ * @problem.severity warning * @precision high * @id java/database-resource-leak - * @tags correctness + * @tags quality + * reliability + * performance * resources * external/cwe/cwe-404 * external/cwe/cwe-772 diff --git a/java/ql/src/Likely Bugs/Resource Leaks/CloseWriter.ql b/java/ql/src/Likely Bugs/Resource Leaks/CloseWriter.ql index fe23286b2e00..988df7773219 100644 --- a/java/ql/src/Likely Bugs/Resource Leaks/CloseWriter.ql +++ b/java/ql/src/Likely Bugs/Resource Leaks/CloseWriter.ql @@ -6,10 +6,11 @@ * @problem.severity warning * @precision high * @id java/output-resource-leak - * @tags efficiency - * correctness + * @tags quality + * reliability + * performance + * efficiency * resources - * quality * external/cwe/cwe-404 * external/cwe/cwe-772 */ diff --git a/java/ql/src/Likely Bugs/Statements/ContinueInFalseLoop.ql b/java/ql/src/Likely Bugs/Statements/ContinueInFalseLoop.ql index b99f64a1e4de..754602aa7994 100644 --- a/java/ql/src/Likely Bugs/Statements/ContinueInFalseLoop.ql +++ b/java/ql/src/Likely Bugs/Statements/ContinueInFalseLoop.ql @@ -8,7 +8,9 @@ * @id java/continue-in-false-loop * @problem.severity warning * @precision high - * @tags correctness + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Statements/PartiallyMaskedCatch.ql b/java/ql/src/Likely Bugs/Statements/PartiallyMaskedCatch.ql index e3e9e45cc643..eb5c2d380c65 100644 --- a/java/ql/src/Likely Bugs/Statements/PartiallyMaskedCatch.ql +++ b/java/ql/src/Likely Bugs/Statements/PartiallyMaskedCatch.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision high * @id java/unreachable-catch-clause - * @tags reliability + * @tags quality + * reliability * correctness * exceptions * external/cwe/cwe-561 diff --git a/java/ql/src/Likely Bugs/Statements/UseBraces.ql b/java/ql/src/Likely Bugs/Statements/UseBraces.ql index e9c8a082f3f0..c82bfc2c36fc 100644 --- a/java/ql/src/Likely Bugs/Statements/UseBraces.ql +++ b/java/ql/src/Likely Bugs/Statements/UseBraces.ql @@ -6,7 +6,9 @@ * @problem.severity warning * @precision very-high * @id java/misleading-indentation - * @tags maintainability + * @tags quality + * maintainability + * readability * correctness * logic */ diff --git a/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql b/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql index 9cf8ab9b61fd..d4fbc480e1b9 100644 --- a/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql +++ b/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql @@ -7,7 +7,9 @@ * @problem.severity warning * @precision very-high * @id java/constant-loop-condition - * @tags correctness + * @tags quality + * reliability + * correctness * external/cwe/cwe-835 */ diff --git a/java/ql/src/Performance/InefficientEmptyStringTest.ql b/java/ql/src/Performance/InefficientEmptyStringTest.ql index 0033bcf12845..95f5bc0760b7 100644 --- a/java/ql/src/Performance/InefficientEmptyStringTest.ql +++ b/java/ql/src/Performance/InefficientEmptyStringTest.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision high * @id java/inefficient-empty-string-test - * @tags efficiency + * @tags quality * maintainability + * readability */ import java diff --git a/java/ql/src/Performance/InefficientKeySetIterator.ql b/java/ql/src/Performance/InefficientKeySetIterator.ql index 2dbe8831cb12..79641b36140b 100644 --- a/java/ql/src/Performance/InefficientKeySetIterator.ql +++ b/java/ql/src/Performance/InefficientKeySetIterator.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision high * @id java/inefficient-key-set-iterator - * @tags efficiency - * maintainability + * @tags quality + * reliability + * performance */ import java diff --git a/java/ql/src/Performance/InefficientOutputStream.ql b/java/ql/src/Performance/InefficientOutputStream.ql index 5ddf568b79af..feb9ae5e5c40 100644 --- a/java/ql/src/Performance/InefficientOutputStream.ql +++ b/java/ql/src/Performance/InefficientOutputStream.ql @@ -6,7 +6,10 @@ * @problem.severity warning * @precision very-high * @id java/inefficient-output-stream - * @tags efficiency + * @tags quality + * reliability + * performance + * efficiency */ import java diff --git a/java/ql/src/Performance/InefficientPrimConstructor.ql b/java/ql/src/Performance/InefficientPrimConstructor.ql index e8992b017f96..4c3284d93dd8 100644 --- a/java/ql/src/Performance/InefficientPrimConstructor.ql +++ b/java/ql/src/Performance/InefficientPrimConstructor.ql @@ -5,8 +5,10 @@ * @problem.severity recommendation * @precision high * @id java/inefficient-boxed-constructor - * @tags efficiency - * maintainability + * @tags quality + * reliability + * performance + * efficiency */ import java diff --git a/java/ql/src/Performance/InnerClassCouldBeStatic.ql b/java/ql/src/Performance/InnerClassCouldBeStatic.ql index 95d3057c9629..dfc577282ca5 100644 --- a/java/ql/src/Performance/InnerClassCouldBeStatic.ql +++ b/java/ql/src/Performance/InnerClassCouldBeStatic.ql @@ -6,8 +6,9 @@ * @problem.severity recommendation * @precision high * @id java/non-static-nested-class - * @tags efficiency + * @tags quality * maintainability + * readability */ import java diff --git a/java/ql/src/Performance/NewStringString.ql b/java/ql/src/Performance/NewStringString.ql index b2f26069ea2c..4dde1c4edd2d 100644 --- a/java/ql/src/Performance/NewStringString.ql +++ b/java/ql/src/Performance/NewStringString.ql @@ -6,8 +6,9 @@ * @problem.severity recommendation * @precision high * @id java/inefficient-string-constructor - * @tags efficiency + * @tags quality * maintainability + * readability */ import java diff --git a/java/ql/src/Performance/StringReplaceAllWithNonRegex.md b/java/ql/src/Performance/StringReplaceAllWithNonRegex.md index c7bb609b2c02..7a16a8553fb1 100644 --- a/java/ql/src/Performance/StringReplaceAllWithNonRegex.md +++ b/java/ql/src/Performance/StringReplaceAllWithNonRegex.md @@ -1,7 +1,3 @@ -# Use of `String#replaceAll` with a first argument which is not a regular expression - -Using `String#replaceAll` is less performant than `String#replace` when the first argument is not a regular expression. - ## Overview The `String#replaceAll` method is designed to work with regular expressions as its first parameter. When you use a simple string without any regex patterns (like special characters or syntax), it's more efficient to use `String#replace` instead. This is because `replaceAll` has to compile the input as a regular expression first, which adds unnecessary overhead when you are just replacing literal text. diff --git a/java/ql/src/Security/CWE/CWE-078/ExecUnescaped.ql b/java/ql/src/Security/CWE/CWE-078/ExecUnescaped.ql index d50f583bbfe3..afa675c7f7b2 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 fc5af977a331..ffb191327a2b 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/Violations of Best Practice/Boxed Types/BoxedVariable.ql b/java/ql/src/Violations of Best Practice/Boxed Types/BoxedVariable.ql index 1749dc2ffa4b..fec9a2e8e442 100644 --- a/java/ql/src/Violations of Best Practice/Boxed Types/BoxedVariable.ql +++ b/java/ql/src/Violations of Best Practice/Boxed Types/BoxedVariable.ql @@ -6,7 +6,9 @@ * @problem.severity warning * @precision very-high * @id java/non-null-boxed-variable - * @tags readability + * @tags quality + * maintainability + * readability * types */ diff --git a/java/ql/src/Violations of Best Practice/Dead Code/DeadRefTypes.ql b/java/ql/src/Violations of Best Practice/Dead Code/DeadRefTypes.ql index 3688ca215365..d211351c25d0 100644 --- a/java/ql/src/Violations of Best Practice/Dead Code/DeadRefTypes.ql +++ b/java/ql/src/Violations of Best Practice/Dead Code/DeadRefTypes.ql @@ -6,7 +6,8 @@ * @problem.severity recommendation * @precision high * @id java/unused-reference-type - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/java/ql/src/Violations of Best Practice/Dead Code/InterfaceCannotBeImplemented.ql b/java/ql/src/Violations of Best Practice/Dead Code/InterfaceCannotBeImplemented.ql index 892ebf9fdb11..1ca906d5bb8c 100644 --- a/java/ql/src/Violations of Best Practice/Dead Code/InterfaceCannotBeImplemented.ql +++ b/java/ql/src/Violations of Best Practice/Dead Code/InterfaceCannotBeImplemented.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision very-high * @id java/unimplementable-interface - * @tags maintainability + * @tags quality + * maintainability * useless-code */ diff --git a/java/ql/src/Violations of Best Practice/Dead Code/UnreadLocal.ql b/java/ql/src/Violations of Best Practice/Dead Code/UnreadLocal.ql index 31697e561edb..ae85f5466132 100644 --- a/java/ql/src/Violations of Best Practice/Dead Code/UnreadLocal.ql +++ b/java/ql/src/Violations of Best Practice/Dead Code/UnreadLocal.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision high * @id java/local-variable-is-never-read - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/java/ql/src/Violations of Best Practice/Dead Code/UnusedLabel.ql b/java/ql/src/Violations of Best Practice/Dead Code/UnusedLabel.ql index cc453f1334eb..950486950cc3 100644 --- a/java/ql/src/Violations of Best Practice/Dead Code/UnusedLabel.ql +++ b/java/ql/src/Violations of Best Practice/Dead Code/UnusedLabel.ql @@ -6,7 +6,8 @@ * @problem.severity recommendation * @precision high * @id java/unused-label - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/java/ql/src/Violations of Best Practice/Declarations/NoConstantsOnly.ql b/java/ql/src/Violations of Best Practice/Declarations/NoConstantsOnly.ql index fb0482413d14..a268c6a8aeec 100644 --- a/java/ql/src/Violations of Best Practice/Declarations/NoConstantsOnly.ql +++ b/java/ql/src/Violations of Best Practice/Declarations/NoConstantsOnly.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id java/constants-only-interface - * @tags maintainability + * @tags quality + * maintainability + * readability * modularity */ diff --git a/java/ql/src/Violations of Best Practice/Exception Handling/IgnoreExceptionalReturn.ql b/java/ql/src/Violations of Best Practice/Exception Handling/IgnoreExceptionalReturn.ql index 2e95c087ed54..83b1c235aa8b 100644 --- a/java/ql/src/Violations of Best Practice/Exception Handling/IgnoreExceptionalReturn.ql +++ b/java/ql/src/Violations of Best Practice/Exception Handling/IgnoreExceptionalReturn.ql @@ -6,8 +6,9 @@ * @problem.severity recommendation * @precision high * @id java/ignored-error-status-of-call - * @tags reliability - * correctness + * @tags quality + * reliability + * error-handling * external/cwe/cwe-391 */ diff --git a/java/ql/src/Violations of Best Practice/Exception Handling/NumberFormatException.ql b/java/ql/src/Violations of Best Practice/Exception Handling/NumberFormatException.ql index 6a7928b4561b..a49d92bd6302 100644 --- a/java/ql/src/Violations of Best Practice/Exception Handling/NumberFormatException.ql +++ b/java/ql/src/Violations of Best Practice/Exception Handling/NumberFormatException.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id java/uncaught-number-format-exception - * @tags reliability + * @tags quality + * reliability + * error-handling * external/cwe/cwe-248 */ diff --git a/java/ql/src/Violations of Best Practice/Implementation Hiding/AbstractToConcreteCollection.ql b/java/ql/src/Violations of Best Practice/Implementation Hiding/AbstractToConcreteCollection.ql index 670156cfccb9..dce4d9e46e6e 100644 --- a/java/ql/src/Violations of Best Practice/Implementation Hiding/AbstractToConcreteCollection.ql +++ b/java/ql/src/Violations of Best Practice/Implementation Hiding/AbstractToConcreteCollection.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision very-high * @id java/abstract-to-concrete-cast - * @tags reliability + * @tags quality * maintainability + * complexity * modularity * external/cwe/cwe-485 */ diff --git a/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql b/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql index 98c1e1a2fbea..b5d27655f8d9 100644 --- a/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql +++ b/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql @@ -6,8 +6,9 @@ * @problem.severity recommendation * @precision high * @id java/internal-representation-exposure - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * modularity * external/cwe/cwe-485 */ diff --git a/java/ql/src/Violations of Best Practice/Naming Conventions/AmbiguousOuterSuper.ql b/java/ql/src/Violations of Best Practice/Naming Conventions/AmbiguousOuterSuper.ql index a52a6d816880..c9c5dd858780 100644 --- a/java/ql/src/Violations of Best Practice/Naming Conventions/AmbiguousOuterSuper.ql +++ b/java/ql/src/Violations of Best Practice/Naming Conventions/AmbiguousOuterSuper.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision very-high * @id java/subtle-inherited-call - * @tags reliability + * @tags quality + * maintainability * readability */ diff --git a/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingMethodNames.ql b/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingMethodNames.ql index 1c44dad78cc1..ef98cd1c3bcd 100644 --- a/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingMethodNames.ql +++ b/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingMethodNames.ql @@ -6,7 +6,8 @@ * @problem.severity recommendation * @precision high * @id java/confusing-method-name - * @tags maintainability + * @tags quality + * maintainability * readability * naming */ diff --git a/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingOverloading.ql b/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingOverloading.ql index 96188c534ffa..ca002fc654a6 100644 --- a/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingOverloading.ql +++ b/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingOverloading.ql @@ -7,7 +7,8 @@ * @problem.severity recommendation * @precision high * @id java/confusing-method-signature - * @tags maintainability + * @tags quality + * maintainability * readability * naming */ diff --git a/java/ql/src/Violations of Best Practice/Naming Conventions/LocalShadowsFieldConfusing.ql b/java/ql/src/Violations of Best Practice/Naming Conventions/LocalShadowsFieldConfusing.ql index f686e18f2ee4..f0c68ed9a807 100644 --- a/java/ql/src/Violations of Best Practice/Naming Conventions/LocalShadowsFieldConfusing.ql +++ b/java/ql/src/Violations of Best Practice/Naming Conventions/LocalShadowsFieldConfusing.ql @@ -6,7 +6,8 @@ * @problem.severity recommendation * @precision high * @id java/local-shadows-field - * @tags maintainability + * @tags quality + * maintainability * readability */ diff --git a/java/ql/src/Violations of Best Practice/Naming Conventions/SameNameAsSuper.ql b/java/ql/src/Violations of Best Practice/Naming Conventions/SameNameAsSuper.ql index a9f99658f946..ee3e3990ccb1 100644 --- a/java/ql/src/Violations of Best Practice/Naming Conventions/SameNameAsSuper.ql +++ b/java/ql/src/Violations of Best Practice/Naming Conventions/SameNameAsSuper.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision high * @id java/class-name-matches-super-class - * @tags maintainability + * @tags quality + * maintainability * readability * naming */ diff --git a/java/ql/src/Violations of Best Practice/Undesirable Calls/CallsToStringToString.ql b/java/ql/src/Violations of Best Practice/Undesirable Calls/CallsToStringToString.ql index 9b1bcb9877cb..abefc73dab16 100644 --- a/java/ql/src/Violations of Best Practice/Undesirable Calls/CallsToStringToString.ql +++ b/java/ql/src/Violations of Best Practice/Undesirable Calls/CallsToStringToString.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision high * @id java/useless-tostring-call - * @tags maintainability + * @tags quality + * maintainability + * useless-code */ import java diff --git a/java/ql/src/Violations of Best Practice/Undesirable Calls/DefaultToString.ql b/java/ql/src/Violations of Best Practice/Undesirable Calls/DefaultToString.ql index d404e4a929a4..e2b7824ffbfb 100644 --- a/java/ql/src/Violations of Best Practice/Undesirable Calls/DefaultToString.ql +++ b/java/ql/src/Violations of Best Practice/Undesirable Calls/DefaultToString.ql @@ -6,8 +6,9 @@ * @problem.severity recommendation * @precision high * @id java/call-to-object-tostring - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Violations of Best Practice/Undesirable Calls/DoNotCallFinalize.md b/java/ql/src/Violations of Best Practice/Undesirable Calls/DoNotCallFinalize.md index 385cbfb5cfe2..fa336a8c8229 100644 --- a/java/ql/src/Violations of Best Practice/Undesirable Calls/DoNotCallFinalize.md +++ b/java/ql/src/Violations of Best Practice/Undesirable Calls/DoNotCallFinalize.md @@ -8,6 +8,8 @@ Avoid calling `finalize()` in application code. Allow the JVM to determine a gar ## Example +### Incorrect Usage + ```java class LocalCache { private Collection cacheFiles = ...; @@ -19,9 +21,10 @@ void main() { // ... cache.finalize(); // NON_COMPLIANT } - ``` +### Correct Usage + ```java import java.lang.AutoCloseable; import java.lang.Override; @@ -43,10 +46,9 @@ void main() { // ... } } - ``` -# Implementation Notes +## Implementation Notes This rule ignores `super.finalize()` calls that occur within `finalize()` overrides since calling the superclass finalizer is required when overriding `finalize()`. Also, although overriding `finalize()` is not recommended, this rule only alerts on direct calls to `finalize()` and does not alert on method declarations overriding `finalize()`. diff --git a/java/ql/src/Violations of Best Practice/Undesirable Calls/PrintLnArray.ql b/java/ql/src/Violations of Best Practice/Undesirable Calls/PrintLnArray.ql index f356aa635d4a..46642ce6149b 100644 --- a/java/ql/src/Violations of Best Practice/Undesirable Calls/PrintLnArray.ql +++ b/java/ql/src/Violations of Best Practice/Undesirable Calls/PrintLnArray.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision very-high * @id java/print-array - * @tags maintainability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/change-notes/2025-06-17-improved-guards.md b/java/ql/src/change-notes/2025-06-17-improved-guards.md new file mode 100644 index 000000000000..b49710460f1f --- /dev/null +++ b/java/ql/src/change-notes/2025-06-17-improved-guards.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Java analysis of guards has been switched to use the new and improved shared guards library. This improves precision of a number of queries, in particular `java/dereferenced-value-may-be-null`, which now has fewer false positives, and `java/useless-null-check` and `java/constant-comparison`, which gain additional true positives. diff --git a/java/ql/src/change-notes/released/1.6.0.md b/java/ql/src/change-notes/released/1.6.0.md new file mode 100644 index 000000000000..539ce3d09697 --- /dev/null +++ b/java/ql/src/change-notes/released/1.6.0.md @@ -0,0 +1,20 @@ +## 1.6.0 + +### Query Metadata Changes + +* The tag `quality` has been added to multiple Java quality queries for consistency. They have all been given a tag for one of the two top-level categories `reliability` or `maintainability`, and a tag for a sub-category. See [Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags) for more information about these categories. +* The tag `external/cwe/cwe-571` has been added to `java/equals-on-unrelated-types`. +* The tag `readability` has been added to `java/missing-override-annotation`, `java/deprecated-call`, `java/inconsistent-javadoc-throws`, `java/unknown-javadoc-parameter`, `java/jdk-internal-api-access`, `java/underscore-identifier`, `java/misleading-indentation`, `java/inefficient-empty-string-test`, `java/non-static-nested-class`, `inefficient-string-constructor`, and `java/constants-only-interface`. +* The tag `useless-code` has been added to `java/useless-type-test`, and `java/useless-tostring-call`. +* The tag `complexity` has been added to `java/chained-type-tests`, and `java/abstract-to-concrete-cast`. +* The tag `error-handling` has been added to `java/ignored-error-status-of-call`, and `java/uncaught-number-format-exception`. +* The tag `correctness` has been added to `java/evaluation-to-constant`, `java/whitespace-contradicts-precedence`, `java/empty-container`, `java/string-buffer-char-init`, `java/call-to-object-tostring`, `java/print-array` and `java/internal-representation-exposure`. +* The tag `performance` has been added to `java/input-resource-leak`, `java/database-resource-leak`, `java/output-resource-leak`, `java/inefficient-key-set-iterator`, `java/inefficient-output-stream`, and `java/inefficient-boxed-constructor`. +* The tag `correctness` has been removed from `java/call-to-thread-run`, `java/unsafe-double-checked-locking`, `java/unsafe-double-checked-locking-init-order`, `java/non-sync-override`, `java/sync-on-boxed-types`, `java/unsynchronized-getter`, `java/input-resource-leak`, `java/output-resource-leak`, `java/database-resource-leak`, and `java/ignored-error-status-of-call`. +* The tags `maintainability` has been removed from `java/string-buffer-char-init`, `java/inefficient-key-set-iterator`, `java/inefficient-boxed-constructor`, and `java/internal-representation-exposure`. +* The tags `reliability` has been removed from `java/subtle-inherited-call`, `java/print-array`, and `java/call-to-object-tostring`. +* The tags `maintainability` and `useless-code` have been removed from `java/evaluation-to-constant`. +* The tags `maintainability` and `readability` have been removed from `java/whitespace-contradicts-precedence`. +* The tags `maintainability` and `useless-code` have been removed from `java/empty-container`. +* 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. +* 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/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 7eb901bae56a..c4f0b07d5336 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.2 +lastReleaseVersion: 1.6.0 diff --git a/java/ql/src/codeql-suites/java-code-quality-extended.qls b/java/ql/src/codeql-suites/java-code-quality-extended.qls new file mode 100644 index 000000000000..1ee85cae856c --- /dev/null +++ b/java/ql/src/codeql-suites/java-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/java/ql/src/codeql-suites/java-security-and-quality.qls b/java/ql/src/codeql-suites/java-security-and-quality.qls index 91751e6da1ba..011206a105c2 100644 --- a/java/ql/src/codeql-suites/java-security-and-quality.qls +++ b/java/ql/src/codeql-suites/java-security-and-quality.qls @@ -1,24 +1,7 @@ - description: Security-and-quality queries for Java - queries: . -- 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 +- apply: security-and-frozen-quality-selectors.yml + from: codeql/suite-helpers - include: id: - java/abs-of-random @@ -143,22 +126,3 @@ - java/wrong-object-serialization-signature - java/wrong-readresolve-signature - java/wrong-swing-event-adapter-signature -- include: - kind: - - diagnostic -- include: - kind: - - metric - tags contain: - - summary -- exclude: - deprecated: // -- exclude: - query path: - - /^experimental\/.*/ - - Metrics/Summaries/FrameworkCoverage.ql - - /Diagnostics/Internal/.*/ -- exclude: - tags contain: - - modeleditor - - modelgenerator diff --git a/java/ql/src/experimental/Security/CWE/CWE-020/Log4jJndiInjection.ql b/java/ql/src/experimental/Security/CWE/CWE-020/Log4jJndiInjection.ql index 84c4bb01c126..3abaa7bdcfa3 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-020/Log4jJndiInjection.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-020/Log4jJndiInjection.ql @@ -22,6 +22,7 @@ import semmle.code.java.dataflow.ExternalFlow private import semmle.code.java.security.Sanitizers import Log4jInjectionFlow::PathGraph +overlay[local?] deprecated private class ActivateModels extends ActiveExperimentalModels { ActivateModels() { this = "log4j-injection" } } diff --git a/java/ql/src/experimental/Security/CWE/CWE-036/OpenStream.ql b/java/ql/src/experimental/Security/CWE/CWE-036/OpenStream.ql index c84037719da9..0929ca3eb805 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-036/OpenStream.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-036/OpenStream.ql @@ -17,6 +17,7 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.dataflow.ExternalFlow import RemoteUrlToOpenStreamFlow::PathGraph +overlay[local?] deprecated private class ActivateModels extends ActiveExperimentalModels { ActivateModels() { this = "openstream-called-on-tainted-url" } } diff --git a/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql b/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql index c87097458520..11bb600ffe85 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql @@ -22,6 +22,7 @@ import semmle.code.java.security.PathSanitizer private import semmle.code.java.security.Sanitizers import InjectFilePathFlow::PathGraph +overlay[local?] deprecated private class ActivateModels extends ActiveExperimentalModels { ActivateModels() { this = "file-path-injection" } } diff --git a/java/ql/src/experimental/Security/CWE/CWE-078/ExecTainted.ql b/java/ql/src/experimental/Security/CWE/CWE-078/ExecTainted.ql index 08f7631af828..c13bc3bb245c 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-078/ExecTainted.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-078/ExecTainted.ql @@ -18,6 +18,7 @@ import semmle.code.java.security.CommandLineQuery import InputToArgumentToExecFlow::PathGraph private import semmle.code.java.dataflow.ExternalFlow +overlay[local?] deprecated private class ActivateModels extends ActiveExperimentalModels { ActivateModels() { this = "jsch-os-injection" } } diff --git a/java/ql/src/experimental/Security/CWE/CWE-200/AndroidWebResourceResponse.qll b/java/ql/src/experimental/Security/CWE/CWE-200/AndroidWebResourceResponse.qll index bd898df205a8..b988398e4c26 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-200/AndroidWebResourceResponse.qll +++ b/java/ql/src/experimental/Security/CWE/CWE-200/AndroidWebResourceResponse.qll @@ -7,6 +7,7 @@ private import semmle.code.java.dataflow.ExternalFlow private import semmle.code.java.dataflow.FlowSteps private import semmle.code.java.frameworks.android.WebView +overlay[local?] private class ActivateModels extends ActiveExperimentalModels { ActivateModels() { this = "android-web-resource-response" } } diff --git a/java/ql/src/experimental/Security/CWE/CWE-400/ThreadResourceAbuse.qll b/java/ql/src/experimental/Security/CWE/CWE-400/ThreadResourceAbuse.qll index ce6de1a06798..12ba6769f742 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-400/ThreadResourceAbuse.qll +++ b/java/ql/src/experimental/Security/CWE/CWE-400/ThreadResourceAbuse.qll @@ -8,6 +8,7 @@ import semmle.code.java.arithmetic.Overflow import semmle.code.java.dataflow.FlowSteps import semmle.code.java.controlflow.Guards +overlay[local?] private class ActivateModels extends ActiveExperimentalModels { ActivateModels() { this = "thread-resource-abuse" } } diff --git a/java/ql/src/experimental/Security/CWE/CWE-625/PermissiveDotRegexQuery.qll b/java/ql/src/experimental/Security/CWE/CWE-625/PermissiveDotRegexQuery.qll index 8fe997793f4a..f8e328902504 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-625/PermissiveDotRegexQuery.qll +++ b/java/ql/src/experimental/Security/CWE/CWE-625/PermissiveDotRegexQuery.qll @@ -9,6 +9,7 @@ import semmle.code.java.controlflow.Guards import semmle.code.java.security.UrlRedirect import Regex +overlay[local?] private class ActivateModels extends ActiveExperimentalModels { ActivateModels() { this = "permissive-dot-regex-query" } } diff --git a/java/ql/src/experimental/quantum/Examples/TestAESGCMNonce.ql b/java/ql/src/experimental/quantum/Examples/TestAESGCMNonce.ql index 096cfa822161..4c25f5d7beb8 100644 --- a/java/ql/src/experimental/quantum/Examples/TestAESGCMNonce.ql +++ b/java/ql/src/experimental/quantum/Examples/TestAESGCMNonce.ql @@ -7,7 +7,7 @@ import experimental.quantum.Language class AESGCMAlgorithmNode extends Crypto::KeyOperationAlgorithmNode { AESGCMAlgorithmNode() { this.getAlgorithmType() = Crypto::KeyOpAlg::TSymmetricCipher(Crypto::KeyOpAlg::AES()) and - this.getModeOfOperation().getModeType() = Crypto::GCM() + this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::GCM() } } diff --git a/java/ql/src/experimental/quantum/InventorySlices/KnownAsymmetricCipherAlgorithm.ql b/java/ql/src/experimental/quantum/InventorySlices/KnownAsymmetricCipherAlgorithm.ql index 69643d92cd24..ab4a2e72e5ac 100644 --- a/java/ql/src/experimental/quantum/InventorySlices/KnownAsymmetricCipherAlgorithm.ql +++ b/java/ql/src/experimental/quantum/InventorySlices/KnownAsymmetricCipherAlgorithm.ql @@ -11,5 +11,5 @@ import java import experimental.quantum.Language from Crypto::KeyOperationAlgorithmNode a -where a.getAlgorithmType() instanceof Crypto::KeyOpAlg::AsymmetricCipherAlgorithm +where a.getAlgorithmType() instanceof Crypto::KeyOpAlg::AsymmetricCipherAlgorithmType select a, a.getAlgorithmName() diff --git a/java/ql/src/experimental/quantum/InventorySlices/KnownCipherAlgorithm.ql b/java/ql/src/experimental/quantum/InventorySlices/KnownCipherAlgorithm.ql index da3371a59b34..e8c839126177 100644 --- a/java/ql/src/experimental/quantum/InventorySlices/KnownCipherAlgorithm.ql +++ b/java/ql/src/experimental/quantum/InventorySlices/KnownCipherAlgorithm.ql @@ -13,6 +13,6 @@ import experimental.quantum.Language // TODO: should there be a cipher algorithm node? from Crypto::KeyOperationAlgorithmNode a where - a.getAlgorithmType() instanceof Crypto::KeyOpAlg::AsymmetricCipherAlgorithm or - a.getAlgorithmType() instanceof Crypto::KeyOpAlg::SymmetricCipherAlgorithm + a.getAlgorithmType() instanceof Crypto::KeyOpAlg::AsymmetricCipherAlgorithmType or + a.getAlgorithmType() instanceof Crypto::KeyOpAlg::SymmetricCipherAlgorithmType select a, a.getAlgorithmName() diff --git a/java/ql/src/experimental/quantum/InventorySlices/KnownSymmetricCipherAlgorithm.ql b/java/ql/src/experimental/quantum/InventorySlices/KnownSymmetricCipherAlgorithm.ql index e4a8d3ff8679..7f2d550da74c 100644 --- a/java/ql/src/experimental/quantum/InventorySlices/KnownSymmetricCipherAlgorithm.ql +++ b/java/ql/src/experimental/quantum/InventorySlices/KnownSymmetricCipherAlgorithm.ql @@ -11,5 +11,5 @@ import java import experimental.quantum.Language from Crypto::KeyOperationAlgorithmNode a -where a.getAlgorithmType() instanceof Crypto::KeyOpAlg::SymmetricCipherAlgorithm +where a.getAlgorithmType() instanceof Crypto::KeyOpAlg::SymmetricCipherAlgorithmType select a, a.getAlgorithmName() diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 4ea0bc399ca8..aaeb2c86ac1f 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.5.2 +version: 1.6.1-dev groups: - java - queries diff --git a/java/ql/test/library-tests/guards/Guards.java b/java/ql/test/library-tests/guards/Guards.java new file mode 100644 index 000000000000..b75e549d1669 --- /dev/null +++ b/java/ql/test/library-tests/guards/Guards.java @@ -0,0 +1,146 @@ +public class Guards { + static void chk() { } + + static boolean g(Object lbl) { return lbl.hashCode() > 10; } + + static void checkTrue(boolean b, String msg) { + if (!b) throw new Error(msg); + } + + static void checkFalse(boolean b, String msg) { + checkTrue(!b, msg); + } + + void t1(int[] a, String s) { + if (g("A")) { + chk(); // $ guarded=g(A):true + } else { + chk(); // $ guarded=g(A):false + } + + boolean b = g(1) ? g(2) : true; + if (b != false) { + chk(); // $ guarded=...?...:...:true guarded='b != false:true' guarded=b:true + } else { + chk(); // $ guarded=...?...:...:false guarded='b != false:false' guarded=b:false guarded=g(1):true guarded=g(2):false + } + int sz = a != null ? a.length : 0; + for (int i = 0; i < sz; i++) { + chk(); // $ guarded='a != null:true' guarded='i < sz:true' guarded='sz:not 0' guarded='...?...:...:not 0' guarded='a.length:not 0' guarded='a:not null' + int e = a[i]; + if (e > 2) break; + } + chk(); // nothing guards here + + if (g(3)) + s = "bar"; + switch (s) { + case "bar": + chk(); // $ guarded='s:match "bar"' guarded='s:bar' + break; + case "foo": + chk(); // $ guarded='s:match "foo"' guarded='s:foo' guarded=g(3):false + break; + default: + chk(); // $ guarded='s:non-match "bar"' guarded='s:non-match "foo"' guarded='s:not bar' guarded='s:not foo' guarded='s:match default' guarded=g(3):false + break; + } + + Object o = g(4) ? null : s; + if (o instanceof String) { + chk(); // $ guarded=...instanceof...:true guarded='o:not null' guarded='...?...:...:not null' guarded=g(4):false guarded='s:not null' + } + } + + void t2() { + checkTrue(g(1), "A"); + checkFalse(g(2), "B"); + chk(); // $ guarded='checkTrue(...):no exception' guarded=g(1):true guarded='checkFalse(...):no exception' guarded=g(2):false + } + + void t3() { + boolean b = g(1) && (g(2) || g(3)); + if (b) { + chk(); // $ guarded=b:true guarded='g(...) && ... \|\| ...:true' guarded=g(1):true guarded='g(...) \|\| g(...):true' + } else { + chk(); // $ guarded=b:false guarded='g(...) && ... \|\| ...:false' + } + b = g(4) || !g(5); + if (b) { + chk(); // $ guarded=b:true guarded='g(...) \|\| !...:true' + } else { + chk(); // $ guarded=b:false guarded='g(...) \|\| !...:false' guarded=g(4):false guarded=!...:false guarded=g(5):true + } + } + + enum Val { + E1, + E2, + E3 + } + + void t4() { + Val x = null; // unique value + if (g(1)) x = Val.E1; // unique value + if (g(2)) x = Val.E2; + if (g("Alt2")) x = Val.E2; + if (g(3)) x = Val.E3; // unique value + if (x == null) + chk(); // $ guarded='x == null:true' guarded='x:null' guarded=g(1):false guarded=g(2):false guarded=g(Alt2):false guarded=g(3):false + switch (x) { + case E1: + chk(); // $ guarded='x:match E1' guarded='x:E1' guarded=g(1):true guarded=g(2):false guarded=g(Alt2):false guarded=g(3):false + break; + case E2: + chk(); // $ guarded='x:match E2' guarded='x:E2' guarded=g(3):false + break; + case E3: + chk(); // $ guarded='x:match E3' guarded='x:E3' guarded=g(3):true + break; + } + Object o = g(4) ? new Object() : null; + if (o == null) { + chk(); // $ guarded='o == null:true' guarded='o:null' guarded='...?...:...:null' guarded=g(4):false + } else { + chk(); // $ guarded='o == null:false' guarded='o:not null' guarded='...?...:...:not null' guarded=g(4):true + } + } + + void t5(String foo) { + String base = foo; + if (base == null) { + base = "/user"; + } + if (base.equals("/")) + chk(); // $ guarded=equals(/):true guarded='base:/' guarded='base:not null' guarded='base == null:false' guarded='foo:/' guarded='foo:not null' + } + + void t6() { + Object o = null; + if (g(1)) { + o = new Object(); + if (g(2)) { } + } + if (o != null) { + chk(); // $ guarded='o != null:true' guarded='o:not null' guarded=g(1):true + } else { + chk(); // $ guarded='o != null:false' guarded='o:null' guarded=g(1):false + } + } + + void t7(int[] a) { + boolean found = false; + for (int i = 0; i < a.length; i++) { + boolean answer = a[i] == 42; + if (answer) { + found = true; + } + if (found) { + chk(); // $ guarded=found:true guarded='i < a.length:true' + } + } + if (found) { + chk(); // $ guarded=found:true guarded='i < a.length:false' + } + } +} diff --git a/java/ql/test/library-tests/guards/GuardsInline.expected b/java/ql/test/library-tests/guards/GuardsInline.expected new file mode 100644 index 000000000000..c45d536b7e9a --- /dev/null +++ b/java/ql/test/library-tests/guards/GuardsInline.expected @@ -0,0 +1,91 @@ +| Guards.java:16:7:16:11 | chk(...) | g(A):true | +| Guards.java:18:7:18:11 | chk(...) | g(A):false | +| Guards.java:23:7:23:11 | chk(...) | 'b != false:true' | +| Guards.java:23:7:23:11 | chk(...) | ...?...:...:true | +| Guards.java:23:7:23:11 | chk(...) | b:true | +| Guards.java:25:7:25:11 | chk(...) | 'b != false:false' | +| Guards.java:25:7:25:11 | chk(...) | ...?...:...:false | +| Guards.java:25:7:25:11 | chk(...) | b:false | +| Guards.java:25:7:25:11 | chk(...) | g(1):true | +| Guards.java:25:7:25:11 | chk(...) | g(2):false | +| Guards.java:29:7:29:11 | chk(...) | '...?...:...:not 0' | +| Guards.java:29:7:29:11 | chk(...) | 'a != null:true' | +| Guards.java:29:7:29:11 | chk(...) | 'a.length:not 0' | +| Guards.java:29:7:29:11 | chk(...) | 'a:not null' | +| Guards.java:29:7:29:11 | chk(...) | 'i < sz:true' | +| Guards.java:29:7:29:11 | chk(...) | 'sz:not 0' | +| Guards.java:39:9:39:13 | chk(...) | 's:bar' | +| Guards.java:39:9:39:13 | chk(...) | 's:match "bar"' | +| Guards.java:42:9:42:13 | chk(...) | 's:foo' | +| Guards.java:42:9:42:13 | chk(...) | 's:match "foo"' | +| Guards.java:42:9:42:13 | chk(...) | g(3):false | +| Guards.java:45:9:45:13 | chk(...) | 's:match default' | +| Guards.java:45:9:45:13 | chk(...) | 's:non-match "bar"' | +| Guards.java:45:9:45:13 | chk(...) | 's:non-match "foo"' | +| Guards.java:45:9:45:13 | chk(...) | 's:not bar' | +| Guards.java:45:9:45:13 | chk(...) | 's:not foo' | +| Guards.java:45:9:45:13 | chk(...) | g(3):false | +| Guards.java:51:7:51:11 | chk(...) | '...?...:...:not null' | +| Guards.java:51:7:51:11 | chk(...) | 'o:not null' | +| Guards.java:51:7:51:11 | chk(...) | 's:not null' | +| Guards.java:51:7:51:11 | chk(...) | ...instanceof...:true | +| Guards.java:51:7:51:11 | chk(...) | g(4):false | +| Guards.java:58:5:58:9 | chk(...) | 'checkFalse(...):no exception' | +| Guards.java:58:5:58:9 | chk(...) | 'checkTrue(...):no exception' | +| Guards.java:58:5:58:9 | chk(...) | g(1):true | +| Guards.java:58:5:58:9 | chk(...) | g(2):false | +| Guards.java:64:7:64:11 | chk(...) | 'g(...) && ... \|\| ...:true' | +| Guards.java:64:7:64:11 | chk(...) | 'g(...) \|\| g(...):true' | +| Guards.java:64:7:64:11 | chk(...) | b:true | +| Guards.java:64:7:64:11 | chk(...) | g(1):true | +| Guards.java:66:7:66:11 | chk(...) | 'g(...) && ... \|\| ...:false' | +| Guards.java:66:7:66:11 | chk(...) | b:false | +| Guards.java:70:7:70:11 | chk(...) | 'g(...) \|\| !...:true' | +| Guards.java:70:7:70:11 | chk(...) | b:true | +| Guards.java:72:7:72:11 | chk(...) | !...:false | +| Guards.java:72:7:72:11 | chk(...) | 'g(...) \|\| !...:false' | +| Guards.java:72:7:72:11 | chk(...) | b:false | +| Guards.java:72:7:72:11 | chk(...) | g(4):false | +| Guards.java:72:7:72:11 | chk(...) | g(5):true | +| Guards.java:89:7:89:11 | chk(...) | 'x == null:true' | +| Guards.java:89:7:89:11 | chk(...) | 'x:null' | +| Guards.java:89:7:89:11 | chk(...) | g(1):false | +| Guards.java:89:7:89:11 | chk(...) | g(2):false | +| Guards.java:89:7:89:11 | chk(...) | g(3):false | +| Guards.java:89:7:89:11 | chk(...) | g(Alt2):false | +| Guards.java:92:9:92:13 | chk(...) | 'x:E1' | +| Guards.java:92:9:92:13 | chk(...) | 'x:match E1' | +| Guards.java:92:9:92:13 | chk(...) | g(1):true | +| Guards.java:92:9:92:13 | chk(...) | g(2):false | +| Guards.java:92:9:92:13 | chk(...) | g(3):false | +| Guards.java:92:9:92:13 | chk(...) | g(Alt2):false | +| Guards.java:95:9:95:13 | chk(...) | 'x:E2' | +| Guards.java:95:9:95:13 | chk(...) | 'x:match E2' | +| Guards.java:95:9:95:13 | chk(...) | g(3):false | +| Guards.java:98:9:98:13 | chk(...) | 'x:E3' | +| Guards.java:98:9:98:13 | chk(...) | 'x:match E3' | +| Guards.java:98:9:98:13 | chk(...) | g(3):true | +| Guards.java:103:7:103:11 | chk(...) | '...?...:...:null' | +| Guards.java:103:7:103:11 | chk(...) | 'o == null:true' | +| Guards.java:103:7:103:11 | chk(...) | 'o:null' | +| Guards.java:103:7:103:11 | chk(...) | g(4):false | +| Guards.java:105:7:105:11 | chk(...) | '...?...:...:not null' | +| Guards.java:105:7:105:11 | chk(...) | 'o == null:false' | +| Guards.java:105:7:105:11 | chk(...) | 'o:not null' | +| Guards.java:105:7:105:11 | chk(...) | g(4):true | +| Guards.java:115:7:115:11 | chk(...) | 'base == null:false' | +| Guards.java:115:7:115:11 | chk(...) | 'base:/' | +| Guards.java:115:7:115:11 | chk(...) | 'base:not null' | +| Guards.java:115:7:115:11 | chk(...) | 'foo:/' | +| Guards.java:115:7:115:11 | chk(...) | 'foo:not null' | +| Guards.java:115:7:115:11 | chk(...) | equals(/):true | +| Guards.java:125:7:125:11 | chk(...) | 'o != null:true' | +| Guards.java:125:7:125:11 | chk(...) | 'o:not null' | +| Guards.java:125:7:125:11 | chk(...) | g(1):true | +| Guards.java:127:7:127:11 | chk(...) | 'o != null:false' | +| Guards.java:127:7:127:11 | chk(...) | 'o:null' | +| Guards.java:127:7:127:11 | chk(...) | g(1):false | +| Guards.java:139:9:139:13 | chk(...) | 'i < a.length:true' | +| Guards.java:139:9:139:13 | chk(...) | found:true | +| Guards.java:143:7:143:11 | chk(...) | 'i < a.length:false' | +| Guards.java:143:7:143:11 | chk(...) | found:true | diff --git a/java/ql/test/library-tests/guards/GuardsInline.ql b/java/ql/test/library-tests/guards/GuardsInline.ql new file mode 100644 index 000000000000..1b854659d87b --- /dev/null +++ b/java/ql/test/library-tests/guards/GuardsInline.ql @@ -0,0 +1,51 @@ +import java +import semmle.code.java.controlflow.Guards +import codeql.util.Boolean + +string ppGuard(Guard g, Boolean branch) { + exists(MethodCall mc, Literal s | + mc = g and + mc.getAnArgument() = s and + result = mc.getMethod().getName() + "(" + s.getValue() + ")" + ":" + branch + ) + or + exists(BinaryExpr bin | + bin = g and + result = "'" + bin.getLeftOperand() + bin.getOp() + bin.getRightOperand() + ":" + branch + "'" + ) + or + exists(SwitchCase cc, Expr s, string match, string value | + cc = g and + cc.getSelectorExpr() = s and + ( + cc.(ConstCase).getValue().toString() = value + or + cc instanceof DefaultCase and value = "default" + ) and + if branch = true then match = ":match " else match = ":non-match " + | + result = "'" + s.toString() + match + value + "'" + ) +} + +query predicate guarded(MethodCall mc, string guard) { + mc.getMethod().hasName("chk") and + exists(Guard g, BasicBlock bb, boolean branch | + g.controls(bb, branch) and + mc.getBasicBlock() = bb + | + guard = ppGuard(g, branch) + or + not exists(ppGuard(g, branch)) and + guard = g.toString() + ":" + branch + ) + or + mc.getMethod().hasName("chk") and + exists(Guard g, BasicBlock bb, GuardValue val | + g.valueControls(bb, val) and + not exists(val.asBooleanValue()) and + mc.getBasicBlock() = bb + | + guard = "'" + g.toString() + ":" + val + "'" + ) +} diff --git a/java/ql/test/library-tests/guards/GuardsInline.qlref b/java/ql/test/library-tests/guards/GuardsInline.qlref new file mode 100644 index 000000000000..a9492ac8f238 --- /dev/null +++ b/java/ql/test/library-tests/guards/GuardsInline.qlref @@ -0,0 +1,2 @@ +query: GuardsInline.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/library-tests/guards/guardslogic.expected b/java/ql/test/library-tests/guards/guardslogic.expected index 6536ad3b69fa..29c11ccd153d 100644 --- a/java/ql/test/library-tests/guards/guardslogic.expected +++ b/java/ql/test/library-tests/guards/guardslogic.expected @@ -30,33 +30,33 @@ | Logic.java:29:16:29:19 | g(...) | false | Logic.java:30:30:31:5 | { ... } | | Logic.java:29:16:29:19 | g(...) | true | Logic.java:29:23:29:26 | null | | Logic.java:30:9:30:27 | ...instanceof... | true | Logic.java:30:30:31:5 | { ... } | -| Logic.java:35:5:35:29 | checkTrue(...) | true | Logic.java:36:5:36:28 | ; | -| Logic.java:35:5:35:29 | checkTrue(...) | true | Logic.java:37:5:37:15 | if (...) | -| Logic.java:35:5:35:29 | checkTrue(...) | true | Logic.java:37:17:39:5 | { ... } | -| Logic.java:35:5:35:29 | checkTrue(...) | true | Logic.java:40:5:40:18 | var ...; | +| Logic.java:35:5:35:29 | checkTrue(...) | no exception | Logic.java:36:5:36:28 | ; | +| Logic.java:35:5:35:29 | checkTrue(...) | no exception | Logic.java:37:5:37:15 | if (...) | +| Logic.java:35:5:35:29 | checkTrue(...) | no exception | Logic.java:37:17:39:5 | { ... } | +| Logic.java:35:5:35:29 | checkTrue(...) | no exception | Logic.java:40:5:40:18 | var ...; | | Logic.java:35:15:35:19 | ... > ... | true | Logic.java:36:5:36:28 | ; | | Logic.java:35:15:35:19 | ... > ... | true | Logic.java:37:5:37:15 | if (...) | | Logic.java:35:15:35:19 | ... > ... | true | Logic.java:37:17:39:5 | { ... } | | Logic.java:35:15:35:19 | ... > ... | true | Logic.java:40:5:40:18 | var ...; | -| Logic.java:36:5:36:27 | checkFalse(...) | false | Logic.java:37:5:37:15 | if (...) | -| Logic.java:36:5:36:27 | checkFalse(...) | false | Logic.java:37:17:39:5 | { ... } | -| Logic.java:36:5:36:27 | checkFalse(...) | false | Logic.java:40:5:40:18 | var ...; | +| Logic.java:36:5:36:27 | checkFalse(...) | no exception | Logic.java:37:5:37:15 | if (...) | +| Logic.java:36:5:36:27 | checkFalse(...) | no exception | Logic.java:37:17:39:5 | { ... } | +| Logic.java:36:5:36:27 | checkFalse(...) | no exception | Logic.java:40:5:40:18 | var ...; | | Logic.java:36:16:36:21 | g(...) | false | Logic.java:37:5:37:15 | if (...) | | Logic.java:36:16:36:21 | g(...) | false | Logic.java:37:17:39:5 | { ... } | | Logic.java:36:16:36:21 | g(...) | false | Logic.java:40:5:40:18 | var ...; | | Logic.java:37:9:37:14 | ... > ... | true | Logic.java:37:17:39:5 | { ... } | | Logic.java:44:10:44:10 | b | false | Logic.java:44:33:44:35 | msg | -| Logic.java:52:5:52:29 | checkTrue(...) | true | Logic.java:53:5:53:28 | ; | -| Logic.java:52:5:52:29 | checkTrue(...) | true | Logic.java:54:5:54:15 | if (...) | -| Logic.java:52:5:52:29 | checkTrue(...) | true | Logic.java:54:17:56:5 | { ... } | -| Logic.java:52:5:52:29 | checkTrue(...) | true | Logic.java:57:5:57:18 | var ...; | +| Logic.java:52:5:52:29 | checkTrue(...) | no exception | Logic.java:53:5:53:28 | ; | +| Logic.java:52:5:52:29 | checkTrue(...) | no exception | Logic.java:54:5:54:15 | if (...) | +| Logic.java:52:5:52:29 | checkTrue(...) | no exception | Logic.java:54:17:56:5 | { ... } | +| Logic.java:52:5:52:29 | checkTrue(...) | no exception | Logic.java:57:5:57:18 | var ...; | | Logic.java:52:24:52:28 | ... > ... | true | Logic.java:53:5:53:28 | ; | | Logic.java:52:24:52:28 | ... > ... | true | Logic.java:54:5:54:15 | if (...) | | Logic.java:52:24:52:28 | ... > ... | true | Logic.java:54:17:56:5 | { ... } | | Logic.java:52:24:52:28 | ... > ... | true | Logic.java:57:5:57:18 | var ...; | -| Logic.java:53:5:53:27 | checkFalse(...) | false | Logic.java:54:5:54:15 | if (...) | -| Logic.java:53:5:53:27 | checkFalse(...) | false | Logic.java:54:17:56:5 | { ... } | -| Logic.java:53:5:53:27 | checkFalse(...) | false | Logic.java:57:5:57:18 | var ...; | +| Logic.java:53:5:53:27 | checkFalse(...) | no exception | Logic.java:54:5:54:15 | if (...) | +| Logic.java:53:5:53:27 | checkFalse(...) | no exception | Logic.java:54:17:56:5 | { ... } | +| Logic.java:53:5:53:27 | checkFalse(...) | no exception | Logic.java:57:5:57:18 | var ...; | | Logic.java:53:21:53:26 | g(...) | false | Logic.java:54:5:54:15 | if (...) | | Logic.java:53:21:53:26 | g(...) | false | Logic.java:54:17:56:5 | { ... } | | Logic.java:53:21:53:26 | g(...) | false | Logic.java:57:5:57:18 | var ...; | diff --git a/java/ql/test/library-tests/guards/guardslogic.ql b/java/ql/test/library-tests/guards/guardslogic.ql index afbb313d6645..f2ce9fdaa365 100644 --- a/java/ql/test/library-tests/guards/guardslogic.ql +++ b/java/ql/test/library-tests/guards/guardslogic.ql @@ -1,8 +1,9 @@ import java import semmle.code.java.controlflow.Guards -from Guard g, BasicBlock bb, boolean branch +from Guard g, BasicBlock bb, GuardValue gv where - g.controls(bb, branch) and - g.getEnclosingCallable().getDeclaringType().hasName("Logic") -select g, branch, bb + g.valueControls(bb, gv) and + g.getEnclosingCallable().getDeclaringType().hasName("Logic") and + (exists(gv.asBooleanValue()) or gv.isThrowsException() or gv.getDualValue().isThrowsException()) +select g, gv, bb diff --git a/java/ql/test/library-tests/guards/guardspreconditions.expected b/java/ql/test/library-tests/guards/guardspreconditions.expected index 9c0136c8e6e9..41080a5dab6e 100644 --- a/java/ql/test/library-tests/guards/guardspreconditions.expected +++ b/java/ql/test/library-tests/guards/guardspreconditions.expected @@ -1,20 +1,20 @@ -| Preconditions.java:8:9:8:31 | assertTrue(...) | true | Preconditions.java:9:9:9:18 | ; | -| Preconditions.java:13:9:13:32 | assertTrue(...) | true | Preconditions.java:14:9:14:18 | ; | -| Preconditions.java:18:9:18:33 | assertFalse(...) | false | Preconditions.java:19:9:19:18 | ; | -| Preconditions.java:23:9:23:32 | assertFalse(...) | false | Preconditions.java:24:9:24:18 | ; | -| Preconditions.java:28:9:28:41 | assertTrue(...) | true | Preconditions.java:29:9:29:18 | ; | -| Preconditions.java:33:9:33:42 | assertTrue(...) | true | Preconditions.java:34:9:34:18 | ; | -| Preconditions.java:38:9:38:43 | assertFalse(...) | false | Preconditions.java:39:9:39:18 | ; | -| Preconditions.java:43:9:43:42 | assertFalse(...) | false | Preconditions.java:44:9:44:18 | ; | -| Preconditions.java:48:9:48:35 | assertTrue(...) | true | Preconditions.java:49:9:49:18 | ; | -| Preconditions.java:53:9:53:36 | assertTrue(...) | true | Preconditions.java:54:9:54:18 | ; | -| Preconditions.java:58:9:58:37 | assertFalse(...) | false | Preconditions.java:59:9:59:18 | ; | -| Preconditions.java:63:9:63:36 | assertFalse(...) | false | Preconditions.java:64:9:64:18 | ; | -| Preconditions.java:68:9:68:45 | assertTrue(...) | true | Preconditions.java:69:9:69:18 | ; | -| Preconditions.java:73:9:73:46 | assertTrue(...) | true | Preconditions.java:74:9:74:18 | ; | -| Preconditions.java:78:9:78:47 | assertFalse(...) | false | Preconditions.java:79:9:79:18 | ; | -| Preconditions.java:83:9:83:46 | assertFalse(...) | false | Preconditions.java:84:9:84:18 | ; | -| Preconditions.java:88:9:88:15 | t(...) | true | Preconditions.java:89:9:89:18 | ; | -| Preconditions.java:93:9:93:16 | t(...) | true | Preconditions.java:94:9:94:18 | ; | -| Preconditions.java:98:9:98:16 | f(...) | false | Preconditions.java:99:9:99:18 | ; | -| Preconditions.java:103:9:103:15 | f(...) | false | Preconditions.java:104:9:104:18 | ; | +| Preconditions.java:8:9:8:31 | assertTrue(...) | no exception | Preconditions.java:9:9:9:18 | ; | +| Preconditions.java:13:9:13:32 | assertTrue(...) | no exception | Preconditions.java:14:9:14:18 | ; | +| Preconditions.java:18:9:18:33 | assertFalse(...) | no exception | Preconditions.java:19:9:19:18 | ; | +| Preconditions.java:23:9:23:32 | assertFalse(...) | no exception | Preconditions.java:24:9:24:18 | ; | +| Preconditions.java:28:9:28:41 | assertTrue(...) | no exception | Preconditions.java:29:9:29:18 | ; | +| Preconditions.java:33:9:33:42 | assertTrue(...) | no exception | Preconditions.java:34:9:34:18 | ; | +| Preconditions.java:38:9:38:43 | assertFalse(...) | no exception | Preconditions.java:39:9:39:18 | ; | +| Preconditions.java:43:9:43:42 | assertFalse(...) | no exception | Preconditions.java:44:9:44:18 | ; | +| Preconditions.java:48:9:48:35 | assertTrue(...) | no exception | Preconditions.java:49:9:49:18 | ; | +| Preconditions.java:53:9:53:36 | assertTrue(...) | no exception | Preconditions.java:54:9:54:18 | ; | +| Preconditions.java:58:9:58:37 | assertFalse(...) | no exception | Preconditions.java:59:9:59:18 | ; | +| Preconditions.java:63:9:63:36 | assertFalse(...) | no exception | Preconditions.java:64:9:64:18 | ; | +| Preconditions.java:68:9:68:45 | assertTrue(...) | no exception | Preconditions.java:69:9:69:18 | ; | +| Preconditions.java:73:9:73:46 | assertTrue(...) | no exception | Preconditions.java:74:9:74:18 | ; | +| Preconditions.java:78:9:78:47 | assertFalse(...) | no exception | Preconditions.java:79:9:79:18 | ; | +| Preconditions.java:83:9:83:46 | assertFalse(...) | no exception | Preconditions.java:84:9:84:18 | ; | +| Preconditions.java:88:9:88:15 | t(...) | no exception | Preconditions.java:89:9:89:18 | ; | +| Preconditions.java:93:9:93:16 | t(...) | no exception | Preconditions.java:94:9:94:18 | ; | +| Preconditions.java:98:9:98:16 | f(...) | no exception | Preconditions.java:99:9:99:18 | ; | +| Preconditions.java:103:9:103:15 | f(...) | no exception | Preconditions.java:104:9:104:18 | ; | diff --git a/java/ql/test/library-tests/guards/guardspreconditions.ql b/java/ql/test/library-tests/guards/guardspreconditions.ql index 12c823e9638c..77e4a4e48c08 100644 --- a/java/ql/test/library-tests/guards/guardspreconditions.ql +++ b/java/ql/test/library-tests/guards/guardspreconditions.ql @@ -1,8 +1,9 @@ import java import semmle.code.java.controlflow.Guards -from Guard g, BasicBlock bb, boolean branch +from Guard g, BasicBlock bb, GuardValue gv where - g.controls(bb, branch) and - g.getEnclosingCallable().getDeclaringType().hasName("Preconditions") -select g, branch, bb + g.valueControls(bb, gv) and + g.getEnclosingCallable().getDeclaringType().hasName("Preconditions") and + (gv.isThrowsException() or gv.getDualValue().isThrowsException()) +select g, gv, bb diff --git a/java/ql/test/library-tests/guards12/guard.expected b/java/ql/test/library-tests/guards12/guard.expected index 0980e891d84a..fade9fd4e8fc 100644 --- a/java/ql/test/library-tests/guards12/guard.expected +++ b/java/ql/test/library-tests/guards12/guard.expected @@ -51,13 +51,5 @@ hasBranchEdge | Test.java:12:7:12:17 | case ... | Test.java:9:13:9:13 | s | Test.java:12:12:12:14 | "d" | true | false | Test.java:13:7:13:16 | default | | Test.java:12:7:12:17 | case ... | Test.java:9:13:9:13 | s | Test.java:12:12:12:14 | "d" | true | true | Test.java:12:7:12:17 | case ... | | Test.java:17:26:17:33 | ... == ... | Test.java:17:26:17:28 | len | Test.java:17:33:17:33 | 4 | true | true | Test.java:17:38:17:40 | { ... } | -| Test.java:18:7:18:17 | case ... | Test.java:16:13:16:13 | s | Test.java:18:12:18:14 | "e" | true | false | Test.java:19:7:19:16 | default | -| Test.java:18:7:18:17 | case ... | Test.java:16:13:16:13 | s | Test.java:18:12:18:14 | "e" | true | true | Test.java:18:7:18:17 | case ... | -| Test.java:22:7:22:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:22:12:22:14 | "f" | true | false | Test.java:25:7:25:16 | default | -| Test.java:22:7:22:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:22:12:22:14 | "f" | true | true | Test.java:22:7:22:17 | case ... | | Test.java:23:27:23:34 | ... == ... | Test.java:23:27:23:29 | len | Test.java:23:34:23:34 | 4 | true | true | Test.java:23:39:23:41 | { ... } | -| Test.java:24:7:24:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:24:12:24:14 | "g" | true | false | Test.java:25:7:25:16 | default | -| Test.java:24:7:24:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:24:12:24:14 | "g" | true | true | Test.java:24:7:24:17 | case ... | -| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | false | Test.java:33:7:33:14 | default | | Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | true | Test.java:28:7:28:15 | case ... | -| Test.java:30:7:30:15 | case ... | Test.java:27:13:27:13 | s | Test.java:30:12:30:14 | "i" | true | false | Test.java:33:7:33:14 | default | diff --git a/java/ql/test/library-tests/guards12/guard.ql b/java/ql/test/library-tests/guards12/guard.ql index cff2845ad9f8..d53dfdbc7135 100644 --- a/java/ql/test/library-tests/guards12/guard.ql +++ b/java/ql/test/library-tests/guards12/guard.ql @@ -1,8 +1,8 @@ import java import semmle.code.java.controlflow.Guards -query predicate hasBranchEdge(Guard g, BasicBlock bb1, BasicBlock bb2, boolean branch) { - g.hasBranchEdge(bb1, bb2, branch) +query predicate hasBranchEdge(Guard g, BasicBlock bb1, BasicBlock bb2, GuardValue branch) { + g.hasValueBranchEdge(bb1, bb2, branch) } from Guard g, BasicBlock bb, boolean branch, Expr e1, Expr e2, boolean pol diff --git a/java/ql/test/query-tests/CallsToRunnableRun/CallsToRunnableRun.expected b/java/ql/test/query-tests/CallsToRunnableRun/CallsToRunnableRun.expected index 0be8b917e026..7b8e175162ca 100644 --- a/java/ql/test/query-tests/CallsToRunnableRun/CallsToRunnableRun.expected +++ b/java/ql/test/query-tests/CallsToRunnableRun/CallsToRunnableRun.expected @@ -1 +1,5 @@ -| CallsToRunnableRun.java:15:3:15:15 | run(...) | Calling 'Thread.run()' rather than 'Thread.start()' will not spawn a new thread. | +| CallsToRunnableRun.java:67:5:67:16 | run(...) | Calling 'Thread.run()' rather than 'Thread.start()' will not spawn a new thread. | +| CallsToRunnableRun.java:71:5:71:24 | run(...) | Calling 'Thread.run()' rather than 'Thread.start()' will not spawn a new thread. | +| CallsToRunnableRun.java:75:5:75:24 | run(...) | Calling 'Thread.run()' rather than 'Thread.start()' will not spawn a new thread. | +| CallsToRunnableRun.java:79:5:79:27 | run(...) | Calling 'Thread.run()' rather than 'Thread.start()' will not spawn a new thread. | +| CallsToRunnableRun.java:83:5:83:27 | run(...) | Calling 'Thread.run()' rather than 'Thread.start()' will not spawn a new thread. | diff --git a/java/ql/test/query-tests/CallsToRunnableRun/CallsToRunnableRun.java b/java/ql/test/query-tests/CallsToRunnableRun/CallsToRunnableRun.java index 814c9d516bbf..21ed4276458c 100644 --- a/java/ql/test/query-tests/CallsToRunnableRun/CallsToRunnableRun.java +++ b/java/ql/test/query-tests/CallsToRunnableRun/CallsToRunnableRun.java @@ -1,18 +1,95 @@ -import java.lang.Runnable; - -public class CallsToRunnableRun extends Thread implements Runnable{ - - private Thread wrapped; - private Runnable callback; - - @Override - public void run() { - wrapped.run(); - callback.run(); - } - - public void bad() { - wrapped.run(); - callback.run(); - } +class Job implements Runnable { + public void run() { + /* ... */ + } +} + +/** + * A class that subclasses `java.lang.Thread` and inherits its `.run()` method. + */ +class AnotherThread1 extends Thread { + AnotherThread1(Runnable runnable) { + super(runnable); + } +} + +/** + * A class that directly subclasses `java.lang.Thread` and overrides its + * `.run()` method. + */ +class AnotherThread2 extends Thread { + AnotherThread2(Runnable runnable) { + super(runnable); + } + + /** + * An overriding definition of `Thread.run`. + */ + @Override + public void run() { + super.run(); // COMPLIANT: called within a `run` method + } +} + +/** + * A class that indirectly subclasses `java.lang.Thread` by subclassing + * `AnotherThread1` and inherits its `.run()` + * method. + */ +class YetAnotherThread1 extends AnotherThread1 { + YetAnotherThread1(Runnable runnable) { + super(runnable); + } +} + +/** + * A class that indirectly subclasses `java.lang.Thread` by subclassing + * `AnotherThread2` and overrides its `.run()` + * method. + */ +class YetAnotherThread2 extends AnotherThread2 { + YetAnotherThread2(Runnable runnable) { + super(runnable); + } + + /** + * An overriding definition of `AnotherThread.run`. + */ + @Override + public void run() { + super.run(); // COMPLIANT: called within a `run` method + } +} + +class ThreadExample { + public void f() { + Thread thread = new Thread(new Job()); + thread.run(); // $ Alert - `Thread.run()` called directly. + thread.start(); // COMPLIANT: Thread started with `.start()`. + + AnotherThread1 anotherThread1 = new AnotherThread1(new Job()); + anotherThread1.run(); // $ Alert - Inherited `Thread.run()` called on its instance. + anotherThread1.start(); // COMPLIANT: Inherited `Thread.start()` used to start the thread. + + AnotherThread2 anotherThread2 = new AnotherThread2(new Job()); + anotherThread2.run(); // $ Alert - Overriden `Thread.run()` called on its instance. + anotherThread2.start(); // COMPLIANT: Overriden `Thread.start()` used to start the thread. + + YetAnotherThread1 yetAnotherThread1 = new YetAnotherThread1(new Job()); + yetAnotherThread1.run(); // $ Alert - Inherited `AnotherThread1.run()` called on its instance. + yetAnotherThread1.start(); // COMPLIANT: Inherited `AnotherThread.start()` used to start the thread. + + YetAnotherThread2 yetAnotherThread2 = new YetAnotherThread2(new Job()); + yetAnotherThread2.run(); // $ Alert - Overriden `AnotherThread2.run()` called on its instance. + yetAnotherThread2.start(); // COMPLIANT: Overriden `AnotherThread2.start()` used to start the thread. + + Runnable runnable = new Runnable() { + public void run() { + /* ... */ } + }; + runnable.run(); // COMPLIANT: called on `Runnable` object. + + Job job = new Job(); + job.run(); // COMPLIANT: called on `Runnable` object. + } } diff --git a/java/ql/test/query-tests/CallsToRunnableRun/CallsToRunnableRun.qlref b/java/ql/test/query-tests/CallsToRunnableRun/CallsToRunnableRun.qlref index fff4a4f5770c..4061770874fe 100644 --- a/java/ql/test/query-tests/CallsToRunnableRun/CallsToRunnableRun.qlref +++ b/java/ql/test/query-tests/CallsToRunnableRun/CallsToRunnableRun.qlref @@ -1 +1,2 @@ -Likely Bugs/Concurrency/CallsToRunnableRun.ql \ No newline at end of file +query: Likely Bugs/Concurrency/CallsToRunnableRun.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/Nullness/C.java b/java/ql/test/query-tests/Nullness/C.java index ac6a5f291da2..d195eea6acb3 100644 --- a/java/ql/test/query-tests/Nullness/C.java +++ b/java/ql/test/query-tests/Nullness/C.java @@ -60,7 +60,7 @@ public void ex5(boolean hasArr, int[] arr) { arrLen = arr == null ? 0 : arr.length; } if (arrLen > 0) { - arr[0] = 0; // NPE - false positive + arr[0] = 0; // OK } } @@ -244,4 +244,14 @@ public void ex17() { } xs[0]++; // OK } + + public void ex18(boolean b, int[] xs, Object related) { + assert (!b && xs == null && related == null) || + (b && xs != null && related != null) || + (b && xs == null && related == null); + if (b) { + if (related == null) { return; } + xs[0] = 42; // OK + } + } } diff --git a/java/ql/test/query-tests/Nullness/NullMaybe.expected b/java/ql/test/query-tests/Nullness/NullMaybe.expected index 80cf8f00f8d5..a19fae57e74e 100644 --- a/java/ql/test/query-tests/Nullness/NullMaybe.expected +++ b/java/ql/test/query-tests/Nullness/NullMaybe.expected @@ -24,7 +24,6 @@ | C.java:10:17:10:18 | a3 | Variable $@ may be null at this access because of $@ assignment. | C.java:8:5:8:21 | long[] a3 | a3 | C.java:8:12:8:20 | a3 | this | | C.java:21:7:21:8 | s1 | Variable $@ may be null at this access because of $@ assignment. | C.java:14:5:14:30 | String s1 | s1 | C.java:17:7:17:24 | ...=... | this | | C.java:51:7:51:11 | slice | Variable $@ may be null at this access because of $@ assignment. | C.java:43:5:43:30 | List slice | slice | C.java:43:18:43:29 | slice | this | -| C.java:63:7:63:9 | arr | Variable $@ may be null at this access as suggested by $@ null guard. | C.java:57:35:57:43 | arr | arr | C.java:60:16:60:26 | ... == ... | this | | C.java:100:7:100:10 | arr2 | Variable $@ may be null at this access because of $@ assignment. | C.java:95:5:95:22 | int[] arr2 | arr2 | C.java:95:11:95:21 | arr2 | this | | C.java:110:25:110:27 | obj | Variable $@ may be null at this access because of $@ assignment. | C.java:106:5:106:30 | Object obj | obj | C.java:118:13:118:22 | ...=... | this | | C.java:137:7:137:10 | obj2 | Variable $@ may be null at this access as suggested by $@ null guard. | C.java:131:5:131:23 | Object obj2 | obj2 | C.java:132:9:132:20 | ... != ... | this | diff --git a/java/ql/test/query-tests/RangeAnalysis/A.java b/java/ql/test/query-tests/RangeAnalysis/A.java index 4fd1b87bb708..b68de9beaa7c 100644 --- a/java/ql/test/query-tests/RangeAnalysis/A.java +++ b/java/ql/test/query-tests/RangeAnalysis/A.java @@ -64,7 +64,7 @@ void m4(int[] a, int[] b) { int sum = 0; for (int i = 0; i < a.length; ) { sum += a[i++]; // OK - sum += a[i++]; // OK - FP + sum += a[i++]; // OK } int len = b.length; if ((len & 1) != 0) diff --git a/java/ql/test/query-tests/RangeAnalysis/ArrayIndexOutOfBounds.expected b/java/ql/test/query-tests/RangeAnalysis/ArrayIndexOutOfBounds.expected index dc0b87d68b25..92099db01cbd 100644 --- a/java/ql/test/query-tests/RangeAnalysis/ArrayIndexOutOfBounds.expected +++ b/java/ql/test/query-tests/RangeAnalysis/ArrayIndexOutOfBounds.expected @@ -3,7 +3,6 @@ | A.java:45:14:45:22 | ...[...] | This array access might be out of bounds, as the index might be equal to the array length. | | A.java:49:14:49:22 | ...[...] | This array access might be out of bounds, as the index might be equal to the array length. | | A.java:58:14:58:19 | ...[...] | This array access might be out of bounds, as the index might be equal to the array length. | -| A.java:67:14:67:19 | ...[...] | This array access might be out of bounds, as the index might be equal to the array length. | | A.java:89:12:89:16 | ...[...] | This array access might be out of bounds, as the index might be equal to the array length. | | A.java:100:18:100:31 | ...[...] | This array access might be out of bounds, as the index might be equal to the array length + 8. | | A.java:113:14:113:21 | ...[...] | This array access might be out of bounds, as the index might be equal to the array length. | diff --git a/java/ql/test/query-tests/ScheduledThreadPoolExecutorZeroThread/ScheduledThreadPoolExecutorZeroThread.expected b/java/ql/test/query-tests/ScheduledThreadPoolExecutorZeroThread/ScheduledThreadPoolExecutorZeroThread.expected new file mode 100644 index 000000000000..038f2d1d9988 --- /dev/null +++ b/java/ql/test/query-tests/ScheduledThreadPoolExecutorZeroThread/ScheduledThreadPoolExecutorZeroThread.expected @@ -0,0 +1,3 @@ +| Test.java:7:42:7:75 | new ScheduledThreadPoolExecutor(...) | ScheduledThreadPoolExecutor.corePoolSize is set to have 0 threads. | +| Test.java:8:9:8:28 | setCorePoolSize(...) | ScheduledThreadPoolExecutor.corePoolSize is set to have 0 threads. | +| Test.java:9:9:9:28 | setCorePoolSize(...) | ScheduledThreadPoolExecutor.corePoolSize is set to have 0 threads. | diff --git a/java/ql/test/query-tests/ScheduledThreadPoolExecutorZeroThread/ScheduledThreadPoolExecutorZeroThread.qlref b/java/ql/test/query-tests/ScheduledThreadPoolExecutorZeroThread/ScheduledThreadPoolExecutorZeroThread.qlref new file mode 100644 index 000000000000..e0089e4cf029 --- /dev/null +++ b/java/ql/test/query-tests/ScheduledThreadPoolExecutorZeroThread/ScheduledThreadPoolExecutorZeroThread.qlref @@ -0,0 +1,2 @@ +query: Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/ScheduledThreadPoolExecutorZeroThread/Test.java b/java/ql/test/query-tests/ScheduledThreadPoolExecutorZeroThread/Test.java new file mode 100644 index 000000000000..d02e6a3403eb --- /dev/null +++ b/java/ql/test/query-tests/ScheduledThreadPoolExecutorZeroThread/Test.java @@ -0,0 +1,11 @@ +import java.util.concurrent.ScheduledThreadPoolExecutor; + +public class Test { + void f() { + int i = 0; + ScheduledThreadPoolExecutor s = new ScheduledThreadPoolExecutor(1); // Compliant + ScheduledThreadPoolExecutor s1 = new ScheduledThreadPoolExecutor(0); // $ Alert + s.setCorePoolSize(0); // $ Alert + s.setCorePoolSize(i); // $ Alert + } +} diff --git a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.expected b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.expected index e69de29bb2d1..aee29733bca4 100644 --- a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.expected +++ b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.expected @@ -0,0 +1,474 @@ +#select +| TaintedPath.java:16:71:16:78 | filename | TaintedPath.java:13:58:13:78 | getInputStream(...) : InputStream | TaintedPath.java:16:71:16:78 | filename | This path depends on a $@. | TaintedPath.java:13:58:13:78 | getInputStream(...) | user-provided value | +| Test.java:37:52:37:68 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:37:52:37:68 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:39:32:39:48 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:39:32:39:48 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:41:47:41:63 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:41:47:41:63 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:43:10:43:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:43:10:43:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:45:10:45:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:45:10:45:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:47:10:47:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:47:10:47:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:49:10:49:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:49:10:49:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:51:39:51:53 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:51:39:51:53 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:53:10:53:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:53:10:53:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:55:10:55:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:55:10:55:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:57:10:57:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:57:10:57:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:59:10:59:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:59:10:59:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:61:10:61:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:61:10:61:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:63:10:63:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:63:10:63:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:65:10:65:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:65:10:65:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:67:10:67:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:67:10:67:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:69:31:69:45 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:69:31:69:45 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:71:10:71:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:71:10:71:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:73:10:73:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:73:10:73:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:75:10:75:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:75:10:75:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:77:10:77:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:77:10:77:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:79:10:79:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:79:10:79:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:81:10:81:24 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:81:10:81:24 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:83:31:83:45 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:83:31:83:45 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:85:29:85:43 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:85:29:85:43 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:87:29:87:53 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:87:29:87:53 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:89:29:89:45 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:89:29:89:45 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:91:24:91:38 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:91:24:91:38 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:93:24:93:48 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:93:24:93:48 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:95:24:95:38 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:95:24:95:38 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:97:24:97:40 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:97:24:97:40 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:99:24:99:40 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:99:24:99:40 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:101:20:101:34 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:101:20:101:34 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:102:20:102:34 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:102:20:102:34 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:104:33:104:47 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:104:33:104:47 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:105:40:105:54 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:105:40:105:54 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:107:33:107:47 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:107:33:107:47 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:109:31:109:45 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:109:31:109:45 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:111:26:111:40 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:111:26:111:40 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:113:26:113:40 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:113:26:113:40 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:115:34:115:48 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:115:34:115:48 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:117:35:117:49 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:117:35:117:49 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:119:30:119:44 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:119:30:119:44 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:121:22:121:36 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:121:22:121:36 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:123:30:123:44 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:123:30:123:44 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:125:21:125:35 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:125:21:125:35 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:127:26:127:40 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:127:26:127:40 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:129:33:129:47 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:129:33:129:47 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:131:33:131:47 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:131:33:131:47 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:132:33:132:47 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:132:33:132:47 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:134:31:134:45 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:134:31:134:45 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:136:21:136:35 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:136:21:136:35 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:137:21:137:35 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:137:21:137:35 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:138:21:138:35 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:138:21:138:35 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:140:27:140:41 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:140:27:140:41 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:141:27:141:41 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:141:27:141:41 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:143:26:143:40 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:143:26:143:40 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:145:35:145:49 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:145:35:145:49 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:147:41:147:57 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:147:41:147:57 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:149:45:149:61 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:149:45:149:61 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:151:43:151:57 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:151:43:151:57 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:153:28:153:42 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:153:28:153:42 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:155:41:155:55 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:155:41:155:55 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:160:30:160:44 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:160:30:160:44 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:162:40:162:81 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:162:40:162:81 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:164:34:164:75 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:164:34:164:75 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:166:34:166:75 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:166:34:166:75 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:168:23:168:37 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:168:23:168:37 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:181:23:181:37 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:181:23:181:37 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:186:23:186:40 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:186:23:186:40 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:188:20:188:34 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:188:20:188:34 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:190:21:190:35 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:190:21:190:35 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:192:22:192:36 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:192:22:192:36 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:197:20:197:34 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:197:20:197:34 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:199:19:199:33 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:199:19:199:33 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +| Test.java:204:20:204:36 | (...)... | Test.java:32:16:32:45 | getParameter(...) : String | Test.java:204:20:204:36 | (...)... | This path depends on a $@. | Test.java:32:16:32:45 | getParameter(...) | user-provided value | +edges +| TaintedPath.java:13:17:13:89 | new BufferedReader(...) : BufferedReader | TaintedPath.java:14:27:14:40 | filenameReader : BufferedReader | provenance | | +| TaintedPath.java:13:36:13:88 | new InputStreamReader(...) : InputStreamReader | TaintedPath.java:13:17:13:89 | new BufferedReader(...) : BufferedReader | provenance | MaD:74 | +| TaintedPath.java:13:58:13:78 | getInputStream(...) : InputStream | TaintedPath.java:13:36:13:88 | new InputStreamReader(...) : InputStreamReader | provenance | Src:MaD:72 MaD:76 | +| TaintedPath.java:14:27:14:40 | filenameReader : BufferedReader | TaintedPath.java:14:27:14:51 | readLine(...) : String | provenance | MaD:75 | +| TaintedPath.java:14:27:14:51 | readLine(...) : String | TaintedPath.java:16:71:16:78 | filename | provenance | Sink:MaD:27 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:37:61:37:68 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:39:41:39:48 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:41:56:41:63 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:43:17:43:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:45:17:45:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:47:17:47:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:49:17:49:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:51:46:51:53 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:53:17:53:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:55:17:55:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:57:17:57:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:59:17:59:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:61:17:61:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:63:17:63:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:65:17:65:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:67:17:67:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:69:38:69:45 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:71:17:71:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:73:17:73:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:75:17:75:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:77:17:77:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:79:17:79:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:81:17:81:24 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:83:38:83:45 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:85:36:85:43 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:87:46:87:53 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:89:38:89:45 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:91:31:91:38 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:93:41:93:48 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:95:31:95:38 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:97:33:97:40 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:99:33:99:40 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:101:27:101:34 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:102:27:102:34 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:104:40:104:47 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:105:47:105:54 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:107:40:107:47 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:109:38:109:45 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:111:33:111:40 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:113:33:113:40 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:115:41:115:48 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:117:42:117:49 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:119:37:119:44 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:121:29:121:36 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:123:37:123:44 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:125:28:125:35 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:127:33:127:40 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:129:40:129:47 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:131:40:131:47 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:132:40:132:47 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:134:38:134:45 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:136:28:136:35 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:137:28:137:35 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:138:28:138:35 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:140:34:140:41 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:141:34:141:41 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:143:33:143:40 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:145:42:145:49 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:147:50:147:57 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:149:54:149:61 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:151:50:151:57 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:153:35:153:42 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:155:48:155:55 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:160:37:160:44 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:162:74:162:81 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:164:68:164:75 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:166:68:166:75 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:168:30:168:37 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:181:30:181:37 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:186:33:186:40 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:188:27:188:34 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:190:28:190:35 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:192:29:192:36 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:197:27:197:34 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:199:26:199:33 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:32:16:32:45 | getParameter(...) : String | Test.java:204:29:204:36 | source(...) : String | provenance | Src:MaD:73 | +| Test.java:37:61:37:68 | source(...) : String | Test.java:37:52:37:68 | (...)... | provenance | Sink:MaD:31 | +| Test.java:39:41:39:48 | source(...) : String | Test.java:39:32:39:48 | (...)... | provenance | Sink:MaD:29 | +| Test.java:41:56:41:63 | source(...) : String | Test.java:41:47:41:63 | (...)... | provenance | Sink:MaD:30 | +| Test.java:43:17:43:24 | source(...) : String | Test.java:43:10:43:24 | (...)... | provenance | Sink:MaD:1 | +| Test.java:45:17:45:24 | source(...) : String | Test.java:45:10:45:24 | (...)... | provenance | Sink:MaD:2 | +| Test.java:47:17:47:24 | source(...) : String | Test.java:47:10:47:24 | (...)... | provenance | Sink:MaD:3 | +| Test.java:49:17:49:24 | source(...) : String | Test.java:49:10:49:24 | (...)... | provenance | Sink:MaD:4 | +| Test.java:51:46:51:53 | source(...) : String | Test.java:51:39:51:53 | (...)... | provenance | Sink:MaD:5 | +| Test.java:53:17:53:24 | source(...) : String | Test.java:53:10:53:24 | (...)... | provenance | Sink:MaD:6 | +| Test.java:55:17:55:24 | source(...) : String | Test.java:55:10:55:24 | (...)... | provenance | Sink:MaD:7 | +| Test.java:57:17:57:24 | source(...) : String | Test.java:57:10:57:24 | (...)... | provenance | Sink:MaD:8 | +| Test.java:59:17:59:24 | source(...) : String | Test.java:59:10:59:24 | (...)... | provenance | Sink:MaD:9 | +| Test.java:61:17:61:24 | source(...) : String | Test.java:61:10:61:24 | (...)... | provenance | Sink:MaD:10 | +| Test.java:63:17:63:24 | source(...) : String | Test.java:63:10:63:24 | (...)... | provenance | Sink:MaD:11 | +| Test.java:65:17:65:24 | source(...) : String | Test.java:65:10:65:24 | (...)... | provenance | Sink:MaD:12 | +| Test.java:67:17:67:24 | source(...) : String | Test.java:67:10:67:24 | (...)... | provenance | Sink:MaD:13 | +| Test.java:69:38:69:45 | source(...) : String | Test.java:69:31:69:45 | (...)... | provenance | Sink:MaD:14 | +| Test.java:71:17:71:24 | source(...) : String | Test.java:71:10:71:24 | (...)... | provenance | Sink:MaD:15 | +| Test.java:73:17:73:24 | source(...) : String | Test.java:73:10:73:24 | (...)... | provenance | Sink:MaD:16 | +| Test.java:75:17:75:24 | source(...) : String | Test.java:75:10:75:24 | (...)... | provenance | Sink:MaD:17 | +| Test.java:77:17:77:24 | source(...) : String | Test.java:77:10:77:24 | (...)... | provenance | Sink:MaD:19 | +| Test.java:79:17:79:24 | source(...) : String | Test.java:79:10:79:24 | (...)... | provenance | Sink:MaD:18 | +| Test.java:81:17:81:24 | source(...) : String | Test.java:81:10:81:24 | (...)... | provenance | Sink:MaD:20 | +| Test.java:83:38:83:45 | source(...) : String | Test.java:83:31:83:45 | (...)... | provenance | Sink:MaD:14 | +| Test.java:85:36:85:43 | source(...) : String | Test.java:85:29:85:43 | (...)... | provenance | Sink:MaD:21 | +| Test.java:87:46:87:53 | source(...) : String | Test.java:87:29:87:53 | (...)... | provenance | Sink:MaD:22 | +| Test.java:89:38:89:45 | source(...) : String | Test.java:89:29:89:45 | (...)... | provenance | Sink:MaD:23 | +| Test.java:91:31:91:38 | source(...) : String | Test.java:91:24:91:38 | (...)... | provenance | Sink:MaD:24 | +| Test.java:93:41:93:48 | source(...) : String | Test.java:93:24:93:48 | (...)... | provenance | Sink:MaD:26 | +| Test.java:95:31:95:38 | source(...) : String | Test.java:95:24:95:38 | (...)... | provenance | Sink:MaD:25 | +| Test.java:97:33:97:40 | source(...) : String | Test.java:97:24:97:40 | (...)... | provenance | Sink:MaD:27 | +| Test.java:99:33:99:40 | source(...) : String | Test.java:99:24:99:40 | (...)... | provenance | Sink:MaD:28 | +| Test.java:101:27:101:34 | source(...) : String | Test.java:101:20:101:34 | (...)... | provenance | Sink:MaD:34 | +| Test.java:102:27:102:34 | source(...) : String | Test.java:102:20:102:34 | (...)... | provenance | Sink:MaD:33 | +| Test.java:104:40:104:47 | source(...) : String | Test.java:104:33:104:47 | (...)... | provenance | Sink:MaD:35 | +| Test.java:105:47:105:54 | source(...) : String | Test.java:105:40:105:54 | (...)... | provenance | Sink:MaD:32 | +| Test.java:107:40:107:47 | source(...) : String | Test.java:107:33:107:47 | (...)... | provenance | Sink:MaD:36 | +| Test.java:109:38:109:45 | source(...) : String | Test.java:109:31:109:45 | (...)... | provenance | Sink:MaD:37 | +| Test.java:111:33:111:40 | source(...) : String | Test.java:111:26:111:40 | (...)... | provenance | Sink:MaD:38 | +| Test.java:113:33:113:40 | source(...) : String | Test.java:113:26:113:40 | (...)... | provenance | Sink:MaD:39 | +| Test.java:115:41:115:48 | source(...) : String | Test.java:115:34:115:48 | (...)... | provenance | Sink:MaD:40 | +| Test.java:117:42:117:49 | source(...) : String | Test.java:117:35:117:49 | (...)... | provenance | Sink:MaD:41 | +| Test.java:119:37:119:44 | source(...) : String | Test.java:119:30:119:44 | (...)... | provenance | Sink:MaD:42 | +| Test.java:121:29:121:36 | source(...) : String | Test.java:121:22:121:36 | (...)... | provenance | Sink:MaD:43 | +| Test.java:123:37:123:44 | source(...) : String | Test.java:123:30:123:44 | (...)... | provenance | Sink:MaD:44 | +| Test.java:125:28:125:35 | source(...) : String | Test.java:125:21:125:35 | (...)... | provenance | Sink:MaD:45 | +| Test.java:127:33:127:40 | source(...) : String | Test.java:127:26:127:40 | (...)... | provenance | Sink:MaD:46 | +| Test.java:129:40:129:47 | source(...) : String | Test.java:129:33:129:47 | (...)... | provenance | Sink:MaD:47 | +| Test.java:131:40:131:47 | source(...) : String | Test.java:131:33:131:47 | (...)... | provenance | Sink:MaD:48 | +| Test.java:132:40:132:47 | source(...) : String | Test.java:132:33:132:47 | (...)... | provenance | Sink:MaD:48 | +| Test.java:134:38:134:45 | source(...) : String | Test.java:134:31:134:45 | (...)... | provenance | Sink:MaD:49 | +| Test.java:136:28:136:35 | source(...) : String | Test.java:136:21:136:35 | (...)... | provenance | Sink:MaD:50 | +| Test.java:137:28:137:35 | source(...) : String | Test.java:137:21:137:35 | (...)... | provenance | Sink:MaD:50 | +| Test.java:138:28:138:35 | source(...) : String | Test.java:138:21:138:35 | (...)... | provenance | Sink:MaD:50 | +| Test.java:140:34:140:41 | source(...) : String | Test.java:140:27:140:41 | (...)... | provenance | Sink:MaD:51 | +| Test.java:141:34:141:41 | source(...) : String | Test.java:141:27:141:41 | (...)... | provenance | Sink:MaD:51 | +| Test.java:143:33:143:40 | source(...) : String | Test.java:143:26:143:40 | (...)... | provenance | Sink:MaD:52 | +| Test.java:145:42:145:49 | source(...) : String | Test.java:145:35:145:49 | (...)... | provenance | Sink:MaD:53 | +| Test.java:147:50:147:57 | source(...) : String | Test.java:147:41:147:57 | (...)... | provenance | Sink:MaD:65 | +| Test.java:149:54:149:61 | source(...) : String | Test.java:149:45:149:61 | (...)... | provenance | Sink:MaD:66 | +| Test.java:151:50:151:57 | source(...) : String | Test.java:151:43:151:57 | (...)... | provenance | Sink:MaD:71 | +| Test.java:153:35:153:42 | source(...) : String | Test.java:153:28:153:42 | (...)... | provenance | Sink:MaD:69 | +| Test.java:155:48:155:55 | source(...) : String | Test.java:155:41:155:55 | (...)... | provenance | Sink:MaD:70 | +| Test.java:160:37:160:44 | source(...) : String | Test.java:160:30:160:44 | (...)... | provenance | Sink:MaD:63 | +| Test.java:162:74:162:81 | source(...) : String | Test.java:162:40:162:81 | (...)... | provenance | Sink:MaD:60 | +| Test.java:164:68:164:75 | source(...) : String | Test.java:164:34:164:75 | (...)... | provenance | Sink:MaD:62 | +| Test.java:166:68:166:75 | source(...) : String | Test.java:166:34:166:75 | (...)... | provenance | Sink:MaD:61 | +| Test.java:168:30:168:37 | source(...) : String | Test.java:168:23:168:37 | (...)... | provenance | Sink:MaD:67 | +| Test.java:181:30:181:37 | source(...) : String | Test.java:181:23:181:37 | (...)... | provenance | Sink:MaD:64 | +| Test.java:186:33:186:40 | source(...) : String | Test.java:186:23:186:40 | (...)... | provenance | Sink:MaD:54 | +| Test.java:188:27:188:34 | source(...) : String | Test.java:188:20:188:34 | (...)... | provenance | Sink:MaD:55 | +| Test.java:190:28:190:35 | source(...) : String | Test.java:190:21:190:35 | (...)... | provenance | Sink:MaD:56 | +| Test.java:192:29:192:36 | source(...) : String | Test.java:192:22:192:36 | (...)... | provenance | Sink:MaD:57 | +| Test.java:197:27:197:34 | source(...) : String | Test.java:197:20:197:34 | (...)... | provenance | Sink:MaD:58 | +| Test.java:199:26:199:33 | source(...) : String | Test.java:199:19:199:33 | (...)... | provenance | Sink:MaD:59 | +| Test.java:204:29:204:36 | source(...) : String | Test.java:204:20:204:36 | (...)... | provenance | Sink:MaD:68 | +models +| 1 | Sink: java.io; File; true; canExecute; (); ; Argument[this]; path-injection; manual | +| 2 | Sink: java.io; File; true; canRead; (); ; Argument[this]; path-injection; manual | +| 3 | Sink: java.io; File; true; canWrite; (); ; Argument[this]; path-injection; manual | +| 4 | Sink: java.io; File; true; createNewFile; (); ; Argument[this]; path-injection; ai-manual | +| 5 | Sink: java.io; File; true; createTempFile; (String,String,File); ; Argument[2]; path-injection; ai-manual | +| 6 | Sink: java.io; File; true; delete; (); ; Argument[this]; path-injection; manual | +| 7 | Sink: java.io; File; true; deleteOnExit; (); ; Argument[this]; path-injection; manual | +| 8 | Sink: java.io; File; true; exists; (); ; Argument[this]; path-injection; manual | +| 9 | Sink: java.io; File; true; isDirectory; (); ; Argument[this]; path-injection; manual | +| 10 | Sink: java.io; File; true; isFile; (); ; Argument[this]; path-injection; manual | +| 11 | Sink: java.io; File; true; isHidden; (); ; Argument[this]; path-injection; manual | +| 12 | Sink: java.io; File; true; mkdir; (); ; Argument[this]; path-injection; manual | +| 13 | Sink: java.io; File; true; mkdirs; (); ; Argument[this]; path-injection; manual | +| 14 | Sink: java.io; File; true; renameTo; (File); ; Argument[0]; path-injection; ai-manual | +| 15 | Sink: java.io; File; true; renameTo; (File); ; Argument[this]; path-injection; ai-manual | +| 16 | Sink: java.io; File; true; setExecutable; ; ; Argument[this]; path-injection; manual | +| 17 | Sink: java.io; File; true; setLastModified; ; ; Argument[this]; path-injection; manual | +| 18 | Sink: java.io; File; true; setReadOnly; ; ; Argument[this]; path-injection; manual | +| 19 | Sink: java.io; File; true; setReadable; ; ; Argument[this]; path-injection; manual | +| 20 | Sink: java.io; File; true; setWritable; ; ; Argument[this]; path-injection; manual | +| 21 | Sink: java.io; FileInputStream; true; FileInputStream; (File); ; Argument[0]; path-injection; ai-manual | +| 22 | Sink: java.io; FileInputStream; true; FileInputStream; (FileDescriptor); ; Argument[0]; path-injection; manual | +| 23 | Sink: java.io; FileInputStream; true; FileInputStream; (String); ; Argument[0]; path-injection; ai-manual | +| 24 | Sink: java.io; FileReader; true; FileReader; (File); ; Argument[0]; path-injection; ai-manual | +| 25 | Sink: java.io; FileReader; true; FileReader; (File,Charset); ; Argument[0]; path-injection; manual | +| 26 | Sink: java.io; FileReader; true; FileReader; (FileDescriptor); ; Argument[0]; path-injection; manual | +| 27 | Sink: java.io; FileReader; true; FileReader; (String); ; Argument[0]; path-injection; ai-manual | +| 28 | Sink: java.io; FileReader; true; FileReader; (String,Charset); ; Argument[0]; path-injection; manual | +| 29 | Sink: java.lang; Class; false; getResource; (String); ; Argument[0]; path-injection; ai-manual | +| 30 | Sink: java.lang; ClassLoader; true; getSystemResourceAsStream; (String); ; Argument[0]; path-injection; ai-manual | +| 31 | Sink: java.lang; Module; true; getResourceAsStream; (String); ; Argument[0]; path-injection; ai-manual | +| 32 | Sink: java.nio.file; Files; false; copy; (InputStream,Path,CopyOption[]); ; Argument[1]; path-injection; manual | +| 33 | Sink: java.nio.file; Files; false; copy; (Path,OutputStream); ; Argument[0]; path-injection; manual | +| 34 | Sink: java.nio.file; Files; false; copy; (Path,Path,CopyOption[]); ; Argument[0]; path-injection; manual | +| 35 | Sink: java.nio.file; Files; false; copy; (Path,Path,CopyOption[]); ; Argument[1]; path-injection; manual | +| 36 | Sink: java.nio.file; Files; false; createDirectories; ; ; Argument[0]; path-injection; manual | +| 37 | Sink: java.nio.file; Files; false; createDirectory; ; ; Argument[0]; path-injection; manual | +| 38 | Sink: java.nio.file; Files; false; createFile; ; ; Argument[0]; path-injection; manual | +| 39 | Sink: java.nio.file; Files; false; createLink; ; ; Argument[0]; path-injection; manual | +| 40 | Sink: java.nio.file; Files; false; createSymbolicLink; ; ; Argument[0]; path-injection; manual | +| 41 | Sink: java.nio.file; Files; false; createTempDirectory; (Path,String,FileAttribute[]); ; Argument[0]; path-injection; manual | +| 42 | Sink: java.nio.file; Files; false; createTempFile; (Path,String,String,FileAttribute[]); ; Argument[0]; path-injection; manual | +| 43 | Sink: java.nio.file; Files; false; delete; (Path); ; Argument[0]; path-injection; ai-manual | +| 44 | Sink: java.nio.file; Files; false; deleteIfExists; (Path); ; Argument[0]; path-injection; ai-manual | +| 45 | Sink: java.nio.file; Files; false; lines; (Path,Charset); ; Argument[0]; path-injection; ai-manual | +| 46 | Sink: java.nio.file; Files; false; move; ; ; Argument[1]; path-injection; manual | +| 47 | Sink: java.nio.file; Files; false; newBufferedReader; (Path,Charset); ; Argument[0]; path-injection; ai-manual | +| 48 | Sink: java.nio.file; Files; false; newBufferedWriter; ; ; Argument[0]; path-injection; manual | +| 49 | Sink: java.nio.file; Files; false; newOutputStream; ; ; Argument[0]; path-injection; manual | +| 50 | Sink: java.nio.file; Files; false; write; ; ; Argument[0]; path-injection; manual | +| 51 | Sink: java.nio.file; Files; false; writeString; ; ; Argument[0]; path-injection; manual | +| 52 | Sink: javax.xml.transform.stream; StreamResult; true; StreamResult; (File); ; Argument[0]; path-injection; ai-manual | +| 53 | Sink: org.apache.commons.io; FileUtils; true; openInputStream; (File); ; Argument[0]; path-injection; ai-manual | +| 54 | Sink: org.apache.tools.ant.taskdefs; Copy; true; addFileset; (FileSet); ; Argument[0]; path-injection; ai-manual | +| 55 | Sink: org.apache.tools.ant.taskdefs; Copy; true; setFile; (File); ; Argument[0]; path-injection; ai-manual | +| 56 | Sink: org.apache.tools.ant.taskdefs; Copy; true; setTodir; (File); ; Argument[0]; path-injection; ai-manual | +| 57 | Sink: org.apache.tools.ant.taskdefs; Copy; true; setTofile; (File); ; Argument[0]; path-injection; ai-manual | +| 58 | Sink: org.apache.tools.ant.taskdefs; Expand; true; setDest; (File); ; Argument[0]; path-injection; ai-manual | +| 59 | Sink: org.apache.tools.ant.taskdefs; Expand; true; setSrc; (File); ; Argument[0]; path-injection; ai-manual | +| 60 | Sink: org.apache.tools.ant; AntClassLoader; true; AntClassLoader; (ClassLoader,Project,Path,boolean); ; Argument[2]; path-injection; ai-manual | +| 61 | Sink: org.apache.tools.ant; AntClassLoader; true; AntClassLoader; (Project,Path); ; Argument[1]; path-injection; ai-manual | +| 62 | Sink: org.apache.tools.ant; AntClassLoader; true; AntClassLoader; (Project,Path,boolean); ; Argument[1]; path-injection; ai-manual | +| 63 | Sink: org.apache.tools.ant; AntClassLoader; true; addPathComponent; (File); ; Argument[0]; path-injection; ai-manual | +| 64 | Sink: org.apache.tools.ant; DirectoryScanner; true; setBasedir; (File); ; Argument[0]; path-injection; ai-manual | +| 65 | Sink: org.codehaus.cargo.container.installer; ZipURLInstaller; true; ZipURLInstaller; (URL,String,String); ; Argument[1]; path-injection; ai-manual | +| 66 | Sink: org.codehaus.cargo.container.installer; ZipURLInstaller; true; ZipURLInstaller; (URL,String,String); ; Argument[2]; path-injection; ai-manual | +| 67 | Sink: org.kohsuke.stapler.framework.io; LargeText; true; LargeText; (File,Charset,boolean,boolean); ; Argument[0]; path-injection; ai-manual | +| 68 | Sink: org.openjdk.jmh.runner.options; ChainedOptionsBuilder; true; result; (String); ; Argument[0]; path-injection; ai-manual | +| 69 | Sink: org.springframework.util; FileCopyUtils; false; copy; (File,File); ; Argument[0]; path-injection; manual | +| 70 | Sink: org.springframework.util; FileCopyUtils; false; copy; (File,File); ; Argument[1]; path-injection; manual | +| 71 | Sink: org.springframework.util; FileCopyUtils; false; copy; (byte[],File); ; Argument[1]; path-injection; manual | +| 72 | Source: java.net; Socket; false; getInputStream; (); ; ReturnValue; remote; manual | +| 73 | Source: javax.servlet; ServletRequest; false; getParameter; (String); ; ReturnValue; remote; manual | +| 74 | Summary: java.io; BufferedReader; false; BufferedReader; ; ; Argument[0]; Argument[this]; taint; manual | +| 75 | Summary: java.io; BufferedReader; true; readLine; ; ; Argument[this]; ReturnValue; taint; manual | +| 76 | Summary: java.io; InputStreamReader; false; InputStreamReader; ; ; Argument[0]; Argument[this]; taint; manual | +nodes +| TaintedPath.java:13:17:13:89 | new BufferedReader(...) : BufferedReader | semmle.label | new BufferedReader(...) : BufferedReader | +| TaintedPath.java:13:36:13:88 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | +| TaintedPath.java:13:58:13:78 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TaintedPath.java:14:27:14:40 | filenameReader : BufferedReader | semmle.label | filenameReader : BufferedReader | +| TaintedPath.java:14:27:14:51 | readLine(...) : String | semmle.label | readLine(...) : String | +| TaintedPath.java:16:71:16:78 | filename | semmle.label | filename | +| Test.java:32:16:32:45 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| Test.java:37:52:37:68 | (...)... | semmle.label | (...)... | +| Test.java:37:61:37:68 | source(...) : String | semmle.label | source(...) : String | +| Test.java:39:32:39:48 | (...)... | semmle.label | (...)... | +| Test.java:39:41:39:48 | source(...) : String | semmle.label | source(...) : String | +| Test.java:41:47:41:63 | (...)... | semmle.label | (...)... | +| Test.java:41:56:41:63 | source(...) : String | semmle.label | source(...) : String | +| Test.java:43:10:43:24 | (...)... | semmle.label | (...)... | +| Test.java:43:17:43:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:45:10:45:24 | (...)... | semmle.label | (...)... | +| Test.java:45:17:45:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:47:10:47:24 | (...)... | semmle.label | (...)... | +| Test.java:47:17:47:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:49:10:49:24 | (...)... | semmle.label | (...)... | +| Test.java:49:17:49:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:51:39:51:53 | (...)... | semmle.label | (...)... | +| Test.java:51:46:51:53 | source(...) : String | semmle.label | source(...) : String | +| Test.java:53:10:53:24 | (...)... | semmle.label | (...)... | +| Test.java:53:17:53:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:55:10:55:24 | (...)... | semmle.label | (...)... | +| Test.java:55:17:55:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:57:10:57:24 | (...)... | semmle.label | (...)... | +| Test.java:57:17:57:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:59:10:59:24 | (...)... | semmle.label | (...)... | +| Test.java:59:17:59:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:61:10:61:24 | (...)... | semmle.label | (...)... | +| Test.java:61:17:61:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:63:10:63:24 | (...)... | semmle.label | (...)... | +| Test.java:63:17:63:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:65:10:65:24 | (...)... | semmle.label | (...)... | +| Test.java:65:17:65:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:67:10:67:24 | (...)... | semmle.label | (...)... | +| Test.java:67:17:67:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:69:31:69:45 | (...)... | semmle.label | (...)... | +| Test.java:69:38:69:45 | source(...) : String | semmle.label | source(...) : String | +| Test.java:71:10:71:24 | (...)... | semmle.label | (...)... | +| Test.java:71:17:71:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:73:10:73:24 | (...)... | semmle.label | (...)... | +| Test.java:73:17:73:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:75:10:75:24 | (...)... | semmle.label | (...)... | +| Test.java:75:17:75:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:77:10:77:24 | (...)... | semmle.label | (...)... | +| Test.java:77:17:77:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:79:10:79:24 | (...)... | semmle.label | (...)... | +| Test.java:79:17:79:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:81:10:81:24 | (...)... | semmle.label | (...)... | +| Test.java:81:17:81:24 | source(...) : String | semmle.label | source(...) : String | +| Test.java:83:31:83:45 | (...)... | semmle.label | (...)... | +| Test.java:83:38:83:45 | source(...) : String | semmle.label | source(...) : String | +| Test.java:85:29:85:43 | (...)... | semmle.label | (...)... | +| Test.java:85:36:85:43 | source(...) : String | semmle.label | source(...) : String | +| Test.java:87:29:87:53 | (...)... | semmle.label | (...)... | +| Test.java:87:46:87:53 | source(...) : String | semmle.label | source(...) : String | +| Test.java:89:29:89:45 | (...)... | semmle.label | (...)... | +| Test.java:89:38:89:45 | source(...) : String | semmle.label | source(...) : String | +| Test.java:91:24:91:38 | (...)... | semmle.label | (...)... | +| Test.java:91:31:91:38 | source(...) : String | semmle.label | source(...) : String | +| Test.java:93:24:93:48 | (...)... | semmle.label | (...)... | +| Test.java:93:41:93:48 | source(...) : String | semmle.label | source(...) : String | +| Test.java:95:24:95:38 | (...)... | semmle.label | (...)... | +| Test.java:95:31:95:38 | source(...) : String | semmle.label | source(...) : String | +| Test.java:97:24:97:40 | (...)... | semmle.label | (...)... | +| Test.java:97:33:97:40 | source(...) : String | semmle.label | source(...) : String | +| Test.java:99:24:99:40 | (...)... | semmle.label | (...)... | +| Test.java:99:33:99:40 | source(...) : String | semmle.label | source(...) : String | +| Test.java:101:20:101:34 | (...)... | semmle.label | (...)... | +| Test.java:101:27:101:34 | source(...) : String | semmle.label | source(...) : String | +| Test.java:102:20:102:34 | (...)... | semmle.label | (...)... | +| Test.java:102:27:102:34 | source(...) : String | semmle.label | source(...) : String | +| Test.java:104:33:104:47 | (...)... | semmle.label | (...)... | +| Test.java:104:40:104:47 | source(...) : String | semmle.label | source(...) : String | +| Test.java:105:40:105:54 | (...)... | semmle.label | (...)... | +| Test.java:105:47:105:54 | source(...) : String | semmle.label | source(...) : String | +| Test.java:107:33:107:47 | (...)... | semmle.label | (...)... | +| Test.java:107:40:107:47 | source(...) : String | semmle.label | source(...) : String | +| Test.java:109:31:109:45 | (...)... | semmle.label | (...)... | +| Test.java:109:38:109:45 | source(...) : String | semmle.label | source(...) : String | +| Test.java:111:26:111:40 | (...)... | semmle.label | (...)... | +| Test.java:111:33:111:40 | source(...) : String | semmle.label | source(...) : String | +| Test.java:113:26:113:40 | (...)... | semmle.label | (...)... | +| Test.java:113:33:113:40 | source(...) : String | semmle.label | source(...) : String | +| Test.java:115:34:115:48 | (...)... | semmle.label | (...)... | +| Test.java:115:41:115:48 | source(...) : String | semmle.label | source(...) : String | +| Test.java:117:35:117:49 | (...)... | semmle.label | (...)... | +| Test.java:117:42:117:49 | source(...) : String | semmle.label | source(...) : String | +| Test.java:119:30:119:44 | (...)... | semmle.label | (...)... | +| Test.java:119:37:119:44 | source(...) : String | semmle.label | source(...) : String | +| Test.java:121:22:121:36 | (...)... | semmle.label | (...)... | +| Test.java:121:29:121:36 | source(...) : String | semmle.label | source(...) : String | +| Test.java:123:30:123:44 | (...)... | semmle.label | (...)... | +| Test.java:123:37:123:44 | source(...) : String | semmle.label | source(...) : String | +| Test.java:125:21:125:35 | (...)... | semmle.label | (...)... | +| Test.java:125:28:125:35 | source(...) : String | semmle.label | source(...) : String | +| Test.java:127:26:127:40 | (...)... | semmle.label | (...)... | +| Test.java:127:33:127:40 | source(...) : String | semmle.label | source(...) : String | +| Test.java:129:33:129:47 | (...)... | semmle.label | (...)... | +| Test.java:129:40:129:47 | source(...) : String | semmle.label | source(...) : String | +| Test.java:131:33:131:47 | (...)... | semmle.label | (...)... | +| Test.java:131:40:131:47 | source(...) : String | semmle.label | source(...) : String | +| Test.java:132:33:132:47 | (...)... | semmle.label | (...)... | +| Test.java:132:40:132:47 | source(...) : String | semmle.label | source(...) : String | +| Test.java:134:31:134:45 | (...)... | semmle.label | (...)... | +| Test.java:134:38:134:45 | source(...) : String | semmle.label | source(...) : String | +| Test.java:136:21:136:35 | (...)... | semmle.label | (...)... | +| Test.java:136:28:136:35 | source(...) : String | semmle.label | source(...) : String | +| Test.java:137:21:137:35 | (...)... | semmle.label | (...)... | +| Test.java:137:28:137:35 | source(...) : String | semmle.label | source(...) : String | +| Test.java:138:21:138:35 | (...)... | semmle.label | (...)... | +| Test.java:138:28:138:35 | source(...) : String | semmle.label | source(...) : String | +| Test.java:140:27:140:41 | (...)... | semmle.label | (...)... | +| Test.java:140:34:140:41 | source(...) : String | semmle.label | source(...) : String | +| Test.java:141:27:141:41 | (...)... | semmle.label | (...)... | +| Test.java:141:34:141:41 | source(...) : String | semmle.label | source(...) : String | +| Test.java:143:26:143:40 | (...)... | semmle.label | (...)... | +| Test.java:143:33:143:40 | source(...) : String | semmle.label | source(...) : String | +| Test.java:145:35:145:49 | (...)... | semmle.label | (...)... | +| Test.java:145:42:145:49 | source(...) : String | semmle.label | source(...) : String | +| Test.java:147:41:147:57 | (...)... | semmle.label | (...)... | +| Test.java:147:50:147:57 | source(...) : String | semmle.label | source(...) : String | +| Test.java:149:45:149:61 | (...)... | semmle.label | (...)... | +| Test.java:149:54:149:61 | source(...) : String | semmle.label | source(...) : String | +| Test.java:151:43:151:57 | (...)... | semmle.label | (...)... | +| Test.java:151:50:151:57 | source(...) : String | semmle.label | source(...) : String | +| Test.java:153:28:153:42 | (...)... | semmle.label | (...)... | +| Test.java:153:35:153:42 | source(...) : String | semmle.label | source(...) : String | +| Test.java:155:41:155:55 | (...)... | semmle.label | (...)... | +| Test.java:155:48:155:55 | source(...) : String | semmle.label | source(...) : String | +| Test.java:160:30:160:44 | (...)... | semmle.label | (...)... | +| Test.java:160:37:160:44 | source(...) : String | semmle.label | source(...) : String | +| Test.java:162:40:162:81 | (...)... | semmle.label | (...)... | +| Test.java:162:74:162:81 | source(...) : String | semmle.label | source(...) : String | +| Test.java:164:34:164:75 | (...)... | semmle.label | (...)... | +| Test.java:164:68:164:75 | source(...) : String | semmle.label | source(...) : String | +| Test.java:166:34:166:75 | (...)... | semmle.label | (...)... | +| Test.java:166:68:166:75 | source(...) : String | semmle.label | source(...) : String | +| Test.java:168:23:168:37 | (...)... | semmle.label | (...)... | +| Test.java:168:30:168:37 | source(...) : String | semmle.label | source(...) : String | +| Test.java:181:23:181:37 | (...)... | semmle.label | (...)... | +| Test.java:181:30:181:37 | source(...) : String | semmle.label | source(...) : String | +| Test.java:186:23:186:40 | (...)... | semmle.label | (...)... | +| Test.java:186:33:186:40 | source(...) : String | semmle.label | source(...) : String | +| Test.java:188:20:188:34 | (...)... | semmle.label | (...)... | +| Test.java:188:27:188:34 | source(...) : String | semmle.label | source(...) : String | +| Test.java:190:21:190:35 | (...)... | semmle.label | (...)... | +| Test.java:190:28:190:35 | source(...) : String | semmle.label | source(...) : String | +| Test.java:192:22:192:36 | (...)... | semmle.label | (...)... | +| Test.java:192:29:192:36 | source(...) : String | semmle.label | source(...) : String | +| Test.java:197:20:197:34 | (...)... | semmle.label | (...)... | +| Test.java:197:27:197:34 | source(...) : String | semmle.label | source(...) : String | +| Test.java:199:19:199:33 | (...)... | semmle.label | (...)... | +| Test.java:199:26:199:33 | source(...) : String | semmle.label | source(...) : String | +| Test.java:204:20:204:36 | (...)... | semmle.label | (...)... | +| Test.java:204:29:204:36 | source(...) : String | semmle.label | source(...) : String | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.java b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.java index 00447364bb38..442873b54a44 100644 --- a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.java +++ b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.java @@ -10,10 +10,10 @@ public class TaintedPath { public void sendUserFile(Socket sock, String user) throws IOException { BufferedReader filenameReader = - new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF-8")); + new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF-8")); // $ Source String filename = filenameReader.readLine(); // BAD: read from a file without checking its path - BufferedReader fileReader = new BufferedReader(new FileReader(filename)); // $ hasTaintFlow + BufferedReader fileReader = new BufferedReader(new FileReader(filename)); // $ Alert String fileLine = fileReader.readLine(); while (fileLine != null) { sock.getOutputStream().write(fileLine.getBytes()); diff --git a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.ql b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.ql deleted file mode 100644 index 3e7fbdb31312..000000000000 --- a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.ql +++ /dev/null @@ -1,4 +0,0 @@ -import java -import utils.test.InlineFlowTest -import semmle.code.java.security.TaintedPathQuery -import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.qlref b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.qlref new file mode 100644 index 000000000000..574c839511c0 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-022/TaintedPath.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-022/semmle/tests/Test.java b/java/ql/test/query-tests/security/CWE-022/semmle/tests/Test.java index d8cd210b70cf..362c84f4b167 100644 --- a/java/ql/test/query-tests/security/CWE-022/semmle/tests/Test.java +++ b/java/ql/test/query-tests/security/CWE-022/semmle/tests/Test.java @@ -29,143 +29,143 @@ public class Test { private HttpServletRequest request; public Object source() { - return request.getParameter("source"); + return request.getParameter("source"); // $ Source } void test() throws IOException { // "java.lang;Module;true;getResourceAsStream;(String);;Argument[0];read-file;ai-generated" - getClass().getModule().getResourceAsStream((String) source()); // $ hasTaintFlow + getClass().getModule().getResourceAsStream((String) source()); // $ Alert // "java.lang;Class;false;getResource;(String);;Argument[0];read-file;ai-generated" - getClass().getResource((String) source()); // $ hasTaintFlow + getClass().getResource((String) source()); // $ Alert // "java.lang;ClassLoader;true;getSystemResourceAsStream;(String);;Argument[0];read-file;ai-generated" - ClassLoader.getSystemResourceAsStream((String) source()); // $ hasTaintFlow + ClassLoader.getSystemResourceAsStream((String) source()); // $ Alert // "java.io;File;True;canExecute;();;Argument[this];path-injection;manual" - ((File) source()).canExecute(); // $ hasTaintFlow + ((File) source()).canExecute(); // $ Alert // "java.io;File;True;canRead;();;Argument[this];path-injection;manual" - ((File) source()).canRead(); // $ hasTaintFlow + ((File) source()).canRead(); // $ Alert // "java.io;File;True;canWrite;();;Argument[this];path-injection;manual" - ((File) source()).canWrite(); // $ hasTaintFlow + ((File) source()).canWrite(); // $ Alert // "java.io;File;True;createNewFile;();;Argument[this];path-injection;ai-manual" - ((File) source()).createNewFile(); // $ hasTaintFlow + ((File) source()).createNewFile(); // $ Alert // "java.io;File;true;createTempFile;(String,String,File);;Argument[2];create-file;ai-generated" - File.createTempFile(";", ";", (File) source()); // $ hasTaintFlow + File.createTempFile(";", ";", (File) source()); // $ Alert // "java.io;File;True;delete;();;Argument[this];path-injection;manual" - ((File) source()).delete(); // $ hasTaintFlow + ((File) source()).delete(); // $ Alert // "java.io;File;True;deleteOnExit;();;Argument[this];path-injection;manual" - ((File) source()).deleteOnExit(); // $ hasTaintFlow + ((File) source()).deleteOnExit(); // $ Alert // "java.io;File;True;exists;();;Argument[this];path-injection;manual" - ((File) source()).exists(); // $ hasTaintFlow + ((File) source()).exists(); // $ Alert // "java.io:File;True;isDirectory;();;Argument[this];path-injection;manual" - ((File) source()).isDirectory(); // $ hasTaintFlow + ((File) source()).isDirectory(); // $ Alert // "java.io:File;True;isFile;();;Argument[this];path-injection;manual" - ((File) source()).isFile(); // $ hasTaintFlow + ((File) source()).isFile(); // $ Alert // "java.io:File;True;isHidden;();;Argument[this];path-injection;manual" - ((File) source()).isHidden(); // $ hasTaintFlow + ((File) source()).isHidden(); // $ Alert // "java.io;File;True;mkdir;();;Argument[this];path-injection;manual" - ((File) source()).mkdir(); // $ hasTaintFlow + ((File) source()).mkdir(); // $ Alert // "java.io;File;True;mkdirs;();;Argument[this];path-injection;manual" - ((File) source()).mkdirs(); // $ hasTaintFlow + ((File) source()).mkdirs(); // $ Alert // "java.io;File;True;renameTo;(File);;Argument[0];path-injection;ai-manual" - new File("").renameTo((File) source()); // $ hasTaintFlow + new File("").renameTo((File) source()); // $ Alert // "java.io;File;True;renameTo;(File);;Argument[this];path-injection;ai-manual" - ((File) source()).renameTo(null); // $ hasTaintFlow + ((File) source()).renameTo(null); // $ Alert // "java.io;File;True;setExecutable;;;Argument[this];path-injection;manual" - ((File) source()).setExecutable(true); // $ hasTaintFlow + ((File) source()).setExecutable(true); // $ Alert // "java.io;File;True;setLastModified;;;Argument[this];path-injection;manual" - ((File) source()).setLastModified(0); // $ hasTaintFlow + ((File) source()).setLastModified(0); // $ Alert // "java.io;File;True;setReadable;;;Argument[this];path-injection;manual" - ((File) source()).setReadable(true); // $ hasTaintFlow + ((File) source()).setReadable(true); // $ Alert // "java.io;File;True;setReadOnly;;;Argument[this];path-injection;manual" - ((File) source()).setReadOnly(); // $ hasTaintFlow + ((File) source()).setReadOnly(); // $ Alert // "java.io;File;True;setWritable;;;Argument[this];path-injection;manual" - ((File) source()).setWritable(true); // $ hasTaintFlow + ((File) source()).setWritable(true); // $ Alert // "java.io;File;true;renameTo;(File);;Argument[0];create-file;ai-generated" - new File("").renameTo((File) source()); // $ hasTaintFlow + new File("").renameTo((File) source()); // $ Alert // "java.io;FileInputStream;true;FileInputStream;(File);;Argument[0];read-file;ai-generated" - new FileInputStream((File) source()); // $ hasTaintFlow + new FileInputStream((File) source()); // $ Alert // "java.io;FileInputStream;true;FileInputStream;(FileDescriptor);;Argument[0];read-file;manual" - new FileInputStream((FileDescriptor) source()); // $ hasTaintFlow - // "java.io;FileInputStream;true;FileInputStream;(Strrirng);;Argument[0];read-file;manual" - new FileInputStream((String) source()); // $ hasTaintFlow + new FileInputStream((FileDescriptor) source()); // $ Alert + // "java.io;FileInputStream;true;FileInputStream;(String);;Argument[0];read-file;manual" + new FileInputStream((String) source()); // $ Alert // "java.io;FileReader;true;FileReader;(File);;Argument[0];read-file;ai-generated" - new FileReader((File) source()); // $ hasTaintFlow + new FileReader((File) source()); // $ Alert // "java.io;FileReader;true;FileReader;(FileDescriptor);;Argument[0];read-file;manual" - new FileReader((FileDescriptor) source()); // $ hasTaintFlow + new FileReader((FileDescriptor) source()); // $ Alert // "java.io;FileReader;true;FileReader;(File,Charset);;Argument[0];read-file;manual" - new FileReader((File) source(), null); // $ hasTaintFlow + new FileReader((File) source(), null); // $ Alert // "java.io;FileReader;true;FileReader;(String);;Argument[0];read-file;ai-generated" - new FileReader((String) source()); // $ hasTaintFlow + new FileReader((String) source()); // $ Alert // "java.io;FileReader;true;FileReader;(String,Charset);;Argument[0];read-file;manual" - new FileReader((String) source(), null); // $ hasTaintFlow + new FileReader((String) source(), null); // $ Alert // "java.nio.file;Files;false;copy;;;Argument[0];read-file;manual" - Files.copy((Path) source(), (Path) null); // $ hasTaintFlow - Files.copy((Path) source(), (OutputStream) null); // $ hasTaintFlow + Files.copy((Path) source(), (Path) null); // $ Alert + Files.copy((Path) source(), (OutputStream) null); // $ Alert // "java.nio.file;Files;false;copy;;;Argument[1];create-file;manual" - Files.copy((Path) null, (Path) source()); // $ hasTaintFlow - Files.copy((InputStream) null, (Path) source()); // $ hasTaintFlow + Files.copy((Path) null, (Path) source()); // $ Alert + Files.copy((InputStream) null, (Path) source()); // $ Alert // "java.nio.file;Files;false;createDirectories;;;Argument[0];create-file;manual" - Files.createDirectories((Path) source()); // $ hasTaintFlow + Files.createDirectories((Path) source()); // $ Alert // "java.nio.file;Files;false;createDirectory;;;Argument[0];create-file;manual" - Files.createDirectory((Path) source()); // $ hasTaintFlow + Files.createDirectory((Path) source()); // $ Alert // "java.nio.file;Files;false;createFile;;;Argument[0];create-file;manual" - Files.createFile((Path) source()); // $ hasTaintFlow + Files.createFile((Path) source()); // $ Alert // "java.nio.file;Files;false;createLink;;;Argument[0];create-file;manual" - Files.createLink((Path) source(), null); // $ hasTaintFlow + Files.createLink((Path) source(), null); // $ Alert // "java.nio.file;Files;false;createSymbolicLink;;;Argument[0];create-file;manual" - Files.createSymbolicLink((Path) source(), null); // $ hasTaintFlow + Files.createSymbolicLink((Path) source(), null); // $ Alert // "java.nio.file;Files;false;createTempDirectory;(Path,String,FileAttribute[]);;Argument[0];create-file;manual" - Files.createTempDirectory((Path) source(), null); // $ hasTaintFlow + Files.createTempDirectory((Path) source(), null); // $ Alert // "java.nio.file;Files;false;createTempFile;(Path,String,String,FileAttribute[]);;Argument[0];create-file;manual" - Files.createTempFile((Path) source(), null, null); // $ hasTaintFlow + Files.createTempFile((Path) source(), null, null); // $ Alert // "java.nio.file;Files;false;delete;(Path);;Argument[0];delete-file;ai-generated" - Files.delete((Path) source()); // $ hasTaintFlow + Files.delete((Path) source()); // $ Alert // "java.nio.file;Files;false;deleteIfExists;(Path);;Argument[0];delete-file;ai-generated" - Files.deleteIfExists((Path) source()); // $ hasTaintFlow + Files.deleteIfExists((Path) source()); // $ Alert // "java.nio.file;Files;false;lines;(Path,Charset);;Argument[0];read-file;ai-generated" - Files.lines((Path) source(), null); // $ hasTaintFlow + Files.lines((Path) source(), null); // $ Alert // "java.nio.file;Files;false;move;;;Argument[1];create-file;manual" - Files.move(null, (Path) source()); // $ hasTaintFlow + Files.move(null, (Path) source()); // $ Alert // "java.nio.file;Files;false;newBufferedReader;(Path,Charset);;Argument[0];read-file;ai-generated" - Files.newBufferedReader((Path) source(), null); // $ hasTaintFlow + Files.newBufferedReader((Path) source(), null); // $ Alert // "java.nio.file;Files;false;newBufferedWriter;;;Argument[0];create-file;manual" - Files.newBufferedWriter((Path) source()); // $ hasTaintFlow - Files.newBufferedWriter((Path) source(), (Charset) null); // $ hasTaintFlow + Files.newBufferedWriter((Path) source()); // $ Alert + Files.newBufferedWriter((Path) source(), (Charset) null); // $ Alert // "java.nio.file;Files;false;newOutputStream;;;Argument[0];create-file;manual" - Files.newOutputStream((Path) source()); // $ hasTaintFlow + Files.newOutputStream((Path) source()); // $ Alert // "java.nio.file;Files;false;write;;;Argument[0];create-file;manual" - Files.write((Path) source(), (byte[]) null); // $ hasTaintFlow - Files.write((Path) source(), (Iterable) null); // $ hasTaintFlow - Files.write((Path) source(), (Iterable) null, (Charset) null); // $ hasTaintFlow + Files.write((Path) source(), (byte[]) null); // $ Alert + Files.write((Path) source(), (Iterable) null); // $ Alert + Files.write((Path) source(), (Iterable) null, (Charset) null); // $ Alert // "java.nio.file;Files;false;writeString;;;Argument[0];create-file;manual" - Files.writeString((Path) source(), (CharSequence) null); // $ hasTaintFlow - Files.writeString((Path) source(), (CharSequence) null, (Charset) null); // $ hasTaintFlow + Files.writeString((Path) source(), (CharSequence) null); // $ Alert + Files.writeString((Path) source(), (CharSequence) null, (Charset) null); // $ Alert // "javax.xml.transform.stream;StreamResult";true;"StreamResult;(File);;Argument[0];create-file;ai-generated" - new StreamResult((File) source()); // $ hasTaintFlow + new StreamResult((File) source()); // $ Alert // "org.apache.commons.io;FileUtils;true;openInputStream;(File);;Argument[0];read-file;ai-generated" - FileUtils.openInputStream((File) source()); // $ hasTaintFlow + FileUtils.openInputStream((File) source()); // $ Alert // "org.codehaus.cargo.container.installer;ZipURLInstaller;true;ZipURLInstaller;(URL,String,String);;Argument[1];create-file;ai-generated" - new ZipURLInstaller((URL) null, (String) source(), ""); // $ hasTaintFlow + new ZipURLInstaller((URL) null, (String) source(), ""); // $ Alert // "org.codehaus.cargo.container.installer;ZipURLInstaller;true;ZipURLInstaller;(URL,String,String);;Argument[2];create-file;ai-generated" - new ZipURLInstaller((URL) null, "", (String) source()); // $ hasTaintFlow + new ZipURLInstaller((URL) null, "", (String) source()); // $ Alert // "org.springframework.util;FileCopyUtils;false;copy;(byte[],File);;Argument[1];create-file;manual" - FileCopyUtils.copy((byte[]) null, (File) source()); // $ hasTaintFlow + FileCopyUtils.copy((byte[]) null, (File) source()); // $ Alert // "org.springframework.util;FileCopyUtils;false;copy;(File,File);;Argument[0];create-file;manual" - FileCopyUtils.copy((File) source(), null); // $ hasTaintFlow + FileCopyUtils.copy((File) source(), null); // $ Alert // "org.springframework.util;FileCopyUtils;false;copy;(File,File);;Argument[1];create-file;manual" - FileCopyUtils.copy((File) null, (File) source()); // $ hasTaintFlow + FileCopyUtils.copy((File) null, (File) source()); // $ Alert } void test(AntClassLoader acl) { // "org.apache.tools.ant;AntClassLoader;true;addPathComponent;(File);;Argument[0];read-file;ai-generated" - acl.addPathComponent((File) source()); // $ hasTaintFlow + acl.addPathComponent((File) source()); // $ Alert // "org.apache.tools.ant;AntClassLoader;true;AntClassLoader;(ClassLoader,Project,Path,boolean);;Argument[2];read-file;ai-generated" - new AntClassLoader(null, null, (org.apache.tools.ant.types.Path) source(), false); // $ hasTaintFlow + new AntClassLoader(null, null, (org.apache.tools.ant.types.Path) source(), false); // $ Alert // "org.apache.tools.ant;AntClassLoader;true;AntClassLoader;(Project,Path,boolean);;Argument[1];read-file;ai-generated" - new AntClassLoader(null, (org.apache.tools.ant.types.Path) source(), false); // $ hasTaintFlow + new AntClassLoader(null, (org.apache.tools.ant.types.Path) source(), false); // $ Alert // "org.apache.tools.ant;AntClassLoader;true;AntClassLoader;(Project,Path);;Argument[1];read-file;ai-generated" - new AntClassLoader(null, (org.apache.tools.ant.types.Path) source()); // $ hasTaintFlow + new AntClassLoader(null, (org.apache.tools.ant.types.Path) source()); // $ Alert // "org.kohsuke.stapler.framework.io;LargeText;true;LargeText;(File,Charset,boolean,boolean);;Argument[0];read-file;ai-generated" - new LargeText((File) source(), null, false, false); // $ hasTaintFlow + new LargeText((File) source(), null, false, false); // $ Alert } void doGet6(String root, HttpServletRequest request) throws IOException { @@ -178,29 +178,29 @@ void doGet6(String root, HttpServletRequest request) throws IOException { void test(DirectoryScanner ds) { // "org.apache.tools.ant;DirectoryScanner;true;setBasedir;(File);;Argument[0];read-file;ai-generated" - ds.setBasedir((File) source()); // $ hasTaintFlow + ds.setBasedir((File) source()); // $ Alert } void test(Copy cp) { // "org.apache.tools.ant.taskdefs;Copy;true;addFileset;(FileSet);;Argument[0];read-file;ai-generated" - cp.addFileset((FileSet) source()); // $ hasTaintFlow + cp.addFileset((FileSet) source()); // $ Alert // "org.apache.tools.ant.taskdefs;Copy;true;setFile;(File);;Argument[0];read-file;ai-generated" - cp.setFile((File) source()); // $ hasTaintFlow + cp.setFile((File) source()); // $ Alert // "org.apache.tools.ant.taskdefs;Copy;true;setTodir;(File);;Argument[0];create-file;ai-generated" - cp.setTodir((File) source()); // $ hasTaintFlow + cp.setTodir((File) source()); // $ Alert // "org.apache.tools.ant.taskdefs;Copy;true;setTofile;(File);;Argument[0];create-file;ai-generated" - cp.setTofile((File) source()); // $ hasTaintFlow + cp.setTofile((File) source()); // $ Alert } void test(Expand ex) { // "org.apache.tools.ant.taskdefs;Expand;true;setDest;(File);;Argument[0];create-file;ai-generated" - ex.setDest((File) source()); // $ hasTaintFlow + ex.setDest((File) source()); // $ Alert // "org.apache.tools.ant.taskdefs;Expand;true;setSrc;(File);;Argument[0];read-file;ai-generated" - ex.setSrc((File) source()); // $ hasTaintFlow + ex.setSrc((File) source()); // $ Alert } void test(ChainedOptionsBuilder cob) { // "org.openjdk.jmh.runner.options;ChainedOptionsBuilder;true;result;(String);;Argument[0];create-file;ai-generated" - cob.result((String) source()); // $ hasTaintFlow + cob.result((String) source()); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversal.expected b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversal.expected index b876fd2367da..5379de2403b4 100644 --- a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversal.expected +++ b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversal.expected @@ -1,16 +1,16 @@ -| PartialPathTraversalTest.java:10:14:10:73 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:17:9:17:72 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:29:14:29:58 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:35:14:35:63 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:42:14:42:64 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:49:14:49:64 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:53:14:53:65 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:61:14:61:64 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:64:14:64:65 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:75:14:75:64 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:94:14:94:63 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:102:14:102:63 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:105:14:105:64 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:173:14:173:63 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:191:18:191:87 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | -| PartialPathTraversalTest.java:209:14:209:64 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:13:14:13:75 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:20:9:20:74 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:32:14:32:60 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:38:14:38:65 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:45:14:45:64 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:52:14:52:64 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:56:14:56:65 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:64:14:64:64 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:67:14:67:65 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:78:14:78:64 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:97:14:97:65 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:105:14:105:65 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:108:14:108:66 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:176:14:176:65 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:194:18:194:87 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | +| PartialPathTraversalTest.java:212:14:212:64 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. | diff --git a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected index e69de29bb2d1..f2af01542ee9 100644 --- a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected +++ b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected @@ -0,0 +1,135 @@ +#select +| PartialPathTraversalTest.java:13:14:13:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:13:14:13:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:20:10:20:33 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:20:10:20:33 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:32:14:32:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:32:14:32:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:38:14:38:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:38:14:38:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:45:14:45:26 | canonicalPath | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:45:14:45:26 | canonicalPath | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:52:14:52:26 | canonicalPath | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:52:14:52:26 | canonicalPath | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:56:14:56:27 | canonicalPath2 | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:56:14:56:27 | canonicalPath2 | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:64:14:64:26 | canonicalPath | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:64:14:64:26 | canonicalPath | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:67:14:67:27 | canonicalPath2 | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:67:14:67:27 | canonicalPath2 | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:97:14:97:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:97:14:97:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:105:14:105:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:105:14:105:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:108:14:108:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:108:14:108:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:176:14:176:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:176:14:176:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:194:18:194:47 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:194:18:194:47 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:212:14:212:26 | canonicalPath | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:212:14:212:26 | canonicalPath | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +edges +| PartialPathTraversalTest.java:13:14:13:18 | dir(...) : File | PartialPathTraversalTest.java:13:14:13:37 | getCanonicalPath(...) | provenance | MaD:6 | +| PartialPathTraversalTest.java:20:10:20:14 | dir(...) : File | PartialPathTraversalTest.java:20:10:20:33 | getCanonicalPath(...) | provenance | MaD:6 | +| PartialPathTraversalTest.java:32:14:32:18 | dir(...) : File | PartialPathTraversalTest.java:32:14:32:37 | getCanonicalPath(...) | provenance | MaD:6 | +| PartialPathTraversalTest.java:38:14:38:18 | dir(...) : File | PartialPathTraversalTest.java:38:14:38:37 | getCanonicalPath(...) | provenance | MaD:6 | +| PartialPathTraversalTest.java:44:32:44:36 | dir(...) : File | PartialPathTraversalTest.java:44:32:44:55 | getCanonicalPath(...) : String | provenance | MaD:6 | +| PartialPathTraversalTest.java:44:32:44:55 | getCanonicalPath(...) : String | PartialPathTraversalTest.java:45:14:45:26 | canonicalPath | provenance | | +| PartialPathTraversalTest.java:51:32:51:36 | dir(...) : File | PartialPathTraversalTest.java:51:32:51:55 | getCanonicalPath(...) : String | provenance | MaD:6 | +| PartialPathTraversalTest.java:51:32:51:55 | getCanonicalPath(...) : String | PartialPathTraversalTest.java:52:14:52:26 | canonicalPath | provenance | | +| PartialPathTraversalTest.java:55:33:55:37 | dir(...) : File | PartialPathTraversalTest.java:55:33:55:56 | getCanonicalPath(...) : String | provenance | MaD:6 | +| PartialPathTraversalTest.java:55:33:55:56 | getCanonicalPath(...) : String | PartialPathTraversalTest.java:56:14:56:27 | canonicalPath2 | provenance | | +| PartialPathTraversalTest.java:62:32:62:36 | dir(...) : File | PartialPathTraversalTest.java:62:32:62:55 | getCanonicalPath(...) : String | provenance | MaD:6 | +| PartialPathTraversalTest.java:62:32:62:55 | getCanonicalPath(...) : String | PartialPathTraversalTest.java:64:14:64:26 | canonicalPath | provenance | | +| PartialPathTraversalTest.java:63:33:63:37 | dir(...) : File | PartialPathTraversalTest.java:63:33:63:56 | getCanonicalPath(...) : String | provenance | MaD:6 | +| PartialPathTraversalTest.java:63:33:63:56 | getCanonicalPath(...) : String | PartialPathTraversalTest.java:67:14:67:27 | canonicalPath2 | provenance | | +| PartialPathTraversalTest.java:97:14:97:18 | dir(...) : File | PartialPathTraversalTest.java:97:14:97:37 | getCanonicalPath(...) | provenance | MaD:6 | +| PartialPathTraversalTest.java:105:14:105:18 | dir(...) : File | PartialPathTraversalTest.java:105:14:105:37 | getCanonicalPath(...) | provenance | MaD:6 | +| PartialPathTraversalTest.java:108:14:108:18 | dir(...) : File | PartialPathTraversalTest.java:108:14:108:37 | getCanonicalPath(...) | provenance | MaD:6 | +| PartialPathTraversalTest.java:176:14:176:18 | dir(...) : File | PartialPathTraversalTest.java:176:14:176:37 | getCanonicalPath(...) | provenance | MaD:6 | +| PartialPathTraversalTest.java:186:25:186:30 | path(...) : String[] | PartialPathTraversalTest.java:188:23:188:23 | p : String | provenance | | +| PartialPathTraversalTest.java:188:13:188:14 | sb [post update] : StringBuilder | PartialPathTraversalTest.java:191:27:191:28 | sb : StringBuilder | provenance | | +| PartialPathTraversalTest.java:188:23:188:23 | p : String | PartialPathTraversalTest.java:188:13:188:14 | sb [post update] : StringBuilder | provenance | MaD:8 | +| PartialPathTraversalTest.java:191:27:191:28 | sb : StringBuilder | PartialPathTraversalTest.java:191:27:191:39 | toString(...) : String | provenance | MaD:9 | +| PartialPathTraversalTest.java:191:27:191:39 | toString(...) : String | PartialPathTraversalTest.java:192:37:192:44 | filePath : String | provenance | | +| PartialPathTraversalTest.java:192:28:192:45 | new File(...) : File | PartialPathTraversalTest.java:194:18:194:28 | encodedFile : File | provenance | | +| PartialPathTraversalTest.java:192:37:192:44 | filePath : String | PartialPathTraversalTest.java:192:28:192:45 | new File(...) : File | provenance | MaD:4 | +| PartialPathTraversalTest.java:194:18:194:28 | encodedFile : File | PartialPathTraversalTest.java:194:18:194:47 | getCanonicalPath(...) | provenance | MaD:6 | +| PartialPathTraversalTest.java:211:46:211:50 | dir(...) : File | PartialPathTraversalTest.java:211:46:211:69 | getCanonicalPath(...) : String | provenance | MaD:6 | +| PartialPathTraversalTest.java:211:46:211:69 | getCanonicalPath(...) : String | PartialPathTraversalTest.java:212:14:212:26 | canonicalPath | provenance | | +| PartialPathTraversalTest.java:252:45:252:117 | new BufferedReader(...) : BufferedReader | PartialPathTraversalTest.java:253:31:253:44 | filenameReader : BufferedReader | provenance | | +| PartialPathTraversalTest.java:252:64:252:116 | new InputStreamReader(...) : InputStreamReader | PartialPathTraversalTest.java:252:45:252:117 | new BufferedReader(...) : BufferedReader | provenance | MaD:2 | +| PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:252:64:252:116 | new InputStreamReader(...) : InputStreamReader | provenance | Src:MaD:1 MaD:7 | +| PartialPathTraversalTest.java:253:31:253:44 | filenameReader : BufferedReader | PartialPathTraversalTest.java:253:31:253:55 | readLine(...) : String | provenance | MaD:3 | +| PartialPathTraversalTest.java:253:31:253:55 | readLine(...) : String | PartialPathTraversalTest.java:254:29:254:36 | filename : String | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:13:14:13:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:20:10:20:14 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:32:14:32:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:38:14:38:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:44:32:44:36 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:51:32:51:36 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:55:33:55:37 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:62:32:62:36 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:63:33:63:37 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:97:14:97:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:105:14:105:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:108:14:108:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:176:14:176:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:211:46:211:50 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:261:16:261:20 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:254:29:254:36 | filename : String | PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | provenance | MaD:4 | +| PartialPathTraversalTest.java:261:16:261:20 | dir(...) : File | PartialPathTraversalTest.java:261:16:261:38 | getAbsolutePath(...) : String | provenance | MaD:5 | +| PartialPathTraversalTest.java:261:16:261:38 | getAbsolutePath(...) : String | PartialPathTraversalTest.java:261:16:261:60 | split(...) : String[] | provenance | MaD:10 | +| PartialPathTraversalTest.java:261:16:261:60 | split(...) : String[] | PartialPathTraversalTest.java:186:25:186:30 | path(...) : String[] | provenance | | +models +| 1 | Source: java.net; Socket; false; getInputStream; (); ; ReturnValue; remote; manual | +| 2 | Summary: java.io; BufferedReader; false; BufferedReader; ; ; Argument[0]; Argument[this]; taint; manual | +| 3 | Summary: java.io; BufferedReader; true; readLine; ; ; Argument[this]; ReturnValue; taint; manual | +| 4 | Summary: java.io; File; false; File; ; ; Argument[0]; Argument[this]; taint; manual | +| 5 | Summary: java.io; File; true; getAbsolutePath; ; ; Argument[this]; ReturnValue; taint; manual | +| 6 | Summary: java.io; File; true; getCanonicalPath; ; ; Argument[this]; ReturnValue; taint; manual | +| 7 | Summary: java.io; InputStreamReader; false; InputStreamReader; ; ; Argument[0]; Argument[this]; taint; manual | +| 8 | Summary: java.lang; AbstractStringBuilder; true; append; ; ; Argument[0]; Argument[this]; taint; manual | +| 9 | Summary: java.lang; CharSequence; true; toString; ; ; Argument[this]; ReturnValue; taint; manual | +| 10 | Summary: java.lang; String; false; split; ; ; Argument[this]; ReturnValue; taint; manual | +nodes +| PartialPathTraversalTest.java:13:14:13:18 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:13:14:13:37 | getCanonicalPath(...) | semmle.label | getCanonicalPath(...) | +| PartialPathTraversalTest.java:20:10:20:14 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:20:10:20:33 | getCanonicalPath(...) | semmle.label | getCanonicalPath(...) | +| PartialPathTraversalTest.java:32:14:32:18 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:32:14:32:37 | getCanonicalPath(...) | semmle.label | getCanonicalPath(...) | +| PartialPathTraversalTest.java:38:14:38:18 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:38:14:38:37 | getCanonicalPath(...) | semmle.label | getCanonicalPath(...) | +| PartialPathTraversalTest.java:44:32:44:36 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:44:32:44:55 | getCanonicalPath(...) : String | semmle.label | getCanonicalPath(...) : String | +| PartialPathTraversalTest.java:45:14:45:26 | canonicalPath | semmle.label | canonicalPath | +| PartialPathTraversalTest.java:51:32:51:36 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:51:32:51:55 | getCanonicalPath(...) : String | semmle.label | getCanonicalPath(...) : String | +| PartialPathTraversalTest.java:52:14:52:26 | canonicalPath | semmle.label | canonicalPath | +| PartialPathTraversalTest.java:55:33:55:37 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:55:33:55:56 | getCanonicalPath(...) : String | semmle.label | getCanonicalPath(...) : String | +| PartialPathTraversalTest.java:56:14:56:27 | canonicalPath2 | semmle.label | canonicalPath2 | +| PartialPathTraversalTest.java:62:32:62:36 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:62:32:62:55 | getCanonicalPath(...) : String | semmle.label | getCanonicalPath(...) : String | +| PartialPathTraversalTest.java:63:33:63:37 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:63:33:63:56 | getCanonicalPath(...) : String | semmle.label | getCanonicalPath(...) : String | +| PartialPathTraversalTest.java:64:14:64:26 | canonicalPath | semmle.label | canonicalPath | +| PartialPathTraversalTest.java:67:14:67:27 | canonicalPath2 | semmle.label | canonicalPath2 | +| PartialPathTraversalTest.java:97:14:97:18 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:97:14:97:37 | getCanonicalPath(...) | semmle.label | getCanonicalPath(...) | +| PartialPathTraversalTest.java:105:14:105:18 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:105:14:105:37 | getCanonicalPath(...) | semmle.label | getCanonicalPath(...) | +| PartialPathTraversalTest.java:108:14:108:18 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:108:14:108:37 | getCanonicalPath(...) | semmle.label | getCanonicalPath(...) | +| PartialPathTraversalTest.java:176:14:176:18 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:176:14:176:37 | getCanonicalPath(...) | semmle.label | getCanonicalPath(...) | +| PartialPathTraversalTest.java:186:25:186:30 | path(...) : String[] | semmle.label | path(...) : String[] | +| PartialPathTraversalTest.java:188:13:188:14 | sb [post update] : StringBuilder | semmle.label | sb [post update] : StringBuilder | +| PartialPathTraversalTest.java:188:23:188:23 | p : String | semmle.label | p : String | +| PartialPathTraversalTest.java:191:27:191:28 | sb : StringBuilder | semmle.label | sb : StringBuilder | +| PartialPathTraversalTest.java:191:27:191:39 | toString(...) : String | semmle.label | toString(...) : String | +| PartialPathTraversalTest.java:192:28:192:45 | new File(...) : File | semmle.label | new File(...) : File | +| PartialPathTraversalTest.java:192:37:192:44 | filePath : String | semmle.label | filePath : String | +| PartialPathTraversalTest.java:194:18:194:28 | encodedFile : File | semmle.label | encodedFile : File | +| PartialPathTraversalTest.java:194:18:194:47 | getCanonicalPath(...) | semmle.label | getCanonicalPath(...) | +| PartialPathTraversalTest.java:211:46:211:50 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:211:46:211:69 | getCanonicalPath(...) : String | semmle.label | getCanonicalPath(...) : String | +| PartialPathTraversalTest.java:212:14:212:26 | canonicalPath | semmle.label | canonicalPath | +| PartialPathTraversalTest.java:252:45:252:117 | new BufferedReader(...) : BufferedReader | semmle.label | new BufferedReader(...) : BufferedReader | +| PartialPathTraversalTest.java:252:64:252:116 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | +| PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| PartialPathTraversalTest.java:253:31:253:44 | filenameReader : BufferedReader | semmle.label | filenameReader : BufferedReader | +| PartialPathTraversalTest.java:253:31:253:55 | readLine(...) : String | semmle.label | readLine(...) : String | +| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | semmle.label | new File(...) : File | +| PartialPathTraversalTest.java:254:29:254:36 | filename : String | semmle.label | filename : String | +| PartialPathTraversalTest.java:261:16:261:20 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:261:16:261:38 | getAbsolutePath(...) : String | semmle.label | getAbsolutePath(...) : String | +| PartialPathTraversalTest.java:261:16:261:60 | split(...) : String[] | semmle.label | split(...) : String[] | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.ql b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.ql deleted file mode 100644 index 45dab6606fa1..000000000000 --- a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.ql +++ /dev/null @@ -1,24 +0,0 @@ -import java -import utils.test.InlineExpectationsTest -import semmle.code.java.security.PartialPathTraversalQuery - -class TestRemoteSource extends RemoteFlowSource { - TestRemoteSource() { this.asParameter().hasName(["dir", "path"]) } - - override string getSourceType() { result = "TestSource" } -} - -module Test implements TestSig { - string getARelevantTag() { result = "hasTaintFlow" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasTaintFlow" and - exists(DataFlow::Node sink | PartialPathTraversalFromRemoteFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.qlref b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.qlref new file mode 100644 index 000000000000..0c2ceb8cd731 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-023/PartialPathTraversalFromRemote.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalTest.java b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalTest.java index af0fd776de15..b1986c1b6694 100644 --- a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalTest.java +++ b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalTest.java @@ -1,68 +1,71 @@ import java.io.IOException; import java.io.File; import java.io.InputStream; +import java.io.BufferedReader; +import java.io.InputStreamReader; import static java.io.File.separatorChar; import java.nio.file.Files; +import java.net.Socket; public class PartialPathTraversalTest { - public void esapiExample(File dir, File parent) throws IOException { - if (!dir.getCanonicalPath().startsWith(parent.getCanonicalPath())) { // $hasTaintFlow - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + public void esapiExample(File parent) throws IOException { + if (!dir().getCanonicalPath().startsWith(parent.getCanonicalPath())) { // $ Alert + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } @SuppressWarnings("ResultOfMethodCallIgnored") - void foo1(File dir, File parent) throws IOException { - (dir.getCanonicalPath()).startsWith((parent.getCanonicalPath())); // $hasTaintFlow + void foo1(File parent) throws IOException { + (dir().getCanonicalPath()).startsWith((parent.getCanonicalPath())); // $ Alert } - void foo2(File dir, File parent) throws IOException { - dir.getCanonicalPath(); + void foo2(File parent) throws IOException { + dir().getCanonicalPath(); if ("potato".startsWith(parent.getCanonicalPath())) { System.out.println("Hello!"); } } - void foo3(File dir, File parent) throws IOException { + void foo3(File parent) throws IOException { String parentPath = parent.getCanonicalPath(); - if (!dir.getCanonicalPath().startsWith(parentPath)) { // $hasTaintFlow - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentPath)) { // $ Alert + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - void foo4(File dir) throws IOException { - if (!dir.getCanonicalPath().startsWith("/usr" + "/dir")) { // $hasTaintFlow - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + void foo4() throws IOException { + if (!dir().getCanonicalPath().startsWith("/usr" + "/dir")) { // $ Alert + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - void foo5(File dir, File parent) throws IOException { - String canonicalPath = dir.getCanonicalPath(); - if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $hasTaintFlow - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + void foo5(File parent) throws IOException { + String canonicalPath = dir().getCanonicalPath(); + if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $ Alert + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - void foo6(File dir, File parent) throws IOException { - String canonicalPath = dir.getCanonicalPath(); - if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $hasTaintFlow - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + void foo6(File parent) throws IOException { + String canonicalPath = dir().getCanonicalPath(); + if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $ Alert + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } - String canonicalPath2 = dir.getCanonicalPath(); - if (!canonicalPath2.startsWith(parent.getCanonicalPath())) { // $hasTaintFlow - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + String canonicalPath2 = dir().getCanonicalPath(); + if (!canonicalPath2.startsWith(parent.getCanonicalPath())) { // $ Alert + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } void foo7(File dir, File parent) throws IOException { - String canonicalPath = dir.getCanonicalPath(); - String canonicalPath2 = dir.getCanonicalPath(); - if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $hasTaintFlow - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + String canonicalPath = dir().getCanonicalPath(); + String canonicalPath2 = dir().getCanonicalPath(); + if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $ Alert + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } - if (!canonicalPath2.startsWith(parent.getCanonicalPath())) { // $hasTaintFlow - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!canonicalPath2.startsWith(parent.getCanonicalPath())) { // $ Alert + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } @@ -72,70 +75,70 @@ File getChild() { void foo8(File parent) throws IOException { String canonicalPath = getChild().getCanonicalPath(); - if (!canonicalPath.startsWith(parent.getCanonicalPath())) { + if (!canonicalPath.startsWith(parent.getCanonicalPath())) { throw new IOException("Invalid directory: " + getChild().getCanonicalPath()); } } - void foo9(File dir, File parent) throws IOException { - if (!dir.getCanonicalPath().startsWith(parent.getCanonicalPath() + File.separator)) { - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + void foo9(File parent) throws IOException { + if (!dir().getCanonicalPath().startsWith(parent.getCanonicalPath() + File.separator)) { + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - void foo10(File dir, File parent) throws IOException { - if (!dir.getCanonicalPath().startsWith(parent.getCanonicalPath() + File.separatorChar)) { - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + void foo10(File parent) throws IOException { + if (!dir().getCanonicalPath().startsWith(parent.getCanonicalPath() + File.separatorChar)) { + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - void foo11(File dir, File parent) throws IOException { + void foo11(File parent) throws IOException { String parentCanonical = parent.getCanonicalPath(); - if (!dir.getCanonicalPath().startsWith(parentCanonical)) { // $hasTaintFlow - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical)) { // $ Alert + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - void foo12(File dir, File parent) throws IOException { + void foo12(File parent) throws IOException { String parentCanonical = parent.getCanonicalPath(); String parentCanonical2 = parent.getCanonicalPath(); - if (!dir.getCanonicalPath().startsWith(parentCanonical)) { // $hasTaintFlow - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical)) { // $ Alert + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } - if (!dir.getCanonicalPath().startsWith(parentCanonical2)) { // $hasTaintFlow - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical2)) { // $ Alert + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - void foo13(File dir, File parent) throws IOException { + void foo13(File parent) throws IOException { String parentCanonical = parent.getCanonicalPath() + File.separatorChar; - if (!dir.getCanonicalPath().startsWith(parentCanonical)) { - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical)) { + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - void foo14(File dir, File parent) throws IOException { + void foo14(File parent) throws IOException { String parentCanonical = parent.getCanonicalPath() + separatorChar; - if (!dir.getCanonicalPath().startsWith(parentCanonical)) { - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical)) { + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } void foo15(File dir, File parent) throws IOException { String parentCanonical = parent.getCanonicalPath() + File.separatorChar; String parentCanonical2 = parent.getCanonicalPath() + File.separatorChar; - if (!dir.getCanonicalPath().startsWith(parentCanonical)) { - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical)) { + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } - if (!dir.getCanonicalPath().startsWith(parentCanonical2)) { - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical2)) { + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - void foo16(File dir, File parent) throws IOException { + void foo16(File parent) throws IOException { String parentCanonical = parent.getCanonicalPath() + File.separator; - if (!dir.getCanonicalPath().startsWith(parentCanonical)) { - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical)) { + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } @@ -145,7 +148,7 @@ void foo16(File dir, File parent) throws IOException { "UnusedAssignment", "ResultOfMethodCallIgnored" }) - void foo17(File dir, File parent, boolean branch) throws IOException { + void foo17(File parent, boolean branch) throws IOException { String parentCanonical = null; "test ".startsWith("somethingElse"); if (branch) { @@ -153,8 +156,8 @@ void foo17(File dir, File parent, boolean branch) throws IOException { } else { parentCanonical = parent.getCanonicalPath() + File.separatorChar; } - if (!dir.getCanonicalPath().startsWith(parentCanonical)) { - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical)) { + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } @@ -163,24 +166,24 @@ void foo18(File dir, File parent, boolean branch) throws IOException { if (branch) { parentCanonical = parent.getCanonicalPath() + File.separatorChar; } - if (!dir.getCanonicalPath().startsWith(parentCanonical)) { - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical)) { + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - void foo19(File dir, File parent) throws IOException { + void foo19(File parent) throws IOException { String parentCanonical = parent.getCanonicalPath() + "/potato"; - if (!dir.getCanonicalPath().startsWith(parentCanonical)) { // $hasTaintFlow - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical)) { // $ Alert + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } private File cacheDir; - InputStream foo20(String... path) { + InputStream foo20() { StringBuilder sb = new StringBuilder(); sb.append(cacheDir.getAbsolutePath()); - for (String p : path) { + for (String p : path()) { sb.append(File.separatorChar); sb.append(p); } @@ -188,7 +191,7 @@ InputStream foo20(String... path) { String filePath = sb.toString(); File encodedFile = new File(filePath); try { - if (!encodedFile.getCanonicalPath().startsWith(cacheDir.getCanonicalPath())) { // $hasTaintFlow + if (!encodedFile.getCanonicalPath().startsWith(cacheDir.getCanonicalPath())) { // $ Alert return null; } return Files.newInputStream(encodedFile.toPath()); @@ -197,37 +200,37 @@ InputStream foo20(String... path) { } } - void foo21(File dir, File parent) throws IOException { + void foo21(File parent) throws IOException { String parentCanonical = parent.getCanonicalPath(); - if (!dir.getCanonicalPath().startsWith(parentCanonical + File.separator)) { - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical + File.separator)) { + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - void foo22(File dir, File dir2, File parent, boolean conditional) throws IOException { - String canonicalPath = conditional ? dir.getCanonicalPath() : dir2.getCanonicalPath(); - if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $hasTaintFlow - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + void foo22(File dir2, File parent, boolean conditional) throws IOException { + String canonicalPath = conditional ? dir().getCanonicalPath() : dir2.getCanonicalPath(); + if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $ Alert + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - void foo23(File dir, File parent) throws IOException { + void foo23(File parent) throws IOException { String parentCanonical = parent.getCanonicalPath(); - if (!dir.getCanonicalPath().startsWith(parentCanonical + "/")) { - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical + "/")) { + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - void foo24(File dir, File parent) throws IOException { + void foo24(File parent) throws IOException { String parentCanonical = parent.getCanonicalPath(); - if (!dir.getCanonicalPath().startsWith(parentCanonical + '/')) { - throw new IOException("Invalid directory: " + dir.getCanonicalPath()); + if (!dir().getCanonicalPath().startsWith(parentCanonical + '/')) { + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } - public void doesNotFlagOptimalSafeVersion(File dir, File parent) throws IOException { - if (!dir.toPath().normalize().startsWith(parent.toPath())) { // Safe - throw new IOException("Path traversal attempt: " + dir.getCanonicalPath()); + public void doesNotFlagOptimalSafeVersion(File parent) throws IOException { + if (!dir().toPath().normalize().startsWith(parent.toPath())) { // Safe + throw new IOException("Path traversal attempt: " + dir().getCanonicalPath()); } } @@ -242,4 +245,19 @@ public void doesNotFlagBackslash(File file) throws IOException { } } -} \ No newline at end of file + Socket sock; + + File dir() { + try { + BufferedReader filenameReader = new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF-8")); // $ Source + String filename = filenameReader.readLine(); + return new File(filename); + } catch (IOException e) { + throw new RuntimeException("Failed to read from socket", e); + } + } + + String[] path() { + return dir().getAbsolutePath().split(File.separator); + } +} diff --git a/java/ql/test/query-tests/security/CWE-074/JndiInjection/JndiInjectionTest.expected b/java/ql/test/query-tests/security/CWE-074/JndiInjection/JndiInjectionTest.expected new file mode 100644 index 000000000000..6855ccb21040 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-074/JndiInjection/JndiInjectionTest.expected @@ -0,0 +1,308 @@ +#select +| JndiInjectionTest.java:36:16:36:22 | nameStr | JndiInjectionTest.java:32:38:32:65 | nameStr : String | JndiInjectionTest.java:36:16:36:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:32:38:32:65 | nameStr | this user input | +| JndiInjectionTest.java:37:20:37:26 | nameStr | JndiInjectionTest.java:32:38:32:65 | nameStr : String | JndiInjectionTest.java:37:20:37:26 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:32:38:32:65 | nameStr | this user input | +| JndiInjectionTest.java:38:29:38:35 | nameStr | JndiInjectionTest.java:32:38:32:65 | nameStr : String | JndiInjectionTest.java:38:29:38:35 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:32:38:32:65 | nameStr | this user input | +| JndiInjectionTest.java:39:16:39:22 | nameStr | JndiInjectionTest.java:32:38:32:65 | nameStr : String | JndiInjectionTest.java:39:16:39:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:32:38:32:65 | nameStr | this user input | +| JndiInjectionTest.java:40:14:40:20 | nameStr | JndiInjectionTest.java:32:38:32:65 | nameStr : String | JndiInjectionTest.java:40:14:40:20 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:32:38:32:65 | nameStr | this user input | +| JndiInjectionTest.java:41:22:41:28 | nameStr | JndiInjectionTest.java:32:38:32:65 | nameStr : String | JndiInjectionTest.java:41:22:41:28 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:32:38:32:65 | nameStr | this user input | +| JndiInjectionTest.java:43:16:43:19 | name | JndiInjectionTest.java:32:38:32:65 | nameStr : String | JndiInjectionTest.java:43:16:43:19 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:32:38:32:65 | nameStr | this user input | +| JndiInjectionTest.java:44:20:44:23 | name | JndiInjectionTest.java:32:38:32:65 | nameStr : String | JndiInjectionTest.java:44:20:44:23 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:32:38:32:65 | nameStr | this user input | +| JndiInjectionTest.java:45:29:45:32 | name | JndiInjectionTest.java:32:38:32:65 | nameStr : String | JndiInjectionTest.java:45:29:45:32 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:32:38:32:65 | nameStr | this user input | +| JndiInjectionTest.java:46:16:46:19 | name | JndiInjectionTest.java:32:38:32:65 | nameStr : String | JndiInjectionTest.java:46:16:46:19 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:32:38:32:65 | nameStr | this user input | +| JndiInjectionTest.java:47:14:47:17 | name | JndiInjectionTest.java:32:38:32:65 | nameStr : String | JndiInjectionTest.java:47:14:47:17 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:32:38:32:65 | nameStr | this user input | +| JndiInjectionTest.java:48:22:48:25 | name | JndiInjectionTest.java:32:38:32:65 | nameStr : String | JndiInjectionTest.java:48:22:48:25 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:32:38:32:65 | nameStr | this user input | +| JndiInjectionTest.java:56:16:56:22 | nameStr | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:56:16:56:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:57:20:57:26 | nameStr | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:57:20:57:26 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:58:16:58:22 | nameStr | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:58:16:58:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:59:14:59:20 | nameStr | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:59:14:59:20 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:60:22:60:28 | nameStr | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:60:22:60:28 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:62:16:62:19 | name | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:62:16:62:19 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:63:20:63:23 | name | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:63:20:63:23 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:64:16:64:19 | name | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:64:16:64:19 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:65:14:65:17 | name | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:65:14:65:17 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:66:22:66:25 | name | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:66:22:66:25 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:70:16:70:22 | nameStr | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:70:16:70:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:71:16:71:22 | nameStr | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:71:16:71:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:74:16:74:22 | nameStr | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:74:16:74:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:75:16:75:22 | nameStr | JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:75:16:75:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:52:34:52:61 | nameStr | this user input | +| JndiInjectionTest.java:87:16:87:22 | nameStr | JndiInjectionTest.java:83:42:83:69 | nameStr : String | JndiInjectionTest.java:87:16:87:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:83:42:83:69 | nameStr | this user input | +| JndiInjectionTest.java:88:20:88:26 | nameStr | JndiInjectionTest.java:83:42:83:69 | nameStr : String | JndiInjectionTest.java:88:20:88:26 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:83:42:83:69 | nameStr | this user input | +| JndiInjectionTest.java:89:16:89:22 | nameStr | JndiInjectionTest.java:83:42:83:69 | nameStr : String | JndiInjectionTest.java:89:16:89:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:83:42:83:69 | nameStr | this user input | +| JndiInjectionTest.java:90:14:90:20 | nameStr | JndiInjectionTest.java:83:42:83:69 | nameStr : String | JndiInjectionTest.java:90:14:90:20 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:83:42:83:69 | nameStr | this user input | +| JndiInjectionTest.java:91:22:91:28 | nameStr | JndiInjectionTest.java:83:42:83:69 | nameStr : String | JndiInjectionTest.java:91:22:91:28 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:83:42:83:69 | nameStr | this user input | +| JndiInjectionTest.java:93:16:93:19 | name | JndiInjectionTest.java:83:42:83:69 | nameStr : String | JndiInjectionTest.java:93:16:93:19 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:83:42:83:69 | nameStr | this user input | +| JndiInjectionTest.java:94:20:94:23 | name | JndiInjectionTest.java:83:42:83:69 | nameStr : String | JndiInjectionTest.java:94:20:94:23 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:83:42:83:69 | nameStr | this user input | +| JndiInjectionTest.java:95:16:95:19 | name | JndiInjectionTest.java:83:42:83:69 | nameStr : String | JndiInjectionTest.java:95:16:95:19 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:83:42:83:69 | nameStr | this user input | +| JndiInjectionTest.java:96:14:96:17 | name | JndiInjectionTest.java:83:42:83:69 | nameStr : String | JndiInjectionTest.java:96:14:96:17 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:83:42:83:69 | nameStr | this user input | +| JndiInjectionTest.java:97:22:97:25 | name | JndiInjectionTest.java:83:42:83:69 | nameStr : String | JndiInjectionTest.java:97:22:97:25 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:83:42:83:69 | nameStr | this user input | +| JndiInjectionTest.java:104:16:104:22 | nameStr | JndiInjectionTest.java:101:42:101:69 | nameStr : String | JndiInjectionTest.java:104:16:104:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:101:42:101:69 | nameStr | this user input | +| JndiInjectionTest.java:105:16:105:22 | nameStr | JndiInjectionTest.java:101:42:101:69 | nameStr : String | JndiInjectionTest.java:105:16:105:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:101:42:101:69 | nameStr | this user input | +| JndiInjectionTest.java:113:16:113:19 | name | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:113:16:113:19 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:115:16:115:19 | name | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:115:16:115:19 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:117:16:117:19 | name | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:117:16:117:19 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:118:16:118:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:118:16:118:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:120:16:120:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:120:16:120:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:122:16:122:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:122:16:122:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:123:23:123:26 | name | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:123:23:123:26 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:124:23:124:29 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:124:23:124:29 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:125:18:125:21 | name | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:125:18:125:21 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:126:16:126:19 | name | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:126:16:126:19 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:127:14:127:17 | name | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:127:14:127:17 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:128:22:128:25 | name | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:128:22:128:25 | name | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:129:16:129:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:129:16:129:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:131:16:131:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:131:16:131:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:132:16:132:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:132:16:132:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:133:16:133:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:133:16:133:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:134:16:134:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:134:16:134:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:138:16:138:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:138:16:138:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:139:16:139:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:139:16:139:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:141:16:141:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:141:16:141:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:142:16:142:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:142:16:142:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:144:16:144:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:144:16:144:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:145:16:145:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:145:16:145:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:149:16:149:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:149:16:149:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:150:16:150:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:150:16:150:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:152:16:152:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:152:16:152:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:153:16:153:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:153:16:153:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:155:16:155:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:155:16:155:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:156:16:156:22 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:156:16:156:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:170:25:170:31 | nameStr | JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:170:25:170:31 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:109:42:109:69 | nameStr | this user input | +| JndiInjectionTest.java:177:16:177:22 | nameStr | JndiInjectionTest.java:174:41:174:68 | nameStr : String | JndiInjectionTest.java:177:16:177:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:174:41:174:68 | nameStr | this user input | +| JndiInjectionTest.java:178:16:178:22 | nameStr | JndiInjectionTest.java:174:41:174:68 | nameStr : String | JndiInjectionTest.java:178:16:178:22 | nameStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:174:41:174:68 | nameStr | this user input | +| JndiInjectionTest.java:183:33:183:57 | new JMXServiceURL(...) | JndiInjectionTest.java:182:37:182:63 | urlStr : String | JndiInjectionTest.java:183:33:183:57 | new JMXServiceURL(...) | JNDI lookup might include name from $@. | JndiInjectionTest.java:182:37:182:63 | urlStr | this user input | +| JndiInjectionTest.java:187:5:187:13 | connector | JndiInjectionTest.java:182:37:182:63 | urlStr : String | JndiInjectionTest.java:187:5:187:13 | connector | JNDI lookup might include name from $@. | JndiInjectionTest.java:182:37:182:63 | urlStr | this user input | +| JndiInjectionTest.java:194:35:194:40 | urlStr | JndiInjectionTest.java:191:27:191:53 | urlStr : String | JndiInjectionTest.java:194:35:194:40 | urlStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:191:27:191:53 | urlStr | this user input | +| JndiInjectionTest.java:202:41:202:46 | urlStr | JndiInjectionTest.java:199:27:199:53 | urlStr : String | JndiInjectionTest.java:202:41:202:46 | urlStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:199:27:199:53 | urlStr | this user input | +| JndiInjectionTest.java:211:37:211:42 | urlStr | JndiInjectionTest.java:207:52:207:78 | urlStr : String | JndiInjectionTest.java:211:37:211:42 | urlStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:207:52:207:78 | urlStr | this user input | +| JndiInjectionTest.java:221:51:221:56 | urlStr | JndiInjectionTest.java:216:52:216:78 | urlStr : String | JndiInjectionTest.java:221:51:221:56 | urlStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:216:52:216:78 | urlStr | this user input | +| JndiInjectionTest.java:231:51:231:56 | urlStr | JndiInjectionTest.java:226:52:226:78 | urlStr : String | JndiInjectionTest.java:231:51:231:56 | urlStr | JNDI lookup might include name from $@. | JndiInjectionTest.java:226:52:226:78 | urlStr | this user input | +edges +| JndiInjectionTest.java:32:38:32:65 | nameStr : String | JndiInjectionTest.java:33:35:33:41 | nameStr : String | provenance | | +| JndiInjectionTest.java:33:17:33:42 | new CompositeName(...) : CompositeName | JndiInjectionTest.java:43:16:43:19 | name | provenance | Sink:MaD:6 | +| JndiInjectionTest.java:33:17:33:42 | new CompositeName(...) : CompositeName | JndiInjectionTest.java:44:20:44:23 | name | provenance | Sink:MaD:7 | +| JndiInjectionTest.java:33:17:33:42 | new CompositeName(...) : CompositeName | JndiInjectionTest.java:45:29:45:32 | name | provenance | Sink:MaD:9 | +| JndiInjectionTest.java:33:17:33:42 | new CompositeName(...) : CompositeName | JndiInjectionTest.java:46:16:46:19 | name | provenance | Sink:MaD:8 | +| JndiInjectionTest.java:33:17:33:42 | new CompositeName(...) : CompositeName | JndiInjectionTest.java:47:14:47:17 | name | provenance | Sink:MaD:4 | +| JndiInjectionTest.java:33:17:33:42 | new CompositeName(...) : CompositeName | JndiInjectionTest.java:48:22:48:25 | name | provenance | Sink:MaD:5 | +| JndiInjectionTest.java:33:35:33:41 | nameStr : String | JndiInjectionTest.java:33:17:33:42 | new CompositeName(...) : CompositeName | provenance | Config | +| JndiInjectionTest.java:33:35:33:41 | nameStr : String | JndiInjectionTest.java:36:16:36:22 | nameStr | provenance | Sink:MaD:6 | +| JndiInjectionTest.java:33:35:33:41 | nameStr : String | JndiInjectionTest.java:37:20:37:26 | nameStr | provenance | Sink:MaD:7 | +| JndiInjectionTest.java:33:35:33:41 | nameStr : String | JndiInjectionTest.java:38:29:38:35 | nameStr | provenance | Sink:MaD:9 | +| JndiInjectionTest.java:33:35:33:41 | nameStr : String | JndiInjectionTest.java:39:16:39:22 | nameStr | provenance | Sink:MaD:8 | +| JndiInjectionTest.java:33:35:33:41 | nameStr : String | JndiInjectionTest.java:40:14:40:20 | nameStr | provenance | Sink:MaD:4 | +| JndiInjectionTest.java:33:35:33:41 | nameStr : String | JndiInjectionTest.java:41:22:41:28 | nameStr | provenance | Sink:MaD:5 | +| JndiInjectionTest.java:52:34:52:61 | nameStr : String | JndiInjectionTest.java:53:34:53:40 | nameStr : String | provenance | | +| JndiInjectionTest.java:53:17:53:59 | new CompoundName(...) : CompoundName | JndiInjectionTest.java:62:16:62:19 | name | provenance | Sink:MaD:6 | +| JndiInjectionTest.java:53:17:53:59 | new CompoundName(...) : CompoundName | JndiInjectionTest.java:63:20:63:23 | name | provenance | Sink:MaD:7 | +| JndiInjectionTest.java:53:17:53:59 | new CompoundName(...) : CompoundName | JndiInjectionTest.java:64:16:64:19 | name | provenance | Sink:MaD:8 | +| JndiInjectionTest.java:53:17:53:59 | new CompoundName(...) : CompoundName | JndiInjectionTest.java:65:14:65:17 | name | provenance | Sink:MaD:4 | +| JndiInjectionTest.java:53:17:53:59 | new CompoundName(...) : CompoundName | JndiInjectionTest.java:66:22:66:25 | name | provenance | Sink:MaD:5 | +| JndiInjectionTest.java:53:34:53:40 | nameStr : String | JndiInjectionTest.java:53:17:53:59 | new CompoundName(...) : CompoundName | provenance | Config | +| JndiInjectionTest.java:53:34:53:40 | nameStr : String | JndiInjectionTest.java:56:16:56:22 | nameStr | provenance | Sink:MaD:6 | +| JndiInjectionTest.java:53:34:53:40 | nameStr : String | JndiInjectionTest.java:57:20:57:26 | nameStr | provenance | Sink:MaD:7 | +| JndiInjectionTest.java:53:34:53:40 | nameStr : String | JndiInjectionTest.java:58:16:58:22 | nameStr | provenance | Sink:MaD:8 | +| JndiInjectionTest.java:53:34:53:40 | nameStr : String | JndiInjectionTest.java:59:14:59:20 | nameStr | provenance | Sink:MaD:4 | +| JndiInjectionTest.java:53:34:53:40 | nameStr : String | JndiInjectionTest.java:60:22:60:28 | nameStr | provenance | Sink:MaD:5 | +| JndiInjectionTest.java:53:34:53:40 | nameStr : String | JndiInjectionTest.java:70:16:70:22 | nameStr | provenance | Sink:MaD:3 | +| JndiInjectionTest.java:53:34:53:40 | nameStr : String | JndiInjectionTest.java:71:16:71:22 | nameStr | provenance | Sink:MaD:3 | +| JndiInjectionTest.java:53:34:53:40 | nameStr : String | JndiInjectionTest.java:74:16:74:22 | nameStr | provenance | Sink:MaD:3 | +| JndiInjectionTest.java:53:34:53:40 | nameStr : String | JndiInjectionTest.java:75:16:75:22 | nameStr | provenance | Sink:MaD:3 | +| JndiInjectionTest.java:83:42:83:69 | nameStr : String | JndiInjectionTest.java:84:35:84:41 | nameStr : String | provenance | | +| JndiInjectionTest.java:84:17:84:42 | new CompositeName(...) : CompositeName | JndiInjectionTest.java:93:16:93:19 | name | provenance | Sink:MaD:6 | +| JndiInjectionTest.java:84:17:84:42 | new CompositeName(...) : CompositeName | JndiInjectionTest.java:94:20:94:23 | name | provenance | Sink:MaD:7 | +| JndiInjectionTest.java:84:17:84:42 | new CompositeName(...) : CompositeName | JndiInjectionTest.java:95:16:95:19 | name | provenance | Sink:MaD:8 | +| JndiInjectionTest.java:84:17:84:42 | new CompositeName(...) : CompositeName | JndiInjectionTest.java:96:14:96:17 | name | provenance | Sink:MaD:4 | +| JndiInjectionTest.java:84:17:84:42 | new CompositeName(...) : CompositeName | JndiInjectionTest.java:97:22:97:25 | name | provenance | Sink:MaD:5 | +| JndiInjectionTest.java:84:35:84:41 | nameStr : String | JndiInjectionTest.java:84:17:84:42 | new CompositeName(...) : CompositeName | provenance | Config | +| JndiInjectionTest.java:84:35:84:41 | nameStr : String | JndiInjectionTest.java:87:16:87:22 | nameStr | provenance | Sink:MaD:6 | +| JndiInjectionTest.java:84:35:84:41 | nameStr : String | JndiInjectionTest.java:88:20:88:26 | nameStr | provenance | Sink:MaD:7 | +| JndiInjectionTest.java:84:35:84:41 | nameStr : String | JndiInjectionTest.java:89:16:89:22 | nameStr | provenance | Sink:MaD:8 | +| JndiInjectionTest.java:84:35:84:41 | nameStr : String | JndiInjectionTest.java:90:14:90:20 | nameStr | provenance | Sink:MaD:4 | +| JndiInjectionTest.java:84:35:84:41 | nameStr : String | JndiInjectionTest.java:91:22:91:28 | nameStr | provenance | Sink:MaD:5 | +| JndiInjectionTest.java:101:42:101:69 | nameStr : String | JndiInjectionTest.java:104:16:104:22 | nameStr | provenance | Sink:MaD:11 | +| JndiInjectionTest.java:101:42:101:69 | nameStr : String | JndiInjectionTest.java:105:16:105:22 | nameStr | provenance | Sink:MaD:11 | +| JndiInjectionTest.java:109:42:109:69 | nameStr : String | JndiInjectionTest.java:111:41:111:47 | nameStr : String | provenance | | +| JndiInjectionTest.java:111:17:111:48 | add(...) : Name | JndiInjectionTest.java:113:16:113:19 | name | provenance | Sink:MaD:15 | +| JndiInjectionTest.java:111:17:111:48 | add(...) : Name | JndiInjectionTest.java:115:16:115:19 | name | provenance | Sink:MaD:16 | +| JndiInjectionTest.java:111:17:111:48 | add(...) : Name | JndiInjectionTest.java:117:16:117:19 | name | provenance | Sink:MaD:17 | +| JndiInjectionTest.java:111:17:111:48 | add(...) : Name | JndiInjectionTest.java:123:23:123:26 | name | provenance | Sink:MaD:21 | +| JndiInjectionTest.java:111:17:111:48 | add(...) : Name | JndiInjectionTest.java:125:18:125:21 | name | provenance | Sink:MaD:12 | +| JndiInjectionTest.java:111:17:111:48 | add(...) : Name | JndiInjectionTest.java:126:16:126:19 | name | provenance | Sink:MaD:22 | +| JndiInjectionTest.java:111:17:111:48 | add(...) : Name | JndiInjectionTest.java:127:14:127:17 | name | provenance | Sink:MaD:13 | +| JndiInjectionTest.java:111:17:111:48 | add(...) : Name | JndiInjectionTest.java:128:22:128:25 | name | provenance | Sink:MaD:14 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:111:17:111:48 | add(...) : Name | provenance | Config | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:118:16:118:22 | nameStr | provenance | Sink:MaD:18 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:120:16:120:22 | nameStr | provenance | Sink:MaD:19 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:122:16:122:22 | nameStr | provenance | Sink:MaD:20 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:124:23:124:29 | nameStr | provenance | Sink:MaD:21 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:129:16:129:22 | nameStr | provenance | | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:131:16:131:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:132:16:132:22 | nameStr | provenance | Sink:MaD:25 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:132:16:132:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:133:16:133:22 | nameStr | provenance | Sink:MaD:24 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:133:16:133:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:134:16:134:22 | nameStr | provenance | Sink:MaD:23 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:134:16:134:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:138:16:138:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:139:16:139:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:141:16:141:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:142:16:142:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:144:16:144:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:145:16:145:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:149:16:149:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:150:16:150:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:152:16:152:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:153:16:153:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:155:16:155:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:156:16:156:22 | nameStr | provenance | Sink:MaD:27 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:170:25:170:31 | nameStr | provenance | Sink:MaD:26 | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | JndiInjectionTest.java:170:25:170:31 | nameStr | provenance | Sink:MaD:28 | +| JndiInjectionTest.java:174:41:174:68 | nameStr : String | JndiInjectionTest.java:177:16:177:22 | nameStr | provenance | Sink:MaD:10 | +| JndiInjectionTest.java:174:41:174:68 | nameStr : String | JndiInjectionTest.java:178:16:178:22 | nameStr | provenance | Sink:MaD:10 | +| JndiInjectionTest.java:182:37:182:63 | urlStr : String | JndiInjectionTest.java:183:51:183:56 | urlStr : String | provenance | | +| JndiInjectionTest.java:183:51:183:56 | urlStr : String | JndiInjectionTest.java:183:33:183:57 | new JMXServiceURL(...) | provenance | Config Sink:MaD:2 | +| JndiInjectionTest.java:183:51:183:56 | urlStr : String | JndiInjectionTest.java:185:43:185:48 | urlStr : String | provenance | | +| JndiInjectionTest.java:185:25:185:49 | new JMXServiceURL(...) : JMXServiceURL | JndiInjectionTest.java:186:66:186:68 | url : JMXServiceURL | provenance | | +| JndiInjectionTest.java:185:43:185:48 | urlStr : String | JndiInjectionTest.java:185:25:185:49 | new JMXServiceURL(...) : JMXServiceURL | provenance | Config | +| JndiInjectionTest.java:186:30:186:75 | newJMXConnector(...) : JMXConnector | JndiInjectionTest.java:187:5:187:13 | connector | provenance | Sink:MaD:1 | +| JndiInjectionTest.java:186:66:186:68 | url : JMXServiceURL | JndiInjectionTest.java:186:30:186:75 | newJMXConnector(...) : JMXConnector | provenance | Config | +| JndiInjectionTest.java:186:66:186:68 | url : JMXServiceURL | JndiInjectionTest.java:186:30:186:75 | newJMXConnector(...) : JMXConnector | provenance | MaD:29 | +| JndiInjectionTest.java:191:27:191:53 | urlStr : String | JndiInjectionTest.java:194:35:194:40 | urlStr | provenance | | +| JndiInjectionTest.java:199:27:199:53 | urlStr : String | JndiInjectionTest.java:202:41:202:46 | urlStr | provenance | | +| JndiInjectionTest.java:207:52:207:78 | urlStr : String | JndiInjectionTest.java:211:37:211:42 | urlStr | provenance | | +| JndiInjectionTest.java:216:52:216:78 | urlStr : String | JndiInjectionTest.java:221:51:221:56 | urlStr | provenance | | +| JndiInjectionTest.java:226:52:226:78 | urlStr : String | JndiInjectionTest.java:231:51:231:56 | urlStr | provenance | | +models +| 1 | Sink: javax.management.remote; JMXConnector; true; connect; ; ; Argument[this]; jndi-injection; manual | +| 2 | Sink: javax.management.remote; JMXConnectorFactory; false; connect; ; ; Argument[0]; jndi-injection; manual | +| 3 | Sink: javax.naming.directory; DirContext; true; search; ; ; Argument[0..1]; ldap-injection; manual | +| 4 | Sink: javax.naming; Context; true; list; ; ; Argument[0]; jndi-injection; manual | +| 5 | Sink: javax.naming; Context; true; listBindings; ; ; Argument[0]; jndi-injection; manual | +| 6 | Sink: javax.naming; Context; true; lookup; ; ; Argument[0]; jndi-injection; manual | +| 7 | Sink: javax.naming; Context; true; lookupLink; ; ; Argument[0]; jndi-injection; manual | +| 8 | Sink: javax.naming; Context; true; rename; ; ; Argument[0]; jndi-injection; manual | +| 9 | Sink: javax.naming; InitialContext; true; doLookup; ; ; Argument[0]; jndi-injection; manual | +| 10 | Sink: org.apache.shiro.jndi; JndiTemplate; false; lookup; ; ; Argument[0]; jndi-injection; manual | +| 11 | Sink: org.springframework.jndi; JndiTemplate; false; lookup; ; ; Argument[0]; jndi-injection; manual | +| 12 | Sink: org.springframework.ldap.core; LdapOperations; true; findByDn; ; ; Argument[0]; jndi-injection; manual | +| 13 | Sink: org.springframework.ldap.core; LdapOperations; true; list; ; ; Argument[0]; jndi-injection; manual | +| 14 | Sink: org.springframework.ldap.core; LdapOperations; true; listBindings; ; ; Argument[0]; jndi-injection; manual | +| 15 | Sink: org.springframework.ldap.core; LdapOperations; true; lookup; (Name); ; Argument[0]; jndi-injection; manual | +| 16 | Sink: org.springframework.ldap.core; LdapOperations; true; lookup; (Name,ContextMapper); ; Argument[0]; jndi-injection; manual | +| 17 | Sink: org.springframework.ldap.core; LdapOperations; true; lookup; (Name,String[],ContextMapper); ; Argument[0]; jndi-injection; manual | +| 18 | Sink: org.springframework.ldap.core; LdapOperations; true; lookup; (String); ; Argument[0]; jndi-injection; manual | +| 19 | Sink: org.springframework.ldap.core; LdapOperations; true; lookup; (String,ContextMapper); ; Argument[0]; jndi-injection; manual | +| 20 | Sink: org.springframework.ldap.core; LdapOperations; true; lookup; (String,String[],ContextMapper); ; Argument[0]; jndi-injection; manual | +| 21 | Sink: org.springframework.ldap.core; LdapOperations; true; lookupContext; ; ; Argument[0]; jndi-injection; manual | +| 22 | Sink: org.springframework.ldap.core; LdapOperations; true; rename; ; ; Argument[0]; jndi-injection; manual | +| 23 | Sink: org.springframework.ldap.core; LdapOperations; true; search; (String,String,ContextMapper); ; Argument[0]; jndi-injection; manual | +| 24 | Sink: org.springframework.ldap.core; LdapOperations; true; search; (String,String,int,ContextMapper); ; Argument[0]; jndi-injection; manual | +| 25 | Sink: org.springframework.ldap.core; LdapOperations; true; search; (String,String,int,String[],ContextMapper); ; Argument[0]; jndi-injection; manual | +| 26 | Sink: org.springframework.ldap.core; LdapOperations; true; searchForObject; (String,String,ContextMapper); ; Argument[0]; jndi-injection; manual | +| 27 | Sink: org.springframework.ldap.core; LdapTemplate; false; search; ; ; Argument[0..1]; ldap-injection; manual | +| 28 | Sink: org.springframework.ldap.core; LdapTemplate; false; searchForObject; ; ; Argument[0..1]; ldap-injection; manual | +| 29 | Summary: javax.management.remote; JMXConnectorFactory; true; newJMXConnector; (JMXServiceURL,Map); ; Argument[0]; ReturnValue; taint; df-generated | +nodes +| JndiInjectionTest.java:32:38:32:65 | nameStr : String | semmle.label | nameStr : String | +| JndiInjectionTest.java:33:17:33:42 | new CompositeName(...) : CompositeName | semmle.label | new CompositeName(...) : CompositeName | +| JndiInjectionTest.java:33:35:33:41 | nameStr : String | semmle.label | nameStr : String | +| JndiInjectionTest.java:36:16:36:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:37:20:37:26 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:38:29:38:35 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:39:16:39:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:40:14:40:20 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:41:22:41:28 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:43:16:43:19 | name | semmle.label | name | +| JndiInjectionTest.java:44:20:44:23 | name | semmle.label | name | +| JndiInjectionTest.java:45:29:45:32 | name | semmle.label | name | +| JndiInjectionTest.java:46:16:46:19 | name | semmle.label | name | +| JndiInjectionTest.java:47:14:47:17 | name | semmle.label | name | +| JndiInjectionTest.java:48:22:48:25 | name | semmle.label | name | +| JndiInjectionTest.java:52:34:52:61 | nameStr : String | semmle.label | nameStr : String | +| JndiInjectionTest.java:53:17:53:59 | new CompoundName(...) : CompoundName | semmle.label | new CompoundName(...) : CompoundName | +| JndiInjectionTest.java:53:34:53:40 | nameStr : String | semmle.label | nameStr : String | +| JndiInjectionTest.java:56:16:56:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:57:20:57:26 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:58:16:58:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:59:14:59:20 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:60:22:60:28 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:62:16:62:19 | name | semmle.label | name | +| JndiInjectionTest.java:63:20:63:23 | name | semmle.label | name | +| JndiInjectionTest.java:64:16:64:19 | name | semmle.label | name | +| JndiInjectionTest.java:65:14:65:17 | name | semmle.label | name | +| JndiInjectionTest.java:66:22:66:25 | name | semmle.label | name | +| JndiInjectionTest.java:70:16:70:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:71:16:71:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:74:16:74:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:75:16:75:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:83:42:83:69 | nameStr : String | semmle.label | nameStr : String | +| JndiInjectionTest.java:84:17:84:42 | new CompositeName(...) : CompositeName | semmle.label | new CompositeName(...) : CompositeName | +| JndiInjectionTest.java:84:35:84:41 | nameStr : String | semmle.label | nameStr : String | +| JndiInjectionTest.java:87:16:87:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:88:20:88:26 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:89:16:89:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:90:14:90:20 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:91:22:91:28 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:93:16:93:19 | name | semmle.label | name | +| JndiInjectionTest.java:94:20:94:23 | name | semmle.label | name | +| JndiInjectionTest.java:95:16:95:19 | name | semmle.label | name | +| JndiInjectionTest.java:96:14:96:17 | name | semmle.label | name | +| JndiInjectionTest.java:97:22:97:25 | name | semmle.label | name | +| JndiInjectionTest.java:101:42:101:69 | nameStr : String | semmle.label | nameStr : String | +| JndiInjectionTest.java:104:16:104:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:105:16:105:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:109:42:109:69 | nameStr : String | semmle.label | nameStr : String | +| JndiInjectionTest.java:111:17:111:48 | add(...) : Name | semmle.label | add(...) : Name | +| JndiInjectionTest.java:111:41:111:47 | nameStr : String | semmle.label | nameStr : String | +| JndiInjectionTest.java:113:16:113:19 | name | semmle.label | name | +| JndiInjectionTest.java:115:16:115:19 | name | semmle.label | name | +| JndiInjectionTest.java:117:16:117:19 | name | semmle.label | name | +| JndiInjectionTest.java:118:16:118:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:120:16:120:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:122:16:122:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:123:23:123:26 | name | semmle.label | name | +| JndiInjectionTest.java:124:23:124:29 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:125:18:125:21 | name | semmle.label | name | +| JndiInjectionTest.java:126:16:126:19 | name | semmle.label | name | +| JndiInjectionTest.java:127:14:127:17 | name | semmle.label | name | +| JndiInjectionTest.java:128:22:128:25 | name | semmle.label | name | +| JndiInjectionTest.java:129:16:129:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:131:16:131:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:132:16:132:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:133:16:133:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:134:16:134:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:138:16:138:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:139:16:139:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:141:16:141:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:142:16:142:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:144:16:144:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:145:16:145:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:149:16:149:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:150:16:150:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:152:16:152:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:153:16:153:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:155:16:155:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:156:16:156:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:170:25:170:31 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:174:41:174:68 | nameStr : String | semmle.label | nameStr : String | +| JndiInjectionTest.java:177:16:177:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:178:16:178:22 | nameStr | semmle.label | nameStr | +| JndiInjectionTest.java:182:37:182:63 | urlStr : String | semmle.label | urlStr : String | +| JndiInjectionTest.java:183:33:183:57 | new JMXServiceURL(...) | semmle.label | new JMXServiceURL(...) | +| JndiInjectionTest.java:183:51:183:56 | urlStr : String | semmle.label | urlStr : String | +| JndiInjectionTest.java:185:25:185:49 | new JMXServiceURL(...) : JMXServiceURL | semmle.label | new JMXServiceURL(...) : JMXServiceURL | +| JndiInjectionTest.java:185:43:185:48 | urlStr : String | semmle.label | urlStr : String | +| JndiInjectionTest.java:186:30:186:75 | newJMXConnector(...) : JMXConnector | semmle.label | newJMXConnector(...) : JMXConnector | +| JndiInjectionTest.java:186:66:186:68 | url : JMXServiceURL | semmle.label | url : JMXServiceURL | +| JndiInjectionTest.java:187:5:187:13 | connector | semmle.label | connector | +| JndiInjectionTest.java:191:27:191:53 | urlStr : String | semmle.label | urlStr : String | +| JndiInjectionTest.java:194:35:194:40 | urlStr | semmle.label | urlStr | +| JndiInjectionTest.java:199:27:199:53 | urlStr : String | semmle.label | urlStr : String | +| JndiInjectionTest.java:202:41:202:46 | urlStr | semmle.label | urlStr | +| JndiInjectionTest.java:207:52:207:78 | urlStr : String | semmle.label | urlStr : String | +| JndiInjectionTest.java:211:37:211:42 | urlStr | semmle.label | urlStr | +| JndiInjectionTest.java:216:52:216:78 | urlStr : String | semmle.label | urlStr : String | +| JndiInjectionTest.java:221:51:221:56 | urlStr | semmle.label | urlStr | +| JndiInjectionTest.java:226:52:226:78 | urlStr : String | semmle.label | urlStr : String | +| JndiInjectionTest.java:231:51:231:56 | urlStr | semmle.label | urlStr | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-074/JndiInjection/JndiInjectionTest.java b/java/ql/test/query-tests/security/CWE-074/JndiInjection/JndiInjectionTest.java new file mode 100644 index 000000000000..961023db60de --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-074/JndiInjection/JndiInjectionTest.java @@ -0,0 +1,274 @@ +import java.io.IOException; +import java.util.Hashtable; +import java.util.Properties; + +import javax.management.remote.JMXConnector; +import javax.management.remote.JMXConnectorFactory; +import javax.management.remote.JMXServiceURL; +import javax.naming.CompositeName; +import javax.naming.CompoundName; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.Name; +import javax.naming.NamingException; +import javax.naming.directory.DirContext; +import javax.naming.directory.InitialDirContext; +import javax.naming.directory.SearchControls; +import javax.naming.ldap.InitialLdapContext; + +import org.springframework.jndi.JndiTemplate; +import org.springframework.ldap.core.AttributesMapper; +import org.springframework.ldap.core.ContextMapper; +import org.springframework.ldap.core.DirContextProcessor; +import org.springframework.ldap.core.LdapTemplate; +import org.springframework.ldap.core.NameClassPairCallbackHandler; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class JndiInjectionTest { + @RequestMapping + public void testInitialContextBad1(@RequestParam String nameStr) throws NamingException { // $ Source + Name name = new CompositeName(nameStr); + InitialContext ctx = new InitialContext(); + + ctx.lookup(nameStr); // $ Alert + ctx.lookupLink(nameStr); // $ Alert + InitialContext.doLookup(nameStr); // $ Alert + ctx.rename(nameStr, ""); // $ Alert + ctx.list(nameStr); // $ Alert + ctx.listBindings(nameStr); // $ Alert + + ctx.lookup(name); // $ Alert + ctx.lookupLink(name); // $ Alert + InitialContext.doLookup(name); // $ Alert + ctx.rename(name, null); // $ Alert + ctx.list(name); // $ Alert + ctx.listBindings(name); // $ Alert + } + + @RequestMapping + public void testDirContextBad1(@RequestParam String nameStr) throws NamingException { // $ Source + Name name = new CompoundName(nameStr, new Properties()); + DirContext ctx = new InitialDirContext(); + + ctx.lookup(nameStr); // $ Alert + ctx.lookupLink(nameStr); // $ Alert + ctx.rename(nameStr, ""); // $ Alert + ctx.list(nameStr); // $ Alert + ctx.listBindings(nameStr); // $ Alert + + ctx.lookup(name); // $ Alert + ctx.lookupLink(name); // $ Alert + ctx.rename(name, null); // $ Alert + ctx.list(name); // $ Alert + ctx.listBindings(name); // $ Alert + + SearchControls searchControls = new SearchControls(); + searchControls.setReturningObjFlag(true); + ctx.search(nameStr, "", searchControls); // $ Alert + ctx.search(nameStr, "", new Object[] {}, searchControls); // $ Alert + + SearchControls searchControls2 = new SearchControls(1, 0, 0, null, true, false); + ctx.search(nameStr, "", searchControls2); // $ Alert + ctx.search(nameStr, "", new Object[] {}, searchControls2); // $ Alert + + SearchControls searchControls3 = new SearchControls(1, 0, 0, null, false, false); + ctx.search(nameStr, "", searchControls3); // Safe + ctx.search(nameStr, "", new Object[] {}, searchControls3); // Safe + } + + @RequestMapping + public void testInitialLdapContextBad1(@RequestParam String nameStr) throws NamingException { // $ Source + Name name = new CompositeName(nameStr); + InitialLdapContext ctx = new InitialLdapContext(); + + ctx.lookup(nameStr); // $ Alert + ctx.lookupLink(nameStr); // $ Alert + ctx.rename(nameStr, ""); // $ Alert + ctx.list(nameStr); // $ Alert + ctx.listBindings(nameStr); // $ Alert + + ctx.lookup(name); // $ Alert + ctx.lookupLink(name); // $ Alert + ctx.rename(name, null); // $ Alert + ctx.list(name); // $ Alert + ctx.listBindings(name); // $ Alert + } + + @RequestMapping + public void testSpringJndiTemplateBad1(@RequestParam String nameStr) throws NamingException { // $ Source + JndiTemplate ctx = new JndiTemplate(); + + ctx.lookup(nameStr); // $ Alert + ctx.lookup(nameStr, null); // $ Alert + } + + @RequestMapping + public void testSpringLdapTemplateBad1(@RequestParam String nameStr) throws NamingException { // $ Source + LdapTemplate ctx = new LdapTemplate(); + Name name = new CompositeName().add(nameStr); + + ctx.lookup(name); // $ Alert + ctx.lookup(name, (AttributesMapper) null); // Safe + ctx.lookup(name, (ContextMapper) null); // $ Alert + ctx.lookup(name, new String[] {}, (AttributesMapper) null); // Safe + ctx.lookup(name, new String[] {}, (ContextMapper) null); // $ Alert + ctx.lookup(nameStr); // $ Alert + ctx.lookup(nameStr, (AttributesMapper) null); // Safe + ctx.lookup(nameStr, (ContextMapper) null); // $ Alert + ctx.lookup(nameStr, new String[] {}, (AttributesMapper) null); // Safe + ctx.lookup(nameStr, new String[] {}, (ContextMapper) null); // $ Alert + ctx.lookupContext(name); // $ Alert + ctx.lookupContext(nameStr); // $ Alert + ctx.findByDn(name, null); // $ Alert + ctx.rename(name, null); // $ Alert + ctx.list(name); // $ Alert + ctx.listBindings(name); // $ Alert + ctx.unbind(nameStr, true); // $ Alert + + ctx.search(nameStr, "", 0, true, null); // $ Alert + ctx.search(nameStr, "", 0, new String[] {}, (ContextMapper) null); // $ Alert + ctx.search(nameStr, "", 0, (ContextMapper) null); // $ Alert + ctx.search(nameStr, "", (ContextMapper) null); // $ Alert + + SearchControls searchControls = new SearchControls(); + searchControls.setReturningObjFlag(true); + ctx.search(nameStr, "", searchControls, (AttributesMapper) null); // $ Alert + ctx.search(nameStr, "", searchControls, (AttributesMapper) null, // $ Alert + (DirContextProcessor) null); + ctx.search(nameStr, "", searchControls, (ContextMapper) null); // $ Alert + ctx.search(nameStr, "", searchControls, (ContextMapper) null, // $ Alert + (DirContextProcessor) null); + ctx.search(nameStr, "", searchControls, (NameClassPairCallbackHandler) null); // $ Alert + ctx.search(nameStr, "", searchControls, (NameClassPairCallbackHandler) null, // $ Alert + (DirContextProcessor) null); + + SearchControls searchControls2 = new SearchControls(1, 0, 0, null, true, false); + ctx.search(nameStr, "", searchControls2, (AttributesMapper) null); // $ Alert + ctx.search(nameStr, "", searchControls2, (AttributesMapper) null, // $ Alert + (DirContextProcessor) null); + ctx.search(nameStr, "", searchControls2, (ContextMapper) null); // $ Alert + ctx.search(nameStr, "", searchControls2, (ContextMapper) null, // $ Alert + (DirContextProcessor) null); + ctx.search(nameStr, "", searchControls2, (NameClassPairCallbackHandler) null); // $ Alert + ctx.search(nameStr, "", searchControls2, (NameClassPairCallbackHandler) null, // $ Alert + (DirContextProcessor) null); + + SearchControls searchControls3 = new SearchControls(1, 0, 0, null, false, false); + ctx.search(nameStr, "", searchControls3, (AttributesMapper) null); // Safe + ctx.search(nameStr, "", searchControls3, (AttributesMapper) null, // Safe + (DirContextProcessor) null); + ctx.search(nameStr, "", searchControls3, (ContextMapper) null); // Safe + ctx.search(nameStr, "", searchControls3, (ContextMapper) null, // Safe + (DirContextProcessor) null); + ctx.search(nameStr, "", searchControls3, (NameClassPairCallbackHandler) null); // Safe + ctx.search(nameStr, "", searchControls3, (NameClassPairCallbackHandler) null, // Safe + (DirContextProcessor) null); + + ctx.searchForObject(nameStr, "", (ContextMapper) null); // $ Alert + } + + @RequestMapping + public void testShiroJndiTemplateBad1(@RequestParam String nameStr) throws NamingException { // $ Source + org.apache.shiro.jndi.JndiTemplate ctx = new org.apache.shiro.jndi.JndiTemplate(); + + ctx.lookup(nameStr); // $ Alert + ctx.lookup(nameStr, null); // $ Alert + } + + @RequestMapping + public void testJMXServiceUrlBad1(@RequestParam String urlStr) throws IOException { // $ Source + JMXConnectorFactory.connect(new JMXServiceURL(urlStr)); // $ Alert + + JMXServiceURL url = new JMXServiceURL(urlStr); + JMXConnector connector = JMXConnectorFactory.newJMXConnector(url, null); + connector.connect(); // $ Alert + } + + @RequestMapping + public void testEnvBad1(@RequestParam String urlStr) throws NamingException { // $ Source + Hashtable env = new Hashtable(); + env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); + env.put(Context.PROVIDER_URL, urlStr); // $ Alert + new InitialContext(env); + } + + @RequestMapping + public void testEnvBad2(@RequestParam String urlStr) throws NamingException { // $ Source + Hashtable env = new Hashtable(); + env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); + env.put("java.naming.provider.url", urlStr); // $ Alert + new InitialDirContext(env); + } + + @RequestMapping + public void testSpringJndiTemplatePropertiesBad1(@RequestParam String urlStr) // $ Source + throws NamingException { + Properties props = new Properties(); + props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); + props.put(Context.PROVIDER_URL, urlStr); // $ Alert + new JndiTemplate(props); + } + + @RequestMapping + public void testSpringJndiTemplatePropertiesBad2(@RequestParam String urlStr) // $ Source + throws NamingException { + Properties props = new Properties(); + props.setProperty(Context.INITIAL_CONTEXT_FACTORY, + "com.sun.jndi.rmi.registry.RegistryContextFactory"); + props.setProperty("java.naming.provider.url", urlStr); // $ Alert + new JndiTemplate(props); + } + + @RequestMapping + public void testSpringJndiTemplatePropertiesBad3(@RequestParam String urlStr) // $ Source + throws NamingException { + Properties props = new Properties(); + props.setProperty(Context.INITIAL_CONTEXT_FACTORY, + "com.sun.jndi.rmi.registry.RegistryContextFactory"); + props.setProperty("java.naming.provider.url", urlStr); // $ Alert + JndiTemplate template = new JndiTemplate(); + template.setEnvironment(props); + } + + @RequestMapping + public void testSpringLdapTemplateOk1(@RequestParam String nameStr) throws NamingException { + LdapTemplate ctx = new LdapTemplate(); + + ctx.unbind(nameStr); // Safe + ctx.unbind(nameStr, false); // Safe + + ctx.search(nameStr, "", 0, false, null); // Safe + ctx.search(nameStr, "", new SearchControls(), (NameClassPairCallbackHandler) new Object()); // Safe + ctx.search(nameStr, "", new SearchControls(), (NameClassPairCallbackHandler) new Object(), // Safe + null); + ctx.search(nameStr, "", (NameClassPairCallbackHandler) new Object()); // Safe + ctx.search(nameStr, "", 0, new String[] {}, (AttributesMapper) new Object()); // Safe + ctx.search(nameStr, "", 0, (AttributesMapper) new Object()); // Safe + ctx.search(nameStr, "", (AttributesMapper) new Object()); // Safe + ctx.search(nameStr, "", new SearchControls(), (ContextMapper) new Object()); // Safe + ctx.search(nameStr, "", new SearchControls(), (AttributesMapper) new Object()); // Safe + ctx.search(nameStr, "", new SearchControls(), (ContextMapper) new Object(), null); // Safe + ctx.search(nameStr, "", new SearchControls(), (AttributesMapper) new Object(), null); // Safe + + ctx.searchForObject(nameStr, "", new SearchControls(), (ContextMapper) new Object()); // Safe + } + + @RequestMapping + public void testEnvOk1(@RequestParam String urlStr) throws NamingException { + Hashtable env = new Hashtable(); + env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); + env.put(Context.SECURITY_PRINCIPAL, urlStr); // Safe + new InitialContext(env); + } + + @RequestMapping + public void testEnvOk2(@RequestParam String urlStr) throws NamingException { + Hashtable env = new Hashtable(); + env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); + env.put("java.naming.security.principal", urlStr); // Safe + new InitialContext(env); + } +} diff --git a/java/ql/test/query-tests/security/CWE-074/JndiInjection/JndiInjectionTest.qlref b/java/ql/test/query-tests/security/CWE-074/JndiInjection/JndiInjectionTest.qlref new file mode 100644 index 000000000000..90b6394597b8 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-074/JndiInjection/JndiInjectionTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-074/JndiInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-074/JndiInjection/options b/java/ql/test/query-tests/security/CWE-074/JndiInjection/options new file mode 100644 index 000000000000..099749ee58bf --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-074/JndiInjection/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/springframework-5.8.x:${testdir}/../../../../stubs/shiro-core-1.5.2:${testdir}/../../../../stubs/spring-ldap-2.3.2:${testdir}/../../../../stubs/Saxon-HE-9.9.1-7:${testdir}/../../../../stubs/apache-commons-logging-1.2 diff --git a/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.expected b/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.java b/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.java deleted file mode 100644 index 549ae554097b..000000000000 --- a/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.java +++ /dev/null @@ -1,274 +0,0 @@ -import java.io.IOException; -import java.util.Hashtable; -import java.util.Properties; - -import javax.management.remote.JMXConnector; -import javax.management.remote.JMXConnectorFactory; -import javax.management.remote.JMXServiceURL; -import javax.naming.CompositeName; -import javax.naming.CompoundName; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.Name; -import javax.naming.NamingException; -import javax.naming.directory.DirContext; -import javax.naming.directory.InitialDirContext; -import javax.naming.directory.SearchControls; -import javax.naming.ldap.InitialLdapContext; - -import org.springframework.jndi.JndiTemplate; -import org.springframework.ldap.core.AttributesMapper; -import org.springframework.ldap.core.ContextMapper; -import org.springframework.ldap.core.DirContextProcessor; -import org.springframework.ldap.core.LdapTemplate; -import org.springframework.ldap.core.NameClassPairCallbackHandler; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RequestMapping; - -@Controller -public class JndiInjectionTest { - @RequestMapping - public void testInitialContextBad1(@RequestParam String nameStr) throws NamingException { - Name name = new CompositeName(nameStr); - InitialContext ctx = new InitialContext(); - - ctx.lookup(nameStr); // $hasJndiInjection - ctx.lookupLink(nameStr); // $hasJndiInjection - InitialContext.doLookup(nameStr); // $hasJndiInjection - ctx.rename(nameStr, ""); // $hasJndiInjection - ctx.list(nameStr); // $hasJndiInjection - ctx.listBindings(nameStr); // $hasJndiInjection - - ctx.lookup(name); // $hasJndiInjection - ctx.lookupLink(name); // $hasJndiInjection - InitialContext.doLookup(name); // $hasJndiInjection - ctx.rename(name, null); // $hasJndiInjection - ctx.list(name); // $hasJndiInjection - ctx.listBindings(name); // $hasJndiInjection - } - - @RequestMapping - public void testDirContextBad1(@RequestParam String nameStr) throws NamingException { - Name name = new CompoundName(nameStr, new Properties()); - DirContext ctx = new InitialDirContext(); - - ctx.lookup(nameStr); // $hasJndiInjection - ctx.lookupLink(nameStr); // $hasJndiInjection - ctx.rename(nameStr, ""); // $hasJndiInjection - ctx.list(nameStr); // $hasJndiInjection - ctx.listBindings(nameStr); // $hasJndiInjection - - ctx.lookup(name); // $hasJndiInjection - ctx.lookupLink(name); // $hasJndiInjection - ctx.rename(name, null); // $hasJndiInjection - ctx.list(name); // $hasJndiInjection - ctx.listBindings(name); // $hasJndiInjection - - SearchControls searchControls = new SearchControls(); - searchControls.setReturningObjFlag(true); - ctx.search(nameStr, "", searchControls); // $hasJndiInjection - ctx.search(nameStr, "", new Object[] {}, searchControls); // $hasJndiInjection - - SearchControls searchControls2 = new SearchControls(1, 0, 0, null, true, false); - ctx.search(nameStr, "", searchControls2); // $hasJndiInjection - ctx.search(nameStr, "", new Object[] {}, searchControls2); // $hasJndiInjection - - SearchControls searchControls3 = new SearchControls(1, 0, 0, null, false, false); - ctx.search(nameStr, "", searchControls3); // Safe - ctx.search(nameStr, "", new Object[] {}, searchControls3); // Safe - } - - @RequestMapping - public void testInitialLdapContextBad1(@RequestParam String nameStr) throws NamingException { - Name name = new CompositeName(nameStr); - InitialLdapContext ctx = new InitialLdapContext(); - - ctx.lookup(nameStr); // $hasJndiInjection - ctx.lookupLink(nameStr); // $hasJndiInjection - ctx.rename(nameStr, ""); // $hasJndiInjection - ctx.list(nameStr); // $hasJndiInjection - ctx.listBindings(nameStr); // $hasJndiInjection - - ctx.lookup(name); // $hasJndiInjection - ctx.lookupLink(name); // $hasJndiInjection - ctx.rename(name, null); // $hasJndiInjection - ctx.list(name); // $hasJndiInjection - ctx.listBindings(name); // $hasJndiInjection - } - - @RequestMapping - public void testSpringJndiTemplateBad1(@RequestParam String nameStr) throws NamingException { - JndiTemplate ctx = new JndiTemplate(); - - ctx.lookup(nameStr); // $hasJndiInjection - ctx.lookup(nameStr, null); // $hasJndiInjection - } - - @RequestMapping - public void testSpringLdapTemplateBad1(@RequestParam String nameStr) throws NamingException { - LdapTemplate ctx = new LdapTemplate(); - Name name = new CompositeName().add(nameStr); - - ctx.lookup(name); // $hasJndiInjection - ctx.lookup(name, (AttributesMapper) null); // Safe - ctx.lookup(name, (ContextMapper) null); // $hasJndiInjection - ctx.lookup(name, new String[] {}, (AttributesMapper) null); // Safe - ctx.lookup(name, new String[] {}, (ContextMapper) null); // $hasJndiInjection - ctx.lookup(nameStr); // $hasJndiInjection - ctx.lookup(nameStr, (AttributesMapper) null); // Safe - ctx.lookup(nameStr, (ContextMapper) null); // $hasJndiInjection - ctx.lookup(nameStr, new String[] {}, (AttributesMapper) null); // Safe - ctx.lookup(nameStr, new String[] {}, (ContextMapper) null); // $hasJndiInjection - ctx.lookupContext(name); // $hasJndiInjection - ctx.lookupContext(nameStr); // $hasJndiInjection - ctx.findByDn(name, null); // $hasJndiInjection - ctx.rename(name, null); // $hasJndiInjection - ctx.list(name); // $hasJndiInjection - ctx.listBindings(name); // $hasJndiInjection - ctx.unbind(nameStr, true); // $hasJndiInjection - - ctx.search(nameStr, "", 0, true, null); // $hasJndiInjection - ctx.search(nameStr, "", 0, new String[] {}, (ContextMapper) null); // $hasJndiInjection - ctx.search(nameStr, "", 0, (ContextMapper) null); // $hasJndiInjection - ctx.search(nameStr, "", (ContextMapper) null); // $hasJndiInjection - - SearchControls searchControls = new SearchControls(); - searchControls.setReturningObjFlag(true); - ctx.search(nameStr, "", searchControls, (AttributesMapper) null); // $hasJndiInjection - ctx.search(nameStr, "", searchControls, (AttributesMapper) null, // $hasJndiInjection - (DirContextProcessor) null); - ctx.search(nameStr, "", searchControls, (ContextMapper) null); // $hasJndiInjection - ctx.search(nameStr, "", searchControls, (ContextMapper) null, // $hasJndiInjection - (DirContextProcessor) null); - ctx.search(nameStr, "", searchControls, (NameClassPairCallbackHandler) null); // $hasJndiInjection - ctx.search(nameStr, "", searchControls, (NameClassPairCallbackHandler) null, // $hasJndiInjection - (DirContextProcessor) null); - - SearchControls searchControls2 = new SearchControls(1, 0, 0, null, true, false); - ctx.search(nameStr, "", searchControls2, (AttributesMapper) null); // $hasJndiInjection - ctx.search(nameStr, "", searchControls2, (AttributesMapper) null, // $hasJndiInjection - (DirContextProcessor) null); - ctx.search(nameStr, "", searchControls2, (ContextMapper) null); // $hasJndiInjection - ctx.search(nameStr, "", searchControls2, (ContextMapper) null, // $hasJndiInjection - (DirContextProcessor) null); - ctx.search(nameStr, "", searchControls2, (NameClassPairCallbackHandler) null); // $hasJndiInjection - ctx.search(nameStr, "", searchControls2, (NameClassPairCallbackHandler) null, // $hasJndiInjection - (DirContextProcessor) null); - - SearchControls searchControls3 = new SearchControls(1, 0, 0, null, false, false); - ctx.search(nameStr, "", searchControls3, (AttributesMapper) null); // Safe - ctx.search(nameStr, "", searchControls3, (AttributesMapper) null, // Safe - (DirContextProcessor) null); - ctx.search(nameStr, "", searchControls3, (ContextMapper) null); // Safe - ctx.search(nameStr, "", searchControls3, (ContextMapper) null, // Safe - (DirContextProcessor) null); - ctx.search(nameStr, "", searchControls3, (NameClassPairCallbackHandler) null); // Safe - ctx.search(nameStr, "", searchControls3, (NameClassPairCallbackHandler) null, // Safe - (DirContextProcessor) null); - - ctx.searchForObject(nameStr, "", (ContextMapper) null); // $hasJndiInjection - } - - @RequestMapping - public void testShiroJndiTemplateBad1(@RequestParam String nameStr) throws NamingException { - org.apache.shiro.jndi.JndiTemplate ctx = new org.apache.shiro.jndi.JndiTemplate(); - - ctx.lookup(nameStr); // $hasJndiInjection - ctx.lookup(nameStr, null); // $hasJndiInjection - } - - @RequestMapping - public void testJMXServiceUrlBad1(@RequestParam String urlStr) throws IOException { - JMXConnectorFactory.connect(new JMXServiceURL(urlStr)); // $hasJndiInjection - - JMXServiceURL url = new JMXServiceURL(urlStr); - JMXConnector connector = JMXConnectorFactory.newJMXConnector(url, null); - connector.connect(); // $hasJndiInjection - } - - @RequestMapping - public void testEnvBad1(@RequestParam String urlStr) throws NamingException { - Hashtable env = new Hashtable(); - env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); - env.put(Context.PROVIDER_URL, urlStr); // $hasJndiInjection - new InitialContext(env); - } - - @RequestMapping - public void testEnvBad2(@RequestParam String urlStr) throws NamingException { - Hashtable env = new Hashtable(); - env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); - env.put("java.naming.provider.url", urlStr); // $hasJndiInjection - new InitialDirContext(env); - } - - @RequestMapping - public void testSpringJndiTemplatePropertiesBad1(@RequestParam String urlStr) - throws NamingException { - Properties props = new Properties(); - props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); - props.put(Context.PROVIDER_URL, urlStr); // $hasJndiInjection - new JndiTemplate(props); - } - - @RequestMapping - public void testSpringJndiTemplatePropertiesBad2(@RequestParam String urlStr) - throws NamingException { - Properties props = new Properties(); - props.setProperty(Context.INITIAL_CONTEXT_FACTORY, - "com.sun.jndi.rmi.registry.RegistryContextFactory"); - props.setProperty("java.naming.provider.url", urlStr); // $hasJndiInjection - new JndiTemplate(props); - } - - @RequestMapping - public void testSpringJndiTemplatePropertiesBad3(@RequestParam String urlStr) - throws NamingException { - Properties props = new Properties(); - props.setProperty(Context.INITIAL_CONTEXT_FACTORY, - "com.sun.jndi.rmi.registry.RegistryContextFactory"); - props.setProperty("java.naming.provider.url", urlStr); // $hasJndiInjection - JndiTemplate template = new JndiTemplate(); - template.setEnvironment(props); - } - - @RequestMapping - public void testSpringLdapTemplateOk1(@RequestParam String nameStr) throws NamingException { - LdapTemplate ctx = new LdapTemplate(); - - ctx.unbind(nameStr); // Safe - ctx.unbind(nameStr, false); // Safe - - ctx.search(nameStr, "", 0, false, null); // Safe - ctx.search(nameStr, "", new SearchControls(), (NameClassPairCallbackHandler) new Object()); // Safe - ctx.search(nameStr, "", new SearchControls(), (NameClassPairCallbackHandler) new Object(), // Safe - null); - ctx.search(nameStr, "", (NameClassPairCallbackHandler) new Object()); // Safe - ctx.search(nameStr, "", 0, new String[] {}, (AttributesMapper) new Object()); // Safe - ctx.search(nameStr, "", 0, (AttributesMapper) new Object()); // Safe - ctx.search(nameStr, "", (AttributesMapper) new Object()); // Safe - ctx.search(nameStr, "", new SearchControls(), (ContextMapper) new Object()); // Safe - ctx.search(nameStr, "", new SearchControls(), (AttributesMapper) new Object()); // Safe - ctx.search(nameStr, "", new SearchControls(), (ContextMapper) new Object(), null); // Safe - ctx.search(nameStr, "", new SearchControls(), (AttributesMapper) new Object(), null); // Safe - - ctx.searchForObject(nameStr, "", new SearchControls(), (ContextMapper) new Object()); // Safe - } - - @RequestMapping - public void testEnvOk1(@RequestParam String urlStr) throws NamingException { - Hashtable env = new Hashtable(); - env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); - env.put(Context.SECURITY_PRINCIPAL, urlStr); // Safe - new InitialContext(env); - } - - @RequestMapping - public void testEnvOk2(@RequestParam String urlStr) throws NamingException { - Hashtable env = new Hashtable(); - env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); - env.put("java.naming.security.principal", urlStr); // Safe - new InitialContext(env); - } -} diff --git a/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.ql b/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.ql deleted file mode 100644 index 03b588555b56..000000000000 --- a/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import semmle.code.java.security.JndiInjectionQuery -import utils.test.InlineExpectationsTest - -module HasJndiInjectionTest implements TestSig { - string getARelevantTag() { result = "hasJndiInjection" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasJndiInjection" and - exists(DataFlow::Node sink | JndiInjectionFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-074/XsltInjection/XsltInjectionTest.expected b/java/ql/test/query-tests/security/CWE-074/XsltInjection/XsltInjectionTest.expected new file mode 100644 index 000000000000..87167aa84bf0 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-074/XsltInjection/XsltInjectionTest.expected @@ -0,0 +1,245 @@ +#select +| XsltInjectionTest.java:31:5:31:59 | newTransformer(...) | XsltInjectionTest.java:30:44:30:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:31:5:31:59 | newTransformer(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:30:44:30:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:36:5:36:74 | newTransformer(...) | XsltInjectionTest.java:35:66:35:88 | getInputStream(...) : InputStream | XsltInjectionTest.java:36:5:36:74 | newTransformer(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:35:66:35:88 | getInputStream(...) | this user input | +| XsltInjectionTest.java:43:5:43:59 | newTransformer(...) | XsltInjectionTest.java:40:45:40:70 | param : String | XsltInjectionTest.java:43:5:43:59 | newTransformer(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:40:45:40:70 | param | this user input | +| XsltInjectionTest.java:48:5:48:74 | newTransformer(...) | XsltInjectionTest.java:47:54:47:76 | getInputStream(...) : InputStream | XsltInjectionTest.java:48:5:48:74 | newTransformer(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:47:54:47:76 | getInputStream(...) | this user input | +| XsltInjectionTest.java:54:5:54:59 | newTransformer(...) | XsltInjectionTest.java:53:67:53:89 | getInputStream(...) : InputStream | XsltInjectionTest.java:54:5:54:59 | newTransformer(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:53:67:53:89 | getInputStream(...) | this user input | +| XsltInjectionTest.java:60:5:60:59 | newTransformer(...) | XsltInjectionTest.java:59:75:59:97 | getInputStream(...) : InputStream | XsltInjectionTest.java:60:5:60:59 | newTransformer(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:59:75:59:97 | getInputStream(...) | this user input | +| XsltInjectionTest.java:66:5:66:74 | newTransformer(...) | XsltInjectionTest.java:65:31:65:53 | getInputStream(...) : InputStream | XsltInjectionTest.java:66:5:66:74 | newTransformer(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:65:31:65:53 | getInputStream(...) | this user input | +| XsltInjectionTest.java:72:5:72:59 | newTransformer(...) | XsltInjectionTest.java:71:73:71:95 | getInputStream(...) : InputStream | XsltInjectionTest.java:72:5:72:59 | newTransformer(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:71:73:71:95 | getInputStream(...) | this user input | +| XsltInjectionTest.java:80:5:80:34 | newTransformer(...) | XsltInjectionTest.java:76:44:76:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:80:5:80:34 | newTransformer(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:76:44:76:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:87:5:87:34 | newTransformer(...) | XsltInjectionTest.java:84:44:84:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:87:5:87:34 | newTransformer(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:84:44:84:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:94:5:94:35 | load(...) | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:94:5:94:35 | load(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:95:5:95:37 | load30(...) | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:95:5:95:37 | load30(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:96:5:96:37 | load30(...) | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:96:5:96:37 | load30(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:97:5:97:37 | load30(...) | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:97:5:97:37 | load30(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:98:5:98:37 | load30(...) | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:98:5:98:37 | load30(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:99:5:99:37 | load30(...) | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:99:5:99:37 | load30(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:100:5:100:37 | load30(...) | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:100:5:100:37 | load30(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:101:5:101:37 | load30(...) | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:101:5:101:37 | load30(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:102:5:102:37 | load30(...) | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:102:5:102:37 | load30(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:103:5:103:37 | load30(...) | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:103:5:103:37 | load30(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:91:44:91:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:112:5:112:46 | load(...) | XsltInjectionTest.java:107:36:107:61 | param : String | XsltInjectionTest.java:112:5:112:46 | load(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:107:36:107:61 | param | this user input | +| XsltInjectionTest.java:113:5:113:49 | load(...) | XsltInjectionTest.java:107:64:107:76 | socket : Socket | XsltInjectionTest.java:113:5:113:49 | load(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:107:64:107:76 | socket | this user input | +| XsltInjectionTest.java:113:5:113:49 | load(...) | XsltInjectionTest.java:109:44:109:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:113:5:113:49 | load(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:109:44:109:66 | getInputStream(...) | this user input | +| XsltInjectionTest.java:114:5:114:50 | load(...) | XsltInjectionTest.java:107:36:107:61 | param : String | XsltInjectionTest.java:114:5:114:50 | load(...) | XSLT transformation might include stylesheet from $@. | XsltInjectionTest.java:107:36:107:61 | param | this user input | +edges +| XsltInjectionTest.java:30:27:30:67 | new StreamSource(...) : StreamSource | XsltInjectionTest.java:31:53:31:58 | source : StreamSource | provenance | | +| XsltInjectionTest.java:30:44:30:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:30:27:30:67 | new StreamSource(...) : StreamSource | provenance | Src:MaD:7 MaD:14 | +| XsltInjectionTest.java:31:53:31:58 | source : StreamSource | XsltInjectionTest.java:31:5:31:59 | newTransformer(...) | provenance | Config Sink:MaD:1 | +| XsltInjectionTest.java:35:27:35:90 | new StreamSource(...) : StreamSource | XsltInjectionTest.java:36:51:36:56 | source : StreamSource | provenance | | +| XsltInjectionTest.java:35:44:35:89 | new InputStreamReader(...) : InputStreamReader | XsltInjectionTest.java:35:27:35:90 | new StreamSource(...) : StreamSource | provenance | MaD:14 | +| XsltInjectionTest.java:35:66:35:88 | getInputStream(...) : InputStream | XsltInjectionTest.java:35:44:35:89 | new InputStreamReader(...) : InputStreamReader | provenance | Src:MaD:7 MaD:8 | +| XsltInjectionTest.java:36:5:36:57 | newTemplates(...) : Templates | XsltInjectionTest.java:36:5:36:74 | newTransformer(...) | provenance | Config Sink:MaD:1 | +| XsltInjectionTest.java:36:5:36:57 | newTemplates(...) : Templates | XsltInjectionTest.java:36:5:36:74 | newTransformer(...) | provenance | MaD:15 Sink:MaD:1 | +| XsltInjectionTest.java:36:51:36:56 | source : StreamSource | XsltInjectionTest.java:36:5:36:57 | newTemplates(...) : Templates | provenance | Config | +| XsltInjectionTest.java:36:51:36:56 | source : StreamSource | XsltInjectionTest.java:36:5:36:57 | newTemplates(...) : Templates | provenance | MaD:16 | +| XsltInjectionTest.java:40:45:40:70 | param : String | XsltInjectionTest.java:42:61:42:64 | xslt : String | provenance | | +| XsltInjectionTest.java:42:27:42:66 | new StreamSource(...) : StreamSource | XsltInjectionTest.java:43:53:43:58 | source : StreamSource | provenance | | +| XsltInjectionTest.java:42:44:42:65 | new StringReader(...) : StringReader | XsltInjectionTest.java:42:27:42:66 | new StreamSource(...) : StreamSource | provenance | MaD:14 | +| XsltInjectionTest.java:42:61:42:64 | xslt : String | XsltInjectionTest.java:42:44:42:65 | new StringReader(...) : StringReader | provenance | MaD:9 | +| XsltInjectionTest.java:43:53:43:58 | source : StreamSource | XsltInjectionTest.java:43:5:43:59 | newTransformer(...) | provenance | Config Sink:MaD:1 | +| XsltInjectionTest.java:47:24:47:78 | new SAXSource(...) : SAXSource | XsltInjectionTest.java:48:51:48:56 | source : SAXSource | provenance | | +| XsltInjectionTest.java:47:38:47:77 | new InputSource(...) : InputSource | XsltInjectionTest.java:47:24:47:78 | new SAXSource(...) : SAXSource | provenance | MaD:12 | +| XsltInjectionTest.java:47:54:47:76 | getInputStream(...) : InputStream | XsltInjectionTest.java:47:38:47:77 | new InputSource(...) : InputSource | provenance | Src:MaD:7 MaD:17 | +| XsltInjectionTest.java:48:5:48:57 | newTemplates(...) : Templates | XsltInjectionTest.java:48:5:48:74 | newTransformer(...) | provenance | Config Sink:MaD:1 | +| XsltInjectionTest.java:48:5:48:57 | newTemplates(...) : Templates | XsltInjectionTest.java:48:5:48:74 | newTransformer(...) | provenance | MaD:15 Sink:MaD:1 | +| XsltInjectionTest.java:48:51:48:56 | source : SAXSource | XsltInjectionTest.java:48:5:48:57 | newTemplates(...) : Templates | provenance | Config | +| XsltInjectionTest.java:48:51:48:56 | source : SAXSource | XsltInjectionTest.java:48:5:48:57 | newTemplates(...) : Templates | provenance | MaD:16 | +| XsltInjectionTest.java:53:9:53:92 | new SAXSource(...) : SAXSource | XsltInjectionTest.java:54:53:54:58 | source : SAXSource | provenance | | +| XsltInjectionTest.java:53:29:53:91 | new InputSource(...) : InputSource | XsltInjectionTest.java:53:9:53:92 | new SAXSource(...) : SAXSource | provenance | MaD:13 | +| XsltInjectionTest.java:53:45:53:90 | new InputStreamReader(...) : InputStreamReader | XsltInjectionTest.java:53:29:53:91 | new InputSource(...) : InputSource | provenance | MaD:17 | +| XsltInjectionTest.java:53:67:53:89 | getInputStream(...) : InputStream | XsltInjectionTest.java:53:45:53:90 | new InputStreamReader(...) : InputStreamReader | provenance | Src:MaD:7 MaD:8 | +| XsltInjectionTest.java:54:53:54:58 | source : SAXSource | XsltInjectionTest.java:54:5:54:59 | newTransformer(...) | provenance | Config Sink:MaD:1 | +| XsltInjectionTest.java:59:9:59:99 | new StAXSource(...) : StAXSource | XsltInjectionTest.java:60:53:60:58 | source : StAXSource | provenance | | +| XsltInjectionTest.java:59:24:59:98 | createXMLEventReader(...) : XMLEventReader | XsltInjectionTest.java:59:9:59:99 | new StAXSource(...) : StAXSource | provenance | Config | +| XsltInjectionTest.java:59:75:59:97 | getInputStream(...) : InputStream | XsltInjectionTest.java:59:24:59:98 | createXMLEventReader(...) : XMLEventReader | provenance | Src:MaD:7 Config | +| XsltInjectionTest.java:60:53:60:58 | source : StAXSource | XsltInjectionTest.java:60:5:60:59 | newTransformer(...) | provenance | Config Sink:MaD:1 | +| XsltInjectionTest.java:64:25:65:56 | new StAXSource(...) : StAXSource | XsltInjectionTest.java:66:51:66:56 | source : StAXSource | provenance | | +| XsltInjectionTest.java:64:40:65:55 | createXMLStreamReader(...) : XMLStreamReader | XsltInjectionTest.java:64:25:65:56 | new StAXSource(...) : StAXSource | provenance | Config | +| XsltInjectionTest.java:65:9:65:54 | new InputStreamReader(...) : InputStreamReader | XsltInjectionTest.java:64:40:65:55 | createXMLStreamReader(...) : XMLStreamReader | provenance | Config | +| XsltInjectionTest.java:65:31:65:53 | getInputStream(...) : InputStream | XsltInjectionTest.java:65:9:65:54 | new InputStreamReader(...) : InputStreamReader | provenance | Src:MaD:7 MaD:8 | +| XsltInjectionTest.java:66:5:66:57 | newTemplates(...) : Templates | XsltInjectionTest.java:66:5:66:74 | newTransformer(...) | provenance | Config Sink:MaD:1 | +| XsltInjectionTest.java:66:5:66:57 | newTemplates(...) : Templates | XsltInjectionTest.java:66:5:66:74 | newTransformer(...) | provenance | MaD:15 Sink:MaD:1 | +| XsltInjectionTest.java:66:51:66:56 | source : StAXSource | XsltInjectionTest.java:66:5:66:57 | newTemplates(...) : Templates | provenance | Config | +| XsltInjectionTest.java:66:51:66:56 | source : StAXSource | XsltInjectionTest.java:66:5:66:57 | newTemplates(...) : Templates | provenance | MaD:16 | +| XsltInjectionTest.java:70:24:71:97 | new DOMSource(...) : DOMSource | XsltInjectionTest.java:72:53:72:58 | source : DOMSource | provenance | | +| XsltInjectionTest.java:71:9:71:96 | parse(...) : Document | XsltInjectionTest.java:70:24:71:97 | new DOMSource(...) : DOMSource | provenance | Config | +| XsltInjectionTest.java:71:73:71:95 | getInputStream(...) : InputStream | XsltInjectionTest.java:71:9:71:96 | parse(...) : Document | provenance | Src:MaD:7 Config | +| XsltInjectionTest.java:72:53:72:58 | source : DOMSource | XsltInjectionTest.java:72:5:72:59 | newTransformer(...) | provenance | Config Sink:MaD:1 | +| XsltInjectionTest.java:76:27:76:67 | new StreamSource(...) : StreamSource | XsltInjectionTest.java:80:28:80:33 | source : StreamSource | provenance | | +| XsltInjectionTest.java:76:44:76:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:76:27:76:67 | new StreamSource(...) : StreamSource | provenance | Src:MaD:7 MaD:14 | +| XsltInjectionTest.java:80:28:80:33 | source : StreamSource | XsltInjectionTest.java:80:5:80:34 | newTransformer(...) | provenance | Config Sink:MaD:1 | +| XsltInjectionTest.java:84:27:84:67 | new StreamSource(...) : StreamSource | XsltInjectionTest.java:87:28:87:33 | source : StreamSource | provenance | | +| XsltInjectionTest.java:84:44:84:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:84:27:84:67 | new StreamSource(...) : StreamSource | provenance | Src:MaD:7 MaD:14 | +| XsltInjectionTest.java:87:28:87:33 | source : StreamSource | XsltInjectionTest.java:87:5:87:34 | newTransformer(...) | provenance | Config Sink:MaD:1 | +| XsltInjectionTest.java:91:27:91:67 | new StreamSource(...) : StreamSource | XsltInjectionTest.java:94:22:94:27 | source : StreamSource | provenance | | +| XsltInjectionTest.java:91:44:91:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:91:27:91:67 | new StreamSource(...) : StreamSource | provenance | Src:MaD:7 MaD:14 | +| XsltInjectionTest.java:94:5:94:28 | compile(...) : XsltExecutable | XsltInjectionTest.java:94:5:94:35 | load(...) | provenance | Config Sink:MaD:6 | +| XsltInjectionTest.java:94:22:94:27 | source : StreamSource | XsltInjectionTest.java:94:5:94:28 | compile(...) : XsltExecutable | provenance | Config | +| XsltInjectionTest.java:94:22:94:27 | source : StreamSource | XsltInjectionTest.java:95:22:95:27 | source : StreamSource | provenance | | +| XsltInjectionTest.java:95:5:95:28 | compile(...) : XsltExecutable | XsltInjectionTest.java:95:5:95:37 | load30(...) | provenance | Config Sink:MaD:5 | +| XsltInjectionTest.java:95:22:95:27 | source : StreamSource | XsltInjectionTest.java:95:5:95:28 | compile(...) : XsltExecutable | provenance | Config | +| XsltInjectionTest.java:95:22:95:27 | source : StreamSource | XsltInjectionTest.java:96:22:96:27 | source : StreamSource | provenance | | +| XsltInjectionTest.java:96:5:96:28 | compile(...) : XsltExecutable | XsltInjectionTest.java:96:5:96:37 | load30(...) | provenance | Config Sink:MaD:2 | +| XsltInjectionTest.java:96:22:96:27 | source : StreamSource | XsltInjectionTest.java:96:5:96:28 | compile(...) : XsltExecutable | provenance | Config | +| XsltInjectionTest.java:96:22:96:27 | source : StreamSource | XsltInjectionTest.java:97:22:97:27 | source : StreamSource | provenance | | +| XsltInjectionTest.java:97:5:97:28 | compile(...) : XsltExecutable | XsltInjectionTest.java:97:5:97:37 | load30(...) | provenance | Config Sink:MaD:2 | +| XsltInjectionTest.java:97:22:97:27 | source : StreamSource | XsltInjectionTest.java:97:5:97:28 | compile(...) : XsltExecutable | provenance | Config | +| XsltInjectionTest.java:97:22:97:27 | source : StreamSource | XsltInjectionTest.java:98:22:98:27 | source : StreamSource | provenance | | +| XsltInjectionTest.java:98:5:98:28 | compile(...) : XsltExecutable | XsltInjectionTest.java:98:5:98:37 | load30(...) | provenance | Config Sink:MaD:2 | +| XsltInjectionTest.java:98:22:98:27 | source : StreamSource | XsltInjectionTest.java:98:5:98:28 | compile(...) : XsltExecutable | provenance | Config | +| XsltInjectionTest.java:98:22:98:27 | source : StreamSource | XsltInjectionTest.java:99:22:99:27 | source : StreamSource | provenance | | +| XsltInjectionTest.java:99:5:99:28 | compile(...) : XsltExecutable | XsltInjectionTest.java:99:5:99:37 | load30(...) | provenance | Config Sink:MaD:2 | +| XsltInjectionTest.java:99:22:99:27 | source : StreamSource | XsltInjectionTest.java:99:5:99:28 | compile(...) : XsltExecutable | provenance | Config | +| XsltInjectionTest.java:99:22:99:27 | source : StreamSource | XsltInjectionTest.java:100:22:100:27 | source : StreamSource | provenance | | +| XsltInjectionTest.java:100:5:100:28 | compile(...) : XsltExecutable | XsltInjectionTest.java:100:5:100:37 | load30(...) | provenance | Config Sink:MaD:3 | +| XsltInjectionTest.java:100:22:100:27 | source : StreamSource | XsltInjectionTest.java:100:5:100:28 | compile(...) : XsltExecutable | provenance | Config | +| XsltInjectionTest.java:100:22:100:27 | source : StreamSource | XsltInjectionTest.java:101:22:101:27 | source : StreamSource | provenance | | +| XsltInjectionTest.java:101:5:101:28 | compile(...) : XsltExecutable | XsltInjectionTest.java:101:5:101:37 | load30(...) | provenance | Config Sink:MaD:3 | +| XsltInjectionTest.java:101:22:101:27 | source : StreamSource | XsltInjectionTest.java:101:5:101:28 | compile(...) : XsltExecutable | provenance | Config | +| XsltInjectionTest.java:101:22:101:27 | source : StreamSource | XsltInjectionTest.java:102:22:102:27 | source : StreamSource | provenance | | +| XsltInjectionTest.java:102:5:102:28 | compile(...) : XsltExecutable | XsltInjectionTest.java:102:5:102:37 | load30(...) | provenance | Config Sink:MaD:4 | +| XsltInjectionTest.java:102:22:102:27 | source : StreamSource | XsltInjectionTest.java:102:5:102:28 | compile(...) : XsltExecutable | provenance | Config | +| XsltInjectionTest.java:102:22:102:27 | source : StreamSource | XsltInjectionTest.java:103:22:103:27 | source : StreamSource | provenance | | +| XsltInjectionTest.java:103:5:103:28 | compile(...) : XsltExecutable | XsltInjectionTest.java:103:5:103:37 | load30(...) | provenance | Config Sink:MaD:4 | +| XsltInjectionTest.java:103:22:103:27 | source : StreamSource | XsltInjectionTest.java:103:5:103:28 | compile(...) : XsltExecutable | provenance | Config | +| XsltInjectionTest.java:107:36:107:61 | param : String | XsltInjectionTest.java:108:23:108:27 | param : String | provenance | | +| XsltInjectionTest.java:107:64:107:76 | socket : Socket | XsltInjectionTest.java:109:44:109:49 | socket : Socket | provenance | | +| XsltInjectionTest.java:108:15:108:28 | new URI(...) : URI | XsltInjectionTest.java:112:36:112:38 | uri : URI | provenance | | +| XsltInjectionTest.java:108:23:108:27 | param : String | XsltInjectionTest.java:108:15:108:28 | new URI(...) : URI | provenance | MaD:11 | +| XsltInjectionTest.java:109:27:109:67 | new StreamSource(...) : StreamSource | XsltInjectionTest.java:113:29:113:34 | source : StreamSource | provenance | | +| XsltInjectionTest.java:109:44:109:49 | socket : Socket | XsltInjectionTest.java:109:44:109:66 | getInputStream(...) : InputStream | provenance | MaD:10 | +| XsltInjectionTest.java:109:44:109:66 | getInputStream(...) : InputStream | XsltInjectionTest.java:109:27:109:67 | new StreamSource(...) : StreamSource | provenance | Src:MaD:7 MaD:14 | +| XsltInjectionTest.java:112:5:112:39 | loadExecutablePackage(...) : XsltExecutable | XsltInjectionTest.java:112:5:112:46 | load(...) | provenance | Config Sink:MaD:6 | +| XsltInjectionTest.java:112:36:112:38 | uri : URI | XsltInjectionTest.java:112:5:112:39 | loadExecutablePackage(...) : XsltExecutable | provenance | Config | +| XsltInjectionTest.java:112:36:112:38 | uri : URI | XsltInjectionTest.java:114:33:114:35 | uri : URI | provenance | | +| XsltInjectionTest.java:113:5:113:35 | compilePackage(...) : XsltPackage | XsltInjectionTest.java:113:5:113:42 | link(...) : XsltExecutable | provenance | Config | +| XsltInjectionTest.java:113:5:113:42 | link(...) : XsltExecutable | XsltInjectionTest.java:113:5:113:49 | load(...) | provenance | Config Sink:MaD:6 | +| XsltInjectionTest.java:113:29:113:34 | source : StreamSource | XsltInjectionTest.java:113:5:113:35 | compilePackage(...) : XsltPackage | provenance | Config | +| XsltInjectionTest.java:114:5:114:36 | loadLibraryPackage(...) : XsltPackage | XsltInjectionTest.java:114:5:114:43 | link(...) : XsltExecutable | provenance | Config | +| XsltInjectionTest.java:114:5:114:43 | link(...) : XsltExecutable | XsltInjectionTest.java:114:5:114:50 | load(...) | provenance | Config Sink:MaD:6 | +| XsltInjectionTest.java:114:33:114:35 | uri : URI | XsltInjectionTest.java:114:5:114:36 | loadLibraryPackage(...) : XsltPackage | provenance | Config | +models +| 1 | Sink: javax.xml.transform; Transformer; false; transform; ; ; Argument[this]; xslt-injection; manual | +| 2 | Sink: net.sf.saxon.s9api; Xslt30Transformer; false; applyTemplates; ; ; Argument[this]; xslt-injection; manual | +| 3 | Sink: net.sf.saxon.s9api; Xslt30Transformer; false; callFunction; ; ; Argument[this]; xslt-injection; manual | +| 4 | Sink: net.sf.saxon.s9api; Xslt30Transformer; false; callTemplate; ; ; Argument[this]; xslt-injection; manual | +| 5 | Sink: net.sf.saxon.s9api; Xslt30Transformer; false; transform; ; ; Argument[this]; xslt-injection; manual | +| 6 | Sink: net.sf.saxon.s9api; XsltTransformer; false; transform; ; ; Argument[this]; xslt-injection; manual | +| 7 | Source: java.net; Socket; false; getInputStream; (); ; ReturnValue; remote; manual | +| 8 | Summary: java.io; InputStreamReader; false; InputStreamReader; ; ; Argument[0]; Argument[this]; taint; manual | +| 9 | Summary: java.io; StringReader; false; StringReader; ; ; Argument[0]; Argument[this]; taint; manual | +| 10 | Summary: java.net; Socket; true; getInputStream; (); ; Argument[this]; ReturnValue; taint; df-generated | +| 11 | Summary: java.net; URI; false; URI; (String); ; Argument[0]; Argument[this]; taint; manual | +| 12 | Summary: javax.xml.transform.sax; SAXSource; false; SAXSource; (InputSource); ; Argument[0]; Argument[this]; taint; manual | +| 13 | Summary: javax.xml.transform.sax; SAXSource; false; SAXSource; (XMLReader,InputSource); ; Argument[1]; Argument[this]; taint; manual | +| 14 | Summary: javax.xml.transform.stream; StreamSource; false; StreamSource; ; ; Argument[0]; Argument[this]; taint; manual | +| 15 | Summary: javax.xml.transform; Templates; true; newTransformer; (); ; Argument[this]; ReturnValue; taint; df-generated | +| 16 | Summary: javax.xml.transform; TransformerFactory; true; newTemplates; (Source); ; Argument[0]; ReturnValue; taint; df-generated | +| 17 | Summary: org.xml.sax; InputSource; false; InputSource; ; ; Argument[0]; Argument[this]; taint; manual | +nodes +| XsltInjectionTest.java:30:27:30:67 | new StreamSource(...) : StreamSource | semmle.label | new StreamSource(...) : StreamSource | +| XsltInjectionTest.java:30:44:30:66 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XsltInjectionTest.java:31:5:31:59 | newTransformer(...) | semmle.label | newTransformer(...) | +| XsltInjectionTest.java:31:53:31:58 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:35:27:35:90 | new StreamSource(...) : StreamSource | semmle.label | new StreamSource(...) : StreamSource | +| XsltInjectionTest.java:35:44:35:89 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | +| XsltInjectionTest.java:35:66:35:88 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XsltInjectionTest.java:36:5:36:57 | newTemplates(...) : Templates | semmle.label | newTemplates(...) : Templates | +| XsltInjectionTest.java:36:5:36:74 | newTransformer(...) | semmle.label | newTransformer(...) | +| XsltInjectionTest.java:36:51:36:56 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:40:45:40:70 | param : String | semmle.label | param : String | +| XsltInjectionTest.java:42:27:42:66 | new StreamSource(...) : StreamSource | semmle.label | new StreamSource(...) : StreamSource | +| XsltInjectionTest.java:42:44:42:65 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| XsltInjectionTest.java:42:61:42:64 | xslt : String | semmle.label | xslt : String | +| XsltInjectionTest.java:43:5:43:59 | newTransformer(...) | semmle.label | newTransformer(...) | +| XsltInjectionTest.java:43:53:43:58 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:47:24:47:78 | new SAXSource(...) : SAXSource | semmle.label | new SAXSource(...) : SAXSource | +| XsltInjectionTest.java:47:38:47:77 | new InputSource(...) : InputSource | semmle.label | new InputSource(...) : InputSource | +| XsltInjectionTest.java:47:54:47:76 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XsltInjectionTest.java:48:5:48:57 | newTemplates(...) : Templates | semmle.label | newTemplates(...) : Templates | +| XsltInjectionTest.java:48:5:48:74 | newTransformer(...) | semmle.label | newTransformer(...) | +| XsltInjectionTest.java:48:51:48:56 | source : SAXSource | semmle.label | source : SAXSource | +| XsltInjectionTest.java:53:9:53:92 | new SAXSource(...) : SAXSource | semmle.label | new SAXSource(...) : SAXSource | +| XsltInjectionTest.java:53:29:53:91 | new InputSource(...) : InputSource | semmle.label | new InputSource(...) : InputSource | +| XsltInjectionTest.java:53:45:53:90 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | +| XsltInjectionTest.java:53:67:53:89 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XsltInjectionTest.java:54:5:54:59 | newTransformer(...) | semmle.label | newTransformer(...) | +| XsltInjectionTest.java:54:53:54:58 | source : SAXSource | semmle.label | source : SAXSource | +| XsltInjectionTest.java:59:9:59:99 | new StAXSource(...) : StAXSource | semmle.label | new StAXSource(...) : StAXSource | +| XsltInjectionTest.java:59:24:59:98 | createXMLEventReader(...) : XMLEventReader | semmle.label | createXMLEventReader(...) : XMLEventReader | +| XsltInjectionTest.java:59:75:59:97 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XsltInjectionTest.java:60:5:60:59 | newTransformer(...) | semmle.label | newTransformer(...) | +| XsltInjectionTest.java:60:53:60:58 | source : StAXSource | semmle.label | source : StAXSource | +| XsltInjectionTest.java:64:25:65:56 | new StAXSource(...) : StAXSource | semmle.label | new StAXSource(...) : StAXSource | +| XsltInjectionTest.java:64:40:65:55 | createXMLStreamReader(...) : XMLStreamReader | semmle.label | createXMLStreamReader(...) : XMLStreamReader | +| XsltInjectionTest.java:65:9:65:54 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | +| XsltInjectionTest.java:65:31:65:53 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XsltInjectionTest.java:66:5:66:57 | newTemplates(...) : Templates | semmle.label | newTemplates(...) : Templates | +| XsltInjectionTest.java:66:5:66:74 | newTransformer(...) | semmle.label | newTransformer(...) | +| XsltInjectionTest.java:66:51:66:56 | source : StAXSource | semmle.label | source : StAXSource | +| XsltInjectionTest.java:70:24:71:97 | new DOMSource(...) : DOMSource | semmle.label | new DOMSource(...) : DOMSource | +| XsltInjectionTest.java:71:9:71:96 | parse(...) : Document | semmle.label | parse(...) : Document | +| XsltInjectionTest.java:71:73:71:95 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XsltInjectionTest.java:72:5:72:59 | newTransformer(...) | semmle.label | newTransformer(...) | +| XsltInjectionTest.java:72:53:72:58 | source : DOMSource | semmle.label | source : DOMSource | +| XsltInjectionTest.java:76:27:76:67 | new StreamSource(...) : StreamSource | semmle.label | new StreamSource(...) : StreamSource | +| XsltInjectionTest.java:76:44:76:66 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XsltInjectionTest.java:80:5:80:34 | newTransformer(...) | semmle.label | newTransformer(...) | +| XsltInjectionTest.java:80:28:80:33 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:84:27:84:67 | new StreamSource(...) : StreamSource | semmle.label | new StreamSource(...) : StreamSource | +| XsltInjectionTest.java:84:44:84:66 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XsltInjectionTest.java:87:5:87:34 | newTransformer(...) | semmle.label | newTransformer(...) | +| XsltInjectionTest.java:87:28:87:33 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:91:27:91:67 | new StreamSource(...) : StreamSource | semmle.label | new StreamSource(...) : StreamSource | +| XsltInjectionTest.java:91:44:91:66 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XsltInjectionTest.java:94:5:94:28 | compile(...) : XsltExecutable | semmle.label | compile(...) : XsltExecutable | +| XsltInjectionTest.java:94:5:94:35 | load(...) | semmle.label | load(...) | +| XsltInjectionTest.java:94:22:94:27 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:95:5:95:28 | compile(...) : XsltExecutable | semmle.label | compile(...) : XsltExecutable | +| XsltInjectionTest.java:95:5:95:37 | load30(...) | semmle.label | load30(...) | +| XsltInjectionTest.java:95:22:95:27 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:96:5:96:28 | compile(...) : XsltExecutable | semmle.label | compile(...) : XsltExecutable | +| XsltInjectionTest.java:96:5:96:37 | load30(...) | semmle.label | load30(...) | +| XsltInjectionTest.java:96:22:96:27 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:97:5:97:28 | compile(...) : XsltExecutable | semmle.label | compile(...) : XsltExecutable | +| XsltInjectionTest.java:97:5:97:37 | load30(...) | semmle.label | load30(...) | +| XsltInjectionTest.java:97:22:97:27 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:98:5:98:28 | compile(...) : XsltExecutable | semmle.label | compile(...) : XsltExecutable | +| XsltInjectionTest.java:98:5:98:37 | load30(...) | semmle.label | load30(...) | +| XsltInjectionTest.java:98:22:98:27 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:99:5:99:28 | compile(...) : XsltExecutable | semmle.label | compile(...) : XsltExecutable | +| XsltInjectionTest.java:99:5:99:37 | load30(...) | semmle.label | load30(...) | +| XsltInjectionTest.java:99:22:99:27 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:100:5:100:28 | compile(...) : XsltExecutable | semmle.label | compile(...) : XsltExecutable | +| XsltInjectionTest.java:100:5:100:37 | load30(...) | semmle.label | load30(...) | +| XsltInjectionTest.java:100:22:100:27 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:101:5:101:28 | compile(...) : XsltExecutable | semmle.label | compile(...) : XsltExecutable | +| XsltInjectionTest.java:101:5:101:37 | load30(...) | semmle.label | load30(...) | +| XsltInjectionTest.java:101:22:101:27 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:102:5:102:28 | compile(...) : XsltExecutable | semmle.label | compile(...) : XsltExecutable | +| XsltInjectionTest.java:102:5:102:37 | load30(...) | semmle.label | load30(...) | +| XsltInjectionTest.java:102:22:102:27 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:103:5:103:28 | compile(...) : XsltExecutable | semmle.label | compile(...) : XsltExecutable | +| XsltInjectionTest.java:103:5:103:37 | load30(...) | semmle.label | load30(...) | +| XsltInjectionTest.java:103:22:103:27 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:107:36:107:61 | param : String | semmle.label | param : String | +| XsltInjectionTest.java:107:64:107:76 | socket : Socket | semmle.label | socket : Socket | +| XsltInjectionTest.java:108:15:108:28 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| XsltInjectionTest.java:108:23:108:27 | param : String | semmle.label | param : String | +| XsltInjectionTest.java:109:27:109:67 | new StreamSource(...) : StreamSource | semmle.label | new StreamSource(...) : StreamSource | +| XsltInjectionTest.java:109:44:109:49 | socket : Socket | semmle.label | socket : Socket | +| XsltInjectionTest.java:109:44:109:66 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XsltInjectionTest.java:112:5:112:39 | loadExecutablePackage(...) : XsltExecutable | semmle.label | loadExecutablePackage(...) : XsltExecutable | +| XsltInjectionTest.java:112:5:112:46 | load(...) | semmle.label | load(...) | +| XsltInjectionTest.java:112:36:112:38 | uri : URI | semmle.label | uri : URI | +| XsltInjectionTest.java:113:5:113:35 | compilePackage(...) : XsltPackage | semmle.label | compilePackage(...) : XsltPackage | +| XsltInjectionTest.java:113:5:113:42 | link(...) : XsltExecutable | semmle.label | link(...) : XsltExecutable | +| XsltInjectionTest.java:113:5:113:49 | load(...) | semmle.label | load(...) | +| XsltInjectionTest.java:113:29:113:34 | source : StreamSource | semmle.label | source : StreamSource | +| XsltInjectionTest.java:114:5:114:36 | loadLibraryPackage(...) : XsltPackage | semmle.label | loadLibraryPackage(...) : XsltPackage | +| XsltInjectionTest.java:114:5:114:43 | link(...) : XsltExecutable | semmle.label | link(...) : XsltExecutable | +| XsltInjectionTest.java:114:5:114:50 | load(...) | semmle.label | load(...) | +| XsltInjectionTest.java:114:33:114:35 | uri : URI | semmle.label | uri : URI | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.java b/java/ql/test/query-tests/security/CWE-074/XsltInjection/XsltInjectionTest.java similarity index 81% rename from java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.java rename to java/ql/test/query-tests/security/CWE-074/XsltInjection/XsltInjectionTest.java index 2bfd02a865c6..d6804d801b79 100644 --- a/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.java +++ b/java/ql/test/query-tests/security/CWE-074/XsltInjection/XsltInjectionTest.java @@ -27,91 +27,91 @@ @Controller public class XsltInjectionTest { public void testStreamSourceInputStream(Socket socket) throws Exception { - StreamSource source = new StreamSource(socket.getInputStream()); - TransformerFactory.newInstance().newTransformer(source).transform(null, null); // $hasXsltInjection + StreamSource source = new StreamSource(socket.getInputStream()); // $ Source + TransformerFactory.newInstance().newTransformer(source).transform(null, null); // $ Alert } public void testStreamSourceReader(Socket socket) throws Exception { - StreamSource source = new StreamSource(new InputStreamReader(socket.getInputStream())); - TransformerFactory.newInstance().newTemplates(source).newTransformer().transform(null, null); // $hasXsltInjection + StreamSource source = new StreamSource(new InputStreamReader(socket.getInputStream())); // $ Source + TransformerFactory.newInstance().newTemplates(source).newTransformer().transform(null, null); // $ Alert } @RequestMapping - public void testStreamSourceInjectedParam(@RequestParam String param) throws Exception { + public void testStreamSourceInjectedParam(@RequestParam String param) throws Exception { // $ Source String xslt = ""; StreamSource source = new StreamSource(new StringReader(xslt)); - TransformerFactory.newInstance().newTransformer(source).transform(null, null); // $hasXsltInjection + TransformerFactory.newInstance().newTransformer(source).transform(null, null); // $ Alert } public void testSAXSourceInputStream(Socket socket) throws Exception { - SAXSource source = new SAXSource(new InputSource(socket.getInputStream())); - TransformerFactory.newInstance().newTemplates(source).newTransformer().transform(null, null); // $hasXsltInjection + SAXSource source = new SAXSource(new InputSource(socket.getInputStream())); // $ Source + TransformerFactory.newInstance().newTemplates(source).newTransformer().transform(null, null); // $ Alert } public void testSAXSourceReader(Socket socket) throws Exception { SAXSource source = - new SAXSource(null, new InputSource(new InputStreamReader(socket.getInputStream()))); - TransformerFactory.newInstance().newTransformer(source).transform(null, null); // $hasXsltInjection + new SAXSource(null, new InputSource(new InputStreamReader(socket.getInputStream()))); // $ Source + TransformerFactory.newInstance().newTransformer(source).transform(null, null); // $ Alert } public void testStAXSourceEventReader(Socket socket) throws Exception { StAXSource source = - new StAXSource(XMLInputFactory.newInstance().createXMLEventReader(socket.getInputStream())); - TransformerFactory.newInstance().newTransformer(source).transform(null, null); // $hasXsltInjection + new StAXSource(XMLInputFactory.newInstance().createXMLEventReader(socket.getInputStream())); // $ Source + TransformerFactory.newInstance().newTransformer(source).transform(null, null); // $ Alert } public void testStAXSourceEventStream(Socket socket) throws Exception { StAXSource source = new StAXSource(XMLInputFactory.newInstance().createXMLStreamReader(null, - new InputStreamReader(socket.getInputStream()))); - TransformerFactory.newInstance().newTemplates(source).newTransformer().transform(null, null); // $hasXsltInjection + new InputStreamReader(socket.getInputStream()))); // $ Source + TransformerFactory.newInstance().newTemplates(source).newTransformer().transform(null, null); // $ Alert } public void testDOMSource(Socket socket) throws Exception { DOMSource source = new DOMSource( - DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(socket.getInputStream())); - TransformerFactory.newInstance().newTransformer(source).transform(null, null); // $hasXsltInjection + DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(socket.getInputStream())); // $ Source + TransformerFactory.newInstance().newTransformer(source).transform(null, null); // $ Alert } public void testDisabledXXE(Socket socket) throws Exception { - StreamSource source = new StreamSource(socket.getInputStream()); + StreamSource source = new StreamSource(socket.getInputStream()); // $ Source TransformerFactory factory = TransformerFactory.newInstance(); factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); - factory.newTransformer(source).transform(null, null); // $hasXsltInjection + factory.newTransformer(source).transform(null, null); // $ Alert } public void testFeatureSecureProcessingDisabled(Socket socket) throws Exception { - StreamSource source = new StreamSource(socket.getInputStream()); + StreamSource source = new StreamSource(socket.getInputStream()); // $ Source TransformerFactory factory = TransformerFactory.newInstance(); factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, false); - factory.newTransformer(source).transform(null, null); // $hasXsltInjection + factory.newTransformer(source).transform(null, null); // $ Alert } public void testSaxon(Socket socket) throws Exception { - StreamSource source = new StreamSource(socket.getInputStream()); + StreamSource source = new StreamSource(socket.getInputStream()); // $ Source XsltCompiler compiler = new Processor(true).newXsltCompiler(); - compiler.compile(source).load().transform(); // $hasXsltInjection - compiler.compile(source).load30().transform(null, null); // $hasXsltInjection - compiler.compile(source).load30().applyTemplates((Source) null); // $hasXsltInjection - compiler.compile(source).load30().applyTemplates((Source) null, null); // $hasXsltInjection - compiler.compile(source).load30().applyTemplates((XdmValue) null); // $hasXsltInjection - compiler.compile(source).load30().applyTemplates((XdmValue) null, null); // $hasXsltInjection - compiler.compile(source).load30().callFunction(null, null); // $hasXsltInjection - compiler.compile(source).load30().callFunction(null, null, null); // $hasXsltInjection - compiler.compile(source).load30().callTemplate(null); // $hasXsltInjection - compiler.compile(source).load30().callTemplate(null, null); // $hasXsltInjection + compiler.compile(source).load().transform(); // $ Alert + compiler.compile(source).load30().transform(null, null); // $ Alert + compiler.compile(source).load30().applyTemplates((Source) null); // $ Alert + compiler.compile(source).load30().applyTemplates((Source) null, null); // $ Alert + compiler.compile(source).load30().applyTemplates((XdmValue) null); // $ Alert + compiler.compile(source).load30().applyTemplates((XdmValue) null, null); // $ Alert + compiler.compile(source).load30().callFunction(null, null); // $ Alert + compiler.compile(source).load30().callFunction(null, null, null); // $ Alert + compiler.compile(source).load30().callTemplate(null); // $ Alert + compiler.compile(source).load30().callTemplate(null, null); // $ Alert } @RequestMapping - public void testSaxonXsltPackage(@RequestParam String param, Socket socket) throws Exception { + public void testSaxonXsltPackage(@RequestParam String param, Socket socket) throws Exception { // $ Source URI uri = new URI(param); - StreamSource source = new StreamSource(socket.getInputStream()); + StreamSource source = new StreamSource(socket.getInputStream()); // $ Source XsltCompiler compiler = new Processor(true).newXsltCompiler(); - compiler.loadExecutablePackage(uri).load().transform(); // $hasXsltInjection - compiler.compilePackage(source).link().load().transform(); // $hasXsltInjection - compiler.loadLibraryPackage(uri).link().load().transform(); // $hasXsltInjection + compiler.loadExecutablePackage(uri).load().transform(); // $ Alert + compiler.compilePackage(source).link().load().transform(); // $ Alert + compiler.loadLibraryPackage(uri).link().load().transform(); // $ Alert } public void testOkFeatureSecureProcessing(Socket socket) throws Exception { diff --git a/java/ql/test/query-tests/security/CWE-074/XsltInjection/XsltInjectionTest.qlref b/java/ql/test/query-tests/security/CWE-074/XsltInjection/XsltInjectionTest.qlref new file mode 100644 index 000000000000..e32e035cedb4 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-074/XsltInjection/XsltInjectionTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-074/XsltInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-074/XsltInjection/options b/java/ql/test/query-tests/security/CWE-074/XsltInjection/options new file mode 100644 index 000000000000..099749ee58bf --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-074/XsltInjection/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/springframework-5.8.x:${testdir}/../../../../stubs/shiro-core-1.5.2:${testdir}/../../../../stubs/spring-ldap-2.3.2:${testdir}/../../../../stubs/Saxon-HE-9.9.1-7:${testdir}/../../../../stubs/apache-commons-logging-1.2 diff --git a/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.expected b/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.ql b/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.ql deleted file mode 100644 index 72c003246bc2..000000000000 --- a/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.ql +++ /dev/null @@ -1,20 +0,0 @@ -import java -import semmle.code.java.dataflow.TaintTracking -import semmle.code.java.dataflow.FlowSources -import semmle.code.java.security.XsltInjectionQuery -import utils.test.InlineExpectationsTest - -module HasXsltInjectionTest implements TestSig { - string getARelevantTag() { result = "hasXsltInjection" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasXsltInjection" and - exists(DataFlow::Node sink | XsltInjectionFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-074/options b/java/ql/test/query-tests/security/CWE-074/options deleted file mode 100644 index becd1ca3f587..000000000000 --- a/java/ql/test/query-tests/security/CWE-074/options +++ /dev/null @@ -1 +0,0 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/springframework-5.8.x:${testdir}/../../../stubs/shiro-core-1.5.2:${testdir}/../../../stubs/spring-ldap-2.3.2:${testdir}/../../../stubs/Saxon-HE-9.9.1-7:${testdir}/../../../stubs/apache-commons-logging-1.2 diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/JaxXSS.java b/java/ql/test/query-tests/security/CWE-079/semmle/tests/JaxXSS.java index a0719526d979..0e096ab94e02 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/JaxXSS.java +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/JaxXSS.java @@ -12,25 +12,25 @@ public class JaxXSS { @GET - public static Response specificContentType(boolean safeContentType, boolean chainDirectly, boolean contentTypeFirst, String userControlled) { + public static Response specificContentType(boolean safeContentType, boolean chainDirectly, boolean contentTypeFirst, String userControlled) { // $ Source Response.ResponseBuilder builder = Response.ok(); if(!safeContentType) { if(chainDirectly) { if(contentTypeFirst) - return builder.type(MediaType.TEXT_HTML).entity(userControlled).build(); // $ xss + return builder.type(MediaType.TEXT_HTML).entity(userControlled).build(); // $ Alert else - return builder.entity(userControlled).type(MediaType.TEXT_HTML).build(); // $ xss + return builder.entity(userControlled).type(MediaType.TEXT_HTML).build(); // $ Alert } else { if(contentTypeFirst) { Response.ResponseBuilder builder2 = builder.type(MediaType.TEXT_HTML); - return builder2.entity(userControlled).build(); // $ xss + return builder2.entity(userControlled).build(); // $ Alert } else { Response.ResponseBuilder builder2 = builder.entity(userControlled); - return builder2.type(MediaType.TEXT_HTML).build(); // $ xss + return builder2.type(MediaType.TEXT_HTML).build(); // $ Alert } } } @@ -56,7 +56,7 @@ public static Response specificContentType(boolean safeContentType, boolean chai } @GET - public static Response specificContentTypeSetterMethods(int route, boolean safeContentType, String userControlled) { + public static Response specificContentTypeSetterMethods(int route, boolean safeContentType, String userControlled) { // $ Source // Test the remarkably many routes to setting a content-type in Jax-RS, besides the ResponseBuilder.entity method used above: @@ -105,39 +105,39 @@ else if(route == 8) { else { if(route == 0) { // via ok, as a string literal: - return Response.ok("text/html").entity(userControlled).build(); // $ xss + return Response.ok("text/html").entity(userControlled).build(); // $ Alert } else if(route == 1) { // via ok, as a string constant: - return Response.ok(MediaType.TEXT_HTML).entity(userControlled).build(); // $ xss + return Response.ok(MediaType.TEXT_HTML).entity(userControlled).build(); // $ Alert } else if(route == 2) { // via ok, as a MediaType constant: - return Response.ok(MediaType.TEXT_HTML_TYPE).entity(userControlled).build(); // $ xss + return Response.ok(MediaType.TEXT_HTML_TYPE).entity(userControlled).build(); // $ Alert } else if(route == 3) { // via ok, as a Variant, via constructor: - return Response.ok(new Variant(MediaType.TEXT_HTML_TYPE, "language", "encoding")).entity(userControlled).build(); // $ xss + return Response.ok(new Variant(MediaType.TEXT_HTML_TYPE, "language", "encoding")).entity(userControlled).build(); // $ Alert } else if(route == 4) { // via ok, as a Variant, via static method: - return Response.ok(Variant.mediaTypes(MediaType.TEXT_HTML_TYPE).build()).entity(userControlled).build(); // $ xss + return Response.ok(Variant.mediaTypes(MediaType.TEXT_HTML_TYPE).build()).entity(userControlled).build(); // $ Alert } else if(route == 5) { // via ok, as a Variant, via instance method: - return Response.ok(Variant.languages(Locale.UK).mediaTypes(MediaType.TEXT_HTML_TYPE).build()).entity(userControlled).build(); // $ xss + return Response.ok(Variant.languages(Locale.UK).mediaTypes(MediaType.TEXT_HTML_TYPE).build()).entity(userControlled).build(); // $ Alert } else if(route == 6) { // via builder variant, before entity: - return Response.ok().variant(new Variant(MediaType.TEXT_HTML_TYPE, "language", "encoding")).entity(userControlled).build(); // $ xss + return Response.ok().variant(new Variant(MediaType.TEXT_HTML_TYPE, "language", "encoding")).entity(userControlled).build(); // $ Alert } else if(route == 7) { // via builder variant, after entity: - return Response.ok().entity(userControlled).variant(new Variant(MediaType.TEXT_HTML_TYPE, "language", "encoding")).build(); // $ xss + return Response.ok().entity(userControlled).variant(new Variant(MediaType.TEXT_HTML_TYPE, "language", "encoding")).build(); // $ Alert } else if(route == 8) { // provide entity via ok, then content-type via builder: - return Response.ok(userControlled).type(MediaType.TEXT_HTML_TYPE).build(); // $ xss + return Response.ok(userControlled).type(MediaType.TEXT_HTML_TYPE).build(); // $ Alert } } @@ -161,28 +161,28 @@ public static Response methodContentTypeSafeStringLiteral(String userControlled) } @GET @Produces(MediaType.TEXT_HTML) - public static Response methodContentTypeUnsafe(String userControlled) { - return Response.ok(userControlled).build(); // $ xss + public static Response methodContentTypeUnsafe(String userControlled) { // $ Source + return Response.ok(userControlled).build(); // $ Alert } @POST @Produces(MediaType.TEXT_HTML) - public static Response methodContentTypeUnsafePost(String userControlled) { - return Response.ok(userControlled).build(); // $ xss + public static Response methodContentTypeUnsafePost(String userControlled) { // $ Source + return Response.ok(userControlled).build(); // $ Alert } @GET @Produces("text/html") - public static Response methodContentTypeUnsafeStringLiteral(String userControlled) { - return Response.ok(userControlled).build(); // $ xss + public static Response methodContentTypeUnsafeStringLiteral(String userControlled) { // $ Source + return Response.ok(userControlled).build(); // $ Alert } @GET @Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON}) - public static Response methodContentTypeMaybeSafe(String userControlled) { - return Response.ok(userControlled).build(); // $ xss + public static Response methodContentTypeMaybeSafe(String userControlled) { // $ Source + return Response.ok(userControlled).build(); // $ Alert } @GET @Produces(MediaType.APPLICATION_JSON) - public static Response methodContentTypeSafeOverriddenWithUnsafe(String userControlled) { - return Response.ok().type(MediaType.TEXT_HTML).entity(userControlled).build(); // $ xss + public static Response methodContentTypeSafeOverriddenWithUnsafe(String userControlled) { // $ Source + return Response.ok().type(MediaType.TEXT_HTML).entity(userControlled).build(); // $ Alert } @GET @Produces(MediaType.TEXT_HTML) @@ -204,13 +204,13 @@ public String testDirectReturn(String userControlled) { } @GET @Produces({"text/html"}) - public Response overridesWithUnsafe(String userControlled) { - return Response.ok(userControlled).build(); // $ xss + public Response overridesWithUnsafe(String userControlled) { // $ Source + return Response.ok(userControlled).build(); // $ Alert } @GET - public Response overridesWithUnsafe2(String userControlled) { - return Response.ok().type(MediaType.TEXT_HTML).entity(userControlled).build(); // $ xss + public Response overridesWithUnsafe2(String userControlled) { // $ Source + return Response.ok().type(MediaType.TEXT_HTML).entity(userControlled).build(); // $ Alert } } @@ -218,13 +218,13 @@ public Response overridesWithUnsafe2(String userControlled) { @Produces({"text/html"}) public static class ClassContentTypeUnsafe { @GET - public Response test(String userControlled) { - return Response.ok(userControlled).build(); // $ xss + public Response test(String userControlled) { // $ Source + return Response.ok(userControlled).build(); // $ Alert } @GET - public String testDirectReturn(String userControlled) { - return userControlled; // $ xss + public String testDirectReturn(String userControlled) { // $ Source + return userControlled; // $ Alert } @GET @Produces({"application/json"}) @@ -239,13 +239,13 @@ public Response overridesWithSafe2(String userControlled) { } @GET - public static Response entityWithNoMediaType(String userControlled) { - return Response.ok(userControlled).build(); // $ xss + public static Response entityWithNoMediaType(String userControlled) { // $ Source + return Response.ok(userControlled).build(); // $ Alert } @GET - public static String stringWithNoMediaType(String userControlled) { - return userControlled; // $ xss + public static String stringWithNoMediaType(String userControlled) { // $ Source + return userControlled; // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/JsfXSS.java b/java/ql/test/query-tests/security/CWE-079/semmle/tests/JsfXSS.java index 38df344dff26..f3efab3ddfe3 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/JsfXSS.java +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/JsfXSS.java @@ -18,7 +18,7 @@ public void encodeBegin(FacesContext facesContext, UIComponent component) throws { super.encodeBegin(facesContext, component); - Map requestParameters = facesContext.getExternalContext().getRequestParameterMap(); + Map requestParameters = facesContext.getExternalContext().getRequestParameterMap(); // $ Source String windowId = requestParameters.get("window_id"); ResponseWriter writer = facesContext.getResponseWriter(); @@ -26,7 +26,7 @@ public void encodeBegin(FacesContext facesContext, UIComponent component) throws writer.write("(function(){"); writer.write("dswh.init('" + windowId + "','" + "......" + "'," - + -1 + ",{"); // $ xss + + -1 + ",{"); // $ Alert writer.write("});"); writer.write("})();"); writer.write(""); @@ -57,13 +57,13 @@ public void testAllSources(FacesContext facesContext) throws IOException { ExternalContext ec = facesContext.getExternalContext(); ResponseWriter writer = facesContext.getResponseWriter(); - writer.write(ec.getRequestParameterMap().keySet().iterator().next()); // $ xss - writer.write(ec.getRequestParameterNames().next()); // $ xss - writer.write(ec.getRequestParameterValuesMap().get("someKey")[0]); // $ xss - writer.write(ec.getRequestParameterValuesMap().keySet().iterator().next()); // $ xss - writer.write(ec.getRequestPathInfo()); // $ xss - writer.write(((Cookie)ec.getRequestCookieMap().get("someKey")).getName()); // $ xss - writer.write(ec.getRequestHeaderMap().get("someKey")); // $ xss - writer.write(ec.getRequestHeaderValuesMap().get("someKey")[0]); // $ xss + writer.write(ec.getRequestParameterMap().keySet().iterator().next()); // $ Alert + writer.write(ec.getRequestParameterNames().next()); // $ Alert + writer.write(ec.getRequestParameterValuesMap().get("someKey")[0]); // $ Alert + writer.write(ec.getRequestParameterValuesMap().keySet().iterator().next()); // $ Alert + writer.write(ec.getRequestPathInfo()); // $ Alert + writer.write(((Cookie)ec.getRequestCookieMap().get("someKey")).getName()); // $ Alert + writer.write(ec.getRequestHeaderMap().get("someKey")); // $ Alert + writer.write(ec.getRequestHeaderValuesMap().get("someKey")[0]); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/SpringXSS.java b/java/ql/test/query-tests/security/CWE-079/semmle/tests/SpringXSS.java index ff4957f3788a..fd3a26bcf105 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/SpringXSS.java +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/SpringXSS.java @@ -13,17 +13,17 @@ public class SpringXSS { @GetMapping - public static ResponseEntity specificContentType(boolean safeContentType, boolean chainDirectly, String userControlled) { + public static ResponseEntity specificContentType(boolean safeContentType, boolean chainDirectly, String userControlled) { // $ Source ResponseEntity.BodyBuilder builder = ResponseEntity.ok(); if(!safeContentType) { if(chainDirectly) { - return builder.contentType(MediaType.TEXT_HTML).body(userControlled); // $ xss + return builder.contentType(MediaType.TEXT_HTML).body(userControlled); // $ Alert } else { ResponseEntity.BodyBuilder builder2 = builder.contentType(MediaType.TEXT_HTML); - return builder2.body(userControlled); // $ xss + return builder2.body(userControlled); // $ Alert } } else { @@ -59,23 +59,23 @@ public static ResponseEntity methodContentTypeSafeStringLiteral(String u } @GetMapping(value = "/xyz", produces = MediaType.TEXT_HTML_VALUE) - public static ResponseEntity methodContentTypeUnsafe(String userControlled) { - return ResponseEntity.ok(userControlled); // $ xss + public static ResponseEntity methodContentTypeUnsafe(String userControlled) { // $ Source + return ResponseEntity.ok(userControlled); // $ Alert } @GetMapping(value = "/xyz", produces = "text/html") - public static ResponseEntity methodContentTypeUnsafeStringLiteral(String userControlled) { - return ResponseEntity.ok(userControlled); // $ xss + public static ResponseEntity methodContentTypeUnsafeStringLiteral(String userControlled) { // $ Source + return ResponseEntity.ok(userControlled); // $ Alert } @GetMapping(value = "/xyz", produces = {MediaType.TEXT_HTML_VALUE, MediaType.APPLICATION_JSON_VALUE}) - public static ResponseEntity methodContentTypeMaybeSafe(String userControlled) { - return ResponseEntity.ok(userControlled); // $ xss + public static ResponseEntity methodContentTypeMaybeSafe(String userControlled) { // $ Source + return ResponseEntity.ok(userControlled); // $ Alert } @GetMapping(value = "/xyz", produces = MediaType.APPLICATION_JSON_VALUE) - public static ResponseEntity methodContentTypeSafeOverriddenWithUnsafe(String userControlled) { - return ResponseEntity.ok().contentType(MediaType.TEXT_HTML).body(userControlled); // $ xss + public static ResponseEntity methodContentTypeSafeOverriddenWithUnsafe(String userControlled) { // $ Source + return ResponseEntity.ok().contentType(MediaType.TEXT_HTML).body(userControlled); // $ Alert } @GetMapping(value = "/xyz", produces = MediaType.TEXT_HTML_VALUE) @@ -84,17 +84,17 @@ public static ResponseEntity methodContentTypeUnsafeOverriddenWithSafe(S } @GetMapping(value = "/xyz", produces = {"text/html", "application/json"}) - public static ResponseEntity methodContentTypeMaybeSafeStringLiterals(String userControlled, int constructionMethod) { + public static ResponseEntity methodContentTypeMaybeSafeStringLiterals(String userControlled, int constructionMethod) { // $ Source // Also try out some alternative constructors for the ResponseEntity: switch(constructionMethod) { case 0: - return ResponseEntity.ok(userControlled); // $ xss + return ResponseEntity.ok(userControlled); // $ Alert case 1: - return ResponseEntity.of(Optional.of(userControlled)); // $ xss + return ResponseEntity.of(Optional.of(userControlled)); // $ Alert case 2: - return ResponseEntity.ok().body(userControlled); // $ xss + return ResponseEntity.ok().body(userControlled); // $ Alert case 3: - return new ResponseEntity(userControlled, HttpStatus.OK); // $ xss + return new ResponseEntity(userControlled, HttpStatus.OK); // $ Alert default: return null; } @@ -114,13 +114,13 @@ public String testDirectReturn(String userControlled) { } @GetMapping(value = "/xyz", produces = {"text/html"}) - public ResponseEntity overridesWithUnsafe(String userControlled) { - return ResponseEntity.ok(userControlled); // $ xss + public ResponseEntity overridesWithUnsafe(String userControlled) { // $ Source + return ResponseEntity.ok(userControlled); // $ Alert } @GetMapping(value = "/abc") - public ResponseEntity overridesWithUnsafe2(String userControlled) { - return ResponseEntity.ok().contentType(MediaType.TEXT_HTML).body(userControlled); // $ xss + public ResponseEntity overridesWithUnsafe2(String userControlled) { // $ Source + return ResponseEntity.ok().contentType(MediaType.TEXT_HTML).body(userControlled); // $ Alert } } @@ -128,13 +128,13 @@ public ResponseEntity overridesWithUnsafe2(String userControlled) { @RequestMapping(produces = {"text/html"}) private static class ClassContentTypeUnsafe { @GetMapping(value = "/abc") - public ResponseEntity test(String userControlled) { - return ResponseEntity.ok(userControlled); // $ xss + public ResponseEntity test(String userControlled) { // $ Source + return ResponseEntity.ok(userControlled); // $ Alert } @GetMapping(value = "/abc") - public String testDirectReturn(String userControlled) { - return userControlled; // $ xss + public String testDirectReturn(String userControlled) { // $ Source + return userControlled; // $ Alert } @GetMapping(value = "/xyz", produces = {"application/json"}) @@ -149,13 +149,13 @@ public ResponseEntity overridesWithSafe2(String userControlled) { } @GetMapping(value = "/abc") - public static ResponseEntity entityWithNoMediaType(String userControlled) { - return ResponseEntity.ok(userControlled); // $ xss + public static ResponseEntity entityWithNoMediaType(String userControlled) { // $ Source + return ResponseEntity.ok(userControlled); // $ Alert } @GetMapping(value = "/abc") - public static String stringWithNoMediaType(String userControlled) { - return userControlled; // $ xss + public static String stringWithNoMediaType(String userControlled) { // $ Source + return userControlled; // $ Alert } @GetMapping(value = "/abc") diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.expected b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.expected index e69de29bb2d1..fcd7fd0ff18c 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.expected +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.expected @@ -0,0 +1,336 @@ +#select +| JaxXSS.java:22:59:22:72 | userControlled | JaxXSS.java:15:120:15:140 | userControlled : String | JaxXSS.java:22:59:22:72 | userControlled | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:15:120:15:140 | userControlled | user-provided value | +| JaxXSS.java:24:33:24:46 | userControlled | JaxXSS.java:15:120:15:140 | userControlled : String | JaxXSS.java:24:33:24:46 | userControlled | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:15:120:15:140 | userControlled | user-provided value | +| JaxXSS.java:29:34:29:47 | userControlled | JaxXSS.java:15:120:15:140 | userControlled : String | JaxXSS.java:29:34:29:47 | userControlled | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:15:120:15:140 | userControlled | user-provided value | +| JaxXSS.java:33:18:33:59 | build(...) | JaxXSS.java:15:120:15:140 | userControlled : String | JaxXSS.java:33:18:33:59 | build(...) | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:15:120:15:140 | userControlled | user-provided value | +| JaxXSS.java:108:16:108:70 | build(...) | JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:108:16:108:70 | build(...) | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:59:95:59:115 | userControlled | user-provided value | +| JaxXSS.java:112:16:112:78 | build(...) | JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:112:16:112:78 | build(...) | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:59:95:59:115 | userControlled | user-provided value | +| JaxXSS.java:116:16:116:83 | build(...) | JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:116:16:116:83 | build(...) | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:59:95:59:115 | userControlled | user-provided value | +| JaxXSS.java:120:98:120:111 | userControlled | JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:120:98:120:111 | userControlled | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:59:95:59:115 | userControlled | user-provided value | +| JaxXSS.java:124:89:124:102 | userControlled | JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:124:89:124:102 | userControlled | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:59:95:59:115 | userControlled | user-provided value | +| JaxXSS.java:128:110:128:123 | userControlled | JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:128:110:128:123 | userControlled | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:59:95:59:115 | userControlled | user-provided value | +| JaxXSS.java:132:108:132:121 | userControlled | JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:132:108:132:121 | userControlled | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:59:95:59:115 | userControlled | user-provided value | +| JaxXSS.java:136:37:136:50 | userControlled | JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:136:37:136:50 | userControlled | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:59:95:59:115 | userControlled | user-provided value | +| JaxXSS.java:140:16:140:81 | build(...) | JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:140:16:140:81 | build(...) | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:59:95:59:115 | userControlled | user-provided value | +| JaxXSS.java:165:12:165:46 | build(...) | JaxXSS.java:164:50:164:70 | userControlled : String | JaxXSS.java:165:12:165:46 | build(...) | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:164:50:164:70 | userControlled | user-provided value | +| JaxXSS.java:170:12:170:46 | build(...) | JaxXSS.java:169:54:169:74 | userControlled : String | JaxXSS.java:170:12:170:46 | build(...) | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:169:54:169:74 | userControlled | user-provided value | +| JaxXSS.java:175:12:175:46 | build(...) | JaxXSS.java:174:63:174:83 | userControlled : String | JaxXSS.java:175:12:175:46 | build(...) | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:174:63:174:83 | userControlled | user-provided value | +| JaxXSS.java:180:12:180:46 | build(...) | JaxXSS.java:179:53:179:73 | userControlled : String | JaxXSS.java:180:12:180:46 | build(...) | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:179:53:179:73 | userControlled | user-provided value | +| JaxXSS.java:185:59:185:72 | userControlled | JaxXSS.java:184:68:184:88 | userControlled : String | JaxXSS.java:185:59:185:72 | userControlled | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:184:68:184:88 | userControlled | user-provided value | +| JaxXSS.java:208:14:208:48 | build(...) | JaxXSS.java:207:41:207:61 | userControlled : String | JaxXSS.java:208:14:208:48 | build(...) | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:207:41:207:61 | userControlled | user-provided value | +| JaxXSS.java:213:61:213:74 | userControlled | JaxXSS.java:212:42:212:62 | userControlled : String | JaxXSS.java:213:61:213:74 | userControlled | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:212:42:212:62 | userControlled | user-provided value | +| JaxXSS.java:222:14:222:48 | build(...) | JaxXSS.java:221:26:221:46 | userControlled : String | JaxXSS.java:222:14:222:48 | build(...) | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:221:26:221:46 | userControlled | user-provided value | +| JaxXSS.java:227:14:227:27 | userControlled | JaxXSS.java:226:36:226:56 | userControlled : String | JaxXSS.java:227:14:227:27 | userControlled | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:226:36:226:56 | userControlled | user-provided value | +| JaxXSS.java:243:12:243:46 | build(...) | JaxXSS.java:242:48:242:68 | userControlled : String | JaxXSS.java:243:12:243:46 | build(...) | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:242:48:242:68 | userControlled | user-provided value | +| JaxXSS.java:248:12:248:25 | userControlled | JaxXSS.java:247:46:247:66 | userControlled : String | JaxXSS.java:248:12:248:25 | userControlled | Cross-site scripting vulnerability due to a $@. | JaxXSS.java:247:46:247:66 | userControlled | user-provided value | +| JsfXSS.java:27:22:29:27 | ... + ... | JsfXSS.java:21:50:21:107 | getRequestParameterMap(...) : Map | JsfXSS.java:27:22:29:27 | ... + ... | Cross-site scripting vulnerability due to a $@. | JsfXSS.java:21:50:21:107 | getRequestParameterMap(...) | user-provided value | +| JsfXSS.java:60:22:60:75 | next(...) | JsfXSS.java:60:22:60:48 | getRequestParameterMap(...) : Map | JsfXSS.java:60:22:60:75 | next(...) | Cross-site scripting vulnerability due to a $@. | JsfXSS.java:60:22:60:48 | getRequestParameterMap(...) | user-provided value | +| JsfXSS.java:61:22:61:57 | next(...) | JsfXSS.java:61:22:61:50 | getRequestParameterNames(...) : Iterator | JsfXSS.java:61:22:61:57 | next(...) | Cross-site scripting vulnerability due to a $@. | JsfXSS.java:61:22:61:50 | getRequestParameterNames(...) | user-provided value | +| JsfXSS.java:62:22:62:72 | ...[...] | JsfXSS.java:62:22:62:54 | getRequestParameterValuesMap(...) : Map | JsfXSS.java:62:22:62:72 | ...[...] | Cross-site scripting vulnerability due to a $@. | JsfXSS.java:62:22:62:54 | getRequestParameterValuesMap(...) | user-provided value | +| JsfXSS.java:63:22:63:81 | next(...) | JsfXSS.java:63:22:63:54 | getRequestParameterValuesMap(...) : Map | JsfXSS.java:63:22:63:81 | next(...) | Cross-site scripting vulnerability due to a $@. | JsfXSS.java:63:22:63:54 | getRequestParameterValuesMap(...) | user-provided value | +| JsfXSS.java:64:22:64:44 | getRequestPathInfo(...) | JsfXSS.java:64:22:64:44 | getRequestPathInfo(...) | JsfXSS.java:64:22:64:44 | getRequestPathInfo(...) | Cross-site scripting vulnerability due to a $@. | JsfXSS.java:64:22:64:44 | getRequestPathInfo(...) | user-provided value | +| JsfXSS.java:65:22:65:80 | getName(...) | JsfXSS.java:65:22:65:80 | getName(...) | JsfXSS.java:65:22:65:80 | getName(...) | Cross-site scripting vulnerability due to a $@. | JsfXSS.java:65:22:65:80 | getName(...) | user-provided value | +| JsfXSS.java:66:22:66:60 | get(...) | JsfXSS.java:66:22:66:45 | getRequestHeaderMap(...) : Map | JsfXSS.java:66:22:66:60 | get(...) | Cross-site scripting vulnerability due to a $@. | JsfXSS.java:66:22:66:45 | getRequestHeaderMap(...) | user-provided value | +| JsfXSS.java:67:22:67:69 | ...[...] | JsfXSS.java:67:22:67:51 | getRequestHeaderValuesMap(...) : Map | JsfXSS.java:67:22:67:69 | ...[...] | Cross-site scripting vulnerability due to a $@. | JsfXSS.java:67:22:67:51 | getRequestHeaderValuesMap(...) | user-provided value | +| SpringXSS.java:22:62:22:75 | userControlled | SpringXSS.java:16:108:16:128 | userControlled : String | SpringXSS.java:22:62:22:75 | userControlled | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:16:108:16:128 | userControlled | user-provided value | +| SpringXSS.java:26:30:26:43 | userControlled | SpringXSS.java:16:108:16:128 | userControlled : String | SpringXSS.java:26:30:26:43 | userControlled | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:16:108:16:128 | userControlled | user-provided value | +| SpringXSS.java:63:12:63:44 | ok(...) | SpringXSS.java:62:64:62:84 | userControlled : String | SpringXSS.java:63:12:63:44 | ok(...) | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:62:64:62:84 | userControlled | user-provided value | +| SpringXSS.java:68:12:68:44 | ok(...) | SpringXSS.java:67:77:67:97 | userControlled : String | SpringXSS.java:68:12:68:44 | ok(...) | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:67:77:67:97 | userControlled | user-provided value | +| SpringXSS.java:73:12:73:44 | ok(...) | SpringXSS.java:72:67:72:87 | userControlled : String | SpringXSS.java:73:12:73:44 | ok(...) | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:72:67:72:87 | userControlled | user-provided value | +| SpringXSS.java:78:70:78:83 | userControlled | SpringXSS.java:77:82:77:102 | userControlled : String | SpringXSS.java:78:70:78:83 | userControlled | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:77:82:77:102 | userControlled | user-provided value | +| SpringXSS.java:91:14:91:46 | ok(...) | SpringXSS.java:87:81:87:101 | userControlled : String | SpringXSS.java:91:14:91:46 | ok(...) | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:87:81:87:101 | userControlled | user-provided value | +| SpringXSS.java:93:14:93:59 | of(...) | SpringXSS.java:87:81:87:101 | userControlled : String | SpringXSS.java:93:14:93:59 | of(...) | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:87:81:87:101 | userControlled | user-provided value | +| SpringXSS.java:95:14:95:53 | body(...) | SpringXSS.java:87:81:87:101 | userControlled : String | SpringXSS.java:95:14:95:53 | body(...) | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:87:81:87:101 | userControlled | user-provided value | +| SpringXSS.java:97:14:97:70 | new ResponseEntity(...) | SpringXSS.java:87:81:87:101 | userControlled : String | SpringXSS.java:97:14:97:70 | new ResponseEntity(...) | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:87:81:87:101 | userControlled | user-provided value | +| SpringXSS.java:118:14:118:46 | ok(...) | SpringXSS.java:117:55:117:75 | userControlled : String | SpringXSS.java:118:14:118:46 | ok(...) | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:117:55:117:75 | userControlled | user-provided value | +| SpringXSS.java:123:72:123:85 | userControlled | SpringXSS.java:122:56:122:76 | userControlled : String | SpringXSS.java:123:72:123:85 | userControlled | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:122:56:122:76 | userControlled | user-provided value | +| SpringXSS.java:132:14:132:46 | ok(...) | SpringXSS.java:131:40:131:60 | userControlled : String | SpringXSS.java:132:14:132:46 | ok(...) | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:131:40:131:60 | userControlled | user-provided value | +| SpringXSS.java:137:14:137:27 | userControlled | SpringXSS.java:136:36:136:56 | userControlled : String | SpringXSS.java:137:14:137:27 | userControlled | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:136:36:136:56 | userControlled | user-provided value | +| SpringXSS.java:153:12:153:44 | ok(...) | SpringXSS.java:152:62:152:82 | userControlled : String | SpringXSS.java:153:12:153:44 | ok(...) | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:152:62:152:82 | userControlled | user-provided value | +| SpringXSS.java:158:12:158:25 | userControlled | SpringXSS.java:157:46:157:66 | userControlled : String | SpringXSS.java:158:12:158:25 | userControlled | Cross-site scripting vulnerability due to a $@. | SpringXSS.java:157:46:157:66 | userControlled | user-provided value | +| XSS.java:19:12:19:77 | ... + ... | XSS.java:19:28:19:55 | getParameter(...) : String | XSS.java:19:12:19:77 | ... + ... | Cross-site scripting vulnerability due to a $@. | XSS.java:19:28:19:55 | getParameter(...) | user-provided value | +| XSS.java:34:30:34:87 | ... + ... | XSS.java:34:67:34:87 | getPathInfo(...) : String | XSS.java:34:30:34:87 | ... + ... | Cross-site scripting vulnerability due to a $@. | XSS.java:34:67:34:87 | getPathInfo(...) | user-provided value | +| XSS.java:37:36:37:67 | getBytes(...) | XSS.java:37:36:37:56 | getPathInfo(...) : String | XSS.java:37:36:37:67 | getBytes(...) | Cross-site scripting vulnerability due to a $@. | XSS.java:37:36:37:56 | getPathInfo(...) | user-provided value | +| XSS.java:83:33:83:53 | getPathInfo(...) | XSS.java:83:33:83:53 | getPathInfo(...) | XSS.java:83:33:83:53 | getPathInfo(...) | Cross-site scripting vulnerability due to a $@. | XSS.java:83:33:83:53 | getPathInfo(...) | user-provided value | +| XSS.java:88:33:88:53 | getPathInfo(...) | XSS.java:88:33:88:53 | getPathInfo(...) | XSS.java:88:33:88:53 | getPathInfo(...) | Cross-site scripting vulnerability due to a $@. | XSS.java:88:33:88:53 | getPathInfo(...) | user-provided value | +| XSS.java:93:33:93:53 | getPathInfo(...) | XSS.java:93:33:93:53 | getPathInfo(...) | XSS.java:93:33:93:53 | getPathInfo(...) | Cross-site scripting vulnerability due to a $@. | XSS.java:93:33:93:53 | getPathInfo(...) | user-provided value | +| XSS.java:100:39:100:70 | getBytes(...) | XSS.java:100:39:100:59 | getPathInfo(...) : String | XSS.java:100:39:100:70 | getBytes(...) | Cross-site scripting vulnerability due to a $@. | XSS.java:100:39:100:59 | getPathInfo(...) | user-provided value | +| XSS.java:105:39:105:70 | getBytes(...) | XSS.java:105:39:105:59 | getPathInfo(...) : String | XSS.java:105:39:105:70 | getBytes(...) | Cross-site scripting vulnerability due to a $@. | XSS.java:105:39:105:59 | getPathInfo(...) | user-provided value | +| XSS.java:110:39:110:70 | getBytes(...) | XSS.java:110:39:110:59 | getPathInfo(...) : String | XSS.java:110:39:110:70 | getBytes(...) | Cross-site scripting vulnerability due to a $@. | XSS.java:110:39:110:59 | getPathInfo(...) | user-provided value | +edges +| JaxXSS.java:15:120:15:140 | userControlled : String | JaxXSS.java:22:59:22:72 | userControlled | provenance | | +| JaxXSS.java:15:120:15:140 | userControlled : String | JaxXSS.java:24:33:24:46 | userControlled | provenance | | +| JaxXSS.java:15:120:15:140 | userControlled : String | JaxXSS.java:29:34:29:47 | userControlled | provenance | | +| JaxXSS.java:15:120:15:140 | userControlled : String | JaxXSS.java:32:62:32:75 | userControlled : String | provenance | | +| JaxXSS.java:32:47:32:76 | entity(...) : ResponseBuilder | JaxXSS.java:33:18:33:25 | builder2 : ResponseBuilder | provenance | | +| JaxXSS.java:32:62:32:75 | userControlled : String | JaxXSS.java:32:47:32:76 | entity(...) : ResponseBuilder | provenance | MaD:17+MaD:18 | +| JaxXSS.java:33:18:33:25 | builder2 : ResponseBuilder | JaxXSS.java:33:18:33:51 | type(...) : ResponseBuilder | provenance | MaD:19 | +| JaxXSS.java:33:18:33:51 | type(...) : ResponseBuilder | JaxXSS.java:33:18:33:59 | build(...) | provenance | MaD:16 | +| JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:108:48:108:61 | userControlled : String | provenance | | +| JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:112:56:112:69 | userControlled : String | provenance | | +| JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:116:61:116:74 | userControlled : String | provenance | | +| JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:120:98:120:111 | userControlled | provenance | | +| JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:124:89:124:102 | userControlled | provenance | | +| JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:128:110:128:123 | userControlled | provenance | | +| JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:132:108:132:121 | userControlled | provenance | | +| JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:136:37:136:50 | userControlled | provenance | | +| JaxXSS.java:59:95:59:115 | userControlled : String | JaxXSS.java:140:28:140:41 | userControlled : String | provenance | | +| JaxXSS.java:108:16:108:62 | entity(...) : ResponseBuilder | JaxXSS.java:108:16:108:70 | build(...) | provenance | MaD:16 | +| JaxXSS.java:108:48:108:61 | userControlled : String | JaxXSS.java:108:16:108:62 | entity(...) : ResponseBuilder | provenance | MaD:17+MaD:18 | +| JaxXSS.java:112:16:112:70 | entity(...) : ResponseBuilder | JaxXSS.java:112:16:112:78 | build(...) | provenance | MaD:16 | +| JaxXSS.java:112:56:112:69 | userControlled : String | JaxXSS.java:112:16:112:70 | entity(...) : ResponseBuilder | provenance | MaD:17+MaD:18 | +| JaxXSS.java:116:16:116:75 | entity(...) : ResponseBuilder | JaxXSS.java:116:16:116:83 | build(...) | provenance | MaD:16 | +| JaxXSS.java:116:61:116:74 | userControlled : String | JaxXSS.java:116:16:116:75 | entity(...) : ResponseBuilder | provenance | MaD:17+MaD:18 | +| JaxXSS.java:140:16:140:42 | ok(...) : ResponseBuilder | JaxXSS.java:140:16:140:73 | type(...) : ResponseBuilder | provenance | MaD:19 | +| JaxXSS.java:140:16:140:73 | type(...) : ResponseBuilder | JaxXSS.java:140:16:140:81 | build(...) | provenance | MaD:16 | +| JaxXSS.java:140:28:140:41 | userControlled : String | JaxXSS.java:140:16:140:42 | ok(...) : ResponseBuilder | provenance | MaD:20 | +| JaxXSS.java:164:50:164:70 | userControlled : String | JaxXSS.java:165:24:165:37 | userControlled : String | provenance | | +| JaxXSS.java:165:12:165:38 | ok(...) : ResponseBuilder | JaxXSS.java:165:12:165:46 | build(...) | provenance | MaD:16 | +| JaxXSS.java:165:24:165:37 | userControlled : String | JaxXSS.java:165:12:165:38 | ok(...) : ResponseBuilder | provenance | MaD:20 | +| JaxXSS.java:169:54:169:74 | userControlled : String | JaxXSS.java:170:24:170:37 | userControlled : String | provenance | | +| JaxXSS.java:170:12:170:38 | ok(...) : ResponseBuilder | JaxXSS.java:170:12:170:46 | build(...) | provenance | MaD:16 | +| JaxXSS.java:170:24:170:37 | userControlled : String | JaxXSS.java:170:12:170:38 | ok(...) : ResponseBuilder | provenance | MaD:20 | +| JaxXSS.java:174:63:174:83 | userControlled : String | JaxXSS.java:175:24:175:37 | userControlled : String | provenance | | +| JaxXSS.java:175:12:175:38 | ok(...) : ResponseBuilder | JaxXSS.java:175:12:175:46 | build(...) | provenance | MaD:16 | +| JaxXSS.java:175:24:175:37 | userControlled : String | JaxXSS.java:175:12:175:38 | ok(...) : ResponseBuilder | provenance | MaD:20 | +| JaxXSS.java:179:53:179:73 | userControlled : String | JaxXSS.java:180:24:180:37 | userControlled : String | provenance | | +| JaxXSS.java:180:12:180:38 | ok(...) : ResponseBuilder | JaxXSS.java:180:12:180:46 | build(...) | provenance | MaD:16 | +| JaxXSS.java:180:24:180:37 | userControlled : String | JaxXSS.java:180:12:180:38 | ok(...) : ResponseBuilder | provenance | MaD:20 | +| JaxXSS.java:184:68:184:88 | userControlled : String | JaxXSS.java:185:59:185:72 | userControlled | provenance | | +| JaxXSS.java:207:41:207:61 | userControlled : String | JaxXSS.java:208:26:208:39 | userControlled : String | provenance | | +| JaxXSS.java:208:14:208:40 | ok(...) : ResponseBuilder | JaxXSS.java:208:14:208:48 | build(...) | provenance | MaD:16 | +| JaxXSS.java:208:26:208:39 | userControlled : String | JaxXSS.java:208:14:208:40 | ok(...) : ResponseBuilder | provenance | MaD:20 | +| JaxXSS.java:212:42:212:62 | userControlled : String | JaxXSS.java:213:61:213:74 | userControlled | provenance | | +| JaxXSS.java:221:26:221:46 | userControlled : String | JaxXSS.java:222:26:222:39 | userControlled : String | provenance | | +| JaxXSS.java:222:14:222:40 | ok(...) : ResponseBuilder | JaxXSS.java:222:14:222:48 | build(...) | provenance | MaD:16 | +| JaxXSS.java:222:26:222:39 | userControlled : String | JaxXSS.java:222:14:222:40 | ok(...) : ResponseBuilder | provenance | MaD:20 | +| JaxXSS.java:226:36:226:56 | userControlled : String | JaxXSS.java:227:14:227:27 | userControlled | provenance | | +| JaxXSS.java:242:48:242:68 | userControlled : String | JaxXSS.java:243:24:243:37 | userControlled : String | provenance | | +| JaxXSS.java:243:12:243:38 | ok(...) : ResponseBuilder | JaxXSS.java:243:12:243:46 | build(...) | provenance | MaD:16 | +| JaxXSS.java:243:24:243:37 | userControlled : String | JaxXSS.java:243:12:243:38 | ok(...) : ResponseBuilder | provenance | MaD:20 | +| JaxXSS.java:247:46:247:66 | userControlled : String | JaxXSS.java:248:12:248:25 | userControlled | provenance | | +| JsfXSS.java:21:50:21:107 | getRequestParameterMap(...) : Map | JsfXSS.java:22:27:22:43 | requestParameters : Map | provenance | Src:MaD:5 | +| JsfXSS.java:22:27:22:43 | requestParameters : Map | JsfXSS.java:22:27:22:60 | get(...) : String | provenance | MaD:13 | +| JsfXSS.java:22:27:22:60 | get(...) : String | JsfXSS.java:27:22:29:27 | ... + ... | provenance | Sink:MaD:2 | +| JsfXSS.java:60:22:60:48 | getRequestParameterMap(...) : Map | JsfXSS.java:60:22:60:57 | keySet(...) : Set [] : Object | provenance | Src:MaD:5 MaD:14 | +| JsfXSS.java:60:22:60:57 | keySet(...) : Set [] : Object | JsfXSS.java:60:22:60:68 | iterator(...) : Iterator [] : Object | provenance | MaD:10 | +| JsfXSS.java:60:22:60:68 | iterator(...) : Iterator [] : Object | JsfXSS.java:60:22:60:75 | next(...) | provenance | MaD:12 Sink:MaD:2 | +| JsfXSS.java:61:22:61:50 | getRequestParameterNames(...) : Iterator | JsfXSS.java:61:22:61:57 | next(...) | provenance | Src:MaD:6 MaD:12 Sink:MaD:2 | +| JsfXSS.java:62:22:62:54 | getRequestParameterValuesMap(...) : Map | JsfXSS.java:62:22:62:69 | get(...) : String[] | provenance | Src:MaD:7 MaD:13 | +| JsfXSS.java:62:22:62:69 | get(...) : String[] | JsfXSS.java:62:22:62:72 | ...[...] | provenance | Sink:MaD:2 | +| JsfXSS.java:63:22:63:54 | getRequestParameterValuesMap(...) : Map | JsfXSS.java:63:22:63:63 | keySet(...) : Set [] : Object | provenance | Src:MaD:7 MaD:14 | +| JsfXSS.java:63:22:63:63 | keySet(...) : Set [] : Object | JsfXSS.java:63:22:63:74 | iterator(...) : Iterator [] : Object | provenance | MaD:10 | +| JsfXSS.java:63:22:63:74 | iterator(...) : Iterator [] : Object | JsfXSS.java:63:22:63:81 | next(...) | provenance | MaD:12 Sink:MaD:2 | +| JsfXSS.java:66:22:66:45 | getRequestHeaderMap(...) : Map | JsfXSS.java:66:22:66:60 | get(...) | provenance | Src:MaD:3 MaD:13 Sink:MaD:2 | +| JsfXSS.java:67:22:67:51 | getRequestHeaderValuesMap(...) : Map | JsfXSS.java:67:22:67:66 | get(...) : String[] | provenance | Src:MaD:4 MaD:13 | +| JsfXSS.java:67:22:67:66 | get(...) : String[] | JsfXSS.java:67:22:67:69 | ...[...] | provenance | Sink:MaD:2 | +| SpringXSS.java:16:108:16:128 | userControlled : String | SpringXSS.java:22:62:22:75 | userControlled | provenance | | +| SpringXSS.java:16:108:16:128 | userControlled : String | SpringXSS.java:26:30:26:43 | userControlled | provenance | | +| SpringXSS.java:62:64:62:84 | userControlled : String | SpringXSS.java:63:12:63:44 | ok(...) | provenance | SpringResponseEntity | +| SpringXSS.java:62:64:62:84 | userControlled : String | SpringXSS.java:63:30:63:43 | userControlled : String | provenance | | +| SpringXSS.java:63:30:63:43 | userControlled : String | SpringXSS.java:63:12:63:44 | ok(...) | provenance | MaD:24 | +| SpringXSS.java:67:77:67:97 | userControlled : String | SpringXSS.java:68:12:68:44 | ok(...) | provenance | SpringResponseEntity | +| SpringXSS.java:67:77:67:97 | userControlled : String | SpringXSS.java:68:30:68:43 | userControlled : String | provenance | | +| SpringXSS.java:68:30:68:43 | userControlled : String | SpringXSS.java:68:12:68:44 | ok(...) | provenance | MaD:24 | +| SpringXSS.java:72:67:72:87 | userControlled : String | SpringXSS.java:73:12:73:44 | ok(...) | provenance | SpringResponseEntity | +| SpringXSS.java:72:67:72:87 | userControlled : String | SpringXSS.java:73:30:73:43 | userControlled : String | provenance | | +| SpringXSS.java:73:30:73:43 | userControlled : String | SpringXSS.java:73:12:73:44 | ok(...) | provenance | MaD:24 | +| SpringXSS.java:77:82:77:102 | userControlled : String | SpringXSS.java:78:70:78:83 | userControlled | provenance | | +| SpringXSS.java:87:81:87:101 | userControlled : String | SpringXSS.java:91:14:91:46 | ok(...) | provenance | SpringResponseEntity | +| SpringXSS.java:87:81:87:101 | userControlled : String | SpringXSS.java:91:32:91:45 | userControlled : String | provenance | | +| SpringXSS.java:87:81:87:101 | userControlled : String | SpringXSS.java:93:44:93:57 | userControlled : String | provenance | | +| SpringXSS.java:87:81:87:101 | userControlled : String | SpringXSS.java:95:14:95:53 | body(...) | provenance | SpringResponseEntityBodyBuilder | +| SpringXSS.java:87:81:87:101 | userControlled : String | SpringXSS.java:95:39:95:52 | userControlled : String | provenance | | +| SpringXSS.java:87:81:87:101 | userControlled : String | SpringXSS.java:97:41:97:54 | userControlled : String | provenance | | +| SpringXSS.java:91:32:91:45 | userControlled : String | SpringXSS.java:91:14:91:46 | ok(...) | provenance | MaD:24 | +| SpringXSS.java:93:32:93:58 | of(...) : Optional [] : String | SpringXSS.java:93:14:93:59 | of(...) | provenance | MaD:23 | +| SpringXSS.java:93:44:93:57 | userControlled : String | SpringXSS.java:93:32:93:58 | of(...) : Optional [] : String | provenance | MaD:15 | +| SpringXSS.java:95:39:95:52 | userControlled : String | SpringXSS.java:95:14:95:53 | body(...) | provenance | MaD:21 | +| SpringXSS.java:97:41:97:54 | userControlled : String | SpringXSS.java:97:14:97:70 | new ResponseEntity(...) | provenance | MaD:22 | +| SpringXSS.java:117:55:117:75 | userControlled : String | SpringXSS.java:118:14:118:46 | ok(...) | provenance | SpringResponseEntity | +| SpringXSS.java:117:55:117:75 | userControlled : String | SpringXSS.java:118:32:118:45 | userControlled : String | provenance | | +| SpringXSS.java:118:32:118:45 | userControlled : String | SpringXSS.java:118:14:118:46 | ok(...) | provenance | MaD:24 | +| SpringXSS.java:122:56:122:76 | userControlled : String | SpringXSS.java:123:72:123:85 | userControlled | provenance | | +| SpringXSS.java:131:40:131:60 | userControlled : String | SpringXSS.java:132:14:132:46 | ok(...) | provenance | SpringResponseEntity | +| SpringXSS.java:131:40:131:60 | userControlled : String | SpringXSS.java:132:32:132:45 | userControlled : String | provenance | | +| SpringXSS.java:132:32:132:45 | userControlled : String | SpringXSS.java:132:14:132:46 | ok(...) | provenance | MaD:24 | +| SpringXSS.java:136:36:136:56 | userControlled : String | SpringXSS.java:137:14:137:27 | userControlled | provenance | | +| SpringXSS.java:152:62:152:82 | userControlled : String | SpringXSS.java:153:12:153:44 | ok(...) | provenance | SpringResponseEntity | +| SpringXSS.java:152:62:152:82 | userControlled : String | SpringXSS.java:153:30:153:43 | userControlled : String | provenance | | +| SpringXSS.java:153:30:153:43 | userControlled : String | SpringXSS.java:153:12:153:44 | ok(...) | provenance | MaD:24 | +| SpringXSS.java:157:46:157:66 | userControlled : String | SpringXSS.java:158:12:158:25 | userControlled | provenance | | +| XSS.java:19:28:19:55 | getParameter(...) : String | XSS.java:19:12:19:77 | ... + ... | provenance | Src:MaD:9 Sink:MaD:1 | +| XSS.java:34:67:34:87 | getPathInfo(...) : String | XSS.java:34:30:34:87 | ... + ... | provenance | Src:MaD:8 Sink:MaD:1 | +| XSS.java:37:36:37:56 | getPathInfo(...) : String | XSS.java:37:36:37:67 | getBytes(...) | provenance | Src:MaD:8 MaD:11 | +| XSS.java:100:39:100:59 | getPathInfo(...) : String | XSS.java:100:39:100:70 | getBytes(...) | provenance | Src:MaD:8 MaD:11 | +| XSS.java:105:39:105:59 | getPathInfo(...) : String | XSS.java:105:39:105:70 | getBytes(...) | provenance | Src:MaD:8 MaD:11 | +| XSS.java:110:39:110:59 | getPathInfo(...) : String | XSS.java:110:39:110:70 | getBytes(...) | provenance | Src:MaD:8 MaD:11 | +models +| 1 | Sink: java.io; PrintWriter; false; print; ; ; Argument[0]; file-content-store; manual | +| 2 | Sink: java.io; Writer; true; write; ; ; Argument[0]; file-content-store; manual | +| 3 | Source: javax.faces.context; ExternalContext; true; getRequestHeaderMap; (); ; ReturnValue; remote; manual | +| 4 | Source: javax.faces.context; ExternalContext; true; getRequestHeaderValuesMap; (); ; ReturnValue; remote; manual | +| 5 | Source: javax.faces.context; ExternalContext; true; getRequestParameterMap; (); ; ReturnValue; remote; manual | +| 6 | Source: javax.faces.context; ExternalContext; true; getRequestParameterNames; (); ; ReturnValue; remote; manual | +| 7 | Source: javax.faces.context; ExternalContext; true; getRequestParameterValuesMap; (); ; ReturnValue; remote; manual | +| 8 | Source: javax.servlet.http; HttpServletRequest; false; getPathInfo; (); ; ReturnValue; remote; manual | +| 9 | Source: javax.servlet; ServletRequest; false; getParameter; (String); ; ReturnValue; remote; manual | +| 10 | Summary: java.lang; Iterable; true; iterator; (); ; Argument[this].Element; ReturnValue.Element; value; manual | +| 11 | Summary: java.lang; String; false; getBytes; ; ; Argument[this]; ReturnValue; taint; manual | +| 12 | Summary: java.util; Iterator; true; next; ; ; Argument[this].Element; ReturnValue; value; manual | +| 13 | Summary: java.util; Map; true; get; ; ; Argument[this].MapValue; ReturnValue; value; manual | +| 14 | Summary: java.util; Map; true; keySet; (); ; Argument[this].MapKey; ReturnValue.Element; value; manual | +| 15 | Summary: java.util; Optional; false; of; ; ; Argument[0]; ReturnValue.Element; value; manual | +| 16 | Summary: javax.ws.rs.core; Response$ResponseBuilder; true; build; ; ; Argument[this]; ReturnValue; taint; manual | +| 17 | Summary: javax.ws.rs.core; Response$ResponseBuilder; true; entity; ; ; Argument[0]; Argument[this]; taint; manual | +| 18 | Summary: javax.ws.rs.core; Response$ResponseBuilder; true; entity; ; ; Argument[this]; ReturnValue; value; manual | +| 19 | Summary: javax.ws.rs.core; Response$ResponseBuilder; true; type; ; ; Argument[this]; ReturnValue; value; manual | +| 20 | Summary: javax.ws.rs.core; Response; false; ok; ; ; Argument[0]; ReturnValue; taint; manual | +| 21 | Summary: org.springframework.http; ResponseEntity$BodyBuilder; true; body; (Object); ; Argument[0]; ReturnValue; taint; manual | +| 22 | Summary: org.springframework.http; ResponseEntity; true; ResponseEntity; (Object,HttpStatus); ; Argument[0]; Argument[this]; taint; manual | +| 23 | Summary: org.springframework.http; ResponseEntity; true; of; (Optional); ; Argument[0].Element; ReturnValue; taint; manual | +| 24 | Summary: org.springframework.http; ResponseEntity; true; ok; (Object); ; Argument[0]; ReturnValue; taint; manual | +nodes +| JaxXSS.java:15:120:15:140 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:22:59:22:72 | userControlled | semmle.label | userControlled | +| JaxXSS.java:24:33:24:46 | userControlled | semmle.label | userControlled | +| JaxXSS.java:29:34:29:47 | userControlled | semmle.label | userControlled | +| JaxXSS.java:32:47:32:76 | entity(...) : ResponseBuilder | semmle.label | entity(...) : ResponseBuilder | +| JaxXSS.java:32:62:32:75 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:33:18:33:25 | builder2 : ResponseBuilder | semmle.label | builder2 : ResponseBuilder | +| JaxXSS.java:33:18:33:51 | type(...) : ResponseBuilder | semmle.label | type(...) : ResponseBuilder | +| JaxXSS.java:33:18:33:59 | build(...) | semmle.label | build(...) | +| JaxXSS.java:59:95:59:115 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:108:16:108:62 | entity(...) : ResponseBuilder | semmle.label | entity(...) : ResponseBuilder | +| JaxXSS.java:108:16:108:70 | build(...) | semmle.label | build(...) | +| JaxXSS.java:108:48:108:61 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:112:16:112:70 | entity(...) : ResponseBuilder | semmle.label | entity(...) : ResponseBuilder | +| JaxXSS.java:112:16:112:78 | build(...) | semmle.label | build(...) | +| JaxXSS.java:112:56:112:69 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:116:16:116:75 | entity(...) : ResponseBuilder | semmle.label | entity(...) : ResponseBuilder | +| JaxXSS.java:116:16:116:83 | build(...) | semmle.label | build(...) | +| JaxXSS.java:116:61:116:74 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:120:98:120:111 | userControlled | semmle.label | userControlled | +| JaxXSS.java:124:89:124:102 | userControlled | semmle.label | userControlled | +| JaxXSS.java:128:110:128:123 | userControlled | semmle.label | userControlled | +| JaxXSS.java:132:108:132:121 | userControlled | semmle.label | userControlled | +| JaxXSS.java:136:37:136:50 | userControlled | semmle.label | userControlled | +| JaxXSS.java:140:16:140:42 | ok(...) : ResponseBuilder | semmle.label | ok(...) : ResponseBuilder | +| JaxXSS.java:140:16:140:73 | type(...) : ResponseBuilder | semmle.label | type(...) : ResponseBuilder | +| JaxXSS.java:140:16:140:81 | build(...) | semmle.label | build(...) | +| JaxXSS.java:140:28:140:41 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:164:50:164:70 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:165:12:165:38 | ok(...) : ResponseBuilder | semmle.label | ok(...) : ResponseBuilder | +| JaxXSS.java:165:12:165:46 | build(...) | semmle.label | build(...) | +| JaxXSS.java:165:24:165:37 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:169:54:169:74 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:170:12:170:38 | ok(...) : ResponseBuilder | semmle.label | ok(...) : ResponseBuilder | +| JaxXSS.java:170:12:170:46 | build(...) | semmle.label | build(...) | +| JaxXSS.java:170:24:170:37 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:174:63:174:83 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:175:12:175:38 | ok(...) : ResponseBuilder | semmle.label | ok(...) : ResponseBuilder | +| JaxXSS.java:175:12:175:46 | build(...) | semmle.label | build(...) | +| JaxXSS.java:175:24:175:37 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:179:53:179:73 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:180:12:180:38 | ok(...) : ResponseBuilder | semmle.label | ok(...) : ResponseBuilder | +| JaxXSS.java:180:12:180:46 | build(...) | semmle.label | build(...) | +| JaxXSS.java:180:24:180:37 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:184:68:184:88 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:185:59:185:72 | userControlled | semmle.label | userControlled | +| JaxXSS.java:207:41:207:61 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:208:14:208:40 | ok(...) : ResponseBuilder | semmle.label | ok(...) : ResponseBuilder | +| JaxXSS.java:208:14:208:48 | build(...) | semmle.label | build(...) | +| JaxXSS.java:208:26:208:39 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:212:42:212:62 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:213:61:213:74 | userControlled | semmle.label | userControlled | +| JaxXSS.java:221:26:221:46 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:222:14:222:40 | ok(...) : ResponseBuilder | semmle.label | ok(...) : ResponseBuilder | +| JaxXSS.java:222:14:222:48 | build(...) | semmle.label | build(...) | +| JaxXSS.java:222:26:222:39 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:226:36:226:56 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:227:14:227:27 | userControlled | semmle.label | userControlled | +| JaxXSS.java:242:48:242:68 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:243:12:243:38 | ok(...) : ResponseBuilder | semmle.label | ok(...) : ResponseBuilder | +| JaxXSS.java:243:12:243:46 | build(...) | semmle.label | build(...) | +| JaxXSS.java:243:24:243:37 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:247:46:247:66 | userControlled : String | semmle.label | userControlled : String | +| JaxXSS.java:248:12:248:25 | userControlled | semmle.label | userControlled | +| JsfXSS.java:21:50:21:107 | getRequestParameterMap(...) : Map | semmle.label | getRequestParameterMap(...) : Map | +| JsfXSS.java:22:27:22:43 | requestParameters : Map | semmle.label | requestParameters : Map | +| JsfXSS.java:22:27:22:60 | get(...) : String | semmle.label | get(...) : String | +| JsfXSS.java:27:22:29:27 | ... + ... | semmle.label | ... + ... | +| JsfXSS.java:60:22:60:48 | getRequestParameterMap(...) : Map | semmle.label | getRequestParameterMap(...) : Map | +| JsfXSS.java:60:22:60:57 | keySet(...) : Set [] : Object | semmle.label | keySet(...) : Set [] : Object | +| JsfXSS.java:60:22:60:68 | iterator(...) : Iterator [] : Object | semmle.label | iterator(...) : Iterator [] : Object | +| JsfXSS.java:60:22:60:75 | next(...) | semmle.label | next(...) | +| JsfXSS.java:61:22:61:50 | getRequestParameterNames(...) : Iterator | semmle.label | getRequestParameterNames(...) : Iterator | +| JsfXSS.java:61:22:61:57 | next(...) | semmle.label | next(...) | +| JsfXSS.java:62:22:62:54 | getRequestParameterValuesMap(...) : Map | semmle.label | getRequestParameterValuesMap(...) : Map | +| JsfXSS.java:62:22:62:69 | get(...) : String[] | semmle.label | get(...) : String[] | +| JsfXSS.java:62:22:62:72 | ...[...] | semmle.label | ...[...] | +| JsfXSS.java:63:22:63:54 | getRequestParameterValuesMap(...) : Map | semmle.label | getRequestParameterValuesMap(...) : Map | +| JsfXSS.java:63:22:63:63 | keySet(...) : Set [] : Object | semmle.label | keySet(...) : Set [] : Object | +| JsfXSS.java:63:22:63:74 | iterator(...) : Iterator [] : Object | semmle.label | iterator(...) : Iterator [] : Object | +| JsfXSS.java:63:22:63:81 | next(...) | semmle.label | next(...) | +| JsfXSS.java:64:22:64:44 | getRequestPathInfo(...) | semmle.label | getRequestPathInfo(...) | +| JsfXSS.java:65:22:65:80 | getName(...) | semmle.label | getName(...) | +| JsfXSS.java:66:22:66:45 | getRequestHeaderMap(...) : Map | semmle.label | getRequestHeaderMap(...) : Map | +| JsfXSS.java:66:22:66:60 | get(...) | semmle.label | get(...) | +| JsfXSS.java:67:22:67:51 | getRequestHeaderValuesMap(...) : Map | semmle.label | getRequestHeaderValuesMap(...) : Map | +| JsfXSS.java:67:22:67:66 | get(...) : String[] | semmle.label | get(...) : String[] | +| JsfXSS.java:67:22:67:69 | ...[...] | semmle.label | ...[...] | +| SpringXSS.java:16:108:16:128 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:22:62:22:75 | userControlled | semmle.label | userControlled | +| SpringXSS.java:26:30:26:43 | userControlled | semmle.label | userControlled | +| SpringXSS.java:62:64:62:84 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:63:12:63:44 | ok(...) | semmle.label | ok(...) | +| SpringXSS.java:63:30:63:43 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:67:77:67:97 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:68:12:68:44 | ok(...) | semmle.label | ok(...) | +| SpringXSS.java:68:30:68:43 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:72:67:72:87 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:73:12:73:44 | ok(...) | semmle.label | ok(...) | +| SpringXSS.java:73:30:73:43 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:77:82:77:102 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:78:70:78:83 | userControlled | semmle.label | userControlled | +| SpringXSS.java:87:81:87:101 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:91:14:91:46 | ok(...) | semmle.label | ok(...) | +| SpringXSS.java:91:32:91:45 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:93:14:93:59 | of(...) | semmle.label | of(...) | +| SpringXSS.java:93:32:93:58 | of(...) : Optional [] : String | semmle.label | of(...) : Optional [] : String | +| SpringXSS.java:93:44:93:57 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:95:14:95:53 | body(...) | semmle.label | body(...) | +| SpringXSS.java:95:39:95:52 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:97:14:97:70 | new ResponseEntity(...) | semmle.label | new ResponseEntity(...) | +| SpringXSS.java:97:41:97:54 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:117:55:117:75 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:118:14:118:46 | ok(...) | semmle.label | ok(...) | +| SpringXSS.java:118:32:118:45 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:122:56:122:76 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:123:72:123:85 | userControlled | semmle.label | userControlled | +| SpringXSS.java:131:40:131:60 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:132:14:132:46 | ok(...) | semmle.label | ok(...) | +| SpringXSS.java:132:32:132:45 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:136:36:136:56 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:137:14:137:27 | userControlled | semmle.label | userControlled | +| SpringXSS.java:152:62:152:82 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:153:12:153:44 | ok(...) | semmle.label | ok(...) | +| SpringXSS.java:153:30:153:43 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:157:46:157:66 | userControlled : String | semmle.label | userControlled : String | +| SpringXSS.java:158:12:158:25 | userControlled | semmle.label | userControlled | +| XSS.java:19:12:19:77 | ... + ... | semmle.label | ... + ... | +| XSS.java:19:28:19:55 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| XSS.java:34:30:34:87 | ... + ... | semmle.label | ... + ... | +| XSS.java:34:67:34:87 | getPathInfo(...) : String | semmle.label | getPathInfo(...) : String | +| XSS.java:37:36:37:56 | getPathInfo(...) : String | semmle.label | getPathInfo(...) : String | +| XSS.java:37:36:37:67 | getBytes(...) | semmle.label | getBytes(...) | +| XSS.java:83:33:83:53 | getPathInfo(...) | semmle.label | getPathInfo(...) | +| XSS.java:88:33:88:53 | getPathInfo(...) | semmle.label | getPathInfo(...) | +| XSS.java:93:33:93:53 | getPathInfo(...) | semmle.label | getPathInfo(...) | +| XSS.java:100:39:100:59 | getPathInfo(...) : String | semmle.label | getPathInfo(...) : String | +| XSS.java:100:39:100:70 | getBytes(...) | semmle.label | getBytes(...) | +| XSS.java:105:39:105:59 | getPathInfo(...) : String | semmle.label | getPathInfo(...) : String | +| XSS.java:105:39:105:70 | getBytes(...) | semmle.label | getBytes(...) | +| XSS.java:110:39:110:59 | getPathInfo(...) : String | semmle.label | getPathInfo(...) : String | +| XSS.java:110:39:110:70 | getBytes(...) | semmle.label | getBytes(...) | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.java b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.java index 3584c45d8b2b..13ae6b62e10c 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.java +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.java @@ -16,7 +16,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response, b throws ServletException, IOException { // BAD: a request parameter is written directly to the Servlet response stream response.getWriter() - .print("The page \"" + request.getParameter("page") + "\" was not found."); // $ xss + .print("The page \"" + request.getParameter("page") + "\" was not found."); // $ Alert // GOOD: servlet API encodes the error message HTML for the HTML context response.sendError(HttpServletResponse.SC_NOT_FOUND, @@ -31,10 +31,10 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response, b "The page \"" + capitalizeName(request.getParameter("page")) + "\" was not found."); // BAD: outputting the path of the resource - response.getWriter().print("The path section of the URL was " + request.getPathInfo()); // $ xss + response.getWriter().print("The path section of the URL was " + request.getPathInfo()); // $ Alert // BAD: typical XSS, this time written to an OutputStream instead of a Writer - response.getOutputStream().write(request.getPathInfo().getBytes()); // $ xss + response.getOutputStream().write(request.getPathInfo().getBytes()); // $ Alert // GOOD: sanitizer response.getOutputStream().write(hudson.Util.escape(request.getPathInfo()).getBytes()); // safe @@ -80,34 +80,34 @@ else if(setContentMethod == 1) { if(setContentMethod == 0) { // BAD: set content-type to something that is not safe response.setContentType("text/html"); - response.getWriter().print(request.getPathInfo()); // $ xss + response.getWriter().print(request.getPathInfo()); // $ Alert } else if(setContentMethod == 1) { // BAD: set content-type to something that is not safe response.setHeader("Content-Type", "text/html"); - response.getWriter().print(request.getPathInfo()); // $ xss + response.getWriter().print(request.getPathInfo()); // $ Alert } else { // BAD: set content-type to something that is not safe response.addHeader("Content-Type", "text/html"); - response.getWriter().print(request.getPathInfo()); // $ xss + response.getWriter().print(request.getPathInfo()); // $ Alert } } else { if(setContentMethod == 0) { // BAD: set content-type to something that is not safe response.setContentType("text/html"); - response.getOutputStream().write(request.getPathInfo().getBytes()); // $ xss + response.getOutputStream().write(request.getPathInfo().getBytes()); // $ Alert } else if(setContentMethod == 1) { // BAD: set content-type to something that is not safe response.setHeader("Content-Type", "text/html"); - response.getOutputStream().write(request.getPathInfo().getBytes()); // $ xss + response.getOutputStream().write(request.getPathInfo().getBytes()); // $ Alert } else { // BAD: set content-type to something that is not safe response.addHeader("Content-Type", "text/html"); - response.getOutputStream().write(request.getPathInfo().getBytes()); // $ xss + response.getOutputStream().write(request.getPathInfo().getBytes()); // $ Alert } } } diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.ql b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.ql deleted file mode 100644 index 271488ffb1f0..000000000000 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import semmle.code.java.security.XssQuery -import utils.test.InlineExpectationsTest - -module XssTest implements TestSig { - string getARelevantTag() { result = "xss" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "xss" and - exists(DataFlow::Node sink | XssFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.qlref b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.qlref new file mode 100644 index 000000000000..bff2f2538a29 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-079/XSS.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.expected b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.ql b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.ql deleted file mode 100644 index a4efceebc189..000000000000 --- a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.ql +++ /dev/null @@ -1,19 +0,0 @@ -import java -import semmle.code.java.dataflow.DataFlow -import semmle.code.java.security.ArbitraryApkInstallationQuery -import utils.test.InlineExpectationsTest - -module HasApkInstallationTest implements TestSig { - string getARelevantTag() { result = "hasApkInstallation" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasApkInstallation" and - exists(DataFlow::Node sink | ApkInstallationFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/ApkInstallation.java b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest/ApkInstallation.java similarity index 83% rename from java/ql/test/query-tests/security/CWE-094/ApkInstallation.java rename to java/ql/test/query-tests/security/CWE-094/ApkInstallationTest/ApkInstallation.java index 680ad6330839..ee6a0c56b709 100644 --- a/java/ql/test/query-tests/security/CWE-094/ApkInstallation.java +++ b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest/ApkInstallation.java @@ -11,7 +11,7 @@ public class ApkInstallation extends Activity { public void installAPK(String path) { // BAD: the path is not checked Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setDataAndType(Uri.fromFile(new File(path)), "application/vnd.android.package-archive"); // $ hasApkInstallation + intent.setDataAndType(Uri.fromFile(new File(path)), "application/vnd.android.package-archive"); // $ Alert startActivity(intent); } @@ -19,7 +19,7 @@ public void installAPK3(String path) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setType(APK_MIMETYPE); // BAD: the path is not checked - intent.setData(Uri.fromFile(new File(path))); // $ hasApkInstallation + intent.setData(Uri.fromFile(new File(path))); // $ Alert startActivity(intent); } @@ -27,7 +27,7 @@ public void installAPKFromExternalStorage(String path) { // BAD: file is from external storage File file = new File(Environment.getExternalStorageDirectory(), path); Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setDataAndType(Uri.fromFile(file), APK_MIMETYPE); // $ hasApkInstallation + intent.setDataAndType(Uri.fromFile(file), APK_MIMETYPE); // $ Alert startActivity(intent); } @@ -35,14 +35,14 @@ public void installAPKFromExternalStorageWithActionInstallPackage(String path) { // BAD: file is from external storage File file = new File(Environment.getExternalStorageDirectory(), path); Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE); - intent.setData(Uri.fromFile(file)); // $ hasApkInstallation + intent.setData(Uri.fromFile(file)); // $ Alert startActivity(intent); } public void installAPKInstallPackageLiteral(String path) { File file = new File(Environment.getExternalStorageDirectory(), path); Intent intent = new Intent("android.intent.action.INSTALL_PACKAGE"); - intent.setData(Uri.fromFile(file)); // $ hasApkInstallation + intent.setData(Uri.fromFile(file)); // $ Alert startActivity(intent); } @@ -50,7 +50,7 @@ public void otherIntent(File file) { Intent intent = new Intent(this, OtherActivity.class); intent.setAction(Intent.ACTION_VIEW); // BAD: the file is from unknown source - intent.setData(Uri.fromFile(file)); // $ hasApkInstallation + intent.setData(Uri.fromFile(file)); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest/ApkInstallationTest.expected b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest/ApkInstallationTest.expected new file mode 100644 index 000000000000..7a6b0ccde886 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest/ApkInstallationTest.expected @@ -0,0 +1,16 @@ +#select +| ApkInstallation.java:14:31:14:58 | fromFile(...) | ApkInstallation.java:14:31:14:58 | fromFile(...) | ApkInstallation.java:14:31:14:58 | fromFile(...) | Arbitrary Android APK installation. | +| ApkInstallation.java:22:24:22:51 | fromFile(...) | ApkInstallation.java:22:24:22:51 | fromFile(...) | ApkInstallation.java:22:24:22:51 | fromFile(...) | Arbitrary Android APK installation. | +| ApkInstallation.java:30:31:30:48 | fromFile(...) | ApkInstallation.java:30:31:30:48 | fromFile(...) | ApkInstallation.java:30:31:30:48 | fromFile(...) | Arbitrary Android APK installation. | +| ApkInstallation.java:38:24:38:41 | fromFile(...) | ApkInstallation.java:38:24:38:41 | fromFile(...) | ApkInstallation.java:38:24:38:41 | fromFile(...) | Arbitrary Android APK installation. | +| ApkInstallation.java:45:24:45:41 | fromFile(...) | ApkInstallation.java:45:24:45:41 | fromFile(...) | ApkInstallation.java:45:24:45:41 | fromFile(...) | Arbitrary Android APK installation. | +| ApkInstallation.java:53:24:53:41 | fromFile(...) | ApkInstallation.java:53:24:53:41 | fromFile(...) | ApkInstallation.java:53:24:53:41 | fromFile(...) | Arbitrary Android APK installation. | +edges +nodes +| ApkInstallation.java:14:31:14:58 | fromFile(...) | semmle.label | fromFile(...) | +| ApkInstallation.java:22:24:22:51 | fromFile(...) | semmle.label | fromFile(...) | +| ApkInstallation.java:30:31:30:48 | fromFile(...) | semmle.label | fromFile(...) | +| ApkInstallation.java:38:24:38:41 | fromFile(...) | semmle.label | fromFile(...) | +| ApkInstallation.java:45:24:45:41 | fromFile(...) | semmle.label | fromFile(...) | +| ApkInstallation.java:53:24:53:41 | fromFile(...) | semmle.label | fromFile(...) | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest/ApkInstallationTest.qlref b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest/ApkInstallationTest.qlref new file mode 100644 index 000000000000..7566db8af78d --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest/ApkInstallationTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-094/ArbitraryApkInstallation.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest/options b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest/options new file mode 100644 index 000000000000..d7c8332682ba --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/validation-api-2.0.1.Final:${testdir}/../../../../stubs/springframework-5.8.x:${testdir}/../../../../stubs/apache-commons-jexl-2.1.1:${testdir}/../../../../stubs/apache-commons-jexl-3.1:${testdir}/../../../../stubs/apache-commons-logging-1.2:${testdir}/../../../../stubs/mvel2-2.4.7:${testdir}/../../../../stubs/groovy-all-3.0.7:${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/scriptengine:${testdir}/../../../../stubs/jsr223-api:${testdir}/../../../../stubs/apache-freemarker-2.3.31:${testdir}/../../../../stubs/jinjava-2.6.0:${testdir}/../../../../stubs/pebble-3.1.5:${testdir}/../../../../stubs/thymeleaf-3.0.14:${testdir}/../../../../stubs/apache-velocity-2.3:${testdir}/../../../..//stubs/google-android-9.0.0 diff --git a/java/ql/test/query-tests/security/CWE-094/FreemarkerSSTI.java b/java/ql/test/query-tests/security/CWE-094/FreemarkerSSTI.java deleted file mode 100644 index 31eb634a5fe4..000000000000 --- a/java/ql/test/query-tests/security/CWE-094/FreemarkerSSTI.java +++ /dev/null @@ -1,117 +0,0 @@ -import javax.servlet.http.HttpServletRequest; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; - -import java.lang.String; -import java.io.Reader; -import java.io.StringReader; -import java.io.OutputStreamWriter; -import java.util.HashMap; - -import freemarker.template.Template; -import freemarker.template.Configuration; -import freemarker.cache.StringTemplateLoader; -import freemarker.core.ParserConfiguration; - -@Controller -public class FreemarkerSSTI { - String sourceName = "sourceName"; - - @GetMapping(value = "bad1") - public void bad1(HttpServletRequest request) { - String name = "ttemplate"; - String code = request.getParameter("code"); - Reader reader = new StringReader(code); - - Template t = new Template(name, reader); // $hasTemplateInjection - } - - @GetMapping(value = "bad2") - public void bad2(HttpServletRequest request) { - String name = "ttemplate"; - String code = request.getParameter("code"); - Reader reader = new StringReader(code); - Configuration cfg = new Configuration(); - - Template t = new Template(name, reader, cfg); // $hasTemplateInjection - } - - @GetMapping(value = "bad3") - public void bad3(HttpServletRequest request) { - String name = "ttemplate"; - String code = request.getParameter("code"); - Reader reader = new StringReader(code); - Configuration cfg = new Configuration(); - - Template t = new Template(name, reader, cfg, "UTF-8"); // $hasTemplateInjection - } - - @GetMapping(value = "bad4") - public void bad4(HttpServletRequest request) { - String name = "ttemplate"; - String sourceCode = request.getParameter("sourceCode"); - Configuration cfg = new Configuration(); - - Template t = new Template(name, sourceCode, cfg); // $hasTemplateInjection - } - - @GetMapping(value = "bad5") - public void bad5(HttpServletRequest request) { - String name = "ttemplate"; - String code = request.getParameter("code"); - Configuration cfg = new Configuration(); - Reader reader = new StringReader(code); - - Template t = new Template(name, sourceName, reader, cfg); // $hasTemplateInjection - } - - @GetMapping(value = "bad6") - public void bad6(HttpServletRequest request) { - String name = "ttemplate"; - String code = request.getParameter("code"); - Configuration cfg = new Configuration(); - ParserConfiguration customParserConfiguration = new Configuration(); - Reader reader = new StringReader(code); - - Template t = - new Template(name, sourceName, reader, cfg, customParserConfiguration, "UTF-8"); // $hasTemplateInjection - } - - @GetMapping(value = "bad7") - public void bad7(HttpServletRequest request) { - String name = "ttemplate"; - String code = request.getParameter("code"); - Configuration cfg = new Configuration(); - ParserConfiguration customParserConfiguration = new Configuration(); - Reader reader = new StringReader(code); - - Template t = new Template(name, sourceName, reader, cfg, "UTF-8"); // $hasTemplateInjection - } - - @GetMapping(value = "bad8") - public void bad8(HttpServletRequest request) { - String code = request.getParameter("code"); - StringTemplateLoader stringLoader = new StringTemplateLoader(); - - stringLoader.putTemplate("myTemplate", code); // $hasTemplateInjection - } - - @GetMapping(value = "bad9") - public void bad9(HttpServletRequest request) { - String code = request.getParameter("code"); - StringTemplateLoader stringLoader = new StringTemplateLoader(); - - stringLoader.putTemplate("myTemplate", code, 0); // $hasTemplateInjection - } - - @GetMapping(value = "good1") - public void good1(HttpServletRequest request) { - HashMap root = new HashMap(); - String code = request.getParameter("code"); - root.put("code", code); - Configuration cfg = new Configuration(); - Template temp = cfg.getTemplate("test.ftlh"); - OutputStreamWriter out = new OutputStreamWriter(System.out); - temp.process(root, out); // Safe - } -} diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyClassLoaderTest.java b/java/ql/test/query-tests/security/CWE-094/GroovyClassLoaderTest.java deleted file mode 100644 index 2ded64caaf63..000000000000 --- a/java/ql/test/query-tests/security/CWE-094/GroovyClassLoaderTest.java +++ /dev/null @@ -1,55 +0,0 @@ -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.StringReader; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import groovy.lang.GroovyClassLoader; -import groovy.lang.GroovyCodeSource; - -public class GroovyClassLoaderTest extends HttpServlet { - - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - // "groovy.lang;GroovyClassLoader;false;parseClass;(GroovyCodeSource);;Argument[0];groovy;manual", - { - String script = request.getParameter("script"); - final GroovyClassLoader classLoader = new GroovyClassLoader(); - GroovyCodeSource gcs = new GroovyCodeSource(script, "test", "Test"); - classLoader.parseClass(gcs); // $hasGroovyInjection - } - // "groovy.lang;GroovyClassLoader;false;parseClass;(GroovyCodeSource,boolean);;Argument[0];groovy;manual", - { - String script = request.getParameter("script"); - final GroovyClassLoader classLoader = new GroovyClassLoader(); - GroovyCodeSource gcs = new GroovyCodeSource(script, "test", "Test"); - classLoader.parseClass(gcs, true); // $hasGroovyInjection - } - // "groovy.lang;GroovyClassLoader;false;parseClass;(InputStream,String);;Argument[0];groovy;manual", - { - String script = request.getParameter("script"); - final GroovyClassLoader classLoader = new GroovyClassLoader(); - classLoader.parseClass(new ByteArrayInputStream(script.getBytes()), "test"); // $hasGroovyInjection - } - // "groovy.lang;GroovyClassLoader;false;parseClass;(Reader,String);;Argument[0];groovy;manual", - { - String script = request.getParameter("script"); - final GroovyClassLoader classLoader = new GroovyClassLoader(); - classLoader.parseClass(new StringReader(script), "test"); // $hasGroovyInjection - } - // "groovy.lang;GroovyClassLoader;false;parseClass;(String);;Argument[0];groovy;manual", - { - String script = request.getParameter("script"); - final GroovyClassLoader classLoader = new GroovyClassLoader(); - classLoader.parseClass(script); // $hasGroovyInjection - } - // "groovy.lang;GroovyClassLoader;false;parseClass;(String,String);;Argument[0];groovy;manual", - { - String script = request.getParameter("script"); - final GroovyClassLoader classLoader = new GroovyClassLoader(); - classLoader.parseClass(script, "test"); // $hasGroovyInjection - } - } -} - diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyEvalTest.java b/java/ql/test/query-tests/security/CWE-094/GroovyEvalTest.java deleted file mode 100644 index 3647a3346fa8..000000000000 --- a/java/ql/test/query-tests/security/CWE-094/GroovyEvalTest.java +++ /dev/null @@ -1,40 +0,0 @@ -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import groovy.util.Eval; - -public class GroovyEvalTest extends HttpServlet { - - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - // "groovy.util;Eval;false;me;(String);;Argument[0];groovy;manual", - { - String script = request.getParameter("script"); - Eval.me(script); // $hasGroovyInjection - } - // "groovy.util;Eval;false;me;(String,Object,String);;Argument[2];groovy;manual", - { - String script = request.getParameter("script"); - Eval.me("test", "result", script); // $hasGroovyInjection - } - // "groovy.util;Eval;false;x;(Object,String);;Argument[1];groovy;manual", - { - String script = request.getParameter("script"); - Eval.x("result2", script); // $hasGroovyInjection - - } - // "groovy.util;Eval;false;xy;(Object,Object,String);;Argument[2];groovy;manual", - { - String script = request.getParameter("script"); - Eval.xy("result3", "result4", script); // $hasGroovyInjection - } - // "groovy.util;Eval;false;xyz;(Object,Object,Object,String);;Argument[3];groovy;manual", - { - String script = request.getParameter("script"); - Eval.xyz("result3", "result4", "aaa", script); // $hasGroovyInjection - } - } -} - diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyClassLoaderTest.java b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyClassLoaderTest.java new file mode 100644 index 000000000000..ff7d73f16bd9 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyClassLoaderTest.java @@ -0,0 +1,54 @@ +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.StringReader; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import groovy.lang.GroovyClassLoader; +import groovy.lang.GroovyCodeSource; + +public class GroovyClassLoaderTest extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // "groovy.lang;GroovyClassLoader;false;parseClass;(GroovyCodeSource);;Argument[0];groovy;manual", + { + String script = request.getParameter("script"); // $ Source + final GroovyClassLoader classLoader = new GroovyClassLoader(); + GroovyCodeSource gcs = new GroovyCodeSource(script, "test", "Test"); + classLoader.parseClass(gcs); // $ Alert + } + // "groovy.lang;GroovyClassLoader;false;parseClass;(GroovyCodeSource,boolean);;Argument[0];groovy;manual", + { + String script = request.getParameter("script"); // $ Source + final GroovyClassLoader classLoader = new GroovyClassLoader(); + GroovyCodeSource gcs = new GroovyCodeSource(script, "test", "Test"); + classLoader.parseClass(gcs, true); // $ Alert + } + // "groovy.lang;GroovyClassLoader;false;parseClass;(InputStream,String);;Argument[0];groovy;manual", + { + String script = request.getParameter("script"); // $ Source + final GroovyClassLoader classLoader = new GroovyClassLoader(); + classLoader.parseClass(new ByteArrayInputStream(script.getBytes()), "test"); // $ Alert + } + // "groovy.lang;GroovyClassLoader;false;parseClass;(Reader,String);;Argument[0];groovy;manual", + { + String script = request.getParameter("script"); // $ Source + final GroovyClassLoader classLoader = new GroovyClassLoader(); + classLoader.parseClass(new StringReader(script), "test"); // $ Alert + } + // "groovy.lang;GroovyClassLoader;false;parseClass;(String);;Argument[0];groovy;manual", + { + String script = request.getParameter("script"); // $ Source + final GroovyClassLoader classLoader = new GroovyClassLoader(); + classLoader.parseClass(script); // $ Alert + } + // "groovy.lang;GroovyClassLoader;false;parseClass;(String,String);;Argument[0];groovy;manual", + { + String script = request.getParameter("script"); // $ Source + final GroovyClassLoader classLoader = new GroovyClassLoader(); + classLoader.parseClass(script, "test"); // $ Alert + } + } +} diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyCompilationUnitTest.java b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyCompilationUnitTest.java similarity index 84% rename from java/ql/test/query-tests/security/CWE-094/GroovyCompilationUnitTest.java rename to java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyCompilationUnitTest.java index f25e27e6893d..a906d9fdc968 100644 --- a/java/ql/test/query-tests/security/CWE-094/GroovyCompilationUnitTest.java +++ b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyCompilationUnitTest.java @@ -18,8 +18,8 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) // "org.codehaus.groovy.control;CompilationUnit;false;compile;;;Argument[this];groovy;manual" { CompilationUnit cu = new CompilationUnit(); - cu.addSource("test", request.getParameter("source")); - cu.compile(); // $hasGroovyInjection + cu.addSource("test", request.getParameter("source")); // $ Source + cu.compile(); // $ Alert } { CompilationUnit cu = new CompilationUnit(); @@ -29,20 +29,20 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) { CompilationUnit cu = new CompilationUnit(); cu.addSource("test", - new ByteArrayInputStream(request.getParameter("source").getBytes())); - cu.compile(); // $hasGroovyInjection + new ByteArrayInputStream(request.getParameter("source").getBytes())); // $ Source + cu.compile(); // $ Alert } { CompilationUnit cu = new CompilationUnit(); - cu.addSource(new URL(request.getParameter("source"))); - cu.compile(); // $hasGroovyInjection + cu.addSource(new URL(request.getParameter("source"))); // $ Source + cu.compile(); // $ Alert } { CompilationUnit cu = new CompilationUnit(); SourceUnit su = - new SourceUnit("test", request.getParameter("source"), null, null, null); + new SourceUnit("test", request.getParameter("source"), null, null, null); // $ Source cu.addSource(su); - cu.compile(); // $hasGroovyInjection + cu.compile(); // $ Alert } { CompilationUnit cu = new CompilationUnit(); @@ -53,29 +53,29 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) } { CompilationUnit cu = new CompilationUnit(); - StringReaderSource rs = new StringReaderSource(request.getParameter("source"), null); + StringReaderSource rs = new StringReaderSource(request.getParameter("source"), null); // $ Source SourceUnit su = new SourceUnit("test", rs, null, null, null); cu.addSource(su); - cu.compile(); // $hasGroovyInjection + cu.compile(); // $ Alert } { CompilationUnit cu = new CompilationUnit(); SourceUnit su = - new SourceUnit(new URL(request.getParameter("source")), null, null, null); + new SourceUnit(new URL(request.getParameter("source")), null, null, null); // $ Source cu.addSource(su); - cu.compile(); // $hasGroovyInjection + cu.compile(); // $ Alert } { CompilationUnit cu = new CompilationUnit(); - SourceUnit su = SourceUnit.create("test", request.getParameter("source")); + SourceUnit su = SourceUnit.create("test", request.getParameter("source")); // $ Source cu.addSource(su); - cu.compile(); // $hasGroovyInjection + cu.compile(); // $ Alert } { CompilationUnit cu = new CompilationUnit(); - SourceUnit su = SourceUnit.create("test", request.getParameter("source"), 0); + SourceUnit su = SourceUnit.create("test", request.getParameter("source"), 0); // $ Source cu.addSource(su); - cu.compile(); // $hasGroovyInjection + cu.compile(); // $ Alert } { CompilationUnit cu = new CompilationUnit(); @@ -85,8 +85,8 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) } { JavaAwareCompilationUnit cu = new JavaAwareCompilationUnit(); - cu.addSource("test", request.getParameter("source")); - cu.compile(); // $hasGroovyInjection + cu.addSource("test", request.getParameter("source")); // $ Source + cu.compile(); // $ Alert } { JavaStubCompilationUnit cu = new JavaStubCompilationUnit(null, null); diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyEvalTest.java b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyEvalTest.java new file mode 100644 index 000000000000..3756cd10bfa2 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyEvalTest.java @@ -0,0 +1,39 @@ +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import groovy.util.Eval; + +public class GroovyEvalTest extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // "groovy.util;Eval;false;me;(String);;Argument[0];groovy;manual", + { + String script = request.getParameter("script"); // $ Source + Eval.me(script); // $ Alert + } + // "groovy.util;Eval;false;me;(String,Object,String);;Argument[2];groovy;manual", + { + String script = request.getParameter("script"); // $ Source + Eval.me("test", "result", script); // $ Alert + } + // "groovy.util;Eval;false;x;(Object,String);;Argument[1];groovy;manual", + { + String script = request.getParameter("script"); // $ Source + Eval.x("result2", script); // $ Alert + + } + // "groovy.util;Eval;false;xy;(Object,Object,String);;Argument[2];groovy;manual", + { + String script = request.getParameter("script"); // $ Source + Eval.xy("result3", "result4", script); // $ Alert + } + // "groovy.util;Eval;false;xyz;(Object,Object,Object,String);;Argument[3];groovy;manual", + { + String script = request.getParameter("script"); // $ Source + Eval.xyz("result3", "result4", "aaa", script); // $ Alert + } + } +} diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyInjectionTest.expected new file mode 100644 index 000000000000..3a00c80a7043 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyInjectionTest.expected @@ -0,0 +1,327 @@ +#select +| GroovyClassLoaderTest.java:20:36:20:38 | gcs | GroovyClassLoaderTest.java:17:29:17:58 | getParameter(...) : String | GroovyClassLoaderTest.java:20:36:20:38 | gcs | Groovy script depends on a $@. | GroovyClassLoaderTest.java:17:29:17:58 | getParameter(...) | user-provided value | +| GroovyClassLoaderTest.java:27:36:27:38 | gcs | GroovyClassLoaderTest.java:24:29:24:58 | getParameter(...) : String | GroovyClassLoaderTest.java:27:36:27:38 | gcs | Groovy script depends on a $@. | GroovyClassLoaderTest.java:24:29:24:58 | getParameter(...) | user-provided value | +| GroovyClassLoaderTest.java:33:36:33:78 | new ByteArrayInputStream(...) | GroovyClassLoaderTest.java:31:29:31:58 | getParameter(...) : String | GroovyClassLoaderTest.java:33:36:33:78 | new ByteArrayInputStream(...) | Groovy script depends on a $@. | GroovyClassLoaderTest.java:31:29:31:58 | getParameter(...) | user-provided value | +| GroovyClassLoaderTest.java:39:36:39:59 | new StringReader(...) | GroovyClassLoaderTest.java:37:29:37:58 | getParameter(...) : String | GroovyClassLoaderTest.java:39:36:39:59 | new StringReader(...) | Groovy script depends on a $@. | GroovyClassLoaderTest.java:37:29:37:58 | getParameter(...) | user-provided value | +| GroovyClassLoaderTest.java:45:36:45:41 | script | GroovyClassLoaderTest.java:43:29:43:58 | getParameter(...) : String | GroovyClassLoaderTest.java:45:36:45:41 | script | Groovy script depends on a $@. | GroovyClassLoaderTest.java:43:29:43:58 | getParameter(...) | user-provided value | +| GroovyClassLoaderTest.java:51:36:51:41 | script | GroovyClassLoaderTest.java:49:29:49:58 | getParameter(...) : String | GroovyClassLoaderTest.java:51:36:51:41 | script | Groovy script depends on a $@. | GroovyClassLoaderTest.java:49:29:49:58 | getParameter(...) | user-provided value | +| GroovyCompilationUnitTest.java:22:13:22:14 | cu | GroovyCompilationUnitTest.java:21:34:21:63 | getParameter(...) : String | GroovyCompilationUnitTest.java:22:13:22:14 | cu | Groovy script depends on a $@. | GroovyCompilationUnitTest.java:21:34:21:63 | getParameter(...) | user-provided value | +| GroovyCompilationUnitTest.java:33:13:33:14 | cu | GroovyCompilationUnitTest.java:32:46:32:75 | getParameter(...) : String | GroovyCompilationUnitTest.java:33:13:33:14 | cu | Groovy script depends on a $@. | GroovyCompilationUnitTest.java:32:46:32:75 | getParameter(...) | user-provided value | +| GroovyCompilationUnitTest.java:38:13:38:14 | cu | GroovyCompilationUnitTest.java:37:34:37:63 | getParameter(...) : String | GroovyCompilationUnitTest.java:38:13:38:14 | cu | Groovy script depends on a $@. | GroovyCompilationUnitTest.java:37:34:37:63 | getParameter(...) | user-provided value | +| GroovyCompilationUnitTest.java:45:13:45:14 | cu | GroovyCompilationUnitTest.java:43:44:43:73 | getParameter(...) : String | GroovyCompilationUnitTest.java:45:13:45:14 | cu | Groovy script depends on a $@. | GroovyCompilationUnitTest.java:43:44:43:73 | getParameter(...) | user-provided value | +| GroovyCompilationUnitTest.java:59:13:59:14 | cu | GroovyCompilationUnitTest.java:56:60:56:89 | getParameter(...) : String | GroovyCompilationUnitTest.java:59:13:59:14 | cu | Groovy script depends on a $@. | GroovyCompilationUnitTest.java:56:60:56:89 | getParameter(...) | user-provided value | +| GroovyCompilationUnitTest.java:66:13:66:14 | cu | GroovyCompilationUnitTest.java:64:44:64:73 | getParameter(...) : String | GroovyCompilationUnitTest.java:66:13:66:14 | cu | Groovy script depends on a $@. | GroovyCompilationUnitTest.java:64:44:64:73 | getParameter(...) | user-provided value | +| GroovyCompilationUnitTest.java:72:13:72:14 | cu | GroovyCompilationUnitTest.java:70:55:70:84 | getParameter(...) : String | GroovyCompilationUnitTest.java:72:13:72:14 | cu | Groovy script depends on a $@. | GroovyCompilationUnitTest.java:70:55:70:84 | getParameter(...) | user-provided value | +| GroovyCompilationUnitTest.java:78:13:78:14 | cu | GroovyCompilationUnitTest.java:76:55:76:84 | getParameter(...) : String | GroovyCompilationUnitTest.java:78:13:78:14 | cu | Groovy script depends on a $@. | GroovyCompilationUnitTest.java:76:55:76:84 | getParameter(...) | user-provided value | +| GroovyCompilationUnitTest.java:89:13:89:14 | cu | GroovyCompilationUnitTest.java:88:34:88:63 | getParameter(...) : String | GroovyCompilationUnitTest.java:89:13:89:14 | cu | Groovy script depends on a $@. | GroovyCompilationUnitTest.java:88:34:88:63 | getParameter(...) | user-provided value | +| GroovyEvalTest.java:15:21:15:26 | script | GroovyEvalTest.java:14:29:14:58 | getParameter(...) : String | GroovyEvalTest.java:15:21:15:26 | script | Groovy script depends on a $@. | GroovyEvalTest.java:14:29:14:58 | getParameter(...) | user-provided value | +| GroovyEvalTest.java:20:39:20:44 | script | GroovyEvalTest.java:19:29:19:58 | getParameter(...) : String | GroovyEvalTest.java:20:39:20:44 | script | Groovy script depends on a $@. | GroovyEvalTest.java:19:29:19:58 | getParameter(...) | user-provided value | +| GroovyEvalTest.java:25:31:25:36 | script | GroovyEvalTest.java:24:29:24:58 | getParameter(...) : String | GroovyEvalTest.java:25:31:25:36 | script | Groovy script depends on a $@. | GroovyEvalTest.java:24:29:24:58 | getParameter(...) | user-provided value | +| GroovyEvalTest.java:31:43:31:48 | script | GroovyEvalTest.java:30:29:30:58 | getParameter(...) : String | GroovyEvalTest.java:31:43:31:48 | script | Groovy script depends on a $@. | GroovyEvalTest.java:30:29:30:58 | getParameter(...) | user-provided value | +| GroovyEvalTest.java:36:51:36:56 | script | GroovyEvalTest.java:35:29:35:58 | getParameter(...) : String | GroovyEvalTest.java:36:51:36:56 | script | Groovy script depends on a $@. | GroovyEvalTest.java:35:29:35:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:24:28:24:30 | gcs | GroovyShellTest.java:22:29:22:58 | getParameter(...) : String | GroovyShellTest.java:24:28:24:30 | gcs | Groovy script depends on a $@. | GroovyShellTest.java:22:29:22:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:31:28:31:33 | reader | GroovyShellTest.java:29:29:29:58 | getParameter(...) : String | GroovyShellTest.java:31:28:31:33 | reader | Groovy script depends on a $@. | GroovyShellTest.java:29:29:29:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:38:28:38:33 | reader | GroovyShellTest.java:36:29:36:58 | getParameter(...) : String | GroovyShellTest.java:38:28:38:33 | reader | Groovy script depends on a $@. | GroovyShellTest.java:36:29:36:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:44:28:44:33 | script | GroovyShellTest.java:43:29:43:58 | getParameter(...) : String | GroovyShellTest.java:44:28:44:33 | script | Groovy script depends on a $@. | GroovyShellTest.java:43:29:43:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:50:28:50:33 | script | GroovyShellTest.java:49:29:49:58 | getParameter(...) : String | GroovyShellTest.java:50:28:50:33 | script | Groovy script depends on a $@. | GroovyShellTest.java:49:29:49:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:56:28:56:33 | script | GroovyShellTest.java:55:29:55:58 | getParameter(...) : String | GroovyShellTest.java:56:28:56:33 | script | Groovy script depends on a $@. | GroovyShellTest.java:55:29:55:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:62:25:62:39 | new URI(...) | GroovyShellTest.java:61:29:61:58 | getParameter(...) : String | GroovyShellTest.java:62:25:62:39 | new URI(...) | Groovy script depends on a $@. | GroovyShellTest.java:61:29:61:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:70:25:70:30 | reader | GroovyShellTest.java:68:29:68:58 | getParameter(...) : String | GroovyShellTest.java:70:25:70:30 | reader | Groovy script depends on a $@. | GroovyShellTest.java:68:29:68:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:77:25:77:30 | reader | GroovyShellTest.java:75:29:75:58 | getParameter(...) : String | GroovyShellTest.java:77:25:77:30 | reader | Groovy script depends on a $@. | GroovyShellTest.java:75:29:75:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:83:25:83:30 | script | GroovyShellTest.java:82:29:82:58 | getParameter(...) : String | GroovyShellTest.java:83:25:83:30 | script | Groovy script depends on a $@. | GroovyShellTest.java:82:29:82:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:89:25:89:30 | script | GroovyShellTest.java:88:29:88:58 | getParameter(...) : String | GroovyShellTest.java:89:25:89:30 | script | Groovy script depends on a $@. | GroovyShellTest.java:88:29:88:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:95:25:95:39 | new URI(...) | GroovyShellTest.java:94:29:94:58 | getParameter(...) : String | GroovyShellTest.java:95:25:95:39 | new URI(...) | Groovy script depends on a $@. | GroovyShellTest.java:94:29:94:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:103:23:103:25 | gcs | GroovyShellTest.java:101:29:101:58 | getParameter(...) : String | GroovyShellTest.java:103:23:103:25 | gcs | Groovy script depends on a $@. | GroovyShellTest.java:101:29:101:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:110:23:110:25 | gcs | GroovyShellTest.java:108:29:108:58 | getParameter(...) : String | GroovyShellTest.java:110:23:110:25 | gcs | Groovy script depends on a $@. | GroovyShellTest.java:108:29:108:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:117:23:117:28 | reader | GroovyShellTest.java:115:29:115:58 | getParameter(...) : String | GroovyShellTest.java:117:23:117:28 | reader | Groovy script depends on a $@. | GroovyShellTest.java:115:29:115:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:124:23:124:28 | reader | GroovyShellTest.java:122:29:122:58 | getParameter(...) : String | GroovyShellTest.java:124:23:124:28 | reader | Groovy script depends on a $@. | GroovyShellTest.java:122:29:122:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:130:23:130:28 | script | GroovyShellTest.java:129:29:129:58 | getParameter(...) : String | GroovyShellTest.java:130:23:130:28 | script | Groovy script depends on a $@. | GroovyShellTest.java:129:29:129:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:136:23:136:28 | script | GroovyShellTest.java:135:29:135:58 | getParameter(...) : String | GroovyShellTest.java:136:23:136:28 | script | Groovy script depends on a $@. | GroovyShellTest.java:135:29:135:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:142:23:142:37 | new URI(...) | GroovyShellTest.java:141:29:141:58 | getParameter(...) : String | GroovyShellTest.java:142:23:142:37 | new URI(...) | Groovy script depends on a $@. | GroovyShellTest.java:141:29:141:58 | getParameter(...) | user-provided value | +| GroovyShellTest.java:149:23:149:37 | new URI(...) | GroovyShellTest.java:148:29:148:58 | getParameter(...) : String | GroovyShellTest.java:149:23:149:37 | new URI(...) | Groovy script depends on a $@. | GroovyShellTest.java:148:29:148:58 | getParameter(...) | user-provided value | +| TemplateEngineTest.java:22:35:22:64 | getParameter(...) | TemplateEngineTest.java:22:35:22:64 | getParameter(...) | TemplateEngineTest.java:22:35:22:64 | getParameter(...) | Groovy script depends on a $@. | TemplateEngineTest.java:22:35:22:64 | getParameter(...) | user-provided value | +| TemplateEngineTest.java:23:35:23:47 | (...)... | TemplateEngineTest.java:14:16:14:45 | getParameter(...) : String | TemplateEngineTest.java:23:35:23:47 | (...)... | Groovy script depends on a $@. | TemplateEngineTest.java:14:16:14:45 | getParameter(...) | user-provided value | +| TemplateEngineTest.java:24:35:24:49 | (...)... | TemplateEngineTest.java:14:16:14:45 | getParameter(...) : String | TemplateEngineTest.java:24:35:24:49 | (...)... | Groovy script depends on a $@. | TemplateEngineTest.java:14:16:14:45 | getParameter(...) | user-provided value | +| TemplateEngineTest.java:25:35:25:46 | (...)... | TemplateEngineTest.java:14:16:14:45 | getParameter(...) : String | TemplateEngineTest.java:25:35:25:46 | (...)... | Groovy script depends on a $@. | TemplateEngineTest.java:14:16:14:45 | getParameter(...) | user-provided value | +edges +| GroovyClassLoaderTest.java:17:29:17:58 | getParameter(...) : String | GroovyClassLoaderTest.java:19:57:19:62 | script : String | provenance | Src:MaD:33 | +| GroovyClassLoaderTest.java:19:36:19:79 | new GroovyCodeSource(...) : GroovyCodeSource | GroovyClassLoaderTest.java:20:36:20:38 | gcs | provenance | Sink:MaD:1 | +| GroovyClassLoaderTest.java:19:57:19:62 | script : String | GroovyClassLoaderTest.java:19:36:19:79 | new GroovyCodeSource(...) : GroovyCodeSource | provenance | Config | +| GroovyClassLoaderTest.java:24:29:24:58 | getParameter(...) : String | GroovyClassLoaderTest.java:26:57:26:62 | script : String | provenance | Src:MaD:33 | +| GroovyClassLoaderTest.java:26:36:26:79 | new GroovyCodeSource(...) : GroovyCodeSource | GroovyClassLoaderTest.java:27:36:27:38 | gcs | provenance | Sink:MaD:2 | +| GroovyClassLoaderTest.java:26:57:26:62 | script : String | GroovyClassLoaderTest.java:26:36:26:79 | new GroovyCodeSource(...) : GroovyCodeSource | provenance | Config | +| GroovyClassLoaderTest.java:31:29:31:58 | getParameter(...) : String | GroovyClassLoaderTest.java:33:61:33:66 | script : String | provenance | Src:MaD:33 | +| GroovyClassLoaderTest.java:33:61:33:66 | script : String | GroovyClassLoaderTest.java:33:61:33:77 | getBytes(...) : byte[] | provenance | MaD:36 | +| GroovyClassLoaderTest.java:33:61:33:77 | getBytes(...) : byte[] | GroovyClassLoaderTest.java:33:36:33:78 | new ByteArrayInputStream(...) | provenance | MaD:34 Sink:MaD:3 | +| GroovyClassLoaderTest.java:33:61:33:77 | getBytes(...) : byte[] | GroovyClassLoaderTest.java:33:36:33:78 | new ByteArrayInputStream(...) | provenance | inputStreamWrapper Sink:MaD:3 | +| GroovyClassLoaderTest.java:37:29:37:58 | getParameter(...) : String | GroovyClassLoaderTest.java:39:53:39:58 | script : String | provenance | Src:MaD:33 | +| GroovyClassLoaderTest.java:39:53:39:58 | script : String | GroovyClassLoaderTest.java:39:36:39:59 | new StringReader(...) | provenance | MaD:35 Sink:MaD:4 | +| GroovyClassLoaderTest.java:43:29:43:58 | getParameter(...) : String | GroovyClassLoaderTest.java:45:36:45:41 | script | provenance | Src:MaD:33 Sink:MaD:5 | +| GroovyClassLoaderTest.java:49:29:49:58 | getParameter(...) : String | GroovyClassLoaderTest.java:51:36:51:41 | script | provenance | Src:MaD:33 Sink:MaD:6 | +| GroovyCompilationUnitTest.java:21:13:21:14 | cu [post update] : CompilationUnit | GroovyCompilationUnitTest.java:22:13:22:14 | cu | provenance | Sink:MaD:32 | +| GroovyCompilationUnitTest.java:21:34:21:63 | getParameter(...) : String | GroovyCompilationUnitTest.java:21:13:21:14 | cu [post update] : CompilationUnit | provenance | Src:MaD:33 Config | +| GroovyCompilationUnitTest.java:31:13:31:14 | cu [post update] : CompilationUnit | GroovyCompilationUnitTest.java:33:13:33:14 | cu | provenance | Sink:MaD:32 | +| GroovyCompilationUnitTest.java:32:21:32:87 | new ByteArrayInputStream(...) : ByteArrayInputStream | GroovyCompilationUnitTest.java:31:13:31:14 | cu [post update] : CompilationUnit | provenance | Config | +| GroovyCompilationUnitTest.java:32:46:32:75 | getParameter(...) : String | GroovyCompilationUnitTest.java:32:46:32:86 | getBytes(...) : byte[] | provenance | Src:MaD:33 MaD:36 | +| GroovyCompilationUnitTest.java:32:46:32:86 | getBytes(...) : byte[] | GroovyCompilationUnitTest.java:32:21:32:87 | new ByteArrayInputStream(...) : ByteArrayInputStream | provenance | MaD:34 | +| GroovyCompilationUnitTest.java:32:46:32:86 | getBytes(...) : byte[] | GroovyCompilationUnitTest.java:32:21:32:87 | new ByteArrayInputStream(...) : ByteArrayInputStream | provenance | inputStreamWrapper | +| GroovyCompilationUnitTest.java:37:13:37:14 | cu [post update] : CompilationUnit | GroovyCompilationUnitTest.java:38:13:38:14 | cu | provenance | Sink:MaD:32 | +| GroovyCompilationUnitTest.java:37:26:37:64 | new URL(...) : URL | GroovyCompilationUnitTest.java:37:13:37:14 | cu [post update] : CompilationUnit | provenance | Config | +| GroovyCompilationUnitTest.java:37:34:37:63 | getParameter(...) : String | GroovyCompilationUnitTest.java:37:26:37:64 | new URL(...) : URL | provenance | Src:MaD:33 MaD:38 | +| GroovyCompilationUnitTest.java:43:21:43:92 | new SourceUnit(...) : SourceUnit | GroovyCompilationUnitTest.java:44:26:44:27 | su : SourceUnit | provenance | | +| GroovyCompilationUnitTest.java:43:44:43:73 | getParameter(...) : String | GroovyCompilationUnitTest.java:43:21:43:92 | new SourceUnit(...) : SourceUnit | provenance | Src:MaD:33 Config | +| GroovyCompilationUnitTest.java:44:13:44:14 | cu [post update] : CompilationUnit | GroovyCompilationUnitTest.java:45:13:45:14 | cu | provenance | Sink:MaD:32 | +| GroovyCompilationUnitTest.java:44:26:44:27 | su : SourceUnit | GroovyCompilationUnitTest.java:44:13:44:14 | cu [post update] : CompilationUnit | provenance | Config | +| GroovyCompilationUnitTest.java:56:37:56:96 | new StringReaderSource(...) : StringReaderSource | GroovyCompilationUnitTest.java:57:52:57:53 | rs : StringReaderSource | provenance | | +| GroovyCompilationUnitTest.java:56:60:56:89 | getParameter(...) : String | GroovyCompilationUnitTest.java:56:37:56:96 | new StringReaderSource(...) : StringReaderSource | provenance | Src:MaD:33 Config | +| GroovyCompilationUnitTest.java:57:29:57:72 | new SourceUnit(...) : SourceUnit | GroovyCompilationUnitTest.java:58:26:58:27 | su : SourceUnit | provenance | | +| GroovyCompilationUnitTest.java:57:52:57:53 | rs : StringReaderSource | GroovyCompilationUnitTest.java:57:29:57:72 | new SourceUnit(...) : SourceUnit | provenance | Config | +| GroovyCompilationUnitTest.java:58:13:58:14 | cu [post update] : CompilationUnit | GroovyCompilationUnitTest.java:59:13:59:14 | cu | provenance | Sink:MaD:32 | +| GroovyCompilationUnitTest.java:58:26:58:27 | su : SourceUnit | GroovyCompilationUnitTest.java:58:13:58:14 | cu [post update] : CompilationUnit | provenance | Config | +| GroovyCompilationUnitTest.java:64:21:64:93 | new SourceUnit(...) : SourceUnit | GroovyCompilationUnitTest.java:65:26:65:27 | su : SourceUnit | provenance | | +| GroovyCompilationUnitTest.java:64:36:64:74 | new URL(...) : URL | GroovyCompilationUnitTest.java:64:21:64:93 | new SourceUnit(...) : SourceUnit | provenance | Config | +| GroovyCompilationUnitTest.java:64:44:64:73 | getParameter(...) : String | GroovyCompilationUnitTest.java:64:36:64:74 | new URL(...) : URL | provenance | Src:MaD:33 MaD:38 | +| GroovyCompilationUnitTest.java:65:13:65:14 | cu [post update] : CompilationUnit | GroovyCompilationUnitTest.java:66:13:66:14 | cu | provenance | Sink:MaD:32 | +| GroovyCompilationUnitTest.java:65:26:65:27 | su : SourceUnit | GroovyCompilationUnitTest.java:65:13:65:14 | cu [post update] : CompilationUnit | provenance | Config | +| GroovyCompilationUnitTest.java:70:29:70:85 | create(...) : SourceUnit | GroovyCompilationUnitTest.java:71:26:71:27 | su : SourceUnit | provenance | | +| GroovyCompilationUnitTest.java:70:55:70:84 | getParameter(...) : String | GroovyCompilationUnitTest.java:70:29:70:85 | create(...) : SourceUnit | provenance | Src:MaD:33 Config | +| GroovyCompilationUnitTest.java:71:13:71:14 | cu [post update] : CompilationUnit | GroovyCompilationUnitTest.java:72:13:72:14 | cu | provenance | Sink:MaD:32 | +| GroovyCompilationUnitTest.java:71:26:71:27 | su : SourceUnit | GroovyCompilationUnitTest.java:71:13:71:14 | cu [post update] : CompilationUnit | provenance | Config | +| GroovyCompilationUnitTest.java:76:29:76:88 | create(...) : SourceUnit | GroovyCompilationUnitTest.java:77:26:77:27 | su : SourceUnit | provenance | | +| GroovyCompilationUnitTest.java:76:55:76:84 | getParameter(...) : String | GroovyCompilationUnitTest.java:76:29:76:88 | create(...) : SourceUnit | provenance | Src:MaD:33 Config | +| GroovyCompilationUnitTest.java:77:13:77:14 | cu [post update] : CompilationUnit | GroovyCompilationUnitTest.java:78:13:78:14 | cu | provenance | Sink:MaD:32 | +| GroovyCompilationUnitTest.java:77:26:77:27 | su : SourceUnit | GroovyCompilationUnitTest.java:77:13:77:14 | cu [post update] : CompilationUnit | provenance | Config | +| GroovyCompilationUnitTest.java:88:13:88:14 | cu [post update] : JavaAwareCompilationUnit | GroovyCompilationUnitTest.java:89:13:89:14 | cu | provenance | Sink:MaD:32 | +| GroovyCompilationUnitTest.java:88:34:88:63 | getParameter(...) : String | GroovyCompilationUnitTest.java:88:13:88:14 | cu [post update] : JavaAwareCompilationUnit | provenance | Src:MaD:33 Config | +| GroovyEvalTest.java:14:29:14:58 | getParameter(...) : String | GroovyEvalTest.java:15:21:15:26 | script | provenance | Src:MaD:33 Sink:MaD:27 | +| GroovyEvalTest.java:19:29:19:58 | getParameter(...) : String | GroovyEvalTest.java:20:39:20:44 | script | provenance | Src:MaD:33 Sink:MaD:28 | +| GroovyEvalTest.java:24:29:24:58 | getParameter(...) : String | GroovyEvalTest.java:25:31:25:36 | script | provenance | Src:MaD:33 Sink:MaD:29 | +| GroovyEvalTest.java:30:29:30:58 | getParameter(...) : String | GroovyEvalTest.java:31:43:31:48 | script | provenance | Src:MaD:33 Sink:MaD:30 | +| GroovyEvalTest.java:35:29:35:58 | getParameter(...) : String | GroovyEvalTest.java:36:51:36:56 | script | provenance | Src:MaD:33 Sink:MaD:31 | +| GroovyShellTest.java:22:29:22:58 | getParameter(...) : String | GroovyShellTest.java:23:57:23:62 | script : String | provenance | Src:MaD:33 | +| GroovyShellTest.java:23:36:23:79 | new GroovyCodeSource(...) : GroovyCodeSource | GroovyShellTest.java:24:28:24:30 | gcs | provenance | Sink:MaD:7 | +| GroovyShellTest.java:23:57:23:62 | script : String | GroovyShellTest.java:23:36:23:79 | new GroovyCodeSource(...) : GroovyCodeSource | provenance | Config | +| GroovyShellTest.java:29:29:29:58 | getParameter(...) : String | GroovyShellTest.java:30:46:30:51 | script : String | provenance | Src:MaD:33 | +| GroovyShellTest.java:30:29:30:52 | new StringReader(...) : StringReader | GroovyShellTest.java:31:28:31:33 | reader | provenance | Sink:MaD:8 | +| GroovyShellTest.java:30:46:30:51 | script : String | GroovyShellTest.java:30:29:30:52 | new StringReader(...) : StringReader | provenance | MaD:35 | +| GroovyShellTest.java:36:29:36:58 | getParameter(...) : String | GroovyShellTest.java:37:46:37:51 | script : String | provenance | Src:MaD:33 | +| GroovyShellTest.java:37:29:37:52 | new StringReader(...) : StringReader | GroovyShellTest.java:38:28:38:33 | reader | provenance | Sink:MaD:9 | +| GroovyShellTest.java:37:46:37:51 | script : String | GroovyShellTest.java:37:29:37:52 | new StringReader(...) : StringReader | provenance | MaD:35 | +| GroovyShellTest.java:43:29:43:58 | getParameter(...) : String | GroovyShellTest.java:44:28:44:33 | script | provenance | Src:MaD:33 Sink:MaD:10 | +| GroovyShellTest.java:49:29:49:58 | getParameter(...) : String | GroovyShellTest.java:50:28:50:33 | script | provenance | Src:MaD:33 Sink:MaD:11 | +| GroovyShellTest.java:55:29:55:58 | getParameter(...) : String | GroovyShellTest.java:56:28:56:33 | script | provenance | Src:MaD:33 Sink:MaD:12 | +| GroovyShellTest.java:61:29:61:58 | getParameter(...) : String | GroovyShellTest.java:62:33:62:38 | script : String | provenance | Src:MaD:33 | +| GroovyShellTest.java:62:33:62:38 | script : String | GroovyShellTest.java:62:25:62:39 | new URI(...) | provenance | MaD:37 Sink:MaD:17 | +| GroovyShellTest.java:68:29:68:58 | getParameter(...) : String | GroovyShellTest.java:69:46:69:51 | script : String | provenance | Src:MaD:33 | +| GroovyShellTest.java:69:29:69:52 | new StringReader(...) : StringReader | GroovyShellTest.java:70:25:70:30 | reader | provenance | Sink:MaD:13 | +| GroovyShellTest.java:69:46:69:51 | script : String | GroovyShellTest.java:69:29:69:52 | new StringReader(...) : StringReader | provenance | MaD:35 | +| GroovyShellTest.java:75:29:75:58 | getParameter(...) : String | GroovyShellTest.java:76:46:76:51 | script : String | provenance | Src:MaD:33 | +| GroovyShellTest.java:76:29:76:52 | new StringReader(...) : StringReader | GroovyShellTest.java:77:25:77:30 | reader | provenance | Sink:MaD:14 | +| GroovyShellTest.java:76:46:76:51 | script : String | GroovyShellTest.java:76:29:76:52 | new StringReader(...) : StringReader | provenance | MaD:35 | +| GroovyShellTest.java:82:29:82:58 | getParameter(...) : String | GroovyShellTest.java:83:25:83:30 | script | provenance | Src:MaD:33 Sink:MaD:15 | +| GroovyShellTest.java:88:29:88:58 | getParameter(...) : String | GroovyShellTest.java:89:25:89:30 | script | provenance | Src:MaD:33 Sink:MaD:16 | +| GroovyShellTest.java:94:29:94:58 | getParameter(...) : String | GroovyShellTest.java:95:33:95:38 | script : String | provenance | Src:MaD:33 | +| GroovyShellTest.java:95:33:95:38 | script : String | GroovyShellTest.java:95:25:95:39 | new URI(...) | provenance | MaD:37 Sink:MaD:17 | +| GroovyShellTest.java:101:29:101:58 | getParameter(...) : String | GroovyShellTest.java:102:57:102:62 | script : String | provenance | Src:MaD:33 | +| GroovyShellTest.java:102:36:102:79 | new GroovyCodeSource(...) : GroovyCodeSource | GroovyShellTest.java:103:23:103:25 | gcs | provenance | Sink:MaD:19 | +| GroovyShellTest.java:102:57:102:62 | script : String | GroovyShellTest.java:102:36:102:79 | new GroovyCodeSource(...) : GroovyCodeSource | provenance | Config | +| GroovyShellTest.java:108:29:108:58 | getParameter(...) : String | GroovyShellTest.java:109:57:109:62 | script : String | provenance | Src:MaD:33 | +| GroovyShellTest.java:109:36:109:79 | new GroovyCodeSource(...) : GroovyCodeSource | GroovyShellTest.java:110:23:110:25 | gcs | provenance | Sink:MaD:18 | +| GroovyShellTest.java:109:57:109:62 | script : String | GroovyShellTest.java:109:36:109:79 | new GroovyCodeSource(...) : GroovyCodeSource | provenance | Config | +| GroovyShellTest.java:115:29:115:58 | getParameter(...) : String | GroovyShellTest.java:116:46:116:51 | script : String | provenance | Src:MaD:33 | +| GroovyShellTest.java:116:29:116:52 | new StringReader(...) : StringReader | GroovyShellTest.java:117:23:117:28 | reader | provenance | Sink:MaD:21 | +| GroovyShellTest.java:116:46:116:51 | script : String | GroovyShellTest.java:116:29:116:52 | new StringReader(...) : StringReader | provenance | MaD:35 | +| GroovyShellTest.java:122:29:122:58 | getParameter(...) : String | GroovyShellTest.java:123:46:123:51 | script : String | provenance | Src:MaD:33 | +| GroovyShellTest.java:123:29:123:52 | new StringReader(...) : StringReader | GroovyShellTest.java:124:23:124:28 | reader | provenance | Sink:MaD:20 | +| GroovyShellTest.java:123:46:123:51 | script : String | GroovyShellTest.java:123:29:123:52 | new StringReader(...) : StringReader | provenance | MaD:35 | +| GroovyShellTest.java:129:29:129:58 | getParameter(...) : String | GroovyShellTest.java:130:23:130:28 | script | provenance | Src:MaD:33 Sink:MaD:23 | +| GroovyShellTest.java:135:29:135:58 | getParameter(...) : String | GroovyShellTest.java:136:23:136:28 | script | provenance | Src:MaD:33 Sink:MaD:22 | +| GroovyShellTest.java:141:29:141:58 | getParameter(...) : String | GroovyShellTest.java:142:31:142:36 | script : String | provenance | Src:MaD:33 | +| GroovyShellTest.java:142:31:142:36 | script : String | GroovyShellTest.java:142:23:142:37 | new URI(...) | provenance | MaD:37 Sink:MaD:25 | +| GroovyShellTest.java:148:29:148:58 | getParameter(...) : String | GroovyShellTest.java:149:31:149:36 | script : String | provenance | Src:MaD:33 | +| GroovyShellTest.java:149:31:149:36 | script : String | GroovyShellTest.java:149:23:149:37 | new URI(...) | provenance | MaD:37 Sink:MaD:24 | +| TemplateEngineTest.java:14:16:14:45 | getParameter(...) : String | TemplateEngineTest.java:20:29:20:43 | source(...) : String | provenance | Src:MaD:33 | +| TemplateEngineTest.java:20:29:20:43 | source(...) : String | TemplateEngineTest.java:23:35:23:47 | (...)... | provenance | Sink:MaD:26 | +| TemplateEngineTest.java:20:29:20:43 | source(...) : String | TemplateEngineTest.java:24:35:24:49 | (...)... | provenance | Sink:MaD:26 | +| TemplateEngineTest.java:20:29:20:43 | source(...) : String | TemplateEngineTest.java:25:35:25:46 | (...)... | provenance | Sink:MaD:26 | +models +| 1 | Sink: groovy.lang; GroovyClassLoader; false; parseClass; (GroovyCodeSource); ; Argument[0]; groovy-injection; manual | +| 2 | Sink: groovy.lang; GroovyClassLoader; false; parseClass; (GroovyCodeSource,boolean); ; Argument[0]; groovy-injection; manual | +| 3 | Sink: groovy.lang; GroovyClassLoader; false; parseClass; (InputStream,String); ; Argument[0]; groovy-injection; manual | +| 4 | Sink: groovy.lang; GroovyClassLoader; false; parseClass; (Reader,String); ; Argument[0]; groovy-injection; manual | +| 5 | Sink: groovy.lang; GroovyClassLoader; false; parseClass; (String); ; Argument[0]; groovy-injection; manual | +| 6 | Sink: groovy.lang; GroovyClassLoader; false; parseClass; (String,String); ; Argument[0]; groovy-injection; manual | +| 7 | Sink: groovy.lang; GroovyShell; false; evaluate; (GroovyCodeSource); ; Argument[0]; groovy-injection; manual | +| 8 | Sink: groovy.lang; GroovyShell; false; evaluate; (Reader); ; Argument[0]; groovy-injection; manual | +| 9 | Sink: groovy.lang; GroovyShell; false; evaluate; (Reader,String); ; Argument[0]; groovy-injection; manual | +| 10 | Sink: groovy.lang; GroovyShell; false; evaluate; (String); ; Argument[0]; groovy-injection; manual | +| 11 | Sink: groovy.lang; GroovyShell; false; evaluate; (String,String); ; Argument[0]; groovy-injection; manual | +| 12 | Sink: groovy.lang; GroovyShell; false; evaluate; (String,String,String); ; Argument[0]; groovy-injection; manual | +| 13 | Sink: groovy.lang; GroovyShell; false; parse; (Reader); ; Argument[0]; groovy-injection; manual | +| 14 | Sink: groovy.lang; GroovyShell; false; parse; (Reader,String); ; Argument[0]; groovy-injection; manual | +| 15 | Sink: groovy.lang; GroovyShell; false; parse; (String); ; Argument[0]; groovy-injection; manual | +| 16 | Sink: groovy.lang; GroovyShell; false; parse; (String,String); ; Argument[0]; groovy-injection; manual | +| 17 | Sink: groovy.lang; GroovyShell; false; parse; (URI); ; Argument[0]; groovy-injection; manual | +| 18 | Sink: groovy.lang; GroovyShell; false; run; (GroovyCodeSource,List); ; Argument[0]; groovy-injection; manual | +| 19 | Sink: groovy.lang; GroovyShell; false; run; (GroovyCodeSource,String[]); ; Argument[0]; groovy-injection; manual | +| 20 | Sink: groovy.lang; GroovyShell; false; run; (Reader,String,List); ; Argument[0]; groovy-injection; manual | +| 21 | Sink: groovy.lang; GroovyShell; false; run; (Reader,String,String[]); ; Argument[0]; groovy-injection; manual | +| 22 | Sink: groovy.lang; GroovyShell; false; run; (String,String,List); ; Argument[0]; groovy-injection; manual | +| 23 | Sink: groovy.lang; GroovyShell; false; run; (String,String,String[]); ; Argument[0]; groovy-injection; manual | +| 24 | Sink: groovy.lang; GroovyShell; false; run; (URI,List); ; Argument[0]; groovy-injection; manual | +| 25 | Sink: groovy.lang; GroovyShell; false; run; (URI,String[]); ; Argument[0]; groovy-injection; manual | +| 26 | Sink: groovy.text; TemplateEngine; true; createTemplate; ; ; Argument[0]; groovy-injection; manual | +| 27 | Sink: groovy.util; Eval; false; me; (String); ; Argument[0]; groovy-injection; manual | +| 28 | Sink: groovy.util; Eval; false; me; (String,Object,String); ; Argument[2]; groovy-injection; manual | +| 29 | Sink: groovy.util; Eval; false; x; (Object,String); ; Argument[1]; groovy-injection; manual | +| 30 | Sink: groovy.util; Eval; false; xy; (Object,Object,String); ; Argument[2]; groovy-injection; manual | +| 31 | Sink: groovy.util; Eval; false; xyz; (Object,Object,Object,String); ; Argument[3]; groovy-injection; manual | +| 32 | Sink: org.codehaus.groovy.control; CompilationUnit; false; compile; ; ; Argument[this]; groovy-injection; manual | +| 33 | Source: javax.servlet; ServletRequest; false; getParameter; (String); ; ReturnValue; remote; manual | +| 34 | Summary: java.io; ByteArrayInputStream; false; ByteArrayInputStream; ; ; Argument[0]; Argument[this]; taint; manual | +| 35 | Summary: java.io; StringReader; false; StringReader; ; ; Argument[0]; Argument[this]; taint; manual | +| 36 | Summary: java.lang; String; false; getBytes; ; ; Argument[this]; ReturnValue; taint; manual | +| 37 | Summary: java.net; URI; false; URI; (String); ; Argument[0]; Argument[this]; taint; manual | +| 38 | Summary: java.net; URL; false; URL; (String); ; Argument[0]; Argument[this]; taint; manual | +nodes +| GroovyClassLoaderTest.java:17:29:17:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyClassLoaderTest.java:19:36:19:79 | new GroovyCodeSource(...) : GroovyCodeSource | semmle.label | new GroovyCodeSource(...) : GroovyCodeSource | +| GroovyClassLoaderTest.java:19:57:19:62 | script : String | semmle.label | script : String | +| GroovyClassLoaderTest.java:20:36:20:38 | gcs | semmle.label | gcs | +| GroovyClassLoaderTest.java:24:29:24:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyClassLoaderTest.java:26:36:26:79 | new GroovyCodeSource(...) : GroovyCodeSource | semmle.label | new GroovyCodeSource(...) : GroovyCodeSource | +| GroovyClassLoaderTest.java:26:57:26:62 | script : String | semmle.label | script : String | +| GroovyClassLoaderTest.java:27:36:27:38 | gcs | semmle.label | gcs | +| GroovyClassLoaderTest.java:31:29:31:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyClassLoaderTest.java:33:36:33:78 | new ByteArrayInputStream(...) | semmle.label | new ByteArrayInputStream(...) | +| GroovyClassLoaderTest.java:33:61:33:66 | script : String | semmle.label | script : String | +| GroovyClassLoaderTest.java:33:61:33:77 | getBytes(...) : byte[] | semmle.label | getBytes(...) : byte[] | +| GroovyClassLoaderTest.java:37:29:37:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyClassLoaderTest.java:39:36:39:59 | new StringReader(...) | semmle.label | new StringReader(...) | +| GroovyClassLoaderTest.java:39:53:39:58 | script : String | semmle.label | script : String | +| GroovyClassLoaderTest.java:43:29:43:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyClassLoaderTest.java:45:36:45:41 | script | semmle.label | script | +| GroovyClassLoaderTest.java:49:29:49:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyClassLoaderTest.java:51:36:51:41 | script | semmle.label | script | +| GroovyCompilationUnitTest.java:21:13:21:14 | cu [post update] : CompilationUnit | semmle.label | cu [post update] : CompilationUnit | +| GroovyCompilationUnitTest.java:21:34:21:63 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyCompilationUnitTest.java:22:13:22:14 | cu | semmle.label | cu | +| GroovyCompilationUnitTest.java:31:13:31:14 | cu [post update] : CompilationUnit | semmle.label | cu [post update] : CompilationUnit | +| GroovyCompilationUnitTest.java:32:21:32:87 | new ByteArrayInputStream(...) : ByteArrayInputStream | semmle.label | new ByteArrayInputStream(...) : ByteArrayInputStream | +| GroovyCompilationUnitTest.java:32:46:32:75 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyCompilationUnitTest.java:32:46:32:86 | getBytes(...) : byte[] | semmle.label | getBytes(...) : byte[] | +| GroovyCompilationUnitTest.java:33:13:33:14 | cu | semmle.label | cu | +| GroovyCompilationUnitTest.java:37:13:37:14 | cu [post update] : CompilationUnit | semmle.label | cu [post update] : CompilationUnit | +| GroovyCompilationUnitTest.java:37:26:37:64 | new URL(...) : URL | semmle.label | new URL(...) : URL | +| GroovyCompilationUnitTest.java:37:34:37:63 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyCompilationUnitTest.java:38:13:38:14 | cu | semmle.label | cu | +| GroovyCompilationUnitTest.java:43:21:43:92 | new SourceUnit(...) : SourceUnit | semmle.label | new SourceUnit(...) : SourceUnit | +| GroovyCompilationUnitTest.java:43:44:43:73 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyCompilationUnitTest.java:44:13:44:14 | cu [post update] : CompilationUnit | semmle.label | cu [post update] : CompilationUnit | +| GroovyCompilationUnitTest.java:44:26:44:27 | su : SourceUnit | semmle.label | su : SourceUnit | +| GroovyCompilationUnitTest.java:45:13:45:14 | cu | semmle.label | cu | +| GroovyCompilationUnitTest.java:56:37:56:96 | new StringReaderSource(...) : StringReaderSource | semmle.label | new StringReaderSource(...) : StringReaderSource | +| GroovyCompilationUnitTest.java:56:60:56:89 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyCompilationUnitTest.java:57:29:57:72 | new SourceUnit(...) : SourceUnit | semmle.label | new SourceUnit(...) : SourceUnit | +| GroovyCompilationUnitTest.java:57:52:57:53 | rs : StringReaderSource | semmle.label | rs : StringReaderSource | +| GroovyCompilationUnitTest.java:58:13:58:14 | cu [post update] : CompilationUnit | semmle.label | cu [post update] : CompilationUnit | +| GroovyCompilationUnitTest.java:58:26:58:27 | su : SourceUnit | semmle.label | su : SourceUnit | +| GroovyCompilationUnitTest.java:59:13:59:14 | cu | semmle.label | cu | +| GroovyCompilationUnitTest.java:64:21:64:93 | new SourceUnit(...) : SourceUnit | semmle.label | new SourceUnit(...) : SourceUnit | +| GroovyCompilationUnitTest.java:64:36:64:74 | new URL(...) : URL | semmle.label | new URL(...) : URL | +| GroovyCompilationUnitTest.java:64:44:64:73 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyCompilationUnitTest.java:65:13:65:14 | cu [post update] : CompilationUnit | semmle.label | cu [post update] : CompilationUnit | +| GroovyCompilationUnitTest.java:65:26:65:27 | su : SourceUnit | semmle.label | su : SourceUnit | +| GroovyCompilationUnitTest.java:66:13:66:14 | cu | semmle.label | cu | +| GroovyCompilationUnitTest.java:70:29:70:85 | create(...) : SourceUnit | semmle.label | create(...) : SourceUnit | +| GroovyCompilationUnitTest.java:70:55:70:84 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyCompilationUnitTest.java:71:13:71:14 | cu [post update] : CompilationUnit | semmle.label | cu [post update] : CompilationUnit | +| GroovyCompilationUnitTest.java:71:26:71:27 | su : SourceUnit | semmle.label | su : SourceUnit | +| GroovyCompilationUnitTest.java:72:13:72:14 | cu | semmle.label | cu | +| GroovyCompilationUnitTest.java:76:29:76:88 | create(...) : SourceUnit | semmle.label | create(...) : SourceUnit | +| GroovyCompilationUnitTest.java:76:55:76:84 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyCompilationUnitTest.java:77:13:77:14 | cu [post update] : CompilationUnit | semmle.label | cu [post update] : CompilationUnit | +| GroovyCompilationUnitTest.java:77:26:77:27 | su : SourceUnit | semmle.label | su : SourceUnit | +| GroovyCompilationUnitTest.java:78:13:78:14 | cu | semmle.label | cu | +| GroovyCompilationUnitTest.java:88:13:88:14 | cu [post update] : JavaAwareCompilationUnit | semmle.label | cu [post update] : JavaAwareCompilationUnit | +| GroovyCompilationUnitTest.java:88:34:88:63 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyCompilationUnitTest.java:89:13:89:14 | cu | semmle.label | cu | +| GroovyEvalTest.java:14:29:14:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyEvalTest.java:15:21:15:26 | script | semmle.label | script | +| GroovyEvalTest.java:19:29:19:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyEvalTest.java:20:39:20:44 | script | semmle.label | script | +| GroovyEvalTest.java:24:29:24:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyEvalTest.java:25:31:25:36 | script | semmle.label | script | +| GroovyEvalTest.java:30:29:30:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyEvalTest.java:31:43:31:48 | script | semmle.label | script | +| GroovyEvalTest.java:35:29:35:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyEvalTest.java:36:51:36:56 | script | semmle.label | script | +| GroovyShellTest.java:22:29:22:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:23:36:23:79 | new GroovyCodeSource(...) : GroovyCodeSource | semmle.label | new GroovyCodeSource(...) : GroovyCodeSource | +| GroovyShellTest.java:23:57:23:62 | script : String | semmle.label | script : String | +| GroovyShellTest.java:24:28:24:30 | gcs | semmle.label | gcs | +| GroovyShellTest.java:29:29:29:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:30:29:30:52 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| GroovyShellTest.java:30:46:30:51 | script : String | semmle.label | script : String | +| GroovyShellTest.java:31:28:31:33 | reader | semmle.label | reader | +| GroovyShellTest.java:36:29:36:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:37:29:37:52 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| GroovyShellTest.java:37:46:37:51 | script : String | semmle.label | script : String | +| GroovyShellTest.java:38:28:38:33 | reader | semmle.label | reader | +| GroovyShellTest.java:43:29:43:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:44:28:44:33 | script | semmle.label | script | +| GroovyShellTest.java:49:29:49:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:50:28:50:33 | script | semmle.label | script | +| GroovyShellTest.java:55:29:55:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:56:28:56:33 | script | semmle.label | script | +| GroovyShellTest.java:61:29:61:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:62:25:62:39 | new URI(...) | semmle.label | new URI(...) | +| GroovyShellTest.java:62:33:62:38 | script : String | semmle.label | script : String | +| GroovyShellTest.java:68:29:68:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:69:29:69:52 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| GroovyShellTest.java:69:46:69:51 | script : String | semmle.label | script : String | +| GroovyShellTest.java:70:25:70:30 | reader | semmle.label | reader | +| GroovyShellTest.java:75:29:75:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:76:29:76:52 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| GroovyShellTest.java:76:46:76:51 | script : String | semmle.label | script : String | +| GroovyShellTest.java:77:25:77:30 | reader | semmle.label | reader | +| GroovyShellTest.java:82:29:82:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:83:25:83:30 | script | semmle.label | script | +| GroovyShellTest.java:88:29:88:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:89:25:89:30 | script | semmle.label | script | +| GroovyShellTest.java:94:29:94:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:95:25:95:39 | new URI(...) | semmle.label | new URI(...) | +| GroovyShellTest.java:95:33:95:38 | script : String | semmle.label | script : String | +| GroovyShellTest.java:101:29:101:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:102:36:102:79 | new GroovyCodeSource(...) : GroovyCodeSource | semmle.label | new GroovyCodeSource(...) : GroovyCodeSource | +| GroovyShellTest.java:102:57:102:62 | script : String | semmle.label | script : String | +| GroovyShellTest.java:103:23:103:25 | gcs | semmle.label | gcs | +| GroovyShellTest.java:108:29:108:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:109:36:109:79 | new GroovyCodeSource(...) : GroovyCodeSource | semmle.label | new GroovyCodeSource(...) : GroovyCodeSource | +| GroovyShellTest.java:109:57:109:62 | script : String | semmle.label | script : String | +| GroovyShellTest.java:110:23:110:25 | gcs | semmle.label | gcs | +| GroovyShellTest.java:115:29:115:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:116:29:116:52 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| GroovyShellTest.java:116:46:116:51 | script : String | semmle.label | script : String | +| GroovyShellTest.java:117:23:117:28 | reader | semmle.label | reader | +| GroovyShellTest.java:122:29:122:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:123:29:123:52 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| GroovyShellTest.java:123:46:123:51 | script : String | semmle.label | script : String | +| GroovyShellTest.java:124:23:124:28 | reader | semmle.label | reader | +| GroovyShellTest.java:129:29:129:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:130:23:130:28 | script | semmle.label | script | +| GroovyShellTest.java:135:29:135:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:136:23:136:28 | script | semmle.label | script | +| GroovyShellTest.java:141:29:141:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:142:23:142:37 | new URI(...) | semmle.label | new URI(...) | +| GroovyShellTest.java:142:31:142:36 | script : String | semmle.label | script : String | +| GroovyShellTest.java:148:29:148:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GroovyShellTest.java:149:23:149:37 | new URI(...) | semmle.label | new URI(...) | +| GroovyShellTest.java:149:31:149:36 | script : String | semmle.label | script : String | +| TemplateEngineTest.java:14:16:14:45 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| TemplateEngineTest.java:20:29:20:43 | source(...) : String | semmle.label | source(...) : String | +| TemplateEngineTest.java:22:35:22:64 | getParameter(...) | semmle.label | getParameter(...) | +| TemplateEngineTest.java:23:35:23:47 | (...)... | semmle.label | (...)... | +| TemplateEngineTest.java:24:35:24:49 | (...)... | semmle.label | (...)... | +| TemplateEngineTest.java:25:35:25:46 | (...)... | semmle.label | (...)... | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyInjectionTest.qlref b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyInjectionTest.qlref new file mode 100644 index 000000000000..b19d5fce5227 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyInjectionTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-094/GroovyInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyShellTest.java b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyShellTest.java new file mode 100644 index 000000000000..6e2e773b03c1 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/GroovyShellTest.java @@ -0,0 +1,153 @@ +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.ArrayList; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import groovy.lang.GroovyCodeSource; +import groovy.lang.GroovyShell; + +public class GroovyShellTest extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + // "groovy.lang;GroovyShell;false;evaluate;(GroovyCodeSource);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + GroovyCodeSource gcs = new GroovyCodeSource(script, "test", "Test"); + shell.evaluate(gcs); // $ Alert + } + // "groovy.lang;GroovyShell;false;evaluate;(Reader);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + Reader reader = new StringReader(script); + shell.evaluate(reader); // $ Alert + } + // "groovy.lang;GroovyShell;false;evaluate;(Reader,String);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + Reader reader = new StringReader(script); + shell.evaluate(reader, "_"); // $ Alert + } + // "groovy.lang;GroovyShell;false;evaluate;(String);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + shell.evaluate(script); // $ Alert + } + // "groovy.lang;GroovyShell;false;evaluate;(String,String);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + shell.evaluate(script, "test"); // $ Alert + } + // "groovy.lang;GroovyShell;false;evaluate;(String,String,String);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + shell.evaluate(script, "test", "test2"); // $ Alert + } + // "groovy.lang;GroovyShell;false;evaluate;(URI);;Argument[0];groovy;manual", + try { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + shell.parse(new URI(script)); // $ Alert + } catch (URISyntaxException e) { + } + // "groovy.lang;GroovyShell;false;parse;(Reader);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + Reader reader = new StringReader(script); + shell.parse(reader); // $ Alert + } + // "groovy.lang;GroovyShell;false;parse;(Reader,String);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + Reader reader = new StringReader(script); + shell.parse(reader, "_"); // $ Alert + } + // "groovy.lang;GroovyShell;false;parse;(String);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + shell.parse(script); // $ Alert + } + // "groovy.lang;GroovyShell;false;parse;(String,String);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + shell.parse(script, "_"); // $ Alert + } + // "groovy.lang;GroovyShell;false;parse;(URI);;Argument[0];groovy;manual", + try { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + shell.parse(new URI(script)); // $ Alert + } catch (URISyntaxException e) { + } + // "groovy.lang;GroovyShell;false;run;(GroovyCodeSource,String[]);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + GroovyCodeSource gcs = new GroovyCodeSource(script, "test", "Test"); + shell.run(gcs, new String[] {}); // $ Alert + } + // "groovy.lang;GroovyShell;false;run;(GroovyCodeSource,List);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + GroovyCodeSource gcs = new GroovyCodeSource(script, "test", "Test"); + shell.run(gcs, new ArrayList()); // $ Alert + } + // "groovy.lang;GroovyShell;false;run;(Reader,String,String[]);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + Reader reader = new StringReader(script); + shell.run(reader, "test", new String[] {}); // $ Alert + } + // "groovy.lang;GroovyShell;false;run;(Reader,String,List);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + Reader reader = new StringReader(script); + shell.run(reader, "test", new ArrayList()); // $ Alert + } + // "groovy.lang;GroovyShell;false;run;(String,String,String[]);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + shell.run(script, "_", new String[] {}); // $ Alert + } + // "groovy.lang;GroovyShell;false;run;(String,String,List);;Argument[0];groovy;manual", + { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + shell.run(script, "_", new ArrayList()); // $ Alert + } + // "groovy.lang;GroovyShell;false;run;(URI,String[]);;Argument[0];groovy;manual", + try { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + shell.run(new URI(script), new String[] {}); // $ Alert + } catch (URISyntaxException e) { + } + // "groovy.lang;GroovyShell;false;run;(URI,List);;Argument[0];groovy;manual", + try { + GroovyShell shell = new GroovyShell(); + String script = request.getParameter("script"); // $ Source + shell.run(new URI(script), new ArrayList()); // $ Alert + } catch (URISyntaxException e) { + } + } +} diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyInjection/TemplateEngineTest.java b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/TemplateEngineTest.java new file mode 100644 index 000000000000..a046b9cd332a --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/TemplateEngineTest.java @@ -0,0 +1,30 @@ +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.net.URL; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import groovy.text.TemplateEngine; + +public class TemplateEngineTest extends HttpServlet { + + private Object source(HttpServletRequest request) { + return request.getParameter("script"); // $ Source + } + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + try { + Object script = source(request); + TemplateEngine engine = null; + engine.createTemplate(request.getParameter("script")); // $ Alert + engine.createTemplate((File) script); // $ Alert + engine.createTemplate((Reader) script); // $ Alert + engine.createTemplate((URL) script); // $ Alert + } catch (Exception e) { + } + + } +} diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyInjection/options b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/options new file mode 100644 index 000000000000..d7c8332682ba --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/GroovyInjection/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/validation-api-2.0.1.Final:${testdir}/../../../../stubs/springframework-5.8.x:${testdir}/../../../../stubs/apache-commons-jexl-2.1.1:${testdir}/../../../../stubs/apache-commons-jexl-3.1:${testdir}/../../../../stubs/apache-commons-logging-1.2:${testdir}/../../../../stubs/mvel2-2.4.7:${testdir}/../../../../stubs/groovy-all-3.0.7:${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/scriptengine:${testdir}/../../../../stubs/jsr223-api:${testdir}/../../../../stubs/apache-freemarker-2.3.31:${testdir}/../../../../stubs/jinjava-2.6.0:${testdir}/../../../../stubs/pebble-3.1.5:${testdir}/../../../../stubs/thymeleaf-3.0.14:${testdir}/../../../../stubs/apache-velocity-2.3:${testdir}/../../../..//stubs/google-android-9.0.0 diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.ql deleted file mode 100644 index 26f32638d918..000000000000 --- a/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.ql +++ /dev/null @@ -1,20 +0,0 @@ -import java -import semmle.code.java.dataflow.TaintTracking -import semmle.code.java.dataflow.FlowSources -import semmle.code.java.security.GroovyInjectionQuery -import utils.test.InlineExpectationsTest - -module HasGroovyInjectionTest implements TestSig { - string getARelevantTag() { result = "hasGroovyInjection" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasGroovyInjection" and - exists(DataFlow::Node sink | GroovyInjectionFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyShellTest.java b/java/ql/test/query-tests/security/CWE-094/GroovyShellTest.java deleted file mode 100644 index 1e5b806f18e3..000000000000 --- a/java/ql/test/query-tests/security/CWE-094/GroovyShellTest.java +++ /dev/null @@ -1,154 +0,0 @@ -import java.io.IOException; -import java.io.Reader; -import java.io.StringReader; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import groovy.lang.GroovyCodeSource; -import groovy.lang.GroovyShell; - -public class GroovyShellTest extends HttpServlet { - - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - - // "groovy.lang;GroovyShell;false;evaluate;(GroovyCodeSource);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - GroovyCodeSource gcs = new GroovyCodeSource(script, "test", "Test"); - shell.evaluate(gcs); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;evaluate;(Reader);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - Reader reader = new StringReader(script); - shell.evaluate(reader); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;evaluate;(Reader,String);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - Reader reader = new StringReader(script); - shell.evaluate(reader, "_"); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;evaluate;(String);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - shell.evaluate(script); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;evaluate;(String,String);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - shell.evaluate(script, "test"); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;evaluate;(String,String,String);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - shell.evaluate(script, "test", "test2"); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;evaluate;(URI);;Argument[0];groovy;manual", - try { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - shell.parse(new URI(script)); // $hasGroovyInjection - } catch (URISyntaxException e) { - } - // "groovy.lang;GroovyShell;false;parse;(Reader);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - Reader reader = new StringReader(script); - shell.parse(reader); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;parse;(Reader,String);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - Reader reader = new StringReader(script); - shell.parse(reader, "_"); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;parse;(String);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - shell.parse(script); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;parse;(String,String);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - shell.parse(script, "_"); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;parse;(URI);;Argument[0];groovy;manual", - try { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - shell.parse(new URI(script)); // $hasGroovyInjection - } catch (URISyntaxException e) { - } - // "groovy.lang;GroovyShell;false;run;(GroovyCodeSource,String[]);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - GroovyCodeSource gcs = new GroovyCodeSource(script, "test", "Test"); - shell.run(gcs, new String[] {}); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;run;(GroovyCodeSource,List);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - GroovyCodeSource gcs = new GroovyCodeSource(script, "test", "Test"); - shell.run(gcs, new ArrayList()); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;run;(Reader,String,String[]);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - Reader reader = new StringReader(script); - shell.run(reader, "test", new String[] {}); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;run;(Reader,String,List);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - Reader reader = new StringReader(script); - shell.run(reader, "test", new ArrayList()); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;run;(String,String,String[]);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - shell.run(script, "_", new String[] {}); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;run;(String,String,List);;Argument[0];groovy;manual", - { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - shell.run(script, "_", new ArrayList()); // $hasGroovyInjection - } - // "groovy.lang;GroovyShell;false;run;(URI,String[]);;Argument[0];groovy;manual", - try { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - shell.run(new URI(script), new String[] {}); // $hasGroovyInjection - } catch (URISyntaxException e) { - } - // "groovy.lang;GroovyShell;false;run;(URI,List);;Argument[0];groovy;manual", - try { - GroovyShell shell = new GroovyShell(); - String script = request.getParameter("script"); - shell.run(new URI(script), new ArrayList()); // $hasGroovyInjection - } catch (URISyntaxException e) { - } - } -} - diff --git a/java/ql/test/query-tests/security/CWE-094/Jexl2Injection.java b/java/ql/test/query-tests/security/CWE-094/JexlInjection/Jexl2Injection.java similarity index 90% rename from java/ql/test/query-tests/security/CWE-094/Jexl2Injection.java rename to java/ql/test/query-tests/security/CWE-094/JexlInjection/Jexl2Injection.java index d7ee659a4c85..b306cf4e535a 100644 --- a/java/ql/test/query-tests/security/CWE-094/Jexl2Injection.java +++ b/java/ql/test/query-tests/security/CWE-094/JexlInjection/Jexl2Injection.java @@ -11,21 +11,21 @@ private static void runJexlExpression(String jexlExpr) { JexlEngine jexl = new JexlEngine(); Expression e = jexl.createExpression(jexlExpr); JexlContext jc = new MapContext(); - e.evaluate(jc); // $hasJexlInjection + e.evaluate(jc); // $ Alert } private static void runJexlExpressionWithJexlInfo(String jexlExpr) { JexlEngine jexl = new JexlEngine(); Expression e = jexl.createExpression(jexlExpr, new DebugInfo("unknown", 0, 0)); JexlContext jc = new MapContext(); - e.evaluate(jc); // $hasJexlInjection + e.evaluate(jc); // $ Alert } private static void runJexlScript(String jexlExpr) { JexlEngine jexl = new JexlEngine(); Script script = jexl.createScript(jexlExpr); JexlContext jc = new MapContext(); - script.execute(jc); // $hasJexlInjection + script.execute(jc); // $ Alert } private static void runJexlScriptViaCallable(String jexlExpr) { @@ -34,7 +34,7 @@ private static void runJexlScriptViaCallable(String jexlExpr) { JexlContext jc = new MapContext(); try { - script.callable(jc).call(); // $hasJexlInjection + script.callable(jc).call(); // $ Alert } catch (Exception e) { throw new RuntimeException(e); } @@ -42,37 +42,37 @@ private static void runJexlScriptViaCallable(String jexlExpr) { private static void runJexlExpressionViaGetProperty(String jexlExpr) { JexlEngine jexl = new JexlEngine(); - jexl.getProperty(new Object(), jexlExpr); // $hasJexlInjection + jexl.getProperty(new Object(), jexlExpr); // $ Alert } private static void runJexlExpressionViaSetProperty(String jexlExpr) { JexlEngine jexl = new JexlEngine(); - jexl.setProperty(new Object(), jexlExpr, new Object()); // $hasJexlInjection + jexl.setProperty(new Object(), jexlExpr, new Object()); // $ Alert } private static void runJexlExpressionViaUnifiedJEXLParseAndEvaluate(String jexlExpr) { JexlEngine jexl = new JexlEngine(); UnifiedJEXL unifiedJEXL = new UnifiedJEXL(jexl); - unifiedJEXL.parse(jexlExpr).evaluate(new MapContext()); // $hasJexlInjection + unifiedJEXL.parse(jexlExpr).evaluate(new MapContext()); // $ Alert } private static void runJexlExpressionViaUnifiedJEXLParseAndPrepare(String jexlExpr) { JexlEngine jexl = new JexlEngine(); UnifiedJEXL unifiedJEXL = new UnifiedJEXL(jexl); - unifiedJEXL.parse(jexlExpr).prepare(new MapContext()); // $hasJexlInjection + unifiedJEXL.parse(jexlExpr).prepare(new MapContext()); // $ Alert } private static void runJexlExpressionViaUnifiedJEXLTemplateEvaluate(String jexlExpr) { JexlEngine jexl = new JexlEngine(); UnifiedJEXL unifiedJEXL = new UnifiedJEXL(jexl); - unifiedJEXL.createTemplate(jexlExpr).evaluate(new MapContext(), new StringWriter()); // $hasJexlInjection + unifiedJEXL.createTemplate(jexlExpr).evaluate(new MapContext(), new StringWriter()); // $ Alert } private static void testWithSocket(Consumer action) throws Exception { try (ServerSocket serverSocket = new ServerSocket(0)) { try (Socket socket = serverSocket.accept()) { byte[] bytes = new byte[1024]; - int n = socket.getInputStream().read(bytes); + int n = socket.getInputStream().read(bytes); // $ Source String jexlExpr = new String(bytes, 0, n); action.accept(jexlExpr); } diff --git a/java/ql/test/query-tests/security/CWE-094/Jexl3Injection.java b/java/ql/test/query-tests/security/CWE-094/JexlInjection/Jexl3Injection.java similarity index 90% rename from java/ql/test/query-tests/security/CWE-094/Jexl3Injection.java rename to java/ql/test/query-tests/security/CWE-094/JexlInjection/Jexl3Injection.java index 0300b8ffe3f6..c047bb5b3158 100644 --- a/java/ql/test/query-tests/security/CWE-094/Jexl3Injection.java +++ b/java/ql/test/query-tests/security/CWE-094/JexlInjection/Jexl3Injection.java @@ -18,21 +18,21 @@ private static void runJexlExpression(String jexlExpr) { JexlEngine jexl = new JexlBuilder().create(); JexlExpression e = jexl.createExpression(jexlExpr); JexlContext jc = new MapContext(); - e.evaluate(jc); // $hasJexlInjection + e.evaluate(jc); // $ Alert } private static void runJexlExpressionWithJexlInfo(String jexlExpr) { JexlEngine jexl = new JexlBuilder().create(); JexlExpression e = jexl.createExpression(new JexlInfo("unknown", 0, 0), jexlExpr); JexlContext jc = new MapContext(); - e.evaluate(jc); // $hasJexlInjection + e.evaluate(jc); // $ Alert } private static void runJexlScript(String jexlExpr) { JexlEngine jexl = new JexlBuilder().create(); JexlScript script = jexl.createScript(jexlExpr); JexlContext jc = new MapContext(); - script.execute(jc); // $hasJexlInjection + script.execute(jc); // $ Alert } private static void runJexlScriptViaCallable(String jexlExpr) { @@ -41,7 +41,7 @@ private static void runJexlScriptViaCallable(String jexlExpr) { JexlContext jc = new MapContext(); try { - script.callable(jc).call(); // $hasJexlInjection + script.callable(jc).call(); // $ Alert } catch (Exception e) { throw new RuntimeException(e); } @@ -49,30 +49,30 @@ private static void runJexlScriptViaCallable(String jexlExpr) { private static void runJexlExpressionViaGetProperty(String jexlExpr) { JexlEngine jexl = new JexlBuilder().create(); - jexl.getProperty(new Object(), jexlExpr); // $hasJexlInjection + jexl.getProperty(new Object(), jexlExpr); // $ Alert } private static void runJexlExpressionViaSetProperty(String jexlExpr) { JexlEngine jexl = new JexlBuilder().create(); - jexl.setProperty(new Object(), jexlExpr, new Object()); // $hasJexlInjection + jexl.setProperty(new Object(), jexlExpr, new Object()); // $ Alert } private static void runJexlExpressionViaJxltEngineExpressionEvaluate(String jexlExpr) { JexlEngine jexl = new JexlBuilder().create(); JxltEngine jxlt = jexl.createJxltEngine(); - jxlt.createExpression(jexlExpr).evaluate(new MapContext()); // $hasJexlInjection + jxlt.createExpression(jexlExpr).evaluate(new MapContext()); // $ Alert } private static void runJexlExpressionViaJxltEngineExpressionPrepare(String jexlExpr) { JexlEngine jexl = new JexlBuilder().create(); JxltEngine jxlt = jexl.createJxltEngine(); - jxlt.createExpression(jexlExpr).prepare(new MapContext()); // $hasJexlInjection + jxlt.createExpression(jexlExpr).prepare(new MapContext()); // $ Alert } private static void runJexlExpressionViaJxltEngineTemplateEvaluate(String jexlExpr) { JexlEngine jexl = new JexlBuilder().create(); JxltEngine jxlt = jexl.createJxltEngine(); - jxlt.createTemplate(jexlExpr).evaluate(new MapContext(), new StringWriter()); // $hasJexlInjection + jxlt.createTemplate(jexlExpr).evaluate(new MapContext(), new StringWriter()); // $ Alert } private static void runJexlExpressionViaCallable(String jexlExpr) { @@ -81,7 +81,7 @@ private static void runJexlExpressionViaCallable(String jexlExpr) { JexlContext jc = new MapContext(); try { - e.callable(jc).call(); // $hasJexlInjection + e.callable(jc).call(); // $ Alert } catch (Exception ex) { throw new RuntimeException(ex); } @@ -91,7 +91,7 @@ private static void testWithSocket(Consumer action) throws Exception { try (ServerSocket serverSocket = new ServerSocket(0)) { try (Socket socket = serverSocket.accept()) { byte[] bytes = new byte[1024]; - int n = socket.getInputStream().read(bytes); + int n = socket.getInputStream().read(bytes); // $ Source String jexlExpr = new String(bytes, 0, n); action.accept(jexlExpr); } @@ -141,14 +141,14 @@ public static void testWithJexlExpressionCallable() throws Exception { } @PostMapping("/request") - public ResponseEntity testWithSpringControllerThatEvaluatesJexlFromPathVariable(@PathVariable String expr) { + public ResponseEntity testWithSpringControllerThatEvaluatesJexlFromPathVariable(@PathVariable String expr) { // $ Source runJexlExpression(expr); return ResponseEntity.ok(HttpStatus.OK); } @PostMapping("/request") - public ResponseEntity testWithSpringControllerThatEvaluatesJexlFromRequestBody(@RequestBody Data data) { + public ResponseEntity testWithSpringControllerThatEvaluatesJexlFromRequestBody(@RequestBody Data data) { // $ Source String expr = data.getExpr(); runJexlExpression(expr); @@ -158,7 +158,7 @@ public ResponseEntity testWithSpringControllerThatEvaluatesJexlFromRequestBody(@ @PostMapping("/request") public ResponseEntity testWithSpringControllerThatEvaluatesJexlFromRequestBodyWithNestedObjects( - @RequestBody CustomRequest customRequest) { + @RequestBody CustomRequest customRequest) { // $ Source String expr = customRequest.getData().getExpr(); runJexlExpression(expr); diff --git a/java/ql/test/query-tests/security/CWE-094/JexlInjection/JexlInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/JexlInjection/JexlInjectionTest.expected new file mode 100644 index 000000000000..24e02a7ac019 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/JexlInjection/JexlInjectionTest.expected @@ -0,0 +1,303 @@ +#select +| Jexl2Injection.java:14:9:14:9 | e | Jexl2Injection.java:75:25:75:47 | getInputStream(...) : InputStream | Jexl2Injection.java:14:9:14:9 | e | JEXL expression depends on a $@. | Jexl2Injection.java:75:25:75:47 | getInputStream(...) | user-provided value | +| Jexl2Injection.java:21:9:21:9 | e | Jexl2Injection.java:75:25:75:47 | getInputStream(...) : InputStream | Jexl2Injection.java:21:9:21:9 | e | JEXL expression depends on a $@. | Jexl2Injection.java:75:25:75:47 | getInputStream(...) | user-provided value | +| Jexl2Injection.java:28:9:28:14 | script | Jexl2Injection.java:75:25:75:47 | getInputStream(...) : InputStream | Jexl2Injection.java:28:9:28:14 | script | JEXL expression depends on a $@. | Jexl2Injection.java:75:25:75:47 | getInputStream(...) | user-provided value | +| Jexl2Injection.java:37:13:37:18 | script | Jexl2Injection.java:75:25:75:47 | getInputStream(...) : InputStream | Jexl2Injection.java:37:13:37:18 | script | JEXL expression depends on a $@. | Jexl2Injection.java:75:25:75:47 | getInputStream(...) | user-provided value | +| Jexl2Injection.java:45:40:45:47 | jexlExpr | Jexl2Injection.java:75:25:75:47 | getInputStream(...) : InputStream | Jexl2Injection.java:45:40:45:47 | jexlExpr | JEXL expression depends on a $@. | Jexl2Injection.java:75:25:75:47 | getInputStream(...) | user-provided value | +| Jexl2Injection.java:50:40:50:47 | jexlExpr | Jexl2Injection.java:75:25:75:47 | getInputStream(...) : InputStream | Jexl2Injection.java:50:40:50:47 | jexlExpr | JEXL expression depends on a $@. | Jexl2Injection.java:75:25:75:47 | getInputStream(...) | user-provided value | +| Jexl2Injection.java:56:9:56:35 | parse(...) | Jexl2Injection.java:75:25:75:47 | getInputStream(...) : InputStream | Jexl2Injection.java:56:9:56:35 | parse(...) | JEXL expression depends on a $@. | Jexl2Injection.java:75:25:75:47 | getInputStream(...) | user-provided value | +| Jexl2Injection.java:62:9:62:35 | parse(...) | Jexl2Injection.java:75:25:75:47 | getInputStream(...) : InputStream | Jexl2Injection.java:62:9:62:35 | parse(...) | JEXL expression depends on a $@. | Jexl2Injection.java:75:25:75:47 | getInputStream(...) | user-provided value | +| Jexl2Injection.java:68:9:68:44 | createTemplate(...) | Jexl2Injection.java:75:25:75:47 | getInputStream(...) : InputStream | Jexl2Injection.java:68:9:68:44 | createTemplate(...) | JEXL expression depends on a $@. | Jexl2Injection.java:75:25:75:47 | getInputStream(...) | user-provided value | +| Jexl3Injection.java:21:9:21:9 | e | Jexl3Injection.java:94:25:94:47 | getInputStream(...) : InputStream | Jexl3Injection.java:21:9:21:9 | e | JEXL expression depends on a $@. | Jexl3Injection.java:94:25:94:47 | getInputStream(...) | user-provided value | +| Jexl3Injection.java:21:9:21:9 | e | Jexl3Injection.java:144:85:144:109 | expr : String | Jexl3Injection.java:21:9:21:9 | e | JEXL expression depends on a $@. | Jexl3Injection.java:144:85:144:109 | expr | user-provided value | +| Jexl3Injection.java:21:9:21:9 | e | Jexl3Injection.java:151:84:151:105 | data : Data | Jexl3Injection.java:21:9:21:9 | e | JEXL expression depends on a $@. | Jexl3Injection.java:151:84:151:105 | data | user-provided value | +| Jexl3Injection.java:21:9:21:9 | e | Jexl3Injection.java:161:13:161:52 | customRequest : CustomRequest | Jexl3Injection.java:21:9:21:9 | e | JEXL expression depends on a $@. | Jexl3Injection.java:161:13:161:52 | customRequest | user-provided value | +| Jexl3Injection.java:28:9:28:9 | e | Jexl3Injection.java:94:25:94:47 | getInputStream(...) : InputStream | Jexl3Injection.java:28:9:28:9 | e | JEXL expression depends on a $@. | Jexl3Injection.java:94:25:94:47 | getInputStream(...) | user-provided value | +| Jexl3Injection.java:35:9:35:14 | script | Jexl3Injection.java:94:25:94:47 | getInputStream(...) : InputStream | Jexl3Injection.java:35:9:35:14 | script | JEXL expression depends on a $@. | Jexl3Injection.java:94:25:94:47 | getInputStream(...) | user-provided value | +| Jexl3Injection.java:44:13:44:18 | script | Jexl3Injection.java:94:25:94:47 | getInputStream(...) : InputStream | Jexl3Injection.java:44:13:44:18 | script | JEXL expression depends on a $@. | Jexl3Injection.java:94:25:94:47 | getInputStream(...) | user-provided value | +| Jexl3Injection.java:52:40:52:47 | jexlExpr | Jexl3Injection.java:94:25:94:47 | getInputStream(...) : InputStream | Jexl3Injection.java:52:40:52:47 | jexlExpr | JEXL expression depends on a $@. | Jexl3Injection.java:94:25:94:47 | getInputStream(...) | user-provided value | +| Jexl3Injection.java:57:40:57:47 | jexlExpr | Jexl3Injection.java:94:25:94:47 | getInputStream(...) : InputStream | Jexl3Injection.java:57:40:57:47 | jexlExpr | JEXL expression depends on a $@. | Jexl3Injection.java:94:25:94:47 | getInputStream(...) | user-provided value | +| Jexl3Injection.java:63:9:63:39 | createExpression(...) | Jexl3Injection.java:94:25:94:47 | getInputStream(...) : InputStream | Jexl3Injection.java:63:9:63:39 | createExpression(...) | JEXL expression depends on a $@. | Jexl3Injection.java:94:25:94:47 | getInputStream(...) | user-provided value | +| Jexl3Injection.java:69:9:69:39 | createExpression(...) | Jexl3Injection.java:94:25:94:47 | getInputStream(...) : InputStream | Jexl3Injection.java:69:9:69:39 | createExpression(...) | JEXL expression depends on a $@. | Jexl3Injection.java:94:25:94:47 | getInputStream(...) | user-provided value | +| Jexl3Injection.java:75:9:75:37 | createTemplate(...) | Jexl3Injection.java:94:25:94:47 | getInputStream(...) : InputStream | Jexl3Injection.java:75:9:75:37 | createTemplate(...) | JEXL expression depends on a $@. | Jexl3Injection.java:94:25:94:47 | getInputStream(...) | user-provided value | +| Jexl3Injection.java:84:13:84:13 | e | Jexl3Injection.java:94:25:94:47 | getInputStream(...) : InputStream | Jexl3Injection.java:84:13:84:13 | e | JEXL expression depends on a $@. | Jexl3Injection.java:94:25:94:47 | getInputStream(...) | user-provided value | +edges +| Jexl2Injection.java:10:43:10:57 | jexlExpr : String | Jexl2Injection.java:12:46:12:53 | jexlExpr : String | provenance | | +| Jexl2Injection.java:12:24:12:54 | createExpression(...) : Expression | Jexl2Injection.java:14:9:14:9 | e | provenance | Sink:MaD:1 | +| Jexl2Injection.java:12:46:12:53 | jexlExpr : String | Jexl2Injection.java:12:24:12:54 | createExpression(...) : Expression | provenance | Config | +| Jexl2Injection.java:17:55:17:69 | jexlExpr : String | Jexl2Injection.java:19:46:19:53 | jexlExpr : String | provenance | | +| Jexl2Injection.java:19:24:19:86 | createExpression(...) : Expression | Jexl2Injection.java:21:9:21:9 | e | provenance | Sink:MaD:1 | +| Jexl2Injection.java:19:46:19:53 | jexlExpr : String | Jexl2Injection.java:19:24:19:86 | createExpression(...) : Expression | provenance | Config | +| Jexl2Injection.java:24:39:24:53 | jexlExpr : String | Jexl2Injection.java:26:43:26:50 | jexlExpr : String | provenance | | +| Jexl2Injection.java:26:25:26:51 | createScript(...) : Script | Jexl2Injection.java:28:9:28:14 | script | provenance | Sink:MaD:5 | +| Jexl2Injection.java:26:43:26:50 | jexlExpr : String | Jexl2Injection.java:26:25:26:51 | createScript(...) : Script | provenance | Config | +| Jexl2Injection.java:31:50:31:64 | jexlExpr : String | Jexl2Injection.java:33:43:33:50 | jexlExpr : String | provenance | | +| Jexl2Injection.java:33:25:33:51 | createScript(...) : Script | Jexl2Injection.java:37:13:37:18 | script | provenance | Sink:MaD:4 | +| Jexl2Injection.java:33:43:33:50 | jexlExpr : String | Jexl2Injection.java:33:25:33:51 | createScript(...) : Script | provenance | Config | +| Jexl2Injection.java:43:57:43:71 | jexlExpr : String | Jexl2Injection.java:45:40:45:47 | jexlExpr | provenance | Sink:MaD:2 | +| Jexl2Injection.java:48:57:48:71 | jexlExpr : String | Jexl2Injection.java:50:40:50:47 | jexlExpr | provenance | Sink:MaD:3 | +| Jexl2Injection.java:53:73:53:87 | jexlExpr : String | Jexl2Injection.java:56:27:56:34 | jexlExpr : String | provenance | | +| Jexl2Injection.java:56:27:56:34 | jexlExpr : String | Jexl2Injection.java:56:9:56:35 | parse(...) | provenance | Config Sink:MaD:6 | +| Jexl2Injection.java:59:72:59:86 | jexlExpr : String | Jexl2Injection.java:62:27:62:34 | jexlExpr : String | provenance | | +| Jexl2Injection.java:62:27:62:34 | jexlExpr : String | Jexl2Injection.java:62:9:62:35 | parse(...) | provenance | Config Sink:MaD:7 | +| Jexl2Injection.java:65:73:65:87 | jexlExpr : String | Jexl2Injection.java:68:36:68:43 | jexlExpr : String | provenance | | +| Jexl2Injection.java:68:36:68:43 | jexlExpr : String | Jexl2Injection.java:68:9:68:44 | createTemplate(...) | provenance | Config Sink:MaD:8 | +| Jexl2Injection.java:75:25:75:47 | getInputStream(...) : InputStream | Jexl2Injection.java:75:54:75:58 | bytes [post update] : byte[] | provenance | Src:MaD:18 MaD:19 | +| Jexl2Injection.java:75:54:75:58 | bytes [post update] : byte[] | Jexl2Injection.java:76:46:76:50 | bytes : byte[] | provenance | | +| Jexl2Injection.java:76:35:76:57 | new String(...) : String | Jexl2Injection.java:77:31:77:38 | jexlExpr : String | provenance | | +| Jexl2Injection.java:76:46:76:50 | bytes : byte[] | Jexl2Injection.java:76:35:76:57 | new String(...) : String | provenance | MaD:20 | +| Jexl2Injection.java:77:31:77:38 | jexlExpr : String | Jexl2Injection.java:85:24:85:56 | jexlExpr : String | provenance | | +| Jexl2Injection.java:77:31:77:38 | jexlExpr : String | Jexl2Injection.java:89:24:89:68 | jexlExpr : String | provenance | | +| Jexl2Injection.java:77:31:77:38 | jexlExpr : String | Jexl2Injection.java:93:24:93:52 | jexlExpr : String | provenance | | +| Jexl2Injection.java:77:31:77:38 | jexlExpr : String | Jexl2Injection.java:97:24:97:63 | jexlExpr : String | provenance | | +| Jexl2Injection.java:77:31:77:38 | jexlExpr : String | Jexl2Injection.java:101:24:101:70 | jexlExpr : String | provenance | | +| Jexl2Injection.java:77:31:77:38 | jexlExpr : String | Jexl2Injection.java:105:24:105:70 | jexlExpr : String | provenance | | +| Jexl2Injection.java:77:31:77:38 | jexlExpr : String | Jexl2Injection.java:109:24:109:86 | jexlExpr : String | provenance | | +| Jexl2Injection.java:77:31:77:38 | jexlExpr : String | Jexl2Injection.java:113:24:113:85 | jexlExpr : String | provenance | | +| Jexl2Injection.java:77:31:77:38 | jexlExpr : String | Jexl2Injection.java:117:24:117:86 | jexlExpr : String | provenance | | +| Jexl2Injection.java:85:24:85:56 | jexlExpr : String | Jexl2Injection.java:10:43:10:57 | jexlExpr : String | provenance | | +| Jexl2Injection.java:85:24:85:56 | jexlExpr : String | Jexl2Injection.java:85:24:85:56 | jexlExpr : String | provenance | | +| Jexl2Injection.java:89:24:89:68 | jexlExpr : String | Jexl2Injection.java:17:55:17:69 | jexlExpr : String | provenance | | +| Jexl2Injection.java:89:24:89:68 | jexlExpr : String | Jexl2Injection.java:89:24:89:68 | jexlExpr : String | provenance | | +| Jexl2Injection.java:93:24:93:52 | jexlExpr : String | Jexl2Injection.java:24:39:24:53 | jexlExpr : String | provenance | | +| Jexl2Injection.java:93:24:93:52 | jexlExpr : String | Jexl2Injection.java:93:24:93:52 | jexlExpr : String | provenance | | +| Jexl2Injection.java:97:24:97:63 | jexlExpr : String | Jexl2Injection.java:31:50:31:64 | jexlExpr : String | provenance | | +| Jexl2Injection.java:97:24:97:63 | jexlExpr : String | Jexl2Injection.java:97:24:97:63 | jexlExpr : String | provenance | | +| Jexl2Injection.java:101:24:101:70 | jexlExpr : String | Jexl2Injection.java:43:57:43:71 | jexlExpr : String | provenance | | +| Jexl2Injection.java:101:24:101:70 | jexlExpr : String | Jexl2Injection.java:101:24:101:70 | jexlExpr : String | provenance | | +| Jexl2Injection.java:105:24:105:70 | jexlExpr : String | Jexl2Injection.java:48:57:48:71 | jexlExpr : String | provenance | | +| Jexl2Injection.java:105:24:105:70 | jexlExpr : String | Jexl2Injection.java:105:24:105:70 | jexlExpr : String | provenance | | +| Jexl2Injection.java:109:24:109:86 | jexlExpr : String | Jexl2Injection.java:53:73:53:87 | jexlExpr : String | provenance | | +| Jexl2Injection.java:109:24:109:86 | jexlExpr : String | Jexl2Injection.java:109:24:109:86 | jexlExpr : String | provenance | | +| Jexl2Injection.java:113:24:113:85 | jexlExpr : String | Jexl2Injection.java:59:72:59:86 | jexlExpr : String | provenance | | +| Jexl2Injection.java:113:24:113:85 | jexlExpr : String | Jexl2Injection.java:113:24:113:85 | jexlExpr : String | provenance | | +| Jexl2Injection.java:117:24:117:86 | jexlExpr : String | Jexl2Injection.java:65:73:65:87 | jexlExpr : String | provenance | | +| Jexl2Injection.java:117:24:117:86 | jexlExpr : String | Jexl2Injection.java:117:24:117:86 | jexlExpr : String | provenance | | +| Jexl3Injection.java:17:43:17:57 | jexlExpr : String | Jexl3Injection.java:19:50:19:57 | jexlExpr : String | provenance | | +| Jexl3Injection.java:19:28:19:58 | createExpression(...) : JexlExpression | Jexl3Injection.java:21:9:21:9 | e | provenance | Sink:MaD:12 | +| Jexl3Injection.java:19:50:19:57 | jexlExpr : String | Jexl3Injection.java:19:28:19:58 | createExpression(...) : JexlExpression | provenance | Config | +| Jexl3Injection.java:24:55:24:69 | jexlExpr : String | Jexl3Injection.java:26:81:26:88 | jexlExpr : String | provenance | | +| Jexl3Injection.java:26:28:26:89 | createExpression(...) : JexlExpression | Jexl3Injection.java:28:9:28:9 | e | provenance | Sink:MaD:12 | +| Jexl3Injection.java:26:81:26:88 | jexlExpr : String | Jexl3Injection.java:26:28:26:89 | createExpression(...) : JexlExpression | provenance | Config | +| Jexl3Injection.java:31:39:31:53 | jexlExpr : String | Jexl3Injection.java:33:47:33:54 | jexlExpr : String | provenance | | +| Jexl3Injection.java:33:29:33:55 | createScript(...) : JexlScript | Jexl3Injection.java:35:9:35:14 | script | provenance | Sink:MaD:14 | +| Jexl3Injection.java:33:47:33:54 | jexlExpr : String | Jexl3Injection.java:33:29:33:55 | createScript(...) : JexlScript | provenance | Config | +| Jexl3Injection.java:38:50:38:64 | jexlExpr : String | Jexl3Injection.java:40:47:40:54 | jexlExpr : String | provenance | | +| Jexl3Injection.java:40:29:40:55 | createScript(...) : JexlScript | Jexl3Injection.java:44:13:44:18 | script | provenance | Sink:MaD:13 | +| Jexl3Injection.java:40:47:40:54 | jexlExpr : String | Jexl3Injection.java:40:29:40:55 | createScript(...) : JexlScript | provenance | Config | +| Jexl3Injection.java:50:57:50:71 | jexlExpr : String | Jexl3Injection.java:52:40:52:47 | jexlExpr | provenance | Sink:MaD:9 | +| Jexl3Injection.java:55:57:55:71 | jexlExpr : String | Jexl3Injection.java:57:40:57:47 | jexlExpr | provenance | Sink:MaD:10 | +| Jexl3Injection.java:60:74:60:88 | jexlExpr : String | Jexl3Injection.java:63:31:63:38 | jexlExpr : String | provenance | | +| Jexl3Injection.java:63:31:63:38 | jexlExpr : String | Jexl3Injection.java:63:9:63:39 | createExpression(...) | provenance | Config Sink:MaD:15 | +| Jexl3Injection.java:66:73:66:87 | jexlExpr : String | Jexl3Injection.java:69:31:69:38 | jexlExpr : String | provenance | | +| Jexl3Injection.java:69:31:69:38 | jexlExpr : String | Jexl3Injection.java:69:9:69:39 | createExpression(...) | provenance | Config Sink:MaD:16 | +| Jexl3Injection.java:72:72:72:86 | jexlExpr : String | Jexl3Injection.java:75:29:75:36 | jexlExpr : String | provenance | | +| Jexl3Injection.java:75:29:75:36 | jexlExpr : String | Jexl3Injection.java:75:9:75:37 | createTemplate(...) | provenance | Config Sink:MaD:17 | +| Jexl3Injection.java:78:54:78:68 | jexlExpr : String | Jexl3Injection.java:80:50:80:57 | jexlExpr : String | provenance | | +| Jexl3Injection.java:80:28:80:58 | createExpression(...) : JexlExpression | Jexl3Injection.java:84:13:84:13 | e | provenance | Sink:MaD:11 | +| Jexl3Injection.java:80:50:80:57 | jexlExpr : String | Jexl3Injection.java:80:28:80:58 | createExpression(...) : JexlExpression | provenance | Config | +| Jexl3Injection.java:94:25:94:47 | getInputStream(...) : InputStream | Jexl3Injection.java:94:54:94:58 | bytes [post update] : byte[] | provenance | Src:MaD:18 MaD:19 | +| Jexl3Injection.java:94:54:94:58 | bytes [post update] : byte[] | Jexl3Injection.java:95:46:95:50 | bytes : byte[] | provenance | | +| Jexl3Injection.java:95:35:95:57 | new String(...) : String | Jexl3Injection.java:96:31:96:38 | jexlExpr : String | provenance | | +| Jexl3Injection.java:95:46:95:50 | bytes : byte[] | Jexl3Injection.java:95:35:95:57 | new String(...) : String | provenance | MaD:20 | +| Jexl3Injection.java:96:31:96:38 | jexlExpr : String | Jexl3Injection.java:104:24:104:56 | jexlExpr : String | provenance | | +| Jexl3Injection.java:96:31:96:38 | jexlExpr : String | Jexl3Injection.java:108:24:108:68 | jexlExpr : String | provenance | | +| Jexl3Injection.java:96:31:96:38 | jexlExpr : String | Jexl3Injection.java:112:24:112:52 | jexlExpr : String | provenance | | +| Jexl3Injection.java:96:31:96:38 | jexlExpr : String | Jexl3Injection.java:116:24:116:63 | jexlExpr : String | provenance | | +| Jexl3Injection.java:96:31:96:38 | jexlExpr : String | Jexl3Injection.java:120:24:120:70 | jexlExpr : String | provenance | | +| Jexl3Injection.java:96:31:96:38 | jexlExpr : String | Jexl3Injection.java:124:24:124:70 | jexlExpr : String | provenance | | +| Jexl3Injection.java:96:31:96:38 | jexlExpr : String | Jexl3Injection.java:128:24:128:87 | jexlExpr : String | provenance | | +| Jexl3Injection.java:96:31:96:38 | jexlExpr : String | Jexl3Injection.java:132:24:132:86 | jexlExpr : String | provenance | | +| Jexl3Injection.java:96:31:96:38 | jexlExpr : String | Jexl3Injection.java:136:24:136:85 | jexlExpr : String | provenance | | +| Jexl3Injection.java:96:31:96:38 | jexlExpr : String | Jexl3Injection.java:140:24:140:67 | jexlExpr : String | provenance | | +| Jexl3Injection.java:104:24:104:56 | jexlExpr : String | Jexl3Injection.java:17:43:17:57 | jexlExpr : String | provenance | | +| Jexl3Injection.java:104:24:104:56 | jexlExpr : String | Jexl3Injection.java:104:24:104:56 | jexlExpr : String | provenance | | +| Jexl3Injection.java:108:24:108:68 | jexlExpr : String | Jexl3Injection.java:24:55:24:69 | jexlExpr : String | provenance | | +| Jexl3Injection.java:108:24:108:68 | jexlExpr : String | Jexl3Injection.java:108:24:108:68 | jexlExpr : String | provenance | | +| Jexl3Injection.java:112:24:112:52 | jexlExpr : String | Jexl3Injection.java:31:39:31:53 | jexlExpr : String | provenance | | +| Jexl3Injection.java:112:24:112:52 | jexlExpr : String | Jexl3Injection.java:112:24:112:52 | jexlExpr : String | provenance | | +| Jexl3Injection.java:116:24:116:63 | jexlExpr : String | Jexl3Injection.java:38:50:38:64 | jexlExpr : String | provenance | | +| Jexl3Injection.java:116:24:116:63 | jexlExpr : String | Jexl3Injection.java:116:24:116:63 | jexlExpr : String | provenance | | +| Jexl3Injection.java:120:24:120:70 | jexlExpr : String | Jexl3Injection.java:50:57:50:71 | jexlExpr : String | provenance | | +| Jexl3Injection.java:120:24:120:70 | jexlExpr : String | Jexl3Injection.java:120:24:120:70 | jexlExpr : String | provenance | | +| Jexl3Injection.java:124:24:124:70 | jexlExpr : String | Jexl3Injection.java:55:57:55:71 | jexlExpr : String | provenance | | +| Jexl3Injection.java:124:24:124:70 | jexlExpr : String | Jexl3Injection.java:124:24:124:70 | jexlExpr : String | provenance | | +| Jexl3Injection.java:128:24:128:87 | jexlExpr : String | Jexl3Injection.java:60:74:60:88 | jexlExpr : String | provenance | | +| Jexl3Injection.java:128:24:128:87 | jexlExpr : String | Jexl3Injection.java:128:24:128:87 | jexlExpr : String | provenance | | +| Jexl3Injection.java:132:24:132:86 | jexlExpr : String | Jexl3Injection.java:66:73:66:87 | jexlExpr : String | provenance | | +| Jexl3Injection.java:132:24:132:86 | jexlExpr : String | Jexl3Injection.java:132:24:132:86 | jexlExpr : String | provenance | | +| Jexl3Injection.java:136:24:136:85 | jexlExpr : String | Jexl3Injection.java:72:72:72:86 | jexlExpr : String | provenance | | +| Jexl3Injection.java:136:24:136:85 | jexlExpr : String | Jexl3Injection.java:136:24:136:85 | jexlExpr : String | provenance | | +| Jexl3Injection.java:140:24:140:67 | jexlExpr : String | Jexl3Injection.java:78:54:78:68 | jexlExpr : String | provenance | | +| Jexl3Injection.java:140:24:140:67 | jexlExpr : String | Jexl3Injection.java:140:24:140:67 | jexlExpr : String | provenance | | +| Jexl3Injection.java:144:85:144:109 | expr : String | Jexl3Injection.java:146:27:146:30 | expr : String | provenance | | +| Jexl3Injection.java:146:27:146:30 | expr : String | Jexl3Injection.java:17:43:17:57 | jexlExpr : String | provenance | | +| Jexl3Injection.java:151:84:151:105 | data : Data | Jexl3Injection.java:153:23:153:26 | data : Data | provenance | | +| Jexl3Injection.java:151:84:151:105 | data : Data | Jexl3Injection.java:154:27:154:30 | expr : String | provenance | SpringUntrustedDataType.getter | +| Jexl3Injection.java:153:23:153:26 | data : Data | Jexl3Injection.java:153:23:153:36 | getExpr(...) : String | provenance | entrypointFieldStep | +| Jexl3Injection.java:153:23:153:26 | data : Data | Jexl3Injection.java:190:23:190:29 | parameter this : Data | provenance | | +| Jexl3Injection.java:153:23:153:36 | getExpr(...) : String | Jexl3Injection.java:154:27:154:30 | expr : String | provenance | | +| Jexl3Injection.java:154:27:154:30 | expr : String | Jexl3Injection.java:17:43:17:57 | jexlExpr : String | provenance | | +| Jexl3Injection.java:161:13:161:52 | customRequest : CustomRequest | Jexl3Injection.java:163:23:163:35 | customRequest : CustomRequest | provenance | | +| Jexl3Injection.java:161:13:161:52 | customRequest : CustomRequest | Jexl3Injection.java:163:23:163:45 | getData(...) : Data | provenance | SpringUntrustedDataType.getter | +| Jexl3Injection.java:161:13:161:52 | customRequest : CustomRequest | Jexl3Injection.java:164:27:164:30 | expr : String | provenance | SpringUntrustedDataType.getter | +| Jexl3Injection.java:163:23:163:35 | customRequest : CustomRequest | Jexl3Injection.java:163:23:163:45 | getData(...) : Data | provenance | entrypointFieldStep | +| Jexl3Injection.java:163:23:163:35 | customRequest : CustomRequest | Jexl3Injection.java:177:21:177:27 | parameter this : CustomRequest | provenance | | +| Jexl3Injection.java:163:23:163:45 | getData(...) : Data | Jexl3Injection.java:163:23:163:55 | getExpr(...) : String | provenance | entrypointFieldStep | +| Jexl3Injection.java:163:23:163:45 | getData(...) : Data | Jexl3Injection.java:164:27:164:30 | expr : String | provenance | SpringUntrustedDataType.getter | +| Jexl3Injection.java:163:23:163:45 | getData(...) : Data | Jexl3Injection.java:190:23:190:29 | parameter this : Data | provenance | | +| Jexl3Injection.java:163:23:163:55 | getExpr(...) : String | Jexl3Injection.java:164:27:164:30 | expr : String | provenance | | +| Jexl3Injection.java:164:27:164:30 | expr : String | Jexl3Injection.java:17:43:17:57 | jexlExpr : String | provenance | | +| Jexl3Injection.java:177:21:177:27 | parameter this : CustomRequest | Jexl3Injection.java:178:20:178:23 | data : Data | provenance | entrypointFieldStep | +| Jexl3Injection.java:190:23:190:29 | parameter this : Data | Jexl3Injection.java:191:20:191:23 | expr : String | provenance | entrypointFieldStep | +models +| 1 | Sink: org.apache.commons.jexl2; Expression; false; evaluate; ; ; Argument[this]; jexl-injection; manual | +| 2 | Sink: org.apache.commons.jexl2; JexlEngine; false; getProperty; (Object,String); ; Argument[1]; jexl-injection; manual | +| 3 | Sink: org.apache.commons.jexl2; JexlEngine; false; setProperty; (Object,String,Object); ; Argument[1]; jexl-injection; manual | +| 4 | Sink: org.apache.commons.jexl2; Script; false; callable; ; ; Argument[this]; jexl-injection; manual | +| 5 | Sink: org.apache.commons.jexl2; Script; false; execute; ; ; Argument[this]; jexl-injection; manual | +| 6 | Sink: org.apache.commons.jexl2; UnifiedJEXL$Expression; false; evaluate; ; ; Argument[this]; jexl-injection; manual | +| 7 | Sink: org.apache.commons.jexl2; UnifiedJEXL$Expression; false; prepare; ; ; Argument[this]; jexl-injection; manual | +| 8 | Sink: org.apache.commons.jexl2; UnifiedJEXL$Template; false; evaluate; ; ; Argument[this]; jexl-injection; manual | +| 9 | Sink: org.apache.commons.jexl3; JexlEngine; false; getProperty; (Object,String); ; Argument[1]; jexl-injection; manual | +| 10 | Sink: org.apache.commons.jexl3; JexlEngine; false; setProperty; (Object,String,Object); ; Argument[1]; jexl-injection; manual | +| 11 | Sink: org.apache.commons.jexl3; JexlExpression; false; callable; ; ; Argument[this]; jexl-injection; manual | +| 12 | Sink: org.apache.commons.jexl3; JexlExpression; false; evaluate; ; ; Argument[this]; jexl-injection; manual | +| 13 | Sink: org.apache.commons.jexl3; JexlScript; false; callable; ; ; Argument[this]; jexl-injection; manual | +| 14 | Sink: org.apache.commons.jexl3; JexlScript; false; execute; ; ; Argument[this]; jexl-injection; manual | +| 15 | Sink: org.apache.commons.jexl3; JxltEngine$Expression; false; evaluate; ; ; Argument[this]; jexl-injection; manual | +| 16 | Sink: org.apache.commons.jexl3; JxltEngine$Expression; false; prepare; ; ; Argument[this]; jexl-injection; manual | +| 17 | Sink: org.apache.commons.jexl3; JxltEngine$Template; false; evaluate; ; ; Argument[this]; jexl-injection; manual | +| 18 | Source: java.net; Socket; false; getInputStream; (); ; ReturnValue; remote; manual | +| 19 | Summary: java.io; InputStream; true; read; (byte[]); ; Argument[this]; Argument[0]; taint; manual | +| 20 | Summary: java.lang; String; false; String; ; ; Argument[0]; Argument[this]; taint; manual | +nodes +| Jexl2Injection.java:10:43:10:57 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:12:24:12:54 | createExpression(...) : Expression | semmle.label | createExpression(...) : Expression | +| Jexl2Injection.java:12:46:12:53 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:14:9:14:9 | e | semmle.label | e | +| Jexl2Injection.java:17:55:17:69 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:19:24:19:86 | createExpression(...) : Expression | semmle.label | createExpression(...) : Expression | +| Jexl2Injection.java:19:46:19:53 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:21:9:21:9 | e | semmle.label | e | +| Jexl2Injection.java:24:39:24:53 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:26:25:26:51 | createScript(...) : Script | semmle.label | createScript(...) : Script | +| Jexl2Injection.java:26:43:26:50 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:28:9:28:14 | script | semmle.label | script | +| Jexl2Injection.java:31:50:31:64 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:33:25:33:51 | createScript(...) : Script | semmle.label | createScript(...) : Script | +| Jexl2Injection.java:33:43:33:50 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:37:13:37:18 | script | semmle.label | script | +| Jexl2Injection.java:43:57:43:71 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:45:40:45:47 | jexlExpr | semmle.label | jexlExpr | +| Jexl2Injection.java:48:57:48:71 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:50:40:50:47 | jexlExpr | semmle.label | jexlExpr | +| Jexl2Injection.java:53:73:53:87 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:56:9:56:35 | parse(...) | semmle.label | parse(...) | +| Jexl2Injection.java:56:27:56:34 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:59:72:59:86 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:62:9:62:35 | parse(...) | semmle.label | parse(...) | +| Jexl2Injection.java:62:27:62:34 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:65:73:65:87 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:68:9:68:44 | createTemplate(...) | semmle.label | createTemplate(...) | +| Jexl2Injection.java:68:36:68:43 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:75:25:75:47 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| Jexl2Injection.java:75:54:75:58 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| Jexl2Injection.java:76:35:76:57 | new String(...) : String | semmle.label | new String(...) : String | +| Jexl2Injection.java:76:46:76:50 | bytes : byte[] | semmle.label | bytes : byte[] | +| Jexl2Injection.java:77:31:77:38 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:85:24:85:56 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:85:24:85:56 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:89:24:89:68 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:89:24:89:68 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:93:24:93:52 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:93:24:93:52 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:97:24:97:63 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:97:24:97:63 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:101:24:101:70 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:101:24:101:70 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:105:24:105:70 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:105:24:105:70 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:109:24:109:86 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:109:24:109:86 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:113:24:113:85 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:113:24:113:85 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:117:24:117:86 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl2Injection.java:117:24:117:86 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:17:43:17:57 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:19:28:19:58 | createExpression(...) : JexlExpression | semmle.label | createExpression(...) : JexlExpression | +| Jexl3Injection.java:19:50:19:57 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:21:9:21:9 | e | semmle.label | e | +| Jexl3Injection.java:24:55:24:69 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:26:28:26:89 | createExpression(...) : JexlExpression | semmle.label | createExpression(...) : JexlExpression | +| Jexl3Injection.java:26:81:26:88 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:28:9:28:9 | e | semmle.label | e | +| Jexl3Injection.java:31:39:31:53 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:33:29:33:55 | createScript(...) : JexlScript | semmle.label | createScript(...) : JexlScript | +| Jexl3Injection.java:33:47:33:54 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:35:9:35:14 | script | semmle.label | script | +| Jexl3Injection.java:38:50:38:64 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:40:29:40:55 | createScript(...) : JexlScript | semmle.label | createScript(...) : JexlScript | +| Jexl3Injection.java:40:47:40:54 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:44:13:44:18 | script | semmle.label | script | +| Jexl3Injection.java:50:57:50:71 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:52:40:52:47 | jexlExpr | semmle.label | jexlExpr | +| Jexl3Injection.java:55:57:55:71 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:57:40:57:47 | jexlExpr | semmle.label | jexlExpr | +| Jexl3Injection.java:60:74:60:88 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:63:9:63:39 | createExpression(...) | semmle.label | createExpression(...) | +| Jexl3Injection.java:63:31:63:38 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:66:73:66:87 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:69:9:69:39 | createExpression(...) | semmle.label | createExpression(...) | +| Jexl3Injection.java:69:31:69:38 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:72:72:72:86 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:75:9:75:37 | createTemplate(...) | semmle.label | createTemplate(...) | +| Jexl3Injection.java:75:29:75:36 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:78:54:78:68 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:80:28:80:58 | createExpression(...) : JexlExpression | semmle.label | createExpression(...) : JexlExpression | +| Jexl3Injection.java:80:50:80:57 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:84:13:84:13 | e | semmle.label | e | +| Jexl3Injection.java:94:25:94:47 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| Jexl3Injection.java:94:54:94:58 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| Jexl3Injection.java:95:35:95:57 | new String(...) : String | semmle.label | new String(...) : String | +| Jexl3Injection.java:95:46:95:50 | bytes : byte[] | semmle.label | bytes : byte[] | +| Jexl3Injection.java:96:31:96:38 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:104:24:104:56 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:104:24:104:56 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:108:24:108:68 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:108:24:108:68 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:112:24:112:52 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:112:24:112:52 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:116:24:116:63 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:116:24:116:63 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:120:24:120:70 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:120:24:120:70 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:124:24:124:70 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:124:24:124:70 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:128:24:128:87 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:128:24:128:87 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:132:24:132:86 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:132:24:132:86 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:136:24:136:85 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:136:24:136:85 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:140:24:140:67 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:140:24:140:67 | jexlExpr : String | semmle.label | jexlExpr : String | +| Jexl3Injection.java:144:85:144:109 | expr : String | semmle.label | expr : String | +| Jexl3Injection.java:146:27:146:30 | expr : String | semmle.label | expr : String | +| Jexl3Injection.java:151:84:151:105 | data : Data | semmle.label | data : Data | +| Jexl3Injection.java:153:23:153:26 | data : Data | semmle.label | data : Data | +| Jexl3Injection.java:153:23:153:36 | getExpr(...) : String | semmle.label | getExpr(...) : String | +| Jexl3Injection.java:154:27:154:30 | expr : String | semmle.label | expr : String | +| Jexl3Injection.java:161:13:161:52 | customRequest : CustomRequest | semmle.label | customRequest : CustomRequest | +| Jexl3Injection.java:163:23:163:35 | customRequest : CustomRequest | semmle.label | customRequest : CustomRequest | +| Jexl3Injection.java:163:23:163:45 | getData(...) : Data | semmle.label | getData(...) : Data | +| Jexl3Injection.java:163:23:163:55 | getExpr(...) : String | semmle.label | getExpr(...) : String | +| Jexl3Injection.java:164:27:164:30 | expr : String | semmle.label | expr : String | +| Jexl3Injection.java:177:21:177:27 | parameter this : CustomRequest | semmle.label | parameter this : CustomRequest | +| Jexl3Injection.java:178:20:178:23 | data : Data | semmle.label | data : Data | +| Jexl3Injection.java:190:23:190:29 | parameter this : Data | semmle.label | parameter this : Data | +| Jexl3Injection.java:191:20:191:23 | expr : String | semmle.label | expr : String | +subpaths +| Jexl3Injection.java:153:23:153:26 | data : Data | Jexl3Injection.java:190:23:190:29 | parameter this : Data | Jexl3Injection.java:191:20:191:23 | expr : String | Jexl3Injection.java:153:23:153:36 | getExpr(...) : String | +| Jexl3Injection.java:163:23:163:35 | customRequest : CustomRequest | Jexl3Injection.java:177:21:177:27 | parameter this : CustomRequest | Jexl3Injection.java:178:20:178:23 | data : Data | Jexl3Injection.java:163:23:163:45 | getData(...) : Data | +| Jexl3Injection.java:163:23:163:45 | getData(...) : Data | Jexl3Injection.java:190:23:190:29 | parameter this : Data | Jexl3Injection.java:191:20:191:23 | expr : String | Jexl3Injection.java:163:23:163:55 | getExpr(...) : String | diff --git a/java/ql/test/query-tests/security/CWE-094/JexlInjection/JexlInjectionTest.qlref b/java/ql/test/query-tests/security/CWE-094/JexlInjection/JexlInjectionTest.qlref new file mode 100644 index 000000000000..a33d55722f6d --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/JexlInjection/JexlInjectionTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-094/JexlInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-094/SandboxedJexl2.java b/java/ql/test/query-tests/security/CWE-094/JexlInjection/SandboxedJexl2.java similarity index 100% rename from java/ql/test/query-tests/security/CWE-094/SandboxedJexl2.java rename to java/ql/test/query-tests/security/CWE-094/JexlInjection/SandboxedJexl2.java diff --git a/java/ql/test/query-tests/security/CWE-094/SandboxedJexl3.java b/java/ql/test/query-tests/security/CWE-094/JexlInjection/SandboxedJexl3.java similarity index 100% rename from java/ql/test/query-tests/security/CWE-094/SandboxedJexl3.java rename to java/ql/test/query-tests/security/CWE-094/JexlInjection/SandboxedJexl3.java diff --git a/java/ql/test/query-tests/security/CWE-094/JexlInjection/options b/java/ql/test/query-tests/security/CWE-094/JexlInjection/options new file mode 100644 index 000000000000..d7c8332682ba --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/JexlInjection/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/validation-api-2.0.1.Final:${testdir}/../../../../stubs/springframework-5.8.x:${testdir}/../../../../stubs/apache-commons-jexl-2.1.1:${testdir}/../../../../stubs/apache-commons-jexl-3.1:${testdir}/../../../../stubs/apache-commons-logging-1.2:${testdir}/../../../../stubs/mvel2-2.4.7:${testdir}/../../../../stubs/groovy-all-3.0.7:${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/scriptengine:${testdir}/../../../../stubs/jsr223-api:${testdir}/../../../../stubs/apache-freemarker-2.3.31:${testdir}/../../../../stubs/jinjava-2.6.0:${testdir}/../../../../stubs/pebble-3.1.5:${testdir}/../../../../stubs/thymeleaf-3.0.14:${testdir}/../../../../stubs/apache-velocity-2.3:${testdir}/../../../..//stubs/google-android-9.0.0 diff --git a/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.ql deleted file mode 100644 index 0515c0fc75da..000000000000 --- a/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import semmle.code.java.security.JexlInjectionQuery -import utils.test.InlineExpectationsTest - -module JexlInjectionTest implements TestSig { - string getARelevantTag() { result = "hasJexlInjection" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasJexlInjection" and - exists(DataFlow::Node sink | JexlInjectionFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/MvelInjection/MvelInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/MvelInjection/MvelInjectionTest.expected new file mode 100644 index 000000000000..eb2034ab06de --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/MvelInjection/MvelInjectionTest.expected @@ -0,0 +1,133 @@ +#select +| MvelInjectionTest.java:24:15:24:26 | read(...) | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:24:15:24:26 | read(...) | MVEL expression depends on a $@. | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) | user-provided value | +| MvelInjectionTest.java:29:28:29:37 | expression | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:29:28:29:37 | expression | MVEL expression depends on a $@. | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) | user-provided value | +| MvelInjectionTest.java:35:5:35:13 | statement | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:35:5:35:13 | statement | MVEL expression depends on a $@. | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) | user-provided value | +| MvelInjectionTest.java:36:5:36:13 | statement | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:36:5:36:13 | statement | MVEL expression depends on a $@. | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) | user-provided value | +| MvelInjectionTest.java:42:5:42:14 | expression | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:42:5:42:14 | expression | MVEL expression depends on a $@. | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) | user-provided value | +| MvelInjectionTest.java:48:5:48:14 | expression | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:48:5:48:14 | expression | MVEL expression depends on a $@. | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) | user-provided value | +| MvelInjectionTest.java:56:5:56:18 | compiledScript | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:56:5:56:18 | compiledScript | MVEL expression depends on a $@. | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) | user-provided value | +| MvelInjectionTest.java:59:21:59:26 | script | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:59:21:59:26 | script | MVEL expression depends on a $@. | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) | user-provided value | +| MvelInjectionTest.java:67:5:67:10 | script | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:67:5:67:10 | script | MVEL expression depends on a $@. | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) | user-provided value | +| MvelInjectionTest.java:71:26:71:37 | read(...) | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:71:26:71:37 | read(...) | MVEL expression depends on a $@. | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) | user-provided value | +| MvelInjectionTest.java:75:29:75:74 | compileTemplate(...) | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:75:29:75:74 | compileTemplate(...) | MVEL expression depends on a $@. | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) | user-provided value | +| MvelInjectionTest.java:80:29:80:46 | compile(...) | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:80:29:80:46 | compile(...) | MVEL expression depends on a $@. | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) | user-provided value | +| MvelInjectionTest.java:86:32:86:41 | expression | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:86:32:86:41 | expression | MVEL expression depends on a $@. | MvelInjectionTest.java:90:27:90:49 | getInputStream(...) | user-provided value | +edges +| MvelInjectionTest.java:28:31:28:66 | compileExpression(...) : Serializable | MvelInjectionTest.java:29:28:29:37 | expression | provenance | Sink:MaD:11 | +| MvelInjectionTest.java:28:54:28:65 | read(...) : String | MvelInjectionTest.java:28:31:28:66 | compileExpression(...) : Serializable | provenance | Config | +| MvelInjectionTest.java:33:35:33:70 | new ExpressionCompiler(...) : ExpressionCompiler | MvelInjectionTest.java:34:37:34:44 | compiler : ExpressionCompiler | provenance | | +| MvelInjectionTest.java:33:58:33:69 | read(...) : String | MvelInjectionTest.java:33:35:33:70 | new ExpressionCompiler(...) : ExpressionCompiler | provenance | Config | +| MvelInjectionTest.java:34:37:34:44 | compiler : ExpressionCompiler | MvelInjectionTest.java:34:37:34:54 | compile(...) : CompiledExpression | provenance | Config | +| MvelInjectionTest.java:34:37:34:54 | compile(...) : CompiledExpression | MvelInjectionTest.java:35:5:35:13 | statement | provenance | Sink:MaD:5 | +| MvelInjectionTest.java:34:37:34:54 | compile(...) : CompiledExpression | MvelInjectionTest.java:36:5:36:13 | statement | provenance | Sink:MaD:2 | +| MvelInjectionTest.java:40:35:40:70 | new ExpressionCompiler(...) : ExpressionCompiler | MvelInjectionTest.java:41:37:41:44 | compiler : ExpressionCompiler | provenance | | +| MvelInjectionTest.java:40:58:40:69 | read(...) : String | MvelInjectionTest.java:40:35:40:70 | new ExpressionCompiler(...) : ExpressionCompiler | provenance | Config | +| MvelInjectionTest.java:41:37:41:44 | compiler : ExpressionCompiler | MvelInjectionTest.java:41:37:41:54 | compile(...) : CompiledExpression | provenance | Config | +| MvelInjectionTest.java:41:37:41:54 | compile(...) : CompiledExpression | MvelInjectionTest.java:42:5:42:14 | expression | provenance | Sink:MaD:4 | +| MvelInjectionTest.java:47:9:47:96 | new CompiledAccExpression(...) : CompiledAccExpression | MvelInjectionTest.java:48:5:48:14 | expression | provenance | Sink:MaD:3 | +| MvelInjectionTest.java:47:35:47:46 | read(...) : String | MvelInjectionTest.java:47:35:47:60 | toCharArray(...) : char[] | provenance | MaD:16 | +| MvelInjectionTest.java:47:35:47:60 | toCharArray(...) : char[] | MvelInjectionTest.java:47:9:47:96 | new CompiledAccExpression(...) : CompiledAccExpression | provenance | Config | +| MvelInjectionTest.java:52:20:52:31 | read(...) : String | MvelInjectionTest.java:55:52:55:56 | input : String | provenance | | +| MvelInjectionTest.java:55:37:55:57 | compile(...) : CompiledScript | MvelInjectionTest.java:56:5:56:18 | compiledScript | provenance | Sink:MaD:1 | +| MvelInjectionTest.java:55:52:55:56 | input : String | MvelInjectionTest.java:55:37:55:57 | compile(...) : CompiledScript | provenance | Config | +| MvelInjectionTest.java:55:52:55:56 | input : String | MvelInjectionTest.java:58:49:58:53 | input : String | provenance | | +| MvelInjectionTest.java:58:27:58:54 | compiledScript(...) : Serializable | MvelInjectionTest.java:59:21:59:26 | script | provenance | Sink:MaD:7 | +| MvelInjectionTest.java:58:49:58:53 | input : String | MvelInjectionTest.java:58:27:58:54 | compiledScript(...) : Serializable | provenance | Config | +| MvelInjectionTest.java:64:35:64:70 | new ExpressionCompiler(...) : ExpressionCompiler | MvelInjectionTest.java:65:37:65:44 | compiler : ExpressionCompiler | provenance | | +| MvelInjectionTest.java:64:58:64:69 | read(...) : String | MvelInjectionTest.java:64:35:64:70 | new ExpressionCompiler(...) : ExpressionCompiler | provenance | Config | +| MvelInjectionTest.java:65:37:65:44 | compiler : ExpressionCompiler | MvelInjectionTest.java:65:37:65:54 | compile(...) : CompiledExpression | provenance | Config | +| MvelInjectionTest.java:65:37:65:54 | compile(...) : CompiledExpression | MvelInjectionTest.java:66:64:66:72 | statement : CompiledExpression | provenance | | +| MvelInjectionTest.java:66:33:66:73 | new MvelCompiledScript(...) : MvelCompiledScript | MvelInjectionTest.java:67:5:67:10 | script | provenance | Sink:MaD:6 | +| MvelInjectionTest.java:66:64:66:72 | statement : CompiledExpression | MvelInjectionTest.java:66:33:66:73 | new MvelCompiledScript(...) : MvelCompiledScript | provenance | Config | +| MvelInjectionTest.java:75:62:75:73 | read(...) : String | MvelInjectionTest.java:75:29:75:74 | compileTemplate(...) | provenance | Config Sink:MaD:9 | +| MvelInjectionTest.java:79:33:79:66 | new TemplateCompiler(...) : TemplateCompiler | MvelInjectionTest.java:80:29:80:36 | compiler : TemplateCompiler | provenance | | +| MvelInjectionTest.java:79:54:79:65 | read(...) : String | MvelInjectionTest.java:79:33:79:66 | new TemplateCompiler(...) : TemplateCompiler | provenance | Config | +| MvelInjectionTest.java:80:29:80:36 | compiler : TemplateCompiler | MvelInjectionTest.java:80:29:80:46 | compile(...) | provenance | Config Sink:MaD:9 | +| MvelInjectionTest.java:84:35:84:70 | new ExpressionCompiler(...) : ExpressionCompiler | MvelInjectionTest.java:85:37:85:44 | compiler : ExpressionCompiler | provenance | | +| MvelInjectionTest.java:84:58:84:69 | read(...) : String | MvelInjectionTest.java:84:35:84:70 | new ExpressionCompiler(...) : ExpressionCompiler | provenance | Config | +| MvelInjectionTest.java:85:37:85:44 | compiler : ExpressionCompiler | MvelInjectionTest.java:85:37:85:54 | compile(...) : CompiledExpression | provenance | Config | +| MvelInjectionTest.java:85:37:85:54 | compile(...) : CompiledExpression | MvelInjectionTest.java:86:32:86:41 | expression | provenance | Sink:MaD:12 | +| MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | MvelInjectionTest.java:92:15:92:16 | is : InputStream | provenance | Src:MaD:13 | +| MvelInjectionTest.java:92:15:92:16 | is : InputStream | MvelInjectionTest.java:92:23:92:27 | bytes [post update] : byte[] | provenance | MaD:14 | +| MvelInjectionTest.java:92:23:92:27 | bytes [post update] : byte[] | MvelInjectionTest.java:93:25:93:29 | bytes : byte[] | provenance | | +| MvelInjectionTest.java:93:14:93:36 | new String(...) : String | MvelInjectionTest.java:24:15:24:26 | read(...) | provenance | Sink:MaD:10 | +| MvelInjectionTest.java:93:14:93:36 | new String(...) : String | MvelInjectionTest.java:28:54:28:65 | read(...) : String | provenance | | +| MvelInjectionTest.java:93:14:93:36 | new String(...) : String | MvelInjectionTest.java:33:58:33:69 | read(...) : String | provenance | | +| MvelInjectionTest.java:93:14:93:36 | new String(...) : String | MvelInjectionTest.java:40:58:40:69 | read(...) : String | provenance | | +| MvelInjectionTest.java:93:14:93:36 | new String(...) : String | MvelInjectionTest.java:47:35:47:46 | read(...) : String | provenance | | +| MvelInjectionTest.java:93:14:93:36 | new String(...) : String | MvelInjectionTest.java:52:20:52:31 | read(...) : String | provenance | | +| MvelInjectionTest.java:93:14:93:36 | new String(...) : String | MvelInjectionTest.java:64:58:64:69 | read(...) : String | provenance | | +| MvelInjectionTest.java:93:14:93:36 | new String(...) : String | MvelInjectionTest.java:71:26:71:37 | read(...) | provenance | Sink:MaD:8 | +| MvelInjectionTest.java:93:14:93:36 | new String(...) : String | MvelInjectionTest.java:75:62:75:73 | read(...) : String | provenance | | +| MvelInjectionTest.java:93:14:93:36 | new String(...) : String | MvelInjectionTest.java:79:54:79:65 | read(...) : String | provenance | | +| MvelInjectionTest.java:93:14:93:36 | new String(...) : String | MvelInjectionTest.java:84:58:84:69 | read(...) : String | provenance | | +| MvelInjectionTest.java:93:25:93:29 | bytes : byte[] | MvelInjectionTest.java:93:14:93:36 | new String(...) : String | provenance | MaD:15 | +models +| 1 | Sink: javax.script; CompiledScript; false; eval; ; ; Argument[this]; mvel-injection; manual | +| 2 | Sink: org.mvel2.compiler; Accessor; false; getValue; ; ; Argument[this]; mvel-injection; manual | +| 3 | Sink: org.mvel2.compiler; CompiledAccExpression; false; getValue; ; ; Argument[this]; mvel-injection; manual | +| 4 | Sink: org.mvel2.compiler; CompiledExpression; false; getDirectValue; ; ; Argument[this]; mvel-injection; manual | +| 5 | Sink: org.mvel2.compiler; ExecutableStatement; false; getValue; ; ; Argument[this]; mvel-injection; manual | +| 6 | Sink: org.mvel2.jsr223; MvelCompiledScript; false; eval; ; ; Argument[this]; mvel-injection; manual | +| 7 | Sink: org.mvel2.jsr223; MvelScriptEngine; false; evaluate; ; ; Argument[0]; mvel-injection; manual | +| 8 | Sink: org.mvel2.templates; TemplateRuntime; false; eval; ; ; Argument[0]; mvel-injection; manual | +| 9 | Sink: org.mvel2.templates; TemplateRuntime; false; execute; ; ; Argument[0]; mvel-injection; manual | +| 10 | Sink: org.mvel2; MVEL; false; eval; ; ; Argument[0]; mvel-injection; manual | +| 11 | Sink: org.mvel2; MVEL; false; executeExpression; ; ; Argument[0]; mvel-injection; manual | +| 12 | Sink: org.mvel2; MVELRuntime; false; execute; ; ; Argument[1]; mvel-injection; manual | +| 13 | Source: java.net; Socket; false; getInputStream; (); ; ReturnValue; remote; manual | +| 14 | Summary: java.io; InputStream; true; read; (byte[]); ; Argument[this]; Argument[0]; taint; manual | +| 15 | Summary: java.lang; String; false; String; ; ; Argument[0]; Argument[this]; taint; manual | +| 16 | Summary: java.lang; String; false; toCharArray; ; ; Argument[this]; ReturnValue; taint; manual | +nodes +| MvelInjectionTest.java:24:15:24:26 | read(...) | semmle.label | read(...) | +| MvelInjectionTest.java:28:31:28:66 | compileExpression(...) : Serializable | semmle.label | compileExpression(...) : Serializable | +| MvelInjectionTest.java:28:54:28:65 | read(...) : String | semmle.label | read(...) : String | +| MvelInjectionTest.java:29:28:29:37 | expression | semmle.label | expression | +| MvelInjectionTest.java:33:35:33:70 | new ExpressionCompiler(...) : ExpressionCompiler | semmle.label | new ExpressionCompiler(...) : ExpressionCompiler | +| MvelInjectionTest.java:33:58:33:69 | read(...) : String | semmle.label | read(...) : String | +| MvelInjectionTest.java:34:37:34:44 | compiler : ExpressionCompiler | semmle.label | compiler : ExpressionCompiler | +| MvelInjectionTest.java:34:37:34:54 | compile(...) : CompiledExpression | semmle.label | compile(...) : CompiledExpression | +| MvelInjectionTest.java:35:5:35:13 | statement | semmle.label | statement | +| MvelInjectionTest.java:36:5:36:13 | statement | semmle.label | statement | +| MvelInjectionTest.java:40:35:40:70 | new ExpressionCompiler(...) : ExpressionCompiler | semmle.label | new ExpressionCompiler(...) : ExpressionCompiler | +| MvelInjectionTest.java:40:58:40:69 | read(...) : String | semmle.label | read(...) : String | +| MvelInjectionTest.java:41:37:41:44 | compiler : ExpressionCompiler | semmle.label | compiler : ExpressionCompiler | +| MvelInjectionTest.java:41:37:41:54 | compile(...) : CompiledExpression | semmle.label | compile(...) : CompiledExpression | +| MvelInjectionTest.java:42:5:42:14 | expression | semmle.label | expression | +| MvelInjectionTest.java:47:9:47:96 | new CompiledAccExpression(...) : CompiledAccExpression | semmle.label | new CompiledAccExpression(...) : CompiledAccExpression | +| MvelInjectionTest.java:47:35:47:46 | read(...) : String | semmle.label | read(...) : String | +| MvelInjectionTest.java:47:35:47:60 | toCharArray(...) : char[] | semmle.label | toCharArray(...) : char[] | +| MvelInjectionTest.java:48:5:48:14 | expression | semmle.label | expression | +| MvelInjectionTest.java:52:20:52:31 | read(...) : String | semmle.label | read(...) : String | +| MvelInjectionTest.java:55:37:55:57 | compile(...) : CompiledScript | semmle.label | compile(...) : CompiledScript | +| MvelInjectionTest.java:55:52:55:56 | input : String | semmle.label | input : String | +| MvelInjectionTest.java:56:5:56:18 | compiledScript | semmle.label | compiledScript | +| MvelInjectionTest.java:58:27:58:54 | compiledScript(...) : Serializable | semmle.label | compiledScript(...) : Serializable | +| MvelInjectionTest.java:58:49:58:53 | input : String | semmle.label | input : String | +| MvelInjectionTest.java:59:21:59:26 | script | semmle.label | script | +| MvelInjectionTest.java:64:35:64:70 | new ExpressionCompiler(...) : ExpressionCompiler | semmle.label | new ExpressionCompiler(...) : ExpressionCompiler | +| MvelInjectionTest.java:64:58:64:69 | read(...) : String | semmle.label | read(...) : String | +| MvelInjectionTest.java:65:37:65:44 | compiler : ExpressionCompiler | semmle.label | compiler : ExpressionCompiler | +| MvelInjectionTest.java:65:37:65:54 | compile(...) : CompiledExpression | semmle.label | compile(...) : CompiledExpression | +| MvelInjectionTest.java:66:33:66:73 | new MvelCompiledScript(...) : MvelCompiledScript | semmle.label | new MvelCompiledScript(...) : MvelCompiledScript | +| MvelInjectionTest.java:66:64:66:72 | statement : CompiledExpression | semmle.label | statement : CompiledExpression | +| MvelInjectionTest.java:67:5:67:10 | script | semmle.label | script | +| MvelInjectionTest.java:71:26:71:37 | read(...) | semmle.label | read(...) | +| MvelInjectionTest.java:75:29:75:74 | compileTemplate(...) | semmle.label | compileTemplate(...) | +| MvelInjectionTest.java:75:62:75:73 | read(...) : String | semmle.label | read(...) : String | +| MvelInjectionTest.java:79:33:79:66 | new TemplateCompiler(...) : TemplateCompiler | semmle.label | new TemplateCompiler(...) : TemplateCompiler | +| MvelInjectionTest.java:79:54:79:65 | read(...) : String | semmle.label | read(...) : String | +| MvelInjectionTest.java:80:29:80:36 | compiler : TemplateCompiler | semmle.label | compiler : TemplateCompiler | +| MvelInjectionTest.java:80:29:80:46 | compile(...) | semmle.label | compile(...) | +| MvelInjectionTest.java:84:35:84:70 | new ExpressionCompiler(...) : ExpressionCompiler | semmle.label | new ExpressionCompiler(...) : ExpressionCompiler | +| MvelInjectionTest.java:84:58:84:69 | read(...) : String | semmle.label | read(...) : String | +| MvelInjectionTest.java:85:37:85:44 | compiler : ExpressionCompiler | semmle.label | compiler : ExpressionCompiler | +| MvelInjectionTest.java:85:37:85:54 | compile(...) : CompiledExpression | semmle.label | compile(...) : CompiledExpression | +| MvelInjectionTest.java:86:32:86:41 | expression | semmle.label | expression | +| MvelInjectionTest.java:90:27:90:49 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| MvelInjectionTest.java:92:15:92:16 | is : InputStream | semmle.label | is : InputStream | +| MvelInjectionTest.java:92:23:92:27 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| MvelInjectionTest.java:93:14:93:36 | new String(...) : String | semmle.label | new String(...) : String | +| MvelInjectionTest.java:93:25:93:29 | bytes : byte[] | semmle.label | bytes : byte[] | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.java b/java/ql/test/query-tests/security/CWE-094/MvelInjection/MvelInjectionTest.java similarity index 84% rename from java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.java rename to java/ql/test/query-tests/security/CWE-094/MvelInjection/MvelInjectionTest.java index 4013246eecda..4e6738dbfd9a 100644 --- a/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.java +++ b/java/ql/test/query-tests/security/CWE-094/MvelInjection/MvelInjectionTest.java @@ -21,31 +21,31 @@ public class MvelInjectionTest { public static void testWithMvelEval(Socket socket) throws IOException { - MVEL.eval(read(socket)); // $hasMvelInjection + MVEL.eval(read(socket)); // $ Alert } public static void testWithMvelCompileAndExecute(Socket socket) throws IOException { Serializable expression = MVEL.compileExpression(read(socket)); - MVEL.executeExpression(expression); // $hasMvelInjection + MVEL.executeExpression(expression); // $ Alert } public static void testWithExpressionCompiler(Socket socket) throws IOException { ExpressionCompiler compiler = new ExpressionCompiler(read(socket)); ExecutableStatement statement = compiler.compile(); - statement.getValue(new Object(), new ImmutableDefaultFactory()); // $hasMvelInjection - statement.getValue(new Object(), new Object(), new ImmutableDefaultFactory()); // $hasMvelInjection + statement.getValue(new Object(), new ImmutableDefaultFactory()); // $ Alert + statement.getValue(new Object(), new Object(), new ImmutableDefaultFactory()); // $ Alert } public static void testWithCompiledExpressionGetDirectValue(Socket socket) throws IOException { ExpressionCompiler compiler = new ExpressionCompiler(read(socket)); CompiledExpression expression = compiler.compile(); - expression.getDirectValue(new Object(), new ImmutableDefaultFactory()); // $hasMvelInjection + expression.getDirectValue(new Object(), new ImmutableDefaultFactory()); // $ Alert } public static void testCompiledAccExpressionGetValue(Socket socket) throws IOException { CompiledAccExpression expression = new CompiledAccExpression(read(socket).toCharArray(), Object.class, new ParserContext()); - expression.getValue(new Object(), new ImmutableDefaultFactory()); // $hasMvelInjection + expression.getValue(new Object(), new ImmutableDefaultFactory()); // $ Alert } public static void testMvelScriptEngineCompileAndEvaluate(Socket socket) throws Exception { @@ -53,10 +53,10 @@ public static void testMvelScriptEngineCompileAndEvaluate(Socket socket) throws MvelScriptEngine engine = new MvelScriptEngine(); CompiledScript compiledScript = engine.compile(input); - compiledScript.eval(); // $hasMvelInjection + compiledScript.eval(); // $ Alert Serializable script = engine.compiledScript(input); - engine.evaluate(script, new SimpleScriptContext()); // $hasMvelInjection + engine.evaluate(script, new SimpleScriptContext()); // $ Alert } public static void testMvelCompiledScriptCompileAndEvaluate(Socket socket) throws Exception { @@ -64,30 +64,30 @@ public static void testMvelCompiledScriptCompileAndEvaluate(Socket socket) throw ExpressionCompiler compiler = new ExpressionCompiler(read(socket)); ExecutableStatement statement = compiler.compile(); MvelCompiledScript script = new MvelCompiledScript(engine, statement); - script.eval(new SimpleScriptContext()); // $hasMvelInjection + script.eval(new SimpleScriptContext()); // $ Alert } public static void testTemplateRuntimeEval(Socket socket) throws Exception { - TemplateRuntime.eval(read(socket), new HashMap()); // $hasMvelInjection + TemplateRuntime.eval(read(socket), new HashMap()); // $ Alert } public static void testTemplateRuntimeCompileTemplateAndExecute(Socket socket) throws Exception { - TemplateRuntime.execute(TemplateCompiler.compileTemplate(read(socket)), new HashMap()); // $hasMvelInjection + TemplateRuntime.execute(TemplateCompiler.compileTemplate(read(socket)), new HashMap()); // $ Alert } public static void testTemplateRuntimeCompileAndExecute(Socket socket) throws Exception { TemplateCompiler compiler = new TemplateCompiler(read(socket)); - TemplateRuntime.execute(compiler.compile(), new HashMap()); // $hasMvelInjection + TemplateRuntime.execute(compiler.compile(), new HashMap()); // $ Alert } public static void testMvelRuntimeExecute(Socket socket) throws Exception { ExpressionCompiler compiler = new ExpressionCompiler(read(socket)); CompiledExpression expression = compiler.compile(); - MVELRuntime.execute(false, expression, new Object(), new ImmutableDefaultFactory()); // $hasMvelInjection + MVELRuntime.execute(false, expression, new Object(), new ImmutableDefaultFactory()); // $ Alert } public static String read(Socket socket) throws IOException { - try (InputStream is = socket.getInputStream()) { + try (InputStream is = socket.getInputStream()) { // $ Source byte[] bytes = new byte[1024]; int n = is.read(bytes); return new String(bytes, 0, n); diff --git a/java/ql/test/query-tests/security/CWE-094/MvelInjection/MvelInjectionTest.qlref b/java/ql/test/query-tests/security/CWE-094/MvelInjection/MvelInjectionTest.qlref new file mode 100644 index 000000000000..9236766fe8c6 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/MvelInjection/MvelInjectionTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-094/MvelInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-094/MvelInjection/options b/java/ql/test/query-tests/security/CWE-094/MvelInjection/options new file mode 100644 index 000000000000..d7c8332682ba --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/MvelInjection/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/validation-api-2.0.1.Final:${testdir}/../../../../stubs/springframework-5.8.x:${testdir}/../../../../stubs/apache-commons-jexl-2.1.1:${testdir}/../../../../stubs/apache-commons-jexl-3.1:${testdir}/../../../../stubs/apache-commons-logging-1.2:${testdir}/../../../../stubs/mvel2-2.4.7:${testdir}/../../../../stubs/groovy-all-3.0.7:${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/scriptengine:${testdir}/../../../../stubs/jsr223-api:${testdir}/../../../../stubs/apache-freemarker-2.3.31:${testdir}/../../../../stubs/jinjava-2.6.0:${testdir}/../../../../stubs/pebble-3.1.5:${testdir}/../../../../stubs/thymeleaf-3.0.14:${testdir}/../../../../stubs/apache-velocity-2.3:${testdir}/../../../..//stubs/google-android-9.0.0 diff --git a/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.ql deleted file mode 100644 index 08dc091898c8..000000000000 --- a/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.ql +++ /dev/null @@ -1,20 +0,0 @@ -import java -import semmle.code.java.dataflow.TaintTracking -import semmle.code.java.dataflow.FlowSources -import semmle.code.java.security.MvelInjectionQuery -import utils.test.InlineExpectationsTest - -module HasMvelInjectionTest implements TestSig { - string getARelevantTag() { result = "hasMvelInjection" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasMvelInjection" and - exists(DataFlow::Node sink | MvelInjectionFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/SpelInjection/SpelInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/SpelInjection/SpelInjectionTest.expected new file mode 100644 index 000000000000..37df514bac5f --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/SpelInjection/SpelInjectionTest.expected @@ -0,0 +1,120 @@ +#select +| SpelInjectionTest.java:24:5:24:14 | expression | SpelInjectionTest.java:16:22:16:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:24:5:24:14 | expression | SpEL expression depends on a $@. | SpelInjectionTest.java:16:22:16:44 | getInputStream(...) | user-provided value | +| SpelInjectionTest.java:35:5:35:14 | expression | SpelInjectionTest.java:28:22:28:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:35:5:35:14 | expression | SpEL expression depends on a $@. | SpelInjectionTest.java:28:22:28:44 | getInputStream(...) | user-provided value | +| SpelInjectionTest.java:46:5:46:14 | expression | SpelInjectionTest.java:39:22:39:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:46:5:46:14 | expression | SpEL expression depends on a $@. | SpelInjectionTest.java:39:22:39:44 | getInputStream(...) | user-provided value | +| SpelInjectionTest.java:60:5:60:14 | expression | SpelInjectionTest.java:50:22:50:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:60:5:60:14 | expression | SpEL expression depends on a $@. | SpelInjectionTest.java:50:22:50:44 | getInputStream(...) | user-provided value | +| SpelInjectionTest.java:71:5:71:14 | expression | SpelInjectionTest.java:64:22:64:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:71:5:71:14 | expression | SpEL expression depends on a $@. | SpelInjectionTest.java:64:22:64:44 | getInputStream(...) | user-provided value | +| SpelInjectionTest.java:82:5:82:14 | expression | SpelInjectionTest.java:75:22:75:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:82:5:82:14 | expression | SpEL expression depends on a $@. | SpelInjectionTest.java:75:22:75:44 | getInputStream(...) | user-provided value | +| SpelInjectionTest.java:95:5:95:14 | expression | SpelInjectionTest.java:86:22:86:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:95:5:95:14 | expression | SpEL expression depends on a $@. | SpelInjectionTest.java:86:22:86:44 | getInputStream(...) | user-provided value | +edges +| SpelInjectionTest.java:16:22:16:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:19:13:19:14 | in : InputStream | provenance | Src:MaD:1 | +| SpelInjectionTest.java:19:13:19:14 | in : InputStream | SpelInjectionTest.java:19:21:19:25 | bytes [post update] : byte[] | provenance | MaD:2 | +| SpelInjectionTest.java:19:21:19:25 | bytes [post update] : byte[] | SpelInjectionTest.java:20:31:20:35 | bytes : byte[] | provenance | | +| SpelInjectionTest.java:20:20:20:42 | new String(...) : String | SpelInjectionTest.java:23:52:23:56 | input : String | provenance | | +| SpelInjectionTest.java:20:31:20:35 | bytes : byte[] | SpelInjectionTest.java:20:20:20:42 | new String(...) : String | provenance | MaD:3 | +| SpelInjectionTest.java:23:29:23:57 | parseExpression(...) : Expression | SpelInjectionTest.java:24:5:24:14 | expression | provenance | | +| SpelInjectionTest.java:23:52:23:56 | input : String | SpelInjectionTest.java:23:29:23:57 | parseExpression(...) : Expression | provenance | Config | +| SpelInjectionTest.java:28:22:28:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:31:13:31:14 | in : InputStream | provenance | Src:MaD:1 | +| SpelInjectionTest.java:31:13:31:14 | in : InputStream | SpelInjectionTest.java:31:21:31:25 | bytes [post update] : byte[] | provenance | MaD:2 | +| SpelInjectionTest.java:31:21:31:25 | bytes [post update] : byte[] | SpelInjectionTest.java:32:31:32:35 | bytes : byte[] | provenance | | +| SpelInjectionTest.java:32:20:32:42 | new String(...) : String | SpelInjectionTest.java:34:49:34:53 | input : String | provenance | | +| SpelInjectionTest.java:32:31:32:35 | bytes : byte[] | SpelInjectionTest.java:32:20:32:42 | new String(...) : String | provenance | MaD:3 | +| SpelInjectionTest.java:34:33:34:54 | parseRaw(...) : SpelExpression | SpelInjectionTest.java:35:5:35:14 | expression | provenance | | +| SpelInjectionTest.java:34:49:34:53 | input : String | SpelInjectionTest.java:34:33:34:54 | parseRaw(...) : SpelExpression | provenance | Config | +| SpelInjectionTest.java:39:22:39:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:42:13:42:14 | in : InputStream | provenance | Src:MaD:1 | +| SpelInjectionTest.java:42:13:42:14 | in : InputStream | SpelInjectionTest.java:42:21:42:25 | bytes [post update] : byte[] | provenance | MaD:2 | +| SpelInjectionTest.java:42:21:42:25 | bytes [post update] : byte[] | SpelInjectionTest.java:43:31:43:35 | bytes : byte[] | provenance | | +| SpelInjectionTest.java:43:20:43:42 | new String(...) : String | SpelInjectionTest.java:45:72:45:76 | input : String | provenance | | +| SpelInjectionTest.java:43:31:43:35 | bytes : byte[] | SpelInjectionTest.java:43:20:43:42 | new String(...) : String | provenance | MaD:3 | +| SpelInjectionTest.java:45:29:45:77 | parseExpression(...) : Expression | SpelInjectionTest.java:46:5:46:14 | expression | provenance | | +| SpelInjectionTest.java:45:72:45:76 | input : String | SpelInjectionTest.java:45:29:45:77 | parseExpression(...) : Expression | provenance | Config | +| SpelInjectionTest.java:50:22:50:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:53:13:53:14 | in : InputStream | provenance | Src:MaD:1 | +| SpelInjectionTest.java:53:13:53:14 | in : InputStream | SpelInjectionTest.java:53:21:53:25 | bytes [post update] : byte[] | provenance | MaD:2 | +| SpelInjectionTest.java:53:21:53:25 | bytes [post update] : byte[] | SpelInjectionTest.java:54:31:54:35 | bytes : byte[] | provenance | | +| SpelInjectionTest.java:54:20:54:42 | new String(...) : String | SpelInjectionTest.java:56:72:56:76 | input : String | provenance | | +| SpelInjectionTest.java:54:31:54:35 | bytes : byte[] | SpelInjectionTest.java:54:20:54:42 | new String(...) : String | provenance | MaD:3 | +| SpelInjectionTest.java:56:29:56:77 | parseExpression(...) : Expression | SpelInjectionTest.java:60:5:60:14 | expression | provenance | | +| SpelInjectionTest.java:56:72:56:76 | input : String | SpelInjectionTest.java:56:29:56:77 | parseExpression(...) : Expression | provenance | Config | +| SpelInjectionTest.java:64:22:64:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:67:13:67:14 | in : InputStream | provenance | Src:MaD:1 | +| SpelInjectionTest.java:67:13:67:14 | in : InputStream | SpelInjectionTest.java:67:21:67:25 | bytes [post update] : byte[] | provenance | MaD:2 | +| SpelInjectionTest.java:67:21:67:25 | bytes [post update] : byte[] | SpelInjectionTest.java:68:31:68:35 | bytes : byte[] | provenance | | +| SpelInjectionTest.java:68:20:68:42 | new String(...) : String | SpelInjectionTest.java:70:52:70:56 | input : String | provenance | | +| SpelInjectionTest.java:68:31:68:35 | bytes : byte[] | SpelInjectionTest.java:68:20:68:42 | new String(...) : String | provenance | MaD:3 | +| SpelInjectionTest.java:70:29:70:57 | parseExpression(...) : Expression | SpelInjectionTest.java:71:5:71:14 | expression | provenance | | +| SpelInjectionTest.java:70:52:70:56 | input : String | SpelInjectionTest.java:70:29:70:57 | parseExpression(...) : Expression | provenance | Config | +| SpelInjectionTest.java:75:22:75:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:78:13:78:14 | in : InputStream | provenance | Src:MaD:1 | +| SpelInjectionTest.java:78:13:78:14 | in : InputStream | SpelInjectionTest.java:78:21:78:25 | bytes [post update] : byte[] | provenance | MaD:2 | +| SpelInjectionTest.java:78:21:78:25 | bytes [post update] : byte[] | SpelInjectionTest.java:79:31:79:35 | bytes : byte[] | provenance | | +| SpelInjectionTest.java:79:20:79:42 | new String(...) : String | SpelInjectionTest.java:81:52:81:56 | input : String | provenance | | +| SpelInjectionTest.java:79:31:79:35 | bytes : byte[] | SpelInjectionTest.java:79:20:79:42 | new String(...) : String | provenance | MaD:3 | +| SpelInjectionTest.java:81:29:81:57 | parseExpression(...) : Expression | SpelInjectionTest.java:82:5:82:14 | expression | provenance | | +| SpelInjectionTest.java:81:52:81:56 | input : String | SpelInjectionTest.java:81:29:81:57 | parseExpression(...) : Expression | provenance | Config | +| SpelInjectionTest.java:86:22:86:44 | getInputStream(...) : InputStream | SpelInjectionTest.java:89:13:89:14 | in : InputStream | provenance | Src:MaD:1 | +| SpelInjectionTest.java:89:13:89:14 | in : InputStream | SpelInjectionTest.java:89:21:89:25 | bytes [post update] : byte[] | provenance | MaD:2 | +| SpelInjectionTest.java:89:21:89:25 | bytes [post update] : byte[] | SpelInjectionTest.java:90:31:90:35 | bytes : byte[] | provenance | | +| SpelInjectionTest.java:90:20:90:42 | new String(...) : String | SpelInjectionTest.java:92:52:92:56 | input : String | provenance | | +| SpelInjectionTest.java:90:31:90:35 | bytes : byte[] | SpelInjectionTest.java:90:20:90:42 | new String(...) : String | provenance | MaD:3 | +| SpelInjectionTest.java:92:29:92:57 | parseExpression(...) : Expression | SpelInjectionTest.java:95:5:95:14 | expression | provenance | | +| SpelInjectionTest.java:92:52:92:56 | input : String | SpelInjectionTest.java:92:29:92:57 | parseExpression(...) : Expression | provenance | Config | +models +| 1 | Source: java.net; Socket; false; getInputStream; (); ; ReturnValue; remote; manual | +| 2 | Summary: java.io; InputStream; true; read; (byte[]); ; Argument[this]; Argument[0]; taint; manual | +| 3 | Summary: java.lang; String; false; String; ; ; Argument[0]; Argument[this]; taint; manual | +nodes +| SpelInjectionTest.java:16:22:16:44 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SpelInjectionTest.java:19:13:19:14 | in : InputStream | semmle.label | in : InputStream | +| SpelInjectionTest.java:19:21:19:25 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| SpelInjectionTest.java:20:20:20:42 | new String(...) : String | semmle.label | new String(...) : String | +| SpelInjectionTest.java:20:31:20:35 | bytes : byte[] | semmle.label | bytes : byte[] | +| SpelInjectionTest.java:23:29:23:57 | parseExpression(...) : Expression | semmle.label | parseExpression(...) : Expression | +| SpelInjectionTest.java:23:52:23:56 | input : String | semmle.label | input : String | +| SpelInjectionTest.java:24:5:24:14 | expression | semmle.label | expression | +| SpelInjectionTest.java:28:22:28:44 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SpelInjectionTest.java:31:13:31:14 | in : InputStream | semmle.label | in : InputStream | +| SpelInjectionTest.java:31:21:31:25 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| SpelInjectionTest.java:32:20:32:42 | new String(...) : String | semmle.label | new String(...) : String | +| SpelInjectionTest.java:32:31:32:35 | bytes : byte[] | semmle.label | bytes : byte[] | +| SpelInjectionTest.java:34:33:34:54 | parseRaw(...) : SpelExpression | semmle.label | parseRaw(...) : SpelExpression | +| SpelInjectionTest.java:34:49:34:53 | input : String | semmle.label | input : String | +| SpelInjectionTest.java:35:5:35:14 | expression | semmle.label | expression | +| SpelInjectionTest.java:39:22:39:44 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SpelInjectionTest.java:42:13:42:14 | in : InputStream | semmle.label | in : InputStream | +| SpelInjectionTest.java:42:21:42:25 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| SpelInjectionTest.java:43:20:43:42 | new String(...) : String | semmle.label | new String(...) : String | +| SpelInjectionTest.java:43:31:43:35 | bytes : byte[] | semmle.label | bytes : byte[] | +| SpelInjectionTest.java:45:29:45:77 | parseExpression(...) : Expression | semmle.label | parseExpression(...) : Expression | +| SpelInjectionTest.java:45:72:45:76 | input : String | semmle.label | input : String | +| SpelInjectionTest.java:46:5:46:14 | expression | semmle.label | expression | +| SpelInjectionTest.java:50:22:50:44 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SpelInjectionTest.java:53:13:53:14 | in : InputStream | semmle.label | in : InputStream | +| SpelInjectionTest.java:53:21:53:25 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| SpelInjectionTest.java:54:20:54:42 | new String(...) : String | semmle.label | new String(...) : String | +| SpelInjectionTest.java:54:31:54:35 | bytes : byte[] | semmle.label | bytes : byte[] | +| SpelInjectionTest.java:56:29:56:77 | parseExpression(...) : Expression | semmle.label | parseExpression(...) : Expression | +| SpelInjectionTest.java:56:72:56:76 | input : String | semmle.label | input : String | +| SpelInjectionTest.java:60:5:60:14 | expression | semmle.label | expression | +| SpelInjectionTest.java:64:22:64:44 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SpelInjectionTest.java:67:13:67:14 | in : InputStream | semmle.label | in : InputStream | +| SpelInjectionTest.java:67:21:67:25 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| SpelInjectionTest.java:68:20:68:42 | new String(...) : String | semmle.label | new String(...) : String | +| SpelInjectionTest.java:68:31:68:35 | bytes : byte[] | semmle.label | bytes : byte[] | +| SpelInjectionTest.java:70:29:70:57 | parseExpression(...) : Expression | semmle.label | parseExpression(...) : Expression | +| SpelInjectionTest.java:70:52:70:56 | input : String | semmle.label | input : String | +| SpelInjectionTest.java:71:5:71:14 | expression | semmle.label | expression | +| SpelInjectionTest.java:75:22:75:44 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SpelInjectionTest.java:78:13:78:14 | in : InputStream | semmle.label | in : InputStream | +| SpelInjectionTest.java:78:21:78:25 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| SpelInjectionTest.java:79:20:79:42 | new String(...) : String | semmle.label | new String(...) : String | +| SpelInjectionTest.java:79:31:79:35 | bytes : byte[] | semmle.label | bytes : byte[] | +| SpelInjectionTest.java:81:29:81:57 | parseExpression(...) : Expression | semmle.label | parseExpression(...) : Expression | +| SpelInjectionTest.java:81:52:81:56 | input : String | semmle.label | input : String | +| SpelInjectionTest.java:82:5:82:14 | expression | semmle.label | expression | +| SpelInjectionTest.java:86:22:86:44 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SpelInjectionTest.java:89:13:89:14 | in : InputStream | semmle.label | in : InputStream | +| SpelInjectionTest.java:89:21:89:25 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| SpelInjectionTest.java:90:20:90:42 | new String(...) : String | semmle.label | new String(...) : String | +| SpelInjectionTest.java:90:31:90:35 | bytes : byte[] | semmle.label | bytes : byte[] | +| SpelInjectionTest.java:92:29:92:57 | parseExpression(...) : Expression | semmle.label | parseExpression(...) : Expression | +| SpelInjectionTest.java:92:52:92:56 | input : String | semmle.label | input : String | +| SpelInjectionTest.java:95:5:95:14 | expression | semmle.label | expression | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.java b/java/ql/test/query-tests/security/CWE-094/SpelInjection/SpelInjectionTest.java similarity index 81% rename from java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.java rename to java/ql/test/query-tests/security/CWE-094/SpelInjection/SpelInjectionTest.java index d10bcfa66864..88c4e913d493 100644 --- a/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.java +++ b/java/ql/test/query-tests/security/CWE-094/SpelInjection/SpelInjectionTest.java @@ -13,7 +13,7 @@ public class SpelInjectionTest { private static final ExpressionParser PARSER = new SpelExpressionParser(); public void testGetValue(Socket socket) throws IOException { - InputStream in = socket.getInputStream(); + InputStream in = socket.getInputStream(); // $ Source byte[] bytes = new byte[1024]; int n = in.read(bytes); @@ -21,33 +21,33 @@ public void testGetValue(Socket socket) throws IOException { ExpressionParser parser = new SpelExpressionParser(); Expression expression = parser.parseExpression(input); - expression.getValue(); // $hasSpelInjection + expression.getValue(); // $ Alert } public void testGetValueWithParseRaw(Socket socket) throws IOException { - InputStream in = socket.getInputStream(); + InputStream in = socket.getInputStream(); // $ Source byte[] bytes = new byte[1024]; int n = in.read(bytes); String input = new String(bytes, 0, n); SpelExpressionParser parser = new SpelExpressionParser(); SpelExpression expression = parser.parseRaw(input); - expression.getValue(); // $hasSpelInjection + expression.getValue(); // $ Alert } public void testGetValueWithChainedCalls(Socket socket) throws IOException { - InputStream in = socket.getInputStream(); + InputStream in = socket.getInputStream(); // $ Source byte[] bytes = new byte[1024]; int n = in.read(bytes); String input = new String(bytes, 0, n); Expression expression = new SpelExpressionParser().parseExpression(input); - expression.getValue(); // $hasSpelInjection + expression.getValue(); // $ Alert } public void testSetValueWithRootObject(Socket socket) throws IOException { - InputStream in = socket.getInputStream(); + InputStream in = socket.getInputStream(); // $ Source byte[] bytes = new byte[1024]; int n = in.read(bytes); @@ -57,33 +57,33 @@ public void testSetValueWithRootObject(Socket socket) throws IOException { Object root = new Object(); Object value = new Object(); - expression.setValue(root, value); // $hasSpelInjection + expression.setValue(root, value); // $ Alert } public void testGetValueWithStaticParser(Socket socket) throws IOException { - InputStream in = socket.getInputStream(); + InputStream in = socket.getInputStream(); // $ Source byte[] bytes = new byte[1024]; int n = in.read(bytes); String input = new String(bytes, 0, n); Expression expression = PARSER.parseExpression(input); - expression.getValue(); // $hasSpelInjection + expression.getValue(); // $ Alert } public void testGetValueType(Socket socket) throws IOException { - InputStream in = socket.getInputStream(); + InputStream in = socket.getInputStream(); // $ Source byte[] bytes = new byte[1024]; int n = in.read(bytes); String input = new String(bytes, 0, n); Expression expression = PARSER.parseExpression(input); - expression.getValueType(); // $hasSpelInjection + expression.getValueType(); // $ Alert } public void testWithStandardEvaluationContext(Socket socket) throws IOException { - InputStream in = socket.getInputStream(); + InputStream in = socket.getInputStream(); // $ Source byte[] bytes = new byte[1024]; int n = in.read(bytes); @@ -92,7 +92,7 @@ public void testWithStandardEvaluationContext(Socket socket) throws IOException Expression expression = PARSER.parseExpression(input); StandardEvaluationContext context = new StandardEvaluationContext(); - expression.getValue(context); // $hasSpelInjection + expression.getValue(context); // $ Alert } public void testWithSimpleEvaluationContext(Socket socket) throws IOException { diff --git a/java/ql/test/query-tests/security/CWE-094/SpelInjection/SpelInjectionTest.qlref b/java/ql/test/query-tests/security/CWE-094/SpelInjection/SpelInjectionTest.qlref new file mode 100644 index 000000000000..5effbcb98298 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/SpelInjection/SpelInjectionTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-094/SpelInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-094/SpelInjection/options b/java/ql/test/query-tests/security/CWE-094/SpelInjection/options new file mode 100644 index 000000000000..d7c8332682ba --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/SpelInjection/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/validation-api-2.0.1.Final:${testdir}/../../../../stubs/springframework-5.8.x:${testdir}/../../../../stubs/apache-commons-jexl-2.1.1:${testdir}/../../../../stubs/apache-commons-jexl-3.1:${testdir}/../../../../stubs/apache-commons-logging-1.2:${testdir}/../../../../stubs/mvel2-2.4.7:${testdir}/../../../../stubs/groovy-all-3.0.7:${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/scriptengine:${testdir}/../../../../stubs/jsr223-api:${testdir}/../../../../stubs/apache-freemarker-2.3.31:${testdir}/../../../../stubs/jinjava-2.6.0:${testdir}/../../../../stubs/pebble-3.1.5:${testdir}/../../../../stubs/thymeleaf-3.0.14:${testdir}/../../../../stubs/apache-velocity-2.3:${testdir}/../../../..//stubs/google-android-9.0.0 diff --git a/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.ql deleted file mode 100644 index 727229e989d3..000000000000 --- a/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.ql +++ /dev/null @@ -1,20 +0,0 @@ -import java -import semmle.code.java.dataflow.TaintTracking -import semmle.code.java.dataflow.FlowSources -import semmle.code.java.security.SpelInjectionQuery -import utils.test.InlineExpectationsTest - -module HasSpelInjectionTest implements TestSig { - string getARelevantTag() { result = "hasSpelInjection" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasSpelInjection" and - exists(DataFlow::Node sink | SpelInjectionFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/TemplateEngineTest.java b/java/ql/test/query-tests/security/CWE-094/TemplateEngineTest.java deleted file mode 100644 index dbf32494e10e..000000000000 --- a/java/ql/test/query-tests/security/CWE-094/TemplateEngineTest.java +++ /dev/null @@ -1,30 +0,0 @@ -import java.io.File; -import java.io.IOException; -import java.io.Reader; -import java.net.URL; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import groovy.text.TemplateEngine; - -public class TemplateEngineTest extends HttpServlet { - - private Object source(HttpServletRequest request) { - return request.getParameter("script"); - } - - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - try { - Object script = source(request); - TemplateEngine engine = null; - engine.createTemplate(request.getParameter("script")); // $ hasGroovyInjection - engine.createTemplate((File) script); // $ hasGroovyInjection - engine.createTemplate((Reader) script); // $ hasGroovyInjection - engine.createTemplate((URL) script); // $ hasGroovyInjection - } catch (Exception e) { - } - - } -} diff --git a/java/ql/test/query-tests/security/CWE-094/TemplateInjection/FreemarkerSSTI.java b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/FreemarkerSSTI.java new file mode 100644 index 000000000000..a39ed8c5a4e5 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/FreemarkerSSTI.java @@ -0,0 +1,117 @@ +import javax.servlet.http.HttpServletRequest; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +import java.lang.String; +import java.io.Reader; +import java.io.StringReader; +import java.io.OutputStreamWriter; +import java.util.HashMap; + +import freemarker.template.Template; +import freemarker.template.Configuration; +import freemarker.cache.StringTemplateLoader; +import freemarker.core.ParserConfiguration; + +@Controller +public class FreemarkerSSTI { + String sourceName = "sourceName"; + + @GetMapping(value = "bad1") + public void bad1(HttpServletRequest request) { + String name = "ttemplate"; + String code = request.getParameter("code"); // $ Source + Reader reader = new StringReader(code); + + Template t = new Template(name, reader); // $ Alert + } + + @GetMapping(value = "bad2") + public void bad2(HttpServletRequest request) { + String name = "ttemplate"; + String code = request.getParameter("code"); // $ Source + Reader reader = new StringReader(code); + Configuration cfg = new Configuration(); + + Template t = new Template(name, reader, cfg); // $ Alert + } + + @GetMapping(value = "bad3") + public void bad3(HttpServletRequest request) { + String name = "ttemplate"; + String code = request.getParameter("code"); // $ Source + Reader reader = new StringReader(code); + Configuration cfg = new Configuration(); + + Template t = new Template(name, reader, cfg, "UTF-8"); // $ Alert + } + + @GetMapping(value = "bad4") + public void bad4(HttpServletRequest request) { + String name = "ttemplate"; + String sourceCode = request.getParameter("sourceCode"); // $ Source + Configuration cfg = new Configuration(); + + Template t = new Template(name, sourceCode, cfg); // $ Alert + } + + @GetMapping(value = "bad5") + public void bad5(HttpServletRequest request) { + String name = "ttemplate"; + String code = request.getParameter("code"); // $ Source + Configuration cfg = new Configuration(); + Reader reader = new StringReader(code); + + Template t = new Template(name, sourceName, reader, cfg); // $ Alert + } + + @GetMapping(value = "bad6") + public void bad6(HttpServletRequest request) { + String name = "ttemplate"; + String code = request.getParameter("code"); // $ Source + Configuration cfg = new Configuration(); + ParserConfiguration customParserConfiguration = new Configuration(); + Reader reader = new StringReader(code); + + Template t = + new Template(name, sourceName, reader, cfg, customParserConfiguration, "UTF-8"); // $ Alert + } + + @GetMapping(value = "bad7") + public void bad7(HttpServletRequest request) { + String name = "ttemplate"; + String code = request.getParameter("code"); // $ Source + Configuration cfg = new Configuration(); + ParserConfiguration customParserConfiguration = new Configuration(); + Reader reader = new StringReader(code); + + Template t = new Template(name, sourceName, reader, cfg, "UTF-8"); // $ Alert + } + + @GetMapping(value = "bad8") + public void bad8(HttpServletRequest request) { + String code = request.getParameter("code"); // $ Source + StringTemplateLoader stringLoader = new StringTemplateLoader(); + + stringLoader.putTemplate("myTemplate", code); // $ Alert + } + + @GetMapping(value = "bad9") + public void bad9(HttpServletRequest request) { + String code = request.getParameter("code"); // $ Source + StringTemplateLoader stringLoader = new StringTemplateLoader(); + + stringLoader.putTemplate("myTemplate", code, 0); // $ Alert + } + + @GetMapping(value = "good1") + public void good1(HttpServletRequest request) { + HashMap root = new HashMap(); + String code = request.getParameter("code"); + root.put("code", code); + Configuration cfg = new Configuration(); + Template temp = cfg.getTemplate("test.ftlh"); + OutputStreamWriter out = new OutputStreamWriter(System.out); + temp.process(root, out); // Safe + } +} diff --git a/java/ql/test/query-tests/security/CWE-094/JinJavaSSTI.java b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/JinJavaSSTI.java similarity index 81% rename from java/ql/test/query-tests/security/CWE-094/JinJavaSSTI.java rename to java/ql/test/query-tests/security/CWE-094/TemplateInjection/JinJavaSSTI.java index 4341a44f192c..9bd9bad4ca8f 100644 --- a/java/ql/test/query-tests/security/CWE-094/JinJavaSSTI.java +++ b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/JinJavaSSTI.java @@ -18,27 +18,27 @@ public class JinJavaSSTI { @GetMapping(value = "bad1") public void bad1(HttpServletRequest request) { - String template = request.getParameter("template"); + String template = request.getParameter("template"); // $ Source Jinjava jinjava = new Jinjava(); Map context = new HashMap<>(); - String renderedTemplate = jinjava.render(template, context); // $hasTemplateInjection + String renderedTemplate = jinjava.render(template, context); // $ Alert } @GetMapping(value = "bad2") public void bad2(HttpServletRequest request) { - String template = request.getParameter("template"); + String template = request.getParameter("template"); // $ Source Jinjava jinjava = new Jinjava(); Map bindings = new HashMap<>(); - RenderResult renderResult = jinjava.renderForResult(template, bindings); // $hasTemplateInjection + RenderResult renderResult = jinjava.renderForResult(template, bindings); // $ Alert } @GetMapping(value = "bad3") public void bad3(HttpServletRequest request) { - String template = request.getParameter("template"); + String template = request.getParameter("template"); // $ Source Jinjava jinjava = new Jinjava(); Map bindings = new HashMap<>(); JinjavaConfig renderConfig = new JinjavaConfig(); - RenderResult renderResult = jinjava.renderForResult(template, bindings, renderConfig); // $hasTemplateInjection + RenderResult renderResult = jinjava.renderForResult(template, bindings, renderConfig); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-094/PebbleSSTI.java b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/PebbleSSTI.java similarity index 80% rename from java/ql/test/query-tests/security/CWE-094/PebbleSSTI.java rename to java/ql/test/query-tests/security/CWE-094/TemplateInjection/PebbleSSTI.java index c026f98645bb..45beaf46fa19 100644 --- a/java/ql/test/query-tests/security/CWE-094/PebbleSSTI.java +++ b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/PebbleSSTI.java @@ -15,15 +15,15 @@ public class PebbleSSTI { @GetMapping(value = "bad1") public void bad1(HttpServletRequest request) { - String templateName = request.getParameter("templateName"); + String templateName = request.getParameter("templateName"); // $ Source PebbleEngine engine = new PebbleEngine.Builder().build(); - PebbleTemplate compiledTemplate = engine.getTemplate(templateName); // $hasTemplateInjection + PebbleTemplate compiledTemplate = engine.getTemplate(templateName); // $ Alert } @GetMapping(value = "bad2") public void bad2(HttpServletRequest request) { - String templateName = request.getParameter("templateName"); + String templateName = request.getParameter("templateName"); // $ Source PebbleEngine engine = new PebbleEngine.Builder().build(); - PebbleTemplate compiledTemplate = engine.getLiteralTemplate(templateName); // $hasTemplateInjection + PebbleTemplate compiledTemplate = engine.getLiteralTemplate(templateName); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-094/TemplateInjection/TemplateInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/TemplateInjectionTest.expected new file mode 100644 index 000000000000..6727f69b5388 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/TemplateInjectionTest.expected @@ -0,0 +1,171 @@ +#select +| FreemarkerSSTI.java:26:35:26:40 | reader | FreemarkerSSTI.java:23:17:23:44 | getParameter(...) : String | FreemarkerSSTI.java:26:35:26:40 | reader | Template, which may contain code, depends on a $@. | FreemarkerSSTI.java:23:17:23:44 | getParameter(...) | user-provided value | +| FreemarkerSSTI.java:36:35:36:40 | reader | FreemarkerSSTI.java:32:17:32:44 | getParameter(...) : String | FreemarkerSSTI.java:36:35:36:40 | reader | Template, which may contain code, depends on a $@. | FreemarkerSSTI.java:32:17:32:44 | getParameter(...) | user-provided value | +| FreemarkerSSTI.java:46:35:46:40 | reader | FreemarkerSSTI.java:42:17:42:44 | getParameter(...) : String | FreemarkerSSTI.java:46:35:46:40 | reader | Template, which may contain code, depends on a $@. | FreemarkerSSTI.java:42:17:42:44 | getParameter(...) | user-provided value | +| FreemarkerSSTI.java:55:35:55:44 | sourceCode | FreemarkerSSTI.java:52:23:52:56 | getParameter(...) : String | FreemarkerSSTI.java:55:35:55:44 | sourceCode | Template, which may contain code, depends on a $@. | FreemarkerSSTI.java:52:23:52:56 | getParameter(...) | user-provided value | +| FreemarkerSSTI.java:65:47:65:52 | reader | FreemarkerSSTI.java:61:17:61:44 | getParameter(...) : String | FreemarkerSSTI.java:65:47:65:52 | reader | Template, which may contain code, depends on a $@. | FreemarkerSSTI.java:61:17:61:44 | getParameter(...) | user-provided value | +| FreemarkerSSTI.java:77:36:77:41 | reader | FreemarkerSSTI.java:71:17:71:44 | getParameter(...) : String | FreemarkerSSTI.java:77:36:77:41 | reader | Template, which may contain code, depends on a $@. | FreemarkerSSTI.java:71:17:71:44 | getParameter(...) | user-provided value | +| FreemarkerSSTI.java:88:47:88:52 | reader | FreemarkerSSTI.java:83:17:83:44 | getParameter(...) : String | FreemarkerSSTI.java:88:47:88:52 | reader | Template, which may contain code, depends on a $@. | FreemarkerSSTI.java:83:17:83:44 | getParameter(...) | user-provided value | +| FreemarkerSSTI.java:96:42:96:45 | code | FreemarkerSSTI.java:93:17:93:44 | getParameter(...) : String | FreemarkerSSTI.java:96:42:96:45 | code | Template, which may contain code, depends on a $@. | FreemarkerSSTI.java:93:17:93:44 | getParameter(...) | user-provided value | +| FreemarkerSSTI.java:104:42:104:45 | code | FreemarkerSSTI.java:101:17:101:44 | getParameter(...) : String | FreemarkerSSTI.java:104:42:104:45 | code | Template, which may contain code, depends on a $@. | FreemarkerSSTI.java:101:17:101:44 | getParameter(...) | user-provided value | +| JinJavaSSTI.java:24:44:24:51 | template | JinJavaSSTI.java:21:21:21:52 | getParameter(...) : String | JinJavaSSTI.java:24:44:24:51 | template | Template, which may contain code, depends on a $@. | JinJavaSSTI.java:21:21:21:52 | getParameter(...) | user-provided value | +| JinJavaSSTI.java:32:55:32:62 | template | JinJavaSSTI.java:29:21:29:52 | getParameter(...) : String | JinJavaSSTI.java:32:55:32:62 | template | Template, which may contain code, depends on a $@. | JinJavaSSTI.java:29:21:29:52 | getParameter(...) | user-provided value | +| JinJavaSSTI.java:42:55:42:62 | template | JinJavaSSTI.java:37:21:37:52 | getParameter(...) : String | JinJavaSSTI.java:42:55:42:62 | template | Template, which may contain code, depends on a $@. | JinJavaSSTI.java:37:21:37:52 | getParameter(...) | user-provided value | +| PebbleSSTI.java:20:56:20:67 | templateName | PebbleSSTI.java:18:25:18:60 | getParameter(...) : String | PebbleSSTI.java:20:56:20:67 | templateName | Template, which may contain code, depends on a $@. | PebbleSSTI.java:18:25:18:60 | getParameter(...) | user-provided value | +| PebbleSSTI.java:27:63:27:74 | templateName | PebbleSSTI.java:25:25:25:60 | getParameter(...) : String | PebbleSSTI.java:27:63:27:74 | templateName | Template, which may contain code, depends on a $@. | PebbleSSTI.java:25:25:25:60 | getParameter(...) | user-provided value | +| ThymeleafSSTI.java:24:27:24:30 | code | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:24:27:24:30 | code | Template, which may contain code, depends on a $@. | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) | user-provided value | +| ThymeleafSSTI.java:25:27:25:30 | code | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:25:27:25:30 | code | Template, which may contain code, depends on a $@. | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) | user-provided value | +| ThymeleafSSTI.java:26:27:26:30 | code | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:26:27:26:30 | code | Template, which may contain code, depends on a $@. | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) | user-provided value | +| ThymeleafSSTI.java:27:27:27:30 | code | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:27:27:27:30 | code | Template, which may contain code, depends on a $@. | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) | user-provided value | +| ThymeleafSSTI.java:28:36:28:39 | code | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:28:36:28:39 | code | Template, which may contain code, depends on a $@. | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) | user-provided value | +| ThymeleafSSTI.java:29:36:29:39 | code | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:29:36:29:39 | code | Template, which may contain code, depends on a $@. | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) | user-provided value | +| ThymeleafSSTI.java:32:27:32:30 | spec | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:32:27:32:30 | spec | Template, which may contain code, depends on a $@. | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) | user-provided value | +| ThymeleafSSTI.java:33:27:33:30 | spec | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:33:27:33:30 | spec | Template, which may contain code, depends on a $@. | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) | user-provided value | +| ThymeleafSSTI.java:34:36:34:39 | spec | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:34:36:34:39 | spec | Template, which may contain code, depends on a $@. | ThymeleafSSTI.java:21:17:21:44 | getParameter(...) | user-provided value | +| VelocitySSTI.java:37:45:37:48 | code | VelocitySSTI.java:31:17:31:44 | getParameter(...) : String | VelocitySSTI.java:37:45:37:48 | code | Template, which may contain code, depends on a $@. | VelocitySSTI.java:31:17:31:44 | getParameter(...) | user-provided value | +| VelocitySSTI.java:51:45:51:50 | reader | VelocitySSTI.java:43:17:43:44 | getParameter(...) : String | VelocitySSTI.java:51:45:51:50 | reader | Template, which may contain code, depends on a $@. | VelocitySSTI.java:43:17:43:44 | getParameter(...) | user-provided value | +| VelocitySSTI.java:61:25:61:30 | reader | VelocitySSTI.java:57:17:57:44 | getParameter(...) : String | VelocitySSTI.java:61:25:61:30 | reader | Template, which may contain code, depends on a $@. | VelocitySSTI.java:57:17:57:44 | getParameter(...) | user-provided value | +| VelocitySSTI.java:93:37:93:40 | code | VelocitySSTI.java:81:17:81:44 | getParameter(...) : String | VelocitySSTI.java:93:37:93:40 | code | Template, which may contain code, depends on a $@. | VelocitySSTI.java:81:17:81:44 | getParameter(...) | user-provided value | +| VelocitySSTI.java:94:37:94:58 | new StringReader(...) | VelocitySSTI.java:81:17:81:44 | getParameter(...) : String | VelocitySSTI.java:94:37:94:58 | new StringReader(...) | Template, which may contain code, depends on a $@. | VelocitySSTI.java:81:17:81:44 | getParameter(...) | user-provided value | +| VelocitySSTI.java:117:37:117:40 | code | VelocitySSTI.java:114:17:114:44 | getParameter(...) : String | VelocitySSTI.java:117:37:117:40 | code | Template, which may contain code, depends on a $@. | VelocitySSTI.java:114:17:114:44 | getParameter(...) | user-provided value | +edges +| FreemarkerSSTI.java:23:17:23:44 | getParameter(...) : String | FreemarkerSSTI.java:24:36:24:39 | code : String | provenance | Src:MaD:19 | +| FreemarkerSSTI.java:24:19:24:40 | new StringReader(...) : StringReader | FreemarkerSSTI.java:26:35:26:40 | reader | provenance | Sink:MaD:6 | +| FreemarkerSSTI.java:24:36:24:39 | code : String | FreemarkerSSTI.java:24:19:24:40 | new StringReader(...) : StringReader | provenance | MaD:20 | +| FreemarkerSSTI.java:32:17:32:44 | getParameter(...) : String | FreemarkerSSTI.java:33:36:33:39 | code : String | provenance | Src:MaD:19 | +| FreemarkerSSTI.java:33:19:33:40 | new StringReader(...) : StringReader | FreemarkerSSTI.java:36:35:36:40 | reader | provenance | Sink:MaD:7 | +| FreemarkerSSTI.java:33:36:33:39 | code : String | FreemarkerSSTI.java:33:19:33:40 | new StringReader(...) : StringReader | provenance | MaD:20 | +| FreemarkerSSTI.java:42:17:42:44 | getParameter(...) : String | FreemarkerSSTI.java:43:36:43:39 | code : String | provenance | Src:MaD:19 | +| FreemarkerSSTI.java:43:19:43:40 | new StringReader(...) : StringReader | FreemarkerSSTI.java:46:35:46:40 | reader | provenance | Sink:MaD:8 | +| FreemarkerSSTI.java:43:36:43:39 | code : String | FreemarkerSSTI.java:43:19:43:40 | new StringReader(...) : StringReader | provenance | MaD:20 | +| FreemarkerSSTI.java:52:23:52:56 | getParameter(...) : String | FreemarkerSSTI.java:55:35:55:44 | sourceCode | provenance | Src:MaD:19 Sink:MaD:9 | +| FreemarkerSSTI.java:61:17:61:44 | getParameter(...) : String | FreemarkerSSTI.java:63:36:63:39 | code : String | provenance | Src:MaD:19 | +| FreemarkerSSTI.java:63:19:63:40 | new StringReader(...) : StringReader | FreemarkerSSTI.java:65:47:65:52 | reader | provenance | Sink:MaD:10 | +| FreemarkerSSTI.java:63:36:63:39 | code : String | FreemarkerSSTI.java:63:19:63:40 | new StringReader(...) : StringReader | provenance | MaD:20 | +| FreemarkerSSTI.java:71:17:71:44 | getParameter(...) : String | FreemarkerSSTI.java:74:36:74:39 | code : String | provenance | Src:MaD:19 | +| FreemarkerSSTI.java:74:19:74:40 | new StringReader(...) : StringReader | FreemarkerSSTI.java:77:36:77:41 | reader | provenance | Sink:MaD:11 | +| FreemarkerSSTI.java:74:36:74:39 | code : String | FreemarkerSSTI.java:74:19:74:40 | new StringReader(...) : StringReader | provenance | MaD:20 | +| FreemarkerSSTI.java:83:17:83:44 | getParameter(...) : String | FreemarkerSSTI.java:86:36:86:39 | code : String | provenance | Src:MaD:19 | +| FreemarkerSSTI.java:86:19:86:40 | new StringReader(...) : StringReader | FreemarkerSSTI.java:88:47:88:52 | reader | provenance | Sink:MaD:12 | +| FreemarkerSSTI.java:86:36:86:39 | code : String | FreemarkerSSTI.java:86:19:86:40 | new StringReader(...) : StringReader | provenance | MaD:20 | +| FreemarkerSSTI.java:93:17:93:44 | getParameter(...) : String | FreemarkerSSTI.java:96:42:96:45 | code | provenance | Src:MaD:19 Sink:MaD:5 | +| FreemarkerSSTI.java:101:17:101:44 | getParameter(...) : String | FreemarkerSSTI.java:104:42:104:45 | code | provenance | Src:MaD:19 Sink:MaD:5 | +| JinJavaSSTI.java:21:21:21:52 | getParameter(...) : String | JinJavaSSTI.java:24:44:24:51 | template | provenance | Src:MaD:19 Sink:MaD:1 | +| JinJavaSSTI.java:29:21:29:52 | getParameter(...) : String | JinJavaSSTI.java:32:55:32:62 | template | provenance | Src:MaD:19 Sink:MaD:2 | +| JinJavaSSTI.java:37:21:37:52 | getParameter(...) : String | JinJavaSSTI.java:42:55:42:62 | template | provenance | Src:MaD:19 Sink:MaD:2 | +| PebbleSSTI.java:18:25:18:60 | getParameter(...) : String | PebbleSSTI.java:20:56:20:67 | templateName | provenance | Src:MaD:19 Sink:MaD:4 | +| PebbleSSTI.java:25:25:25:60 | getParameter(...) : String | PebbleSSTI.java:27:63:27:74 | templateName | provenance | Src:MaD:19 Sink:MaD:3 | +| ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:24:27:24:30 | code | provenance | Src:MaD:19 Sink:MaD:17 | +| ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:25:27:25:30 | code | provenance | Src:MaD:19 Sink:MaD:17 | +| ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:26:27:26:30 | code | provenance | Src:MaD:19 Sink:MaD:17 | +| ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:27:27:27:30 | code | provenance | Src:MaD:19 Sink:MaD:17 | +| ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:28:36:28:39 | code | provenance | Src:MaD:19 Sink:MaD:18 | +| ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:29:36:29:39 | code | provenance | Src:MaD:19 Sink:MaD:18 | +| ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | ThymeleafSSTI.java:31:41:31:44 | code : String | provenance | Src:MaD:19 | +| ThymeleafSSTI.java:31:24:31:49 | new TemplateSpec(...) : TemplateSpec | ThymeleafSSTI.java:32:27:32:30 | spec | provenance | Sink:MaD:17 | +| ThymeleafSSTI.java:31:24:31:49 | new TemplateSpec(...) : TemplateSpec | ThymeleafSSTI.java:33:27:33:30 | spec | provenance | Sink:MaD:17 | +| ThymeleafSSTI.java:31:24:31:49 | new TemplateSpec(...) : TemplateSpec | ThymeleafSSTI.java:34:36:34:39 | spec | provenance | Sink:MaD:18 | +| ThymeleafSSTI.java:31:41:31:44 | code : String | ThymeleafSSTI.java:31:24:31:49 | new TemplateSpec(...) : TemplateSpec | provenance | MaD:21 | +| VelocitySSTI.java:31:17:31:44 | getParameter(...) : String | VelocitySSTI.java:37:45:37:48 | code | provenance | Src:MaD:19 Sink:MaD:13 | +| VelocitySSTI.java:43:17:43:44 | getParameter(...) : String | VelocitySSTI.java:49:42:49:45 | code : String | provenance | Src:MaD:19 | +| VelocitySSTI.java:49:25:49:46 | new StringReader(...) : StringReader | VelocitySSTI.java:51:45:51:50 | reader | provenance | Sink:MaD:13 | +| VelocitySSTI.java:49:42:49:45 | code : String | VelocitySSTI.java:49:25:49:46 | new StringReader(...) : StringReader | provenance | MaD:20 | +| VelocitySSTI.java:57:17:57:44 | getParameter(...) : String | VelocitySSTI.java:60:42:60:45 | code : String | provenance | Src:MaD:19 | +| VelocitySSTI.java:60:25:60:46 | new StringReader(...) : StringReader | VelocitySSTI.java:61:25:61:30 | reader | provenance | Sink:MaD:16 | +| VelocitySSTI.java:60:42:60:45 | code : String | VelocitySSTI.java:60:25:60:46 | new StringReader(...) : StringReader | provenance | MaD:20 | +| VelocitySSTI.java:81:17:81:44 | getParameter(...) : String | VelocitySSTI.java:93:37:93:40 | code | provenance | Src:MaD:19 Sink:MaD:14 | +| VelocitySSTI.java:81:17:81:44 | getParameter(...) : String | VelocitySSTI.java:94:54:94:57 | code : String | provenance | Src:MaD:19 | +| VelocitySSTI.java:94:54:94:57 | code : String | VelocitySSTI.java:94:37:94:58 | new StringReader(...) | provenance | MaD:20 Sink:MaD:14 | +| VelocitySSTI.java:114:17:114:44 | getParameter(...) : String | VelocitySSTI.java:117:37:117:40 | code | provenance | Src:MaD:19 Sink:MaD:15 | +models +| 1 | Sink: com.hubspot.jinjava; Jinjava; true; render; ; ; Argument[0]; template-injection; manual | +| 2 | Sink: com.hubspot.jinjava; Jinjava; true; renderForResult; ; ; Argument[0]; template-injection; manual | +| 3 | Sink: com.mitchellbosecke.pebble; PebbleEngine; true; getLiteralTemplate; ; ; Argument[0]; template-injection; manual | +| 4 | Sink: com.mitchellbosecke.pebble; PebbleEngine; true; getTemplate; ; ; Argument[0]; template-injection; manual | +| 5 | Sink: freemarker.cache; StringTemplateLoader; true; putTemplate; ; ; Argument[1]; template-injection; manual | +| 6 | Sink: freemarker.template; Template; true; Template; (String,Reader); ; Argument[1]; template-injection; manual | +| 7 | Sink: freemarker.template; Template; true; Template; (String,Reader,Configuration); ; Argument[1]; template-injection; manual | +| 8 | Sink: freemarker.template; Template; true; Template; (String,Reader,Configuration,String); ; Argument[1]; template-injection; manual | +| 9 | Sink: freemarker.template; Template; true; Template; (String,String,Configuration); ; Argument[1]; template-injection; manual | +| 10 | Sink: freemarker.template; Template; true; Template; (String,String,Reader,Configuration); ; Argument[2]; template-injection; manual | +| 11 | Sink: freemarker.template; Template; true; Template; (String,String,Reader,Configuration,ParserConfiguration,String); ; Argument[2]; template-injection; manual | +| 12 | Sink: freemarker.template; Template; true; Template; (String,String,Reader,Configuration,String); ; Argument[2]; template-injection; manual | +| 13 | Sink: org.apache.velocity.app; Velocity; true; evaluate; ; ; Argument[3]; template-injection; manual | +| 14 | Sink: org.apache.velocity.app; VelocityEngine; true; evaluate; ; ; Argument[3]; template-injection; manual | +| 15 | Sink: org.apache.velocity.runtime.resource.util; StringResourceRepository; true; putStringResource; ; ; Argument[1]; template-injection; manual | +| 16 | Sink: org.apache.velocity.runtime; RuntimeServices; true; parse; ; ; Argument[0]; template-injection; manual | +| 17 | Sink: org.thymeleaf; ITemplateEngine; true; process; ; ; Argument[0]; template-injection; manual | +| 18 | Sink: org.thymeleaf; ITemplateEngine; true; processThrottled; ; ; Argument[0]; template-injection; manual | +| 19 | Source: javax.servlet; ServletRequest; false; getParameter; (String); ; ReturnValue; remote; manual | +| 20 | Summary: java.io; StringReader; false; StringReader; ; ; Argument[0]; Argument[this]; taint; manual | +| 21 | Summary: org.thymeleaf; TemplateSpec; false; TemplateSpec; ; ; Argument[0]; Argument[this]; taint; manual | +nodes +| FreemarkerSSTI.java:23:17:23:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FreemarkerSSTI.java:24:19:24:40 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| FreemarkerSSTI.java:24:36:24:39 | code : String | semmle.label | code : String | +| FreemarkerSSTI.java:26:35:26:40 | reader | semmle.label | reader | +| FreemarkerSSTI.java:32:17:32:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FreemarkerSSTI.java:33:19:33:40 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| FreemarkerSSTI.java:33:36:33:39 | code : String | semmle.label | code : String | +| FreemarkerSSTI.java:36:35:36:40 | reader | semmle.label | reader | +| FreemarkerSSTI.java:42:17:42:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FreemarkerSSTI.java:43:19:43:40 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| FreemarkerSSTI.java:43:36:43:39 | code : String | semmle.label | code : String | +| FreemarkerSSTI.java:46:35:46:40 | reader | semmle.label | reader | +| FreemarkerSSTI.java:52:23:52:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FreemarkerSSTI.java:55:35:55:44 | sourceCode | semmle.label | sourceCode | +| FreemarkerSSTI.java:61:17:61:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FreemarkerSSTI.java:63:19:63:40 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| FreemarkerSSTI.java:63:36:63:39 | code : String | semmle.label | code : String | +| FreemarkerSSTI.java:65:47:65:52 | reader | semmle.label | reader | +| FreemarkerSSTI.java:71:17:71:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FreemarkerSSTI.java:74:19:74:40 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| FreemarkerSSTI.java:74:36:74:39 | code : String | semmle.label | code : String | +| FreemarkerSSTI.java:77:36:77:41 | reader | semmle.label | reader | +| FreemarkerSSTI.java:83:17:83:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FreemarkerSSTI.java:86:19:86:40 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| FreemarkerSSTI.java:86:36:86:39 | code : String | semmle.label | code : String | +| FreemarkerSSTI.java:88:47:88:52 | reader | semmle.label | reader | +| FreemarkerSSTI.java:93:17:93:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FreemarkerSSTI.java:96:42:96:45 | code | semmle.label | code | +| FreemarkerSSTI.java:101:17:101:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FreemarkerSSTI.java:104:42:104:45 | code | semmle.label | code | +| JinJavaSSTI.java:21:21:21:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JinJavaSSTI.java:24:44:24:51 | template | semmle.label | template | +| JinJavaSSTI.java:29:21:29:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JinJavaSSTI.java:32:55:32:62 | template | semmle.label | template | +| JinJavaSSTI.java:37:21:37:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JinJavaSSTI.java:42:55:42:62 | template | semmle.label | template | +| PebbleSSTI.java:18:25:18:60 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| PebbleSSTI.java:20:56:20:67 | templateName | semmle.label | templateName | +| PebbleSSTI.java:25:25:25:60 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| PebbleSSTI.java:27:63:27:74 | templateName | semmle.label | templateName | +| ThymeleafSSTI.java:21:17:21:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ThymeleafSSTI.java:24:27:24:30 | code | semmle.label | code | +| ThymeleafSSTI.java:25:27:25:30 | code | semmle.label | code | +| ThymeleafSSTI.java:26:27:26:30 | code | semmle.label | code | +| ThymeleafSSTI.java:27:27:27:30 | code | semmle.label | code | +| ThymeleafSSTI.java:28:36:28:39 | code | semmle.label | code | +| ThymeleafSSTI.java:29:36:29:39 | code | semmle.label | code | +| ThymeleafSSTI.java:31:24:31:49 | new TemplateSpec(...) : TemplateSpec | semmle.label | new TemplateSpec(...) : TemplateSpec | +| ThymeleafSSTI.java:31:41:31:44 | code : String | semmle.label | code : String | +| ThymeleafSSTI.java:32:27:32:30 | spec | semmle.label | spec | +| ThymeleafSSTI.java:33:27:33:30 | spec | semmle.label | spec | +| ThymeleafSSTI.java:34:36:34:39 | spec | semmle.label | spec | +| VelocitySSTI.java:31:17:31:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| VelocitySSTI.java:37:45:37:48 | code | semmle.label | code | +| VelocitySSTI.java:43:17:43:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| VelocitySSTI.java:49:25:49:46 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| VelocitySSTI.java:49:42:49:45 | code : String | semmle.label | code : String | +| VelocitySSTI.java:51:45:51:50 | reader | semmle.label | reader | +| VelocitySSTI.java:57:17:57:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| VelocitySSTI.java:60:25:60:46 | new StringReader(...) : StringReader | semmle.label | new StringReader(...) : StringReader | +| VelocitySSTI.java:60:42:60:45 | code : String | semmle.label | code : String | +| VelocitySSTI.java:61:25:61:30 | reader | semmle.label | reader | +| VelocitySSTI.java:81:17:81:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| VelocitySSTI.java:93:37:93:40 | code | semmle.label | code | +| VelocitySSTI.java:94:37:94:58 | new StringReader(...) | semmle.label | new StringReader(...) | +| VelocitySSTI.java:94:54:94:57 | code : String | semmle.label | code : String | +| VelocitySSTI.java:114:17:114:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| VelocitySSTI.java:117:37:117:40 | code | semmle.label | code | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-094/TemplateInjection/TemplateInjectionTest.qlref b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/TemplateInjectionTest.qlref new file mode 100644 index 000000000000..e346322b6d43 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/TemplateInjectionTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-094/TemplateInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-094/TemplateInjection/ThymeleafSSTI.java b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/ThymeleafSSTI.java new file mode 100644 index 000000000000..669b287ea797 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/ThymeleafSSTI.java @@ -0,0 +1,38 @@ +import javax.imageio.stream.FileImageInputStream; +import javax.servlet.http.HttpServletRequest; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +import java.lang.String; +import java.io.File; +import java.io.FileWriter; +import java.io.Reader; +import java.io.StringReader; +import java.io.Writer; +import java.util.Set; + +import org.thymeleaf.*; +import org.thymeleaf.context.Context; + +@Controller +public class ThymeleafSSTI { + @GetMapping(value = "bad1") + public void bad1(HttpServletRequest request) { + String code = request.getParameter("code"); // $ Source + try { + TemplateEngine templateEngine = new TemplateEngine(); + templateEngine.process(code, (Set) null, (Context) null); // $ Alert + templateEngine.process(code, (Set) null, (Context) null, (Writer) null); // $ Alert + templateEngine.process(code, (Context) null); // $ Alert + templateEngine.process(code, (Context) null, (Writer) null); // $ Alert + templateEngine.processThrottled(code, (Set) null, (Context) null); // $ Alert + templateEngine.processThrottled(code, (Context) null); // $ Alert + + TemplateSpec spec = new TemplateSpec(code, ""); + templateEngine.process(spec, (Context) null); // $ Alert + templateEngine.process(spec, (Context) null, (Writer) null); // $ Alert + templateEngine.processThrottled(spec, (Context) null); // $ Alert + } catch (Exception e) { + } + } +} diff --git a/java/ql/test/query-tests/security/CWE-094/VelocitySSTI.java b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/VelocitySSTI.java similarity index 83% rename from java/ql/test/query-tests/security/CWE-094/VelocitySSTI.java rename to java/ql/test/query-tests/security/CWE-094/TemplateInjection/VelocitySSTI.java index 09c7a07058f2..463a653525e5 100644 --- a/java/ql/test/query-tests/security/CWE-094/VelocitySSTI.java +++ b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/VelocitySSTI.java @@ -28,19 +28,19 @@ public class VelocitySSTI { @GetMapping(value = "bad1") public void bad1(HttpServletRequest request) { String name = "ttemplate"; - String code = request.getParameter("code"); + String code = request.getParameter("code"); // $ Source VelocityContext context = null; String s = "We are using $project $name to render this."; StringWriter w = new StringWriter(); - Velocity.evaluate(context, w, "mystring", code); // $hasTemplateInjection + Velocity.evaluate(context, w, "mystring", code); // $ Alert } @GetMapping(value = "bad2") public void bad2(HttpServletRequest request) { String name = "ttemplate"; - String code = request.getParameter("code"); + String code = request.getParameter("code"); // $ Source VelocityContext context = null; @@ -48,17 +48,17 @@ public void bad2(HttpServletRequest request) { StringWriter w = new StringWriter(); StringReader reader = new StringReader(code); - Velocity.evaluate(context, w, "mystring", reader); // $hasTemplateInjection + Velocity.evaluate(context, w, "mystring", reader); // $ Alert } @GetMapping(value = "bad3") public void bad3(HttpServletRequest request) { String name = "ttemplate"; - String code = request.getParameter("code"); + String code = request.getParameter("code"); // $ Source RuntimeServices runtimeServices = null; StringReader reader = new StringReader(code); - runtimeServices.parse(reader, new Template()); // $hasTemplateInjection + runtimeServices.parse(reader, new Template()); // $ Alert } @GetMapping(value = "good1") @@ -78,7 +78,7 @@ public void good1(HttpServletRequest request) { @GetMapping(value = "bad5") public void bad5(HttpServletRequest request) { String name = "ttemplate"; - String code = request.getParameter("code"); + String code = request.getParameter("code"); // $ Source VelocityContext context = new VelocityContext(); context.put("code", code); @@ -90,8 +90,8 @@ public void bad5(HttpServletRequest request) { ctx.put("key", code); engine.evaluate(ctx, null, null, (String) null); // Safe engine.evaluate(ctx, null, null, (Reader) null); // Safe - engine.evaluate(null, null, null, code); // $hasTemplateInjection - engine.evaluate(null, null, null, new StringReader(code)); // $hasTemplateInjection + engine.evaluate(null, null, null, code); // $ Alert + engine.evaluate(null, null, null, new StringReader(code)); // $ Alert } @GetMapping(value = "good2") @@ -111,10 +111,10 @@ public void good2(HttpServletRequest request) { @GetMapping(value = "bad6") public void bad6(HttpServletRequest request) { - String code = request.getParameter("code"); + String code = request.getParameter("code"); // $ Source StringResourceRepository repo = new StringResourceRepositoryImpl(); - repo.putStringResource("woogie2", code); // $hasTemplateInjection + repo.putStringResource("woogie2", code); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-094/TemplateInjection/options b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/options new file mode 100644 index 000000000000..d7c8332682ba --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-094/TemplateInjection/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/validation-api-2.0.1.Final:${testdir}/../../../../stubs/springframework-5.8.x:${testdir}/../../../../stubs/apache-commons-jexl-2.1.1:${testdir}/../../../../stubs/apache-commons-jexl-3.1:${testdir}/../../../../stubs/apache-commons-logging-1.2:${testdir}/../../../../stubs/mvel2-2.4.7:${testdir}/../../../../stubs/groovy-all-3.0.7:${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/scriptengine:${testdir}/../../../../stubs/jsr223-api:${testdir}/../../../../stubs/apache-freemarker-2.3.31:${testdir}/../../../../stubs/jinjava-2.6.0:${testdir}/../../../../stubs/pebble-3.1.5:${testdir}/../../../../stubs/thymeleaf-3.0.14:${testdir}/../../../../stubs/apache-velocity-2.3:${testdir}/../../../..//stubs/google-android-9.0.0 diff --git a/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.ql deleted file mode 100644 index 809175bcd376..000000000000 --- a/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import semmle.code.java.security.TemplateInjectionQuery -import utils.test.InlineExpectationsTest - -module TemplateInjectionTest implements TestSig { - string getARelevantTag() { result = "hasTemplateInjection" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasTemplateInjection" and - exists(DataFlow::Node sink | TemplateInjectionFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/ThymeleafSSTI.java b/java/ql/test/query-tests/security/CWE-094/ThymeleafSSTI.java deleted file mode 100644 index 4b3906689483..000000000000 --- a/java/ql/test/query-tests/security/CWE-094/ThymeleafSSTI.java +++ /dev/null @@ -1,38 +0,0 @@ -import javax.imageio.stream.FileImageInputStream; -import javax.servlet.http.HttpServletRequest; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; - -import java.lang.String; -import java.io.File; -import java.io.FileWriter; -import java.io.Reader; -import java.io.StringReader; -import java.io.Writer; -import java.util.Set; - -import org.thymeleaf.*; -import org.thymeleaf.context.Context; - -@Controller -public class ThymeleafSSTI { - @GetMapping(value = "bad1") - public void bad1(HttpServletRequest request) { - String code = request.getParameter("code"); - try { - TemplateEngine templateEngine = new TemplateEngine(); - templateEngine.process(code, (Set) null, (Context) null); // $hasTemplateInjection - templateEngine.process(code, (Set) null, (Context) null, (Writer) null); // $hasTemplateInjection - templateEngine.process(code, (Context) null); // $hasTemplateInjection - templateEngine.process(code, (Context) null, (Writer) null); // $hasTemplateInjection - templateEngine.processThrottled(code, (Set) null, (Context) null); // $hasTemplateInjection - templateEngine.processThrottled(code, (Context) null); // $hasTemplateInjection - - TemplateSpec spec = new TemplateSpec(code, ""); - templateEngine.process(spec, (Context) null); // $hasTemplateInjection - templateEngine.process(spec, (Context) null, (Writer) null); // $hasTemplateInjection - templateEngine.processThrottled(spec, (Context) null); // $hasTemplateInjection - } catch (Exception e) { - } - } -} diff --git a/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.expected b/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.expected index e69de29bb2d1..d96abdbd6bc0 100644 --- a/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.expected +++ b/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.expected @@ -0,0 +1,43 @@ +#select +| MainActivity.java:13:34:13:39 | intent | MainActivity.java:12:29:12:39 | getIntent(...) : Intent | MainActivity.java:13:34:13:39 | intent | This Intent can be set with arbitrary flags from a $@, and used to give access to internal content providers. | MainActivity.java:12:29:12:39 | getIntent(...) | user-provided value | +| MainActivity.java:17:34:17:44 | extraIntent | MainActivity.java:16:43:16:53 | getIntent(...) : Intent | MainActivity.java:17:34:17:44 | extraIntent | This Intent can be set with arbitrary flags from a $@, and used to give access to internal content providers. | MainActivity.java:16:43:16:53 | getIntent(...) | user-provided value | +| MainActivity.java:33:34:33:39 | intent | MainActivity.java:30:29:30:39 | getIntent(...) : Intent | MainActivity.java:33:34:33:39 | intent | This Intent can be set with arbitrary flags from a $@, and used to give access to internal content providers. | MainActivity.java:30:29:30:39 | getIntent(...) | user-provided value | +| MainActivity.java:46:34:46:39 | intent | MainActivity.java:42:29:42:39 | getIntent(...) : Intent | MainActivity.java:46:34:46:39 | intent | This Intent can be set with arbitrary flags from a $@, and used to give access to internal content providers. | MainActivity.java:42:29:42:39 | getIntent(...) | user-provided value | +| MainActivity.java:52:34:52:39 | intent | MainActivity.java:49:29:49:39 | getIntent(...) : Intent | MainActivity.java:52:34:52:39 | intent | This Intent can be set with arbitrary flags from a $@, and used to give access to internal content providers. | MainActivity.java:49:29:49:39 | getIntent(...) | user-provided value | +| MainActivity.java:60:38:60:43 | intent | MainActivity.java:55:29:55:39 | getIntent(...) : Intent | MainActivity.java:60:38:60:43 | intent | This Intent can be set with arbitrary flags from a $@, and used to give access to internal content providers. | MainActivity.java:55:29:55:39 | getIntent(...) | user-provided value | +| MainActivity.java:71:38:71:43 | intent | MainActivity.java:64:29:64:39 | getIntent(...) : Intent | MainActivity.java:71:38:71:43 | intent | This Intent can be set with arbitrary flags from a $@, and used to give access to internal content providers. | MainActivity.java:64:29:64:39 | getIntent(...) | user-provided value | +| MainActivity.java:81:38:81:43 | intent | MainActivity.java:75:29:75:39 | getIntent(...) : Intent | MainActivity.java:81:38:81:43 | intent | This Intent can be set with arbitrary flags from a $@, and used to give access to internal content providers. | MainActivity.java:75:29:75:39 | getIntent(...) | user-provided value | +edges +| MainActivity.java:12:29:12:39 | getIntent(...) : Intent | MainActivity.java:13:34:13:39 | intent | provenance | Sink:MaD:1 | +| MainActivity.java:16:34:16:87 | (...)... : Intent | MainActivity.java:17:34:17:44 | extraIntent | provenance | Sink:MaD:1 | +| MainActivity.java:16:43:16:53 | getIntent(...) : Intent | MainActivity.java:16:43:16:87 | getParcelableExtra(...) : Parcelable | provenance | MaD:2 | +| MainActivity.java:16:43:16:87 | getParcelableExtra(...) : Parcelable | MainActivity.java:16:34:16:87 | (...)... : Intent | provenance | | +| MainActivity.java:30:29:30:39 | getIntent(...) : Intent | MainActivity.java:33:34:33:39 | intent | provenance | Sink:MaD:1 | +| MainActivity.java:42:29:42:39 | getIntent(...) : Intent | MainActivity.java:46:34:46:39 | intent | provenance | Sink:MaD:1 | +| MainActivity.java:49:29:49:39 | getIntent(...) : Intent | MainActivity.java:52:34:52:39 | intent | provenance | Sink:MaD:1 | +| MainActivity.java:55:29:55:39 | getIntent(...) : Intent | MainActivity.java:60:38:60:43 | intent | provenance | Sink:MaD:1 | +| MainActivity.java:64:29:64:39 | getIntent(...) : Intent | MainActivity.java:71:38:71:43 | intent | provenance | Sink:MaD:1 | +| MainActivity.java:75:29:75:39 | getIntent(...) : Intent | MainActivity.java:81:38:81:43 | intent | provenance | Sink:MaD:1 | +models +| 1 | Sink: android.app; Activity; true; setResult; (int,Intent); ; Argument[1]; pending-intents; manual | +| 2 | Summary: android.content; Intent; true; getParcelableExtra; (String); ; Argument[this].SyntheticField[android.content.Intent.extras].MapValue; ReturnValue; value; manual | +nodes +| MainActivity.java:12:29:12:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| MainActivity.java:13:34:13:39 | intent | semmle.label | intent | +| MainActivity.java:16:34:16:87 | (...)... : Intent | semmle.label | (...)... : Intent | +| MainActivity.java:16:43:16:53 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| MainActivity.java:16:43:16:87 | getParcelableExtra(...) : Parcelable | semmle.label | getParcelableExtra(...) : Parcelable | +| MainActivity.java:17:34:17:44 | extraIntent | semmle.label | extraIntent | +| MainActivity.java:30:29:30:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| MainActivity.java:33:34:33:39 | intent | semmle.label | intent | +| MainActivity.java:42:29:42:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| MainActivity.java:46:34:46:39 | intent | semmle.label | intent | +| MainActivity.java:49:29:49:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| MainActivity.java:52:34:52:39 | intent | semmle.label | intent | +| MainActivity.java:55:29:55:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| MainActivity.java:60:38:60:43 | intent | semmle.label | intent | +| MainActivity.java:64:29:64:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| MainActivity.java:71:38:71:43 | intent | semmle.label | intent | +| MainActivity.java:75:29:75:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| MainActivity.java:81:38:81:43 | intent | semmle.label | intent | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.ql b/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.ql deleted file mode 100644 index f2f820743d1c..000000000000 --- a/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.ql +++ /dev/null @@ -1,4 +0,0 @@ -import java -import utils.test.InlineFlowTest -import semmle.code.java.security.IntentUriPermissionManipulationQuery -import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.qlref b/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.qlref new file mode 100644 index 000000000000..caac7a302e4d --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-266/IntentUriPermissionManipulation.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-266/MainActivity.java b/java/ql/test/query-tests/security/CWE-266/MainActivity.java index 4af80cc2b18a..3f146d20af02 100644 --- a/java/ql/test/query-tests/security/CWE-266/MainActivity.java +++ b/java/ql/test/query-tests/security/CWE-266/MainActivity.java @@ -9,12 +9,12 @@ public class MainActivity extends Activity { public void onCreate(Bundle savedInstance) { { - Intent intent = getIntent(); - setResult(RESULT_OK, intent); // $ hasTaintFlow + Intent intent = getIntent(); // $ Source + setResult(RESULT_OK, intent); // $ Alert } { - Intent extraIntent = (Intent) getIntent().getParcelableExtra("extraIntent"); - setResult(RESULT_OK, extraIntent); // $ hasTaintFlow + Intent extraIntent = (Intent) getIntent().getParcelableExtra("extraIntent"); // $ Source + setResult(RESULT_OK, extraIntent); // $ Alert } { Intent intent = getIntent(); @@ -27,10 +27,10 @@ public void onCreate(Bundle savedInstance) { setResult(RESULT_OK, intent); // Safe } { - Intent intent = getIntent(); + Intent intent = getIntent(); // $ Source intent.setFlags( // Not properly sanitized Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_ACTIVITY_CLEAR_TOP); - setResult(RESULT_OK, intent); // $ hasTaintFlow + setResult(RESULT_OK, intent); // $ Alert } { Intent intent = getIntent(); @@ -39,46 +39,46 @@ public void onCreate(Bundle savedInstance) { setResult(RESULT_OK, intent); // Safe } { - Intent intent = getIntent(); + Intent intent = getIntent(); // $ Source // Combined, the following two calls are a sanitizer intent.removeFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.removeFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); - setResult(RESULT_OK, intent); // $ SPURIOUS: $ hasTaintFlow + setResult(RESULT_OK, intent); // $ SPURIOUS: $ Alert } { - Intent intent = getIntent(); + Intent intent = getIntent(); // $ Source intent.removeFlags( // Not properly sanitized Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_ACTIVITY_CLEAR_TOP); - setResult(RESULT_OK, intent); // $ hasTaintFlow + setResult(RESULT_OK, intent); // $ Alert } { - Intent intent = getIntent(); + Intent intent = getIntent(); // $ Source // Good check if (intent.getData().equals(Uri.parse("content://safe/uri"))) { setResult(RESULT_OK, intent); // Safe } else { - setResult(RESULT_OK, intent); // $ hasTaintFlow + setResult(RESULT_OK, intent); // $ Alert } } { - Intent intent = getIntent(); + Intent intent = getIntent(); // $ Source int flags = intent.getFlags(); // Good check if ((flags & Intent.FLAG_GRANT_READ_URI_PERMISSION) == 0 && (flags & Intent.FLAG_GRANT_WRITE_URI_PERMISSION) == 0) { setResult(RESULT_OK, intent); // Safe } else { - setResult(RESULT_OK, intent); // $ hasTaintFlow + setResult(RESULT_OK, intent); // $ Alert } } { - Intent intent = getIntent(); + Intent intent = getIntent(); // $ Source int flags = intent.getFlags(); // Insufficient check if ((flags & Intent.FLAG_GRANT_READ_URI_PERMISSION) == 0) { - setResult(RESULT_OK, intent); // $ MISSING: $ hasTaintFlow + setResult(RESULT_OK, intent); // $ MISSING: $ Alert } else { - setResult(RESULT_OK, intent); // $ hasTaintFlow + setResult(RESULT_OK, intent); // $ Alert } } } diff --git a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.expected b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.expected index e69de29bb2d1..6d142f2b6348 100644 --- a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.expected +++ b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.expected @@ -0,0 +1,94 @@ +#select +| InsecureTrustManagerTest.java:124:22:124:33 | trustManager | InsecureTrustManagerTest.java:123:53:123:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:124:22:124:33 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:123:53:123:78 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:148:23:148:34 | trustManager | InsecureTrustManagerTest.java:147:54:147:79 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:148:23:148:34 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:147:54:147:79 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:180:23:180:34 | trustManager | InsecureTrustManagerTest.java:179:54:179:79 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:180:23:180:34 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:179:54:179:79 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:212:23:212:34 | trustManager | InsecureTrustManagerTest.java:211:54:211:79 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:212:23:212:34 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:211:54:211:79 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:229:23:229:34 | trustManager | InsecureTrustManagerTest.java:228:54:228:79 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:229:23:229:34 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:228:54:228:79 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:247:23:247:34 | trustManager | InsecureTrustManagerTest.java:246:54:246:79 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:247:23:247:34 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:246:54:246:79 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:267:22:267:33 | trustManager | InsecureTrustManagerTest.java:266:53:266:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:267:22:267:33 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:266:53:266:78 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:279:22:279:33 | trustManager | InsecureTrustManagerTest.java:278:53:278:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:279:22:279:33 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:278:53:278:78 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:291:22:291:33 | trustManager | InsecureTrustManagerTest.java:290:53:290:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:291:22:291:33 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:290:53:290:78 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:303:22:303:33 | trustManager | InsecureTrustManagerTest.java:302:53:302:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:303:22:303:33 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:302:53:302:78 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:315:22:315:33 | trustManager | InsecureTrustManagerTest.java:314:53:314:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:315:22:315:33 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:314:53:314:78 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:327:22:327:33 | trustManager | InsecureTrustManagerTest.java:326:53:326:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:327:22:327:33 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:326:53:326:78 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:339:22:339:33 | trustManager | InsecureTrustManagerTest.java:338:53:338:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:339:22:339:33 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:338:53:338:78 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:352:22:352:33 | trustManager | InsecureTrustManagerTest.java:351:53:351:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:352:22:352:33 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:351:53:351:78 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +| InsecureTrustManagerTest.java:360:22:360:33 | trustManager | InsecureTrustManagerTest.java:359:53:359:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:360:22:360:33 | trustManager | This uses $@, which is defined in $@ and trusts any certificate. | InsecureTrustManagerTest.java:359:53:359:78 | new InsecureTrustManager(...) : InsecureTrustManager | TrustManager | InsecureTrustManagerTest.java:35:23:35:42 | InsecureTrustManager | InsecureTrustManagerTest$InsecureTrustManager | +edges +| InsecureTrustManagerTest.java:123:33:123:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:124:22:124:33 | trustManager | provenance | | +| InsecureTrustManagerTest.java:123:53:123:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:123:33:123:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:147:34:147:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:148:23:148:34 | trustManager | provenance | | +| InsecureTrustManagerTest.java:147:54:147:79 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:147:34:147:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:179:34:179:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:180:23:180:34 | trustManager | provenance | | +| InsecureTrustManagerTest.java:179:54:179:79 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:179:34:179:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:211:34:211:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:212:23:212:34 | trustManager | provenance | | +| InsecureTrustManagerTest.java:211:54:211:79 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:211:34:211:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:228:34:228:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:229:23:229:34 | trustManager | provenance | | +| InsecureTrustManagerTest.java:228:54:228:79 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:228:34:228:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:246:34:246:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:247:23:247:34 | trustManager | provenance | | +| InsecureTrustManagerTest.java:246:54:246:79 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:246:34:246:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:266:33:266:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:267:22:267:33 | trustManager | provenance | | +| InsecureTrustManagerTest.java:266:53:266:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:266:33:266:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:278:33:278:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:279:22:279:33 | trustManager | provenance | | +| InsecureTrustManagerTest.java:278:53:278:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:278:33:278:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:290:33:290:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:291:22:291:33 | trustManager | provenance | | +| InsecureTrustManagerTest.java:290:53:290:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:290:33:290:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:302:33:302:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:303:22:303:33 | trustManager | provenance | | +| InsecureTrustManagerTest.java:302:53:302:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:302:33:302:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:314:33:314:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:315:22:315:33 | trustManager | provenance | | +| InsecureTrustManagerTest.java:314:53:314:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:314:33:314:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:326:33:326:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:327:22:327:33 | trustManager | provenance | | +| InsecureTrustManagerTest.java:326:53:326:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:326:33:326:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:338:33:338:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:339:22:339:33 | trustManager | provenance | | +| InsecureTrustManagerTest.java:338:53:338:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:338:33:338:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:351:33:351:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:352:22:352:33 | trustManager | provenance | | +| InsecureTrustManagerTest.java:351:53:351:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:351:33:351:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +| InsecureTrustManagerTest.java:359:33:359:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | InsecureTrustManagerTest.java:360:22:360:33 | trustManager | provenance | | +| InsecureTrustManagerTest.java:359:53:359:78 | new InsecureTrustManager(...) : InsecureTrustManager | InsecureTrustManagerTest.java:359:33:359:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | provenance | | +nodes +| InsecureTrustManagerTest.java:123:33:123:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:123:53:123:78 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:124:22:124:33 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:147:34:147:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:147:54:147:79 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:148:23:148:34 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:179:34:179:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:179:54:179:79 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:180:23:180:34 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:211:34:211:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:211:54:211:79 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:212:23:212:34 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:228:34:228:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:228:54:228:79 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:229:23:229:34 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:246:34:246:80 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:246:54:246:79 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:247:23:247:34 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:266:33:266:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:266:53:266:78 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:267:22:267:33 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:278:33:278:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:278:53:278:78 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:279:22:279:33 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:290:33:290:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:290:53:290:78 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:291:22:291:33 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:302:33:302:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:302:53:302:78 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:303:22:303:33 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:314:33:314:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:314:53:314:78 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:315:22:315:33 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:326:33:326:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:326:53:326:78 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:327:22:327:33 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:338:33:338:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:338:53:338:78 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:339:22:339:33 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:351:33:351:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:351:53:351:78 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:352:22:352:33 | trustManager | semmle.label | trustManager | +| InsecureTrustManagerTest.java:359:33:359:79 | {...} : TrustManager[] [[]] : InsecureTrustManager | semmle.label | {...} : TrustManager[] [[]] : InsecureTrustManager | +| InsecureTrustManagerTest.java:359:53:359:78 | new InsecureTrustManager(...) : InsecureTrustManager | semmle.label | new InsecureTrustManager(...) : InsecureTrustManager | +| InsecureTrustManagerTest.java:360:22:360:33 | trustManager | semmle.label | trustManager | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.java b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.java index 17e8fc60afcd..4e098fa29887 100644 --- a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.java +++ b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.java @@ -120,8 +120,8 @@ private static void directSecureTrustManagerCall() private static void directInsecureTrustManagerCall() throws NoSuchAlgorithmException, KeyManagementException { SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } private static void namedVariableFlagDirectInsecureTrustManagerCall() @@ -144,8 +144,8 @@ private static void noNamedVariableFlagDirectInsecureTrustManagerCall() throws NoSuchAlgorithmException, KeyManagementException { if (SOME_NAME_THAT_IS_NOT_A_FLAG_NAME) { SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } } @@ -176,8 +176,8 @@ private static void noStringLiteralFlagDirectInsecureTrustManagerCall() throws NoSuchAlgorithmException, KeyManagementException { if (Boolean.parseBoolean(System.getProperty("SOME_NAME_THAT_IS_NOT_A_FLAG_NAME"))) { SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } } @@ -208,8 +208,8 @@ private static void noMethodAccessFlagDirectInsecureTrustManagerCall() throws NoSuchAlgorithmException, KeyManagementException { if (is42TheAnswerForEverything()) { SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } } @@ -225,8 +225,8 @@ private static void isEqualsIgnoreCaseDirectInsecureTrustManagerCall() String schemaFromHttpRequest = "HTTPS"; if (schemaFromHttpRequest.equalsIgnoreCase("https")) { SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } } @@ -243,8 +243,8 @@ private static void noIsEqualsIgnoreCaseDirectInsecureTrustManagerCall() String schemaFromHttpRequest = "HTTPS"; if (!schemaFromHttpRequest.equalsIgnoreCase("https")) { SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } } @@ -263,8 +263,8 @@ private static void namedVariableFlagNOTGuardingDirectInsecureTrustManagerCall() } SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } @@ -275,8 +275,8 @@ private static void noNamedVariableFlagNOTGuardingDirectInsecureTrustManagerCall } SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } @@ -287,8 +287,8 @@ private static void stringLiteralFlagNOTGuardingDirectInsecureTrustManagerCall() } SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } @@ -299,8 +299,8 @@ private static void noStringLiteralFlagNOTGuardingDirectInsecureTrustManagerCall } SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } @@ -311,8 +311,8 @@ private static void methodAccessFlagNOTGuardingDirectInsecureTrustManagerCall() } SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } @@ -323,8 +323,8 @@ private static void noMethodAccessFlagNOTGuardingDirectInsecureTrustManagerCall( } SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } private static void isEqualsIgnoreCaseNOTGuardingDirectInsecureTrustManagerCall() @@ -335,8 +335,8 @@ private static void isEqualsIgnoreCaseNOTGuardingDirectInsecureTrustManagerCall( } SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } @@ -348,15 +348,15 @@ private static void noIsEqualsIgnoreCaseNOTGuardingDirectInsecureTrustManagerCal } SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } private static void disableTrustManager() throws NoSuchAlgorithmException, KeyManagementException { SSLContext context = SSLContext.getInstance("TLS"); - TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; - context.init(null, trustManager, null); // $ hasValueFlow + TrustManager[] trustManager = new TrustManager[] {new InsecureTrustManager()}; // $ Source + context.init(null, trustManager, null); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.ql b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.ql deleted file mode 100644 index 1c0ffc49eba4..000000000000 --- a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import semmle.code.java.security.InsecureTrustManagerQuery -import utils.test.InlineExpectationsTest - -module InsecureTrustManagerTest implements TestSig { - string getARelevantTag() { result = "hasValueFlow" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasValueFlow" and - exists(DataFlow::Node sink | InsecureTrustManagerFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.qlref b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.qlref new file mode 100644 index 000000000000..f4c00b42347d --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-295/InsecureTrustManager.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-312/CleartextStorageCookie/CleartextStorageCookieTest.expected b/java/ql/test/query-tests/security/CWE-312/CleartextStorageCookie/CleartextStorageCookieTest.expected new file mode 100644 index 000000000000..d39985a091bb --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-312/CleartextStorageCookie/CleartextStorageCookieTest.expected @@ -0,0 +1,21 @@ +| CleartextStorageCookieTest.java:22:7:22:40 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:20:31:20:62 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:20:54:20:61 | password | sensitive data | CleartextStorageCookieTest.java:20:54:20:61 | password | added to the cookie | +| CleartextStorageCookieTest.java:44:7:44:32 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:43:23:43:51 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:20:54:20:61 | password | sensitive data | CleartextStorageCookieTest.java:43:46:43:50 | value | added to the cookie | +| CleartextStorageCookieTest.java:44:7:44:32 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:43:23:43:51 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:21:31:21:38 | password | sensitive data | CleartextStorageCookieTest.java:43:46:43:50 | value | added to the cookie | +| CleartextStorageCookieTest.java:44:7:44:32 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:43:23:43:51 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:23:69:23:76 | password | sensitive data | CleartextStorageCookieTest.java:43:46:43:50 | value | added to the cookie | +| CleartextStorageCookieTest.java:44:7:44:32 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:43:23:43:51 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:24:46:24:53 | password | sensitive data | CleartextStorageCookieTest.java:43:46:43:50 | value | added to the cookie | +| CleartextStorageCookieTest.java:44:7:44:32 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:43:23:43:51 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:33:67:33:74 | password | sensitive data | CleartextStorageCookieTest.java:43:46:43:50 | value | added to the cookie | +| CleartextStorageCookieTest.java:44:7:44:32 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:43:23:43:51 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:34:36:34:43 | password | sensitive data | CleartextStorageCookieTest.java:43:46:43:50 | value | added to the cookie | +| CleartextStorageCookieTest.java:44:7:44:32 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:43:23:43:51 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:37:84:37:91 | password | sensitive data | CleartextStorageCookieTest.java:43:46:43:50 | value | added to the cookie | +| CleartextStorageCookieTest.java:44:7:44:32 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:43:23:43:51 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:38:51:38:58 | password | sensitive data | CleartextStorageCookieTest.java:43:46:43:50 | value | added to the cookie | +| CleartextStorageCookieTest.java:44:7:44:32 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:43:23:43:51 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:42:40:42:47 | password | sensitive data | CleartextStorageCookieTest.java:43:46:43:50 | value | added to the cookie | +| CleartextStorageCookieTest.java:52:7:52:50 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:52:26:52:49 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:20:54:20:61 | password | sensitive data | CleartextStorageCookieTest.java:52:45:52:48 | data | added to the cookie | +| CleartextStorageCookieTest.java:52:7:52:50 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:52:26:52:49 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:21:31:21:38 | password | sensitive data | CleartextStorageCookieTest.java:52:45:52:48 | data | added to the cookie | +| CleartextStorageCookieTest.java:52:7:52:50 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:52:26:52:49 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:23:69:23:76 | password | sensitive data | CleartextStorageCookieTest.java:52:45:52:48 | data | added to the cookie | +| CleartextStorageCookieTest.java:52:7:52:50 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:52:26:52:49 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:24:46:24:53 | password | sensitive data | CleartextStorageCookieTest.java:52:45:52:48 | data | added to the cookie | +| CleartextStorageCookieTest.java:52:7:52:50 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:52:26:52:49 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:33:67:33:74 | password | sensitive data | CleartextStorageCookieTest.java:52:45:52:48 | data | added to the cookie | +| CleartextStorageCookieTest.java:52:7:52:50 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:52:26:52:49 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:34:36:34:43 | password | sensitive data | CleartextStorageCookieTest.java:52:45:52:48 | data | added to the cookie | +| CleartextStorageCookieTest.java:52:7:52:50 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:52:26:52:49 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:37:84:37:91 | password | sensitive data | CleartextStorageCookieTest.java:52:45:52:48 | data | added to the cookie | +| CleartextStorageCookieTest.java:52:7:52:50 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:52:26:52:49 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:38:51:38:58 | password | sensitive data | CleartextStorageCookieTest.java:52:45:52:48 | data | added to the cookie | +| CleartextStorageCookieTest.java:52:7:52:50 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:52:26:52:49 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:42:40:42:47 | password | sensitive data | CleartextStorageCookieTest.java:52:45:52:48 | data | added to the cookie | +| CleartextStorageCookieTest.java:52:7:52:50 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:52:26:52:49 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:48:77:48:84 | password | sensitive data | CleartextStorageCookieTest.java:52:45:52:48 | data | added to the cookie | +| CleartextStorageCookieTest.java:52:7:52:50 | addCookie(...) | This stores cookie $@ containing $@ which was $@. | CleartextStorageCookieTest.java:52:26:52:49 | new Cookie(...) | new Cookie(...) | CleartextStorageCookieTest.java:49:59:49:83 | getPassword(...) | sensitive data | CleartextStorageCookieTest.java:52:45:52:48 | data | added to the cookie | diff --git a/java/ql/test/query-tests/security/CWE-312/CleartextStorageCookie/CleartextStorageCookieTest.java b/java/ql/test/query-tests/security/CWE-312/CleartextStorageCookie/CleartextStorageCookieTest.java new file mode 100644 index 000000000000..5e4e949ca11e --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-312/CleartextStorageCookie/CleartextStorageCookieTest.java @@ -0,0 +1,79 @@ +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.Cookie; +import org.owasp.esapi.Encoder; +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.security.MessageDigest; +import java.net.PasswordAuthentication; + +public class CleartextStorageCookieTest extends HttpServlet { + HttpServletResponse response; + String name = "user"; + String password = "BP@ssw0rd"; // $ Source + + public void doGet() throws Exception { + { + Cookie nameCookie = new Cookie("name", name); + nameCookie.setValue(name); + response.addCookie(nameCookie); // Safe + Cookie passwordCookie = new Cookie("password", password); + passwordCookie.setValue(password); + response.addCookie(passwordCookie); // $ Alert + Cookie encodedPasswordCookie = new Cookie("password", encrypt(password)); + encodedPasswordCookie.setValue(encrypt(password)); + response.addCookie(encodedPasswordCookie); // Safe + } + { + io.netty.handler.codec.http.Cookie nettyNameCookie = + new io.netty.handler.codec.http.DefaultCookie("name", name); + nettyNameCookie.setValue(name); // Safe + + io.netty.handler.codec.http.Cookie nettyPasswordCookie = + new io.netty.handler.codec.http.DefaultCookie("password", password); + nettyPasswordCookie.setValue(password); // $ MISSING: Alert (netty not supported by query) + + io.netty.handler.codec.http.cookie.Cookie nettyEncodedPasswordCookie = + new io.netty.handler.codec.http.cookie.DefaultCookie("password", encrypt(password)); + nettyEncodedPasswordCookie.setValue(encrypt(password)); // Safe + } + { + Encoder enc = null; + String value = enc.encodeForHTML(password); + Cookie cookie = new Cookie("password", value); + response.addCookie(cookie); // $ Alert + } + { + String data; + PasswordAuthentication credentials = new PasswordAuthentication(name, password.toCharArray()); + data = credentials.getUserName() + ":" + new String(credentials.getPassword()); + + // BAD: store data in a cookie in cleartext form + response.addCookie(new Cookie("auth", data)); // $ Alert + } + { + String data; + PasswordAuthentication credentials = + new PasswordAuthentication(name, password.toCharArray()); + String salt = "ThisIsMySalt"; + MessageDigest messageDigest = MessageDigest.getInstance("SHA-512"); + messageDigest.reset(); + String credentialsToHash = + credentials.getUserName() + ":" + new String(credentials.getPassword()); + byte[] hashedCredsAsBytes = + messageDigest.digest((salt+credentialsToHash).getBytes("UTF-8")); + data = new String(hashedCredsAsBytes); + + // GOOD: store data in a cookie in encrypted form + response.addCookie(new Cookie("auth", data)); // Safe + } + } + + + private static String encrypt(String cleartext) throws Exception { + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + byte[] hash = digest.digest(cleartext.getBytes(StandardCharsets.UTF_8)); + String encoded = Base64.getEncoder().encodeToString(hash); + return encoded; + } +} diff --git a/java/ql/test/query-tests/security/CWE-312/CleartextStorageCookie/CleartextStorageCookieTest.qlref b/java/ql/test/query-tests/security/CWE-312/CleartextStorageCookie/CleartextStorageCookieTest.qlref new file mode 100644 index 000000000000..923d1277eebf --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-312/CleartextStorageCookie/CleartextStorageCookieTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-312/CleartextStorageCookie.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-312/CleartextStorageCookie/options b/java/ql/test/query-tests/security/CWE-312/CleartextStorageCookie/options new file mode 100644 index 000000000000..068e49acc977 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-312/CleartextStorageCookie/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/apache-commons-lang3-3.7:${testdir}/../../../../stubs/esapi-2.0.1:${testdir}/../../../../stubs/netty-4.1.x diff --git a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.expected b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.expected index e69de29bb2d1..25c0a616e861 100644 --- a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.expected +++ b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.expected @@ -0,0 +1,120 @@ +#select +| InsufficientKeySizeTest.java:17:26:17:27 | 64 | InsufficientKeySizeTest.java:17:26:17:27 | 64 | InsufficientKeySizeTest.java:17:26:17:27 | 64 | This $@ is less than the recommended key size of 128 bits. | InsufficientKeySizeTest.java:17:26:17:27 | 64 | key size | +| InsufficientKeySizeTest.java:27:26:27:30 | size1 | InsufficientKeySizeTest.java:23:31:23:32 | 64 : Number | InsufficientKeySizeTest.java:27:26:27:30 | size1 | This $@ is less than the recommended key size of 128 bits. | InsufficientKeySizeTest.java:23:31:23:32 | 64 | key size | +| InsufficientKeySizeTest.java:30:26:30:30 | size2 | InsufficientKeySizeTest.java:24:25:24:26 | 64 : Number | InsufficientKeySizeTest.java:30:26:30:30 | size2 | This $@ is less than the recommended key size of 128 bits. | InsufficientKeySizeTest.java:24:25:24:26 | 64 | key size | +| InsufficientKeySizeTest.java:40:26:40:27 | 64 | InsufficientKeySizeTest.java:40:26:40:27 | 64 | InsufficientKeySizeTest.java:40:26:40:27 | 64 | This $@ is less than the recommended key size of 128 bits. | InsufficientKeySizeTest.java:40:26:40:27 | 64 | key size | +| InsufficientKeySizeTest.java:51:36:51:39 | 1024 | InsufficientKeySizeTest.java:51:36:51:39 | 1024 | InsufficientKeySizeTest.java:51:36:51:39 | 1024 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:51:36:51:39 | 1024 | key size | +| InsufficientKeySizeTest.java:58:73:58:76 | 1024 | InsufficientKeySizeTest.java:58:73:58:76 | 1024 | InsufficientKeySizeTest.java:58:73:58:76 | 1024 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:58:73:58:76 | 1024 | key size | +| InsufficientKeySizeTest.java:62:63:62:66 | 1024 | InsufficientKeySizeTest.java:62:63:62:66 | 1024 | InsufficientKeySizeTest.java:62:63:62:66 | 1024 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:62:63:62:66 | 1024 | key size | +| InsufficientKeySizeTest.java:69:36:69:40 | size1 | InsufficientKeySizeTest.java:65:31:65:34 | 1024 : Number | InsufficientKeySizeTest.java:69:36:69:40 | size1 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:65:31:65:34 | 1024 | key size | +| InsufficientKeySizeTest.java:72:36:72:40 | size2 | InsufficientKeySizeTest.java:66:25:66:28 | 1024 : Number | InsufficientKeySizeTest.java:72:36:72:40 | size2 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:66:25:66:28 | 1024 | key size | +| InsufficientKeySizeTest.java:81:36:81:50 | getRSAKeySize(...) | InsufficientKeySizeTest.java:255:40:255:43 | 1024 : Number | InsufficientKeySizeTest.java:81:36:81:50 | getRSAKeySize(...) | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:255:40:255:43 | 1024 | key size | +| InsufficientKeySizeTest.java:86:36:86:39 | 1024 | InsufficientKeySizeTest.java:86:36:86:39 | 1024 | InsufficientKeySizeTest.java:86:36:86:39 | 1024 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:86:36:86:39 | 1024 | key size | +| InsufficientKeySizeTest.java:97:36:97:39 | 1024 | InsufficientKeySizeTest.java:97:36:97:39 | 1024 | InsufficientKeySizeTest.java:97:36:97:39 | 1024 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:97:36:97:39 | 1024 | key size | +| InsufficientKeySizeTest.java:104:67:104:70 | 1024 | InsufficientKeySizeTest.java:104:67:104:70 | 1024 | InsufficientKeySizeTest.java:104:67:104:70 | 1024 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:104:67:104:70 | 1024 | key size | +| InsufficientKeySizeTest.java:108:60:108:63 | 1024 | InsufficientKeySizeTest.java:108:60:108:63 | 1024 | InsufficientKeySizeTest.java:108:60:108:63 | 1024 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:108:60:108:63 | 1024 | key size | +| InsufficientKeySizeTest.java:112:27:112:30 | 1024 | InsufficientKeySizeTest.java:112:27:112:30 | 1024 | InsufficientKeySizeTest.java:112:27:112:30 | 1024 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:112:27:112:30 | 1024 | key size | +| InsufficientKeySizeTest.java:117:28:117:31 | 1024 | InsufficientKeySizeTest.java:117:28:117:31 | 1024 | InsufficientKeySizeTest.java:117:28:117:31 | 1024 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:117:28:117:31 | 1024 | key size | +| InsufficientKeySizeTest.java:128:36:128:39 | 1024 | InsufficientKeySizeTest.java:128:36:128:39 | 1024 | InsufficientKeySizeTest.java:128:36:128:39 | 1024 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:128:36:128:39 | 1024 | key size | +| InsufficientKeySizeTest.java:135:64:135:67 | 1024 | InsufficientKeySizeTest.java:135:64:135:67 | 1024 | InsufficientKeySizeTest.java:135:64:135:67 | 1024 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:135:64:135:67 | 1024 | key size | +| InsufficientKeySizeTest.java:139:59:139:62 | 1024 | InsufficientKeySizeTest.java:139:59:139:62 | 1024 | InsufficientKeySizeTest.java:139:59:139:62 | 1024 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:139:59:139:62 | 1024 | key size | +| InsufficientKeySizeTest.java:143:27:143:30 | 1024 | InsufficientKeySizeTest.java:143:27:143:30 | 1024 | InsufficientKeySizeTest.java:143:27:143:30 | 1024 | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:143:27:143:30 | 1024 | key size | +| InsufficientKeySizeTest.java:150:36:150:38 | 128 | InsufficientKeySizeTest.java:150:36:150:38 | 128 | InsufficientKeySizeTest.java:150:36:150:38 | 128 | This $@ is less than the recommended key size of 256 bits. | InsufficientKeySizeTest.java:150:36:150:38 | 128 | key size | +| InsufficientKeySizeTest.java:154:65:154:75 | "secp112r1" | InsufficientKeySizeTest.java:154:65:154:75 | "secp112r1" | InsufficientKeySizeTest.java:154:65:154:75 | "secp112r1" | This $@ is less than the recommended key size of EC bits. | InsufficientKeySizeTest.java:154:65:154:75 | "secp112r1" | key size | +| InsufficientKeySizeTest.java:158:59:158:69 | "secp112r1" | InsufficientKeySizeTest.java:158:59:158:69 | "secp112r1" | InsufficientKeySizeTest.java:158:59:158:69 | "secp112r1" | This $@ is less than the recommended key size of EC bits. | InsufficientKeySizeTest.java:158:59:158:69 | "secp112r1" | key size | +| InsufficientKeySizeTest.java:165:65:165:82 | "X9.62 prime192v2" | InsufficientKeySizeTest.java:165:65:165:82 | "X9.62 prime192v2" | InsufficientKeySizeTest.java:165:65:165:82 | "X9.62 prime192v2" | This $@ is less than the recommended key size of EC bits. | InsufficientKeySizeTest.java:165:65:165:82 | "X9.62 prime192v2" | key size | +| InsufficientKeySizeTest.java:169:65:169:82 | "X9.62 c2tnb191v3" | InsufficientKeySizeTest.java:169:65:169:82 | "X9.62 c2tnb191v3" | InsufficientKeySizeTest.java:169:65:169:82 | "X9.62 c2tnb191v3" | This $@ is less than the recommended key size of EC bits. | InsufficientKeySizeTest.java:169:65:169:82 | "X9.62 c2tnb191v3" | key size | +| InsufficientKeySizeTest.java:173:65:173:75 | "sect163k1" | InsufficientKeySizeTest.java:173:65:173:75 | "sect163k1" | InsufficientKeySizeTest.java:173:65:173:75 | "sect163k1" | This $@ is less than the recommended key size of EC bits. | InsufficientKeySizeTest.java:173:65:173:75 | "sect163k1" | key size | +| InsufficientKeySizeTest.java:181:65:181:76 | "prime192v2" | InsufficientKeySizeTest.java:181:65:181:76 | "prime192v2" | InsufficientKeySizeTest.java:181:65:181:76 | "prime192v2" | This $@ is less than the recommended key size of EC bits. | InsufficientKeySizeTest.java:181:65:181:76 | "prime192v2" | key size | +| InsufficientKeySizeTest.java:189:65:189:76 | "c2tnb191v1" | InsufficientKeySizeTest.java:189:65:189:76 | "c2tnb191v1" | InsufficientKeySizeTest.java:189:65:189:76 | "c2tnb191v1" | This $@ is less than the recommended key size of EC bits. | InsufficientKeySizeTest.java:189:65:189:76 | "c2tnb191v1" | key size | +| InsufficientKeySizeTest.java:197:64:197:74 | "secp112r1" | InsufficientKeySizeTest.java:197:64:197:74 | "secp112r1" | InsufficientKeySizeTest.java:197:64:197:74 | "secp112r1" | This $@ is less than the recommended key size of EC bits. | InsufficientKeySizeTest.java:197:64:197:74 | "secp112r1" | key size | +| InsufficientKeySizeTest.java:207:66:207:75 | curveName1 | InsufficientKeySizeTest.java:205:39:205:49 | "secp112r1" : String | InsufficientKeySizeTest.java:207:66:207:75 | curveName1 | This $@ is less than the recommended key size of EC bits. | InsufficientKeySizeTest.java:205:39:205:49 | "secp112r1" | key size | +| InsufficientKeySizeTest.java:212:66:212:75 | curveName2 | InsufficientKeySizeTest.java:210:33:210:43 | "secp112r1" : String | InsufficientKeySizeTest.java:212:66:212:75 | curveName2 | This $@ is less than the recommended key size of EC bits. | InsufficientKeySizeTest.java:210:33:210:43 | "secp112r1" | key size | +| InsufficientKeySizeTest.java:219:21:219:27 | keySize | InsufficientKeySizeTest.java:24:25:24:26 | 64 : Number | InsufficientKeySizeTest.java:219:21:219:27 | keySize | This $@ is less than the recommended key size of 128 bits. | InsufficientKeySizeTest.java:24:25:24:26 | 64 | key size | +| InsufficientKeySizeTest.java:225:21:225:27 | keySize | InsufficientKeySizeTest.java:35:30:35:31 | 64 : Number | InsufficientKeySizeTest.java:225:21:225:27 | keySize | This $@ is less than the recommended key size of 128 bits. | InsufficientKeySizeTest.java:35:30:35:31 | 64 | key size | +| InsufficientKeySizeTest.java:230:31:230:37 | keySize | InsufficientKeySizeTest.java:66:25:66:28 | 1024 : Number | InsufficientKeySizeTest.java:230:31:230:37 | keySize | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:66:25:66:28 | 1024 | key size | +| InsufficientKeySizeTest.java:236:31:236:37 | keySize | InsufficientKeySizeTest.java:77:36:77:39 | 1024 : Number | InsufficientKeySizeTest.java:236:31:236:37 | keySize | This $@ is less than the recommended key size of 2048 bits. | InsufficientKeySizeTest.java:77:36:77:39 | 1024 | key size | +| InsufficientKeySizeTest.java:246:31:246:37 | keySize | InsufficientKeySizeTest.java:199:24:199:26 | 128 : Number | InsufficientKeySizeTest.java:246:31:246:37 | keySize | This $@ is less than the recommended key size of 256 bits. | InsufficientKeySizeTest.java:199:24:199:26 | 128 | key size | +| InsufficientKeySizeTest.java:252:31:252:37 | keySize | InsufficientKeySizeTest.java:202:40:202:42 | 128 : Number | InsufficientKeySizeTest.java:252:31:252:37 | keySize | This $@ is less than the recommended key size of 256 bits. | InsufficientKeySizeTest.java:202:40:202:42 | 128 | key size | +edges +| InsufficientKeySizeTest.java:23:31:23:32 | 64 : Number | InsufficientKeySizeTest.java:27:26:27:30 | size1 | provenance | | +| InsufficientKeySizeTest.java:24:25:24:26 | 64 : Number | InsufficientKeySizeTest.java:30:26:30:30 | size2 | provenance | | +| InsufficientKeySizeTest.java:24:25:24:26 | 64 : Number | InsufficientKeySizeTest.java:34:35:34:39 | size2 : Number | provenance | | +| InsufficientKeySizeTest.java:34:35:34:39 | size2 : Number | InsufficientKeySizeTest.java:217:46:217:56 | keySize : Number | provenance | | +| InsufficientKeySizeTest.java:35:30:35:31 | 64 : Number | InsufficientKeySizeTest.java:223:41:223:51 | keySize : Number | provenance | | +| InsufficientKeySizeTest.java:65:31:65:34 | 1024 : Number | InsufficientKeySizeTest.java:69:36:69:40 | size1 | provenance | | +| InsufficientKeySizeTest.java:66:25:66:28 | 1024 : Number | InsufficientKeySizeTest.java:72:36:72:40 | size2 | provenance | | +| InsufficientKeySizeTest.java:66:25:66:28 | 1024 : Number | InsufficientKeySizeTest.java:76:41:76:45 | size2 : Number | provenance | | +| InsufficientKeySizeTest.java:76:41:76:45 | size2 : Number | InsufficientKeySizeTest.java:228:52:228:62 | keySize : Number | provenance | | +| InsufficientKeySizeTest.java:77:36:77:39 | 1024 : Number | InsufficientKeySizeTest.java:234:47:234:57 | keySize : Number | provenance | | +| InsufficientKeySizeTest.java:199:24:199:26 | 128 : Number | InsufficientKeySizeTest.java:201:41:201:44 | size : Number | provenance | | +| InsufficientKeySizeTest.java:201:41:201:44 | size : Number | InsufficientKeySizeTest.java:244:52:244:62 | keySize : Number | provenance | | +| InsufficientKeySizeTest.java:202:40:202:42 | 128 : Number | InsufficientKeySizeTest.java:250:51:250:61 | keySize : Number | provenance | | +| InsufficientKeySizeTest.java:205:39:205:49 | "secp112r1" : String | InsufficientKeySizeTest.java:207:66:207:75 | curveName1 | provenance | | +| InsufficientKeySizeTest.java:210:33:210:43 | "secp112r1" : String | InsufficientKeySizeTest.java:212:66:212:75 | curveName2 | provenance | | +| InsufficientKeySizeTest.java:217:46:217:56 | keySize : Number | InsufficientKeySizeTest.java:219:21:219:27 | keySize | provenance | | +| InsufficientKeySizeTest.java:223:41:223:51 | keySize : Number | InsufficientKeySizeTest.java:225:21:225:27 | keySize | provenance | | +| InsufficientKeySizeTest.java:228:52:228:62 | keySize : Number | InsufficientKeySizeTest.java:230:31:230:37 | keySize | provenance | | +| InsufficientKeySizeTest.java:234:47:234:57 | keySize : Number | InsufficientKeySizeTest.java:236:31:236:37 | keySize | provenance | | +| InsufficientKeySizeTest.java:244:52:244:62 | keySize : Number | InsufficientKeySizeTest.java:246:31:246:37 | keySize | provenance | | +| InsufficientKeySizeTest.java:250:51:250:61 | keySize : Number | InsufficientKeySizeTest.java:252:31:252:37 | keySize | provenance | | +| InsufficientKeySizeTest.java:255:40:255:43 | 1024 : Number | InsufficientKeySizeTest.java:81:36:81:50 | getRSAKeySize(...) | provenance | | +nodes +| InsufficientKeySizeTest.java:17:26:17:27 | 64 | semmle.label | 64 | +| InsufficientKeySizeTest.java:23:31:23:32 | 64 : Number | semmle.label | 64 : Number | +| InsufficientKeySizeTest.java:24:25:24:26 | 64 : Number | semmle.label | 64 : Number | +| InsufficientKeySizeTest.java:27:26:27:30 | size1 | semmle.label | size1 | +| InsufficientKeySizeTest.java:30:26:30:30 | size2 | semmle.label | size2 | +| InsufficientKeySizeTest.java:34:35:34:39 | size2 : Number | semmle.label | size2 : Number | +| InsufficientKeySizeTest.java:35:30:35:31 | 64 : Number | semmle.label | 64 : Number | +| InsufficientKeySizeTest.java:40:26:40:27 | 64 | semmle.label | 64 | +| InsufficientKeySizeTest.java:51:36:51:39 | 1024 | semmle.label | 1024 | +| InsufficientKeySizeTest.java:58:73:58:76 | 1024 | semmle.label | 1024 | +| InsufficientKeySizeTest.java:62:63:62:66 | 1024 | semmle.label | 1024 | +| InsufficientKeySizeTest.java:65:31:65:34 | 1024 : Number | semmle.label | 1024 : Number | +| InsufficientKeySizeTest.java:66:25:66:28 | 1024 : Number | semmle.label | 1024 : Number | +| InsufficientKeySizeTest.java:69:36:69:40 | size1 | semmle.label | size1 | +| InsufficientKeySizeTest.java:72:36:72:40 | size2 | semmle.label | size2 | +| InsufficientKeySizeTest.java:76:41:76:45 | size2 : Number | semmle.label | size2 : Number | +| InsufficientKeySizeTest.java:77:36:77:39 | 1024 : Number | semmle.label | 1024 : Number | +| InsufficientKeySizeTest.java:81:36:81:50 | getRSAKeySize(...) | semmle.label | getRSAKeySize(...) | +| InsufficientKeySizeTest.java:86:36:86:39 | 1024 | semmle.label | 1024 | +| InsufficientKeySizeTest.java:97:36:97:39 | 1024 | semmle.label | 1024 | +| InsufficientKeySizeTest.java:104:67:104:70 | 1024 | semmle.label | 1024 | +| InsufficientKeySizeTest.java:108:60:108:63 | 1024 | semmle.label | 1024 | +| InsufficientKeySizeTest.java:112:27:112:30 | 1024 | semmle.label | 1024 | +| InsufficientKeySizeTest.java:117:28:117:31 | 1024 | semmle.label | 1024 | +| InsufficientKeySizeTest.java:128:36:128:39 | 1024 | semmle.label | 1024 | +| InsufficientKeySizeTest.java:135:64:135:67 | 1024 | semmle.label | 1024 | +| InsufficientKeySizeTest.java:139:59:139:62 | 1024 | semmle.label | 1024 | +| InsufficientKeySizeTest.java:143:27:143:30 | 1024 | semmle.label | 1024 | +| InsufficientKeySizeTest.java:150:36:150:38 | 128 | semmle.label | 128 | +| InsufficientKeySizeTest.java:154:65:154:75 | "secp112r1" | semmle.label | "secp112r1" | +| InsufficientKeySizeTest.java:158:59:158:69 | "secp112r1" | semmle.label | "secp112r1" | +| InsufficientKeySizeTest.java:165:65:165:82 | "X9.62 prime192v2" | semmle.label | "X9.62 prime192v2" | +| InsufficientKeySizeTest.java:169:65:169:82 | "X9.62 c2tnb191v3" | semmle.label | "X9.62 c2tnb191v3" | +| InsufficientKeySizeTest.java:173:65:173:75 | "sect163k1" | semmle.label | "sect163k1" | +| InsufficientKeySizeTest.java:181:65:181:76 | "prime192v2" | semmle.label | "prime192v2" | +| InsufficientKeySizeTest.java:189:65:189:76 | "c2tnb191v1" | semmle.label | "c2tnb191v1" | +| InsufficientKeySizeTest.java:197:64:197:74 | "secp112r1" | semmle.label | "secp112r1" | +| InsufficientKeySizeTest.java:199:24:199:26 | 128 : Number | semmle.label | 128 : Number | +| InsufficientKeySizeTest.java:201:41:201:44 | size : Number | semmle.label | size : Number | +| InsufficientKeySizeTest.java:202:40:202:42 | 128 : Number | semmle.label | 128 : Number | +| InsufficientKeySizeTest.java:205:39:205:49 | "secp112r1" : String | semmle.label | "secp112r1" : String | +| InsufficientKeySizeTest.java:207:66:207:75 | curveName1 | semmle.label | curveName1 | +| InsufficientKeySizeTest.java:210:33:210:43 | "secp112r1" : String | semmle.label | "secp112r1" : String | +| InsufficientKeySizeTest.java:212:66:212:75 | curveName2 | semmle.label | curveName2 | +| InsufficientKeySizeTest.java:217:46:217:56 | keySize : Number | semmle.label | keySize : Number | +| InsufficientKeySizeTest.java:219:21:219:27 | keySize | semmle.label | keySize | +| InsufficientKeySizeTest.java:223:41:223:51 | keySize : Number | semmle.label | keySize : Number | +| InsufficientKeySizeTest.java:225:21:225:27 | keySize | semmle.label | keySize | +| InsufficientKeySizeTest.java:228:52:228:62 | keySize : Number | semmle.label | keySize : Number | +| InsufficientKeySizeTest.java:230:31:230:37 | keySize | semmle.label | keySize | +| InsufficientKeySizeTest.java:234:47:234:57 | keySize : Number | semmle.label | keySize : Number | +| InsufficientKeySizeTest.java:236:31:236:37 | keySize | semmle.label | keySize | +| InsufficientKeySizeTest.java:244:52:244:62 | keySize : Number | semmle.label | keySize : Number | +| InsufficientKeySizeTest.java:246:31:246:37 | keySize | semmle.label | keySize | +| InsufficientKeySizeTest.java:250:51:250:61 | keySize : Number | semmle.label | keySize : Number | +| InsufficientKeySizeTest.java:252:31:252:37 | keySize | semmle.label | keySize | +| InsufficientKeySizeTest.java:255:40:255:43 | 1024 : Number | semmle.label | 1024 : Number | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.java b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.java index 6f0d1f7115c7..9f3728f9640a 100644 --- a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.java +++ b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.java @@ -14,30 +14,30 @@ public void keySizeTesting() throws java.security.NoSuchAlgorithmException, java { /* Test with keysize as int */ KeyGenerator keyGen1 = KeyGenerator.getInstance("AES"); - keyGen1.init(64); // $ hasInsufficientKeySize + keyGen1.init(64); // $ Alert KeyGenerator keyGen2 = KeyGenerator.getInstance("AES"); keyGen2.init(128); // Safe: Key size is no less than 128 /* Test with local variable as keysize */ - final int size1 = 64; // compile-time constant - int size2 = 64; // not a compile-time constant + final int size1 = 64; // $ Source// compile-time constant + int size2 = 64; // $ Source// not a compile-time constant KeyGenerator keyGen3 = KeyGenerator.getInstance("AES"); - keyGen3.init(size1); // $ hasInsufficientKeySize + keyGen3.init(size1); // $ Alert KeyGenerator keyGen4 = KeyGenerator.getInstance("AES"); - keyGen4.init(size2); // $ hasInsufficientKeySize + keyGen4.init(size2); // $ Alert /* Test variables passed to another method */ KeyGenerator keyGen5 = KeyGenerator.getInstance("AES"); // MISSING: test KeyGenerator variable as argument testSymmetricVariable(size2, keyGen5); // test with variable as key size - testSymmetricInt(64); // test with int literal as key size + testSymmetricInt(64); // $ Source // test with int literal as key size /* Test with variable as algo name argument in `getInstance` method. */ final String algoName1 = "AES"; // compile-time constant KeyGenerator keyGen6 = KeyGenerator.getInstance(algoName1); - keyGen6.init(64); // $ hasInsufficientKeySize + keyGen6.init(64); // $ Alert String algoName2 = "AES"; // not a compile-time constant KeyGenerator keyGen7 = KeyGenerator.getInstance(algoName2); @@ -48,42 +48,42 @@ public void keySizeTesting() throws java.security.NoSuchAlgorithmException, java { /* Test with keysize as int */ KeyPairGenerator keyPairGen1 = KeyPairGenerator.getInstance("RSA"); - keyPairGen1.initialize(1024); // $ hasInsufficientKeySize + keyPairGen1.initialize(1024); // $ Alert KeyPairGenerator keyPairGen2 = KeyPairGenerator.getInstance("RSA"); keyPairGen2.initialize(2048); // Safe: Key size is no less than 2048 /* Test spec */ KeyPairGenerator keyPairGen3 = KeyPairGenerator.getInstance("RSA"); - RSAKeyGenParameterSpec rsaSpec = new RSAKeyGenParameterSpec(1024, null); // $ hasInsufficientKeySize + RSAKeyGenParameterSpec rsaSpec = new RSAKeyGenParameterSpec(1024, null); // $ Alert keyPairGen3.initialize(rsaSpec); KeyPairGenerator keyPairGen4 = KeyPairGenerator.getInstance("RSA"); - keyPairGen4.initialize(new RSAKeyGenParameterSpec(1024, null)); // $ hasInsufficientKeySize + keyPairGen4.initialize(new RSAKeyGenParameterSpec(1024, null)); // $ Alert /* Test with local variable as keysize */ - final int size1 = 1024; // compile-time constant - int size2 = 1024; // not a compile-time constant + final int size1 = 1024; // $ Source // compile-time constant + int size2 = 1024; // $ Source // not a compile-time constant KeyPairGenerator keyPairGen5 = KeyPairGenerator.getInstance("RSA"); - keyPairGen5.initialize(size1); // $ hasInsufficientKeySize + keyPairGen5.initialize(size1); // $ Alert KeyPairGenerator keyPairGen6 = KeyPairGenerator.getInstance("RSA"); - keyPairGen6.initialize(size2); // $ hasInsufficientKeySize + keyPairGen6.initialize(size2); // $ Alert /* Test variables passed to another method */ KeyPairGenerator keyPairGen7 = KeyPairGenerator.getInstance("RSA"); // MISSING: test KeyGenerator variable as argument testAsymmetricNonEcVariable(size2, keyPairGen7); // test with variable as key size - testAsymmetricNonEcInt(1024); // test with int literal as key size + testAsymmetricNonEcInt(1024); // $ Source // test with int literal as key size /* Test getting key size as return value of another method */ KeyPairGenerator keyPairGen8 = KeyPairGenerator.getInstance("RSA"); - keyPairGen8.initialize(getRSAKeySize()); // $ hasInsufficientKeySize + keyPairGen8.initialize(getRSAKeySize()); // $ Alert /* Test with variable as algo name argument in `getInstance` method. */ final String algoName1 = "RSA"; // compile-time constant KeyPairGenerator keyPairGen9 = KeyPairGenerator.getInstance(algoName1); - keyPairGen9.initialize(1024); // $ hasInsufficientKeySize + keyPairGen9.initialize(1024); // $ Alert String algoName2 = "RSA"; // not a compile-time constant KeyPairGenerator keyPairGen10 = KeyPairGenerator.getInstance(algoName2); @@ -94,27 +94,27 @@ public void keySizeTesting() throws java.security.NoSuchAlgorithmException, java { /* Test with keysize as int */ KeyPairGenerator keyPairGen1 = KeyPairGenerator.getInstance("DSA"); - keyPairGen1.initialize(1024); // $ hasInsufficientKeySize + keyPairGen1.initialize(1024); // $ Alert KeyPairGenerator keyPairGen2 = KeyPairGenerator.getInstance("DSA"); keyPairGen2.initialize(2048); // Safe: Key size is no less than 2048 /* Test spec */ KeyPairGenerator keyPairGen3 = KeyPairGenerator.getInstance("DSA"); - DSAGenParameterSpec dsaSpec = new DSAGenParameterSpec(1024, 0); // $ hasInsufficientKeySize + DSAGenParameterSpec dsaSpec = new DSAGenParameterSpec(1024, 0); // $ Alert keyPairGen3.initialize(dsaSpec); KeyPairGenerator keyPairGen4 = KeyPairGenerator.getInstance("DSA"); - keyPairGen4.initialize(new DSAGenParameterSpec(1024, 0)); // $ hasInsufficientKeySize + keyPairGen4.initialize(new DSAGenParameterSpec(1024, 0)); // $ Alert /* Test `AlgorithmParameterGenerator` */ AlgorithmParameterGenerator paramGen = AlgorithmParameterGenerator.getInstance("DSA"); - paramGen.init(1024); // $ hasInsufficientKeySize + paramGen.init(1024); // $ Alert /* Test with variable as algo name argument in `getInstance` method. */ final String algoName1 = "DSA"; // compile-time constant AlgorithmParameterGenerator paramGen1 = AlgorithmParameterGenerator.getInstance(algoName1); - paramGen1.init(1024); // $ hasInsufficientKeySize + paramGen1.init(1024); // $ Alert String algoName2 = "DSA"; // not a compile-time constant AlgorithmParameterGenerator paramGen2 = AlgorithmParameterGenerator.getInstance(algoName2); @@ -125,52 +125,52 @@ public void keySizeTesting() throws java.security.NoSuchAlgorithmException, java { /* Test with keysize as int */ KeyPairGenerator keyPairGen1 = KeyPairGenerator.getInstance("dh"); - keyPairGen1.initialize(1024); // $ hasInsufficientKeySize + keyPairGen1.initialize(1024); // $ Alert KeyPairGenerator keyPairGen2 = KeyPairGenerator.getInstance("DH"); keyPairGen2.initialize(2048); // Safe: Key size is no less than 2048 /* Test spec */ KeyPairGenerator keyPairGen3 = KeyPairGenerator.getInstance("DH"); - DHGenParameterSpec dhSpec = new DHGenParameterSpec(1024, 0); // $ hasInsufficientKeySize + DHGenParameterSpec dhSpec = new DHGenParameterSpec(1024, 0); // $ Alert keyPairGen3.initialize(dhSpec); KeyPairGenerator keyPairGen4 = KeyPairGenerator.getInstance("DH"); - keyPairGen4.initialize(new DHGenParameterSpec(1024, 0)); // $ hasInsufficientKeySize + keyPairGen4.initialize(new DHGenParameterSpec(1024, 0)); // $ Alert /* Test `AlgorithmParameterGenerator` */ AlgorithmParameterGenerator paramGen = AlgorithmParameterGenerator.getInstance("DH"); - paramGen.init(1024); // $ hasInsufficientKeySize + paramGen.init(1024); // $ Alert } // EC (Asymmetric): minimum recommended key size is 256 { /* Test with keysize as int */ KeyPairGenerator keyPairGen1 = KeyPairGenerator.getInstance("EC"); - keyPairGen1.initialize(128); // $ hasInsufficientKeySize + keyPairGen1.initialize(128); // $ Alert /* Test with keysize as curve name in spec */ KeyPairGenerator keyPairGen2 = KeyPairGenerator.getInstance("EC"); - ECGenParameterSpec ecSpec1 = new ECGenParameterSpec("secp112r1"); // $ hasInsufficientKeySize + ECGenParameterSpec ecSpec1 = new ECGenParameterSpec("secp112r1"); // $ Alert keyPairGen2.initialize(ecSpec1); KeyPairGenerator keyPairGen3 = KeyPairGenerator.getInstance("EC"); - keyPairGen3.initialize(new ECGenParameterSpec("secp112r1")); // $ hasInsufficientKeySize + keyPairGen3.initialize(new ECGenParameterSpec("secp112r1")); // $ Alert KeyPairGenerator keyPairGen4 = KeyPairGenerator.getInstance("EC"); ECGenParameterSpec ecSpec2 = new ECGenParameterSpec("secp256r1"); // Safe: Key size is no less than 256 keyPairGen4.initialize(ecSpec2); KeyPairGenerator keyPairGen5 = KeyPairGenerator.getInstance("EC"); - ECGenParameterSpec ecSpec3 = new ECGenParameterSpec("X9.62 prime192v2"); // $ hasInsufficientKeySize + ECGenParameterSpec ecSpec3 = new ECGenParameterSpec("X9.62 prime192v2"); // $ Alert keyPairGen5.initialize(ecSpec3); KeyPairGenerator keyPairGen6 = KeyPairGenerator.getInstance("EC"); - ECGenParameterSpec ecSpec4 = new ECGenParameterSpec("X9.62 c2tnb191v3"); // $ hasInsufficientKeySize + ECGenParameterSpec ecSpec4 = new ECGenParameterSpec("X9.62 c2tnb191v3"); // $ Alert keyPairGen6.initialize(ecSpec4); KeyPairGenerator keyPairGen7 = KeyPairGenerator.getInstance("EC"); - ECGenParameterSpec ecSpec5 = new ECGenParameterSpec("sect163k1"); // $ hasInsufficientKeySize + ECGenParameterSpec ecSpec5 = new ECGenParameterSpec("sect163k1"); // $ Alert keyPairGen7.initialize(ecSpec5); KeyPairGenerator keyPairGen8 = KeyPairGenerator.getInstance("EC"); @@ -178,7 +178,7 @@ public void keySizeTesting() throws java.security.NoSuchAlgorithmException, java keyPairGen8.initialize(ecSpec6); KeyPairGenerator keyPairGen9 = KeyPairGenerator.getInstance("EC"); - ECGenParameterSpec ecSpec7 = new ECGenParameterSpec("prime192v2"); // $ hasInsufficientKeySize + ECGenParameterSpec ecSpec7 = new ECGenParameterSpec("prime192v2"); // $ Alert keyPairGen9.initialize(ecSpec7); KeyPairGenerator keyPairGen10 = KeyPairGenerator.getInstance("EC"); @@ -186,7 +186,7 @@ public void keySizeTesting() throws java.security.NoSuchAlgorithmException, java keyPairGen10.initialize(ecSpec8); KeyPairGenerator keyPairGen14 = KeyPairGenerator.getInstance("EC"); - ECGenParameterSpec ecSpec9 = new ECGenParameterSpec("c2tnb191v1"); // $ hasInsufficientKeySize + ECGenParameterSpec ecSpec9 = new ECGenParameterSpec("c2tnb191v1"); // $ Alert keyPairGen14.initialize(ecSpec9); KeyPairGenerator keyPairGen15 = KeyPairGenerator.getInstance("EC"); @@ -194,46 +194,46 @@ public void keySizeTesting() throws java.security.NoSuchAlgorithmException, java keyPairGen15.initialize(ecSpec10); // Safe: Key size is no less than 256 /* Test variables passed to another method */ - ECGenParameterSpec ecSpec = new ECGenParameterSpec("secp112r1"); // $ hasInsufficientKeySize + ECGenParameterSpec ecSpec = new ECGenParameterSpec("secp112r1"); // $ Alert testAsymmetricEcSpecVariable(ecSpec); // test spec as an argument - int size = 128; + int size = 128; // $ Source KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("EC"); // MISSING: test KeyGenerator variable as argument testAsymmetricEcIntVariable(size, keyPairGen); // test with variable as key size - testAsymmetricEcIntLiteral(128); // test with int literal as key size + testAsymmetricEcIntLiteral(128); // $ Source // test with int literal as key size /* Test with variable as curve name argument in `ECGenParameterSpec` constructor. */ - final String curveName1 = "secp112r1"; // compile-time constant + final String curveName1 = "secp112r1"; // $ Source // compile-time constant KeyPairGenerator keyPairGen16 = KeyPairGenerator.getInstance("EC"); - ECGenParameterSpec ecSpec11 = new ECGenParameterSpec(curveName1); // $ hasInsufficientKeySize + ECGenParameterSpec ecSpec11 = new ECGenParameterSpec(curveName1); // $ Alert keyPairGen16.initialize(ecSpec11); - String curveName2 = "secp112r1"; // not a compile-time constant + String curveName2 = "secp112r1"; // $ Source // not a compile-time constant KeyPairGenerator keyPairGen17 = KeyPairGenerator.getInstance("EC"); - ECGenParameterSpec ecSpec12 = new ECGenParameterSpec(curveName2); // $ hasInsufficientKeySize + ECGenParameterSpec ecSpec12 = new ECGenParameterSpec(curveName2); // $ Alert keyPairGen17.initialize(ecSpec12); } } public static void testSymmetricVariable(int keySize, KeyGenerator kg) throws java.security.NoSuchAlgorithmException, java.security.InvalidAlgorithmParameterException { KeyGenerator keyGen = KeyGenerator.getInstance("AES"); - keyGen.init(keySize); // $ hasInsufficientKeySize + keyGen.init(keySize); // $ Alert kg.init(64); // $ MISSING: hasInsufficientKeySize } public static void testSymmetricInt(int keySize) throws java.security.NoSuchAlgorithmException, java.security.InvalidAlgorithmParameterException { KeyGenerator keyGen = KeyGenerator.getInstance("AES"); - keyGen.init(keySize); // $ hasInsufficientKeySize + keyGen.init(keySize); // $ Alert } public static void testAsymmetricNonEcVariable(int keySize, KeyPairGenerator kpg) throws java.security.NoSuchAlgorithmException, java.security.InvalidAlgorithmParameterException { KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); - keyPairGen.initialize(keySize); // $ hasInsufficientKeySize + keyPairGen.initialize(keySize); // $ Alert kpg.initialize(1024); // $ MISSING: hasInsufficientKeySize } public static void testAsymmetricNonEcInt(int keySize) throws java.security.NoSuchAlgorithmException, java.security.InvalidAlgorithmParameterException { KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); - keyPairGen.initialize(keySize); // $ hasInsufficientKeySize + keyPairGen.initialize(keySize); // $ Alert } public static void testAsymmetricEcSpecVariable(ECGenParameterSpec spec) throws java.security.NoSuchAlgorithmException, java.security.InvalidAlgorithmParameterException { @@ -243,14 +243,14 @@ public static void testAsymmetricEcSpecVariable(ECGenParameterSpec spec) throws public static void testAsymmetricEcIntVariable(int keySize, KeyPairGenerator kpg) throws java.security.NoSuchAlgorithmException, java.security.InvalidAlgorithmParameterException { KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("EC"); - keyPairGen.initialize(keySize); // $ hasInsufficientKeySize + keyPairGen.initialize(keySize); // $ Alert kpg.initialize(128); // $ MISSING: hasInsufficientKeySize } public static void testAsymmetricEcIntLiteral(int keySize) throws java.security.NoSuchAlgorithmException, java.security.InvalidAlgorithmParameterException { KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("EC"); - keyPairGen.initialize(keySize); // $ hasInsufficientKeySize + keyPairGen.initialize(keySize); // $ Alert } - public int getRSAKeySize(){ return 1024; } + public int getRSAKeySize(){ return 1024; } // $ Source } diff --git a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.ql b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.ql deleted file mode 100644 index 441faa888e34..000000000000 --- a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import utils.test.InlineExpectationsTest -import semmle.code.java.security.InsufficientKeySizeQuery - -module InsufficientKeySizeTest implements TestSig { - string getARelevantTag() { result = "hasInsufficientKeySize" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasInsufficientKeySize" and - exists(KeySizeFlow::PathNode sink | KeySizeFlow::flowPath(_, sink) | - sink.getNode().getLocation() = location and - element = sink.getNode().toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.qlref b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.qlref new file mode 100644 index 000000000000..6b3f44f4ca2d --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-326/InsufficientKeySize.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-330/InsecureRandomCookies.java b/java/ql/test/query-tests/security/CWE-330/InsecureRandomCookies.java index d34a0283313e..742c2cebcf9d 100644 --- a/java/ql/test/query-tests/security/CWE-330/InsecureRandomCookies.java +++ b/java/ql/test/query-tests/security/CWE-330/InsecureRandomCookies.java @@ -16,28 +16,28 @@ public class InsecureRandomCookies extends HttpServlet { public void doGet() { Random r = new Random(); - int c = r.nextInt(); + int c = r.nextInt(); // $ Source // BAD: The cookie value may be predictable. - Cookie cookie = new Cookie("name", Integer.toString(c)); // $hasWeakRandomFlow - cookie.setValue(Integer.toString(c)); // $hasWeakRandomFlow + Cookie cookie = new Cookie("name", Integer.toString(c)); // $ Alert + cookie.setValue(Integer.toString(c)); // $ Alert io.netty.handler.codec.http.Cookie nettyCookie = - new io.netty.handler.codec.http.DefaultCookie("name", Integer.toString(c)); // $hasWeakRandomFlow - nettyCookie.setValue(Integer.toString(c)); // $hasWeakRandomFlow + new io.netty.handler.codec.http.DefaultCookie("name", Integer.toString(c)); // $ Alert + nettyCookie.setValue(Integer.toString(c)); // $ Alert io.netty.handler.codec.http.cookie.Cookie nettyCookie2 = - new io.netty.handler.codec.http.cookie.DefaultCookie("name", Integer.toString(c)); // $hasWeakRandomFlow - nettyCookie2.setValue(Integer.toString(c)); // $hasWeakRandomFlow + new io.netty.handler.codec.http.cookie.DefaultCookie("name", Integer.toString(c)); // $ Alert + nettyCookie2.setValue(Integer.toString(c)); // $ Alert Encoder enc = null; - int c2 = r.nextInt(); + int c2 = r.nextInt(); // $ Source String value = enc.encodeForHTML(Integer.toString(c2)); // BAD: The cookie value may be predictable. - Cookie cookie2 = new Cookie("name", value); // $hasWeakRandomFlow + Cookie cookie2 = new Cookie("name", value); // $ Alert byte[] bytes = new byte[16]; - r.nextBytes(bytes); + r.nextBytes(bytes); // $ Source // BAD: The cookie value may be predictable. - Cookie cookie3 = new Cookie("name", new String(bytes)); // $hasWeakRandomFlow + Cookie cookie3 = new Cookie("name", new String(bytes)); // $ Alert SecureRandom sr = new SecureRandom(); @@ -48,22 +48,22 @@ public void doGet() { ThreadLocalRandom tlr = ThreadLocalRandom.current(); - Cookie cookie5 = new Cookie("name", Integer.toString(tlr.nextInt())); // $hasWeakRandomFlow + Cookie cookie5 = new Cookie("name", Integer.toString(tlr.nextInt())); // $ Alert - Cookie cookie6 = new Cookie("name", RandomStringUtils.random(10)); // $hasWeakRandomFlow + Cookie cookie6 = new Cookie("name", RandomStringUtils.random(10)); // $ Alert - Cookie cookie7 = new Cookie("name", RandomStringUtils.randomAscii(10)); // $hasWeakRandomFlow + Cookie cookie7 = new Cookie("name", RandomStringUtils.randomAscii(10)); // $ Alert - long c3 = r.nextLong(); + long c3 = r.nextLong(); // $ Source // BAD: The cookie value may be predictable. - Cookie cookie8 = new Cookie("name", Long.toString(c3 * 5)); // $hasWeakRandomFlow + Cookie cookie8 = new Cookie("name", Long.toString(c3 * 5)); // $ Alert - double c4 = Math.random(); + double c4 = Math.random(); // $ Source // BAD: The cookie value may be predictable. - Cookie cookie9 = new Cookie("name", Double.toString(c4)); // $hasWeakRandomFlow + Cookie cookie9 = new Cookie("name", Double.toString(c4)); // $ Alert - double c5 = Math.random(); + double c5 = Math.random(); // $ Source // BAD: The cookie value may be predictable. - Cookie cookie10 = new Cookie("name", Double.toString(++c5)); // $hasWeakRandomFlow + Cookie cookie10 = new Cookie("name", Double.toString(++c5)); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-330/InsecureRandomnessTest.expected b/java/ql/test/query-tests/security/CWE-330/InsecureRandomnessTest.expected index e69de29bb2d1..3b460aeec32b 100644 --- a/java/ql/test/query-tests/security/CWE-330/InsecureRandomnessTest.expected +++ b/java/ql/test/query-tests/security/CWE-330/InsecureRandomnessTest.expected @@ -0,0 +1,69 @@ +#select +| InsecureRandomCookies.java:21:44:21:62 | toString(...) | InsecureRandomCookies.java:19:17:19:27 | nextInt(...) : Number | InsecureRandomCookies.java:21:44:21:62 | toString(...) | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:19:17:19:27 | nextInt(...) | Insecure randomness source. | +| InsecureRandomCookies.java:22:25:22:43 | toString(...) | InsecureRandomCookies.java:19:17:19:27 | nextInt(...) : Number | InsecureRandomCookies.java:22:25:22:43 | toString(...) | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:19:17:19:27 | nextInt(...) | Insecure randomness source. | +| InsecureRandomCookies.java:25:71:25:89 | toString(...) | InsecureRandomCookies.java:19:17:19:27 | nextInt(...) : Number | InsecureRandomCookies.java:25:71:25:89 | toString(...) | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:19:17:19:27 | nextInt(...) | Insecure randomness source. | +| InsecureRandomCookies.java:26:30:26:48 | toString(...) | InsecureRandomCookies.java:19:17:19:27 | nextInt(...) : Number | InsecureRandomCookies.java:26:30:26:48 | toString(...) | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:19:17:19:27 | nextInt(...) | Insecure randomness source. | +| InsecureRandomCookies.java:28:78:28:96 | toString(...) | InsecureRandomCookies.java:19:17:19:27 | nextInt(...) : Number | InsecureRandomCookies.java:28:78:28:96 | toString(...) | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:19:17:19:27 | nextInt(...) | Insecure randomness source. | +| InsecureRandomCookies.java:29:31:29:49 | toString(...) | InsecureRandomCookies.java:19:17:19:27 | nextInt(...) : Number | InsecureRandomCookies.java:29:31:29:49 | toString(...) | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:19:17:19:27 | nextInt(...) | Insecure randomness source. | +| InsecureRandomCookies.java:35:45:35:49 | value | InsecureRandomCookies.java:32:18:32:28 | nextInt(...) : Number | InsecureRandomCookies.java:35:45:35:49 | value | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:32:18:32:28 | nextInt(...) | Insecure randomness source. | +| InsecureRandomCookies.java:40:45:40:61 | new String(...) | InsecureRandomCookies.java:38:21:38:25 | bytes : byte[] | InsecureRandomCookies.java:40:45:40:61 | new String(...) | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:38:21:38:25 | bytes | Insecure randomness source. | +| InsecureRandomCookies.java:51:45:51:75 | toString(...) | InsecureRandomCookies.java:51:62:51:74 | nextInt(...) : Number | InsecureRandomCookies.java:51:45:51:75 | toString(...) | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:51:62:51:74 | nextInt(...) | Insecure randomness source. | +| InsecureRandomCookies.java:53:45:53:72 | random(...) | InsecureRandomCookies.java:53:45:53:72 | random(...) | InsecureRandomCookies.java:53:45:53:72 | random(...) | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:53:45:53:72 | random(...) | Insecure randomness source. | +| InsecureRandomCookies.java:55:45:55:77 | randomAscii(...) | InsecureRandomCookies.java:55:45:55:77 | randomAscii(...) | InsecureRandomCookies.java:55:45:55:77 | randomAscii(...) | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:55:45:55:77 | randomAscii(...) | Insecure randomness source. | +| InsecureRandomCookies.java:59:45:59:65 | toString(...) | InsecureRandomCookies.java:57:19:57:30 | nextLong(...) : Number | InsecureRandomCookies.java:59:45:59:65 | toString(...) | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:57:19:57:30 | nextLong(...) | Insecure randomness source. | +| InsecureRandomCookies.java:63:45:63:63 | toString(...) | InsecureRandomCookies.java:61:21:61:33 | random(...) : Number | InsecureRandomCookies.java:63:45:63:63 | toString(...) | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:61:21:61:33 | random(...) | Insecure randomness source. | +| InsecureRandomCookies.java:67:46:67:66 | toString(...) | InsecureRandomCookies.java:65:21:65:33 | random(...) : Number | InsecureRandomCookies.java:67:46:67:66 | toString(...) | Potential Insecure randomness due to a $@. | InsecureRandomCookies.java:65:21:65:33 | random(...) | Insecure randomness source. | +edges +| InsecureRandomCookies.java:19:17:19:27 | nextInt(...) : Number | InsecureRandomCookies.java:21:44:21:62 | toString(...) | provenance | TaintPreservingCallable | +| InsecureRandomCookies.java:19:17:19:27 | nextInt(...) : Number | InsecureRandomCookies.java:22:25:22:43 | toString(...) | provenance | TaintPreservingCallable | +| InsecureRandomCookies.java:19:17:19:27 | nextInt(...) : Number | InsecureRandomCookies.java:25:71:25:89 | toString(...) | provenance | TaintPreservingCallable | +| InsecureRandomCookies.java:19:17:19:27 | nextInt(...) : Number | InsecureRandomCookies.java:26:30:26:48 | toString(...) | provenance | TaintPreservingCallable | +| InsecureRandomCookies.java:19:17:19:27 | nextInt(...) : Number | InsecureRandomCookies.java:28:78:28:96 | toString(...) | provenance | TaintPreservingCallable | +| InsecureRandomCookies.java:19:17:19:27 | nextInt(...) : Number | InsecureRandomCookies.java:29:31:29:49 | toString(...) | provenance | TaintPreservingCallable | +| InsecureRandomCookies.java:32:18:32:28 | nextInt(...) : Number | InsecureRandomCookies.java:33:42:33:61 | toString(...) : String | provenance | TaintPreservingCallable | +| InsecureRandomCookies.java:33:24:33:62 | encodeForHTML(...) : String | InsecureRandomCookies.java:35:45:35:49 | value | provenance | | +| InsecureRandomCookies.java:33:42:33:61 | toString(...) : String | InsecureRandomCookies.java:33:24:33:62 | encodeForHTML(...) : String | provenance | Config | +| InsecureRandomCookies.java:33:42:33:61 | toString(...) : String | InsecureRandomCookies.java:33:24:33:62 | encodeForHTML(...) : String | provenance | MaD:2 | +| InsecureRandomCookies.java:38:21:38:25 | bytes : byte[] | InsecureRandomCookies.java:40:56:40:60 | bytes : byte[] | provenance | | +| InsecureRandomCookies.java:40:56:40:60 | bytes : byte[] | InsecureRandomCookies.java:40:45:40:61 | new String(...) | provenance | MaD:1 | +| InsecureRandomCookies.java:51:62:51:74 | nextInt(...) : Number | InsecureRandomCookies.java:51:45:51:75 | toString(...) | provenance | TaintPreservingCallable | +| InsecureRandomCookies.java:57:19:57:30 | nextLong(...) : Number | InsecureRandomCookies.java:59:59:59:60 | c3 : Number | provenance | | +| InsecureRandomCookies.java:59:59:59:60 | c3 : Number | InsecureRandomCookies.java:59:59:59:64 | ... * ... : Number | provenance | Config | +| InsecureRandomCookies.java:59:59:59:64 | ... * ... : Number | InsecureRandomCookies.java:59:45:59:65 | toString(...) | provenance | TaintPreservingCallable | +| InsecureRandomCookies.java:61:21:61:33 | random(...) : Number | InsecureRandomCookies.java:63:45:63:63 | toString(...) | provenance | TaintPreservingCallable | +| InsecureRandomCookies.java:65:21:65:33 | random(...) : Number | InsecureRandomCookies.java:67:64:67:65 | c5 : Number | provenance | | +| InsecureRandomCookies.java:67:62:67:65 | ++... : Number | InsecureRandomCookies.java:67:46:67:66 | toString(...) | provenance | TaintPreservingCallable | +| InsecureRandomCookies.java:67:64:67:65 | c5 : Number | InsecureRandomCookies.java:67:62:67:65 | ++... : Number | provenance | Config | +models +| 1 | Summary: java.lang; String; false; String; ; ; Argument[0]; Argument[this]; taint; manual | +| 2 | Summary: org.owasp.esapi; Encoder; true; encodeForHTML; (String); ; Argument[0]; ReturnValue; taint; manual | +nodes +| InsecureRandomCookies.java:19:17:19:27 | nextInt(...) : Number | semmle.label | nextInt(...) : Number | +| InsecureRandomCookies.java:21:44:21:62 | toString(...) | semmle.label | toString(...) | +| InsecureRandomCookies.java:22:25:22:43 | toString(...) | semmle.label | toString(...) | +| InsecureRandomCookies.java:25:71:25:89 | toString(...) | semmle.label | toString(...) | +| InsecureRandomCookies.java:26:30:26:48 | toString(...) | semmle.label | toString(...) | +| InsecureRandomCookies.java:28:78:28:96 | toString(...) | semmle.label | toString(...) | +| InsecureRandomCookies.java:29:31:29:49 | toString(...) | semmle.label | toString(...) | +| InsecureRandomCookies.java:32:18:32:28 | nextInt(...) : Number | semmle.label | nextInt(...) : Number | +| InsecureRandomCookies.java:33:24:33:62 | encodeForHTML(...) : String | semmle.label | encodeForHTML(...) : String | +| InsecureRandomCookies.java:33:42:33:61 | toString(...) : String | semmle.label | toString(...) : String | +| InsecureRandomCookies.java:35:45:35:49 | value | semmle.label | value | +| InsecureRandomCookies.java:38:21:38:25 | bytes : byte[] | semmle.label | bytes : byte[] | +| InsecureRandomCookies.java:40:45:40:61 | new String(...) | semmle.label | new String(...) | +| InsecureRandomCookies.java:40:56:40:60 | bytes : byte[] | semmle.label | bytes : byte[] | +| InsecureRandomCookies.java:51:45:51:75 | toString(...) | semmle.label | toString(...) | +| InsecureRandomCookies.java:51:62:51:74 | nextInt(...) : Number | semmle.label | nextInt(...) : Number | +| InsecureRandomCookies.java:53:45:53:72 | random(...) | semmle.label | random(...) | +| InsecureRandomCookies.java:55:45:55:77 | randomAscii(...) | semmle.label | randomAscii(...) | +| InsecureRandomCookies.java:57:19:57:30 | nextLong(...) : Number | semmle.label | nextLong(...) : Number | +| InsecureRandomCookies.java:59:45:59:65 | toString(...) | semmle.label | toString(...) | +| InsecureRandomCookies.java:59:59:59:60 | c3 : Number | semmle.label | c3 : Number | +| InsecureRandomCookies.java:59:59:59:64 | ... * ... : Number | semmle.label | ... * ... : Number | +| InsecureRandomCookies.java:61:21:61:33 | random(...) : Number | semmle.label | random(...) : Number | +| InsecureRandomCookies.java:63:45:63:63 | toString(...) | semmle.label | toString(...) | +| InsecureRandomCookies.java:65:21:65:33 | random(...) : Number | semmle.label | random(...) : Number | +| InsecureRandomCookies.java:67:46:67:66 | toString(...) | semmle.label | toString(...) | +| InsecureRandomCookies.java:67:62:67:65 | ++... : Number | semmle.label | ++... : Number | +| InsecureRandomCookies.java:67:64:67:65 | c5 : Number | semmle.label | c5 : Number | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-330/InsecureRandomnessTest.ql b/java/ql/test/query-tests/security/CWE-330/InsecureRandomnessTest.ql deleted file mode 100644 index a9e8cbb2dc4d..000000000000 --- a/java/ql/test/query-tests/security/CWE-330/InsecureRandomnessTest.ql +++ /dev/null @@ -1,19 +0,0 @@ -import java -import semmle.code.java.dataflow.DataFlow -import semmle.code.java.security.InsecureRandomnessQuery -import utils.test.InlineExpectationsTest - -module WeakRandomTest implements TestSig { - string getARelevantTag() { result = "hasWeakRandomFlow" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasWeakRandomFlow" and - exists(DataFlow::Node sink | InsecureRandomnessFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-330/InsecureRandomnessTest.qlref b/java/ql/test/query-tests/security/CWE-330/InsecureRandomnessTest.qlref new file mode 100644 index 000000000000..2d02acfab9a4 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-330/InsecureRandomnessTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-330/InsecureRandomness.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.expected b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.expected index e69de29bb2d1..ba513e95a2d9 100644 --- a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.expected +++ b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.expected @@ -0,0 +1,55 @@ +#select +| MissingJWTSignatureCheckTest.java:83:9:83:14 | parser | MissingJWTSignatureCheckTest.java:13:16:13:66 | setSigningKey(...) : JwtParser | MissingJWTSignatureCheckTest.java:83:9:83:14 | parser | This parser sets a $@, but the signature is not verified. | MissingJWTSignatureCheckTest.java:13:16:13:66 | setSigningKey(...) | JWT signing key | +| MissingJWTSignatureCheckTest.java:83:9:83:14 | parser | MissingJWTSignatureCheckTest.java:17:16:17:73 | setSigningKey(...) : DefaultJwtParserBuilder | MissingJWTSignatureCheckTest.java:83:9:83:14 | parser | This parser sets a $@, but the signature is not verified. | MissingJWTSignatureCheckTest.java:17:16:17:73 | setSigningKey(...) | JWT signing key | +| MissingJWTSignatureCheckTest.java:83:9:83:14 | parser | MissingJWTSignatureCheckTest.java:21:16:21:75 | setSigningKey(...) : JwtParser | MissingJWTSignatureCheckTest.java:83:9:83:14 | parser | This parser sets a $@, but the signature is not verified. | MissingJWTSignatureCheckTest.java:21:16:21:75 | setSigningKey(...) | JWT signing key | +| MissingJWTSignatureCheckTest.java:87:9:87:14 | parser | MissingJWTSignatureCheckTest.java:13:16:13:66 | setSigningKey(...) : JwtParser | MissingJWTSignatureCheckTest.java:87:9:87:14 | parser | This parser sets a $@, but the signature is not verified. | MissingJWTSignatureCheckTest.java:13:16:13:66 | setSigningKey(...) | JWT signing key | +| MissingJWTSignatureCheckTest.java:87:9:87:14 | parser | MissingJWTSignatureCheckTest.java:17:16:17:73 | setSigningKey(...) : DefaultJwtParserBuilder | MissingJWTSignatureCheckTest.java:87:9:87:14 | parser | This parser sets a $@, but the signature is not verified. | MissingJWTSignatureCheckTest.java:17:16:17:73 | setSigningKey(...) | JWT signing key | +| MissingJWTSignatureCheckTest.java:87:9:87:14 | parser | MissingJWTSignatureCheckTest.java:21:16:21:75 | setSigningKey(...) : JwtParser | MissingJWTSignatureCheckTest.java:87:9:87:14 | parser | This parser sets a $@, but the signature is not verified. | MissingJWTSignatureCheckTest.java:21:16:21:75 | setSigningKey(...) | JWT signing key | +| MissingJWTSignatureCheckTest.java:110:9:110:74 | build(...) | MissingJWTSignatureCheckTest.java:110:9:110:66 | setSigningKey(...) : DefaultJwtParserBuilder | MissingJWTSignatureCheckTest.java:110:9:110:74 | build(...) | This parser sets a $@, but the signature is not verified. | MissingJWTSignatureCheckTest.java:110:9:110:66 | setSigningKey(...) | JWT signing key | +| MissingJWTSignatureCheckTest.java:114:9:114:83 | build(...) | MissingJWTSignatureCheckTest.java:114:9:114:75 | setSigningKey(...) : DefaultJwtParserBuilder | MissingJWTSignatureCheckTest.java:114:9:114:83 | build(...) | This parser sets a $@, but the signature is not verified. | MissingJWTSignatureCheckTest.java:114:9:114:75 | setSigningKey(...) | JWT signing key | +| MissingJWTSignatureCheckTest.java:118:9:118:59 | setSigningKey(...) | MissingJWTSignatureCheckTest.java:118:9:118:59 | setSigningKey(...) | MissingJWTSignatureCheckTest.java:118:9:118:59 | setSigningKey(...) | This parser sets a $@, but the signature is not verified. | MissingJWTSignatureCheckTest.java:118:9:118:59 | setSigningKey(...) | JWT signing key | +edges +| MissingJWTSignatureCheckTest.java:13:16:13:66 | setSigningKey(...) : JwtParser | MissingJWTSignatureCheckTest.java:25:29:25:46 | getASignedParser(...) : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:17:16:17:73 | setSigningKey(...) : DefaultJwtParserBuilder | MissingJWTSignatureCheckTest.java:17:16:17:81 | build(...) : JwtParser | provenance | Config | +| MissingJWTSignatureCheckTest.java:17:16:17:81 | build(...) : JwtParser | MissingJWTSignatureCheckTest.java:31:29:31:63 | getASignedParserFromParserBuilder(...) : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:21:16:21:75 | setSigningKey(...) : JwtParser | MissingJWTSignatureCheckTest.java:37:29:37:49 | getASignedNewParser(...) : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:25:29:25:46 | getASignedParser(...) : JwtParser | MissingJWTSignatureCheckTest.java:26:31:26:37 | parser1 : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:25:29:25:46 | getASignedParser(...) : JwtParser | MissingJWTSignatureCheckTest.java:27:38:27:44 | parser1 : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:26:31:26:37 | parser1 : JwtParser | MissingJWTSignatureCheckTest.java:82:40:82:55 | parser : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:27:38:27:44 | parser1 : JwtParser | MissingJWTSignatureCheckTest.java:86:47:86:62 | parser : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:31:29:31:63 | getASignedParserFromParserBuilder(...) : JwtParser | MissingJWTSignatureCheckTest.java:32:31:32:37 | parser2 : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:31:29:31:63 | getASignedParserFromParserBuilder(...) : JwtParser | MissingJWTSignatureCheckTest.java:33:38:33:44 | parser2 : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:32:31:32:37 | parser2 : JwtParser | MissingJWTSignatureCheckTest.java:82:40:82:55 | parser : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:33:38:33:44 | parser2 : JwtParser | MissingJWTSignatureCheckTest.java:86:47:86:62 | parser : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:37:29:37:49 | getASignedNewParser(...) : JwtParser | MissingJWTSignatureCheckTest.java:38:31:38:37 | parser3 : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:37:29:37:49 | getASignedNewParser(...) : JwtParser | MissingJWTSignatureCheckTest.java:39:38:39:44 | parser3 : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:38:31:38:37 | parser3 : JwtParser | MissingJWTSignatureCheckTest.java:82:40:82:55 | parser : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:39:38:39:44 | parser3 : JwtParser | MissingJWTSignatureCheckTest.java:86:47:86:62 | parser : JwtParser | provenance | | +| MissingJWTSignatureCheckTest.java:82:40:82:55 | parser : JwtParser | MissingJWTSignatureCheckTest.java:83:9:83:14 | parser | provenance | | +| MissingJWTSignatureCheckTest.java:86:47:86:62 | parser : JwtParser | MissingJWTSignatureCheckTest.java:87:9:87:14 | parser | provenance | | +| MissingJWTSignatureCheckTest.java:110:9:110:66 | setSigningKey(...) : DefaultJwtParserBuilder | MissingJWTSignatureCheckTest.java:110:9:110:74 | build(...) | provenance | Config | +| MissingJWTSignatureCheckTest.java:114:9:114:75 | setSigningKey(...) : DefaultJwtParserBuilder | MissingJWTSignatureCheckTest.java:114:9:114:83 | build(...) | provenance | Config | +nodes +| MissingJWTSignatureCheckTest.java:13:16:13:66 | setSigningKey(...) : JwtParser | semmle.label | setSigningKey(...) : JwtParser | +| MissingJWTSignatureCheckTest.java:17:16:17:73 | setSigningKey(...) : DefaultJwtParserBuilder | semmle.label | setSigningKey(...) : DefaultJwtParserBuilder | +| MissingJWTSignatureCheckTest.java:17:16:17:81 | build(...) : JwtParser | semmle.label | build(...) : JwtParser | +| MissingJWTSignatureCheckTest.java:21:16:21:75 | setSigningKey(...) : JwtParser | semmle.label | setSigningKey(...) : JwtParser | +| MissingJWTSignatureCheckTest.java:25:29:25:46 | getASignedParser(...) : JwtParser | semmle.label | getASignedParser(...) : JwtParser | +| MissingJWTSignatureCheckTest.java:26:31:26:37 | parser1 : JwtParser | semmle.label | parser1 : JwtParser | +| MissingJWTSignatureCheckTest.java:27:38:27:44 | parser1 : JwtParser | semmle.label | parser1 : JwtParser | +| MissingJWTSignatureCheckTest.java:31:29:31:63 | getASignedParserFromParserBuilder(...) : JwtParser | semmle.label | getASignedParserFromParserBuilder(...) : JwtParser | +| MissingJWTSignatureCheckTest.java:32:31:32:37 | parser2 : JwtParser | semmle.label | parser2 : JwtParser | +| MissingJWTSignatureCheckTest.java:33:38:33:44 | parser2 : JwtParser | semmle.label | parser2 : JwtParser | +| MissingJWTSignatureCheckTest.java:37:29:37:49 | getASignedNewParser(...) : JwtParser | semmle.label | getASignedNewParser(...) : JwtParser | +| MissingJWTSignatureCheckTest.java:38:31:38:37 | parser3 : JwtParser | semmle.label | parser3 : JwtParser | +| MissingJWTSignatureCheckTest.java:39:38:39:44 | parser3 : JwtParser | semmle.label | parser3 : JwtParser | +| MissingJWTSignatureCheckTest.java:82:40:82:55 | parser : JwtParser | semmle.label | parser : JwtParser | +| MissingJWTSignatureCheckTest.java:83:9:83:14 | parser | semmle.label | parser | +| MissingJWTSignatureCheckTest.java:86:47:86:62 | parser : JwtParser | semmle.label | parser : JwtParser | +| MissingJWTSignatureCheckTest.java:87:9:87:14 | parser | semmle.label | parser | +| MissingJWTSignatureCheckTest.java:110:9:110:66 | setSigningKey(...) : DefaultJwtParserBuilder | semmle.label | setSigningKey(...) : DefaultJwtParserBuilder | +| MissingJWTSignatureCheckTest.java:110:9:110:74 | build(...) | semmle.label | build(...) | +| MissingJWTSignatureCheckTest.java:114:9:114:75 | setSigningKey(...) : DefaultJwtParserBuilder | semmle.label | setSigningKey(...) : DefaultJwtParserBuilder | +| MissingJWTSignatureCheckTest.java:114:9:114:83 | build(...) | semmle.label | build(...) | +| MissingJWTSignatureCheckTest.java:118:9:118:59 | setSigningKey(...) | semmle.label | setSigningKey(...) | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.java b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.java index 93b54154ffc1..c4ab09b27e6d 100644 --- a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.java +++ b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.java @@ -10,15 +10,15 @@ public class MissingJWTSignatureCheckTest { private JwtParser getASignedParser() { - return Jwts.parser().setSigningKey("someBase64EncodedKey"); + return Jwts.parser().setSigningKey("someBase64EncodedKey"); // $ Source } private JwtParser getASignedParserFromParserBuilder() { - return Jwts.parserBuilder().setSigningKey("someBase64EncodedKey").build(); + return Jwts.parserBuilder().setSigningKey("someBase64EncodedKey").build(); // $ Source } private JwtParser getASignedNewParser() { - return new DefaultJwtParser().setSigningKey("someBase64EncodedKey"); + return new DefaultJwtParser().setSigningKey("someBase64EncodedKey"); // $ Source } private void callSignedParsers() { @@ -80,11 +80,11 @@ private void signParserAfterParseCall() { } private void badJwtOnParserBuilder(JwtParser parser, String token) { - parser.parse(token); // $hasMissingJwtSignatureCheck + parser.parse(token); // $ Alert } private void badJwtHandlerOnParserBuilder(JwtParser parser, String token) { - parser.parse(token, new JwtHandlerAdapter>() { // $hasMissingJwtSignatureCheck + parser.parse(token, new JwtHandlerAdapter>() { // $ Alert @Override public Jwt onPlaintextJwt(Jwt jwt) { return jwt; @@ -107,15 +107,15 @@ public Jws onPlaintextJws(Jws jws) { } private void badJwtOnParserBuilder(String token) { - Jwts.parserBuilder().setSigningKey("someBase64EncodedKey").build().parse(token); // $hasMissingJwtSignatureCheck + Jwts.parserBuilder().setSigningKey("someBase64EncodedKey").build().parse(token); // $ Alert } private void badJwtOnDefaultParserBuilder(String token) { - new DefaultJwtParserBuilder().setSigningKey("someBase64EncodedKey").build().parse(token); // $hasMissingJwtSignatureCheck + new DefaultJwtParserBuilder().setSigningKey("someBase64EncodedKey").build().parse(token); // $ Alert } private void badJwtHandlerOnParser(String token) { - Jwts.parser().setSigningKey("someBase64EncodedKey").parse(token, // $hasMissingJwtSignatureCheck + Jwts.parser().setSigningKey("someBase64EncodedKey").parse(token, // $ Alert new JwtHandlerAdapter>() { @Override public Jwt onPlaintextJwt(Jwt jwt) { diff --git a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.ql b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.ql deleted file mode 100644 index 4ce6116e27f2..000000000000 --- a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import semmle.code.java.security.MissingJWTSignatureCheckQuery -import utils.test.InlineExpectationsTest - -module HasMissingJwtSignatureCheckTest implements TestSig { - string getARelevantTag() { result = "hasMissingJwtSignatureCheck" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasMissingJwtSignatureCheck" and - exists(DataFlow::Node sink | MissingJwtSignatureCheckFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.qlref b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.qlref new file mode 100644 index 000000000000..79b63ee641f5 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-347/MissingJWTSignatureCheck.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-441/Test.java b/java/ql/test/query-tests/security/CWE-441/Test.java index 0bda09331159..be8bedeb7e7e 100644 --- a/java/ql/test/query-tests/security/CWE-441/Test.java +++ b/java/ql/test/query-tests/security/CWE-441/Test.java @@ -29,23 +29,23 @@ private void validateWithBlockList(Uri uri) throws SecurityException { public void onCreate() { { ContentResolver contentResolver = getContentResolver(); - Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA"); - contentResolver.openInputStream(uri); // $ hasTaintFlow - contentResolver.openOutputStream(uri); // $ hasTaintFlow - contentResolver.openAssetFile(uri, null, null); // $ hasTaintFlow - contentResolver.openAssetFileDescriptor(uri, null); // $ hasTaintFlow - contentResolver.openFile(uri, null, null); // $ hasTaintFlow - contentResolver.openFileDescriptor(uri, null); // $ hasTaintFlow - contentResolver.openTypedAssetFile(uri, null, null, null); // $ hasTaintFlow - contentResolver.openTypedAssetFileDescriptor(uri, null, null); // $ hasTaintFlow + Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA"); // $ Source + contentResolver.openInputStream(uri); // $ Alert + contentResolver.openOutputStream(uri); // $ Alert + contentResolver.openAssetFile(uri, null, null); // $ Alert + contentResolver.openAssetFileDescriptor(uri, null); // $ Alert + contentResolver.openFile(uri, null, null); // $ Alert + contentResolver.openFileDescriptor(uri, null); // $ Alert + contentResolver.openTypedAssetFile(uri, null, null, null); // $ Alert + contentResolver.openTypedAssetFileDescriptor(uri, null, null); // $ Alert } { ContentResolver contentResolver = getContentResolver(); - Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA"); + Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA"); // $ Source String path = uri.getPath(); if (path.startsWith("/data")) throw new SecurityException(); - contentResolver.openInputStream(uri); // $ hasTaintFlow + contentResolver.openInputStream(uri); // $ Alert } // Equals checks { @@ -64,11 +64,11 @@ public void onCreate() { // Allow list checks { ContentResolver contentResolver = getContentResolver(); - Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA"); + Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA"); // $ Source String path = uri.getPath(); if (!path.startsWith("/safe/path")) throw new SecurityException(); - contentResolver.openInputStream(uri); // $ hasTaintFlow + contentResolver.openInputStream(uri); // $ Alert } { ContentResolver contentResolver = getContentResolver(); @@ -89,11 +89,11 @@ public void onCreate() { // Block list checks { ContentResolver contentResolver = getContentResolver(); - Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA"); + Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA"); // $ Source String path = uri.getPath(); if (path.startsWith("/data")) throw new SecurityException(); - contentResolver.openInputStream(uri); // $ hasTaintFlow + contentResolver.openInputStream(uri); // $ Alert } { ContentResolver contentResolver = getContentResolver(); diff --git a/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.expected b/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.expected index e69de29bb2d1..73fe6b44f3c7 100644 --- a/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.expected +++ b/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.expected @@ -0,0 +1,59 @@ +#select +| Test.java:33:45:33:47 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:33:45:33:47 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value | +| Test.java:34:46:34:48 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:34:46:34:48 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value | +| Test.java:35:43:35:45 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:35:43:35:45 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value | +| Test.java:36:53:36:55 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:36:53:36:55 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value | +| Test.java:37:38:37:40 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:37:38:37:40 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value | +| Test.java:38:48:38:50 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:38:48:38:50 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value | +| Test.java:39:48:39:50 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:39:48:39:50 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value | +| Test.java:40:58:40:60 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:40:58:40:60 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value | +| Test.java:48:45:48:47 | uri | Test.java:44:29:44:39 | getIntent(...) : Intent | Test.java:48:45:48:47 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:44:29:44:39 | getIntent(...) | user-provided value | +| Test.java:71:45:71:47 | uri | Test.java:67:29:67:39 | getIntent(...) : Intent | Test.java:71:45:71:47 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:67:29:67:39 | getIntent(...) | user-provided value | +| Test.java:96:45:96:47 | uri | Test.java:92:29:92:39 | getIntent(...) : Intent | Test.java:96:45:96:47 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:92:29:92:39 | getIntent(...) | user-provided value | +edges +| Test.java:32:23:32:71 | (...)... : Uri | Test.java:33:45:33:47 | uri | provenance | | +| Test.java:32:23:32:71 | (...)... : Uri | Test.java:34:46:34:48 | uri | provenance | | +| Test.java:32:23:32:71 | (...)... : Uri | Test.java:35:43:35:45 | uri | provenance | | +| Test.java:32:23:32:71 | (...)... : Uri | Test.java:36:53:36:55 | uri | provenance | | +| Test.java:32:23:32:71 | (...)... : Uri | Test.java:37:38:37:40 | uri | provenance | | +| Test.java:32:23:32:71 | (...)... : Uri | Test.java:38:48:38:50 | uri | provenance | | +| Test.java:32:23:32:71 | (...)... : Uri | Test.java:39:48:39:50 | uri | provenance | | +| Test.java:32:23:32:71 | (...)... : Uri | Test.java:40:58:40:60 | uri | provenance | | +| Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:32:29:32:71 | getParcelableExtra(...) : Parcelable | provenance | MaD:1 | +| Test.java:32:29:32:71 | getParcelableExtra(...) : Parcelable | Test.java:32:23:32:71 | (...)... : Uri | provenance | | +| Test.java:44:23:44:71 | (...)... : Uri | Test.java:48:45:48:47 | uri | provenance | | +| Test.java:44:29:44:39 | getIntent(...) : Intent | Test.java:44:29:44:71 | getParcelableExtra(...) : Parcelable | provenance | MaD:1 | +| Test.java:44:29:44:71 | getParcelableExtra(...) : Parcelable | Test.java:44:23:44:71 | (...)... : Uri | provenance | | +| Test.java:67:23:67:71 | (...)... : Uri | Test.java:71:45:71:47 | uri | provenance | | +| Test.java:67:29:67:39 | getIntent(...) : Intent | Test.java:67:29:67:71 | getParcelableExtra(...) : Parcelable | provenance | MaD:1 | +| Test.java:67:29:67:71 | getParcelableExtra(...) : Parcelable | Test.java:67:23:67:71 | (...)... : Uri | provenance | | +| Test.java:92:23:92:71 | (...)... : Uri | Test.java:96:45:96:47 | uri | provenance | | +| Test.java:92:29:92:39 | getIntent(...) : Intent | Test.java:92:29:92:71 | getParcelableExtra(...) : Parcelable | provenance | MaD:1 | +| Test.java:92:29:92:71 | getParcelableExtra(...) : Parcelable | Test.java:92:23:92:71 | (...)... : Uri | provenance | | +models +| 1 | Summary: android.content; Intent; true; getParcelableExtra; (String); ; Argument[this].SyntheticField[android.content.Intent.extras].MapValue; ReturnValue; value; manual | +nodes +| Test.java:32:23:32:71 | (...)... : Uri | semmle.label | (...)... : Uri | +| Test.java:32:29:32:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| Test.java:32:29:32:71 | getParcelableExtra(...) : Parcelable | semmle.label | getParcelableExtra(...) : Parcelable | +| Test.java:33:45:33:47 | uri | semmle.label | uri | +| Test.java:34:46:34:48 | uri | semmle.label | uri | +| Test.java:35:43:35:45 | uri | semmle.label | uri | +| Test.java:36:53:36:55 | uri | semmle.label | uri | +| Test.java:37:38:37:40 | uri | semmle.label | uri | +| Test.java:38:48:38:50 | uri | semmle.label | uri | +| Test.java:39:48:39:50 | uri | semmle.label | uri | +| Test.java:40:58:40:60 | uri | semmle.label | uri | +| Test.java:44:23:44:71 | (...)... : Uri | semmle.label | (...)... : Uri | +| Test.java:44:29:44:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| Test.java:44:29:44:71 | getParcelableExtra(...) : Parcelable | semmle.label | getParcelableExtra(...) : Parcelable | +| Test.java:48:45:48:47 | uri | semmle.label | uri | +| Test.java:67:23:67:71 | (...)... : Uri | semmle.label | (...)... : Uri | +| Test.java:67:29:67:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| Test.java:67:29:67:71 | getParcelableExtra(...) : Parcelable | semmle.label | getParcelableExtra(...) : Parcelable | +| Test.java:71:45:71:47 | uri | semmle.label | uri | +| Test.java:92:23:92:71 | (...)... : Uri | semmle.label | (...)... : Uri | +| Test.java:92:29:92:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| Test.java:92:29:92:71 | getParcelableExtra(...) : Parcelable | semmle.label | getParcelableExtra(...) : Parcelable | +| Test.java:96:45:96:47 | uri | semmle.label | uri | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.ql b/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.ql deleted file mode 100644 index ded8a8d69798..000000000000 --- a/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.ql +++ /dev/null @@ -1,4 +0,0 @@ -import java -import utils.test.InlineFlowTest -import semmle.code.java.security.UnsafeContentUriResolutionQuery -import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.qlref b/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.qlref new file mode 100644 index 000000000000..abcbe555e289 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-441/UnsafeContentUriResolution.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.expected b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.expected index e69de29bb2d1..27281d078111 100644 --- a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.expected @@ -0,0 +1,68 @@ +#select +| MainActivity.java:17:20:17:39 | newInstance(...) | MainActivity.java:14:34:14:44 | getIntent(...) : Intent | MainActivity.java:17:20:17:39 | newInstance(...) | Fragment depends on a $@, which may allow a malicious application to bypass access controls. | MainActivity.java:14:34:14:44 | getIntent(...) | user-provided value | +| MainActivity.java:18:23:18:55 | instantiate(...) | MainActivity.java:14:34:14:44 | getIntent(...) : Intent | MainActivity.java:18:23:18:55 | instantiate(...) | Fragment depends on a $@, which may allow a malicious application to bypass access controls. | MainActivity.java:14:34:14:44 | getIntent(...) | user-provided value | +| MainActivity.java:19:23:19:61 | instantiate(...) | MainActivity.java:14:34:14:44 | getIntent(...) : Intent | MainActivity.java:19:23:19:61 | instantiate(...) | Fragment depends on a $@, which may allow a malicious application to bypass access controls. | MainActivity.java:14:34:14:44 | getIntent(...) | user-provided value | +| MainActivity.java:20:23:20:28 | fClass | MainActivity.java:14:34:14:44 | getIntent(...) : Intent | MainActivity.java:20:23:20:28 | fClass | Fragment depends on a $@, which may allow a malicious application to bypass access controls. | MainActivity.java:14:34:14:44 | getIntent(...) | user-provided value | +| MainActivity.java:21:23:21:42 | newInstance(...) | MainActivity.java:14:34:14:44 | getIntent(...) : Intent | MainActivity.java:21:23:21:42 | newInstance(...) | Fragment depends on a $@, which may allow a malicious application to bypass access controls. | MainActivity.java:14:34:14:44 | getIntent(...) | user-provided value | +| MainActivity.java:22:23:22:42 | newInstance(...) | MainActivity.java:14:34:14:44 | getIntent(...) : Intent | MainActivity.java:22:23:22:42 | newInstance(...) | Fragment depends on a $@, which may allow a malicious application to bypass access controls. | MainActivity.java:14:34:14:44 | getIntent(...) | user-provided value | +| MainActivity.java:23:27:23:32 | fClass | MainActivity.java:14:34:14:44 | getIntent(...) : Intent | MainActivity.java:23:27:23:32 | fClass | Fragment depends on a $@, which may allow a malicious application to bypass access controls. | MainActivity.java:14:34:14:44 | getIntent(...) | user-provided value | +| MainActivity.java:24:27:24:46 | newInstance(...) | MainActivity.java:14:34:14:44 | getIntent(...) : Intent | MainActivity.java:24:27:24:46 | newInstance(...) | Fragment depends on a $@, which may allow a malicious application to bypass access controls. | MainActivity.java:14:34:14:44 | getIntent(...) | user-provided value | +| MainActivity.java:25:27:25:32 | fClass | MainActivity.java:14:34:14:44 | getIntent(...) : Intent | MainActivity.java:25:27:25:32 | fClass | Fragment depends on a $@, which may allow a malicious application to bypass access controls. | MainActivity.java:14:34:14:44 | getIntent(...) | user-provided value | +| MainActivity.java:26:27:26:46 | newInstance(...) | MainActivity.java:14:34:14:44 | getIntent(...) : Intent | MainActivity.java:26:27:26:46 | newInstance(...) | Fragment depends on a $@, which may allow a malicious application to bypass access controls. | MainActivity.java:14:34:14:44 | getIntent(...) | user-provided value | +edges +| MainActivity.java:14:34:14:44 | getIntent(...) : Intent | MainActivity.java:14:34:14:68 | getStringExtra(...) : String | provenance | MaD:10 | +| MainActivity.java:14:34:14:68 | getStringExtra(...) : String | MainActivity.java:16:70:16:74 | fname : String | provenance | | +| MainActivity.java:16:38:16:75 | (...)... : Class | MainActivity.java:17:20:17:25 | fClass : Class | provenance | | +| MainActivity.java:16:56:16:75 | forName(...) : Class | MainActivity.java:16:38:16:75 | (...)... : Class | provenance | | +| MainActivity.java:16:70:16:74 | fname : String | MainActivity.java:16:56:16:75 | forName(...) : Class | provenance | Config | +| MainActivity.java:16:70:16:74 | fname : String | MainActivity.java:18:50:18:54 | fname : String | provenance | | +| MainActivity.java:17:20:17:25 | fClass : Class | MainActivity.java:17:20:17:39 | newInstance(...) | provenance | Config Sink:MaD:1 | +| MainActivity.java:17:20:17:25 | fClass : Class | MainActivity.java:20:23:20:28 | fClass | provenance | Sink:MaD:2 | +| MainActivity.java:17:20:17:25 | fClass : Class | MainActivity.java:21:23:21:28 | fClass : Class | provenance | | +| MainActivity.java:18:50:18:54 | fname : String | MainActivity.java:18:23:18:55 | instantiate(...) | provenance | Config Sink:MaD:4 | +| MainActivity.java:18:50:18:54 | fname : String | MainActivity.java:19:50:19:54 | fname : String | provenance | | +| MainActivity.java:19:50:19:54 | fname : String | MainActivity.java:19:23:19:61 | instantiate(...) | provenance | Config Sink:MaD:3 | +| MainActivity.java:21:23:21:28 | fClass : Class | MainActivity.java:21:23:21:42 | newInstance(...) | provenance | Config Sink:MaD:4 | +| MainActivity.java:21:23:21:28 | fClass : Class | MainActivity.java:22:23:22:28 | fClass : Class | provenance | | +| MainActivity.java:22:23:22:28 | fClass : Class | MainActivity.java:22:23:22:42 | newInstance(...) | provenance | Config Sink:MaD:5 | +| MainActivity.java:22:23:22:28 | fClass : Class | MainActivity.java:23:27:23:32 | fClass | provenance | Sink:MaD:6 | +| MainActivity.java:22:23:22:28 | fClass : Class | MainActivity.java:24:27:24:32 | fClass : Class | provenance | | +| MainActivity.java:24:27:24:32 | fClass : Class | MainActivity.java:24:27:24:46 | newInstance(...) | provenance | Config Sink:MaD:8 | +| MainActivity.java:24:27:24:32 | fClass : Class | MainActivity.java:25:27:25:32 | fClass | provenance | Sink:MaD:7 | +| MainActivity.java:24:27:24:32 | fClass : Class | MainActivity.java:26:27:26:32 | fClass : Class | provenance | | +| MainActivity.java:26:27:26:32 | fClass : Class | MainActivity.java:26:27:26:46 | newInstance(...) | provenance | Config Sink:MaD:9 | +models +| 1 | Sink: androidx.fragment.app; FragmentTransaction; true; add; (Fragment,String); ; Argument[0]; fragment-injection; manual | +| 2 | Sink: androidx.fragment.app; FragmentTransaction; true; add; (int,Class,Bundle,String); ; Argument[1]; fragment-injection; manual | +| 3 | Sink: androidx.fragment.app; FragmentTransaction; true; add; (int,Fragment); ; Argument[1]; fragment-injection; manual | +| 4 | Sink: androidx.fragment.app; FragmentTransaction; true; add; (int,Fragment,String); ; Argument[1]; fragment-injection; manual | +| 5 | Sink: androidx.fragment.app; FragmentTransaction; true; attach; (Fragment); ; Argument[0]; fragment-injection; manual | +| 6 | Sink: androidx.fragment.app; FragmentTransaction; true; replace; (int,Class,Bundle); ; Argument[1]; fragment-injection; manual | +| 7 | Sink: androidx.fragment.app; FragmentTransaction; true; replace; (int,Class,Bundle,String); ; Argument[1]; fragment-injection; manual | +| 8 | Sink: androidx.fragment.app; FragmentTransaction; true; replace; (int,Fragment); ; Argument[1]; fragment-injection; manual | +| 9 | Sink: androidx.fragment.app; FragmentTransaction; true; replace; (int,Fragment,String); ; Argument[1]; fragment-injection; manual | +| 10 | Summary: android.content; Intent; true; getStringExtra; (String); ; Argument[this].SyntheticField[android.content.Intent.extras].MapValue; ReturnValue; value; manual | +nodes +| MainActivity.java:14:34:14:44 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| MainActivity.java:14:34:14:68 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | +| MainActivity.java:16:38:16:75 | (...)... : Class | semmle.label | (...)... : Class | +| MainActivity.java:16:56:16:75 | forName(...) : Class | semmle.label | forName(...) : Class | +| MainActivity.java:16:70:16:74 | fname : String | semmle.label | fname : String | +| MainActivity.java:17:20:17:25 | fClass : Class | semmle.label | fClass : Class | +| MainActivity.java:17:20:17:39 | newInstance(...) | semmle.label | newInstance(...) | +| MainActivity.java:18:23:18:55 | instantiate(...) | semmle.label | instantiate(...) | +| MainActivity.java:18:50:18:54 | fname : String | semmle.label | fname : String | +| MainActivity.java:19:23:19:61 | instantiate(...) | semmle.label | instantiate(...) | +| MainActivity.java:19:50:19:54 | fname : String | semmle.label | fname : String | +| MainActivity.java:20:23:20:28 | fClass | semmle.label | fClass | +| MainActivity.java:21:23:21:28 | fClass : Class | semmle.label | fClass : Class | +| MainActivity.java:21:23:21:42 | newInstance(...) | semmle.label | newInstance(...) | +| MainActivity.java:22:23:22:28 | fClass : Class | semmle.label | fClass : Class | +| MainActivity.java:22:23:22:42 | newInstance(...) | semmle.label | newInstance(...) | +| MainActivity.java:23:27:23:32 | fClass | semmle.label | fClass | +| MainActivity.java:24:27:24:32 | fClass : Class | semmle.label | fClass : Class | +| MainActivity.java:24:27:24:46 | newInstance(...) | semmle.label | newInstance(...) | +| MainActivity.java:25:27:25:32 | fClass | semmle.label | fClass | +| MainActivity.java:26:27:26:32 | fClass : Class | semmle.label | fClass : Class | +| MainActivity.java:26:27:26:46 | newInstance(...) | semmle.label | newInstance(...) | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.ql b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.ql deleted file mode 100644 index 665d750ee204..000000000000 --- a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.ql +++ /dev/null @@ -1,4 +0,0 @@ -import java -import semmle.code.java.security.FragmentInjectionQuery -import utils.test.InlineFlowTest -import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.qlref b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.qlref new file mode 100644 index 000000000000..f6d0df1bfcda --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-470/FragmentInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-470/MainActivity.java b/java/ql/test/query-tests/security/CWE-470/MainActivity.java index 3773a9dbe37e..fccc2d21ff68 100644 --- a/java/ql/test/query-tests/security/CWE-470/MainActivity.java +++ b/java/ql/test/query-tests/security/CWE-470/MainActivity.java @@ -11,19 +11,19 @@ public class MainActivity extends FragmentActivity { public void onCreate(Bundle savedInstance) { try { super.onCreate(savedInstance); - final String fname = getIntent().getStringExtra("fname"); + final String fname = getIntent().getStringExtra("fname"); // $ Source FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); Class fClass = (Class) Class.forName(fname); - ft.add(fClass.newInstance(), ""); // $ hasTaintFlow - ft.add(0, Fragment.instantiate(this, fname), null); // $ hasTaintFlow - ft.add(0, Fragment.instantiate(this, fname, null)); // $ hasTaintFlow - ft.add(0, fClass, null, ""); // $ hasTaintFlow - ft.add(0, fClass.newInstance(), ""); // $ hasTaintFlow - ft.attach(fClass.newInstance()); // $ hasTaintFlow - ft.replace(0, fClass, null); // $ hasTaintFlow - ft.replace(0, fClass.newInstance()); // $ hasTaintFlow - ft.replace(0, fClass, null, ""); // $ hasTaintFlow - ft.replace(0, fClass.newInstance(), ""); // $ hasTaintFlow + ft.add(fClass.newInstance(), ""); // $ Alert + ft.add(0, Fragment.instantiate(this, fname), null); // $ Alert + ft.add(0, Fragment.instantiate(this, fname, null)); // $ Alert + ft.add(0, fClass, null, ""); // $ Alert + ft.add(0, fClass.newInstance(), ""); // $ Alert + ft.attach(fClass.newInstance()); // $ Alert + ft.replace(0, fClass, null); // $ Alert + ft.replace(0, fClass.newInstance()); // $ Alert + ft.replace(0, fClass, null, ""); // $ Alert + ft.replace(0, fClass.newInstance(), ""); // $ Alert ft.add(Fragment.class.newInstance(), ""); // Safe ft.attach(Fragment.class.newInstance()); // Safe diff --git a/java/ql/test/query-tests/security/CWE-489/webview-debugging/Test.java b/java/ql/test/query-tests/security/CWE-489/webview-debugging/Test.java index 3fe75e893889..378d5920cdd1 100644 --- a/java/ql/test/query-tests/security/CWE-489/webview-debugging/Test.java +++ b/java/ql/test/query-tests/security/CWE-489/webview-debugging/Test.java @@ -4,20 +4,20 @@ class Test { boolean DEBUG_BUILD; void test1() { - WebView.setWebContentsDebuggingEnabled(true); // $hasValueFlow + WebView.setWebContentsDebuggingEnabled(true); // $ Alert } void test2(){ if (DEBUG_BUILD) { - WebView.setWebContentsDebuggingEnabled(true); + WebView.setWebContentsDebuggingEnabled(true); } } void test3(boolean enabled){ - WebView.setWebContentsDebuggingEnabled(enabled); // $hasValueFlow + WebView.setWebContentsDebuggingEnabled(enabled); // $ Alert } void test4(){ - test3(true); + test3(true); // $ Source } -} \ No newline at end of file +} diff --git a/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.expected b/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.expected index e69de29bb2d1..040ae7e3f3f8 100644 --- a/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.expected +++ b/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.expected @@ -0,0 +1,12 @@ +#select +| Test.java:7:48:7:51 | true | Test.java:7:48:7:51 | true | Test.java:7:48:7:51 | true | Webview debugging is enabled. | +| Test.java:17:48:17:54 | enabled | Test.java:21:15:21:18 | true : Boolean | Test.java:17:48:17:54 | enabled | Webview debugging is enabled. | +edges +| Test.java:16:16:16:30 | enabled : Boolean | Test.java:17:48:17:54 | enabled | provenance | | +| Test.java:21:15:21:18 | true : Boolean | Test.java:16:16:16:30 | enabled : Boolean | provenance | | +nodes +| Test.java:7:48:7:51 | true | semmle.label | true | +| Test.java:16:16:16:30 | enabled : Boolean | semmle.label | enabled : Boolean | +| Test.java:17:48:17:54 | enabled | semmle.label | enabled | +| Test.java:21:15:21:18 | true : Boolean | semmle.label | true : Boolean | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.ql b/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.ql deleted file mode 100644 index f0b9cf08f820..000000000000 --- a/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.ql +++ /dev/null @@ -1,4 +0,0 @@ -import java -import utils.test.InlineFlowTest -import semmle.code.java.security.WebviewDebuggingEnabledQuery -import ValueFlowTest diff --git a/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.qlref b/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.qlref new file mode 100644 index 000000000000..596b3c6d005c --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-489/WebviewDebuggingEnabled.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-502/A.java b/java/ql/test/query-tests/security/CWE-502/A.java index f3bd633f8804..81974edf283e 100644 --- a/java/ql/test/query-tests/security/CWE-502/A.java +++ b/java/ql/test/query-tests/security/CWE-502/A.java @@ -11,15 +11,15 @@ public class A { public Object deserialize1(Socket sock) throws java.io.IOException, ClassNotFoundException { - InputStream inputStream = sock.getInputStream(); + InputStream inputStream = sock.getInputStream(); // $ Source ObjectInputStream in = new ObjectInputStream(inputStream); - return in.readObject(); // $unsafeDeserialization + return in.readObject(); // $ Alert } public Object deserialize2(Socket sock) throws java.io.IOException, ClassNotFoundException { - InputStream inputStream = sock.getInputStream(); + InputStream inputStream = sock.getInputStream(); // $ Source ObjectInputStream in = new ObjectInputStream(inputStream); - return in.readUnshared(); // $unsafeDeserialization + return in.readUnshared(); // $ Alert } public Object deserializeWithSerialKiller(Socket sock) throws java.io.IOException, ClassNotFoundException { @@ -29,24 +29,24 @@ public Object deserializeWithSerialKiller(Socket sock) throws java.io.IOExceptio } public Object deserialize3(Socket sock) throws java.io.IOException { - InputStream inputStream = sock.getInputStream(); + InputStream inputStream = sock.getInputStream(); // $ Source XMLDecoder d = new XMLDecoder(inputStream); - return d.readObject(); // $unsafeDeserialization + return d.readObject(); // $ Alert } public Object deserialize4(Socket sock) throws java.io.IOException { XStream xs = new XStream(); - InputStream inputStream = sock.getInputStream(); + InputStream inputStream = sock.getInputStream(); // $ Source Reader reader = new InputStreamReader(inputStream); - return xs.fromXML(reader); // $unsafeDeserialization + return xs.fromXML(reader); // $ Alert } public void deserialize5(Socket sock) throws java.io.IOException { Kryo kryo = new Kryo(); - Input input = new Input(sock.getInputStream()); - A a1 = kryo.readObject(input, A.class); // $unsafeDeserialization - A a2 = kryo.readObjectOrNull(input, A.class); // $unsafeDeserialization - Object o = kryo.readClassAndObject(input); // $unsafeDeserialization + Input input = new Input(sock.getInputStream()); // $ Source + A a1 = kryo.readObject(input, A.class); // $ Alert + A a2 = kryo.readObjectOrNull(input, A.class); // $ Alert + Object o = kryo.readClassAndObject(input); // $ Alert } private Kryo getSafeKryo() throws java.io.IOException { @@ -64,22 +64,22 @@ public void deserialize6(Socket sock) throws java.io.IOException { public void deserializeSnakeYaml(Socket sock) throws java.io.IOException { Yaml yaml = new Yaml(); - InputStream input = sock.getInputStream(); - Object o = yaml.load(input); // $unsafeDeserialization - Object o2 = yaml.loadAll(input); // $unsafeDeserialization - Object o3 = yaml.parse(new InputStreamReader(input)); // $unsafeDeserialization - A o4 = yaml.loadAs(input, A.class); // $unsafeDeserialization - A o5 = yaml.loadAs(new InputStreamReader(input), A.class); // $unsafeDeserialization + InputStream input = sock.getInputStream(); // $ Source + Object o = yaml.load(input); // $ Alert + Object o2 = yaml.loadAll(input); // $ Alert + Object o3 = yaml.parse(new InputStreamReader(input)); // $ Alert + A o4 = yaml.loadAs(input, A.class); // $ Alert + A o5 = yaml.loadAs(new InputStreamReader(input), A.class); // $ Alert } public void deserializeSnakeYaml2(Socket sock) throws java.io.IOException { Yaml yaml = new Yaml(new Constructor()); - InputStream input = sock.getInputStream(); - Object o = yaml.load(input); // $unsafeDeserialization - Object o2 = yaml.loadAll(input); // $unsafeDeserialization - Object o3 = yaml.parse(new InputStreamReader(input)); // $unsafeDeserialization - A o4 = yaml.loadAs(input, A.class); // $unsafeDeserialization - A o5 = yaml.loadAs(new InputStreamReader(input), A.class); // $unsafeDeserialization + InputStream input = sock.getInputStream(); // $ Source + Object o = yaml.load(input); // $ Alert + Object o2 = yaml.loadAll(input); // $ Alert + Object o3 = yaml.parse(new InputStreamReader(input)); // $ Alert + A o4 = yaml.loadAs(input, A.class); // $ Alert + A o5 = yaml.loadAs(new InputStreamReader(input), A.class); // $ Alert } public void deserializeSnakeYaml3(Socket sock) throws java.io.IOException { @@ -94,11 +94,11 @@ public void deserializeSnakeYaml3(Socket sock) throws java.io.IOException { public void deserializeSnakeYaml4(Socket sock) throws java.io.IOException { Yaml yaml = new Yaml(new Constructor(A.class)); - InputStream input = sock.getInputStream(); - Object o = yaml.load(input); // $unsafeDeserialization - Object o2 = yaml.loadAll(input); // $unsafeDeserialization - Object o3 = yaml.parse(new InputStreamReader(input)); // $unsafeDeserialization - A o4 = yaml.loadAs(input, A.class); // $unsafeDeserialization - A o5 = yaml.loadAs(new InputStreamReader(input), A.class); // $unsafeDeserialization + InputStream input = sock.getInputStream(); // $ Source + Object o = yaml.load(input); // $ Alert + Object o2 = yaml.loadAll(input); // $ Alert + Object o3 = yaml.parse(new InputStreamReader(input)); // $ Alert + A o4 = yaml.loadAs(input, A.class); // $ Alert + A o5 = yaml.loadAs(new InputStreamReader(input), A.class); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-502/B.java b/java/ql/test/query-tests/security/CWE-502/B.java index d97a44cfd58a..803982081ad8 100644 --- a/java/ql/test/query-tests/security/CWE-502/B.java +++ b/java/ql/test/query-tests/security/CWE-502/B.java @@ -4,30 +4,30 @@ public class B { public Object deserializeJson1(Socket sock) throws java.io.IOException { - InputStream inputStream = sock.getInputStream(); - return JSON.parseObject(inputStream, null); // $unsafeDeserialization + InputStream inputStream = sock.getInputStream(); // $ Source + return JSON.parseObject(inputStream, null); // $ Alert } public Object deserializeJson2(Socket sock) throws java.io.IOException { - InputStream inputStream = sock.getInputStream(); + InputStream inputStream = sock.getInputStream(); // $ Source byte[] bytes = new byte[100]; inputStream.read(bytes); - return JSON.parse(bytes); // $unsafeDeserialization + return JSON.parse(bytes); // $ Alert } public Object deserializeJson3(Socket sock) throws java.io.IOException { - InputStream inputStream = sock.getInputStream(); + InputStream inputStream = sock.getInputStream(); // $ Source byte[] bytes = new byte[100]; inputStream.read(bytes); String s = new String(bytes); - return JSON.parseObject(s); // $unsafeDeserialization + return JSON.parseObject(s); // $ Alert } public Object deserializeJson4(Socket sock) throws java.io.IOException { - InputStream inputStream = sock.getInputStream(); + InputStream inputStream = sock.getInputStream(); // $ Source byte[] bytes = new byte[100]; inputStream.read(bytes); String s = new String(bytes); - return JSON.parse(s); // $unsafeDeserialization + return JSON.parse(s); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-502/C.java b/java/ql/test/query-tests/security/CWE-502/C.java index e13ae98ead52..e63515b85bd5 100644 --- a/java/ql/test/query-tests/security/CWE-502/C.java +++ b/java/ql/test/query-tests/security/CWE-502/C.java @@ -20,75 +20,75 @@ public class C { @GetMapping(value = "jyaml") public void bad1(HttpServletRequest request) throws Exception { - String data = request.getParameter("data"); - Yaml.load(data); // $unsafeDeserialization - Yaml.loadStream(data); // $unsafeDeserialization - Yaml.loadStreamOfType(data, Object.class); // $unsafeDeserialization - Yaml.loadType(data, Object.class); // $unsafeDeserialization + String data = request.getParameter("data"); // $ Source + Yaml.load(data); // $ Alert + Yaml.loadStream(data); // $ Alert + Yaml.loadStreamOfType(data, Object.class); // $ Alert + Yaml.loadType(data, Object.class); // $ Alert org.ho.yaml.YamlConfig yamlConfig = new YamlConfig(); - yamlConfig.load(data); // $unsafeDeserialization - yamlConfig.loadStream(data); // $unsafeDeserialization - yamlConfig.loadStreamOfType(data, Object.class); // $unsafeDeserialization - yamlConfig.loadType(data, Object.class); // $unsafeDeserialization + yamlConfig.load(data); // $ Alert + yamlConfig.loadStream(data); // $ Alert + yamlConfig.loadStreamOfType(data, Object.class); // $ Alert + yamlConfig.loadType(data, Object.class); // $ Alert } @GetMapping(value = "jsonio") public void bad2(HttpServletRequest request) { - String data = request.getParameter("data"); + String data = request.getParameter("data"); // $ Source HashMap hashMap = new HashMap(); hashMap.put("USE_MAPS", true); - JsonReader.jsonToJava(data); // $unsafeDeserialization + JsonReader.jsonToJava(data); // $ Alert JsonReader jr = new JsonReader(data, null); - jr.readObject(); // $unsafeDeserialization + jr.readObject(); // $ Alert } @GetMapping(value = "yamlbeans") public void bad3(HttpServletRequest request) throws Exception { - String data = request.getParameter("data"); + String data = request.getParameter("data"); // $ Source YamlReader r = new YamlReader(data); - r.read(); // $unsafeDeserialization - r.read(Object.class); // $unsafeDeserialization - r.read(Object.class, Object.class); // $unsafeDeserialization + r.read(); // $ Alert + r.read(Object.class); // $ Alert + r.read(Object.class, Object.class); // $ Alert } @GetMapping(value = "hessian") public void bad4(HttpServletRequest request) throws Exception { - byte[] bytes = request.getParameter("data").getBytes(); + byte[] bytes = request.getParameter("data").getBytes(); // $ Source ByteArrayInputStream bis = new ByteArrayInputStream(bytes); HessianInput hessianInput = new HessianInput(bis); - hessianInput.readObject(); // $unsafeDeserialization - hessianInput.readObject(Object.class); // $unsafeDeserialization + hessianInput.readObject(); // $ Alert + hessianInput.readObject(Object.class); // $ Alert } @GetMapping(value = "hessian2") public void bad5(HttpServletRequest request) throws Exception { - byte[] bytes = request.getParameter("data").getBytes(); + byte[] bytes = request.getParameter("data").getBytes(); // $ Source ByteArrayInputStream bis = new ByteArrayInputStream(bytes); Hessian2Input hessianInput = new Hessian2Input(bis); - hessianInput.readObject(); // $unsafeDeserialization - hessianInput.readObject(Object.class); // $unsafeDeserialization + hessianInput.readObject(); // $ Alert + hessianInput.readObject(Object.class); // $ Alert } @GetMapping(value = "castor") public void bad6(HttpServletRequest request) throws Exception { Unmarshaller unmarshaller = new Unmarshaller(); - unmarshaller.unmarshal(new StringReader(request.getParameter("data"))); // $unsafeDeserialization + unmarshaller.unmarshal(new StringReader(request.getParameter("data"))); // $ Alert } @GetMapping(value = "burlap") public void bad7(HttpServletRequest request) throws Exception { - byte[] serializedData = request.getParameter("data").getBytes(); + byte[] serializedData = request.getParameter("data").getBytes(); // $ Source ByteArrayInputStream is = new ByteArrayInputStream(serializedData); BurlapInput burlapInput = new BurlapInput(is); - burlapInput.readObject(); // $unsafeDeserialization + burlapInput.readObject(); // $ Alert BurlapInput burlapInput1 = new BurlapInput(); burlapInput1.init(is); - burlapInput1.readObject(); // $unsafeDeserialization + burlapInput1.readObject(); // $ Alert } @GetMapping(value = "jsonio1") diff --git a/java/ql/test/query-tests/security/CWE-502/FlexjsonServlet.java b/java/ql/test/query-tests/security/CWE-502/FlexjsonServlet.java index c7e5c1ce5871..1d47bd2b7fd2 100644 --- a/java/ql/test/query-tests/security/CWE-502/FlexjsonServlet.java +++ b/java/ql/test/query-tests/security/CWE-502/FlexjsonServlet.java @@ -33,7 +33,7 @@ public void doHead(HttpServletRequest req, HttpServletResponse resp) throws IOEx // BAD: allow class name to be controlled by remote source public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { JSONDeserializer deserializer = new JSONDeserializer<>(); - User user = (User) deserializer.deserialize(req.getReader()); // $unsafeDeserialization + User user = (User) deserializer.deserialize(req.getReader()); // $ Alert } @@ -41,7 +41,7 @@ public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOEx // BAD: allow class name to be controlled by remote source public void doTrace(HttpServletRequest req, HttpServletResponse resp) throws IOException { JSONDeserializer deserializer = new JSONDeserializer<>(); - User user = (User) deserializer.deserialize(req.getReader()); // $unsafeDeserialization + User user = (User) deserializer.deserialize(req.getReader()); // $ Alert } @@ -49,7 +49,7 @@ public void doTrace(HttpServletRequest req, HttpServletResponse resp) throws IOE // BAD: specify overly generic class type public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException { JSONDeserializer deserializer = new JSONDeserializer(); - User user = (User) deserializer.deserialize(req.getReader(), Object.class); // $unsafeDeserialization + User user = (User) deserializer.deserialize(req.getReader(), Object.class); // $ Alert } private Person fromJsonToPerson(String json) { @@ -64,8 +64,8 @@ public void doPut2(HttpServletRequest req, HttpServletResponse resp) throws IOEx // BAD: Specify a concrete class type to `use` with `ObjectFactory` public void doPut3(HttpServletRequest req, HttpServletResponse resp) throws IOException { - String json = req.getParameter("json"); - Person person = new JSONDeserializer().use(Person.class, new ExistingObjectFactory(new Person())).deserialize(json); // $unsafeDeserialization + String json = req.getParameter("json"); // $ Source + Person person = new JSONDeserializer().use(Person.class, new ExistingObjectFactory(new Person())).deserialize(json); // $ Alert } // GOOD: Specify a null path to `use` with a concrete class type @@ -76,8 +76,8 @@ public void doPut4(HttpServletRequest req, HttpServletResponse resp) throws IOEx // BAD: Specify a non-null json path to `use` with a concrete class type public void doPut5(HttpServletRequest req, HttpServletResponse resp) throws IOException { - String json = req.getParameter("json"); - Person person = new JSONDeserializer().use("abc", Person.class).deserialize(json); // $unsafeDeserialization + String json = req.getParameter("json"); // $ Source + Person person = new JSONDeserializer().use("abc", Person.class).deserialize(json); // $ Alert } // GOOD: Specify a null json path to `use` with `ObjectFactory` @@ -116,11 +116,11 @@ public void doPut10(HttpServletRequest req, HttpServletResponse resp) throws IOE // BAD: Specify a non-null json path to `use` with a concrete class type, interwoven with irrelevant use directives, without using fluent method chaining public void doPut11(HttpServletRequest req, HttpServletResponse resp) throws IOException { - String json = req.getParameter("json"); + String json = req.getParameter("json"); // $ Source JSONDeserializer deserializer = new JSONDeserializer(); deserializer.use(Person.class, null); deserializer.use("someKey", Person.class); deserializer.use(String.class, null); - Person person = deserializer.deserialize(json); // $unsafeDeserialization + Person person = deserializer.deserialize(json); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-502/GsonActivity.java b/java/ql/test/query-tests/security/CWE-502/GsonActivity.java index a080924c6cd4..93e944118340 100644 --- a/java/ql/test/query-tests/security/CWE-502/GsonActivity.java +++ b/java/ql/test/query-tests/security/CWE-502/GsonActivity.java @@ -5,13 +5,13 @@ import android.os.Parcel; import android.os.Parcelable; -import com.google.gson.Gson; +import com.google.gson.Gson; public class GsonActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(-1); - ParcelableEntity entity = (ParcelableEntity) getIntent().getParcelableExtra("jsonEntity"); + ParcelableEntity entity = (ParcelableEntity) getIntent().getParcelableExtra("jsonEntity"); // $ Source } } diff --git a/java/ql/test/query-tests/security/CWE-502/GsonServlet.java b/java/ql/test/query-tests/security/CWE-502/GsonServlet.java index 47534d2d7a09..0ee62249031b 100644 --- a/java/ql/test/query-tests/security/CWE-502/GsonServlet.java +++ b/java/ql/test/query-tests/security/CWE-502/GsonServlet.java @@ -36,12 +36,12 @@ public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOExc @Override // BAD: allow class name to be controlled by remote source public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { - String json = req.getParameter("json"); + String json = req.getParameter("json"); // $ Source String clazz = req.getParameter("class"); try { Gson gson = new Gson(); - Object obj = gson.fromJson(json, Class.forName(clazz)); // $unsafeDeserialization + Object obj = gson.fromJson(json, Class.forName(clazz)); // $ Alert } catch (ClassNotFoundException cne) { throw new IOException(cne.getMessage()); } @@ -50,14 +50,14 @@ public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOEx @Override // BAD: allow class name to be controlled by remote source even with a type adapter factory public void doHead(HttpServletRequest req, HttpServletResponse resp) throws IOException { - String json = req.getParameter("json"); + String json = req.getParameter("json"); // $ Source String clazz = req.getParameter("class"); try { RuntimeTypeAdapterFactory runtimeTypeAdapterFactory = RuntimeTypeAdapterFactory .of(User.class, "type"); Gson gson = new GsonBuilder().registerTypeAdapterFactory(runtimeTypeAdapterFactory).create(); - Object obj = gson.fromJson(json, Class.forName(clazz)); // $unsafeDeserialization + Object obj = gson.fromJson(json, Class.forName(clazz)); // $ Alert } catch (ClassNotFoundException cne) { throw new IOException(cne.getMessage()); } @@ -74,4 +74,4 @@ public void doTrace(HttpServletRequest req, HttpServletResponse resp) throws IOE Gson gson = new GsonBuilder().registerTypeAdapterFactory(runtimeTypeAdapterFactory).create(); Person obj = gson.fromJson(json, Person.class); } -} \ No newline at end of file +} diff --git a/java/ql/test/query-tests/security/CWE-502/JabsorbServlet.java b/java/ql/test/query-tests/security/CWE-502/JabsorbServlet.java index 14e8d1819c6f..c5a072e65f1a 100644 --- a/java/ql/test/query-tests/security/CWE-502/JabsorbServlet.java +++ b/java/ql/test/query-tests/security/CWE-502/JabsorbServlet.java @@ -86,7 +86,7 @@ public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOEx @Override // BAD: allow class name to be controlled by remote source public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException { - String json = req.getParameter("json"); + String json = req.getParameter("json"); // $ Source String clazz = req.getParameter("class"); try { @@ -99,7 +99,7 @@ public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOExc serializer.setMarshallNullAttributes(true); SerializerState state = new SerializerState(); - User user = (User) serializer.unmarshall(state, Class.forName(clazz), jsonObject); // $unsafeDeserialization + User user = (User) serializer.unmarshall(state, Class.forName(clazz), jsonObject); // $ Alert } catch (Exception e) { throw new IOException(e.getMessage()); } @@ -107,15 +107,15 @@ public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOExc // BAD: allow explicit class type controlled by remote source in the format of "json={\"javaClass\":\"com.thirdparty.Attacker\", ...}" public void doPut2(HttpServletRequest req, HttpServletResponse resp) throws IOException { - String json = req.getParameter("json"); + String json = req.getParameter("json"); // $ Source try { JSONSerializer serializer = new JSONSerializer(); serializer.registerDefaultSerializers(); - User user = (User) serializer.fromJSON(json); // $unsafeDeserialization + User user = (User) serializer.fromJSON(json); // $ Alert } catch (Exception e) { throw new IOException(e.getMessage()); } } -} \ No newline at end of file +} diff --git a/java/ql/test/query-tests/security/CWE-502/JacksonTest.java b/java/ql/test/query-tests/security/CWE-502/JacksonTest.java index 3520e4eaa116..71be753b89a1 100644 --- a/java/ql/test/query-tests/security/CWE-502/JacksonTest.java +++ b/java/ql/test/query-tests/security/CWE-502/JacksonTest.java @@ -17,7 +17,7 @@ public static void withSocket(Action action) throws Exception { try (ServerSocket serverSocket = new ServerSocket(0)) { try (Socket socket = serverSocket.accept()) { byte[] bytes = new byte[1024]; - int n = socket.getInputStream().read(bytes); + int n = socket.getInputStream().read(bytes); // $ Source String jexlExpr = new String(bytes, 0, n); action.run(jexlExpr); } @@ -73,7 +73,7 @@ class UnsafePersonDeserialization { private static void testUnsafeDeserialization() throws Exception { JacksonTest.withSocket(string -> { ObjectMapper mapper = new ObjectMapper(); - mapper.readValue(string, Person.class); // $unsafeDeserialization + mapper.readValue(string, Person.class); // $ Alert }); } @@ -82,7 +82,7 @@ private static void testUnsafeDeserialization() throws Exception { private static void testUnsafeDeserializationWithExtendedClass() throws Exception { JacksonTest.withSocket(string -> { ObjectMapper mapper = new ObjectMapper(); - mapper.readValue(string, Employee.class); // $unsafeDeserialization + mapper.readValue(string, Employee.class); // $ Alert }); } @@ -91,7 +91,7 @@ private static void testUnsafeDeserializationWithExtendedClass() throws Exceptio private static void testUnsafeDeserializationWithWrapper() throws Exception { JacksonTest.withSocket(string -> { ObjectMapper mapper = new ObjectMapper(); - mapper.readValue(string, Task.class); // $unsafeDeserialization + mapper.readValue(string, Task.class); // $ Alert }); } } @@ -102,7 +102,7 @@ class SaferPersonDeserialization { // has a validator private static void testSafeDeserializationWithValidator() throws Exception { JacksonTest.withSocket(string -> { - PolymorphicTypeValidator ptv = + PolymorphicTypeValidator ptv = BasicPolymorphicTypeValidator.builder() .allowIfSubType("only.allowed.package") .build(); @@ -118,7 +118,7 @@ private static void testSafeDeserializationWithValidator() throws Exception { // has a validator private static void testSafeDeserializationWithValidatorAndBuilder() throws Exception { JacksonTest.withSocket(string -> { - PolymorphicTypeValidator ptv = + PolymorphicTypeValidator ptv = BasicPolymorphicTypeValidator.builder() .allowIfSubType("only.allowed.package") .build(); @@ -139,7 +139,7 @@ private static void testUnsafeDeserialization() throws Exception { JacksonTest.withSocket(string -> { ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(); // this enables polymorphic type handling - mapper.readValue(string, Cat.class); // $unsafeDeserialization + mapper.readValue(string, Cat.class); // $ Alert }); } @@ -148,7 +148,7 @@ private static void testUnsafeDeserializationWithObjectMapperReadValues() throws JacksonTest.withSocket(string -> { ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(); - mapper.readValues(new JsonFactory().createParser(string), Cat.class).readAll(); // $unsafeDeserialization + mapper.readValues(new JsonFactory().createParser(string), Cat.class).readAll(); // $ Alert }); } @@ -157,7 +157,7 @@ private static void testUnsafeDeserializationWithObjectMapperTreeToValue() throw JacksonTest.withSocket(string -> { ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(); - mapper.treeToValue(mapper.readTree(string), Cat.class); // $unsafeDeserialization + mapper.treeToValue(mapper.readTree(string), Cat.class); // $ Alert }); } @@ -169,7 +169,7 @@ private static void testUnsafeDeserializationWithUnsafeClass() throws Exception String type = parts[1]; Class clazz = Class.forName(type); ObjectMapper mapper = new ObjectMapper(); - mapper.readValue(data, clazz); // $unsafeDeserialization + mapper.readValue(data, clazz); // $ Alert }); } @@ -180,7 +180,7 @@ private static void testUnsafeDeserializationWithUnsafeClassAndCustomTypeResolve String data = parts[0]; String type = parts[1]; ObjectMapper mapper = new ObjectMapper(); - mapper.readValue(data, resolveImpl(type, mapper)); // $unsafeDeserialization + mapper.readValue(data, resolveImpl(type, mapper)); // $ Alert }); } @@ -195,15 +195,15 @@ class SaferCatDeserialization { // has a validator private static void testUnsafeDeserialization() throws Exception { JacksonTest.withSocket(string -> { - PolymorphicTypeValidator ptv = + PolymorphicTypeValidator ptv = BasicPolymorphicTypeValidator.builder() .allowIfSubType("only.allowed.pachage") .build(); - + ObjectMapper mapper = JsonMapper.builder().polymorphicTypeValidator(ptv).build(); mapper.enableDefaultTyping(); // this enables polymorphic type handling mapper.readValue(string, Cat.class); }); } -} \ No newline at end of file +} diff --git a/java/ql/test/query-tests/security/CWE-502/JoddJsonServlet.java b/java/ql/test/query-tests/security/CWE-502/JoddJsonServlet.java index c10bfbc46b98..caeff0028f20 100644 --- a/java/ql/test/query-tests/security/CWE-502/JoddJsonServlet.java +++ b/java/ql/test/query-tests/security/CWE-502/JoddJsonServlet.java @@ -29,7 +29,7 @@ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOExc // BAD: dangerously configured parser with no class restriction passed to `parse`, // using a few different possible call sequences. public void doHead(HttpServletRequest req, HttpServletResponse resp) throws IOException { - String json = req.getParameter("json"); + String json = req.getParameter("json"); // $ Source String clazz = req.getParameter("class"); int callOrder; try { @@ -42,25 +42,25 @@ public void doHead(HttpServletRequest req, HttpServletResponse resp) throws IOEx JsonParser parser = new JsonParser(); if(callOrder == 0) { parser.setClassMetadataName("class"); - User obj = parser.parse(json, null); // $unsafeDeserialization + User obj = parser.parse(json, null); // $ Alert } else if(callOrder == 1) { - parser.setClassMetadataName("class").parse(json, null); // $unsafeDeserialization + parser.setClassMetadataName("class").parse(json, null); // $ Alert } else if(callOrder == 2) { - parser.setClassMetadataName("class").lazy(true).parse(json, null); // $unsafeDeserialization + parser.setClassMetadataName("class").lazy(true).parse(json, null); // $ Alert } else if(callOrder == 3) { - parser.withClassMetadata(true).lazy(true).parse(json, null); // $unsafeDeserialization + parser.withClassMetadata(true).lazy(true).parse(json, null); // $ Alert } } @Override // BAD: allow class name to be controlled by remote source public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { - String json = req.getParameter("json"); + String json = req.getParameter("json"); // $ Source String clazz = req.getParameter("class"); try { JsonParser parser = new JsonParser(); - Object obj = parser.parse(json, Class.forName(clazz)); // $unsafeDeserialization + Object obj = parser.parse(json, Class.forName(clazz)); // $ Alert } catch (ClassNotFoundException cne) { throw new IOException(cne.getMessage()); } @@ -99,4 +99,4 @@ public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOExc parser.withClassMetadata(true).setClassMetadataName(null).parse(json, null); } } -} \ No newline at end of file +} diff --git a/java/ql/test/query-tests/security/CWE-502/ObjectMessageTest.java b/java/ql/test/query-tests/security/CWE-502/ObjectMessageTest.java index 15da41b93c8a..2ccf7c282c21 100644 --- a/java/ql/test/query-tests/security/CWE-502/ObjectMessageTest.java +++ b/java/ql/test/query-tests/security/CWE-502/ObjectMessageTest.java @@ -3,7 +3,7 @@ import javax.jms.ObjectMessage; public class ObjectMessageTest implements MessageListener { - public void onMessage(Message message) { - ((ObjectMessage) message).getObject(); // $ unsafeDeserialization + public void onMessage(Message message) { // $ Source + ((ObjectMessage) message).getObject(); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-502/ParcelableEntity.java b/java/ql/test/query-tests/security/CWE-502/ParcelableEntity.java index a9cbcabd9d39..33b43ce8d6df 100644 --- a/java/ql/test/query-tests/security/CWE-502/ParcelableEntity.java +++ b/java/ql/test/query-tests/security/CWE-502/ParcelableEntity.java @@ -29,7 +29,7 @@ public void writeToParcel(Parcel parcel, int i) { public ParcelableEntity createFromParcel(Parcel parcel) { try { Class clazz = Class.forName(parcel.readString()); - Object obj = GSON.fromJson(parcel.readString(), clazz); // $unsafeDeserialization + Object obj = GSON.fromJson(parcel.readString(), clazz); // $ Alert return new ParcelableEntity(obj); } catch (ClassNotFoundException e) { diff --git a/java/ql/test/query-tests/security/CWE-502/TestMessageBodyReader.java b/java/ql/test/query-tests/security/CWE-502/TestMessageBodyReader.java index 2132041254da..54cc4f5d6146 100644 --- a/java/ql/test/query-tests/security/CWE-502/TestMessageBodyReader.java +++ b/java/ql/test/query-tests/security/CWE-502/TestMessageBodyReader.java @@ -17,12 +17,12 @@ public boolean isReadable(Class type, Type genericType, Annotation[] annotati @Override public Object readFrom(Class type, Type genericType, Annotation[] annotations, MediaType mediaType, - MultivaluedMap httpHeaders, InputStream entityStream) throws IOException { + MultivaluedMap httpHeaders, InputStream entityStream) throws IOException { // $ Source try { - return new ObjectInputStream(entityStream).readObject(); // $unsafeDeserialization + return new ObjectInputStream(entityStream).readObject(); // $ Alert } catch (ClassNotFoundException e) { e.printStackTrace(); } return null; } -} \ No newline at end of file +} diff --git a/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.expected b/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.expected index e69de29bb2d1..b4064231bec6 100644 --- a/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.expected +++ b/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.expected @@ -0,0 +1,411 @@ +#select +| A.java:16:12:16:26 | readObject(...) | A.java:14:31:14:51 | getInputStream(...) : InputStream | A.java:16:12:16:13 | in | Unsafe deserialization depends on a $@. | A.java:14:31:14:51 | getInputStream(...) | user-provided value | +| A.java:22:12:22:28 | readUnshared(...) | A.java:20:31:20:51 | getInputStream(...) : InputStream | A.java:22:12:22:13 | in | Unsafe deserialization depends on a $@. | A.java:20:31:20:51 | getInputStream(...) | user-provided value | +| A.java:34:12:34:25 | readObject(...) | A.java:32:31:32:51 | getInputStream(...) : InputStream | A.java:34:12:34:12 | d | Unsafe deserialization depends on a $@. | A.java:32:31:32:51 | getInputStream(...) | user-provided value | +| A.java:41:12:41:29 | fromXML(...) | A.java:39:31:39:51 | getInputStream(...) : InputStream | A.java:41:23:41:28 | reader | Unsafe deserialization depends on a $@. | A.java:39:31:39:51 | getInputStream(...) | user-provided value | +| A.java:47:12:47:42 | readObject(...) | A.java:46:29:46:49 | getInputStream(...) : InputStream | A.java:47:28:47:32 | input | Unsafe deserialization depends on a $@. | A.java:46:29:46:49 | getInputStream(...) | user-provided value | +| A.java:48:12:48:48 | readObjectOrNull(...) | A.java:46:29:46:49 | getInputStream(...) : InputStream | A.java:48:34:48:38 | input | Unsafe deserialization depends on a $@. | A.java:46:29:46:49 | getInputStream(...) | user-provided value | +| A.java:49:16:49:45 | readClassAndObject(...) | A.java:46:29:46:49 | getInputStream(...) : InputStream | A.java:49:40:49:44 | input | Unsafe deserialization depends on a $@. | A.java:46:29:46:49 | getInputStream(...) | user-provided value | +| A.java:68:16:68:31 | load(...) | A.java:67:25:67:45 | getInputStream(...) : InputStream | A.java:68:26:68:30 | input | Unsafe deserialization depends on a $@. | A.java:67:25:67:45 | getInputStream(...) | user-provided value | +| A.java:69:17:69:35 | loadAll(...) | A.java:67:25:67:45 | getInputStream(...) : InputStream | A.java:69:30:69:34 | input | Unsafe deserialization depends on a $@. | A.java:67:25:67:45 | getInputStream(...) | user-provided value | +| A.java:70:17:70:56 | parse(...) | A.java:67:25:67:45 | getInputStream(...) : InputStream | A.java:70:28:70:55 | new InputStreamReader(...) | Unsafe deserialization depends on a $@. | A.java:67:25:67:45 | getInputStream(...) | user-provided value | +| A.java:71:12:71:38 | loadAs(...) | A.java:67:25:67:45 | getInputStream(...) : InputStream | A.java:71:24:71:28 | input | Unsafe deserialization depends on a $@. | A.java:67:25:67:45 | getInputStream(...) | user-provided value | +| A.java:72:12:72:61 | loadAs(...) | A.java:67:25:67:45 | getInputStream(...) : InputStream | A.java:72:24:72:51 | new InputStreamReader(...) | Unsafe deserialization depends on a $@. | A.java:67:25:67:45 | getInputStream(...) | user-provided value | +| A.java:78:16:78:31 | load(...) | A.java:77:25:77:45 | getInputStream(...) : InputStream | A.java:78:26:78:30 | input | Unsafe deserialization depends on a $@. | A.java:77:25:77:45 | getInputStream(...) | user-provided value | +| A.java:79:17:79:35 | loadAll(...) | A.java:77:25:77:45 | getInputStream(...) : InputStream | A.java:79:30:79:34 | input | Unsafe deserialization depends on a $@. | A.java:77:25:77:45 | getInputStream(...) | user-provided value | +| A.java:80:17:80:56 | parse(...) | A.java:77:25:77:45 | getInputStream(...) : InputStream | A.java:80:28:80:55 | new InputStreamReader(...) | Unsafe deserialization depends on a $@. | A.java:77:25:77:45 | getInputStream(...) | user-provided value | +| A.java:81:12:81:38 | loadAs(...) | A.java:77:25:77:45 | getInputStream(...) : InputStream | A.java:81:24:81:28 | input | Unsafe deserialization depends on a $@. | A.java:77:25:77:45 | getInputStream(...) | user-provided value | +| A.java:82:12:82:61 | loadAs(...) | A.java:77:25:77:45 | getInputStream(...) : InputStream | A.java:82:24:82:51 | new InputStreamReader(...) | Unsafe deserialization depends on a $@. | A.java:77:25:77:45 | getInputStream(...) | user-provided value | +| A.java:98:16:98:31 | load(...) | A.java:97:25:97:45 | getInputStream(...) : InputStream | A.java:98:26:98:30 | input | Unsafe deserialization depends on a $@. | A.java:97:25:97:45 | getInputStream(...) | user-provided value | +| A.java:99:17:99:35 | loadAll(...) | A.java:97:25:97:45 | getInputStream(...) : InputStream | A.java:99:30:99:34 | input | Unsafe deserialization depends on a $@. | A.java:97:25:97:45 | getInputStream(...) | user-provided value | +| A.java:100:17:100:56 | parse(...) | A.java:97:25:97:45 | getInputStream(...) : InputStream | A.java:100:28:100:55 | new InputStreamReader(...) | Unsafe deserialization depends on a $@. | A.java:97:25:97:45 | getInputStream(...) | user-provided value | +| A.java:101:12:101:38 | loadAs(...) | A.java:97:25:97:45 | getInputStream(...) : InputStream | A.java:101:24:101:28 | input | Unsafe deserialization depends on a $@. | A.java:97:25:97:45 | getInputStream(...) | user-provided value | +| A.java:102:12:102:61 | loadAs(...) | A.java:97:25:97:45 | getInputStream(...) : InputStream | A.java:102:24:102:51 | new InputStreamReader(...) | Unsafe deserialization depends on a $@. | A.java:97:25:97:45 | getInputStream(...) | user-provided value | +| B.java:8:12:8:46 | parseObject(...) | B.java:7:31:7:51 | getInputStream(...) : InputStream | B.java:8:29:8:39 | inputStream | Unsafe deserialization depends on a $@. | B.java:7:31:7:51 | getInputStream(...) | user-provided value | +| B.java:15:12:15:28 | parse(...) | B.java:12:31:12:51 | getInputStream(...) : InputStream | B.java:15:23:15:27 | bytes | Unsafe deserialization depends on a $@. | B.java:12:31:12:51 | getInputStream(...) | user-provided value | +| B.java:23:12:23:30 | parseObject(...) | B.java:19:31:19:51 | getInputStream(...) : InputStream | B.java:23:29:23:29 | s | Unsafe deserialization depends on a $@. | B.java:19:31:19:51 | getInputStream(...) | user-provided value | +| B.java:31:12:31:24 | parse(...) | B.java:27:31:27:51 | getInputStream(...) : InputStream | B.java:31:23:31:23 | s | Unsafe deserialization depends on a $@. | B.java:27:31:27:51 | getInputStream(...) | user-provided value | +| C.java:24:3:24:17 | load(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:24:13:24:16 | data | Unsafe deserialization depends on a $@. | C.java:23:17:23:44 | getParameter(...) | user-provided value | +| C.java:25:3:25:23 | loadStream(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:25:19:25:22 | data | Unsafe deserialization depends on a $@. | C.java:23:17:23:44 | getParameter(...) | user-provided value | +| C.java:26:3:26:43 | loadStreamOfType(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:26:25:26:28 | data | Unsafe deserialization depends on a $@. | C.java:23:17:23:44 | getParameter(...) | user-provided value | +| C.java:27:3:27:35 | loadType(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:27:17:27:20 | data | Unsafe deserialization depends on a $@. | C.java:23:17:23:44 | getParameter(...) | user-provided value | +| C.java:30:3:30:23 | load(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:30:19:30:22 | data | Unsafe deserialization depends on a $@. | C.java:23:17:23:44 | getParameter(...) | user-provided value | +| C.java:31:3:31:29 | loadStream(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:31:25:31:28 | data | Unsafe deserialization depends on a $@. | C.java:23:17:23:44 | getParameter(...) | user-provided value | +| C.java:32:3:32:49 | loadStreamOfType(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:32:31:32:34 | data | Unsafe deserialization depends on a $@. | C.java:23:17:23:44 | getParameter(...) | user-provided value | +| C.java:33:3:33:41 | loadType(...) | C.java:23:17:23:44 | getParameter(...) : String | C.java:33:23:33:26 | data | Unsafe deserialization depends on a $@. | C.java:23:17:23:44 | getParameter(...) | user-provided value | +| C.java:43:3:43:29 | jsonToJava(...) | C.java:38:17:38:44 | getParameter(...) : String | C.java:43:25:43:28 | data | Unsafe deserialization depends on a $@. | C.java:38:17:38:44 | getParameter(...) | user-provided value | +| C.java:46:3:46:17 | readObject(...) | C.java:38:17:38:44 | getParameter(...) : String | C.java:46:3:46:4 | jr | Unsafe deserialization depends on a $@. | C.java:38:17:38:44 | getParameter(...) | user-provided value | +| C.java:53:3:53:10 | read(...) | C.java:51:17:51:44 | getParameter(...) : String | C.java:53:3:53:3 | r | Unsafe deserialization depends on a $@. | C.java:51:17:51:44 | getParameter(...) | user-provided value | +| C.java:54:3:54:22 | read(...) | C.java:51:17:51:44 | getParameter(...) : String | C.java:54:3:54:3 | r | Unsafe deserialization depends on a $@. | C.java:51:17:51:44 | getParameter(...) | user-provided value | +| C.java:55:3:55:36 | read(...) | C.java:51:17:51:44 | getParameter(...) : String | C.java:55:3:55:3 | r | Unsafe deserialization depends on a $@. | C.java:51:17:51:44 | getParameter(...) | user-provided value | +| C.java:63:3:63:27 | readObject(...) | C.java:60:18:60:45 | getParameter(...) : String | C.java:63:3:63:14 | hessianInput | Unsafe deserialization depends on a $@. | C.java:60:18:60:45 | getParameter(...) | user-provided value | +| C.java:64:3:64:39 | readObject(...) | C.java:60:18:60:45 | getParameter(...) : String | C.java:64:3:64:14 | hessianInput | Unsafe deserialization depends on a $@. | C.java:60:18:60:45 | getParameter(...) | user-provided value | +| C.java:72:3:72:27 | readObject(...) | C.java:69:18:69:45 | getParameter(...) : String | C.java:72:3:72:14 | hessianInput | Unsafe deserialization depends on a $@. | C.java:69:18:69:45 | getParameter(...) | user-provided value | +| C.java:73:3:73:39 | readObject(...) | C.java:69:18:69:45 | getParameter(...) : String | C.java:73:3:73:14 | hessianInput | Unsafe deserialization depends on a $@. | C.java:69:18:69:45 | getParameter(...) | user-provided value | +| C.java:79:3:79:72 | unmarshal(...) | C.java:79:43:79:70 | getParameter(...) : String | C.java:79:26:79:71 | new StringReader(...) | Unsafe deserialization depends on a $@. | C.java:79:43:79:70 | getParameter(...) | user-provided value | +| C.java:87:3:87:26 | readObject(...) | C.java:84:27:84:54 | getParameter(...) : String | C.java:87:3:87:13 | burlapInput | Unsafe deserialization depends on a $@. | C.java:84:27:84:54 | getParameter(...) | user-provided value | +| C.java:91:3:91:27 | readObject(...) | C.java:84:27:84:54 | getParameter(...) : String | C.java:91:3:91:14 | burlapInput1 | Unsafe deserialization depends on a $@. | C.java:84:27:84:54 | getParameter(...) | user-provided value | +| FlexjsonServlet.java:36:28:36:68 | deserialize(...) | FlexjsonServlet.java:36:53:36:67 | getReader(...) | FlexjsonServlet.java:36:53:36:67 | getReader(...) | Unsafe deserialization depends on a $@. | FlexjsonServlet.java:36:53:36:67 | getReader(...) | user-provided value | +| FlexjsonServlet.java:44:28:44:68 | deserialize(...) | FlexjsonServlet.java:44:53:44:67 | getReader(...) | FlexjsonServlet.java:44:53:44:67 | getReader(...) | Unsafe deserialization depends on a $@. | FlexjsonServlet.java:44:53:44:67 | getReader(...) | user-provided value | +| FlexjsonServlet.java:52:28:52:82 | deserialize(...) | FlexjsonServlet.java:52:53:52:67 | getReader(...) | FlexjsonServlet.java:52:53:52:67 | getReader(...) | Unsafe deserialization depends on a $@. | FlexjsonServlet.java:52:53:52:67 | getReader(...) | user-provided value | +| FlexjsonServlet.java:68:25:68:131 | deserialize(...) | FlexjsonServlet.java:67:23:67:46 | getParameter(...) : String | FlexjsonServlet.java:68:127:68:130 | json | Unsafe deserialization depends on a $@. | FlexjsonServlet.java:67:23:67:46 | getParameter(...) | user-provided value | +| FlexjsonServlet.java:80:25:80:97 | deserialize(...) | FlexjsonServlet.java:79:23:79:46 | getParameter(...) : String | FlexjsonServlet.java:80:93:80:96 | json | Unsafe deserialization depends on a $@. | FlexjsonServlet.java:79:23:79:46 | getParameter(...) | user-provided value | +| FlexjsonServlet.java:124:25:124:54 | deserialize(...) | FlexjsonServlet.java:119:23:119:46 | getParameter(...) : String | FlexjsonServlet.java:124:50:124:53 | json | Unsafe deserialization depends on a $@. | FlexjsonServlet.java:119:23:119:46 | getParameter(...) | user-provided value | +| GsonServlet.java:44:26:44:66 | fromJson(...) | GsonServlet.java:39:23:39:46 | getParameter(...) : String | GsonServlet.java:44:40:44:43 | json | Unsafe deserialization depends on a $@. | GsonServlet.java:39:23:39:46 | getParameter(...) | user-provided value | +| GsonServlet.java:60:26:60:66 | fromJson(...) | GsonServlet.java:53:23:53:46 | getParameter(...) : String | GsonServlet.java:60:40:60:43 | json | Unsafe deserialization depends on a $@. | GsonServlet.java:53:23:53:46 | getParameter(...) | user-provided value | +| JabsorbServlet.java:102:32:102:93 | unmarshall(...) | JabsorbServlet.java:89:23:89:46 | getParameter(...) : String | JabsorbServlet.java:102:83:102:92 | jsonObject | Unsafe deserialization depends on a $@. | JabsorbServlet.java:89:23:89:46 | getParameter(...) | user-provided value | +| JabsorbServlet.java:116:32:116:56 | fromJSON(...) | JabsorbServlet.java:110:23:110:46 | getParameter(...) : String | JabsorbServlet.java:116:52:116:55 | json | Unsafe deserialization depends on a $@. | JabsorbServlet.java:110:23:110:46 | getParameter(...) | user-provided value | +| JacksonTest.java:76:13:76:50 | readValue(...) | JacksonTest.java:20:25:20:47 | getInputStream(...) : InputStream | JacksonTest.java:76:30:76:35 | string | Unsafe deserialization depends on a $@. | JacksonTest.java:20:25:20:47 | getInputStream(...) | user-provided value | +| JacksonTest.java:85:13:85:52 | readValue(...) | JacksonTest.java:20:25:20:47 | getInputStream(...) : InputStream | JacksonTest.java:85:30:85:35 | string | Unsafe deserialization depends on a $@. | JacksonTest.java:20:25:20:47 | getInputStream(...) | user-provided value | +| JacksonTest.java:94:13:94:48 | readValue(...) | JacksonTest.java:20:25:20:47 | getInputStream(...) : InputStream | JacksonTest.java:94:30:94:35 | string | Unsafe deserialization depends on a $@. | JacksonTest.java:20:25:20:47 | getInputStream(...) | user-provided value | +| JacksonTest.java:142:13:142:47 | readValue(...) | JacksonTest.java:20:25:20:47 | getInputStream(...) : InputStream | JacksonTest.java:142:30:142:35 | string | Unsafe deserialization depends on a $@. | JacksonTest.java:20:25:20:47 | getInputStream(...) | user-provided value | +| JacksonTest.java:151:13:151:80 | readValues(...) | JacksonTest.java:20:25:20:47 | getInputStream(...) : InputStream | JacksonTest.java:151:31:151:68 | createParser(...) | Unsafe deserialization depends on a $@. | JacksonTest.java:20:25:20:47 | getInputStream(...) | user-provided value | +| JacksonTest.java:160:13:160:66 | treeToValue(...) | JacksonTest.java:20:25:20:47 | getInputStream(...) : InputStream | JacksonTest.java:160:32:160:54 | readTree(...) | Unsafe deserialization depends on a $@. | JacksonTest.java:20:25:20:47 | getInputStream(...) | user-provided value | +| JacksonTest.java:172:13:172:41 | readValue(...) | JacksonTest.java:20:25:20:47 | getInputStream(...) : InputStream | JacksonTest.java:172:30:172:33 | data | Unsafe deserialization depends on a $@. | JacksonTest.java:20:25:20:47 | getInputStream(...) | user-provided value | +| JacksonTest.java:183:13:183:61 | readValue(...) | JacksonTest.java:20:25:20:47 | getInputStream(...) : InputStream | JacksonTest.java:183:30:183:33 | data | Unsafe deserialization depends on a $@. | JacksonTest.java:20:25:20:47 | getInputStream(...) | user-provided value | +| JoddJsonServlet.java:45:24:45:47 | parse(...) | JoddJsonServlet.java:32:23:32:46 | getParameter(...) : String | JoddJsonServlet.java:45:37:45:40 | json | Unsafe deserialization depends on a $@. | JoddJsonServlet.java:32:23:32:46 | getParameter(...) | user-provided value | +| JoddJsonServlet.java:47:13:47:66 | parse(...) | JoddJsonServlet.java:32:23:32:46 | getParameter(...) : String | JoddJsonServlet.java:47:56:47:59 | json | Unsafe deserialization depends on a $@. | JoddJsonServlet.java:32:23:32:46 | getParameter(...) | user-provided value | +| JoddJsonServlet.java:49:13:49:77 | parse(...) | JoddJsonServlet.java:32:23:32:46 | getParameter(...) : String | JoddJsonServlet.java:49:67:49:70 | json | Unsafe deserialization depends on a $@. | JoddJsonServlet.java:32:23:32:46 | getParameter(...) | user-provided value | +| JoddJsonServlet.java:51:13:51:71 | parse(...) | JoddJsonServlet.java:32:23:32:46 | getParameter(...) : String | JoddJsonServlet.java:51:61:51:64 | json | Unsafe deserialization depends on a $@. | JoddJsonServlet.java:32:23:32:46 | getParameter(...) | user-provided value | +| JoddJsonServlet.java:63:26:63:65 | parse(...) | JoddJsonServlet.java:58:23:58:46 | getParameter(...) : String | JoddJsonServlet.java:63:39:63:42 | json | Unsafe deserialization depends on a $@. | JoddJsonServlet.java:58:23:58:46 | getParameter(...) | user-provided value | +| ObjectMessageTest.java:7:9:7:45 | getObject(...) | ObjectMessageTest.java:6:27:6:41 | message : Message | ObjectMessageTest.java:7:26:7:32 | message | Unsafe deserialization depends on a $@. | ObjectMessageTest.java:6:27:6:41 | message | user-provided value | +| ParcelableEntity.java:32:30:32:70 | fromJson(...) | GsonActivity.java:15:54:15:64 | getIntent(...) : Intent | ParcelableEntity.java:32:44:32:62 | readString(...) | Unsafe deserialization depends on a $@. | GsonActivity.java:15:54:15:64 | getIntent(...) | user-provided value | +| TestMessageBodyReader.java:22:18:22:65 | readObject(...) | TestMessageBodyReader.java:20:55:20:78 | entityStream : InputStream | TestMessageBodyReader.java:22:18:22:52 | new ObjectInputStream(...) | Unsafe deserialization depends on a $@. | TestMessageBodyReader.java:20:55:20:78 | entityStream | user-provided value | +edges +| A.java:14:31:14:51 | getInputStream(...) : InputStream | A.java:15:50:15:60 | inputStream : InputStream | provenance | Src:MaD:1 | +| A.java:14:31:14:51 | getInputStream(...) : InputStream | A.java:16:12:16:13 | in | provenance | Src:MaD:1 inputStreamWrapper | +| A.java:15:28:15:61 | new ObjectInputStream(...) : ObjectInputStream | A.java:16:12:16:13 | in | provenance | | +| A.java:15:50:15:60 | inputStream : InputStream | A.java:15:28:15:61 | new ObjectInputStream(...) : ObjectInputStream | provenance | MaD:11 | +| A.java:20:31:20:51 | getInputStream(...) : InputStream | A.java:21:50:21:60 | inputStream : InputStream | provenance | Src:MaD:1 | +| A.java:20:31:20:51 | getInputStream(...) : InputStream | A.java:22:12:22:13 | in | provenance | Src:MaD:1 inputStreamWrapper | +| A.java:21:28:21:61 | new ObjectInputStream(...) : ObjectInputStream | A.java:22:12:22:13 | in | provenance | | +| A.java:21:50:21:60 | inputStream : InputStream | A.java:21:28:21:61 | new ObjectInputStream(...) : ObjectInputStream | provenance | MaD:11 | +| A.java:32:31:32:51 | getInputStream(...) : InputStream | A.java:33:35:33:45 | inputStream : InputStream | provenance | Src:MaD:1 | +| A.java:33:20:33:46 | new XMLDecoder(...) : XMLDecoder | A.java:34:12:34:12 | d | provenance | | +| A.java:33:35:33:45 | inputStream : InputStream | A.java:33:20:33:46 | new XMLDecoder(...) : XMLDecoder | provenance | MaD:7 | +| A.java:39:31:39:51 | getInputStream(...) : InputStream | A.java:40:43:40:53 | inputStream : InputStream | provenance | Src:MaD:1 | +| A.java:40:21:40:54 | new InputStreamReader(...) : InputStreamReader | A.java:41:23:41:28 | reader | provenance | | +| A.java:40:43:40:53 | inputStream : InputStream | A.java:40:21:40:54 | new InputStreamReader(...) : InputStreamReader | provenance | MaD:10 | +| A.java:46:19:46:50 | new Input(...) : Input | A.java:47:28:47:32 | input | provenance | | +| A.java:46:19:46:50 | new Input(...) : Input | A.java:48:34:48:38 | input | provenance | | +| A.java:46:19:46:50 | new Input(...) : Input | A.java:49:40:49:44 | input | provenance | | +| A.java:46:29:46:49 | getInputStream(...) : InputStream | A.java:46:19:46:50 | new Input(...) : Input | provenance | Src:MaD:1 MaD:5 | +| A.java:67:25:67:45 | getInputStream(...) : InputStream | A.java:68:26:68:30 | input | provenance | Src:MaD:1 | +| A.java:67:25:67:45 | getInputStream(...) : InputStream | A.java:69:30:69:34 | input | provenance | Src:MaD:1 | +| A.java:67:25:67:45 | getInputStream(...) : InputStream | A.java:70:50:70:54 | input : InputStream | provenance | Src:MaD:1 | +| A.java:67:25:67:45 | getInputStream(...) : InputStream | A.java:71:24:71:28 | input | provenance | Src:MaD:1 | +| A.java:67:25:67:45 | getInputStream(...) : InputStream | A.java:72:46:72:50 | input : InputStream | provenance | Src:MaD:1 | +| A.java:70:50:70:54 | input : InputStream | A.java:70:28:70:55 | new InputStreamReader(...) | provenance | MaD:10 | +| A.java:72:46:72:50 | input : InputStream | A.java:72:24:72:51 | new InputStreamReader(...) | provenance | MaD:10 | +| A.java:77:25:77:45 | getInputStream(...) : InputStream | A.java:78:26:78:30 | input | provenance | Src:MaD:1 | +| A.java:77:25:77:45 | getInputStream(...) : InputStream | A.java:79:30:79:34 | input | provenance | Src:MaD:1 | +| A.java:77:25:77:45 | getInputStream(...) : InputStream | A.java:80:50:80:54 | input : InputStream | provenance | Src:MaD:1 | +| A.java:77:25:77:45 | getInputStream(...) : InputStream | A.java:81:24:81:28 | input | provenance | Src:MaD:1 | +| A.java:77:25:77:45 | getInputStream(...) : InputStream | A.java:82:46:82:50 | input : InputStream | provenance | Src:MaD:1 | +| A.java:80:50:80:54 | input : InputStream | A.java:80:28:80:55 | new InputStreamReader(...) | provenance | MaD:10 | +| A.java:82:46:82:50 | input : InputStream | A.java:82:24:82:51 | new InputStreamReader(...) | provenance | MaD:10 | +| A.java:97:25:97:45 | getInputStream(...) : InputStream | A.java:98:26:98:30 | input | provenance | Src:MaD:1 | +| A.java:97:25:97:45 | getInputStream(...) : InputStream | A.java:99:30:99:34 | input | provenance | Src:MaD:1 | +| A.java:97:25:97:45 | getInputStream(...) : InputStream | A.java:100:50:100:54 | input : InputStream | provenance | Src:MaD:1 | +| A.java:97:25:97:45 | getInputStream(...) : InputStream | A.java:101:24:101:28 | input | provenance | Src:MaD:1 | +| A.java:97:25:97:45 | getInputStream(...) : InputStream | A.java:102:46:102:50 | input : InputStream | provenance | Src:MaD:1 | +| A.java:100:50:100:54 | input : InputStream | A.java:100:28:100:55 | new InputStreamReader(...) | provenance | MaD:10 | +| A.java:102:46:102:50 | input : InputStream | A.java:102:24:102:51 | new InputStreamReader(...) | provenance | MaD:10 | +| B.java:7:31:7:51 | getInputStream(...) : InputStream | B.java:8:29:8:39 | inputStream | provenance | Src:MaD:1 | +| B.java:12:31:12:51 | getInputStream(...) : InputStream | B.java:14:5:14:15 | inputStream : InputStream | provenance | Src:MaD:1 | +| B.java:14:5:14:15 | inputStream : InputStream | B.java:14:22:14:26 | bytes [post update] : byte[] | provenance | MaD:9 | +| B.java:14:22:14:26 | bytes [post update] : byte[] | B.java:15:23:15:27 | bytes | provenance | | +| B.java:19:31:19:51 | getInputStream(...) : InputStream | B.java:21:5:21:15 | inputStream : InputStream | provenance | Src:MaD:1 | +| B.java:21:5:21:15 | inputStream : InputStream | B.java:21:22:21:26 | bytes [post update] : byte[] | provenance | MaD:9 | +| B.java:21:22:21:26 | bytes [post update] : byte[] | B.java:22:27:22:31 | bytes : byte[] | provenance | | +| B.java:22:16:22:32 | new String(...) : String | B.java:23:29:23:29 | s | provenance | | +| B.java:22:27:22:31 | bytes : byte[] | B.java:22:16:22:32 | new String(...) : String | provenance | MaD:13 | +| B.java:27:31:27:51 | getInputStream(...) : InputStream | B.java:29:5:29:15 | inputStream : InputStream | provenance | Src:MaD:1 | +| B.java:29:5:29:15 | inputStream : InputStream | B.java:29:22:29:26 | bytes [post update] : byte[] | provenance | MaD:9 | +| B.java:29:22:29:26 | bytes [post update] : byte[] | B.java:30:27:30:31 | bytes : byte[] | provenance | | +| B.java:30:16:30:32 | new String(...) : String | B.java:31:23:31:23 | s | provenance | | +| B.java:30:27:30:31 | bytes : byte[] | B.java:30:16:30:32 | new String(...) : String | provenance | MaD:13 | +| C.java:23:17:23:44 | getParameter(...) : String | C.java:24:13:24:16 | data | provenance | Src:MaD:3 | +| C.java:23:17:23:44 | getParameter(...) : String | C.java:25:19:25:22 | data | provenance | Src:MaD:3 | +| C.java:23:17:23:44 | getParameter(...) : String | C.java:26:25:26:28 | data | provenance | Src:MaD:3 | +| C.java:23:17:23:44 | getParameter(...) : String | C.java:27:17:27:20 | data | provenance | Src:MaD:3 | +| C.java:23:17:23:44 | getParameter(...) : String | C.java:30:19:30:22 | data | provenance | Src:MaD:3 | +| C.java:23:17:23:44 | getParameter(...) : String | C.java:31:25:31:28 | data | provenance | Src:MaD:3 | +| C.java:23:17:23:44 | getParameter(...) : String | C.java:32:31:32:34 | data | provenance | Src:MaD:3 | +| C.java:23:17:23:44 | getParameter(...) : String | C.java:33:23:33:26 | data | provenance | Src:MaD:3 | +| C.java:38:17:38:44 | getParameter(...) : String | C.java:43:25:43:28 | data | provenance | Src:MaD:3 | +| C.java:38:17:38:44 | getParameter(...) : String | C.java:45:34:45:37 | data : String | provenance | Src:MaD:3 | +| C.java:45:19:45:44 | new JsonReader(...) : JsonReader | C.java:46:3:46:4 | jr | provenance | | +| C.java:45:34:45:37 | data : String | C.java:45:19:45:44 | new JsonReader(...) : JsonReader | provenance | Config | +| C.java:51:17:51:44 | getParameter(...) : String | C.java:52:33:52:36 | data : String | provenance | Src:MaD:3 | +| C.java:52:18:52:37 | new YamlReader(...) : YamlReader | C.java:53:3:53:3 | r | provenance | | +| C.java:52:18:52:37 | new YamlReader(...) : YamlReader | C.java:54:3:54:3 | r | provenance | | +| C.java:52:18:52:37 | new YamlReader(...) : YamlReader | C.java:55:3:55:3 | r | provenance | | +| C.java:52:33:52:36 | data : String | C.java:52:18:52:37 | new YamlReader(...) : YamlReader | provenance | Config | +| C.java:60:18:60:45 | getParameter(...) : String | C.java:60:18:60:56 | getBytes(...) : byte[] | provenance | Src:MaD:3 MaD:14 | +| C.java:60:18:60:56 | getBytes(...) : byte[] | C.java:61:55:61:59 | bytes : byte[] | provenance | | +| C.java:60:18:60:56 | getBytes(...) : byte[] | C.java:62:48:62:50 | bis : ByteArrayInputStream | provenance | inputStreamWrapper | +| C.java:61:30:61:60 | new ByteArrayInputStream(...) : ByteArrayInputStream | C.java:62:48:62:50 | bis : ByteArrayInputStream | provenance | | +| C.java:61:55:61:59 | bytes : byte[] | C.java:61:30:61:60 | new ByteArrayInputStream(...) : ByteArrayInputStream | provenance | MaD:8 | +| C.java:62:31:62:51 | new HessianInput(...) : HessianInput | C.java:63:3:63:14 | hessianInput | provenance | | +| C.java:62:31:62:51 | new HessianInput(...) : HessianInput | C.java:64:3:64:14 | hessianInput | provenance | | +| C.java:62:48:62:50 | bis : ByteArrayInputStream | C.java:62:31:62:51 | new HessianInput(...) : HessianInput | provenance | Config | +| C.java:69:18:69:45 | getParameter(...) : String | C.java:69:18:69:56 | getBytes(...) : byte[] | provenance | Src:MaD:3 MaD:14 | +| C.java:69:18:69:56 | getBytes(...) : byte[] | C.java:70:55:70:59 | bytes : byte[] | provenance | | +| C.java:69:18:69:56 | getBytes(...) : byte[] | C.java:71:50:71:52 | bis : ByteArrayInputStream | provenance | inputStreamWrapper | +| C.java:70:30:70:60 | new ByteArrayInputStream(...) : ByteArrayInputStream | C.java:71:50:71:52 | bis : ByteArrayInputStream | provenance | | +| C.java:70:55:70:59 | bytes : byte[] | C.java:70:30:70:60 | new ByteArrayInputStream(...) : ByteArrayInputStream | provenance | MaD:8 | +| C.java:71:32:71:53 | new Hessian2Input(...) : Hessian2Input | C.java:72:3:72:14 | hessianInput | provenance | | +| C.java:71:32:71:53 | new Hessian2Input(...) : Hessian2Input | C.java:73:3:73:14 | hessianInput | provenance | | +| C.java:71:50:71:52 | bis : ByteArrayInputStream | C.java:71:32:71:53 | new Hessian2Input(...) : Hessian2Input | provenance | Config | +| C.java:79:43:79:70 | getParameter(...) : String | C.java:79:26:79:71 | new StringReader(...) | provenance | Src:MaD:3 MaD:12 | +| C.java:84:27:84:54 | getParameter(...) : String | C.java:84:27:84:65 | getBytes(...) : byte[] | provenance | Src:MaD:3 MaD:14 | +| C.java:84:27:84:65 | getBytes(...) : byte[] | C.java:85:54:85:67 | serializedData : byte[] | provenance | | +| C.java:84:27:84:65 | getBytes(...) : byte[] | C.java:86:45:86:46 | is : ByteArrayInputStream | provenance | inputStreamWrapper | +| C.java:85:29:85:68 | new ByteArrayInputStream(...) : ByteArrayInputStream | C.java:86:45:86:46 | is : ByteArrayInputStream | provenance | | +| C.java:85:54:85:67 | serializedData : byte[] | C.java:85:29:85:68 | new ByteArrayInputStream(...) : ByteArrayInputStream | provenance | MaD:8 | +| C.java:86:29:86:47 | new BurlapInput(...) : BurlapInput | C.java:87:3:87:13 | burlapInput | provenance | | +| C.java:86:45:86:46 | is : ByteArrayInputStream | C.java:86:29:86:47 | new BurlapInput(...) : BurlapInput | provenance | Config | +| C.java:86:45:86:46 | is : ByteArrayInputStream | C.java:90:21:90:22 | is : ByteArrayInputStream | provenance | | +| C.java:90:3:90:14 | burlapInput1 : BurlapInput | C.java:91:3:91:14 | burlapInput1 | provenance | | +| C.java:90:21:90:22 | is : ByteArrayInputStream | C.java:90:3:90:14 | burlapInput1 : BurlapInput | provenance | Config | +| FlexjsonServlet.java:67:23:67:46 | getParameter(...) : String | FlexjsonServlet.java:68:127:68:130 | json | provenance | Src:MaD:3 | +| FlexjsonServlet.java:79:23:79:46 | getParameter(...) : String | FlexjsonServlet.java:80:93:80:96 | json | provenance | Src:MaD:3 | +| FlexjsonServlet.java:119:23:119:46 | getParameter(...) : String | FlexjsonServlet.java:124:50:124:53 | json | provenance | Src:MaD:3 | +| GsonActivity.java:15:54:15:64 | getIntent(...) : Intent | ParcelableEntity.java:29:50:29:62 | parcel : Parcel | provenance | Config | +| GsonServlet.java:39:23:39:46 | getParameter(...) : String | GsonServlet.java:44:40:44:43 | json | provenance | Src:MaD:3 | +| GsonServlet.java:53:23:53:46 | getParameter(...) : String | GsonServlet.java:60:40:60:43 | json | provenance | Src:MaD:3 | +| JabsorbServlet.java:89:23:89:46 | getParameter(...) : String | JabsorbServlet.java:93:48:93:51 | json : String | provenance | Src:MaD:3 | +| JabsorbServlet.java:93:33:93:52 | new JSONObject(...) : JSONObject | JabsorbServlet.java:102:83:102:92 | jsonObject | provenance | | +| JabsorbServlet.java:93:48:93:51 | json : String | JabsorbServlet.java:93:33:93:52 | new JSONObject(...) : JSONObject | provenance | MaD:16 | +| JabsorbServlet.java:110:23:110:46 | getParameter(...) : String | JabsorbServlet.java:116:52:116:55 | json | provenance | Src:MaD:3 | +| JacksonTest.java:20:25:20:47 | getInputStream(...) : InputStream | JacksonTest.java:20:54:20:58 | bytes [post update] : byte[] | provenance | Src:MaD:1 MaD:9 | +| JacksonTest.java:20:54:20:58 | bytes [post update] : byte[] | JacksonTest.java:21:46:21:50 | bytes : byte[] | provenance | | +| JacksonTest.java:21:35:21:57 | new String(...) : String | JacksonTest.java:22:28:22:35 | jexlExpr : String | provenance | | +| JacksonTest.java:21:46:21:50 | bytes : byte[] | JacksonTest.java:21:35:21:57 | new String(...) : String | provenance | MaD:13 | +| JacksonTest.java:22:28:22:35 | jexlExpr : String | JacksonTest.java:74:32:74:37 | string : String | provenance | | +| JacksonTest.java:22:28:22:35 | jexlExpr : String | JacksonTest.java:83:32:83:37 | string : String | provenance | | +| JacksonTest.java:22:28:22:35 | jexlExpr : String | JacksonTest.java:92:32:92:37 | string : String | provenance | | +| JacksonTest.java:22:28:22:35 | jexlExpr : String | JacksonTest.java:139:32:139:37 | string : String | provenance | | +| JacksonTest.java:22:28:22:35 | jexlExpr : String | JacksonTest.java:148:32:148:37 | string : String | provenance | | +| JacksonTest.java:22:28:22:35 | jexlExpr : String | JacksonTest.java:157:32:157:37 | string : String | provenance | | +| JacksonTest.java:22:28:22:35 | jexlExpr : String | JacksonTest.java:166:32:166:36 | input : String | provenance | | +| JacksonTest.java:22:28:22:35 | jexlExpr : String | JacksonTest.java:178:32:178:36 | input : String | provenance | | +| JacksonTest.java:74:32:74:37 | string : String | JacksonTest.java:76:30:76:35 | string | provenance | | +| JacksonTest.java:83:32:83:37 | string : String | JacksonTest.java:85:30:85:35 | string | provenance | | +| JacksonTest.java:92:32:92:37 | string : String | JacksonTest.java:94:30:94:35 | string | provenance | | +| JacksonTest.java:139:32:139:37 | string : String | JacksonTest.java:142:30:142:35 | string | provenance | | +| JacksonTest.java:148:32:148:37 | string : String | JacksonTest.java:151:62:151:67 | string : String | provenance | | +| JacksonTest.java:151:62:151:67 | string : String | JacksonTest.java:151:31:151:68 | createParser(...) | provenance | Config | +| JacksonTest.java:151:62:151:67 | string : String | JacksonTest.java:151:31:151:68 | createParser(...) | provenance | MaD:6 | +| JacksonTest.java:157:32:157:37 | string : String | JacksonTest.java:160:48:160:53 | string : String | provenance | | +| JacksonTest.java:160:48:160:53 | string : String | JacksonTest.java:160:32:160:54 | readTree(...) | provenance | Config | +| JacksonTest.java:166:32:166:36 | input : String | JacksonTest.java:167:30:167:34 | input : String | provenance | | +| JacksonTest.java:167:30:167:34 | input : String | JacksonTest.java:167:30:167:45 | split(...) : String[] | provenance | MaD:15 | +| JacksonTest.java:167:30:167:45 | split(...) : String[] | JacksonTest.java:172:30:172:33 | data | provenance | | +| JacksonTest.java:178:32:178:36 | input : String | JacksonTest.java:179:30:179:34 | input : String | provenance | | +| JacksonTest.java:179:30:179:34 | input : String | JacksonTest.java:179:30:179:45 | split(...) : String[] | provenance | MaD:15 | +| JacksonTest.java:179:30:179:45 | split(...) : String[] | JacksonTest.java:183:30:183:33 | data | provenance | | +| JoddJsonServlet.java:32:23:32:46 | getParameter(...) : String | JoddJsonServlet.java:45:37:45:40 | json | provenance | Src:MaD:3 | +| JoddJsonServlet.java:32:23:32:46 | getParameter(...) : String | JoddJsonServlet.java:47:56:47:59 | json | provenance | Src:MaD:3 | +| JoddJsonServlet.java:32:23:32:46 | getParameter(...) : String | JoddJsonServlet.java:49:67:49:70 | json | provenance | Src:MaD:3 | +| JoddJsonServlet.java:32:23:32:46 | getParameter(...) : String | JoddJsonServlet.java:51:61:51:64 | json | provenance | Src:MaD:3 | +| JoddJsonServlet.java:58:23:58:46 | getParameter(...) : String | JoddJsonServlet.java:63:39:63:42 | json | provenance | Src:MaD:3 | +| ObjectMessageTest.java:6:27:6:41 | message : Message | ObjectMessageTest.java:7:26:7:32 | message | provenance | Src:MaD:2 | +| ParcelableEntity.java:29:50:29:62 | parcel : Parcel | ParcelableEntity.java:32:44:32:49 | parcel : Parcel | provenance | | +| ParcelableEntity.java:32:44:32:49 | parcel : Parcel | ParcelableEntity.java:32:44:32:62 | readString(...) | provenance | MaD:4 | +| TestMessageBodyReader.java:20:55:20:78 | entityStream : InputStream | TestMessageBodyReader.java:22:18:22:52 | new ObjectInputStream(...) | provenance | inputStreamWrapper | +| TestMessageBodyReader.java:20:55:20:78 | entityStream : InputStream | TestMessageBodyReader.java:22:40:22:51 | entityStream : InputStream | provenance | | +| TestMessageBodyReader.java:22:40:22:51 | entityStream : InputStream | TestMessageBodyReader.java:22:18:22:52 | new ObjectInputStream(...) | provenance | MaD:11 | +models +| 1 | Source: java.net; Socket; false; getInputStream; (); ; ReturnValue; remote; manual | +| 2 | Source: javax.jms; MessageListener; true; onMessage; (Message); ; Parameter[0]; remote; manual | +| 3 | Source: javax.servlet; ServletRequest; false; getParameter; (String); ; ReturnValue; remote; manual | +| 4 | Summary: android.os; Parcel; false; readString; ; ; Argument[this]; ReturnValue; taint; manual | +| 5 | Summary: com.esotericsoftware.kryo.io; Input; false; Input; ; ; Argument[0]; Argument[this]; taint; manual | +| 6 | Summary: com.fasterxml.jackson.core; JsonFactory; false; createParser; ; ; Argument[0]; ReturnValue; taint; manual | +| 7 | Summary: java.beans; XMLDecoder; false; XMLDecoder; ; ; Argument[0]; Argument[this]; taint; manual | +| 8 | Summary: java.io; ByteArrayInputStream; false; ByteArrayInputStream; ; ; Argument[0]; Argument[this]; taint; manual | +| 9 | Summary: java.io; InputStream; true; read; (byte[]); ; Argument[this]; Argument[0]; taint; manual | +| 10 | Summary: java.io; InputStreamReader; false; InputStreamReader; ; ; Argument[0]; Argument[this]; taint; manual | +| 11 | Summary: java.io; ObjectInputStream; false; ObjectInputStream; ; ; Argument[0]; Argument[this]; taint; manual | +| 12 | Summary: java.io; StringReader; false; StringReader; ; ; Argument[0]; Argument[this]; taint; manual | +| 13 | Summary: java.lang; String; false; String; ; ; Argument[0]; Argument[this]; taint; manual | +| 14 | Summary: java.lang; String; false; getBytes; ; ; Argument[this]; ReturnValue; taint; manual | +| 15 | Summary: java.lang; String; false; split; ; ; Argument[this]; ReturnValue; taint; manual | +| 16 | Summary: org.json; JSONObject; false; JSONObject; (String); ; Argument[0]; Argument[this]; taint; manual | +nodes +| A.java:14:31:14:51 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| A.java:15:28:15:61 | new ObjectInputStream(...) : ObjectInputStream | semmle.label | new ObjectInputStream(...) : ObjectInputStream | +| A.java:15:50:15:60 | inputStream : InputStream | semmle.label | inputStream : InputStream | +| A.java:16:12:16:13 | in | semmle.label | in | +| A.java:20:31:20:51 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| A.java:21:28:21:61 | new ObjectInputStream(...) : ObjectInputStream | semmle.label | new ObjectInputStream(...) : ObjectInputStream | +| A.java:21:50:21:60 | inputStream : InputStream | semmle.label | inputStream : InputStream | +| A.java:22:12:22:13 | in | semmle.label | in | +| A.java:32:31:32:51 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| A.java:33:20:33:46 | new XMLDecoder(...) : XMLDecoder | semmle.label | new XMLDecoder(...) : XMLDecoder | +| A.java:33:35:33:45 | inputStream : InputStream | semmle.label | inputStream : InputStream | +| A.java:34:12:34:12 | d | semmle.label | d | +| A.java:39:31:39:51 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| A.java:40:21:40:54 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | +| A.java:40:43:40:53 | inputStream : InputStream | semmle.label | inputStream : InputStream | +| A.java:41:23:41:28 | reader | semmle.label | reader | +| A.java:46:19:46:50 | new Input(...) : Input | semmle.label | new Input(...) : Input | +| A.java:46:29:46:49 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| A.java:47:28:47:32 | input | semmle.label | input | +| A.java:48:34:48:38 | input | semmle.label | input | +| A.java:49:40:49:44 | input | semmle.label | input | +| A.java:67:25:67:45 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| A.java:68:26:68:30 | input | semmle.label | input | +| A.java:69:30:69:34 | input | semmle.label | input | +| A.java:70:28:70:55 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| A.java:70:50:70:54 | input : InputStream | semmle.label | input : InputStream | +| A.java:71:24:71:28 | input | semmle.label | input | +| A.java:72:24:72:51 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| A.java:72:46:72:50 | input : InputStream | semmle.label | input : InputStream | +| A.java:77:25:77:45 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| A.java:78:26:78:30 | input | semmle.label | input | +| A.java:79:30:79:34 | input | semmle.label | input | +| A.java:80:28:80:55 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| A.java:80:50:80:54 | input : InputStream | semmle.label | input : InputStream | +| A.java:81:24:81:28 | input | semmle.label | input | +| A.java:82:24:82:51 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| A.java:82:46:82:50 | input : InputStream | semmle.label | input : InputStream | +| A.java:97:25:97:45 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| A.java:98:26:98:30 | input | semmle.label | input | +| A.java:99:30:99:34 | input | semmle.label | input | +| A.java:100:28:100:55 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| A.java:100:50:100:54 | input : InputStream | semmle.label | input : InputStream | +| A.java:101:24:101:28 | input | semmle.label | input | +| A.java:102:24:102:51 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| A.java:102:46:102:50 | input : InputStream | semmle.label | input : InputStream | +| B.java:7:31:7:51 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| B.java:8:29:8:39 | inputStream | semmle.label | inputStream | +| B.java:12:31:12:51 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| B.java:14:5:14:15 | inputStream : InputStream | semmle.label | inputStream : InputStream | +| B.java:14:22:14:26 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| B.java:15:23:15:27 | bytes | semmle.label | bytes | +| B.java:19:31:19:51 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| B.java:21:5:21:15 | inputStream : InputStream | semmle.label | inputStream : InputStream | +| B.java:21:22:21:26 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| B.java:22:16:22:32 | new String(...) : String | semmle.label | new String(...) : String | +| B.java:22:27:22:31 | bytes : byte[] | semmle.label | bytes : byte[] | +| B.java:23:29:23:29 | s | semmle.label | s | +| B.java:27:31:27:51 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| B.java:29:5:29:15 | inputStream : InputStream | semmle.label | inputStream : InputStream | +| B.java:29:22:29:26 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| B.java:30:16:30:32 | new String(...) : String | semmle.label | new String(...) : String | +| B.java:30:27:30:31 | bytes : byte[] | semmle.label | bytes : byte[] | +| B.java:31:23:31:23 | s | semmle.label | s | +| C.java:23:17:23:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| C.java:24:13:24:16 | data | semmle.label | data | +| C.java:25:19:25:22 | data | semmle.label | data | +| C.java:26:25:26:28 | data | semmle.label | data | +| C.java:27:17:27:20 | data | semmle.label | data | +| C.java:30:19:30:22 | data | semmle.label | data | +| C.java:31:25:31:28 | data | semmle.label | data | +| C.java:32:31:32:34 | data | semmle.label | data | +| C.java:33:23:33:26 | data | semmle.label | data | +| C.java:38:17:38:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| C.java:43:25:43:28 | data | semmle.label | data | +| C.java:45:19:45:44 | new JsonReader(...) : JsonReader | semmle.label | new JsonReader(...) : JsonReader | +| C.java:45:34:45:37 | data : String | semmle.label | data : String | +| C.java:46:3:46:4 | jr | semmle.label | jr | +| C.java:51:17:51:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| C.java:52:18:52:37 | new YamlReader(...) : YamlReader | semmle.label | new YamlReader(...) : YamlReader | +| C.java:52:33:52:36 | data : String | semmle.label | data : String | +| C.java:53:3:53:3 | r | semmle.label | r | +| C.java:54:3:54:3 | r | semmle.label | r | +| C.java:55:3:55:3 | r | semmle.label | r | +| C.java:60:18:60:45 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| C.java:60:18:60:56 | getBytes(...) : byte[] | semmle.label | getBytes(...) : byte[] | +| C.java:61:30:61:60 | new ByteArrayInputStream(...) : ByteArrayInputStream | semmle.label | new ByteArrayInputStream(...) : ByteArrayInputStream | +| C.java:61:55:61:59 | bytes : byte[] | semmle.label | bytes : byte[] | +| C.java:62:31:62:51 | new HessianInput(...) : HessianInput | semmle.label | new HessianInput(...) : HessianInput | +| C.java:62:48:62:50 | bis : ByteArrayInputStream | semmle.label | bis : ByteArrayInputStream | +| C.java:63:3:63:14 | hessianInput | semmle.label | hessianInput | +| C.java:64:3:64:14 | hessianInput | semmle.label | hessianInput | +| C.java:69:18:69:45 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| C.java:69:18:69:56 | getBytes(...) : byte[] | semmle.label | getBytes(...) : byte[] | +| C.java:70:30:70:60 | new ByteArrayInputStream(...) : ByteArrayInputStream | semmle.label | new ByteArrayInputStream(...) : ByteArrayInputStream | +| C.java:70:55:70:59 | bytes : byte[] | semmle.label | bytes : byte[] | +| C.java:71:32:71:53 | new Hessian2Input(...) : Hessian2Input | semmle.label | new Hessian2Input(...) : Hessian2Input | +| C.java:71:50:71:52 | bis : ByteArrayInputStream | semmle.label | bis : ByteArrayInputStream | +| C.java:72:3:72:14 | hessianInput | semmle.label | hessianInput | +| C.java:73:3:73:14 | hessianInput | semmle.label | hessianInput | +| C.java:79:26:79:71 | new StringReader(...) | semmle.label | new StringReader(...) | +| C.java:79:43:79:70 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| C.java:84:27:84:54 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| C.java:84:27:84:65 | getBytes(...) : byte[] | semmle.label | getBytes(...) : byte[] | +| C.java:85:29:85:68 | new ByteArrayInputStream(...) : ByteArrayInputStream | semmle.label | new ByteArrayInputStream(...) : ByteArrayInputStream | +| C.java:85:54:85:67 | serializedData : byte[] | semmle.label | serializedData : byte[] | +| C.java:86:29:86:47 | new BurlapInput(...) : BurlapInput | semmle.label | new BurlapInput(...) : BurlapInput | +| C.java:86:45:86:46 | is : ByteArrayInputStream | semmle.label | is : ByteArrayInputStream | +| C.java:87:3:87:13 | burlapInput | semmle.label | burlapInput | +| C.java:90:3:90:14 | burlapInput1 : BurlapInput | semmle.label | burlapInput1 : BurlapInput | +| C.java:90:21:90:22 | is : ByteArrayInputStream | semmle.label | is : ByteArrayInputStream | +| C.java:91:3:91:14 | burlapInput1 | semmle.label | burlapInput1 | +| FlexjsonServlet.java:36:53:36:67 | getReader(...) | semmle.label | getReader(...) | +| FlexjsonServlet.java:44:53:44:67 | getReader(...) | semmle.label | getReader(...) | +| FlexjsonServlet.java:52:53:52:67 | getReader(...) | semmle.label | getReader(...) | +| FlexjsonServlet.java:67:23:67:46 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FlexjsonServlet.java:68:127:68:130 | json | semmle.label | json | +| FlexjsonServlet.java:79:23:79:46 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FlexjsonServlet.java:80:93:80:96 | json | semmle.label | json | +| FlexjsonServlet.java:119:23:119:46 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FlexjsonServlet.java:124:50:124:53 | json | semmle.label | json | +| GsonActivity.java:15:54:15:64 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | +| GsonServlet.java:39:23:39:46 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GsonServlet.java:44:40:44:43 | json | semmle.label | json | +| GsonServlet.java:53:23:53:46 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| GsonServlet.java:60:40:60:43 | json | semmle.label | json | +| JabsorbServlet.java:89:23:89:46 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JabsorbServlet.java:93:33:93:52 | new JSONObject(...) : JSONObject | semmle.label | new JSONObject(...) : JSONObject | +| JabsorbServlet.java:93:48:93:51 | json : String | semmle.label | json : String | +| JabsorbServlet.java:102:83:102:92 | jsonObject | semmle.label | jsonObject | +| JabsorbServlet.java:110:23:110:46 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JabsorbServlet.java:116:52:116:55 | json | semmle.label | json | +| JacksonTest.java:20:25:20:47 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| JacksonTest.java:20:54:20:58 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | +| JacksonTest.java:21:35:21:57 | new String(...) : String | semmle.label | new String(...) : String | +| JacksonTest.java:21:46:21:50 | bytes : byte[] | semmle.label | bytes : byte[] | +| JacksonTest.java:22:28:22:35 | jexlExpr : String | semmle.label | jexlExpr : String | +| JacksonTest.java:74:32:74:37 | string : String | semmle.label | string : String | +| JacksonTest.java:76:30:76:35 | string | semmle.label | string | +| JacksonTest.java:83:32:83:37 | string : String | semmle.label | string : String | +| JacksonTest.java:85:30:85:35 | string | semmle.label | string | +| JacksonTest.java:92:32:92:37 | string : String | semmle.label | string : String | +| JacksonTest.java:94:30:94:35 | string | semmle.label | string | +| JacksonTest.java:139:32:139:37 | string : String | semmle.label | string : String | +| JacksonTest.java:142:30:142:35 | string | semmle.label | string | +| JacksonTest.java:148:32:148:37 | string : String | semmle.label | string : String | +| JacksonTest.java:151:31:151:68 | createParser(...) | semmle.label | createParser(...) | +| JacksonTest.java:151:62:151:67 | string : String | semmle.label | string : String | +| JacksonTest.java:157:32:157:37 | string : String | semmle.label | string : String | +| JacksonTest.java:160:32:160:54 | readTree(...) | semmle.label | readTree(...) | +| JacksonTest.java:160:48:160:53 | string : String | semmle.label | string : String | +| JacksonTest.java:166:32:166:36 | input : String | semmle.label | input : String | +| JacksonTest.java:167:30:167:34 | input : String | semmle.label | input : String | +| JacksonTest.java:167:30:167:45 | split(...) : String[] | semmle.label | split(...) : String[] | +| JacksonTest.java:172:30:172:33 | data | semmle.label | data | +| JacksonTest.java:178:32:178:36 | input : String | semmle.label | input : String | +| JacksonTest.java:179:30:179:34 | input : String | semmle.label | input : String | +| JacksonTest.java:179:30:179:45 | split(...) : String[] | semmle.label | split(...) : String[] | +| JacksonTest.java:183:30:183:33 | data | semmle.label | data | +| JoddJsonServlet.java:32:23:32:46 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JoddJsonServlet.java:45:37:45:40 | json | semmle.label | json | +| JoddJsonServlet.java:47:56:47:59 | json | semmle.label | json | +| JoddJsonServlet.java:49:67:49:70 | json | semmle.label | json | +| JoddJsonServlet.java:51:61:51:64 | json | semmle.label | json | +| JoddJsonServlet.java:58:23:58:46 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JoddJsonServlet.java:63:39:63:42 | json | semmle.label | json | +| ObjectMessageTest.java:6:27:6:41 | message : Message | semmle.label | message : Message | +| ObjectMessageTest.java:7:26:7:32 | message | semmle.label | message | +| ParcelableEntity.java:29:50:29:62 | parcel : Parcel | semmle.label | parcel : Parcel | +| ParcelableEntity.java:32:44:32:49 | parcel : Parcel | semmle.label | parcel : Parcel | +| ParcelableEntity.java:32:44:32:62 | readString(...) | semmle.label | readString(...) | +| TestMessageBodyReader.java:20:55:20:78 | entityStream : InputStream | semmle.label | entityStream : InputStream | +| TestMessageBodyReader.java:22:18:22:52 | new ObjectInputStream(...) | semmle.label | new ObjectInputStream(...) | +| TestMessageBodyReader.java:22:40:22:51 | entityStream : InputStream | semmle.label | entityStream : InputStream | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.ql b/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.ql deleted file mode 100644 index f4570b64ef81..000000000000 --- a/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import semmle.code.java.security.UnsafeDeserializationQuery -import utils.test.InlineExpectationsTest - -module UnsafeDeserializationTest implements TestSig { - string getARelevantTag() { result = "unsafeDeserialization" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "unsafeDeserialization" and - exists(DataFlow::Node sink | UnsafeDeserializationFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.qlref b/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.qlref new file mode 100644 index 000000000000..c0d276968341 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-502/UnsafeDeserialization.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuth/InsecureBasicAuthTest.expected b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuth/InsecureBasicAuthTest.expected new file mode 100644 index 000000000000..228de5b637a3 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuth/InsecureBasicAuthTest.expected @@ -0,0 +1,105 @@ +#select +| InsecureBasicAuthTest.java:28:4:28:7 | post | InsecureBasicAuthTest.java:25:40:25:48 | "http://" : String | InsecureBasicAuthTest.java:28:4:28:7 | post | Insecure basic authentication from a $@. | InsecureBasicAuthTest.java:25:40:25:48 | "http://" | HTTP URL | +| InsecureBasicAuthTest.java:46:4:46:6 | get | InsecureBasicAuthTest.java:43:20:43:65 | "http://www.example.com:8000/payment/retrieve" : String | InsecureBasicAuthTest.java:46:4:46:6 | get | Insecure basic authentication from a $@. | InsecureBasicAuthTest.java:43:20:43:65 | "http://www.example.com:8000/payment/retrieve" | HTTP URL | +| InsecureBasicAuthTest.java:70:4:70:7 | post | InsecureBasicAuthTest.java:66:20:66:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | InsecureBasicAuthTest.java:70:4:70:7 | post | Insecure basic authentication from a $@. | InsecureBasicAuthTest.java:66:20:66:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" | HTTP URL | +| InsecureBasicAuthTest.java:95:4:95:7 | post | InsecureBasicAuthTest.java:90:20:90:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | InsecureBasicAuthTest.java:95:4:95:7 | post | Insecure basic authentication from a $@. | InsecureBasicAuthTest.java:90:20:90:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" | HTTP URL | +| InsecureBasicAuthTest.java:120:4:120:7 | post | InsecureBasicAuthTest.java:117:27:117:32 | "http" : String | InsecureBasicAuthTest.java:120:4:120:7 | post | Insecure basic authentication from a $@. | InsecureBasicAuthTest.java:117:27:117:32 | "http" | HTTP URL | +| InsecureBasicAuthTest.java:143:4:143:7 | post | InsecureBasicAuthTest.java:139:20:139:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | InsecureBasicAuthTest.java:143:4:143:7 | post | Insecure basic authentication from a $@. | InsecureBasicAuthTest.java:139:20:139:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" | HTTP URL | +| InsecureBasicAuthTest.java:167:4:167:7 | post | InsecureBasicAuthTest.java:162:20:162:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | InsecureBasicAuthTest.java:167:4:167:7 | post | Insecure basic authentication from a $@. | InsecureBasicAuthTest.java:162:20:162:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" | HTTP URL | +| InsecureBasicAuthTest.java:192:4:192:7 | conn | InsecureBasicAuthTest.java:187:20:187:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | InsecureBasicAuthTest.java:192:4:192:7 | conn | Insecure basic authentication from a $@. | InsecureBasicAuthTest.java:187:20:187:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" | HTTP URL | +| InsecureBasicAuthTest.java:219:4:219:7 | conn | InsecureBasicAuthTest.java:214:22:214:27 | "http" : String | InsecureBasicAuthTest.java:219:4:219:7 | conn | Insecure basic authentication from a $@. | InsecureBasicAuthTest.java:214:22:214:27 | "http" | HTTP URL | +edges +| InsecureBasicAuthTest.java:25:27:25:87 | new HttpPost(...) : HttpPost | InsecureBasicAuthTest.java:28:4:28:7 | post | provenance | | +| InsecureBasicAuthTest.java:25:40:25:48 | "http://" : String | InsecureBasicAuthTest.java:25:40:25:86 | ... + ... : String | provenance | | +| InsecureBasicAuthTest.java:25:40:25:86 | ... + ... : String | InsecureBasicAuthTest.java:25:27:25:87 | new HttpPost(...) : HttpPost | provenance | Config | +| InsecureBasicAuthTest.java:43:20:43:65 | "http://www.example.com:8000/payment/retrieve" : String | InsecureBasicAuthTest.java:44:30:44:35 | urlStr : String | provenance | | +| InsecureBasicAuthTest.java:44:18:44:36 | new HttpGet(...) : HttpGet | InsecureBasicAuthTest.java:46:4:46:6 | get | provenance | | +| InsecureBasicAuthTest.java:44:30:44:35 | urlStr : String | InsecureBasicAuthTest.java:44:18:44:36 | new HttpGet(...) : HttpGet | provenance | Config | +| InsecureBasicAuthTest.java:66:20:66:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | InsecureBasicAuthTest.java:67:51:67:56 | uriStr : String | provenance | | +| InsecureBasicAuthTest.java:67:27:67:58 | new HttpPost(...) : HttpPost | InsecureBasicAuthTest.java:70:4:70:7 | post | provenance | | +| InsecureBasicAuthTest.java:67:40:67:57 | create(...) : URI | InsecureBasicAuthTest.java:67:27:67:58 | new HttpPost(...) : HttpPost | provenance | Config | +| InsecureBasicAuthTest.java:67:51:67:56 | uriStr : String | InsecureBasicAuthTest.java:67:40:67:57 | create(...) : URI | provenance | MaD:2 | +| InsecureBasicAuthTest.java:90:20:90:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | InsecureBasicAuthTest.java:91:22:91:27 | uriStr : String | provenance | | +| InsecureBasicAuthTest.java:91:14:91:28 | new URI(...) : URI | InsecureBasicAuthTest.java:92:40:92:42 | uri : URI | provenance | | +| InsecureBasicAuthTest.java:91:22:91:27 | uriStr : String | InsecureBasicAuthTest.java:91:14:91:28 | new URI(...) : URI | provenance | Config | +| InsecureBasicAuthTest.java:91:22:91:27 | uriStr : String | InsecureBasicAuthTest.java:91:14:91:28 | new URI(...) : URI | provenance | MaD:1 | +| InsecureBasicAuthTest.java:92:27:92:43 | new HttpPost(...) : HttpPost | InsecureBasicAuthTest.java:95:4:95:7 | post | provenance | | +| InsecureBasicAuthTest.java:92:40:92:42 | uri : URI | InsecureBasicAuthTest.java:92:27:92:43 | new HttpPost(...) : HttpPost | provenance | Config | +| InsecureBasicAuthTest.java:117:6:117:79 | new HttpPost(...) : HttpPost | InsecureBasicAuthTest.java:120:4:120:7 | post | provenance | | +| InsecureBasicAuthTest.java:117:19:117:78 | new URI(...) : URI | InsecureBasicAuthTest.java:117:6:117:79 | new HttpPost(...) : HttpPost | provenance | Config | +| InsecureBasicAuthTest.java:117:27:117:32 | "http" : String | InsecureBasicAuthTest.java:117:19:117:78 | new URI(...) : URI | provenance | Config | +| InsecureBasicAuthTest.java:139:20:139:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | InsecureBasicAuthTest.java:140:57:140:62 | uriStr : String | provenance | | +| InsecureBasicAuthTest.java:140:28:140:63 | new BasicHttpRequest(...) : BasicHttpRequest | InsecureBasicAuthTest.java:143:4:143:7 | post | provenance | | +| InsecureBasicAuthTest.java:140:57:140:62 | uriStr : String | InsecureBasicAuthTest.java:140:28:140:63 | new BasicHttpRequest(...) : BasicHttpRequest | provenance | Config | +| InsecureBasicAuthTest.java:162:20:162:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | InsecureBasicAuthTest.java:163:59:163:64 | uriStr : String | provenance | | +| InsecureBasicAuthTest.java:163:30:163:71 | new BasicRequestLine(...) : BasicRequestLine | InsecureBasicAuthTest.java:164:49:164:59 | requestLine : BasicRequestLine | provenance | | +| InsecureBasicAuthTest.java:163:59:163:64 | uriStr : String | InsecureBasicAuthTest.java:163:30:163:71 | new BasicRequestLine(...) : BasicRequestLine | provenance | MaD:4 | +| InsecureBasicAuthTest.java:164:28:164:60 | new BasicHttpRequest(...) : BasicHttpRequest | InsecureBasicAuthTest.java:167:4:167:7 | post | provenance | | +| InsecureBasicAuthTest.java:164:49:164:59 | requestLine : BasicRequestLine | InsecureBasicAuthTest.java:164:28:164:60 | new BasicHttpRequest(...) : BasicHttpRequest | provenance | Config | +| InsecureBasicAuthTest.java:187:20:187:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | InsecureBasicAuthTest.java:188:22:188:27 | urlStr : String | provenance | | +| InsecureBasicAuthTest.java:188:14:188:28 | new URL(...) : URL | InsecureBasicAuthTest.java:189:49:189:51 | url : URL | provenance | | +| InsecureBasicAuthTest.java:188:22:188:27 | urlStr : String | InsecureBasicAuthTest.java:188:14:188:28 | new URL(...) : URL | provenance | Config | +| InsecureBasicAuthTest.java:188:22:188:27 | urlStr : String | InsecureBasicAuthTest.java:188:14:188:28 | new URL(...) : URL | provenance | MaD:3 | +| InsecureBasicAuthTest.java:189:29:189:68 | (...)... : HttpURLConnection | InsecureBasicAuthTest.java:192:4:192:7 | conn | provenance | | +| InsecureBasicAuthTest.java:189:49:189:51 | url : URL | InsecureBasicAuthTest.java:189:49:189:68 | openConnection(...) : URLConnection | provenance | Config | +| InsecureBasicAuthTest.java:189:49:189:68 | openConnection(...) : URLConnection | InsecureBasicAuthTest.java:189:29:189:68 | (...)... : HttpURLConnection | provenance | | +| InsecureBasicAuthTest.java:214:22:214:27 | "http" : String | InsecureBasicAuthTest.java:215:22:215:29 | protocol : String | provenance | | +| InsecureBasicAuthTest.java:215:14:215:42 | new URL(...) : URL | InsecureBasicAuthTest.java:216:49:216:51 | url : URL | provenance | | +| InsecureBasicAuthTest.java:215:22:215:29 | protocol : String | InsecureBasicAuthTest.java:215:14:215:42 | new URL(...) : URL | provenance | Config | +| InsecureBasicAuthTest.java:216:29:216:68 | (...)... : HttpURLConnection | InsecureBasicAuthTest.java:219:4:219:7 | conn | provenance | | +| InsecureBasicAuthTest.java:216:49:216:51 | url : URL | InsecureBasicAuthTest.java:216:49:216:68 | openConnection(...) : URLConnection | provenance | Config | +| InsecureBasicAuthTest.java:216:49:216:68 | openConnection(...) : URLConnection | InsecureBasicAuthTest.java:216:29:216:68 | (...)... : HttpURLConnection | provenance | | +models +| 1 | Summary: java.net; URI; false; URI; (String); ; Argument[0]; Argument[this]; taint; manual | +| 2 | Summary: java.net; URI; false; create; ; ; Argument[0]; ReturnValue; taint; manual | +| 3 | Summary: java.net; URL; false; URL; (String); ; Argument[0]; Argument[this]; taint; manual | +| 4 | Summary: org.apache.http.message; BasicRequestLine; false; BasicRequestLine; ; ; Argument[1]; Argument[this]; taint; manual | +nodes +| InsecureBasicAuthTest.java:25:27:25:87 | new HttpPost(...) : HttpPost | semmle.label | new HttpPost(...) : HttpPost | +| InsecureBasicAuthTest.java:25:40:25:48 | "http://" : String | semmle.label | "http://" : String | +| InsecureBasicAuthTest.java:25:40:25:86 | ... + ... : String | semmle.label | ... + ... : String | +| InsecureBasicAuthTest.java:28:4:28:7 | post | semmle.label | post | +| InsecureBasicAuthTest.java:43:20:43:65 | "http://www.example.com:8000/payment/retrieve" : String | semmle.label | "http://www.example.com:8000/payment/retrieve" : String | +| InsecureBasicAuthTest.java:44:18:44:36 | new HttpGet(...) : HttpGet | semmle.label | new HttpGet(...) : HttpGet | +| InsecureBasicAuthTest.java:44:30:44:35 | urlStr : String | semmle.label | urlStr : String | +| InsecureBasicAuthTest.java:46:4:46:6 | get | semmle.label | get | +| InsecureBasicAuthTest.java:66:20:66:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | semmle.label | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | +| InsecureBasicAuthTest.java:67:27:67:58 | new HttpPost(...) : HttpPost | semmle.label | new HttpPost(...) : HttpPost | +| InsecureBasicAuthTest.java:67:40:67:57 | create(...) : URI | semmle.label | create(...) : URI | +| InsecureBasicAuthTest.java:67:51:67:56 | uriStr : String | semmle.label | uriStr : String | +| InsecureBasicAuthTest.java:70:4:70:7 | post | semmle.label | post | +| InsecureBasicAuthTest.java:90:20:90:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | semmle.label | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | +| InsecureBasicAuthTest.java:91:14:91:28 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| InsecureBasicAuthTest.java:91:22:91:27 | uriStr : String | semmle.label | uriStr : String | +| InsecureBasicAuthTest.java:92:27:92:43 | new HttpPost(...) : HttpPost | semmle.label | new HttpPost(...) : HttpPost | +| InsecureBasicAuthTest.java:92:40:92:42 | uri : URI | semmle.label | uri : URI | +| InsecureBasicAuthTest.java:95:4:95:7 | post | semmle.label | post | +| InsecureBasicAuthTest.java:117:6:117:79 | new HttpPost(...) : HttpPost | semmle.label | new HttpPost(...) : HttpPost | +| InsecureBasicAuthTest.java:117:19:117:78 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| InsecureBasicAuthTest.java:117:27:117:32 | "http" : String | semmle.label | "http" : String | +| InsecureBasicAuthTest.java:120:4:120:7 | post | semmle.label | post | +| InsecureBasicAuthTest.java:139:20:139:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | semmle.label | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | +| InsecureBasicAuthTest.java:140:28:140:63 | new BasicHttpRequest(...) : BasicHttpRequest | semmle.label | new BasicHttpRequest(...) : BasicHttpRequest | +| InsecureBasicAuthTest.java:140:57:140:62 | uriStr : String | semmle.label | uriStr : String | +| InsecureBasicAuthTest.java:143:4:143:7 | post | semmle.label | post | +| InsecureBasicAuthTest.java:162:20:162:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | semmle.label | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | +| InsecureBasicAuthTest.java:163:30:163:71 | new BasicRequestLine(...) : BasicRequestLine | semmle.label | new BasicRequestLine(...) : BasicRequestLine | +| InsecureBasicAuthTest.java:163:59:163:64 | uriStr : String | semmle.label | uriStr : String | +| InsecureBasicAuthTest.java:164:28:164:60 | new BasicHttpRequest(...) : BasicHttpRequest | semmle.label | new BasicHttpRequest(...) : BasicHttpRequest | +| InsecureBasicAuthTest.java:164:49:164:59 | requestLine : BasicRequestLine | semmle.label | requestLine : BasicRequestLine | +| InsecureBasicAuthTest.java:167:4:167:7 | post | semmle.label | post | +| InsecureBasicAuthTest.java:187:20:187:69 | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | semmle.label | "http://www.example.com/rest/getuser.do?uid=abcdx" : String | +| InsecureBasicAuthTest.java:188:14:188:28 | new URL(...) : URL | semmle.label | new URL(...) : URL | +| InsecureBasicAuthTest.java:188:22:188:27 | urlStr : String | semmle.label | urlStr : String | +| InsecureBasicAuthTest.java:189:29:189:68 | (...)... : HttpURLConnection | semmle.label | (...)... : HttpURLConnection | +| InsecureBasicAuthTest.java:189:49:189:51 | url : URL | semmle.label | url : URL | +| InsecureBasicAuthTest.java:189:49:189:68 | openConnection(...) : URLConnection | semmle.label | openConnection(...) : URLConnection | +| InsecureBasicAuthTest.java:192:4:192:7 | conn | semmle.label | conn | +| InsecureBasicAuthTest.java:214:22:214:27 | "http" : String | semmle.label | "http" : String | +| InsecureBasicAuthTest.java:215:14:215:42 | new URL(...) : URL | semmle.label | new URL(...) : URL | +| InsecureBasicAuthTest.java:215:22:215:29 | protocol : String | semmle.label | protocol : String | +| InsecureBasicAuthTest.java:216:29:216:68 | (...)... : HttpURLConnection | semmle.label | (...)... : HttpURLConnection | +| InsecureBasicAuthTest.java:216:49:216:51 | url : URL | semmle.label | url : URL | +| InsecureBasicAuthTest.java:216:49:216:68 | openConnection(...) : URLConnection | semmle.label | openConnection(...) : URLConnection | +| InsecureBasicAuthTest.java:219:4:219:7 | conn | semmle.label | conn | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.java b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuth/InsecureBasicAuthTest.java similarity index 96% rename from java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.java rename to java/ql/test/query-tests/security/CWE-522/InsecureBasicAuth/InsecureBasicAuthTest.java index 2098dd4139cb..c174c9643de4 100644 --- a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.java +++ b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuth/InsecureBasicAuthTest.java @@ -22,10 +22,10 @@ public void testApacheHttpRequest(String username, String password) { byte[] authEncBytes = Base64.getEncoder().encode(authString.getBytes()); String authStringEnc = new String(authEncBytes); { - HttpRequestBase post = new HttpPost("http://" + host + "/rest/getuser.do?uid=abcdx"); + HttpRequestBase post = new HttpPost("http://" + host + "/rest/getuser.do?uid=abcdx"); // $ Source post.setHeader("Accept", "application/json"); post.setHeader("Content-type", "application/json"); - post.addHeader("Authorization", "Basic " + authStringEnc); // $hasInsecureBasicAuth + post.addHeader("Authorization", "Basic " + authStringEnc); // $ Alert } { HttpRequestBase post = new HttpPost("https://" + host + "/rest/getuser.do?uid=abcdx"); @@ -40,10 +40,10 @@ public void testApacheHttpRequest(String username, String password) { */ public void testApacheHttpRequest2(String url) throws java.io.IOException { { - String urlStr = "http://www.example.com:8000/payment/retrieve"; + String urlStr = "http://www.example.com:8000/payment/retrieve"; // $ Source HttpGet get = new HttpGet(urlStr); get.setHeader("Accept", "application/json"); - get.setHeader("Authorization", // $hasInsecureBasicAuth + get.setHeader("Authorization", // $ Alert "Basic " + new String(Base64.getEncoder().encode("admin:test".getBytes()))); } { @@ -63,11 +63,11 @@ public void testApacheHttpRequest3(String username, String password) { byte[] authEncBytes = Base64.getEncoder().encode(authString.getBytes()); String authStringEnc = new String(authEncBytes); { - String uriStr = "http://www.example.com/rest/getuser.do?uid=abcdx"; + String uriStr = "http://www.example.com/rest/getuser.do?uid=abcdx"; // $ Source HttpRequestBase post = new HttpPost(URI.create(uriStr)); post.setHeader("Accept", "application/json"); post.setHeader("Content-type", "application/json"); - post.addHeader("Authorization", "Basic " + authStringEnc); // $hasInsecureBasicAuth + post.addHeader("Authorization", "Basic " + authStringEnc); // $ Alert } { String uriStr = "https://www.example.com/rest/getuser.do?uid=abcdx"; @@ -87,12 +87,12 @@ public void testApacheHttpRequest4(String username, String password) throws Exce byte[] authEncBytes = Base64.getEncoder().encode(authString.getBytes()); String authStringEnc = new String(authEncBytes); { - String uriStr = "http://www.example.com/rest/getuser.do?uid=abcdx"; + String uriStr = "http://www.example.com/rest/getuser.do?uid=abcdx"; // $ Source URI uri = new URI(uriStr); HttpRequestBase post = new HttpPost(uri); post.setHeader("Accept", "application/json"); post.setHeader("Content-type", "application/json"); - post.addHeader("Authorization", "Basic " + authStringEnc); // $hasInsecureBasicAuth + post.addHeader("Authorization", "Basic " + authStringEnc); // $ Alert } { String uriStr = "https://www.example.com/rest/getuser.do?uid=abcdx"; @@ -114,10 +114,10 @@ public void testApacheHttpRequest5(String username, String password) throws Exce String authStringEnc = new String(authEncBytes); { HttpRequestBase post = - new HttpPost(new URI("http", "www.example.com", "/test", "abc=123", null)); + new HttpPost(new URI("http", "www.example.com", "/test", "abc=123", null)); // $ Source post.setHeader("Accept", "application/json"); post.setHeader("Content-type", "application/json"); - post.addHeader("Authorization", "Basic " + authStringEnc); // $hasInsecureBasicAuth + post.addHeader("Authorization", "Basic " + authStringEnc); // $ Alert } { HttpRequestBase post = @@ -136,11 +136,11 @@ public void testApacheHttpRequest6(String username, String password) { byte[] authEncBytes = Base64.getEncoder().encode(authString.getBytes()); String authStringEnc = new String(authEncBytes); { - String uriStr = "http://www.example.com/rest/getuser.do?uid=abcdx"; + String uriStr = "http://www.example.com/rest/getuser.do?uid=abcdx"; // $ Source BasicHttpRequest post = new BasicHttpRequest("POST", uriStr); post.setHeader("Accept", "application/json"); post.setHeader("Content-type", "application/json"); - post.addHeader("Authorization", "Basic " + authStringEnc); // $hasInsecureBasicAuth + post.addHeader("Authorization", "Basic " + authStringEnc); // $ Alert } { String uriStr = "https://www.example.com/rest/getuser.do?uid=abcdx"; @@ -159,12 +159,12 @@ public void testApacheHttpRequest7(String username, String password) { byte[] authEncBytes = Base64.getEncoder().encode(authString.getBytes()); String authStringEnc = new String(authEncBytes); { - String uriStr = "http://www.example.com/rest/getuser.do?uid=abcdx"; + String uriStr = "http://www.example.com/rest/getuser.do?uid=abcdx"; // $ Source RequestLine requestLine = new BasicRequestLine("POST", uriStr, null); BasicHttpRequest post = new BasicHttpRequest(requestLine); post.setHeader("Accept", "application/json"); post.setHeader("Content-type", "application/json"); - post.addHeader("Authorization", "Basic " + authStringEnc); // $hasInsecureBasicAuth + post.addHeader("Authorization", "Basic " + authStringEnc); // $ Alert } { String uriStr = "https://www.example.com/rest/getuser.do?uid=abcdx"; @@ -184,12 +184,12 @@ public void testHttpUrlConnection(String username, String password) throws Excep String authString = username + ":" + password; String encoding = Base64.getEncoder().encodeToString(authString.getBytes("UTF-8")); { - String urlStr = "http://www.example.com/rest/getuser.do?uid=abcdx"; + String urlStr = "http://www.example.com/rest/getuser.do?uid=abcdx"; // $ Source URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); - conn.setRequestProperty("Authorization", "Basic " + encoding); // $hasInsecureBasicAuth + conn.setRequestProperty("Authorization", "Basic " + encoding); // $ Alert } { String urlStr = "https://www.example.com/rest/getuser.do?uid=abcdx"; @@ -211,12 +211,12 @@ public void testHttpUrlConnection2(String username, String password) throws Exce String host = "www.example.com"; String path = "/rest/getuser.do?uid=abcdx"; { - String protocol = "http"; + String protocol = "http"; // $ Source URL url = new URL(protocol, host, path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); - conn.setRequestProperty("Authorization", "Basic " + encoding); // $hasInsecureBasicAuth + conn.setRequestProperty("Authorization", "Basic " + encoding); // $ Alert } { String protocol = "https"; diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuth/InsecureBasicAuthTest.qlref b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuth/InsecureBasicAuthTest.qlref new file mode 100644 index 000000000000..053e0f22a26b --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuth/InsecureBasicAuthTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-522/InsecureBasicAuth.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuth/options b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuth/options new file mode 100644 index 000000000000..7eaf4cb235f4 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuth/options @@ -0,0 +1 @@ +// semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/apache-http-4.4.13 diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.expected b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.ql b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.ql deleted file mode 100644 index d3e99009eeec..000000000000 --- a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import semmle.code.java.security.InsecureBasicAuthQuery -import utils.test.InlineExpectationsTest - -module HasInsecureBasicAuthTest implements TestSig { - string getARelevantTag() { result = "hasInsecureBasicAuth" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasInsecureBasicAuth" and - exists(DataFlow::Node sink | InsecureBasicAuthFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth.java b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth/InsecureLdapAuth.java similarity index 94% rename from java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth.java rename to java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth/InsecureLdapAuth.java index d769258a6119..1ed8a7f35899 100644 --- a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth.java +++ b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth/InsecureLdapAuth.java @@ -8,7 +8,7 @@ public class InsecureLdapAuth { // BAD - Test LDAP authentication in cleartext using `DirContext`. public void testCleartextLdapAuth(String ldapUserName, String password) throws Exception { - String ldapUrl = "ldap://ad.your-server.com:389"; + String ldapUrl = "ldap://ad.your-server.com:389"; // $ Source Hashtable environment = new Hashtable(); environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); @@ -17,12 +17,12 @@ public void testCleartextLdapAuth(String ldapUserName, String password) throws E environment.put(Context.SECURITY_AUTHENTICATION, "simple"); environment.put(Context.SECURITY_PRINCIPAL, ldapUserName); environment.put(Context.SECURITY_CREDENTIALS, password); - DirContext dirContext = new InitialDirContext(environment); // $ hasInsecureLdapAuth + DirContext dirContext = new InitialDirContext(environment); // $ Alert } // BAD - Test LDAP authentication in cleartext using `DirContext`. public void testCleartextLdapAuth(String ldapUserName, String password, String serverName) throws Exception { - String ldapUrl = "ldap://"+serverName+":389"; + String ldapUrl = "ldap://"+serverName+":389"; // $ Source Hashtable environment = new Hashtable(); environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); @@ -31,7 +31,7 @@ public void testCleartextLdapAuth(String ldapUserName, String password, String s environment.put(Context.SECURITY_AUTHENTICATION, "simple"); environment.put(Context.SECURITY_PRINCIPAL, ldapUserName); environment.put(Context.SECURITY_CREDENTIALS, password); - DirContext dirContext = new InitialDirContext(environment); // $ hasInsecureLdapAuth + DirContext dirContext = new InitialDirContext(environment); // $ Alert } // GOOD - Test LDAP authentication over SSL. @@ -93,7 +93,7 @@ public void testCleartextLdapAuth2(String ldapUserName, String password) throws // BAD - Test LDAP authentication in cleartext using `InitialLdapContext`. public void testCleartextLdapAuth3(String ldapUserName, String password) throws Exception { - String ldapUrl = "ldap://ad.your-server.com:389"; + String ldapUrl = "ldap://ad.your-server.com:389"; // $ Source Hashtable environment = new Hashtable(); environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); @@ -102,13 +102,13 @@ public void testCleartextLdapAuth3(String ldapUserName, String password) throws environment.put(Context.SECURITY_AUTHENTICATION, "simple"); environment.put(Context.SECURITY_PRINCIPAL, ldapUserName); environment.put(Context.SECURITY_CREDENTIALS, password); - InitialLdapContext ldapContext = new InitialLdapContext(environment, null); // $ hasInsecureLdapAuth + InitialLdapContext ldapContext = new InitialLdapContext(environment, null); // $ Alert } // BAD - Test LDAP authentication in cleartext using `DirContext` and string literals. public void testCleartextLdapAuth4(String ldapUserName, String password) throws Exception { - String ldapUrl = "ldap://ad.your-server.com:389"; + String ldapUrl = "ldap://ad.your-server.com:389"; // $ Source Hashtable environment = new Hashtable(); environment.put("java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory"); @@ -117,7 +117,7 @@ public void testCleartextLdapAuth4(String ldapUserName, String password) throws environment.put("java.naming.security.authentication", "simple"); environment.put("java.naming.security.principal", ldapUserName); environment.put("java.naming.security.credentials", password); - DirContext dirContext = new InitialDirContext(environment); // $ hasInsecureLdapAuth + DirContext dirContext = new InitialDirContext(environment); // $ Alert } private void setSSL(Hashtable env) { @@ -144,12 +144,12 @@ public void testCleartextLdapAuth5(String ldapUserName, String password, String // BAD - Test LDAP authentication with basic authentication. public void testCleartextLdapAuth6(String ldapUserName, String password, String serverName) throws Exception { - String ldapUrl = "ldap://"+serverName+":389"; + String ldapUrl = "ldap://"+serverName+":389"; // $ Source Hashtable environment = new Hashtable(); environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); environment.put(Context.PROVIDER_URL, ldapUrl); setBasicAuth(environment, ldapUserName, password); - DirContext dirContext = new InitialLdapContext(environment, null); // $ hasInsecureLdapAuth + DirContext dirContext = new InitialLdapContext(environment, null); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth/InsecureLdapAuthTest.expected b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth/InsecureLdapAuthTest.expected new file mode 100644 index 000000000000..5df9a4f5c956 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth/InsecureLdapAuthTest.expected @@ -0,0 +1,100 @@ +#select +| InsecureLdapAuth.java:20:49:20:59 | environment | InsecureLdapAuth.java:11:20:11:50 | "ldap://ad.your-server.com:389" : String | InsecureLdapAuth.java:20:49:20:59 | environment | Insecure LDAP authentication from $@. | InsecureLdapAuth.java:11:20:11:50 | "ldap://ad.your-server.com:389" | LDAP connection string | +| InsecureLdapAuth.java:34:49:34:59 | environment | InsecureLdapAuth.java:25:20:25:39 | ... + ... : String | InsecureLdapAuth.java:34:49:34:59 | environment | Insecure LDAP authentication from $@. | InsecureLdapAuth.java:25:20:25:39 | ... + ... | LDAP connection string | +| InsecureLdapAuth.java:105:59:105:69 | environment | InsecureLdapAuth.java:96:20:96:50 | "ldap://ad.your-server.com:389" : String | InsecureLdapAuth.java:105:59:105:69 | environment | Insecure LDAP authentication from $@. | InsecureLdapAuth.java:96:20:96:50 | "ldap://ad.your-server.com:389" | LDAP connection string | +| InsecureLdapAuth.java:120:49:120:59 | environment | InsecureLdapAuth.java:111:20:111:50 | "ldap://ad.your-server.com:389" : String | InsecureLdapAuth.java:120:49:120:59 | environment | Insecure LDAP authentication from $@. | InsecureLdapAuth.java:111:20:111:50 | "ldap://ad.your-server.com:389" | LDAP connection string | +| InsecureLdapAuth.java:153:50:153:60 | environment | InsecureLdapAuth.java:147:20:147:39 | ... + ... : String | InsecureLdapAuth.java:153:50:153:60 | environment | Insecure LDAP authentication from $@. | InsecureLdapAuth.java:147:20:147:39 | ... + ... | LDAP connection string | +edges +| InsecureLdapAuth.java:11:20:11:50 | "ldap://ad.your-server.com:389" : String | InsecureLdapAuth.java:15:41:15:47 | ldapUrl : String | provenance | | +| InsecureLdapAuth.java:15:3:15:13 | environment : Hashtable | InsecureLdapAuth.java:20:49:20:59 | environment | provenance | | +| InsecureLdapAuth.java:15:3:15:13 | environment [post update] : Hashtable [] : String | InsecureLdapAuth.java:20:49:20:59 | environment | provenance | | +| InsecureLdapAuth.java:15:41:15:47 | ldapUrl : String | InsecureLdapAuth.java:15:3:15:13 | environment : Hashtable | provenance | Config | +| InsecureLdapAuth.java:15:41:15:47 | ldapUrl : String | InsecureLdapAuth.java:15:3:15:13 | environment [post update] : Hashtable [] : String | provenance | MaD:1 | +| InsecureLdapAuth.java:15:41:15:47 | ldapUrl : String | InsecureLdapAuth.java:15:3:15:13 | environment [post update] : Hashtable [] : String | provenance | MaD:2 | +| InsecureLdapAuth.java:25:20:25:39 | ... + ... : String | InsecureLdapAuth.java:29:41:29:47 | ldapUrl : String | provenance | | +| InsecureLdapAuth.java:29:3:29:13 | environment : Hashtable | InsecureLdapAuth.java:34:49:34:59 | environment | provenance | | +| InsecureLdapAuth.java:29:3:29:13 | environment [post update] : Hashtable [] : String | InsecureLdapAuth.java:34:49:34:59 | environment | provenance | | +| InsecureLdapAuth.java:29:41:29:47 | ldapUrl : String | InsecureLdapAuth.java:29:3:29:13 | environment : Hashtable | provenance | Config | +| InsecureLdapAuth.java:29:41:29:47 | ldapUrl : String | InsecureLdapAuth.java:29:3:29:13 | environment [post update] : Hashtable [] : String | provenance | MaD:1 | +| InsecureLdapAuth.java:29:41:29:47 | ldapUrl : String | InsecureLdapAuth.java:29:3:29:13 | environment [post update] : Hashtable [] : String | provenance | MaD:2 | +| InsecureLdapAuth.java:53:20:53:50 | "ldap://ad.your-server.com:636" : String | InsecureLdapAuth.java:57:41:57:47 | ldapUrl : String | provenance | | +| InsecureLdapAuth.java:57:3:57:13 | environment : Hashtable | InsecureLdapAuth.java:63:49:63:59 | environment | provenance | | +| InsecureLdapAuth.java:57:3:57:13 | environment [post update] : Hashtable [] : String | InsecureLdapAuth.java:63:49:63:59 | environment | provenance | | +| InsecureLdapAuth.java:57:41:57:47 | ldapUrl : String | InsecureLdapAuth.java:57:3:57:13 | environment : Hashtable | provenance | Config | +| InsecureLdapAuth.java:57:41:57:47 | ldapUrl : String | InsecureLdapAuth.java:57:3:57:13 | environment [post update] : Hashtable [] : String | provenance | MaD:1 | +| InsecureLdapAuth.java:57:41:57:47 | ldapUrl : String | InsecureLdapAuth.java:57:3:57:13 | environment [post update] : Hashtable [] : String | provenance | MaD:2 | +| InsecureLdapAuth.java:68:20:68:50 | "ldap://ad.your-server.com:389" : String | InsecureLdapAuth.java:72:41:72:47 | ldapUrl : String | provenance | | +| InsecureLdapAuth.java:72:3:72:13 | environment : Hashtable | InsecureLdapAuth.java:77:49:77:59 | environment | provenance | | +| InsecureLdapAuth.java:72:3:72:13 | environment [post update] : Hashtable [] : String | InsecureLdapAuth.java:77:49:77:59 | environment | provenance | | +| InsecureLdapAuth.java:72:41:72:47 | ldapUrl : String | InsecureLdapAuth.java:72:3:72:13 | environment : Hashtable | provenance | Config | +| InsecureLdapAuth.java:72:41:72:47 | ldapUrl : String | InsecureLdapAuth.java:72:3:72:13 | environment [post update] : Hashtable [] : String | provenance | MaD:1 | +| InsecureLdapAuth.java:72:41:72:47 | ldapUrl : String | InsecureLdapAuth.java:72:3:72:13 | environment [post update] : Hashtable [] : String | provenance | MaD:2 | +| InsecureLdapAuth.java:96:20:96:50 | "ldap://ad.your-server.com:389" : String | InsecureLdapAuth.java:100:41:100:47 | ldapUrl : String | provenance | | +| InsecureLdapAuth.java:100:3:100:13 | environment : Hashtable | InsecureLdapAuth.java:105:59:105:69 | environment | provenance | | +| InsecureLdapAuth.java:100:3:100:13 | environment [post update] : Hashtable [] : String | InsecureLdapAuth.java:105:59:105:69 | environment | provenance | | +| InsecureLdapAuth.java:100:41:100:47 | ldapUrl : String | InsecureLdapAuth.java:100:3:100:13 | environment : Hashtable | provenance | Config | +| InsecureLdapAuth.java:100:41:100:47 | ldapUrl : String | InsecureLdapAuth.java:100:3:100:13 | environment [post update] : Hashtable [] : String | provenance | MaD:1 | +| InsecureLdapAuth.java:100:41:100:47 | ldapUrl : String | InsecureLdapAuth.java:100:3:100:13 | environment [post update] : Hashtable [] : String | provenance | MaD:2 | +| InsecureLdapAuth.java:111:20:111:50 | "ldap://ad.your-server.com:389" : String | InsecureLdapAuth.java:115:47:115:53 | ldapUrl : String | provenance | | +| InsecureLdapAuth.java:115:3:115:13 | environment : Hashtable | InsecureLdapAuth.java:120:49:120:59 | environment | provenance | | +| InsecureLdapAuth.java:115:3:115:13 | environment [post update] : Hashtable [] : String | InsecureLdapAuth.java:120:49:120:59 | environment | provenance | | +| InsecureLdapAuth.java:115:47:115:53 | ldapUrl : String | InsecureLdapAuth.java:115:3:115:13 | environment : Hashtable | provenance | Config | +| InsecureLdapAuth.java:115:47:115:53 | ldapUrl : String | InsecureLdapAuth.java:115:3:115:13 | environment [post update] : Hashtable [] : String | provenance | MaD:1 | +| InsecureLdapAuth.java:115:47:115:53 | ldapUrl : String | InsecureLdapAuth.java:115:3:115:13 | environment [post update] : Hashtable [] : String | provenance | MaD:2 | +| InsecureLdapAuth.java:135:20:135:39 | ... + ... : String | InsecureLdapAuth.java:140:41:140:47 | ldapUrl : String | provenance | | +| InsecureLdapAuth.java:140:3:140:13 | environment : Hashtable | InsecureLdapAuth.java:142:50:142:60 | environment | provenance | | +| InsecureLdapAuth.java:140:3:140:13 | environment [post update] : Hashtable [] : String | InsecureLdapAuth.java:142:50:142:60 | environment | provenance | | +| InsecureLdapAuth.java:140:41:140:47 | ldapUrl : String | InsecureLdapAuth.java:140:3:140:13 | environment : Hashtable | provenance | Config | +| InsecureLdapAuth.java:140:41:140:47 | ldapUrl : String | InsecureLdapAuth.java:140:3:140:13 | environment [post update] : Hashtable [] : String | provenance | MaD:1 | +| InsecureLdapAuth.java:140:41:140:47 | ldapUrl : String | InsecureLdapAuth.java:140:3:140:13 | environment [post update] : Hashtable [] : String | provenance | MaD:2 | +| InsecureLdapAuth.java:147:20:147:39 | ... + ... : String | InsecureLdapAuth.java:151:41:151:47 | ldapUrl : String | provenance | | +| InsecureLdapAuth.java:151:3:151:13 | environment : Hashtable | InsecureLdapAuth.java:153:50:153:60 | environment | provenance | | +| InsecureLdapAuth.java:151:3:151:13 | environment [post update] : Hashtable [] : String | InsecureLdapAuth.java:153:50:153:60 | environment | provenance | | +| InsecureLdapAuth.java:151:41:151:47 | ldapUrl : String | InsecureLdapAuth.java:151:3:151:13 | environment : Hashtable | provenance | Config | +| InsecureLdapAuth.java:151:41:151:47 | ldapUrl : String | InsecureLdapAuth.java:151:3:151:13 | environment [post update] : Hashtable [] : String | provenance | MaD:1 | +| InsecureLdapAuth.java:151:41:151:47 | ldapUrl : String | InsecureLdapAuth.java:151:3:151:13 | environment [post update] : Hashtable [] : String | provenance | MaD:2 | +models +| 1 | Summary: java.util; Dictionary; true; put; (Object,Object); ; Argument[1]; Argument[this].MapValue; value; manual | +| 2 | Summary: java.util; Map; true; put; (Object,Object); ; Argument[1]; Argument[this].MapValue; value; manual | +nodes +| InsecureLdapAuth.java:11:20:11:50 | "ldap://ad.your-server.com:389" : String | semmle.label | "ldap://ad.your-server.com:389" : String | +| InsecureLdapAuth.java:15:3:15:13 | environment : Hashtable | semmle.label | environment : Hashtable | +| InsecureLdapAuth.java:15:3:15:13 | environment [post update] : Hashtable [] : String | semmle.label | environment [post update] : Hashtable [] : String | +| InsecureLdapAuth.java:15:41:15:47 | ldapUrl : String | semmle.label | ldapUrl : String | +| InsecureLdapAuth.java:20:49:20:59 | environment | semmle.label | environment | +| InsecureLdapAuth.java:25:20:25:39 | ... + ... : String | semmle.label | ... + ... : String | +| InsecureLdapAuth.java:29:3:29:13 | environment : Hashtable | semmle.label | environment : Hashtable | +| InsecureLdapAuth.java:29:3:29:13 | environment [post update] : Hashtable [] : String | semmle.label | environment [post update] : Hashtable [] : String | +| InsecureLdapAuth.java:29:41:29:47 | ldapUrl : String | semmle.label | ldapUrl : String | +| InsecureLdapAuth.java:34:49:34:59 | environment | semmle.label | environment | +| InsecureLdapAuth.java:53:20:53:50 | "ldap://ad.your-server.com:636" : String | semmle.label | "ldap://ad.your-server.com:636" : String | +| InsecureLdapAuth.java:57:3:57:13 | environment : Hashtable | semmle.label | environment : Hashtable | +| InsecureLdapAuth.java:57:3:57:13 | environment [post update] : Hashtable [] : String | semmle.label | environment [post update] : Hashtable [] : String | +| InsecureLdapAuth.java:57:41:57:47 | ldapUrl : String | semmle.label | ldapUrl : String | +| InsecureLdapAuth.java:63:49:63:59 | environment | semmle.label | environment | +| InsecureLdapAuth.java:68:20:68:50 | "ldap://ad.your-server.com:389" : String | semmle.label | "ldap://ad.your-server.com:389" : String | +| InsecureLdapAuth.java:72:3:72:13 | environment : Hashtable | semmle.label | environment : Hashtable | +| InsecureLdapAuth.java:72:3:72:13 | environment [post update] : Hashtable [] : String | semmle.label | environment [post update] : Hashtable [] : String | +| InsecureLdapAuth.java:72:41:72:47 | ldapUrl : String | semmle.label | ldapUrl : String | +| InsecureLdapAuth.java:77:49:77:59 | environment | semmle.label | environment | +| InsecureLdapAuth.java:96:20:96:50 | "ldap://ad.your-server.com:389" : String | semmle.label | "ldap://ad.your-server.com:389" : String | +| InsecureLdapAuth.java:100:3:100:13 | environment : Hashtable | semmle.label | environment : Hashtable | +| InsecureLdapAuth.java:100:3:100:13 | environment [post update] : Hashtable [] : String | semmle.label | environment [post update] : Hashtable [] : String | +| InsecureLdapAuth.java:100:41:100:47 | ldapUrl : String | semmle.label | ldapUrl : String | +| InsecureLdapAuth.java:105:59:105:69 | environment | semmle.label | environment | +| InsecureLdapAuth.java:111:20:111:50 | "ldap://ad.your-server.com:389" : String | semmle.label | "ldap://ad.your-server.com:389" : String | +| InsecureLdapAuth.java:115:3:115:13 | environment : Hashtable | semmle.label | environment : Hashtable | +| InsecureLdapAuth.java:115:3:115:13 | environment [post update] : Hashtable [] : String | semmle.label | environment [post update] : Hashtable [] : String | +| InsecureLdapAuth.java:115:47:115:53 | ldapUrl : String | semmle.label | ldapUrl : String | +| InsecureLdapAuth.java:120:49:120:59 | environment | semmle.label | environment | +| InsecureLdapAuth.java:135:20:135:39 | ... + ... : String | semmle.label | ... + ... : String | +| InsecureLdapAuth.java:140:3:140:13 | environment : Hashtable | semmle.label | environment : Hashtable | +| InsecureLdapAuth.java:140:3:140:13 | environment [post update] : Hashtable [] : String | semmle.label | environment [post update] : Hashtable [] : String | +| InsecureLdapAuth.java:140:41:140:47 | ldapUrl : String | semmle.label | ldapUrl : String | +| InsecureLdapAuth.java:142:50:142:60 | environment | semmle.label | environment | +| InsecureLdapAuth.java:147:20:147:39 | ... + ... : String | semmle.label | ... + ... : String | +| InsecureLdapAuth.java:151:3:151:13 | environment : Hashtable | semmle.label | environment : Hashtable | +| InsecureLdapAuth.java:151:3:151:13 | environment [post update] : Hashtable [] : String | semmle.label | environment [post update] : Hashtable [] : String | +| InsecureLdapAuth.java:151:41:151:47 | ldapUrl : String | semmle.label | ldapUrl : String | +| InsecureLdapAuth.java:153:50:153:60 | environment | semmle.label | environment | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth/InsecureLdapAuthTest.qlref b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth/InsecureLdapAuthTest.qlref new file mode 100644 index 000000000000..0ef383243379 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth/InsecureLdapAuthTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-522/InsecureLdapAuth.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth/options b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth/options new file mode 100644 index 000000000000..7eaf4cb235f4 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuth/options @@ -0,0 +1 @@ +// semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/apache-http-4.4.13 diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.expected b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.ql b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.ql deleted file mode 100644 index 7c75f5192ed3..000000000000 --- a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.ql +++ /dev/null @@ -1,20 +0,0 @@ -import java -import semmle.code.java.security.InsecureLdapAuthQuery -import utils.test.InlineExpectationsTest - -module InsecureLdapAuthenticationTest implements TestSig { - string getARelevantTag() { result = "hasInsecureLdapAuth" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasInsecureLdapAuth" and - exists(DataFlow::Node sink | InsecureLdapUrlFlow::flowTo(sink) | - BasicAuthFlow::flowTo(sink) and - not RequiresSslFlow::flowTo(sink) and - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-522/options b/java/ql/test/query-tests/security/CWE-522/options deleted file mode 100644 index 2e6054aac456..000000000000 --- a/java/ql/test/query-tests/security/CWE-522/options +++ /dev/null @@ -1 +0,0 @@ -// semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/apache-http-4.4.13 diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.expected b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.expected index e69de29bb2d1..8beed804aca0 100644 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.expected +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.expected @@ -0,0 +1,127 @@ +#select +| UrlForwardTest.java:29:27:29:29 | url | UrlForwardTest.java:28:27:28:36 | url : String | UrlForwardTest.java:29:27:29:29 | url | Untrusted URL forward depends on a $@. | UrlForwardTest.java:28:27:28:36 | url | user-provided value | +| UrlForwardTest.java:35:28:35:30 | url | UrlForwardTest.java:33:27:33:36 | url : String | UrlForwardTest.java:35:28:35:30 | url | Untrusted URL forward depends on a $@. | UrlForwardTest.java:33:27:33:36 | url | user-provided value | +| UrlForwardTest.java:42:23:42:25 | url | UrlForwardTest.java:41:21:41:30 | url : String | UrlForwardTest.java:42:23:42:25 | url | Untrusted URL forward depends on a $@. | UrlForwardTest.java:41:21:41:30 | url | user-provided value | +| UrlForwardTest.java:47:48:47:63 | ... + ... | UrlForwardTest.java:46:27:46:36 | url : String | UrlForwardTest.java:47:48:47:63 | ... + ... | Untrusted URL forward depends on a $@. | UrlForwardTest.java:46:27:46:36 | url | user-provided value | +| UrlForwardTest.java:47:61:47:63 | url | UrlForwardTest.java:46:27:46:36 | url : String | UrlForwardTest.java:47:61:47:63 | url | Untrusted URL forward depends on a $@. | UrlForwardTest.java:46:27:46:36 | url | user-provided value | +| UrlForwardTest.java:63:33:63:35 | url | UrlForwardTest.java:61:19:61:28 | url : String | UrlForwardTest.java:63:33:63:35 | url | Untrusted URL forward depends on a $@. | UrlForwardTest.java:61:19:61:28 | url | user-provided value | +| UrlForwardTest.java:74:33:74:62 | ... + ... | UrlForwardTest.java:72:19:72:28 | url : String | UrlForwardTest.java:74:33:74:62 | ... + ... | Untrusted URL forward depends on a $@. | UrlForwardTest.java:72:19:72:28 | url | user-provided value | +| UrlForwardTest.java:85:33:85:62 | ... + ... | UrlForwardTest.java:83:19:83:28 | url : String | UrlForwardTest.java:85:33:85:62 | ... + ... | Untrusted URL forward depends on a $@. | UrlForwardTest.java:83:19:83:28 | url | user-provided value | +| UrlForwardTest.java:109:33:109:35 | url | UrlForwardTest.java:106:19:106:32 | urlPath : String | UrlForwardTest.java:109:33:109:35 | url | Untrusted URL forward depends on a $@. | UrlForwardTest.java:106:19:106:32 | urlPath | user-provided value | +| UrlForwardTest.java:148:33:148:36 | path | UrlForwardTest.java:145:17:145:63 | getServletPath(...) : String | UrlForwardTest.java:148:33:148:36 | path | Untrusted URL forward depends on a $@. | UrlForwardTest.java:145:17:145:63 | getServletPath(...) | user-provided value | +| UrlForwardTest.java:161:33:161:36 | path | UrlForwardTest.java:158:17:158:63 | getServletPath(...) : String | UrlForwardTest.java:161:33:161:36 | path | Untrusted URL forward depends on a $@. | UrlForwardTest.java:158:17:158:63 | getServletPath(...) | user-provided value | +| UrlForwardTest.java:193:51:193:59 | returnURL | UrlForwardTest.java:184:22:184:54 | getParameter(...) : String | UrlForwardTest.java:193:51:193:59 | returnURL | Untrusted URL forward depends on a $@. | UrlForwardTest.java:184:22:184:54 | getParameter(...) | user-provided value | +| UrlForwardTest.java:209:56:209:64 | returnURL | UrlForwardTest.java:203:22:203:54 | getParameter(...) : String | UrlForwardTest.java:209:56:209:64 | returnURL | Untrusted URL forward depends on a $@. | UrlForwardTest.java:203:22:203:54 | getParameter(...) | user-provided value | +| UrlForwardTest.java:236:53:236:56 | path | UrlForwardTest.java:232:17:232:44 | getParameter(...) : String | UrlForwardTest.java:236:53:236:56 | path | Untrusted URL forward depends on a $@. | UrlForwardTest.java:232:17:232:44 | getParameter(...) | user-provided value | +| UrlForwardTest.java:247:53:247:56 | path | UrlForwardTest.java:244:17:244:44 | getParameter(...) : String | UrlForwardTest.java:247:53:247:56 | path | Untrusted URL forward depends on a $@. | UrlForwardTest.java:244:17:244:44 | getParameter(...) | user-provided value | +| UrlForwardTest.java:261:53:261:76 | toString(...) | UrlForwardTest.java:255:17:255:44 | getParameter(...) : String | UrlForwardTest.java:261:53:261:76 | toString(...) | Untrusted URL forward depends on a $@. | UrlForwardTest.java:255:17:255:44 | getParameter(...) | user-provided value | +| UrlForwardTest.java:273:53:273:76 | toString(...) | UrlForwardTest.java:268:17:268:44 | getParameter(...) : String | UrlForwardTest.java:273:53:273:76 | toString(...) | Untrusted URL forward depends on a $@. | UrlForwardTest.java:268:17:268:44 | getParameter(...) | user-provided value | +| UrlForwardTest.java:284:53:284:56 | path | UrlForwardTest.java:280:17:280:44 | getParameter(...) : String | UrlForwardTest.java:284:53:284:56 | path | Untrusted URL forward depends on a $@. | UrlForwardTest.java:280:17:280:44 | getParameter(...) | user-provided value | +| UrlForwardTest.java:322:54:322:57 | path | UrlForwardTest.java:319:17:319:44 | getParameter(...) : String | UrlForwardTest.java:322:54:322:57 | path | Untrusted URL forward depends on a $@. | UrlForwardTest.java:319:17:319:44 | getParameter(...) | user-provided value | +| UrlForwardTest.java:365:53:365:56 | path | UrlForwardTest.java:355:17:355:44 | getParameter(...) : String | UrlForwardTest.java:365:53:365:56 | path | Untrusted URL forward depends on a $@. | UrlForwardTest.java:355:17:355:44 | getParameter(...) | user-provided value | +| UrlForwardTest.java:372:20:372:22 | url | UrlForwardTest.java:371:16:371:41 | getParameter(...) : String | UrlForwardTest.java:372:20:372:22 | url | Untrusted URL forward depends on a $@. | UrlForwardTest.java:371:16:371:41 | getParameter(...) | user-provided value | +| UrlForwardTest.java:384:27:384:56 | getParameter(...) | UrlForwardTest.java:384:27:384:56 | getParameter(...) | UrlForwardTest.java:384:27:384:56 | getParameter(...) | Untrusted URL forward depends on a $@. | UrlForwardTest.java:384:27:384:56 | getParameter(...) | user-provided value | +edges +| UrlForwardTest.java:28:27:28:36 | url : String | UrlForwardTest.java:29:27:29:29 | url | provenance | Sink:MaD:4 | +| UrlForwardTest.java:33:27:33:36 | url : String | UrlForwardTest.java:35:28:35:30 | url | provenance | Sink:MaD:5 | +| UrlForwardTest.java:41:21:41:30 | url : String | UrlForwardTest.java:42:23:42:25 | url | provenance | | +| UrlForwardTest.java:46:27:46:36 | url : String | UrlForwardTest.java:47:48:47:63 | ... + ... | provenance | Sink:MaD:4 | +| UrlForwardTest.java:46:27:46:36 | url : String | UrlForwardTest.java:47:61:47:63 | url | provenance | | +| UrlForwardTest.java:61:19:61:28 | url : String | UrlForwardTest.java:63:33:63:35 | url | provenance | Sink:MaD:2 | +| UrlForwardTest.java:72:19:72:28 | url : String | UrlForwardTest.java:74:33:74:62 | ... + ... | provenance | Sink:MaD:2 | +| UrlForwardTest.java:83:19:83:28 | url : String | UrlForwardTest.java:85:33:85:62 | ... + ... | provenance | Sink:MaD:2 | +| UrlForwardTest.java:106:19:106:32 | urlPath : String | UrlForwardTest.java:109:33:109:35 | url | provenance | Sink:MaD:2 | +| UrlForwardTest.java:145:17:145:63 | getServletPath(...) : String | UrlForwardTest.java:148:33:148:36 | path | provenance | Src:MaD:6 Sink:MaD:2 | +| UrlForwardTest.java:158:17:158:63 | getServletPath(...) : String | UrlForwardTest.java:161:33:161:36 | path | provenance | Src:MaD:6 Sink:MaD:2 | +| UrlForwardTest.java:184:22:184:54 | getParameter(...) : String | UrlForwardTest.java:193:51:193:59 | returnURL | provenance | Src:MaD:7 Sink:MaD:1 | +| UrlForwardTest.java:203:22:203:54 | getParameter(...) : String | UrlForwardTest.java:209:56:209:64 | returnURL | provenance | Src:MaD:7 Sink:MaD:2 | +| UrlForwardTest.java:232:17:232:44 | getParameter(...) : String | UrlForwardTest.java:236:53:236:56 | path | provenance | Src:MaD:7 Sink:MaD:1 | +| UrlForwardTest.java:244:17:244:44 | getParameter(...) : String | UrlForwardTest.java:247:53:247:56 | path | provenance | Src:MaD:7 Sink:MaD:1 | +| UrlForwardTest.java:255:17:255:44 | getParameter(...) : String | UrlForwardTest.java:258:53:258:56 | path : String | provenance | Src:MaD:7 | +| UrlForwardTest.java:258:24:258:57 | resolve(...) : Path | UrlForwardTest.java:258:24:258:69 | normalize(...) : Path | provenance | MaD:9 | +| UrlForwardTest.java:258:24:258:69 | normalize(...) : Path | UrlForwardTest.java:261:53:261:65 | requestedPath : Path | provenance | | +| UrlForwardTest.java:258:53:258:56 | path : String | UrlForwardTest.java:258:24:258:57 | resolve(...) : Path | provenance | MaD:10 | +| UrlForwardTest.java:261:53:261:65 | requestedPath : Path | UrlForwardTest.java:261:53:261:76 | toString(...) | provenance | MaD:11 Sink:MaD:1 | +| UrlForwardTest.java:268:17:268:44 | getParameter(...) : String | UrlForwardTest.java:270:53:270:56 | path : String | provenance | Src:MaD:7 | +| UrlForwardTest.java:270:24:270:57 | resolve(...) : Path | UrlForwardTest.java:270:24:270:69 | normalize(...) : Path | provenance | MaD:9 | +| UrlForwardTest.java:270:24:270:69 | normalize(...) : Path | UrlForwardTest.java:273:53:273:65 | requestedPath : Path | provenance | | +| UrlForwardTest.java:270:53:270:56 | path : String | UrlForwardTest.java:270:24:270:57 | resolve(...) : Path | provenance | MaD:10 | +| UrlForwardTest.java:273:53:273:65 | requestedPath : Path | UrlForwardTest.java:273:53:273:76 | toString(...) | provenance | MaD:11 Sink:MaD:1 | +| UrlForwardTest.java:280:17:280:44 | getParameter(...) : String | UrlForwardTest.java:281:28:281:31 | path : String | provenance | Src:MaD:7 | +| UrlForwardTest.java:281:10:281:41 | decode(...) : String | UrlForwardTest.java:284:53:284:56 | path | provenance | Sink:MaD:1 | +| UrlForwardTest.java:281:28:281:31 | path : String | UrlForwardTest.java:281:10:281:41 | decode(...) : String | provenance | MaD:8 | +| UrlForwardTest.java:319:17:319:44 | getParameter(...) : String | UrlForwardTest.java:322:54:322:57 | path | provenance | Src:MaD:7 Sink:MaD:1 | +| UrlForwardTest.java:355:17:355:44 | getParameter(...) : String | UrlForwardTest.java:360:29:360:32 | path : String | provenance | Src:MaD:7 | +| UrlForwardTest.java:355:17:355:44 | getParameter(...) : String | UrlForwardTest.java:365:53:365:56 | path | provenance | Src:MaD:7 Sink:MaD:1 | +| UrlForwardTest.java:360:11:360:42 | decode(...) : String | UrlForwardTest.java:360:29:360:32 | path : String | provenance | | +| UrlForwardTest.java:360:11:360:42 | decode(...) : String | UrlForwardTest.java:365:53:365:56 | path | provenance | Sink:MaD:1 | +| UrlForwardTest.java:360:29:360:32 | path : String | UrlForwardTest.java:360:11:360:42 | decode(...) : String | provenance | MaD:8 | +| UrlForwardTest.java:371:16:371:41 | getParameter(...) : String | UrlForwardTest.java:372:20:372:22 | url | provenance | Src:MaD:7 Sink:MaD:3 | +models +| 1 | Sink: javax.servlet; ServletContext; true; getRequestDispatcher; (String); ; Argument[0]; url-forward; manual | +| 2 | Sink: javax.servlet; ServletRequest; true; getRequestDispatcher; (String); ; Argument[0]; url-forward; manual | +| 3 | Sink: org.kohsuke.stapler; StaplerResponse; true; forward; (Object,String,StaplerRequest); ; Argument[1]; url-forward; manual | +| 4 | Sink: org.springframework.web.servlet; ModelAndView; false; ModelAndView; ; ; Argument[0]; url-forward; manual | +| 5 | Sink: org.springframework.web.servlet; ModelAndView; false; setViewName; ; ; Argument[0]; url-forward; manual | +| 6 | Source: javax.servlet.http; HttpServletRequest; false; getServletPath; (); ; ReturnValue; remote; manual | +| 7 | Source: javax.servlet; ServletRequest; false; getParameter; (String); ; ReturnValue; remote; manual | +| 8 | Summary: java.net; URLDecoder; false; decode; ; ; Argument[0]; ReturnValue; taint; manual | +| 9 | Summary: java.nio.file; Path; true; normalize; ; ; Argument[this]; ReturnValue; taint; manual | +| 10 | Summary: java.nio.file; Path; true; resolve; ; ; Argument[0]; ReturnValue; taint; manual | +| 11 | Summary: java.nio.file; Path; true; toString; ; ; Argument[this]; ReturnValue; taint; manual | +nodes +| UrlForwardTest.java:28:27:28:36 | url : String | semmle.label | url : String | +| UrlForwardTest.java:29:27:29:29 | url | semmle.label | url | +| UrlForwardTest.java:33:27:33:36 | url : String | semmle.label | url : String | +| UrlForwardTest.java:35:28:35:30 | url | semmle.label | url | +| UrlForwardTest.java:41:21:41:30 | url : String | semmle.label | url : String | +| UrlForwardTest.java:42:23:42:25 | url | semmle.label | url | +| UrlForwardTest.java:46:27:46:36 | url : String | semmle.label | url : String | +| UrlForwardTest.java:47:48:47:63 | ... + ... | semmle.label | ... + ... | +| UrlForwardTest.java:47:61:47:63 | url | semmle.label | url | +| UrlForwardTest.java:61:19:61:28 | url : String | semmle.label | url : String | +| UrlForwardTest.java:63:33:63:35 | url | semmle.label | url | +| UrlForwardTest.java:72:19:72:28 | url : String | semmle.label | url : String | +| UrlForwardTest.java:74:33:74:62 | ... + ... | semmle.label | ... + ... | +| UrlForwardTest.java:83:19:83:28 | url : String | semmle.label | url : String | +| UrlForwardTest.java:85:33:85:62 | ... + ... | semmle.label | ... + ... | +| UrlForwardTest.java:106:19:106:32 | urlPath : String | semmle.label | urlPath : String | +| UrlForwardTest.java:109:33:109:35 | url | semmle.label | url | +| UrlForwardTest.java:145:17:145:63 | getServletPath(...) : String | semmle.label | getServletPath(...) : String | +| UrlForwardTest.java:148:33:148:36 | path | semmle.label | path | +| UrlForwardTest.java:158:17:158:63 | getServletPath(...) : String | semmle.label | getServletPath(...) : String | +| UrlForwardTest.java:161:33:161:36 | path | semmle.label | path | +| UrlForwardTest.java:184:22:184:54 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UrlForwardTest.java:193:51:193:59 | returnURL | semmle.label | returnURL | +| UrlForwardTest.java:203:22:203:54 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UrlForwardTest.java:209:56:209:64 | returnURL | semmle.label | returnURL | +| UrlForwardTest.java:232:17:232:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UrlForwardTest.java:236:53:236:56 | path | semmle.label | path | +| UrlForwardTest.java:244:17:244:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UrlForwardTest.java:247:53:247:56 | path | semmle.label | path | +| UrlForwardTest.java:255:17:255:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UrlForwardTest.java:258:24:258:57 | resolve(...) : Path | semmle.label | resolve(...) : Path | +| UrlForwardTest.java:258:24:258:69 | normalize(...) : Path | semmle.label | normalize(...) : Path | +| UrlForwardTest.java:258:53:258:56 | path : String | semmle.label | path : String | +| UrlForwardTest.java:261:53:261:65 | requestedPath : Path | semmle.label | requestedPath : Path | +| UrlForwardTest.java:261:53:261:76 | toString(...) | semmle.label | toString(...) | +| UrlForwardTest.java:268:17:268:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UrlForwardTest.java:270:24:270:57 | resolve(...) : Path | semmle.label | resolve(...) : Path | +| UrlForwardTest.java:270:24:270:69 | normalize(...) : Path | semmle.label | normalize(...) : Path | +| UrlForwardTest.java:270:53:270:56 | path : String | semmle.label | path : String | +| UrlForwardTest.java:273:53:273:65 | requestedPath : Path | semmle.label | requestedPath : Path | +| UrlForwardTest.java:273:53:273:76 | toString(...) | semmle.label | toString(...) | +| UrlForwardTest.java:280:17:280:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UrlForwardTest.java:281:10:281:41 | decode(...) : String | semmle.label | decode(...) : String | +| UrlForwardTest.java:281:28:281:31 | path : String | semmle.label | path : String | +| UrlForwardTest.java:284:53:284:56 | path | semmle.label | path | +| UrlForwardTest.java:319:17:319:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UrlForwardTest.java:322:54:322:57 | path | semmle.label | path | +| UrlForwardTest.java:355:17:355:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UrlForwardTest.java:360:11:360:42 | decode(...) : String | semmle.label | decode(...) : String | +| UrlForwardTest.java:360:29:360:32 | path : String | semmle.label | path : String | +| UrlForwardTest.java:365:53:365:56 | path | semmle.label | path | +| UrlForwardTest.java:371:16:371:41 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UrlForwardTest.java:372:20:372:22 | url | semmle.label | url | +| UrlForwardTest.java:384:27:384:56 | getParameter(...) | semmle.label | getParameter(...) | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java index a1437a692a2f..72ccf2c3b54e 100644 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java @@ -25,26 +25,26 @@ public class UrlForwardTest extends HttpServlet implements Filter { // Spring `ModelAndView` test cases @GetMapping("/bad1") - public ModelAndView bad1(String url) { - return new ModelAndView(url); // $ hasTaintFlow + public ModelAndView bad1(String url) { // $ Source + return new ModelAndView(url); // $ Alert } @GetMapping("/bad2") - public ModelAndView bad2(String url) { + public ModelAndView bad2(String url) { // $ Source ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName(url); // $ hasTaintFlow + modelAndView.setViewName(url); // $ Alert return modelAndView; } // Spring `"forward:"` prefix test cases @GetMapping("/bad3") - public String bad3(String url) { - return "forward:" + url + "/swagger-ui/index.html"; // $ hasTaintFlow + public String bad3(String url) { // $ Source + return "forward:" + url + "/swagger-ui/index.html"; // $ Alert } @GetMapping("/bad4") - public ModelAndView bad4(String url) { - ModelAndView modelAndView = new ModelAndView("forward:" + url); // $ hasTaintFlow + public ModelAndView bad4(String url) { // $ Source + ModelAndView modelAndView = new ModelAndView("forward:" + url); // $ Alert return modelAndView; } @@ -58,9 +58,9 @@ public ModelAndView redirect(String url) { // `RequestDispatcher` test cases from a Spring `GetMapping` entry point @GetMapping("/bad5") - public void bad5(String url, HttpServletRequest request, HttpServletResponse response) { + public void bad5(String url, HttpServletRequest request, HttpServletResponse response) { // $ Source try { - request.getRequestDispatcher(url).include(request, response); // $ hasTaintFlow + request.getRequestDispatcher(url).include(request, response); // $ Alert } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { @@ -69,9 +69,9 @@ public void bad5(String url, HttpServletRequest request, HttpServletResponse res } @GetMapping("/bad6") - public void bad6(String url, HttpServletRequest request, HttpServletResponse response) { + public void bad6(String url, HttpServletRequest request, HttpServletResponse response) { // $ Source try { - request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").include(request, response); // $ hasTaintFlow + request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").include(request, response); // $ Alert } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { @@ -80,9 +80,9 @@ public void bad6(String url, HttpServletRequest request, HttpServletResponse res } @GetMapping("/bad7") - public void bad7(String url, HttpServletRequest request, HttpServletResponse response) { + public void bad7(String url, HttpServletRequest request, HttpServletResponse response) { // $ Source try { - request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").forward(request, response); // $ hasTaintFlow + request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").forward(request, response); // $ Alert } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { @@ -103,10 +103,10 @@ public void good1(String url, HttpServletRequest request, HttpServletResponse re // BAD: appended to a prefix without path sanitization @GetMapping("/bad8") - public void bad8(String urlPath, HttpServletRequest request, HttpServletResponse response) { + public void bad8(String urlPath, HttpServletRequest request, HttpServletResponse response) { // $ Source try { String url = "/pages" + urlPath; - request.getRequestDispatcher(url).forward(request, response); // $ hasTaintFlow + request.getRequestDispatcher(url).forward(request, response); // $ Alert } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { @@ -142,10 +142,10 @@ public void good2(String urlPath, HttpServletRequest request, HttpServletRespons // BAD: Request dispatcher from servlet path without check public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - String path = ((HttpServletRequest) request).getServletPath(); + String path = ((HttpServletRequest) request).getServletPath(); // $ Source // A sample payload "/%57EB-INF/web.xml" can bypass this `startsWith` check if (path != null && !path.startsWith("/WEB-INF")) { - request.getRequestDispatcher(path).forward(request, response); // $ hasTaintFlow + request.getRequestDispatcher(path).forward(request, response); // $ Alert } else { chain.doFilter(request, response); } @@ -155,10 +155,10 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha // the user-supplied path; could bypass check with ".." encoded as "%2e%2e". public void doFilter2(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - String path = ((HttpServletRequest) request).getServletPath(); + String path = ((HttpServletRequest) request).getServletPath(); // $ Source if (path.startsWith(BASE_PATH) && !path.contains("..")) { - request.getRequestDispatcher(path).forward(request, response); // $ hasTaintFlow + request.getRequestDispatcher(path).forward(request, response); // $ Alert } else { chain.doFilter(request, response); } @@ -181,7 +181,7 @@ public void doFilter3(ServletRequest request, ServletResponse response, FilterCh protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action"); - String returnURL = request.getParameter("returnURL"); + String returnURL = request.getParameter("returnURL"); // $ Source ServletConfig cfg = getServletConfig(); if (action.equals("Login")) { @@ -190,7 +190,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) rd.forward(request, response); } else { ServletContext sc = cfg.getServletContext(); - RequestDispatcher rd = sc.getRequestDispatcher(returnURL); // $ hasTaintFlow + RequestDispatcher rd = sc.getRequestDispatcher(returnURL); // $ Alert rd.forward(request, response); } } @@ -200,13 +200,13 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action"); - String returnURL = request.getParameter("returnURL"); + String returnURL = request.getParameter("returnURL"); // $ Source if (action.equals("Login")) { RequestDispatcher rd = request.getRequestDispatcher("/Login.jsp"); rd.forward(request, response); } else { - RequestDispatcher rd = request.getRequestDispatcher(returnURL); // $ hasTaintFlow + RequestDispatcher rd = request.getRequestDispatcher(returnURL); // $ Alert rd.forward(request, response); } } @@ -229,11 +229,11 @@ protected void doPut(HttpServletRequest request, HttpServletResponse response) // BAD: Request dispatcher without path traversal check protected void doHead1(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String path = request.getParameter("path"); + String path = request.getParameter("path"); // $ Source // A sample payload "/pages/welcome.jsp/../WEB-INF/web.xml" can bypass the `startsWith` check if (path.startsWith(BASE_PATH)) { - request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasTaintFlow + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ Alert } } @@ -241,10 +241,10 @@ protected void doHead1(HttpServletRequest request, HttpServletResponse response) // the user-supplied path; could bypass check with ".." encoded as "%2e%2e". protected void doHead2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String path = request.getParameter("path"); + String path = request.getParameter("path"); // $ Source if (path.startsWith(BASE_PATH) && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasTaintFlow + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ Alert } } @@ -252,36 +252,36 @@ protected void doHead2(HttpServletRequest request, HttpServletResponse response) // does not decode before normalization. protected void doHead3(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String path = request.getParameter("path"); + String path = request.getParameter("path"); // $ Source // Since not decoded before normalization, "%2e%2e" can remain in the path Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); if (requestedPath.startsWith(BASE_PATH)) { - request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ hasTaintFlow + request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ Alert } } // BAD: Request dispatcher with negation check and path normalization, but without URL decoding. protected void doHead4(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String path = request.getParameter("path"); + String path = request.getParameter("path"); // $ Source // Since not decoded before normalization, "/%57EB-INF" can remain in the path and pass the `startsWith` check. Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); if (!requestedPath.startsWith("/WEB-INF") && !requestedPath.startsWith("/META-INF")) { - request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ hasTaintFlow + request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ Alert } } // BAD: Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding protected void doHead5(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String path = request.getParameter("path"); + String path = request.getParameter("path"); // $ Source path = URLDecoder.decode(path, "UTF-8"); if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasTaintFlow + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ Alert } } @@ -316,10 +316,10 @@ protected void doHead7(HttpServletRequest request, HttpServletResponse response) // BAD: Request dispatcher without URL decoding before WEB-INF and path traversal checks protected void doHead8(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String path = request.getParameter("path"); + String path = request.getParameter("path"); // $ Source if (path.contains("%")){ // incorrect check if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasTaintFlow + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ Alert } } } @@ -352,7 +352,7 @@ protected void doHead10(HttpServletRequest request, HttpServletResponse response // GOOD: Request dispatcher with path traversal check and URL decoding in a loop to avoid double-encoding bypass protected void doHead11(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String path = request.getParameter("path"); + String path = request.getParameter("path"); // $ Source // FP: we don't currently handle the scenario where the // `path.contains("%")` check is stored in a variable. boolean hasEncoding = path.contains("%"); @@ -362,14 +362,14 @@ protected void doHead11(HttpServletRequest request, HttpServletResponse response } if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); // $ SPURIOUS: hasTaintFlow + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ SPURIOUS: Alert } } // BAD: `StaplerResponse.forward` without any checks public void generateResponse(StaplerRequest req, StaplerResponse rsp, Object obj) throws IOException, ServletException { - String url = req.getParameter("target"); - rsp.forward(obj, url, req); // $ hasTaintFlow + String url = req.getParameter("target"); // $ Source + rsp.forward(obj, url, req); // $ Alert } // QHelp example @@ -381,7 +381,7 @@ protected void doGet2(HttpServletRequest request, HttpServletResponse response) ServletContext sc = cfg.getServletContext(); // BAD: a request parameter is incorporated without validation into a URL forward - sc.getRequestDispatcher(request.getParameter("target")).forward(request, response); // $ hasTaintFlow + sc.getRequestDispatcher(request.getParameter("target")).forward(request, response); // $ Alert // GOOD: the request parameter is validated against a known fixed string if (VALID_FORWARD.equals(request.getParameter("target"))) { diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.ql b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.ql deleted file mode 100644 index f7240bf0c303..000000000000 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.ql +++ /dev/null @@ -1,4 +0,0 @@ -import java -import utils.test.InlineFlowTest -import semmle.code.java.security.UrlForwardQuery -import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.qlref b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.qlref new file mode 100644 index 000000000000..1e8912766b2c --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-552/UrlForward.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-611/CdaUtilTests.java b/java/ql/test/query-tests/security/CWE-611/CdaUtilTests.java index 6c19a8424722..ca74ae93521b 100644 --- a/java/ql/test/query-tests/security/CWE-611/CdaUtilTests.java +++ b/java/ql/test/query-tests/security/CWE-611/CdaUtilTests.java @@ -7,17 +7,17 @@ public class CdaUtilTests { public void test(Socket sock) throws Exception { - InputStream is = sock.getInputStream(); + InputStream is = sock.getInputStream(); // $ Source InputSource iSrc = new InputSource(new InputStreamReader(is)); - CDAUtil.load(is); // $ hasTaintFlow - CDAUtil.load(iSrc); // $ hasTaintFlow - CDAUtil.load(is, (CDAUtil.ValidationHandler) null); // $ hasTaintFlow - CDAUtil.load(is, (CDAUtil.LoadHandler) null); // $ hasTaintFlow - CDAUtil.load(null, null, is, null); // $ hasTaintFlow - CDAUtil.load(iSrc, (CDAUtil.ValidationHandler) null); // $ hasTaintFlow - CDAUtil.load(iSrc, (CDAUtil.LoadHandler) null); // $ hasTaintFlow - CDAUtil.load(null, null, iSrc, null); // $ hasTaintFlow - CDAUtil.loadAs(is, null); // $ hasTaintFlow - CDAUtil.loadAs(is, null, null); // $ hasTaintFlow + CDAUtil.load(is); // $ Alert + CDAUtil.load(iSrc); // $ Alert + CDAUtil.load(is, (CDAUtil.ValidationHandler) null); // $ Alert + CDAUtil.load(is, (CDAUtil.LoadHandler) null); // $ Alert + CDAUtil.load(null, null, is, null); // $ Alert + CDAUtil.load(iSrc, (CDAUtil.ValidationHandler) null); // $ Alert + CDAUtil.load(iSrc, (CDAUtil.LoadHandler) null); // $ Alert + CDAUtil.load(null, null, iSrc, null); // $ Alert + CDAUtil.loadAs(is, null); // $ Alert + CDAUtil.loadAs(is, null, null); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-611/DigesterTests.java b/java/ql/test/query-tests/security/CWE-611/DigesterTests.java index bace07a9b303..fbb3afbdd042 100644 --- a/java/ql/test/query-tests/security/CWE-611/DigesterTests.java +++ b/java/ql/test/query-tests/security/CWE-611/DigesterTests.java @@ -11,9 +11,9 @@ public class DigesterTests { @PostMapping(value = "bad") public void bad1(HttpServletRequest request, HttpServletResponse response) throws Exception { - ServletInputStream servletInputStream = request.getInputStream(); + ServletInputStream servletInputStream = request.getInputStream(); // $ Source Digester digester = new Digester(); - digester.parse(servletInputStream); // $ hasTaintFlow + digester.parse(servletInputStream); // $ Alert } @PostMapping(value = "good") diff --git a/java/ql/test/query-tests/security/CWE-611/DocumentBuilderTests.java b/java/ql/test/query-tests/security/CWE-611/DocumentBuilderTests.java index 98d95686301c..f6a8f94cbb0c 100644 --- a/java/ql/test/query-tests/security/CWE-611/DocumentBuilderTests.java +++ b/java/ql/test/query-tests/security/CWE-611/DocumentBuilderTests.java @@ -11,7 +11,7 @@ class DocumentBuilderTests { public void unconfiguredParse(Socket sock) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); - builder.parse(sock.getInputStream()); // $ hasTaintFlow + builder.parse(sock.getInputStream()); // $ Alert } public void disableDTD(Socket sock) throws Exception { @@ -25,7 +25,7 @@ public void enableSecurityFeature(Socket sock) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); DocumentBuilder builder = factory.newDocumentBuilder(); - builder.parse(sock.getInputStream()); // $ hasTaintFlow -- secure-processing by itself is + builder.parse(sock.getInputStream()); // $ Alert -- secure-processing by itself is // insufficient } @@ -33,7 +33,7 @@ public void enableSecurityFeature2(Socket sock) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setFeature("http://javax.xml.XMLConstants/feature/secure-processing", true); DocumentBuilder builder = factory.newDocumentBuilder(); - builder.parse(sock.getInputStream()); // $ hasTaintFlow -- secure-processing by itself is + builder.parse(sock.getInputStream()); // $ Alert -- secure-processing by itself is // insufficient } @@ -41,14 +41,14 @@ public void enableDTD(Socket sock) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", false); DocumentBuilder builder = factory.newDocumentBuilder(); - builder.parse(sock.getInputStream()); // $ hasTaintFlow + builder.parse(sock.getInputStream()); // $ Alert } public void disableSecurityFeature(Socket sock) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setFeature("http://javax.xml.XMLConstants/feature/secure-processing", false); DocumentBuilder builder = factory.newDocumentBuilder(); - builder.parse(sock.getInputStream()); // $ hasTaintFlow + builder.parse(sock.getInputStream()); // $ Alert } public void disableExternalEntities(Socket sock) throws Exception { @@ -63,14 +63,14 @@ public void partialDisableExternalEntities(Socket sock) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); DocumentBuilder builder = factory.newDocumentBuilder(); - builder.parse(sock.getInputStream()); // $ hasTaintFlow + builder.parse(sock.getInputStream()); // $ Alert } public void partialDisableExternalEntities2(Socket sock) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setFeature("http://xml.org/sax/features/external-general-entities", false); DocumentBuilder builder = factory.newDocumentBuilder(); - builder.parse(sock.getInputStream()); // $ hasTaintFlow + builder.parse(sock.getInputStream()); // $ Alert } public void misConfigureExternalEntities1(Socket sock) throws Exception { @@ -78,7 +78,7 @@ public void misConfigureExternalEntities1(Socket sock) throws Exception { factory.setFeature("http://xml.org/sax/features/external-parameter-entities", true); factory.setFeature("http://xml.org/sax/features/external-general-entities", false); DocumentBuilder builder = factory.newDocumentBuilder(); - builder.parse(sock.getInputStream()); // $ hasTaintFlow + builder.parse(sock.getInputStream()); // $ Alert } public void misConfigureExternalEntities2(Socket sock) throws Exception { @@ -86,22 +86,22 @@ public void misConfigureExternalEntities2(Socket sock) throws Exception { factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); factory.setFeature("http://xml.org/sax/features/external-general-entities", true); DocumentBuilder builder = factory.newDocumentBuilder(); - builder.parse(sock.getInputStream()); // $ hasTaintFlow + builder.parse(sock.getInputStream()); // $ Alert } public void taintedSAXInputSource1(Socket sock) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); - SAXSource source = new SAXSource(new InputSource(sock.getInputStream())); - builder.parse(source.getInputSource()); // $ hasTaintFlow + SAXSource source = new SAXSource(new InputSource(sock.getInputStream())); // $ Source + builder.parse(source.getInputSource()); // $ Alert } public void taintedSAXInputSource2(Socket sock) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); - StreamSource source = new StreamSource(sock.getInputStream()); - builder.parse(SAXSource.sourceToInputSource(source)); // $ hasTaintFlow - builder.parse(source.getInputStream()); // $ hasTaintFlow + StreamSource source = new StreamSource(sock.getInputStream()); // $ Source + builder.parse(SAXSource.sourceToInputSource(source)); // $ Alert + builder.parse(source.getInputStream()); // $ Alert } private static DocumentBuilderFactory getDocumentBuilderFactory() throws Exception { diff --git a/java/ql/test/query-tests/security/CWE-611/ParserHelperTests.java b/java/ql/test/query-tests/security/CWE-611/ParserHelperTests.java index 6b43c224d94f..94aef644106a 100644 --- a/java/ql/test/query-tests/security/CWE-611/ParserHelperTests.java +++ b/java/ql/test/query-tests/security/CWE-611/ParserHelperTests.java @@ -9,6 +9,6 @@ public class ParserHelperTests { @PostMapping(value = "bad4") public void bad4(HttpServletRequest request) throws Exception { - Document document = ParserHelper.loadDocument(request.getInputStream()); // $ hasTaintFlow + Document document = ParserHelper.loadDocument(request.getInputStream()); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-611/SAXBuilderTests.java b/java/ql/test/query-tests/security/CWE-611/SAXBuilderTests.java index 2b25540b85b6..8458d7a5bc20 100644 --- a/java/ql/test/query-tests/security/CWE-611/SAXBuilderTests.java +++ b/java/ql/test/query-tests/security/CWE-611/SAXBuilderTests.java @@ -5,7 +5,7 @@ public class SAXBuilderTests { public void unconfiguredSAXBuilder(Socket sock) throws Exception { SAXBuilder builder = new SAXBuilder(); - builder.build(sock.getInputStream()); // $ hasTaintFlow + builder.build(sock.getInputStream()); // $ Alert } public void safeBuilder(Socket sock) throws Exception { @@ -17,6 +17,6 @@ public void safeBuilder(Socket sock) throws Exception { public void misConfiguredBuilder(Socket sock) throws Exception { SAXBuilder builder = new SAXBuilder(); builder.setFeature("http://apache.org/xml/features/disallow-doctype-decl", false); - builder.build(sock.getInputStream()); // $ hasTaintFlow + builder.build(sock.getInputStream()); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-611/SAXParserTests.java b/java/ql/test/query-tests/security/CWE-611/SAXParserTests.java index a6de7709aed8..f726fa367017 100644 --- a/java/ql/test/query-tests/security/CWE-611/SAXParserTests.java +++ b/java/ql/test/query-tests/security/CWE-611/SAXParserTests.java @@ -10,7 +10,7 @@ public class SAXParserTests { public void unconfiguredParser(Socket sock) throws Exception { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); - parser.parse(sock.getInputStream(), new DefaultHandler()); // $ hasTaintFlow + parser.parse(sock.getInputStream(), new DefaultHandler()); // $ Alert } public void safeParser(Socket sock) throws Exception { @@ -27,7 +27,7 @@ public void partialConfiguredParser1(Socket sock) throws Exception { factory.setFeature("http://xml.org/sax/features/external-general-entities", false); factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); SAXParser parser = factory.newSAXParser(); - parser.parse(sock.getInputStream(), new DefaultHandler()); // $ hasTaintFlow + parser.parse(sock.getInputStream(), new DefaultHandler()); // $ Alert } public void partialConfiguredParser2(Socket sock) throws Exception { @@ -35,7 +35,7 @@ public void partialConfiguredParser2(Socket sock) throws Exception { factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); SAXParser parser = factory.newSAXParser(); - parser.parse(sock.getInputStream(), new DefaultHandler()); // $ hasTaintFlow + parser.parse(sock.getInputStream(), new DefaultHandler()); // $ Alert } public void partialConfiguredParser3(Socket sock) throws Exception { @@ -43,7 +43,7 @@ public void partialConfiguredParser3(Socket sock) throws Exception { factory.setFeature("http://xml.org/sax/features/external-general-entities", false); factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); SAXParser parser = factory.newSAXParser(); - parser.parse(sock.getInputStream(), new DefaultHandler()); // $ hasTaintFlow + parser.parse(sock.getInputStream(), new DefaultHandler()); // $ Alert } public void misConfiguredParser1(Socket sock) throws Exception { @@ -52,7 +52,7 @@ public void misConfiguredParser1(Socket sock) throws Exception { factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); SAXParser parser = factory.newSAXParser(); - parser.parse(sock.getInputStream(), new DefaultHandler()); // $ hasTaintFlow + parser.parse(sock.getInputStream(), new DefaultHandler()); // $ Alert } public void misConfiguredParser2(Socket sock) throws Exception { @@ -61,7 +61,7 @@ public void misConfiguredParser2(Socket sock) throws Exception { factory.setFeature("http://xml.org/sax/features/external-parameter-entities", true); factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); SAXParser parser = factory.newSAXParser(); - parser.parse(sock.getInputStream(), new DefaultHandler()); // $ hasTaintFlow + parser.parse(sock.getInputStream(), new DefaultHandler()); // $ Alert } public void misConfiguredParser3(Socket sock) throws Exception { @@ -70,7 +70,7 @@ public void misConfiguredParser3(Socket sock) throws Exception { factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", true); SAXParser parser = factory.newSAXParser(); - parser.parse(sock.getInputStream(), new DefaultHandler()); // $ hasTaintFlow + parser.parse(sock.getInputStream(), new DefaultHandler()); // $ Alert } public void safeParser2(Socket sock) throws Exception { diff --git a/java/ql/test/query-tests/security/CWE-611/SAXReaderTests.java b/java/ql/test/query-tests/security/CWE-611/SAXReaderTests.java index f436074f65f5..c30a68c896e0 100644 --- a/java/ql/test/query-tests/security/CWE-611/SAXReaderTests.java +++ b/java/ql/test/query-tests/security/CWE-611/SAXReaderTests.java @@ -5,7 +5,7 @@ public class SAXReaderTests { public void unconfiguredReader(Socket sock) throws Exception { SAXReader reader = new SAXReader(); - reader.read(sock.getInputStream()); // $ hasTaintFlow + reader.read(sock.getInputStream()); // $ Alert } public void safeReader(Socket sock) throws Exception { @@ -20,21 +20,21 @@ public void partialConfiguredReader1(Socket sock) throws Exception { SAXReader reader = new SAXReader(); reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); reader.setFeature("http://xml.org/sax/features/external-general-entities", false); - reader.read(sock.getInputStream()); // $ hasTaintFlow + reader.read(sock.getInputStream()); // $ Alert } public void partialConfiguredReader2(Socket sock) throws Exception { SAXReader reader = new SAXReader(); reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false); - reader.read(sock.getInputStream()); // $ hasTaintFlow + reader.read(sock.getInputStream()); // $ Alert } public void partialConfiguredReader3(Socket sock) throws Exception { SAXReader reader = new SAXReader(); reader.setFeature("http://xml.org/sax/features/external-general-entities", false); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false); - reader.read(sock.getInputStream()); // $ hasTaintFlow + reader.read(sock.getInputStream()); // $ Alert } public void misConfiguredReader1(Socket sock) throws Exception { @@ -42,7 +42,7 @@ public void misConfiguredReader1(Socket sock) throws Exception { reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); reader.setFeature("http://xml.org/sax/features/external-general-entities", true); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false); - reader.read(sock.getInputStream()); // $ hasTaintFlow + reader.read(sock.getInputStream()); // $ Alert } public void misConfiguredReader2(Socket sock) throws Exception { @@ -50,7 +50,7 @@ public void misConfiguredReader2(Socket sock) throws Exception { reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", false); reader.setFeature("http://xml.org/sax/features/external-general-entities", false); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false); - reader.read(sock.getInputStream()); // $ hasTaintFlow + reader.read(sock.getInputStream()); // $ Alert } public void misConfiguredReader3(Socket sock) throws Exception { @@ -58,6 +58,6 @@ public void misConfiguredReader3(Socket sock) throws Exception { reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); reader.setFeature("http://xml.org/sax/features/external-general-entities", false); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", true); - reader.read(sock.getInputStream()); // $ hasTaintFlow + reader.read(sock.getInputStream()); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-611/SAXSourceTests.java b/java/ql/test/query-tests/security/CWE-611/SAXSourceTests.java index 721f596457de..1bb67b310c75 100644 --- a/java/ql/test/query-tests/security/CWE-611/SAXSourceTests.java +++ b/java/ql/test/query-tests/security/CWE-611/SAXSourceTests.java @@ -14,10 +14,10 @@ public class SAXSourceTests { public void unsafeSource(Socket sock) throws Exception { XMLReader reader = XMLReaderFactory.createXMLReader(); - SAXSource source = new SAXSource(reader, new InputSource(sock.getInputStream())); + SAXSource source = new SAXSource(reader, new InputSource(sock.getInputStream())); // $ Source JAXBContext jc = JAXBContext.newInstance(Object.class); Unmarshaller um = jc.createUnmarshaller(); - um.unmarshal(source); // $ hasTaintFlow + um.unmarshal(source); // $ Alert } public void explicitlySafeSource1(Socket sock) throws Exception { diff --git a/java/ql/test/query-tests/security/CWE-611/SchemaTests.java b/java/ql/test/query-tests/security/CWE-611/SchemaTests.java index d98aeb4a3bac..9ed251363930 100644 --- a/java/ql/test/query-tests/security/CWE-611/SchemaTests.java +++ b/java/ql/test/query-tests/security/CWE-611/SchemaTests.java @@ -9,7 +9,7 @@ public class SchemaTests { public void unconfiguredSchemaFactory(Socket sock) throws Exception { SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); - Schema schema = factory.newSchema(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + Schema schema = factory.newSchema(new StreamSource(sock.getInputStream())); // $ Alert } public void safeSchemaFactory(Socket sock) throws Exception { @@ -22,26 +22,26 @@ public void safeSchemaFactory(Socket sock) throws Exception { public void partialConfiguredSchemaFactory1(Socket sock) throws Exception { SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); factory.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, ""); - Schema schema = factory.newSchema(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + Schema schema = factory.newSchema(new StreamSource(sock.getInputStream())); // $ Alert } public void partialConfiguredSchemaFactory2(Socket sock) throws Exception { SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); factory.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); - Schema schema = factory.newSchema(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + Schema schema = factory.newSchema(new StreamSource(sock.getInputStream())); // $ Alert } public void misConfiguredSchemaFactory1(Socket sock) throws Exception { SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); factory.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, ""); factory.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "ab"); - Schema schema = factory.newSchema(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + Schema schema = factory.newSchema(new StreamSource(sock.getInputStream())); // $ Alert } public void misConfiguredSchemaFactory2(Socket sock) throws Exception { SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); factory.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "cd"); factory.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); - Schema schema = factory.newSchema(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + Schema schema = factory.newSchema(new StreamSource(sock.getInputStream())); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-611/SimpleXMLTests.java b/java/ql/test/query-tests/security/CWE-611/SimpleXMLTests.java index 65c759acbf4a..d28ec2ca66dc 100644 --- a/java/ql/test/query-tests/security/CWE-611/SimpleXMLTests.java +++ b/java/ql/test/query-tests/security/CWE-611/SimpleXMLTests.java @@ -11,145 +11,145 @@ public class SimpleXMLTests { public void persisterValidate1(Socket sock) throws Exception { Persister persister = new Persister(); - persister.validate(this.getClass(), sock.getInputStream()); // $ hasTaintFlow + persister.validate(this.getClass(), sock.getInputStream()); // $ Alert } public void persisterValidate2(Socket sock) throws Exception { Persister persister = new Persister(); - persister.validate(this.getClass(), sock.getInputStream(), true); // $ hasTaintFlow + persister.validate(this.getClass(), sock.getInputStream(), true); // $ Alert } public void persisterValidate3(Socket sock) throws Exception { Persister persister = new Persister(); - persister.validate(this.getClass(), new InputStreamReader(sock.getInputStream())); // $ hasTaintFlow + persister.validate(this.getClass(), new InputStreamReader(sock.getInputStream())); // $ Alert } public void persisterValidate4(Socket sock) throws Exception { Persister persister = new Persister(); byte[] b = new byte[] {}; - sock.getInputStream().read(b); - persister.validate(this.getClass(), new String(b)); // $ hasTaintFlow + sock.getInputStream().read(b); // $ Source + persister.validate(this.getClass(), new String(b)); // $ Alert } public void persisterValidate5(Socket sock) throws Exception { Persister persister = new Persister(); byte[] b = new byte[] {}; - sock.getInputStream().read(b); - persister.validate(this.getClass(), new String(b), true); // $ hasTaintFlow + sock.getInputStream().read(b); // $ Source + persister.validate(this.getClass(), new String(b), true); // $ Alert } public void persisterValidate6(Socket sock) throws Exception { Persister persister = new Persister(); - persister.validate(this.getClass(), new InputStreamReader(sock.getInputStream()), true); // $ hasTaintFlow + persister.validate(this.getClass(), new InputStreamReader(sock.getInputStream()), true); // $ Alert } public void persisterRead1(Socket sock) throws Exception { Persister persister = new Persister(); - persister.read(this.getClass(), sock.getInputStream()); // $ hasTaintFlow + persister.read(this.getClass(), sock.getInputStream()); // $ Alert } public void persisterRead2(Socket sock) throws Exception { Persister persister = new Persister(); - persister.read(this.getClass(), sock.getInputStream(), true); // $ hasTaintFlow + persister.read(this.getClass(), sock.getInputStream(), true); // $ Alert } public void persisterRead3(Socket sock) throws Exception { Persister persister = new Persister(); - persister.read(this, sock.getInputStream()); // $ hasTaintFlow + persister.read(this, sock.getInputStream()); // $ Alert } public void persisterRead4(Socket sock) throws Exception { Persister persister = new Persister(); - persister.read(this, sock.getInputStream(), true); // $ hasTaintFlow + persister.read(this, sock.getInputStream(), true); // $ Alert } public void persisterRead5(Socket sock) throws Exception { Persister persister = new Persister(); - persister.read(this.getClass(), new InputStreamReader(sock.getInputStream())); // $ hasTaintFlow + persister.read(this.getClass(), new InputStreamReader(sock.getInputStream())); // $ Alert } public void persisterRead6(Socket sock) throws Exception { Persister persister = new Persister(); - persister.read(this.getClass(), new InputStreamReader(sock.getInputStream()), true); // $ hasTaintFlow + persister.read(this.getClass(), new InputStreamReader(sock.getInputStream()), true); // $ Alert } public void persisterRead7(Socket sock) throws Exception { Persister persister = new Persister(); - persister.read(this, new InputStreamReader(sock.getInputStream())); // $ hasTaintFlow + persister.read(this, new InputStreamReader(sock.getInputStream())); // $ Alert } public void persisterRead8(Socket sock) throws Exception { Persister persister = new Persister(); - persister.read(this, new InputStreamReader(sock.getInputStream()), true); // $ hasTaintFlow + persister.read(this, new InputStreamReader(sock.getInputStream()), true); // $ Alert } public void persisterRead9(Socket sock) throws Exception { Persister persister = new Persister(); byte[] b = new byte[] {}; - sock.getInputStream().read(b); - persister.read(this.getClass(), new String(b)); // $ hasTaintFlow + sock.getInputStream().read(b); // $ Source + persister.read(this.getClass(), new String(b)); // $ Alert } public void persisterRead10(Socket sock) throws Exception { Persister persister = new Persister(); byte[] b = new byte[] {}; - sock.getInputStream().read(b); - persister.read(this.getClass(), new String(b), true); // $ hasTaintFlow + sock.getInputStream().read(b); // $ Source + persister.read(this.getClass(), new String(b), true); // $ Alert } public void persisterRead11(Socket sock) throws Exception { Persister persister = new Persister(); byte[] b = new byte[] {}; - sock.getInputStream().read(b); - persister.read(this, new String(b)); // $ hasTaintFlow + sock.getInputStream().read(b); // $ Source + persister.read(this, new String(b)); // $ Alert } public void persisterRead12(Socket sock) throws Exception { Persister persister = new Persister(); byte[] b = new byte[] {}; - sock.getInputStream().read(b); - persister.read(this, new String(b), true); // $ hasTaintFlow + sock.getInputStream().read(b); // $ Source + persister.read(this, new String(b), true); // $ Alert } public void nodeBuilderRead1(Socket sock) throws Exception { - NodeBuilder.read(sock.getInputStream()); // $ hasTaintFlow + NodeBuilder.read(sock.getInputStream()); // $ Alert } public void nodeBuilderRead2(Socket sock) throws Exception { - NodeBuilder.read(new InputStreamReader(sock.getInputStream())); // $ hasTaintFlow + NodeBuilder.read(new InputStreamReader(sock.getInputStream())); // $ Alert } public void documentProviderProvide1(Socket sock) throws Exception { DocumentProvider provider = new DocumentProvider(); - provider.provide(sock.getInputStream()); // $ hasTaintFlow + provider.provide(sock.getInputStream()); // $ Alert } public void documentProviderProvide2(Socket sock) throws Exception { DocumentProvider provider = new DocumentProvider(); - provider.provide(new InputStreamReader(sock.getInputStream())); // $ hasTaintFlow + provider.provide(new InputStreamReader(sock.getInputStream())); // $ Alert } public void streamProviderProvide1(Socket sock) throws Exception { StreamProvider provider = new StreamProvider(); - provider.provide(sock.getInputStream()); // $ hasTaintFlow + provider.provide(sock.getInputStream()); // $ Alert } public void streamProviderProvide2(Socket sock) throws Exception { StreamProvider provider = new StreamProvider(); - provider.provide(new InputStreamReader(sock.getInputStream())); // $ hasTaintFlow + provider.provide(new InputStreamReader(sock.getInputStream())); // $ Alert } public void formatterFormat1(Socket sock) throws Exception { Formatter formatter = new Formatter(); byte[] b = new byte[] {}; - sock.getInputStream().read(b); - formatter.format(new String(b), null); // $ hasTaintFlow + sock.getInputStream().read(b); // $ Source + formatter.format(new String(b), null); // $ Alert } public void formatterFormat2(Socket sock) throws Exception { Formatter formatter = new Formatter(); byte[] b = new byte[] {}; - sock.getInputStream().read(b); - formatter.format(new String(b)); // $ hasTaintFlow + sock.getInputStream().read(b); // $ Source + formatter.format(new String(b)); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-611/TransformerTests.java b/java/ql/test/query-tests/security/CWE-611/TransformerTests.java index afba1790f0cd..2ad0a29b358f 100644 --- a/java/ql/test/query-tests/security/CWE-611/TransformerTests.java +++ b/java/ql/test/query-tests/security/CWE-611/TransformerTests.java @@ -17,8 +17,8 @@ public class TransformerTests { public void unconfiguredTransformerFactory(Socket sock) throws Exception { TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer(); - transformer.transform(new StreamSource(sock.getInputStream()), null); // $ hasTaintFlow - tf.newTransformer(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + transformer.transform(new StreamSource(sock.getInputStream()), null); // $ Alert + tf.newTransformer(new StreamSource(sock.getInputStream())); // $ Alert } public void safeTransformerFactory1(Socket sock) throws Exception { @@ -68,16 +68,16 @@ public void partialConfiguredTransformerFactory1(Socket sock) throws Exception { TransformerFactory tf = TransformerFactory.newInstance(); tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); Transformer transformer = tf.newTransformer(); - transformer.transform(new StreamSource(sock.getInputStream()), null); // $ hasTaintFlow - tf.newTransformer(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + transformer.transform(new StreamSource(sock.getInputStream()), null); // $ Alert + tf.newTransformer(new StreamSource(sock.getInputStream())); // $ Alert } public void partialConfiguredTransformerFactory2(Socket sock) throws Exception { TransformerFactory tf = TransformerFactory.newInstance(); tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); Transformer transformer = tf.newTransformer(); - transformer.transform(new StreamSource(sock.getInputStream()), null); // $ hasTaintFlow - tf.newTransformer(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + transformer.transform(new StreamSource(sock.getInputStream()), null); // $ Alert + tf.newTransformer(new StreamSource(sock.getInputStream())); // $ Alert } public void misConfiguredTransformerFactory1(Socket sock) throws Exception { @@ -85,8 +85,8 @@ public void misConfiguredTransformerFactory1(Socket sock) throws Exception { Transformer transformer = tf.newTransformer(); tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "ab"); tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); - transformer.transform(new StreamSource(sock.getInputStream()), null); // $ hasTaintFlow - tf.newTransformer(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + transformer.transform(new StreamSource(sock.getInputStream()), null); // $ Alert + tf.newTransformer(new StreamSource(sock.getInputStream())); // $ Alert } public void misConfiguredTransformerFactory2(Socket sock) throws Exception { @@ -94,13 +94,13 @@ public void misConfiguredTransformerFactory2(Socket sock) throws Exception { Transformer transformer = tf.newTransformer(); tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "cd"); - transformer.transform(new StreamSource(sock.getInputStream()), null); // $ hasTaintFlow - tf.newTransformer(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + transformer.transform(new StreamSource(sock.getInputStream()), null); // $ Alert + tf.newTransformer(new StreamSource(sock.getInputStream())); // $ Alert } public void unconfiguredSAXTransformerFactory(Socket sock) throws Exception { SAXTransformerFactory sf = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); - sf.newXMLFilter(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + sf.newXMLFilter(new StreamSource(sock.getInputStream())); // $ Alert } public void safeSAXTransformerFactory(Socket sock) throws Exception { @@ -113,31 +113,31 @@ public void safeSAXTransformerFactory(Socket sock) throws Exception { public void partialConfiguredSAXTransformerFactory1(Socket sock) throws Exception { SAXTransformerFactory sf = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); sf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); - sf.newXMLFilter(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + sf.newXMLFilter(new StreamSource(sock.getInputStream())); // $ Alert } public void partialConfiguredSAXTransformerFactory2(Socket sock) throws Exception { SAXTransformerFactory sf = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); sf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); - sf.newXMLFilter(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + sf.newXMLFilter(new StreamSource(sock.getInputStream())); // $ Alert } public void misConfiguredSAXTransformerFactory1(Socket sock) throws Exception { SAXTransformerFactory sf = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); sf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "ab"); sf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); - sf.newXMLFilter(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + sf.newXMLFilter(new StreamSource(sock.getInputStream())); // $ Alert } public void misConfiguredSAXTransformerFactory2(Socket sock) throws Exception { SAXTransformerFactory sf = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); sf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); sf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "cd"); - sf.newXMLFilter(new StreamSource(sock.getInputStream())); // $ hasTaintFlow + sf.newXMLFilter(new StreamSource(sock.getInputStream())); // $ Alert } public void taintedSAXSource(Socket sock) throws Exception { SAXTransformerFactory sf = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); - sf.newXMLFilter(new SAXSource(new InputSource(sock.getInputStream()))); // $ hasTaintFlow + sf.newXMLFilter(new SAXSource(new InputSource(sock.getInputStream()))); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-611/UnmarshallerTests.java b/java/ql/test/query-tests/security/CWE-611/UnmarshallerTests.java index 54efa567aa3b..7516c08c7d39 100644 --- a/java/ql/test/query-tests/security/CWE-611/UnmarshallerTests.java +++ b/java/ql/test/query-tests/security/CWE-611/UnmarshallerTests.java @@ -26,6 +26,6 @@ public void unsafeUnmarshal(Socket sock) throws Exception { SAXParserFactory spf = SAXParserFactory.newInstance(); JAXBContext jc = JAXBContext.newInstance(Object.class); Unmarshaller um = jc.createUnmarshaller(); - um.unmarshal(sock.getInputStream()); // $ hasTaintFlow + um.unmarshal(sock.getInputStream()); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-611/ValidatorTests.java b/java/ql/test/query-tests/security/CWE-611/ValidatorTests.java index 091be21676aa..1464b9c5fc60 100644 --- a/java/ql/test/query-tests/security/CWE-611/ValidatorTests.java +++ b/java/ql/test/query-tests/security/CWE-611/ValidatorTests.java @@ -14,12 +14,12 @@ public class ValidatorTests { @PostMapping(value = "bad") public void bad2(HttpServletRequest request) throws Exception { - ServletInputStream servletInputStream = request.getInputStream(); + ServletInputStream servletInputStream = request.getInputStream(); // $ Source SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); Schema schema = factory.newSchema(); Validator validator = schema.newValidator(); StreamSource source = new StreamSource(servletInputStream); - validator.validate(source); // $ hasTaintFlow + validator.validate(source); // $ Alert } @PostMapping(value = "good") diff --git a/java/ql/test/query-tests/security/CWE-611/XMLDecoderTests.java b/java/ql/test/query-tests/security/CWE-611/XMLDecoderTests.java index 8e75ebc14017..a9ced49512e0 100644 --- a/java/ql/test/query-tests/security/CWE-611/XMLDecoderTests.java +++ b/java/ql/test/query-tests/security/CWE-611/XMLDecoderTests.java @@ -13,9 +13,9 @@ public class XMLDecoderTests { @PostMapping(value = "bad") public void bad3(HttpServletRequest request) throws Exception { - ServletInputStream servletInputStream = request.getInputStream(); + ServletInputStream servletInputStream = request.getInputStream(); // $ Source XMLDecoder xmlDecoder = new XMLDecoder(servletInputStream); - xmlDecoder.readObject(); // $ hasTaintFlow + xmlDecoder.readObject(); // $ Alert } @PostMapping(value = "good") diff --git a/java/ql/test/query-tests/security/CWE-611/XMLReaderTests.java b/java/ql/test/query-tests/security/CWE-611/XMLReaderTests.java index 15536b766b72..7cc09df77639 100644 --- a/java/ql/test/query-tests/security/CWE-611/XMLReaderTests.java +++ b/java/ql/test/query-tests/security/CWE-611/XMLReaderTests.java @@ -13,7 +13,7 @@ public class XMLReaderTests { public void unconfiguredReader(Socket sock) throws Exception { XMLReader reader = XMLReaderFactory.createXMLReader(); - reader.parse(new InputSource(sock.getInputStream())); // $ hasTaintFlow + reader.parse(new InputSource(sock.getInputStream())); // $ Alert } public void safeReaderFromConfig1(Socket sock) throws Exception { @@ -53,21 +53,21 @@ public void partialConfiguredXMLReader1(Socket sock) throws Exception { XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setFeature("http://xml.org/sax/features/external-general-entities", false); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false); - reader.parse(new InputSource(sock.getInputStream())); // $ hasTaintFlow + reader.parse(new InputSource(sock.getInputStream())); // $ Alert } public void partialConfiguredXMLReader2(Socket sock) throws Exception { XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setFeature("http://xml.org/sax/features/external-general-entities", false); reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); - reader.parse(new InputSource(sock.getInputStream())); // $ hasTaintFlow + reader.parse(new InputSource(sock.getInputStream())); // $ Alert } public void partilaConfiguredXMLReader3(Socket sock) throws Exception { XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false); reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); - reader.parse(new InputSource(sock.getInputStream())); // $ hasTaintFlow + reader.parse(new InputSource(sock.getInputStream())); // $ Alert } public void misConfiguredXMLReader1(Socket sock) throws Exception { @@ -75,7 +75,7 @@ public void misConfiguredXMLReader1(Socket sock) throws Exception { reader.setFeature("http://xml.org/sax/features/external-general-entities", true); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false); reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); - reader.parse(new InputSource(sock.getInputStream())); // $ hasTaintFlow + reader.parse(new InputSource(sock.getInputStream())); // $ Alert } public void misConfiguredXMLReader2(Socket sock) throws Exception { @@ -83,7 +83,7 @@ public void misConfiguredXMLReader2(Socket sock) throws Exception { reader.setFeature("http://xml.org/sax/features/external-general-entities", false); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", true); reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); - reader.parse(new InputSource(sock.getInputStream())); // $ hasTaintFlow + reader.parse(new InputSource(sock.getInputStream())); // $ Alert } public void misConfiguredXMLReader3(Socket sock) throws Exception { @@ -91,12 +91,12 @@ public void misConfiguredXMLReader3(Socket sock) throws Exception { reader.setFeature("http://xml.org/sax/features/external-general-entities", false); reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false); reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", true); - reader.parse(new InputSource(sock.getInputStream())); // $ hasTaintFlow + reader.parse(new InputSource(sock.getInputStream())); // $ Alert } public void misConfiguredXMLReader4(Socket sock) throws Exception { XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", false); - reader.parse(new InputSource(sock.getInputStream())); // $ hasTaintFlow + reader.parse(new InputSource(sock.getInputStream())); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-611/XPathExpressionTests.java b/java/ql/test/query-tests/security/CWE-611/XPathExpressionTests.java index 088fdb9afd6e..646222545d72 100644 --- a/java/ql/test/query-tests/security/CWE-611/XPathExpressionTests.java +++ b/java/ql/test/query-tests/security/CWE-611/XPathExpressionTests.java @@ -24,7 +24,7 @@ public void unsafeExpressionTests(Socket sock) throws Exception { XPathFactory xFactory = XPathFactory.newInstance(); XPath path = xFactory.newXPath(); XPathExpression expr = path.compile(""); - expr.evaluate(new InputSource(sock.getInputStream())); // $ hasTaintFlow + expr.evaluate(new InputSource(sock.getInputStream())); // $ Alert } public void safeXPathEvaluateTest(Socket sock) throws Exception { @@ -39,6 +39,6 @@ public void safeXPathEvaluateTest(Socket sock) throws Exception { public void unsafeXPathEvaluateTest(Socket sock) throws Exception { XPathFactory xFactory = XPathFactory.newInstance(); XPath path = xFactory.newXPath(); - path.evaluate("", new InputSource(sock.getInputStream())); // $ hasTaintFlow + path.evaluate("", new InputSource(sock.getInputStream())); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-611/XXE.expected b/java/ql/test/query-tests/security/CWE-611/XXE.expected index e69de29bb2d1..463ea4ec8728 100644 --- a/java/ql/test/query-tests/security/CWE-611/XXE.expected +++ b/java/ql/test/query-tests/security/CWE-611/XXE.expected @@ -0,0 +1,428 @@ +#select +| CdaUtilTests.java:12:22:12:23 | is | CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:12:22:12:23 | is | XML parsing depends on a $@ without guarding against external entity expansion. | CdaUtilTests.java:10:26:10:46 | getInputStream(...) | user-provided value | +| CdaUtilTests.java:13:22:13:25 | iSrc | CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:13:22:13:25 | iSrc | XML parsing depends on a $@ without guarding against external entity expansion. | CdaUtilTests.java:10:26:10:46 | getInputStream(...) | user-provided value | +| CdaUtilTests.java:14:22:14:23 | is | CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:14:22:14:23 | is | XML parsing depends on a $@ without guarding against external entity expansion. | CdaUtilTests.java:10:26:10:46 | getInputStream(...) | user-provided value | +| CdaUtilTests.java:15:22:15:23 | is | CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:15:22:15:23 | is | XML parsing depends on a $@ without guarding against external entity expansion. | CdaUtilTests.java:10:26:10:46 | getInputStream(...) | user-provided value | +| CdaUtilTests.java:16:34:16:35 | is | CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:16:34:16:35 | is | XML parsing depends on a $@ without guarding against external entity expansion. | CdaUtilTests.java:10:26:10:46 | getInputStream(...) | user-provided value | +| CdaUtilTests.java:17:22:17:25 | iSrc | CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:17:22:17:25 | iSrc | XML parsing depends on a $@ without guarding against external entity expansion. | CdaUtilTests.java:10:26:10:46 | getInputStream(...) | user-provided value | +| CdaUtilTests.java:18:22:18:25 | iSrc | CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:18:22:18:25 | iSrc | XML parsing depends on a $@ without guarding against external entity expansion. | CdaUtilTests.java:10:26:10:46 | getInputStream(...) | user-provided value | +| CdaUtilTests.java:19:34:19:37 | iSrc | CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:19:34:19:37 | iSrc | XML parsing depends on a $@ without guarding against external entity expansion. | CdaUtilTests.java:10:26:10:46 | getInputStream(...) | user-provided value | +| CdaUtilTests.java:20:24:20:25 | is | CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:20:24:20:25 | is | XML parsing depends on a $@ without guarding against external entity expansion. | CdaUtilTests.java:10:26:10:46 | getInputStream(...) | user-provided value | +| CdaUtilTests.java:21:24:21:25 | is | CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:21:24:21:25 | is | XML parsing depends on a $@ without guarding against external entity expansion. | CdaUtilTests.java:10:26:10:46 | getInputStream(...) | user-provided value | +| DigesterTests.java:16:24:16:41 | servletInputStream | DigesterTests.java:14:49:14:72 | getInputStream(...) : ServletInputStream | DigesterTests.java:16:24:16:41 | servletInputStream | XML parsing depends on a $@ without guarding against external entity expansion. | DigesterTests.java:14:49:14:72 | getInputStream(...) | user-provided value | +| DocumentBuilderTests.java:14:19:14:39 | getInputStream(...) | DocumentBuilderTests.java:14:19:14:39 | getInputStream(...) | DocumentBuilderTests.java:14:19:14:39 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | DocumentBuilderTests.java:14:19:14:39 | getInputStream(...) | user-provided value | +| DocumentBuilderTests.java:28:19:28:39 | getInputStream(...) | DocumentBuilderTests.java:28:19:28:39 | getInputStream(...) | DocumentBuilderTests.java:28:19:28:39 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | DocumentBuilderTests.java:28:19:28:39 | getInputStream(...) | user-provided value | +| DocumentBuilderTests.java:36:19:36:39 | getInputStream(...) | DocumentBuilderTests.java:36:19:36:39 | getInputStream(...) | DocumentBuilderTests.java:36:19:36:39 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | DocumentBuilderTests.java:36:19:36:39 | getInputStream(...) | user-provided value | +| DocumentBuilderTests.java:44:19:44:39 | getInputStream(...) | DocumentBuilderTests.java:44:19:44:39 | getInputStream(...) | DocumentBuilderTests.java:44:19:44:39 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | DocumentBuilderTests.java:44:19:44:39 | getInputStream(...) | user-provided value | +| DocumentBuilderTests.java:51:19:51:39 | getInputStream(...) | DocumentBuilderTests.java:51:19:51:39 | getInputStream(...) | DocumentBuilderTests.java:51:19:51:39 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | DocumentBuilderTests.java:51:19:51:39 | getInputStream(...) | user-provided value | +| DocumentBuilderTests.java:66:19:66:39 | getInputStream(...) | DocumentBuilderTests.java:66:19:66:39 | getInputStream(...) | DocumentBuilderTests.java:66:19:66:39 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | DocumentBuilderTests.java:66:19:66:39 | getInputStream(...) | user-provided value | +| DocumentBuilderTests.java:73:19:73:39 | getInputStream(...) | DocumentBuilderTests.java:73:19:73:39 | getInputStream(...) | DocumentBuilderTests.java:73:19:73:39 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | DocumentBuilderTests.java:73:19:73:39 | getInputStream(...) | user-provided value | +| DocumentBuilderTests.java:81:19:81:39 | getInputStream(...) | DocumentBuilderTests.java:81:19:81:39 | getInputStream(...) | DocumentBuilderTests.java:81:19:81:39 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | DocumentBuilderTests.java:81:19:81:39 | getInputStream(...) | user-provided value | +| DocumentBuilderTests.java:89:19:89:39 | getInputStream(...) | DocumentBuilderTests.java:89:19:89:39 | getInputStream(...) | DocumentBuilderTests.java:89:19:89:39 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | DocumentBuilderTests.java:89:19:89:39 | getInputStream(...) | user-provided value | +| DocumentBuilderTests.java:96:19:96:41 | getInputSource(...) | DocumentBuilderTests.java:95:54:95:74 | getInputStream(...) : InputStream | DocumentBuilderTests.java:96:19:96:41 | getInputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | DocumentBuilderTests.java:95:54:95:74 | getInputStream(...) | user-provided value | +| DocumentBuilderTests.java:103:19:103:55 | sourceToInputSource(...) | DocumentBuilderTests.java:102:44:102:64 | getInputStream(...) : InputStream | DocumentBuilderTests.java:103:19:103:55 | sourceToInputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | DocumentBuilderTests.java:102:44:102:64 | getInputStream(...) | user-provided value | +| DocumentBuilderTests.java:104:19:104:41 | getInputStream(...) | DocumentBuilderTests.java:102:44:102:64 | getInputStream(...) : InputStream | DocumentBuilderTests.java:104:19:104:41 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | DocumentBuilderTests.java:102:44:102:64 | getInputStream(...) | user-provided value | +| ParserHelperTests.java:12:55:12:78 | getInputStream(...) | ParserHelperTests.java:12:55:12:78 | getInputStream(...) | ParserHelperTests.java:12:55:12:78 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | ParserHelperTests.java:12:55:12:78 | getInputStream(...) | user-provided value | +| SAXBuilderTests.java:8:19:8:39 | getInputStream(...) | SAXBuilderTests.java:8:19:8:39 | getInputStream(...) | SAXBuilderTests.java:8:19:8:39 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXBuilderTests.java:8:19:8:39 | getInputStream(...) | user-provided value | +| SAXBuilderTests.java:20:19:20:39 | getInputStream(...) | SAXBuilderTests.java:20:19:20:39 | getInputStream(...) | SAXBuilderTests.java:20:19:20:39 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXBuilderTests.java:20:19:20:39 | getInputStream(...) | user-provided value | +| SAXParserTests.java:13:18:13:38 | getInputStream(...) | SAXParserTests.java:13:18:13:38 | getInputStream(...) | SAXParserTests.java:13:18:13:38 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXParserTests.java:13:18:13:38 | getInputStream(...) | user-provided value | +| SAXParserTests.java:30:18:30:38 | getInputStream(...) | SAXParserTests.java:30:18:30:38 | getInputStream(...) | SAXParserTests.java:30:18:30:38 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXParserTests.java:30:18:30:38 | getInputStream(...) | user-provided value | +| SAXParserTests.java:38:18:38:38 | getInputStream(...) | SAXParserTests.java:38:18:38:38 | getInputStream(...) | SAXParserTests.java:38:18:38:38 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXParserTests.java:38:18:38:38 | getInputStream(...) | user-provided value | +| SAXParserTests.java:46:18:46:38 | getInputStream(...) | SAXParserTests.java:46:18:46:38 | getInputStream(...) | SAXParserTests.java:46:18:46:38 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXParserTests.java:46:18:46:38 | getInputStream(...) | user-provided value | +| SAXParserTests.java:55:18:55:38 | getInputStream(...) | SAXParserTests.java:55:18:55:38 | getInputStream(...) | SAXParserTests.java:55:18:55:38 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXParserTests.java:55:18:55:38 | getInputStream(...) | user-provided value | +| SAXParserTests.java:64:18:64:38 | getInputStream(...) | SAXParserTests.java:64:18:64:38 | getInputStream(...) | SAXParserTests.java:64:18:64:38 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXParserTests.java:64:18:64:38 | getInputStream(...) | user-provided value | +| SAXParserTests.java:73:18:73:38 | getInputStream(...) | SAXParserTests.java:73:18:73:38 | getInputStream(...) | SAXParserTests.java:73:18:73:38 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXParserTests.java:73:18:73:38 | getInputStream(...) | user-provided value | +| SAXReaderTests.java:8:17:8:37 | getInputStream(...) | SAXReaderTests.java:8:17:8:37 | getInputStream(...) | SAXReaderTests.java:8:17:8:37 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXReaderTests.java:8:17:8:37 | getInputStream(...) | user-provided value | +| SAXReaderTests.java:23:17:23:37 | getInputStream(...) | SAXReaderTests.java:23:17:23:37 | getInputStream(...) | SAXReaderTests.java:23:17:23:37 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXReaderTests.java:23:17:23:37 | getInputStream(...) | user-provided value | +| SAXReaderTests.java:30:17:30:37 | getInputStream(...) | SAXReaderTests.java:30:17:30:37 | getInputStream(...) | SAXReaderTests.java:30:17:30:37 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXReaderTests.java:30:17:30:37 | getInputStream(...) | user-provided value | +| SAXReaderTests.java:37:17:37:37 | getInputStream(...) | SAXReaderTests.java:37:17:37:37 | getInputStream(...) | SAXReaderTests.java:37:17:37:37 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXReaderTests.java:37:17:37:37 | getInputStream(...) | user-provided value | +| SAXReaderTests.java:45:17:45:37 | getInputStream(...) | SAXReaderTests.java:45:17:45:37 | getInputStream(...) | SAXReaderTests.java:45:17:45:37 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXReaderTests.java:45:17:45:37 | getInputStream(...) | user-provided value | +| SAXReaderTests.java:53:17:53:37 | getInputStream(...) | SAXReaderTests.java:53:17:53:37 | getInputStream(...) | SAXReaderTests.java:53:17:53:37 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXReaderTests.java:53:17:53:37 | getInputStream(...) | user-provided value | +| SAXReaderTests.java:61:17:61:37 | getInputStream(...) | SAXReaderTests.java:61:17:61:37 | getInputStream(...) | SAXReaderTests.java:61:17:61:37 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SAXReaderTests.java:61:17:61:37 | getInputStream(...) | user-provided value | +| SAXSourceTests.java:20:18:20:23 | source | SAXSourceTests.java:17:62:17:82 | getInputStream(...) : InputStream | SAXSourceTests.java:20:18:20:23 | source | XML parsing depends on a $@ without guarding against external entity expansion. | SAXSourceTests.java:17:62:17:82 | getInputStream(...) | user-provided value | +| SchemaTests.java:12:39:12:77 | new StreamSource(...) | SchemaTests.java:12:56:12:76 | getInputStream(...) : InputStream | SchemaTests.java:12:39:12:77 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SchemaTests.java:12:56:12:76 | getInputStream(...) | user-provided value | +| SchemaTests.java:25:39:25:77 | new StreamSource(...) | SchemaTests.java:25:56:25:76 | getInputStream(...) : InputStream | SchemaTests.java:25:39:25:77 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SchemaTests.java:25:56:25:76 | getInputStream(...) | user-provided value | +| SchemaTests.java:31:39:31:77 | new StreamSource(...) | SchemaTests.java:31:56:31:76 | getInputStream(...) : InputStream | SchemaTests.java:31:39:31:77 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SchemaTests.java:31:56:31:76 | getInputStream(...) | user-provided value | +| SchemaTests.java:38:39:38:77 | new StreamSource(...) | SchemaTests.java:38:56:38:76 | getInputStream(...) : InputStream | SchemaTests.java:38:39:38:77 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SchemaTests.java:38:56:38:76 | getInputStream(...) | user-provided value | +| SchemaTests.java:45:39:45:77 | new StreamSource(...) | SchemaTests.java:45:56:45:76 | getInputStream(...) : InputStream | SchemaTests.java:45:39:45:77 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SchemaTests.java:45:56:45:76 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:14:41:14:61 | getInputStream(...) | SimpleXMLTests.java:14:41:14:61 | getInputStream(...) | SimpleXMLTests.java:14:41:14:61 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:14:41:14:61 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:19:41:19:61 | getInputStream(...) | SimpleXMLTests.java:19:41:19:61 | getInputStream(...) | SimpleXMLTests.java:19:41:19:61 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:19:41:19:61 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:24:41:24:84 | new InputStreamReader(...) | SimpleXMLTests.java:24:63:24:83 | getInputStream(...) : InputStream | SimpleXMLTests.java:24:41:24:84 | new InputStreamReader(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:24:63:24:83 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:31:41:31:53 | new String(...) | SimpleXMLTests.java:30:5:30:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:31:41:31:53 | new String(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:30:5:30:25 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:38:41:38:53 | new String(...) | SimpleXMLTests.java:37:5:37:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:38:41:38:53 | new String(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:37:5:37:25 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:43:41:43:84 | new InputStreamReader(...) | SimpleXMLTests.java:43:63:43:83 | getInputStream(...) : InputStream | SimpleXMLTests.java:43:41:43:84 | new InputStreamReader(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:43:63:43:83 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:48:37:48:57 | getInputStream(...) | SimpleXMLTests.java:48:37:48:57 | getInputStream(...) | SimpleXMLTests.java:48:37:48:57 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:48:37:48:57 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:53:37:53:57 | getInputStream(...) | SimpleXMLTests.java:53:37:53:57 | getInputStream(...) | SimpleXMLTests.java:53:37:53:57 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:53:37:53:57 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:58:26:58:46 | getInputStream(...) | SimpleXMLTests.java:58:26:58:46 | getInputStream(...) | SimpleXMLTests.java:58:26:58:46 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:58:26:58:46 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:63:26:63:46 | getInputStream(...) | SimpleXMLTests.java:63:26:63:46 | getInputStream(...) | SimpleXMLTests.java:63:26:63:46 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:63:26:63:46 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:68:37:68:80 | new InputStreamReader(...) | SimpleXMLTests.java:68:59:68:79 | getInputStream(...) : InputStream | SimpleXMLTests.java:68:37:68:80 | new InputStreamReader(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:68:59:68:79 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:73:37:73:80 | new InputStreamReader(...) | SimpleXMLTests.java:73:59:73:79 | getInputStream(...) : InputStream | SimpleXMLTests.java:73:37:73:80 | new InputStreamReader(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:73:59:73:79 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:78:26:78:69 | new InputStreamReader(...) | SimpleXMLTests.java:78:48:78:68 | getInputStream(...) : InputStream | SimpleXMLTests.java:78:26:78:69 | new InputStreamReader(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:78:48:78:68 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:83:26:83:69 | new InputStreamReader(...) | SimpleXMLTests.java:83:48:83:68 | getInputStream(...) : InputStream | SimpleXMLTests.java:83:26:83:69 | new InputStreamReader(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:83:48:83:68 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:90:37:90:49 | new String(...) | SimpleXMLTests.java:89:5:89:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:90:37:90:49 | new String(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:89:5:89:25 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:97:37:97:49 | new String(...) | SimpleXMLTests.java:96:5:96:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:97:37:97:49 | new String(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:96:5:96:25 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:104:26:104:38 | new String(...) | SimpleXMLTests.java:103:5:103:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:104:26:104:38 | new String(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:103:5:103:25 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:111:26:111:38 | new String(...) | SimpleXMLTests.java:110:5:110:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:111:26:111:38 | new String(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:110:5:110:25 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:115:22:115:42 | getInputStream(...) | SimpleXMLTests.java:115:22:115:42 | getInputStream(...) | SimpleXMLTests.java:115:22:115:42 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:115:22:115:42 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:119:22:119:65 | new InputStreamReader(...) | SimpleXMLTests.java:119:44:119:64 | getInputStream(...) : InputStream | SimpleXMLTests.java:119:22:119:65 | new InputStreamReader(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:119:44:119:64 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:124:22:124:42 | getInputStream(...) | SimpleXMLTests.java:124:22:124:42 | getInputStream(...) | SimpleXMLTests.java:124:22:124:42 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:124:22:124:42 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:129:22:129:65 | new InputStreamReader(...) | SimpleXMLTests.java:129:44:129:64 | getInputStream(...) : InputStream | SimpleXMLTests.java:129:22:129:65 | new InputStreamReader(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:129:44:129:64 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:134:22:134:42 | getInputStream(...) | SimpleXMLTests.java:134:22:134:42 | getInputStream(...) | SimpleXMLTests.java:134:22:134:42 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:134:22:134:42 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:139:22:139:65 | new InputStreamReader(...) | SimpleXMLTests.java:139:44:139:64 | getInputStream(...) : InputStream | SimpleXMLTests.java:139:22:139:65 | new InputStreamReader(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:139:44:139:64 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:146:22:146:34 | new String(...) | SimpleXMLTests.java:145:5:145:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:146:22:146:34 | new String(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:145:5:145:25 | getInputStream(...) | user-provided value | +| SimpleXMLTests.java:153:22:153:34 | new String(...) | SimpleXMLTests.java:152:5:152:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:153:22:153:34 | new String(...) | XML parsing depends on a $@ without guarding against external entity expansion. | SimpleXMLTests.java:152:5:152:25 | getInputStream(...) | user-provided value | +| TransformerTests.java:20:27:20:65 | new StreamSource(...) | TransformerTests.java:20:44:20:64 | getInputStream(...) : InputStream | TransformerTests.java:20:27:20:65 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:20:44:20:64 | getInputStream(...) | user-provided value | +| TransformerTests.java:21:23:21:61 | new StreamSource(...) | TransformerTests.java:21:40:21:60 | getInputStream(...) : InputStream | TransformerTests.java:21:23:21:61 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:21:40:21:60 | getInputStream(...) | user-provided value | +| TransformerTests.java:71:27:71:65 | new StreamSource(...) | TransformerTests.java:71:44:71:64 | getInputStream(...) : InputStream | TransformerTests.java:71:27:71:65 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:71:44:71:64 | getInputStream(...) | user-provided value | +| TransformerTests.java:72:23:72:61 | new StreamSource(...) | TransformerTests.java:72:40:72:60 | getInputStream(...) : InputStream | TransformerTests.java:72:23:72:61 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:72:40:72:60 | getInputStream(...) | user-provided value | +| TransformerTests.java:79:27:79:65 | new StreamSource(...) | TransformerTests.java:79:44:79:64 | getInputStream(...) : InputStream | TransformerTests.java:79:27:79:65 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:79:44:79:64 | getInputStream(...) | user-provided value | +| TransformerTests.java:80:23:80:61 | new StreamSource(...) | TransformerTests.java:80:40:80:60 | getInputStream(...) : InputStream | TransformerTests.java:80:23:80:61 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:80:40:80:60 | getInputStream(...) | user-provided value | +| TransformerTests.java:88:27:88:65 | new StreamSource(...) | TransformerTests.java:88:44:88:64 | getInputStream(...) : InputStream | TransformerTests.java:88:27:88:65 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:88:44:88:64 | getInputStream(...) | user-provided value | +| TransformerTests.java:89:23:89:61 | new StreamSource(...) | TransformerTests.java:89:40:89:60 | getInputStream(...) : InputStream | TransformerTests.java:89:23:89:61 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:89:40:89:60 | getInputStream(...) | user-provided value | +| TransformerTests.java:97:27:97:65 | new StreamSource(...) | TransformerTests.java:97:44:97:64 | getInputStream(...) : InputStream | TransformerTests.java:97:27:97:65 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:97:44:97:64 | getInputStream(...) | user-provided value | +| TransformerTests.java:98:23:98:61 | new StreamSource(...) | TransformerTests.java:98:40:98:60 | getInputStream(...) : InputStream | TransformerTests.java:98:23:98:61 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:98:40:98:60 | getInputStream(...) | user-provided value | +| TransformerTests.java:103:21:103:59 | new StreamSource(...) | TransformerTests.java:103:38:103:58 | getInputStream(...) : InputStream | TransformerTests.java:103:21:103:59 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:103:38:103:58 | getInputStream(...) | user-provided value | +| TransformerTests.java:116:21:116:59 | new StreamSource(...) | TransformerTests.java:116:38:116:58 | getInputStream(...) : InputStream | TransformerTests.java:116:21:116:59 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:116:38:116:58 | getInputStream(...) | user-provided value | +| TransformerTests.java:122:21:122:59 | new StreamSource(...) | TransformerTests.java:122:38:122:58 | getInputStream(...) : InputStream | TransformerTests.java:122:21:122:59 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:122:38:122:58 | getInputStream(...) | user-provided value | +| TransformerTests.java:129:21:129:59 | new StreamSource(...) | TransformerTests.java:129:38:129:58 | getInputStream(...) : InputStream | TransformerTests.java:129:21:129:59 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:129:38:129:58 | getInputStream(...) | user-provided value | +| TransformerTests.java:136:21:136:59 | new StreamSource(...) | TransformerTests.java:136:38:136:58 | getInputStream(...) : InputStream | TransformerTests.java:136:21:136:59 | new StreamSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:136:38:136:58 | getInputStream(...) | user-provided value | +| TransformerTests.java:141:21:141:73 | new SAXSource(...) | TransformerTests.java:141:51:141:71 | getInputStream(...) : InputStream | TransformerTests.java:141:21:141:73 | new SAXSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:141:51:141:71 | getInputStream(...) | user-provided value | +| UnmarshallerTests.java:29:18:29:38 | getInputStream(...) | UnmarshallerTests.java:29:18:29:38 | getInputStream(...) | UnmarshallerTests.java:29:18:29:38 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | UnmarshallerTests.java:29:18:29:38 | getInputStream(...) | user-provided value | +| ValidatorTests.java:22:28:22:33 | source | ValidatorTests.java:17:49:17:72 | getInputStream(...) : ServletInputStream | ValidatorTests.java:22:28:22:33 | source | XML parsing depends on a $@ without guarding against external entity expansion. | ValidatorTests.java:17:49:17:72 | getInputStream(...) | user-provided value | +| XMLDecoderTests.java:18:9:18:18 | xmlDecoder | XMLDecoderTests.java:16:49:16:72 | getInputStream(...) : ServletInputStream | XMLDecoderTests.java:18:9:18:18 | xmlDecoder | XML parsing depends on a $@ without guarding against external entity expansion. | XMLDecoderTests.java:16:49:16:72 | getInputStream(...) | user-provided value | +| XMLReaderTests.java:16:18:16:55 | new InputSource(...) | XMLReaderTests.java:16:34:16:54 | getInputStream(...) : InputStream | XMLReaderTests.java:16:18:16:55 | new InputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XMLReaderTests.java:16:34:16:54 | getInputStream(...) | user-provided value | +| XMLReaderTests.java:56:18:56:55 | new InputSource(...) | XMLReaderTests.java:56:34:56:54 | getInputStream(...) : InputStream | XMLReaderTests.java:56:18:56:55 | new InputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XMLReaderTests.java:56:34:56:54 | getInputStream(...) | user-provided value | +| XMLReaderTests.java:63:18:63:55 | new InputSource(...) | XMLReaderTests.java:63:34:63:54 | getInputStream(...) : InputStream | XMLReaderTests.java:63:18:63:55 | new InputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XMLReaderTests.java:63:34:63:54 | getInputStream(...) | user-provided value | +| XMLReaderTests.java:70:18:70:55 | new InputSource(...) | XMLReaderTests.java:70:34:70:54 | getInputStream(...) : InputStream | XMLReaderTests.java:70:18:70:55 | new InputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XMLReaderTests.java:70:34:70:54 | getInputStream(...) | user-provided value | +| XMLReaderTests.java:78:18:78:55 | new InputSource(...) | XMLReaderTests.java:78:34:78:54 | getInputStream(...) : InputStream | XMLReaderTests.java:78:18:78:55 | new InputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XMLReaderTests.java:78:34:78:54 | getInputStream(...) | user-provided value | +| XMLReaderTests.java:86:18:86:55 | new InputSource(...) | XMLReaderTests.java:86:34:86:54 | getInputStream(...) : InputStream | XMLReaderTests.java:86:18:86:55 | new InputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XMLReaderTests.java:86:34:86:54 | getInputStream(...) | user-provided value | +| XMLReaderTests.java:94:18:94:55 | new InputSource(...) | XMLReaderTests.java:94:34:94:54 | getInputStream(...) : InputStream | XMLReaderTests.java:94:18:94:55 | new InputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XMLReaderTests.java:94:34:94:54 | getInputStream(...) | user-provided value | +| XMLReaderTests.java:100:18:100:55 | new InputSource(...) | XMLReaderTests.java:100:34:100:54 | getInputStream(...) : InputStream | XMLReaderTests.java:100:18:100:55 | new InputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XMLReaderTests.java:100:34:100:54 | getInputStream(...) | user-provided value | +| XPathExpressionTests.java:27:19:27:56 | new InputSource(...) | XPathExpressionTests.java:27:35:27:55 | getInputStream(...) : InputStream | XPathExpressionTests.java:27:19:27:56 | new InputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XPathExpressionTests.java:27:35:27:55 | getInputStream(...) | user-provided value | +| XPathExpressionTests.java:42:23:42:60 | new InputSource(...) | XPathExpressionTests.java:42:39:42:59 | getInputStream(...) : InputStream | XPathExpressionTests.java:42:23:42:60 | new InputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XPathExpressionTests.java:42:39:42:59 | getInputStream(...) | user-provided value | +| XmlInputFactoryTests.java:9:35:9:55 | getInputStream(...) | XmlInputFactoryTests.java:9:35:9:55 | getInputStream(...) | XmlInputFactoryTests.java:9:35:9:55 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XmlInputFactoryTests.java:9:35:9:55 | getInputStream(...) | user-provided value | +| XmlInputFactoryTests.java:10:34:10:54 | getInputStream(...) | XmlInputFactoryTests.java:10:34:10:54 | getInputStream(...) | XmlInputFactoryTests.java:10:34:10:54 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XmlInputFactoryTests.java:10:34:10:54 | getInputStream(...) | user-provided value | +| XmlInputFactoryTests.java:24:35:24:55 | getInputStream(...) | XmlInputFactoryTests.java:24:35:24:55 | getInputStream(...) | XmlInputFactoryTests.java:24:35:24:55 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XmlInputFactoryTests.java:24:35:24:55 | getInputStream(...) | user-provided value | +| XmlInputFactoryTests.java:25:34:25:54 | getInputStream(...) | XmlInputFactoryTests.java:25:34:25:54 | getInputStream(...) | XmlInputFactoryTests.java:25:34:25:54 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XmlInputFactoryTests.java:25:34:25:54 | getInputStream(...) | user-provided value | +| XmlInputFactoryTests.java:31:35:31:55 | getInputStream(...) | XmlInputFactoryTests.java:31:35:31:55 | getInputStream(...) | XmlInputFactoryTests.java:31:35:31:55 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XmlInputFactoryTests.java:31:35:31:55 | getInputStream(...) | user-provided value | +| XmlInputFactoryTests.java:32:34:32:54 | getInputStream(...) | XmlInputFactoryTests.java:32:34:32:54 | getInputStream(...) | XmlInputFactoryTests.java:32:34:32:54 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XmlInputFactoryTests.java:32:34:32:54 | getInputStream(...) | user-provided value | +| XmlInputFactoryTests.java:39:35:39:55 | getInputStream(...) | XmlInputFactoryTests.java:39:35:39:55 | getInputStream(...) | XmlInputFactoryTests.java:39:35:39:55 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XmlInputFactoryTests.java:39:35:39:55 | getInputStream(...) | user-provided value | +| XmlInputFactoryTests.java:40:34:40:54 | getInputStream(...) | XmlInputFactoryTests.java:40:34:40:54 | getInputStream(...) | XmlInputFactoryTests.java:40:34:40:54 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XmlInputFactoryTests.java:40:34:40:54 | getInputStream(...) | user-provided value | +| XmlInputFactoryTests.java:47:35:47:55 | getInputStream(...) | XmlInputFactoryTests.java:47:35:47:55 | getInputStream(...) | XmlInputFactoryTests.java:47:35:47:55 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XmlInputFactoryTests.java:47:35:47:55 | getInputStream(...) | user-provided value | +| XmlInputFactoryTests.java:48:34:48:54 | getInputStream(...) | XmlInputFactoryTests.java:48:34:48:54 | getInputStream(...) | XmlInputFactoryTests.java:48:34:48:54 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XmlInputFactoryTests.java:48:34:48:54 | getInputStream(...) | user-provided value | +| XmlInputFactoryTests.java:55:35:55:55 | getInputStream(...) | XmlInputFactoryTests.java:55:35:55:55 | getInputStream(...) | XmlInputFactoryTests.java:55:35:55:55 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XmlInputFactoryTests.java:55:35:55:55 | getInputStream(...) | user-provided value | +| XmlInputFactoryTests.java:56:34:56:54 | getInputStream(...) | XmlInputFactoryTests.java:56:34:56:54 | getInputStream(...) | XmlInputFactoryTests.java:56:34:56:54 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XmlInputFactoryTests.java:56:34:56:54 | getInputStream(...) | user-provided value | +edges +| CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:11:66:11:67 | is : InputStream | provenance | Src:MaD:1 | +| CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:12:22:12:23 | is | provenance | Src:MaD:1 | +| CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:14:22:14:23 | is | provenance | Src:MaD:1 | +| CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:15:22:15:23 | is | provenance | Src:MaD:1 | +| CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:16:34:16:35 | is | provenance | Src:MaD:1 | +| CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:20:24:20:25 | is | provenance | Src:MaD:1 | +| CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | CdaUtilTests.java:21:24:21:25 | is | provenance | Src:MaD:1 | +| CdaUtilTests.java:11:28:11:69 | new InputSource(...) : InputSource | CdaUtilTests.java:13:22:13:25 | iSrc | provenance | | +| CdaUtilTests.java:11:28:11:69 | new InputSource(...) : InputSource | CdaUtilTests.java:17:22:17:25 | iSrc | provenance | | +| CdaUtilTests.java:11:28:11:69 | new InputSource(...) : InputSource | CdaUtilTests.java:18:22:18:25 | iSrc | provenance | | +| CdaUtilTests.java:11:28:11:69 | new InputSource(...) : InputSource | CdaUtilTests.java:19:34:19:37 | iSrc | provenance | | +| CdaUtilTests.java:11:44:11:68 | new InputStreamReader(...) : InputStreamReader | CdaUtilTests.java:11:28:11:69 | new InputSource(...) : InputSource | provenance | MaD:13 | +| CdaUtilTests.java:11:66:11:67 | is : InputStream | CdaUtilTests.java:11:44:11:68 | new InputStreamReader(...) : InputStreamReader | provenance | MaD:5 | +| DigesterTests.java:14:49:14:72 | getInputStream(...) : ServletInputStream | DigesterTests.java:16:24:16:41 | servletInputStream | provenance | Src:MaD:2 | +| DocumentBuilderTests.java:95:24:95:76 | new SAXSource(...) : SAXSource | DocumentBuilderTests.java:96:19:96:24 | source : SAXSource | provenance | | +| DocumentBuilderTests.java:95:38:95:75 | new InputSource(...) : InputSource | DocumentBuilderTests.java:95:24:95:76 | new SAXSource(...) : SAXSource | provenance | MaD:7 | +| DocumentBuilderTests.java:95:54:95:74 | getInputStream(...) : InputStream | DocumentBuilderTests.java:95:38:95:75 | new InputSource(...) : InputSource | provenance | Src:MaD:1 MaD:13 | +| DocumentBuilderTests.java:96:19:96:24 | source : SAXSource | DocumentBuilderTests.java:96:19:96:41 | getInputSource(...) | provenance | MaD:9 | +| DocumentBuilderTests.java:102:27:102:65 | new StreamSource(...) : StreamSource | DocumentBuilderTests.java:103:49:103:54 | source : StreamSource | provenance | | +| DocumentBuilderTests.java:102:27:102:65 | new StreamSource(...) : StreamSource | DocumentBuilderTests.java:104:19:104:24 | source : StreamSource | provenance | | +| DocumentBuilderTests.java:102:44:102:64 | getInputStream(...) : InputStream | DocumentBuilderTests.java:102:27:102:65 | new StreamSource(...) : StreamSource | provenance | Src:MaD:1 MaD:11 | +| DocumentBuilderTests.java:103:49:103:54 | source : StreamSource | DocumentBuilderTests.java:103:19:103:55 | sourceToInputSource(...) | provenance | MaD:10 | +| DocumentBuilderTests.java:104:19:104:24 | source : StreamSource | DocumentBuilderTests.java:104:19:104:41 | getInputStream(...) | provenance | MaD:12 | +| SAXSourceTests.java:17:24:17:84 | new SAXSource(...) : SAXSource | SAXSourceTests.java:20:18:20:23 | source | provenance | | +| SAXSourceTests.java:17:46:17:83 | new InputSource(...) : InputSource | SAXSourceTests.java:17:24:17:84 | new SAXSource(...) : SAXSource | provenance | MaD:8 | +| SAXSourceTests.java:17:62:17:82 | getInputStream(...) : InputStream | SAXSourceTests.java:17:46:17:83 | new InputSource(...) : InputSource | provenance | Src:MaD:1 MaD:13 | +| SchemaTests.java:12:56:12:76 | getInputStream(...) : InputStream | SchemaTests.java:12:39:12:77 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| SchemaTests.java:25:56:25:76 | getInputStream(...) : InputStream | SchemaTests.java:25:39:25:77 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| SchemaTests.java:31:56:31:76 | getInputStream(...) : InputStream | SchemaTests.java:31:39:31:77 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| SchemaTests.java:38:56:38:76 | getInputStream(...) : InputStream | SchemaTests.java:38:39:38:77 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| SchemaTests.java:45:56:45:76 | getInputStream(...) : InputStream | SchemaTests.java:45:39:45:77 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| SimpleXMLTests.java:24:63:24:83 | getInputStream(...) : InputStream | SimpleXMLTests.java:24:41:24:84 | new InputStreamReader(...) | provenance | Src:MaD:1 MaD:5 | +| SimpleXMLTests.java:30:5:30:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:30:32:30:32 | b [post update] : byte[] | provenance | Src:MaD:1 MaD:4 | +| SimpleXMLTests.java:30:32:30:32 | b [post update] : byte[] | SimpleXMLTests.java:31:52:31:52 | b : byte[] | provenance | | +| SimpleXMLTests.java:31:52:31:52 | b : byte[] | SimpleXMLTests.java:31:41:31:53 | new String(...) | provenance | MaD:6 | +| SimpleXMLTests.java:37:5:37:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:37:32:37:32 | b [post update] : byte[] | provenance | Src:MaD:1 MaD:4 | +| SimpleXMLTests.java:37:32:37:32 | b [post update] : byte[] | SimpleXMLTests.java:38:52:38:52 | b : byte[] | provenance | | +| SimpleXMLTests.java:38:52:38:52 | b : byte[] | SimpleXMLTests.java:38:41:38:53 | new String(...) | provenance | MaD:6 | +| SimpleXMLTests.java:43:63:43:83 | getInputStream(...) : InputStream | SimpleXMLTests.java:43:41:43:84 | new InputStreamReader(...) | provenance | Src:MaD:1 MaD:5 | +| SimpleXMLTests.java:68:59:68:79 | getInputStream(...) : InputStream | SimpleXMLTests.java:68:37:68:80 | new InputStreamReader(...) | provenance | Src:MaD:1 MaD:5 | +| SimpleXMLTests.java:73:59:73:79 | getInputStream(...) : InputStream | SimpleXMLTests.java:73:37:73:80 | new InputStreamReader(...) | provenance | Src:MaD:1 MaD:5 | +| SimpleXMLTests.java:78:48:78:68 | getInputStream(...) : InputStream | SimpleXMLTests.java:78:26:78:69 | new InputStreamReader(...) | provenance | Src:MaD:1 MaD:5 | +| SimpleXMLTests.java:83:48:83:68 | getInputStream(...) : InputStream | SimpleXMLTests.java:83:26:83:69 | new InputStreamReader(...) | provenance | Src:MaD:1 MaD:5 | +| SimpleXMLTests.java:89:5:89:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:89:32:89:32 | b [post update] : byte[] | provenance | Src:MaD:1 MaD:4 | +| SimpleXMLTests.java:89:32:89:32 | b [post update] : byte[] | SimpleXMLTests.java:90:48:90:48 | b : byte[] | provenance | | +| SimpleXMLTests.java:90:48:90:48 | b : byte[] | SimpleXMLTests.java:90:37:90:49 | new String(...) | provenance | MaD:6 | +| SimpleXMLTests.java:96:5:96:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:96:32:96:32 | b [post update] : byte[] | provenance | Src:MaD:1 MaD:4 | +| SimpleXMLTests.java:96:32:96:32 | b [post update] : byte[] | SimpleXMLTests.java:97:48:97:48 | b : byte[] | provenance | | +| SimpleXMLTests.java:97:48:97:48 | b : byte[] | SimpleXMLTests.java:97:37:97:49 | new String(...) | provenance | MaD:6 | +| SimpleXMLTests.java:103:5:103:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:103:32:103:32 | b [post update] : byte[] | provenance | Src:MaD:1 MaD:4 | +| SimpleXMLTests.java:103:32:103:32 | b [post update] : byte[] | SimpleXMLTests.java:104:37:104:37 | b : byte[] | provenance | | +| SimpleXMLTests.java:104:37:104:37 | b : byte[] | SimpleXMLTests.java:104:26:104:38 | new String(...) | provenance | MaD:6 | +| SimpleXMLTests.java:110:5:110:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:110:32:110:32 | b [post update] : byte[] | provenance | Src:MaD:1 MaD:4 | +| SimpleXMLTests.java:110:32:110:32 | b [post update] : byte[] | SimpleXMLTests.java:111:37:111:37 | b : byte[] | provenance | | +| SimpleXMLTests.java:111:37:111:37 | b : byte[] | SimpleXMLTests.java:111:26:111:38 | new String(...) | provenance | MaD:6 | +| SimpleXMLTests.java:119:44:119:64 | getInputStream(...) : InputStream | SimpleXMLTests.java:119:22:119:65 | new InputStreamReader(...) | provenance | Src:MaD:1 MaD:5 | +| SimpleXMLTests.java:129:44:129:64 | getInputStream(...) : InputStream | SimpleXMLTests.java:129:22:129:65 | new InputStreamReader(...) | provenance | Src:MaD:1 MaD:5 | +| SimpleXMLTests.java:139:44:139:64 | getInputStream(...) : InputStream | SimpleXMLTests.java:139:22:139:65 | new InputStreamReader(...) | provenance | Src:MaD:1 MaD:5 | +| SimpleXMLTests.java:145:5:145:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:145:32:145:32 | b [post update] : byte[] | provenance | Src:MaD:1 MaD:4 | +| SimpleXMLTests.java:145:32:145:32 | b [post update] : byte[] | SimpleXMLTests.java:146:33:146:33 | b : byte[] | provenance | | +| SimpleXMLTests.java:146:33:146:33 | b : byte[] | SimpleXMLTests.java:146:22:146:34 | new String(...) | provenance | MaD:6 | +| SimpleXMLTests.java:152:5:152:25 | getInputStream(...) : InputStream | SimpleXMLTests.java:152:32:152:32 | b [post update] : byte[] | provenance | Src:MaD:1 MaD:4 | +| SimpleXMLTests.java:152:32:152:32 | b [post update] : byte[] | SimpleXMLTests.java:153:33:153:33 | b : byte[] | provenance | | +| SimpleXMLTests.java:153:33:153:33 | b : byte[] | SimpleXMLTests.java:153:22:153:34 | new String(...) | provenance | MaD:6 | +| TransformerTests.java:20:44:20:64 | getInputStream(...) : InputStream | TransformerTests.java:20:27:20:65 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:21:40:21:60 | getInputStream(...) : InputStream | TransformerTests.java:21:23:21:61 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:71:44:71:64 | getInputStream(...) : InputStream | TransformerTests.java:71:27:71:65 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:72:40:72:60 | getInputStream(...) : InputStream | TransformerTests.java:72:23:72:61 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:79:44:79:64 | getInputStream(...) : InputStream | TransformerTests.java:79:27:79:65 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:80:40:80:60 | getInputStream(...) : InputStream | TransformerTests.java:80:23:80:61 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:88:44:88:64 | getInputStream(...) : InputStream | TransformerTests.java:88:27:88:65 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:89:40:89:60 | getInputStream(...) : InputStream | TransformerTests.java:89:23:89:61 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:97:44:97:64 | getInputStream(...) : InputStream | TransformerTests.java:97:27:97:65 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:98:40:98:60 | getInputStream(...) : InputStream | TransformerTests.java:98:23:98:61 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:103:38:103:58 | getInputStream(...) : InputStream | TransformerTests.java:103:21:103:59 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:116:38:116:58 | getInputStream(...) : InputStream | TransformerTests.java:116:21:116:59 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:122:38:122:58 | getInputStream(...) : InputStream | TransformerTests.java:122:21:122:59 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:129:38:129:58 | getInputStream(...) : InputStream | TransformerTests.java:129:21:129:59 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:136:38:136:58 | getInputStream(...) : InputStream | TransformerTests.java:136:21:136:59 | new StreamSource(...) | provenance | Src:MaD:1 MaD:11 | +| TransformerTests.java:141:35:141:72 | new InputSource(...) : InputSource | TransformerTests.java:141:21:141:73 | new SAXSource(...) | provenance | MaD:7 | +| TransformerTests.java:141:51:141:71 | getInputStream(...) : InputStream | TransformerTests.java:141:35:141:72 | new InputSource(...) : InputSource | provenance | Src:MaD:1 MaD:13 | +| ValidatorTests.java:17:49:17:72 | getInputStream(...) : ServletInputStream | ValidatorTests.java:21:48:21:65 | servletInputStream : ServletInputStream | provenance | Src:MaD:2 | +| ValidatorTests.java:21:31:21:66 | new StreamSource(...) : StreamSource | ValidatorTests.java:22:28:22:33 | source | provenance | | +| ValidatorTests.java:21:48:21:65 | servletInputStream : ServletInputStream | ValidatorTests.java:21:31:21:66 | new StreamSource(...) : StreamSource | provenance | MaD:11 | +| XMLDecoderTests.java:16:49:16:72 | getInputStream(...) : ServletInputStream | XMLDecoderTests.java:17:48:17:65 | servletInputStream : ServletInputStream | provenance | Src:MaD:2 | +| XMLDecoderTests.java:17:33:17:66 | new XMLDecoder(...) : XMLDecoder | XMLDecoderTests.java:18:9:18:18 | xmlDecoder | provenance | | +| XMLDecoderTests.java:17:48:17:65 | servletInputStream : ServletInputStream | XMLDecoderTests.java:17:33:17:66 | new XMLDecoder(...) : XMLDecoder | provenance | MaD:3 | +| XMLReaderTests.java:16:34:16:54 | getInputStream(...) : InputStream | XMLReaderTests.java:16:18:16:55 | new InputSource(...) | provenance | Src:MaD:1 MaD:13 | +| XMLReaderTests.java:56:34:56:54 | getInputStream(...) : InputStream | XMLReaderTests.java:56:18:56:55 | new InputSource(...) | provenance | Src:MaD:1 MaD:13 | +| XMLReaderTests.java:63:34:63:54 | getInputStream(...) : InputStream | XMLReaderTests.java:63:18:63:55 | new InputSource(...) | provenance | Src:MaD:1 MaD:13 | +| XMLReaderTests.java:70:34:70:54 | getInputStream(...) : InputStream | XMLReaderTests.java:70:18:70:55 | new InputSource(...) | provenance | Src:MaD:1 MaD:13 | +| XMLReaderTests.java:78:34:78:54 | getInputStream(...) : InputStream | XMLReaderTests.java:78:18:78:55 | new InputSource(...) | provenance | Src:MaD:1 MaD:13 | +| XMLReaderTests.java:86:34:86:54 | getInputStream(...) : InputStream | XMLReaderTests.java:86:18:86:55 | new InputSource(...) | provenance | Src:MaD:1 MaD:13 | +| XMLReaderTests.java:94:34:94:54 | getInputStream(...) : InputStream | XMLReaderTests.java:94:18:94:55 | new InputSource(...) | provenance | Src:MaD:1 MaD:13 | +| XMLReaderTests.java:100:34:100:54 | getInputStream(...) : InputStream | XMLReaderTests.java:100:18:100:55 | new InputSource(...) | provenance | Src:MaD:1 MaD:13 | +| XPathExpressionTests.java:27:35:27:55 | getInputStream(...) : InputStream | XPathExpressionTests.java:27:19:27:56 | new InputSource(...) | provenance | Src:MaD:1 MaD:13 | +| XPathExpressionTests.java:42:39:42:59 | getInputStream(...) : InputStream | XPathExpressionTests.java:42:23:42:60 | new InputSource(...) | provenance | Src:MaD:1 MaD:13 | +models +| 1 | Source: java.net; Socket; false; getInputStream; (); ; ReturnValue; remote; manual | +| 2 | Source: javax.servlet; ServletRequest; false; getInputStream; (); ; ReturnValue; remote; manual | +| 3 | Summary: java.beans; XMLDecoder; false; XMLDecoder; ; ; Argument[0]; Argument[this]; taint; manual | +| 4 | Summary: java.io; InputStream; true; read; (byte[]); ; Argument[this]; Argument[0]; taint; manual | +| 5 | Summary: java.io; InputStreamReader; false; InputStreamReader; ; ; Argument[0]; Argument[this]; taint; manual | +| 6 | Summary: java.lang; String; false; String; ; ; Argument[0]; Argument[this]; taint; manual | +| 7 | Summary: javax.xml.transform.sax; SAXSource; false; SAXSource; (InputSource); ; Argument[0]; Argument[this]; taint; manual | +| 8 | Summary: javax.xml.transform.sax; SAXSource; false; SAXSource; (XMLReader,InputSource); ; Argument[1]; Argument[this]; taint; manual | +| 9 | Summary: javax.xml.transform.sax; SAXSource; false; getInputSource; ; ; Argument[this]; ReturnValue; taint; manual | +| 10 | Summary: javax.xml.transform.sax; SAXSource; false; sourceToInputSource; ; ; Argument[0]; ReturnValue; taint; manual | +| 11 | Summary: javax.xml.transform.stream; StreamSource; false; StreamSource; ; ; Argument[0]; Argument[this]; taint; manual | +| 12 | Summary: javax.xml.transform.stream; StreamSource; false; getInputStream; ; ; Argument[this]; ReturnValue; taint; manual | +| 13 | Summary: org.xml.sax; InputSource; false; InputSource; ; ; Argument[0]; Argument[this]; taint; manual | +nodes +| CdaUtilTests.java:10:26:10:46 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| CdaUtilTests.java:11:28:11:69 | new InputSource(...) : InputSource | semmle.label | new InputSource(...) : InputSource | +| CdaUtilTests.java:11:44:11:68 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | +| CdaUtilTests.java:11:66:11:67 | is : InputStream | semmle.label | is : InputStream | +| CdaUtilTests.java:12:22:12:23 | is | semmle.label | is | +| CdaUtilTests.java:13:22:13:25 | iSrc | semmle.label | iSrc | +| CdaUtilTests.java:14:22:14:23 | is | semmle.label | is | +| CdaUtilTests.java:15:22:15:23 | is | semmle.label | is | +| CdaUtilTests.java:16:34:16:35 | is | semmle.label | is | +| CdaUtilTests.java:17:22:17:25 | iSrc | semmle.label | iSrc | +| CdaUtilTests.java:18:22:18:25 | iSrc | semmle.label | iSrc | +| CdaUtilTests.java:19:34:19:37 | iSrc | semmle.label | iSrc | +| CdaUtilTests.java:20:24:20:25 | is | semmle.label | is | +| CdaUtilTests.java:21:24:21:25 | is | semmle.label | is | +| DigesterTests.java:14:49:14:72 | getInputStream(...) : ServletInputStream | semmle.label | getInputStream(...) : ServletInputStream | +| DigesterTests.java:16:24:16:41 | servletInputStream | semmle.label | servletInputStream | +| DocumentBuilderTests.java:14:19:14:39 | getInputStream(...) | semmle.label | getInputStream(...) | +| DocumentBuilderTests.java:28:19:28:39 | getInputStream(...) | semmle.label | getInputStream(...) | +| DocumentBuilderTests.java:36:19:36:39 | getInputStream(...) | semmle.label | getInputStream(...) | +| DocumentBuilderTests.java:44:19:44:39 | getInputStream(...) | semmle.label | getInputStream(...) | +| DocumentBuilderTests.java:51:19:51:39 | getInputStream(...) | semmle.label | getInputStream(...) | +| DocumentBuilderTests.java:66:19:66:39 | getInputStream(...) | semmle.label | getInputStream(...) | +| DocumentBuilderTests.java:73:19:73:39 | getInputStream(...) | semmle.label | getInputStream(...) | +| DocumentBuilderTests.java:81:19:81:39 | getInputStream(...) | semmle.label | getInputStream(...) | +| DocumentBuilderTests.java:89:19:89:39 | getInputStream(...) | semmle.label | getInputStream(...) | +| DocumentBuilderTests.java:95:24:95:76 | new SAXSource(...) : SAXSource | semmle.label | new SAXSource(...) : SAXSource | +| DocumentBuilderTests.java:95:38:95:75 | new InputSource(...) : InputSource | semmle.label | new InputSource(...) : InputSource | +| DocumentBuilderTests.java:95:54:95:74 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| DocumentBuilderTests.java:96:19:96:24 | source : SAXSource | semmle.label | source : SAXSource | +| DocumentBuilderTests.java:96:19:96:41 | getInputSource(...) | semmle.label | getInputSource(...) | +| DocumentBuilderTests.java:102:27:102:65 | new StreamSource(...) : StreamSource | semmle.label | new StreamSource(...) : StreamSource | +| DocumentBuilderTests.java:102:44:102:64 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| DocumentBuilderTests.java:103:19:103:55 | sourceToInputSource(...) | semmle.label | sourceToInputSource(...) | +| DocumentBuilderTests.java:103:49:103:54 | source : StreamSource | semmle.label | source : StreamSource | +| DocumentBuilderTests.java:104:19:104:24 | source : StreamSource | semmle.label | source : StreamSource | +| DocumentBuilderTests.java:104:19:104:41 | getInputStream(...) | semmle.label | getInputStream(...) | +| ParserHelperTests.java:12:55:12:78 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXBuilderTests.java:8:19:8:39 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXBuilderTests.java:20:19:20:39 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXParserTests.java:13:18:13:38 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXParserTests.java:30:18:30:38 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXParserTests.java:38:18:38:38 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXParserTests.java:46:18:46:38 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXParserTests.java:55:18:55:38 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXParserTests.java:64:18:64:38 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXParserTests.java:73:18:73:38 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXReaderTests.java:8:17:8:37 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXReaderTests.java:23:17:23:37 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXReaderTests.java:30:17:30:37 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXReaderTests.java:37:17:37:37 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXReaderTests.java:45:17:45:37 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXReaderTests.java:53:17:53:37 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXReaderTests.java:61:17:61:37 | getInputStream(...) | semmle.label | getInputStream(...) | +| SAXSourceTests.java:17:24:17:84 | new SAXSource(...) : SAXSource | semmle.label | new SAXSource(...) : SAXSource | +| SAXSourceTests.java:17:46:17:83 | new InputSource(...) : InputSource | semmle.label | new InputSource(...) : InputSource | +| SAXSourceTests.java:17:62:17:82 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SAXSourceTests.java:20:18:20:23 | source | semmle.label | source | +| SchemaTests.java:12:39:12:77 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| SchemaTests.java:12:56:12:76 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SchemaTests.java:25:39:25:77 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| SchemaTests.java:25:56:25:76 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SchemaTests.java:31:39:31:77 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| SchemaTests.java:31:56:31:76 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SchemaTests.java:38:39:38:77 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| SchemaTests.java:38:56:38:76 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SchemaTests.java:45:39:45:77 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| SchemaTests.java:45:56:45:76 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:14:41:14:61 | getInputStream(...) | semmle.label | getInputStream(...) | +| SimpleXMLTests.java:19:41:19:61 | getInputStream(...) | semmle.label | getInputStream(...) | +| SimpleXMLTests.java:24:41:24:84 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| SimpleXMLTests.java:24:63:24:83 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:30:5:30:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:30:32:30:32 | b [post update] : byte[] | semmle.label | b [post update] : byte[] | +| SimpleXMLTests.java:31:41:31:53 | new String(...) | semmle.label | new String(...) | +| SimpleXMLTests.java:31:52:31:52 | b : byte[] | semmle.label | b : byte[] | +| SimpleXMLTests.java:37:5:37:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:37:32:37:32 | b [post update] : byte[] | semmle.label | b [post update] : byte[] | +| SimpleXMLTests.java:38:41:38:53 | new String(...) | semmle.label | new String(...) | +| SimpleXMLTests.java:38:52:38:52 | b : byte[] | semmle.label | b : byte[] | +| SimpleXMLTests.java:43:41:43:84 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| SimpleXMLTests.java:43:63:43:83 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:48:37:48:57 | getInputStream(...) | semmle.label | getInputStream(...) | +| SimpleXMLTests.java:53:37:53:57 | getInputStream(...) | semmle.label | getInputStream(...) | +| SimpleXMLTests.java:58:26:58:46 | getInputStream(...) | semmle.label | getInputStream(...) | +| SimpleXMLTests.java:63:26:63:46 | getInputStream(...) | semmle.label | getInputStream(...) | +| SimpleXMLTests.java:68:37:68:80 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| SimpleXMLTests.java:68:59:68:79 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:73:37:73:80 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| SimpleXMLTests.java:73:59:73:79 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:78:26:78:69 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| SimpleXMLTests.java:78:48:78:68 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:83:26:83:69 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| SimpleXMLTests.java:83:48:83:68 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:89:5:89:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:89:32:89:32 | b [post update] : byte[] | semmle.label | b [post update] : byte[] | +| SimpleXMLTests.java:90:37:90:49 | new String(...) | semmle.label | new String(...) | +| SimpleXMLTests.java:90:48:90:48 | b : byte[] | semmle.label | b : byte[] | +| SimpleXMLTests.java:96:5:96:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:96:32:96:32 | b [post update] : byte[] | semmle.label | b [post update] : byte[] | +| SimpleXMLTests.java:97:37:97:49 | new String(...) | semmle.label | new String(...) | +| SimpleXMLTests.java:97:48:97:48 | b : byte[] | semmle.label | b : byte[] | +| SimpleXMLTests.java:103:5:103:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:103:32:103:32 | b [post update] : byte[] | semmle.label | b [post update] : byte[] | +| SimpleXMLTests.java:104:26:104:38 | new String(...) | semmle.label | new String(...) | +| SimpleXMLTests.java:104:37:104:37 | b : byte[] | semmle.label | b : byte[] | +| SimpleXMLTests.java:110:5:110:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:110:32:110:32 | b [post update] : byte[] | semmle.label | b [post update] : byte[] | +| SimpleXMLTests.java:111:26:111:38 | new String(...) | semmle.label | new String(...) | +| SimpleXMLTests.java:111:37:111:37 | b : byte[] | semmle.label | b : byte[] | +| SimpleXMLTests.java:115:22:115:42 | getInputStream(...) | semmle.label | getInputStream(...) | +| SimpleXMLTests.java:119:22:119:65 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| SimpleXMLTests.java:119:44:119:64 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:124:22:124:42 | getInputStream(...) | semmle.label | getInputStream(...) | +| SimpleXMLTests.java:129:22:129:65 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| SimpleXMLTests.java:129:44:129:64 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:134:22:134:42 | getInputStream(...) | semmle.label | getInputStream(...) | +| SimpleXMLTests.java:139:22:139:65 | new InputStreamReader(...) | semmle.label | new InputStreamReader(...) | +| SimpleXMLTests.java:139:44:139:64 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:145:5:145:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:145:32:145:32 | b [post update] : byte[] | semmle.label | b [post update] : byte[] | +| SimpleXMLTests.java:146:22:146:34 | new String(...) | semmle.label | new String(...) | +| SimpleXMLTests.java:146:33:146:33 | b : byte[] | semmle.label | b : byte[] | +| SimpleXMLTests.java:152:5:152:25 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| SimpleXMLTests.java:152:32:152:32 | b [post update] : byte[] | semmle.label | b [post update] : byte[] | +| SimpleXMLTests.java:153:22:153:34 | new String(...) | semmle.label | new String(...) | +| SimpleXMLTests.java:153:33:153:33 | b : byte[] | semmle.label | b : byte[] | +| TransformerTests.java:20:27:20:65 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:20:44:20:64 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:21:23:21:61 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:21:40:21:60 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:71:27:71:65 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:71:44:71:64 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:72:23:72:61 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:72:40:72:60 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:79:27:79:65 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:79:44:79:64 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:80:23:80:61 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:80:40:80:60 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:88:27:88:65 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:88:44:88:64 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:89:23:89:61 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:89:40:89:60 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:97:27:97:65 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:97:44:97:64 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:98:23:98:61 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:98:40:98:60 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:103:21:103:59 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:103:38:103:58 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:116:21:116:59 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:116:38:116:58 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:122:21:122:59 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:122:38:122:58 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:129:21:129:59 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:129:38:129:58 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:136:21:136:59 | new StreamSource(...) | semmle.label | new StreamSource(...) | +| TransformerTests.java:136:38:136:58 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| TransformerTests.java:141:21:141:73 | new SAXSource(...) | semmle.label | new SAXSource(...) | +| TransformerTests.java:141:35:141:72 | new InputSource(...) : InputSource | semmle.label | new InputSource(...) : InputSource | +| TransformerTests.java:141:51:141:71 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| UnmarshallerTests.java:29:18:29:38 | getInputStream(...) | semmle.label | getInputStream(...) | +| ValidatorTests.java:17:49:17:72 | getInputStream(...) : ServletInputStream | semmle.label | getInputStream(...) : ServletInputStream | +| ValidatorTests.java:21:31:21:66 | new StreamSource(...) : StreamSource | semmle.label | new StreamSource(...) : StreamSource | +| ValidatorTests.java:21:48:21:65 | servletInputStream : ServletInputStream | semmle.label | servletInputStream : ServletInputStream | +| ValidatorTests.java:22:28:22:33 | source | semmle.label | source | +| XMLDecoderTests.java:16:49:16:72 | getInputStream(...) : ServletInputStream | semmle.label | getInputStream(...) : ServletInputStream | +| XMLDecoderTests.java:17:33:17:66 | new XMLDecoder(...) : XMLDecoder | semmle.label | new XMLDecoder(...) : XMLDecoder | +| XMLDecoderTests.java:17:48:17:65 | servletInputStream : ServletInputStream | semmle.label | servletInputStream : ServletInputStream | +| XMLDecoderTests.java:18:9:18:18 | xmlDecoder | semmle.label | xmlDecoder | +| XMLReaderTests.java:16:18:16:55 | new InputSource(...) | semmle.label | new InputSource(...) | +| XMLReaderTests.java:16:34:16:54 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XMLReaderTests.java:56:18:56:55 | new InputSource(...) | semmle.label | new InputSource(...) | +| XMLReaderTests.java:56:34:56:54 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XMLReaderTests.java:63:18:63:55 | new InputSource(...) | semmle.label | new InputSource(...) | +| XMLReaderTests.java:63:34:63:54 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XMLReaderTests.java:70:18:70:55 | new InputSource(...) | semmle.label | new InputSource(...) | +| XMLReaderTests.java:70:34:70:54 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XMLReaderTests.java:78:18:78:55 | new InputSource(...) | semmle.label | new InputSource(...) | +| XMLReaderTests.java:78:34:78:54 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XMLReaderTests.java:86:18:86:55 | new InputSource(...) | semmle.label | new InputSource(...) | +| XMLReaderTests.java:86:34:86:54 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XMLReaderTests.java:94:18:94:55 | new InputSource(...) | semmle.label | new InputSource(...) | +| XMLReaderTests.java:94:34:94:54 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XMLReaderTests.java:100:18:100:55 | new InputSource(...) | semmle.label | new InputSource(...) | +| XMLReaderTests.java:100:34:100:54 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XPathExpressionTests.java:27:19:27:56 | new InputSource(...) | semmle.label | new InputSource(...) | +| XPathExpressionTests.java:27:35:27:55 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XPathExpressionTests.java:42:23:42:60 | new InputSource(...) | semmle.label | new InputSource(...) | +| XPathExpressionTests.java:42:39:42:59 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| XmlInputFactoryTests.java:9:35:9:55 | getInputStream(...) | semmle.label | getInputStream(...) | +| XmlInputFactoryTests.java:10:34:10:54 | getInputStream(...) | semmle.label | getInputStream(...) | +| XmlInputFactoryTests.java:24:35:24:55 | getInputStream(...) | semmle.label | getInputStream(...) | +| XmlInputFactoryTests.java:25:34:25:54 | getInputStream(...) | semmle.label | getInputStream(...) | +| XmlInputFactoryTests.java:31:35:31:55 | getInputStream(...) | semmle.label | getInputStream(...) | +| XmlInputFactoryTests.java:32:34:32:54 | getInputStream(...) | semmle.label | getInputStream(...) | +| XmlInputFactoryTests.java:39:35:39:55 | getInputStream(...) | semmle.label | getInputStream(...) | +| XmlInputFactoryTests.java:40:34:40:54 | getInputStream(...) | semmle.label | getInputStream(...) | +| XmlInputFactoryTests.java:47:35:47:55 | getInputStream(...) | semmle.label | getInputStream(...) | +| XmlInputFactoryTests.java:48:34:48:54 | getInputStream(...) | semmle.label | getInputStream(...) | +| XmlInputFactoryTests.java:55:35:55:55 | getInputStream(...) | semmle.label | getInputStream(...) | +| XmlInputFactoryTests.java:56:34:56:54 | getInputStream(...) | semmle.label | getInputStream(...) | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-611/XXE.ql b/java/ql/test/query-tests/security/CWE-611/XXE.ql deleted file mode 100644 index 21483d8f658d..000000000000 --- a/java/ql/test/query-tests/security/CWE-611/XXE.ql +++ /dev/null @@ -1,4 +0,0 @@ -import java -import utils.test.InlineFlowTest -import semmle.code.java.security.XxeRemoteQuery -import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-611/XXE.qlref b/java/ql/test/query-tests/security/CWE-611/XXE.qlref new file mode 100644 index 000000000000..29f544d9a457 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-611/XXE.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-611/XXE.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-611/XmlInputFactoryTests.java b/java/ql/test/query-tests/security/CWE-611/XmlInputFactoryTests.java index a75bcde8c1fe..343b8ec3df06 100644 --- a/java/ql/test/query-tests/security/CWE-611/XmlInputFactoryTests.java +++ b/java/ql/test/query-tests/security/CWE-611/XmlInputFactoryTests.java @@ -6,8 +6,8 @@ public class XmlInputFactoryTests { public void unconfigureFactory(Socket sock) throws Exception { XMLInputFactory factory = XMLInputFactory.newFactory(); - factory.createXMLStreamReader(sock.getInputStream()); // $ hasTaintFlow - factory.createXMLEventReader(sock.getInputStream()); // $ hasTaintFlow + factory.createXMLStreamReader(sock.getInputStream()); // $ Alert + factory.createXMLEventReader(sock.getInputStream()); // $ Alert } public void safeFactory(Socket sock) throws Exception { @@ -21,38 +21,38 @@ public void safeFactory(Socket sock) throws Exception { public void misConfiguredFactory(Socket sock) throws Exception { XMLInputFactory factory = XMLInputFactory.newFactory(); factory.setProperty("javax.xml.stream.isSupportingExternalEntities", false); - factory.createXMLStreamReader(sock.getInputStream()); // $ hasTaintFlow - factory.createXMLEventReader(sock.getInputStream()); // $ hasTaintFlow + factory.createXMLStreamReader(sock.getInputStream()); // $ Alert + factory.createXMLEventReader(sock.getInputStream()); // $ Alert } public void misConfiguredFactory2(Socket sock) throws Exception { XMLInputFactory factory = XMLInputFactory.newFactory(); factory.setProperty(XMLInputFactory.SUPPORT_DTD, false); - factory.createXMLStreamReader(sock.getInputStream()); // $ hasTaintFlow - factory.createXMLEventReader(sock.getInputStream()); // $ hasTaintFlow + factory.createXMLStreamReader(sock.getInputStream()); // $ Alert + factory.createXMLEventReader(sock.getInputStream()); // $ Alert } public void misConfiguredFactory3(Socket sock) throws Exception { XMLInputFactory factory = XMLInputFactory.newFactory(); factory.setProperty("javax.xml.stream.isSupportingExternalEntities", true); factory.setProperty(XMLInputFactory.SUPPORT_DTD, true); - factory.createXMLStreamReader(sock.getInputStream()); // $ hasTaintFlow - factory.createXMLEventReader(sock.getInputStream()); // $ hasTaintFlow + factory.createXMLStreamReader(sock.getInputStream()); // $ Alert + factory.createXMLEventReader(sock.getInputStream()); // $ Alert } public void misConfiguredFactory4(Socket sock) throws Exception { XMLInputFactory factory = XMLInputFactory.newFactory(); factory.setProperty("javax.xml.stream.isSupportingExternalEntities", false); factory.setProperty(XMLInputFactory.SUPPORT_DTD, true); - factory.createXMLStreamReader(sock.getInputStream()); // $ hasTaintFlow - factory.createXMLEventReader(sock.getInputStream()); // $ hasTaintFlow + factory.createXMLStreamReader(sock.getInputStream()); // $ Alert + factory.createXMLEventReader(sock.getInputStream()); // $ Alert } public void misConfiguredFactory5(Socket sock) throws Exception { XMLInputFactory factory = XMLInputFactory.newFactory(); factory.setProperty("javax.xml.stream.isSupportingExternalEntities", true); factory.setProperty(XMLInputFactory.SUPPORT_DTD, false); - factory.createXMLStreamReader(sock.getInputStream()); // $ hasTaintFlow - factory.createXMLEventReader(sock.getInputStream()); // $ hasTaintFlow + factory.createXMLStreamReader(sock.getInputStream()); // $ Alert + factory.createXMLEventReader(sock.getInputStream()); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.expected b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.expected index e69de29bb2d1..5a460dbde52b 100644 --- a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.expected @@ -0,0 +1,197 @@ +#select +| XPathInjectionTest.java:91:24:91:33 | expression | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:91:24:91:33 | expression | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:91:24:91:33 | expression | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:91:24:91:33 | expression | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:92:34:92:43 | expression | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:92:34:92:43 | expression | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:92:34:92:43 | expression | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:92:34:92:43 | expression | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:93:23:93:82 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:93:23:93:82 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:93:23:93:82 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:93:23:93:82 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:96:28:96:37 | expression | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:96:28:96:37 | expression | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:96:28:96:37 | expression | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:96:28:96:37 | expression | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:97:38:97:47 | expression | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:97:38:97:47 | expression | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:97:38:97:47 | expression | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:97:38:97:47 | expression | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:98:27:98:86 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:98:27:98:86 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:98:27:98:86 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:98:27:98:86 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:107:23:107:27 | query | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:107:23:107:27 | query | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:107:23:107:27 | query | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:107:23:107:27 | query | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:108:27:108:31 | query | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:108:27:108:31 | query | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:108:27:108:31 | query | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:108:27:108:31 | query | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:125:31:125:90 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:125:31:125:90 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:125:31:125:90 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:125:31:125:90 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:126:30:126:89 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:126:30:126:89 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:126:30:126:89 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:126:30:126:89 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:127:59:127:93 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:127:59:127:93 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:128:35:128:94 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:128:35:128:94 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:128:35:128:94 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:128:35:128:94 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:129:26:129:85 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:129:26:129:85 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:129:26:129:85 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:129:26:129:85 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:130:32:130:91 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:130:32:130:91 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:130:32:130:91 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:130:32:130:91 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:131:26:131:85 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:131:26:131:85 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:131:26:131:85 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:131:26:131:85 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:132:30:132:89 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:132:30:132:89 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:132:30:132:89 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:132:30:132:89 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:134:26:134:85 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:134:26:134:85 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:134:26:134:85 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:134:26:134:85 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:135:26:135:85 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:135:26:135:85 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:135:26:135:85 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:135:26:135:85 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:139:34:139:93 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:139:34:139:93 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:139:34:139:93 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:139:34:139:93 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:140:32:140:91 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:140:32:140:91 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:140:32:140:91 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:140:32:140:91 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:141:38:141:97 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:141:38:141:97 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:141:38:141:97 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:141:38:141:97 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:143:38:143:97 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:143:38:143:97 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:143:38:143:97 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:143:38:143:97 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:144:36:144:95 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:144:36:144:95 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:144:36:144:95 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:144:36:144:95 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:145:42:145:101 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:145:42:145:101 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:145:42:145:101 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:145:42:145:101 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:146:36:146:95 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:146:36:146:95 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:146:36:146:95 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:146:36:146:95 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:147:52:147:111 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:147:52:147:111 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:147:52:147:111 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:147:52:147:111 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:150:39:150:98 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:150:39:150:98 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:150:39:150:98 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:150:39:150:98 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:151:37:151:96 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:151:37:151:96 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:151:37:151:96 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:151:37:151:96 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:152:43:152:102 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:152:43:152:102 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:152:43:152:102 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:152:43:152:102 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:155:33:155:92 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:155:33:155:92 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:155:33:155:92 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:155:33:155:92 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:156:37:156:96 | ... + ... | XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:156:37:156:96 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:77:23:77:50 | getParameter(...) | user-provided value | +| XPathInjectionTest.java:156:37:156:96 | ... + ... | XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:156:37:156:96 | ... + ... | XPath expression depends on a $@. | XPathInjectionTest.java:78:23:78:50 | getParameter(...) | user-provided value | +edges +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:91:24:91:33 | expression | provenance | Src:MaD:24 Sink:MaD:2 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:92:34:92:43 | expression | provenance | Src:MaD:24 Sink:MaD:3 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:93:23:93:82 | ... + ... | provenance | Src:MaD:24 Sink:MaD:1 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:96:28:96:37 | expression | provenance | Src:MaD:24 Sink:MaD:2 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:97:38:97:47 | expression | provenance | Src:MaD:24 Sink:MaD:3 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:98:27:98:86 | ... + ... | provenance | Src:MaD:24 Sink:MaD:1 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:101:19:101:22 | user : String | provenance | Src:MaD:24 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:125:31:125:90 | ... + ... | provenance | Src:MaD:24 Sink:MaD:21 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:126:30:126:89 | ... + ... | provenance | Src:MaD:24 Sink:MaD:20 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:128:35:128:94 | ... + ... | provenance | Src:MaD:24 Sink:MaD:22 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:129:26:129:85 | ... + ... | provenance | Src:MaD:24 Sink:MaD:23 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:130:32:130:91 | ... + ... | provenance | Src:MaD:24 Sink:MaD:19 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:131:26:131:85 | ... + ... | provenance | Src:MaD:24 Sink:MaD:18 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:132:30:132:89 | ... + ... | provenance | Src:MaD:24 Sink:MaD:17 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:134:26:134:85 | ... + ... | provenance | Src:MaD:24 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:135:26:135:85 | ... + ... | provenance | Src:MaD:24 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:139:34:139:93 | ... + ... | provenance | Src:MaD:24 Sink:MaD:9 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:140:32:140:91 | ... + ... | provenance | Src:MaD:24 Sink:MaD:10 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:141:38:141:97 | ... + ... | provenance | Src:MaD:24 Sink:MaD:11 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:143:38:143:97 | ... + ... | provenance | Src:MaD:24 Sink:MaD:12 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:144:36:144:95 | ... + ... | provenance | Src:MaD:24 Sink:MaD:13 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:145:42:145:101 | ... + ... | provenance | Src:MaD:24 Sink:MaD:14 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:146:36:146:95 | ... + ... | provenance | Src:MaD:24 Sink:MaD:15 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:147:52:147:111 | ... + ... | provenance | Src:MaD:24 Sink:MaD:16 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:150:39:150:98 | ... + ... | provenance | Src:MaD:24 Sink:MaD:6 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:151:37:151:96 | ... + ... | provenance | Src:MaD:24 Sink:MaD:7 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:152:43:152:102 | ... + ... | provenance | Src:MaD:24 Sink:MaD:8 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:155:33:155:92 | ... + ... | provenance | Src:MaD:24 Sink:MaD:4 | +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | XPathInjectionTest.java:156:37:156:96 | ... + ... | provenance | Src:MaD:24 Sink:MaD:5 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:91:24:91:33 | expression | provenance | Src:MaD:24 Sink:MaD:2 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:92:34:92:43 | expression | provenance | Src:MaD:24 Sink:MaD:3 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:93:23:93:82 | ... + ... | provenance | Src:MaD:24 Sink:MaD:1 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:96:28:96:37 | expression | provenance | Src:MaD:24 Sink:MaD:2 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:97:38:97:47 | expression | provenance | Src:MaD:24 Sink:MaD:3 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:98:27:98:86 | ... + ... | provenance | Src:MaD:24 Sink:MaD:1 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:103:19:103:22 | pass : String | provenance | Src:MaD:24 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:125:31:125:90 | ... + ... | provenance | Src:MaD:24 Sink:MaD:21 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:126:30:126:89 | ... + ... | provenance | Src:MaD:24 Sink:MaD:20 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:127:59:127:93 | ... + ... | provenance | Src:MaD:24 Sink:MaD:20 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:128:35:128:94 | ... + ... | provenance | Src:MaD:24 Sink:MaD:22 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:129:26:129:85 | ... + ... | provenance | Src:MaD:24 Sink:MaD:23 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:130:32:130:91 | ... + ... | provenance | Src:MaD:24 Sink:MaD:19 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:131:26:131:85 | ... + ... | provenance | Src:MaD:24 Sink:MaD:18 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:132:30:132:89 | ... + ... | provenance | Src:MaD:24 Sink:MaD:17 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:134:26:134:85 | ... + ... | provenance | Src:MaD:24 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:135:26:135:85 | ... + ... | provenance | Src:MaD:24 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:139:34:139:93 | ... + ... | provenance | Src:MaD:24 Sink:MaD:9 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:140:32:140:91 | ... + ... | provenance | Src:MaD:24 Sink:MaD:10 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:141:38:141:97 | ... + ... | provenance | Src:MaD:24 Sink:MaD:11 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:143:38:143:97 | ... + ... | provenance | Src:MaD:24 Sink:MaD:12 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:144:36:144:95 | ... + ... | provenance | Src:MaD:24 Sink:MaD:13 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:145:42:145:101 | ... + ... | provenance | Src:MaD:24 Sink:MaD:14 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:146:36:146:95 | ... + ... | provenance | Src:MaD:24 Sink:MaD:15 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:147:52:147:111 | ... + ... | provenance | Src:MaD:24 Sink:MaD:16 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:150:39:150:98 | ... + ... | provenance | Src:MaD:24 Sink:MaD:6 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:151:37:151:96 | ... + ... | provenance | Src:MaD:24 Sink:MaD:7 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:152:43:152:102 | ... + ... | provenance | Src:MaD:24 Sink:MaD:8 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:155:33:155:92 | ... + ... | provenance | Src:MaD:24 Sink:MaD:4 | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | XPathInjectionTest.java:156:37:156:96 | ... + ... | provenance | Src:MaD:24 Sink:MaD:5 | +| XPathInjectionTest.java:101:9:101:10 | sb [post update] : StringBuffer | XPathInjectionTest.java:105:24:105:25 | sb : StringBuffer | provenance | | +| XPathInjectionTest.java:101:19:101:22 | user : String | XPathInjectionTest.java:101:9:101:10 | sb [post update] : StringBuffer | provenance | MaD:25 | +| XPathInjectionTest.java:103:9:103:10 | sb [post update] : StringBuffer | XPathInjectionTest.java:105:24:105:25 | sb : StringBuffer | provenance | | +| XPathInjectionTest.java:103:19:103:22 | pass : String | XPathInjectionTest.java:103:9:103:10 | sb [post update] : StringBuffer | provenance | MaD:25 | +| XPathInjectionTest.java:105:24:105:25 | sb : StringBuffer | XPathInjectionTest.java:105:24:105:36 | toString(...) : String | provenance | MaD:26 | +| XPathInjectionTest.java:105:24:105:36 | toString(...) : String | XPathInjectionTest.java:107:23:107:27 | query | provenance | Sink:MaD:1 | +| XPathInjectionTest.java:105:24:105:36 | toString(...) : String | XPathInjectionTest.java:108:27:108:31 | query | provenance | Sink:MaD:1 | +models +| 1 | Sink: javax.xml.xpath; XPath; true; compile; ; ; Argument[0]; xpath-injection; manual | +| 2 | Sink: javax.xml.xpath; XPath; true; evaluate; ; ; Argument[0]; xpath-injection; manual | +| 3 | Sink: javax.xml.xpath; XPath; true; evaluateExpression; ; ; Argument[0]; xpath-injection; manual | +| 4 | Sink: org.dom4j.tree; AbstractNode; true; createPattern; ; ; Argument[0]; xpath-injection; manual | +| 5 | Sink: org.dom4j.tree; AbstractNode; true; createXPathFilter; ; ; Argument[0]; xpath-injection; manual | +| 6 | Sink: org.dom4j.util; ProxyDocumentFactory; true; createPattern; ; ; Argument[0]; xpath-injection; manual | +| 7 | Sink: org.dom4j.util; ProxyDocumentFactory; true; createXPath; ; ; Argument[0]; xpath-injection; manual | +| 8 | Sink: org.dom4j.util; ProxyDocumentFactory; true; createXPathFilter; ; ; Argument[0]; xpath-injection; manual | +| 9 | Sink: org.dom4j; DocumentFactory; true; createPattern; ; ; Argument[0]; xpath-injection; manual | +| 10 | Sink: org.dom4j; DocumentFactory; true; createXPath; ; ; Argument[0]; xpath-injection; manual | +| 11 | Sink: org.dom4j; DocumentFactory; true; createXPathFilter; ; ; Argument[0]; xpath-injection; manual | +| 12 | Sink: org.dom4j; DocumentHelper; false; createPattern; ; ; Argument[0]; xpath-injection; manual | +| 13 | Sink: org.dom4j; DocumentHelper; false; createXPath; ; ; Argument[0]; xpath-injection; manual | +| 14 | Sink: org.dom4j; DocumentHelper; false; createXPathFilter; ; ; Argument[0]; xpath-injection; manual | +| 15 | Sink: org.dom4j; DocumentHelper; false; selectNodes; ; ; Argument[0]; xpath-injection; manual | +| 16 | Sink: org.dom4j; DocumentHelper; false; sort; ; ; Argument[1]; xpath-injection; manual | +| 17 | Sink: org.dom4j; Node; true; createXPath; ; ; Argument[0]; xpath-injection; manual | +| 18 | Sink: org.dom4j; Node; true; matches; ; ; Argument[0]; xpath-injection; manual | +| 19 | Sink: org.dom4j; Node; true; numberValueOf; ; ; Argument[0]; xpath-injection; manual | +| 20 | Sink: org.dom4j; Node; true; selectNodes; ; ; Argument[0..1]; xpath-injection; manual | +| 21 | Sink: org.dom4j; Node; true; selectObject; ; ; Argument[0]; xpath-injection; manual | +| 22 | Sink: org.dom4j; Node; true; selectSingleNode; ; ; Argument[0]; xpath-injection; manual | +| 23 | Sink: org.dom4j; Node; true; valueOf; ; ; Argument[0]; xpath-injection; manual | +| 24 | Source: javax.servlet; ServletRequest; false; getParameter; (String); ; ReturnValue; remote; manual | +| 25 | Summary: java.lang; AbstractStringBuilder; true; append; ; ; Argument[0]; Argument[this]; taint; manual | +| 26 | Summary: java.lang; CharSequence; true; toString; ; ; Argument[this]; ReturnValue; taint; manual | +nodes +| XPathInjectionTest.java:77:23:77:50 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| XPathInjectionTest.java:78:23:78:50 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| XPathInjectionTest.java:91:24:91:33 | expression | semmle.label | expression | +| XPathInjectionTest.java:92:34:92:43 | expression | semmle.label | expression | +| XPathInjectionTest.java:93:23:93:82 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:96:28:96:37 | expression | semmle.label | expression | +| XPathInjectionTest.java:97:38:97:47 | expression | semmle.label | expression | +| XPathInjectionTest.java:98:27:98:86 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:101:9:101:10 | sb [post update] : StringBuffer | semmle.label | sb [post update] : StringBuffer | +| XPathInjectionTest.java:101:19:101:22 | user : String | semmle.label | user : String | +| XPathInjectionTest.java:103:9:103:10 | sb [post update] : StringBuffer | semmle.label | sb [post update] : StringBuffer | +| XPathInjectionTest.java:103:19:103:22 | pass : String | semmle.label | pass : String | +| XPathInjectionTest.java:105:24:105:25 | sb : StringBuffer | semmle.label | sb : StringBuffer | +| XPathInjectionTest.java:105:24:105:36 | toString(...) : String | semmle.label | toString(...) : String | +| XPathInjectionTest.java:107:23:107:27 | query | semmle.label | query | +| XPathInjectionTest.java:108:27:108:31 | query | semmle.label | query | +| XPathInjectionTest.java:125:31:125:90 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:126:30:126:89 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:127:59:127:93 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:128:35:128:94 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:129:26:129:85 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:130:32:130:91 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:131:26:131:85 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:132:30:132:89 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:134:26:134:85 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:135:26:135:85 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:139:34:139:93 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:140:32:140:91 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:141:38:141:97 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:143:38:143:97 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:144:36:144:95 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:145:42:145:101 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:146:36:146:95 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:147:52:147:111 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:150:39:150:98 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:151:37:151:96 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:152:43:152:102 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:155:33:155:92 | ... + ... | semmle.label | ... + ... | +| XPathInjectionTest.java:156:37:156:96 | ... + ... | semmle.label | ... + ... | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.java b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.java index 5631f3a4ae9e..af5d2c11e5ff 100644 --- a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.java +++ b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.java @@ -74,8 +74,8 @@ public String getText() { } public void handle(HttpServletRequest request) throws Exception { - String user = request.getParameter("user"); - String pass = request.getParameter("pass"); + String user = request.getParameter("user"); // $ Source + String pass = request.getParameter("pass"); // $ Source String expression = "/users/user[@name='" + user + "' and @pass='" + pass + "']"; final String xmlStr = "" + " " @@ -88,14 +88,14 @@ public void handle(HttpServletRequest request) throws Exception { XPathFactory factory = XPathFactory.newInstance(); XPath xpath = factory.newXPath(); - xpath.evaluate(expression, doc, XPathConstants.BOOLEAN); // $hasXPathInjection - xpath.evaluateExpression(expression, xmlSource); // $hasXPathInjection - xpath.compile("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection + xpath.evaluate(expression, doc, XPathConstants.BOOLEAN); // $ Alert + xpath.evaluateExpression(expression, xmlSource); // $ Alert + xpath.compile("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert XPathImplStub xpathStub = XPathImplStub.getInstance(); - xpathStub.evaluate(expression, doc, XPathConstants.BOOLEAN); // $hasXPathInjection - xpathStub.evaluateExpression(expression, xmlSource); // $hasXPathInjection - xpathStub.compile("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection + xpathStub.evaluate(expression, doc, XPathConstants.BOOLEAN); // $ Alert + xpathStub.evaluateExpression(expression, xmlSource); // $ Alert + xpathStub.compile("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert StringBuffer sb = new StringBuffer("/users/user[@name="); sb.append(user); @@ -104,8 +104,8 @@ public void handle(HttpServletRequest request) throws Exception { sb.append("']"); String query = sb.toString(); - xpath.compile(query); // $hasXPathInjection - xpathStub.compile(query); // $hasXPathInjection + xpath.compile(query); // $ Alert + xpathStub.compile(query); // $ Alert String expression4 = "/users/user[@name=$user and @pass=$pass]"; xpath.setXPathVariableResolver(v -> { @@ -122,38 +122,38 @@ public void handle(HttpServletRequest request) throws Exception { SAXReader reader = new SAXReader(); org.dom4j.Document document = reader.read(new ByteArrayInputStream(xmlStr.getBytes())); - document.selectObject("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - document.selectNodes("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - document.selectNodes("/users/user[@name='test']", "/users/user[@pass='" + pass + "']"); // $hasXPathInjection - document.selectSingleNode("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - document.valueOf("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - document.numberValueOf("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - document.matches("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - document.createXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - - new DefaultXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - new XPathPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection + document.selectObject("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + document.selectNodes("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + document.selectNodes("/users/user[@name='test']", "/users/user[@pass='" + pass + "']"); // $ Alert + document.selectSingleNode("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + document.valueOf("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + document.numberValueOf("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + document.matches("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + document.createXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + + new DefaultXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + new XPathPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert new XPathPattern(new PatternStub(user)); // $ MISSING: hasXPathInjection // Jaxen is not modeled yet DocumentFactory docFactory = DocumentFactory.getInstance(); - docFactory.createPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - docFactory.createXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - docFactory.createXPathFilter("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection + docFactory.createPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + docFactory.createXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + docFactory.createXPathFilter("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert - DocumentHelper.createPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - DocumentHelper.createXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - DocumentHelper.createXPathFilter("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - DocumentHelper.selectNodes("/users/user[@name='" + user + "' and @pass='" + pass + "']", new ArrayList()); // $hasXPathInjection - DocumentHelper.sort(new ArrayList(), "/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection + DocumentHelper.createPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + DocumentHelper.createXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + DocumentHelper.createXPathFilter("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + DocumentHelper.selectNodes("/users/user[@name='" + user + "' and @pass='" + pass + "']", new ArrayList()); // $ Alert + DocumentHelper.sort(new ArrayList(), "/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert ProxyDocumentFactoryStub proxyDocFactory = new ProxyDocumentFactoryStub(); - proxyDocFactory.createPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - proxyDocFactory.createXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - proxyDocFactory.createXPathFilter("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection + proxyDocFactory.createPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + proxyDocFactory.createXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + proxyDocFactory.createXPathFilter("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert Namespace namespace = new Namespace("prefix", "http://some.uri.io"); - namespace.createPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection - namespace.createXPathFilter("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection + namespace.createPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert + namespace.createXPathFilter("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $ Alert org.jaxen.SimpleVariableContext svc = new org.jaxen.SimpleVariableContext(); svc.setVariableValue("user", user); diff --git a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.ql b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.ql deleted file mode 100644 index 3c7110d8011f..000000000000 --- a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.ql +++ /dev/null @@ -1,19 +0,0 @@ -import java -import semmle.code.java.dataflow.DataFlow -import semmle.code.java.security.XPathInjectionQuery -import utils.test.InlineExpectationsTest - -module HasXPathInjectionTest implements TestSig { - string getARelevantTag() { result = "hasXPathInjection" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasXPathInjection" and - exists(DataFlow::Node sink | XPathInjectionFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.qlref b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.qlref new file mode 100644 index 000000000000..0ea1a794f4c5 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-643/XPathInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-730/ExpRedosTest.java b/java/ql/test/query-tests/security/CWE-730/ExpRedos/ExpRedosTest.java similarity index 100% rename from java/ql/test/query-tests/security/CWE-730/ExpRedosTest.java rename to java/ql/test/query-tests/security/CWE-730/ExpRedos/ExpRedosTest.java diff --git a/java/ql/test/query-tests/security/CWE-730/ReDoS.expected b/java/ql/test/query-tests/security/CWE-730/ExpRedos/ReDoS.expected similarity index 100% rename from java/ql/test/query-tests/security/CWE-730/ReDoS.expected rename to java/ql/test/query-tests/security/CWE-730/ExpRedos/ReDoS.expected diff --git a/java/ql/test/query-tests/security/CWE-730/ReDoS.ql b/java/ql/test/query-tests/security/CWE-730/ExpRedos/ReDoS.ql similarity index 100% rename from java/ql/test/query-tests/security/CWE-730/ReDoS.ql rename to java/ql/test/query-tests/security/CWE-730/ExpRedos/ReDoS.ql diff --git a/java/ql/test/query-tests/security/CWE-730/ExpRedos/options b/java/ql/test/query-tests/security/CWE-730/ExpRedos/options new file mode 100644 index 000000000000..591d7fd827b6 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-730/ExpRedos/options @@ -0,0 +1 @@ +// semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/guava-30.0:${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/apache-commons-lang3-3.7 diff --git a/java/ql/test/query-tests/security/CWE-730/PolyRedos/PolyRedosTest.java b/java/ql/test/query-tests/security/CWE-730/PolyRedos/PolyRedosTest.java new file mode 100644 index 000000000000..34e527456c53 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-730/PolyRedos/PolyRedosTest.java @@ -0,0 +1,84 @@ +import java.util.regex.Pattern; +import java.util.function.Predicate; +import javax.servlet.http.HttpServletRequest; +import com.google.common.base.Splitter; + +class PolyRedosTest { + void test(HttpServletRequest request) { + String tainted = request.getParameter("inp"); // $ Source + String reg = "0\\.\\d+E?\\d+!"; + Predicate dummyPred = (s -> s.length() % 7 == 0); + + tainted.matches(reg); // $ Alert + tainted.split(reg); // $ Alert + tainted.split(reg, 7); // $ Alert + tainted.replaceAll(reg, "a"); // $ Alert + tainted.replaceFirst(reg, "a"); // $ Alert + Pattern.matches(reg, tainted); // $ Alert + Pattern.compile(reg).matcher(tainted).matches(); // $ Alert + Pattern.compile(reg).split(tainted); // $ Alert + Pattern.compile(reg, Pattern.DOTALL).split(tainted); // $ Alert + Pattern.compile(reg).split(tainted, 7); // $ Alert + Pattern.compile(reg).splitAsStream(tainted); // $ Alert + Pattern.compile(reg).asPredicate().test(tainted); // $ Alert + Pattern.compile(reg).asMatchPredicate().negate().and(dummyPred).or(dummyPred).test(tainted); // $ Alert + Predicate.not(dummyPred.and(dummyPred.or(Pattern.compile(reg).asPredicate()))).test(tainted); // $ Alert + + Splitter.on(Pattern.compile(reg)).split(tainted); // $ Alert + Splitter.on(reg).split(tainted); + Splitter.onPattern(reg).split(tainted); // $ Alert + Splitter.onPattern(reg).splitToList(tainted); // $ Alert + Splitter.onPattern(reg).limit(7).omitEmptyStrings().trimResults().split(tainted); // $ Alert + Splitter.onPattern(reg).withKeyValueSeparator(" => ").split(tainted); // $ Alert + Splitter.on(";").withKeyValueSeparator(reg).split(tainted); + Splitter.on(";").withKeyValueSeparator(Splitter.onPattern(reg)).split(tainted); // $ Alert + + } + + void test2(HttpServletRequest request) { + String tainted = request.getParameter("inp"); // $ Source + + Pattern p1 = Pattern.compile(".*a"); + Pattern p2 = Pattern.compile(".*b"); + + p1.matcher(tainted).matches(); + p2.matcher(tainted).find(); // $ Alert + } + + void test3(HttpServletRequest request) { + String tainted = request.getParameter("inp"); // $ Source + + Pattern p1 = Pattern.compile("ab*b*"); + Pattern p2 = Pattern.compile("cd*d*"); + + p1.matcher(tainted).matches(); // $ Alert + p2.matcher(tainted).find(); + } + + void test4(HttpServletRequest request) { + String tainted = request.getParameter("inp"); // $ Source + + tainted.matches(".*a"); + tainted.replaceAll(".*b", "c"); // $ Alert + } + + static Pattern p3 = Pattern.compile(".*a"); + static Pattern p4 = Pattern.compile(".*b"); + + + void test5(HttpServletRequest request) { + String tainted = request.getParameter("inp"); // $ Source + + p3.asMatchPredicate().test(tainted); + p4.asPredicate().test(tainted); // $ Alert + } + + void test6(HttpServletRequest request) { + Pattern p = Pattern.compile("^a*a*$"); + + p.matcher(request.getParameter("inp")).matches(); // $ Alert + p.matcher(request.getHeader("If-None-Match")).matches(); + p.matcher(request.getRequestURI()).matches(); + p.matcher(request.getCookies()[0].getName()).matches(); + } +} diff --git a/java/ql/test/query-tests/security/CWE-730/PolyRedos/PolynomialReDoS.expected b/java/ql/test/query-tests/security/CWE-730/PolyRedos/PolynomialReDoS.expected new file mode 100644 index 000000000000..baac0e0596a0 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-730/PolyRedos/PolynomialReDoS.expected @@ -0,0 +1,85 @@ +#select +| PolyRedosTest.java:12:9:12:15 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:12:9:12:15 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:13:9:13:15 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:13:9:13:15 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:14:9:14:15 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:14:9:14:15 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:15:9:15:15 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:15:9:15:15 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:16:9:16:15 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:16:9:16:15 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:17:30:17:36 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:17:30:17:36 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:18:38:18:44 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:18:38:18:44 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:19:36:19:42 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:19:36:19:42 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:20:52:20:58 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:20:52:20:58 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:21:36:21:42 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:21:36:21:42 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:22:44:22:50 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:22:44:22:50 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:23:49:23:55 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:23:49:23:55 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:24:92:24:98 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:24:92:24:98 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:25:93:25:99 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:25:93:25:99 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:27:49:27:55 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:27:49:27:55 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:29:39:29:45 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:29:39:29:45 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:30:45:30:51 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:30:45:30:51 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:31:81:31:87 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:31:81:31:87 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:32:69:32:75 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:32:69:32:75 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:34:79:34:85 | tainted | PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:34:79:34:85 | tainted | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | PolyRedosTest.java:9:33:9:36 | \\d+ | regular expression | PolyRedosTest.java:8:26:8:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:45:20:45:26 | tainted | PolyRedosTest.java:39:26:39:52 | getParameter(...) : String | PolyRedosTest.java:45:20:45:26 | tainted | This $@ that depends on a $@ may run slow on strings with many repetitions of 'a'. | PolyRedosTest.java:42:39:42:40 | .* | regular expression | PolyRedosTest.java:39:26:39:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:54:20:54:26 | tainted | PolyRedosTest.java:49:26:49:52 | getParameter(...) : String | PolyRedosTest.java:54:20:54:26 | tainted | This $@ that depends on a $@ may run slow on strings starting with 'a' and with many repetitions of 'b'. | PolyRedosTest.java:51:42:51:43 | b* | regular expression | PolyRedosTest.java:49:26:49:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:62:9:62:15 | tainted | PolyRedosTest.java:59:26:59:52 | getParameter(...) : String | PolyRedosTest.java:62:9:62:15 | tainted | This $@ that depends on a $@ may run slow on strings with many repetitions of 'a'. | PolyRedosTest.java:62:29:62:30 | .* | regular expression | PolyRedosTest.java:59:26:59:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:73:31:73:37 | tainted | PolyRedosTest.java:70:26:70:52 | getParameter(...) : String | PolyRedosTest.java:73:31:73:37 | tainted | This $@ that depends on a $@ may run slow on strings with many repetitions of 'a'. | PolyRedosTest.java:66:42:66:43 | .* | regular expression | PolyRedosTest.java:70:26:70:52 | getParameter(...) | user-provided value | +| PolyRedosTest.java:79:19:79:45 | getParameter(...) | PolyRedosTest.java:79:19:79:45 | getParameter(...) | PolyRedosTest.java:79:19:79:45 | getParameter(...) | This $@ that depends on a $@ may run slow on strings with many repetitions of 'a'. | PolyRedosTest.java:77:41:77:42 | a* | regular expression | PolyRedosTest.java:79:19:79:45 | getParameter(...) | user-provided value | +edges +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:12:9:12:15 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:13:9:13:15 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:14:9:14:15 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:15:9:15:15 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:16:9:16:15 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:17:30:17:36 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:18:38:18:44 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:19:36:19:42 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:20:52:20:58 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:21:36:21:42 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:22:44:22:50 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:23:49:23:55 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:24:92:24:98 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:25:93:25:99 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:27:49:27:55 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:29:39:29:45 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:30:45:30:51 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:31:81:31:87 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:32:69:32:75 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | PolyRedosTest.java:34:79:34:85 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:39:26:39:52 | getParameter(...) : String | PolyRedosTest.java:45:20:45:26 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:49:26:49:52 | getParameter(...) : String | PolyRedosTest.java:54:20:54:26 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:59:26:59:52 | getParameter(...) : String | PolyRedosTest.java:62:9:62:15 | tainted | provenance | Src:MaD:1 | +| PolyRedosTest.java:70:26:70:52 | getParameter(...) : String | PolyRedosTest.java:73:31:73:37 | tainted | provenance | Src:MaD:1 | +models +| 1 | Source: javax.servlet; ServletRequest; false; getParameter; (String); ; ReturnValue; remote; manual | +nodes +| PolyRedosTest.java:8:26:8:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| PolyRedosTest.java:12:9:12:15 | tainted | semmle.label | tainted | +| PolyRedosTest.java:13:9:13:15 | tainted | semmle.label | tainted | +| PolyRedosTest.java:14:9:14:15 | tainted | semmle.label | tainted | +| PolyRedosTest.java:15:9:15:15 | tainted | semmle.label | tainted | +| PolyRedosTest.java:16:9:16:15 | tainted | semmle.label | tainted | +| PolyRedosTest.java:17:30:17:36 | tainted | semmle.label | tainted | +| PolyRedosTest.java:18:38:18:44 | tainted | semmle.label | tainted | +| PolyRedosTest.java:19:36:19:42 | tainted | semmle.label | tainted | +| PolyRedosTest.java:20:52:20:58 | tainted | semmle.label | tainted | +| PolyRedosTest.java:21:36:21:42 | tainted | semmle.label | tainted | +| PolyRedosTest.java:22:44:22:50 | tainted | semmle.label | tainted | +| PolyRedosTest.java:23:49:23:55 | tainted | semmle.label | tainted | +| PolyRedosTest.java:24:92:24:98 | tainted | semmle.label | tainted | +| PolyRedosTest.java:25:93:25:99 | tainted | semmle.label | tainted | +| PolyRedosTest.java:27:49:27:55 | tainted | semmle.label | tainted | +| PolyRedosTest.java:29:39:29:45 | tainted | semmle.label | tainted | +| PolyRedosTest.java:30:45:30:51 | tainted | semmle.label | tainted | +| PolyRedosTest.java:31:81:31:87 | tainted | semmle.label | tainted | +| PolyRedosTest.java:32:69:32:75 | tainted | semmle.label | tainted | +| PolyRedosTest.java:34:79:34:85 | tainted | semmle.label | tainted | +| PolyRedosTest.java:39:26:39:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| PolyRedosTest.java:45:20:45:26 | tainted | semmle.label | tainted | +| PolyRedosTest.java:49:26:49:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| PolyRedosTest.java:54:20:54:26 | tainted | semmle.label | tainted | +| PolyRedosTest.java:59:26:59:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| PolyRedosTest.java:62:9:62:15 | tainted | semmle.label | tainted | +| PolyRedosTest.java:70:26:70:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| PolyRedosTest.java:73:31:73:37 | tainted | semmle.label | tainted | +| PolyRedosTest.java:79:19:79:45 | getParameter(...) | semmle.label | getParameter(...) | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-730/PolyRedos/PolynomialReDoS.qlref b/java/ql/test/query-tests/security/CWE-730/PolyRedos/PolynomialReDoS.qlref new file mode 100644 index 000000000000..f5dd1d5ca3aa --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-730/PolyRedos/PolynomialReDoS.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-730/PolynomialReDoS.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-730/PolyRedos/options b/java/ql/test/query-tests/security/CWE-730/PolyRedos/options new file mode 100644 index 000000000000..591d7fd827b6 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-730/PolyRedos/options @@ -0,0 +1 @@ +// semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/guava-30.0:${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/apache-commons-lang3-3.7 diff --git a/java/ql/test/query-tests/security/CWE-730/PolyRedosTest.java b/java/ql/test/query-tests/security/CWE-730/PolyRedosTest.java deleted file mode 100644 index 449311904605..000000000000 --- a/java/ql/test/query-tests/security/CWE-730/PolyRedosTest.java +++ /dev/null @@ -1,84 +0,0 @@ -import java.util.regex.Pattern; -import java.util.function.Predicate; -import javax.servlet.http.HttpServletRequest; -import com.google.common.base.Splitter; - -class PolyRedosTest { - void test(HttpServletRequest request) { - String tainted = request.getParameter("inp"); - String reg = "0\\.\\d+E?\\d+!"; - Predicate dummyPred = (s -> s.length() % 7 == 0); - - tainted.matches(reg); // $ hasPolyRedos - tainted.split(reg); // $ hasPolyRedos - tainted.split(reg, 7); // $ hasPolyRedos - tainted.replaceAll(reg, "a"); // $ hasPolyRedos - tainted.replaceFirst(reg, "a"); // $ hasPolyRedos - Pattern.matches(reg, tainted); // $ hasPolyRedos - Pattern.compile(reg).matcher(tainted).matches(); // $ hasPolyRedos - Pattern.compile(reg).split(tainted); // $ hasPolyRedos - Pattern.compile(reg, Pattern.DOTALL).split(tainted); // $ hasPolyRedos - Pattern.compile(reg).split(tainted, 7); // $ hasPolyRedos - Pattern.compile(reg).splitAsStream(tainted); // $ hasPolyRedos - Pattern.compile(reg).asPredicate().test(tainted); // $ hasPolyRedos - Pattern.compile(reg).asMatchPredicate().negate().and(dummyPred).or(dummyPred).test(tainted); // $ hasPolyRedos - Predicate.not(dummyPred.and(dummyPred.or(Pattern.compile(reg).asPredicate()))).test(tainted); // $ hasPolyRedos - - Splitter.on(Pattern.compile(reg)).split(tainted); // $ hasPolyRedos - Splitter.on(reg).split(tainted); - Splitter.onPattern(reg).split(tainted); // $ hasPolyRedos - Splitter.onPattern(reg).splitToList(tainted); // $ hasPolyRedos - Splitter.onPattern(reg).limit(7).omitEmptyStrings().trimResults().split(tainted); // $ hasPolyRedos - Splitter.onPattern(reg).withKeyValueSeparator(" => ").split(tainted); // $ hasPolyRedos - Splitter.on(";").withKeyValueSeparator(reg).split(tainted); - Splitter.on(";").withKeyValueSeparator(Splitter.onPattern(reg)).split(tainted); // $ hasPolyRedos - - } - - void test2(HttpServletRequest request) { - String tainted = request.getParameter("inp"); - - Pattern p1 = Pattern.compile(".*a"); - Pattern p2 = Pattern.compile(".*b"); - - p1.matcher(tainted).matches(); - p2.matcher(tainted).find(); // $ hasPolyRedos - } - - void test3(HttpServletRequest request) { - String tainted = request.getParameter("inp"); - - Pattern p1 = Pattern.compile("ab*b*"); - Pattern p2 = Pattern.compile("cd*d*"); - - p1.matcher(tainted).matches(); // $ hasPolyRedos - p2.matcher(tainted).find(); - } - - void test4(HttpServletRequest request) { - String tainted = request.getParameter("inp"); - - tainted.matches(".*a"); - tainted.replaceAll(".*b", "c"); // $ hasPolyRedos - } - - static Pattern p3 = Pattern.compile(".*a"); - static Pattern p4 = Pattern.compile(".*b"); - - - void test5(HttpServletRequest request) { - String tainted = request.getParameter("inp"); - - p3.asMatchPredicate().test(tainted); - p4.asPredicate().test(tainted); // $ hasPolyRedos - } - - void test6(HttpServletRequest request) { - Pattern p = Pattern.compile("^a*a*$"); - - p.matcher(request.getParameter("inp")).matches(); // $ hasPolyRedos - p.matcher(request.getHeader("If-None-Match")).matches(); - p.matcher(request.getRequestURI()).matches(); - p.matcher(request.getCookies()[0].getName()).matches(); - } -} \ No newline at end of file diff --git a/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.expected b/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.ql b/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.ql deleted file mode 100644 index d8c1a790e70a..000000000000 --- a/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.ql +++ /dev/null @@ -1,18 +0,0 @@ -import utils.test.InlineExpectationsTest -import semmle.code.java.security.regexp.PolynomialReDoSQuery - -module HasPolyRedos implements TestSig { - string getARelevantTag() { result = "hasPolyRedos" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasPolyRedos" and - exists(DataFlow::Node sink | - PolynomialRedosFlow::flowTo(sink) and - location = sink.getLocation() and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-730/RegexInjection/RegexInjectionTest.expected b/java/ql/test/query-tests/security/CWE-730/RegexInjection/RegexInjectionTest.expected new file mode 100644 index 000000000000..9d0c7ec5c8b3 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-730/RegexInjection/RegexInjectionTest.expected @@ -0,0 +1,102 @@ +#select +| RegexInjectionTest.java:17:26:17:47 | ... + ... | RegexInjectionTest.java:14:22:14:52 | getParameter(...) : String | RegexInjectionTest.java:17:26:17:47 | ... + ... | This regular expression is constructed from a $@. | RegexInjectionTest.java:14:22:14:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:24:24:24:30 | pattern | RegexInjectionTest.java:21:22:21:52 | getParameter(...) : String | RegexInjectionTest.java:24:24:24:30 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:21:22:21:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:31:24:31:30 | pattern | RegexInjectionTest.java:28:22:28:52 | getParameter(...) : String | RegexInjectionTest.java:31:24:31:30 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:28:22:28:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:38:31:38:37 | pattern | RegexInjectionTest.java:35:22:35:52 | getParameter(...) : String | RegexInjectionTest.java:38:31:38:37 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:35:22:35:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:45:29:45:35 | pattern | RegexInjectionTest.java:42:22:42:52 | getParameter(...) : String | RegexInjectionTest.java:45:29:45:35 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:42:22:42:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:52:34:52:40 | pattern | RegexInjectionTest.java:49:22:49:52 | getParameter(...) : String | RegexInjectionTest.java:52:34:52:40 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:49:22:49:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:62:28:62:34 | pattern | RegexInjectionTest.java:59:22:59:52 | getParameter(...) : String | RegexInjectionTest.java:62:28:62:34 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:59:22:59:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:69:28:69:34 | pattern | RegexInjectionTest.java:66:22:66:52 | getParameter(...) : String | RegexInjectionTest.java:69:28:69:34 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:66:22:66:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:76:28:76:34 | pattern | RegexInjectionTest.java:73:22:73:52 | getParameter(...) : String | RegexInjectionTest.java:76:28:76:34 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:73:22:73:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:83:26:83:52 | ... + ... | RegexInjectionTest.java:80:22:80:52 | getParameter(...) : String | RegexInjectionTest.java:83:26:83:52 | ... + ... | This regular expression is constructed from a $@. | RegexInjectionTest.java:80:22:80:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:94:40:94:46 | pattern | RegexInjectionTest.java:91:22:91:52 | getParameter(...) : String | RegexInjectionTest.java:94:40:94:46 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:91:22:91:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:101:42:101:48 | pattern | RegexInjectionTest.java:98:22:98:52 | getParameter(...) : String | RegexInjectionTest.java:101:42:101:48 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:98:22:98:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:108:44:108:50 | pattern | RegexInjectionTest.java:105:22:105:52 | getParameter(...) : String | RegexInjectionTest.java:108:44:108:50 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:105:22:105:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:115:41:115:47 | pattern | RegexInjectionTest.java:112:22:112:52 | getParameter(...) : String | RegexInjectionTest.java:115:41:115:47 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:112:22:112:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:122:43:122:49 | pattern | RegexInjectionTest.java:119:22:119:52 | getParameter(...) : String | RegexInjectionTest.java:122:43:122:49 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:119:22:119:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:137:45:137:51 | pattern | RegexInjectionTest.java:134:22:134:52 | getParameter(...) : String | RegexInjectionTest.java:137:45:137:51 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:134:22:134:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:158:31:158:37 | pattern | RegexInjectionTest.java:157:22:157:52 | getParameter(...) : String | RegexInjectionTest.java:158:31:158:37 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:157:22:157:52 | getParameter(...) | user-provided value | +| RegexInjectionTest.java:164:41:164:47 | pattern | RegexInjectionTest.java:162:22:162:52 | getParameter(...) : String | RegexInjectionTest.java:164:41:164:47 | pattern | This regular expression is constructed from a $@. | RegexInjectionTest.java:162:22:162:52 | getParameter(...) | user-provided value | +edges +| RegexInjectionTest.java:14:22:14:52 | getParameter(...) : String | RegexInjectionTest.java:17:26:17:47 | ... + ... | provenance | Src:MaD:16 Sink:MaD:2 | +| RegexInjectionTest.java:21:22:21:52 | getParameter(...) : String | RegexInjectionTest.java:24:24:24:30 | pattern | provenance | Src:MaD:16 Sink:MaD:5 | +| RegexInjectionTest.java:28:22:28:52 | getParameter(...) : String | RegexInjectionTest.java:31:24:31:30 | pattern | provenance | Src:MaD:16 Sink:MaD:6 | +| RegexInjectionTest.java:35:22:35:52 | getParameter(...) : String | RegexInjectionTest.java:38:31:38:37 | pattern | provenance | Src:MaD:16 Sink:MaD:4 | +| RegexInjectionTest.java:42:22:42:52 | getParameter(...) : String | RegexInjectionTest.java:45:29:45:35 | pattern | provenance | Src:MaD:16 Sink:MaD:3 | +| RegexInjectionTest.java:49:22:49:52 | getParameter(...) : String | RegexInjectionTest.java:52:34:52:40 | pattern | provenance | Src:MaD:16 Sink:MaD:7 | +| RegexInjectionTest.java:59:22:59:52 | getParameter(...) : String | RegexInjectionTest.java:62:28:62:34 | pattern | provenance | Src:MaD:16 Sink:MaD:7 | +| RegexInjectionTest.java:66:22:66:52 | getParameter(...) : String | RegexInjectionTest.java:69:28:69:34 | pattern | provenance | Src:MaD:16 Sink:MaD:8 | +| RegexInjectionTest.java:73:22:73:52 | getParameter(...) : String | RegexInjectionTest.java:76:28:76:34 | pattern | provenance | Src:MaD:16 Sink:MaD:9 | +| RegexInjectionTest.java:80:22:80:52 | getParameter(...) : String | RegexInjectionTest.java:83:36:83:42 | pattern : String | provenance | Src:MaD:16 | +| RegexInjectionTest.java:83:32:83:43 | foo(...) : String | RegexInjectionTest.java:83:26:83:52 | ... + ... | provenance | Sink:MaD:2 | +| RegexInjectionTest.java:83:36:83:42 | pattern : String | RegexInjectionTest.java:83:32:83:43 | foo(...) : String | provenance | | +| RegexInjectionTest.java:83:36:83:42 | pattern : String | RegexInjectionTest.java:86:14:86:23 | str : String | provenance | | +| RegexInjectionTest.java:86:14:86:23 | str : String | RegexInjectionTest.java:87:12:87:14 | str : String | provenance | | +| RegexInjectionTest.java:91:22:91:52 | getParameter(...) : String | RegexInjectionTest.java:94:40:94:46 | pattern | provenance | Src:MaD:16 Sink:MaD:10 | +| RegexInjectionTest.java:98:22:98:52 | getParameter(...) : String | RegexInjectionTest.java:101:42:101:48 | pattern | provenance | Src:MaD:16 Sink:MaD:11 | +| RegexInjectionTest.java:105:22:105:52 | getParameter(...) : String | RegexInjectionTest.java:108:44:108:50 | pattern | provenance | Src:MaD:16 Sink:MaD:12 | +| RegexInjectionTest.java:112:22:112:52 | getParameter(...) : String | RegexInjectionTest.java:115:41:115:47 | pattern | provenance | Src:MaD:16 Sink:MaD:13 | +| RegexInjectionTest.java:119:22:119:52 | getParameter(...) : String | RegexInjectionTest.java:122:43:122:49 | pattern | provenance | Src:MaD:16 Sink:MaD:14 | +| RegexInjectionTest.java:134:22:134:52 | getParameter(...) : String | RegexInjectionTest.java:137:45:137:51 | pattern | provenance | Src:MaD:16 Sink:MaD:15 | +| RegexInjectionTest.java:157:22:157:52 | getParameter(...) : String | RegexInjectionTest.java:158:31:158:37 | pattern | provenance | Src:MaD:16 Sink:MaD:1 | +| RegexInjectionTest.java:162:22:162:52 | getParameter(...) : String | RegexInjectionTest.java:164:41:164:47 | pattern | provenance | Src:MaD:16 Sink:MaD:7 | +models +| 1 | Sink: com.google.common.base; Splitter; false; onPattern; (String); ; Argument[0]; regex-use[]; manual | +| 2 | Sink: java.lang; String; false; matches; (String); ; Argument[0]; regex-use[f-1]; manual | +| 3 | Sink: java.lang; String; false; replaceAll; (String,String); ; Argument[0]; regex-use[-1]; manual | +| 4 | Sink: java.lang; String; false; replaceFirst; (String,String); ; Argument[0]; regex-use[-1]; manual | +| 5 | Sink: java.lang; String; false; split; (String); ; Argument[0]; regex-use[-1]; manual | +| 6 | Sink: java.lang; String; false; split; (String,int); ; Argument[0]; regex-use[-1]; manual | +| 7 | Sink: java.util.regex; Pattern; false; compile; (String); ; Argument[0]; regex-use[]; manual | +| 8 | Sink: java.util.regex; Pattern; false; compile; (String,int); ; Argument[0]; regex-use[]; manual | +| 9 | Sink: java.util.regex; Pattern; false; matches; (String,CharSequence); ; Argument[0]; regex-use[f1]; manual | +| 10 | Sink: org.apache.commons.lang3; RegExUtils; false; removeAll; (String,String); ; Argument[1]; regex-use; manual | +| 11 | Sink: org.apache.commons.lang3; RegExUtils; false; removeFirst; (String,String); ; Argument[1]; regex-use; manual | +| 12 | Sink: org.apache.commons.lang3; RegExUtils; false; removePattern; (String,String); ; Argument[1]; regex-use; manual | +| 13 | Sink: org.apache.commons.lang3; RegExUtils; false; replaceAll; (String,String,String); ; Argument[1]; regex-use; manual | +| 14 | Sink: org.apache.commons.lang3; RegExUtils; false; replaceFirst; (String,String,String); ; Argument[1]; regex-use; manual | +| 15 | Sink: org.apache.commons.lang3; RegExUtils; false; replacePattern; (String,String,String); ; Argument[1]; regex-use; manual | +| 16 | Source: javax.servlet; ServletRequest; false; getParameter; (String); ; ReturnValue; remote; manual | +nodes +| RegexInjectionTest.java:14:22:14:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:17:26:17:47 | ... + ... | semmle.label | ... + ... | +| RegexInjectionTest.java:21:22:21:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:24:24:24:30 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:28:22:28:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:31:24:31:30 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:35:22:35:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:38:31:38:37 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:42:22:42:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:45:29:45:35 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:49:22:49:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:52:34:52:40 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:59:22:59:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:62:28:62:34 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:66:22:66:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:69:28:69:34 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:73:22:73:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:76:28:76:34 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:80:22:80:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:83:26:83:52 | ... + ... | semmle.label | ... + ... | +| RegexInjectionTest.java:83:32:83:43 | foo(...) : String | semmle.label | foo(...) : String | +| RegexInjectionTest.java:83:36:83:42 | pattern : String | semmle.label | pattern : String | +| RegexInjectionTest.java:86:14:86:23 | str : String | semmle.label | str : String | +| RegexInjectionTest.java:87:12:87:14 | str : String | semmle.label | str : String | +| RegexInjectionTest.java:91:22:91:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:94:40:94:46 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:98:22:98:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:101:42:101:48 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:105:22:105:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:108:44:108:50 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:112:22:112:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:115:41:115:47 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:119:22:119:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:122:43:122:49 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:134:22:134:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:137:45:137:51 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:157:22:157:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:158:31:158:37 | pattern | semmle.label | pattern | +| RegexInjectionTest.java:162:22:162:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| RegexInjectionTest.java:164:41:164:47 | pattern | semmle.label | pattern | +subpaths +| RegexInjectionTest.java:83:36:83:42 | pattern : String | RegexInjectionTest.java:86:14:86:23 | str : String | RegexInjectionTest.java:87:12:87:14 | str : String | RegexInjectionTest.java:83:32:83:43 | foo(...) : String | diff --git a/java/ql/test/query-tests/security/CWE-730/RegexInjection/RegexInjectionTest.java b/java/ql/test/query-tests/security/CWE-730/RegexInjection/RegexInjectionTest.java new file mode 100644 index 000000000000..c4643de9a779 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-730/RegexInjection/RegexInjectionTest.java @@ -0,0 +1,166 @@ +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.ServletException; + +import org.apache.commons.lang3.RegExUtils; +import com.google.common.base.Splitter; + +public class RegexInjectionTest extends HttpServlet { + public boolean string1(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return input.matches("^" + pattern + "=.*$"); // $ Alert + } + + public boolean string2(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return input.split(pattern).length > 0; // $ Alert + } + + public boolean string3(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return input.split(pattern, 0).length > 0; // $ Alert + } + + public boolean string4(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return input.replaceFirst(pattern, "").length() > 0; // $ Alert + } + + public boolean string5(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return input.replaceAll(pattern, "").length() > 0; // $ Alert + } + + public boolean pattern1(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + Pattern pt = Pattern.compile(pattern); // $ Alert + Matcher matcher = pt.matcher(input); + + return matcher.find(); + } + + public boolean pattern2(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return Pattern.compile(pattern).matcher(input).matches(); // $ Alert + } + + public boolean pattern3(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return Pattern.compile(pattern, 0).matcher(input).matches(); // $ Alert + } + + public boolean pattern4(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return Pattern.matches(pattern, input); // $ Alert + } + + public boolean pattern5(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return input.matches("^" + foo(pattern) + "=.*$"); // $ Alert + } + + String foo(String str) { + return str; + } + + public boolean apache1(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return RegExUtils.removeAll(input, pattern).length() > 0; // $ Alert + } + + public boolean apache2(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return RegExUtils.removeFirst(input, pattern).length() > 0; // $ Alert + } + + public boolean apache3(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return RegExUtils.removePattern(input, pattern).length() > 0; // $ Alert + } + + public boolean apache4(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return RegExUtils.replaceAll(input, pattern, "").length() > 0; // $ Alert + } + + public boolean apache5(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return RegExUtils.replaceFirst(input, pattern, "").length() > 0; // $ Alert + } + + public boolean apache6(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); + String input = request.getParameter("input"); + + Pattern pt = (Pattern)(Object) pattern; + return RegExUtils.replaceFirst(input, pt, "").length() > 0; // Safe: Pattern compile is the sink instead + } + + public boolean apache7(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + String input = request.getParameter("input"); + + return RegExUtils.replacePattern(input, pattern, "").length() > 0; // $ Alert + } + + // test `Pattern.quote` sanitizer + public boolean quoteTest(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); + String input = request.getParameter("input"); + + return input.matches(Pattern.quote(pattern)); // Safe + } + + // test `Pattern.LITERAL` sanitizer + public boolean literalTest(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); + String input = request.getParameter("input"); + + return Pattern.compile(pattern, Pattern.LITERAL).matcher(input).matches(); // Safe + } + + public Splitter guava1(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + return Splitter.onPattern(pattern); // $ Alert + } + + public Splitter guava2(javax.servlet.http.HttpServletRequest request) { + String pattern = request.getParameter("pattern"); // $ Source + // sink is `Pattern.compile` + return Splitter.on(Pattern.compile(pattern)); // $ Alert + } +} diff --git a/java/ql/test/query-tests/security/CWE-730/RegexInjection/RegexInjectionTest.qlref b/java/ql/test/query-tests/security/CWE-730/RegexInjection/RegexInjectionTest.qlref new file mode 100644 index 000000000000..613229f956b6 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-730/RegexInjection/RegexInjectionTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-730/RegexInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-730/RegexInjection/options b/java/ql/test/query-tests/security/CWE-730/RegexInjection/options new file mode 100644 index 000000000000..591d7fd827b6 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-730/RegexInjection/options @@ -0,0 +1 @@ +// semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/guava-30.0:${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/apache-commons-lang3-3.7 diff --git a/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.expected b/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.java b/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.java deleted file mode 100644 index 5c7a3ca05746..000000000000 --- a/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.java +++ /dev/null @@ -1,166 +0,0 @@ -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.ServletException; - -import org.apache.commons.lang3.RegExUtils; -import com.google.common.base.Splitter; - -public class RegexInjectionTest extends HttpServlet { - public boolean string1(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return input.matches("^" + pattern + "=.*$"); // $ hasRegexInjection - } - - public boolean string2(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return input.split(pattern).length > 0; // $ hasRegexInjection - } - - public boolean string3(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return input.split(pattern, 0).length > 0; // $ hasRegexInjection - } - - public boolean string4(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return input.replaceFirst(pattern, "").length() > 0; // $ hasRegexInjection - } - - public boolean string5(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return input.replaceAll(pattern, "").length() > 0; // $ hasRegexInjection - } - - public boolean pattern1(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - Pattern pt = Pattern.compile(pattern); // $ hasRegexInjection - Matcher matcher = pt.matcher(input); - - return matcher.find(); - } - - public boolean pattern2(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return Pattern.compile(pattern).matcher(input).matches(); // $ hasRegexInjection - } - - public boolean pattern3(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return Pattern.compile(pattern, 0).matcher(input).matches(); // $ hasRegexInjection - } - - public boolean pattern4(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return Pattern.matches(pattern, input); // $ hasRegexInjection - } - - public boolean pattern5(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return input.matches("^" + foo(pattern) + "=.*$"); // $ hasRegexInjection - } - - String foo(String str) { - return str; - } - - public boolean apache1(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return RegExUtils.removeAll(input, pattern).length() > 0; // $ hasRegexInjection - } - - public boolean apache2(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return RegExUtils.removeFirst(input, pattern).length() > 0; // $ hasRegexInjection - } - - public boolean apache3(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return RegExUtils.removePattern(input, pattern).length() > 0; // $ hasRegexInjection - } - - public boolean apache4(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return RegExUtils.replaceAll(input, pattern, "").length() > 0; // $ hasRegexInjection - } - - public boolean apache5(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return RegExUtils.replaceFirst(input, pattern, "").length() > 0; // $ hasRegexInjection - } - - public boolean apache6(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - Pattern pt = (Pattern)(Object) pattern; - return RegExUtils.replaceFirst(input, pt, "").length() > 0; // Safe: Pattern compile is the sink instead - } - - public boolean apache7(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return RegExUtils.replacePattern(input, pattern, "").length() > 0; // $ hasRegexInjection - } - - // test `Pattern.quote` sanitizer - public boolean quoteTest(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return input.matches(Pattern.quote(pattern)); // Safe - } - - // test `Pattern.LITERAL` sanitizer - public boolean literalTest(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - String input = request.getParameter("input"); - - return Pattern.compile(pattern, Pattern.LITERAL).matcher(input).matches(); // Safe - } - - public Splitter guava1(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - return Splitter.onPattern(pattern); // $ hasRegexInjection - } - - public Splitter guava2(javax.servlet.http.HttpServletRequest request) { - String pattern = request.getParameter("pattern"); - // sink is `Pattern.compile` - return Splitter.on(Pattern.compile(pattern)); // $ hasRegexInjection - } -} diff --git a/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.ql b/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.ql deleted file mode 100644 index cba14c212e98..000000000000 --- a/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import utils.test.InlineExpectationsTest -import semmle.code.java.security.regexp.RegexInjectionQuery - -module RegexInjectionTest implements TestSig { - string getARelevantTag() { result = "hasRegexInjection" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasRegexInjection" and - exists(RegexInjectionFlow::PathNode sink | RegexInjectionFlow::flowPath(_, sink) | - location = sink.getNode().getLocation() and - element = sink.getNode().toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-730/options b/java/ql/test/query-tests/security/CWE-730/options deleted file mode 100644 index 884cb21114c3..000000000000 --- a/java/ql/test/query-tests/security/CWE-730/options +++ /dev/null @@ -1 +0,0 @@ -// semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/guava-30.0:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/apache-commons-lang3-3.7 diff --git a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.expected b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.expected index e69de29bb2d1..3509f576dfa3 100644 --- a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.expected +++ b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.expected @@ -0,0 +1,12 @@ +#select +| RsaWithoutOaepTest.java:5:44:5:62 | "RSA/ECB/NoPadding" | RsaWithoutOaepTest.java:5:44:5:62 | "RSA/ECB/NoPadding" | RsaWithoutOaepTest.java:5:44:5:62 | "RSA/ECB/NoPadding" | This specification is used to $@ without OAEP padding. | RsaWithoutOaepTest.java:5:44:5:62 | "RSA/ECB/NoPadding" | initialize an RSA cipher | +| RsaWithoutOaepTest.java:15:32:15:50 | "RSA/ECB/NoPadding" : String | RsaWithoutOaepTest.java:15:32:15:50 | "RSA/ECB/NoPadding" : String | RsaWithoutOaepTest.java:11:35:11:38 | spec | This specification is used to $@ without OAEP padding. | RsaWithoutOaepTest.java:11:35:11:38 | spec | initialize an RSA cipher | +edges +| RsaWithoutOaepTest.java:10:29:10:39 | spec : String | RsaWithoutOaepTest.java:11:35:11:38 | spec | provenance | | +| RsaWithoutOaepTest.java:15:32:15:50 | "RSA/ECB/NoPadding" : String | RsaWithoutOaepTest.java:10:29:10:39 | spec : String | provenance | | +nodes +| RsaWithoutOaepTest.java:5:44:5:62 | "RSA/ECB/NoPadding" | semmle.label | "RSA/ECB/NoPadding" | +| RsaWithoutOaepTest.java:10:29:10:39 | spec : String | semmle.label | spec : String | +| RsaWithoutOaepTest.java:11:35:11:38 | spec | semmle.label | spec | +| RsaWithoutOaepTest.java:15:32:15:50 | "RSA/ECB/NoPadding" : String | semmle.label | "RSA/ECB/NoPadding" : String | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.java b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.java index b8a1c73110c5..d953522d76be 100644 --- a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.java +++ b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.java @@ -2,16 +2,16 @@ class RsaWithoutOaep { public void test() throws Exception { - Cipher rsaBad = Cipher.getInstance("RSA/ECB/NoPadding"); // $hasTaintFlow + Cipher rsaBad = Cipher.getInstance("RSA/ECB/NoPadding"); // $ Alert - Cipher rsaGood = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding"); + Cipher rsaGood = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding"); } public Cipher getCipher(String spec) throws Exception { - return Cipher.getInstance(spec); // $hasTaintFlow + return Cipher.getInstance(spec); // $ Sink } public void test2() throws Exception { - Cipher rsa = getCipher("RSA/ECB/NoPadding"); + Cipher rsa = getCipher("RSA/ECB/NoPadding"); // $ Alert } -} \ No newline at end of file +} diff --git a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.ql b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.ql deleted file mode 100644 index b91765e6b7cc..000000000000 --- a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.ql +++ /dev/null @@ -1,4 +0,0 @@ -import java -import utils.test.InlineFlowTest -import semmle.code.java.security.RsaWithoutOaepQuery -import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.qlref b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.qlref new file mode 100644 index 000000000000..72ada3ecfc25 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-780/RsaWithoutOaep.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-917/OgnlInjection.java b/java/ql/test/query-tests/security/CWE-917/OgnlInjection.java index 777bbcb06aac..99f641f11d46 100644 --- a/java/ql/test/query-tests/security/CWE-917/OgnlInjection.java +++ b/java/ql/test/query-tests/security/CWE-917/OgnlInjection.java @@ -13,61 +13,61 @@ @Controller public class OgnlInjection { @RequestMapping - public void testOgnlParseExpression(@RequestParam String expr) throws Exception { + public void testOgnlParseExpression(@RequestParam String expr) throws Exception { // $ Source Object tree = Ognl.parseExpression(expr); - Ognl.getValue(tree, new HashMap<>(), new Object()); // $hasOgnlInjection - Ognl.setValue(tree, new HashMap<>(), new Object()); // $hasOgnlInjection + Ognl.getValue(tree, new HashMap<>(), new Object()); // $ Alert + Ognl.setValue(tree, new HashMap<>(), new Object()); // $ Alert Node node = (Node) tree; - node.getValue(null, new Object()); // $hasOgnlInjection - node.setValue(null, new Object(), new Object()); // $hasOgnlInjection + node.getValue(null, new Object()); // $ Alert + node.setValue(null, new Object(), new Object()); // $ Alert } @RequestMapping - public void testOgnlCompileExpression(@RequestParam String expr) throws Exception { + public void testOgnlCompileExpression(@RequestParam String expr) throws Exception { // $ Source Node tree = Ognl.compileExpression(null, new Object(), expr); - Ognl.getValue(tree, new HashMap<>(), new Object()); // $hasOgnlInjection - Ognl.setValue(tree, new HashMap<>(), new Object()); // $hasOgnlInjection + Ognl.getValue(tree, new HashMap<>(), new Object()); // $ Alert + Ognl.setValue(tree, new HashMap<>(), new Object()); // $ Alert - tree.getValue(null, new Object()); // $hasOgnlInjection - tree.setValue(null, new Object(), new Object()); // $hasOgnlInjection + tree.getValue(null, new Object()); // $ Alert + tree.setValue(null, new Object(), new Object()); // $ Alert } @RequestMapping - public void testOgnlDirectlyToGetSet(@RequestParam String expr) throws Exception { - Ognl.getValue(expr, new Object()); // $hasOgnlInjection - Ognl.setValue(expr, new Object(), new Object()); // $hasOgnlInjection + public void testOgnlDirectlyToGetSet(@RequestParam String expr) throws Exception { // $ Source + Ognl.getValue(expr, new Object()); // $ Alert + Ognl.setValue(expr, new Object(), new Object()); // $ Alert } @RequestMapping - public void testStruts(@RequestParam String expr) throws Exception { + public void testStruts(@RequestParam String expr) throws Exception { // $ Source OgnlUtil ognl = new OgnlUtil(); - ognl.getValue(expr, new HashMap<>(), new Object()); // $hasOgnlInjection - ognl.setValue(expr, new HashMap<>(), new Object(), new Object()); // $hasOgnlInjection - new OgnlUtil().callMethod(expr, new HashMap<>(), new Object()); // $hasOgnlInjection + ognl.getValue(expr, new HashMap<>(), new Object()); // $ Alert + ognl.setValue(expr, new HashMap<>(), new Object(), new Object()); // $ Alert + new OgnlUtil().callMethod(expr, new HashMap<>(), new Object()); // $ Alert } @RequestMapping - public void testExpressionAccessor(@RequestParam String expr) throws Exception { + public void testExpressionAccessor(@RequestParam String expr) throws Exception { // $ Source Node tree = Ognl.compileExpression(null, new Object(), expr); ExpressionAccessor accessor = tree.getAccessor(); - accessor.get(null, new Object()); // $hasOgnlInjection - accessor.set(null, new Object(), new Object()); // $hasOgnlInjection + accessor.get(null, new Object()); // $ Alert + accessor.set(null, new Object(), new Object()); // $ Alert - Ognl.getValue(accessor, null, new Object()); // $hasOgnlInjection - Ognl.setValue(accessor, null, new Object()); // $hasOgnlInjection + Ognl.getValue(accessor, null, new Object()); // $ Alert + Ognl.setValue(accessor, null, new Object()); // $ Alert } @RequestMapping - public void testExpressionAccessorSetExpression(@RequestParam String expr) throws Exception { + public void testExpressionAccessorSetExpression(@RequestParam String expr) throws Exception { // $ Source Node tree = Ognl.compileExpression(null, new Object(), "\"some safe expression\".toString()"); ExpressionAccessor accessor = tree.getAccessor(); Node taintedTree = Ognl.compileExpression(null, new Object(), expr); accessor.setExpression(taintedTree); - accessor.get(null, new Object()); // $hasOgnlInjection - accessor.set(null, new Object(), new Object()); // $hasOgnlInjection + accessor.get(null, new Object()); // $ Alert + accessor.set(null, new Object(), new Object()); // $ Alert - Ognl.getValue(accessor, null, new Object()); // $hasOgnlInjection - Ognl.setValue(accessor, null, new Object()); // $hasOgnlInjection + Ognl.getValue(accessor, null, new Object()); // $ Alert + Ognl.setValue(accessor, null, new Object()); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.expected b/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.expected index e69de29bb2d1..bcdf14e0c2ba 100644 --- a/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.expected @@ -0,0 +1,109 @@ +#select +| OgnlInjection.java:18:19:18:22 | tree | OgnlInjection.java:16:39:16:63 | expr : String | OgnlInjection.java:18:19:18:22 | tree | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:16:39:16:63 | expr | user-provided value | +| OgnlInjection.java:19:19:19:22 | tree | OgnlInjection.java:16:39:16:63 | expr : String | OgnlInjection.java:19:19:19:22 | tree | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:16:39:16:63 | expr | user-provided value | +| OgnlInjection.java:22:5:22:8 | node | OgnlInjection.java:16:39:16:63 | expr : String | OgnlInjection.java:22:5:22:8 | node | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:16:39:16:63 | expr | user-provided value | +| OgnlInjection.java:23:5:23:8 | node | OgnlInjection.java:16:39:16:63 | expr : String | OgnlInjection.java:23:5:23:8 | node | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:16:39:16:63 | expr | user-provided value | +| OgnlInjection.java:29:19:29:22 | tree | OgnlInjection.java:27:41:27:65 | expr : String | OgnlInjection.java:29:19:29:22 | tree | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:27:41:27:65 | expr | user-provided value | +| OgnlInjection.java:30:19:30:22 | tree | OgnlInjection.java:27:41:27:65 | expr : String | OgnlInjection.java:30:19:30:22 | tree | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:27:41:27:65 | expr | user-provided value | +| OgnlInjection.java:32:5:32:8 | tree | OgnlInjection.java:27:41:27:65 | expr : String | OgnlInjection.java:32:5:32:8 | tree | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:27:41:27:65 | expr | user-provided value | +| OgnlInjection.java:33:5:33:8 | tree | OgnlInjection.java:27:41:27:65 | expr : String | OgnlInjection.java:33:5:33:8 | tree | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:27:41:27:65 | expr | user-provided value | +| OgnlInjection.java:38:19:38:22 | expr | OgnlInjection.java:37:40:37:64 | expr : String | OgnlInjection.java:38:19:38:22 | expr | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:37:40:37:64 | expr | user-provided value | +| OgnlInjection.java:39:19:39:22 | expr | OgnlInjection.java:37:40:37:64 | expr : String | OgnlInjection.java:39:19:39:22 | expr | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:37:40:37:64 | expr | user-provided value | +| OgnlInjection.java:45:19:45:22 | expr | OgnlInjection.java:43:26:43:50 | expr : String | OgnlInjection.java:45:19:45:22 | expr | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:43:26:43:50 | expr | user-provided value | +| OgnlInjection.java:46:19:46:22 | expr | OgnlInjection.java:43:26:43:50 | expr : String | OgnlInjection.java:46:19:46:22 | expr | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:43:26:43:50 | expr | user-provided value | +| OgnlInjection.java:47:31:47:34 | expr | OgnlInjection.java:43:26:43:50 | expr : String | OgnlInjection.java:47:31:47:34 | expr | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:43:26:43:50 | expr | user-provided value | +| OgnlInjection.java:54:5:54:12 | accessor | OgnlInjection.java:51:38:51:62 | expr : String | OgnlInjection.java:54:5:54:12 | accessor | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:51:38:51:62 | expr | user-provided value | +| OgnlInjection.java:55:5:55:12 | accessor | OgnlInjection.java:51:38:51:62 | expr : String | OgnlInjection.java:55:5:55:12 | accessor | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:51:38:51:62 | expr | user-provided value | +| OgnlInjection.java:57:19:57:26 | accessor | OgnlInjection.java:51:38:51:62 | expr : String | OgnlInjection.java:57:19:57:26 | accessor | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:51:38:51:62 | expr | user-provided value | +| OgnlInjection.java:58:19:58:26 | accessor | OgnlInjection.java:51:38:51:62 | expr : String | OgnlInjection.java:58:19:58:26 | accessor | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:51:38:51:62 | expr | user-provided value | +| OgnlInjection.java:67:5:67:12 | accessor | OgnlInjection.java:62:51:62:75 | expr : String | OgnlInjection.java:67:5:67:12 | accessor | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:62:51:62:75 | expr | user-provided value | +| OgnlInjection.java:68:5:68:12 | accessor | OgnlInjection.java:62:51:62:75 | expr : String | OgnlInjection.java:68:5:68:12 | accessor | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:62:51:62:75 | expr | user-provided value | +| OgnlInjection.java:70:19:70:26 | accessor | OgnlInjection.java:62:51:62:75 | expr : String | OgnlInjection.java:70:19:70:26 | accessor | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:62:51:62:75 | expr | user-provided value | +| OgnlInjection.java:71:19:71:26 | accessor | OgnlInjection.java:62:51:62:75 | expr : String | OgnlInjection.java:71:19:71:26 | accessor | OGNL Expression Language statement depends on a $@. | OgnlInjection.java:62:51:62:75 | expr | user-provided value | +edges +| OgnlInjection.java:16:39:16:63 | expr : String | OgnlInjection.java:17:40:17:43 | expr : String | provenance | | +| OgnlInjection.java:17:19:17:44 | parseExpression(...) : Object | OgnlInjection.java:18:19:18:22 | tree | provenance | Sink:MaD:8 | +| OgnlInjection.java:17:19:17:44 | parseExpression(...) : Object | OgnlInjection.java:19:19:19:22 | tree | provenance | Sink:MaD:9 | +| OgnlInjection.java:17:19:17:44 | parseExpression(...) : Object | OgnlInjection.java:21:17:21:27 | (...)... : Object | provenance | | +| OgnlInjection.java:17:40:17:43 | expr : String | OgnlInjection.java:17:19:17:44 | parseExpression(...) : Object | provenance | Config | +| OgnlInjection.java:21:17:21:27 | (...)... : Object | OgnlInjection.java:22:5:22:8 | node | provenance | Sink:MaD:6 | +| OgnlInjection.java:21:17:21:27 | (...)... : Object | OgnlInjection.java:23:5:23:8 | node | provenance | Sink:MaD:7 | +| OgnlInjection.java:27:41:27:65 | expr : String | OgnlInjection.java:28:60:28:63 | expr : String | provenance | | +| OgnlInjection.java:28:17:28:64 | compileExpression(...) : Node | OgnlInjection.java:29:19:29:22 | tree | provenance | Sink:MaD:8 | +| OgnlInjection.java:28:17:28:64 | compileExpression(...) : Node | OgnlInjection.java:30:19:30:22 | tree | provenance | Sink:MaD:9 | +| OgnlInjection.java:28:17:28:64 | compileExpression(...) : Node | OgnlInjection.java:32:5:32:8 | tree | provenance | Sink:MaD:6 | +| OgnlInjection.java:28:17:28:64 | compileExpression(...) : Node | OgnlInjection.java:33:5:33:8 | tree | provenance | Sink:MaD:7 | +| OgnlInjection.java:28:60:28:63 | expr : String | OgnlInjection.java:28:17:28:64 | compileExpression(...) : Node | provenance | Config | +| OgnlInjection.java:37:40:37:64 | expr : String | OgnlInjection.java:38:19:38:22 | expr | provenance | Sink:MaD:8 | +| OgnlInjection.java:37:40:37:64 | expr : String | OgnlInjection.java:39:19:39:22 | expr | provenance | Sink:MaD:9 | +| OgnlInjection.java:43:26:43:50 | expr : String | OgnlInjection.java:45:19:45:22 | expr | provenance | Sink:MaD:2 | +| OgnlInjection.java:43:26:43:50 | expr : String | OgnlInjection.java:46:19:46:22 | expr | provenance | Sink:MaD:3 | +| OgnlInjection.java:43:26:43:50 | expr : String | OgnlInjection.java:47:31:47:34 | expr | provenance | Sink:MaD:1 | +| OgnlInjection.java:51:38:51:62 | expr : String | OgnlInjection.java:52:60:52:63 | expr : String | provenance | | +| OgnlInjection.java:52:17:52:64 | compileExpression(...) : Node | OgnlInjection.java:53:35:53:38 | tree : Node | provenance | | +| OgnlInjection.java:52:60:52:63 | expr : String | OgnlInjection.java:52:17:52:64 | compileExpression(...) : Node | provenance | Config | +| OgnlInjection.java:53:35:53:38 | tree : Node | OgnlInjection.java:53:35:53:52 | getAccessor(...) : ExpressionAccessor | provenance | Config | +| OgnlInjection.java:53:35:53:52 | getAccessor(...) : ExpressionAccessor | OgnlInjection.java:54:5:54:12 | accessor | provenance | Sink:MaD:4 | +| OgnlInjection.java:53:35:53:52 | getAccessor(...) : ExpressionAccessor | OgnlInjection.java:55:5:55:12 | accessor | provenance | Sink:MaD:5 | +| OgnlInjection.java:53:35:53:52 | getAccessor(...) : ExpressionAccessor | OgnlInjection.java:57:19:57:26 | accessor | provenance | Sink:MaD:8 | +| OgnlInjection.java:53:35:53:52 | getAccessor(...) : ExpressionAccessor | OgnlInjection.java:58:19:58:26 | accessor | provenance | Sink:MaD:9 | +| OgnlInjection.java:62:51:62:75 | expr : String | OgnlInjection.java:65:67:65:70 | expr : String | provenance | | +| OgnlInjection.java:65:24:65:71 | compileExpression(...) : Node | OgnlInjection.java:66:28:66:38 | taintedTree : Node | provenance | | +| OgnlInjection.java:65:67:65:70 | expr : String | OgnlInjection.java:65:24:65:71 | compileExpression(...) : Node | provenance | Config | +| OgnlInjection.java:66:5:66:12 | accessor [post update] : ExpressionAccessor | OgnlInjection.java:67:5:67:12 | accessor | provenance | Sink:MaD:4 | +| OgnlInjection.java:66:5:66:12 | accessor [post update] : ExpressionAccessor | OgnlInjection.java:68:5:68:12 | accessor | provenance | Sink:MaD:5 | +| OgnlInjection.java:66:5:66:12 | accessor [post update] : ExpressionAccessor | OgnlInjection.java:70:19:70:26 | accessor | provenance | Sink:MaD:8 | +| OgnlInjection.java:66:5:66:12 | accessor [post update] : ExpressionAccessor | OgnlInjection.java:71:19:71:26 | accessor | provenance | Sink:MaD:9 | +| OgnlInjection.java:66:28:66:38 | taintedTree : Node | OgnlInjection.java:66:5:66:12 | accessor [post update] : ExpressionAccessor | provenance | Config | +models +| 1 | Sink: com.opensymphony.xwork2.ognl; OgnlUtil; false; callMethod; ; ; Argument[0]; ognl-injection; manual | +| 2 | Sink: com.opensymphony.xwork2.ognl; OgnlUtil; false; getValue; ; ; Argument[0]; ognl-injection; manual | +| 3 | Sink: com.opensymphony.xwork2.ognl; OgnlUtil; false; setValue; ; ; Argument[0]; ognl-injection; manual | +| 4 | Sink: ognl.enhance; ExpressionAccessor; true; get; ; ; Argument[this]; ognl-injection; manual | +| 5 | Sink: ognl.enhance; ExpressionAccessor; true; set; ; ; Argument[this]; ognl-injection; manual | +| 6 | Sink: ognl; Node; false; getValue; ; ; Argument[this]; ognl-injection; manual | +| 7 | Sink: ognl; Node; false; setValue; ; ; Argument[this]; ognl-injection; manual | +| 8 | Sink: ognl; Ognl; false; getValue; ; ; Argument[0]; ognl-injection; manual | +| 9 | Sink: ognl; Ognl; false; setValue; ; ; Argument[0]; ognl-injection; manual | +nodes +| OgnlInjection.java:16:39:16:63 | expr : String | semmle.label | expr : String | +| OgnlInjection.java:17:19:17:44 | parseExpression(...) : Object | semmle.label | parseExpression(...) : Object | +| OgnlInjection.java:17:40:17:43 | expr : String | semmle.label | expr : String | +| OgnlInjection.java:18:19:18:22 | tree | semmle.label | tree | +| OgnlInjection.java:19:19:19:22 | tree | semmle.label | tree | +| OgnlInjection.java:21:17:21:27 | (...)... : Object | semmle.label | (...)... : Object | +| OgnlInjection.java:22:5:22:8 | node | semmle.label | node | +| OgnlInjection.java:23:5:23:8 | node | semmle.label | node | +| OgnlInjection.java:27:41:27:65 | expr : String | semmle.label | expr : String | +| OgnlInjection.java:28:17:28:64 | compileExpression(...) : Node | semmle.label | compileExpression(...) : Node | +| OgnlInjection.java:28:60:28:63 | expr : String | semmle.label | expr : String | +| OgnlInjection.java:29:19:29:22 | tree | semmle.label | tree | +| OgnlInjection.java:30:19:30:22 | tree | semmle.label | tree | +| OgnlInjection.java:32:5:32:8 | tree | semmle.label | tree | +| OgnlInjection.java:33:5:33:8 | tree | semmle.label | tree | +| OgnlInjection.java:37:40:37:64 | expr : String | semmle.label | expr : String | +| OgnlInjection.java:38:19:38:22 | expr | semmle.label | expr | +| OgnlInjection.java:39:19:39:22 | expr | semmle.label | expr | +| OgnlInjection.java:43:26:43:50 | expr : String | semmle.label | expr : String | +| OgnlInjection.java:45:19:45:22 | expr | semmle.label | expr | +| OgnlInjection.java:46:19:46:22 | expr | semmle.label | expr | +| OgnlInjection.java:47:31:47:34 | expr | semmle.label | expr | +| OgnlInjection.java:51:38:51:62 | expr : String | semmle.label | expr : String | +| OgnlInjection.java:52:17:52:64 | compileExpression(...) : Node | semmle.label | compileExpression(...) : Node | +| OgnlInjection.java:52:60:52:63 | expr : String | semmle.label | expr : String | +| OgnlInjection.java:53:35:53:38 | tree : Node | semmle.label | tree : Node | +| OgnlInjection.java:53:35:53:52 | getAccessor(...) : ExpressionAccessor | semmle.label | getAccessor(...) : ExpressionAccessor | +| OgnlInjection.java:54:5:54:12 | accessor | semmle.label | accessor | +| OgnlInjection.java:55:5:55:12 | accessor | semmle.label | accessor | +| OgnlInjection.java:57:19:57:26 | accessor | semmle.label | accessor | +| OgnlInjection.java:58:19:58:26 | accessor | semmle.label | accessor | +| OgnlInjection.java:62:51:62:75 | expr : String | semmle.label | expr : String | +| OgnlInjection.java:65:24:65:71 | compileExpression(...) : Node | semmle.label | compileExpression(...) : Node | +| OgnlInjection.java:65:67:65:70 | expr : String | semmle.label | expr : String | +| OgnlInjection.java:66:5:66:12 | accessor [post update] : ExpressionAccessor | semmle.label | accessor [post update] : ExpressionAccessor | +| OgnlInjection.java:66:28:66:38 | taintedTree : Node | semmle.label | taintedTree : Node | +| OgnlInjection.java:67:5:67:12 | accessor | semmle.label | accessor | +| OgnlInjection.java:68:5:68:12 | accessor | semmle.label | accessor | +| OgnlInjection.java:70:19:70:26 | accessor | semmle.label | accessor | +| OgnlInjection.java:71:19:71:26 | accessor | semmle.label | accessor | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.ql b/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.ql deleted file mode 100644 index 5957bdf5fa28..000000000000 --- a/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import semmle.code.java.security.OgnlInjectionQuery -import utils.test.InlineExpectationsTest - -module OgnlInjectionTest implements TestSig { - string getARelevantTag() { result = "hasOgnlInjection" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasOgnlInjection" and - exists(DataFlow::Node sink | OgnlInjectionFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.qlref b/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.qlref new file mode 100644 index 000000000000..f27fdc29657f --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-917/OgnlInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-918/ApacheHttpSSRF.java b/java/ql/test/query-tests/security/CWE-918/ApacheHttpSSRF.java index a3f476ccfec4..0fcb3c129754 100644 --- a/java/ql/test/query-tests/security/CWE-918/ApacheHttpSSRF.java +++ b/java/ql/test/query-tests/security/CWE-918/ApacheHttpSSRF.java @@ -24,38 +24,38 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String sink = request.getParameter("uri"); + String sink = request.getParameter("uri"); // $ Source URI uri = new URI(sink); - HttpGet httpGet = new HttpGet(uri); // $ SSRF + HttpGet httpGet = new HttpGet(uri); // $ Alert HttpGet httpGet2 = new HttpGet(); - httpGet2.setURI(uri); // $ SSRF + httpGet2.setURI(uri); // $ Alert - new HttpHead(uri); // $ SSRF - new HttpPost(uri); // $ SSRF - new HttpPut(uri); // $ SSRF - new HttpDelete(uri); // $ SSRF - new HttpOptions(uri); // $ SSRF - new HttpTrace(uri); // $ SSRF - new HttpPatch(uri); // $ SSRF + new HttpHead(uri); // $ Alert + new HttpPost(uri); // $ Alert + new HttpPut(uri); // $ Alert + new HttpDelete(uri); // $ Alert + new HttpOptions(uri); // $ Alert + new HttpTrace(uri); // $ Alert + new HttpPatch(uri); // $ Alert - new BasicHttpRequest(new BasicRequestLine("GET", uri.toString(), null)); // $ SSRF - new BasicHttpRequest("GET", uri.toString()); // $ SSRF - new BasicHttpRequest("GET", uri.toString(), null); // $ SSRF + new BasicHttpRequest(new BasicRequestLine("GET", uri.toString(), null)); // $ Alert + new BasicHttpRequest("GET", uri.toString()); // $ Alert + new BasicHttpRequest("GET", uri.toString(), null); // $ Alert - new BasicHttpEntityEnclosingRequest(new BasicRequestLine("GET", uri.toString(), null)); // $ SSRF - new BasicHttpEntityEnclosingRequest("GET", uri.toString()); // $ SSRF - new BasicHttpEntityEnclosingRequest("GET", uri.toString(), null); // $ SSRF + new BasicHttpEntityEnclosingRequest(new BasicRequestLine("GET", uri.toString(), null)); // $ Alert + new BasicHttpEntityEnclosingRequest("GET", uri.toString()); // $ Alert + new BasicHttpEntityEnclosingRequest("GET", uri.toString(), null); // $ Alert - RequestBuilder.get(uri); // $ SSRF - RequestBuilder.post(uri); // $ SSRF - RequestBuilder.put(uri); // $ SSRF - RequestBuilder.delete(uri); // $ SSRF - RequestBuilder.options(uri); // $ SSRF - RequestBuilder.head(uri); // $ SSRF - RequestBuilder.trace(uri); // $ SSRF - RequestBuilder.patch(uri); // $ SSRF - RequestBuilder.get("").setUri(uri); // $ SSRF + RequestBuilder.get(uri); // $ Alert + RequestBuilder.post(uri); // $ Alert + RequestBuilder.put(uri); // $ Alert + RequestBuilder.delete(uri); // $ Alert + RequestBuilder.options(uri); // $ Alert + RequestBuilder.head(uri); // $ Alert + RequestBuilder.trace(uri); // $ Alert + RequestBuilder.patch(uri); // $ Alert + RequestBuilder.get("").setUri(uri); // $ Alert } catch (Exception e) { // TODO: handle exception diff --git a/java/ql/test/query-tests/security/CWE-918/ApacheHttpSSRFVersion5.java b/java/ql/test/query-tests/security/CWE-918/ApacheHttpSSRFVersion5.java index de22dd02fac0..ad9bf4546a98 100644 --- a/java/ql/test/query-tests/security/CWE-918/ApacheHttpSSRFVersion5.java +++ b/java/ql/test/query-tests/security/CWE-918/ApacheHttpSSRFVersion5.java @@ -38,134 +38,134 @@ protected void doGet1(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String uriSink = request.getParameter("uri"); + String uriSink = request.getParameter("uri"); // $ Source URI uri = new URI(uriSink); - String hostSink = request.getParameter("host"); + String hostSink = request.getParameter("host"); // $ Source HttpHost host = new HttpHost(hostSink); // org.apache.hc.client5.http.async.methods.BasicHttpRequests - BasicHttpRequests.create(Method.CONNECT, host, "path"); // $ SSRF - BasicHttpRequests.create(Method.CONNECT, uri.toString()); // $ SSRF - BasicHttpRequests.create(Method.CONNECT, uri); // $ SSRF - BasicHttpRequests.create("method", uri.toString()); // $ SSRF - BasicHttpRequests.create("method", uri); // $ SSRF + BasicHttpRequests.create(Method.CONNECT, host, "path"); // $ Alert + BasicHttpRequests.create(Method.CONNECT, uri.toString()); // $ Alert + BasicHttpRequests.create(Method.CONNECT, uri); // $ Alert + BasicHttpRequests.create("method", uri.toString()); // $ Alert + BasicHttpRequests.create("method", uri); // $ Alert - BasicHttpRequests.delete(host, "path"); // $ SSRF - BasicHttpRequests.delete(uri.toString()); // $ SSRF - BasicHttpRequests.delete(uri); // $ SSRF + BasicHttpRequests.delete(host, "path"); // $ Alert + BasicHttpRequests.delete(uri.toString()); // $ Alert + BasicHttpRequests.delete(uri); // $ Alert - BasicHttpRequests.get(host, "path"); // $ SSRF - BasicHttpRequests.get(uri.toString()); // $ SSRF - BasicHttpRequests.get(uri); // $ SSRF + BasicHttpRequests.get(host, "path"); // $ Alert + BasicHttpRequests.get(uri.toString()); // $ Alert + BasicHttpRequests.get(uri); // $ Alert - BasicHttpRequests.head(host, "path"); // $ SSRF - BasicHttpRequests.head(uri.toString()); // $ SSRF - BasicHttpRequests.head(uri); // $ SSRF + BasicHttpRequests.head(host, "path"); // $ Alert + BasicHttpRequests.head(uri.toString()); // $ Alert + BasicHttpRequests.head(uri); // $ Alert - BasicHttpRequests.options(host, "path"); // $ SSRF - BasicHttpRequests.options(uri.toString()); // $ SSRF - BasicHttpRequests.options(uri); // $ SSRF + BasicHttpRequests.options(host, "path"); // $ Alert + BasicHttpRequests.options(uri.toString()); // $ Alert + BasicHttpRequests.options(uri); // $ Alert - BasicHttpRequests.patch(host, "path"); // $ SSRF - BasicHttpRequests.patch(uri.toString()); // $ SSRF - BasicHttpRequests.patch(uri); // $ SSRF + BasicHttpRequests.patch(host, "path"); // $ Alert + BasicHttpRequests.patch(uri.toString()); // $ Alert + BasicHttpRequests.patch(uri); // $ Alert - BasicHttpRequests.post(host, "path"); // $ SSRF - BasicHttpRequests.post(uri.toString()); // $ SSRF - BasicHttpRequests.post(uri); // $ SSRF + BasicHttpRequests.post(host, "path"); // $ Alert + BasicHttpRequests.post(uri.toString()); // $ Alert + BasicHttpRequests.post(uri); // $ Alert - BasicHttpRequests.put(host, "path"); // $ SSRF - BasicHttpRequests.put(uri.toString()); // $ SSRF - BasicHttpRequests.put(uri); // $ SSRF + BasicHttpRequests.put(host, "path"); // $ Alert + BasicHttpRequests.put(uri.toString()); // $ Alert + BasicHttpRequests.put(uri); // $ Alert - BasicHttpRequests.trace(host, "path"); // $ SSRF - BasicHttpRequests.trace(uri.toString()); // $ SSRF - BasicHttpRequests.trace(uri); // $ SSRF + BasicHttpRequests.trace(host, "path"); // $ Alert + BasicHttpRequests.trace(uri.toString()); // $ Alert + BasicHttpRequests.trace(uri); // $ Alert // org.apache.hc.client5.http.async.methods.ConfigurableHttpRequest - new ConfigurableHttpRequest("method", host, "path"); // $ SSRF - new ConfigurableHttpRequest("method", uri); // $ SSRF + new ConfigurableHttpRequest("method", host, "path"); // $ Alert + new ConfigurableHttpRequest("method", uri); // $ Alert // org.apache.hc.client5.http.async.methods.SimpleHttpRequest - new SimpleHttpRequest(Method.CONNECT, host, "path"); // $ SSRF - new SimpleHttpRequest(Method.CONNECT, uri); // $ SSRF - new SimpleHttpRequest("method", host, "path"); // $ SSRF - new SimpleHttpRequest("method", uri); // $ SSRF + new SimpleHttpRequest(Method.CONNECT, host, "path"); // $ Alert + new SimpleHttpRequest(Method.CONNECT, uri); // $ Alert + new SimpleHttpRequest("method", host, "path"); // $ Alert + new SimpleHttpRequest("method", uri); // $ Alert - SimpleHttpRequest.create(Method.CONNECT, host, "path"); // $ SSRF - SimpleHttpRequest.create(Method.CONNECT, uri); // $ SSRF - SimpleHttpRequest.create("method", uri.toString()); // $ SSRF - SimpleHttpRequest.create("method", uri); // $ SSRF + SimpleHttpRequest.create(Method.CONNECT, host, "path"); // $ Alert + SimpleHttpRequest.create(Method.CONNECT, uri); // $ Alert + SimpleHttpRequest.create("method", uri.toString()); // $ Alert + SimpleHttpRequest.create("method", uri); // $ Alert // org.apache.hc.client5.http.async.methods.SimpleHttpRequests - SimpleHttpRequests.create(Method.CONNECT, host, "path"); // $ SSRF - SimpleHttpRequests.create(Method.CONNECT, uri.toString()); // $ SSRF - SimpleHttpRequests.create(Method.CONNECT, uri); // $ SSRF - SimpleHttpRequests.create("method", uri.toString()); // $ SSRF - SimpleHttpRequests.create("method", uri); // $ SSRF + SimpleHttpRequests.create(Method.CONNECT, host, "path"); // $ Alert + SimpleHttpRequests.create(Method.CONNECT, uri.toString()); // $ Alert + SimpleHttpRequests.create(Method.CONNECT, uri); // $ Alert + SimpleHttpRequests.create("method", uri.toString()); // $ Alert + SimpleHttpRequests.create("method", uri); // $ Alert - SimpleHttpRequests.delete(host, "path"); // $ SSRF - SimpleHttpRequests.delete(uri.toString()); // $ SSRF - SimpleHttpRequests.delete(uri); // $ SSRF + SimpleHttpRequests.delete(host, "path"); // $ Alert + SimpleHttpRequests.delete(uri.toString()); // $ Alert + SimpleHttpRequests.delete(uri); // $ Alert - SimpleHttpRequests.get(host, "path"); // $ SSRF - SimpleHttpRequests.get(uri.toString()); // $ SSRF - SimpleHttpRequests.get(uri); // $ SSRF + SimpleHttpRequests.get(host, "path"); // $ Alert + SimpleHttpRequests.get(uri.toString()); // $ Alert + SimpleHttpRequests.get(uri); // $ Alert - SimpleHttpRequests.head(host, "path"); // $ SSRF - SimpleHttpRequests.head(uri.toString()); // $ SSRF - SimpleHttpRequests.head(uri); // $ SSRF + SimpleHttpRequests.head(host, "path"); // $ Alert + SimpleHttpRequests.head(uri.toString()); // $ Alert + SimpleHttpRequests.head(uri); // $ Alert - SimpleHttpRequests.options(host, "path"); // $ SSRF - SimpleHttpRequests.options(uri.toString()); // $ SSRF - SimpleHttpRequests.options(uri); // $ SSRF + SimpleHttpRequests.options(host, "path"); // $ Alert + SimpleHttpRequests.options(uri.toString()); // $ Alert + SimpleHttpRequests.options(uri); // $ Alert - SimpleHttpRequests.patch(host, "path"); // $ SSRF - SimpleHttpRequests.patch(uri.toString()); // $ SSRF - SimpleHttpRequests.patch(uri); // $ SSRF + SimpleHttpRequests.patch(host, "path"); // $ Alert + SimpleHttpRequests.patch(uri.toString()); // $ Alert + SimpleHttpRequests.patch(uri); // $ Alert - SimpleHttpRequests.post(host, "path"); // $ SSRF - SimpleHttpRequests.post(uri.toString()); // $ SSRF - SimpleHttpRequests.post(uri); // $ SSRF + SimpleHttpRequests.post(host, "path"); // $ Alert + SimpleHttpRequests.post(uri.toString()); // $ Alert + SimpleHttpRequests.post(uri); // $ Alert - SimpleHttpRequests.put(host, "path"); // $ SSRF - SimpleHttpRequests.put(uri.toString()); // $ SSRF - SimpleHttpRequests.put(uri); // $ SSRF + SimpleHttpRequests.put(host, "path"); // $ Alert + SimpleHttpRequests.put(uri.toString()); // $ Alert + SimpleHttpRequests.put(uri); // $ Alert - SimpleHttpRequests.trace(host, "path"); // $ SSRF - SimpleHttpRequests.trace(uri.toString()); // $ SSRF - SimpleHttpRequests.trace(uri); // $ SSRF + SimpleHttpRequests.trace(host, "path"); // $ Alert + SimpleHttpRequests.trace(uri.toString()); // $ Alert + SimpleHttpRequests.trace(uri); // $ Alert // org.apache.hc.client5.http.async.methods.SimpleRequestBuilder - SimpleRequestBuilder.delete(uri.toString()); // $ SSRF - SimpleRequestBuilder.delete(uri); // $ SSRF + SimpleRequestBuilder.delete(uri.toString()); // $ Alert + SimpleRequestBuilder.delete(uri); // $ Alert - SimpleRequestBuilder.get(uri.toString()); // $ SSRF - SimpleRequestBuilder.get(uri); // $ SSRF + SimpleRequestBuilder.get(uri.toString()); // $ Alert + SimpleRequestBuilder.get(uri); // $ Alert - SimpleRequestBuilder.head(uri.toString()); // $ SSRF - SimpleRequestBuilder.head(uri); // $ SSRF + SimpleRequestBuilder.head(uri.toString()); // $ Alert + SimpleRequestBuilder.head(uri); // $ Alert - SimpleRequestBuilder.options(uri.toString()); // $ SSRF - SimpleRequestBuilder.options(uri); // $ SSRF + SimpleRequestBuilder.options(uri.toString()); // $ Alert + SimpleRequestBuilder.options(uri); // $ Alert - SimpleRequestBuilder.patch(uri.toString()); // $ SSRF - SimpleRequestBuilder.patch(uri); // $ SSRF + SimpleRequestBuilder.patch(uri.toString()); // $ Alert + SimpleRequestBuilder.patch(uri); // $ Alert - SimpleRequestBuilder.post(uri.toString()); // $ SSRF - SimpleRequestBuilder.post(uri); // $ SSRF + SimpleRequestBuilder.post(uri.toString()); // $ Alert + SimpleRequestBuilder.post(uri); // $ Alert - SimpleRequestBuilder.put(uri.toString()); // $ SSRF - SimpleRequestBuilder.put(uri); // $ SSRF + SimpleRequestBuilder.put(uri.toString()); // $ Alert + SimpleRequestBuilder.put(uri); // $ Alert - SimpleRequestBuilder.get().setHttpHost(host); // $ SSRF + SimpleRequestBuilder.get().setHttpHost(host); // $ Alert - SimpleRequestBuilder.get().setUri(uri.toString()); // $ SSRF - SimpleRequestBuilder.get().setUri(uri); // $ SSRF + SimpleRequestBuilder.get().setUri(uri.toString()); // $ Alert + SimpleRequestBuilder.get().setUri(uri); // $ Alert - SimpleRequestBuilder.trace(uri.toString()); // $ SSRF - SimpleRequestBuilder.trace(uri); // $ SSRF + SimpleRequestBuilder.trace(uri.toString()); // $ Alert + SimpleRequestBuilder.trace(uri); // $ Alert } catch (Exception e) { // TODO: handle exception @@ -177,66 +177,66 @@ protected void doGet2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String uriSink = request.getParameter("uri"); + String uriSink = request.getParameter("uri"); // $ Source URI uri = new URI(uriSink); // org.apache.hc.client5.http.classic.methods.ClassicHttpRequests - ClassicHttpRequests.create(Method.CONNECT, uri.toString()); // $ SSRF - ClassicHttpRequests.create(Method.CONNECT, uri); // $ SSRF - ClassicHttpRequests.create("method", uri.toString()); // $ SSRF - ClassicHttpRequests.create("method", uri); // $ SSRF + ClassicHttpRequests.create(Method.CONNECT, uri.toString()); // $ Alert + ClassicHttpRequests.create(Method.CONNECT, uri); // $ Alert + ClassicHttpRequests.create("method", uri.toString()); // $ Alert + ClassicHttpRequests.create("method", uri); // $ Alert - ClassicHttpRequests.delete(uri.toString()); // $ SSRF - ClassicHttpRequests.delete(uri); // $ SSRF + ClassicHttpRequests.delete(uri.toString()); // $ Alert + ClassicHttpRequests.delete(uri); // $ Alert - ClassicHttpRequests.get(uri.toString()); // $ SSRF - ClassicHttpRequests.get(uri); // $ SSRF + ClassicHttpRequests.get(uri.toString()); // $ Alert + ClassicHttpRequests.get(uri); // $ Alert - ClassicHttpRequests.head(uri.toString()); // $ SSRF - ClassicHttpRequests.head(uri); // $ SSRF + ClassicHttpRequests.head(uri.toString()); // $ Alert + ClassicHttpRequests.head(uri); // $ Alert - ClassicHttpRequests.options(uri.toString()); // $ SSRF - ClassicHttpRequests.options(uri); // $ SSRF + ClassicHttpRequests.options(uri.toString()); // $ Alert + ClassicHttpRequests.options(uri); // $ Alert - ClassicHttpRequests.patch(uri.toString()); // $ SSRF - ClassicHttpRequests.patch(uri); // $ SSRF + ClassicHttpRequests.patch(uri.toString()); // $ Alert + ClassicHttpRequests.patch(uri); // $ Alert - ClassicHttpRequests.post(uri.toString()); // $ SSRF - ClassicHttpRequests.post(uri); // $ SSRF + ClassicHttpRequests.post(uri.toString()); // $ Alert + ClassicHttpRequests.post(uri); // $ Alert - ClassicHttpRequests.put(uri.toString()); // $ SSRF - ClassicHttpRequests.put(uri); // $ SSRF + ClassicHttpRequests.put(uri.toString()); // $ Alert + ClassicHttpRequests.put(uri); // $ Alert - ClassicHttpRequests.trace(uri.toString()); // $ SSRF - ClassicHttpRequests.trace(uri); // $ SSRF + ClassicHttpRequests.trace(uri.toString()); // $ Alert + ClassicHttpRequests.trace(uri); // $ Alert // org.apache.hc.client5.http.classic.methods.HttpDelete through HttpTrace - new HttpDelete(uri.toString()); // $ SSRF - new HttpDelete(uri); // $ SSRF + new HttpDelete(uri.toString()); // $ Alert + new HttpDelete(uri); // $ Alert - new HttpGet(uri.toString()); // $ SSRF - new HttpGet(uri); // $ SSRF + new HttpGet(uri.toString()); // $ Alert + new HttpGet(uri); // $ Alert - new HttpHead(uri.toString()); // $ SSRF - new HttpHead(uri); // $ SSRF + new HttpHead(uri.toString()); // $ Alert + new HttpHead(uri); // $ Alert - new HttpOptions(uri.toString()); // $ SSRF - new HttpOptions(uri); // $ SSRF + new HttpOptions(uri.toString()); // $ Alert + new HttpOptions(uri); // $ Alert - new HttpPatch(uri.toString()); // $ SSRF - new HttpPatch(uri); // $ SSRF + new HttpPatch(uri.toString()); // $ Alert + new HttpPatch(uri); // $ Alert - new HttpPost(uri.toString()); // $ SSRF - new HttpPost(uri); // $ SSRF + new HttpPost(uri.toString()); // $ Alert + new HttpPost(uri); // $ Alert - new HttpPut(uri.toString()); // $ SSRF - new HttpPut(uri); // $ SSRF + new HttpPut(uri.toString()); // $ Alert + new HttpPut(uri); // $ Alert - new HttpTrace(uri.toString()); // $ SSRF - new HttpTrace(uri); // $ SSRF + new HttpTrace(uri.toString()); // $ Alert + new HttpTrace(uri); // $ Alert // org.apache.hc.client5.http.classic.methods.HttpUriRequestBase - new HttpUriRequestBase("method", uri); // $ SSRF + new HttpUriRequestBase("method", uri); // $ Alert } catch (Exception e) { // TODO: handle exception @@ -248,37 +248,37 @@ protected void doGet3(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String uriSink = request.getParameter("uri"); + String uriSink = request.getParameter("uri"); // $ Source URI uri = new URI(uriSink); // org.apache.hc.client5.http.fluent.Request - Request.create(Method.CONNECT, uri); // $ SSRF - Request.create("method", uri.toString()); // $ SSRF - Request.create("method", uri); // $ SSRF + Request.create(Method.CONNECT, uri); // $ Alert + Request.create("method", uri.toString()); // $ Alert + Request.create("method", uri); // $ Alert - Request.delete(uri.toString()); // $ SSRF - Request.delete(uri); // $ SSRF + Request.delete(uri.toString()); // $ Alert + Request.delete(uri); // $ Alert - Request.get(uri.toString()); // $ SSRF - Request.get(uri); // $ SSRF + Request.get(uri.toString()); // $ Alert + Request.get(uri); // $ Alert - Request.head(uri.toString()); // $ SSRF - Request.head(uri); // $ SSRF + Request.head(uri.toString()); // $ Alert + Request.head(uri); // $ Alert - Request.options(uri.toString()); // $ SSRF - Request.options(uri); // $ SSRF + Request.options(uri.toString()); // $ Alert + Request.options(uri); // $ Alert - Request.patch(uri.toString()); // $ SSRF - Request.patch(uri); // $ SSRF + Request.patch(uri.toString()); // $ Alert + Request.patch(uri); // $ Alert - Request.post(uri.toString()); // $ SSRF - Request.post(uri); // $ SSRF + Request.post(uri.toString()); // $ Alert + Request.post(uri); // $ Alert - Request.put(uri.toString()); // $ SSRF - Request.put(uri); // $ SSRF + Request.put(uri.toString()); // $ Alert + Request.put(uri); // $ Alert - Request.trace(uri.toString()); // $ SSRF - Request.trace(uri); // $ SSRF + Request.trace(uri.toString()); // $ Alert + Request.trace(uri); // $ Alert } catch (Exception e) { // TODO: handle exception @@ -292,26 +292,26 @@ protected void doGet4(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String uriSink = request.getParameter("uri"); + String uriSink = request.getParameter("uri"); // $ Source URI uri = new URI(uriSink); - String hostSink = request.getParameter("host"); + String hostSink = request.getParameter("host"); // $ Source HttpHost host = new HttpHost(hostSink); // org.apache.hc.core5.http.impl.bootstrap HttpAsyncRequester httpAsyncReq = new HttpAsyncRequester(null, null, null, null, null, null); - httpAsyncReq.connect(host, null); // $ SSRF - httpAsyncReq.connect(host, null, null, null); // $ SSRF + httpAsyncReq.connect(host, null); // $ Alert + httpAsyncReq.connect(host, null, null, null); // $ Alert // org.apache.hc.core5.http.impl.io DefaultClassicHttpRequestFactory defClassicHttpReqFact = new DefaultClassicHttpRequestFactory(); - defClassicHttpReqFact.newHttpRequest("method", uri.toString()); // $ SSRF - defClassicHttpReqFact.newHttpRequest("method", uri); // $ SSRF + defClassicHttpReqFact.newHttpRequest("method", uri.toString()); // $ Alert + defClassicHttpReqFact.newHttpRequest("method", uri); // $ Alert // org.apache.hc.core5.http.impl.nio DefaultHttpRequestFactory defHttpReqFact = new DefaultHttpRequestFactory(); - defHttpReqFact.newHttpRequest("method", uri.toString()); // $ SSRF - defHttpReqFact.newHttpRequest("method", uri); // $ SSRF + defHttpReqFact.newHttpRequest("method", uri.toString()); // $ Alert + defHttpReqFact.newHttpRequest("method", uri); // $ Alert } catch (Exception e) { // TODO: handle exception @@ -323,41 +323,41 @@ protected void doGet5(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String uriSink = request.getParameter("uri"); + String uriSink = request.getParameter("uri"); // $ Source URI uri = new URI(uriSink); - String hostSink = request.getParameter("host"); + String hostSink = request.getParameter("host"); // $ Source HttpHost host = new HttpHost(hostSink); // org.apache.hc.core5.http.io.support.ClassicRequestBuilder - ClassicRequestBuilder.delete(uri.toString()); // $ SSRF - ClassicRequestBuilder.delete(uri); // $ SSRF + ClassicRequestBuilder.delete(uri.toString()); // $ Alert + ClassicRequestBuilder.delete(uri); // $ Alert - ClassicRequestBuilder.get(uri.toString()); // $ SSRF - ClassicRequestBuilder.get(uri); // $ SSRF + ClassicRequestBuilder.get(uri.toString()); // $ Alert + ClassicRequestBuilder.get(uri); // $ Alert - ClassicRequestBuilder.head(uri.toString()); // $ SSRF - ClassicRequestBuilder.head(uri); // $ SSRF + ClassicRequestBuilder.head(uri.toString()); // $ Alert + ClassicRequestBuilder.head(uri); // $ Alert - ClassicRequestBuilder.options(uri.toString()); // $ SSRF - ClassicRequestBuilder.options(uri); // $ SSRF + ClassicRequestBuilder.options(uri.toString()); // $ Alert + ClassicRequestBuilder.options(uri); // $ Alert - ClassicRequestBuilder.patch(uri.toString()); // $ SSRF - ClassicRequestBuilder.patch(uri); // $ SSRF + ClassicRequestBuilder.patch(uri.toString()); // $ Alert + ClassicRequestBuilder.patch(uri); // $ Alert - ClassicRequestBuilder.post(uri.toString()); // $ SSRF - ClassicRequestBuilder.post(uri); // $ SSRF + ClassicRequestBuilder.post(uri.toString()); // $ Alert + ClassicRequestBuilder.post(uri); // $ Alert - ClassicRequestBuilder.put(uri.toString()); // $ SSRF - ClassicRequestBuilder.put(uri); // $ SSRF + ClassicRequestBuilder.put(uri.toString()); // $ Alert + ClassicRequestBuilder.put(uri); // $ Alert - ClassicRequestBuilder.get().setHttpHost(host); // $ SSRF + ClassicRequestBuilder.get().setHttpHost(host); // $ Alert - ClassicRequestBuilder.get().setUri(uri.toString()); // $ SSRF - ClassicRequestBuilder.get().setUri(uri); // $ SSRF + ClassicRequestBuilder.get().setUri(uri.toString()); // $ Alert + ClassicRequestBuilder.get().setUri(uri); // $ Alert - ClassicRequestBuilder.trace(uri.toString()); // $ SSRF - ClassicRequestBuilder.trace(uri); // $ SSRF + ClassicRequestBuilder.trace(uri.toString()); // $ Alert + ClassicRequestBuilder.trace(uri); // $ Alert } catch (Exception e) { // TODO: handle exception @@ -369,29 +369,29 @@ protected void doGet6(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String uriSink = request.getParameter("uri"); + String uriSink = request.getParameter("uri"); // $ Source URI uri = new URI(uriSink); - String hostSink = request.getParameter("host"); + String hostSink = request.getParameter("host"); // $ Source HttpHost host = new HttpHost(hostSink); // BasicClassicHttpRequest - new BasicClassicHttpRequest(Method.CONNECT, host, "path"); // $ SSRF - new BasicClassicHttpRequest(Method.CONNECT, uri); // $ SSRF - new BasicClassicHttpRequest("method", host, "path"); // $ SSRF - new BasicClassicHttpRequest("method", uri); // $ SSRF + new BasicClassicHttpRequest(Method.CONNECT, host, "path"); // $ Alert + new BasicClassicHttpRequest(Method.CONNECT, uri); // $ Alert + new BasicClassicHttpRequest("method", host, "path"); // $ Alert + new BasicClassicHttpRequest("method", uri); // $ Alert // BasicHttpRequest - new BasicHttpRequest(Method.CONNECT, host, "path"); // $ SSRF - new BasicHttpRequest(Method.CONNECT, uri); // $ SSRF - new BasicHttpRequest("method", host, "path"); // $ SSRF - new BasicHttpRequest("method", uri); // $ SSRF + new BasicHttpRequest(Method.CONNECT, host, "path"); // $ Alert + new BasicHttpRequest(Method.CONNECT, uri); // $ Alert + new BasicHttpRequest("method", host, "path"); // $ Alert + new BasicHttpRequest("method", uri); // $ Alert BasicHttpRequest bhr = new BasicHttpRequest("method", "path"); - bhr.setUri(uri); // $ SSRF + bhr.setUri(uri); // $ Alert // HttpRequestWrapper HttpRequestWrapper hrw = new HttpRequestWrapper(null); - hrw.setUri(uri); // $ SSRF + hrw.setUri(uri); // $ Alert } catch (Exception e) { // TODO: handle exception diff --git a/java/ql/test/query-tests/security/CWE-918/JakartaWsSSRF.java b/java/ql/test/query-tests/security/CWE-918/JakartaWsSSRF.java index ced253652111..37bf91d81fd2 100644 --- a/java/ql/test/query-tests/security/CWE-918/JakartaWsSSRF.java +++ b/java/ql/test/query-tests/security/CWE-918/JakartaWsSSRF.java @@ -11,8 +11,8 @@ public class JakartaWsSSRF extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Client client = ClientBuilder.newClient(); - String url = request.getParameter("url"); - client.target(url); // $ SSRF + String url = request.getParameter("url"); // $ Source + client.target(url); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-918/JavaNetHttpSSRF.java b/java/ql/test/query-tests/security/CWE-918/JavaNetHttpSSRF.java index 7cc5578ebf33..7181d426ffba 100644 --- a/java/ql/test/query-tests/security/CWE-918/JavaNetHttpSSRF.java +++ b/java/ql/test/query-tests/security/CWE-918/JavaNetHttpSSRF.java @@ -22,21 +22,21 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String sink = request.getParameter("uri"); + String sink = request.getParameter("uri"); // $ Source URI uri = new URI(sink); URI uri2 = new URI("http", sink, "fragement"); URL url1 = new URL(sink); - URLConnection c1 = url1.openConnection(); // $ SSRF + URLConnection c1 = url1.openConnection(); // $ Alert SocketAddress sa = new SocketAddress() { }; - URLConnection c2 = url1.openConnection(new Proxy(Type.HTTP, sa)); // $ SSRF - InputStream c3 = url1.openStream(); // $ SSRF + URLConnection c2 = url1.openConnection(new Proxy(Type.HTTP, sa)); // $ Alert + InputStream c3 = url1.openStream(); // $ Alert // java.net.http HttpClient client = HttpClient.newHttpClient(); - HttpRequest request2 = HttpRequest.newBuilder().uri(uri2).build(); // $ SSRF - HttpRequest request3 = HttpRequest.newBuilder(uri).build(); // $ SSRF + HttpRequest request2 = HttpRequest.newBuilder().uri(uri2).build(); // $ Alert + HttpRequest request3 = HttpRequest.newBuilder(uri).build(); // $ Alert } catch (Exception e) { // TODO: handle exception diff --git a/java/ql/test/query-tests/security/CWE-918/JaxWsSSRF.java b/java/ql/test/query-tests/security/CWE-918/JaxWsSSRF.java index da650e2de6cb..97602b29b553 100644 --- a/java/ql/test/query-tests/security/CWE-918/JaxWsSSRF.java +++ b/java/ql/test/query-tests/security/CWE-918/JaxWsSSRF.java @@ -11,8 +11,8 @@ public class JaxWsSSRF extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Client client = ClientBuilder.newClient(); - String url = request.getParameter("url"); - client.target(url); // $ SSRF + String url = request.getParameter("url"); // $ Source + client.target(url); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-918/JdbcUrlSSRF.java b/java/ql/test/query-tests/security/CWE-918/JdbcUrlSSRF.java index 94704c3d8621..859b998c9ea4 100644 --- a/java/ql/test/query-tests/security/CWE-918/JdbcUrlSSRF.java +++ b/java/ql/test/query-tests/security/CWE-918/JdbcUrlSSRF.java @@ -17,75 +17,75 @@ public class JdbcUrlSSRF extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - - String jdbcUrl = request.getParameter("jdbcUrl"); + + String jdbcUrl = request.getParameter("jdbcUrl"); // $ Source Driver driver = new org.postgresql.Driver(); DataSourceBuilder dsBuilder = DataSourceBuilder.create(); - + try { - driver.connect(jdbcUrl, null); // $ SSRF + driver.connect(jdbcUrl, null); // $ Alert - DriverManager.getConnection(jdbcUrl); // $ SSRF - DriverManager.getConnection(jdbcUrl, "user", "password"); // $ SSRF - DriverManager.getConnection(jdbcUrl, null); // $ SSRF + DriverManager.getConnection(jdbcUrl); // $ Alert + DriverManager.getConnection(jdbcUrl, "user", "password"); // $ Alert + DriverManager.getConnection(jdbcUrl, null); // $ Alert - dsBuilder.url(jdbcUrl); // $ SSRF + dsBuilder.url(jdbcUrl); // $ Alert } catch(SQLException e) {} } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - - String jdbcUrl = request.getParameter("jdbcUrl"); + + String jdbcUrl = request.getParameter("jdbcUrl"); // $ Source HikariConfig config = new HikariConfig(); - config.setJdbcUrl(jdbcUrl); // $ SSRF + config.setJdbcUrl(jdbcUrl); // $ Alert config.setUsername("database_username"); config.setPassword("database_password"); HikariDataSource ds = new HikariDataSource(); - ds.setJdbcUrl(jdbcUrl); // $ SSRF + ds.setJdbcUrl(jdbcUrl); // $ Alert Properties props = new Properties(); props.setProperty("driverClassName", "org.postgresql.Driver"); props.setProperty("jdbcUrl", jdbcUrl); - HikariConfig config2 = new HikariConfig(props); // $ SSRF + HikariConfig config2 = new HikariConfig(props); // $ Alert } protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String jdbcUrl = request.getParameter("jdbcUrl"); - + String jdbcUrl = request.getParameter("jdbcUrl"); // $ Source + DriverManagerDataSource dataSource = new DriverManagerDataSource(); - + dataSource.setDriverClassName("org.postgresql.Driver"); - dataSource.setUrl(jdbcUrl); // $ SSRF + dataSource.setUrl(jdbcUrl); // $ Alert - DriverManagerDataSource dataSource2 = new DriverManagerDataSource(jdbcUrl); // $ SSRF + DriverManagerDataSource dataSource2 = new DriverManagerDataSource(jdbcUrl); // $ Alert dataSource2.setDriverClassName("org.postgresql.Driver"); - DriverManagerDataSource dataSource3 = new DriverManagerDataSource(jdbcUrl, "user", "pass"); // $ SSRF + DriverManagerDataSource dataSource3 = new DriverManagerDataSource(jdbcUrl, "user", "pass"); // $ Alert dataSource3.setDriverClassName("org.postgresql.Driver"); - DriverManagerDataSource dataSource4 = new DriverManagerDataSource(jdbcUrl, null); // $ SSRF + DriverManagerDataSource dataSource4 = new DriverManagerDataSource(jdbcUrl, null); // $ Alert dataSource4.setDriverClassName("org.postgresql.Driver"); } protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String jdbcUrl = request.getParameter("jdbcUrl"); + String jdbcUrl = request.getParameter("jdbcUrl"); // $ Source - Jdbi.create(jdbcUrl); // $ SSRF - Jdbi.create(jdbcUrl, null); // $ SSRF - Jdbi.create(jdbcUrl, "user", "pass"); // $ SSRF + Jdbi.create(jdbcUrl); // $ Alert + Jdbi.create(jdbcUrl, null); // $ Alert + Jdbi.create(jdbcUrl, "user", "pass"); // $ Alert - Jdbi.open(jdbcUrl); // $ SSRF - Jdbi.open(jdbcUrl, null); // $ SSRF - Jdbi.open(jdbcUrl, "user", "pass"); // $ SSRF + Jdbi.open(jdbcUrl); // $ Alert + Jdbi.open(jdbcUrl, null); // $ Alert + Jdbi.open(jdbcUrl, "user", "pass"); // $ Alert } - -} \ No newline at end of file + +} diff --git a/java/ql/test/query-tests/security/CWE-918/ReactiveWebClientSSRF.java b/java/ql/test/query-tests/security/CWE-918/ReactiveWebClientSSRF.java index 00d707f71e47..e7e350b054af 100644 --- a/java/ql/test/query-tests/security/CWE-918/ReactiveWebClientSSRF.java +++ b/java/ql/test/query-tests/security/CWE-918/ReactiveWebClientSSRF.java @@ -12,8 +12,8 @@ public class ReactiveWebClientSSRF extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String url = request.getParameter("uri"); - WebClient webClient = WebClient.create(url); // $ SSRF + String url = request.getParameter("uri"); // $ Source + WebClient webClient = WebClient.create(url); // $ Alert Mono result = webClient.get() .uri("/") @@ -29,10 +29,10 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String url = request.getParameter("uri"); + String url = request.getParameter("uri"); // $ Source WebClient webClient = WebClient.builder() .defaultHeader("User-Agent", "Java") - .baseUrl(url) // $ SSRF + .baseUrl(url) // $ Alert .build(); @@ -46,4 +46,4 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) // Ignore } } -} \ No newline at end of file +} diff --git a/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected b/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected index e69de29bb2d1..b08273da0ca9 100644 --- a/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected +++ b/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected @@ -0,0 +1,1825 @@ +#select +| ApacheHttpSSRF.java:30:43:30:45 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:30:43:30:45 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:32:29:32:31 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:32:29:32:31 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:34:26:34:28 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:34:26:34:28 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:35:26:35:28 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:35:26:35:28 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:36:25:36:27 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:36:25:36:27 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:37:28:37:30 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:37:28:37:30 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:38:29:38:31 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:38:29:38:31 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:39:27:39:29 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:39:27:39:29 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:40:27:40:29 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:40:27:40:29 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:42:34:42:82 | new BasicRequestLine(...) | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:42:34:42:82 | new BasicRequestLine(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:43:41:43:54 | toString(...) | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:43:41:43:54 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:44:41:44:54 | toString(...) | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:44:41:44:54 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:46:49:46:97 | new BasicRequestLine(...) | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:46:49:46:97 | new BasicRequestLine(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:47:56:47:69 | toString(...) | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:47:56:47:69 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:48:56:48:69 | toString(...) | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:48:56:48:69 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:50:32:50:34 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:50:32:50:34 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:51:33:51:35 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:51:33:51:35 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:52:32:52:34 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:52:32:52:34 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:53:35:53:37 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:53:35:53:37 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:54:36:54:38 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:54:36:54:38 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:55:33:55:35 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:55:33:55:35 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:56:34:56:36 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:56:34:56:36 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:57:34:57:36 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:57:34:57:36 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRF.java:58:43:58:45 | uri | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:58:43:58:45 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:48:54:48:57 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:48:54:48:57 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:49:54:49:67 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:49:54:49:67 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:50:54:50:56 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:50:54:50:56 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:51:48:51:61 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:51:48:51:61 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:52:48:52:50 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:52:48:52:50 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:54:38:54:41 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:54:38:54:41 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:55:38:55:51 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:55:38:55:51 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:56:38:56:40 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:56:38:56:40 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:58:35:58:38 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:58:35:58:38 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:59:35:59:48 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:59:35:59:48 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:60:35:60:37 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:60:35:60:37 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:62:36:62:39 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:62:36:62:39 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:63:36:63:49 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:63:36:63:49 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:64:36:64:38 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:64:36:64:38 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:66:39:66:42 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:66:39:66:42 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:67:39:67:52 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:67:39:67:52 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:68:39:68:41 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:68:39:68:41 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:70:37:70:40 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:70:37:70:40 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:71:37:71:50 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:71:37:71:50 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:72:37:72:39 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:72:37:72:39 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:74:36:74:39 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:74:36:74:39 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:75:36:75:49 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:75:36:75:49 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:76:36:76:38 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:76:36:76:38 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:78:35:78:38 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:78:35:78:38 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:79:35:79:48 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:79:35:79:48 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:80:35:80:37 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:80:35:80:37 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:82:37:82:40 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:82:37:82:40 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:83:37:83:50 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:83:37:83:50 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:84:37:84:39 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:84:37:84:39 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:87:51:87:54 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:87:51:87:54 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:88:51:88:53 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:88:51:88:53 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:91:51:91:54 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:91:51:91:54 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:92:51:92:53 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:92:51:92:53 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:93:45:93:48 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:93:45:93:48 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:94:45:94:47 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:94:45:94:47 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:96:54:96:57 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:96:54:96:57 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:97:54:97:56 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:97:54:97:56 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:98:48:98:61 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:98:48:98:61 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:99:48:99:50 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:99:48:99:50 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:102:55:102:58 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:102:55:102:58 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:103:55:103:68 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:103:55:103:68 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:104:55:104:57 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:104:55:104:57 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:105:49:105:62 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:105:49:105:62 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:106:49:106:51 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:106:49:106:51 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:108:39:108:42 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:108:39:108:42 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:109:39:109:52 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:109:39:109:52 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:110:39:110:41 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:110:39:110:41 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:112:36:112:39 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:112:36:112:39 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:113:36:113:49 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:113:36:113:49 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:114:36:114:38 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:114:36:114:38 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:116:37:116:40 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:116:37:116:40 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:117:37:117:50 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:117:37:117:50 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:118:37:118:39 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:118:37:118:39 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:120:40:120:43 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:120:40:120:43 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:121:40:121:53 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:121:40:121:53 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:122:40:122:42 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:122:40:122:42 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:124:38:124:41 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:124:38:124:41 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:125:38:125:51 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:125:38:125:51 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:126:38:126:40 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:126:38:126:40 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:128:37:128:40 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:128:37:128:40 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:129:37:129:50 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:129:37:129:50 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:130:37:130:39 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:130:37:130:39 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:132:36:132:39 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:132:36:132:39 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:133:36:133:49 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:133:36:133:49 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:134:36:134:38 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:134:36:134:38 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:136:38:136:41 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:136:38:136:41 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:137:38:137:51 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:137:38:137:51 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:138:38:138:40 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:138:38:138:40 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:141:41:141:54 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:141:41:141:54 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:142:41:142:43 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:142:41:142:43 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:144:38:144:51 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:144:38:144:51 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:145:38:145:40 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:145:38:145:40 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:147:39:147:52 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:147:39:147:52 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:148:39:148:41 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:148:39:148:41 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:150:42:150:55 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:150:42:150:55 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:151:42:151:44 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:151:42:151:44 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:153:40:153:53 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:153:40:153:53 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:154:40:154:42 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:154:40:154:42 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:156:39:156:52 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:156:39:156:52 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:157:39:157:41 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:157:39:157:41 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:159:38:159:51 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:159:38:159:51 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:160:38:160:40 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:160:38:160:40 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:162:52:162:55 | host | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:162:52:162:55 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:164:47:164:60 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:164:47:164:60 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:165:47:165:49 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:165:47:165:49 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:167:40:167:53 | toString(...) | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:167:40:167:53 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:168:40:168:42 | uri | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:168:40:168:42 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:184:56:184:69 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:184:56:184:69 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:185:56:185:58 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:185:56:185:58 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:186:50:186:63 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:186:50:186:63 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:187:50:187:52 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:187:50:187:52 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:189:40:189:53 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:189:40:189:53 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:190:40:190:42 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:190:40:190:42 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:192:37:192:50 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:192:37:192:50 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:193:37:193:39 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:193:37:193:39 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:195:38:195:51 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:195:38:195:51 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:196:38:196:40 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:196:38:196:40 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:198:41:198:54 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:198:41:198:54 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:199:41:199:43 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:199:41:199:43 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:201:39:201:52 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:201:39:201:52 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:202:39:202:41 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:202:39:202:41 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:204:38:204:51 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:204:38:204:51 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:205:38:205:40 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:205:38:205:40 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:207:37:207:50 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:207:37:207:50 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:208:37:208:39 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:208:37:208:39 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:210:39:210:52 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:210:39:210:52 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:211:39:211:41 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:211:39:211:41 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:214:28:214:41 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:214:28:214:41 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:215:28:215:30 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:215:28:215:30 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:217:25:217:38 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:217:25:217:38 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:218:25:218:27 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:218:25:218:27 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:220:26:220:39 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:220:26:220:39 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:221:26:221:28 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:221:26:221:28 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:223:29:223:42 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:223:29:223:42 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:224:29:224:31 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:224:29:224:31 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:226:27:226:40 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:226:27:226:40 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:227:27:227:29 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:227:27:227:29 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:229:26:229:39 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:229:26:229:39 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:230:26:230:28 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:230:26:230:28 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:232:25:232:38 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:232:25:232:38 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:233:25:233:27 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:233:25:233:27 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:235:27:235:40 | toString(...) | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:235:27:235:40 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:236:27:236:29 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:236:27:236:29 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:239:46:239:48 | uri | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:239:46:239:48 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:255:44:255:46 | uri | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:255:44:255:46 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:256:38:256:51 | toString(...) | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:256:38:256:51 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:257:38:257:40 | uri | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:257:38:257:40 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:259:28:259:41 | toString(...) | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:259:28:259:41 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:260:28:260:30 | uri | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:260:28:260:30 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:262:25:262:38 | toString(...) | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:262:25:262:38 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:263:25:263:27 | uri | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:263:25:263:27 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:265:26:265:39 | toString(...) | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:265:26:265:39 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:266:26:266:28 | uri | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:266:26:266:28 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:268:29:268:42 | toString(...) | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:268:29:268:42 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:269:29:269:31 | uri | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:269:29:269:31 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:271:27:271:40 | toString(...) | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:271:27:271:40 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:272:27:272:29 | uri | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:272:27:272:29 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:274:26:274:39 | toString(...) | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:274:26:274:39 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:275:26:275:28 | uri | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:275:26:275:28 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:277:25:277:38 | toString(...) | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:277:25:277:38 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:278:25:278:27 | uri | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:278:25:278:27 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:280:27:280:40 | toString(...) | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:280:27:280:40 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:281:27:281:29 | uri | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:281:27:281:29 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:303:34:303:37 | host | ApacheHttpSSRFVersion5.java:298:31:298:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:303:34:303:37 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:298:31:298:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:304:34:304:37 | host | ApacheHttpSSRFVersion5.java:298:31:298:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:304:34:304:37 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:298:31:298:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:308:60:308:73 | toString(...) | ApacheHttpSSRFVersion5.java:295:30:295:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:308:60:308:73 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:295:30:295:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:309:60:309:62 | uri | ApacheHttpSSRFVersion5.java:295:30:295:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:309:60:309:62 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:295:30:295:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:313:53:313:66 | toString(...) | ApacheHttpSSRFVersion5.java:295:30:295:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:313:53:313:66 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:295:30:295:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:314:53:314:55 | uri | ApacheHttpSSRFVersion5.java:295:30:295:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:314:53:314:55 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:295:30:295:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:333:42:333:55 | toString(...) | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:333:42:333:55 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:334:42:334:44 | uri | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:334:42:334:44 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:336:39:336:52 | toString(...) | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:336:39:336:52 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:337:39:337:41 | uri | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:337:39:337:41 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:339:40:339:53 | toString(...) | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:339:40:339:53 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:340:40:340:42 | uri | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:340:40:340:42 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:342:43:342:56 | toString(...) | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:342:43:342:56 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:343:43:343:45 | uri | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:343:43:343:45 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:345:41:345:54 | toString(...) | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:345:41:345:54 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:346:41:346:43 | uri | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:346:41:346:43 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:348:40:348:53 | toString(...) | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:348:40:348:53 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:349:40:349:42 | uri | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:349:40:349:42 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:351:39:351:52 | toString(...) | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:351:39:351:52 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:352:39:352:41 | uri | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:352:39:352:41 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:354:53:354:56 | host | ApacheHttpSSRFVersion5.java:329:31:329:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:354:53:354:56 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:329:31:329:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:356:48:356:61 | toString(...) | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:356:48:356:61 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:357:48:357:50 | uri | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:357:48:357:50 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:359:41:359:54 | toString(...) | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:359:41:359:54 | toString(...) | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:360:41:360:43 | uri | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:360:41:360:43 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:379:57:379:60 | host | ApacheHttpSSRFVersion5.java:375:31:375:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:379:57:379:60 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:375:31:375:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:380:57:380:59 | uri | ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:380:57:380:59 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:381:51:381:54 | host | ApacheHttpSSRFVersion5.java:375:31:375:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:381:51:381:54 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:375:31:375:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:382:51:382:53 | uri | ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:382:51:382:53 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:385:50:385:53 | host | ApacheHttpSSRFVersion5.java:375:31:375:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:385:50:385:53 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:375:31:375:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:386:50:386:52 | uri | ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:386:50:386:52 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:387:44:387:47 | host | ApacheHttpSSRFVersion5.java:375:31:375:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:387:44:387:47 | host | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:375:31:375:58 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:388:44:388:46 | uri | ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:388:44:388:46 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:390:24:390:26 | uri | ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:390:24:390:26 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) | user-provided value | +| ApacheHttpSSRFVersion5.java:394:24:394:26 | uri | ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:394:24:394:26 | uri | Potential server-side request forgery due to a $@. | ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) | user-provided value | +| JakartaWsSSRF.java:15:23:15:25 | url | JakartaWsSSRF.java:14:22:14:48 | getParameter(...) : String | JakartaWsSSRF.java:15:23:15:25 | url | Potential server-side request forgery due to a $@. | JakartaWsSSRF.java:14:22:14:48 | getParameter(...) | user-provided value | +| JavaNetHttpSSRF.java:30:32:30:35 | url1 | JavaNetHttpSSRF.java:25:27:25:53 | getParameter(...) : String | JavaNetHttpSSRF.java:30:32:30:35 | url1 | Potential server-side request forgery due to a $@. | JavaNetHttpSSRF.java:25:27:25:53 | getParameter(...) | user-provided value | +| JavaNetHttpSSRF.java:33:32:33:35 | url1 | JavaNetHttpSSRF.java:25:27:25:53 | getParameter(...) : String | JavaNetHttpSSRF.java:33:32:33:35 | url1 | Potential server-side request forgery due to a $@. | JavaNetHttpSSRF.java:25:27:25:53 | getParameter(...) | user-provided value | +| JavaNetHttpSSRF.java:34:30:34:33 | url1 | JavaNetHttpSSRF.java:25:27:25:53 | getParameter(...) : String | JavaNetHttpSSRF.java:34:30:34:33 | url1 | Potential server-side request forgery due to a $@. | JavaNetHttpSSRF.java:25:27:25:53 | getParameter(...) | user-provided value | +| JavaNetHttpSSRF.java:38:65:38:68 | uri2 | JavaNetHttpSSRF.java:25:27:25:53 | getParameter(...) : String | JavaNetHttpSSRF.java:38:65:38:68 | uri2 | Potential server-side request forgery due to a $@. | JavaNetHttpSSRF.java:25:27:25:53 | getParameter(...) | user-provided value | +| JavaNetHttpSSRF.java:39:59:39:61 | uri | JavaNetHttpSSRF.java:25:27:25:53 | getParameter(...) : String | JavaNetHttpSSRF.java:39:59:39:61 | uri | Potential server-side request forgery due to a $@. | JavaNetHttpSSRF.java:25:27:25:53 | getParameter(...) | user-provided value | +| JaxWsSSRF.java:15:23:15:25 | url | JaxWsSSRF.java:14:22:14:48 | getParameter(...) : String | JaxWsSSRF.java:15:23:15:25 | url | Potential server-side request forgery due to a $@. | JaxWsSSRF.java:14:22:14:48 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:26:28:26:34 | jdbcUrl | JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) : String | JdbcUrlSSRF.java:26:28:26:34 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:28:41:28:47 | jdbcUrl | JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) : String | JdbcUrlSSRF.java:28:41:28:47 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:29:41:29:47 | jdbcUrl | JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) : String | JdbcUrlSSRF.java:29:41:29:47 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:30:41:30:47 | jdbcUrl | JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) : String | JdbcUrlSSRF.java:30:41:30:47 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:32:27:32:33 | jdbcUrl | JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) : String | JdbcUrlSSRF.java:32:27:32:33 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:43:27:43:33 | jdbcUrl | JdbcUrlSSRF.java:40:26:40:56 | getParameter(...) : String | JdbcUrlSSRF.java:43:27:43:33 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:40:26:40:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:48:23:48:29 | jdbcUrl | JdbcUrlSSRF.java:40:26:40:56 | getParameter(...) : String | JdbcUrlSSRF.java:48:23:48:29 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:40:26:40:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:54:49:54:53 | props | JdbcUrlSSRF.java:40:26:40:56 | getParameter(...) : String | JdbcUrlSSRF.java:54:49:54:53 | props | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:40:26:40:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:65:27:65:33 | jdbcUrl | JdbcUrlSSRF.java:60:26:60:56 | getParameter(...) : String | JdbcUrlSSRF.java:65:27:65:33 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:60:26:60:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:67:75:67:81 | jdbcUrl | JdbcUrlSSRF.java:60:26:60:56 | getParameter(...) : String | JdbcUrlSSRF.java:67:75:67:81 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:60:26:60:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:70:75:70:81 | jdbcUrl | JdbcUrlSSRF.java:60:26:60:56 | getParameter(...) : String | JdbcUrlSSRF.java:70:75:70:81 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:60:26:60:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:73:75:73:81 | jdbcUrl | JdbcUrlSSRF.java:60:26:60:56 | getParameter(...) : String | JdbcUrlSSRF.java:73:75:73:81 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:60:26:60:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:82:21:82:27 | jdbcUrl | JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) : String | JdbcUrlSSRF.java:82:21:82:27 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:83:21:83:27 | jdbcUrl | JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) : String | JdbcUrlSSRF.java:83:21:83:27 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:84:21:84:27 | jdbcUrl | JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) : String | JdbcUrlSSRF.java:84:21:84:27 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:86:19:86:25 | jdbcUrl | JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) : String | JdbcUrlSSRF.java:86:19:86:25 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:87:19:87:25 | jdbcUrl | JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) : String | JdbcUrlSSRF.java:87:19:87:25 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) | user-provided value | +| JdbcUrlSSRF.java:88:19:88:25 | jdbcUrl | JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) : String | JdbcUrlSSRF.java:88:19:88:25 | jdbcUrl | Potential server-side request forgery due to a $@. | JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) | user-provided value | +| ReactiveWebClientSSRF.java:16:52:16:54 | url | ReactiveWebClientSSRF.java:15:26:15:52 | getParameter(...) : String | ReactiveWebClientSSRF.java:16:52:16:54 | url | Potential server-side request forgery due to a $@. | ReactiveWebClientSSRF.java:15:26:15:52 | getParameter(...) | user-provided value | +| ReactiveWebClientSSRF.java:35:30:35:32 | url | ReactiveWebClientSSRF.java:32:26:32:52 | getParameter(...) : String | ReactiveWebClientSSRF.java:35:30:35:32 | url | Potential server-side request forgery due to a $@. | ReactiveWebClientSSRF.java:32:26:32:52 | getParameter(...) | user-provided value | +| SanitizationTests.java:22:52:22:54 | uri | SanitizationTests.java:19:31:19:57 | getParameter(...) : String | SanitizationTests.java:22:52:22:54 | uri | Potential server-side request forgery due to a $@. | SanitizationTests.java:19:31:19:57 | getParameter(...) | user-provided value | +| SanitizationTests.java:23:25:23:25 | r | SanitizationTests.java:19:31:19:57 | getParameter(...) : String | SanitizationTests.java:23:25:23:25 | r | Potential server-side request forgery due to a $@. | SanitizationTests.java:19:31:19:57 | getParameter(...) | user-provided value | +| SanitizationTests.java:76:59:76:77 | new URI(...) | SanitizationTests.java:75:33:75:63 | getParameter(...) : String | SanitizationTests.java:76:59:76:77 | new URI(...) | Potential server-side request forgery due to a $@. | SanitizationTests.java:75:33:75:63 | getParameter(...) | user-provided value | +| SanitizationTests.java:77:25:77:32 | unsafer3 | SanitizationTests.java:75:33:75:63 | getParameter(...) : String | SanitizationTests.java:77:25:77:32 | unsafer3 | Potential server-side request forgery due to a $@. | SanitizationTests.java:75:33:75:63 | getParameter(...) | user-provided value | +| SanitizationTests.java:80:59:80:77 | new URI(...) | SanitizationTests.java:79:49:79:79 | getParameter(...) : String | SanitizationTests.java:80:59:80:77 | new URI(...) | Potential server-side request forgery due to a $@. | SanitizationTests.java:79:49:79:79 | getParameter(...) | user-provided value | +| SanitizationTests.java:81:25:81:32 | unsafer4 | SanitizationTests.java:79:49:79:79 | getParameter(...) : String | SanitizationTests.java:81:25:81:32 | unsafer4 | Potential server-side request forgery due to a $@. | SanitizationTests.java:79:49:79:79 | getParameter(...) | user-provided value | +| SanitizationTests.java:85:59:85:88 | new URI(...) | SanitizationTests.java:84:31:84:61 | getParameter(...) : String | SanitizationTests.java:85:59:85:88 | new URI(...) | Potential server-side request forgery due to a $@. | SanitizationTests.java:84:31:84:61 | getParameter(...) | user-provided value | +| SanitizationTests.java:86:25:86:32 | unsafer5 | SanitizationTests.java:84:31:84:61 | getParameter(...) : String | SanitizationTests.java:86:25:86:32 | unsafer5 | Potential server-side request forgery due to a $@. | SanitizationTests.java:84:31:84:61 | getParameter(...) | user-provided value | +| SanitizationTests.java:90:60:90:89 | new URI(...) | SanitizationTests.java:88:58:88:86 | getParameter(...) : String | SanitizationTests.java:90:60:90:89 | new URI(...) | Potential server-side request forgery due to a $@. | SanitizationTests.java:88:58:88:86 | getParameter(...) | user-provided value | +| SanitizationTests.java:91:25:91:33 | unsafer5a | SanitizationTests.java:88:58:88:86 | getParameter(...) : String | SanitizationTests.java:91:25:91:33 | unsafer5a | Potential server-side request forgery due to a $@. | SanitizationTests.java:88:58:88:86 | getParameter(...) | user-provided value | +| SanitizationTests.java:95:60:95:90 | new URI(...) | SanitizationTests.java:93:60:93:88 | getParameter(...) : String | SanitizationTests.java:95:60:95:90 | new URI(...) | Potential server-side request forgery due to a $@. | SanitizationTests.java:93:60:93:88 | getParameter(...) | user-provided value | +| SanitizationTests.java:96:25:96:33 | unsafer5b | SanitizationTests.java:93:60:93:88 | getParameter(...) : String | SanitizationTests.java:96:25:96:33 | unsafer5b | Potential server-side request forgery due to a $@. | SanitizationTests.java:93:60:93:88 | getParameter(...) | user-provided value | +| SanitizationTests.java:100:60:100:90 | new URI(...) | SanitizationTests.java:98:77:98:105 | getParameter(...) : String | SanitizationTests.java:100:60:100:90 | new URI(...) | Potential server-side request forgery due to a $@. | SanitizationTests.java:98:77:98:105 | getParameter(...) | user-provided value | +| SanitizationTests.java:101:25:101:33 | unsafer5c | SanitizationTests.java:98:77:98:105 | getParameter(...) : String | SanitizationTests.java:101:25:101:33 | unsafer5c | Potential server-side request forgery due to a $@. | SanitizationTests.java:98:77:98:105 | getParameter(...) | user-provided value | +| SanitizationTests.java:104:59:104:77 | new URI(...) | SanitizationTests.java:103:73:103:103 | getParameter(...) : String | SanitizationTests.java:104:59:104:77 | new URI(...) | Potential server-side request forgery due to a $@. | SanitizationTests.java:103:73:103:103 | getParameter(...) | user-provided value | +| SanitizationTests.java:105:25:105:32 | unsafer6 | SanitizationTests.java:103:73:103:103 | getParameter(...) : String | SanitizationTests.java:105:25:105:32 | unsafer6 | Potential server-side request forgery due to a $@. | SanitizationTests.java:103:73:103:103 | getParameter(...) | user-provided value | +| SanitizationTests.java:108:59:108:77 | new URI(...) | SanitizationTests.java:107:56:107:86 | getParameter(...) : String | SanitizationTests.java:108:59:108:77 | new URI(...) | Potential server-side request forgery due to a $@. | SanitizationTests.java:107:56:107:86 | getParameter(...) | user-provided value | +| SanitizationTests.java:109:25:109:32 | unsafer7 | SanitizationTests.java:107:56:107:86 | getParameter(...) : String | SanitizationTests.java:109:25:109:32 | unsafer7 | Potential server-side request forgery due to a $@. | SanitizationTests.java:107:56:107:86 | getParameter(...) | user-provided value | +| SanitizationTests.java:112:59:112:77 | new URI(...) | SanitizationTests.java:111:55:111:85 | getParameter(...) : String | SanitizationTests.java:112:59:112:77 | new URI(...) | Potential server-side request forgery due to a $@. | SanitizationTests.java:111:55:111:85 | getParameter(...) | user-provided value | +| SanitizationTests.java:113:25:113:32 | unsafer8 | SanitizationTests.java:111:55:111:85 | getParameter(...) : String | SanitizationTests.java:113:25:113:32 | unsafer8 | Potential server-side request forgery due to a $@. | SanitizationTests.java:111:55:111:85 | getParameter(...) | user-provided value | +| SanitizationTests.java:116:59:116:77 | new URI(...) | SanitizationTests.java:115:33:115:63 | getParameter(...) : String | SanitizationTests.java:116:59:116:77 | new URI(...) | Potential server-side request forgery due to a $@. | SanitizationTests.java:115:33:115:63 | getParameter(...) | user-provided value | +| SanitizationTests.java:117:25:117:32 | unsafer9 | SanitizationTests.java:115:33:115:63 | getParameter(...) : String | SanitizationTests.java:117:25:117:32 | unsafer9 | Potential server-side request forgery due to a $@. | SanitizationTests.java:115:33:115:63 | getParameter(...) | user-provided value | +| SanitizationTests.java:120:60:120:79 | new URI(...) | SanitizationTests.java:119:94:119:125 | getParameter(...) : String | SanitizationTests.java:120:60:120:79 | new URI(...) | Potential server-side request forgery due to a $@. | SanitizationTests.java:119:94:119:125 | getParameter(...) | user-provided value | +| SanitizationTests.java:121:25:121:33 | unsafer10 | SanitizationTests.java:119:94:119:125 | getParameter(...) : String | SanitizationTests.java:121:25:121:33 | unsafer10 | Potential server-side request forgery due to a $@. | SanitizationTests.java:119:94:119:125 | getParameter(...) | user-provided value | +| SpringSSRF.java:32:39:32:59 | ... + ... | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:32:39:32:59 | ... + ... | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:33:35:33:48 | fooResourceUrl | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:33:35:33:48 | fooResourceUrl | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:34:34:34:47 | fooResourceUrl | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:34:34:34:47 | fooResourceUrl | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:35:39:35:52 | fooResourceUrl | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:35:39:35:52 | fooResourceUrl | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:36:69:36:82 | fooResourceUrl | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:36:69:36:82 | fooResourceUrl | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:37:73:37:86 | fooResourceUrl | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:37:73:37:86 | fooResourceUrl | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:40:69:40:97 | of(...) | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:40:69:40:97 | of(...) | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:42:69:42:119 | of(...) | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:42:69:42:119 | of(...) | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:44:41:44:54 | fooResourceUrl | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:44:41:44:54 | fooResourceUrl | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:45:40:45:62 | new URI(...) | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:45:40:45:62 | new URI(...) | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:46:42:46:55 | fooResourceUrl | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:46:42:46:55 | fooResourceUrl | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:47:40:47:53 | fooResourceUrl | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:47:40:47:53 | fooResourceUrl | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:48:30:48:43 | fooResourceUrl | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:48:30:48:43 | fooResourceUrl | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:49:33:49:46 | fooResourceUrl | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:49:33:49:46 | fooResourceUrl | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:50:41:50:54 | fooResourceUrl | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:50:41:50:54 | fooResourceUrl | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:51:42:51:55 | fooResourceUrl | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:51:42:51:55 | fooResourceUrl | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:56:44:56:46 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:56:44:56:46 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:58:35:58:37 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:58:35:58:37 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:59:35:59:37 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:59:35:59:37 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:60:38:60:40 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:60:38:60:40 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:61:39:61:41 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:61:39:61:41 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:62:37:62:39 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:62:37:62:39 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:63:36:63:38 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:63:36:63:38 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:64:44:64:46 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:64:44:64:46 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:70:49:70:51 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:70:49:70:51 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:71:58:71:60 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:71:58:71:60 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:72:57:72:59 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:72:57:72:59 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:73:66:73:68 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:73:66:73:68 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:74:57:74:59 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:74:57:74:59 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| SpringSSRF.java:75:66:75:68 | uri | SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:75:66:75:68 | uri | Potential server-side request forgery due to a $@. | SpringSSRF.java:28:33:28:60 | getParameter(...) | user-provided value | +| URLClassLoaderSSRF.java:18:64:18:85 | new URL[] | URLClassLoaderSSRF.java:16:26:16:52 | getParameter(...) : String | URLClassLoaderSSRF.java:18:64:18:85 | new URL[] | Potential server-side request forgery due to a $@. | URLClassLoaderSSRF.java:16:26:16:52 | getParameter(...) | user-provided value | +| URLClassLoaderSSRF.java:30:64:30:85 | new URL[] | URLClassLoaderSSRF.java:28:26:28:52 | getParameter(...) : String | URLClassLoaderSSRF.java:30:64:30:85 | new URL[] | Potential server-side request forgery due to a $@. | URLClassLoaderSSRF.java:28:26:28:52 | getParameter(...) | user-provided value | +| URLClassLoaderSSRF.java:44:64:44:85 | new URL[] | URLClassLoaderSSRF.java:40:26:40:52 | getParameter(...) : String | URLClassLoaderSSRF.java:44:64:44:85 | new URL[] | Potential server-side request forgery due to a $@. | URLClassLoaderSSRF.java:40:26:40:52 | getParameter(...) | user-provided value | +| URLClassLoaderSSRF.java:56:72:56:93 | new URL[] | URLClassLoaderSSRF.java:54:26:54:52 | getParameter(...) : String | URLClassLoaderSSRF.java:56:72:56:93 | new URL[] | Potential server-side request forgery due to a $@. | URLClassLoaderSSRF.java:54:26:54:52 | getParameter(...) | user-provided value | +| URLClassLoaderSSRF.java:70:21:70:42 | new URL[] | URLClassLoaderSSRF.java:66:26:66:52 | getParameter(...) : String | URLClassLoaderSSRF.java:70:21:70:42 | new URL[] | Potential server-side request forgery due to a $@. | URLClassLoaderSSRF.java:66:26:66:52 | getParameter(...) | user-provided value | +| URLClassLoaderSSRF.java:89:21:89:42 | new URL[] | URLClassLoaderSSRF.java:83:26:83:52 | getParameter(...) : String | URLClassLoaderSSRF.java:89:21:89:42 | new URL[] | Potential server-side request forgery due to a $@. | URLClassLoaderSSRF.java:83:26:83:52 | getParameter(...) | user-provided value | +| mad/Test.java:31:24:31:47 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:31:24:31:47 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:36:10:36:23 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:36:10:36:23 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:38:28:38:43 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:38:28:38:43 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:40:10:40:23 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:40:10:40:23 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:45:32:45:47 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:45:32:45:47 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:47:32:47:47 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:47:32:47:47 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:49:28:49:43 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:49:28:49:43 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:51:28:51:43 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:51:28:51:43 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:53:28:53:43 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:53:28:53:43 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:55:36:55:51 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:55:36:55:51 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:57:32:57:45 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:57:32:57:45 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:59:38:59:51 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:59:38:59:51 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:61:47:61:60 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:61:47:61:60 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:63:26:63:39 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:63:26:63:39 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:65:38:65:51 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:65:38:65:51 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:67:26:67:39 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:67:26:67:39 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:69:27:69:40 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:69:27:69:40 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:71:47:71:60 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:71:47:71:60 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:74:50:74:65 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:74:50:74:65 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:76:50:76:69 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:76:50:76:69 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:78:43:78:59 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:78:43:78:59 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:80:25:80:41 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:80:25:80:41 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:82:31:82:47 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:82:31:82:47 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:84:31:84:47 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:84:31:84:47 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:86:41:86:57 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:86:41:86:57 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:92:24:92:40 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:92:24:92:40 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:97:29:97:42 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:97:29:97:42 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:102:26:102:39 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:102:26:102:39 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:107:15:107:31 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:107:15:107:31 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +| mad/Test.java:112:15:112:31 | (...)... | mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:112:15:112:31 | (...)... | Potential server-side request forgery due to a $@. | mad/Test.java:26:16:26:41 | getParameter(...) | user-provided value | +edges +| ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | ApacheHttpSSRF.java:28:31:28:34 | sink : String | provenance | Src:MaD:277 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:30:43:30:45 | uri | provenance | Sink:MaD:211 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:32:29:32:31 | uri | provenance | Sink:MaD:217 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:34:26:34:28 | uri | provenance | Sink:MaD:212 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:35:26:35:28 | uri | provenance | Sink:MaD:215 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:36:25:36:27 | uri | provenance | Sink:MaD:216 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:37:28:37:30 | uri | provenance | Sink:MaD:210 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:38:29:38:31 | uri | provenance | Sink:MaD:213 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:39:27:39:29 | uri | provenance | Sink:MaD:218 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:40:27:40:29 | uri | provenance | Sink:MaD:214 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:42:62:42:64 | uri : URI | provenance | | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:43:41:43:43 | uri : URI | provenance | | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:44:41:44:43 | uri : URI | provenance | | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:46:77:46:79 | uri : URI | provenance | | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:47:56:47:58 | uri : URI | provenance | | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:48:56:48:58 | uri : URI | provenance | | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:50:32:50:34 | uri | provenance | Sink:MaD:220 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:51:33:51:35 | uri | provenance | Sink:MaD:224 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:52:32:52:34 | uri | provenance | Sink:MaD:225 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:53:35:53:37 | uri | provenance | Sink:MaD:219 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:54:36:54:38 | uri | provenance | Sink:MaD:222 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:55:33:55:35 | uri | provenance | Sink:MaD:221 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:56:34:56:36 | uri | provenance | Sink:MaD:227 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:57:34:57:36 | uri | provenance | Sink:MaD:223 | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | ApacheHttpSSRF.java:58:43:58:45 | uri | provenance | Sink:MaD:226 | +| ApacheHttpSSRF.java:28:31:28:34 | sink : String | ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | provenance | Config | +| ApacheHttpSSRF.java:28:31:28:34 | sink : String | ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | provenance | MaD:285 | +| ApacheHttpSSRF.java:42:62:42:64 | uri : URI | ApacheHttpSSRF.java:42:62:42:75 | toString(...) : String | provenance | MaD:286 | +| ApacheHttpSSRF.java:42:62:42:75 | toString(...) : String | ApacheHttpSSRF.java:42:34:42:82 | new BasicRequestLine(...) | provenance | MaD:293 Sink:MaD:231 | +| ApacheHttpSSRF.java:43:41:43:43 | uri : URI | ApacheHttpSSRF.java:43:41:43:54 | toString(...) | provenance | MaD:286 Sink:MaD:232 | +| ApacheHttpSSRF.java:44:41:44:43 | uri : URI | ApacheHttpSSRF.java:44:41:44:54 | toString(...) | provenance | MaD:286 Sink:MaD:233 | +| ApacheHttpSSRF.java:46:77:46:79 | uri : URI | ApacheHttpSSRF.java:46:77:46:90 | toString(...) : String | provenance | MaD:286 | +| ApacheHttpSSRF.java:46:77:46:90 | toString(...) : String | ApacheHttpSSRF.java:46:49:46:97 | new BasicRequestLine(...) | provenance | MaD:293 Sink:MaD:228 | +| ApacheHttpSSRF.java:47:56:47:58 | uri : URI | ApacheHttpSSRF.java:47:56:47:69 | toString(...) | provenance | MaD:286 Sink:MaD:229 | +| ApacheHttpSSRF.java:48:56:48:58 | uri : URI | ApacheHttpSSRF.java:48:56:48:69 | toString(...) | provenance | MaD:286 Sink:MaD:230 | +| ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:42:31:42:37 | uriSink : String | provenance | Src:MaD:277 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:49:54:49:56 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:50:54:50:56 | uri | provenance | Sink:MaD:40 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:51:48:51:50 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:52:48:52:50 | uri | provenance | Sink:MaD:42 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:55:38:55:40 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:56:38:56:40 | uri | provenance | Sink:MaD:45 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:59:35:59:37 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:60:35:60:37 | uri | provenance | Sink:MaD:48 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:63:36:63:38 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:64:36:64:38 | uri | provenance | Sink:MaD:51 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:67:39:67:41 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:68:39:68:41 | uri | provenance | Sink:MaD:54 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:71:37:71:39 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:72:37:72:39 | uri | provenance | Sink:MaD:57 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:75:36:75:38 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:76:36:76:38 | uri | provenance | Sink:MaD:60 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:79:35:79:37 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:80:35:80:37 | uri | provenance | Sink:MaD:63 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:83:37:83:39 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:84:37:84:39 | uri | provenance | Sink:MaD:66 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:88:51:88:53 | uri | provenance | Sink:MaD:68 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:92:51:92:53 | uri | provenance | Sink:MaD:70 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:94:45:94:47 | uri | provenance | Sink:MaD:72 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:97:54:97:56 | uri | provenance | Sink:MaD:74 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:98:48:98:50 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:99:48:99:50 | uri | provenance | Sink:MaD:76 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:103:55:103:57 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:104:55:104:57 | uri | provenance | Sink:MaD:79 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:105:49:105:51 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:106:49:106:51 | uri | provenance | Sink:MaD:81 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:109:39:109:41 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:110:39:110:41 | uri | provenance | Sink:MaD:84 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:113:36:113:38 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:114:36:114:38 | uri | provenance | Sink:MaD:87 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:117:37:117:39 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:118:37:118:39 | uri | provenance | Sink:MaD:90 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:121:40:121:42 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:122:40:122:42 | uri | provenance | Sink:MaD:93 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:125:38:125:40 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:126:38:126:40 | uri | provenance | Sink:MaD:96 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:129:37:129:39 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:130:37:130:39 | uri | provenance | Sink:MaD:99 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:133:36:133:38 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:134:36:134:38 | uri | provenance | Sink:MaD:102 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:137:38:137:40 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:138:38:138:40 | uri | provenance | Sink:MaD:105 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:141:41:141:43 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:142:41:142:43 | uri | provenance | Sink:MaD:107 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:144:38:144:40 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:145:38:145:40 | uri | provenance | Sink:MaD:109 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:147:39:147:41 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:148:39:148:41 | uri | provenance | Sink:MaD:111 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:150:42:150:44 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:151:42:151:44 | uri | provenance | Sink:MaD:113 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:153:40:153:42 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:154:40:154:42 | uri | provenance | Sink:MaD:115 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:156:39:156:41 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:157:39:157:41 | uri | provenance | Sink:MaD:117 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:159:38:159:40 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:160:38:160:40 | uri | provenance | Sink:MaD:119 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:164:47:164:49 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:165:47:165:49 | uri | provenance | Sink:MaD:206 | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:167:40:167:42 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:168:40:168:42 | uri | provenance | Sink:MaD:121 | +| ApacheHttpSSRFVersion5.java:42:31:42:37 | uriSink : String | ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | provenance | Config | +| ApacheHttpSSRFVersion5.java:42:31:42:37 | uriSink : String | ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | provenance | MaD:285 | +| ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:45:42:45:49 | hostSink : String | provenance | Src:MaD:277 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:48:54:48:57 | host | provenance | Sink:MaD:38 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:54:38:54:41 | host | provenance | Sink:MaD:43 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:58:35:58:38 | host | provenance | Sink:MaD:46 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:62:36:62:39 | host | provenance | Sink:MaD:49 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:66:39:66:42 | host | provenance | Sink:MaD:52 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:70:37:70:40 | host | provenance | Sink:MaD:55 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:74:36:74:39 | host | provenance | Sink:MaD:58 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:78:35:78:38 | host | provenance | Sink:MaD:61 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:82:37:82:40 | host | provenance | Sink:MaD:64 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:87:51:87:54 | host | provenance | Sink:MaD:67 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:91:51:91:54 | host | provenance | Sink:MaD:69 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:93:45:93:48 | host | provenance | Sink:MaD:71 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:96:54:96:57 | host | provenance | Sink:MaD:73 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:102:55:102:58 | host | provenance | Sink:MaD:77 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:108:39:108:42 | host | provenance | Sink:MaD:82 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:112:36:112:39 | host | provenance | Sink:MaD:85 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:116:37:116:40 | host | provenance | Sink:MaD:88 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:120:40:120:43 | host | provenance | Sink:MaD:91 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:124:38:124:41 | host | provenance | Sink:MaD:94 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:128:37:128:40 | host | provenance | Sink:MaD:97 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:132:36:132:39 | host | provenance | Sink:MaD:100 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:136:38:136:41 | host | provenance | Sink:MaD:103 | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:162:52:162:55 | host | provenance | Sink:MaD:204 | +| ApacheHttpSSRFVersion5.java:45:42:45:49 | hostSink : String | ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | provenance | MaD:292 | +| ApacheHttpSSRFVersion5.java:49:54:49:56 | uri : URI | ApacheHttpSSRFVersion5.java:49:54:49:67 | toString(...) | provenance | MaD:286 Sink:MaD:39 | +| ApacheHttpSSRFVersion5.java:51:48:51:50 | uri : URI | ApacheHttpSSRFVersion5.java:51:48:51:61 | toString(...) | provenance | MaD:286 Sink:MaD:41 | +| ApacheHttpSSRFVersion5.java:55:38:55:40 | uri : URI | ApacheHttpSSRFVersion5.java:55:38:55:51 | toString(...) | provenance | MaD:286 Sink:MaD:44 | +| ApacheHttpSSRFVersion5.java:59:35:59:37 | uri : URI | ApacheHttpSSRFVersion5.java:59:35:59:48 | toString(...) | provenance | MaD:286 Sink:MaD:47 | +| ApacheHttpSSRFVersion5.java:63:36:63:38 | uri : URI | ApacheHttpSSRFVersion5.java:63:36:63:49 | toString(...) | provenance | MaD:286 Sink:MaD:50 | +| ApacheHttpSSRFVersion5.java:67:39:67:41 | uri : URI | ApacheHttpSSRFVersion5.java:67:39:67:52 | toString(...) | provenance | MaD:286 Sink:MaD:53 | +| ApacheHttpSSRFVersion5.java:71:37:71:39 | uri : URI | ApacheHttpSSRFVersion5.java:71:37:71:50 | toString(...) | provenance | MaD:286 Sink:MaD:56 | +| ApacheHttpSSRFVersion5.java:75:36:75:38 | uri : URI | ApacheHttpSSRFVersion5.java:75:36:75:49 | toString(...) | provenance | MaD:286 Sink:MaD:59 | +| ApacheHttpSSRFVersion5.java:79:35:79:37 | uri : URI | ApacheHttpSSRFVersion5.java:79:35:79:48 | toString(...) | provenance | MaD:286 Sink:MaD:62 | +| ApacheHttpSSRFVersion5.java:83:37:83:39 | uri : URI | ApacheHttpSSRFVersion5.java:83:37:83:50 | toString(...) | provenance | MaD:286 Sink:MaD:65 | +| ApacheHttpSSRFVersion5.java:98:48:98:50 | uri : URI | ApacheHttpSSRFVersion5.java:98:48:98:61 | toString(...) | provenance | MaD:286 Sink:MaD:75 | +| ApacheHttpSSRFVersion5.java:103:55:103:57 | uri : URI | ApacheHttpSSRFVersion5.java:103:55:103:68 | toString(...) | provenance | MaD:286 Sink:MaD:78 | +| ApacheHttpSSRFVersion5.java:105:49:105:51 | uri : URI | ApacheHttpSSRFVersion5.java:105:49:105:62 | toString(...) | provenance | MaD:286 Sink:MaD:80 | +| ApacheHttpSSRFVersion5.java:109:39:109:41 | uri : URI | ApacheHttpSSRFVersion5.java:109:39:109:52 | toString(...) | provenance | MaD:286 Sink:MaD:83 | +| ApacheHttpSSRFVersion5.java:113:36:113:38 | uri : URI | ApacheHttpSSRFVersion5.java:113:36:113:49 | toString(...) | provenance | MaD:286 Sink:MaD:86 | +| ApacheHttpSSRFVersion5.java:117:37:117:39 | uri : URI | ApacheHttpSSRFVersion5.java:117:37:117:50 | toString(...) | provenance | MaD:286 Sink:MaD:89 | +| ApacheHttpSSRFVersion5.java:121:40:121:42 | uri : URI | ApacheHttpSSRFVersion5.java:121:40:121:53 | toString(...) | provenance | MaD:286 Sink:MaD:92 | +| ApacheHttpSSRFVersion5.java:125:38:125:40 | uri : URI | ApacheHttpSSRFVersion5.java:125:38:125:51 | toString(...) | provenance | MaD:286 Sink:MaD:95 | +| ApacheHttpSSRFVersion5.java:129:37:129:39 | uri : URI | ApacheHttpSSRFVersion5.java:129:37:129:50 | toString(...) | provenance | MaD:286 Sink:MaD:98 | +| ApacheHttpSSRFVersion5.java:133:36:133:38 | uri : URI | ApacheHttpSSRFVersion5.java:133:36:133:49 | toString(...) | provenance | MaD:286 Sink:MaD:101 | +| ApacheHttpSSRFVersion5.java:137:38:137:40 | uri : URI | ApacheHttpSSRFVersion5.java:137:38:137:51 | toString(...) | provenance | MaD:286 Sink:MaD:104 | +| ApacheHttpSSRFVersion5.java:141:41:141:43 | uri : URI | ApacheHttpSSRFVersion5.java:141:41:141:54 | toString(...) | provenance | MaD:286 Sink:MaD:106 | +| ApacheHttpSSRFVersion5.java:144:38:144:40 | uri : URI | ApacheHttpSSRFVersion5.java:144:38:144:51 | toString(...) | provenance | MaD:286 Sink:MaD:108 | +| ApacheHttpSSRFVersion5.java:147:39:147:41 | uri : URI | ApacheHttpSSRFVersion5.java:147:39:147:52 | toString(...) | provenance | MaD:286 Sink:MaD:110 | +| ApacheHttpSSRFVersion5.java:150:42:150:44 | uri : URI | ApacheHttpSSRFVersion5.java:150:42:150:55 | toString(...) | provenance | MaD:286 Sink:MaD:112 | +| ApacheHttpSSRFVersion5.java:153:40:153:42 | uri : URI | ApacheHttpSSRFVersion5.java:153:40:153:53 | toString(...) | provenance | MaD:286 Sink:MaD:114 | +| ApacheHttpSSRFVersion5.java:156:39:156:41 | uri : URI | ApacheHttpSSRFVersion5.java:156:39:156:52 | toString(...) | provenance | MaD:286 Sink:MaD:116 | +| ApacheHttpSSRFVersion5.java:159:38:159:40 | uri : URI | ApacheHttpSSRFVersion5.java:159:38:159:51 | toString(...) | provenance | MaD:286 Sink:MaD:118 | +| ApacheHttpSSRFVersion5.java:164:47:164:49 | uri : URI | ApacheHttpSSRFVersion5.java:164:47:164:60 | toString(...) | provenance | MaD:286 Sink:MaD:205 | +| ApacheHttpSSRFVersion5.java:167:40:167:42 | uri : URI | ApacheHttpSSRFVersion5.java:167:40:167:53 | toString(...) | provenance | MaD:286 Sink:MaD:120 | +| ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:181:31:181:37 | uriSink : String | provenance | Src:MaD:277 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:184:56:184:58 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:185:56:185:58 | uri | provenance | Sink:MaD:123 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:186:50:186:52 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:187:50:187:52 | uri | provenance | Sink:MaD:125 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:189:40:189:42 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:190:40:190:42 | uri | provenance | Sink:MaD:127 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:192:37:192:39 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:193:37:193:39 | uri | provenance | Sink:MaD:129 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:195:38:195:40 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:196:38:196:40 | uri | provenance | Sink:MaD:131 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:198:41:198:43 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:199:41:199:43 | uri | provenance | Sink:MaD:133 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:201:39:201:41 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:202:39:202:41 | uri | provenance | Sink:MaD:135 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:204:38:204:40 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:205:38:205:40 | uri | provenance | Sink:MaD:137 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:207:37:207:39 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:208:37:208:39 | uri | provenance | Sink:MaD:139 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:210:39:210:41 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:211:39:211:41 | uri | provenance | Sink:MaD:141 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:214:28:214:30 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:215:28:215:30 | uri | provenance | Sink:MaD:143 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:217:25:217:27 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:218:25:218:27 | uri | provenance | Sink:MaD:145 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:220:26:220:28 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:221:26:221:28 | uri | provenance | Sink:MaD:147 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:223:29:223:31 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:224:29:224:31 | uri | provenance | Sink:MaD:149 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:226:27:226:29 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:227:27:227:29 | uri | provenance | Sink:MaD:151 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:229:26:229:28 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:230:26:230:28 | uri | provenance | Sink:MaD:153 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:232:25:232:27 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:233:25:233:27 | uri | provenance | Sink:MaD:155 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:235:27:235:29 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:236:27:236:29 | uri | provenance | Sink:MaD:157 | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:239:46:239:48 | uri | provenance | Sink:MaD:158 | +| ApacheHttpSSRFVersion5.java:181:31:181:37 | uriSink : String | ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | provenance | Config | +| ApacheHttpSSRFVersion5.java:181:31:181:37 | uriSink : String | ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | provenance | MaD:285 | +| ApacheHttpSSRFVersion5.java:184:56:184:58 | uri : URI | ApacheHttpSSRFVersion5.java:184:56:184:69 | toString(...) | provenance | MaD:286 Sink:MaD:122 | +| ApacheHttpSSRFVersion5.java:186:50:186:52 | uri : URI | ApacheHttpSSRFVersion5.java:186:50:186:63 | toString(...) | provenance | MaD:286 Sink:MaD:124 | +| ApacheHttpSSRFVersion5.java:189:40:189:42 | uri : URI | ApacheHttpSSRFVersion5.java:189:40:189:53 | toString(...) | provenance | MaD:286 Sink:MaD:126 | +| ApacheHttpSSRFVersion5.java:192:37:192:39 | uri : URI | ApacheHttpSSRFVersion5.java:192:37:192:50 | toString(...) | provenance | MaD:286 Sink:MaD:128 | +| ApacheHttpSSRFVersion5.java:195:38:195:40 | uri : URI | ApacheHttpSSRFVersion5.java:195:38:195:51 | toString(...) | provenance | MaD:286 Sink:MaD:130 | +| ApacheHttpSSRFVersion5.java:198:41:198:43 | uri : URI | ApacheHttpSSRFVersion5.java:198:41:198:54 | toString(...) | provenance | MaD:286 Sink:MaD:132 | +| ApacheHttpSSRFVersion5.java:201:39:201:41 | uri : URI | ApacheHttpSSRFVersion5.java:201:39:201:52 | toString(...) | provenance | MaD:286 Sink:MaD:134 | +| ApacheHttpSSRFVersion5.java:204:38:204:40 | uri : URI | ApacheHttpSSRFVersion5.java:204:38:204:51 | toString(...) | provenance | MaD:286 Sink:MaD:136 | +| ApacheHttpSSRFVersion5.java:207:37:207:39 | uri : URI | ApacheHttpSSRFVersion5.java:207:37:207:50 | toString(...) | provenance | MaD:286 Sink:MaD:138 | +| ApacheHttpSSRFVersion5.java:210:39:210:41 | uri : URI | ApacheHttpSSRFVersion5.java:210:39:210:52 | toString(...) | provenance | MaD:286 Sink:MaD:140 | +| ApacheHttpSSRFVersion5.java:214:28:214:30 | uri : URI | ApacheHttpSSRFVersion5.java:214:28:214:41 | toString(...) | provenance | MaD:286 Sink:MaD:142 | +| ApacheHttpSSRFVersion5.java:217:25:217:27 | uri : URI | ApacheHttpSSRFVersion5.java:217:25:217:38 | toString(...) | provenance | MaD:286 Sink:MaD:144 | +| ApacheHttpSSRFVersion5.java:220:26:220:28 | uri : URI | ApacheHttpSSRFVersion5.java:220:26:220:39 | toString(...) | provenance | MaD:286 Sink:MaD:146 | +| ApacheHttpSSRFVersion5.java:223:29:223:31 | uri : URI | ApacheHttpSSRFVersion5.java:223:29:223:42 | toString(...) | provenance | MaD:286 Sink:MaD:148 | +| ApacheHttpSSRFVersion5.java:226:27:226:29 | uri : URI | ApacheHttpSSRFVersion5.java:226:27:226:40 | toString(...) | provenance | MaD:286 Sink:MaD:150 | +| ApacheHttpSSRFVersion5.java:229:26:229:28 | uri : URI | ApacheHttpSSRFVersion5.java:229:26:229:39 | toString(...) | provenance | MaD:286 Sink:MaD:152 | +| ApacheHttpSSRFVersion5.java:232:25:232:27 | uri : URI | ApacheHttpSSRFVersion5.java:232:25:232:38 | toString(...) | provenance | MaD:286 Sink:MaD:154 | +| ApacheHttpSSRFVersion5.java:235:27:235:29 | uri : URI | ApacheHttpSSRFVersion5.java:235:27:235:40 | toString(...) | provenance | MaD:286 Sink:MaD:156 | +| ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:252:31:252:37 | uriSink : String | provenance | Src:MaD:277 | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:255:44:255:46 | uri | provenance | Sink:MaD:159 | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:256:38:256:40 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:257:38:257:40 | uri | provenance | Sink:MaD:161 | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:259:28:259:30 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:260:28:260:30 | uri | provenance | Sink:MaD:163 | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:262:25:262:27 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:263:25:263:27 | uri | provenance | Sink:MaD:165 | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:265:26:265:28 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:266:26:266:28 | uri | provenance | Sink:MaD:167 | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:268:29:268:31 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:269:29:269:31 | uri | provenance | Sink:MaD:169 | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:271:27:271:29 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:272:27:272:29 | uri | provenance | Sink:MaD:171 | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:274:26:274:28 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:275:26:275:28 | uri | provenance | Sink:MaD:173 | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:277:25:277:27 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:278:25:278:27 | uri | provenance | Sink:MaD:175 | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:280:27:280:29 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:281:27:281:29 | uri | provenance | Sink:MaD:177 | +| ApacheHttpSSRFVersion5.java:252:31:252:37 | uriSink : String | ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | provenance | Config | +| ApacheHttpSSRFVersion5.java:252:31:252:37 | uriSink : String | ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | provenance | MaD:285 | +| ApacheHttpSSRFVersion5.java:256:38:256:40 | uri : URI | ApacheHttpSSRFVersion5.java:256:38:256:51 | toString(...) | provenance | MaD:286 Sink:MaD:160 | +| ApacheHttpSSRFVersion5.java:259:28:259:30 | uri : URI | ApacheHttpSSRFVersion5.java:259:28:259:41 | toString(...) | provenance | MaD:286 Sink:MaD:162 | +| ApacheHttpSSRFVersion5.java:262:25:262:27 | uri : URI | ApacheHttpSSRFVersion5.java:262:25:262:38 | toString(...) | provenance | MaD:286 Sink:MaD:164 | +| ApacheHttpSSRFVersion5.java:265:26:265:28 | uri : URI | ApacheHttpSSRFVersion5.java:265:26:265:39 | toString(...) | provenance | MaD:286 Sink:MaD:166 | +| ApacheHttpSSRFVersion5.java:268:29:268:31 | uri : URI | ApacheHttpSSRFVersion5.java:268:29:268:42 | toString(...) | provenance | MaD:286 Sink:MaD:168 | +| ApacheHttpSSRFVersion5.java:271:27:271:29 | uri : URI | ApacheHttpSSRFVersion5.java:271:27:271:40 | toString(...) | provenance | MaD:286 Sink:MaD:170 | +| ApacheHttpSSRFVersion5.java:274:26:274:28 | uri : URI | ApacheHttpSSRFVersion5.java:274:26:274:39 | toString(...) | provenance | MaD:286 Sink:MaD:172 | +| ApacheHttpSSRFVersion5.java:277:25:277:27 | uri : URI | ApacheHttpSSRFVersion5.java:277:25:277:38 | toString(...) | provenance | MaD:286 Sink:MaD:174 | +| ApacheHttpSSRFVersion5.java:280:27:280:29 | uri : URI | ApacheHttpSSRFVersion5.java:280:27:280:40 | toString(...) | provenance | MaD:286 Sink:MaD:176 | +| ApacheHttpSSRFVersion5.java:295:30:295:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:296:31:296:37 | uriSink : String | provenance | Src:MaD:277 | +| ApacheHttpSSRFVersion5.java:296:23:296:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:308:60:308:62 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:296:23:296:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:309:60:309:62 | uri | provenance | Sink:MaD:209 | +| ApacheHttpSSRFVersion5.java:296:23:296:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:313:53:313:55 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:296:23:296:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:314:53:314:55 | uri | provenance | Sink:MaD:209 | +| ApacheHttpSSRFVersion5.java:296:31:296:37 | uriSink : String | ApacheHttpSSRFVersion5.java:296:23:296:38 | new URI(...) : URI | provenance | Config | +| ApacheHttpSSRFVersion5.java:296:31:296:37 | uriSink : String | ApacheHttpSSRFVersion5.java:296:23:296:38 | new URI(...) : URI | provenance | MaD:285 | +| ApacheHttpSSRFVersion5.java:298:31:298:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:299:42:299:49 | hostSink : String | provenance | Src:MaD:277 | +| ApacheHttpSSRFVersion5.java:299:29:299:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:303:34:303:37 | host | provenance | Sink:MaD:178 | +| ApacheHttpSSRFVersion5.java:299:29:299:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:304:34:304:37 | host | provenance | Sink:MaD:179 | +| ApacheHttpSSRFVersion5.java:299:42:299:49 | hostSink : String | ApacheHttpSSRFVersion5.java:299:29:299:50 | new HttpHost(...) : HttpHost | provenance | MaD:292 | +| ApacheHttpSSRFVersion5.java:308:60:308:62 | uri : URI | ApacheHttpSSRFVersion5.java:308:60:308:73 | toString(...) | provenance | MaD:286 Sink:MaD:208 | +| ApacheHttpSSRFVersion5.java:313:53:313:55 | uri : URI | ApacheHttpSSRFVersion5.java:313:53:313:66 | toString(...) | provenance | MaD:286 Sink:MaD:208 | +| ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:327:31:327:37 | uriSink : String | provenance | Src:MaD:277 | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:333:42:333:44 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:334:42:334:44 | uri | provenance | Sink:MaD:181 | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:336:39:336:41 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:337:39:337:41 | uri | provenance | Sink:MaD:183 | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:339:40:339:42 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:340:40:340:42 | uri | provenance | Sink:MaD:185 | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:342:43:342:45 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:343:43:343:45 | uri | provenance | Sink:MaD:187 | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:345:41:345:43 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:346:41:346:43 | uri | provenance | Sink:MaD:189 | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:348:40:348:42 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:349:40:349:42 | uri | provenance | Sink:MaD:191 | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:351:39:351:41 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:352:39:352:41 | uri | provenance | Sink:MaD:193 | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:356:48:356:50 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:357:48:357:50 | uri | provenance | Sink:MaD:206 | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:359:41:359:43 | uri : URI | provenance | | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:360:41:360:43 | uri | provenance | Sink:MaD:195 | +| ApacheHttpSSRFVersion5.java:327:31:327:37 | uriSink : String | ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | provenance | Config | +| ApacheHttpSSRFVersion5.java:327:31:327:37 | uriSink : String | ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | provenance | MaD:285 | +| ApacheHttpSSRFVersion5.java:329:31:329:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:330:42:330:49 | hostSink : String | provenance | Src:MaD:277 | +| ApacheHttpSSRFVersion5.java:330:29:330:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:354:53:354:56 | host | provenance | Sink:MaD:204 | +| ApacheHttpSSRFVersion5.java:330:42:330:49 | hostSink : String | ApacheHttpSSRFVersion5.java:330:29:330:50 | new HttpHost(...) : HttpHost | provenance | MaD:292 | +| ApacheHttpSSRFVersion5.java:333:42:333:44 | uri : URI | ApacheHttpSSRFVersion5.java:333:42:333:55 | toString(...) | provenance | MaD:286 Sink:MaD:180 | +| ApacheHttpSSRFVersion5.java:336:39:336:41 | uri : URI | ApacheHttpSSRFVersion5.java:336:39:336:52 | toString(...) | provenance | MaD:286 Sink:MaD:182 | +| ApacheHttpSSRFVersion5.java:339:40:339:42 | uri : URI | ApacheHttpSSRFVersion5.java:339:40:339:53 | toString(...) | provenance | MaD:286 Sink:MaD:184 | +| ApacheHttpSSRFVersion5.java:342:43:342:45 | uri : URI | ApacheHttpSSRFVersion5.java:342:43:342:56 | toString(...) | provenance | MaD:286 Sink:MaD:186 | +| ApacheHttpSSRFVersion5.java:345:41:345:43 | uri : URI | ApacheHttpSSRFVersion5.java:345:41:345:54 | toString(...) | provenance | MaD:286 Sink:MaD:188 | +| ApacheHttpSSRFVersion5.java:348:40:348:42 | uri : URI | ApacheHttpSSRFVersion5.java:348:40:348:53 | toString(...) | provenance | MaD:286 Sink:MaD:190 | +| ApacheHttpSSRFVersion5.java:351:39:351:41 | uri : URI | ApacheHttpSSRFVersion5.java:351:39:351:52 | toString(...) | provenance | MaD:286 Sink:MaD:192 | +| ApacheHttpSSRFVersion5.java:356:48:356:50 | uri : URI | ApacheHttpSSRFVersion5.java:356:48:356:61 | toString(...) | provenance | MaD:286 Sink:MaD:205 | +| ApacheHttpSSRFVersion5.java:359:41:359:43 | uri : URI | ApacheHttpSSRFVersion5.java:359:41:359:54 | toString(...) | provenance | MaD:286 Sink:MaD:194 | +| ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:373:31:373:37 | uriSink : String | provenance | Src:MaD:277 | +| ApacheHttpSSRFVersion5.java:373:23:373:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:380:57:380:59 | uri | provenance | Sink:MaD:197 | +| ApacheHttpSSRFVersion5.java:373:23:373:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:382:51:382:53 | uri | provenance | Sink:MaD:199 | +| ApacheHttpSSRFVersion5.java:373:23:373:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:386:50:386:52 | uri | provenance | Sink:MaD:201 | +| ApacheHttpSSRFVersion5.java:373:23:373:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:388:44:388:46 | uri | provenance | Sink:MaD:203 | +| ApacheHttpSSRFVersion5.java:373:23:373:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:390:24:390:26 | uri | provenance | Sink:MaD:207 | +| ApacheHttpSSRFVersion5.java:373:23:373:38 | new URI(...) : URI | ApacheHttpSSRFVersion5.java:394:24:394:26 | uri | provenance | Sink:MaD:207 | +| ApacheHttpSSRFVersion5.java:373:31:373:37 | uriSink : String | ApacheHttpSSRFVersion5.java:373:23:373:38 | new URI(...) : URI | provenance | Config | +| ApacheHttpSSRFVersion5.java:373:31:373:37 | uriSink : String | ApacheHttpSSRFVersion5.java:373:23:373:38 | new URI(...) : URI | provenance | MaD:285 | +| ApacheHttpSSRFVersion5.java:375:31:375:58 | getParameter(...) : String | ApacheHttpSSRFVersion5.java:376:42:376:49 | hostSink : String | provenance | Src:MaD:277 | +| ApacheHttpSSRFVersion5.java:376:29:376:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:379:57:379:60 | host | provenance | Sink:MaD:196 | +| ApacheHttpSSRFVersion5.java:376:29:376:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:381:51:381:54 | host | provenance | Sink:MaD:198 | +| ApacheHttpSSRFVersion5.java:376:29:376:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:385:50:385:53 | host | provenance | Sink:MaD:200 | +| ApacheHttpSSRFVersion5.java:376:29:376:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:387:44:387:47 | host | provenance | Sink:MaD:202 | +| ApacheHttpSSRFVersion5.java:376:42:376:49 | hostSink : String | ApacheHttpSSRFVersion5.java:376:29:376:50 | new HttpHost(...) : HttpHost | provenance | MaD:292 | +| JakartaWsSSRF.java:14:22:14:48 | getParameter(...) : String | JakartaWsSSRF.java:15:23:15:25 | url | provenance | Src:MaD:277 Sink:MaD:3 | +| JavaNetHttpSSRF.java:25:27:25:53 | getParameter(...) : String | JavaNetHttpSSRF.java:26:31:26:34 | sink : String | provenance | Src:MaD:277 | +| JavaNetHttpSSRF.java:26:23:26:35 | new URI(...) : URI | JavaNetHttpSSRF.java:39:59:39:61 | uri | provenance | Sink:MaD:6 | +| JavaNetHttpSSRF.java:26:31:26:34 | sink : String | JavaNetHttpSSRF.java:26:23:26:35 | new URI(...) : URI | provenance | Config | +| JavaNetHttpSSRF.java:26:31:26:34 | sink : String | JavaNetHttpSSRF.java:26:23:26:35 | new URI(...) : URI | provenance | MaD:285 | +| JavaNetHttpSSRF.java:26:31:26:34 | sink : String | JavaNetHttpSSRF.java:27:40:27:43 | sink : String | provenance | | +| JavaNetHttpSSRF.java:27:24:27:57 | new URI(...) : URI | JavaNetHttpSSRF.java:38:65:38:68 | uri2 | provenance | Sink:MaD:5 | +| JavaNetHttpSSRF.java:27:40:27:43 | sink : String | JavaNetHttpSSRF.java:27:24:27:57 | new URI(...) : URI | provenance | Config | +| JavaNetHttpSSRF.java:27:40:27:43 | sink : String | JavaNetHttpSSRF.java:28:32:28:35 | sink : String | provenance | | +| JavaNetHttpSSRF.java:28:24:28:36 | new URL(...) : URL | JavaNetHttpSSRF.java:30:32:30:35 | url1 | provenance | Sink:MaD:9 | +| JavaNetHttpSSRF.java:28:24:28:36 | new URL(...) : URL | JavaNetHttpSSRF.java:33:32:33:35 | url1 | provenance | Sink:MaD:9 | +| JavaNetHttpSSRF.java:28:24:28:36 | new URL(...) : URL | JavaNetHttpSSRF.java:34:30:34:33 | url1 | provenance | Sink:MaD:10 | +| JavaNetHttpSSRF.java:28:32:28:35 | sink : String | JavaNetHttpSSRF.java:28:24:28:36 | new URL(...) : URL | provenance | Config | +| JavaNetHttpSSRF.java:28:32:28:35 | sink : String | JavaNetHttpSSRF.java:28:24:28:36 | new URL(...) : URL | provenance | MaD:288 | +| JaxWsSSRF.java:14:22:14:48 | getParameter(...) : String | JaxWsSSRF.java:15:23:15:25 | url | provenance | Src:MaD:277 Sink:MaD:23 | +| JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) : String | JdbcUrlSSRF.java:26:28:26:34 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:17 | +| JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) : String | JdbcUrlSSRF.java:28:41:28:47 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:18 | +| JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) : String | JdbcUrlSSRF.java:29:41:29:47 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:20 | +| JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) : String | JdbcUrlSSRF.java:30:41:30:47 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:19 | +| JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) : String | JdbcUrlSSRF.java:32:27:32:33 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:242 | +| JdbcUrlSSRF.java:40:26:40:56 | getParameter(...) : String | JdbcUrlSSRF.java:43:27:43:33 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:2 | +| JdbcUrlSSRF.java:40:26:40:56 | getParameter(...) : String | JdbcUrlSSRF.java:48:23:48:29 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:2 | +| JdbcUrlSSRF.java:40:26:40:56 | getParameter(...) : String | JdbcUrlSSRF.java:52:38:52:44 | jdbcUrl : String | provenance | Src:MaD:277 | +| JdbcUrlSSRF.java:52:9:52:13 | props : Properties | JdbcUrlSSRF.java:54:49:54:53 | props | provenance | Sink:MaD:1 | +| JdbcUrlSSRF.java:52:9:52:13 | props [post update] : Properties [] : String | JdbcUrlSSRF.java:54:49:54:53 | props | provenance | Sink:MaD:1 | +| JdbcUrlSSRF.java:52:38:52:44 | jdbcUrl : String | JdbcUrlSSRF.java:52:9:52:13 | props : Properties | provenance | Config | +| JdbcUrlSSRF.java:52:38:52:44 | jdbcUrl : String | JdbcUrlSSRF.java:52:9:52:13 | props [post update] : Properties [] : String | provenance | MaD:291 | +| JdbcUrlSSRF.java:60:26:60:56 | getParameter(...) : String | JdbcUrlSSRF.java:65:27:65:33 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:257 | +| JdbcUrlSSRF.java:60:26:60:56 | getParameter(...) : String | JdbcUrlSSRF.java:67:75:67:81 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:258 | +| JdbcUrlSSRF.java:60:26:60:56 | getParameter(...) : String | JdbcUrlSSRF.java:70:75:70:81 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:260 | +| JdbcUrlSSRF.java:60:26:60:56 | getParameter(...) : String | JdbcUrlSSRF.java:73:75:73:81 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:259 | +| JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) : String | JdbcUrlSSRF.java:82:21:82:27 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:235 | +| JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) : String | JdbcUrlSSRF.java:83:21:83:27 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:236 | +| JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) : String | JdbcUrlSSRF.java:84:21:84:27 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:237 | +| JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) : String | JdbcUrlSSRF.java:86:19:86:25 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:238 | +| JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) : String | JdbcUrlSSRF.java:87:19:87:25 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:239 | +| JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) : String | JdbcUrlSSRF.java:88:19:88:25 | jdbcUrl | provenance | Src:MaD:277 Sink:MaD:240 | +| ReactiveWebClientSSRF.java:15:26:15:52 | getParameter(...) : String | ReactiveWebClientSSRF.java:16:52:16:54 | url | provenance | Src:MaD:277 Sink:MaD:274 | +| ReactiveWebClientSSRF.java:32:26:32:52 | getParameter(...) : String | ReactiveWebClientSSRF.java:35:30:35:32 | url | provenance | Src:MaD:277 Sink:MaD:273 | +| SanitizationTests.java:19:23:19:58 | new URI(...) : URI | SanitizationTests.java:22:52:22:54 | uri | provenance | Sink:MaD:6 | +| SanitizationTests.java:19:23:19:58 | new URI(...) : URI | SanitizationTests.java:22:52:22:54 | uri : URI | provenance | | +| SanitizationTests.java:19:31:19:57 | getParameter(...) : String | SanitizationTests.java:19:23:19:58 | new URI(...) : URI | provenance | Src:MaD:277 Config | +| SanitizationTests.java:19:31:19:57 | getParameter(...) : String | SanitizationTests.java:19:23:19:58 | new URI(...) : URI | provenance | Src:MaD:277 MaD:285 | +| SanitizationTests.java:22:29:22:55 | newBuilder(...) : Builder | SanitizationTests.java:22:29:22:63 | build(...) : HttpRequest | provenance | MaD:283 | +| SanitizationTests.java:22:29:22:63 | build(...) : HttpRequest | SanitizationTests.java:23:25:23:25 | r | provenance | Sink:MaD:4 | +| SanitizationTests.java:22:52:22:54 | uri : URI | SanitizationTests.java:22:29:22:55 | newBuilder(...) : Builder | provenance | MaD:284 | +| SanitizationTests.java:75:33:75:63 | getParameter(...) : String | SanitizationTests.java:76:67:76:76 | unsafeUri3 : String | provenance | Src:MaD:277 | +| SanitizationTests.java:76:36:76:78 | newBuilder(...) : Builder | SanitizationTests.java:76:36:76:86 | build(...) : HttpRequest | provenance | MaD:283 | +| SanitizationTests.java:76:36:76:86 | build(...) : HttpRequest | SanitizationTests.java:77:25:77:32 | unsafer3 | provenance | Sink:MaD:4 | +| SanitizationTests.java:76:59:76:77 | new URI(...) : URI | SanitizationTests.java:76:36:76:78 | newBuilder(...) : Builder | provenance | MaD:284 | +| SanitizationTests.java:76:67:76:76 | unsafeUri3 : String | SanitizationTests.java:76:59:76:77 | new URI(...) | provenance | Config Sink:MaD:6 | +| SanitizationTests.java:76:67:76:76 | unsafeUri3 : String | SanitizationTests.java:76:59:76:77 | new URI(...) | provenance | MaD:285 Sink:MaD:6 | +| SanitizationTests.java:76:67:76:76 | unsafeUri3 : String | SanitizationTests.java:76:59:76:77 | new URI(...) : URI | provenance | Config | +| SanitizationTests.java:76:67:76:76 | unsafeUri3 : String | SanitizationTests.java:76:59:76:77 | new URI(...) : URI | provenance | MaD:285 | +| SanitizationTests.java:79:49:79:79 | getParameter(...) : String | SanitizationTests.java:80:67:80:76 | unsafeUri4 : String | provenance | Src:MaD:277 | +| SanitizationTests.java:80:36:80:78 | newBuilder(...) : Builder | SanitizationTests.java:80:36:80:86 | build(...) : HttpRequest | provenance | MaD:283 | +| SanitizationTests.java:80:36:80:86 | build(...) : HttpRequest | SanitizationTests.java:81:25:81:32 | unsafer4 | provenance | Sink:MaD:4 | +| SanitizationTests.java:80:59:80:77 | new URI(...) : URI | SanitizationTests.java:80:36:80:78 | newBuilder(...) : Builder | provenance | MaD:284 | +| SanitizationTests.java:80:67:80:76 | unsafeUri4 : String | SanitizationTests.java:80:59:80:77 | new URI(...) | provenance | Config Sink:MaD:6 | +| SanitizationTests.java:80:67:80:76 | unsafeUri4 : String | SanitizationTests.java:80:59:80:77 | new URI(...) | provenance | MaD:285 Sink:MaD:6 | +| SanitizationTests.java:80:67:80:76 | unsafeUri4 : String | SanitizationTests.java:80:59:80:77 | new URI(...) : URI | provenance | Config | +| SanitizationTests.java:80:67:80:76 | unsafeUri4 : String | SanitizationTests.java:80:59:80:77 | new URI(...) : URI | provenance | MaD:285 | +| SanitizationTests.java:84:13:84:22 | unsafeUri5 [post update] : StringBuilder | SanitizationTests.java:85:67:85:76 | unsafeUri5 : StringBuilder | provenance | | +| SanitizationTests.java:84:31:84:61 | getParameter(...) : String | SanitizationTests.java:84:13:84:22 | unsafeUri5 [post update] : StringBuilder | provenance | Src:MaD:277 MaD:278 | +| SanitizationTests.java:85:36:85:89 | newBuilder(...) : Builder | SanitizationTests.java:85:36:85:97 | build(...) : HttpRequest | provenance | MaD:283 | +| SanitizationTests.java:85:36:85:97 | build(...) : HttpRequest | SanitizationTests.java:86:25:86:32 | unsafer5 | provenance | Sink:MaD:4 | +| SanitizationTests.java:85:59:85:88 | new URI(...) : URI | SanitizationTests.java:85:36:85:89 | newBuilder(...) : Builder | provenance | MaD:284 | +| SanitizationTests.java:85:67:85:76 | unsafeUri5 : StringBuilder | SanitizationTests.java:85:67:85:87 | toString(...) : String | provenance | MaD:280 | +| SanitizationTests.java:85:67:85:87 | toString(...) : String | SanitizationTests.java:85:59:85:88 | new URI(...) | provenance | Config Sink:MaD:6 | +| SanitizationTests.java:85:67:85:87 | toString(...) : String | SanitizationTests.java:85:59:85:88 | new URI(...) | provenance | MaD:285 Sink:MaD:6 | +| SanitizationTests.java:85:67:85:87 | toString(...) : String | SanitizationTests.java:85:59:85:88 | new URI(...) : URI | provenance | Config | +| SanitizationTests.java:85:67:85:87 | toString(...) : String | SanitizationTests.java:85:59:85:88 | new URI(...) : URI | provenance | MaD:285 | +| SanitizationTests.java:88:40:88:87 | new StringBuilder(...) : StringBuilder | SanitizationTests.java:90:68:90:77 | unafeUri5a : StringBuilder | provenance | | +| SanitizationTests.java:88:58:88:86 | getParameter(...) : String | SanitizationTests.java:88:40:88:87 | new StringBuilder(...) : StringBuilder | provenance | Src:MaD:277 MaD:282 | +| SanitizationTests.java:90:37:90:90 | newBuilder(...) : Builder | SanitizationTests.java:90:37:90:98 | build(...) : HttpRequest | provenance | MaD:283 | +| SanitizationTests.java:90:37:90:98 | build(...) : HttpRequest | SanitizationTests.java:91:25:91:33 | unsafer5a | provenance | Sink:MaD:4 | +| SanitizationTests.java:90:60:90:89 | new URI(...) : URI | SanitizationTests.java:90:37:90:90 | newBuilder(...) : Builder | provenance | MaD:284 | +| SanitizationTests.java:90:68:90:77 | unafeUri5a : StringBuilder | SanitizationTests.java:90:68:90:88 | toString(...) : String | provenance | MaD:280 | +| SanitizationTests.java:90:68:90:88 | toString(...) : String | SanitizationTests.java:90:60:90:89 | new URI(...) | provenance | Config Sink:MaD:6 | +| SanitizationTests.java:90:68:90:88 | toString(...) : String | SanitizationTests.java:90:60:90:89 | new URI(...) | provenance | MaD:285 Sink:MaD:6 | +| SanitizationTests.java:90:68:90:88 | toString(...) : String | SanitizationTests.java:90:60:90:89 | new URI(...) : URI | provenance | Config | +| SanitizationTests.java:90:68:90:88 | toString(...) : String | SanitizationTests.java:90:60:90:89 | new URI(...) : URI | provenance | MaD:285 | +| SanitizationTests.java:93:41:93:105 | append(...) : StringBuilder | SanitizationTests.java:95:68:95:78 | unsafeUri5b : StringBuilder | provenance | | +| SanitizationTests.java:93:42:93:89 | new StringBuilder(...) : StringBuilder | SanitizationTests.java:93:41:93:105 | append(...) : StringBuilder | provenance | MaD:279 | +| SanitizationTests.java:93:60:93:88 | getParameter(...) : String | SanitizationTests.java:93:42:93:89 | new StringBuilder(...) : StringBuilder | provenance | Src:MaD:277 MaD:282 | +| SanitizationTests.java:95:37:95:91 | newBuilder(...) : Builder | SanitizationTests.java:95:37:95:99 | build(...) : HttpRequest | provenance | MaD:283 | +| SanitizationTests.java:95:37:95:99 | build(...) : HttpRequest | SanitizationTests.java:96:25:96:33 | unsafer5b | provenance | Sink:MaD:4 | +| SanitizationTests.java:95:60:95:90 | new URI(...) : URI | SanitizationTests.java:95:37:95:91 | newBuilder(...) : Builder | provenance | MaD:284 | +| SanitizationTests.java:95:68:95:78 | unsafeUri5b : StringBuilder | SanitizationTests.java:95:68:95:89 | toString(...) : String | provenance | MaD:280 | +| SanitizationTests.java:95:68:95:89 | toString(...) : String | SanitizationTests.java:95:60:95:90 | new URI(...) | provenance | Config Sink:MaD:6 | +| SanitizationTests.java:95:68:95:89 | toString(...) : String | SanitizationTests.java:95:60:95:90 | new URI(...) | provenance | MaD:285 Sink:MaD:6 | +| SanitizationTests.java:95:68:95:89 | toString(...) : String | SanitizationTests.java:95:60:95:90 | new URI(...) : URI | provenance | Config | +| SanitizationTests.java:95:68:95:89 | toString(...) : String | SanitizationTests.java:95:60:95:90 | new URI(...) : URI | provenance | MaD:285 | +| SanitizationTests.java:98:41:98:106 | append(...) : StringBuilder | SanitizationTests.java:100:68:100:78 | unsafeUri5c : StringBuilder | provenance | | +| SanitizationTests.java:98:77:98:105 | getParameter(...) : String | SanitizationTests.java:98:41:98:106 | append(...) : StringBuilder | provenance | Src:MaD:277 MaD:278+MaD:279 | +| SanitizationTests.java:100:37:100:91 | newBuilder(...) : Builder | SanitizationTests.java:100:37:100:99 | build(...) : HttpRequest | provenance | MaD:283 | +| SanitizationTests.java:100:37:100:99 | build(...) : HttpRequest | SanitizationTests.java:101:25:101:33 | unsafer5c | provenance | Sink:MaD:4 | +| SanitizationTests.java:100:60:100:90 | new URI(...) : URI | SanitizationTests.java:100:37:100:91 | newBuilder(...) : Builder | provenance | MaD:284 | +| SanitizationTests.java:100:68:100:78 | unsafeUri5c : StringBuilder | SanitizationTests.java:100:68:100:89 | toString(...) : String | provenance | MaD:280 | +| SanitizationTests.java:100:68:100:89 | toString(...) : String | SanitizationTests.java:100:60:100:90 | new URI(...) | provenance | Config Sink:MaD:6 | +| SanitizationTests.java:100:68:100:89 | toString(...) : String | SanitizationTests.java:100:60:100:90 | new URI(...) | provenance | MaD:285 Sink:MaD:6 | +| SanitizationTests.java:100:68:100:89 | toString(...) : String | SanitizationTests.java:100:60:100:90 | new URI(...) : URI | provenance | Config | +| SanitizationTests.java:100:68:100:89 | toString(...) : String | SanitizationTests.java:100:60:100:90 | new URI(...) : URI | provenance | MaD:285 | +| SanitizationTests.java:103:33:103:104 | format(...) : String | SanitizationTests.java:104:67:104:76 | unsafeUri6 : String | provenance | | +| SanitizationTests.java:103:33:103:104 | new ..[] { .. } : Object[] [[]] : String | SanitizationTests.java:103:33:103:104 | format(...) : String | provenance | MaD:281 | +| SanitizationTests.java:103:73:103:103 | getParameter(...) : String | SanitizationTests.java:103:33:103:104 | new ..[] { .. } : Object[] [[]] : String | provenance | Src:MaD:277 | +| SanitizationTests.java:104:36:104:78 | newBuilder(...) : Builder | SanitizationTests.java:104:36:104:86 | build(...) : HttpRequest | provenance | MaD:283 | +| SanitizationTests.java:104:36:104:86 | build(...) : HttpRequest | SanitizationTests.java:105:25:105:32 | unsafer6 | provenance | Sink:MaD:4 | +| SanitizationTests.java:104:59:104:77 | new URI(...) : URI | SanitizationTests.java:104:36:104:78 | newBuilder(...) : Builder | provenance | MaD:284 | +| SanitizationTests.java:104:67:104:76 | unsafeUri6 : String | SanitizationTests.java:104:59:104:77 | new URI(...) | provenance | Config Sink:MaD:6 | +| SanitizationTests.java:104:67:104:76 | unsafeUri6 : String | SanitizationTests.java:104:59:104:77 | new URI(...) | provenance | MaD:285 Sink:MaD:6 | +| SanitizationTests.java:104:67:104:76 | unsafeUri6 : String | SanitizationTests.java:104:59:104:77 | new URI(...) : URI | provenance | Config | +| SanitizationTests.java:104:67:104:76 | unsafeUri6 : String | SanitizationTests.java:104:59:104:77 | new URI(...) : URI | provenance | MaD:285 | +| SanitizationTests.java:107:33:107:110 | format(...) : String | SanitizationTests.java:108:67:108:76 | unsafeUri7 : String | provenance | | +| SanitizationTests.java:107:33:107:110 | new ..[] { .. } : Object[] [[]] : String | SanitizationTests.java:107:33:107:110 | format(...) : String | provenance | MaD:281 | +| SanitizationTests.java:107:56:107:86 | getParameter(...) : String | SanitizationTests.java:107:33:107:110 | new ..[] { .. } : Object[] [[]] : String | provenance | Src:MaD:277 | +| SanitizationTests.java:108:36:108:78 | newBuilder(...) : Builder | SanitizationTests.java:108:36:108:86 | build(...) : HttpRequest | provenance | MaD:283 | +| SanitizationTests.java:108:36:108:86 | build(...) : HttpRequest | SanitizationTests.java:109:25:109:32 | unsafer7 | provenance | Sink:MaD:4 | +| SanitizationTests.java:108:59:108:77 | new URI(...) : URI | SanitizationTests.java:108:36:108:78 | newBuilder(...) : Builder | provenance | MaD:284 | +| SanitizationTests.java:108:67:108:76 | unsafeUri7 : String | SanitizationTests.java:108:59:108:77 | new URI(...) | provenance | Config Sink:MaD:6 | +| SanitizationTests.java:108:67:108:76 | unsafeUri7 : String | SanitizationTests.java:108:59:108:77 | new URI(...) | provenance | MaD:285 Sink:MaD:6 | +| SanitizationTests.java:108:67:108:76 | unsafeUri7 : String | SanitizationTests.java:108:59:108:77 | new URI(...) : URI | provenance | Config | +| SanitizationTests.java:108:67:108:76 | unsafeUri7 : String | SanitizationTests.java:108:59:108:77 | new URI(...) : URI | provenance | MaD:285 | +| SanitizationTests.java:111:33:111:110 | format(...) : String | SanitizationTests.java:112:67:112:76 | unsafeUri8 : String | provenance | | +| SanitizationTests.java:111:33:111:110 | new ..[] { .. } : Object[] [[]] : String | SanitizationTests.java:111:33:111:110 | format(...) : String | provenance | MaD:281 | +| SanitizationTests.java:111:55:111:85 | getParameter(...) : String | SanitizationTests.java:111:33:111:110 | new ..[] { .. } : Object[] [[]] : String | provenance | Src:MaD:277 | +| SanitizationTests.java:112:36:112:78 | newBuilder(...) : Builder | SanitizationTests.java:112:36:112:86 | build(...) : HttpRequest | provenance | MaD:283 | +| SanitizationTests.java:112:36:112:86 | build(...) : HttpRequest | SanitizationTests.java:113:25:113:32 | unsafer8 | provenance | Sink:MaD:4 | +| SanitizationTests.java:112:59:112:77 | new URI(...) : URI | SanitizationTests.java:112:36:112:78 | newBuilder(...) : Builder | provenance | MaD:284 | +| SanitizationTests.java:112:67:112:76 | unsafeUri8 : String | SanitizationTests.java:112:59:112:77 | new URI(...) | provenance | Config Sink:MaD:6 | +| SanitizationTests.java:112:67:112:76 | unsafeUri8 : String | SanitizationTests.java:112:59:112:77 | new URI(...) | provenance | MaD:285 Sink:MaD:6 | +| SanitizationTests.java:112:67:112:76 | unsafeUri8 : String | SanitizationTests.java:112:59:112:77 | new URI(...) : URI | provenance | Config | +| SanitizationTests.java:112:67:112:76 | unsafeUri8 : String | SanitizationTests.java:112:59:112:77 | new URI(...) : URI | provenance | MaD:285 | +| SanitizationTests.java:115:33:115:63 | getParameter(...) : String | SanitizationTests.java:116:67:116:76 | unsafeUri9 : String | provenance | Src:MaD:277 | +| SanitizationTests.java:116:36:116:78 | newBuilder(...) : Builder | SanitizationTests.java:116:36:116:86 | build(...) : HttpRequest | provenance | MaD:283 | +| SanitizationTests.java:116:36:116:86 | build(...) : HttpRequest | SanitizationTests.java:117:25:117:32 | unsafer9 | provenance | Sink:MaD:4 | +| SanitizationTests.java:116:59:116:77 | new URI(...) : URI | SanitizationTests.java:116:36:116:78 | newBuilder(...) : Builder | provenance | MaD:284 | +| SanitizationTests.java:116:67:116:76 | unsafeUri9 : String | SanitizationTests.java:116:59:116:77 | new URI(...) | provenance | Config Sink:MaD:6 | +| SanitizationTests.java:116:67:116:76 | unsafeUri9 : String | SanitizationTests.java:116:59:116:77 | new URI(...) | provenance | MaD:285 Sink:MaD:6 | +| SanitizationTests.java:116:67:116:76 | unsafeUri9 : String | SanitizationTests.java:116:59:116:77 | new URI(...) : URI | provenance | Config | +| SanitizationTests.java:116:67:116:76 | unsafeUri9 : String | SanitizationTests.java:116:59:116:77 | new URI(...) : URI | provenance | MaD:285 | +| SanitizationTests.java:119:34:119:126 | format(...) : String | SanitizationTests.java:120:68:120:78 | unsafeUri10 : String | provenance | | +| SanitizationTests.java:119:34:119:126 | new ..[] { .. } : Object[] [[]] : String | SanitizationTests.java:119:34:119:126 | format(...) : String | provenance | MaD:281 | +| SanitizationTests.java:119:94:119:125 | getParameter(...) : String | SanitizationTests.java:119:34:119:126 | new ..[] { .. } : Object[] [[]] : String | provenance | Src:MaD:277 | +| SanitizationTests.java:120:37:120:80 | newBuilder(...) : Builder | SanitizationTests.java:120:37:120:88 | build(...) : HttpRequest | provenance | MaD:283 | +| SanitizationTests.java:120:37:120:88 | build(...) : HttpRequest | SanitizationTests.java:121:25:121:33 | unsafer10 | provenance | Sink:MaD:4 | +| SanitizationTests.java:120:60:120:79 | new URI(...) : URI | SanitizationTests.java:120:37:120:80 | newBuilder(...) : Builder | provenance | MaD:284 | +| SanitizationTests.java:120:68:120:78 | unsafeUri10 : String | SanitizationTests.java:120:60:120:79 | new URI(...) | provenance | Config Sink:MaD:6 | +| SanitizationTests.java:120:68:120:78 | unsafeUri10 : String | SanitizationTests.java:120:60:120:79 | new URI(...) | provenance | MaD:285 Sink:MaD:6 | +| SanitizationTests.java:120:68:120:78 | unsafeUri10 : String | SanitizationTests.java:120:60:120:79 | new URI(...) : URI | provenance | Config | +| SanitizationTests.java:120:68:120:78 | unsafeUri10 : String | SanitizationTests.java:120:60:120:79 | new URI(...) : URI | provenance | MaD:285 | +| SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:32:39:32:59 | ... + ... | provenance | Src:MaD:277 Sink:MaD:264 | +| SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:33:35:33:48 | fooResourceUrl | provenance | Src:MaD:277 Sink:MaD:262 | +| SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:34:34:34:47 | fooResourceUrl | provenance | Src:MaD:277 Sink:MaD:263 | +| SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:35:39:35:52 | fooResourceUrl | provenance | Src:MaD:277 Sink:MaD:265 | +| SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:36:69:36:82 | fooResourceUrl | provenance | Src:MaD:277 | +| SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:37:73:37:86 | fooResourceUrl | provenance | Src:MaD:277 | +| SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:40:83:40:96 | fooResourceUrl : String | provenance | Src:MaD:277 | +| SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:42:105:42:118 | fooResourceUrl : String | provenance | Src:MaD:277 | +| SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:44:41:44:54 | fooResourceUrl | provenance | Src:MaD:277 Sink:MaD:268 | +| SpringSSRF.java:28:33:28:60 | getParameter(...) : String | SpringSSRF.java:45:48:45:61 | fooResourceUrl : String | provenance | Src:MaD:277 | +| SpringSSRF.java:40:83:40:96 | fooResourceUrl : String | SpringSSRF.java:40:69:40:97 | of(...) | provenance | MaD:289 | +| SpringSSRF.java:42:105:42:118 | fooResourceUrl : String | SpringSSRF.java:42:69:42:119 | of(...) | provenance | MaD:290 | +| SpringSSRF.java:45:48:45:61 | fooResourceUrl : String | SpringSSRF.java:45:40:45:62 | new URI(...) | provenance | Config Sink:MaD:269 | +| SpringSSRF.java:45:48:45:61 | fooResourceUrl : String | SpringSSRF.java:45:40:45:62 | new URI(...) | provenance | MaD:285 Sink:MaD:269 | +| SpringSSRF.java:45:48:45:61 | fooResourceUrl : String | SpringSSRF.java:46:42:46:55 | fooResourceUrl | provenance | Sink:MaD:270 | +| SpringSSRF.java:45:48:45:61 | fooResourceUrl : String | SpringSSRF.java:47:40:47:53 | fooResourceUrl | provenance | Sink:MaD:271 | +| SpringSSRF.java:45:48:45:61 | fooResourceUrl : String | SpringSSRF.java:48:30:48:43 | fooResourceUrl | provenance | Sink:MaD:272 | +| SpringSSRF.java:45:48:45:61 | fooResourceUrl : String | SpringSSRF.java:49:33:49:46 | fooResourceUrl | provenance | Sink:MaD:261 | +| SpringSSRF.java:45:48:45:61 | fooResourceUrl : String | SpringSSRF.java:50:41:50:54 | fooResourceUrl | provenance | Sink:MaD:266 | +| SpringSSRF.java:45:48:45:61 | fooResourceUrl : String | SpringSSRF.java:51:42:51:55 | fooResourceUrl | provenance | Sink:MaD:267 | +| SpringSSRF.java:45:48:45:61 | fooResourceUrl : String | SpringSSRF.java:54:35:54:48 | fooResourceUrl : String | provenance | | +| SpringSSRF.java:54:27:54:49 | new URI(...) : URI | SpringSSRF.java:56:44:56:46 | uri | provenance | Sink:MaD:255 | +| SpringSSRF.java:54:27:54:49 | new URI(...) : URI | SpringSSRF.java:58:35:58:37 | uri | provenance | Sink:MaD:250 | +| SpringSSRF.java:54:27:54:49 | new URI(...) : URI | SpringSSRF.java:59:35:59:37 | uri | provenance | Sink:MaD:256 | +| SpringSSRF.java:54:27:54:49 | new URI(...) : URI | SpringSSRF.java:60:38:60:40 | uri | provenance | Sink:MaD:249 | +| SpringSSRF.java:54:27:54:49 | new URI(...) : URI | SpringSSRF.java:61:39:61:41 | uri | provenance | Sink:MaD:253 | +| SpringSSRF.java:54:27:54:49 | new URI(...) : URI | SpringSSRF.java:62:37:62:39 | uri | provenance | Sink:MaD:254 | +| SpringSSRF.java:54:27:54:49 | new URI(...) : URI | SpringSSRF.java:63:36:63:38 | uri | provenance | Sink:MaD:251 | +| SpringSSRF.java:54:27:54:49 | new URI(...) : URI | SpringSSRF.java:64:44:64:46 | uri | provenance | Sink:MaD:252 | +| SpringSSRF.java:54:35:54:48 | fooResourceUrl : String | SpringSSRF.java:54:27:54:49 | new URI(...) : URI | provenance | Config | +| SpringSSRF.java:54:35:54:48 | fooResourceUrl : String | SpringSSRF.java:54:27:54:49 | new URI(...) : URI | provenance | MaD:285 | +| SpringSSRF.java:54:35:54:48 | fooResourceUrl : String | SpringSSRF.java:67:35:67:48 | fooResourceUrl : String | provenance | | +| SpringSSRF.java:67:27:67:49 | new URI(...) : URI | SpringSSRF.java:70:49:70:51 | uri | provenance | Sink:MaD:243 | +| SpringSSRF.java:67:27:67:49 | new URI(...) : URI | SpringSSRF.java:71:58:71:60 | uri | provenance | Sink:MaD:244 | +| SpringSSRF.java:67:27:67:49 | new URI(...) : URI | SpringSSRF.java:72:57:72:59 | uri | provenance | Sink:MaD:245 | +| SpringSSRF.java:67:27:67:49 | new URI(...) : URI | SpringSSRF.java:73:66:73:68 | uri | provenance | Sink:MaD:247 | +| SpringSSRF.java:67:27:67:49 | new URI(...) : URI | SpringSSRF.java:74:57:74:59 | uri | provenance | Sink:MaD:246 | +| SpringSSRF.java:67:27:67:49 | new URI(...) : URI | SpringSSRF.java:75:66:75:68 | uri | provenance | Sink:MaD:248 | +| SpringSSRF.java:67:35:67:48 | fooResourceUrl : String | SpringSSRF.java:67:27:67:49 | new URI(...) : URI | provenance | Config | +| SpringSSRF.java:67:35:67:48 | fooResourceUrl : String | SpringSSRF.java:67:27:67:49 | new URI(...) : URI | provenance | MaD:285 | +| URLClassLoaderSSRF.java:16:26:16:52 | getParameter(...) : String | URLClassLoaderSSRF.java:17:31:17:33 | url : String | provenance | Src:MaD:277 | +| URLClassLoaderSSRF.java:17:23:17:34 | new URI(...) : URI | URLClassLoaderSSRF.java:18:74:18:76 | uri : URI | provenance | | +| URLClassLoaderSSRF.java:17:31:17:33 | url : String | URLClassLoaderSSRF.java:17:23:17:34 | new URI(...) : URI | provenance | Config | +| URLClassLoaderSSRF.java:17:31:17:33 | url : String | URLClassLoaderSSRF.java:17:23:17:34 | new URI(...) : URI | provenance | MaD:285 | +| URLClassLoaderSSRF.java:18:64:18:85 | {...} : URL[] [[]] : URL | URLClassLoaderSSRF.java:18:64:18:85 | new URL[] | provenance | Sink:MaD:13 | +| URLClassLoaderSSRF.java:18:64:18:85 | {...} : URL[] [[]] : URL | URLClassLoaderSSRF.java:18:64:18:85 | new URL[] | provenance | Sink:MaD:13 | +| URLClassLoaderSSRF.java:18:74:18:76 | uri : URI | URLClassLoaderSSRF.java:18:74:18:84 | toURL(...) : URL | provenance | MaD:287 | +| URLClassLoaderSSRF.java:18:74:18:84 | toURL(...) : URL | URLClassLoaderSSRF.java:18:64:18:85 | {...} : URL[] [[]] : URL | provenance | | +| URLClassLoaderSSRF.java:28:26:28:52 | getParameter(...) : String | URLClassLoaderSSRF.java:29:31:29:33 | url : String | provenance | Src:MaD:277 | +| URLClassLoaderSSRF.java:29:23:29:34 | new URI(...) : URI | URLClassLoaderSSRF.java:30:74:30:76 | uri : URI | provenance | | +| URLClassLoaderSSRF.java:29:31:29:33 | url : String | URLClassLoaderSSRF.java:29:23:29:34 | new URI(...) : URI | provenance | Config | +| URLClassLoaderSSRF.java:29:31:29:33 | url : String | URLClassLoaderSSRF.java:29:23:29:34 | new URI(...) : URI | provenance | MaD:285 | +| URLClassLoaderSSRF.java:30:64:30:85 | {...} : URL[] [[]] : URL | URLClassLoaderSSRF.java:30:64:30:85 | new URL[] | provenance | Sink:MaD:14 | +| URLClassLoaderSSRF.java:30:64:30:85 | {...} : URL[] [[]] : URL | URLClassLoaderSSRF.java:30:64:30:85 | new URL[] | provenance | Sink:MaD:14 | +| URLClassLoaderSSRF.java:30:74:30:76 | uri : URI | URLClassLoaderSSRF.java:30:74:30:84 | toURL(...) : URL | provenance | MaD:287 | +| URLClassLoaderSSRF.java:30:74:30:84 | toURL(...) : URL | URLClassLoaderSSRF.java:30:64:30:85 | {...} : URL[] [[]] : URL | provenance | | +| URLClassLoaderSSRF.java:40:26:40:52 | getParameter(...) : String | URLClassLoaderSSRF.java:41:31:41:33 | url : String | provenance | Src:MaD:277 | +| URLClassLoaderSSRF.java:41:23:41:34 | new URI(...) : URI | URLClassLoaderSSRF.java:44:74:44:76 | uri : URI | provenance | | +| URLClassLoaderSSRF.java:41:31:41:33 | url : String | URLClassLoaderSSRF.java:41:23:41:34 | new URI(...) : URI | provenance | Config | +| URLClassLoaderSSRF.java:41:31:41:33 | url : String | URLClassLoaderSSRF.java:41:23:41:34 | new URI(...) : URI | provenance | MaD:285 | +| URLClassLoaderSSRF.java:44:64:44:85 | {...} : URL[] [[]] : URL | URLClassLoaderSSRF.java:44:64:44:85 | new URL[] | provenance | Sink:MaD:15 | +| URLClassLoaderSSRF.java:44:64:44:85 | {...} : URL[] [[]] : URL | URLClassLoaderSSRF.java:44:64:44:85 | new URL[] | provenance | Sink:MaD:15 | +| URLClassLoaderSSRF.java:44:74:44:76 | uri : URI | URLClassLoaderSSRF.java:44:74:44:84 | toURL(...) : URL | provenance | MaD:287 | +| URLClassLoaderSSRF.java:44:74:44:84 | toURL(...) : URL | URLClassLoaderSSRF.java:44:64:44:85 | {...} : URL[] [[]] : URL | provenance | | +| URLClassLoaderSSRF.java:54:26:54:52 | getParameter(...) : String | URLClassLoaderSSRF.java:55:31:55:33 | url : String | provenance | Src:MaD:277 | +| URLClassLoaderSSRF.java:55:23:55:34 | new URI(...) : URI | URLClassLoaderSSRF.java:56:82:56:84 | uri : URI | provenance | | +| URLClassLoaderSSRF.java:55:31:55:33 | url : String | URLClassLoaderSSRF.java:55:23:55:34 | new URI(...) : URI | provenance | Config | +| URLClassLoaderSSRF.java:55:31:55:33 | url : String | URLClassLoaderSSRF.java:55:23:55:34 | new URI(...) : URI | provenance | MaD:285 | +| URLClassLoaderSSRF.java:56:72:56:93 | {...} : URL[] [[]] : URL | URLClassLoaderSSRF.java:56:72:56:93 | new URL[] | provenance | Sink:MaD:16 | +| URLClassLoaderSSRF.java:56:82:56:84 | uri : URI | URLClassLoaderSSRF.java:56:82:56:92 | toURL(...) : URL | provenance | MaD:287 | +| URLClassLoaderSSRF.java:56:82:56:92 | toURL(...) : URL | URLClassLoaderSSRF.java:56:72:56:93 | {...} : URL[] [[]] : URL | provenance | | +| URLClassLoaderSSRF.java:66:26:66:52 | getParameter(...) : String | URLClassLoaderSSRF.java:67:31:67:33 | url : String | provenance | Src:MaD:277 | +| URLClassLoaderSSRF.java:67:23:67:34 | new URI(...) : URI | URLClassLoaderSSRF.java:70:31:70:33 | uri : URI | provenance | | +| URLClassLoaderSSRF.java:67:31:67:33 | url : String | URLClassLoaderSSRF.java:67:23:67:34 | new URI(...) : URI | provenance | Config | +| URLClassLoaderSSRF.java:67:31:67:33 | url : String | URLClassLoaderSSRF.java:67:23:67:34 | new URI(...) : URI | provenance | MaD:285 | +| URLClassLoaderSSRF.java:70:21:70:42 | {...} : URL[] [[]] : URL | URLClassLoaderSSRF.java:70:21:70:42 | new URL[] | provenance | Sink:MaD:11 | +| URLClassLoaderSSRF.java:70:21:70:42 | {...} : URL[] [[]] : URL | URLClassLoaderSSRF.java:70:21:70:42 | new URL[] | provenance | Sink:MaD:11 | +| URLClassLoaderSSRF.java:70:31:70:33 | uri : URI | URLClassLoaderSSRF.java:70:31:70:41 | toURL(...) : URL | provenance | MaD:287 | +| URLClassLoaderSSRF.java:70:31:70:41 | toURL(...) : URL | URLClassLoaderSSRF.java:70:21:70:42 | {...} : URL[] [[]] : URL | provenance | | +| URLClassLoaderSSRF.java:83:26:83:52 | getParameter(...) : String | URLClassLoaderSSRF.java:84:31:84:33 | url : String | provenance | Src:MaD:277 | +| URLClassLoaderSSRF.java:84:23:84:34 | new URI(...) : URI | URLClassLoaderSSRF.java:89:31:89:33 | uri : URI | provenance | | +| URLClassLoaderSSRF.java:84:31:84:33 | url : String | URLClassLoaderSSRF.java:84:23:84:34 | new URI(...) : URI | provenance | Config | +| URLClassLoaderSSRF.java:84:31:84:33 | url : String | URLClassLoaderSSRF.java:84:23:84:34 | new URI(...) : URI | provenance | MaD:285 | +| URLClassLoaderSSRF.java:89:21:89:42 | {...} : URL[] [[]] : URL | URLClassLoaderSSRF.java:89:21:89:42 | new URL[] | provenance | Sink:MaD:12 | +| URLClassLoaderSSRF.java:89:21:89:42 | {...} : URL[] [[]] : URL | URLClassLoaderSSRF.java:89:21:89:42 | new URL[] | provenance | Sink:MaD:12 | +| URLClassLoaderSSRF.java:89:31:89:33 | uri : URI | URLClassLoaderSSRF.java:89:31:89:41 | toURL(...) : URL | provenance | MaD:287 | +| URLClassLoaderSSRF.java:89:31:89:41 | toURL(...) : URL | URLClassLoaderSSRF.java:89:21:89:42 | {...} : URL[] [[]] : URL | provenance | | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:31:40:31:47 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:36:16:36:23 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:38:36:38:43 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:40:16:40:23 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:45:40:45:47 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:47:40:47:47 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:49:36:49:43 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:51:36:51:43 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:53:36:53:43 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:55:44:55:51 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:57:38:57:45 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:59:44:59:51 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:61:53:61:60 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:63:32:63:39 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:65:44:65:51 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:67:32:67:39 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:69:33:69:40 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:71:53:71:60 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:74:58:74:65 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:76:62:76:69 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:78:52:78:59 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:80:34:80:41 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:82:40:82:47 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:84:40:84:47 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:86:50:86:57 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:92:33:92:40 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:97:35:97:42 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:102:32:102:39 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:107:24:107:31 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | mad/Test.java:112:24:112:31 | source(...) : String | provenance | Src:MaD:277 | +| mad/Test.java:31:40:31:47 | source(...) : String | mad/Test.java:31:24:31:47 | (...)... | provenance | Sink:MaD:7 | +| mad/Test.java:36:16:36:23 | source(...) : String | mad/Test.java:36:10:36:23 | (...)... | provenance | Sink:MaD:9 | +| mad/Test.java:38:36:38:43 | source(...) : String | mad/Test.java:38:28:38:43 | (...)... | provenance | Sink:MaD:8 | +| mad/Test.java:40:16:40:23 | source(...) : String | mad/Test.java:40:10:40:23 | (...)... | provenance | Sink:MaD:10 | +| mad/Test.java:45:40:45:47 | source(...) : String | mad/Test.java:45:32:45:47 | (...)... | provenance | Sink:MaD:11 | +| mad/Test.java:45:40:45:47 | source(...) : String | mad/Test.java:45:32:45:47 | (...)... | provenance | Sink:MaD:11 | +| mad/Test.java:47:40:47:47 | source(...) : String | mad/Test.java:47:32:47:47 | (...)... | provenance | Sink:MaD:12 | +| mad/Test.java:47:40:47:47 | source(...) : String | mad/Test.java:47:32:47:47 | (...)... | provenance | Sink:MaD:12 | +| mad/Test.java:49:36:49:43 | source(...) : String | mad/Test.java:49:28:49:43 | (...)... | provenance | Sink:MaD:13 | +| mad/Test.java:49:36:49:43 | source(...) : String | mad/Test.java:49:28:49:43 | (...)... | provenance | Sink:MaD:13 | +| mad/Test.java:51:36:51:43 | source(...) : String | mad/Test.java:51:28:51:43 | (...)... | provenance | Sink:MaD:14 | +| mad/Test.java:51:36:51:43 | source(...) : String | mad/Test.java:51:28:51:43 | (...)... | provenance | Sink:MaD:14 | +| mad/Test.java:53:36:53:43 | source(...) : String | mad/Test.java:53:28:53:43 | (...)... | provenance | Sink:MaD:15 | +| mad/Test.java:53:36:53:43 | source(...) : String | mad/Test.java:53:28:53:43 | (...)... | provenance | Sink:MaD:15 | +| mad/Test.java:55:44:55:51 | source(...) : String | mad/Test.java:55:36:55:51 | (...)... | provenance | Sink:MaD:16 | +| mad/Test.java:57:38:57:45 | source(...) : String | mad/Test.java:57:32:57:45 | (...)... | provenance | Sink:MaD:25 | +| mad/Test.java:59:44:59:51 | source(...) : String | mad/Test.java:59:38:59:51 | (...)... | provenance | Sink:MaD:26 | +| mad/Test.java:61:53:61:60 | source(...) : String | mad/Test.java:61:47:61:60 | (...)... | provenance | Sink:MaD:24 | +| mad/Test.java:63:32:63:39 | source(...) : String | mad/Test.java:63:26:63:39 | (...)... | provenance | Sink:MaD:28 | +| mad/Test.java:65:44:65:51 | source(...) : String | mad/Test.java:65:38:65:51 | (...)... | provenance | Sink:MaD:29 | +| mad/Test.java:67:32:67:39 | source(...) : String | mad/Test.java:67:26:67:39 | (...)... | provenance | Sink:MaD:27 | +| mad/Test.java:69:33:69:40 | source(...) : String | mad/Test.java:69:27:69:40 | (...)... | provenance | Sink:MaD:22 | +| mad/Test.java:71:53:71:60 | source(...) : String | mad/Test.java:71:47:71:60 | (...)... | provenance | Sink:MaD:30 | +| mad/Test.java:74:58:74:65 | source(...) : String | mad/Test.java:74:50:74:65 | (...)... | provenance | Sink:MaD:32 | +| mad/Test.java:76:62:76:69 | source(...) : String | mad/Test.java:76:50:76:69 | (...)... | provenance | Sink:MaD:31 | +| mad/Test.java:78:52:78:59 | source(...) : String | mad/Test.java:78:43:78:59 | (...)... | provenance | Sink:MaD:33 | +| mad/Test.java:80:34:80:41 | source(...) : String | mad/Test.java:80:25:80:41 | (...)... | provenance | Sink:MaD:34 | +| mad/Test.java:82:40:82:47 | source(...) : String | mad/Test.java:82:31:82:47 | (...)... | provenance | Sink:MaD:35 | +| mad/Test.java:84:40:84:47 | source(...) : String | mad/Test.java:84:31:84:47 | (...)... | provenance | Sink:MaD:36 | +| mad/Test.java:86:50:86:57 | source(...) : String | mad/Test.java:86:41:86:57 | (...)... | provenance | Sink:MaD:37 | +| mad/Test.java:92:33:92:40 | source(...) : String | mad/Test.java:92:24:92:40 | (...)... | provenance | Sink:MaD:21 | +| mad/Test.java:97:35:97:42 | source(...) : String | mad/Test.java:97:29:97:42 | (...)... | provenance | Sink:MaD:234 | +| mad/Test.java:102:32:102:39 | source(...) : String | mad/Test.java:102:26:102:39 | (...)... | provenance | Sink:MaD:241 | +| mad/Test.java:107:24:107:31 | source(...) : String | mad/Test.java:107:15:107:31 | (...)... | provenance | Sink:MaD:276 | +| mad/Test.java:112:24:112:31 | source(...) : String | mad/Test.java:112:15:112:31 | (...)... | provenance | Sink:MaD:275 | +models +| 1 | Sink: com.zaxxer.hikari; HikariConfig; false; HikariConfig; (Properties); ; Argument[0]; request-forgery; manual | +| 2 | Sink: com.zaxxer.hikari; HikariConfig; false; setJdbcUrl; (String); ; Argument[0]; request-forgery; manual | +| 3 | Sink: jakarta.ws.rs.client; Client; true; target; ; ; Argument[0]; request-forgery; manual | +| 4 | Sink: java.net.http; HttpClient; true; send; (HttpRequest,HttpResponse$BodyHandler); ; Argument[0]; request-forgery; ai-manual | +| 5 | Sink: java.net.http; HttpRequest$Builder; false; uri; ; ; Argument[0]; request-forgery; manual | +| 6 | Sink: java.net.http; HttpRequest; false; newBuilder; ; ; Argument[0]; request-forgery; manual | +| 7 | Sink: java.net; DatagramSocket; true; connect; (SocketAddress); ; Argument[0]; request-forgery; ai-manual | +| 8 | Sink: java.net; URL; false; openConnection; (Proxy); ; Argument[0]; request-forgery; ai-manual | +| 9 | Sink: java.net; URL; false; openConnection; ; ; Argument[this]; request-forgery; manual | +| 10 | Sink: java.net; URL; false; openStream; ; ; Argument[this]; request-forgery; manual | +| 11 | Sink: java.net; URLClassLoader; false; URLClassLoader; (String,URL[],ClassLoader); ; Argument[1]; request-forgery; manual | +| 12 | Sink: java.net; URLClassLoader; false; URLClassLoader; (String,URL[],ClassLoader,URLStreamHandlerFactory); ; Argument[1]; request-forgery; manual | +| 13 | Sink: java.net; URLClassLoader; false; URLClassLoader; (URL[]); ; Argument[0]; request-forgery; manual | +| 14 | Sink: java.net; URLClassLoader; false; URLClassLoader; (URL[],ClassLoader); ; Argument[0]; request-forgery; manual | +| 15 | Sink: java.net; URLClassLoader; false; URLClassLoader; (URL[],ClassLoader,URLStreamHandlerFactory); ; Argument[0]; request-forgery; manual | +| 16 | Sink: java.net; URLClassLoader; false; newInstance; ; ; Argument[0]; request-forgery; manual | +| 17 | Sink: java.sql; Driver; false; connect; (String,Properties); ; Argument[0]; request-forgery; manual | +| 18 | Sink: java.sql; DriverManager; false; getConnection; (String); ; Argument[0]; request-forgery; manual | +| 19 | Sink: java.sql; DriverManager; false; getConnection; (String,Properties); ; Argument[0]; request-forgery; manual | +| 20 | Sink: java.sql; DriverManager; false; getConnection; (String,String,String); ; Argument[0]; request-forgery; manual | +| 21 | Sink: javafx.scene.web; WebEngine; false; load; (String); ; Argument[0]; request-forgery; ai-manual | +| 22 | Sink: javax.activation; URLDataSource; true; URLDataSource; ; ; Argument[0]; request-forgery; manual | +| 23 | Sink: javax.ws.rs.client; Client; true; target; ; ; Argument[0]; request-forgery; manual | +| 24 | Sink: org.apache.commons.jelly; JellyContext; true; JellyContext; (JellyContext,URL); ; Argument[1]; request-forgery; ai-manual | +| 25 | Sink: org.apache.commons.jelly; JellyContext; true; JellyContext; (JellyContext,URL,URL); ; Argument[1]; request-forgery; ai-manual | +| 26 | Sink: org.apache.commons.jelly; JellyContext; true; JellyContext; (JellyContext,URL,URL); ; Argument[2]; request-forgery; ai-manual | +| 27 | Sink: org.apache.commons.jelly; JellyContext; true; JellyContext; (URL); ; Argument[0]; request-forgery; ai-manual | +| 28 | Sink: org.apache.commons.jelly; JellyContext; true; JellyContext; (URL,URL); ; Argument[0]; request-forgery; ai-manual | +| 29 | Sink: org.apache.commons.jelly; JellyContext; true; JellyContext; (URL,URL); ; Argument[1]; request-forgery; ai-manual | +| 30 | Sink: org.apache.cxf.catalog; OASISCatalogManager; true; loadCatalog; (URL); ; Argument[0]; request-forgery; manual | +| 31 | Sink: org.apache.cxf.common.classloader; ClassLoaderUtils; true; getURLClassLoader; (List,ClassLoader); ; Argument[0]; request-forgery; manual | +| 32 | Sink: org.apache.cxf.common.classloader; ClassLoaderUtils; true; getURLClassLoader; (URL[],ClassLoader); ; Argument[0]; request-forgery; manual | +| 33 | Sink: org.apache.cxf.resource; ExtendedURIResolver; true; resolve; (String,String); ; Argument[0]; request-forgery; manual | +| 34 | Sink: org.apache.cxf.resource; URIResolver; true; URIResolver; (String); ; Argument[0]; request-forgery; manual | +| 35 | Sink: org.apache.cxf.resource; URIResolver; true; URIResolver; (String,String); ; Argument[1]; request-forgery; manual | +| 36 | Sink: org.apache.cxf.resource; URIResolver; true; URIResolver; (String,String,Class); ; Argument[1]; request-forgery; manual | +| 37 | Sink: org.apache.cxf.resource; URIResolver; true; resolve; (String,String,Class); ; Argument[1]; request-forgery; manual | +| 38 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; create; (Method,HttpHost,String); ; Argument[1]; request-forgery; hq-manual | +| 39 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; create; (Method,String); ; Argument[1]; request-forgery; hq-manual | +| 40 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; create; (Method,URI); ; Argument[1]; request-forgery; hq-manual | +| 41 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; create; (String,String); ; Argument[1]; request-forgery; hq-manual | +| 42 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; create; (String,URI); ; Argument[1]; request-forgery; hq-manual | +| 43 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; delete; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 44 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; delete; (String); ; Argument[0]; request-forgery; hq-manual | +| 45 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; delete; (URI); ; Argument[0]; request-forgery; hq-manual | +| 46 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; get; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 47 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; get; (String); ; Argument[0]; request-forgery; hq-manual | +| 48 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; get; (URI); ; Argument[0]; request-forgery; hq-manual | +| 49 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; head; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 50 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; head; (String); ; Argument[0]; request-forgery; hq-manual | +| 51 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; head; (URI); ; Argument[0]; request-forgery; hq-manual | +| 52 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; options; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 53 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; options; (String); ; Argument[0]; request-forgery; hq-manual | +| 54 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; options; (URI); ; Argument[0]; request-forgery; hq-manual | +| 55 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; patch; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 56 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; patch; (String); ; Argument[0]; request-forgery; hq-manual | +| 57 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; patch; (URI); ; Argument[0]; request-forgery; hq-manual | +| 58 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; post; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 59 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; post; (String); ; Argument[0]; request-forgery; hq-manual | +| 60 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; post; (URI); ; Argument[0]; request-forgery; hq-manual | +| 61 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; put; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 62 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; put; (String); ; Argument[0]; request-forgery; hq-manual | +| 63 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; put; (URI); ; Argument[0]; request-forgery; hq-manual | +| 64 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; trace; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 65 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; trace; (String); ; Argument[0]; request-forgery; hq-manual | +| 66 | Sink: org.apache.hc.client5.http.async.methods; BasicHttpRequests; true; trace; (URI); ; Argument[0]; request-forgery; hq-manual | +| 67 | Sink: org.apache.hc.client5.http.async.methods; ConfigurableHttpRequest; true; ConfigurableHttpRequest; (String,HttpHost,String); ; Argument[1]; request-forgery; hq-manual | +| 68 | Sink: org.apache.hc.client5.http.async.methods; ConfigurableHttpRequest; true; ConfigurableHttpRequest; (String,URI); ; Argument[1]; request-forgery; hq-manual | +| 69 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequest; true; SimpleHttpRequest; (Method,HttpHost,String); ; Argument[1]; request-forgery; hq-manual | +| 70 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequest; true; SimpleHttpRequest; (Method,URI); ; Argument[1]; request-forgery; hq-manual | +| 71 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequest; true; SimpleHttpRequest; (String,HttpHost,String); ; Argument[1]; request-forgery; hq-manual | +| 72 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequest; true; SimpleHttpRequest; (String,URI); ; Argument[1]; request-forgery; hq-manual | +| 73 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequest; true; create; (Method,HttpHost,String); ; Argument[1]; request-forgery; hq-manual | +| 74 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequest; true; create; (Method,URI); ; Argument[1]; request-forgery; hq-manual | +| 75 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequest; true; create; (String,String); ; Argument[1]; request-forgery; hq-manual | +| 76 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequest; true; create; (String,URI); ; Argument[1]; request-forgery; hq-manual | +| 77 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; create; (Method,HttpHost,String); ; Argument[1]; request-forgery; hq-manual | +| 78 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; create; (Method,String); ; Argument[1]; request-forgery; hq-manual | +| 79 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; create; (Method,URI); ; Argument[1]; request-forgery; hq-manual | +| 80 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; create; (String,String); ; Argument[1]; request-forgery; hq-manual | +| 81 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; create; (String,URI); ; Argument[1]; request-forgery; hq-manual | +| 82 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; delete; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 83 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; delete; (String); ; Argument[0]; request-forgery; hq-manual | +| 84 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; delete; (URI); ; Argument[0]; request-forgery; hq-manual | +| 85 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; get; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 86 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; get; (String); ; Argument[0]; request-forgery; hq-manual | +| 87 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; get; (URI); ; Argument[0]; request-forgery; hq-manual | +| 88 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; head; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 89 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; head; (String); ; Argument[0]; request-forgery; hq-manual | +| 90 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; head; (URI); ; Argument[0]; request-forgery; hq-manual | +| 91 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; options; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 92 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; options; (String); ; Argument[0]; request-forgery; hq-manual | +| 93 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; options; (URI); ; Argument[0]; request-forgery; hq-manual | +| 94 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; patch; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 95 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; patch; (String); ; Argument[0]; request-forgery; hq-manual | +| 96 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; patch; (URI); ; Argument[0]; request-forgery; hq-manual | +| 97 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; post; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 98 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; post; (String); ; Argument[0]; request-forgery; hq-manual | +| 99 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; post; (URI); ; Argument[0]; request-forgery; hq-manual | +| 100 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; put; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 101 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; put; (String); ; Argument[0]; request-forgery; hq-manual | +| 102 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; put; (URI); ; Argument[0]; request-forgery; hq-manual | +| 103 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; trace; (HttpHost,String); ; Argument[0]; request-forgery; hq-manual | +| 104 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; trace; (String); ; Argument[0]; request-forgery; hq-manual | +| 105 | Sink: org.apache.hc.client5.http.async.methods; SimpleHttpRequests; true; trace; (URI); ; Argument[0]; request-forgery; hq-manual | +| 106 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; delete; (String); ; Argument[0]; request-forgery; hq-manual | +| 107 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; delete; (URI); ; Argument[0]; request-forgery; hq-manual | +| 108 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; get; (String); ; Argument[0]; request-forgery; hq-manual | +| 109 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; get; (URI); ; Argument[0]; request-forgery; hq-manual | +| 110 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; head; (String); ; Argument[0]; request-forgery; hq-manual | +| 111 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; head; (URI); ; Argument[0]; request-forgery; hq-manual | +| 112 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; options; (String); ; Argument[0]; request-forgery; hq-manual | +| 113 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; options; (URI); ; Argument[0]; request-forgery; hq-manual | +| 114 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; patch; (String); ; Argument[0]; request-forgery; hq-manual | +| 115 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; patch; (URI); ; Argument[0]; request-forgery; hq-manual | +| 116 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; post; (String); ; Argument[0]; request-forgery; hq-manual | +| 117 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; post; (URI); ; Argument[0]; request-forgery; hq-manual | +| 118 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; put; (String); ; Argument[0]; request-forgery; hq-manual | +| 119 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; put; (URI); ; Argument[0]; request-forgery; hq-manual | +| 120 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; trace; (String); ; Argument[0]; request-forgery; hq-manual | +| 121 | Sink: org.apache.hc.client5.http.async.methods; SimpleRequestBuilder; true; trace; (URI); ; Argument[0]; request-forgery; hq-manual | +| 122 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; create; (Method,String); ; Argument[1]; request-forgery; hq-manual | +| 123 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; create; (Method,URI); ; Argument[1]; request-forgery; hq-manual | +| 124 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; create; (String,String); ; Argument[1]; request-forgery; hq-manual | +| 125 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; create; (String,URI); ; Argument[1]; request-forgery; hq-manual | +| 126 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; delete; (String); ; Argument[0]; request-forgery; hq-manual | +| 127 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; delete; (URI); ; Argument[0]; request-forgery; hq-manual | +| 128 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; get; (String); ; Argument[0]; request-forgery; hq-manual | +| 129 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; get; (URI); ; Argument[0]; request-forgery; hq-manual | +| 130 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; head; (String); ; Argument[0]; request-forgery; hq-manual | +| 131 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; head; (URI); ; Argument[0]; request-forgery; hq-manual | +| 132 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; options; (String); ; Argument[0]; request-forgery; hq-manual | +| 133 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; options; (URI); ; Argument[0]; request-forgery; hq-manual | +| 134 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; patch; (String); ; Argument[0]; request-forgery; hq-manual | +| 135 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; patch; (URI); ; Argument[0]; request-forgery; hq-manual | +| 136 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; post; (String); ; Argument[0]; request-forgery; hq-manual | +| 137 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; post; (URI); ; Argument[0]; request-forgery; hq-manual | +| 138 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; put; (String); ; Argument[0]; request-forgery; hq-manual | +| 139 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; put; (URI); ; Argument[0]; request-forgery; hq-manual | +| 140 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; trace; (String); ; Argument[0]; request-forgery; hq-manual | +| 141 | Sink: org.apache.hc.client5.http.classic.methods; ClassicHttpRequests; true; trace; (URI); ; Argument[0]; request-forgery; hq-manual | +| 142 | Sink: org.apache.hc.client5.http.classic.methods; HttpDelete; true; HttpDelete; (String); ; Argument[0]; request-forgery; hq-manual | +| 143 | Sink: org.apache.hc.client5.http.classic.methods; HttpDelete; true; HttpDelete; (URI); ; Argument[0]; request-forgery; hq-manual | +| 144 | Sink: org.apache.hc.client5.http.classic.methods; HttpGet; true; HttpGet; (String); ; Argument[0]; request-forgery; hq-manual | +| 145 | Sink: org.apache.hc.client5.http.classic.methods; HttpGet; true; HttpGet; (URI); ; Argument[0]; request-forgery; hq-manual | +| 146 | Sink: org.apache.hc.client5.http.classic.methods; HttpHead; true; HttpHead; (String); ; Argument[0]; request-forgery; hq-manual | +| 147 | Sink: org.apache.hc.client5.http.classic.methods; HttpHead; true; HttpHead; (URI); ; Argument[0]; request-forgery; hq-manual | +| 148 | Sink: org.apache.hc.client5.http.classic.methods; HttpOptions; true; HttpOptions; (String); ; Argument[0]; request-forgery; hq-manual | +| 149 | Sink: org.apache.hc.client5.http.classic.methods; HttpOptions; true; HttpOptions; (URI); ; Argument[0]; request-forgery; hq-manual | +| 150 | Sink: org.apache.hc.client5.http.classic.methods; HttpPatch; true; HttpPatch; (String); ; Argument[0]; request-forgery; hq-manual | +| 151 | Sink: org.apache.hc.client5.http.classic.methods; HttpPatch; true; HttpPatch; (URI); ; Argument[0]; request-forgery; hq-manual | +| 152 | Sink: org.apache.hc.client5.http.classic.methods; HttpPost; true; HttpPost; (String); ; Argument[0]; request-forgery; hq-manual | +| 153 | Sink: org.apache.hc.client5.http.classic.methods; HttpPost; true; HttpPost; (URI); ; Argument[0]; request-forgery; hq-manual | +| 154 | Sink: org.apache.hc.client5.http.classic.methods; HttpPut; true; HttpPut; (String); ; Argument[0]; request-forgery; hq-manual | +| 155 | Sink: org.apache.hc.client5.http.classic.methods; HttpPut; true; HttpPut; (URI); ; Argument[0]; request-forgery; hq-manual | +| 156 | Sink: org.apache.hc.client5.http.classic.methods; HttpTrace; true; HttpTrace; (String); ; Argument[0]; request-forgery; hq-manual | +| 157 | Sink: org.apache.hc.client5.http.classic.methods; HttpTrace; true; HttpTrace; (URI); ; Argument[0]; request-forgery; hq-manual | +| 158 | Sink: org.apache.hc.client5.http.classic.methods; HttpUriRequestBase; true; HttpUriRequestBase; (String,URI); ; Argument[1]; request-forgery; hq-manual | +| 159 | Sink: org.apache.hc.client5.http.fluent; Request; true; create; (Method,URI); ; Argument[1]; request-forgery; hq-manual | +| 160 | Sink: org.apache.hc.client5.http.fluent; Request; true; create; (String,String); ; Argument[1]; request-forgery; hq-manual | +| 161 | Sink: org.apache.hc.client5.http.fluent; Request; true; create; (String,URI); ; Argument[1]; request-forgery; hq-manual | +| 162 | Sink: org.apache.hc.client5.http.fluent; Request; true; delete; (String); ; Argument[0]; request-forgery; hq-manual | +| 163 | Sink: org.apache.hc.client5.http.fluent; Request; true; delete; (URI); ; Argument[0]; request-forgery; hq-manual | +| 164 | Sink: org.apache.hc.client5.http.fluent; Request; true; get; (String); ; Argument[0]; request-forgery; hq-manual | +| 165 | Sink: org.apache.hc.client5.http.fluent; Request; true; get; (URI); ; Argument[0]; request-forgery; hq-manual | +| 166 | Sink: org.apache.hc.client5.http.fluent; Request; true; head; (String); ; Argument[0]; request-forgery; hq-manual | +| 167 | Sink: org.apache.hc.client5.http.fluent; Request; true; head; (URI); ; Argument[0]; request-forgery; hq-manual | +| 168 | Sink: org.apache.hc.client5.http.fluent; Request; true; options; (String); ; Argument[0]; request-forgery; hq-manual | +| 169 | Sink: org.apache.hc.client5.http.fluent; Request; true; options; (URI); ; Argument[0]; request-forgery; hq-manual | +| 170 | Sink: org.apache.hc.client5.http.fluent; Request; true; patch; (String); ; Argument[0]; request-forgery; hq-manual | +| 171 | Sink: org.apache.hc.client5.http.fluent; Request; true; patch; (URI); ; Argument[0]; request-forgery; hq-manual | +| 172 | Sink: org.apache.hc.client5.http.fluent; Request; true; post; (String); ; Argument[0]; request-forgery; hq-manual | +| 173 | Sink: org.apache.hc.client5.http.fluent; Request; true; post; (URI); ; Argument[0]; request-forgery; hq-manual | +| 174 | Sink: org.apache.hc.client5.http.fluent; Request; true; put; (String); ; Argument[0]; request-forgery; hq-manual | +| 175 | Sink: org.apache.hc.client5.http.fluent; Request; true; put; (URI); ; Argument[0]; request-forgery; hq-manual | +| 176 | Sink: org.apache.hc.client5.http.fluent; Request; true; trace; (String); ; Argument[0]; request-forgery; hq-manual | +| 177 | Sink: org.apache.hc.client5.http.fluent; Request; true; trace; (URI); ; Argument[0]; request-forgery; hq-manual | +| 178 | Sink: org.apache.hc.core5.http.impl.bootstrap; HttpAsyncRequester; true; connect; (HttpHost,Timeout); ; Argument[0]; request-forgery; hq-manual | +| 179 | Sink: org.apache.hc.core5.http.impl.bootstrap; HttpAsyncRequester; true; connect; (HttpHost,Timeout,Object,FutureCallback); ; Argument[0]; request-forgery; hq-manual | +| 180 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; delete; (String); ; Argument[0]; request-forgery; hq-manual | +| 181 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; delete; (URI); ; Argument[0]; request-forgery; hq-manual | +| 182 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; get; (String); ; Argument[0]; request-forgery; hq-manual | +| 183 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; get; (URI); ; Argument[0]; request-forgery; hq-manual | +| 184 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; head; (String); ; Argument[0]; request-forgery; hq-manual | +| 185 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; head; (URI); ; Argument[0]; request-forgery; hq-manual | +| 186 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; options; (String); ; Argument[0]; request-forgery; hq-manual | +| 187 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; options; (URI); ; Argument[0]; request-forgery; hq-manual | +| 188 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; patch; (String); ; Argument[0]; request-forgery; hq-manual | +| 189 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; patch; (URI); ; Argument[0]; request-forgery; hq-manual | +| 190 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; post; (String); ; Argument[0]; request-forgery; hq-manual | +| 191 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; post; (URI); ; Argument[0]; request-forgery; hq-manual | +| 192 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; put; (String); ; Argument[0]; request-forgery; hq-manual | +| 193 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; put; (URI); ; Argument[0]; request-forgery; hq-manual | +| 194 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; trace; (String); ; Argument[0]; request-forgery; hq-manual | +| 195 | Sink: org.apache.hc.core5.http.io.support; ClassicRequestBuilder; true; trace; (URI); ; Argument[0]; request-forgery; hq-manual | +| 196 | Sink: org.apache.hc.core5.http.message; BasicClassicHttpRequest; true; BasicClassicHttpRequest; (Method,HttpHost,String); ; Argument[1]; request-forgery; hq-manual | +| 197 | Sink: org.apache.hc.core5.http.message; BasicClassicHttpRequest; true; BasicClassicHttpRequest; (Method,URI); ; Argument[1]; request-forgery; hq-manual | +| 198 | Sink: org.apache.hc.core5.http.message; BasicClassicHttpRequest; true; BasicClassicHttpRequest; (String,HttpHost,String); ; Argument[1]; request-forgery; hq-manual | +| 199 | Sink: org.apache.hc.core5.http.message; BasicClassicHttpRequest; true; BasicClassicHttpRequest; (String,URI); ; Argument[1]; request-forgery; hq-manual | +| 200 | Sink: org.apache.hc.core5.http.message; BasicHttpRequest; true; BasicHttpRequest; (Method,HttpHost,String); ; Argument[1]; request-forgery; hq-manual | +| 201 | Sink: org.apache.hc.core5.http.message; BasicHttpRequest; true; BasicHttpRequest; (Method,URI); ; Argument[1]; request-forgery; hq-manual | +| 202 | Sink: org.apache.hc.core5.http.message; BasicHttpRequest; true; BasicHttpRequest; (String,HttpHost,String); ; Argument[1]; request-forgery; hq-manual | +| 203 | Sink: org.apache.hc.core5.http.message; BasicHttpRequest; true; BasicHttpRequest; (String,URI); ; Argument[1]; request-forgery; hq-manual | +| 204 | Sink: org.apache.hc.core5.http.support; AbstractRequestBuilder; true; setHttpHost; (HttpHost); ; Argument[0]; request-forgery; hq-manual | +| 205 | Sink: org.apache.hc.core5.http.support; AbstractRequestBuilder; true; setUri; (String); ; Argument[0]; request-forgery; hq-manual | +| 206 | Sink: org.apache.hc.core5.http.support; AbstractRequestBuilder; true; setUri; (URI); ; Argument[0]; request-forgery; hq-manual | +| 207 | Sink: org.apache.hc.core5.http; HttpRequest; true; setUri; (URI); ; Argument[0]; request-forgery; hq-manual | +| 208 | Sink: org.apache.hc.core5.http; HttpRequestFactory; true; newHttpRequest; (String,String); ; Argument[1]; request-forgery; hq-manual | +| 209 | Sink: org.apache.hc.core5.http; HttpRequestFactory; true; newHttpRequest; (String,URI); ; Argument[1]; request-forgery; hq-manual | +| 210 | Sink: org.apache.http.client.methods; HttpDelete; false; HttpDelete; ; ; Argument[0]; request-forgery; manual | +| 211 | Sink: org.apache.http.client.methods; HttpGet; false; HttpGet; ; ; Argument[0]; request-forgery; manual | +| 212 | Sink: org.apache.http.client.methods; HttpHead; false; HttpHead; ; ; Argument[0]; request-forgery; manual | +| 213 | Sink: org.apache.http.client.methods; HttpOptions; false; HttpOptions; ; ; Argument[0]; request-forgery; manual | +| 214 | Sink: org.apache.http.client.methods; HttpPatch; false; HttpPatch; ; ; Argument[0]; request-forgery; manual | +| 215 | Sink: org.apache.http.client.methods; HttpPost; false; HttpPost; ; ; Argument[0]; request-forgery; manual | +| 216 | Sink: org.apache.http.client.methods; HttpPut; false; HttpPut; ; ; Argument[0]; request-forgery; manual | +| 217 | Sink: org.apache.http.client.methods; HttpRequestBase; true; setURI; ; ; Argument[0]; request-forgery; manual | +| 218 | Sink: org.apache.http.client.methods; HttpTrace; false; HttpTrace; ; ; Argument[0]; request-forgery; manual | +| 219 | Sink: org.apache.http.client.methods; RequestBuilder; false; delete; ; ; Argument[0]; request-forgery; manual | +| 220 | Sink: org.apache.http.client.methods; RequestBuilder; false; get; ; ; Argument[0]; request-forgery; manual | +| 221 | Sink: org.apache.http.client.methods; RequestBuilder; false; head; ; ; Argument[0]; request-forgery; manual | +| 222 | Sink: org.apache.http.client.methods; RequestBuilder; false; options; ; ; Argument[0]; request-forgery; manual | +| 223 | Sink: org.apache.http.client.methods; RequestBuilder; false; patch; ; ; Argument[0]; request-forgery; manual | +| 224 | Sink: org.apache.http.client.methods; RequestBuilder; false; post; ; ; Argument[0]; request-forgery; manual | +| 225 | Sink: org.apache.http.client.methods; RequestBuilder; false; put; ; ; Argument[0]; request-forgery; manual | +| 226 | Sink: org.apache.http.client.methods; RequestBuilder; false; setUri; ; ; Argument[0]; request-forgery; manual | +| 227 | Sink: org.apache.http.client.methods; RequestBuilder; false; trace; ; ; Argument[0]; request-forgery; manual | +| 228 | Sink: org.apache.http.message; BasicHttpEntityEnclosingRequest; false; BasicHttpEntityEnclosingRequest; (RequestLine); ; Argument[0]; request-forgery; manual | +| 229 | Sink: org.apache.http.message; BasicHttpEntityEnclosingRequest; false; BasicHttpEntityEnclosingRequest; (String,String); ; Argument[1]; request-forgery; manual | +| 230 | Sink: org.apache.http.message; BasicHttpEntityEnclosingRequest; false; BasicHttpEntityEnclosingRequest; (String,String,ProtocolVersion); ; Argument[1]; request-forgery; manual | +| 231 | Sink: org.apache.http.message; BasicHttpRequest; false; BasicHttpRequest; (RequestLine); ; Argument[0]; request-forgery; manual | +| 232 | Sink: org.apache.http.message; BasicHttpRequest; false; BasicHttpRequest; (String,String); ; Argument[1]; request-forgery; manual | +| 233 | Sink: org.apache.http.message; BasicHttpRequest; false; BasicHttpRequest; (String,String,ProtocolVersion); ; Argument[1]; request-forgery; manual | +| 234 | Sink: org.codehaus.cargo.container.installer; ZipURLInstaller; true; ZipURLInstaller; (URL,String,String); ; Argument[0]; request-forgery; ai-manual | +| 235 | Sink: org.jdbi.v3.core; Jdbi; false; create; (String); ; Argument[0]; request-forgery; manual | +| 236 | Sink: org.jdbi.v3.core; Jdbi; false; create; (String,Properties); ; Argument[0]; request-forgery; manual | +| 237 | Sink: org.jdbi.v3.core; Jdbi; false; create; (String,String,String); ; Argument[0]; request-forgery; manual | +| 238 | Sink: org.jdbi.v3.core; Jdbi; false; open; (String); ; Argument[0]; request-forgery; manual | +| 239 | Sink: org.jdbi.v3.core; Jdbi; false; open; (String,Properties); ; Argument[0]; request-forgery; manual | +| 240 | Sink: org.jdbi.v3.core; Jdbi; false; open; (String,String,String); ; Argument[0]; request-forgery; manual | +| 241 | Sink: org.kohsuke.stapler; HttpResponses; true; staticResource; (URL); ; Argument[0]; request-forgery; ai-manual | +| 242 | Sink: org.springframework.boot.jdbc; DataSourceBuilder; false; url; (String); ; Argument[0]; request-forgery; manual | +| 243 | Sink: org.springframework.http; RequestEntity; false; RequestEntity; (HttpMethod,URI); ; Argument[1]; request-forgery; manual | +| 244 | Sink: org.springframework.http; RequestEntity; false; RequestEntity; (MultiValueMap,HttpMethod,URI); ; Argument[2]; request-forgery; manual | +| 245 | Sink: org.springframework.http; RequestEntity; false; RequestEntity; (Object,HttpMethod,URI); ; Argument[2]; request-forgery; manual | +| 246 | Sink: org.springframework.http; RequestEntity; false; RequestEntity; (Object,HttpMethod,URI,Type); ; Argument[2]; request-forgery; manual | +| 247 | Sink: org.springframework.http; RequestEntity; false; RequestEntity; (Object,MultiValueMap,HttpMethod,URI); ; Argument[3]; request-forgery; manual | +| 248 | Sink: org.springframework.http; RequestEntity; false; RequestEntity; (Object,MultiValueMap,HttpMethod,URI,Type); ; Argument[3]; request-forgery; manual | +| 249 | Sink: org.springframework.http; RequestEntity; false; delete; ; ; Argument[0]; request-forgery; manual | +| 250 | Sink: org.springframework.http; RequestEntity; false; get; ; ; Argument[0]; request-forgery; manual | +| 251 | Sink: org.springframework.http; RequestEntity; false; head; ; ; Argument[0]; request-forgery; manual | +| 252 | Sink: org.springframework.http; RequestEntity; false; method; ; ; Argument[1]; request-forgery; manual | +| 253 | Sink: org.springframework.http; RequestEntity; false; options; ; ; Argument[0]; request-forgery; manual | +| 254 | Sink: org.springframework.http; RequestEntity; false; patch; ; ; Argument[0]; request-forgery; manual | +| 255 | Sink: org.springframework.http; RequestEntity; false; post; ; ; Argument[0]; request-forgery; manual | +| 256 | Sink: org.springframework.http; RequestEntity; false; put; ; ; Argument[0]; request-forgery; manual | +| 257 | Sink: org.springframework.jdbc.datasource; AbstractDriverBasedDataSource; false; setUrl; (String); ; Argument[0]; request-forgery; manual | +| 258 | Sink: org.springframework.jdbc.datasource; DriverManagerDataSource; false; DriverManagerDataSource; (String); ; Argument[0]; request-forgery; manual | +| 259 | Sink: org.springframework.jdbc.datasource; DriverManagerDataSource; false; DriverManagerDataSource; (String,Properties); ; Argument[0]; request-forgery; manual | +| 260 | Sink: org.springframework.jdbc.datasource; DriverManagerDataSource; false; DriverManagerDataSource; (String,String,String); ; Argument[0]; request-forgery; manual | +| 261 | Sink: org.springframework.web.client; RestTemplate; false; delete; ; ; Argument[0]; request-forgery; manual | +| 262 | Sink: org.springframework.web.client; RestTemplate; false; exchange; ; ; Argument[0]; request-forgery; manual | +| 263 | Sink: org.springframework.web.client; RestTemplate; false; execute; ; ; Argument[0]; request-forgery; manual | +| 264 | Sink: org.springframework.web.client; RestTemplate; false; getForEntity; ; ; Argument[0]; request-forgery; manual | +| 265 | Sink: org.springframework.web.client; RestTemplate; false; getForObject; ; ; Argument[0]; request-forgery; manual | +| 266 | Sink: org.springframework.web.client; RestTemplate; false; headForHeaders; ; ; Argument[0]; request-forgery; manual | +| 267 | Sink: org.springframework.web.client; RestTemplate; false; optionsForAllow; ; ; Argument[0]; request-forgery; manual | +| 268 | Sink: org.springframework.web.client; RestTemplate; false; patchForObject; ; ; Argument[0]; request-forgery; manual | +| 269 | Sink: org.springframework.web.client; RestTemplate; false; postForEntity; ; ; Argument[0]; request-forgery; manual | +| 270 | Sink: org.springframework.web.client; RestTemplate; false; postForLocation; ; ; Argument[0]; request-forgery; manual | +| 271 | Sink: org.springframework.web.client; RestTemplate; false; postForObject; ; ; Argument[0]; request-forgery; manual | +| 272 | Sink: org.springframework.web.client; RestTemplate; false; put; ; ; Argument[0]; request-forgery; manual | +| 273 | Sink: org.springframework.web.reactive.function.client; WebClient$Builder; false; baseUrl; ; ; Argument[0]; request-forgery; manual | +| 274 | Sink: org.springframework.web.reactive.function.client; WebClient; false; create; ; ; Argument[0]; request-forgery; manual | +| 275 | Sink: play.libs.ws; StandaloneWSClient; true; url; ; ; Argument[0]; request-forgery; manual | +| 276 | Sink: play.libs.ws; WSClient; true; url; ; ; Argument[0]; request-forgery; manual | +| 277 | Source: javax.servlet; ServletRequest; false; getParameter; (String); ; ReturnValue; remote; manual | +| 278 | Summary: java.lang; AbstractStringBuilder; true; append; ; ; Argument[0]; Argument[this]; taint; manual | +| 279 | Summary: java.lang; AbstractStringBuilder; true; append; ; ; Argument[this]; ReturnValue; value; manual | +| 280 | Summary: java.lang; CharSequence; true; toString; ; ; Argument[this]; ReturnValue; taint; manual | +| 281 | Summary: java.lang; String; false; format; (String,Object[]); ; Argument[1].ArrayElement; ReturnValue; taint; manual | +| 282 | Summary: java.lang; StringBuilder; true; StringBuilder; ; ; Argument[0]; Argument[this]; taint; manual | +| 283 | Summary: java.net.http; HttpRequest$Builder; true; build; (); ; Argument[this]; ReturnValue; taint; df-generated | +| 284 | Summary: java.net.http; HttpRequest; true; newBuilder; (URI); ; Argument[0]; ReturnValue; taint; df-generated | +| 285 | Summary: java.net; URI; false; URI; (String); ; Argument[0]; Argument[this]; taint; manual | +| 286 | Summary: java.net; URI; false; toString; ; ; Argument[this]; ReturnValue; taint; manual | +| 287 | Summary: java.net; URI; false; toURL; ; ; Argument[this]; ReturnValue; taint; manual | +| 288 | Summary: java.net; URL; false; URL; (String); ; Argument[0]; Argument[this]; taint; manual | +| 289 | Summary: java.util; Map; false; of; ; ; Argument[1]; ReturnValue.MapValue; value; manual | +| 290 | Summary: java.util; Map; false; of; ; ; Argument[3]; ReturnValue.MapValue; value; manual | +| 291 | Summary: java.util; Properties; true; setProperty; (String,String); ; Argument[1]; Argument[this].MapValue; value; manual | +| 292 | Summary: org.apache.hc.core5.http; HttpHost; true; HttpHost; (String); ; Argument[0]; Argument[this]; taint; hq-manual | +| 293 | Summary: org.apache.http.message; BasicRequestLine; false; BasicRequestLine; ; ; Argument[1]; Argument[this]; taint; manual | +nodes +| ApacheHttpSSRF.java:27:27:27:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ApacheHttpSSRF.java:28:23:28:35 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| ApacheHttpSSRF.java:28:31:28:34 | sink : String | semmle.label | sink : String | +| ApacheHttpSSRF.java:30:43:30:45 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:32:29:32:31 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:34:26:34:28 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:35:26:35:28 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:36:25:36:27 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:37:28:37:30 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:38:29:38:31 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:39:27:39:29 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:40:27:40:29 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:42:34:42:82 | new BasicRequestLine(...) | semmle.label | new BasicRequestLine(...) | +| ApacheHttpSSRF.java:42:62:42:64 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRF.java:42:62:42:75 | toString(...) : String | semmle.label | toString(...) : String | +| ApacheHttpSSRF.java:43:41:43:43 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRF.java:43:41:43:54 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRF.java:44:41:44:43 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRF.java:44:41:44:54 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRF.java:46:49:46:97 | new BasicRequestLine(...) | semmle.label | new BasicRequestLine(...) | +| ApacheHttpSSRF.java:46:77:46:79 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRF.java:46:77:46:90 | toString(...) : String | semmle.label | toString(...) : String | +| ApacheHttpSSRF.java:47:56:47:58 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRF.java:47:56:47:69 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRF.java:48:56:48:58 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRF.java:48:56:48:69 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRF.java:50:32:50:34 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:51:33:51:35 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:52:32:52:34 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:53:35:53:37 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:54:36:54:38 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:55:33:55:35 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:56:34:56:36 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:57:34:57:36 | uri | semmle.label | uri | +| ApacheHttpSSRF.java:58:43:58:45 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:41:30:41:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ApacheHttpSSRFVersion5.java:42:23:42:38 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| ApacheHttpSSRFVersion5.java:42:31:42:37 | uriSink : String | semmle.label | uriSink : String | +| ApacheHttpSSRFVersion5.java:44:31:44:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ApacheHttpSSRFVersion5.java:45:29:45:50 | new HttpHost(...) : HttpHost | semmle.label | new HttpHost(...) : HttpHost | +| ApacheHttpSSRFVersion5.java:45:42:45:49 | hostSink : String | semmle.label | hostSink : String | +| ApacheHttpSSRFVersion5.java:48:54:48:57 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:49:54:49:56 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:49:54:49:67 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:50:54:50:56 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:51:48:51:50 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:51:48:51:61 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:52:48:52:50 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:54:38:54:41 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:55:38:55:40 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:55:38:55:51 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:56:38:56:40 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:58:35:58:38 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:59:35:59:37 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:59:35:59:48 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:60:35:60:37 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:62:36:62:39 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:63:36:63:38 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:63:36:63:49 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:64:36:64:38 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:66:39:66:42 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:67:39:67:41 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:67:39:67:52 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:68:39:68:41 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:70:37:70:40 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:71:37:71:39 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:71:37:71:50 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:72:37:72:39 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:74:36:74:39 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:75:36:75:38 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:75:36:75:49 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:76:36:76:38 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:78:35:78:38 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:79:35:79:37 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:79:35:79:48 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:80:35:80:37 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:82:37:82:40 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:83:37:83:39 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:83:37:83:50 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:84:37:84:39 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:87:51:87:54 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:88:51:88:53 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:91:51:91:54 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:92:51:92:53 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:93:45:93:48 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:94:45:94:47 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:96:54:96:57 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:97:54:97:56 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:98:48:98:50 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:98:48:98:61 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:99:48:99:50 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:102:55:102:58 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:103:55:103:57 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:103:55:103:68 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:104:55:104:57 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:105:49:105:51 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:105:49:105:62 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:106:49:106:51 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:108:39:108:42 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:109:39:109:41 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:109:39:109:52 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:110:39:110:41 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:112:36:112:39 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:113:36:113:38 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:113:36:113:49 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:114:36:114:38 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:116:37:116:40 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:117:37:117:39 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:117:37:117:50 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:118:37:118:39 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:120:40:120:43 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:121:40:121:42 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:121:40:121:53 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:122:40:122:42 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:124:38:124:41 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:125:38:125:40 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:125:38:125:51 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:126:38:126:40 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:128:37:128:40 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:129:37:129:39 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:129:37:129:50 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:130:37:130:39 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:132:36:132:39 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:133:36:133:38 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:133:36:133:49 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:134:36:134:38 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:136:38:136:41 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:137:38:137:40 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:137:38:137:51 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:138:38:138:40 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:141:41:141:43 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:141:41:141:54 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:142:41:142:43 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:144:38:144:40 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:144:38:144:51 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:145:38:145:40 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:147:39:147:41 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:147:39:147:52 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:148:39:148:41 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:150:42:150:44 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:150:42:150:55 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:151:42:151:44 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:153:40:153:42 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:153:40:153:53 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:154:40:154:42 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:156:39:156:41 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:156:39:156:52 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:157:39:157:41 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:159:38:159:40 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:159:38:159:51 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:160:38:160:40 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:162:52:162:55 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:164:47:164:49 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:164:47:164:60 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:165:47:165:49 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:167:40:167:42 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:167:40:167:53 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:168:40:168:42 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:180:30:180:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ApacheHttpSSRFVersion5.java:181:23:181:38 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| ApacheHttpSSRFVersion5.java:181:31:181:37 | uriSink : String | semmle.label | uriSink : String | +| ApacheHttpSSRFVersion5.java:184:56:184:58 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:184:56:184:69 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:185:56:185:58 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:186:50:186:52 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:186:50:186:63 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:187:50:187:52 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:189:40:189:42 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:189:40:189:53 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:190:40:190:42 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:192:37:192:39 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:192:37:192:50 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:193:37:193:39 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:195:38:195:40 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:195:38:195:51 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:196:38:196:40 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:198:41:198:43 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:198:41:198:54 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:199:41:199:43 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:201:39:201:41 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:201:39:201:52 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:202:39:202:41 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:204:38:204:40 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:204:38:204:51 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:205:38:205:40 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:207:37:207:39 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:207:37:207:50 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:208:37:208:39 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:210:39:210:41 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:210:39:210:52 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:211:39:211:41 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:214:28:214:30 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:214:28:214:41 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:215:28:215:30 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:217:25:217:27 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:217:25:217:38 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:218:25:218:27 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:220:26:220:28 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:220:26:220:39 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:221:26:221:28 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:223:29:223:31 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:223:29:223:42 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:224:29:224:31 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:226:27:226:29 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:226:27:226:40 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:227:27:227:29 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:229:26:229:28 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:229:26:229:39 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:230:26:230:28 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:232:25:232:27 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:232:25:232:38 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:233:25:233:27 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:235:27:235:29 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:235:27:235:40 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:236:27:236:29 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:239:46:239:48 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:251:30:251:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ApacheHttpSSRFVersion5.java:252:23:252:38 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| ApacheHttpSSRFVersion5.java:252:31:252:37 | uriSink : String | semmle.label | uriSink : String | +| ApacheHttpSSRFVersion5.java:255:44:255:46 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:256:38:256:40 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:256:38:256:51 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:257:38:257:40 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:259:28:259:30 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:259:28:259:41 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:260:28:260:30 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:262:25:262:27 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:262:25:262:38 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:263:25:263:27 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:265:26:265:28 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:265:26:265:39 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:266:26:266:28 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:268:29:268:31 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:268:29:268:42 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:269:29:269:31 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:271:27:271:29 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:271:27:271:40 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:272:27:272:29 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:274:26:274:28 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:274:26:274:39 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:275:26:275:28 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:277:25:277:27 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:277:25:277:38 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:278:25:278:27 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:280:27:280:29 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:280:27:280:40 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:281:27:281:29 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:295:30:295:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ApacheHttpSSRFVersion5.java:296:23:296:38 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| ApacheHttpSSRFVersion5.java:296:31:296:37 | uriSink : String | semmle.label | uriSink : String | +| ApacheHttpSSRFVersion5.java:298:31:298:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ApacheHttpSSRFVersion5.java:299:29:299:50 | new HttpHost(...) : HttpHost | semmle.label | new HttpHost(...) : HttpHost | +| ApacheHttpSSRFVersion5.java:299:42:299:49 | hostSink : String | semmle.label | hostSink : String | +| ApacheHttpSSRFVersion5.java:303:34:303:37 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:304:34:304:37 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:308:60:308:62 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:308:60:308:73 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:309:60:309:62 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:313:53:313:55 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:313:53:313:66 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:314:53:314:55 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:326:30:326:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ApacheHttpSSRFVersion5.java:327:23:327:38 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| ApacheHttpSSRFVersion5.java:327:31:327:37 | uriSink : String | semmle.label | uriSink : String | +| ApacheHttpSSRFVersion5.java:329:31:329:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ApacheHttpSSRFVersion5.java:330:29:330:50 | new HttpHost(...) : HttpHost | semmle.label | new HttpHost(...) : HttpHost | +| ApacheHttpSSRFVersion5.java:330:42:330:49 | hostSink : String | semmle.label | hostSink : String | +| ApacheHttpSSRFVersion5.java:333:42:333:44 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:333:42:333:55 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:334:42:334:44 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:336:39:336:41 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:336:39:336:52 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:337:39:337:41 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:339:40:339:42 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:339:40:339:53 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:340:40:340:42 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:342:43:342:45 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:342:43:342:56 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:343:43:343:45 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:345:41:345:43 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:345:41:345:54 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:346:41:346:43 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:348:40:348:42 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:348:40:348:53 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:349:40:349:42 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:351:39:351:41 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:351:39:351:52 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:352:39:352:41 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:354:53:354:56 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:356:48:356:50 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:356:48:356:61 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:357:48:357:50 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:359:41:359:43 | uri : URI | semmle.label | uri : URI | +| ApacheHttpSSRFVersion5.java:359:41:359:54 | toString(...) | semmle.label | toString(...) | +| ApacheHttpSSRFVersion5.java:360:41:360:43 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:372:30:372:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ApacheHttpSSRFVersion5.java:373:23:373:38 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| ApacheHttpSSRFVersion5.java:373:31:373:37 | uriSink : String | semmle.label | uriSink : String | +| ApacheHttpSSRFVersion5.java:375:31:375:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ApacheHttpSSRFVersion5.java:376:29:376:50 | new HttpHost(...) : HttpHost | semmle.label | new HttpHost(...) : HttpHost | +| ApacheHttpSSRFVersion5.java:376:42:376:49 | hostSink : String | semmle.label | hostSink : String | +| ApacheHttpSSRFVersion5.java:379:57:379:60 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:380:57:380:59 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:381:51:381:54 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:382:51:382:53 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:385:50:385:53 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:386:50:386:52 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:387:44:387:47 | host | semmle.label | host | +| ApacheHttpSSRFVersion5.java:388:44:388:46 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:390:24:390:26 | uri | semmle.label | uri | +| ApacheHttpSSRFVersion5.java:394:24:394:26 | uri | semmle.label | uri | +| JakartaWsSSRF.java:14:22:14:48 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JakartaWsSSRF.java:15:23:15:25 | url | semmle.label | url | +| JavaNetHttpSSRF.java:25:27:25:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JavaNetHttpSSRF.java:26:23:26:35 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| JavaNetHttpSSRF.java:26:31:26:34 | sink : String | semmle.label | sink : String | +| JavaNetHttpSSRF.java:27:24:27:57 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| JavaNetHttpSSRF.java:27:40:27:43 | sink : String | semmle.label | sink : String | +| JavaNetHttpSSRF.java:28:24:28:36 | new URL(...) : URL | semmle.label | new URL(...) : URL | +| JavaNetHttpSSRF.java:28:32:28:35 | sink : String | semmle.label | sink : String | +| JavaNetHttpSSRF.java:30:32:30:35 | url1 | semmle.label | url1 | +| JavaNetHttpSSRF.java:33:32:33:35 | url1 | semmle.label | url1 | +| JavaNetHttpSSRF.java:34:30:34:33 | url1 | semmle.label | url1 | +| JavaNetHttpSSRF.java:38:65:38:68 | uri2 | semmle.label | uri2 | +| JavaNetHttpSSRF.java:39:59:39:61 | uri | semmle.label | uri | +| JaxWsSSRF.java:14:22:14:48 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JaxWsSSRF.java:15:23:15:25 | url | semmle.label | url | +| JdbcUrlSSRF.java:21:26:21:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JdbcUrlSSRF.java:26:28:26:34 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:28:41:28:47 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:29:41:29:47 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:30:41:30:47 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:32:27:32:33 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:40:26:40:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JdbcUrlSSRF.java:43:27:43:33 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:48:23:48:29 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:52:9:52:13 | props : Properties | semmle.label | props : Properties | +| JdbcUrlSSRF.java:52:9:52:13 | props [post update] : Properties [] : String | semmle.label | props [post update] : Properties [] : String | +| JdbcUrlSSRF.java:52:38:52:44 | jdbcUrl : String | semmle.label | jdbcUrl : String | +| JdbcUrlSSRF.java:54:49:54:53 | props | semmle.label | props | +| JdbcUrlSSRF.java:60:26:60:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JdbcUrlSSRF.java:65:27:65:33 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:67:75:67:81 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:70:75:70:81 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:73:75:73:81 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:80:26:80:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JdbcUrlSSRF.java:82:21:82:27 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:83:21:83:27 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:84:21:84:27 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:86:19:86:25 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:87:19:87:25 | jdbcUrl | semmle.label | jdbcUrl | +| JdbcUrlSSRF.java:88:19:88:25 | jdbcUrl | semmle.label | jdbcUrl | +| ReactiveWebClientSSRF.java:15:26:15:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ReactiveWebClientSSRF.java:16:52:16:54 | url | semmle.label | url | +| ReactiveWebClientSSRF.java:32:26:32:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| ReactiveWebClientSSRF.java:35:30:35:32 | url | semmle.label | url | +| SanitizationTests.java:19:23:19:58 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SanitizationTests.java:19:31:19:57 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| SanitizationTests.java:22:29:22:55 | newBuilder(...) : Builder | semmle.label | newBuilder(...) : Builder | +| SanitizationTests.java:22:29:22:63 | build(...) : HttpRequest | semmle.label | build(...) : HttpRequest | +| SanitizationTests.java:22:52:22:54 | uri | semmle.label | uri | +| SanitizationTests.java:22:52:22:54 | uri : URI | semmle.label | uri : URI | +| SanitizationTests.java:23:25:23:25 | r | semmle.label | r | +| SanitizationTests.java:75:33:75:63 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| SanitizationTests.java:76:36:76:78 | newBuilder(...) : Builder | semmle.label | newBuilder(...) : Builder | +| SanitizationTests.java:76:36:76:86 | build(...) : HttpRequest | semmle.label | build(...) : HttpRequest | +| SanitizationTests.java:76:59:76:77 | new URI(...) | semmle.label | new URI(...) | +| SanitizationTests.java:76:59:76:77 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SanitizationTests.java:76:67:76:76 | unsafeUri3 : String | semmle.label | unsafeUri3 : String | +| SanitizationTests.java:77:25:77:32 | unsafer3 | semmle.label | unsafer3 | +| SanitizationTests.java:79:49:79:79 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| SanitizationTests.java:80:36:80:78 | newBuilder(...) : Builder | semmle.label | newBuilder(...) : Builder | +| SanitizationTests.java:80:36:80:86 | build(...) : HttpRequest | semmle.label | build(...) : HttpRequest | +| SanitizationTests.java:80:59:80:77 | new URI(...) | semmle.label | new URI(...) | +| SanitizationTests.java:80:59:80:77 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SanitizationTests.java:80:67:80:76 | unsafeUri4 : String | semmle.label | unsafeUri4 : String | +| SanitizationTests.java:81:25:81:32 | unsafer4 | semmle.label | unsafer4 | +| SanitizationTests.java:84:13:84:22 | unsafeUri5 [post update] : StringBuilder | semmle.label | unsafeUri5 [post update] : StringBuilder | +| SanitizationTests.java:84:31:84:61 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| SanitizationTests.java:85:36:85:89 | newBuilder(...) : Builder | semmle.label | newBuilder(...) : Builder | +| SanitizationTests.java:85:36:85:97 | build(...) : HttpRequest | semmle.label | build(...) : HttpRequest | +| SanitizationTests.java:85:59:85:88 | new URI(...) | semmle.label | new URI(...) | +| SanitizationTests.java:85:59:85:88 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SanitizationTests.java:85:67:85:76 | unsafeUri5 : StringBuilder | semmle.label | unsafeUri5 : StringBuilder | +| SanitizationTests.java:85:67:85:87 | toString(...) : String | semmle.label | toString(...) : String | +| SanitizationTests.java:86:25:86:32 | unsafer5 | semmle.label | unsafer5 | +| SanitizationTests.java:88:40:88:87 | new StringBuilder(...) : StringBuilder | semmle.label | new StringBuilder(...) : StringBuilder | +| SanitizationTests.java:88:58:88:86 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| SanitizationTests.java:90:37:90:90 | newBuilder(...) : Builder | semmle.label | newBuilder(...) : Builder | +| SanitizationTests.java:90:37:90:98 | build(...) : HttpRequest | semmle.label | build(...) : HttpRequest | +| SanitizationTests.java:90:60:90:89 | new URI(...) | semmle.label | new URI(...) | +| SanitizationTests.java:90:60:90:89 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SanitizationTests.java:90:68:90:77 | unafeUri5a : StringBuilder | semmle.label | unafeUri5a : StringBuilder | +| SanitizationTests.java:90:68:90:88 | toString(...) : String | semmle.label | toString(...) : String | +| SanitizationTests.java:91:25:91:33 | unsafer5a | semmle.label | unsafer5a | +| SanitizationTests.java:93:41:93:105 | append(...) : StringBuilder | semmle.label | append(...) : StringBuilder | +| SanitizationTests.java:93:42:93:89 | new StringBuilder(...) : StringBuilder | semmle.label | new StringBuilder(...) : StringBuilder | +| SanitizationTests.java:93:60:93:88 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| SanitizationTests.java:95:37:95:91 | newBuilder(...) : Builder | semmle.label | newBuilder(...) : Builder | +| SanitizationTests.java:95:37:95:99 | build(...) : HttpRequest | semmle.label | build(...) : HttpRequest | +| SanitizationTests.java:95:60:95:90 | new URI(...) | semmle.label | new URI(...) | +| SanitizationTests.java:95:60:95:90 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SanitizationTests.java:95:68:95:78 | unsafeUri5b : StringBuilder | semmle.label | unsafeUri5b : StringBuilder | +| SanitizationTests.java:95:68:95:89 | toString(...) : String | semmle.label | toString(...) : String | +| SanitizationTests.java:96:25:96:33 | unsafer5b | semmle.label | unsafer5b | +| SanitizationTests.java:98:41:98:106 | append(...) : StringBuilder | semmle.label | append(...) : StringBuilder | +| SanitizationTests.java:98:77:98:105 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| SanitizationTests.java:100:37:100:91 | newBuilder(...) : Builder | semmle.label | newBuilder(...) : Builder | +| SanitizationTests.java:100:37:100:99 | build(...) : HttpRequest | semmle.label | build(...) : HttpRequest | +| SanitizationTests.java:100:60:100:90 | new URI(...) | semmle.label | new URI(...) | +| SanitizationTests.java:100:60:100:90 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SanitizationTests.java:100:68:100:78 | unsafeUri5c : StringBuilder | semmle.label | unsafeUri5c : StringBuilder | +| SanitizationTests.java:100:68:100:89 | toString(...) : String | semmle.label | toString(...) : String | +| SanitizationTests.java:101:25:101:33 | unsafer5c | semmle.label | unsafer5c | +| SanitizationTests.java:103:33:103:104 | format(...) : String | semmle.label | format(...) : String | +| SanitizationTests.java:103:33:103:104 | new ..[] { .. } : Object[] [[]] : String | semmle.label | new ..[] { .. } : Object[] [[]] : String | +| SanitizationTests.java:103:73:103:103 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| SanitizationTests.java:104:36:104:78 | newBuilder(...) : Builder | semmle.label | newBuilder(...) : Builder | +| SanitizationTests.java:104:36:104:86 | build(...) : HttpRequest | semmle.label | build(...) : HttpRequest | +| SanitizationTests.java:104:59:104:77 | new URI(...) | semmle.label | new URI(...) | +| SanitizationTests.java:104:59:104:77 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SanitizationTests.java:104:67:104:76 | unsafeUri6 : String | semmle.label | unsafeUri6 : String | +| SanitizationTests.java:105:25:105:32 | unsafer6 | semmle.label | unsafer6 | +| SanitizationTests.java:107:33:107:110 | format(...) : String | semmle.label | format(...) : String | +| SanitizationTests.java:107:33:107:110 | new ..[] { .. } : Object[] [[]] : String | semmle.label | new ..[] { .. } : Object[] [[]] : String | +| SanitizationTests.java:107:56:107:86 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| SanitizationTests.java:108:36:108:78 | newBuilder(...) : Builder | semmle.label | newBuilder(...) : Builder | +| SanitizationTests.java:108:36:108:86 | build(...) : HttpRequest | semmle.label | build(...) : HttpRequest | +| SanitizationTests.java:108:59:108:77 | new URI(...) | semmle.label | new URI(...) | +| SanitizationTests.java:108:59:108:77 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SanitizationTests.java:108:67:108:76 | unsafeUri7 : String | semmle.label | unsafeUri7 : String | +| SanitizationTests.java:109:25:109:32 | unsafer7 | semmle.label | unsafer7 | +| SanitizationTests.java:111:33:111:110 | format(...) : String | semmle.label | format(...) : String | +| SanitizationTests.java:111:33:111:110 | new ..[] { .. } : Object[] [[]] : String | semmle.label | new ..[] { .. } : Object[] [[]] : String | +| SanitizationTests.java:111:55:111:85 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| SanitizationTests.java:112:36:112:78 | newBuilder(...) : Builder | semmle.label | newBuilder(...) : Builder | +| SanitizationTests.java:112:36:112:86 | build(...) : HttpRequest | semmle.label | build(...) : HttpRequest | +| SanitizationTests.java:112:59:112:77 | new URI(...) | semmle.label | new URI(...) | +| SanitizationTests.java:112:59:112:77 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SanitizationTests.java:112:67:112:76 | unsafeUri8 : String | semmle.label | unsafeUri8 : String | +| SanitizationTests.java:113:25:113:32 | unsafer8 | semmle.label | unsafer8 | +| SanitizationTests.java:115:33:115:63 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| SanitizationTests.java:116:36:116:78 | newBuilder(...) : Builder | semmle.label | newBuilder(...) : Builder | +| SanitizationTests.java:116:36:116:86 | build(...) : HttpRequest | semmle.label | build(...) : HttpRequest | +| SanitizationTests.java:116:59:116:77 | new URI(...) | semmle.label | new URI(...) | +| SanitizationTests.java:116:59:116:77 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SanitizationTests.java:116:67:116:76 | unsafeUri9 : String | semmle.label | unsafeUri9 : String | +| SanitizationTests.java:117:25:117:32 | unsafer9 | semmle.label | unsafer9 | +| SanitizationTests.java:119:34:119:126 | format(...) : String | semmle.label | format(...) : String | +| SanitizationTests.java:119:34:119:126 | new ..[] { .. } : Object[] [[]] : String | semmle.label | new ..[] { .. } : Object[] [[]] : String | +| SanitizationTests.java:119:94:119:125 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| SanitizationTests.java:120:37:120:80 | newBuilder(...) : Builder | semmle.label | newBuilder(...) : Builder | +| SanitizationTests.java:120:37:120:88 | build(...) : HttpRequest | semmle.label | build(...) : HttpRequest | +| SanitizationTests.java:120:60:120:79 | new URI(...) | semmle.label | new URI(...) | +| SanitizationTests.java:120:60:120:79 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SanitizationTests.java:120:68:120:78 | unsafeUri10 : String | semmle.label | unsafeUri10 : String | +| SanitizationTests.java:121:25:121:33 | unsafer10 | semmle.label | unsafer10 | +| SpringSSRF.java:28:33:28:60 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| SpringSSRF.java:32:39:32:59 | ... + ... | semmle.label | ... + ... | +| SpringSSRF.java:33:35:33:48 | fooResourceUrl | semmle.label | fooResourceUrl | +| SpringSSRF.java:34:34:34:47 | fooResourceUrl | semmle.label | fooResourceUrl | +| SpringSSRF.java:35:39:35:52 | fooResourceUrl | semmle.label | fooResourceUrl | +| SpringSSRF.java:36:69:36:82 | fooResourceUrl | semmle.label | fooResourceUrl | +| SpringSSRF.java:37:73:37:86 | fooResourceUrl | semmle.label | fooResourceUrl | +| SpringSSRF.java:40:69:40:97 | of(...) | semmle.label | of(...) | +| SpringSSRF.java:40:83:40:96 | fooResourceUrl : String | semmle.label | fooResourceUrl : String | +| SpringSSRF.java:42:69:42:119 | of(...) | semmle.label | of(...) | +| SpringSSRF.java:42:105:42:118 | fooResourceUrl : String | semmle.label | fooResourceUrl : String | +| SpringSSRF.java:44:41:44:54 | fooResourceUrl | semmle.label | fooResourceUrl | +| SpringSSRF.java:45:40:45:62 | new URI(...) | semmle.label | new URI(...) | +| SpringSSRF.java:45:48:45:61 | fooResourceUrl : String | semmle.label | fooResourceUrl : String | +| SpringSSRF.java:46:42:46:55 | fooResourceUrl | semmle.label | fooResourceUrl | +| SpringSSRF.java:47:40:47:53 | fooResourceUrl | semmle.label | fooResourceUrl | +| SpringSSRF.java:48:30:48:43 | fooResourceUrl | semmle.label | fooResourceUrl | +| SpringSSRF.java:49:33:49:46 | fooResourceUrl | semmle.label | fooResourceUrl | +| SpringSSRF.java:50:41:50:54 | fooResourceUrl | semmle.label | fooResourceUrl | +| SpringSSRF.java:51:42:51:55 | fooResourceUrl | semmle.label | fooResourceUrl | +| SpringSSRF.java:54:27:54:49 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SpringSSRF.java:54:35:54:48 | fooResourceUrl : String | semmle.label | fooResourceUrl : String | +| SpringSSRF.java:56:44:56:46 | uri | semmle.label | uri | +| SpringSSRF.java:58:35:58:37 | uri | semmle.label | uri | +| SpringSSRF.java:59:35:59:37 | uri | semmle.label | uri | +| SpringSSRF.java:60:38:60:40 | uri | semmle.label | uri | +| SpringSSRF.java:61:39:61:41 | uri | semmle.label | uri | +| SpringSSRF.java:62:37:62:39 | uri | semmle.label | uri | +| SpringSSRF.java:63:36:63:38 | uri | semmle.label | uri | +| SpringSSRF.java:64:44:64:46 | uri | semmle.label | uri | +| SpringSSRF.java:67:27:67:49 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| SpringSSRF.java:67:35:67:48 | fooResourceUrl : String | semmle.label | fooResourceUrl : String | +| SpringSSRF.java:70:49:70:51 | uri | semmle.label | uri | +| SpringSSRF.java:71:58:71:60 | uri | semmle.label | uri | +| SpringSSRF.java:72:57:72:59 | uri | semmle.label | uri | +| SpringSSRF.java:73:66:73:68 | uri | semmle.label | uri | +| SpringSSRF.java:74:57:74:59 | uri | semmle.label | uri | +| SpringSSRF.java:75:66:75:68 | uri | semmle.label | uri | +| URLClassLoaderSSRF.java:16:26:16:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| URLClassLoaderSSRF.java:17:23:17:34 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| URLClassLoaderSSRF.java:17:31:17:33 | url : String | semmle.label | url : String | +| URLClassLoaderSSRF.java:18:64:18:85 | new URL[] | semmle.label | new URL[] | +| URLClassLoaderSSRF.java:18:64:18:85 | {...} : URL[] [[]] : URL | semmle.label | {...} : URL[] [[]] : URL | +| URLClassLoaderSSRF.java:18:74:18:76 | uri : URI | semmle.label | uri : URI | +| URLClassLoaderSSRF.java:18:74:18:84 | toURL(...) : URL | semmle.label | toURL(...) : URL | +| URLClassLoaderSSRF.java:28:26:28:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| URLClassLoaderSSRF.java:29:23:29:34 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| URLClassLoaderSSRF.java:29:31:29:33 | url : String | semmle.label | url : String | +| URLClassLoaderSSRF.java:30:64:30:85 | new URL[] | semmle.label | new URL[] | +| URLClassLoaderSSRF.java:30:64:30:85 | {...} : URL[] [[]] : URL | semmle.label | {...} : URL[] [[]] : URL | +| URLClassLoaderSSRF.java:30:74:30:76 | uri : URI | semmle.label | uri : URI | +| URLClassLoaderSSRF.java:30:74:30:84 | toURL(...) : URL | semmle.label | toURL(...) : URL | +| URLClassLoaderSSRF.java:40:26:40:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| URLClassLoaderSSRF.java:41:23:41:34 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| URLClassLoaderSSRF.java:41:31:41:33 | url : String | semmle.label | url : String | +| URLClassLoaderSSRF.java:44:64:44:85 | new URL[] | semmle.label | new URL[] | +| URLClassLoaderSSRF.java:44:64:44:85 | {...} : URL[] [[]] : URL | semmle.label | {...} : URL[] [[]] : URL | +| URLClassLoaderSSRF.java:44:74:44:76 | uri : URI | semmle.label | uri : URI | +| URLClassLoaderSSRF.java:44:74:44:84 | toURL(...) : URL | semmle.label | toURL(...) : URL | +| URLClassLoaderSSRF.java:54:26:54:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| URLClassLoaderSSRF.java:55:23:55:34 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| URLClassLoaderSSRF.java:55:31:55:33 | url : String | semmle.label | url : String | +| URLClassLoaderSSRF.java:56:72:56:93 | new URL[] | semmle.label | new URL[] | +| URLClassLoaderSSRF.java:56:72:56:93 | {...} : URL[] [[]] : URL | semmle.label | {...} : URL[] [[]] : URL | +| URLClassLoaderSSRF.java:56:82:56:84 | uri : URI | semmle.label | uri : URI | +| URLClassLoaderSSRF.java:56:82:56:92 | toURL(...) : URL | semmle.label | toURL(...) : URL | +| URLClassLoaderSSRF.java:66:26:66:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| URLClassLoaderSSRF.java:67:23:67:34 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| URLClassLoaderSSRF.java:67:31:67:33 | url : String | semmle.label | url : String | +| URLClassLoaderSSRF.java:70:21:70:42 | new URL[] | semmle.label | new URL[] | +| URLClassLoaderSSRF.java:70:21:70:42 | {...} : URL[] [[]] : URL | semmle.label | {...} : URL[] [[]] : URL | +| URLClassLoaderSSRF.java:70:31:70:33 | uri : URI | semmle.label | uri : URI | +| URLClassLoaderSSRF.java:70:31:70:41 | toURL(...) : URL | semmle.label | toURL(...) : URL | +| URLClassLoaderSSRF.java:83:26:83:52 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| URLClassLoaderSSRF.java:84:23:84:34 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| URLClassLoaderSSRF.java:84:31:84:33 | url : String | semmle.label | url : String | +| URLClassLoaderSSRF.java:89:21:89:42 | new URL[] | semmle.label | new URL[] | +| URLClassLoaderSSRF.java:89:21:89:42 | {...} : URL[] [[]] : URL | semmle.label | {...} : URL[] [[]] : URL | +| URLClassLoaderSSRF.java:89:31:89:33 | uri : URI | semmle.label | uri : URI | +| URLClassLoaderSSRF.java:89:31:89:41 | toURL(...) : URL | semmle.label | toURL(...) : URL | +| mad/Test.java:26:16:26:41 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| mad/Test.java:31:24:31:47 | (...)... | semmle.label | (...)... | +| mad/Test.java:31:40:31:47 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:36:10:36:23 | (...)... | semmle.label | (...)... | +| mad/Test.java:36:16:36:23 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:38:28:38:43 | (...)... | semmle.label | (...)... | +| mad/Test.java:38:36:38:43 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:40:10:40:23 | (...)... | semmle.label | (...)... | +| mad/Test.java:40:16:40:23 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:45:32:45:47 | (...)... | semmle.label | (...)... | +| mad/Test.java:45:40:45:47 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:47:32:47:47 | (...)... | semmle.label | (...)... | +| mad/Test.java:47:40:47:47 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:49:28:49:43 | (...)... | semmle.label | (...)... | +| mad/Test.java:49:36:49:43 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:51:28:51:43 | (...)... | semmle.label | (...)... | +| mad/Test.java:51:36:51:43 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:53:28:53:43 | (...)... | semmle.label | (...)... | +| mad/Test.java:53:36:53:43 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:55:36:55:51 | (...)... | semmle.label | (...)... | +| mad/Test.java:55:44:55:51 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:57:32:57:45 | (...)... | semmle.label | (...)... | +| mad/Test.java:57:38:57:45 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:59:38:59:51 | (...)... | semmle.label | (...)... | +| mad/Test.java:59:44:59:51 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:61:47:61:60 | (...)... | semmle.label | (...)... | +| mad/Test.java:61:53:61:60 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:63:26:63:39 | (...)... | semmle.label | (...)... | +| mad/Test.java:63:32:63:39 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:65:38:65:51 | (...)... | semmle.label | (...)... | +| mad/Test.java:65:44:65:51 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:67:26:67:39 | (...)... | semmle.label | (...)... | +| mad/Test.java:67:32:67:39 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:69:27:69:40 | (...)... | semmle.label | (...)... | +| mad/Test.java:69:33:69:40 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:71:47:71:60 | (...)... | semmle.label | (...)... | +| mad/Test.java:71:53:71:60 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:74:50:74:65 | (...)... | semmle.label | (...)... | +| mad/Test.java:74:58:74:65 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:76:50:76:69 | (...)... | semmle.label | (...)... | +| mad/Test.java:76:62:76:69 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:78:43:78:59 | (...)... | semmle.label | (...)... | +| mad/Test.java:78:52:78:59 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:80:25:80:41 | (...)... | semmle.label | (...)... | +| mad/Test.java:80:34:80:41 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:82:31:82:47 | (...)... | semmle.label | (...)... | +| mad/Test.java:82:40:82:47 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:84:31:84:47 | (...)... | semmle.label | (...)... | +| mad/Test.java:84:40:84:47 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:86:41:86:57 | (...)... | semmle.label | (...)... | +| mad/Test.java:86:50:86:57 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:92:24:92:40 | (...)... | semmle.label | (...)... | +| mad/Test.java:92:33:92:40 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:97:29:97:42 | (...)... | semmle.label | (...)... | +| mad/Test.java:97:35:97:42 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:102:26:102:39 | (...)... | semmle.label | (...)... | +| mad/Test.java:102:32:102:39 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:107:15:107:31 | (...)... | semmle.label | (...)... | +| mad/Test.java:107:24:107:31 | source(...) : String | semmle.label | source(...) : String | +| mad/Test.java:112:15:112:31 | (...)... | semmle.label | (...)... | +| mad/Test.java:112:24:112:31 | source(...) : String | semmle.label | source(...) : String | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-918/RequestForgery.ql b/java/ql/test/query-tests/security/CWE-918/RequestForgery.ql deleted file mode 100644 index 971a9532bd6f..000000000000 --- a/java/ql/test/query-tests/security/CWE-918/RequestForgery.ql +++ /dev/null @@ -1,19 +0,0 @@ -import java -import semmle.code.java.security.RequestForgeryConfig -import utils.test.InlineExpectationsTest - -module HasFlowTest implements TestSig { - string getARelevantTag() { result = "SSRF" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "SSRF" and - exists(DataFlow::Node sink | - RequestForgeryFlow::flowTo(sink) and - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-918/RequestForgery.qlref b/java/ql/test/query-tests/security/CWE-918/RequestForgery.qlref new file mode 100644 index 000000000000..be2312049e7d --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-918/RequestForgery.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-918/RequestForgery.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-918/SanitizationTests.java b/java/ql/test/query-tests/security/CWE-918/SanitizationTests.java index 33df1a586308..03a61cfcf97d 100644 --- a/java/ql/test/query-tests/security/CWE-918/SanitizationTests.java +++ b/java/ql/test/query-tests/security/CWE-918/SanitizationTests.java @@ -16,11 +16,11 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - URI uri = new URI(request.getParameter("uri")); + URI uri = new URI(request.getParameter("uri")); // $ Source // BAD: a request parameter is incorporated without validation into a Http // request - HttpRequest r = HttpRequest.newBuilder(uri).build(); // $ SSRF - client.send(r, null); // $ SSRF + HttpRequest r = HttpRequest.newBuilder(uri).build(); // $ Alert + client.send(r, null); // $ Alert // GOOD: sanitisation by concatenation with a prefix that prevents targeting an arbitrary host. // We test a few different ways of sanitisation: via string conctentation (perhaps nested), @@ -72,55 +72,55 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) // BAD: cases where a string that would sanitise is used, but occurs in the wrong // place to sanitise user input: - String unsafeUri3 = request.getParameter("baduri3") + "https://example.com/"; - HttpRequest unsafer3 = HttpRequest.newBuilder(new URI(unsafeUri3)).build(); // $ SSRF - client.send(unsafer3, null); // $ SSRF + String unsafeUri3 = request.getParameter("baduri3") + "https://example.com/"; // $ Source + HttpRequest unsafer3 = HttpRequest.newBuilder(new URI(unsafeUri3)).build(); // $ Alert + client.send(unsafer3, null); // $ Alert - String unsafeUri4 = ("someprefix" + request.getParameter("baduri4")) + "https://example.com/"; - HttpRequest unsafer4 = HttpRequest.newBuilder(new URI(unsafeUri4)).build(); // $ SSRF - client.send(unsafer4, null); // $ SSRF + String unsafeUri4 = ("someprefix" + request.getParameter("baduri4")) + "https://example.com/"; // $ Source + HttpRequest unsafer4 = HttpRequest.newBuilder(new URI(unsafeUri4)).build(); // $ Alert + client.send(unsafer4, null); // $ Alert StringBuilder unsafeUri5 = new StringBuilder(); - unsafeUri5.append(request.getParameter("baduri5")).append("https://example.com/"); - HttpRequest unsafer5 = HttpRequest.newBuilder(new URI(unsafeUri5.toString())).build(); // $ SSRF - client.send(unsafer5, null); // $ SSRF + unsafeUri5.append(request.getParameter("baduri5")).append("https://example.com/"); // $ Source + HttpRequest unsafer5 = HttpRequest.newBuilder(new URI(unsafeUri5.toString())).build(); // $ Alert + client.send(unsafer5, null); // $ Alert - StringBuilder unafeUri5a = new StringBuilder(request.getParameter("uri5a")); + StringBuilder unafeUri5a = new StringBuilder(request.getParameter("uri5a")); // $ Source unafeUri5a.append("https://example.com/"); - HttpRequest unsafer5a = HttpRequest.newBuilder(new URI(unafeUri5a.toString())).build(); // $ SSRF - client.send(unsafer5a, null); // $ SSRF + HttpRequest unsafer5a = HttpRequest.newBuilder(new URI(unafeUri5a.toString())).build(); // $ Alert + client.send(unsafer5a, null); // $ Alert - StringBuilder unsafeUri5b = (new StringBuilder(request.getParameter("uri5b"))).append("dir/"); + StringBuilder unsafeUri5b = (new StringBuilder(request.getParameter("uri5b"))).append("dir/"); // $ Source unsafeUri5b.append("https://example.com/"); - HttpRequest unsafer5b = HttpRequest.newBuilder(new URI(unsafeUri5b.toString())).build(); // $ SSRF - client.send(unsafer5b, null); // $ SSRF + HttpRequest unsafer5b = HttpRequest.newBuilder(new URI(unsafeUri5b.toString())).build(); // $ Alert + client.send(unsafer5b, null); // $ Alert - StringBuilder unsafeUri5c = (new StringBuilder("https")).append(request.getParameter("uri5c")); + StringBuilder unsafeUri5c = (new StringBuilder("https")).append(request.getParameter("uri5c")); // $ Source unsafeUri5c.append("://example.com/dir/"); - HttpRequest unsafer5c = HttpRequest.newBuilder(new URI(unsafeUri5c.toString())).build(); // $ SSRF - client.send(unsafer5c, null); // $ SSRF + HttpRequest unsafer5c = HttpRequest.newBuilder(new URI(unsafeUri5c.toString())).build(); // $ Alert + client.send(unsafer5c, null); // $ Alert - String unsafeUri6 = String.format("%shttps://example.com/", request.getParameter("baduri6")); - HttpRequest unsafer6 = HttpRequest.newBuilder(new URI(unsafeUri6)).build(); // $ SSRF - client.send(unsafer6, null); // $ SSRF + String unsafeUri6 = String.format("%shttps://example.com/", request.getParameter("baduri6")); // $ Source + HttpRequest unsafer6 = HttpRequest.newBuilder(new URI(unsafeUri6)).build(); // $ Alert + client.send(unsafer6, null); // $ Alert - String unsafeUri7 = String.format("%s/%s", request.getParameter("baduri7"), "https://example.com"); - HttpRequest unsafer7 = HttpRequest.newBuilder(new URI(unsafeUri7)).build(); // $ SSRF - client.send(unsafer7, null); // $ SSRF + String unsafeUri7 = String.format("%s/%s", request.getParameter("baduri7"), "https://example.com"); // $ Source + HttpRequest unsafer7 = HttpRequest.newBuilder(new URI(unsafeUri7)).build(); // $ Alert + client.send(unsafer7, null); // $ Alert - String unsafeUri8 = String.format("%s%s", request.getParameter("baduri8"), "https://example.com/"); - HttpRequest unsafer8 = HttpRequest.newBuilder(new URI(unsafeUri8)).build(); // $ SSRF - client.send(unsafer8, null); // $ SSRF + String unsafeUri8 = String.format("%s%s", request.getParameter("baduri8"), "https://example.com/"); // $ Source + HttpRequest unsafer8 = HttpRequest.newBuilder(new URI(unsafeUri8)).build(); // $ Alert + client.send(unsafer8, null); // $ Alert - String unsafeUri9 = request.getParameter("baduri9") + "/" + String.format("http://%s", "myserver.com"); - HttpRequest unsafer9 = HttpRequest.newBuilder(new URI(unsafeUri9)).build(); // $ SSRF - client.send(unsafer9, null); // $ SSRF + String unsafeUri9 = request.getParameter("baduri9") + "/" + String.format("http://%s", "myserver.com"); // $ Source + HttpRequest unsafer9 = HttpRequest.newBuilder(new URI(unsafeUri9)).build(); // $ Alert + client.send(unsafer9, null); // $ Alert - String unsafeUri10 = String.format("%s://%s:%s%s", "http", "myserver.com", "80", request.getParameter("baduri10")); - HttpRequest unsafer10 = HttpRequest.newBuilder(new URI(unsafeUri10)).build(); // $ SSRF - client.send(unsafer10, null); // $ SSRF + String unsafeUri10 = String.format("%s://%s:%s%s", "http", "myserver.com", "80", request.getParameter("baduri10")); // $ Source + HttpRequest unsafer10 = HttpRequest.newBuilder(new URI(unsafeUri10)).build(); // $ Alert + client.send(unsafer10, null); // $ Alert } catch (Exception e) { // TODO: handle exception } } -} \ No newline at end of file +} diff --git a/java/ql/test/query-tests/security/CWE-918/SpringSSRF.java b/java/ql/test/query-tests/security/CWE-918/SpringSSRF.java index 895c68eda69a..446e774214dc 100644 --- a/java/ql/test/query-tests/security/CWE-918/SpringSSRF.java +++ b/java/ql/test/query-tests/security/CWE-918/SpringSSRF.java @@ -25,54 +25,54 @@ public class SpringSSRF extends HttpServlet { protected void doGet(HttpServletRequest request2, HttpServletResponse response2) throws ServletException, IOException { - String fooResourceUrl = request2.getParameter("uri");; + String fooResourceUrl = request2.getParameter("uri"); // $ Source RestTemplate restTemplate = new RestTemplate(); HttpEntity request = new HttpEntity<>(new String("bar")); try { - restTemplate.getForEntity(fooResourceUrl + "/1", String.class); // $ SSRF - restTemplate.exchange(fooResourceUrl, HttpMethod.POST, request, String.class); // $ SSRF - restTemplate.execute(fooResourceUrl, HttpMethod.POST, null, null, "test"); // $ SSRF - restTemplate.getForObject(fooResourceUrl, String.class, "test"); // $ SSRF - restTemplate.getForObject("http://{foo}", String.class, fooResourceUrl); // $ SSRF - restTemplate.getForObject("http://{foo}/a/b", String.class, fooResourceUrl); // $ SSRF + restTemplate.getForEntity(fooResourceUrl + "/1", String.class); // $ Alert + restTemplate.exchange(fooResourceUrl, HttpMethod.POST, request, String.class); // $ Alert + restTemplate.execute(fooResourceUrl, HttpMethod.POST, null, null, "test"); // $ Alert + restTemplate.getForObject(fooResourceUrl, String.class, "test"); // $ Alert + restTemplate.getForObject("http://{foo}", String.class, fooResourceUrl); // $ Alert + restTemplate.getForObject("http://{foo}/a/b", String.class, fooResourceUrl); // $ Alert restTemplate.getForObject("http://safe.com/{foo}", String.class, fooResourceUrl); // not bad - the tainted value does not affect the host restTemplate.getForObject("http://{foo}", String.class, "safe.com", fooResourceUrl); // not bad - the tainted value is unused - restTemplate.getForObject("http://{foo}", String.class, Map.of("foo", fooResourceUrl)); // $ SSRF + restTemplate.getForObject("http://{foo}", String.class, Map.of("foo", fooResourceUrl)); // $ Alert restTemplate.getForObject("http://safe.com/{foo}", String.class, Map.of("foo", fooResourceUrl)); // not bad - the tainted value does not affect the host - restTemplate.getForObject("http://{foo}", String.class, Map.of("foo", "safe.com", "unused", fooResourceUrl)); // $ SPURIOUS: SSRF // not bad - the key for the tainted value is unused + restTemplate.getForObject("http://{foo}", String.class, Map.of("foo", "safe.com", "unused", fooResourceUrl)); // $ SPURIOUS: Alert // not bad - the key for the tainted value is unused restTemplate.getForObject("http://{foo}", String.class, Map.of("foo", "safe.com", fooResourceUrl, "unused")); // not bad - the tainted value is in a map key - restTemplate.patchForObject(fooResourceUrl, new String("object"), String.class, "hi"); // $ SSRF - restTemplate.postForEntity(new URI(fooResourceUrl), new String("object"), String.class); // $ SSRF - restTemplate.postForLocation(fooResourceUrl, new String("object")); // $ SSRF - restTemplate.postForObject(fooResourceUrl, new String("object"), String.class); // $ SSRF - restTemplate.put(fooResourceUrl, new String("object")); // $ SSRF - restTemplate.delete(fooResourceUrl); // $ SSRF - restTemplate.headForHeaders(fooResourceUrl); // $ SSRF - restTemplate.optionsForAllow(fooResourceUrl); // $ SSRF + restTemplate.patchForObject(fooResourceUrl, new String("object"), String.class, "hi"); // $ Alert + restTemplate.postForEntity(new URI(fooResourceUrl), new String("object"), String.class); // $ Alert + restTemplate.postForLocation(fooResourceUrl, new String("object")); // $ Alert + restTemplate.postForObject(fooResourceUrl, new String("object"), String.class); // $ Alert + restTemplate.put(fooResourceUrl, new String("object")); // $ Alert + restTemplate.delete(fooResourceUrl); // $ Alert + restTemplate.headForHeaders(fooResourceUrl); // $ Alert + restTemplate.optionsForAllow(fooResourceUrl); // $ Alert { String body = new String("body"); URI uri = new URI(fooResourceUrl); RequestEntity requestEntity = - RequestEntity.post(uri).body(body); // $ SSRF + RequestEntity.post(uri).body(body); // $ Alert ResponseEntity response = restTemplate.exchange(requestEntity, String.class); - RequestEntity.get(uri); // $ SSRF - RequestEntity.put(uri); // $ SSRF - RequestEntity.delete(uri); // $ SSRF - RequestEntity.options(uri); // $ SSRF - RequestEntity.patch(uri); // $ SSRF - RequestEntity.head(uri); // $ SSRF - RequestEntity.method(null, uri); // $ SSRF + RequestEntity.get(uri); // $ Alert + RequestEntity.put(uri); // $ Alert + RequestEntity.delete(uri); // $ Alert + RequestEntity.options(uri); // $ Alert + RequestEntity.patch(uri); // $ Alert + RequestEntity.head(uri); // $ Alert + RequestEntity.method(null, uri); // $ Alert } { URI uri = new URI(fooResourceUrl); MultiValueMap headers = null; java.lang.reflect.Type type = null; - new RequestEntity(null, uri); // $ SSRF - new RequestEntity(headers, null, uri); // $ SSRF - new RequestEntity("body", null, uri); // $ SSRF - new RequestEntity("body", headers, null, uri); // $ SSRF - new RequestEntity("body", null, uri, type); // $ SSRF - new RequestEntity("body", headers, null, uri, type); // $ SSRF + new RequestEntity(null, uri); // $ Alert + new RequestEntity(headers, null, uri); // $ Alert + new RequestEntity("body", null, uri); // $ Alert + new RequestEntity("body", headers, null, uri); // $ Alert + new RequestEntity("body", null, uri, type); // $ Alert + new RequestEntity("body", headers, null, uri, type); // $ Alert } } catch (org.springframework.web.client.RestClientException | java.net.URISyntaxException e) {} } diff --git a/java/ql/test/query-tests/security/CWE-918/URLClassLoaderSSRF.java b/java/ql/test/query-tests/security/CWE-918/URLClassLoaderSSRF.java index 84d53f797be5..64070c765980 100644 --- a/java/ql/test/query-tests/security/CWE-918/URLClassLoaderSSRF.java +++ b/java/ql/test/query-tests/security/CWE-918/URLClassLoaderSSRF.java @@ -13,9 +13,9 @@ public class URLClassLoaderSSRF extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String url = request.getParameter("uri"); + String url = request.getParameter("uri"); // $ Source URI uri = new URI(url); - URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{uri.toURL()}); // $ SSRF + URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{uri.toURL()}); // $ Alert Class test = urlClassLoader.loadClass("test"); } catch (Exception e) { // Ignore @@ -25,9 +25,9 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String url = request.getParameter("uri"); + String url = request.getParameter("uri"); // $ Source URI uri = new URI(url); - URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{uri.toURL()}, URLClassLoaderSSRF.class.getClassLoader()); // $ SSRF + URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{uri.toURL()}, URLClassLoaderSSRF.class.getClassLoader()); // $ Alert Class test = urlClassLoader.loadClass("test"); } catch (Exception e) { // Ignore @@ -37,11 +37,11 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String url = request.getParameter("uri"); + String url = request.getParameter("uri"); // $ Source URI uri = new URI(url); URLStreamHandlerFactory urlStreamHandlerFactory = null; - URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{uri.toURL()}, URLClassLoaderSSRF.class.getClassLoader(), urlStreamHandlerFactory); // $ SSRF + URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{uri.toURL()}, URLClassLoaderSSRF.class.getClassLoader(), urlStreamHandlerFactory); // $ Alert urlClassLoader.findResource("test"); } catch (Exception e) { // Ignore @@ -51,9 +51,9 @@ protected void doPut(HttpServletRequest request, HttpServletResponse response) protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String url = request.getParameter("uri"); + String url = request.getParameter("uri"); // $ Source URI uri = new URI(url); - URLClassLoader urlClassLoader = URLClassLoader.newInstance(new URL[]{uri.toURL()}); // $ SSRF + URLClassLoader urlClassLoader = URLClassLoader.newInstance(new URL[]{uri.toURL()}); // $ Alert urlClassLoader.getResourceAsStream("test"); } catch (Exception e) { // Ignore @@ -63,11 +63,11 @@ protected void doDelete(HttpServletRequest request, HttpServletResponse response protected void doOptions(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String url = request.getParameter("uri"); + String url = request.getParameter("uri"); // $ Source URI uri = new URI(url); URLClassLoader urlClassLoader = new URLClassLoader("testClassLoader", - new URL[]{uri.toURL()}, // $ SSRF + new URL[]{uri.toURL()}, // $ Alert URLClassLoaderSSRF.class.getClassLoader() ); @@ -80,13 +80,13 @@ protected void doOptions(HttpServletRequest request, HttpServletResponse respons protected void doTrace(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - String url = request.getParameter("uri"); + String url = request.getParameter("uri"); // $ Source URI uri = new URI(url); URLStreamHandlerFactory urlStreamHandlerFactory = null; URLClassLoader urlClassLoader = new URLClassLoader("testClassLoader", - new URL[]{uri.toURL()}, // $ SSRF + new URL[]{uri.toURL()}, // $ Alert URLClassLoaderSSRF.class.getClassLoader(), urlStreamHandlerFactory ); @@ -96,4 +96,4 @@ protected void doTrace(HttpServletRequest request, HttpServletResponse response) // Ignore } } -} \ No newline at end of file +} diff --git a/java/ql/test/query-tests/security/CWE-918/mad/Test.java b/java/ql/test/query-tests/security/CWE-918/mad/Test.java index 5bf070bbe507..c1bc4e12e08e 100644 --- a/java/ql/test/query-tests/security/CWE-918/mad/Test.java +++ b/java/ql/test/query-tests/security/CWE-918/mad/Test.java @@ -23,93 +23,93 @@ public class Test { private static HttpServletRequest request; public static Object source() { - return request.getParameter(null); + return request.getParameter(null); // $ Source } public void test(DatagramSocket socket) throws Exception { // "java.net;DatagramSocket;true;connect;(SocketAddress);;Argument[0];open-url;ai-generated" - socket.connect((SocketAddress) source()); // $ SSRF + socket.connect((SocketAddress) source()); // $ Alert } public void test(URL url) throws Exception { // "java.net;URL;false;openConnection;(Proxy);:Argument[this]:open-url;manual" - ((URL) source()).openConnection(); // $ SSRF + ((URL) source()).openConnection(); // $ Alert // "java.net;URL;false;openConnection;(Proxy);:Argument[0]:open-url;ai-generated" - url.openConnection((Proxy) source()); // $ SSRF + url.openConnection((Proxy) source()); // $ Alert // "java.net;URL;false;openStream;;:Argument[this]:open-url;manual" - ((URL) source()).openStream(); // $ SSRF + ((URL) source()).openStream(); // $ Alert } public void test() throws Exception { // "java.net;URLClassLoader;false;URLClassLoader;(String,URL[],ClassLoader);;Argument[1];open-url;manual" - new URLClassLoader("", (URL[]) source(), null); // $ SSRF + new URLClassLoader("", (URL[]) source(), null); // $ Alert // "java.net;URLClassLoader;false;URLClassLoader;(String,URL[],ClassLoader,URLStreamHandlerFactory);;Argument[1];open-url;manual" - new URLClassLoader("", (URL[]) source(), null, null); // $ SSRF + new URLClassLoader("", (URL[]) source(), null, null); // $ Alert // "java.net;URLClassLoader;false;URLClassLoader;(URL[]);;Argument[0];open-url;manual" - new URLClassLoader((URL[]) source()); // $ SSRF + new URLClassLoader((URL[]) source()); // $ Alert // "java.net;URLClassLoader;false;URLClassLoader;(URL[],ClassLoader);;Argument[0];open-url;manual" - new URLClassLoader((URL[]) source(), null); // $ SSRF + new URLClassLoader((URL[]) source(), null); // $ Alert // "java.net;URLClassLoader;false;URLClassLoader;(URL[],ClassLoader,URLStreamHandlerFactory);;Argument[0];open-url;manual" - new URLClassLoader((URL[]) source(), null, null); // $ SSRF + new URLClassLoader((URL[]) source(), null, null); // $ Alert // "java.net;URLClassLoader;false;newInstance;;;Argument[0];open-url;manual" - URLClassLoader.newInstance((URL[]) source()); // $ SSRF + URLClassLoader.newInstance((URL[]) source()); // $ Alert // "org.apache.commons.jelly;JellyContext;true;JellyContext;(JellyContext,URL,URL);;Argument[1];open-url;ai-generated" - new JellyContext(null, (URL) source(), null); // $ SSRF + new JellyContext(null, (URL) source(), null); // $ Alert // "org.apache.commons.jelly;JellyContext;true;JellyContext;(JellyContext,URL,URL);;Argument[2];open-url;ai-generated" - new JellyContext(null, null, (URL) source()); // $ SSRF + new JellyContext(null, null, (URL) source()); // $ Alert // "org.apache.commons.jelly;JellyContext;true;JellyContext;(JellyContext,URL);;Argument[1];open-url;ai-generated" - new JellyContext((JellyContext) null, (URL) source()); // $ SSRF + new JellyContext((JellyContext) null, (URL) source()); // $ Alert // "org.apache.commons.jelly;JellyContext;true;JellyContext;(URL,URL);;Argument[0];open-url;ai-generated" - new JellyContext((URL) source(), null); // $ SSRF + new JellyContext((URL) source(), null); // $ Alert // "org.apache.commons.jelly;JellyContext;true;JellyContext;(URL,URL);;Argument[1];open-url;ai-generated" - new JellyContext((URL) null, (URL) source()); // $ SSRF + new JellyContext((URL) null, (URL) source()); // $ Alert // "org.apache.commons.jelly;JellyContext;true;JellyContext;(URL);;Argument[0];open-url;ai-generated" - new JellyContext((URL) source()); // $ SSRF + new JellyContext((URL) source()); // $ Alert // "javax.activation;URLDataSource;true;URLDataSource;(URL);;Argument[0];request-forgery;manual" - new URLDataSource((URL) source()); // $ SSRF + new URLDataSource((URL) source()); // $ Alert // "org.apache.cxf.catalog;OASISCatalogManager;true;loadCatalog;(URL);;Argument[0];request-forgery;manual" - new OASISCatalogManager().loadCatalog((URL) source()); // $ SSRF + new OASISCatalogManager().loadCatalog((URL) source()); // $ Alert // @formatter:off // "org.apache.cxf.common.classloader;ClassLoaderUtils;true;getURLClassLoader;(URL[],ClassLoader);;Argument[0];request-forgery;manual" - new ClassLoaderUtils().getURLClassLoader((URL[]) source(), null); // $ SSRF + new ClassLoaderUtils().getURLClassLoader((URL[]) source(), null); // $ Alert // "org.apache.cxf.common.classloader;ClassLoaderUtils;true;getURLClassLoader;(List,ClassLoader);;Argument[0];request-forgery;manual" - new ClassLoaderUtils().getURLClassLoader((List) source(), null); // $ SSRF + new ClassLoaderUtils().getURLClassLoader((List) source(), null); // $ Alert // "org.apache.cxf.resource;ExtendedURIResolver;true;resolve;(String,String);;Argument[0];request-forgery;manual"] - new ExtendedURIResolver().resolve((String) source(), null); // $ SSRF + new ExtendedURIResolver().resolve((String) source(), null); // $ Alert // "org.apache.cxf.resource;URIResolver;true;URIResolver;(String);;Argument[0];request-forgery;manual"] - new URIResolver((String) source()); // $ SSRF + new URIResolver((String) source()); // $ Alert // "org.apache.cxf.resource;URIResolver;true;URIResolver;(String,String);;Argument[1];request-forgery;manual"] - new URIResolver(null, (String) source()); // $ SSRF + new URIResolver(null, (String) source()); // $ Alert // "org.apache.cxf.resource;URIResolver;true;URIResolver;(String,String,Class);;Argument[1];request-forgery;manual"] - new URIResolver(null, (String) source(), null); // $ SSRF + new URIResolver(null, (String) source(), null); // $ Alert // "org.apache.cxf.resource;URIResolver;true;resolve;(String,String,Class);;Argument[1];request-forgery;manual" - new URIResolver().resolve(null, (String) source(), null); // $ SSRF + new URIResolver().resolve(null, (String) source(), null); // $ Alert // @formatter:on } public void test(WebEngine webEngine) { // "javafx.scene.web;WebEngine;false;load;(String);;Argument[0];open-url;ai-generated" - webEngine.load((String) source()); // $ SSRF + webEngine.load((String) source()); // $ Alert } public void test(ZipURLInstaller zui) { // "org.codehaus.cargo.container.installer;ZipURLInstaller;true;ZipURLInstaller;(URL,String,String);;Argument[0];open-url:ai-generated" - new ZipURLInstaller((URL) source(), "", ""); // $ SSRF + new ZipURLInstaller((URL) source(), "", ""); // $ Alert } public void test(HttpResponses r) { // "org.kohsuke.stapler;HttpResponses;true;staticResource;(URL);;Argument[0];open-url;ai-generated" - r.staticResource((URL) source()); // $ SSRF + r.staticResource((URL) source()); // $ Alert } public void test(WSClient c) { // "play.libs.ws;WSClient;true;url;;;Argument[0];open-url;manual" - c.url((String) source()); // $ SSRF + c.url((String) source()); // $ Alert } public void test(StandaloneWSClient c) { // "play.libs.ws;StandaloneWSClient;true;url;;;Argument[0];open-url;manual" - c.url((String) source()); // $ SSRF + c.url((String) source()); // $ Alert } } diff --git a/java/ql/test/query-tests/security/CWE-925/BootReceiverXml.java b/java/ql/test/query-tests/security/CWE-925/BootReceiverXml.java index 3a9f84983966..af9ca5926d78 100644 --- a/java/ql/test/query-tests/security/CWE-925/BootReceiverXml.java +++ b/java/ql/test/query-tests/security/CWE-925/BootReceiverXml.java @@ -6,8 +6,8 @@ class BootReceiverXml extends BroadcastReceiver { void doStuff(Intent intent) {} - @Override - public void onReceive(Context ctx, Intent intent) { // $hasResult + @Override + public void onReceive(Context ctx, Intent intent) { // $ Alert doStuff(intent); } -} \ No newline at end of file +} diff --git a/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.expected b/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.expected index e69de29bb2d1..862b9a736928 100644 --- a/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.expected +++ b/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.expected @@ -0,0 +1 @@ +| BootReceiverXml.java:10:17:10:25 | onReceive | This reciever doesn't verify intents it receives, and $@ to receive $@. | AndroidManifest.xml:3:9:7:20 | receiver | it is registered | AndroidManifest.xml:5:17:5:79 | action | the system action action | diff --git a/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.ql b/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.ql deleted file mode 100644 index 67da4ee9b297..000000000000 --- a/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import semmle.code.java.security.ImproperIntentVerificationQuery -import utils.test.InlineExpectationsTest - -module HasFlowTest implements TestSig { - string getARelevantTag() { result = "hasResult" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasResult" and - exists(Method orm | unverifiedSystemReceiver(_, orm, _) | - orm.getLocation() = location and - element = orm.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.qlref b/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.qlref new file mode 100644 index 000000000000..1402eeee2a16 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-925/ImproperIntentVerification.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntents/ImplicitPendingIntentsTest.expected b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntents/ImplicitPendingIntentsTest.expected new file mode 100644 index 000000000000..c1c694c5fbd2 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntents/ImplicitPendingIntentsTest.expected @@ -0,0 +1,341 @@ +#select +| ImplicitPendingIntentsTest.java:36:31:36:39 | fwdIntent | ImplicitPendingIntentsTest.java:31:33:31:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:36:31:36:39 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:31:33:31:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:38:31:38:39 | fwdIntent | ImplicitPendingIntentsTest.java:31:33:31:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:38:31:38:39 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:31:33:31:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:41:31:41:39 | fwdIntent | ImplicitPendingIntentsTest.java:31:33:31:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:41:31:41:39 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:31:33:31:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:52:31:52:39 | fwdIntent | ImplicitPendingIntentsTest.java:48:33:48:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:52:31:52:39 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:48:33:48:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:60:31:60:39 | fwdIntent | ImplicitPendingIntentsTest.java:56:33:56:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:60:31:60:39 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:56:33:56:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:69:31:69:39 | fwdIntent | ImplicitPendingIntentsTest.java:64:33:64:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:69:31:69:39 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:64:33:64:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:77:31:77:39 | fwdIntent | ImplicitPendingIntentsTest.java:73:33:73:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:77:31:77:39 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:73:33:73:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:85:31:85:39 | fwdIntent | ImplicitPendingIntentsTest.java:81:33:81:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:85:31:85:39 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:81:33:81:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:93:31:93:39 | fwdIntent | ImplicitPendingIntentsTest.java:89:33:89:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:93:31:93:39 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:89:33:89:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:101:31:101:39 | fwdIntent | ImplicitPendingIntentsTest.java:97:33:97:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:101:31:101:39 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:97:33:97:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:170:32:170:40 | fwdIntent | ImplicitPendingIntentsTest.java:166:33:166:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:170:32:170:40 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:166:33:166:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:171:32:171:40 | fwdIntent | ImplicitPendingIntentsTest.java:166:33:166:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:171:32:171:40 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:166:33:166:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:172:32:172:40 | fwdIntent | ImplicitPendingIntentsTest.java:166:33:166:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:172:32:172:40 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:166:33:166:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:173:32:173:40 | fwdIntent | ImplicitPendingIntentsTest.java:166:33:166:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:173:32:173:40 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:166:33:166:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:188:65:188:76 | notification | ImplicitPendingIntentsTest.java:181:33:181:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:188:65:188:76 | notification | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:181:33:181:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:189:32:189:43 | notification | ImplicitPendingIntentsTest.java:181:33:181:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:189:32:189:43 | notification | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:181:33:181:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:190:42:190:53 | notification | ImplicitPendingIntentsTest.java:181:33:181:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:190:42:190:53 | notification | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:181:33:181:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:229:32:229:43 | notification | ImplicitPendingIntentsTest.java:222:33:222:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:229:32:229:43 | notification | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:222:33:222:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:230:36:230:47 | notification | ImplicitPendingIntentsTest.java:222:33:222:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:230:36:230:47 | notification | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:222:33:222:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:239:32:239:33 | pi | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:239:32:239:33 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:240:42:240:43 | pi | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:240:42:240:43 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:241:49:241:50 | pi | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:241:49:241:50 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:242:37:242:38 | pi | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:242:37:242:38 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:243:54:243:55 | pi | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:243:54:243:55 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:244:51:244:52 | pi | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:244:51:244:52 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:245:44:245:45 | pi | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:245:44:245:45 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:246:41:246:42 | pi | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:246:41:246:42 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:258:59:258:60 | pi | ImplicitPendingIntentsTest.java:256:33:256:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:258:59:258:60 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:256:33:256:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:259:65:259:66 | pi | ImplicitPendingIntentsTest.java:256:33:256:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:259:65:259:66 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:256:33:256:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:260:69:260:70 | pi | ImplicitPendingIntentsTest.java:256:33:256:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:260:69:260:70 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:256:33:256:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:261:57:261:58 | pi | ImplicitPendingIntentsTest.java:256:33:256:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:261:57:261:58 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:256:33:256:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:262:74:262:75 | pi | ImplicitPendingIntentsTest.java:256:33:256:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:262:74:262:75 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:256:33:256:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:273:26:273:34 | fwdIntent | ImplicitPendingIntentsTest.java:269:33:269:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:273:26:273:34 | fwdIntent | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:269:33:269:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:290:24:290:42 | build(...) | ImplicitPendingIntentsTest.java:284:37:284:48 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:290:24:290:42 | build(...) | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:284:37:284:48 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:317:24:317:42 | build(...) | ImplicitPendingIntentsTest.java:339:33:339:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:317:24:317:42 | build(...) | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:339:33:339:44 | new Intent(...) | An implicit Intent is created | +| ImplicitPendingIntentsTest.java:326:24:326:25 | pi | ImplicitPendingIntentsTest.java:324:37:324:48 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:326:24:326:25 | pi | $@ and sent to an unspecified third party through a PendingIntent. | ImplicitPendingIntentsTest.java:324:37:324:48 | new Intent(...) | An implicit Intent is created | +edges +| ImplicitPendingIntentsTest.java:31:33:31:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:32:66:32:75 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:32:32:32:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:34:45:34:46 | pi : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:32:66:32:75 | baseIntent : Intent | ImplicitPendingIntentsTest.java:32:32:32:79 | getActivity(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:34:13:34:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:36:31:36:39 | fwdIntent | provenance | Sink:MaD:18 Sink:MaD:18 | +| ImplicitPendingIntentsTest.java:34:13:34:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:38:31:38:39 | fwdIntent | provenance | Sink:MaD:17 Sink:MaD:17 | +| ImplicitPendingIntentsTest.java:34:13:34:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:41:31:41:39 | fwdIntent | provenance | Sink:MaD:18 Sink:MaD:18 | +| ImplicitPendingIntentsTest.java:34:45:34:46 | pi : PendingIntent | ImplicitPendingIntentsTest.java:34:13:34:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | provenance | MaD:32 | +| ImplicitPendingIntentsTest.java:48:33:48:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:49:72:49:81 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:49:32:49:97 | getActivityAsUser(...) : PendingIntent | ImplicitPendingIntentsTest.java:51:45:51:46 | pi : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:49:72:49:81 | baseIntent : Intent | ImplicitPendingIntentsTest.java:49:32:49:97 | getActivityAsUser(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:51:13:51:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:52:31:52:39 | fwdIntent | provenance | Sink:MaD:18 Sink:MaD:18 | +| ImplicitPendingIntentsTest.java:51:45:51:46 | pi : PendingIntent | ImplicitPendingIntentsTest.java:51:13:51:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | provenance | MaD:32 | +| ImplicitPendingIntentsTest.java:56:33:56:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:57:82:57:91 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:57:32:57:96 | getActivities(...) : PendingIntent | ImplicitPendingIntentsTest.java:59:45:59:46 | pi : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:57:68:57:92 | new Intent[] : Intent[] [[]] : Intent | ImplicitPendingIntentsTest.java:57:32:57:96 | getActivities(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:57:68:57:92 | {...} : Intent[] [[]] : Intent | ImplicitPendingIntentsTest.java:57:68:57:92 | new Intent[] : Intent[] [[]] : Intent | provenance | | +| ImplicitPendingIntentsTest.java:57:82:57:91 | baseIntent : Intent | ImplicitPendingIntentsTest.java:57:68:57:92 | {...} : Intent[] [[]] : Intent | provenance | | +| ImplicitPendingIntentsTest.java:59:13:59:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:60:31:60:39 | fwdIntent | provenance | Sink:MaD:18 Sink:MaD:18 | +| ImplicitPendingIntentsTest.java:59:45:59:46 | pi : PendingIntent | ImplicitPendingIntentsTest.java:59:13:59:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | provenance | MaD:32 | +| ImplicitPendingIntentsTest.java:64:33:64:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:65:88:65:97 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:65:32:66:34 | getActivitiesAsUser(...) : PendingIntent | ImplicitPendingIntentsTest.java:68:45:68:46 | pi : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:65:74:65:98 | new Intent[] : Intent[] [[]] : Intent | ImplicitPendingIntentsTest.java:65:32:66:34 | getActivitiesAsUser(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:65:74:65:98 | {...} : Intent[] [[]] : Intent | ImplicitPendingIntentsTest.java:65:74:65:98 | new Intent[] : Intent[] [[]] : Intent | provenance | | +| ImplicitPendingIntentsTest.java:65:88:65:97 | baseIntent : Intent | ImplicitPendingIntentsTest.java:65:74:65:98 | {...} : Intent[] [[]] : Intent | provenance | | +| ImplicitPendingIntentsTest.java:68:13:68:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:69:31:69:39 | fwdIntent | provenance | Sink:MaD:18 Sink:MaD:18 | +| ImplicitPendingIntentsTest.java:68:45:68:46 | pi : PendingIntent | ImplicitPendingIntentsTest.java:68:13:68:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | provenance | MaD:32 | +| ImplicitPendingIntentsTest.java:73:33:73:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:74:67:74:76 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:74:32:74:80 | getBroadcast(...) : PendingIntent | ImplicitPendingIntentsTest.java:76:45:76:46 | pi : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:74:67:74:76 | baseIntent : Intent | ImplicitPendingIntentsTest.java:74:32:74:80 | getBroadcast(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:76:13:76:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:77:31:77:39 | fwdIntent | provenance | Sink:MaD:17 Sink:MaD:17 | +| ImplicitPendingIntentsTest.java:76:45:76:46 | pi : PendingIntent | ImplicitPendingIntentsTest.java:76:13:76:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | provenance | MaD:32 | +| ImplicitPendingIntentsTest.java:81:33:81:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:82:73:82:82 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:82:32:82:92 | getBroadcastAsUser(...) : PendingIntent | ImplicitPendingIntentsTest.java:84:45:84:46 | pi : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:82:73:82:82 | baseIntent : Intent | ImplicitPendingIntentsTest.java:82:32:82:92 | getBroadcastAsUser(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:84:13:84:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:85:31:85:39 | fwdIntent | provenance | Sink:MaD:17 Sink:MaD:17 | +| ImplicitPendingIntentsTest.java:84:45:84:46 | pi : PendingIntent | ImplicitPendingIntentsTest.java:84:13:84:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | provenance | MaD:32 | +| ImplicitPendingIntentsTest.java:89:33:89:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:90:65:90:74 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:90:32:90:78 | getService(...) : PendingIntent | ImplicitPendingIntentsTest.java:92:45:92:46 | pi : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:90:65:90:74 | baseIntent : Intent | ImplicitPendingIntentsTest.java:90:32:90:78 | getService(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:92:13:92:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:93:31:93:39 | fwdIntent | provenance | Sink:MaD:18 Sink:MaD:18 | +| ImplicitPendingIntentsTest.java:92:45:92:46 | pi : PendingIntent | ImplicitPendingIntentsTest.java:92:13:92:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | provenance | MaD:32 | +| ImplicitPendingIntentsTest.java:97:33:97:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:98:75:98:84 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:98:32:98:88 | getForegroundService(...) : PendingIntent | ImplicitPendingIntentsTest.java:100:45:100:46 | pi : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:98:75:98:84 | baseIntent : Intent | ImplicitPendingIntentsTest.java:98:32:98:88 | getForegroundService(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:100:13:100:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:101:31:101:39 | fwdIntent | provenance | Sink:MaD:18 Sink:MaD:18 | +| ImplicitPendingIntentsTest.java:100:45:100:46 | pi : PendingIntent | ImplicitPendingIntentsTest.java:100:13:100:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | provenance | MaD:32 | +| ImplicitPendingIntentsTest.java:166:33:166:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:167:66:167:75 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:167:32:167:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:169:45:169:46 | pi : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:167:66:167:75 | baseIntent : Intent | ImplicitPendingIntentsTest.java:167:32:167:79 | getActivity(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:169:13:169:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:170:32:170:40 | fwdIntent | provenance | Sink:MaD:13 Sink:MaD:13 | +| ImplicitPendingIntentsTest.java:169:13:169:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:171:32:171:40 | fwdIntent | provenance | Sink:MaD:14 Sink:MaD:14 | +| ImplicitPendingIntentsTest.java:169:13:169:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:172:32:172:40 | fwdIntent | provenance | Sink:MaD:15 Sink:MaD:15 | +| ImplicitPendingIntentsTest.java:169:13:169:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:173:32:173:40 | fwdIntent | provenance | Sink:MaD:16 Sink:MaD:16 | +| ImplicitPendingIntentsTest.java:169:45:169:46 | pi : PendingIntent | ImplicitPendingIntentsTest.java:169:13:169:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | provenance | MaD:32 | +| ImplicitPendingIntentsTest.java:181:33:181:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:182:66:182:75 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:182:32:182:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:183:91:183:92 | pi : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:182:66:182:75 | baseIntent : Intent | ImplicitPendingIntentsTest.java:182:32:182:79 | getActivity(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:183:52:183:93 | new Builder(...) : Builder | ImplicitPendingIntentsTest.java:185:61:185:68 | aBuilder : Builder | provenance | | +| ImplicitPendingIntentsTest.java:183:91:183:92 | pi : PendingIntent | ImplicitPendingIntentsTest.java:183:52:183:93 | new Builder(...) : Builder | provenance | MaD:27 | +| ImplicitPendingIntentsTest.java:185:21:185:77 | addAction(...) : Builder | ImplicitPendingIntentsTest.java:186:41:186:48 | nBuilder : Builder | provenance | | +| ImplicitPendingIntentsTest.java:185:61:185:68 | aBuilder : Builder | ImplicitPendingIntentsTest.java:185:61:185:76 | build(...) : Action | provenance | MaD:28 | +| ImplicitPendingIntentsTest.java:185:61:185:76 | build(...) : Action | ImplicitPendingIntentsTest.java:185:21:185:77 | addAction(...) : Builder | provenance | MaD:29+MaD:30 | +| ImplicitPendingIntentsTest.java:186:41:186:48 | nBuilder : Builder | ImplicitPendingIntentsTest.java:186:41:186:56 | build(...) : Notification | provenance | MaD:31 | +| ImplicitPendingIntentsTest.java:186:41:186:56 | build(...) : Notification | ImplicitPendingIntentsTest.java:188:65:188:76 | notification | provenance | Sink:MaD:11 | +| ImplicitPendingIntentsTest.java:186:41:186:56 | build(...) : Notification | ImplicitPendingIntentsTest.java:189:32:189:43 | notification | provenance | Sink:MaD:10 | +| ImplicitPendingIntentsTest.java:186:41:186:56 | build(...) : Notification | ImplicitPendingIntentsTest.java:190:42:190:53 | notification | provenance | Sink:MaD:12 | +| ImplicitPendingIntentsTest.java:222:33:222:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:223:66:223:75 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:223:32:223:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:224:91:224:92 | pi : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:223:66:223:75 | baseIntent : Intent | ImplicitPendingIntentsTest.java:223:32:223:79 | getActivity(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:224:52:224:93 | new Builder(...) : Builder | ImplicitPendingIntentsTest.java:226:61:226:68 | aBuilder : Builder | provenance | | +| ImplicitPendingIntentsTest.java:224:91:224:92 | pi : PendingIntent | ImplicitPendingIntentsTest.java:224:52:224:93 | new Builder(...) : Builder | provenance | MaD:27 | +| ImplicitPendingIntentsTest.java:226:21:226:77 | addAction(...) : Builder | ImplicitPendingIntentsTest.java:227:41:227:48 | nBuilder : Builder | provenance | | +| ImplicitPendingIntentsTest.java:226:61:226:68 | aBuilder : Builder | ImplicitPendingIntentsTest.java:226:61:226:76 | build(...) : Action | provenance | MaD:28 | +| ImplicitPendingIntentsTest.java:226:61:226:76 | build(...) : Action | ImplicitPendingIntentsTest.java:226:21:226:77 | addAction(...) : Builder | provenance | MaD:29+MaD:30 | +| ImplicitPendingIntentsTest.java:227:41:227:48 | nBuilder : Builder | ImplicitPendingIntentsTest.java:227:41:227:56 | build(...) : Notification | provenance | MaD:31 | +| ImplicitPendingIntentsTest.java:227:41:227:56 | build(...) : Notification | ImplicitPendingIntentsTest.java:229:32:229:43 | notification | provenance | Sink:MaD:24 | +| ImplicitPendingIntentsTest.java:227:41:227:56 | build(...) : Notification | ImplicitPendingIntentsTest.java:230:36:230:47 | notification | provenance | Sink:MaD:23 | +| ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:238:66:238:75 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:238:32:238:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:239:32:239:33 | pi | provenance | Sink:MaD:2 | +| ImplicitPendingIntentsTest.java:238:32:238:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:240:42:240:43 | pi | provenance | Sink:MaD:3 | +| ImplicitPendingIntentsTest.java:238:32:238:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:241:49:241:50 | pi | provenance | Sink:MaD:4 | +| ImplicitPendingIntentsTest.java:238:32:238:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:242:37:242:38 | pi | provenance | Sink:MaD:5 | +| ImplicitPendingIntentsTest.java:238:32:238:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:243:54:243:55 | pi | provenance | Sink:MaD:6 | +| ImplicitPendingIntentsTest.java:238:32:238:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:244:51:244:52 | pi | provenance | Sink:MaD:7 | +| ImplicitPendingIntentsTest.java:238:32:238:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:245:44:245:45 | pi | provenance | Sink:MaD:8 | +| ImplicitPendingIntentsTest.java:238:32:238:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:246:41:246:42 | pi | provenance | Sink:MaD:9 | +| ImplicitPendingIntentsTest.java:238:66:238:75 | baseIntent : Intent | ImplicitPendingIntentsTest.java:238:32:238:79 | getActivity(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:256:33:256:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:257:66:257:75 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:257:32:257:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:258:59:258:60 | pi | provenance | Sink:MaD:19 | +| ImplicitPendingIntentsTest.java:257:32:257:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:259:65:259:66 | pi | provenance | Sink:MaD:19 | +| ImplicitPendingIntentsTest.java:257:32:257:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:260:69:260:70 | pi | provenance | Sink:MaD:20 | +| ImplicitPendingIntentsTest.java:257:32:257:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:261:57:261:58 | pi | provenance | Sink:MaD:21 | +| ImplicitPendingIntentsTest.java:257:32:257:79 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:262:74:262:75 | pi | provenance | Sink:MaD:22 | +| ImplicitPendingIntentsTest.java:257:66:257:75 | baseIntent : Intent | ImplicitPendingIntentsTest.java:257:32:257:79 | getActivity(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:269:33:269:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:270:67:270:76 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:270:32:270:80 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:272:45:272:46 | pi : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:270:67:270:76 | baseIntent : Intent | ImplicitPendingIntentsTest.java:270:32:270:80 | getActivity(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:272:13:272:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | ImplicitPendingIntentsTest.java:273:26:273:34 | fwdIntent | provenance | Sink:MaD:1 Sink:MaD:1 | +| ImplicitPendingIntentsTest.java:272:45:272:46 | pi : PendingIntent | ImplicitPendingIntentsTest.java:272:13:272:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | provenance | MaD:32 | +| ImplicitPendingIntentsTest.java:282:22:282:32 | parameter this : TestSliceProvider [mPendingIntent] : PendingIntent | ImplicitPendingIntentsTest.java:314:65:314:78 | this <.field> : TestSliceProvider [mPendingIntent] : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:284:37:284:48 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:285:79:285:88 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:285:36:285:92 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:286:73:286:74 | pi : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:285:79:285:88 | baseIntent : Intent | ImplicitPendingIntentsTest.java:285:36:285:92 | getActivity(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:286:46:286:92 | createDeeplink(...) : SliceAction [androidx.slice.Slice.action] : Object | ImplicitPendingIntentsTest.java:289:43:289:56 | activityAction : SliceAction [androidx.slice.Slice.action] : Object | provenance | | +| ImplicitPendingIntentsTest.java:286:73:286:74 | pi : PendingIntent | ImplicitPendingIntentsTest.java:286:46:286:92 | createDeeplink(...) : SliceAction [androidx.slice.Slice.action] : Object | provenance | MaD:37 | +| ImplicitPendingIntentsTest.java:288:17:288:27 | listBuilder [post update] : ListBuilder [androidx.slice.Slice.action] : Object | ImplicitPendingIntentsTest.java:290:24:290:34 | listBuilder : ListBuilder [androidx.slice.Slice.action] : Object | provenance | | +| ImplicitPendingIntentsTest.java:288:36:289:57 | setPrimaryAction(...) : RowBuilder [androidx.slice.Slice.action] : Object | ImplicitPendingIntentsTest.java:288:17:288:27 | listBuilder [post update] : ListBuilder [androidx.slice.Slice.action] : Object | provenance | MaD:35 | +| ImplicitPendingIntentsTest.java:289:43:289:56 | activityAction : SliceAction [androidx.slice.Slice.action] : Object | ImplicitPendingIntentsTest.java:288:36:289:57 | setPrimaryAction(...) : RowBuilder [androidx.slice.Slice.action] : Object | provenance | MaD:33+MaD:34 | +| ImplicitPendingIntentsTest.java:290:24:290:34 | listBuilder : ListBuilder [androidx.slice.Slice.action] : Object | ImplicitPendingIntentsTest.java:290:24:290:42 | build(...) | provenance | MaD:36 Sink:MaD:25 | +| ImplicitPendingIntentsTest.java:314:38:314:92 | createDeeplink(...) : SliceAction [androidx.slice.Slice.action] : Object | ImplicitPendingIntentsTest.java:316:90:316:95 | action : SliceAction [androidx.slice.Slice.action] : Object | provenance | | +| ImplicitPendingIntentsTest.java:314:65:314:78 | mPendingIntent : PendingIntent | ImplicitPendingIntentsTest.java:314:38:314:92 | createDeeplink(...) : SliceAction [androidx.slice.Slice.action] : Object | provenance | MaD:37 | +| ImplicitPendingIntentsTest.java:314:65:314:78 | this <.field> : TestSliceProvider [mPendingIntent] : PendingIntent | ImplicitPendingIntentsTest.java:314:65:314:78 | mPendingIntent : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:316:17:316:27 | listBuilder [post update] : ListBuilder [androidx.slice.Slice.action] : Object | ImplicitPendingIntentsTest.java:317:24:317:34 | listBuilder : ListBuilder [androidx.slice.Slice.action] : Object | provenance | | +| ImplicitPendingIntentsTest.java:316:36:316:96 | setPrimaryAction(...) : RowBuilder [androidx.slice.Slice.action] : Object | ImplicitPendingIntentsTest.java:316:17:316:27 | listBuilder [post update] : ListBuilder [androidx.slice.Slice.action] : Object | provenance | MaD:35 | +| ImplicitPendingIntentsTest.java:316:90:316:95 | action : SliceAction [androidx.slice.Slice.action] : Object | ImplicitPendingIntentsTest.java:316:36:316:96 | setPrimaryAction(...) : RowBuilder [androidx.slice.Slice.action] : Object | provenance | MaD:33+MaD:34 | +| ImplicitPendingIntentsTest.java:317:24:317:34 | listBuilder : ListBuilder [androidx.slice.Slice.action] : Object | ImplicitPendingIntentsTest.java:317:24:317:42 | build(...) | provenance | MaD:36 Sink:MaD:25 | +| ImplicitPendingIntentsTest.java:324:37:324:48 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:325:79:325:88 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:325:36:325:92 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:326:24:326:25 | pi | provenance | Sink:MaD:26 | +| ImplicitPendingIntentsTest.java:325:79:325:88 | baseIntent : Intent | ImplicitPendingIntentsTest.java:325:36:325:92 | getActivity(...) : PendingIntent | provenance | Config | +| ImplicitPendingIntentsTest.java:339:33:339:44 | new Intent(...) : Intent | ImplicitPendingIntentsTest.java:340:73:340:82 | baseIntent : Intent | provenance | | +| ImplicitPendingIntentsTest.java:340:13:340:26 | this <.field> [post update] : TestSliceProvider [mPendingIntent] : PendingIntent | ImplicitPendingIntentsTest.java:282:22:282:32 | parameter this : TestSliceProvider [mPendingIntent] : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:340:30:340:86 | getActivity(...) : PendingIntent | ImplicitPendingIntentsTest.java:340:13:340:26 | this <.field> [post update] : TestSliceProvider [mPendingIntent] : PendingIntent | provenance | | +| ImplicitPendingIntentsTest.java:340:73:340:82 | baseIntent : Intent | ImplicitPendingIntentsTest.java:340:30:340:86 | getActivity(...) : PendingIntent | provenance | Config | +models +| 1 | Sink: android.app; Activity; true; setResult; (int,Intent); ; Argument[1]; pending-intents; manual | +| 2 | Sink: android.app; AlarmManager; true; set; (int,long,PendingIntent); ; Argument[2]; pending-intents; manual | +| 3 | Sink: android.app; AlarmManager; true; setAlarmClock; ; ; Argument[1]; pending-intents; manual | +| 4 | Sink: android.app; AlarmManager; true; setAndAllowWhileIdle; ; ; Argument[2]; pending-intents; manual | +| 5 | Sink: android.app; AlarmManager; true; setExact; (int,long,PendingIntent); ; Argument[2]; pending-intents; manual | +| 6 | Sink: android.app; AlarmManager; true; setExactAndAllowWhileIdle; ; ; Argument[2]; pending-intents; manual | +| 7 | Sink: android.app; AlarmManager; true; setInexactRepeating; ; ; Argument[3]; pending-intents; manual | +| 8 | Sink: android.app; AlarmManager; true; setRepeating; ; ; Argument[3]; pending-intents; manual | +| 9 | Sink: android.app; AlarmManager; true; setWindow; (int,long,long,PendingIntent); ; Argument[3]; pending-intents; manual | +| 10 | Sink: android.app; NotificationManager; true; notify; (int,Notification); ; Argument[1]; pending-intents; manual | +| 11 | Sink: android.app; NotificationManager; true; notifyAsPackage; (String,String,int,Notification); ; Argument[3]; pending-intents; manual | +| 12 | Sink: android.app; NotificationManager; true; notifyAsUser; (String,int,Notification,UserHandle); ; Argument[2]; pending-intents; manual | +| 13 | Sink: android.app; PendingIntent; false; send; (Context,int,Intent); ; Argument[2]; pending-intents; manual | +| 14 | Sink: android.app; PendingIntent; false; send; (Context,int,Intent,PendingIntent$OnFinished,Handler); ; Argument[2]; pending-intents; manual | +| 15 | Sink: android.app; PendingIntent; false; send; (Context,int,Intent,PendingIntent$OnFinished,Handler,String); ; Argument[2]; pending-intents; manual | +| 16 | Sink: android.app; PendingIntent; false; send; (Context,int,Intent,PendingIntent$OnFinished,Handler,String,Bundle); ; Argument[2]; pending-intents; manual | +| 17 | Sink: android.content; Context; true; sendBroadcast; ; ; Argument[0]; intent-redirection; manual | +| 18 | Sink: android.content; Context; true; startActivity; ; ; Argument[0]; intent-redirection; manual | +| 19 | Sink: androidx.core.app; AlarmManagerCompat; true; setAlarmClock; ; ; Argument[2..3]; pending-intents; manual | +| 20 | Sink: androidx.core.app; AlarmManagerCompat; true; setAndAllowWhileIdle; ; ; Argument[3]; pending-intents; manual | +| 21 | Sink: androidx.core.app; AlarmManagerCompat; true; setExact; ; ; Argument[3]; pending-intents; manual | +| 22 | Sink: androidx.core.app; AlarmManagerCompat; true; setExactAndAllowWhileIdle; ; ; Argument[3]; pending-intents; manual | +| 23 | Sink: androidx.core.app; NotificationManagerCompat; true; notify; (String,int,Notification); ; Argument[2]; pending-intents; manual | +| 24 | Sink: androidx.core.app; NotificationManagerCompat; true; notify; (int,Notification); ; Argument[1]; pending-intents; manual | +| 25 | Sink: androidx.slice; SliceProvider; true; onBindSlice; ; ; ReturnValue; pending-intents; manual | +| 26 | Sink: androidx.slice; SliceProvider; true; onCreatePermissionRequest; ; ; ReturnValue; pending-intents; manual | +| 27 | Summary: android.app; Notification$Action$Builder; true; Builder; (int,CharSequence,PendingIntent); ; Argument[2]; Argument[this]; taint; manual | +| 28 | Summary: android.app; Notification$Action$Builder; true; build; ; ; Argument[this]; ReturnValue; taint; manual | +| 29 | Summary: android.app; Notification$Builder; true; addAction; (Notification$Action); ; Argument[0]; Argument[this]; taint; manual | +| 30 | Summary: android.app; Notification$Builder; true; addAction; ; ; Argument[this]; ReturnValue; value; manual | +| 31 | Summary: android.app; Notification$Builder; true; build; ; ; Argument[this]; ReturnValue; taint; manual | +| 32 | Summary: android.content; Intent; true; putExtra; ; ; Argument[1]; Argument[this].SyntheticField[android.content.Intent.extras].MapValue; value; manual | +| 33 | Summary: androidx.slice.builders; ListBuilder$RowBuilder; true; setPrimaryAction; ; ; Argument[0].SyntheticField[androidx.slice.Slice.action]; Argument[this].SyntheticField[androidx.slice.Slice.action]; taint; manual | +| 34 | Summary: androidx.slice.builders; ListBuilder$RowBuilder; true; setPrimaryAction; ; ; Argument[this]; ReturnValue; value; manual | +| 35 | Summary: androidx.slice.builders; ListBuilder; true; addRow; ; ; Argument[0].SyntheticField[androidx.slice.Slice.action]; Argument[this].SyntheticField[androidx.slice.Slice.action]; taint; manual | +| 36 | Summary: androidx.slice.builders; ListBuilder; true; build; ; ; Argument[this].SyntheticField[androidx.slice.Slice.action]; ReturnValue; taint; manual | +| 37 | Summary: androidx.slice.builders; SliceAction; true; createDeeplink; (PendingIntent,IconCompat,int,CharSequence); ; Argument[0]; ReturnValue.SyntheticField[androidx.slice.Slice.action]; taint; manual | +nodes +| ImplicitPendingIntentsTest.java:31:33:31:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:32:32:32:79 | getActivity(...) : PendingIntent | semmle.label | getActivity(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:32:66:32:75 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:34:13:34:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | semmle.label | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | +| ImplicitPendingIntentsTest.java:34:45:34:46 | pi : PendingIntent | semmle.label | pi : PendingIntent | +| ImplicitPendingIntentsTest.java:36:31:36:39 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:38:31:38:39 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:41:31:41:39 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:48:33:48:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:49:32:49:97 | getActivityAsUser(...) : PendingIntent | semmle.label | getActivityAsUser(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:49:72:49:81 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:51:13:51:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | semmle.label | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | +| ImplicitPendingIntentsTest.java:51:45:51:46 | pi : PendingIntent | semmle.label | pi : PendingIntent | +| ImplicitPendingIntentsTest.java:52:31:52:39 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:56:33:56:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:57:32:57:96 | getActivities(...) : PendingIntent | semmle.label | getActivities(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:57:68:57:92 | new Intent[] : Intent[] [[]] : Intent | semmle.label | new Intent[] : Intent[] [[]] : Intent | +| ImplicitPendingIntentsTest.java:57:68:57:92 | {...} : Intent[] [[]] : Intent | semmle.label | {...} : Intent[] [[]] : Intent | +| ImplicitPendingIntentsTest.java:57:82:57:91 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:59:13:59:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | semmle.label | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | +| ImplicitPendingIntentsTest.java:59:45:59:46 | pi : PendingIntent | semmle.label | pi : PendingIntent | +| ImplicitPendingIntentsTest.java:60:31:60:39 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:64:33:64:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:65:32:66:34 | getActivitiesAsUser(...) : PendingIntent | semmle.label | getActivitiesAsUser(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:65:74:65:98 | new Intent[] : Intent[] [[]] : Intent | semmle.label | new Intent[] : Intent[] [[]] : Intent | +| ImplicitPendingIntentsTest.java:65:74:65:98 | {...} : Intent[] [[]] : Intent | semmle.label | {...} : Intent[] [[]] : Intent | +| ImplicitPendingIntentsTest.java:65:88:65:97 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:68:13:68:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | semmle.label | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | +| ImplicitPendingIntentsTest.java:68:45:68:46 | pi : PendingIntent | semmle.label | pi : PendingIntent | +| ImplicitPendingIntentsTest.java:69:31:69:39 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:73:33:73:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:74:32:74:80 | getBroadcast(...) : PendingIntent | semmle.label | getBroadcast(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:74:67:74:76 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:76:13:76:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | semmle.label | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | +| ImplicitPendingIntentsTest.java:76:45:76:46 | pi : PendingIntent | semmle.label | pi : PendingIntent | +| ImplicitPendingIntentsTest.java:77:31:77:39 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:81:33:81:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:82:32:82:92 | getBroadcastAsUser(...) : PendingIntent | semmle.label | getBroadcastAsUser(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:82:73:82:82 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:84:13:84:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | semmle.label | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | +| ImplicitPendingIntentsTest.java:84:45:84:46 | pi : PendingIntent | semmle.label | pi : PendingIntent | +| ImplicitPendingIntentsTest.java:85:31:85:39 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:89:33:89:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:90:32:90:78 | getService(...) : PendingIntent | semmle.label | getService(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:90:65:90:74 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:92:13:92:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | semmle.label | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | +| ImplicitPendingIntentsTest.java:92:45:92:46 | pi : PendingIntent | semmle.label | pi : PendingIntent | +| ImplicitPendingIntentsTest.java:93:31:93:39 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:97:33:97:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:98:32:98:88 | getForegroundService(...) : PendingIntent | semmle.label | getForegroundService(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:98:75:98:84 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:100:13:100:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | semmle.label | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | +| ImplicitPendingIntentsTest.java:100:45:100:46 | pi : PendingIntent | semmle.label | pi : PendingIntent | +| ImplicitPendingIntentsTest.java:101:31:101:39 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:166:33:166:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:167:32:167:79 | getActivity(...) : PendingIntent | semmle.label | getActivity(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:167:66:167:75 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:169:13:169:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | semmle.label | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | +| ImplicitPendingIntentsTest.java:169:45:169:46 | pi : PendingIntent | semmle.label | pi : PendingIntent | +| ImplicitPendingIntentsTest.java:170:32:170:40 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:171:32:171:40 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:172:32:172:40 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:173:32:173:40 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:181:33:181:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:182:32:182:79 | getActivity(...) : PendingIntent | semmle.label | getActivity(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:182:66:182:75 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:183:52:183:93 | new Builder(...) : Builder | semmle.label | new Builder(...) : Builder | +| ImplicitPendingIntentsTest.java:183:91:183:92 | pi : PendingIntent | semmle.label | pi : PendingIntent | +| ImplicitPendingIntentsTest.java:185:21:185:77 | addAction(...) : Builder | semmle.label | addAction(...) : Builder | +| ImplicitPendingIntentsTest.java:185:61:185:68 | aBuilder : Builder | semmle.label | aBuilder : Builder | +| ImplicitPendingIntentsTest.java:185:61:185:76 | build(...) : Action | semmle.label | build(...) : Action | +| ImplicitPendingIntentsTest.java:186:41:186:48 | nBuilder : Builder | semmle.label | nBuilder : Builder | +| ImplicitPendingIntentsTest.java:186:41:186:56 | build(...) : Notification | semmle.label | build(...) : Notification | +| ImplicitPendingIntentsTest.java:188:65:188:76 | notification | semmle.label | notification | +| ImplicitPendingIntentsTest.java:189:32:189:43 | notification | semmle.label | notification | +| ImplicitPendingIntentsTest.java:190:42:190:53 | notification | semmle.label | notification | +| ImplicitPendingIntentsTest.java:222:33:222:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:223:32:223:79 | getActivity(...) : PendingIntent | semmle.label | getActivity(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:223:66:223:75 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:224:52:224:93 | new Builder(...) : Builder | semmle.label | new Builder(...) : Builder | +| ImplicitPendingIntentsTest.java:224:91:224:92 | pi : PendingIntent | semmle.label | pi : PendingIntent | +| ImplicitPendingIntentsTest.java:226:21:226:77 | addAction(...) : Builder | semmle.label | addAction(...) : Builder | +| ImplicitPendingIntentsTest.java:226:61:226:68 | aBuilder : Builder | semmle.label | aBuilder : Builder | +| ImplicitPendingIntentsTest.java:226:61:226:76 | build(...) : Action | semmle.label | build(...) : Action | +| ImplicitPendingIntentsTest.java:227:41:227:48 | nBuilder : Builder | semmle.label | nBuilder : Builder | +| ImplicitPendingIntentsTest.java:227:41:227:56 | build(...) : Notification | semmle.label | build(...) : Notification | +| ImplicitPendingIntentsTest.java:229:32:229:43 | notification | semmle.label | notification | +| ImplicitPendingIntentsTest.java:230:36:230:47 | notification | semmle.label | notification | +| ImplicitPendingIntentsTest.java:237:33:237:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:238:32:238:79 | getActivity(...) : PendingIntent | semmle.label | getActivity(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:238:66:238:75 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:239:32:239:33 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:240:42:240:43 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:241:49:241:50 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:242:37:242:38 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:243:54:243:55 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:244:51:244:52 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:245:44:245:45 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:246:41:246:42 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:256:33:256:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:257:32:257:79 | getActivity(...) : PendingIntent | semmle.label | getActivity(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:257:66:257:75 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:258:59:258:60 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:259:65:259:66 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:260:69:260:70 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:261:57:261:58 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:262:74:262:75 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:269:33:269:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:270:32:270:80 | getActivity(...) : PendingIntent | semmle.label | getActivity(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:270:67:270:76 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:272:13:272:21 | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | semmle.label | fwdIntent [post update] : Intent [android.content.Intent.extras, ] : PendingIntent | +| ImplicitPendingIntentsTest.java:272:45:272:46 | pi : PendingIntent | semmle.label | pi : PendingIntent | +| ImplicitPendingIntentsTest.java:273:26:273:34 | fwdIntent | semmle.label | fwdIntent | +| ImplicitPendingIntentsTest.java:282:22:282:32 | parameter this : TestSliceProvider [mPendingIntent] : PendingIntent | semmle.label | parameter this : TestSliceProvider [mPendingIntent] : PendingIntent | +| ImplicitPendingIntentsTest.java:284:37:284:48 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:285:36:285:92 | getActivity(...) : PendingIntent | semmle.label | getActivity(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:285:79:285:88 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:286:46:286:92 | createDeeplink(...) : SliceAction [androidx.slice.Slice.action] : Object | semmle.label | createDeeplink(...) : SliceAction [androidx.slice.Slice.action] : Object | +| ImplicitPendingIntentsTest.java:286:73:286:74 | pi : PendingIntent | semmle.label | pi : PendingIntent | +| ImplicitPendingIntentsTest.java:288:17:288:27 | listBuilder [post update] : ListBuilder [androidx.slice.Slice.action] : Object | semmle.label | listBuilder [post update] : ListBuilder [androidx.slice.Slice.action] : Object | +| ImplicitPendingIntentsTest.java:288:36:289:57 | setPrimaryAction(...) : RowBuilder [androidx.slice.Slice.action] : Object | semmle.label | setPrimaryAction(...) : RowBuilder [androidx.slice.Slice.action] : Object | +| ImplicitPendingIntentsTest.java:289:43:289:56 | activityAction : SliceAction [androidx.slice.Slice.action] : Object | semmle.label | activityAction : SliceAction [androidx.slice.Slice.action] : Object | +| ImplicitPendingIntentsTest.java:290:24:290:34 | listBuilder : ListBuilder [androidx.slice.Slice.action] : Object | semmle.label | listBuilder : ListBuilder [androidx.slice.Slice.action] : Object | +| ImplicitPendingIntentsTest.java:290:24:290:42 | build(...) | semmle.label | build(...) | +| ImplicitPendingIntentsTest.java:314:38:314:92 | createDeeplink(...) : SliceAction [androidx.slice.Slice.action] : Object | semmle.label | createDeeplink(...) : SliceAction [androidx.slice.Slice.action] : Object | +| ImplicitPendingIntentsTest.java:314:65:314:78 | mPendingIntent : PendingIntent | semmle.label | mPendingIntent : PendingIntent | +| ImplicitPendingIntentsTest.java:314:65:314:78 | this <.field> : TestSliceProvider [mPendingIntent] : PendingIntent | semmle.label | this <.field> : TestSliceProvider [mPendingIntent] : PendingIntent | +| ImplicitPendingIntentsTest.java:316:17:316:27 | listBuilder [post update] : ListBuilder [androidx.slice.Slice.action] : Object | semmle.label | listBuilder [post update] : ListBuilder [androidx.slice.Slice.action] : Object | +| ImplicitPendingIntentsTest.java:316:36:316:96 | setPrimaryAction(...) : RowBuilder [androidx.slice.Slice.action] : Object | semmle.label | setPrimaryAction(...) : RowBuilder [androidx.slice.Slice.action] : Object | +| ImplicitPendingIntentsTest.java:316:90:316:95 | action : SliceAction [androidx.slice.Slice.action] : Object | semmle.label | action : SliceAction [androidx.slice.Slice.action] : Object | +| ImplicitPendingIntentsTest.java:317:24:317:34 | listBuilder : ListBuilder [androidx.slice.Slice.action] : Object | semmle.label | listBuilder : ListBuilder [androidx.slice.Slice.action] : Object | +| ImplicitPendingIntentsTest.java:317:24:317:42 | build(...) | semmle.label | build(...) | +| ImplicitPendingIntentsTest.java:324:37:324:48 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:325:36:325:92 | getActivity(...) : PendingIntent | semmle.label | getActivity(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:325:79:325:88 | baseIntent : Intent | semmle.label | baseIntent : Intent | +| ImplicitPendingIntentsTest.java:326:24:326:25 | pi | semmle.label | pi | +| ImplicitPendingIntentsTest.java:339:33:339:44 | new Intent(...) : Intent | semmle.label | new Intent(...) : Intent | +| ImplicitPendingIntentsTest.java:340:13:340:26 | this <.field> [post update] : TestSliceProvider [mPendingIntent] : PendingIntent | semmle.label | this <.field> [post update] : TestSliceProvider [mPendingIntent] : PendingIntent | +| ImplicitPendingIntentsTest.java:340:30:340:86 | getActivity(...) : PendingIntent | semmle.label | getActivity(...) : PendingIntent | +| ImplicitPendingIntentsTest.java:340:73:340:82 | baseIntent : Intent | semmle.label | baseIntent : Intent | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.java b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntents/ImplicitPendingIntentsTest.java similarity index 80% rename from java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.java rename to java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntents/ImplicitPendingIntentsTest.java index 80f661492211..5bada3e77369 100644 --- a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.java +++ b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntents/ImplicitPendingIntentsTest.java @@ -28,77 +28,77 @@ public class ImplicitPendingIntentsTest { public static void testPendingIntentAsAnExtra(Context ctx) throws PendingIntent.CanceledException { { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getActivity(ctx, 0, baseIntent, 0); Intent fwdIntent = new Intent(); fwdIntent.putExtra("fwdIntent", pi); - ctx.startActivities(new Intent[] {fwdIntent}); // $ MISSING: hasImplicitPendingIntent - ctx.startActivity(fwdIntent); // $hasImplicitPendingIntent + ctx.startActivities(new Intent[] {fwdIntent}); // $ MISSING: Alert + ctx.startActivity(fwdIntent); // $ Alert ctx.startService(fwdIntent); // Safe - ctx.sendBroadcast(fwdIntent); // $hasImplicitPendingIntent + ctx.sendBroadcast(fwdIntent); // $ Alert fwdIntent.setComponent(null); // Not a sanitizer - ctx.startActivity(fwdIntent); // $hasImplicitPendingIntent + ctx.startActivity(fwdIntent); // $ Alert fwdIntent.setPackage("a.safe.package"); // Sanitizer ctx.startActivity(fwdIntent); // Safe } { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getActivityAsUser(ctx, 0, baseIntent, 0, null, null); Intent fwdIntent = new Intent(); fwdIntent.putExtra("fwdIntent", pi); - ctx.startActivity(fwdIntent); // $hasImplicitPendingIntent + ctx.startActivity(fwdIntent); // $ Alert } { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getActivities(ctx, 0, new Intent[] {baseIntent}, 0); Intent fwdIntent = new Intent(); fwdIntent.putExtra("fwdIntent", pi); - ctx.startActivity(fwdIntent); // $hasImplicitPendingIntent + ctx.startActivity(fwdIntent); // $ Alert } { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getActivitiesAsUser(ctx, 0, new Intent[] {baseIntent}, 0, null, null); Intent fwdIntent = new Intent(); fwdIntent.putExtra("fwdIntent", pi); - ctx.startActivity(fwdIntent); // $hasImplicitPendingIntent + ctx.startActivity(fwdIntent); // $ Alert } { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getBroadcast(ctx, 0, baseIntent, 0); Intent fwdIntent = new Intent(); fwdIntent.putExtra("fwdIntent", pi); - ctx.sendBroadcast(fwdIntent); // $hasImplicitPendingIntent + ctx.sendBroadcast(fwdIntent); // $ Alert } { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getBroadcastAsUser(ctx, 0, baseIntent, 0, null); Intent fwdIntent = new Intent(); fwdIntent.putExtra("fwdIntent", pi); - ctx.sendBroadcast(fwdIntent); // $hasImplicitPendingIntent + ctx.sendBroadcast(fwdIntent); // $ Alert } { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getService(ctx, 0, baseIntent, 0); Intent fwdIntent = new Intent(); fwdIntent.putExtra("fwdIntent", pi); - ctx.startActivity(fwdIntent); // $hasImplicitPendingIntent + ctx.startActivity(fwdIntent); // $ Alert } { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getForegroundService(ctx, 0, baseIntent, 0); Intent fwdIntent = new Intent(); fwdIntent.putExtra("fwdIntent", pi); - ctx.startActivity(fwdIntent); // $hasImplicitPendingIntent + ctx.startActivity(fwdIntent); // $ Alert } { @@ -163,14 +163,14 @@ public static void testPendingIntentAsAnExtra(Context ctx) public static void testPendingIntentWrappedInAnotherPendingIntent(Context ctx, PendingIntent other) throws PendingIntent.CanceledException { { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getActivity(ctx, 0, baseIntent, 0); Intent fwdIntent = new Intent(); fwdIntent.putExtra("fwdIntent", pi); - other.send(ctx, 0, fwdIntent); // $hasImplicitPendingIntent - other.send(ctx, 0, fwdIntent, null, null); // $hasImplicitPendingIntent - other.send(ctx, 0, fwdIntent, null, null, null); // $hasImplicitPendingIntent - other.send(ctx, 0, fwdIntent, null, null, null, null); // $hasImplicitPendingIntent + other.send(ctx, 0, fwdIntent); // $ Alert + other.send(ctx, 0, fwdIntent, null, null); // $ Alert + other.send(ctx, 0, fwdIntent, null, null, null); // $ Alert + other.send(ctx, 0, fwdIntent, null, null, null, null); // $ Alert } } @@ -178,16 +178,16 @@ public static void testPendingIntentInANotification(Context ctx) throws PendingIntent.CanceledException { { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getActivity(ctx, 0, baseIntent, 0); Notification.Action.Builder aBuilder = new Notification.Action.Builder(0, "", pi); Notification.Builder nBuilder = new Notification.Builder(ctx).addAction(aBuilder.build()); Notification notification = nBuilder.build(); NotificationManager nManager = null; - nManager.notifyAsPackage("targetPackage", "tag", 0, notification); // $hasImplicitPendingIntent - nManager.notify(0, notification); // $hasImplicitPendingIntent - nManager.notifyAsUser("", 0, notification, null); // $hasImplicitPendingIntent + nManager.notifyAsPackage("targetPackage", "tag", 0, notification); // $ Alert + nManager.notify(0, notification); // $ Alert + nManager.notifyAsUser("", 0, notification, null); // $ Alert } { Intent baseIntent = new Intent(); @@ -219,31 +219,31 @@ public static void testPendingIntentInANotification(Context ctx) } // Compat sinks { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getActivity(ctx, 0, baseIntent, 0); Notification.Action.Builder aBuilder = new Notification.Action.Builder(0, "", pi); Notification.Builder nBuilder = new Notification.Builder(ctx).addAction(aBuilder.build()); Notification notification = nBuilder.build(); NotificationManagerCompat nManager = null; - nManager.notify(0, notification); // $hasImplicitPendingIntent - nManager.notify("", 0, notification); // $hasImplicitPendingIntent + nManager.notify(0, notification); // $ Alert + nManager.notify("", 0, notification); // $ Alert } } public static void testPendingIntentInAnAlarm(Context ctx) { AlarmManager aManager = (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE); { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getActivity(ctx, 0, baseIntent, 0); - aManager.set(0, 0, pi); // $hasImplicitPendingIntent - aManager.setAlarmClock(null, pi); // $hasImplicitPendingIntent - aManager.setAndAllowWhileIdle(0, 0, pi); // $hasImplicitPendingIntent - aManager.setExact(0, 0, pi); // $hasImplicitPendingIntent - aManager.setExactAndAllowWhileIdle(0, 0, pi); // $hasImplicitPendingIntent - aManager.setInexactRepeating(0, 0, 0, pi); // $hasImplicitPendingIntent - aManager.setRepeating(0, 0, 0, pi); // $hasImplicitPendingIntent - aManager.setWindow(0, 0, 0, pi); // $hasImplicitPendingIntent + aManager.set(0, 0, pi); // $ Alert + aManager.setAlarmClock(null, pi); // $ Alert + aManager.setAndAllowWhileIdle(0, 0, pi); // $ Alert + aManager.setExact(0, 0, pi); // $ Alert + aManager.setExactAndAllowWhileIdle(0, 0, pi); // $ Alert + aManager.setInexactRepeating(0, 0, 0, pi); // $ Alert + aManager.setRepeating(0, 0, 0, pi); // $ Alert + aManager.setWindow(0, 0, 0, pi); // $ Alert } { Intent baseIntent = new Intent(); @@ -253,24 +253,24 @@ public static void testPendingIntentInAnAlarm(Context ctx) { } // Compat sinks { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getActivity(ctx, 0, baseIntent, 0); - AlarmManagerCompat.setAlarmClock(aManager, 0, pi, null); // $hasImplicitPendingIntent - AlarmManagerCompat.setAlarmClock(aManager, 0, null, pi); // $hasImplicitPendingIntent - AlarmManagerCompat.setAndAllowWhileIdle(aManager, 0, 0, pi); // $hasImplicitPendingIntent - AlarmManagerCompat.setExact(aManager, 0, 0, pi); // $hasImplicitPendingIntent - AlarmManagerCompat.setExactAndAllowWhileIdle(aManager, 0, 0, pi); // $hasImplicitPendingIntent + AlarmManagerCompat.setAlarmClock(aManager, 0, pi, null); // $ Alert + AlarmManagerCompat.setAlarmClock(aManager, 0, null, pi); // $ Alert + AlarmManagerCompat.setAndAllowWhileIdle(aManager, 0, 0, pi); // $ Alert + AlarmManagerCompat.setExact(aManager, 0, 0, pi); // $ Alert + AlarmManagerCompat.setExactAndAllowWhileIdle(aManager, 0, 0, pi); // $ Alert } } static class TestActivity extends Activity { @Override public void onCreate(Bundle bundle) { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getActivity(null, 0, baseIntent, 0); Intent fwdIntent = new Intent(); fwdIntent.putExtra("fwdIntent", pi); - setResult(0, fwdIntent); // $hasImplicitPendingIntent + setResult(0, fwdIntent); // $ Alert } } @@ -281,13 +281,13 @@ static class TestSliceProvider extends SliceProvider { @Override public Slice onBindSlice(Uri sliceUri) { if (sliceUri.getAuthority().equals("1")) { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getActivity(getContext(), 0, baseIntent, 0); SliceAction activityAction = SliceAction.createDeeplink(pi, null, 0, "Test"); ListBuilder listBuilder = new ListBuilder(getContext(), sliceUri, null); listBuilder.addRow(new ListBuilder.RowBuilder().setTitle("Title") .setPrimaryAction(activityAction)); - return listBuilder.build(); // $hasImplicitPendingIntent + return listBuilder.build(); // $ Alert } else if (sliceUri.getAuthority().equals("2")) { Intent baseIntent = new Intent(getContext(), Activity.class); // Sanitizer @@ -314,16 +314,16 @@ public Slice onBindSlice(Uri sliceUri) { SliceAction action = SliceAction.createDeeplink(mPendingIntent, null, 0, ""); ListBuilder listBuilder = new ListBuilder(getContext(), sliceUri, 0); listBuilder.addRow(new ListBuilder.RowBuilder(sliceUri).setPrimaryAction(action)); - return listBuilder.build(); // $hasImplicitPendingIntent + return listBuilder.build(); // $ Alert } } @Override public PendingIntent onCreatePermissionRequest(Uri sliceUri, String callingPackage) { if (sliceUri.getAuthority().equals("1")) { - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source PendingIntent pi = PendingIntent.getActivity(getContext(), 0, baseIntent, 0); - return pi; // $hasImplicitPendingIntent + return pi; // $ Alert } else { Intent baseIntent = new Intent(); PendingIntent pi = PendingIntent.getActivity(getContext(), 0, baseIntent, @@ -336,7 +336,7 @@ public PendingIntent onCreatePermissionRequest(Uri sliceUri, String callingPacka public boolean onCreateSliceProvider() { // Testing implicit field read flows: // mPendingIntent is used in onBindSlice - Intent baseIntent = new Intent(); + Intent baseIntent = new Intent(); // $ Source mPendingIntent = PendingIntent.getActivity(getContext(), 0, baseIntent, 0); return true; } diff --git a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntents/ImplicitPendingIntentsTest.qlref b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntents/ImplicitPendingIntentsTest.qlref new file mode 100644 index 000000000000..beeff5417fcd --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntents/ImplicitPendingIntentsTest.qlref @@ -0,0 +1,4 @@ +query: Security/CWE/CWE-927/ImplicitPendingIntents.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntents/options b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntents/options new file mode 100644 index 000000000000..43e25f608b67 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntents/options @@ -0,0 +1 @@ +// semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/google-android-9.0.0 diff --git a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.ql b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.ql deleted file mode 100644 index b474a32b52c7..000000000000 --- a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import semmle.code.java.security.ImplicitPendingIntentsQuery -import utils.test.InlineExpectationsTest - -module ImplicitPendingIntentsTest implements TestSig { - string getARelevantTag() { result = "hasImplicitPendingIntent" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasImplicitPendingIntent" and - exists(DataFlow::Node sink | ImplicitPendingIntentStartFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java index 22d008637c9a..f96211bd5c41 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java +++ b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java @@ -39,6 +39,8 @@ import com.google.gson.Gson; import com.google.gson.JsonParseException; +import com.semmle.js.extractor.tsconfig.TsConfigJson; +import com.semmle.js.extractor.tsconfig.CompilerOptions; import com.semmle.js.dependencies.AsyncFetcher; import com.semmle.js.dependencies.DependencyResolver; import com.semmle.js.dependencies.packument.PackageJson; @@ -745,6 +747,26 @@ private CompletableFuture extractSource() throws IOException { .filter(p -> !isFileTooLarge(p)) .sorted(PATH_ORDERING) .collect(Collectors.toCollection(() -> new LinkedHashSet<>())); + // gather all output directories specified in tsconfig.json files + final List outDirs = new ArrayList<>(); + for (Path cfg : tsconfigFiles) { + try { + String txt = new WholeIO().read(cfg); + TsConfigJson root = new Gson().fromJson(txt, TsConfigJson.class); + if (root != null && root.getCompilerOptions() != null) { + if (root.getCompilerOptions().getOutDir() == null) { + // no outDir specified, so skip this tsconfig.json + continue; + } + Path odir = cfg.getParent().resolve(root.getCompilerOptions().getOutDir()).toAbsolutePath().normalize(); + outDirs.add(odir); + } + } catch (Exception e) { + // ignore malformed tsconfig or missing fields + } + } + // exclude files in output directories as configured in tsconfig.json + filesToExtract.removeIf(f -> outDirs.stream().anyMatch(od -> f.startsWith(od))); DependencyInstallationResult dependencyInstallationResult = DependencyInstallationResult.empty; if (!tsconfigFiles.isEmpty()) { @@ -796,9 +818,19 @@ private CompletableFuture extractFiles( */ private boolean isFileDerivedFromTypeScriptFile(Path path, Set extractedFiles) { String name = path.getFileName().toString(); - if (!name.endsWith(".js")) + // only skip JS variants when a corresponding TS/TSX file was already extracted + if (!(name.endsWith(".js") + || name.endsWith(".cjs") + || name.endsWith(".mjs") + || name.endsWith(".jsx") + || name.endsWith(".cjsx") + || name.endsWith(".mjsx"))) { return false; - String stem = name.substring(0, name.length() - ".js".length()); + } + // strip off extension + int dot = name.lastIndexOf('.'); + String stem = dot != -1 ? name.substring(0, dot) : name; + // if a TS/TSX file with same base name was extracted, skip this file for (String ext : FileType.TYPESCRIPT.getExtensions()) { if (extractedFiles.contains(path.getParent().resolve(stem + ext))) { return true; @@ -1154,7 +1186,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) } // extract TypeScript projects from 'tsconfig.json' - if (typeScriptMode == TypeScriptMode.FULL + if (typeScriptMode != TypeScriptMode.NONE && treatAsTSConfig(file.getFileName().toString()) && !excludes.contains(file) && isFileIncluded(file)) { diff --git a/javascript/extractor/src/com/semmle/js/extractor/ScopeManager.java b/javascript/extractor/src/com/semmle/js/extractor/ScopeManager.java index e7306e77e016..43e70160fe8f 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 Void visit(Identifier nd, Void v) { // 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 Void visit(FunctionDeclaration nd, Void v) { @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 Void visit(EnhancedForStatement nd, Void v) { @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 Void visit(ClassBody nd, Void c) { @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/src/com/semmle/js/extractor/tsconfig/CompilerOptions.java b/javascript/extractor/src/com/semmle/js/extractor/tsconfig/CompilerOptions.java new file mode 100644 index 000000000000..fa7b664f2eb0 --- /dev/null +++ b/javascript/extractor/src/com/semmle/js/extractor/tsconfig/CompilerOptions.java @@ -0,0 +1,13 @@ +package com.semmle.js.extractor.tsconfig; + +public class CompilerOptions { + private String outDir; + + public String getOutDir() { + return outDir; + } + + public void setOutDir(String outDir) { + this.outDir = outDir; + } +} diff --git a/javascript/extractor/src/com/semmle/js/extractor/tsconfig/TsConfigJson.java b/javascript/extractor/src/com/semmle/js/extractor/tsconfig/TsConfigJson.java new file mode 100644 index 000000000000..9e12d5cc0aa9 --- /dev/null +++ b/javascript/extractor/src/com/semmle/js/extractor/tsconfig/TsConfigJson.java @@ -0,0 +1,13 @@ +package com.semmle.js.extractor.tsconfig; + +public class TsConfigJson { + private CompilerOptions compilerOptions; + + public CompilerOptions getCompilerOptions() { + return compilerOptions; + } + + public void setCompilerOptions(CompilerOptions compilerOptions) { + this.compilerOptions = compilerOptions; + } +} diff --git a/javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java index 0a924d54319a..28c8e593dcd1 100644 --- a/javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java +++ b/javascript/extractor/test/com/semmle/js/extractor/test/AutoBuildTests.java @@ -135,6 +135,7 @@ public void extractTypeScriptFiles( FileExtractors extractors) { for (Path f : files) { actual.add(f.toString()); + extractedFiles.add(f); } } @@ -175,7 +176,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) @Test public void basicTest() throws IOException { - addFile(true, LGTM_SRC, "tst.js"); + addFile(false, LGTM_SRC, "tst.js"); addFile(true, LGTM_SRC, "tst.ts"); addFile(true, LGTM_SRC, "tst.html"); addFile(true, LGTM_SRC, "tst.xsjs"); @@ -203,6 +204,43 @@ public void typescriptWrongConfig() throws IOException { runTest(); } + @Test + public void skipJsFilesDerivedFromTypeScriptFiles() throws IOException { + // JS-derived files (.js, .cjs, .mjs, .jsx, .cjsx, .mjsx) should be skipped when TS indexing + envVars.put("LGTM_INDEX_TYPESCRIPT", "basic"); + // Add TypeScript sources + addFile(true, LGTM_SRC, "foo.ts"); + addFile(true, LGTM_SRC, "bar.tsx"); + // Add derived JS variants (should be skipped) + addFile(false, LGTM_SRC, "foo.js"); + addFile(false, LGTM_SRC, "bar.jsx"); + addFile(false, LGTM_SRC, "foo.cjs"); + addFile(false, LGTM_SRC, "foo.mjs"); + addFile(false, LGTM_SRC, "bar.cjsx"); + addFile(false, LGTM_SRC, "bar.mjsx"); + // A normal JS file without TS counterpart should be extracted + addFile(true, LGTM_SRC, "normal.js"); + runTest(); + } + + @Test + public void skipFilesInTsconfigOutDir() throws IOException { + envVars.put("LGTM_INDEX_TYPESCRIPT", "basic"); + // Files under outDir in tsconfig.json should be excluded + // Create tsconfig.json with outDir set to "dist" + addFile(true, LGTM_SRC, "tsconfig.json"); + Path config = Paths.get(LGTM_SRC.toString(), "tsconfig.json"); + Files.write(config, + "{\"compilerOptions\":{\"outDir\":\"dist\"}}".getBytes(StandardCharsets.UTF_8)); + // Add files outside outDir (should be extracted) + addFile(true, LGTM_SRC, "src", "app.ts"); + addFile(true, LGTM_SRC, "main.js"); + // Add files under dist/outDir (should be skipped) + addFile(false, LGTM_SRC, "dist", "generated.js"); + addFile(false, LGTM_SRC, "dist", "sub", "x.js"); + runTest(); + } + @Test public void includeFile() throws IOException { envVars.put("LGTM_INDEX_INCLUDE", "tst.js"); diff --git a/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap b/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap index 0751d283e6cc..2a1c0efbd441 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 6bc9fb5ffb25..83ada22ef89a 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 89cd17604433..00276bb64641 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 44a32603e097..717d79423abd 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 0e766cf77b99..27b075f05c76 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-extended.qls.expected b/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected new file mode 100644 index 000000000000..6894a776b379 --- /dev/null +++ b/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected @@ -0,0 +1,99 @@ +ql/javascript/ql/src/AngularJS/DependencyMismatch.ql +ql/javascript/ql/src/AngularJS/DuplicateDependency.ql +ql/javascript/ql/src/AngularJS/IncompatibleService.ql +ql/javascript/ql/src/AngularJS/MissingExplicitInjection.ql +ql/javascript/ql/src/AngularJS/RepeatedInjection.ql +ql/javascript/ql/src/AngularJS/UseNgSrc.ql +ql/javascript/ql/src/DOM/DuplicateAttributes.ql +ql/javascript/ql/src/DOM/MalformedIdAttribute.ql +ql/javascript/ql/src/DOM/PseudoEval.ql +ql/javascript/ql/src/Declarations/ArgumentsRedefined.ql +ql/javascript/ql/src/Declarations/AssignmentToConst.ql +ql/javascript/ql/src/Declarations/ClobberingVarInit.ql +ql/javascript/ql/src/Declarations/ConflictingFunctions.ql +ql/javascript/ql/src/Declarations/DeadStoreOfLocal.ql +ql/javascript/ql/src/Declarations/DeadStoreOfProperty.ql +ql/javascript/ql/src/Declarations/DeclBeforeUse.ql +ql/javascript/ql/src/Declarations/DefaultArgumentReferencesNestedFunction.ql +ql/javascript/ql/src/Declarations/DuplicateVarDecl.ql +ql/javascript/ql/src/Declarations/IneffectiveParameterType.ql +ql/javascript/ql/src/Declarations/MissingThisQualifier.ql +ql/javascript/ql/src/Declarations/MissingVarDecl.ql +ql/javascript/ql/src/Declarations/MixedStaticInstanceThisAccess.ql +ql/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql +ql/javascript/ql/src/Declarations/TemporalDeadZone.ql +ql/javascript/ql/src/Declarations/UniqueParameterNames.ql +ql/javascript/ql/src/Declarations/UniquePropertyNames.ql +ql/javascript/ql/src/Declarations/UnreachableMethodOverloads.ql +ql/javascript/ql/src/Declarations/UnusedVariable.ql +ql/javascript/ql/src/Expressions/ComparisonWithNaN.ql +ql/javascript/ql/src/Expressions/DuplicateCondition.ql +ql/javascript/ql/src/Expressions/DuplicateProperty.ql +ql/javascript/ql/src/Expressions/DuplicateSwitchCase.ql +ql/javascript/ql/src/Expressions/ExprHasNoEffect.ql +ql/javascript/ql/src/Expressions/HeterogeneousComparison.ql +ql/javascript/ql/src/Expressions/ImplicitOperandConversion.ql +ql/javascript/ql/src/Expressions/MissingAwait.ql +ql/javascript/ql/src/Expressions/MissingDotLengthInComparison.ql +ql/javascript/ql/src/Expressions/MissingSpaceInAppend.ql +ql/javascript/ql/src/Expressions/MisspelledVariableName.ql +ql/javascript/ql/src/Expressions/RedundantExpression.ql +ql/javascript/ql/src/Expressions/SelfAssignment.ql +ql/javascript/ql/src/Expressions/ShiftOutOfRange.ql +ql/javascript/ql/src/Expressions/StringInsteadOfRegex.ql +ql/javascript/ql/src/Expressions/SuspiciousInvocation.ql +ql/javascript/ql/src/Expressions/SuspiciousPropAccess.ql +ql/javascript/ql/src/Expressions/UnboundEventHandlerReceiver.ql +ql/javascript/ql/src/Expressions/UnclearOperatorPrecedence.ql +ql/javascript/ql/src/Expressions/UnknownDirective.ql +ql/javascript/ql/src/Expressions/UnneededDefensiveProgramming.ql +ql/javascript/ql/src/Expressions/WhitespaceContradictsPrecedence.ql +ql/javascript/ql/src/LanguageFeatures/BadTypeof.ql +ql/javascript/ql/src/LanguageFeatures/ConditionalComments.ql +ql/javascript/ql/src/LanguageFeatures/DeleteVar.ql +ql/javascript/ql/src/LanguageFeatures/ExpressionClosures.ql +ql/javascript/ql/src/LanguageFeatures/ForInComprehensionBlocks.ql +ql/javascript/ql/src/LanguageFeatures/IllegalInvocation.ql +ql/javascript/ql/src/LanguageFeatures/InconsistentNew.ql +ql/javascript/ql/src/LanguageFeatures/InvalidPrototype.ql +ql/javascript/ql/src/LanguageFeatures/LengthComparisonOffByOne.ql +ql/javascript/ql/src/LanguageFeatures/NonLinearPattern.ql +ql/javascript/ql/src/LanguageFeatures/PropertyWriteOnPrimitive.ql +ql/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql +ql/javascript/ql/src/LanguageFeatures/SetterReturn.ql +ql/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql +ql/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql +ql/javascript/ql/src/LanguageFeatures/SyntaxError.ql +ql/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql +ql/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql +ql/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql +ql/javascript/ql/src/LanguageFeatures/WithStatement.ql +ql/javascript/ql/src/LanguageFeatures/YieldInNonGenerator.ql +ql/javascript/ql/src/NodeJS/InvalidExport.ql +ql/javascript/ql/src/NodeJS/MissingExports.ql +ql/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.ql +ql/javascript/ql/src/React/DirectStateMutation.ql +ql/javascript/ql/src/React/InconsistentStateUpdate.ql +ql/javascript/ql/src/React/UnsupportedStateUpdateInLifecycleMethod.ql +ql/javascript/ql/src/React/UnusedOrUndefinedStateProperty.ql +ql/javascript/ql/src/RegExp/BackrefBeforeGroup.ql +ql/javascript/ql/src/RegExp/BackrefIntoNegativeLookahead.ql +ql/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql +ql/javascript/ql/src/RegExp/EmptyCharacterClass.ql +ql/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql +ql/javascript/ql/src/RegExp/UnboundBackref.ql +ql/javascript/ql/src/RegExp/UnmatchableCaret.ql +ql/javascript/ql/src/RegExp/UnmatchableDollar.ql +ql/javascript/ql/src/Statements/DanglingElse.ql +ql/javascript/ql/src/Statements/IgnoreArrayResult.ql +ql/javascript/ql/src/Statements/InconsistentLoopOrientation.ql +ql/javascript/ql/src/Statements/LabelInCase.ql +ql/javascript/ql/src/Statements/LoopIterationSkippedDueToShifting.ql +ql/javascript/ql/src/Statements/MisleadingIndentationAfterControlStmt.ql +ql/javascript/ql/src/Statements/ReturnAssignsLocal.ql +ql/javascript/ql/src/Statements/SuspiciousUnusedLoopIterationVariable.ql +ql/javascript/ql/src/Statements/UnreachableStatement.ql +ql/javascript/ql/src/Statements/UseOfReturnlessFunction.ql +ql/javascript/ql/src/Statements/UselessComparisonTest.ql +ql/javascript/ql/src/Statements/UselessConditional.ql +ql/javascript/ql/src/Vue/ArrowMethodOnVueInstance.ql 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 876b5f25fa28..6894a776b379 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 @@ -1,6 +1,99 @@ +ql/javascript/ql/src/AngularJS/DependencyMismatch.ql +ql/javascript/ql/src/AngularJS/DuplicateDependency.ql +ql/javascript/ql/src/AngularJS/IncompatibleService.ql +ql/javascript/ql/src/AngularJS/MissingExplicitInjection.ql +ql/javascript/ql/src/AngularJS/RepeatedInjection.ql +ql/javascript/ql/src/AngularJS/UseNgSrc.ql +ql/javascript/ql/src/DOM/DuplicateAttributes.ql +ql/javascript/ql/src/DOM/MalformedIdAttribute.ql +ql/javascript/ql/src/DOM/PseudoEval.ql +ql/javascript/ql/src/Declarations/ArgumentsRedefined.ql +ql/javascript/ql/src/Declarations/AssignmentToConst.ql +ql/javascript/ql/src/Declarations/ClobberingVarInit.ql +ql/javascript/ql/src/Declarations/ConflictingFunctions.ql +ql/javascript/ql/src/Declarations/DeadStoreOfLocal.ql +ql/javascript/ql/src/Declarations/DeadStoreOfProperty.ql +ql/javascript/ql/src/Declarations/DeclBeforeUse.ql +ql/javascript/ql/src/Declarations/DefaultArgumentReferencesNestedFunction.ql +ql/javascript/ql/src/Declarations/DuplicateVarDecl.ql ql/javascript/ql/src/Declarations/IneffectiveParameterType.ql +ql/javascript/ql/src/Declarations/MissingThisQualifier.ql +ql/javascript/ql/src/Declarations/MissingVarDecl.ql +ql/javascript/ql/src/Declarations/MixedStaticInstanceThisAccess.ql +ql/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql +ql/javascript/ql/src/Declarations/TemporalDeadZone.ql +ql/javascript/ql/src/Declarations/UniqueParameterNames.ql +ql/javascript/ql/src/Declarations/UniquePropertyNames.ql +ql/javascript/ql/src/Declarations/UnreachableMethodOverloads.ql +ql/javascript/ql/src/Declarations/UnusedVariable.ql +ql/javascript/ql/src/Expressions/ComparisonWithNaN.ql +ql/javascript/ql/src/Expressions/DuplicateCondition.ql +ql/javascript/ql/src/Expressions/DuplicateProperty.ql +ql/javascript/ql/src/Expressions/DuplicateSwitchCase.ql ql/javascript/ql/src/Expressions/ExprHasNoEffect.ql +ql/javascript/ql/src/Expressions/HeterogeneousComparison.ql +ql/javascript/ql/src/Expressions/ImplicitOperandConversion.ql ql/javascript/ql/src/Expressions/MissingAwait.ql +ql/javascript/ql/src/Expressions/MissingDotLengthInComparison.ql +ql/javascript/ql/src/Expressions/MissingSpaceInAppend.ql +ql/javascript/ql/src/Expressions/MisspelledVariableName.ql +ql/javascript/ql/src/Expressions/RedundantExpression.ql +ql/javascript/ql/src/Expressions/SelfAssignment.ql +ql/javascript/ql/src/Expressions/ShiftOutOfRange.ql +ql/javascript/ql/src/Expressions/StringInsteadOfRegex.ql +ql/javascript/ql/src/Expressions/SuspiciousInvocation.ql +ql/javascript/ql/src/Expressions/SuspiciousPropAccess.ql +ql/javascript/ql/src/Expressions/UnboundEventHandlerReceiver.ql +ql/javascript/ql/src/Expressions/UnclearOperatorPrecedence.ql +ql/javascript/ql/src/Expressions/UnknownDirective.ql +ql/javascript/ql/src/Expressions/UnneededDefensiveProgramming.ql +ql/javascript/ql/src/Expressions/WhitespaceContradictsPrecedence.ql +ql/javascript/ql/src/LanguageFeatures/BadTypeof.ql +ql/javascript/ql/src/LanguageFeatures/ConditionalComments.ql +ql/javascript/ql/src/LanguageFeatures/DeleteVar.ql +ql/javascript/ql/src/LanguageFeatures/ExpressionClosures.ql +ql/javascript/ql/src/LanguageFeatures/ForInComprehensionBlocks.ql +ql/javascript/ql/src/LanguageFeatures/IllegalInvocation.ql +ql/javascript/ql/src/LanguageFeatures/InconsistentNew.ql +ql/javascript/ql/src/LanguageFeatures/InvalidPrototype.ql +ql/javascript/ql/src/LanguageFeatures/LengthComparisonOffByOne.ql +ql/javascript/ql/src/LanguageFeatures/NonLinearPattern.ql +ql/javascript/ql/src/LanguageFeatures/PropertyWriteOnPrimitive.ql +ql/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql +ql/javascript/ql/src/LanguageFeatures/SetterReturn.ql ql/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql +ql/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql +ql/javascript/ql/src/LanguageFeatures/SyntaxError.ql +ql/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql +ql/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql +ql/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql +ql/javascript/ql/src/LanguageFeatures/WithStatement.ql +ql/javascript/ql/src/LanguageFeatures/YieldInNonGenerator.ql +ql/javascript/ql/src/NodeJS/InvalidExport.ql +ql/javascript/ql/src/NodeJS/MissingExports.ql ql/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.ql +ql/javascript/ql/src/React/DirectStateMutation.ql +ql/javascript/ql/src/React/InconsistentStateUpdate.ql +ql/javascript/ql/src/React/UnsupportedStateUpdateInLifecycleMethod.ql +ql/javascript/ql/src/React/UnusedOrUndefinedStateProperty.ql +ql/javascript/ql/src/RegExp/BackrefBeforeGroup.ql +ql/javascript/ql/src/RegExp/BackrefIntoNegativeLookahead.ql +ql/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql +ql/javascript/ql/src/RegExp/EmptyCharacterClass.ql ql/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql +ql/javascript/ql/src/RegExp/UnboundBackref.ql +ql/javascript/ql/src/RegExp/UnmatchableCaret.ql +ql/javascript/ql/src/RegExp/UnmatchableDollar.ql +ql/javascript/ql/src/Statements/DanglingElse.ql +ql/javascript/ql/src/Statements/IgnoreArrayResult.ql +ql/javascript/ql/src/Statements/InconsistentLoopOrientation.ql +ql/javascript/ql/src/Statements/LabelInCase.ql +ql/javascript/ql/src/Statements/LoopIterationSkippedDueToShifting.ql +ql/javascript/ql/src/Statements/MisleadingIndentationAfterControlStmt.ql +ql/javascript/ql/src/Statements/ReturnAssignsLocal.ql +ql/javascript/ql/src/Statements/SuspiciousUnusedLoopIterationVariable.ql +ql/javascript/ql/src/Statements/UnreachableStatement.ql +ql/javascript/ql/src/Statements/UseOfReturnlessFunction.ql +ql/javascript/ql/src/Statements/UselessComparisonTest.ql +ql/javascript/ql/src/Statements/UselessConditional.ql +ql/javascript/ql/src/Vue/ArrowMethodOnVueInstance.ql diff --git a/javascript/ql/integration-tests/query-suite/javascript-code-scanning.qls.expected b/javascript/ql/integration-tests/query-suite/javascript-code-scanning.qls.expected index 1cf124ce3cf6..652ac0ebc1b9 100644 --- a/javascript/ql/integration-tests/query-suite/javascript-code-scanning.qls.expected +++ b/javascript/ql/integration-tests/query-suite/javascript-code-scanning.qls.expected @@ -31,7 +31,6 @@ ql/javascript/ql/src/Security/CWE-079/Xss.ql ql/javascript/ql/src/Security/CWE-079/XssThroughDom.ql ql/javascript/ql/src/Security/CWE-089/SqlInjection.ql ql/javascript/ql/src/Security/CWE-094/CodeInjection.ql -ql/javascript/ql/src/Security/CWE-094/ExpressionInjection.ql ql/javascript/ql/src/Security/CWE-094/ImproperCodeSanitization.ql ql/javascript/ql/src/Security/CWE-094/UnsafeDynamicMethodAccess.ql ql/javascript/ql/src/Security/CWE-1004/ClientExposedCookie.ql @@ -48,7 +47,6 @@ ql/javascript/ql/src/Security/CWE-201/PostMessageStar.ql ql/javascript/ql/src/Security/CWE-209/StackTraceExposure.ql ql/javascript/ql/src/Security/CWE-295/DisablingCertificateValidation.ql ql/javascript/ql/src/Security/CWE-300/InsecureDependencyResolution.ql -ql/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.ql ql/javascript/ql/src/Security/CWE-312/BuildArtifactLeak.ql ql/javascript/ql/src/Security/CWE-312/CleartextLogging.ql ql/javascript/ql/src/Security/CWE-312/CleartextStorage.ql diff --git a/javascript/ql/integration-tests/query-suite/javascript-security-and-quality.qls.expected b/javascript/ql/integration-tests/query-suite/javascript-security-and-quality.qls.expected index eb4acd38e39b..dd5877683082 100644 --- a/javascript/ql/integration-tests/query-suite/javascript-security-and-quality.qls.expected +++ b/javascript/ql/integration-tests/query-suite/javascript-security-and-quality.qls.expected @@ -119,7 +119,6 @@ ql/javascript/ql/src/Security/CWE-079/Xss.ql ql/javascript/ql/src/Security/CWE-079/XssThroughDom.ql ql/javascript/ql/src/Security/CWE-089/SqlInjection.ql ql/javascript/ql/src/Security/CWE-094/CodeInjection.ql -ql/javascript/ql/src/Security/CWE-094/ExpressionInjection.ql ql/javascript/ql/src/Security/CWE-094/ImproperCodeSanitization.ql ql/javascript/ql/src/Security/CWE-094/UnsafeCodeConstruction.ql ql/javascript/ql/src/Security/CWE-094/UnsafeDynamicMethodAccess.ql @@ -140,7 +139,6 @@ ql/javascript/ql/src/Security/CWE-201/PostMessageStar.ql ql/javascript/ql/src/Security/CWE-209/StackTraceExposure.ql ql/javascript/ql/src/Security/CWE-295/DisablingCertificateValidation.ql ql/javascript/ql/src/Security/CWE-300/InsecureDependencyResolution.ql -ql/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.ql ql/javascript/ql/src/Security/CWE-312/BuildArtifactLeak.ql ql/javascript/ql/src/Security/CWE-312/CleartextLogging.ql ql/javascript/ql/src/Security/CWE-312/CleartextStorage.ql diff --git a/javascript/ql/integration-tests/query-suite/javascript-security-extended.qls.expected b/javascript/ql/integration-tests/query-suite/javascript-security-extended.qls.expected index a5b5cfefdbc2..9b7cfd22ed6f 100644 --- a/javascript/ql/integration-tests/query-suite/javascript-security-extended.qls.expected +++ b/javascript/ql/integration-tests/query-suite/javascript-security-extended.qls.expected @@ -34,7 +34,6 @@ ql/javascript/ql/src/Security/CWE-079/Xss.ql ql/javascript/ql/src/Security/CWE-079/XssThroughDom.ql ql/javascript/ql/src/Security/CWE-089/SqlInjection.ql ql/javascript/ql/src/Security/CWE-094/CodeInjection.ql -ql/javascript/ql/src/Security/CWE-094/ExpressionInjection.ql ql/javascript/ql/src/Security/CWE-094/ImproperCodeSanitization.ql ql/javascript/ql/src/Security/CWE-094/UnsafeCodeConstruction.ql ql/javascript/ql/src/Security/CWE-094/UnsafeDynamicMethodAccess.ql @@ -55,7 +54,6 @@ ql/javascript/ql/src/Security/CWE-201/PostMessageStar.ql ql/javascript/ql/src/Security/CWE-209/StackTraceExposure.ql ql/javascript/ql/src/Security/CWE-295/DisablingCertificateValidation.ql ql/javascript/ql/src/Security/CWE-300/InsecureDependencyResolution.ql -ql/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.ql ql/javascript/ql/src/Security/CWE-312/BuildArtifactLeak.ql ql/javascript/ql/src/Security/CWE-312/CleartextLogging.ql ql/javascript/ql/src/Security/CWE-312/CleartextStorage.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 34c4df3d6fae..9d67dfc2cc7a 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 @@ -67,7 +67,6 @@ ql/javascript/ql/src/Summary/TaintSinks.ql ql/javascript/ql/src/Summary/TaintSources.ql ql/javascript/ql/src/definitions.ql ql/javascript/ql/src/experimental/Security/CWE-094-dataURL/CodeInjection.ql -ql/javascript/ql/src/experimental/Security/CWE-094/UntrustedCheckout.ql ql/javascript/ql/src/experimental/Security/CWE-099/EnvValueAndKeyInjection.ql ql/javascript/ql/src/experimental/Security/CWE-099/EnvValueInjection.ql ql/javascript/ql/src/experimental/Security/CWE-340/TokenBuiltFromUUID.ql @@ -147,4 +146,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/integration-tests/query-suite/test.py b/javascript/ql/integration-tests/query-suite/test.py index 54b6f94043f5..859df35f3698 100644 --- a/javascript/ql/integration-tests/query-suite/test.py +++ b/javascript/ql/integration-tests/query-suite/test.py @@ -2,7 +2,7 @@ import pytest from query_suites import * -well_known_query_suites = ['javascript-code-quality.qls', 'javascript-security-and-quality.qls', 'javascript-security-extended.qls', 'javascript-code-scanning.qls'] +well_known_query_suites = ['javascript-code-quality.qls', 'javascript-code-quality-extended.qls', 'javascript-security-and-quality.qls', 'javascript-security-extended.qls', 'javascript-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 0068a86fb4c4..e2d82cba8359 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.6.6 + +### Minor Analysis Improvements + +* Calls to `sinon.match()` are no longer incorrectly identified as regular expression operations. +* Improved data flow tracking through middleware to handle default value and similar patterns. +* Added `req._parsedUrl` as a remote input source. +* Improved taint tracking through calls to `serialize-javascript`. +* Removed `encodeURI` and `escape` functions from the sanitizer list for request forgery. +* The JavaScript extractor now skips generated JavaScript files if the original TypeScript files are already present. It also skips any files in the output directory specified in the `compilerOptions` part of the `tsconfig.json` file. +* Added support for Axios instances in the `axios` module. + ## 2.6.5 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/Expressions/ExprHasNoEffect.qll b/javascript/ql/lib/Expressions/ExprHasNoEffect.qll index eff5fa7fc989..9813d9b32ed9 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-06-20-execa.md b/javascript/ql/lib/change-notes/2025-06-20-execa.md new file mode 100644 index 000000000000..b22afe593f8f --- /dev/null +++ b/javascript/ql/lib/change-notes/2025-06-20-execa.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Enhanced modeling for the `execa` library, adding support for command execution methods `execaCommand`, `execaCommandSync`, `$`, and `$.sync`, as well as file system operations through `inputFile`, `pipeStdout`, `pipeAll`, and `pipeStderr`. diff --git a/javascript/ql/lib/change-notes/released/2.6.6.md b/javascript/ql/lib/change-notes/released/2.6.6.md new file mode 100644 index 000000000000..f11e9d42d997 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.6.6.md @@ -0,0 +1,11 @@ +## 2.6.6 + +### Minor Analysis Improvements + +* Calls to `sinon.match()` are no longer incorrectly identified as regular expression operations. +* Improved data flow tracking through middleware to handle default value and similar patterns. +* Added `req._parsedUrl` as a remote input source. +* Improved taint tracking through calls to `serialize-javascript`. +* Removed `encodeURI` and `escape` functions from the sanitizer list for request forgery. +* The JavaScript extractor now skips generated JavaScript files if the original TypeScript files are already present. It also skips any files in the output directory specified in the `compilerOptions` part of the `tsconfig.json` file. +* Added support for Axios instances in the `axios` module. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index b29c290895c1..305ff8cbbf2e 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.6.5 +lastReleaseVersion: 2.6.6 diff --git a/javascript/ql/lib/definitions.qll b/javascript/ql/lib/definitions.qll index 2cc9313d3132..2f1c99b7c606 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/ext/react.model.yml b/javascript/ql/lib/ext/react.model.yml new file mode 100644 index 000000000000..51b6aaefc46d --- /dev/null +++ b/javascript/ql/lib/ext/react.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/javascript-all + extensible: summaryModel + data: + - ["react", "Member[use]", "Argument[0].Awaited", "ReturnValue", "value"] diff --git a/javascript/ql/lib/javascript.qll b/javascript/ql/lib/javascript.qll index d75eed29b8e0..7accf28be072 100644 --- a/javascript/ql/lib/javascript.qll +++ b/javascript/ql/lib/javascript.qll @@ -92,6 +92,7 @@ import semmle.javascript.frameworks.DigitalOcean import semmle.javascript.frameworks.DomEvents import semmle.javascript.frameworks.Electron import semmle.javascript.frameworks.EventEmitter +import semmle.javascript.frameworks.Execa import semmle.javascript.frameworks.Files import semmle.javascript.frameworks.Firebase import semmle.javascript.frameworks.FormParsers diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index c015b3679f16..ea90eead8388 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.5 +version: 2.6.7-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/lib/semmle/javascript/Actions.qll b/javascript/ql/lib/semmle/javascript/Actions.qll index 8854eb11a55a..a3dd7542ec13 100644 --- a/javascript/ql/lib/semmle/javascript/Actions.qll +++ b/javascript/ql/lib/semmle/javascript/Actions.qll @@ -1,4 +1,6 @@ /** + * PENDING DEPRECATION. Models for GitHub Actions workflow files are part of the actions qlpack now. + * * Libraries for modeling GitHub Actions workflow files written in YAML. * See https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions. */ diff --git a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll index 3e882251cbf7..3bb04f2686be 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 40aee266379c..c31698333393 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 379403eb0ee7..e7534449f55b 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 8695c893f815..d7fe610b4f11 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 35ba8cfe601a..4a461961f8af 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 10970a2e8b04..85b7695cd70e 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/JsonParsers.qll b/javascript/ql/lib/semmle/javascript/JsonParsers.qll index e3f1f285a212..f447f0e41c9e 100644 --- a/javascript/ql/lib/semmle/javascript/JsonParsers.qll +++ b/javascript/ql/lib/semmle/javascript/JsonParsers.qll @@ -33,8 +33,7 @@ private class PlainJsonParserCall extends JsonParserCall { callee = DataFlow::moduleImport("parse-json") or callee = DataFlow::moduleImport("json-parse-better-errors") or callee = DataFlow::moduleImport("json-safe-parse") or - callee = AngularJS::angular().getAPropertyRead("fromJson") or - callee = DataFlow::moduleImport("serialize-javascript") + callee = AngularJS::angular().getAPropertyRead("fromJson") ) } diff --git a/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll b/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll index f573c1364378..bb1b23610c94 100644 --- a/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll +++ b/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll @@ -27,6 +27,8 @@ class JsonStringifyCall extends DataFlow::CallNode { ) or this = Templating::getAPipeCall(["json", "dump"]) + or + this = DataFlow::moduleImport("serialize-javascript").getACall() } /** diff --git a/javascript/ql/lib/semmle/javascript/Regexp.qll b/javascript/ql/lib/semmle/javascript/Regexp.qll index 642a3d196fb7..ea2993ae7da8 100644 --- a/javascript/ql/lib/semmle/javascript/Regexp.qll +++ b/javascript/ql/lib/semmle/javascript/Regexp.qll @@ -998,6 +998,8 @@ private predicate isUsedAsNonMatchObject(DataFlow::MethodCallNode call) { or // Result is obviously unused call.asExpr() = any(ExprStmt stmt).getExpr() + or + call = API::moduleImport("sinon").getMember("match").getACall() ) } diff --git a/javascript/ql/lib/semmle/javascript/Routing.qll b/javascript/ql/lib/semmle/javascript/Routing.qll index 530322a2d2c4..8fe9f79d8623 100644 --- a/javascript/ql/lib/semmle/javascript/Routing.qll +++ b/javascript/ql/lib/semmle/javascript/Routing.qll @@ -925,7 +925,7 @@ module Routing { private DataFlow::Node getAnAccessPathRhs(Node base, int n, string path) { // Assigned in the body of a route handler function, which is a middleware exists(RouteHandler handler | base = handler | - result = AccessPath::getAnAssignmentTo(handler.getParameter(n).ref(), path) and + result = AccessPath::getAnAssignmentTo(handler.getParameter(n).ref(), path).getALocalSource() and ( exists(handler.getAContinuationInvocation()) or diff --git a/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll b/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll index d10b60b92b5b..318ad2f8873e 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 4be331ed6a50..ab670700c24b 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 1eeb735124b5..2f9905f86e17 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 bc80826de5c9..7ab04ad5bd26 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 4da262a5caeb..b36bee312239 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 06729815e9a4..f861488a046c 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 5cf5bf1e48eb..a5af2737c186 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/ClientRequests.qll b/javascript/ql/lib/semmle/javascript/frameworks/ClientRequests.qll index 673bdf2de33f..22db9f24b99e 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/ClientRequests.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/ClientRequests.qll @@ -254,7 +254,7 @@ module ClientRequest { method = "request" and result = this.getOptionArgument(0, "data") or - method = ["post", "put"] and + method = ["post", "put", "patch"] and result = [this.getArgument(1), this.getOptionArgument(2, "data")] or method = ["postForm", "putForm", "patchForm"] and result = this.getArgument(1) @@ -289,6 +289,69 @@ module ClientRequest { } } + /** + * A model of a `axios` instance request. + */ + class AxiosInstanceRequest extends ClientRequest::Range, API::CallNode { + string method; + API::CallNode instance; + + // Instances of axios, e.g. `axios.create({ ... })` + AxiosInstanceRequest() { + instance = axios().getMember(["create", "createInstance"]).getACall() and + method = [httpMethodName(), "request", "postForm", "putForm", "patchForm", "getUri"] and + this = instance.getReturn().getMember(method).getACall() + } + + private int getOptionsArgIndex() { + (method = "get" or method = "delete" or method = "head") and + result = 0 + or + (method = "post" or method = "put" or method = "patch") and + result = 1 + } + + private DataFlow::Node getOptionArgument(string name) { + result = this.getOptionArgument(this.getOptionsArgIndex(), name) + } + + override DataFlow::Node getUrl() { + result = this.getArgument(0) or + result = this.getOptionArgument(urlPropertyName()) + } + + override DataFlow::Node getHost() { result = instance.getOptionArgument(0, "baseURL") } + + override DataFlow::Node getADataNode() { + method = ["post", "put", "patch"] and + result = [this.getArgument(1), this.getOptionArgument(2, "data")] + or + method = ["postForm", "putForm", "patchForm"] and result = this.getArgument(1) + or + result = this.getOptionArgument([0 .. 2], ["headers", "params"]) + } + + /** Gets the response type from the options passed in. */ + string getResponseType() { + exists(DataFlow::Node option | option = instance.getOptionArgument(0, "responseType") | + option.mayHaveStringValue(result) + ) + or + not exists(this.getOptionArgument("responseType")) and + result = "json" + } + + override DataFlow::Node getAResponseDataNode(string responseType, boolean promise) { + responseType = this.getResponseType() and + promise = true and + result = this + or + responseType = this.getResponseType() and + promise = false and + result = this.getReturn().getPromisedError().getMember("response").asSource() + } + } + /** An expression that is used as a credential in a request. */ private class AuthorizationHeader extends CredentialsNode { AuthorizationHeader() { diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Execa.qll b/javascript/ql/lib/semmle/javascript/frameworks/Execa.qll new file mode 100644 index 000000000000..2ef2fcde3868 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/Execa.qll @@ -0,0 +1,296 @@ +/** + * Models the `execa` library in terms of `FileSystemAccess` and `SystemCommandExecution`. + */ + +import javascript + +/** + * Provide model for [Execa](https://github.com/sindresorhus/execa) package + */ +module Execa { + /** + * The Execa input file read and output file write + */ + class ExecaFileSystemAccess extends FileSystemReadAccess, DataFlow::Node { + API::Node execaArg; + boolean isPipedToFile; + + ExecaFileSystemAccess() { + ( + execaArg = API::moduleImport("execa").getMember("$").getParameter(0) and + isPipedToFile = false + or + execaArg = + API::moduleImport("execa") + .getMember(["execa", "execaCommand", "execaCommandSync", "execaSync"]) + .getParameter([0, 1, 2]) and + isPipedToFile = false + or + execaArg = + API::moduleImport("execa") + .getMember(["execa", "execaCommand", "execaCommandSync", "execaSync"]) + .getReturn() + .getMember(["pipeStdout", "pipeAll", "pipeStderr"]) + .getParameter(0) and + isPipedToFile = true + ) and + this = execaArg.asSink() + } + + override DataFlow::Node getADataNode() { none() } + + override DataFlow::Node getAPathArgument() { + result = execaArg.getMember("inputFile").asSink() and isPipedToFile = false + or + result = execaArg.asSink() and isPipedToFile = true + } + } + + /** + * A call to `execa.execa` or `execa.execaSync` + */ + class ExecaCall extends API::CallNode { + boolean isSync; + + ExecaCall() { + this = API::moduleImport("execa").getMember("execa").getACall() and + isSync = false + or + this = API::moduleImport("execa").getMember("execaSync").getACall() and + isSync = true + or + this = API::moduleImport("execa").getACall() and + isSync = false + } + } + + /** + * The system command execution nodes for `execa.execa` or `execa.execaSync` functions + */ + class ExecaExec extends SystemCommandExecution, ExecaCall { + ExecaExec() { isSync = [false, true] } + + override DataFlow::Node getACommandArgument() { result = this.getArgument(0) } + + override predicate isShellInterpreted(DataFlow::Node arg) { + // if shell: true then first and second args are sinks + // options can be third argument + arg = [this.getArgument(0), this.getParameter(1).getArrayElement().asSink()] and + isExecaShellEnable(this.getParameter(2)) + or + // options can be second argument + arg = this.getArgument(0) and + isExecaShellEnable(this.getParameter(1)) + } + + override DataFlow::Node getArgumentList() { + // execa(cmd, [arg]); + exists(DataFlow::Node arg | arg = this.getArgument(1) | + // if it is a object then it is a option argument not command argument + result = arg and not arg.asExpr() instanceof ObjectExpr + ) + } + + override predicate isSync() { isSync = true } + + override DataFlow::Node getOptionsArg() { + result = this.getLastArgument() and result.asExpr() instanceof ObjectExpr + } + } + + /** + * A call to `execa.$` or `execa.$.sync` or `execa.$({})` or `execa.$.sync({})` tag functions + */ + private class ExecaScriptCall extends API::CallNode { + boolean isSync; + + ExecaScriptCall() { + exists(API::Node script | + script = + [ + API::moduleImport("execa").getMember("$"), + API::moduleImport("execa").getMember("$").getReturn() + ] + | + this = script.getACall() and + isSync = false + or + this = script.getMember("sync").getACall() and + isSync = true + ) + } + } + + /** + * The system command execution nodes for `execa.$` or `execa.$.sync` tag functions + */ + class ExecaScript extends SystemCommandExecution, ExecaScriptCall { + ExecaScript() { isSync = [false, true] } + + override DataFlow::Node getACommandArgument() { + result = this.getParameter(1).asSink() and + not isTaggedTemplateFirstChildAnElement(this.getParameter(1).asSink().asExpr().getParent()) + } + + override predicate isShellInterpreted(DataFlow::Node arg) { + isExecaShellEnable(this.getParameter(0)) and + arg = this.getAParameter().asSink() + } + + override DataFlow::Node getArgumentList() { + result = this.getParameter(any(int i | i >= 1)).asSink() and + isTaggedTemplateFirstChildAnElement(this.getParameter(1).asSink().asExpr().getParent()) + or + result = this.getParameter(any(int i | i >= 2)).asSink() and + not isTaggedTemplateFirstChildAnElement(this.getParameter(1).asSink().asExpr().getParent()) + } + + override DataFlow::Node getOptionsArg() { result = this.getParameter(0).asSink() } + + override predicate isSync() { isSync = true } + } + + /** + * A call to `execa.execaCommandSync` or `execa.execaCommand` + */ + private class ExecaCommandCall extends API::CallNode { + boolean isSync; + + ExecaCommandCall() { + this = API::moduleImport("execa").getMember("execaCommandSync").getACall() and + isSync = true + or + this = API::moduleImport("execa").getMember("execaCommand").getACall() and + isSync = false + } + } + + /** + * The system command execution nodes for `execa.execaCommand` or `execa.execaCommandSync` functions + */ + class ExecaCommandExec extends SystemCommandExecution, ExecaCommandCall { + ExecaCommandExec() { isSync = [false, true] } + + override DataFlow::Node getACommandArgument() { + result = this.(DataFlow::CallNode).getArgument(0) + } + + override DataFlow::Node getArgumentList() { + // execaCommand(`${cmd} ${arg}`); + result.asExpr() = this.getParameter(0).asSink().asExpr().getAChildExpr() and + not result.asExpr() = this.getArgument(0).asExpr().getChildExpr(0) + } + + override predicate isShellInterpreted(DataFlow::Node arg) { + // execaCommandSync(`${cmd} ${arg}`, {shell: true}) + arg.asExpr() = this.getArgument(0).asExpr().getAChildExpr+() and + isExecaShellEnable(this.getParameter(1)) + or + // there is only one argument that is constructed in previous nodes, + // it makes sanitizing really hard to select whether it is vulnerable to argument injection or not + arg = this.getParameter(0).asSink() and + not exists(this.getArgument(0).asExpr().getChildExpr(1)) + } + + override predicate isSync() { isSync = true } + + override DataFlow::Node getOptionsArg() { + result = this.getLastArgument() and result.asExpr() instanceof ObjectExpr + } + } + + /** Gets a TemplateLiteral and check if first child is a template element */ + private predicate isTaggedTemplateFirstChildAnElement(TemplateLiteral templateLit) { + exists(templateLit.getChildExpr(0).(TemplateElement)) + } + + /** + * Holds whether Execa has shell enabled options or not, get Parameter responsible for options + */ + pragma[inline] + private predicate isExecaShellEnable(API::Node n) { + n.getMember("shell").asSink().asExpr().(BooleanLiteral).getValue() = "true" + } + + /** + * A call to `execa.node` + */ + class ExecaNodeCall extends SystemCommandExecution, API::CallNode { + ExecaNodeCall() { this = API::moduleImport("execa").getMember("node").getACall() } + + override DataFlow::Node getACommandArgument() { result = this.getArgument(0) } + + override predicate isShellInterpreted(DataFlow::Node arg) { none() } + + override DataFlow::Node getArgumentList() { + result = this.getArgument(1) and + not result.asExpr() instanceof ObjectExpr + } + + override predicate isSync() { none() } + + override DataFlow::Node getOptionsArg() { + result = this.getLastArgument() and + result.asExpr() instanceof ObjectExpr + } + } + + /** + * A call to `execa.stdout`, `execa.stderr`, or `execa.sync` + */ + class ExecaStreamCall extends SystemCommandExecution, API::CallNode { + string methodName; + + ExecaStreamCall() { + methodName in ["stdout", "stderr", "sync"] and + this = API::moduleImport("execa").getMember(methodName).getACall() + } + + override DataFlow::Node getACommandArgument() { result = this.getArgument(0) } + + override predicate isShellInterpreted(DataFlow::Node arg) { + arg = this.getArgument(0) and + isExecaShellEnable(this.getParameter([1, 2])) + } + + override DataFlow::Node getArgumentList() { + result = this.getArgument(1) and + not result.asExpr() instanceof ObjectExpr + } + + override predicate isSync() { methodName = "sync" } + + override DataFlow::Node getOptionsArg() { + result = this.getLastArgument() and + result.asExpr() instanceof ObjectExpr + } + } + + /** + * A call to `execa.shell` or `execa.shellSync` + */ + class ExecaShellCall extends SystemCommandExecution, API::CallNode { + boolean sync; + + ExecaShellCall() { + this = API::moduleImport("execa").getMember("shell").getACall() and + sync = false + or + this = API::moduleImport("execa").getMember("shellSync").getACall() and + sync = true + } + + override DataFlow::Node getACommandArgument() { result = this.getArgument(0) } + + override predicate isShellInterpreted(DataFlow::Node arg) { arg = this.getACommandArgument() } + + override DataFlow::Node getArgumentList() { none() } + + override predicate isSync() { sync = true } + + override DataFlow::Node getOptionsArg() { + result = this.getArgument(1) and + result.asExpr() instanceof ObjectExpr + } + } +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Express.qll b/javascript/ql/lib/semmle/javascript/frameworks/Express.qll index ffeee7df73ee..bcfcffb82a0f 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Express.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Express.qll @@ -618,9 +618,9 @@ module Express { kind = "body" and this = ref.getAPropertyRead("body") or - // `req.path` + // `req.path` and `req._parsedUrl` kind = "url" and - this = ref.getAPropertyRead("path") + this = ref.getAPropertyRead(["path", "_parsedUrl"]) ) } diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Fastify.qll b/javascript/ql/lib/semmle/javascript/frameworks/Fastify.qll index dafc38ca8573..26dde3fc78bd 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Fastify.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Fastify.qll @@ -1,12 +1,12 @@ /** - * Provides classes for working with [Fastify](https://www.fastify.io/) applications. + * Provides classes for working with [Fastify](https://www.fastify.dev/) applications. */ import javascript import semmle.javascript.frameworks.HTTP /** - * Provides classes for working with [Fastify](https://www.fastify.io/) applications. + * Provides classes for working with [Fastify](https://www.fastify.dev/) applications. */ module Fastify { /** diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Nest.qll b/javascript/ql/lib/semmle/javascript/frameworks/Nest.qll index dd6e1a7d9159..fcd8da5c8931 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) ) } @@ -464,6 +447,61 @@ module NestJS { } } + /** + * A NestJS Middleware Class + */ + private class NestMiddlewareClass extends DataFlow::ClassNode { + NestMiddlewareClass() { + exists(ClassDefinition cls | + this = cls.flow() and + cls.getASuperInterface().hasUnderlyingType("@nestjs/common", "NestMiddleware") + ) + } + + DataFlow::FunctionNode getUseFunction() { result = this.getInstanceMethod("use") } + } + + /** + * A NestJS Middleware Class route handler (the `use` method) + */ + private class MiddlewareRouteHandler extends Http::RouteHandler, DataFlow::FunctionNode { + MiddlewareRouteHandler() { this = any(NestMiddlewareClass m).getUseFunction() } + + override Http::HeaderDefinition getAResponseHeader(string name) { none() } + + /** + * Gets the request object used by this route + */ + DataFlow::ParameterNode getRequest() { result = this.getParameter(0) } + + /** + * Gets the response object used by this route + */ + DataFlow::ParameterNode getResponse() { result = this.getParameter(1) } + } + + /** + * A source of `express` request objects for NestJS middlewares + */ + private class MiddlewareRequestSource extends Express::RequestSource { + MiddlewareRouteHandler middlewareRouteHandler; + + MiddlewareRequestSource() { this = middlewareRouteHandler.getRequest() } + + override Http::RouteHandler getRouteHandler() { result = middlewareRouteHandler } + } + + /** + * A source of `express` response objects for NestJS middlewares + */ + private class MiddlewareResponseSource extends Express::ResponseSource { + MiddlewareRouteHandler middlewareRouteHandler; + + MiddlewareResponseSource() { this = middlewareRouteHandler.getResponse() } + + override Http::RouteHandler getRouteHandler() { result = middlewareRouteHandler } + } + /** * A value passed in the `providers` array in: * ```js @@ -472,21 +510,53 @@ module NestJS { * ``` */ private DataFlow::Node providerTuple() { - result = - DataFlow::moduleImport("@nestjs/common") - .getAPropertyRead("Module") - .getACall() - .getOptionArgument(0, "providers") - .getALocalSource() - .(DataFlow::ArrayCreationNode) - .getAnElement() + exists(DataFlow::CallNode moduleCall | + moduleCall = DataFlow::moduleImport("@nestjs/common").getAPropertyRead("Module").getACall() and + result = providerTupleAux(moduleCall.getArgument(0).getALocalSource()) + ) + } + + private DataFlow::Node providerTupleAux(DataFlow::ObjectLiteralNode o) { + ( + result = + o.getAPropertyWrite("providers") + .getRhs() + .getALocalSource() + .(DataFlow::ArrayCreationNode) + .getAnElement() + or + result = + providerTupleAux(o.getAPropertyWrite("imports") + .getRhs() + .getALocalSource() + .(DataFlow::ArrayCreationNode) + .getAnElement() + .(DataFlow::CallNode) + .getCalleeNode() + .getAFunctionValue() + .getFunction() + .getAReturnedExpr() + .flow()) + ) + } + + private DataFlow::Node getConcreteClassFromProviderTuple(DataFlow::SourceNode tuple) { + result = tuple.getAPropertyWrite("useClass").getRhs() + or + exists(DataFlow::FunctionNode f | + f = tuple.getAPropertyWrite("useFactory").getRhs().getAFunctionValue() and + result.getAstNode() = f.getFunction().getAReturnedExpr().getType().(ClassType).getClass() + ) + or + result.getAstNode() = + tuple.getAPropertyWrite("useValue").getRhs().asExpr().getType().(ClassType).getClass() } private predicate providerPair(DataFlow::Node interface, DataFlow::Node concreteClass) { exists(DataFlow::SourceNode tuple | tuple = providerTuple().getALocalSource() and interface = tuple.getAPropertyWrite("provide").getRhs() and - concreteClass = tuple.getAPropertyWrite("useClass").getRhs() + concreteClass = getConcreteClassFromProviderTuple(tuple) ) } diff --git a/javascript/ql/lib/semmle/javascript/frameworks/React.qll b/javascript/ql/lib/semmle/javascript/frameworks/React.qll index 4d126b888290..3a361e705940 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/React.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/React.qll @@ -875,3 +875,22 @@ private class ReactPropAsViewComponentInput extends ViewComponentInput { override string getSourceType() { result = "React props" } } + +private predicate isServerFunction(DataFlow::FunctionNode func) { + exists(Directive::UseServerDirective useServer | + useServer.getContainer() = func.getFunction() + or + useServer.getContainer().(Module).getAnExportedValue(_).getAFunctionValue() = func + ) +} + +private class ServerFunctionRemoteFlowSource extends RemoteFlowSource { + ServerFunctionRemoteFlowSource() { + exists(DataFlow::FunctionNode func | + isServerFunction(func) and + this = func.getAParameter() + ) + } + + override string getSourceType() { result = "React server function parameter" } +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/SystemCommandExecutors.qll b/javascript/ql/lib/semmle/javascript/frameworks/SystemCommandExecutors.qll index 98ee244f7699..20baafa04755 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/SystemCommandExecutors.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/SystemCommandExecutors.qll @@ -16,17 +16,6 @@ private predicate execApi( cmdArg = 0 and shell = false and optionsArg = -1 - or - mod = "execa" and - optionsArg = -1 and - ( - shell = false and - fn = ["node", "stdout", "stderr", "sync"] - or - shell = true and - fn = ["command", "commandSync", "shell", "shellSync"] - ) and - cmdArg = 0 ) } @@ -38,8 +27,6 @@ private predicate execApi(string mod, int cmdArg, int optionsArg, boolean shell) mod = "cross-spawn-async" and cmdArg = 0 and optionsArg = -1 or mod = "exec-async" and cmdArg = 0 and optionsArg = -1 - or - mod = "execa" and cmdArg = 0 and optionsArg = -1 ) or shell = true and 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 c06490b84368..5e9846e9ad55 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 4fad4ae1b059..70beadbfa573 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 000000000000..96e72108e2ec --- /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 000000000000..ddf5757a38cc --- /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 000000000000..8f6628278c4f --- /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/lib/semmle/javascript/security/dataflow/RequestForgeryCustomizations.qll b/javascript/ql/lib/semmle/javascript/security/dataflow/RequestForgeryCustomizations.qll index 8d182d116c6d..ec46ef91c3c0 100644 --- a/javascript/ql/lib/semmle/javascript/security/dataflow/RequestForgeryCustomizations.qll +++ b/javascript/ql/lib/semmle/javascript/security/dataflow/RequestForgeryCustomizations.qll @@ -106,10 +106,12 @@ module RequestForgery { private import Xss as Xss /** - * A call to `encodeURI` or `encodeURIComponent`, viewed as a sanitizer for request forgery. + * A call to `encodeURIComponent`, viewed as a sanitizer for request forgery. * These calls will escape "/" to "%2F", which is not a problem for request forgery. - * The result from calling `encodeURI` or `encodeURIComponent` is not a valid URL, and only makes sense + * The result from calling `encodeURIComponent` is not a valid URL, and only makes sense * as a part of a URL. */ - class UriEncodingSanitizer extends Sanitizer instanceof Xss::Shared::UriEncodingSanitizer { } + class UriEncodingSanitizer extends Sanitizer instanceof Xss::Shared::UriEncodingSanitizer { + UriEncodingSanitizer() { this.encodesPathSeparators() } + } } diff --git a/javascript/ql/lib/semmle/javascript/security/dataflow/Xss.qll b/javascript/ql/lib/semmle/javascript/security/dataflow/Xss.qll index 41487b8c3b64..f139ccc48dbb 100644 --- a/javascript/ql/lib/semmle/javascript/security/dataflow/Xss.qll +++ b/javascript/ql/lib/semmle/javascript/security/dataflow/Xss.qll @@ -47,15 +47,22 @@ module Shared { } /** - * A call to `encodeURI` or `encodeURIComponent`, viewed as a sanitizer for + * A call to `encodeURI`, `encodeURIComponent` or `escape`, viewed as a sanitizer for * XSS vulnerabilities. */ class UriEncodingSanitizer extends Sanitizer, DataFlow::CallNode { + string name; + UriEncodingSanitizer() { - exists(string name | this = DataFlow::globalVarRef(name).getACall() | - name in ["encodeURI", "encodeURIComponent", "escape"] - ) + this = DataFlow::globalVarRef(name).getACall() and + name in ["encodeURI", "encodeURIComponent", "escape"] } + + /** + * Holds if this URI encoding function properly encodes path separators, + * making it safe for request forgery prevention. + */ + predicate encodesPathSeparators() { name = "encodeURIComponent" } } /** diff --git a/javascript/ql/src/AngularJS/DependencyMismatch.ql b/javascript/ql/src/AngularJS/DependencyMismatch.ql index 83f9b1cb73ac..a6990a444779 100644 --- a/javascript/ql/src/AngularJS/DependencyMismatch.ql +++ b/javascript/ql/src/AngularJS/DependencyMismatch.ql @@ -7,8 +7,9 @@ * @problem.severity warning * @precision very-high * @id js/angular/dependency-injection-mismatch - * @tags correctness - * maintainability + * @tags quality + * reliability + * correctness * frameworks/angularjs */ diff --git a/javascript/ql/src/AngularJS/DuplicateDependency.ql b/javascript/ql/src/AngularJS/DuplicateDependency.ql index 12036e03339a..38f46d8acf96 100644 --- a/javascript/ql/src/AngularJS/DuplicateDependency.ql +++ b/javascript/ql/src/AngularJS/DuplicateDependency.ql @@ -5,7 +5,9 @@ * @problem.severity warning * @precision very-high * @id js/angular/duplicate-dependency - * @tags maintainability + * @tags quality + * maintainability + * readability * frameworks/angularjs */ diff --git a/javascript/ql/src/AngularJS/IncompatibleService.ql b/javascript/ql/src/AngularJS/IncompatibleService.ql index c22eccc2dd43..511f5c72cdc5 100644 --- a/javascript/ql/src/AngularJS/IncompatibleService.ql +++ b/javascript/ql/src/AngularJS/IncompatibleService.ql @@ -5,7 +5,9 @@ * @problem.severity error * @precision high * @id js/angular/incompatible-service - * @tags correctness + * @tags quality + * reliability + * correctness * frameworks/angularjs */ diff --git a/javascript/ql/src/AngularJS/MissingExplicitInjection.ql b/javascript/ql/src/AngularJS/MissingExplicitInjection.ql index f7ff51fb5475..4b007974bcfe 100644 --- a/javascript/ql/src/AngularJS/MissingExplicitInjection.ql +++ b/javascript/ql/src/AngularJS/MissingExplicitInjection.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision high * @id js/angular/missing-explicit-injection - * @tags correctness - * maintainability + * @tags quality + * reliability + * correctness * frameworks/angularjs */ diff --git a/javascript/ql/src/AngularJS/RepeatedInjection.ql b/javascript/ql/src/AngularJS/RepeatedInjection.ql index 27fb0dc2f621..8c1d1379893e 100644 --- a/javascript/ql/src/AngularJS/RepeatedInjection.ql +++ b/javascript/ql/src/AngularJS/RepeatedInjection.ql @@ -5,7 +5,9 @@ * @problem.severity warning * @precision high * @id js/angular/repeated-dependency-injection - * @tags maintainability + * @tags quality + * maintainability + * readability * frameworks/angularjs */ diff --git a/javascript/ql/src/AngularJS/UseNgSrc.ql b/javascript/ql/src/AngularJS/UseNgSrc.ql index 333b36722f53..51255af80710 100644 --- a/javascript/ql/src/AngularJS/UseNgSrc.ql +++ b/javascript/ql/src/AngularJS/UseNgSrc.ql @@ -7,7 +7,9 @@ * @problem.severity warning * @precision very-high * @id js/angular/expression-in-url-attribute - * @tags maintainability + * @tags quality + * reliability + * correctness * frameworks/angularjs */ diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index b6939ad5ec42..11615030c502 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,18 @@ +## 1.7.0 + +### Query Metadata Changes + +* The `quality` tag has been added to multiple JavaScript quality queries, with tags for `reliability` or `maintainability` categories and their sub-categories. See [Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags) for more information about these categories. +* Added `reliability` tag to the `js/suspicious-method-name-declaration` query. +* Added `reliability` and `language-features` tags to the `js/template-syntax-in-string-literal` query. + +### Minor Analysis Improvements + +* The `js/loop-iteration-skipped-due-to-shifting` query now has the `reliability` tag. +* Fixed false positives in the `js/loop-iteration-skipped-due-to-shifting` query when the return value of `splice` is used to decide whether to adjust the loop counter. +* Fixed false positives in the `js/template-syntax-in-string-literal` query where template syntax in string concatenation and "manual string interpolation" patterns were incorrectly flagged. +* The `js/useless-expression` query now correctly flags only the innermost expressions with no effect, avoiding duplicate alerts on compound expressions. + ## 1.6.2 No user-facing changes. diff --git a/javascript/ql/src/DOM/DuplicateAttributes.ql b/javascript/ql/src/DOM/DuplicateAttributes.ql index 77c1ddea93bd..a6f73982f73f 100644 --- a/javascript/ql/src/DOM/DuplicateAttributes.ql +++ b/javascript/ql/src/DOM/DuplicateAttributes.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity warning * @id js/duplicate-html-attribute - * @tags maintainability + * @tags quality + * maintainability * readability * @precision very-high */ diff --git a/javascript/ql/src/DOM/MalformedIdAttribute.ql b/javascript/ql/src/DOM/MalformedIdAttribute.ql index d9a99aa1937e..dea9d25f9179 100644 --- a/javascript/ql/src/DOM/MalformedIdAttribute.ql +++ b/javascript/ql/src/DOM/MalformedIdAttribute.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity warning * @id js/malformed-html-id - * @tags maintainability + * @tags quality + * reliability * correctness * external/cwe/cwe-758 * @precision very-high diff --git a/javascript/ql/src/DOM/PseudoEval.ql b/javascript/ql/src/DOM/PseudoEval.ql index c6bed6ed75bf..9ea1e9d2fb40 100644 --- a/javascript/ql/src/DOM/PseudoEval.ql +++ b/javascript/ql/src/DOM/PseudoEval.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity recommendation * @id js/eval-like-call - * @tags maintainability + * @tags quality + * maintainability + * readability * external/cwe/cwe-676 * @precision very-high */ diff --git a/javascript/ql/src/Declarations/ArgumentsRedefined.ql b/javascript/ql/src/Declarations/ArgumentsRedefined.ql index dc1ca153062f..01d0451d6f41 100644 --- a/javascript/ql/src/Declarations/ArgumentsRedefined.ql +++ b/javascript/ql/src/Declarations/ArgumentsRedefined.ql @@ -6,8 +6,9 @@ * @kind problem * @problem.severity recommendation * @id js/arguments-redefinition - * @tags efficiency - * maintainability + * @tags quality + * reliability + * performance * @precision very-high */ diff --git a/javascript/ql/src/Declarations/AssignmentToConst.ql b/javascript/ql/src/Declarations/AssignmentToConst.ql index f2a24832c6a3..2aebfad0054e 100644 --- a/javascript/ql/src/Declarations/AssignmentToConst.ql +++ b/javascript/ql/src/Declarations/AssignmentToConst.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity error * @id js/assignment-to-constant - * @tags reliability + * @tags quality + * reliability * correctness * @precision very-high */ diff --git a/javascript/ql/src/Declarations/ClobberingVarInit.ql b/javascript/ql/src/Declarations/ClobberingVarInit.ql index 2ae7a8910354..5a3fe406d7e0 100644 --- a/javascript/ql/src/Declarations/ClobberingVarInit.ql +++ b/javascript/ql/src/Declarations/ClobberingVarInit.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity error * @id js/variable-initialization-conflict - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-563 * @precision very-high diff --git a/javascript/ql/src/Declarations/ConflictingFunctions.ql b/javascript/ql/src/Declarations/ConflictingFunctions.ql index 60f3200c369f..e15f49acd93f 100644 --- a/javascript/ql/src/Declarations/ConflictingFunctions.ql +++ b/javascript/ql/src/Declarations/ConflictingFunctions.ql @@ -6,7 +6,8 @@ * @kind problem * @problem.severity error * @id js/function-declaration-conflict - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-563 * @precision high diff --git a/javascript/ql/src/Declarations/DeadStoreOfLocal.ql b/javascript/ql/src/Declarations/DeadStoreOfLocal.ql index 70b3ba0e2e2b..b09e1435739f 100644 --- a/javascript/ql/src/Declarations/DeadStoreOfLocal.ql +++ b/javascript/ql/src/Declarations/DeadStoreOfLocal.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity warning * @id js/useless-assignment-to-local - * @tags maintainability + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-563 * @precision very-high */ diff --git a/javascript/ql/src/Declarations/DeadStoreOfProperty.ql b/javascript/ql/src/Declarations/DeadStoreOfProperty.ql index c8cb0d8536e8..8930a13dfa4e 100644 --- a/javascript/ql/src/Declarations/DeadStoreOfProperty.ql +++ b/javascript/ql/src/Declarations/DeadStoreOfProperty.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity warning * @id js/useless-assignment-to-property - * @tags maintainability + * @tags quality + * maintainability + * useless-code * @precision high */ diff --git a/javascript/ql/src/Declarations/DeclBeforeUse.ql b/javascript/ql/src/Declarations/DeclBeforeUse.ql index b58fab9e465f..ddf715cefdb9 100644 --- a/javascript/ql/src/Declarations/DeclBeforeUse.ql +++ b/javascript/ql/src/Declarations/DeclBeforeUse.ql @@ -4,7 +4,8 @@ * @kind problem * @problem.severity warning * @id js/use-before-declaration - * @tags maintainability + * @tags quality + * maintainability * readability * @precision very-high */ diff --git a/javascript/ql/src/Declarations/DefaultArgumentReferencesNestedFunction.ql b/javascript/ql/src/Declarations/DefaultArgumentReferencesNestedFunction.ql index cd13314095c1..934d2d6ddd3b 100644 --- a/javascript/ql/src/Declarations/DefaultArgumentReferencesNestedFunction.ql +++ b/javascript/ql/src/Declarations/DefaultArgumentReferencesNestedFunction.ql @@ -6,7 +6,8 @@ * @kind problem * @problem.severity error * @id js/nested-function-reference-in-default-parameter - * @tags reliability + * @tags quality + * reliability * correctness * @precision very-high */ diff --git a/javascript/ql/src/Declarations/DuplicateVarDecl.ql b/javascript/ql/src/Declarations/DuplicateVarDecl.ql index 4a1c1bdb38fc..03dd4bb75173 100644 --- a/javascript/ql/src/Declarations/DuplicateVarDecl.ql +++ b/javascript/ql/src/Declarations/DuplicateVarDecl.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity recommendation * @id js/duplicate-variable-declaration - * @tags maintainability + * @tags quality + * maintainability + * readability * @precision very-high */ diff --git a/javascript/ql/src/Declarations/IneffectiveParameterType.ql b/javascript/ql/src/Declarations/IneffectiveParameterType.ql index 18899bd0c4e6..58480a84bf21 100644 --- a/javascript/ql/src/Declarations/IneffectiveParameterType.ql +++ b/javascript/ql/src/Declarations/IneffectiveParameterType.ql @@ -5,9 +5,10 @@ * @problem.severity warning * @id js/ineffective-parameter-type * @precision high - * @tags correctness + * @tags quality + * reliability + * correctness * typescript - * quality */ import javascript diff --git a/javascript/ql/src/Declarations/MissingThisQualifier.ql b/javascript/ql/src/Declarations/MissingThisQualifier.ql index 0d41cf19b19a..3bdf1080b11e 100644 --- a/javascript/ql/src/Declarations/MissingThisQualifier.ql +++ b/javascript/ql/src/Declarations/MissingThisQualifier.ql @@ -4,7 +4,8 @@ * @kind problem * @problem.severity error * @id js/missing-this-qualifier - * @tags maintainability + * @tags quality + * reliability * correctness * methods * @precision high diff --git a/javascript/ql/src/Declarations/MissingVarDecl.ql b/javascript/ql/src/Declarations/MissingVarDecl.ql index 8dd40cb064a2..390fc0af51cd 100644 --- a/javascript/ql/src/Declarations/MissingVarDecl.ql +++ b/javascript/ql/src/Declarations/MissingVarDecl.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity warning * @id js/missing-variable-declaration - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * @precision high */ diff --git a/javascript/ql/src/Declarations/MixedStaticInstanceThisAccess.ql b/javascript/ql/src/Declarations/MixedStaticInstanceThisAccess.ql index a8f771706f17..5941e51d3b03 100644 --- a/javascript/ql/src/Declarations/MixedStaticInstanceThisAccess.ql +++ b/javascript/ql/src/Declarations/MixedStaticInstanceThisAccess.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity error * @id js/mixed-static-instance-this-access - * @tags correctness + * @tags quality + * reliability + * correctness * methods * @precision high */ diff --git a/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.qhelp b/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.qhelp index e59f290ae6df..652d8b544d0f 100644 --- a/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.qhelp +++ b/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.qhelp @@ -4,50 +4,73 @@

    -In TypeScript the keywords constructor and new for -member declarations are used to declare constructors in classes and interfaces -respectively. -However, a member declaration with the name new in an interface -or constructor in a class, will declare an ordinary method named -new or constructor rather than a constructor. -Similarly, the keyword function is used to declare functions in -some contexts. However, using the name function for a class -or interface member declaration declares a method named function. +In TypeScript, certain keywords have special meanings for member declarations, and misusing them can create confusion: +

    + +
      +
    • In classes, use constructor rather than new to declare constructors. Using new within a class creates a method named "new" and not a constructor signature.
    • +
    • In interfaces, use new rather than constructor to declare constructor signatures. Using constructor within an interface creates a method named "constructor" and not a constructor signature.
    • +
    • Similarly, the keyword function is used to declare functions in some contexts. However, using the name function for a class or interface member declaration declares a method named "function".
    • +
    + +

    +When these keywords are misused, TypeScript will interpret them as regular method names rather than their intended special syntax, leading to code that may not work as expected.

    -Declare classes as classes and not as interfaces. -Use the keyword constructor to declare constructors in a class, -use the keyword new to declare constructors inside interfaces, -and don't use function when declaring a call signature in an -interface. +Consider following these guidelines for clearer code:

    +
      +
    • For classes, use constructor to declare constructors.
    • +
    • For interfaces, use new to declare constructor signatures (call signatures that create new instances).
    • +
    • Avoid accidentally creating methods named function by misusing the function keyword within class or interface declarations.
    • +
    +

    -The below example declares an interface Point with 2 fields -and a method called constructor. The interface does not declare -a class Point with a constructor, which was likely what the -developer meant to create. +The following examples show common mistakes when using these keywords:

    -

    -The below example is a fixed version of the above, where the interface is -instead declared as a class, thereby describing the type the developer meant -in the first place. +This interface mistakenly uses constructor, which creates a method named "constructor" instead of a constructor signature:

    + +

    +Use new for constructor signatures in interfaces: +

    +

    +This class mistakenly uses new, which creates a method named "new" instead of a constructor: +

    + + +

    +Use constructor for constructors in classes: +

    + + +

    +This interface uses function as a method name, which declares a method named "function" rather than declaring a function: +

    + + +

    +Use a descriptive method name instead: +

    + +
    +
  • TypeScript Handbook: Classes - Constructors.
  • TypeScript specification: Constructor Type Literals.
  • TypeScript specification: Constructor Parameters.
  • diff --git a/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql b/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql index c185e5c4d04e..fafa234f5f78 100644 --- a/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql +++ b/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql @@ -6,7 +6,9 @@ * @problem.severity warning * @id js/suspicious-method-name-declaration * @precision high - * @tags correctness + * @tags quality + * reliability + * correctness * typescript * methods */ diff --git a/javascript/ql/src/Declarations/TemporalDeadZone.ql b/javascript/ql/src/Declarations/TemporalDeadZone.ql index dbb5f7275d35..f51303ee3921 100644 --- a/javascript/ql/src/Declarations/TemporalDeadZone.ql +++ b/javascript/ql/src/Declarations/TemporalDeadZone.ql @@ -5,8 +5,10 @@ * @kind problem * @problem.severity error * @id js/variable-use-in-temporal-dead-zone - * @tags portability + * @tags quality + * reliability * correctness + * portability * @precision very-high */ diff --git a/javascript/ql/src/Declarations/UniqueParameterNames.ql b/javascript/ql/src/Declarations/UniqueParameterNames.ql index bb595cbe6070..53b3657b9661 100644 --- a/javascript/ql/src/Declarations/UniqueParameterNames.ql +++ b/javascript/ql/src/Declarations/UniqueParameterNames.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity error * @id js/duplicate-parameter-name - * @tags reliability + * @tags quality + * reliability * correctness * @precision very-high */ diff --git a/javascript/ql/src/Declarations/UniquePropertyNames.ql b/javascript/ql/src/Declarations/UniquePropertyNames.ql index e98857945ad8..f168b46c54ec 100644 --- a/javascript/ql/src/Declarations/UniquePropertyNames.ql +++ b/javascript/ql/src/Declarations/UniquePropertyNames.ql @@ -6,7 +6,8 @@ * @kind problem * @problem.severity error * @id js/overwritten-property - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-563 * @precision very-high diff --git a/javascript/ql/src/Declarations/UnreachableMethodOverloads.ql b/javascript/ql/src/Declarations/UnreachableMethodOverloads.ql index 23406eb0b72a..a68617ea2f11 100644 --- a/javascript/ql/src/Declarations/UnreachableMethodOverloads.ql +++ b/javascript/ql/src/Declarations/UnreachableMethodOverloads.ql @@ -7,7 +7,9 @@ * @problem.severity warning * @id js/unreachable-method-overloads * @precision high - * @tags correctness + * @tags quality + * reliability + * correctness * typescript */ diff --git a/javascript/ql/src/Declarations/UnusedVariable.ql b/javascript/ql/src/Declarations/UnusedVariable.ql index 7346b58c0494..66e15cdbf81a 100644 --- a/javascript/ql/src/Declarations/UnusedVariable.ql +++ b/javascript/ql/src/Declarations/UnusedVariable.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity recommendation * @id js/unused-local-variable - * @tags maintainability + * @tags quality + * maintainability + * useless-code * @precision very-high */ diff --git a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclaration.ts b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclaration.ts index b7b925aa15a9..6558267cef4b 100644 --- a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclaration.ts +++ b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclaration.ts @@ -1,6 +1,6 @@ -declare class Point { +// BAD: Using 'constructor' in an interface creates a method, not a constructor signature +interface Point { x: number; y: number; - constructor(x : number, y: number); + constructor(x: number, y: number); // This is just a method named "constructor" } - diff --git a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationClass.ts b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationClass.ts new file mode 100644 index 000000000000..2a078c8b468b --- /dev/null +++ b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationClass.ts @@ -0,0 +1,6 @@ +// BAD: Using 'new' in a class creates a method, not a constructor +class Point { + x: number; + y: number; + new(x: number, y: number) {}; // This is just a method named "new" +} diff --git a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationClassFixed.ts b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationClassFixed.ts new file mode 100644 index 000000000000..0e072a4e0316 --- /dev/null +++ b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationClassFixed.ts @@ -0,0 +1,9 @@ +// GOOD: Using 'constructor' for constructors in classes +class Point { + x: number; + y: number; + constructor(x: number, y: number) { // This is a proper constructor + this.x = x; + this.y = y; + } +} diff --git a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFixed.ts b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFixed.ts index 850038f4dbfe..d5dacdbb9515 100644 --- a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFixed.ts +++ b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFixed.ts @@ -1,4 +1,6 @@ +// GOOD: Using 'new' for constructor signatures in interfaces interface Point { x: number; y: number; + new(x: number, y: number): Point; // This is a proper constructor signature } diff --git a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFunction.ts b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFunction.ts new file mode 100644 index 000000000000..37749d4ff85b --- /dev/null +++ b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFunction.ts @@ -0,0 +1,4 @@ +// BAD: Using 'function' as a method name is confusing +interface Calculator { + function(a: number, b: number): number; // This is just a method named "function" +} diff --git a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFunctionFixed.ts b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFunctionFixed.ts new file mode 100644 index 000000000000..a5b3b747faa4 --- /dev/null +++ b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFunctionFixed.ts @@ -0,0 +1,4 @@ +// GOOD: Using descriptive method names instead of 'function' +interface Calculator { + calculate(a: number, b: number): number; // Clear, descriptive method name +} diff --git a/javascript/ql/src/Expressions/ComparisonWithNaN.ql b/javascript/ql/src/Expressions/ComparisonWithNaN.ql index 82a45a3a5629..1fb61b489651 100644 --- a/javascript/ql/src/Expressions/ComparisonWithNaN.ql +++ b/javascript/ql/src/Expressions/ComparisonWithNaN.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity error * @id js/comparison-with-nan - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-570 * external/cwe/cwe-571 diff --git a/javascript/ql/src/Expressions/DuplicateCondition.ql b/javascript/ql/src/Expressions/DuplicateCondition.ql index a13a0f158104..1f58d9d200a3 100644 --- a/javascript/ql/src/Expressions/DuplicateCondition.ql +++ b/javascript/ql/src/Expressions/DuplicateCondition.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity warning * @id js/duplicate-condition - * @tags maintainability + * @tags quality + * reliability * correctness * external/cwe/cwe-561 * @precision very-high diff --git a/javascript/ql/src/Expressions/DuplicateProperty.ql b/javascript/ql/src/Expressions/DuplicateProperty.ql index af518842a618..febdfe5b8826 100644 --- a/javascript/ql/src/Expressions/DuplicateProperty.ql +++ b/javascript/ql/src/Expressions/DuplicateProperty.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity warning * @id js/duplicate-property - * @tags maintainability + * @tags quality + * maintainability + * readability * external/cwe/cwe-563 * @precision very-high */ diff --git a/javascript/ql/src/Expressions/DuplicateSwitchCase.ql b/javascript/ql/src/Expressions/DuplicateSwitchCase.ql index 56cb848dba14..1ef8aa76a4ba 100644 --- a/javascript/ql/src/Expressions/DuplicateSwitchCase.ql +++ b/javascript/ql/src/Expressions/DuplicateSwitchCase.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity warning * @id js/duplicate-switch-case - * @tags maintainability + * @tags quality + * reliability * correctness * external/cwe/cwe-561 * @precision very-high diff --git a/javascript/ql/src/Expressions/ExprHasNoEffect.ql b/javascript/ql/src/Expressions/ExprHasNoEffect.ql index 9cdb22b8ecf0..fd613d3aa9f8 100644 --- a/javascript/ql/src/Expressions/ExprHasNoEffect.ql +++ b/javascript/ql/src/Expressions/ExprHasNoEffect.ql @@ -7,10 +7,9 @@ * @id js/useless-expression * @tags quality * maintainability - * correctness + * useless-code * external/cwe/cwe-480 * external/cwe/cwe-561 - * useless-code * @precision very-high */ diff --git a/javascript/ql/src/Expressions/HeterogeneousComparison.ql b/javascript/ql/src/Expressions/HeterogeneousComparison.ql index 3b4c59f08b68..e99adad21cdb 100644 --- a/javascript/ql/src/Expressions/HeterogeneousComparison.ql +++ b/javascript/ql/src/Expressions/HeterogeneousComparison.ql @@ -6,7 +6,8 @@ * @kind problem * @problem.severity warning * @id js/comparison-between-incompatible-types - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-570 * external/cwe/cwe-571 diff --git a/javascript/ql/src/Expressions/ImplicitOperandConversion.ql b/javascript/ql/src/Expressions/ImplicitOperandConversion.ql index 5d3f16e0eb8b..eda12e9d98b3 100644 --- a/javascript/ql/src/Expressions/ImplicitOperandConversion.ql +++ b/javascript/ql/src/Expressions/ImplicitOperandConversion.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity warning * @id js/implicit-operand-conversion - * @tags reliability - * readability + * @tags quality + * reliability + * correctness * external/cwe/cwe-704 * @precision very-high */ diff --git a/javascript/ql/src/Expressions/MissingAwait.ql b/javascript/ql/src/Expressions/MissingAwait.ql index d97c006a7bd1..a537156da015 100644 --- a/javascript/ql/src/Expressions/MissingAwait.ql +++ b/javascript/ql/src/Expressions/MissingAwait.ql @@ -4,12 +4,14 @@ * @kind problem * @problem.severity warning * @id js/missing-await - * @tags correctness - * quality + * @tags quality + * reliability + * correctness * @precision high */ import javascript +private import semmle.javascript.internal.TypeResolution /** * Holds if `call` is a call to an `async` function. @@ -28,7 +30,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/Expressions/MissingDotLengthInComparison.ql b/javascript/ql/src/Expressions/MissingDotLengthInComparison.ql index 705b3eedfc07..1d16bb346fc7 100644 --- a/javascript/ql/src/Expressions/MissingDotLengthInComparison.ql +++ b/javascript/ql/src/Expressions/MissingDotLengthInComparison.ql @@ -6,7 +6,9 @@ * @problem.severity warning * @id js/missing-dot-length-in-comparison * @precision high - * @tags correctness + * @tags quality + * reliability + * correctness */ import javascript diff --git a/javascript/ql/src/Expressions/MissingSpaceInAppend.ql b/javascript/ql/src/Expressions/MissingSpaceInAppend.ql index 7589c0d54f32..d4c2bcb18ac6 100644 --- a/javascript/ql/src/Expressions/MissingSpaceInAppend.ql +++ b/javascript/ql/src/Expressions/MissingSpaceInAppend.ql @@ -7,7 +7,9 @@ * @problem.severity warning * @precision very-high * @id js/missing-space-in-concatenation - * @tags readability + * @tags quality + * maintainability + * readability */ import javascript diff --git a/javascript/ql/src/Expressions/MisspelledVariableName.ql b/javascript/ql/src/Expressions/MisspelledVariableName.ql index b6f0ad88e3ed..7444ba3a5d92 100644 --- a/javascript/ql/src/Expressions/MisspelledVariableName.ql +++ b/javascript/ql/src/Expressions/MisspelledVariableName.ql @@ -6,8 +6,8 @@ * @kind problem * @problem.severity warning * @id js/misspelled-variable-name - * @tags maintainability - * readability + * @tags quality + * reliability * correctness * @precision very-high */ diff --git a/javascript/ql/src/Expressions/RedundantExpression.ql b/javascript/ql/src/Expressions/RedundantExpression.ql index bf668bd649f1..35b86a9f0256 100644 --- a/javascript/ql/src/Expressions/RedundantExpression.ql +++ b/javascript/ql/src/Expressions/RedundantExpression.ql @@ -6,7 +6,8 @@ * @kind problem * @problem.severity warning * @id js/redundant-operation - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-480 * external/cwe/cwe-561 diff --git a/javascript/ql/src/Expressions/SelfAssignment.ql b/javascript/ql/src/Expressions/SelfAssignment.ql index 784f01fa7426..603762b5952f 100644 --- a/javascript/ql/src/Expressions/SelfAssignment.ql +++ b/javascript/ql/src/Expressions/SelfAssignment.ql @@ -4,7 +4,8 @@ * @kind problem * @problem.severity warning * @id js/redundant-assignment - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-480 * external/cwe/cwe-561 diff --git a/javascript/ql/src/Expressions/ShiftOutOfRange.ql b/javascript/ql/src/Expressions/ShiftOutOfRange.ql index ec8b801cbe67..395baaff11f5 100644 --- a/javascript/ql/src/Expressions/ShiftOutOfRange.ql +++ b/javascript/ql/src/Expressions/ShiftOutOfRange.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity error * @id js/shift-out-of-range - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-197 * @precision very-high diff --git a/javascript/ql/src/Expressions/StringInsteadOfRegex.ql b/javascript/ql/src/Expressions/StringInsteadOfRegex.ql index c00088abcd91..44d07ee98e6a 100644 --- a/javascript/ql/src/Expressions/StringInsteadOfRegex.ql +++ b/javascript/ql/src/Expressions/StringInsteadOfRegex.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity warning * @id js/string-instead-of-regex - * @tags correctness + * @tags quality + * reliability + * correctness * @precision high */ diff --git a/javascript/ql/src/Expressions/SuspiciousInvocation.ql b/javascript/ql/src/Expressions/SuspiciousInvocation.ql index ca7281eba5cd..1472e2dbe2ff 100644 --- a/javascript/ql/src/Expressions/SuspiciousInvocation.ql +++ b/javascript/ql/src/Expressions/SuspiciousInvocation.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity error * @id js/call-to-non-callable - * @tags correctness + * @tags quality + * reliability + * correctness * external/cwe/cwe-476 * @precision high */ diff --git a/javascript/ql/src/Expressions/SuspiciousPropAccess.ql b/javascript/ql/src/Expressions/SuspiciousPropAccess.ql index f51674a04187..88ce9dda7c43 100644 --- a/javascript/ql/src/Expressions/SuspiciousPropAccess.ql +++ b/javascript/ql/src/Expressions/SuspiciousPropAccess.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity error * @id js/property-access-on-non-object - * @tags correctness + * @tags quality + * reliability + * correctness * external/cwe/cwe-476 * @precision high */ diff --git a/javascript/ql/src/Expressions/UnboundEventHandlerReceiver.ql b/javascript/ql/src/Expressions/UnboundEventHandlerReceiver.ql index fa10e4786c46..4cc94c5852b1 100644 --- a/javascript/ql/src/Expressions/UnboundEventHandlerReceiver.ql +++ b/javascript/ql/src/Expressions/UnboundEventHandlerReceiver.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity error * @id js/unbound-event-handler-receiver - * @tags correctness + * @tags quality + * reliability + * correctness * @precision high */ diff --git a/javascript/ql/src/Expressions/UnclearOperatorPrecedence.ql b/javascript/ql/src/Expressions/UnclearOperatorPrecedence.ql index 869971f5f1fb..104e7188e7e7 100644 --- a/javascript/ql/src/Expressions/UnclearOperatorPrecedence.ql +++ b/javascript/ql/src/Expressions/UnclearOperatorPrecedence.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity recommendation * @id js/unclear-operator-precedence - * @tags maintainability - * correctness + * @tags quality + * maintainability + * readability * statistical * non-attributable * external/cwe/cwe-783 diff --git a/javascript/ql/src/Expressions/UnknownDirective.ql b/javascript/ql/src/Expressions/UnknownDirective.ql index 331b61cafda9..be91cf5ff896 100644 --- a/javascript/ql/src/Expressions/UnknownDirective.ql +++ b/javascript/ql/src/Expressions/UnknownDirective.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity warning * @id js/unknown-directive - * @tags correctness + * @tags quality + * reliability + * correctness * @precision high */ diff --git a/javascript/ql/src/Expressions/UnneededDefensiveProgramming.ql b/javascript/ql/src/Expressions/UnneededDefensiveProgramming.ql index 8e5cd8cf431e..3b06187a2074 100644 --- a/javascript/ql/src/Expressions/UnneededDefensiveProgramming.ql +++ b/javascript/ql/src/Expressions/UnneededDefensiveProgramming.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity recommendation * @id js/unneeded-defensive-code - * @tags correctness + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-570 * external/cwe/cwe-571 * @precision very-high diff --git a/javascript/ql/src/Expressions/WhitespaceContradictsPrecedence.ql b/javascript/ql/src/Expressions/WhitespaceContradictsPrecedence.ql index 36d9f7737083..bb3d14846588 100644 --- a/javascript/ql/src/Expressions/WhitespaceContradictsPrecedence.ql +++ b/javascript/ql/src/Expressions/WhitespaceContradictsPrecedence.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity warning * @id js/whitespace-contradicts-precedence - * @tags maintainability + * @tags quality + * reliability * correctness * statistical * non-attributable diff --git a/javascript/ql/src/LanguageFeatures/BadTypeof.ql b/javascript/ql/src/LanguageFeatures/BadTypeof.ql index d287a0a1b6d2..97492d3562ad 100644 --- a/javascript/ql/src/LanguageFeatures/BadTypeof.ql +++ b/javascript/ql/src/LanguageFeatures/BadTypeof.ql @@ -6,7 +6,8 @@ * @kind problem * @problem.severity error * @id js/useless-type-test - * @tags maintainability + * @tags quality + * reliability * correctness * language-features * external/cwe/cwe-570 diff --git a/javascript/ql/src/LanguageFeatures/ConditionalComments.ql b/javascript/ql/src/LanguageFeatures/ConditionalComments.ql index 255415c05640..8ded33afe59c 100644 --- a/javascript/ql/src/LanguageFeatures/ConditionalComments.ql +++ b/javascript/ql/src/LanguageFeatures/ConditionalComments.ql @@ -4,8 +4,10 @@ * @kind problem * @problem.severity warning * @id js/conditional-comment - * @tags portability - * maintainability + * @tags quality + * reliability + * correctness + * portability * language-features * external/cwe/cwe-758 * @precision very-high diff --git a/javascript/ql/src/LanguageFeatures/DeleteVar.ql b/javascript/ql/src/LanguageFeatures/DeleteVar.ql index ed3940a1c70c..715f314381b1 100644 --- a/javascript/ql/src/LanguageFeatures/DeleteVar.ql +++ b/javascript/ql/src/LanguageFeatures/DeleteVar.ql @@ -4,8 +4,9 @@ * @kind problem * @problem.severity warning * @id js/deletion-of-non-property - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * language-features * external/cwe/cwe-480 * @precision very-high diff --git a/javascript/ql/src/LanguageFeatures/ExpressionClosures.ql b/javascript/ql/src/LanguageFeatures/ExpressionClosures.ql index db33566a7585..2e67bfb6e2b9 100644 --- a/javascript/ql/src/LanguageFeatures/ExpressionClosures.ql +++ b/javascript/ql/src/LanguageFeatures/ExpressionClosures.ql @@ -5,8 +5,10 @@ * @kind problem * @problem.severity warning * @id js/non-standard-language-feature - * @tags portability + * @tags quality * maintainability + * readability + * portability * language-features * external/cwe/cwe-758 * @precision very-high diff --git a/javascript/ql/src/LanguageFeatures/ForInComprehensionBlocks.ql b/javascript/ql/src/LanguageFeatures/ForInComprehensionBlocks.ql index 0c13ff724371..c5f5e8bfe12a 100644 --- a/javascript/ql/src/LanguageFeatures/ForInComprehensionBlocks.ql +++ b/javascript/ql/src/LanguageFeatures/ForInComprehensionBlocks.ql @@ -5,8 +5,10 @@ * @kind problem * @problem.severity error * @id js/for-in-comprehension - * @tags portability + * @tags quality * maintainability + * readability + * portability * language-features * external/cwe/cwe-758 * @precision very-high diff --git a/javascript/ql/src/LanguageFeatures/IllegalInvocation.ql b/javascript/ql/src/LanguageFeatures/IllegalInvocation.ql index 4c8939c41804..06f50bb60dc7 100644 --- a/javascript/ql/src/LanguageFeatures/IllegalInvocation.ql +++ b/javascript/ql/src/LanguageFeatures/IllegalInvocation.ql @@ -6,7 +6,9 @@ * @kind problem * @problem.severity error * @id js/illegal-invocation - * @tags correctness + * @tags quality + * reliability + * correctness * language-features * @precision high */ diff --git a/javascript/ql/src/LanguageFeatures/InconsistentNew.ql b/javascript/ql/src/LanguageFeatures/InconsistentNew.ql index 8a14dbe37c19..9044e851496d 100644 --- a/javascript/ql/src/LanguageFeatures/InconsistentNew.ql +++ b/javascript/ql/src/LanguageFeatures/InconsistentNew.ql @@ -6,7 +6,8 @@ * @kind problem * @problem.severity warning * @id js/inconsistent-use-of-new - * @tags reliability + * @tags quality + * reliability * correctness * language-features * @precision very-high diff --git a/javascript/ql/src/LanguageFeatures/InvalidPrototype.ql b/javascript/ql/src/LanguageFeatures/InvalidPrototype.ql index 89dc7535c60b..8770d8dc2713 100644 --- a/javascript/ql/src/LanguageFeatures/InvalidPrototype.ql +++ b/javascript/ql/src/LanguageFeatures/InvalidPrototype.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity error * @id js/invalid-prototype-value - * @tags correctness + * @tags quality + * reliability + * correctness * language-features * external/cwe/cwe-704 * @precision high diff --git a/javascript/ql/src/LanguageFeatures/LengthComparisonOffByOne.ql b/javascript/ql/src/LanguageFeatures/LengthComparisonOffByOne.ql index e3935386289a..4f3815d6fc6b 100644 --- a/javascript/ql/src/LanguageFeatures/LengthComparisonOffByOne.ql +++ b/javascript/ql/src/LanguageFeatures/LengthComparisonOffByOne.ql @@ -5,9 +5,11 @@ * @kind problem * @problem.severity warning * @id js/index-out-of-bounds - * @tags reliability + * @tags quality + * reliability * correctness * logic + * language-features * external/cwe/cwe-193 * @precision high */ diff --git a/javascript/ql/src/LanguageFeatures/NonLinearPattern.ql b/javascript/ql/src/LanguageFeatures/NonLinearPattern.ql index 9e3c42353506..090f6b078456 100644 --- a/javascript/ql/src/LanguageFeatures/NonLinearPattern.ql +++ b/javascript/ql/src/LanguageFeatures/NonLinearPattern.ql @@ -6,7 +6,8 @@ * @kind problem * @problem.severity error * @id js/non-linear-pattern - * @tags reliability + * @tags quality + * reliability * correctness * language-features * @precision very-high diff --git a/javascript/ql/src/LanguageFeatures/PropertyWriteOnPrimitive.ql b/javascript/ql/src/LanguageFeatures/PropertyWriteOnPrimitive.ql index 19d372f65290..cb5446256487 100644 --- a/javascript/ql/src/LanguageFeatures/PropertyWriteOnPrimitive.ql +++ b/javascript/ql/src/LanguageFeatures/PropertyWriteOnPrimitive.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity error * @id js/property-assignment-on-primitive - * @tags correctness + * @tags quality + * reliability + * correctness * language-features * external/cwe/cwe-704 * @precision high diff --git a/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql b/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql index 3f99062112da..17a9da64cc0a 100644 --- a/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql +++ b/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity recommendation * @id js/automatic-semicolon-insertion - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features * statistical * non-attributable diff --git a/javascript/ql/src/LanguageFeatures/SetterReturn.ql b/javascript/ql/src/LanguageFeatures/SetterReturn.ql index 0333246a4391..b90541d39129 100644 --- a/javascript/ql/src/LanguageFeatures/SetterReturn.ql +++ b/javascript/ql/src/LanguageFeatures/SetterReturn.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity warning * @id js/setter-return - * @tags maintainability + * @tags quality + * maintainability + * useless-code * language-features * @precision very-high */ diff --git a/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql b/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql index fd493a247a4c..82c69a1732a3 100644 --- a/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql +++ b/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql @@ -4,10 +4,10 @@ * @kind problem * @problem.severity warning * @id js/superfluous-trailing-arguments - * @tags maintainability + * @tags quality + * reliability * correctness * language-features - * quality * external/cwe/cwe-685 * @precision very-high */ diff --git a/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql b/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql index b29844d90b97..7c285c45ec70 100644 --- a/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql +++ b/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql @@ -6,7 +6,9 @@ * @kind problem * @problem.severity error * @id js/strict-mode-call-stack-introspection - * @tags correctness + * @tags quality + * reliability + * correctness * language-features * @precision high */ diff --git a/javascript/ql/src/LanguageFeatures/SyntaxError.ql b/javascript/ql/src/LanguageFeatures/SyntaxError.ql index d4428c75774e..0c9a69490f7c 100644 --- a/javascript/ql/src/LanguageFeatures/SyntaxError.ql +++ b/javascript/ql/src/LanguageFeatures/SyntaxError.ql @@ -4,7 +4,8 @@ * @kind problem * @problem.severity recommendation * @id js/syntax-error - * @tags reliability + * @tags quality + * reliability * correctness * language-features * @precision very-high diff --git a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql index f22b97795607..f6824cfd9587 100644 --- a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql +++ b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql @@ -5,7 +5,10 @@ * @problem.severity warning * @id js/template-syntax-in-string-literal * @precision high - * @tags correctness + * @tags quality + * reliability + * correctness + * language-features */ import javascript @@ -74,8 +77,8 @@ class CandidateStringLiteral extends StringLiteral { */ predicate hasObjectProvidingTemplateVariables(CandidateStringLiteral lit) { exists(DataFlow::CallNode call, DataFlow::ObjectLiteralNode obj | - call.getAnArgument().getALocalSource() = obj and - call.getAnArgument().asExpr() = lit and + call.getAnArgument() = [lit.flow(), StringConcatenation::getRoot(lit.flow())] and + obj.flowsTo(call.getAnArgument()) and forex(string name | name = lit.getAReferencedVariable() | exists(obj.getAPropertyWrite(name))) ) } @@ -91,12 +94,38 @@ VarDecl getDeclIn(Variable v, Scope scope, string name, CandidateTopLevel tl) { result.getTopLevel() = tl } +/** + * Tracks data flow from a string literal that may flow to a replace operation. + */ +DataFlow::SourceNode trackStringWithTemplateSyntax( + CandidateStringLiteral lit, DataFlow::TypeTracker t +) { + t.start() and result = lit.flow() and exists(lit.getAReferencedVariable()) + or + exists(DataFlow::TypeTracker t2 | result = trackStringWithTemplateSyntax(lit, t2).track(t2, t)) +} + +/** + * Gets a string literal that flows to a replace operation. + */ +DataFlow::SourceNode trackStringWithTemplateSyntax(CandidateStringLiteral lit) { + result = trackStringWithTemplateSyntax(lit, DataFlow::TypeTracker::end()) +} + +/** + * Holds if the string literal flows to a replace method call. + */ +predicate hasReplaceMethodCall(CandidateStringLiteral lit) { + trackStringWithTemplateSyntax(lit).getAMethodCall() instanceof StringReplaceCall +} + from CandidateStringLiteral lit, Variable v, Scope s, string name, VarDecl decl where decl = getDeclIn(v, s, name, lit.getTopLevel()) and lit.getAReferencedVariable() = name and lit.isInScope(s) and not hasObjectProvidingTemplateVariables(lit) and - not lit.getStringValue() = "${" + name + "}" + not lit.getStringValue() = "${" + name + "}" and + not hasReplaceMethodCall(lit) select lit, "This string is not a template literal, but appears to reference the variable $@.", decl, v.getName() diff --git a/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql b/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql index 77ce3e5e8587..e93700bdccf9 100644 --- a/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql +++ b/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity error * @id js/incomplete-object-initialization - * @tags correctness + * @tags quality + * reliability + * correctness * language-features * @precision high */ diff --git a/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql b/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql index ba39738a7774..7a8f3bdf948f 100644 --- a/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql +++ b/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql @@ -6,7 +6,9 @@ * @problem.severity warning * @id js/unused-index-variable * @precision high - * @tags correctness + * @tags quality + * reliability + * correctness */ import javascript diff --git a/javascript/ql/src/LanguageFeatures/WithStatement.ql b/javascript/ql/src/LanguageFeatures/WithStatement.ql index cb2cfc728d8b..25f6c4e8fc46 100644 --- a/javascript/ql/src/LanguageFeatures/WithStatement.ql +++ b/javascript/ql/src/LanguageFeatures/WithStatement.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity warning * @id js/with-statement - * @tags maintainability + * @tags quality + * maintainability + * complexity * language-features * @precision very-high */ diff --git a/javascript/ql/src/LanguageFeatures/YieldInNonGenerator.ql b/javascript/ql/src/LanguageFeatures/YieldInNonGenerator.ql index 4f9241e7303f..8cd18991d02a 100644 --- a/javascript/ql/src/LanguageFeatures/YieldInNonGenerator.ql +++ b/javascript/ql/src/LanguageFeatures/YieldInNonGenerator.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity error * @id js/yield-outside-generator - * @tags maintainability + * @tags quality + * reliability + * correctness * language-features * external/cwe/cwe-758 * @precision very-high diff --git a/javascript/ql/src/NodeJS/InvalidExport.ql b/javascript/ql/src/NodeJS/InvalidExport.ql index e0b4a73fd69d..95d945bc0483 100644 --- a/javascript/ql/src/NodeJS/InvalidExport.ql +++ b/javascript/ql/src/NodeJS/InvalidExport.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity warning * @id js/node/assignment-to-exports-variable - * @tags maintainability + * @tags quality + * reliability + * correctness * frameworks/node.js * external/cwe/cwe-563 * @precision very-high diff --git a/javascript/ql/src/NodeJS/MissingExports.ql b/javascript/ql/src/NodeJS/MissingExports.ql index 15badce359ff..f10fac15b7a3 100644 --- a/javascript/ql/src/NodeJS/MissingExports.ql +++ b/javascript/ql/src/NodeJS/MissingExports.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity error * @id js/node/missing-exports-qualifier - * @tags maintainability + * @tags quality + * reliability + * correctness * frameworks/node.js * @precision high */ diff --git a/javascript/ql/src/React/DirectStateMutation.ql b/javascript/ql/src/React/DirectStateMutation.ql index 6e3d63a52148..a00f55524cd1 100644 --- a/javascript/ql/src/React/DirectStateMutation.ql +++ b/javascript/ql/src/React/DirectStateMutation.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity warning * @id js/react/direct-state-mutation - * @tags reliability + * @tags quality + * reliability + * correctness * frameworks/react * @precision very-high */ diff --git a/javascript/ql/src/React/InconsistentStateUpdate.ql b/javascript/ql/src/React/InconsistentStateUpdate.ql index 31625b2187af..f46427b9c595 100644 --- a/javascript/ql/src/React/InconsistentStateUpdate.ql +++ b/javascript/ql/src/React/InconsistentStateUpdate.ql @@ -6,7 +6,9 @@ * @kind problem * @problem.severity warning * @id js/react/inconsistent-state-update - * @tags reliability + * @tags quality + * reliability + * correctness * frameworks/react * @precision very-high */ diff --git a/javascript/ql/src/React/UnsupportedStateUpdateInLifecycleMethod.ql b/javascript/ql/src/React/UnsupportedStateUpdateInLifecycleMethod.ql index e14b880b1b11..da49bd43ab90 100644 --- a/javascript/ql/src/React/UnsupportedStateUpdateInLifecycleMethod.ql +++ b/javascript/ql/src/React/UnsupportedStateUpdateInLifecycleMethod.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity warning * @id js/react/unsupported-state-update-in-lifecycle-method - * @tags reliability + * @tags quality + * reliability + * correctness * frameworks/react * @precision high */ diff --git a/javascript/ql/src/React/UnusedOrUndefinedStateProperty.ql b/javascript/ql/src/React/UnusedOrUndefinedStateProperty.ql index 721d6639ac7e..24d5590185ba 100644 --- a/javascript/ql/src/React/UnusedOrUndefinedStateProperty.ql +++ b/javascript/ql/src/React/UnusedOrUndefinedStateProperty.ql @@ -4,8 +4,9 @@ * @kind problem * @problem.severity warning * @id js/react/unused-or-undefined-state-property - * @tags correctness + * @tags quality * reliability + * correctness * frameworks/react * @precision high */ diff --git a/javascript/ql/src/RegExp/BackrefBeforeGroup.ql b/javascript/ql/src/RegExp/BackrefBeforeGroup.ql index abbc95e40b94..3572bf2cbc6e 100644 --- a/javascript/ql/src/RegExp/BackrefBeforeGroup.ql +++ b/javascript/ql/src/RegExp/BackrefBeforeGroup.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity error * @id js/regex/back-reference-before-group - * @tags reliability + * @tags quality + * reliability * correctness * regular-expressions * @precision very-high diff --git a/javascript/ql/src/RegExp/BackrefIntoNegativeLookahead.ql b/javascript/ql/src/RegExp/BackrefIntoNegativeLookahead.ql index b2ad4722011b..6a5e1528d6d5 100644 --- a/javascript/ql/src/RegExp/BackrefIntoNegativeLookahead.ql +++ b/javascript/ql/src/RegExp/BackrefIntoNegativeLookahead.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity error * @id js/regex/back-reference-to-negative-lookahead - * @tags reliability + * @tags quality + * reliability * correctness * regular-expressions * @precision very-high diff --git a/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.qhelp b/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.qhelp index 30ef990ec0cd..f94cced3d09a 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 06b6d218acab..00366590fcb5 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/RegExp/EmptyCharacterClass.ql b/javascript/ql/src/RegExp/EmptyCharacterClass.ql index f991de9759d2..fb336c3fbe8b 100644 --- a/javascript/ql/src/RegExp/EmptyCharacterClass.ql +++ b/javascript/ql/src/RegExp/EmptyCharacterClass.ql @@ -4,7 +4,8 @@ * @kind problem * @problem.severity warning * @id js/regex/empty-character-class - * @tags reliability + * @tags quality + * reliability * correctness * regular-expressions * @precision very-high diff --git a/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql b/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql index 1d063534903e..0a9a37120d76 100644 --- a/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql +++ b/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql @@ -4,9 +4,10 @@ * @kind problem * @problem.severity warning * @id js/regex/always-matches - * @tags correctness + * @tags quality + * reliability + * correctness * regular-expressions - * quality * @precision high */ diff --git a/javascript/ql/src/RegExp/UnboundBackref.ql b/javascript/ql/src/RegExp/UnboundBackref.ql index 00cc9536f12b..026c5472fb5e 100644 --- a/javascript/ql/src/RegExp/UnboundBackref.ql +++ b/javascript/ql/src/RegExp/UnboundBackref.ql @@ -6,7 +6,8 @@ * @kind problem * @problem.severity warning * @id js/regex/unbound-back-reference - * @tags reliability + * @tags quality + * reliability * correctness * regular-expressions * @precision very-high diff --git a/javascript/ql/src/RegExp/UnmatchableCaret.ql b/javascript/ql/src/RegExp/UnmatchableCaret.ql index 4dd5a6dc26b0..401b8db73c5b 100644 --- a/javascript/ql/src/RegExp/UnmatchableCaret.ql +++ b/javascript/ql/src/RegExp/UnmatchableCaret.ql @@ -6,7 +6,8 @@ * @kind problem * @problem.severity error * @id js/regex/unmatchable-caret - * @tags reliability + * @tags quality + * reliability * correctness * regular-expressions * external/cwe/cwe-561 diff --git a/javascript/ql/src/RegExp/UnmatchableDollar.ql b/javascript/ql/src/RegExp/UnmatchableDollar.ql index 59005b454107..c5b8cd9781f9 100644 --- a/javascript/ql/src/RegExp/UnmatchableDollar.ql +++ b/javascript/ql/src/RegExp/UnmatchableDollar.ql @@ -6,7 +6,8 @@ * @kind problem * @problem.severity error * @id js/regex/unmatchable-dollar - * @tags reliability + * @tags quality + * reliability * correctness * regular-expressions * external/cwe/cwe-561 diff --git a/javascript/ql/src/Security/CWE-094/ExpressionInjection.qhelp b/javascript/ql/src/Security/CWE-094/ExpressionInjection.qhelp deleted file mode 100644 index df9d97e4e6b7..000000000000 --- a/javascript/ql/src/Security/CWE-094/ExpressionInjection.qhelp +++ /dev/null @@ -1,56 +0,0 @@ - - - -

    - Using user-controlled input in GitHub Actions may lead to - code injection in contexts like run: or script:. -

    -

    - Code injection in GitHub Actions may allow an attacker to - exfiltrate any secrets used in the workflow and - the temporary GitHub repository authorization token. - The token might have write access to the repository, allowing an attacker - to use the token to make changes to the repository. -

    -
    - - -

    - The best practice to avoid code injection vulnerabilities - in GitHub workflows is to set the untrusted input value of the expression - to an intermediate environment variable and then use the environment variable - using the native syntax of the shell/script interpreter (that is, not ${{ env.VAR }}). -

    -

    - It is also recommended to limit the permissions of any tokens used - by a workflow such as the GITHUB_TOKEN. -

    -
    - - -

    - The following example lets a user inject an arbitrary shell command: -

    - - -

    - The following example uses an environment variable, but - still allows the injection because of the use of expression syntax: -

    - - -

    - The following example uses shell syntax to read - the environment variable and will prevent the attack: -

    - -
    - - -
  • GitHub Security Lab Research: Keeping your GitHub Actions and workflows secure: Untrusted input.
  • -
  • GitHub Docs: Security hardening for GitHub Actions.
  • -
  • GitHub Docs: Permissions for the GITHUB_TOKEN.
  • -
    -
    diff --git a/javascript/ql/src/Security/CWE-094/ExpressionInjection.ql b/javascript/ql/src/Security/CWE-094/ExpressionInjection.ql deleted file mode 100644 index 6c01edb330f0..000000000000 --- a/javascript/ql/src/Security/CWE-094/ExpressionInjection.ql +++ /dev/null @@ -1,270 +0,0 @@ -/** - * @name Expression injection in Actions - * @description Using user-controlled GitHub Actions contexts like `run:` or `script:` may allow a malicious - * user to inject code into the GitHub action. - * @kind problem - * @problem.severity warning - * @security-severity 9.3 - * @precision high - * @id js/actions/command-injection - * @tags actions - * security - * external/cwe/cwe-094 - */ - -import javascript -import semmle.javascript.Actions - -/** - * A `script:` field within an Actions `with:` specific to `actions/github-script` action. - * - * For example: - * ``` - * uses: actions/github-script@v3 - * with: - * script: console.log('${{ github.event.pull_request.head.sha }}') - * ``` - */ -class GitHubScript extends YamlNode, YamlString { - GitHubScriptWith with; - - GitHubScript() { with.lookup("script") = this } - - /** Gets the `with` field this field belongs to. */ - GitHubScriptWith getWith() { result = with } -} - -/** - * A step that uses `actions/github-script` action. - */ -class GitHubScriptStep extends Actions::Step { - GitHubScriptStep() { this.getUses().getGitHubRepository() = "actions/github-script" } -} - -/** - * A `with:` field sibling to `uses: actions/github-script`. - */ -class GitHubScriptWith extends YamlNode, YamlMapping { - GitHubScriptStep step; - - GitHubScriptWith() { step.lookup("with") = this } - - /** Gets the step this field belongs to. */ - GitHubScriptStep getStep() { result = step } -} - -bindingset[context] -private predicate isExternalUserControlledIssue(string context) { - context.regexpMatch("\\bgithub\\s*\\.\\s*event\\s*\\.\\s*issue\\s*\\.\\s*title\\b") or - context.regexpMatch("\\bgithub\\s*\\.\\s*event\\s*\\.\\s*issue\\s*\\.\\s*body\\b") -} - -bindingset[context] -private predicate isExternalUserControlledPullRequest(string context) { - exists(string reg | - reg = - [ - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*pull_request\\s*\\.\\s*title\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*pull_request\\s*\\.\\s*body\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*pull_request\\s*\\.\\s*head\\s*\\.\\s*label\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*pull_request\\s*\\.\\s*head\\s*\\.\\s*repo\\s*\\.\\s*default_branch\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*pull_request\\s*\\.\\s*head\\s*\\.\\s*repo\\s*\\.\\s*description\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*pull_request\\s*\\.\\s*head\\s*\\.\\s*repo\\s*\\.\\s*homepage\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*pull_request\\s*\\.\\s*head\\s*\\.\\s*ref\\b", - "\\bgithub\\s*\\.\\s*head_ref\\b" - ] - | - context.regexpMatch(reg) - ) -} - -bindingset[context] -private predicate isExternalUserControlledReview(string context) { - context.regexpMatch("\\bgithub\\s*\\.\\s*event\\s*\\.\\s*review\\s*\\.\\s*body\\b") -} - -bindingset[context] -private predicate isExternalUserControlledComment(string context) { - context.regexpMatch("\\bgithub\\s*\\.\\s*event\\s*\\.\\s*comment\\s*\\.\\s*body\\b") -} - -bindingset[context] -private predicate isExternalUserControlledGollum(string context) { - context - .regexpMatch("\\bgithub\\s*\\.\\s*event\\s*\\.\\s*pages\\[[0-9]+\\]\\s*\\.\\s*page_name\\b") or - context.regexpMatch("\\bgithub\\s*\\.\\s*event\\s*\\.\\s*pages\\[[0-9]+\\]\\s*\\.\\s*title\\b") -} - -bindingset[context] -private predicate isExternalUserControlledCommit(string context) { - exists(string reg | - reg = - [ - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*commits\\[[0-9]+\\]\\s*\\.\\s*message\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*head_commit\\s*\\.\\s*message\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*head_commit\\s*\\.\\s*author\\s*\\.\\s*email\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*head_commit\\s*\\.\\s*author\\s*\\.\\s*name\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*head_commit\\s*\\.\\s*committer\\s*\\.\\s*email\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*head_commit\\s*\\.\\s*committer\\s*\\.\\s*name\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*commits\\[[0-9]+\\]\\s*\\.\\s*author\\s*\\.\\s*email\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*commits\\[[0-9]+\\]\\s*\\.\\s*author\\s*\\.\\s*name\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*commits\\[[0-9]+\\]\\s*\\.\\s*committer\\s*\\.\\s*email\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*commits\\[[0-9]+\\]\\s*\\.\\s*committer\\s*\\.\\s*name\\b", - ] - | - context.regexpMatch(reg) - ) -} - -bindingset[context] -private predicate isExternalUserControlledDiscussion(string context) { - context.regexpMatch("\\bgithub\\s*\\.\\s*event\\s*\\.\\s*discussion\\s*\\.\\s*title\\b") or - context.regexpMatch("\\bgithub\\s*\\.\\s*event\\s*\\.\\s*discussion\\s*\\.\\s*body\\b") -} - -bindingset[context] -private predicate isExternalUserControlledWorkflowRun(string context) { - exists(string reg | - reg = - [ - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*workflow_run\\s*\\.\\s*head_branch\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*workflow_run\\s*\\.\\s*display_title\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*workflow_run\\s*\\.\\s*head_repository\\b\\s*\\.\\s*description\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*workflow_run\\s*\\.\\s*head_commit\\b\\s*\\.\\s*message\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*workflow_run\\s*\\.\\s*head_commit\\b\\s*\\.\\s*author\\b\\s*\\.\\s*email\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*workflow_run\\s*\\.\\s*head_commit\\b\\s*\\.\\s*author\\b\\s*\\.\\s*name\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*workflow_run\\s*\\.\\s*head_commit\\b\\s*\\.\\s*committer\\b\\s*\\.\\s*email\\b", - "\\bgithub\\s*\\.\\s*event\\s*\\.\\s*workflow_run\\s*\\.\\s*head_commit\\b\\s*\\.\\s*committer\\b\\s*\\.\\s*name\\b", - ] - | - context.regexpMatch(reg) - ) -} - -/** - * Holds if environment name in the `injection` (in a form of `env.name`) - * is tainted by the `context` (in a form of `github.event.xxx.xxx`). - */ -bindingset[injection] -predicate isEnvInterpolationTainted(string injection, string context) { - exists(Actions::Env env, string envName, YamlString envValue | - envValue = env.lookup(envName) and - Actions::getEnvName(injection) = envName and - Actions::getASimpleReferenceExpression(envValue) = context - ) -} - -/** - * Holds if the `run` contains any expression interpolation `${{ e }}`. - * Sets `context` to the initial untrusted value assignment in case of `${{ env... }}` interpolation - */ -predicate isRunInjectable(Actions::Run run, string injection, string context) { - Actions::getASimpleReferenceExpression(run) = injection and - ( - injection = context - or - isEnvInterpolationTainted(injection, context) - ) -} - -/** - * Holds if the `actions/github-script` contains any expression interpolation `${{ e }}`. - * Sets `context` to the initial untrusted value assignment in case of `${{ env... }}` interpolation - */ -predicate isScriptInjectable(GitHubScript script, string injection, string context) { - Actions::getASimpleReferenceExpression(script) = injection and - ( - injection = context - or - isEnvInterpolationTainted(injection, context) - ) -} - -/** - * Holds if the composite action contains untrusted expression interpolation `${{ e }}`. - */ -YamlNode getInjectableCompositeActionNode(Actions::Runs runs, string injection, string context) { - exists(Actions::Run run | - isRunInjectable(run, injection, context) and - result = run and - run.getStep().getRuns() = runs - ) - or - exists(GitHubScript script | - isScriptInjectable(script, injection, context) and - result = script and - script.getWith().getStep().getRuns() = runs - ) -} - -/** - * Holds if the workflow contains untrusted expression interpolation `${{ e }}`. - */ -YamlNode getInjectableWorkflowNode(Actions::On on, string injection, string context) { - exists(Actions::Run run | - isRunInjectable(run, injection, context) and - result = run and - run.getStep().getJob().getWorkflow().getOn() = on - ) - or - exists(GitHubScript script | - isScriptInjectable(script, injection, context) and - result = script and - script.getWith().getStep().getJob().getWorkflow().getOn() = on - ) -} - -from YamlNode node, string injection, string context -where - exists(Actions::CompositeAction action, Actions::Runs runs | - action.getRuns() = runs and - node = getInjectableCompositeActionNode(runs, injection, context) and - ( - isExternalUserControlledIssue(context) or - isExternalUserControlledPullRequest(context) or - isExternalUserControlledReview(context) or - isExternalUserControlledComment(context) or - isExternalUserControlledGollum(context) or - isExternalUserControlledCommit(context) or - isExternalUserControlledDiscussion(context) or - isExternalUserControlledWorkflowRun(context) - ) - ) - or - exists(Actions::On on | - node = getInjectableWorkflowNode(on, injection, context) and - ( - exists(on.getNode("issues")) and - isExternalUserControlledIssue(context) - or - exists(on.getNode("pull_request_target")) and - isExternalUserControlledPullRequest(context) - or - exists(on.getNode("pull_request_review")) and - (isExternalUserControlledReview(context) or isExternalUserControlledPullRequest(context)) - or - exists(on.getNode("pull_request_review_comment")) and - (isExternalUserControlledComment(context) or isExternalUserControlledPullRequest(context)) - or - exists(on.getNode("issue_comment")) and - (isExternalUserControlledComment(context) or isExternalUserControlledIssue(context)) - or - exists(on.getNode("gollum")) and - isExternalUserControlledGollum(context) - or - exists(on.getNode("push")) and - isExternalUserControlledCommit(context) - or - exists(on.getNode("discussion")) and - isExternalUserControlledDiscussion(context) - or - exists(on.getNode("discussion_comment")) and - (isExternalUserControlledDiscussion(context) or isExternalUserControlledComment(context)) - or - exists(on.getNode("workflow_run")) and - isExternalUserControlledWorkflowRun(context) - ) - ) -select node, - "Potential injection from the ${{ " + injection + - " }}, which may be controlled by an external user." diff --git a/javascript/ql/src/Security/CWE-094/examples/comment_issue_bad.yml b/javascript/ql/src/Security/CWE-094/examples/comment_issue_bad.yml deleted file mode 100644 index 1a25d44693b2..000000000000 --- a/javascript/ql/src/Security/CWE-094/examples/comment_issue_bad.yml +++ /dev/null @@ -1,8 +0,0 @@ -on: issue_comment - -jobs: - echo-body: - runs-on: ubuntu-latest - steps: - - run: | - echo '${{ github.event.comment.body }}' \ No newline at end of file diff --git a/javascript/ql/src/Security/CWE-094/examples/comment_issue_bad_env.yml b/javascript/ql/src/Security/CWE-094/examples/comment_issue_bad_env.yml deleted file mode 100644 index b7698938de75..000000000000 --- a/javascript/ql/src/Security/CWE-094/examples/comment_issue_bad_env.yml +++ /dev/null @@ -1,10 +0,0 @@ -on: issue_comment - -jobs: - echo-body: - runs-on: ubuntu-latest - steps: - - env: - BODY: ${{ github.event.issue.body }} - run: | - echo '${{ env.BODY }}' \ No newline at end of file diff --git a/javascript/ql/src/Security/CWE-094/examples/comment_issue_good.yml b/javascript/ql/src/Security/CWE-094/examples/comment_issue_good.yml deleted file mode 100644 index 07254a8b2043..000000000000 --- a/javascript/ql/src/Security/CWE-094/examples/comment_issue_good.yml +++ /dev/null @@ -1,10 +0,0 @@ -on: issue_comment - -jobs: - echo-body: - runs-on: ubuntu-latest - steps: - - env: - BODY: ${{ github.event.issue.body }} - run: | - echo "$BODY" diff --git a/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.qhelp b/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.qhelp deleted file mode 100644 index 7ec9c1fe7770..000000000000 --- a/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.qhelp +++ /dev/null @@ -1,30 +0,0 @@ - - - -

    - Sensitive information included in a GitHub Actions artifact can allow an attacker to access - the sensitive information if the artifact is published. -

    -
    - - -

    - Only store information that is meant to be publicly available in a GitHub Actions artifact. -

    -
    - - -

    - The following example uses actions/checkout to checkout code which stores the GITHUB_TOKEN in the `.git/config` file - and then stores the contents of the `.git` repository into the artifact: -

    - -

    - The issue has been fixed below, where the actions/upload-artifact uses a version (v4+) which does not include hidden files or - directories into the artifact. -

    - -
    -
    diff --git a/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.ql b/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.ql deleted file mode 100644 index 3f001c5e4560..000000000000 --- a/javascript/ql/src/Security/CWE-312/ActionsArtifactLeak.ql +++ /dev/null @@ -1,112 +0,0 @@ -/** - * @name Storage of sensitive information in GitHub Actions artifact - * @description Including sensitive information in a GitHub Actions artifact can - * expose it to an attacker. - * @kind problem - * @problem.severity error - * @security-severity 7.5 - * @precision high - * @id js/actions/actions-artifact-leak - * @tags actions - * security - * external/cwe/cwe-312 - * external/cwe/cwe-315 - * external/cwe/cwe-359 - */ - -import javascript -import semmle.javascript.Actions - -/** - * A step that uses `actions/checkout` action. - */ -class ActionsCheckoutStep extends Actions::Step { - ActionsCheckoutStep() { this.getUses().getGitHubRepository() = "actions/checkout" } -} - -/** - * A `with:`/`persist-credentials` field sibling to `uses: actions/checkout`. - */ -class ActionsCheckoutWithPersistCredentials extends YamlNode, YamlScalar { - ActionsCheckoutStep step; - - ActionsCheckoutWithPersistCredentials() { - step.lookup("with").(YamlMapping).lookup("persist-credentials") = this - } - - /** Gets the step this field belongs to. */ - ActionsCheckoutStep getStep() { result = step } -} - -/** - * A `with:`/`path` field sibling to `uses: actions/checkout`. - */ -class ActionsCheckoutWithPath extends YamlNode, YamlString { - ActionsCheckoutStep step; - - ActionsCheckoutWithPath() { step.lookup("with").(YamlMapping).lookup("path") = this } - - /** Gets the step this field belongs to. */ - ActionsCheckoutStep getStep() { result = step } -} - -/** - * A step that uses `actions/upload-artifact` action. - */ -class ActionsUploadArtifactStep extends Actions::Step { - ActionsUploadArtifactStep() { this.getUses().getGitHubRepository() = "actions/upload-artifact" } -} - -/** - * A `with:`/`path` field sibling to `uses: actions/upload-artifact`. - */ -class ActionsUploadArtifactWithPath extends YamlNode, YamlString { - ActionsUploadArtifactStep step; - - ActionsUploadArtifactWithPath() { step.lookup("with").(YamlMapping).lookup("path") = this } - - /** Gets the step this field belongs to. */ - ActionsUploadArtifactStep getStep() { result = step } -} - -from ActionsCheckoutStep checkout, ActionsUploadArtifactStep upload, Actions::Job job, int i, int j -where - checkout.getJob() = job and - upload.getJob() = job and - job.getStep(i) = checkout and - job.getStep(j) = upload and - j = i + 1 and - upload.getUses().getVersion() = - [ - "v4.3.6", "834a144ee995460fba8ed112a2fc961b36a5ec5a", // - "v4.3.5", "89ef406dd8d7e03cfd12d9e0a4a378f454709029", // - "v4.3.4", "0b2256b8c012f0828dc542b3febcab082c67f72b", // - "v4.3.3", "65462800fd760344b1a7b4382951275a0abb4808", // - "v4.3.2", "1746f4ab65b179e0ea60a494b83293b640dd5bba", // - "v4.3.1", "5d5d22a31266ced268874388b861e4b58bb5c2f3", // - "v4.3.0", "26f96dfa697d77e81fd5907df203aa23a56210a8", // - "v4.2.0", "694cdabd8bdb0f10b2cea11669e1bf5453eed0a6", // - "v4.1.0", "1eb3cb2b3e0f29609092a73eb033bb759a334595", // - "v4.0.0", "c7d193f32edcb7bfad88892161225aeda64e9392", // - ] and - ( - not exists(ActionsCheckoutWithPersistCredentials persist | persist.getStep() = checkout) - or - exists(ActionsCheckoutWithPersistCredentials persist | - persist.getStep() = checkout and - persist.getValue() = "true" - ) - ) and - ( - not exists(ActionsCheckoutWithPath path | path.getStep() = checkout) and - exists(ActionsUploadArtifactWithPath path | - path.getStep() = upload and path.getValue() = [".", "*"] - ) - or - exists(ActionsCheckoutWithPath checkout_path, ActionsUploadArtifactWithPath upload_path | - checkout_path.getValue() + ["", "/*"] = upload_path.getValue() and - checkout_path.getStep() = checkout and - upload_path.getStep() = upload - ) - ) -select upload, "A secret may be exposed in an artifact." diff --git a/javascript/ql/src/Security/CWE-312/examples/actions-artifact-leak-fixed.yml b/javascript/ql/src/Security/CWE-312/examples/actions-artifact-leak-fixed.yml deleted file mode 100644 index 9f716584a9bd..000000000000 --- a/javascript/ql/src/Security/CWE-312/examples/actions-artifact-leak-fixed.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: secrets-in-artifacts -on: - pull_request: -jobs: - a-job: # NOT VULNERABLE - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: "Upload artifact" - uses: actions/upload-artifact@v4 - with: - name: file - path: . - diff --git a/javascript/ql/src/Security/CWE-312/examples/actions-artifact-leak.yml b/javascript/ql/src/Security/CWE-312/examples/actions-artifact-leak.yml deleted file mode 100644 index 9006855e997e..000000000000 --- a/javascript/ql/src/Security/CWE-312/examples/actions-artifact-leak.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: secrets-in-artifacts -on: - pull_request: -jobs: - a-job: # VULNERABLE - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: "Upload artifact" - uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 - with: - name: file - path: . diff --git a/javascript/ql/src/Statements/DanglingElse.ql b/javascript/ql/src/Statements/DanglingElse.ql index bd9ea782db78..fdea5f67a863 100644 --- a/javascript/ql/src/Statements/DanglingElse.ql +++ b/javascript/ql/src/Statements/DanglingElse.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity warning * @id js/misleading-indentation-of-dangling-else - * @tags readability + * @tags quality + * maintainability + * readability * statistical * non-attributable * external/cwe/cwe-483 diff --git a/javascript/ql/src/Statements/IgnoreArrayResult.ql b/javascript/ql/src/Statements/IgnoreArrayResult.ql index 9123b520f6f6..dbf035cdb647 100644 --- a/javascript/ql/src/Statements/IgnoreArrayResult.ql +++ b/javascript/ql/src/Statements/IgnoreArrayResult.ql @@ -4,7 +4,8 @@ * @kind problem * @problem.severity warning * @id js/ignore-array-result - * @tags maintainability + * @tags quality + * reliability * correctness * @precision high */ diff --git a/javascript/ql/src/Statements/InconsistentLoopOrientation.ql b/javascript/ql/src/Statements/InconsistentLoopOrientation.ql index 7692a9d3d201..42d8912e0154 100644 --- a/javascript/ql/src/Statements/InconsistentLoopOrientation.ql +++ b/javascript/ql/src/Statements/InconsistentLoopOrientation.ql @@ -8,7 +8,9 @@ * @kind problem * @problem.severity error * @id js/inconsistent-loop-direction - * @tags correctness + * @tags quality + * reliability + * correctness * external/cwe/cwe-835 * @precision very-high */ diff --git a/javascript/ql/src/Statements/LabelInCase.ql b/javascript/ql/src/Statements/LabelInCase.ql index e88d366136f6..15690c83bcc3 100644 --- a/javascript/ql/src/Statements/LabelInCase.ql +++ b/javascript/ql/src/Statements/LabelInCase.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity warning * @id js/label-in-switch - * @tags reliability - * readability + * @tags quality + * reliability + * correctness * @precision very-high */ diff --git a/javascript/ql/src/Statements/LoopIterationSkippedDueToShifting.ql b/javascript/ql/src/Statements/LoopIterationSkippedDueToShifting.ql index 08ed90777467..d36884e15a32 100644 --- a/javascript/ql/src/Statements/LoopIterationSkippedDueToShifting.ql +++ b/javascript/ql/src/Statements/LoopIterationSkippedDueToShifting.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity warning * @id js/loop-iteration-skipped-due-to-shifting - * @tags correctness + * @tags quality + * reliability + * correctness * @precision high */ @@ -146,7 +148,12 @@ class ArrayIterationLoop extends ForStmt { or this.hasPathThrough(splice, cfg.getAPredecessor()) and this.getLoopEntry().dominates(cfg.getBasicBlock()) and - not this.hasIndexingManipulation(cfg) + not this.hasIndexingManipulation(cfg) and + // Don't continue through a branch that tests the splice call's return value + not exists(ConditionGuardNode guard | cfg = guard | + guard.getTest() = splice.asExpr() and + guard.getOutcome() = false + ) } } diff --git a/javascript/ql/src/Statements/MisleadingIndentationAfterControlStmt.ql b/javascript/ql/src/Statements/MisleadingIndentationAfterControlStmt.ql index 91ee1bd4c005..abfd9cde4ac9 100644 --- a/javascript/ql/src/Statements/MisleadingIndentationAfterControlStmt.ql +++ b/javascript/ql/src/Statements/MisleadingIndentationAfterControlStmt.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity warning * @id js/misleading-indentation-after-control-statement - * @tags correctness + * @tags quality + * maintainability + * readability * statistical * non-attributable * external/cwe/cwe-483 diff --git a/javascript/ql/src/Statements/ReturnAssignsLocal.ql b/javascript/ql/src/Statements/ReturnAssignsLocal.ql index 6056914fd80a..e0e60e689a37 100644 --- a/javascript/ql/src/Statements/ReturnAssignsLocal.ql +++ b/javascript/ql/src/Statements/ReturnAssignsLocal.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity warning * @id js/useless-assignment-in-return - * @tags maintainability - * readability + * @tags quality + * reliability + * correctness * external/cwe/cwe-563 * @precision very-high */ diff --git a/javascript/ql/src/Statements/SuspiciousUnusedLoopIterationVariable.ql b/javascript/ql/src/Statements/SuspiciousUnusedLoopIterationVariable.ql index ba0d523ae752..e472c8e0dcec 100644 --- a/javascript/ql/src/Statements/SuspiciousUnusedLoopIterationVariable.ql +++ b/javascript/ql/src/Statements/SuspiciousUnusedLoopIterationVariable.ql @@ -4,7 +4,8 @@ * @kind problem * @problem.severity error * @id js/unused-loop-variable - * @tags maintainability + * @tags quality + * reliability * correctness * @precision high */ diff --git a/javascript/ql/src/Statements/UnreachableStatement.ql b/javascript/ql/src/Statements/UnreachableStatement.ql index 092189609c02..b7d8e48980b1 100644 --- a/javascript/ql/src/Statements/UnreachableStatement.ql +++ b/javascript/ql/src/Statements/UnreachableStatement.ql @@ -4,7 +4,8 @@ * @kind problem * @problem.severity warning * @id js/unreachable-statement - * @tags maintainability + * @tags quality + * reliability * correctness * external/cwe/cwe-561 * @precision very-high diff --git a/javascript/ql/src/Statements/UseOfReturnlessFunction.ql b/javascript/ql/src/Statements/UseOfReturnlessFunction.ql index 818f0d922d48..4a381f4c2df5 100644 --- a/javascript/ql/src/Statements/UseOfReturnlessFunction.ql +++ b/javascript/ql/src/Statements/UseOfReturnlessFunction.ql @@ -4,7 +4,8 @@ * @kind problem * @problem.severity warning * @id js/use-of-returnless-function - * @tags maintainability + * @tags quality + * reliability * correctness * @precision high */ diff --git a/javascript/ql/src/Statements/UselessComparisonTest.ql b/javascript/ql/src/Statements/UselessComparisonTest.ql index 6066d7c4329b..dd87ed42b14c 100644 --- a/javascript/ql/src/Statements/UselessComparisonTest.ql +++ b/javascript/ql/src/Statements/UselessComparisonTest.ql @@ -5,7 +5,9 @@ * @kind problem * @problem.severity warning * @id js/useless-comparison-test - * @tags correctness + * @tags quality + * reliability + * correctness * @precision high */ diff --git a/javascript/ql/src/Statements/UselessConditional.ql b/javascript/ql/src/Statements/UselessConditional.ql index cc70defa7b22..210f27bb1db3 100644 --- a/javascript/ql/src/Statements/UselessConditional.ql +++ b/javascript/ql/src/Statements/UselessConditional.ql @@ -6,7 +6,9 @@ * @kind problem * @problem.severity warning * @id js/trivial-conditional - * @tags correctness + * @tags quality + * reliability + * correctness * external/cwe/cwe-570 * external/cwe/cwe-571 * @precision very-high diff --git a/javascript/ql/src/Vue/ArrowMethodOnVueInstance.ql b/javascript/ql/src/Vue/ArrowMethodOnVueInstance.ql index 828ee373696f..c7c97173d8bd 100644 --- a/javascript/ql/src/Vue/ArrowMethodOnVueInstance.ql +++ b/javascript/ql/src/Vue/ArrowMethodOnVueInstance.ql @@ -4,7 +4,9 @@ * @kind problem * @problem.severity warning * @id js/vue/arrow-method-on-vue-instance - * @tags reliability + * @tags quality + * reliability + * correctness * frameworks/vue * @precision high */ diff --git a/javascript/ql/src/change-notes/2025-06-23-react-use-server.md b/javascript/ql/src/change-notes/2025-06-23-react-use-server.md new file mode 100644 index 000000000000..b3d3088b640e --- /dev/null +++ b/javascript/ql/src/change-notes/2025-06-23-react-use-server.md @@ -0,0 +1,5 @@ +--- +category: majorAnalysis +--- +* Taint is now tracked through the React `use` function. +* Parameters of React server functions, marked with the `"use server"` directive, are now seen as taint sources. diff --git a/javascript/ql/src/change-notes/2025-06-23-remove-legacy-actions-queries.md b/javascript/ql/src/change-notes/2025-06-23-remove-legacy-actions-queries.md new file mode 100644 index 000000000000..628ad8b083b4 --- /dev/null +++ b/javascript/ql/src/change-notes/2025-06-23-remove-legacy-actions-queries.md @@ -0,0 +1,7 @@ +--- +category: minorAnalysis +--- +* Removed three queries from the JS qlpack, which have been superseded by newer queries that are part of the Actions qlpack: + * `js/actions/pull-request-target` has been superseded by `actions/untrusted-checkout/{medium,high,critical}` + * `js/actions/actions-artifact-leak` has been superseded by `actions/secrets-in-artifacts` + * `js/actions/command-injection` has been superseded by `actions/command-injection/{medium,critical}` diff --git a/javascript/ql/src/change-notes/released/1.7.0.md b/javascript/ql/src/change-notes/released/1.7.0.md new file mode 100644 index 000000000000..682a8b5d0c68 --- /dev/null +++ b/javascript/ql/src/change-notes/released/1.7.0.md @@ -0,0 +1,14 @@ +## 1.7.0 + +### Query Metadata Changes + +* The `quality` tag has been added to multiple JavaScript quality queries, with tags for `reliability` or `maintainability` categories and their sub-categories. See [Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags) for more information about these categories. +* Added `reliability` tag to the `js/suspicious-method-name-declaration` query. +* Added `reliability` and `language-features` tags to the `js/template-syntax-in-string-literal` query. + +### Minor Analysis Improvements + +* The `js/loop-iteration-skipped-due-to-shifting` query now has the `reliability` tag. +* Fixed false positives in the `js/loop-iteration-skipped-due-to-shifting` query when the return value of `splice` is used to decide whether to adjust the loop counter. +* Fixed false positives in the `js/template-syntax-in-string-literal` query where template syntax in string concatenation and "manual string interpolation" patterns were incorrectly flagged. +* 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/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 5f5beb68311a..d1184cc67507 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.2 +lastReleaseVersion: 1.7.0 diff --git a/javascript/ql/src/codeql-suites/javascript-code-quality-extended.qls b/javascript/ql/src/codeql-suites/javascript-code-quality-extended.qls new file mode 100644 index 000000000000..1ee85cae856c --- /dev/null +++ b/javascript/ql/src/codeql-suites/javascript-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/javascript/ql/src/codeql-suites/javascript-security-and-quality.qls b/javascript/ql/src/codeql-suites/javascript-security-and-quality.qls index 38d45ecfbe66..10097f6eaad0 100644 --- a/javascript/ql/src/codeql-suites/javascript-security-and-quality.qls +++ b/javascript/ql/src/codeql-suites/javascript-security-and-quality.qls @@ -1,24 +1,7 @@ - description: Security-and-quality queries for JavaScript - queries: . -- 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 +- apply: security-and-frozen-quality-selectors.yml + from: codeql/suite-helpers - include: id: - js/node/assignment-to-exports-variable @@ -123,16 +106,3 @@ - js/diagnostics/successfully-extracted-files - js/summary/lines-of-code - js/summary/lines-of-user-code -- include: - kind: - - diagnostic -- include: - kind: - - metric - tags contain: - - summary -- exclude: - deprecated: // -- exclude: - query path: - - /^experimental\/.*/ diff --git a/javascript/ql/src/experimental/Security/CWE-094/UntrustedCheckout.qhelp b/javascript/ql/src/experimental/Security/CWE-094/UntrustedCheckout.qhelp deleted file mode 100644 index 4833b50d8e2f..000000000000 --- a/javascript/ql/src/experimental/Security/CWE-094/UntrustedCheckout.qhelp +++ /dev/null @@ -1,64 +0,0 @@ - - - - - -

    - - Combining pull_request_target workflow trigger with an explicit checkout - of an untrusted pull request is a dangerous practice - that may lead to repository compromise. - -

    - -
    - - - -

    - - The best practice is to handle the potentially untrusted pull request - via the pull_request trigger so that it is isolated in - an unprivileged environment. The workflow processing the pull request - should then store any results like code coverage or failed/passed tests - in artifacts and exit. The following workflow then starts on workflow_run - where it is granted write permission to the target repository and access to - repository secrets, so that it can download the artifacts and make - any necessary modifications to the repository or interact with third party services - that require repository secrets (e.g. API tokens). - -

    - -
    - - - -

    - - The following example allows unauthorized repository modification - and secrets exfiltration: - -

    - - - -

    - - The following example uses two workflows to handle potentially untrusted - pull request in a secure manner. The receive_pr.yml is triggered first: - -

    - - -

    The comment_pr.yml is triggered after receive_pr.yml completes:

    - - -
    - - -
  • GitHub Security Lab Research: Keeping your GitHub Actions and workflows secure: Preventing pwn requests.
  • -
    - -
    diff --git a/javascript/ql/src/experimental/Security/CWE-094/UntrustedCheckout.ql b/javascript/ql/src/experimental/Security/CWE-094/UntrustedCheckout.ql deleted file mode 100644 index 3f08f297c6a7..000000000000 --- a/javascript/ql/src/experimental/Security/CWE-094/UntrustedCheckout.ql +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @name Checkout of untrusted code in trusted context - * @description Workflows triggered on `pull_request_target` have read/write access to the base repository and access to secrets. - * By explicitly checking out and running the build script from a fork the untrusted code is running in an environment - * that is able to push to the base repository and to access secrets. - * @kind problem - * @problem.severity warning - * @precision low - * @id js/actions/pull-request-target - * @tags actions - * security - * experimental - * external/cwe/cwe-094 - */ - -import javascript -import semmle.javascript.Actions - -/** - * An action step that doesn't contain `actor` check in `if:` or - * the check requires manual analysis. - */ -class ProbableStep extends Actions::Step { - // some simplistic checks to eleminate likely false positives: - ProbableStep() { - // no if at all - not exists(this.getIf().getValue()) - or - // needs manual analysis if there is OR - this.getIf().getValue().matches("%||%") - or - // actor check means only the user is able to run it - not exists(this.getIf().getValue().regexpFind("\\bgithub\\s*\\.\\s*actor\\s*==", _, _)) - } -} - -/** - * An action job that doesn't contain `actor` check in `if:` or - * the check requires manual analysis. - */ -class ProbableJob extends Actions::Job { - // some simplistic checks to eleminate likely false positives: - ProbableJob() { - // no if at all - not exists(this.getIf().getValue()) - or - // needs manual analysis if there is OR - this.getIf().getValue().matches("%||%") - or - // actor check means only the user is able to run it - not exists(this.getIf().getValue().regexpFind("\\bgithub\\s*\\.\\s*actor\\s*==", _, _)) - } -} - -/** - * The `on: pull_request_target`. - */ -class ProbablePullRequestTarget extends Actions::On, YamlMappingLikeNode { - ProbablePullRequestTarget() { - // The `on:` is triggered on `pull_request_target` - exists(this.getNode("pull_request_target")) - } -} - -from - Actions::Ref ref, Actions::Uses uses, Actions::Step step, Actions::Job job, - ProbablePullRequestTarget pullRequestTarget -where - pullRequestTarget.getWorkflow() = job.getWorkflow() and - uses.getStep() = step and - ref.getWith().getStep() = step and - step.getJob() = job and - uses.getGitHubRepository() = "actions/checkout" and - ref.getValue() - .matches([ - "%github.event.pull_request.head.ref%", "%github.event.pull_request.head.sha%", - "%github.event.pull_request.number%", "%github.event.number%", "%github.head_ref%" - ]) and - step instanceof ProbableStep and - job instanceof ProbableJob -select step, "Potential unsafe checkout of untrusted pull request on 'pull_request_target'." diff --git a/javascript/ql/src/experimental/Security/CWE-094/examples/comment_pr.yml b/javascript/ql/src/experimental/Security/CWE-094/examples/comment_pr.yml deleted file mode 100644 index e496b1449a06..000000000000 --- a/javascript/ql/src/experimental/Security/CWE-094/examples/comment_pr.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Comment on the pull request - -# read-write repo token -# access to secrets -on: - workflow_run: - workflows: ["Receive PR"] - types: - - completed - -jobs: - upload: - runs-on: ubuntu-latest - if: > - ${{ github.event.workflow_run.event == 'pull_request' && - github.event.workflow_run.conclusion == 'success' }} - steps: - - name: 'Download artifact' - uses: actions/github-script@v3.1.0 - with: - script: | - var artifacts = await github.actions.listWorkflowRunArtifacts({ - owner: context.repo.owner, - repo: context.repo.repo, - run_id: ${{github.event.workflow_run.id }}, - }); - var matchArtifact = artifacts.data.artifacts.filter((artifact) => { - return artifact.name == "pr" - })[0]; - var download = await github.actions.downloadArtifact({ - owner: context.repo.owner, - repo: context.repo.repo, - artifact_id: matchArtifact.id, - archive_format: 'zip', - }); - var fs = require('fs'); - fs.writeFileSync('${{github.workspace}}/pr.zip', Buffer.from(download.data)); - - run: unzip pr.zip - - - name: 'Comment on PR' - uses: actions/github-script@v3 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - var fs = require('fs'); - var issue_number = Number(fs.readFileSync('./NR')); - await github.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: issue_number, - body: 'Everything is OK. Thank you for the PR!' - }); \ No newline at end of file diff --git a/javascript/ql/src/experimental/Security/CWE-094/examples/pull_request_target_bad.yml b/javascript/ql/src/experimental/Security/CWE-094/examples/pull_request_target_bad.yml deleted file mode 100644 index fb9f0699a426..000000000000 --- a/javascript/ql/src/experimental/Security/CWE-094/examples/pull_request_target_bad.yml +++ /dev/null @@ -1,25 +0,0 @@ -on: - pull_request_target - -jobs: - build: - name: Build and test - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.sha }} - - - uses: actions/setup-node@v1 - - run: | - npm install - npm build - - - uses: completely/fakeaction@v2 - with: - arg1: ${{ secrets.supersecret }} - - - uses: fakerepo/comment-on-pr@v1 - with: - message: | - Thank you! \ No newline at end of file diff --git a/javascript/ql/src/experimental/Security/CWE-094/examples/receive_pr.yml b/javascript/ql/src/experimental/Security/CWE-094/examples/receive_pr.yml deleted file mode 100644 index 7104bce8bf36..000000000000 --- a/javascript/ql/src/experimental/Security/CWE-094/examples/receive_pr.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Receive PR - -# read-only repo token -# no access to secrets -on: - pull_request: - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - # imitation of a build process - - name: Build - run: /bin/bash ./build.sh - - - name: Save PR number - run: | - mkdir -p ./pr - echo ${{ github.event.number }} > ./pr/NR - - uses: actions/upload-artifact@v2 - with: - name: pr - path: pr/ \ No newline at end of file diff --git a/javascript/ql/src/experimental/semmle/javascript/Execa.qll b/javascript/ql/src/experimental/semmle/javascript/Execa.qll deleted file mode 100644 index 624b21c5dac6..000000000000 --- a/javascript/ql/src/experimental/semmle/javascript/Execa.qll +++ /dev/null @@ -1,211 +0,0 @@ -/** - * Models the `execa` library in terms of `FileSystemAccess` and `SystemCommandExecution`. - */ - -import javascript - -/** - * Provide model for [Execa](https://github.com/sindresorhus/execa) package - */ -module Execa { - /** - * The Execa input file read and output file write - */ - class ExecaFileSystemAccess extends FileSystemReadAccess, DataFlow::Node { - API::Node execaArg; - boolean isPipedToFile; - - ExecaFileSystemAccess() { - ( - execaArg = API::moduleImport("execa").getMember("$").getParameter(0) and - isPipedToFile = false - or - execaArg = - API::moduleImport("execa") - .getMember(["execa", "execaCommand", "execaCommandSync", "execaSync"]) - .getParameter([0, 1, 2]) and - isPipedToFile = false - or - execaArg = - API::moduleImport("execa") - .getMember(["execa", "execaCommand", "execaCommandSync", "execaSync"]) - .getReturn() - .getMember(["pipeStdout", "pipeAll", "pipeStderr"]) - .getParameter(0) and - isPipedToFile = true - ) and - this = execaArg.asSink() - } - - override DataFlow::Node getADataNode() { none() } - - override DataFlow::Node getAPathArgument() { - result = execaArg.getMember("inputFile").asSink() and isPipedToFile = false - or - result = execaArg.asSink() and isPipedToFile = true - } - } - - /** - * A call to `execa.execa` or `execa.execaSync` - */ - class ExecaCall extends API::CallNode { - boolean isSync; - - ExecaCall() { - this = API::moduleImport("execa").getMember("execa").getACall() and - isSync = false - or - this = API::moduleImport("execa").getMember("execaSync").getACall() and - isSync = true - } - } - - /** - * The system command execution nodes for `execa.execa` or `execa.execaSync` functions - */ - class ExecaExec extends SystemCommandExecution, ExecaCall { - ExecaExec() { isSync = [false, true] } - - override DataFlow::Node getACommandArgument() { result = this.getArgument(0) } - - override predicate isShellInterpreted(DataFlow::Node arg) { - // if shell: true then first and second args are sinks - // options can be third argument - arg = [this.getArgument(0), this.getParameter(1).getArrayElement().asSink()] and - isExecaShellEnable(this.getParameter(2)) - or - // options can be second argument - arg = this.getArgument(0) and - isExecaShellEnable(this.getParameter(1)) - } - - override DataFlow::Node getArgumentList() { - // execa(cmd, [arg]); - exists(DataFlow::Node arg | arg = this.getArgument(1) | - // if it is a object then it is a option argument not command argument - result = arg and not arg.asExpr() instanceof ObjectExpr - ) - } - - override predicate isSync() { isSync = true } - - override DataFlow::Node getOptionsArg() { - result = this.getLastArgument() and result.asExpr() instanceof ObjectExpr - } - } - - /** - * A call to `execa.$` or `execa.$.sync` or `execa.$({})` or `execa.$.sync({})` tag functions - */ - private class ExecaScriptCall extends API::CallNode { - boolean isSync; - - ExecaScriptCall() { - exists(API::Node script | - script = - [ - API::moduleImport("execa").getMember("$"), - API::moduleImport("execa").getMember("$").getReturn() - ] - | - this = script.getACall() and - isSync = false - or - this = script.getMember("sync").getACall() and - isSync = true - ) - } - } - - /** - * The system command execution nodes for `execa.$` or `execa.$.sync` tag functions - */ - class ExecaScript extends SystemCommandExecution, ExecaScriptCall { - ExecaScript() { isSync = [false, true] } - - override DataFlow::Node getACommandArgument() { - result = this.getParameter(1).asSink() and - not isTaggedTemplateFirstChildAnElement(this.getParameter(1).asSink().asExpr().getParent()) - } - - override predicate isShellInterpreted(DataFlow::Node arg) { - isExecaShellEnable(this.getParameter(0)) and - arg = this.getAParameter().asSink() - } - - override DataFlow::Node getArgumentList() { - result = this.getParameter(any(int i | i >= 1)).asSink() and - isTaggedTemplateFirstChildAnElement(this.getParameter(1).asSink().asExpr().getParent()) - or - result = this.getParameter(any(int i | i >= 2)).asSink() and - not isTaggedTemplateFirstChildAnElement(this.getParameter(1).asSink().asExpr().getParent()) - } - - override DataFlow::Node getOptionsArg() { result = this.getParameter(0).asSink() } - - override predicate isSync() { isSync = true } - } - - /** - * A call to `execa.execaCommandSync` or `execa.execaCommand` - */ - private class ExecaCommandCall extends API::CallNode { - boolean isSync; - - ExecaCommandCall() { - this = API::moduleImport("execa").getMember("execaCommandSync").getACall() and - isSync = true - or - this = API::moduleImport("execa").getMember("execaCommand").getACall() and - isSync = false - } - } - - /** - * The system command execution nodes for `execa.execaCommand` or `execa.execaCommandSync` functions - */ - class ExecaCommandExec extends SystemCommandExecution, ExecaCommandCall { - ExecaCommandExec() { isSync = [false, true] } - - override DataFlow::Node getACommandArgument() { - result = this.(DataFlow::CallNode).getArgument(0) - } - - override DataFlow::Node getArgumentList() { - // execaCommand(`${cmd} ${arg}`); - result.asExpr() = this.getParameter(0).asSink().asExpr().getAChildExpr() and - not result.asExpr() = this.getArgument(0).asExpr().getChildExpr(0) - } - - override predicate isShellInterpreted(DataFlow::Node arg) { - // execaCommandSync(`${cmd} ${arg}`, {shell: true}) - arg.asExpr() = this.getArgument(0).asExpr().getAChildExpr+() and - isExecaShellEnable(this.getParameter(1)) - or - // there is only one argument that is constructed in previous nodes, - // it makes sanitizing really hard to select whether it is vulnerable to argument injection or not - arg = this.getParameter(0).asSink() and - not exists(this.getArgument(0).asExpr().getChildExpr(1)) - } - - override predicate isSync() { isSync = true } - - override DataFlow::Node getOptionsArg() { - result = this.getLastArgument() and result.asExpr() instanceof ObjectExpr - } - } - - /** Gets a TemplateLiteral and check if first child is a template element */ - private predicate isTaggedTemplateFirstChildAnElement(TemplateLiteral templateLit) { - exists(templateLit.getChildExpr(0).(TemplateElement)) - } - - /** - * Holds whether Execa has shell enabled options or not, get Parameter responsible for options - */ - pragma[inline] - private predicate isExecaShellEnable(API::Node n) { - n.getMember("shell").asSink().asExpr().(BooleanLiteral).getValue() = "true" - } -} diff --git a/javascript/ql/src/experimental/semmle/javascript/SQL.qll b/javascript/ql/src/experimental/semmle/javascript/SQL.qll index 3581106e2f85..f91172ccc14d 100644 --- a/javascript/ql/src/experimental/semmle/javascript/SQL.qll +++ b/javascript/ql/src/experimental/semmle/javascript/SQL.qll @@ -146,11 +146,42 @@ module ExperimentalSql { override DataFlow::Node getAQueryArgument() { result = this.getArgument(0) } } + /** + * A call to a TypeORM `Repository` (https://orkhan.gitbook.io/typeorm/docs/repository-api) + */ + private class RepositoryCall extends DatabaseAccess { + API::Node repository; + + RepositoryCall() { + ( + repository = API::moduleImport("typeorm").getMember("Repository").getInstance() or + repository = dataSource().getMember("getRepository").getReturn() + ) and + this = repository.getMember(_).asSource() + } + + override DataFlow::Node getAResult() { + result = + repository + .getMember([ + "find", "findBy", "findOne", "findOneBy", "findOneOrFail", "findOneByOrFail", + "findAndCount", "findAndCountBy" + ]) + .getReturn() + .asSource() + } + + override DataFlow::Node getAQueryArgument() { + result = repository.getMember("query").getParameter(0).asSink() + } + } + /** An expression that is passed to the `query` function and hence interpreted as SQL. */ class QueryString extends SQL::SqlString { QueryString() { this = any(QueryRunner qr).getAQueryArgument() or - this = any(QueryBuilderCall qb).getAQueryArgument() + this = any(QueryBuilderCall qb).getAQueryArgument() or + this = any(RepositoryCall rc).getAQueryArgument() } } } diff --git a/javascript/ql/src/meta/alerts/CallGraph.ql b/javascript/ql/src/meta/alerts/CallGraph.ql index 364d81e32c90..c721e72f6404 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 db23d2a807ef..000000000000 --- 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 6fff98f1f34d..59f83e85aeff 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 1.6.2 +version: 1.7.1-dev groups: - javascript - queries diff --git a/javascript/ql/test/experimental/Execa/CommandInjection/tests.expected b/javascript/ql/test/experimental/Execa/CommandInjection/tests.expected deleted file mode 100644 index 931d1de923f3..000000000000 --- a/javascript/ql/test/experimental/Execa/CommandInjection/tests.expected +++ /dev/null @@ -1,22 +0,0 @@ -passingPositiveTests -| PASSED | CommandInjection | tests.js:11:46:11:70 | // test ... jection | -| PASSED | CommandInjection | tests.js:12:43:12:67 | // test ... jection | -| PASSED | CommandInjection | tests.js:13:63:13:87 | // test ... jection | -| PASSED | CommandInjection | tests.js:14:62:14:86 | // test ... jection | -| PASSED | CommandInjection | tests.js:15:60:15:84 | // test ... jection | -| PASSED | CommandInjection | tests.js:17:45:17:69 | // test ... jection | -| PASSED | CommandInjection | tests.js:18:42:18:66 | // test ... jection | -| PASSED | CommandInjection | tests.js:19:62:19:86 | // test ... jection | -| PASSED | CommandInjection | tests.js:20:63:20:87 | // test ... jection | -| PASSED | CommandInjection | tests.js:21:60:21:84 | // test ... jection | -| PASSED | CommandInjection | tests.js:23:43:23:67 | // test ... jection | -| PASSED | CommandInjection | tests.js:24:40:24:64 | // test ... jection | -| PASSED | CommandInjection | tests.js:25:40:25:64 | // test ... jection | -| PASSED | CommandInjection | tests.js:26:60:26:84 | // test ... jection | -| PASSED | CommandInjection | tests.js:28:41:28:65 | // test ... jection | -| PASSED | CommandInjection | tests.js:29:58:29:82 | // test ... jection | -| PASSED | CommandInjection | tests.js:31:51:31:75 | // test ... jection | -| PASSED | CommandInjection | tests.js:32:68:32:92 | // test ... jection | -| PASSED | CommandInjection | tests.js:34:49:34:73 | // test ... jection | -| PASSED | CommandInjection | tests.js:35:66:35:90 | // test ... jection | -failingPositiveTests diff --git a/javascript/ql/test/experimental/Execa/CommandInjection/tests.js b/javascript/ql/test/experimental/Execa/CommandInjection/tests.js deleted file mode 100644 index eb35be96b616..000000000000 --- a/javascript/ql/test/experimental/Execa/CommandInjection/tests.js +++ /dev/null @@ -1,36 +0,0 @@ -import { execa, execaSync, execaCommand, execaCommandSync, $ } from 'execa'; -import http from 'node:http' -import url from 'url' - -http.createServer(async function (req, res) { - let cmd = url.parse(req.url, true).query["cmd"][0]; - let arg1 = url.parse(req.url, true).query["arg1"]; - let arg2 = url.parse(req.url, true).query["arg2"]; - let arg3 = url.parse(req.url, true).query["arg3"]; - - await $`${cmd} ${arg1} ${arg2} ${arg3}`; // test: CommandInjection - await $`ssh ${arg1} ${arg2} ${arg3}`; // test: CommandInjection - $({ shell: false }).sync`${cmd} ${arg1} ${arg2} ${arg3}`; // test: CommandInjection - $({ shell: true }).sync`${cmd} ${arg1} ${arg2} ${arg3}`; // test: CommandInjection - $({ shell: false }).sync`ssh ${arg1} ${arg2} ${arg3}`; // test: CommandInjection - - $.sync`${cmd} ${arg1} ${arg2} ${arg3}`; // test: CommandInjection - $.sync`ssh ${arg1} ${arg2} ${arg3}`; // test: CommandInjection - await $({ shell: true })`${cmd} ${arg1} ${arg2} ${arg3}` // test: CommandInjection - await $({ shell: false })`${cmd} ${arg1} ${arg2} ${arg3}` // test: CommandInjection - await $({ shell: false })`ssh ${arg1} ${arg2} ${arg3}` // test: CommandInjection - - await execa(cmd, [arg1, arg2, arg3]); // test: CommandInjection - await execa(cmd, { shell: true }); // test: CommandInjection - await execa(cmd, { shell: true }); // test: CommandInjection - await execa(cmd, [arg1, arg2, arg3], { shell: true }); // test: CommandInjection - - execaSync(cmd, [arg1, arg2, arg3]); // test: CommandInjection - execaSync(cmd, [arg1, arg2, arg3], { shell: true }); // test: CommandInjection - - await execaCommand(cmd + arg1 + arg2 + arg3); // test: CommandInjection - await execaCommand(cmd + arg1 + arg2 + arg3, { shell: true }); // test: CommandInjection - - execaCommandSync(cmd + arg1 + arg2 + arg3); // test: CommandInjection - execaCommandSync(cmd + arg1 + arg2 + arg3, { shell: true }); // test: CommandInjection -}); \ No newline at end of file diff --git a/javascript/ql/test/experimental/Execa/CommandInjection/tests.ql b/javascript/ql/test/experimental/Execa/CommandInjection/tests.ql deleted file mode 100644 index a8ab812f821d..000000000000 --- a/javascript/ql/test/experimental/Execa/CommandInjection/tests.ql +++ /dev/null @@ -1,38 +0,0 @@ -import javascript - -class InlineTest extends LineComment { - string tests; - - InlineTest() { tests = this.getText().regexpCapture("\\s*test:(.*)", 1) } - - string getPositiveTest() { - result = tests.trim().splitAt(",").trim() and not result.matches("!%") - } - - predicate hasPositiveTest(string test) { test = this.getPositiveTest() } - - predicate inNode(DataFlow::Node n) { - this.getLocation().getFile() = n.getFile() and - this.getLocation().getStartLine() = n.getStartLine() - } -} - -import experimental.semmle.javascript.Execa - -query predicate passingPositiveTests(string res, string expectation, InlineTest t) { - res = "PASSED" and - t.hasPositiveTest(expectation) and - expectation = "CommandInjection" and - exists(SystemCommandExecution n | - t.inNode(n.getArgumentList()) or t.inNode(n.getACommandArgument()) - ) -} - -query predicate failingPositiveTests(string res, string expectation, InlineTest t) { - res = "FAILED" and - t.hasPositiveTest(expectation) and - expectation = "CommandInjection" and - not exists(SystemCommandExecution n | - t.inNode(n.getArgumentList()) or t.inNode(n.getACommandArgument()) - ) -} diff --git a/javascript/ql/test/experimental/Execa/PathInjection/tests.expected b/javascript/ql/test/experimental/Execa/PathInjection/tests.expected deleted file mode 100644 index 3149ae1c0220..000000000000 --- a/javascript/ql/test/experimental/Execa/PathInjection/tests.expected +++ /dev/null @@ -1,6 +0,0 @@ -passingPositiveTests -| PASSED | PathInjection | tests.js:9:43:9:64 | // test ... jection | -| PASSED | PathInjection | tests.js:12:50:12:71 | // test ... jection | -| PASSED | PathInjection | tests.js:15:61:15:82 | // test ... jection | -| PASSED | PathInjection | tests.js:18:73:18:94 | // test ... jection | -failingPositiveTests diff --git a/javascript/ql/test/experimental/Execa/PathInjection/tests.js b/javascript/ql/test/experimental/Execa/PathInjection/tests.js deleted file mode 100644 index 4665b8c89507..000000000000 --- a/javascript/ql/test/experimental/Execa/PathInjection/tests.js +++ /dev/null @@ -1,19 +0,0 @@ -import { execa, $ } from 'execa'; -import http from 'node:http' -import url from 'url' - -http.createServer(async function (req, res) { - let filePath = url.parse(req.url, true).query["filePath"][0]; - - // Piping to stdin from a file - await $({ inputFile: filePath })`cat` // test: PathInjection - - // Piping to stdin from a file - await execa('cat', { inputFile: filePath }); // test: PathInjection - - // Piping Stdout to file - await execa('echo', ['example3']).pipeStdout(filePath); // test: PathInjection - - // Piping all of command output to file - await execa('echo', ['example4'], { all: true }).pipeAll(filePath); // test: PathInjection -}); \ No newline at end of file diff --git a/javascript/ql/test/experimental/Execa/PathInjection/tests.ql b/javascript/ql/test/experimental/Execa/PathInjection/tests.ql deleted file mode 100644 index 08b5435e01f5..000000000000 --- a/javascript/ql/test/experimental/Execa/PathInjection/tests.ql +++ /dev/null @@ -1,34 +0,0 @@ -import javascript - -class InlineTest extends LineComment { - string tests; - - InlineTest() { tests = this.getText().regexpCapture("\\s*test:(.*)", 1) } - - string getPositiveTest() { - result = tests.trim().splitAt(",").trim() and not result.matches("!%") - } - - predicate hasPositiveTest(string test) { test = this.getPositiveTest() } - - predicate inNode(DataFlow::Node n) { - this.getLocation().getFile() = n.getFile() and - this.getLocation().getStartLine() = n.getStartLine() - } -} - -import experimental.semmle.javascript.Execa - -query predicate passingPositiveTests(string res, string expectation, InlineTest t) { - res = "PASSED" and - t.hasPositiveTest(expectation) and - expectation = "PathInjection" and - exists(FileSystemReadAccess n | t.inNode(n.getAPathArgument())) -} - -query predicate failingPositiveTests(string res, string expectation, InlineTest t) { - res = "FAILED" and - t.hasPositiveTest(expectation) and - expectation = "PathInjection" and - not exists(FileSystemReadAccess n | t.inNode(n.getAPathArgument())) -} diff --git a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_if_job.yml b/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_if_job.yml deleted file mode 100644 index cf713f5473d8..000000000000 --- a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_if_job.yml +++ /dev/null @@ -1,38 +0,0 @@ -on: - pull_request_target: - -jobs: - job1: - if: contains(github.event.issue.labels.*.name, 'ok') - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} - job2: - if: github.event.label.name == 'ok' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} - job3: - if: github.actor == 'ok' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} - job4: - if: github.actor == 'ok' || true - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} - job5: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} \ No newline at end of file diff --git a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_if_step.yml b/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_if_step.yml deleted file mode 100644 index 08a3757392b6..000000000000 --- a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_if_step.yml +++ /dev/null @@ -1,31 +0,0 @@ -on: - pull_request_target: - -jobs: - job1: - runs-on: ubuntu-latest - steps: - - - uses: actions/checkout@v2 - if: contains(github.event.issue.labels.*.name, 'ok') - with: - ref: ${{ github.event.pull_request.head.ref }} - - - uses: actions/checkout@v2 - if: github.event.label.name == 'ok' - with: - ref: ${{ github.event.pull_request.head.ref }} - - - uses: actions/checkout@v2 - if: github.actor == 'ok' - with: - ref: ${{ github.event.pull_request.head.ref }} - - - uses: actions/checkout@v2 - if: github.actor == 'ok' || true - with: - ref: ${{ github.event.pull_request.head.ref }} - - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} \ No newline at end of file diff --git a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_label_only.yml b/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_label_only.yml deleted file mode 100644 index 1b87798b89c8..000000000000 --- a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_label_only.yml +++ /dev/null @@ -1,12 +0,0 @@ -on: - pull_request_target: - types: [labeled] - push: - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} \ No newline at end of file diff --git a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_label_only_mapping.yml b/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_label_only_mapping.yml deleted file mode 100644 index 076d827a9b91..000000000000 --- a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_label_only_mapping.yml +++ /dev/null @@ -1,13 +0,0 @@ -on: - pull_request_target: - types: - labeled: - push: - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} \ No newline at end of file diff --git a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_labels_mapping.yml b/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_labels_mapping.yml deleted file mode 100644 index 5b2b594890b3..000000000000 --- a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_labels_mapping.yml +++ /dev/null @@ -1,15 +0,0 @@ -on: - pull_request_target: - types: - labeled: - opened: - closed: - push: - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} \ No newline at end of file diff --git a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_labels_sequence.yml b/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_labels_sequence.yml deleted file mode 100644 index 9677bd353606..000000000000 --- a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_labels_sequence.yml +++ /dev/null @@ -1,12 +0,0 @@ -on: - pull_request_target: - types: [labeled, opened] - push: - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} \ No newline at end of file diff --git a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_mapping.yml b/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_mapping.yml deleted file mode 100644 index c3875fde7cdc..000000000000 --- a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_mapping.yml +++ /dev/null @@ -1,10 +0,0 @@ -on: - pull_request_target: - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} \ No newline at end of file diff --git a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_master.yml b/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_master.yml deleted file mode 100644 index feeec7bf1f37..000000000000 --- a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_master.yml +++ /dev/null @@ -1,10 +0,0 @@ -on: - pull_request_target: - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: master \ No newline at end of file diff --git a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_run.yml b/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_run.yml deleted file mode 100644 index 33bb9ba889b6..000000000000 --- a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_run.yml +++ /dev/null @@ -1,11 +0,0 @@ -on: pull_request_target - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} - - - run: make \ No newline at end of file diff --git a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_sequence.yml b/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_sequence.yml deleted file mode 100644 index 5e0d2a8ee275..000000000000 --- a/javascript/ql/test/experimental/Security/CWE-094/.github/workflows/pull_request_target_sequence.yml +++ /dev/null @@ -1,9 +0,0 @@ -on: [pull_request_target, push] - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} \ No newline at end of file diff --git a/javascript/ql/test/experimental/Security/CWE-094/UntrustedCheckout.expected b/javascript/ql/test/experimental/Security/CWE-094/UntrustedCheckout.expected deleted file mode 100644 index 127ced2bb97a..000000000000 --- a/javascript/ql/test/experimental/Security/CWE-094/UntrustedCheckout.expected +++ /dev/null @@ -1,15 +0,0 @@ -| .github/workflows/pull_request_target_if_job.yml:9:7:12:2 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_if_job.yml:16:7:19:2 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_if_job.yml:30:7:33:2 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_if_job.yml:36:7:38:54 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_if_step.yml:9:7:14:4 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_if_step.yml:14:7:19:4 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_if_step.yml:24:7:29:4 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_if_step.yml:29:7:31:54 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_label_only.yml:10:7:12:54 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_label_only_mapping.yml:11:7:13:54 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_labels_mapping.yml:13:7:15:54 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_labels_sequence.yml:10:7:12:54 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_mapping.yml:8:7:10:54 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_run.yml:7:7:11:4 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | -| .github/workflows/pull_request_target_sequence.yml:7:7:9:54 | uses: a ... kout@v2 | Potential unsafe checkout of untrusted pull request on 'pull_request_target'. | diff --git a/javascript/ql/test/experimental/Security/CWE-094/UntrustedCheckout.qlref b/javascript/ql/test/experimental/Security/CWE-094/UntrustedCheckout.qlref deleted file mode 100644 index bdf753c1f4ac..000000000000 --- a/javascript/ql/test/experimental/Security/CWE-094/UntrustedCheckout.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security/CWE-094/UntrustedCheckout.ql diff --git a/javascript/ql/test/experimental/TypeOrm/test.ts b/javascript/ql/test/experimental/TypeOrm/test.ts index 39e4dbb6ec35..3f6cd54d22d0 100644 --- a/javascript/ql/test/experimental/TypeOrm/test.ts +++ b/javascript/ql/test/experimental/TypeOrm/test.ts @@ -217,4 +217,9 @@ AppDataSource.initialize().then(async () => { qb.where(BadInput).orWhere(BadInput) // test: SQLInjectionPoint }), ).getMany() + + // Repository.query sink + await AppDataSource.getRepository(User2) + .query(BadInput) // test: SQLInjectionPoint + }).catch(error => console.log(error)) diff --git a/javascript/ql/test/experimental/TypeOrm/tests.expected b/javascript/ql/test/experimental/TypeOrm/tests.expected index a8f092c33e31..cbcf7785c787 100644 --- a/javascript/ql/test/experimental/TypeOrm/tests.expected +++ b/javascript/ql/test/experimental/TypeOrm/tests.expected @@ -29,4 +29,5 @@ passingPositiveTests | PASSED | SQLInjectionPoint | test.ts:210:28:210:53 | // test ... onPoint | | PASSED | SQLInjectionPoint | test.ts:213:56:213:81 | // test ... onPoint | | PASSED | SQLInjectionPoint | test.ts:217:56:217:81 | // test ... onPoint | +| PASSED | SQLInjectionPoint | test.ts:223:29:223:54 | // test ... onPoint | failingPositiveTests 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 000000000000..6dd94bcf1952 --- /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 55c6771eef02..26ba8c46a993 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 97730513195b..7c015994aafe 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 1b7ebfdd501a..bb1de953169b 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/TripleDot/react-use.js b/javascript/ql/test/library-tests/TripleDot/react-use.js new file mode 100644 index 000000000000..1691a7fbea46 --- /dev/null +++ b/javascript/ql/test/library-tests/TripleDot/react-use.js @@ -0,0 +1,12 @@ +import { use } from "react"; + +async function fetchData() { + return new Promise((resolve) => { + resolve(source("fetchedData")); + }); +} + +function Component() { + const data = use(fetchData()); + sink(data); // $ hasValueFlow=fetchedData +} diff --git a/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.expected b/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.expected index 8ac3eea2be5f..06afe15ee183 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 829435e3220c..fd223ee5a533 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 e9d66a4afe09..b4d324377bef 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 7a60484a5f72..63e749e97be8 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 a91505e3f034..69374cbf4bf8 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 5ee97e2dfb59..3781aea96e20 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 2b63e171f1e9..199749ed3f60 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 a9123b1ef55b..91eb164f394c 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 000000000000..68509e4a1c63 --- /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 000000000000..cb140ec63c97 --- /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 000000000000..ffd67593202c --- /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 000000000000..22fc397cf3d0 --- /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 000000000000..cc461c5c7dda --- /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 000000000000..47ef09acc6e5 --- /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 000000000000..bb94da47faf9 --- /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 000000000000..8aa013bcde09 --- /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 000000000000..da65575a443a --- /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 000000000000..23c22e445914 --- /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 000000000000..7bcf4b419e95 --- /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 000000000000..c8aaf3bb9956 --- /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 000000000000..41ce42e3b1fa --- /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 000000000000..6fae12f06847 --- /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 000000000000..62f7e519ff0e --- /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 000000000000..26e4499f4da2 --- /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 000000000000..8fc6546c70f3 --- /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 000000000000..662faeb52c9a --- /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 000000000000..56b1d43d399d --- /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 000000000000..bd8811dfe7aa --- /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 000000000000..f2f96865f390 --- /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 000000000000..1aded75ae95f --- /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 000000000000..a23b85e3b81e --- /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 000000000000..9525a32706b4 --- /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 000000000000..d3074111f919 --- /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 000000000000..ab6773f15f90 --- /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 000000000000..82194fc7ab06 --- /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 000000000000..09b6105d0126 --- /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 000000000000..c7160e16561e --- /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/ClientRequests/ClientRequests.expected b/javascript/ql/test/library-tests/frameworks/ClientRequests/ClientRequests.expected index f787a7e60603..fbbc8832d72f 100644 --- a/javascript/ql/test/library-tests/frameworks/ClientRequests/ClientRequests.expected +++ b/javascript/ql/test/library-tests/frameworks/ClientRequests/ClientRequests.expected @@ -5,6 +5,8 @@ test_ClientRequest | apollo.js:17:1:17:34 | new Pre ... yurl"}) | | apollo.js:20:1:20:77 | createN ... phql'}) | | apollo.js:23:1:23:31 | new Web ... wsUri}) | +| axios.ts:14:32:14:65 | api.get ... repo}`) | +| axios.ts:25:32:25:73 | api.pat ... , data) | | axiosTest.js:4:5:7:6 | axios({ ... \\n }) | | axiosTest.js:12:5:17:6 | axios({ ... \\n }) | | puppeteer.ts:6:11:6:42 | page.go ... e.com') | @@ -111,6 +113,7 @@ test_ClientRequest | tst.js:349:5:349:30 | axios.g ... url }) | | tst.js:352:5:352:66 | axiosIn ... text"}) | test_getADataNode +| axios.ts:25:32:25:73 | api.pat ... , data) | axios.ts:25:69:25:72 | data | | axiosTest.js:12:5:17:6 | axios({ ... \\n }) | axiosTest.js:15:18:15:55 | { 'Cont ... json' } | | axiosTest.js:12:5:17:6 | axios({ ... \\n }) | axiosTest.js:16:15:16:35 | {x: 'te ... 'test'} | | superagent.js:6:5:6:32 | superag ... st(url) | superagent.js:6:39:6:42 | data | @@ -159,6 +162,8 @@ test_getADataNode | tst.js:347:5:347:30 | axios.p ... , data) | tst.js:347:26:347:29 | data | | tst.js:348:5:348:38 | axios.p ... config) | tst.js:348:26:348:29 | data | test_getHost +| axios.ts:14:32:14:65 | api.get ... repo}`) | axios.ts:4:14:4:37 | "https: ... ub.com" | +| axios.ts:25:32:25:73 | api.pat ... , data) | axios.ts:4:14:4:37 | "https: ... ub.com" | | tst.js:87:5:87:39 | http.ge ... host}) | tst.js:87:34:87:37 | host | | tst.js:89:5:89:23 | axios({host: host}) | tst.js:89:18:89:21 | host | | tst.js:91:5:91:34 | got(rel ... host}) | tst.js:91:29:91:32 | host | @@ -173,6 +178,8 @@ test_getUrl | apollo.js:17:1:17:34 | new Pre ... yurl"}) | apollo.js:17:26:17:32 | "myurl" | | apollo.js:20:1:20:77 | createN ... phql'}) | apollo.js:20:30:20:75 | 'https: ... raphql' | | apollo.js:23:1:23:31 | new Web ... wsUri}) | apollo.js:23:25:23:29 | wsUri | +| axios.ts:14:32:14:65 | api.get ... repo}`) | axios.ts:14:40:14:64 | `/repos ... {repo}` | +| axios.ts:25:32:25:73 | api.pat ... , data) | axios.ts:25:42:25:66 | `/repos ... {repo}` | | axiosTest.js:4:5:7:6 | axios({ ... \\n }) | axiosTest.js:4:11:7:5 | {\\n ... ,\\n } | | axiosTest.js:4:5:7:6 | axios({ ... \\n }) | axiosTest.js:6:14:6:16 | url | | axiosTest.js:12:5:17:6 | axios({ ... \\n }) | axiosTest.js:12:11:17:5 | {\\n ... }\\n } | @@ -289,6 +296,8 @@ test_getUrl | tst.js:352:5:352:66 | axiosIn ... text"}) | tst.js:352:19:352:65 | {method ... "text"} | | tst.js:352:5:352:66 | axiosIn ... text"}) | tst.js:352:40:352:42 | url | test_getAResponseDataNode +| axios.ts:14:32:14:65 | api.get ... repo}`) | axios.ts:14:32:14:65 | api.get ... repo}`) | json | true | +| axios.ts:25:32:25:73 | api.pat ... , data) | axios.ts:25:32:25:73 | api.pat ... , data) | json | true | | axiosTest.js:4:5:7:6 | axios({ ... \\n }) | axiosTest.js:4:5:7:6 | axios({ ... \\n }) | json | true | | axiosTest.js:12:5:17:6 | axios({ ... \\n }) | axiosTest.js:12:5:17:6 | axios({ ... \\n }) | json | true | | superagent.js:4:5:4:26 | superag ... ', url) | superagent.js:4:5:4:26 | superag ... ', url) | stream | true | diff --git a/javascript/ql/test/library-tests/frameworks/ClientRequests/axios.ts b/javascript/ql/test/library-tests/frameworks/ClientRequests/axios.ts new file mode 100644 index 000000000000..7099e3889b9a --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/ClientRequests/axios.ts @@ -0,0 +1,32 @@ +import axios from "axios"; + +let api = axios.create({ + baseURL: "https://api.github.com", + timeout: 1000, + responseType: "json", + headers: { "X-Custom-Header": "foobar" } +}); + +export default api; + +export async function getRepo(owner: string, repo: string) { + try { + const response = await api.get(`/repos/${owner}/${repo}`); + console.log("Repository data:", response.data); + return response.data; + } catch (error) { + console.error("Error fetching repo:", error); + throw error; + } +} + +export async function updateUser(owner: string, repo: string, data: any) { + try { + const response = await api.patch(`/repos/${owner}/${repo}`, data); + console.log("User updated:", response.data); + return response.data; + } catch (error) { + console.error("Error updating user:", error); + throw error; + } +} diff --git a/javascript/ql/test/library-tests/frameworks/Nest/global/app.module.ts b/javascript/ql/test/library-tests/frameworks/Nest/global/app.module.ts index 2c230821a632..b8793dc57895 100644 --- a/javascript/ql/test/library-tests/frameworks/Nest/global/app.module.ts +++ b/javascript/ql/test/library-tests/frameworks/Nest/global/app.module.ts @@ -1,12 +1,27 @@ import { Module } from '@nestjs/common'; import { Controller } from './validation'; -import { Foo } from './foo.interface'; -import { FooImpl } from './foo.impl'; +import { Imports } from './imports'; +import { Foo, Foo2, Foo3 } from './foo.interface'; +import { FooImpl, Foo2Impl, Foo3Impl } from './foo.impl'; + +const foo3 = new Foo3Impl() @Module({ - controllers: [Controller], - providers: [{ - provide: Foo, useClass: FooImpl - }], + controllers: [Controller], + imports: [Imports.forRoot()], + providers: [ + { + provide: Foo, + useClass: FooImpl + }, + { + provide: Foo2, + useFactory: () => new Foo2Impl() + }, + { + provide: Foo3, + useValue: foo3 + } + ], }) export class AppModule { } diff --git a/javascript/ql/test/library-tests/frameworks/Nest/global/foo.impl.ts b/javascript/ql/test/library-tests/frameworks/Nest/global/foo.impl.ts index 979389a3804c..9e54bc4774e9 100644 --- a/javascript/ql/test/library-tests/frameworks/Nest/global/foo.impl.ts +++ b/javascript/ql/test/library-tests/frameworks/Nest/global/foo.impl.ts @@ -1,7 +1,25 @@ -import { Foo } from "./foo.interface"; +import { Foo, Foo2, Foo3, Foo4 } from "./foo.interface"; export class FooImpl extends Foo { fooMethod(x: string) { sink(x); // $ hasValueFlow=x } } + +export class Foo2Impl extends Foo2 { + fooMethod(x: string) { + sink(x); // $ hasValueFlow=x + } +} + +export class Foo3Impl extends Foo3 { + fooMethod(x: string) { + sink(x); // $ hasValueFlow=x + } +} + +export class Foo4Impl extends Foo4 { + fooMethod(x: string) { + sink(x); // $ hasValueFlow=x + } +} \ No newline at end of file diff --git a/javascript/ql/test/library-tests/frameworks/Nest/global/foo.interface.ts b/javascript/ql/test/library-tests/frameworks/Nest/global/foo.interface.ts index f22529c2d185..b3d18f2749a3 100644 --- a/javascript/ql/test/library-tests/frameworks/Nest/global/foo.interface.ts +++ b/javascript/ql/test/library-tests/frameworks/Nest/global/foo.interface.ts @@ -1,3 +1,15 @@ export abstract class Foo { abstract fooMethod(x: string): void; } + +export abstract class Foo2 { + abstract fooMethod(x: string): void; +} + +export abstract class Foo3 { + abstract fooMethod(x: string): void; +} + +export abstract class Foo4 { + abstract fooMethod(x: string): void; +} diff --git a/javascript/ql/test/library-tests/frameworks/Nest/global/imports.ts b/javascript/ql/test/library-tests/frameworks/Nest/global/imports.ts new file mode 100644 index 000000000000..1df36111161c --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/Nest/global/imports.ts @@ -0,0 +1,16 @@ +import { DynamicModule } from '@nestjs/common'; +import { Foo4Impl } from './foo.impl'; +import { Foo4 } from './foo.interface'; + +export class Imports { + static forRoot(): DynamicModule { + return { + providers: [ + { + provide: Foo4, + useClass: Foo4Impl, + }, + ], + }; + } +} diff --git a/javascript/ql/test/library-tests/frameworks/Nest/global/validation.ts b/javascript/ql/test/library-tests/frameworks/Nest/global/validation.ts index 1872b5a51b7d..f6046e4651a1 100644 --- a/javascript/ql/test/library-tests/frameworks/Nest/global/validation.ts +++ b/javascript/ql/test/library-tests/frameworks/Nest/global/validation.ts @@ -1,10 +1,10 @@ import { Get, Query } from '@nestjs/common'; import { IsIn } from 'class-validator'; -import { Foo } from './foo.interface'; +import { Foo, Foo2, Foo3, Foo4 } from './foo.interface'; export class Controller { constructor( - private readonly foo: Foo + private readonly foo: Foo, private readonly foo2: Foo2, private readonly foo3: Foo3, private readonly foo4: Foo4 ) { } @Get() @@ -16,6 +16,9 @@ export class Controller { @Get() route2(@Query('x') x: string) { this.foo.fooMethod(x); + this.foo2.fooMethod(x); + this.foo3.fooMethod(x); + this.foo4.fooMethod(x); } } diff --git a/javascript/ql/test/library-tests/frameworks/Nest/local/middleware.ts b/javascript/ql/test/library-tests/frameworks/Nest/local/middleware.ts new file mode 100644 index 000000000000..f7f7104c68cc --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/Nest/local/middleware.ts @@ -0,0 +1,12 @@ +import { Injectable, NestMiddleware } from '@nestjs/common'; +import { Response, NextFunction } from 'express'; +import { CustomRequest } from '@randomPackage/request'; + +@Injectable() +export class LoggerMiddleware implements NestMiddleware { + // The request can be a custom type that extends the express Request + use(req: CustomRequest, res: Response, next: NextFunction) { + console.log(req.query.abc); + next(); + } +} \ No newline at end of file diff --git a/javascript/ql/test/library-tests/frameworks/Nest/test.expected b/javascript/ql/test/library-tests/frameworks/Nest/test.expected index ff12967bec69..ea74b306b366 100644 --- a/javascript/ql/test/library-tests/frameworks/Nest/test.expected +++ b/javascript/ql/test/library-tests/frameworks/Nest/test.expected @@ -1,7 +1,7 @@ testFailures routeHandler | global/validation.ts:11:3:14:3 | route1( ... OK\\n } | -| global/validation.ts:17:3:19:3 | route2( ... x);\\n } | +| global/validation.ts:17:3:22:3 | route2( ... x);\\n } | | local/customDecorator.ts:18:3:20:3 | sneaky( ... OK\\n } | | local/customDecorator.ts:23:3:25:3 | safe(@S ... OK\\n } | | local/customPipe.ts:20:5:22:5 | sanitiz ... K\\n } | @@ -10,6 +10,7 @@ routeHandler | local/customPipe.ts:36:5:38:5 | propaga ... K\\n } | | local/customPipe.ts:41:5:43:5 | propaga ... K\\n } | | local/customPipe.ts:47:5:49:5 | propaga ... K\\n } | +| local/middleware.ts:8:3:11:3 | use(req ... ();\\n } | | local/routes.ts:6:3:8:3 | getFoo( ... o';\\n } | | local/routes.ts:11:3:13:3 | postFoo ... o';\\n } | | local/routes.ts:16:3:18:3 | getRoot ... o';\\n } | @@ -29,9 +30,11 @@ routeHandler | local/validation.ts:42:3:45:3 | route6( ... OK\\n } | requestSource | local/customDecorator.ts:5:21:5:51 | ctx.swi ... quest() | +| local/middleware.ts:8:7:8:9 | req | | local/routes.ts:30:12:30:14 | req | | local/routes.ts:61:23:61:25 | req | responseSource +| local/middleware.ts:8:27:8:29 | res | | local/routes.ts:61:35:61:37 | res | | local/routes.ts:62:5:62:25 | res.sen ... uery.x) | requestInputAccess @@ -44,6 +47,7 @@ requestInputAccess | parameter | local/customDecorator.ts:6:12:6:41 | request ... ryParam | | parameter | local/customPipe.ts:5:15:5:19 | value | | parameter | local/customPipe.ts:13:15:13:19 | value | +| parameter | local/middleware.ts:9:17:9:29 | req.query.abc | | parameter | local/routes.ts:27:17:27:17 | x | | parameter | local/routes.ts:28:14:28:21 | queryObj | | parameter | local/routes.ts:29:20:29:23 | name | @@ -71,6 +75,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/library-tests/frameworks/ReactJS/ReactComponent.qll b/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent.qll deleted file mode 100644 index a48c6b8f1c94..000000000000 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent.qll +++ /dev/null @@ -1,3 +0,0 @@ -import semmle.javascript.frameworks.React - -query predicate test_ReactComponent(ReactComponent c) { any() } diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getACandidatePropsValue.qll b/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getACandidatePropsValue.qll deleted file mode 100644 index a551aa457eca..000000000000 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getACandidatePropsValue.qll +++ /dev/null @@ -1,5 +0,0 @@ -import javascript - -query predicate test_ReactComponent_getACandidatePropsValue(DataFlow::Node res) { - exists(ReactComponent c | res = c.getACandidatePropsValue(_)) -} diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getACandidateStateSource.qll b/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getACandidateStateSource.qll deleted file mode 100644 index af6597ab96cf..000000000000 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getACandidateStateSource.qll +++ /dev/null @@ -1,7 +0,0 @@ -import semmle.javascript.frameworks.React - -query predicate test_ReactComponent_getACandidateStateSource( - ReactComponent c, DataFlow::SourceNode res -) { - res = c.getACandidateStateSource() -} diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getADirectPropsSource.qll b/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getADirectPropsSource.qll deleted file mode 100644 index 9f9ebd89f8de..000000000000 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getADirectPropsSource.qll +++ /dev/null @@ -1,5 +0,0 @@ -import semmle.javascript.frameworks.React - -query predicate test_ReactComponent_getADirectPropsSource(ReactComponent c, DataFlow::SourceNode res) { - res = c.getADirectPropsAccess() -} diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getAPreviousStateSource.qll b/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getAPreviousStateSource.qll deleted file mode 100644 index b1bfe312dae2..000000000000 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getAPreviousStateSource.qll +++ /dev/null @@ -1,7 +0,0 @@ -import semmle.javascript.frameworks.React - -query predicate test_ReactComponent_getAPreviousStateSource( - ReactComponent c, DataFlow::SourceNode res -) { - res = c.getAPreviousStateSource() -} diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getAPropRead.qll b/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getAPropRead.qll deleted file mode 100644 index 0ff2a588a029..000000000000 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getAPropRead.qll +++ /dev/null @@ -1,5 +0,0 @@ -import semmle.javascript.frameworks.React - -query predicate test_ReactComponent_getAPropRead(ReactComponent c, string n, DataFlow::PropRead res) { - res = c.getAPropRead(n) -} diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getInstanceMethod.qll b/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getInstanceMethod.qll deleted file mode 100644 index b813e19539b5..000000000000 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getInstanceMethod.qll +++ /dev/null @@ -1,5 +0,0 @@ -import semmle.javascript.frameworks.React - -query predicate test_ReactComponent_getInstanceMethod(ReactComponent c, string n, Function res) { - res = c.getInstanceMethod(n) -} diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_ref.qll b/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_ref.qll deleted file mode 100644 index a017a0715feb..000000000000 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_ref.qll +++ /dev/null @@ -1,3 +0,0 @@ -import semmle.javascript.frameworks.React - -query predicate test_ReactComponent_ref(ReactComponent c, DataFlow::Node res) { res = c.ref() } diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactName.qll b/javascript/ql/test/library-tests/frameworks/ReactJS/ReactName.qll deleted file mode 100644 index 885f1f38a57f..000000000000 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/ReactName.qll +++ /dev/null @@ -1,17 +0,0 @@ -import semmle.javascript.frameworks.React - -query predicate test_JSXname(JsxElement element, JsxName jsxname, string name, string type) { - name = jsxname.getValue() and - ( - jsxname instanceof Identifier and type = "Identifier" - or - jsxname instanceof ThisExpr and type = "thisExpr" - or - jsxname.(DotExpr).getBase() instanceof JsxName and type = "dot" - or - jsxname instanceof JsxQualifiedName and type = "qualifiedName" - ) and - element.getNameExpr() = jsxname -} - -query ThisExpr test_JsxName_this(JsxElement element) { result.getParentExpr+() = element } diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/es5.js b/javascript/ql/test/library-tests/frameworks/ReactJS/es5.js index abef8d7d8bbd..8d1eb47b55f6 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/es5.js +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/es5.js @@ -1,14 +1,14 @@ var Hello = React.createClass({ displayName: 'Hello', render: function() { - return
    Hello {this.props.name}
    ; + return
    Hello {this.props.name}
    ; // $ threatModelSource=view-component-input }, getDefaultProps: function() { return { - name: 'world' + name: 'world' // $ getACandidatePropsValue }; } -}); +}); // $ reactComponent Hello.info = function() { return "Nothing to see here."; @@ -17,6 +17,6 @@ Hello.info = function() { var createReactClass = require('create-react-class'); var Greeting = createReactClass({ render: function() { - return

    Hello, {this.props.name}

    ; + return

    Hello, {this.props.name}

    ; // $ threatModelSource=view-component-input } -}); +}); // $ reactComponent diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/es6.js b/javascript/ql/test/library-tests/frameworks/ReactJS/es6.js index 2991888354c8..333ac1a943f5 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/es6.js +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/es6.js @@ -1,11 +1,11 @@ -class Hello extends React.Component { +class Hello extends React.Component { // $ threatModelSource=view-component-input render() { - return
    Hello {this.props.name}
    ; + return
    Hello {this.props.name}
    ; // $ threatModelSource=view-component-input } static info() { return "Nothing to see here."; } -} +} // $ reactComponent Hello.displayName = 'Hello'; Hello.defaultProps = { name: 'world' @@ -17,4 +17,4 @@ class Hello2 extends React.Component { this.state.bar.foo = 42; this.state = { baz: 42}; } -} +} // $ reactComponent diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/exportedComponent.jsx b/javascript/ql/test/library-tests/frameworks/ReactJS/exportedComponent.jsx index 4335b4bc3081..9e2d5580228f 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/exportedComponent.jsx +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/exportedComponent.jsx @@ -1,3 +1,3 @@ -export function MyComponent(props) { +export function MyComponent(props) { // $ threatModelSource=view-component-input return
    -} +} // $ reactComponent diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/getADirectStateAccess.qll b/javascript/ql/test/library-tests/frameworks/ReactJS/getADirectStateAccess.qll deleted file mode 100644 index b43f3e487d77..000000000000 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/getADirectStateAccess.qll +++ /dev/null @@ -1,5 +0,0 @@ -import semmle.javascript.frameworks.React - -query predicate test_getADirectStateAccess(ReactComponent c, DataFlow::SourceNode res) { - res = c.getADirectStateAccess() -} diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/importedComponent.jsx b/javascript/ql/test/library-tests/frameworks/ReactJS/importedComponent.jsx index d94acf59abee..ed04d4bec889 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/importedComponent.jsx +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/importedComponent.jsx @@ -1,5 +1,5 @@ import { MyComponent } from "./exportedComponent"; -export function render({color, location}) { - return -} +export function render({color, location}) { // $ threatModelSource=view-component-input locationSource threatModelSource=remote + return // $ getACandidatePropsValue +} // $ reactComponent diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/namedImport.js b/javascript/ql/test/library-tests/frameworks/ReactJS/namedImport.js index 3c5a7182d65e..c29160c8ed5b 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/namedImport.js +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/namedImport.js @@ -1,5 +1,5 @@ import { Component } from "react"; -class C extends Component {} +class C extends Component {} // $ threatModelSource=view-component-input reactComponent -class D extends C {} +class D extends C {} // $ threatModelSource=view-component-input reactComponent diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/plainfn.js b/javascript/ql/test/library-tests/frameworks/ReactJS/plainfn.js index 7f5995b9fdb1..c5d029a44d13 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/plainfn.js +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/plainfn.js @@ -1,15 +1,15 @@ -function Hello(props) { +function Hello(props) { // $ threatModelSource=view-component-input return
    Hello {props.name}
    ; -} +} // $ reactComponent -function Hello2(props) { +function Hello2(props) { // $ threatModelSource=view-component-input return React.createElement("div"); -} +} // $ reactComponent -function Hello3(props) { +function Hello3(props) { // $ threatModelSource=view-component-input var x = React.createElement("div"); return x; -} +} // $ reactComponent function NotAComponent(props) { if (y) @@ -17,8 +17,8 @@ function NotAComponent(props) { return g(); } -function SpuriousComponent(props) { +function SpuriousComponent(props) { // $ threatModelSource=view-component-input if (y) return React.createElement("div"); return 42; -} +} // $ reactComponent diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/preact.js b/javascript/ql/test/library-tests/frameworks/ReactJS/preact.js index 787064397f0d..ced8ae6be303 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/preact.js +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/preact.js @@ -1,11 +1,11 @@ -class Hello extends Preact.Component { - render(props, state) { +class Hello extends Preact.Component { // $ threatModelSource=view-component-input + render(props, state) { // $ threatModelSource=view-component-input props.name; state.name; return
    ; } -} +} // $ reactComponent -class Hello extends preact.Component { +class Hello extends preact.Component { // $ threatModelSource=view-component-input -} +} // $ reactComponent diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/probably-a-component.js b/javascript/ql/test/library-tests/frameworks/ReactJS/probably-a-component.js index a8205039b8e7..c82188beb02a 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/probably-a-component.js +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/probably-a-component.js @@ -1,6 +1,6 @@ -class Hello extends Component { +class Hello extends Component { // $ threatModelSource=view-component-input render() { - this.props.name; + this.props.name; // $ threatModelSource=view-component-input return
    ; } -} +} // $ reactComponent diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/props.js b/javascript/ql/test/library-tests/frameworks/ReactJS/props.js index c1cce38a040c..153ee1473428 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/props.js +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/props.js @@ -1,36 +1,36 @@ function ES2015() { - class C extends React.Component { - } + class C extends React.Component { // $ threatModelSource=view-component-input + } // $ reactComponent - C.defaultProps = { propFromDefaultProps: "propFromDefaultProps" }; + C.defaultProps = { propFromDefaultProps: "propFromDefaultProps" }; // $ getACandidatePropsValue - (); + (); // $ getACandidatePropsValue - new C({propFromConstructor: "propFromConstructor"}); + new C({propFromConstructor: "propFromConstructor"}); // $ getACandidatePropsValue } function ES5() { var C = React.createClass({ getDefaultProps() { - return { propFromDefaultProps: "propFromDefaultProps" }; + return { propFromDefaultProps: "propFromDefaultProps" }; // $ getACandidatePropsValue } - }); + }); // $ reactComponent - (); + (); // $ getACandidatePropsValue - C({propFromConstructor: "propFromConstructor"}); + C({propFromConstructor: "propFromConstructor"}); // $ getACandidatePropsValue } function Functional() { - function C(props) { + function C(props) { // $ threatModelSource=view-component-input return
    ; - } + } // $ reactComponent - C.defaultProps = { propFromDefaultProps: "propFromDefaultProps" }; + C.defaultProps = { propFromDefaultProps: "propFromDefaultProps" }; // $ getACandidatePropsValue - (); + (); // $ getACandidatePropsValue - new C({propFromConstructor: "propFromConstructor"}); + new C({propFromConstructor: "propFromConstructor"}); // $ getACandidatePropsValue } diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/rare-lifecycle-methods.js b/javascript/ql/test/library-tests/frameworks/ReactJS/rare-lifecycle-methods.js index c3f7c13b1623..b4943ea66c30 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/rare-lifecycle-methods.js +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/rare-lifecycle-methods.js @@ -1,4 +1,4 @@ -class C extends React.Component { +class C extends React.Component { // $ threatModelSource=view-component-input static getDerivedStateFromProps(props, state) { return {}; } @@ -8,4 +8,4 @@ class C extends React.Component { getSnapshotBeforeUpdate(prevProps, prevState) { return {}; } -} +} // $ reactComponent diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/react.qll b/javascript/ql/test/library-tests/frameworks/ReactJS/react.qll deleted file mode 100644 index a5f254b79707..000000000000 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/react.qll +++ /dev/null @@ -1,3 +0,0 @@ -import javascript - -query predicate test_react(DataFlow::ValueNode nd) { react().flowsTo(nd) } diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/statePropertyReads.js b/javascript/ql/test/library-tests/frameworks/ReactJS/statePropertyReads.js index 697bc35c1505..93a120937d76 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/statePropertyReads.js +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/statePropertyReads.js @@ -10,4 +10,4 @@ class Reads extends React.Component { componentDidUpdate(prevProps, prevState) { prevState.p4; } -} +} // $ reactComponent diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/statePropertyWrites.js b/javascript/ql/test/library-tests/frameworks/ReactJS/statePropertyWrites.js index 692400c7381a..27e02bc6f665 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/statePropertyWrites.js +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/statePropertyWrites.js @@ -31,15 +31,15 @@ class Writes extends React.Component { state = { p7: 42 }; -} +} // $ reactComponent React.createClass({ render: function() { - return
    Hello {this.props.name}
    ; + return
    Hello {this.props.name}
    ; // $ threatModelSource=view-component-input }, getInitialState: function() { return { p8: 42 }; } -}); +}); // $ reactComponent diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/tests.expected b/javascript/ql/test/library-tests/frameworks/ReactJS/tests.expected index 9a5c38ddbf90..9b453989bb80 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/tests.expected +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/tests.expected @@ -1,42 +1,112 @@ -test_react -| es5.js:1:13:1:17 | React | -| es6.js:1:21:1:25 | React | -| es6.js:14:22:14:26 | React | -| globalReactRefs.js:1:1:1:5 | React | -| globalReactRefs.js:4:5:4:9 | React | -| globalReactRefs.js:7:1:7:5 | React | -| importedReactRefs.js:1:8:1:12 | React | -| importedReactRefs.js:3:1:3:5 | React | -| importedReactRefs.js:6:5:6:9 | React | -| importedReactRefs.js:9:1:9:5 | React | -| plainfn.js:6:12:6:16 | React | -| plainfn.js:10:13:10:17 | React | -| plainfn.js:16:16:16:20 | React | -| plainfn.js:22:16:22:20 | React | -| props.js:2:21:2:25 | React | -| props.js:13:13:13:17 | React | -| rare-lifecycle-methods.js:1:17:1:21 | React | -| requiredReactRefs.js:1:13:1:28 | require("react") | -| requiredReactRefs.js:3:1:3:5 | React | -| requiredReactRefs.js:6:5:6:9 | React | -| requiredReactRefs.js:9:1:9:5 | React | -| requiredReactRefs.js:12:17:12:32 | require("react") | -| requiredReactRefs.js:14:5:14:9 | React | -| requiredReactRefs.js:17:9:17:13 | React | -| requiredReactRefs.js:20:5:20:9 | React | -| statePropertyReads.js:1:21:1:25 | React | -| statePropertyWrites.js:1:22:1:26 | React | -| statePropertyWrites.js:36:1:36:5 | React | -| thisAccesses.js:1:17:1:21 | React | -| thisAccesses.js:18:1:18:5 | React | -| thisAccesses.js:38:1:38:5 | React | -| thisAccesses.js:40:9:40:13 | React | -| thisAccesses.js:47:18:47:22 | React | -| thisAccesses.js:54:18:54:22 | React | -| thisAccesses_importedMappers.js:1:8:1:12 | React | -| thisAccesses_importedMappers.js:4:1:4:5 | React | -| thisAccesses_importedMappers.js:6:9:6:13 | React | -test_JSXname +getACandidatePropsValue +| es5.js:8:13:8:19 | 'world' | +| importedComponent.jsx:4:32:4:36 | color | +| props.js:5:46:5:67 | "propFr ... tProps" | +| props.js:7:22:7:34 | "propFromJSX" | +| props.js:9:33:9:53 | "propFr ... ructor" | +| props.js:15:44:15:65 | "propFr ... tProps" | +| props.js:19:22:19:34 | "propFromJSX" | +| props.js:21:29:21:49 | "propFr ... ructor" | +| props.js:30:46:30:67 | "propFr ... tProps" | +| props.js:32:22:32:34 | "propFromJSX" | +| props.js:34:33:34:53 | "propFr ... ructor" | +| useHigherOrderComponent.jsx:5:33:5:37 | "red" | +| useHigherOrderComponent.jsx:11:39:11:44 | "lazy" | +| useHigherOrderComponent.jsx:17:40:17:46 | "lazy2" | +getACandidateStateSource +| es6.js:14:1:20:1 | class H ... }\\n} | es6.js:18:22:18:31 | { baz: 42} | +| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:3:16:3:17 | {} | +| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:5:38:5:46 | nextState | +| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:7:45:7:56 | prevState.p3 | +| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:8:18:8:19 | {} | +| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:12:18:12:19 | {} | +| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:16:18:16:19 | {} | +| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:20:18:20:19 | {} | +| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:31:13:33:5 | {\\n ... 2\\n } | +| statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} | statePropertyWrites.js:41:12:43:5 | {\\n p8: 42\\n } | +| thisAccesses.js:47:1:52:1 | class C ... }\\n} | thisAccesses.js:48:18:48:18 | y | +| thisAccesses.js:47:1:52:1 | class C ... }\\n} | thisAccesses.js:49:22:49:22 | x | +getADirectPropsSource +| es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | es5.js:4:24:4:33 | this.props | +| es5.js:18:33:22:1 | {\\n ren ... t\\n }\\n} | es5.js:20:24:20:33 | this.props | +| es6.js:1:1:8:1 | class H ... ;\\n }\\n} | es6.js:1:37:1:36 | args | +| es6.js:1:1:8:1 | class H ... ;\\n }\\n} | es6.js:3:24:3:33 | this.props | +| exportedComponent.jsx:1:8:3:1 | functio ... r}}/>\\n} | exportedComponent.jsx:1:29:1:33 | props | +| importedComponent.jsx:3:8:5:1 | functio ... Value\\n} | importedComponent.jsx:3:24:3:40 | {color, location} | +| namedImport.js:3:1:3:28 | class C ... nent {} | namedImport.js:3:27:3:26 | args | +| namedImport.js:5:1:5:20 | class D extends C {} | namedImport.js:5:19:5:18 | args | +| plainfn.js:1:1:3:1 | functio ... div>;\\n} | plainfn.js:1:16:1:20 | props | +| plainfn.js:5:1:7:1 | functio ... iv");\\n} | plainfn.js:5:17:5:21 | props | +| plainfn.js:9:1:12:1 | functio ... rn x;\\n} | plainfn.js:9:17:9:21 | props | +| plainfn.js:20:1:24:1 | functio ... n 42;\\n} | plainfn.js:20:28:20:32 | props | +| preact.js:1:1:7:1 | class H ... }\\n} | preact.js:1:38:1:37 | args | +| preact.js:1:1:7:1 | class H ... }\\n} | preact.js:2:12:2:16 | props | +| preact.js:9:1:11:1 | class H ... nput\\n\\n} | preact.js:9:38:9:37 | args | +| probably-a-component.js:1:1:6:1 | class H ... }\\n} | probably-a-component.js:1:31:1:30 | args | +| probably-a-component.js:1:1:6:1 | class H ... }\\n} | probably-a-component.js:3:9:3:18 | this.props | +| props.js:2:5:3:5 | class C ... t\\n } | props.js:2:37:2:36 | args | +| props.js:26:5:28:5 | functio ... ;\\n } | props.js:26:16:26:20 | props | +| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:1:33:1:32 | args | +| statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} | statePropertyWrites.js:38:24:38:33 | this.props | +| thisAccesses.js:31:2:36:1 | functio ... iv/>;\\n} | thisAccesses.js:31:12:31:16 | props | +| thisAccesses.js:47:1:52:1 | class C ... }\\n} | thisAccesses.js:48:18:48:18 | y | +getADirectStateAccess +| es6.js:14:1:20:1 | class H ... }\\n} | es6.js:16:9:16:18 | this.state | +| es6.js:14:1:20:1 | class H ... }\\n} | es6.js:17:9:17:18 | this.state | +| es6.js:14:1:20:1 | class H ... }\\n} | es6.js:18:9:18:18 | this.state | +| preact.js:1:1:7:1 | class H ... }\\n} | preact.js:2:19:2:23 | state | +| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:3:9:3:18 | this.state | +| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:5:9:5:18 | this.state | +| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:4:9:4:17 | cmp.state | +| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:6:9:6:17 | cmp.state | +| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:10:9:10:17 | cmp.state | +| thisAccesses.js:47:1:52:1 | class C ... }\\n} | thisAccesses.js:49:9:49:18 | this.state | +| thisAccesses.js:47:1:52:1 | class C ... }\\n} | thisAccesses.js:50:9:50:18 | this.state | +getAPreviousStateSource +| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:2:44:2:48 | state | +| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:8:40:8:48 | prevState | +| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:7:24:7:32 | prevState | +| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:10:35:10:43 | prevState | +getAPropRead +| es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | name | es5.js:4:24:4:38 | this.props.name | +| es5.js:18:33:22:1 | {\\n ren ... t\\n }\\n} | name | es5.js:20:24:20:38 | this.props.name | +| es6.js:1:1:8:1 | class H ... ;\\n }\\n} | name | es6.js:3:24:3:38 | this.props.name | +| exportedComponent.jsx:1:8:3:1 | functio ... r}}/>\\n} | color | exportedComponent.jsx:2:32:2:42 | props.color | +| importedComponent.jsx:3:8:5:1 | functio ... Value\\n} | color | importedComponent.jsx:3:25:3:29 | color | +| importedComponent.jsx:3:8:5:1 | functio ... Value\\n} | location | importedComponent.jsx:3:32:3:39 | location | +| plainfn.js:1:1:3:1 | functio ... div>;\\n} | name | plainfn.js:2:22:2:31 | props.name | +| preact.js:1:1:7:1 | class H ... }\\n} | name | preact.js:3:9:3:18 | props.name | +| probably-a-component.js:1:1:6:1 | class H ... }\\n} | name | probably-a-component.js:3:9:3:23 | this.props.name | +| statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} | name | statePropertyWrites.js:38:24:38:38 | this.props.name | +getInstanceMethod +| es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | getDefaultProps | es5.js:6:20:10:3 | functio ... };\\n } | +| es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | render | es5.js:3:11:5:3 | functio ... put\\n } | +| es5.js:18:33:22:1 | {\\n ren ... t\\n }\\n} | render | es5.js:19:11:21:3 | functio ... put\\n } | +| es6.js:1:1:8:1 | class H ... ;\\n }\\n} | render | es6.js:2:9:4:3 | () {\\n ... put\\n } | +| exportedComponent.jsx:1:8:3:1 | functio ... r}}/>\\n} | render | exportedComponent.jsx:1:8:3:1 | functio ... r}}/>\\n} | +| importedComponent.jsx:3:8:5:1 | functio ... Value\\n} | render | importedComponent.jsx:3:8:5:1 | functio ... Value\\n} | +| plainfn.js:1:1:3:1 | functio ... div>;\\n} | render | plainfn.js:1:1:3:1 | functio ... div>;\\n} | +| plainfn.js:5:1:7:1 | functio ... iv");\\n} | render | plainfn.js:5:1:7:1 | functio ... iv");\\n} | +| plainfn.js:9:1:12:1 | functio ... rn x;\\n} | render | plainfn.js:9:1:12:1 | functio ... rn x;\\n} | +| plainfn.js:20:1:24:1 | functio ... n 42;\\n} | render | plainfn.js:20:1:24:1 | functio ... n 42;\\n} | +| preact.js:1:1:7:1 | class H ... }\\n} | render | preact.js:2:11:6:5 | (props, ... ;\\n } | +| probably-a-component.js:1:1:6:1 | class H ... }\\n} | render | probably-a-component.js:2:11:5:5 | () {\\n ... ;\\n } | +| props.js:13:31:17:5 | {\\n ... }\\n } | getDefaultProps | props.js:14:24:16:9 | () {\\n ... } | +| props.js:26:5:28:5 | functio ... ;\\n } | render | props.js:26:5:28:5 | functio ... ;\\n } | +| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | getSnapshotBeforeUpdate | rare-lifecycle-methods.js:8:28:10:5 | (prevPr ... ;\\n } | +| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | shouldComponentUpdate | rare-lifecycle-methods.js:5:26:7:5 | (nextPr ... ;\\n } | +| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | componentDidUpdate | statePropertyReads.js:10:23:12:5 | (prevPr ... ;\\n } | +| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | getInitialState | statePropertyWrites.js:25:20:29:5 | () { // ... ;\\n } | +| statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} | getInitialState | statePropertyWrites.js:40:20:44:3 | functio ... };\\n } | +| statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} | render | statePropertyWrites.js:37:11:39:3 | functio ... put\\n } | +| thisAccesses.js:1:1:16:1 | class C ... }\\n} | someInstanceMethod | thisAccesses.js:13:23:15:5 | () {\\n ... ;\\n } | +| thisAccesses.js:18:19:29:1 | {\\n r ... }\\n} | render | thisAccesses.js:19:13:24:5 | functio ... ;\\n } | +| thisAccesses.js:18:19:29:1 | {\\n r ... }\\n} | someInstanceMethod | thisAccesses.js:26:25:28:5 | functio ... ;\\n } | +| thisAccesses.js:31:2:36:1 | functio ... iv/>;\\n} | render | thisAccesses.js:31:2:36:1 | functio ... iv/>;\\n} | +| thisAccesses.js:38:19:45:1 | {\\n r ... },\\n} | render | thisAccesses.js:39:13:44:5 | functio ... ;\\n } | +| thisAccesses.js:54:1:63:1 | class C ... }\\n} | render | thisAccesses.js:59:11:62:5 | () {\\n ... ;\\n } | +| thisAccesses_importedMappers.js:4:19:15:1 | {\\n r ... },\\n} | render | thisAccesses_importedMappers.js:5:13:14:5 | functio ... ;\\n } | +jsxName | es5.js:4:12:4:45 |
    He ... }
    | es5.js:4:13:4:15 | div | div | Identifier | | es5.js:20:12:20:44 |

    Hel ... e}

    | es5.js:20:13:20:14 | h1 | h1 | Identifier | | es6.js:3:12:3:45 |
    He ... }
    | es6.js:3:13:3:15 | div | div | Identifier | @@ -62,13 +132,22 @@ test_JSXname | useHigherOrderComponent.jsx:5:12:5:39 | | useHigherOrderComponent.jsx:5:13:5:25 | SomeComponent | SomeComponent | Identifier | | useHigherOrderComponent.jsx:11:12:11:46 | | useHigherOrderComponent.jsx:11:13:11:31 | LazyLoadedComponent | LazyLoadedComponent | Identifier | | useHigherOrderComponent.jsx:17:12:17:48 | | useHigherOrderComponent.jsx:17:13:17:32 | LazyLoadedComponent2 | LazyLoadedComponent2 | Identifier | -test_ReactComponent +jsxNameThis +| es5.js:4:12:4:45 |
    He ... }
    | es5.js:4:24:4:27 | this | +| es5.js:20:12:20:44 |

    Hel ... e}

    | es5.js:20:24:20:27 | this | +| es6.js:3:12:3:45 |
    He ... }
    | es6.js:3:24:3:27 | this | +| statePropertyWrites.js:38:12:38:45 |
    He ... }
    | statePropertyWrites.js:38:24:38:27 | this | +| thisAccesses.js:60:19:60:41 | | thisAccesses.js:60:20:60:23 | this | +| thisAccesses.js:61:19:61:41 | | thisAccesses.js:61:20:61:23 | this | +locationSource +| importedComponent.jsx:3:32:3:39 | location | +reactComponent | es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | -| es5.js:18:33:22:1 | {\\n ren ... ;\\n }\\n} | +| es5.js:18:33:22:1 | {\\n ren ... t\\n }\\n} | | es6.js:1:1:8:1 | class H ... ;\\n }\\n} | | es6.js:14:1:20:1 | class H ... }\\n} | | exportedComponent.jsx:1:8:3:1 | functio ... r}}/>\\n} | -| importedComponent.jsx:3:8:5:1 | functio ... or}/>\\n} | +| importedComponent.jsx:3:8:5:1 | functio ... Value\\n} | | namedImport.js:3:1:3:28 | class C ... nent {} | | namedImport.js:5:1:5:20 | class D extends C {} | | plainfn.js:1:1:3:1 | functio ... div>;\\n} | @@ -76,9 +155,9 @@ test_ReactComponent | plainfn.js:9:1:12:1 | functio ... rn x;\\n} | | plainfn.js:20:1:24:1 | functio ... n 42;\\n} | | preact.js:1:1:7:1 | class H ... }\\n} | -| preact.js:9:1:11:1 | class H ... nt {\\n\\n} | +| preact.js:9:1:11:1 | class H ... nput\\n\\n} | | probably-a-component.js:1:1:6:1 | class H ... }\\n} | -| props.js:2:5:3:5 | class C ... {\\n } | +| props.js:2:5:3:5 | class C ... t\\n } | | props.js:13:31:17:5 | {\\n ... }\\n } | | props.js:26:5:28:5 | functio ... ;\\n } | | rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | @@ -92,14 +171,14 @@ test_ReactComponent | thisAccesses.js:47:1:52:1 | class C ... }\\n} | | thisAccesses.js:54:1:63:1 | class C ... }\\n} | | thisAccesses_importedMappers.js:4:19:15:1 | {\\n r ... },\\n} | -test_ReactComponent_ref +reactComponentRef | es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | | es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | es5.js:3:11:3:10 | this | | es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | es5.js:4:24:4:27 | this | | es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | es5.js:6:20:6:19 | this | -| es5.js:18:33:22:1 | {\\n ren ... ;\\n }\\n} | es5.js:18:33:22:1 | {\\n ren ... ;\\n }\\n} | -| es5.js:18:33:22:1 | {\\n ren ... ;\\n }\\n} | es5.js:19:11:19:10 | this | -| es5.js:18:33:22:1 | {\\n ren ... ;\\n }\\n} | es5.js:20:24:20:27 | this | +| es5.js:18:33:22:1 | {\\n ren ... t\\n }\\n} | es5.js:18:33:22:1 | {\\n ren ... t\\n }\\n} | +| es5.js:18:33:22:1 | {\\n ren ... t\\n }\\n} | es5.js:19:11:19:10 | this | +| es5.js:18:33:22:1 | {\\n ren ... t\\n }\\n} | es5.js:20:24:20:27 | this | | es6.js:1:1:8:1 | class H ... ;\\n }\\n} | es6.js:1:37:1:36 | implicit 'this' | | es6.js:1:1:8:1 | class H ... ;\\n }\\n} | es6.js:1:37:1:36 | this | | es6.js:1:1:8:1 | class H ... ;\\n }\\n} | es6.js:2:9:2:8 | this | @@ -110,7 +189,7 @@ test_ReactComponent_ref | es6.js:14:1:20:1 | class H ... }\\n} | es6.js:17:9:17:12 | this | | es6.js:14:1:20:1 | class H ... }\\n} | es6.js:18:9:18:12 | this | | exportedComponent.jsx:1:8:3:1 | functio ... r}}/>\\n} | exportedComponent.jsx:1:8:1:7 | this | -| importedComponent.jsx:3:8:5:1 | functio ... or}/>\\n} | importedComponent.jsx:3:8:3:7 | this | +| importedComponent.jsx:3:8:5:1 | functio ... Value\\n} | importedComponent.jsx:3:8:3:7 | this | | namedImport.js:3:1:3:28 | class C ... nent {} | namedImport.js:3:27:3:26 | implicit 'this' | | namedImport.js:3:1:3:28 | class C ... nent {} | namedImport.js:3:27:3:26 | this | | namedImport.js:5:1:5:20 | class D extends C {} | namedImport.js:5:19:5:18 | implicit 'this' | @@ -122,15 +201,15 @@ test_ReactComponent_ref | preact.js:1:1:7:1 | class H ... }\\n} | preact.js:1:38:1:37 | implicit 'this' | | preact.js:1:1:7:1 | class H ... }\\n} | preact.js:1:38:1:37 | this | | preact.js:1:1:7:1 | class H ... }\\n} | preact.js:2:11:2:10 | this | -| preact.js:9:1:11:1 | class H ... nt {\\n\\n} | preact.js:9:38:9:37 | implicit 'this' | -| preact.js:9:1:11:1 | class H ... nt {\\n\\n} | preact.js:9:38:9:37 | this | +| preact.js:9:1:11:1 | class H ... nput\\n\\n} | preact.js:9:38:9:37 | implicit 'this' | +| preact.js:9:1:11:1 | class H ... nput\\n\\n} | preact.js:9:38:9:37 | this | | probably-a-component.js:1:1:6:1 | class H ... }\\n} | probably-a-component.js:1:31:1:30 | implicit 'this' | | probably-a-component.js:1:1:6:1 | class H ... }\\n} | probably-a-component.js:1:31:1:30 | this | | probably-a-component.js:1:1:6:1 | class H ... }\\n} | probably-a-component.js:2:11:2:10 | this | | probably-a-component.js:1:1:6:1 | class H ... }\\n} | probably-a-component.js:3:9:3:12 | this | -| props.js:2:5:3:5 | class C ... {\\n } | props.js:2:37:2:36 | implicit 'this' | -| props.js:2:5:3:5 | class C ... {\\n } | props.js:2:37:2:36 | this | -| props.js:2:5:3:5 | class C ... {\\n } | props.js:9:5:9:55 | new C({ ... ctor"}) | +| props.js:2:5:3:5 | class C ... t\\n } | props.js:2:37:2:36 | implicit 'this' | +| props.js:2:5:3:5 | class C ... t\\n } | props.js:2:37:2:36 | this | +| props.js:2:5:3:5 | class C ... t\\n } | props.js:9:5:9:55 | new C({ ... ctor"}) | | props.js:13:31:17:5 | {\\n ... }\\n } | props.js:13:31:17:5 | {\\n ... }\\n } | | props.js:13:31:17:5 | {\\n ... }\\n } | props.js:14:24:14:23 | this | | props.js:26:5:28:5 | functio ... ;\\n } | props.js:26:5:26:4 | this | @@ -201,123 +280,6 @@ test_ReactComponent_ref | thisAccesses_importedMappers.js:4:19:15:1 | {\\n r ... },\\n} | thisAccesses_importedMappers.js:9:25:9:24 | this | | thisAccesses_importedMappers.js:4:19:15:1 | {\\n r ... },\\n} | thisAccesses_importedMappers.js:10:13:10:16 | this | | thisAccesses_importedMappers.js:4:19:15:1 | {\\n r ... },\\n} | thisAccesses_importedMappers.js:11:12:11:15 | this | -test_getADirectStateAccess -| es6.js:14:1:20:1 | class H ... }\\n} | es6.js:16:9:16:18 | this.state | -| es6.js:14:1:20:1 | class H ... }\\n} | es6.js:17:9:17:18 | this.state | -| es6.js:14:1:20:1 | class H ... }\\n} | es6.js:18:9:18:18 | this.state | -| preact.js:1:1:7:1 | class H ... }\\n} | preact.js:2:19:2:23 | state | -| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:3:9:3:18 | this.state | -| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:5:9:5:18 | this.state | -| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:4:9:4:17 | cmp.state | -| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:6:9:6:17 | cmp.state | -| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:10:9:10:17 | cmp.state | -| thisAccesses.js:47:1:52:1 | class C ... }\\n} | thisAccesses.js:49:9:49:18 | this.state | -| thisAccesses.js:47:1:52:1 | class C ... }\\n} | thisAccesses.js:50:9:50:18 | this.state | -test_ReactComponent_getAPropRead -| es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | name | es5.js:4:24:4:38 | this.props.name | -| es5.js:18:33:22:1 | {\\n ren ... ;\\n }\\n} | name | es5.js:20:24:20:38 | this.props.name | -| es6.js:1:1:8:1 | class H ... ;\\n }\\n} | name | es6.js:3:24:3:38 | this.props.name | -| exportedComponent.jsx:1:8:3:1 | functio ... r}}/>\\n} | color | exportedComponent.jsx:2:32:2:42 | props.color | -| importedComponent.jsx:3:8:5:1 | functio ... or}/>\\n} | color | importedComponent.jsx:3:25:3:29 | color | -| importedComponent.jsx:3:8:5:1 | functio ... or}/>\\n} | location | importedComponent.jsx:3:32:3:39 | location | -| plainfn.js:1:1:3:1 | functio ... div>;\\n} | name | plainfn.js:2:22:2:31 | props.name | -| preact.js:1:1:7:1 | class H ... }\\n} | name | preact.js:3:9:3:18 | props.name | -| probably-a-component.js:1:1:6:1 | class H ... }\\n} | name | probably-a-component.js:3:9:3:23 | this.props.name | -| statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} | name | statePropertyWrites.js:38:24:38:38 | this.props.name | -test_ReactComponent_getInstanceMethod -| es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | getDefaultProps | es5.js:6:20:10:3 | functio ... };\\n } | -| es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | render | es5.js:3:11:5:3 | functio ... v>;\\n } | -| es5.js:18:33:22:1 | {\\n ren ... ;\\n }\\n} | render | es5.js:19:11:21:3 | functio ... 1>;\\n } | -| es6.js:1:1:8:1 | class H ... ;\\n }\\n} | render | es6.js:2:9:4:3 | () {\\n ... v>;\\n } | -| exportedComponent.jsx:1:8:3:1 | functio ... r}}/>\\n} | render | exportedComponent.jsx:1:8:3:1 | functio ... r}}/>\\n} | -| importedComponent.jsx:3:8:5:1 | functio ... or}/>\\n} | render | importedComponent.jsx:3:8:5:1 | functio ... or}/>\\n} | -| plainfn.js:1:1:3:1 | functio ... div>;\\n} | render | plainfn.js:1:1:3:1 | functio ... div>;\\n} | -| plainfn.js:5:1:7:1 | functio ... iv");\\n} | render | plainfn.js:5:1:7:1 | functio ... iv");\\n} | -| plainfn.js:9:1:12:1 | functio ... rn x;\\n} | render | plainfn.js:9:1:12:1 | functio ... rn x;\\n} | -| plainfn.js:20:1:24:1 | functio ... n 42;\\n} | render | plainfn.js:20:1:24:1 | functio ... n 42;\\n} | -| preact.js:1:1:7:1 | class H ... }\\n} | render | preact.js:2:11:6:5 | (props, ... ;\\n } | -| probably-a-component.js:1:1:6:1 | class H ... }\\n} | render | probably-a-component.js:2:11:5:5 | () {\\n ... ;\\n } | -| props.js:13:31:17:5 | {\\n ... }\\n } | getDefaultProps | props.js:14:24:16:9 | () {\\n ... } | -| props.js:26:5:28:5 | functio ... ;\\n } | render | props.js:26:5:28:5 | functio ... ;\\n } | -| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | getSnapshotBeforeUpdate | rare-lifecycle-methods.js:8:28:10:5 | (prevPr ... ;\\n } | -| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | shouldComponentUpdate | rare-lifecycle-methods.js:5:26:7:5 | (nextPr ... ;\\n } | -| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | componentDidUpdate | statePropertyReads.js:10:23:12:5 | (prevPr ... ;\\n } | -| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | getInitialState | statePropertyWrites.js:25:20:29:5 | () { // ... ;\\n } | -| statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} | getInitialState | statePropertyWrites.js:40:20:44:3 | functio ... };\\n } | -| statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} | render | statePropertyWrites.js:37:11:39:3 | functio ... v>;\\n } | -| thisAccesses.js:1:1:16:1 | class C ... }\\n} | someInstanceMethod | thisAccesses.js:13:23:15:5 | () {\\n ... ;\\n } | -| thisAccesses.js:18:19:29:1 | {\\n r ... }\\n} | render | thisAccesses.js:19:13:24:5 | functio ... ;\\n } | -| thisAccesses.js:18:19:29:1 | {\\n r ... }\\n} | someInstanceMethod | thisAccesses.js:26:25:28:5 | functio ... ;\\n } | -| thisAccesses.js:31:2:36:1 | functio ... iv/>;\\n} | render | thisAccesses.js:31:2:36:1 | functio ... iv/>;\\n} | -| thisAccesses.js:38:19:45:1 | {\\n r ... },\\n} | render | thisAccesses.js:39:13:44:5 | functio ... ;\\n } | -| thisAccesses.js:54:1:63:1 | class C ... }\\n} | render | thisAccesses.js:59:11:62:5 | () {\\n ... ;\\n } | -| thisAccesses_importedMappers.js:4:19:15:1 | {\\n r ... },\\n} | render | thisAccesses_importedMappers.js:5:13:14:5 | functio ... ;\\n } | -test_ReactComponent_getADirectPropsSource -| es5.js:1:31:11:1 | {\\n dis ... ;\\n }\\n} | es5.js:4:24:4:33 | this.props | -| es5.js:18:33:22:1 | {\\n ren ... ;\\n }\\n} | es5.js:20:24:20:33 | this.props | -| es6.js:1:1:8:1 | class H ... ;\\n }\\n} | es6.js:1:37:1:36 | args | -| es6.js:1:1:8:1 | class H ... ;\\n }\\n} | es6.js:3:24:3:33 | this.props | -| exportedComponent.jsx:1:8:3:1 | functio ... r}}/>\\n} | exportedComponent.jsx:1:29:1:33 | props | -| importedComponent.jsx:3:8:5:1 | functio ... or}/>\\n} | importedComponent.jsx:3:24:3:40 | {color, location} | -| namedImport.js:3:1:3:28 | class C ... nent {} | namedImport.js:3:27:3:26 | args | -| namedImport.js:5:1:5:20 | class D extends C {} | namedImport.js:5:19:5:18 | args | -| plainfn.js:1:1:3:1 | functio ... div>;\\n} | plainfn.js:1:16:1:20 | props | -| plainfn.js:5:1:7:1 | functio ... iv");\\n} | plainfn.js:5:17:5:21 | props | -| plainfn.js:9:1:12:1 | functio ... rn x;\\n} | plainfn.js:9:17:9:21 | props | -| plainfn.js:20:1:24:1 | functio ... n 42;\\n} | plainfn.js:20:28:20:32 | props | -| preact.js:1:1:7:1 | class H ... }\\n} | preact.js:1:38:1:37 | args | -| preact.js:1:1:7:1 | class H ... }\\n} | preact.js:2:12:2:16 | props | -| preact.js:9:1:11:1 | class H ... nt {\\n\\n} | preact.js:9:38:9:37 | args | -| probably-a-component.js:1:1:6:1 | class H ... }\\n} | probably-a-component.js:1:31:1:30 | args | -| probably-a-component.js:1:1:6:1 | class H ... }\\n} | probably-a-component.js:3:9:3:18 | this.props | -| props.js:2:5:3:5 | class C ... {\\n } | props.js:2:37:2:36 | args | -| props.js:26:5:28:5 | functio ... ;\\n } | props.js:26:16:26:20 | props | -| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:1:33:1:32 | args | -| statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} | statePropertyWrites.js:38:24:38:33 | this.props | -| thisAccesses.js:31:2:36:1 | functio ... iv/>;\\n} | thisAccesses.js:31:12:31:16 | props | -| thisAccesses.js:47:1:52:1 | class C ... }\\n} | thisAccesses.js:48:18:48:18 | y | -test_ReactComponent_getACandidatePropsValue -| es5.js:8:13:8:19 | 'world' | -| importedComponent.jsx:4:32:4:36 | color | -| props.js:5:46:5:67 | "propFr ... tProps" | -| props.js:7:22:7:34 | "propFromJSX" | -| props.js:9:33:9:53 | "propFr ... ructor" | -| props.js:15:44:15:65 | "propFr ... tProps" | -| props.js:19:22:19:34 | "propFromJSX" | -| props.js:21:29:21:49 | "propFr ... ructor" | -| props.js:30:46:30:67 | "propFr ... tProps" | -| props.js:32:22:32:34 | "propFromJSX" | -| props.js:34:33:34:53 | "propFr ... ructor" | -| useHigherOrderComponent.jsx:5:33:5:37 | "red" | -| useHigherOrderComponent.jsx:11:39:11:44 | "lazy" | -| useHigherOrderComponent.jsx:17:40:17:46 | "lazy2" | -test_ReactComponent_getAPreviousStateSource -| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:2:44:2:48 | state | -| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:8:40:8:48 | prevState | -| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:7:24:7:32 | prevState | -| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:10:35:10:43 | prevState | -test_ReactComponent_getACandidateStateSource -| es6.js:14:1:20:1 | class H ... }\\n} | es6.js:18:22:18:31 | { baz: 42} | -| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:3:16:3:17 | {} | -| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:5:38:5:46 | nextState | -| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:7:45:7:56 | prevState.p3 | -| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:8:18:8:19 | {} | -| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:12:18:12:19 | {} | -| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:16:18:16:19 | {} | -| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:20:18:20:19 | {} | -| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | statePropertyWrites.js:31:13:33:5 | {\\n ... 2\\n } | -| statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} | statePropertyWrites.js:41:12:43:5 | {\\n p8: 42\\n } | -| thisAccesses.js:47:1:52:1 | class C ... }\\n} | thisAccesses.js:48:18:48:18 | y | -| thisAccesses.js:47:1:52:1 | class C ... }\\n} | thisAccesses.js:49:22:49:22 | x | -test_JsxName_this -| es5.js:4:12:4:45 |
    He ... }
    | es5.js:4:24:4:27 | this | -| es5.js:20:12:20:44 |

    Hel ... e}

    | es5.js:20:24:20:27 | this | -| es6.js:3:12:3:45 |
    He ... }
    | es6.js:3:24:3:27 | this | -| statePropertyWrites.js:38:12:38:45 |
    He ... }
    | statePropertyWrites.js:38:24:38:27 | this | -| thisAccesses.js:60:19:60:41 | | thisAccesses.js:60:20:60:23 | this | -| thisAccesses.js:61:19:61:41 | | thisAccesses.js:61:20:61:23 | this | -locationSource -| importedComponent.jsx:3:32:3:39 | location | threatModelSource | es5.js:4:24:4:33 | this.props | view-component-input | | es5.js:20:24:20:33 | this.props | view-component-input | @@ -343,3 +305,7 @@ threatModelSource | statePropertyWrites.js:38:24:38:33 | this.props | view-component-input | | thisAccesses.js:31:12:31:16 | props | view-component-input | | thisAccesses.js:48:18:48:18 | y | view-component-input | +| use-server1.js:2:5:2:5 | x | remote | +| use-server1.js:3:5:3:5 | y | remote | +| use-server2.js:4:5:4:5 | x | remote | +| use-server2.js:5:5:5:5 | y | remote | diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/tests.ql b/javascript/ql/test/library-tests/frameworks/ReactJS/tests.ql index 4d20306d4ed4..6de8091b010b 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/tests.ql +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/tests.ql @@ -1,14 +1,53 @@ -import getADirectStateAccess -import ReactComponent_getInstanceMethod -import react -import ReactComponent_getAPreviousStateSource -import ReactComponent_ref -import ReactComponent_getACandidateStateSource -import ReactComponent_getADirectPropsSource -import ReactComponent_getACandidatePropsValue -import ReactComponent -import ReactComponent_getAPropRead -import ReactName +import javascript +import semmle.javascript.frameworks.React + +query predicate getADirectStateAccess(ReactComponent c, DataFlow::SourceNode res) { + res = c.getADirectStateAccess() +} + +query predicate getInstanceMethod(ReactComponent c, string n, Function res) { + res = c.getInstanceMethod(n) +} + +query predicate getAPreviousStateSource(ReactComponent c, DataFlow::SourceNode res) { + res = c.getAPreviousStateSource() +} + +query predicate reactComponentRef(ReactComponent c, DataFlow::Node res) { res = c.ref() } + +query predicate getACandidateStateSource(ReactComponent c, DataFlow::SourceNode res) { + res = c.getACandidateStateSource() +} + +query predicate getADirectPropsSource(ReactComponent c, DataFlow::SourceNode res) { + res = c.getADirectPropsAccess() +} + +query predicate getACandidatePropsValue(DataFlow::Node res) { + exists(ReactComponent c | res = c.getACandidatePropsValue(_)) +} + +query predicate reactComponent(ReactComponent c) { any() } + +query predicate getAPropRead(ReactComponent c, string n, DataFlow::PropRead res) { + res = c.getAPropRead(n) +} + +query predicate jsxName(JsxElement element, JsxName jsxname, string name, string type) { + name = jsxname.getValue() and + ( + jsxname instanceof Identifier and type = "Identifier" + or + jsxname instanceof ThisExpr and type = "thisExpr" + or + jsxname.(DotExpr).getBase() instanceof JsxName and type = "dot" + or + jsxname instanceof JsxQualifiedName and type = "qualifiedName" + ) and + element.getNameExpr() = jsxname +} + +query ThisExpr jsxNameThis(JsxElement element) { result.getParentExpr+() = element } query DataFlow::SourceNode locationSource() { result = DOM::locationSource() } diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/tests.qlref b/javascript/ql/test/library-tests/frameworks/ReactJS/tests.qlref new file mode 100644 index 000000000000..8581a3f8b748 --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/tests.qlref @@ -0,0 +1,2 @@ +query: tests.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/thisAccesses.js b/javascript/ql/test/library-tests/frameworks/ReactJS/thisAccesses.js index b662b7ca53bf..c30509974d4e 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/thisAccesses.js +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/thisAccesses.js @@ -13,7 +13,7 @@ class C extends React.Component { someInstanceMethod() { this; } -} +} // $ reactComponent React.createClass({ render: function() { @@ -26,14 +26,14 @@ React.createClass({ someInstanceMethod: function() { this; } -}); +}); // $ reactComponent -(function (props) { +(function (props) { // $ threatModelSource=view-component-input (function () { this; props; }).bind(this); return
    ; -}) +}) // $ reactComponent React.createClass({ render: function() { @@ -42,14 +42,14 @@ React.createClass({ }, this) return
    ; }, -}); +}); // $ reactComponent class C2 extends React.Component { - constructor (y) { + constructor (y) { // $ threatModelSource=view-component-input this.state = x; this.state = y; } -} +} // $ reactComponent class C3 extends React.Component { constructor() { @@ -60,4 +60,4 @@ class C3 extends React.Component { var foo = ; var bar = ; } -} +} // $ reactComponent diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/thisAccesses_importedMappers.js b/javascript/ql/test/library-tests/frameworks/ReactJS/thisAccesses_importedMappers.js index 06e5e1149fda..abbbdd844ed0 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/thisAccesses_importedMappers.js +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/thisAccesses_importedMappers.js @@ -12,4 +12,4 @@ React.createClass({ return
    ; }, -}); +}); // $ reactComponent diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/use-server1.js b/javascript/ql/test/library-tests/frameworks/ReactJS/use-server1.js new file mode 100644 index 000000000000..1625ff23d1c0 --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/use-server1.js @@ -0,0 +1,10 @@ +async function getData( + x, // $ threatModelSource=remote + y) { // $ threatModelSource=remote + "use server"; +} + +async function getData2( + x, // should not be remote flow sources (because the function does not have "use server") + y) { +} diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/use-server2.js b/javascript/ql/test/library-tests/frameworks/ReactJS/use-server2.js new file mode 100644 index 000000000000..fa0bbab05527 --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/use-server2.js @@ -0,0 +1,11 @@ +"use server"; + +export async function getData( + x, // $ threatModelSource=remote + y) { // $ threatModelSource=remote +} + +async function getData2( + x, // should not be remote flow sources (because the function is not exported) + y) { +} diff --git a/javascript/ql/test/library-tests/frameworks/ReactJS/useHigherOrderComponent.jsx b/javascript/ql/test/library-tests/frameworks/ReactJS/useHigherOrderComponent.jsx index a57c5aa70bab..dba28fd1c6c5 100644 --- a/javascript/ql/test/library-tests/frameworks/ReactJS/useHigherOrderComponent.jsx +++ b/javascript/ql/test/library-tests/frameworks/ReactJS/useHigherOrderComponent.jsx @@ -2,17 +2,17 @@ import SomeComponent from './higherOrderComponent'; import { lazy } from 'react'; function foo() { - return + return // $ getACandidatePropsValue } const LazyLoadedComponent = lazy(() => import('./higherOrderComponent')); function bar() { - return + return // $ getACandidatePropsValue } const LazyLoadedComponent2 = lazy(() => import('./exportedComponent').then(m => m.MyComponent)); function barz() { - return + return // $ getACandidatePropsValue } diff --git a/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/SuspiciousMethodNameDeclaration.expected b/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/SuspiciousMethodNameDeclaration.expected index 3c827d16fce6..ee80f65d1adf 100644 --- a/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/SuspiciousMethodNameDeclaration.expected +++ b/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/SuspiciousMethodNameDeclaration.expected @@ -2,3 +2,14 @@ | tst.ts:16:3:16:21 | function(): number; | The member name 'function' does not declare a function, it declares a method named 'function'. | | tst.ts:37:3:37:21 | function(): number; | The member name 'function' does not declare a function, it declares a method named 'function'. | | tst.ts:48:3:48:13 | new(): Quz; | The member name 'new' does not declare a constructor, but 'constructor' does in class declarations. | +| tst.ts:60:3:60:21 | function(): number; | The member name 'function' does not declare a function, it declares a method named 'function'. | +| tst.ts:64:3:64:24 | constru ... number; | The member name 'constructor' does not declare a constructor in interfaces, but it does in classes. | +| tst.ts:74:3:74:30 | functio ... string; | The member name 'function' does not declare a function, it declares a method named 'function'. | +| tst.ts:75:3:75:30 | functio ... number; | The member name 'function' does not declare a function, it declares a method named 'function'. | +| tst.ts:76:3:76:24 | functio ... ): any; | The member name 'function' does not declare a function, it declares a method named 'function'. | +| tst.ts:80:3:80:23 | abstrac ... : void; | The member name 'new' does not declare a constructor, but 'constructor' does in class declarations. | +| tst.ts:84:3:84:30 | abstrac ... number; | The member name 'function' does not declare a function, it declares a method named 'function'. | +| tst.ts:93:5:93:21 | function(): void; | The member name 'function' does not declare a function, it declares a method named 'function'. | +| tst.ts:98:3:98:21 | function(): number; | The member name 'function' does not declare a function, it declares a method named 'function'. | +| tst.ts:110:3:110:24 | constru ... number; | The member name 'constructor' does not declare a constructor in interfaces, but it does in classes. | +| tst.ts:116:3:116:24 | constru ... number; | The member name 'constructor' does not declare a constructor in interfaces, but it does in classes. | diff --git a/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/tst.ts b/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/tst.ts index e958681f9352..12a6087b3a33 100644 --- a/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/tst.ts +++ b/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/tst.ts @@ -50,3 +50,70 @@ declare class Quz { var bla = new Foo(); var blab = new Baz(); + + +interface X { + constructor: () => string; // Just a property, not a method. +} + +type A = { + function(): number; // $ Alert +}; + +type B = { + constructor(): number; // $ Alert + new(): number; +}; + +class StaticMethods { + static function(): void {} + static new(): void {} +} + +interface Overloaded { + function(x: string): string; // $Alert + function(x: number): number; // $Alert + function(x: any): any; // $Alert +} + +abstract class AbstractFoo { + abstract new(): void; // $Alert +} + +abstract class AbstractFooFunction { + abstract function(): number; // $Alert +} + +abstract class AbstractFooConstructor { + constructor(){} +} + +declare module "some-module" { + interface ModuleInterface { + function(): void; // $Alert + } +} + +type Intersection = { + function(): number; // $Alert +} & { + other(): string; +}; + +type Union = { + new(): number; +} | { + valid(): string; +}; + +type Union2 = { + constructor(): number; // $Alert +} | { + valid(): string; +}; + +type Intersection2 = { + constructor(): number; // $Alert +} & { + other(): string; +}; diff --git a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/ExprHasNoEffect.expected b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/ExprHasNoEffect.expected index 853e781c88e2..f1beafe0037a 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 000000000000..5d22e4a0bed2 --- /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 a91759e553f1..6de5ac9a236a 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 341644bf6498..e47a25458d44 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/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js index d21a662dc5e8..9e0993278c16 100644 --- a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js +++ b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js @@ -40,4 +40,30 @@ function foo1() { writer.emit("Name: ${name}, Date: ${date}.", data); writer.emit("Name: ${name}, Date: ${date}, ${foobar}", data); // $ Alert - `foobar` is not in `data`. -} \ No newline at end of file +} + +function a(actual, expected, description) { + assert(false, "a", description, "expected (" + + typeof expected + ") ${expected} but got (" + typeof actual + ") ${actual}", { + expected: expected, + actual: actual + }); +} + +function replacer(str, name) { + return str.replace("${name}", name); +} + +function replacerAll(str, name) { + return str.replaceAll("${name}", name); +} + +function manualInterpolation(name) { + let str = "Name: ${name}"; + let result1 = replacer(str, name); + console.log(result1); + + str = "Name: ${name} and again: ${name}"; + let result2 = replacerAll(str, name); + console.log(result2); +} diff --git a/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/DuplicateCharacterInCharacterClass.expected b/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/DuplicateCharacterInCharacterClass.expected index 1857b9cc4df4..96f2cf20fd96 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 c87c7140a16c..fe291137c8a6 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 000000000000..afd526007b02 --- /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-020/IncompleteHostnameRegExp/tst-IncompleteHostnameRegExp.js b/javascript/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegExp/tst-IncompleteHostnameRegExp.js index ae0447f132fd..b2e030a54921 100644 --- a/javascript/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegExp/tst-IncompleteHostnameRegExp.js +++ b/javascript/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegExp/tst-IncompleteHostnameRegExp.js @@ -60,4 +60,8 @@ /^(foo.example\.com|whatever)$/; // $ Alert (but kinda OK - one disjunction doesn't even look like a hostname) if (s.matchAll("^http://test.example.com")) {} // $ Alert + + const sinon = require('sinon'); + const megacliteUrl = "https://a.b.com"; + sinon.assert.calledWith(postStub.firstCall, sinon.match(megacliteUrl)); }); diff --git a/javascript/ql/test/query-tests/Security/CWE-020/MissingRegExpAnchor/tst.js b/javascript/ql/test/query-tests/Security/CWE-020/MissingRegExpAnchor/tst.js new file mode 100644 index 000000000000..d4e4d97b651e --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-020/MissingRegExpAnchor/tst.js @@ -0,0 +1,6 @@ +const sinon = require('sinon'); + +function testFunction() { + const megacliteUrl = "https://a.b.com"; + sinon.assert.calledWith(postStub.firstCall, sinon.match(megacliteUrl)); +} diff --git a/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected b/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected index 08bf15800dad..2a3e4c18884b 100644 --- a/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected +++ b/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected @@ -48,6 +48,10 @@ | TaintedPath.js:214:29:214:42 | improperEscape | TaintedPath.js:212:24:212:30 | req.url | TaintedPath.js:214:29:214:42 | improperEscape | This path depends on a $@. | TaintedPath.js:212:24:212:30 | req.url | user-provided value | | TaintedPath.js:216:29:216:43 | improperEscape2 | TaintedPath.js:212:24:212:30 | req.url | TaintedPath.js:216:29:216:43 | improperEscape2 | This path depends on a $@. | TaintedPath.js:212:24:212:30 | req.url | user-provided value | | examples/TaintedPath.js:10:29:10:43 | ROOT + filePath | examples/TaintedPath.js:8:28:8:34 | req.url | examples/TaintedPath.js:10:29:10:43 | ROOT + filePath | This path depends on a $@. | examples/TaintedPath.js:8:28:8:34 | req.url | user-provided value | +| execa.js:9:26:9:33 | filePath | execa.js:6:30:6:36 | req.url | execa.js:9:26:9:33 | filePath | This path depends on a $@. | execa.js:6:30:6:36 | req.url | user-provided value | +| execa.js:12:37:12:44 | filePath | execa.js:6:30:6:36 | req.url | execa.js:12:37:12:44 | filePath | This path depends on a $@. | execa.js:6:30:6:36 | req.url | user-provided value | +| execa.js:15:50:15:57 | filePath | execa.js:6:30:6:36 | req.url | execa.js:15:50:15:57 | filePath | This path depends on a $@. | execa.js:6:30:6:36 | req.url | user-provided value | +| execa.js:18:62:18:69 | filePath | execa.js:6:30:6:36 | req.url | execa.js:18:62:18:69 | filePath | This path depends on a $@. | execa.js:6:30:6:36 | req.url | user-provided value | | express.js:8:20:8:32 | req.query.bar | express.js:8:20:8:32 | req.query.bar | express.js:8:20:8:32 | req.query.bar | This path depends on a $@. | express.js:8:20:8:32 | req.query.bar | user-provided value | | handlebars.js:11:32:11:39 | filePath | handlebars.js:29:46:29:60 | req.params.path | handlebars.js:11:32:11:39 | filePath | This path depends on a $@. | handlebars.js:29:46:29:60 | req.params.path | user-provided value | | handlebars.js:15:25:15:32 | filePath | handlebars.js:43:15:43:29 | req.params.path | handlebars.js:15:25:15:32 | filePath | This path depends on a $@. | handlebars.js:43:15:43:29 | req.params.path | user-provided value | @@ -399,6 +403,15 @@ edges | examples/TaintedPath.js:8:18:8:52 | url.par ... ry.path | examples/TaintedPath.js:8:7:8:52 | filePath | provenance | | | examples/TaintedPath.js:8:28:8:34 | req.url | examples/TaintedPath.js:8:18:8:41 | url.par ... , true) | provenance | Config | | examples/TaintedPath.js:10:36:10:43 | filePath | examples/TaintedPath.js:10:29:10:43 | ROOT + filePath | provenance | Config | +| execa.js:6:9:6:64 | filePath | execa.js:9:26:9:33 | filePath | provenance | | +| execa.js:6:9:6:64 | filePath | execa.js:12:37:12:44 | filePath | provenance | | +| execa.js:6:9:6:64 | filePath | execa.js:15:50:15:57 | filePath | provenance | | +| execa.js:6:9:6:64 | filePath | execa.js:18:62:18:69 | filePath | provenance | | +| execa.js:6:20:6:43 | url.par ... , true) | execa.js:6:20:6:49 | url.par ... ).query | provenance | Config | +| execa.js:6:20:6:49 | url.par ... ).query | execa.js:6:20:6:61 | url.par ... ePath"] | provenance | Config | +| execa.js:6:20:6:61 | url.par ... ePath"] | execa.js:6:20:6:64 | url.par ... th"][0] | provenance | Config | +| execa.js:6:20:6:64 | url.par ... th"][0] | execa.js:6:9:6:64 | filePath | provenance | | +| execa.js:6:30:6:36 | req.url | execa.js:6:20:6:43 | url.par ... , true) | provenance | Config | | handlebars.js:10:51:10:58 | filePath | handlebars.js:11:32:11:39 | filePath | provenance | | | handlebars.js:13:73:13:80 | filePath | handlebars.js:15:25:15:32 | filePath | provenance | | | handlebars.js:29:46:29:60 | req.params.path | handlebars.js:10:51:10:58 | filePath | provenance | | @@ -944,6 +957,16 @@ nodes | examples/TaintedPath.js:8:28:8:34 | req.url | semmle.label | req.url | | examples/TaintedPath.js:10:29:10:43 | ROOT + filePath | semmle.label | ROOT + filePath | | examples/TaintedPath.js:10:36:10:43 | filePath | semmle.label | filePath | +| execa.js:6:9:6:64 | filePath | semmle.label | filePath | +| execa.js:6:20:6:43 | url.par ... , true) | semmle.label | url.par ... , true) | +| execa.js:6:20:6:49 | url.par ... ).query | semmle.label | url.par ... ).query | +| execa.js:6:20:6:61 | url.par ... ePath"] | semmle.label | url.par ... ePath"] | +| execa.js:6:20:6:64 | url.par ... th"][0] | semmle.label | url.par ... th"][0] | +| execa.js:6:30:6:36 | req.url | semmle.label | req.url | +| execa.js:9:26:9:33 | filePath | semmle.label | filePath | +| execa.js:12:37:12:44 | filePath | semmle.label | filePath | +| execa.js:15:50:15:57 | filePath | semmle.label | filePath | +| execa.js:18:62:18:69 | filePath | semmle.label | filePath | | express.js:8:20:8:32 | req.query.bar | semmle.label | req.query.bar | | handlebars.js:10:51:10:58 | filePath | semmle.label | filePath | | handlebars.js:11:32:11:39 | filePath | semmle.label | filePath | diff --git a/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/execa.js b/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/execa.js new file mode 100644 index 000000000000..8fcfdd42c672 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/execa.js @@ -0,0 +1,19 @@ +import { execa, $ } from 'execa'; +import http from 'node:http' +import url from 'url' + +http.createServer(async function (req, res) { + let filePath = url.parse(req.url, true).query["filePath"][0]; // $Source + + // Piping to stdin from a file + await $({ inputFile: filePath })`cat` // $Alert + + // Piping to stdin from a file + await execa('cat', { inputFile: filePath }); // $Alert + + // Piping Stdout to file + await execa('echo', ['example3']).pipeStdout(filePath); // $Alert + + // Piping all of command output to file + await execa('echo', ['example4'], { all: true }).pipeAll(filePath); // $Alert +}); diff --git a/javascript/ql/test/query-tests/Security/CWE-078/CommandInjection/CommandInjection.expected b/javascript/ql/test/query-tests/Security/CWE-078/CommandInjection/CommandInjection.expected index b68d40a540dd..22394ec4cb89 100644 --- a/javascript/ql/test/query-tests/Security/CWE-078/CommandInjection/CommandInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-078/CommandInjection/CommandInjection.expected @@ -24,6 +24,33 @@ | exec-sh2.js:10:12:10:57 | cp.spaw ... ptions) | exec-sh2.js:14:25:14:31 | req.url | exec-sh2.js:10:40:10:46 | command | This command line depends on a $@. | exec-sh2.js:14:25:14:31 | req.url | user-provided value | | exec-sh.js:15:12:15:61 | cp.spaw ... ptions) | exec-sh.js:19:25:19:31 | req.url | exec-sh.js:15:44:15:50 | command | This command line depends on a $@. | exec-sh.js:19:25:19:31 | req.url | user-provided value | | execSeries.js:14:41:14:47 | command | execSeries.js:18:34:18:40 | req.url | execSeries.js:14:41:14:47 | command | This command line depends on a $@. | execSeries.js:18:34:18:40 | req.url | user-provided value | +| execa.js:11:15:11:17 | cmd | execa.js:6:25:6:31 | req.url | execa.js:11:15:11:17 | cmd | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:13:32:13:34 | cmd | execa.js:6:25:6:31 | req.url | execa.js:13:32:13:34 | cmd | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:14:31:14:33 | cmd | execa.js:6:25:6:31 | req.url | execa.js:14:31:14:33 | cmd | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:17:14:17:16 | cmd | execa.js:6:25:6:31 | req.url | execa.js:17:14:17:16 | cmd | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:19:32:19:34 | cmd | execa.js:6:25:6:31 | req.url | execa.js:19:32:19:34 | cmd | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:20:33:20:35 | cmd | execa.js:6:25:6:31 | req.url | execa.js:20:33:20:35 | cmd | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:23:17:23:19 | cmd | execa.js:6:25:6:31 | req.url | execa.js:23:17:23:19 | cmd | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:24:17:24:19 | cmd | execa.js:6:25:6:31 | req.url | execa.js:24:17:24:19 | cmd | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:25:17:25:19 | cmd | execa.js:6:25:6:31 | req.url | execa.js:25:17:25:19 | cmd | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:27:15:27:17 | cmd | execa.js:6:25:6:31 | req.url | execa.js:27:15:27:17 | cmd | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:28:15:28:17 | cmd | execa.js:6:25:6:31 | req.url | execa.js:28:15:28:17 | cmd | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:30:24:30:47 | cmd + a ... + arg3 | execa.js:6:25:6:31 | req.url | execa.js:30:24:30:47 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:30:24:30:47 | cmd + a ... + arg3 | execa.js:7:26:7:32 | req.url | execa.js:30:24:30:47 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:7:26:7:32 | req.url | user-provided value | +| execa.js:30:24:30:47 | cmd + a ... + arg3 | execa.js:8:26:8:32 | req.url | execa.js:30:24:30:47 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:8:26:8:32 | req.url | user-provided value | +| execa.js:30:24:30:47 | cmd + a ... + arg3 | execa.js:9:26:9:32 | req.url | execa.js:30:24:30:47 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:9:26:9:32 | req.url | user-provided value | +| execa.js:31:24:31:47 | cmd + a ... + arg3 | execa.js:6:25:6:31 | req.url | execa.js:31:24:31:47 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:31:24:31:47 | cmd + a ... + arg3 | execa.js:7:26:7:32 | req.url | execa.js:31:24:31:47 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:7:26:7:32 | req.url | user-provided value | +| execa.js:31:24:31:47 | cmd + a ... + arg3 | execa.js:8:26:8:32 | req.url | execa.js:31:24:31:47 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:8:26:8:32 | req.url | user-provided value | +| execa.js:31:24:31:47 | cmd + a ... + arg3 | execa.js:9:26:9:32 | req.url | execa.js:31:24:31:47 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:9:26:9:32 | req.url | user-provided value | +| execa.js:33:22:33:45 | cmd + a ... + arg3 | execa.js:6:25:6:31 | req.url | execa.js:33:22:33:45 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:33:22:33:45 | cmd + a ... + arg3 | execa.js:7:26:7:32 | req.url | execa.js:33:22:33:45 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:7:26:7:32 | req.url | user-provided value | +| execa.js:33:22:33:45 | cmd + a ... + arg3 | execa.js:8:26:8:32 | req.url | execa.js:33:22:33:45 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:8:26:8:32 | req.url | user-provided value | +| execa.js:33:22:33:45 | cmd + a ... + arg3 | execa.js:9:26:9:32 | req.url | execa.js:33:22:33:45 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:9:26:9:32 | req.url | user-provided value | +| execa.js:34:22:34:45 | cmd + a ... + arg3 | execa.js:6:25:6:31 | req.url | execa.js:34:22:34:45 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:6:25:6:31 | req.url | user-provided value | +| execa.js:34:22:34:45 | cmd + a ... + arg3 | execa.js:7:26:7:32 | req.url | execa.js:34:22:34:45 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:7:26:7:32 | req.url | user-provided value | +| execa.js:34:22:34:45 | cmd + a ... + arg3 | execa.js:8:26:8:32 | req.url | execa.js:34:22:34:45 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:8:26:8:32 | req.url | user-provided value | +| execa.js:34:22:34:45 | cmd + a ... + arg3 | execa.js:9:26:9:32 | req.url | execa.js:34:22:34:45 | cmd + a ... + arg3 | This command line depends on a $@. | execa.js:9:26:9:32 | req.url | user-provided value | | form-parsers.js:9:8:9:39 | "touch ... nalname | form-parsers.js:9:19:9:26 | req.file | form-parsers.js:9:8:9:39 | "touch ... nalname | This command line depends on a $@. | form-parsers.js:9:19:9:26 | req.file | user-provided value | | form-parsers.js:14:10:14:37 | "touch ... nalname | form-parsers.js:13:3:13:11 | req.files | form-parsers.js:14:10:14:37 | "touch ... nalname | This command line depends on a $@. | form-parsers.js:13:3:13:11 | req.files | user-provided value | | form-parsers.js:25:10:25:28 | "touch " + filename | form-parsers.js:24:48:24:55 | filename | form-parsers.js:25:10:25:28 | "touch " + filename | This command line depends on a $@. | form-parsers.js:24:48:24:55 | filename | user-provided value | @@ -112,6 +139,57 @@ edges | execSeries.js:18:34:18:40 | req.url | execSeries.js:18:13:18:47 | require ... , true) | provenance | | | execSeries.js:19:12:19:16 | [cmd] [0] | execSeries.js:13:19:13:26 | commands [0] | provenance | | | execSeries.js:19:13:19:15 | cmd | execSeries.js:19:12:19:16 | [cmd] [0] | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:11:15:11:17 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:13:32:13:34 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:14:31:14:33 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:17:14:17:16 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:19:32:19:34 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:20:33:20:35 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:23:17:23:19 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:24:17:24:19 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:25:17:25:19 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:27:15:27:17 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:28:15:28:17 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:30:24:30:26 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:31:24:31:26 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:33:22:33:24 | cmd | provenance | | +| execa.js:6:9:6:54 | cmd | execa.js:34:22:34:24 | cmd | provenance | | +| execa.js:6:15:6:38 | url.par ... , true) | execa.js:6:9:6:54 | cmd | provenance | | +| execa.js:6:25:6:31 | req.url | execa.js:6:15:6:38 | url.par ... , true) | provenance | | +| execa.js:7:9:7:53 | arg1 | execa.js:30:30:30:33 | arg1 | provenance | | +| execa.js:7:9:7:53 | arg1 | execa.js:31:30:31:33 | arg1 | provenance | | +| execa.js:7:9:7:53 | arg1 | execa.js:33:28:33:31 | arg1 | provenance | | +| execa.js:7:9:7:53 | arg1 | execa.js:34:28:34:31 | arg1 | provenance | | +| execa.js:7:16:7:39 | url.par ... , true) | execa.js:7:9:7:53 | arg1 | provenance | | +| execa.js:7:26:7:32 | req.url | execa.js:7:16:7:39 | url.par ... , true) | provenance | | +| execa.js:8:9:8:53 | arg2 | execa.js:30:37:30:40 | arg2 | provenance | | +| execa.js:8:9:8:53 | arg2 | execa.js:31:37:31:40 | arg2 | provenance | | +| execa.js:8:9:8:53 | arg2 | execa.js:33:35:33:38 | arg2 | provenance | | +| execa.js:8:9:8:53 | arg2 | execa.js:34:35:34:38 | arg2 | provenance | | +| execa.js:8:16:8:39 | url.par ... , true) | execa.js:8:9:8:53 | arg2 | provenance | | +| execa.js:8:26:8:32 | req.url | execa.js:8:16:8:39 | url.par ... , true) | provenance | | +| execa.js:9:9:9:53 | arg3 | execa.js:30:44:30:47 | arg3 | provenance | | +| execa.js:9:9:9:53 | arg3 | execa.js:31:44:31:47 | arg3 | provenance | | +| execa.js:9:9:9:53 | arg3 | execa.js:33:42:33:45 | arg3 | provenance | | +| execa.js:9:9:9:53 | arg3 | execa.js:34:42:34:45 | arg3 | provenance | | +| execa.js:9:16:9:39 | url.par ... , true) | execa.js:9:9:9:53 | arg3 | provenance | | +| execa.js:9:26:9:32 | req.url | execa.js:9:16:9:39 | url.par ... , true) | provenance | | +| execa.js:30:24:30:26 | cmd | execa.js:30:24:30:47 | cmd + a ... + arg3 | provenance | | +| execa.js:30:30:30:33 | arg1 | execa.js:30:24:30:47 | cmd + a ... + arg3 | provenance | | +| execa.js:30:37:30:40 | arg2 | execa.js:30:24:30:47 | cmd + a ... + arg3 | provenance | | +| execa.js:30:44:30:47 | arg3 | execa.js:30:24:30:47 | cmd + a ... + arg3 | provenance | | +| execa.js:31:24:31:26 | cmd | execa.js:31:24:31:47 | cmd + a ... + arg3 | provenance | | +| execa.js:31:30:31:33 | arg1 | execa.js:31:24:31:47 | cmd + a ... + arg3 | provenance | | +| execa.js:31:37:31:40 | arg2 | execa.js:31:24:31:47 | cmd + a ... + arg3 | provenance | | +| execa.js:31:44:31:47 | arg3 | execa.js:31:24:31:47 | cmd + a ... + arg3 | provenance | | +| execa.js:33:22:33:24 | cmd | execa.js:33:22:33:45 | cmd + a ... + arg3 | provenance | | +| execa.js:33:28:33:31 | arg1 | execa.js:33:22:33:45 | cmd + a ... + arg3 | provenance | | +| execa.js:33:35:33:38 | arg2 | execa.js:33:22:33:45 | cmd + a ... + arg3 | provenance | | +| execa.js:33:42:33:45 | arg3 | execa.js:33:22:33:45 | cmd + a ... + arg3 | provenance | | +| execa.js:34:22:34:24 | cmd | execa.js:34:22:34:45 | cmd + a ... + arg3 | provenance | | +| execa.js:34:28:34:31 | arg1 | execa.js:34:22:34:45 | cmd + a ... + arg3 | provenance | | +| execa.js:34:35:34:38 | arg2 | execa.js:34:22:34:45 | cmd + a ... + arg3 | provenance | | +| execa.js:34:42:34:45 | arg3 | execa.js:34:22:34:45 | cmd + a ... + arg3 | provenance | | | form-parsers.js:9:19:9:26 | req.file | form-parsers.js:9:8:9:39 | "touch ... nalname | provenance | | | form-parsers.js:13:3:13:11 | req.files | form-parsers.js:13:21:13:24 | file | provenance | | | form-parsers.js:13:21:13:24 | file | form-parsers.js:14:21:14:24 | file | provenance | | @@ -216,6 +294,49 @@ nodes | execSeries.js:18:34:18:40 | req.url | semmle.label | req.url | | execSeries.js:19:12:19:16 | [cmd] [0] | semmle.label | [cmd] [0] | | execSeries.js:19:13:19:15 | cmd | semmle.label | cmd | +| execa.js:6:9:6:54 | cmd | semmle.label | cmd | +| execa.js:6:15:6:38 | url.par ... , true) | semmle.label | url.par ... , true) | +| execa.js:6:25:6:31 | req.url | semmle.label | req.url | +| execa.js:7:9:7:53 | arg1 | semmle.label | arg1 | +| execa.js:7:16:7:39 | url.par ... , true) | semmle.label | url.par ... , true) | +| execa.js:7:26:7:32 | req.url | semmle.label | req.url | +| execa.js:8:9:8:53 | arg2 | semmle.label | arg2 | +| execa.js:8:16:8:39 | url.par ... , true) | semmle.label | url.par ... , true) | +| execa.js:8:26:8:32 | req.url | semmle.label | req.url | +| execa.js:9:9:9:53 | arg3 | semmle.label | arg3 | +| execa.js:9:16:9:39 | url.par ... , true) | semmle.label | url.par ... , true) | +| execa.js:9:26:9:32 | req.url | semmle.label | req.url | +| execa.js:11:15:11:17 | cmd | semmle.label | cmd | +| execa.js:13:32:13:34 | cmd | semmle.label | cmd | +| execa.js:14:31:14:33 | cmd | semmle.label | cmd | +| execa.js:17:14:17:16 | cmd | semmle.label | cmd | +| execa.js:19:32:19:34 | cmd | semmle.label | cmd | +| execa.js:20:33:20:35 | cmd | semmle.label | cmd | +| execa.js:23:17:23:19 | cmd | semmle.label | cmd | +| execa.js:24:17:24:19 | cmd | semmle.label | cmd | +| execa.js:25:17:25:19 | cmd | semmle.label | cmd | +| execa.js:27:15:27:17 | cmd | semmle.label | cmd | +| execa.js:28:15:28:17 | cmd | semmle.label | cmd | +| execa.js:30:24:30:26 | cmd | semmle.label | cmd | +| execa.js:30:24:30:47 | cmd + a ... + arg3 | semmle.label | cmd + a ... + arg3 | +| execa.js:30:30:30:33 | arg1 | semmle.label | arg1 | +| execa.js:30:37:30:40 | arg2 | semmle.label | arg2 | +| execa.js:30:44:30:47 | arg3 | semmle.label | arg3 | +| execa.js:31:24:31:26 | cmd | semmle.label | cmd | +| execa.js:31:24:31:47 | cmd + a ... + arg3 | semmle.label | cmd + a ... + arg3 | +| execa.js:31:30:31:33 | arg1 | semmle.label | arg1 | +| execa.js:31:37:31:40 | arg2 | semmle.label | arg2 | +| execa.js:31:44:31:47 | arg3 | semmle.label | arg3 | +| execa.js:33:22:33:24 | cmd | semmle.label | cmd | +| execa.js:33:22:33:45 | cmd + a ... + arg3 | semmle.label | cmd + a ... + arg3 | +| execa.js:33:28:33:31 | arg1 | semmle.label | arg1 | +| execa.js:33:35:33:38 | arg2 | semmle.label | arg2 | +| execa.js:33:42:33:45 | arg3 | semmle.label | arg3 | +| execa.js:34:22:34:24 | cmd | semmle.label | cmd | +| execa.js:34:22:34:45 | cmd + a ... + arg3 | semmle.label | cmd + a ... + arg3 | +| execa.js:34:28:34:31 | arg1 | semmle.label | arg1 | +| execa.js:34:35:34:38 | arg2 | semmle.label | arg2 | +| execa.js:34:42:34:45 | arg3 | semmle.label | arg3 | | form-parsers.js:9:8:9:39 | "touch ... nalname | semmle.label | "touch ... nalname | | form-parsers.js:9:19:9:26 | req.file | semmle.label | req.file | | form-parsers.js:13:3:13:11 | req.files | semmle.label | req.files | diff --git a/javascript/ql/test/query-tests/Security/CWE-078/CommandInjection/execa.js b/javascript/ql/test/query-tests/Security/CWE-078/CommandInjection/execa.js new file mode 100644 index 000000000000..ed7f8832f9cc --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-078/CommandInjection/execa.js @@ -0,0 +1,35 @@ +import { execa, execaSync, execaCommand, execaCommandSync, $ } from 'execa'; +import http from 'node:http' +import url from 'url' + +http.createServer(async function (req, res) { + let cmd = url.parse(req.url, true).query["cmd"][0]; // $Source + let arg1 = url.parse(req.url, true).query["arg1"]; // $Source + let arg2 = url.parse(req.url, true).query["arg2"]; // $Source + let arg3 = url.parse(req.url, true).query["arg3"]; // $Source + + await $`${cmd} ${arg1} ${arg2} ${arg3}`; // $Alert + await $`ssh ${arg1} ${arg2} ${arg3}`; // safely escapes variables, preventing shell injection. + $({ shell: false }).sync`${cmd} ${arg1} ${arg2} ${arg3}`; // $Alert + $({ shell: true }).sync`${cmd} ${arg1} ${arg2} ${arg3}`; // $Alert + $({ shell: false }).sync`ssh ${arg1} ${arg2} ${arg3}`; // safely escapes variables, preventing shell injection. + + $.sync`${cmd} ${arg1} ${arg2} ${arg3}`; // $Alert + $.sync`ssh ${arg1} ${arg2} ${arg3}`; // safely escapes variables, preventing shell injection. + await $({ shell: true })`${cmd} ${arg1} ${arg2} ${arg3}`; // $Alert + await $({ shell: false })`${cmd} ${arg1} ${arg2} ${arg3}`; // $Alert + await $({ shell: false })`ssh ${arg1} ${arg2} ${arg3}`; // safely escapes variables, preventing shell injection. + + await execa(cmd, [arg1, arg2, arg3]); // $Alert + await execa(cmd, { shell: true }); // $Alert + await execa(cmd, [arg1, arg2, arg3], { shell: true }); // $Alert + + execaSync(cmd, [arg1, arg2, arg3]); // $Alert + execaSync(cmd, [arg1, arg2, arg3], { shell: true }); // $Alert + + await execaCommand(cmd + arg1 + arg2 + arg3); // $Alert + await execaCommand(cmd + arg1 + arg2 + arg3, { shell: true }); // $Alert + + execaCommandSync(cmd + arg1 + arg2 + arg3); // $Alert + execaCommandSync(cmd + arg1 + arg2 + arg3, { shell: true }); // $Alert +}); 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 6ba8ab703bff..0f5659492116 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 0ed15b8d92ab..c031b7c1810c 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 000000000000..df8267bba306 --- /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 000000000000..c866f71a1eb9 --- /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/ReflectedXss/ReflectedXss.expected b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected index 09874ecef104..c1e626a688a9 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected @@ -70,6 +70,8 @@ | tst2.js:76:12:76:18 | other.p | tst2.js:69:9:69:9 | p | tst2.js:76:12:76:18 | other.p | Cross-site scripting vulnerability due to a $@. | tst2.js:69:9:69:9 | p | user-provided value | | tst2.js:88:12:88:12 | p | tst2.js:82:9:82:9 | p | tst2.js:88:12:88:12 | p | Cross-site scripting vulnerability due to a $@. | tst2.js:82:9:82:9 | p | user-provided value | | tst2.js:89:12:89:18 | other.p | tst2.js:82:9:82:9 | p | tst2.js:89:12:89:18 | other.p | Cross-site scripting vulnerability due to a $@. | tst2.js:82:9:82:9 | p | user-provided value | +| tst2.js:101:12:101:17 | unsafe | tst2.js:93:9:93:9 | p | tst2.js:101:12:101:17 | unsafe | Cross-site scripting vulnerability due to a $@. | tst2.js:93:9:93:9 | p | user-provided value | +| tst2.js:113:12:113:17 | unsafe | tst2.js:105:9:105:9 | p | tst2.js:113:12:113:17 | unsafe | Cross-site scripting vulnerability due to a $@. | tst2.js:105:9:105:9 | p | user-provided value | | tst3.js:6:12:6:12 | p | tst3.js:5:9:5:9 | p | tst3.js:6:12:6:12 | p | Cross-site scripting vulnerability due to a $@. | tst3.js:5:9:5:9 | p | user-provided value | | tst3.js:12:12:12:15 | code | tst3.js:11:32:11:39 | reg.body | tst3.js:12:12:12:15 | code | Cross-site scripting vulnerability due to a $@. | tst3.js:11:32:11:39 | reg.body | user-provided value | edges @@ -239,6 +241,22 @@ edges | tst2.js:86:15:86:27 | sortKeys(obj) [p] | tst2.js:86:7:86:27 | other [p] | provenance | | | tst2.js:86:24:86:26 | obj [p] | tst2.js:86:15:86:27 | sortKeys(obj) [p] | provenance | | | tst2.js:89:12:89:16 | other [p] | tst2.js:89:12:89:18 | other.p | provenance | | +| tst2.js:93:7:93:24 | p | tst2.js:99:51:99:51 | p | provenance | | +| tst2.js:93:9:93:9 | p | tst2.js:93:7:93:24 | p | provenance | | +| tst2.js:99:7:99:69 | unsafe | tst2.js:101:12:101:17 | unsafe | provenance | | +| tst2.js:99:16:99:69 | seriali ... true}) | tst2.js:99:7:99:69 | unsafe | provenance | | +| tst2.js:99:36:99:52 | {someProperty: p} [someProperty] | tst2.js:99:16:99:69 | seriali ... true}) | provenance | | +| tst2.js:99:51:99:51 | p | tst2.js:99:16:99:69 | seriali ... true}) | provenance | | +| tst2.js:99:51:99:51 | p | tst2.js:99:36:99:52 | {someProperty: p} [someProperty] | provenance | | +| tst2.js:105:7:105:24 | p | tst2.js:110:28:110:28 | p | provenance | | +| tst2.js:105:9:105:9 | p | tst2.js:105:7:105:24 | p | provenance | | +| tst2.js:110:7:110:29 | obj [someProperty] | tst2.js:111:36:111:38 | obj [someProperty] | provenance | | +| tst2.js:110:13:110:29 | {someProperty: p} [someProperty] | tst2.js:110:7:110:29 | obj [someProperty] | provenance | | +| tst2.js:110:28:110:28 | p | tst2.js:110:13:110:29 | {someProperty: p} [someProperty] | provenance | | +| tst2.js:110:28:110:28 | p | tst2.js:111:16:111:55 | seriali ... true}) | provenance | | +| tst2.js:111:7:111:55 | unsafe | tst2.js:113:12:113:17 | unsafe | provenance | | +| tst2.js:111:16:111:55 | seriali ... true}) | tst2.js:111:7:111:55 | unsafe | provenance | | +| tst2.js:111:36:111:38 | obj [someProperty] | tst2.js:111:16:111:55 | seriali ... true}) | provenance | | | tst3.js:5:7:5:24 | p | tst3.js:6:12:6:12 | p | provenance | | | tst3.js:5:9:5:9 | p | tst3.js:5:7:5:24 | p | provenance | | | tst3.js:11:9:11:74 | code | tst3.js:12:12:12:15 | code | provenance | | @@ -457,6 +475,22 @@ nodes | tst2.js:88:12:88:12 | p | semmle.label | p | | tst2.js:89:12:89:16 | other [p] | semmle.label | other [p] | | tst2.js:89:12:89:18 | other.p | semmle.label | other.p | +| tst2.js:93:7:93:24 | p | semmle.label | p | +| tst2.js:93:9:93:9 | p | semmle.label | p | +| tst2.js:99:7:99:69 | unsafe | semmle.label | unsafe | +| tst2.js:99:16:99:69 | seriali ... true}) | semmle.label | seriali ... true}) | +| tst2.js:99:36:99:52 | {someProperty: p} [someProperty] | semmle.label | {someProperty: p} [someProperty] | +| tst2.js:99:51:99:51 | p | semmle.label | p | +| tst2.js:101:12:101:17 | unsafe | semmle.label | unsafe | +| tst2.js:105:7:105:24 | p | semmle.label | p | +| tst2.js:105:9:105:9 | p | semmle.label | p | +| tst2.js:110:7:110:29 | obj [someProperty] | semmle.label | obj [someProperty] | +| tst2.js:110:13:110:29 | {someProperty: p} [someProperty] | semmle.label | {someProperty: p} [someProperty] | +| tst2.js:110:28:110:28 | p | semmle.label | p | +| tst2.js:111:7:111:55 | unsafe | semmle.label | unsafe | +| tst2.js:111:16:111:55 | seriali ... true}) | semmle.label | seriali ... true}) | +| tst2.js:111:36:111:38 | obj [someProperty] | semmle.label | obj [someProperty] | +| tst2.js:113:12:113:17 | unsafe | semmle.label | unsafe | | tst3.js:5:7:5:24 | p | semmle.label | p | | tst3.js:5:9:5:9 | p | semmle.label | p | | tst3.js:6:12:6:12 | p | semmle.label | p | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected index b57d294c7a7f..a4b02fa07491 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected @@ -68,5 +68,7 @@ | tst2.js:76:12:76:18 | other.p | Cross-site scripting vulnerability due to $@. | tst2.js:69:9:69:9 | p | user-provided value | | tst2.js:88:12:88:12 | p | Cross-site scripting vulnerability due to $@. | tst2.js:82:9:82:9 | p | user-provided value | | tst2.js:89:12:89:18 | other.p | Cross-site scripting vulnerability due to $@. | tst2.js:82:9:82:9 | p | user-provided value | +| tst2.js:101:12:101:17 | unsafe | Cross-site scripting vulnerability due to $@. | tst2.js:93:9:93:9 | p | user-provided value | +| tst2.js:113:12:113:17 | unsafe | Cross-site scripting vulnerability due to $@. | tst2.js:105:9:105:9 | p | user-provided value | | tst3.js:6:12:6:12 | p | Cross-site scripting vulnerability due to $@. | tst3.js:5:9:5:9 | p | user-provided value | | tst3.js:12:12:12:15 | code | Cross-site scripting vulnerability due to $@. | tst3.js:11:32:11:39 | reg.body | user-provided value | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/tst2.js b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/tst2.js index 660743338848..fff9c2250972 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/tst2.js +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/tst2.js @@ -87,4 +87,28 @@ app.get('/baz', function(req, res) { res.send(p); // $ Alert res.send(other.p); // $ Alert -}); \ No newline at end of file +}); + +app.get('/baz', function(req, res) { + let { p } = req.params; // $ Source + + var serialized = serializeJavaScript(p); + + res.send(serialized); + + var unsafe = serializeJavaScript({someProperty: p}, {unsafe: true}); + + res.send(unsafe); // $ Alert +}); + +app.get('/baz', function(req, res) { + let { p } = req.params; // $ Source + + var serialized = serializeJavaScript(p); + + res.send(serialized); + let obj = {someProperty: p}; + var unsafe = serializeJavaScript(obj, {unsafe: true}); + + res.send(unsafe); // $ 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 499cf6cce49d..4f757d1a9313 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 1c50460050cf..8c166fb243ff 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/Security/CWE-094/CodeInjection/CodeInjection.expected b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/CodeInjection.expected index 4d54adb27249..412f0a5c5fa5 100644 --- a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/CodeInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/CodeInjection.expected @@ -65,7 +65,8 @@ | module.js:11:17:11:30 | req.query.code | module.js:11:17:11:30 | req.query.code | module.js:11:17:11:30 | req.query.code | This code execution depends on a $@. | module.js:11:17:11:30 | req.query.code | user-provided value | | react-native.js:8:32:8:38 | tainted | react-native.js:7:17:7:33 | req.param("code") | react-native.js:8:32:8:38 | tainted | This code execution depends on a $@. | react-native.js:7:17:7:33 | req.param("code") | user-provided value | | react-native.js:10:23:10:29 | tainted | react-native.js:7:17:7:33 | req.param("code") | react-native.js:10:23:10:29 | tainted | This code execution depends on a $@. | react-native.js:7:17:7:33 | req.param("code") | user-provided value | -| react.js:10:56:10:77 | documen ... on.hash | react.js:10:56:10:77 | documen ... on.hash | react.js:10:56:10:77 | documen ... on.hash | This code execution depends on a $@. | react.js:10:56:10:77 | documen ... on.hash | user-provided value | +| react.js:11:56:11:77 | documen ... on.hash | react.js:11:56:11:77 | documen ... on.hash | react.js:11:56:11:77 | documen ... on.hash | This code execution depends on a $@. | react.js:11:56:11:77 | documen ... on.hash | user-provided value | +| react.js:25:8:25:11 | data | react-server-function.js:3:35:3:35 | x | react.js:25:8:25:11 | data | This code execution depends on a $@. | react-server-function.js:3:35:3:35 | x | user-provided value | | template-sinks.js:20:17:20:23 | tainted | template-sinks.js:18:19:18:31 | req.query.foo | template-sinks.js:20:17:20:23 | tainted | Template, which may contain code, depends on a $@. | template-sinks.js:18:19:18:31 | req.query.foo | user-provided value | | template-sinks.js:21:16:21:22 | tainted | template-sinks.js:18:19:18:31 | req.query.foo | template-sinks.js:21:16:21:22 | tainted | Template, which may contain code, depends on a $@. | template-sinks.js:18:19:18:31 | req.query.foo | user-provided value | | template-sinks.js:22:18:22:24 | tainted | template-sinks.js:18:19:18:31 | req.query.foo | template-sinks.js:22:18:22:24 | tainted | Template, which may contain code, depends on a $@. | template-sinks.js:18:19:18:31 | req.query.foo | user-provided value | @@ -156,6 +157,12 @@ edges | react-native.js:7:7:7:33 | tainted | react-native.js:8:32:8:38 | tainted | provenance | | | react-native.js:7:7:7:33 | tainted | react-native.js:10:23:10:29 | tainted | provenance | | | react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:33 | tainted | provenance | | +| react-server-function.js:3:35:3:35 | x | react-server-function.js:4:12:4:12 | x | provenance | | +| react-server-function.js:4:12:4:12 | x | react-server-function.js:4:12:4:29 | x + " from server" | provenance | | +| react-server-function.js:4:12:4:29 | x + " from server" | react.js:24:20:24:44 | echoSer ... value") [PromiseValue] | provenance | | +| react.js:24:9:24:45 | data | react.js:25:8:25:11 | data | provenance | | +| react.js:24:16:24:45 | use(ech ... alue")) | react.js:24:9:24:45 | data | provenance | | +| react.js:24:20:24:44 | echoSer ... value") [PromiseValue] | react.js:24:16:24:45 | use(ech ... alue")) | provenance | | | template-sinks.js:18:9:18:31 | tainted | template-sinks.js:20:17:20:23 | tainted | provenance | | | template-sinks.js:18:9:18:31 | tainted | template-sinks.js:21:16:21:22 | tainted | provenance | | | template-sinks.js:18:9:18:31 | tainted | template-sinks.js:22:18:22:24 | tainted | provenance | | @@ -287,7 +294,14 @@ nodes | react-native.js:7:17:7:33 | req.param("code") | semmle.label | req.param("code") | | react-native.js:8:32:8:38 | tainted | semmle.label | tainted | | react-native.js:10:23:10:29 | tainted | semmle.label | tainted | -| react.js:10:56:10:77 | documen ... on.hash | semmle.label | documen ... on.hash | +| react-server-function.js:3:35:3:35 | x | semmle.label | x | +| react-server-function.js:4:12:4:12 | x | semmle.label | x | +| react-server-function.js:4:12:4:29 | x + " from server" | semmle.label | x + " from server" | +| react.js:11:56:11:77 | documen ... on.hash | semmle.label | documen ... on.hash | +| react.js:24:9:24:45 | data | semmle.label | data | +| react.js:24:16:24:45 | use(ech ... alue")) | semmle.label | use(ech ... alue")) | +| react.js:24:20:24:44 | echoSer ... value") [PromiseValue] | semmle.label | echoSer ... value") [PromiseValue] | +| react.js:25:8:25:11 | data | semmle.label | data | | template-sinks.js:18:9:18:31 | tainted | semmle.label | tainted | | template-sinks.js:18:19:18:31 | req.query.foo | semmle.label | req.query.foo | | template-sinks.js:20:17:20:23 | tainted | semmle.label | tainted | diff --git a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/HeuristicSourceCodeInjection.expected b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/HeuristicSourceCodeInjection.expected index a1c8354ecf71..5a249b086b97 100644 --- a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/HeuristicSourceCodeInjection.expected +++ b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/HeuristicSourceCodeInjection.expected @@ -58,6 +58,12 @@ edges | react-native.js:7:7:7:33 | tainted | react-native.js:8:32:8:38 | tainted | provenance | | | react-native.js:7:7:7:33 | tainted | react-native.js:10:23:10:29 | tainted | provenance | | | react-native.js:7:17:7:33 | req.param("code") | react-native.js:7:7:7:33 | tainted | provenance | | +| react-server-function.js:3:35:3:35 | x | react-server-function.js:4:12:4:12 | x | provenance | | +| react-server-function.js:4:12:4:12 | x | react-server-function.js:4:12:4:29 | x + " from server" | provenance | | +| react-server-function.js:4:12:4:29 | x + " from server" | react.js:24:20:24:44 | echoSer ... value") [PromiseValue] | provenance | | +| react.js:24:9:24:45 | data | react.js:25:8:25:11 | data | provenance | | +| react.js:24:16:24:45 | use(ech ... alue")) | react.js:24:9:24:45 | data | provenance | | +| react.js:24:20:24:44 | echoSer ... value") [PromiseValue] | react.js:24:16:24:45 | use(ech ... alue")) | provenance | | | template-sinks.js:18:9:18:31 | tainted | template-sinks.js:20:17:20:23 | tainted | provenance | | | template-sinks.js:18:9:18:31 | tainted | template-sinks.js:21:16:21:22 | tainted | provenance | | | template-sinks.js:18:9:18:31 | tainted | template-sinks.js:22:18:22:24 | tainted | provenance | | @@ -191,7 +197,14 @@ nodes | react-native.js:7:17:7:33 | req.param("code") | semmle.label | req.param("code") | | react-native.js:8:32:8:38 | tainted | semmle.label | tainted | | react-native.js:10:23:10:29 | tainted | semmle.label | tainted | -| react.js:10:56:10:77 | documen ... on.hash | semmle.label | documen ... on.hash | +| react-server-function.js:3:35:3:35 | x | semmle.label | x | +| react-server-function.js:4:12:4:12 | x | semmle.label | x | +| react-server-function.js:4:12:4:29 | x + " from server" | semmle.label | x + " from server" | +| react.js:11:56:11:77 | documen ... on.hash | semmle.label | documen ... on.hash | +| react.js:24:9:24:45 | data | semmle.label | data | +| react.js:24:16:24:45 | use(ech ... alue")) | semmle.label | use(ech ... alue")) | +| react.js:24:20:24:44 | echoSer ... value") [PromiseValue] | semmle.label | echoSer ... value") [PromiseValue] | +| react.js:25:8:25:11 | data | semmle.label | data | | template-sinks.js:18:9:18:31 | tainted | semmle.label | tainted | | template-sinks.js:18:19:18:31 | req.query.foo | semmle.label | req.query.foo | | template-sinks.js:20:17:20:23 | tainted | semmle.label | tainted | diff --git a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/react-server-function.js b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/react-server-function.js new file mode 100644 index 000000000000..9c6bf514201a --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/react-server-function.js @@ -0,0 +1,5 @@ +"use server"; + +export async function echoService(x) { // $ Source[js/code-injection] + return x + " from server"; +} diff --git a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/react.js b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/react.js index 32db7a3f621a..ab6ff096af43 100644 --- a/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/react.js +++ b/javascript/ql/test/query-tests/Security/CWE-094/CodeInjection/react.js @@ -1,6 +1,7 @@ -import React from "react"; +import React, { use } from "react"; import {Helmet} from "react-helmet"; - +import { echoService } from "./react-server-function"; + class Application extends React.Component { render () { return ( @@ -14,4 +15,12 @@ class Application extends React.Component { } }; -export default Application \ No newline at end of file +export default Application + +export function Component() { + // We currently get false-positive flow through server functions in cases where a safe value + // is passed as the argument, which flows to the return value. In this case, the tainted parameter + // flows out of the return value regardless. + const data = use(echoService("safe value")); + eval(data); // $ SPURIOUS: Alert[js/code-injection] +} diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/comment_issue.yml b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/comment_issue.yml deleted file mode 100644 index 17ead9fdd204..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/comment_issue.yml +++ /dev/null @@ -1,28 +0,0 @@ -on: issue_comment - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - run: | - echo '${{ github.event.comment.body }}' - - echo-chamber2: - runs-on: ubuntu-latest - steps: - - run: echo '${{ github.event.comment.body }}' - - run: echo '${{ github.event.issue.body }}' - - run: echo '${{ github.event.issue.title }}' - - echo-chamber3: - runs-on: ubuntu-latest - steps: - - uses: actions/github-script@v3 - with: - script: console.log('${{ github.event.comment.body }}') - - uses: actions/github-script@v3 - with: - script: console.log('${{ github.event.issue.body }}') - - uses: actions/github-script@v3 - with: - script: console.log('${{ github.event.issue.title }}') \ No newline at end of file diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/comment_issue_newline.yml b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/comment_issue_newline.yml deleted file mode 100644 index 0a64e47f6cba..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/comment_issue_newline.yml +++ /dev/null @@ -1,10 +0,0 @@ -on: issue_comment - -# same as comment_issue but this file ends with a line break - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - run: | - echo '${{ github.event.comment.body }}' diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/discussion.yml b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/discussion.yml deleted file mode 100644 index fdb140ec3802..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/discussion.yml +++ /dev/null @@ -1,8 +0,0 @@ -on: discussion - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - run: echo '${{ github.event.discussion.title }}' - - run: echo '${{ github.event.discussion.body }}' \ No newline at end of file diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/discussion_comment.yml b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/discussion_comment.yml deleted file mode 100644 index 649d3a6e1319..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/discussion_comment.yml +++ /dev/null @@ -1,9 +0,0 @@ -on: discussion_comment - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - run: echo '${{ github.event.discussion.title }}' - - run: echo '${{ github.event.discussion.body }}' - - run: echo '${{ github.event.comment.body }}' \ No newline at end of file diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/gollum.yml b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/gollum.yml deleted file mode 100644 index a952c8c1ab85..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/gollum.yml +++ /dev/null @@ -1,11 +0,0 @@ -on: gollum - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - run: echo '${{ github.event.pages[1].title }}' - - run: echo '${{ github.event.pages[11].title }}' - - run: echo '${{ github.event.pages[0].page_name }}' - - run: echo '${{ github.event.pages[2222].page_name }}' - - run: echo '${{ toJSON(github.event.pages.*.title) }}' # safe \ No newline at end of file diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/issues.yaml b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/issues.yaml deleted file mode 100644 index 5e767ce0239f..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/issues.yaml +++ /dev/null @@ -1,20 +0,0 @@ -on: issues - -env: - global_env: ${{ github.event.issue.title }} - test: test - -jobs: - echo-chamber: - env: - job_env: ${{ github.event.issue.title }} - runs-on: ubuntu-latest - steps: - - run: echo '${{ github.event.issue.title }}' - - run: echo '${{ github.event.issue.body }}' - - run: echo '${{ env.global_env }}' - - run: echo '${{ env.test }}' - - run: echo '${{ env.job_env }}' - - run: echo '${{ env.step_env }}' - env: - step_env: ${{ github.event.issue.title }} diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/pull_request_review.yml b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/pull_request_review.yml deleted file mode 100644 index d4ce78856694..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/pull_request_review.yml +++ /dev/null @@ -1,14 +0,0 @@ -on: pull_request_review - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - run: echo '${{ github.event.pull_request.title }}' - - run: echo '${{ github.event.pull_request.body }}' - - run: echo '${{ github.event.pull_request.head.label }}' - - run: echo '${{ github.event.pull_request.head.repo.default_branch }}' - - run: echo '${{ github.event.pull_request.head.repo.description }}' - - run: echo '${{ github.event.pull_request.head.repo.homepage }}' - - run: echo '${{ github.event.pull_request.head.ref }}' - - run: echo '${{ github.event.review.body }}' diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/pull_request_review_comment.yml b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/pull_request_review_comment.yml deleted file mode 100644 index 5d288caad85d..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/pull_request_review_comment.yml +++ /dev/null @@ -1,14 +0,0 @@ -on: pull_request_review_comment - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - run: echo '${{ github.event.pull_request.title }}' - - run: echo '${{ github.event.pull_request.body }}' - - run: echo '${{ github.event.pull_request.head.label }}' - - run: echo '${{ github.event.pull_request.head.repo.default_branch }}' - - run: echo '${{ github.event.pull_request.head.repo.description }}' - - run: echo '${{ github.event.pull_request.head.repo.homepage }}' - - run: echo '${{ github.event.pull_request.head.ref }}' - - run: echo '${{ github.event.comment.body }}' diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/pull_request_target.yml b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/pull_request_target.yml deleted file mode 100644 index 215b32528853..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/pull_request_target.yml +++ /dev/null @@ -1,16 +0,0 @@ -on: pull_request_target - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - run: echo '${{ github.event.issue.title }}' # not defined - - run: echo '${{ github.event.issue.body }}' # not defined - - run: echo '${{ github.event.pull_request.title }}' - - run: echo '${{ github.event.pull_request.body }}' - - run: echo '${{ github.event.pull_request.head.label }}' - - run: echo '${{ github.event.pull_request.head.repo.default_branch }}' - - run: echo '${{ github.event.pull_request.head.repo.description }}' - - run: echo '${{ github.event.pull_request.head.repo.homepage }}' - - run: echo '${{ github.event.pull_request.head.ref }}' - - run: echo '${{ github.head_ref }}' diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/push.yml b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/push.yml deleted file mode 100644 index 2006a7999daf..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/push.yml +++ /dev/null @@ -1,16 +0,0 @@ -on: push - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - run: echo '${{ github.event.commits[11].message }}' - - run: echo '${{ github.event.commits[11].author.email }}' - - run: echo '${{ github.event.commits[11].author.name }}' - - run: echo '${{ github.event.head_commit.message }}' - - run: echo '${{ github.event.head_commit.author.email }}' - - run: echo '${{ github.event.head_commit.author.name }}' - - run: echo '${{ github.event.head_commit.committer.email }}' - - run: echo '${{ github.event.head_commit.committer.name }}' - - run: echo '${{ github.event.commits[11].committer.email }}' - - run: echo '${{ github.event.commits[11].committer.name }}' \ No newline at end of file diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/workflow_run.yml b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/workflow_run.yml deleted file mode 100644 index 60e7645f60fe..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/.github/workflows/workflow_run.yml +++ /dev/null @@ -1,16 +0,0 @@ -on: - workflow_run: - workflows: [test] - -jobs: - echo-chamber: - runs-on: ubuntu-latest - steps: - - run: echo '${{ github.event.workflow_run.display_title }}' - - run: echo '${{ github.event.workflow_run.head_commit.message }}' - - run: echo '${{ github.event.workflow_run.head_commit.author.email }}' - - run: echo '${{ github.event.workflow_run.head_commit.author.name }}' - - run: echo '${{ github.event.workflow_run.head_commit.committer.email }}' - - run: echo '${{ github.event.workflow_run.head_commit.committer.name }}' - - run: echo '${{ github.event.workflow_run.head_branch }}' - - run: echo '${{ github.event.workflow_run.head_repository.description }}' diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/ExpressionInjection.expected b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/ExpressionInjection.expected deleted file mode 100644 index 414b9b9ae404..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/ExpressionInjection.expected +++ /dev/null @@ -1,65 +0,0 @@ -| .github/workflows/comment_issue.yml:7:12:8:48 | \| | Potential injection from the ${{ github.event.comment.body }}, which may be controlled by an external user. | -| .github/workflows/comment_issue.yml:13:12:13:50 | echo '$ ... ody }}' | Potential injection from the ${{ github.event.comment.body }}, which may be controlled by an external user. | -| .github/workflows/comment_issue.yml:14:12:14:48 | echo '$ ... ody }}' | Potential injection from the ${{ github.event.issue.body }}, which may be controlled by an external user. | -| .github/workflows/comment_issue.yml:15:12:15:49 | echo '$ ... tle }}' | Potential injection from the ${{ github.event.issue.title }}, which may be controlled by an external user. | -| .github/workflows/comment_issue.yml:22:17:22:63 | console ... dy }}') | Potential injection from the ${{ github.event.comment.body }}, which may be controlled by an external user. | -| .github/workflows/comment_issue.yml:25:17:25:61 | console ... dy }}') | Potential injection from the ${{ github.event.issue.body }}, which may be controlled by an external user. | -| .github/workflows/comment_issue.yml:28:17:28:62 | console ... le }}') | Potential injection from the ${{ github.event.issue.title }}, which may be controlled by an external user. | -| .github/workflows/comment_issue_newline.yml:9:14:10:50 | \| | Potential injection from the ${{ github.event.comment.body }}, which may be controlled by an external user. | -| .github/workflows/discussion.yml:7:12:7:54 | echo '$ ... tle }}' | Potential injection from the ${{ github.event.discussion.title }}, which may be controlled by an external user. | -| .github/workflows/discussion.yml:8:12:8:53 | echo '$ ... ody }}' | Potential injection from the ${{ github.event.discussion.body }}, which may be controlled by an external user. | -| .github/workflows/discussion_comment.yml:7:12:7:54 | echo '$ ... tle }}' | Potential injection from the ${{ github.event.discussion.title }}, which may be controlled by an external user. | -| .github/workflows/discussion_comment.yml:8:12:8:53 | echo '$ ... ody }}' | Potential injection from the ${{ github.event.discussion.body }}, which may be controlled by an external user. | -| .github/workflows/discussion_comment.yml:9:12:9:50 | echo '$ ... ody }}' | Potential injection from the ${{ github.event.comment.body }}, which may be controlled by an external user. | -| .github/workflows/gollum.yml:7:12:7:52 | echo '$ ... tle }}' | Potential injection from the ${{ github.event.pages[1].title }}, which may be controlled by an external user. | -| .github/workflows/gollum.yml:8:12:8:53 | echo '$ ... tle }}' | Potential injection from the ${{ github.event.pages[11].title }}, which may be controlled by an external user. | -| .github/workflows/gollum.yml:9:12:9:56 | echo '$ ... ame }}' | Potential injection from the ${{ github.event.pages[0].page_name }}, which may be controlled by an external user. | -| .github/workflows/gollum.yml:10:12:10:59 | echo '$ ... ame }}' | Potential injection from the ${{ github.event.pages[2222].page_name }}, which may be controlled by an external user. | -| .github/workflows/issues.yaml:13:12:13:49 | echo '$ ... tle }}' | Potential injection from the ${{ github.event.issue.title }}, which may be controlled by an external user. | -| .github/workflows/issues.yaml:14:12:14:48 | echo '$ ... ody }}' | Potential injection from the ${{ github.event.issue.body }}, which may be controlled by an external user. | -| .github/workflows/issues.yaml:15:12:15:39 | echo '$ ... env }}' | Potential injection from the ${{ env.global_env }}, which may be controlled by an external user. | -| .github/workflows/issues.yaml:17:12:17:36 | echo '$ ... env }}' | Potential injection from the ${{ env.job_env }}, which may be controlled by an external user. | -| .github/workflows/issues.yaml:18:12:18:37 | echo '$ ... env }}' | Potential injection from the ${{ env.step_env }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review.yml:7:12:7:56 | echo '$ ... tle }}' | Potential injection from the ${{ github.event.pull_request.title }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review.yml:8:12:8:55 | echo '$ ... ody }}' | Potential injection from the ${{ github.event.pull_request.body }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review.yml:9:12:9:61 | echo '$ ... bel }}' | Potential injection from the ${{ github.event.pull_request.head.label }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review.yml:10:12:10:75 | echo '$ ... nch }}' | Potential injection from the ${{ github.event.pull_request.head.repo.default_branch }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review.yml:11:12:11:72 | echo '$ ... ion }}' | Potential injection from the ${{ github.event.pull_request.head.repo.description }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review.yml:12:12:12:69 | echo '$ ... age }}' | Potential injection from the ${{ github.event.pull_request.head.repo.homepage }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review.yml:13:12:13:59 | echo '$ ... ref }}' | Potential injection from the ${{ github.event.pull_request.head.ref }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review.yml:14:12:14:49 | echo '$ ... ody }}' | Potential injection from the ${{ github.event.review.body }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review_comment.yml:7:12:7:56 | echo '$ ... tle }}' | Potential injection from the ${{ github.event.pull_request.title }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review_comment.yml:8:12:8:55 | echo '$ ... ody }}' | Potential injection from the ${{ github.event.pull_request.body }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review_comment.yml:9:12:9:61 | echo '$ ... bel }}' | Potential injection from the ${{ github.event.pull_request.head.label }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review_comment.yml:10:12:10:75 | echo '$ ... nch }}' | Potential injection from the ${{ github.event.pull_request.head.repo.default_branch }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review_comment.yml:11:12:11:72 | echo '$ ... ion }}' | Potential injection from the ${{ github.event.pull_request.head.repo.description }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review_comment.yml:12:12:12:69 | echo '$ ... age }}' | Potential injection from the ${{ github.event.pull_request.head.repo.homepage }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review_comment.yml:13:12:13:59 | echo '$ ... ref }}' | Potential injection from the ${{ github.event.pull_request.head.ref }}, which may be controlled by an external user. | -| .github/workflows/pull_request_review_comment.yml:14:12:14:50 | echo '$ ... ody }}' | Potential injection from the ${{ github.event.comment.body }}, which may be controlled by an external user. | -| .github/workflows/pull_request_target.yml:9:12:9:56 | echo '$ ... tle }}' | Potential injection from the ${{ github.event.pull_request.title }}, which may be controlled by an external user. | -| .github/workflows/pull_request_target.yml:10:12:10:55 | echo '$ ... ody }}' | Potential injection from the ${{ github.event.pull_request.body }}, which may be controlled by an external user. | -| .github/workflows/pull_request_target.yml:11:12:11:61 | echo '$ ... bel }}' | Potential injection from the ${{ github.event.pull_request.head.label }}, which may be controlled by an external user. | -| .github/workflows/pull_request_target.yml:12:12:12:75 | echo '$ ... nch }}' | Potential injection from the ${{ github.event.pull_request.head.repo.default_branch }}, which may be controlled by an external user. | -| .github/workflows/pull_request_target.yml:13:12:13:72 | echo '$ ... ion }}' | Potential injection from the ${{ github.event.pull_request.head.repo.description }}, which may be controlled by an external user. | -| .github/workflows/pull_request_target.yml:14:12:14:69 | echo '$ ... age }}' | Potential injection from the ${{ github.event.pull_request.head.repo.homepage }}, which may be controlled by an external user. | -| .github/workflows/pull_request_target.yml:15:12:15:59 | echo '$ ... ref }}' | Potential injection from the ${{ github.event.pull_request.head.ref }}, which may be controlled by an external user. | -| .github/workflows/pull_request_target.yml:16:12:16:40 | echo '$ ... ref }}' | Potential injection from the ${{ github.head_ref }}, which may be controlled by an external user. | -| .github/workflows/push.yml:7:12:7:57 | echo '$ ... age }}' | Potential injection from the ${{ github.event.commits[11].message }}, which may be controlled by an external user. | -| .github/workflows/push.yml:8:12:8:62 | echo '$ ... ail }}' | Potential injection from the ${{ github.event.commits[11].author.email }}, which may be controlled by an external user. | -| .github/workflows/push.yml:9:12:9:61 | echo '$ ... ame }}' | Potential injection from the ${{ github.event.commits[11].author.name }}, which may be controlled by an external user. | -| .github/workflows/push.yml:10:12:10:57 | echo '$ ... age }}' | Potential injection from the ${{ github.event.head_commit.message }}, which may be controlled by an external user. | -| .github/workflows/push.yml:11:12:11:62 | echo '$ ... ail }}' | Potential injection from the ${{ github.event.head_commit.author.email }}, which may be controlled by an external user. | -| .github/workflows/push.yml:12:12:12:61 | echo '$ ... ame }}' | Potential injection from the ${{ github.event.head_commit.author.name }}, which may be controlled by an external user. | -| .github/workflows/push.yml:13:12:13:65 | echo '$ ... ail }}' | Potential injection from the ${{ github.event.head_commit.committer.email }}, which may be controlled by an external user. | -| .github/workflows/push.yml:14:12:14:64 | echo '$ ... ame }}' | Potential injection from the ${{ github.event.head_commit.committer.name }}, which may be controlled by an external user. | -| .github/workflows/push.yml:15:12:15:65 | echo '$ ... ail }}' | Potential injection from the ${{ github.event.commits[11].committer.email }}, which may be controlled by an external user. | -| .github/workflows/push.yml:16:12:16:64 | echo '$ ... ame }}' | Potential injection from the ${{ github.event.commits[11].committer.name }}, which may be controlled by an external user. | -| .github/workflows/workflow_run.yml:9:12:9:64 | echo '$ ... tle }}' | Potential injection from the ${{ github.event.workflow_run.display_title }}, which may be controlled by an external user. | -| .github/workflows/workflow_run.yml:10:12:10:70 | echo '$ ... age }}' | Potential injection from the ${{ github.event.workflow_run.head_commit.message }}, which may be controlled by an external user. | -| .github/workflows/workflow_run.yml:11:12:11:75 | echo '$ ... ail }}' | Potential injection from the ${{ github.event.workflow_run.head_commit.author.email }}, which may be controlled by an external user. | -| .github/workflows/workflow_run.yml:12:12:12:74 | echo '$ ... ame }}' | Potential injection from the ${{ github.event.workflow_run.head_commit.author.name }}, which may be controlled by an external user. | -| .github/workflows/workflow_run.yml:13:12:13:78 | echo '$ ... ail }}' | Potential injection from the ${{ github.event.workflow_run.head_commit.committer.email }}, which may be controlled by an external user. | -| .github/workflows/workflow_run.yml:14:12:14:77 | echo '$ ... ame }}' | Potential injection from the ${{ github.event.workflow_run.head_commit.committer.name }}, which may be controlled by an external user. | -| .github/workflows/workflow_run.yml:15:12:15:62 | echo '$ ... nch }}' | Potential injection from the ${{ github.event.workflow_run.head_branch }}, which may be controlled by an external user. | -| .github/workflows/workflow_run.yml:16:12:16:78 | echo '$ ... ion }}' | Potential injection from the ${{ github.event.workflow_run.head_repository.description }}, which may be controlled by an external user. | -| action1/action.yml:14:12:14:50 | echo '$ ... ody }}' | Potential injection from the ${{ github.event.comment.body }}, which may be controlled by an external user. | diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/ExpressionInjection.qlref b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/ExpressionInjection.qlref deleted file mode 100644 index dd00277b79b5..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/ExpressionInjection.qlref +++ /dev/null @@ -1 +0,0 @@ -query: Security/CWE-094/ExpressionInjection.ql diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/action1/action.yml b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/action1/action.yml deleted file mode 100644 index e9a178cf3dbd..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/action1/action.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: 'test' -description: 'test' -branding: - icon: 'test' - color: 'test' -inputs: - test: - description: test - required: false - default: 'test' -runs: - using: "composite" - steps: - - run: echo '${{ github.event.comment.body }}' \ No newline at end of file diff --git a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/action2/action.yml b/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/action2/action.yml deleted file mode 100644 index 40fe0b31e6a1..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-094/ExpressionInjection/action2/action.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: 'Hello World' -description: 'Greet someone and record the time' -inputs: - who-to-greet: # id of input - description: 'Who to greet' - required: true - default: 'World' -outputs: - time: # id of output - description: 'The time we greeted you' -runs: - using: 'docker' - steps: # this is actually invalid, used to test we correctly identify composite actions - - run: echo '${{ github.event.comment.body }}' - image: 'Dockerfile' - args: - - ${{ inputs.who-to-greet }} \ No newline at end of file diff --git a/javascript/ql/test/query-tests/Security/CWE-312/.github/workflows/test.yml b/javascript/ql/test/query-tests/Security/CWE-312/.github/workflows/test.yml deleted file mode 100644 index 473d59986957..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-312/.github/workflows/test.yml +++ /dev/null @@ -1,87 +0,0 @@ -name: secrets-in-artifacts -on: - pull_request: -jobs: - test1: # VULNERABLE - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: "Upload artifact" - uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 - with: - name: file - path: . - test2: # NOT VULNERABLE - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: "Upload artifact" - uses: actions/upload-artifact@v4 - with: - name: file - path: . - test3: # VULNERABLE - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: "Upload artifact" - uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 - with: - name: file - path: "*" - test4: # VULNERABLE - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - path: foo - - name: "Upload artifact" - uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 - with: - name: file - path: foo - test5: # VULNERABLE - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - path: foo - - name: "Upload artifact" - uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 - with: - name: file - path: foo/* - test6: # NOT VULNERABLE - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - path: pr - - name: "Upload artifact" - uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 - with: - name: file - path: foo - test7: # NOT VULNERABLE - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - name: "Upload artifact" - uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 - with: - name: file - path: . - test8: # VULNERABLE - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: true - - name: "Upload artifact" - uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 - with: - name: file - path: . - diff --git a/javascript/ql/test/query-tests/Security/CWE-312/ActionsArtifactLeak.expected b/javascript/ql/test/query-tests/Security/CWE-312/ActionsArtifactLeak.expected deleted file mode 100644 index 575ddda89a48..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-312/ActionsArtifactLeak.expected +++ /dev/null @@ -1,5 +0,0 @@ -| .github/workflows/test.yml:9:9:14:2 | name: " ... tifact" | A secret may be exposed in an artifact. | -| .github/workflows/test.yml:27:9:32:2 | name: " ... tifact" | A secret may be exposed in an artifact. | -| .github/workflows/test.yml:38:9:43:2 | name: " ... tifact" | A secret may be exposed in an artifact. | -| .github/workflows/test.yml:49:9:54:2 | name: " ... tifact" | A secret may be exposed in an artifact. | -| .github/workflows/test.yml:82:9:86:18 | name: " ... tifact" | A secret may be exposed in an artifact. | diff --git a/javascript/ql/test/query-tests/Security/CWE-312/ActionsArtifactLeak.qlref b/javascript/ql/test/query-tests/Security/CWE-312/ActionsArtifactLeak.qlref deleted file mode 100644 index 79d8f4aea279..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-312/ActionsArtifactLeak.qlref +++ /dev/null @@ -1 +0,0 @@ -query: Security/CWE-312/ActionsArtifactLeak.ql diff --git a/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.expected b/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.expected index dde72095df16..f7ff324b4018 100644 --- a/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.expected +++ b/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.expected @@ -6,6 +6,10 @@ | apollo.serverSide.ts:8:39:8:64 | get(fil ... => {}) | apollo.serverSide.ts:7:36:7:44 | { files } | apollo.serverSide.ts:8:43:8:50 | file.url | The $@ of this request depends on a $@. | apollo.serverSide.ts:8:43:8:50 | file.url | URL | apollo.serverSide.ts:7:36:7:44 | { files } | user-provided value | | apollo.serverSide.ts:18:37:18:62 | get(fil ... => {}) | apollo.serverSide.ts:17:34:17:42 | { files } | apollo.serverSide.ts:18:41:18:48 | file.url | The $@ of this request depends on a $@. | apollo.serverSide.ts:18:41:18:48 | file.url | URL | apollo.serverSide.ts:17:34:17:42 | { files } | user-provided value | | axiosInterceptors.serverSide.js:11:26:11:40 | userProvidedUrl | axiosInterceptors.serverSide.js:19:21:19:28 | req.body | axiosInterceptors.serverSide.js:11:26:11:40 | userProvidedUrl | The $@ of this request depends on a $@. | axiosInterceptors.serverSide.js:11:26:11:40 | userProvidedUrl | endpoint | axiosInterceptors.serverSide.js:19:21:19:28 | req.body | user-provided value | +| serverSide2.js:17:28:17:47 | axios.get(targetUrl) | serverSide2.js:10:25:10:31 | req.url | serverSide2.js:17:38:17:46 | targetUrl | The $@ of this request depends on a $@. | serverSide2.js:17:38:17:46 | targetUrl | URL | serverSide2.js:10:25:10:31 | req.url | user-provided value | +| serverSide2.js:20:29:20:49 | axios.g ... etUrl1) | serverSide2.js:9:43:9:56 | req._parsedUrl | serverSide2.js:20:39:20:48 | targetUrl1 | The $@ of this request depends on a $@. | serverSide2.js:20:39:20:48 | targetUrl1 | URL | serverSide2.js:9:43:9:56 | req._parsedUrl | user-provided value | +| serverSide2.js:23:29:23:49 | axios.g ... etUrl2) | serverSide2.js:22:24:22:30 | req.url | serverSide2.js:23:39:23:48 | targetUrl2 | The $@ of this request depends on a $@. | serverSide2.js:23:39:23:48 | targetUrl2 | URL | serverSide2.js:22:24:22:30 | req.url | user-provided value | +| serverSide2.js:26:29:26:49 | axios.g ... etUrl3) | serverSide2.js:11:24:11:30 | req.url | serverSide2.js:26:39:26:48 | targetUrl3 | The $@ of this request depends on a $@. | serverSide2.js:26:39:26:48 | targetUrl3 | URL | serverSide2.js:11:24:11:30 | req.url | user-provided value | | serverSide.js:18:5:18:20 | request(tainted) | serverSide.js:14:29:14:35 | req.url | serverSide.js:18:13:18:19 | tainted | The $@ of this request depends on a $@. | serverSide.js:18:13:18:19 | tainted | URL | serverSide.js:14:29:14:35 | req.url | user-provided value | | serverSide.js:20:5:20:24 | request.get(tainted) | serverSide.js:14:29:14:35 | req.url | serverSide.js:20:17:20:23 | tainted | The $@ of this request depends on a $@. | serverSide.js:20:17:20:23 | tainted | URL | serverSide.js:14:29:14:35 | req.url | user-provided value | | serverSide.js:24:5:24:20 | request(options) | serverSide.js:14:29:14:35 | req.url | serverSide.js:23:19:23:25 | tainted | The $@ of this request depends on a $@. | serverSide.js:23:19:23:25 | tainted | URL | serverSide.js:14:29:14:35 | req.url | user-provided value | @@ -33,6 +37,8 @@ | serverSide.js:141:3:141:30 | axios.g ... ring()) | serverSide.js:139:17:139:29 | req.query.url | serverSide.js:141:13:141:29 | target.toString() | The $@ of this request depends on a $@. | serverSide.js:141:13:141:29 | target.toString() | URL | serverSide.js:139:17:139:29 | req.query.url | user-provided value | | serverSide.js:142:3:142:19 | axios.get(target) | serverSide.js:139:17:139:29 | req.query.url | serverSide.js:142:13:142:18 | target | The $@ of this request depends on a $@. | serverSide.js:142:13:142:18 | target | URL | serverSide.js:139:17:139:29 | req.query.url | user-provided value | | serverSide.js:143:3:143:24 | axios.g ... t.href) | serverSide.js:139:17:139:29 | req.query.url | serverSide.js:143:13:143:23 | target.href | The $@ of this request depends on a $@. | serverSide.js:143:13:143:23 | target.href | URL | serverSide.js:139:17:139:29 | req.query.url | user-provided value | +| serverSide.js:145:3:145:23 | axios.g ... dedUrl) | serverSide.js:139:17:139:29 | req.query.url | serverSide.js:145:13:145:22 | encodedUrl | The $@ of this request depends on a $@. | serverSide.js:145:13:145:22 | encodedUrl | URL | serverSide.js:139:17:139:29 | req.query.url | user-provided value | +| serverSide.js:147:3:147:23 | axios.g ... pedUrl) | serverSide.js:139:17:139:29 | req.query.url | serverSide.js:147:13:147:22 | escapedUrl | The $@ of this request depends on a $@. | serverSide.js:147:13:147:22 | escapedUrl | URL | serverSide.js:139:17:139:29 | req.query.url | user-provided value | edges | Request/app/api/proxy/route2.serverSide.ts:4:9:4:15 | { url } | Request/app/api/proxy/route2.serverSide.ts:4:9:4:34 | url | provenance | | | Request/app/api/proxy/route2.serverSide.ts:4:9:4:34 | url | Request/app/api/proxy/route2.serverSide.ts:5:27:5:29 | url | provenance | | @@ -61,6 +67,18 @@ edges | axiosInterceptors.serverSide.js:19:21:19:28 | req.body | axiosInterceptors.serverSide.js:19:11:19:17 | { url } | provenance | | | axiosInterceptors.serverSide.js:20:5:20:25 | userProvidedUrl | axiosInterceptors.serverSide.js:11:26:11:40 | userProvidedUrl | provenance | | | axiosInterceptors.serverSide.js:20:23:20:25 | url | axiosInterceptors.serverSide.js:20:5:20:25 | userProvidedUrl | provenance | | +| serverSide2.js:9:34:9:63 | qs.pars ... .query) | serverSide2.js:19:24:19:51 | req.par ... rsedUrl | provenance | | +| serverSide2.js:9:43:9:56 | req._parsedUrl | serverSide2.js:9:34:9:63 | qs.pars ... .query) | provenance | | +| serverSide2.js:10:25:10:31 | req.url | serverSide2.js:16:23:16:41 | req.parsedQuery.url | provenance | | +| serverSide2.js:11:24:11:30 | req.url | serverSide2.js:25:24:25:41 | req.SomeObject.url | provenance | | +| serverSide2.js:16:11:16:41 | targetUrl | serverSide2.js:17:38:17:46 | targetUrl | provenance | | +| serverSide2.js:16:23:16:41 | req.parsedQuery.url | serverSide2.js:16:11:16:41 | targetUrl | provenance | | +| serverSide2.js:19:11:19:55 | targetUrl1 | serverSide2.js:20:39:20:48 | targetUrl1 | provenance | | +| serverSide2.js:19:24:19:51 | req.par ... rsedUrl | serverSide2.js:19:11:19:55 | targetUrl1 | provenance | | +| serverSide2.js:22:11:22:36 | targetUrl2 | serverSide2.js:23:39:23:48 | targetUrl2 | provenance | | +| serverSide2.js:22:24:22:30 | req.url | serverSide2.js:22:11:22:36 | targetUrl2 | provenance | | +| serverSide2.js:25:11:25:47 | targetUrl3 | serverSide2.js:26:39:26:48 | targetUrl3 | provenance | | +| serverSide2.js:25:24:25:41 | req.SomeObject.url | serverSide2.js:25:11:25:47 | targetUrl3 | provenance | | | serverSide.js:14:9:14:52 | tainted | serverSide.js:18:13:18:19 | tainted | provenance | | | serverSide.js:14:9:14:52 | tainted | serverSide.js:20:17:20:23 | tainted | provenance | | | serverSide.js:14:9:14:52 | tainted | serverSide.js:23:19:23:25 | tainted | provenance | | @@ -110,6 +128,8 @@ edges | serverSide.js:130:9:130:45 | myUrl | serverSide.js:131:15:131:19 | myUrl | provenance | | | serverSide.js:130:37:130:43 | tainted | serverSide.js:130:9:130:45 | myUrl | provenance | | | serverSide.js:139:9:139:29 | input | serverSide.js:140:26:140:30 | input | provenance | | +| serverSide.js:139:9:139:29 | input | serverSide.js:144:32:144:36 | input | provenance | | +| serverSide.js:139:9:139:29 | input | serverSide.js:146:29:146:33 | input | provenance | | | serverSide.js:139:17:139:29 | req.query.url | serverSide.js:139:9:139:29 | input | provenance | | | serverSide.js:140:9:140:31 | target | serverSide.js:141:13:141:18 | target | provenance | | | serverSide.js:140:9:140:31 | target | serverSide.js:142:13:142:18 | target | provenance | | @@ -118,6 +138,12 @@ edges | serverSide.js:140:26:140:30 | input | serverSide.js:140:18:140:31 | new URL(input) | provenance | Config | | serverSide.js:141:13:141:18 | target | serverSide.js:141:13:141:29 | target.toString() | provenance | | | serverSide.js:143:13:143:18 | target | serverSide.js:143:13:143:23 | target.href | provenance | | +| serverSide.js:144:9:144:37 | encodedUrl | serverSide.js:145:13:145:22 | encodedUrl | provenance | | +| serverSide.js:144:22:144:37 | encodeURI(input) | serverSide.js:144:9:144:37 | encodedUrl | provenance | | +| serverSide.js:144:32:144:36 | input | serverSide.js:144:22:144:37 | encodeURI(input) | provenance | | +| serverSide.js:146:9:146:34 | escapedUrl | serverSide.js:147:13:147:22 | escapedUrl | provenance | | +| serverSide.js:146:22:146:34 | escape(input) | serverSide.js:146:9:146:34 | escapedUrl | provenance | | +| serverSide.js:146:29:146:33 | input | serverSide.js:146:22:146:34 | escape(input) | provenance | | nodes | Request/app/api/proxy/route2.serverSide.ts:4:9:4:15 | { url } | semmle.label | { url } | | Request/app/api/proxy/route2.serverSide.ts:4:9:4:34 | url | semmle.label | url | @@ -153,6 +179,22 @@ nodes | axiosInterceptors.serverSide.js:19:21:19:28 | req.body | semmle.label | req.body | | axiosInterceptors.serverSide.js:20:5:20:25 | userProvidedUrl | semmle.label | userProvidedUrl | | axiosInterceptors.serverSide.js:20:23:20:25 | url | semmle.label | url | +| serverSide2.js:9:34:9:63 | qs.pars ... .query) | semmle.label | qs.pars ... .query) | +| serverSide2.js:9:43:9:56 | req._parsedUrl | semmle.label | req._parsedUrl | +| serverSide2.js:10:25:10:31 | req.url | semmle.label | req.url | +| serverSide2.js:11:24:11:30 | req.url | semmle.label | req.url | +| serverSide2.js:16:11:16:41 | targetUrl | semmle.label | targetUrl | +| serverSide2.js:16:23:16:41 | req.parsedQuery.url | semmle.label | req.parsedQuery.url | +| serverSide2.js:17:38:17:46 | targetUrl | semmle.label | targetUrl | +| serverSide2.js:19:11:19:55 | targetUrl1 | semmle.label | targetUrl1 | +| serverSide2.js:19:24:19:51 | req.par ... rsedUrl | semmle.label | req.par ... rsedUrl | +| serverSide2.js:20:39:20:48 | targetUrl1 | semmle.label | targetUrl1 | +| serverSide2.js:22:11:22:36 | targetUrl2 | semmle.label | targetUrl2 | +| serverSide2.js:22:24:22:30 | req.url | semmle.label | req.url | +| serverSide2.js:23:39:23:48 | targetUrl2 | semmle.label | targetUrl2 | +| serverSide2.js:25:11:25:47 | targetUrl3 | semmle.label | targetUrl3 | +| serverSide2.js:25:24:25:41 | req.SomeObject.url | semmle.label | req.SomeObject.url | +| serverSide2.js:26:39:26:48 | targetUrl3 | semmle.label | targetUrl3 | | serverSide.js:14:9:14:52 | tainted | semmle.label | tainted | | serverSide.js:14:19:14:42 | url.par ... , true) | semmle.label | url.par ... , true) | | serverSide.js:14:29:14:35 | req.url | semmle.label | req.url | @@ -221,4 +263,12 @@ nodes | serverSide.js:142:13:142:18 | target | semmle.label | target | | serverSide.js:143:13:143:18 | target | semmle.label | target | | serverSide.js:143:13:143:23 | target.href | semmle.label | target.href | +| serverSide.js:144:9:144:37 | encodedUrl | semmle.label | encodedUrl | +| serverSide.js:144:22:144:37 | encodeURI(input) | semmle.label | encodeURI(input) | +| serverSide.js:144:32:144:36 | input | semmle.label | input | +| serverSide.js:145:13:145:22 | encodedUrl | semmle.label | encodedUrl | +| serverSide.js:146:9:146:34 | escapedUrl | semmle.label | escapedUrl | +| serverSide.js:146:22:146:34 | escape(input) | semmle.label | escape(input) | +| serverSide.js:146:29:146:33 | input | semmle.label | input | +| serverSide.js:147:13:147:22 | escapedUrl | semmle.label | escapedUrl | subpaths diff --git a/javascript/ql/test/query-tests/Security/CWE-918/serverSide.js b/javascript/ql/test/query-tests/Security/CWE-918/serverSide.js index aec8c4195c83..c578b268e400 100644 --- a/javascript/ql/test/query-tests/Security/CWE-918/serverSide.js +++ b/javascript/ql/test/query-tests/Security/CWE-918/serverSide.js @@ -141,4 +141,8 @@ var server2 = http.createServer(function(req, res) { axios.get(target.toString()); // $Alert[js/request-forgery] axios.get(target); // $Alert[js/request-forgery] axios.get(target.href); // $Alert[js/request-forgery] + const encodedUrl = encodeURI(input); + axios.get(encodedUrl); // $Alert[js/request-forgery] + const escapedUrl = escape(input); + axios.get(escapedUrl); // $Alert[js/request-forgery] }); diff --git a/javascript/ql/test/query-tests/Security/CWE-918/serverSide2.js b/javascript/ql/test/query-tests/Security/CWE-918/serverSide2.js new file mode 100644 index 000000000000..7743d0eec38d --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-918/serverSide2.js @@ -0,0 +1,27 @@ +const express = require('express'); +const axios = require('axios'); +const qs = require('qs'); + +const app = express(); +const PORT = 3000; + +app.use((req, res, next) => { + req.parsedQueryFromParsedUrl = qs.parse(req._parsedUrl.query); // $Source[js/request-forgery] + req.parsedQuery.url = req.url || {}; // $Source[js/request-forgery] + req.SomeObject.url = req.url; // $Source[js/request-forgery] + next(); +}); + +app.get('/proxy', async (req, res) => { + const targetUrl = req.parsedQuery.url; + const response = await axios.get(targetUrl); // $Alert[js/request-forgery] + + const targetUrl1 = req.parsedQueryFromParsedUrl.url; + const response1 = await axios.get(targetUrl1); // $Alert[js/request-forgery] + + const targetUrl2 = req.url || {}; // $Source[js/request-forgery] + const response2 = await axios.get(targetUrl2); // $Alert[js/request-forgery] + + const targetUrl3 = req.SomeObject.url || {}; + const response3 = await axios.get(targetUrl3); // $Alert[js/request-forgery] +}); diff --git a/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/LoopIterationSkippedDueToShifting.expected b/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/LoopIterationSkippedDueToShifting.expected index 4b7becd8e163..cfe2b5f4f58d 100644 --- a/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/LoopIterationSkippedDueToShifting.expected +++ b/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/LoopIterationSkippedDueToShifting.expected @@ -1,3 +1,5 @@ | tst.js:4:27:4:44 | parts.splice(i, 1) | Removing an array item without adjusting the loop index 'i' causes the subsequent array item to be skipped. | | tst.js:13:29:13:46 | parts.splice(i, 1) | Removing an array item without adjusting the loop index 'i' causes the subsequent array item to be skipped. | | tst.js:24:9:24:26 | parts.splice(i, 1) | Removing an array item without adjusting the loop index 'i' causes the subsequent array item to be skipped. | +| tst.js:128:11:128:33 | pending ... e(i, 1) | Removing an array item without adjusting the loop index 'i' causes the subsequent array item to be skipped. | +| tst.js:153:11:153:26 | toc.splice(i, 1) | Removing an array item without adjusting the loop index 'i' causes the subsequent array item to be skipped. | diff --git a/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/tst.js b/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/tst.js index 68c50516da04..01f046d1c1e2 100644 --- a/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/tst.js +++ b/javascript/ql/test/query-tests/Statements/LoopIterationSkippedDueToShifting/tst.js @@ -121,3 +121,38 @@ function inspectNextElement(string) { } return parts.join('/'); } + +function withTryCatch(pendingCSS) { + for (let i = 0; i < pendingCSS.length; ++i) { + try { + pendingCSS.splice(i, 1); // $ SPURIOUS:Alert + i -= 1; + } catch (ex) {} + } +} + +function andOperand(toc) { + for (let i = 0; i < toc.length; i++) { + toc[i].ignoreSubHeading && toc.splice(i, 1) && i--; + } +} + +function ifStatement(toc) { + for (let i = 0; i < toc.length; i++) { + if(toc[i].ignoreSubHeading){ + if(toc.splice(i, 1)){ + i--; + } + } + } +} + +function ifStatement2(toc) { + for (let i = 0; i < toc.length; i++) { + if(toc[i].ignoreSubHeading){ + if(!toc.splice(i, 1)){ // $Alert + i--; + } + } + } +} diff --git a/javascript/ql/test/query-tests/definitions/definitions.expected b/javascript/ql/test/query-tests/definitions/definitions.expected index 081db47c3faa..cb91ac6e37ce 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/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel index cade1a4cb938..2132ca53645b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel @@ -86,6 +86,6 @@ rust_library( }), version = "1.1.3", deps = [ - "@vendor_ts__memchr-2.7.4//:memchr", + "@vendor_ts__memchr-2.7.5//:memchr", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel index d5999d213666..2063ae433936 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel @@ -81,6 +81,6 @@ rust_library( }), version = "0.1.5", deps = [ - "@vendor_ts__libc-0.2.171//:libc", + "@vendor_ts__libc-0.2.174//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.97.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.97.bazel deleted file mode 100644 index ae13110a5eae..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.97.bazel +++ /dev/null @@ -1,150 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_build_script") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "anyhow", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=anyhow", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "1.0.97", - deps = [ - "@vendor_ts__anyhow-1.0.97//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "std", - ], - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2018", - pkg_name = "anyhow", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=anyhow", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.0.97", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.98.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.98.bazel new file mode 100644 index 000000000000..a73766e27bbf --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.98.bazel @@ -0,0 +1,150 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "anyhow", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "std", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=anyhow", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.98", + deps = [ + "@vendor_ts__anyhow-1.0.98//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "std", + ], + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2018", + pkg_name = "anyhow", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=anyhow", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.98", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel index 52ebf159f017..8b09c0613aae 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel @@ -32,14 +32,14 @@ filegroup( # Workspace Member Dependencies alias( - name = "anyhow-1.0.97", - actual = "@vendor_ts__anyhow-1.0.97//:anyhow", + name = "anyhow-1.0.98", + actual = "@vendor_ts__anyhow-1.0.98//:anyhow", tags = ["manual"], ) alias( name = "anyhow", - actual = "@vendor_ts__anyhow-1.0.97//:anyhow", + actual = "@vendor_ts__anyhow-1.0.98//:anyhow", tags = ["manual"], ) @@ -56,38 +56,38 @@ alias( ) alias( - name = "chalk-ir-0.100.0", - actual = "@vendor_ts__chalk-ir-0.100.0//:chalk_ir", + name = "chalk-ir-0.103.0", + actual = "@vendor_ts__chalk-ir-0.103.0//:chalk_ir", tags = ["manual"], ) alias( name = "chalk-ir", - actual = "@vendor_ts__chalk-ir-0.100.0//:chalk_ir", + actual = "@vendor_ts__chalk-ir-0.103.0//:chalk_ir", tags = ["manual"], ) alias( - name = "chrono-0.4.40", - actual = "@vendor_ts__chrono-0.4.40//:chrono", + name = "chrono-0.4.41", + actual = "@vendor_ts__chrono-0.4.41//:chrono", tags = ["manual"], ) alias( name = "chrono", - actual = "@vendor_ts__chrono-0.4.40//:chrono", + actual = "@vendor_ts__chrono-0.4.41//:chrono", tags = ["manual"], ) alias( - name = "clap-4.5.35", - actual = "@vendor_ts__clap-4.5.35//:clap", + name = "clap-4.5.40", + actual = "@vendor_ts__clap-4.5.40//:clap", tags = ["manual"], ) alias( name = "clap", - actual = "@vendor_ts__clap-4.5.35//:clap", + actual = "@vendor_ts__clap-4.5.40//:clap", tags = ["manual"], ) @@ -224,26 +224,26 @@ alias( ) alias( - name = "num_cpus-1.16.0", - actual = "@vendor_ts__num_cpus-1.16.0//:num_cpus", + name = "num_cpus-1.17.0", + actual = "@vendor_ts__num_cpus-1.17.0//:num_cpus", tags = ["manual"], ) alias( name = "num_cpus", - actual = "@vendor_ts__num_cpus-1.16.0//:num_cpus", + actual = "@vendor_ts__num_cpus-1.17.0//:num_cpus", tags = ["manual"], ) alias( - name = "proc-macro2-1.0.94", - actual = "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + name = "proc-macro2-1.0.95", + actual = "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", tags = ["manual"], ) alias( name = "proc-macro2", - actual = "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + actual = "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", tags = ["manual"], ) @@ -260,212 +260,212 @@ alias( ) alias( - name = "ra_ap_base_db-0.0.273", - actual = "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db", + name = "ra_ap_base_db-0.0.288", + actual = "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db", tags = ["manual"], ) alias( name = "ra_ap_base_db", - actual = "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db", + actual = "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db", tags = ["manual"], ) alias( - name = "ra_ap_cfg-0.0.273", - actual = "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg", + name = "ra_ap_cfg-0.0.288", + actual = "@vendor_ts__ra_ap_cfg-0.0.288//:ra_ap_cfg", tags = ["manual"], ) alias( name = "ra_ap_cfg", - actual = "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg", + actual = "@vendor_ts__ra_ap_cfg-0.0.288//:ra_ap_cfg", tags = ["manual"], ) alias( - name = "ra_ap_hir-0.0.273", - actual = "@vendor_ts__ra_ap_hir-0.0.273//:ra_ap_hir", + name = "ra_ap_hir-0.0.288", + actual = "@vendor_ts__ra_ap_hir-0.0.288//:ra_ap_hir", tags = ["manual"], ) alias( name = "ra_ap_hir", - actual = "@vendor_ts__ra_ap_hir-0.0.273//:ra_ap_hir", + actual = "@vendor_ts__ra_ap_hir-0.0.288//:ra_ap_hir", tags = ["manual"], ) alias( - name = "ra_ap_hir_def-0.0.273", - actual = "@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def", + name = "ra_ap_hir_def-0.0.288", + actual = "@vendor_ts__ra_ap_hir_def-0.0.288//:ra_ap_hir_def", tags = ["manual"], ) alias( name = "ra_ap_hir_def", - actual = "@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def", + actual = "@vendor_ts__ra_ap_hir_def-0.0.288//:ra_ap_hir_def", tags = ["manual"], ) alias( - name = "ra_ap_hir_expand-0.0.273", - actual = "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand", + name = "ra_ap_hir_expand-0.0.288", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.288//:ra_ap_hir_expand", tags = ["manual"], ) alias( name = "ra_ap_hir_expand", - actual = "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.288//:ra_ap_hir_expand", tags = ["manual"], ) alias( - name = "ra_ap_hir_ty-0.0.273", - actual = "@vendor_ts__ra_ap_hir_ty-0.0.273//:ra_ap_hir_ty", + name = "ra_ap_hir_ty-0.0.288", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.288//:ra_ap_hir_ty", tags = ["manual"], ) alias( name = "ra_ap_hir_ty", - actual = "@vendor_ts__ra_ap_hir_ty-0.0.273//:ra_ap_hir_ty", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.288//:ra_ap_hir_ty", tags = ["manual"], ) alias( - name = "ra_ap_ide_db-0.0.273", - actual = "@vendor_ts__ra_ap_ide_db-0.0.273//:ra_ap_ide_db", + name = "ra_ap_ide_db-0.0.288", + actual = "@vendor_ts__ra_ap_ide_db-0.0.288//:ra_ap_ide_db", tags = ["manual"], ) alias( name = "ra_ap_ide_db", - actual = "@vendor_ts__ra_ap_ide_db-0.0.273//:ra_ap_ide_db", + actual = "@vendor_ts__ra_ap_ide_db-0.0.288//:ra_ap_ide_db", tags = ["manual"], ) alias( - name = "ra_ap_intern-0.0.273", - actual = "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", + name = "ra_ap_intern-0.0.288", + actual = "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", tags = ["manual"], ) alias( name = "ra_ap_intern", - actual = "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", + actual = "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", tags = ["manual"], ) alias( - name = "ra_ap_load-cargo-0.0.273", - actual = "@vendor_ts__ra_ap_load-cargo-0.0.273//:ra_ap_load_cargo", + name = "ra_ap_load-cargo-0.0.288", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.288//:ra_ap_load_cargo", tags = ["manual"], ) alias( name = "ra_ap_load-cargo", - actual = "@vendor_ts__ra_ap_load-cargo-0.0.273//:ra_ap_load_cargo", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.288//:ra_ap_load_cargo", tags = ["manual"], ) alias( - name = "ra_ap_parser-0.0.273", - actual = "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser", + name = "ra_ap_parser-0.0.288", + actual = "@vendor_ts__ra_ap_parser-0.0.288//:ra_ap_parser", tags = ["manual"], ) alias( name = "ra_ap_parser", - actual = "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser", + actual = "@vendor_ts__ra_ap_parser-0.0.288//:ra_ap_parser", tags = ["manual"], ) alias( - name = "ra_ap_paths-0.0.273", - actual = "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths", + name = "ra_ap_paths-0.0.288", + actual = "@vendor_ts__ra_ap_paths-0.0.288//:ra_ap_paths", tags = ["manual"], ) alias( name = "ra_ap_paths", - actual = "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths", + actual = "@vendor_ts__ra_ap_paths-0.0.288//:ra_ap_paths", tags = ["manual"], ) alias( - name = "ra_ap_project_model-0.0.273", - actual = "@vendor_ts__ra_ap_project_model-0.0.273//:ra_ap_project_model", + name = "ra_ap_project_model-0.0.288", + actual = "@vendor_ts__ra_ap_project_model-0.0.288//:ra_ap_project_model", tags = ["manual"], ) alias( name = "ra_ap_project_model", - actual = "@vendor_ts__ra_ap_project_model-0.0.273//:ra_ap_project_model", + actual = "@vendor_ts__ra_ap_project_model-0.0.288//:ra_ap_project_model", tags = ["manual"], ) alias( - name = "ra_ap_span-0.0.273", - actual = "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span", + name = "ra_ap_span-0.0.288", + actual = "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span", tags = ["manual"], ) alias( name = "ra_ap_span", - actual = "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span", + actual = "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span", tags = ["manual"], ) alias( - name = "ra_ap_stdx-0.0.273", - actual = "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", + name = "ra_ap_stdx-0.0.288", + actual = "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", tags = ["manual"], ) alias( - name = "stdx-0.0.273", - actual = "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", + name = "stdx-0.0.288", + actual = "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", tags = ["manual"], ) alias( name = "stdx", - actual = "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", + actual = "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", tags = ["manual"], ) alias( - name = "ra_ap_syntax-0.0.273", - actual = "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax", + name = "ra_ap_syntax-0.0.288", + actual = "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax", tags = ["manual"], ) alias( name = "ra_ap_syntax", - actual = "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax", + actual = "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax", tags = ["manual"], ) alias( - name = "ra_ap_vfs-0.0.273", - actual = "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs", + name = "ra_ap_vfs-0.0.288", + actual = "@vendor_ts__ra_ap_vfs-0.0.288//:ra_ap_vfs", tags = ["manual"], ) alias( name = "ra_ap_vfs", - actual = "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs", + actual = "@vendor_ts__ra_ap_vfs-0.0.288//:ra_ap_vfs", tags = ["manual"], ) alias( - name = "rand-0.9.0", - actual = "@vendor_ts__rand-0.9.0//:rand", + name = "rand-0.9.1", + actual = "@vendor_ts__rand-0.9.1//:rand", tags = ["manual"], ) alias( name = "rand", - actual = "@vendor_ts__rand-0.9.0//:rand", + actual = "@vendor_ts__rand-0.9.1//:rand", tags = ["manual"], ) @@ -518,38 +518,38 @@ alias( ) alias( - name = "serde_with-3.12.0", - actual = "@vendor_ts__serde_with-3.12.0//:serde_with", + name = "serde_with-3.13.0", + actual = "@vendor_ts__serde_with-3.13.0//:serde_with", tags = ["manual"], ) alias( name = "serde_with", - actual = "@vendor_ts__serde_with-3.12.0//:serde_with", + actual = "@vendor_ts__serde_with-3.13.0//:serde_with", tags = ["manual"], ) alias( - name = "syn-2.0.100", - actual = "@vendor_ts__syn-2.0.100//:syn", + name = "syn-2.0.103", + actual = "@vendor_ts__syn-2.0.103//:syn", tags = ["manual"], ) alias( name = "syn", - actual = "@vendor_ts__syn-2.0.100//:syn", + actual = "@vendor_ts__syn-2.0.103//:syn", tags = ["manual"], ) alias( - name = "toml-0.8.20", - actual = "@vendor_ts__toml-0.8.20//:toml", + name = "toml-0.8.23", + actual = "@vendor_ts__toml-0.8.23//:toml", tags = ["manual"], ) alias( name = "toml", - actual = "@vendor_ts__toml-0.8.20//:toml", + actual = "@vendor_ts__toml-0.8.23//:toml", tags = ["manual"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.0.bazel deleted file mode 100644 index e5f84a9323f4..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.0.bazel +++ /dev/null @@ -1,83 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "bitflags", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=bitflags", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "2.9.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.1.bazel new file mode 100644 index 000000000000..f3f2b4bd2543 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.1.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "bitflags", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=bitflags", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "2.9.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.11.bazel deleted file mode 100644 index 06ae2c25a76c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.11.bazel +++ /dev/null @@ -1,83 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "boxcar", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=boxcar", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.2.11", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.13.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.13.bazel new file mode 100644 index 000000000000..4c7c453d12bc --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.13.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "boxcar", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=boxcar", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.2.13", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.11.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.11.3.bazel index baeadd361ef5..052150604e89 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.11.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.11.3.bazel @@ -85,6 +85,6 @@ rust_library( }), version = "1.11.3", deps = [ - "@vendor_ts__memchr-2.7.4//:memchr", + "@vendor_ts__memchr-2.7.5//:memchr", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.10.bazel new file mode 100644 index 000000000000..98c88b9375ea --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.10.bazel @@ -0,0 +1,151 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "camino", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "serde", + "serde1", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=camino", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.1.10", + deps = [ + "@vendor_ts__camino-1.1.10//:build_script_build", + "@vendor_ts__serde-1.0.219//:serde", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "serde", + "serde1", + ], + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2018", + pkg_name = "camino", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=camino", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.1.10", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.9.bazel deleted file mode 100644 index 27672271a76d..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.9.bazel +++ /dev/null @@ -1,151 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_build_script") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "camino", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "serde", - "serde1", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=camino", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "1.1.9", - deps = [ - "@vendor_ts__camino-1.1.9//:build_script_build", - "@vendor_ts__serde-1.0.219//:serde", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "serde", - "serde1", - ], - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2018", - pkg_name = "camino", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=camino", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.1.9", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.1.9.bazel deleted file mode 100644 index a95435a61514..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.1.9.bazel +++ /dev/null @@ -1,86 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "cargo_platform", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=cargo-platform", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.1.9", - deps = [ - "@vendor_ts__serde-1.0.219//:serde", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel new file mode 100644 index 000000000000..884bfd808370 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel @@ -0,0 +1,86 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "cargo_platform", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=cargo-platform", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.2.0", + deps = [ + "@vendor_ts__serde-1.0.219//:serde", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.2.0.bazel new file mode 100644 index 000000000000..157f3891512c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.2.0.bazel @@ -0,0 +1,93 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "cargo_util_schemas", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=cargo-util-schemas", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.2.0", + deps = [ + "@vendor_ts__semver-1.0.26//:semver", + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__serde-untagged-0.1.7//:serde_untagged", + "@vendor_ts__serde-value-0.7.0//:serde_value", + "@vendor_ts__thiserror-1.0.69//:thiserror", + "@vendor_ts__toml-0.8.23//:toml", + "@vendor_ts__unicode-xid-0.2.6//:unicode_xid", + "@vendor_ts__url-2.5.4//:url", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.19.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.19.2.bazel deleted file mode 100644 index 5be95a9511f8..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.19.2.bazel +++ /dev/null @@ -1,94 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "cargo_metadata", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=cargo_metadata", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.19.2", - deps = [ - "@vendor_ts__camino-1.1.9//:camino", - "@vendor_ts__cargo-platform-0.1.9//:cargo_platform", - "@vendor_ts__semver-1.0.26//:semver", - "@vendor_ts__serde-1.0.219//:serde", - "@vendor_ts__serde_json-1.0.140//:serde_json", - "@vendor_ts__thiserror-2.0.12//:thiserror", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.20.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.20.0.bazel new file mode 100644 index 000000000000..d005068efc15 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.20.0.bazel @@ -0,0 +1,95 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "cargo_metadata", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=cargo_metadata", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.20.0", + deps = [ + "@vendor_ts__camino-1.1.10//:camino", + "@vendor_ts__cargo-platform-0.2.0//:cargo_platform", + "@vendor_ts__cargo-util-schemas-0.2.0//:cargo_util_schemas", + "@vendor_ts__semver-1.0.26//:semver", + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__serde_json-1.0.140//:serde_json", + "@vendor_ts__thiserror-2.0.12//:thiserror", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.7.bazel index 54aab54c9ca5..17f020da4474 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.7.bazel @@ -88,37 +88,37 @@ rust_library( "@vendor_ts__shlex-1.3.0//:shlex", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # aarch64-apple-darwin + "@vendor_ts__libc-0.2.174//:libc", # aarch64-apple-darwin ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # aarch64-unknown-linux-gnu + "@vendor_ts__libc-0.2.174//:libc", # aarch64-unknown-linux-gnu ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "@vendor_ts__libc-0.2.174//:libc", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # arm-unknown-linux-gnueabi + "@vendor_ts__libc-0.2.174//:libc", # arm-unknown-linux-gnueabi ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # i686-unknown-linux-gnu + "@vendor_ts__libc-0.2.174//:libc", # i686-unknown-linux-gnu ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # powerpc-unknown-linux-gnu + "@vendor_ts__libc-0.2.174//:libc", # powerpc-unknown-linux-gnu ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # s390x-unknown-linux-gnu + "@vendor_ts__libc-0.2.174//:libc", # s390x-unknown-linux-gnu ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # x86_64-apple-darwin + "@vendor_ts__libc-0.2.174//:libc", # x86_64-apple-darwin ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # x86_64-unknown-freebsd + "@vendor_ts__libc-0.2.174//:libc", # x86_64-unknown-freebsd ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # x86_64-unknown-linux-gnu + "@vendor_ts__libc-0.2.174//:libc", # x86_64-unknown-linux-gnu ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "@vendor_ts__libc-0.2.174//:libc", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.0.bazel deleted file mode 100644 index f1747e8f077f..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.0.bazel +++ /dev/null @@ -1,83 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "cfg_if", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=cfg-if", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "1.0.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.1.bazel new file mode 100644 index 000000000000..ad6a15b046ef --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.1.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "cfg_if", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=cfg-if", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.100.0.bazel deleted file mode 100644 index 3e9e66a96dc7..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.100.0.bazel +++ /dev/null @@ -1,89 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -rust_proc_macro( - name = "chalk_derive", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=chalk-derive", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.100.0", - deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", - "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", - "@vendor_ts__synstructure-0.13.1//:synstructure", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel new file mode 100644 index 000000000000..15da420c019d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel @@ -0,0 +1,89 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "chalk_derive", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=chalk-derive", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.103.0", + deps = [ + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.103//:syn", + "@vendor_ts__synstructure-0.13.1//:synstructure", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.100.0.bazel deleted file mode 100644 index a15909217db2..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.100.0.bazel +++ /dev/null @@ -1,89 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "chalk_ir", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - proc_macro_deps = [ - "@vendor_ts__chalk-derive-0.100.0//:chalk_derive", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=chalk-ir", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.100.0", - deps = [ - "@vendor_ts__bitflags-2.9.0//:bitflags", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel new file mode 100644 index 000000000000..de782121b246 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel @@ -0,0 +1,89 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "chalk_ir", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2018", + proc_macro_deps = [ + "@vendor_ts__chalk-derive-0.103.0//:chalk_derive", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=chalk-ir", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.103.0", + deps = [ + "@vendor_ts__bitflags-2.9.1//:bitflags", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.100.0.bazel deleted file mode 100644 index 4a3b7135706f..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.100.0.bazel +++ /dev/null @@ -1,92 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "chalk_recursive", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - proc_macro_deps = [ - "@vendor_ts__chalk-derive-0.100.0//:chalk_derive", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=chalk-recursive", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.100.0", - deps = [ - "@vendor_ts__chalk-ir-0.100.0//:chalk_ir", - "@vendor_ts__chalk-solve-0.100.0//:chalk_solve", - "@vendor_ts__rustc-hash-1.1.0//:rustc_hash", - "@vendor_ts__tracing-0.1.41//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel new file mode 100644 index 000000000000..fc517c415749 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel @@ -0,0 +1,92 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "chalk_recursive", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2018", + proc_macro_deps = [ + "@vendor_ts__chalk-derive-0.103.0//:chalk_derive", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=chalk-recursive", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.103.0", + deps = [ + "@vendor_ts__chalk-ir-0.103.0//:chalk_ir", + "@vendor_ts__chalk-solve-0.103.0//:chalk_solve", + "@vendor_ts__rustc-hash-1.1.0//:rustc_hash", + "@vendor_ts__tracing-0.1.41//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.100.0.bazel deleted file mode 100644 index 1aa7560fbf27..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.100.0.bazel +++ /dev/null @@ -1,95 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "chalk_solve", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - proc_macro_deps = [ - "@vendor_ts__chalk-derive-0.100.0//:chalk_derive", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=chalk-solve", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.100.0", - deps = [ - "@vendor_ts__chalk-ir-0.100.0//:chalk_ir", - "@vendor_ts__ena-0.14.3//:ena", - "@vendor_ts__indexmap-2.9.0//:indexmap", - "@vendor_ts__itertools-0.12.1//:itertools", - "@vendor_ts__petgraph-0.6.5//:petgraph", - "@vendor_ts__rustc-hash-1.1.0//:rustc_hash", - "@vendor_ts__tracing-0.1.41//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel new file mode 100644 index 000000000000..178d593115b9 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel @@ -0,0 +1,95 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "chalk_solve", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2018", + proc_macro_deps = [ + "@vendor_ts__chalk-derive-0.103.0//:chalk_derive", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=chalk-solve", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.103.0", + deps = [ + "@vendor_ts__chalk-ir-0.103.0//:chalk_ir", + "@vendor_ts__ena-0.14.3//:ena", + "@vendor_ts__indexmap-2.9.0//:indexmap", + "@vendor_ts__itertools-0.12.1//:itertools", + "@vendor_ts__petgraph-0.6.5//:petgraph", + "@vendor_ts__rustc-hash-1.1.0//:rustc_hash", + "@vendor_ts__tracing-0.1.41//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.40.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.40.bazel deleted file mode 100644 index 2e67a0f3f596..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.40.bazel +++ /dev/null @@ -1,194 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "chrono", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "alloc", - "android-tzdata", - "clock", - "default", - "iana-time-zone", - "js-sys", - "now", - "oldtime", - "serde", - "std", - "wasm-bindgen", - "wasmbind", - "winapi", - "windows-link", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=chrono", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.4.40", - deps = [ - "@vendor_ts__num-traits-0.2.19//:num_traits", - "@vendor_ts__serde-1.0.219//:serde", - ] + select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-apple-darwin - ], - "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-apple-ios - ], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-apple-ios-sim - ], - "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__android-tzdata-0.1.1//:android_tzdata", # aarch64-linux-android - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-linux-android - ], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-link-0.1.1//:windows_link", # aarch64-pc-windows-msvc - ], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-unknown-fuchsia - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu - ], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-unknown-nto-qnx710 - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # arm-unknown-linux-gnueabi - ], - "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__android-tzdata-0.1.1//:android_tzdata", # armv7-linux-androideabi - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # armv7-linux-androideabi - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # armv7-unknown-linux-gnueabi - ], - "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # i686-apple-darwin - ], - "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__android-tzdata-0.1.1//:android_tzdata", # i686-linux-android - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # i686-linux-android - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows-link-0.1.1//:windows_link", # i686-pc-windows-msvc - ], - "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # i686-unknown-freebsd - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # i686-unknown-linux-gnu - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # powerpc-unknown-linux-gnu - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # s390x-unknown-linux-gnu - ], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [ - "@vendor_ts__js-sys-0.3.76//:js_sys", # wasm32-unknown-unknown - "@vendor_ts__wasm-bindgen-0.2.99//:wasm_bindgen", # wasm32-unknown-unknown - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-apple-darwin - ], - "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-apple-ios - ], - "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__android-tzdata-0.1.1//:android_tzdata", # x86_64-linux-android - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-linux-android - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows-link-0.1.1//:windows_link", # x86_64-pc-windows-msvc - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-unknown-freebsd - ], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-unknown-fuchsia - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.41.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.41.bazel new file mode 100644 index 000000000000..b2e5f4d19003 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.41.bazel @@ -0,0 +1,194 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "chrono", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "android-tzdata", + "clock", + "default", + "iana-time-zone", + "js-sys", + "now", + "oldtime", + "serde", + "std", + "wasm-bindgen", + "wasmbind", + "winapi", + "windows-link", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=chrono", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.4.41", + deps = [ + "@vendor_ts__num-traits-0.2.19//:num_traits", + "@vendor_ts__serde-1.0.219//:serde", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-apple-darwin + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-apple-ios + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-apple-ios-sim + ], + "@rules_rust//rust/platform:aarch64-linux-android": [ + "@vendor_ts__android-tzdata-0.1.1//:android_tzdata", # aarch64-linux-android + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-linux-android + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "@vendor_ts__windows-link-0.1.1//:windows_link", # aarch64-pc-windows-msvc + ], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-unknown-fuchsia + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-unknown-nto-qnx710 + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # arm-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:armv7-linux-androideabi": [ + "@vendor_ts__android-tzdata-0.1.1//:android_tzdata", # armv7-linux-androideabi + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # armv7-linux-androideabi + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # armv7-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # i686-apple-darwin + ], + "@rules_rust//rust/platform:i686-linux-android": [ + "@vendor_ts__android-tzdata-0.1.1//:android_tzdata", # i686-linux-android + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # i686-linux-android + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__windows-link-0.1.1//:windows_link", # i686-pc-windows-msvc + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # i686-unknown-freebsd + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # i686-unknown-linux-gnu + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # powerpc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # s390x-unknown-linux-gnu + ], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [ + "@vendor_ts__js-sys-0.3.76//:js_sys", # wasm32-unknown-unknown + "@vendor_ts__wasm-bindgen-0.2.99//:wasm_bindgen", # wasm32-unknown-unknown + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-apple-darwin + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-apple-ios + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__android-tzdata-0.1.1//:android_tzdata", # x86_64-linux-android + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-linux-android + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__windows-link-0.1.1//:windows_link", # x86_64-pc-windows-msvc + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-unknown-freebsd + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-unknown-fuchsia + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.35.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.35.bazel deleted file mode 100644 index c857bb360f32..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.35.bazel +++ /dev/null @@ -1,99 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "clap", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "color", - "default", - "derive", - "error-context", - "help", - "std", - "suggestions", - "usage", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__clap_derive-4.5.32//:clap_derive", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=clap", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "4.5.35", - deps = [ - "@vendor_ts__clap_builder-4.5.35//:clap_builder", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.40.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.40.bazel new file mode 100644 index 000000000000..a5a64da0b5bb --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.40.bazel @@ -0,0 +1,99 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "clap", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "color", + "default", + "derive", + "error-context", + "help", + "std", + "suggestions", + "usage", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__clap_derive-4.5.40//:clap_derive", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=clap", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "4.5.40", + deps = [ + "@vendor_ts__clap_builder-4.5.40//:clap_builder", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.35.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.35.bazel deleted file mode 100644 index 8d2e740ebd9a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.35.bazel +++ /dev/null @@ -1,97 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "clap_builder", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "color", - "error-context", - "help", - "std", - "suggestions", - "usage", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=clap_builder", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "4.5.35", - deps = [ - "@vendor_ts__anstream-0.6.18//:anstream", - "@vendor_ts__anstyle-1.0.10//:anstyle", - "@vendor_ts__clap_lex-0.7.4//:clap_lex", - "@vendor_ts__strsim-0.11.1//:strsim", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.40.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.40.bazel new file mode 100644 index 000000000000..9460432135eb --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.40.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "clap_builder", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "color", + "error-context", + "help", + "std", + "suggestions", + "usage", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=clap_builder", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "4.5.40", + deps = [ + "@vendor_ts__anstream-0.6.18//:anstream", + "@vendor_ts__anstyle-1.0.10//:anstyle", + "@vendor_ts__clap_lex-0.7.4//:clap_lex", + "@vendor_ts__strsim-0.11.1//:strsim", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.32.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.32.bazel deleted file mode 100644 index 1e66cbe6754a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.32.bazel +++ /dev/null @@ -1,92 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -rust_proc_macro( - name = "clap_derive", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=clap_derive", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "4.5.32", - deps = [ - "@vendor_ts__heck-0.5.0//:heck", - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", - "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.40.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.40.bazel new file mode 100644 index 000000000000..e8af21de157f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.40.bazel @@ -0,0 +1,92 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "clap_derive", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=clap_derive", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "4.5.40", + deps = [ + "@vendor_ts__heck-0.5.0//:heck", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.103//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.4.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.4.2.bazel index 1bc709e0ab7b..02693983763e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.4.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.4.2.bazel @@ -85,6 +85,6 @@ rust_library( }), version = "1.4.2", deps = [ - "@vendor_ts__cfg-if-1.0.0//:cfg_if", + "@vendor_ts__cfg-if-1.0.1//:cfg_if", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.14.bazel deleted file mode 100644 index 716f7732fc48..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.14.bazel +++ /dev/null @@ -1,90 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "crossbeam_channel", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=crossbeam-channel", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.5.14", - deps = [ - "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.15.bazel new file mode 100644 index 000000000000..cec593350321 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.15.bazel @@ -0,0 +1,90 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "crossbeam_channel", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=crossbeam-channel", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.5.15", + deps = [ + "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.20.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.20.10.bazel index 77b6fa435ee5..a974cf03b4b0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.20.10.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.20.10.bazel @@ -87,9 +87,9 @@ rust_library( deps = [ "@vendor_ts__fnv-1.0.7//:fnv", "@vendor_ts__ident_case-1.0.1//:ident_case", - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", "@vendor_ts__strsim-0.11.1//:strsim", - "@vendor_ts__syn-2.0.100//:syn", + "@vendor_ts__syn-2.0.103//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.20.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.20.10.bazel index 1effd43d9317..cd5a5dd199bc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.20.10.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.20.10.bazel @@ -83,6 +83,6 @@ rust_proc_macro( deps = [ "@vendor_ts__darling_core-0.20.10//:darling_core", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", + "@vendor_ts__syn-2.0.103//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-5.5.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-5.5.3.bazel deleted file mode 100644 index f761a7301a9b..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-5.5.3.bazel +++ /dev/null @@ -1,93 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "dashmap", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "raw-api", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=dashmap", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "5.5.3", - deps = [ - "@vendor_ts__cfg-if-1.0.0//:cfg_if", - "@vendor_ts__hashbrown-0.14.5//:hashbrown", - "@vendor_ts__lock_api-0.4.12//:lock_api", - "@vendor_ts__once_cell-1.20.3//:once_cell", - "@vendor_ts__parking_lot_core-0.9.10//:parking_lot_core", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel index dba299beec3a..8f6dcced0c0e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel @@ -29,6 +29,7 @@ rust_library( ], ), crate_features = [ + "inline", "raw-api", ], crate_root = "src/lib.rs", @@ -84,7 +85,7 @@ rust_library( }), version = "6.1.0", deps = [ - "@vendor_ts__cfg-if-1.0.0//:cfg_if", + "@vendor_ts__cfg-if-1.0.1//:cfg_if", "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", "@vendor_ts__hashbrown-0.14.5//:hashbrown", "@vendor_ts__lock_api-0.4.12//:lock_api", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel new file mode 100644 index 000000000000..ef61d1a12aff --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel @@ -0,0 +1,88 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "displaydoc", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=displaydoc", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.2.5", + deps = [ + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.103//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.19.bazel new file mode 100644 index 000000000000..da7eea4ee94e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.19.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "dyn_clone", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=dyn-clone", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.19", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel new file mode 100644 index 000000000000..1bd7df326737 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel @@ -0,0 +1,90 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "erased_serde", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=erased-serde", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.4.6", + deps = [ + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__typeid-1.0.3//:typeid", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.filetime-0.2.25.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.filetime-0.2.25.bazel index bcb8fb8a739a..67efe6c549b7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.filetime-0.2.25.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.filetime-0.2.25.bazel @@ -81,88 +81,88 @@ rust_library( }), version = "0.2.25", deps = [ - "@vendor_ts__cfg-if-1.0.0//:cfg_if", + "@vendor_ts__cfg-if-1.0.1//:cfg_if", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.1.bazel new file mode 100644 index 000000000000..3d002c1c1f61 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.1.bazel @@ -0,0 +1,90 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "form_urlencoded", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "std", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=form_urlencoded", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.2.1", + deps = [ + "@vendor_ts__percent-encoding-2.3.1//:percent_encoding", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel index 52e35cc09f60..64bc7d172846 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel @@ -81,6 +81,6 @@ rust_library( }), version = "4.1.0", deps = [ - "@vendor_ts__libc-0.2.171//:libc", + "@vendor_ts__libc-0.2.174//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.generator-0.8.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.generator-0.8.4.bazel deleted file mode 100644 index 0589aa9e457e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.generator-0.8.4.bazel +++ /dev/null @@ -1,230 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_build_script") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "generator", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=generator", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.8.4", - deps = [ - "@vendor_ts__cfg-if-1.0.0//:cfg_if", - "@vendor_ts__generator-0.8.4//:build_script_build", - "@vendor_ts__log-0.4.27//:log", - ] + select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-0.58.0//:windows", # cfg(windows) - ], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows-0.58.0//:windows", # cfg(windows) - ], - "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows-0.58.0//:windows", # cfg(windows) - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "//conditions:default": [], - }), -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2021", - pkg_name = "generator", - proc_macro_deps = [ - "@vendor_ts__rustversion-1.0.20//:rustversion", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=generator", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.8.4", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.1.bazel index e4cc7ad397a8..e21141ad2736 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.1.bazel @@ -85,83 +85,83 @@ rust_library( }), version = "0.3.1", deps = [ - "@vendor_ts__cfg-if-1.0.0//:cfg_if", + "@vendor_ts__cfg-if-1.0.1//:cfg_if", "@vendor_ts__getrandom-0.3.1//:build_script_build", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(all(windows, not(target_vendor = "win7"))) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "haiku", target_os = "redox", target_os = "nto", target_os = "aix")) + "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "haiku", target_os = "redox", target_os = "nto", target_os = "aix")) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ "@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(all(windows, not(target_vendor = "win7"))) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", all(target_os = "horizon", target_arch = "arm"))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", all(target_os = "horizon", target_arch = "arm"))) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ "@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(all(windows, not(target_vendor = "win7"))) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", all(target_os = "horizon", target_arch = "arm"))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", all(target_os = "horizon", target_arch = "arm"))) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(getrandom_backend = "custom", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hermit-abi-0.3.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hermit-abi-0.3.9.bazel deleted file mode 100644 index c19c192a4ee9..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hermit-abi-0.3.9.bazel +++ /dev/null @@ -1,83 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "hermit_abi", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=hermit-abi", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.3.9", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hermit-abi-0.5.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hermit-abi-0.5.2.bazel new file mode 100644 index 000000000000..3f12e75a5187 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hermit-abi-0.5.2.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "hermit_abi", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=hermit-abi", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.5.2", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel new file mode 100644 index 000000000000..c86d9eb2bd6a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel @@ -0,0 +1,92 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "icu_collections", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__displaydoc-0.2.5//:displaydoc", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=icu_collections", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "2.0.0", + deps = [ + "@vendor_ts__potential_utf-0.1.2//:potential_utf", + "@vendor_ts__yoke-0.8.0//:yoke", + "@vendor_ts__zerofrom-0.1.6//:zerofrom", + "@vendor_ts__zerovec-0.11.2//:zerovec", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel new file mode 100644 index 000000000000..817700476ce4 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel @@ -0,0 +1,95 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "icu_locale_core", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "zerovec", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__displaydoc-0.2.5//:displaydoc", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=icu_locale_core", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "2.0.0", + deps = [ + "@vendor_ts__litemap-0.8.0//:litemap", + "@vendor_ts__tinystr-0.8.1//:tinystr", + "@vendor_ts__writeable-0.6.1//:writeable", + "@vendor_ts__zerovec-0.11.2//:zerovec", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel new file mode 100644 index 000000000000..889aede4064e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel @@ -0,0 +1,96 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "icu_normalizer", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "compiled_data", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__displaydoc-0.2.5//:displaydoc", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=icu_normalizer", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "2.0.0", + deps = [ + "@vendor_ts__icu_collections-2.0.0//:icu_collections", + "@vendor_ts__icu_normalizer_data-2.0.0//:icu_normalizer_data", + "@vendor_ts__icu_provider-2.0.0//:icu_provider", + "@vendor_ts__smallvec-1.15.1//:smallvec", + "@vendor_ts__zerovec-0.11.2//:zerovec", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel new file mode 100644 index 000000000000..9a2a78fe541d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel @@ -0,0 +1,142 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "icu_normalizer_data", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=icu_normalizer_data", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "2.0.0", + deps = [ + "@vendor_ts__icu_normalizer_data-2.0.0//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "icu_normalizer_data", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=icu_normalizer_data", + "manual", + "noclippy", + "norustfmt", + ], + version = "2.0.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel new file mode 100644 index 000000000000..6f4c34bd93e9 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel @@ -0,0 +1,98 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "icu_properties", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "compiled_data", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__displaydoc-0.2.5//:displaydoc", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=icu_properties", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "2.0.1", + deps = [ + "@vendor_ts__icu_collections-2.0.0//:icu_collections", + "@vendor_ts__icu_locale_core-2.0.0//:icu_locale_core", + "@vendor_ts__icu_properties_data-2.0.1//:icu_properties_data", + "@vendor_ts__icu_provider-2.0.0//:icu_provider", + "@vendor_ts__potential_utf-0.1.2//:potential_utf", + "@vendor_ts__zerotrie-0.2.2//:zerotrie", + "@vendor_ts__zerovec-0.11.2//:zerovec", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel new file mode 100644 index 000000000000..017eafee027e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel @@ -0,0 +1,142 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "icu_properties_data", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=icu_properties_data", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "2.0.1", + deps = [ + "@vendor_ts__icu_properties_data-2.0.1//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "icu_properties_data", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=icu_properties_data", + "manual", + "noclippy", + "norustfmt", + ], + version = "2.0.1", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel new file mode 100644 index 000000000000..13581bbaeafe --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel @@ -0,0 +1,100 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "icu_provider", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "baked", + "zerotrie", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__displaydoc-0.2.5//:displaydoc", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=icu_provider", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "2.0.0", + deps = [ + "@vendor_ts__icu_locale_core-2.0.0//:icu_locale_core", + "@vendor_ts__stable_deref_trait-1.2.0//:stable_deref_trait", + "@vendor_ts__tinystr-0.8.1//:tinystr", + "@vendor_ts__writeable-0.6.1//:writeable", + "@vendor_ts__yoke-0.8.0//:yoke", + "@vendor_ts__zerofrom-0.1.6//:zerofrom", + "@vendor_ts__zerotrie-0.2.2//:zerotrie", + "@vendor_ts__zerovec-0.11.2//:zerovec", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.0.3.bazel new file mode 100644 index 000000000000..d040184d1d3f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.0.3.bazel @@ -0,0 +1,93 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "idna", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "compiled_data", + "std", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=idna", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.3", + deps = [ + "@vendor_ts__idna_adapter-1.2.1//:idna_adapter", + "@vendor_ts__smallvec-1.15.1//:smallvec", + "@vendor_ts__utf8_iter-1.0.4//:utf8_iter", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel new file mode 100644 index 000000000000..8b0b2b1d9f50 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel @@ -0,0 +1,90 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "idna_adapter", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "compiled_data", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=idna_adapter", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.2.1", + deps = [ + "@vendor_ts__icu_normalizer-2.0.0//:icu_normalizer", + "@vendor_ts__icu_properties-2.0.1//:icu_properties", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel index aff8348d7f06..3c870418142c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel @@ -81,8 +81,8 @@ rust_library( }), version = "0.11.0", deps = [ - "@vendor_ts__bitflags-2.9.0//:bitflags", + "@vendor_ts__bitflags-2.9.1//:bitflags", "@vendor_ts__inotify-sys-0.1.5//:inotify_sys", - "@vendor_ts__libc-0.2.171//:libc", + "@vendor_ts__libc-0.2.174//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel index 5a3e4beb27b6..a8710d62738e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel @@ -81,6 +81,6 @@ rust_library( }), version = "0.1.5", deps = [ - "@vendor_ts__libc-0.2.171//:libc", + "@vendor_ts__libc-0.2.174//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.32.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.32.bazel index 7e041e35b8c0..42f7675b6e9c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.32.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.32.bazel @@ -82,76 +82,76 @@ rust_library( version = "0.1.32", deps = select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jod-thread-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jod-thread-0.1.2.bazel deleted file mode 100644 index cf3232a110d8..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jod-thread-0.1.2.bazel +++ /dev/null @@ -1,83 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "jod_thread", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=jod-thread", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.1.2", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jod-thread-1.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jod-thread-1.0.0.bazel new file mode 100644 index 000000000000..8b42813e8712 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jod-thread-1.0.0.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "jod_thread", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=jod-thread", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.0.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.0.8.bazel index 9c5a46755fa5..805b5abb8979 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.0.8.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.0.8.bazel @@ -82,6 +82,6 @@ rust_library( version = "1.0.8", deps = [ "@vendor_ts__kqueue-sys-1.0.4//:kqueue_sys", - "@vendor_ts__libc-0.2.171//:libc", + "@vendor_ts__libc-0.2.174//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel index ea19f54cb02a..57d6a0a8414d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel @@ -82,6 +82,6 @@ rust_library( version = "1.0.4", deps = [ "@vendor_ts__bitflags-1.3.2//:bitflags", - "@vendor_ts__libc-0.2.171//:libc", + "@vendor_ts__libc-0.2.174//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.171.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.171.bazel deleted file mode 100644 index aedf0e4cfe2c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.171.bazel +++ /dev/null @@ -1,150 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_build_script") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "libc", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=libc", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.2.171", - deps = [ - "@vendor_ts__libc-0.2.171//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "std", - ], - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2021", - pkg_name = "libc", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=libc", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.2.171", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.174.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.174.bazel new file mode 100644 index 000000000000..e133650ce780 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.174.bazel @@ -0,0 +1,150 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "libc", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=libc", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.2.174", + deps = [ + "@vendor_ts__libc-0.2.174//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "std", + ], + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "libc", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=libc", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.2.174", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libredox-0.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libredox-0.1.3.bazel index 99f498374004..1a5916bf2309 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libredox-0.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libredox-0.1.3.bazel @@ -81,8 +81,8 @@ rust_library( }), version = "0.1.3", deps = [ - "@vendor_ts__bitflags-2.9.0//:bitflags", - "@vendor_ts__libc-0.2.171//:libc", + "@vendor_ts__bitflags-2.9.1//:bitflags", + "@vendor_ts__libc-0.2.174//:libc", "@vendor_ts__redox_syscall-0.5.8//:syscall", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel new file mode 100644 index 000000000000..25a245902298 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel @@ -0,0 +1,86 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "litemap", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=litemap", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.8.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.loom-0.7.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.loom-0.7.2.bazel deleted file mode 100644 index 01796e7b3a5d..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.loom-0.7.2.bazel +++ /dev/null @@ -1,90 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "loom", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=loom", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.7.2", - deps = [ - "@vendor_ts__cfg-if-1.0.0//:cfg_if", - "@vendor_ts__generator-0.8.4//:generator", - "@vendor_ts__scoped-tls-1.0.1//:scoped_tls", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__tracing-subscriber-0.3.19//:tracing_subscriber", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.4.bazel deleted file mode 100644 index 9b85be97a95f..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.4.bazel +++ /dev/null @@ -1,88 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "memchr", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "alloc", - "default", - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=memchr", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "2.7.4", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel new file mode 100644 index 000000000000..93869ada24cf --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel @@ -0,0 +1,88 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "memchr", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "default", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=memchr", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "2.7.5", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.3.bazel index 1c48d01d22fc..51e25b92464f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.3.bazel @@ -90,89 +90,89 @@ rust_library( "@vendor_ts__log-0.4.27//:log", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.52.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.52.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:wasm32-wasip1": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(target_os = "wasi") + "@vendor_ts__libc-0.2.174//:libc", # cfg(target_os = "wasi") "@vendor_ts__wasi-0.11.0-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi") ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.52.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.0.0.bazel index 1b78caaf8944..2d42cdcc2149 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.0.0.bazel @@ -87,13 +87,13 @@ rust_library( version = "8.0.0", deps = [ "@vendor_ts__filetime-0.2.25//:filetime", - "@vendor_ts__libc-0.2.171//:libc", + "@vendor_ts__libc-0.2.174//:libc", "@vendor_ts__log-0.4.27//:log", "@vendor_ts__notify-types-2.0.0//:notify_types", "@vendor_ts__walkdir-2.5.0//:walkdir", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__bitflags-2.9.0//:bitflags", # cfg(target_os = "macos") + "@vendor_ts__bitflags-2.9.1//:bitflags", # cfg(target_os = "macos") "@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # aarch64-apple-darwin ], "@rules_rust//rust/platform:aarch64-apple-ios": [ @@ -132,7 +132,7 @@ rust_library( "@vendor_ts__mio-1.0.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__bitflags-2.9.0//:bitflags", # cfg(target_os = "macos") + "@vendor_ts__bitflags-2.9.1//:bitflags", # cfg(target_os = "macos") "@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # i686-apple-darwin ], "@rules_rust//rust/platform:i686-linux-android": [ @@ -159,7 +159,7 @@ rust_library( "@vendor_ts__mio-1.0.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__bitflags-2.9.0//:bitflags", # cfg(target_os = "macos") + "@vendor_ts__bitflags-2.9.1//:bitflags", # cfg(target_os = "macos") "@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # x86_64-apple-darwin ], "@rules_rust//rust/platform:x86_64-apple-ios": [ diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.16.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.16.0.bazel deleted file mode 100644 index 057e8dd6c636..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.16.0.bazel +++ /dev/null @@ -1,185 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "num_cpus", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=num_cpus", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "1.16.0", - deps = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:wasm32-wasip1": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:x86_64-unknown-none": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(not(windows)) - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.17.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.17.0.bazel new file mode 100644 index 000000000000..7af36eb0bf7e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.17.0.bazel @@ -0,0 +1,185 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "num_cpus", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2015", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=num_cpus", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.17.0", + deps = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:aarch64-linux-android": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:armv7-linux-androideabi": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:i686-linux-android": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:wasm32-wasip1": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:x86_64-unknown-none": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(not(windows)) + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel new file mode 100644 index 000000000000..95f7e39c15f7 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel @@ -0,0 +1,90 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ordered_float", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "std", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ordered-float", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "2.10.1", + deps = [ + "@vendor_ts__num-traits-0.2.19//:num_traits", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.0.0.bazel index ea9024c51ced..429c84ba0b86 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.0.0.bazel @@ -86,6 +86,6 @@ rust_library( }), version = "7.0.0", deps = [ - "@vendor_ts__memchr-2.7.4//:memchr", + "@vendor_ts__memchr-2.7.5//:memchr", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.10.bazel index ea6704cb1341..0ecb5f8d20d9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.10.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.10.bazel @@ -82,90 +82,90 @@ rust_library( }), version = "0.9.10", deps = [ - "@vendor_ts__cfg-if-1.0.0//:cfg_if", + "@vendor_ts__cfg-if-1.0.1//:cfg_if", "@vendor_ts__parking_lot_core-0.9.10//:build_script_build", - "@vendor_ts__smallvec-1.14.0//:smallvec", + "@vendor_ts__smallvec-1.15.1//:smallvec", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(windows) ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ "@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(windows) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ "@vendor_ts__windows-targets-0.52.6//:windows_targets", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel index d4a945c39ea6..4cdca3b43653 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel @@ -81,9 +81,9 @@ rust_proc_macro( }), version = "0.2.9", deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", "@vendor_ts__proc-macro2-diagnostics-0.10.1//:proc_macro2_diagnostics", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", + "@vendor_ts__syn-2.0.103//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.1.bazel new file mode 100644 index 000000000000..fdc7f4b8d86f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.1.bazel @@ -0,0 +1,87 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "percent_encoding", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "std", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=percent-encoding", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "2.3.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel index 4f084775990e..599061b71487 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel @@ -81,7 +81,7 @@ rust_library( }), version = "0.4.7", deps = [ - "@vendor_ts__libc-0.2.171//:libc", + "@vendor_ts__libc-0.2.174//:libc", "@vendor_ts__perf-event-open-sys-1.0.1//:perf_event_open_sys", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel index 1e4bd90b8ae8..dd2ae1f69bf3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel @@ -81,6 +81,6 @@ rust_library( }), version = "1.0.1", deps = [ - "@vendor_ts__libc-0.2.171//:libc", + "@vendor_ts__libc-0.2.174//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.2.bazel new file mode 100644 index 000000000000..33ae44b0bf47 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.2.bazel @@ -0,0 +1,89 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "potential_utf", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "zerovec", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=potential_utf", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.1.2", + deps = [ + "@vendor_ts__zerovec-0.11.2//:zerovec", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.94.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.94.bazel deleted file mode 100644 index c7bacd2430c4..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.94.bazel +++ /dev/null @@ -1,151 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_build_script") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "proc_macro2", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "proc-macro", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=proc-macro2", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "1.0.94", - deps = [ - "@vendor_ts__proc-macro2-1.0.94//:build_script_build", - "@vendor_ts__unicode-ident-1.0.17//:unicode_ident", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "proc-macro", - ], - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2021", - pkg_name = "proc-macro2", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=proc-macro2", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.0.94", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.95.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.95.bazel new file mode 100644 index 000000000000..4466b330c77e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.95.bazel @@ -0,0 +1,151 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "proc_macro2", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "proc-macro", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=proc-macro2", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.95", + deps = [ + "@vendor_ts__proc-macro2-1.0.95//:build_script_build", + "@vendor_ts__unicode-ident-1.0.17//:unicode_ident", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "proc-macro", + ], + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "proc-macro2", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=proc-macro2", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.95", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel index 3b05cf970419..39640ee37a55 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel @@ -87,10 +87,10 @@ rust_library( }), version = "0.10.1", deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", "@vendor_ts__proc-macro2-diagnostics-0.10.1//:build_script_build", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", + "@vendor_ts__syn-2.0.103//:syn", "@vendor_ts__yansi-1.0.1//:yansi", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.40.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.40.bazel index 927021d33315..8898a30228cb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.40.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.40.bazel @@ -85,6 +85,6 @@ rust_library( }), version = "1.0.40", deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.100.0.bazel deleted file mode 100644 index cc04b2be07d0..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.100.0.bazel +++ /dev/null @@ -1,93 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_rustc_abi", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra-ap-rustc_hashes-0.100.0//:ra_ap_rustc_hashes": "rustc_hashes", - "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index": "rustc_index", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra-ap-rustc_abi", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.100.0", - deps = [ - "@vendor_ts__bitflags-2.9.0//:bitflags", - "@vendor_ts__ra-ap-rustc_hashes-0.100.0//:ra_ap_rustc_hashes", - "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index", - "@vendor_ts__tracing-0.1.41//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.116.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.116.0.bazel new file mode 100644 index 000000000000..5c46fefc8be2 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.116.0.bazel @@ -0,0 +1,93 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_rustc_abi", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra-ap-rustc_hashes-0.116.0//:ra_ap_rustc_hashes": "rustc_hashes", + "@vendor_ts__ra-ap-rustc_index-0.116.0//:ra_ap_rustc_index": "rustc_index", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_abi", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.116.0", + deps = [ + "@vendor_ts__bitflags-2.9.1//:bitflags", + "@vendor_ts__ra-ap-rustc_hashes-0.116.0//:ra_ap_rustc_hashes", + "@vendor_ts__ra-ap-rustc_index-0.116.0//:ra_ap_rustc_index", + "@vendor_ts__tracing-0.1.41//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.100.0.bazel deleted file mode 100644 index 6be975644deb..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.100.0.bazel +++ /dev/null @@ -1,86 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_rustc_hashes", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra-ap-rustc_hashes", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.100.0", - deps = [ - "@vendor_ts__rustc-stable-hash-0.1.1//:rustc_stable_hash", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.116.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.116.0.bazel new file mode 100644 index 000000000000..2c21da8c43aa --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.116.0.bazel @@ -0,0 +1,86 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_rustc_hashes", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_hashes", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.116.0", + deps = [ + "@vendor_ts__rustc-stable-hash-0.1.1//:rustc_stable_hash", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.100.0.bazel deleted file mode 100644 index 65efb7c784ee..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.100.0.bazel +++ /dev/null @@ -1,92 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_rustc_index", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra-ap-rustc_index_macros-0.100.0//:ra_ap_rustc_index_macros": "rustc_index_macros", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - proc_macro_deps = [ - "@vendor_ts__ra-ap-rustc_index_macros-0.100.0//:ra_ap_rustc_index_macros", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra-ap-rustc_index", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.100.0", - deps = [ - "@vendor_ts__smallvec-1.14.0//:smallvec", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.116.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.116.0.bazel new file mode 100644 index 000000000000..4c9e6a2966db --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.116.0.bazel @@ -0,0 +1,92 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_rustc_index", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra-ap-rustc_index_macros-0.116.0//:ra_ap_rustc_index_macros": "rustc_index_macros", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__ra-ap-rustc_index_macros-0.116.0//:ra_ap_rustc_index_macros", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_index", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.116.0", + deps = [ + "@vendor_ts__smallvec-1.15.1//:smallvec", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.100.0.bazel deleted file mode 100644 index 63d0286a338d..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.100.0.bazel +++ /dev/null @@ -1,88 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -rust_proc_macro( - name = "ra_ap_rustc_index_macros", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra-ap-rustc_index_macros", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.100.0", - deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", - "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.116.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.116.0.bazel new file mode 100644 index 000000000000..7e4ec5d88a9d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.116.0.bazel @@ -0,0 +1,88 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "ra_ap_rustc_index_macros", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_index_macros", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.116.0", + deps = [ + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.103//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.100.0.bazel deleted file mode 100644 index 7c98b84f7fb6..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.100.0.bazel +++ /dev/null @@ -1,88 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_rustc_lexer", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra-ap-rustc_lexer", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.100.0", - deps = [ - "@vendor_ts__memchr-2.7.4//:memchr", - "@vendor_ts__unicode-properties-0.1.3//:unicode_properties", - "@vendor_ts__unicode-xid-0.2.6//:unicode_xid", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.116.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.116.0.bazel new file mode 100644 index 000000000000..41614a75b7f4 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.116.0.bazel @@ -0,0 +1,88 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_rustc_lexer", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_lexer", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.116.0", + deps = [ + "@vendor_ts__memchr-2.7.5//:memchr", + "@vendor_ts__unicode-properties-0.1.3//:unicode_properties", + "@vendor_ts__unicode-xid-0.2.6//:unicode_xid", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.100.0.bazel deleted file mode 100644 index 0cf50f5a2b8a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.100.0.bazel +++ /dev/null @@ -1,91 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_rustc_parse_format", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index": "rustc_index", - "@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer": "rustc_lexer", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra-ap-rustc_parse_format", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.100.0", - deps = [ - "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index", - "@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.116.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.116.0.bazel new file mode 100644 index 000000000000..c7306e8a7ed5 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.116.0.bazel @@ -0,0 +1,90 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_rustc_parse_format", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra-ap-rustc_lexer-0.116.0//:ra_ap_rustc_lexer": "rustc_lexer", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_parse_format", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.116.0", + deps = [ + "@vendor_ts__ra-ap-rustc_lexer-0.116.0//:ra_ap_rustc_lexer", + "@vendor_ts__rustc-literal-escaper-0.0.2//:rustc_literal_escaper", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.100.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.100.0.bazel deleted file mode 100644 index 3a7ef306f97f..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.100.0.bazel +++ /dev/null @@ -1,93 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_rustc_pattern_analysis", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index": "rustc_index", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra-ap-rustc_pattern_analysis", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.100.0", - deps = [ - "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__rustc_apfloat-0.2.2-llvm-462a31f5a5ab//:rustc_apfloat", - "@vendor_ts__smallvec-1.14.0//:smallvec", - "@vendor_ts__tracing-0.1.41//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.116.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.116.0.bazel new file mode 100644 index 000000000000..f4ffd21c6746 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.116.0.bazel @@ -0,0 +1,93 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_rustc_pattern_analysis", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra-ap-rustc_index-0.116.0//:ra_ap_rustc_index": "rustc_index", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_pattern_analysis", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.116.0", + deps = [ + "@vendor_ts__ra-ap-rustc_index-0.116.0//:ra_ap_rustc_index", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:rustc_apfloat", + "@vendor_ts__smallvec-1.15.1//:smallvec", + "@vendor_ts__tracing-0.1.41//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.273.bazel deleted file mode 100644 index fa7cec0dbb28..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.273.bazel +++ /dev/null @@ -1,108 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_base_db", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs": "vfs", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - proc_macro_deps = [ - "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_base_db", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__dashmap-5.5.3//:dashmap", - "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax", - "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__salsa-0.19.0//:salsa", - "@vendor_ts__semver-1.0.26//:semver", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.288.bazel new file mode 100644 index 000000000000..41eee11ea513 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.288.bazel @@ -0,0 +1,110 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_base_db", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_cfg-0.0.288//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_query-group-macro-0.0.288//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span": "span", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.288//:ra_ap_vfs": "vfs", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__ra_ap_query-group-macro-0.0.288//:ra_ap_query_group_macro", + "@vendor_ts__salsa-macros-0.22.0//:salsa_macros", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_base_db", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__dashmap-6.1.0//:dashmap", + "@vendor_ts__indexmap-2.9.0//:indexmap", + "@vendor_ts__la-arena-0.3.1//:la_arena", + "@vendor_ts__ra_ap_cfg-0.0.288//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.288//:ra_ap_vfs", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__salsa-0.22.0//:salsa", + "@vendor_ts__semver-1.0.26//:semver", + "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__triomphe-0.1.14//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.273.bazel deleted file mode 100644 index a80bffe20f96..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.273.bazel +++ /dev/null @@ -1,96 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_cfg", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "tt", - ], - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_cfg", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__tracing-0.1.41//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.288.bazel new file mode 100644 index 000000000000..825ae24a8237 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.288.bazel @@ -0,0 +1,96 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_cfg", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt": "tt", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "tt", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_cfg", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__tracing-0.1.41//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.273.bazel deleted file mode 100644 index 15381260d656..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.273.bazel +++ /dev/null @@ -1,83 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_edition", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_edition", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.288.bazel new file mode 100644 index 000000000000..c0bdb7f2461a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.288.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_edition", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_edition", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.273.bazel deleted file mode 100644 index 6bf6732bb069..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.273.bazel +++ /dev/null @@ -1,115 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_hir", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def": "hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_hir_ty-0.0.273//:ra_ap_hir_ty": "hir_ty", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_hir", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__either-1.15.0//:either", - "@vendor_ts__indexmap-2.9.0//:indexmap", - "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg", - "@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_hir_ty-0.0.273//:ra_ap_hir_ty", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__smallvec-1.14.0//:smallvec", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.288.bazel new file mode 100644 index 000000000000..72ba942959f2 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.288.bazel @@ -0,0 +1,115 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_hir", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.288//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_def-0.0.288//:ra_ap_hir_def": "hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.288//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_hir_ty-0.0.288//:ra_ap_hir_ty": "hir_ty", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt": "tt", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_hir", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__arrayvec-0.7.6//:arrayvec", + "@vendor_ts__either-1.15.0//:either", + "@vendor_ts__indexmap-2.9.0//:indexmap", + "@vendor_ts__itertools-0.14.0//:itertools", + "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.288//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_def-0.0.288//:ra_ap_hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.288//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_hir_ty-0.0.288//:ra_ap_hir_ty", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__smallvec-1.15.1//:smallvec", + "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__triomphe-0.1.14//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.273.bazel deleted file mode 100644 index 2e483df01ff8..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.273.bazel +++ /dev/null @@ -1,128 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_hir_def", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_mbe-0.0.273//:ra_ap_mbe": "mbe", - "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - proc_macro_deps = [ - "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_hir_def", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.9.0//:bitflags", - "@vendor_ts__cov-mark-2.0.0//:cov_mark", - "@vendor_ts__drop_bomb-0.1.5//:drop_bomb", - "@vendor_ts__either-1.15.0//:either", - "@vendor_ts__fst-0.4.7//:fst", - "@vendor_ts__indexmap-2.9.0//:indexmap", - "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__ra-ap-rustc_abi-0.100.0//:ra_ap_rustc_abi", - "@vendor_ts__ra-ap-rustc_parse_format-0.100.0//:ra_ap_rustc_parse_format", - "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg", - "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", - "@vendor_ts__ra_ap_mbe-0.0.273//:ra_ap_mbe", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__rustc_apfloat-0.2.2-llvm-462a31f5a5ab//:rustc_apfloat", - "@vendor_ts__salsa-0.19.0//:salsa", - "@vendor_ts__smallvec-1.14.0//:smallvec", - "@vendor_ts__text-size-1.1.1//:text_size", - "@vendor_ts__thin-vec-0.2.14//:thin_vec", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.288.bazel new file mode 100644 index 000000000000..1e3a2a50bf8e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.288.bazel @@ -0,0 +1,129 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_hir_def", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.288//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.288//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_mbe-0.0.288//:ra_ap_mbe": "mbe", + "@vendor_ts__ra_ap_query-group-macro-0.0.288//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt": "tt", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__ra_ap_query-group-macro-0.0.288//:ra_ap_query_group_macro", + "@vendor_ts__salsa-macros-0.22.0//:salsa_macros", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_hir_def", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__arrayvec-0.7.6//:arrayvec", + "@vendor_ts__bitflags-2.9.1//:bitflags", + "@vendor_ts__cov-mark-2.0.0//:cov_mark", + "@vendor_ts__drop_bomb-0.1.5//:drop_bomb", + "@vendor_ts__either-1.15.0//:either", + "@vendor_ts__fst-0.4.7//:fst", + "@vendor_ts__indexmap-2.9.0//:indexmap", + "@vendor_ts__itertools-0.14.0//:itertools", + "@vendor_ts__la-arena-0.3.1//:la_arena", + "@vendor_ts__ra-ap-rustc_abi-0.116.0//:ra_ap_rustc_abi", + "@vendor_ts__ra-ap-rustc_parse_format-0.116.0//:ra_ap_rustc_parse_format", + "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.288//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.288//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", + "@vendor_ts__ra_ap_mbe-0.0.288//:ra_ap_mbe", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:rustc_apfloat", + "@vendor_ts__salsa-0.22.0//:salsa", + "@vendor_ts__smallvec-1.15.1//:smallvec", + "@vendor_ts__text-size-1.1.1//:text_size", + "@vendor_ts__thin-vec-0.2.14//:thin_vec", + "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__triomphe-0.1.14//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.273.bazel deleted file mode 100644 index 3bd7c5b7cd56..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.273.bazel +++ /dev/null @@ -1,119 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_hir_expand", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_mbe-0.0.273//:ra_ap_mbe": "mbe", - "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_syntax-bridge-0.0.273//:ra_ap_syntax_bridge": "syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - proc_macro_deps = [ - "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_hir_expand", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__cov-mark-2.0.0//:cov_mark", - "@vendor_ts__either-1.15.0//:either", - "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", - "@vendor_ts__ra_ap_mbe-0.0.273//:ra_ap_mbe", - "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax", - "@vendor_ts__ra_ap_syntax-bridge-0.0.273//:ra_ap_syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__salsa-0.19.0//:salsa", - "@vendor_ts__smallvec-1.14.0//:smallvec", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.288.bazel new file mode 100644 index 000000000000..e3ef7c1e5090 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.288.bazel @@ -0,0 +1,120 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_hir_expand", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.288//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_mbe-0.0.288//:ra_ap_mbe": "mbe", + "@vendor_ts__ra_ap_parser-0.0.288//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_query-group-macro-0.0.288//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.288//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt": "tt", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__ra_ap_query-group-macro-0.0.288//:ra_ap_query_group_macro", + "@vendor_ts__salsa-macros-0.22.0//:salsa_macros", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_hir_expand", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__cov-mark-2.0.0//:cov_mark", + "@vendor_ts__either-1.15.0//:either", + "@vendor_ts__itertools-0.14.0//:itertools", + "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.288//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", + "@vendor_ts__ra_ap_mbe-0.0.288//:ra_ap_mbe", + "@vendor_ts__ra_ap_parser-0.0.288//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.288//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__salsa-0.22.0//:salsa", + "@vendor_ts__smallvec-1.15.1//:smallvec", + "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__triomphe-0.1.14//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.273.bazel deleted file mode 100644 index a2488ef3be60..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.273.bazel +++ /dev/null @@ -1,129 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_hir_ty", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def": "hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - proc_macro_deps = [ - "@vendor_ts__chalk-derive-0.100.0//:chalk_derive", - "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_hir_ty", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.9.0//:bitflags", - "@vendor_ts__chalk-ir-0.100.0//:chalk_ir", - "@vendor_ts__chalk-recursive-0.100.0//:chalk_recursive", - "@vendor_ts__chalk-solve-0.100.0//:chalk_solve", - "@vendor_ts__cov-mark-2.0.0//:cov_mark", - "@vendor_ts__either-1.15.0//:either", - "@vendor_ts__ena-0.14.3//:ena", - "@vendor_ts__indexmap-2.9.0//:indexmap", - "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__oorandom-11.1.5//:oorandom", - "@vendor_ts__ra-ap-rustc_abi-0.100.0//:ra_ap_rustc_abi", - "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index", - "@vendor_ts__ra-ap-rustc_pattern_analysis-0.100.0//:ra_ap_rustc_pattern_analysis", - "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db", - "@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__rustc_apfloat-0.2.2-llvm-462a31f5a5ab//:rustc_apfloat", - "@vendor_ts__salsa-0.19.0//:salsa", - "@vendor_ts__scoped-tls-1.0.1//:scoped_tls", - "@vendor_ts__smallvec-1.14.0//:smallvec", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", - "@vendor_ts__typed-arena-2.0.2//:typed_arena", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.288.bazel new file mode 100644 index 000000000000..443f9de8a471 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.288.bazel @@ -0,0 +1,130 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_hir_ty", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_hir_def-0.0.288//:ra_ap_hir_def": "hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.288//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_query-group-macro-0.0.288//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax": "syntax", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__chalk-derive-0.103.0//:chalk_derive", + "@vendor_ts__ra_ap_query-group-macro-0.0.288//:ra_ap_query_group_macro", + "@vendor_ts__salsa-macros-0.22.0//:salsa_macros", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_hir_ty", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__arrayvec-0.7.6//:arrayvec", + "@vendor_ts__bitflags-2.9.1//:bitflags", + "@vendor_ts__chalk-ir-0.103.0//:chalk_ir", + "@vendor_ts__chalk-recursive-0.103.0//:chalk_recursive", + "@vendor_ts__chalk-solve-0.103.0//:chalk_solve", + "@vendor_ts__cov-mark-2.0.0//:cov_mark", + "@vendor_ts__either-1.15.0//:either", + "@vendor_ts__ena-0.14.3//:ena", + "@vendor_ts__indexmap-2.9.0//:indexmap", + "@vendor_ts__itertools-0.14.0//:itertools", + "@vendor_ts__la-arena-0.3.1//:la_arena", + "@vendor_ts__oorandom-11.1.5//:oorandom", + "@vendor_ts__ra-ap-rustc_abi-0.116.0//:ra_ap_rustc_abi", + "@vendor_ts__ra-ap-rustc_index-0.116.0//:ra_ap_rustc_index", + "@vendor_ts__ra-ap-rustc_pattern_analysis-0.116.0//:ra_ap_rustc_pattern_analysis", + "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db", + "@vendor_ts__ra_ap_hir_def-0.0.288//:ra_ap_hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.288//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:rustc_apfloat", + "@vendor_ts__salsa-0.22.0//:salsa", + "@vendor_ts__scoped-tls-1.0.1//:scoped_tls", + "@vendor_ts__smallvec-1.15.1//:smallvec", + "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__triomphe-0.1.14//:triomphe", + "@vendor_ts__typed-arena-2.0.2//:typed_arena", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.273.bazel deleted file mode 100644 index e37410620227..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.273.bazel +++ /dev/null @@ -1,123 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_ide_db", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_hir-0.0.273//:ra_ap_hir": "hir", - "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_profile-0.0.273//:ra_ap_profile": "profile", - "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs": "vfs", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - proc_macro_deps = [ - "@vendor_ts__ra_ap_query-group-macro-0.0.273//:ra_ap_query_group_macro", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_ide_db", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.9.0//:bitflags", - "@vendor_ts__cov-mark-2.0.0//:cov_mark", - "@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel", - "@vendor_ts__either-1.15.0//:either", - "@vendor_ts__fst-0.4.7//:fst", - "@vendor_ts__indexmap-2.9.0//:indexmap", - "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__line-index-0.1.2//:line_index", - "@vendor_ts__memchr-2.7.4//:memchr", - "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", - "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db", - "@vendor_ts__ra_ap_hir-0.0.273//:ra_ap_hir", - "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser", - "@vendor_ts__ra_ap_profile-0.0.273//:ra_ap_profile", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax", - "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs", - "@vendor_ts__rayon-1.10.0//:rayon", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__salsa-0.19.0//:salsa", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.288.bazel new file mode 100644 index 000000000000..fab14c00d3c1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.288.bazel @@ -0,0 +1,124 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_ide_db", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_hir-0.0.288//:ra_ap_hir": "hir", + "@vendor_ts__ra_ap_parser-0.0.288//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_profile-0.0.288//:ra_ap_profile": "profile", + "@vendor_ts__ra_ap_query-group-macro-0.0.288//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.288//:ra_ap_vfs": "vfs", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__ra_ap_query-group-macro-0.0.288//:ra_ap_query_group_macro", + "@vendor_ts__salsa-macros-0.22.0//:salsa_macros", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_ide_db", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__arrayvec-0.7.6//:arrayvec", + "@vendor_ts__bitflags-2.9.1//:bitflags", + "@vendor_ts__cov-mark-2.0.0//:cov_mark", + "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", + "@vendor_ts__either-1.15.0//:either", + "@vendor_ts__fst-0.4.7//:fst", + "@vendor_ts__indexmap-2.9.0//:indexmap", + "@vendor_ts__itertools-0.14.0//:itertools", + "@vendor_ts__line-index-0.1.2//:line_index", + "@vendor_ts__memchr-2.7.5//:memchr", + "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", + "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db", + "@vendor_ts__ra_ap_hir-0.0.288//:ra_ap_hir", + "@vendor_ts__ra_ap_parser-0.0.288//:ra_ap_parser", + "@vendor_ts__ra_ap_profile-0.0.288//:ra_ap_profile", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.288//:ra_ap_vfs", + "@vendor_ts__rayon-1.10.0//:rayon", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__salsa-0.22.0//:salsa", + "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__triomphe-0.1.14//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.273.bazel deleted file mode 100644 index 72e7580e4163..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.273.bazel +++ /dev/null @@ -1,89 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_intern", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_intern", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__dashmap-5.5.3//:dashmap", - "@vendor_ts__hashbrown-0.14.5//:hashbrown", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__triomphe-0.1.14//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.288.bazel new file mode 100644 index 000000000000..69f6bc0b61d0 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.288.bazel @@ -0,0 +1,89 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_intern", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_intern", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__dashmap-6.1.0//:dashmap", + "@vendor_ts__hashbrown-0.14.5//:hashbrown", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__triomphe-0.1.14//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.273.bazel deleted file mode 100644 index c9b5273ee2b5..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.273.bazel +++ /dev/null @@ -1,109 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_load_cargo", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_ide_db-0.0.273//:ra_ap_ide_db": "ide_db", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_proc_macro_api-0.0.273//:ra_ap_proc_macro_api": "proc_macro_api", - "@vendor_ts__ra_ap_project_model-0.0.273//:ra_ap_project_model": "project_model", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt", - "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs": "vfs", - "@vendor_ts__ra_ap_vfs-notify-0.0.273//:ra_ap_vfs_notify": "vfs_notify", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_load-cargo", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__anyhow-1.0.97//:anyhow", - "@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel", - "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_ide_db-0.0.273//:ra_ap_ide_db", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", - "@vendor_ts__ra_ap_proc_macro_api-0.0.273//:ra_ap_proc_macro_api", - "@vendor_ts__ra_ap_project_model-0.0.273//:ra_ap_project_model", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt", - "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs", - "@vendor_ts__ra_ap_vfs-notify-0.0.273//:ra_ap_vfs_notify", - "@vendor_ts__tracing-0.1.41//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.288.bazel new file mode 100644 index 000000000000..ddd508c16ac9 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.288.bazel @@ -0,0 +1,109 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_load_cargo", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_hir_expand-0.0.288//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_ide_db-0.0.288//:ra_ap_ide_db": "ide_db", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_proc_macro_api-0.0.288//:ra_ap_proc_macro_api": "proc_macro_api", + "@vendor_ts__ra_ap_project_model-0.0.288//:ra_ap_project_model": "project_model", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span": "span", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_vfs-0.0.288//:ra_ap_vfs": "vfs", + "@vendor_ts__ra_ap_vfs-notify-0.0.288//:ra_ap_vfs_notify": "vfs_notify", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_load-cargo", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__anyhow-1.0.98//:anyhow", + "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", + "@vendor_ts__itertools-0.14.0//:itertools", + "@vendor_ts__ra_ap_hir_expand-0.0.288//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_ide_db-0.0.288//:ra_ap_ide_db", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", + "@vendor_ts__ra_ap_proc_macro_api-0.0.288//:ra_ap_proc_macro_api", + "@vendor_ts__ra_ap_project_model-0.0.288//:ra_ap_project_model", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt", + "@vendor_ts__ra_ap_vfs-0.0.288//:ra_ap_vfs", + "@vendor_ts__ra_ap_vfs-notify-0.0.288//:ra_ap_vfs_notify", + "@vendor_ts__tracing-0.1.41//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.273.bazel deleted file mode 100644 index 635c79e43f30..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.273.bazel +++ /dev/null @@ -1,104 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_mbe", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-bridge-0.0.273//:ra_ap_syntax_bridge": "syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_mbe", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__cov-mark-2.0.0//:cov_mark", - "@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", - "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-bridge-0.0.273//:ra_ap_syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__smallvec-1.14.0//:smallvec", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.288.bazel new file mode 100644 index 000000000000..407345db7b95 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.288.bazel @@ -0,0 +1,104 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_mbe", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_parser-0.0.288//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-bridge-0.0.288//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt": "tt", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_mbe", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__arrayvec-0.7.6//:arrayvec", + "@vendor_ts__cov-mark-2.0.0//:cov_mark", + "@vendor_ts__ra-ap-rustc_lexer-0.116.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", + "@vendor_ts__ra_ap_parser-0.0.288//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-bridge-0.0.288//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__smallvec-1.15.1//:smallvec", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.273.bazel deleted file mode 100644 index 0c1ca867e3d1..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.273.bazel +++ /dev/null @@ -1,96 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_parser", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_edition-0.0.273//:ra_ap_edition": "edition", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "tracing", - ], - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_parser", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__drop_bomb-0.1.5//:drop_bomb", - "@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_edition-0.0.273//:ra_ap_edition", - "@vendor_ts__tracing-0.1.41//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.288.bazel new file mode 100644 index 000000000000..6ba1bc52d66f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.288.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_parser", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_edition-0.0.288//:ra_ap_edition": "edition", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "tracing", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_parser", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__drop_bomb-0.1.5//:drop_bomb", + "@vendor_ts__ra-ap-rustc_lexer-0.116.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_edition-0.0.288//:ra_ap_edition", + "@vendor_ts__rustc-literal-escaper-0.0.3//:rustc_literal_escaper", + "@vendor_ts__tracing-0.1.41//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.273.bazel deleted file mode 100644 index fb0f90b42480..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.273.bazel +++ /dev/null @@ -1,89 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_paths", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "serde1", - ], - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_paths", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__camino-1.1.9//:camino", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.288.bazel new file mode 100644 index 000000000000..402e2decfafc --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.288.bazel @@ -0,0 +1,89 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_paths", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "serde1", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_paths", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__camino-1.1.10//:camino", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.273.bazel deleted file mode 100644 index bdb33ce1a793..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.273.bazel +++ /dev/null @@ -1,105 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_proc_macro_api", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.219//:serde_derive", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_proc_macro_api", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__indexmap-2.9.0//:indexmap", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", - "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__serde-1.0.219//:serde", - "@vendor_ts__serde_json-1.0.140//:serde_json", - "@vendor_ts__tracing-0.1.41//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.288.bazel new file mode 100644 index 000000000000..9fb6f0751c17 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.288.bazel @@ -0,0 +1,105 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_proc_macro_api", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.288//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt": "tt", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__serde_derive-1.0.219//:serde_derive", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_proc_macro_api", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__indexmap-2.9.0//:indexmap", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.288//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__serde_json-1.0.140//:serde_json", + "@vendor_ts__tracing-0.1.41//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.273.bazel deleted file mode 100644 index 6e1af1c0010b..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.273.bazel +++ /dev/null @@ -1,133 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_profile", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_profile", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__cfg-if-1.0.0//:cfg_if", - ] + select({ - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.288.bazel new file mode 100644 index 000000000000..a963209b7a65 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.288.bazel @@ -0,0 +1,133 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_profile", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_profile", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__cfg-if-1.0.1//:cfg_if", + ] + select({ + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.273.bazel deleted file mode 100644 index cb1f3a56a143..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.273.bazel +++ /dev/null @@ -1,114 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_project_model", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_toolchain-0.0.273//:ra_ap_toolchain": "toolchain", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.219//:serde_derive", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_project_model", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__anyhow-1.0.97//:anyhow", - "@vendor_ts__cargo_metadata-0.19.2//:cargo_metadata", - "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", - "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__ra_ap_toolchain-0.0.273//:ra_ap_toolchain", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__semver-1.0.26//:semver", - "@vendor_ts__serde-1.0.219//:serde", - "@vendor_ts__serde_json-1.0.140//:serde_json", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.288.bazel new file mode 100644 index 000000000000..0351712c3394 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.288.bazel @@ -0,0 +1,114 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_project_model", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.288//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.288//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_toolchain-0.0.288//:ra_ap_toolchain": "toolchain", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__serde_derive-1.0.219//:serde_derive", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_project_model", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__anyhow-1.0.98//:anyhow", + "@vendor_ts__cargo_metadata-0.20.0//:cargo_metadata", + "@vendor_ts__itertools-0.14.0//:itertools", + "@vendor_ts__la-arena-0.3.1//:la_arena", + "@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.288//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.288//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__ra_ap_toolchain-0.0.288//:ra_ap_toolchain", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__semver-1.0.26//:semver", + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__serde_json-1.0.140//:serde_json", + "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__triomphe-0.1.14//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.273.bazel deleted file mode 100644 index 394f5e421ac1..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.273.bazel +++ /dev/null @@ -1,88 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -rust_proc_macro( - name = "ra_ap_query_group_macro", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_query-group-macro", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", - "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.288.bazel new file mode 100644 index 000000000000..6563add5373d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.288.bazel @@ -0,0 +1,88 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "ra_ap_query_group_macro", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_query-group-macro", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.103//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.273.bazel deleted file mode 100644 index 15f74141c034..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.273.bazel +++ /dev/null @@ -1,102 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_span", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs": "vfs", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "salsa", - ], - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_span", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__hashbrown-0.14.5//:hashbrown", - "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax", - "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__salsa-0.19.0//:salsa", - "@vendor_ts__text-size-1.1.1//:text_size", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.288.bazel new file mode 100644 index 000000000000..e2827261e116 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.288.bazel @@ -0,0 +1,102 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_span", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.288//:ra_ap_vfs": "vfs", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "salsa", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_span", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__hashbrown-0.14.5//:hashbrown", + "@vendor_ts__la-arena-0.3.1//:la_arena", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.288//:ra_ap_vfs", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__salsa-0.22.0//:salsa", + "@vendor_ts__text-size-1.1.1//:text_size", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.273.bazel deleted file mode 100644 index baf4d1942a4d..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.273.bazel +++ /dev/null @@ -1,175 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_stdx", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_stdx", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel", - "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__jod-thread-0.1.2//:jod_thread", - "@vendor_ts__tracing-0.1.41//:tracing", - ] + select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__miow-0.6.0//:miow", # cfg(windows) - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) - ], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__miow-0.6.0//:miow", # cfg(windows) - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) - ], - "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__miow-0.6.0//:miow", # cfg(windows) - "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.171//:libc", # cfg(unix) - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.288.bazel new file mode 100644 index 000000000000..5005ca6a9d70 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.288.bazel @@ -0,0 +1,176 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_stdx", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_stdx", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", + "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", + "@vendor_ts__itertools-0.14.0//:itertools", + "@vendor_ts__jod-thread-1.0.0//:jod_thread", + "@vendor_ts__tracing-0.1.41//:tracing", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-linux-android": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "@vendor_ts__miow-0.6.0//:miow", # cfg(windows) + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:armv7-linux-androideabi": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-linux-android": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__miow-0.6.0//:miow", # cfg(windows) + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__miow-0.6.0//:miow", # cfg(windows) + "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.174//:libc", # cfg(unix) + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.273.bazel deleted file mode 100644 index 8555bc6b119b..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.273.bazel +++ /dev/null @@ -1,100 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_syntax", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_syntax", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__either-1.15.0//:either", - "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__rowan-0.15.15//:rowan", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__smol_str-0.3.2//:smol_str", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", - ], -) -exports_files(["rust.ungram"]) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.288.bazel new file mode 100644 index 000000000000..1fab1741dba4 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.288.bazel @@ -0,0 +1,100 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_syntax", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_parser-0.0.288//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_syntax", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__either-1.15.0//:either", + "@vendor_ts__itertools-0.14.0//:itertools", + "@vendor_ts__ra_ap_parser-0.0.288//:ra_ap_parser", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__rowan-0.15.15//:rowan", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__rustc-literal-escaper-0.0.3//:rustc_literal_escaper", + "@vendor_ts__smol_str-0.3.2//:smol_str", + "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__triomphe-0.1.14//:triomphe", + ], +) +exports_files(["rust.ungram"]) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.273.bazel deleted file mode 100644 index 959cd8c47346..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.273.bazel +++ /dev/null @@ -1,100 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_syntax_bridge", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt": "tt", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_syntax-bridge", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", - "@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser", - "@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax", - "@vendor_ts__ra_ap_tt-0.0.273//:ra_ap_tt", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.288.bazel new file mode 100644 index 000000000000..06a9e6c70aad --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.288.bazel @@ -0,0 +1,100 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_syntax_bridge", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_parser-0.0.288//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt": "tt", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_syntax-bridge", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", + "@vendor_ts__ra_ap_parser-0.0.288//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.288//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.273.bazel deleted file mode 100644 index 211a787f67f3..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.273.bazel +++ /dev/null @@ -1,87 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_toolchain", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_toolchain", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__camino-1.1.9//:camino", - "@vendor_ts__home-0.5.11//:home", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.288.bazel new file mode 100644 index 000000000000..34ec9cd3f30e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.288.bazel @@ -0,0 +1,87 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_toolchain", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_toolchain", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__camino-1.1.10//:camino", + "@vendor_ts__home-0.5.11//:home", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.273.bazel deleted file mode 100644 index 1059e91496cd..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.273.bazel +++ /dev/null @@ -1,94 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_tt", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_tt", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__text-size-1.1.1//:text_size", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.288.bazel new file mode 100644 index 000000000000..6565969411c5 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.288.bazel @@ -0,0 +1,94 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_tt", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_tt", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__arrayvec-0.7.6//:arrayvec", + "@vendor_ts__ra-ap-rustc_lexer-0.116.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__text-size-1.1.1//:text_size", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.273.bazel deleted file mode 100644 index 7213c9199cdf..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.273.bazel +++ /dev/null @@ -1,97 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_vfs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_vfs", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel", - "@vendor_ts__fst-0.4.7//:fst", - "@vendor_ts__indexmap-2.9.0//:indexmap", - "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", - "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__tracing-0.1.41//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.288.bazel new file mode 100644 index 000000000000..644f31160cd5 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.288.bazel @@ -0,0 +1,97 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_vfs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_paths-0.0.288//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_vfs", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", + "@vendor_ts__fst-0.4.7//:fst", + "@vendor_ts__indexmap-2.9.0//:indexmap", + "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", + "@vendor_ts__ra_ap_paths-0.0.288//:ra_ap_paths", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__tracing-0.1.41//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.273.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.273.bazel deleted file mode 100644 index 33a5d195f846..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.273.bazel +++ /dev/null @@ -1,99 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "ra_ap_vfs_notify", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs": "vfs", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2024", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_vfs-notify", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.0.273", - deps = [ - "@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel", - "@vendor_ts__notify-8.0.0//:notify", - "@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths", - "@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx", - "@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs", - "@vendor_ts__rayon-1.10.0//:rayon", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__walkdir-2.5.0//:walkdir", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.288.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.288.bazel new file mode 100644 index 000000000000..16fcf42360d8 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.288.bazel @@ -0,0 +1,99 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ra_ap_vfs_notify", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_paths-0.0.288//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_vfs-0.0.288//:ra_ap_vfs": "vfs", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_vfs-notify", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.288", + deps = [ + "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", + "@vendor_ts__notify-8.0.0//:notify", + "@vendor_ts__ra_ap_paths-0.0.288//:ra_ap_paths", + "@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx", + "@vendor_ts__ra_ap_vfs-0.0.288//:ra_ap_vfs", + "@vendor_ts__rayon-1.10.0//:rayon", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__walkdir-2.5.0//:walkdir", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.0.bazel deleted file mode 100644 index 9dc571cda9a3..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.0.bazel +++ /dev/null @@ -1,97 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "rand", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "alloc", - "default", - "os_rng", - "small_rng", - "std", - "std_rng", - "thread_rng", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=rand", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.9.0", - deps = [ - "@vendor_ts__rand_chacha-0.9.0//:rand_chacha", - "@vendor_ts__rand_core-0.9.2//:rand_core", - "@vendor_ts__zerocopy-0.8.20//:zerocopy", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.1.bazel new file mode 100644 index 000000000000..0489a607dcc2 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.1.bazel @@ -0,0 +1,96 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "rand", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "default", + "os_rng", + "small_rng", + "std", + "std_rng", + "thread_rng", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=rand", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.9.1", + deps = [ + "@vendor_ts__rand_chacha-0.9.0//:rand_chacha", + "@vendor_ts__rand_core-0.9.2//:rand_core", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.8.bazel index db9267bd12e3..e7e3f80495df 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.8.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.8.bazel @@ -81,6 +81,6 @@ rust_library( }), version = "0.5.8", deps = [ - "@vendor_ts__bitflags-2.9.0//:bitflags", + "@vendor_ts__bitflags-2.9.1//:bitflags", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.24.bazel new file mode 100644 index 000000000000..e517f976ad3d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.24.bazel @@ -0,0 +1,145 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "ref_cast", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__ref-cast-impl-1.0.24//:ref_cast_impl", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ref-cast", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.24", + deps = [ + "@vendor_ts__ref-cast-1.0.24//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "ref-cast", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ref-cast", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.24", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel new file mode 100644 index 000000000000..9b5797483ab3 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel @@ -0,0 +1,88 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "ref_cast_impl", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ref-cast-impl", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.24", + deps = [ + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.103//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.1.bazel index 0399f3132c64..7de7f698bd6d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.1.bazel @@ -101,7 +101,7 @@ rust_library( version = "1.11.1", deps = [ "@vendor_ts__aho-corasick-1.1.3//:aho_corasick", - "@vendor_ts__memchr-2.7.4//:memchr", + "@vendor_ts__memchr-2.7.5//:memchr", "@vendor_ts__regex-automata-0.4.9//:regex_automata", "@vendor_ts__regex-syntax-0.8.5//:regex_syntax", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.9.bazel index 02062f8053c7..56e895f026ce 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.9.bazel @@ -108,7 +108,7 @@ rust_library( version = "0.4.9", deps = [ "@vendor_ts__aho-corasick-1.1.3//:aho_corasick", - "@vendor_ts__memchr-2.7.4//:memchr", + "@vendor_ts__memchr-2.7.5//:memchr", "@vendor_ts__regex-syntax-0.8.5//:regex_syntax", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.2.bazel new file mode 100644 index 000000000000..280e35dd6327 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.2.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "rustc_literal_escaper", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=rustc-literal-escaper", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.2", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.3.bazel new file mode 100644 index 000000000000..cc9e8257f7b0 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.3.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "rustc_literal_escaper", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=rustc-literal-escaper", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.3", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.2+llvm-462a31f5a5ab.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.2+llvm-462a31f5a5ab.bazel deleted file mode 100644 index feeb8d3cda4b..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.2+llvm-462a31f5a5ab.bazel +++ /dev/null @@ -1,144 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_build_script") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "rustc_apfloat", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=rustc_apfloat", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.2.2+llvm-462a31f5a5ab", - deps = [ - "@vendor_ts__bitflags-2.9.0//:bitflags", - "@vendor_ts__rustc_apfloat-0.2.2-llvm-462a31f5a5ab//:build_script_build", - "@vendor_ts__smallvec-1.14.0//:smallvec", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_name = "build_script_build", - crate_root = "build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2021", - pkg_name = "rustc_apfloat", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=rustc_apfloat", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.2.2+llvm-462a31f5a5ab", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel new file mode 100644 index 000000000000..7f9f680e3069 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel @@ -0,0 +1,144 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "rustc_apfloat", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=rustc_apfloat", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.2.3+llvm-462a31f5a5ab", + deps = [ + "@vendor_ts__bitflags-2.9.1//:bitflags", + "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:build_script_build", + "@vendor_ts__smallvec-1.15.1//:smallvec", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "rustc_apfloat", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=rustc_apfloat", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.2.3+llvm-462a31f5a5ab", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.20.bazel deleted file mode 100644 index dc9ff46207de..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.20.bazel +++ /dev/null @@ -1,142 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//cargo:defs.bzl", "cargo_build_script") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -rust_proc_macro( - name = "rustversion", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=rustversion", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "1.0.20", - deps = [ - "@vendor_ts__rustversion-1.0.20//:build_script_build", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - "**/*.rs", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_name = "build_script_build", - crate_root = "build/build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2018", - pkg_name = "rustversion", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=rustversion", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.0.20", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.19.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.19.0.bazel deleted file mode 100644 index 6018cc9f4911..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.19.0.bazel +++ /dev/null @@ -1,107 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "salsa", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "macros", - "rayon", - "salsa_unstable", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__salsa-macros-0.19.0//:salsa_macros", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=salsa", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.19.0", - deps = [ - "@vendor_ts__boxcar-0.2.11//:boxcar", - "@vendor_ts__crossbeam-queue-0.3.12//:crossbeam_queue", - "@vendor_ts__dashmap-6.1.0//:dashmap", - "@vendor_ts__hashbrown-0.15.2//:hashbrown", - "@vendor_ts__hashlink-0.10.0//:hashlink", - "@vendor_ts__indexmap-2.9.0//:indexmap", - "@vendor_ts__parking_lot-0.12.3//:parking_lot", - "@vendor_ts__portable-atomic-1.11.0//:portable_atomic", - "@vendor_ts__rayon-1.10.0//:rayon", - "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__salsa-macro-rules-0.19.0//:salsa_macro_rules", - "@vendor_ts__smallvec-1.14.0//:smallvec", - "@vendor_ts__tracing-0.1.41//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.22.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.22.0.bazel new file mode 100644 index 000000000000..e4d2825b88b1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.22.0.bazel @@ -0,0 +1,108 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "salsa", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "macros", + "rayon", + "salsa_unstable", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__salsa-macros-0.22.0//:salsa_macros", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=salsa", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.22.0", + deps = [ + "@vendor_ts__boxcar-0.2.13//:boxcar", + "@vendor_ts__crossbeam-queue-0.3.12//:crossbeam_queue", + "@vendor_ts__dashmap-6.1.0//:dashmap", + "@vendor_ts__hashbrown-0.15.2//:hashbrown", + "@vendor_ts__hashlink-0.10.0//:hashlink", + "@vendor_ts__indexmap-2.9.0//:indexmap", + "@vendor_ts__parking_lot-0.12.3//:parking_lot", + "@vendor_ts__portable-atomic-1.11.0//:portable_atomic", + "@vendor_ts__rayon-1.10.0//:rayon", + "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__salsa-macro-rules-0.22.0//:salsa_macro_rules", + "@vendor_ts__smallvec-1.15.1//:smallvec", + "@vendor_ts__thin-vec-0.2.14//:thin_vec", + "@vendor_ts__tracing-0.1.41//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.19.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.19.0.bazel deleted file mode 100644 index 1f1b43e02bc5..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.19.0.bazel +++ /dev/null @@ -1,83 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "salsa_macro_rules", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=salsa-macro-rules", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.19.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.22.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.22.0.bazel new file mode 100644 index 000000000000..26f7161efefc --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.22.0.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "salsa_macro_rules", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=salsa-macro-rules", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.22.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.19.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.19.0.bazel deleted file mode 100644 index 20b30ab306b2..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.19.0.bazel +++ /dev/null @@ -1,90 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -rust_proc_macro( - name = "salsa_macros", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=salsa-macros", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.19.0", - deps = [ - "@vendor_ts__heck-0.5.0//:heck", - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", - "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", - "@vendor_ts__synstructure-0.13.1//:synstructure", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.22.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.22.0.bazel new file mode 100644 index 000000000000..6e7c245e56df --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.22.0.bazel @@ -0,0 +1,90 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "salsa_macros", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=salsa-macros", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.22.0", + deps = [ + "@vendor_ts__heck-0.5.0//:heck", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.103//:syn", + "@vendor_ts__synstructure-0.13.1//:synstructure", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-0.9.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-0.9.0.bazel new file mode 100644 index 000000000000..ee2aee6f8c1b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-0.9.0.bazel @@ -0,0 +1,89 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "schemars", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=schemars", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.9.0", + deps = [ + "@vendor_ts__dyn-clone-1.0.19//:dyn_clone", + "@vendor_ts__ref-cast-1.0.24//:ref_cast", + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__serde_json-1.0.140//:serde_json", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.7.bazel new file mode 100644 index 000000000000..2785cb20382e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.7.bazel @@ -0,0 +1,88 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "serde_untagged", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=serde-untagged", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.1.7", + deps = [ + "@vendor_ts__erased-serde-0.4.6//:erased_serde", + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__typeid-1.0.3//:typeid", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel new file mode 100644 index 000000000000..d9e7c56d2844 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel @@ -0,0 +1,87 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "serde_value", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=serde-value", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.7.0", + deps = [ + "@vendor_ts__ordered-float-2.10.1//:ordered_float", + "@vendor_ts__serde-1.0.219//:serde", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.219.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.219.bazel index 6d385b05daab..e2000b886180 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.219.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.219.bazel @@ -84,8 +84,8 @@ rust_proc_macro( }), version = "1.0.219", deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", + "@vendor_ts__syn-2.0.103//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.140.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.140.bazel index 82dde7080ad9..62844bd53eab 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.140.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.140.bazel @@ -88,7 +88,7 @@ rust_library( version = "1.0.140", deps = [ "@vendor_ts__itoa-1.0.15//:itoa", - "@vendor_ts__memchr-2.7.4//:memchr", + "@vendor_ts__memchr-2.7.5//:memchr", "@vendor_ts__ryu-1.0.19//:ryu", "@vendor_ts__serde-1.0.219//:serde", "@vendor_ts__serde_json-1.0.140//:build_script_build", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.8.bazel deleted file mode 100644 index 46285e64bd1f..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.8.bazel +++ /dev/null @@ -1,89 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "serde_spanned", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "serde", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=serde_spanned", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.6.8", - deps = [ - "@vendor_ts__serde-1.0.219//:serde", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel new file mode 100644 index 000000000000..4efede2084dd --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel @@ -0,0 +1,89 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "serde_spanned", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "serde", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=serde_spanned", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.6.9", + deps = [ + "@vendor_ts__serde-1.0.219//:serde", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.12.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.12.0.bazel deleted file mode 100644 index cdd91fba58a0..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.12.0.bazel +++ /dev/null @@ -1,96 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "serde_with", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "alloc", - "default", - "macros", - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.219//:serde_derive", - "@vendor_ts__serde_with_macros-3.12.0//:serde_with_macros", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=serde_with", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "3.12.0", - deps = [ - "@vendor_ts__serde-1.0.219//:serde", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.13.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.13.0.bazel new file mode 100644 index 000000000000..8d767cf92c15 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.13.0.bazel @@ -0,0 +1,96 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "serde_with", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "default", + "macros", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__serde_derive-1.0.219//:serde_derive", + "@vendor_ts__serde_with_macros-3.13.0//:serde_with_macros", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=serde_with", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "3.13.0", + deps = [ + "@vendor_ts__serde-1.0.219//:serde", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.12.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.12.0.bazel deleted file mode 100644 index f057b9da2e21..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.12.0.bazel +++ /dev/null @@ -1,89 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -rust_proc_macro( - name = "serde_with_macros", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=serde_with_macros", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "3.12.0", - deps = [ - "@vendor_ts__darling-0.20.10//:darling", - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", - "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.13.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.13.0.bazel new file mode 100644 index 000000000000..eee3714cc139 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.13.0.bazel @@ -0,0 +1,89 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "serde_with_macros", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=serde_with_macros", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "3.13.0", + deps = [ + "@vendor_ts__darling-0.20.10//:darling", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.103//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.14.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.14.0.bazel deleted file mode 100644 index 1e4a6aa9f73c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.14.0.bazel +++ /dev/null @@ -1,88 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "smallvec", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "const_generics", - "const_new", - "union", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=smallvec", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "1.14.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.15.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.15.1.bazel new file mode 100644 index 000000000000..62bb519baf42 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.15.1.bazel @@ -0,0 +1,88 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "smallvec", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "const_generics", + "const_new", + "union", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=smallvec", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.15.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel index 00aab0ba9b8f..e2b0eef1e610 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel @@ -28,6 +28,9 @@ rust_library( "WORKSPACE.bazel", ], ), + crate_features = [ + "alloc", + ], crate_root = "src/lib.rs", edition = "2015", rustc_flags = [ diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.100.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.100.bazel deleted file mode 100644 index 052bbecfe4db..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.100.bazel +++ /dev/null @@ -1,100 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "syn", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "clone-impls", - "default", - "derive", - "extra-traits", - "full", - "parsing", - "printing", - "proc-macro", - "visit", - "visit-mut", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=syn", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "2.0.100", - deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", - "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__unicode-ident-1.0.17//:unicode_ident", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.103.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.103.bazel new file mode 100644 index 000000000000..2f0a43a1e3ff --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.103.bazel @@ -0,0 +1,101 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "syn", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "clone-impls", + "default", + "derive", + "extra-traits", + "fold", + "full", + "parsing", + "printing", + "proc-macro", + "visit", + "visit-mut", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=syn", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "2.0.103", + deps = [ + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__unicode-ident-1.0.17//:unicode_ident", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.1.bazel index 66b155c2f99a..e726c441dfbe 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.1.bazel @@ -85,8 +85,8 @@ rust_library( }), version = "0.13.1", deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", + "@vendor_ts__syn-2.0.103//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-1.0.69.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-1.0.69.bazel new file mode 100644 index 000000000000..a79c49f5eeaf --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-1.0.69.bazel @@ -0,0 +1,145 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "thiserror", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__thiserror-impl-1.0.69//:thiserror_impl", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=thiserror", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.69", + deps = [ + "@vendor_ts__thiserror-1.0.69//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "thiserror", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=thiserror", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.69", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-1.0.69.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-1.0.69.bazel new file mode 100644 index 000000000000..52e3dfa4f059 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-1.0.69.bazel @@ -0,0 +1,88 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "thiserror_impl", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=thiserror-impl", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.69", + deps = [ + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.103//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.12.bazel index 4bae5674a881..eb054e9aa8d5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.12.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.12.bazel @@ -81,8 +81,8 @@ rust_proc_macro( }), version = "2.0.12", deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", + "@vendor_ts__syn-2.0.103//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.8.bazel index 93e058516c02..f1dddcc39841 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.8.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.8.bazel @@ -81,7 +81,7 @@ rust_library( }), version = "1.1.8", deps = [ - "@vendor_ts__cfg-if-1.0.0//:cfg_if", + "@vendor_ts__cfg-if-1.0.1//:cfg_if", "@vendor_ts__once_cell-1.20.3//:once_cell", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel new file mode 100644 index 000000000000..8e578270bfb7 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel @@ -0,0 +1,93 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "tinystr", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "zerovec", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__displaydoc-0.2.5//:displaydoc", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=tinystr", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.8.1", + deps = [ + "@vendor_ts__zerovec-0.11.2//:zerovec", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.20.bazel deleted file mode 100644 index aa7721ec15f1..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.20.bazel +++ /dev/null @@ -1,94 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "toml", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "display", - "parse", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=toml", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.8.20", - deps = [ - "@vendor_ts__serde-1.0.219//:serde", - "@vendor_ts__serde_spanned-0.6.8//:serde_spanned", - "@vendor_ts__toml_datetime-0.6.8//:toml_datetime", - "@vendor_ts__toml_edit-0.22.24//:toml_edit", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel new file mode 100644 index 000000000000..ce7632fc0727 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel @@ -0,0 +1,94 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "toml", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "display", + "parse", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=toml", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.8.23", + deps = [ + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__serde_spanned-0.6.9//:serde_spanned", + "@vendor_ts__toml_datetime-0.6.11//:toml_datetime", + "@vendor_ts__toml_edit-0.22.27//:toml_edit", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel new file mode 100644 index 000000000000..ee9d696b0a9e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel @@ -0,0 +1,89 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "toml_datetime", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "serde", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=toml_datetime", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.6.11", + deps = [ + "@vendor_ts__serde-1.0.219//:serde", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.8.bazel deleted file mode 100644 index 248d2c4ec365..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.8.bazel +++ /dev/null @@ -1,89 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "toml_datetime", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "serde", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=toml_datetime", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.6.8", - deps = [ - "@vendor_ts__serde-1.0.219//:serde", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.24.bazel deleted file mode 100644 index ee4b912ba31a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.24.bazel +++ /dev/null @@ -1,95 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "toml_edit", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "display", - "parse", - "serde", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=toml_edit", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.22.24", - deps = [ - "@vendor_ts__indexmap-2.9.0//:indexmap", - "@vendor_ts__serde-1.0.219//:serde", - "@vendor_ts__serde_spanned-0.6.8//:serde_spanned", - "@vendor_ts__toml_datetime-0.6.8//:toml_datetime", - "@vendor_ts__winnow-0.7.3//:winnow", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel new file mode 100644 index 000000000000..8a49793f584e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel @@ -0,0 +1,96 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "toml_edit", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "display", + "parse", + "serde", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=toml_edit", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.22.27", + deps = [ + "@vendor_ts__indexmap-2.9.0//:indexmap", + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__serde_spanned-0.6.9//:serde_spanned", + "@vendor_ts__toml_datetime-0.6.11//:toml_datetime", + "@vendor_ts__toml_write-0.1.2//:toml_write", + "@vendor_ts__winnow-0.7.11//:winnow", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel new file mode 100644 index 000000000000..dd661ef8d1ad --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel @@ -0,0 +1,88 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "toml_write", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "default", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=toml_write", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.1.2", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.28.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.28.bazel index f4e54984e8b8..ee4bf997c019 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.28.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.28.bazel @@ -81,8 +81,8 @@ rust_proc_macro( }), version = "0.1.28", deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", + "@vendor_ts__syn-2.0.103//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.19.bazel index e017d44b227a..65c7afaeb70f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.19.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.19.bazel @@ -104,7 +104,7 @@ rust_library( "@vendor_ts__once_cell-1.20.3//:once_cell", "@vendor_ts__regex-1.11.1//:regex", "@vendor_ts__sharded-slab-0.1.7//:sharded_slab", - "@vendor_ts__smallvec-1.14.0//:smallvec", + "@vendor_ts__smallvec-1.15.1//:smallvec", "@vendor_ts__thread_local-1.1.8//:thread_local", "@vendor_ts__tracing-0.1.41//:tracing", "@vendor_ts__tracing-core-0.1.33//:tracing_core", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel new file mode 100644 index 000000000000..74c331792024 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel @@ -0,0 +1,142 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "typeid", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=typeid", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.3", + deps = [ + "@vendor_ts__typeid-1.0.3//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2018", + pkg_name = "typeid", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=typeid", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.3", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.4.bazel new file mode 100644 index 000000000000..69d9c4097f66 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.4.bazel @@ -0,0 +1,92 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "url", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "std", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=url", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "2.5.4", + deps = [ + "@vendor_ts__form_urlencoded-1.2.1//:form_urlencoded", + "@vendor_ts__idna-1.0.3//:idna", + "@vendor_ts__percent-encoding-2.3.1//:percent_encoding", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel new file mode 100644 index 000000000000..54c69ad9a16d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "utf8_iter", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=utf8_iter", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.4", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.99.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.99.bazel index 52ec9171a917..bf281cfada1c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.99.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.99.bazel @@ -90,7 +90,7 @@ rust_library( }), version = "0.2.99", deps = [ - "@vendor_ts__cfg-if-1.0.0//:cfg_if", + "@vendor_ts__cfg-if-1.0.1//:cfg_if", "@vendor_ts__once_cell-1.20.3//:once_cell", "@vendor_ts__wasm-bindgen-0.2.99//:build_script_build", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.99.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.99.bazel index 2b5e035e4091..78dbca5d439a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.99.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.99.bazel @@ -87,9 +87,9 @@ rust_library( deps = [ "@vendor_ts__bumpalo-3.16.0//:bumpalo", "@vendor_ts__log-0.4.27//:log", - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", + "@vendor_ts__syn-2.0.103//:syn", "@vendor_ts__wasm-bindgen-shared-0.2.99//:wasm_bindgen_shared", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.99.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.99.bazel index c624819b43df..e83a1630b614 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.99.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.99.bazel @@ -85,9 +85,9 @@ rust_library( }), version = "0.2.99", deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", + "@vendor_ts__syn-2.0.103//:syn", "@vendor_ts__wasm-bindgen-backend-0.2.99//:wasm_bindgen_backend", "@vendor_ts__wasm-bindgen-shared-0.2.99//:wasm_bindgen_shared", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-0.58.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-0.58.0.bazel deleted file mode 100644 index cc4916d9c7c1..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-0.58.0.bazel +++ /dev/null @@ -1,87 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "windows", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.58.0", - deps = [ - "@vendor_ts__windows-core-0.58.0//:windows_core", - "@vendor_ts__windows-targets-0.52.6//:windows_targets", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.58.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.58.0.bazel deleted file mode 100644 index 232bf2496602..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.58.0.bazel +++ /dev/null @@ -1,92 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "windows_core", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__windows-implement-0.58.0//:windows_implement", - "@vendor_ts__windows-interface-0.58.0//:windows_interface", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows-core", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.58.0", - deps = [ - "@vendor_ts__windows-result-0.2.0//:windows_result", - "@vendor_ts__windows-strings-0.1.0//:windows_strings", - "@vendor_ts__windows-targets-0.52.6//:windows_targets", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.58.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.58.0.bazel deleted file mode 100644 index d9bbe3ad12c3..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.58.0.bazel +++ /dev/null @@ -1,88 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -rust_proc_macro( - name = "windows_implement", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows-implement", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.58.0", - deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", - "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.58.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.58.0.bazel deleted file mode 100644 index 875df272d2a3..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.58.0.bazel +++ /dev/null @@ -1,88 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -rust_proc_macro( - name = "windows_interface", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows-interface", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.58.0", - deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", - "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.2.0.bazel deleted file mode 100644 index f32ca5f6cde8..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.2.0.bazel +++ /dev/null @@ -1,86 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "windows_result", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows-result", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.2.0", - deps = [ - "@vendor_ts__windows-targets-0.52.6//:windows_targets", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.1.0.bazel deleted file mode 100644 index 1d38767dcb2f..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.1.0.bazel +++ /dev/null @@ -1,87 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "windows_strings", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=windows-strings", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.1.0", - deps = [ - "@vendor_ts__windows-result-0.2.0//:windows_result", - "@vendor_ts__windows-targets-0.52.6//:windows_targets", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel index 9b2c722558cc..289fee68e925 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel @@ -38,7 +38,6 @@ rust_library( "Win32_System_Com", "Win32_System_Console", "Win32_System_IO", - "Win32_System_ProcessStatus", "Win32_System_SystemInformation", "Win32_System_Threading", "Win32_System_WindowsProgramming", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.60.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.60.2.bazel new file mode 100644 index 000000000000..46506a263b8a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.60.2.bazel @@ -0,0 +1,94 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_sys", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "Win32", + "Win32_Foundation", + "Win32_System", + "Win32_System_ProcessStatus", + "Win32_System_Threading", + "default", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows-sys", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.60.2", + deps = [ + "@vendor_ts__windows-targets-0.53.2//:windows_targets", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.2.bazel new file mode 100644 index 000000000000..77c1c5144a61 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.2.bazel @@ -0,0 +1,104 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_targets", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows-targets", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.53.2", + deps = select({ + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "@vendor_ts__windows_aarch64_msvc-0.53.0//:windows_aarch64_msvc", # cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib))) + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__windows_i686_msvc-0.53.0//:windows_i686_msvc", # cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib))) + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__windows_i686_gnu-0.53.0//:windows_i686_gnu", # cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__windows_x86_64_msvc-0.53.0//:windows_x86_64_msvc", # cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib))) + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__windows_x86_64_gnu-0.53.0//:windows_x86_64_gnu", # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__windows_x86_64_gnu-0.53.0//:windows_x86_64_gnu", # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.0.bazel new file mode 100644 index 000000000000..e727eacb52a6 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.0.bazel @@ -0,0 +1,142 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_aarch64_gnullvm", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_aarch64_gnullvm", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.53.0", + deps = [ + "@vendor_ts__windows_aarch64_gnullvm-0.53.0//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "windows_aarch64_gnullvm", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_aarch64_gnullvm", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.53.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.0.bazel new file mode 100644 index 000000000000..4b4438eaea5c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.0.bazel @@ -0,0 +1,142 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_aarch64_msvc", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_aarch64_msvc", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.53.0", + deps = [ + "@vendor_ts__windows_aarch64_msvc-0.53.0//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "windows_aarch64_msvc", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_aarch64_msvc", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.53.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.0.bazel new file mode 100644 index 000000000000..d4809237b868 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.0.bazel @@ -0,0 +1,142 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_i686_gnu", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_i686_gnu", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.53.0", + deps = [ + "@vendor_ts__windows_i686_gnu-0.53.0//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "windows_i686_gnu", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_i686_gnu", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.53.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.0.bazel new file mode 100644 index 000000000000..3bad746ef58a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.0.bazel @@ -0,0 +1,142 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_i686_gnullvm", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_i686_gnullvm", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.53.0", + deps = [ + "@vendor_ts__windows_i686_gnullvm-0.53.0//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "windows_i686_gnullvm", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_i686_gnullvm", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.53.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.0.bazel new file mode 100644 index 000000000000..2f0214cf3475 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.0.bazel @@ -0,0 +1,142 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_i686_msvc", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_i686_msvc", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.53.0", + deps = [ + "@vendor_ts__windows_i686_msvc-0.53.0//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "windows_i686_msvc", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_i686_msvc", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.53.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.0.bazel new file mode 100644 index 000000000000..1d07c0d02500 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.0.bazel @@ -0,0 +1,142 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_x86_64_gnu", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_x86_64_gnu", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.53.0", + deps = [ + "@vendor_ts__windows_x86_64_gnu-0.53.0//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "windows_x86_64_gnu", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_x86_64_gnu", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.53.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.0.bazel new file mode 100644 index 000000000000..2cad4e3de6fd --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.0.bazel @@ -0,0 +1,142 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_x86_64_gnullvm", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_x86_64_gnullvm", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.53.0", + deps = [ + "@vendor_ts__windows_x86_64_gnullvm-0.53.0//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "windows_x86_64_gnullvm", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_x86_64_gnullvm", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.53.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.0.bazel new file mode 100644 index 000000000000..2733c677a916 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.0.bazel @@ -0,0 +1,142 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_x86_64_msvc", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_x86_64_msvc", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.53.0", + deps = [ + "@vendor_ts__windows_x86_64_msvc-0.53.0//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "windows_x86_64_msvc", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows_x86_64_msvc", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.53.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.11.bazel new file mode 100644 index 000000000000..5221e7699ad1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.11.bazel @@ -0,0 +1,88 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "winnow", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "default", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=winnow", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.7.11", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.3.bazel deleted file mode 100644 index 4c327dadb1db..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.3.bazel +++ /dev/null @@ -1,88 +0,0 @@ -############################################################################### -# @generated -# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To -# regenerate this file, run the following: -# -# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors -############################################################################### - -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -rust_library( - name = "winnow", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "alloc", - "default", - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=winnow", - "manual", - "noclippy", - "norustfmt", - ], - target_compatible_with = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [], - "@rules_rust//rust/platform:aarch64-apple-ios": [], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], - "@rules_rust//rust/platform:aarch64-linux-android": [], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], - "@rules_rust//rust/platform:aarch64-unknown-uefi": [], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:armv7-linux-androideabi": [], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], - "@rules_rust//rust/platform:i686-apple-darwin": [], - "@rules_rust//rust/platform:i686-linux-android": [], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [], - "@rules_rust//rust/platform:i686-unknown-freebsd": [], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], - "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], - "@rules_rust//rust/platform:thumbv7em-none-eabi": [], - "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:x86_64-apple-darwin": [], - "@rules_rust//rust/platform:x86_64-apple-ios": [], - "@rules_rust//rust/platform:x86_64-linux-android": [], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], - "@rules_rust//rust/platform:x86_64-unknown-none": [], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [], - "//conditions:default": ["@platforms//:incompatible"], - }), - version = "0.7.3", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel new file mode 100644 index 000000000000..0c2e96ae0126 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "writeable", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=writeable", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.6.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel new file mode 100644 index 000000000000..83fc89ba7179 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel @@ -0,0 +1,95 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "yoke", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "derive", + "zerofrom", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__yoke-derive-0.8.0//:yoke_derive", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=yoke", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.8.0", + deps = [ + "@vendor_ts__stable_deref_trait-1.2.0//:stable_deref_trait", + "@vendor_ts__zerofrom-0.1.6//:zerofrom", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel new file mode 100644 index 000000000000..96d93eb4031e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel @@ -0,0 +1,89 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "yoke_derive", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=yoke-derive", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.8.0", + deps = [ + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.103//:syn", + "@vendor_ts__synstructure-0.13.1//:synstructure", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.20.bazel index 2e234c58a3be..ddd5a21cc672 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.20.bazel @@ -29,9 +29,6 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_features = [ - "simd", - ], crate_root = "src/lib.rs", edition = "2021", rustc_flags = [ @@ -108,9 +105,6 @@ cargo_build_script( "WORKSPACE.bazel", ], ), - crate_features = [ - "simd", - ], crate_name = "build_script_build", crate_root = "build.rs", data = glob( diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.7.35.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.7.35.bazel index c896b4653f17..0ee91e78c4eb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.7.35.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.7.35.bazel @@ -81,8 +81,8 @@ rust_proc_macro( }), version = "0.7.35", deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", + "@vendor_ts__syn-2.0.103//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.20.bazel index 7e87cf6b1bf8..a64ba674aa47 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.20.bazel @@ -81,8 +81,8 @@ rust_proc_macro( }), version = "0.8.20", deps = [ - "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", "@vendor_ts__quote-1.0.40//:quote", - "@vendor_ts__syn-2.0.100//:syn", + "@vendor_ts__syn-2.0.103//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel new file mode 100644 index 000000000000..365169ad3eba --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel @@ -0,0 +1,90 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "zerofrom", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "derive", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__zerofrom-derive-0.1.6//:zerofrom_derive", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=zerofrom", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.1.6", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel new file mode 100644 index 000000000000..463d6916e4df --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel @@ -0,0 +1,89 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "zerofrom_derive", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=zerofrom-derive", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.1.6", + deps = [ + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.103//:syn", + "@vendor_ts__synstructure-0.13.1//:synstructure", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel new file mode 100644 index 000000000000..453e2f8d2594 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel @@ -0,0 +1,94 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "zerotrie", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "yoke", + "zerofrom", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__displaydoc-0.2.5//:displaydoc", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=zerotrie", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.2.2", + deps = [ + "@vendor_ts__yoke-0.8.0//:yoke", + "@vendor_ts__zerofrom-0.1.6//:zerofrom", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.2.bazel new file mode 100644 index 000000000000..6969b46a518e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.2.bazel @@ -0,0 +1,95 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "zerovec", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "derive", + "yoke", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__zerovec-derive-0.11.1//:zerovec_derive", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=zerovec", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.11.2", + deps = [ + "@vendor_ts__yoke-0.8.0//:yoke", + "@vendor_ts__zerofrom-0.1.6//:zerofrom", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel new file mode 100644 index 000000000000..653c0d360cc8 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel @@ -0,0 +1,88 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "zerovec_derive", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=zerovec-derive", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.11.1", + deps = [ + "@vendor_ts__proc-macro2-1.0.95//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.103//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl index 0247ee36d9f5..7f5a20358413 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl @@ -16,7 +16,6 @@ """ load("@bazel_skylib//lib:selects.bzl", "selects") -load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") @@ -296,11 +295,12 @@ def aliases( _NORMAL_DEPENDENCIES = { "ruby/extractor": { _COMMON_CONDITION: { - "clap": Label("@vendor_ts__clap-4.5.35//:clap"), + "clap": Label("@vendor_ts__clap-4.5.40//:clap"), "encoding": Label("@vendor_ts__encoding-0.2.33//:encoding"), "lazy_static": Label("@vendor_ts__lazy_static-1.5.0//:lazy_static"), "rayon": Label("@vendor_ts__rayon-1.10.0//:rayon"), "regex": Label("@vendor_ts__regex-1.11.1//:regex"), + "serde_json": Label("@vendor_ts__serde_json-1.0.140//:serde_json"), "tracing": Label("@vendor_ts__tracing-0.1.41//:tracing"), "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.19//:tracing_subscriber"), "tree-sitter": Label("@vendor_ts__tree-sitter-0.24.6//:tree_sitter"), @@ -310,14 +310,14 @@ _NORMAL_DEPENDENCIES = { }, "rust/ast-generator": { _COMMON_CONDITION: { - "anyhow": Label("@vendor_ts__anyhow-1.0.97//:anyhow"), + "anyhow": Label("@vendor_ts__anyhow-1.0.98//:anyhow"), "either": Label("@vendor_ts__either-1.15.0//:either"), "itertools": Label("@vendor_ts__itertools-0.14.0//:itertools"), "mustache": Label("@vendor_ts__mustache-0.9.0//:mustache"), - "proc-macro2": Label("@vendor_ts__proc-macro2-1.0.94//:proc_macro2"), + "proc-macro2": Label("@vendor_ts__proc-macro2-1.0.95//:proc_macro2"), "quote": Label("@vendor_ts__quote-1.0.40//:quote"), "serde": Label("@vendor_ts__serde-1.0.219//:serde"), - "stdx": Label("@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx"), + "stdx": Label("@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx"), "ungrammar": Label("@vendor_ts__ungrammar-1.16.1//:ungrammar"), }, }, @@ -325,35 +325,36 @@ _NORMAL_DEPENDENCIES = { }, "rust/extractor": { _COMMON_CONDITION: { - "anyhow": Label("@vendor_ts__anyhow-1.0.97//:anyhow"), + "anyhow": Label("@vendor_ts__anyhow-1.0.98//:anyhow"), "argfile": Label("@vendor_ts__argfile-0.2.1//:argfile"), - "chalk-ir": Label("@vendor_ts__chalk-ir-0.100.0//:chalk_ir"), - "chrono": Label("@vendor_ts__chrono-0.4.40//:chrono"), - "clap": Label("@vendor_ts__clap-4.5.35//:clap"), + "chalk-ir": Label("@vendor_ts__chalk-ir-0.103.0//:chalk_ir"), + "chrono": Label("@vendor_ts__chrono-0.4.41//:chrono"), + "clap": Label("@vendor_ts__clap-4.5.40//:clap"), "dunce": Label("@vendor_ts__dunce-1.0.5//:dunce"), "figment": Label("@vendor_ts__figment-0.10.19//:figment"), "glob": Label("@vendor_ts__glob-0.3.2//:glob"), "itertools": Label("@vendor_ts__itertools-0.14.0//:itertools"), + "mustache": Label("@vendor_ts__mustache-0.9.0//:mustache"), "num-traits": Label("@vendor_ts__num-traits-0.2.19//:num_traits"), - "ra_ap_base_db": Label("@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db"), - "ra_ap_cfg": Label("@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg"), - "ra_ap_hir": Label("@vendor_ts__ra_ap_hir-0.0.273//:ra_ap_hir"), - "ra_ap_hir_def": Label("@vendor_ts__ra_ap_hir_def-0.0.273//:ra_ap_hir_def"), - "ra_ap_hir_expand": Label("@vendor_ts__ra_ap_hir_expand-0.0.273//:ra_ap_hir_expand"), - "ra_ap_hir_ty": Label("@vendor_ts__ra_ap_hir_ty-0.0.273//:ra_ap_hir_ty"), - "ra_ap_ide_db": Label("@vendor_ts__ra_ap_ide_db-0.0.273//:ra_ap_ide_db"), - "ra_ap_intern": Label("@vendor_ts__ra_ap_intern-0.0.273//:ra_ap_intern"), - "ra_ap_load-cargo": Label("@vendor_ts__ra_ap_load-cargo-0.0.273//:ra_ap_load_cargo"), - "ra_ap_parser": Label("@vendor_ts__ra_ap_parser-0.0.273//:ra_ap_parser"), - "ra_ap_paths": Label("@vendor_ts__ra_ap_paths-0.0.273//:ra_ap_paths"), - "ra_ap_project_model": Label("@vendor_ts__ra_ap_project_model-0.0.273//:ra_ap_project_model"), - "ra_ap_span": Label("@vendor_ts__ra_ap_span-0.0.273//:ra_ap_span"), - "ra_ap_syntax": Label("@vendor_ts__ra_ap_syntax-0.0.273//:ra_ap_syntax"), - "ra_ap_vfs": Label("@vendor_ts__ra_ap_vfs-0.0.273//:ra_ap_vfs"), + "ra_ap_base_db": Label("@vendor_ts__ra_ap_base_db-0.0.288//:ra_ap_base_db"), + "ra_ap_cfg": Label("@vendor_ts__ra_ap_cfg-0.0.288//:ra_ap_cfg"), + "ra_ap_hir": Label("@vendor_ts__ra_ap_hir-0.0.288//:ra_ap_hir"), + "ra_ap_hir_def": Label("@vendor_ts__ra_ap_hir_def-0.0.288//:ra_ap_hir_def"), + "ra_ap_hir_expand": Label("@vendor_ts__ra_ap_hir_expand-0.0.288//:ra_ap_hir_expand"), + "ra_ap_hir_ty": Label("@vendor_ts__ra_ap_hir_ty-0.0.288//:ra_ap_hir_ty"), + "ra_ap_ide_db": Label("@vendor_ts__ra_ap_ide_db-0.0.288//:ra_ap_ide_db"), + "ra_ap_intern": Label("@vendor_ts__ra_ap_intern-0.0.288//:ra_ap_intern"), + "ra_ap_load-cargo": Label("@vendor_ts__ra_ap_load-cargo-0.0.288//:ra_ap_load_cargo"), + "ra_ap_parser": Label("@vendor_ts__ra_ap_parser-0.0.288//:ra_ap_parser"), + "ra_ap_paths": Label("@vendor_ts__ra_ap_paths-0.0.288//:ra_ap_paths"), + "ra_ap_project_model": Label("@vendor_ts__ra_ap_project_model-0.0.288//:ra_ap_project_model"), + "ra_ap_span": Label("@vendor_ts__ra_ap_span-0.0.288//:ra_ap_span"), + "ra_ap_syntax": Label("@vendor_ts__ra_ap_syntax-0.0.288//:ra_ap_syntax"), + "ra_ap_vfs": Label("@vendor_ts__ra_ap_vfs-0.0.288//:ra_ap_vfs"), "serde": Label("@vendor_ts__serde-1.0.219//:serde"), "serde_json": Label("@vendor_ts__serde_json-1.0.140//:serde_json"), - "serde_with": Label("@vendor_ts__serde_with-3.12.0//:serde_with"), - "toml": Label("@vendor_ts__toml-0.8.20//:toml"), + "serde_with": Label("@vendor_ts__serde_with-3.13.0//:serde_with"), + "toml": Label("@vendor_ts__toml-0.8.23//:toml"), "tracing": Label("@vendor_ts__tracing-0.1.41//:tracing"), "tracing-flame": Label("@vendor_ts__tracing-flame-0.2.0//:tracing_flame"), "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.19//:tracing_subscriber"), @@ -363,17 +364,17 @@ _NORMAL_DEPENDENCIES = { "rust/extractor/macros": { _COMMON_CONDITION: { "quote": Label("@vendor_ts__quote-1.0.40//:quote"), - "syn": Label("@vendor_ts__syn-2.0.100//:syn"), + "syn": Label("@vendor_ts__syn-2.0.103//:syn"), }, }, "shared/tree-sitter-extractor": { _COMMON_CONDITION: { - "chrono": Label("@vendor_ts__chrono-0.4.40//:chrono"), + "chrono": Label("@vendor_ts__chrono-0.4.41//:chrono"), "encoding": Label("@vendor_ts__encoding-0.2.33//:encoding"), "flate2": Label("@vendor_ts__flate2-1.1.0//:flate2"), "globset": Label("@vendor_ts__globset-0.4.15//:globset"), "lazy_static": Label("@vendor_ts__lazy_static-1.5.0//:lazy_static"), - "num_cpus": Label("@vendor_ts__num_cpus-1.16.0//:num_cpus"), + "num_cpus": Label("@vendor_ts__num_cpus-1.17.0//:num_cpus"), "rayon": Label("@vendor_ts__rayon-1.10.0//:rayon"), "regex": Label("@vendor_ts__regex-1.11.1//:regex"), "serde": Label("@vendor_ts__serde-1.0.219//:serde"), @@ -393,7 +394,7 @@ _NORMAL_ALIASES = { }, "rust/ast-generator": { _COMMON_CONDITION: { - Label("@vendor_ts__ra_ap_stdx-0.0.273//:ra_ap_stdx"): "stdx", + Label("@vendor_ts__ra_ap_stdx-0.0.288//:ra_ap_stdx"): "stdx", }, }, "rust/autobuild": { @@ -425,7 +426,7 @@ _NORMAL_DEV_DEPENDENCIES = { }, "shared/tree-sitter-extractor": { _COMMON_CONDITION: { - "rand": Label("@vendor_ts__rand-0.9.0//:rand"), + "rand": Label("@vendor_ts__rand-0.9.1//:rand"), "tree-sitter-json": Label("@vendor_ts__tree-sitter-json-0.24.8//:tree_sitter_json"), "tree-sitter-ql": Label("@vendor_ts__tree-sitter-ql-0.23.1//:tree_sitter_ql"), }, @@ -608,7 +609,6 @@ _CONDITIONS = { "cfg(any(target_os = \"macos\", target_os = \"ios\"))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios"], "cfg(any(target_os = \"macos\", target_os = \"openbsd\", target_os = \"vita\", target_os = \"emscripten\"))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-darwin"], "cfg(any(target_pointer_width = \"8\", target_pointer_width = \"16\", target_pointer_width = \"32\"))": ["@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv32imc-unknown-none-elf", "@rules_rust//rust/platform:thumbv7em-none-eabi", "@rules_rust//rust/platform:thumbv8m.main-none-eabi", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1"], - "cfg(loom)": [], "cfg(not(windows))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-fuchsia", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710", "@rules_rust//rust/platform:aarch64-unknown-uefi", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv32imc-unknown-none-elf", "@rules_rust//rust/platform:riscv64gc-unknown-none-elf", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:thumbv7em-none-eabi", "@rules_rust//rust/platform:thumbv8m.main-none-eabi", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-fuchsia", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu", "@rules_rust//rust/platform:x86_64-unknown-none", "@rules_rust//rust/platform:x86_64-unknown-uefi"], "cfg(target_os = \"android\")": ["@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:x86_64-linux-android"], "cfg(target_os = \"haiku\")": [], @@ -761,12 +761,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__anyhow-1.0.97", - sha256 = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f", + name = "vendor_ts__anyhow-1.0.98", + sha256 = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487", type = "tar.gz", - urls = ["https://static.crates.io/crates/anyhow/1.0.97/download"], - strip_prefix = "anyhow-1.0.97", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anyhow-1.0.97.bazel"), + urls = ["https://static.crates.io/crates/anyhow/1.0.98/download"], + strip_prefix = "anyhow-1.0.98", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anyhow-1.0.98.bazel"), ) maybe( @@ -831,12 +831,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__bitflags-2.9.0", - sha256 = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd", + name = "vendor_ts__bitflags-2.9.1", + sha256 = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967", type = "tar.gz", - urls = ["https://static.crates.io/crates/bitflags/2.9.0/download"], - strip_prefix = "bitflags-2.9.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bitflags-2.9.0.bazel"), + urls = ["https://static.crates.io/crates/bitflags/2.9.1/download"], + strip_prefix = "bitflags-2.9.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bitflags-2.9.1.bazel"), ) maybe( @@ -851,12 +851,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__boxcar-0.2.11", - sha256 = "6740c6e2fc6360fa57c35214c7493826aee95993926092606f27c983b40837be", + name = "vendor_ts__boxcar-0.2.13", + sha256 = "26c4925bc979b677330a8c7fe7a8c94af2dbb4a2d37b4a20a80d884400f46baa", type = "tar.gz", - urls = ["https://static.crates.io/crates/boxcar/0.2.11/download"], - strip_prefix = "boxcar-0.2.11", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.boxcar-0.2.11.bazel"), + urls = ["https://static.crates.io/crates/boxcar/0.2.13/download"], + strip_prefix = "boxcar-0.2.13", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.boxcar-0.2.13.bazel"), ) maybe( @@ -901,32 +901,42 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__camino-1.1.9", - sha256 = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3", + name = "vendor_ts__camino-1.1.10", + sha256 = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab", + type = "tar.gz", + urls = ["https://static.crates.io/crates/camino/1.1.10/download"], + strip_prefix = "camino-1.1.10", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.camino-1.1.10.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__cargo-platform-0.2.0", + sha256 = "84982c6c0ae343635a3a4ee6dedef965513735c8b183caa7289fa6e27399ebd4", type = "tar.gz", - urls = ["https://static.crates.io/crates/camino/1.1.9/download"], - strip_prefix = "camino-1.1.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.camino-1.1.9.bazel"), + urls = ["https://static.crates.io/crates/cargo-platform/0.2.0/download"], + strip_prefix = "cargo-platform-0.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo-platform-0.2.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__cargo-platform-0.1.9", - sha256 = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea", + name = "vendor_ts__cargo-util-schemas-0.2.0", + sha256 = "e63d2780ac94487eb9f1fea7b0d56300abc9eb488800854ca217f102f5caccca", type = "tar.gz", - urls = ["https://static.crates.io/crates/cargo-platform/0.1.9/download"], - strip_prefix = "cargo-platform-0.1.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo-platform-0.1.9.bazel"), + urls = ["https://static.crates.io/crates/cargo-util-schemas/0.2.0/download"], + strip_prefix = "cargo-util-schemas-0.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo-util-schemas-0.2.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__cargo_metadata-0.19.2", - sha256 = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba", + name = "vendor_ts__cargo_metadata-0.20.0", + sha256 = "4f7835cfc6135093070e95eb2b53e5d9b5c403dc3a6be6040ee026270aa82502", type = "tar.gz", - urls = ["https://static.crates.io/crates/cargo_metadata/0.19.2/download"], - strip_prefix = "cargo_metadata-0.19.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo_metadata-0.19.2.bazel"), + urls = ["https://static.crates.io/crates/cargo_metadata/0.20.0/download"], + strip_prefix = "cargo_metadata-0.20.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo_metadata-0.20.0.bazel"), ) maybe( @@ -941,12 +951,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__cfg-if-1.0.0", - sha256 = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd", + name = "vendor_ts__cfg-if-1.0.1", + sha256 = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268", type = "tar.gz", - urls = ["https://static.crates.io/crates/cfg-if/1.0.0/download"], - strip_prefix = "cfg-if-1.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cfg-if-1.0.0.bazel"), + urls = ["https://static.crates.io/crates/cfg-if/1.0.1/download"], + strip_prefix = "cfg-if-1.0.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cfg-if-1.0.1.bazel"), ) maybe( @@ -961,82 +971,82 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__chalk-derive-0.100.0", - sha256 = "ab2d131019373f0d0d1f2af0abd4f719739f6583c1b33965112455f643a910af", + name = "vendor_ts__chalk-derive-0.103.0", + sha256 = "eb4899682de915ca7c0b025bdd0a3d34c75fe12184122fda6805a7baddaa293c", type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-derive/0.100.0/download"], - strip_prefix = "chalk-derive-0.100.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-derive-0.100.0.bazel"), + urls = ["https://static.crates.io/crates/chalk-derive/0.103.0/download"], + strip_prefix = "chalk-derive-0.103.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-derive-0.103.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__chalk-ir-0.100.0", - sha256 = "4f114996bda14c0213f014a4ef31a7867dcf5f539a3900477fc6b20138e7a17b", + name = "vendor_ts__chalk-ir-0.103.0", + sha256 = "90a37d2ab99352b4caca135061e7b4ac67024b648c28ed0b787feec4bea4caed", type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-ir/0.100.0/download"], - strip_prefix = "chalk-ir-0.100.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-ir-0.100.0.bazel"), + urls = ["https://static.crates.io/crates/chalk-ir/0.103.0/download"], + strip_prefix = "chalk-ir-0.103.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-ir-0.103.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__chalk-recursive-0.100.0", - sha256 = "551e956e031c09057c7b21f17d48d91de99c9b6b6e34bceaf5e7202d71021268", + name = "vendor_ts__chalk-recursive-0.103.0", + sha256 = "c855be60e646664bc37c2496d3dc81ca5ef60520930e5e0f0057a0575aff6c19", type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-recursive/0.100.0/download"], - strip_prefix = "chalk-recursive-0.100.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-recursive-0.100.0.bazel"), + urls = ["https://static.crates.io/crates/chalk-recursive/0.103.0/download"], + strip_prefix = "chalk-recursive-0.103.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-recursive-0.103.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__chalk-solve-0.100.0", - sha256 = "cd7ca50181156ce649efe8e5dd00580f573651554e4dcd11afa4e2ac93f53324", + name = "vendor_ts__chalk-solve-0.103.0", + sha256 = "477ac6cdfd2013e9f93b09b036c2b607a67b2e728f4777b8422d55a79e9e3a34", type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-solve/0.100.0/download"], - strip_prefix = "chalk-solve-0.100.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-solve-0.100.0.bazel"), + urls = ["https://static.crates.io/crates/chalk-solve/0.103.0/download"], + strip_prefix = "chalk-solve-0.103.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-solve-0.103.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__chrono-0.4.40", - sha256 = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c", + name = "vendor_ts__chrono-0.4.41", + sha256 = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d", type = "tar.gz", - urls = ["https://static.crates.io/crates/chrono/0.4.40/download"], - strip_prefix = "chrono-0.4.40", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chrono-0.4.40.bazel"), + urls = ["https://static.crates.io/crates/chrono/0.4.41/download"], + strip_prefix = "chrono-0.4.41", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chrono-0.4.41.bazel"), ) maybe( http_archive, - name = "vendor_ts__clap-4.5.35", - sha256 = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944", + name = "vendor_ts__clap-4.5.40", + sha256 = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f", type = "tar.gz", - urls = ["https://static.crates.io/crates/clap/4.5.35/download"], - strip_prefix = "clap-4.5.35", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap-4.5.35.bazel"), + urls = ["https://static.crates.io/crates/clap/4.5.40/download"], + strip_prefix = "clap-4.5.40", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap-4.5.40.bazel"), ) maybe( http_archive, - name = "vendor_ts__clap_builder-4.5.35", - sha256 = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9", + name = "vendor_ts__clap_builder-4.5.40", + sha256 = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e", type = "tar.gz", - urls = ["https://static.crates.io/crates/clap_builder/4.5.35/download"], - strip_prefix = "clap_builder-4.5.35", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_builder-4.5.35.bazel"), + urls = ["https://static.crates.io/crates/clap_builder/4.5.40/download"], + strip_prefix = "clap_builder-4.5.40", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_builder-4.5.40.bazel"), ) maybe( http_archive, - name = "vendor_ts__clap_derive-4.5.32", - sha256 = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7", + name = "vendor_ts__clap_derive-4.5.40", + sha256 = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce", type = "tar.gz", - urls = ["https://static.crates.io/crates/clap_derive/4.5.32/download"], - strip_prefix = "clap_derive-4.5.32", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_derive-4.5.32.bazel"), + urls = ["https://static.crates.io/crates/clap_derive/4.5.40/download"], + strip_prefix = "clap_derive-4.5.40", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_derive-4.5.40.bazel"), ) maybe( @@ -1101,12 +1111,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__crossbeam-channel-0.5.14", - sha256 = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471", + name = "vendor_ts__crossbeam-channel-0.5.15", + sha256 = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2", type = "tar.gz", - urls = ["https://static.crates.io/crates/crossbeam-channel/0.5.14/download"], - strip_prefix = "crossbeam-channel-0.5.14", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-channel-0.5.14.bazel"), + urls = ["https://static.crates.io/crates/crossbeam-channel/0.5.15/download"], + strip_prefix = "crossbeam-channel-0.5.15", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-channel-0.5.15.bazel"), ) maybe( @@ -1179,16 +1189,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.darling_macro-0.20.10.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__dashmap-5.5.3", - sha256 = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856", - type = "tar.gz", - urls = ["https://static.crates.io/crates/dashmap/5.5.3/download"], - strip_prefix = "dashmap-5.5.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dashmap-5.5.3.bazel"), - ) - maybe( http_archive, name = "vendor_ts__dashmap-6.1.0", @@ -1209,6 +1209,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.deranged-0.3.11.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__displaydoc-0.2.5", + sha256 = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0", + type = "tar.gz", + urls = ["https://static.crates.io/crates/displaydoc/0.2.5/download"], + strip_prefix = "displaydoc-0.2.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.displaydoc-0.2.5.bazel"), + ) + maybe( http_archive, name = "vendor_ts__drop_bomb-0.1.5", @@ -1229,6 +1239,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dunce-1.0.5.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__dyn-clone-1.0.19", + sha256 = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005", + type = "tar.gz", + urls = ["https://static.crates.io/crates/dyn-clone/1.0.19/download"], + strip_prefix = "dyn-clone-1.0.19", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dyn-clone-1.0.19.bazel"), + ) + maybe( http_archive, name = "vendor_ts__either-1.15.0", @@ -1329,6 +1349,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.equivalent-1.0.2.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__erased-serde-0.4.6", + sha256 = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7", + type = "tar.gz", + urls = ["https://static.crates.io/crates/erased-serde/0.4.6/download"], + strip_prefix = "erased-serde-0.4.6", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.erased-serde-0.4.6.bazel"), + ) + maybe( http_archive, name = "vendor_ts__figment-0.10.19", @@ -1389,6 +1419,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.foldhash-0.1.5.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__form_urlencoded-1.2.1", + sha256 = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456", + type = "tar.gz", + urls = ["https://static.crates.io/crates/form_urlencoded/1.2.1/download"], + strip_prefix = "form_urlencoded-1.2.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.form_urlencoded-1.2.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__fs-err-2.11.0", @@ -1419,16 +1459,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fst-0.4.7.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__generator-0.8.4", - sha256 = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd", - type = "tar.gz", - urls = ["https://static.crates.io/crates/generator/0.8.4/download"], - strip_prefix = "generator-0.8.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.generator-0.8.4.bazel"), - ) - maybe( http_archive, name = "vendor_ts__getrandom-0.3.1", @@ -1511,12 +1541,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__hermit-abi-0.3.9", - sha256 = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024", + name = "vendor_ts__hermit-abi-0.5.2", + sha256 = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c", type = "tar.gz", - urls = ["https://static.crates.io/crates/hermit-abi/0.3.9/download"], - strip_prefix = "hermit-abi-0.3.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hermit-abi-0.3.9.bazel"), + urls = ["https://static.crates.io/crates/hermit-abi/0.5.2/download"], + strip_prefix = "hermit-abi-0.5.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hermit-abi-0.5.2.bazel"), ) maybe( @@ -1559,6 +1589,76 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.iana-time-zone-haiku-0.1.2.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__icu_collections-2.0.0", + sha256 = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47", + type = "tar.gz", + urls = ["https://static.crates.io/crates/icu_collections/2.0.0/download"], + strip_prefix = "icu_collections-2.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_collections-2.0.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__icu_locale_core-2.0.0", + sha256 = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/icu_locale_core/2.0.0/download"], + strip_prefix = "icu_locale_core-2.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_locale_core-2.0.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__icu_normalizer-2.0.0", + sha256 = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979", + type = "tar.gz", + urls = ["https://static.crates.io/crates/icu_normalizer/2.0.0/download"], + strip_prefix = "icu_normalizer-2.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_normalizer-2.0.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__icu_normalizer_data-2.0.0", + sha256 = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/icu_normalizer_data/2.0.0/download"], + strip_prefix = "icu_normalizer_data-2.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_normalizer_data-2.0.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__icu_properties-2.0.1", + sha256 = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/icu_properties/2.0.1/download"], + strip_prefix = "icu_properties-2.0.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_properties-2.0.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__icu_properties_data-2.0.1", + sha256 = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632", + type = "tar.gz", + urls = ["https://static.crates.io/crates/icu_properties_data/2.0.1/download"], + strip_prefix = "icu_properties_data-2.0.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_properties_data-2.0.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__icu_provider-2.0.0", + sha256 = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af", + type = "tar.gz", + urls = ["https://static.crates.io/crates/icu_provider/2.0.0/download"], + strip_prefix = "icu_provider-2.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.icu_provider-2.0.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__ident_case-1.0.1", @@ -1569,6 +1669,26 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ident_case-1.0.1.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__idna-1.0.3", + sha256 = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/idna/1.0.3/download"], + strip_prefix = "idna-1.0.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.idna-1.0.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__idna_adapter-1.2.1", + sha256 = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344", + type = "tar.gz", + urls = ["https://static.crates.io/crates/idna_adapter/1.2.1/download"], + strip_prefix = "idna_adapter-1.2.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.idna_adapter-1.2.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__indexmap-1.9.3", @@ -1671,12 +1791,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__jod-thread-0.1.2", - sha256 = "8b23360e99b8717f20aaa4598f5a6541efbe30630039fbc7706cf954a87947ae", + name = "vendor_ts__jod-thread-1.0.0", + sha256 = "a037eddb7d28de1d0fc42411f501b53b75838d313908078d6698d064f3029b24", type = "tar.gz", - urls = ["https://static.crates.io/crates/jod-thread/0.1.2/download"], - strip_prefix = "jod-thread-0.1.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jod-thread-0.1.2.bazel"), + urls = ["https://static.crates.io/crates/jod-thread/1.0.0/download"], + strip_prefix = "jod-thread-1.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jod-thread-1.0.0.bazel"), ) maybe( @@ -1731,12 +1851,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__libc-0.2.171", - sha256 = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6", + name = "vendor_ts__libc-0.2.174", + sha256 = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776", type = "tar.gz", - urls = ["https://static.crates.io/crates/libc/0.2.171/download"], - strip_prefix = "libc-0.2.171", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.libc-0.2.171.bazel"), + urls = ["https://static.crates.io/crates/libc/0.2.174/download"], + strip_prefix = "libc-0.2.174", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.libc-0.2.174.bazel"), ) maybe( @@ -1759,6 +1879,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.line-index-0.1.2.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__litemap-0.8.0", + sha256 = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956", + type = "tar.gz", + urls = ["https://static.crates.io/crates/litemap/0.8.0/download"], + strip_prefix = "litemap-0.8.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.litemap-0.8.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__lock_api-0.4.12", @@ -1789,16 +1919,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.log-0.4.27.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__loom-0.7.2", - sha256 = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca", - type = "tar.gz", - urls = ["https://static.crates.io/crates/loom/0.7.2/download"], - strip_prefix = "loom-0.7.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.loom-0.7.2.bazel"), - ) - maybe( http_archive, name = "vendor_ts__matchers-0.1.0", @@ -1811,12 +1931,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__memchr-2.7.4", - sha256 = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3", + name = "vendor_ts__memchr-2.7.5", + sha256 = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0", type = "tar.gz", - urls = ["https://static.crates.io/crates/memchr/2.7.4/download"], - strip_prefix = "memchr-2.7.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.memchr-2.7.4.bazel"), + urls = ["https://static.crates.io/crates/memchr/2.7.5/download"], + strip_prefix = "memchr-2.7.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.memchr-2.7.5.bazel"), ) maybe( @@ -1931,12 +2051,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__num_cpus-1.16.0", - sha256 = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43", + name = "vendor_ts__num_cpus-1.17.0", + sha256 = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b", type = "tar.gz", - urls = ["https://static.crates.io/crates/num_cpus/1.16.0/download"], - strip_prefix = "num_cpus-1.16.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.num_cpus-1.16.0.bazel"), + urls = ["https://static.crates.io/crates/num_cpus/1.17.0/download"], + strip_prefix = "num_cpus-1.17.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.num_cpus-1.17.0.bazel"), ) maybe( @@ -1959,6 +2079,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.oorandom-11.1.5.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__ordered-float-2.10.1", + sha256 = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ordered-float/2.10.1/download"], + strip_prefix = "ordered-float-2.10.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ordered-float-2.10.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__os_str_bytes-7.0.0", @@ -2019,6 +2149,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.pear_codegen-0.2.9.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__percent-encoding-2.3.1", + sha256 = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/percent-encoding/2.3.1/download"], + strip_prefix = "percent-encoding-2.3.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.percent-encoding-2.3.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__perf-event-0.4.7", @@ -2079,6 +2219,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.portable-atomic-1.11.0.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__potential_utf-0.1.2", + sha256 = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585", + type = "tar.gz", + urls = ["https://static.crates.io/crates/potential_utf/0.1.2/download"], + strip_prefix = "potential_utf-0.1.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.potential_utf-0.1.2.bazel"), + ) + maybe( http_archive, name = "vendor_ts__powerfmt-0.2.0", @@ -2101,12 +2251,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__proc-macro2-1.0.94", - sha256 = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84", + name = "vendor_ts__proc-macro2-1.0.95", + sha256 = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778", type = "tar.gz", - urls = ["https://static.crates.io/crates/proc-macro2/1.0.94/download"], - strip_prefix = "proc-macro2-1.0.94", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.proc-macro2-1.0.94.bazel"), + urls = ["https://static.crates.io/crates/proc-macro2/1.0.95/download"], + strip_prefix = "proc-macro2-1.0.95", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.proc-macro2-1.0.95.bazel"), ) maybe( @@ -2131,332 +2281,332 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_abi-0.100.0", - sha256 = "f1651b0f7e8c3eb7c27a88f39d277e69c32bfe58e3be174d286c1a24d6a7a4d8", + name = "vendor_ts__ra-ap-rustc_abi-0.116.0", + sha256 = "a967e3a9cd3e38b543f503978e0eccee461e3aea3f7b10e944959bff41dbe612", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_abi/0.100.0/download"], - strip_prefix = "ra-ap-rustc_abi-0.100.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_abi-0.100.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_abi/0.116.0/download"], + strip_prefix = "ra-ap-rustc_abi-0.116.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_abi-0.116.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_hashes-0.100.0", - sha256 = "2bcd85e93dc0ea850bcfe7957a115957df799ccbc9eea488bdee5ec6780d212b", + name = "vendor_ts__ra-ap-rustc_hashes-0.116.0", + sha256 = "1ea4c755ecbbffa5743c251344f484ebe571ec7bc5b36d80b2a8ae775d1a7a40", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_hashes/0.100.0/download"], - strip_prefix = "ra-ap-rustc_hashes-0.100.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_hashes-0.100.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_hashes/0.116.0/download"], + strip_prefix = "ra-ap-rustc_hashes-0.116.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_hashes-0.116.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_index-0.100.0", - sha256 = "62b295fc0640cd9fe0ecab872ee4a17a96f90a3998ec9f0c4765e9b8415c12cc", + name = "vendor_ts__ra-ap-rustc_index-0.116.0", + sha256 = "aca7ad7cf911538c619caa2162339fe98637e9e46f11bb0484ef96735df4d64a", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_index/0.100.0/download"], - strip_prefix = "ra-ap-rustc_index-0.100.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index-0.100.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_index/0.116.0/download"], + strip_prefix = "ra-ap-rustc_index-0.116.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index-0.116.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_index_macros-0.100.0", - sha256 = "c675f4257023aa933882906f13802cae287e88cc39ab13cbb96809083db0c801", + name = "vendor_ts__ra-ap-rustc_index_macros-0.116.0", + sha256 = "8767ba551c9355bc3031be072cc4bb0381106e5e7cd275e72b7a8c76051c4070", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_index_macros/0.100.0/download"], - strip_prefix = "ra-ap-rustc_index_macros-0.100.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index_macros-0.100.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_index_macros/0.116.0/download"], + strip_prefix = "ra-ap-rustc_index_macros-0.116.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index_macros-0.116.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_lexer-0.100.0", - sha256 = "c8358702c2a510ea84ba5801ddc047d9ad9520902cfb0e6173277610cdce2c9c", + name = "vendor_ts__ra-ap-rustc_lexer-0.116.0", + sha256 = "6101374afb267e6c27e4e2eb0b1352e9f3504c1a8f716f619cd39244e2ed92ab", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_lexer/0.100.0/download"], - strip_prefix = "ra-ap-rustc_lexer-0.100.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_lexer-0.100.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_lexer/0.116.0/download"], + strip_prefix = "ra-ap-rustc_lexer-0.116.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_lexer-0.116.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_parse_format-0.100.0", - sha256 = "b98f402011d46732c35c47bfd111dec0495747fef2ec900ddee7fe15d78449a7", + name = "vendor_ts__ra-ap-rustc_parse_format-0.116.0", + sha256 = "ecd88a19f00da4f43e6727d5013444cbc399804b5046dfa2bbcd28ebed3970ce", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_parse_format/0.100.0/download"], - strip_prefix = "ra-ap-rustc_parse_format-0.100.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_parse_format-0.100.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_parse_format/0.116.0/download"], + strip_prefix = "ra-ap-rustc_parse_format-0.116.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_parse_format-0.116.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_pattern_analysis-0.100.0", - sha256 = "bef3ff73fa4653252ffe1d1e9177a446f49ef46d97140e4816b7ff2dad59ed53", + name = "vendor_ts__ra-ap-rustc_pattern_analysis-0.116.0", + sha256 = "bb332dd32d7850a799862533b1c021e6062558861a4ad57817bf522499fbb892", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_pattern_analysis/0.100.0/download"], - strip_prefix = "ra-ap-rustc_pattern_analysis-0.100.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_pattern_analysis-0.100.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_pattern_analysis/0.116.0/download"], + strip_prefix = "ra-ap-rustc_pattern_analysis-0.116.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_pattern_analysis-0.116.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_base_db-0.0.273", - sha256 = "8fd761118bbafe29e2b187e694c6b8e800f2c7822bbc1d9d2db4ac21fb8b0365", + name = "vendor_ts__ra_ap_base_db-0.0.288", + sha256 = "edf27fccb119fe85faf51f51847df9695d3cca30c2427fed9b4d71e6adebb54f", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_base_db/0.0.273/download"], - strip_prefix = "ra_ap_base_db-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_base_db-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_base_db/0.0.288/download"], + strip_prefix = "ra_ap_base_db-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_base_db-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_cfg-0.0.273", - sha256 = "5ce74ce1af24afd86d3529dbbf5a849d026948b2d8ba51d199b6ea6db6e345b6", + name = "vendor_ts__ra_ap_cfg-0.0.288", + sha256 = "3cea86a5d6e84fd73824c26f52442807af911db038db821124b2ac65fac24209", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_cfg/0.0.273/download"], - strip_prefix = "ra_ap_cfg-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_cfg-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_cfg/0.0.288/download"], + strip_prefix = "ra_ap_cfg-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_cfg-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_edition-0.0.273", - sha256 = "f423b9fb19e3920e4c7039120d09d9c79070a26efe8ff9f787c7234b07f518c5", + name = "vendor_ts__ra_ap_edition-0.0.288", + sha256 = "fb5538d534eeb8526071610664dc64b71ca336b78f6933ff7241d10c1f37e91b", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_edition/0.0.273/download"], - strip_prefix = "ra_ap_edition-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_edition-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_edition/0.0.288/download"], + strip_prefix = "ra_ap_edition-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_edition-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir-0.0.273", - sha256 = "dd4aa8a568b80d288b90c4fa5dc8a3cc405914d261bfd33a3761c1ba41be358d", + name = "vendor_ts__ra_ap_hir-0.0.288", + sha256 = "44796828650900565917ddcc944fecdf6c7d5c3a8a31141f17268ea8c1d2e6f0", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir/0.0.273/download"], - strip_prefix = "ra_ap_hir-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_hir/0.0.288/download"], + strip_prefix = "ra_ap_hir-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir_def-0.0.273", - sha256 = "acb18d9378a828a23ccf87b89199db005adb67ba2a05a37d7a3fcad4d1036e66", + name = "vendor_ts__ra_ap_hir_def-0.0.288", + sha256 = "8949b2fb362a1e4eab4d90c7299f0fad3f2c887d9f7d9c286ac6530da4141f85", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir_def/0.0.273/download"], - strip_prefix = "ra_ap_hir_def-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_def-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_hir_def/0.0.288/download"], + strip_prefix = "ra_ap_hir_def-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_def-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir_expand-0.0.273", - sha256 = "094fa79d8f661f52cf3b7fb8b3d91c4be2ad9e71a3967d3dacd25429fa44b37d", + name = "vendor_ts__ra_ap_hir_expand-0.0.288", + sha256 = "22457a431b5eeb67517e03266fddefe48839b060a674a6b18bd84269012ede1e", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir_expand/0.0.273/download"], - strip_prefix = "ra_ap_hir_expand-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_expand-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_hir_expand/0.0.288/download"], + strip_prefix = "ra_ap_hir_expand-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_expand-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir_ty-0.0.273", - sha256 = "093482d200d5db421db5692e7819bbb14fb717cc8cb0f91f93cce9fde85b3df2", + name = "vendor_ts__ra_ap_hir_ty-0.0.288", + sha256 = "3a4b7a7531414203e11ae447627e2909250eff392c06278ab53ae2a022ecc9fc", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir_ty/0.0.273/download"], - strip_prefix = "ra_ap_hir_ty-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_ty-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_hir_ty/0.0.288/download"], + strip_prefix = "ra_ap_hir_ty-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_ty-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_ide_db-0.0.273", - sha256 = "b655b92dfa9444db8129321b9217d9e4a83a58ee707aa1004a93052acfb43d57", + name = "vendor_ts__ra_ap_ide_db-0.0.288", + sha256 = "77741ceb096d4f5ecf5384210ea5a2b46878125047c6b0df2bdcfac08a20ea0c", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_ide_db/0.0.273/download"], - strip_prefix = "ra_ap_ide_db-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_ide_db-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_ide_db/0.0.288/download"], + strip_prefix = "ra_ap_ide_db-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_ide_db-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_intern-0.0.273", - sha256 = "b4e528496b4d4c351806bb073d3d7f6526535741b9e8801776603c924bbec624", + name = "vendor_ts__ra_ap_intern-0.0.288", + sha256 = "4a1872cd5a425db6d5247a7deca11526e3104757f6732447ac6ee93c3e795725", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_intern/0.0.273/download"], - strip_prefix = "ra_ap_intern-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_intern-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_intern/0.0.288/download"], + strip_prefix = "ra_ap_intern-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_intern-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_load-cargo-0.0.273", - sha256 = "1a97a5070b2f4b99f56683d91b2687aa0c530d8969cc5252ec2ae5644e428ffe", + name = "vendor_ts__ra_ap_load-cargo-0.0.288", + sha256 = "f30f5433f056594b02f1879c5c2ce76ea9fd395f21e2a55df6ce3229db993caa", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_load-cargo/0.0.273/download"], - strip_prefix = "ra_ap_load-cargo-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_load-cargo-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_load-cargo/0.0.288/download"], + strip_prefix = "ra_ap_load-cargo-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_load-cargo-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_mbe-0.0.273", - sha256 = "b187ee5ee3fa726eeea5142242a0397e2200d77084026986a68324b9599f9046", + name = "vendor_ts__ra_ap_mbe-0.0.288", + sha256 = "222a993acaec35e90c08357aecd530b7170cc3a7f13b3ddfd15a200029ccd555", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_mbe/0.0.273/download"], - strip_prefix = "ra_ap_mbe-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_mbe-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_mbe/0.0.288/download"], + strip_prefix = "ra_ap_mbe-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_mbe-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_parser-0.0.273", - sha256 = "2306e6c051e60483f3b317fac9dec6c883b7792eeb8db24ec6f39dbfa5430159", + name = "vendor_ts__ra_ap_parser-0.0.288", + sha256 = "1c5693f5efd27832e1ac572ea756a1a4a3f7eba07f1287268ca111710971c2e5", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_parser/0.0.273/download"], - strip_prefix = "ra_ap_parser-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_parser-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_parser/0.0.288/download"], + strip_prefix = "ra_ap_parser-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_parser-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_paths-0.0.273", - sha256 = "dcedd00499621bdd0f1fe01955c04e4b388197aa826744003afaf6cc2944bc80", + name = "vendor_ts__ra_ap_paths-0.0.288", + sha256 = "39418eff64e59d4bf90dd825ac7d242576e9554669824ebc55a6628bde0aaf10", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_paths/0.0.273/download"], - strip_prefix = "ra_ap_paths-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_paths-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_paths/0.0.288/download"], + strip_prefix = "ra_ap_paths-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_paths-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_proc_macro_api-0.0.273", - sha256 = "7a2e49b550015cd4ad152bd78d92d73594497f2e44f61273f9fed3534ad4bbbe", + name = "vendor_ts__ra_ap_proc_macro_api-0.0.288", + sha256 = "14a315af8c4a9379c26abe7baa143d62e3975ff26f27c65332f9a5edccc56d38", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_proc_macro_api/0.0.273/download"], - strip_prefix = "ra_ap_proc_macro_api-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_proc_macro_api-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_proc_macro_api/0.0.288/download"], + strip_prefix = "ra_ap_proc_macro_api-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_proc_macro_api-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_profile-0.0.273", - sha256 = "87cdbd27ebe02ec21fdae3df303f194bda036a019ecef80d47e0082646f06c54", + name = "vendor_ts__ra_ap_profile-0.0.288", + sha256 = "08274a0adbf8255f8b2672302452e31bbb2ed4d38324da9c72a7bf9cf1428483", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_profile/0.0.273/download"], - strip_prefix = "ra_ap_profile-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_profile-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_profile/0.0.288/download"], + strip_prefix = "ra_ap_profile-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_profile-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_project_model-0.0.273", - sha256 = "5eaa3406c891a7840d20ce615f8decca32cbc9d3654b82dcbcc3a31257ce90b9", + name = "vendor_ts__ra_ap_project_model-0.0.288", + sha256 = "33deecb3724faf91f13b0f1b5115af7c4f5c9dc1dfbbf45f55261aa28f874838", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_project_model/0.0.273/download"], - strip_prefix = "ra_ap_project_model-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_project_model-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_project_model/0.0.288/download"], + strip_prefix = "ra_ap_project_model-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_project_model-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_query-group-macro-0.0.273", - sha256 = "1fbc1748e4876a9b0ccfacfc7e2fe254f30e92ef58d98925282b3803e8b004ed", + name = "vendor_ts__ra_ap_query-group-macro-0.0.288", + sha256 = "5fdefdc9c8d6fd7d85ac572649378e83266262e09400bfdb7c8a7407d3cc2a3e", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_query-group-macro/0.0.273/download"], - strip_prefix = "ra_ap_query-group-macro-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_query-group-macro-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_query-group-macro/0.0.288/download"], + strip_prefix = "ra_ap_query-group-macro-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_query-group-macro-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_span-0.0.273", - sha256 = "ed1d036e738bf32a057d90698df85bcb83ed6263b5fe9fba132c99e8ec3aecaf", + name = "vendor_ts__ra_ap_span-0.0.288", + sha256 = "c20071c89e1f7dd63c803130634f4bb6ce7783dc0e7ff90839d1d0f4e625b7a8", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_span/0.0.273/download"], - strip_prefix = "ra_ap_span-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_span-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_span/0.0.288/download"], + strip_prefix = "ra_ap_span-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_span-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_stdx-0.0.273", - sha256 = "6e3775954ab24408f71e97079a97558078a166a4082052e83256ae4c22dae18d", + name = "vendor_ts__ra_ap_stdx-0.0.288", + sha256 = "552df390b26624eca7936aea1dbbb3786d7a12477e26ef917ffabba19f75ad44", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_stdx/0.0.273/download"], - strip_prefix = "ra_ap_stdx-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_stdx-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_stdx/0.0.288/download"], + strip_prefix = "ra_ap_stdx-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_stdx-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_syntax-0.0.273", - sha256 = "b49b081f209a764700f688db91820a66c2ecfe5f138895d831361cf84f716691", + name = "vendor_ts__ra_ap_syntax-0.0.288", + sha256 = "a78db1a9966c0fa05446b8185da35a325680741119366c6246e4a9800f29143a", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_syntax/0.0.273/download"], - strip_prefix = "ra_ap_syntax-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_syntax/0.0.288/download"], + strip_prefix = "ra_ap_syntax-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_syntax-bridge-0.0.273", - sha256 = "f2740bbe603d527f2cf0aaf51629de7d072694fbbaaeda8264f7591be1493d1b", + name = "vendor_ts__ra_ap_syntax-bridge-0.0.288", + sha256 = "e69ef7fad8598d5c9f14a375d56ec12200fa927bc805b600af419611f4642fdb", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_syntax-bridge/0.0.273/download"], - strip_prefix = "ra_ap_syntax-bridge-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-bridge-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_syntax-bridge/0.0.288/download"], + strip_prefix = "ra_ap_syntax-bridge-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-bridge-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_toolchain-0.0.273", - sha256 = "efbff9f26f307ef958586357d1653d000861dcd3acbaf33a009651e024720c7e", + name = "vendor_ts__ra_ap_toolchain-0.0.288", + sha256 = "628f3f190def67b1116d8bdd6ec4f6f206fada2c93b84ba71086d60c63429282", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_toolchain/0.0.273/download"], - strip_prefix = "ra_ap_toolchain-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_toolchain-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_toolchain/0.0.288/download"], + strip_prefix = "ra_ap_toolchain-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_toolchain-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_tt-0.0.273", - sha256 = "0b1ce3ac14765e414fa6031fda7dc35d3492c74de225aac689ba8b8bf037e1f8", + name = "vendor_ts__ra_ap_tt-0.0.288", + sha256 = "e050f4ad13df59e90e38332860304a3e85ff2fa8d4585b8cc44fc982923c82b1", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_tt/0.0.273/download"], - strip_prefix = "ra_ap_tt-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_tt-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_tt/0.0.288/download"], + strip_prefix = "ra_ap_tt-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_tt-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_vfs-0.0.273", - sha256 = "29427a7c27ce8ddfefb52d77c952a4588c74d0a7ab064dc627129088a90423ca", + name = "vendor_ts__ra_ap_vfs-0.0.288", + sha256 = "62082190f0b3551e4d941bcaaac51a7c39c85b2e193bcc50d0807e1701da4083", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_vfs/0.0.273/download"], - strip_prefix = "ra_ap_vfs-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_vfs/0.0.288/download"], + strip_prefix = "ra_ap_vfs-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_vfs-notify-0.0.273", - sha256 = "d5a0e3095b8216ecc131f38b4b0025cac324a646469a95d2670354aee7278078", + name = "vendor_ts__ra_ap_vfs-notify-0.0.288", + sha256 = "efd7cfa1095b81bd1994ab70e5543c97a8733987eb0ddf390cf3ad58d4e2dc57", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_vfs-notify/0.0.273/download"], - strip_prefix = "ra_ap_vfs-notify-0.0.273", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-notify-0.0.273.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_vfs-notify/0.0.288/download"], + strip_prefix = "ra_ap_vfs-notify-0.0.288", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-notify-0.0.288.bazel"), ) maybe( http_archive, - name = "vendor_ts__rand-0.9.0", - sha256 = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94", + name = "vendor_ts__rand-0.9.1", + sha256 = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97", type = "tar.gz", - urls = ["https://static.crates.io/crates/rand/0.9.0/download"], - strip_prefix = "rand-0.9.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rand-0.9.0.bazel"), + urls = ["https://static.crates.io/crates/rand/0.9.1/download"], + strip_prefix = "rand-0.9.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rand-0.9.1.bazel"), ) maybe( @@ -2509,6 +2659,26 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.redox_syscall-0.5.8.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__ref-cast-1.0.24", + sha256 = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ref-cast/1.0.24/download"], + strip_prefix = "ref-cast-1.0.24", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ref-cast-1.0.24.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ref-cast-impl-1.0.24", + sha256 = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ref-cast-impl/1.0.24/download"], + strip_prefix = "ref-cast-impl-1.0.24", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ref-cast-impl-1.0.24.bazel"), + ) + maybe( http_archive, name = "vendor_ts__regex-1.11.1", @@ -2589,6 +2759,26 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-hash-2.1.1.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__rustc-literal-escaper-0.0.2", + sha256 = "0041b6238913c41fe704213a4a9329e2f685a156d1781998128b4149c230ad04", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rustc-literal-escaper/0.0.2/download"], + strip_prefix = "rustc-literal-escaper-0.0.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-literal-escaper-0.0.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rustc-literal-escaper-0.0.3", + sha256 = "78744cd17f5d01c75b709e49807d1363e02a940ccee2e9e72435843fdb0d076e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rustc-literal-escaper/0.0.3/download"], + strip_prefix = "rustc-literal-escaper-0.0.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-literal-escaper-0.0.3.bazel"), + ) + maybe( http_archive, name = "vendor_ts__rustc-stable-hash-0.1.1", @@ -2599,23 +2789,14 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-stable-hash-0.1.1.bazel"), ) - maybe( - new_git_repository, - name = "vendor_ts__rustc_apfloat-0.2.2-llvm-462a31f5a5ab", - commit = "32968f16ef1b082243f9bf43a3fbd65c381b3e27", - init_submodules = True, - remote = "https://github.com/redsun82/rustc_apfloat.git", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc_apfloat-0.2.2+llvm-462a31f5a5ab.bazel"), - ) - maybe( http_archive, - name = "vendor_ts__rustversion-1.0.20", - sha256 = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2", + name = "vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab", + sha256 = "486c2179b4796f65bfe2ee33679acf0927ac83ecf583ad6c91c3b4570911b9ad", type = "tar.gz", - urls = ["https://static.crates.io/crates/rustversion/1.0.20/download"], - strip_prefix = "rustversion-1.0.20", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustversion-1.0.20.bazel"), + urls = ["https://static.crates.io/crates/rustc_apfloat/0.2.3+llvm-462a31f5a5ab/download"], + strip_prefix = "rustc_apfloat-0.2.3+llvm-462a31f5a5ab", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel"), ) maybe( @@ -2630,32 +2811,32 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__salsa-0.19.0", - sha256 = "dd55c6549513b2a42884dae31e3d4f4ac8a6cc51062e68e24d162133889f327c", + name = "vendor_ts__salsa-0.22.0", + sha256 = "c8fff508e3d6ef42a32607f7538e17171a877a12015e32036f46e99d00c95781", type = "tar.gz", - urls = ["https://static.crates.io/crates/salsa/0.19.0/download"], - strip_prefix = "salsa-0.19.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-0.19.0.bazel"), + urls = ["https://static.crates.io/crates/salsa/0.22.0/download"], + strip_prefix = "salsa-0.22.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-0.22.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__salsa-macro-rules-0.19.0", - sha256 = "2619b4b451beab0a7e4364ff1e6f31950e7e418888fd9bf2f28889671563166a", + name = "vendor_ts__salsa-macro-rules-0.22.0", + sha256 = "8ea72b3c06f2ce6350fe3a0eeb7aaaf842d1d8352b706973c19c4f02e298a87c", type = "tar.gz", - urls = ["https://static.crates.io/crates/salsa-macro-rules/0.19.0/download"], - strip_prefix = "salsa-macro-rules-0.19.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macro-rules-0.19.0.bazel"), + urls = ["https://static.crates.io/crates/salsa-macro-rules/0.22.0/download"], + strip_prefix = "salsa-macro-rules-0.22.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macro-rules-0.22.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__salsa-macros-0.19.0", - sha256 = "4be57a99b3896e8d26850428a6874fb86849e2db874e1db3528e5cee4337d277", + name = "vendor_ts__salsa-macros-0.22.0", + sha256 = "0ce92025bc160b27814a207cb78d680973af17f863c7f4fc56cf3a535e22f378", type = "tar.gz", - urls = ["https://static.crates.io/crates/salsa-macros/0.19.0/download"], - strip_prefix = "salsa-macros-0.19.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macros-0.19.0.bazel"), + urls = ["https://static.crates.io/crates/salsa-macros/0.22.0/download"], + strip_prefix = "salsa-macros-0.22.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macros-0.22.0.bazel"), ) maybe( @@ -2668,6 +2849,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.same-file-1.0.6.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__schemars-0.9.0", + sha256 = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/schemars/0.9.0/download"], + strip_prefix = "schemars-0.9.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.schemars-0.9.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__scoped-tls-1.0.1", @@ -2708,6 +2899,26 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde-1.0.219.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__serde-untagged-0.1.7", + sha256 = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde-untagged/0.1.7/download"], + strip_prefix = "serde-untagged-0.1.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde-untagged-0.1.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__serde-value-0.7.0", + sha256 = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde-value/0.7.0/download"], + strip_prefix = "serde-value-0.7.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde-value-0.7.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__serde_derive-1.0.219", @@ -2730,32 +2941,32 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__serde_spanned-0.6.8", - sha256 = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1", + name = "vendor_ts__serde_spanned-0.6.9", + sha256 = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3", type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_spanned/0.6.8/download"], - strip_prefix = "serde_spanned-0.6.8", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_spanned-0.6.8.bazel"), + urls = ["https://static.crates.io/crates/serde_spanned/0.6.9/download"], + strip_prefix = "serde_spanned-0.6.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_spanned-0.6.9.bazel"), ) maybe( http_archive, - name = "vendor_ts__serde_with-3.12.0", - sha256 = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa", + name = "vendor_ts__serde_with-3.13.0", + sha256 = "bf65a400f8f66fb7b0552869ad70157166676db75ed8181f8104ea91cf9d0b42", type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_with/3.12.0/download"], - strip_prefix = "serde_with-3.12.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with-3.12.0.bazel"), + urls = ["https://static.crates.io/crates/serde_with/3.13.0/download"], + strip_prefix = "serde_with-3.13.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with-3.13.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__serde_with_macros-3.12.0", - sha256 = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e", + name = "vendor_ts__serde_with_macros-3.13.0", + sha256 = "81679d9ed988d5e9a5e6531dc3f2c28efbd639cbd1dfb628df08edea6004da77", type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_with_macros/3.12.0/download"], - strip_prefix = "serde_with_macros-3.12.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with_macros-3.12.0.bazel"), + urls = ["https://static.crates.io/crates/serde_with_macros/3.13.0/download"], + strip_prefix = "serde_with_macros-3.13.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with_macros-3.13.0.bazel"), ) maybe( @@ -2790,12 +3001,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__smallvec-1.14.0", - sha256 = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd", + name = "vendor_ts__smallvec-1.15.1", + sha256 = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03", type = "tar.gz", - urls = ["https://static.crates.io/crates/smallvec/1.14.0/download"], - strip_prefix = "smallvec-1.14.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.smallvec-1.14.0.bazel"), + urls = ["https://static.crates.io/crates/smallvec/1.15.1/download"], + strip_prefix = "smallvec-1.15.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.smallvec-1.15.1.bazel"), ) maybe( @@ -2840,12 +3051,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__syn-2.0.100", - sha256 = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0", + name = "vendor_ts__syn-2.0.103", + sha256 = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8", type = "tar.gz", - urls = ["https://static.crates.io/crates/syn/2.0.100/download"], - strip_prefix = "syn-2.0.100", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.syn-2.0.100.bazel"), + urls = ["https://static.crates.io/crates/syn/2.0.103/download"], + strip_prefix = "syn-2.0.103", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.syn-2.0.103.bazel"), ) maybe( @@ -2878,6 +3089,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thin-vec-0.2.14.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__thiserror-1.0.69", + sha256 = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52", + type = "tar.gz", + urls = ["https://static.crates.io/crates/thiserror/1.0.69/download"], + strip_prefix = "thiserror-1.0.69", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-1.0.69.bazel"), + ) + maybe( http_archive, name = "vendor_ts__thiserror-2.0.12", @@ -2888,6 +3109,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-2.0.12.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__thiserror-impl-1.0.69", + sha256 = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1", + type = "tar.gz", + urls = ["https://static.crates.io/crates/thiserror-impl/1.0.69/download"], + strip_prefix = "thiserror-impl-1.0.69", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-impl-1.0.69.bazel"), + ) + maybe( http_archive, name = "vendor_ts__thiserror-impl-2.0.12", @@ -2940,32 +3171,52 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__toml-0.8.20", - sha256 = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148", + name = "vendor_ts__tinystr-0.8.1", + sha256 = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tinystr/0.8.1/download"], + strip_prefix = "tinystr-0.8.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tinystr-0.8.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__toml-0.8.23", + sha256 = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362", type = "tar.gz", - urls = ["https://static.crates.io/crates/toml/0.8.20/download"], - strip_prefix = "toml-0.8.20", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml-0.8.20.bazel"), + urls = ["https://static.crates.io/crates/toml/0.8.23/download"], + strip_prefix = "toml-0.8.23", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml-0.8.23.bazel"), ) maybe( http_archive, - name = "vendor_ts__toml_datetime-0.6.8", - sha256 = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41", + name = "vendor_ts__toml_datetime-0.6.11", + sha256 = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c", type = "tar.gz", - urls = ["https://static.crates.io/crates/toml_datetime/0.6.8/download"], - strip_prefix = "toml_datetime-0.6.8", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_datetime-0.6.8.bazel"), + urls = ["https://static.crates.io/crates/toml_datetime/0.6.11/download"], + strip_prefix = "toml_datetime-0.6.11", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_datetime-0.6.11.bazel"), ) maybe( http_archive, - name = "vendor_ts__toml_edit-0.22.24", - sha256 = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474", + name = "vendor_ts__toml_edit-0.22.27", + sha256 = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a", type = "tar.gz", - urls = ["https://static.crates.io/crates/toml_edit/0.22.24/download"], - strip_prefix = "toml_edit-0.22.24", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_edit-0.22.24.bazel"), + urls = ["https://static.crates.io/crates/toml_edit/0.22.27/download"], + strip_prefix = "toml_edit-0.22.27", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_edit-0.22.27.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__toml_write-0.1.2", + sha256 = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801", + type = "tar.gz", + urls = ["https://static.crates.io/crates/toml_write/0.1.2/download"], + strip_prefix = "toml_write-0.1.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_write-0.1.2.bazel"), ) maybe( @@ -3108,6 +3359,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.typed-arena-2.0.2.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__typeid-1.0.3", + sha256 = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/typeid/1.0.3/download"], + strip_prefix = "typeid-1.0.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.typeid-1.0.3.bazel"), + ) + maybe( http_archive, name = "vendor_ts__uncased-0.9.10", @@ -3168,6 +3429,26 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unsafe-libyaml-0.2.11.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__url-2.5.4", + sha256 = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60", + type = "tar.gz", + urls = ["https://static.crates.io/crates/url/2.5.4/download"], + strip_prefix = "url-2.5.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.url-2.5.4.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__utf8_iter-1.0.4", + sha256 = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be", + type = "tar.gz", + urls = ["https://static.crates.io/crates/utf8_iter/1.0.4/download"], + strip_prefix = "utf8_iter-1.0.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.utf8_iter-1.0.4.bazel"), + ) + maybe( http_archive, name = "vendor_ts__utf8parse-0.2.2", @@ -3318,16 +3599,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__windows-0.58.0", - sha256 = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows/0.58.0/download"], - strip_prefix = "windows-0.58.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-0.58.0.bazel"), - ) - maybe( http_archive, name = "vendor_ts__windows-core-0.52.0", @@ -3338,36 +3609,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-core-0.52.0.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__windows-core-0.58.0", - sha256 = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-core/0.58.0/download"], - strip_prefix = "windows-core-0.58.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-core-0.58.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows-implement-0.58.0", - sha256 = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-implement/0.58.0/download"], - strip_prefix = "windows-implement-0.58.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-implement-0.58.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows-interface-0.58.0", - sha256 = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-interface/0.58.0/download"], - strip_prefix = "windows-interface-0.58.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-interface-0.58.0.bazel"), - ) - maybe( http_archive, name = "vendor_ts__windows-link-0.1.1", @@ -3378,26 +3619,6 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-link-0.1.1.bazel"), ) - maybe( - http_archive, - name = "vendor_ts__windows-result-0.2.0", - sha256 = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-result/0.2.0/download"], - strip_prefix = "windows-result-0.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-result-0.2.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows-strings-0.1.0", - sha256 = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-strings/0.1.0/download"], - strip_prefix = "windows-strings-0.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-strings-0.1.0.bazel"), - ) - maybe( http_archive, name = "vendor_ts__windows-sys-0.48.0", @@ -3428,6 +3649,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-sys-0.59.0.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__windows-sys-0.60.2", + sha256 = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-sys/0.60.2/download"], + strip_prefix = "windows-sys-0.60.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-sys-0.60.2.bazel"), + ) + maybe( http_archive, name = "vendor_ts__windows-targets-0.48.5", @@ -3448,6 +3679,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-targets-0.52.6.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__windows-targets-0.53.2", + sha256 = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-targets/0.53.2/download"], + strip_prefix = "windows-targets-0.53.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-targets-0.53.2.bazel"), + ) + maybe( http_archive, name = "vendor_ts__windows_aarch64_gnullvm-0.48.5", @@ -3468,6 +3709,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_aarch64_gnullvm-0.52.6.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__windows_aarch64_gnullvm-0.53.0", + sha256 = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_aarch64_gnullvm/0.53.0/download"], + strip_prefix = "windows_aarch64_gnullvm-0.53.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_aarch64_gnullvm-0.53.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__windows_aarch64_msvc-0.48.5", @@ -3488,6 +3739,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_aarch64_msvc-0.52.6.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__windows_aarch64_msvc-0.53.0", + sha256 = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_aarch64_msvc/0.53.0/download"], + strip_prefix = "windows_aarch64_msvc-0.53.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_aarch64_msvc-0.53.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__windows_i686_gnu-0.48.5", @@ -3508,6 +3769,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_gnu-0.52.6.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__windows_i686_gnu-0.53.0", + sha256 = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_i686_gnu/0.53.0/download"], + strip_prefix = "windows_i686_gnu-0.53.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_gnu-0.53.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__windows_i686_gnullvm-0.52.6", @@ -3518,6 +3789,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_gnullvm-0.52.6.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__windows_i686_gnullvm-0.53.0", + sha256 = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_i686_gnullvm/0.53.0/download"], + strip_prefix = "windows_i686_gnullvm-0.53.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_gnullvm-0.53.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__windows_i686_msvc-0.48.5", @@ -3538,6 +3819,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_msvc-0.52.6.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__windows_i686_msvc-0.53.0", + sha256 = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_i686_msvc/0.53.0/download"], + strip_prefix = "windows_i686_msvc-0.53.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_msvc-0.53.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__windows_x86_64_gnu-0.48.5", @@ -3558,6 +3849,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_gnu-0.52.6.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__windows_x86_64_gnu-0.53.0", + sha256 = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_x86_64_gnu/0.53.0/download"], + strip_prefix = "windows_x86_64_gnu-0.53.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_gnu-0.53.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__windows_x86_64_gnullvm-0.48.5", @@ -3578,6 +3879,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_gnullvm-0.52.6.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__windows_x86_64_gnullvm-0.53.0", + sha256 = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_x86_64_gnullvm/0.53.0/download"], + strip_prefix = "windows_x86_64_gnullvm-0.53.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_gnullvm-0.53.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__windows_x86_64_msvc-0.48.5", @@ -3600,12 +3911,22 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__winnow-0.7.3", - sha256 = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1", + name = "vendor_ts__windows_x86_64_msvc-0.53.0", + sha256 = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486", type = "tar.gz", - urls = ["https://static.crates.io/crates/winnow/0.7.3/download"], - strip_prefix = "winnow-0.7.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winnow-0.7.3.bazel"), + urls = ["https://static.crates.io/crates/windows_x86_64_msvc/0.53.0/download"], + strip_prefix = "windows_x86_64_msvc-0.53.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_msvc-0.53.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__winnow-0.7.11", + sha256 = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd", + type = "tar.gz", + urls = ["https://static.crates.io/crates/winnow/0.7.11/download"], + strip_prefix = "winnow-0.7.11", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winnow-0.7.11.bazel"), ) maybe( @@ -3618,6 +3939,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-bindgen-rt-0.33.0.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__writeable-0.6.1", + sha256 = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb", + type = "tar.gz", + urls = ["https://static.crates.io/crates/writeable/0.6.1/download"], + strip_prefix = "writeable-0.6.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.writeable-0.6.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__yansi-1.0.1", @@ -3628,6 +3959,26 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.yansi-1.0.1.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__yoke-0.8.0", + sha256 = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc", + type = "tar.gz", + urls = ["https://static.crates.io/crates/yoke/0.8.0/download"], + strip_prefix = "yoke-0.8.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.yoke-0.8.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__yoke-derive-0.8.0", + sha256 = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6", + type = "tar.gz", + urls = ["https://static.crates.io/crates/yoke-derive/0.8.0/download"], + strip_prefix = "yoke-derive-0.8.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.yoke-derive-0.8.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__zerocopy-0.7.35", @@ -3668,6 +4019,56 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerocopy-derive-0.8.20.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__zerofrom-0.1.6", + sha256 = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/zerofrom/0.1.6/download"], + strip_prefix = "zerofrom-0.1.6", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerofrom-0.1.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__zerofrom-derive-0.1.6", + sha256 = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502", + type = "tar.gz", + urls = ["https://static.crates.io/crates/zerofrom-derive/0.1.6/download"], + strip_prefix = "zerofrom-derive-0.1.6", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerofrom-derive-0.1.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__zerotrie-0.2.2", + sha256 = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595", + type = "tar.gz", + urls = ["https://static.crates.io/crates/zerotrie/0.2.2/download"], + strip_prefix = "zerotrie-0.2.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerotrie-0.2.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__zerovec-0.11.2", + sha256 = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428", + type = "tar.gz", + urls = ["https://static.crates.io/crates/zerovec/0.11.2/download"], + strip_prefix = "zerovec-0.11.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerovec-0.11.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__zerovec-derive-0.11.1", + sha256 = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/zerovec-derive/0.11.1/download"], + strip_prefix = "zerovec-derive-0.11.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zerovec-derive-0.11.1.bazel"), + ) + maybe( http_archive, name = "vendor_ts__zstd-0.13.3", @@ -3699,11 +4100,11 @@ def crate_repositories(): ) return [ - struct(repo = "vendor_ts__anyhow-1.0.97", is_dev_dep = False), + struct(repo = "vendor_ts__anyhow-1.0.98", is_dev_dep = False), struct(repo = "vendor_ts__argfile-0.2.1", is_dev_dep = False), - struct(repo = "vendor_ts__chalk-ir-0.100.0", is_dev_dep = False), - struct(repo = "vendor_ts__chrono-0.4.40", is_dev_dep = False), - struct(repo = "vendor_ts__clap-4.5.35", is_dev_dep = False), + struct(repo = "vendor_ts__chalk-ir-0.103.0", is_dev_dep = False), + struct(repo = "vendor_ts__chrono-0.4.41", is_dev_dep = False), + struct(repo = "vendor_ts__clap-4.5.40", is_dev_dep = False), struct(repo = "vendor_ts__dunce-1.0.5", is_dev_dep = False), struct(repo = "vendor_ts__either-1.15.0", is_dev_dep = False), struct(repo = "vendor_ts__encoding-0.2.33", is_dev_dep = False), @@ -3715,32 +4116,32 @@ def crate_repositories(): struct(repo = "vendor_ts__lazy_static-1.5.0", is_dev_dep = False), struct(repo = "vendor_ts__mustache-0.9.0", is_dev_dep = False), struct(repo = "vendor_ts__num-traits-0.2.19", is_dev_dep = False), - struct(repo = "vendor_ts__num_cpus-1.16.0", is_dev_dep = False), - struct(repo = "vendor_ts__proc-macro2-1.0.94", is_dev_dep = False), + struct(repo = "vendor_ts__num_cpus-1.17.0", is_dev_dep = False), + struct(repo = "vendor_ts__proc-macro2-1.0.95", is_dev_dep = False), struct(repo = "vendor_ts__quote-1.0.40", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_base_db-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_cfg-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir_def-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir_expand-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir_ty-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_ide_db-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_intern-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_load-cargo-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_parser-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_paths-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_project_model-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_span-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_stdx-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_syntax-0.0.273", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_vfs-0.0.273", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_base_db-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_cfg-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_def-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_expand-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_ty-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_ide_db-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_intern-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_load-cargo-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_parser-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_paths-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_project_model-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_span-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_stdx-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_syntax-0.0.288", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_vfs-0.0.288", is_dev_dep = False), struct(repo = "vendor_ts__rayon-1.10.0", is_dev_dep = False), struct(repo = "vendor_ts__regex-1.11.1", is_dev_dep = False), struct(repo = "vendor_ts__serde-1.0.219", is_dev_dep = False), struct(repo = "vendor_ts__serde_json-1.0.140", is_dev_dep = False), - struct(repo = "vendor_ts__serde_with-3.12.0", is_dev_dep = False), - struct(repo = "vendor_ts__syn-2.0.100", is_dev_dep = False), - struct(repo = "vendor_ts__toml-0.8.20", is_dev_dep = False), + struct(repo = "vendor_ts__serde_with-3.13.0", is_dev_dep = False), + struct(repo = "vendor_ts__syn-2.0.103", is_dev_dep = False), + struct(repo = "vendor_ts__toml-0.8.23", is_dev_dep = False), struct(repo = "vendor_ts__tracing-0.1.41", is_dev_dep = False), struct(repo = "vendor_ts__tracing-flame-0.2.0", is_dev_dep = False), struct(repo = "vendor_ts__tracing-subscriber-0.3.19", is_dev_dep = False), @@ -3750,7 +4151,7 @@ def crate_repositories(): struct(repo = "vendor_ts__triomphe-0.1.14", is_dev_dep = False), struct(repo = "vendor_ts__ungrammar-1.16.1", is_dev_dep = False), struct(repo = "vendor_ts__zstd-0.13.3", is_dev_dep = False), - struct(repo = "vendor_ts__rand-0.9.0", is_dev_dep = True), + struct(repo = "vendor_ts__rand-0.9.1", is_dev_dep = True), struct(repo = "vendor_ts__tree-sitter-json-0.24.8", is_dev_dep = True), struct(repo = "vendor_ts__tree-sitter-ql-0.23.1", is_dev_dep = True), ] diff --git a/misc/codegen/codegen.py b/misc/codegen/codegen.py index ae3a67d3fba6..7510405cd7fb 100755 --- a/misc/codegen/codegen.py +++ b/misc/codegen/codegen.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -""" Driver script to run all code generation """ +"""Driver script to run all code generation""" import argparse import logging @@ -9,7 +9,7 @@ import typing import shlex -if 'BUILD_WORKSPACE_DIRECTORY' not in os.environ: +if "BUILD_WORKSPACE_DIRECTORY" not in os.environ: # we are not running with `bazel run`, set up module search path _repo_root = pathlib.Path(__file__).resolve().parents[2] sys.path.append(str(_repo_root)) @@ -29,57 +29,105 @@ def _parse_args() -> argparse.Namespace: conf = None p = argparse.ArgumentParser(description="Code generation suite") - p.add_argument("--generate", type=lambda x: x.split(","), - help="specify what targets to generate as a comma separated list, choosing among dbscheme, ql, " - "trap, cpp and rust") - p.add_argument("--verbose", "-v", action="store_true", help="print more information") + p.add_argument( + "--generate", + type=lambda x: x.split(","), + help="specify what targets to generate as a comma separated list, choosing among dbscheme, ql, " + "trap, cpp and rust", + ) + p.add_argument( + "--verbose", "-v", action="store_true", help="print more information" + ) p.add_argument("--quiet", "-q", action="store_true", help="only print errors") - p.add_argument("--configuration-file", "-c", type=_abspath, default=conf, - help="A configuration file to load options from. By default, the first codegen.conf file found by " - "going up directories from the current location. If present all paths provided in options are " - "considered relative to its directory") - p.add_argument("--root-dir", type=_abspath, - help="the directory that should be regarded as the root of the language pack codebase. Used to " - "compute QL imports and in some comments and as root for relative paths provided as options. " - "If not provided it defaults to the directory of the configuration file, if any") + p.add_argument( + "--configuration-file", + "-c", + type=_abspath, + default=conf, + help="A configuration file to load options from. By default, the first codegen.conf file found by " + "going up directories from the current location. If present all paths provided in options are " + "considered relative to its directory", + ) + p.add_argument( + "--root-dir", + type=_abspath, + help="the directory that should be regarded as the root of the language pack codebase. Used to " + "compute QL imports and in some comments and as root for relative paths provided as options. " + "If not provided it defaults to the directory of the configuration file, if any", + ) path_arguments = [ - p.add_argument("--schema", - help="input schema file (default schema.py)"), - p.add_argument("--dbscheme", - help="output file for dbscheme generation, input file for trap generation"), - p.add_argument("--ql-output", - help="output directory for generated QL files"), - p.add_argument("--ql-stub-output", - help="output directory for QL stub/customization files. Defines also the " - "generated qll file importing every class file"), - p.add_argument("--ql-test-output", - help="output directory for QL generated extractor test files"), - p.add_argument("--ql-cfg-output", - help="output directory for QL CFG layer (optional)."), - p.add_argument("--cpp-output", - help="output directory for generated C++ files, required if trap or cpp is provided to " - "--generate"), - p.add_argument("--rust-output", - help="output directory for generated Rust files, required if rust is provided to " - "--generate"), - p.add_argument("--generated-registry", - help="registry file containing information about checked-in generated code. A .gitattributes" - "file is generated besides it to mark those files with linguist-generated=true. Must" - "be in a directory containing all generated code."), + p.add_argument("--schema", help="input schema file (default schema.py)"), + p.add_argument( + "--dbscheme", + help="output file for dbscheme generation, input file for trap generation", + ), + p.add_argument("--ql-output", help="output directory for generated QL files"), + p.add_argument( + "--ql-stub-output", + help="output directory for QL stub/customization files. Defines also the " + "generated qll file importing every class file", + ), + p.add_argument( + "--ql-test-output", + help="output directory for QL generated extractor test files", + ), + p.add_argument( + "--ql-cfg-output", help="output directory for QL CFG layer (optional)." + ), + p.add_argument( + "--cpp-output", + help="output directory for generated C++ files, required if trap or cpp is provided to " + "--generate", + ), + p.add_argument( + "--rust-output", + help="output directory for generated Rust files, required if rust is provided to " + "--generate", + ), + p.add_argument( + "--generated-registry", + help="registry file containing information about checked-in generated code. A .gitattributes" + "file is generated besides it to mark those files with linguist-generated=true. Must" + "be in a directory containing all generated code.", + ), ] - p.add_argument("--script-name", - help="script name to put in header comments of generated files. By default, the path of this " - "script relative to the root directory") - p.add_argument("--trap-library", - help="path to the trap library from an include directory, required if generating C++ trap bindings"), - p.add_argument("--ql-format", action="store_true", default=True, - help="use codeql to autoformat QL files (which is the default)") - p.add_argument("--no-ql-format", action="store_false", dest="ql_format", help="do not format QL files") - p.add_argument("--codeql-binary", default="codeql", help="command to use for QL formatting (default %(default)s)") - p.add_argument("--force", "-f", action="store_true", - help="generate all files without skipping unchanged files and overwriting modified ones") - p.add_argument("--use-current-directory", action="store_true", - help="do not consider paths as relative to --root-dir or the configuration directory") + p.add_argument( + "--script-name", + help="script name to put in header comments of generated files. By default, the path of this " + "script relative to the root directory", + ) + p.add_argument( + "--trap-library", + help="path to the trap library from an include directory, required if generating C++ trap bindings", + ), + p.add_argument( + "--ql-format", + action="store_true", + default=True, + help="use codeql to autoformat QL files (which is the default)", + ) + p.add_argument( + "--no-ql-format", + action="store_false", + dest="ql_format", + help="do not format QL files", + ) + p.add_argument( + "--codeql-binary", + default="codeql", + help="command to use for QL formatting (default %(default)s)", + ) + p.add_argument( + "--force", + "-f", + action="store_true", + help="generate all files without skipping unchanged files and overwriting modified ones", + ) + p.add_argument( + "--use-current-directory", + action="store_true", + help="do not consider paths as relative to --root-dir or the configuration directory", + ) opts = p.parse_args() if opts.configuration_file is not None: with open(opts.configuration_file) as config: @@ -97,7 +145,15 @@ def _parse_args() -> argparse.Namespace: for arg in path_arguments: path = getattr(opts, arg.dest) if path is not None: - setattr(opts, arg.dest, _abspath(path) if opts.use_current_directory else (opts.root_dir / path)) + setattr( + opts, + arg.dest, + ( + _abspath(path) + if opts.use_current_directory + else (opts.root_dir / path) + ), + ) if not opts.script_name: opts.script_name = paths.exe_file.relative_to(opts.root_dir) return opts @@ -115,7 +171,7 @@ def run(): log_level = logging.ERROR else: log_level = logging.INFO - logging.basicConfig(format="{levelname} {message}", style='{', level=log_level) + logging.basicConfig(format="{levelname} {message}", style="{", level=log_level) for target in opts.generate: generate(target, opts, render.Renderer(opts.script_name)) diff --git a/misc/codegen/generators/cppgen.py b/misc/codegen/generators/cppgen.py index 1a9a64663c19..cf99167fa46d 100644 --- a/misc/codegen/generators/cppgen.py +++ b/misc/codegen/generators/cppgen.py @@ -49,7 +49,11 @@ def _get_trap_name(cls: schema.Class, p: schema.Property) -> str | None: return inflection.pluralize(trap_name) -def _get_field(cls: schema.Class, p: schema.Property, add_or_none_except: typing.Optional[str] = None) -> cpp.Field: +def _get_field( + cls: schema.Class, + p: schema.Property, + add_or_none_except: typing.Optional[str] = None, +) -> cpp.Field: args = dict( field_name=p.name + ("_" if p.name in cpp.cpp_keywords else ""), base_type=_get_type(p.type, add_or_none_except), @@ -83,14 +87,15 @@ def _get_class(self, name: str) -> cpp.Class: bases=[self._get_class(b) for b in cls.bases], fields=[ _get_field(cls, p, self._add_or_none_except) - for p in cls.properties if "cpp_skip" not in p.pragmas and not p.synth + for p in cls.properties + if "cpp_skip" not in p.pragmas and not p.synth ], final=not cls.derived, trap_name=trap_name, ) def get_classes(self): - ret = {'': []} + ret = {"": []} for k, cls in self._classmap.items(): if not cls.synth: ret.setdefault(cls.group, []).append(self._get_class(cls.name)) @@ -102,6 +107,12 @@ def generate(opts, renderer): processor = Processor(schemaloader.load_file(opts.schema)) out = opts.cpp_output for dir, classes in processor.get_classes().items(): - renderer.render(cpp.ClassList(classes, opts.schema, - include_parent=bool(dir), - trap_library=opts.trap_library), out / dir / "TrapClasses") + renderer.render( + cpp.ClassList( + classes, + opts.schema, + include_parent=bool(dir), + trap_library=opts.trap_library, + ), + out / dir / "TrapClasses", + ) diff --git a/misc/codegen/generators/dbschemegen.py b/misc/codegen/generators/dbschemegen.py index f861972cdd68..c28fce746b97 100755 --- a/misc/codegen/generators/dbschemegen.py +++ b/misc/codegen/generators/dbschemegen.py @@ -13,6 +13,7 @@ as columns The type hierarchy will be translated to corresponding `union` declarations. """ + import typing import inflection @@ -29,7 +30,7 @@ class Error(Exception): def dbtype(typename: str, add_or_none_except: typing.Optional[str] = None) -> str: - """ translate a type to a dbscheme counterpart, using `@lower_underscore` format for classes. + """translate a type to a dbscheme counterpart, using `@lower_underscore` format for classes. For class types, appends an underscore followed by `null` if provided """ if typename[0].isupper(): @@ -42,12 +43,18 @@ def dbtype(typename: str, add_or_none_except: typing.Optional[str] = None) -> st return typename -def cls_to_dbscheme(cls: schema.Class, lookup: typing.Dict[str, schema.Class], add_or_none_except: typing.Optional[str] = None): - """ Yield all dbscheme entities needed to model class `cls` """ +def cls_to_dbscheme( + cls: schema.Class, + lookup: typing.Dict[str, schema.Class], + add_or_none_except: typing.Optional[str] = None, +): + """Yield all dbscheme entities needed to model class `cls`""" if cls.synth: return if cls.derived: - yield Union(dbtype(cls.name), (dbtype(c) for c in cls.derived if not lookup[c].synth)) + yield Union( + dbtype(cls.name), (dbtype(c) for c in cls.derived if not lookup[c].synth) + ) dir = pathlib.Path(cls.group) if cls.group else None # output a table specific to a class only if it is a leaf class or it has 1-to-1 properties # Leaf classes need a table to bind the `@` ids @@ -61,9 +68,11 @@ def cls_to_dbscheme(cls: schema.Class, lookup: typing.Dict[str, schema.Class], a name=inflection.tableize(cls.name), columns=[ Column("id", type=dbtype(cls.name), binding=binding), - ] + [ + ] + + [ Column(f.name, dbtype(f.type, add_or_none_except)) - for f in cls.properties if f.is_single and not f.synth + for f in cls.properties + if f.is_single and not f.synth ], dir=dir, ) @@ -74,28 +83,37 @@ def cls_to_dbscheme(cls: schema.Class, lookup: typing.Dict[str, schema.Class], a continue if f.is_unordered: yield Table( - name=overridden_table_name or inflection.tableize(f"{cls.name}_{f.name}"), + name=overridden_table_name + or inflection.tableize(f"{cls.name}_{f.name}"), columns=[ Column("id", type=dbtype(cls.name)), - Column(inflection.singularize(f.name), dbtype(f.type, add_or_none_except)), + Column( + inflection.singularize(f.name), + dbtype(f.type, add_or_none_except), + ), ], dir=dir, ) elif f.is_repeated: yield Table( keyset=KeySet(["id", "index"]), - name=overridden_table_name or inflection.tableize(f"{cls.name}_{f.name}"), + name=overridden_table_name + or inflection.tableize(f"{cls.name}_{f.name}"), columns=[ Column("id", type=dbtype(cls.name)), Column("index", type="int"), - Column(inflection.singularize(f.name), dbtype(f.type, add_or_none_except)), + Column( + inflection.singularize(f.name), + dbtype(f.type, add_or_none_except), + ), ], dir=dir, ) elif f.is_optional: yield Table( keyset=KeySet(["id"]), - name=overridden_table_name or inflection.tableize(f"{cls.name}_{f.name}"), + name=overridden_table_name + or inflection.tableize(f"{cls.name}_{f.name}"), columns=[ Column("id", type=dbtype(cls.name)), Column(f.name, dbtype(f.type, add_or_none_except)), @@ -105,7 +123,8 @@ def cls_to_dbscheme(cls: schema.Class, lookup: typing.Dict[str, schema.Class], a elif f.is_predicate: yield Table( keyset=KeySet(["id"]), - name=overridden_table_name or inflection.underscore(f"{cls.name}_{f.name}"), + name=overridden_table_name + or inflection.underscore(f"{cls.name}_{f.name}"), columns=[ Column("id", type=dbtype(cls.name)), ], @@ -119,33 +138,46 @@ def check_name_conflicts(decls: list[Table | Union]): match decl: case Table(name=name): if name in names: - raise Error(f"Duplicate table name: { - name}, you can use `@ql.db_table_name` on a property to resolve this") + raise Error( + f"Duplicate table name: { + name}, you can use `@ql.db_table_name` on a property to resolve this" + ) names.add(name) def get_declarations(data: schema.Schema): add_or_none_except = data.root_class.name if data.null else None - declarations = [d for cls in data.classes.values() if not cls.imported for d in cls_to_dbscheme(cls, - data.classes, add_or_none_except)] + declarations = [ + d + for cls in data.classes.values() + if not cls.imported + for d in cls_to_dbscheme(cls, data.classes, add_or_none_except) + ] if data.null: property_classes = { - prop.type for cls in data.classes.values() for prop in cls.properties + prop.type + for cls in data.classes.values() + for prop in cls.properties if cls.name != data.null and prop.type and prop.type[0].isupper() } declarations += [ - Union(dbtype(t, data.null), [dbtype(t), dbtype(data.null)]) for t in sorted(property_classes) + Union(dbtype(t, data.null), [dbtype(t), dbtype(data.null)]) + for t in sorted(property_classes) ] check_name_conflicts(declarations) return declarations -def get_includes(data: schema.Schema, include_dir: pathlib.Path, root_dir: pathlib.Path): +def get_includes( + data: schema.Schema, include_dir: pathlib.Path, root_dir: pathlib.Path +): includes = [] for inc in data.includes: inc = include_dir / inc with open(inc) as inclusion: - includes.append(SchemeInclude(src=inc.relative_to(root_dir), data=inclusion.read())) + includes.append( + SchemeInclude(src=inc.relative_to(root_dir), data=inclusion.read()) + ) return includes @@ -155,8 +187,10 @@ def generate(opts, renderer): data = schemaloader.load_file(input) - dbscheme = Scheme(src=input.name, - includes=get_includes(data, include_dir=input.parent, root_dir=input.parent), - declarations=get_declarations(data)) + dbscheme = Scheme( + src=input.name, + includes=get_includes(data, include_dir=input.parent, root_dir=input.parent), + declarations=get_declarations(data), + ) renderer.render(dbscheme, out) diff --git a/misc/codegen/generators/qlgen.py b/misc/codegen/generators/qlgen.py index 7e898135d01f..c3848917c49e 100755 --- a/misc/codegen/generators/qlgen.py +++ b/misc/codegen/generators/qlgen.py @@ -19,6 +19,7 @@ * one `.ql` test query for all single properties and on `_.ql` test query for each optional or repeated property """ + # TODO this should probably be split in different generators now: ql, qltest, maybe qlsynth import logging @@ -29,6 +30,7 @@ import typing import itertools import os +import dataclasses import inflection @@ -70,7 +72,7 @@ class NoClasses(Error): abbreviations.update({f"{k}s": f"{v}s" for k, v in abbreviations.items()}) -_abbreviations_re = re.compile("|".join(fr"\b{abbr}\b" for abbr in abbreviations)) +_abbreviations_re = re.compile("|".join(rf"\b{abbr}\b" for abbr in abbreviations)) def _humanize(s: str) -> str: @@ -98,110 +100,211 @@ def _get_doc(cls: schema.Class, prop: schema.Property, plural=None): return format.format(**{noun: transform(noun) for noun in nouns}) prop_name = _humanize(prop.name) - class_name = cls.pragmas.get("ql_default_doc_name", _humanize(inflection.underscore(cls.name))) + class_name = cls.pragmas.get( + "ql_default_doc_name", _humanize(inflection.underscore(cls.name)) + ) if prop.is_predicate: return f"this {class_name} {prop_name}" if plural is not None: - prop_name = inflection.pluralize(prop_name) if plural else inflection.singularize(prop_name) + prop_name = ( + inflection.pluralize(prop_name) + if plural + else inflection.singularize(prop_name) + ) return f"{prop_name} of this {class_name}" -def _type_is_hideable(t: str, lookup: typing.Dict[str, schema.ClassBase]) -> bool: - if t in lookup: - match lookup[t]: +@dataclasses.dataclass +class Resolver: + lookup: typing.Dict[str, schema.ClassBase] + _property_cache: typing.Dict[tuple[int, int], ql.Property] = dataclasses.field( + default_factory=dict, init=False + ) + _class_cache: typing.Dict[int, ql.Class] = dataclasses.field( + default_factory=dict, init=False + ) + + def _type_is_hideable(self, t: str) -> bool: + match self.lookup.get(t): case schema.Class() as cls: return "ql_hideable" in cls.pragmas - return False - - -def get_ql_property(cls: schema.Class, prop: schema.Property, lookup: typing.Dict[str, schema.ClassBase], - prev_child: str = "") -> ql.Property: - - args = dict( - type=prop.type if not prop.is_predicate else "predicate", - qltest_skip="qltest_skip" in prop.pragmas, - prev_child=prev_child if prop.is_child else None, - is_optional=prop.is_optional, - is_predicate=prop.is_predicate, - is_unordered=prop.is_unordered, - description=prop.description, - synth=bool(cls.synth) or prop.synth, - type_is_hideable=_type_is_hideable(prop.type, lookup), - type_is_codegen_class=prop.type in lookup and not lookup[prop.type].imported, - internal="ql_internal" in prop.pragmas, - ) - ql_name = prop.pragmas.get("ql_name", prop.name) - db_table_name = prop.pragmas.get("ql_db_table_name") - if db_table_name and prop.is_single: - raise Error(f"`db_table_name` pragma is not supported for single properties, but {cls.name}.{prop.name} has it") - if prop.is_single: - args.update( - singular=inflection.camelize(ql_name), - tablename=inflection.tableize(cls.name), - tableparams=["this"] + ["result" if p is prop else "_" for p in cls.properties if p.is_single], - doc=_get_doc(cls, prop), - ) - elif prop.is_repeated: - args.update( - singular=inflection.singularize(inflection.camelize(ql_name)), - plural=inflection.pluralize(inflection.camelize(ql_name)), - tablename=db_table_name or inflection.tableize(f"{cls.name}_{prop.name}"), - tableparams=["this", "index", "result"] if not prop.is_unordered else ["this", "result"], - doc=_get_doc(cls, prop, plural=False), - doc_plural=_get_doc(cls, prop, plural=True), - ) - elif prop.is_optional: - args.update( - singular=inflection.camelize(ql_name), - tablename=db_table_name or inflection.tableize(f"{cls.name}_{prop.name}"), - tableparams=["this", "result"], - doc=_get_doc(cls, prop), - ) - elif prop.is_predicate: - args.update( - singular=inflection.camelize(ql_name, uppercase_first_letter=False), - tablename=db_table_name or inflection.underscore(f"{cls.name}_{prop.name}"), - tableparams=["this"], - doc=_get_doc(cls, prop), + case _: + return False + + def get_ql_property( + self, + cls: schema.Class, + prop: schema.Property, + ) -> ql.Property: + cache_key = (id(cls), id(prop)) + if cache_key not in self._property_cache: + args = dict( + type=prop.type if not prop.is_predicate else "predicate", + qltest_skip="qltest_skip" in prop.pragmas, + is_optional=prop.is_optional, + is_predicate=prop.is_predicate, + is_unordered=prop.is_unordered, + description=prop.description, + synth=bool(cls.synth) or prop.synth, + type_is_hideable=self._type_is_hideable(prop.type), + type_is_codegen_class=prop.type in self.lookup + and not self.lookup[prop.type].imported, + internal="ql_internal" in prop.pragmas, + cfg=prop.is_child + and prop.type in self.lookup + and self.lookup[prop.type].cfg, + is_child=prop.is_child, + ) + ql_name = prop.pragmas.get("ql_name", prop.name) + db_table_name = prop.pragmas.get("ql_db_table_name") + if db_table_name and prop.is_single: + raise Error( + f"`db_table_name` pragma is not supported for single properties, but {cls.name}.{prop.name} has it" + ) + if prop.is_single: + args.update( + singular=inflection.camelize(ql_name), + tablename=inflection.tableize(cls.name), + tableparams=["this"] + + [ + "result" if p is prop else "_" + for p in cls.properties + if p.is_single + ], + doc=_get_doc(cls, prop), + ) + elif prop.is_repeated: + args.update( + singular=inflection.singularize(inflection.camelize(ql_name)), + plural=inflection.pluralize(inflection.camelize(ql_name)), + tablename=db_table_name + or inflection.tableize(f"{cls.name}_{prop.name}"), + tableparams=( + ["this", "index", "result"] + if not prop.is_unordered + else ["this", "result"] + ), + doc=_get_doc(cls, prop, plural=False), + doc_plural=_get_doc(cls, prop, plural=True), + ) + elif prop.is_optional: + args.update( + singular=inflection.camelize(ql_name), + tablename=db_table_name + or inflection.tableize(f"{cls.name}_{prop.name}"), + tableparams=["this", "result"], + doc=_get_doc(cls, prop), + ) + elif prop.is_predicate: + args.update( + singular=inflection.camelize(ql_name, uppercase_first_letter=False), + tablename=db_table_name + or inflection.underscore(f"{cls.name}_{prop.name}"), + tableparams=["this"], + doc=_get_doc(cls, prop), + ) + else: + raise ValueError( + f"unknown property kind for {prop.name} from {cls.name}" + ) + self._property_cache[cache_key] = ql.Property(**args) + return self._property_cache[cache_key] + + def get_ql_class(self, cls: schema.Class) -> ql.Class: + cache_key = id(cls) + if cache_key not in self._class_cache: + if "ql_name" in cls.pragmas: + raise Error( + "ql_name is not supported yet for classes, only for properties" + ) + properties = [self.get_ql_property(cls, p) for p in cls.properties] + all_children = [ + ql.Child(self.get_ql_property(c, p)) + for c, p in self._get_all_properties(cls) + if p.is_child + ] + for prev, child in zip([""] + all_children, all_children): + child.prev = prev and prev.property.singular + self._class_cache[cache_key] = ql.Class( + name=cls.name, + bases=cls.bases, + bases_impl=[base + "Impl::" + base for base in cls.bases], + final=not cls.derived, + properties=properties, + all_children=all_children, + dir=pathlib.Path(cls.group or ""), + doc=cls.doc, + hideable="ql_hideable" in cls.pragmas, + internal="ql_internal" in cls.pragmas, + cfg=cls.cfg, + ) + return self._class_cache[cache_key] + + def get_ql_cfg_class( + self, + cls: schema.Class, + ) -> ql.CfgClass: + return ql.CfgClass( + name=cls.name, + bases=[base for base in cls.bases if self.lookup[base.base].cfg], + properties=cls.properties, + doc=cls.doc, ) - else: - raise ValueError(f"unknown property kind for {prop.name} from {cls.name}") - return ql.Property(**args) + def _get_all_properties( + self, + cls: schema.Class, + already_seen: typing.Optional[typing.Set[int]] = None, + ) -> typing.Iterable[typing.Tuple[schema.Class, schema.Property]]: + # deduplicate using ids + if already_seen is None: + already_seen = set() + for b in cls.bases: + base = self.lookup[b] + for item in self._get_all_properties(base, already_seen): + yield item + for p in cls.properties: + if id(p) not in already_seen: + already_seen.add(id(p)) + yield cls, p + + def get_all_properties_to_be_tested( + self, + cls: schema.Class, + ) -> typing.Iterable[ql.PropertyForTest]: + for c, p in self._get_all_properties(cls): + if not ("qltest_skip" in c.pragmas or "qltest_skip" in p.pragmas): + p = self.get_ql_property(c, p) + yield ql.PropertyForTest( + p.getter, + is_total=p.is_single or p.is_predicate, + type=p.type if not p.is_predicate else None, + is_indexed=p.is_indexed, + ) -def get_ql_class(cls: schema.Class, lookup: typing.Dict[str, schema.ClassBase]) -> ql.Class: - if "ql_name" in cls.pragmas: - raise Error("ql_name is not supported yet for classes, only for properties") - prev_child = "" - properties = [] - for p in cls.properties: - prop = get_ql_property(cls, p, lookup, prev_child) - if prop.is_child: - prev_child = prop.singular - if prop.type in lookup and lookup[prop.type].cfg: - prop.cfg = True - properties.append(prop) - return ql.Class( - name=cls.name, - bases=cls.bases, - bases_impl=[base + "Impl::" + base for base in cls.bases], - final=not cls.derived, - properties=properties, - dir=pathlib.Path(cls.group or ""), - doc=cls.doc, - hideable="ql_hideable" in cls.pragmas, - internal="ql_internal" in cls.pragmas, - cfg=cls.cfg, - ) + def _is_in_qltest_collapsed_hierarchy( + self, + cls: schema.Class, + ) -> bool: + return ( + "qltest_collapse_hierarchy" in cls.pragmas + or self._is_under_qltest_collapsed_hierarchy(cls) + ) + def _is_under_qltest_collapsed_hierarchy( + self, + cls: schema.Class, + ) -> bool: + return "qltest_uncollapse_hierarchy" not in cls.pragmas and any( + self._is_in_qltest_collapsed_hierarchy(self.lookup[b]) for b in cls.bases + ) -def get_ql_cfg_class(cls: schema.Class, lookup: typing.Dict[str, ql.Class]) -> ql.CfgClass: - return ql.CfgClass( - name=cls.name, - bases=[base for base in cls.bases if lookup[base.base].cfg], - properties=cls.properties, - doc=cls.doc - ) + def should_skip_qltest(self, cls: schema.Class) -> bool: + return ( + "qltest_skip" in cls.pragmas + or not (cls.final or "qltest_collapse_hierarchy" in cls.pragmas) + or self._is_under_qltest_collapsed_hierarchy(cls) + ) def _to_db_type(x: str) -> str: @@ -214,24 +317,33 @@ def _to_db_type(x: str) -> str: def get_ql_synth_class_db(name: str) -> ql.Synth.FinalClassDb: - return _final_db_class_lookup.setdefault(name, ql.Synth.FinalClassDb(name=name, - params=[ - ql.Synth.Param("id", _to_db_type(name))])) + return _final_db_class_lookup.setdefault( + name, + ql.Synth.FinalClassDb( + name=name, params=[ql.Synth.Param("id", _to_db_type(name))] + ), + ) def get_ql_synth_class(cls: schema.Class): if cls.derived: - return ql.Synth.NonFinalClass(name=cls.name, derived=sorted(cls.derived), - root=not cls.bases) + return ql.Synth.NonFinalClass( + name=cls.name, derived=sorted(cls.derived), root=not cls.bases + ) if cls.synth and cls.synth.from_class is not None: source = cls.synth.from_class get_ql_synth_class_db(source).subtract_type(cls.name) - return ql.Synth.FinalClassDerivedSynth(name=cls.name, - params=[ql.Synth.Param("id", _to_db_type(source))]) + return ql.Synth.FinalClassDerivedSynth( + name=cls.name, params=[ql.Synth.Param("id", _to_db_type(source))] + ) if cls.synth and cls.synth.on_arguments is not None: - return ql.Synth.FinalClassFreshSynth(name=cls.name, - params=[ql.Synth.Param(k, _to_db_type(v)) - for k, v in cls.synth.on_arguments.items()]) + return ql.Synth.FinalClassFreshSynth( + name=cls.name, + params=[ + ql.Synth.Param(k, _to_db_type(v)) + for k, v in cls.synth.on_arguments.items() + ], + ) return get_ql_synth_class_db(cls.name) @@ -250,7 +362,13 @@ def get_types_used_by(cls: ql.Class, is_impl: bool) -> typing.Iterable[str]: def get_classes_used_by(cls: ql.Class, is_impl: bool) -> typing.List[str]: - return sorted(set(t for t in get_types_used_by(cls, is_impl) if t[0].isupper() and (is_impl or t != cls.name))) + return sorted( + set( + t + for t in get_types_used_by(cls, is_impl) + if t[0].isupper() and (is_impl or t != cls.name) + ) + ) def format(codeql, files): @@ -265,7 +383,8 @@ def format(codeql, files): codeql_path = shutil.which(codeql) if not codeql_path: raise FormatError( - f"`{codeql}` not found in PATH. Either install it, or pass `-- --codeql-binary` with a full path") + f"`{codeql}` not found in PATH. Either install it, or pass `-- --codeql-binary` with a full path" + ) codeql = codeql_path res = subprocess.run(format_cmd, stderr=subprocess.PIPE, text=True) if res.returncode: @@ -281,76 +400,27 @@ def _get_path(cls: schema.Class) -> pathlib.Path: def _get_path_impl(cls: schema.Class) -> pathlib.Path: - return pathlib.Path(cls.group or "", "internal", cls.name+"Impl").with_suffix(".qll") + return pathlib.Path(cls.group or "", "internal", cls.name + "Impl").with_suffix( + ".qll" + ) def _get_path_public(cls: schema.Class) -> pathlib.Path: - return pathlib.Path(cls.group or "", "internal" if "ql_internal" in cls.pragmas else "", cls.name).with_suffix(".qll") - - -def _get_all_properties(cls: schema.Class, lookup: typing.Dict[str, schema.Class], - already_seen: typing.Optional[typing.Set[int]] = None) -> \ - typing.Iterable[typing.Tuple[schema.Class, schema.Property]]: - # deduplicate using ids - if already_seen is None: - already_seen = set() - for b in sorted(cls.bases): - base = lookup[b] - for item in _get_all_properties(base, lookup, already_seen): - yield item - for p in cls.properties: - if id(p) not in already_seen: - already_seen.add(id(p)) - yield cls, p - - -def _get_all_properties_to_be_tested(cls: schema.Class, lookup: typing.Dict[str, schema.Class]) -> \ - typing.Iterable[ql.PropertyForTest]: - for c, p in _get_all_properties(cls, lookup): - if not ("qltest_skip" in c.pragmas or "qltest_skip" in p.pragmas): - # TODO here operations are duplicated, but should be better if we split ql and qltest generation - p = get_ql_property(c, p, lookup) - yield ql.PropertyForTest(p.getter, is_total=p.is_single or p.is_predicate, - type=p.type if not p.is_predicate else None, is_indexed=p.is_indexed) - if p.is_repeated and not p.is_optional: - yield ql.PropertyForTest(f"getNumberOf{p.plural}", type="int") - elif p.is_optional and not p.is_repeated: - yield ql.PropertyForTest(f"has{p.singular}") - - -def _partition_iter(x, pred): - x1, x2 = itertools.tee(x) - return filter(pred, x1), itertools.filterfalse(pred, x2) - - -def _partition(l, pred): - """ partitions a list according to boolean predicate """ - return map(list, _partition_iter(l, pred)) - - -def _is_in_qltest_collapsed_hierarchy(cls: schema.Class, lookup: typing.Dict[str, schema.Class]): - return "qltest_collapse_hierarchy" in cls.pragmas or _is_under_qltest_collapsed_hierarchy(cls, lookup) + return pathlib.Path( + cls.group or "", "internal" if "ql_internal" in cls.pragmas else "", cls.name + ).with_suffix(".qll") -def _is_under_qltest_collapsed_hierarchy(cls: schema.Class, lookup: typing.Dict[str, schema.Class]): - return "qltest_uncollapse_hierarchy" not in cls.pragmas and any( - _is_in_qltest_collapsed_hierarchy(lookup[b], lookup) for b in cls.bases) - - -def should_skip_qltest(cls: schema.Class, lookup: typing.Dict[str, schema.Class]): - return "qltest_skip" in cls.pragmas or not ( - cls.final or "qltest_collapse_hierarchy" in cls.pragmas) or _is_under_qltest_collapsed_hierarchy( - cls, lookup) - - -def _get_stub(cls: schema.Class, base_import: str, generated_import_prefix: str) -> ql.Stub: +def _get_stub( + cls: schema.Class, base_import: str, generated_import_prefix: str +) -> ql.Stub: if isinstance(cls.synth, schema.SynthInfo): if cls.synth.from_class is not None: accessors = [ ql.SynthUnderlyingAccessor( argument="Entity", type=_to_db_type(cls.synth.from_class), - constructorparams=["result"] + constructorparams=["result"], ) ] elif cls.synth.on_arguments is not None: @@ -358,28 +428,39 @@ def _get_stub(cls: schema.Class, base_import: str, generated_import_prefix: str) ql.SynthUnderlyingAccessor( argument=inflection.camelize(arg), type=_to_db_type(type), - constructorparams=["result" if a == arg else "_" for a in cls.synth.on_arguments] - ) for arg, type in cls.synth.on_arguments.items() + constructorparams=[ + "result" if a == arg else "_" for a in cls.synth.on_arguments + ], + ) + for arg, type in cls.synth.on_arguments.items() ] else: accessors = [] - return ql.Stub(name=cls.name, base_import=base_import, import_prefix=generated_import_prefix, - doc=cls.doc, synth_accessors=accessors) + return ql.Stub( + name=cls.name, + base_import=base_import, + import_prefix=generated_import_prefix, + doc=cls.doc, + synth_accessors=accessors, + ) def _get_class_public(cls: schema.Class) -> ql.ClassPublic: - return ql.ClassPublic(name=cls.name, doc=cls.doc, internal="ql_internal" in cls.pragmas) + return ql.ClassPublic( + name=cls.name, doc=cls.doc, internal="ql_internal" in cls.pragmas + ) _stub_qldoc_header = "// the following QLdoc is generated: if you need to edit it, do it in the schema file\n " _class_qldoc_re = re.compile( rf"(?P(?:{re.escape(_stub_qldoc_header)})?/\*\*.*?\*/\s*|^\s*)(?:class\s+(?P\w+))?", - re.MULTILINE | re.DOTALL) + re.MULTILINE | re.DOTALL, +) def _patch_class_qldoc(cls: str, qldoc: str, stub_file: pathlib.Path): - """ Replace or insert `qldoc` as the QLdoc of class `cls` in `stub_file` """ + """Replace or insert `qldoc` as the QLdoc of class `cls` in `stub_file`""" if not qldoc or not stub_file.exists(): return qldoc = "\n ".join(l.rstrip() for l in qldoc.splitlines()) @@ -415,7 +496,13 @@ def generate(opts, renderer): data = schemaloader.load_file(input) - classes = {name: get_ql_class(cls, data.classes) for name, cls in data.classes.items() if not cls.imported} + resolver = Resolver(data.classes) + + classes = { + name: resolver.get_ql_class(cls) + for name, cls in data.classes.items() + if not cls.imported + } if not classes: raise NoClasses root = next(iter(classes.values())) @@ -429,28 +516,47 @@ def generate(opts, renderer): cfg_classes = [] generated_import_prefix = get_import(out, opts.root_dir) registry = opts.generated_registry or pathlib.Path( - os.path.commonpath((out, stub_out, test_out)), ".generated.list") + os.path.commonpath((out, stub_out, test_out)), ".generated.list" + ) - with renderer.manage(generated=generated, stubs=stubs, registry=registry, - force=opts.force) as renderer: + with renderer.manage( + generated=generated, stubs=stubs, registry=registry, force=opts.force + ) as renderer: - db_classes = [cls for name, cls in classes.items() if not data.classes[name].synth] - renderer.render(ql.DbClasses(classes=db_classes, imports=sorted(set(pre_imports.values()))), out / "Raw.qll") + db_classes = [ + cls for name, cls in classes.items() if not data.classes[name].synth + ] + renderer.render( + ql.DbClasses(classes=db_classes, imports=sorted(set(pre_imports.values()))), + out / "Raw.qll", + ) - classes_by_dir_and_name = sorted(classes.values(), key=lambda cls: (cls.dir, cls.name)) + classes_by_dir_and_name = sorted( + classes.values(), key=lambda cls: (cls.dir, cls.name) + ) for c in classes_by_dir_and_name: - path = get_import(stub_out / c.dir / "internal" / - c.name if c.internal else stub_out / c.path, opts.root_dir) + path = get_import( + ( + stub_out / c.dir / "internal" / c.name + if c.internal + else stub_out / c.path + ), + opts.root_dir, + ) imports[c.name] = path - path_impl = get_import(stub_out / c.dir / "internal" / c.name, opts.root_dir) + path_impl = get_import( + stub_out / c.dir / "internal" / c.name, opts.root_dir + ) imports_impl[c.name + "Impl"] = path_impl + "Impl" if c.cfg: - cfg_classes.append(get_ql_cfg_class(c, classes)) + cfg_classes.append(resolver.get_ql_cfg_class(c)) for c in classes.values(): qll = out / c.path.with_suffix(".qll") - c.imports = [imports[t] if t in imports else imports_impl[t] + - "::Impl as " + t for t in get_classes_used_by(c, is_impl=True)] + c.imports = [ + imports[t] if t in imports else imports_impl[t] + "::Impl as " + t + for t in get_classes_used_by(c, is_impl=True) + ] classes_used_by[c.name] = get_classes_used_by(c, is_impl=False) c.import_prefix = generated_import_prefix renderer.render(c, qll) @@ -458,7 +564,7 @@ def generate(opts, renderer): if cfg_out: cfg_classes_val = ql.CfgClasses( include_file_import=get_import(include_file, opts.root_dir), - classes=cfg_classes + classes=cfg_classes, ) cfg_qll = cfg_out / "CfgNodes.qll" renderer.render(cfg_classes_val, cfg_qll) @@ -475,7 +581,7 @@ def generate(opts, renderer): if not renderer.is_customized_stub(stub_file): renderer.render(stub, stub_file) else: - qldoc = renderer.render_str(stub, template='ql_stub_class_qldoc') + qldoc = renderer.render_str(stub, template="ql_stub_class_qldoc") _patch_class_qldoc(c.name, qldoc, stub_file) class_public = _get_class_public(c) path_public = _get_path_public(c) @@ -484,62 +590,84 @@ def generate(opts, renderer): renderer.render(class_public, class_public_file) # for example path/to/elements -> path/to/elements.qll - renderer.render(ql.ImportList([i for name, i in imports.items() if name not in classes or not classes[name].internal]), - include_file) + renderer.render( + ql.ImportList( + [ + i + for name, i in imports.items() + if name not in classes or not classes[name].internal + ] + ), + include_file, + ) elements_module = get_import(include_file, opts.root_dir) renderer.render( ql.GetParentImplementation( classes=list(classes.values()), - imports=[elements_module] + [i for name, - i in imports.items() if name in classes and classes[name].internal], + imports=[elements_module] + + [ + i + for name, i in imports.items() + if name in classes and classes[name].internal + ], ), - out / 'ParentChild.qll') + out / "ParentChild.qll", + ) if test_out: for c in data.classes.values(): if c.imported: continue - if should_skip_qltest(c, data.classes): + if resolver.should_skip_qltest(c): continue test_with_name = c.pragmas.get("qltest_test_with") test_with = data.classes[test_with_name] if test_with_name else c test_dir = test_out / test_with.group / test_with.name test_dir.mkdir(parents=True, exist_ok=True) - if all(f.suffix in (".txt", ".ql", ".actual", ".expected") for f in test_dir.glob("*.*")): + if all( + f.suffix in (".txt", ".ql", ".actual", ".expected") + for f in test_dir.glob("*.*") + ): log.warning(f"no test source in {test_dir.relative_to(test_out)}") - renderer.render(ql.MissingTestInstructions(), - test_dir / missing_test_source_filename) + renderer.render( + ql.MissingTestInstructions(), + test_dir / missing_test_source_filename, + ) continue - total_props, partial_props = _partition(_get_all_properties_to_be_tested(c, data.classes), - lambda p: p.is_total) - renderer.render(ql.ClassTester(class_name=c.name, - properties=total_props, - elements_module=elements_module, - # in case of collapsed hierarchies we want to see the actual QL class in results - show_ql_class="qltest_collapse_hierarchy" in c.pragmas), - test_dir / f"{c.name}.ql") - for p in partial_props: - renderer.render(ql.PropertyTester(class_name=c.name, - elements_module=elements_module, - property=p), test_dir / f"{c.name}_{p.getter}.ql") + renderer.render( + ql.ClassTester( + class_name=c.name, + properties=list(resolver.get_all_properties_to_be_tested(c)), + elements_module=elements_module, + # in case of collapsed hierarchies we want to see the actual QL class in results + show_ql_class="qltest_collapse_hierarchy" in c.pragmas, + ), + test_dir / f"{c.name}.ql", + ) final_synth_types = [] non_final_synth_types = [] constructor_imports = [] synth_constructor_imports = [] stubs = {} - for cls in sorted((cls for cls in data.classes.values() if not cls.imported), - key=lambda cls: (cls.group, cls.name)): + for cls in sorted( + (cls for cls in data.classes.values() if not cls.imported), + key=lambda cls: (cls.group, cls.name), + ): synth_type = get_ql_synth_class(cls) if synth_type.is_final: final_synth_types.append(synth_type) if synth_type.has_params: - stub_file = stub_out / cls.group / "internal" / f"{cls.name}Constructor.qll" + stub_file = ( + stub_out / cls.group / "internal" / f"{cls.name}Constructor.qll" + ) if not renderer.is_customized_stub(stub_file): # stub rendering must be postponed as we might not have yet all subtracted synth types in `synth_type` - stubs[stub_file] = ql.Synth.ConstructorStub(synth_type, import_prefix=generated_import_prefix) + stubs[stub_file] = ql.Synth.ConstructorStub( + synth_type, import_prefix=generated_import_prefix + ) constructor_import = get_import(stub_file, opts.root_dir) constructor_imports.append(constructor_import) if synth_type.is_synth: @@ -549,9 +677,20 @@ def generate(opts, renderer): for stub_file, data in stubs.items(): renderer.render(data, stub_file) - renderer.render(ql.Synth.Types(root.name, generated_import_prefix, - final_synth_types, non_final_synth_types), out / "Synth.qll") - renderer.render(ql.ImportList(constructor_imports), out / "SynthConstructors.qll") - renderer.render(ql.ImportList(synth_constructor_imports), out / "PureSynthConstructors.qll") + renderer.render( + ql.Synth.Types( + root.name, + generated_import_prefix, + final_synth_types, + non_final_synth_types, + ), + out / "Synth.qll", + ) + renderer.render( + ql.ImportList(constructor_imports), out / "SynthConstructors.qll" + ) + renderer.render( + ql.ImportList(synth_constructor_imports), out / "PureSynthConstructors.qll" + ) if opts.ql_format: format(opts.codeql_binary, renderer.written) diff --git a/misc/codegen/generators/rustgen.py b/misc/codegen/generators/rustgen.py index d7025830bcbd..1f373151d6ad 100644 --- a/misc/codegen/generators/rustgen.py +++ b/misc/codegen/generators/rustgen.py @@ -55,7 +55,8 @@ def _get_field(cls: schema.Class, p: schema.Property) -> rust.Field: def _get_properties( - cls: schema.Class, lookup: dict[str, schema.ClassBase], + cls: schema.Class, + lookup: dict[str, schema.ClassBase], ) -> typing.Iterable[tuple[schema.Class, schema.Property]]: for b in cls.bases: yield from _get_properties(lookup[b], lookup) @@ -92,8 +93,9 @@ def _get_class(self, name: str) -> rust.Class: # only generate detached fields in the actual class defining them, not the derived ones if c is cls: # TODO lift this restriction if required (requires change in dbschemegen as well) - assert c.derived or not p.is_single, \ - f"property {p.name} in concrete class marked as detached but not optional" + assert ( + c.derived or not p.is_single + ), f"property {p.name} in concrete class marked as detached but not optional" detached_fields.append(_get_field(c, p)) elif not cls.derived: # for non-detached ones, only generate fields in the concrete classes @@ -123,10 +125,12 @@ def generate(opts, renderer): processor = Processor(schemaloader.load_file(opts.schema)) out = opts.rust_output groups = set() - with renderer.manage(generated=out.rglob("*.rs"), - stubs=(), - registry=out / ".generated.list", - force=opts.force) as renderer: + with renderer.manage( + generated=out.rglob("*.rs"), + stubs=(), + registry=out / ".generated.list", + force=opts.force, + ) as renderer: for group, classes in processor.get_classes().items(): group = group or "top" groups.add(group) diff --git a/misc/codegen/generators/rusttestgen.py b/misc/codegen/generators/rusttestgen.py index e7a23fedacdc..4c6e2cb61174 100644 --- a/misc/codegen/generators/rusttestgen.py +++ b/misc/codegen/generators/rusttestgen.py @@ -42,7 +42,9 @@ def _get_code(doc: list[str]) -> list[str]: code.append(f"// {line}") case _, True: code.append(line) - assert not adding_code, "Unterminated code block in docstring:\n " + "\n ".join(doc) + assert not adding_code, "Unterminated code block in docstring:\n " + "\n ".join( + doc + ) if has_code: return code return [] @@ -51,15 +53,18 @@ def _get_code(doc: list[str]) -> list[str]: def generate(opts, renderer): assert opts.ql_test_output schema = schemaloader.load_file(opts.schema) - with renderer.manage(generated=opts.ql_test_output.rglob("gen_*.rs"), - stubs=(), - registry=opts.ql_test_output / ".generated_tests.list", - force=opts.force) as renderer: + with renderer.manage( + generated=opts.ql_test_output.rglob("gen_*.rs"), + stubs=(), + registry=opts.ql_test_output / ".generated_tests.list", + force=opts.force, + ) as renderer: + + resolver = qlgen.Resolver(schema.classes) for cls in schema.classes.values(): if cls.imported: continue - if (qlgen.should_skip_qltest(cls, schema.classes) or - "rust_skip_doc_test" in cls.pragmas): + if resolver.should_skip_qltest(cls) or "rust_skip_doc_test" in cls.pragmas: continue code = _get_code(cls.doc) for p in schema.iter_properties(cls.name): @@ -79,5 +84,10 @@ def generate(opts, renderer): code = [indent + l for l in code] test_with_name = typing.cast(str, cls.pragmas.get("qltest_test_with")) test_with = schema.classes[test_with_name] if test_with_name else cls - test = opts.ql_test_output / test_with.group / test_with.name / f"gen_{test_name}.rs" + test = ( + opts.ql_test_output + / test_with.group + / test_with.name + / f"gen_{test_name}.rs" + ) renderer.render(TestCode(code="\n".join(code), function=fn), test) diff --git a/misc/codegen/generators/trapgen.py b/misc/codegen/generators/trapgen.py index e22b3e4e0e73..1f33fd4a0ff8 100755 --- a/misc/codegen/generators/trapgen.py +++ b/misc/codegen/generators/trapgen.py @@ -86,13 +86,18 @@ def generate(opts, renderer): for dir, entries in traps.items(): dir = dir or pathlib.Path() relative_gen_dir = pathlib.Path(*[".." for _ in dir.parents]) - renderer.render(cpp.TrapList(entries, opts.dbscheme, trap_library, relative_gen_dir), out / dir / "TrapEntries") + renderer.render( + cpp.TrapList(entries, opts.dbscheme, trap_library, relative_gen_dir), + out / dir / "TrapEntries", + ) tags = [] for tag in toposort_flatten(tag_graph): - tags.append(cpp.Tag( - name=get_tag_name(tag), - bases=[get_tag_name(b) for b in sorted(tag_graph[tag])], - id=tag, - )) + tags.append( + cpp.Tag( + name=get_tag_name(tag), + bases=[get_tag_name(b) for b in sorted(tag_graph[tag])], + id=tag, + ) + ) renderer.render(cpp.TagList(tags, opts.dbscheme), out / "TrapTags") diff --git a/misc/codegen/lib/cpp.py b/misc/codegen/lib/cpp.py index eed7aba045cb..2b8c504caacd 100644 --- a/misc/codegen/lib/cpp.py +++ b/misc/codegen/lib/cpp.py @@ -4,20 +4,111 @@ from typing import List, ClassVar # taken from https://en.cppreference.com/w/cpp/keyword -cpp_keywords = {"alignas", "alignof", "and", "and_eq", "asm", "atomic_cancel", "atomic_commit", "atomic_noexcept", - "auto", "bitand", "bitor", "bool", "break", "case", "catch", "char", "char8_t", "char16_t", "char32_t", - "class", "compl", "concept", "const", "consteval", "constexpr", "constinit", "const_cast", "continue", - "co_await", "co_return", "co_yield", "decltype", "default", "delete", "do", "double", "dynamic_cast", - "else", "enum", "explicit", "export", "extern", "false", "float", "for", "friend", "goto", "if", - "inline", "int", "long", "mutable", "namespace", "new", "noexcept", "not", "not_eq", "nullptr", - "operator", "or", "or_eq", "private", "protected", "public", "reflexpr", "register", "reinterpret_cast", - "requires", "return", "short", "signed", "sizeof", "static", "static_assert", "static_cast", "struct", - "switch", "synchronized", "template", "this", "thread_local", "throw", "true", "try", "typedef", - "typeid", "typename", "union", "unsigned", "using", "virtual", "void", "volatile", "wchar_t", "while", - "xor", "xor_eq"} +cpp_keywords = { + "alignas", + "alignof", + "and", + "and_eq", + "asm", + "atomic_cancel", + "atomic_commit", + "atomic_noexcept", + "auto", + "bitand", + "bitor", + "bool", + "break", + "case", + "catch", + "char", + "char8_t", + "char16_t", + "char32_t", + "class", + "compl", + "concept", + "const", + "consteval", + "constexpr", + "constinit", + "const_cast", + "continue", + "co_await", + "co_return", + "co_yield", + "decltype", + "default", + "delete", + "do", + "double", + "dynamic_cast", + "else", + "enum", + "explicit", + "export", + "extern", + "false", + "float", + "for", + "friend", + "goto", + "if", + "inline", + "int", + "long", + "mutable", + "namespace", + "new", + "noexcept", + "not", + "not_eq", + "nullptr", + "operator", + "or", + "or_eq", + "private", + "protected", + "public", + "reflexpr", + "register", + "reinterpret_cast", + "requires", + "return", + "short", + "signed", + "sizeof", + "static", + "static_assert", + "static_cast", + "struct", + "switch", + "synchronized", + "template", + "this", + "thread_local", + "throw", + "true", + "try", + "typedef", + "typeid", + "typename", + "union", + "unsigned", + "using", + "virtual", + "void", + "volatile", + "wchar_t", + "while", + "xor", + "xor_eq", +} _field_overrides = [ - (re.compile(r"(start|end)_(line|column)|(.*_)?index|width|num_.*"), {"base_type": "unsigned"}), + ( + re.compile(r"(start|end)_(line|column)|(.*_)?index|width|num_.*"), + {"base_type": "unsigned"}, + ), (re.compile(r"(.*)_"), lambda m: {"field_name": m[1]}), ] @@ -108,7 +199,7 @@ def has_bases(self): @dataclass class TrapList: - template: ClassVar = 'trap_traps' + template: ClassVar = "trap_traps" extensions = ["h", "cpp"] traps: List[Trap] source: str @@ -118,7 +209,7 @@ class TrapList: @dataclass class TagList: - template: ClassVar = 'trap_tags' + template: ClassVar = "trap_tags" extensions = ["h"] tags: List[Tag] @@ -127,7 +218,7 @@ class TagList: @dataclass class ClassBase: - ref: 'Class' + ref: "Class" first: bool = False @@ -140,7 +231,9 @@ class Class: trap_name: str = None def __post_init__(self): - self.bases = [ClassBase(c) for c in sorted(self.bases, key=lambda cls: cls.name)] + self.bases = [ + ClassBase(c) for c in sorted(self.bases, key=lambda cls: cls.name) + ] if self.bases: self.bases[0].first = True diff --git a/misc/codegen/lib/dbscheme.py b/misc/codegen/lib/dbscheme.py index eee0191b6788..03c9878d7f11 100644 --- a/misc/codegen/lib/dbscheme.py +++ b/misc/codegen/lib/dbscheme.py @@ -1,4 +1,4 @@ -""" dbscheme format representation """ +"""dbscheme format representation""" import logging import pathlib @@ -100,7 +100,7 @@ class SchemeInclude: @dataclass class Scheme: - template: ClassVar = 'dbscheme' + template: ClassVar = "dbscheme" src: str includes: List[SchemeInclude] diff --git a/misc/codegen/lib/paths.py b/misc/codegen/lib/paths.py index b102987a2267..f56bbb9d8171 100644 --- a/misc/codegen/lib/paths.py +++ b/misc/codegen/lib/paths.py @@ -1,4 +1,4 @@ -""" module providing useful filesystem paths """ +"""module providing useful filesystem paths""" import pathlib import sys @@ -7,13 +7,15 @@ _this_file = pathlib.Path(__file__).resolve() try: - workspace_dir = pathlib.Path(os.environ['BUILD_WORKSPACE_DIRECTORY']).resolve() # <- means we are using bazel run - root_dir = workspace_dir / 'swift' + workspace_dir = pathlib.Path( + os.environ["BUILD_WORKSPACE_DIRECTORY"] + ).resolve() # <- means we are using bazel run + root_dir = workspace_dir / "swift" except KeyError: root_dir = _this_file.parents[2] workspace_dir = root_dir.parent -lib_dir = _this_file.parents[2] / 'codegen' / 'lib' -templates_dir = _this_file.parents[2] / 'codegen' / 'templates' +lib_dir = _this_file.parents[2] / "codegen" / "lib" +templates_dir = _this_file.parents[2] / "codegen" / "templates" exe_file = pathlib.Path(sys.argv[0]).resolve() diff --git a/misc/codegen/lib/ql.py b/misc/codegen/lib/ql.py index 0200477eb32c..503570c2adc3 100644 --- a/misc/codegen/lib/ql.py +++ b/misc/codegen/lib/ql.py @@ -37,7 +37,6 @@ class Property: is_optional: bool = False is_predicate: bool = False is_unordered: bool = False - prev_child: Optional[str] = None qltest_skip: bool = False description: List[str] = field(default_factory=list) doc: Optional[str] = None @@ -48,6 +47,7 @@ class Property: type_is_self: bool = False internal: bool = False cfg: bool = False + is_child: bool = False def __post_init__(self): if self.tableparams: @@ -76,10 +76,6 @@ def is_repeated(self): def is_single(self): return not (self.is_optional or self.is_repeated or self.is_predicate) - @property - def is_child(self): - return self.prev_child is not None - @property def is_indexed(self) -> bool: return self.is_repeated and not self.is_unordered @@ -89,6 +85,12 @@ def type_alias(self) -> Optional[str]: return self.type + "Alias" if self.type_is_self else self.type +@dataclass +class Child: + property: Property + prev: str = "" + + @dataclass class Base: base: str @@ -100,13 +102,14 @@ def __str__(self): @dataclass class Class: - template: ClassVar = 'ql_class' + template: ClassVar = "ql_class" name: str bases: List[Base] = field(default_factory=list) bases_impl: List[Base] = field(default_factory=list) final: bool = False properties: List[Property] = field(default_factory=list) + all_children: List[Child] = field(default_factory=list) dir: pathlib.Path = pathlib.Path() imports: List[str] = field(default_factory=list) import_prefix: Optional[str] = None @@ -116,7 +119,12 @@ class Class: cfg: bool = False def __post_init__(self): - def get_bases(bases): return [Base(str(b), str(prev)) for b, prev in zip(bases, itertools.chain([""], bases))] + def get_bases(bases): + return [ + Base(str(b), str(prev)) + for b, prev in zip(bases, itertools.chain([""], bases)) + ] + self.bases = get_bases(self.bases) self.bases_impl = get_bases(self.bases_impl) if self.properties: @@ -143,7 +151,7 @@ def db_id(self) -> str: @property def has_children(self) -> bool: - return any(p.is_child for p in self.properties) + return bool(self.all_children) @property def last_base(self) -> str: @@ -164,7 +172,7 @@ def __post_init__(self): @dataclass class Stub: - template: ClassVar = 'ql_stub' + template: ClassVar = "ql_stub" name: str base_import: str @@ -183,7 +191,7 @@ def has_qldoc(self) -> bool: @dataclass class ClassPublic: - template: ClassVar = 'ql_class_public' + template: ClassVar = "ql_class_public" name: str imports: List[str] = field(default_factory=list) @@ -197,7 +205,7 @@ def has_qldoc(self) -> bool: @dataclass class DbClasses: - template: ClassVar = 'ql_db' + template: ClassVar = "ql_db" classes: List[Class] = field(default_factory=list) imports: List[str] = field(default_factory=list) @@ -205,14 +213,14 @@ class DbClasses: @dataclass class ImportList: - template: ClassVar = 'ql_imports' + template: ClassVar = "ql_imports" imports: List[str] = field(default_factory=list) @dataclass class GetParentImplementation: - template: ClassVar = 'ql_parent' + template: ClassVar = "ql_parent" classes: List[Class] = field(default_factory=list) imports: List[str] = field(default_factory=list) @@ -234,22 +242,15 @@ class TesterBase: @dataclass class ClassTester(TesterBase): - template: ClassVar = 'ql_test_class' + template: ClassVar = "ql_test_class" properties: List[PropertyForTest] = field(default_factory=list) show_ql_class: bool = False -@dataclass -class PropertyTester(TesterBase): - template: ClassVar = 'ql_test_property' - - property: PropertyForTest - - @dataclass class MissingTestInstructions: - template: ClassVar = 'ql_test_missing' + template: ClassVar = "ql_test_missing" class Synth: @@ -306,7 +307,9 @@ class FinalClassDb(FinalClass): subtracted_synth_types: List["Synth.Class"] = field(default_factory=list) def subtract_type(self, type: str): - self.subtracted_synth_types.append(Synth.Class(type, first=not self.subtracted_synth_types)) + self.subtracted_synth_types.append( + Synth.Class(type, first=not self.subtracted_synth_types) + ) @property def has_subtracted_synth_types(self) -> bool: @@ -357,6 +360,6 @@ class CfgClass: @dataclass class CfgClasses: - template: ClassVar = 'ql_cfg_nodes' + template: ClassVar = "ql_cfg_nodes" include_file_import: Optional[str] = None classes: List[CfgClass] = field(default_factory=list) diff --git a/misc/codegen/lib/render.py b/misc/codegen/lib/render.py index ac43a515de10..5ab746107ee7 100644 --- a/misc/codegen/lib/render.py +++ b/misc/codegen/lib/render.py @@ -1,4 +1,4 @@ -""" template renderer module, wrapping around `pystache.Renderer` +"""template renderer module, wrapping around `pystache.Renderer` `pystache` is a python mustache engine, and mustache is a template language. More information on @@ -23,14 +23,21 @@ class Error(Exception): class Renderer: - """ Template renderer using mustache templates in the `templates` directory """ + """Template renderer using mustache templates in the `templates` directory""" def __init__(self, generator: pathlib.Path): - self._r = pystache.Renderer(search_dirs=str(paths.templates_dir), escape=lambda u: u) + self._r = pystache.Renderer( + search_dirs=str(paths.templates_dir), escape=lambda u: u + ) self._generator = generator - def render(self, data: object, output: typing.Optional[pathlib.Path], template: typing.Optional[str] = None): - """ Render `data` to `output`. + def render( + self, + data: object, + output: typing.Optional[pathlib.Path], + template: typing.Optional[str] = None, + ): + """Render `data` to `output`. `data` must have a `template` attribute denoting which template to use from the template directory. @@ -58,13 +65,18 @@ def _do_write(self, mnemonic: str, contents: str, output: pathlib.Path): out.write(contents) log.debug(f"{mnemonic}: generated {output.name}") - def manage(self, generated: typing.Iterable[pathlib.Path], stubs: typing.Iterable[pathlib.Path], - registry: pathlib.Path, force: bool = False) -> "RenderManager": + def manage( + self, + generated: typing.Iterable[pathlib.Path], + stubs: typing.Iterable[pathlib.Path], + registry: pathlib.Path, + force: bool = False, + ) -> "RenderManager": return RenderManager(self._generator, generated, stubs, registry, force) class RenderManager(Renderer): - """ A context manager allowing to manage checked in generated files and their cleanup, able + """A context manager allowing to manage checked in generated files and their cleanup, able to skip unneeded writes. This is done by using and updating a checked in list of generated files that assigns two @@ -74,6 +86,7 @@ class RenderManager(Renderer): * the other is the hash of the actual file after code generation has finished. This will be different from the above because of post-processing like QL formatting. This hash is used to detect invalid modification of generated files""" + written: typing.Set[pathlib.Path] @dataclass @@ -82,12 +95,18 @@ class Hashes: pre contains the hash of a file as rendered, post is the hash after postprocessing (for example QL formatting) """ + pre: str post: typing.Optional[str] = None - def __init__(self, generator: pathlib.Path, generated: typing.Iterable[pathlib.Path], - stubs: typing.Iterable[pathlib.Path], - registry: pathlib.Path, force: bool = False): + def __init__( + self, + generator: pathlib.Path, + generated: typing.Iterable[pathlib.Path], + stubs: typing.Iterable[pathlib.Path], + registry: pathlib.Path, + force: bool = False, + ): super().__init__(generator) self._registry_path = registry self._force = force @@ -142,10 +161,14 @@ def _process_generated(self, generated: typing.Iterable[pathlib.Path]): if self._force: pass elif rel_path not in self._hashes: - log.warning(f"{rel_path} marked as generated but absent from the registry") + log.warning( + f"{rel_path} marked as generated but absent from the registry" + ) elif self._hashes[rel_path].post != self._hash_file(f): - raise Error(f"{rel_path} is generated but was modified, please revert the file " - "or pass --force to overwrite") + raise Error( + f"{rel_path} is generated but was modified, please revert the file " + "or pass --force to overwrite" + ) def _process_stubs(self, stubs: typing.Iterable[pathlib.Path]): for f in stubs: @@ -159,8 +182,10 @@ def _process_stubs(self, stubs: typing.Iterable[pathlib.Path]): elif rel_path not in self._hashes: log.warning(f"{rel_path} marked as stub but absent from the registry") elif self._hashes[rel_path].post != self._hash_file(f): - raise Error(f"{rel_path} is a stub marked as generated, but it was modified, " - "please remove the `// generated` header, revert the file or pass --force to overwrite it") + raise Error( + f"{rel_path} is a stub marked as generated, but it was modified, " + "please remove the `// generated` header, revert the file or pass --force to overwrite it" + ) @staticmethod def is_customized_stub(file: pathlib.Path) -> bool: @@ -191,13 +216,17 @@ def _load_registry(self): for line in reg: if line.strip(): filename, prehash, posthash = line.split() - self._hashes[pathlib.Path(filename)] = self.Hashes(prehash, posthash) + self._hashes[pathlib.Path(filename)] = self.Hashes( + prehash, posthash + ) except FileNotFoundError: pass def _dump_registry(self): self._registry_path.parent.mkdir(parents=True, exist_ok=True) - with open(self._registry_path, 'w') as out, open(self._registry_path.parent / ".gitattributes", "w") as attrs: + with open(self._registry_path, "w") as out, open( + self._registry_path.parent / ".gitattributes", "w" + ) as attrs: print(f"/{self._registry_path.name}", "linguist-generated", file=attrs) print("/.gitattributes", "linguist-generated", file=attrs) for f, hashes in sorted(self._hashes.items()): diff --git a/misc/codegen/lib/schema.py b/misc/codegen/lib/schema.py index 5178e61d3844..efcfb5c5fc2e 100644 --- a/misc/codegen/lib/schema.py +++ b/misc/codegen/lib/schema.py @@ -1,4 +1,5 @@ -""" schema format representation """ +"""schema format representation""" + import abc import typing from collections.abc import Iterable @@ -52,7 +53,11 @@ def is_optional(self) -> bool: @property def is_repeated(self) -> bool: - return self.kind in (self.Kind.REPEATED, self.Kind.REPEATED_OPTIONAL, self.Kind.REPEATED_UNORDERED) + return self.kind in ( + self.Kind.REPEATED, + self.Kind.REPEATED_OPTIONAL, + self.Kind.REPEATED_UNORDERED, + ) @property def is_unordered(self) -> bool: @@ -74,10 +79,11 @@ def has_builtin_type(self) -> bool: SingleProperty = functools.partial(Property, Property.Kind.SINGLE) OptionalProperty = functools.partial(Property, Property.Kind.OPTIONAL) RepeatedProperty = functools.partial(Property, Property.Kind.REPEATED) -RepeatedOptionalProperty = functools.partial( - Property, Property.Kind.REPEATED_OPTIONAL) +RepeatedOptionalProperty = functools.partial(Property, Property.Kind.REPEATED_OPTIONAL) PredicateProperty = functools.partial(Property, Property.Kind.PREDICATE) -RepeatedUnorderedProperty = functools.partial(Property, Property.Kind.REPEATED_UNORDERED) +RepeatedUnorderedProperty = functools.partial( + Property, Property.Kind.REPEATED_UNORDERED +) @dataclass @@ -197,9 +203,9 @@ def _make_property(arg: object) -> Property: class PropertyModifier(abc.ABC): - """ Modifier of `Property` objects. - Being on the right of `|` it will trigger construction of a `Property` from - the left operand. + """Modifier of `Property` objects. + Being on the right of `|` it will trigger construction of a `Property` from + the left operand. """ def __ror__(self, other: object) -> Property: @@ -210,11 +216,9 @@ def __ror__(self, other: object) -> Property: def __invert__(self) -> "PropertyModifier": return self.negate() - def modify(self, prop: Property): - ... + def modify(self, prop: Property): ... - def negate(self) -> "PropertyModifier": - ... + def negate(self) -> "PropertyModifier": ... def split_doc(doc): @@ -224,7 +228,11 @@ def split_doc(doc): lines = doc.splitlines() # Determine minimum indentation (first line doesn't count): strippedlines = (line.lstrip() for line in lines[1:]) - indents = [len(line) - len(stripped) for line, stripped in zip(lines[1:], strippedlines) if stripped] + indents = [ + len(line) - len(stripped) + for line, stripped in zip(lines[1:], strippedlines) + if stripped + ] # Remove indentation (first line is special): trimmed = [lines[0].strip()] if indents: diff --git a/misc/codegen/lib/schemadefs.py b/misc/codegen/lib/schemadefs.py index b0cf2b038a8d..125951701c9b 100644 --- a/misc/codegen/lib/schemadefs.py +++ b/misc/codegen/lib/schemadefs.py @@ -39,7 +39,9 @@ class _DocModifier(_schema.PropertyModifier, metaclass=_DocModifierMetaclass): def modify(self, prop: _schema.Property): if self.doc and ("\n" in self.doc or self.doc[-1] == "."): - raise _schema.Error("No newlines or trailing dots are allowed in doc, did you intend to use desc?") + raise _schema.Error( + "No newlines or trailing dots are allowed in doc, did you intend to use desc?" + ) prop.doc = self.doc def negate(self) -> _schema.PropertyModifier: @@ -73,10 +75,13 @@ def include(source: str): @_dataclass class _Namespace: - """ simple namespacing mechanism """ + """simple namespacing mechanism""" + _name: str - def add(self, pragma: _Union["_PragmaBase", "_Parametrized"], key: str | None = None): + def add( + self, pragma: _Union["_PragmaBase", "_Parametrized"], key: str | None = None + ): self.__dict__[pragma.pragma] = pragma pragma.pragma = key or f"{self._name}_{pragma.pragma}" @@ -110,15 +115,18 @@ def _apply(self, pragmas: _Dict[str, object]) -> None: @_dataclass class _ClassPragma(_PragmaBase): - """ A class pragma. + """A class pragma. For schema classes it acts as a python decorator with `@`. """ + inherited: bool = False def __call__(self, cls: type) -> type: - """ use this pragma as a decorator on classes """ + """use this pragma as a decorator on classes""" if self.inherited: - setattr(cls, f"{_schema.inheritable_pragma_prefix}{self.pragma}", self.value) + setattr( + cls, f"{_schema.inheritable_pragma_prefix}{self.pragma}", self.value + ) else: # not using hasattr as we don't want to land on inherited pragmas if "_pragmas" not in cls.__dict__: @@ -129,9 +137,10 @@ def __call__(self, cls: type) -> type: @_dataclass class _PropertyPragma(_PragmaBase, _schema.PropertyModifier): - """ A property pragma. + """A property pragma. It functions similarly to a `_PropertyModifier` with `|`, adding the pragma. """ + remove: bool = False def modify(self, prop: _schema.Property): @@ -149,21 +158,23 @@ def _apply(self, pragmas: _Dict[str, object]) -> None: @_dataclass class _Pragma(_ClassPragma, _PropertyPragma): - """ A class or property pragma. + """A class or property pragma. For properties, it functions similarly to a `_PropertyModifier` with `|`, adding the pragma. For schema classes it acts as a python decorator with `@`. """ class _Parametrized[P, **Q, T]: - """ A parametrized pragma. + """A parametrized pragma. Needs to be applied to a parameter to give a pragma. """ def __init__(self, pragma_instance: P, factory: _Callable[Q, T]): self.pragma_instance = pragma_instance self.factory = factory - self.__signature__ = _inspect.signature(self.factory).replace(return_annotation=type(self.pragma_instance)) + self.__signature__ = _inspect.signature(self.factory).replace( + return_annotation=type(self.pragma_instance) + ) @property def pragma(self): @@ -187,7 +198,8 @@ def modify(self, prop: _schema.Property): K = _schema.Property.Kind if prop.kind != K.SINGLE: raise _schema.Error( - "optional should only be applied to simple property types") + "optional should only be applied to simple property types" + ) prop.kind = K.OPTIONAL @@ -200,7 +212,8 @@ def modify(self, prop: _schema.Property): prop.kind = K.REPEATED_OPTIONAL else: raise _schema.Error( - "list should only be applied to simple or optional property types") + "list should only be applied to simple or optional property types" + ) class _Setifier(_schema.PropertyModifier): @@ -212,7 +225,7 @@ def modify(self, prop: _schema.Property): class _TypeModifier: - """ Modifies types using get item notation """ + """Modifies types using get item notation""" def __init__(self, modifier: _schema.PropertyModifier): self.modifier = modifier @@ -242,7 +255,11 @@ def __getitem__(self, item): qltest.add(_ClassPragma("skip")) qltest.add(_ClassPragma("collapse_hierarchy")) qltest.add(_ClassPragma("uncollapse_hierarchy")) -qltest.add(_Parametrized(_ClassPragma("test_with", inherited=True), factory=_schema.get_type_name)) +qltest.add( + _Parametrized( + _ClassPragma("test_with", inherited=True), factory=_schema.get_type_name + ) +) ql.add(_Parametrized(_ClassPragma("default_doc_name"), factory=lambda doc: doc)) ql.add(_ClassPragma("hideable", inherited=True)) @@ -255,15 +272,33 @@ def __getitem__(self, item): rust.add(_PropertyPragma("detach")) rust.add(_Pragma("skip_doc_test")) -rust.add(_Parametrized(_ClassPragma("doc_test_signature"), factory=lambda signature: signature)) +rust.add( + _Parametrized( + _ClassPragma("doc_test_signature"), factory=lambda signature: signature + ) +) -group = _Parametrized(_ClassPragma("group", inherited=True), factory=lambda group: group) +group = _Parametrized( + _ClassPragma("group", inherited=True), factory=lambda group: group +) -synth.add(_Parametrized(_ClassPragma("from_class"), factory=lambda ref: _schema.SynthInfo( - from_class=_schema.get_type_name(ref))), key="synth") -synth.add(_Parametrized(_ClassPragma("on_arguments"), factory=lambda **kwargs: - _schema.SynthInfo(on_arguments={k: _schema.get_type_name(t) for k, t in kwargs.items()})), key="synth") +synth.add( + _Parametrized( + _ClassPragma("from_class"), + factory=lambda ref: _schema.SynthInfo(from_class=_schema.get_type_name(ref)), + ), + key="synth", +) +synth.add( + _Parametrized( + _ClassPragma("on_arguments"), + factory=lambda **kwargs: _schema.SynthInfo( + on_arguments={k: _schema.get_type_name(t) for k, t in kwargs.items()} + ), + ), + key="synth", +) @_dataclass(frozen=True) @@ -283,14 +318,21 @@ def modify(self, prop: _schema.Property): drop = object() -def annotate(annotated_cls: type, add_bases: _Iterable[type] | None = None, replace_bases: _Dict[type, type] | None = None, cfg: bool = False) -> _Callable[[type], _PropertyModifierList]: +def annotate( + annotated_cls: type, + add_bases: _Iterable[type] | None = None, + replace_bases: _Dict[type, type | None] | None = None, + cfg: bool = False, +) -> _Callable[[type], _PropertyModifierList]: """ Add or modify schema annotations after a class has been defined previously. The name of the class used for annotation must be `_`. - `replace_bases` can be used to replace bases on the annotated class. + `replace_bases` can be used to replace bases on the annotated class. Mapping to + `None` will remove that base class. """ + def decorator(cls: type) -> _PropertyModifierList: if cls.__name__ != "_": raise _schema.Error("Annotation classes must be named _") @@ -299,7 +341,11 @@ def decorator(cls: type) -> _PropertyModifierList: for p, v in cls.__dict__.get("_pragmas", {}).items(): _ClassPragma(p, value=v)(annotated_cls) if replace_bases: - annotated_cls.__bases__ = tuple(replace_bases.get(b, b) for b in annotated_cls.__bases__) + annotated_cls.__bases__ = tuple( + b + for b in (replace_bases.get(b, b) for b in annotated_cls.__bases__) + if b is not None + ) if add_bases: annotated_cls.__bases__ += tuple(add_bases) annotated_cls.__cfg__ = cfg @@ -312,9 +358,12 @@ def decorator(cls: type) -> _PropertyModifierList: elif p in annotated_cls.__annotations__: annotated_cls.__annotations__[p] |= a elif isinstance(a, (_PropertyModifierList, _PropertyModifierList)): - raise _schema.Error(f"annotated property {p} not present in annotated class " - f"{annotated_cls.__name__}") + raise _schema.Error( + f"annotated property {p} not present in annotated class " + f"{annotated_cls.__name__}" + ) else: annotated_cls.__annotations__[p] = a return _ + return decorator diff --git a/misc/codegen/loaders/dbschemeloader.py b/misc/codegen/loaders/dbschemeloader.py index f6fbab50499c..a9b599ef0c3c 100644 --- a/misc/codegen/loaders/dbschemeloader.py +++ b/misc/codegen/loaders/dbschemeloader.py @@ -12,9 +12,13 @@ class _Re: "|" r"^(?P@\w+)\s*=\s*(?P@\w+(?:\s*\|\s*@\w+)*)\s*;?" ) - field = re.compile(r"(?m)[\w\s]*\s(?P\w+)\s*:\s*(?P@?\w+)(?P\s+ref)?") + field = re.compile( + r"(?m)[\w\s]*\s(?P\w+)\s*:\s*(?P@?\w+)(?P\s+ref)?" + ) key = re.compile(r"@\w+") - comment = re.compile(r"(?m)(?s)/\*.*?\*/|//(?!dir=)[^\n]*$") # lookahead avoid ignoring metadata like //dir=foo + comment = re.compile( + r"(?m)(?s)/\*.*?\*/|//(?!dir=)[^\n]*$" + ) # lookahead avoid ignoring metadata like //dir=foo def _get_column(match): diff --git a/misc/codegen/loaders/schemaloader.py b/misc/codegen/loaders/schemaloader.py index 3b5f20cbbede..eaf08a04f571 100644 --- a/misc/codegen/loaders/schemaloader.py +++ b/misc/codegen/loaders/schemaloader.py @@ -1,4 +1,5 @@ -""" schema loader """ +"""schema loader""" + import sys import inflection @@ -33,37 +34,56 @@ def _get_class(cls: type) -> schema.Class: raise schema.Error(f"Only class definitions allowed in schema, found {cls}") # we must check that going to dbscheme names and back is preserved # In particular this will not happen if uppercase acronyms are included in the name - to_underscore_and_back = inflection.camelize(inflection.underscore(cls.__name__), uppercase_first_letter=True) + to_underscore_and_back = inflection.camelize( + inflection.underscore(cls.__name__), uppercase_first_letter=True + ) if cls.__name__ != to_underscore_and_back: - raise schema.Error(f"Class name must be upper camel-case, without capitalized acronyms, found {cls.__name__} " - f"instead of {to_underscore_and_back}") - if len({g for g in (getattr(b, f"{schema.inheritable_pragma_prefix}group", None) - for b in cls.__bases__) if g}) > 1: + raise schema.Error( + f"Class name must be upper camel-case, without capitalized acronyms, found {cls.__name__} " + f"instead of {to_underscore_and_back}" + ) + if ( + len( + { + g + for g in ( + getattr(b, f"{schema.inheritable_pragma_prefix}group", None) + for b in cls.__bases__ + ) + if g + } + ) + > 1 + ): raise schema.Error(f"Bases with mixed groups for {cls.__name__}") pragmas = { # dir and getattr inherit from bases - a[len(schema.inheritable_pragma_prefix):]: getattr(cls, a) - for a in dir(cls) if a.startswith(schema.inheritable_pragma_prefix) + a[len(schema.inheritable_pragma_prefix) :]: getattr(cls, a) + for a in dir(cls) + if a.startswith(schema.inheritable_pragma_prefix) } pragmas |= cls.__dict__.get("_pragmas", {}) derived = {d.__name__ for d in cls.__subclasses__()} if "null" in pragmas and derived: raise schema.Error(f"Null class cannot be derived") - return schema.Class(name=cls.__name__, - bases=[b.__name__ for b in cls.__bases__ if b is not object], - derived=derived, - pragmas=pragmas, - cfg=cls.__cfg__ if hasattr(cls, "__cfg__") else False, - # in the following we don't use `getattr` to avoid inheriting - properties=[ - a | _PropertyNamer(n) - for n, a in cls.__dict__.get("__annotations__", {}).items() - ], - doc=schema.split_doc(cls.__doc__), - ) - - -def _toposort_classes_by_group(classes: typing.Dict[str, schema.Class]) -> typing.Dict[str, schema.Class]: + return schema.Class( + name=cls.__name__, + bases=[b.__name__ for b in cls.__bases__ if b is not object], + derived=derived, + pragmas=pragmas, + cfg=cls.__cfg__ if hasattr(cls, "__cfg__") else False, + # in the following we don't use `getattr` to avoid inheriting + properties=[ + a | _PropertyNamer(n) + for n, a in cls.__dict__.get("__annotations__", {}).items() + ], + doc=schema.split_doc(cls.__doc__), + ) + + +def _toposort_classes_by_group( + classes: typing.Dict[str, schema.Class], +) -> typing.Dict[str, schema.Class]: groups = {} ret = {} @@ -79,7 +99,7 @@ def _toposort_classes_by_group(classes: typing.Dict[str, schema.Class]) -> typin def _fill_synth_information(classes: typing.Dict[str, schema.Class]): - """ Take a dictionary where the `synth` field is filled for all explicitly synthesized classes + """Take a dictionary where the `synth` field is filled for all explicitly synthesized classes and update it so that all non-final classes that have only synthesized final descendants get `True` as` value for the `synth` field """ @@ -109,7 +129,7 @@ def fill_is_synth(name: str): def _fill_hideable_information(classes: typing.Dict[str, schema.Class]): - """ Update the class map propagating the `hideable` attribute upwards in the hierarchy """ + """Update the class map propagating the `hideable` attribute upwards in the hierarchy""" todo = [cls for cls in classes.values() if "ql_hideable" in cls.pragmas] while todo: cls = todo.pop() @@ -123,10 +143,14 @@ def _fill_hideable_information(classes: typing.Dict[str, schema.Class]): def _check_test_with(classes: typing.Dict[str, schema.Class]): for cls in classes.values(): test_with = typing.cast(str, cls.pragmas.get("qltest_test_with")) - transitive_test_with = test_with and classes[test_with].pragmas.get("qltest_test_with") + transitive_test_with = test_with and classes[test_with].pragmas.get( + "qltest_test_with" + ) if test_with and transitive_test_with: - raise schema.Error(f"{cls.name} has test_with {test_with} which in turn " - f"has test_with {transitive_test_with}, use that directly") + raise schema.Error( + f"{cls.name} has test_with {test_with} which in turn " + f"has test_with {transitive_test_with}, use that directly" + ) def load(m: types.ModuleType) -> schema.Schema: @@ -136,6 +160,7 @@ def load(m: types.ModuleType) -> schema.Schema: known = {"int", "string", "boolean"} known.update(n for n in m.__dict__ if not n.startswith("__")) import misc.codegen.lib.schemadefs as defs + null = None for name, data in m.__dict__.items(): if hasattr(defs, name): @@ -152,21 +177,26 @@ def load(m: types.ModuleType) -> schema.Schema: continue cls = _get_class(data) if classes and not cls.bases: - raise schema.Error( - f"Only one root class allowed, found second root {name}") + raise schema.Error(f"Only one root class allowed, found second root {name}") cls.check_types(known) classes[name] = cls if "null" in cls.pragmas: del cls.pragmas["null"] if null is not None: - raise schema.Error(f"Null class {null} already defined, second null class {name} not allowed") + raise schema.Error( + f"Null class {null} already defined, second null class {name} not allowed" + ) null = name _fill_synth_information(classes) _fill_hideable_information(classes) _check_test_with(classes) - return schema.Schema(includes=includes, classes=imported_classes | _toposort_classes_by_group(classes), null=null) + return schema.Schema( + includes=includes, + classes=imported_classes | _toposort_classes_by_group(classes), + null=null, + ) def load_file(path: pathlib.Path) -> schema.Schema: diff --git a/misc/codegen/templates/ql_parent.mustache b/misc/codegen/templates/ql_parent.mustache index 67b975183736..84bc0d79a0b7 100644 --- a/misc/codegen/templates/ql_parent.mustache +++ b/misc/codegen/templates/ql_parent.mustache @@ -9,51 +9,39 @@ import {{.}} private module Impl { {{#classes}} - private Element getImmediateChildOf{{name}}({{name}} e, int index, string partialPredicateCall) { - {{! avoid unused argument warnings on root element, assuming the root element has no children }} - {{#root}}none(){{/root}} - {{^root}} - {{! b is the base offset 0, for ease of generation }} - {{! b is constructed to be strictly greater than the indexes required for children coming from }} - {{! n is the base offset for direct children, equal to the last base offset from above }} - {{! n is constructed to be strictly greater than the indexes for children }} - exists(int b{{#bases}}, int b{{.}}{{/bases}}, int n{{#properties}}{{#is_child}}, int n{{singular}}{{/is_child}}{{/properties}} | - b = 0 - {{#bases}} - and - b{{.}} = b{{prev}} + 1 + max(int i | i = -1 or exists(getImmediateChildOf{{.}}(e, i, _)) | i) - {{/bases}} - and - n = b{{last_base}} - {{#properties}} - {{#is_child}} - {{! n is defined on top of the previous definition }} - {{! for single and optional properties it adds 1 (regardless of whether the optional property exists) }} - {{! for repeated it adds 1 + the maximum index (which works for repeated optional as well) }} - and - n{{singular}} = n{{prev_child}} + 1{{#is_repeated}}+ max(int i | i = -1 or exists(e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}(i)) | i){{/is_repeated}} - {{/is_child}} - {{/properties}} and ( - none() - {{#bases}} - or - result = getImmediateChildOf{{.}}(e, index - b{{prev}}, partialPredicateCall) - {{/bases}} - {{#properties}} - {{#is_child}} - or - {{#is_repeated}} - result = e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}(index - n{{prev_child}}) and partialPredicateCall = "{{singular}}(" + (index - n{{prev_child}}).toString() + ")" - {{/is_repeated}} - {{^is_repeated}} - index = n{{prev_child}} and result = e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}() and partialPredicateCall = "{{singular}}()" - {{/is_repeated}} - {{/is_child}} - {{/properties}} - )) - {{/root}} - } - + {{#final}} + private Element getImmediateChildOf{{name}}({{name}} e, int index, string partialPredicateCall) { + {{^has_children}}none(){{/has_children}} + {{#has_children}} + {{! n is the base offset 0, for ease of generation }} + {{! n is constructed to be strictly greater than the indexes for children }} + exists(int n{{#all_children}}, int n{{property.singular}}{{/all_children}} | + n = 0 + {{#all_children}} + {{#property}} + {{! n is defined on top of the previous definition }} + {{! for single and optional properties it adds 1 (regardless of whether the optional property exists) }} + {{! for repeated it adds 1 + the maximum index (which works for repeated optional as well) }} + and + n{{singular}} = n{{prev}} + 1{{#is_repeated}}+ max(int i | i = -1 or exists(e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}(i)) | i){{/is_repeated}} + {{/property}} + {{/all_children}} and ( + none() + {{#all_children}} + {{#property}} + or + {{#is_repeated}} + result = e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}(index - n{{prev}}) and partialPredicateCall = "{{singular}}(" + (index - n{{prev}}).toString() + ")" + {{/is_repeated}} + {{^is_repeated}} + index = n{{prev}} and result = e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}() and partialPredicateCall = "{{singular}}()" + {{/is_repeated}} + {{/property}} + {{/all_children}} + )) + {{/has_children}} + } + {{/final}} {{/classes}} cached Element getImmediateChild(Element e, int index, string partialAccessor) { diff --git a/misc/codegen/templates/ql_test_class.mustache b/misc/codegen/templates/ql_test_class.mustache index 63c5e24050c4..f63933e5ca65 100644 --- a/misc/codegen/templates/ql_test_class.mustache +++ b/misc/codegen/templates/ql_test_class.mustache @@ -3,14 +3,28 @@ import {{elements_module}} import TestUtils -from {{class_name}} x{{#properties}}, {{#type}}{{.}}{{/type}}{{^type}}string{{/type}} {{getter}}{{/properties}} -where toBeTested(x) and not x.isUnknown() +query predicate instances({{class_name}} x{{#show_ql_class}}, string primaryQlClasses{{/show_ql_class}}{{#properties}}{{#is_total}}, string {{getter}}__label, {{#type}}{{.}}{{/type}}{{^type}}string{{/type}} {{getter}}{{/is_total}}{{/properties}}) { + toBeTested(x) and not x.isUnknown() + {{#show_ql_class}} + and primaryQlClasses = x.getPrimaryQlClasses() + {{/show_ql_class}} + {{#properties}} + {{#is_total}} + and {{getter}}__label = "{{getter}}:" + {{#type}} + and {{getter}} = x.{{getter}}() + {{/type}} + {{^type}} + and if x.{{getter}}() then {{getter}} = "yes" else {{getter}} = "no" + {{/type}} + {{/is_total}} + {{/properties}} +} + {{#properties}} -{{#type}} -and {{getter}} = x.{{getter}}() -{{/type}} -{{^type}} -and if x.{{getter}}() then {{getter}} = "yes" else {{getter}} = "no" -{{/type}} +{{^is_total}} +query predicate {{getter}}({{class_name}} x{{#is_indexed}}, int index{{/is_indexed}}, {{type}} {{getter}}) { + toBeTested(x) and not x.isUnknown() and {{getter}} = x.{{getter}}({{#is_indexed}}index{{/is_indexed}}) +} +{{/is_total}} {{/properties}} -select x{{#show_ql_class}}, x.getPrimaryQlClasses(){{/show_ql_class}}{{#properties}}, "{{getter}}:", {{getter}}{{/properties}} diff --git a/misc/codegen/templates/ql_test_property.mustache b/misc/codegen/templates/ql_test_property.mustache deleted file mode 100644 index 2c293d7bcaba..000000000000 --- a/misc/codegen/templates/ql_test_property.mustache +++ /dev/null @@ -1,10 +0,0 @@ -// generated by {{generator}}, do not edit - -import {{elements_module}} -import TestUtils - -{{#property}} -from {{class_name}} x{{#is_indexed}}, int index{{/is_indexed}} -where toBeTested(x) and not x.isUnknown() -select x, {{#is_indexed}}index, {{/is_indexed}}x.{{getter}}({{#is_indexed}}index{{/is_indexed}}) -{{/property}} diff --git a/misc/codegen/templates/rust_classes.mustache b/misc/codegen/templates/rust_classes.mustache index 0fa29b1eb690..b30a039e5224 100644 --- a/misc/codegen/templates/rust_classes.mustache +++ b/misc/codegen/templates/rust_classes.mustache @@ -63,9 +63,23 @@ pub struct {{name}} { impl {{name}} { {{#detached_fields}} - pub fn emit_{{singular_field_name}}(id: trap::Label, {{#is_repeated}}{{^is_unordered}}i: usize, {{/is_unordered}}{{/is_repeated}}value: {{base_type}}, out: &mut trap::Writer) { - out.add_tuple("{{table_name}}", vec![id.into(), {{#is_repeated}}{{^is_unordered}}i.into(), {{/is_unordered}}{{/is_repeated}}value.into()]); + pub fn emit_{{singular_field_name}}(id: trap::Label{{^is_predicate}}{{#is_repeated}}{{^is_unordered}}, i: usize{{/is_unordered}}{{/is_repeated}}, value: {{base_type}}{{/is_predicate}}, out: &mut trap::Writer) { + out.add_tuple("{{table_name}}", vec![id.into(){{^is_predicate}}{{#is_repeated}}{{^is_unordered}}, i.into(){{/is_unordered}}{{/is_repeated}}, value.into(){{/is_predicate}}]); } + + {{#is_repeated}} + pub fn emit_{{field_name}}(id: trap::Label, values: impl IntoIterator, out: &mut trap::Writer) { + values + .into_iter() + {{^is_unordered}} + .enumerate() + .for_each(|(i, value)| Self::emit_{{singular_field_name}}(id, i, value, out)); + {{/is_unordered}} + {{#is_unordered}} + .for_each(|value| Self::emit_{{singular_field_name}}(id, value, out)); + {{/is_unordered}} + } + {{/is_repeated}} {{/detached_fields}} } {{/has_detached_fields}} diff --git a/misc/codegen/test/test_cpp.py b/misc/codegen/test/test_cpp.py index c4bee337a4f7..77295bb0d828 100644 --- a/misc/codegen/test/test_cpp.py +++ b/misc/codegen/test/test_cpp.py @@ -17,34 +17,49 @@ def test_field_name(): assert f.field_name == "foo" -@pytest.mark.parametrize("type,expected", [ - ("std::string", "trapQuoted(value)"), - ("bool", '(value ? "true" : "false")'), - ("something_else", "value"), -]) +@pytest.mark.parametrize( + "type,expected", + [ + ("std::string", "trapQuoted(value)"), + ("bool", '(value ? "true" : "false")'), + ("something_else", "value"), + ], +) def test_field_get_streamer(type, expected): f = cpp.Field("name", type) assert f.get_streamer()("value") == expected -@pytest.mark.parametrize("is_optional,is_repeated,is_predicate,expected", [ - (False, False, False, True), - (True, False, False, False), - (False, True, False, False), - (True, True, False, False), - (False, False, True, False), -]) +@pytest.mark.parametrize( + "is_optional,is_repeated,is_predicate,expected", + [ + (False, False, False, True), + (True, False, False, False), + (False, True, False, False), + (True, True, False, False), + (False, False, True, False), + ], +) def test_field_is_single(is_optional, is_repeated, is_predicate, expected): - f = cpp.Field("name", "type", is_optional=is_optional, is_repeated=is_repeated, is_predicate=is_predicate) + f = cpp.Field( + "name", + "type", + is_optional=is_optional, + is_repeated=is_repeated, + is_predicate=is_predicate, + ) assert f.is_single is expected -@pytest.mark.parametrize("is_optional,is_repeated,expected", [ - (False, False, "bar"), - (True, False, "std::optional"), - (False, True, "std::vector"), - (True, True, "std::vector>"), -]) +@pytest.mark.parametrize( + "is_optional,is_repeated,expected", + [ + (False, False, "bar"), + (True, False, "std::optional"), + (False, True, "std::vector"), + (True, True, "std::vector>"), + ], +) def test_field_modal_types(is_optional, is_repeated, expected): f = cpp.Field("name", "bar", is_optional=is_optional, is_repeated=is_repeated) assert f.type == expected @@ -69,11 +84,9 @@ def test_tag_has_first_base_marked(): assert t.bases == expected -@pytest.mark.parametrize("bases,expected", [ - ([], False), - (["a"], True), - (["a", "b"], True) -]) +@pytest.mark.parametrize( + "bases,expected", [([], False), (["a"], True), (["a", "b"], True)] +) def test_tag_has_bases(bases, expected): t = cpp.Tag("name", bases, "id") assert t.has_bases is expected @@ -91,11 +104,9 @@ def test_class_has_first_base_marked(): assert c.bases == expected -@pytest.mark.parametrize("bases,expected", [ - ([], False), - (["a"], True), - (["a", "b"], True) -]) +@pytest.mark.parametrize( + "bases,expected", [([], False), (["a"], True), (["a", "b"], True)] +) def test_class_has_bases(bases, expected): t = cpp.Class("name", [cpp.Class(b) for b in bases]) assert t.has_bases is expected @@ -113,5 +124,5 @@ def test_class_single_fields(): assert c.single_fields == fields[::2] -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(pytest.main([__file__] + sys.argv[1:])) diff --git a/misc/codegen/test/test_cppgen.py b/misc/codegen/test/test_cppgen.py index 063940322412..8d0d4605b052 100644 --- a/misc/codegen/test/test_cppgen.py +++ b/misc/codegen/test/test_cppgen.py @@ -18,7 +18,10 @@ def ret(classes): assert isinstance(g, cpp.ClassList), f assert g.include_parent is (f.parent != output_dir) assert f.name == "TrapClasses", f - return {str(f.parent.relative_to(output_dir)): g.classes for f, g in generated.items()} + return { + str(f.parent.relative_to(output_dir)): g.classes + for f, g in generated.items() + } return ret @@ -38,129 +41,193 @@ def test_empty(generate): def test_empty_class(generate): - assert generate([ - schema.Class(name="MyClass"), - ]) == [ - cpp.Class(name="MyClass", final=True, trap_name="MyClasses") - ] + assert generate( + [ + schema.Class(name="MyClass"), + ] + ) == [cpp.Class(name="MyClass", final=True, trap_name="MyClasses")] def test_two_class_hierarchy(generate): base = cpp.Class(name="A") - assert generate([ - schema.Class(name="A", derived={"B"}), - schema.Class(name="B", bases=["A"]), - ]) == [ + assert generate( + [ + schema.Class(name="A", derived={"B"}), + schema.Class(name="B", bases=["A"]), + ] + ) == [ base, cpp.Class(name="B", bases=[base], final=True, trap_name="Bs"), ] -@pytest.mark.parametrize("type,expected", [ - ("a", "a"), - ("string", "std::string"), - ("boolean", "bool"), - ("MyClass", "TrapLabel"), -]) -@pytest.mark.parametrize("property_cls,optional,repeated,unordered,trap_name", [ - (schema.SingleProperty, False, False, False, None), - (schema.OptionalProperty, True, False, False, "MyClassProps"), - (schema.RepeatedProperty, False, True, False, "MyClassProps"), - (schema.RepeatedOptionalProperty, True, True, False, "MyClassProps"), - (schema.RepeatedUnorderedProperty, False, True, True, "MyClassProps"), -]) -def test_class_with_field(generate, type, expected, property_cls, optional, repeated, unordered, trap_name): - assert generate([ - schema.Class(name="MyClass", properties=[property_cls("prop", type)]), - ]) == [ - cpp.Class(name="MyClass", - fields=[cpp.Field("prop", expected, is_optional=optional, - is_repeated=repeated, is_unordered=unordered, trap_name=trap_name)], - trap_name="MyClasses", - final=True) +@pytest.mark.parametrize( + "type,expected", + [ + ("a", "a"), + ("string", "std::string"), + ("boolean", "bool"), + ("MyClass", "TrapLabel"), + ], +) +@pytest.mark.parametrize( + "property_cls,optional,repeated,unordered,trap_name", + [ + (schema.SingleProperty, False, False, False, None), + (schema.OptionalProperty, True, False, False, "MyClassProps"), + (schema.RepeatedProperty, False, True, False, "MyClassProps"), + (schema.RepeatedOptionalProperty, True, True, False, "MyClassProps"), + (schema.RepeatedUnorderedProperty, False, True, True, "MyClassProps"), + ], +) +def test_class_with_field( + generate, type, expected, property_cls, optional, repeated, unordered, trap_name +): + assert generate( + [ + schema.Class(name="MyClass", properties=[property_cls("prop", type)]), + ] + ) == [ + cpp.Class( + name="MyClass", + fields=[ + cpp.Field( + "prop", + expected, + is_optional=optional, + is_repeated=repeated, + is_unordered=unordered, + trap_name=trap_name, + ) + ], + trap_name="MyClasses", + final=True, + ) ] def test_class_field_with_null(generate, input): input.null = "Null" a = cpp.Class(name="A") - assert generate([ - schema.Class(name="A", derived={"B"}), - schema.Class(name="B", bases=["A"], properties=[ - schema.SingleProperty("x", "A"), - schema.SingleProperty("y", "B"), - ]) - ]) == [ + assert generate( + [ + schema.Class(name="A", derived={"B"}), + schema.Class( + name="B", + bases=["A"], + properties=[ + schema.SingleProperty("x", "A"), + schema.SingleProperty("y", "B"), + ], + ), + ] + ) == [ a, - cpp.Class(name="B", bases=[a], final=True, trap_name="Bs", - fields=[ - cpp.Field("x", "TrapLabel"), - cpp.Field("y", "TrapLabel"), - ]), + cpp.Class( + name="B", + bases=[a], + final=True, + trap_name="Bs", + fields=[ + cpp.Field("x", "TrapLabel"), + cpp.Field("y", "TrapLabel"), + ], + ), ] def test_class_with_predicate(generate): - assert generate([ - schema.Class(name="MyClass", properties=[ - schema.PredicateProperty("prop")]), - ]) == [ - cpp.Class(name="MyClass", - fields=[ - cpp.Field("prop", "bool", trap_name="MyClassProp", is_predicate=True)], - trap_name="MyClasses", - final=True) + assert generate( + [ + schema.Class(name="MyClass", properties=[schema.PredicateProperty("prop")]), + ] + ) == [ + cpp.Class( + name="MyClass", + fields=[ + cpp.Field("prop", "bool", trap_name="MyClassProp", is_predicate=True) + ], + trap_name="MyClasses", + final=True, + ) ] -@pytest.mark.parametrize("name", - ["start_line", "start_column", "end_line", "end_column", "index", "num_whatever", "width"]) +@pytest.mark.parametrize( + "name", + [ + "start_line", + "start_column", + "end_line", + "end_column", + "index", + "num_whatever", + "width", + ], +) def test_class_with_overridden_unsigned_field(generate, name): - assert generate([ - schema.Class(name="MyClass", properties=[ - schema.SingleProperty(name, "bar")]), - ]) == [ - cpp.Class(name="MyClass", - fields=[cpp.Field(name, "unsigned")], - trap_name="MyClasses", - final=True) + assert generate( + [ + schema.Class( + name="MyClass", properties=[schema.SingleProperty(name, "bar")] + ), + ] + ) == [ + cpp.Class( + name="MyClass", + fields=[cpp.Field(name, "unsigned")], + trap_name="MyClasses", + final=True, + ) ] def test_class_with_overridden_underscore_field(generate): - assert generate([ - schema.Class(name="MyClass", properties=[ - schema.SingleProperty("something_", "bar")]), - ]) == [ - cpp.Class(name="MyClass", - fields=[cpp.Field("something", "bar")], - trap_name="MyClasses", - final=True) + assert generate( + [ + schema.Class( + name="MyClass", properties=[schema.SingleProperty("something_", "bar")] + ), + ] + ) == [ + cpp.Class( + name="MyClass", + fields=[cpp.Field("something", "bar")], + trap_name="MyClasses", + final=True, + ) ] @pytest.mark.parametrize("name", cpp.cpp_keywords) def test_class_with_keyword_field(generate, name): - assert generate([ - schema.Class(name="MyClass", properties=[ - schema.SingleProperty(name, "bar")]), - ]) == [ - cpp.Class(name="MyClass", - fields=[cpp.Field(name + "_", "bar")], - trap_name="MyClasses", - final=True) + assert generate( + [ + schema.Class( + name="MyClass", properties=[schema.SingleProperty(name, "bar")] + ), + ] + ) == [ + cpp.Class( + name="MyClass", + fields=[cpp.Field(name + "_", "bar")], + trap_name="MyClasses", + final=True, + ) ] def test_classes_with_dirs(generate_grouped): cbase = cpp.Class(name="CBase") - assert generate_grouped([ - schema.Class(name="A"), - schema.Class(name="B", pragmas={"group": "foo"}), - schema.Class(name="CBase", derived={"C"}, pragmas={"group": "bar"}), - schema.Class(name="C", bases=["CBase"], pragmas={"group": "bar"}), - schema.Class(name="D", pragmas={"group": "foo/bar/baz"}), - ]) == { + assert generate_grouped( + [ + schema.Class(name="A"), + schema.Class(name="B", pragmas={"group": "foo"}), + schema.Class(name="CBase", derived={"C"}, pragmas={"group": "bar"}), + schema.Class(name="C", bases=["CBase"], pragmas={"group": "bar"}), + schema.Class(name="D", pragmas={"group": "foo/bar/baz"}), + ] + ) == { ".": [cpp.Class(name="A", trap_name="As", final=True)], "foo": [cpp.Class(name="B", trap_name="Bs", final=True)], "bar": [cbase, cpp.Class(name="C", bases=[cbase], trap_name="Cs", final=True)], @@ -169,81 +236,126 @@ def test_classes_with_dirs(generate_grouped): def test_cpp_skip_pragma(generate): - assert generate([ - schema.Class(name="A", properties=[ - schema.SingleProperty("x", "foo"), - schema.SingleProperty("y", "bar", pragmas=["x", "cpp_skip", "y"]), - ]) - ]) == [ - cpp.Class(name="A", final=True, trap_name="As", fields=[ - cpp.Field("x", "foo"), - ]), + assert generate( + [ + schema.Class( + name="A", + properties=[ + schema.SingleProperty("x", "foo"), + schema.SingleProperty("y", "bar", pragmas=["x", "cpp_skip", "y"]), + ], + ) + ] + ) == [ + cpp.Class( + name="A", + final=True, + trap_name="As", + fields=[ + cpp.Field("x", "foo"), + ], + ), ] def test_synth_classes_ignored(generate): - assert generate([ - schema.Class( - name="W", - pragmas={"synth": schema.SynthInfo()}, - ), - schema.Class( - name="X", - pragmas={"synth": schema.SynthInfo(from_class="A")}, - ), - schema.Class( - name="Y", - pragmas={"synth": schema.SynthInfo(on_arguments={"a": "A", "b": "int"})}, - ), - schema.Class( - name="Z", - ), - ]) == [ + assert generate( + [ + schema.Class( + name="W", + pragmas={"synth": schema.SynthInfo()}, + ), + schema.Class( + name="X", + pragmas={"synth": schema.SynthInfo(from_class="A")}, + ), + schema.Class( + name="Y", + pragmas={ + "synth": schema.SynthInfo(on_arguments={"a": "A", "b": "int"}) + }, + ), + schema.Class( + name="Z", + ), + ] + ) == [ cpp.Class(name="Z", final=True, trap_name="Zs"), ] def test_synth_properties_ignored(generate): - assert generate([ - schema.Class( + assert generate( + [ + schema.Class( + name="X", + properties=[ + schema.SingleProperty("x", "a"), + schema.SingleProperty("y", "b", synth=True), + schema.SingleProperty("z", "c"), + schema.OptionalProperty("foo", "bar", synth=True), + schema.RepeatedProperty("baz", "bazz", synth=True), + schema.RepeatedOptionalProperty("bazzz", "bazzzz", synth=True), + schema.RepeatedUnorderedProperty("bazzzzz", "bazzzzzz", synth=True), + ], + ), + ] + ) == [ + cpp.Class( name="X", - properties=[ - schema.SingleProperty("x", "a"), - schema.SingleProperty("y", "b", synth=True), - schema.SingleProperty("z", "c"), - schema.OptionalProperty("foo", "bar", synth=True), - schema.RepeatedProperty("baz", "bazz", synth=True), - schema.RepeatedOptionalProperty("bazzz", "bazzzz", synth=True), - schema.RepeatedUnorderedProperty("bazzzzz", "bazzzzzz", synth=True), + final=True, + trap_name="Xes", + fields=[ + cpp.Field("x", "a"), + cpp.Field("z", "c"), ], ), - ]) == [ - cpp.Class(name="X", final=True, trap_name="Xes", fields=[ - cpp.Field("x", "a"), - cpp.Field("z", "c"), - ]), ] def test_properties_with_custom_db_table_names(generate): - assert generate([ - schema.Class("Obj", properties=[ - schema.OptionalProperty("x", "a", pragmas={"ql_db_table_name": "foo"}), - schema.RepeatedProperty("y", "b", pragmas={"ql_db_table_name": "bar"}), - schema.RepeatedOptionalProperty("z", "c", pragmas={"ql_db_table_name": "baz"}), - schema.PredicateProperty("p", pragmas={"ql_db_table_name": "hello"}), - schema.RepeatedUnorderedProperty("q", "d", pragmas={"ql_db_table_name": "world"}), - ]), - ]) == [ - cpp.Class(name="Obj", final=True, trap_name="Objs", fields=[ - cpp.Field("x", "a", is_optional=True, trap_name="Foo"), - cpp.Field("y", "b", is_repeated=True, trap_name="Bar"), - cpp.Field("z", "c", is_repeated=True, is_optional=True, trap_name="Baz"), - cpp.Field("p", "bool", is_predicate=True, trap_name="Hello"), - cpp.Field("q", "d", is_repeated=True, is_unordered=True, trap_name="World"), - ]), + assert generate( + [ + schema.Class( + "Obj", + properties=[ + schema.OptionalProperty( + "x", "a", pragmas={"ql_db_table_name": "foo"} + ), + schema.RepeatedProperty( + "y", "b", pragmas={"ql_db_table_name": "bar"} + ), + schema.RepeatedOptionalProperty( + "z", "c", pragmas={"ql_db_table_name": "baz"} + ), + schema.PredicateProperty( + "p", pragmas={"ql_db_table_name": "hello"} + ), + schema.RepeatedUnorderedProperty( + "q", "d", pragmas={"ql_db_table_name": "world"} + ), + ], + ), + ] + ) == [ + cpp.Class( + name="Obj", + final=True, + trap_name="Objs", + fields=[ + cpp.Field("x", "a", is_optional=True, trap_name="Foo"), + cpp.Field("y", "b", is_repeated=True, trap_name="Bar"), + cpp.Field( + "z", "c", is_repeated=True, is_optional=True, trap_name="Baz" + ), + cpp.Field("p", "bool", is_predicate=True, trap_name="Hello"), + cpp.Field( + "q", "d", is_repeated=True, is_unordered=True, trap_name="World" + ), + ], + ), ] -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(pytest.main([__file__] + sys.argv[1:])) diff --git a/misc/codegen/test/test_dbscheme.py b/misc/codegen/test/test_dbscheme.py index e2635ecee5ac..2ba7a269c6e8 100644 --- a/misc/codegen/test/test_dbscheme.py +++ b/misc/codegen/test/test_dbscheme.py @@ -14,12 +14,15 @@ def test_dbcolumn_keyword_name(keyword): assert dbscheme.Column(keyword, "some_type").name == keyword + "_" -@pytest.mark.parametrize("type,binding,lhstype,rhstype", [ - ("builtin_type", False, "builtin_type", "builtin_type ref"), - ("builtin_type", True, "builtin_type", "builtin_type ref"), - ("@at_type", False, "int", "@at_type ref"), - ("@at_type", True, "unique int", "@at_type"), -]) +@pytest.mark.parametrize( + "type,binding,lhstype,rhstype", + [ + ("builtin_type", False, "builtin_type", "builtin_type ref"), + ("builtin_type", True, "builtin_type", "builtin_type ref"), + ("@at_type", False, "int", "@at_type ref"), + ("@at_type", True, "unique int", "@at_type"), + ], +) def test_dbcolumn_types(type, binding, lhstype, rhstype): col = dbscheme.Column("foo", type, binding) assert col.lhstype == lhstype @@ -34,7 +37,11 @@ def test_keyset_has_first_id_marked(): def test_table_has_first_column_marked(): - columns = [dbscheme.Column("a", "x"), dbscheme.Column("b", "y", binding=True), dbscheme.Column("c", "z")] + columns = [ + dbscheme.Column("a", "x"), + dbscheme.Column("b", "y", binding=True), + dbscheme.Column("c", "z"), + ] expected = deepcopy(columns) table = dbscheme.Table("foo", columns) expected[0].first = True @@ -48,5 +55,5 @@ def test_union_has_first_case_marked(): assert [c.type for c in u.rhs] == rhs -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(pytest.main([__file__] + sys.argv[1:])) diff --git a/misc/codegen/test/test_dbschemegen.py b/misc/codegen/test/test_dbschemegen.py index 653ad7fc8a39..7ae1941fe8d1 100644 --- a/misc/codegen/test/test_dbschemegen.py +++ b/misc/codegen/test/test_dbschemegen.py @@ -8,10 +8,12 @@ InputExpectedPair = collections.namedtuple("InputExpectedPair", ("input", "expected")) -@pytest.fixture(params=[ - InputExpectedPair(None, None), - InputExpectedPair("foodir", pathlib.Path("foodir")), -]) +@pytest.fixture( + params=[ + InputExpectedPair(None, None), + InputExpectedPair("foodir", pathlib.Path("foodir")), + ] +) def dir_param(request): return request.param @@ -21,7 +23,7 @@ def generate(opts, input, renderer): def func(classes, null=None): input.classes = {cls.name: cls for cls in classes} input.null = null - (out, data), = run_generation(dbschemegen.generate, opts, renderer).items() + ((out, data),) = run_generation(dbschemegen.generate, opts, renderer).items() assert out is opts.dbscheme return data @@ -48,23 +50,26 @@ def test_includes(input, opts, generate): dbscheme.SchemeInclude( src=pathlib.Path(i), data=i + " data", - ) for i in includes + ) + for i in includes ], declarations=[], ) def test_empty_final_class(generate, dir_param): - assert generate([ - schema.Class("Object", pragmas={"group": dir_param.input}), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class("Object", pragmas={"group": dir_param.input}), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ dbscheme.Table( name="objects", columns=[ - dbscheme.Column('id', '@object', binding=True), + dbscheme.Column("id", "@object", binding=True), ], dir=dir_param.expected, ) @@ -73,218 +78,279 @@ def test_empty_final_class(generate, dir_param): def test_final_class_with_single_scalar_field(generate, dir_param): - assert generate([ - schema.Class("Object", pragmas={"group": dir_param.input}, properties=[ - schema.SingleProperty("foo", "bar"), - ]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class( + "Object", + pragmas={"group": dir_param.input}, + properties=[ + schema.SingleProperty("foo", "bar"), + ], + ), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ dbscheme.Table( name="objects", columns=[ - dbscheme.Column('id', '@object', binding=True), - dbscheme.Column('foo', 'bar'), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object", binding=True), + dbscheme.Column("foo", "bar"), + ], + dir=dir_param.expected, ) ], ) def test_final_class_with_single_class_field(generate, dir_param): - assert generate([ - schema.Class("Object", pragmas={"group": dir_param.input}, properties=[ - schema.SingleProperty("foo", "Bar"), - ]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class( + "Object", + pragmas={"group": dir_param.input}, + properties=[ + schema.SingleProperty("foo", "Bar"), + ], + ), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ dbscheme.Table( name="objects", columns=[ - dbscheme.Column('id', '@object', binding=True), - dbscheme.Column('foo', '@bar'), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object", binding=True), + dbscheme.Column("foo", "@bar"), + ], + dir=dir_param.expected, ) ], ) def test_final_class_with_optional_field(generate, dir_param): - assert generate([ - schema.Class("Object", pragmas={"group": dir_param.input}, properties=[ - schema.OptionalProperty("foo", "bar"), - ]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class( + "Object", + pragmas={"group": dir_param.input}, + properties=[ + schema.OptionalProperty("foo", "bar"), + ], + ), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ dbscheme.Table( name="objects", columns=[ - dbscheme.Column('id', '@object', binding=True), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object", binding=True), + ], + dir=dir_param.expected, ), dbscheme.Table( name="object_foos", keyset=dbscheme.KeySet(["id"]), columns=[ - dbscheme.Column('id', '@object'), - dbscheme.Column('foo', 'bar'), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object"), + dbscheme.Column("foo", "bar"), + ], + dir=dir_param.expected, ), ], ) -@pytest.mark.parametrize("property_cls", [schema.RepeatedProperty, schema.RepeatedOptionalProperty]) +@pytest.mark.parametrize( + "property_cls", [schema.RepeatedProperty, schema.RepeatedOptionalProperty] +) def test_final_class_with_repeated_field(generate, property_cls, dir_param): - assert generate([ - schema.Class("Object", pragmas={"group": dir_param.input}, properties=[ - property_cls("foo", "bar"), - ]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class( + "Object", + pragmas={"group": dir_param.input}, + properties=[ + property_cls("foo", "bar"), + ], + ), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ dbscheme.Table( name="objects", columns=[ - dbscheme.Column('id', '@object', binding=True), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object", binding=True), + ], + dir=dir_param.expected, ), dbscheme.Table( name="object_foos", keyset=dbscheme.KeySet(["id", "index"]), columns=[ - dbscheme.Column('id', '@object'), - dbscheme.Column('index', 'int'), - dbscheme.Column('foo', 'bar'), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object"), + dbscheme.Column("index", "int"), + dbscheme.Column("foo", "bar"), + ], + dir=dir_param.expected, ), ], ) def test_final_class_with_repeated_unordered_field(generate, dir_param): - assert generate([ - schema.Class("Object", pragmas={"group": dir_param.input}, properties=[ - schema.RepeatedUnorderedProperty("foo", "bar"), - ]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class( + "Object", + pragmas={"group": dir_param.input}, + properties=[ + schema.RepeatedUnorderedProperty("foo", "bar"), + ], + ), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ dbscheme.Table( name="objects", columns=[ - dbscheme.Column('id', '@object', binding=True), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object", binding=True), + ], + dir=dir_param.expected, ), dbscheme.Table( name="object_foos", columns=[ - dbscheme.Column('id', '@object'), - dbscheme.Column('foo', 'bar'), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object"), + dbscheme.Column("foo", "bar"), + ], + dir=dir_param.expected, ), ], ) def test_final_class_with_predicate_field(generate, dir_param): - assert generate([ - schema.Class("Object", pragmas={"group": dir_param.input}, properties=[ - schema.PredicateProperty("foo"), - ]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class( + "Object", + pragmas={"group": dir_param.input}, + properties=[ + schema.PredicateProperty("foo"), + ], + ), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ dbscheme.Table( name="objects", columns=[ - dbscheme.Column('id', '@object', binding=True), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object", binding=True), + ], + dir=dir_param.expected, ), dbscheme.Table( name="object_foo", keyset=dbscheme.KeySet(["id"]), columns=[ - dbscheme.Column('id', '@object'), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object"), + ], + dir=dir_param.expected, ), ], ) def test_final_class_with_more_fields(generate, dir_param): - assert generate([ - schema.Class("Object", pragmas={"group": dir_param.input}, properties=[ - schema.SingleProperty("one", "x"), - schema.SingleProperty("two", "y"), - schema.OptionalProperty("three", "z"), - schema.RepeatedProperty("four", "u"), - schema.RepeatedOptionalProperty("five", "v"), - schema.PredicateProperty("six"), - ]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class( + "Object", + pragmas={"group": dir_param.input}, + properties=[ + schema.SingleProperty("one", "x"), + schema.SingleProperty("two", "y"), + schema.OptionalProperty("three", "z"), + schema.RepeatedProperty("four", "u"), + schema.RepeatedOptionalProperty("five", "v"), + schema.PredicateProperty("six"), + ], + ), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ dbscheme.Table( name="objects", columns=[ - dbscheme.Column('id', '@object', binding=True), - dbscheme.Column('one', 'x'), - dbscheme.Column('two', 'y'), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object", binding=True), + dbscheme.Column("one", "x"), + dbscheme.Column("two", "y"), + ], + dir=dir_param.expected, ), dbscheme.Table( name="object_threes", keyset=dbscheme.KeySet(["id"]), columns=[ - dbscheme.Column('id', '@object'), - dbscheme.Column('three', 'z'), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object"), + dbscheme.Column("three", "z"), + ], + dir=dir_param.expected, ), dbscheme.Table( name="object_fours", keyset=dbscheme.KeySet(["id", "index"]), columns=[ - dbscheme.Column('id', '@object'), - dbscheme.Column('index', 'int'), - dbscheme.Column('four', 'u'), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object"), + dbscheme.Column("index", "int"), + dbscheme.Column("four", "u"), + ], + dir=dir_param.expected, ), dbscheme.Table( name="object_fives", keyset=dbscheme.KeySet(["id", "index"]), columns=[ - dbscheme.Column('id', '@object'), - dbscheme.Column('index', 'int'), - dbscheme.Column('five', 'v'), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object"), + dbscheme.Column("index", "int"), + dbscheme.Column("five", "v"), + ], + dir=dir_param.expected, ), dbscheme.Table( name="object_six", keyset=dbscheme.KeySet(["id"]), columns=[ - dbscheme.Column('id', '@object'), - ], dir=dir_param.expected, + dbscheme.Column("id", "@object"), + ], + dir=dir_param.expected, ), ], ) def test_empty_class_with_derived(generate): - assert generate([ - schema.Class(name="Base", derived={"Left", "Right"}), - schema.Class(name="Left", bases=["Base"]), - schema.Class(name="Right", bases=["Base"]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class(name="Base", derived={"Left", "Right"}), + schema.Class(name="Left", bases=["Base"]), + schema.Class(name="Right", bases=["Base"]), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ @@ -305,17 +371,20 @@ def test_empty_class_with_derived(generate): def test_class_with_derived_and_single_property(generate, dir_param): - assert generate([ - schema.Class( - name="Base", - derived={"Left", "Right"}, - pragmas={"group": dir_param.input}, - properties=[ - schema.SingleProperty("single", "Prop"), - ]), - schema.Class(name="Left", bases=["Base"]), - schema.Class(name="Right", bases=["Base"]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class( + name="Base", + derived={"Left", "Right"}, + pragmas={"group": dir_param.input}, + properties=[ + schema.SingleProperty("single", "Prop"), + ], + ), + schema.Class(name="Left", bases=["Base"]), + schema.Class(name="Right", bases=["Base"]), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ @@ -327,8 +396,8 @@ def test_class_with_derived_and_single_property(generate, dir_param): name="bases", keyset=dbscheme.KeySet(["id"]), columns=[ - dbscheme.Column('id', '@base'), - dbscheme.Column('single', '@prop'), + dbscheme.Column("id", "@base"), + dbscheme.Column("single", "@prop"), ], dir=dir_param.expected, ), @@ -345,17 +414,20 @@ def test_class_with_derived_and_single_property(generate, dir_param): def test_class_with_derived_and_optional_property(generate, dir_param): - assert generate([ - schema.Class( - name="Base", - derived={"Left", "Right"}, - pragmas={"group": dir_param.input}, - properties=[ - schema.OptionalProperty("opt", "Prop"), - ]), - schema.Class(name="Left", bases=["Base"]), - schema.Class(name="Right", bases=["Base"]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class( + name="Base", + derived={"Left", "Right"}, + pragmas={"group": dir_param.input}, + properties=[ + schema.OptionalProperty("opt", "Prop"), + ], + ), + schema.Class(name="Left", bases=["Base"]), + schema.Class(name="Right", bases=["Base"]), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ @@ -367,8 +439,8 @@ def test_class_with_derived_and_optional_property(generate, dir_param): name="base_opts", keyset=dbscheme.KeySet(["id"]), columns=[ - dbscheme.Column('id', '@base'), - dbscheme.Column('opt', '@prop'), + dbscheme.Column("id", "@base"), + dbscheme.Column("opt", "@prop"), ], dir=dir_param.expected, ), @@ -385,17 +457,20 @@ def test_class_with_derived_and_optional_property(generate, dir_param): def test_class_with_derived_and_repeated_property(generate, dir_param): - assert generate([ - schema.Class( - name="Base", - pragmas={"group": dir_param.input}, - derived={"Left", "Right"}, - properties=[ - schema.RepeatedProperty("rep", "Prop"), - ]), - schema.Class(name="Left", bases=["Base"]), - schema.Class(name="Right", bases=["Base"]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class( + name="Base", + pragmas={"group": dir_param.input}, + derived={"Left", "Right"}, + properties=[ + schema.RepeatedProperty("rep", "Prop"), + ], + ), + schema.Class(name="Left", bases=["Base"]), + schema.Class(name="Right", bases=["Base"]), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ @@ -407,9 +482,9 @@ def test_class_with_derived_and_repeated_property(generate, dir_param): name="base_reps", keyset=dbscheme.KeySet(["id", "index"]), columns=[ - dbscheme.Column('id', '@base'), - dbscheme.Column('index', 'int'), - dbscheme.Column('rep', '@prop'), + dbscheme.Column("id", "@base"), + dbscheme.Column("index", "int"), + dbscheme.Column("rep", "@prop"), ], dir=dir_param.expected, ), @@ -426,38 +501,41 @@ def test_class_with_derived_and_repeated_property(generate, dir_param): def test_null_class(generate): - assert generate([ - schema.Class( - name="Base", - derived={"W", "X", "Y", "Z", "Null"}, - ), - schema.Class( - name="W", - bases=["Base"], - properties=[ - schema.SingleProperty("w", "W"), - schema.SingleProperty("x", "X"), - schema.OptionalProperty("y", "Y"), - schema.RepeatedProperty("z", "Z"), - ] - ), - schema.Class( - name="X", - bases=["Base"], - ), - schema.Class( - name="Y", - bases=["Base"], - ), - schema.Class( - name="Z", - bases=["Base"], - ), - schema.Class( - name="Null", - bases=["Base"], - ), - ], null="Null") == dbscheme.Scheme( + assert generate( + [ + schema.Class( + name="Base", + derived={"W", "X", "Y", "Z", "Null"}, + ), + schema.Class( + name="W", + bases=["Base"], + properties=[ + schema.SingleProperty("w", "W"), + schema.SingleProperty("x", "X"), + schema.OptionalProperty("y", "Y"), + schema.RepeatedProperty("z", "Z"), + ], + ), + schema.Class( + name="X", + bases=["Base"], + ), + schema.Class( + name="Y", + bases=["Base"], + ), + schema.Class( + name="Z", + bases=["Base"], + ), + schema.Class( + name="Null", + bases=["Base"], + ), + ], + null="Null", + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ @@ -468,50 +546,50 @@ def test_null_class(generate): dbscheme.Table( name="ws", columns=[ - dbscheme.Column('id', '@w', binding=True), - dbscheme.Column('w', '@w_or_none'), - dbscheme.Column('x', '@x_or_none'), + dbscheme.Column("id", "@w", binding=True), + dbscheme.Column("w", "@w_or_none"), + dbscheme.Column("x", "@x_or_none"), ], ), dbscheme.Table( name="w_ies", keyset=dbscheme.KeySet(["id"]), columns=[ - dbscheme.Column('id', '@w'), - dbscheme.Column('y', '@y_or_none'), + dbscheme.Column("id", "@w"), + dbscheme.Column("y", "@y_or_none"), ], ), dbscheme.Table( name="w_zs", keyset=dbscheme.KeySet(["id", "index"]), columns=[ - dbscheme.Column('id', '@w'), - dbscheme.Column('index', 'int'), - dbscheme.Column('z', '@z_or_none'), + dbscheme.Column("id", "@w"), + dbscheme.Column("index", "int"), + dbscheme.Column("z", "@z_or_none"), ], ), dbscheme.Table( name="xes", columns=[ - dbscheme.Column('id', '@x', binding=True), + dbscheme.Column("id", "@x", binding=True), ], ), dbscheme.Table( name="ys", columns=[ - dbscheme.Column('id', '@y', binding=True), + dbscheme.Column("id", "@y", binding=True), ], ), dbscheme.Table( name="zs", columns=[ - dbscheme.Column('id', '@z', binding=True), + dbscheme.Column("id", "@z", binding=True), ], ), dbscheme.Table( name="nulls", columns=[ - dbscheme.Column('id', '@null', binding=True), + dbscheme.Column("id", "@null", binding=True), ], ), dbscheme.Union( @@ -535,11 +613,15 @@ def test_null_class(generate): def test_synth_classes_ignored(generate): - assert generate([ - schema.Class(name="A", pragmas={"synth": schema.SynthInfo()}), - schema.Class(name="B", pragmas={"synth": schema.SynthInfo(from_class="A")}), - schema.Class(name="C", pragmas={"synth": schema.SynthInfo(on_arguments={"x": "A"})}), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class(name="A", pragmas={"synth": schema.SynthInfo()}), + schema.Class(name="B", pragmas={"synth": schema.SynthInfo(from_class="A")}), + schema.Class( + name="C", pragmas={"synth": schema.SynthInfo(on_arguments={"x": "A"})} + ), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[], @@ -547,11 +629,13 @@ def test_synth_classes_ignored(generate): def test_synth_derived_classes_ignored(generate): - assert generate([ - schema.Class(name="A", derived={"B", "C"}), - schema.Class(name="B", bases=["A"], pragmas={"synth": schema.SynthInfo()}), - schema.Class(name="C", bases=["A"]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class(name="A", derived={"B", "C"}), + schema.Class(name="B", bases=["A"], pragmas={"synth": schema.SynthInfo()}), + schema.Class(name="C", bases=["A"]), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ @@ -561,23 +645,28 @@ def test_synth_derived_classes_ignored(generate): columns=[ dbscheme.Column("id", "@c", binding=True), ], - ) + ), ], ) def test_synth_properties_ignored(generate): - assert generate([ - schema.Class(name="A", properties=[ - schema.SingleProperty("x", "a"), - schema.SingleProperty("y", "b", synth=True), - schema.SingleProperty("z", "c"), - schema.OptionalProperty("foo", "bar", synth=True), - schema.RepeatedProperty("baz", "bazz", synth=True), - schema.RepeatedOptionalProperty("bazzz", "bazzzz", synth=True), - schema.RepeatedUnorderedProperty("bazzzzz", "bazzzzzz", synth=True), - ]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class( + name="A", + properties=[ + schema.SingleProperty("x", "a"), + schema.SingleProperty("y", "b", synth=True), + schema.SingleProperty("z", "c"), + schema.OptionalProperty("foo", "bar", synth=True), + schema.RepeatedProperty("baz", "bazz", synth=True), + schema.RepeatedOptionalProperty("bazzz", "bazzzz", synth=True), + schema.RepeatedUnorderedProperty("bazzzzz", "bazzzzzz", synth=True), + ], + ), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ @@ -595,24 +684,44 @@ def test_synth_properties_ignored(generate): def test_table_conflict(generate): with pytest.raises(dbschemegen.Error): - generate([ - schema.Class("Foo", properties=[ - schema.OptionalProperty("bar", "FooBar"), - ]), - schema.Class("FooBar"), - ]) + generate( + [ + schema.Class( + "Foo", + properties=[ + schema.OptionalProperty("bar", "FooBar"), + ], + ), + schema.Class("FooBar"), + ] + ) def test_table_name_overrides(generate): - assert generate([ - schema.Class("Obj", properties=[ - schema.OptionalProperty("x", "a", pragmas={"ql_db_table_name": "foo"}), - schema.RepeatedProperty("y", "b", pragmas={"ql_db_table_name": "bar"}), - schema.RepeatedOptionalProperty("z", "c", pragmas={"ql_db_table_name": "baz"}), - schema.PredicateProperty("p", pragmas={"ql_db_table_name": "hello"}), - schema.RepeatedUnorderedProperty("q", "d", pragmas={"ql_db_table_name": "world"}), - ]), - ]) == dbscheme.Scheme( + assert generate( + [ + schema.Class( + "Obj", + properties=[ + schema.OptionalProperty( + "x", "a", pragmas={"ql_db_table_name": "foo"} + ), + schema.RepeatedProperty( + "y", "b", pragmas={"ql_db_table_name": "bar"} + ), + schema.RepeatedOptionalProperty( + "z", "c", pragmas={"ql_db_table_name": "baz"} + ), + schema.PredicateProperty( + "p", pragmas={"ql_db_table_name": "hello"} + ), + schema.RepeatedUnorderedProperty( + "q", "d", pragmas={"ql_db_table_name": "world"} + ), + ], + ), + ] + ) == dbscheme.Scheme( src=schema_file.name, includes=[], declarations=[ @@ -666,5 +775,5 @@ def test_table_name_overrides(generate): ) -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(pytest.main([__file__] + sys.argv[1:])) diff --git a/misc/codegen/test/test_dbschemelaoder.py b/misc/codegen/test/test_dbschemelaoder.py index ab4efbff75a1..e9079b699b93 100644 --- a/misc/codegen/test/test_dbschemelaoder.py +++ b/misc/codegen/test/test_dbschemelaoder.py @@ -22,26 +22,42 @@ def test_load_empty(load): def test_load_one_empty_table(load): - assert load(""" + assert ( + load( + """ test_foos(); -""") == [ - dbscheme.Table(name="test_foos", columns=[]) - ] +""" + ) + == [dbscheme.Table(name="test_foos", columns=[])] + ) def test_load_table_with_keyset(load): - assert load(""" + assert ( + load( + """ #keyset[x, y,z] test_foos(); -""") == [ - dbscheme.Table(name="test_foos", columns=[], keyset=dbscheme.KeySet(["x", "y", "z"])) - ] +""" + ) + == [ + dbscheme.Table( + name="test_foos", columns=[], keyset=dbscheme.KeySet(["x", "y", "z"]) + ) + ] + ) expected_columns = [ ("int foo: int ref", dbscheme.Column(schema_name="foo", type="int", binding=False)), - (" int bar : int ref", dbscheme.Column(schema_name="bar", type="int", binding=False)), - ("str baz_: str ref", dbscheme.Column(schema_name="baz", type="str", binding=False)), + ( + " int bar : int ref", + dbscheme.Column(schema_name="bar", type="int", binding=False), + ), + ( + "str baz_: str ref", + dbscheme.Column(schema_name="baz", type="str", binding=False), + ), ("int x: @foo ref", dbscheme.Column(schema_name="x", type="@foo", binding=False)), ("int y: @foo", dbscheme.Column(schema_name="y", type="@foo", binding=True)), ("unique int z: @foo", dbscheme.Column(schema_name="z", type="@foo", binding=True)), @@ -50,42 +66,58 @@ def test_load_table_with_keyset(load): @pytest.mark.parametrize("column,expected", expected_columns) def test_load_table_with_column(load, column, expected): - assert load(f""" + assert ( + load( + f""" foos( {column} ); -""") == [ - dbscheme.Table(name="foos", columns=[deepcopy(expected)]) - ] +""" + ) + == [dbscheme.Table(name="foos", columns=[deepcopy(expected)])] + ) def test_load_table_with_multiple_columns(load): columns = ",\n".join(c for c, _ in expected_columns) expected = [deepcopy(e) for _, e in expected_columns] - assert load(f""" + assert ( + load( + f""" foos( {columns} ); -""") == [ - dbscheme.Table(name="foos", columns=expected) - ] +""" + ) + == [dbscheme.Table(name="foos", columns=expected)] + ) def test_load_table_with_multiple_columns_and_dir(load): columns = ",\n".join(c for c, _ in expected_columns) expected = [deepcopy(e) for _, e in expected_columns] - assert load(f""" + assert ( + load( + f""" foos( //dir=foo/bar/baz {columns} ); -""") == [ - dbscheme.Table(name="foos", columns=expected, dir=pathlib.Path("foo/bar/baz")) - ] +""" + ) + == [ + dbscheme.Table( + name="foos", columns=expected, dir=pathlib.Path("foo/bar/baz") + ) + ] + ) def test_load_multiple_table_with_columns(load): tables = [f"table{i}({col});" for i, (col, _) in enumerate(expected_columns)] - expected = [dbscheme.Table(name=f"table{i}", columns=[deepcopy(e)]) for i, (_, e) in enumerate(expected_columns)] + expected = [ + dbscheme.Table(name=f"table{i}", columns=[deepcopy(e)]) + for i, (_, e) in enumerate(expected_columns) + ] assert load("\n".join(tables)) == expected @@ -96,28 +128,41 @@ def test_union(load): def test_table_and_union(load): - assert load(""" + assert ( + load( + """ foos(); -@foo = @bar | @baz | @bla;""") == [ - dbscheme.Table(name="foos", columns=[]), - dbscheme.Union(lhs="@foo", rhs=["@bar", "@baz", "@bla"]), - ] +@foo = @bar | @baz | @bla;""" + ) + == [ + dbscheme.Table(name="foos", columns=[]), + dbscheme.Union(lhs="@foo", rhs=["@bar", "@baz", "@bla"]), + ] + ) def test_comments_ignored(load): - assert load(""" + assert ( + load( + """ // fake_table(); foos(/* x */unique /*y*/int/* z */ id/* */: /* * */ @bar/*, int ignored: int ref*/); -@foo = @bar | @baz | @bla; // | @xxx""") == [ - dbscheme.Table(name="foos", columns=[dbscheme.Column(schema_name="id", type="@bar", binding=True)]), - dbscheme.Union(lhs="@foo", rhs=["@bar", "@baz", "@bla"]), - ] - - -if __name__ == '__main__': +@foo = @bar | @baz | @bla; // | @xxx""" + ) + == [ + dbscheme.Table( + name="foos", + columns=[dbscheme.Column(schema_name="id", type="@bar", binding=True)], + ), + dbscheme.Union(lhs="@foo", rhs=["@bar", "@baz", "@bla"]), + ] + ) + + +if __name__ == "__main__": sys.exit(pytest.main([__file__] + sys.argv[1:])) diff --git a/misc/codegen/test/test_ql.py b/misc/codegen/test/test_ql.py index e326e65a9e4f..237e2d6ecd02 100644 --- a/misc/codegen/test/test_ql.py +++ b/misc/codegen/test/test_ql.py @@ -34,37 +34,55 @@ def test_property_unordered_getter(name, expected_getter): assert prop.getter == expected_getter -@pytest.mark.parametrize("plural,expected", [ - (None, False), - ("", False), - ("X", True), -]) +@pytest.mark.parametrize( + "plural,expected", + [ + (None, False), + ("", False), + ("X", True), + ], +) def test_property_is_repeated(plural, expected): prop = ql.Property("foo", "Foo", "props", ["result"], plural=plural) assert prop.is_repeated is expected -@pytest.mark.parametrize("plural,unordered,expected", [ - (None, False, False), - ("", False, False), - ("X", False, True), - ("X", True, False), -]) +@pytest.mark.parametrize( + "plural,unordered,expected", + [ + (None, False, False), + ("", False, False), + ("X", False, True), + ("X", True, False), + ], +) def test_property_is_indexed(plural, unordered, expected): - prop = ql.Property("foo", "Foo", "props", ["result"], plural=plural, is_unordered=unordered) + prop = ql.Property( + "foo", "Foo", "props", ["result"], plural=plural, is_unordered=unordered + ) assert prop.is_indexed is expected -@pytest.mark.parametrize("is_optional,is_predicate,plural,expected", [ - (False, False, None, True), - (False, False, "", True), - (False, False, "X", False), - (True, False, None, False), - (False, True, None, False), -]) +@pytest.mark.parametrize( + "is_optional,is_predicate,plural,expected", + [ + (False, False, None, True), + (False, False, "", True), + (False, False, "X", False), + (True, False, None, False), + (False, True, None, False), + ], +) def test_property_is_single(is_optional, is_predicate, plural, expected): - prop = ql.Property("foo", "Foo", "props", ["result"], plural=plural, - is_predicate=is_predicate, is_optional=is_optional) + prop = ql.Property( + "foo", + "Foo", + "props", + ["result"], + plural=plural, + is_predicate=is_predicate, + is_optional=is_optional, + ) assert prop.is_single is expected @@ -85,7 +103,12 @@ def test_property_predicate_getter(): def test_class_processes_bases(): bases = ["B", "Ab", "C", "Aa"] - expected = [ql.Base("B"), ql.Base("Ab", prev="B"), ql.Base("C", prev="Ab"), ql.Base("Aa", prev="C")] + expected = [ + ql.Base("B"), + ql.Base("Ab", prev="B"), + ql.Base("C", prev="Ab"), + ql.Base("Aa", prev="C"), + ] cls = ql.Class("Foo", bases=bases) assert cls.bases == expected @@ -110,34 +133,25 @@ def test_non_root_class(): assert not cls.root -@pytest.mark.parametrize("prev_child,is_child", [(None, False), ("", True), ("x", True)]) -def test_is_child(prev_child, is_child): - p = ql.Property("Foo", "int", prev_child=prev_child) - assert p.is_child is is_child - - -def test_empty_class_no_children(): - cls = ql.Class("Class", properties=[]) - assert cls.has_children is False - - def test_class_no_children(): - cls = ql.Class("Class", properties=[ql.Property("Foo", "int"), ql.Property("Bar", "string")]) + cls = ql.Class( + "Class", + all_children=[], + ) assert cls.has_children is False def test_class_with_children(): - cls = ql.Class("Class", properties=[ql.Property("Foo", "int"), ql.Property("Child", "x", prev_child=""), - ql.Property("Bar", "string")]) + cls = ql.Class( + "Class", + all_children=[ql.Child(ql.Property("Foo", "int"))], + ) assert cls.has_children is True -@pytest.mark.parametrize("doc,expected", - [ - (["foo", "bar"], True), - (["foo", "bar"], True), - ([], False) - ]) +@pytest.mark.parametrize( + "doc,expected", [(["foo", "bar"], True), (["foo", "bar"], True), ([], False)] +) def test_has_doc(doc, expected): stub = ql.Stub("Class", base_import="foo", import_prefix="bar", doc=doc) assert stub.has_qldoc is expected @@ -150,5 +164,5 @@ def test_synth_accessor_has_first_constructor_param_marked(): assert [p.param for p in x.constructorparams] == params -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(pytest.main([__file__] + sys.argv[1:])) diff --git a/misc/codegen/test/test_qlgen.py b/misc/codegen/test/test_qlgen.py index 75e587fbd5eb..a2434432390f 100644 --- a/misc/codegen/test/test_qlgen.py +++ b/misc/codegen/test/test_qlgen.py @@ -17,22 +17,28 @@ def run_mock(): # these are lambdas so that they will use patched paths when called -def stub_path(): return paths.root_dir / "ql/lib/stub/path" +def stub_path(): + return paths.root_dir / "ql/lib/stub/path" -def ql_output_path(): return paths.root_dir / "ql/lib/other/path" +def ql_output_path(): + return paths.root_dir / "ql/lib/other/path" -def ql_test_output_path(): return paths.root_dir / "ql/test/path" +def ql_test_output_path(): + return paths.root_dir / "ql/test/path" -def generated_registry_path(): return paths.root_dir / "ql/registry.list" +def generated_registry_path(): + return paths.root_dir / "ql/registry.list" -def import_file(): return stub_path().with_suffix(".qll") +def import_file(): + return stub_path().with_suffix(".qll") -def children_file(): return ql_output_path() / "ParentChild.qll" +def children_file(): + return ql_output_path() / "ParentChild.qll" stub_import = "stub.path" @@ -63,7 +69,9 @@ def generate(input, qlgen_opts, renderer, render_manager): def func(classes): input.classes = {cls.name: cls for cls in classes} - return run_managed_generation(qlgen.generate, qlgen_opts, renderer, render_manager) + return run_managed_generation( + qlgen.generate, qlgen_opts, renderer, render_manager + ) return func @@ -109,20 +117,38 @@ def _filter_generated_classes(ret, output_test_files=False): except ValueError: assert False, f"{f} is in wrong directory" if output_test_files: - return { - str(f): ret[ql_test_output_path() / f] - for f in test_files - } - base_files -= {pathlib.Path(f"{name}.qll") for name in - ("Raw", "Synth", "SynthConstructors", "PureSynthConstructors")} - stub_files = {pathlib.Path(f.parent.parent, f.stem + ".qll") if f.parent.name == - "internal" and pathlib.Path(f.parent.parent, f.stem + ".qll") in base_files else f for f in stub_files} + return {str(f): ret[ql_test_output_path() / f] for f in test_files} + base_files -= { + pathlib.Path(f"{name}.qll") + for name in ("Raw", "Synth", "SynthConstructors", "PureSynthConstructors") + } + stub_files = { + ( + pathlib.Path(f.parent.parent, f.stem + ".qll") + if f.parent.name == "internal" + and pathlib.Path(f.parent.parent, f.stem + ".qll") in base_files + else f + ) + for f in stub_files + } assert base_files <= stub_files return { - str(f): (ret[stub_path() / "internal" / f] if stub_path() / "internal" / f in ret else ret[stub_path() / f], - ret[stub_path() / pathlib.Path(f.parent, "internal" if not f.parent.name == - "internal" else "", f.stem + "Impl.qll")], - ret[ql_output_path() / f]) + str(f): ( + ( + ret[stub_path() / "internal" / f] + if stub_path() / "internal" / f in ret + else ret[stub_path() / f] + ), + ret[ + stub_path() + / pathlib.Path( + f.parent, + "internal" if not f.parent.name == "internal" else "", + f.stem + "Impl.qll", + ) + ], + ret[ql_output_path() / f], + ) for f in base_files } @@ -148,8 +174,12 @@ def a_ql_class(**kwargs): def a_ql_stub(*, name, import_prefix="", **kwargs): - return ql.Stub(name=name, **kwargs, import_prefix=gen_import, - base_import=f"{gen_import_prefix}{import_prefix}{name}") + return ql.Stub( + name=name, + **kwargs, + import_prefix=gen_import, + base_import=f"{gen_import_prefix}{import_prefix}{name}", + ) def a_ql_class_public(*, name, **kwargs): @@ -157,347 +187,720 @@ def a_ql_class_public(*, name, **kwargs): def test_one_empty_class(generate_classes): - assert generate_classes([ - schema.Class("A") - ]) == { - "A.qll": (a_ql_class_public(name="A"), - a_ql_stub(name="A"), - a_ql_class(name="A", final=True, imports=[stub_import_prefix + "A"])) + assert generate_classes([schema.Class("A")]) == { + "A.qll": ( + a_ql_class_public(name="A"), + a_ql_stub(name="A"), + a_ql_class(name="A", final=True, imports=[stub_import_prefix + "A"]), + ) } def test_one_empty_internal_class(generate_classes): - assert generate_classes([ - schema.Class("A", pragmas=["ql_internal"]) - ]) == { - "A.qll": (a_ql_class_public(name="A", internal=True), - a_ql_stub(name="A"), - a_ql_class(name="A", final=True, internal=True, imports=[stub_import_prefix_internal + "A"])), + assert generate_classes([schema.Class("A", pragmas=["ql_internal"])]) == { + "A.qll": ( + a_ql_class_public(name="A", internal=True), + a_ql_stub(name="A"), + a_ql_class( + name="A", + final=True, + internal=True, + imports=[stub_import_prefix_internal + "A"], + ), + ), } def test_hierarchy(generate_classes): - assert generate_classes([ - schema.Class("D", bases=["B", "C"]), - schema.Class("C", bases=["A"], derived={"D"}), - schema.Class("B", bases=["A"], derived={"D"}), - schema.Class("A", derived={"B", "C"}), - ]) == { - "A.qll": (a_ql_class_public(name="A"), a_ql_stub(name="A"), a_ql_class(name="A", imports=[stub_import_prefix + "A"])), - "B.qll": (a_ql_class_public(name="B", imports=[stub_import_prefix + "A"]), a_ql_stub(name="B"), a_ql_class(name="B", bases=["A"], bases_impl=["AImpl::A"], imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"])), - "C.qll": (a_ql_class_public(name="C", imports=[stub_import_prefix + "A"]), a_ql_stub(name="C"), a_ql_class(name="C", bases=["A"], bases_impl=["AImpl::A"], imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"])), - "D.qll": (a_ql_class_public(name="D", imports=[stub_import_prefix + "B", stub_import_prefix + "C"]), a_ql_stub(name="D"), a_ql_class(name="D", final=True, bases=["B", "C"], bases_impl=["BImpl::B", "CImpl::C"], - imports=[stub_import_prefix_internal + cls + "Impl::Impl as " + cls + "Impl" for cls in "BC"])), + assert generate_classes( + [ + schema.Class("D", bases=["B", "C"]), + schema.Class("C", bases=["A"], derived={"D"}), + schema.Class("B", bases=["A"], derived={"D"}), + schema.Class("A", derived={"B", "C"}), + ] + ) == { + "A.qll": ( + a_ql_class_public(name="A"), + a_ql_stub(name="A"), + a_ql_class(name="A", imports=[stub_import_prefix + "A"]), + ), + "B.qll": ( + a_ql_class_public(name="B", imports=[stub_import_prefix + "A"]), + a_ql_stub(name="B"), + a_ql_class( + name="B", + bases=["A"], + bases_impl=["AImpl::A"], + imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"], + ), + ), + "C.qll": ( + a_ql_class_public(name="C", imports=[stub_import_prefix + "A"]), + a_ql_stub(name="C"), + a_ql_class( + name="C", + bases=["A"], + bases_impl=["AImpl::A"], + imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"], + ), + ), + "D.qll": ( + a_ql_class_public( + name="D", imports=[stub_import_prefix + "B", stub_import_prefix + "C"] + ), + a_ql_stub(name="D"), + a_ql_class( + name="D", + final=True, + bases=["B", "C"], + bases_impl=["BImpl::B", "CImpl::C"], + imports=[ + stub_import_prefix_internal + cls + "Impl::Impl as " + cls + "Impl" + for cls in "BC" + ], + ), + ), } def test_hierarchy_imports(generate_import_list): - assert generate_import_list([ - schema.Class("D", bases=["B", "C"]), - schema.Class("C", bases=["A"], derived={"D"}), - schema.Class("B", bases=["A"], derived={"D"}), - schema.Class("A", derived={"B", "C"}), - ]) == ql.ImportList([stub_import_prefix + cls for cls in "ABCD"]) + assert generate_import_list( + [ + schema.Class("D", bases=["B", "C"]), + schema.Class("C", bases=["A"], derived={"D"}), + schema.Class("B", bases=["A"], derived={"D"}), + schema.Class("A", derived={"B", "C"}), + ] + ) == ql.ImportList([stub_import_prefix + cls for cls in "ABCD"]) def test_internal_not_in_import_list(generate_import_list): - assert generate_import_list([ - schema.Class("D", bases=["B", "C"]), - schema.Class("C", bases=["A"], derived={"D"}, pragmas=["ql_internal"]), - schema.Class("B", bases=["A"], derived={"D"}), - schema.Class("A", derived={"B", "C"}, pragmas=["ql_internal"]), - ]) == ql.ImportList([stub_import_prefix + cls for cls in "BD"]) + assert generate_import_list( + [ + schema.Class("D", bases=["B", "C"]), + schema.Class("C", bases=["A"], derived={"D"}, pragmas=["ql_internal"]), + schema.Class("B", bases=["A"], derived={"D"}), + schema.Class("A", derived={"B", "C"}, pragmas=["ql_internal"]), + ] + ) == ql.ImportList([stub_import_prefix + cls for cls in "BD"]) def test_hierarchy_children(generate_children_implementations): - assert generate_children_implementations([ - schema.Class("A", derived={"B", "C"}, pragmas=["ql_internal"]), - schema.Class("B", bases=["A"], derived={"D"}), - schema.Class("C", bases=["A"], derived={"D"}, pragmas=["ql_internal"]), - schema.Class("D", bases=["B", "C"]), - ]) == ql.GetParentImplementation( - classes=[a_ql_class(name="A", internal=True, imports=[stub_import_prefix_internal + "A"]), - a_ql_class(name="B", bases=["A"], bases_impl=["AImpl::A"], imports=[ - stub_import_prefix_internal + "AImpl::Impl as AImpl"]), - a_ql_class(name="C", bases=["A"], bases_impl=["AImpl::A"], imports=[ - stub_import_prefix_internal + "AImpl::Impl as AImpl"], internal=True), - a_ql_class(name="D", final=True, bases=["B", "C"], bases_impl=["BImpl::B", "CImpl::C"], - imports=[stub_import_prefix_internal + cls + "Impl::Impl as " + cls + "Impl" for cls in "BC"]), - ], + assert generate_children_implementations( + [ + schema.Class("A", derived={"B", "C"}, pragmas=["ql_internal"]), + schema.Class("B", bases=["A"], derived={"D"}), + schema.Class("C", bases=["A"], derived={"D"}, pragmas=["ql_internal"]), + schema.Class("D", bases=["B", "C"]), + ] + ) == ql.GetParentImplementation( + classes=[ + a_ql_class( + name="A", internal=True, imports=[stub_import_prefix_internal + "A"] + ), + a_ql_class( + name="B", + bases=["A"], + bases_impl=["AImpl::A"], + imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"], + ), + a_ql_class( + name="C", + bases=["A"], + bases_impl=["AImpl::A"], + imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"], + internal=True, + ), + a_ql_class( + name="D", + final=True, + bases=["B", "C"], + bases_impl=["BImpl::B", "CImpl::C"], + imports=[ + stub_import_prefix_internal + cls + "Impl::Impl as " + cls + "Impl" + for cls in "BC" + ], + ), + ], imports=[stub_import] + [stub_import_prefix_internal + cls for cls in "AC"], ) def test_single_property(generate_classes): - assert generate_classes([ - schema.Class("MyObject", properties=[ - schema.SingleProperty("foo", "bar")]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, - properties=[ - ql.Property(singular="Foo", type="bar", tablename="my_objects", - tableparams=["this", "result"], doc="foo of this my object"), - ], - imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class("MyObject", properties=[schema.SingleProperty("foo", "bar")]), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="Foo", + type="bar", + tablename="my_objects", + tableparams=["this", "result"], + doc="foo of this my object", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_internal_property(generate_classes): - assert generate_classes([ - schema.Class("MyObject", properties=[ - schema.SingleProperty("foo", "bar", pragmas=["ql_internal"])]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, - properties=[ - ql.Property(singular="Foo", type="bar", tablename="my_objects", - tableparams=["this", "result"], doc="foo of this my object", - internal=True), - ], - imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class( + "MyObject", + properties=[ + schema.SingleProperty("foo", "bar", pragmas=["ql_internal"]) + ], + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="Foo", + type="bar", + tablename="my_objects", + tableparams=["this", "result"], + doc="foo of this my object", + internal=True, + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_children(generate_classes): - assert generate_classes([ - schema.Class("FakeRoot"), - schema.Class("MyObject", properties=[ - schema.SingleProperty("a", "int"), - schema.SingleProperty("child_1", "int", is_child=True), - schema.RepeatedProperty("bs", "int"), - schema.RepeatedProperty("children", "int", is_child=True), - schema.OptionalProperty("c", "int"), - schema.OptionalProperty("child_3", "int", is_child=True), - schema.RepeatedOptionalProperty("d", "int"), - schema.RepeatedOptionalProperty("child_4", "int", is_child=True), - ]), - ]) == { - "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])), - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, - properties=[ - ql.Property(singular="A", type="int", tablename="my_objects", - tableparams=["this", "result", "_"], - doc="a of this my object"), - ql.Property(singular="Child1", type="int", tablename="my_objects", - tableparams=["this", "_", "result"], prev_child="", - doc="child 1 of this my object"), - ql.Property(singular="B", plural="Bs", type="int", - tablename="my_object_bs", - tableparams=["this", "index", "result"], - doc="b of this my object", - doc_plural="bs of this my object"), - ql.Property(singular="Child", plural="Children", type="int", - tablename="my_object_children", - tableparams=["this", "index", "result"], prev_child="Child1", - doc="child of this my object", - doc_plural="children of this my object"), - ql.Property(singular="C", type="int", tablename="my_object_cs", - tableparams=["this", "result"], is_optional=True, - doc="c of this my object"), - ql.Property(singular="Child3", type="int", - tablename="my_object_child_3s", - tableparams=["this", "result"], is_optional=True, - prev_child="Child", doc="child 3 of this my object"), - ql.Property(singular="D", plural="Ds", type="int", - tablename="my_object_ds", - tableparams=["this", "index", "result"], is_optional=True, - doc="d of this my object", - doc_plural="ds of this my object"), - ql.Property(singular="Child4", plural="Child4s", type="int", - tablename="my_object_child_4s", - tableparams=["this", "index", "result"], is_optional=True, - prev_child="Child3", doc="child 4 of this my object", - doc_plural="child 4s of this my object"), - ], - imports=[stub_import_prefix + "MyObject"])), + expected_parent_property = ql.Property( + singular="ParentChild", + type="int", + is_child=True, + tablename="parents", + tableparams=["this", "result"], + doc="parent child of this parent", + ) + expected_properties = [ + ql.Property( + singular="A", + type="int", + tablename="my_objects", + tableparams=["this", "result", "_"], + doc="a of this my object", + ), + ql.Property( + singular="Child1", + type="int", + tablename="my_objects", + tableparams=["this", "_", "result"], + is_child=True, + doc="child 1 of this my object", + ), + ql.Property( + singular="B", + plural="Bs", + type="int", + tablename="my_object_bs", + tableparams=["this", "index", "result"], + doc="b of this my object", + doc_plural="bs of this my object", + ), + ql.Property( + singular="Child", + plural="Children", + type="int", + tablename="my_object_children", + tableparams=["this", "index", "result"], + is_child=True, + doc="child of this my object", + doc_plural="children of this my object", + ), + ql.Property( + singular="C", + type="int", + tablename="my_object_cs", + tableparams=["this", "result"], + is_optional=True, + doc="c of this my object", + ), + ql.Property( + singular="Child3", + type="int", + tablename="my_object_child_3s", + tableparams=["this", "result"], + is_optional=True, + is_child=True, + doc="child 3 of this my object", + ), + ql.Property( + singular="D", + plural="Ds", + type="int", + tablename="my_object_ds", + tableparams=["this", "index", "result"], + is_optional=True, + doc="d of this my object", + doc_plural="ds of this my object", + ), + ql.Property( + singular="Child4", + plural="Child4s", + type="int", + tablename="my_object_child_4s", + tableparams=["this", "index", "result"], + is_optional=True, + is_child=True, + doc="child 4 of this my object", + doc_plural="child 4s of this my object", + ), + ] + assert generate_classes( + [ + schema.Class("FakeRoot"), + schema.Class( + "Parent", + derived={"MyObject"}, + properties=[ + schema.SingleProperty("parent_child", "int", is_child=True), + ], + ), + schema.Class( + "MyObject", + bases=["Parent"], + properties=[ + schema.SingleProperty("a", "int"), + schema.SingleProperty("child_1", "int", is_child=True), + schema.RepeatedProperty("bs", "int"), + schema.RepeatedProperty("children", "int", is_child=True), + schema.OptionalProperty("c", "int"), + schema.OptionalProperty("child_3", "int", is_child=True), + schema.RepeatedOptionalProperty("d", "int"), + schema.RepeatedOptionalProperty("child_4", "int", is_child=True), + ], + ), + ] + ) == { + "FakeRoot.qll": ( + a_ql_class_public(name="FakeRoot"), + a_ql_stub(name="FakeRoot"), + a_ql_class( + name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"] + ), + ), + "Parent.qll": ( + a_ql_class_public(name="Parent"), + a_ql_stub(name="Parent"), + a_ql_class( + name="Parent", + imports=[stub_import_prefix + "Parent"], + properties=[expected_parent_property], + all_children=[ + ql.Child( + expected_parent_property, + ), + ], + ), + ), + "MyObject.qll": ( + a_ql_class_public(name="MyObject", imports=[stub_import_prefix + "Parent"]), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + bases=["Parent"], + bases_impl=["ParentImpl::Parent"], + properties=expected_properties, + all_children=[ + ql.Child( + expected_parent_property, + ), + ql.Child( + expected_properties[1], + prev="ParentChild", + ), + ql.Child( + expected_properties[3], + prev="Child1", + ), + ql.Child( + expected_properties[5], + prev="Child", + ), + ql.Child( + expected_properties[7], + prev="Child3", + ), + ], + imports=[ + stub_import_prefix + "internal.ParentImpl::Impl as ParentImpl" + ], + ), + ), } def test_single_properties(generate_classes): - assert generate_classes([ - schema.Class("MyObject", properties=[ - schema.SingleProperty("one", "x"), - schema.SingleProperty("two", "y"), - schema.SingleProperty("three", "z"), - ]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, - properties=[ - ql.Property(singular="One", type="x", tablename="my_objects", - tableparams=["this", "result", "_", "_"], - doc="one of this my object"), - ql.Property(singular="Two", type="y", tablename="my_objects", - tableparams=["this", "_", "result", "_"], - doc="two of this my object"), - ql.Property(singular="Three", type="z", tablename="my_objects", - tableparams=["this", "_", "_", "result"], - doc="three of this my object"), - ], - imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class( + "MyObject", + properties=[ + schema.SingleProperty("one", "x"), + schema.SingleProperty("two", "y"), + schema.SingleProperty("three", "z"), + ], + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="One", + type="x", + tablename="my_objects", + tableparams=["this", "result", "_", "_"], + doc="one of this my object", + ), + ql.Property( + singular="Two", + type="y", + tablename="my_objects", + tableparams=["this", "_", "result", "_"], + doc="two of this my object", + ), + ql.Property( + singular="Three", + type="z", + tablename="my_objects", + tableparams=["this", "_", "_", "result"], + doc="three of this my object", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } -@pytest.mark.parametrize("is_child,prev_child", [(False, None), (True, "")]) -def test_optional_property(generate_classes, is_child, prev_child): - assert generate_classes([ - schema.Class("FakeRoot"), - schema.Class("MyObject", properties=[ - schema.OptionalProperty("foo", "bar", is_child=is_child)]), - ]) == { - "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])), - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, properties=[ - ql.Property(singular="Foo", type="bar", tablename="my_object_foos", - tableparams=["this", "result"], - is_optional=True, prev_child=prev_child, doc="foo of this my object"), - ], - imports=[stub_import_prefix + "MyObject"])), +def test_optional_property(generate_classes): + assert generate_classes( + [ + schema.Class("FakeRoot"), + schema.Class( + "MyObject", + properties=[schema.OptionalProperty("foo", "bar")], + ), + ] + ) == { + "FakeRoot.qll": ( + a_ql_class_public(name="FakeRoot"), + a_ql_stub(name="FakeRoot"), + a_ql_class( + name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"] + ), + ), + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="Foo", + type="bar", + tablename="my_object_foos", + tableparams=["this", "result"], + is_optional=True, + doc="foo of this my object", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } -@pytest.mark.parametrize("is_child,prev_child", [(False, None), (True, "")]) -def test_repeated_property(generate_classes, is_child, prev_child): - assert generate_classes([ - schema.Class("FakeRoot"), - schema.Class("MyObject", properties=[ - schema.RepeatedProperty("foo", "bar", is_child=is_child)]), - ]) == { - "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])), - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, properties=[ - ql.Property(singular="Foo", plural="Foos", type="bar", tablename="my_object_foos", - tableparams=["this", "index", "result"], prev_child=prev_child, - doc="foo of this my object", doc_plural="foos of this my object"), - ], - imports=[stub_import_prefix + "MyObject"])), +def test_repeated_property(generate_classes): + assert generate_classes( + [ + schema.Class("FakeRoot"), + schema.Class( + "MyObject", + properties=[schema.RepeatedProperty("foo", "bar")], + ), + ] + ) == { + "FakeRoot.qll": ( + a_ql_class_public(name="FakeRoot"), + a_ql_stub(name="FakeRoot"), + a_ql_class( + name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"] + ), + ), + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="Foo", + plural="Foos", + type="bar", + tablename="my_object_foos", + tableparams=["this", "index", "result"], + doc="foo of this my object", + doc_plural="foos of this my object", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_repeated_unordered_property(generate_classes): - assert generate_classes([ - schema.Class("FakeRoot"), - schema.Class("MyObject", properties=[ - schema.RepeatedUnorderedProperty("foo", "bar")]), - ]) == { - "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])), - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, properties=[ - ql.Property(singular="Foo", plural="Foos", type="bar", tablename="my_object_foos", - tableparams=["this", "result"], is_unordered=True, - doc="foo of this my object", doc_plural="foos of this my object"), - ], - imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class("FakeRoot"), + schema.Class( + "MyObject", properties=[schema.RepeatedUnorderedProperty("foo", "bar")] + ), + ] + ) == { + "FakeRoot.qll": ( + a_ql_class_public(name="FakeRoot"), + a_ql_stub(name="FakeRoot"), + a_ql_class( + name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"] + ), + ), + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="Foo", + plural="Foos", + type="bar", + tablename="my_object_foos", + tableparams=["this", "result"], + is_unordered=True, + doc="foo of this my object", + doc_plural="foos of this my object", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } -@pytest.mark.parametrize("is_child,prev_child", [(False, None), (True, "")]) -def test_repeated_optional_property(generate_classes, is_child, prev_child): - assert generate_classes([ - schema.Class("FakeRoot"), - schema.Class("MyObject", properties=[ - schema.RepeatedOptionalProperty("foo", "bar", is_child=is_child)]), - ]) == { - - "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])), - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, properties=[ - ql.Property(singular="Foo", plural="Foos", type="bar", tablename="my_object_foos", - tableparams=["this", "index", "result"], is_optional=True, - prev_child=prev_child, doc="foo of this my object", - doc_plural="foos of this my object"), - ], - imports=[stub_import_prefix + "MyObject"])), +def test_repeated_optional_property(generate_classes): + assert generate_classes( + [ + schema.Class("FakeRoot"), + schema.Class( + "MyObject", + properties=[schema.RepeatedOptionalProperty("foo", "bar")], + ), + ] + ) == { + "FakeRoot.qll": ( + a_ql_class_public(name="FakeRoot"), + a_ql_stub(name="FakeRoot"), + a_ql_class( + name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"] + ), + ), + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="Foo", + plural="Foos", + type="bar", + tablename="my_object_foos", + tableparams=["this", "index", "result"], + is_optional=True, + doc="foo of this my object", + doc_plural="foos of this my object", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_predicate_property(generate_classes): - assert generate_classes([ - schema.Class("MyObject", properties=[ - schema.PredicateProperty("is_foo")]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, properties=[ - ql.Property(singular="isFoo", type="predicate", tablename="my_object_is_foo", - tableparams=["this"], is_predicate=True, doc="this my object is foo"), - ], - imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class("MyObject", properties=[schema.PredicateProperty("is_foo")]), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="isFoo", + type="predicate", + tablename="my_object_is_foo", + tableparams=["this"], + is_predicate=True, + doc="this my object is foo", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } -@pytest.mark.parametrize("is_child,prev_child", [(False, None), (True, "")]) -def test_single_class_property(generate_classes, is_child, prev_child): - assert generate_classes([ - schema.Class("Bar"), - schema.Class("MyObject", properties=[ - schema.SingleProperty("foo", "Bar", is_child=is_child)]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject", imports=[stub_import_prefix + "Bar"]), - a_ql_stub(name="MyObject"), - a_ql_class( - name="MyObject", final=True, imports=[stub_import_prefix + "Bar", stub_import_prefix + "MyObject"], properties=[ - ql.Property(singular="Foo", type="Bar", tablename="my_objects", - tableparams=[ - "this", "result"], - prev_child=prev_child, doc="foo of this my object", - type_is_codegen_class=True), - ], - )), - "Bar.qll": (a_ql_class_public(name="Bar"), a_ql_stub(name="Bar"), a_ql_class(name="Bar", final=True, imports=[stub_import_prefix + "Bar"])), +def test_single_class_property(generate_classes): + assert generate_classes( + [ + schema.Class("Bar"), + schema.Class( + "MyObject", + properties=[schema.SingleProperty("foo", "Bar")], + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject", imports=[stub_import_prefix + "Bar"]), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + imports=[stub_import_prefix + "Bar", stub_import_prefix + "MyObject"], + properties=[ + ql.Property( + singular="Foo", + type="Bar", + tablename="my_objects", + tableparams=["this", "result"], + doc="foo of this my object", + type_is_codegen_class=True, + ), + ], + ), + ), + "Bar.qll": ( + a_ql_class_public(name="Bar"), + a_ql_stub(name="Bar"), + a_ql_class(name="Bar", final=True, imports=[stub_import_prefix + "Bar"]), + ), } def test_class_with_doc(generate_classes): doc = ["Very important class.", "Very."] - assert generate_classes([ - schema.Class("A", doc=doc), - ]) == { - "A.qll": (a_ql_class_public(name="A", doc=doc), a_ql_stub(name="A", doc=doc), a_ql_class(name="A", final=True, doc=doc, imports=[stub_import_prefix + "A"])), + assert generate_classes( + [ + schema.Class("A", doc=doc), + ] + ) == { + "A.qll": ( + a_ql_class_public(name="A", doc=doc), + a_ql_stub(name="A", doc=doc), + a_ql_class( + name="A", final=True, doc=doc, imports=[stub_import_prefix + "A"] + ), + ), } def test_class_dir(generate_classes): dir = "another/rel/path" - assert generate_classes([ - schema.Class("A", derived={"B"}, pragmas={"group": dir}), - schema.Class("B", bases=["A"]), - ]) == { + assert generate_classes( + [ + schema.Class("A", derived={"B"}, pragmas={"group": dir}), + schema.Class("B", bases=["A"]), + ] + ) == { f"{dir}/A.qll": ( - a_ql_class_public(name="A"), a_ql_stub(name="A", import_prefix="another.rel.path."), a_ql_class(name="A", dir=pathlib.Path(dir), imports=[stub_import_prefix + "another.rel.path.A"])), - "B.qll": (a_ql_class_public(name="B", imports=[stub_import_prefix + "another.rel.path.A"]), - a_ql_stub(name="B"), - a_ql_class(name="B", final=True, bases=["A"], bases_impl=["AImpl::A"], - imports=[stub_import_prefix + "another.rel.path.internal.AImpl::Impl as AImpl"])), + a_ql_class_public(name="A"), + a_ql_stub(name="A", import_prefix="another.rel.path."), + a_ql_class( + name="A", + dir=pathlib.Path(dir), + imports=[stub_import_prefix + "another.rel.path.A"], + ), + ), + "B.qll": ( + a_ql_class_public( + name="B", imports=[stub_import_prefix + "another.rel.path.A"] + ), + a_ql_stub(name="B"), + a_ql_class( + name="B", + final=True, + bases=["A"], + bases_impl=["AImpl::A"], + imports=[ + stub_import_prefix + + "another.rel.path.internal.AImpl::Impl as AImpl" + ], + ), + ), } def test_root_element_cannot_have_children(generate_classes): with pytest.raises(qlgen.RootElementHasChildren): - generate_classes([ - schema.Class('A', properties=[schema.SingleProperty("x", is_child=True)]) - ]) + generate_classes( + [schema.Class("A", properties=[schema.SingleProperty("x", is_child=True)])] + ) def test_class_dir_imports(generate_import_list): dir = "another/rel/path" - assert generate_import_list([ - schema.Class("A", derived={"B"}, pragmas={"group": dir}), - schema.Class("B", bases=["A"]), - ]) == ql.ImportList([ - stub_import_prefix + "B", - stub_import_prefix + "another.rel.path.A", - ]) + assert generate_import_list( + [ + schema.Class("A", derived={"B"}, pragmas={"group": dir}), + schema.Class("B", bases=["A"]), + ] + ) == ql.ImportList( + [ + stub_import_prefix + "B", + stub_import_prefix + "another.rel.path.A", + ] + ) def test_format(opts, generate, render_manager, run_mock): @@ -507,10 +910,21 @@ def test_format(opts, generate, render_manager, run_mock): pathlib.Path("bar.qll"), pathlib.Path("y", "baz.txt"), ] - generate([schema.Class('A')]) + generate([schema.Class("A")]) assert run_mock.mock_calls == [ - mock.call([opts.codeql_binary, "query", "format", "--in-place", "--", "x/foo.ql", "bar.qll"], - stderr=subprocess.PIPE, text=True), + mock.call( + [ + opts.codeql_binary, + "query", + "format", + "--in-place", + "--", + "x/foo.ql", + "bar.qll", + ], + stderr=subprocess.PIPE, + text=True, + ), ] @@ -523,7 +937,7 @@ def test_format_error(opts, generate, render_manager, run_mock): pathlib.Path("y", "baz.txt"), ] with pytest.raises(qlgen.FormatError): - generate([schema.Class('A')]) + generate([schema.Class("A")]) def test_format_no_codeql(opts, generate, render_manager, run_mock): @@ -532,7 +946,7 @@ def test_format_no_codeql(opts, generate, render_manager, run_mock): pathlib.Path("bar.qll"), ] with pytest.raises(qlgen.FormatError): - generate([schema.Class('A')]) + generate([schema.Class("A")]) def test_format_no_codeql_in_path(opts, generate, render_manager, run_mock): @@ -541,7 +955,7 @@ def test_format_no_codeql_in_path(opts, generate, render_manager, run_mock): pathlib.Path("bar.qll"), ] with pytest.raises(qlgen.FormatError): - generate([schema.Class('A')]) + generate([schema.Class("A")]) @pytest.mark.parametrize("force", [False, True]) @@ -561,23 +975,29 @@ def test_manage_parameters(opts, generate, renderer, force): write(test_a) write(test_b) write(test_c) - generate([schema.Class('A')]) + generate([schema.Class("A")]) assert renderer.mock_calls == [ - mock.call.manage(generated={ql_a, ql_b, test_a, test_b, import_file()}, stubs={stub_a, stub_b}, - registry=opts.generated_registry, force=force) + mock.call.manage( + generated={ql_a, ql_b, test_a, test_b, import_file()}, + stubs={stub_a, stub_b}, + registry=opts.generated_registry, + force=force, + ) ] def test_modified_stub_skipped(qlgen_opts, generate, render_manager): stub = qlgen_opts.ql_stub_output / "AImpl.qll" render_manager.is_customized_stub.side_effect = lambda f: f == stub - assert stub not in generate([schema.Class('A')]) + assert stub not in generate([schema.Class("A")]) def test_test_missing_source(generate_tests): - generate_tests([ - schema.Class("A"), - ]) == { + generate_tests( + [ + schema.Class("A"), + ] + ) == { "A/MISSING_SOURCE.txt": ql.MissingTestInstructions(), } @@ -586,150 +1006,219 @@ def a_ql_class_tester(**kwargs): return ql.ClassTester(**kwargs, elements_module=stub_import) -def a_ql_property_tester(**kwargs): - return ql.PropertyTester(**kwargs, elements_module=stub_import) - - def test_test_source_present(opts, generate_tests): write(opts.ql_test_output / "A" / "test.swift") - assert generate_tests([ - schema.Class("A"), - ]) == { + assert generate_tests( + [ + schema.Class("A"), + ] + ) == { "A/A.ql": a_ql_class_tester(class_name="A"), } def test_test_source_present_with_dir(opts, generate_tests): write(opts.ql_test_output / "foo" / "A" / "test.swift") - assert generate_tests([ - schema.Class("A", pragmas={"group": "foo"}), - ]) == { + assert generate_tests( + [ + schema.Class("A", pragmas={"group": "foo"}), + ] + ) == { "foo/A/A.ql": a_ql_class_tester(class_name="A"), } def test_test_total_properties(opts, generate_tests): write(opts.ql_test_output / "B" / "test.swift") - assert generate_tests([ - schema.Class("A", derived={"B"}, properties=[ - schema.SingleProperty("x", "string"), - ]), - schema.Class("B", bases=["A"], properties=[ - schema.PredicateProperty("y", "int"), - ]), - ]) == { - "B/B.ql": a_ql_class_tester(class_name="B", properties=[ - ql.PropertyForTest(getter="getX", type="string"), - ql.PropertyForTest(getter="y"), - ]) + assert generate_tests( + [ + schema.Class( + "A", + derived={"B"}, + properties=[ + schema.SingleProperty("x", "string"), + ], + ), + schema.Class( + "B", + bases=["A"], + properties=[ + schema.PredicateProperty("y", "int"), + ], + ), + ] + ) == { + "B/B.ql": a_ql_class_tester( + class_name="B", + properties=[ + ql.PropertyForTest(getter="getX", type="string"), + ql.PropertyForTest(getter="y"), + ], + ) } def test_test_partial_properties(opts, generate_tests): write(opts.ql_test_output / "B" / "test.swift") - assert generate_tests([ - schema.Class("A", derived={"B", "C"}, properties=[ - schema.OptionalProperty("x", "string"), - ]), - schema.Class("B", bases=["A"], properties=[ - schema.RepeatedProperty("y", "bool"), - schema.RepeatedOptionalProperty("z", "int"), - schema.RepeatedUnorderedProperty("w", "string"), - ]), - ]) == { - "B/B.ql": a_ql_class_tester(class_name="B", properties=[ - ql.PropertyForTest(getter="hasX"), - ql.PropertyForTest(getter="getNumberOfYs", type="int"), - ql.PropertyForTest(getter="getNumberOfWs", type="int"), - ]), - "B/B_getX.ql": a_ql_property_tester(class_name="B", - property=ql.PropertyForTest(getter="getX", is_total=False, - type="string")), - "B/B_getY.ql": a_ql_property_tester(class_name="B", - property=ql.PropertyForTest(getter="getY", is_total=False, - is_indexed=True, - type="bool")), - "B/B_getZ.ql": a_ql_property_tester(class_name="B", - property=ql.PropertyForTest(getter="getZ", is_total=False, - is_indexed=True, - type="int")), - "B/B_getAW.ql": a_ql_property_tester(class_name="B", - property=ql.PropertyForTest(getter="getAW", is_total=False, - type="string")), + assert generate_tests( + [ + schema.Class( + "A", + derived={"B", "C"}, + properties=[ + schema.OptionalProperty("x", "string"), + ], + ), + schema.Class( + "B", + bases=["A"], + properties=[ + schema.RepeatedProperty("y", "bool"), + schema.RepeatedOptionalProperty("z", "int"), + schema.RepeatedUnorderedProperty("w", "string"), + ], + ), + ] + ) == { + "B/B.ql": a_ql_class_tester( + class_name="B", + properties=[ + ql.PropertyForTest(getter="getX", is_total=False, type="string"), + ql.PropertyForTest( + getter="getY", is_total=False, is_indexed=True, type="bool" + ), + ql.PropertyForTest( + getter="getZ", is_total=False, is_indexed=True, type="int" + ), + ql.PropertyForTest(getter="getAW", is_total=False, type="string"), + ], + ), } def test_test_properties_deduplicated(opts, generate_tests): write(opts.ql_test_output / "Final" / "test.swift") - assert generate_tests([ - schema.Class("Base", derived={"A", "B"}, properties=[ - schema.SingleProperty("x", "string"), - schema.RepeatedProperty("y", "bool"), - ]), - schema.Class("A", bases=["Base"], derived={"Final"}), - schema.Class("B", bases=["Base"], derived={"Final"}), - schema.Class("Final", bases=["A", "B"]), - ]) == { - "Final/Final.ql": a_ql_class_tester(class_name="Final", properties=[ - ql.PropertyForTest(getter="getX", type="string"), - ql.PropertyForTest(getter="getNumberOfYs", type="int"), - ]), - "Final/Final_getY.ql": a_ql_property_tester(class_name="Final", - property=ql.PropertyForTest(getter="getY", is_total=False, - is_indexed=True, - type="bool")), + assert generate_tests( + [ + schema.Class( + "Base", + derived={"A", "B"}, + properties=[ + schema.SingleProperty("x", "string"), + schema.RepeatedProperty("y", "bool"), + ], + ), + schema.Class("A", bases=["Base"], derived={"Final"}), + schema.Class("B", bases=["Base"], derived={"Final"}), + schema.Class("Final", bases=["A", "B"]), + ] + ) == { + "Final/Final.ql": a_ql_class_tester( + class_name="Final", + properties=[ + ql.PropertyForTest(getter="getX", type="string"), + ql.PropertyForTest( + getter="getY", is_total=False, is_indexed=True, type="bool" + ), + ], + ), } def test_test_properties_skipped(opts, generate_tests): write(opts.ql_test_output / "Derived" / "test.swift") - assert generate_tests([ - schema.Class("Base", derived={"Derived"}, properties=[ - schema.SingleProperty("x", "string", pragmas=["qltest_skip", "foo"]), - schema.RepeatedProperty("y", "int", pragmas=["bar", "qltest_skip"]), - ]), - schema.Class("Derived", bases=["Base"], properties=[ - schema.PredicateProperty("a", pragmas=["qltest_skip"]), - schema.OptionalProperty( - "b", "int", pragmas=["bar", "qltest_skip", "baz"]), - ]), - ]) == { + assert generate_tests( + [ + schema.Class( + "Base", + derived={"Derived"}, + properties=[ + schema.SingleProperty( + "x", "string", pragmas=["qltest_skip", "foo"] + ), + schema.RepeatedProperty("y", "int", pragmas=["bar", "qltest_skip"]), + ], + ), + schema.Class( + "Derived", + bases=["Base"], + properties=[ + schema.PredicateProperty("a", pragmas=["qltest_skip"]), + schema.OptionalProperty( + "b", "int", pragmas=["bar", "qltest_skip", "baz"] + ), + ], + ), + ] + ) == { "Derived/Derived.ql": a_ql_class_tester(class_name="Derived"), } def test_test_base_class_skipped(opts, generate_tests): write(opts.ql_test_output / "Derived" / "test.swift") - assert generate_tests([ - schema.Class("Base", derived={"Derived"}, pragmas=["qltest_skip", "foo"], properties=[ - schema.SingleProperty("x", "string"), - schema.RepeatedProperty("y", "int"), - ]), - schema.Class("Derived", bases=["Base"]), - ]) == { + assert generate_tests( + [ + schema.Class( + "Base", + derived={"Derived"}, + pragmas=["qltest_skip", "foo"], + properties=[ + schema.SingleProperty("x", "string"), + schema.RepeatedProperty("y", "int"), + ], + ), + schema.Class("Derived", bases=["Base"]), + ] + ) == { "Derived/Derived.ql": a_ql_class_tester(class_name="Derived"), } def test_test_final_class_skipped(opts, generate_tests): write(opts.ql_test_output / "Derived" / "test.swift") - assert generate_tests([ - schema.Class("Base", derived={"Derived"}), - schema.Class("Derived", bases=["Base"], pragmas=["qltest_skip", "foo"], properties=[ - schema.SingleProperty("x", "string"), - schema.RepeatedProperty("y", "int"), - ]), - ]) == {} + assert ( + generate_tests( + [ + schema.Class("Base", derived={"Derived"}), + schema.Class( + "Derived", + bases=["Base"], + pragmas=["qltest_skip", "foo"], + properties=[ + schema.SingleProperty("x", "string"), + schema.RepeatedProperty("y", "int"), + ], + ), + ] + ) + == {} + ) def test_test_class_hierarchy_collapse(opts, generate_tests): write(opts.ql_test_output / "Base" / "test.swift") - assert generate_tests([ - schema.Class("Base", derived={"D1", "D2"}, pragmas=["foo", "qltest_collapse_hierarchy"]), - schema.Class("D1", bases=["Base"], properties=[schema.SingleProperty("x", "string")]), - schema.Class("D2", bases=["Base"], derived={"D3"}, properties=[schema.SingleProperty("y", "string")]), - schema.Class("D3", bases=["D2"], properties=[schema.SingleProperty("z", "string")]), - ]) == { + assert generate_tests( + [ + schema.Class( + "Base", + derived={"D1", "D2"}, + pragmas=["foo", "qltest_collapse_hierarchy"], + ), + schema.Class( + "D1", bases=["Base"], properties=[schema.SingleProperty("x", "string")] + ), + schema.Class( + "D2", + bases=["Base"], + derived={"D3"}, + properties=[schema.SingleProperty("y", "string")], + ), + schema.Class( + "D3", bases=["D2"], properties=[schema.SingleProperty("z", "string")] + ), + ] + ) == { "Base/Base.ql": a_ql_class_tester(class_name="Base", show_ql_class=True), } @@ -737,13 +1226,26 @@ def test_test_class_hierarchy_collapse(opts, generate_tests): def test_test_class_hierarchy_uncollapse(opts, generate_tests): for d in ("Base", "D3", "D4"): write(opts.ql_test_output / d / "test.swift") - assert generate_tests([ - schema.Class("Base", derived={"D1", "D2"}, pragmas=["foo", "qltest_collapse_hierarchy"]), - schema.Class("D1", bases=["Base"], properties=[schema.SingleProperty("x", "string")]), - schema.Class("D2", bases=["Base"], derived={"D3", "D4"}, pragmas=["qltest_uncollapse_hierarchy", "bar"]), - schema.Class("D3", bases=["D2"]), - schema.Class("D4", bases=["D2"]), - ]) == { + assert generate_tests( + [ + schema.Class( + "Base", + derived={"D1", "D2"}, + pragmas=["foo", "qltest_collapse_hierarchy"], + ), + schema.Class( + "D1", bases=["Base"], properties=[schema.SingleProperty("x", "string")] + ), + schema.Class( + "D2", + bases=["Base"], + derived={"D3", "D4"}, + pragmas=["qltest_uncollapse_hierarchy", "bar"], + ), + schema.Class("D3", bases=["D2"]), + schema.Class("D4", bases=["D2"]), + ] + ) == { "Base/Base.ql": a_ql_class_tester(class_name="Base", show_ql_class=True), "D3/D3.ql": a_ql_class_tester(class_name="D3"), "D4/D4.ql": a_ql_class_tester(class_name="D4"), @@ -753,12 +1255,22 @@ def test_test_class_hierarchy_uncollapse(opts, generate_tests): def test_test_class_hierarchy_uncollapse_at_final(opts, generate_tests): for d in ("Base", "D3"): write(opts.ql_test_output / d / "test.swift") - assert generate_tests([ - schema.Class("Base", derived={"D1", "D2"}, pragmas=["foo", "qltest_collapse_hierarchy"]), - schema.Class("D1", bases=["Base"], properties=[schema.SingleProperty("x", "string")]), - schema.Class("D2", bases=["Base"], derived={"D3"}), - schema.Class("D3", bases=["D2"], pragmas=["qltest_uncollapse_hierarchy", "bar"]), - ]) == { + assert generate_tests( + [ + schema.Class( + "Base", + derived={"D1", "D2"}, + pragmas=["foo", "qltest_collapse_hierarchy"], + ), + schema.Class( + "D1", bases=["Base"], properties=[schema.SingleProperty("x", "string")] + ), + schema.Class("D2", bases=["Base"], derived={"D3"}), + schema.Class( + "D3", bases=["D2"], pragmas=["qltest_uncollapse_hierarchy", "bar"] + ), + ] + ) == { "Base/Base.ql": a_ql_class_tester(class_name="Base", show_ql_class=True), "D3/D3.ql": a_ql_class_tester(class_name="D3"), } @@ -766,11 +1278,13 @@ def test_test_class_hierarchy_uncollapse_at_final(opts, generate_tests): def test_test_with(opts, generate_tests): write(opts.ql_test_output / "B" / "test.swift") - assert generate_tests([ - schema.Class("Base", derived={"A", "B"}), - schema.Class("A", bases=["Base"], pragmas={"qltest_test_with": "B"}), - schema.Class("B", bases=["Base"]), - ]) == { + assert generate_tests( + [ + schema.Class("Base", derived={"A", "B"}), + schema.Class("A", bases=["Base"], pragmas={"qltest_test_with": "B"}), + schema.Class("B", bases=["Base"]), + ] + ) == { "B/A.ql": a_ql_class_tester(class_name="A"), "B/B.ql": a_ql_class_tester(class_name="B"), } @@ -778,291 +1292,605 @@ def test_test_with(opts, generate_tests): def test_property_description(generate_classes): description = ["Lorem", "Ipsum"] - assert generate_classes([ - schema.Class("MyObject", properties=[ - schema.SingleProperty("foo", "bar", description=description), - ]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, - properties=[ - ql.Property(singular="Foo", type="bar", tablename="my_objects", - tableparams=["this", "result"], - doc="foo of this my object", - description=description), - ], - imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class( + "MyObject", + properties=[ + schema.SingleProperty("foo", "bar", description=description), + ], + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="Foo", + type="bar", + tablename="my_objects", + tableparams=["this", "result"], + doc="foo of this my object", + description=description, + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_property_doc_override(generate_classes): - assert generate_classes([ - schema.Class("MyObject", properties=[ - schema.SingleProperty("foo", "bar", doc="baz")]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, - properties=[ - ql.Property(singular="Foo", type="bar", tablename="my_objects", - tableparams=["this", "result"], doc="baz"), - ], - imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class( + "MyObject", properties=[schema.SingleProperty("foo", "bar", doc="baz")] + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="Foo", + type="bar", + tablename="my_objects", + tableparams=["this", "result"], + doc="baz", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_repeated_property_doc_override(generate_classes): - assert generate_classes([ - schema.Class("MyObject", properties=[ - schema.RepeatedProperty("x", "int", doc="children of this"), - schema.RepeatedOptionalProperty("y", "int", doc="child of this")]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, - properties=[ - ql.Property(singular="X", plural="Xes", type="int", - tablename="my_object_xes", - tableparams=["this", "index", "result"], - doc="child of this", doc_plural="children of this"), - ql.Property(singular="Y", plural="Ys", type="int", - tablename="my_object_ies", is_optional=True, - tableparams=["this", "index", "result"], - doc="child of this", doc_plural="children of this"), - ], - imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class( + "MyObject", + properties=[ + schema.RepeatedProperty("x", "int", doc="children of this"), + schema.RepeatedOptionalProperty("y", "int", doc="child of this"), + ], + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="X", + plural="Xes", + type="int", + tablename="my_object_xes", + tableparams=["this", "index", "result"], + doc="child of this", + doc_plural="children of this", + ), + ql.Property( + singular="Y", + plural="Ys", + type="int", + tablename="my_object_ies", + is_optional=True, + tableparams=["this", "index", "result"], + doc="child of this", + doc_plural="children of this", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } @pytest.mark.parametrize("abbr,expected", list(qlgen.abbreviations.items())) def test_property_doc_abbreviations(generate_classes, abbr, expected): expected_doc = f"foo {expected} bar of this object" - assert generate_classes([ - schema.Class("Object", properties=[ - schema.SingleProperty(f"foo_{abbr}_bar", "baz")]), - ]) == { - "Object.qll": (a_ql_class_public(name="Object"), - a_ql_stub(name="Object"), - a_ql_class(name="Object", final=True, - properties=[ - ql.Property(singular=f"Foo{abbr.capitalize()}Bar", type="baz", - tablename="objects", - tableparams=["this", "result"], doc=expected_doc), - ], - imports=[stub_import_prefix + "Object"])), + assert generate_classes( + [ + schema.Class( + "Object", properties=[schema.SingleProperty(f"foo_{abbr}_bar", "baz")] + ), + ] + ) == { + "Object.qll": ( + a_ql_class_public(name="Object"), + a_ql_stub(name="Object"), + a_ql_class( + name="Object", + final=True, + properties=[ + ql.Property( + singular=f"Foo{abbr.capitalize()}Bar", + type="baz", + tablename="objects", + tableparams=["this", "result"], + doc=expected_doc, + ), + ], + imports=[stub_import_prefix + "Object"], + ), + ), } @pytest.mark.parametrize("abbr,expected", list(qlgen.abbreviations.items())) -def test_property_doc_abbreviations_ignored_if_within_word(generate_classes, abbr, expected): +def test_property_doc_abbreviations_ignored_if_within_word( + generate_classes, abbr, expected +): expected_doc = f"foo {abbr}acadabra bar of this object" - assert generate_classes([ - schema.Class("Object", properties=[ - schema.SingleProperty(f"foo_{abbr}acadabra_bar", "baz")]), - ]) == { - "Object.qll": (a_ql_class_public(name="Object"), - a_ql_stub(name="Object"), - a_ql_class(name="Object", final=True, - properties=[ - ql.Property(singular=f"Foo{abbr.capitalize()}acadabraBar", type="baz", - tablename="objects", - tableparams=["this", "result"], doc=expected_doc), - ], - imports=[stub_import_prefix + "Object"])), + assert generate_classes( + [ + schema.Class( + "Object", + properties=[schema.SingleProperty(f"foo_{abbr}acadabra_bar", "baz")], + ), + ] + ) == { + "Object.qll": ( + a_ql_class_public(name="Object"), + a_ql_stub(name="Object"), + a_ql_class( + name="Object", + final=True, + properties=[ + ql.Property( + singular=f"Foo{abbr.capitalize()}acadabraBar", + type="baz", + tablename="objects", + tableparams=["this", "result"], + doc=expected_doc, + ), + ], + imports=[stub_import_prefix + "Object"], + ), + ), } def test_repeated_property_doc_override_with_format(generate_classes): - assert generate_classes([ - schema.Class("MyObject", properties=[ - schema.RepeatedProperty("x", "int", doc="special {children} of this"), - schema.RepeatedOptionalProperty("y", "int", doc="special {child} of this")]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, - properties=[ - ql.Property(singular="X", plural="Xes", type="int", - tablename="my_object_xes", - tableparams=["this", "index", "result"], - doc="special child of this", - doc_plural="special children of this"), - ql.Property(singular="Y", plural="Ys", type="int", - tablename="my_object_ies", is_optional=True, - tableparams=["this", "index", "result"], - doc="special child of this", - doc_plural="special children of this"), - ], - imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class( + "MyObject", + properties=[ + schema.RepeatedProperty( + "x", "int", doc="special {children} of this" + ), + schema.RepeatedOptionalProperty( + "y", "int", doc="special {child} of this" + ), + ], + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="X", + plural="Xes", + type="int", + tablename="my_object_xes", + tableparams=["this", "index", "result"], + doc="special child of this", + doc_plural="special children of this", + ), + ql.Property( + singular="Y", + plural="Ys", + type="int", + tablename="my_object_ies", + is_optional=True, + tableparams=["this", "index", "result"], + doc="special child of this", + doc_plural="special children of this", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_repeated_property_doc_override_with_multiple_formats(generate_classes): - assert generate_classes([ - schema.Class("MyObject", properties=[ - schema.RepeatedProperty("x", "int", doc="{cat} or {dog}"), - schema.RepeatedOptionalProperty("y", "int", doc="{cats} or {dogs}")]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, - properties=[ - ql.Property(singular="X", plural="Xes", type="int", - tablename="my_object_xes", - tableparams=["this", "index", "result"], - doc="cat or dog", doc_plural="cats or dogs"), - ql.Property(singular="Y", plural="Ys", type="int", - tablename="my_object_ies", is_optional=True, - tableparams=["this", "index", "result"], - doc="cat or dog", doc_plural="cats or dogs"), - ], - imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class( + "MyObject", + properties=[ + schema.RepeatedProperty("x", "int", doc="{cat} or {dog}"), + schema.RepeatedOptionalProperty("y", "int", doc="{cats} or {dogs}"), + ], + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="X", + plural="Xes", + type="int", + tablename="my_object_xes", + tableparams=["this", "index", "result"], + doc="cat or dog", + doc_plural="cats or dogs", + ), + ql.Property( + singular="Y", + plural="Ys", + type="int", + tablename="my_object_ies", + is_optional=True, + tableparams=["this", "index", "result"], + doc="cat or dog", + doc_plural="cats or dogs", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_property_doc_override_with_format(generate_classes): - assert generate_classes([ - schema.Class("MyObject", properties=[ - schema.SingleProperty("foo", "bar", doc="special {baz} of this")]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, - properties=[ - ql.Property(singular="Foo", type="bar", tablename="my_objects", - tableparams=["this", "result"], doc="special baz of this"), - ], - imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class( + "MyObject", + properties=[ + schema.SingleProperty("foo", "bar", doc="special {baz} of this") + ], + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="Foo", + type="bar", + tablename="my_objects", + tableparams=["this", "result"], + doc="special baz of this", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_property_on_class_with_default_doc_name(generate_classes): - assert generate_classes([ - schema.Class("MyObject", properties=[ - schema.SingleProperty("foo", "bar")], - pragmas={"ql_default_doc_name": "baz"}), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, - properties=[ - ql.Property(singular="Foo", type="bar", tablename="my_objects", - tableparams=["this", "result"], doc="foo of this baz"), - ], - imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class( + "MyObject", + properties=[schema.SingleProperty("foo", "bar")], + pragmas={"ql_default_doc_name": "baz"}, + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="Foo", + type="bar", + tablename="my_objects", + tableparams=["this", "result"], + doc="foo of this baz", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_stub_on_class_with_synth_from_class(generate_classes): - assert generate_classes([ - schema.Class("MyObject", pragmas={"synth": schema.SynthInfo(from_class="A")}, - properties=[schema.SingleProperty("foo", "bar")]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), a_ql_stub(name="MyObject", synth_accessors=[ - ql.SynthUnderlyingAccessor(argument="Entity", type="Raw::A", constructorparams=["result"]), - ]), - a_ql_class(name="MyObject", final=True, properties=[ - ql.Property(singular="Foo", type="bar", tablename="my_objects", synth=True, - tableparams=["this", "result"], doc="foo of this my object"), - ], imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class( + "MyObject", + pragmas={"synth": schema.SynthInfo(from_class="A")}, + properties=[schema.SingleProperty("foo", "bar")], + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub( + name="MyObject", + synth_accessors=[ + ql.SynthUnderlyingAccessor( + argument="Entity", type="Raw::A", constructorparams=["result"] + ), + ], + ), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="Foo", + type="bar", + tablename="my_objects", + synth=True, + tableparams=["this", "result"], + doc="foo of this my object", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_stub_on_class_with_synth_on_arguments(generate_classes): - assert generate_classes([ - schema.Class("MyObject", pragmas={"synth": schema.SynthInfo(on_arguments={"base": "A", "index": "int", "label": "string"})}, - properties=[schema.SingleProperty("foo", "bar")]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), a_ql_stub(name="MyObject", synth_accessors=[ - ql.SynthUnderlyingAccessor(argument="Base", type="Raw::A", constructorparams=["result", "_", "_"]), - ql.SynthUnderlyingAccessor(argument="Index", type="int", constructorparams=["_", "result", "_"]), - ql.SynthUnderlyingAccessor(argument="Label", type="string", constructorparams=["_", "_", "result"]), - ]), - a_ql_class(name="MyObject", final=True, properties=[ - ql.Property(singular="Foo", type="bar", tablename="my_objects", synth=True, - tableparams=["this", "result"], doc="foo of this my object"), - ], imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class( + "MyObject", + pragmas={ + "synth": schema.SynthInfo( + on_arguments={"base": "A", "index": "int", "label": "string"} + ) + }, + properties=[schema.SingleProperty("foo", "bar")], + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub( + name="MyObject", + synth_accessors=[ + ql.SynthUnderlyingAccessor( + argument="Base", + type="Raw::A", + constructorparams=["result", "_", "_"], + ), + ql.SynthUnderlyingAccessor( + argument="Index", + type="int", + constructorparams=["_", "result", "_"], + ), + ql.SynthUnderlyingAccessor( + argument="Label", + type="string", + constructorparams=["_", "_", "result"], + ), + ], + ), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="Foo", + type="bar", + tablename="my_objects", + synth=True, + tableparams=["this", "result"], + doc="foo of this my object", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_synth_property(generate_classes): - assert generate_classes([ - schema.Class("MyObject", properties=[ - schema.SingleProperty("foo", "bar", synth=True)]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), - a_ql_stub(name="MyObject"), - a_ql_class(name="MyObject", final=True, - properties=[ - ql.Property(singular="Foo", type="bar", tablename="my_objects", - synth=True, - tableparams=["this", "result"], doc="foo of this my object"), - ], - imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class( + "MyObject", properties=[schema.SingleProperty("foo", "bar", synth=True)] + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + properties=[ + ql.Property( + singular="Foo", + type="bar", + tablename="my_objects", + synth=True, + tableparams=["this", "result"], + doc="foo of this my object", + ), + ], + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_hideable_class(generate_classes): - assert generate_classes([ - schema.Class("MyObject", pragmas=["ql_hideable"]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, hideable=True, imports=[stub_import_prefix + "MyObject"])), + assert generate_classes( + [ + schema.Class("MyObject", pragmas=["ql_hideable"]), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + hideable=True, + imports=[stub_import_prefix + "MyObject"], + ), + ), } def test_hideable_property(generate_classes): - assert generate_classes([ - schema.Class("MyObject", pragmas=["ql_hideable"]), - schema.Class("Other", properties=[ - schema.SingleProperty("x", "MyObject"), - ]), - ]) == { - "MyObject.qll": (a_ql_class_public(name="MyObject"), a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, hideable=True, imports=[stub_import_prefix + "MyObject"])), - "Other.qll": (a_ql_class_public(name="Other", imports=[stub_import_prefix + "MyObject"]), - a_ql_stub(name="Other"), - a_ql_class(name="Other", imports=[stub_import_prefix + "MyObject", stub_import_prefix + "Other"], - final=True, properties=[ - ql.Property(singular="X", type="MyObject", tablename="others", - type_is_hideable=True, - type_is_codegen_class=True, - tableparams=["this", "result"], doc="x of this other"), - ])), + assert generate_classes( + [ + schema.Class("MyObject", pragmas=["ql_hideable"]), + schema.Class( + "Other", + properties=[ + schema.SingleProperty("x", "MyObject"), + ], + ), + ] + ) == { + "MyObject.qll": ( + a_ql_class_public(name="MyObject"), + a_ql_stub(name="MyObject"), + a_ql_class( + name="MyObject", + final=True, + hideable=True, + imports=[stub_import_prefix + "MyObject"], + ), + ), + "Other.qll": ( + a_ql_class_public(name="Other", imports=[stub_import_prefix + "MyObject"]), + a_ql_stub(name="Other"), + a_ql_class( + name="Other", + imports=[stub_import_prefix + "MyObject", stub_import_prefix + "Other"], + final=True, + properties=[ + ql.Property( + singular="X", + type="MyObject", + tablename="others", + type_is_hideable=True, + type_is_codegen_class=True, + tableparams=["this", "result"], + doc="x of this other", + ), + ], + ), + ), } def test_property_with_custom_db_table_name(generate_classes): - assert generate_classes([ - schema.Class("Obj", properties=[ - schema.OptionalProperty("x", "a", pragmas={"ql_db_table_name": "foo"}), - schema.RepeatedProperty("y", "b", pragmas={"ql_db_table_name": "bar"}), - schema.RepeatedOptionalProperty("z", "c", pragmas={"ql_db_table_name": "baz"}), - schema.PredicateProperty("p", pragmas={"ql_db_table_name": "hello"}), - schema.RepeatedUnorderedProperty("q", "d", pragmas={"ql_db_table_name": "world"}), - ]), - ]) == { - "Obj.qll": (a_ql_class_public(name="Obj"), - a_ql_stub(name="Obj"), - a_ql_class(name="Obj", final=True, properties=[ - ql.Property(singular="X", type="a", tablename="foo", - tableparams=["this", "result"], - is_optional=True, doc="x of this obj"), - ql.Property(singular="Y", plural="Ys", type="b", tablename="bar", - tableparams=["this", "index", "result"], - doc="y of this obj", doc_plural="ys of this obj"), - ql.Property(singular="Z", plural="Zs", type="c", tablename="baz", - tableparams=["this", "index", "result"], - is_optional=True, doc="z of this obj", doc_plural="zs of this obj"), - ql.Property(singular="p", type="predicate", tablename="hello", - tableparams=["this"], is_predicate=True, - doc="this obj p"), - ql.Property(singular="Q", plural="Qs", type="d", tablename="world", - tableparams=["this", "result"], is_unordered=True, - doc="q of this obj", doc_plural="qs of this obj"), - ], - imports=[stub_import_prefix + "Obj"])), + assert generate_classes( + [ + schema.Class( + "Obj", + properties=[ + schema.OptionalProperty( + "x", "a", pragmas={"ql_db_table_name": "foo"} + ), + schema.RepeatedProperty( + "y", "b", pragmas={"ql_db_table_name": "bar"} + ), + schema.RepeatedOptionalProperty( + "z", "c", pragmas={"ql_db_table_name": "baz"} + ), + schema.PredicateProperty( + "p", pragmas={"ql_db_table_name": "hello"} + ), + schema.RepeatedUnorderedProperty( + "q", "d", pragmas={"ql_db_table_name": "world"} + ), + ], + ), + ] + ) == { + "Obj.qll": ( + a_ql_class_public(name="Obj"), + a_ql_stub(name="Obj"), + a_ql_class( + name="Obj", + final=True, + properties=[ + ql.Property( + singular="X", + type="a", + tablename="foo", + tableparams=["this", "result"], + is_optional=True, + doc="x of this obj", + ), + ql.Property( + singular="Y", + plural="Ys", + type="b", + tablename="bar", + tableparams=["this", "index", "result"], + doc="y of this obj", + doc_plural="ys of this obj", + ), + ql.Property( + singular="Z", + plural="Zs", + type="c", + tablename="baz", + tableparams=["this", "index", "result"], + is_optional=True, + doc="z of this obj", + doc_plural="zs of this obj", + ), + ql.Property( + singular="p", + type="predicate", + tablename="hello", + tableparams=["this"], + is_predicate=True, + doc="this obj p", + ), + ql.Property( + singular="Q", + plural="Qs", + type="d", + tablename="world", + tableparams=["this", "result"], + is_unordered=True, + doc="q of this obj", + doc_plural="qs of this obj", + ), + ], + imports=[stub_import_prefix + "Obj"], + ), + ), } -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(pytest.main([__file__] + sys.argv[1:])) diff --git a/misc/codegen/test/test_render.py b/misc/codegen/test/test_render.py index 21378e715bb2..74803c2300c4 100644 --- a/misc/codegen/test/test_render.py +++ b/misc/codegen/test/test_render.py @@ -46,7 +46,10 @@ def write_registry(file, *files_and_hashes): def assert_registry(file, *files_and_hashes): assert_file(file, create_registry(files_and_hashes)) files = [file.name, ".gitattributes"] + [f for f, _, _ in files_and_hashes] - assert_file(file.parent / ".gitattributes", "\n".join(f"/{f} linguist-generated" for f in files) + "\n") + assert_file( + file.parent / ".gitattributes", + "\n".join(f"/{f} linguist-generated" for f in files) + "\n", + ) def hash(text): @@ -56,11 +59,11 @@ def hash(text): def test_constructor(pystache_renderer_cls, sut): - pystache_init, = pystache_renderer_cls.mock_calls - assert set(pystache_init.kwargs) == {'search_dirs', 'escape'} - assert pystache_init.kwargs['search_dirs'] == str(paths.templates_dir) + (pystache_init,) = pystache_renderer_cls.mock_calls + assert set(pystache_init.kwargs) == {"search_dirs", "escape"} + assert pystache_init.kwargs["search_dirs"] == str(paths.templates_dir) an_object = object() - assert pystache_init.kwargs['escape'](an_object) is an_object + assert pystache_init.kwargs["escape"](an_object) is an_object def test_render(pystache_renderer, sut): @@ -218,7 +221,9 @@ def test_managed_render_with_skipping_of_stub_file(pystache_renderer, sut): some_processed_output = "// generated some processed output" registry = paths.root_dir / "a/registry.list" write(stub, some_processed_output) - write_registry(registry, ("some/stub.txt", hash(some_output), hash(some_processed_output))) + write_registry( + registry, ("some/stub.txt", hash(some_output), hash(some_processed_output)) + ) pystache_renderer.render_name.side_effect = (some_output,) @@ -227,7 +232,9 @@ def test_managed_render_with_skipping_of_stub_file(pystache_renderer, sut): assert renderer.written == set() assert_file(stub, some_processed_output) - assert_registry(registry, ("some/stub.txt", hash(some_output), hash(some_processed_output))) + assert_registry( + registry, ("some/stub.txt", hash(some_output), hash(some_processed_output)) + ) assert pystache_renderer.mock_calls == [ mock.call.render_name(data.template, data, generator=generator), ] @@ -238,13 +245,17 @@ def test_managed_render_with_modified_generated_file(pystache_renderer, sut): some_processed_output = "// some processed output" registry = paths.root_dir / "a/registry.list" write(output, "// something else") - write_registry(registry, ("some/output.txt", "whatever", hash(some_processed_output))) + write_registry( + registry, ("some/output.txt", "whatever", hash(some_processed_output)) + ) with pytest.raises(render.Error): sut.manage(generated=(output,), stubs=(), registry=registry) -def test_managed_render_with_modified_stub_file_still_marked_as_generated(pystache_renderer, sut): +def test_managed_render_with_modified_stub_file_still_marked_as_generated( + pystache_renderer, sut +): stub = paths.root_dir / "a/some/stub.txt" some_processed_output = "// generated some processed output" registry = paths.root_dir / "a/registry.list" @@ -255,7 +266,9 @@ def test_managed_render_with_modified_stub_file_still_marked_as_generated(pystac sut.manage(generated=(), stubs=(stub,), registry=registry) -def test_managed_render_with_modified_stub_file_not_marked_as_generated(pystache_renderer, sut): +def test_managed_render_with_modified_stub_file_not_marked_as_generated( + pystache_renderer, sut +): stub = paths.root_dir / "a/some/stub.txt" some_processed_output = "// generated some processed output" registry = paths.root_dir / "a/registry.list" @@ -272,7 +285,9 @@ class MyError(Exception): pass -def test_managed_render_exception_drops_written_and_inexsistent_from_registry(pystache_renderer, sut): +def test_managed_render_exception_drops_written_and_inexsistent_from_registry( + pystache_renderer, sut +): data = mock.Mock(spec=("template",)) text = "some text" pystache_renderer.render_name.side_effect = (text,) @@ -281,11 +296,9 @@ def test_managed_render_exception_drops_written_and_inexsistent_from_registry(py write(output, text) write(paths.root_dir / "a/a") write(paths.root_dir / "a/c") - write_registry(registry, - "aaa", - ("some/output.txt", "whatever", hash(text)), - "bbb", - "ccc") + write_registry( + registry, "aaa", ("some/output.txt", "whatever", hash(text)), "bbb", "ccc" + ) with pytest.raises(MyError): with sut.manage(generated=(), stubs=(), registry=registry) as renderer: @@ -299,17 +312,14 @@ def test_managed_render_drops_inexsistent_from_registry(pystache_renderer, sut): registry = paths.root_dir / "a/registry.list" write(paths.root_dir / "a/a") write(paths.root_dir / "a/c") - write_registry(registry, - ("a", hash(''), hash('')), - "bbb", - ("c", hash(''), hash(''))) + write_registry( + registry, ("a", hash(""), hash("")), "bbb", ("c", hash(""), hash("")) + ) with sut.manage(generated=(), stubs=(), registry=registry): pass - assert_registry(registry, - ("a", hash(''), hash('')), - ("c", hash(''), hash(''))) + assert_registry(registry, ("a", hash(""), hash("")), ("c", hash(""), hash(""))) def test_managed_render_exception_does_not_erase(pystache_renderer, sut): @@ -321,7 +331,9 @@ def test_managed_render_exception_does_not_erase(pystache_renderer, sut): write_registry(registry) with pytest.raises(MyError): - with sut.manage(generated=(output,), stubs=(stub,), registry=registry) as renderer: + with sut.manage( + generated=(output,), stubs=(stub,), registry=registry + ) as renderer: raise MyError assert output.is_file() @@ -333,14 +345,15 @@ def test_render_with_extensions(pystache_renderer, sut): data.template = "test_template" data.extensions = ["foo", "bar", "baz"] output = pathlib.Path("my", "test", "file") - expected_outputs = [pathlib.Path("my", "test", p) for p in ("file.foo", "file.bar", "file.baz")] + expected_outputs = [ + pathlib.Path("my", "test", p) for p in ("file.foo", "file.bar", "file.baz") + ] rendered = [f"text{i}" for i in range(len(expected_outputs))] pystache_renderer.render_name.side_effect = rendered sut.render(data, output) expected_templates = ["test_template_foo", "test_template_bar", "test_template_baz"] assert pystache_renderer.mock_calls == [ - mock.call.render_name(t, data, generator=generator) - for t in expected_templates + mock.call.render_name(t, data, generator=generator) for t in expected_templates ] for expected_output, expected_contents in zip(expected_outputs, rendered): assert_file(expected_output, expected_contents) @@ -356,7 +369,9 @@ def test_managed_render_with_force_not_skipping_generated_file(pystache_renderer pystache_renderer.render_name.side_effect = (some_output,) - with sut.manage(generated=(output,), stubs=(), registry=registry, force=True) as renderer: + with sut.manage( + generated=(output,), stubs=(), registry=registry, force=True + ) as renderer: renderer.render(data, output) assert renderer.written == {output} assert_file(output, some_output) @@ -374,11 +389,15 @@ def test_managed_render_with_force_not_skipping_stub_file(pystache_renderer, sut some_processed_output = "// generated some processed output" registry = paths.root_dir / "a/registry.list" write(stub, some_processed_output) - write_registry(registry, ("some/stub.txt", hash(some_output), hash(some_processed_output))) + write_registry( + registry, ("some/stub.txt", hash(some_output), hash(some_processed_output)) + ) pystache_renderer.render_name.side_effect = (some_output,) - with sut.manage(generated=(), stubs=(stub,), registry=registry, force=True) as renderer: + with sut.manage( + generated=(), stubs=(stub,), registry=registry, force=True + ) as renderer: renderer.render(data, stub) assert renderer.written == {stub} assert_file(stub, some_output) @@ -394,13 +413,17 @@ def test_managed_render_with_force_ignores_modified_generated_file(sut): some_processed_output = "// some processed output" registry = paths.root_dir / "a/registry.list" write(output, "// something else") - write_registry(registry, ("some/output.txt", "whatever", hash(some_processed_output))) + write_registry( + registry, ("some/output.txt", "whatever", hash(some_processed_output)) + ) with sut.manage(generated=(output,), stubs=(), registry=registry, force=True): pass -def test_managed_render_with_force_ignores_modified_stub_file_still_marked_as_generated(sut): +def test_managed_render_with_force_ignores_modified_stub_file_still_marked_as_generated( + sut, +): stub = paths.root_dir / "a/some/stub.txt" some_processed_output = "// generated some processed output" registry = paths.root_dir / "a/registry.list" @@ -411,5 +434,5 @@ def test_managed_render_with_force_ignores_modified_stub_file_still_marked_as_ge pass -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(pytest.main([__file__] + sys.argv[1:])) diff --git a/misc/codegen/test/test_schemaloader.py b/misc/codegen/test/test_schemaloader.py index 1c8bfba271b2..5e8ba91b742a 100644 --- a/misc/codegen/test/test_schemaloader.py +++ b/misc/codegen/test/test_schemaloader.py @@ -26,9 +26,9 @@ class MyClass: pass assert data.classes == { - 'MyClass': schema.Class('MyClass'), + "MyClass": schema.Class("MyClass"), } - assert data.root_class is data.classes['MyClass'] + assert data.root_class is data.classes["MyClass"] def test_two_empty_classes(): @@ -41,10 +41,10 @@ class MyClass2(MyClass1): pass assert data.classes == { - 'MyClass1': schema.Class('MyClass1', derived={'MyClass2'}), - 'MyClass2': schema.Class('MyClass2', bases=['MyClass1']), + "MyClass1": schema.Class("MyClass1", derived={"MyClass2"}), + "MyClass2": schema.Class("MyClass2", bases=["MyClass1"]), } - assert data.root_class is data.classes['MyClass1'] + assert data.root_class is data.classes["MyClass1"] def test_no_external_bases(): @@ -52,6 +52,7 @@ class A: pass with pytest.raises(schema.Error): + @load class data: class MyClass(A): @@ -60,6 +61,7 @@ class MyClass(A): def test_no_multiple_roots(): with pytest.raises(schema.Error): + @load class data: class MyClass1: @@ -85,10 +87,10 @@ class D(B, C): pass assert data.classes == { - 'A': schema.Class('A', derived={'B', 'C'}), - 'B': schema.Class('B', bases=['A'], derived={'D'}), - 'C': schema.Class('C', bases=['A'], derived={'D'}), - 'D': schema.Class('D', bases=['B', 'C']), + "A": schema.Class("A", derived={"B", "C"}), + "B": schema.Class("B", bases=["A"], derived={"D"}), + "C": schema.Class("C", bases=["A"], derived={"D"}), + "D": schema.Class("D", bases=["B", "C"]), } @@ -101,7 +103,7 @@ class A: pass assert data.classes == { - 'A': schema.Class('A', pragmas={"group": "xxx"}), + "A": schema.Class("A", pragmas={"group": "xxx"}), } @@ -114,7 +116,7 @@ class A: class B(A): pass - @defs.group('xxx') + @defs.group("xxx") class C(A): pass @@ -122,25 +124,26 @@ class D(B, C): pass assert data.classes == { - 'A': schema.Class('A', derived={'B', 'C'}), - 'B': schema.Class('B', bases=['A'], derived={'D'}), - 'C': schema.Class('C', bases=['A'], derived={'D'}, pragmas={"group": "xxx"}), - 'D': schema.Class('D', bases=['B', 'C'], pragmas={"group": "xxx"}), + "A": schema.Class("A", derived={"B", "C"}), + "B": schema.Class("B", bases=["A"], derived={"D"}), + "C": schema.Class("C", bases=["A"], derived={"D"}, pragmas={"group": "xxx"}), + "D": schema.Class("D", bases=["B", "C"], pragmas={"group": "xxx"}), } def test_no_mixed_groups_in_bases(): with pytest.raises(schema.Error): + @load class data: class A: pass - @defs.group('x') + @defs.group("x") class B(A): pass - @defs.group('y') + @defs.group("y") class C(A): pass @@ -153,6 +156,7 @@ class D(B, C): def test_lowercase_rejected(): with pytest.raises(schema.Error): + @load class data: class aLowerCase: @@ -171,14 +175,17 @@ class A: six: defs.set[defs.string] assert data.classes == { - 'A': schema.Class('A', properties=[ - schema.SingleProperty('one', 'string'), - schema.OptionalProperty('two', 'int'), - schema.RepeatedProperty('three', 'boolean'), - schema.RepeatedOptionalProperty('four', 'string'), - schema.PredicateProperty('five'), - schema.RepeatedUnorderedProperty('six', 'string'), - ]), + "A": schema.Class( + "A", + properties=[ + schema.SingleProperty("one", "string"), + schema.OptionalProperty("two", "int"), + schema.RepeatedProperty("three", "boolean"), + schema.RepeatedOptionalProperty("four", "string"), + schema.PredicateProperty("five"), + schema.RepeatedUnorderedProperty("six", "string"), + ], + ), } @@ -199,14 +206,18 @@ class B(A): five: defs.set[A] assert data.classes == { - 'A': schema.Class('A', derived={'B'}), - 'B': schema.Class('B', bases=['A'], properties=[ - schema.SingleProperty('one', 'A'), - schema.OptionalProperty('two', 'A'), - schema.RepeatedProperty('three', 'A'), - schema.RepeatedOptionalProperty('four', 'A'), - schema.RepeatedUnorderedProperty('five', 'A'), - ]), + "A": schema.Class("A", derived={"B"}), + "B": schema.Class( + "B", + bases=["A"], + properties=[ + schema.SingleProperty("one", "A"), + schema.OptionalProperty("two", "A"), + schema.RepeatedProperty("three", "A"), + schema.RepeatedOptionalProperty("four", "A"), + schema.RepeatedUnorderedProperty("five", "A"), + ], + ), } @@ -221,20 +232,31 @@ class A: five: defs.set["A"] assert data.classes == { - 'A': schema.Class('A', properties=[ - schema.SingleProperty('one', 'A'), - schema.OptionalProperty('two', 'A'), - schema.RepeatedProperty('three', 'A'), - schema.RepeatedOptionalProperty('four', 'A'), - schema.RepeatedUnorderedProperty('five', 'A'), - ]), + "A": schema.Class( + "A", + properties=[ + schema.SingleProperty("one", "A"), + schema.OptionalProperty("two", "A"), + schema.RepeatedProperty("three", "A"), + schema.RepeatedOptionalProperty("four", "A"), + schema.RepeatedUnorderedProperty("five", "A"), + ], + ), } -@pytest.mark.parametrize("spec", [lambda t: t, lambda t: defs.optional[t], lambda t: defs.list[t], - lambda t: defs.list[defs.optional[t]]]) +@pytest.mark.parametrize( + "spec", + [ + lambda t: t, + lambda t: defs.optional[t], + lambda t: defs.list[t], + lambda t: defs.list[defs.optional[t]], + ], +) def test_string_reference_dangling(spec): with pytest.raises(schema.Error): + @load class data: class A: @@ -251,18 +273,24 @@ class A: four: defs.list[defs.optional["A"]] | defs.child assert data.classes == { - 'A': schema.Class('A', properties=[ - schema.SingleProperty('one', 'A', is_child=True), - schema.OptionalProperty('two', 'A', is_child=True), - schema.RepeatedProperty('three', 'A', is_child=True), - schema.RepeatedOptionalProperty('four', 'A', is_child=True), - ]), + "A": schema.Class( + "A", + properties=[ + schema.SingleProperty("one", "A", is_child=True), + schema.OptionalProperty("two", "A", is_child=True), + schema.RepeatedProperty("three", "A", is_child=True), + schema.RepeatedOptionalProperty("four", "A", is_child=True), + ], + ), } -@pytest.mark.parametrize("spec", [defs.string, defs.int, defs.boolean, defs.predicate, defs.set["A"]]) +@pytest.mark.parametrize( + "spec", [defs.string, defs.int, defs.boolean, defs.predicate, defs.set["A"]] +) def test_builtin_predicate_and_set_children_not_allowed(spec): with pytest.raises(schema.Error): + @load class data: class A: @@ -291,9 +319,12 @@ class A: x: defs.string | pragma assert data.classes == { - 'A': schema.Class('A', properties=[ - schema.SingleProperty('x', 'string', pragmas=[expected]), - ]), + "A": schema.Class( + "A", + properties=[ + schema.SingleProperty("x", "string", pragmas=[expected]), + ], + ), } @@ -308,9 +339,16 @@ class A: x: spec assert data.classes == { - 'A': schema.Class('A', properties=[ - schema.SingleProperty('x', 'string', pragmas=[expected for _, expected in _property_pragmas]), - ]), + "A": schema.Class( + "A", + properties=[ + schema.SingleProperty( + "x", + "string", + pragmas=[expected for _, expected in _property_pragmas], + ), + ], + ), } @@ -323,7 +361,7 @@ class A: pass assert data.classes == { - 'A': schema.Class('A', pragmas=[expected]), + "A": schema.Class("A", pragmas=[expected]), } @@ -340,7 +378,7 @@ class A: apply_pragmas(A) assert data.classes == { - 'A': schema.Class('A', pragmas=[e for _, e in _pragmas]), + "A": schema.Class("A", pragmas=[e for _, e in _pragmas]), } @@ -355,8 +393,10 @@ class B(A): pass assert data.classes == { - 'A': schema.Class('A', derived={'B'}, pragmas={"synth": True}), - 'B': schema.Class('B', bases=['A'], pragmas={"synth": schema.SynthInfo(from_class="A")}), + "A": schema.Class("A", derived={"B"}, pragmas={"synth": True}), + "B": schema.Class( + "B", bases=["A"], pragmas={"synth": schema.SynthInfo(from_class="A")} + ), } @@ -371,13 +411,16 @@ class B(A): pass assert data.classes == { - 'A': schema.Class('A', derived={'B'}, pragmas={"synth": schema.SynthInfo(from_class="B")}), - 'B': schema.Class('B', bases=['A']), + "A": schema.Class( + "A", derived={"B"}, pragmas={"synth": schema.SynthInfo(from_class="B")} + ), + "B": schema.Class("B", bases=["A"]), } def test_synth_from_class_dangling(): with pytest.raises(schema.Error): + @load class data: @defs.synth.from_class("X") @@ -396,8 +439,12 @@ class B(A): pass assert data.classes == { - 'A': schema.Class('A', derived={'B'}, pragmas={"synth": True}), - 'B': schema.Class('B', bases=['A'], pragmas={"synth": schema.SynthInfo(on_arguments={'a': 'A', 'i': 'int'})}), + "A": schema.Class("A", derived={"B"}, pragmas={"synth": True}), + "B": schema.Class( + "B", + bases=["A"], + pragmas={"synth": schema.SynthInfo(on_arguments={"a": "A", "i": "int"})}, + ), } @@ -415,13 +462,18 @@ class B(A): pass assert data.classes == { - 'A': schema.Class('A', derived={'B'}, pragmas={"synth": schema.SynthInfo(on_arguments={'b': 'B', 'i': 'int'})}), - 'B': schema.Class('B', bases=['A']), + "A": schema.Class( + "A", + derived={"B"}, + pragmas={"synth": schema.SynthInfo(on_arguments={"b": "B", "i": "int"})}, + ), + "B": schema.Class("B", bases=["A"]), } def test_synth_class_on_dangling(): with pytest.raises(schema.Error): + @load class data: @defs.synth.on_arguments(s=defs.string, a="A", i=defs.int) @@ -453,12 +505,25 @@ class C(Root): pass assert data.classes == { - 'Root': schema.Class('Root', derived={'Base', 'C'}), - 'Base': schema.Class('Base', bases=['Root'], derived={'Intermediate', 'B'}, pragmas={"synth": True}), - 'Intermediate': schema.Class('Intermediate', bases=['Base'], derived={'A'}, pragmas={"synth": True}), - 'A': schema.Class('A', bases=['Intermediate'], pragmas={"synth": schema.SynthInfo(on_arguments={'a': 'Base', 'i': 'int'})}), - 'B': schema.Class('B', bases=['Base'], pragmas={"synth": schema.SynthInfo(from_class='Base')}), - 'C': schema.Class('C', bases=['Root']), + "Root": schema.Class("Root", derived={"Base", "C"}), + "Base": schema.Class( + "Base", + bases=["Root"], + derived={"Intermediate", "B"}, + pragmas={"synth": True}, + ), + "Intermediate": schema.Class( + "Intermediate", bases=["Base"], derived={"A"}, pragmas={"synth": True} + ), + "A": schema.Class( + "A", + bases=["Intermediate"], + pragmas={"synth": schema.SynthInfo(on_arguments={"a": "Base", "i": "int"})}, + ), + "B": schema.Class( + "B", bases=["Base"], pragmas={"synth": schema.SynthInfo(from_class="Base")} + ), + "C": schema.Class("C", bases=["Root"]), } @@ -479,9 +544,7 @@ class data: class A: """Very important class.""" - assert data.classes == { - 'A': schema.Class('A', doc=["Very important class."]) - } + assert data.classes == {"A": schema.Class("A", doc=["Very important class."])} def test_property_docstring(): @@ -491,7 +554,14 @@ class A: x: int | defs.desc("very important property.") assert data.classes == { - 'A': schema.Class('A', properties=[schema.SingleProperty('x', 'int', description=["very important property."])]) + "A": schema.Class( + "A", + properties=[ + schema.SingleProperty( + "x", "int", description=["very important property."] + ) + ], + ) } @@ -502,21 +572,27 @@ class A: """Very important class.""" - assert data.classes == { - 'A': schema.Class('A', doc=["Very important", "class."]) - } + assert data.classes == {"A": schema.Class("A", doc=["Very important", "class."])} def test_property_docstring_newline(): @load class data: class A: - x: int | defs.desc("""very important - property.""") + x: int | defs.desc( + """very important + property.""" + ) assert data.classes == { - 'A': schema.Class('A', - properties=[schema.SingleProperty('x', 'int', description=["very important", "property."])]) + "A": schema.Class( + "A", + properties=[ + schema.SingleProperty( + "x", "int", description=["very important", "property."] + ) + ], + ) } @@ -530,23 +606,30 @@ class A: """ - assert data.classes == { - 'A': schema.Class('A', doc=["Very important class."]) - } + assert data.classes == {"A": schema.Class("A", doc=["Very important class."])} def test_property_docstring_stripped(): @load class data: class A: - x: int | defs.desc(""" + x: int | defs.desc( + """ very important property. - """) + """ + ) assert data.classes == { - 'A': schema.Class('A', properties=[schema.SingleProperty('x', 'int', description=["very important property."])]) + "A": schema.Class( + "A", + properties=[ + schema.SingleProperty( + "x", "int", description=["very important property."] + ) + ], + ) } @@ -559,7 +642,9 @@ class A: As said, very important.""" assert data.classes == { - 'A': schema.Class('A', doc=["Very important class.", "", "As said, very important."]) + "A": schema.Class( + "A", doc=["Very important class.", "", "As said, very important."] + ) } @@ -567,13 +652,27 @@ def test_property_docstring_split(): @load class data: class A: - x: int | defs.desc("""very important property. + x: int | defs.desc( + """very important property. - Very very important.""") + Very very important.""" + ) assert data.classes == { - 'A': schema.Class('A', properties=[ - schema.SingleProperty('x', 'int', description=["very important property.", "", "Very very important."])]) + "A": schema.Class( + "A", + properties=[ + schema.SingleProperty( + "x", + "int", + description=[ + "very important property.", + "", + "Very very important.", + ], + ) + ], + ) } @@ -587,7 +686,9 @@ class A: """ assert data.classes == { - 'A': schema.Class('A', doc=["Very important class.", " As said, very important."]) + "A": schema.Class( + "A", doc=["Very important class.", " As said, very important."] + ) } @@ -595,14 +696,24 @@ def test_property_docstring_indent(): @load class data: class A: - x: int | defs.desc(""" + x: int | defs.desc( + """ very important property. Very very important. - """) + """ + ) assert data.classes == { - 'A': schema.Class('A', properties=[ - schema.SingleProperty('x', 'int', description=["very important property.", " Very very important."])]) + "A": schema.Class( + "A", + properties=[ + schema.SingleProperty( + "x", + "int", + description=["very important property.", " Very very important."], + ) + ], + ) } @@ -613,13 +724,13 @@ class A: x: int | defs.doc("y") assert data.classes == { - 'A': schema.Class('A', properties=[ - schema.SingleProperty('x', 'int', doc="y")]), + "A": schema.Class("A", properties=[schema.SingleProperty("x", "int", doc="y")]), } def test_property_doc_override_no_newlines(): with pytest.raises(schema.Error): + @load class data: class A: @@ -628,6 +739,7 @@ class A: def test_property_doc_override_no_trailing_dot(): with pytest.raises(schema.Error): + @load class data: class A: @@ -642,7 +754,7 @@ class A: pass assert data.classes == { - 'A': schema.Class('A', pragmas={"ql_default_doc_name": "b"}), + "A": schema.Class("A", pragmas={"ql_default_doc_name": "b"}), } @@ -653,7 +765,12 @@ class A: x: optional[int] | defs.ql.db_table_name("foo") assert data.classes == { - 'A': schema.Class('A', properties=[schema.OptionalProperty("x", "int", pragmas={"ql_db_table_name": "foo"})]), + "A": schema.Class( + "A", + properties=[ + schema.OptionalProperty("x", "int", pragmas={"ql_db_table_name": "foo"}) + ], + ), } @@ -668,15 +785,16 @@ class Null(Root): pass assert data.classes == { - 'Root': schema.Class('Root', derived={'Null'}), - 'Null': schema.Class('Null', bases=['Root']), + "Root": schema.Class("Root", derived={"Null"}), + "Null": schema.Class("Null", bases=["Root"]), } - assert data.null == 'Null' + assert data.null == "Null" assert data.null_class is data.classes[data.null] def test_null_class_cannot_be_derived(): with pytest.raises(schema.Error): + @load class data: class Root: @@ -692,6 +810,7 @@ class Impossible(Null): def test_null_class_cannot_be_defined_multiple_times(): with pytest.raises(schema.Error): + @load class data: class Root: @@ -708,6 +827,7 @@ class Null2(Root): def test_uppercase_acronyms_are_rejected(): with pytest.raises(schema.Error): + @load class data: class Root: @@ -737,10 +857,18 @@ class NonHideable(Root): pass assert data.classes == { - "Root": schema.Class("Root", derived={"A", "IndirectlyHideable", "NonHideable"}, pragmas=["ql_hideable"]), + "Root": schema.Class( + "Root", + derived={"A", "IndirectlyHideable", "NonHideable"}, + pragmas=["ql_hideable"], + ), "A": schema.Class("A", bases=["Root"], derived={"B"}, pragmas=["ql_hideable"]), - "IndirectlyHideable": schema.Class("IndirectlyHideable", bases=["Root"], derived={"B"}, pragmas=["ql_hideable"]), - "B": schema.Class("B", bases=["A", "IndirectlyHideable"], pragmas=["ql_hideable"]), + "IndirectlyHideable": schema.Class( + "IndirectlyHideable", bases=["Root"], derived={"B"}, pragmas=["ql_hideable"] + ), + "B": schema.Class( + "B", bases=["A", "IndirectlyHideable"], pragmas=["ql_hideable"] + ), "NonHideable": schema.Class("NonHideable", bases=["Root"]), } @@ -771,7 +899,9 @@ class E(B): assert data.classes == { "Root": schema.Class("Root", derived=set("ABCD")), "A": schema.Class("A", bases=["Root"]), - "B": schema.Class("B", bases=["Root"], pragmas={"qltest_test_with": "A"}, derived={'E'}), + "B": schema.Class( + "B", bases=["Root"], pragmas={"qltest_test_with": "A"}, derived={"E"} + ), "C": schema.Class("C", bases=["Root"], pragmas={"qltest_test_with": "D"}), "D": schema.Class("D", bases=["Root"]), "E": schema.Class("E", bases=["B"], pragmas={"qltest_test_with": "A"}), @@ -782,10 +912,10 @@ def test_annotate_docstring(): @load class data: class Root: - """ old docstring """ + """old docstring""" class A(Root): - """ A docstring """ + """A docstring""" @defs.annotate(Root) class _: @@ -819,7 +949,15 @@ class _: pass assert data.classes == { - "Root": schema.Class("Root", pragmas=["qltest_skip", "cpp_skip", "ql_hideable", "qltest_collapse_hierarchy"]), + "Root": schema.Class( + "Root", + pragmas=[ + "qltest_skip", + "cpp_skip", + "ql_hideable", + "qltest_collapse_hierarchy", + ], + ), } @@ -837,11 +975,16 @@ class _: z: defs.string assert data.classes == { - "Root": schema.Class("Root", properties=[ - schema.SingleProperty("x", "int", doc="foo"), - schema.OptionalProperty("y", "Root", pragmas=["ql_internal"], is_child=True), - schema.SingleProperty("z", "string"), - ]), + "Root": schema.Class( + "Root", + properties=[ + schema.SingleProperty("x", "int", doc="foo"), + schema.OptionalProperty( + "y", "Root", pragmas=["ql_internal"], is_child=True + ), + schema.SingleProperty("z", "string"), + ], + ), } @@ -860,16 +1003,20 @@ class _: z: defs._ | ~defs.synth | ~defs.doc assert data.classes == { - "Root": schema.Class("Root", properties=[ - schema.SingleProperty("x", "int"), - schema.OptionalProperty("y", "Root"), - schema.SingleProperty("z", "string"), - ]), + "Root": schema.Class( + "Root", + properties=[ + schema.SingleProperty("x", "int"), + schema.OptionalProperty("y", "Root"), + schema.SingleProperty("z", "string"), + ], + ), } def test_annotate_non_existing_field(): with pytest.raises(schema.Error): + @load class data: class Root: @@ -882,6 +1029,7 @@ class _: def test_annotate_not_underscore(): with pytest.raises(schema.Error): + @load class data: class Root: @@ -916,6 +1064,7 @@ class Derived(A, B): @defs.annotate(Derived, replace_bases={B: C}) class _: pass + assert data.classes == { "Root": schema.Class("Root", derived={"A", "B"}), "A": schema.Class("A", bases=["Root"], derived={"Derived"}), @@ -946,6 +1095,7 @@ class Derived(A): @defs.annotate(Derived, add_bases=(B, C)) class _: pass + assert data.classes == { "Root": schema.Class("Root", derived={"A", "B", "C"}), "A": schema.Class("A", bases=["Root"], derived={"Derived"}), @@ -968,15 +1118,19 @@ class _: y: defs.drop assert data.classes == { - "Root": schema.Class("Root", properties=[ - schema.SingleProperty("x", "int"), - schema.SingleProperty("z", "boolean"), - ]), + "Root": schema.Class( + "Root", + properties=[ + schema.SingleProperty("x", "int"), + schema.SingleProperty("z", "boolean"), + ], + ), } def test_test_with_unknown_string(): with pytest.raises(schema.Error): + @load class data: class Root: @@ -989,6 +1143,7 @@ class A(Root): def test_test_with_unknown_class(): with pytest.raises(schema.Error): + class B: pass @@ -1004,6 +1159,7 @@ class A(Root): def test_test_with_double(): with pytest.raises(schema.Error): + class B: pass @@ -1024,5 +1180,5 @@ class C(Root): pass -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(pytest.main([__file__] + sys.argv[1:])) diff --git a/misc/codegen/test/test_trapgen.py b/misc/codegen/test/test_trapgen.py index a81f40e0dd83..590c83aa7347 100644 --- a/misc/codegen/test/test_trapgen.py +++ b/misc/codegen/test/test_trapgen.py @@ -17,10 +17,16 @@ def ret(entities): dirs = {f.parent for f in generated} assert all(isinstance(f, pathlib.Path) for f in generated) assert all(f.name in ("TrapEntries", "TrapTags") for f in generated) - assert set(f for f in generated if f.name == "TrapTags") == {output_dir / "TrapTags"} - return ({ - str(d.relative_to(output_dir)): generated[d / "TrapEntries"] for d in dirs - }, generated[output_dir / "TrapTags"]) + assert set(f for f in generated if f.name == "TrapTags") == { + output_dir / "TrapTags" + } + return ( + { + str(d.relative_to(output_dir)): generated[d / "TrapEntries"] + for d in dirs + }, + generated[output_dir / "TrapTags"], + ) return ret @@ -65,87 +71,130 @@ def test_empty_tags(generate_tags): def test_one_empty_table_rejected(generate_traps): with pytest.raises(AssertionError): - generate_traps([ - dbscheme.Table(name="foos", columns=[]), - ]) + generate_traps( + [ + dbscheme.Table(name="foos", columns=[]), + ] + ) def test_one_table(generate_traps): - assert generate_traps([ - dbscheme.Table(name="foos", columns=[dbscheme.Column("bla", "int")]), - ]) == [ + assert generate_traps( + [ + dbscheme.Table(name="foos", columns=[dbscheme.Column("bla", "int")]), + ] + ) == [ cpp.Trap("foos", name="Foos", fields=[cpp.Field("bla", "int")]), ] def test_one_table(generate_traps): - assert generate_traps([ - dbscheme.Table(name="foos", columns=[dbscheme.Column("bla", "int")]), - ]) == [ + assert generate_traps( + [ + dbscheme.Table(name="foos", columns=[dbscheme.Column("bla", "int")]), + ] + ) == [ cpp.Trap("foos", name="Foos", fields=[cpp.Field("bla", "int")]), ] def test_one_table_with_id(generate_traps): - assert generate_traps([ - dbscheme.Table(name="foos", columns=[ - dbscheme.Column("bla", "int", binding=True)]), - ]) == [ - cpp.Trap("foos", name="Foos", fields=[cpp.Field( - "bla", "int")], id=cpp.Field("bla", "int")), + assert generate_traps( + [ + dbscheme.Table( + name="foos", columns=[dbscheme.Column("bla", "int", binding=True)] + ), + ] + ) == [ + cpp.Trap( + "foos", + name="Foos", + fields=[cpp.Field("bla", "int")], + id=cpp.Field("bla", "int"), + ), ] def test_one_table_with_two_binding_first_is_id(generate_traps): - assert generate_traps([ - dbscheme.Table(name="foos", columns=[ - dbscheme.Column("x", "a", binding=True), - dbscheme.Column("y", "b", binding=True), - ]), - ]) == [ - cpp.Trap("foos", name="Foos", fields=[ - cpp.Field("x", "a"), - cpp.Field("y", "b"), - ], id=cpp.Field("x", "a")), + assert generate_traps( + [ + dbscheme.Table( + name="foos", + columns=[ + dbscheme.Column("x", "a", binding=True), + dbscheme.Column("y", "b", binding=True), + ], + ), + ] + ) == [ + cpp.Trap( + "foos", + name="Foos", + fields=[ + cpp.Field("x", "a"), + cpp.Field("y", "b"), + ], + id=cpp.Field("x", "a"), + ), ] -@pytest.mark.parametrize("column,field", [ - (dbscheme.Column("x", "string"), cpp.Field("x", "std::string")), - (dbscheme.Column("y", "boolean"), cpp.Field("y", "bool")), - (dbscheme.Column("z", "@db_type"), cpp.Field("z", "TrapLabel")), -]) +@pytest.mark.parametrize( + "column,field", + [ + (dbscheme.Column("x", "string"), cpp.Field("x", "std::string")), + (dbscheme.Column("y", "boolean"), cpp.Field("y", "bool")), + (dbscheme.Column("z", "@db_type"), cpp.Field("z", "TrapLabel")), + ], +) def test_one_table_special_types(generate_traps, column, field): - assert generate_traps([ - dbscheme.Table(name="foos", columns=[column]), - ]) == [ + assert generate_traps( + [ + dbscheme.Table(name="foos", columns=[column]), + ] + ) == [ cpp.Trap("foos", name="Foos", fields=[field]), ] -@pytest.mark.parametrize("name", ["start_line", "start_column", "end_line", "end_column", "index", "num_whatever"]) +@pytest.mark.parametrize( + "name", + ["start_line", "start_column", "end_line", "end_column", "index", "num_whatever"], +) def test_one_table_overridden_unsigned_field(generate_traps, name): - assert generate_traps([ - dbscheme.Table(name="foos", columns=[dbscheme.Column(name, "bar")]), - ]) == [ + assert generate_traps( + [ + dbscheme.Table(name="foos", columns=[dbscheme.Column(name, "bar")]), + ] + ) == [ cpp.Trap("foos", name="Foos", fields=[cpp.Field(name, "unsigned")]), ] def test_one_table_overridden_underscore_named_field(generate_traps): - assert generate_traps([ - dbscheme.Table(name="foos", columns=[dbscheme.Column("whatever_", "bar")]), - ]) == [ + assert generate_traps( + [ + dbscheme.Table(name="foos", columns=[dbscheme.Column("whatever_", "bar")]), + ] + ) == [ cpp.Trap("foos", name="Foos", fields=[cpp.Field("whatever", "bar")]), ] def test_tables_with_dir(generate_grouped_traps): - assert generate_grouped_traps([ - dbscheme.Table(name="x", columns=[dbscheme.Column("i", "int")]), - dbscheme.Table(name="y", columns=[dbscheme.Column("i", "int")], dir=pathlib.Path("foo")), - dbscheme.Table(name="z", columns=[dbscheme.Column("i", "int")], dir=pathlib.Path("foo/bar")), - ]) == { + assert generate_grouped_traps( + [ + dbscheme.Table(name="x", columns=[dbscheme.Column("i", "int")]), + dbscheme.Table( + name="y", columns=[dbscheme.Column("i", "int")], dir=pathlib.Path("foo") + ), + dbscheme.Table( + name="z", + columns=[dbscheme.Column("i", "int")], + dir=pathlib.Path("foo/bar"), + ), + ] + ) == { ".": [cpp.Trap("x", name="X", fields=[cpp.Field("i", "int")])], "foo": [cpp.Trap("y", name="Y", fields=[cpp.Field("i", "int")])], "foo/bar": [cpp.Trap("z", name="Z", fields=[cpp.Field("i", "int")])], @@ -153,15 +202,22 @@ def test_tables_with_dir(generate_grouped_traps): def test_one_table_no_tags(generate_tags): - assert generate_tags([ - dbscheme.Table(name="foos", columns=[dbscheme.Column("bla", "int")]), - ]) == [] + assert ( + generate_tags( + [ + dbscheme.Table(name="foos", columns=[dbscheme.Column("bla", "int")]), + ] + ) + == [] + ) def test_one_union_tags(generate_tags): - assert generate_tags([ - dbscheme.Union(lhs="@left_hand_side", rhs=["@b", "@a", "@c"]), - ]) == [ + assert generate_tags( + [ + dbscheme.Union(lhs="@left_hand_side", rhs=["@b", "@a", "@c"]), + ] + ) == [ cpp.Tag(name="LeftHandSide", bases=[], id="@left_hand_side"), cpp.Tag(name="A", bases=["LeftHandSide"], id="@a"), cpp.Tag(name="B", bases=["LeftHandSide"], id="@b"), @@ -170,11 +226,13 @@ def test_one_union_tags(generate_tags): def test_multiple_union_tags(generate_tags): - assert generate_tags([ - dbscheme.Union(lhs="@d", rhs=["@a"]), - dbscheme.Union(lhs="@a", rhs=["@b", "@c"]), - dbscheme.Union(lhs="@e", rhs=["@c", "@f"]), - ]) == [ + assert generate_tags( + [ + dbscheme.Union(lhs="@d", rhs=["@a"]), + dbscheme.Union(lhs="@a", rhs=["@b", "@c"]), + dbscheme.Union(lhs="@e", rhs=["@c", "@f"]), + ] + ) == [ cpp.Tag(name="D", bases=[], id="@d"), cpp.Tag(name="E", bases=[], id="@e"), cpp.Tag(name="A", bases=["D"], id="@a"), @@ -184,5 +242,5 @@ def test_multiple_union_tags(generate_tags): ] -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(pytest.main([__file__] + sys.argv[1:])) diff --git a/misc/codegen/test/utils.py b/misc/codegen/test/utils.py index e33500711f25..094455d3d14d 100644 --- a/misc/codegen/test/utils.py +++ b/misc/codegen/test/utils.py @@ -39,8 +39,9 @@ def opts(): @pytest.fixture(autouse=True) def override_paths(tmp_path): - with mock.patch("misc.codegen.lib.paths.root_dir", tmp_path), \ - mock.patch("misc.codegen.lib.paths.exe_file", tmp_path / "exe"): + with mock.patch("misc.codegen.lib.paths.root_dir", tmp_path), mock.patch( + "misc.codegen.lib.paths.exe_file", tmp_path / "exe" + ): yield diff --git a/misc/scripts/generate-code-scanning-query-list.py b/misc/scripts/generate-code-scanning-query-list.py index dae6e3d38351..02d59c473ec7 100755 --- a/misc/scripts/generate-code-scanning-query-list.py +++ b/misc/scripts/generate-code-scanning-query-list.py @@ -30,7 +30,7 @@ assert hasattr(arguments, "ignore_missing_query_packs") # Define which languages and query packs to consider -languages = [ "actions", "cpp", "csharp", "go", "java", "javascript", "python", "ruby", "swift" ] +languages = [ "actions", "cpp", "csharp", "go", "java", "javascript", "python", "ruby", "rust", "swift" ] packs = [ "code-scanning", "security-and-quality", "security-extended", "security-experimental", "code-quality"] class CodeQL: 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 22a872dc2bf2..e2de5038206e --- a/misc/scripts/models-as-data/bulk_generate_mad.py +++ b/misc/scripts/models-as-data/bulk_generate_mad.py @@ -1,21 +1,38 @@ +#!/usr/bin/env python3 """ Experimental script for bulk generation of MaD models based on a list of projects. Note: This file must be formatted using the Black Python formatter. """ -import os.path +import pathlib 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 @@ -24,26 +41,22 @@ .decode("utf-8") .strip() ) -build_dir = os.path.join(gitroot, "mad-generation-build") +build_dir = pathlib.Path(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,20 +76,20 @@ 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) + target_dir = build_dir / name # Clone only if directory doesn't already exist - if not os.path.exists(target_dir): + if not target_dir.exists(): if git_tag: print(f"Cloning {name} from {repo_url} at tag {git_tag}") else: @@ -103,6 +116,37 @@ 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 +158,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 +182,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: @@ -168,10 +191,10 @@ def build_database( name = project["name"] # Create database directory path - database_dir = os.path.join(build_dir, f"{name}-db") + database_dir = build_dir / f"{name}-db" # Only build the database if it doesn't already exist - if not os.path.exists(database_dir): + if not database_dir.exists(): print(f"Building CodeQL database for {name}...") extractor_options = [option for x in extractor_options for option in ("-O", x)] try: @@ -200,7 +223,7 @@ def build_database( return database_dir -def generate_models(config, project: Project, database_dir: str) -> None: +def generate_models(config, args, project: Project, database_dir: str) -> None: """ Generate models for a project. @@ -213,11 +236,16 @@ def generate_models(config, project: Project, database_dir: str) -> None: language = config["language"] generator = mad.Generator(language) - # Note: The argument parser converts with-sinks to with_sinks, etc. - generator.generateSinks = should_generate_sinks(project) - generator.generateSources = should_generate_sources(project) - generator.generateSummaries = should_generate_summaries(project) - generator.setenvironment(database=database_dir, folder=name) + generator.with_sinks = should_generate_sinks(project) + generator.with_sources = should_generate_sources(project) + generator.with_summaries = should_generate_summaries(project) + generator.threads = args.codeql_threads + generator.ram = args.codeql_ram + if config.get("single-file", False): + generator.single_file = name + else: + generator.folder = name + generator.setenvironment(database=database_dir) generator.run() @@ -288,7 +316,7 @@ def download_artifact(url: str, artifact_name: str, pat: str) -> str: if response.status_code != 200: print(f"Failed to download file. Status code: {response.status_code}") sys.exit(1) - target_zip = os.path.join(build_dir, zipName) + target_zip = build_dir / zipName with open(target_zip, "wb") as file: for chunk in response.iter_content(chunk_size=8192): file.write(chunk) @@ -296,46 +324,60 @@ def download_artifact(url: str, artifact_name: str, pat: str) -> str: return target_zip -def remove_extension(filename: str) -> str: - while "." in filename: - filename, _ = os.path.splitext(filename) - return filename - - def pretty_name_from_artifact_name(artifact_name: str) -> str: return artifact_name.split("___")[1] def download_dca_databases( - experiment_name: str, pat: str, projects: List[Project] + language: str, + experiment_names: list[str], + pat: str, + projects: List[Project], ) -> List[tuple[Project, str | None]]: """ Download databases from a DCA experiment. Args: - experiment_name: The name of the DCA experiment to download databases from. + experiment_names: The names of the DCA experiments to download databases from. pat: Personal Access Token for GitHub API authentication. projects: List of projects to download databases for. 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", - pat, - ) - targets = response["targets"] project_map = {project["name"]: project for project in projects} - for data in targets.values(): - downloads = data["downloads"] - analyzed_database = downloads["analyzed_database"] - artifact_name = analyzed_database["artifact_name"] - pretty_name = pretty_name_from_artifact_name(artifact_name) + analyzed_databases = {n: None for n in project_map} + for experiment_name in experiment_names: + response = get_json_from_github( + f"https://raw.githubusercontent.com/github/codeql-dca-main/data/{experiment_name}/reports/downloads.json", + pat, + ) + targets = response["targets"] + for data in targets.values(): + downloads = data["downloads"] + analyzed_database = downloads["analyzed_database"] + artifact_name = analyzed_database["artifact_name"] + pretty_name = pretty_name_from_artifact_name(artifact_name) + + if not pretty_name in analyzed_databases: + print(f"Skipping {pretty_name} as it is not in the list of projects") + continue + + if analyzed_databases[pretty_name] is not None: + print( + f"Skipping previous database {analyzed_databases[pretty_name]['artifact_name']} for {pretty_name}" + ) + + analyzed_databases[pretty_name] = analyzed_database - if not pretty_name in project_map: - print(f"Skipping {pretty_name} as it is not in the list of projects") - continue + not_found = [name for name, db in analyzed_databases.items() if db is None] + if not_found: + print( + f"ERROR: The following projects were not found in the DCA experiments: {', '.join(not_found)}" + ) + sys.exit(1) + 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,31 +393,50 @@ 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) + artifact_unzipped_location = 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 = 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 = artifact_unzipped_location / language + print(f"Decompression complete: {ret}") + return ret + + 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)}" + ), + ) - print(f"\n=== Extracted {len(database_results)} databases ===") + print(f"\n=== Fetched {len(results)} databases ===") - return [(project, database_results[project["name"]]) for project in projects] + return [(project_map[n], r) for n, r in zip(analyzed_databases, results)] -def get_mad_destination_for_project(config, name: str) -> str: - return os.path.join(config["destination"], name) +def clean_up_mad_destination_for_project(config, name: str): + target = pathlib.Path(config["destination"], name) + if config.get("single-file", False): + target = target.with_suffix(".model.yml") + if target.exists(): + print(f"Deleting existing MaD file at {target}") + target.unlink() + elif target.exists(): + print(f"Deleting existing MaD directory at {target}") + shutil.rmtree(target, ignore_errors=True) def get_strategy(config) -> str: @@ -397,49 +458,36 @@ def main(config, args) -> None: language = config["language"] # Create build directory if it doesn't exist - if not os.path.exists(build_dir): - os.makedirs(build_dir) - - # Check if any of the MaD directories contain working directory changes in git - for project in projects: - mad_dir = get_mad_destination_for_project(config, project["name"]) - if os.path.exists(mad_dir): - git_status_output = subprocess.check_output( - ["git", "status", "-s", mad_dir], text=True - ).strip() - if git_status_output: - print( - f"""ERROR: Working directory changes detected in {mad_dir}. - -Before generating new models, the existing models are deleted. - -To avoid loss of data, please commit your changes.""" - ) - sys.exit(1) + build_dir.mkdir(parents=True, exist_ok=True) database_results = [] match get_strategy(config): 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 - if experiment_name is None: + experiment_names = args.dca + if experiment_names is None: print("ERROR: --dca argument is required for DCA strategy") sys.exit(1) if args.pat is None: print("ERROR: --pat argument is required for DCA strategy") sys.exit(1) - if not os.path.exists(args.pat): + if not args.pat.exists(): print(f"ERROR: Personal Access Token file '{pat}' does not exist.") sys.exit(1) with open(args.pat, "r") as f: pat = f.read().strip() database_results = download_dca_databases( - experiment_name, pat, projects + language, + experiment_names, + pat, + projects, ) # Generate models for all projects @@ -454,47 +502,59 @@ def main(config, args) -> None: ) sys.exit(1) - # Delete the MaD directory for each project - for project, database_dir in database_results: - mad_dir = get_mad_destination_for_project(config, project["name"]) - if os.path.exists(mad_dir): - print(f"Deleting existing MaD directory at {mad_dir}") - subprocess.check_call(["rm", "-rf", mad_dir]) + # clean up existing MaD data for the projects + for project, _ in database_results: + clean_up_mad_destination_for_project(config, project["name"]) for project, database_dir in database_results: if database_dir is not None: - generate_models(config, project, database_dir) + generate_models(config, args, project, database_dir) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument( - "--config", type=str, help="Path to the configuration file.", required=True + "--config", + type=pathlib.Path, + help="Path to the configuration file.", + required=True, ) parser.add_argument( "--dca", type=str, - help="Name of a DCA run that built all the projects", - required=False, + help="Name of a DCA run that built all the projects. Can be repeated, with sources taken from all provided runs, " + "the last provided ones having priority", + action="append", ) parser.add_argument( "--pat", - type=str, + type=pathlib.Path, help="Path to a file containing the PAT token required to grab DCA databases (the same as the one you use for DCA)", - required=False, + ) + parser.add_argument( + "--codeql-ram", + type=int, + help="What `--ram` value to pass to `codeql` while generating models (by default 2048 MB per thread)", + default=None, + ) + parser.add_argument( + "--codeql-threads", + type=int, + help="What `--threads` value to pass to `codeql` (default %(default)s)", + default=0, ) args = parser.parse_args() # Load config file config = {} - if not os.path.exists(args.config): + if not args.config.exists(): print(f"ERROR: Config file '{args.config}' does not exist.") 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/scripts/models-as-data/convert_extensions.py b/misc/scripts/models-as-data/convert_extensions.py index 28a7b7349bc0..01a10dae5ffd 100644 --- a/misc/scripts/models-as-data/convert_extensions.py +++ b/misc/scripts/models-as-data/convert_extensions.py @@ -7,65 +7,86 @@ import sys import tempfile + def quote_if_needed(v): # string columns if type(v) is str: - return "\"" + v + "\"" + return '"' + v + '"' # bool column return str(v) + def parseData(data): - rows = [{ }, { }] + rows = [{}, {}] for row in data: d = map(quote_if_needed, row) provenance = row[-1] targetRows = rows[1] if provenance.endswith("generated") else rows[0] - helpers.insert_update(targetRows, row[0], " - [" + ', '.join(d) + ']\n') + helpers.insert_update(targetRows, row[0], " - [" + ", ".join(d) + "]\n") return rows + class Converter: def __init__(self, language, dbDir): self.language = language self.dbDir = dbDir - self.codeQlRoot = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).decode("utf-8").strip() + self.codeQlRoot = ( + subprocess.check_output(["git", "rev-parse", "--show-toplevel"]) + .decode("utf-8") + .strip() + ) self.extDir = os.path.join(self.codeQlRoot, f"{self.language}/ql/lib/ext/") self.dirname = "modelconverter" self.modelFileExtension = ".model.yml" self.workDir = tempfile.mkdtemp() - def runQuery(self, query): - print('########## Querying: ', query) - queryFile = os.path.join(self.codeQlRoot, f"{self.language}/ql/src/utils/{self.dirname}", query) + print("########## Querying: ", query) + queryFile = os.path.join( + self.codeQlRoot, f"{self.language}/ql/src/utils/{self.dirname}", query + ) resultBqrs = os.path.join(self.workDir, "out.bqrs") - helpers.run_cmd(['codeql', 'query', 'run', queryFile, '--database', self.dbDir, '--output', resultBqrs], "Failed to generate " + query) + helpers.run_cmd( + [ + "codeql", + "query", + "run", + queryFile, + "--database", + self.dbDir, + "--output", + resultBqrs, + ], + "Failed to generate " + query, + ) return helpers.readData(self.workDir, resultBqrs) - def asAddsTo(self, rows, predicate): - extensions = [{ }, { }] + extensions = [{}, {}] for i in range(2): for key in rows[i]: - extensions[i][key] = helpers.addsToTemplate.format(f"codeql/{self.language}-all", predicate, rows[i][key]) - - return extensions + extensions[i][key] = helpers.addsToTemplate.format( + f"codeql/{self.language}-all", predicate, rows[i][key] + ) + return extensions def getAddsTo(self, query, predicate): data = self.runQuery(query) rows = parseData(data) return self.asAddsTo(rows, predicate) - def makeContent(self): summaries = self.getAddsTo("ExtractSummaries.ql", helpers.summaryModelPredicate) sources = self.getAddsTo("ExtractSources.ql", helpers.sourceModelPredicate) sinks = self.getAddsTo("ExtractSinks.ql", helpers.sinkModelPredicate) neutrals = self.getAddsTo("ExtractNeutrals.ql", helpers.neutralModelPredicate) - return [helpers.merge(sources[0], sinks[0], summaries[0], neutrals[0]), helpers.merge(sources[1], sinks[1], summaries[1], neutrals[1])] - + return [ + helpers.merge(sources[0], sinks[0], summaries[0], neutrals[0]), + helpers.merge(sources[1], sinks[1], summaries[1], neutrals[1]), + ] def save(self, extensions): # Create directory if it doesn't exist @@ -77,9 +98,11 @@ def save(self, extensions): for entry in extensions[0]: with open(self.extDir + "/" + entry + self.modelFileExtension, "w") as f: f.write(extensionTemplate.format(extensions[0][entry])) - + for entry in extensions[1]: - with open(self.extDir + "/generated/" + entry + self.modelFileExtension, "w") as f: + with open( + self.extDir + "/generated/" + entry + self.modelFileExtension, "w" + ) as f: f.write(extensionTemplate.format(extensions[1][entry])) def run(self): diff --git a/misc/scripts/models-as-data/generate_mad.py b/misc/scripts/models-as-data/generate_mad.py index a5f8ffc8fa05..5eeac91d8571 100755 --- a/misc/scripts/models-as-data/generate_mad.py +++ b/misc/scripts/models-as-data/generate_mad.py @@ -7,178 +7,229 @@ import sys import tempfile import re +import argparse + def quote_if_needed(row): if row != "true" and row != "false": - return "\"" + row + "\"" + return '"' + row + '"' # subtypes column return row[0].upper() + row[1:] + def parseData(data): - rows = { } + rows = {} for row in data: - d = row[0].split(';') + d = row[0].split(";") namespace = d[0] d = map(quote_if_needed, d) - helpers.insert_update(rows, namespace, " - [" + ', '.join(d) + ']\n') + helpers.insert_update(rows, namespace, " - [" + ", ".join(d) + "]\n") return rows -def printHelp(): - print(f"""Usage: -python3 generate_mad.py [DIR] --language LANGUAGE [--with-sinks] [--with-sources] [--with-summaries] [--with-neutrals] [--with-typebased-summaries] [--dry-run] - +description = """\ This generates summary, source, sink and neutral models for the code in the database. -The files will be placed in `LANGUAGE/ql/lib/ext/generated/DIR` - -Which models are generated is controlled by the flags: - --with-sinks - --with-sources - --with-summaries - --with-neutrals - --with-typebased-summaries (Experimental) -If none of these flags are specified, all models are generated except for the type based models. - - --dry-run: Only run the queries, but don't write to file. +The files will be placed in `LANGUAGE/ql/lib/ext/generated/DIR`""" +epilog = """\ Example invocations: $ python3 generate_mad.py /tmp/dbs/my_library_db $ python3 generate_mad.py /tmp/dbs/my_library_db --with-sinks $ python3 generate_mad.py /tmp/dbs/my_library_db --with-sinks my_directory +Requirements: `codeql` should appear on your path.""" -Requirements: `codeql` should appear on your path. - """) class Generator: - def __init__(self, language): + with_sinks = False + with_sources = False + with_summaries = False + with_neutrals = False + with_typebased_summaries = False + dry_run = False + dirname = "modelgenerator" + ram = None + threads = 0 + folder = "" + single_file = None + + def __init__(self, language=None): self.language = language - self.generateSinks = False - self.generateSources = False - self.generateSummaries = False - self.generateNeutrals = False - self.generateTypeBasedSummaries = False - self.dryRun = False - self.dirname = "modelgenerator" - - - def setenvironment(self, database, folder): - self.codeQlRoot = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).decode("utf-8").strip() - self.database = database - self.generatedFrameworks = os.path.join( - self.codeQlRoot, f"{self.language}/ql/lib/ext/generated/{folder}") - self.workDir = tempfile.mkdtemp() - os.makedirs(self.generatedFrameworks, exist_ok=True) + def setenvironment(self, database=None, folder=None): + self.codeql_root = ( + subprocess.check_output(["git", "rev-parse", "--show-toplevel"]) + .decode("utf-8") + .strip() + ) + self.database = database or self.database + self.folder = folder or self.folder + self.generated_frameworks = os.path.join( + self.codeql_root, f"{self.language}/ql/lib/ext/generated/{self.folder}" + ) + self.workDir = tempfile.mkdtemp() + if self.ram is None: + threads = self.threads if self.threads > 0 else os.cpu_count() + self.ram = 2048 * threads + os.makedirs(self.generated_frameworks, exist_ok=True) @staticmethod def make(): - # Create a generator instance based on command line arguments. - if any(s == "--help" for s in sys.argv): - printHelp() - sys.exit(0) - - if "--language" in sys.argv: - language = sys.argv[sys.argv.index("--language") + 1] - sys.argv.remove("--language") - sys.argv.remove(language) - else: - printHelp() - sys.exit(0) - - generator = Generator(language=language) - - if "--with-sinks" in sys.argv: - sys.argv.remove("--with-sinks") - generator.generateSinks = True - - if "--with-sources" in sys.argv: - sys.argv.remove("--with-sources") - generator.generateSources = True - - if "--with-summaries" in sys.argv: - sys.argv.remove("--with-summaries") - generator.generateSummaries = True - - if "--with-neutrals" in sys.argv: - sys.argv.remove("--with-neutrals") - generator.generateNeutrals = True - - if "--with-typebased-summaries" in sys.argv: - sys.argv.remove("--with-typebased-summaries") - generator.generateTypeBasedSummaries = True - - if "--dry-run" in sys.argv: - sys.argv.remove("--dry-run") - generator.dryRun = True - - if (not generator.generateSinks and - not generator.generateSources and - not generator.generateSummaries and - not generator.generateNeutrals and - not generator.generateTypeBasedSummaries): - generator.generateSinks = generator.generateSources = generator.generateSummaries = generator.generateNeutrals = True - - n = len(sys.argv) - if n < 2: - printHelp() - sys.exit(1) - elif n == 2: - generator.setenvironment(sys.argv[1], "") - else: - generator.setenvironment(sys.argv[1], sys.argv[2]) - + p = argparse.ArgumentParser( + description=description, + formatter_class=argparse.RawTextHelpFormatter, + epilog=epilog, + ) + p.add_argument("database", help="Path to the CodeQL database") + p.add_argument( + "folder", + nargs="?", + default="", + help="Optional folder to place the generated files in", + ) + p.add_argument( + "--language", + required=True, + help="The language for which to generate models", + ) + p.add_argument( + "--with-sinks", + action="store_true", + help="Generate sink models", + ) + p.add_argument( + "--with-sources", + action="store_true", + help="Generate source models", + ) + p.add_argument( + "--with-summaries", + action="store_true", + help="Generate summary models", + ) + p.add_argument( + "--with-neutrals", + action="store_true", + help="Generate neutral models", + ) + p.add_argument( + "--with-typebased-summaries", + action="store_true", + help="Generate type-based summary models (experimental)", + ) + p.add_argument( + "--dry-run", + action="store_true", + help="Do not write the generated files, just print them to stdout", + ) + p.add_argument( + "--threads", + type=int, + default=Generator.threads, + help="Number of threads to use for CodeQL queries (default %(default)s). `0` means use all available threads.", + ) + p.add_argument( + "--ram", + type=int, + help="Amount of RAM to use for CodeQL queries in MB. Default is to use 2048 MB per thread.", + ) + p.add_argument( + "--single-file", + help="Generate a single file with all models instead of separate files for each namespace, using provided argument as the base filename.", + ) + generator = p.parse_args(namespace=Generator()) + + if ( + not generator.with_sinks + and not generator.with_sources + and not generator.with_summaries + and not generator.with_neutrals + and not generator.with_typebased_summaries + ): + generator.with_sinks = True + generator.with_sources = True + generator.with_summaries = True + generator.with_neutrals = True + + generator.setenvironment() return generator - def runQuery(self, query): print("########## Querying " + query + "...") - queryFile = os.path.join(self.codeQlRoot, f"{self.language}/ql/src/utils/{self.dirname}", query) + queryFile = os.path.join( + self.codeql_root, f"{self.language}/ql/src/utils/{self.dirname}", query + ) resultBqrs = os.path.join(self.workDir, "out.bqrs") - helpers.run_cmd(['codeql', 'query', 'run', queryFile, '--database', - self.database, '--output', resultBqrs, '--threads', '8', '--ram', '32768'], "Failed to generate " + query) + cmd = [ + "codeql", + "query", + "run", + queryFile, + "--database", + self.database, + "--output", + resultBqrs, + "--threads", + str(self.threads), + "--ram", + str(self.ram), + ] + helpers.run_cmd(cmd, "Failed to generate " + query) return helpers.readData(self.workDir, resultBqrs) - def asAddsTo(self, rows, predicate): - extensions = { } + extensions = {} for key in rows: - extensions[key] = helpers.addsToTemplate.format(f"codeql/{self.language}-all", predicate, rows[key]) + extensions[key] = helpers.addsToTemplate.format( + f"codeql/{self.language}-all", predicate, rows[key] + ) return extensions def getAddsTo(self, query, predicate): data = self.runQuery(query) rows = parseData(data) + if self.single_file and rows: + rows = {self.single_file: "".join(rows.values())} return self.asAddsTo(rows, predicate) def makeContent(self): summaryAddsTo = {} - if self.generateSummaries: - summaryAddsTo = self.getAddsTo("CaptureSummaryModels.ql", helpers.summaryModelPredicate) + if self.with_summaries: + summaryAddsTo = self.getAddsTo( + "CaptureSummaryModels.ql", helpers.summaryModelPredicate + ) sinkAddsTo = {} - if self.generateSinks: - sinkAddsTo = self.getAddsTo("CaptureSinkModels.ql", helpers.sinkModelPredicate) + if self.with_sinks: + sinkAddsTo = self.getAddsTo( + "CaptureSinkModels.ql", helpers.sinkModelPredicate + ) sourceAddsTo = {} - if self.generateSources: - sourceAddsTo = self.getAddsTo("CaptureSourceModels.ql", helpers.sourceModelPredicate) + if self.with_sources: + sourceAddsTo = self.getAddsTo( + "CaptureSourceModels.ql", helpers.sourceModelPredicate + ) neutralAddsTo = {} - if self.generateNeutrals: - neutralAddsTo = self.getAddsTo("CaptureNeutralModels.ql", helpers.neutralModelPredicate) + if self.with_neutrals: + neutralAddsTo = self.getAddsTo( + "CaptureNeutralModels.ql", helpers.neutralModelPredicate + ) return helpers.merge(summaryAddsTo, sinkAddsTo, sourceAddsTo, neutralAddsTo) def makeTypeBasedContent(self): - if self.generateTypeBasedSummaries: - typeBasedSummaryAddsTo = self.getAddsTo("CaptureTypeBasedSummaryModels.ql", helpers.summaryModelPredicate) + if self.with_typebased_summaries: + typeBasedSummaryAddsTo = self.getAddsTo( + "CaptureTypeBasedSummaryModels.ql", helpers.summaryModelPredicate + ) else: - typeBasedSummaryAddsTo = { } + typeBasedSummaryAddsTo = {} return typeBasedSummaryAddsTo @@ -189,29 +240,33 @@ def save(self, extensions, extension): {0}""" for entry in extensions: # Replace problematic characters with dashes, and collapse multiple dashes. - sanitizedEntry = re.sub(r'-+', '-', entry.replace('/', '-').replace(':', '-')) - target = os.path.join(self.generatedFrameworks, sanitizedEntry + extension) + sanitizedEntry = re.sub( + r"-+", "-", entry.replace("/", "-").replace(":", "-") + ) + target = os.path.join(self.generated_frameworks, sanitizedEntry + extension) with open(target, "w") as f: f.write(extensionTemplate.format(extensions[entry])) print("Models as data extensions written to " + target) - def run(self): content = self.makeContent() typeBasedContent = self.makeTypeBasedContent() - if self.dryRun: + if self.dry_run: print("Models as data extensions generated, but not written to file.") sys.exit(0) - if (self.generateSinks or - self.generateSources or - self.generateSummaries or - self.generateNeutrals): + if ( + self.with_sinks + or self.with_sources + or self.with_summaries + or self.with_neutrals + ): self.save(content, ".model.yml") - if self.generateTypeBasedSummaries: + if self.with_typebased_summaries: self.save(typeBasedContent, ".typebased.model.yml") -if __name__ == '__main__': - Generator.make().run() \ No newline at end of file + +if __name__ == "__main__": + Generator.make().run() diff --git a/misc/scripts/models-as-data/helpers.py b/misc/scripts/models-as-data/helpers.py index 49cccb35cb62..580523f4bec6 100644 --- a/misc/scripts/models-as-data/helpers.py +++ b/misc/scripts/models-as-data/helpers.py @@ -14,37 +14,53 @@ data: {2}""" + def remove_dir(dirName): if os.path.isdir(dirName): shutil.rmtree(dirName) print("Removed directory:", dirName) + def run_cmd(cmd, msg="Failed to run command"): - print('Running ' + ' '.join(cmd)) + print("Running " + " ".join(map(str, cmd))) if subprocess.check_call(cmd): print(msg) exit(1) + def readData(workDir, bqrsFile): generatedJson = os.path.join(workDir, "out.json") - print('Decoding BQRS to JSON.') - run_cmd(['codeql', 'bqrs', 'decode', bqrsFile, '--output', generatedJson, '--format=json'], "Failed to decode BQRS.") + print("Decoding BQRS to JSON.") + run_cmd( + [ + "codeql", + "bqrs", + "decode", + bqrsFile, + "--output", + generatedJson, + "--format=json", + ], + "Failed to decode BQRS.", + ) with open(generatedJson) as f: results = json.load(f) try: - return results['#select']['tuples'] + return results["#select"]["tuples"] except KeyError: - print('Unexpected JSON output - no tuples found') + print("Unexpected JSON output - no tuples found") exit(1) + def insert_update(rows, key, value): if key in rows: rows[key] += value else: rows[key] = value + def merge(*dicts): merged = {} for d in dicts: diff --git a/misc/scripts/shared-code-metrics.py b/misc/scripts/shared-code-metrics.py index 23ce1fd8759a..94679693186a 100755 --- a/misc/scripts/shared-code-metrics.py +++ b/misc/scripts/shared-code-metrics.py @@ -11,7 +11,7 @@ import yaml # To add more languages, add them to this list: -languages = ['cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ql', 'ruby', 'swift'] +languages = ['cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ql', 'ruby', 'rust', 'swift'] repo_location = Path(__file__).parent.parent.parent diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 534af5668523..c7c1d20c6423 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.26 + +No user-facing changes. + ## 1.0.25 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.26.md b/misc/suite-helpers/change-notes/released/1.0.26.md new file mode 100644 index 000000000000..4920e2b24354 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.26.md @@ -0,0 +1,3 @@ +## 1.0.26 + +No user-facing changes. diff --git a/misc/suite-helpers/code-quality-extended-selectors.yml b/misc/suite-helpers/code-quality-extended-selectors.yml new file mode 100644 index 000000000000..57b9b2cf8a89 --- /dev/null +++ b/misc/suite-helpers/code-quality-extended-selectors.yml @@ -0,0 +1,11 @@ +- description: Selectors for selecting the extended code-quality queries for a language +- include: + kind: + - problem + - path-problem + precision: + - high + - very-high + - medium + tags contain: + - quality diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index a5a44030e851..125d169e44f8 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.25 +lastReleaseVersion: 1.0.26 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 3ee266732fb6..77f627a19009 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.25 +version: 1.0.27-dev groups: shared warnOnImplicitThis: true diff --git a/misc/suite-helpers/security-and-frozen-quality-selectors.yml b/misc/suite-helpers/security-and-frozen-quality-selectors.yml new file mode 100644 index 000000000000..f688b5db0466 --- /dev/null +++ b/misc/suite-helpers/security-and-frozen-quality-selectors.yml @@ -0,0 +1,5 @@ +- description: Selectors for selecting the non-quality queries for the security-and-quality queries for a language +- apply: security-extended-selectors.yml +- exclude: + tags contain: + - 'model-generator' diff --git a/python/extractor/tests/parser/soft_keywords_new.expected b/python/extractor/tests/parser/soft_keywords_new.expected new file mode 100644 index 000000000000..5dc537904f5b --- /dev/null +++ b/python/extractor/tests/parser/soft_keywords_new.expected @@ -0,0 +1,137 @@ +Module: [1, 0] - [21, 0] + body: [ + Expr: [1, 0] - [1, 8] + value: + Subscript: [1, 0] - [1, 8] + value: + Name: [1, 0] - [1, 5] + variable: Variable('match', None) + ctx: Load + index: + Num: [1, 6] - [1, 7] + n: 1 + text: '1' + ctx: Load + Assign: [2, 0] - [2, 12] + targets: [ + Subscript: [2, 0] - [2, 8] + value: + Name: [2, 0] - [2, 5] + variable: Variable('match', None) + ctx: Load + index: + Num: [2, 6] - [2, 7] + n: 2 + text: '2' + ctx: Store + ] + value: + Num: [2, 11] - [2, 12] + n: 3 + text: '3' + Assign: [4, 0] - [4, 13] + targets: [ + Attribute: [4, 0] - [4, 9] + value: + Name: [4, 0] - [4, 5] + variable: Variable('match', None) + ctx: Load + attr: 'foo' + ctx: Store + ] + value: + Num: [4, 12] - [4, 13] + n: 4 + text: '4' + Expr: [6, 0] - [6, 7] + value: + Call: [6, 0] - [6, 7] + func: + Name: [6, 0] - [6, 5] + variable: Variable('match', None) + ctx: Load + positional_args: [] + named_args: [] + AnnAssign: [8, 0] - [8, 15] + value: None + annotation: + Name: [8, 11] - [8, 15] + variable: Variable('case', None) + ctx: Load + target: + Subscript: [8, 0] - [8, 8] + value: + Name: [8, 0] - [8, 5] + variable: Variable('match', None) + ctx: Load + index: + Num: [8, 6] - [8, 7] + n: 5 + text: '5' + ctx: Store + Match: [12, 0] - [14, 12] + subject: + List: [12, 6] - [12, 9] + elts: [ + Num: [12, 7] - [12, 8] + n: 6 + text: '6' + ] + ctx: Load + cases: [ + Case: [13, 4] - [14, 12] + pattern: + MatchLiteralPattern: [13, 9] - [13, 10] + literal: + Num: [13, 9] - [13, 10] + n: 7 + text: '7' + guard: None + body: [ + Pass: [14, 8] - [14, 12] + ] + ] + Print: [17, 0] - [17, 19] + dest: + Num: [17, 9] - [17, 10] + n: 8 + text: '8' + values: [ + Str: [17, 12] - [17, 19] + s: 'hello' + prefix: '"' + implicitly_concatenated_parts: None + ] + nl: True + Expr: [18, 0] - [18, 19] + value: + Tuple: [18, 0] - [18, 19] + elts: [ + BinOp: [18, 0] - [18, 10] + left: + Name: [18, 0] - [18, 5] + variable: Variable('pront', None) + ctx: Load + op: RShift + right: + Num: [18, 9] - [18, 10] + n: 9 + text: '9' + Str: [18, 12] - [18, 19] + s: 'world' + prefix: '"' + implicitly_concatenated_parts: None + ] + ctx: Load + Expr: [20, 0] - [20, 10] + value: + Await: [20, 0] - [20, 10] + value: + List: [20, 6] - [20, 10] + elts: [ + Num: [20, 7] - [20, 9] + n: 10 + text: '10' + ] + ctx: Load + ] diff --git a/python/extractor/tests/parser/soft_keywords_new.py b/python/extractor/tests/parser/soft_keywords_new.py new file mode 100644 index 000000000000..9e7818682c38 --- /dev/null +++ b/python/extractor/tests/parser/soft_keywords_new.py @@ -0,0 +1,20 @@ +match[1] +match[2] = 3 + +match.foo = 4 + +match() + +match[5] : case + + +# match used "properly" +match [6]: + case 7: + pass + + +print >> 8, "hello" # Python 2-style print +pront >> 9, "world" # How this would be interpreted in Python 3 + +await [10] # In Python 2 this would be an indexing operation, but it's more likely to be an await. diff --git a/python/extractor/tsg-python/tsp/grammar.js b/python/extractor/tsg-python/tsp/grammar.js index b0eaaba2a3f3..1618a67dcf59 100644 --- a/python/extractor/tsg-python/tsp/grammar.js +++ b/python/extractor/tsg-python/tsp/grammar.js @@ -36,6 +36,7 @@ module.exports = grammar({ [$.tuple, $.tuple_pattern], [$.list, $.list_pattern], [$.with_item, $._collection_elements], + [$.match_statement, $.primary_expression], ], supertypes: $ => [ @@ -349,7 +350,7 @@ module.exports = grammar({ )) )), - match_statement: $ => seq( + match_statement: $ => prec(-3, seq( 'match', field('subject', choice( @@ -359,7 +360,7 @@ module.exports = grammar({ ), ':', field('cases', $.cases) - ), + )), cases: $ => repeat1($.case_block), diff --git a/python/extractor/tsg-python/tsp/src/grammar.json b/python/extractor/tsg-python/tsp/src/grammar.json index 0599cc6be181..c638cc74297b 100644 --- a/python/extractor/tsg-python/tsp/src/grammar.json +++ b/python/extractor/tsg-python/tsp/src/grammar.json @@ -1407,47 +1407,51 @@ } }, "match_statement": { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "match" - }, - { - "type": "FIELD", - "name": "subject", - "content": { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "expression" - }, - { - "type": "ALIAS", - "content": { + "type": "PREC", + "value": -3, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "match" + }, + { + "type": "FIELD", + "name": "subject", + "content": { + "type": "CHOICE", + "members": [ + { "type": "SYMBOL", - "name": "expression_list" + "name": "expression" }, - "named": true, - "value": "tuple" - } - ] - } - }, - { - "type": "STRING", - "value": ":" - }, - { - "type": "FIELD", - "name": "cases", - "content": { - "type": "SYMBOL", - "name": "cases" + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "expression_list" + }, + "named": true, + "value": "tuple" + } + ] + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "cases", + "content": { + "type": "SYMBOL", + "name": "cases" + } } - } - ] + ] + } }, "cases": { "type": "REPEAT1", @@ -6675,6 +6679,10 @@ [ "with_item", "_collection_elements" + ], + [ + "match_statement", + "primary_expression" ] ], "precedences": [], diff --git a/python/extractor/tsg-python/tsp/src/parser.c b/python/extractor/tsg-python/tsp/src/parser.c index 3e6b497addf3..506a539bea6c 100644 --- a/python/extractor/tsg-python/tsp/src/parser.c +++ b/python/extractor/tsg-python/tsp/src/parser.c @@ -5,7 +5,7 @@ #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #endif -#define LANGUAGE_VERSION 13 +#define LANGUAGE_VERSION 14 #define STATE_COUNT 1479 #define LARGE_STATE_COUNT 149 #define SYMBOL_COUNT 282 @@ -2990,761 +2990,2295 @@ static const uint16_t ts_non_terminal_alias_map[] = { 0, }; +static const TSStateId ts_primary_state_ids[STATE_COUNT] = { + [0] = 0, + [1] = 1, + [2] = 2, + [3] = 3, + [4] = 4, + [5] = 5, + [6] = 6, + [7] = 7, + [8] = 8, + [9] = 9, + [10] = 10, + [11] = 11, + [12] = 12, + [13] = 13, + [14] = 14, + [15] = 15, + [16] = 16, + [17] = 17, + [18] = 18, + [19] = 19, + [20] = 20, + [21] = 21, + [22] = 22, + [23] = 23, + [24] = 24, + [25] = 25, + [26] = 26, + [27] = 27, + [28] = 28, + [29] = 29, + [30] = 27, + [31] = 21, + [32] = 32, + [33] = 3, + [34] = 4, + [35] = 5, + [36] = 6, + [37] = 7, + [38] = 8, + [39] = 9, + [40] = 10, + [41] = 11, + [42] = 12, + [43] = 13, + [44] = 14, + [45] = 15, + [46] = 16, + [47] = 17, + [48] = 18, + [49] = 19, + [50] = 20, + [51] = 22, + [52] = 23, + [53] = 24, + [54] = 25, + [55] = 26, + [56] = 2, + [57] = 28, + [58] = 29, + [59] = 32, + [60] = 60, + [61] = 61, + [62] = 60, + [63] = 63, + [64] = 60, + [65] = 63, + [66] = 66, + [67] = 66, + [68] = 68, + [69] = 69, + [70] = 70, + [71] = 71, + [72] = 72, + [73] = 73, + [74] = 74, + [75] = 75, + [76] = 76, + [77] = 77, + [78] = 78, + [79] = 79, + [80] = 80, + [81] = 81, + [82] = 71, + [83] = 74, + [84] = 76, + [85] = 78, + [86] = 81, + [87] = 87, + [88] = 87, + [89] = 89, + [90] = 90, + [91] = 89, + [92] = 92, + [93] = 93, + [94] = 94, + [95] = 95, + [96] = 90, + [97] = 97, + [98] = 98, + [99] = 99, + [100] = 100, + [101] = 101, + [102] = 92, + [103] = 93, + [104] = 104, + [105] = 94, + [106] = 106, + [107] = 107, + [108] = 95, + [109] = 97, + [110] = 110, + [111] = 69, + [112] = 98, + [113] = 70, + [114] = 99, + [115] = 73, + [116] = 100, + [117] = 75, + [118] = 101, + [119] = 77, + [120] = 79, + [121] = 104, + [122] = 80, + [123] = 106, + [124] = 107, + [125] = 68, + [126] = 110, + [127] = 127, + [128] = 127, + [129] = 129, + [130] = 129, + [131] = 127, + [132] = 129, + [133] = 133, + [134] = 134, + [135] = 135, + [136] = 136, + [137] = 136, + [138] = 138, + [139] = 138, + [140] = 140, + [141] = 141, + [142] = 136, + [143] = 136, + [144] = 134, + [145] = 138, + [146] = 146, + [147] = 138, + [148] = 146, + [149] = 149, + [150] = 150, + [151] = 151, + [152] = 152, + [153] = 153, + [154] = 153, + [155] = 155, + [156] = 156, + [157] = 157, + [158] = 157, + [159] = 157, + [160] = 160, + [161] = 161, + [162] = 162, + [163] = 163, + [164] = 164, + [165] = 164, + [166] = 164, + [167] = 167, + [168] = 168, + [169] = 169, + [170] = 170, + [171] = 171, + [172] = 170, + [173] = 170, + [174] = 174, + [175] = 171, + [176] = 176, + [177] = 177, + [178] = 152, + [179] = 179, + [180] = 180, + [181] = 181, + [182] = 180, + [183] = 183, + [184] = 162, + [185] = 161, + [186] = 186, + [187] = 187, + [188] = 188, + [189] = 189, + [190] = 190, + [191] = 186, + [192] = 187, + [193] = 188, + [194] = 194, + [195] = 195, + [196] = 183, + [197] = 181, + [198] = 189, + [199] = 190, + [200] = 200, + [201] = 181, + [202] = 180, + [203] = 163, + [204] = 180, + [205] = 189, + [206] = 190, + [207] = 186, + [208] = 187, + [209] = 188, + [210] = 181, + [211] = 211, + [212] = 212, + [213] = 213, + [214] = 214, + [215] = 215, + [216] = 216, + [217] = 217, + [218] = 218, + [219] = 219, + [220] = 214, + [221] = 221, + [222] = 214, + [223] = 223, + [224] = 224, + [225] = 225, + [226] = 226, + [227] = 223, + [228] = 228, + [229] = 229, + [230] = 230, + [231] = 229, + [232] = 232, + [233] = 226, + [234] = 232, + [235] = 235, + [236] = 230, + [237] = 228, + [238] = 238, + [239] = 239, + [240] = 240, + [241] = 239, + [242] = 242, + [243] = 243, + [244] = 240, + [245] = 243, + [246] = 238, + [247] = 243, + [248] = 242, + [249] = 238, + [250] = 242, + [251] = 251, + [252] = 252, + [253] = 253, + [254] = 251, + [255] = 255, + [256] = 256, + [257] = 257, + [258] = 258, + [259] = 259, + [260] = 260, + [261] = 261, + [262] = 262, + [263] = 263, + [264] = 264, + [265] = 265, + [266] = 266, + [267] = 267, + [268] = 268, + [269] = 253, + [270] = 255, + [271] = 268, + [272] = 263, + [273] = 273, + [274] = 260, + [275] = 252, + [276] = 276, + [277] = 266, + [278] = 278, + [279] = 262, + [280] = 280, + [281] = 264, + [282] = 267, + [283] = 261, + [284] = 257, + [285] = 276, + [286] = 259, + [287] = 287, + [288] = 288, + [289] = 289, + [290] = 290, + [291] = 291, + [292] = 292, + [293] = 293, + [294] = 294, + [295] = 295, + [296] = 296, + [297] = 297, + [298] = 298, + [299] = 299, + [300] = 300, + [301] = 301, + [302] = 302, + [303] = 291, + [304] = 304, + [305] = 298, + [306] = 306, + [307] = 307, + [308] = 292, + [309] = 309, + [310] = 310, + [311] = 311, + [312] = 288, + [313] = 313, + [314] = 219, + [315] = 315, + [316] = 316, + [317] = 317, + [318] = 217, + [319] = 319, + [320] = 320, + [321] = 321, + [322] = 322, + [323] = 323, + [324] = 324, + [325] = 325, + [326] = 326, + [327] = 327, + [328] = 328, + [329] = 329, + [330] = 330, + [331] = 331, + [332] = 315, + [333] = 320, + [334] = 321, + [335] = 322, + [336] = 323, + [337] = 324, + [338] = 325, + [339] = 326, + [340] = 327, + [341] = 328, + [342] = 329, + [343] = 313, + [344] = 319, + [345] = 345, + [346] = 346, + [347] = 347, + [348] = 348, + [349] = 349, + [350] = 350, + [351] = 351, + [352] = 352, + [353] = 353, + [354] = 354, + [355] = 355, + [356] = 356, + [357] = 357, + [358] = 358, + [359] = 359, + [360] = 360, + [361] = 361, + [362] = 362, + [363] = 363, + [364] = 364, + [365] = 365, + [366] = 366, + [367] = 367, + [368] = 368, + [369] = 369, + [370] = 370, + [371] = 371, + [372] = 372, + [373] = 373, + [374] = 374, + [375] = 375, + [376] = 376, + [377] = 377, + [378] = 378, + [379] = 379, + [380] = 359, + [381] = 363, + [382] = 364, + [383] = 372, + [384] = 373, + [385] = 385, + [386] = 349, + [387] = 378, + [388] = 388, + [389] = 389, + [390] = 390, + [391] = 347, + [392] = 350, + [393] = 355, + [394] = 388, + [395] = 357, + [396] = 360, + [397] = 361, + [398] = 398, + [399] = 399, + [400] = 365, + [401] = 366, + [402] = 379, + [403] = 403, + [404] = 371, + [405] = 405, + [406] = 406, + [407] = 390, + [408] = 408, + [409] = 378, + [410] = 359, + [411] = 364, + [412] = 372, + [413] = 373, + [414] = 346, + [415] = 388, + [416] = 378, + [417] = 359, + [418] = 364, + [419] = 372, + [420] = 373, + [421] = 346, + [422] = 388, + [423] = 353, + [424] = 368, + [425] = 425, + [426] = 426, + [427] = 427, + [428] = 425, + [429] = 429, + [430] = 430, + [431] = 431, + [432] = 368, + [433] = 433, + [434] = 346, + [435] = 368, + [436] = 370, + [437] = 370, + [438] = 370, + [439] = 389, + [440] = 375, + [441] = 406, + [442] = 348, + [443] = 356, + [444] = 362, + [445] = 445, + [446] = 446, + [447] = 447, + [448] = 447, + [449] = 449, + [450] = 449, + [451] = 451, + [452] = 452, + [453] = 453, + [454] = 451, + [455] = 446, + [456] = 452, + [457] = 453, + [458] = 458, + [459] = 459, + [460] = 460, + [461] = 461, + [462] = 462, + [463] = 463, + [464] = 464, + [465] = 465, + [466] = 466, + [467] = 467, + [468] = 468, + [469] = 469, + [470] = 470, + [471] = 471, + [472] = 472, + [473] = 473, + [474] = 474, + [475] = 475, + [476] = 476, + [477] = 477, + [478] = 478, + [479] = 462, + [480] = 472, + [481] = 481, + [482] = 482, + [483] = 483, + [484] = 484, + [485] = 485, + [486] = 486, + [487] = 487, + [488] = 488, + [489] = 489, + [490] = 490, + [491] = 491, + [492] = 492, + [493] = 493, + [494] = 494, + [495] = 495, + [496] = 459, + [497] = 497, + [498] = 465, + [499] = 466, + [500] = 467, + [501] = 469, + [502] = 476, + [503] = 503, + [504] = 489, + [505] = 497, + [506] = 503, + [507] = 478, + [508] = 508, + [509] = 458, + [510] = 510, + [511] = 481, + [512] = 512, + [513] = 513, + [514] = 514, + [515] = 508, + [516] = 482, + [517] = 517, + [518] = 518, + [519] = 519, + [520] = 520, + [521] = 521, + [522] = 510, + [523] = 483, + [524] = 524, + [525] = 525, + [526] = 512, + [527] = 468, + [528] = 513, + [529] = 514, + [530] = 463, + [531] = 484, + [532] = 460, + [533] = 486, + [534] = 517, + [535] = 518, + [536] = 461, + [537] = 474, + [538] = 519, + [539] = 520, + [540] = 521, + [541] = 487, + [542] = 488, + [543] = 543, + [544] = 475, + [545] = 490, + [546] = 470, + [547] = 524, + [548] = 525, + [549] = 477, + [550] = 464, + [551] = 491, + [552] = 492, + [553] = 493, + [554] = 494, + [555] = 495, + [556] = 471, + [557] = 557, + [558] = 485, + [559] = 559, + [560] = 560, + [561] = 561, + [562] = 560, + [563] = 563, + [564] = 561, + [565] = 565, + [566] = 566, + [567] = 567, + [568] = 568, + [569] = 569, + [570] = 570, + [571] = 571, + [572] = 572, + [573] = 573, + [574] = 574, + [575] = 575, + [576] = 576, + [577] = 577, + [578] = 578, + [579] = 579, + [580] = 580, + [581] = 581, + [582] = 582, + [583] = 583, + [584] = 584, + [585] = 585, + [586] = 586, + [587] = 587, + [588] = 588, + [589] = 589, + [590] = 590, + [591] = 591, + [592] = 592, + [593] = 593, + [594] = 594, + [595] = 590, + [596] = 596, + [597] = 597, + [598] = 598, + [599] = 599, + [600] = 600, + [601] = 601, + [602] = 602, + [603] = 603, + [604] = 604, + [605] = 605, + [606] = 606, + [607] = 607, + [608] = 608, + [609] = 606, + [610] = 607, + [611] = 611, + [612] = 612, + [613] = 613, + [614] = 614, + [615] = 615, + [616] = 616, + [617] = 607, + [618] = 618, + [619] = 607, + [620] = 608, + [621] = 611, + [622] = 612, + [623] = 613, + [624] = 614, + [625] = 615, + [626] = 616, + [627] = 627, + [628] = 628, + [629] = 629, + [630] = 618, + [631] = 629, + [632] = 627, + [633] = 628, + [634] = 634, + [635] = 635, + [636] = 636, + [637] = 637, + [638] = 638, + [639] = 639, + [640] = 640, + [641] = 641, + [642] = 642, + [643] = 566, + [644] = 644, + [645] = 645, + [646] = 646, + [647] = 569, + [648] = 648, + [649] = 649, + [650] = 645, + [651] = 646, + [652] = 646, + [653] = 644, + [654] = 642, + [655] = 635, + [656] = 656, + [657] = 657, + [658] = 658, + [659] = 642, + [660] = 638, + [661] = 635, + [662] = 636, + [663] = 637, + [664] = 638, + [665] = 639, + [666] = 640, + [667] = 641, + [668] = 642, + [669] = 636, + [670] = 645, + [671] = 657, + [672] = 646, + [673] = 640, + [674] = 658, + [675] = 644, + [676] = 644, + [677] = 639, + [678] = 645, + [679] = 641, + [680] = 635, + [681] = 636, + [682] = 637, + [683] = 638, + [684] = 639, + [685] = 640, + [686] = 641, + [687] = 637, + [688] = 566, + [689] = 590, + [690] = 634, + [691] = 656, + [692] = 569, + [693] = 565, + [694] = 612, + [695] = 572, + [696] = 606, + [697] = 627, + [698] = 590, + [699] = 565, + [700] = 570, + [701] = 628, + [702] = 614, + [703] = 611, + [704] = 618, + [705] = 615, + [706] = 613, + [707] = 616, + [708] = 608, + [709] = 629, + [710] = 710, + [711] = 608, + [712] = 712, + [713] = 606, + [714] = 330, + [715] = 657, + [716] = 716, + [717] = 570, + [718] = 615, + [719] = 627, + [720] = 618, + [721] = 628, + [722] = 431, + [723] = 354, + [724] = 572, + [725] = 331, + [726] = 726, + [727] = 629, + [728] = 377, + [729] = 611, + [730] = 616, + [731] = 612, + [732] = 403, + [733] = 613, + [734] = 614, + [735] = 658, + [736] = 581, + [737] = 573, + [738] = 604, + [739] = 575, + [740] = 577, + [741] = 431, + [742] = 403, + [743] = 354, + [744] = 656, + [745] = 634, + [746] = 588, + [747] = 593, + [748] = 580, + [749] = 582, + [750] = 591, + [751] = 592, + [752] = 598, + [753] = 596, + [754] = 597, + [755] = 605, + [756] = 599, + [757] = 601, + [758] = 602, + [759] = 603, + [760] = 594, + [761] = 574, + [762] = 587, + [763] = 578, + [764] = 586, + [765] = 576, + [766] = 583, + [767] = 600, + [768] = 579, + [769] = 657, + [770] = 658, + [771] = 584, + [772] = 585, + [773] = 589, + [774] = 602, + [775] = 587, + [776] = 578, + [777] = 579, + [778] = 584, + [779] = 585, + [780] = 573, + [781] = 604, + [782] = 575, + [783] = 577, + [784] = 217, + [785] = 580, + [786] = 582, + [787] = 591, + [788] = 592, + [789] = 596, + [790] = 597, + [791] = 605, + [792] = 601, + [793] = 588, + [794] = 712, + [795] = 710, + [796] = 589, + [797] = 598, + [798] = 599, + [799] = 593, + [800] = 594, + [801] = 574, + [802] = 586, + [803] = 576, + [804] = 583, + [805] = 600, + [806] = 219, + [807] = 581, + [808] = 603, + [809] = 809, + [810] = 809, + [811] = 811, + [812] = 812, + [813] = 813, + [814] = 814, + [815] = 815, + [816] = 816, + [817] = 817, + [818] = 818, + [819] = 819, + [820] = 820, + [821] = 821, + [822] = 822, + [823] = 823, + [824] = 824, + [825] = 825, + [826] = 826, + [827] = 827, + [828] = 828, + [829] = 829, + [830] = 828, + [831] = 829, + [832] = 832, + [833] = 833, + [834] = 834, + [835] = 829, + [836] = 836, + [837] = 828, + [838] = 838, + [839] = 839, + [840] = 840, + [841] = 829, + [842] = 842, + [843] = 828, + [844] = 844, + [845] = 845, + [846] = 846, + [847] = 847, + [848] = 846, + [849] = 846, + [850] = 846, + [851] = 851, + [852] = 852, + [853] = 853, + [854] = 854, + [855] = 855, + [856] = 856, + [857] = 856, + [858] = 858, + [859] = 858, + [860] = 860, + [861] = 861, + [862] = 861, + [863] = 863, + [864] = 864, + [865] = 865, + [866] = 866, + [867] = 867, + [868] = 867, + [869] = 869, + [870] = 870, + [871] = 871, + [872] = 872, + [873] = 873, + [874] = 874, + [875] = 871, + [876] = 876, + [877] = 872, + [878] = 873, + [879] = 879, + [880] = 866, + [881] = 874, + [882] = 882, + [883] = 883, + [884] = 884, + [885] = 876, + [886] = 886, + [887] = 879, + [888] = 867, + [889] = 889, + [890] = 889, + [891] = 891, + [892] = 891, + [893] = 893, + [894] = 894, + [895] = 895, + [896] = 896, + [897] = 897, + [898] = 898, + [899] = 899, + [900] = 894, + [901] = 895, + [902] = 902, + [903] = 891, + [904] = 889, + [905] = 894, + [906] = 895, + [907] = 891, + [908] = 908, + [909] = 889, + [910] = 893, + [911] = 893, + [912] = 912, + [913] = 913, + [914] = 914, + [915] = 915, + [916] = 916, + [917] = 917, + [918] = 918, + [919] = 919, + [920] = 920, + [921] = 921, + [922] = 922, + [923] = 923, + [924] = 924, + [925] = 925, + [926] = 926, + [927] = 860, + [928] = 928, + [929] = 929, + [930] = 930, + [931] = 931, + [932] = 932, + [933] = 933, + [934] = 934, + [935] = 935, + [936] = 936, + [937] = 937, + [938] = 938, + [939] = 871, + [940] = 863, + [941] = 941, + [942] = 942, + [943] = 943, + [944] = 944, + [945] = 945, + [946] = 872, + [947] = 947, + [948] = 948, + [949] = 949, + [950] = 950, + [951] = 951, + [952] = 879, + [953] = 953, + [954] = 954, + [955] = 955, + [956] = 956, + [957] = 932, + [958] = 873, + [959] = 876, + [960] = 908, + [961] = 961, + [962] = 962, + [963] = 963, + [964] = 964, + [965] = 965, + [966] = 866, + [967] = 874, + [968] = 968, + [969] = 969, + [970] = 866, + [971] = 874, + [972] = 972, + [973] = 973, + [974] = 974, + [975] = 975, + [976] = 876, + [977] = 977, + [978] = 898, + [979] = 979, + [980] = 980, + [981] = 981, + [982] = 863, + [983] = 879, + [984] = 984, + [985] = 985, + [986] = 986, + [987] = 987, + [988] = 988, + [989] = 989, + [990] = 990, + [991] = 991, + [992] = 973, + [993] = 993, + [994] = 994, + [995] = 995, + [996] = 990, + [997] = 997, + [998] = 902, + [999] = 999, + [1000] = 1000, + [1001] = 871, + [1002] = 975, + [1003] = 860, + [1004] = 1004, + [1005] = 1005, + [1006] = 872, + [1007] = 873, + [1008] = 870, + [1009] = 1009, + [1010] = 990, + [1011] = 1011, + [1012] = 1012, + [1013] = 1013, + [1014] = 1014, + [1015] = 1015, + [1016] = 1016, + [1017] = 1017, + [1018] = 1018, + [1019] = 1019, + [1020] = 1020, + [1021] = 1021, + [1022] = 1014, + [1023] = 1023, + [1024] = 1024, + [1025] = 995, + [1026] = 1026, + [1027] = 1027, + [1028] = 1012, + [1029] = 865, + [1030] = 1011, + [1031] = 1031, + [1032] = 1032, + [1033] = 1033, + [1034] = 1032, + [1035] = 1035, + [1036] = 1036, + [1037] = 1037, + [1038] = 1038, + [1039] = 1039, + [1040] = 1017, + [1041] = 1041, + [1042] = 1042, + [1043] = 1043, + [1044] = 1044, + [1045] = 1039, + [1046] = 1046, + [1047] = 1046, + [1048] = 1048, + [1049] = 1049, + [1050] = 1050, + [1051] = 1051, + [1052] = 1052, + [1053] = 1053, + [1054] = 1054, + [1055] = 1055, + [1056] = 1056, + [1057] = 1057, + [1058] = 1058, + [1059] = 1059, + [1060] = 1060, + [1061] = 1061, + [1062] = 882, + [1063] = 984, + [1064] = 1064, + [1065] = 933, + [1066] = 1066, + [1067] = 1060, + [1068] = 1068, + [1069] = 1069, + [1070] = 1070, + [1071] = 1071, + [1072] = 899, + [1073] = 1073, + [1074] = 1074, + [1075] = 925, + [1076] = 1076, + [1077] = 1053, + [1078] = 1078, + [1079] = 936, + [1080] = 1080, + [1081] = 1081, + [1082] = 1082, + [1083] = 1083, + [1084] = 1084, + [1085] = 1085, + [1086] = 1086, + [1087] = 1087, + [1088] = 1088, + [1089] = 1089, + [1090] = 1090, + [1091] = 1088, + [1092] = 1092, + [1093] = 1093, + [1094] = 1094, + [1095] = 1095, + [1096] = 1096, + [1097] = 1097, + [1098] = 1098, + [1099] = 1099, + [1100] = 1100, + [1101] = 886, + [1102] = 1102, + [1103] = 1103, + [1104] = 1104, + [1105] = 1086, + [1106] = 1087, + [1107] = 1107, + [1108] = 1108, + [1109] = 1109, + [1110] = 1055, + [1111] = 1111, + [1112] = 1112, + [1113] = 1113, + [1114] = 1114, + [1115] = 1115, + [1116] = 1116, + [1117] = 1117, + [1118] = 1118, + [1119] = 1119, + [1120] = 1120, + [1121] = 1121, + [1122] = 1122, + [1123] = 1123, + [1124] = 1124, + [1125] = 1090, + [1126] = 1126, + [1127] = 1127, + [1128] = 1005, + [1129] = 1049, + [1130] = 1130, + [1131] = 1131, + [1132] = 1090, + [1133] = 1133, + [1134] = 1089, + [1135] = 1096, + [1136] = 1136, + [1137] = 1074, + [1138] = 1138, + [1139] = 1139, + [1140] = 1140, + [1141] = 1141, + [1142] = 1115, + [1143] = 1085, + [1144] = 1144, + [1145] = 1130, + [1146] = 1100, + [1147] = 1090, + [1148] = 1140, + [1149] = 1149, + [1150] = 1050, + [1151] = 1151, + [1152] = 1152, + [1153] = 1153, + [1154] = 1154, + [1155] = 1155, + [1156] = 1156, + [1157] = 1133, + [1158] = 1158, + [1159] = 1159, + [1160] = 1160, + [1161] = 1161, + [1162] = 1162, + [1163] = 1117, + [1164] = 1107, + [1165] = 1165, + [1166] = 1166, + [1167] = 1167, + [1168] = 1136, + [1169] = 1169, + [1170] = 1155, + [1171] = 1171, + [1172] = 1172, + [1173] = 1173, + [1174] = 1174, + [1175] = 1023, + [1176] = 1176, + [1177] = 1177, + [1178] = 1178, + [1179] = 1179, + [1180] = 1036, + [1181] = 1181, + [1182] = 570, + [1183] = 1183, + [1184] = 1184, + [1185] = 1124, + [1186] = 1186, + [1187] = 1187, + [1188] = 1188, + [1189] = 1189, + [1190] = 1190, + [1191] = 1191, + [1192] = 1192, + [1193] = 572, + [1194] = 1126, + [1195] = 1195, + [1196] = 1196, + [1197] = 1197, + [1198] = 1198, + [1199] = 1199, + [1200] = 1200, + [1201] = 1201, + [1202] = 1202, + [1203] = 1165, + [1204] = 1204, + [1205] = 1205, + [1206] = 1206, + [1207] = 1207, + [1208] = 1208, + [1209] = 1209, + [1210] = 1210, + [1211] = 1211, + [1212] = 1212, + [1213] = 1213, + [1214] = 1214, + [1215] = 1215, + [1216] = 1216, + [1217] = 1042, + [1218] = 1218, + [1219] = 1219, + [1220] = 1158, + [1221] = 1156, + [1222] = 1222, + [1223] = 1223, + [1224] = 1224, + [1225] = 1189, + [1226] = 1226, + [1227] = 1227, + [1228] = 1158, + [1229] = 1188, + [1230] = 1190, + [1231] = 1231, + [1232] = 1232, + [1233] = 1159, + [1234] = 1202, + [1235] = 1235, + [1236] = 1187, + [1237] = 1237, + [1238] = 1167, + [1239] = 1169, + [1240] = 1155, + [1241] = 1241, + [1242] = 1156, + [1243] = 1227, + [1244] = 1244, + [1245] = 1167, + [1246] = 1246, + [1247] = 1224, + [1248] = 1195, + [1249] = 1171, + [1250] = 1250, + [1251] = 1227, + [1252] = 1252, + [1253] = 1253, + [1254] = 1254, + [1255] = 1255, + [1256] = 1256, + [1257] = 1257, + [1258] = 1114, + [1259] = 1041, + [1260] = 1198, + [1261] = 1224, + [1262] = 1250, + [1263] = 1188, + [1264] = 1264, + [1265] = 1190, + [1266] = 1231, + [1267] = 1267, + [1268] = 1268, + [1269] = 1269, + [1270] = 1270, + [1271] = 1176, + [1272] = 1272, + [1273] = 1169, + [1274] = 1274, + [1275] = 1159, + [1276] = 1202, + [1277] = 1277, + [1278] = 1177, + [1279] = 1172, + [1280] = 1187, + [1281] = 1281, + [1282] = 1282, + [1283] = 1283, + [1284] = 1283, + [1285] = 1285, + [1286] = 252, + [1287] = 1287, + [1288] = 1288, + [1289] = 1289, + [1290] = 1290, + [1291] = 1291, + [1292] = 1292, + [1293] = 1293, + [1294] = 1294, + [1295] = 1255, + [1296] = 1296, + [1297] = 1297, + [1298] = 1298, + [1299] = 1299, + [1300] = 1300, + [1301] = 1301, + [1302] = 1302, + [1303] = 1303, + [1304] = 1304, + [1305] = 1305, + [1306] = 1306, + [1307] = 1307, + [1308] = 1308, + [1309] = 1309, + [1310] = 1310, + [1311] = 261, + [1312] = 1312, + [1313] = 1313, + [1314] = 1314, + [1315] = 1000, + [1316] = 1316, + [1317] = 1317, + [1318] = 1318, + [1319] = 1319, + [1320] = 1320, + [1321] = 262, + [1322] = 1268, + [1323] = 1323, + [1324] = 1324, + [1325] = 1325, + [1326] = 1244, + [1327] = 1327, + [1328] = 1288, + [1329] = 1302, + [1330] = 1299, + [1331] = 1324, + [1332] = 1332, + [1333] = 264, + [1334] = 1334, + [1335] = 1335, + [1336] = 1336, + [1337] = 1337, + [1338] = 1338, + [1339] = 1339, + [1340] = 1340, + [1341] = 1341, + [1342] = 1342, + [1343] = 1343, + [1344] = 1344, + [1345] = 1345, + [1346] = 1289, + [1347] = 1347, + [1348] = 1303, + [1349] = 260, + [1350] = 1350, + [1351] = 1351, + [1352] = 1352, + [1353] = 1353, + [1354] = 1354, + [1355] = 1355, + [1356] = 1356, + [1357] = 1357, + [1358] = 1358, + [1359] = 1359, + [1360] = 1360, + [1361] = 1361, + [1362] = 1362, + [1363] = 1363, + [1364] = 1364, + [1365] = 1365, + [1366] = 1366, + [1367] = 1360, + [1368] = 1355, + [1369] = 1369, + [1370] = 1356, + [1371] = 1364, + [1372] = 1372, + [1373] = 1359, + [1374] = 1363, + [1375] = 1375, + [1376] = 1375, + [1377] = 1377, + [1378] = 1378, + [1379] = 1379, + [1380] = 1359, + [1381] = 1381, + [1382] = 1382, + [1383] = 1383, + [1384] = 1384, + [1385] = 1385, + [1386] = 1386, + [1387] = 1387, + [1388] = 1388, + [1389] = 1375, + [1390] = 1390, + [1391] = 1391, + [1392] = 1383, + [1393] = 1356, + [1394] = 1361, + [1395] = 1395, + [1396] = 1361, + [1397] = 1397, + [1398] = 1398, + [1399] = 1399, + [1400] = 1400, + [1401] = 1355, + [1402] = 1385, + [1403] = 1403, + [1404] = 1404, + [1405] = 1405, + [1406] = 1406, + [1407] = 1362, + [1408] = 1408, + [1409] = 1405, + [1410] = 1410, + [1411] = 1411, + [1412] = 1412, + [1413] = 1413, + [1414] = 1365, + [1415] = 1415, + [1416] = 1404, + [1417] = 1417, + [1418] = 1418, + [1419] = 1358, + [1420] = 1378, + [1421] = 1357, + [1422] = 1354, + [1423] = 1423, + [1424] = 1413, + [1425] = 1425, + [1426] = 1426, + [1427] = 1427, + [1428] = 1382, + [1429] = 1429, + [1430] = 1391, + [1431] = 1410, + [1432] = 1432, + [1433] = 1412, + [1434] = 1434, + [1435] = 1435, + [1436] = 1436, + [1437] = 1437, + [1438] = 1403, + [1439] = 1366, + [1440] = 1440, + [1441] = 1432, + [1442] = 1442, + [1443] = 1426, + [1444] = 1434, + [1445] = 1363, + [1446] = 1446, + [1447] = 1408, + [1448] = 1362, + [1449] = 1423, + [1450] = 1450, + [1451] = 1361, + [1452] = 1452, + [1453] = 1400, + [1454] = 1454, + [1455] = 1366, + [1456] = 1378, + [1457] = 1360, + [1458] = 1458, + [1459] = 1459, + [1460] = 1460, + [1461] = 1461, + [1462] = 1426, + [1463] = 1381, + [1464] = 1458, + [1465] = 1465, + [1466] = 1440, + [1467] = 1356, + [1468] = 1364, + [1469] = 1379, + [1470] = 1418, + [1471] = 1458, + [1472] = 1437, + [1473] = 1459, + [1474] = 1450, + [1475] = 1429, + [1476] = 1476, + [1477] = 1477, + [1478] = 1478, +}; + static inline bool sym_identifier_character_set_1(int32_t c) { - return (c < 43020 - ? (c < 4096 - ? (c < 2693 - ? (c < 1969 - ? (c < 910 - ? (c < 736 - ? (c < 186 + return (c < 43514 + ? (c < 4193 + ? (c < 2707 + ? (c < 1994 + ? (c < 931 + ? (c < 748 + ? (c < 192 ? (c < 170 ? (c < 'a' ? (c >= 'A' && c <= '_') : c <= 'z') - : (c <= 170 || c == 181)) - : (c <= 186 || (c < 248 - ? (c < 216 - ? (c >= 192 && c <= 214) - : c <= 246) - : (c <= 705 || (c >= 710 && c <= 721))))) - : (c <= 740 || (c < 891 - ? (c < 880 - ? (c < 750 - ? c == 748 - : c <= 750) - : (c <= 884 || (c >= 886 && c <= 887))) - : (c <= 893 || (c < 904 - ? (c < 902 - ? c == 895 - : c <= 902) - : (c <= 906 || c == 908)))))) - : (c <= 929 || (c < 1646 - ? (c < 1369 - ? (c < 1162 - ? (c < 1015 - ? (c >= 931 && c <= 1013) - : c <= 1153) - : (c <= 1327 || (c >= 1329 && c <= 1366))) - : (c <= 1369 || (c < 1519 - ? (c < 1488 - ? (c >= 1376 && c <= 1416) - : c <= 1514) - : (c <= 1522 || (c >= 1568 && c <= 1610))))) - : (c <= 1647 || (c < 1786 - ? (c < 1765 - ? (c < 1749 - ? (c >= 1649 && c <= 1747) - : c <= 1749) - : (c <= 1766 || (c >= 1774 && c <= 1775))) - : (c <= 1788 || (c < 1810 - ? (c < 1808 - ? c == 1791 - : c <= 1808) - : (c <= 1839 || (c >= 1869 && c <= 1957))))))))) - : (c <= 1969 || (c < 2474 + : (c <= 170 || (c < 186 + ? c == 181 + : c <= 186))) + : (c <= 214 || (c < 710 + ? (c < 248 + ? (c >= 216 && c <= 246) + : c <= 705) + : (c <= 721 || (c >= 736 && c <= 740))))) + : (c <= 748 || (c < 895 + ? (c < 886 + ? (c < 880 + ? c == 750 + : c <= 884) + : (c <= 887 || (c >= 891 && c <= 893))) + : (c <= 895 || (c < 908 + ? (c < 904 + ? c == 902 + : c <= 906) + : (c <= 908 || (c >= 910 && c <= 929))))))) + : (c <= 1013 || (c < 1649 + ? (c < 1376 + ? (c < 1329 + ? (c < 1162 + ? (c >= 1015 && c <= 1153) + : c <= 1327) + : (c <= 1366 || c == 1369)) + : (c <= 1416 || (c < 1568 + ? (c < 1519 + ? (c >= 1488 && c <= 1514) + : c <= 1522) + : (c <= 1610 || (c >= 1646 && c <= 1647))))) + : (c <= 1747 || (c < 1791 + ? (c < 1774 + ? (c < 1765 + ? c == 1749 + : c <= 1766) + : (c <= 1775 || (c >= 1786 && c <= 1788))) + : (c <= 1791 || (c < 1869 + ? (c < 1810 + ? c == 1808 + : c <= 1839) + : (c <= 1957 || c == 1969)))))))) + : (c <= 2026 || (c < 2482 ? (c < 2208 - ? (c < 2074 - ? (c < 2042 - ? (c < 2036 - ? (c >= 1994 && c <= 2026) - : c <= 2037) - : (c <= 2042 || (c >= 2048 && c <= 2069))) - : (c <= 2074 || (c < 2112 - ? (c < 2088 - ? c == 2084 - : c <= 2088) - : (c <= 2136 || (c >= 2144 && c <= 2154))))) - : (c <= 2228 || (c < 2392 - ? (c < 2365 - ? (c < 2308 - ? (c >= 2230 && c <= 2247) - : c <= 2361) - : (c <= 2365 || c == 2384)) - : (c <= 2401 || (c < 2447 - ? (c < 2437 - ? (c >= 2417 && c <= 2432) - : c <= 2444) - : (c <= 2448 || (c >= 2451 && c <= 2472))))))) - : (c <= 2480 || (c < 2575 - ? (c < 2524 - ? (c < 2493 - ? (c < 2486 - ? c == 2482 - : c <= 2489) - : (c <= 2493 || c == 2510)) - : (c <= 2525 || (c < 2556 - ? (c < 2544 - ? (c >= 2527 && c <= 2529) - : c <= 2545) - : (c <= 2556 || (c >= 2565 && c <= 2570))))) - : (c <= 2576 || (c < 2616 - ? (c < 2610 - ? (c < 2602 - ? (c >= 2579 && c <= 2600) - : c <= 2608) - : (c <= 2611 || (c >= 2613 && c <= 2614))) - : (c <= 2617 || (c < 2654 - ? (c >= 2649 && c <= 2652) - : (c <= 2654 || (c >= 2674 && c <= 2676))))))))))) - : (c <= 2701 || (c < 3214 - ? (c < 2947 - ? (c < 2821 - ? (c < 2741 - ? (c < 2730 - ? (c < 2707 - ? (c >= 2703 && c <= 2705) - : c <= 2728) - : (c <= 2736 || (c >= 2738 && c <= 2739))) - : (c <= 2745 || (c < 2784 - ? (c < 2768 + ? (c < 2088 + ? (c < 2048 + ? (c < 2042 + ? (c >= 2036 && c <= 2037) + : c <= 2042) + : (c <= 2069 || (c < 2084 + ? c == 2074 + : c <= 2084))) + : (c <= 2088 || (c < 2160 + ? (c < 2144 + ? (c >= 2112 && c <= 2136) + : c <= 2154) + : (c <= 2183 || (c >= 2185 && c <= 2190))))) + : (c <= 2249 || (c < 2417 + ? (c < 2384 + ? (c < 2365 + ? (c >= 2308 && c <= 2361) + : c <= 2365) + : (c <= 2384 || (c >= 2392 && c <= 2401))) + : (c <= 2432 || (c < 2451 + ? (c < 2447 + ? (c >= 2437 && c <= 2444) + : c <= 2448) + : (c <= 2472 || (c >= 2474 && c <= 2480))))))) + : (c <= 2482 || (c < 2579 + ? (c < 2527 + ? (c < 2510 + ? (c < 2493 + ? (c >= 2486 && c <= 2489) + : c <= 2493) + : (c <= 2510 || (c >= 2524 && c <= 2525))) + : (c <= 2529 || (c < 2565 + ? (c < 2556 + ? (c >= 2544 && c <= 2545) + : c <= 2556) + : (c <= 2570 || (c >= 2575 && c <= 2576))))) + : (c <= 2600 || (c < 2649 + ? (c < 2613 + ? (c < 2610 + ? (c >= 2602 && c <= 2608) + : c <= 2611) + : (c <= 2614 || (c >= 2616 && c <= 2617))) + : (c <= 2652 || (c < 2693 + ? (c < 2674 + ? c == 2654 + : c <= 2676) + : (c <= 2701 || (c >= 2703 && c <= 2705))))))))))) + : (c <= 2728 || (c < 3242 + ? (c < 2962 + ? (c < 2858 + ? (c < 2784 + ? (c < 2741 + ? (c < 2738 + ? (c >= 2730 && c <= 2736) + : c <= 2739) + : (c <= 2745 || (c < 2768 ? c == 2749 - : c <= 2768) - : (c <= 2785 || c == 2809)))) - : (c <= 2828 || (c < 2869 - ? (c < 2858 - ? (c < 2835 - ? (c >= 2831 && c <= 2832) - : c <= 2856) - : (c <= 2864 || (c >= 2866 && c <= 2867))) - : (c <= 2873 || (c < 2911 - ? (c < 2908 - ? c == 2877 - : c <= 2909) - : (c <= 2913 || c == 2929)))))) - : (c <= 2947 || (c < 3024 - ? (c < 2972 - ? (c < 2962 - ? (c < 2958 - ? (c >= 2949 && c <= 2954) - : c <= 2960) - : (c <= 2965 || (c >= 2969 && c <= 2970))) - : (c <= 2972 || (c < 2984 - ? (c < 2979 - ? (c >= 2974 && c <= 2975) - : c <= 2980) - : (c <= 2986 || (c >= 2990 && c <= 3001))))) - : (c <= 3024 || (c < 3133 - ? (c < 3090 - ? (c < 3086 - ? (c >= 3077 && c <= 3084) - : c <= 3088) - : (c <= 3112 || (c >= 3114 && c <= 3129))) - : (c <= 3133 || (c < 3200 - ? (c < 3168 - ? (c >= 3160 && c <= 3162) - : c <= 3169) - : (c <= 3200 || (c >= 3205 && c <= 3212))))))))) - : (c <= 3216 || (c < 3520 - ? (c < 3346 - ? (c < 3294 - ? (c < 3253 - ? (c < 3242 - ? (c >= 3218 && c <= 3240) - : c <= 3251) - : (c <= 3257 || c == 3261)) - : (c <= 3294 || (c < 3332 - ? (c < 3313 + : c <= 2768))) + : (c <= 2785 || (c < 2831 + ? (c < 2821 + ? c == 2809 + : c <= 2828) + : (c <= 2832 || (c >= 2835 && c <= 2856))))) + : (c <= 2864 || (c < 2911 + ? (c < 2877 + ? (c < 2869 + ? (c >= 2866 && c <= 2867) + : c <= 2873) + : (c <= 2877 || (c >= 2908 && c <= 2909))) + : (c <= 2913 || (c < 2949 + ? (c < 2947 + ? c == 2929 + : c <= 2947) + : (c <= 2954 || (c >= 2958 && c <= 2960))))))) + : (c <= 2965 || (c < 3090 + ? (c < 2984 + ? (c < 2974 + ? (c < 2972 + ? (c >= 2969 && c <= 2970) + : c <= 2972) + : (c <= 2975 || (c >= 2979 && c <= 2980))) + : (c <= 2986 || (c < 3077 + ? (c < 3024 + ? (c >= 2990 && c <= 3001) + : c <= 3024) + : (c <= 3084 || (c >= 3086 && c <= 3088))))) + : (c <= 3112 || (c < 3168 + ? (c < 3160 + ? (c < 3133 + ? (c >= 3114 && c <= 3129) + : c <= 3133) + : (c <= 3162 || c == 3165)) + : (c <= 3169 || (c < 3214 + ? (c < 3205 + ? c == 3200 + : c <= 3212) + : (c <= 3216 || (c >= 3218 && c <= 3240))))))))) + : (c <= 3251 || (c < 3648 + ? (c < 3412 + ? (c < 3332 + ? (c < 3293 + ? (c < 3261 + ? (c >= 3253 && c <= 3257) + : c <= 3261) + : (c <= 3294 || (c < 3313 ? (c >= 3296 && c <= 3297) - : c <= 3314) - : (c <= 3340 || (c >= 3342 && c <= 3344))))) - : (c <= 3386 || (c < 3450 - ? (c < 3412 - ? (c < 3406 - ? c == 3389 - : c <= 3406) - : (c <= 3414 || (c >= 3423 && c <= 3425))) - : (c <= 3455 || (c < 3507 - ? (c < 3482 - ? (c >= 3461 && c <= 3478) - : c <= 3505) - : (c <= 3515 || c == 3517)))))) - : (c <= 3526 || (c < 3762 - ? (c < 3716 - ? (c < 3648 - ? (c < 3634 - ? (c >= 3585 && c <= 3632) - : c <= 3634) - : (c <= 3654 || (c >= 3713 && c <= 3714))) - : (c <= 3716 || (c < 3749 - ? (c < 3724 - ? (c >= 3718 && c <= 3722) - : c <= 3747) - : (c <= 3749 || (c >= 3751 && c <= 3760))))) - : (c <= 3762 || (c < 3840 - ? (c < 3782 - ? (c < 3776 - ? c == 3773 - : c <= 3780) - : (c <= 3782 || (c >= 3804 && c <= 3807))) - : (c <= 3840 || (c < 3913 - ? (c >= 3904 && c <= 3911) - : (c <= 3948 || (c >= 3976 && c <= 3980))))))))))))) - : (c <= 4138 || (c < 8025 - ? (c < 5952 - ? (c < 4752 - ? (c < 4295 - ? (c < 4197 - ? (c < 4186 - ? (c < 4176 - ? c == 4159 - : c <= 4181) - : (c <= 4189 || c == 4193)) - : (c <= 4198 || (c < 4238 - ? (c < 4213 - ? (c >= 4206 && c <= 4208) - : c <= 4225) - : (c <= 4238 || (c >= 4256 && c <= 4293))))) - : (c <= 4295 || (c < 4688 - ? (c < 4348 + : c <= 3314))) + : (c <= 3340 || (c < 3389 + ? (c < 3346 + ? (c >= 3342 && c <= 3344) + : c <= 3386) + : (c <= 3389 || c == 3406)))) + : (c <= 3414 || (c < 3507 + ? (c < 3461 + ? (c < 3450 + ? (c >= 3423 && c <= 3425) + : c <= 3455) + : (c <= 3478 || (c >= 3482 && c <= 3505))) + : (c <= 3515 || (c < 3585 + ? (c < 3520 + ? c == 3517 + : c <= 3526) + : (c <= 3632 || c == 3634)))))) + : (c <= 3654 || (c < 3782 + ? (c < 3749 + ? (c < 3718 + ? (c < 3716 + ? (c >= 3713 && c <= 3714) + : c <= 3716) + : (c <= 3722 || (c >= 3724 && c <= 3747))) + : (c <= 3749 || (c < 3773 + ? (c < 3762 + ? (c >= 3751 && c <= 3760) + : c <= 3762) + : (c <= 3773 || (c >= 3776 && c <= 3780))))) + : (c <= 3782 || (c < 3976 + ? (c < 3904 + ? (c < 3840 + ? (c >= 3804 && c <= 3807) + : c <= 3840) + : (c <= 3911 || (c >= 3913 && c <= 3948))) + : (c <= 3980 || (c < 4176 + ? (c < 4159 + ? (c >= 4096 && c <= 4138) + : c <= 4159) + : (c <= 4181 || (c >= 4186 && c <= 4189))))))))))))) + : (c <= 4193 || (c < 8134 + ? (c < 6176 + ? (c < 4808 + ? (c < 4688 + ? (c < 4295 + ? (c < 4213 + ? (c < 4206 + ? (c >= 4197 && c <= 4198) + : c <= 4208) + : (c <= 4225 || (c < 4256 + ? c == 4238 + : c <= 4293))) + : (c <= 4295 || (c < 4348 ? (c < 4304 ? c == 4301 : c <= 4346) - : (c <= 4680 || (c >= 4682 && c <= 4685))) - : (c <= 4694 || (c < 4704 + : (c <= 4680 || (c >= 4682 && c <= 4685))))) + : (c <= 4694 || (c < 4752 + ? (c < 4704 ? (c < 4698 ? c == 4696 : c <= 4701) - : (c <= 4744 || (c >= 4746 && c <= 4749))))))) - : (c <= 4784 || (c < 5024 - ? (c < 4808 - ? (c < 4800 + : (c <= 4744 || (c >= 4746 && c <= 4749))) + : (c <= 4784 || (c < 4800 ? (c < 4792 ? (c >= 4786 && c <= 4789) : c <= 4798) - : (c <= 4800 || (c >= 4802 && c <= 4805))) - : (c <= 4822 || (c < 4888 + : (c <= 4800 || (c >= 4802 && c <= 4805))))))) + : (c <= 4822 || (c < 5792 + ? (c < 5024 + ? (c < 4888 ? (c < 4882 ? (c >= 4824 && c <= 4880) : c <= 4885) - : (c <= 4954 || (c >= 4992 && c <= 5007))))) - : (c <= 5109 || (c < 5792 - ? (c < 5743 + : (c <= 4954 || (c >= 4992 && c <= 5007))) + : (c <= 5109 || (c < 5743 ? (c < 5121 ? (c >= 5112 && c <= 5117) : c <= 5740) - : (c <= 5759 || (c >= 5761 && c <= 5786))) - : (c <= 5866 || (c < 5902 + : (c <= 5759 || (c >= 5761 && c <= 5786))))) + : (c <= 5866 || (c < 5984 + ? (c < 5919 ? (c < 5888 ? (c >= 5870 && c <= 5880) - : c <= 5900) - : (c <= 5905 || (c >= 5920 && c <= 5937))))))))) - : (c <= 5969 || (c < 7043 - ? (c < 6400 - ? (c < 6108 - ? (c < 6016 - ? (c < 5998 - ? (c >= 5984 && c <= 5996) - : c <= 6000) - : (c <= 6067 || c == 6103)) - : (c <= 6108 || (c < 6314 - ? (c < 6272 - ? (c >= 6176 && c <= 6264) - : c <= 6312) - : (c <= 6314 || (c >= 6320 && c <= 6389))))) - : (c <= 6430 || (c < 6656 - ? (c < 6528 - ? (c < 6512 - ? (c >= 6480 && c <= 6509) - : c <= 6516) - : (c <= 6571 || (c >= 6576 && c <= 6601))) - : (c <= 6678 || (c < 6917 - ? (c < 6823 - ? (c >= 6688 && c <= 6740) - : c <= 6823) - : (c <= 6963 || (c >= 6981 && c <= 6987))))))) - : (c <= 7072 || (c < 7406 - ? (c < 7258 - ? (c < 7168 - ? (c < 7098 - ? (c >= 7086 && c <= 7087) - : c <= 7141) - : (c <= 7203 || (c >= 7245 && c <= 7247))) - : (c <= 7293 || (c < 7357 - ? (c < 7312 - ? (c >= 7296 && c <= 7304) - : c <= 7354) - : (c <= 7359 || (c >= 7401 && c <= 7404))))) - : (c <= 7411 || (c < 7960 - ? (c < 7424 - ? (c < 7418 - ? (c >= 7413 && c <= 7414) - : c <= 7418) - : (c <= 7615 || (c >= 7680 && c <= 7957))) - : (c <= 7965 || (c < 8008 - ? (c >= 7968 && c <= 8005) - : (c <= 8013 || (c >= 8016 && c <= 8023))))))))))) - : (c <= 8025 || (c < 11631 - ? (c < 8469 - ? (c < 8150 - ? (c < 8118 - ? (c < 8031 - ? (c < 8029 - ? c == 8027 - : c <= 8029) - : (c <= 8061 || (c >= 8064 && c <= 8116))) - : (c <= 8124 || (c < 8134 - ? (c < 8130 - ? c == 8126 - : c <= 8132) - : (c <= 8140 || (c >= 8144 && c <= 8147))))) - : (c <= 8155 || (c < 8319 - ? (c < 8182 - ? (c < 8178 - ? (c >= 8160 && c <= 8172) - : c <= 8180) - : (c <= 8188 || c == 8305)) - : (c <= 8319 || (c < 8455 - ? (c < 8450 - ? (c >= 8336 && c <= 8348) - : c <= 8450) - : (c <= 8455 || (c >= 8458 && c <= 8467))))))) - : (c <= 8469 || (c < 11264 - ? (c < 8490 - ? (c < 8486 - ? (c < 8484 - ? (c >= 8472 && c <= 8477) - : c <= 8484) - : (c <= 8486 || c == 8488)) - : (c <= 8505 || (c < 8526 - ? (c < 8517 - ? (c >= 8508 && c <= 8511) - : c <= 8521) - : (c <= 8526 || (c >= 8544 && c <= 8584))))) - : (c <= 11310 || (c < 11520 - ? (c < 11499 - ? (c < 11360 - ? (c >= 11312 && c <= 11358) - : c <= 11492) - : (c <= 11502 || (c >= 11506 && c <= 11507))) - : (c <= 11557 || (c < 11565 - ? c == 11559 - : (c <= 11565 || (c >= 11568 && c <= 11623))))))))) - : (c <= 11631 || (c < 12704 - ? (c < 12293 - ? (c < 11704 - ? (c < 11688 - ? (c < 11680 - ? (c >= 11648 && c <= 11670) - : c <= 11686) - : (c <= 11694 || (c >= 11696 && c <= 11702))) - : (c <= 11710 || (c < 11728 - ? (c < 11720 - ? (c >= 11712 && c <= 11718) - : c <= 11726) - : (c <= 11734 || (c >= 11736 && c <= 11742))))) - : (c <= 12295 || (c < 12445 - ? (c < 12344 - ? (c < 12337 - ? (c >= 12321 && c <= 12329) - : c <= 12341) - : (c <= 12348 || (c >= 12353 && c <= 12438))) - : (c <= 12447 || (c < 12549 - ? (c < 12540 + : c <= 5905) + : (c <= 5937 || (c >= 5952 && c <= 5969))) + : (c <= 5996 || (c < 6103 + ? (c < 6016 + ? (c >= 5998 && c <= 6000) + : c <= 6067) + : (c <= 6103 || c == 6108)))))))) + : (c <= 6264 || (c < 7312 + ? (c < 6823 + ? (c < 6512 + ? (c < 6320 + ? (c < 6314 + ? (c >= 6272 && c <= 6312) + : c <= 6314) + : (c <= 6389 || (c < 6480 + ? (c >= 6400 && c <= 6430) + : c <= 6509))) + : (c <= 6516 || (c < 6656 + ? (c < 6576 + ? (c >= 6528 && c <= 6571) + : c <= 6601) + : (c <= 6678 || (c >= 6688 && c <= 6740))))) + : (c <= 6823 || (c < 7098 + ? (c < 7043 + ? (c < 6981 + ? (c >= 6917 && c <= 6963) + : c <= 6988) + : (c <= 7072 || (c >= 7086 && c <= 7087))) + : (c <= 7141 || (c < 7258 + ? (c < 7245 + ? (c >= 7168 && c <= 7203) + : c <= 7247) + : (c <= 7293 || (c >= 7296 && c <= 7304))))))) + : (c <= 7354 || (c < 8008 + ? (c < 7418 + ? (c < 7406 + ? (c < 7401 + ? (c >= 7357 && c <= 7359) + : c <= 7404) + : (c <= 7411 || (c >= 7413 && c <= 7414))) + : (c <= 7418 || (c < 7960 + ? (c < 7680 + ? (c >= 7424 && c <= 7615) + : c <= 7957) + : (c <= 7965 || (c >= 7968 && c <= 8005))))) + : (c <= 8013 || (c < 8031 + ? (c < 8027 + ? (c < 8025 + ? (c >= 8016 && c <= 8023) + : c <= 8025) + : (c <= 8027 || c == 8029)) + : (c <= 8061 || (c < 8126 + ? (c < 8118 + ? (c >= 8064 && c <= 8116) + : c <= 8124) + : (c <= 8126 || (c >= 8130 && c <= 8132))))))))))) + : (c <= 8140 || (c < 12337 + ? (c < 8544 + ? (c < 8458 + ? (c < 8305 + ? (c < 8160 + ? (c < 8150 + ? (c >= 8144 && c <= 8147) + : c <= 8155) + : (c <= 8172 || (c < 8182 + ? (c >= 8178 && c <= 8180) + : c <= 8188))) + : (c <= 8305 || (c < 8450 + ? (c < 8336 + ? c == 8319 + : c <= 8348) + : (c <= 8450 || c == 8455)))) + : (c <= 8467 || (c < 8488 + ? (c < 8484 + ? (c < 8472 + ? c == 8469 + : c <= 8477) + : (c <= 8484 || c == 8486)) + : (c <= 8488 || (c < 8517 + ? (c < 8508 + ? (c >= 8490 && c <= 8505) + : c <= 8511) + : (c <= 8521 || c == 8526)))))) + : (c <= 8584 || (c < 11680 + ? (c < 11559 + ? (c < 11506 + ? (c < 11499 + ? (c >= 11264 && c <= 11492) + : c <= 11502) + : (c <= 11507 || (c >= 11520 && c <= 11557))) + : (c <= 11559 || (c < 11631 + ? (c < 11568 + ? c == 11565 + : c <= 11623) + : (c <= 11631 || (c >= 11648 && c <= 11670))))) + : (c <= 11686 || (c < 11720 + ? (c < 11704 + ? (c < 11696 + ? (c >= 11688 && c <= 11694) + : c <= 11702) + : (c <= 11710 || (c >= 11712 && c <= 11718))) + : (c <= 11726 || (c < 12293 + ? (c < 11736 + ? (c >= 11728 && c <= 11734) + : c <= 11742) + : (c <= 12295 || (c >= 12321 && c <= 12329))))))))) + : (c <= 12341 || (c < 42891 + ? (c < 19968 + ? (c < 12549 + ? (c < 12445 + ? (c < 12353 + ? (c >= 12344 && c <= 12348) + : c <= 12438) + : (c <= 12447 || (c < 12540 ? (c >= 12449 && c <= 12538) - : c <= 12543) - : (c <= 12591 || (c >= 12593 && c <= 12686))))))) - : (c <= 12735 || (c < 42623 - ? (c < 42192 - ? (c < 19968 - ? (c < 13312 - ? (c >= 12784 && c <= 12799) - : c <= 19903) - : (c <= 40956 || (c >= 40960 && c <= 42124))) - : (c <= 42237 || (c < 42538 - ? (c < 42512 - ? (c >= 42240 && c <= 42508) - : c <= 42527) - : (c <= 42539 || (c >= 42560 && c <= 42606))))) - : (c <= 42653 || (c < 42946 - ? (c < 42786 - ? (c < 42775 - ? (c >= 42656 && c <= 42735) - : c <= 42783) - : (c <= 42888 || (c >= 42891 && c <= 42943))) - : (c <= 42954 || (c < 43011 - ? (c >= 42997 && c <= 43009) - : (c <= 43013 || (c >= 43015 && c <= 43018))))))))))))))) - : (c <= 43042 || (c < 70453 - ? (c < 66176 - ? (c < 64112 - ? (c < 43697 - ? (c < 43471 - ? (c < 43261 - ? (c < 43250 - ? (c < 43138 - ? (c >= 43072 && c <= 43123) - : c <= 43187) - : (c <= 43255 || c == 43259)) - : (c <= 43262 || (c < 43360 - ? (c < 43312 - ? (c >= 43274 && c <= 43301) - : c <= 43334) - : (c <= 43388 || (c >= 43396 && c <= 43442))))) - : (c <= 43471 || (c < 43584 - ? (c < 43514 - ? (c < 43494 - ? (c >= 43488 && c <= 43492) - : c <= 43503) - : (c <= 43518 || (c >= 43520 && c <= 43560))) - : (c <= 43586 || (c < 43642 - ? (c < 43616 - ? (c >= 43588 && c <= 43595) - : c <= 43638) - : (c <= 43642 || (c >= 43646 && c <= 43695))))))) - : (c <= 43697 || (c < 43793 - ? (c < 43739 - ? (c < 43712 - ? (c < 43705 - ? (c >= 43701 && c <= 43702) - : c <= 43709) - : (c <= 43712 || c == 43714)) - : (c <= 43741 || (c < 43777 - ? (c < 43762 - ? (c >= 43744 && c <= 43754) - : c <= 43764) - : (c <= 43782 || (c >= 43785 && c <= 43790))))) - : (c <= 43798 || (c < 43888 - ? (c < 43824 - ? (c < 43816 - ? (c >= 43808 && c <= 43814) - : c <= 43822) - : (c <= 43866 || (c >= 43868 && c <= 43881))) - : (c <= 44002 || (c < 55243 - ? (c < 55216 - ? (c >= 44032 && c <= 55203) - : c <= 55238) - : (c <= 55291 || (c >= 63744 && c <= 64109))))))))) - : (c <= 64217 || (c < 65147 - ? (c < 64326 - ? (c < 64298 - ? (c < 64285 - ? (c < 64275 - ? (c >= 64256 && c <= 64262) - : c <= 64279) - : (c <= 64285 || (c >= 64287 && c <= 64296))) - : (c <= 64310 || (c < 64320 - ? (c < 64318 - ? (c >= 64312 && c <= 64316) - : c <= 64318) - : (c <= 64321 || (c >= 64323 && c <= 64324))))) - : (c <= 64433 || (c < 65008 - ? (c < 64848 - ? (c < 64612 - ? (c >= 64467 && c <= 64605) - : c <= 64829) - : (c <= 64911 || (c >= 64914 && c <= 64967))) - : (c <= 65017 || (c < 65143 - ? (c < 65139 - ? c == 65137 - : c <= 65139) - : (c <= 65143 || c == 65145)))))) - : (c <= 65147 || (c < 65498 - ? (c < 65382 - ? (c < 65313 + : c <= 12543))) + : (c <= 12591 || (c < 12784 + ? (c < 12704 + ? (c >= 12593 && c <= 12686) + : c <= 12735) + : (c <= 12799 || (c >= 13312 && c <= 19903))))) + : (c <= 42124 || (c < 42560 + ? (c < 42512 + ? (c < 42240 + ? (c >= 42192 && c <= 42237) + : c <= 42508) + : (c <= 42527 || (c >= 42538 && c <= 42539))) + : (c <= 42606 || (c < 42775 + ? (c < 42656 + ? (c >= 42623 && c <= 42653) + : c <= 42735) + : (c <= 42783 || (c >= 42786 && c <= 42888))))))) + : (c <= 42954 || (c < 43250 + ? (c < 43011 + ? (c < 42965 + ? (c < 42963 + ? (c >= 42960 && c <= 42961) + : c <= 42963) + : (c <= 42969 || (c >= 42994 && c <= 43009))) + : (c <= 43013 || (c < 43072 + ? (c < 43020 + ? (c >= 43015 && c <= 43018) + : c <= 43042) + : (c <= 43123 || (c >= 43138 && c <= 43187))))) + : (c <= 43255 || (c < 43360 + ? (c < 43274 + ? (c < 43261 + ? c == 43259 + : c <= 43262) + : (c <= 43301 || (c >= 43312 && c <= 43334))) + : (c <= 43388 || (c < 43488 + ? (c < 43471 + ? (c >= 43396 && c <= 43442) + : c <= 43471) + : (c <= 43492 || (c >= 43494 && c <= 43503))))))))))))))) + : (c <= 43518 || (c < 70727 + ? (c < 66956 + ? (c < 64914 + ? (c < 43868 + ? (c < 43714 + ? (c < 43646 + ? (c < 43588 + ? (c < 43584 + ? (c >= 43520 && c <= 43560) + : c <= 43586) + : (c <= 43595 || (c < 43642 + ? (c >= 43616 && c <= 43638) + : c <= 43642))) + : (c <= 43695 || (c < 43705 + ? (c < 43701 + ? c == 43697 + : c <= 43702) + : (c <= 43709 || c == 43712)))) + : (c <= 43714 || (c < 43785 + ? (c < 43762 + ? (c < 43744 + ? (c >= 43739 && c <= 43741) + : c <= 43754) + : (c <= 43764 || (c >= 43777 && c <= 43782))) + : (c <= 43790 || (c < 43816 + ? (c < 43808 + ? (c >= 43793 && c <= 43798) + : c <= 43814) + : (c <= 43822 || (c >= 43824 && c <= 43866))))))) + : (c <= 43881 || (c < 64287 + ? (c < 63744 + ? (c < 55216 + ? (c < 44032 + ? (c >= 43888 && c <= 44002) + : c <= 55203) + : (c <= 55238 || (c >= 55243 && c <= 55291))) + : (c <= 64109 || (c < 64275 + ? (c < 64256 + ? (c >= 64112 && c <= 64217) + : c <= 64262) + : (c <= 64279 || c == 64285)))) + : (c <= 64296 || (c < 64323 + ? (c < 64318 + ? (c < 64312 + ? (c >= 64298 && c <= 64310) + : c <= 64316) + : (c <= 64318 || (c >= 64320 && c <= 64321))) + : (c <= 64324 || (c < 64612 + ? (c < 64467 + ? (c >= 64326 && c <= 64433) + : c <= 64605) + : (c <= 64829 || (c >= 64848 && c <= 64911))))))))) + : (c <= 64967 || (c < 65599 + ? (c < 65382 + ? (c < 65147 + ? (c < 65139 + ? (c < 65137 + ? (c >= 65008 && c <= 65017) + : c <= 65137) + : (c <= 65139 || (c < 65145 + ? c == 65143 + : c <= 65145))) + : (c <= 65147 || (c < 65313 ? (c < 65151 ? c == 65149 : c <= 65276) - : (c <= 65338 || (c >= 65345 && c <= 65370))) - : (c <= 65437 || (c < 65482 + : (c <= 65338 || (c >= 65345 && c <= 65370))))) + : (c <= 65437 || (c < 65498 + ? (c < 65482 ? (c < 65474 ? (c >= 65440 && c <= 65470) : c <= 65479) - : (c <= 65487 || (c >= 65490 && c <= 65495))))) - : (c <= 65500 || (c < 65599 - ? (c < 65576 + : (c <= 65487 || (c >= 65490 && c <= 65495))) + : (c <= 65500 || (c < 65576 ? (c < 65549 ? (c >= 65536 && c <= 65547) : c <= 65574) - : (c <= 65594 || (c >= 65596 && c <= 65597))) - : (c <= 65613 || (c < 65664 - ? (c >= 65616 && c <= 65629) - : (c <= 65786 || (c >= 65856 && c <= 65908))))))))))) - : (c <= 66204 || (c < 68416 - ? (c < 67639 - ? (c < 66736 - ? (c < 66432 - ? (c < 66349 - ? (c < 66304 - ? (c >= 66208 && c <= 66256) - : c <= 66335) - : (c <= 66378 || (c >= 66384 && c <= 66421))) - : (c <= 66461 || (c < 66513 - ? (c < 66504 - ? (c >= 66464 && c <= 66499) - : c <= 66511) - : (c <= 66517 || (c >= 66560 && c <= 66717))))) - : (c <= 66771 || (c < 67392 - ? (c < 66864 - ? (c < 66816 - ? (c >= 66776 && c <= 66811) - : c <= 66855) - : (c <= 66915 || (c >= 67072 && c <= 67382))) - : (c <= 67413 || (c < 67592 - ? (c < 67584 - ? (c >= 67424 && c <= 67431) - : c <= 67589) - : (c <= 67592 || (c >= 67594 && c <= 67637))))))) - : (c <= 67640 || (c < 68030 - ? (c < 67808 - ? (c < 67680 - ? (c < 67647 - ? c == 67644 - : c <= 67669) - : (c <= 67702 || (c >= 67712 && c <= 67742))) - : (c <= 67826 || (c < 67872 - ? (c < 67840 - ? (c >= 67828 && c <= 67829) - : c <= 67861) - : (c <= 67897 || (c >= 67968 && c <= 68023))))) - : (c <= 68031 || (c < 68192 - ? (c < 68117 - ? (c < 68112 - ? c == 68096 - : c <= 68115) - : (c <= 68119 || (c >= 68121 && c <= 68149))) - : (c <= 68220 || (c < 68297 - ? (c < 68288 - ? (c >= 68224 && c <= 68252) - : c <= 68295) - : (c <= 68324 || (c >= 68352 && c <= 68405))))))))) - : (c <= 68437 || (c < 69968 - ? (c < 69415 - ? (c < 68800 - ? (c < 68608 - ? (c < 68480 - ? (c >= 68448 && c <= 68466) - : c <= 68497) - : (c <= 68680 || (c >= 68736 && c <= 68786))) - : (c <= 68850 || (c < 69296 - ? (c < 69248 - ? (c >= 68864 && c <= 68899) - : c <= 69289) - : (c <= 69297 || (c >= 69376 && c <= 69404))))) - : (c <= 69415 || (c < 69763 - ? (c < 69600 - ? (c < 69552 - ? (c >= 69424 && c <= 69445) - : c <= 69572) - : (c <= 69622 || (c >= 69635 && c <= 69687))) - : (c <= 69807 || (c < 69956 - ? (c < 69891 - ? (c >= 69840 && c <= 69864) - : c <= 69926) - : (c <= 69956 || c == 69959)))))) - : (c <= 70002 || (c < 70282 - ? (c < 70108 - ? (c < 70081 - ? (c < 70019 - ? c == 70006 - : c <= 70066) - : (c <= 70084 || c == 70106)) - : (c <= 70108 || (c < 70272 - ? (c < 70163 - ? (c >= 70144 && c <= 70161) - : c <= 70187) - : (c <= 70278 || c == 70280)))) - : (c <= 70285 || (c < 70415 - ? (c < 70320 - ? (c < 70303 - ? (c >= 70287 && c <= 70301) - : c <= 70312) - : (c <= 70366 || (c >= 70405 && c <= 70412))) - : (c <= 70416 || (c < 70442 - ? (c >= 70419 && c <= 70440) - : (c <= 70448 || (c >= 70450 && c <= 70451))))))))))))) - : (c <= 70457 || (c < 113808 - ? (c < 72818 - ? (c < 71945 - ? (c < 71040 - ? (c < 70727 - ? (c < 70493 + : (c <= 65594 || (c >= 65596 && c <= 65597))))))) + : (c <= 65613 || (c < 66464 + ? (c < 66208 + ? (c < 65856 + ? (c < 65664 + ? (c >= 65616 && c <= 65629) + : c <= 65786) + : (c <= 65908 || (c >= 66176 && c <= 66204))) + : (c <= 66256 || (c < 66384 + ? (c < 66349 + ? (c >= 66304 && c <= 66335) + : c <= 66378) + : (c <= 66421 || (c >= 66432 && c <= 66461))))) + : (c <= 66499 || (c < 66776 + ? (c < 66560 + ? (c < 66513 + ? (c >= 66504 && c <= 66511) + : c <= 66517) + : (c <= 66717 || (c >= 66736 && c <= 66771))) + : (c <= 66811 || (c < 66928 + ? (c < 66864 + ? (c >= 66816 && c <= 66855) + : c <= 66915) + : (c <= 66938 || (c >= 66940 && c <= 66954))))))))))) + : (c <= 66962 || (c < 68864 + ? (c < 67828 + ? (c < 67506 + ? (c < 67072 + ? (c < 66979 + ? (c < 66967 + ? (c >= 66964 && c <= 66965) + : c <= 66977) + : (c <= 66993 || (c < 67003 + ? (c >= 66995 && c <= 67001) + : c <= 67004))) + : (c <= 67382 || (c < 67456 + ? (c < 67424 + ? (c >= 67392 && c <= 67413) + : c <= 67431) + : (c <= 67461 || (c >= 67463 && c <= 67504))))) + : (c <= 67514 || (c < 67644 + ? (c < 67594 + ? (c < 67592 + ? (c >= 67584 && c <= 67589) + : c <= 67592) + : (c <= 67637 || (c >= 67639 && c <= 67640))) + : (c <= 67644 || (c < 67712 + ? (c < 67680 + ? (c >= 67647 && c <= 67669) + : c <= 67702) + : (c <= 67742 || (c >= 67808 && c <= 67826))))))) + : (c <= 67829 || (c < 68224 + ? (c < 68096 + ? (c < 67968 + ? (c < 67872 + ? (c >= 67840 && c <= 67861) + : c <= 67897) + : (c <= 68023 || (c >= 68030 && c <= 68031))) + : (c <= 68096 || (c < 68121 + ? (c < 68117 + ? (c >= 68112 && c <= 68115) + : c <= 68119) + : (c <= 68149 || (c >= 68192 && c <= 68220))))) + : (c <= 68252 || (c < 68448 + ? (c < 68352 + ? (c < 68297 + ? (c >= 68288 && c <= 68295) + : c <= 68324) + : (c <= 68405 || (c >= 68416 && c <= 68437))) + : (c <= 68466 || (c < 68736 + ? (c < 68608 + ? (c >= 68480 && c <= 68497) + : c <= 68680) + : (c <= 68786 || (c >= 68800 && c <= 68850))))))))) + : (c <= 68899 || (c < 70106 + ? (c < 69749 + ? (c < 69488 + ? (c < 69376 + ? (c < 69296 + ? (c >= 69248 && c <= 69289) + : c <= 69297) + : (c <= 69404 || (c < 69424 + ? c == 69415 + : c <= 69445))) + : (c <= 69505 || (c < 69635 + ? (c < 69600 + ? (c >= 69552 && c <= 69572) + : c <= 69622) + : (c <= 69687 || (c >= 69745 && c <= 69746))))) + : (c <= 69749 || (c < 69959 + ? (c < 69891 + ? (c < 69840 + ? (c >= 69763 && c <= 69807) + : c <= 69864) + : (c <= 69926 || c == 69956)) + : (c <= 69959 || (c < 70019 + ? (c < 70006 + ? (c >= 69968 && c <= 70002) + : c <= 70006) + : (c <= 70066 || (c >= 70081 && c <= 70084))))))) + : (c <= 70106 || (c < 70405 + ? (c < 70280 + ? (c < 70163 + ? (c < 70144 + ? c == 70108 + : c <= 70161) + : (c <= 70187 || (c >= 70272 && c <= 70278))) + : (c <= 70280 || (c < 70303 + ? (c < 70287 + ? (c >= 70282 && c <= 70285) + : c <= 70301) + : (c <= 70312 || (c >= 70320 && c <= 70366))))) + : (c <= 70412 || (c < 70453 + ? (c < 70442 + ? (c < 70419 + ? (c >= 70415 && c <= 70416) + : c <= 70440) + : (c <= 70448 || (c >= 70450 && c <= 70451))) + : (c <= 70457 || (c < 70493 ? (c < 70480 ? c == 70461 : c <= 70480) - : (c <= 70497 || (c >= 70656 && c <= 70708))) - : (c <= 70730 || (c < 70852 + : (c <= 70497 || (c >= 70656 && c <= 70708))))))))))))) + : (c <= 70730 || (c < 119894 + ? (c < 73056 + ? (c < 72001 + ? (c < 71424 + ? (c < 71128 + ? (c < 70852 ? (c < 70784 ? (c >= 70751 && c <= 70753) : c <= 70831) - : (c <= 70853 || c == 70855)))) - : (c <= 71086 || (c < 71352 - ? (c < 71236 - ? (c < 71168 - ? (c >= 71128 && c <= 71131) - : c <= 71215) - : (c <= 71236 || (c >= 71296 && c <= 71338))) - : (c <= 71352 || (c < 71840 + : (c <= 70853 || (c < 71040 + ? c == 70855 + : c <= 71086))) + : (c <= 71131 || (c < 71296 + ? (c < 71236 + ? (c >= 71168 && c <= 71215) + : c <= 71236) + : (c <= 71338 || c == 71352)))) + : (c <= 71450 || (c < 71945 + ? (c < 71840 ? (c < 71680 - ? (c >= 71424 && c <= 71450) + ? (c >= 71488 && c <= 71494) : c <= 71723) - : (c <= 71903 || (c >= 71935 && c <= 71942))))))) - : (c <= 71945 || (c < 72192 - ? (c < 72001 - ? (c < 71960 + : (c <= 71903 || (c >= 71935 && c <= 71942))) + : (c <= 71945 || (c < 71960 ? (c < 71957 ? (c >= 71948 && c <= 71955) : c <= 71958) - : (c <= 71983 || c == 71999)) - : (c <= 72001 || (c < 72161 + : (c <= 71983 || c == 71999)))))) + : (c <= 72001 || (c < 72349 + ? (c < 72192 + ? (c < 72161 ? (c < 72106 ? (c >= 72096 && c <= 72103) : c <= 72144) - : (c <= 72161 || c == 72163)))) - : (c <= 72192 || (c < 72349 - ? (c < 72272 + : (c <= 72161 || c == 72163)) + : (c <= 72192 || (c < 72272 ? (c < 72250 ? (c >= 72203 && c <= 72242) : c <= 72250) - : (c <= 72272 || (c >= 72284 && c <= 72329))) - : (c <= 72349 || (c < 72714 + : (c <= 72272 || (c >= 72284 && c <= 72329))))) + : (c <= 72349 || (c < 72818 + ? (c < 72714 ? (c < 72704 - ? (c >= 72384 && c <= 72440) + ? (c >= 72368 && c <= 72440) : c <= 72712) - : (c <= 72750 || c == 72768)))))))) - : (c <= 72847 || (c < 92992 - ? (c < 73648 - ? (c < 73056 - ? (c < 72971 + : (c <= 72750 || c == 72768)) + : (c <= 72847 || (c < 72971 ? (c < 72968 ? (c >= 72960 && c <= 72966) : c <= 72969) - : (c <= 73008 || c == 73030)) - : (c <= 73061 || (c < 73112 + : (c <= 73008 || c == 73030)))))))) + : (c <= 73061 || (c < 93952 + ? (c < 82944 + ? (c < 73728 + ? (c < 73112 ? (c < 73066 ? (c >= 73063 && c <= 73064) : c <= 73097) - : (c <= 73112 || (c >= 73440 && c <= 73458))))) - : (c <= 73648 || (c < 82944 - ? (c < 74880 - ? (c < 74752 - ? (c >= 73728 && c <= 74649) - : c <= 74862) - : (c <= 75075 || (c >= 77824 && c <= 78894))) - : (c <= 83526 || (c < 92880 + : (c <= 73112 || (c < 73648 + ? (c >= 73440 && c <= 73458) + : c <= 73648))) + : (c <= 74649 || (c < 77712 + ? (c < 74880 + ? (c >= 74752 && c <= 74862) + : c <= 75075) + : (c <= 77808 || (c >= 77824 && c <= 78894))))) + : (c <= 83526 || (c < 92928 + ? (c < 92784 ? (c < 92736 ? (c >= 92160 && c <= 92728) : c <= 92766) - : (c <= 92909 || (c >= 92928 && c <= 92975))))))) - : (c <= 92995 || (c < 100352 - ? (c < 94032 - ? (c < 93760 - ? (c < 93053 - ? (c >= 93027 && c <= 93047) - : c <= 93071) - : (c <= 93823 || (c >= 93952 && c <= 94026))) - : (c <= 94032 || (c < 94179 - ? (c < 94176 - ? (c >= 94099 && c <= 94111) - : c <= 94177) - : (c <= 94179 || (c >= 94208 && c <= 100343))))) - : (c <= 101589 || (c < 110960 - ? (c < 110928 - ? (c < 110592 - ? (c >= 101632 && c <= 101640) - : c <= 110878) - : (c <= 110930 || (c >= 110948 && c <= 110951))) - : (c <= 111355 || (c < 113776 - ? (c >= 113664 && c <= 113770) - : (c <= 113788 || (c >= 113792 && c <= 113800))))))))))) - : (c <= 113817 || (c < 126469 - ? (c < 120488 - ? (c < 120005 - ? (c < 119973 - ? (c < 119966 - ? (c < 119894 - ? (c >= 119808 && c <= 119892) - : c <= 119964) - : (c <= 119967 || c == 119970)) - : (c <= 119974 || (c < 119995 - ? (c < 119982 + : (c <= 92862 || (c >= 92880 && c <= 92909))) + : (c <= 92975 || (c < 93053 + ? (c < 93027 + ? (c >= 92992 && c <= 92995) + : c <= 93047) + : (c <= 93071 || (c >= 93760 && c <= 93823))))))) + : (c <= 94026 || (c < 110589 + ? (c < 94208 + ? (c < 94176 + ? (c < 94099 + ? c == 94032 + : c <= 94111) + : (c <= 94177 || c == 94179)) + : (c <= 100343 || (c < 110576 + ? (c < 101632 + ? (c >= 100352 && c <= 101589) + : c <= 101640) + : (c <= 110579 || (c >= 110581 && c <= 110587))))) + : (c <= 110590 || (c < 113664 + ? (c < 110948 + ? (c < 110928 + ? (c >= 110592 && c <= 110882) + : c <= 110930) + : (c <= 110951 || (c >= 110960 && c <= 111355))) + : (c <= 113770 || (c < 113808 + ? (c < 113792 + ? (c >= 113776 && c <= 113788) + : c <= 113800) + : (c <= 113817 || (c >= 119808 && c <= 119892))))))))))) + : (c <= 119964 || (c < 125259 + ? (c < 120572 + ? (c < 120086 + ? (c < 119995 + ? (c < 119973 + ? (c < 119970 + ? (c >= 119966 && c <= 119967) + : c <= 119970) + : (c <= 119974 || (c < 119982 ? (c >= 119977 && c <= 119980) - : c <= 119993) - : (c <= 119995 || (c >= 119997 && c <= 120003))))) - : (c <= 120069 || (c < 120123 - ? (c < 120086 - ? (c < 120077 - ? (c >= 120071 && c <= 120074) - : c <= 120084) - : (c <= 120092 || (c >= 120094 && c <= 120121))) - : (c <= 120126 || (c < 120138 - ? (c < 120134 - ? (c >= 120128 && c <= 120132) - : c <= 120134) - : (c <= 120144 || (c >= 120146 && c <= 120485))))))) - : (c <= 120512 || (c < 120772 - ? (c < 120630 - ? (c < 120572 - ? (c < 120540 - ? (c >= 120514 && c <= 120538) - : c <= 120570) - : (c <= 120596 || (c >= 120598 && c <= 120628))) - : (c <= 120654 || (c < 120714 - ? (c < 120688 - ? (c >= 120656 && c <= 120686) - : c <= 120712) - : (c <= 120744 || (c >= 120746 && c <= 120770))))) - : (c <= 120779 || (c < 124928 - ? (c < 123214 - ? (c < 123191 - ? (c >= 123136 && c <= 123180) - : c <= 123197) - : (c <= 123214 || (c >= 123584 && c <= 123627))) - : (c <= 125124 || (c < 125259 - ? (c >= 125184 && c <= 125251) - : (c <= 125259 || (c >= 126464 && c <= 126467))))))))) - : (c <= 126495 || (c < 126561 - ? (c < 126537 - ? (c < 126516 - ? (c < 126503 - ? (c < 126500 - ? (c >= 126497 && c <= 126498) - : c <= 126500) - : (c <= 126503 || (c >= 126505 && c <= 126514))) - : (c <= 126519 || (c < 126530 - ? (c < 126523 - ? c == 126521 - : c <= 126523) - : (c <= 126530 || c == 126535)))) - : (c <= 126537 || (c < 126551 - ? (c < 126545 - ? (c < 126541 - ? c == 126539 - : c <= 126543) - : (c <= 126546 || c == 126548)) - : (c <= 126551 || (c < 126557 - ? (c < 126555 - ? c == 126553 - : c <= 126555) - : (c <= 126557 || c == 126559)))))) - : (c <= 126562 || (c < 126629 - ? (c < 126585 - ? (c < 126572 - ? (c < 126567 - ? c == 126564 - : c <= 126570) - : (c <= 126578 || (c >= 126580 && c <= 126583))) - : (c <= 126588 || (c < 126603 - ? (c < 126592 - ? c == 126590 - : c <= 126601) - : (c <= 126619 || (c >= 126625 && c <= 126627))))) - : (c <= 126633 || (c < 178208 - ? (c < 173824 - ? (c < 131072 - ? (c >= 126635 && c <= 126651) - : c <= 173789) - : (c <= 177972 || (c >= 177984 && c <= 178205))) - : (c <= 183969 || (c < 194560 - ? (c >= 183984 && c <= 191456) + : c <= 119993))) + : (c <= 119995 || (c < 120071 + ? (c < 120005 + ? (c >= 119997 && c <= 120003) + : c <= 120069) + : (c <= 120074 || (c >= 120077 && c <= 120084))))) + : (c <= 120092 || (c < 120138 + ? (c < 120128 + ? (c < 120123 + ? (c >= 120094 && c <= 120121) + : c <= 120126) + : (c <= 120132 || c == 120134)) + : (c <= 120144 || (c < 120514 + ? (c < 120488 + ? (c >= 120146 && c <= 120485) + : c <= 120512) + : (c <= 120538 || (c >= 120540 && c <= 120570))))))) + : (c <= 120596 || (c < 123191 + ? (c < 120714 + ? (c < 120656 + ? (c < 120630 + ? (c >= 120598 && c <= 120628) + : c <= 120654) + : (c <= 120686 || (c >= 120688 && c <= 120712))) + : (c <= 120744 || (c < 122624 + ? (c < 120772 + ? (c >= 120746 && c <= 120770) + : c <= 120779) + : (c <= 122654 || (c >= 123136 && c <= 123180))))) + : (c <= 123197 || (c < 124904 + ? (c < 123584 + ? (c < 123536 + ? c == 123214 + : c <= 123565) + : (c <= 123627 || (c >= 124896 && c <= 124902))) + : (c <= 124907 || (c < 124928 + ? (c < 124912 + ? (c >= 124909 && c <= 124910) + : c <= 124926) + : (c <= 125124 || (c >= 125184 && c <= 125251))))))))) + : (c <= 125259 || (c < 126559 + ? (c < 126535 + ? (c < 126505 + ? (c < 126497 + ? (c < 126469 + ? (c >= 126464 && c <= 126467) + : c <= 126495) + : (c <= 126498 || (c < 126503 + ? c == 126500 + : c <= 126503))) + : (c <= 126514 || (c < 126523 + ? (c < 126521 + ? (c >= 126516 && c <= 126519) + : c <= 126521) + : (c <= 126523 || c == 126530)))) + : (c <= 126535 || (c < 126548 + ? (c < 126541 + ? (c < 126539 + ? c == 126537 + : c <= 126539) + : (c <= 126543 || (c >= 126545 && c <= 126546))) + : (c <= 126548 || (c < 126555 + ? (c < 126553 + ? c == 126551 + : c <= 126553) + : (c <= 126555 || c == 126557)))))) + : (c <= 126559 || (c < 126625 + ? (c < 126580 + ? (c < 126567 + ? (c < 126564 + ? (c >= 126561 && c <= 126562) + : c <= 126564) + : (c <= 126570 || (c >= 126572 && c <= 126578))) + : (c <= 126583 || (c < 126592 + ? (c < 126590 + ? (c >= 126585 && c <= 126588) + : c <= 126590) + : (c <= 126601 || (c >= 126603 && c <= 126619))))) + : (c <= 126627 || (c < 177984 + ? (c < 131072 + ? (c < 126635 + ? (c >= 126629 && c <= 126633) + : c <= 126651) + : (c <= 173791 || (c >= 173824 && c <= 177976))) + : (c <= 178205 || (c < 194560 + ? (c < 183984 + ? (c >= 178208 && c <= 183969) + : c <= 191456) : (c <= 195101 || (c >= 196608 && c <= 201546))))))))))))))))); } static inline bool sym_identifier_character_set_2(int32_t c) { - return (c < 43052 - ? (c < 3718 - ? (c < 2730 - ? (c < 2042 + return (c < 43616 + ? (c < 3782 + ? (c < 2748 + ? (c < 2045 ? (c < 1015 ? (c < 710 ? (c < 181 @@ -3805,338 +5339,344 @@ static inline bool sym_identifier_character_set_2(int32_t c) { ? (c < 1808 ? c == 1791 : c <= 1866) - : (c <= 1969 || (c >= 1984 && c <= 2037))))))))) - : (c <= 2042 || (c < 2534 - ? (c < 2447 - ? (c < 2230 - ? (c < 2112 - ? (c < 2048 - ? c == 2045 - : c <= 2093) - : (c <= 2139 || (c < 2208 - ? (c >= 2144 && c <= 2154) - : c <= 2228))) - : (c <= 2247 || (c < 2406 - ? (c < 2275 - ? (c >= 2259 && c <= 2273) - : c <= 2403) - : (c <= 2415 || (c < 2437 - ? (c >= 2417 && c <= 2435) - : c <= 2444))))) - : (c <= 2448 || (c < 2503 - ? (c < 2482 - ? (c < 2474 - ? (c >= 2451 && c <= 2472) - : c <= 2480) - : (c <= 2482 || (c < 2492 - ? (c >= 2486 && c <= 2489) - : c <= 2500))) - : (c <= 2504 || (c < 2524 - ? (c < 2519 - ? (c >= 2507 && c <= 2510) - : c <= 2519) - : (c <= 2525 || (c >= 2527 && c <= 2531))))))) - : (c <= 2545 || (c < 2622 - ? (c < 2579 - ? (c < 2561 - ? (c < 2558 - ? c == 2556 - : c <= 2558) - : (c <= 2563 || (c < 2575 - ? (c >= 2565 && c <= 2570) - : c <= 2576))) - : (c <= 2600 || (c < 2613 - ? (c < 2610 - ? (c >= 2602 && c <= 2608) - : c <= 2611) - : (c <= 2614 || (c < 2620 - ? (c >= 2616 && c <= 2617) - : c <= 2620))))) - : (c <= 2626 || (c < 2662 - ? (c < 2641 - ? (c < 2635 - ? (c >= 2631 && c <= 2632) - : c <= 2637) - : (c <= 2641 || (c < 2654 - ? (c >= 2649 && c <= 2652) - : c <= 2654))) - : (c <= 2677 || (c < 2703 - ? (c < 2693 - ? (c >= 2689 && c <= 2691) - : c <= 2701) - : (c <= 2705 || (c >= 2707 && c <= 2728))))))))))) - : (c <= 2736 || (c < 3142 - ? (c < 2918 - ? (c < 2831 - ? (c < 2768 - ? (c < 2748 - ? (c < 2741 + : (c <= 1969 || (c < 2042 + ? (c >= 1984 && c <= 2037) + : c <= 2042))))))))) + : (c <= 2045 || (c < 2558 + ? (c < 2451 + ? (c < 2200 + ? (c < 2144 + ? (c < 2112 + ? (c >= 2048 && c <= 2093) + : c <= 2139) + : (c <= 2154 || (c < 2185 + ? (c >= 2160 && c <= 2183) + : c <= 2190))) + : (c <= 2273 || (c < 2417 + ? (c < 2406 + ? (c >= 2275 && c <= 2403) + : c <= 2415) + : (c <= 2435 || (c < 2447 + ? (c >= 2437 && c <= 2444) + : c <= 2448))))) + : (c <= 2472 || (c < 2507 + ? (c < 2486 + ? (c < 2482 + ? (c >= 2474 && c <= 2480) + : c <= 2482) + : (c <= 2489 || (c < 2503 + ? (c >= 2492 && c <= 2500) + : c <= 2504))) + : (c <= 2510 || (c < 2527 + ? (c < 2524 + ? c == 2519 + : c <= 2525) + : (c <= 2531 || (c < 2556 + ? (c >= 2534 && c <= 2545) + : c <= 2556))))))) + : (c <= 2558 || (c < 2635 + ? (c < 2610 + ? (c < 2575 + ? (c < 2565 + ? (c >= 2561 && c <= 2563) + : c <= 2570) + : (c <= 2576 || (c < 2602 + ? (c >= 2579 && c <= 2600) + : c <= 2608))) + : (c <= 2611 || (c < 2620 + ? (c < 2616 + ? (c >= 2613 && c <= 2614) + : c <= 2617) + : (c <= 2620 || (c < 2631 + ? (c >= 2622 && c <= 2626) + : c <= 2632))))) + : (c <= 2637 || (c < 2693 + ? (c < 2654 + ? (c < 2649 + ? c == 2641 + : c <= 2652) + : (c <= 2654 || (c < 2689 + ? (c >= 2662 && c <= 2677) + : c <= 2691))) + : (c <= 2701 || (c < 2730 + ? (c < 2707 + ? (c >= 2703 && c <= 2705) + : c <= 2728) + : (c <= 2736 || (c < 2741 ? (c >= 2738 && c <= 2739) - : c <= 2745) - : (c <= 2757 || (c < 2763 + : c <= 2745))))))))))) + : (c <= 2757 || (c < 3168 + ? (c < 2958 + ? (c < 2866 + ? (c < 2809 + ? (c < 2768 + ? (c < 2763 ? (c >= 2759 && c <= 2761) - : c <= 2765))) - : (c <= 2768 || (c < 2809 - ? (c < 2790 + : c <= 2765) + : (c <= 2768 || (c < 2790 ? (c >= 2784 && c <= 2787) - : c <= 2799) - : (c <= 2815 || (c < 2821 + : c <= 2799))) + : (c <= 2815 || (c < 2831 + ? (c < 2821 ? (c >= 2817 && c <= 2819) - : c <= 2828))))) - : (c <= 2832 || (c < 2887 - ? (c < 2866 - ? (c < 2858 + : c <= 2828) + : (c <= 2832 || (c < 2858 ? (c >= 2835 && c <= 2856) - : c <= 2864) - : (c <= 2867 || (c < 2876 + : c <= 2864))))) + : (c <= 2867 || (c < 2908 + ? (c < 2887 + ? (c < 2876 ? (c >= 2869 && c <= 2873) - : c <= 2884))) - : (c <= 2888 || (c < 2908 - ? (c < 2901 + : c <= 2884) + : (c <= 2888 || (c < 2901 ? (c >= 2891 && c <= 2893) - : c <= 2903) - : (c <= 2909 || (c >= 2911 && c <= 2915))))))) - : (c <= 2927 || (c < 3006 - ? (c < 2969 - ? (c < 2949 - ? (c < 2946 - ? c == 2929 - : c <= 2947) - : (c <= 2954 || (c < 2962 - ? (c >= 2958 && c <= 2960) - : c <= 2965))) - : (c <= 2970 || (c < 2979 - ? (c < 2974 - ? c == 2972 - : c <= 2975) - : (c <= 2980 || (c < 2990 - ? (c >= 2984 && c <= 2986) - : c <= 3001))))) - : (c <= 3010 || (c < 3072 - ? (c < 3024 - ? (c < 3018 - ? (c >= 3014 && c <= 3016) - : c <= 3021) - : (c <= 3024 || (c < 3046 - ? c == 3031 - : c <= 3055))) - : (c <= 3084 || (c < 3114 - ? (c < 3090 - ? (c >= 3086 && c <= 3088) - : c <= 3112) - : (c <= 3129 || (c >= 3133 && c <= 3140))))))))) - : (c <= 3144 || (c < 3398 - ? (c < 3260 - ? (c < 3200 - ? (c < 3160 - ? (c < 3157 - ? (c >= 3146 && c <= 3149) - : c <= 3158) - : (c <= 3162 || (c < 3174 - ? (c >= 3168 && c <= 3171) - : c <= 3183))) - : (c <= 3203 || (c < 3218 - ? (c < 3214 - ? (c >= 3205 && c <= 3212) - : c <= 3216) - : (c <= 3240 || (c < 3253 - ? (c >= 3242 && c <= 3251) - : c <= 3257))))) - : (c <= 3268 || (c < 3302 - ? (c < 3285 - ? (c < 3274 - ? (c >= 3270 && c <= 3272) - : c <= 3277) - : (c <= 3286 || (c < 3296 - ? c == 3294 - : c <= 3299))) - : (c <= 3311 || (c < 3342 - ? (c < 3328 - ? (c >= 3313 && c <= 3314) - : c <= 3340) - : (c <= 3344 || (c >= 3346 && c <= 3396))))))) - : (c <= 3400 || (c < 3530 - ? (c < 3457 - ? (c < 3423 - ? (c < 3412 - ? (c >= 3402 && c <= 3406) - : c <= 3415) - : (c <= 3427 || (c < 3450 - ? (c >= 3430 && c <= 3439) - : c <= 3455))) - : (c <= 3459 || (c < 3507 - ? (c < 3482 - ? (c >= 3461 && c <= 3478) - : c <= 3505) - : (c <= 3515 || (c < 3520 - ? c == 3517 - : c <= 3526))))) - : (c <= 3530 || (c < 3585 - ? (c < 3544 - ? (c < 3542 - ? (c >= 3535 && c <= 3540) - : c <= 3542) - : (c <= 3551 || (c < 3570 - ? (c >= 3558 && c <= 3567) - : c <= 3571))) - : (c <= 3642 || (c < 3713 - ? (c < 3664 - ? (c >= 3648 && c <= 3662) - : c <= 3673) - : (c <= 3714 || c == 3716)))))))))))) - : (c <= 3722 || (c < 7296 - ? (c < 5024 - ? (c < 4256 - ? (c < 3893 - ? (c < 3784 - ? (c < 3751 + : c <= 2903))) + : (c <= 2909 || (c < 2929 + ? (c < 2918 + ? (c >= 2911 && c <= 2915) + : c <= 2927) + : (c <= 2929 || (c < 2949 + ? (c >= 2946 && c <= 2947) + : c <= 2954))))))) + : (c <= 2960 || (c < 3031 + ? (c < 2984 + ? (c < 2972 + ? (c < 2969 + ? (c >= 2962 && c <= 2965) + : c <= 2970) + : (c <= 2972 || (c < 2979 + ? (c >= 2974 && c <= 2975) + : c <= 2980))) + : (c <= 2986 || (c < 3014 + ? (c < 3006 + ? (c >= 2990 && c <= 3001) + : c <= 3010) + : (c <= 3016 || (c < 3024 + ? (c >= 3018 && c <= 3021) + : c <= 3024))))) + : (c <= 3031 || (c < 3132 + ? (c < 3086 + ? (c < 3072 + ? (c >= 3046 && c <= 3055) + : c <= 3084) + : (c <= 3088 || (c < 3114 + ? (c >= 3090 && c <= 3112) + : c <= 3129))) + : (c <= 3140 || (c < 3157 + ? (c < 3146 + ? (c >= 3142 && c <= 3144) + : c <= 3149) + : (c <= 3158 || (c < 3165 + ? (c >= 3160 && c <= 3162) + : c <= 3165))))))))) + : (c <= 3171 || (c < 3450 + ? (c < 3293 + ? (c < 3242 + ? (c < 3205 + ? (c < 3200 + ? (c >= 3174 && c <= 3183) + : c <= 3203) + : (c <= 3212 || (c < 3218 + ? (c >= 3214 && c <= 3216) + : c <= 3240))) + : (c <= 3251 || (c < 3270 + ? (c < 3260 + ? (c >= 3253 && c <= 3257) + : c <= 3268) + : (c <= 3272 || (c < 3285 + ? (c >= 3274 && c <= 3277) + : c <= 3286))))) + : (c <= 3294 || (c < 3346 + ? (c < 3313 + ? (c < 3302 + ? (c >= 3296 && c <= 3299) + : c <= 3311) + : (c <= 3314 || (c < 3342 + ? (c >= 3328 && c <= 3340) + : c <= 3344))) + : (c <= 3396 || (c < 3412 + ? (c < 3402 + ? (c >= 3398 && c <= 3400) + : c <= 3406) + : (c <= 3415 || (c < 3430 + ? (c >= 3423 && c <= 3427) + : c <= 3439))))))) + : (c <= 3455 || (c < 3570 + ? (c < 3520 + ? (c < 3482 + ? (c < 3461 + ? (c >= 3457 && c <= 3459) + : c <= 3478) + : (c <= 3505 || (c < 3517 + ? (c >= 3507 && c <= 3515) + : c <= 3517))) + : (c <= 3526 || (c < 3542 + ? (c < 3535 + ? c == 3530 + : c <= 3540) + : (c <= 3542 || (c < 3558 + ? (c >= 3544 && c <= 3551) + : c <= 3567))))) + : (c <= 3571 || (c < 3718 + ? (c < 3664 + ? (c < 3648 + ? (c >= 3585 && c <= 3642) + : c <= 3662) + : (c <= 3673 || (c < 3716 + ? (c >= 3713 && c <= 3714) + : c <= 3716))) + : (c <= 3722 || (c < 3751 ? (c < 3749 ? (c >= 3724 && c <= 3747) : c <= 3749) - : (c <= 3773 || (c < 3782 - ? (c >= 3776 && c <= 3780) - : c <= 3782))) - : (c <= 3789 || (c < 3840 - ? (c < 3804 - ? (c >= 3792 && c <= 3801) - : c <= 3807) - : (c <= 3840 || (c < 3872 - ? (c >= 3864 && c <= 3865) - : c <= 3881))))) - : (c <= 3893 || (c < 3974 - ? (c < 3902 - ? (c < 3897 - ? c == 3895 - : c <= 3897) - : (c <= 3911 || (c < 3953 - ? (c >= 3913 && c <= 3948) - : c <= 3972))) - : (c <= 3991 || (c < 4096 - ? (c < 4038 - ? (c >= 3993 && c <= 4028) - : c <= 4038) - : (c <= 4169 || (c >= 4176 && c <= 4253))))))) - : (c <= 4293 || (c < 4786 - ? (c < 4688 - ? (c < 4304 + : (c <= 3773 || (c >= 3776 && c <= 3780))))))))))))) + : (c <= 3782 || (c < 8025 + ? (c < 5888 + ? (c < 4688 + ? (c < 3953 + ? (c < 3872 + ? (c < 3804 + ? (c < 3792 + ? (c >= 3784 && c <= 3789) + : c <= 3801) + : (c <= 3807 || (c < 3864 + ? c == 3840 + : c <= 3865))) + : (c <= 3881 || (c < 3897 + ? (c < 3895 + ? c == 3893 + : c <= 3895) + : (c <= 3897 || (c < 3913 + ? (c >= 3902 && c <= 3911) + : c <= 3948))))) + : (c <= 3972 || (c < 4256 + ? (c < 4038 + ? (c < 3993 + ? (c >= 3974 && c <= 3991) + : c <= 4028) + : (c <= 4038 || (c < 4176 + ? (c >= 4096 && c <= 4169) + : c <= 4253))) + : (c <= 4293 || (c < 4304 ? (c < 4301 ? c == 4295 : c <= 4301) : (c <= 4346 || (c < 4682 ? (c >= 4348 && c <= 4680) - : c <= 4685))) - : (c <= 4694 || (c < 4704 + : c <= 4685))))))) + : (c <= 4694 || (c < 4882 + ? (c < 4786 + ? (c < 4704 ? (c < 4698 ? c == 4696 : c <= 4701) : (c <= 4744 || (c < 4752 ? (c >= 4746 && c <= 4749) - : c <= 4784))))) - : (c <= 4789 || (c < 4882 - ? (c < 4802 + : c <= 4784))) + : (c <= 4789 || (c < 4802 ? (c < 4800 ? (c >= 4792 && c <= 4798) : c <= 4800) : (c <= 4805 || (c < 4824 ? (c >= 4808 && c <= 4822) - : c <= 4880))) - : (c <= 4885 || (c < 4969 + : c <= 4880))))) + : (c <= 4885 || (c < 5112 + ? (c < 4969 ? (c < 4957 ? (c >= 4888 && c <= 4954) : c <= 4959) - : (c <= 4977 || (c >= 4992 && c <= 5007))))))))) - : (c <= 5109 || (c < 6400 - ? (c < 5998 - ? (c < 5870 - ? (c < 5743 - ? (c < 5121 - ? (c >= 5112 && c <= 5117) - : c <= 5740) - : (c <= 5759 || (c < 5792 - ? (c >= 5761 && c <= 5786) - : c <= 5866))) - : (c <= 5880 || (c < 5920 - ? (c < 5902 - ? (c >= 5888 && c <= 5900) - : c <= 5908) - : (c <= 5940 || (c < 5984 - ? (c >= 5952 && c <= 5971) - : c <= 5996))))) - : (c <= 6000 || (c < 6155 - ? (c < 6103 - ? (c < 6016 - ? (c >= 6002 && c <= 6003) - : c <= 6099) - : (c <= 6103 || (c < 6112 - ? (c >= 6108 && c <= 6109) - : c <= 6121))) - : (c <= 6157 || (c < 6272 - ? (c < 6176 - ? (c >= 6160 && c <= 6169) - : c <= 6264) - : (c <= 6314 || (c >= 6320 && c <= 6389))))))) - : (c <= 6430 || (c < 6800 - ? (c < 6576 - ? (c < 6470 - ? (c < 6448 + : (c <= 4977 || (c < 5024 + ? (c >= 4992 && c <= 5007) + : c <= 5109))) + : (c <= 5117 || (c < 5761 + ? (c < 5743 + ? (c >= 5121 && c <= 5740) + : c <= 5759) + : (c <= 5786 || (c < 5870 + ? (c >= 5792 && c <= 5866) + : c <= 5880))))))))) + : (c <= 5909 || (c < 6688 + ? (c < 6176 + ? (c < 6016 + ? (c < 5984 + ? (c < 5952 + ? (c >= 5919 && c <= 5940) + : c <= 5971) + : (c <= 5996 || (c < 6002 + ? (c >= 5998 && c <= 6000) + : c <= 6003))) + : (c <= 6099 || (c < 6112 + ? (c < 6108 + ? c == 6103 + : c <= 6109) + : (c <= 6121 || (c < 6159 + ? (c >= 6155 && c <= 6157) + : c <= 6169))))) + : (c <= 6264 || (c < 6470 + ? (c < 6400 + ? (c < 6320 + ? (c >= 6272 && c <= 6314) + : c <= 6389) + : (c <= 6430 || (c < 6448 ? (c >= 6432 && c <= 6443) - : c <= 6459) - : (c <= 6509 || (c < 6528 + : c <= 6459))) + : (c <= 6509 || (c < 6576 + ? (c < 6528 ? (c >= 6512 && c <= 6516) - : c <= 6571))) - : (c <= 6601 || (c < 6688 - ? (c < 6656 + : c <= 6571) + : (c <= 6601 || (c < 6656 ? (c >= 6608 && c <= 6618) - : c <= 6683) - : (c <= 6750 || (c < 6783 + : c <= 6683))))))) + : (c <= 6750 || (c < 7232 + ? (c < 6847 + ? (c < 6800 + ? (c < 6783 ? (c >= 6752 && c <= 6780) - : c <= 6793))))) - : (c <= 6809 || (c < 7019 - ? (c < 6847 - ? (c < 6832 + : c <= 6793) + : (c <= 6809 || (c < 6832 ? c == 6823 - : c <= 6845) - : (c <= 6848 || (c < 6992 - ? (c >= 6912 && c <= 6987) - : c <= 7001))) - : (c <= 7027 || (c < 7232 - ? (c < 7168 + : c <= 6845))) + : (c <= 6862 || (c < 7019 + ? (c < 6992 + ? (c >= 6912 && c <= 6988) + : c <= 7001) + : (c <= 7027 || (c < 7168 ? (c >= 7040 && c <= 7155) - : c <= 7223) - : (c <= 7241 || (c >= 7245 && c <= 7293))))))))))) - : (c <= 7304 || (c < 11264 - ? (c < 8178 - ? (c < 8027 - ? (c < 7675 - ? (c < 7376 - ? (c < 7357 - ? (c >= 7312 && c <= 7354) - : c <= 7359) - : (c <= 7378 || (c < 7424 - ? (c >= 7380 && c <= 7418) - : c <= 7673))) - : (c <= 7957 || (c < 8008 - ? (c < 7968 - ? (c >= 7960 && c <= 7965) - : c <= 8005) - : (c <= 8013 || (c < 8025 - ? (c >= 8016 && c <= 8023) - : c <= 8025))))) - : (c <= 8027 || (c < 8130 - ? (c < 8064 - ? (c < 8031 - ? c == 8029 - : c <= 8061) - : (c <= 8116 || (c < 8126 - ? (c >= 8118 && c <= 8124) - : c <= 8126))) - : (c <= 8132 || (c < 8150 - ? (c < 8144 - ? (c >= 8134 && c <= 8140) - : c <= 8147) - : (c <= 8155 || (c >= 8160 && c <= 8172))))))) - : (c <= 8180 || (c < 8458 - ? (c < 8336 + : c <= 7223))))) + : (c <= 7241 || (c < 7380 + ? (c < 7312 + ? (c < 7296 + ? (c >= 7245 && c <= 7293) + : c <= 7304) + : (c <= 7354 || (c < 7376 + ? (c >= 7357 && c <= 7359) + : c <= 7378))) + : (c <= 7418 || (c < 7968 + ? (c < 7960 + ? (c >= 7424 && c <= 7957) + : c <= 7965) + : (c <= 8005 || (c < 8016 + ? (c >= 8008 && c <= 8013) + : c <= 8023))))))))))) + : (c <= 8025 || (c < 11720 + ? (c < 8458 + ? (c < 8178 + ? (c < 8126 + ? (c < 8031 + ? (c < 8029 + ? c == 8027 + : c <= 8029) + : (c <= 8061 || (c < 8118 + ? (c >= 8064 && c <= 8116) + : c <= 8124))) + : (c <= 8126 || (c < 8144 + ? (c < 8134 + ? (c >= 8130 && c <= 8132) + : c <= 8140) + : (c <= 8147 || (c < 8160 + ? (c >= 8150 && c <= 8155) + : c <= 8172))))) + : (c <= 8180 || (c < 8336 ? (c < 8276 ? (c < 8255 ? (c >= 8182 && c <= 8188) @@ -4150,8 +5690,9 @@ static inline bool sym_identifier_character_set_2(int32_t c) { : c <= 8417) : (c <= 8432 || (c < 8455 ? c == 8450 - : c <= 8455))))) - : (c <= 8467 || (c < 8490 + : c <= 8455))))))) + : (c <= 8467 || (c < 11499 + ? (c < 8490 ? (c < 8484 ? (c < 8472 ? c == 8469 @@ -4163,518 +5704,563 @@ static inline bool sym_identifier_character_set_2(int32_t c) { ? (c < 8517 ? (c >= 8508 && c <= 8511) : c <= 8521) - : (c <= 8526 || (c >= 8544 && c <= 8584))))))))) - : (c <= 11310 || (c < 12353 - ? (c < 11696 - ? (c < 11565 - ? (c < 11499 - ? (c < 11360 - ? (c >= 11312 && c <= 11358) - : c <= 11492) - : (c <= 11507 || (c < 11559 + : (c <= 8526 || (c < 11264 + ? (c >= 8544 && c <= 8584) + : c <= 11492))))) + : (c <= 11507 || (c < 11647 + ? (c < 11565 + ? (c < 11559 ? (c >= 11520 && c <= 11557) - : c <= 11559))) - : (c <= 11565 || (c < 11647 - ? (c < 11631 + : c <= 11559) + : (c <= 11565 || (c < 11631 ? (c >= 11568 && c <= 11623) - : c <= 11631) - : (c <= 11670 || (c < 11688 + : c <= 11631))) + : (c <= 11670 || (c < 11696 + ? (c < 11688 ? (c >= 11680 && c <= 11686) - : c <= 11694))))) - : (c <= 11702 || (c < 11744 - ? (c < 11720 - ? (c < 11712 + : c <= 11694) + : (c <= 11702 || (c < 11712 ? (c >= 11704 && c <= 11710) - : c <= 11718) - : (c <= 11726 || (c < 11736 + : c <= 11718))))))))) + : (c <= 11726 || (c < 42623 + ? (c < 12540 + ? (c < 12337 + ? (c < 11744 + ? (c < 11736 ? (c >= 11728 && c <= 11734) - : c <= 11742))) - : (c <= 11775 || (c < 12337 - ? (c < 12321 + : c <= 11742) + : (c <= 11775 || (c < 12321 ? (c >= 12293 && c <= 12295) - : c <= 12335) - : (c <= 12341 || (c >= 12344 && c <= 12348))))))) - : (c <= 12438 || (c < 42192 - ? (c < 12593 - ? (c < 12449 - ? (c < 12445 - ? (c >= 12441 && c <= 12442) - : c <= 12447) - : (c <= 12538 || (c < 12549 - ? (c >= 12540 && c <= 12543) - : c <= 12591))) - : (c <= 12686 || (c < 13312 - ? (c < 12784 - ? (c >= 12704 && c <= 12735) - : c <= 12799) - : (c <= 19903 || (c < 40960 - ? (c >= 19968 && c <= 40956) - : c <= 42124))))) - : (c <= 42237 || (c < 42775 - ? (c < 42560 - ? (c < 42512 - ? (c >= 42240 && c <= 42508) - : c <= 42539) - : (c <= 42607 || (c < 42623 - ? (c >= 42612 && c <= 42621) - : c <= 42737))) - : (c <= 42783 || (c < 42946 - ? (c < 42891 - ? (c >= 42786 && c <= 42888) - : c <= 42943) - : (c <= 42954 || (c >= 42997 && c <= 43047))))))))))))))) - : (c <= 43052 || (c < 71096 - ? (c < 66864 - ? (c < 64914 - ? (c < 43816 - ? (c < 43520 - ? (c < 43261 - ? (c < 43216 - ? (c < 43136 - ? (c >= 43072 && c <= 43123) - : c <= 43205) - : (c <= 43225 || (c < 43259 - ? (c >= 43232 && c <= 43255) - : c <= 43259))) - : (c <= 43309 || (c < 43392 - ? (c < 43360 - ? (c >= 43312 && c <= 43347) - : c <= 43388) - : (c <= 43456 || (c < 43488 - ? (c >= 43471 && c <= 43481) - : c <= 43518))))) - : (c <= 43574 || (c < 43744 - ? (c < 43616 - ? (c < 43600 - ? (c >= 43584 && c <= 43597) - : c <= 43609) - : (c <= 43638 || (c < 43739 + : c <= 12335))) + : (c <= 12341 || (c < 12441 + ? (c < 12353 + ? (c >= 12344 && c <= 12348) + : c <= 12438) + : (c <= 12442 || (c < 12449 + ? (c >= 12445 && c <= 12447) + : c <= 12538))))) + : (c <= 12543 || (c < 19968 + ? (c < 12704 + ? (c < 12593 + ? (c >= 12549 && c <= 12591) + : c <= 12686) + : (c <= 12735 || (c < 13312 + ? (c >= 12784 && c <= 12799) + : c <= 19903))) + : (c <= 42124 || (c < 42512 + ? (c < 42240 + ? (c >= 42192 && c <= 42237) + : c <= 42508) + : (c <= 42539 || (c < 42612 + ? (c >= 42560 && c <= 42607) + : c <= 42621))))))) + : (c <= 42737 || (c < 43232 + ? (c < 42965 + ? (c < 42891 + ? (c < 42786 + ? (c >= 42775 && c <= 42783) + : c <= 42888) + : (c <= 42954 || (c < 42963 + ? (c >= 42960 && c <= 42961) + : c <= 42963))) + : (c <= 42969 || (c < 43072 + ? (c < 43052 + ? (c >= 42994 && c <= 43047) + : c <= 43052) + : (c <= 43123 || (c < 43216 + ? (c >= 43136 && c <= 43205) + : c <= 43225))))) + : (c <= 43255 || (c < 43471 + ? (c < 43312 + ? (c < 43261 + ? c == 43259 + : c <= 43309) + : (c <= 43347 || (c < 43392 + ? (c >= 43360 && c <= 43388) + : c <= 43456))) + : (c <= 43481 || (c < 43584 + ? (c < 43520 + ? (c >= 43488 && c <= 43518) + : c <= 43574) + : (c <= 43597 || (c >= 43600 && c <= 43609))))))))))))))) + : (c <= 43638 || (c < 71453 + ? (c < 67639 + ? (c < 65345 + ? (c < 64312 + ? (c < 43888 + ? (c < 43785 + ? (c < 43744 + ? (c < 43739 ? (c >= 43642 && c <= 43714) - : c <= 43741))) - : (c <= 43759 || (c < 43785 - ? (c < 43777 + : c <= 43741) + : (c <= 43759 || (c < 43777 ? (c >= 43762 && c <= 43766) - : c <= 43782) - : (c <= 43790 || (c < 43808 + : c <= 43782))) + : (c <= 43790 || (c < 43816 + ? (c < 43808 ? (c >= 43793 && c <= 43798) - : c <= 43814))))))) - : (c <= 43822 || (c < 64275 - ? (c < 44032 - ? (c < 43888 - ? (c < 43868 + : c <= 43814) + : (c <= 43822 || (c < 43868 ? (c >= 43824 && c <= 43866) - : c <= 43881) - : (c <= 44010 || (c < 44016 + : c <= 43881))))) + : (c <= 44010 || (c < 63744 + ? (c < 44032 + ? (c < 44016 ? (c >= 44012 && c <= 44013) - : c <= 44025))) - : (c <= 55203 || (c < 63744 - ? (c < 55243 + : c <= 44025) + : (c <= 55203 || (c < 55243 ? (c >= 55216 && c <= 55238) - : c <= 55291) - : (c <= 64109 || (c < 64256 + : c <= 55291))) + : (c <= 64109 || (c < 64275 + ? (c < 64256 ? (c >= 64112 && c <= 64217) - : c <= 64262))))) - : (c <= 64279 || (c < 64323 - ? (c < 64312 - ? (c < 64298 + : c <= 64262) + : (c <= 64279 || (c < 64298 ? (c >= 64285 && c <= 64296) - : c <= 64310) - : (c <= 64316 || (c < 64320 + : c <= 64310))))))) + : (c <= 64316 || (c < 65075 + ? (c < 64612 + ? (c < 64323 + ? (c < 64320 ? c == 64318 - : c <= 64321))) - : (c <= 64324 || (c < 64612 - ? (c < 64467 + : c <= 64321) + : (c <= 64324 || (c < 64467 ? (c >= 64326 && c <= 64433) - : c <= 64605) - : (c <= 64829 || (c >= 64848 && c <= 64911))))))))) - : (c <= 64967 || (c < 65549 - ? (c < 65151 - ? (c < 65137 - ? (c < 65056 - ? (c < 65024 - ? (c >= 65008 && c <= 65017) - : c <= 65039) - : (c <= 65071 || (c < 65101 - ? (c >= 65075 && c <= 65076) - : c <= 65103))) - : (c <= 65137 || (c < 65145 - ? (c < 65143 - ? c == 65139 - : c <= 65143) - : (c <= 65145 || (c < 65149 - ? c == 65147 - : c <= 65149))))) - : (c <= 65276 || (c < 65474 - ? (c < 65343 - ? (c < 65313 - ? (c >= 65296 && c <= 65305) - : c <= 65338) - : (c <= 65343 || (c < 65382 - ? (c >= 65345 && c <= 65370) - : c <= 65470))) - : (c <= 65479 || (c < 65498 - ? (c < 65490 - ? (c >= 65482 && c <= 65487) - : c <= 65495) - : (c <= 65500 || (c >= 65536 && c <= 65547))))))) - : (c <= 65574 || (c < 66349 - ? (c < 65856 - ? (c < 65599 - ? (c < 65596 - ? (c >= 65576 && c <= 65594) - : c <= 65597) - : (c <= 65613 || (c < 65664 - ? (c >= 65616 && c <= 65629) - : c <= 65786))) - : (c <= 65908 || (c < 66208 - ? (c < 66176 - ? c == 66045 - : c <= 66204) - : (c <= 66256 || (c < 66304 - ? c == 66272 - : c <= 66335))))) - : (c <= 66378 || (c < 66560 - ? (c < 66464 - ? (c < 66432 - ? (c >= 66384 && c <= 66426) - : c <= 66461) - : (c <= 66499 || (c < 66513 - ? (c >= 66504 && c <= 66511) - : c <= 66517))) - : (c <= 66717 || (c < 66776 - ? (c < 66736 - ? (c >= 66720 && c <= 66729) - : c <= 66771) - : (c <= 66811 || (c >= 66816 && c <= 66855))))))))))) - : (c <= 66915 || (c < 69632 - ? (c < 68152 - ? (c < 67808 - ? (c < 67594 - ? (c < 67424 - ? (c < 67392 - ? (c >= 67072 && c <= 67382) - : c <= 67413) - : (c <= 67431 || (c < 67592 - ? (c >= 67584 && c <= 67589) - : c <= 67592))) - : (c <= 67637 || (c < 67647 - ? (c < 67644 - ? (c >= 67639 && c <= 67640) - : c <= 67644) - : (c <= 67669 || (c < 67712 - ? (c >= 67680 && c <= 67702) - : c <= 67742))))) - : (c <= 67826 || (c < 68096 - ? (c < 67872 - ? (c < 67840 - ? (c >= 67828 && c <= 67829) - : c <= 67861) - : (c <= 67897 || (c < 68030 - ? (c >= 67968 && c <= 68023) - : c <= 68031))) - : (c <= 68099 || (c < 68117 - ? (c < 68108 - ? (c >= 68101 && c <= 68102) - : c <= 68115) - : (c <= 68119 || (c >= 68121 && c <= 68149))))))) - : (c <= 68154 || (c < 68800 - ? (c < 68352 - ? (c < 68224 - ? (c < 68192 - ? c == 68159 - : c <= 68220) - : (c <= 68252 || (c < 68297 - ? (c >= 68288 && c <= 68295) - : c <= 68326))) - : (c <= 68405 || (c < 68480 - ? (c < 68448 - ? (c >= 68416 && c <= 68437) - : c <= 68466) - : (c <= 68497 || (c < 68736 - ? (c >= 68608 && c <= 68680) - : c <= 68786))))) - : (c <= 68850 || (c < 69376 - ? (c < 69248 - ? (c < 68912 - ? (c >= 68864 && c <= 68903) - : c <= 68921) - : (c <= 69289 || (c < 69296 - ? (c >= 69291 && c <= 69292) - : c <= 69297))) - : (c <= 69404 || (c < 69552 - ? (c < 69424 - ? c == 69415 - : c <= 69456) - : (c <= 69572 || (c >= 69600 && c <= 69622))))))))) - : (c <= 69702 || (c < 70384 - ? (c < 70094 - ? (c < 69942 - ? (c < 69840 - ? (c < 69759 - ? (c >= 69734 && c <= 69743) - : c <= 69818) - : (c <= 69864 || (c < 69888 - ? (c >= 69872 && c <= 69881) - : c <= 69940))) - : (c <= 69951 || (c < 70006 - ? (c < 69968 - ? (c >= 69956 && c <= 69959) - : c <= 70003) - : (c <= 70006 || (c < 70089 - ? (c >= 70016 && c <= 70084) - : c <= 70092))))) - : (c <= 70106 || (c < 70280 - ? (c < 70163 - ? (c < 70144 - ? c == 70108 - : c <= 70161) - : (c <= 70199 || (c < 70272 - ? c == 70206 - : c <= 70278))) - : (c <= 70280 || (c < 70303 - ? (c < 70287 - ? (c >= 70282 && c <= 70285) - : c <= 70301) - : (c <= 70312 || (c >= 70320 && c <= 70378))))))) - : (c <= 70393 || (c < 70487 - ? (c < 70450 - ? (c < 70415 - ? (c < 70405 - ? (c >= 70400 && c <= 70403) - : c <= 70412) - : (c <= 70416 || (c < 70442 - ? (c >= 70419 && c <= 70440) - : c <= 70448))) - : (c <= 70451 || (c < 70471 - ? (c < 70459 - ? (c >= 70453 && c <= 70457) - : c <= 70468) - : (c <= 70472 || (c < 70480 - ? (c >= 70475 && c <= 70477) - : c <= 70480))))) - : (c <= 70487 || (c < 70750 - ? (c < 70512 - ? (c < 70502 - ? (c >= 70493 && c <= 70499) - : c <= 70508) - : (c <= 70516 || (c < 70736 - ? (c >= 70656 && c <= 70730) - : c <= 70745))) - : (c <= 70753 || (c < 70864 - ? (c < 70855 - ? (c >= 70784 && c <= 70853) - : c <= 70855) - : (c <= 70873 || (c >= 71040 && c <= 71093))))))))))))) - : (c <= 71104 || (c < 119894 - ? (c < 73104 - ? (c < 72163 - ? (c < 71935 - ? (c < 71360 - ? (c < 71236 - ? (c < 71168 + : c <= 64605))) + : (c <= 64829 || (c < 65008 + ? (c < 64914 + ? (c >= 64848 && c <= 64911) + : c <= 64967) + : (c <= 65017 || (c < 65056 + ? (c >= 65024 && c <= 65039) + : c <= 65071))))) + : (c <= 65076 || (c < 65147 + ? (c < 65139 + ? (c < 65137 + ? (c >= 65101 && c <= 65103) + : c <= 65137) + : (c <= 65139 || (c < 65145 + ? c == 65143 + : c <= 65145))) + : (c <= 65147 || (c < 65296 + ? (c < 65151 + ? c == 65149 + : c <= 65276) + : (c <= 65305 || (c < 65343 + ? (c >= 65313 && c <= 65338) + : c <= 65343))))))))) + : (c <= 65370 || (c < 66513 + ? (c < 65664 + ? (c < 65536 + ? (c < 65482 + ? (c < 65474 + ? (c >= 65382 && c <= 65470) + : c <= 65479) + : (c <= 65487 || (c < 65498 + ? (c >= 65490 && c <= 65495) + : c <= 65500))) + : (c <= 65547 || (c < 65596 + ? (c < 65576 + ? (c >= 65549 && c <= 65574) + : c <= 65594) + : (c <= 65597 || (c < 65616 + ? (c >= 65599 && c <= 65613) + : c <= 65629))))) + : (c <= 65786 || (c < 66304 + ? (c < 66176 + ? (c < 66045 + ? (c >= 65856 && c <= 65908) + : c <= 66045) + : (c <= 66204 || (c < 66272 + ? (c >= 66208 && c <= 66256) + : c <= 66272))) + : (c <= 66335 || (c < 66432 + ? (c < 66384 + ? (c >= 66349 && c <= 66378) + : c <= 66426) + : (c <= 66461 || (c < 66504 + ? (c >= 66464 && c <= 66499) + : c <= 66511))))))) + : (c <= 66517 || (c < 66979 + ? (c < 66864 + ? (c < 66736 + ? (c < 66720 + ? (c >= 66560 && c <= 66717) + : c <= 66729) + : (c <= 66771 || (c < 66816 + ? (c >= 66776 && c <= 66811) + : c <= 66855))) + : (c <= 66915 || (c < 66956 + ? (c < 66940 + ? (c >= 66928 && c <= 66938) + : c <= 66954) + : (c <= 66962 || (c < 66967 + ? (c >= 66964 && c <= 66965) + : c <= 66977))))) + : (c <= 66993 || (c < 67456 + ? (c < 67072 + ? (c < 67003 + ? (c >= 66995 && c <= 67001) + : c <= 67004) + : (c <= 67382 || (c < 67424 + ? (c >= 67392 && c <= 67413) + : c <= 67431))) + : (c <= 67461 || (c < 67584 + ? (c < 67506 + ? (c >= 67463 && c <= 67504) + : c <= 67514) + : (c <= 67589 || (c < 67594 + ? c == 67592 + : c <= 67637))))))))))) + : (c <= 67640 || (c < 69956 + ? (c < 68448 + ? (c < 68101 + ? (c < 67828 + ? (c < 67680 + ? (c < 67647 + ? c == 67644 + : c <= 67669) + : (c <= 67702 || (c < 67808 + ? (c >= 67712 && c <= 67742) + : c <= 67826))) + : (c <= 67829 || (c < 67968 + ? (c < 67872 + ? (c >= 67840 && c <= 67861) + : c <= 67897) + : (c <= 68023 || (c < 68096 + ? (c >= 68030 && c <= 68031) + : c <= 68099))))) + : (c <= 68102 || (c < 68192 + ? (c < 68121 + ? (c < 68117 + ? (c >= 68108 && c <= 68115) + : c <= 68119) + : (c <= 68149 || (c < 68159 + ? (c >= 68152 && c <= 68154) + : c <= 68159))) + : (c <= 68220 || (c < 68297 + ? (c < 68288 + ? (c >= 68224 && c <= 68252) + : c <= 68295) + : (c <= 68326 || (c < 68416 + ? (c >= 68352 && c <= 68405) + : c <= 68437))))))) + : (c <= 68466 || (c < 69424 + ? (c < 68912 + ? (c < 68736 + ? (c < 68608 + ? (c >= 68480 && c <= 68497) + : c <= 68680) + : (c <= 68786 || (c < 68864 + ? (c >= 68800 && c <= 68850) + : c <= 68903))) + : (c <= 68921 || (c < 69296 + ? (c < 69291 + ? (c >= 69248 && c <= 69289) + : c <= 69292) + : (c <= 69297 || (c < 69415 + ? (c >= 69376 && c <= 69404) + : c <= 69415))))) + : (c <= 69456 || (c < 69759 + ? (c < 69600 + ? (c < 69552 + ? (c >= 69488 && c <= 69509) + : c <= 69572) + : (c <= 69622 || (c < 69734 + ? (c >= 69632 && c <= 69702) + : c <= 69749))) + : (c <= 69818 || (c < 69872 + ? (c < 69840 + ? c == 69826 + : c <= 69864) + : (c <= 69881 || (c < 69942 + ? (c >= 69888 && c <= 69940) + : c <= 69951))))))))) + : (c <= 69959 || (c < 70459 + ? (c < 70282 + ? (c < 70108 + ? (c < 70016 + ? (c < 70006 + ? (c >= 69968 && c <= 70003) + : c <= 70006) + : (c <= 70084 || (c < 70094 + ? (c >= 70089 && c <= 70092) + : c <= 70106))) + : (c <= 70108 || (c < 70206 + ? (c < 70163 + ? (c >= 70144 && c <= 70161) + : c <= 70199) + : (c <= 70206 || (c < 70280 + ? (c >= 70272 && c <= 70278) + : c <= 70280))))) + : (c <= 70285 || (c < 70405 + ? (c < 70320 + ? (c < 70303 + ? (c >= 70287 && c <= 70301) + : c <= 70312) + : (c <= 70378 || (c < 70400 + ? (c >= 70384 && c <= 70393) + : c <= 70403))) + : (c <= 70412 || (c < 70442 + ? (c < 70419 + ? (c >= 70415 && c <= 70416) + : c <= 70440) + : (c <= 70448 || (c < 70453 + ? (c >= 70450 && c <= 70451) + : c <= 70457))))))) + : (c <= 70468 || (c < 70855 + ? (c < 70502 + ? (c < 70480 + ? (c < 70475 + ? (c >= 70471 && c <= 70472) + : c <= 70477) + : (c <= 70480 || (c < 70493 + ? c == 70487 + : c <= 70499))) + : (c <= 70508 || (c < 70736 + ? (c < 70656 + ? (c >= 70512 && c <= 70516) + : c <= 70730) + : (c <= 70745 || (c < 70784 + ? (c >= 70750 && c <= 70753) + : c <= 70853))))) + : (c <= 70855 || (c < 71236 + ? (c < 71096 + ? (c < 71040 + ? (c >= 70864 && c <= 70873) + : c <= 71093) + : (c <= 71104 || (c < 71168 ? (c >= 71128 && c <= 71133) - : c <= 71232) - : (c <= 71236 || (c < 71296 + : c <= 71232))) + : (c <= 71236 || (c < 71360 + ? (c < 71296 ? (c >= 71248 && c <= 71257) - : c <= 71352))) - : (c <= 71369 || (c < 71472 - ? (c < 71453 - ? (c >= 71424 && c <= 71450) - : c <= 71467) - : (c <= 71481 || (c < 71840 - ? (c >= 71680 && c <= 71738) - : c <= 71913))))) - : (c <= 71942 || (c < 71995 - ? (c < 71957 - ? (c < 71948 - ? c == 71945 - : c <= 71955) - : (c <= 71958 || (c < 71991 - ? (c >= 71960 && c <= 71989) - : c <= 71992))) - : (c <= 72003 || (c < 72106 - ? (c < 72096 - ? (c >= 72016 && c <= 72025) - : c <= 72103) - : (c <= 72151 || (c >= 72154 && c <= 72161))))))) - : (c <= 72164 || (c < 72873 - ? (c < 72704 - ? (c < 72272 - ? (c < 72263 - ? (c >= 72192 && c <= 72254) - : c <= 72263) - : (c <= 72345 || (c < 72384 - ? c == 72349 - : c <= 72440))) - : (c <= 72712 || (c < 72784 - ? (c < 72760 - ? (c >= 72714 && c <= 72758) - : c <= 72768) - : (c <= 72793 || (c < 72850 - ? (c >= 72818 && c <= 72847) - : c <= 72871))))) - : (c <= 72886 || (c < 73023 - ? (c < 72971 - ? (c < 72968 - ? (c >= 72960 && c <= 72966) - : c <= 72969) - : (c <= 73014 || (c < 73020 - ? c == 73018 - : c <= 73021))) - : (c <= 73031 || (c < 73063 - ? (c < 73056 - ? (c >= 73040 && c <= 73049) - : c <= 73061) - : (c <= 73064 || (c >= 73066 && c <= 73102))))))))) - : (c <= 73105 || (c < 94095 - ? (c < 92768 - ? (c < 74752 - ? (c < 73440 - ? (c < 73120 + : c <= 71352) + : (c <= 71369 || (c >= 71424 && c <= 71450))))))))))))) + : (c <= 71467 || (c < 119973 + ? (c < 77824 + ? (c < 72760 + ? (c < 72016 + ? (c < 71945 + ? (c < 71680 + ? (c < 71488 + ? (c >= 71472 && c <= 71481) + : c <= 71494) + : (c <= 71738 || (c < 71935 + ? (c >= 71840 && c <= 71913) + : c <= 71942))) + : (c <= 71945 || (c < 71960 + ? (c < 71957 + ? (c >= 71948 && c <= 71955) + : c <= 71958) + : (c <= 71989 || (c < 71995 + ? (c >= 71991 && c <= 71992) + : c <= 72003))))) + : (c <= 72025 || (c < 72263 + ? (c < 72154 + ? (c < 72106 + ? (c >= 72096 && c <= 72103) + : c <= 72151) + : (c <= 72161 || (c < 72192 + ? (c >= 72163 && c <= 72164) + : c <= 72254))) + : (c <= 72263 || (c < 72368 + ? (c < 72349 + ? (c >= 72272 && c <= 72345) + : c <= 72349) + : (c <= 72440 || (c < 72714 + ? (c >= 72704 && c <= 72712) + : c <= 72758))))))) + : (c <= 72768 || (c < 73056 + ? (c < 72968 + ? (c < 72850 + ? (c < 72818 + ? (c >= 72784 && c <= 72793) + : c <= 72847) + : (c <= 72871 || (c < 72960 + ? (c >= 72873 && c <= 72886) + : c <= 72966))) + : (c <= 72969 || (c < 73020 + ? (c < 73018 + ? (c >= 72971 && c <= 73014) + : c <= 73018) + : (c <= 73021 || (c < 73040 + ? (c >= 73023 && c <= 73031) + : c <= 73049))))) + : (c <= 73061 || (c < 73440 + ? (c < 73104 + ? (c < 73066 + ? (c >= 73063 && c <= 73064) + : c <= 73102) + : (c <= 73105 || (c < 73120 ? (c >= 73107 && c <= 73112) - : c <= 73129) - : (c <= 73462 || (c < 73728 + : c <= 73129))) + : (c <= 73462 || (c < 74752 + ? (c < 73728 ? c == 73648 - : c <= 74649))) - : (c <= 74862 || (c < 82944 - ? (c < 77824 + : c <= 74649) + : (c <= 74862 || (c < 77712 ? (c >= 74880 && c <= 75075) - : c <= 78894) - : (c <= 83526 || (c < 92736 - ? (c >= 92160 && c <= 92728) - : c <= 92766))))) - : (c <= 92777 || (c < 93027 - ? (c < 92928 + : c <= 77808))))))))) + : (c <= 78894 || (c < 110576 + ? (c < 93027 + ? (c < 92864 + ? (c < 92736 + ? (c < 92160 + ? (c >= 82944 && c <= 83526) + : c <= 92728) + : (c <= 92766 || (c < 92784 + ? (c >= 92768 && c <= 92777) + : c <= 92862))) + : (c <= 92873 || (c < 92928 ? (c < 92912 ? (c >= 92880 && c <= 92909) : c <= 92916) : (c <= 92982 || (c < 93008 ? (c >= 92992 && c <= 92995) - : c <= 93017))) - : (c <= 93047 || (c < 93952 + : c <= 93017))))) + : (c <= 93047 || (c < 94176 + ? (c < 93952 ? (c < 93760 ? (c >= 93053 && c <= 93071) : c <= 93823) - : (c <= 94026 || (c >= 94031 && c <= 94087))))))) - : (c <= 94111 || (c < 113776 - ? (c < 101632 - ? (c < 94192 - ? (c < 94179 - ? (c >= 94176 && c <= 94177) - : c <= 94180) - : (c <= 94193 || (c < 100352 - ? (c >= 94208 && c <= 100343) - : c <= 101589))) - : (c <= 101640 || (c < 110948 - ? (c < 110928 - ? (c >= 110592 && c <= 110878) - : c <= 110930) - : (c <= 110951 || (c < 113664 - ? (c >= 110960 && c <= 111355) - : c <= 113770))))) - : (c <= 113788 || (c < 119163 - ? (c < 113821 - ? (c < 113808 - ? (c >= 113792 && c <= 113800) - : c <= 113817) - : (c <= 113822 || (c < 119149 - ? (c >= 119141 && c <= 119145) - : c <= 119154))) - : (c <= 119170 || (c < 119362 - ? (c < 119210 - ? (c >= 119173 && c <= 119179) - : c <= 119213) - : (c <= 119364 || (c >= 119808 && c <= 119892))))))))))) - : (c <= 119964 || (c < 124928 - ? (c < 120630 - ? (c < 120094 - ? (c < 119995 - ? (c < 119973 - ? (c < 119970 + : (c <= 94026 || (c < 94095 + ? (c >= 94031 && c <= 94087) + : c <= 94111))) + : (c <= 94177 || (c < 94208 + ? (c < 94192 + ? (c >= 94179 && c <= 94180) + : c <= 94193) + : (c <= 100343 || (c < 101632 + ? (c >= 100352 && c <= 101589) + : c <= 101640))))))) + : (c <= 110579 || (c < 118528 + ? (c < 110960 + ? (c < 110592 + ? (c < 110589 + ? (c >= 110581 && c <= 110587) + : c <= 110590) + : (c <= 110882 || (c < 110948 + ? (c >= 110928 && c <= 110930) + : c <= 110951))) + : (c <= 111355 || (c < 113792 + ? (c < 113776 + ? (c >= 113664 && c <= 113770) + : c <= 113788) + : (c <= 113800 || (c < 113821 + ? (c >= 113808 && c <= 113817) + : c <= 113822))))) + : (c <= 118573 || (c < 119210 + ? (c < 119149 + ? (c < 119141 + ? (c >= 118576 && c <= 118598) + : c <= 119145) + : (c <= 119154 || (c < 119173 + ? (c >= 119163 && c <= 119170) + : c <= 119179))) + : (c <= 119213 || (c < 119894 + ? (c < 119808 + ? (c >= 119362 && c <= 119364) + : c <= 119892) + : (c <= 119964 || (c < 119970 ? (c >= 119966 && c <= 119967) - : c <= 119970) - : (c <= 119974 || (c < 119982 + : c <= 119970))))))))))) + : (c <= 119974 || (c < 124912 + ? (c < 120746 + ? (c < 120134 + ? (c < 120071 + ? (c < 119995 + ? (c < 119982 ? (c >= 119977 && c <= 119980) - : c <= 119993))) - : (c <= 119995 || (c < 120071 - ? (c < 120005 + : c <= 119993) + : (c <= 119995 || (c < 120005 ? (c >= 119997 && c <= 120003) - : c <= 120069) - : (c <= 120074 || (c < 120086 + : c <= 120069))) + : (c <= 120074 || (c < 120094 + ? (c < 120086 ? (c >= 120077 && c <= 120084) - : c <= 120092))))) - : (c <= 120121 || (c < 120488 - ? (c < 120134 - ? (c < 120128 + : c <= 120092) + : (c <= 120121 || (c < 120128 ? (c >= 120123 && c <= 120126) - : c <= 120132) - : (c <= 120134 || (c < 120146 + : c <= 120132))))) + : (c <= 120134 || (c < 120572 + ? (c < 120488 + ? (c < 120146 ? (c >= 120138 && c <= 120144) - : c <= 120485))) - : (c <= 120512 || (c < 120572 - ? (c < 120540 + : c <= 120485) + : (c <= 120512 || (c < 120540 ? (c >= 120514 && c <= 120538) - : c <= 120570) - : (c <= 120596 || (c >= 120598 && c <= 120628))))))) - : (c <= 120654 || (c < 121505 - ? (c < 120782 - ? (c < 120714 - ? (c < 120688 - ? (c >= 120656 && c <= 120686) - : c <= 120712) - : (c <= 120744 || (c < 120772 - ? (c >= 120746 && c <= 120770) - : c <= 120779))) - : (c <= 120831 || (c < 121461 - ? (c < 121403 - ? (c >= 121344 && c <= 121398) - : c <= 121452) - : (c <= 121461 || (c < 121499 - ? c == 121476 - : c <= 121503))))) - : (c <= 121519 || (c < 123136 - ? (c < 122907 - ? (c < 122888 + : c <= 120570))) + : (c <= 120596 || (c < 120656 + ? (c < 120630 + ? (c >= 120598 && c <= 120628) + : c <= 120654) + : (c <= 120686 || (c < 120714 + ? (c >= 120688 && c <= 120712) + : c <= 120744))))))) + : (c <= 120770 || (c < 122907 + ? (c < 121476 + ? (c < 121344 + ? (c < 120782 + ? (c >= 120772 && c <= 120779) + : c <= 120831) + : (c <= 121398 || (c < 121461 + ? (c >= 121403 && c <= 121452) + : c <= 121461))) + : (c <= 121476 || (c < 122624 + ? (c < 121505 + ? (c >= 121499 && c <= 121503) + : c <= 121519) + : (c <= 122654 || (c < 122888 ? (c >= 122880 && c <= 122886) - : c <= 122904) - : (c <= 122913 || (c < 122918 + : c <= 122904))))) + : (c <= 122913 || (c < 123214 + ? (c < 123136 + ? (c < 122918 ? (c >= 122915 && c <= 122916) - : c <= 122922))) - : (c <= 123180 || (c < 123214 - ? (c < 123200 + : c <= 122922) + : (c <= 123180 || (c < 123200 ? (c >= 123184 && c <= 123197) - : c <= 123209) - : (c <= 123214 || (c >= 123584 && c <= 123641))))))))) - : (c <= 125124 || (c < 126557 - ? (c < 126523 - ? (c < 126497 - ? (c < 125264 - ? (c < 125184 - ? (c >= 125136 && c <= 125142) - : c <= 125259) - : (c <= 125273 || (c < 126469 - ? (c >= 126464 && c <= 126467) - : c <= 126495))) - : (c <= 126498 || (c < 126505 - ? (c < 126503 - ? c == 126500 - : c <= 126503) - : (c <= 126514 || (c < 126521 - ? (c >= 126516 && c <= 126519) - : c <= 126521))))) - : (c <= 126523 || (c < 126545 - ? (c < 126537 - ? (c < 126535 - ? c == 126530 - : c <= 126535) - : (c <= 126537 || (c < 126541 - ? c == 126539 - : c <= 126543))) - : (c <= 126546 || (c < 126553 - ? (c < 126551 - ? c == 126548 - : c <= 126551) - : (c <= 126553 || c == 126555)))))) + : c <= 123209))) + : (c <= 123214 || (c < 124896 + ? (c < 123584 + ? (c >= 123536 && c <= 123566) + : c <= 123641) + : (c <= 124902 || (c < 124909 + ? (c >= 124904 && c <= 124907) + : c <= 124910))))))))) + : (c <= 124926 || (c < 126557 + ? (c < 126521 + ? (c < 126469 + ? (c < 125184 + ? (c < 125136 + ? (c >= 124928 && c <= 125124) + : c <= 125142) + : (c <= 125259 || (c < 126464 + ? (c >= 125264 && c <= 125273) + : c <= 126467))) + : (c <= 126495 || (c < 126503 + ? (c < 126500 + ? (c >= 126497 && c <= 126498) + : c <= 126500) + : (c <= 126503 || (c < 126516 + ? (c >= 126505 && c <= 126514) + : c <= 126519))))) + : (c <= 126521 || (c < 126541 + ? (c < 126535 + ? (c < 126530 + ? c == 126523 + : c <= 126530) + : (c <= 126535 || (c < 126539 + ? c == 126537 + : c <= 126539))) + : (c <= 126543 || (c < 126551 + ? (c < 126548 + ? (c >= 126545 && c <= 126546) + : c <= 126548) + : (c <= 126551 || (c < 126555 + ? c == 126553 + : c <= 126555))))))) : (c <= 126557 || (c < 126629 ? (c < 126580 ? (c < 126564 @@ -4696,8 +6282,8 @@ static inline bool sym_identifier_character_set_2(int32_t c) { ? (c < 130032 ? (c >= 126635 && c <= 126651) : c <= 130041) - : (c <= 173789 || (c < 177984 - ? (c >= 173824 && c <= 177972) + : (c <= 173791 || (c < 177984 + ? (c >= 173824 && c <= 177976) : c <= 178205))) : (c <= 183969 || (c < 196608 ? (c < 194560 @@ -6153,11 +7739,11 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [57] = {.lex_state = 50, .external_lex_state = 3}, [58] = {.lex_state = 50, .external_lex_state = 3}, [59] = {.lex_state = 50, .external_lex_state = 3}, - [60] = {.lex_state = 50, .external_lex_state = 2}, - [61] = {.lex_state = 50, .external_lex_state = 3}, + [60] = {.lex_state = 50, .external_lex_state = 3}, + [61] = {.lex_state = 50, .external_lex_state = 2}, [62] = {.lex_state = 50, .external_lex_state = 3}, - [63] = {.lex_state = 50, .external_lex_state = 3}, - [64] = {.lex_state = 50, .external_lex_state = 2}, + [63] = {.lex_state = 50, .external_lex_state = 2}, + [64] = {.lex_state = 50, .external_lex_state = 3}, [65] = {.lex_state = 50, .external_lex_state = 3}, [66] = {.lex_state = 50, .external_lex_state = 4}, [67] = {.lex_state = 50, .external_lex_state = 4}, @@ -6165,7 +7751,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [69] = {.lex_state = 50, .external_lex_state = 5}, [70] = {.lex_state = 50, .external_lex_state = 5}, [71] = {.lex_state = 50, .external_lex_state = 5}, - [72] = {.lex_state = 50, .external_lex_state = 5}, + [72] = {.lex_state = 50, .external_lex_state = 4}, [73] = {.lex_state = 50, .external_lex_state = 5}, [74] = {.lex_state = 50, .external_lex_state = 5}, [75] = {.lex_state = 50, .external_lex_state = 5}, @@ -6218,7 +7804,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [122] = {.lex_state = 50, .external_lex_state = 5}, [123] = {.lex_state = 50, .external_lex_state = 5}, [124] = {.lex_state = 50, .external_lex_state = 5}, - [125] = {.lex_state = 50, .external_lex_state = 4}, + [125] = {.lex_state = 50, .external_lex_state = 5}, [126] = {.lex_state = 50, .external_lex_state = 5}, [127] = {.lex_state = 50, .external_lex_state = 4}, [128] = {.lex_state = 50, .external_lex_state = 4}, @@ -6230,15 +7816,15 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [134] = {.lex_state = 50, .external_lex_state = 4}, [135] = {.lex_state = 50, .external_lex_state = 2}, [136] = {.lex_state = 50, .external_lex_state = 2}, - [137] = {.lex_state = 14, .external_lex_state = 2}, - [138] = {.lex_state = 50, .external_lex_state = 2}, + [137] = {.lex_state = 50, .external_lex_state = 2}, + [138] = {.lex_state = 14, .external_lex_state = 2}, [139] = {.lex_state = 14, .external_lex_state = 2}, [140] = {.lex_state = 14, .external_lex_state = 2}, - [141] = {.lex_state = 50, .external_lex_state = 4}, - [142] = {.lex_state = 14, .external_lex_state = 2}, - [143] = {.lex_state = 50, .external_lex_state = 4}, + [141] = {.lex_state = 14, .external_lex_state = 2}, + [142] = {.lex_state = 50, .external_lex_state = 4}, + [143] = {.lex_state = 50, .external_lex_state = 2}, [144] = {.lex_state = 50, .external_lex_state = 2}, - [145] = {.lex_state = 50, .external_lex_state = 2}, + [145] = {.lex_state = 50, .external_lex_state = 4}, [146] = {.lex_state = 50, .external_lex_state = 2}, [147] = {.lex_state = 14, .external_lex_state = 2}, [148] = {.lex_state = 50, .external_lex_state = 2}, @@ -6249,19 +7835,19 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [153] = {.lex_state = 50, .external_lex_state = 2}, [154] = {.lex_state = 50, .external_lex_state = 2}, [155] = {.lex_state = 14, .external_lex_state = 2}, - [156] = {.lex_state = 14, .external_lex_state = 2}, + [156] = {.lex_state = 50, .external_lex_state = 2}, [157] = {.lex_state = 50, .external_lex_state = 2}, [158] = {.lex_state = 50, .external_lex_state = 2}, [159] = {.lex_state = 50, .external_lex_state = 2}, - [160] = {.lex_state = 50, .external_lex_state = 2}, - [161] = {.lex_state = 50, .external_lex_state = 2}, + [160] = {.lex_state = 14, .external_lex_state = 2}, + [161] = {.lex_state = 14, .external_lex_state = 2}, [162] = {.lex_state = 14, .external_lex_state = 2}, - [163] = {.lex_state = 50, .external_lex_state = 2}, - [164] = {.lex_state = 14, .external_lex_state = 2}, - [165] = {.lex_state = 14, .external_lex_state = 2}, + [163] = {.lex_state = 14, .external_lex_state = 2}, + [164] = {.lex_state = 50, .external_lex_state = 2}, + [165] = {.lex_state = 50, .external_lex_state = 2}, [166] = {.lex_state = 50, .external_lex_state = 2}, [167] = {.lex_state = 50, .external_lex_state = 2}, - [168] = {.lex_state = 50, .external_lex_state = 2}, + [168] = {.lex_state = 50, .external_lex_state = 4}, [169] = {.lex_state = 50, .external_lex_state = 2}, [170] = {.lex_state = 50, .external_lex_state = 2}, [171] = {.lex_state = 50, .external_lex_state = 2}, @@ -6270,182 +7856,182 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [174] = {.lex_state = 50, .external_lex_state = 2}, [175] = {.lex_state = 50, .external_lex_state = 2}, [176] = {.lex_state = 50, .external_lex_state = 2}, - [177] = {.lex_state = 50, .external_lex_state = 4}, + [177] = {.lex_state = 50, .external_lex_state = 2}, [178] = {.lex_state = 50, .external_lex_state = 4}, [179] = {.lex_state = 50, .external_lex_state = 2}, [180] = {.lex_state = 50, .external_lex_state = 2}, [181] = {.lex_state = 50, .external_lex_state = 2}, [182] = {.lex_state = 50, .external_lex_state = 2}, [183] = {.lex_state = 50, .external_lex_state = 2}, - [184] = {.lex_state = 50, .external_lex_state = 2}, - [185] = {.lex_state = 50, .external_lex_state = 2}, + [184] = {.lex_state = 50, .external_lex_state = 4}, + [185] = {.lex_state = 50, .external_lex_state = 4}, [186] = {.lex_state = 50, .external_lex_state = 2}, [187] = {.lex_state = 50, .external_lex_state = 2}, [188] = {.lex_state = 50, .external_lex_state = 2}, [189] = {.lex_state = 50, .external_lex_state = 2}, - [190] = {.lex_state = 50, .external_lex_state = 4}, + [190] = {.lex_state = 50, .external_lex_state = 2}, [191] = {.lex_state = 50, .external_lex_state = 2}, - [192] = {.lex_state = 50, .external_lex_state = 4}, + [192] = {.lex_state = 50, .external_lex_state = 2}, [193] = {.lex_state = 50, .external_lex_state = 2}, - [194] = {.lex_state = 50, .external_lex_state = 2}, + [194] = {.lex_state = 50, .external_lex_state = 4}, [195] = {.lex_state = 50, .external_lex_state = 2}, [196] = {.lex_state = 50, .external_lex_state = 2}, [197] = {.lex_state = 50, .external_lex_state = 2}, [198] = {.lex_state = 50, .external_lex_state = 2}, [199] = {.lex_state = 50, .external_lex_state = 2}, [200] = {.lex_state = 50, .external_lex_state = 2}, - [201] = {.lex_state = 50, .external_lex_state = 4}, + [201] = {.lex_state = 50, .external_lex_state = 2}, [202] = {.lex_state = 50, .external_lex_state = 2}, - [203] = {.lex_state = 50, .external_lex_state = 2}, + [203] = {.lex_state = 50, .external_lex_state = 4}, [204] = {.lex_state = 50, .external_lex_state = 2}, [205] = {.lex_state = 50, .external_lex_state = 2}, [206] = {.lex_state = 50, .external_lex_state = 2}, [207] = {.lex_state = 50, .external_lex_state = 2}, [208] = {.lex_state = 50, .external_lex_state = 2}, - [209] = {.lex_state = 50, .external_lex_state = 4}, + [209] = {.lex_state = 50, .external_lex_state = 2}, [210] = {.lex_state = 50, .external_lex_state = 2}, [211] = {.lex_state = 50, .external_lex_state = 2}, - [212] = {.lex_state = 50, .external_lex_state = 2}, - [213] = {.lex_state = 16}, + [212] = {.lex_state = 14, .external_lex_state = 2}, + [213] = {.lex_state = 14, .external_lex_state = 2}, [214] = {.lex_state = 14, .external_lex_state = 2}, - [215] = {.lex_state = 14, .external_lex_state = 2}, + [215] = {.lex_state = 50, .external_lex_state = 2}, [216] = {.lex_state = 50, .external_lex_state = 2}, - [217] = {.lex_state = 14, .external_lex_state = 2}, - [218] = {.lex_state = 14, .external_lex_state = 2}, - [219] = {.lex_state = 14, .external_lex_state = 2}, - [220] = {.lex_state = 16}, - [221] = {.lex_state = 50, .external_lex_state = 2}, + [217] = {.lex_state = 16}, + [218] = {.lex_state = 50, .external_lex_state = 2}, + [219] = {.lex_state = 16}, + [220] = {.lex_state = 14, .external_lex_state = 2}, + [221] = {.lex_state = 14, .external_lex_state = 2}, [222] = {.lex_state = 14, .external_lex_state = 2}, - [223] = {.lex_state = 50, .external_lex_state = 3}, + [223] = {.lex_state = 50, .external_lex_state = 2}, [224] = {.lex_state = 50, .external_lex_state = 2}, [225] = {.lex_state = 50, .external_lex_state = 2}, - [226] = {.lex_state = 14, .external_lex_state = 2}, + [226] = {.lex_state = 50, .external_lex_state = 3}, [227] = {.lex_state = 50, .external_lex_state = 3}, [228] = {.lex_state = 50, .external_lex_state = 2}, - [229] = {.lex_state = 50, .external_lex_state = 2}, + [229] = {.lex_state = 50, .external_lex_state = 3}, [230] = {.lex_state = 50, .external_lex_state = 2}, [231] = {.lex_state = 50, .external_lex_state = 2}, - [232] = {.lex_state = 50, .external_lex_state = 3}, - [233] = {.lex_state = 50, .external_lex_state = 3}, - [234] = {.lex_state = 50, .external_lex_state = 2}, - [235] = {.lex_state = 50, .external_lex_state = 2}, + [232] = {.lex_state = 50, .external_lex_state = 2}, + [233] = {.lex_state = 50, .external_lex_state = 2}, + [234] = {.lex_state = 50, .external_lex_state = 3}, + [235] = {.lex_state = 14, .external_lex_state = 2}, [236] = {.lex_state = 50, .external_lex_state = 2}, [237] = {.lex_state = 50, .external_lex_state = 2}, [238] = {.lex_state = 50, .external_lex_state = 2}, [239] = {.lex_state = 15, .external_lex_state = 6}, [240] = {.lex_state = 50, .external_lex_state = 2}, - [241] = {.lex_state = 50, .external_lex_state = 2}, + [241] = {.lex_state = 15, .external_lex_state = 6}, [242] = {.lex_state = 50, .external_lex_state = 2}, [243] = {.lex_state = 50, .external_lex_state = 2}, [244] = {.lex_state = 50, .external_lex_state = 2}, [245] = {.lex_state = 50, .external_lex_state = 2}, - [246] = {.lex_state = 15, .external_lex_state = 6}, + [246] = {.lex_state = 50, .external_lex_state = 2}, [247] = {.lex_state = 50, .external_lex_state = 2}, [248] = {.lex_state = 50, .external_lex_state = 2}, [249] = {.lex_state = 50, .external_lex_state = 2}, [250] = {.lex_state = 50, .external_lex_state = 2}, [251] = {.lex_state = 50, .external_lex_state = 2}, - [252] = {.lex_state = 50, .external_lex_state = 3}, - [253] = {.lex_state = 50, .external_lex_state = 2}, - [254] = {.lex_state = 50, .external_lex_state = 2}, - [255] = {.lex_state = 50, .external_lex_state = 2}, - [256] = {.lex_state = 50, .external_lex_state = 2}, + [252] = {.lex_state = 50, .external_lex_state = 2}, + [253] = {.lex_state = 50, .external_lex_state = 3}, + [254] = {.lex_state = 50, .external_lex_state = 3}, + [255] = {.lex_state = 50, .external_lex_state = 3}, + [256] = {.lex_state = 15, .external_lex_state = 4}, [257] = {.lex_state = 50, .external_lex_state = 2}, [258] = {.lex_state = 50, .external_lex_state = 2}, [259] = {.lex_state = 50, .external_lex_state = 2}, [260] = {.lex_state = 50, .external_lex_state = 2}, - [261] = {.lex_state = 50, .external_lex_state = 3}, + [261] = {.lex_state = 50, .external_lex_state = 2}, [262] = {.lex_state = 50, .external_lex_state = 2}, [263] = {.lex_state = 50, .external_lex_state = 3}, - [264] = {.lex_state = 50, .external_lex_state = 3}, - [265] = {.lex_state = 50, .external_lex_state = 2}, - [266] = {.lex_state = 50, .external_lex_state = 2}, + [264] = {.lex_state = 50, .external_lex_state = 2}, + [265] = {.lex_state = 14, .external_lex_state = 2}, + [266] = {.lex_state = 50, .external_lex_state = 3}, [267] = {.lex_state = 50, .external_lex_state = 2}, [268] = {.lex_state = 50, .external_lex_state = 3}, - [269] = {.lex_state = 50, .external_lex_state = 3}, - [270] = {.lex_state = 50, .external_lex_state = 3}, - [271] = {.lex_state = 14, .external_lex_state = 2}, - [272] = {.lex_state = 50, .external_lex_state = 3}, - [273] = {.lex_state = 14, .external_lex_state = 2}, - [274] = {.lex_state = 50, .external_lex_state = 2}, - [275] = {.lex_state = 15, .external_lex_state = 4}, + [269] = {.lex_state = 50, .external_lex_state = 2}, + [270] = {.lex_state = 50, .external_lex_state = 2}, + [271] = {.lex_state = 50, .external_lex_state = 2}, + [272] = {.lex_state = 50, .external_lex_state = 2}, + [273] = {.lex_state = 50, .external_lex_state = 2}, + [274] = {.lex_state = 50, .external_lex_state = 3}, + [275] = {.lex_state = 50, .external_lex_state = 3}, [276] = {.lex_state = 50, .external_lex_state = 2}, [277] = {.lex_state = 50, .external_lex_state = 2}, - [278] = {.lex_state = 50, .external_lex_state = 2}, + [278] = {.lex_state = 14, .external_lex_state = 2}, [279] = {.lex_state = 50, .external_lex_state = 3}, - [280] = {.lex_state = 50, .external_lex_state = 3}, - [281] = {.lex_state = 50, .external_lex_state = 2}, + [280] = {.lex_state = 50, .external_lex_state = 2}, + [281] = {.lex_state = 50, .external_lex_state = 3}, [282] = {.lex_state = 50, .external_lex_state = 2}, - [283] = {.lex_state = 50, .external_lex_state = 2}, + [283] = {.lex_state = 50, .external_lex_state = 3}, [284] = {.lex_state = 50, .external_lex_state = 2}, [285] = {.lex_state = 50, .external_lex_state = 2}, - [286] = {.lex_state = 50, .external_lex_state = 3}, + [286] = {.lex_state = 50, .external_lex_state = 2}, [287] = {.lex_state = 50, .external_lex_state = 2}, - [288] = {.lex_state = 50, .external_lex_state = 2}, + [288] = {.lex_state = 14, .external_lex_state = 2}, [289] = {.lex_state = 50, .external_lex_state = 2}, [290] = {.lex_state = 50, .external_lex_state = 2}, [291] = {.lex_state = 50, .external_lex_state = 2}, [292] = {.lex_state = 50, .external_lex_state = 2}, - [293] = {.lex_state = 50, .external_lex_state = 2}, + [293] = {.lex_state = 50, .external_lex_state = 4}, [294] = {.lex_state = 50, .external_lex_state = 2}, [295] = {.lex_state = 50, .external_lex_state = 2}, [296] = {.lex_state = 50, .external_lex_state = 2}, - [297] = {.lex_state = 14, .external_lex_state = 2}, + [297] = {.lex_state = 50, .external_lex_state = 2}, [298] = {.lex_state = 50, .external_lex_state = 2}, [299] = {.lex_state = 50, .external_lex_state = 2}, - [300] = {.lex_state = 50, .external_lex_state = 2}, - [301] = {.lex_state = 14, .external_lex_state = 2}, + [300] = {.lex_state = 50, .external_lex_state = 4}, + [301] = {.lex_state = 15, .external_lex_state = 6}, [302] = {.lex_state = 50, .external_lex_state = 2}, [303] = {.lex_state = 50, .external_lex_state = 2}, - [304] = {.lex_state = 50, .external_lex_state = 3}, - [305] = {.lex_state = 50, .external_lex_state = 4}, + [304] = {.lex_state = 50, .external_lex_state = 2}, + [305] = {.lex_state = 50, .external_lex_state = 2}, [306] = {.lex_state = 50, .external_lex_state = 4}, [307] = {.lex_state = 50, .external_lex_state = 4}, - [308] = {.lex_state = 50, .external_lex_state = 2}, - [309] = {.lex_state = 15, .external_lex_state = 6}, + [308] = {.lex_state = 50, .external_lex_state = 3}, + [309] = {.lex_state = 50, .external_lex_state = 2}, [310] = {.lex_state = 50, .external_lex_state = 2}, - [311] = {.lex_state = 50, .external_lex_state = 4}, - [312] = {.lex_state = 50, .external_lex_state = 2}, + [311] = {.lex_state = 50, .external_lex_state = 2}, + [312] = {.lex_state = 14, .external_lex_state = 2}, [313] = {.lex_state = 50, .external_lex_state = 2}, - [314] = {.lex_state = 50, .external_lex_state = 2}, - [315] = {.lex_state = 50, .external_lex_state = 3}, - [316] = {.lex_state = 50, .external_lex_state = 3}, - [317] = {.lex_state = 50, .external_lex_state = 3}, - [318] = {.lex_state = 50, .external_lex_state = 2}, - [319] = {.lex_state = 50, .external_lex_state = 2}, - [320] = {.lex_state = 15}, - [321] = {.lex_state = 50, .external_lex_state = 3}, - [322] = {.lex_state = 16, .external_lex_state = 6}, - [323] = {.lex_state = 50, .external_lex_state = 3}, - [324] = {.lex_state = 16, .external_lex_state = 6}, - [325] = {.lex_state = 15}, + [314] = {.lex_state = 16, .external_lex_state = 6}, + [315] = {.lex_state = 50, .external_lex_state = 2}, + [316] = {.lex_state = 15}, + [317] = {.lex_state = 15}, + [318] = {.lex_state = 16, .external_lex_state = 6}, + [319] = {.lex_state = 14, .external_lex_state = 2}, + [320] = {.lex_state = 50, .external_lex_state = 2}, + [321] = {.lex_state = 50, .external_lex_state = 2}, + [322] = {.lex_state = 50, .external_lex_state = 2}, + [323] = {.lex_state = 50, .external_lex_state = 2}, + [324] = {.lex_state = 50, .external_lex_state = 2}, + [325] = {.lex_state = 50, .external_lex_state = 2}, [326] = {.lex_state = 50, .external_lex_state = 2}, [327] = {.lex_state = 50, .external_lex_state = 2}, - [328] = {.lex_state = 50, .external_lex_state = 3}, - [329] = {.lex_state = 50, .external_lex_state = 3}, - [330] = {.lex_state = 50, .external_lex_state = 3}, - [331] = {.lex_state = 50, .external_lex_state = 2}, - [332] = {.lex_state = 50, .external_lex_state = 2}, - [333] = {.lex_state = 50, .external_lex_state = 2}, - [334] = {.lex_state = 15, .external_lex_state = 6}, - [335] = {.lex_state = 50, .external_lex_state = 2}, - [336] = {.lex_state = 50, .external_lex_state = 2}, + [328] = {.lex_state = 50, .external_lex_state = 2}, + [329] = {.lex_state = 50, .external_lex_state = 2}, + [330] = {.lex_state = 15, .external_lex_state = 6}, + [331] = {.lex_state = 15, .external_lex_state = 6}, + [332] = {.lex_state = 50, .external_lex_state = 3}, + [333] = {.lex_state = 50, .external_lex_state = 3}, + [334] = {.lex_state = 50, .external_lex_state = 3}, + [335] = {.lex_state = 50, .external_lex_state = 3}, + [336] = {.lex_state = 50, .external_lex_state = 3}, [337] = {.lex_state = 50, .external_lex_state = 3}, - [338] = {.lex_state = 50, .external_lex_state = 2}, - [339] = {.lex_state = 50, .external_lex_state = 2}, - [340] = {.lex_state = 14, .external_lex_state = 2}, - [341] = {.lex_state = 15, .external_lex_state = 6}, + [338] = {.lex_state = 50, .external_lex_state = 3}, + [339] = {.lex_state = 50, .external_lex_state = 3}, + [340] = {.lex_state = 50, .external_lex_state = 3}, + [341] = {.lex_state = 50, .external_lex_state = 3}, [342] = {.lex_state = 50, .external_lex_state = 3}, [343] = {.lex_state = 50, .external_lex_state = 3}, - [344] = {.lex_state = 50, .external_lex_state = 3}, - [345] = {.lex_state = 14, .external_lex_state = 2}, + [344] = {.lex_state = 14, .external_lex_state = 2}, + [345] = {.lex_state = 50, .external_lex_state = 2}, [346] = {.lex_state = 50, .external_lex_state = 2}, [347] = {.lex_state = 50, .external_lex_state = 2}, - [348] = {.lex_state = 50, .external_lex_state = 3}, + [348] = {.lex_state = 50, .external_lex_state = 2}, [349] = {.lex_state = 50, .external_lex_state = 2}, [350] = {.lex_state = 50, .external_lex_state = 2}, [351] = {.lex_state = 50, .external_lex_state = 2}, - [352] = {.lex_state = 50, .external_lex_state = 3}, + [352] = {.lex_state = 50, .external_lex_state = 2}, [353] = {.lex_state = 50, .external_lex_state = 2}, [354] = {.lex_state = 16, .external_lex_state = 6}, [355] = {.lex_state = 50, .external_lex_state = 2}, @@ -6455,14 +8041,14 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [359] = {.lex_state = 50, .external_lex_state = 2}, [360] = {.lex_state = 50, .external_lex_state = 2}, [361] = {.lex_state = 50, .external_lex_state = 2}, - [362] = {.lex_state = 50, .external_lex_state = 3}, + [362] = {.lex_state = 50, .external_lex_state = 2}, [363] = {.lex_state = 50, .external_lex_state = 2}, [364] = {.lex_state = 50, .external_lex_state = 2}, [365] = {.lex_state = 50, .external_lex_state = 2}, [366] = {.lex_state = 50, .external_lex_state = 2}, [367] = {.lex_state = 50, .external_lex_state = 2}, [368] = {.lex_state = 50, .external_lex_state = 2}, - [369] = {.lex_state = 50, .external_lex_state = 3}, + [369] = {.lex_state = 50, .external_lex_state = 2}, [370] = {.lex_state = 50, .external_lex_state = 2}, [371] = {.lex_state = 50, .external_lex_state = 2}, [372] = {.lex_state = 50, .external_lex_state = 2}, @@ -6470,7 +8056,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [374] = {.lex_state = 50, .external_lex_state = 2}, [375] = {.lex_state = 50, .external_lex_state = 2}, [376] = {.lex_state = 50, .external_lex_state = 2}, - [377] = {.lex_state = 50, .external_lex_state = 2}, + [377] = {.lex_state = 16}, [378] = {.lex_state = 50, .external_lex_state = 2}, [379] = {.lex_state = 50, .external_lex_state = 2}, [380] = {.lex_state = 50, .external_lex_state = 2}, @@ -6483,21 +8069,21 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [387] = {.lex_state = 50, .external_lex_state = 2}, [388] = {.lex_state = 50, .external_lex_state = 2}, [389] = {.lex_state = 50, .external_lex_state = 2}, - [390] = {.lex_state = 50, .external_lex_state = 2}, + [390] = {.lex_state = 50, .external_lex_state = 3}, [391] = {.lex_state = 50, .external_lex_state = 3}, - [392] = {.lex_state = 16}, - [393] = {.lex_state = 50, .external_lex_state = 2}, + [392] = {.lex_state = 50, .external_lex_state = 3}, + [393] = {.lex_state = 50, .external_lex_state = 3}, [394] = {.lex_state = 50, .external_lex_state = 2}, - [395] = {.lex_state = 50, .external_lex_state = 2}, - [396] = {.lex_state = 50, .external_lex_state = 2}, - [397] = {.lex_state = 50, .external_lex_state = 2}, + [395] = {.lex_state = 50, .external_lex_state = 3}, + [396] = {.lex_state = 50, .external_lex_state = 3}, + [397] = {.lex_state = 50, .external_lex_state = 3}, [398] = {.lex_state = 50, .external_lex_state = 2}, [399] = {.lex_state = 50, .external_lex_state = 2}, - [400] = {.lex_state = 50, .external_lex_state = 2}, - [401] = {.lex_state = 50, .external_lex_state = 2}, + [400] = {.lex_state = 50, .external_lex_state = 3}, + [401] = {.lex_state = 50, .external_lex_state = 3}, [402] = {.lex_state = 50, .external_lex_state = 2}, - [403] = {.lex_state = 50, .external_lex_state = 2}, - [404] = {.lex_state = 50, .external_lex_state = 2}, + [403] = {.lex_state = 16, .external_lex_state = 6}, + [404] = {.lex_state = 50, .external_lex_state = 3}, [405] = {.lex_state = 50, .external_lex_state = 2}, [406] = {.lex_state = 50, .external_lex_state = 2}, [407] = {.lex_state = 50, .external_lex_state = 2}, @@ -6507,24 +8093,24 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [411] = {.lex_state = 50, .external_lex_state = 2}, [412] = {.lex_state = 50, .external_lex_state = 2}, [413] = {.lex_state = 50, .external_lex_state = 2}, - [414] = {.lex_state = 16, .external_lex_state = 6}, + [414] = {.lex_state = 50, .external_lex_state = 2}, [415] = {.lex_state = 50, .external_lex_state = 2}, [416] = {.lex_state = 50, .external_lex_state = 2}, - [417] = {.lex_state = 50, .external_lex_state = 3}, - [418] = {.lex_state = 50, .external_lex_state = 3}, + [417] = {.lex_state = 50, .external_lex_state = 2}, + [418] = {.lex_state = 50, .external_lex_state = 2}, [419] = {.lex_state = 50, .external_lex_state = 2}, [420] = {.lex_state = 50, .external_lex_state = 2}, [421] = {.lex_state = 50, .external_lex_state = 2}, - [422] = {.lex_state = 50, .external_lex_state = 3}, + [422] = {.lex_state = 50, .external_lex_state = 2}, [423] = {.lex_state = 50, .external_lex_state = 2}, [424] = {.lex_state = 50, .external_lex_state = 2}, - [425] = {.lex_state = 50, .external_lex_state = 3}, + [425] = {.lex_state = 50, .external_lex_state = 2}, [426] = {.lex_state = 50, .external_lex_state = 2}, - [427] = {.lex_state = 16, .external_lex_state = 6}, + [427] = {.lex_state = 50, .external_lex_state = 2}, [428] = {.lex_state = 50, .external_lex_state = 2}, [429] = {.lex_state = 50, .external_lex_state = 2}, [430] = {.lex_state = 50, .external_lex_state = 2}, - [431] = {.lex_state = 50, .external_lex_state = 2}, + [431] = {.lex_state = 16, .external_lex_state = 6}, [432] = {.lex_state = 50, .external_lex_state = 2}, [433] = {.lex_state = 50, .external_lex_state = 2}, [434] = {.lex_state = 50, .external_lex_state = 2}, @@ -6534,124 +8120,124 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [438] = {.lex_state = 50, .external_lex_state = 2}, [439] = {.lex_state = 50, .external_lex_state = 2}, [440] = {.lex_state = 50, .external_lex_state = 2}, - [441] = {.lex_state = 50, .external_lex_state = 3}, + [441] = {.lex_state = 50, .external_lex_state = 2}, [442] = {.lex_state = 50, .external_lex_state = 2}, [443] = {.lex_state = 50, .external_lex_state = 2}, [444] = {.lex_state = 50, .external_lex_state = 2}, [445] = {.lex_state = 50, .external_lex_state = 2}, - [446] = {.lex_state = 50, .external_lex_state = 3}, - [447] = {.lex_state = 50, .external_lex_state = 3}, - [448] = {.lex_state = 50, .external_lex_state = 2}, + [446] = {.lex_state = 50, .external_lex_state = 2}, + [447] = {.lex_state = 50, .external_lex_state = 2}, + [448] = {.lex_state = 50, .external_lex_state = 3}, [449] = {.lex_state = 50, .external_lex_state = 2}, - [450] = {.lex_state = 50, .external_lex_state = 2}, + [450] = {.lex_state = 50, .external_lex_state = 3}, [451] = {.lex_state = 50, .external_lex_state = 3}, - [452] = {.lex_state = 50, .external_lex_state = 2}, + [452] = {.lex_state = 50, .external_lex_state = 3}, [453] = {.lex_state = 50, .external_lex_state = 3}, - [454] = {.lex_state = 50, .external_lex_state = 3}, - [455] = {.lex_state = 50, .external_lex_state = 2}, + [454] = {.lex_state = 50, .external_lex_state = 2}, + [455] = {.lex_state = 50, .external_lex_state = 3}, [456] = {.lex_state = 50, .external_lex_state = 2}, - [457] = {.lex_state = 50, .external_lex_state = 3}, + [457] = {.lex_state = 50, .external_lex_state = 2}, [458] = {.lex_state = 50, .external_lex_state = 3}, [459] = {.lex_state = 50, .external_lex_state = 2}, [460] = {.lex_state = 50, .external_lex_state = 3}, [461] = {.lex_state = 50, .external_lex_state = 3}, [462] = {.lex_state = 50, .external_lex_state = 2}, - [463] = {.lex_state = 50, .external_lex_state = 2}, + [463] = {.lex_state = 50, .external_lex_state = 3}, [464] = {.lex_state = 50, .external_lex_state = 3}, - [465] = {.lex_state = 50, .external_lex_state = 3}, - [466] = {.lex_state = 50, .external_lex_state = 3}, + [465] = {.lex_state = 50, .external_lex_state = 2}, + [466] = {.lex_state = 50, .external_lex_state = 2}, [467] = {.lex_state = 50, .external_lex_state = 2}, [468] = {.lex_state = 50, .external_lex_state = 3}, - [469] = {.lex_state = 50, .external_lex_state = 3}, - [470] = {.lex_state = 50, .external_lex_state = 2}, - [471] = {.lex_state = 50, .external_lex_state = 2}, + [469] = {.lex_state = 50, .external_lex_state = 2}, + [470] = {.lex_state = 50, .external_lex_state = 3}, + [471] = {.lex_state = 50, .external_lex_state = 3}, [472] = {.lex_state = 50, .external_lex_state = 2}, - [473] = {.lex_state = 50, .external_lex_state = 3}, - [474] = {.lex_state = 50, .external_lex_state = 2}, - [475] = {.lex_state = 50, .external_lex_state = 2}, - [476] = {.lex_state = 50, .external_lex_state = 2}, - [477] = {.lex_state = 50, .external_lex_state = 2}, - [478] = {.lex_state = 50, .external_lex_state = 2}, - [479] = {.lex_state = 50, .external_lex_state = 2}, - [480] = {.lex_state = 50, .external_lex_state = 2}, - [481] = {.lex_state = 50, .external_lex_state = 2}, - [482] = {.lex_state = 50, .external_lex_state = 2}, + [473] = {.lex_state = 50, .external_lex_state = 2}, + [474] = {.lex_state = 50, .external_lex_state = 3}, + [475] = {.lex_state = 50, .external_lex_state = 3}, + [476] = {.lex_state = 50, .external_lex_state = 3}, + [477] = {.lex_state = 50, .external_lex_state = 3}, + [478] = {.lex_state = 50, .external_lex_state = 3}, + [479] = {.lex_state = 50, .external_lex_state = 3}, + [480] = {.lex_state = 50, .external_lex_state = 3}, + [481] = {.lex_state = 50, .external_lex_state = 3}, + [482] = {.lex_state = 50, .external_lex_state = 3}, [483] = {.lex_state = 50, .external_lex_state = 3}, - [484] = {.lex_state = 50, .external_lex_state = 2}, - [485] = {.lex_state = 50, .external_lex_state = 3}, - [486] = {.lex_state = 50, .external_lex_state = 2}, - [487] = {.lex_state = 50, .external_lex_state = 2}, - [488] = {.lex_state = 50, .external_lex_state = 2}, + [484] = {.lex_state = 50, .external_lex_state = 3}, + [485] = {.lex_state = 50, .external_lex_state = 2}, + [486] = {.lex_state = 50, .external_lex_state = 3}, + [487] = {.lex_state = 50, .external_lex_state = 3}, + [488] = {.lex_state = 50, .external_lex_state = 3}, [489] = {.lex_state = 50, .external_lex_state = 2}, - [490] = {.lex_state = 50, .external_lex_state = 2}, - [491] = {.lex_state = 50, .external_lex_state = 2}, + [490] = {.lex_state = 50, .external_lex_state = 3}, + [491] = {.lex_state = 50, .external_lex_state = 3}, [492] = {.lex_state = 50, .external_lex_state = 3}, [493] = {.lex_state = 50, .external_lex_state = 3}, [494] = {.lex_state = 50, .external_lex_state = 3}, [495] = {.lex_state = 50, .external_lex_state = 3}, - [496] = {.lex_state = 50, .external_lex_state = 2}, - [497] = {.lex_state = 50, .external_lex_state = 3}, - [498] = {.lex_state = 50, .external_lex_state = 2}, - [499] = {.lex_state = 50, .external_lex_state = 2}, + [496] = {.lex_state = 50, .external_lex_state = 3}, + [497] = {.lex_state = 50, .external_lex_state = 2}, + [498] = {.lex_state = 50, .external_lex_state = 3}, + [499] = {.lex_state = 50, .external_lex_state = 3}, [500] = {.lex_state = 50, .external_lex_state = 3}, - [501] = {.lex_state = 50, .external_lex_state = 2}, + [501] = {.lex_state = 50, .external_lex_state = 3}, [502] = {.lex_state = 50, .external_lex_state = 2}, [503] = {.lex_state = 50, .external_lex_state = 2}, - [504] = {.lex_state = 50, .external_lex_state = 2}, + [504] = {.lex_state = 50, .external_lex_state = 3}, [505] = {.lex_state = 50, .external_lex_state = 3}, [506] = {.lex_state = 50, .external_lex_state = 3}, - [507] = {.lex_state = 50, .external_lex_state = 3}, + [507] = {.lex_state = 50, .external_lex_state = 2}, [508] = {.lex_state = 50, .external_lex_state = 3}, [509] = {.lex_state = 50, .external_lex_state = 2}, - [510] = {.lex_state = 50, .external_lex_state = 2}, - [511] = {.lex_state = 50, .external_lex_state = 3}, - [512] = {.lex_state = 50, .external_lex_state = 2}, - [513] = {.lex_state = 50, .external_lex_state = 2}, - [514] = {.lex_state = 50, .external_lex_state = 2}, - [515] = {.lex_state = 50, .external_lex_state = 3}, - [516] = {.lex_state = 50, .external_lex_state = 3}, + [510] = {.lex_state = 50, .external_lex_state = 3}, + [511] = {.lex_state = 50, .external_lex_state = 2}, + [512] = {.lex_state = 50, .external_lex_state = 3}, + [513] = {.lex_state = 50, .external_lex_state = 3}, + [514] = {.lex_state = 50, .external_lex_state = 3}, + [515] = {.lex_state = 50, .external_lex_state = 2}, + [516] = {.lex_state = 50, .external_lex_state = 2}, [517] = {.lex_state = 50, .external_lex_state = 3}, - [518] = {.lex_state = 50, .external_lex_state = 2}, - [519] = {.lex_state = 50, .external_lex_state = 2}, - [520] = {.lex_state = 50, .external_lex_state = 2}, - [521] = {.lex_state = 50, .external_lex_state = 2}, + [518] = {.lex_state = 50, .external_lex_state = 3}, + [519] = {.lex_state = 50, .external_lex_state = 3}, + [520] = {.lex_state = 50, .external_lex_state = 3}, + [521] = {.lex_state = 50, .external_lex_state = 3}, [522] = {.lex_state = 50, .external_lex_state = 2}, [523] = {.lex_state = 50, .external_lex_state = 2}, - [524] = {.lex_state = 50, .external_lex_state = 2}, + [524] = {.lex_state = 50, .external_lex_state = 3}, [525] = {.lex_state = 50, .external_lex_state = 3}, - [526] = {.lex_state = 50, .external_lex_state = 3}, - [527] = {.lex_state = 50, .external_lex_state = 3}, + [526] = {.lex_state = 50, .external_lex_state = 2}, + [527] = {.lex_state = 50, .external_lex_state = 2}, [528] = {.lex_state = 50, .external_lex_state = 2}, [529] = {.lex_state = 50, .external_lex_state = 2}, [530] = {.lex_state = 50, .external_lex_state = 2}, [531] = {.lex_state = 50, .external_lex_state = 2}, - [532] = {.lex_state = 50, .external_lex_state = 3}, - [533] = {.lex_state = 50, .external_lex_state = 3}, - [534] = {.lex_state = 50, .external_lex_state = 3}, - [535] = {.lex_state = 50, .external_lex_state = 3}, - [536] = {.lex_state = 50, .external_lex_state = 3}, - [537] = {.lex_state = 50, .external_lex_state = 3}, - [538] = {.lex_state = 50, .external_lex_state = 3}, + [532] = {.lex_state = 50, .external_lex_state = 2}, + [533] = {.lex_state = 50, .external_lex_state = 2}, + [534] = {.lex_state = 50, .external_lex_state = 2}, + [535] = {.lex_state = 50, .external_lex_state = 2}, + [536] = {.lex_state = 50, .external_lex_state = 2}, + [537] = {.lex_state = 50, .external_lex_state = 2}, + [538] = {.lex_state = 50, .external_lex_state = 2}, [539] = {.lex_state = 50, .external_lex_state = 2}, - [540] = {.lex_state = 50, .external_lex_state = 3}, - [541] = {.lex_state = 50, .external_lex_state = 3}, - [542] = {.lex_state = 50, .external_lex_state = 3}, + [540] = {.lex_state = 50, .external_lex_state = 2}, + [541] = {.lex_state = 50, .external_lex_state = 2}, + [542] = {.lex_state = 50, .external_lex_state = 2}, [543] = {.lex_state = 50, .external_lex_state = 2}, - [544] = {.lex_state = 50, .external_lex_state = 3}, - [545] = {.lex_state = 50, .external_lex_state = 3}, - [546] = {.lex_state = 50, .external_lex_state = 3}, - [547] = {.lex_state = 50, .external_lex_state = 3}, - [548] = {.lex_state = 50, .external_lex_state = 3}, + [544] = {.lex_state = 50, .external_lex_state = 2}, + [545] = {.lex_state = 50, .external_lex_state = 2}, + [546] = {.lex_state = 50, .external_lex_state = 2}, + [547] = {.lex_state = 50, .external_lex_state = 2}, + [548] = {.lex_state = 50, .external_lex_state = 2}, [549] = {.lex_state = 50, .external_lex_state = 2}, [550] = {.lex_state = 50, .external_lex_state = 2}, - [551] = {.lex_state = 50, .external_lex_state = 3}, - [552] = {.lex_state = 50, .external_lex_state = 3}, - [553] = {.lex_state = 50, .external_lex_state = 3}, - [554] = {.lex_state = 50, .external_lex_state = 3}, - [555] = {.lex_state = 50, .external_lex_state = 3}, - [556] = {.lex_state = 50, .external_lex_state = 3}, + [551] = {.lex_state = 50, .external_lex_state = 2}, + [552] = {.lex_state = 50, .external_lex_state = 2}, + [553] = {.lex_state = 50, .external_lex_state = 2}, + [554] = {.lex_state = 50, .external_lex_state = 2}, + [555] = {.lex_state = 50, .external_lex_state = 2}, + [556] = {.lex_state = 50, .external_lex_state = 2}, [557] = {.lex_state = 50, .external_lex_state = 2}, - [558] = {.lex_state = 50, .external_lex_state = 2}, + [558] = {.lex_state = 50, .external_lex_state = 3}, [559] = {.lex_state = 50, .external_lex_state = 2}, [560] = {.lex_state = 50, .external_lex_state = 2}, [561] = {.lex_state = 50, .external_lex_state = 2}, @@ -6659,8 +8245,8 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [563] = {.lex_state = 50, .external_lex_state = 2}, [564] = {.lex_state = 50, .external_lex_state = 2}, [565] = {.lex_state = 16, .external_lex_state = 2}, - [566] = {.lex_state = 50, .external_lex_state = 2}, - [567] = {.lex_state = 16, .external_lex_state = 2}, + [566] = {.lex_state = 16, .external_lex_state = 2}, + [567] = {.lex_state = 50, .external_lex_state = 2}, [568] = {.lex_state = 50, .external_lex_state = 2}, [569] = {.lex_state = 16, .external_lex_state = 2}, [570] = {.lex_state = 16, .external_lex_state = 2}, @@ -6700,19 +8286,19 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [604] = {.lex_state = 16}, [605] = {.lex_state = 16}, [606] = {.lex_state = 16}, - [607] = {.lex_state = 16}, + [607] = {.lex_state = 50, .external_lex_state = 2}, [608] = {.lex_state = 16}, [609] = {.lex_state = 16}, [610] = {.lex_state = 50, .external_lex_state = 2}, [611] = {.lex_state = 16}, [612] = {.lex_state = 16}, [613] = {.lex_state = 16}, - [614] = {.lex_state = 50, .external_lex_state = 2}, - [615] = {.lex_state = 50, .external_lex_state = 2}, + [614] = {.lex_state = 16}, + [615] = {.lex_state = 16}, [616] = {.lex_state = 16}, - [617] = {.lex_state = 16}, + [617] = {.lex_state = 50, .external_lex_state = 2}, [618] = {.lex_state = 16}, - [619] = {.lex_state = 16}, + [619] = {.lex_state = 50, .external_lex_state = 2}, [620] = {.lex_state = 16}, [621] = {.lex_state = 16}, [622] = {.lex_state = 16}, @@ -6721,37 +8307,37 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [625] = {.lex_state = 16}, [626] = {.lex_state = 16}, [627] = {.lex_state = 16}, - [628] = {.lex_state = 50, .external_lex_state = 2}, + [628] = {.lex_state = 16}, [629] = {.lex_state = 16}, [630] = {.lex_state = 16}, [631] = {.lex_state = 16}, [632] = {.lex_state = 16}, [633] = {.lex_state = 16}, - [634] = {.lex_state = 50, .external_lex_state = 2}, + [634] = {.lex_state = 16}, [635] = {.lex_state = 50, .external_lex_state = 2}, [636] = {.lex_state = 50, .external_lex_state = 2}, [637] = {.lex_state = 50, .external_lex_state = 2}, [638] = {.lex_state = 50, .external_lex_state = 2}, [639] = {.lex_state = 50, .external_lex_state = 2}, [640] = {.lex_state = 50, .external_lex_state = 2}, - [641] = {.lex_state = 15}, + [641] = {.lex_state = 50, .external_lex_state = 2}, [642] = {.lex_state = 50, .external_lex_state = 2}, - [643] = {.lex_state = 50, .external_lex_state = 2}, + [643] = {.lex_state = 16, .external_lex_state = 2}, [644] = {.lex_state = 50, .external_lex_state = 2}, [645] = {.lex_state = 50, .external_lex_state = 2}, [646] = {.lex_state = 50, .external_lex_state = 2}, - [647] = {.lex_state = 50, .external_lex_state = 2}, + [647] = {.lex_state = 16, .external_lex_state = 2}, [648] = {.lex_state = 50, .external_lex_state = 2}, [649] = {.lex_state = 50, .external_lex_state = 2}, [650] = {.lex_state = 50, .external_lex_state = 2}, - [651] = {.lex_state = 16}, + [651] = {.lex_state = 50, .external_lex_state = 2}, [652] = {.lex_state = 50, .external_lex_state = 2}, - [653] = {.lex_state = 16}, + [653] = {.lex_state = 50, .external_lex_state = 2}, [654] = {.lex_state = 50, .external_lex_state = 2}, [655] = {.lex_state = 50, .external_lex_state = 2}, - [656] = {.lex_state = 50, .external_lex_state = 2}, - [657] = {.lex_state = 50, .external_lex_state = 2}, - [658] = {.lex_state = 16, .external_lex_state = 2}, + [656] = {.lex_state = 16}, + [657] = {.lex_state = 15}, + [658] = {.lex_state = 15}, [659] = {.lex_state = 50, .external_lex_state = 2}, [660] = {.lex_state = 50, .external_lex_state = 2}, [661] = {.lex_state = 50, .external_lex_state = 2}, @@ -6764,11 +8350,11 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [668] = {.lex_state = 50, .external_lex_state = 2}, [669] = {.lex_state = 50, .external_lex_state = 2}, [670] = {.lex_state = 50, .external_lex_state = 2}, - [671] = {.lex_state = 50, .external_lex_state = 2}, + [671] = {.lex_state = 15}, [672] = {.lex_state = 50, .external_lex_state = 2}, - [673] = {.lex_state = 15}, - [674] = {.lex_state = 50, .external_lex_state = 2}, - [675] = {.lex_state = 15}, + [673] = {.lex_state = 50, .external_lex_state = 2}, + [674] = {.lex_state = 15}, + [675] = {.lex_state = 50, .external_lex_state = 2}, [676] = {.lex_state = 50, .external_lex_state = 2}, [677] = {.lex_state = 50, .external_lex_state = 2}, [678] = {.lex_state = 50, .external_lex_state = 2}, @@ -6776,75 +8362,75 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [680] = {.lex_state = 50, .external_lex_state = 2}, [681] = {.lex_state = 50, .external_lex_state = 2}, [682] = {.lex_state = 50, .external_lex_state = 2}, - [683] = {.lex_state = 16, .external_lex_state = 2}, + [683] = {.lex_state = 50, .external_lex_state = 2}, [684] = {.lex_state = 50, .external_lex_state = 2}, - [685] = {.lex_state = 15}, + [685] = {.lex_state = 50, .external_lex_state = 2}, [686] = {.lex_state = 50, .external_lex_state = 2}, [687] = {.lex_state = 50, .external_lex_state = 2}, - [688] = {.lex_state = 16}, - [689] = {.lex_state = 16}, - [690] = {.lex_state = 16, .external_lex_state = 4}, - [691] = {.lex_state = 16, .external_lex_state = 4}, - [692] = {.lex_state = 16, .external_lex_state = 6}, + [688] = {.lex_state = 16, .external_lex_state = 4}, + [689] = {.lex_state = 16, .external_lex_state = 6}, + [690] = {.lex_state = 16}, + [691] = {.lex_state = 16}, + [692] = {.lex_state = 16, .external_lex_state = 4}, [693] = {.lex_state = 16, .external_lex_state = 4}, [694] = {.lex_state = 16, .external_lex_state = 6}, [695] = {.lex_state = 16, .external_lex_state = 2}, - [696] = {.lex_state = 16, .external_lex_state = 2}, + [696] = {.lex_state = 16, .external_lex_state = 6}, [697] = {.lex_state = 16, .external_lex_state = 6}, - [698] = {.lex_state = 16, .external_lex_state = 6}, - [699] = {.lex_state = 16, .external_lex_state = 6}, - [700] = {.lex_state = 16, .external_lex_state = 6}, + [698] = {.lex_state = 16}, + [699] = {.lex_state = 16, .external_lex_state = 2}, + [700] = {.lex_state = 16, .external_lex_state = 2}, [701] = {.lex_state = 16, .external_lex_state = 6}, [702] = {.lex_state = 16, .external_lex_state = 6}, [703] = {.lex_state = 16, .external_lex_state = 6}, [704] = {.lex_state = 16, .external_lex_state = 6}, - [705] = {.lex_state = 16}, + [705] = {.lex_state = 16, .external_lex_state = 6}, [706] = {.lex_state = 16, .external_lex_state = 6}, [707] = {.lex_state = 16, .external_lex_state = 6}, - [708] = {.lex_state = 16, .external_lex_state = 2}, + [708] = {.lex_state = 16, .external_lex_state = 6}, [709] = {.lex_state = 16, .external_lex_state = 6}, - [710] = {.lex_state = 16}, + [710] = {.lex_state = 15}, [711] = {.lex_state = 16}, - [712] = {.lex_state = 16}, + [712] = {.lex_state = 15}, [713] = {.lex_state = 16}, - [714] = {.lex_state = 15, .external_lex_state = 6}, - [715] = {.lex_state = 16}, - [716] = {.lex_state = 16, .external_lex_state = 4}, - [717] = {.lex_state = 16}, + [714] = {.lex_state = 15}, + [715] = {.lex_state = 15, .external_lex_state = 6}, + [716] = {.lex_state = 16}, + [717] = {.lex_state = 16, .external_lex_state = 4}, [718] = {.lex_state = 16}, - [719] = {.lex_state = 16, .external_lex_state = 4}, - [720] = {.lex_state = 15}, + [719] = {.lex_state = 16}, + [720] = {.lex_state = 16}, [721] = {.lex_state = 16}, - [722] = {.lex_state = 15}, - [723] = {.lex_state = 15}, - [724] = {.lex_state = 15, .external_lex_state = 6}, - [725] = {.lex_state = 16}, + [722] = {.lex_state = 16}, + [723] = {.lex_state = 16}, + [724] = {.lex_state = 16, .external_lex_state = 4}, + [725] = {.lex_state = 15}, [726] = {.lex_state = 16}, [727] = {.lex_state = 16}, [728] = {.lex_state = 16}, [729] = {.lex_state = 16}, [730] = {.lex_state = 16}, [731] = {.lex_state = 16}, - [732] = {.lex_state = 15}, + [732] = {.lex_state = 16}, [733] = {.lex_state = 16}, [734] = {.lex_state = 16}, - [735] = {.lex_state = 16}, + [735] = {.lex_state = 15, .external_lex_state = 6}, [736] = {.lex_state = 16, .external_lex_state = 6}, [737] = {.lex_state = 16, .external_lex_state = 6}, [738] = {.lex_state = 16, .external_lex_state = 6}, [739] = {.lex_state = 16, .external_lex_state = 6}, [740] = {.lex_state = 16, .external_lex_state = 6}, - [741] = {.lex_state = 16, .external_lex_state = 6}, - [742] = {.lex_state = 16, .external_lex_state = 6}, - [743] = {.lex_state = 16, .external_lex_state = 6}, + [741] = {.lex_state = 16}, + [742] = {.lex_state = 16}, + [743] = {.lex_state = 16}, [744] = {.lex_state = 16, .external_lex_state = 6}, - [745] = {.lex_state = 15}, - [746] = {.lex_state = 16}, + [745] = {.lex_state = 16, .external_lex_state = 6}, + [746] = {.lex_state = 16, .external_lex_state = 6}, [747] = {.lex_state = 16, .external_lex_state = 6}, [748] = {.lex_state = 16, .external_lex_state = 6}, [749] = {.lex_state = 16, .external_lex_state = 6}, [750] = {.lex_state = 16, .external_lex_state = 6}, - [751] = {.lex_state = 16}, + [751] = {.lex_state = 16, .external_lex_state = 6}, [752] = {.lex_state = 16, .external_lex_state = 6}, [753] = {.lex_state = 16, .external_lex_state = 6}, [754] = {.lex_state = 16, .external_lex_state = 6}, @@ -6852,7 +8438,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [756] = {.lex_state = 16, .external_lex_state = 6}, [757] = {.lex_state = 16, .external_lex_state = 6}, [758] = {.lex_state = 16, .external_lex_state = 6}, - [759] = {.lex_state = 15}, + [759] = {.lex_state = 16, .external_lex_state = 6}, [760] = {.lex_state = 16, .external_lex_state = 6}, [761] = {.lex_state = 16, .external_lex_state = 6}, [762] = {.lex_state = 16, .external_lex_state = 6}, @@ -6862,15 +8448,15 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [766] = {.lex_state = 16, .external_lex_state = 6}, [767] = {.lex_state = 16, .external_lex_state = 6}, [768] = {.lex_state = 16, .external_lex_state = 6}, - [769] = {.lex_state = 16, .external_lex_state = 6}, - [770] = {.lex_state = 16, .external_lex_state = 6}, - [771] = {.lex_state = 16}, + [769] = {.lex_state = 15}, + [770] = {.lex_state = 15}, + [771] = {.lex_state = 16, .external_lex_state = 6}, [772] = {.lex_state = 16, .external_lex_state = 6}, [773] = {.lex_state = 16, .external_lex_state = 6}, [774] = {.lex_state = 16}, [775] = {.lex_state = 16}, [776] = {.lex_state = 16}, - [777] = {.lex_state = 15}, + [777] = {.lex_state = 16}, [778] = {.lex_state = 16}, [779] = {.lex_state = 16}, [780] = {.lex_state = 16}, @@ -6879,7 +8465,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [783] = {.lex_state = 16}, [784] = {.lex_state = 16}, [785] = {.lex_state = 16}, - [786] = {.lex_state = 15}, + [786] = {.lex_state = 16}, [787] = {.lex_state = 16}, [788] = {.lex_state = 16}, [789] = {.lex_state = 16}, @@ -6887,8 +8473,8 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [791] = {.lex_state = 16}, [792] = {.lex_state = 16}, [793] = {.lex_state = 16}, - [794] = {.lex_state = 16}, - [795] = {.lex_state = 16}, + [794] = {.lex_state = 15}, + [795] = {.lex_state = 15}, [796] = {.lex_state = 16}, [797] = {.lex_state = 16}, [798] = {.lex_state = 16}, @@ -6903,8 +8489,8 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [807] = {.lex_state = 16}, [808] = {.lex_state = 16}, [809] = {.lex_state = 50, .external_lex_state = 2}, - [810] = {.lex_state = 14, .external_lex_state = 2}, - [811] = {.lex_state = 50, .external_lex_state = 2}, + [810] = {.lex_state = 50, .external_lex_state = 2}, + [811] = {.lex_state = 14, .external_lex_state = 2}, [812] = {.lex_state = 14, .external_lex_state = 2}, [813] = {.lex_state = 50, .external_lex_state = 2}, [814] = {.lex_state = 50, .external_lex_state = 2}, @@ -6926,623 +8512,623 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [830] = {.lex_state = 14}, [831] = {.lex_state = 14}, [832] = {.lex_state = 14}, - [833] = {.lex_state = 0, .external_lex_state = 6}, + [833] = {.lex_state = 14}, [834] = {.lex_state = 14}, - [835] = {.lex_state = 16}, + [835] = {.lex_state = 0, .external_lex_state = 6}, [836] = {.lex_state = 14}, - [837] = {.lex_state = 14}, - [838] = {.lex_state = 14}, - [839] = {.lex_state = 0, .external_lex_state = 6}, - [840] = {.lex_state = 16}, + [837] = {.lex_state = 0, .external_lex_state = 6}, + [838] = {.lex_state = 16}, + [839] = {.lex_state = 16}, + [840] = {.lex_state = 14}, [841] = {.lex_state = 14}, [842] = {.lex_state = 14}, - [843] = {.lex_state = 16}, - [844] = {.lex_state = 14}, + [843] = {.lex_state = 14}, + [844] = {.lex_state = 16}, [845] = {.lex_state = 14}, [846] = {.lex_state = 14}, [847] = {.lex_state = 14}, [848] = {.lex_state = 14}, [849] = {.lex_state = 14}, [850] = {.lex_state = 14}, - [851] = {.lex_state = 50, .external_lex_state = 2}, + [851] = {.lex_state = 0}, [852] = {.lex_state = 50, .external_lex_state = 2}, [853] = {.lex_state = 50, .external_lex_state = 2}, - [854] = {.lex_state = 0}, + [854] = {.lex_state = 50, .external_lex_state = 2}, [855] = {.lex_state = 14}, - [856] = {.lex_state = 0}, - [857] = {.lex_state = 14}, + [856] = {.lex_state = 14}, + [857] = {.lex_state = 0}, [858] = {.lex_state = 14}, [859] = {.lex_state = 0}, [860] = {.lex_state = 14}, [861] = {.lex_state = 0}, - [862] = {.lex_state = 14}, - [863] = {.lex_state = 0}, + [862] = {.lex_state = 0}, + [863] = {.lex_state = 14}, [864] = {.lex_state = 50, .external_lex_state = 2}, [865] = {.lex_state = 16}, [866] = {.lex_state = 14}, - [867] = {.lex_state = 16}, + [867] = {.lex_state = 14}, [868] = {.lex_state = 14}, - [869] = {.lex_state = 14}, + [869] = {.lex_state = 16}, [870] = {.lex_state = 14}, [871] = {.lex_state = 14}, [872] = {.lex_state = 14}, [873] = {.lex_state = 14}, [874] = {.lex_state = 14}, - [875] = {.lex_state = 0}, + [875] = {.lex_state = 14}, [876] = {.lex_state = 14}, [877] = {.lex_state = 14}, [878] = {.lex_state = 14}, [879] = {.lex_state = 14}, [880] = {.lex_state = 14}, [881] = {.lex_state = 14}, - [882] = {.lex_state = 14}, - [883] = {.lex_state = 14}, - [884] = {.lex_state = 16}, - [885] = {.lex_state = 14, .external_lex_state = 2}, - [886] = {.lex_state = 14}, - [887] = {.lex_state = 16}, + [882] = {.lex_state = 16}, + [883] = {.lex_state = 16}, + [884] = {.lex_state = 0}, + [885] = {.lex_state = 14}, + [886] = {.lex_state = 14, .external_lex_state = 2}, + [887] = {.lex_state = 14}, [888] = {.lex_state = 14}, [889] = {.lex_state = 18, .external_lex_state = 7}, - [890] = {.lex_state = 14}, + [890] = {.lex_state = 18, .external_lex_state = 7}, [891] = {.lex_state = 18, .external_lex_state = 7}, - [892] = {.lex_state = 14}, + [892] = {.lex_state = 18, .external_lex_state = 7}, [893] = {.lex_state = 0}, - [894] = {.lex_state = 14}, - [895] = {.lex_state = 18, .external_lex_state = 7}, - [896] = {.lex_state = 0}, + [894] = {.lex_state = 0}, + [895] = {.lex_state = 0}, + [896] = {.lex_state = 14}, [897] = {.lex_state = 14}, - [898] = {.lex_state = 0}, - [899] = {.lex_state = 18, .external_lex_state = 7}, + [898] = {.lex_state = 14}, + [899] = {.lex_state = 14}, [900] = {.lex_state = 0}, - [901] = {.lex_state = 14}, - [902] = {.lex_state = 18, .external_lex_state = 7}, - [903] = {.lex_state = 0}, - [904] = {.lex_state = 0}, + [901] = {.lex_state = 0}, + [902] = {.lex_state = 14}, + [903] = {.lex_state = 18, .external_lex_state = 7}, + [904] = {.lex_state = 18, .external_lex_state = 7}, [905] = {.lex_state = 0}, - [906] = {.lex_state = 18, .external_lex_state = 7}, + [906] = {.lex_state = 0}, [907] = {.lex_state = 18, .external_lex_state = 7}, - [908] = {.lex_state = 18, .external_lex_state = 7}, - [909] = {.lex_state = 14}, - [910] = {.lex_state = 18, .external_lex_state = 7}, + [908] = {.lex_state = 14}, + [909] = {.lex_state = 18, .external_lex_state = 7}, + [910] = {.lex_state = 0}, [911] = {.lex_state = 0}, - [912] = {.lex_state = 0}, + [912] = {.lex_state = 18, .external_lex_state = 7}, [913] = {.lex_state = 0}, [914] = {.lex_state = 14}, [915] = {.lex_state = 14}, - [916] = {.lex_state = 14}, - [917] = {.lex_state = 0}, + [916] = {.lex_state = 0}, + [917] = {.lex_state = 14}, [918] = {.lex_state = 14}, [919] = {.lex_state = 0}, [920] = {.lex_state = 0}, [921] = {.lex_state = 0}, [922] = {.lex_state = 0}, - [923] = {.lex_state = 0, .external_lex_state = 6}, - [924] = {.lex_state = 0}, + [923] = {.lex_state = 14}, + [924] = {.lex_state = 14}, [925] = {.lex_state = 14}, - [926] = {.lex_state = 0}, - [927] = {.lex_state = 14}, + [926] = {.lex_state = 14}, + [927] = {.lex_state = 0, .external_lex_state = 6}, [928] = {.lex_state = 0}, [929] = {.lex_state = 14}, [930] = {.lex_state = 14}, - [931] = {.lex_state = 14}, - [932] = {.lex_state = 0, .external_lex_state = 6}, + [931] = {.lex_state = 0}, + [932] = {.lex_state = 0}, [933] = {.lex_state = 14}, - [934] = {.lex_state = 0, .external_lex_state = 6}, - [935] = {.lex_state = 0}, + [934] = {.lex_state = 14}, + [935] = {.lex_state = 14}, [936] = {.lex_state = 14}, - [937] = {.lex_state = 0, .external_lex_state = 6}, - [938] = {.lex_state = 14}, - [939] = {.lex_state = 14}, - [940] = {.lex_state = 14}, - [941] = {.lex_state = 0, .external_lex_state = 6}, + [937] = {.lex_state = 14}, + [938] = {.lex_state = 0}, + [939] = {.lex_state = 0, .external_lex_state = 6}, + [940] = {.lex_state = 0, .external_lex_state = 6}, + [941] = {.lex_state = 0}, [942] = {.lex_state = 14}, - [943] = {.lex_state = 0}, + [943] = {.lex_state = 14}, [944] = {.lex_state = 14}, - [945] = {.lex_state = 14}, - [946] = {.lex_state = 14}, + [945] = {.lex_state = 0}, + [946] = {.lex_state = 0, .external_lex_state = 6}, [947] = {.lex_state = 14}, - [948] = {.lex_state = 0, .external_lex_state = 6}, + [948] = {.lex_state = 14}, [949] = {.lex_state = 14}, [950] = {.lex_state = 14}, - [951] = {.lex_state = 16}, - [952] = {.lex_state = 0}, - [953] = {.lex_state = 0, .external_lex_state = 6}, + [951] = {.lex_state = 14}, + [952] = {.lex_state = 0, .external_lex_state = 6}, + [953] = {.lex_state = 14}, [954] = {.lex_state = 14}, [955] = {.lex_state = 14}, - [956] = {.lex_state = 14}, - [957] = {.lex_state = 0, .external_lex_state = 6}, - [958] = {.lex_state = 0}, - [959] = {.lex_state = 14}, + [956] = {.lex_state = 0, .external_lex_state = 6}, + [957] = {.lex_state = 0}, + [958] = {.lex_state = 0, .external_lex_state = 6}, + [959] = {.lex_state = 0, .external_lex_state = 6}, [960] = {.lex_state = 0, .external_lex_state = 6}, [961] = {.lex_state = 14}, - [962] = {.lex_state = 0, .external_lex_state = 6}, - [963] = {.lex_state = 14}, + [962] = {.lex_state = 14}, + [963] = {.lex_state = 0}, [964] = {.lex_state = 14}, - [965] = {.lex_state = 14}, + [965] = {.lex_state = 16}, [966] = {.lex_state = 0, .external_lex_state = 6}, - [967] = {.lex_state = 14}, - [968] = {.lex_state = 0}, - [969] = {.lex_state = 14}, - [970] = {.lex_state = 0, .external_lex_state = 6}, - [971] = {.lex_state = 0}, - [972] = {.lex_state = 0, .external_lex_state = 6}, - [973] = {.lex_state = 14}, - [974] = {.lex_state = 0}, - [975] = {.lex_state = 0, .external_lex_state = 6}, - [976] = {.lex_state = 0, .external_lex_state = 6}, - [977] = {.lex_state = 0}, - [978] = {.lex_state = 14}, + [967] = {.lex_state = 0, .external_lex_state = 6}, + [968] = {.lex_state = 14}, + [969] = {.lex_state = 0}, + [970] = {.lex_state = 14}, + [971] = {.lex_state = 14}, + [972] = {.lex_state = 14}, + [973] = {.lex_state = 0}, + [974] = {.lex_state = 0, .external_lex_state = 6}, + [975] = {.lex_state = 0}, + [976] = {.lex_state = 14}, + [977] = {.lex_state = 0, .external_lex_state = 6}, + [978] = {.lex_state = 0, .external_lex_state = 6}, [979] = {.lex_state = 0}, - [980] = {.lex_state = 14}, + [980] = {.lex_state = 0, .external_lex_state = 6}, [981] = {.lex_state = 0}, - [982] = {.lex_state = 0}, - [983] = {.lex_state = 18, .external_lex_state = 7}, + [982] = {.lex_state = 14}, + [983] = {.lex_state = 14}, [984] = {.lex_state = 0}, - [985] = {.lex_state = 0, .external_lex_state = 6}, + [985] = {.lex_state = 0}, [986] = {.lex_state = 0}, - [987] = {.lex_state = 0}, - [988] = {.lex_state = 14}, - [989] = {.lex_state = 14}, - [990] = {.lex_state = 14}, - [991] = {.lex_state = 0, .external_lex_state = 6}, + [987] = {.lex_state = 14}, + [988] = {.lex_state = 18, .external_lex_state = 7}, + [989] = {.lex_state = 0}, + [990] = {.lex_state = 0}, + [991] = {.lex_state = 0}, [992] = {.lex_state = 0}, - [993] = {.lex_state = 0}, - [994] = {.lex_state = 16}, + [993] = {.lex_state = 0, .external_lex_state = 6}, + [994] = {.lex_state = 0, .external_lex_state = 6}, [995] = {.lex_state = 14}, [996] = {.lex_state = 0}, - [997] = {.lex_state = 0}, - [998] = {.lex_state = 14}, - [999] = {.lex_state = 14}, - [1000] = {.lex_state = 0, .external_lex_state = 6}, + [997] = {.lex_state = 16}, + [998] = {.lex_state = 0, .external_lex_state = 6}, + [999] = {.lex_state = 0, .external_lex_state = 6}, + [1000] = {.lex_state = 14}, [1001] = {.lex_state = 14}, - [1002] = {.lex_state = 0, .external_lex_state = 6}, - [1003] = {.lex_state = 0, .external_lex_state = 6}, - [1004] = {.lex_state = 18, .external_lex_state = 7}, + [1002] = {.lex_state = 0}, + [1003] = {.lex_state = 14}, + [1004] = {.lex_state = 0, .external_lex_state = 6}, [1005] = {.lex_state = 14}, [1006] = {.lex_state = 14}, - [1007] = {.lex_state = 0}, - [1008] = {.lex_state = 14}, - [1009] = {.lex_state = 0}, - [1010] = {.lex_state = 0, .external_lex_state = 6}, + [1007] = {.lex_state = 14}, + [1008] = {.lex_state = 0, .external_lex_state = 6}, + [1009] = {.lex_state = 18, .external_lex_state = 7}, + [1010] = {.lex_state = 0}, [1011] = {.lex_state = 14}, - [1012] = {.lex_state = 0}, - [1013] = {.lex_state = 16, .external_lex_state = 6}, + [1012] = {.lex_state = 14}, + [1013] = {.lex_state = 18, .external_lex_state = 7}, [1014] = {.lex_state = 14}, - [1015] = {.lex_state = 18, .external_lex_state = 7}, - [1016] = {.lex_state = 16}, - [1017] = {.lex_state = 0, .external_lex_state = 6}, + [1015] = {.lex_state = 14}, + [1016] = {.lex_state = 0, .external_lex_state = 6}, + [1017] = {.lex_state = 16, .external_lex_state = 6}, [1018] = {.lex_state = 0, .external_lex_state = 6}, - [1019] = {.lex_state = 14}, + [1019] = {.lex_state = 0}, [1020] = {.lex_state = 18, .external_lex_state = 7}, [1021] = {.lex_state = 14}, - [1022] = {.lex_state = 0, .external_lex_state = 6}, - [1023] = {.lex_state = 14}, - [1024] = {.lex_state = 14}, - [1025] = {.lex_state = 14}, + [1022] = {.lex_state = 14}, + [1023] = {.lex_state = 18, .external_lex_state = 7}, + [1024] = {.lex_state = 0}, + [1025] = {.lex_state = 0, .external_lex_state = 6}, [1026] = {.lex_state = 0}, - [1027] = {.lex_state = 18, .external_lex_state = 7}, + [1027] = {.lex_state = 14}, [1028] = {.lex_state = 14}, - [1029] = {.lex_state = 14}, + [1029] = {.lex_state = 16, .external_lex_state = 6}, [1030] = {.lex_state = 14}, - [1031] = {.lex_state = 0}, - [1032] = {.lex_state = 18, .external_lex_state = 7}, - [1033] = {.lex_state = 18, .external_lex_state = 7}, - [1034] = {.lex_state = 14}, - [1035] = {.lex_state = 16, .external_lex_state = 6}, - [1036] = {.lex_state = 14}, - [1037] = {.lex_state = 0, .external_lex_state = 6}, + [1031] = {.lex_state = 14}, + [1032] = {.lex_state = 16}, + [1033] = {.lex_state = 14}, + [1034] = {.lex_state = 16, .external_lex_state = 6}, + [1035] = {.lex_state = 0, .external_lex_state = 6}, + [1036] = {.lex_state = 18, .external_lex_state = 7}, + [1037] = {.lex_state = 14}, [1038] = {.lex_state = 14}, - [1039] = {.lex_state = 16, .external_lex_state = 6}, - [1040] = {.lex_state = 18, .external_lex_state = 7}, - [1041] = {.lex_state = 14}, - [1042] = {.lex_state = 14}, - [1043] = {.lex_state = 16}, + [1039] = {.lex_state = 14}, + [1040] = {.lex_state = 16}, + [1041] = {.lex_state = 18, .external_lex_state = 7}, + [1042] = {.lex_state = 18, .external_lex_state = 7}, + [1043] = {.lex_state = 14}, [1044] = {.lex_state = 14}, [1045] = {.lex_state = 14}, - [1046] = {.lex_state = 0, .external_lex_state = 6}, + [1046] = {.lex_state = 14}, [1047] = {.lex_state = 14}, - [1048] = {.lex_state = 0}, + [1048] = {.lex_state = 14}, [1049] = {.lex_state = 0, .external_lex_state = 6}, [1050] = {.lex_state = 0, .external_lex_state = 6}, - [1051] = {.lex_state = 8}, - [1052] = {.lex_state = 14}, + [1051] = {.lex_state = 0}, + [1052] = {.lex_state = 0}, [1053] = {.lex_state = 14}, - [1054] = {.lex_state = 8}, - [1055] = {.lex_state = 0}, + [1054] = {.lex_state = 0}, + [1055] = {.lex_state = 0, .external_lex_state = 6}, [1056] = {.lex_state = 0}, - [1057] = {.lex_state = 16, .external_lex_state = 6}, + [1057] = {.lex_state = 0}, [1058] = {.lex_state = 8}, - [1059] = {.lex_state = 0, .external_lex_state = 6}, - [1060] = {.lex_state = 0, .external_lex_state = 6}, - [1061] = {.lex_state = 0, .external_lex_state = 6}, - [1062] = {.lex_state = 0, .external_lex_state = 6}, + [1059] = {.lex_state = 0}, + [1060] = {.lex_state = 14}, + [1061] = {.lex_state = 0}, + [1062] = {.lex_state = 16, .external_lex_state = 6}, [1063] = {.lex_state = 0}, [1064] = {.lex_state = 0, .external_lex_state = 6}, - [1065] = {.lex_state = 0}, - [1066] = {.lex_state = 0}, - [1067] = {.lex_state = 0}, - [1068] = {.lex_state = 0}, - [1069] = {.lex_state = 0}, + [1065] = {.lex_state = 0, .external_lex_state = 6}, + [1066] = {.lex_state = 0, .external_lex_state = 6}, + [1067] = {.lex_state = 14}, + [1068] = {.lex_state = 0, .external_lex_state = 6}, + [1069] = {.lex_state = 8}, [1070] = {.lex_state = 0}, - [1071] = {.lex_state = 14}, - [1072] = {.lex_state = 0}, + [1071] = {.lex_state = 0}, + [1072] = {.lex_state = 0, .external_lex_state = 6}, [1073] = {.lex_state = 0}, - [1074] = {.lex_state = 14}, + [1074] = {.lex_state = 0, .external_lex_state = 6}, [1075] = {.lex_state = 0, .external_lex_state = 6}, [1076] = {.lex_state = 0}, [1077] = {.lex_state = 14}, - [1078] = {.lex_state = 0, .external_lex_state = 6}, - [1079] = {.lex_state = 0}, - [1080] = {.lex_state = 0, .external_lex_state = 6}, - [1081] = {.lex_state = 14}, - [1082] = {.lex_state = 14}, + [1078] = {.lex_state = 14}, + [1079] = {.lex_state = 0, .external_lex_state = 6}, + [1080] = {.lex_state = 8}, + [1081] = {.lex_state = 0}, + [1082] = {.lex_state = 0}, [1083] = {.lex_state = 0, .external_lex_state = 6}, [1084] = {.lex_state = 0}, - [1085] = {.lex_state = 0}, - [1086] = {.lex_state = 0, .external_lex_state = 6}, + [1085] = {.lex_state = 14}, + [1086] = {.lex_state = 0}, [1087] = {.lex_state = 0}, - [1088] = {.lex_state = 0, .external_lex_state = 6}, - [1089] = {.lex_state = 0, .external_lex_state = 6}, + [1088] = {.lex_state = 14}, + [1089] = {.lex_state = 14}, [1090] = {.lex_state = 0}, - [1091] = {.lex_state = 0}, + [1091] = {.lex_state = 14}, [1092] = {.lex_state = 0, .external_lex_state = 6}, - [1093] = {.lex_state = 14}, + [1093] = {.lex_state = 0}, [1094] = {.lex_state = 0}, - [1095] = {.lex_state = 14}, - [1096] = {.lex_state = 0}, - [1097] = {.lex_state = 0}, - [1098] = {.lex_state = 14}, - [1099] = {.lex_state = 0}, - [1100] = {.lex_state = 14}, - [1101] = {.lex_state = 14}, - [1102] = {.lex_state = 0}, - [1103] = {.lex_state = 0, .external_lex_state = 6}, - [1104] = {.lex_state = 0, .external_lex_state = 6}, + [1095] = {.lex_state = 0, .external_lex_state = 6}, + [1096] = {.lex_state = 14}, + [1097] = {.lex_state = 0, .external_lex_state = 6}, + [1098] = {.lex_state = 0, .external_lex_state = 6}, + [1099] = {.lex_state = 0, .external_lex_state = 6}, + [1100] = {.lex_state = 0}, + [1101] = {.lex_state = 14, .external_lex_state = 2}, + [1102] = {.lex_state = 14}, + [1103] = {.lex_state = 0}, + [1104] = {.lex_state = 14}, [1105] = {.lex_state = 0}, [1106] = {.lex_state = 0}, - [1107] = {.lex_state = 0}, - [1108] = {.lex_state = 14}, + [1107] = {.lex_state = 0, .external_lex_state = 6}, + [1108] = {.lex_state = 16}, [1109] = {.lex_state = 0}, - [1110] = {.lex_state = 14}, - [1111] = {.lex_state = 14}, - [1112] = {.lex_state = 0}, + [1110] = {.lex_state = 0}, + [1111] = {.lex_state = 0, .external_lex_state = 6}, + [1112] = {.lex_state = 0, .external_lex_state = 6}, [1113] = {.lex_state = 0}, - [1114] = {.lex_state = 0, .external_lex_state = 6}, + [1114] = {.lex_state = 14}, [1115] = {.lex_state = 14}, [1116] = {.lex_state = 0, .external_lex_state = 6}, - [1117] = {.lex_state = 14}, + [1117] = {.lex_state = 0, .external_lex_state = 6}, [1118] = {.lex_state = 0}, - [1119] = {.lex_state = 0, .external_lex_state = 6}, - [1120] = {.lex_state = 0, .external_lex_state = 6}, - [1121] = {.lex_state = 0}, - [1122] = {.lex_state = 16}, - [1123] = {.lex_state = 0}, - [1124] = {.lex_state = 16}, - [1125] = {.lex_state = 0, .external_lex_state = 6}, + [1119] = {.lex_state = 0}, + [1120] = {.lex_state = 0}, + [1121] = {.lex_state = 0, .external_lex_state = 6}, + [1122] = {.lex_state = 0, .external_lex_state = 6}, + [1123] = {.lex_state = 14}, + [1124] = {.lex_state = 0, .external_lex_state = 6}, + [1125] = {.lex_state = 0}, [1126] = {.lex_state = 0, .external_lex_state = 6}, [1127] = {.lex_state = 0, .external_lex_state = 6}, - [1128] = {.lex_state = 14}, + [1128] = {.lex_state = 0, .external_lex_state = 6}, [1129] = {.lex_state = 0}, [1130] = {.lex_state = 0}, [1131] = {.lex_state = 0}, - [1132] = {.lex_state = 0, .external_lex_state = 6}, - [1133] = {.lex_state = 0}, - [1134] = {.lex_state = 14, .external_lex_state = 2}, - [1135] = {.lex_state = 0, .external_lex_state = 6}, - [1136] = {.lex_state = 0, .external_lex_state = 6}, - [1137] = {.lex_state = 0, .external_lex_state = 6}, - [1138] = {.lex_state = 14}, + [1132] = {.lex_state = 0}, + [1133] = {.lex_state = 0, .external_lex_state = 6}, + [1134] = {.lex_state = 14}, + [1135] = {.lex_state = 14}, + [1136] = {.lex_state = 14}, + [1137] = {.lex_state = 0}, + [1138] = {.lex_state = 16}, [1139] = {.lex_state = 14}, - [1140] = {.lex_state = 0}, - [1141] = {.lex_state = 0}, - [1142] = {.lex_state = 0, .external_lex_state = 6}, + [1140] = {.lex_state = 14}, + [1141] = {.lex_state = 14}, + [1142] = {.lex_state = 14}, [1143] = {.lex_state = 14}, - [1144] = {.lex_state = 14}, - [1145] = {.lex_state = 14}, + [1144] = {.lex_state = 0, .external_lex_state = 6}, + [1145] = {.lex_state = 0}, [1146] = {.lex_state = 0}, [1147] = {.lex_state = 0}, [1148] = {.lex_state = 14}, - [1149] = {.lex_state = 14}, + [1149] = {.lex_state = 0, .external_lex_state = 6}, [1150] = {.lex_state = 0}, - [1151] = {.lex_state = 14}, - [1152] = {.lex_state = 0, .external_lex_state = 6}, - [1153] = {.lex_state = 0}, - [1154] = {.lex_state = 0}, + [1151] = {.lex_state = 0}, + [1152] = {.lex_state = 0}, + [1153] = {.lex_state = 0, .external_lex_state = 6}, + [1154] = {.lex_state = 14}, [1155] = {.lex_state = 0}, [1156] = {.lex_state = 0}, - [1157] = {.lex_state = 14}, - [1158] = {.lex_state = 0}, + [1157] = {.lex_state = 0}, + [1158] = {.lex_state = 0, .external_lex_state = 6}, [1159] = {.lex_state = 0}, [1160] = {.lex_state = 0}, - [1161] = {.lex_state = 0, .external_lex_state = 6}, - [1162] = {.lex_state = 0, .external_lex_state = 6}, + [1161] = {.lex_state = 14}, + [1162] = {.lex_state = 0}, [1163] = {.lex_state = 0}, [1164] = {.lex_state = 0}, [1165] = {.lex_state = 0}, [1166] = {.lex_state = 0}, - [1167] = {.lex_state = 0, .external_lex_state = 6}, + [1167] = {.lex_state = 0}, [1168] = {.lex_state = 14}, - [1169] = {.lex_state = 0, .external_lex_state = 6}, - [1170] = {.lex_state = 14}, - [1171] = {.lex_state = 0}, + [1169] = {.lex_state = 0}, + [1170] = {.lex_state = 0}, + [1171] = {.lex_state = 14}, [1172] = {.lex_state = 0}, [1173] = {.lex_state = 0}, [1174] = {.lex_state = 0}, - [1175] = {.lex_state = 0, .external_lex_state = 6}, + [1175] = {.lex_state = 8}, [1176] = {.lex_state = 0}, [1177] = {.lex_state = 0}, - [1178] = {.lex_state = 0}, + [1178] = {.lex_state = 0, .external_lex_state = 6}, [1179] = {.lex_state = 0}, - [1180] = {.lex_state = 14}, + [1180] = {.lex_state = 8}, [1181] = {.lex_state = 14}, - [1182] = {.lex_state = 0}, - [1183] = {.lex_state = 14}, - [1184] = {.lex_state = 14}, + [1182] = {.lex_state = 0, .external_lex_state = 6}, + [1183] = {.lex_state = 0}, + [1184] = {.lex_state = 0}, [1185] = {.lex_state = 0}, [1186] = {.lex_state = 0}, - [1187] = {.lex_state = 0, .external_lex_state = 6}, - [1188] = {.lex_state = 0, .external_lex_state = 6}, - [1189] = {.lex_state = 0}, - [1190] = {.lex_state = 14}, + [1187] = {.lex_state = 0}, + [1188] = {.lex_state = 0}, + [1189] = {.lex_state = 14}, + [1190] = {.lex_state = 0}, [1191] = {.lex_state = 14}, - [1192] = {.lex_state = 0}, - [1193] = {.lex_state = 14}, - [1194] = {.lex_state = 14}, - [1195] = {.lex_state = 0}, + [1192] = {.lex_state = 14}, + [1193] = {.lex_state = 0, .external_lex_state = 6}, + [1194] = {.lex_state = 0}, + [1195] = {.lex_state = 14}, [1196] = {.lex_state = 0}, - [1197] = {.lex_state = 14}, - [1198] = {.lex_state = 0, .external_lex_state = 6}, + [1197] = {.lex_state = 0}, + [1198] = {.lex_state = 14}, [1199] = {.lex_state = 0}, - [1200] = {.lex_state = 0, .external_lex_state = 6}, + [1200] = {.lex_state = 14}, [1201] = {.lex_state = 0}, [1202] = {.lex_state = 0}, - [1203] = {.lex_state = 0}, - [1204] = {.lex_state = 0}, - [1205] = {.lex_state = 0, .external_lex_state = 6}, - [1206] = {.lex_state = 16}, + [1203] = {.lex_state = 14}, + [1204] = {.lex_state = 14}, + [1205] = {.lex_state = 0}, + [1206] = {.lex_state = 14}, [1207] = {.lex_state = 0}, [1208] = {.lex_state = 0}, - [1209] = {.lex_state = 8}, - [1210] = {.lex_state = 0, .external_lex_state = 6}, - [1211] = {.lex_state = 0, .external_lex_state = 6}, - [1212] = {.lex_state = 0}, + [1209] = {.lex_state = 14}, + [1210] = {.lex_state = 0}, + [1211] = {.lex_state = 0}, + [1212] = {.lex_state = 16}, [1213] = {.lex_state = 0}, [1214] = {.lex_state = 0}, [1215] = {.lex_state = 0}, [1216] = {.lex_state = 0}, - [1217] = {.lex_state = 0}, + [1217] = {.lex_state = 8}, [1218] = {.lex_state = 0}, - [1219] = {.lex_state = 0}, - [1220] = {.lex_state = 0}, + [1219] = {.lex_state = 8}, + [1220] = {.lex_state = 0, .external_lex_state = 6}, [1221] = {.lex_state = 0}, - [1222] = {.lex_state = 8}, + [1222] = {.lex_state = 0}, [1223] = {.lex_state = 0}, [1224] = {.lex_state = 0}, - [1225] = {.lex_state = 0}, + [1225] = {.lex_state = 14}, [1226] = {.lex_state = 0}, - [1227] = {.lex_state = 0}, - [1228] = {.lex_state = 0}, + [1227] = {.lex_state = 0, .external_lex_state = 6}, + [1228] = {.lex_state = 0, .external_lex_state = 6}, [1229] = {.lex_state = 0}, [1230] = {.lex_state = 0}, - [1231] = {.lex_state = 0}, + [1231] = {.lex_state = 14}, [1232] = {.lex_state = 0}, [1233] = {.lex_state = 0}, - [1234] = {.lex_state = 14}, - [1235] = {.lex_state = 0}, + [1234] = {.lex_state = 0}, + [1235] = {.lex_state = 14}, [1236] = {.lex_state = 0}, [1237] = {.lex_state = 0}, [1238] = {.lex_state = 0}, - [1239] = {.lex_state = 14}, + [1239] = {.lex_state = 0}, [1240] = {.lex_state = 0}, - [1241] = {.lex_state = 0}, - [1242] = {.lex_state = 0, .external_lex_state = 6}, - [1243] = {.lex_state = 0}, - [1244] = {.lex_state = 0}, + [1241] = {.lex_state = 0, .external_lex_state = 6}, + [1242] = {.lex_state = 0}, + [1243] = {.lex_state = 0, .external_lex_state = 6}, + [1244] = {.lex_state = 0, .external_lex_state = 6}, [1245] = {.lex_state = 0}, - [1246] = {.lex_state = 0, .external_lex_state = 6}, + [1246] = {.lex_state = 0}, [1247] = {.lex_state = 0}, - [1248] = {.lex_state = 8}, - [1249] = {.lex_state = 0}, - [1250] = {.lex_state = 0}, - [1251] = {.lex_state = 14}, + [1248] = {.lex_state = 0}, + [1249] = {.lex_state = 14}, + [1250] = {.lex_state = 14}, + [1251] = {.lex_state = 0, .external_lex_state = 6}, [1252] = {.lex_state = 0}, - [1253] = {.lex_state = 0}, - [1254] = {.lex_state = 0}, - [1255] = {.lex_state = 0}, - [1256] = {.lex_state = 0}, - [1257] = {.lex_state = 14}, - [1258] = {.lex_state = 8}, - [1259] = {.lex_state = 14}, + [1253] = {.lex_state = 0, .external_lex_state = 6}, + [1254] = {.lex_state = 14}, + [1255] = {.lex_state = 14}, + [1256] = {.lex_state = 14}, + [1257] = {.lex_state = 0}, + [1258] = {.lex_state = 0, .external_lex_state = 6}, + [1259] = {.lex_state = 8}, [1260] = {.lex_state = 14}, - [1261] = {.lex_state = 14}, - [1262] = {.lex_state = 0}, + [1261] = {.lex_state = 0}, + [1262] = {.lex_state = 14}, [1263] = {.lex_state = 0}, - [1264] = {.lex_state = 0}, - [1265] = {.lex_state = 14}, + [1264] = {.lex_state = 0, .external_lex_state = 6}, + [1265] = {.lex_state = 0}, [1266] = {.lex_state = 0}, - [1267] = {.lex_state = 14}, - [1268] = {.lex_state = 0}, + [1267] = {.lex_state = 0}, + [1268] = {.lex_state = 0, .external_lex_state = 6}, [1269] = {.lex_state = 0}, - [1270] = {.lex_state = 0, .external_lex_state = 6}, + [1270] = {.lex_state = 0}, [1271] = {.lex_state = 0}, [1272] = {.lex_state = 0}, - [1273] = {.lex_state = 14}, - [1274] = {.lex_state = 14}, - [1275] = {.lex_state = 14}, - [1276] = {.lex_state = 14}, + [1273] = {.lex_state = 0}, + [1274] = {.lex_state = 0}, + [1275] = {.lex_state = 0}, + [1276] = {.lex_state = 0}, [1277] = {.lex_state = 0}, [1278] = {.lex_state = 0}, [1279] = {.lex_state = 0}, [1280] = {.lex_state = 0}, - [1281] = {.lex_state = 0, .external_lex_state = 6}, - [1282] = {.lex_state = 8}, + [1281] = {.lex_state = 0}, + [1282] = {.lex_state = 0}, [1283] = {.lex_state = 0}, [1284] = {.lex_state = 0}, [1285] = {.lex_state = 0}, [1286] = {.lex_state = 0}, [1287] = {.lex_state = 0}, - [1288] = {.lex_state = 0, .external_lex_state = 6}, - [1289] = {.lex_state = 0, .external_lex_state = 6}, - [1290] = {.lex_state = 0, .external_lex_state = 6}, + [1288] = {.lex_state = 17}, + [1289] = {.lex_state = 0}, + [1290] = {.lex_state = 0}, [1291] = {.lex_state = 0, .external_lex_state = 6}, - [1292] = {.lex_state = 14}, + [1292] = {.lex_state = 0, .external_lex_state = 6}, [1293] = {.lex_state = 0, .external_lex_state = 6}, - [1294] = {.lex_state = 0}, - [1295] = {.lex_state = 0}, + [1294] = {.lex_state = 0, .external_lex_state = 6}, + [1295] = {.lex_state = 14}, [1296] = {.lex_state = 0}, - [1297] = {.lex_state = 0}, - [1298] = {.lex_state = 17}, - [1299] = {.lex_state = 0}, + [1297] = {.lex_state = 0, .external_lex_state = 6}, + [1298] = {.lex_state = 0, .external_lex_state = 6}, + [1299] = {.lex_state = 17}, [1300] = {.lex_state = 0}, [1301] = {.lex_state = 0, .external_lex_state = 6}, - [1302] = {.lex_state = 0}, + [1302] = {.lex_state = 17}, [1303] = {.lex_state = 0}, - [1304] = {.lex_state = 0}, - [1305] = {.lex_state = 17}, + [1304] = {.lex_state = 0, .external_lex_state = 6}, + [1305] = {.lex_state = 0, .external_lex_state = 6}, [1306] = {.lex_state = 0}, - [1307] = {.lex_state = 0}, - [1308] = {.lex_state = 17}, + [1307] = {.lex_state = 17}, + [1308] = {.lex_state = 0}, [1309] = {.lex_state = 0}, - [1310] = {.lex_state = 17}, + [1310] = {.lex_state = 0}, [1311] = {.lex_state = 0}, - [1312] = {.lex_state = 17}, + [1312] = {.lex_state = 0}, [1313] = {.lex_state = 0}, [1314] = {.lex_state = 0}, - [1315] = {.lex_state = 17}, - [1316] = {.lex_state = 0}, - [1317] = {.lex_state = 17}, + [1315] = {.lex_state = 0, .external_lex_state = 6}, + [1316] = {.lex_state = 0, .external_lex_state = 6}, + [1317] = {.lex_state = 0}, [1318] = {.lex_state = 0}, [1319] = {.lex_state = 0}, [1320] = {.lex_state = 0}, [1321] = {.lex_state = 0}, - [1322] = {.lex_state = 0, .external_lex_state = 6}, + [1322] = {.lex_state = 0}, [1323] = {.lex_state = 0}, [1324] = {.lex_state = 17}, [1325] = {.lex_state = 0}, - [1326] = {.lex_state = 0, .external_lex_state = 6}, + [1326] = {.lex_state = 0}, [1327] = {.lex_state = 0, .external_lex_state = 6}, - [1328] = {.lex_state = 0, .external_lex_state = 6}, - [1329] = {.lex_state = 0}, - [1330] = {.lex_state = 0, .external_lex_state = 6}, - [1331] = {.lex_state = 0}, + [1328] = {.lex_state = 17}, + [1329] = {.lex_state = 17}, + [1330] = {.lex_state = 17}, + [1331] = {.lex_state = 17}, [1332] = {.lex_state = 0}, [1333] = {.lex_state = 0}, - [1334] = {.lex_state = 0}, + [1334] = {.lex_state = 17}, [1335] = {.lex_state = 0}, [1336] = {.lex_state = 0}, - [1337] = {.lex_state = 0}, + [1337] = {.lex_state = 0, .external_lex_state = 6}, [1338] = {.lex_state = 0, .external_lex_state = 6}, - [1339] = {.lex_state = 0, .external_lex_state = 6}, - [1340] = {.lex_state = 0}, + [1339] = {.lex_state = 0}, + [1340] = {.lex_state = 0, .external_lex_state = 6}, [1341] = {.lex_state = 0, .external_lex_state = 6}, - [1342] = {.lex_state = 17}, + [1342] = {.lex_state = 0, .external_lex_state = 6}, [1343] = {.lex_state = 0}, - [1344] = {.lex_state = 0, .external_lex_state = 6}, + [1344] = {.lex_state = 0}, [1345] = {.lex_state = 0}, - [1346] = {.lex_state = 0, .external_lex_state = 6}, - [1347] = {.lex_state = 16}, + [1346] = {.lex_state = 0}, + [1347] = {.lex_state = 0}, [1348] = {.lex_state = 0}, - [1349] = {.lex_state = 17}, - [1350] = {.lex_state = 0}, + [1349] = {.lex_state = 0}, + [1350] = {.lex_state = 0, .external_lex_state = 6}, [1351] = {.lex_state = 0}, - [1352] = {.lex_state = 0, .external_lex_state = 6}, - [1353] = {.lex_state = 0, .external_lex_state = 6}, - [1354] = {.lex_state = 0}, - [1355] = {.lex_state = 14}, + [1352] = {.lex_state = 16}, + [1353] = {.lex_state = 0}, + [1354] = {.lex_state = 14}, + [1355] = {.lex_state = 0}, [1356] = {.lex_state = 14}, - [1357] = {.lex_state = 0}, + [1357] = {.lex_state = 14}, [1358] = {.lex_state = 14}, [1359] = {.lex_state = 0}, [1360] = {.lex_state = 0}, [1361] = {.lex_state = 0}, [1362] = {.lex_state = 0}, [1363] = {.lex_state = 0}, - [1364] = {.lex_state = 14}, + [1364] = {.lex_state = 0}, [1365] = {.lex_state = 14}, [1366] = {.lex_state = 0}, [1367] = {.lex_state = 0}, [1368] = {.lex_state = 0}, [1369] = {.lex_state = 0}, - [1370] = {.lex_state = 0}, + [1370] = {.lex_state = 14}, [1371] = {.lex_state = 0}, [1372] = {.lex_state = 0}, - [1373] = {.lex_state = 14}, + [1373] = {.lex_state = 0}, [1374] = {.lex_state = 0}, - [1375] = {.lex_state = 14}, + [1375] = {.lex_state = 0}, [1376] = {.lex_state = 0}, [1377] = {.lex_state = 0}, [1378] = {.lex_state = 0}, [1379] = {.lex_state = 0}, [1380] = {.lex_state = 0}, [1381] = {.lex_state = 0}, - [1382] = {.lex_state = 0}, - [1383] = {.lex_state = 14}, - [1384] = {.lex_state = 0}, - [1385] = {.lex_state = 0}, + [1382] = {.lex_state = 14}, + [1383] = {.lex_state = 0}, + [1384] = {.lex_state = 14}, + [1385] = {.lex_state = 14}, [1386] = {.lex_state = 0}, [1387] = {.lex_state = 0}, [1388] = {.lex_state = 0}, [1389] = {.lex_state = 0}, [1390] = {.lex_state = 0}, - [1391] = {.lex_state = 0}, - [1392] = {.lex_state = 14}, - [1393] = {.lex_state = 0}, - [1394] = {.lex_state = 14}, + [1391] = {.lex_state = 14}, + [1392] = {.lex_state = 0}, + [1393] = {.lex_state = 14}, + [1394] = {.lex_state = 0}, [1395] = {.lex_state = 0}, - [1396] = {.lex_state = 14}, - [1397] = {.lex_state = 14}, + [1396] = {.lex_state = 0}, + [1397] = {.lex_state = 0}, [1398] = {.lex_state = 0}, - [1399] = {.lex_state = 14}, - [1400] = {.lex_state = 14}, + [1399] = {.lex_state = 0}, + [1400] = {.lex_state = 0}, [1401] = {.lex_state = 0}, [1402] = {.lex_state = 14}, [1403] = {.lex_state = 14}, [1404] = {.lex_state = 14}, - [1405] = {.lex_state = 14}, + [1405] = {.lex_state = 0}, [1406] = {.lex_state = 0}, [1407] = {.lex_state = 0}, - [1408] = {.lex_state = 0}, + [1408] = {.lex_state = 14}, [1409] = {.lex_state = 0}, - [1410] = {.lex_state = 0}, + [1410] = {.lex_state = 14}, [1411] = {.lex_state = 14}, [1412] = {.lex_state = 14}, [1413] = {.lex_state = 0}, - [1414] = {.lex_state = 0}, - [1415] = {.lex_state = 14}, - [1416] = {.lex_state = 0}, + [1414] = {.lex_state = 14}, + [1415] = {.lex_state = 0}, + [1416] = {.lex_state = 14}, [1417] = {.lex_state = 0}, [1418] = {.lex_state = 0}, - [1419] = {.lex_state = 0}, - [1420] = {.lex_state = 14}, - [1421] = {.lex_state = 0}, + [1419] = {.lex_state = 14}, + [1420] = {.lex_state = 0}, + [1421] = {.lex_state = 14}, [1422] = {.lex_state = 14}, [1423] = {.lex_state = 14}, - [1424] = {.lex_state = 14}, + [1424] = {.lex_state = 0}, [1425] = {.lex_state = 0}, [1426] = {.lex_state = 0}, [1427] = {.lex_state = 0}, - [1428] = {.lex_state = 0}, - [1429] = {.lex_state = 14}, - [1430] = {.lex_state = 0}, + [1428] = {.lex_state = 14}, + [1429] = {.lex_state = 0}, + [1430] = {.lex_state = 14}, [1431] = {.lex_state = 14}, - [1432] = {.lex_state = 0}, + [1432] = {.lex_state = 14}, [1433] = {.lex_state = 14}, [1434] = {.lex_state = 14}, [1435] = {.lex_state = 14}, - [1436] = {.lex_state = 0}, + [1436] = {.lex_state = 14}, [1437] = {.lex_state = 0}, [1438] = {.lex_state = 14}, - [1439] = {.lex_state = 14}, - [1440] = {.lex_state = 14}, - [1441] = {.lex_state = 0}, + [1439] = {.lex_state = 0}, + [1440] = {.lex_state = 0}, + [1441] = {.lex_state = 14}, [1442] = {.lex_state = 0}, [1443] = {.lex_state = 0}, [1444] = {.lex_state = 14}, [1445] = {.lex_state = 0}, [1446] = {.lex_state = 0}, - [1447] = {.lex_state = 0}, - [1448] = {.lex_state = 14}, - [1449] = {.lex_state = 0}, + [1447] = {.lex_state = 14}, + [1448] = {.lex_state = 0}, + [1449] = {.lex_state = 14}, [1450] = {.lex_state = 0}, [1451] = {.lex_state = 0}, [1452] = {.lex_state = 0}, @@ -7550,16 +9136,16 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [1454] = {.lex_state = 0}, [1455] = {.lex_state = 0}, [1456] = {.lex_state = 0}, - [1457] = {.lex_state = 14}, - [1458] = {.lex_state = 14}, - [1459] = {.lex_state = 14}, + [1457] = {.lex_state = 0}, + [1458] = {.lex_state = 0}, + [1459] = {.lex_state = 0}, [1460] = {.lex_state = 0}, [1461] = {.lex_state = 0}, [1462] = {.lex_state = 0}, [1463] = {.lex_state = 0}, [1464] = {.lex_state = 0}, [1465] = {.lex_state = 0}, - [1466] = {.lex_state = 14}, + [1466] = {.lex_state = 0}, [1467] = {.lex_state = 14}, [1468] = {.lex_state = 0}, [1469] = {.lex_state = 0}, @@ -7569,8 +9155,8 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [1473] = {.lex_state = 0}, [1474] = {.lex_state = 0}, [1475] = {.lex_state = 0}, - [1476] = {.lex_state = 0}, - [1477] = {.lex_state = 0}, + [1476] = {.lex_state = 14}, + [1477] = {.lex_state = 14}, [1478] = {.lex_state = 0}, }; @@ -7733,73 +9319,73 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_end] = ACTIONS(1), }, [1] = { - [sym_module] = STATE(1455), - [sym__statement] = STATE(60), - [sym__simple_statements] = STATE(60), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_if_statement] = STATE(60), - [sym_for_statement] = STATE(60), - [sym_while_statement] = STATE(60), - [sym_try_statement] = STATE(60), - [sym_with_statement] = STATE(60), - [sym_match_statement] = STATE(60), - [sym_function_definition] = STATE(60), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_class_definition] = STATE(60), - [sym_decorated_definition] = STATE(60), - [sym_decorator] = STATE(926), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym_module] = STATE(1390), + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(957), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(60), - [aux_sym_decorated_definition_repeat1] = STATE(926), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(957), [ts_builtin_sym_end] = ACTIONS(5), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), @@ -7848,73 +9434,73 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(81), }, [2] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(485), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(548), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -7963,73 +9549,73 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(81), }, [3] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(474), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(502), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -8074,77 +9660,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [4] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(522), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(507), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -8189,77 +9775,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [5] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(520), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(523), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -8304,77 +9890,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [6] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(315), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(551), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -8423,73 +10009,73 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(81), }, [7] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(400), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(553), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -8534,77 +10120,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [8] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(277), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(555), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -8649,77 +10235,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [9] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(452), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(465), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -8764,77 +10350,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [10] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(479), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(361), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -8879,77 +10465,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [11] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(477), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(322), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -8994,77 +10580,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [12] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(475), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(489), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -9109,77 +10695,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [13] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(336), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(509), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -9224,77 +10810,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [14] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(333), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(515), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -9339,77 +10925,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [15] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(481), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(454), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -9454,77 +11040,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [16] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(462), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(366), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -9569,77 +11155,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [17] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(557), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(528), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -9684,77 +11270,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [18] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(436), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(325), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -9799,77 +11385,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [19] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(332), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(456), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -9914,77 +11500,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [20] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(958), - [sym_block] = STATE(997), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(534), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -10029,77 +11615,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(105), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [21] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(532), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(270), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -10148,73 +11734,73 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(81), }, [22] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(449), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(371), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -10259,77 +11845,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [23] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(456), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(539), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -10374,77 +11960,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [24] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(279), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(326), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -10493,73 +12079,73 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(81), }, [25] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(418), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(446), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -10608,73 +12194,73 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(81), }, [26] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(490), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(547), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -10719,77 +12305,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(101), [sym__string_start] = ACTIONS(81), }, [27] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(500), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(62), + [sym__simple_statements] = STATE(62), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(62), + [sym_for_statement] = STATE(62), + [sym_while_statement] = STATE(62), + [sym_try_statement] = STATE(62), + [sym_with_statement] = STATE(62), + [sym_match_statement] = STATE(62), + [sym_function_definition] = STATE(62), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(62), + [sym_decorated_definition] = STATE(62), + [sym_decorator] = STATE(932), + [sym_block] = STATE(1002), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(62), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -10834,77 +12420,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(103), [sym__string_start] = ACTIONS(81), }, [28] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(506), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(329), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -10953,73 +12539,73 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(81), }, [29] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(538), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(313), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -11068,73 +12654,73 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(81), }, [30] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(548), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(62), + [sym__simple_statements] = STATE(62), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(62), + [sym_for_statement] = STATE(62), + [sym_while_statement] = STATE(62), + [sym_try_statement] = STATE(62), + [sym_with_statement] = STATE(62), + [sym_match_statement] = STATE(62), + [sym_function_definition] = STATE(62), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(62), + [sym_decorated_definition] = STATE(62), + [sym_decorator] = STATE(932), + [sym_block] = STATE(975), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(62), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -11179,77 +12765,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(103), [sym__string_start] = ACTIONS(81), }, [31] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(553), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(255), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -11294,77 +12880,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [32] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(555), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(391), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -11409,77 +12995,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [33] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(539), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(476), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -11524,77 +13110,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [34] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(549), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(478), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -11639,77 +13225,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [35] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(482), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(483), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -11754,77 +13340,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [36] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(419), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(491), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -11869,77 +13455,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [37] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(318), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(493), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -11984,77 +13570,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [38] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(530), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(495), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -12099,77 +13685,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [39] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(348), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(498), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -12214,77 +13800,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [40] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(487), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(397), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -12329,77 +13915,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [41] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(344), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(335), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -12444,77 +14030,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [42] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(464), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(504), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -12559,77 +14145,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [43] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(466), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(458), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -12674,77 +14260,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [44] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(473), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(508), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -12789,77 +14375,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [45] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(447), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(451), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -12904,77 +14490,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [46] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(441), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(401), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -13019,77 +14605,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [47] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(542), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(513), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -13134,77 +14720,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [48] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(329), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(338), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -13249,77 +14835,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [49] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(446), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(452), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -13364,77 +14950,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [50] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(339), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(517), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -13479,77 +15065,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [51] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(533), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(404), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -13594,77 +15180,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [52] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(552), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(520), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -13709,77 +15295,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [53] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(958), - [sym_block] = STATE(996), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(339), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -13828,73 +15414,73 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(81), }, [54] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(391), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(455), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -13939,77 +15525,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [55] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(535), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(524), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -14054,77 +15640,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [56] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(323), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(525), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -14169,77 +15755,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [57] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(454), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(342), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -14284,77 +15870,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(101), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [58] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(958), - [sym_block] = STATE(398), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(932), + [sym_block] = STATE(343), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -14399,77 +15985,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(81), }, [59] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(958), - [sym_block] = STATE(316), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(932), + [sym_block] = STATE(347), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -14518,73 +16104,72 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(81), }, [60] = { - [sym__statement] = STATE(64), - [sym__simple_statements] = STATE(64), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_if_statement] = STATE(64), - [sym_for_statement] = STATE(64), - [sym_while_statement] = STATE(64), - [sym_try_statement] = STATE(64), - [sym_with_statement] = STATE(64), - [sym_match_statement] = STATE(64), - [sym_function_definition] = STATE(64), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_class_definition] = STATE(64), - [sym_decorated_definition] = STATE(64), - [sym_decorator] = STATE(926), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(65), + [sym__simple_statements] = STATE(65), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(65), + [sym_for_statement] = STATE(65), + [sym_while_statement] = STATE(65), + [sym_try_statement] = STATE(65), + [sym_with_statement] = STATE(65), + [sym_match_statement] = STATE(65), + [sym_function_definition] = STATE(65), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(65), + [sym_decorated_definition] = STATE(65), + [sym_decorator] = STATE(932), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(64), - [aux_sym_decorated_definition_repeat1] = STATE(926), - [ts_builtin_sym_end] = ACTIONS(107), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(65), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -14598,24 +16183,24 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(33), - [anon_sym_async] = ACTIONS(35), - [anon_sym_for] = ACTIONS(37), - [anon_sym_while] = ACTIONS(39), - [anon_sym_try] = ACTIONS(41), - [anon_sym_with] = ACTIONS(43), - [anon_sym_match] = ACTIONS(45), + [anon_sym_if] = ACTIONS(83), + [anon_sym_async] = ACTIONS(85), + [anon_sym_for] = ACTIONS(87), + [anon_sym_while] = ACTIONS(89), + [anon_sym_try] = ACTIONS(91), + [anon_sym_with] = ACTIONS(93), + [anon_sym_match] = ACTIONS(95), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), [anon_sym_LBRACE] = ACTIONS(51), [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(55), + [anon_sym_def] = ACTIONS(97), [anon_sym_global] = ACTIONS(57), [anon_sym_nonlocal] = ACTIONS(59), [anon_sym_exec] = ACTIONS(61), [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(65), + [anon_sym_class] = ACTIONS(99), [anon_sym_AT] = ACTIONS(67), [anon_sym_not] = ACTIONS(69), [anon_sym_TILDE] = ACTIONS(47), @@ -14629,75 +16214,77 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(107), [sym__string_start] = ACTIONS(81), }, [61] = { - [sym__statement] = STATE(62), - [sym__simple_statements] = STATE(62), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(62), - [sym_for_statement] = STATE(62), - [sym_while_statement] = STATE(62), - [sym_try_statement] = STATE(62), - [sym_with_statement] = STATE(62), - [sym_match_statement] = STATE(62), - [sym_function_definition] = STATE(62), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(62), - [sym_decorated_definition] = STATE(62), - [sym_decorator] = STATE(958), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_if_statement] = STATE(63), + [sym_for_statement] = STATE(63), + [sym_while_statement] = STATE(63), + [sym_try_statement] = STATE(63), + [sym_with_statement] = STATE(63), + [sym_match_statement] = STATE(63), + [sym_function_definition] = STATE(63), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(957), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(62), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(957), + [ts_builtin_sym_end] = ACTIONS(109), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -14711,24 +16298,24 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(83), - [anon_sym_async] = ACTIONS(85), - [anon_sym_for] = ACTIONS(87), - [anon_sym_while] = ACTIONS(89), - [anon_sym_try] = ACTIONS(91), - [anon_sym_with] = ACTIONS(93), - [anon_sym_match] = ACTIONS(95), + [anon_sym_if] = ACTIONS(33), + [anon_sym_async] = ACTIONS(35), + [anon_sym_for] = ACTIONS(37), + [anon_sym_while] = ACTIONS(39), + [anon_sym_try] = ACTIONS(41), + [anon_sym_with] = ACTIONS(43), + [anon_sym_match] = ACTIONS(45), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), [anon_sym_LBRACE] = ACTIONS(51), [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(97), + [anon_sym_def] = ACTIONS(55), [anon_sym_global] = ACTIONS(57), [anon_sym_nonlocal] = ACTIONS(59), [anon_sym_exec] = ACTIONS(61), [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(99), + [anon_sym_class] = ACTIONS(65), [anon_sym_AT] = ACTIONS(67), [anon_sym_not] = ACTIONS(69), [anon_sym_TILDE] = ACTIONS(47), @@ -14742,190 +16329,75 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(109), [sym__string_start] = ACTIONS(81), }, [62] = { - [sym__statement] = STATE(62), - [sym__simple_statements] = STATE(62), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(62), - [sym_for_statement] = STATE(62), - [sym_while_statement] = STATE(62), - [sym_try_statement] = STATE(62), - [sym_with_statement] = STATE(62), - [sym_match_statement] = STATE(62), - [sym_function_definition] = STATE(62), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(62), - [sym_decorated_definition] = STATE(62), - [sym_decorator] = STATE(958), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), - [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(62), - [aux_sym_decorated_definition_repeat1] = STATE(958), - [sym_identifier] = ACTIONS(111), - [anon_sym_import] = ACTIONS(114), - [anon_sym_from] = ACTIONS(117), - [anon_sym_LPAREN] = ACTIONS(120), - [anon_sym_STAR] = ACTIONS(123), - [anon_sym_print] = ACTIONS(126), - [anon_sym_assert] = ACTIONS(129), - [anon_sym_return] = ACTIONS(132), - [anon_sym_del] = ACTIONS(135), - [anon_sym_raise] = ACTIONS(138), - [anon_sym_pass] = ACTIONS(141), - [anon_sym_break] = ACTIONS(144), - [anon_sym_continue] = ACTIONS(147), - [anon_sym_if] = ACTIONS(150), - [anon_sym_async] = ACTIONS(153), - [anon_sym_for] = ACTIONS(156), - [anon_sym_while] = ACTIONS(159), - [anon_sym_try] = ACTIONS(162), - [anon_sym_with] = ACTIONS(165), - [anon_sym_match] = ACTIONS(168), - [anon_sym_DASH] = ACTIONS(171), - [anon_sym_PLUS] = ACTIONS(171), - [anon_sym_LBRACK] = ACTIONS(174), - [anon_sym_LBRACE] = ACTIONS(177), - [anon_sym_STAR_STAR] = ACTIONS(180), - [anon_sym_def] = ACTIONS(183), - [anon_sym_global] = ACTIONS(186), - [anon_sym_nonlocal] = ACTIONS(189), - [anon_sym_exec] = ACTIONS(192), - [anon_sym_type] = ACTIONS(195), - [anon_sym_class] = ACTIONS(198), - [anon_sym_AT] = ACTIONS(201), - [anon_sym_not] = ACTIONS(204), - [anon_sym_TILDE] = ACTIONS(171), - [anon_sym_lambda] = ACTIONS(207), - [anon_sym_yield] = ACTIONS(210), - [sym_ellipsis] = ACTIONS(213), - [sym_integer] = ACTIONS(216), - [sym_float] = ACTIONS(213), - [anon_sym_await] = ACTIONS(219), - [sym_true] = ACTIONS(216), - [sym_false] = ACTIONS(216), - [sym_none] = ACTIONS(216), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(222), - [sym__string_start] = ACTIONS(224), - }, - [63] = { - [sym__statement] = STATE(62), - [sym__simple_statements] = STATE(62), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(62), - [sym_for_statement] = STATE(62), - [sym_while_statement] = STATE(62), - [sym_try_statement] = STATE(62), - [sym_with_statement] = STATE(62), - [sym_match_statement] = STATE(62), - [sym_function_definition] = STATE(62), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(62), - [sym_decorated_definition] = STATE(62), - [sym_decorator] = STATE(958), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__statement] = STATE(65), + [sym__simple_statements] = STATE(65), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(65), + [sym_for_statement] = STATE(65), + [sym_while_statement] = STATE(65), + [sym_try_statement] = STATE(65), + [sym_with_statement] = STATE(65), + [sym_match_statement] = STATE(65), + [sym_function_definition] = STATE(65), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(65), + [sym_decorated_definition] = STATE(65), + [sym_decorator] = STATE(932), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(62), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(65), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -14970,190 +16442,190 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(227), + [sym__dedent] = ACTIONS(111), [sym__string_start] = ACTIONS(81), }, - [64] = { - [sym__statement] = STATE(64), - [sym__simple_statements] = STATE(64), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_if_statement] = STATE(64), - [sym_for_statement] = STATE(64), - [sym_while_statement] = STATE(64), - [sym_try_statement] = STATE(64), - [sym_with_statement] = STATE(64), - [sym_match_statement] = STATE(64), - [sym_function_definition] = STATE(64), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_class_definition] = STATE(64), - [sym_decorated_definition] = STATE(64), - [sym_decorator] = STATE(926), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [63] = { + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_if_statement] = STATE(63), + [sym_for_statement] = STATE(63), + [sym_while_statement] = STATE(63), + [sym_try_statement] = STATE(63), + [sym_with_statement] = STATE(63), + [sym_match_statement] = STATE(63), + [sym_function_definition] = STATE(63), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(957), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(64), - [aux_sym_decorated_definition_repeat1] = STATE(926), - [ts_builtin_sym_end] = ACTIONS(222), - [sym_identifier] = ACTIONS(111), - [anon_sym_import] = ACTIONS(114), - [anon_sym_from] = ACTIONS(117), - [anon_sym_LPAREN] = ACTIONS(120), - [anon_sym_STAR] = ACTIONS(123), - [anon_sym_print] = ACTIONS(126), - [anon_sym_assert] = ACTIONS(129), - [anon_sym_return] = ACTIONS(132), - [anon_sym_del] = ACTIONS(135), - [anon_sym_raise] = ACTIONS(138), - [anon_sym_pass] = ACTIONS(141), - [anon_sym_break] = ACTIONS(144), - [anon_sym_continue] = ACTIONS(147), - [anon_sym_if] = ACTIONS(229), - [anon_sym_async] = ACTIONS(232), - [anon_sym_for] = ACTIONS(235), - [anon_sym_while] = ACTIONS(238), - [anon_sym_try] = ACTIONS(241), - [anon_sym_with] = ACTIONS(244), - [anon_sym_match] = ACTIONS(247), - [anon_sym_DASH] = ACTIONS(171), - [anon_sym_PLUS] = ACTIONS(171), - [anon_sym_LBRACK] = ACTIONS(174), - [anon_sym_LBRACE] = ACTIONS(177), - [anon_sym_STAR_STAR] = ACTIONS(180), - [anon_sym_def] = ACTIONS(250), - [anon_sym_global] = ACTIONS(186), - [anon_sym_nonlocal] = ACTIONS(189), - [anon_sym_exec] = ACTIONS(192), - [anon_sym_type] = ACTIONS(195), - [anon_sym_class] = ACTIONS(253), - [anon_sym_AT] = ACTIONS(201), - [anon_sym_not] = ACTIONS(204), - [anon_sym_TILDE] = ACTIONS(171), - [anon_sym_lambda] = ACTIONS(207), - [anon_sym_yield] = ACTIONS(210), - [sym_ellipsis] = ACTIONS(213), - [sym_integer] = ACTIONS(216), - [sym_float] = ACTIONS(213), - [anon_sym_await] = ACTIONS(219), - [sym_true] = ACTIONS(216), - [sym_false] = ACTIONS(216), - [sym_none] = ACTIONS(216), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(957), + [ts_builtin_sym_end] = ACTIONS(113), + [sym_identifier] = ACTIONS(115), + [anon_sym_import] = ACTIONS(118), + [anon_sym_from] = ACTIONS(121), + [anon_sym_LPAREN] = ACTIONS(124), + [anon_sym_STAR] = ACTIONS(127), + [anon_sym_print] = ACTIONS(130), + [anon_sym_assert] = ACTIONS(133), + [anon_sym_return] = ACTIONS(136), + [anon_sym_del] = ACTIONS(139), + [anon_sym_raise] = ACTIONS(142), + [anon_sym_pass] = ACTIONS(145), + [anon_sym_break] = ACTIONS(148), + [anon_sym_continue] = ACTIONS(151), + [anon_sym_if] = ACTIONS(154), + [anon_sym_async] = ACTIONS(157), + [anon_sym_for] = ACTIONS(160), + [anon_sym_while] = ACTIONS(163), + [anon_sym_try] = ACTIONS(166), + [anon_sym_with] = ACTIONS(169), + [anon_sym_match] = ACTIONS(172), + [anon_sym_DASH] = ACTIONS(175), + [anon_sym_PLUS] = ACTIONS(175), + [anon_sym_LBRACK] = ACTIONS(178), + [anon_sym_LBRACE] = ACTIONS(181), + [anon_sym_STAR_STAR] = ACTIONS(184), + [anon_sym_def] = ACTIONS(187), + [anon_sym_global] = ACTIONS(190), + [anon_sym_nonlocal] = ACTIONS(193), + [anon_sym_exec] = ACTIONS(196), + [anon_sym_type] = ACTIONS(199), + [anon_sym_class] = ACTIONS(202), + [anon_sym_AT] = ACTIONS(205), + [anon_sym_not] = ACTIONS(208), + [anon_sym_TILDE] = ACTIONS(175), + [anon_sym_lambda] = ACTIONS(211), + [anon_sym_yield] = ACTIONS(214), + [sym_ellipsis] = ACTIONS(217), + [sym_integer] = ACTIONS(220), + [sym_float] = ACTIONS(217), + [anon_sym_await] = ACTIONS(223), + [sym_true] = ACTIONS(220), + [sym_false] = ACTIONS(220), + [sym_none] = ACTIONS(220), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(224), + [sym__string_start] = ACTIONS(226), }, - [65] = { - [sym__statement] = STATE(62), - [sym__simple_statements] = STATE(62), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_if_statement] = STATE(62), - [sym_for_statement] = STATE(62), - [sym_while_statement] = STATE(62), - [sym_try_statement] = STATE(62), - [sym_with_statement] = STATE(62), - [sym_match_statement] = STATE(62), - [sym_function_definition] = STATE(62), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_class_definition] = STATE(62), - [sym_decorated_definition] = STATE(62), - [sym_decorator] = STATE(958), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [64] = { + [sym__statement] = STATE(65), + [sym__simple_statements] = STATE(65), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(65), + [sym_for_statement] = STATE(65), + [sym_while_statement] = STATE(65), + [sym_try_statement] = STATE(65), + [sym_with_statement] = STATE(65), + [sym_match_statement] = STATE(65), + [sym_function_definition] = STATE(65), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(65), + [sym_decorated_definition] = STATE(65), + [sym_decorator] = STATE(932), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [aux_sym_module_repeat1] = STATE(62), - [aux_sym_decorated_definition_repeat1] = STATE(958), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(65), + [aux_sym_decorated_definition_repeat1] = STATE(932), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -15198,62 +16670,176 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(256), + [sym__dedent] = ACTIONS(229), [sym__string_start] = ACTIONS(81), }, + [65] = { + [sym__statement] = STATE(65), + [sym__simple_statements] = STATE(65), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_if_statement] = STATE(65), + [sym_for_statement] = STATE(65), + [sym_while_statement] = STATE(65), + [sym_try_statement] = STATE(65), + [sym_with_statement] = STATE(65), + [sym_match_statement] = STATE(65), + [sym_function_definition] = STATE(65), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_class_definition] = STATE(65), + [sym_decorated_definition] = STATE(65), + [sym_decorator] = STATE(932), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), + [sym_string] = STATE(693), + [sym_await] = STATE(773), + [aux_sym_module_repeat1] = STATE(65), + [aux_sym_decorated_definition_repeat1] = STATE(932), + [sym_identifier] = ACTIONS(115), + [anon_sym_import] = ACTIONS(118), + [anon_sym_from] = ACTIONS(121), + [anon_sym_LPAREN] = ACTIONS(124), + [anon_sym_STAR] = ACTIONS(127), + [anon_sym_print] = ACTIONS(130), + [anon_sym_assert] = ACTIONS(133), + [anon_sym_return] = ACTIONS(136), + [anon_sym_del] = ACTIONS(139), + [anon_sym_raise] = ACTIONS(142), + [anon_sym_pass] = ACTIONS(145), + [anon_sym_break] = ACTIONS(148), + [anon_sym_continue] = ACTIONS(151), + [anon_sym_if] = ACTIONS(231), + [anon_sym_async] = ACTIONS(234), + [anon_sym_for] = ACTIONS(237), + [anon_sym_while] = ACTIONS(240), + [anon_sym_try] = ACTIONS(243), + [anon_sym_with] = ACTIONS(246), + [anon_sym_match] = ACTIONS(249), + [anon_sym_DASH] = ACTIONS(175), + [anon_sym_PLUS] = ACTIONS(175), + [anon_sym_LBRACK] = ACTIONS(178), + [anon_sym_LBRACE] = ACTIONS(181), + [anon_sym_STAR_STAR] = ACTIONS(184), + [anon_sym_def] = ACTIONS(252), + [anon_sym_global] = ACTIONS(190), + [anon_sym_nonlocal] = ACTIONS(193), + [anon_sym_exec] = ACTIONS(196), + [anon_sym_type] = ACTIONS(199), + [anon_sym_class] = ACTIONS(255), + [anon_sym_AT] = ACTIONS(205), + [anon_sym_not] = ACTIONS(208), + [anon_sym_TILDE] = ACTIONS(175), + [anon_sym_lambda] = ACTIONS(211), + [anon_sym_yield] = ACTIONS(214), + [sym_ellipsis] = ACTIONS(217), + [sym_integer] = ACTIONS(220), + [sym_float] = ACTIONS(217), + [anon_sym_await] = ACTIONS(223), + [sym_true] = ACTIONS(220), + [sym_false] = ACTIONS(220), + [sym_none] = ACTIONS(220), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(113), + [sym__string_start] = ACTIONS(226), + }, [66] = { - [sym_named_expression] = STATE(862), - [sym_list_splat] = STATE(1329), - [sym_dictionary_splat] = STATE(1329), - [sym_expression_list] = STATE(1404), - [sym_expression] = STATE(1029), - [sym_primary_expression] = STATE(589), - [sym_not_operator] = STATE(862), - [sym_boolean_operator] = STATE(862), - [sym_binary_operator] = STATE(575), - [sym_unary_operator] = STATE(575), - [sym_comparison_operator] = STATE(862), - [sym_lambda] = STATE(862), - [sym_attribute] = STATE(575), - [sym_subscript] = STATE(575), - [sym_call] = STATE(575), - [sym_list] = STATE(575), - [sym_set] = STATE(575), - [sym_tuple] = STATE(575), - [sym_dictionary] = STATE(575), - [sym_list_comprehension] = STATE(575), - [sym_dictionary_comprehension] = STATE(575), - [sym_set_comprehension] = STATE(575), - [sym_generator_expression] = STATE(575), - [sym_parenthesized_expression] = STATE(575), - [sym_conditional_expression] = STATE(862), - [sym_concatenated_string] = STATE(575), - [sym_string] = STATE(569), - [sym_await] = STATE(575), + [sym_named_expression] = STATE(863), + [sym_list_splat] = STATE(1284), + [sym_dictionary_splat] = STATE(1284), + [sym_expression_list] = STATE(1438), + [sym_expression] = STATE(1014), + [sym_primary_expression] = STATE(595), + [sym_not_operator] = STATE(863), + [sym_boolean_operator] = STATE(863), + [sym_binary_operator] = STATE(589), + [sym_unary_operator] = STATE(589), + [sym_comparison_operator] = STATE(863), + [sym_lambda] = STATE(863), + [sym_attribute] = STATE(589), + [sym_subscript] = STATE(589), + [sym_call] = STATE(589), + [sym_list] = STATE(589), + [sym_set] = STATE(589), + [sym_tuple] = STATE(589), + [sym_dictionary] = STATE(589), + [sym_list_comprehension] = STATE(589), + [sym_dictionary_comprehension] = STATE(589), + [sym_set_comprehension] = STATE(589), + [sym_generator_expression] = STATE(589), + [sym_parenthesized_expression] = STATE(589), + [sym_conditional_expression] = STATE(863), + [sym_concatenated_string] = STATE(589), + [sym_string] = STATE(565), + [sym_await] = STATE(589), [sym_identifier] = ACTIONS(258), [anon_sym_DOT] = ACTIONS(260), [anon_sym_LPAREN] = ACTIONS(262), - [anon_sym_COMMA] = ACTIONS(264), - [anon_sym_STAR] = ACTIONS(267), - [anon_sym_print] = ACTIONS(269), + [anon_sym_COMMA] = ACTIONS(265), + [anon_sym_STAR] = ACTIONS(268), + [anon_sym_print] = ACTIONS(271), [anon_sym_GT_GT] = ACTIONS(260), - [anon_sym_COLON_EQ] = ACTIONS(271), + [anon_sym_COLON_EQ] = ACTIONS(273), [anon_sym_if] = ACTIONS(260), - [anon_sym_COLON] = ACTIONS(273), - [anon_sym_async] = ACTIONS(269), + [anon_sym_COLON] = ACTIONS(275), + [anon_sym_async] = ACTIONS(271), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(269), + [anon_sym_match] = ACTIONS(271), [anon_sym_PIPE] = ACTIONS(260), - [anon_sym_DASH] = ACTIONS(275), - [anon_sym_PLUS] = ACTIONS(275), - [anon_sym_LBRACK] = ACTIONS(277), - [anon_sym_LBRACE] = ACTIONS(279), - [anon_sym_STAR_STAR] = ACTIONS(281), - [anon_sym_EQ] = ACTIONS(273), - [anon_sym_exec] = ACTIONS(269), - [anon_sym_type] = ACTIONS(269), + [anon_sym_DASH] = ACTIONS(277), + [anon_sym_PLUS] = ACTIONS(277), + [anon_sym_LBRACK] = ACTIONS(280), + [anon_sym_LBRACE] = ACTIONS(283), + [anon_sym_STAR_STAR] = ACTIONS(285), + [anon_sym_EQ] = ACTIONS(275), + [anon_sym_exec] = ACTIONS(271), + [anon_sym_type] = ACTIONS(271), [anon_sym_AT] = ACTIONS(260), - [anon_sym_not] = ACTIONS(283), + [anon_sym_not] = ACTIONS(288), [anon_sym_and] = ACTIONS(260), [anon_sym_or] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), @@ -15262,94 +16848,94 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_AMP] = ACTIONS(260), [anon_sym_CARET] = ACTIONS(260), [anon_sym_LT_LT] = ACTIONS(260), - [anon_sym_TILDE] = ACTIONS(285), + [anon_sym_TILDE] = ACTIONS(291), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), - [anon_sym_lambda] = ACTIONS(289), - [anon_sym_PLUS_EQ] = ACTIONS(291), - [anon_sym_DASH_EQ] = ACTIONS(291), - [anon_sym_STAR_EQ] = ACTIONS(291), - [anon_sym_SLASH_EQ] = ACTIONS(291), - [anon_sym_AT_EQ] = ACTIONS(291), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(291), - [anon_sym_PERCENT_EQ] = ACTIONS(291), - [anon_sym_STAR_STAR_EQ] = ACTIONS(291), - [anon_sym_GT_GT_EQ] = ACTIONS(291), - [anon_sym_LT_LT_EQ] = ACTIONS(291), - [anon_sym_AMP_EQ] = ACTIONS(291), - [anon_sym_CARET_EQ] = ACTIONS(291), - [anon_sym_PIPE_EQ] = ACTIONS(291), - [sym_ellipsis] = ACTIONS(293), - [sym_integer] = ACTIONS(295), - [sym_float] = ACTIONS(293), - [anon_sym_await] = ACTIONS(297), - [sym_true] = ACTIONS(295), - [sym_false] = ACTIONS(295), - [sym_none] = ACTIONS(295), + [anon_sym_lambda] = ACTIONS(295), + [anon_sym_PLUS_EQ] = ACTIONS(297), + [anon_sym_DASH_EQ] = ACTIONS(297), + [anon_sym_STAR_EQ] = ACTIONS(297), + [anon_sym_SLASH_EQ] = ACTIONS(297), + [anon_sym_AT_EQ] = ACTIONS(297), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(297), + [anon_sym_PERCENT_EQ] = ACTIONS(297), + [anon_sym_STAR_STAR_EQ] = ACTIONS(297), + [anon_sym_GT_GT_EQ] = ACTIONS(297), + [anon_sym_LT_LT_EQ] = ACTIONS(297), + [anon_sym_AMP_EQ] = ACTIONS(297), + [anon_sym_CARET_EQ] = ACTIONS(297), + [anon_sym_PIPE_EQ] = ACTIONS(297), + [sym_ellipsis] = ACTIONS(299), + [sym_integer] = ACTIONS(301), + [sym_float] = ACTIONS(299), + [anon_sym_await] = ACTIONS(303), + [sym_true] = ACTIONS(301), + [sym_false] = ACTIONS(301), + [sym_none] = ACTIONS(301), [sym_comment] = ACTIONS(3), - [sym__semicolon] = ACTIONS(287), - [sym__newline] = ACTIONS(287), - [sym__string_start] = ACTIONS(299), + [sym__semicolon] = ACTIONS(293), + [sym__newline] = ACTIONS(293), + [sym__string_start] = ACTIONS(305), }, [67] = { - [sym_named_expression] = STATE(862), - [sym_list_splat] = STATE(1329), - [sym_dictionary_splat] = STATE(1329), - [sym_expression_list] = STATE(1399), - [sym_expression] = STATE(1014), - [sym_primary_expression] = STATE(589), - [sym_not_operator] = STATE(862), - [sym_boolean_operator] = STATE(862), - [sym_binary_operator] = STATE(575), - [sym_unary_operator] = STATE(575), - [sym_comparison_operator] = STATE(862), - [sym_lambda] = STATE(862), - [sym_attribute] = STATE(575), - [sym_subscript] = STATE(575), - [sym_call] = STATE(575), - [sym_list] = STATE(575), - [sym_set] = STATE(575), - [sym_tuple] = STATE(575), - [sym_dictionary] = STATE(575), - [sym_list_comprehension] = STATE(575), - [sym_dictionary_comprehension] = STATE(575), - [sym_set_comprehension] = STATE(575), - [sym_generator_expression] = STATE(575), - [sym_parenthesized_expression] = STATE(575), - [sym_conditional_expression] = STATE(862), - [sym_concatenated_string] = STATE(575), - [sym_string] = STATE(569), - [sym_await] = STATE(575), + [sym_named_expression] = STATE(863), + [sym_list_splat] = STATE(1284), + [sym_dictionary_splat] = STATE(1284), + [sym_expression_list] = STATE(1403), + [sym_expression] = STATE(1022), + [sym_primary_expression] = STATE(595), + [sym_not_operator] = STATE(863), + [sym_boolean_operator] = STATE(863), + [sym_binary_operator] = STATE(589), + [sym_unary_operator] = STATE(589), + [sym_comparison_operator] = STATE(863), + [sym_lambda] = STATE(863), + [sym_attribute] = STATE(589), + [sym_subscript] = STATE(589), + [sym_call] = STATE(589), + [sym_list] = STATE(589), + [sym_set] = STATE(589), + [sym_tuple] = STATE(589), + [sym_dictionary] = STATE(589), + [sym_list_comprehension] = STATE(589), + [sym_dictionary_comprehension] = STATE(589), + [sym_set_comprehension] = STATE(589), + [sym_generator_expression] = STATE(589), + [sym_parenthesized_expression] = STATE(589), + [sym_conditional_expression] = STATE(863), + [sym_concatenated_string] = STATE(589), + [sym_string] = STATE(565), + [sym_await] = STATE(589), [sym_identifier] = ACTIONS(258), [anon_sym_DOT] = ACTIONS(260), [anon_sym_LPAREN] = ACTIONS(262), - [anon_sym_COMMA] = ACTIONS(264), - [anon_sym_STAR] = ACTIONS(267), - [anon_sym_print] = ACTIONS(269), + [anon_sym_COMMA] = ACTIONS(265), + [anon_sym_STAR] = ACTIONS(268), + [anon_sym_print] = ACTIONS(271), [anon_sym_GT_GT] = ACTIONS(260), - [anon_sym_COLON_EQ] = ACTIONS(271), + [anon_sym_COLON_EQ] = ACTIONS(273), [anon_sym_if] = ACTIONS(260), - [anon_sym_COLON] = ACTIONS(273), - [anon_sym_async] = ACTIONS(269), + [anon_sym_COLON] = ACTIONS(275), + [anon_sym_async] = ACTIONS(271), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(269), + [anon_sym_match] = ACTIONS(271), [anon_sym_PIPE] = ACTIONS(260), - [anon_sym_DASH] = ACTIONS(275), - [anon_sym_PLUS] = ACTIONS(275), - [anon_sym_LBRACK] = ACTIONS(277), - [anon_sym_LBRACE] = ACTIONS(279), - [anon_sym_STAR_STAR] = ACTIONS(281), - [anon_sym_EQ] = ACTIONS(273), - [anon_sym_exec] = ACTIONS(269), - [anon_sym_type] = ACTIONS(269), + [anon_sym_DASH] = ACTIONS(277), + [anon_sym_PLUS] = ACTIONS(277), + [anon_sym_LBRACK] = ACTIONS(280), + [anon_sym_LBRACE] = ACTIONS(283), + [anon_sym_STAR_STAR] = ACTIONS(285), + [anon_sym_EQ] = ACTIONS(275), + [anon_sym_exec] = ACTIONS(271), + [anon_sym_type] = ACTIONS(271), [anon_sym_AT] = ACTIONS(260), - [anon_sym_not] = ACTIONS(283), + [anon_sym_not] = ACTIONS(288), [anon_sym_and] = ACTIONS(260), [anon_sym_or] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), @@ -15358,95 +16944,95 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_AMP] = ACTIONS(260), [anon_sym_CARET] = ACTIONS(260), [anon_sym_LT_LT] = ACTIONS(260), - [anon_sym_TILDE] = ACTIONS(285), + [anon_sym_TILDE] = ACTIONS(291), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), - [anon_sym_lambda] = ACTIONS(289), - [anon_sym_PLUS_EQ] = ACTIONS(291), - [anon_sym_DASH_EQ] = ACTIONS(291), - [anon_sym_STAR_EQ] = ACTIONS(291), - [anon_sym_SLASH_EQ] = ACTIONS(291), - [anon_sym_AT_EQ] = ACTIONS(291), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(291), - [anon_sym_PERCENT_EQ] = ACTIONS(291), - [anon_sym_STAR_STAR_EQ] = ACTIONS(291), - [anon_sym_GT_GT_EQ] = ACTIONS(291), - [anon_sym_LT_LT_EQ] = ACTIONS(291), - [anon_sym_AMP_EQ] = ACTIONS(291), - [anon_sym_CARET_EQ] = ACTIONS(291), - [anon_sym_PIPE_EQ] = ACTIONS(291), - [sym_ellipsis] = ACTIONS(293), - [sym_integer] = ACTIONS(295), - [sym_float] = ACTIONS(293), - [anon_sym_await] = ACTIONS(297), - [sym_true] = ACTIONS(295), - [sym_false] = ACTIONS(295), - [sym_none] = ACTIONS(295), + [anon_sym_lambda] = ACTIONS(295), + [anon_sym_PLUS_EQ] = ACTIONS(297), + [anon_sym_DASH_EQ] = ACTIONS(297), + [anon_sym_STAR_EQ] = ACTIONS(297), + [anon_sym_SLASH_EQ] = ACTIONS(297), + [anon_sym_AT_EQ] = ACTIONS(297), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(297), + [anon_sym_PERCENT_EQ] = ACTIONS(297), + [anon_sym_STAR_STAR_EQ] = ACTIONS(297), + [anon_sym_GT_GT_EQ] = ACTIONS(297), + [anon_sym_LT_LT_EQ] = ACTIONS(297), + [anon_sym_AMP_EQ] = ACTIONS(297), + [anon_sym_CARET_EQ] = ACTIONS(297), + [anon_sym_PIPE_EQ] = ACTIONS(297), + [sym_ellipsis] = ACTIONS(299), + [sym_integer] = ACTIONS(301), + [sym_float] = ACTIONS(299), + [anon_sym_await] = ACTIONS(303), + [sym_true] = ACTIONS(301), + [sym_false] = ACTIONS(301), + [sym_none] = ACTIONS(301), [sym_comment] = ACTIONS(3), - [sym__semicolon] = ACTIONS(287), - [sym__newline] = ACTIONS(287), - [sym__string_start] = ACTIONS(299), + [sym__semicolon] = ACTIONS(293), + [sym__newline] = ACTIONS(293), + [sym__string_start] = ACTIONS(305), }, [68] = { - [sym__simple_statements] = STATE(386), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(973), + [sym_import_statement] = STATE(1228), + [sym_future_import_statement] = STATE(1228), + [sym_import_from_statement] = STATE(1228), + [sym_print_statement] = STATE(1228), + [sym_assert_statement] = STATE(1228), + [sym_expression_statement] = STATE(1228), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1228), + [sym_delete_statement] = STATE(1228), + [sym_raise_statement] = STATE(1228), + [sym_pass_statement] = STATE(1228), + [sym_break_statement] = STATE(1228), + [sym_continue_statement] = STATE(1228), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1228), + [sym_nonlocal_statement] = STATE(1228), + [sym_exec_statement] = STATE(1228), + [sym_type_alias_statement] = STATE(1228), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -15460,8 +17046,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -15483,64 +17069,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(303), - [sym__indent] = ACTIONS(305), + [sym__newline] = ACTIONS(309), + [sym__indent] = ACTIONS(311), [sym__string_start] = ACTIONS(81), }, [69] = { - [sym__simple_statements] = STATE(496), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(526), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -15554,8 +17140,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -15577,64 +17163,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(307), - [sym__indent] = ACTIONS(309), + [sym__newline] = ACTIONS(313), + [sym__indent] = ACTIONS(315), [sym__string_start] = ACTIONS(81), }, [70] = { - [sym__simple_statements] = STATE(450), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(324), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -15648,8 +17234,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -15671,64 +17257,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(311), - [sym__indent] = ACTIONS(313), + [sym__newline] = ACTIONS(317), + [sym__indent] = ACTIONS(319), [sym__string_start] = ACTIONS(81), }, [71] = { - [sym__simple_statements] = STATE(326), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(251), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -15742,8 +17328,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -15765,158 +17351,158 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(315), - [sym__indent] = ACTIONS(317), + [sym__newline] = ACTIONS(321), + [sym__indent] = ACTIONS(323), [sym__string_start] = ACTIONS(81), }, [72] = { - [sym__simple_statements] = STATE(397), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym_chevron] = STATE(1149), + [sym_named_expression] = STATE(940), + [sym_expression] = STATE(999), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_attribute] = STATE(773), + [sym_subscript] = STATE(773), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), + [sym_await] = STATE(773), + [sym_identifier] = ACTIONS(325), + [anon_sym_DOT] = ACTIONS(260), + [anon_sym_LPAREN] = ACTIONS(293), + [anon_sym_COMMA] = ACTIONS(265), + [anon_sym_STAR] = ACTIONS(260), + [anon_sym_print] = ACTIONS(327), + [anon_sym_GT_GT] = ACTIONS(329), + [anon_sym_COLON_EQ] = ACTIONS(273), + [anon_sym_if] = ACTIONS(260), + [anon_sym_COLON] = ACTIONS(275), + [anon_sym_async] = ACTIONS(327), + [anon_sym_in] = ACTIONS(260), + [anon_sym_match] = ACTIONS(327), + [anon_sym_PIPE] = ACTIONS(260), + [anon_sym_DASH] = ACTIONS(260), + [anon_sym_PLUS] = ACTIONS(260), + [anon_sym_LBRACK] = ACTIONS(293), [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), + [anon_sym_STAR_STAR] = ACTIONS(260), + [anon_sym_EQ] = ACTIONS(275), + [anon_sym_exec] = ACTIONS(327), + [anon_sym_type] = ACTIONS(327), + [anon_sym_AT] = ACTIONS(260), + [anon_sym_not] = ACTIONS(260), + [anon_sym_and] = ACTIONS(260), + [anon_sym_or] = ACTIONS(260), + [anon_sym_SLASH] = ACTIONS(260), + [anon_sym_PERCENT] = ACTIONS(260), + [anon_sym_SLASH_SLASH] = ACTIONS(260), + [anon_sym_AMP] = ACTIONS(260), + [anon_sym_CARET] = ACTIONS(260), + [anon_sym_LT_LT] = ACTIONS(260), [anon_sym_TILDE] = ACTIONS(47), + [anon_sym_LT] = ACTIONS(260), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), + [anon_sym_GT] = ACTIONS(260), + [anon_sym_LT_GT] = ACTIONS(293), + [anon_sym_is] = ACTIONS(260), [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), + [anon_sym_PLUS_EQ] = ACTIONS(297), + [anon_sym_DASH_EQ] = ACTIONS(297), + [anon_sym_STAR_EQ] = ACTIONS(297), + [anon_sym_SLASH_EQ] = ACTIONS(297), + [anon_sym_AT_EQ] = ACTIONS(297), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(297), + [anon_sym_PERCENT_EQ] = ACTIONS(297), + [anon_sym_STAR_STAR_EQ] = ACTIONS(297), + [anon_sym_GT_GT_EQ] = ACTIONS(297), + [anon_sym_LT_LT_EQ] = ACTIONS(297), + [anon_sym_AMP_EQ] = ACTIONS(297), + [anon_sym_CARET_EQ] = ACTIONS(297), + [anon_sym_PIPE_EQ] = ACTIONS(297), [sym_ellipsis] = ACTIONS(75), [sym_integer] = ACTIONS(77), [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), + [anon_sym_await] = ACTIONS(331), [sym_true] = ACTIONS(77), [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(319), - [sym__indent] = ACTIONS(321), + [sym__semicolon] = ACTIONS(293), + [sym__newline] = ACTIONS(293), [sym__string_start] = ACTIONS(81), }, [73] = { - [sym__simple_statements] = STATE(486), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(457), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -15930,8 +17516,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -15953,64 +17539,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(323), - [sym__indent] = ACTIONS(325), + [sym__newline] = ACTIONS(333), + [sym__indent] = ACTIONS(335), [sym__string_start] = ACTIONS(81), }, [74] = { - [sym__simple_statements] = STATE(471), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(349), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -16024,8 +17610,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -16047,64 +17633,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(327), - [sym__indent] = ACTIONS(329), + [sym__newline] = ACTIONS(337), + [sym__indent] = ACTIONS(339), [sym__string_start] = ACTIONS(81), }, [75] = { - [sym__simple_statements] = STATE(463), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(535), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -16118,8 +17704,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -16141,64 +17727,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(331), - [sym__indent] = ACTIONS(333), + [sym__newline] = ACTIONS(341), + [sym__indent] = ACTIONS(343), [sym__string_start] = ACTIONS(81), }, [76] = { - [sym__simple_statements] = STATE(451), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(536), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -16212,8 +17798,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -16235,64 +17821,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(335), - [sym__indent] = ACTIONS(337), + [sym__newline] = ACTIONS(345), + [sym__indent] = ACTIONS(347), [sym__string_start] = ACTIONS(81), }, [77] = { - [sym__simple_statements] = STATE(448), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(540), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -16306,8 +17892,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -16329,64 +17915,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(339), - [sym__indent] = ACTIONS(341), + [sym__newline] = ACTIONS(349), + [sym__indent] = ACTIONS(351), [sym__string_start] = ACTIONS(81), }, [78] = { - [sym__simple_statements] = STATE(319), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(550), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -16400,8 +17986,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -16423,64 +18009,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(343), - [sym__indent] = ACTIONS(345), + [sym__newline] = ACTIONS(353), + [sym__indent] = ACTIONS(355), [sym__string_start] = ACTIONS(81), }, [79] = { - [sym__simple_statements] = STATE(476), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(327), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -16494,8 +18080,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -16517,64 +18103,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(347), - [sym__indent] = ACTIONS(349), + [sym__newline] = ACTIONS(357), + [sym__indent] = ACTIONS(359), [sym__string_start] = ACTIONS(81), }, [80] = { - [sym__simple_statements] = STATE(453), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(328), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -16588,8 +18174,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -16611,64 +18197,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(351), - [sym__indent] = ACTIONS(353), + [sym__newline] = ACTIONS(361), + [sym__indent] = ACTIONS(363), [sym__string_start] = ACTIONS(81), }, [81] = { - [sym__simple_statements] = STATE(504), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(546), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -16682,8 +18268,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -16705,64 +18291,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(355), - [sym__indent] = ACTIONS(357), + [sym__newline] = ACTIONS(365), + [sym__indent] = ACTIONS(367), [sym__string_start] = ACTIONS(81), }, [82] = { - [sym__simple_statements] = STATE(478), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(254), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -16776,8 +18362,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -16799,64 +18385,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(359), - [sym__indent] = ACTIONS(361), + [sym__newline] = ACTIONS(369), + [sym__indent] = ACTIONS(371), [sym__string_start] = ACTIONS(81), }, [83] = { - [sym__simple_statements] = STATE(461), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(386), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -16870,8 +18456,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -16893,64 +18479,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(363), - [sym__indent] = ACTIONS(365), + [sym__newline] = ACTIONS(373), + [sym__indent] = ACTIONS(375), [sym__string_start] = ACTIONS(81), }, [84] = { - [sym__simple_statements] = STATE(346), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(461), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -16964,8 +18550,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -16987,64 +18573,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(367), - [sym__indent] = ACTIONS(369), + [sym__newline] = ACTIONS(377), + [sym__indent] = ACTIONS(379), [sym__string_start] = ACTIONS(81), }, [85] = { - [sym__simple_statements] = STATE(545), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(464), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -17058,8 +18644,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -17081,64 +18667,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(371), - [sym__indent] = ACTIONS(373), + [sym__newline] = ACTIONS(381), + [sym__indent] = ACTIONS(383), [sym__string_start] = ACTIONS(81), }, [86] = { - [sym__simple_statements] = STATE(531), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(470), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -17152,8 +18738,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -17175,64 +18761,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(375), - [sym__indent] = ACTIONS(377), + [sym__newline] = ACTIONS(385), + [sym__indent] = ACTIONS(387), [sym__string_start] = ACTIONS(81), }, [87] = { - [sym__simple_statements] = STATE(266), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(549), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -17246,8 +18832,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -17269,64 +18855,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(379), - [sym__indent] = ACTIONS(381), + [sym__newline] = ACTIONS(389), + [sym__indent] = ACTIONS(391), [sym__string_start] = ACTIONS(81), }, [88] = { - [sym__simple_statements] = STATE(252), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(477), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -17340,8 +18926,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -17363,64 +18949,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(383), - [sym__indent] = ACTIONS(385), + [sym__newline] = ACTIONS(393), + [sym__indent] = ACTIONS(395), [sym__string_start] = ACTIONS(81), }, [89] = { - [sym__simple_statements] = STATE(460), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(479), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -17434,8 +19020,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -17457,64 +19043,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(387), - [sym__indent] = ACTIONS(389), + [sym__newline] = ACTIONS(397), + [sym__indent] = ACTIONS(399), [sym__string_start] = ACTIONS(81), }, [90] = { - [sym__simple_statements] = STATE(343), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(480), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -17528,8 +19114,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -17551,64 +19137,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(391), - [sym__indent] = ACTIONS(393), + [sym__newline] = ACTIONS(401), + [sym__indent] = ACTIONS(403), [sym__string_start] = ACTIONS(81), }, [91] = { - [sym__simple_statements] = STATE(534), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(462), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -17622,8 +19208,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -17645,64 +19231,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(395), - [sym__indent] = ACTIONS(397), + [sym__newline] = ACTIONS(405), + [sym__indent] = ACTIONS(407), [sym__string_start] = ACTIONS(81), }, [92] = { - [sym__simple_statements] = STATE(465), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(484), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -17716,8 +19302,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -17739,64 +19325,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(399), - [sym__indent] = ACTIONS(401), + [sym__newline] = ACTIONS(409), + [sym__indent] = ACTIONS(411), [sym__string_start] = ACTIONS(81), }, [93] = { - [sym__simple_statements] = STATE(327), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(393), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -17810,8 +19396,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -17833,64 +19419,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(403), - [sym__indent] = ACTIONS(405), + [sym__newline] = ACTIONS(413), + [sym__indent] = ACTIONS(415), [sym__string_start] = ACTIONS(81), }, [94] = { - [sym__simple_statements] = STATE(979), - [sym_import_statement] = STATE(1187), - [sym_future_import_statement] = STATE(1187), - [sym_import_from_statement] = STATE(1187), - [sym_print_statement] = STATE(1187), - [sym_assert_statement] = STATE(1187), - [sym_expression_statement] = STATE(1187), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1187), - [sym_delete_statement] = STATE(1187), - [sym_raise_statement] = STATE(1187), - [sym_pass_statement] = STATE(1187), - [sym_break_statement] = STATE(1187), - [sym_continue_statement] = STATE(1187), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1187), - [sym_nonlocal_statement] = STATE(1187), - [sym_exec_statement] = STATE(1187), - [sym_type_alias_statement] = STATE(1187), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(334), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -17904,8 +19490,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -17927,64 +19513,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(407), - [sym__indent] = ACTIONS(409), + [sym__newline] = ACTIONS(417), + [sym__indent] = ACTIONS(419), [sym__string_start] = ACTIONS(81), }, [95] = { - [sym__simple_statements] = STATE(493), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(487), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -17998,8 +19584,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -18021,64 +19607,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(411), - [sym__indent] = ACTIONS(413), + [sym__newline] = ACTIONS(421), + [sym__indent] = ACTIONS(423), [sym__string_start] = ACTIONS(81), }, [96] = { - [sym__simple_statements] = STATE(505), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(472), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -18092,8 +19678,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -18115,64 +19701,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(415), - [sym__indent] = ACTIONS(417), + [sym__newline] = ACTIONS(425), + [sym__indent] = ACTIONS(427), [sym__string_start] = ACTIONS(81), }, [97] = { - [sym__simple_statements] = STATE(321), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(365), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -18186,8 +19772,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -18209,64 +19795,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(419), - [sym__indent] = ACTIONS(421), + [sym__newline] = ACTIONS(429), + [sym__indent] = ACTIONS(431), [sym__string_start] = ACTIONS(81), }, [98] = { - [sym__simple_statements] = STATE(507), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(494), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -18280,8 +19866,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -18303,64 +19889,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(423), - [sym__indent] = ACTIONS(425), + [sym__newline] = ACTIONS(433), + [sym__indent] = ACTIONS(435), [sym__string_start] = ACTIONS(81), }, [99] = { - [sym__simple_statements] = STATE(508), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(448), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -18374,8 +19960,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -18397,64 +19983,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(427), - [sym__indent] = ACTIONS(429), + [sym__newline] = ACTIONS(437), + [sym__indent] = ACTIONS(439), [sym__string_start] = ACTIONS(81), }, [100] = { - [sym__simple_statements] = STATE(540), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(396), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -18468,8 +20054,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -18491,64 +20077,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(431), - [sym__indent] = ACTIONS(433), + [sym__newline] = ACTIONS(441), + [sym__indent] = ACTIONS(443), [sym__string_start] = ACTIONS(81), }, [101] = { - [sym__simple_statements] = STATE(369), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(499), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -18562,8 +20148,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -18585,64 +20171,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(435), - [sym__indent] = ACTIONS(437), + [sym__newline] = ACTIONS(445), + [sym__indent] = ACTIONS(447), [sym__string_start] = ACTIONS(81), }, [102] = { - [sym__simple_statements] = STATE(342), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(531), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -18656,8 +20242,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -18679,64 +20265,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(439), - [sym__indent] = ACTIONS(441), + [sym__newline] = ACTIONS(449), + [sym__indent] = ACTIONS(451), [sym__string_start] = ACTIONS(81), }, [103] = { - [sym__simple_statements] = STATE(544), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(355), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -18750,8 +20336,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -18773,64 +20359,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(443), - [sym__indent] = ACTIONS(445), + [sym__newline] = ACTIONS(453), + [sym__indent] = ACTIONS(455), [sym__string_start] = ACTIONS(81), }, [104] = { - [sym__simple_statements] = STATE(459), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(336), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -18844,8 +20430,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -18867,64 +20453,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(447), - [sym__indent] = ACTIONS(449), + [sym__newline] = ACTIONS(457), + [sym__indent] = ACTIONS(459), [sym__string_start] = ACTIONS(81), }, [105] = { - [sym__simple_statements] = STATE(551), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(321), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -18938,8 +20524,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -18961,64 +20547,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(451), - [sym__indent] = ACTIONS(453), + [sym__newline] = ACTIONS(461), + [sym__indent] = ACTIONS(463), [sym__string_start] = ACTIONS(81), }, [106] = { - [sym__simple_statements] = STATE(420), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(450), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -19032,8 +20618,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -19055,64 +20641,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(455), - [sym__indent] = ACTIONS(457), + [sym__newline] = ACTIONS(465), + [sym__indent] = ACTIONS(467), [sym__string_start] = ACTIONS(81), }, [107] = { - [sym__simple_statements] = STATE(524), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(506), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -19126,8 +20712,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -19149,64 +20735,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(459), - [sym__indent] = ACTIONS(461), + [sym__newline] = ACTIONS(469), + [sym__indent] = ACTIONS(471), [sym__string_start] = ACTIONS(81), }, [108] = { - [sym__simple_statements] = STATE(338), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(541), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -19220,8 +20806,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -19243,64 +20829,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(463), - [sym__indent] = ACTIONS(465), + [sym__newline] = ACTIONS(473), + [sym__indent] = ACTIONS(475), [sym__string_start] = ACTIONS(81), }, [109] = { - [sym__simple_statements] = STATE(554), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(400), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -19314,8 +20900,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -19337,64 +20923,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(467), - [sym__indent] = ACTIONS(469), + [sym__newline] = ACTIONS(477), + [sym__indent] = ACTIONS(479), [sym__string_start] = ACTIONS(81), }, [110] = { - [sym__simple_statements] = STATE(558), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(552), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -19408,8 +20994,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -19431,64 +21017,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(471), - [sym__indent] = ACTIONS(473), + [sym__newline] = ACTIONS(481), + [sym__indent] = ACTIONS(483), [sym__string_start] = ACTIONS(81), }, [111] = { - [sym__simple_statements] = STATE(457), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(512), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -19502,8 +21088,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -19525,64 +21111,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(475), - [sym__indent] = ACTIONS(477), + [sym__newline] = ACTIONS(485), + [sym__indent] = ACTIONS(487), [sym__string_start] = ACTIONS(81), }, [112] = { - [sym__simple_statements] = STATE(352), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(554), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -19596,8 +21182,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -19619,64 +21205,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(479), - [sym__indent] = ACTIONS(481), + [sym__newline] = ACTIONS(489), + [sym__indent] = ACTIONS(491), [sym__string_start] = ACTIONS(81), }, [113] = { - [sym__simple_statements] = STATE(317), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(337), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -19690,8 +21276,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -19713,64 +21299,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(483), - [sym__indent] = ACTIONS(485), + [sym__newline] = ACTIONS(493), + [sym__indent] = ACTIONS(495), [sym__string_start] = ACTIONS(81), }, [114] = { - [sym__simple_statements] = STATE(483), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(447), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -19784,8 +21370,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -19807,64 +21393,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(487), - [sym__indent] = ACTIONS(489), + [sym__newline] = ACTIONS(497), + [sym__indent] = ACTIONS(499), [sym__string_start] = ACTIONS(81), }, [115] = { - [sym__simple_statements] = STATE(480), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(453), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -19878,8 +21464,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -19901,64 +21487,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(491), - [sym__indent] = ACTIONS(493), + [sym__newline] = ACTIONS(501), + [sym__indent] = ACTIONS(503), [sym__string_start] = ACTIONS(81), }, [116] = { - [sym__simple_statements] = STATE(981), - [sym_import_statement] = STATE(1187), - [sym_future_import_statement] = STATE(1187), - [sym_import_from_statement] = STATE(1187), - [sym_print_statement] = STATE(1187), - [sym_assert_statement] = STATE(1187), - [sym_expression_statement] = STATE(1187), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1187), - [sym_delete_statement] = STATE(1187), - [sym_raise_statement] = STATE(1187), - [sym_pass_statement] = STATE(1187), - [sym_break_statement] = STATE(1187), - [sym_continue_statement] = STATE(1187), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1187), - [sym_nonlocal_statement] = STATE(1187), - [sym_exec_statement] = STATE(1187), - [sym_type_alias_statement] = STATE(1187), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(360), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -19972,8 +21558,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -19995,64 +21581,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(495), - [sym__indent] = ACTIONS(497), + [sym__newline] = ACTIONS(505), + [sym__indent] = ACTIONS(507), [sym__string_start] = ACTIONS(81), }, [117] = { - [sym__simple_statements] = STATE(521), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(518), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -20066,8 +21652,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -20089,64 +21675,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(499), - [sym__indent] = ACTIONS(501), + [sym__newline] = ACTIONS(509), + [sym__indent] = ACTIONS(511), [sym__string_start] = ACTIONS(81), }, [118] = { - [sym__simple_statements] = STATE(455), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(466), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -20160,8 +21746,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -20183,64 +21769,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(503), - [sym__indent] = ACTIONS(505), + [sym__newline] = ACTIONS(513), + [sym__indent] = ACTIONS(515), [sym__string_start] = ACTIONS(81), }, [119] = { - [sym__simple_statements] = STATE(501), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(521), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -20254,8 +21840,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -20277,64 +21863,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(507), - [sym__indent] = ACTIONS(509), + [sym__newline] = ACTIONS(517), + [sym__indent] = ACTIONS(519), [sym__string_start] = ACTIONS(81), }, [120] = { - [sym__simple_statements] = STATE(330), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(340), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -20348,8 +21934,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -20371,64 +21957,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(511), - [sym__indent] = ACTIONS(513), + [sym__newline] = ACTIONS(521), + [sym__indent] = ACTIONS(523), [sym__string_start] = ACTIONS(81), }, [121] = { - [sym__simple_statements] = STATE(428), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(323), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -20442,8 +22028,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -20465,64 +22051,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(515), - [sym__indent] = ACTIONS(517), + [sym__newline] = ACTIONS(525), + [sym__indent] = ACTIONS(527), [sym__string_start] = ACTIONS(81), }, [122] = { - [sym__simple_statements] = STATE(527), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(341), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -20536,8 +22122,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -20559,64 +22145,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(519), - [sym__indent] = ACTIONS(521), + [sym__newline] = ACTIONS(529), + [sym__indent] = ACTIONS(531), [sym__string_start] = ACTIONS(81), }, [123] = { - [sym__simple_statements] = STATE(331), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(449), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -20630,8 +22216,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -20653,64 +22239,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(523), - [sym__indent] = ACTIONS(525), + [sym__newline] = ACTIONS(533), + [sym__indent] = ACTIONS(535), [sym__string_start] = ACTIONS(81), }, [124] = { - [sym__simple_statements] = STATE(550), - [sym_import_statement] = STATE(1161), - [sym_future_import_statement] = STATE(1161), - [sym_import_from_statement] = STATE(1161), - [sym_print_statement] = STATE(1161), - [sym_assert_statement] = STATE(1161), - [sym_expression_statement] = STATE(1161), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1161), - [sym_delete_statement] = STATE(1161), - [sym_raise_statement] = STATE(1161), - [sym_pass_statement] = STATE(1161), - [sym_break_statement] = STATE(1161), - [sym_continue_statement] = STATE(1161), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1161), - [sym_nonlocal_statement] = STATE(1161), - [sym_exec_statement] = STATE(1161), - [sym_type_alias_statement] = STATE(1161), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(503), + [sym_import_statement] = STATE(1158), + [sym_future_import_statement] = STATE(1158), + [sym_import_from_statement] = STATE(1158), + [sym_print_statement] = STATE(1158), + [sym_assert_statement] = STATE(1158), + [sym_expression_statement] = STATE(1158), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1158), + [sym_delete_statement] = STATE(1158), + [sym_raise_statement] = STATE(1158), + [sym_pass_statement] = STATE(1158), + [sym_break_statement] = STATE(1158), + [sym_continue_statement] = STATE(1158), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1158), + [sym_nonlocal_statement] = STATE(1158), + [sym_exec_statement] = STATE(1158), + [sym_type_alias_statement] = STATE(1158), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -20724,8 +22310,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -20747,158 +22333,158 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(527), - [sym__indent] = ACTIONS(529), + [sym__newline] = ACTIONS(537), + [sym__indent] = ACTIONS(539), [sym__string_start] = ACTIONS(81), }, [125] = { - [sym_chevron] = STATE(1114), - [sym_named_expression] = STATE(937), - [sym_expression] = STATE(1003), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_attribute] = STATE(764), - [sym_subscript] = STATE(764), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(992), + [sym_import_statement] = STATE(1228), + [sym_future_import_statement] = STATE(1228), + [sym_import_from_statement] = STATE(1228), + [sym_print_statement] = STATE(1228), + [sym_assert_statement] = STATE(1228), + [sym_expression_statement] = STATE(1228), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1228), + [sym_delete_statement] = STATE(1228), + [sym_raise_statement] = STATE(1228), + [sym_pass_statement] = STATE(1228), + [sym_break_statement] = STATE(1228), + [sym_continue_statement] = STATE(1228), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1228), + [sym_nonlocal_statement] = STATE(1228), + [sym_exec_statement] = STATE(1228), + [sym_type_alias_statement] = STATE(1228), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), - [sym_identifier] = ACTIONS(531), - [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(287), - [anon_sym_COMMA] = ACTIONS(264), - [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(533), - [anon_sym_GT_GT] = ACTIONS(535), - [anon_sym_COLON_EQ] = ACTIONS(271), - [anon_sym_if] = ACTIONS(260), - [anon_sym_COLON] = ACTIONS(273), - [anon_sym_async] = ACTIONS(533), - [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(533), - [anon_sym_PIPE] = ACTIONS(260), - [anon_sym_DASH] = ACTIONS(260), - [anon_sym_PLUS] = ACTIONS(260), - [anon_sym_LBRACK] = ACTIONS(287), + [sym_await] = STATE(773), + [sym_identifier] = ACTIONS(7), + [anon_sym_import] = ACTIONS(9), + [anon_sym_from] = ACTIONS(11), + [anon_sym_LPAREN] = ACTIONS(13), + [anon_sym_STAR] = ACTIONS(15), + [anon_sym_print] = ACTIONS(17), + [anon_sym_assert] = ACTIONS(19), + [anon_sym_return] = ACTIONS(21), + [anon_sym_del] = ACTIONS(23), + [anon_sym_raise] = ACTIONS(25), + [anon_sym_pass] = ACTIONS(27), + [anon_sym_break] = ACTIONS(29), + [anon_sym_continue] = ACTIONS(31), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), + [anon_sym_DASH] = ACTIONS(47), + [anon_sym_PLUS] = ACTIONS(47), + [anon_sym_LBRACK] = ACTIONS(49), [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(260), - [anon_sym_EQ] = ACTIONS(273), - [anon_sym_exec] = ACTIONS(533), - [anon_sym_type] = ACTIONS(533), - [anon_sym_AT] = ACTIONS(260), - [anon_sym_not] = ACTIONS(260), - [anon_sym_and] = ACTIONS(260), - [anon_sym_or] = ACTIONS(260), - [anon_sym_SLASH] = ACTIONS(260), - [anon_sym_PERCENT] = ACTIONS(260), - [anon_sym_SLASH_SLASH] = ACTIONS(260), - [anon_sym_AMP] = ACTIONS(260), - [anon_sym_CARET] = ACTIONS(260), - [anon_sym_LT_LT] = ACTIONS(260), + [anon_sym_STAR_STAR] = ACTIONS(53), + [anon_sym_global] = ACTIONS(57), + [anon_sym_nonlocal] = ACTIONS(59), + [anon_sym_exec] = ACTIONS(61), + [anon_sym_type] = ACTIONS(63), + [anon_sym_not] = ACTIONS(69), [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), - [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), - [anon_sym_is] = ACTIONS(260), [anon_sym_lambda] = ACTIONS(71), - [anon_sym_PLUS_EQ] = ACTIONS(291), - [anon_sym_DASH_EQ] = ACTIONS(291), - [anon_sym_STAR_EQ] = ACTIONS(291), - [anon_sym_SLASH_EQ] = ACTIONS(291), - [anon_sym_AT_EQ] = ACTIONS(291), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(291), - [anon_sym_PERCENT_EQ] = ACTIONS(291), - [anon_sym_STAR_STAR_EQ] = ACTIONS(291), - [anon_sym_GT_GT_EQ] = ACTIONS(291), - [anon_sym_LT_LT_EQ] = ACTIONS(291), - [anon_sym_AMP_EQ] = ACTIONS(291), - [anon_sym_CARET_EQ] = ACTIONS(291), - [anon_sym_PIPE_EQ] = ACTIONS(291), + [anon_sym_yield] = ACTIONS(73), [sym_ellipsis] = ACTIONS(75), [sym_integer] = ACTIONS(77), [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(537), + [anon_sym_await] = ACTIONS(79), [sym_true] = ACTIONS(77), [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__semicolon] = ACTIONS(287), - [sym__newline] = ACTIONS(287), + [sym__newline] = ACTIONS(541), + [sym__indent] = ACTIONS(543), [sym__string_start] = ACTIONS(81), }, [126] = { - [sym__simple_statements] = STATE(422), - [sym_import_statement] = STATE(1175), - [sym_future_import_statement] = STATE(1175), - [sym_import_from_statement] = STATE(1175), - [sym_print_statement] = STATE(1175), - [sym_assert_statement] = STATE(1175), - [sym_expression_statement] = STATE(1175), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1175), - [sym_delete_statement] = STATE(1175), - [sym_raise_statement] = STATE(1175), - [sym_pass_statement] = STATE(1175), - [sym_break_statement] = STATE(1175), - [sym_continue_statement] = STATE(1175), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1175), - [sym_nonlocal_statement] = STATE(1175), - [sym_exec_statement] = STATE(1175), - [sym_type_alias_statement] = STATE(1175), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym__simple_statements] = STATE(492), + [sym_import_statement] = STATE(1220), + [sym_future_import_statement] = STATE(1220), + [sym_import_from_statement] = STATE(1220), + [sym_print_statement] = STATE(1220), + [sym_assert_statement] = STATE(1220), + [sym_expression_statement] = STATE(1220), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1220), + [sym_delete_statement] = STATE(1220), + [sym_raise_statement] = STATE(1220), + [sym_pass_statement] = STATE(1220), + [sym_break_statement] = STATE(1220), + [sym_continue_statement] = STATE(1220), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1220), + [sym_nonlocal_statement] = STATE(1220), + [sym_exec_statement] = STATE(1220), + [sym_type_alias_statement] = STATE(1220), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -20912,8 +22498,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -20935,63 +22521,63 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(539), - [sym__indent] = ACTIONS(541), + [sym__newline] = ACTIONS(545), + [sym__indent] = ACTIONS(547), [sym__string_start] = ACTIONS(81), }, [127] = { - [sym_import_statement] = STATE(1352), - [sym_future_import_statement] = STATE(1352), - [sym_import_from_statement] = STATE(1352), - [sym_print_statement] = STATE(1352), - [sym_assert_statement] = STATE(1352), - [sym_expression_statement] = STATE(1352), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1352), - [sym_delete_statement] = STATE(1352), - [sym_raise_statement] = STATE(1352), - [sym_pass_statement] = STATE(1352), - [sym_break_statement] = STATE(1352), - [sym_continue_statement] = STATE(1352), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1352), - [sym_nonlocal_statement] = STATE(1352), - [sym_exec_statement] = STATE(1352), - [sym_type_alias_statement] = STATE(1352), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym_import_statement] = STATE(1316), + [sym_future_import_statement] = STATE(1316), + [sym_import_from_statement] = STATE(1316), + [sym_print_statement] = STATE(1316), + [sym_assert_statement] = STATE(1316), + [sym_expression_statement] = STATE(1316), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1316), + [sym_delete_statement] = STATE(1316), + [sym_raise_statement] = STATE(1316), + [sym_pass_statement] = STATE(1316), + [sym_break_statement] = STATE(1316), + [sym_continue_statement] = STATE(1316), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1316), + [sym_nonlocal_statement] = STATE(1316), + [sym_exec_statement] = STATE(1316), + [sym_type_alias_statement] = STATE(1316), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -21005,8 +22591,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -21028,62 +22614,62 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(543), + [sym__newline] = ACTIONS(549), [sym__string_start] = ACTIONS(81), }, [128] = { - [sym_import_statement] = STATE(1352), - [sym_future_import_statement] = STATE(1352), - [sym_import_from_statement] = STATE(1352), - [sym_print_statement] = STATE(1352), - [sym_assert_statement] = STATE(1352), - [sym_expression_statement] = STATE(1352), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1352), - [sym_delete_statement] = STATE(1352), - [sym_raise_statement] = STATE(1352), - [sym_pass_statement] = STATE(1352), - [sym_break_statement] = STATE(1352), - [sym_continue_statement] = STATE(1352), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1352), - [sym_nonlocal_statement] = STATE(1352), - [sym_exec_statement] = STATE(1352), - [sym_type_alias_statement] = STATE(1352), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym_import_statement] = STATE(1316), + [sym_future_import_statement] = STATE(1316), + [sym_import_from_statement] = STATE(1316), + [sym_print_statement] = STATE(1316), + [sym_assert_statement] = STATE(1316), + [sym_expression_statement] = STATE(1316), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1316), + [sym_delete_statement] = STATE(1316), + [sym_raise_statement] = STATE(1316), + [sym_pass_statement] = STATE(1316), + [sym_break_statement] = STATE(1316), + [sym_continue_statement] = STATE(1316), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1316), + [sym_nonlocal_statement] = STATE(1316), + [sym_exec_statement] = STATE(1316), + [sym_type_alias_statement] = STATE(1316), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -21097,8 +22683,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -21120,62 +22706,62 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(545), + [sym__newline] = ACTIONS(551), [sym__string_start] = ACTIONS(81), }, [129] = { - [sym_import_statement] = STATE(1352), - [sym_future_import_statement] = STATE(1352), - [sym_import_from_statement] = STATE(1352), - [sym_print_statement] = STATE(1352), - [sym_assert_statement] = STATE(1352), - [sym_expression_statement] = STATE(1352), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1352), - [sym_delete_statement] = STATE(1352), - [sym_raise_statement] = STATE(1352), - [sym_pass_statement] = STATE(1352), - [sym_break_statement] = STATE(1352), - [sym_continue_statement] = STATE(1352), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1352), - [sym_nonlocal_statement] = STATE(1352), - [sym_exec_statement] = STATE(1352), - [sym_type_alias_statement] = STATE(1352), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym_import_statement] = STATE(1316), + [sym_future_import_statement] = STATE(1316), + [sym_import_from_statement] = STATE(1316), + [sym_print_statement] = STATE(1316), + [sym_assert_statement] = STATE(1316), + [sym_expression_statement] = STATE(1316), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1316), + [sym_delete_statement] = STATE(1316), + [sym_raise_statement] = STATE(1316), + [sym_pass_statement] = STATE(1316), + [sym_break_statement] = STATE(1316), + [sym_continue_statement] = STATE(1316), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1316), + [sym_nonlocal_statement] = STATE(1316), + [sym_exec_statement] = STATE(1316), + [sym_type_alias_statement] = STATE(1316), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -21189,8 +22775,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -21212,62 +22798,62 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(547), + [sym__newline] = ACTIONS(553), [sym__string_start] = ACTIONS(81), }, [130] = { - [sym_import_statement] = STATE(1352), - [sym_future_import_statement] = STATE(1352), - [sym_import_from_statement] = STATE(1352), - [sym_print_statement] = STATE(1352), - [sym_assert_statement] = STATE(1352), - [sym_expression_statement] = STATE(1352), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1352), - [sym_delete_statement] = STATE(1352), - [sym_raise_statement] = STATE(1352), - [sym_pass_statement] = STATE(1352), - [sym_break_statement] = STATE(1352), - [sym_continue_statement] = STATE(1352), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1352), - [sym_nonlocal_statement] = STATE(1352), - [sym_exec_statement] = STATE(1352), - [sym_type_alias_statement] = STATE(1352), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym_import_statement] = STATE(1316), + [sym_future_import_statement] = STATE(1316), + [sym_import_from_statement] = STATE(1316), + [sym_print_statement] = STATE(1316), + [sym_assert_statement] = STATE(1316), + [sym_expression_statement] = STATE(1316), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1316), + [sym_delete_statement] = STATE(1316), + [sym_raise_statement] = STATE(1316), + [sym_pass_statement] = STATE(1316), + [sym_break_statement] = STATE(1316), + [sym_continue_statement] = STATE(1316), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1316), + [sym_nonlocal_statement] = STATE(1316), + [sym_exec_statement] = STATE(1316), + [sym_type_alias_statement] = STATE(1316), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -21281,8 +22867,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -21304,62 +22890,62 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(549), + [sym__newline] = ACTIONS(555), [sym__string_start] = ACTIONS(81), }, [131] = { - [sym_import_statement] = STATE(1352), - [sym_future_import_statement] = STATE(1352), - [sym_import_from_statement] = STATE(1352), - [sym_print_statement] = STATE(1352), - [sym_assert_statement] = STATE(1352), - [sym_expression_statement] = STATE(1352), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1352), - [sym_delete_statement] = STATE(1352), - [sym_raise_statement] = STATE(1352), - [sym_pass_statement] = STATE(1352), - [sym_break_statement] = STATE(1352), - [sym_continue_statement] = STATE(1352), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1352), - [sym_nonlocal_statement] = STATE(1352), - [sym_exec_statement] = STATE(1352), - [sym_type_alias_statement] = STATE(1352), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym_import_statement] = STATE(1316), + [sym_future_import_statement] = STATE(1316), + [sym_import_from_statement] = STATE(1316), + [sym_print_statement] = STATE(1316), + [sym_assert_statement] = STATE(1316), + [sym_expression_statement] = STATE(1316), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1316), + [sym_delete_statement] = STATE(1316), + [sym_raise_statement] = STATE(1316), + [sym_pass_statement] = STATE(1316), + [sym_break_statement] = STATE(1316), + [sym_continue_statement] = STATE(1316), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1316), + [sym_nonlocal_statement] = STATE(1316), + [sym_exec_statement] = STATE(1316), + [sym_type_alias_statement] = STATE(1316), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -21373,8 +22959,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -21396,62 +22982,62 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(551), + [sym__newline] = ACTIONS(557), [sym__string_start] = ACTIONS(81), }, [132] = { - [sym_import_statement] = STATE(1352), - [sym_future_import_statement] = STATE(1352), - [sym_import_from_statement] = STATE(1352), - [sym_print_statement] = STATE(1352), - [sym_assert_statement] = STATE(1352), - [sym_expression_statement] = STATE(1352), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1352), - [sym_delete_statement] = STATE(1352), - [sym_raise_statement] = STATE(1352), - [sym_pass_statement] = STATE(1352), - [sym_break_statement] = STATE(1352), - [sym_continue_statement] = STATE(1352), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1352), - [sym_nonlocal_statement] = STATE(1352), - [sym_exec_statement] = STATE(1352), - [sym_type_alias_statement] = STATE(1352), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym_import_statement] = STATE(1316), + [sym_future_import_statement] = STATE(1316), + [sym_import_from_statement] = STATE(1316), + [sym_print_statement] = STATE(1316), + [sym_assert_statement] = STATE(1316), + [sym_expression_statement] = STATE(1316), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1316), + [sym_delete_statement] = STATE(1316), + [sym_raise_statement] = STATE(1316), + [sym_pass_statement] = STATE(1316), + [sym_break_statement] = STATE(1316), + [sym_continue_statement] = STATE(1316), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1316), + [sym_nonlocal_statement] = STATE(1316), + [sym_exec_statement] = STATE(1316), + [sym_type_alias_statement] = STATE(1316), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -21465,8 +23051,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -21488,62 +23074,62 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(553), + [sym__newline] = ACTIONS(559), [sym__string_start] = ACTIONS(81), }, [133] = { - [sym_import_statement] = STATE(1352), - [sym_future_import_statement] = STATE(1352), - [sym_import_from_statement] = STATE(1352), - [sym_print_statement] = STATE(1352), - [sym_assert_statement] = STATE(1352), - [sym_expression_statement] = STATE(1352), - [sym_named_expression] = STATE(937), - [sym_return_statement] = STATE(1352), - [sym_delete_statement] = STATE(1352), - [sym_raise_statement] = STATE(1352), - [sym_pass_statement] = STATE(1352), - [sym_break_statement] = STATE(1352), - [sym_continue_statement] = STATE(1352), - [sym_list_splat] = STATE(1300), - [sym_dictionary_splat] = STATE(1300), - [sym_global_statement] = STATE(1352), - [sym_nonlocal_statement] = STATE(1352), - [sym_exec_statement] = STATE(1352), - [sym_type_alias_statement] = STATE(1352), - [sym_expression_list] = STATE(1301), - [sym_pattern] = STATE(850), - [sym_tuple_pattern] = STATE(837), - [sym_list_pattern] = STATE(837), - [sym_list_splat_pattern] = STATE(837), - [sym_expression] = STATE(1000), - [sym_primary_expression] = STATE(692), - [sym_not_operator] = STATE(937), - [sym_boolean_operator] = STATE(937), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_comparison_operator] = STATE(937), - [sym_lambda] = STATE(937), - [sym_assignment] = STATE(1301), - [sym_augmented_assignment] = STATE(1301), - [sym_pattern_list] = STATE(857), - [sym_yield] = STATE(1301), - [sym_attribute] = STATE(414), - [sym_subscript] = STATE(414), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_conditional_expression] = STATE(937), - [sym_concatenated_string] = STATE(764), + [sym_import_statement] = STATE(1316), + [sym_future_import_statement] = STATE(1316), + [sym_import_from_statement] = STATE(1316), + [sym_print_statement] = STATE(1316), + [sym_assert_statement] = STATE(1316), + [sym_expression_statement] = STATE(1316), + [sym_named_expression] = STATE(940), + [sym_return_statement] = STATE(1316), + [sym_delete_statement] = STATE(1316), + [sym_raise_statement] = STATE(1316), + [sym_pass_statement] = STATE(1316), + [sym_break_statement] = STATE(1316), + [sym_continue_statement] = STATE(1316), + [sym_list_splat] = STATE(1283), + [sym_dictionary_splat] = STATE(1283), + [sym_global_statement] = STATE(1316), + [sym_nonlocal_statement] = STATE(1316), + [sym_exec_statement] = STATE(1316), + [sym_type_alias_statement] = STATE(1316), + [sym_expression_list] = STATE(1340), + [sym_pattern] = STATE(847), + [sym_tuple_pattern] = STATE(833), + [sym_list_pattern] = STATE(833), + [sym_list_splat_pattern] = STATE(833), + [sym_expression] = STATE(974), + [sym_primary_expression] = STATE(689), + [sym_not_operator] = STATE(940), + [sym_boolean_operator] = STATE(940), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_comparison_operator] = STATE(940), + [sym_lambda] = STATE(940), + [sym_assignment] = STATE(1340), + [sym_augmented_assignment] = STATE(1340), + [sym_pattern_list] = STATE(855), + [sym_yield] = STATE(1340), + [sym_attribute] = STATE(431), + [sym_subscript] = STATE(431), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_conditional_expression] = STATE(940), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(7), [anon_sym_import] = ACTIONS(9), [anon_sym_from] = ACTIONS(11), @@ -21557,8 +23143,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_pass] = ACTIONS(27), [anon_sym_break] = ACTIONS(29), [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(301), - [anon_sym_match] = ACTIONS(301), + [anon_sym_async] = ACTIONS(307), + [anon_sym_match] = ACTIONS(307), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), [anon_sym_LBRACK] = ACTIONS(49), @@ -21584,45 +23170,45 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { }, [134] = { [sym_primary_expression] = STATE(709), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_attribute] = STATE(764), - [sym_subscript] = STATE(764), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_concatenated_string] = STATE(764), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_attribute] = STATE(773), + [sym_subscript] = STATE(773), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(77), [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(555), - [anon_sym_COMMA] = ACTIONS(264), + [anon_sym_LPAREN] = ACTIONS(561), + [anon_sym_COMMA] = ACTIONS(265), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(557), + [anon_sym_print] = ACTIONS(563), [anon_sym_GT_GT] = ACTIONS(260), - [anon_sym_COLON_EQ] = ACTIONS(271), + [anon_sym_COLON_EQ] = ACTIONS(273), [anon_sym_if] = ACTIONS(260), - [anon_sym_COLON] = ACTIONS(273), - [anon_sym_async] = ACTIONS(557), + [anon_sym_COLON] = ACTIONS(275), + [anon_sym_async] = ACTIONS(563), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(557), + [anon_sym_match] = ACTIONS(563), [anon_sym_PIPE] = ACTIONS(260), - [anon_sym_DASH] = ACTIONS(559), - [anon_sym_PLUS] = ACTIONS(559), - [anon_sym_LBRACK] = ACTIONS(561), + [anon_sym_DASH] = ACTIONS(565), + [anon_sym_PLUS] = ACTIONS(565), + [anon_sym_LBRACK] = ACTIONS(567), [anon_sym_LBRACE] = ACTIONS(51), [anon_sym_STAR_STAR] = ACTIONS(260), - [anon_sym_EQ] = ACTIONS(273), - [anon_sym_exec] = ACTIONS(557), - [anon_sym_type] = ACTIONS(557), + [anon_sym_EQ] = ACTIONS(275), + [anon_sym_exec] = ACTIONS(563), + [anon_sym_type] = ACTIONS(563), [anon_sym_AT] = ACTIONS(260), [anon_sym_not] = ACTIONS(260), [anon_sym_and] = ACTIONS(260), @@ -21635,81 +23221,81 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_LT_LT] = ACTIONS(260), [anon_sym_TILDE] = ACTIONS(47), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), - [anon_sym_PLUS_EQ] = ACTIONS(291), - [anon_sym_DASH_EQ] = ACTIONS(291), - [anon_sym_STAR_EQ] = ACTIONS(291), - [anon_sym_SLASH_EQ] = ACTIONS(291), - [anon_sym_AT_EQ] = ACTIONS(291), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(291), - [anon_sym_PERCENT_EQ] = ACTIONS(291), - [anon_sym_STAR_STAR_EQ] = ACTIONS(291), - [anon_sym_GT_GT_EQ] = ACTIONS(291), - [anon_sym_LT_LT_EQ] = ACTIONS(291), - [anon_sym_AMP_EQ] = ACTIONS(291), - [anon_sym_CARET_EQ] = ACTIONS(291), - [anon_sym_PIPE_EQ] = ACTIONS(291), + [anon_sym_PLUS_EQ] = ACTIONS(297), + [anon_sym_DASH_EQ] = ACTIONS(297), + [anon_sym_STAR_EQ] = ACTIONS(297), + [anon_sym_SLASH_EQ] = ACTIONS(297), + [anon_sym_AT_EQ] = ACTIONS(297), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(297), + [anon_sym_PERCENT_EQ] = ACTIONS(297), + [anon_sym_STAR_STAR_EQ] = ACTIONS(297), + [anon_sym_GT_GT_EQ] = ACTIONS(297), + [anon_sym_LT_LT_EQ] = ACTIONS(297), + [anon_sym_AMP_EQ] = ACTIONS(297), + [anon_sym_CARET_EQ] = ACTIONS(297), + [anon_sym_PIPE_EQ] = ACTIONS(297), [sym_ellipsis] = ACTIONS(75), [sym_integer] = ACTIONS(77), [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(563), + [anon_sym_await] = ACTIONS(569), [sym_true] = ACTIONS(77), [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__semicolon] = ACTIONS(287), - [sym__newline] = ACTIONS(287), + [sym__semicolon] = ACTIONS(293), + [sym__newline] = ACTIONS(293), [sym__string_start] = ACTIONS(81), }, [135] = { - [sym_primary_expression] = STATE(632), - [sym_binary_operator] = STATE(575), - [sym_unary_operator] = STATE(575), - [sym_attribute] = STATE(575), - [sym_subscript] = STATE(575), - [sym_call] = STATE(575), - [sym_list] = STATE(575), - [sym_set] = STATE(575), - [sym_tuple] = STATE(575), - [sym_dictionary] = STATE(575), - [sym_list_comprehension] = STATE(575), - [sym_dictionary_comprehension] = STATE(575), - [sym_set_comprehension] = STATE(575), - [sym_generator_expression] = STATE(575), - [sym_parenthesized_expression] = STATE(575), - [sym_concatenated_string] = STATE(575), - [sym_string] = STATE(569), - [sym_await] = STATE(575), - [sym_identifier] = ACTIONS(295), + [sym_primary_expression] = STATE(631), + [sym_binary_operator] = STATE(589), + [sym_unary_operator] = STATE(589), + [sym_attribute] = STATE(589), + [sym_subscript] = STATE(589), + [sym_call] = STATE(589), + [sym_list] = STATE(589), + [sym_set] = STATE(589), + [sym_tuple] = STATE(589), + [sym_dictionary] = STATE(589), + [sym_list_comprehension] = STATE(589), + [sym_dictionary_comprehension] = STATE(589), + [sym_set_comprehension] = STATE(589), + [sym_generator_expression] = STATE(589), + [sym_parenthesized_expression] = STATE(589), + [sym_concatenated_string] = STATE(589), + [sym_string] = STATE(565), + [sym_await] = STATE(589), + [sym_identifier] = ACTIONS(301), [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(262), - [anon_sym_RPAREN] = ACTIONS(565), - [anon_sym_COMMA] = ACTIONS(565), + [anon_sym_LPAREN] = ACTIONS(571), + [anon_sym_RPAREN] = ACTIONS(573), + [anon_sym_COMMA] = ACTIONS(573), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(568), + [anon_sym_print] = ACTIONS(576), [anon_sym_GT_GT] = ACTIONS(260), - [anon_sym_COLON_EQ] = ACTIONS(570), + [anon_sym_COLON_EQ] = ACTIONS(578), [anon_sym_if] = ACTIONS(260), - [anon_sym_COLON] = ACTIONS(572), - [anon_sym_async] = ACTIONS(568), + [anon_sym_COLON] = ACTIONS(580), + [anon_sym_async] = ACTIONS(576), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(568), + [anon_sym_match] = ACTIONS(576), [anon_sym_PIPE] = ACTIONS(260), - [anon_sym_DASH] = ACTIONS(275), - [anon_sym_PLUS] = ACTIONS(275), - [anon_sym_LBRACK] = ACTIONS(277), - [anon_sym_RBRACK] = ACTIONS(565), - [anon_sym_LBRACE] = ACTIONS(279), + [anon_sym_DASH] = ACTIONS(582), + [anon_sym_PLUS] = ACTIONS(582), + [anon_sym_LBRACK] = ACTIONS(584), + [anon_sym_RBRACK] = ACTIONS(573), + [anon_sym_LBRACE] = ACTIONS(283), [anon_sym_STAR_STAR] = ACTIONS(260), - [anon_sym_EQ] = ACTIONS(572), - [anon_sym_exec] = ACTIONS(568), - [anon_sym_type] = ACTIONS(568), + [anon_sym_EQ] = ACTIONS(580), + [anon_sym_exec] = ACTIONS(576), + [anon_sym_type] = ACTIONS(576), [anon_sym_AT] = ACTIONS(260), [anon_sym_not] = ACTIONS(260), [anon_sym_and] = ACTIONS(260), @@ -21720,375 +23306,375 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_AMP] = ACTIONS(260), [anon_sym_CARET] = ACTIONS(260), [anon_sym_LT_LT] = ACTIONS(260), - [anon_sym_TILDE] = ACTIONS(285), + [anon_sym_TILDE] = ACTIONS(291), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), - [anon_sym_PLUS_EQ] = ACTIONS(574), - [anon_sym_DASH_EQ] = ACTIONS(574), - [anon_sym_STAR_EQ] = ACTIONS(574), - [anon_sym_SLASH_EQ] = ACTIONS(574), - [anon_sym_AT_EQ] = ACTIONS(574), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(574), - [anon_sym_PERCENT_EQ] = ACTIONS(574), - [anon_sym_STAR_STAR_EQ] = ACTIONS(574), - [anon_sym_GT_GT_EQ] = ACTIONS(574), - [anon_sym_LT_LT_EQ] = ACTIONS(574), - [anon_sym_AMP_EQ] = ACTIONS(574), - [anon_sym_CARET_EQ] = ACTIONS(574), - [anon_sym_PIPE_EQ] = ACTIONS(574), - [sym_ellipsis] = ACTIONS(293), - [sym_integer] = ACTIONS(295), - [sym_float] = ACTIONS(293), - [anon_sym_await] = ACTIONS(576), - [sym_true] = ACTIONS(295), - [sym_false] = ACTIONS(295), - [sym_none] = ACTIONS(295), + [anon_sym_PLUS_EQ] = ACTIONS(586), + [anon_sym_DASH_EQ] = ACTIONS(586), + [anon_sym_STAR_EQ] = ACTIONS(586), + [anon_sym_SLASH_EQ] = ACTIONS(586), + [anon_sym_AT_EQ] = ACTIONS(586), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(586), + [anon_sym_PERCENT_EQ] = ACTIONS(586), + [anon_sym_STAR_STAR_EQ] = ACTIONS(586), + [anon_sym_GT_GT_EQ] = ACTIONS(586), + [anon_sym_LT_LT_EQ] = ACTIONS(586), + [anon_sym_AMP_EQ] = ACTIONS(586), + [anon_sym_CARET_EQ] = ACTIONS(586), + [anon_sym_PIPE_EQ] = ACTIONS(586), + [sym_ellipsis] = ACTIONS(299), + [sym_integer] = ACTIONS(301), + [sym_float] = ACTIONS(299), + [anon_sym_await] = ACTIONS(588), + [sym_true] = ACTIONS(301), + [sym_false] = ACTIONS(301), + [sym_none] = ACTIONS(301), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(299), + [sym__string_start] = ACTIONS(305), }, [136] = { - [sym_primary_expression] = STATE(632), - [sym_binary_operator] = STATE(575), - [sym_unary_operator] = STATE(575), - [sym_attribute] = STATE(575), - [sym_subscript] = STATE(575), - [sym_call] = STATE(575), - [sym_list] = STATE(575), - [sym_set] = STATE(575), - [sym_tuple] = STATE(575), - [sym_dictionary] = STATE(575), - [sym_list_comprehension] = STATE(575), - [sym_dictionary_comprehension] = STATE(575), - [sym_set_comprehension] = STATE(575), - [sym_generator_expression] = STATE(575), - [sym_parenthesized_expression] = STATE(575), - [sym_concatenated_string] = STATE(575), - [sym_string] = STATE(569), - [sym_await] = STATE(575), - [sym_identifier] = ACTIONS(295), + [sym_primary_expression] = STATE(631), + [sym_binary_operator] = STATE(589), + [sym_unary_operator] = STATE(589), + [sym_attribute] = STATE(589), + [sym_subscript] = STATE(589), + [sym_call] = STATE(589), + [sym_list] = STATE(589), + [sym_set] = STATE(589), + [sym_tuple] = STATE(589), + [sym_dictionary] = STATE(589), + [sym_list_comprehension] = STATE(589), + [sym_dictionary_comprehension] = STATE(589), + [sym_set_comprehension] = STATE(589), + [sym_generator_expression] = STATE(589), + [sym_parenthesized_expression] = STATE(589), + [sym_concatenated_string] = STATE(589), + [sym_string] = STATE(565), + [sym_await] = STATE(589), + [sym_identifier] = ACTIONS(301), [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(262), - [anon_sym_RPAREN] = ACTIONS(287), - [anon_sym_COMMA] = ACTIONS(287), + [anon_sym_LPAREN] = ACTIONS(571), + [anon_sym_RPAREN] = ACTIONS(293), + [anon_sym_COMMA] = ACTIONS(293), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(568), - [anon_sym_GT_GT] = ACTIONS(287), - [anon_sym_COLON_EQ] = ACTIONS(570), + [anon_sym_print] = ACTIONS(576), + [anon_sym_GT_GT] = ACTIONS(293), + [anon_sym_COLON_EQ] = ACTIONS(578), [anon_sym_if] = ACTIONS(260), [anon_sym_COLON] = ACTIONS(260), [anon_sym_else] = ACTIONS(260), - [anon_sym_async] = ACTIONS(568), + [anon_sym_async] = ACTIONS(576), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(568), - [anon_sym_PIPE] = ACTIONS(287), - [anon_sym_DASH] = ACTIONS(285), - [anon_sym_PLUS] = ACTIONS(285), - [anon_sym_LBRACK] = ACTIONS(277), - [anon_sym_RBRACK] = ACTIONS(287), - [anon_sym_LBRACE] = ACTIONS(279), - [anon_sym_RBRACE] = ACTIONS(287), - [anon_sym_STAR_STAR] = ACTIONS(287), + [anon_sym_match] = ACTIONS(576), + [anon_sym_PIPE] = ACTIONS(293), + [anon_sym_DASH] = ACTIONS(291), + [anon_sym_PLUS] = ACTIONS(291), + [anon_sym_LBRACK] = ACTIONS(584), + [anon_sym_RBRACK] = ACTIONS(293), + [anon_sym_LBRACE] = ACTIONS(283), + [anon_sym_RBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(293), [anon_sym_EQ] = ACTIONS(260), - [anon_sym_exec] = ACTIONS(568), - [anon_sym_type] = ACTIONS(568), - [anon_sym_AT] = ACTIONS(287), + [anon_sym_exec] = ACTIONS(576), + [anon_sym_type] = ACTIONS(576), + [anon_sym_AT] = ACTIONS(293), [anon_sym_not] = ACTIONS(260), [anon_sym_and] = ACTIONS(260), [anon_sym_or] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), - [anon_sym_PERCENT] = ACTIONS(287), - [anon_sym_SLASH_SLASH] = ACTIONS(287), - [anon_sym_AMP] = ACTIONS(287), - [anon_sym_CARET] = ACTIONS(287), - [anon_sym_LT_LT] = ACTIONS(287), - [anon_sym_TILDE] = ACTIONS(285), + [anon_sym_PERCENT] = ACTIONS(293), + [anon_sym_SLASH_SLASH] = ACTIONS(293), + [anon_sym_AMP] = ACTIONS(293), + [anon_sym_CARET] = ACTIONS(293), + [anon_sym_LT_LT] = ACTIONS(293), + [anon_sym_TILDE] = ACTIONS(291), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), - [sym_ellipsis] = ACTIONS(293), - [sym_type_conversion] = ACTIONS(287), - [sym_integer] = ACTIONS(295), - [sym_float] = ACTIONS(293), - [anon_sym_await] = ACTIONS(576), - [sym_true] = ACTIONS(295), - [sym_false] = ACTIONS(295), - [sym_none] = ACTIONS(295), + [sym_ellipsis] = ACTIONS(299), + [sym_type_conversion] = ACTIONS(293), + [sym_integer] = ACTIONS(301), + [sym_float] = ACTIONS(299), + [anon_sym_await] = ACTIONS(588), + [sym_true] = ACTIONS(301), + [sym_false] = ACTIONS(301), + [sym_none] = ACTIONS(301), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(299), + [sym__string_start] = ACTIONS(305), }, [137] = { - [sym_primary_expression] = STATE(632), - [sym_binary_operator] = STATE(575), - [sym_unary_operator] = STATE(575), - [sym_attribute] = STATE(575), - [sym_subscript] = STATE(575), - [sym_call] = STATE(575), - [sym_list] = STATE(575), - [sym_set] = STATE(575), - [sym_tuple] = STATE(575), - [sym_dictionary] = STATE(575), - [sym_list_comprehension] = STATE(575), - [sym_dictionary_comprehension] = STATE(575), - [sym_set_comprehension] = STATE(575), - [sym_generator_expression] = STATE(575), - [sym_parenthesized_expression] = STATE(575), - [sym_concatenated_string] = STATE(575), - [sym_string] = STATE(569), - [sym_await] = STATE(575), - [sym_identifier] = ACTIONS(295), + [sym_primary_expression] = STATE(629), + [sym_binary_operator] = STATE(589), + [sym_unary_operator] = STATE(589), + [sym_attribute] = STATE(589), + [sym_subscript] = STATE(589), + [sym_call] = STATE(589), + [sym_list] = STATE(589), + [sym_set] = STATE(589), + [sym_tuple] = STATE(589), + [sym_dictionary] = STATE(589), + [sym_list_comprehension] = STATE(589), + [sym_dictionary_comprehension] = STATE(589), + [sym_set_comprehension] = STATE(589), + [sym_generator_expression] = STATE(589), + [sym_parenthesized_expression] = STATE(589), + [sym_concatenated_string] = STATE(589), + [sym_string] = STATE(565), + [sym_await] = STATE(589), + [sym_identifier] = ACTIONS(301), [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(262), - [anon_sym_RPAREN] = ACTIONS(287), - [anon_sym_COMMA] = ACTIONS(287), + [anon_sym_LPAREN] = ACTIONS(590), + [anon_sym_RPAREN] = ACTIONS(293), + [anon_sym_COMMA] = ACTIONS(293), + [anon_sym_as] = ACTIONS(260), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(568), - [anon_sym_GT_GT] = ACTIONS(287), + [anon_sym_print] = ACTIONS(576), + [anon_sym_GT_GT] = ACTIONS(293), + [anon_sym_COLON_EQ] = ACTIONS(592), [anon_sym_if] = ACTIONS(260), - [anon_sym_COLON] = ACTIONS(287), - [anon_sym_else] = ACTIONS(260), - [anon_sym_async] = ACTIONS(568), + [anon_sym_COLON] = ACTIONS(260), + [anon_sym_async] = ACTIONS(576), + [anon_sym_for] = ACTIONS(260), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(568), - [anon_sym_PIPE] = ACTIONS(287), - [anon_sym_DASH] = ACTIONS(285), - [anon_sym_PLUS] = ACTIONS(285), - [anon_sym_LBRACK] = ACTIONS(277), - [anon_sym_RBRACK] = ACTIONS(287), - [anon_sym_LBRACE] = ACTIONS(279), - [anon_sym_RBRACE] = ACTIONS(287), - [anon_sym_STAR_STAR] = ACTIONS(287), - [anon_sym_EQ] = ACTIONS(260), - [anon_sym_exec] = ACTIONS(568), - [anon_sym_type] = ACTIONS(568), - [anon_sym_AT] = ACTIONS(287), + [anon_sym_match] = ACTIONS(576), + [anon_sym_PIPE] = ACTIONS(293), + [anon_sym_DASH] = ACTIONS(594), + [anon_sym_PLUS] = ACTIONS(594), + [anon_sym_LBRACK] = ACTIONS(596), + [anon_sym_RBRACK] = ACTIONS(293), + [anon_sym_LBRACE] = ACTIONS(283), + [anon_sym_RBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(293), + [anon_sym_exec] = ACTIONS(576), + [anon_sym_type] = ACTIONS(576), + [anon_sym_AT] = ACTIONS(293), [anon_sym_not] = ACTIONS(260), [anon_sym_and] = ACTIONS(260), [anon_sym_or] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), - [anon_sym_PERCENT] = ACTIONS(287), - [anon_sym_SLASH_SLASH] = ACTIONS(287), - [anon_sym_AMP] = ACTIONS(287), - [anon_sym_CARET] = ACTIONS(287), - [anon_sym_LT_LT] = ACTIONS(287), - [anon_sym_TILDE] = ACTIONS(285), + [anon_sym_PERCENT] = ACTIONS(293), + [anon_sym_SLASH_SLASH] = ACTIONS(293), + [anon_sym_AMP] = ACTIONS(293), + [anon_sym_CARET] = ACTIONS(293), + [anon_sym_LT_LT] = ACTIONS(293), + [anon_sym_TILDE] = ACTIONS(594), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), - [sym_ellipsis] = ACTIONS(293), - [sym_type_conversion] = ACTIONS(287), - [sym_integer] = ACTIONS(295), - [sym_float] = ACTIONS(293), - [anon_sym_await] = ACTIONS(576), - [sym_true] = ACTIONS(295), - [sym_false] = ACTIONS(295), - [sym_none] = ACTIONS(295), + [sym_ellipsis] = ACTIONS(299), + [sym_integer] = ACTIONS(301), + [sym_float] = ACTIONS(299), + [anon_sym_await] = ACTIONS(598), + [sym_true] = ACTIONS(301), + [sym_false] = ACTIONS(301), + [sym_none] = ACTIONS(301), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(299), + [sym__string_start] = ACTIONS(305), }, [138] = { - [sym_primary_expression] = STATE(626), - [sym_binary_operator] = STATE(575), - [sym_unary_operator] = STATE(575), - [sym_attribute] = STATE(575), - [sym_subscript] = STATE(575), - [sym_call] = STATE(575), - [sym_list] = STATE(575), - [sym_set] = STATE(575), - [sym_tuple] = STATE(575), - [sym_dictionary] = STATE(575), - [sym_list_comprehension] = STATE(575), - [sym_dictionary_comprehension] = STATE(575), - [sym_set_comprehension] = STATE(575), - [sym_generator_expression] = STATE(575), - [sym_parenthesized_expression] = STATE(575), - [sym_concatenated_string] = STATE(575), - [sym_string] = STATE(569), - [sym_await] = STATE(575), - [sym_identifier] = ACTIONS(295), + [sym_primary_expression] = STATE(631), + [sym_binary_operator] = STATE(589), + [sym_unary_operator] = STATE(589), + [sym_attribute] = STATE(589), + [sym_subscript] = STATE(589), + [sym_call] = STATE(589), + [sym_list] = STATE(589), + [sym_set] = STATE(589), + [sym_tuple] = STATE(589), + [sym_dictionary] = STATE(589), + [sym_list_comprehension] = STATE(589), + [sym_dictionary_comprehension] = STATE(589), + [sym_set_comprehension] = STATE(589), + [sym_generator_expression] = STATE(589), + [sym_parenthesized_expression] = STATE(589), + [sym_concatenated_string] = STATE(589), + [sym_string] = STATE(565), + [sym_await] = STATE(589), + [sym_identifier] = ACTIONS(301), [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(578), - [anon_sym_RPAREN] = ACTIONS(287), - [anon_sym_COMMA] = ACTIONS(287), - [anon_sym_as] = ACTIONS(260), + [anon_sym_LPAREN] = ACTIONS(571), + [anon_sym_RPAREN] = ACTIONS(293), + [anon_sym_COMMA] = ACTIONS(293), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(568), - [anon_sym_GT_GT] = ACTIONS(287), - [anon_sym_COLON_EQ] = ACTIONS(580), + [anon_sym_print] = ACTIONS(576), + [anon_sym_GT_GT] = ACTIONS(293), [anon_sym_if] = ACTIONS(260), - [anon_sym_COLON] = ACTIONS(260), - [anon_sym_async] = ACTIONS(568), - [anon_sym_for] = ACTIONS(260), + [anon_sym_COLON] = ACTIONS(293), + [anon_sym_else] = ACTIONS(260), + [anon_sym_async] = ACTIONS(576), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(568), - [anon_sym_PIPE] = ACTIONS(287), - [anon_sym_DASH] = ACTIONS(582), - [anon_sym_PLUS] = ACTIONS(582), + [anon_sym_match] = ACTIONS(576), + [anon_sym_PIPE] = ACTIONS(293), + [anon_sym_DASH] = ACTIONS(291), + [anon_sym_PLUS] = ACTIONS(291), [anon_sym_LBRACK] = ACTIONS(584), - [anon_sym_RBRACK] = ACTIONS(287), - [anon_sym_LBRACE] = ACTIONS(279), - [anon_sym_RBRACE] = ACTIONS(287), - [anon_sym_STAR_STAR] = ACTIONS(287), - [anon_sym_exec] = ACTIONS(568), - [anon_sym_type] = ACTIONS(568), - [anon_sym_AT] = ACTIONS(287), + [anon_sym_RBRACK] = ACTIONS(293), + [anon_sym_LBRACE] = ACTIONS(283), + [anon_sym_RBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(293), + [anon_sym_EQ] = ACTIONS(260), + [anon_sym_exec] = ACTIONS(576), + [anon_sym_type] = ACTIONS(576), + [anon_sym_AT] = ACTIONS(293), [anon_sym_not] = ACTIONS(260), [anon_sym_and] = ACTIONS(260), [anon_sym_or] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), - [anon_sym_PERCENT] = ACTIONS(287), - [anon_sym_SLASH_SLASH] = ACTIONS(287), - [anon_sym_AMP] = ACTIONS(287), - [anon_sym_CARET] = ACTIONS(287), - [anon_sym_LT_LT] = ACTIONS(287), - [anon_sym_TILDE] = ACTIONS(582), + [anon_sym_PERCENT] = ACTIONS(293), + [anon_sym_SLASH_SLASH] = ACTIONS(293), + [anon_sym_AMP] = ACTIONS(293), + [anon_sym_CARET] = ACTIONS(293), + [anon_sym_LT_LT] = ACTIONS(293), + [anon_sym_TILDE] = ACTIONS(291), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), - [sym_ellipsis] = ACTIONS(293), - [sym_integer] = ACTIONS(295), - [sym_float] = ACTIONS(293), - [anon_sym_await] = ACTIONS(586), - [sym_true] = ACTIONS(295), - [sym_false] = ACTIONS(295), - [sym_none] = ACTIONS(295), + [sym_ellipsis] = ACTIONS(299), + [sym_type_conversion] = ACTIONS(293), + [sym_integer] = ACTIONS(301), + [sym_float] = ACTIONS(299), + [anon_sym_await] = ACTIONS(588), + [sym_true] = ACTIONS(301), + [sym_false] = ACTIONS(301), + [sym_none] = ACTIONS(301), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(299), + [sym__string_start] = ACTIONS(305), }, [139] = { - [sym_primary_expression] = STATE(626), - [sym_binary_operator] = STATE(575), - [sym_unary_operator] = STATE(575), - [sym_attribute] = STATE(575), - [sym_subscript] = STATE(575), - [sym_call] = STATE(575), - [sym_list] = STATE(575), - [sym_set] = STATE(575), - [sym_tuple] = STATE(575), - [sym_dictionary] = STATE(575), - [sym_list_comprehension] = STATE(575), - [sym_dictionary_comprehension] = STATE(575), - [sym_set_comprehension] = STATE(575), - [sym_generator_expression] = STATE(575), - [sym_parenthesized_expression] = STATE(575), - [sym_concatenated_string] = STATE(575), - [sym_string] = STATE(569), - [sym_await] = STATE(575), - [sym_identifier] = ACTIONS(295), + [sym_primary_expression] = STATE(629), + [sym_binary_operator] = STATE(589), + [sym_unary_operator] = STATE(589), + [sym_attribute] = STATE(589), + [sym_subscript] = STATE(589), + [sym_call] = STATE(589), + [sym_list] = STATE(589), + [sym_set] = STATE(589), + [sym_tuple] = STATE(589), + [sym_dictionary] = STATE(589), + [sym_list_comprehension] = STATE(589), + [sym_dictionary_comprehension] = STATE(589), + [sym_set_comprehension] = STATE(589), + [sym_generator_expression] = STATE(589), + [sym_parenthesized_expression] = STATE(589), + [sym_concatenated_string] = STATE(589), + [sym_string] = STATE(565), + [sym_await] = STATE(589), + [sym_identifier] = ACTIONS(301), [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(578), - [anon_sym_RPAREN] = ACTIONS(287), - [anon_sym_COMMA] = ACTIONS(287), + [anon_sym_LPAREN] = ACTIONS(590), + [anon_sym_RPAREN] = ACTIONS(293), + [anon_sym_COMMA] = ACTIONS(293), [anon_sym_as] = ACTIONS(260), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(568), - [anon_sym_GT_GT] = ACTIONS(287), + [anon_sym_print] = ACTIONS(576), + [anon_sym_GT_GT] = ACTIONS(293), [anon_sym_if] = ACTIONS(260), - [anon_sym_COLON] = ACTIONS(287), - [anon_sym_async] = ACTIONS(568), + [anon_sym_COLON] = ACTIONS(293), + [anon_sym_async] = ACTIONS(576), [anon_sym_for] = ACTIONS(260), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(568), - [anon_sym_PIPE] = ACTIONS(287), - [anon_sym_DASH] = ACTIONS(582), - [anon_sym_PLUS] = ACTIONS(582), - [anon_sym_LBRACK] = ACTIONS(584), - [anon_sym_RBRACK] = ACTIONS(287), - [anon_sym_LBRACE] = ACTIONS(279), - [anon_sym_RBRACE] = ACTIONS(287), - [anon_sym_STAR_STAR] = ACTIONS(287), - [anon_sym_exec] = ACTIONS(568), - [anon_sym_type] = ACTIONS(568), - [anon_sym_AT] = ACTIONS(287), + [anon_sym_match] = ACTIONS(576), + [anon_sym_PIPE] = ACTIONS(293), + [anon_sym_DASH] = ACTIONS(594), + [anon_sym_PLUS] = ACTIONS(594), + [anon_sym_LBRACK] = ACTIONS(596), + [anon_sym_RBRACK] = ACTIONS(293), + [anon_sym_LBRACE] = ACTIONS(283), + [anon_sym_RBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(293), + [anon_sym_exec] = ACTIONS(576), + [anon_sym_type] = ACTIONS(576), + [anon_sym_AT] = ACTIONS(293), [anon_sym_not] = ACTIONS(260), [anon_sym_and] = ACTIONS(260), [anon_sym_or] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), - [anon_sym_PERCENT] = ACTIONS(287), - [anon_sym_SLASH_SLASH] = ACTIONS(287), - [anon_sym_AMP] = ACTIONS(287), - [anon_sym_CARET] = ACTIONS(287), - [anon_sym_LT_LT] = ACTIONS(287), - [anon_sym_TILDE] = ACTIONS(582), + [anon_sym_PERCENT] = ACTIONS(293), + [anon_sym_SLASH_SLASH] = ACTIONS(293), + [anon_sym_AMP] = ACTIONS(293), + [anon_sym_CARET] = ACTIONS(293), + [anon_sym_LT_LT] = ACTIONS(293), + [anon_sym_TILDE] = ACTIONS(594), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), - [sym_ellipsis] = ACTIONS(293), - [sym_integer] = ACTIONS(295), - [sym_float] = ACTIONS(293), - [anon_sym_await] = ACTIONS(586), - [sym_true] = ACTIONS(295), - [sym_false] = ACTIONS(295), - [sym_none] = ACTIONS(295), + [sym_ellipsis] = ACTIONS(299), + [sym_integer] = ACTIONS(301), + [sym_float] = ACTIONS(299), + [anon_sym_await] = ACTIONS(598), + [sym_true] = ACTIONS(301), + [sym_false] = ACTIONS(301), + [sym_none] = ACTIONS(301), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(299), + [sym__string_start] = ACTIONS(305), }, [140] = { - [sym_primary_expression] = STATE(632), - [sym_binary_operator] = STATE(575), - [sym_unary_operator] = STATE(575), - [sym_attribute] = STATE(575), - [sym_subscript] = STATE(575), - [sym_call] = STATE(575), - [sym_list] = STATE(575), - [sym_set] = STATE(575), - [sym_tuple] = STATE(575), - [sym_dictionary] = STATE(575), - [sym_list_comprehension] = STATE(575), - [sym_dictionary_comprehension] = STATE(575), - [sym_set_comprehension] = STATE(575), - [sym_generator_expression] = STATE(575), - [sym_parenthesized_expression] = STATE(575), - [sym_concatenated_string] = STATE(575), - [sym_string] = STATE(569), - [sym_await] = STATE(575), - [sym_identifier] = ACTIONS(295), + [sym_primary_expression] = STATE(631), + [sym_binary_operator] = STATE(589), + [sym_unary_operator] = STATE(589), + [sym_attribute] = STATE(589), + [sym_subscript] = STATE(589), + [sym_call] = STATE(589), + [sym_list] = STATE(589), + [sym_set] = STATE(589), + [sym_tuple] = STATE(589), + [sym_dictionary] = STATE(589), + [sym_list_comprehension] = STATE(589), + [sym_dictionary_comprehension] = STATE(589), + [sym_set_comprehension] = STATE(589), + [sym_generator_expression] = STATE(589), + [sym_parenthesized_expression] = STATE(589), + [sym_concatenated_string] = STATE(589), + [sym_string] = STATE(565), + [sym_await] = STATE(589), + [sym_identifier] = ACTIONS(301), [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(262), - [anon_sym_RPAREN] = ACTIONS(291), - [anon_sym_COMMA] = ACTIONS(291), + [anon_sym_LPAREN] = ACTIONS(571), + [anon_sym_RPAREN] = ACTIONS(586), + [anon_sym_COMMA] = ACTIONS(586), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(568), + [anon_sym_print] = ACTIONS(576), [anon_sym_GT_GT] = ACTIONS(260), - [anon_sym_COLON] = ACTIONS(291), - [anon_sym_async] = ACTIONS(568), - [anon_sym_in] = ACTIONS(273), - [anon_sym_match] = ACTIONS(568), + [anon_sym_COLON] = ACTIONS(586), + [anon_sym_async] = ACTIONS(576), + [anon_sym_in] = ACTIONS(580), + [anon_sym_match] = ACTIONS(576), [anon_sym_PIPE] = ACTIONS(260), - [anon_sym_DASH] = ACTIONS(275), - [anon_sym_PLUS] = ACTIONS(275), - [anon_sym_LBRACK] = ACTIONS(277), - [anon_sym_RBRACK] = ACTIONS(291), - [anon_sym_LBRACE] = ACTIONS(279), + [anon_sym_DASH] = ACTIONS(582), + [anon_sym_PLUS] = ACTIONS(582), + [anon_sym_LBRACK] = ACTIONS(584), + [anon_sym_RBRACK] = ACTIONS(586), + [anon_sym_LBRACE] = ACTIONS(283), [anon_sym_STAR_STAR] = ACTIONS(260), - [anon_sym_EQ] = ACTIONS(291), - [anon_sym_exec] = ACTIONS(568), - [anon_sym_type] = ACTIONS(568), + [anon_sym_EQ] = ACTIONS(586), + [anon_sym_exec] = ACTIONS(576), + [anon_sym_type] = ACTIONS(576), [anon_sym_AT] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), [anon_sym_PERCENT] = ACTIONS(260), @@ -22096,143 +23682,71 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_AMP] = ACTIONS(260), [anon_sym_CARET] = ACTIONS(260), [anon_sym_LT_LT] = ACTIONS(260), - [anon_sym_TILDE] = ACTIONS(285), - [anon_sym_PLUS_EQ] = ACTIONS(291), - [anon_sym_DASH_EQ] = ACTIONS(291), - [anon_sym_STAR_EQ] = ACTIONS(291), - [anon_sym_SLASH_EQ] = ACTIONS(291), - [anon_sym_AT_EQ] = ACTIONS(291), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(291), - [anon_sym_PERCENT_EQ] = ACTIONS(291), - [anon_sym_STAR_STAR_EQ] = ACTIONS(291), - [anon_sym_GT_GT_EQ] = ACTIONS(291), - [anon_sym_LT_LT_EQ] = ACTIONS(291), - [anon_sym_AMP_EQ] = ACTIONS(291), - [anon_sym_CARET_EQ] = ACTIONS(291), - [anon_sym_PIPE_EQ] = ACTIONS(291), - [sym_ellipsis] = ACTIONS(293), - [sym_integer] = ACTIONS(295), - [sym_float] = ACTIONS(293), - [anon_sym_await] = ACTIONS(576), - [sym_true] = ACTIONS(295), - [sym_false] = ACTIONS(295), - [sym_none] = ACTIONS(295), + [anon_sym_TILDE] = ACTIONS(291), + [anon_sym_PLUS_EQ] = ACTIONS(586), + [anon_sym_DASH_EQ] = ACTIONS(586), + [anon_sym_STAR_EQ] = ACTIONS(586), + [anon_sym_SLASH_EQ] = ACTIONS(586), + [anon_sym_AT_EQ] = ACTIONS(586), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(586), + [anon_sym_PERCENT_EQ] = ACTIONS(586), + [anon_sym_STAR_STAR_EQ] = ACTIONS(586), + [anon_sym_GT_GT_EQ] = ACTIONS(586), + [anon_sym_LT_LT_EQ] = ACTIONS(586), + [anon_sym_AMP_EQ] = ACTIONS(586), + [anon_sym_CARET_EQ] = ACTIONS(586), + [anon_sym_PIPE_EQ] = ACTIONS(586), + [sym_ellipsis] = ACTIONS(299), + [sym_integer] = ACTIONS(301), + [sym_float] = ACTIONS(299), + [anon_sym_await] = ACTIONS(588), + [sym_true] = ACTIONS(301), + [sym_false] = ACTIONS(301), + [sym_none] = ACTIONS(301), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(299), + [sym__string_start] = ACTIONS(305), }, [141] = { - [sym_primary_expression] = STATE(709), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_attribute] = STATE(764), - [sym_subscript] = STATE(764), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_concatenated_string] = STATE(764), - [sym_string] = STATE(693), - [sym_await] = STATE(764), - [sym_identifier] = ACTIONS(77), + [sym_primary_expression] = STATE(631), + [sym_binary_operator] = STATE(589), + [sym_unary_operator] = STATE(589), + [sym_attribute] = STATE(589), + [sym_subscript] = STATE(589), + [sym_call] = STATE(589), + [sym_list] = STATE(589), + [sym_set] = STATE(589), + [sym_tuple] = STATE(589), + [sym_dictionary] = STATE(589), + [sym_list_comprehension] = STATE(589), + [sym_dictionary_comprehension] = STATE(589), + [sym_set_comprehension] = STATE(589), + [sym_generator_expression] = STATE(589), + [sym_parenthesized_expression] = STATE(589), + [sym_concatenated_string] = STATE(589), + [sym_string] = STATE(565), + [sym_await] = STATE(589), + [sym_identifier] = ACTIONS(301), [anon_sym_DOT] = ACTIONS(260), - [anon_sym_from] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(555), - [anon_sym_COMMA] = ACTIONS(287), + [anon_sym_LPAREN] = ACTIONS(571), + [anon_sym_RPAREN] = ACTIONS(297), + [anon_sym_COMMA] = ACTIONS(297), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(557), - [anon_sym_GT_GT] = ACTIONS(287), - [anon_sym_COLON_EQ] = ACTIONS(271), - [anon_sym_if] = ACTIONS(260), - [anon_sym_async] = ACTIONS(557), - [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(557), - [anon_sym_PIPE] = ACTIONS(287), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(561), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(287), - [anon_sym_EQ] = ACTIONS(260), - [anon_sym_exec] = ACTIONS(557), - [anon_sym_type] = ACTIONS(557), - [anon_sym_AT] = ACTIONS(287), - [anon_sym_not] = ACTIONS(260), - [anon_sym_and] = ACTIONS(260), - [anon_sym_or] = ACTIONS(260), - [anon_sym_SLASH] = ACTIONS(260), - [anon_sym_PERCENT] = ACTIONS(287), - [anon_sym_SLASH_SLASH] = ACTIONS(287), - [anon_sym_AMP] = ACTIONS(287), - [anon_sym_CARET] = ACTIONS(287), - [anon_sym_LT_LT] = ACTIONS(287), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), - [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), - [anon_sym_is] = ACTIONS(260), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(563), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__semicolon] = ACTIONS(287), - [sym__newline] = ACTIONS(287), - [sym__string_start] = ACTIONS(81), - }, - [142] = { - [sym_primary_expression] = STATE(632), - [sym_binary_operator] = STATE(575), - [sym_unary_operator] = STATE(575), - [sym_attribute] = STATE(575), - [sym_subscript] = STATE(575), - [sym_call] = STATE(575), - [sym_list] = STATE(575), - [sym_set] = STATE(575), - [sym_tuple] = STATE(575), - [sym_dictionary] = STATE(575), - [sym_list_comprehension] = STATE(575), - [sym_dictionary_comprehension] = STATE(575), - [sym_set_comprehension] = STATE(575), - [sym_generator_expression] = STATE(575), - [sym_parenthesized_expression] = STATE(575), - [sym_concatenated_string] = STATE(575), - [sym_string] = STATE(569), - [sym_await] = STATE(575), - [sym_identifier] = ACTIONS(295), - [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(262), - [anon_sym_RPAREN] = ACTIONS(574), - [anon_sym_COMMA] = ACTIONS(574), - [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(568), + [anon_sym_print] = ACTIONS(576), [anon_sym_GT_GT] = ACTIONS(260), - [anon_sym_COLON] = ACTIONS(574), - [anon_sym_async] = ACTIONS(568), - [anon_sym_in] = ACTIONS(572), - [anon_sym_match] = ACTIONS(568), + [anon_sym_COLON] = ACTIONS(297), + [anon_sym_async] = ACTIONS(576), + [anon_sym_in] = ACTIONS(275), + [anon_sym_match] = ACTIONS(576), [anon_sym_PIPE] = ACTIONS(260), - [anon_sym_DASH] = ACTIONS(275), - [anon_sym_PLUS] = ACTIONS(275), - [anon_sym_LBRACK] = ACTIONS(277), - [anon_sym_RBRACK] = ACTIONS(574), - [anon_sym_LBRACE] = ACTIONS(279), + [anon_sym_DASH] = ACTIONS(582), + [anon_sym_PLUS] = ACTIONS(582), + [anon_sym_LBRACK] = ACTIONS(584), + [anon_sym_RBRACK] = ACTIONS(297), + [anon_sym_LBRACE] = ACTIONS(283), [anon_sym_STAR_STAR] = ACTIONS(260), - [anon_sym_EQ] = ACTIONS(574), - [anon_sym_exec] = ACTIONS(568), - [anon_sym_type] = ACTIONS(568), + [anon_sym_EQ] = ACTIONS(297), + [anon_sym_exec] = ACTIONS(576), + [anon_sym_type] = ACTIONS(576), [anon_sym_AT] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), [anon_sym_PERCENT] = ACTIONS(260), @@ -22240,453 +23754,525 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_AMP] = ACTIONS(260), [anon_sym_CARET] = ACTIONS(260), [anon_sym_LT_LT] = ACTIONS(260), - [anon_sym_TILDE] = ACTIONS(285), - [anon_sym_PLUS_EQ] = ACTIONS(574), - [anon_sym_DASH_EQ] = ACTIONS(574), - [anon_sym_STAR_EQ] = ACTIONS(574), - [anon_sym_SLASH_EQ] = ACTIONS(574), - [anon_sym_AT_EQ] = ACTIONS(574), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(574), - [anon_sym_PERCENT_EQ] = ACTIONS(574), - [anon_sym_STAR_STAR_EQ] = ACTIONS(574), - [anon_sym_GT_GT_EQ] = ACTIONS(574), - [anon_sym_LT_LT_EQ] = ACTIONS(574), - [anon_sym_AMP_EQ] = ACTIONS(574), - [anon_sym_CARET_EQ] = ACTIONS(574), - [anon_sym_PIPE_EQ] = ACTIONS(574), - [sym_ellipsis] = ACTIONS(293), - [sym_integer] = ACTIONS(295), - [sym_float] = ACTIONS(293), - [anon_sym_await] = ACTIONS(576), - [sym_true] = ACTIONS(295), - [sym_false] = ACTIONS(295), - [sym_none] = ACTIONS(295), + [anon_sym_TILDE] = ACTIONS(291), + [anon_sym_PLUS_EQ] = ACTIONS(297), + [anon_sym_DASH_EQ] = ACTIONS(297), + [anon_sym_STAR_EQ] = ACTIONS(297), + [anon_sym_SLASH_EQ] = ACTIONS(297), + [anon_sym_AT_EQ] = ACTIONS(297), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(297), + [anon_sym_PERCENT_EQ] = ACTIONS(297), + [anon_sym_STAR_STAR_EQ] = ACTIONS(297), + [anon_sym_GT_GT_EQ] = ACTIONS(297), + [anon_sym_LT_LT_EQ] = ACTIONS(297), + [anon_sym_AMP_EQ] = ACTIONS(297), + [anon_sym_CARET_EQ] = ACTIONS(297), + [anon_sym_PIPE_EQ] = ACTIONS(297), + [sym_ellipsis] = ACTIONS(299), + [sym_integer] = ACTIONS(301), + [sym_float] = ACTIONS(299), + [anon_sym_await] = ACTIONS(588), + [sym_true] = ACTIONS(301), + [sym_false] = ACTIONS(301), + [sym_none] = ACTIONS(301), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(299), + [sym__string_start] = ACTIONS(305), }, - [143] = { + [142] = { [sym_primary_expression] = STATE(709), - [sym_binary_operator] = STATE(764), - [sym_unary_operator] = STATE(764), - [sym_attribute] = STATE(764), - [sym_subscript] = STATE(764), - [sym_call] = STATE(764), - [sym_list] = STATE(764), - [sym_set] = STATE(764), - [sym_tuple] = STATE(764), - [sym_dictionary] = STATE(764), - [sym_list_comprehension] = STATE(764), - [sym_dictionary_comprehension] = STATE(764), - [sym_set_comprehension] = STATE(764), - [sym_generator_expression] = STATE(764), - [sym_parenthesized_expression] = STATE(764), - [sym_concatenated_string] = STATE(764), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_attribute] = STATE(773), + [sym_subscript] = STATE(773), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_concatenated_string] = STATE(773), [sym_string] = STATE(693), - [sym_await] = STATE(764), + [sym_await] = STATE(773), [sym_identifier] = ACTIONS(77), [anon_sym_DOT] = ACTIONS(260), [anon_sym_from] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(555), - [anon_sym_COMMA] = ACTIONS(287), + [anon_sym_LPAREN] = ACTIONS(561), + [anon_sym_COMMA] = ACTIONS(293), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(557), - [anon_sym_GT_GT] = ACTIONS(287), + [anon_sym_print] = ACTIONS(563), + [anon_sym_GT_GT] = ACTIONS(293), + [anon_sym_COLON_EQ] = ACTIONS(273), [anon_sym_if] = ACTIONS(260), - [anon_sym_async] = ACTIONS(557), + [anon_sym_async] = ACTIONS(563), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(557), - [anon_sym_PIPE] = ACTIONS(287), + [anon_sym_match] = ACTIONS(563), + [anon_sym_PIPE] = ACTIONS(293), [anon_sym_DASH] = ACTIONS(47), [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(561), + [anon_sym_LBRACK] = ACTIONS(567), [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(287), + [anon_sym_STAR_STAR] = ACTIONS(293), [anon_sym_EQ] = ACTIONS(260), - [anon_sym_exec] = ACTIONS(557), - [anon_sym_type] = ACTIONS(557), - [anon_sym_AT] = ACTIONS(287), + [anon_sym_exec] = ACTIONS(563), + [anon_sym_type] = ACTIONS(563), + [anon_sym_AT] = ACTIONS(293), [anon_sym_not] = ACTIONS(260), [anon_sym_and] = ACTIONS(260), [anon_sym_or] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), - [anon_sym_PERCENT] = ACTIONS(287), - [anon_sym_SLASH_SLASH] = ACTIONS(287), - [anon_sym_AMP] = ACTIONS(287), - [anon_sym_CARET] = ACTIONS(287), - [anon_sym_LT_LT] = ACTIONS(287), + [anon_sym_PERCENT] = ACTIONS(293), + [anon_sym_SLASH_SLASH] = ACTIONS(293), + [anon_sym_AMP] = ACTIONS(293), + [anon_sym_CARET] = ACTIONS(293), + [anon_sym_LT_LT] = ACTIONS(293), [anon_sym_TILDE] = ACTIONS(47), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), [sym_ellipsis] = ACTIONS(75), [sym_integer] = ACTIONS(77), [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(563), + [anon_sym_await] = ACTIONS(569), [sym_true] = ACTIONS(77), [sym_false] = ACTIONS(77), [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__semicolon] = ACTIONS(287), - [sym__newline] = ACTIONS(287), + [sym__semicolon] = ACTIONS(293), + [sym__newline] = ACTIONS(293), [sym__string_start] = ACTIONS(81), }, + [143] = { + [sym_primary_expression] = STATE(727), + [sym_binary_operator] = STATE(796), + [sym_unary_operator] = STATE(796), + [sym_attribute] = STATE(796), + [sym_subscript] = STATE(796), + [sym_call] = STATE(796), + [sym_list] = STATE(796), + [sym_set] = STATE(796), + [sym_tuple] = STATE(796), + [sym_dictionary] = STATE(796), + [sym_list_comprehension] = STATE(796), + [sym_dictionary_comprehension] = STATE(796), + [sym_set_comprehension] = STATE(796), + [sym_generator_expression] = STATE(796), + [sym_parenthesized_expression] = STATE(796), + [sym_concatenated_string] = STATE(796), + [sym_string] = STATE(699), + [sym_await] = STATE(796), + [sym_identifier] = ACTIONS(600), + [anon_sym_DOT] = ACTIONS(260), + [anon_sym_LPAREN] = ACTIONS(602), + [anon_sym_RPAREN] = ACTIONS(293), + [anon_sym_COMMA] = ACTIONS(293), + [anon_sym_as] = ACTIONS(260), + [anon_sym_STAR] = ACTIONS(260), + [anon_sym_print] = ACTIONS(604), + [anon_sym_GT_GT] = ACTIONS(293), + [anon_sym_COLON_EQ] = ACTIONS(606), + [anon_sym_if] = ACTIONS(260), + [anon_sym_COLON] = ACTIONS(260), + [anon_sym_async] = ACTIONS(604), + [anon_sym_in] = ACTIONS(260), + [anon_sym_match] = ACTIONS(604), + [anon_sym_PIPE] = ACTIONS(293), + [anon_sym_DASH] = ACTIONS(608), + [anon_sym_PLUS] = ACTIONS(608), + [anon_sym_LBRACK] = ACTIONS(610), + [anon_sym_LBRACE] = ACTIONS(612), + [anon_sym_STAR_STAR] = ACTIONS(293), + [anon_sym_exec] = ACTIONS(604), + [anon_sym_type] = ACTIONS(604), + [anon_sym_AT] = ACTIONS(293), + [anon_sym_not] = ACTIONS(260), + [anon_sym_and] = ACTIONS(260), + [anon_sym_or] = ACTIONS(260), + [anon_sym_SLASH] = ACTIONS(260), + [anon_sym_PERCENT] = ACTIONS(293), + [anon_sym_SLASH_SLASH] = ACTIONS(293), + [anon_sym_AMP] = ACTIONS(293), + [anon_sym_CARET] = ACTIONS(293), + [anon_sym_LT_LT] = ACTIONS(293), + [anon_sym_TILDE] = ACTIONS(608), + [anon_sym_LT] = ACTIONS(260), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), + [anon_sym_GT] = ACTIONS(260), + [anon_sym_LT_GT] = ACTIONS(293), + [anon_sym_is] = ACTIONS(260), + [sym_ellipsis] = ACTIONS(614), + [sym_integer] = ACTIONS(600), + [sym_float] = ACTIONS(614), + [anon_sym_await] = ACTIONS(616), + [sym_true] = ACTIONS(600), + [sym_false] = ACTIONS(600), + [sym_none] = ACTIONS(600), + [sym_comment] = ACTIONS(3), + [sym__string_start] = ACTIONS(618), + }, [144] = { - [sym_primary_expression] = STATE(626), - [sym_binary_operator] = STATE(575), - [sym_unary_operator] = STATE(575), - [sym_attribute] = STATE(575), - [sym_subscript] = STATE(575), - [sym_call] = STATE(575), - [sym_list] = STATE(575), - [sym_set] = STATE(575), - [sym_tuple] = STATE(575), - [sym_dictionary] = STATE(575), - [sym_list_comprehension] = STATE(575), - [sym_dictionary_comprehension] = STATE(575), - [sym_set_comprehension] = STATE(575), - [sym_generator_expression] = STATE(575), - [sym_parenthesized_expression] = STATE(575), - [sym_concatenated_string] = STATE(575), - [sym_string] = STATE(569), - [sym_await] = STATE(575), - [sym_identifier] = ACTIONS(295), + [sym_primary_expression] = STATE(629), + [sym_binary_operator] = STATE(589), + [sym_unary_operator] = STATE(589), + [sym_attribute] = STATE(589), + [sym_subscript] = STATE(589), + [sym_call] = STATE(589), + [sym_list] = STATE(589), + [sym_set] = STATE(589), + [sym_tuple] = STATE(589), + [sym_dictionary] = STATE(589), + [sym_list_comprehension] = STATE(589), + [sym_dictionary_comprehension] = STATE(589), + [sym_set_comprehension] = STATE(589), + [sym_generator_expression] = STATE(589), + [sym_parenthesized_expression] = STATE(589), + [sym_concatenated_string] = STATE(589), + [sym_string] = STATE(565), + [sym_await] = STATE(589), + [sym_identifier] = ACTIONS(301), [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(578), - [anon_sym_RPAREN] = ACTIONS(264), - [anon_sym_COMMA] = ACTIONS(264), + [anon_sym_LPAREN] = ACTIONS(590), + [anon_sym_RPAREN] = ACTIONS(265), + [anon_sym_COMMA] = ACTIONS(265), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(568), - [anon_sym_GT_GT] = ACTIONS(287), - [anon_sym_COLON_EQ] = ACTIONS(580), + [anon_sym_print] = ACTIONS(576), + [anon_sym_GT_GT] = ACTIONS(293), + [anon_sym_COLON_EQ] = ACTIONS(592), [anon_sym_if] = ACTIONS(260), - [anon_sym_async] = ACTIONS(568), + [anon_sym_async] = ACTIONS(576), [anon_sym_for] = ACTIONS(260), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(568), - [anon_sym_PIPE] = ACTIONS(287), - [anon_sym_DASH] = ACTIONS(582), - [anon_sym_PLUS] = ACTIONS(582), - [anon_sym_LBRACK] = ACTIONS(584), - [anon_sym_RBRACK] = ACTIONS(264), - [anon_sym_LBRACE] = ACTIONS(279), - [anon_sym_STAR_STAR] = ACTIONS(287), - [anon_sym_exec] = ACTIONS(568), - [anon_sym_type] = ACTIONS(568), - [anon_sym_AT] = ACTIONS(287), + [anon_sym_match] = ACTIONS(576), + [anon_sym_PIPE] = ACTIONS(293), + [anon_sym_DASH] = ACTIONS(594), + [anon_sym_PLUS] = ACTIONS(594), + [anon_sym_LBRACK] = ACTIONS(596), + [anon_sym_RBRACK] = ACTIONS(265), + [anon_sym_LBRACE] = ACTIONS(283), + [anon_sym_STAR_STAR] = ACTIONS(293), + [anon_sym_exec] = ACTIONS(576), + [anon_sym_type] = ACTIONS(576), + [anon_sym_AT] = ACTIONS(293), [anon_sym_not] = ACTIONS(260), [anon_sym_and] = ACTIONS(260), [anon_sym_or] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), - [anon_sym_PERCENT] = ACTIONS(287), - [anon_sym_SLASH_SLASH] = ACTIONS(287), - [anon_sym_AMP] = ACTIONS(287), - [anon_sym_CARET] = ACTIONS(287), - [anon_sym_LT_LT] = ACTIONS(287), - [anon_sym_TILDE] = ACTIONS(582), + [anon_sym_PERCENT] = ACTIONS(293), + [anon_sym_SLASH_SLASH] = ACTIONS(293), + [anon_sym_AMP] = ACTIONS(293), + [anon_sym_CARET] = ACTIONS(293), + [anon_sym_LT_LT] = ACTIONS(293), + [anon_sym_TILDE] = ACTIONS(594), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), - [sym_ellipsis] = ACTIONS(293), - [sym_integer] = ACTIONS(295), - [sym_float] = ACTIONS(293), - [anon_sym_await] = ACTIONS(586), - [sym_true] = ACTIONS(295), - [sym_false] = ACTIONS(295), - [sym_none] = ACTIONS(295), + [sym_ellipsis] = ACTIONS(299), + [sym_integer] = ACTIONS(301), + [sym_float] = ACTIONS(299), + [anon_sym_await] = ACTIONS(598), + [sym_true] = ACTIONS(301), + [sym_false] = ACTIONS(301), + [sym_none] = ACTIONS(301), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(299), + [sym__string_start] = ACTIONS(305), }, [145] = { - [sym_primary_expression] = STATE(718), - [sym_binary_operator] = STATE(787), - [sym_unary_operator] = STATE(787), - [sym_attribute] = STATE(787), - [sym_subscript] = STATE(787), - [sym_call] = STATE(787), - [sym_list] = STATE(787), - [sym_set] = STATE(787), - [sym_tuple] = STATE(787), - [sym_dictionary] = STATE(787), - [sym_list_comprehension] = STATE(787), - [sym_dictionary_comprehension] = STATE(787), - [sym_set_comprehension] = STATE(787), - [sym_generator_expression] = STATE(787), - [sym_parenthesized_expression] = STATE(787), - [sym_concatenated_string] = STATE(787), - [sym_string] = STATE(708), - [sym_await] = STATE(787), - [sym_identifier] = ACTIONS(588), + [sym_primary_expression] = STATE(709), + [sym_binary_operator] = STATE(773), + [sym_unary_operator] = STATE(773), + [sym_attribute] = STATE(773), + [sym_subscript] = STATE(773), + [sym_call] = STATE(773), + [sym_list] = STATE(773), + [sym_set] = STATE(773), + [sym_tuple] = STATE(773), + [sym_dictionary] = STATE(773), + [sym_list_comprehension] = STATE(773), + [sym_dictionary_comprehension] = STATE(773), + [sym_set_comprehension] = STATE(773), + [sym_generator_expression] = STATE(773), + [sym_parenthesized_expression] = STATE(773), + [sym_concatenated_string] = STATE(773), + [sym_string] = STATE(693), + [sym_await] = STATE(773), + [sym_identifier] = ACTIONS(77), [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(590), - [anon_sym_RPAREN] = ACTIONS(287), - [anon_sym_COMMA] = ACTIONS(287), - [anon_sym_as] = ACTIONS(260), + [anon_sym_from] = ACTIONS(260), + [anon_sym_LPAREN] = ACTIONS(561), + [anon_sym_COMMA] = ACTIONS(293), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(592), - [anon_sym_GT_GT] = ACTIONS(287), - [anon_sym_COLON_EQ] = ACTIONS(594), + [anon_sym_print] = ACTIONS(563), + [anon_sym_GT_GT] = ACTIONS(293), [anon_sym_if] = ACTIONS(260), - [anon_sym_COLON] = ACTIONS(260), - [anon_sym_async] = ACTIONS(592), + [anon_sym_async] = ACTIONS(563), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(592), - [anon_sym_PIPE] = ACTIONS(287), - [anon_sym_DASH] = ACTIONS(596), - [anon_sym_PLUS] = ACTIONS(596), - [anon_sym_LBRACK] = ACTIONS(598), - [anon_sym_LBRACE] = ACTIONS(600), - [anon_sym_STAR_STAR] = ACTIONS(287), - [anon_sym_exec] = ACTIONS(592), - [anon_sym_type] = ACTIONS(592), - [anon_sym_AT] = ACTIONS(287), + [anon_sym_match] = ACTIONS(563), + [anon_sym_PIPE] = ACTIONS(293), + [anon_sym_DASH] = ACTIONS(47), + [anon_sym_PLUS] = ACTIONS(47), + [anon_sym_LBRACK] = ACTIONS(567), + [anon_sym_LBRACE] = ACTIONS(51), + [anon_sym_STAR_STAR] = ACTIONS(293), + [anon_sym_EQ] = ACTIONS(260), + [anon_sym_exec] = ACTIONS(563), + [anon_sym_type] = ACTIONS(563), + [anon_sym_AT] = ACTIONS(293), [anon_sym_not] = ACTIONS(260), [anon_sym_and] = ACTIONS(260), [anon_sym_or] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), - [anon_sym_PERCENT] = ACTIONS(287), - [anon_sym_SLASH_SLASH] = ACTIONS(287), - [anon_sym_AMP] = ACTIONS(287), - [anon_sym_CARET] = ACTIONS(287), - [anon_sym_LT_LT] = ACTIONS(287), - [anon_sym_TILDE] = ACTIONS(596), + [anon_sym_PERCENT] = ACTIONS(293), + [anon_sym_SLASH_SLASH] = ACTIONS(293), + [anon_sym_AMP] = ACTIONS(293), + [anon_sym_CARET] = ACTIONS(293), + [anon_sym_LT_LT] = ACTIONS(293), + [anon_sym_TILDE] = ACTIONS(47), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), - [sym_ellipsis] = ACTIONS(602), - [sym_integer] = ACTIONS(588), - [sym_float] = ACTIONS(602), - [anon_sym_await] = ACTIONS(604), - [sym_true] = ACTIONS(588), - [sym_false] = ACTIONS(588), - [sym_none] = ACTIONS(588), + [sym_ellipsis] = ACTIONS(75), + [sym_integer] = ACTIONS(77), + [sym_float] = ACTIONS(75), + [anon_sym_await] = ACTIONS(569), + [sym_true] = ACTIONS(77), + [sym_false] = ACTIONS(77), + [sym_none] = ACTIONS(77), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(606), + [sym__semicolon] = ACTIONS(293), + [sym__newline] = ACTIONS(293), + [sym__string_start] = ACTIONS(81), }, [146] = { - [sym_primary_expression] = STATE(626), - [sym_binary_operator] = STATE(575), - [sym_unary_operator] = STATE(575), - [sym_attribute] = STATE(575), - [sym_subscript] = STATE(575), - [sym_call] = STATE(575), - [sym_list] = STATE(575), - [sym_set] = STATE(575), - [sym_tuple] = STATE(575), - [sym_dictionary] = STATE(575), - [sym_list_comprehension] = STATE(575), - [sym_dictionary_comprehension] = STATE(575), - [sym_set_comprehension] = STATE(575), - [sym_generator_expression] = STATE(575), - [sym_parenthesized_expression] = STATE(575), - [sym_concatenated_string] = STATE(575), - [sym_string] = STATE(569), - [sym_await] = STATE(575), - [sym_identifier] = ACTIONS(295), + [sym_primary_expression] = STATE(629), + [sym_binary_operator] = STATE(589), + [sym_unary_operator] = STATE(589), + [sym_attribute] = STATE(589), + [sym_subscript] = STATE(589), + [sym_call] = STATE(589), + [sym_list] = STATE(589), + [sym_set] = STATE(589), + [sym_tuple] = STATE(589), + [sym_dictionary] = STATE(589), + [sym_list_comprehension] = STATE(589), + [sym_dictionary_comprehension] = STATE(589), + [sym_set_comprehension] = STATE(589), + [sym_generator_expression] = STATE(589), + [sym_parenthesized_expression] = STATE(589), + [sym_concatenated_string] = STATE(589), + [sym_string] = STATE(565), + [sym_await] = STATE(589), + [sym_identifier] = ACTIONS(301), [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(578), - [anon_sym_RPAREN] = ACTIONS(287), - [anon_sym_COMMA] = ACTIONS(287), + [anon_sym_LPAREN] = ACTIONS(590), + [anon_sym_RPAREN] = ACTIONS(293), + [anon_sym_COMMA] = ACTIONS(293), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(568), - [anon_sym_GT_GT] = ACTIONS(287), - [anon_sym_COLON_EQ] = ACTIONS(580), + [anon_sym_print] = ACTIONS(576), + [anon_sym_GT_GT] = ACTIONS(293), + [anon_sym_COLON_EQ] = ACTIONS(592), [anon_sym_if] = ACTIONS(260), - [anon_sym_async] = ACTIONS(568), + [anon_sym_async] = ACTIONS(576), [anon_sym_for] = ACTIONS(260), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(568), - [anon_sym_PIPE] = ACTIONS(287), - [anon_sym_DASH] = ACTIONS(582), - [anon_sym_PLUS] = ACTIONS(582), - [anon_sym_LBRACK] = ACTIONS(584), - [anon_sym_LBRACE] = ACTIONS(279), - [anon_sym_STAR_STAR] = ACTIONS(287), - [anon_sym_EQ] = ACTIONS(608), - [anon_sym_exec] = ACTIONS(568), - [anon_sym_type] = ACTIONS(568), - [anon_sym_AT] = ACTIONS(287), + [anon_sym_match] = ACTIONS(576), + [anon_sym_PIPE] = ACTIONS(293), + [anon_sym_DASH] = ACTIONS(594), + [anon_sym_PLUS] = ACTIONS(594), + [anon_sym_LBRACK] = ACTIONS(596), + [anon_sym_LBRACE] = ACTIONS(283), + [anon_sym_STAR_STAR] = ACTIONS(293), + [anon_sym_EQ] = ACTIONS(620), + [anon_sym_exec] = ACTIONS(576), + [anon_sym_type] = ACTIONS(576), + [anon_sym_AT] = ACTIONS(293), [anon_sym_not] = ACTIONS(260), [anon_sym_and] = ACTIONS(260), [anon_sym_or] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), - [anon_sym_PERCENT] = ACTIONS(287), - [anon_sym_SLASH_SLASH] = ACTIONS(287), - [anon_sym_AMP] = ACTIONS(287), - [anon_sym_CARET] = ACTIONS(287), - [anon_sym_LT_LT] = ACTIONS(287), - [anon_sym_TILDE] = ACTIONS(582), + [anon_sym_PERCENT] = ACTIONS(293), + [anon_sym_SLASH_SLASH] = ACTIONS(293), + [anon_sym_AMP] = ACTIONS(293), + [anon_sym_CARET] = ACTIONS(293), + [anon_sym_LT_LT] = ACTIONS(293), + [anon_sym_TILDE] = ACTIONS(594), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), - [sym_ellipsis] = ACTIONS(293), - [sym_integer] = ACTIONS(295), - [sym_float] = ACTIONS(293), - [anon_sym_await] = ACTIONS(586), - [sym_true] = ACTIONS(295), - [sym_false] = ACTIONS(295), - [sym_none] = ACTIONS(295), + [sym_ellipsis] = ACTIONS(299), + [sym_integer] = ACTIONS(301), + [sym_float] = ACTIONS(299), + [anon_sym_await] = ACTIONS(598), + [sym_true] = ACTIONS(301), + [sym_false] = ACTIONS(301), + [sym_none] = ACTIONS(301), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(299), + [sym__string_start] = ACTIONS(305), }, [147] = { - [sym_primary_expression] = STATE(718), - [sym_binary_operator] = STATE(787), - [sym_unary_operator] = STATE(787), - [sym_attribute] = STATE(787), - [sym_subscript] = STATE(787), - [sym_call] = STATE(787), - [sym_list] = STATE(787), - [sym_set] = STATE(787), - [sym_tuple] = STATE(787), - [sym_dictionary] = STATE(787), - [sym_list_comprehension] = STATE(787), - [sym_dictionary_comprehension] = STATE(787), - [sym_set_comprehension] = STATE(787), - [sym_generator_expression] = STATE(787), - [sym_parenthesized_expression] = STATE(787), - [sym_concatenated_string] = STATE(787), - [sym_string] = STATE(708), - [sym_await] = STATE(787), - [sym_identifier] = ACTIONS(588), + [sym_primary_expression] = STATE(727), + [sym_binary_operator] = STATE(796), + [sym_unary_operator] = STATE(796), + [sym_attribute] = STATE(796), + [sym_subscript] = STATE(796), + [sym_call] = STATE(796), + [sym_list] = STATE(796), + [sym_set] = STATE(796), + [sym_tuple] = STATE(796), + [sym_dictionary] = STATE(796), + [sym_list_comprehension] = STATE(796), + [sym_dictionary_comprehension] = STATE(796), + [sym_set_comprehension] = STATE(796), + [sym_generator_expression] = STATE(796), + [sym_parenthesized_expression] = STATE(796), + [sym_concatenated_string] = STATE(796), + [sym_string] = STATE(699), + [sym_await] = STATE(796), + [sym_identifier] = ACTIONS(600), [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(590), - [anon_sym_RPAREN] = ACTIONS(287), - [anon_sym_COMMA] = ACTIONS(287), + [anon_sym_LPAREN] = ACTIONS(602), + [anon_sym_RPAREN] = ACTIONS(293), + [anon_sym_COMMA] = ACTIONS(293), [anon_sym_as] = ACTIONS(260), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(592), - [anon_sym_GT_GT] = ACTIONS(287), + [anon_sym_print] = ACTIONS(604), + [anon_sym_GT_GT] = ACTIONS(293), [anon_sym_if] = ACTIONS(260), - [anon_sym_COLON] = ACTIONS(287), - [anon_sym_async] = ACTIONS(592), + [anon_sym_COLON] = ACTIONS(293), + [anon_sym_async] = ACTIONS(604), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(592), - [anon_sym_PIPE] = ACTIONS(287), - [anon_sym_DASH] = ACTIONS(596), - [anon_sym_PLUS] = ACTIONS(596), - [anon_sym_LBRACK] = ACTIONS(598), - [anon_sym_LBRACE] = ACTIONS(600), - [anon_sym_STAR_STAR] = ACTIONS(287), - [anon_sym_exec] = ACTIONS(592), - [anon_sym_type] = ACTIONS(592), - [anon_sym_AT] = ACTIONS(287), + [anon_sym_match] = ACTIONS(604), + [anon_sym_PIPE] = ACTIONS(293), + [anon_sym_DASH] = ACTIONS(608), + [anon_sym_PLUS] = ACTIONS(608), + [anon_sym_LBRACK] = ACTIONS(610), + [anon_sym_LBRACE] = ACTIONS(612), + [anon_sym_STAR_STAR] = ACTIONS(293), + [anon_sym_exec] = ACTIONS(604), + [anon_sym_type] = ACTIONS(604), + [anon_sym_AT] = ACTIONS(293), [anon_sym_not] = ACTIONS(260), [anon_sym_and] = ACTIONS(260), [anon_sym_or] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), - [anon_sym_PERCENT] = ACTIONS(287), - [anon_sym_SLASH_SLASH] = ACTIONS(287), - [anon_sym_AMP] = ACTIONS(287), - [anon_sym_CARET] = ACTIONS(287), - [anon_sym_LT_LT] = ACTIONS(287), - [anon_sym_TILDE] = ACTIONS(596), + [anon_sym_PERCENT] = ACTIONS(293), + [anon_sym_SLASH_SLASH] = ACTIONS(293), + [anon_sym_AMP] = ACTIONS(293), + [anon_sym_CARET] = ACTIONS(293), + [anon_sym_LT_LT] = ACTIONS(293), + [anon_sym_TILDE] = ACTIONS(608), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), - [sym_ellipsis] = ACTIONS(602), - [sym_integer] = ACTIONS(588), - [sym_float] = ACTIONS(602), - [anon_sym_await] = ACTIONS(604), - [sym_true] = ACTIONS(588), - [sym_false] = ACTIONS(588), - [sym_none] = ACTIONS(588), + [sym_ellipsis] = ACTIONS(614), + [sym_integer] = ACTIONS(600), + [sym_float] = ACTIONS(614), + [anon_sym_await] = ACTIONS(616), + [sym_true] = ACTIONS(600), + [sym_false] = ACTIONS(600), + [sym_none] = ACTIONS(600), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(606), + [sym__string_start] = ACTIONS(618), }, [148] = { - [sym_primary_expression] = STATE(632), - [sym_binary_operator] = STATE(575), - [sym_unary_operator] = STATE(575), - [sym_attribute] = STATE(575), - [sym_subscript] = STATE(575), - [sym_call] = STATE(575), - [sym_list] = STATE(575), - [sym_set] = STATE(575), - [sym_tuple] = STATE(575), - [sym_dictionary] = STATE(575), - [sym_list_comprehension] = STATE(575), - [sym_dictionary_comprehension] = STATE(575), - [sym_set_comprehension] = STATE(575), - [sym_generator_expression] = STATE(575), - [sym_parenthesized_expression] = STATE(575), - [sym_concatenated_string] = STATE(575), - [sym_string] = STATE(569), - [sym_await] = STATE(575), - [sym_identifier] = ACTIONS(295), + [sym_primary_expression] = STATE(631), + [sym_binary_operator] = STATE(589), + [sym_unary_operator] = STATE(589), + [sym_attribute] = STATE(589), + [sym_subscript] = STATE(589), + [sym_call] = STATE(589), + [sym_list] = STATE(589), + [sym_set] = STATE(589), + [sym_tuple] = STATE(589), + [sym_dictionary] = STATE(589), + [sym_list_comprehension] = STATE(589), + [sym_dictionary_comprehension] = STATE(589), + [sym_set_comprehension] = STATE(589), + [sym_generator_expression] = STATE(589), + [sym_parenthesized_expression] = STATE(589), + [sym_concatenated_string] = STATE(589), + [sym_string] = STATE(565), + [sym_await] = STATE(589), + [sym_identifier] = ACTIONS(301), [anon_sym_DOT] = ACTIONS(260), - [anon_sym_LPAREN] = ACTIONS(262), - [anon_sym_RPAREN] = ACTIONS(287), - [anon_sym_COMMA] = ACTIONS(287), + [anon_sym_LPAREN] = ACTIONS(571), + [anon_sym_RPAREN] = ACTIONS(293), + [anon_sym_COMMA] = ACTIONS(293), [anon_sym_STAR] = ACTIONS(260), - [anon_sym_print] = ACTIONS(568), - [anon_sym_GT_GT] = ACTIONS(287), - [anon_sym_COLON_EQ] = ACTIONS(570), + [anon_sym_print] = ACTIONS(576), + [anon_sym_GT_GT] = ACTIONS(293), + [anon_sym_COLON_EQ] = ACTIONS(578), [anon_sym_if] = ACTIONS(260), - [anon_sym_async] = ACTIONS(568), + [anon_sym_async] = ACTIONS(576), [anon_sym_in] = ACTIONS(260), - [anon_sym_match] = ACTIONS(568), - [anon_sym_PIPE] = ACTIONS(287), - [anon_sym_DASH] = ACTIONS(285), - [anon_sym_PLUS] = ACTIONS(285), - [anon_sym_LBRACK] = ACTIONS(277), - [anon_sym_LBRACE] = ACTIONS(279), - [anon_sym_STAR_STAR] = ACTIONS(287), - [anon_sym_EQ] = ACTIONS(608), - [anon_sym_exec] = ACTIONS(568), - [anon_sym_type] = ACTIONS(568), - [anon_sym_AT] = ACTIONS(287), + [anon_sym_match] = ACTIONS(576), + [anon_sym_PIPE] = ACTIONS(293), + [anon_sym_DASH] = ACTIONS(291), + [anon_sym_PLUS] = ACTIONS(291), + [anon_sym_LBRACK] = ACTIONS(584), + [anon_sym_LBRACE] = ACTIONS(283), + [anon_sym_STAR_STAR] = ACTIONS(293), + [anon_sym_EQ] = ACTIONS(620), + [anon_sym_exec] = ACTIONS(576), + [anon_sym_type] = ACTIONS(576), + [anon_sym_AT] = ACTIONS(293), [anon_sym_not] = ACTIONS(260), [anon_sym_and] = ACTIONS(260), [anon_sym_or] = ACTIONS(260), [anon_sym_SLASH] = ACTIONS(260), - [anon_sym_PERCENT] = ACTIONS(287), - [anon_sym_SLASH_SLASH] = ACTIONS(287), - [anon_sym_AMP] = ACTIONS(287), - [anon_sym_CARET] = ACTIONS(287), - [anon_sym_LT_LT] = ACTIONS(287), - [anon_sym_TILDE] = ACTIONS(285), + [anon_sym_PERCENT] = ACTIONS(293), + [anon_sym_SLASH_SLASH] = ACTIONS(293), + [anon_sym_AMP] = ACTIONS(293), + [anon_sym_CARET] = ACTIONS(293), + [anon_sym_LT_LT] = ACTIONS(293), + [anon_sym_TILDE] = ACTIONS(291), [anon_sym_LT] = ACTIONS(260), - [anon_sym_LT_EQ] = ACTIONS(287), - [anon_sym_EQ_EQ] = ACTIONS(287), - [anon_sym_BANG_EQ] = ACTIONS(287), - [anon_sym_GT_EQ] = ACTIONS(287), + [anon_sym_LT_EQ] = ACTIONS(293), + [anon_sym_EQ_EQ] = ACTIONS(293), + [anon_sym_BANG_EQ] = ACTIONS(293), + [anon_sym_GT_EQ] = ACTIONS(293), [anon_sym_GT] = ACTIONS(260), - [anon_sym_LT_GT] = ACTIONS(287), + [anon_sym_LT_GT] = ACTIONS(293), [anon_sym_is] = ACTIONS(260), - [sym_ellipsis] = ACTIONS(293), - [sym_integer] = ACTIONS(295), - [sym_float] = ACTIONS(293), - [anon_sym_await] = ACTIONS(576), - [sym_true] = ACTIONS(295), - [sym_false] = ACTIONS(295), - [sym_none] = ACTIONS(295), + [sym_ellipsis] = ACTIONS(299), + [sym_integer] = ACTIONS(301), + [sym_float] = ACTIONS(299), + [anon_sym_await] = ACTIONS(588), + [sym_true] = ACTIONS(301), + [sym_false] = ACTIONS(301), + [sym_none] = ACTIONS(301), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(299), + [sym__string_start] = ACTIONS(305), }, }; @@ -22716,30 +24302,30 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_await, ACTIONS(81), 1, sym__string_start, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(850), 1, + STATE(847), 1, sym_pattern, - STATE(857), 1, + STATE(855), 1, sym_pattern_list, - STATE(976), 1, + STATE(1004), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, sym_float, - STATE(414), 2, + STATE(431), 2, sym_attribute, sym_subscript, - STATE(1300), 2, + STATE(1283), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -22748,26 +24334,26 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(301), 5, + ACTIONS(307), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1353), 5, + STATE(1341), 5, sym_expression_list, sym_assignment, sym_augmented_assignment, sym__right_hand_side, sym_yield, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 14, + STATE(773), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -22807,30 +24393,30 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_await, ACTIONS(81), 1, sym__string_start, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(850), 1, + STATE(847), 1, sym_pattern, - STATE(857), 1, + STATE(855), 1, sym_pattern_list, - STATE(976), 1, + STATE(1004), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, sym_float, - STATE(414), 2, + STATE(431), 2, sym_attribute, sym_subscript, - STATE(1300), 2, + STATE(1283), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -22839,26 +24425,26 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(301), 5, + ACTIONS(307), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1346), 5, + STATE(1342), 5, sym_expression_list, sym_assignment, sym_augmented_assignment, sym__right_hand_side, sym_yield, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 14, + STATE(773), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -22898,30 +24484,30 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_await, ACTIONS(81), 1, sym__string_start, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(850), 1, + STATE(847), 1, sym_pattern, - STATE(857), 1, + STATE(855), 1, sym_pattern_list, - STATE(976), 1, + STATE(1004), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, sym_float, - STATE(414), 2, + STATE(431), 2, sym_attribute, sym_subscript, - STATE(1300), 2, + STATE(1283), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -22930,26 +24516,26 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(301), 5, + ACTIONS(307), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1293), 5, + STATE(1304), 5, sym_expression_list, sym_assignment, sym_augmented_assignment, sym__right_hand_side, sym_yield, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 14, + STATE(773), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -22971,61 +24557,61 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(610), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(622), 1, anon_sym_from, - STATE(569), 1, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(877), 1, + STATE(870), 1, sym_expression, - STATE(988), 1, + STATE(1000), 1, sym_expression_list, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1329), 2, + STATE(1284), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - ACTIONS(612), 7, + ACTIONS(624), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -23033,7 +24619,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_EQ, sym_type_conversion, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -23053,78 +24639,78 @@ static const uint16_t ts_small_parse_table[] = { [464] = 28, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(614), 1, + ACTIONS(630), 1, sym_identifier, - ACTIONS(616), 1, + ACTIONS(632), 1, anon_sym_LPAREN, - ACTIONS(618), 1, + ACTIONS(634), 1, anon_sym_RPAREN, - ACTIONS(620), 1, + ACTIONS(636), 1, anon_sym_STAR, - ACTIONS(624), 1, + ACTIONS(640), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(630), 1, + ACTIONS(646), 1, anon_sym_yield, - ACTIONS(632), 1, + ACTIONS(648), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(912), 1, + STATE(900), 1, sym_expression, - STATE(1112), 1, + STATE(1120), 1, sym_pattern, - STATE(1192), 1, + STATE(1156), 1, sym_yield, - STATE(1380), 1, + STATE(1395), 1, sym__patterns, - STATE(1389), 1, + STATE(1420), 1, sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(771), 2, + STATE(741), 2, sym_attribute, sym_subscript, - STATE(1065), 2, + STATE(1081), 2, sym_list_splat, sym_parenthesized_list_splat, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(622), 5, + ACTIONS(638), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -23139,80 +24725,81 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [581] = 27, + [581] = 28, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(614), 1, + ACTIONS(630), 1, sym_identifier, - ACTIONS(616), 1, + ACTIONS(632), 1, anon_sym_LPAREN, - ACTIONS(620), 1, + ACTIONS(636), 1, anon_sym_STAR, - ACTIONS(624), 1, + ACTIONS(640), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(630), 1, + ACTIONS(646), 1, anon_sym_yield, - ACTIONS(632), 1, + ACTIONS(648), 1, anon_sym_await, - ACTIONS(634), 1, - anon_sym_RBRACK, - STATE(569), 1, + ACTIONS(650), 1, + anon_sym_RPAREN, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(898), 1, + STATE(894), 1, sym_expression, - STATE(1112), 1, + STATE(1120), 1, sym_pattern, - STATE(1393), 1, + STATE(1242), 1, + sym_yield, + STATE(1378), 1, sym__collection_elements, - STATE(1406), 1, + STATE(1395), 1, sym__patterns, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(771), 2, + STATE(741), 2, sym_attribute, sym_subscript, - ACTIONS(582), 3, + STATE(1081), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - STATE(1065), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(622), 5, + ACTIONS(638), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -23227,58 +24814,58 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [696] = 21, + [698] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(285), 1, + ACTIONS(291), 1, anon_sym_TILDE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(636), 1, + ACTIONS(652), 1, sym_identifier, - ACTIONS(638), 1, + ACTIONS(654), 1, anon_sym_LPAREN, - ACTIONS(640), 1, + ACTIONS(656), 1, anon_sym_STAR, - ACTIONS(646), 1, + ACTIONS(662), 1, anon_sym_in, - ACTIONS(648), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(650), 1, + ACTIONS(666), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(834), 1, + STATE(840), 1, sym_pattern, - STATE(843), 1, + STATE(844), 1, sym_primary_expression, - ACTIONS(275), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(712), 2, + ACTIONS(582), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(722), 2, sym_attribute, sym_subscript, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(642), 5, + ACTIONS(658), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -23293,7 +24880,7 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - ACTIONS(644), 15, + ACTIONS(660), 15, anon_sym_COLON, anon_sym_EQ, anon_sym_PLUS_EQ, @@ -23309,58 +24896,82 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [799] = 21, + [801] = 29, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(285), 1, - anon_sym_TILDE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(636), 1, + ACTIONS(630), 1, sym_identifier, - ACTIONS(638), 1, + ACTIONS(632), 1, anon_sym_LPAREN, - ACTIONS(640), 1, + ACTIONS(636), 1, anon_sym_STAR, - ACTIONS(648), 1, + ACTIONS(640), 1, anon_sym_LBRACK, - ACTIONS(650), 1, + ACTIONS(642), 1, + anon_sym_not, + ACTIONS(644), 1, + anon_sym_lambda, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(648), 1, anon_sym_await, - ACTIONS(654), 1, - anon_sym_in, - STATE(569), 1, + ACTIONS(668), 1, + anon_sym_RPAREN, + STATE(565), 1, sym_string, - STATE(834), 1, - sym_pattern, - STATE(843), 1, + STATE(590), 1, sym_primary_expression, - ACTIONS(275), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(293), 2, + STATE(894), 1, + sym_expression, + STATE(1120), 1, + sym_pattern, + STATE(1222), 1, + sym_list_splat, + STATE(1223), 1, + sym_parenthesized_list_splat, + STATE(1242), 1, + sym_yield, + STATE(1378), 1, + sym__collection_elements, + STATE(1395), 1, + sym__patterns, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(712), 2, + STATE(741), 2, sym_attribute, sym_subscript, - STATE(837), 3, + ACTIONS(594), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(642), 5, + ACTIONS(638), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 14, + STATE(863), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -23375,96 +24986,80 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - ACTIONS(652), 15, - anon_sym_COLON, - anon_sym_EQ, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [902] = 27, + [920] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(614), 1, + ACTIONS(630), 1, sym_identifier, - ACTIONS(616), 1, + ACTIONS(632), 1, anon_sym_LPAREN, - ACTIONS(620), 1, + ACTIONS(636), 1, anon_sym_STAR, - ACTIONS(624), 1, + ACTIONS(640), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(630), 1, + ACTIONS(646), 1, anon_sym_yield, - ACTIONS(632), 1, + ACTIONS(648), 1, anon_sym_await, - ACTIONS(656), 1, + ACTIONS(670), 1, anon_sym_RBRACK, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, STATE(893), 1, sym_expression, - STATE(1112), 1, + STATE(1120), 1, sym_pattern, - STATE(1406), 1, + STATE(1417), 1, sym__patterns, - STATE(1413), 1, + STATE(1443), 1, sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(771), 2, + STATE(741), 2, sym_attribute, sym_subscript, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - STATE(1065), 3, + STATE(1081), 3, sym_list_splat, sym_parenthesized_list_splat, sym_yield, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(622), 5, + ACTIONS(638), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -23479,82 +25074,80 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [1017] = 29, + [1035] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(614), 1, + ACTIONS(630), 1, sym_identifier, - ACTIONS(616), 1, + ACTIONS(632), 1, anon_sym_LPAREN, - ACTIONS(620), 1, + ACTIONS(636), 1, anon_sym_STAR, - ACTIONS(624), 1, + ACTIONS(640), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(630), 1, + ACTIONS(646), 1, anon_sym_yield, - ACTIONS(632), 1, + ACTIONS(648), 1, anon_sym_await, - ACTIONS(658), 1, - anon_sym_RPAREN, - STATE(569), 1, + ACTIONS(672), 1, + anon_sym_RBRACK, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(912), 1, + STATE(910), 1, sym_expression, - STATE(1112), 1, + STATE(1120), 1, sym_pattern, - STATE(1192), 1, - sym_yield, - STATE(1243), 1, - sym_parenthesized_list_splat, - STATE(1244), 1, - sym_list_splat, - STATE(1380), 1, + STATE(1417), 1, sym__patterns, - STATE(1389), 1, + STATE(1426), 1, sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(771), 2, + STATE(741), 2, sym_attribute, sym_subscript, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(295), 4, + STATE(1081), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(622), 5, + ACTIONS(638), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -23569,80 +25162,80 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [1136] = 27, + [1150] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(614), 1, + ACTIONS(630), 1, sym_identifier, - ACTIONS(616), 1, + ACTIONS(632), 1, anon_sym_LPAREN, - ACTIONS(620), 1, + ACTIONS(636), 1, anon_sym_STAR, - ACTIONS(624), 1, + ACTIONS(640), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(630), 1, + ACTIONS(646), 1, anon_sym_yield, - ACTIONS(632), 1, + ACTIONS(648), 1, anon_sym_await, - ACTIONS(660), 1, + ACTIONS(674), 1, anon_sym_RBRACK, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(898), 1, + STATE(910), 1, sym_expression, - STATE(1112), 1, + STATE(1120), 1, sym_pattern, - STATE(1393), 1, - sym__collection_elements, - STATE(1406), 1, + STATE(1417), 1, sym__patterns, - ACTIONS(293), 2, + STATE(1426), 1, + sym__collection_elements, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(771), 2, + STATE(741), 2, sym_attribute, sym_subscript, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - STATE(1065), 3, + STATE(1081), 3, sym_list_splat, sym_parenthesized_list_splat, sym_yield, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(622), 5, + ACTIONS(638), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -23657,81 +25250,58 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [1251] = 28, + [1265] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(291), 1, + anon_sym_TILDE, + ACTIONS(305), 1, sym__string_start, - ACTIONS(614), 1, + ACTIONS(652), 1, sym_identifier, - ACTIONS(616), 1, + ACTIONS(654), 1, anon_sym_LPAREN, - ACTIONS(620), 1, + ACTIONS(656), 1, anon_sym_STAR, - ACTIONS(624), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(626), 1, - anon_sym_not, - ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(632), 1, + ACTIONS(666), 1, anon_sym_await, - ACTIONS(662), 1, - anon_sym_RPAREN, - STATE(569), 1, + ACTIONS(678), 1, + anon_sym_in, + STATE(565), 1, sym_string, - STATE(576), 1, - sym_primary_expression, - STATE(905), 1, - sym_expression, - STATE(1112), 1, + STATE(840), 1, sym_pattern, - STATE(1216), 1, - sym_yield, - STATE(1370), 1, - sym__collection_elements, - STATE(1380), 1, - sym__patterns, - ACTIONS(293), 2, + STATE(844), 1, + sym_primary_expression, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(771), 2, - sym_attribute, - sym_subscript, - STATE(1065), 2, - sym_list_splat, - sym_parenthesized_list_splat, - ACTIONS(582), 3, + ACTIONS(582), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_TILDE, - STATE(837), 3, + STATE(722), 2, + sym_attribute, + sym_subscript, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(622), 5, + ACTIONS(658), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -23746,77 +25316,88 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [1368] = 27, + ACTIONS(676), 15, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [1368] = 22, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(279), 1, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, ACTIONS(584), 1, anon_sym_LBRACK, ACTIONS(626), 1, - anon_sym_not, + anon_sym_STAR, ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(664), 1, - sym_identifier, - ACTIONS(666), 1, - anon_sym_LPAREN, - ACTIONS(668), 1, - anon_sym_COMMA, - ACTIONS(672), 1, - anon_sym_RBRACE, - ACTIONS(674), 1, - anon_sym_await, - STATE(569), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(873), 1, + STATE(902), 1, sym_expression, - STATE(971), 1, - sym_pair, - STATE(1199), 1, - sym_dictionary_splat, - STATE(1401), 1, - sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + STATE(1005), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1065), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + ACTIONS(680), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -23833,64 +25414,64 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [1482] = 22, + [1472] = 22, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(897), 1, + STATE(902), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(998), 2, + STATE(1005), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - ACTIONS(676), 7, + ACTIONS(680), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -23898,7 +25479,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_EQ, sym_type_conversion, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -23915,77 +25496,72 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [1586] = 27, + [1576] = 22, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(279), 1, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, ACTIONS(584), 1, anon_sym_LBRACK, ACTIONS(626), 1, - anon_sym_not, + anon_sym_STAR, ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(664), 1, - sym_identifier, - ACTIONS(666), 1, - anon_sym_LPAREN, - ACTIONS(674), 1, - anon_sym_await, - ACTIONS(678), 1, - anon_sym_COMMA, - ACTIONS(680), 1, - anon_sym_RBRACE, - STATE(569), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(869), 1, + STATE(902), 1, sym_expression, - STATE(974), 1, - sym_pair, - STATE(1207), 1, - sym_dictionary_splat, - STATE(1460), 1, - sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + STATE(1005), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1065), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + ACTIONS(682), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -24002,72 +25578,77 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [1700] = 22, + [1680] = 27, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(684), 1, + sym_identifier, + ACTIONS(686), 1, + anon_sym_LPAREN, + ACTIONS(688), 1, + anon_sym_COMMA, + ACTIONS(692), 1, + anon_sym_RBRACE, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(897), 1, + STATE(868), 1, sym_expression, - ACTIONS(293), 2, + STATE(996), 1, + sym_pair, + STATE(1261), 1, + sym_dictionary_splat, + STATE(1401), 1, + sym__collection_elements, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(998), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + STATE(1081), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - ACTIONS(676), 7, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_EQ, - sym_type_conversion, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -24084,72 +25665,77 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [1804] = 22, + [1794] = 27, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(684), 1, + sym_identifier, + ACTIONS(686), 1, + anon_sym_LPAREN, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, + ACTIONS(696), 1, + anon_sym_COMMA, + ACTIONS(698), 1, + anon_sym_RBRACE, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(897), 1, + STATE(867), 1, sym_expression, - ACTIONS(293), 2, + STATE(1010), 1, + sym_pair, + STATE(1224), 1, + sym_dictionary_splat, + STATE(1355), 1, + sym__collection_elements, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(998), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + STATE(1081), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - ACTIONS(682), 7, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_EQ, - sym_type_conversion, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -24171,72 +25757,72 @@ static const uint16_t ts_small_parse_table[] = { sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(630), 1, + ACTIONS(646), 1, anon_sym_yield, - ACTIONS(664), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(666), 1, + ACTIONS(686), 1, anon_sym_LPAREN, - ACTIONS(674), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(684), 1, + ACTIONS(700), 1, anon_sym_COMMA, - ACTIONS(686), 1, + ACTIONS(702), 1, anon_sym_RBRACE, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(874), 1, + STATE(888), 1, sym_expression, - STATE(986), 1, + STATE(990), 1, sym_pair, - STATE(1178), 1, + STATE(1247), 1, sym_dictionary_splat, - STATE(1363), 1, + STATE(1368), 1, sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1065), 3, + STATE(1081), 3, sym_list_splat, sym_parenthesized_list_splat, sym_yield, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -24253,69 +25839,72 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [2022] = 22, + [2022] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(630), 1, + ACTIONS(646), 1, anon_sym_yield, - ACTIONS(688), 1, + ACTIONS(684), 1, + sym_identifier, + ACTIONS(686), 1, anon_sym_LPAREN, - ACTIONS(692), 1, + ACTIONS(694), 1, + anon_sym_await, + ACTIONS(704), 1, + anon_sym_RPAREN, + ACTIONS(706), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(1009), 1, + STATE(884), 1, sym_expression, - ACTIONS(293), 2, + STATE(1179), 1, + sym_with_item, + STATE(1221), 1, + sym_yield, + STATE(1456), 1, + sym__collection_elements, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + STATE(1081), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(690), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - STATE(1133), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -24332,71 +25921,71 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [2123] = 24, + [2129] = 24, ACTIONS(3), 1, sym_comment, + ACTIONS(51), 1, + anon_sym_LBRACE, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(584), 1, - anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(69), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(666), 1, - anon_sym_LPAREN, - ACTIONS(694), 1, + ACTIONS(81), 1, + sym__string_start, + ACTIONS(325), 1, sym_identifier, - ACTIONS(696), 1, - anon_sym_RPAREN, - ACTIONS(698), 1, - anon_sym_COMMA, - ACTIONS(702), 1, + ACTIONS(331), 1, anon_sym_await, - STATE(569), 1, - sym_string, - STATE(576), 1, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(708), 1, + anon_sym_from, + STATE(689), 1, sym_primary_expression, - STATE(904), 1, + STATE(693), 1, + sym_string, + STATE(956), 1, sym_expression, - STATE(1225), 1, - sym_parenthesized_list_splat, - ACTIONS(293), 2, + STATE(1253), 1, + sym_expression_list, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(710), 2, + sym__newline, + sym__semicolon, + STATE(1283), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1218), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(295), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(700), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -24413,72 +26002,71 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [2228] = 25, + [2234] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(53), 1, + anon_sym_STAR_STAR, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(305), 1, sym__string_start, ACTIONS(584), 1, anon_sym_LBRACK, ACTIONS(626), 1, - anon_sym_not, + anon_sym_STAR, ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(664), 1, + anon_sym_not, + ACTIONS(712), 1, sym_identifier, - ACTIONS(666), 1, + ACTIONS(714), 1, anon_sym_LPAREN, - ACTIONS(674), 1, - anon_sym_await, - ACTIONS(692), 1, - anon_sym_STAR, - ACTIONS(704), 1, + ACTIONS(716), 1, anon_sym_RPAREN, - STATE(569), 1, + ACTIONS(718), 1, + anon_sym_COMMA, + ACTIONS(722), 1, + anon_sym_await, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(875), 1, + STATE(1026), 1, sym_expression, - STATE(1177), 1, - sym_yield, - STATE(1185), 1, - sym_with_item, - STATE(1359), 1, - sym__collection_elements, - ACTIONS(293), 2, + STATE(1276), 1, + sym_parenthesized_list_splat, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1065), 2, - sym_list_splat, - sym_parenthesized_list_splat, - ACTIONS(582), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + STATE(1275), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -24495,70 +26083,71 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [2335] = 23, + [2339] = 24, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(686), 1, + anon_sym_LPAREN, + ACTIONS(716), 1, + anon_sym_RPAREN, + ACTIONS(718), 1, + anon_sym_COMMA, + ACTIONS(724), 1, + sym_identifier, + ACTIONS(728), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(630), 1, - anon_sym_yield, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(918), 1, + STATE(895), 1, sym_expression, - ACTIONS(293), 2, + STATE(1276), 1, + sym_parenthesized_list_splat, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1329), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1074), 3, - sym_expression_list, - sym_yield, - sym__f_expression, - ACTIONS(295), 4, + STATE(1275), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(726), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -24575,69 +26164,70 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [2438] = 22, + [2444] = 23, ACTIONS(3), 1, sym_comment, + ACTIONS(53), 1, + anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(688), 1, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(692), 1, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, anon_sym_STAR, - STATE(569), 1, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(646), 1, + anon_sym_yield, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1009), 1, + STATE(918), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + STATE(1284), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(706), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - STATE(1133), 3, - sym_list_splat, - sym_parenthesized_list_splat, + STATE(1067), 3, + sym_expression_list, sym_yield, - ACTIONS(295), 4, + sym__f_expression, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -24654,69 +26244,71 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [2539] = 22, + [2547] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, + ACTIONS(53), 1, + anon_sym_STAR_STAR, ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(688), 1, + ACTIONS(686), 1, anon_sym_LPAREN, - ACTIONS(692), 1, - anon_sym_STAR, - STATE(569), 1, + ACTIONS(724), 1, + sym_identifier, + ACTIONS(728), 1, + anon_sym_await, + ACTIONS(730), 1, + anon_sym_RPAREN, + ACTIONS(732), 1, + anon_sym_COMMA, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(1009), 1, + STATE(906), 1, sym_expression, - ACTIONS(293), 2, + STATE(1234), 1, + sym_parenthesized_list_splat, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(690), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - STATE(1133), 3, + STATE(1233), 3, sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(295), 4, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(726), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -24733,71 +26325,71 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [2640] = 24, + [2652] = 24, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(666), 1, + ACTIONS(686), 1, anon_sym_LPAREN, - ACTIONS(694), 1, + ACTIONS(724), 1, sym_identifier, - ACTIONS(702), 1, + ACTIONS(728), 1, anon_sym_await, - ACTIONS(708), 1, + ACTIONS(734), 1, anon_sym_RPAREN, - ACTIONS(710), 1, + ACTIONS(736), 1, anon_sym_COMMA, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(900), 1, + STATE(901), 1, sym_expression, - STATE(1230), 1, + STATE(1202), 1, sym_parenthesized_list_splat, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1229), 3, + STATE(1159), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(700), 5, + ACTIONS(726), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -24814,71 +26406,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [2745] = 24, + [2757] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, + ACTIONS(258), 1, + sym_identifier, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(299), 1, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, - ACTIONS(688), 1, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(706), 1, + anon_sym_STAR, + ACTIONS(714), 1, anon_sym_LPAREN, - ACTIONS(708), 1, - anon_sym_RPAREN, - ACTIONS(710), 1, - anon_sym_COMMA, - ACTIONS(712), 1, - sym_identifier, - ACTIONS(716), 1, - anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1031), 1, + STATE(985), 1, sym_expression, - STATE(1230), 1, - sym_parenthesized_list_splat, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1229), 3, + ACTIONS(738), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + STATE(1093), 3, sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(295), 4, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -24895,70 +26485,70 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [2850] = 23, + [2858] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(630), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(646), 1, anon_sym_yield, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, STATE(918), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1329), 2, + STATE(1284), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1052), 3, + STATE(1060), 3, sym_expression_list, sym_yield, sym__f_expression, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -24975,71 +26565,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [2953] = 24, + [2961] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(279), 1, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(626), 1, - anon_sym_not, ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(666), 1, + anon_sym_not, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(706), 1, + anon_sym_STAR, + ACTIONS(714), 1, anon_sym_LPAREN, - ACTIONS(694), 1, - sym_identifier, - ACTIONS(702), 1, - anon_sym_await, - ACTIONS(718), 1, - anon_sym_RPAREN, - ACTIONS(720), 1, - anon_sym_COMMA, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(903), 1, + STATE(985), 1, sym_expression, - STATE(1220), 1, - sym_parenthesized_list_splat, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1219), 3, + ACTIONS(740), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + STATE(1093), 3, sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(295), 4, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(700), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25056,71 +26644,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [3058] = 24, + [3062] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, - ACTIONS(267), 1, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(706), 1, anon_sym_STAR, - ACTIONS(531), 1, - sym_identifier, - ACTIONS(537), 1, - anon_sym_await, - ACTIONS(555), 1, + ACTIONS(714), 1, anon_sym_LPAREN, - ACTIONS(561), 1, - anon_sym_LBRACK, - ACTIONS(722), 1, - anon_sym_from, - STATE(692), 1, - sym_primary_expression, - STATE(693), 1, + STATE(565), 1, sym_string, - STATE(975), 1, + STATE(595), 1, + sym_primary_expression, + STATE(985), 1, sym_expression, - STATE(1291), 1, - sym_expression_list, - ACTIONS(75), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(612), 2, - sym__newline, - sym__semicolon, - STATE(1300), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(47), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(740), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + STATE(1093), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25150,33 +26736,33 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - ACTIONS(724), 1, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(742), 1, anon_sym_from, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(948), 1, + STATE(1008), 1, sym_expression, - STATE(1167), 1, + STATE(1315), 1, sym_expression_list, ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(726), 2, + ACTIONS(624), 2, sym__newline, sym__semicolon, - STATE(1300), 2, + STATE(1283), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(47), 3, @@ -25188,20 +26774,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25218,69 +26804,67 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [3268] = 23, + [3268] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(299), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, sym__string_start, - ACTIONS(688), 1, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(712), 1, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(642), 1, + anon_sym_not, + ACTIONS(684), 1, sym_identifier, - ACTIONS(716), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(728), 1, - anon_sym_RPAREN, - STATE(569), 1, + ACTIONS(748), 1, + anon_sym_lambda, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(1066), 1, + STATE(920), 1, sym_expression, - STATE(1286), 1, - sym_parenthesized_list_splat, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + STATE(986), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(295), 4, + ACTIONS(744), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + ACTIONS(746), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(690), 4, anon_sym_print, - anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25297,69 +26881,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [3370] = 23, + [3366] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(688), 1, - anon_sym_LPAREN, - ACTIONS(712), 1, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(684), 1, sym_identifier, - ACTIONS(716), 1, + ACTIONS(686), 1, + anon_sym_LPAREN, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(730), 1, - anon_sym_RPAREN, - STATE(569), 1, + ACTIONS(706), 1, + anon_sym_STAR, + ACTIONS(750), 1, + anon_sym_RBRACK, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(1066), 1, + STATE(911), 1, sym_expression, - STATE(1286), 1, - sym_parenthesized_list_splat, - ACTIONS(293), 2, + STATE(1462), 1, + sym__collection_elements, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, + STATE(1081), 3, sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(295), 4, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25376,69 +26960,70 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [3472] = 23, + [3468] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(688), 1, - anon_sym_LPAREN, - ACTIONS(712), 1, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(684), 1, sym_identifier, - ACTIONS(716), 1, + ACTIONS(686), 1, + anon_sym_LPAREN, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(732), 1, + ACTIONS(706), 1, + anon_sym_STAR, + ACTIONS(752), 1, anon_sym_RPAREN, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(1066), 1, + STATE(900), 1, sym_expression, - STATE(1286), 1, - sym_parenthesized_list_splat, - ACTIONS(293), 2, + STATE(1156), 1, + sym_yield, + STATE(1420), 1, + sym__collection_elements, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + STATE(1081), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25455,67 +27040,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [3574] = 21, + [3572] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(664), 1, + ACTIONS(644), 1, + anon_sym_lambda, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(684), 1, sym_identifier, - ACTIONS(674), 1, + ACTIONS(686), 1, + anon_sym_LPAREN, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(738), 1, - anon_sym_lambda, - STATE(569), 1, + ACTIONS(706), 1, + anon_sym_STAR, + ACTIONS(754), 1, + anon_sym_RBRACK, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(919), 1, + STATE(893), 1, sym_expression, - ACTIONS(293), 2, + STATE(1443), 1, + sym__collection_elements, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(987), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(734), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - ACTIONS(736), 3, - anon_sym_if, - anon_sym_async, - anon_sym_for, - ACTIONS(295), 4, + STATE(1081), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 4, + ACTIONS(690), 5, anon_sym_print, + anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25532,70 +27119,71 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [3672] = 24, + [3674] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(630), 1, + ACTIONS(646), 1, anon_sym_yield, - ACTIONS(664), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(666), 1, + ACTIONS(686), 1, anon_sym_LPAREN, - ACTIONS(674), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(692), 1, - anon_sym_STAR, ACTIONS(704), 1, anon_sym_RPAREN, - STATE(569), 1, + ACTIONS(706), 1, + anon_sym_STAR, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(896), 1, + STATE(894), 1, sym_expression, - STATE(1177), 1, + STATE(1222), 1, + sym_list_splat, + STATE(1223), 1, + sym_parenthesized_list_splat, + STATE(1242), 1, sym_yield, - STATE(1359), 1, + STATE(1378), 1, sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1065), 2, - sym_list_splat, - sym_parenthesized_list_splat, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25612,69 +27200,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [3776] = 23, + [3780] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(69), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(299), 1, + ACTIONS(81), 1, sym__string_start, - ACTIONS(688), 1, - anon_sym_LPAREN, - ACTIONS(712), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(716), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(740), 1, - anon_sym_RPAREN, - STATE(569), 1, - sym_string, - STATE(589), 1, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_from, + ACTIONS(758), 1, + anon_sym_STAR, + ACTIONS(760), 1, + anon_sym_STAR_STAR, + STATE(689), 1, sym_primary_expression, - STATE(1066), 1, + STATE(693), 1, + sym_string, + STATE(998), 1, sym_expression, - STATE(1286), 1, - sym_parenthesized_list_splat, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(680), 2, + sym__newline, + sym__semicolon, + STATE(1128), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(295), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25691,70 +27279,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [3878] = 24, + [3882] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(584), 1, - anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(69), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(664), 1, + ACTIONS(81), 1, + sym__string_start, + ACTIONS(325), 1, sym_identifier, - ACTIONS(666), 1, - anon_sym_LPAREN, - ACTIONS(674), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(692), 1, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_from, + ACTIONS(758), 1, anon_sym_STAR, - ACTIONS(704), 1, - anon_sym_RPAREN, - STATE(569), 1, - sym_string, - STATE(576), 1, + ACTIONS(760), 1, + anon_sym_STAR_STAR, + STATE(689), 1, sym_primary_expression, - STATE(912), 1, + STATE(693), 1, + sym_string, + STATE(998), 1, sym_expression, - STATE(1192), 1, - sym_yield, - STATE(1389), 1, - sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - STATE(1065), 2, + ACTIONS(680), 2, + sym__newline, + sym__semicolon, + STATE(1128), 2, sym_list_splat, - sym_parenthesized_list_splat, - ACTIONS(582), 3, + sym_dictionary_splat, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25771,70 +27358,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [3982] = 24, + [3984] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(53), 1, + anon_sym_STAR_STAR, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(305), 1, sym__string_start, ACTIONS(584), 1, anon_sym_LBRACK, ACTIONS(626), 1, - anon_sym_not, + anon_sym_STAR, ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(664), 1, + anon_sym_not, + ACTIONS(712), 1, sym_identifier, - ACTIONS(666), 1, + ACTIONS(714), 1, anon_sym_LPAREN, - ACTIONS(674), 1, + ACTIONS(722), 1, anon_sym_await, - ACTIONS(692), 1, - anon_sym_STAR, - ACTIONS(742), 1, + ACTIONS(762), 1, anon_sym_RPAREN, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(905), 1, + STATE(1073), 1, sym_expression, - STATE(1216), 1, - sym_yield, - STATE(1370), 1, - sym__collection_elements, - ACTIONS(293), 2, + STATE(1318), 1, + sym_parenthesized_list_splat, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1065), 2, - sym_list_splat, - sym_parenthesized_list_splat, - ACTIONS(582), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + STATE(1314), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25856,64 +27442,64 @@ static const uint16_t ts_small_parse_table[] = { sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(688), 1, - anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, ACTIONS(712), 1, sym_identifier, - ACTIONS(716), 1, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(722), 1, anon_sym_await, - ACTIONS(744), 1, + ACTIONS(764), 1, anon_sym_RPAREN, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1073), 1, sym_expression, - STATE(1286), 1, + STATE(1318), 1, sym_parenthesized_list_splat, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, + STATE(1314), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25933,66 +27519,66 @@ static const uint16_t ts_small_parse_table[] = { [4188] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(53), 1, + anon_sym_STAR_STAR, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(305), 1, sym__string_start, ACTIONS(584), 1, anon_sym_LBRACK, ACTIONS(626), 1, - anon_sym_not, + anon_sym_STAR, ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(664), 1, + anon_sym_not, + ACTIONS(712), 1, sym_identifier, - ACTIONS(666), 1, + ACTIONS(714), 1, anon_sym_LPAREN, - ACTIONS(674), 1, + ACTIONS(722), 1, anon_sym_await, - ACTIONS(692), 1, - anon_sym_STAR, - ACTIONS(746), 1, - anon_sym_RBRACK, - STATE(569), 1, + ACTIONS(766), 1, + anon_sym_RPAREN, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(893), 1, + STATE(1073), 1, sym_expression, - STATE(1413), 1, - sym__collection_elements, - ACTIONS(293), 2, + STATE(1318), 1, + sym_parenthesized_list_splat, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1065), 3, + STATE(1314), 3, sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(295), 4, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26014,64 +27600,64 @@ static const uint16_t ts_small_parse_table[] = { sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(688), 1, - anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, ACTIONS(712), 1, sym_identifier, - ACTIONS(716), 1, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(722), 1, anon_sym_await, - ACTIONS(748), 1, + ACTIONS(768), 1, anon_sym_RPAREN, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1073), 1, sym_expression, - STATE(1286), 1, + STATE(1318), 1, sym_parenthesized_list_splat, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, + STATE(1314), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26091,66 +27677,66 @@ static const uint16_t ts_small_parse_table[] = { [4392] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, + anon_sym_STAR_STAR, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(531), 1, - sym_identifier, - ACTIONS(537), 1, - anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(750), 1, - anon_sym_from, - ACTIONS(752), 1, + ACTIONS(626), 1, anon_sym_STAR, - ACTIONS(754), 1, - anon_sym_STAR_STAR, - STATE(692), 1, - sym_primary_expression, - STATE(693), 1, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(712), 1, + sym_identifier, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(722), 1, + anon_sym_await, + ACTIONS(770), 1, + anon_sym_RPAREN, + STATE(565), 1, sym_string, - STATE(972), 1, + STATE(595), 1, + sym_primary_expression, + STATE(1073), 1, sym_expression, - ACTIONS(75), 2, + STATE(1318), 1, + sym_parenthesized_list_splat, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(676), 2, - sym__newline, - sym__semicolon, - STATE(1088), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(47), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + STATE(1314), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26167,71 +27753,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [4494] = 25, + [4494] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(53), 1, + anon_sym_STAR_STAR, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(305), 1, sym__string_start, ACTIONS(584), 1, anon_sym_LBRACK, ACTIONS(626), 1, - anon_sym_not, + anon_sym_STAR, ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(664), 1, + anon_sym_not, + ACTIONS(712), 1, sym_identifier, - ACTIONS(666), 1, + ACTIONS(714), 1, anon_sym_LPAREN, - ACTIONS(674), 1, + ACTIONS(722), 1, anon_sym_await, - ACTIONS(692), 1, - anon_sym_STAR, - ACTIONS(704), 1, + ACTIONS(772), 1, anon_sym_RPAREN, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(912), 1, + STATE(1073), 1, sym_expression, - STATE(1192), 1, - sym_yield, - STATE(1243), 1, + STATE(1318), 1, sym_parenthesized_list_splat, - STATE(1244), 1, - sym_list_splat, - STATE(1389), 1, - sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + STATE(1314), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26248,44 +27832,202 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [4600] = 23, + [4596] = 23, + ACTIONS(3), 1, + sym_comment, + ACTIONS(53), 1, + anon_sym_STAR_STAR, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(712), 1, + sym_identifier, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(722), 1, + anon_sym_await, + ACTIONS(774), 1, + anon_sym_RPAREN, + STATE(565), 1, + sym_string, + STATE(595), 1, + sym_primary_expression, + STATE(1073), 1, + sym_expression, + STATE(1318), 1, + sym_parenthesized_list_splat, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1314), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(720), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(863), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [4698] = 23, + ACTIONS(3), 1, + sym_comment, + ACTIONS(53), 1, + anon_sym_STAR_STAR, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(712), 1, + sym_identifier, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(722), 1, + anon_sym_await, + ACTIONS(776), 1, + anon_sym_RPAREN, + STATE(565), 1, + sym_string, + STATE(595), 1, + sym_primary_expression, + STATE(1073), 1, + sym_expression, + STATE(1318), 1, + sym_parenthesized_list_splat, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1314), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(720), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(863), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [4800] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, anon_sym_LBRACE, + ACTIONS(53), 1, + anon_sym_STAR_STAR, ACTIONS(69), 1, anon_sym_not, ACTIONS(71), 1, anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - ACTIONS(752), 1, + ACTIONS(626), 1, anon_sym_STAR, - ACTIONS(754), 1, - anon_sym_STAR_STAR, - ACTIONS(756), 1, - anon_sym_from, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(972), 1, + STATE(994), 1, sym_expression, + STATE(1298), 1, + sym_expression_list, ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(682), 2, + ACTIONS(778), 2, sym__newline, sym__semicolon, - STATE(1088), 2, + STATE(1283), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(47), 3, @@ -26297,20 +28039,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26327,69 +28069,67 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [4702] = 23, + [4902] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(584), 1, + ACTIONS(590), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(664), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(666), 1, - anon_sym_LPAREN, - ACTIONS(674), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(692), 1, - anon_sym_STAR, - ACTIONS(758), 1, - anon_sym_RBRACK, - STATE(569), 1, + ACTIONS(748), 1, + anon_sym_lambda, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(898), 1, + STATE(920), 1, sym_expression, - STATE(1393), 1, - sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + STATE(986), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1065), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(295), 4, + ACTIONS(780), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + ACTIONS(782), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(690), 4, anon_sym_print, - anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26406,69 +28146,71 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [4804] = 23, + [5000] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(630), 1, + ACTIONS(646), 1, anon_sym_yield, - ACTIONS(664), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(666), 1, + ACTIONS(686), 1, anon_sym_LPAREN, - ACTIONS(674), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(692), 1, + ACTIONS(706), 1, anon_sym_STAR, - ACTIONS(758), 1, - anon_sym_RBRACK, - STATE(569), 1, + ACTIONS(784), 1, + anon_sym_RPAREN, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(911), 1, + STATE(894), 1, sym_expression, - STATE(1361), 1, + STATE(1222), 1, + sym_list_splat, + STATE(1223), 1, + sym_parenthesized_list_splat, + STATE(1242), 1, + sym_yield, + STATE(1378), 1, sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1065), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26485,70 +28227,70 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [4906] = 24, + [5106] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(630), 1, + ACTIONS(646), 1, anon_sym_yield, - ACTIONS(664), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(666), 1, + ACTIONS(686), 1, anon_sym_LPAREN, - ACTIONS(674), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(692), 1, - anon_sym_STAR, - ACTIONS(760), 1, + ACTIONS(704), 1, anon_sym_RPAREN, - STATE(569), 1, + ACTIONS(706), 1, + anon_sym_STAR, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(912), 1, + STATE(894), 1, sym_expression, - STATE(1192), 1, + STATE(1242), 1, sym_yield, - STATE(1389), 1, + STATE(1378), 1, sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1065), 2, + STATE(1081), 2, sym_list_splat, sym_parenthesized_list_splat, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26565,69 +28307,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [5010] = 23, + [5210] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(688), 1, - anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, ACTIONS(712), 1, sym_identifier, - ACTIONS(716), 1, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(722), 1, anon_sym_await, - ACTIONS(762), 1, + ACTIONS(786), 1, anon_sym_RPAREN, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1073), 1, sym_expression, - STATE(1286), 1, + STATE(1318), 1, sym_parenthesized_list_splat, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, + STATE(1314), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26644,69 +28386,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [5112] = 23, + [5312] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(688), 1, - anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, ACTIONS(712), 1, sym_identifier, - ACTIONS(716), 1, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(722), 1, anon_sym_await, - ACTIONS(764), 1, + ACTIONS(788), 1, anon_sym_RPAREN, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1073), 1, sym_expression, - STATE(1286), 1, + STATE(1318), 1, sym_parenthesized_list_splat, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, + STATE(1314), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26723,69 +28465,67 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [5214] = 23, + [5414] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(584), 1, + ACTIONS(590), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(664), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(666), 1, - anon_sym_LPAREN, - ACTIONS(674), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(692), 1, - anon_sym_STAR, - ACTIONS(766), 1, - anon_sym_RBRACK, - STATE(569), 1, + ACTIONS(748), 1, + anon_sym_lambda, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(898), 1, + STATE(920), 1, sym_expression, - STATE(1393), 1, - sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + STATE(986), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1065), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(295), 4, + ACTIONS(790), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + ACTIONS(792), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(690), 4, anon_sym_print, - anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26802,71 +28542,70 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [5316] = 25, + [5512] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(630), 1, + ACTIONS(646), 1, anon_sym_yield, - ACTIONS(664), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(666), 1, + ACTIONS(686), 1, anon_sym_LPAREN, - ACTIONS(674), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(692), 1, + ACTIONS(706), 1, anon_sym_STAR, - ACTIONS(760), 1, + ACTIONS(784), 1, anon_sym_RPAREN, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(912), 1, + STATE(894), 1, sym_expression, - STATE(1192), 1, + STATE(1242), 1, sym_yield, - STATE(1243), 1, - sym_parenthesized_list_splat, - STATE(1244), 1, - sym_list_splat, - STATE(1389), 1, + STATE(1378), 1, sym__collection_elements, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + STATE(1081), 2, + sym_list_splat, + sym_parenthesized_list_splat, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26883,69 +28622,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [5422] = 23, + [5616] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(688), 1, - anon_sym_LPAREN, - ACTIONS(712), 1, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(684), 1, sym_identifier, - ACTIONS(716), 1, + ACTIONS(686), 1, + anon_sym_LPAREN, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(768), 1, - anon_sym_RPAREN, - STATE(569), 1, + ACTIONS(706), 1, + anon_sym_STAR, + ACTIONS(794), 1, + anon_sym_RBRACK, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(1066), 1, + STATE(910), 1, sym_expression, - STATE(1286), 1, - sym_parenthesized_list_splat, - ACTIONS(293), 2, + STATE(1426), 1, + sym__collection_elements, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, + STATE(1081), 3, sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(295), 4, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26962,44 +28701,44 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [5524] = 23, + [5718] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(53), 1, - anon_sym_STAR_STAR, ACTIONS(69), 1, anon_sym_not, ACTIONS(71), 1, anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + ACTIONS(758), 1, + anon_sym_STAR, + ACTIONS(760), 1, + anon_sym_STAR_STAR, + ACTIONS(796), 1, + anon_sym_from, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(1010), 1, + STATE(998), 1, sym_expression, - STATE(1341), 1, - sym_expression_list, ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(770), 2, + ACTIONS(682), 2, sym__newline, sym__semicolon, - STATE(1300), 2, + STATE(1128), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(47), 3, @@ -27011,20 +28750,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27041,69 +28780,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [5626] = 23, + [5820] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(688), 1, - anon_sym_LPAREN, - ACTIONS(712), 1, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(684), 1, sym_identifier, - ACTIONS(716), 1, + ACTIONS(686), 1, + anon_sym_LPAREN, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(772), 1, - anon_sym_RPAREN, - STATE(569), 1, + ACTIONS(706), 1, + anon_sym_STAR, + ACTIONS(750), 1, + anon_sym_RBRACK, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(1066), 1, + STATE(910), 1, sym_expression, - STATE(1286), 1, - sym_parenthesized_list_splat, - ACTIONS(293), 2, + STATE(1426), 1, + sym__collection_elements, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, + STATE(1081), 3, sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(295), 4, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27120,69 +28859,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [5728] = 23, + [5922] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(688), 1, - anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, ACTIONS(712), 1, sym_identifier, - ACTIONS(716), 1, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(722), 1, anon_sym_await, - ACTIONS(774), 1, + ACTIONS(798), 1, anon_sym_RPAREN, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1073), 1, sym_expression, - STATE(1286), 1, + STATE(1318), 1, sym_parenthesized_list_splat, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, + STATE(1314), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27199,69 +28938,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [5830] = 23, + [6024] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(688), 1, - anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, ACTIONS(712), 1, sym_identifier, - ACTIONS(716), 1, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(722), 1, anon_sym_await, - ACTIONS(776), 1, + ACTIONS(800), 1, anon_sym_RPAREN, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1073), 1, sym_expression, - STATE(1286), 1, + STATE(1318), 1, sym_parenthesized_list_splat, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, + STATE(1314), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27278,67 +29017,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [5932] = 21, + [6126] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(53), 1, + anon_sym_STAR_STAR, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, ACTIONS(584), 1, anon_sym_LBRACK, ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, anon_sym_not, - ACTIONS(664), 1, + ACTIONS(712), 1, sym_identifier, - ACTIONS(674), 1, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(722), 1, anon_sym_await, - ACTIONS(738), 1, - anon_sym_lambda, - STATE(569), 1, + ACTIONS(802), 1, + anon_sym_RPAREN, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(919), 1, + STATE(1073), 1, sym_expression, - ACTIONS(293), 2, + STATE(1318), 1, + sym_parenthesized_list_splat, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(987), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(582), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(778), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - ACTIONS(780), 3, - anon_sym_if, - anon_sym_async, - anon_sym_for, - ACTIONS(295), 4, + STATE(1314), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 4, + ACTIONS(720), 5, anon_sym_print, + anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27355,146 +29096,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [6030] = 21, + [6228] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(53), 1, + anon_sym_STAR_STAR, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, ACTIONS(584), 1, anon_sym_LBRACK, ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, anon_sym_not, - ACTIONS(664), 1, + ACTIONS(712), 1, sym_identifier, - ACTIONS(674), 1, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(722), 1, anon_sym_await, - ACTIONS(738), 1, - anon_sym_lambda, - STATE(569), 1, + ACTIONS(804), 1, + anon_sym_RPAREN, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(919), 1, + STATE(1073), 1, sym_expression, - ACTIONS(293), 2, + STATE(1318), 1, + sym_parenthesized_list_splat, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(987), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(582), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(782), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - ACTIONS(784), 3, - anon_sym_if, - anon_sym_async, - anon_sym_for, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(670), 4, - anon_sym_print, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [6128] = 23, - ACTIONS(3), 1, - sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(688), 1, - anon_sym_LPAREN, - ACTIONS(712), 1, - sym_identifier, - ACTIONS(716), 1, - anon_sym_await, - ACTIONS(786), 1, - anon_sym_RPAREN, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(1066), 1, - sym_expression, - STATE(1286), 1, - sym_parenthesized_list_splat, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(285), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - STATE(1287), 3, + STATE(1314), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27511,69 +29175,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [6230] = 23, + [6330] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(688), 1, - anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, ACTIONS(712), 1, sym_identifier, - ACTIONS(716), 1, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(722), 1, anon_sym_await, - ACTIONS(788), 1, + ACTIONS(806), 1, anon_sym_RPAREN, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1073), 1, sym_expression, - STATE(1286), 1, + STATE(1318), 1, sym_parenthesized_list_splat, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, + STATE(1314), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27590,69 +29254,70 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [6332] = 23, + [6432] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(69), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(71), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(531), 1, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(684), 1, sym_identifier, - ACTIONS(537), 1, - anon_sym_await, - ACTIONS(555), 1, + ACTIONS(686), 1, anon_sym_LPAREN, - ACTIONS(561), 1, - anon_sym_LBRACK, - ACTIONS(750), 1, - anon_sym_from, - ACTIONS(752), 1, + ACTIONS(694), 1, + anon_sym_await, + ACTIONS(704), 1, + anon_sym_RPAREN, + ACTIONS(706), 1, anon_sym_STAR, - ACTIONS(754), 1, - anon_sym_STAR_STAR, - STATE(692), 1, - sym_primary_expression, - STATE(693), 1, + STATE(565), 1, sym_string, - STATE(972), 1, + STATE(590), 1, + sym_primary_expression, + STATE(905), 1, sym_expression, - ACTIONS(75), 2, + STATE(1221), 1, + sym_yield, + STATE(1456), 1, + sym__collection_elements, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(676), 2, - sym__newline, - sym__semicolon, - STATE(1088), 2, + STATE(1081), 2, sym_list_splat, - sym_dictionary_splat, - ACTIONS(47), 3, + sym_parenthesized_list_splat, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27669,67 +29334,67 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [6434] = 21, + [6536] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(664), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(674), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(738), 1, + ACTIONS(748), 1, anon_sym_lambda, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(919), 1, + STATE(920), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(987), 2, + STATE(986), 2, sym__expression_within_for_in_clause, sym_lambda_within_for_in_clause, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(790), 3, + ACTIONS(808), 3, anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - ACTIONS(792), 3, + ACTIONS(810), 3, anon_sym_if, anon_sym_async, anon_sym_for, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 4, + ACTIONS(690), 4, anon_sym_print, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27746,69 +29411,67 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [6532] = 23, + [6634] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, + ACTIONS(258), 1, + sym_identifier, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(299), 1, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, - ACTIONS(688), 1, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(712), 1, - sym_identifier, - ACTIONS(716), 1, - anon_sym_await, - ACTIONS(794), 1, - anon_sym_RPAREN, - STATE(569), 1, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, + anon_sym_STAR, + ACTIONS(812), 1, + anon_sym_COLON, + ACTIONS(814), 1, + anon_sym_RBRACK, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1043), 1, sym_expression, - STATE(1286), 1, - sym_parenthesized_list_splat, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, + STATE(1332), 3, sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(295), 4, + sym__index_expression, + sym_slice, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27825,67 +29488,67 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [6634] = 22, + [6733] = 22, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(688), 1, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(690), 1, - anon_sym_RPAREN, - ACTIONS(692), 1, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, anon_sym_STAR, - STATE(569), 1, + ACTIONS(812), 1, + anon_sym_COLON, + ACTIONS(816), 1, + anon_sym_RBRACK, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1009), 1, + STATE(1043), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1133), 3, + STATE(1332), 3, sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(295), 4, + sym__index_expression, + sym_slice, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27902,125 +29565,67 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [6733] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(798), 17, - anon_sym_as, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_EQ, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(796), 36, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - sym_type_conversion, - [6794] = 22, + [6832] = 22, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(692), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, anon_sym_STAR, - ACTIONS(800), 1, + ACTIONS(812), 1, anon_sym_COLON, - ACTIONS(802), 1, - anon_sym_RBRACK, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1041), 1, + STATE(1043), 1, sym_expression, - ACTIONS(293), 2, + STATE(1389), 1, + sym_index_expression_list, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1303), 3, + STATE(1187), 3, sym_list_splat, sym__index_expression, sym_slice, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28037,67 +29642,67 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [6893] = 22, + [6931] = 22, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(692), 1, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(706), 1, anon_sym_STAR, - ACTIONS(800), 1, - anon_sym_COLON, - STATE(569), 1, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(740), 1, + anon_sym_RPAREN, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1041), 1, + STATE(985), 1, sym_expression, - STATE(1379), 1, - sym_index_expression_list, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1236), 3, + STATE(1093), 3, sym_list_splat, - sym__index_expression, - sym_slice, - ACTIONS(295), 4, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28114,67 +29719,67 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [6992] = 22, + [7030] = 22, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(630), 1, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(646), 1, anon_sym_yield, - ACTIONS(688), 1, + ACTIONS(706), 1, + anon_sym_STAR, + ACTIONS(714), 1, anon_sym_LPAREN, - ACTIONS(690), 1, + ACTIONS(740), 1, anon_sym_RPAREN, - ACTIONS(692), 1, - anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1009), 1, + STATE(985), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1133), 3, + STATE(1093), 3, sym_list_splat, sym_parenthesized_list_splat, sym_yield, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28191,215 +29796,125 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [7091] = 16, + [7129] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(576), 1, - anon_sym_await, - STATE(569), 1, - sym_string, - STATE(632), 1, - sym_primary_expression, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(260), 3, - anon_sym_DOT, + ACTIONS(820), 17, + anon_sym_as, anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(285), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(804), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - ACTIONS(295), 5, - sym_integer, - sym_identifier, - sym_true, - sym_false, - sym_none, - ACTIONS(568), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - ACTIONS(287), 9, anon_sym_GT_GT, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_STAR_STAR, + anon_sym_EQ, anon_sym_AT, + anon_sym_SLASH, anon_sym_PERCENT, anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [7178] = 22, - ACTIONS(3), 1, - sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + anon_sym_LT, + anon_sym_GT, + ACTIONS(818), 36, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(692), 1, - anon_sym_STAR, - ACTIONS(800), 1, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, anon_sym_COLON, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(1041), 1, - sym_expression, - STATE(1377), 1, - sym_index_expression_list, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(285), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - STATE(1227), 3, - sym_list_splat, - sym__index_expression, - sym_slice, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(269), 5, - anon_sym_print, + anon_sym_else, anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [7277] = 22, + anon_sym_for, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + sym_type_conversion, + [7190] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, + ACTIONS(53), 1, + anon_sym_STAR_STAR, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(692), 1, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, anon_sym_STAR, - ACTIONS(800), 1, - anon_sym_COLON, - STATE(569), 1, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(712), 1, + sym_identifier, + ACTIONS(714), 1, + anon_sym_LPAREN, + ACTIONS(722), 1, + anon_sym_await, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1041), 1, + STATE(1073), 1, sym_expression, - STATE(1477), 1, - sym_index_expression_list, - ACTIONS(293), 2, + STATE(1318), 1, + sym_parenthesized_list_splat, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1232), 3, + STATE(1314), 3, sym_list_splat, - sym__index_expression, - sym_slice, - ACTIONS(295), 4, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(720), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28416,10 +29931,10 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [7376] = 3, + [7289] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(808), 17, + ACTIONS(824), 17, anon_sym_as, anon_sym_STAR, anon_sym_GT_GT, @@ -28437,7 +29952,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_LT, anon_sym_LT, anon_sym_GT, - ACTIONS(806), 36, + ACTIONS(822), 36, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -28474,67 +29989,67 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_CARET_EQ, anon_sym_PIPE_EQ, sym_type_conversion, - [7437] = 22, + [7350] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, + ACTIONS(258), 1, + sym_identifier, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(299), 1, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, - ACTIONS(688), 1, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(712), 1, - sym_identifier, - ACTIONS(716), 1, - anon_sym_await, - STATE(569), 1, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, + anon_sym_STAR, + ACTIONS(812), 1, + anon_sym_COLON, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1043), 1, sym_expression, - STATE(1286), 1, - sym_parenthesized_list_splat, - ACTIONS(293), 2, + STATE(1376), 1, + sym_index_expression_list, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, + STATE(1236), 3, sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(295), 4, + sym__index_expression, + sym_slice, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(714), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28551,67 +30066,138 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [7536] = 22, + [7449] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(588), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(692), 1, - anon_sym_STAR, - ACTIONS(800), 1, + STATE(565), 1, + sym_string, + STATE(631), 1, + sym_primary_expression, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + ACTIONS(260), 3, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(826), 3, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_COLON, - ACTIONS(810), 1, - anon_sym_RBRACK, - STATE(569), 1, + ACTIONS(301), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(576), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + ACTIONS(293), 9, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [7536] = 22, + ACTIONS(3), 1, + sym_comment, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, + anon_sym_STAR, + ACTIONS(812), 1, + anon_sym_COLON, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1041), 1, + STATE(1043), 1, sym_expression, - ACTIONS(293), 2, + STATE(1375), 1, + sym_index_expression_list, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1303), 3, + STATE(1280), 3, sym_list_splat, sym__index_expression, sym_slice, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28631,22 +30217,22 @@ static const uint16_t ts_small_parse_table[] = { [7635] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(816), 1, + ACTIONS(832), 1, anon_sym_else, - ACTIONS(818), 1, + ACTIONS(834), 1, anon_sym_except, - ACTIONS(820), 1, + ACTIONS(836), 1, anon_sym_finally, - STATE(362), 1, + STATE(357), 1, sym_else_clause, - STATE(547), 1, + STATE(545), 1, sym_finally_clause, - STATE(272), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(814), 12, - sym__dedent, + STATE(271), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(828), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -28657,7 +30243,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(812), 33, + ACTIONS(830), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -28691,25 +30277,176 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [7707] = 9, + [7707] = 22, + ACTIONS(3), 1, + sym_comment, + ACTIONS(51), 1, + anon_sym_LBRACE, + ACTIONS(53), 1, + anon_sym_STAR_STAR, + ACTIONS(69), 1, + anon_sym_not, + ACTIONS(71), 1, + anon_sym_lambda, + ACTIONS(81), 1, + sym__string_start, + ACTIONS(325), 1, + sym_identifier, + ACTIONS(331), 1, + anon_sym_await, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + STATE(689), 1, + sym_primary_expression, + STATE(693), 1, + sym_string, + STATE(993), 1, + sym_expression, + STATE(1327), 1, + sym_expression_list, + ACTIONS(75), 2, + sym_ellipsis, + sym_float, + STATE(1283), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(47), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(77), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(327), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(940), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(773), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [7805] = 21, + ACTIONS(3), 1, + sym_comment, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(646), 1, + anon_sym_yield, + ACTIONS(706), 1, + anon_sym_STAR, + ACTIONS(714), 1, + anon_sym_LPAREN, + STATE(565), 1, + sym_string, + STATE(595), 1, + sym_primary_expression, + STATE(985), 1, + sym_expression, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1093), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(271), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(863), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [7901] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(822), 1, + ACTIONS(838), 1, anon_sym_else, - ACTIONS(824), 1, + ACTIONS(840), 1, anon_sym_except, - ACTIONS(826), 1, + ACTIONS(842), 1, anon_sym_finally, - STATE(380), 1, + STATE(395), 1, sym_else_clause, - STATE(512), 1, + STATE(490), 1, sym_finally_clause, - STATE(258), 2, + STATE(263), 2, sym_except_clause, aux_sym_try_statement_repeat1, - ACTIONS(814), 12, + ACTIONS(828), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -28720,7 +30457,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(812), 33, + ACTIONS(830), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -28754,25 +30491,25 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [7779] = 9, + [7973] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(822), 1, + ACTIONS(838), 1, anon_sym_else, - ACTIONS(824), 1, - anon_sym_except, - ACTIONS(826), 1, + ACTIONS(842), 1, anon_sym_finally, - STATE(390), 1, + ACTIONS(844), 1, + anon_sym_except, + STATE(395), 1, sym_else_clause, - STATE(510), 1, + STATE(490), 1, sym_finally_clause, - STATE(258), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, + STATE(268), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, ACTIONS(828), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -28817,65 +30554,66 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [7851] = 21, + [8045] = 22, ACTIONS(3), 1, sym_comment, + ACTIONS(53), 1, + anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(692), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, anon_sym_STAR, - ACTIONS(800), 1, - anon_sym_COLON, - STATE(569), 1, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1041), 1, + STATE(1039), 1, sym_expression, - ACTIONS(293), 2, + STATE(1449), 1, + sym_expression_list, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + STATE(1284), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1303), 3, - sym_list_splat, - sym__index_expression, - sym_slice, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28892,23 +30630,23 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [7947] = 9, + [8143] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(816), 1, + ACTIONS(838), 1, anon_sym_else, - ACTIONS(818), 1, - anon_sym_except, - ACTIONS(820), 1, + ACTIONS(842), 1, anon_sym_finally, - STATE(417), 1, + ACTIONS(844), 1, + anon_sym_except, + STATE(392), 1, sym_else_clause, - STATE(495), 1, + STATE(474), 1, sym_finally_clause, - STATE(272), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(828), 12, + STATE(268), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(848), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -28921,7 +30659,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(830), 33, + ACTIONS(846), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -28955,66 +30693,66 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [8019] = 22, + [8215] = 22, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1042), 1, + STATE(1030), 1, sym_expression, - STATE(1440), 1, + STATE(1404), 1, sym_expression_list, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1329), 2, + STATE(1284), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29031,174 +30769,86 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [8117] = 21, + [8313] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, + ACTIONS(832), 1, + anon_sym_else, + ACTIONS(834), 1, + anon_sym_except, + ACTIONS(836), 1, + anon_sym_finally, + STATE(350), 1, + sym_else_clause, + STATE(537), 1, + sym_finally_clause, + STATE(271), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(848), 12, sym__string_start, - ACTIONS(630), 1, - anon_sym_yield, - ACTIONS(688), 1, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(692), 1, - anon_sym_STAR, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(1009), 1, - sym_expression, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(285), 3, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_TILDE, - STATE(1133), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(269), 5, + sym_ellipsis, + sym_float, + ACTIONS(846), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [8213] = 22, - ACTIONS(3), 1, - sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, + anon_sym_class, anon_sym_not, - ACTIONS(289), 1, anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(1021), 1, - sym_expression, - STATE(1355), 1, - sym_expression_list, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - STATE(1329), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(285), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(295), 4, + anon_sym_yield, sym_integer, + sym_identifier, + anon_sym_await, sym_true, sym_false, sym_none, - ACTIONS(269), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [8311] = 9, + [8385] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(822), 1, + ACTIONS(832), 1, anon_sym_else, - ACTIONS(826), 1, + ACTIONS(836), 1, anon_sym_finally, - ACTIONS(832), 1, + ACTIONS(850), 1, anon_sym_except, - STATE(390), 1, + STATE(350), 1, sym_else_clause, - STATE(510), 1, + STATE(537), 1, sym_finally_clause, - STATE(260), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(828), 12, + STATE(272), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(848), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -29211,7 +30861,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(830), 33, + ACTIONS(846), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -29245,25 +30895,25 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [8383] = 9, + [8457] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(816), 1, + ACTIONS(832), 1, anon_sym_else, - ACTIONS(820), 1, + ACTIONS(836), 1, anon_sym_finally, - ACTIONS(834), 1, + ACTIONS(850), 1, anon_sym_except, - STATE(362), 1, + STATE(357), 1, sym_else_clause, - STATE(547), 1, + STATE(545), 1, sym_finally_clause, - STATE(270), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(814), 12, - sym__dedent, + STATE(272), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(828), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -29274,7 +30924,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(812), 33, + ACTIONS(830), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -29308,23 +30958,23 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [8455] = 9, + [8529] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(816), 1, + ACTIONS(838), 1, anon_sym_else, - ACTIONS(820), 1, - anon_sym_finally, - ACTIONS(834), 1, + ACTIONS(840), 1, anon_sym_except, - STATE(417), 1, + ACTIONS(842), 1, + anon_sym_finally, + STATE(392), 1, sym_else_clause, - STATE(495), 1, + STATE(474), 1, sym_finally_clause, - STATE(270), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(828), 12, + STATE(263), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(848), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -29337,7 +30987,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(830), 33, + ACTIONS(846), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -29371,66 +31021,65 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [8527] = 22, + [8601] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(531), 1, - sym_identifier, - ACTIONS(537), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(555), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - STATE(692), 1, - sym_primary_expression, - STATE(693), 1, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, + anon_sym_STAR, + ACTIONS(812), 1, + anon_sym_COLON, + STATE(565), 1, sym_string, - STATE(1002), 1, + STATE(595), 1, + sym_primary_expression, + STATE(1043), 1, sym_expression, - STATE(1338), 1, - sym_expression_list, - ACTIONS(75), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1300), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(47), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + STATE(1332), 3, + sym_list_splat, + sym__index_expression, + sym_slice, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29447,66 +31096,66 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [8625] = 22, + [8697] = 22, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1036), 1, + STATE(1011), 1, sym_expression, - STATE(1396), 1, + STATE(1416), 1, sym_expression_list, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1329), 2, + STATE(1284), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29523,129 +31172,140 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [8723] = 9, + [8795] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(822), 1, - anon_sym_else, - ACTIONS(826), 1, - anon_sym_finally, - ACTIONS(832), 1, - anon_sym_except, - STATE(380), 1, - sym_else_clause, - STATE(512), 1, - sym_finally_clause, - STATE(260), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(814), 12, + ACTIONS(53), 1, + anon_sym_STAR_STAR, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, - ts_builtin_sym_end, + ACTIONS(571), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(584), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, + sym_string, + STATE(595), 1, + sym_primary_expression, + STATE(1045), 1, + sym_expression, + STATE(1423), 1, + sym_expression_list, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(812), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, + STATE(1284), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(271), 5, anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [8795] = 22, + STATE(863), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [8893] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(852), 1, + anon_sym_RBRACE, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1030), 1, + STATE(1104), 1, sym_expression, - STATE(1424), 1, - sym_expression_list, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1329), 2, - sym_list_splat, + STATE(1335), 2, sym_dictionary_splat, - ACTIONS(285), 3, + sym_pair, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29662,64 +31322,127 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [8893] = 21, + [8988] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(265), 1, + anon_sym_COMMA, + ACTIONS(273), 1, + anon_sym_COLON_EQ, + ACTIONS(854), 1, + anon_sym_for, + ACTIONS(856), 1, + anon_sym_with, + ACTIONS(858), 1, + anon_sym_def, + ACTIONS(275), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(297), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(260), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(293), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym__semicolon, + [9061] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(836), 1, - anon_sym_RBRACE, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(626), 1, + anon_sym_STAR, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1148), 1, + STATE(902), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1319), 2, + STATE(1005), 2, + sym_list_splat, sym_dictionary_splat, - sym_pair, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29736,23 +31459,23 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [8988] = 10, + [9156] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(264), 1, + ACTIONS(265), 1, anon_sym_COMMA, - ACTIONS(271), 1, + ACTIONS(273), 1, anon_sym_COLON_EQ, - ACTIONS(838), 1, + ACTIONS(860), 1, anon_sym_for, - ACTIONS(840), 1, + ACTIONS(862), 1, anon_sym_with, - ACTIONS(842), 1, + ACTIONS(864), 1, anon_sym_def, - ACTIONS(273), 2, + ACTIONS(275), 2, anon_sym_COLON, anon_sym_EQ, - ACTIONS(291), 13, + ACTIONS(297), 13, anon_sym_PLUS_EQ, anon_sym_DASH_EQ, anon_sym_STAR_EQ, @@ -29782,7 +31505,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_LT, anon_sym_LT, anon_sym_GT, - ACTIONS(287), 16, + ACTIONS(293), 16, sym__newline, anon_sym_DOT, anon_sym_LPAREN, @@ -29799,64 +31522,64 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [9061] = 21, + [9229] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(267), 1, - anon_sym_STAR, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(866), 1, + anon_sym_RBRACE, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(897), 1, + STATE(1104), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(998), 2, - sym_list_splat, + STATE(1335), 2, sym_dictionary_splat, - ACTIONS(285), 3, + sym_pair, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29873,64 +31596,64 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [9156] = 21, + [9324] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(844), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(868), 1, anon_sym_RBRACE, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1148), 1, + STATE(1104), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1319), 2, + STATE(1335), 2, sym_dictionary_splat, sym_pair, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29947,7 +31670,7 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [9251] = 21, + [9419] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -29958,28 +31681,28 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - ACTIONS(752), 1, + ACTIONS(758), 1, anon_sym_STAR, - ACTIONS(754), 1, + ACTIONS(760), 1, anon_sym_STAR_STAR, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(972), 1, + STATE(998), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, sym_float, - STATE(1088), 2, + STATE(1128), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(47), 3, @@ -29991,20 +31714,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30021,64 +31744,64 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [9346] = 21, + [9514] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(846), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(870), 1, anon_sym_RBRACE, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1148), 1, + STATE(1104), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1319), 2, + STATE(1335), 2, sym_dictionary_splat, sym_pair, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30095,64 +31818,64 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [9441] = 21, + [9609] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(848), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(872), 1, anon_sym_RBRACE, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1148), 1, + STATE(1104), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1319), 2, + STATE(1335), 2, sym_dictionary_splat, sym_pair, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30169,64 +31892,64 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [9536] = 21, + [9704] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(850), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(874), 1, anon_sym_RBRACE, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1148), 1, + STATE(1104), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1319), 2, + STATE(1335), 2, sym_dictionary_splat, sym_pair, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30243,127 +31966,64 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [9631] = 10, - ACTIONS(3), 1, - sym_comment, - ACTIONS(264), 1, - anon_sym_COMMA, - ACTIONS(271), 1, - anon_sym_COLON_EQ, - ACTIONS(852), 1, - anon_sym_for, - ACTIONS(854), 1, - anon_sym_with, - ACTIONS(856), 1, - anon_sym_def, - ACTIONS(273), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(291), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(260), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(287), 16, - sym__newline, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - sym__semicolon, - [9704] = 21, + [9799] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(858), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(876), 1, anon_sym_RBRACE, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1148), 1, + STATE(1104), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1319), 2, + STATE(1335), 2, sym_dictionary_splat, sym_pair, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30380,64 +32040,64 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [9799] = 21, + [9894] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(860), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(878), 1, anon_sym_RBRACE, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1148), 1, + STATE(1104), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1319), 2, + STATE(1335), 2, sym_dictionary_splat, sym_pair, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30454,64 +32114,64 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [9894] = 21, + [9989] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(862), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(880), 1, anon_sym_RBRACE, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1148), 1, + STATE(1104), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(1319), 2, + STATE(1335), 2, sym_dictionary_splat, sym_pair, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30528,167 +32188,255 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [9989] = 21, + [10084] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(832), 1, + anon_sym_else, + ACTIONS(886), 1, + anon_sym_elif, + STATE(269), 1, + aux_sym_if_statement_repeat1, + STATE(407), 1, + sym_elif_clause, + STATE(527), 1, + sym_else_clause, + ACTIONS(882), 12, + sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(277), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(279), 1, anon_sym_LBRACE, - ACTIONS(283), 1, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(884), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, anon_sym_not, - ACTIONS(289), 1, anon_sym_lambda, - ACTIONS(297), 1, + anon_sym_yield, + sym_integer, + sym_identifier, anon_sym_await, - ACTIONS(299), 1, + sym_true, + sym_false, + sym_none, + [10152] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(888), 12, sym__string_start, - ACTIONS(864), 1, - anon_sym_RBRACE, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(1148), 1, - sym_expression, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - STATE(1319), 2, - sym_dictionary_splat, - sym_pair, - ACTIONS(285), 3, + ts_builtin_sym_end, + anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_TILDE, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(269), 5, + sym_ellipsis, + sym_float, + ACTIONS(890), 38, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, anon_sym_match, + anon_sym_case, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [10084] = 21, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [10210] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(838), 1, + anon_sym_else, + ACTIONS(896), 1, + anon_sym_elif, + STATE(308), 1, + aux_sym_if_statement_repeat1, + STATE(390), 1, + sym_elif_clause, + STATE(481), 1, + sym_else_clause, + ACTIONS(894), 12, + sym__dedent, + sym__string_start, anon_sym_LPAREN, - ACTIONS(277), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(279), 1, anon_sym_LBRACE, - ACTIONS(283), 1, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(892), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, anon_sym_not, - ACTIONS(289), 1, anon_sym_lambda, - ACTIONS(297), 1, + anon_sym_yield, + sym_integer, + sym_identifier, anon_sym_await, - ACTIONS(299), 1, + sym_true, + sym_false, + sym_none, + [10278] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(838), 1, + anon_sym_else, + ACTIONS(896), 1, + anon_sym_elif, + STATE(253), 1, + aux_sym_if_statement_repeat1, + STATE(390), 1, + sym_elif_clause, + STATE(468), 1, + sym_else_clause, + ACTIONS(882), 12, + sym__dedent, sym__string_start, - ACTIONS(692), 1, - anon_sym_STAR, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(995), 1, - sym_expression, - STATE(1115), 1, - sym_list_splat, - STATE(1429), 1, - sym_type, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(285), 3, + anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_TILDE, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(269), 5, + sym_ellipsis, + sym_float, + ACTIONS(884), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [10178] = 8, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [10346] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(816), 1, + ACTIONS(838), 1, anon_sym_else, - ACTIONS(870), 1, + ACTIONS(896), 1, anon_sym_elif, - STATE(280), 1, + STATE(266), 1, aux_sym_if_statement_repeat1, - STATE(425), 1, + STATE(390), 1, sym_elif_clause, - STATE(492), 1, + STATE(482), 1, sym_else_clause, - ACTIONS(868), 12, + ACTIONS(900), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -30701,7 +32449,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(866), 33, + ACTIONS(898), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -30735,63 +32483,124 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [10246] = 21, + [10414] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(265), 1, + anon_sym_COMMA, + ACTIONS(273), 1, + anon_sym_COLON_EQ, + ACTIONS(902), 1, + sym__string_start, + STATE(1264), 1, + sym_string, + ACTIONS(275), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(297), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(260), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(293), 16, + sym__newline, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(277), 1, + anon_sym_if, + anon_sym_in, anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, anon_sym_not, - ACTIONS(289), 1, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym__semicolon, + [10484] = 21, + ACTIONS(3), 1, + sym_comment, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(692), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, STATE(995), 1, sym_expression, - STATE(1115), 1, + STATE(1114), 1, sym_list_splat, - STATE(1375), 1, + STATE(1382), 1, sym_type, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30808,7 +32617,7 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [10340] = 21, + [10578] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -30819,26 +32628,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - ACTIONS(872), 1, + ACTIONS(904), 1, anon_sym_STAR, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(1022), 1, + STATE(1025), 1, sym_expression, - STATE(1210), 1, - sym_list_splat, - STATE(1211), 1, + STATE(1153), 1, sym_type, + STATE(1258), 1, + sym_list_splat, ACTIONS(75), 2, sym_ellipsis, sym_float, @@ -30851,20 +32660,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30881,63 +32690,63 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [10434] = 21, + [10672] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(692), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, STATE(995), 1, sym_expression, - STATE(1115), 1, + STATE(1114), 1, sym_list_splat, - STATE(1431), 1, + STATE(1412), 1, sym_type, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30954,10 +32763,10 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [10528] = 3, + [10766] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(874), 12, + ACTIONS(906), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -30970,7 +32779,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(876), 38, + ACTIONS(908), 38, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -31009,10 +32818,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [10586] = 3, + [10824] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(878), 12, + ACTIONS(910), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -31025,7 +32834,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(880), 38, + ACTIONS(912), 38, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -31064,15 +32873,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [10644] = 5, + [10882] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(886), 1, - anon_sym_except, - STATE(258), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(882), 12, + ACTIONS(914), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -31085,7 +32889,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(884), 35, + ACTIONS(916), 38, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -31098,14 +32902,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, anon_sym_finally, anon_sym_with, anon_sym_match, + anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -31121,88 +32928,67 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [10706] = 21, + [10940] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(922), 1, + anon_sym_except, + STATE(263), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(920), 12, + sym__dedent, + sym__string_start, anon_sym_LPAREN, - ACTIONS(277), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(279), 1, anon_sym_LBRACE, - ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(692), 1, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(918), 35, + anon_sym_import, + anon_sym_from, anon_sym_STAR, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(995), 1, - sym_expression, - STATE(1115), 1, - sym_list_splat, - STATE(1467), 1, - sym_type, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(285), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(269), 5, anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [10800] = 5, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [11002] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(893), 1, - anon_sym_except, - STATE(260), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(889), 12, + ACTIONS(925), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -31215,7 +33001,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(891), 35, + ACTIONS(927), 38, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -31228,14 +33014,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, anon_sym_finally, anon_sym_with, anon_sym_match, + anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -31251,10 +33040,92 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [10862] = 3, + [11060] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(878), 12, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(931), 1, + anon_sym_COLON, + STATE(565), 1, + sym_string, + STATE(595), 1, + sym_primary_expression, + STATE(1038), 1, + sym_expression, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + ACTIONS(929), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(271), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(863), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [11152] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(838), 1, + anon_sym_else, + ACTIONS(896), 1, + anon_sym_elif, + STATE(308), 1, + aux_sym_if_statement_repeat1, + STATE(390), 1, + sym_elif_clause, + STATE(496), 1, + sym_else_clause, + ACTIONS(935), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -31267,7 +33138,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(880), 38, + ACTIONS(933), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -31280,17 +33151,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, - anon_sym_finally, anon_sym_with, anon_sym_match, - anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -31306,12 +33172,90 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [10920] = 3, + [11220] = 21, + ACTIONS(3), 1, + sym_comment, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, + anon_sym_STAR, + STATE(565), 1, + sym_string, + STATE(595), 1, + sym_primary_expression, + STATE(995), 1, + sym_expression, + STATE(1114), 1, + sym_list_splat, + STATE(1434), 1, + sym_type, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(271), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(863), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [11314] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(896), 12, + ACTIONS(941), 1, + anon_sym_except, + STATE(268), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(939), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -31322,7 +33266,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(898), 38, + ACTIONS(937), 35, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -31335,17 +33279,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, anon_sym_finally, anon_sym_with, anon_sym_match, - anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -31361,12 +33302,22 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [10978] = 3, + [11376] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(902), 12, - sym__dedent, + ACTIONS(832), 1, + anon_sym_else, + ACTIONS(886), 1, + anon_sym_elif, + STATE(292), 1, + aux_sym_if_statement_repeat1, + STATE(407), 1, + sym_elif_clause, + STATE(511), 1, + sym_else_clause, + ACTIONS(894), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -31377,7 +33328,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(900), 38, + ACTIONS(892), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -31390,17 +33341,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, - anon_sym_finally, anon_sym_with, anon_sym_match, - anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -31416,12 +33362,22 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [11036] = 3, + [11444] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(906), 12, - sym__dedent, + ACTIONS(832), 1, + anon_sym_else, + ACTIONS(886), 1, + anon_sym_elif, + STATE(277), 1, + aux_sym_if_statement_repeat1, + STATE(407), 1, + sym_elif_clause, + STATE(516), 1, + sym_else_clause, + ACTIONS(900), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -31432,7 +33388,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(904), 38, + ACTIONS(898), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -31445,17 +33401,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, - anon_sym_finally, anon_sym_with, anon_sym_match, - anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -31471,10 +33422,15 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [11094] = 3, + [11512] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(902), 12, + ACTIONS(944), 1, + anon_sym_except, + STATE(271), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(939), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -31487,7 +33443,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(900), 38, + ACTIONS(937), 35, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -31500,17 +33456,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, anon_sym_finally, anon_sym_with, anon_sym_match, - anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -31526,20 +33479,15 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [11152] = 8, + [11574] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(822), 1, - anon_sym_else, - ACTIONS(908), 1, - anon_sym_elif, - STATE(278), 1, - aux_sym_if_statement_repeat1, - STATE(424), 1, - sym_elif_clause, - STATE(491), 1, - sym_else_clause, - ACTIONS(868), 12, + ACTIONS(947), 1, + anon_sym_except, + STATE(272), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(920), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -31552,7 +33500,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(866), 33, + ACTIONS(918), 35, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -31565,10 +33513,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -31586,63 +33536,62 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [11220] = 21, + [11636] = 20, ACTIONS(3), 1, sym_comment, + ACTIONS(53), 1, + anon_sym_STAR_STAR, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(692), 1, - anon_sym_STAR, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(995), 1, + STATE(1104), 1, sym_expression, - STATE(1115), 1, - sym_list_splat, - STATE(1434), 1, - sym_type, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + STATE(1335), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31659,10 +33608,10 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [11314] = 3, + [11728] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(896), 12, + ACTIONS(906), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -31675,7 +33624,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(898), 38, + ACTIONS(908), 38, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -31714,10 +33663,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [11372] = 3, + [11786] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(874), 12, + ACTIONS(888), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -31730,7 +33679,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(876), 38, + ACTIONS(890), 38, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -31769,119 +33718,63 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [11430] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(910), 1, - anon_sym_except, - STATE(270), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(889), 12, - sym__dedent, - sym__string_start, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(891), 35, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_finally, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [11492] = 20, + [11844] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(915), 1, - anon_sym_COLON, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, + anon_sym_STAR, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1044), 1, + STATE(995), 1, sym_expression, - ACTIONS(293), 2, + STATE(1114), 1, + sym_list_splat, + STATE(1391), 1, + sym_type, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(913), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31898,17 +33791,22 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [11584] = 5, + [11938] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(917), 1, - anon_sym_except, - STATE(272), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(882), 12, - sym__dedent, + ACTIONS(832), 1, + anon_sym_else, + ACTIONS(886), 1, + anon_sym_elif, + STATE(292), 1, + aux_sym_if_statement_repeat1, + STATE(407), 1, + sym_elif_clause, + STATE(459), 1, + sym_else_clause, + ACTIONS(935), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -31919,7 +33817,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(884), 35, + ACTIONS(933), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -31932,12 +33830,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -31955,62 +33851,62 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [11646] = 20, + [12006] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(922), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(952), 1, anon_sym_COLON, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1025), 1, + STATE(1033), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(920), 2, + ACTIONS(950), 2, anon_sym_COMMA, anon_sym_RBRACK, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32027,196 +33923,118 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [11738] = 20, + [12098] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(914), 12, + sym__dedent, + sym__string_start, anon_sym_LPAREN, - ACTIONS(277), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(279), 1, anon_sym_LBRACE, - ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(1148), 1, - sym_expression, - ACTIONS(293), 2, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, sym_ellipsis, sym_float, - STATE(1319), 2, - sym_dictionary_splat, - sym_pair, - ACTIONS(285), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(269), 5, + ACTIONS(916), 38, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, anon_sym_match, + anon_sym_case, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [11830] = 9, - ACTIONS(3), 1, - sym_comment, - ACTIONS(264), 1, - anon_sym_COMMA, - ACTIONS(271), 1, - anon_sym_COLON_EQ, - ACTIONS(924), 1, - sym__string_start, - STATE(1281), 1, - sym_string, - ACTIONS(273), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(291), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(260), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(287), 16, - sym__newline, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, + anon_sym_class, anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - sym__semicolon, - [11900] = 21, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [12156] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(692), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, STATE(995), 1, sym_expression, - STATE(1115), 1, + STATE(1114), 1, sym_list_splat, - STATE(1383), 1, + STATE(1141), 1, sym_type, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32233,22 +34051,12 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [11994] = 8, + [12250] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(822), 1, - anon_sym_else, - ACTIONS(908), 1, - anon_sym_elif, - STATE(281), 1, - aux_sym_if_statement_repeat1, - STATE(424), 1, - sym_elif_clause, - STATE(523), 1, - sym_else_clause, - ACTIONS(926), 12, + ACTIONS(925), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -32259,7 +34067,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(928), 33, + ACTIONS(927), 38, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -32272,12 +34080,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, + anon_sym_finally, anon_sym_with, anon_sym_match, + anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -32293,252 +34106,85 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [12062] = 8, + [12308] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(822), 1, - anon_sym_else, - ACTIONS(908), 1, - anon_sym_elif, - STATE(303), 1, - aux_sym_if_statement_repeat1, - STATE(424), 1, - sym_elif_clause, - STATE(528), 1, - sym_else_clause, - ACTIONS(930), 12, - sym__string_start, - ts_builtin_sym_end, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(932), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, + ACTIONS(295), 1, anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, + ACTIONS(303), 1, anon_sym_await, - sym_true, - sym_false, - sym_none, - [12130] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(816), 1, - anon_sym_else, - ACTIONS(870), 1, - anon_sym_elif, - STATE(286), 1, - aux_sym_if_statement_repeat1, - STATE(425), 1, - sym_elif_clause, - STATE(536), 1, - sym_else_clause, - ACTIONS(926), 12, - sym__dedent, + ACTIONS(305), 1, sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(584), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, + anon_sym_STAR, + STATE(565), 1, + sym_string, + STATE(595), 1, + sym_primary_expression, + STATE(995), 1, + sym_expression, + STATE(1114), 1, + sym_list_splat, + STATE(1444), 1, + sym_type, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(928), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [12198] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(816), 1, - anon_sym_else, - ACTIONS(870), 1, - anon_sym_elif, - STATE(304), 1, - aux_sym_if_statement_repeat1, - STATE(425), 1, - sym_elif_clause, - STATE(526), 1, - sym_else_clause, - ACTIONS(930), 12, - sym__dedent, - sym__string_start, - anon_sym_LPAREN, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(932), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, + ACTIONS(301), 4, sym_integer, - sym_identifier, - anon_sym_await, sym_true, sym_false, sym_none, - [12266] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(822), 1, - anon_sym_else, - ACTIONS(908), 1, - anon_sym_elif, - STATE(303), 1, - aux_sym_if_statement_repeat1, - STATE(424), 1, - sym_elif_clause, - STATE(467), 1, - sym_else_clause, - ACTIONS(934), 12, - sym__string_start, - ts_builtin_sym_end, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(936), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, + ACTIONS(271), 5, anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [12334] = 3, + STATE(863), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [12402] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(906), 12, + ACTIONS(910), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -32549,7 +34195,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(904), 38, + ACTIONS(912), 38, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -32588,63 +34234,63 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [12392] = 21, + [12460] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(692), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, STATE(995), 1, sym_expression, - STATE(1115), 1, + STATE(1114), 1, sym_list_splat, - STATE(1151), 1, + STATE(1428), 1, sym_type, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32661,63 +34307,63 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [12486] = 21, + [12554] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(692), 1, - anon_sym_STAR, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(995), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, + anon_sym_STAR, + STATE(565), 1, + sym_string, + STATE(595), 1, + sym_primary_expression, + STATE(995), 1, sym_expression, - STATE(1115), 1, + STATE(1114), 1, sym_list_splat, - STATE(1435), 1, + STATE(1430), 1, sym_type, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32734,63 +34380,63 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [12580] = 21, + [12648] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(692), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, STATE(995), 1, sym_expression, - STATE(1115), 1, + STATE(1114), 1, sym_list_splat, - STATE(1459), 1, + STATE(1433), 1, sym_type, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32807,123 +34453,63 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [12674] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(816), 1, - anon_sym_else, - ACTIONS(870), 1, - anon_sym_elif, - STATE(304), 1, - aux_sym_if_statement_repeat1, - STATE(425), 1, - sym_elif_clause, - STATE(511), 1, - sym_else_clause, - ACTIONS(934), 12, - sym__dedent, - sym__string_start, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(936), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, [12742] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(692), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, STATE(995), 1, sym_expression, - STATE(1115), 1, + STATE(1114), 1, sym_list_splat, - STATE(1259), 1, + STATE(1209), 1, sym_type, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32943,58 +34529,58 @@ static const uint16_t ts_small_parse_table[] = { [12836] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(618), 1, + sym__string_start, + ACTIONS(954), 1, + sym_identifier, + ACTIONS(956), 1, + anon_sym_STAR, + ACTIONS(960), 1, + anon_sym_COLON, + ACTIONS(962), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(964), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(966), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(692), 1, - anon_sym_STAR, - STATE(569), 1, - sym_string, - STATE(589), 1, + STATE(698), 1, sym_primary_expression, - STATE(1068), 1, + STATE(699), 1, + sym_string, + STATE(1028), 1, sym_expression, - STATE(1335), 1, - sym_list_splat, - ACTIONS(293), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33011,60 +34597,61 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [12927] = 19, + [12927] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(706), 1, + anon_sym_STAR, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1055), 1, + STATE(1052), 1, sym_expression, - ACTIONS(293), 2, + STATE(1320), 1, + sym_list_splat, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(938), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33081,60 +34668,60 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [13016] = 19, + [13018] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(684), 1, + sym_identifier, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, + ACTIONS(748), 1, + anon_sym_lambda, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(1072), 1, + STATE(920), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(940), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(285), 3, + STATE(931), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33151,60 +34738,61 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [13105] = 19, + [13107] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(610), 1, + anon_sym_LBRACK, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(584), 1, - anon_sym_LBRACK, - ACTIONS(626), 1, - anon_sym_not, - ACTIONS(664), 1, + ACTIONS(954), 1, sym_identifier, - ACTIONS(674), 1, - anon_sym_await, - ACTIONS(738), 1, + ACTIONS(962), 1, + anon_sym_not, + ACTIONS(964), 1, anon_sym_lambda, - STATE(569), 1, - sym_string, - STATE(576), 1, + ACTIONS(966), 1, + anon_sym_await, + ACTIONS(968), 1, + anon_sym_LPAREN, + STATE(698), 1, sym_primary_expression, - STATE(913), 1, + STATE(699), 1, + sym_string, + STATE(987), 1, sym_expression, - ACTIONS(293), 2, + STATE(1206), 1, + sym_with_item, + STATE(1385), 1, + sym_with_clause, + ACTIONS(614), 2, sym_ellipsis, sym_float, - STATE(982), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(582), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33221,60 +34809,117 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [13194] = 19, + [13198] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(974), 1, + anon_sym_elif, + STATE(292), 1, + aux_sym_if_statement_repeat1, + STATE(407), 1, + sym_elif_clause, + ACTIONS(970), 12, + sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(277), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(279), 1, anon_sym_LBRACE, - ACTIONS(283), 1, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(972), 34, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, anon_sym_not, - ACTIONS(289), 1, anon_sym_lambda, - ACTIONS(297), 1, + anon_sym_yield, + sym_integer, + sym_identifier, anon_sym_await, - ACTIONS(299), 1, + sym_true, + sym_false, + sym_none, + [13261] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(51), 1, + anon_sym_LBRACE, + ACTIONS(69), 1, + anon_sym_not, + ACTIONS(71), 1, + anon_sym_lambda, + ACTIONS(81), 1, sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, + ACTIONS(325), 1, + sym_identifier, + ACTIONS(331), 1, + anon_sym_await, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + STATE(689), 1, sym_primary_expression, - STATE(1079), 1, + STATE(693), 1, + sym_string, + STATE(1018), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(942), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(285), 3, + ACTIONS(977), 2, + sym__newline, + sym__semicolon, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33291,60 +34936,60 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [13283] = 19, + [13350] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(664), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(674), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(738), 1, + ACTIONS(748), 1, anon_sym_lambda, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(919), 1, + STATE(921), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(987), 2, + STATE(989), 2, sym__expression_within_for_in_clause, sym_lambda_within_for_in_clause, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33361,61 +35006,61 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [13372] = 20, + [13439] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(598), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(944), 1, + ACTIONS(954), 1, sym_identifier, - ACTIONS(946), 1, - anon_sym_LPAREN, - ACTIONS(950), 1, + ACTIONS(962), 1, anon_sym_not, - ACTIONS(952), 1, + ACTIONS(964), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(966), 1, anon_sym_await, - STATE(705), 1, + ACTIONS(979), 1, + anon_sym_RPAREN, + STATE(698), 1, sym_primary_expression, - STATE(708), 1, + STATE(699), 1, sym_string, - STATE(980), 1, + STATE(987), 1, sym_expression, - STATE(1193), 1, + STATE(1256), 1, sym_with_item, - STATE(1405), 1, - sym_with_clause, - ACTIONS(602), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33432,60 +35077,60 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [13463] = 19, + [13530] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(571), 1, anon_sym_LPAREN, ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(628), 1, anon_sym_not, - ACTIONS(664), 1, - sym_identifier, - ACTIONS(674), 1, - anon_sym_await, - ACTIONS(738), 1, - anon_sym_lambda, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(919), 1, + STATE(1056), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(943), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(582), 3, + ACTIONS(981), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33502,60 +35147,60 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [13552] = 19, + [13619] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(664), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(674), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(738), 1, + ACTIONS(748), 1, anon_sym_lambda, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(921), 1, + STATE(920), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(977), 2, + STATE(945), 2, sym__expression_within_for_in_clause, sym_lambda_within_for_in_clause, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33572,61 +35217,61 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [13641] = 20, + [13708] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, - anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(944), 1, + ACTIONS(954), 1, sym_identifier, - ACTIONS(950), 1, + ACTIONS(962), 1, anon_sym_not, - ACTIONS(952), 1, + ACTIONS(964), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(966), 1, anon_sym_await, - ACTIONS(956), 1, - anon_sym_STAR, - ACTIONS(958), 1, - anon_sym_COLON, - STATE(705), 1, + ACTIONS(968), 1, + anon_sym_LPAREN, + STATE(698), 1, sym_primary_expression, - STATE(708), 1, + STATE(699), 1, sym_string, - STATE(1024), 1, + STATE(987), 1, sym_expression, - ACTIONS(602), 2, + STATE(1206), 1, + sym_with_item, + STATE(1431), 1, + sym_with_clause, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33643,61 +35288,60 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [13732] = 20, + [13799] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, - anon_sym_LPAREN, - ACTIONS(598), 1, - anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, + ACTIONS(258), 1, sym_identifier, - ACTIONS(950), 1, - anon_sym_not, - ACTIONS(952), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(960), 1, - anon_sym_RPAREN, - STATE(705), 1, - sym_primary_expression, - STATE(708), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(980), 1, + STATE(595), 1, + sym_primary_expression, + STATE(1057), 1, sym_expression, - STATE(1265), 1, - sym_with_item, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(983), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33714,61 +35358,60 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [13823] = 20, + [13888] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(598), 1, - anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, - sym_identifier, - ACTIONS(946), 1, - anon_sym_LPAREN, - ACTIONS(950), 1, + ACTIONS(69), 1, anon_sym_not, - ACTIONS(952), 1, + ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(81), 1, + sym__string_start, + ACTIONS(325), 1, + sym_identifier, + ACTIONS(331), 1, anon_sym_await, - STATE(705), 1, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + STATE(689), 1, sym_primary_expression, - STATE(708), 1, + STATE(693), 1, sym_string, - STATE(980), 1, + STATE(1018), 1, sym_expression, - STATE(1193), 1, - sym_with_item, - STATE(1403), 1, - sym_with_clause, - ACTIONS(602), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(985), 2, + sym__newline, + sym__semicolon, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33785,61 +35428,120 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [13914] = 20, + [13977] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(598), 1, + ACTIONS(265), 1, + anon_sym_COMMA, + ACTIONS(273), 1, + anon_sym_COLON_EQ, + ACTIONS(987), 1, + sym_identifier, + ACTIONS(275), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(293), 10, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + sym__semicolon, + ACTIONS(297), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(260), 21, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + anon_sym_is, + [14044] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(944), 1, + ACTIONS(954), 1, sym_identifier, - ACTIONS(946), 1, - anon_sym_LPAREN, - ACTIONS(950), 1, + ACTIONS(962), 1, anon_sym_not, - ACTIONS(952), 1, + ACTIONS(964), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(966), 1, anon_sym_await, - STATE(705), 1, + ACTIONS(989), 1, + anon_sym_RPAREN, + STATE(698), 1, sym_primary_expression, - STATE(708), 1, + STATE(699), 1, sym_string, - STATE(980), 1, + STATE(987), 1, sym_expression, - STATE(1193), 1, + STATE(1256), 1, sym_with_item, - STATE(1411), 1, - sym_with_clause, - ACTIONS(602), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33856,61 +35558,61 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [14005] = 20, + [14135] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, - anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(944), 1, + ACTIONS(954), 1, sym_identifier, - ACTIONS(950), 1, + ACTIONS(962), 1, anon_sym_not, - ACTIONS(952), 1, + ACTIONS(964), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(966), 1, anon_sym_await, - ACTIONS(962), 1, - anon_sym_STAR, - ACTIONS(964), 1, - anon_sym_COLON, - STATE(705), 1, + ACTIONS(968), 1, + anon_sym_LPAREN, + STATE(698), 1, sym_primary_expression, - STATE(708), 1, + STATE(699), 1, sym_string, - STATE(1034), 1, + STATE(987), 1, sym_expression, - ACTIONS(602), 2, + STATE(1206), 1, + sym_with_item, + STATE(1402), 1, + sym_with_clause, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33927,61 +35629,60 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [14096] = 20, + [14226] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, - anon_sym_LPAREN, - ACTIONS(598), 1, - anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, + ACTIONS(258), 1, sym_identifier, - ACTIONS(950), 1, - anon_sym_not, - ACTIONS(952), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(966), 1, - anon_sym_RPAREN, - STATE(705), 1, - sym_primary_expression, - STATE(708), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(980), 1, + STATE(595), 1, + sym_primary_expression, + STATE(1082), 1, sym_expression, - STATE(1265), 1, - sym_with_item, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(991), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33998,121 +35699,78 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [14187] = 6, + [14315] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(972), 1, - anon_sym_elif, - STATE(303), 1, - aux_sym_if_statement_repeat1, - STATE(424), 1, - sym_elif_clause, - ACTIONS(968), 12, - sym__string_start, - ts_builtin_sym_end, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(610), 1, anon_sym_LBRACK, + ACTIONS(612), 1, anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(970), 34, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, + ACTIONS(618), 1, + sym__string_start, + ACTIONS(954), 1, + sym_identifier, + ACTIONS(962), 1, anon_sym_not, + ACTIONS(964), 1, anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, + ACTIONS(966), 1, anon_sym_await, - sym_true, - sym_false, - sym_none, - [14250] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(975), 1, - anon_sym_elif, - STATE(304), 1, - aux_sym_if_statement_repeat1, - STATE(425), 1, - sym_elif_clause, - ACTIONS(968), 12, - sym__dedent, - sym__string_start, + ACTIONS(968), 1, anon_sym_LPAREN, + STATE(698), 1, + sym_primary_expression, + STATE(699), 1, + sym_string, + STATE(987), 1, + sym_expression, + STATE(1206), 1, + sym_with_item, + STATE(1410), 1, + sym_with_clause, + ACTIONS(614), 2, + sym_ellipsis, + sym_float, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(970), 34, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, + ACTIONS(600), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(958), 5, anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_else, anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [14313] = 19, + STATE(982), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(796), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [14406] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -34123,15 +35781,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, @@ -34140,7 +35798,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(978), 2, + ACTIONS(993), 2, sym__newline, sym__semicolon, ACTIONS(47), 3, @@ -34152,20 +35810,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34182,7 +35840,7 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [14402] = 19, + [14495] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -34193,15 +35851,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, @@ -34210,7 +35868,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(980), 2, + ACTIONS(995), 2, sym__newline, sym__semicolon, ACTIONS(47), 3, @@ -34222,20 +35880,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34252,60 +35910,117 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [14491] = 19, + [14584] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(997), 1, + anon_sym_elif, + STATE(308), 1, + aux_sym_if_statement_repeat1, + STATE(390), 1, + sym_elif_clause, + ACTIONS(970), 12, + sym__dedent, + sym__string_start, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_LBRACE, - ACTIONS(69), 1, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(972), 34, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, anon_sym_not, - ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(531), 1, + anon_sym_yield, + sym_integer, sym_identifier, - ACTIONS(537), 1, anon_sym_await, - ACTIONS(555), 1, + sym_true, + sym_false, + sym_none, + [14647] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - STATE(692), 1, - sym_primary_expression, - STATE(693), 1, + ACTIONS(642), 1, + anon_sym_not, + ACTIONS(684), 1, + sym_identifier, + ACTIONS(694), 1, + anon_sym_await, + ACTIONS(748), 1, + anon_sym_lambda, + STATE(565), 1, sym_string, - STATE(1018), 1, + STATE(590), 1, + sym_primary_expression, + STATE(920), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(982), 2, - sym__newline, - sym__semicolon, - ACTIONS(47), 3, + STATE(986), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34322,60 +36037,60 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [14580] = 19, + [14736] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(664), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(674), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(738), 1, + ACTIONS(748), 1, anon_sym_lambda, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(919), 1, + STATE(913), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(968), 2, + STATE(979), 2, sym__expression_within_for_in_clause, sym_lambda_within_for_in_clause, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34392,120 +36107,60 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [14669] = 8, + [14825] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(264), 1, - anon_sym_COMMA, - ACTIONS(271), 1, - anon_sym_COLON_EQ, - ACTIONS(984), 1, + ACTIONS(258), 1, sym_identifier, - ACTIONS(273), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(287), 10, - sym__newline, - anon_sym_DOT, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, + ACTIONS(584), 1, anon_sym_LBRACK, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - sym__semicolon, - ACTIONS(291), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(260), 21, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - anon_sym_is, - [14736] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(598), 1, - anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, - sym_identifier, - ACTIONS(946), 1, - anon_sym_LPAREN, - ACTIONS(950), 1, + ACTIONS(628), 1, anon_sym_not, - ACTIONS(952), 1, - anon_sym_lambda, - ACTIONS(954), 1, - anon_sym_await, - STATE(705), 1, - sym_primary_expression, - STATE(708), 1, + STATE(565), 1, sym_string, - STATE(980), 1, + STATE(595), 1, + sym_primary_expression, + STATE(1076), 1, sym_expression, - STATE(1193), 1, - sym_with_item, - STATE(1392), 1, - sym_with_clause, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(1000), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34522,60 +36177,61 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [14827] = 19, + [14914] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(610), 1, + anon_sym_LBRACK, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, - anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(954), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(962), 1, + anon_sym_not, + ACTIONS(964), 1, + anon_sym_lambda, + ACTIONS(966), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, - ACTIONS(561), 1, - anon_sym_LBRACK, - STATE(692), 1, + ACTIONS(1002), 1, + anon_sym_STAR, + ACTIONS(1004), 1, + anon_sym_COLON, + STATE(698), 1, sym_primary_expression, - STATE(693), 1, + STATE(699), 1, sym_string, - STATE(1018), 1, + STATE(1012), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(986), 2, - sym__newline, - sym__semicolon, - ACTIONS(47), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34592,85 +36248,121 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [14916] = 19, + [15005] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(1006), 12, + sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(277), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(279), 1, anon_sym_LBRACE, - ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(1076), 1, - sym_expression, - ACTIONS(293), 2, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(988), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(285), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(269), 5, + ACTIONS(1008), 36, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [15005] = 5, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [15061] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(824), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_EQ, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(822), 32, + sym__newline, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + sym__semicolon, + [15117] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(994), 1, + ACTIONS(1014), 1, anon_sym_case, - STATE(313), 2, + STATE(320), 2, sym_case_block, aux_sym_cases_repeat1, - ACTIONS(990), 12, + ACTIONS(1010), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -34683,7 +36375,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(992), 33, + ACTIONS(1012), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -34717,59 +36409,226 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [15065] = 19, + [15177] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, + ACTIONS(578), 1, + anon_sym_COLON_EQ, + ACTIONS(580), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(573), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(586), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(293), 14, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(598), 1, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + ACTIONS(260), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + [15241] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1023), 1, + anon_sym_COLON_EQ, + ACTIONS(1025), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(1018), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1027), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1016), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + ACTIONS(1021), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + [15305] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(820), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_EQ, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(818), 32, + sym__newline, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + sym__semicolon, + [15361] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(944), 1, + ACTIONS(954), 1, sym_identifier, - ACTIONS(950), 1, + ACTIONS(962), 1, anon_sym_not, - ACTIONS(952), 1, + ACTIONS(964), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(966), 1, anon_sym_await, - STATE(705), 1, + ACTIONS(1004), 1, + anon_sym_COLON, + STATE(698), 1, sym_primary_expression, - STATE(708), 1, + STATE(699), 1, sym_string, - STATE(980), 1, + STATE(1012), 1, sym_expression, - STATE(1265), 1, - sym_with_item, - ACTIONS(602), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34786,12 +36645,17 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [15153] = 3, + [15449] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(999), 12, - sym__dedent, + ACTIONS(1033), 1, + anon_sym_case, + STATE(320), 2, + sym_case_block, + aux_sym_cases_repeat1, + ACTIONS(1029), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -34802,7 +36666,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(997), 36, + ACTIONS(1031), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -34815,13 +36679,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, - anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -34839,12 +36700,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [15209] = 3, + [15509] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1003), 12, - sym__dedent, + ACTIONS(1036), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -34855,7 +36716,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1001), 36, + ACTIONS(1038), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -34892,12 +36753,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [15265] = 3, + [15565] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1007), 12, - sym__dedent, + ACTIONS(1040), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -34908,7 +36769,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1005), 36, + ACTIONS(1042), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -34945,10 +36806,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [15321] = 3, + [15621] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1009), 12, + ACTIONS(1044), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -34961,7 +36822,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1011), 36, + ACTIONS(1046), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -34998,10 +36859,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [15377] = 3, + [15677] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1013), 12, + ACTIONS(1048), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -35014,7 +36875,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1015), 36, + ACTIONS(1050), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -35051,69 +36912,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [15433] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(570), 1, - anon_sym_COLON_EQ, - ACTIONS(572), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(565), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(574), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(287), 14, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - ACTIONS(260), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - [15497] = 3, + [15733] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1013), 12, - sym__dedent, + ACTIONS(1052), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -35124,7 +36928,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1015), 36, + ACTIONS(1054), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -35161,65 +36965,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [15553] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(798), 16, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_EQ, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(796), 32, - sym__newline, - anon_sym_DOT, - anon_sym_from, - anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - sym__semicolon, - [15609] = 3, + [15789] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1009), 12, - sym__dedent, + ACTIONS(1056), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -35230,7 +36981,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1011), 36, + ACTIONS(1058), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -35267,120 +37018,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [15665] = 3, + [15845] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(808), 16, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_EQ, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(806), 32, - sym__newline, - anon_sym_DOT, - anon_sym_from, - anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - sym__semicolon, - [15721] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1024), 1, - anon_sym_COLON_EQ, - ACTIONS(1026), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(1019), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1028), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(1017), 14, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - ACTIONS(1022), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - [15785] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1007), 12, + ACTIONS(1060), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -35393,7 +37034,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1005), 36, + ACTIONS(1062), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -35430,10 +37071,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [15841] = 3, + [15901] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1030), 12, + ACTIONS(1064), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -35446,7 +37087,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1032), 36, + ACTIONS(1066), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -35483,17 +37124,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [15897] = 5, + [15957] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1038), 1, - anon_sym_case, - STATE(337), 2, - sym_case_block, - aux_sym_cases_repeat1, - ACTIONS(1036), 12, - sym__dedent, + ACTIONS(1068), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -35504,7 +37140,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1034), 33, + ACTIONS(1070), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -35517,10 +37153,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, + anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -35538,10 +37177,129 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [15957] = 3, + [16013] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1042), 12, + ACTIONS(265), 1, + anon_sym_COMMA, + ACTIONS(273), 1, + anon_sym_COLON_EQ, + ACTIONS(275), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(297), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(260), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(293), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym__semicolon, + [16077] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1072), 1, + anon_sym_COMMA, + ACTIONS(1075), 1, + anon_sym_COLON_EQ, + ACTIONS(1077), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(1079), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1021), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1016), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym__semicolon, + [16141] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1081), 1, + anon_sym_case, + STATE(333), 2, + sym_case_block, + aux_sym_cases_repeat1, + ACTIONS(1010), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -35554,7 +37312,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1040), 36, + ACTIONS(1012), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -35567,13 +37325,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, - anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -35591,10 +37346,15 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16013] = 3, + [16201] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1046), 12, + ACTIONS(1083), 1, + anon_sym_case, + STATE(333), 2, + sym_case_block, + aux_sym_cases_repeat1, + ACTIONS(1029), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -35607,7 +37367,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1044), 36, + ACTIONS(1031), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -35620,13 +37380,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, - anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -35644,12 +37401,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16069] = 3, + [16261] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1048), 12, + ACTIONS(1036), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -35660,7 +37417,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1050), 36, + ACTIONS(1038), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -35697,12 +37454,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16125] = 3, + [16317] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1052), 12, + ACTIONS(1040), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -35713,7 +37470,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1054), 36, + ACTIONS(1042), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -35750,12 +37507,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16181] = 3, + [16373] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1003), 12, + ACTIONS(1044), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -35766,7 +37523,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1001), 36, + ACTIONS(1046), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -35803,74 +37560,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16237] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1056), 1, - anon_sym_COMMA, - ACTIONS(1059), 1, - anon_sym_COLON_EQ, - ACTIONS(1061), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(1063), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(1022), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1017), 16, - sym__newline, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - sym__semicolon, - [16301] = 5, + [16429] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1065), 1, - anon_sym_case, - STATE(313), 2, - sym_case_block, - aux_sym_cases_repeat1, - ACTIONS(1036), 12, + ACTIONS(1048), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -35881,7 +37576,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1034), 33, + ACTIONS(1050), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -35894,10 +37589,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, + anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -35915,12 +37613,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16361] = 3, + [16485] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(999), 12, + ACTIONS(1052), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -35931,7 +37629,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(997), 36, + ACTIONS(1054), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -35968,15 +37666,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16417] = 5, + [16541] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1067), 1, - anon_sym_case, - STATE(337), 2, - sym_case_block, - aux_sym_cases_repeat1, - ACTIONS(990), 12, + ACTIONS(1056), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -35989,7 +37682,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(992), 33, + ACTIONS(1058), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -36002,10 +37695,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, + anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -36023,12 +37719,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16477] = 3, + [16597] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1046), 12, + ACTIONS(1060), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -36039,7 +37735,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1044), 36, + ACTIONS(1062), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -36076,12 +37772,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16533] = 3, + [16653] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1042), 12, + ACTIONS(1064), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -36092,7 +37788,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1040), 36, + ACTIONS(1066), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -36129,136 +37825,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16589] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(590), 1, - anon_sym_LPAREN, - ACTIONS(598), 1, - anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, - sym_identifier, - ACTIONS(950), 1, - anon_sym_not, - ACTIONS(952), 1, - anon_sym_lambda, - ACTIONS(954), 1, - anon_sym_await, - ACTIONS(964), 1, - anon_sym_COLON, - STATE(705), 1, - sym_primary_expression, - STATE(708), 1, - sym_string, - STATE(1034), 1, - sym_expression, - ACTIONS(602), 2, - sym_ellipsis, - sym_float, - ACTIONS(596), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(588), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(948), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(978), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(787), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [16677] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(264), 1, - anon_sym_COMMA, - ACTIONS(271), 1, - anon_sym_COLON_EQ, - ACTIONS(273), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(291), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(260), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(287), 16, - sym__newline, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - sym__semicolon, - [16741] = 3, + [16709] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1048), 12, + ACTIONS(1068), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -36271,7 +37841,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1050), 36, + ACTIONS(1070), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -36308,10 +37878,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16797] = 3, + [16765] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1030), 12, + ACTIONS(1006), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -36324,7 +37894,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1032), 36, + ACTIONS(1008), 36, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -36361,112 +37931,195 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16853] = 3, + [16821] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(1052), 12, - sym__dedent, - sym__string_start, + ACTIONS(602), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(610), 1, anon_sym_LBRACK, + ACTIONS(612), 1, anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(618), 1, + sym__string_start, + ACTIONS(954), 1, + sym_identifier, + ACTIONS(960), 1, + anon_sym_COLON, + ACTIONS(962), 1, + anon_sym_not, + ACTIONS(964), 1, + anon_sym_lambda, + ACTIONS(966), 1, + anon_sym_await, + STATE(698), 1, + sym_primary_expression, + STATE(699), 1, + sym_string, + STATE(1028), 1, + sym_expression, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(1054), 36, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, + ACTIONS(608), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(600), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(958), 5, anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_else, anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_except, - anon_sym_finally, - anon_sym_with, anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - anon_sym_class, + STATE(982), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(796), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [16909] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(610), 1, + anon_sym_LBRACK, + ACTIONS(612), 1, + anon_sym_LBRACE, + ACTIONS(618), 1, + sym__string_start, + ACTIONS(954), 1, + sym_identifier, + ACTIONS(962), 1, anon_sym_not, + ACTIONS(964), 1, anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, + ACTIONS(966), 1, anon_sym_await, + STATE(698), 1, + sym_primary_expression, + STATE(699), 1, + sym_string, + STATE(987), 1, + sym_expression, + STATE(1256), 1, + sym_with_item, + ACTIONS(614), 2, + sym_ellipsis, + sym_float, + ACTIONS(608), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(600), 4, + sym_integer, sym_true, sym_false, sym_none, - [16909] = 19, + ACTIONS(958), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(982), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(796), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [16997] = 18, ACTIONS(3), 1, sym_comment, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, - sym_identifier, - ACTIONS(950), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(952), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(684), 1, + sym_identifier, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(958), 1, - anon_sym_COLON, - STATE(705), 1, - sym_primary_expression, - STATE(708), 1, + STATE(565), 1, sym_string, - STATE(1024), 1, + STATE(590), 1, + sym_primary_expression, + STATE(885), 1, sym_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36483,14 +38136,14 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [16997] = 5, + [17082] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(822), 1, + ACTIONS(832), 1, anon_sym_else, - STATE(502), 1, + STATE(533), 1, sym_else_clause, - ACTIONS(1070), 12, + ACTIONS(1086), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -36503,7 +38156,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1072), 33, + ACTIONS(1088), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -36537,62 +38190,61 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17056] = 19, + [17141] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(299), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1074), 1, + ACTIONS(954), 1, sym_identifier, - ACTIONS(1078), 1, + ACTIONS(962), 1, + anon_sym_not, + ACTIONS(964), 1, + anon_sym_lambda, + ACTIONS(966), 1, anon_sym_await, - STATE(569), 1, - sym_string, - STATE(589), 1, + STATE(698), 1, sym_primary_expression, - STATE(890), 1, + STATE(699), 1, + sym_string, + STATE(1047), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - STATE(392), 2, - sym_attribute, - sym_subscript, - ACTIONS(285), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(1076), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 14, + STATE(796), 16, sym_binary_operator, sym_unary_operator, + sym_attribute, + sym_subscript, sym_call, sym_list, sym_set, @@ -36605,16 +38257,16 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [17143] = 5, + [17226] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(816), 1, + ACTIONS(832), 1, anon_sym_else, STATE(556), 1, sym_else_clause, - ACTIONS(1082), 12, - sym__dedent, + ACTIONS(1090), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -36625,7 +38277,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1080), 33, + ACTIONS(1092), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -36659,61 +38311,116 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17202] = 18, + [17285] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, + ACTIONS(836), 1, + anon_sym_finally, + STATE(542), 1, + sym_finally_clause, + ACTIONS(1094), 12, + sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(598), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(600), 1, anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, - sym_identifier, - ACTIONS(950), 1, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1096), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, anon_sym_not, - ACTIONS(952), 1, anon_sym_lambda, - ACTIONS(954), 1, + anon_sym_yield, + sym_integer, + sym_identifier, anon_sym_await, - STATE(705), 1, - sym_primary_expression, - STATE(708), 1, + sym_true, + sym_false, + sym_none, + [17344] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + ACTIONS(1098), 1, + sym_identifier, + ACTIONS(1102), 1, + anon_sym_await, + STATE(565), 1, sym_string, - STATE(999), 1, + STATE(595), 1, + sym_primary_expression, + STATE(908), 1, sym_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + STATE(377), 2, + sym_attribute, + sym_subscript, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(1100), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(589), 14, sym_binary_operator, sym_unary_operator, - sym_attribute, - sym_subscript, sym_call, sym_list, sym_set, @@ -36726,57 +38433,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [17287] = 18, + [17431] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(531), 1, - sym_identifier, - ACTIONS(537), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(555), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - STATE(692), 1, - sym_primary_expression, - STATE(693), 1, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(966), 1, + STATE(595), 1, + sym_primary_expression, + STATE(1024), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36793,57 +38500,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [17372] = 18, + [17516] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1045), 1, + STATE(898), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36860,16 +38567,71 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [17457] = 5, + [17601] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(816), 1, + ACTIONS(1106), 1, + anon_sym_COMMA, + ACTIONS(1113), 1, + anon_sym_EQ, + ACTIONS(1111), 14, + anon_sym_COLON, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1109), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1104), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym__semicolon, + [17662] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(832), 1, anon_sym_else, - STATE(517), 1, + STATE(467), 1, sym_else_clause, - ACTIONS(1086), 12, - sym__dedent, + ACTIONS(1115), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -36880,7 +38642,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1084), 33, + ACTIONS(1117), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -36914,57 +38676,57 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17516] = 18, + [17721] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1108), 1, + STATE(1115), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36981,246 +38743,111 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [17601] = 6, + [17806] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1090), 1, - anon_sym_COMMA, - ACTIONS(1097), 1, - anon_sym_EQ, - ACTIONS(1095), 14, - anon_sym_COLON, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(1093), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1088), 16, - sym__newline, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - sym__semicolon, - [17662] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(590), 1, + ACTIONS(836), 1, + anon_sym_finally, + STATE(497), 1, + sym_finally_clause, + ACTIONS(1119), 12, + sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(598), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(600), 1, anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, - sym_identifier, - ACTIONS(950), 1, - anon_sym_not, - ACTIONS(952), 1, - anon_sym_lambda, - ACTIONS(954), 1, - anon_sym_await, - STATE(705), 1, - sym_primary_expression, - STATE(708), 1, - sym_string, - STATE(990), 1, - sym_expression, - ACTIONS(602), 2, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(596), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(588), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(948), 5, + ACTIONS(1121), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - STATE(978), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(787), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [17747] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, + anon_sym_class, anon_sym_not, - ACTIONS(289), 1, anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(1110), 1, - sym_expression, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(285), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(295), 4, + anon_sym_yield, sym_integer, + sym_identifier, + anon_sym_await, sym_true, sym_false, sym_none, - ACTIONS(269), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [17832] = 18, + [17865] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1095), 1, + STATE(1123), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37237,7 +38864,7 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [17917] = 18, + [17950] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -37248,19 +38875,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(985), 1, + STATE(946), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, @@ -37274,20 +38901,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37304,57 +38931,165 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [18002] = 18, + [18035] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(832), 1, + anon_sym_else, + STATE(522), 1, + sym_else_clause, + ACTIONS(1123), 12, + sym__string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_LBRACE, - ACTIONS(299), 1, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1125), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [18094] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(832), 1, + anon_sym_else, + STATE(529), 1, + sym_else_clause, + ACTIONS(1127), 12, sym__string_start, - ACTIONS(578), 1, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(584), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(626), 1, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1129), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, anon_sym_not, - ACTIONS(628), 1, anon_sym_lambda, - ACTIONS(664), 1, + anon_sym_yield, + sym_integer, sym_identifier, - ACTIONS(674), 1, anon_sym_await, - STATE(569), 1, + sym_true, + sym_false, + sym_none, + [18153] = 18, + ACTIONS(3), 1, + sym_comment, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(876), 1, + STATE(1085), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37371,57 +39106,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [18087] = 18, + [18238] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(69), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, + ACTIONS(81), 1, sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, + ACTIONS(325), 1, + sym_identifier, + ACTIONS(331), 1, + anon_sym_await, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + STATE(689), 1, sym_primary_expression, - STATE(909), 1, + STATE(693), 1, + sym_string, + STATE(1072), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37438,57 +39173,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [18172] = 18, + [18323] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(584), 1, - anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(69), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(664), 1, + ACTIONS(81), 1, + sym__string_start, + ACTIONS(325), 1, sym_identifier, - ACTIONS(674), 1, + ACTIONS(331), 1, anon_sym_await, - STATE(569), 1, - sym_string, - STATE(576), 1, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + STATE(689), 1, sym_primary_expression, - STATE(872), 1, + STATE(693), 1, + sym_string, + STATE(958), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37505,16 +39240,12 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [18257] = 5, + [18408] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(820), 1, - anon_sym_finally, - STATE(515), 1, - sym_finally_clause, - ACTIONS(1101), 12, - sym__dedent, + ACTIONS(1131), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37525,7 +39256,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1099), 33, + ACTIONS(1133), 35, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37538,6 +39269,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -37559,74 +39292,61 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [18316] = 18, + [18463] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(832), 1, + anon_sym_else, + STATE(538), 1, + sym_else_clause, + ACTIONS(1135), 12, sym__string_start, - ACTIONS(578), 1, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(584), 1, - anon_sym_LBRACK, - ACTIONS(626), 1, - anon_sym_not, - ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(664), 1, - sym_identifier, - ACTIONS(674), 1, - anon_sym_await, - STATE(569), 1, - sym_string, - STATE(576), 1, - sym_primary_expression, - STATE(860), 1, - sym_expression, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(582), 3, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_TILDE, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(670), 5, + sym_ellipsis, + sym_float, + ACTIONS(1137), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [18401] = 18, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [18522] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -37637,19 +39357,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(1083), 1, + STATE(1121), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, @@ -37663,87 +39383,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(937), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(764), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [18486] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(1026), 1, - sym_expression, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(285), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(269), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37760,7 +39413,7 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [18571] = 18, + [18607] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -37771,19 +39424,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(1017), 1, + STATE(927), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, @@ -37797,20 +39450,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37827,57 +39480,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [18656] = 18, + [18692] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(664), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(674), 1, + ACTIONS(694), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(590), 1, sym_primary_expression, - STATE(883), 1, + STATE(941), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37894,57 +39547,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [18741] = 18, + [18777] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(571), 1, anon_sym_LPAREN, ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(626), 1, - anon_sym_not, ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(664), 1, - sym_identifier, - ACTIONS(674), 1, - anon_sym_await, - STATE(569), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(886), 1, + STATE(1147), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37961,16 +39614,12 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [18826] = 5, + [18862] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(816), 1, - anon_sym_else, - STATE(458), 1, - sym_else_clause, - ACTIONS(1105), 12, - sym__dedent, + ACTIONS(1139), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37981,7 +39630,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1103), 33, + ACTIONS(1141), 35, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37994,6 +39643,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -38015,57 +39666,57 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [18885] = 18, + [18917] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(584), 1, - anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(69), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(664), 1, + ACTIONS(81), 1, + sym__string_start, + ACTIONS(325), 1, sym_identifier, - ACTIONS(674), 1, + ACTIONS(331), 1, anon_sym_await, - STATE(569), 1, - sym_string, - STATE(576), 1, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + STATE(689), 1, sym_primary_expression, - STATE(928), 1, + STATE(693), 1, + sym_string, + STATE(966), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38082,57 +39733,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [18970] = 18, + [19002] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, - anon_sym_LPAREN, - ACTIONS(598), 1, - anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, - sym_identifier, - ACTIONS(950), 1, + ACTIONS(69), 1, anon_sym_not, - ACTIONS(952), 1, + ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(81), 1, + sym__string_start, + ACTIONS(325), 1, + sym_identifier, + ACTIONS(331), 1, anon_sym_await, - STATE(705), 1, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + STATE(689), 1, sym_primary_expression, - STATE(708), 1, + STATE(693), 1, sym_string, - STATE(1001), 1, + STATE(967), 1, sym_expression, - ACTIONS(602), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38149,57 +39800,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [19055] = 18, + [19087] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(69), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, + ACTIONS(81), 1, sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, + ACTIONS(325), 1, + sym_identifier, + ACTIONS(331), 1, + anon_sym_await, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + STATE(689), 1, sym_primary_expression, - STATE(1056), 1, + STATE(693), 1, + sym_string, + STATE(977), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38216,57 +39867,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [19140] = 18, + [19172] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(571), 1, anon_sym_LPAREN, ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(626), 1, - anon_sym_not, ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(664), 1, - sym_identifier, - ACTIONS(674), 1, - anon_sym_await, - STATE(569), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(984), 1, + STATE(1096), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38283,57 +39934,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [19225] = 18, + [19257] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(69), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, + ACTIONS(81), 1, sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, + ACTIONS(325), 1, + sym_identifier, + ACTIONS(331), 1, + anon_sym_await, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + STATE(689), 1, sym_primary_expression, - STATE(881), 1, + STATE(693), 1, + sym_string, + STATE(1068), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38350,124 +40001,112 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [19310] = 18, + [19342] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(1025), 1, + anon_sym_EQ, + ACTIONS(1018), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1016), 14, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(277), 1, + anon_sym_if, + anon_sym_in, anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(901), 1, - sym_expression, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(285), 3, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + ACTIONS(1027), 14, + anon_sym_COLON, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1021), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(269), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [19395] = 18, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + [19403] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(684), 1, + sym_identifier, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(880), 1, + STATE(875), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38484,57 +40123,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [19480] = 18, + [19488] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, - anon_sym_LPAREN, - ACTIONS(598), 1, - anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, - sym_identifier, - ACTIONS(950), 1, + ACTIONS(69), 1, anon_sym_not, - ACTIONS(952), 1, + ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(81), 1, + sym__string_start, + ACTIONS(325), 1, + sym_identifier, + ACTIONS(331), 1, anon_sym_await, - STATE(705), 1, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + STATE(689), 1, sym_primary_expression, - STATE(708), 1, + STATE(693), 1, sym_string, - STATE(1053), 1, + STATE(960), 1, sym_expression, - ACTIONS(602), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38551,57 +40190,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [19565] = 18, + [19573] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(684), 1, + sym_identifier, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(870), 1, + STATE(877), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38618,57 +40257,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [19650] = 18, + [19658] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(878), 1, + STATE(899), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38685,111 +40324,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [19735] = 5, + [19743] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(826), 1, - anon_sym_finally, - STATE(470), 1, - sym_finally_clause, - ACTIONS(1101), 12, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, sym__string_start, - ts_builtin_sym_end, + ACTIONS(590), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(596), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1099), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, + ACTIONS(642), 1, anon_sym_not, + ACTIONS(644), 1, anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [19794] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(258), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(1101), 1, + STATE(878), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38806,57 +40391,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [19879] = 18, + [19828] = 18, ACTIONS(3), 1, sym_comment, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, - sym_identifier, - ACTIONS(950), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(952), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(684), 1, + sym_identifier, + ACTIONS(694), 1, anon_sym_await, - STATE(705), 1, - sym_primary_expression, - STATE(708), 1, + STATE(565), 1, sym_string, - STATE(973), 1, + STATE(590), 1, + sym_primary_expression, + STATE(880), 1, sym_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38873,57 +40458,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [19964] = 18, + [19913] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(69), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(590), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(71), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(531), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, - ACTIONS(561), 1, - anon_sym_LBRACK, - STATE(692), 1, - sym_primary_expression, - STATE(693), 1, + STATE(565), 1, sym_string, - STATE(1152), 1, + STATE(590), 1, + sym_primary_expression, + STATE(881), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38940,7 +40525,7 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [20049] = 18, + [19998] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -38951,19 +40536,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(957), 1, + STATE(1035), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, @@ -38977,87 +40562,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(937), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(764), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [20134] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, - sym_primary_expression, - STATE(1149), 1, - sym_expression, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(285), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(269), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39074,14 +40592,14 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [20219] = 5, + [20083] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(816), 1, + ACTIONS(838), 1, anon_sym_else, - STATE(494), 1, + STATE(471), 1, sym_else_clause, - ACTIONS(1070), 12, + ACTIONS(1090), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -39094,7 +40612,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1072), 33, + ACTIONS(1092), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -39128,57 +40646,57 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [20278] = 18, + [20142] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(69), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(297), 1, - anon_sym_await, - ACTIONS(299), 1, + ACTIONS(81), 1, sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, + ACTIONS(325), 1, + sym_identifier, + ACTIONS(331), 1, + anon_sym_await, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + STATE(689), 1, sym_primary_expression, - STATE(866), 1, + STATE(693), 1, + sym_string, + STATE(939), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39195,57 +40713,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [20363] = 18, + [20227] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(69), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(590), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(71), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(531), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, - ACTIONS(561), 1, - anon_sym_LBRACK, - STATE(692), 1, - sym_primary_expression, - STATE(693), 1, + STATE(565), 1, sym_string, - STATE(970), 1, + STATE(590), 1, + sym_primary_expression, + STATE(887), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39262,57 +40780,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [20448] = 18, + [20312] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(531), 1, - sym_identifier, - ACTIONS(537), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(555), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - STATE(692), 1, - sym_primary_expression, - STATE(693), 1, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(960), 1, + STATE(595), 1, + sym_primary_expression, + STATE(1089), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39329,16 +40847,12 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [20533] = 5, + [20397] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(826), 1, - anon_sym_finally, - STATE(513), 1, - sym_finally_clause, - ACTIONS(1107), 12, + ACTIONS(1145), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -39349,7 +40863,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1109), 33, + ACTIONS(1143), 35, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -39362,6 +40876,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -39383,10 +40899,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [20592] = 3, + [20452] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1113), 12, + ACTIONS(838), 1, + anon_sym_else, + STATE(486), 1, + sym_else_clause, + ACTIONS(1086), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -39399,7 +40919,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1111), 35, + ACTIONS(1088), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -39412,8 +40932,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -39435,62 +40953,115 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [20647] = 6, + [20511] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1026), 1, - anon_sym_EQ, - ACTIONS(1019), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1017), 14, - anon_sym_DOT, + ACTIONS(842), 1, + anon_sym_finally, + STATE(488), 1, + sym_finally_clause, + ACTIONS(1094), 12, + sym__dedent, + sym__string_start, anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - ACTIONS(1028), 14, - anon_sym_COLON, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(1022), 15, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1096), 33, + anon_sym_import, + anon_sym_from, anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [20570] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(838), 1, + anon_sym_else, + STATE(500), 1, + sym_else_clause, + ACTIONS(1115), 12, + sym__dedent, + sym__string_start, + anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, anon_sym_STAR_STAR, anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - [20708] = 18, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1117), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [20629] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -39501,19 +41072,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(1037), 1, + STATE(952), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, @@ -39527,20 +41098,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39557,191 +41128,286 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [20793] = 18, + [20714] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, + ACTIONS(842), 1, + anon_sym_finally, + STATE(505), 1, + sym_finally_clause, + ACTIONS(1119), 12, + sym__dedent, + sym__string_start, anon_sym_LPAREN, - ACTIONS(598), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(600), 1, anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, - sym_identifier, - ACTIONS(950), 1, - anon_sym_not, - ACTIONS(952), 1, - anon_sym_lambda, - ACTIONS(954), 1, - anon_sym_await, - STATE(705), 1, - sym_primary_expression, - STATE(708), 1, - sym_string, - STATE(1008), 1, - sym_expression, - ACTIONS(602), 2, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(596), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(588), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(948), 5, + ACTIONS(1121), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - STATE(978), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(787), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [20878] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(584), 1, - anon_sym_LBRACK, - ACTIONS(626), 1, + anon_sym_class, anon_sym_not, - ACTIONS(628), 1, anon_sym_lambda, - ACTIONS(664), 1, + anon_sym_yield, + sym_integer, sym_identifier, - ACTIONS(674), 1, anon_sym_await, - STATE(569), 1, - sym_string, - STATE(576), 1, - sym_primary_expression, - STATE(868), 1, - sym_expression, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(582), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(295), 4, - sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(862), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [20963] = 18, + [20773] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(838), 1, + anon_sym_else, + STATE(510), 1, + sym_else_clause, + ACTIONS(1123), 12, + sym__dedent, + sym__string_start, anon_sym_LPAREN, - ACTIONS(277), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(279), 1, anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1125), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [20832] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(838), 1, + anon_sym_else, + STATE(514), 1, + sym_else_clause, + ACTIONS(1127), 12, + sym__dedent, + sym__string_start, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1129), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [20891] = 18, + ACTIONS(3), 1, + sym_comment, + ACTIONS(258), 1, + sym_identifier, ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, anon_sym_not, - ACTIONS(289), 1, + STATE(565), 1, + sym_string, + STATE(595), 1, + sym_primary_expression, + STATE(1070), 1, + sym_expression, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(271), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(863), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [20976] = 18, + ACTIONS(3), 1, + sym_comment, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1011), 1, + STATE(1071), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39758,16 +41424,12 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [21048] = 5, + [21061] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(822), 1, - anon_sym_else, - STATE(484), 1, - sym_else_clause, - ACTIONS(1086), 12, + ACTIONS(1131), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -39778,7 +41440,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1084), 33, + ACTIONS(1133), 35, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -39791,6 +41453,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -39812,12 +41476,16 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [21107] = 3, + [21116] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1113), 12, + ACTIONS(838), 1, + anon_sym_else, + STATE(519), 1, + sym_else_clause, + ACTIONS(1135), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -39828,7 +41496,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1111), 35, + ACTIONS(1137), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -39841,8 +41509,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -39864,57 +41530,57 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [21162] = 18, + [21175] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, - anon_sym_LPAREN, - ACTIONS(598), 1, - anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, + ACTIONS(258), 1, sym_identifier, - ACTIONS(950), 1, - anon_sym_not, - ACTIONS(952), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(303), 1, anon_sym_await, - STATE(705), 1, - sym_primary_expression, - STATE(708), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(1047), 1, + STATE(595), 1, + sym_primary_expression, + STATE(908), 1, sym_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39931,16 +41597,67 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [21247] = 5, + [21260] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(822), 1, - anon_sym_else, - STATE(519), 1, - sym_else_clause, - ACTIONS(1115), 12, + ACTIONS(1149), 1, + anon_sym_COMMA, + ACTIONS(1156), 1, + anon_sym_EQ, + ACTIONS(1154), 14, + anon_sym_COLON, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1152), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1147), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym__semicolon, + [21321] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1139), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -39951,7 +41668,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1117), 33, + ACTIONS(1141), 35, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -39964,6 +41681,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -39985,57 +41704,57 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [21306] = 18, + [21376] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(584), 1, - anon_sym_LBRACK, - ACTIONS(626), 1, + ACTIONS(69), 1, anon_sym_not, - ACTIONS(628), 1, + ACTIONS(71), 1, anon_sym_lambda, - ACTIONS(664), 1, + ACTIONS(81), 1, + sym__string_start, + ACTIONS(325), 1, sym_identifier, - ACTIONS(674), 1, + ACTIONS(331), 1, anon_sym_await, - STATE(569), 1, - sym_string, - STATE(576), 1, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + STATE(689), 1, sym_primary_expression, - STATE(882), 1, + STATE(693), 1, + sym_string, + STATE(1018), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(77), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40052,57 +41771,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [21391] = 18, + [21461] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1145), 1, + STATE(1148), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40119,7 +41838,59 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [21476] = 18, + [21546] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1145), 12, + sym__string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1143), 35, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_elif, + anon_sym_else, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [21601] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -40130,19 +41901,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(941), 1, + STATE(1064), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, @@ -40156,20 +41927,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40186,57 +41957,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [21561] = 18, + [21686] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, - anon_sym_LPAREN, - ACTIONS(598), 1, - anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, + ACTIONS(258), 1, sym_identifier, - ACTIONS(950), 1, - anon_sym_not, - ACTIONS(952), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(303), 1, anon_sym_await, - STATE(705), 1, - sym_primary_expression, - STATE(708), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(1006), 1, + STATE(595), 1, + sym_primary_expression, + STATE(871), 1, sym_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40253,57 +42024,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [21646] = 18, + [21771] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(531), 1, - sym_identifier, - ACTIONS(537), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(555), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - STATE(692), 1, - sym_primary_expression, - STATE(693), 1, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(923), 1, + STATE(595), 1, + sym_primary_expression, + STATE(872), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40320,57 +42091,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [21731] = 18, + [21856] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1087), 1, + STATE(873), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40387,57 +42158,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [21816] = 18, + [21941] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, - anon_sym_LPAREN, - ACTIONS(598), 1, - anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(944), 1, + ACTIONS(258), 1, sym_identifier, - ACTIONS(950), 1, - anon_sym_not, - ACTIONS(952), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(303), 1, anon_sym_await, - STATE(705), 1, - sym_primary_expression, - STATE(708), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(1005), 1, + STATE(595), 1, + sym_primary_expression, + STATE(866), 1, sym_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40454,57 +42225,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [21901] = 18, + [22026] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1144), 1, + STATE(874), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40521,57 +42292,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [21986] = 18, + [22111] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(531), 1, - sym_identifier, - ACTIONS(537), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(555), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - STATE(692), 1, - sym_primary_expression, - STATE(693), 1, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(934), 1, + STATE(595), 1, + sym_primary_expression, + STATE(876), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40588,57 +42359,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [22071] = 18, + [22196] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1140), 1, + STATE(879), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40655,57 +42426,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [22156] = 18, + [22281] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(610), 1, + anon_sym_LBRACK, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, - anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(954), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(962), 1, + anon_sym_not, + ACTIONS(964), 1, + anon_sym_lambda, + ACTIONS(966), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, - ACTIONS(561), 1, - anon_sym_LBRACK, - STATE(692), 1, + STATE(698), 1, sym_primary_expression, - STATE(693), 1, + STATE(699), 1, sym_string, - STATE(1061), 1, + STATE(1001), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40722,57 +42493,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [22241] = 18, + [22366] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(618), 1, + sym__string_start, + ACTIONS(954), 1, + sym_identifier, + ACTIONS(962), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(964), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(966), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, + STATE(698), 1, sym_primary_expression, - STATE(1085), 1, + STATE(699), 1, + sym_string, + STATE(1006), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40789,57 +42560,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [22326] = 18, + [22451] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(618), 1, + sym__string_start, + ACTIONS(954), 1, + sym_identifier, + ACTIONS(962), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(964), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(966), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, + STATE(698), 1, sym_primary_expression, - STATE(879), 1, + STATE(699), 1, + sym_string, + STATE(1007), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40856,112 +42627,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [22411] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1056), 1, - anon_sym_COMMA, - ACTIONS(1061), 1, - anon_sym_EQ, - ACTIONS(1063), 14, - anon_sym_COLON, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(1022), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1017), 16, - sym__newline, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - sym__semicolon, - [22472] = 18, + [22536] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(618), 1, + sym__string_start, + ACTIONS(954), 1, + sym_identifier, + ACTIONS(962), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(964), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(966), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, + STATE(698), 1, sym_primary_expression, - STATE(1138), 1, + STATE(699), 1, + sym_string, + STATE(970), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40978,57 +42694,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [22557] = 18, + [22621] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(610), 1, + anon_sym_LBRACK, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, - anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(954), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(962), 1, + anon_sym_not, + ACTIONS(964), 1, + anon_sym_lambda, + ACTIONS(966), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, - ACTIONS(561), 1, - anon_sym_LBRACK, - STATE(692), 1, + STATE(698), 1, sym_primary_expression, - STATE(693), 1, + STATE(699), 1, sym_string, - STATE(932), 1, + STATE(971), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41045,273 +42761,124 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [22642] = 5, + [22706] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(820), 1, - anon_sym_finally, - STATE(546), 1, - sym_finally_clause, - ACTIONS(1107), 12, - sym__dedent, - sym__string_start, + ACTIONS(602), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(610), 1, anon_sym_LBRACK, + ACTIONS(612), 1, anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1109), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, + ACTIONS(618), 1, + sym__string_start, + ACTIONS(954), 1, + sym_identifier, + ACTIONS(962), 1, anon_sym_not, + ACTIONS(964), 1, anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, + ACTIONS(966), 1, anon_sym_await, - sym_true, - sym_false, - sym_none, - [22701] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(816), 1, - anon_sym_else, - STATE(541), 1, - sym_else_clause, - ACTIONS(1115), 12, - sym__dedent, - sym__string_start, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + STATE(698), 1, + sym_primary_expression, + STATE(699), 1, + sym_string, + STATE(976), 1, + sym_expression, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(1117), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [22760] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(822), 1, - anon_sym_else, - STATE(529), 1, - sym_else_clause, - ACTIONS(1119), 12, - sym__string_start, - ts_builtin_sym_end, - anon_sym_LPAREN, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1121), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, + ACTIONS(600), 4, sym_integer, - sym_identifier, - anon_sym_await, sym_true, sym_false, sym_none, - [22819] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(822), 1, - anon_sym_else, - STATE(472), 1, - sym_else_clause, - ACTIONS(1105), 12, - sym__string_start, - ts_builtin_sym_end, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1103), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, + ACTIONS(958), 5, anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [22878] = 18, + STATE(982), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(796), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [22791] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(618), 1, + sym__string_start, + ACTIONS(954), 1, + sym_identifier, + ACTIONS(962), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(964), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(966), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, + STATE(698), 1, sym_primary_expression, - STATE(1107), 1, + STATE(699), 1, + sym_string, + STATE(983), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41328,59 +42895,7 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [22963] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1125), 12, - sym__dedent, - sym__string_start, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1123), 35, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_elif, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [23018] = 18, + [22876] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -41391,19 +42906,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(953), 1, + STATE(978), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, @@ -41417,20 +42932,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41447,161 +42962,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [23103] = 3, + [22961] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(1127), 12, - sym__string_start, - ts_builtin_sym_end, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, + ACTIONS(283), 1, anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1129), 35, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_elif, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [23158] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1127), 12, - sym__dedent, + ACTIONS(305), 1, sym__string_start, + ACTIONS(590), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(596), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1129), 35, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_elif, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, + ACTIONS(642), 1, anon_sym_not, + ACTIONS(644), 1, anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [23213] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(258), 1, + ACTIONS(684), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, - anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(1093), 1, + STATE(860), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41618,114 +43029,141 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [23298] = 6, + [23046] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(1133), 1, - anon_sym_COMMA, - ACTIONS(1140), 1, - anon_sym_EQ, - ACTIONS(1138), 14, - anon_sym_COLON, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(1136), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1131), 16, - sym__newline, - anon_sym_DOT, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, + ACTIONS(584), 1, anon_sym_LBRACK, + ACTIONS(628), 1, anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - sym__semicolon, - [23359] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1125), 12, - sym__string_start, - ts_builtin_sym_end, - anon_sym_LPAREN, + STATE(565), 1, + sym_string, + STATE(595), 1, + sym_primary_expression, + STATE(1063), 1, + sym_expression, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1123), 35, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(271), 5, anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - anon_sym_class, + STATE(863), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [23131] = 18, + ACTIONS(3), 1, + sym_comment, + ACTIONS(51), 1, + anon_sym_LBRACE, + ACTIONS(69), 1, anon_sym_not, + ACTIONS(71), 1, anon_sym_lambda, - anon_sym_yield, - sym_integer, + ACTIONS(81), 1, + sym__string_start, + ACTIONS(325), 1, sym_identifier, + ACTIONS(331), 1, anon_sym_await, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + STATE(689), 1, + sym_primary_expression, + STATE(693), 1, + sym_string, + STATE(1016), 1, + sym_expression, + ACTIONS(75), 2, + sym_ellipsis, + sym_float, + ACTIONS(47), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(77), 4, + sym_integer, sym_true, sym_false, sym_none, - [23414] = 18, + ACTIONS(327), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(940), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(773), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [23216] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -41736,19 +43174,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(1018), 1, + STATE(1066), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, @@ -41762,20 +43200,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41792,57 +43230,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [23499] = 18, + [23301] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(258), 1, - sym_identifier, - ACTIONS(262), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(642), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(644), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(684), 1, + sym_identifier, + ACTIONS(694), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(590), 1, sym_primary_expression, - STATE(1098), 1, + STATE(984), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(690), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41859,7 +43297,7 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [23584] = 18, + [23386] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -41870,19 +43308,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(1050), 1, + STATE(980), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, @@ -41896,20 +43334,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41926,7 +43364,7 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [23669] = 18, + [23471] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -41937,19 +43375,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(1078), 1, + STATE(1083), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, @@ -41963,20 +43401,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41993,57 +43431,112 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [23754] = 18, + [23556] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(1072), 1, + anon_sym_COMMA, + ACTIONS(1077), 1, + anon_sym_EQ, + ACTIONS(1079), 14, + anon_sym_COLON, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1021), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1016), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym__semicolon, + [23617] = 18, + ACTIONS(3), 1, + sym_comment, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(571), 1, anon_sym_LPAREN, ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(626), 1, - anon_sym_not, ACTIONS(628), 1, - anon_sym_lambda, - ACTIONS(664), 1, - sym_identifier, - ACTIONS(674), 1, - anon_sym_await, - STATE(569), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(576), 1, + STATE(595), 1, sym_primary_expression, - STATE(871), 1, + STATE(860), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(670), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42060,57 +43553,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [23839] = 18, + [23702] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(860), 1, + STATE(1021), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42127,7 +43620,7 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [23924] = 18, + [23787] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, @@ -42138,19 +43631,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(81), 1, sym__string_start, - ACTIONS(531), 1, + ACTIONS(325), 1, sym_identifier, - ACTIONS(537), 1, + ACTIONS(331), 1, anon_sym_await, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - STATE(692), 1, + STATE(689), 1, sym_primary_expression, STATE(693), 1, sym_string, - STATE(991), 1, + STATE(959), 1, sym_expression, ACTIONS(75), 2, sym_ellipsis, @@ -42164,20 +43657,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(327), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(940), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42194,111 +43687,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [24009] = 5, + [23872] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(822), 1, - anon_sym_else, - STATE(488), 1, - sym_else_clause, - ACTIONS(1082), 12, - sym__string_start, - ts_builtin_sym_end, + ACTIONS(602), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(610), 1, anon_sym_LBRACK, + ACTIONS(612), 1, anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1080), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [24068] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(258), 1, + ACTIONS(618), 1, + sym__string_start, + ACTIONS(954), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(283), 1, + ACTIONS(962), 1, anon_sym_not, - ACTIONS(289), 1, + ACTIONS(964), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(966), 1, anon_sym_await, - ACTIONS(299), 1, - sym__string_start, - STATE(569), 1, - sym_string, - STATE(589), 1, + STATE(698), 1, sym_primary_expression, - STATE(1128), 1, + STATE(699), 1, + sym_string, + STATE(1003), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42315,57 +43754,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [24153] = 18, + [23957] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(888), 1, + STATE(1090), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42382,57 +43821,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [24238] = 18, + [24042] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(531), 1, - sym_identifier, - ACTIONS(537), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(555), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - STATE(692), 1, - sym_primary_expression, - STATE(693), 1, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(1064), 1, + STATE(595), 1, + sym_primary_expression, + STATE(1125), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42449,57 +43888,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [24323] = 18, + [24127] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(890), 1, + STATE(1132), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42516,111 +43955,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [24408] = 5, + [24212] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(816), 1, - anon_sym_else, - STATE(537), 1, - sym_else_clause, - ACTIONS(1119), 12, - sym__dedent, - sym__string_start, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1121), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, + ACTIONS(258), 1, sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [24467] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(51), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(531), 1, - sym_identifier, - ACTIONS(537), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(555), 1, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - STATE(692), 1, - sym_primary_expression, - STATE(693), 1, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(962), 1, + STATE(595), 1, + sym_primary_expression, + STATE(1134), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(533), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(937), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42637,57 +44022,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [24552] = 18, + [24297] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1069), 1, + STATE(1135), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42704,57 +44089,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [24637] = 18, + [24382] = 18, ACTIONS(3), 1, sym_comment, ACTIONS(258), 1, sym_identifier, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, ACTIONS(283), 1, - anon_sym_not, - ACTIONS(289), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, anon_sym_lambda, - ACTIONS(297), 1, + ACTIONS(303), 1, anon_sym_await, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(569), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, sym_string, - STATE(589), 1, + STATE(595), 1, sym_primary_expression, - STATE(1067), 1, + STATE(1140), 1, sym_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(269), 5, + ACTIONS(271), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(862), 6, + STATE(863), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42771,57 +44156,57 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [24722] = 18, + [24467] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(944), 1, + ACTIONS(954), 1, sym_identifier, - ACTIONS(950), 1, + ACTIONS(962), 1, anon_sym_not, - ACTIONS(952), 1, + ACTIONS(964), 1, anon_sym_lambda, - ACTIONS(954), 1, + ACTIONS(966), 1, anon_sym_await, - STATE(705), 1, + STATE(698), 1, sym_primary_expression, - STATE(708), 1, + STATE(699), 1, sym_string, - STATE(969), 1, + STATE(1046), 1, sym_expression, - ACTIONS(602), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 4, + ACTIONS(600), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(948), 5, + ACTIONS(958), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(978), 6, + STATE(982), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(787), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42838,112 +44223,211 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [24807] = 3, + [24552] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(1144), 12, - sym__dedent, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(584), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, + sym_string, + STATE(595), 1, + sym_primary_expression, + STATE(1142), 1, + sym_expression, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(1142), 34, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(271), 5, anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, anon_sym_match, - anon_sym_case, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [24861] = 3, + STATE(863), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [24637] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(1148), 12, - sym__dedent, + ACTIONS(258), 1, + sym_identifier, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, + anon_sym_await, + ACTIONS(305), 1, sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(584), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, + sym_string, + STATE(595), 1, + sym_primary_expression, + STATE(1143), 1, + sym_expression, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(1146), 34, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(271), 5, anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_finally, - anon_sym_with, anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, + STATE(863), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [24722] = 18, + ACTIONS(3), 1, + sym_comment, + ACTIONS(258), 1, sym_identifier, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(295), 1, + anon_sym_lambda, + ACTIONS(303), 1, anon_sym_await, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(628), 1, + anon_sym_not, + STATE(565), 1, + sym_string, + STATE(595), 1, + sym_primary_expression, + STATE(1037), 1, + sym_expression, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(301), 4, + sym_integer, sym_true, sym_false, sym_none, - [24915] = 3, + ACTIONS(271), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(863), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [24807] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1150), 12, + ACTIONS(1158), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -42956,7 +44440,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1152), 34, + ACTIONS(1160), 34, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -42991,10 +44475,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [24969] = 3, + [24861] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1148), 12, + ACTIONS(1162), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -43007,7 +44491,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1146), 34, + ACTIONS(1164), 34, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43042,12 +44526,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [25023] = 3, + [24915] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1154), 12, + ACTIONS(1162), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -43058,7 +44542,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1156), 34, + ACTIONS(1164), 34, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43093,12 +44577,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [25077] = 3, + [24969] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1150), 12, - sym__dedent, + ACTIONS(1166), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -43109,7 +44593,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1152), 34, + ACTIONS(1168), 34, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43144,12 +44628,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [25131] = 3, + [25023] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1144), 12, + ACTIONS(1166), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -43160,7 +44644,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1142), 34, + ACTIONS(1168), 34, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43195,10 +44679,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [25185] = 3, + [25077] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1160), 12, + ACTIONS(1172), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -43211,7 +44695,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1158), 34, + ACTIONS(1170), 34, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43228,9 +44712,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_finally, anon_sym_with, anon_sym_match, - anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -43246,10 +44730,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [25239] = 3, + [25131] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1164), 12, + ACTIONS(1176), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -43262,7 +44746,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1162), 34, + ACTIONS(1174), 34, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43297,12 +44781,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [25293] = 3, + [25185] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1160), 12, + ACTIONS(1180), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -43313,7 +44797,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1158), 34, + ACTIONS(1178), 34, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43348,10 +44832,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [25347] = 3, + [25239] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1164), 12, + ACTIONS(1172), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -43364,7 +44848,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1162), 34, + ACTIONS(1170), 34, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43381,9 +44865,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_finally, anon_sym_with, anon_sym_match, - anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -43399,10 +44883,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [25401] = 3, + [25293] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1154), 12, + ACTIONS(1158), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -43415,7 +44899,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1156), 34, + ACTIONS(1160), 34, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43432,9 +44916,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_finally, anon_sym_with, anon_sym_match, + anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -43450,12 +44934,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [25455] = 3, + [25347] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1168), 12, - sym__dedent, + ACTIONS(1176), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -43466,7 +44950,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1166), 33, + ACTIONS(1174), 34, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43485,6 +44969,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_try, anon_sym_with, anon_sym_match, + anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -43500,10 +44985,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [25508] = 3, + [25401] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1170), 12, + ACTIONS(1180), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -43516,7 +45001,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1172), 33, + ACTIONS(1178), 34, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43535,6 +45020,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_try, anon_sym_with, anon_sym_match, + anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -43550,10 +45036,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [25561] = 3, + [25455] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1176), 12, + ACTIONS(1184), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -43566,7 +45052,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1174), 33, + ACTIONS(1182), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43600,12 +45086,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [25614] = 3, + [25508] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1180), 12, - sym__dedent, + ACTIONS(1186), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -43616,7 +45102,107 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1178), 33, + ACTIONS(1188), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [25561] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(848), 12, + sym__dedent, + sym__string_start, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(846), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [25614] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1192), 12, + sym__dedent, + sym__string_start, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1190), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43653,7 +45239,7 @@ static const uint16_t ts_small_parse_table[] = { [25667] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1182), 12, + ACTIONS(1194), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -43666,7 +45252,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1184), 33, + ACTIONS(1196), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43703,9 +45289,9 @@ static const uint16_t ts_small_parse_table[] = { [25720] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1186), 12, + ACTIONS(1200), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -43716,7 +45302,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1188), 33, + ACTIONS(1198), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43753,7 +45339,7 @@ static const uint16_t ts_small_parse_table[] = { [25773] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1192), 12, + ACTIONS(1204), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -43766,7 +45352,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1190), 33, + ACTIONS(1202), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43803,9 +45389,9 @@ static const uint16_t ts_small_parse_table[] = { [25826] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1186), 12, - sym__dedent, + ACTIONS(1206), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -43816,7 +45402,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1188), 33, + ACTIONS(1208), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43853,9 +45439,9 @@ static const uint16_t ts_small_parse_table[] = { [25879] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1196), 12, - sym__dedent, + ACTIONS(1210), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -43866,7 +45452,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1194), 33, + ACTIONS(1212), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43903,7 +45489,7 @@ static const uint16_t ts_small_parse_table[] = { [25932] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1198), 12, + ACTIONS(1214), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -43916,7 +45502,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1200), 33, + ACTIONS(1216), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -43953,7 +45539,7 @@ static const uint16_t ts_small_parse_table[] = { [25985] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1204), 12, + ACTIONS(1220), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -43966,7 +45552,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1202), 33, + ACTIONS(1218), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44003,9 +45589,9 @@ static const uint16_t ts_small_parse_table[] = { [26038] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(828), 12, - sym__dedent, + ACTIONS(1222), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44016,7 +45602,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(830), 33, + ACTIONS(1224), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44053,9 +45639,9 @@ static const uint16_t ts_small_parse_table[] = { [26091] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1206), 12, + ACTIONS(1228), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44066,7 +45652,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1208), 33, + ACTIONS(1226), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44103,9 +45689,9 @@ static const uint16_t ts_small_parse_table[] = { [26144] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1210), 12, + ACTIONS(1232), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44116,7 +45702,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1212), 33, + ACTIONS(1230), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44153,7 +45739,7 @@ static const uint16_t ts_small_parse_table[] = { [26197] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1168), 12, + ACTIONS(1234), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -44166,7 +45752,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1166), 33, + ACTIONS(1236), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44200,10 +45786,76 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26250] = 3, + [26250] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(652), 1, + sym_identifier, + ACTIONS(654), 1, + anon_sym_LPAREN, + ACTIONS(664), 1, + anon_sym_LBRACK, + ACTIONS(666), 1, + anon_sym_await, + ACTIONS(1240), 1, + anon_sym_STAR, + STATE(565), 1, + sym_string, + STATE(840), 1, + sym_pattern, + STATE(844), 1, + sym_primary_expression, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + ACTIONS(1238), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + STATE(722), 2, + sym_attribute, + sym_subscript, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(833), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(658), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(589), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [26335] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1216), 12, + ACTIONS(1094), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -44216,7 +45868,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1214), 33, + ACTIONS(1096), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44250,12 +45902,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26303] = 3, + [26388] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1192), 12, + ACTIONS(828), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44266,7 +45918,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1190), 33, + ACTIONS(830), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44300,12 +45952,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26356] = 3, + [26441] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1218), 12, + ACTIONS(1244), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44316,7 +45968,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1220), 33, + ACTIONS(1242), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44350,12 +46002,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26409] = 3, + [26494] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1222), 12, + ACTIONS(1248), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44366,7 +46018,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1224), 33, + ACTIONS(1246), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44400,12 +46052,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26462] = 3, + [26547] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1226), 12, + ACTIONS(1252), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44416,7 +46068,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1228), 33, + ACTIONS(1250), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44450,12 +46102,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26515] = 3, + [26600] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1230), 12, + ACTIONS(1194), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44466,7 +46118,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1232), 33, + ACTIONS(1196), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44500,12 +46152,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26568] = 3, + [26653] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(1234), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44550,12 +46202,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26621] = 3, + [26706] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1180), 12, + ACTIONS(1256), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44566,7 +46218,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1178), 33, + ACTIONS(1254), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44600,12 +46252,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26674] = 3, + [26759] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1196), 12, + ACTIONS(1260), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44616,7 +46268,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1194), 33, + ACTIONS(1258), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44650,12 +46302,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26727] = 3, + [26812] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1216), 12, + ACTIONS(1264), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44666,7 +46318,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1214), 33, + ACTIONS(1262), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44700,10 +46352,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26780] = 3, + [26865] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1210), 12, + ACTIONS(1268), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -44716,7 +46368,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1212), 33, + ACTIONS(1266), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44750,10 +46402,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26833] = 3, + [26918] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1238), 12, + ACTIONS(1270), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -44766,7 +46418,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1240), 33, + ACTIONS(1272), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44800,10 +46452,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26886] = 3, + [26971] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1182), 12, + ACTIONS(1276), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -44816,7 +46468,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1184), 33, + ACTIONS(1274), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44850,12 +46502,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26939] = 3, + [27024] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1242), 12, + ACTIONS(1280), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44866,7 +46518,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1244), 33, + ACTIONS(1278), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44900,12 +46552,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26992] = 3, + [27077] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1246), 12, + ACTIONS(1284), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -44916,7 +46568,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1248), 33, + ACTIONS(1282), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -44950,10 +46602,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27045] = 3, + [27130] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1250), 12, + ACTIONS(1286), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -44966,7 +46618,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1252), 33, + ACTIONS(1288), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45000,12 +46652,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27098] = 3, + [27183] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1254), 12, + ACTIONS(1119), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45016,7 +46668,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1256), 33, + ACTIONS(1121), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45050,12 +46702,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27151] = 3, + [27236] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1258), 12, + ACTIONS(1292), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45066,7 +46718,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1260), 33, + ACTIONS(1290), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45100,12 +46752,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27204] = 3, + [27289] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1262), 12, + ACTIONS(1296), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45116,7 +46768,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1264), 33, + ACTIONS(1294), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45150,10 +46802,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27257] = 3, + [27342] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1262), 12, + ACTIONS(1300), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -45166,7 +46818,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1264), 33, + ACTIONS(1298), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45200,10 +46852,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27310] = 3, + [27395] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1268), 12, + ACTIONS(1304), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -45216,7 +46868,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1266), 33, + ACTIONS(1302), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45250,10 +46902,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27363] = 3, + [27448] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1272), 12, + ACTIONS(1308), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -45266,7 +46918,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1270), 33, + ACTIONS(1306), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45300,10 +46952,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27416] = 3, + [27501] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1107), 12, + ACTIONS(1186), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -45316,7 +46968,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1109), 33, + ACTIONS(1188), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45350,10 +47002,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27469] = 3, + [27554] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1268), 12, + ACTIONS(1310), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -45366,7 +47018,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1266), 33, + ACTIONS(1312), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45400,10 +47052,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27522] = 3, + [27607] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(814), 12, + ACTIONS(1206), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -45416,7 +47068,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(812), 33, + ACTIONS(1208), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45450,12 +47102,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27575] = 3, + [27660] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1204), 12, + ACTIONS(1210), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45466,7 +47118,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1202), 33, + ACTIONS(1212), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45500,12 +47152,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27628] = 3, + [27713] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1274), 12, + ACTIONS(1214), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45516,7 +47168,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1276), 33, + ACTIONS(1216), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45550,10 +47202,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27681] = 3, + [27766] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1280), 12, + ACTIONS(1222), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -45566,7 +47218,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1278), 33, + ACTIONS(1224), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45600,10 +47252,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27734] = 3, + [27819] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1282), 12, + ACTIONS(1244), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -45616,7 +47268,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1284), 33, + ACTIONS(1242), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45650,10 +47302,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27787] = 3, + [27872] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1272), 12, + ACTIONS(1314), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -45666,7 +47318,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1270), 33, + ACTIONS(1316), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45700,78 +47352,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27840] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(636), 1, - sym_identifier, - ACTIONS(638), 1, - anon_sym_LPAREN, - ACTIONS(648), 1, - anon_sym_LBRACK, - ACTIONS(650), 1, - anon_sym_await, - ACTIONS(1288), 1, - anon_sym_STAR, - STATE(569), 1, - sym_string, - STATE(834), 1, - sym_pattern, - STATE(843), 1, - sym_primary_expression, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(1286), 2, - anon_sym_RPAREN, - anon_sym_RBRACK, - STATE(712), 2, - sym_attribute, - sym_subscript, - ACTIONS(285), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - STATE(837), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(642), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(575), 14, - sym_binary_operator, - sym_unary_operator, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, [27925] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1176), 12, + ACTIONS(1286), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45782,7 +47368,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1174), 33, + ACTIONS(1288), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45819,7 +47405,7 @@ static const uint16_t ts_small_parse_table[] = { [27978] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1292), 12, + ACTIONS(1310), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -45832,7 +47418,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1290), 33, + ACTIONS(1312), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45869,7 +47455,7 @@ static const uint16_t ts_small_parse_table[] = { [28031] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1296), 12, + ACTIONS(1314), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -45882,7 +47468,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1294), 33, + ACTIONS(1316), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45919,9 +47505,9 @@ static const uint16_t ts_small_parse_table[] = { [28084] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1300), 12, - sym__dedent, + ACTIONS(1252), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45932,7 +47518,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1298), 33, + ACTIONS(1250), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45969,7 +47555,7 @@ static const uint16_t ts_small_parse_table[] = { [28137] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1304), 12, + ACTIONS(1320), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -45982,7 +47568,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1302), 33, + ACTIONS(1318), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46019,7 +47605,7 @@ static const uint16_t ts_small_parse_table[] = { [28190] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(828), 12, + ACTIONS(1184), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -46032,7 +47618,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(830), 33, + ACTIONS(1182), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46069,9 +47655,9 @@ static const uint16_t ts_small_parse_table[] = { [28243] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1107), 12, + ACTIONS(1324), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46082,7 +47668,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1109), 33, + ACTIONS(1322), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46119,9 +47705,9 @@ static const uint16_t ts_small_parse_table[] = { [28296] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1198), 12, - sym__dedent, + ACTIONS(1256), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46132,7 +47718,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1200), 33, + ACTIONS(1254), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46169,9 +47755,9 @@ static const uint16_t ts_small_parse_table[] = { [28349] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1101), 12, + ACTIONS(1328), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46182,7 +47768,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1099), 33, + ACTIONS(1326), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46219,9 +47805,9 @@ static const uint16_t ts_small_parse_table[] = { [28402] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1306), 12, + ACTIONS(1332), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46232,7 +47818,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1308), 33, + ACTIONS(1330), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46269,9 +47855,9 @@ static const uint16_t ts_small_parse_table[] = { [28455] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(814), 12, + ACTIONS(1336), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46282,7 +47868,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(812), 33, + ACTIONS(1334), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46319,9 +47905,9 @@ static const uint16_t ts_small_parse_table[] = { [28508] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1206), 12, - sym__dedent, + ACTIONS(1320), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46332,7 +47918,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1208), 33, + ACTIONS(1318), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46369,9 +47955,9 @@ static const uint16_t ts_small_parse_table[] = { [28561] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1274), 12, - sym__dedent, + ACTIONS(1260), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46382,7 +47968,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1276), 33, + ACTIONS(1258), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46419,7 +48005,7 @@ static const uint16_t ts_small_parse_table[] = { [28614] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1238), 12, + ACTIONS(1340), 12, sym__dedent, sym__string_start, anon_sym_LPAREN, @@ -46432,7 +48018,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1240), 33, + ACTIONS(1338), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46466,79 +48052,162 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28667] = 20, + [28667] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(1344), 12, + sym__dedent, sym__string_start, - ACTIONS(636), 1, - sym_identifier, - ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(648), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(650), 1, - anon_sym_await, - ACTIONS(1288), 1, - anon_sym_STAR, - ACTIONS(1310), 1, - anon_sym_RPAREN, - STATE(569), 1, - sym_string, - STATE(843), 1, - sym_primary_expression, - STATE(1112), 1, - sym_pattern, - STATE(1380), 1, - sym__patterns, - ACTIONS(293), 2, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, sym_ellipsis, sym_float, - STATE(712), 2, - sym_attribute, - sym_subscript, - ACTIONS(285), 3, + ACTIONS(1342), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [28720] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1348), 12, + sym__dedent, + sym__string_start, + anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_TILDE, - STATE(837), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(295), 4, + sym_ellipsis, + sym_float, + ACTIONS(1346), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, sym_integer, + sym_identifier, + anon_sym_await, sym_true, sym_false, sym_none, - ACTIONS(642), 5, + [28773] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1352), 12, + sym__dedent, + sym__string_start, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1350), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - STATE(575), 14, - sym_binary_operator, - sym_unary_operator, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [28754] = 3, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [28826] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1312), 12, + ACTIONS(1356), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46549,7 +48218,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1314), 33, + ACTIONS(1354), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46583,10 +48252,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28807] = 3, + [28879] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1280), 12, + ACTIONS(1324), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -46599,7 +48268,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1278), 33, + ACTIONS(1322), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46633,10 +48302,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28860] = 3, + [28932] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1316), 12, + ACTIONS(1264), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -46649,7 +48318,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1318), 33, + ACTIONS(1262), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46683,12 +48352,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28913] = 3, + [28985] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1320), 12, + ACTIONS(1360), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46699,7 +48368,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1322), 33, + ACTIONS(1358), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46733,12 +48402,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28966] = 3, + [29038] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1324), 12, + ACTIONS(1364), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46749,7 +48418,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1326), 33, + ACTIONS(1362), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46783,10 +48452,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29019] = 3, + [29091] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1304), 12, + ACTIONS(1328), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -46799,7 +48468,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1302), 33, + ACTIONS(1326), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46833,12 +48502,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29072] = 3, + [29144] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1254), 12, - sym__dedent, + ACTIONS(1220), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46849,7 +48518,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1256), 33, + ACTIONS(1218), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46883,12 +48552,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29125] = 3, + [29197] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1330), 12, - sym__dedent, + ACTIONS(1332), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46899,7 +48568,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1328), 33, + ACTIONS(1330), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46933,12 +48602,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29178] = 3, + [29250] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1242), 12, - sym__dedent, + ACTIONS(1336), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46949,7 +48618,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1244), 33, + ACTIONS(1334), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46983,10 +48652,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29231] = 3, + [29303] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1330), 12, + ACTIONS(1200), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -46999,7 +48668,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1328), 33, + ACTIONS(1198), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47033,10 +48702,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29284] = 3, + [29356] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1332), 12, + ACTIONS(1268), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -47049,7 +48718,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1334), 33, + ACTIONS(1266), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47083,10 +48752,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29337] = 3, + [29409] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1336), 12, + ACTIONS(848), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -47099,7 +48768,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1338), 33, + ACTIONS(846), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47133,10 +48802,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29390] = 3, + [29462] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1340), 12, + ACTIONS(1276), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -47149,7 +48818,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1342), 33, + ACTIONS(1274), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47183,12 +48852,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29443] = 3, + [29515] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1346), 12, - sym__dedent, + ACTIONS(1340), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47199,7 +48868,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1344), 33, + ACTIONS(1338), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47233,12 +48902,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29496] = 3, + [29568] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1350), 12, - sym__dedent, + ACTIONS(1344), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47249,7 +48918,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1348), 33, + ACTIONS(1342), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47283,12 +48952,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29549] = 3, + [29621] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1340), 12, - sym__dedent, + ACTIONS(1192), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47299,7 +48968,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1342), 33, + ACTIONS(1190), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47333,12 +49002,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29602] = 3, + [29674] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1336), 12, - sym__dedent, + ACTIONS(1094), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47349,7 +49018,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1338), 33, + ACTIONS(1096), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47383,12 +49052,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29655] = 3, + [29727] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1324), 12, - sym__dedent, + ACTIONS(1348), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47399,7 +49068,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1326), 33, + ACTIONS(1346), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47433,12 +49102,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29708] = 3, + [29780] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1332), 12, - sym__dedent, + ACTIONS(1352), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47449,7 +49118,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1334), 33, + ACTIONS(1350), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47483,12 +49152,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29761] = 3, + [29833] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1320), 12, - sym__dedent, + ACTIONS(1356), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47499,7 +49168,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1322), 33, + ACTIONS(1354), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47533,10 +49202,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29814] = 3, + [29886] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1350), 12, + ACTIONS(1280), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -47549,7 +49218,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1348), 33, + ACTIONS(1278), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47583,12 +49252,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29867] = 3, + [29939] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1316), 12, - sym__dedent, + ACTIONS(1284), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47599,7 +49268,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1318), 33, + ACTIONS(1282), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47633,12 +49302,78 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29920] = 3, + [29992] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(1312), 12, - sym__dedent, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, sym__string_start, + ACTIONS(652), 1, + sym_identifier, + ACTIONS(654), 1, + anon_sym_LPAREN, + ACTIONS(664), 1, + anon_sym_LBRACK, + ACTIONS(666), 1, + anon_sym_await, + ACTIONS(1240), 1, + anon_sym_STAR, + STATE(565), 1, + sym_string, + STATE(840), 1, + sym_pattern, + STATE(844), 1, + sym_primary_expression, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + ACTIONS(1366), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + STATE(722), 2, + sym_attribute, + sym_subscript, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(833), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(658), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(589), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [30077] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(828), 12, + sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47649,7 +49384,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1314), 33, + ACTIONS(830), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47683,12 +49418,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29973] = 3, + [30130] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1246), 12, - sym__dedent, + ACTIONS(1119), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47699,7 +49434,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1248), 33, + ACTIONS(1121), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47733,78 +49468,112 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30026] = 19, + [30183] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(1228), 12, sym__string_start, - ACTIONS(636), 1, - sym_identifier, - ACTIONS(638), 1, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(648), 1, - anon_sym_LBRACK, - ACTIONS(650), 1, - anon_sym_await, - ACTIONS(1288), 1, - anon_sym_STAR, - STATE(569), 1, - sym_string, - STATE(834), 1, - sym_pattern, - STATE(843), 1, - sym_primary_expression, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(1352), 2, - anon_sym_RPAREN, - anon_sym_RBRACK, - STATE(712), 2, - sym_attribute, - sym_subscript, - ACTIONS(285), 3, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_TILDE, - STATE(837), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(295), 4, + sym_ellipsis, + sym_float, + ACTIONS(1226), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, sym_integer, + sym_identifier, + anon_sym_await, sym_true, sym_false, sym_none, - ACTIONS(642), 5, + [30236] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1360), 12, + sym__string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1358), 33, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - STATE(575), 14, - sym_binary_operator, - sym_unary_operator, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [30111] = 3, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [30289] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1170), 12, - sym__dedent, + ACTIONS(1364), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47815,7 +49584,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1172), 33, + ACTIONS(1362), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47849,12 +49618,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30164] = 3, + [30342] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1282), 12, - sym__dedent, + ACTIONS(1248), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47865,7 +49634,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1284), 33, + ACTIONS(1246), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47899,12 +49668,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30217] = 3, + [30395] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1306), 12, - sym__dedent, + ACTIONS(1204), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47915,7 +49684,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1308), 33, + ACTIONS(1202), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47949,12 +49718,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30270] = 3, + [30448] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1101), 12, - sym__dedent, + ACTIONS(1292), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47965,7 +49734,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1099), 33, + ACTIONS(1290), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47999,12 +49768,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30323] = 3, + [30501] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1234), 12, - sym__dedent, + ACTIONS(1296), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48015,7 +49784,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1236), 33, + ACTIONS(1294), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48049,10 +49818,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30376] = 3, + [30554] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1346), 12, + ACTIONS(1300), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -48065,7 +49834,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1344), 33, + ACTIONS(1298), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48099,10 +49868,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30429] = 3, + [30607] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1292), 12, + ACTIONS(1304), 12, sym__string_start, ts_builtin_sym_end, anon_sym_LPAREN, @@ -48115,7 +49884,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1290), 33, + ACTIONS(1302), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48149,12 +49918,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30482] = 3, + [30660] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1230), 12, - sym__dedent, + ACTIONS(1308), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48165,7 +49934,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1232), 33, + ACTIONS(1306), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48199,12 +49968,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30535] = 3, + [30713] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1258), 12, - sym__dedent, + ACTIONS(1232), 12, sym__string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48215,7 +49984,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1260), 33, + ACTIONS(1230), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48249,262 +50018,79 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30588] = 3, + [30766] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1226), 12, - sym__dedent, - sym__string_start, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, + ACTIONS(283), 1, anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1228), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [30641] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1222), 12, - sym__dedent, + ACTIONS(305), 1, sym__string_start, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1224), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, + ACTIONS(652), 1, sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [30694] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1218), 12, - sym__dedent, - sym__string_start, + ACTIONS(654), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(664), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(666), 1, + anon_sym_await, + ACTIONS(1240), 1, + anon_sym_STAR, + ACTIONS(1368), 1, + anon_sym_RPAREN, + STATE(565), 1, + sym_string, + STATE(844), 1, + sym_primary_expression, + STATE(1120), 1, + sym_pattern, + STATE(1395), 1, + sym__patterns, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(1220), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [30747] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1250), 12, - sym__dedent, - sym__string_start, - anon_sym_LPAREN, + STATE(722), 2, + sym_attribute, + sym_subscript, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1252), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, + STATE(833), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(301), 4, sym_integer, - sym_identifier, - anon_sym_await, sym_true, sym_false, sym_none, - [30800] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1296), 12, - sym__string_start, - ts_builtin_sym_end, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1294), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, + ACTIONS(658), 5, anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, + STATE(589), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, [30853] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1300), 12, + ACTIONS(1270), 12, + sym__dedent, sym__string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48515,7 +50101,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1298), 33, + ACTIONS(1272), 33, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48552,54 +50138,54 @@ static const uint16_t ts_small_parse_table[] = { [30906] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(636), 1, + ACTIONS(652), 1, sym_identifier, - ACTIONS(638), 1, + ACTIONS(654), 1, anon_sym_LPAREN, - ACTIONS(648), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(650), 1, + ACTIONS(666), 1, anon_sym_await, - ACTIONS(1288), 1, + ACTIONS(1240), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(843), 1, + STATE(844), 1, sym_primary_expression, - STATE(1186), 1, + STATE(1272), 1, sym_pattern, - STATE(1437), 1, + STATE(1406), 1, sym_pattern_list, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(712), 2, + STATE(722), 2, sym_attribute, sym_subscript, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(642), 5, + ACTIONS(658), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -48617,54 +50203,54 @@ static const uint16_t ts_small_parse_table[] = { [30990] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(636), 1, + ACTIONS(652), 1, sym_identifier, - ACTIONS(638), 1, + ACTIONS(654), 1, anon_sym_LPAREN, - ACTIONS(648), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(650), 1, + ACTIONS(666), 1, anon_sym_await, - ACTIONS(1288), 1, + ACTIONS(1240), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(843), 1, + STATE(844), 1, sym_primary_expression, - STATE(1256), 1, + STATE(1279), 1, sym_pattern, - STATE(1391), 1, + STATE(1475), 1, sym_pattern_list, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(712), 2, + STATE(722), 2, sym_attribute, sym_subscript, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(642), 5, + ACTIONS(658), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -48682,54 +50268,54 @@ static const uint16_t ts_small_parse_table[] = { [31074] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(636), 1, + ACTIONS(652), 1, sym_identifier, - ACTIONS(638), 1, + ACTIONS(654), 1, anon_sym_LPAREN, - ACTIONS(648), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(650), 1, + ACTIONS(666), 1, anon_sym_await, - ACTIONS(1288), 1, + ACTIONS(1240), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(843), 1, + STATE(844), 1, sym_primary_expression, - STATE(1262), 1, + STATE(1177), 1, sym_pattern, - STATE(1476), 1, + STATE(1437), 1, sym_pattern_list, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(712), 2, + STATE(722), 2, sym_attribute, sym_subscript, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(642), 5, + ACTIONS(658), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -48747,54 +50333,54 @@ static const uint16_t ts_small_parse_table[] = { [31158] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(636), 1, + ACTIONS(652), 1, sym_identifier, - ACTIONS(638), 1, + ACTIONS(654), 1, anon_sym_LPAREN, - ACTIONS(648), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(650), 1, + ACTIONS(666), 1, anon_sym_await, - ACTIONS(1288), 1, + ACTIONS(1240), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(843), 1, + STATE(844), 1, sym_primary_expression, - STATE(1213), 1, + STATE(1172), 1, sym_pattern, - STATE(1416), 1, + STATE(1429), 1, sym_pattern_list, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(712), 2, + STATE(722), 2, sym_attribute, sym_subscript, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(642), 5, + ACTIONS(658), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -48812,54 +50398,54 @@ static const uint16_t ts_small_parse_table[] = { [31242] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(636), 1, + ACTIONS(652), 1, sym_identifier, - ACTIONS(638), 1, + ACTIONS(654), 1, anon_sym_LPAREN, - ACTIONS(648), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(650), 1, + ACTIONS(666), 1, anon_sym_await, - ACTIONS(1288), 1, + ACTIONS(1240), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(843), 1, + STATE(844), 1, sym_primary_expression, - STATE(1164), 1, + STATE(1199), 1, sym_pattern, - STATE(1388), 1, + STATE(1446), 1, sym_pattern_list, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(712), 2, + STATE(722), 2, sym_attribute, sym_subscript, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(642), 5, + ACTIONS(658), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -48877,54 +50463,54 @@ static const uint16_t ts_small_parse_table[] = { [31326] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(636), 1, + ACTIONS(652), 1, sym_identifier, - ACTIONS(638), 1, + ACTIONS(654), 1, anon_sym_LPAREN, - ACTIONS(648), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(650), 1, + ACTIONS(666), 1, anon_sym_await, - ACTIONS(1288), 1, + ACTIONS(1240), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(843), 1, + STATE(844), 1, sym_primary_expression, - STATE(1241), 1, + STATE(1278), 1, sym_pattern, - STATE(1473), 1, + STATE(1472), 1, sym_pattern_list, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(712), 2, + STATE(722), 2, sym_attribute, sym_subscript, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(642), 5, + ACTIONS(658), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -48942,19 +50528,19 @@ static const uint16_t ts_small_parse_table[] = { [31410] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - STATE(567), 2, + STATE(566), 2, sym_string, aux_sym_concatenated_string_repeat1, - ACTIONS(1356), 6, + ACTIONS(1021), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1354), 34, + ACTIONS(1016), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -48989,85 +50575,22 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [31465] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(636), 1, - sym_identifier, - ACTIONS(638), 1, - anon_sym_LPAREN, - ACTIONS(648), 1, - anon_sym_LBRACK, - ACTIONS(650), 1, - anon_sym_await, - ACTIONS(1288), 1, - anon_sym_STAR, - STATE(569), 1, - sym_string, - STATE(843), 1, - sym_primary_expression, - STATE(1267), 1, - sym_pattern, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - STATE(712), 2, - sym_attribute, - sym_subscript, - ACTIONS(285), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - STATE(837), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(295), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(642), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(575), 14, - sym_binary_operator, - sym_unary_operator, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [31546] = 5, + [31465] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1362), 1, + ACTIONS(305), 1, sym__string_start, - STATE(567), 2, + STATE(569), 2, sym_string, aux_sym_concatenated_string_repeat1, - ACTIONS(1360), 6, + ACTIONS(1372), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1358), 34, + ACTIONS(1370), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49102,55 +50625,118 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, + [31520] = 18, + ACTIONS(3), 1, + sym_comment, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(652), 1, + sym_identifier, + ACTIONS(654), 1, + anon_sym_LPAREN, + ACTIONS(664), 1, + anon_sym_LBRACK, + ACTIONS(666), 1, + anon_sym_await, + ACTIONS(1240), 1, + anon_sym_STAR, + STATE(565), 1, + sym_string, + STATE(844), 1, + sym_primary_expression, + STATE(1161), 1, + sym_pattern, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + STATE(722), 2, + sym_attribute, + sym_subscript, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(833), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(658), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(589), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, [31601] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(636), 1, + ACTIONS(652), 1, sym_identifier, - ACTIONS(638), 1, + ACTIONS(654), 1, anon_sym_LPAREN, - ACTIONS(648), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(650), 1, + ACTIONS(666), 1, anon_sym_await, - ACTIONS(1288), 1, + ACTIONS(1240), 1, anon_sym_STAR, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(834), 1, + STATE(840), 1, sym_pattern, - STATE(843), 1, + STATE(844), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(712), 2, + STATE(722), 2, sym_attribute, sym_subscript, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(837), 3, + STATE(833), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(642), 5, + ACTIONS(658), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -49168,19 +50754,19 @@ static const uint16_t ts_small_parse_table[] = { [31682] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(299), 1, + ACTIONS(1378), 1, sym__string_start, - STATE(565), 2, + STATE(569), 2, sym_string, aux_sym_concatenated_string_repeat1, - ACTIONS(1022), 6, + ACTIONS(1376), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1017), 34, + ACTIONS(1374), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49218,14 +50804,14 @@ static const uint16_t ts_small_parse_table[] = { [31737] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1367), 6, + ACTIONS(1383), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1365), 35, + ACTIONS(1381), 35, sym__string_start, anon_sym_DOT, anon_sym_LPAREN, @@ -49264,48 +50850,48 @@ static const uint16_t ts_small_parse_table[] = { [31786] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(1369), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(1385), 1, sym_identifier, - ACTIONS(1375), 1, + ACTIONS(1391), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(843), 1, + STATE(844), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(734), 2, + STATE(728), 2, sym_attribute, sym_subscript, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(1371), 3, + ACTIONS(1387), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, - ACTIONS(295), 4, + ACTIONS(301), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(1373), 5, + ACTIONS(1389), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 14, + STATE(589), 14, sym_binary_operator, sym_unary_operator, sym_call, @@ -49323,14 +50909,14 @@ static const uint16_t ts_small_parse_table[] = { [31861] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1379), 6, + ACTIONS(1395), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1377), 35, + ACTIONS(1393), 35, sym__string_start, anon_sym_DOT, anon_sym_LPAREN, @@ -49369,14 +50955,14 @@ static const uint16_t ts_small_parse_table[] = { [31910] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1383), 6, + ACTIONS(1399), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1381), 34, + ACTIONS(1397), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49414,14 +51000,14 @@ static const uint16_t ts_small_parse_table[] = { [31958] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1387), 6, + ACTIONS(1403), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1385), 34, + ACTIONS(1401), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49459,14 +51045,14 @@ static const uint16_t ts_small_parse_table[] = { [32006] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1022), 6, + ACTIONS(1407), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1017), 34, + ACTIONS(1405), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49501,79 +51087,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32054] = 20, + [32054] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, - anon_sym_DOT, - ACTIONS(1391), 1, - anon_sym_LPAREN, - ACTIONS(1395), 1, - anon_sym_as, - ACTIONS(1403), 1, - anon_sym_PIPE, - ACTIONS(1407), 1, - anon_sym_LBRACK, - ACTIONS(1409), 1, - anon_sym_STAR_STAR, - ACTIONS(1413), 1, - anon_sym_not, - ACTIONS(1415), 1, - anon_sym_AMP, - ACTIONS(1417), 1, - anon_sym_CARET, - ACTIONS(1421), 1, - anon_sym_is, - STATE(830), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1397), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1399), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1405), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(1419), 2, - anon_sym_LT, - anon_sym_GT, - STATE(601), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1411), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1401), 6, - anon_sym_in, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - ACTIONS(1393), 10, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_and, - anon_sym_or, - [32136] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1425), 6, + ACTIONS(1411), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1423), 34, + ACTIONS(1409), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49608,17 +51132,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32184] = 3, + [32102] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1429), 6, + ACTIONS(1415), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1427), 34, + ACTIONS(1413), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49653,17 +51177,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32232] = 3, + [32150] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1433), 6, + ACTIONS(1419), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1431), 34, + ACTIONS(1417), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49698,17 +51222,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32280] = 3, + [32198] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1437), 6, + ACTIONS(1399), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1435), 34, + ACTIONS(1397), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49743,17 +51267,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32328] = 3, + [32246] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1441), 6, + ACTIONS(1423), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1439), 34, + ACTIONS(1421), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49788,17 +51312,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32376] = 3, + [32294] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1445), 6, + ACTIONS(1427), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1443), 34, + ACTIONS(1425), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49833,17 +51357,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32424] = 3, + [32342] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1441), 6, + ACTIONS(1423), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1439), 34, + ACTIONS(1421), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49878,17 +51402,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32472] = 3, + [32390] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(260), 6, + ACTIONS(1431), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(287), 34, + ACTIONS(1429), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49923,17 +51447,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32520] = 3, + [32438] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1449), 6, + ACTIONS(1435), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1447), 34, + ACTIONS(1433), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -49968,17 +51492,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32568] = 3, + [32486] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1453), 6, + ACTIONS(1439), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1451), 34, + ACTIONS(1437), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50013,17 +51537,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32616] = 3, + [32534] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1457), 6, + ACTIONS(1443), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1455), 34, + ACTIONS(1441), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50058,17 +51582,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32664] = 3, + [32582] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1457), 6, + ACTIONS(1447), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1455), 34, + ACTIONS(1445), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50103,79 +51627,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32712] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1389), 1, - anon_sym_DOT, - ACTIONS(1391), 1, - anon_sym_LPAREN, - ACTIONS(1395), 1, - anon_sym_EQ, - ACTIONS(1407), 1, - anon_sym_LBRACK, - ACTIONS(1465), 1, - anon_sym_PIPE, - ACTIONS(1469), 1, - anon_sym_STAR_STAR, - ACTIONS(1473), 1, - anon_sym_not, - ACTIONS(1475), 1, - anon_sym_AMP, - ACTIONS(1477), 1, - anon_sym_CARET, - ACTIONS(1481), 1, - anon_sym_is, - STATE(829), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1459), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1461), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1467), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(1479), 2, - anon_sym_LT, - anon_sym_GT, - STATE(601), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1471), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1463), 6, - anon_sym_in, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - ACTIONS(1393), 10, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_and, - anon_sym_or, - sym_type_conversion, - [32794] = 3, + [32630] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1485), 6, + ACTIONS(1451), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1483), 34, + ACTIONS(1449), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50210,17 +51672,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32842] = 3, + [32678] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1489), 6, + ACTIONS(1021), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1487), 34, + ACTIONS(1016), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50255,107 +51717,79 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [32890] = 3, + [32726] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1493), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1491), 34, + ACTIONS(1453), 1, anon_sym_DOT, + ACTIONS(1455), 1, anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_in, + ACTIONS(1459), 1, + anon_sym_as, + ACTIONS(1467), 1, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(1471), 1, anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, + ACTIONS(1473), 1, anon_sym_STAR_STAR, - anon_sym_AT, + ACTIONS(1477), 1, anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, + ACTIONS(1479), 1, anon_sym_AMP, + ACTIONS(1481), 1, anon_sym_CARET, + ACTIONS(1485), 1, + anon_sym_is, + STATE(828), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1461), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1463), 2, + anon_sym_GT_GT, anon_sym_LT_LT, + ACTIONS(1469), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(1483), 2, + anon_sym_LT, + anon_sym_GT, + STATE(593), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1475), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1465), 6, + anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - anon_sym_is, - sym_type_conversion, - [32938] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1497), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1495), 34, - anon_sym_DOT, - anon_sym_LPAREN, + ACTIONS(1457), 10, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, - anon_sym_else, anon_sym_async, anon_sym_for, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - sym_type_conversion, - [32986] = 3, + [32808] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1501), 6, + ACTIONS(1489), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1499), 34, + ACTIONS(1487), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50390,17 +51824,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33034] = 3, + [32856] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1505), 6, + ACTIONS(1493), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1503), 34, + ACTIONS(1491), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50435,17 +51869,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33082] = 3, + [32904] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1509), 6, + ACTIONS(1497), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1507), 34, + ACTIONS(1495), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50480,17 +51914,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33130] = 3, + [32952] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1513), 6, + ACTIONS(1501), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1511), 34, + ACTIONS(1499), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50525,62 +51959,79 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33178] = 3, + [33000] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1517), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1515), 34, + ACTIONS(1453), 1, anon_sym_DOT, + ACTIONS(1455), 1, anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(1459), 1, + anon_sym_EQ, + ACTIONS(1471), 1, anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, + ACTIONS(1509), 1, + anon_sym_PIPE, + ACTIONS(1513), 1, anon_sym_STAR_STAR, - anon_sym_AT, + ACTIONS(1517), 1, anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, + ACTIONS(1519), 1, anon_sym_AMP, + ACTIONS(1521), 1, anon_sym_CARET, + ACTIONS(1525), 1, + anon_sym_is, + STATE(830), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1503), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1505), 2, + anon_sym_GT_GT, anon_sym_LT_LT, + ACTIONS(1511), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(1523), 2, + anon_sym_LT, + anon_sym_GT, + STATE(593), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1515), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1507), 6, + anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - anon_sym_is, + ACTIONS(1457), 10, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, sym_type_conversion, - [33226] = 3, + [33082] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1449), 6, + ACTIONS(1529), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1447), 34, + ACTIONS(1527), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50615,17 +52066,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33274] = 3, + [33130] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1433), 6, + ACTIONS(1533), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1431), 34, + ACTIONS(1531), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50660,17 +52111,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33322] = 3, + [33178] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1521), 6, + ACTIONS(260), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1519), 34, + ACTIONS(293), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50705,17 +52156,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33370] = 3, + [33226] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1525), 6, + ACTIONS(1537), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1523), 34, + ACTIONS(1535), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50750,17 +52201,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33418] = 3, + [33274] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1529), 6, + ACTIONS(1541), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1527), 34, + ACTIONS(1539), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50795,17 +52246,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33466] = 3, + [33322] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1533), 6, + ACTIONS(1545), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1531), 34, + ACTIONS(1543), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50840,17 +52291,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33514] = 3, + [33370] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1537), 6, + ACTIONS(1549), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1535), 34, + ACTIONS(1547), 34, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -50885,53 +52336,44 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33562] = 13, + [33418] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, - anon_sym_DOT, - ACTIONS(1391), 1, - anon_sym_LPAREN, - ACTIONS(1407), 1, - anon_sym_LBRACK, - ACTIONS(1469), 1, - anon_sym_STAR_STAR, - ACTIONS(1477), 1, - anon_sym_CARET, - ACTIONS(1459), 2, + ACTIONS(1545), 6, + anon_sym_as, anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1461), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1467), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(601), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1471), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1541), 3, anon_sym_EQ, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 20, + ACTIONS(1543), 34, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, @@ -50939,47 +52381,41 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33629] = 10, + [33466] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, - anon_sym_DOT, - ACTIONS(1391), 1, - anon_sym_LPAREN, - ACTIONS(1407), 1, - anon_sym_LBRACK, - ACTIONS(1469), 1, - anon_sym_STAR_STAR, - ACTIONS(1459), 2, + ACTIONS(1553), 6, + anon_sym_as, anon_sym_STAR, - anon_sym_SLASH, - STATE(601), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1471), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1541), 3, anon_sym_EQ, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 25, + ACTIONS(1551), 34, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -50990,48 +52426,41 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33690] = 11, + [33514] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, - anon_sym_DOT, - ACTIONS(1391), 1, - anon_sym_LPAREN, - ACTIONS(1407), 1, - anon_sym_LBRACK, - ACTIONS(1469), 1, - anon_sym_STAR_STAR, - ACTIONS(1459), 2, + ACTIONS(1493), 6, + anon_sym_as, anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1467), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(601), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1471), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1541), 3, anon_sym_EQ, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 23, + ACTIONS(1491), 34, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -51042,43 +52471,43 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [33753] = 10, + [33562] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1409), 1, + ACTIONS(1513), 1, anon_sym_STAR_STAR, - ACTIONS(1397), 2, + ACTIONS(1503), 2, anon_sym_STAR, anon_sym_SLASH, - STATE(601), 2, + ACTIONS(1511), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1411), 3, + ACTIONS(1515), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1541), 3, - anon_sym_as, + ACTIONS(1557), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 25, + ACTIONS(1555), 23, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, - anon_sym_async, - anon_sym_for, + anon_sym_else, anon_sym_in, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_not, @@ -51093,45 +52522,46 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [33814] = 14, + sym_type_conversion, + [33625] = 14, ACTIONS(3), 1, sym_comment, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(604), 1, + ACTIONS(598), 1, anon_sym_await, - ACTIONS(606), 1, - sym__string_start, - ACTIONS(1543), 1, + ACTIONS(1559), 1, anon_sym_not, - STATE(708), 1, + STATE(565), 1, sym_string, - STATE(727), 1, + STATE(611), 1, sym_primary_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(592), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -51148,33 +52578,34 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [33883] = 8, + [33694] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1469), 1, + ACTIONS(1473), 1, anon_sym_STAR_STAR, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1541), 5, + ACTIONS(1557), 5, + anon_sym_as, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 28, + ACTIONS(1555), 28, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, - anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -51196,98 +52627,38 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - sym_type_conversion, - [33940] = 14, + [33751] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1469), 1, + ACTIONS(1473), 1, anon_sym_STAR_STAR, - ACTIONS(1475), 1, - anon_sym_AMP, - ACTIONS(1477), 1, - anon_sym_CARET, - ACTIONS(1459), 2, - anon_sym_STAR, - anon_sym_SLASH, ACTIONS(1461), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1467), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(601), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1471), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1541), 3, - anon_sym_EQ, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1539), 19, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_in, - anon_sym_PIPE, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - sym_type_conversion, - [34009] = 13, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1389), 1, - anon_sym_DOT, - ACTIONS(1391), 1, - anon_sym_LPAREN, - ACTIONS(1407), 1, - anon_sym_LBRACK, - ACTIONS(1409), 1, - anon_sym_STAR_STAR, - ACTIONS(1417), 1, - anon_sym_CARET, - ACTIONS(1397), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1399), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1405), 2, + ACTIONS(1469), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1411), 3, + ACTIONS(1475), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1541), 3, + ACTIONS(1557), 3, anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 20, + ACTIONS(1555), 23, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_async, @@ -51300,106 +52671,53 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_and, anon_sym_or, anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [34076] = 14, + [33814] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(576), 1, + ACTIONS(616), 1, anon_sym_await, - ACTIONS(1545), 1, - anon_sym_not, - STATE(569), 1, - sym_string, - STATE(620), 1, - sym_primary_expression, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(285), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(295), 5, - sym_integer, - sym_identifier, - sym_true, - sym_false, - sym_none, - ACTIONS(568), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [34145] = 14, - ACTIONS(3), 1, - sym_comment, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(584), 1, - anon_sym_LBRACK, - ACTIONS(586), 1, - anon_sym_await, - ACTIONS(1547), 1, + ACTIONS(1561), 1, anon_sym_not, - STATE(569), 1, + STATE(699), 1, sym_string, - STATE(621), 1, + STATE(729), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(600), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(604), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -51416,42 +52734,44 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [34214] = 14, + [33883] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1467), 1, + anon_sym_PIPE, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1409), 1, + ACTIONS(1473), 1, anon_sym_STAR_STAR, - ACTIONS(1415), 1, + ACTIONS(1479), 1, anon_sym_AMP, - ACTIONS(1417), 1, + ACTIONS(1481), 1, anon_sym_CARET, - ACTIONS(1397), 2, + ACTIONS(1461), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1399), 2, + ACTIONS(1463), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1405), 2, + ACTIONS(1469), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1411), 3, + ACTIONS(1475), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1541), 3, + ACTIONS(1565), 3, anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 19, + ACTIONS(1563), 18, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -51459,7 +52779,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_async, anon_sym_for, anon_sym_in, - anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_not, @@ -51471,38 +52790,42 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [34283] = 12, + [33954] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1409), 1, + ACTIONS(1473), 1, anon_sym_STAR_STAR, - ACTIONS(1397), 2, + ACTIONS(1479), 1, + anon_sym_AMP, + ACTIONS(1481), 1, + anon_sym_CARET, + ACTIONS(1461), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1399), 2, + ACTIONS(1463), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1405), 2, + ACTIONS(1469), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1411), 3, + ACTIONS(1475), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1541), 3, + ACTIONS(1557), 3, anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 21, + ACTIONS(1555), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -51516,35 +52839,38 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_AMP, - anon_sym_CARET, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [34348] = 8, + [34023] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1409), 1, + ACTIONS(1473), 1, anon_sym_STAR_STAR, - STATE(601), 2, + ACTIONS(1461), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1541), 5, + ACTIONS(1475), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1557), 3, anon_sym_as, - anon_sym_STAR, - anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 28, + ACTIONS(1555), 25, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -51558,12 +52884,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -51573,27 +52896,27 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [34405] = 8, + [34084] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1409), 1, + ACTIONS(1473), 1, anon_sym_STAR_STAR, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1541), 5, + ACTIONS(1557), 5, anon_sym_as, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 28, + ACTIONS(1555), 28, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -51622,100 +52945,92 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [34462] = 15, + [34141] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1465), 1, - anon_sym_PIPE, - ACTIONS(1469), 1, + ACTIONS(1473), 1, anon_sym_STAR_STAR, - ACTIONS(1475), 1, - anon_sym_AMP, - ACTIONS(1477), 1, + ACTIONS(1481), 1, anon_sym_CARET, - ACTIONS(1459), 2, + ACTIONS(1461), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1461), 2, + ACTIONS(1463), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1467), 2, + ACTIONS(1469), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1471), 3, + ACTIONS(1475), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1551), 3, - anon_sym_EQ, + ACTIONS(1557), 3, + anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1549), 18, + ACTIONS(1555), 20, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, - anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_in, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_AMP, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - sym_type_conversion, - [34533] = 15, + [34208] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1403), 1, - anon_sym_PIPE, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1409), 1, + ACTIONS(1473), 1, anon_sym_STAR_STAR, - ACTIONS(1415), 1, - anon_sym_AMP, - ACTIONS(1417), 1, - anon_sym_CARET, - ACTIONS(1397), 2, + ACTIONS(1461), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1399), 2, + ACTIONS(1463), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1405), 2, + ACTIONS(1469), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1411), 3, + ACTIONS(1475), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1551), 3, + ACTIONS(1557), 3, anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1549), 18, + ACTIONS(1555), 21, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -51723,63 +53038,221 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_async, anon_sym_for, anon_sym_in, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [34604] = 12, + [34273] = 14, + ACTIONS(3), 1, + sym_comment, + ACTIONS(51), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym__string_start, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + ACTIONS(569), 1, + anon_sym_await, + ACTIONS(1567), 1, + anon_sym_not, + STATE(693), 1, + sym_string, + STATE(703), 1, + sym_primary_expression, + ACTIONS(75), 2, + sym_ellipsis, + sym_float, + ACTIONS(47), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(77), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(563), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(773), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [34342] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1469), 1, + ACTIONS(1473), 1, anon_sym_STAR_STAR, - ACTIONS(1459), 2, + STATE(593), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1571), 5, + anon_sym_as, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1461), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1569), 28, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1467), 2, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - STATE(601), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1471), 3, + anon_sym_RBRACK, + anon_sym_RBRACE, anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1541), 3, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [34399] = 14, + ACTIONS(3), 1, + sym_comment, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(588), 1, + anon_sym_await, + ACTIONS(1573), 1, + anon_sym_not, + STATE(565), 1, + sym_string, + STATE(621), 1, + sym_primary_expression, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(301), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(576), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(589), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [34468] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1453), 1, + anon_sym_DOT, + ACTIONS(1455), 1, + anon_sym_LPAREN, + ACTIONS(1471), 1, + anon_sym_LBRACK, + ACTIONS(1513), 1, + anon_sym_STAR_STAR, + STATE(593), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1557), 5, + anon_sym_STAR, anon_sym_EQ, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 21, + ACTIONS(1555), 28, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_else, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, @@ -51787,44 +53260,44 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [34669] = 15, + [34525] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1465), 1, + ACTIONS(1509), 1, anon_sym_PIPE, - ACTIONS(1469), 1, + ACTIONS(1513), 1, anon_sym_STAR_STAR, - ACTIONS(1475), 1, + ACTIONS(1519), 1, anon_sym_AMP, - ACTIONS(1477), 1, + ACTIONS(1521), 1, anon_sym_CARET, - ACTIONS(1459), 2, + ACTIONS(1503), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1461), 2, + ACTIONS(1505), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1467), 2, + ACTIONS(1511), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1471), 3, + ACTIONS(1515), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1555), 3, + ACTIONS(1565), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1553), 18, + ACTIONS(1563), 18, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -51843,50 +53316,49 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [34740] = 15, + [34596] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1465), 1, - anon_sym_PIPE, - ACTIONS(1469), 1, + ACTIONS(1513), 1, anon_sym_STAR_STAR, - ACTIONS(1475), 1, + ACTIONS(1519), 1, anon_sym_AMP, - ACTIONS(1477), 1, + ACTIONS(1521), 1, anon_sym_CARET, - ACTIONS(1459), 2, + ACTIONS(1503), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1461), 2, + ACTIONS(1505), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1467), 2, + ACTIONS(1511), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1471), 3, + ACTIONS(1515), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1559), 3, + ACTIONS(1557), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1557), 18, + ACTIONS(1555), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, anon_sym_else, anon_sym_in, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_not, @@ -51899,27 +53371,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [34811] = 8, + [34665] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1469), 1, + ACTIONS(1513), 1, anon_sym_STAR_STAR, - STATE(601), 2, + ACTIONS(1503), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1563), 5, - anon_sym_STAR, + ACTIONS(1515), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1557), 3, anon_sym_EQ, - anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1561), 28, + ACTIONS(1555), 25, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -51932,12 +53409,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -51948,34 +53422,33 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [34868] = 8, + [34726] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1409), 1, + ACTIONS(1513), 1, anon_sym_STAR_STAR, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1567), 5, - anon_sym_as, + ACTIONS(1557), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1565), 28, + ACTIONS(1555), 28, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, - anon_sym_async, - anon_sym_for, + anon_sym_else, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -51997,195 +53470,247 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [34925] = 15, + sym_type_conversion, + [34783] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1403), 1, - anon_sym_PIPE, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1409), 1, + ACTIONS(1513), 1, anon_sym_STAR_STAR, - ACTIONS(1415), 1, - anon_sym_AMP, - ACTIONS(1417), 1, + ACTIONS(1521), 1, anon_sym_CARET, - ACTIONS(1397), 2, + ACTIONS(1503), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1399), 2, + ACTIONS(1505), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1405), 2, + ACTIONS(1511), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1411), 3, + ACTIONS(1515), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1559), 3, - anon_sym_as, + ACTIONS(1557), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1557), 18, + ACTIONS(1555), 20, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, - anon_sym_async, - anon_sym_for, + anon_sym_else, anon_sym_in, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_AMP, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [34996] = 14, + sym_type_conversion, + [34850] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(555), 1, + ACTIONS(1453), 1, + anon_sym_DOT, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(563), 1, - anon_sym_await, - ACTIONS(1569), 1, - anon_sym_not, - STATE(693), 1, - sym_string, - STATE(694), 1, - sym_primary_expression, - ACTIONS(75), 2, - sym_ellipsis, - sym_float, - ACTIONS(47), 3, + ACTIONS(1513), 1, + anon_sym_STAR_STAR, + ACTIONS(1503), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1505), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1511), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(77), 5, - sym_integer, - sym_identifier, - sym_true, - sym_false, - sym_none, - ACTIONS(557), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(764), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, + STATE(593), 2, + sym_argument_list, sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [35065] = 8, + ACTIONS(1515), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1557), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1555), 21, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [34915] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1409), 1, + ACTIONS(1509), 1, + anon_sym_PIPE, + ACTIONS(1513), 1, anon_sym_STAR_STAR, - STATE(601), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1563), 5, - anon_sym_as, + ACTIONS(1519), 1, + anon_sym_AMP, + ACTIONS(1521), 1, + anon_sym_CARET, + ACTIONS(1503), 2, anon_sym_STAR, anon_sym_SLASH, + ACTIONS(1505), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1511), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(593), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1515), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1577), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1561), 28, + ACTIONS(1575), 18, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, - anon_sym_async, - anon_sym_for, + anon_sym_else, anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [35122] = 11, + sym_type_conversion, + [34986] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1409), 1, + ACTIONS(1509), 1, + anon_sym_PIPE, + ACTIONS(1513), 1, anon_sym_STAR_STAR, - ACTIONS(1397), 2, + ACTIONS(1519), 1, + anon_sym_AMP, + ACTIONS(1521), 1, + anon_sym_CARET, + ACTIONS(1503), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1405), 2, + ACTIONS(1505), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1511), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1411), 3, + ACTIONS(1515), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1541), 3, + ACTIONS(1581), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1579), 18, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [35057] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1453), 1, + anon_sym_DOT, + ACTIONS(1455), 1, + anon_sym_LPAREN, + ACTIONS(1471), 1, + anon_sym_LBRACK, + ACTIONS(1473), 1, + anon_sym_STAR_STAR, + STATE(593), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1585), 5, anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 23, + ACTIONS(1583), 28, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -52195,11 +53720,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -52209,27 +53739,27 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [35185] = 8, + [35114] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1469), 1, + ACTIONS(1513), 1, anon_sym_STAR_STAR, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1541), 5, + ACTIONS(1571), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 28, + ACTIONS(1569), 28, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -52258,27 +53788,27 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [35242] = 8, + [35171] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1469), 1, + ACTIONS(1513), 1, anon_sym_STAR_STAR, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1567), 5, + ACTIONS(1585), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1565), 28, + ACTIONS(1583), 28, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -52307,44 +53837,100 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, + [35228] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1453), 1, + anon_sym_DOT, + ACTIONS(1455), 1, + anon_sym_LPAREN, + ACTIONS(1467), 1, + anon_sym_PIPE, + ACTIONS(1471), 1, + anon_sym_LBRACK, + ACTIONS(1473), 1, + anon_sym_STAR_STAR, + ACTIONS(1479), 1, + anon_sym_AMP, + ACTIONS(1481), 1, + anon_sym_CARET, + ACTIONS(1461), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1463), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1469), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(593), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1475), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1577), 3, + anon_sym_as, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1575), 18, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, [35299] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 1, + ACTIONS(1453), 1, anon_sym_DOT, - ACTIONS(1391), 1, + ACTIONS(1455), 1, anon_sym_LPAREN, - ACTIONS(1403), 1, + ACTIONS(1467), 1, anon_sym_PIPE, - ACTIONS(1407), 1, + ACTIONS(1471), 1, anon_sym_LBRACK, - ACTIONS(1409), 1, + ACTIONS(1473), 1, anon_sym_STAR_STAR, - ACTIONS(1415), 1, + ACTIONS(1479), 1, anon_sym_AMP, - ACTIONS(1417), 1, + ACTIONS(1481), 1, anon_sym_CARET, - ACTIONS(1397), 2, + ACTIONS(1461), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1399), 2, + ACTIONS(1463), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1405), 2, + ACTIONS(1469), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(601), 2, + STATE(593), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1411), 3, + ACTIONS(1475), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1555), 3, + ACTIONS(1581), 3, anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1553), 18, + ACTIONS(1579), 18, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -52363,43 +53949,86 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [35370] = 13, + [35370] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, + ACTIONS(1109), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1104), 33, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(598), 1, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [35416] = 13, + ACTIONS(3), 1, + sym_comment, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(604), 1, + ACTIONS(616), 1, anon_sym_await, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - STATE(708), 1, + STATE(699), 1, sym_string, - STATE(727), 1, + STATE(711), 1, sym_primary_expression, - ACTIONS(602), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 5, + ACTIONS(600), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(592), 5, + ACTIONS(604), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(787), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -52416,43 +54045,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [35436] = 13, + [35482] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(555), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(563), 1, + ACTIONS(612), 1, + anon_sym_LBRACE, + ACTIONS(616), 1, anon_sym_await, - STATE(693), 1, + ACTIONS(618), 1, + sym__string_start, + STATE(699), 1, sym_string, - STATE(694), 1, + STATE(713), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(600), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(557), 5, + ACTIONS(604), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(764), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -52469,43 +54098,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [35502] = 13, + [35548] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(555), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(563), 1, + ACTIONS(612), 1, + anon_sym_LBRACE, + ACTIONS(616), 1, anon_sym_await, - STATE(693), 1, + ACTIONS(618), 1, + sym__string_start, + STATE(699), 1, sym_string, - STATE(700), 1, + STATE(729), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(600), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(557), 5, + ACTIONS(604), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(764), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -52522,43 +54151,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [35568] = 13, + [35614] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(555), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(563), 1, + ACTIONS(612), 1, + anon_sym_LBRACE, + ACTIONS(616), 1, anon_sym_await, - STATE(693), 1, + ACTIONS(618), 1, + sym__string_start, + STATE(699), 1, sym_string, - STATE(698), 1, + STATE(731), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(600), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(557), 5, + ACTIONS(604), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(764), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -52575,43 +54204,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [35634] = 13, + [35680] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(555), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(563), 1, - anon_sym_await, - STATE(693), 1, + ACTIONS(612), 1, + anon_sym_LBRACE, + ACTIONS(616), 1, + anon_sym_await, + ACTIONS(618), 1, + sym__string_start, + STATE(699), 1, sym_string, - STATE(701), 1, + STATE(733), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(600), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(557), 5, + ACTIONS(604), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(764), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -52628,43 +54257,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [35700] = 13, + [35746] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(555), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(563), 1, + ACTIONS(612), 1, + anon_sym_LBRACE, + ACTIONS(616), 1, anon_sym_await, - STATE(693), 1, + ACTIONS(618), 1, + sym__string_start, + STATE(699), 1, sym_string, - STATE(697), 1, + STATE(734), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(600), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(557), 5, + ACTIONS(604), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(764), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -52681,49 +54310,100 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [35766] = 15, + [35812] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(1571), 1, - sym_identifier, - ACTIONS(1575), 1, + ACTIONS(616), 1, anon_sym_await, - STATE(569), 1, + ACTIONS(618), 1, + sym__string_start, + STATE(699), 1, sym_string, - STATE(843), 1, + STATE(718), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - STATE(835), 2, + ACTIONS(608), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(600), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(604), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(796), 16, + sym_binary_operator, + sym_unary_operator, sym_attribute, sym_subscript, - ACTIONS(285), 3, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [35878] = 13, + ACTIONS(3), 1, + sym_comment, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(610), 1, + anon_sym_LBRACK, + ACTIONS(612), 1, + anon_sym_LBRACE, + ACTIONS(616), 1, + anon_sym_await, + ACTIONS(618), 1, + sym__string_start, + STATE(699), 1, + sym_string, + STATE(730), 1, + sym_primary_expression, + ACTIONS(614), 2, + sym_ellipsis, + sym_float, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(600), 5, sym_integer, + sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(1573), 5, + ACTIONS(604), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 14, + STATE(796), 16, sym_binary_operator, sym_unary_operator, + sym_attribute, + sym_subscript, sym_call, sym_list, sym_set, @@ -52736,26 +54416,28 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [35836] = 4, + [35944] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(570), 1, - anon_sym_COLON_EQ, - ACTIONS(260), 6, + ACTIONS(618), 1, + sym__string_start, + STATE(647), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1372), 4, anon_sym_STAR, - anon_sym_COLON, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(287), 31, + ACTIONS(1370), 31, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_else, + anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -52779,23 +54461,22 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - sym_type_conversion, - [35884] = 13, + [35994] = 13, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, anon_sym_LBRACE, ACTIONS(81), 1, sym__string_start, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - ACTIONS(563), 1, + ACTIONS(569), 1, anon_sym_await, STATE(693), 1, sym_string, - STATE(702), 1, + STATE(704), 1, sym_primary_expression, ACTIONS(75), 2, sym_ellipsis, @@ -52810,13 +54491,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(557), 5, + ACTIONS(563), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -52833,43 +54514,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [35950] = 13, + [36060] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(555), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(563), 1, + ACTIONS(612), 1, + anon_sym_LBRACE, + ACTIONS(616), 1, anon_sym_await, - STATE(693), 1, + ACTIONS(618), 1, + sym__string_start, + STATE(699), 1, sym_string, - STATE(703), 1, + STATE(719), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(600), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(557), 5, + ACTIONS(604), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(764), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -52886,43 +54567,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [36016] = 13, + [36126] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(612), 1, anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(576), 1, + ACTIONS(616), 1, anon_sym_await, - STATE(569), 1, + ACTIONS(618), 1, + sym__string_start, + STATE(699), 1, sym_string, - STATE(611), 1, + STATE(721), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(600), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(604), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -52939,47 +54620,94 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [36082] = 13, + [36192] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, + ACTIONS(1587), 1, + sym__string_start, + STATE(647), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1376), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1374), 31, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(277), 1, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(279), 1, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [36242] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(576), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(1590), 1, + sym_identifier, + ACTIONS(1594), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(608), 1, + STATE(844), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + STATE(839), 2, + sym_attribute, + sym_subscript, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(301), 4, sym_integer, - sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(1592), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(589), 14, sym_binary_operator, sym_unary_operator, - sym_attribute, - sym_subscript, sym_call, sym_list, sym_set, @@ -52992,43 +54720,98 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [36148] = 13, + [36312] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(277), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(1385), 1, + sym_identifier, + ACTIONS(1391), 1, + anon_sym_await, + STATE(565), 1, + sym_string, + STATE(844), 1, + sym_primary_expression, + ACTIONS(299), 2, + sym_ellipsis, + sym_float, + STATE(728), 2, + sym_attribute, + sym_subscript, + ACTIONS(291), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(301), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1389), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(589), 14, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [36382] = 13, + ACTIONS(3), 1, + sym_comment, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(576), 1, + ACTIONS(590), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(598), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(620), 1, + STATE(632), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53045,43 +54828,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [36214] = 13, + [36448] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(81), 1, sym__string_start, - ACTIONS(576), 1, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + ACTIONS(569), 1, anon_sym_await, - STATE(569), 1, + STATE(693), 1, sym_string, - STATE(612), 1, + STATE(701), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(77), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(563), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53098,43 +54881,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [36280] = 13, + [36514] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(576), 1, + ACTIONS(590), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(598), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(607), 1, + STATE(633), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53151,43 +54934,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [36346] = 13, + [36580] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(81), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(555), 1, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(563), 1, + ACTIONS(598), 1, anon_sym_await, - STATE(693), 1, + STATE(565), 1, sym_string, - STATE(704), 1, + STATE(618), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(557), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(764), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53204,43 +54987,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [36412] = 13, + [36646] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(81), 1, sym__string_start, - ACTIONS(576), 1, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + ACTIONS(569), 1, anon_sym_await, - STATE(569), 1, + STATE(693), 1, sym_string, - STATE(631), 1, + STATE(707), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(77), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(563), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53257,16 +55040,69 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [36478] = 3, + [36712] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1093), 5, + ACTIONS(51), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym__string_start, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + ACTIONS(569), 1, + anon_sym_await, + STATE(693), 1, + sym_string, + STATE(708), 1, + sym_primary_expression, + ACTIONS(75), 2, + sym_ellipsis, + sym_float, + ACTIONS(47), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(77), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(563), 5, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(773), 16, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_await, + [36778] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1152), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1088), 33, + ACTIONS(1147), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -53300,77 +55136,69 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [36524] = 13, + [36824] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, + ACTIONS(578), 1, + anon_sym_COLON_EQ, + ACTIONS(260), 6, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(293), 31, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(576), 1, - anon_sym_await, - STATE(569), 1, - sym_string, - STATE(606), 1, - sym_primary_expression, - ACTIONS(293), 2, - sym_ellipsis, - sym_float, - ACTIONS(285), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_else, + anon_sym_in, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(295), 5, - sym_integer, - sym_identifier, - sym_true, - sym_false, - sym_none, - ACTIONS(568), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(575), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [36590] = 3, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym_type_conversion, + [36872] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1136), 5, + ACTIONS(1023), 1, + anon_sym_COLON_EQ, + ACTIONS(1021), 6, anon_sym_STAR, + anon_sym_COLON, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1131), 33, + ACTIONS(1016), 31, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_else, anon_sym_in, anon_sym_PIPE, @@ -53396,43 +55224,43 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym_type_conversion, - [36636] = 13, + [36920] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(576), 1, + ACTIONS(590), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(598), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(622), 1, + STATE(616), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53449,43 +55277,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [36702] = 13, + [36986] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(81), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(561), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(567), 1, anon_sym_LBRACK, - ACTIONS(586), 1, + ACTIONS(569), 1, anon_sym_await, - STATE(569), 1, + STATE(693), 1, sym_string, - STATE(629), 1, + STATE(694), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(77), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(563), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53502,43 +55330,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [36768] = 13, + [37052] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(604), 1, + ACTIONS(588), 1, anon_sym_await, - ACTIONS(606), 1, - sym__string_start, - STATE(708), 1, + STATE(565), 1, sym_string, - STATE(711), 1, + STATE(620), 1, sym_primary_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(592), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53555,43 +55383,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [36834] = 13, + [37118] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(604), 1, + ACTIONS(588), 1, anon_sym_await, - ACTIONS(606), 1, - sym__string_start, - STATE(708), 1, + STATE(565), 1, sym_string, - STATE(735), 1, + STATE(606), 1, sym_primary_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(592), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53608,88 +55436,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [36900] = 5, + [37184] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, sym__string_start, - STATE(683), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1356), 4, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1354), 31, - anon_sym_DOT, + ACTIONS(571), 1, anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_COLON, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [36950] = 13, - ACTIONS(3), 1, - sym_comment, - ACTIONS(590), 1, - anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(604), 1, + ACTIONS(588), 1, anon_sym_await, - ACTIONS(606), 1, - sym__string_start, - STATE(708), 1, + STATE(565), 1, sym_string, - STATE(710), 1, + STATE(621), 1, sym_primary_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(592), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53706,43 +55489,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37016] = 13, + [37250] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(604), 1, + ACTIONS(588), 1, anon_sym_await, - ACTIONS(606), 1, - sym__string_start, - STATE(708), 1, + STATE(565), 1, sym_string, - STATE(731), 1, + STATE(622), 1, sym_primary_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(592), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53759,43 +55542,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37082] = 13, + [37316] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(604), 1, + ACTIONS(588), 1, anon_sym_await, - ACTIONS(606), 1, - sym__string_start, - STATE(708), 1, + STATE(565), 1, sym_string, - STATE(730), 1, + STATE(623), 1, sym_primary_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(592), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53812,43 +55595,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37148] = 13, + [37382] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(571), 1, anon_sym_LPAREN, ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(586), 1, + ACTIONS(588), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(633), 1, + STATE(624), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53865,43 +55648,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37214] = 13, + [37448] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(604), 1, + ACTIONS(588), 1, anon_sym_await, - ACTIONS(606), 1, - sym__string_start, - STATE(708), 1, + STATE(565), 1, sym_string, - STATE(729), 1, + STATE(625), 1, sym_primary_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(592), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53918,43 +55701,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37280] = 13, + [37514] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(604), 1, + ACTIONS(588), 1, anon_sym_await, - ACTIONS(606), 1, - sym__string_start, - STATE(708), 1, + STATE(565), 1, sym_string, - STATE(728), 1, + STATE(626), 1, sym_primary_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(592), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -53971,43 +55754,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37346] = 13, + [37580] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, + ACTIONS(51), 1, + anon_sym_LBRACE, + ACTIONS(81), 1, + sym__string_start, + ACTIONS(561), 1, anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(567), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(604), 1, + ACTIONS(569), 1, anon_sym_await, - ACTIONS(606), 1, - sym__string_start, - STATE(708), 1, + STATE(693), 1, sym_string, - STATE(726), 1, + STATE(696), 1, sym_primary_expression, - ACTIONS(602), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 5, + ACTIONS(77), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(592), 5, + ACTIONS(563), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(787), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54024,43 +55807,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37412] = 13, + [37646] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(571), 1, anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(604), 1, + ACTIONS(588), 1, anon_sym_await, - ACTIONS(606), 1, - sym__string_start, - STATE(708), 1, + STATE(565), 1, sym_string, - STATE(725), 1, + STATE(627), 1, sym_primary_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(592), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54077,49 +55860,91 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37478] = 15, + [37712] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, + ACTIONS(592), 1, + anon_sym_COLON_EQ, + ACTIONS(260), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(293), 31, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(277), 1, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(279), 1, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [37760] = 13, + ACTIONS(3), 1, + sym_comment, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(1369), 1, - sym_identifier, - ACTIONS(1375), 1, + ACTIONS(571), 1, + anon_sym_LPAREN, + ACTIONS(584), 1, + anon_sym_LBRACK, + ACTIONS(588), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(843), 1, + STATE(628), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - STATE(734), 2, - sym_attribute, - sym_subscript, - ACTIONS(285), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 4, + ACTIONS(301), 5, sym_integer, + sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(1373), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 14, + STATE(589), 16, sym_binary_operator, sym_unary_operator, + sym_attribute, + sym_subscript, sym_call, sym_list, sym_set, @@ -54132,43 +55957,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37548] = 13, + [37826] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(81), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(561), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(567), 1, anon_sym_LBRACK, - ACTIONS(586), 1, + ACTIONS(569), 1, anon_sym_await, - STATE(569), 1, + STATE(693), 1, sym_string, - STATE(627), 1, + STATE(702), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(77), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(563), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54185,43 +56010,87 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37614] = 13, + [37892] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1596), 1, + anon_sym_COLON_EQ, + ACTIONS(1021), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1016), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [37940] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(571), 1, anon_sym_LPAREN, ACTIONS(584), 1, anon_sym_LBRACK, - ACTIONS(586), 1, + ACTIONS(588), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(617), 1, + STATE(630), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(291), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54238,43 +56107,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37680] = 13, + [38006] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, - anon_sym_LBRACE, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(578), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(610), 1, anon_sym_LBRACK, - ACTIONS(586), 1, + ACTIONS(612), 1, + anon_sym_LBRACE, + ACTIONS(616), 1, anon_sym_await, - STATE(569), 1, + ACTIONS(618), 1, + sym__string_start, + STATE(699), 1, sym_string, - STATE(613), 1, + STATE(720), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(614), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(608), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(600), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(604), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(796), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54291,43 +56160,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37746] = 13, + [38072] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(81), 1, sym__string_start, - ACTIONS(576), 1, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + ACTIONS(569), 1, anon_sym_await, - STATE(569), 1, + STATE(693), 1, sym_string, - STATE(623), 1, + STATE(706), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(77), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(563), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54344,43 +56213,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37812] = 13, + [38138] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(81), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(561), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(567), 1, anon_sym_LBRACK, - ACTIONS(586), 1, + ACTIONS(569), 1, anon_sym_await, - STATE(569), 1, + STATE(693), 1, sym_string, - STATE(619), 1, + STATE(697), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(77), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(563), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54397,87 +56266,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37878] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1577), 1, - anon_sym_COLON_EQ, - ACTIONS(1022), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_COLON, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1017), 31, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [37926] = 13, + [38204] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(51), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(81), 1, sym__string_start, - ACTIONS(576), 1, + ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, + anon_sym_LBRACK, + ACTIONS(569), 1, anon_sym_await, - STATE(569), 1, + STATE(693), 1, sym_string, - STATE(624), 1, + STATE(705), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(75), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(47), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(77), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(563), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54494,87 +56319,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [37992] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(580), 1, - anon_sym_COLON_EQ, - ACTIONS(260), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_COLON, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(287), 31, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [38040] = 13, + [38270] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(586), 1, + ACTIONS(598), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(609), 1, + STATE(608), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54591,43 +56372,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [38106] = 13, + [38336] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(586), 1, + ACTIONS(598), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(616), 1, + STATE(609), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54644,43 +56425,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [38172] = 13, + [38402] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(262), 1, - anon_sym_LPAREN, - ACTIONS(277), 1, - anon_sym_LBRACK, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(576), 1, + ACTIONS(590), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(598), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(625), 1, + STATE(611), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(285), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54697,43 +56478,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [38238] = 13, + [38468] = 13, ACTIONS(3), 1, sym_comment, + ACTIONS(283), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + sym__string_start, ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(598), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_LBRACE, - ACTIONS(604), 1, + ACTIONS(598), 1, anon_sym_await, - ACTIONS(606), 1, - sym__string_start, - STATE(708), 1, + STATE(565), 1, sym_string, - STATE(715), 1, + STATE(612), 1, sym_primary_expression, - ACTIONS(602), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(596), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(588), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(592), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(787), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54750,43 +56531,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [38304] = 13, + [38534] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(586), 1, + ACTIONS(598), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(621), 1, + STATE(613), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54803,43 +56584,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [38370] = 13, + [38600] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(586), 1, + ACTIONS(598), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(630), 1, + STATE(614), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54856,43 +56637,43 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [38436] = 13, + [38666] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(279), 1, + ACTIONS(283), 1, anon_sym_LBRACE, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(578), 1, + ACTIONS(590), 1, anon_sym_LPAREN, - ACTIONS(584), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(586), 1, + ACTIONS(598), 1, anon_sym_await, - STATE(569), 1, + STATE(565), 1, sym_string, - STATE(618), 1, + STATE(615), 1, sym_primary_expression, - ACTIONS(293), 2, + ACTIONS(299), 2, sym_ellipsis, sym_float, - ACTIONS(582), 3, + ACTIONS(594), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(295), 5, + ACTIONS(301), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(568), 5, + ACTIONS(576), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(575), 16, + STATE(589), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54909,67 +56690,22 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [38502] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1579), 1, - sym__string_start, - STATE(683), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1360), 4, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1358), 31, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_COLON, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [38552] = 13, + [38732] = 13, ACTIONS(3), 1, sym_comment, ACTIONS(51), 1, anon_sym_LBRACE, ACTIONS(81), 1, sym__string_start, - ACTIONS(555), 1, - anon_sym_LPAREN, ACTIONS(561), 1, + anon_sym_LPAREN, + ACTIONS(567), 1, anon_sym_LBRACK, - ACTIONS(563), 1, + ACTIONS(569), 1, anon_sym_await, STATE(693), 1, sym_string, - STATE(706), 1, + STATE(703), 1, sym_primary_expression, ACTIONS(75), 2, sym_ellipsis, @@ -54984,13 +56720,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(557), 5, + ACTIONS(563), 5, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(764), 16, + STATE(773), 16, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -55007,33 +56743,33 @@ static const uint16_t ts_small_parse_table[] = { sym_parenthesized_expression, sym_concatenated_string, sym_await, - [38618] = 4, + [38798] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1024), 1, - anon_sym_COLON_EQ, - ACTIONS(1022), 6, + ACTIONS(81), 1, + sym__string_start, + STATE(692), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1372), 5, anon_sym_STAR, - anon_sym_COLON, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1017), 31, + ACTIONS(1370), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, - anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_else, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -55050,123 +56786,76 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - sym_type_conversion, - [38666] = 13, - ACTIONS(3), 1, - sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(555), 1, - anon_sym_LPAREN, - ACTIONS(561), 1, - anon_sym_LBRACK, - ACTIONS(563), 1, - anon_sym_await, - STATE(693), 1, - sym_string, - STATE(707), 1, - sym_primary_expression, - ACTIONS(75), 2, - sym_ellipsis, - sym_float, - ACTIONS(47), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(77), 5, - sym_integer, - sym_identifier, - sym_true, - sym_false, - sym_none, - ACTIONS(557), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(764), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [38732] = 13, + sym__semicolon, + [38847] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(555), 1, + ACTIONS(1459), 1, + anon_sym_EQ, + ACTIONS(1598), 1, + anon_sym_DOT, + ACTIONS(1600), 1, anon_sym_LPAREN, - ACTIONS(561), 1, + ACTIONS(1608), 1, + anon_sym_PIPE, + ACTIONS(1612), 1, anon_sym_LBRACK, - ACTIONS(563), 1, - anon_sym_await, - STATE(693), 1, - sym_string, - STATE(699), 1, - sym_primary_expression, - ACTIONS(75), 2, - sym_ellipsis, - sym_float, - ACTIONS(47), 3, + ACTIONS(1614), 1, + anon_sym_STAR_STAR, + ACTIONS(1618), 1, + anon_sym_not, + ACTIONS(1620), 1, + anon_sym_AMP, + ACTIONS(1622), 1, + anon_sym_CARET, + ACTIONS(1626), 1, + anon_sym_is, + STATE(837), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1602), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1604), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1610), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(77), 5, - sym_integer, - sym_identifier, - sym_true, - sym_false, - sym_none, - ACTIONS(557), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(764), 16, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, + ACTIONS(1624), 2, + anon_sym_LT, + anon_sym_GT, + STATE(747), 2, + sym_argument_list, sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_await, - [38798] = 3, + ACTIONS(1616), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1606), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1457), 7, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_if, + anon_sym_and, + anon_sym_or, + sym__semicolon, + [38926] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1136), 5, + ACTIONS(1109), 5, anon_sym_as, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1131), 32, + ACTIONS(1104), 32, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -55199,16 +56888,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [38843] = 3, + [38971] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1093), 5, + ACTIONS(1152), 5, anon_sym_as, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1088), 32, + ACTIONS(1147), 32, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -55241,21 +56930,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [38888] = 5, + [39016] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(81), 1, + ACTIONS(1628), 1, sym__string_start, - STATE(691), 2, + STATE(692), 2, sym_string, aux_sym_concatenated_string_repeat1, - ACTIONS(1356), 5, + ACTIONS(1376), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1354), 29, + ACTIONS(1374), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -55285,21 +56974,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [38937] = 5, + [39065] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1582), 1, + ACTIONS(81), 1, sym__string_start, - STATE(691), 2, + STATE(688), 2, sym_string, aux_sym_concatenated_string_repeat1, - ACTIONS(1360), 5, + ACTIONS(1021), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1358), 29, + ACTIONS(1016), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -55329,92 +57018,83 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [38986] = 20, + [39114] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1395), 1, - anon_sym_EQ, - ACTIONS(1585), 1, + ACTIONS(1598), 1, anon_sym_DOT, - ACTIONS(1587), 1, + ACTIONS(1600), 1, anon_sym_LPAREN, - ACTIONS(1595), 1, - anon_sym_PIPE, - ACTIONS(1599), 1, + ACTIONS(1612), 1, anon_sym_LBRACK, - ACTIONS(1601), 1, + ACTIONS(1614), 1, anon_sym_STAR_STAR, - ACTIONS(1605), 1, - anon_sym_not, - ACTIONS(1607), 1, + ACTIONS(1620), 1, anon_sym_AMP, - ACTIONS(1609), 1, + ACTIONS(1622), 1, anon_sym_CARET, - ACTIONS(1613), 1, - anon_sym_is, - STATE(833), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1589), 2, + ACTIONS(1602), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1591), 2, + ACTIONS(1604), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1597), 2, + ACTIONS(1610), 2, anon_sym_DASH, anon_sym_PLUS, - ACTIONS(1611), 2, - anon_sym_LT, - anon_sym_GT, - STATE(768), 2, + STATE(747), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1603), 3, + ACTIONS(1557), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1616), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1593), 6, - anon_sym_in, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - ACTIONS(1393), 7, + ACTIONS(1555), 16, sym__newline, anon_sym_from, anon_sym_COMMA, anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, sym__semicolon, - [39065] = 5, + [39180] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(81), 1, - sym__string_start, - STATE(690), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1022), 5, + ACTIONS(1395), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1017), 29, - sym__newline, + ACTIONS(1393), 32, + sym__string_start, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -55431,45 +57111,93 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, + [39224] = 11, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1598), 1, + anon_sym_DOT, + ACTIONS(1600), 1, + anon_sym_LPAREN, + ACTIONS(1612), 1, + anon_sym_LBRACK, + ACTIONS(1614), 1, + anon_sym_STAR_STAR, + ACTIONS(1602), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1610), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(747), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1557), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1616), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1555), 20, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, sym__semicolon, - [39114] = 15, + [39284] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1585), 1, + ACTIONS(1598), 1, anon_sym_DOT, - ACTIONS(1587), 1, + ACTIONS(1600), 1, anon_sym_LPAREN, - ACTIONS(1595), 1, + ACTIONS(1608), 1, anon_sym_PIPE, - ACTIONS(1599), 1, + ACTIONS(1612), 1, anon_sym_LBRACK, - ACTIONS(1601), 1, + ACTIONS(1614), 1, anon_sym_STAR_STAR, - ACTIONS(1607), 1, + ACTIONS(1620), 1, anon_sym_AMP, - ACTIONS(1609), 1, + ACTIONS(1622), 1, anon_sym_CARET, - ACTIONS(1589), 2, + ACTIONS(1602), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1591), 2, + ACTIONS(1604), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1597), 2, + ACTIONS(1610), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(768), 2, + STATE(747), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1551), 3, + ACTIONS(1577), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1603), 3, + ACTIONS(1616), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1549), 15, + ACTIONS(1575), 15, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -55485,16 +57213,77 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [39182] = 3, + [39352] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(1379), 4, + ACTIONS(1631), 1, + anon_sym_DOT, + ACTIONS(1633), 1, + anon_sym_LPAREN, + ACTIONS(1641), 1, + anon_sym_PIPE, + ACTIONS(1645), 1, + anon_sym_LBRACK, + ACTIONS(1647), 1, + anon_sym_STAR_STAR, + ACTIONS(1651), 1, + anon_sym_not, + ACTIONS(1653), 1, + anon_sym_AMP, + ACTIONS(1655), 1, + anon_sym_CARET, + ACTIONS(1659), 1, + anon_sym_is, + STATE(843), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1635), 2, anon_sym_STAR, anon_sym_SLASH, + ACTIONS(1637), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1643), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(1657), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1377), 32, + STATE(799), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1649), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1639), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1457), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_and, + anon_sym_or, + [39428] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(618), 1, sym__string_start, + STATE(643), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1021), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1016), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -55508,8 +57297,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -55526,15 +57313,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [39226] = 3, + [39476] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1367), 4, + ACTIONS(1383), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1365), 32, + ACTIONS(1381), 32, sym__string_start, anon_sym_DOT, anon_sym_LPAREN, @@ -55567,45 +57354,52 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [39270] = 8, + [39520] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1585), 1, + ACTIONS(1598), 1, anon_sym_DOT, - ACTIONS(1587), 1, + ACTIONS(1600), 1, anon_sym_LPAREN, - ACTIONS(1599), 1, + ACTIONS(1608), 1, + anon_sym_PIPE, + ACTIONS(1612), 1, anon_sym_LBRACK, - ACTIONS(1601), 1, + ACTIONS(1614), 1, anon_sym_STAR_STAR, - STATE(768), 2, + ACTIONS(1620), 1, + anon_sym_AMP, + ACTIONS(1622), 1, + anon_sym_CARET, + ACTIONS(1602), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1604), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1610), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(747), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1541), 5, - anon_sym_STAR, + ACTIONS(1581), 3, anon_sym_EQ, - anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 25, + ACTIONS(1616), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1579), 15, sym__newline, anon_sym_from, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, @@ -55613,35 +57407,27 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [39324] = 11, + [39588] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1585), 1, + ACTIONS(1598), 1, anon_sym_DOT, - ACTIONS(1587), 1, + ACTIONS(1600), 1, anon_sym_LPAREN, - ACTIONS(1599), 1, + ACTIONS(1612), 1, anon_sym_LBRACK, - ACTIONS(1601), 1, + ACTIONS(1614), 1, anon_sym_STAR_STAR, - ACTIONS(1589), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1597), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(768), 2, + STATE(747), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1541), 3, + ACTIONS(1557), 5, + anon_sym_STAR, anon_sym_EQ, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1603), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1539), 20, + ACTIONS(1555), 25, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -55649,9 +57435,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_if, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -55662,44 +57453,44 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [39384] = 15, + [39642] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1585), 1, + ACTIONS(1598), 1, anon_sym_DOT, - ACTIONS(1587), 1, + ACTIONS(1600), 1, anon_sym_LPAREN, - ACTIONS(1595), 1, + ACTIONS(1608), 1, anon_sym_PIPE, - ACTIONS(1599), 1, + ACTIONS(1612), 1, anon_sym_LBRACK, - ACTIONS(1601), 1, + ACTIONS(1614), 1, anon_sym_STAR_STAR, - ACTIONS(1607), 1, + ACTIONS(1620), 1, anon_sym_AMP, - ACTIONS(1609), 1, + ACTIONS(1622), 1, anon_sym_CARET, - ACTIONS(1589), 2, + ACTIONS(1602), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1591), 2, + ACTIONS(1604), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1597), 2, + ACTIONS(1610), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(768), 2, + STATE(747), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1559), 3, + ACTIONS(1565), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1603), 3, + ACTIONS(1616), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1557), 15, + ACTIONS(1563), 15, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -55715,51 +57506,45 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [39452] = 14, + [39710] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1585), 1, + ACTIONS(1598), 1, anon_sym_DOT, - ACTIONS(1587), 1, + ACTIONS(1600), 1, anon_sym_LPAREN, - ACTIONS(1599), 1, + ACTIONS(1612), 1, anon_sym_LBRACK, - ACTIONS(1601), 1, + ACTIONS(1614), 1, anon_sym_STAR_STAR, - ACTIONS(1607), 1, - anon_sym_AMP, - ACTIONS(1609), 1, - anon_sym_CARET, - ACTIONS(1589), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1591), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1597), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(768), 2, + STATE(747), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1541), 3, + ACTIONS(1571), 5, + anon_sym_STAR, anon_sym_EQ, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1603), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1539), 16, + ACTIONS(1569), 25, sym__newline, anon_sym_from, anon_sym_COMMA, + anon_sym_GT_GT, anon_sym_if, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, @@ -55767,47 +57552,50 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [39518] = 10, + [39764] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1585), 1, + ACTIONS(1598), 1, anon_sym_DOT, - ACTIONS(1587), 1, + ACTIONS(1600), 1, anon_sym_LPAREN, - ACTIONS(1599), 1, + ACTIONS(1612), 1, anon_sym_LBRACK, - ACTIONS(1601), 1, + ACTIONS(1614), 1, anon_sym_STAR_STAR, - ACTIONS(1589), 2, + ACTIONS(1622), 1, + anon_sym_CARET, + ACTIONS(1602), 2, anon_sym_STAR, anon_sym_SLASH, - STATE(768), 2, + ACTIONS(1604), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1610), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(747), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1541), 3, + ACTIONS(1557), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1603), 3, + ACTIONS(1616), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1539), 22, + ACTIONS(1555), 17, sym__newline, anon_sym_from, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, anon_sym_in, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, anon_sym_not, anon_sym_and, anon_sym_or, anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, @@ -55815,27 +57603,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [39576] = 8, + [39828] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1585), 1, + ACTIONS(1598), 1, anon_sym_DOT, - ACTIONS(1587), 1, + ACTIONS(1600), 1, anon_sym_LPAREN, - ACTIONS(1599), 1, + ACTIONS(1612), 1, anon_sym_LBRACK, - ACTIONS(1601), 1, + ACTIONS(1614), 1, anon_sym_STAR_STAR, - STATE(768), 2, + ACTIONS(1602), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(747), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1541), 5, - anon_sym_STAR, + ACTIONS(1557), 3, anon_sym_EQ, - anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 25, + ACTIONS(1616), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1555), 22, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -55845,12 +57638,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -55861,40 +57651,38 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [39630] = 13, + [39886] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1585), 1, + ACTIONS(1598), 1, anon_sym_DOT, - ACTIONS(1587), 1, + ACTIONS(1600), 1, anon_sym_LPAREN, - ACTIONS(1599), 1, + ACTIONS(1612), 1, anon_sym_LBRACK, - ACTIONS(1601), 1, + ACTIONS(1614), 1, anon_sym_STAR_STAR, - ACTIONS(1609), 1, - anon_sym_CARET, - ACTIONS(1589), 2, + ACTIONS(1602), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1591), 2, + ACTIONS(1604), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1597), 2, + ACTIONS(1610), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(768), 2, + STATE(747), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1541), 3, + ACTIONS(1557), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1603), 3, + ACTIONS(1616), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1539), 17, + ACTIONS(1555), 18, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -55905,6 +57693,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_and, anon_sym_or, anon_sym_AMP, + anon_sym_CARET, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, @@ -55912,49 +57701,45 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [39694] = 12, + [39948] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1585), 1, + ACTIONS(1598), 1, anon_sym_DOT, - ACTIONS(1587), 1, + ACTIONS(1600), 1, anon_sym_LPAREN, - ACTIONS(1599), 1, + ACTIONS(1612), 1, anon_sym_LBRACK, - ACTIONS(1601), 1, + ACTIONS(1614), 1, anon_sym_STAR_STAR, - ACTIONS(1589), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1591), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1597), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(768), 2, + STATE(747), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1541), 3, + ACTIONS(1557), 5, + anon_sym_STAR, anon_sym_EQ, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1603), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1539), 18, + ACTIONS(1555), 25, sym__newline, anon_sym_from, anon_sym_COMMA, + anon_sym_GT_GT, anon_sym_if, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, @@ -55962,93 +57747,79 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [39756] = 19, + [40002] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1615), 1, + ACTIONS(1598), 1, anon_sym_DOT, - ACTIONS(1617), 1, + ACTIONS(1600), 1, anon_sym_LPAREN, - ACTIONS(1625), 1, - anon_sym_PIPE, - ACTIONS(1629), 1, + ACTIONS(1612), 1, anon_sym_LBRACK, - ACTIONS(1631), 1, + ACTIONS(1614), 1, anon_sym_STAR_STAR, - ACTIONS(1635), 1, - anon_sym_not, - ACTIONS(1637), 1, - anon_sym_AMP, - ACTIONS(1639), 1, - anon_sym_CARET, - ACTIONS(1643), 1, - anon_sym_is, - STATE(841), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1619), 2, + STATE(747), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1585), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, - ACTIONS(1621), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1583), 25, + sym__newline, + anon_sym_from, + anon_sym_COMMA, anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1627), 2, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - ACTIONS(1641), 2, - anon_sym_LT, - anon_sym_GT, - STATE(789), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1633), 3, anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1623), 6, - anon_sym_in, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1393), 7, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_and, - anon_sym_or, - [39832] = 8, + anon_sym_is, + sym__semicolon, + [40056] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1585), 1, - anon_sym_DOT, - ACTIONS(1587), 1, - anon_sym_LPAREN, - ACTIONS(1599), 1, - anon_sym_LBRACK, - ACTIONS(1601), 1, - anon_sym_STAR_STAR, - STATE(768), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1563), 5, - anon_sym_STAR, + ACTIONS(1596), 1, + anon_sym_COLON_EQ, + ACTIONS(1661), 1, anon_sym_EQ, + ACTIONS(1021), 4, + anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1561), 25, - sym__newline, - anon_sym_from, + ACTIONS(1016), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -56064,82 +57835,72 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - sym__semicolon, - [39886] = 15, + [40103] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1585), 1, + ACTIONS(1631), 1, anon_sym_DOT, - ACTIONS(1587), 1, + ACTIONS(1633), 1, anon_sym_LPAREN, - ACTIONS(1595), 1, - anon_sym_PIPE, - ACTIONS(1599), 1, + ACTIONS(1645), 1, anon_sym_LBRACK, - ACTIONS(1601), 1, + ACTIONS(1647), 1, anon_sym_STAR_STAR, - ACTIONS(1607), 1, - anon_sym_AMP, - ACTIONS(1609), 1, - anon_sym_CARET, - ACTIONS(1589), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1591), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1597), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(768), 2, + STATE(799), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1555), 3, - anon_sym_EQ, + ACTIONS(1557), 4, + anon_sym_STAR, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1603), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1553), 15, - sym__newline, - anon_sym_from, + ACTIONS(1555), 25, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - sym__semicolon, - [39954] = 5, + [40156] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, - sym__string_start, - STATE(658), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1022), 4, + ACTIONS(592), 1, + anon_sym_COLON_EQ, + ACTIONS(620), 1, + anon_sym_EQ, + ACTIONS(260), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1017), 29, + ACTIONS(293), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -56161,86 +57922,38 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [40002] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1585), 1, - anon_sym_DOT, - ACTIONS(1587), 1, - anon_sym_LPAREN, - ACTIONS(1599), 1, - anon_sym_LBRACK, - ACTIONS(1601), 1, - anon_sym_STAR_STAR, - STATE(768), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1567), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1565), 25, - sym__newline, - anon_sym_from, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - sym__semicolon, - [40056] = 12, + [40203] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1615), 1, + ACTIONS(1631), 1, anon_sym_DOT, - ACTIONS(1617), 1, + ACTIONS(1633), 1, anon_sym_LPAREN, - ACTIONS(1629), 1, + ACTIONS(1645), 1, anon_sym_LBRACK, - ACTIONS(1631), 1, + ACTIONS(1647), 1, anon_sym_STAR_STAR, - ACTIONS(1541), 2, + ACTIONS(1557), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1619), 2, + ACTIONS(1635), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1621), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1627), 2, + ACTIONS(1643), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(789), 2, + STATE(799), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1633), 3, + ACTIONS(1649), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1539), 18, + ACTIONS(1555), 20, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, + anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_in, @@ -56250,113 +57963,104 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_or, anon_sym_AMP, anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [40117] = 15, + [40262] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1615), 1, - anon_sym_DOT, - ACTIONS(1617), 1, - anon_sym_LPAREN, - ACTIONS(1625), 1, - anon_sym_PIPE, - ACTIONS(1629), 1, - anon_sym_LBRACK, - ACTIONS(1631), 1, - anon_sym_STAR_STAR, - ACTIONS(1637), 1, - anon_sym_AMP, - ACTIONS(1639), 1, - anon_sym_CARET, - ACTIONS(1559), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1619), 2, + ACTIONS(592), 1, + anon_sym_COLON_EQ, + ACTIONS(265), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(260), 4, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1621), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(293), 27, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1627), 2, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - STATE(789), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1633), 3, + anon_sym_LBRACK, + anon_sym_STAR_STAR, anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1557), 15, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_in, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [40184] = 4, + [40309] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1017), 3, + ACTIONS(273), 1, + anon_sym_COLON_EQ, + ACTIONS(260), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(293), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, - anon_sym_LBRACK, - ACTIONS(1022), 13, - anon_sym_STAR, + anon_sym_COMMA, anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_STAR_STAR, anon_sym_AT, - anon_sym_SLASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, anon_sym_PERCENT, anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(1063), 19, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_in, - anon_sym_RBRACK, - anon_sym_EQ, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [40229] = 4, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym__semicolon, + [40354] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1088), 3, + ACTIONS(293), 3, anon_sym_DOT, anon_sym_LPAREN, anon_sym_LBRACK, - ACTIONS(1093), 13, + ACTIONS(260), 13, anon_sym_STAR, anon_sym_GT_GT, anon_sym_PIPE, @@ -56370,7 +58074,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(1095), 19, + ACTIONS(586), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -56390,19 +58094,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [40274] = 4, + [40399] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1059), 1, - anon_sym_COLON_EQ, - ACTIONS(1022), 5, + ACTIONS(1383), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1017), 29, + ACTIONS(1381), 30, sym__newline, + sym__string_start, anon_sym_DOT, anon_sym_from, anon_sym_LPAREN, @@ -56431,75 +58134,138 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [40319] = 8, + [40442] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1615), 1, + ACTIONS(1631), 1, anon_sym_DOT, - ACTIONS(1617), 1, + ACTIONS(1633), 1, anon_sym_LPAREN, - ACTIONS(1629), 1, + ACTIONS(1645), 1, anon_sym_LBRACK, - ACTIONS(1631), 1, + ACTIONS(1647), 1, anon_sym_STAR_STAR, - STATE(789), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1563), 4, - anon_sym_STAR, - anon_sym_SLASH, + ACTIONS(1655), 1, + anon_sym_CARET, + ACTIONS(1557), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1561), 25, + ACTIONS(1635), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1637), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1643), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(799), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1649), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1555), 17, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, - anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_in, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, anon_sym_AMP, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [40505] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1631), 1, + anon_sym_DOT, + ACTIONS(1633), 1, + anon_sym_LPAREN, + ACTIONS(1641), 1, + anon_sym_PIPE, + ACTIONS(1645), 1, + anon_sym_LBRACK, + ACTIONS(1647), 1, + anon_sym_STAR_STAR, + ACTIONS(1653), 1, + anon_sym_AMP, + ACTIONS(1655), 1, anon_sym_CARET, + ACTIONS(1577), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1635), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1637), 2, + anon_sym_GT_GT, anon_sym_LT_LT, + ACTIONS(1643), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(799), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1649), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1575), 15, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [40372] = 3, + [40572] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1367), 5, + ACTIONS(1631), 1, + anon_sym_DOT, + ACTIONS(1633), 1, + anon_sym_LPAREN, + ACTIONS(1645), 1, + anon_sym_LBRACK, + ACTIONS(1647), 1, + anon_sym_STAR_STAR, + STATE(799), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1571), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1365), 30, - sym__newline, - sym__string_start, - anon_sym_DOT, - anon_sym_from, - anon_sym_LPAREN, + ACTIONS(1569), 25, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -56515,15 +58281,66 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - sym__semicolon, - [40415] = 4, + [40625] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1631), 1, + anon_sym_DOT, + ACTIONS(1633), 1, + anon_sym_LPAREN, + ACTIONS(1641), 1, + anon_sym_PIPE, + ACTIONS(1645), 1, + anon_sym_LBRACK, + ACTIONS(1647), 1, + anon_sym_STAR_STAR, + ACTIONS(1653), 1, + anon_sym_AMP, + ACTIONS(1655), 1, + anon_sym_CARET, + ACTIONS(1581), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1635), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1637), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1643), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(799), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1649), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1579), 15, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [40692] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1131), 3, + ACTIONS(1016), 3, anon_sym_DOT, anon_sym_LPAREN, anon_sym_LBRACK, - ACTIONS(1136), 13, + ACTIONS(1021), 13, anon_sym_STAR, anon_sym_GT_GT, anon_sym_PIPE, @@ -56537,7 +58354,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(1138), 19, + ACTIONS(1079), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -56557,61 +58374,57 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [40460] = 8, + [40737] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1615), 1, + ACTIONS(1104), 3, anon_sym_DOT, - ACTIONS(1617), 1, anon_sym_LPAREN, - ACTIONS(1629), 1, anon_sym_LBRACK, - ACTIONS(1631), 1, - anon_sym_STAR_STAR, - STATE(789), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1567), 4, + ACTIONS(1109), 13, anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1565), 25, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, - anon_sym_if, - anon_sym_COLON, - anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_STAR_STAR, anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, + anon_sym_SLASH, anon_sym_PERCENT, anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [40513] = 3, + ACTIONS(1111), 19, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [40782] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1379), 5, + ACTIONS(1395), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1377), 30, + ACTIONS(1393), 30, sym__newline, sym__string_start, anon_sym_DOT, @@ -56642,21 +58455,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [40556] = 5, + [40825] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1577), 1, + ACTIONS(1596), 1, anon_sym_COLON_EQ, - ACTIONS(1056), 3, + ACTIONS(1072), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACK, - ACTIONS(1022), 4, + ACTIONS(1021), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1017), 27, + ACTIONS(1016), 27, anon_sym_DOT, anon_sym_LPAREN, anon_sym_GT_GT, @@ -56684,10 +58497,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [40603] = 4, + [40872] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(287), 3, + ACTIONS(293), 3, anon_sym_DOT, anon_sym_LPAREN, anon_sym_LBRACK, @@ -56705,7 +58518,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(574), 19, + ACTIONS(297), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -56725,33 +58538,36 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [40648] = 5, + [40917] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1577), 1, - anon_sym_COLON_EQ, + ACTIONS(1631), 1, + anon_sym_DOT, + ACTIONS(1633), 1, + anon_sym_LPAREN, ACTIONS(1645), 1, - anon_sym_EQ, - ACTIONS(1022), 4, + anon_sym_LBRACK, + ACTIONS(1647), 1, + anon_sym_STAR_STAR, + STATE(799), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1585), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1017), 29, - anon_sym_DOT, - anon_sym_LPAREN, + ACTIONS(1583), 25, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -56767,166 +58583,133 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [40695] = 5, + [40970] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(580), 1, - anon_sym_COLON_EQ, - ACTIONS(264), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(260), 4, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(287), 27, + ACTIONS(1016), 3, anon_sym_DOT, anon_sym_LPAREN, + anon_sym_LBRACK, + ACTIONS(1021), 13, + anon_sym_STAR, anon_sym_GT_GT, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, anon_sym_STAR_STAR, anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, + anon_sym_SLASH, anon_sym_PERCENT, anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [40742] = 4, + ACTIONS(1027), 19, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [41015] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(271), 1, - anon_sym_COLON_EQ, - ACTIONS(260), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(287), 29, - sym__newline, + ACTIONS(1631), 1, anon_sym_DOT, - anon_sym_from, + ACTIONS(1633), 1, anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, + ACTIONS(1641), 1, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(1645), 1, anon_sym_LBRACK, + ACTIONS(1647), 1, anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, + ACTIONS(1653), 1, anon_sym_AMP, + ACTIONS(1655), 1, anon_sym_CARET, + ACTIONS(1565), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1635), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1637), 2, + anon_sym_GT_GT, anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - sym__semicolon, - [40787] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1615), 1, - anon_sym_DOT, - ACTIONS(1617), 1, - anon_sym_LPAREN, - ACTIONS(1629), 1, - anon_sym_LBRACK, - ACTIONS(1631), 1, - anon_sym_STAR_STAR, - STATE(789), 2, + ACTIONS(1643), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(799), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1541), 4, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1539), 25, + ACTIONS(1649), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1563), 15, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, - anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [40840] = 11, + [41082] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1615), 1, + ACTIONS(1631), 1, anon_sym_DOT, - ACTIONS(1617), 1, + ACTIONS(1633), 1, anon_sym_LPAREN, - ACTIONS(1629), 1, + ACTIONS(1645), 1, anon_sym_LBRACK, - ACTIONS(1631), 1, + ACTIONS(1647), 1, anon_sym_STAR_STAR, - ACTIONS(1541), 2, + ACTIONS(1557), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1619), 2, + ACTIONS(1635), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1627), 2, + ACTIONS(1637), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1643), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(789), 2, + STATE(799), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1633), 3, + ACTIONS(1649), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1539), 20, + ACTIONS(1555), 18, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, - anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_in, @@ -56936,56 +58719,54 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_or, anon_sym_AMP, anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [40899] = 15, + [41143] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1615), 1, + ACTIONS(1631), 1, anon_sym_DOT, - ACTIONS(1617), 1, + ACTIONS(1633), 1, anon_sym_LPAREN, - ACTIONS(1625), 1, - anon_sym_PIPE, - ACTIONS(1629), 1, + ACTIONS(1645), 1, anon_sym_LBRACK, - ACTIONS(1631), 1, + ACTIONS(1647), 1, anon_sym_STAR_STAR, - ACTIONS(1637), 1, + ACTIONS(1653), 1, anon_sym_AMP, - ACTIONS(1639), 1, + ACTIONS(1655), 1, anon_sym_CARET, - ACTIONS(1551), 2, + ACTIONS(1557), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1619), 2, + ACTIONS(1635), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1621), 2, + ACTIONS(1637), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1627), 2, + ACTIONS(1643), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(789), 2, + STATE(799), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1633), 3, + ACTIONS(1649), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1549), 15, + ACTIONS(1555), 16, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, anon_sym_if, anon_sym_COLON, anon_sym_in, + anon_sym_PIPE, anon_sym_not, anon_sym_and, anon_sym_or, @@ -56995,82 +58776,72 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [40966] = 14, + [41208] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1615), 1, + ACTIONS(1147), 3, anon_sym_DOT, - ACTIONS(1617), 1, anon_sym_LPAREN, - ACTIONS(1629), 1, anon_sym_LBRACK, - ACTIONS(1631), 1, - anon_sym_STAR_STAR, - ACTIONS(1637), 1, - anon_sym_AMP, - ACTIONS(1639), 1, - anon_sym_CARET, - ACTIONS(1541), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1619), 2, + ACTIONS(1152), 13, anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1621), 2, anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1627), 2, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - STATE(789), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1633), 3, + anon_sym_STAR_STAR, anon_sym_AT, + anon_sym_SLASH, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1539), 16, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + ACTIONS(1154), 19, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, anon_sym_COLON, anon_sym_in, - anon_sym_PIPE, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [41031] = 10, + anon_sym_RBRACK, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [41253] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1615), 1, + ACTIONS(1631), 1, anon_sym_DOT, - ACTIONS(1617), 1, + ACTIONS(1633), 1, anon_sym_LPAREN, - ACTIONS(1629), 1, + ACTIONS(1645), 1, anon_sym_LBRACK, - ACTIONS(1631), 1, + ACTIONS(1647), 1, anon_sym_STAR_STAR, - ACTIONS(1541), 2, + ACTIONS(1557), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1619), 2, + ACTIONS(1635), 2, anon_sym_STAR, anon_sym_SLASH, - STATE(789), 2, + STATE(799), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1633), 3, + ACTIONS(1649), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1539), 22, + ACTIONS(1555), 22, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -57093,26 +58864,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [41088] = 8, + [41310] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1615), 1, + ACTIONS(1631), 1, anon_sym_DOT, - ACTIONS(1617), 1, + ACTIONS(1633), 1, anon_sym_LPAREN, - ACTIONS(1629), 1, + ACTIONS(1645), 1, anon_sym_LBRACK, - ACTIONS(1631), 1, + ACTIONS(1647), 1, anon_sym_STAR_STAR, - STATE(789), 2, + STATE(799), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1541), 4, + ACTIONS(1557), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1539), 25, + ACTIONS(1555), 25, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -57138,77 +58909,64 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [41141] = 13, + [41363] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1615), 1, - anon_sym_DOT, - ACTIONS(1617), 1, - anon_sym_LPAREN, - ACTIONS(1629), 1, - anon_sym_LBRACK, - ACTIONS(1631), 1, - anon_sym_STAR_STAR, - ACTIONS(1639), 1, - anon_sym_CARET, - ACTIONS(1541), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1619), 2, + ACTIONS(1075), 1, + anon_sym_COLON_EQ, + ACTIONS(1021), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, - ACTIONS(1621), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1627), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(789), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1633), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1539), 17, - anon_sym_RPAREN, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1016), 29, + sym__newline, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, anon_sym_COMMA, - anon_sym_as, + anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [41204] = 5, + sym__semicolon, + [41408] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(580), 1, - anon_sym_COLON_EQ, - ACTIONS(608), 1, - anon_sym_EQ, - ACTIONS(260), 4, + ACTIONS(1427), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(287), 29, + ACTIONS(1425), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, - anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -57230,150 +58988,95 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [41251] = 4, + sym__semicolon, + [41450] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(287), 3, + ACTIONS(1399), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1397), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, - anon_sym_LBRACK, - ACTIONS(260), 13, - anon_sym_STAR, + anon_sym_COMMA, anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_STAR_STAR, anon_sym_AT, - anon_sym_SLASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, anon_sym_PERCENT, anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(291), 19, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_in, - anon_sym_RBRACK, - anon_sym_EQ, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [41296] = 4, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + sym__semicolon, + [41492] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1017), 3, + ACTIONS(1553), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1551), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, - anon_sym_LBRACK, - ACTIONS(1022), 13, - anon_sym_STAR, + anon_sym_COMMA, anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_STAR_STAR, anon_sym_AT, - anon_sym_SLASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, anon_sym_PERCENT, anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(1028), 19, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_in, - anon_sym_RBRACK, - anon_sym_EQ, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [41341] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1615), 1, - anon_sym_DOT, - ACTIONS(1617), 1, - anon_sym_LPAREN, - ACTIONS(1625), 1, - anon_sym_PIPE, - ACTIONS(1629), 1, - anon_sym_LBRACK, - ACTIONS(1631), 1, - anon_sym_STAR_STAR, - ACTIONS(1637), 1, - anon_sym_AMP, - ACTIONS(1639), 1, - anon_sym_CARET, - ACTIONS(1555), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1619), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1621), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1627), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(789), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1633), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1553), 15, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_in, - anon_sym_not, - anon_sym_and, - anon_sym_or, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [41408] = 3, + sym__semicolon, + [41534] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1457), 5, + ACTIONS(1407), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1455), 29, + ACTIONS(1405), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -57403,16 +59106,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [41450] = 3, + [41576] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1136), 5, + ACTIONS(1415), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1131), 29, + ACTIONS(1413), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -57442,23 +59145,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [41492] = 3, + [41618] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1433), 5, + ACTIONS(1072), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1021), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1431), 29, - sym__newline, + ACTIONS(1016), 27, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, - anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -57480,24 +59185,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - sym__semicolon, - [41534] = 3, + [41662] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1437), 5, + ACTIONS(1149), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1152), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1435), 29, - sym__newline, + ACTIONS(1147), 27, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, - anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -57519,24 +59225,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - sym__semicolon, - [41576] = 3, + [41706] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1493), 5, + ACTIONS(1106), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1109), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1491), 29, - sym__newline, + ACTIONS(1104), 27, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, - anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -57558,17 +59265,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - sym__semicolon, - [41618] = 3, + [41750] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1433), 5, + ACTIONS(1152), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1431), 29, + ACTIONS(1147), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -57598,16 +59304,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [41660] = 3, + [41792] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1517), 5, + ACTIONS(1109), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1515), 29, + ACTIONS(1104), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -57637,16 +59343,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [41702] = 3, + [41834] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1525), 5, + ACTIONS(1451), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1523), 29, + ACTIONS(1449), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -57676,16 +59382,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [41744] = 3, + [41876] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1505), 5, + ACTIONS(1497), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1503), 29, + ACTIONS(1495), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -57715,23 +59421,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [41786] = 4, + [41918] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1647), 1, - anon_sym_COLON_EQ, - ACTIONS(1022), 5, + ACTIONS(1423), 5, anon_sym_STAR, - anon_sym_COLON, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1017), 28, + ACTIONS(1421), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, - anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, anon_sym_in, @@ -57755,25 +59459,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [41830] = 4, + sym__semicolon, + [41960] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1090), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1093), 4, + ACTIONS(1423), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1088), 27, + ACTIONS(1421), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, + anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -57795,16 +59498,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [41874] = 3, + sym__semicolon, + [42002] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(260), 5, + ACTIONS(1489), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(287), 29, + ACTIONS(1487), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -57834,16 +59538,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [41916] = 3, + [42044] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1453), 5, + ACTIONS(1493), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1451), 29, + ACTIONS(1491), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -57873,16 +59577,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [41958] = 3, + [42086] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1485), 5, + ACTIONS(260), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1483), 29, + ACTIONS(293), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -57912,16 +59616,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42000] = 3, + [42128] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1425), 5, + ACTIONS(1529), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1423), 29, + ACTIONS(1527), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -57951,25 +59655,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42042] = 4, + [42170] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1133), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1136), 4, + ACTIONS(1533), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1131), 27, + ACTIONS(1531), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, + anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -57991,16 +59693,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [42086] = 3, + sym__semicolon, + [42212] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1429), 5, + ACTIONS(1493), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1427), 29, + ACTIONS(1491), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58030,16 +59733,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42128] = 3, + [42254] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1501), 5, + ACTIONS(1537), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1499), 29, + ACTIONS(1535), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58069,16 +59772,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42170] = 3, + [42296] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1441), 5, + ACTIONS(1545), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1439), 29, + ACTIONS(1543), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58108,16 +59811,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42212] = 3, + [42338] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1489), 5, + ACTIONS(1549), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1487), 29, + ACTIONS(1547), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58147,16 +59850,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42254] = 3, + [42380] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1093), 5, + ACTIONS(1545), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1088), 29, + ACTIONS(1543), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58186,55 +59889,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42296] = 3, + [42422] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1449), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1447), 29, - sym__newline, - anon_sym_DOT, - anon_sym_from, - anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - sym__semicolon, - [42338] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1383), 5, + ACTIONS(1501), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1381), 29, + ACTIONS(1499), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58264,56 +59928,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42380] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(594), 1, - anon_sym_COLON_EQ, - ACTIONS(260), 5, - anon_sym_STAR, - anon_sym_COLON, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(287), 28, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [42424] = 3, + [42464] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1509), 5, + ACTIONS(1403), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1507), 29, + ACTIONS(1401), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58343,16 +59967,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42466] = 3, + [42506] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1387), 5, + ACTIONS(1447), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1385), 29, + ACTIONS(1445), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58382,16 +60006,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42508] = 3, + [42548] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1513), 5, + ACTIONS(1419), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1511), 29, + ACTIONS(1417), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58421,16 +60045,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42550] = 3, + [42590] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1529), 5, + ACTIONS(1443), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1527), 29, + ACTIONS(1441), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58460,16 +60084,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42592] = 3, + [42632] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1022), 5, + ACTIONS(1411), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1017), 29, + ACTIONS(1409), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58499,16 +60123,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42634] = 3, + [42674] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1449), 5, + ACTIONS(1431), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1447), 29, + ACTIONS(1429), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58538,16 +60162,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42676] = 3, + [42716] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1537), 5, + ACTIONS(1541), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1535), 29, + ACTIONS(1539), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58577,16 +60201,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42718] = 3, + [42758] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1533), 5, + ACTIONS(1399), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1531), 29, + ACTIONS(1397), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58616,21 +60240,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42760] = 3, + [42800] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1521), 5, + ACTIONS(606), 1, + anon_sym_COLON_EQ, + ACTIONS(260), 5, anon_sym_STAR, - anon_sym_EQ, + anon_sym_COLON, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1519), 29, - sym__newline, + ACTIONS(293), 28, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, anon_sym_in, @@ -58654,22 +60280,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - sym__semicolon, - [42802] = 3, + [42844] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1457), 5, + ACTIONS(1663), 1, + anon_sym_COLON_EQ, + ACTIONS(1021), 5, anon_sym_STAR, - anon_sym_EQ, + anon_sym_COLON, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1455), 29, - sym__newline, + ACTIONS(1016), 28, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, anon_sym_in, @@ -58693,17 +60320,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - sym__semicolon, - [42844] = 3, + [42888] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1441), 5, + ACTIONS(1435), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1439), 29, + ACTIONS(1433), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58733,56 +60359,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, sym__semicolon, - [42886] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1056), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1022), 4, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1017), 27, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, [42930] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1497), 5, + ACTIONS(1439), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1495), 29, + ACTIONS(1437), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58815,13 +60401,13 @@ static const uint16_t ts_small_parse_table[] = { [42972] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1445), 5, + ACTIONS(1021), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1443), 29, + ACTIONS(1016), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -58854,12 +60440,12 @@ static const uint16_t ts_small_parse_table[] = { [43014] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1441), 4, + ACTIONS(1549), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1439), 29, + ACTIONS(1547), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -58892,12 +60478,12 @@ static const uint16_t ts_small_parse_table[] = { [43055] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1449), 4, + ACTIONS(1447), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1447), 29, + ACTIONS(1445), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -58930,12 +60516,12 @@ static const uint16_t ts_small_parse_table[] = { [43096] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1509), 4, + ACTIONS(1419), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1507), 29, + ACTIONS(1417), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -58965,55 +60551,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43137] = 5, + [43137] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1024), 1, - anon_sym_COLON_EQ, - ACTIONS(1645), 1, - anon_sym_EQ, - ACTIONS(1022), 4, + ACTIONS(1399), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1017), 27, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [43182] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1453), 4, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1451), 29, + ACTIONS(1397), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59043,15 +60589,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43223] = 3, + [43178] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1513), 4, + ACTIONS(1435), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1511), 29, + ACTIONS(1433), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59081,15 +60627,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43264] = 3, + [43219] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1529), 4, + ACTIONS(1439), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1527), 29, + ACTIONS(1437), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59119,15 +60665,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43305] = 3, + [43260] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(260), 4, + ACTIONS(1399), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(287), 29, + ACTIONS(1397), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59157,15 +60703,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43346] = 3, + [43301] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(798), 4, + ACTIONS(1553), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(796), 29, + ACTIONS(1551), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59195,15 +60741,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43387] = 3, + [43342] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1537), 4, + ACTIONS(1407), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1535), 29, + ACTIONS(1405), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59233,15 +60779,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43428] = 3, + [43383] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1533), 4, + ACTIONS(1415), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1531), 29, + ACTIONS(1413), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59271,15 +60817,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43469] = 3, + [43424] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1489), 4, + ACTIONS(820), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1487), 29, + ACTIONS(818), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59309,55 +60855,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43510] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(570), 1, - anon_sym_COLON_EQ, - ACTIONS(608), 1, - anon_sym_EQ, - ACTIONS(260), 4, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(287), 27, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [43555] = 3, + [43465] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1022), 4, + ACTIONS(1423), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1017), 29, + ACTIONS(1421), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59387,15 +60893,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43596] = 3, + [43506] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1497), 4, + ACTIONS(1423), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1495), 29, + ACTIONS(1421), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59425,15 +60931,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43637] = 3, + [43547] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1521), 4, + ACTIONS(1489), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1519), 29, + ACTIONS(1487), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59463,15 +60969,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43678] = 3, + [43588] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1441), 4, + ACTIONS(1493), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1439), 29, + ACTIONS(1491), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59501,15 +61007,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43719] = 3, + [43629] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1457), 4, + ACTIONS(1529), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1455), 29, + ACTIONS(1527), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59539,15 +61045,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43760] = 3, + [43670] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1383), 4, + ACTIONS(1533), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1381), 29, + ACTIONS(1531), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59577,15 +61083,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43801] = 3, + [43711] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1445), 4, + ACTIONS(1493), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1443), 29, + ACTIONS(1491), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59615,15 +61121,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43842] = 3, + [43752] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1387), 4, + ACTIONS(1545), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1385), 29, + ACTIONS(1543), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59653,15 +61159,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43883] = 3, + [43793] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1505), 4, + ACTIONS(1451), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1503), 29, + ACTIONS(1449), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59691,23 +61197,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43924] = 3, + [43834] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1525), 4, + ACTIONS(578), 1, + anon_sym_COLON_EQ, + ACTIONS(620), 1, + anon_sym_EQ, + ACTIONS(260), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1523), 29, + ACTIONS(293), 27, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -59729,23 +61237,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43965] = 3, + [43879] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1517), 4, + ACTIONS(1023), 1, + anon_sym_COLON_EQ, + ACTIONS(1661), 1, + anon_sym_EQ, + ACTIONS(1021), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1515), 29, + ACTIONS(1016), 27, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -59767,15 +61277,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44006] = 3, + [43924] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1433), 4, + ACTIONS(1021), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1431), 29, + ACTIONS(1016), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59805,15 +61315,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44047] = 3, + [43965] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1449), 4, + ACTIONS(260), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1447), 29, + ACTIONS(293), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59843,15 +61353,91 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44088] = 3, + [44006] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1485), 4, + ACTIONS(1537), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1483), 29, + ACTIONS(1535), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [44047] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1497), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1495), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [44088] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1501), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1499), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59884,12 +61470,12 @@ static const uint16_t ts_small_parse_table[] = { [44129] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1493), 4, + ACTIONS(1403), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1491), 29, + ACTIONS(1401), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59922,12 +61508,12 @@ static const uint16_t ts_small_parse_table[] = { [44170] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1437), 4, + ACTIONS(1443), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1435), 29, + ACTIONS(1441), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59960,12 +61546,12 @@ static const uint16_t ts_small_parse_table[] = { [44211] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1433), 4, + ACTIONS(1411), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1431), 29, + ACTIONS(1409), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59998,12 +61584,12 @@ static const uint16_t ts_small_parse_table[] = { [44252] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1425), 4, + ACTIONS(1431), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1423), 29, + ACTIONS(1429), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60036,12 +61622,12 @@ static const uint16_t ts_small_parse_table[] = { [44293] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1429), 4, + ACTIONS(1541), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1427), 29, + ACTIONS(1539), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60074,12 +61660,12 @@ static const uint16_t ts_small_parse_table[] = { [44334] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1501), 4, + ACTIONS(824), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1499), 29, + ACTIONS(822), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60112,12 +61698,12 @@ static const uint16_t ts_small_parse_table[] = { [44375] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(808), 4, + ACTIONS(1427), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(806), 29, + ACTIONS(1425), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60150,12 +61736,12 @@ static const uint16_t ts_small_parse_table[] = { [44416] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1457), 4, + ACTIONS(1545), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1455), 29, + ACTIONS(1543), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60188,49 +61774,49 @@ static const uint16_t ts_small_parse_table[] = { [44457] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1653), 1, + ACTIONS(1669), 1, anon_sym_STAR, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1168), 2, - sym__match_pattern, - sym_match_as_pattern, - STATE(1170), 2, + STATE(1250), 2, sym__match_patterns, sym_open_sequence_match_pattern, - STATE(1299), 2, + STATE(1254), 2, + sym__match_pattern, + sym_match_as_pattern, + STATE(1317), 2, sym__match_maybe_star_pattern, sym_match_star_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(936), 8, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60242,49 +61828,49 @@ static const uint16_t ts_small_parse_table[] = { [44531] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1653), 1, + ACTIONS(1669), 1, anon_sym_STAR, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1669), 1, - anon_sym_if, - ACTIONS(1671), 1, - anon_sym_COLON, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - ACTIONS(1667), 3, - sym_true, - sym_false, - sym_none, - STATE(1082), 4, + STATE(1254), 2, sym__match_pattern, sym_match_as_pattern, + STATE(1262), 2, + sym__match_patterns, + sym_open_sequence_match_pattern, + STATE(1317), 2, sym__match_maybe_star_pattern, sym_match_star_pattern, - STATE(936), 8, + ACTIONS(1683), 3, + sym_true, + sym_false, + sym_none, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60296,49 +61882,49 @@ static const uint16_t ts_small_parse_table[] = { [44605] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1653), 1, + ACTIONS(1669), 1, anon_sym_STAR, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - STATE(885), 1, + ACTIONS(1685), 1, + anon_sym_if, + ACTIONS(1687), 1, + anon_sym_COLON, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1168), 2, + ACTIONS(1683), 3, + sym_true, + sym_false, + sym_none, + STATE(1078), 4, sym__match_pattern, sym_match_as_pattern, - STATE(1191), 2, - sym__match_patterns, - sym_open_sequence_match_pattern, - STATE(1299), 2, sym__match_maybe_star_pattern, sym_match_star_pattern, - ACTIONS(1667), 3, - sym_true, - sym_false, - sym_none, - STATE(936), 8, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60350,49 +61936,49 @@ static const uint16_t ts_small_parse_table[] = { [44679] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1653), 1, + ACTIONS(1669), 1, anon_sym_STAR, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1673), 1, + ACTIONS(1689), 1, anon_sym_if, - ACTIONS(1675), 1, + ACTIONS(1691), 1, anon_sym_COLON, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(1082), 4, + STATE(1078), 4, sym__match_pattern, sym_match_as_pattern, sym__match_maybe_star_pattern, sym_match_star_pattern, - STATE(936), 8, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60401,50 +61987,51 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [44753] = 19, + [44753] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1653), 1, + ACTIONS(1669), 1, anon_sym_STAR, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1677), 1, - anon_sym_RBRACK, - STATE(885), 1, + ACTIONS(1693), 1, + anon_sym_RPAREN, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - ACTIONS(1667), 3, - sym_true, - sym_false, - sym_none, - STATE(1082), 4, + STATE(1309), 2, sym__match_pattern, sym_match_as_pattern, + STATE(1310), 2, sym__match_maybe_star_pattern, sym_match_star_pattern, - STATE(936), 8, + ACTIONS(1683), 3, + sym_true, + sym_false, + sym_none, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60453,51 +62040,50 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [44824] = 20, + [44826] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1653), 1, + ACTIONS(1669), 1, anon_sym_STAR, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1679), 1, - anon_sym_RPAREN, - STATE(885), 1, + ACTIONS(1693), 1, + anon_sym_RBRACK, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1309), 2, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(1351), 2, - sym__match_pattern, - sym_match_as_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(936), 8, + STATE(1201), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60509,47 +62095,47 @@ static const uint16_t ts_small_parse_table[] = { [44897] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1653), 1, + ACTIONS(1669), 1, anon_sym_STAR, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, - sym_float, ACTIONS(1681), 1, + sym_float, + ACTIONS(1695), 1, anon_sym_RPAREN, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(1082), 4, + STATE(1078), 4, sym__match_pattern, sym_match_as_pattern, sym__match_maybe_star_pattern, sym_match_star_pattern, - STATE(936), 8, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60561,47 +62147,47 @@ static const uint16_t ts_small_parse_table[] = { [44968] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1653), 1, + ACTIONS(1669), 1, anon_sym_STAR, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1679), 1, + ACTIONS(1695), 1, anon_sym_RBRACK, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(1182), 4, + STATE(1078), 4, sym__match_pattern, sym_match_as_pattern, sym__match_maybe_star_pattern, sym_match_star_pattern, - STATE(936), 8, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60613,47 +62199,47 @@ static const uint16_t ts_small_parse_table[] = { [45039] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1653), 1, + ACTIONS(1669), 1, anon_sym_STAR, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1677), 1, + ACTIONS(1697), 1, anon_sym_RPAREN, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(1082), 4, + STATE(1078), 4, sym__match_pattern, sym_match_as_pattern, sym__match_maybe_star_pattern, sym_match_star_pattern, - STATE(936), 8, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60665,47 +62251,47 @@ static const uint16_t ts_small_parse_table[] = { [45110] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1653), 1, + ACTIONS(1669), 1, anon_sym_STAR, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, - sym_float, ACTIONS(1681), 1, + sym_float, + ACTIONS(1697), 1, anon_sym_RBRACK, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(1082), 4, + STATE(1078), 4, sym__match_pattern, sym_match_as_pattern, sym__match_maybe_star_pattern, sym_match_star_pattern, - STATE(936), 8, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60717,47 +62303,47 @@ static const uint16_t ts_small_parse_table[] = { [45181] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1683), 1, + ACTIONS(1699), 1, sym_identifier, - ACTIONS(1685), 1, + ACTIONS(1701), 1, anon_sym_RPAREN, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1271), 1, + STATE(1166), 1, sym_match_keyword_pattern, - STATE(1318), 1, + STATE(1306), 1, sym_match_positional_pattern, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1333), 2, + STATE(1339), 2, sym__match_pattern, sym_match_as_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(936), 8, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60769,47 +62355,47 @@ static const uint16_t ts_small_parse_table[] = { [45253] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1683), 1, + ACTIONS(1699), 1, sym_identifier, - ACTIONS(1687), 1, + ACTIONS(1703), 1, anon_sym_RPAREN, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, STATE(1269), 1, - sym_match_keyword_pattern, - STATE(1318), 1, sym_match_positional_pattern, - STATE(1452), 1, + STATE(1270), 1, + sym_match_keyword_pattern, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1333), 2, + STATE(1339), 2, sym__match_pattern, sym_match_as_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(936), 8, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60818,50 +62404,48 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [45325] = 20, + [45325] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1651), 1, + ACTIONS(1665), 1, + sym_identifier, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1655), 1, + ACTIONS(1669), 1, + anon_sym_STAR, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1683), 1, - sym_identifier, - ACTIONS(1689), 1, - anon_sym_RPAREN, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1158), 1, - sym_match_keyword_pattern, - STATE(1159), 1, - sym_match_positional_pattern, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1333), 2, - sym__match_pattern, - sym_match_as_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(936), 8, + STATE(1078), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60870,48 +62454,50 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [45397] = 18, + [45393] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, - sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1653), 1, - anon_sym_STAR, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - STATE(885), 1, + ACTIONS(1699), 1, + sym_identifier, + ACTIONS(1705), 1, + anon_sym_RPAREN, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1162), 1, + sym_match_keyword_pattern, + STATE(1306), 1, + sym_match_positional_pattern, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - ACTIONS(1667), 3, + STATE(1339), 2, + sym__match_pattern, + sym_match_as_pattern, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(1082), 4, - sym__match_pattern, - sym_match_as_pattern, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(936), 8, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60923,43 +62509,43 @@ static const uint16_t ts_small_parse_table[] = { [45465] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1318), 1, + STATE(1306), 1, sym_match_positional_pattern, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1333), 2, + STATE(1339), 2, sym__match_pattern, sym_match_as_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(936), 8, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -60971,41 +62557,41 @@ static const uint16_t ts_small_parse_table[] = { [45531] = 17, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1320), 2, + STATE(1308), 2, sym__match_pattern, sym_match_as_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(936), 8, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -61017,41 +62603,41 @@ static const uint16_t ts_small_parse_table[] = { [45594] = 17, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1657), 1, + ACTIONS(1673), 1, sym_match_wildcard_pattern, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - STATE(989), 2, + STATE(972), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1350), 2, + STATE(1344), 2, sym__match_pattern, sym_match_as_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(936), 8, + STATE(968), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -61063,35 +62649,35 @@ static const uint16_t ts_small_parse_table[] = { [45657] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1691), 1, + ACTIONS(1707), 1, sym_match_wildcard_pattern, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(916), 8, + STATE(929), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -61103,35 +62689,35 @@ static const uint16_t ts_small_parse_table[] = { [45712] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, + ACTIONS(618), 1, sym__string_start, - ACTIONS(1649), 1, + ACTIONS(1665), 1, sym_identifier, - ACTIONS(1651), 1, + ACTIONS(1667), 1, anon_sym_LPAREN, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1659), 1, + ACTIONS(1675), 1, anon_sym_LBRACK, - ACTIONS(1661), 1, + ACTIONS(1677), 1, anon_sym_LBRACE, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1693), 1, + ACTIONS(1709), 1, sym_match_wildcard_pattern, - STATE(885), 1, + STATE(886), 1, sym_string, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1452), 1, + STATE(1386), 1, sym_pattern_class_name, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - STATE(933), 8, + STATE(915), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -61143,25 +62729,25 @@ static const uint16_t ts_small_parse_table[] = { [45767] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1697), 1, - anon_sym_as, - ACTIONS(1702), 1, + ACTIONS(1477), 1, anon_sym_not, - ACTIONS(1708), 1, + ACTIONS(1485), 1, anon_sym_is, - STATE(828), 1, + ACTIONS(1713), 1, + anon_sym_as, + STATE(831), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1705), 2, + ACTIONS(1483), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1699), 6, + ACTIONS(1465), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1695), 10, + ACTIONS(1711), 10, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -61175,25 +62761,25 @@ static const uint16_t ts_small_parse_table[] = { [45807] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1473), 1, + ACTIONS(1720), 1, + anon_sym_EQ, + ACTIONS(1722), 1, anon_sym_not, - ACTIONS(1481), 1, + ACTIONS(1728), 1, anon_sym_is, - ACTIONS(1713), 1, - anon_sym_EQ, - STATE(831), 1, + STATE(829), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1479), 2, + ACTIONS(1725), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1463), 6, + ACTIONS(1717), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1711), 10, + ACTIONS(1715), 10, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -61207,18 +62793,18 @@ static const uint16_t ts_small_parse_table[] = { [45847] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1413), 1, + ACTIONS(1517), 1, anon_sym_not, - ACTIONS(1421), 1, + ACTIONS(1525), 1, anon_sym_is, ACTIONS(1713), 1, - anon_sym_as, - STATE(828), 1, + anon_sym_EQ, + STATE(829), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1419), 2, + ACTIONS(1523), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1401), 6, + ACTIONS(1507), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, @@ -61230,52 +62816,52 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, anon_sym_if, anon_sym_COLON, - anon_sym_async, - anon_sym_for, + anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_and, anon_sym_or, + sym_type_conversion, [45887] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1697), 1, - anon_sym_EQ, - ACTIONS(1718), 1, + ACTIONS(1720), 1, + anon_sym_as, + ACTIONS(1734), 1, anon_sym_not, - ACTIONS(1724), 1, + ACTIONS(1740), 1, anon_sym_is, STATE(831), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1721), 2, + ACTIONS(1737), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1715), 6, + ACTIONS(1731), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1695), 10, + ACTIONS(1715), 10, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, - anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_and, anon_sym_or, - sym_type_conversion, [45927] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1729), 1, + ACTIONS(1745), 1, anon_sym_COMMA, STATE(832), 1, aux_sym__patterns_repeat1, - ACTIONS(1727), 18, + ACTIONS(1743), 18, anon_sym_RPAREN, anon_sym_COLON, anon_sym_in, @@ -61294,39 +62880,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [45957] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1605), 1, - anon_sym_not, - ACTIONS(1613), 1, - anon_sym_is, - ACTIONS(1713), 1, - anon_sym_EQ, - STATE(839), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1611), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1593), 6, - anon_sym_in, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - ACTIONS(1711), 7, - sym__newline, - anon_sym_from, - anon_sym_COMMA, - anon_sym_if, - anon_sym_and, - anon_sym_or, - sym__semicolon, - [45994] = 2, + [45957] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1732), 19, + ACTIONS(1079), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -61346,35 +62903,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [46019] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1022), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1734), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - ACTIONS(1017), 14, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - [46048] = 2, + [45982] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1736), 19, + ACTIONS(1748), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -61394,33 +62926,39 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [46073] = 2, + [46007] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1063), 19, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_in, - anon_sym_RBRACK, + ACTIONS(1720), 1, anon_sym_EQ, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [46098] = 2, + ACTIONS(1753), 1, + anon_sym_not, + ACTIONS(1759), 1, + anon_sym_is, + STATE(835), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1756), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1750), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1715), 7, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_if, + anon_sym_and, + anon_sym_or, + sym__semicolon, + [46044] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1738), 19, + ACTIONS(1762), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -61440,28 +62978,28 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [46123] = 8, + [46069] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1697), 1, - anon_sym_EQ, - ACTIONS(1743), 1, + ACTIONS(1618), 1, anon_sym_not, - ACTIONS(1749), 1, + ACTIONS(1626), 1, anon_sym_is, - STATE(839), 1, + ACTIONS(1713), 1, + anon_sym_EQ, + STATE(835), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1746), 2, + ACTIONS(1624), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1740), 6, + ACTIONS(1606), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1695), 7, + ACTIONS(1711), 7, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -61469,17 +63007,42 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_and, anon_sym_or, sym__semicolon, - [46160] = 4, + [46106] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(260), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(804), 3, + ACTIONS(826), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(293), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [46135] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1021), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1764), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, - ACTIONS(287), 14, + ACTIONS(1016), 14, anon_sym_DOT, anon_sym_LPAREN, anon_sym_GT_GT, @@ -61494,26 +63057,49 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, + [46164] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1766), 19, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, [46189] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1635), 1, + ACTIONS(1771), 1, anon_sym_not, - ACTIONS(1643), 1, + ACTIONS(1777), 1, anon_sym_is, - STATE(844), 1, + STATE(841), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1641), 2, + ACTIONS(1774), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1623), 6, + ACTIONS(1768), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1711), 7, + ACTIONS(1715), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -61524,11 +63110,11 @@ static const uint16_t ts_small_parse_table[] = { [46223] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1752), 1, + ACTIONS(1780), 1, anon_sym_COMMA, STATE(832), 1, aux_sym__patterns_repeat1, - ACTIONS(1754), 16, + ACTIONS(1782), 16, anon_sym_COLON, anon_sym_in, anon_sym_EQ, @@ -61545,59 +63131,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [46251] = 13, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1389), 1, - anon_sym_DOT, - ACTIONS(1391), 1, - anon_sym_LPAREN, - ACTIONS(1407), 1, - anon_sym_LBRACK, - ACTIONS(1465), 1, - anon_sym_PIPE, - ACTIONS(1469), 1, - anon_sym_STAR_STAR, - ACTIONS(1475), 1, - anon_sym_AMP, - ACTIONS(1477), 1, - anon_sym_CARET, - ACTIONS(1459), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1461), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1467), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(601), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1471), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - [46297] = 7, + [46251] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1759), 1, + ACTIONS(1651), 1, anon_sym_not, - ACTIONS(1765), 1, + ACTIONS(1659), 1, anon_sym_is, - STATE(844), 1, + STATE(841), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1762), 2, + ACTIONS(1657), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1756), 6, + ACTIONS(1639), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1695), 7, + ACTIONS(1711), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -61605,31 +63158,64 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COLON, anon_sym_and, anon_sym_or, + [46285] = 13, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1453), 1, + anon_sym_DOT, + ACTIONS(1455), 1, + anon_sym_LPAREN, + ACTIONS(1471), 1, + anon_sym_LBRACK, + ACTIONS(1509), 1, + anon_sym_PIPE, + ACTIONS(1513), 1, + anon_sym_STAR_STAR, + ACTIONS(1519), 1, + anon_sym_AMP, + ACTIONS(1521), 1, + anon_sym_CARET, + ACTIONS(1503), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1505), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1511), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(593), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1515), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, [46331] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1768), 1, + ACTIONS(1784), 1, sym_identifier, - ACTIONS(1770), 1, + ACTIONS(1786), 1, anon_sym_LPAREN, - ACTIONS(1772), 1, + ACTIONS(1788), 1, anon_sym_STAR, - ACTIONS(1774), 1, + ACTIONS(1790), 1, anon_sym_COLON, - ACTIONS(1776), 1, + ACTIONS(1792), 1, anon_sym_STAR_STAR, - ACTIONS(1778), 1, + ACTIONS(1794), 1, anon_sym_SLASH, - STATE(1274), 1, + STATE(1195), 1, sym_parameter, - STATE(1439), 1, + STATE(1436), 1, sym_lambda_parameters, - STATE(1458), 1, + STATE(1476), 1, sym__parameters, - STATE(1292), 2, + STATE(1295), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1273), 6, + STATE(1204), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, @@ -61639,400 +63225,400 @@ static const uint16_t ts_small_parse_table[] = { [46374] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1768), 1, + ACTIONS(1784), 1, sym_identifier, - ACTIONS(1770), 1, + ACTIONS(1786), 1, anon_sym_LPAREN, - ACTIONS(1772), 1, + ACTIONS(1788), 1, anon_sym_STAR, - ACTIONS(1776), 1, + ACTIONS(1792), 1, anon_sym_STAR_STAR, - ACTIONS(1778), 1, + ACTIONS(1794), 1, anon_sym_SLASH, - ACTIONS(1780), 1, + ACTIONS(1796), 1, anon_sym_COLON, - STATE(1274), 1, + STATE(1195), 1, sym_parameter, - STATE(1394), 1, + STATE(1370), 1, sym_lambda_parameters, - STATE(1458), 1, + STATE(1476), 1, sym__parameters, - STATE(1292), 2, + STATE(1295), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1273), 6, + STATE(1204), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [46417] = 12, + [46417] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1798), 1, + anon_sym_COMMA, + ACTIONS(1800), 1, + anon_sym_COLON, + ACTIONS(1802), 1, + anon_sym_EQ, + STATE(842), 1, + aux_sym__patterns_repeat1, + ACTIONS(1804), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [46448] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1768), 1, + ACTIONS(1784), 1, sym_identifier, - ACTIONS(1770), 1, + ACTIONS(1786), 1, anon_sym_LPAREN, - ACTIONS(1772), 1, + ACTIONS(1788), 1, anon_sym_STAR, - ACTIONS(1776), 1, + ACTIONS(1792), 1, anon_sym_STAR_STAR, - ACTIONS(1778), 1, + ACTIONS(1794), 1, anon_sym_SLASH, - ACTIONS(1782), 1, + ACTIONS(1806), 1, anon_sym_COLON, - STATE(1274), 1, + STATE(1195), 1, sym_parameter, - STATE(1364), 1, + STATE(1393), 1, sym_lambda_parameters, - STATE(1458), 1, + STATE(1476), 1, sym__parameters, - STATE(1292), 2, + STATE(1295), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1273), 6, + STATE(1204), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [46460] = 12, + [46491] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1768), 1, + ACTIONS(1784), 1, sym_identifier, - ACTIONS(1770), 1, + ACTIONS(1786), 1, anon_sym_LPAREN, - ACTIONS(1772), 1, + ACTIONS(1788), 1, anon_sym_STAR, - ACTIONS(1776), 1, + ACTIONS(1792), 1, anon_sym_STAR_STAR, - ACTIONS(1778), 1, + ACTIONS(1794), 1, anon_sym_SLASH, - ACTIONS(1784), 1, + ACTIONS(1808), 1, anon_sym_COLON, - STATE(1274), 1, + STATE(1195), 1, sym_parameter, - STATE(1402), 1, + STATE(1356), 1, sym_lambda_parameters, - STATE(1458), 1, + STATE(1476), 1, sym__parameters, - STATE(1292), 2, + STATE(1295), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1273), 6, + STATE(1204), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [46503] = 12, + [46534] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1768), 1, + ACTIONS(1784), 1, sym_identifier, - ACTIONS(1770), 1, + ACTIONS(1786), 1, anon_sym_LPAREN, - ACTIONS(1772), 1, + ACTIONS(1788), 1, anon_sym_STAR, - ACTIONS(1776), 1, + ACTIONS(1792), 1, anon_sym_STAR_STAR, - ACTIONS(1778), 1, + ACTIONS(1794), 1, anon_sym_SLASH, - ACTIONS(1786), 1, + ACTIONS(1810), 1, anon_sym_COLON, - STATE(1274), 1, + STATE(1195), 1, sym_parameter, - STATE(1457), 1, + STATE(1467), 1, sym_lambda_parameters, - STATE(1458), 1, + STATE(1476), 1, sym__parameters, - STATE(1292), 2, + STATE(1295), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1273), 6, + STATE(1204), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [46546] = 6, + [46577] = 11, ACTIONS(3), 1, sym_comment, + ACTIONS(1786), 1, + anon_sym_LPAREN, ACTIONS(1788), 1, - anon_sym_COMMA, - ACTIONS(1790), 1, - anon_sym_COLON, + anon_sym_STAR, ACTIONS(1792), 1, - anon_sym_EQ, - STATE(842), 1, - aux_sym__patterns_repeat1, - ACTIONS(1794), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [46577] = 14, + anon_sym_STAR_STAR, + ACTIONS(1794), 1, + anon_sym_SLASH, + ACTIONS(1812), 1, + sym_identifier, + ACTIONS(1814), 1, + anon_sym_RPAREN, + STATE(1248), 1, + sym_parameter, + STATE(1377), 1, + sym__parameters, + STATE(1255), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(1204), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [46617] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1796), 1, + ACTIONS(1816), 1, sym_identifier, - ACTIONS(1798), 1, + ACTIONS(1818), 1, anon_sym_RBRACE, - ACTIONS(1800), 1, + ACTIONS(1820), 1, anon_sym_STAR_STAR, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1134), 1, + STATE(1101), 1, sym_string, - STATE(1331), 1, + STATE(1287), 1, sym_match_double_star_pattern, - STATE(1332), 1, + STATE(1336), 1, sym_match_key_value_pattern, - STATE(1358), 2, + STATE(1477), 2, sym_match_literal_pattern, sym_match_value_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - [46623] = 14, + [46663] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1796), 1, + ACTIONS(1816), 1, sym_identifier, - ACTIONS(1800), 1, + ACTIONS(1820), 1, anon_sym_STAR_STAR, - ACTIONS(1802), 1, + ACTIONS(1822), 1, anon_sym_RBRACE, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1134), 1, + STATE(1101), 1, sym_string, - STATE(1173), 1, + STATE(1232), 1, sym_match_key_value_pattern, - STATE(1345), 1, + STATE(1323), 1, sym_match_double_star_pattern, - STATE(1358), 2, + STATE(1477), 2, sym_match_literal_pattern, sym_match_value_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - [46669] = 14, + [46709] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1796), 1, + ACTIONS(1816), 1, sym_identifier, - ACTIONS(1800), 1, + ACTIONS(1820), 1, anon_sym_STAR_STAR, - ACTIONS(1804), 1, + ACTIONS(1824), 1, anon_sym_RBRACE, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1134), 1, + STATE(1101), 1, sym_string, - STATE(1284), 1, - sym_match_double_star_pattern, - STATE(1332), 1, + STATE(1336), 1, sym_match_key_value_pattern, - STATE(1358), 2, + STATE(1351), 1, + sym_match_double_star_pattern, + STATE(1477), 2, sym_match_literal_pattern, sym_match_value_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, - [46715] = 11, + [46755] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1800), 1, + anon_sym_COLON, + ACTIONS(1802), 1, + anon_sym_EQ, + ACTIONS(1804), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [46780] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1770), 1, + ACTIONS(1784), 1, + sym_identifier, + ACTIONS(1786), 1, anon_sym_LPAREN, - ACTIONS(1772), 1, + ACTIONS(1788), 1, anon_sym_STAR, - ACTIONS(1776), 1, + ACTIONS(1792), 1, anon_sym_STAR_STAR, - ACTIONS(1778), 1, + ACTIONS(1794), 1, anon_sym_SLASH, - ACTIONS(1806), 1, - sym_identifier, - ACTIONS(1808), 1, - anon_sym_RPAREN, - STATE(1203), 1, + ACTIONS(1826), 1, + anon_sym_COLON, + STATE(1192), 1, sym_parameter, - STATE(1407), 1, - sym__parameters, - STATE(1184), 2, + STATE(1295), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1273), 6, + STATE(1204), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [46755] = 10, + [46817] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1768), 1, - sym_identifier, - ACTIONS(1770), 1, + ACTIONS(1786), 1, anon_sym_LPAREN, - ACTIONS(1772), 1, + ACTIONS(1788), 1, anon_sym_STAR, - ACTIONS(1776), 1, + ACTIONS(1792), 1, anon_sym_STAR_STAR, - ACTIONS(1778), 1, + ACTIONS(1794), 1, anon_sym_SLASH, - ACTIONS(1810), 1, - anon_sym_COLON, - STATE(1261), 1, + ACTIONS(1812), 1, + sym_identifier, + ACTIONS(1826), 1, + anon_sym_RPAREN, + STATE(1192), 1, sym_parameter, - STATE(1292), 2, + STATE(1255), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1273), 6, + STATE(1204), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [46792] = 10, + [46854] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1770), 1, + ACTIONS(1784), 1, + sym_identifier, + ACTIONS(1786), 1, anon_sym_LPAREN, - ACTIONS(1772), 1, + ACTIONS(1788), 1, anon_sym_STAR, - ACTIONS(1776), 1, + ACTIONS(1792), 1, anon_sym_STAR_STAR, - ACTIONS(1778), 1, + ACTIONS(1794), 1, anon_sym_SLASH, - ACTIONS(1806), 1, - sym_identifier, - ACTIONS(1810), 1, - anon_sym_RPAREN, - STATE(1261), 1, + ACTIONS(1828), 1, + anon_sym_COLON, + STATE(1192), 1, sym_parameter, - STATE(1184), 2, + STATE(1295), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1273), 6, + STATE(1204), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [46829] = 4, + [46891] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1790), 1, - anon_sym_COLON, - ACTIONS(1792), 1, - anon_sym_EQ, - ACTIONS(1794), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [46854] = 10, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1768), 1, - sym_identifier, - ACTIONS(1770), 1, + ACTIONS(1786), 1, anon_sym_LPAREN, - ACTIONS(1772), 1, + ACTIONS(1788), 1, anon_sym_STAR, - ACTIONS(1776), 1, + ACTIONS(1792), 1, anon_sym_STAR_STAR, - ACTIONS(1778), 1, + ACTIONS(1794), 1, anon_sym_SLASH, ACTIONS(1812), 1, - anon_sym_COLON, - STATE(1261), 1, - sym_parameter, - STATE(1292), 2, - sym_list_splat_pattern, - sym_dictionary_splat_pattern, - STATE(1273), 6, - sym_tuple_pattern, - sym_default_parameter, - sym_typed_default_parameter, - sym_typed_parameter, - sym_positional_separator, - sym_keyword_separator, - [46891] = 10, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1770), 1, - anon_sym_LPAREN, - ACTIONS(1772), 1, - anon_sym_STAR, - ACTIONS(1776), 1, - anon_sym_STAR_STAR, - ACTIONS(1778), 1, - anon_sym_SLASH, - ACTIONS(1806), 1, sym_identifier, - ACTIONS(1812), 1, + ACTIONS(1828), 1, anon_sym_RPAREN, - STATE(1261), 1, + STATE(1192), 1, sym_parameter, - STATE(1184), 2, + STATE(1255), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1273), 6, + STATE(1204), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, @@ -62042,9 +63628,9 @@ static const uint16_t ts_small_parse_table[] = { [46928] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1816), 1, + ACTIONS(1832), 1, anon_sym_as, - ACTIONS(1814), 13, + ACTIONS(1830), 13, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -62061,34 +63647,59 @@ static const uint16_t ts_small_parse_table[] = { [46950] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(1770), 1, + ACTIONS(1784), 1, + sym_identifier, + ACTIONS(1786), 1, anon_sym_LPAREN, - ACTIONS(1772), 1, + ACTIONS(1788), 1, anon_sym_STAR, - ACTIONS(1776), 1, + ACTIONS(1792), 1, anon_sym_STAR_STAR, - ACTIONS(1778), 1, + ACTIONS(1794), 1, anon_sym_SLASH, - ACTIONS(1806), 1, + STATE(1192), 1, + sym_parameter, + STATE(1295), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(1204), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [46984] = 9, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1786), 1, + anon_sym_LPAREN, + ACTIONS(1788), 1, + anon_sym_STAR, + ACTIONS(1792), 1, + anon_sym_STAR_STAR, + ACTIONS(1794), 1, + anon_sym_SLASH, + ACTIONS(1812), 1, sym_identifier, - STATE(1261), 1, + STATE(1192), 1, sym_parameter, - STATE(1184), 2, + STATE(1255), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1273), 6, + STATE(1204), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [46984] = 3, + [47018] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1395), 1, + ACTIONS(1459), 1, anon_sym_as, - ACTIONS(1393), 13, + ACTIONS(1457), 13, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -62102,65 +63713,40 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_and, anon_sym_or, sym_type_conversion, - [47006] = 9, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1768), 1, - sym_identifier, - ACTIONS(1770), 1, - anon_sym_LPAREN, - ACTIONS(1772), 1, - anon_sym_STAR, - ACTIONS(1776), 1, - anon_sym_STAR_STAR, - ACTIONS(1778), 1, - anon_sym_SLASH, - STATE(1261), 1, - sym_parameter, - STATE(1292), 2, - sym_list_splat_pattern, - sym_dictionary_splat_pattern, - STATE(1273), 6, - sym_tuple_pattern, - sym_default_parameter, - sym_typed_default_parameter, - sym_typed_parameter, - sym_positional_separator, - sym_keyword_separator, [47040] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(299), 1, + ACTIONS(305), 1, sym__string_start, - ACTIONS(1655), 1, + ACTIONS(1671), 1, anon_sym_DASH, - ACTIONS(1663), 1, + ACTIONS(1679), 1, sym_integer, - ACTIONS(1665), 1, + ACTIONS(1681), 1, sym_float, - ACTIONS(1796), 1, + ACTIONS(1816), 1, sym_identifier, - STATE(930), 1, + STATE(942), 1, sym_concatenated_string, - STATE(1134), 1, + STATE(1101), 1, sym_string, - STATE(1332), 1, + STATE(1336), 1, sym_match_key_value_pattern, - STATE(1358), 2, + STATE(1477), 2, sym_match_literal_pattern, sym_match_value_pattern, - ACTIONS(1667), 3, + ACTIONS(1683), 3, sym_true, sym_false, sym_none, [47077] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1820), 1, + ACTIONS(1836), 1, anon_sym_DOT, STATE(865), 1, aux_sym_match_value_pattern_repeat1, - ACTIONS(1818), 10, + ACTIONS(1834), 10, anon_sym_import, anon_sym_LPAREN, anon_sym_RPAREN, @@ -62171,14 +63757,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [47099] = 4, + [47099] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1823), 9, + ACTIONS(1839), 10, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -62187,55 +63771,40 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_EQ, + anon_sym_or, sym_type_conversion, - [47120] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1829), 1, - anon_sym_DOT, - ACTIONS(1831), 1, - anon_sym_LPAREN, - STATE(865), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(1833), 8, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, - anon_sym_RBRACE, - [47143] = 6, + [47118] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1837), 1, - anon_sym_as, - ACTIONS(1839), 1, - anon_sym_if, - ACTIONS(1841), 1, - anon_sym_and, ACTIONS(1843), 1, - anon_sym_or, - ACTIONS(1835), 7, - anon_sym_RPAREN, anon_sym_COMMA, + ACTIONS(1845), 1, + anon_sym_if, + ACTIONS(1847), 1, anon_sym_COLON, + ACTIONS(1849), 1, anon_sym_async, + ACTIONS(1851), 1, anon_sym_for, - anon_sym_RBRACK, + ACTIONS(1853), 1, anon_sym_RBRACE, - [47168] = 12, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + STATE(916), 1, + sym_for_in_clause, + STATE(1061), 1, + aux_sym__collection_elements_repeat1, + STATE(1366), 1, + sym__comprehension_clauses, + [47155] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, - anon_sym_if, - ACTIONS(1841), 1, - anon_sym_and, ACTIONS(1843), 1, - anon_sym_or, - ACTIONS(1845), 1, anon_sym_COMMA, + ACTIONS(1845), 1, + anon_sym_if, ACTIONS(1847), 1, anon_sym_COLON, ACTIONS(1849), 1, @@ -62244,241 +63813,206 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, ACTIONS(1853), 1, anon_sym_RBRACE, - STATE(922), 1, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + STATE(916), 1, sym_for_in_clause, - STATE(1048), 1, + STATE(1061), 1, aux_sym__collection_elements_repeat1, - STATE(1360), 1, + STATE(1439), 1, sym__comprehension_clauses, - [47205] = 3, + [47192] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1855), 10, + ACTIONS(1859), 1, + anon_sym_DOT, + ACTIONS(1861), 1, + anon_sym_LPAREN, + STATE(865), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(1863), 8, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_if, anon_sym_COLON, - anon_sym_else, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_or, - sym_type_conversion, - [47224] = 6, + [47215] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, - anon_sym_if, ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1843), 1, + ACTIONS(1867), 1, + anon_sym_COMMA, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(1859), 1, - anon_sym_as, - ACTIONS(1857), 7, + STATE(936), 1, + aux_sym_expression_list_repeat1, + ACTIONS(1865), 6, anon_sym_RPAREN, - anon_sym_COMMA, anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [47249] = 5, + anon_sym_EQ, + sym_type_conversion, + [47242] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1843), 1, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(1863), 1, - anon_sym_as, - ACTIONS(1861), 8, + ACTIONS(1873), 9, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, - anon_sym_async, - anon_sym_for, + anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, - [47272] = 12, + anon_sym_EQ, + sym_type_conversion, + [47263] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, - anon_sym_if, ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1843), 1, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(1845), 1, + ACTIONS(1875), 8, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(1847), 1, anon_sym_COLON, - ACTIONS(1849), 1, - anon_sym_async, - ACTIONS(1851), 1, - anon_sym_for, - ACTIONS(1853), 1, + anon_sym_else, + anon_sym_RBRACK, anon_sym_RBRACE, - STATE(922), 1, - sym_for_in_clause, - STATE(1048), 1, - aux_sym__collection_elements_repeat1, - STATE(1382), 1, - sym__comprehension_clauses, - [47309] = 12, + anon_sym_EQ, + sym_type_conversion, + [47286] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, - anon_sym_if, ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1843), 1, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(1845), 1, + ACTIONS(1877), 9, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(1847), 1, + anon_sym_if, anon_sym_COLON, - ACTIONS(1849), 1, - anon_sym_async, - ACTIONS(1851), 1, - anon_sym_for, - ACTIONS(1853), 1, + anon_sym_else, + anon_sym_RBRACK, anon_sym_RBRACE, - STATE(922), 1, - sym_for_in_clause, - STATE(1048), 1, - aux_sym__collection_elements_repeat1, - STATE(1371), 1, - sym__comprehension_clauses, - [47346] = 12, + anon_sym_EQ, + sym_type_conversion, + [47307] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, - anon_sym_if, ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1843), 1, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(1849), 1, - anon_sym_async, - ACTIONS(1851), 1, - anon_sym_for, - ACTIONS(1865), 1, + ACTIONS(1839), 9, anon_sym_RPAREN, - ACTIONS(1867), 1, anon_sym_COMMA, - ACTIONS(1870), 1, - anon_sym_as, - STATE(922), 1, - sym_for_in_clause, - STATE(1048), 1, - aux_sym__collection_elements_repeat1, - STATE(1368), 1, - sym__comprehension_clauses, - [47383] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1839), 1, anon_sym_if, - ACTIONS(1841), 1, - anon_sym_and, - ACTIONS(1843), 1, - anon_sym_or, - ACTIONS(1874), 1, - anon_sym_as, - ACTIONS(1872), 7, - anon_sym_RPAREN, - anon_sym_COMMA, anon_sym_COLON, - anon_sym_async, - anon_sym_for, + anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, - [47408] = 7, + anon_sym_EQ, + sym_type_conversion, + [47328] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1855), 1, anon_sym_and, - ACTIONS(1827), 1, + ACTIONS(1857), 1, anon_sym_or, - ACTIONS(1878), 1, + ACTIONS(1879), 1, + anon_sym_as, + ACTIONS(1873), 8, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(1880), 1, anon_sym_if, - STATE(944), 1, - aux_sym_expression_list_repeat1, - ACTIONS(1876), 6, - anon_sym_RPAREN, anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - sym_type_conversion, - [47435] = 4, + [47351] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(1855), 9, + ACTIONS(1881), 8, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_if, anon_sym_COLON, anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_EQ, sym_type_conversion, - [47456] = 5, + [47374] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1845), 1, + anon_sym_if, + ACTIONS(1855), 1, anon_sym_and, - ACTIONS(1827), 1, + ACTIONS(1857), 1, anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(1857), 8, + ACTIONS(1883), 1, + anon_sym_as, + ACTIONS(1875), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, - anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - sym_type_conversion, - [47479] = 4, + [47399] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1855), 1, anon_sym_and, - ACTIONS(1827), 1, + ACTIONS(1857), 1, anon_sym_or, - ACTIONS(1861), 9, + ACTIONS(1885), 1, + anon_sym_as, + ACTIONS(1877), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, - anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - sym_type_conversion, - [47500] = 5, + [47422] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(1872), 8, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(1887), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -62487,16 +64021,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_EQ, sym_type_conversion, - [47523] = 5, + [47445] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1841), 1, + ACTIONS(1855), 1, anon_sym_and, - ACTIONS(1843), 1, - anon_sym_or, - ACTIONS(1882), 1, + ACTIONS(1889), 1, anon_sym_as, - ACTIONS(1823), 8, + ACTIONS(1839), 9, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -62505,14 +64037,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [47546] = 4, + anon_sym_or, + [47466] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1841), 1, + ACTIONS(1855), 1, anon_sym_and, - ACTIONS(1884), 1, + ACTIONS(1857), 1, + anon_sym_or, + ACTIONS(1889), 1, anon_sym_as, - ACTIONS(1855), 9, + ACTIONS(1839), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -62521,11 +64056,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_or, - [47567] = 2, + [47489] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1818), 11, + ACTIONS(1834), 11, anon_sym_import, anon_sym_DOT, anon_sym_LPAREN, @@ -62537,15 +64071,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [47584] = 4, + [47506] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(606), 1, - sym__string_start, - STATE(658), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1886), 8, + ACTIONS(1859), 1, + anon_sym_DOT, + ACTIONS(1891), 1, + anon_sym_LPAREN, + STATE(869), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(1893), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -62554,34 +64089,59 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [47605] = 5, + [47529] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1841), 1, + ACTIONS(1845), 1, + anon_sym_if, + ACTIONS(1849), 1, + anon_sym_async, + ACTIONS(1851), 1, + anon_sym_for, + ACTIONS(1855), 1, anon_sym_and, - ACTIONS(1843), 1, + ACTIONS(1857), 1, anon_sym_or, - ACTIONS(1884), 1, - anon_sym_as, - ACTIONS(1855), 8, + ACTIONS(1895), 1, anon_sym_RPAREN, + ACTIONS(1897), 1, anon_sym_COMMA, + ACTIONS(1900), 1, + anon_sym_as, + STATE(916), 1, + sym_for_in_clause, + STATE(1061), 1, + aux_sym__collection_elements_repeat1, + STATE(1362), 1, + sym__comprehension_clauses, + [47566] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1845), 1, anon_sym_if, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + ACTIONS(1902), 1, + anon_sym_as, + ACTIONS(1881), 7, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_COLON, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [47628] = 5, + [47591] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1829), 1, - anon_sym_DOT, - ACTIONS(1888), 1, - anon_sym_LPAREN, - STATE(867), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(1890), 8, + ACTIONS(618), 1, + sym__string_start, + STATE(643), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1904), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -62590,128 +64150,210 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [47651] = 5, + [47612] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1845), 1, + anon_sym_if, + ACTIONS(1855), 1, anon_sym_and, - ACTIONS(1827), 1, + ACTIONS(1857), 1, anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(1835), 8, + ACTIONS(1906), 1, + anon_sym_as, + ACTIONS(1887), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, - anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - sym_type_conversion, + [47637] = 12, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1843), 1, + anon_sym_COMMA, + ACTIONS(1845), 1, + anon_sym_if, + ACTIONS(1847), 1, + anon_sym_COLON, + ACTIONS(1849), 1, + anon_sym_async, + ACTIONS(1851), 1, + anon_sym_for, + ACTIONS(1853), 1, + anon_sym_RBRACE, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + STATE(916), 1, + sym_for_in_clause, + STATE(1061), 1, + aux_sym__collection_elements_repeat1, + STATE(1455), 1, + sym__comprehension_clauses, [47674] = 9, - ACTIONS(1892), 1, + ACTIONS(1908), 1, anon_sym_LBRACE2, - ACTIONS(1896), 1, + ACTIONS(1912), 1, sym__not_escape_sequence, - ACTIONS(1898), 1, + ACTIONS(1914), 1, sym_comment, - ACTIONS(1900), 1, + ACTIONS(1916), 1, sym__string_end, - STATE(908), 1, + STATE(912), 1, aux_sym_string_repeat1, - STATE(983), 1, + STATE(1009), 1, aux_sym_string_content_repeat1, - STATE(1015), 1, + STATE(1013), 1, sym_string_content, - STATE(1027), 1, + STATE(1020), 1, sym_interpolation, - ACTIONS(1894), 3, + ACTIONS(1910), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [47704] = 5, - ACTIONS(3), 1, + [47704] = 9, + ACTIONS(1908), 1, + anon_sym_LBRACE2, + ACTIONS(1912), 1, + sym__not_escape_sequence, + ACTIONS(1914), 1, sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(1902), 7, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_EQ, - sym_type_conversion, - [47726] = 9, - ACTIONS(1892), 1, + ACTIONS(1918), 1, + sym__string_end, + STATE(912), 1, + aux_sym_string_repeat1, + STATE(1009), 1, + aux_sym_string_content_repeat1, + STATE(1013), 1, + sym_string_content, + STATE(1020), 1, + sym_interpolation, + ACTIONS(1910), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [47734] = 9, + ACTIONS(1908), 1, anon_sym_LBRACE2, - ACTIONS(1896), 1, + ACTIONS(1912), 1, sym__not_escape_sequence, - ACTIONS(1898), 1, + ACTIONS(1914), 1, sym_comment, - ACTIONS(1904), 1, + ACTIONS(1920), 1, sym__string_end, - STATE(895), 1, + STATE(890), 1, aux_sym_string_repeat1, - STATE(983), 1, + STATE(1009), 1, + aux_sym_string_content_repeat1, + STATE(1013), 1, + sym_string_content, + STATE(1020), 1, + sym_interpolation, + ACTIONS(1910), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [47764] = 9, + ACTIONS(1908), 1, + anon_sym_LBRACE2, + ACTIONS(1912), 1, + sym__not_escape_sequence, + ACTIONS(1914), 1, + sym_comment, + ACTIONS(1922), 1, + sym__string_end, + STATE(889), 1, + aux_sym_string_repeat1, + STATE(1009), 1, aux_sym_string_content_repeat1, - STATE(1015), 1, + STATE(1013), 1, sym_string_content, - STATE(1027), 1, + STATE(1020), 1, sym_interpolation, - ACTIONS(1894), 3, + ACTIONS(1910), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [47756] = 3, + [47794] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1908), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(1906), 8, - anon_sym_RPAREN, + ACTIONS(1843), 1, anon_sym_COMMA, - anon_sym_as, + ACTIONS(1845), 1, anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, + ACTIONS(1849), 1, + anon_sym_async, + ACTIONS(1851), 1, + anon_sym_for, + ACTIONS(1853), 1, anon_sym_RBRACK, - anon_sym_RBRACE, - [47774] = 11, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + STATE(916), 1, + sym_for_in_clause, + STATE(1061), 1, + aux_sym__collection_elements_repeat1, + STATE(1374), 1, + sym__comprehension_clauses, + [47828] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, + ACTIONS(1843), 1, + anon_sym_COMMA, + ACTIONS(1845), 1, anon_sym_if, - ACTIONS(1841), 1, + ACTIONS(1849), 1, + anon_sym_async, + ACTIONS(1851), 1, + anon_sym_for, + ACTIONS(1855), 1, anon_sym_and, - ACTIONS(1843), 1, + ACTIONS(1857), 1, anon_sym_or, + ACTIONS(1924), 1, + anon_sym_RPAREN, + STATE(916), 1, + sym_for_in_clause, + STATE(1061), 1, + aux_sym__collection_elements_repeat1, + STATE(1407), 1, + sym__comprehension_clauses, + [47862] = 11, + ACTIONS(3), 1, + sym_comment, ACTIONS(1845), 1, - anon_sym_COMMA, + anon_sym_if, ACTIONS(1849), 1, anon_sym_async, ACTIONS(1851), 1, anon_sym_for, - ACTIONS(1853), 1, - anon_sym_RBRACK, - STATE(922), 1, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + ACTIONS(1926), 1, + anon_sym_RPAREN, + ACTIONS(1928), 1, + anon_sym_COMMA, + STATE(916), 1, sym_for_in_clause, - STATE(1048), 1, - aux_sym__collection_elements_repeat1, - STATE(1386), 1, + STATE(1170), 1, + aux_sym_argument_list_repeat1, + STATE(1407), 1, sym__comprehension_clauses, - [47808] = 3, + [47896] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1912), 2, + ACTIONS(1932), 2, anon_sym_DASH, anon_sym_PLUS, - ACTIONS(1910), 8, + ACTIONS(1930), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -62720,60 +64362,48 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [47826] = 9, - ACTIONS(1892), 1, - anon_sym_LBRACE2, - ACTIONS(1896), 1, - sym__not_escape_sequence, - ACTIONS(1898), 1, - sym_comment, - ACTIONS(1914), 1, - sym__string_end, - STATE(899), 1, - aux_sym_string_repeat1, - STATE(983), 1, - aux_sym_string_content_repeat1, - STATE(1015), 1, - sym_string_content, - STATE(1027), 1, - sym_interpolation, - ACTIONS(1894), 3, - sym__string_content, - sym__escape_interpolation, - sym_escape_sequence, - [47856] = 11, + [47914] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, + ACTIONS(1936), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(1934), 8, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [47932] = 5, + ACTIONS(3), 1, + sym_comment, ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1843), 1, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(1845), 1, - anon_sym_COMMA, - ACTIONS(1849), 1, - anon_sym_async, - ACTIONS(1851), 1, - anon_sym_for, - ACTIONS(1865), 1, + ACTIONS(1938), 7, anon_sym_RPAREN, - STATE(922), 1, - sym_for_in_clause, - STATE(1048), 1, - aux_sym__collection_elements_repeat1, - STATE(1368), 1, - sym__comprehension_clauses, - [47890] = 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [47954] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(1916), 7, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(1940), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -62781,83 +64411,62 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_EQ, sym_type_conversion, - [47912] = 11, + [47976] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, - anon_sym_if, - ACTIONS(1841), 1, - anon_sym_and, ACTIONS(1843), 1, - anon_sym_or, - ACTIONS(1845), 1, anon_sym_COMMA, + ACTIONS(1845), 1, + anon_sym_if, ACTIONS(1849), 1, anon_sym_async, ACTIONS(1851), 1, anon_sym_for, - ACTIONS(1853), 1, - anon_sym_RBRACK, - STATE(922), 1, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + ACTIONS(1942), 1, + anon_sym_RPAREN, + STATE(916), 1, sym_for_in_clause, - STATE(1048), 1, + STATE(1061), 1, aux_sym__collection_elements_repeat1, - STATE(1428), 1, + STATE(1448), 1, sym__comprehension_clauses, - [47946] = 9, - ACTIONS(1898), 1, - sym_comment, - ACTIONS(1918), 1, - anon_sym_LBRACE2, - ACTIONS(1924), 1, - sym__not_escape_sequence, - ACTIONS(1927), 1, - sym__string_end, - STATE(899), 1, - aux_sym_string_repeat1, - STATE(983), 1, - aux_sym_string_content_repeat1, - STATE(1015), 1, - sym_string_content, - STATE(1027), 1, - sym_interpolation, - ACTIONS(1921), 3, - sym__string_content, - sym__escape_interpolation, - sym_escape_sequence, - [47976] = 11, + [48010] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, + ACTIONS(1845), 1, anon_sym_if, - ACTIONS(1841), 1, - anon_sym_and, - ACTIONS(1843), 1, - anon_sym_or, ACTIONS(1849), 1, anon_sym_async, ACTIONS(1851), 1, anon_sym_for, - ACTIONS(1929), 1, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + ACTIONS(1944), 1, anon_sym_RPAREN, - ACTIONS(1931), 1, + ACTIONS(1946), 1, anon_sym_COMMA, - STATE(922), 1, + STATE(916), 1, sym_for_in_clause, - STATE(1250), 1, + STATE(1155), 1, aux_sym_argument_list_repeat1, - STATE(1427), 1, + STATE(1448), 1, sym__comprehension_clauses, - [48010] = 5, + [48044] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(1933), 7, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(1948), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -62865,169 +64474,125 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_EQ, sym_type_conversion, - [48032] = 9, - ACTIONS(1892), 1, + [48066] = 9, + ACTIONS(1908), 1, anon_sym_LBRACE2, - ACTIONS(1896), 1, + ACTIONS(1912), 1, sym__not_escape_sequence, - ACTIONS(1898), 1, + ACTIONS(1914), 1, sym_comment, - ACTIONS(1935), 1, + ACTIONS(1950), 1, sym__string_end, - STATE(906), 1, + STATE(904), 1, aux_sym_string_repeat1, - STATE(983), 1, + STATE(1009), 1, + aux_sym_string_content_repeat1, + STATE(1013), 1, + sym_string_content, + STATE(1020), 1, + sym_interpolation, + ACTIONS(1910), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [48096] = 9, + ACTIONS(1908), 1, + anon_sym_LBRACE2, + ACTIONS(1912), 1, + sym__not_escape_sequence, + ACTIONS(1914), 1, + sym_comment, + ACTIONS(1952), 1, + sym__string_end, + STATE(912), 1, + aux_sym_string_repeat1, + STATE(1009), 1, aux_sym_string_content_repeat1, - STATE(1015), 1, + STATE(1013), 1, sym_string_content, - STATE(1027), 1, + STATE(1020), 1, sym_interpolation, - ACTIONS(1894), 3, + ACTIONS(1910), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [48062] = 11, + [48126] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, - anon_sym_if, - ACTIONS(1841), 1, - anon_sym_and, ACTIONS(1843), 1, - anon_sym_or, - ACTIONS(1849), 1, - anon_sym_async, - ACTIONS(1851), 1, - anon_sym_for, - ACTIONS(1937), 1, - anon_sym_RPAREN, - ACTIONS(1939), 1, anon_sym_COMMA, - STATE(922), 1, - sym_for_in_clause, - STATE(1237), 1, - aux_sym_argument_list_repeat1, - STATE(1475), 1, - sym__comprehension_clauses, - [48096] = 11, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1839), 1, + ACTIONS(1845), 1, anon_sym_if, - ACTIONS(1841), 1, - anon_sym_and, - ACTIONS(1843), 1, - anon_sym_or, ACTIONS(1849), 1, anon_sym_async, ACTIONS(1851), 1, anon_sym_for, - ACTIONS(1941), 1, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + ACTIONS(1895), 1, anon_sym_RPAREN, - ACTIONS(1943), 1, - anon_sym_COMMA, - STATE(922), 1, + STATE(916), 1, sym_for_in_clause, - STATE(1253), 1, - aux_sym_argument_list_repeat1, - STATE(1368), 1, + STATE(1061), 1, + aux_sym__collection_elements_repeat1, + STATE(1362), 1, sym__comprehension_clauses, - [48130] = 11, + [48160] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, - anon_sym_if, - ACTIONS(1841), 1, - anon_sym_and, - ACTIONS(1843), 1, - anon_sym_or, ACTIONS(1845), 1, - anon_sym_COMMA, + anon_sym_if, ACTIONS(1849), 1, anon_sym_async, ACTIONS(1851), 1, anon_sym_for, - ACTIONS(1945), 1, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + ACTIONS(1954), 1, anon_sym_RPAREN, - STATE(922), 1, + ACTIONS(1956), 1, + anon_sym_COMMA, + STATE(916), 1, sym_for_in_clause, - STATE(1048), 1, - aux_sym__collection_elements_repeat1, - STATE(1475), 1, + STATE(1240), 1, + aux_sym_argument_list_repeat1, + STATE(1362), 1, sym__comprehension_clauses, - [48164] = 9, - ACTIONS(1892), 1, - anon_sym_LBRACE2, - ACTIONS(1896), 1, - sym__not_escape_sequence, - ACTIONS(1898), 1, - sym_comment, - ACTIONS(1947), 1, - sym__string_end, - STATE(899), 1, - aux_sym_string_repeat1, - STATE(983), 1, - aux_sym_string_content_repeat1, - STATE(1015), 1, - sym_string_content, - STATE(1027), 1, - sym_interpolation, - ACTIONS(1894), 3, - sym__string_content, - sym__escape_interpolation, - sym_escape_sequence, [48194] = 9, - ACTIONS(1892), 1, - anon_sym_LBRACE2, - ACTIONS(1896), 1, - sym__not_escape_sequence, - ACTIONS(1898), 1, - sym_comment, - ACTIONS(1949), 1, - sym__string_end, - STATE(910), 1, - aux_sym_string_repeat1, - STATE(983), 1, - aux_sym_string_content_repeat1, - STATE(1015), 1, - sym_string_content, - STATE(1027), 1, - sym_interpolation, - ACTIONS(1894), 3, - sym__string_content, - sym__escape_interpolation, - sym_escape_sequence, - [48224] = 9, - ACTIONS(1892), 1, + ACTIONS(1908), 1, anon_sym_LBRACE2, - ACTIONS(1896), 1, + ACTIONS(1912), 1, sym__not_escape_sequence, - ACTIONS(1898), 1, + ACTIONS(1914), 1, sym_comment, - ACTIONS(1951), 1, + ACTIONS(1958), 1, sym__string_end, - STATE(899), 1, + STATE(909), 1, aux_sym_string_repeat1, - STATE(983), 1, + STATE(1009), 1, aux_sym_string_content_repeat1, - STATE(1015), 1, + STATE(1013), 1, sym_string_content, - STATE(1027), 1, + STATE(1020), 1, sym_interpolation, - ACTIONS(1894), 3, + ACTIONS(1910), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [48254] = 5, + [48224] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(1953), 7, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(1960), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -63035,81 +64600,102 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_EQ, sym_type_conversion, - [48276] = 9, - ACTIONS(1892), 1, + [48246] = 9, + ACTIONS(1908), 1, anon_sym_LBRACE2, - ACTIONS(1896), 1, + ACTIONS(1912), 1, sym__not_escape_sequence, - ACTIONS(1898), 1, + ACTIONS(1914), 1, sym_comment, - ACTIONS(1955), 1, + ACTIONS(1962), 1, sym__string_end, - STATE(899), 1, + STATE(912), 1, aux_sym_string_repeat1, - STATE(983), 1, + STATE(1009), 1, aux_sym_string_content_repeat1, - STATE(1015), 1, + STATE(1013), 1, sym_string_content, - STATE(1027), 1, + STATE(1020), 1, sym_interpolation, - ACTIONS(1894), 3, + ACTIONS(1910), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [48306] = 11, + [48276] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, - anon_sym_if, - ACTIONS(1841), 1, - anon_sym_and, ACTIONS(1843), 1, - anon_sym_or, - ACTIONS(1845), 1, anon_sym_COMMA, + ACTIONS(1845), 1, + anon_sym_if, ACTIONS(1849), 1, anon_sym_async, ACTIONS(1851), 1, anon_sym_for, ACTIONS(1853), 1, anon_sym_RBRACK, - STATE(922), 1, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + STATE(916), 1, sym_for_in_clause, - STATE(1048), 1, + STATE(1061), 1, aux_sym__collection_elements_repeat1, - STATE(1369), 1, + STATE(1445), 1, sym__comprehension_clauses, - [48340] = 11, + [48310] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, - anon_sym_if, - ACTIONS(1841), 1, - anon_sym_and, ACTIONS(1843), 1, - anon_sym_or, - ACTIONS(1845), 1, anon_sym_COMMA, + ACTIONS(1845), 1, + anon_sym_if, ACTIONS(1849), 1, anon_sym_async, ACTIONS(1851), 1, anon_sym_for, - ACTIONS(1957), 1, - anon_sym_RPAREN, - STATE(922), 1, + ACTIONS(1853), 1, + anon_sym_RBRACK, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + STATE(916), 1, sym_for_in_clause, - STATE(1048), 1, + STATE(1061), 1, aux_sym__collection_elements_repeat1, - STATE(1427), 1, + STATE(1363), 1, sym__comprehension_clauses, + [48344] = 9, + ACTIONS(1914), 1, + sym_comment, + ACTIONS(1964), 1, + anon_sym_LBRACE2, + ACTIONS(1970), 1, + sym__not_escape_sequence, + ACTIONS(1973), 1, + sym__string_end, + STATE(912), 1, + aux_sym_string_repeat1, + STATE(1009), 1, + aux_sym_string_content_repeat1, + STATE(1013), 1, + sym_string_content, + STATE(1020), 1, + sym_interpolation, + ACTIONS(1967), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, [48374] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1841), 1, + ACTIONS(1855), 1, anon_sym_and, - ACTIONS(1843), 1, + ACTIONS(1857), 1, anon_sym_or, - ACTIONS(1959), 7, + ACTIONS(1975), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -63120,11 +64706,11 @@ static const uint16_t ts_small_parse_table[] = { [48393] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1963), 1, + ACTIONS(1979), 1, anon_sym_PIPE, - STATE(915), 1, + STATE(914), 1, aux_sym_match_or_pattern_repeat1, - ACTIONS(1961), 7, + ACTIONS(1977), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63135,26 +64721,11 @@ static const uint16_t ts_small_parse_table[] = { [48412] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1967), 1, - anon_sym_PIPE, - STATE(915), 1, - aux_sym_match_or_pattern_repeat1, - ACTIONS(1965), 7, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - [48431] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1963), 1, + ACTIONS(1984), 1, anon_sym_PIPE, - STATE(914), 1, + STATE(917), 1, aux_sym_match_or_pattern_repeat1, - ACTIONS(1970), 7, + ACTIONS(1982), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63162,81 +64733,96 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COLON, anon_sym_RBRACK, anon_sym_RBRACE, - [48450] = 6, + [48431] = 6, ACTIONS(3), 1, sym_comment, ACTIONS(1849), 1, anon_sym_async, ACTIONS(1851), 1, anon_sym_for, - ACTIONS(1974), 1, + ACTIONS(1988), 1, anon_sym_if, - ACTIONS(1972), 3, + ACTIONS(1986), 3, anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - STATE(920), 3, + STATE(922), 3, sym_for_in_clause, sym_if_clause, aux_sym__comprehension_clauses_repeat1, + [48454] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1984), 1, + anon_sym_PIPE, + STATE(914), 1, + aux_sym_match_or_pattern_repeat1, + ACTIONS(1990), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, [48473] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1878), 1, + ACTIONS(1867), 1, anon_sym_COMMA, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - STATE(944), 1, + ACTIONS(1871), 1, + anon_sym_or, + STATE(936), 1, aux_sym_expression_list_repeat1, - ACTIONS(1976), 4, + ACTIONS(1992), 4, anon_sym_COLON, anon_sym_RBRACE, anon_sym_EQ, sym_type_conversion, - [48498] = 4, + [48498] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(1841), 1, - anon_sym_and, - ACTIONS(1843), 1, - anon_sym_or, - ACTIONS(1959), 7, - anon_sym_RPAREN, - anon_sym_COMMA, + ACTIONS(1996), 1, anon_sym_if, + ACTIONS(1999), 1, anon_sym_async, + ACTIONS(2002), 1, anon_sym_for, + ACTIONS(1994), 3, + anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - [48517] = 6, + STATE(919), 3, + sym_for_in_clause, + sym_if_clause, + aux_sym__comprehension_clauses_repeat1, + [48521] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1980), 1, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + ACTIONS(1975), 7, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_if, - ACTIONS(1983), 1, anon_sym_async, - ACTIONS(1986), 1, anon_sym_for, - ACTIONS(1978), 3, - anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - STATE(920), 3, - sym_for_in_clause, - sym_if_clause, - aux_sym__comprehension_clauses_repeat1, [48540] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1841), 1, + ACTIONS(1855), 1, anon_sym_and, - ACTIONS(1843), 1, + ACTIONS(1857), 1, anon_sym_or, - ACTIONS(1959), 7, + ACTIONS(1975), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -63251,47 +64837,96 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_async, ACTIONS(1851), 1, anon_sym_for, - ACTIONS(1974), 1, + ACTIONS(1988), 1, anon_sym_if, - ACTIONS(1989), 3, + ACTIONS(2005), 3, anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - STATE(917), 3, + STATE(919), 3, sym_for_in_clause, sym_if_clause, aux_sym__comprehension_clauses_repeat1, - [48582] = 3, + [48582] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, - anon_sym_and, - ACTIONS(1855), 7, + ACTIONS(2007), 8, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [48596] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2009), 8, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [48610] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2013), 1, + anon_sym_COMMA, + STATE(925), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2011), 6, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [48628] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2016), 8, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [48642] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1830), 8, sym__newline, anon_sym_from, anon_sym_COMMA, anon_sym_if, anon_sym_EQ, + anon_sym_and, anon_sym_or, sym__semicolon, - [48598] = 4, + [48656] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1995), 1, + ACTIONS(2020), 1, anon_sym_COMMA, - STATE(935), 1, + STATE(928), 1, aux_sym_for_in_clause_repeat1, - ACTIONS(1993), 6, + ACTIONS(2018), 6, anon_sym_RPAREN, anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [48616] = 2, + [48674] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1997), 8, + ACTIONS(1977), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63300,27 +64935,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [48630] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(67), 1, - anon_sym_AT, - ACTIONS(1999), 1, - anon_sym_async, - ACTIONS(2001), 1, - anon_sym_def, - ACTIONS(2003), 1, - anon_sym_class, - STATE(489), 2, - sym_function_definition, - sym_class_definition, - STATE(1012), 2, - sym_decorator, - aux_sym_decorated_definition_repeat1, - [48654] = 2, + [48688] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2005), 8, + ACTIONS(2023), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63329,36 +64947,55 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [48668] = 4, + [48702] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1841), 1, - anon_sym_and, - ACTIONS(1843), 1, - anon_sym_or, - ACTIONS(2007), 6, + ACTIONS(2027), 1, + anon_sym_COMMA, + STATE(963), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(2025), 6, anon_sym_RPAREN, anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [48686] = 2, + [48720] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2009), 8, - anon_sym_RPAREN, + ACTIONS(67), 1, + anon_sym_AT, + ACTIONS(2029), 1, + anon_sym_async, + ACTIONS(2031), 1, + anon_sym_def, + ACTIONS(2033), 1, + anon_sym_class, + STATE(501), 2, + sym_function_definition, + sym_class_definition, + STATE(1019), 2, + sym_decorator, + aux_sym_decorated_definition_repeat1, + [48744] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2037), 1, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, + STATE(925), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2035), 6, + anon_sym_RPAREN, anon_sym_COLON, - anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [48700] = 2, + anon_sym_EQ, + sym_type_conversion, + [48762] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1886), 8, + ACTIONS(2039), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63367,10 +65004,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [48714] = 2, + [48776] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2011), 8, + ACTIONS(2041), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63379,25 +65016,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [48728] = 5, + [48790] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, - anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, - anon_sym_or, - ACTIONS(1872), 5, - sym__newline, - anon_sym_from, + ACTIONS(2043), 1, anon_sym_COMMA, + STATE(925), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2035), 6, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, anon_sym_EQ, - sym__semicolon, - [48748] = 2, + sym_type_conversion, + [48808] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1965), 8, + ACTIONS(2045), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63406,51 +65042,38 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [48762] = 4, + [48822] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, - anon_sym_and, - ACTIONS(2015), 1, - anon_sym_or, - ACTIONS(1861), 6, - sym__newline, - anon_sym_from, - anon_sym_COMMA, - anon_sym_if, - anon_sym_EQ, - sym__semicolon, - [48780] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2019), 1, + ACTIONS(2049), 1, anon_sym_COMMA, - STATE(935), 1, + STATE(928), 1, aux_sym_for_in_clause_repeat1, - ACTIONS(2017), 6, + ACTIONS(2047), 6, anon_sym_RPAREN, anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [48798] = 3, + [48840] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2024), 1, - anon_sym_PIPE, - ACTIONS(2022), 7, - anon_sym_RPAREN, + ACTIONS(2051), 1, + anon_sym_and, + ACTIONS(2053), 1, + anon_sym_or, + ACTIONS(1873), 6, + sym__newline, + anon_sym_from, anon_sym_COMMA, - anon_sym_as, anon_sym_if, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - [48814] = 2, + anon_sym_EQ, + sym__semicolon, + [48858] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1393), 8, + ACTIONS(1457), 8, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -63459,22 +65082,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_and, anon_sym_or, sym__semicolon, - [48828] = 2, + [48872] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2026), 8, + ACTIONS(1855), 1, + anon_sym_and, + ACTIONS(1857), 1, + anon_sym_or, + ACTIONS(2055), 6, anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [48842] = 2, + [48890] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2028), 8, + ACTIONS(1904), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63483,10 +65108,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [48856] = 2, + [48904] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2030), 8, + ACTIONS(2057), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63495,66 +65120,51 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [48870] = 4, + [48918] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, - anon_sym_and, - ACTIONS(2015), 1, - anon_sym_or, - ACTIONS(1855), 6, - sym__newline, - anon_sym_from, + ACTIONS(2059), 8, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_if, - anon_sym_EQ, - sym__semicolon, - [48888] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2034), 1, - anon_sym_COMMA, - STATE(942), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2032), 6, - anon_sym_RPAREN, anon_sym_COLON, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - sym_type_conversion, - [48906] = 4, + [48932] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2039), 1, + ACTIONS(2063), 1, anon_sym_COMMA, - STATE(952), 1, + STATE(938), 1, aux_sym_for_in_clause_repeat1, - ACTIONS(2037), 6, + ACTIONS(2061), 6, anon_sym_RPAREN, anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [48924] = 4, + [48950] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2043), 1, + ACTIONS(2051), 1, + anon_sym_and, + ACTIONS(2053), 1, + anon_sym_or, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(1875), 5, + sym__newline, + anon_sym_from, anon_sym_COMMA, - STATE(942), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2041), 6, - anon_sym_RPAREN, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, anon_sym_EQ, - sym_type_conversion, - [48942] = 2, + sym__semicolon, + [48970] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2045), 8, + ACTIONS(2067), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63563,10 +65173,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [48956] = 2, + [48984] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2047), 8, + ACTIONS(2069), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63575,10 +65185,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [48970] = 2, + [48998] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2049), 8, + ACTIONS(2071), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63587,28 +65197,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [48984] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1991), 1, - anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, - anon_sym_or, - ACTIONS(2051), 1, - anon_sym_from, - ACTIONS(2053), 1, - anon_sym_COMMA, - STATE(1059), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2055), 2, - sym__newline, - sym__semicolon, - [49010] = 2, + [49012] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2057), 8, + ACTIONS(2073), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63617,68 +65209,37 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [49024] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2059), 1, - anon_sym_COMMA, - STATE(942), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2041), 6, - anon_sym_RPAREN, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_EQ, - sym_type_conversion, - [49042] = 6, + [49026] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1829), 1, - anon_sym_DOT, - ACTIONS(1888), 1, - anon_sym_LPAREN, - ACTIONS(2061), 1, - anon_sym_EQ, - STATE(867), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(1890), 4, + ACTIONS(2075), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, - anon_sym_PIPE, - [49064] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2065), 1, - anon_sym_COMMA, - STATE(935), 1, - aux_sym_for_in_clause_repeat1, - ACTIONS(2063), 6, - anon_sym_RPAREN, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [49082] = 4, + [49040] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2015), 1, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(1823), 6, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(1887), 5, sym__newline, anon_sym_from, anon_sym_COMMA, - anon_sym_if, anon_sym_EQ, sym__semicolon, - [49100] = 2, + [49060] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2067), 8, + ACTIONS(2077), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63687,10 +65248,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [49114] = 2, + [49074] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 8, + ACTIONS(2079), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63699,10 +65260,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [49128] = 2, + [49088] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2071), 8, + ACTIONS(2081), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63711,66 +65272,89 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [49142] = 2, + [49102] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1814), 8, - sym__newline, - anon_sym_from, - anon_sym_COMMA, - anon_sym_if, - anon_sym_EQ, + ACTIONS(2051), 1, anon_sym_and, + ACTIONS(2053), 1, anon_sym_or, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2083), 1, + anon_sym_from, + ACTIONS(2085), 1, + anon_sym_COMMA, + STATE(1079), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2087), 2, + sym__newline, sym__semicolon, - [49156] = 7, + [49128] = 7, ACTIONS(3), 1, sym_comment, ACTIONS(67), 1, anon_sym_AT, - ACTIONS(2073), 1, + ACTIONS(2089), 1, anon_sym_async, - ACTIONS(2075), 1, + ACTIONS(2091), 1, anon_sym_def, - ACTIONS(2077), 1, + ACTIONS(2093), 1, anon_sym_class, - STATE(525), 2, + STATE(469), 2, sym_function_definition, sym_class_definition, - STATE(1012), 2, + STATE(1019), 2, sym_decorator, aux_sym_decorated_definition_repeat1, - [49180] = 2, + [49152] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2079), 8, - anon_sym_RPAREN, + ACTIONS(2051), 1, + anon_sym_and, + ACTIONS(2053), 1, + anon_sym_or, + ACTIONS(1877), 6, + sym__newline, + anon_sym_from, anon_sym_COMMA, - anon_sym_as, anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, - anon_sym_RBRACE, - [49194] = 5, + anon_sym_EQ, + sym__semicolon, + [49170] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2013), 1, + ACTIONS(2053), 1, + anon_sym_or, + ACTIONS(2065), 1, anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(1881), 5, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_EQ, + sym__semicolon, + [49190] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2051), 1, + anon_sym_and, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(1835), 5, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(1960), 5, sym__newline, anon_sym_from, anon_sym_COMMA, anon_sym_EQ, sym__semicolon, - [49214] = 2, + [49210] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2081), 8, + ACTIONS(2095), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63779,25 +65363,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [49228] = 5, + [49224] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, - anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, - anon_sym_or, - ACTIONS(1857), 5, - sym__newline, - anon_sym_from, - anon_sym_COMMA, - anon_sym_EQ, - sym__semicolon, - [49248] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2083), 8, + ACTIONS(2097), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63806,22 +65375,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [49262] = 2, + [49238] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2085), 8, - anon_sym_RPAREN, + ACTIONS(2101), 1, anon_sym_COMMA, - anon_sym_as, + STATE(928), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(2099), 6, + anon_sym_RPAREN, anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [49276] = 2, + [49256] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2087), 8, + ACTIONS(2103), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -63830,172 +65401,207 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [49290] = 5, + [49270] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1859), 1, + anon_sym_DOT, + ACTIONS(1891), 1, + anon_sym_LPAREN, + ACTIONS(2105), 1, + anon_sym_EQ, + STATE(869), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(1893), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_PIPE, + [49292] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2013), 1, + ACTIONS(1839), 7, + sym__newline, + anon_sym_from, + anon_sym_COMMA, anon_sym_if, - ACTIONS(2015), 1, + anon_sym_EQ, + anon_sym_or, + sym__semicolon, + [49308] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2051), 1, + anon_sym_and, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(1902), 5, + ACTIONS(1839), 6, sym__newline, anon_sym_from, anon_sym_COMMA, + anon_sym_if, anon_sym_EQ, sym__semicolon, - [49310] = 2, + [49326] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2089), 8, + ACTIONS(2109), 1, + anon_sym_PIPE, + ACTIONS(2107), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, anon_sym_if, anon_sym_COLON, - anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [49324] = 4, + [49342] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2093), 1, - anon_sym_COMMA, - STATE(924), 1, - aux_sym_for_in_clause_repeat1, - ACTIONS(2091), 6, - anon_sym_RPAREN, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACK, - anon_sym_RBRACE, - [49342] = 5, + ACTIONS(2111), 1, + sym_identifier, + ACTIONS(2113), 1, + anon_sym_STAR, + ACTIONS(2115), 1, + anon_sym_STAR_STAR, + STATE(1277), 4, + sym_typevar_parameter, + sym_typevartuple_parameter, + sym_paramspec_parameter, + sym__type_parameter, + [49361] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2095), 1, - anon_sym_if, - ACTIONS(2097), 1, + ACTIONS(2117), 1, anon_sym_and, - ACTIONS(2099), 1, - anon_sym_or, - ACTIONS(1872), 4, + ACTIONS(1839), 6, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, + anon_sym_if, anon_sym_COLON, - [49361] = 7, + anon_sym_or, + [49376] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2117), 1, anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(2119), 1, anon_sym_or, - ACTIONS(2101), 1, + ACTIONS(1839), 5, + anon_sym_RPAREN, anon_sym_COMMA, - STATE(1086), 1, - aux_sym_assert_statement_repeat1, - ACTIONS(2103), 2, - sym__newline, - sym__semicolon, - [49384] = 8, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + [49393] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1849), 1, - anon_sym_async, - ACTIONS(1851), 1, - anon_sym_for, - ACTIONS(2105), 1, + ACTIONS(2123), 1, + anon_sym_as, + ACTIONS(2121), 6, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(2107), 1, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, anon_sym_RBRACE, - STATE(922), 1, - sym_for_in_clause, - STATE(1223), 1, - aux_sym_dictionary_repeat1, - STATE(1446), 1, - sym__comprehension_clauses, - [49409] = 5, + [49408] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2125), 1, + anon_sym_except, + ACTIONS(2127), 1, + anon_sym_finally, + STATE(532), 1, + sym_finally_clause, + STATE(231), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + STATE(232), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + [49429] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(1916), 4, - sym__newline, - anon_sym_from, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2085), 1, anon_sym_COMMA, + STATE(1079), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2129), 2, + sym__newline, sym__semicolon, - [49428] = 2, + [49452] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2125), 1, + anon_sym_except, + ACTIONS(2127), 1, + anon_sym_finally, + STATE(544), 1, + sym_finally_clause, + STATE(223), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + STATE(233), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + [49473] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1814), 7, + ACTIONS(2117), 1, + anon_sym_and, + ACTIONS(2119), 1, + anon_sym_or, + ACTIONS(2131), 1, + anon_sym_if, + ACTIONS(1881), 4, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, - anon_sym_if, anon_sym_COLON, - anon_sym_and, - anon_sym_or, - [49441] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1849), 1, - anon_sym_async, - ACTIONS(1851), 1, - anon_sym_for, - ACTIONS(2109), 1, - anon_sym_COMMA, - ACTIONS(2111), 1, - anon_sym_RBRACE, - STATE(922), 1, - sym_for_in_clause, - STATE(1163), 1, - aux_sym_dictionary_repeat1, - STATE(1354), 1, - sym__comprehension_clauses, - [49466] = 7, + [49492] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, - anon_sym_or, ACTIONS(2053), 1, + anon_sym_or, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2133), 1, anon_sym_COMMA, - STATE(1059), 1, - aux_sym_expression_list_repeat1, - ACTIONS(1876), 2, + STATE(1098), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(2135), 2, sym__newline, sym__semicolon, - [49489] = 7, + [49515] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, - anon_sym_or, ACTIONS(2053), 1, - anon_sym_COMMA, - STATE(1059), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2113), 2, + anon_sym_or, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(1938), 4, sym__newline, + anon_sym_from, + anon_sym_COMMA, sym__semicolon, - [49512] = 2, + [49534] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2115), 7, + ACTIONS(2137), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -64003,10 +65609,40 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [49525] = 2, + [49547] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2051), 1, + anon_sym_and, + ACTIONS(2053), 1, + anon_sym_or, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2133), 1, + anon_sym_COMMA, + STATE(1116), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(2139), 2, + sym__newline, + sym__semicolon, + [49570] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2111), 1, + sym_identifier, + ACTIONS(2113), 1, + anon_sym_STAR, + ACTIONS(2115), 1, + anon_sym_STAR_STAR, + STATE(1347), 4, + sym_typevar_parameter, + sym_typevartuple_parameter, + sym_paramspec_parameter, + sym__type_parameter, + [49589] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1393), 7, + ACTIONS(1457), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -64014,55 +65650,52 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COLON, anon_sym_and, anon_sym_or, - [49538] = 6, + [49602] = 5, ACTIONS(3), 1, sym_comment, ACTIONS(2117), 1, - anon_sym_except, + anon_sym_and, ACTIONS(2119), 1, - anon_sym_finally, - STATE(469), 1, - sym_finally_clause, - STATE(227), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - STATE(233), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - [49559] = 6, + anon_sym_or, + ACTIONS(2131), 1, + anon_sym_if, + ACTIONS(1887), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_COLON, + [49621] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2095), 1, + ACTIONS(1845), 1, anon_sym_if, - ACTIONS(2097), 1, + ACTIONS(1855), 1, anon_sym_and, - ACTIONS(2099), 1, + ACTIONS(1857), 1, anon_sym_or, - ACTIONS(2123), 1, - anon_sym_as, - ACTIONS(2121), 3, - anon_sym_RPAREN, + ACTIONS(2141), 4, anon_sym_COMMA, - anon_sym_COLON, - [49580] = 6, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [49640] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2125), 1, - anon_sym_except, - ACTIONS(2127), 1, - anon_sym_finally, - STATE(509), 1, - sym_finally_clause, - STATE(225), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - STATE(231), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - [49601] = 2, + ACTIONS(1841), 1, + anon_sym_and, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2143), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_RBRACE, + [49659] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2129), 7, + ACTIONS(2018), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -64070,4215 +65703,4168 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [49614] = 6, - ACTIONS(1898), 1, + [49672] = 6, + ACTIONS(3), 1, sym_comment, + ACTIONS(2117), 1, + anon_sym_and, + ACTIONS(2119), 1, + anon_sym_or, ACTIONS(2131), 1, + anon_sym_if, + ACTIONS(2147), 1, + anon_sym_as, + ACTIONS(2145), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + [49693] = 6, + ACTIONS(1914), 1, + sym_comment, + ACTIONS(2149), 1, anon_sym_LBRACE2, - ACTIONS(2135), 1, + ACTIONS(2154), 1, sym__not_escape_sequence, - ACTIONS(2137), 1, + ACTIONS(2157), 1, sym__string_end, - STATE(1004), 1, + STATE(988), 1, aux_sym_string_content_repeat1, - ACTIONS(2133), 3, + ACTIONS(2151), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [49635] = 5, + [49714] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, - anon_sym_if, - ACTIONS(1841), 1, - anon_sym_and, - ACTIONS(1843), 1, - anon_sym_or, - ACTIONS(2139), 4, + ACTIONS(2159), 7, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_if, anon_sym_async, anon_sym_for, + anon_sym_RBRACK, anon_sym_RBRACE, - [49654] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1991), 1, - anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, - anon_sym_or, - ACTIONS(1933), 4, - sym__newline, - anon_sym_from, - anon_sym_COMMA, - sym__semicolon, - [49673] = 8, + [49727] = 8, ACTIONS(3), 1, sym_comment, ACTIONS(1849), 1, anon_sym_async, ACTIONS(1851), 1, anon_sym_for, - ACTIONS(2141), 1, + ACTIONS(2161), 1, anon_sym_COMMA, - ACTIONS(2143), 1, + ACTIONS(2163), 1, anon_sym_RBRACE, - STATE(922), 1, + STATE(916), 1, sym_for_in_clause, - STATE(1215), 1, + STATE(1265), 1, aux_sym_dictionary_repeat1, - STATE(1372), 1, + STATE(1457), 1, sym__comprehension_clauses, - [49698] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2017), 7, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACK, - anon_sym_RBRACE, - [49711] = 2, + [49752] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1876), 7, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_EQ, - sym_type_conversion, - [49724] = 3, + ACTIONS(2165), 1, + sym_identifier, + ACTIONS(2167), 1, + anon_sym_LPAREN, + ACTIONS(2169), 1, + anon_sym_STAR, + STATE(1055), 1, + sym_dotted_name, + STATE(1117), 1, + sym_aliased_import, + STATE(1293), 1, + sym__import_list, + STATE(1297), 1, + sym_wildcard_import, + [49777] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2147), 1, - anon_sym_as, - ACTIONS(2145), 6, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - [49739] = 5, + ACTIONS(2171), 1, + anon_sym_except, + ACTIONS(2173), 1, + anon_sym_finally, + STATE(460), 1, + sym_finally_clause, + STATE(229), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + STATE(234), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + [49798] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2095), 1, - anon_sym_if, - ACTIONS(2097), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2099), 1, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(1857), 4, - anon_sym_RPAREN, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2085), 1, anon_sym_COMMA, - anon_sym_as, - anon_sym_COLON, - [49758] = 7, + STATE(1079), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2175), 2, + sym__newline, + sym__semicolon, + [49821] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(2101), 1, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2085), 1, anon_sym_COMMA, - STATE(1089), 1, - aux_sym_assert_statement_repeat1, - ACTIONS(2149), 2, + STATE(1079), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2177), 2, sym__newline, sym__semicolon, - [49781] = 5, + [49844] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2151), 1, - sym_identifier, - ACTIONS(2153), 1, - anon_sym_STAR, - ACTIONS(2155), 1, - anon_sym_STAR_STAR, - STATE(1334), 4, - sym_typevar_parameter, - sym_typevartuple_parameter, - sym_paramspec_parameter, - sym__type_parameter, - [49800] = 5, + ACTIONS(1841), 1, + anon_sym_and, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2179), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_EQ, + [49863] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2151), 1, - sym_identifier, - ACTIONS(2153), 1, - anon_sym_STAR, - ACTIONS(2155), 1, - anon_sym_STAR_STAR, - STATE(1278), 4, - sym_typevar_parameter, - sym_typevartuple_parameter, - sym_paramspec_parameter, - sym__type_parameter, - [49819] = 7, + ACTIONS(1849), 1, + anon_sym_async, + ACTIONS(1851), 1, + anon_sym_for, + ACTIONS(2181), 1, + anon_sym_COMMA, + ACTIONS(2183), 1, + anon_sym_RBRACE, + STATE(916), 1, + sym_for_in_clause, + STATE(1190), 1, + aux_sym_dictionary_repeat1, + STATE(1360), 1, + sym__comprehension_clauses, + [49888] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2157), 1, + ACTIONS(2185), 1, sym_identifier, - ACTIONS(2159), 1, + ACTIONS(2187), 1, anon_sym_DOT, - ACTIONS(2161), 1, + ACTIONS(2189), 1, anon_sym___future__, - STATE(1124), 1, + STATE(1108), 1, aux_sym_import_prefix_repeat1, - STATE(1254), 1, + STATE(1173), 1, sym_import_prefix, - STATE(1387), 2, + STATE(1388), 2, sym_relative_import, sym_dotted_name, - [49842] = 5, + [49911] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2051), 1, + anon_sym_and, + ACTIONS(2053), 1, + anon_sym_or, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(1948), 4, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + sym__semicolon, + [49930] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(1827), 1, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(2065), 1, anon_sym_if, - ACTIONS(2163), 4, + ACTIONS(2191), 1, + anon_sym_COMMA, + STATE(1097), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2193), 2, + sym__newline, + sym__semicolon, + [49953] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1865), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, anon_sym_EQ, - [49861] = 6, + sym_type_conversion, + [49966] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(2117), 1, - anon_sym_except, + anon_sym_and, ACTIONS(2119), 1, - anon_sym_finally, - STATE(497), 1, - sym_finally_clause, - STATE(223), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - STATE(232), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - [49882] = 6, + anon_sym_or, + ACTIONS(1873), 5, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + [49983] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2125), 1, + ACTIONS(2171), 1, anon_sym_except, - ACTIONS(2127), 1, + ACTIONS(2173), 1, anon_sym_finally, - STATE(514), 1, + STATE(475), 1, sym_finally_clause, - STATE(224), 2, + STATE(226), 2, sym_except_clause, aux_sym_try_statement_repeat1, - STATE(236), 2, + STATE(227), 2, sym_except_group_clause, aux_sym_try_statement_repeat2, - [49903] = 2, + [50004] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1916), 7, + ACTIONS(1830), 7, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_EQ, - sym_type_conversion, - [49916] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2095), 1, + anon_sym_as, anon_sym_if, - ACTIONS(2097), 1, + anon_sym_COLON, anon_sym_and, - ACTIONS(2099), 1, anon_sym_or, - ACTIONS(1835), 4, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_COLON, - [49935] = 7, + [50017] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, - anon_sym_or, ACTIONS(2053), 1, + anon_sym_or, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2085), 1, anon_sym_COMMA, - STATE(1059), 1, + STATE(1079), 1, aux_sym_expression_list_repeat1, - ACTIONS(2165), 2, + ACTIONS(2195), 2, sym__newline, sym__semicolon, - [49958] = 4, + [50040] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1948), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_EQ, + sym_type_conversion, + [50053] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2097), 1, + ACTIONS(2117), 1, anon_sym_and, - ACTIONS(2099), 1, + ACTIONS(2119), 1, anon_sym_or, - ACTIONS(1823), 5, + ACTIONS(2131), 1, + anon_sym_if, + ACTIONS(1875), 4, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, - anon_sym_if, anon_sym_COLON, - [49975] = 7, + [50072] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2117), 1, anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(2119), 1, anon_sym_or, - ACTIONS(2053), 1, + ACTIONS(1877), 5, + anon_sym_RPAREN, anon_sym_COMMA, - STATE(1059), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2167), 2, - sym__newline, - sym__semicolon, - [49998] = 7, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + [50089] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(2169), 1, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2085), 1, anon_sym_COMMA, - STATE(1103), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2171), 2, + STATE(1079), 1, + aux_sym_expression_list_repeat1, + ACTIONS(1865), 2, sym__newline, sym__semicolon, - [50021] = 6, - ACTIONS(1898), 1, + [50112] = 6, + ACTIONS(1914), 1, sym_comment, - ACTIONS(2173), 1, + ACTIONS(2197), 1, anon_sym_LBRACE2, - ACTIONS(2178), 1, + ACTIONS(2201), 1, sym__not_escape_sequence, - ACTIONS(2181), 1, + ACTIONS(2203), 1, sym__string_end, - STATE(1004), 1, + STATE(988), 1, aux_sym_string_content_repeat1, - ACTIONS(2175), 3, + ACTIONS(2199), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [50042] = 4, + [50133] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2097), 1, - anon_sym_and, - ACTIONS(2099), 1, - anon_sym_or, - ACTIONS(1861), 5, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - [50059] = 3, + ACTIONS(1849), 1, + anon_sym_async, + ACTIONS(1851), 1, + anon_sym_for, + ACTIONS(2205), 1, + anon_sym_COMMA, + ACTIONS(2207), 1, + anon_sym_RBRACE, + STATE(916), 1, + sym_for_in_clause, + STATE(1230), 1, + aux_sym_dictionary_repeat1, + STATE(1367), 1, + sym__comprehension_clauses, + [50158] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2097), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1855), 6, - anon_sym_RPAREN, + ACTIONS(1867), 1, anon_sym_COMMA, - anon_sym_as, + ACTIONS(1869), 1, anon_sym_if, - anon_sym_COLON, + ACTIONS(1871), 1, anon_sym_or, - [50074] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2183), 1, - sym_identifier, - ACTIONS(2185), 1, - anon_sym_LPAREN, - ACTIONS(2187), 1, - anon_sym_STAR, - STATE(1049), 1, - sym_dotted_name, - STATE(1142), 1, - sym_aliased_import, - STATE(1326), 1, - sym_wildcard_import, - STATE(1327), 1, - sym__import_list, - [50099] = 4, + ACTIONS(2209), 1, + anon_sym_COLON, + STATE(936), 1, + aux_sym_expression_list_repeat1, + [50180] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2097), 1, + ACTIONS(2117), 1, anon_sym_and, - ACTIONS(2099), 1, + ACTIONS(2119), 1, anon_sym_or, - ACTIONS(1855), 5, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, + ACTIONS(2131), 1, anon_sym_if, + ACTIONS(2213), 1, anon_sym_COLON, - [50116] = 5, + ACTIONS(2211), 2, + anon_sym_COMMA, + anon_sym_as, + [50200] = 3, + ACTIONS(1914), 1, + sym_comment, + ACTIONS(2215), 2, + anon_sym_LBRACE2, + sym__not_escape_sequence, + ACTIONS(2217), 4, + sym__string_content, + sym__string_end, + sym__escape_interpolation, + sym_escape_sequence, + [50214] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1867), 1, + anon_sym_COMMA, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2189), 4, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2219), 1, + anon_sym_COLON, + STATE(936), 1, + aux_sym_expression_list_repeat1, + [50236] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2221), 6, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, anon_sym_RBRACK, anon_sym_RBRACE, - [50135] = 7, + [50248] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, - anon_sym_or, ACTIONS(2053), 1, + anon_sym_or, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2223), 3, + sym__newline, anon_sym_COMMA, - STATE(1059), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2191), 2, + sym__semicolon, + [50266] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2225), 1, + anon_sym_DOT, + STATE(1029), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(2227), 4, sym__newline, + anon_sym_COMMA, + anon_sym_as, sym__semicolon, - [50158] = 5, + [50282] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(1827), 1, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(2065), 1, anon_sym_if, - ACTIONS(2193), 3, - anon_sym_RPAREN, + ACTIONS(2229), 3, + sym__newline, anon_sym_COMMA, - anon_sym_COLON, - [50176] = 4, + sym__semicolon, + [50300] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2197), 1, + ACTIONS(2233), 1, anon_sym_AT, - STATE(1012), 2, + STATE(1019), 2, sym_decorator, aux_sym_decorated_definition_repeat1, - ACTIONS(2195), 3, + ACTIONS(2231), 3, anon_sym_async, anon_sym_def, anon_sym_class, - [50192] = 4, + [50316] = 3, + ACTIONS(1914), 1, + sym_comment, + ACTIONS(2236), 2, + anon_sym_LBRACE2, + sym__not_escape_sequence, + ACTIONS(2238), 4, + sym__string_content, + sym__string_end, + sym__escape_interpolation, + sym_escape_sequence, + [50330] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2200), 1, - anon_sym_DOT, - STATE(1035), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(2202), 4, - sym__newline, + ACTIONS(1841), 1, + anon_sym_and, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2240), 3, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, - sym__semicolon, - [50208] = 7, + anon_sym_COLON, + [50348] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1878), 1, + ACTIONS(1867), 1, anon_sym_COMMA, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2204), 1, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2242), 1, anon_sym_COLON, - STATE(944), 1, + STATE(936), 1, aux_sym_expression_list_repeat1, - [50230] = 3, - ACTIONS(1898), 1, + [50370] = 3, + ACTIONS(1914), 1, sym_comment, - ACTIONS(2206), 2, + ACTIONS(2244), 2, anon_sym_LBRACE2, sym__not_escape_sequence, - ACTIONS(2208), 4, + ACTIONS(2246), 4, sym__string_content, sym__string_end, sym__escape_interpolation, sym_escape_sequence, - [50244] = 4, + [50384] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1829), 1, - anon_sym_DOT, - STATE(865), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(2202), 4, - anon_sym_import, - anon_sym_RPAREN, + ACTIONS(1841), 1, + anon_sym_and, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2248), 3, anon_sym_COMMA, - anon_sym_as, - [50260] = 5, + anon_sym_RBRACK, + anon_sym_EQ, + [50402] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(2210), 3, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2179), 3, sym__newline, - anon_sym_COMMA, + anon_sym_EQ, sym__semicolon, - [50278] = 5, + [50420] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(2013), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(2212), 3, - sym__newline, + ACTIONS(1926), 1, + anon_sym_RPAREN, + ACTIONS(1928), 1, anon_sym_COMMA, - sym__semicolon, - [50296] = 2, + STATE(1170), 1, + aux_sym_argument_list_repeat1, + [50442] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2214), 6, + ACTIONS(1893), 6, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, anon_sym_RBRACK, anon_sym_RBRACE, - [50308] = 3, - ACTIONS(1898), 1, - sym_comment, - ACTIONS(2216), 2, - anon_sym_LBRACE2, - sym__not_escape_sequence, - ACTIONS(2218), 4, - sym__string_content, - sym__string_end, - sym__escape_interpolation, - sym_escape_sequence, - [50322] = 7, + [50454] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(2117), 1, anon_sym_and, - ACTIONS(1827), 1, + ACTIONS(2119), 1, anon_sym_or, - ACTIONS(1878), 1, - anon_sym_COMMA, - ACTIONS(1880), 1, + ACTIONS(2131), 1, anon_sym_if, - ACTIONS(2220), 1, + ACTIONS(2252), 1, anon_sym_COLON, - STATE(944), 1, - aux_sym_expression_list_repeat1, - [50344] = 5, + ACTIONS(2250), 2, + anon_sym_COMMA, + anon_sym_as, + [50474] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, - anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, - anon_sym_or, - ACTIONS(2163), 3, + ACTIONS(2254), 1, + anon_sym_DOT, + STATE(1029), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(1834), 4, sym__newline, - anon_sym_EQ, + anon_sym_COMMA, + anon_sym_as, sym__semicolon, - [50362] = 6, + [50490] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2224), 1, - anon_sym_COLON, - ACTIONS(2226), 1, - anon_sym_EQ, - STATE(1147), 1, - sym__type_bound, - STATE(1295), 1, - sym__type_param_default, - ACTIONS(2222), 2, + ACTIONS(1841), 1, + anon_sym_and, + ACTIONS(1867), 1, anon_sym_COMMA, - anon_sym_RBRACK, - [50382] = 6, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2257), 1, + anon_sym_COLON, + STATE(936), 1, + aux_sym_expression_list_repeat1, + [50512] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2095), 1, + ACTIONS(2261), 1, + anon_sym_COMMA, + STATE(1031), 1, + aux_sym_open_sequence_match_pattern_repeat1, + ACTIONS(2259), 4, + anon_sym_RPAREN, anon_sym_if, - ACTIONS(2097), 1, - anon_sym_and, - ACTIONS(2099), 1, - anon_sym_or, - ACTIONS(2230), 1, anon_sym_COLON, - ACTIONS(2228), 2, + anon_sym_RBRACK, + [50528] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1859), 1, + anon_sym_DOT, + STATE(1040), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(2264), 4, + anon_sym_import, + anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, - [50402] = 6, + [50544] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2234), 1, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2268), 1, anon_sym_COLON, - ACTIONS(2232), 2, + ACTIONS(2266), 2, anon_sym_COMMA, anon_sym_RBRACK, - [50422] = 5, + [50564] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2225), 1, + anon_sym_DOT, + STATE(1017), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(2264), 4, + sym__newline, + anon_sym_COMMA, + anon_sym_as, + sym__semicolon, + [50580] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(1827), 1, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(2065), 1, anon_sym_if, - ACTIONS(2236), 3, + ACTIONS(2270), 3, + sym__newline, anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_EQ, - [50440] = 3, - ACTIONS(1898), 1, + sym__semicolon, + [50598] = 3, + ACTIONS(1914), 1, sym_comment, - ACTIONS(2238), 2, + ACTIONS(2272), 2, anon_sym_LBRACE2, sym__not_escape_sequence, - ACTIONS(2240), 4, + ACTIONS(2274), 4, sym__string_content, sym__string_end, sym__escape_interpolation, sym_escape_sequence, - [50454] = 4, + [50612] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2244), 1, - anon_sym_COMMA, - STATE(1028), 1, - aux_sym_open_sequence_match_pattern_repeat1, - ACTIONS(2242), 4, - anon_sym_RPAREN, + ACTIONS(1841), 1, + anon_sym_and, + ACTIONS(1869), 1, anon_sym_if, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2276), 3, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_COLON, - anon_sym_RBRACK, - [50470] = 7, + [50630] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1878), 1, - anon_sym_COMMA, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2247), 1, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2280), 1, anon_sym_COLON, - STATE(944), 1, - aux_sym_expression_list_repeat1, - [50492] = 7, + ACTIONS(2278), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [50650] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1878), 1, + ACTIONS(1867), 1, anon_sym_COMMA, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2249), 1, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2282), 1, anon_sym_COLON, - STATE(944), 1, + STATE(936), 1, aux_sym_expression_list_repeat1, - [50514] = 7, + [50672] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(1929), 1, + ACTIONS(1859), 1, + anon_sym_DOT, + STATE(865), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(2227), 4, + anon_sym_import, anon_sym_RPAREN, - ACTIONS(1931), 1, anon_sym_COMMA, - STATE(1250), 1, - aux_sym_argument_list_repeat1, - [50536] = 3, - ACTIONS(1898), 1, + anon_sym_as, + [50688] = 3, + ACTIONS(1914), 1, sym_comment, - ACTIONS(2251), 2, + ACTIONS(2284), 2, anon_sym_LBRACE2, sym__not_escape_sequence, - ACTIONS(2253), 4, + ACTIONS(2286), 4, sym__string_content, sym__string_end, sym__escape_interpolation, sym_escape_sequence, - [50550] = 3, - ACTIONS(1898), 1, + [50702] = 3, + ACTIONS(1914), 1, sym_comment, - ACTIONS(2255), 2, + ACTIONS(2288), 2, anon_sym_LBRACE2, sym__not_escape_sequence, - ACTIONS(2257), 4, + ACTIONS(2290), 4, sym__string_content, sym__string_end, sym__escape_interpolation, sym_escape_sequence, - [50564] = 6, + [50716] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2095), 1, - anon_sym_if, - ACTIONS(2097), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(2099), 1, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(2261), 1, + ACTIONS(2294), 1, anon_sym_COLON, - ACTIONS(2259), 2, + ACTIONS(2292), 2, anon_sym_COMMA, - anon_sym_as, - [50584] = 4, + anon_sym_RBRACK, + [50736] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2263), 1, - anon_sym_DOT, - STATE(1035), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(1818), 4, - sym__newline, + ACTIONS(2298), 1, + anon_sym_COLON, + ACTIONS(2300), 1, + anon_sym_EQ, + STATE(1109), 1, + sym__type_bound, + STATE(1285), 1, + sym__type_param_default, + ACTIONS(2296), 2, anon_sym_COMMA, - anon_sym_as, - sym__semicolon, - [50600] = 7, + anon_sym_RBRACK, + [50756] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1878), 1, + ACTIONS(1867), 1, anon_sym_COMMA, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2266), 1, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2302), 1, anon_sym_COLON, - STATE(944), 1, + STATE(936), 1, aux_sym_expression_list_repeat1, - [50622] = 5, + [50778] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2117), 1, anon_sym_and, - ACTIONS(2013), 1, + ACTIONS(2119), 1, + anon_sym_or, + ACTIONS(2131), 1, anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(2304), 1, + anon_sym_as, + ACTIONS(2306), 1, + anon_sym_COLON, + [50797] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2117), 1, + anon_sym_and, + ACTIONS(2119), 1, anon_sym_or, - ACTIONS(2268), 3, - sym__newline, - anon_sym_COMMA, - sym__semicolon, - [50640] = 2, + ACTIONS(2131), 1, + anon_sym_if, + ACTIONS(2308), 1, + anon_sym_as, + ACTIONS(2310), 1, + anon_sym_COLON, + [50816] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1890), 6, + ACTIONS(2312), 5, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, anon_sym_RBRACK, - anon_sym_RBRACE, - [50652] = 4, + [50827] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2200), 1, - anon_sym_DOT, - STATE(1013), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(2270), 4, + ACTIONS(2165), 1, + sym_identifier, + STATE(1124), 1, + sym_dotted_name, + STATE(1268), 1, + sym_aliased_import, + ACTIONS(2314), 2, sym__newline, - anon_sym_COMMA, - anon_sym_as, sym__semicolon, - [50668] = 3, - ACTIONS(1898), 1, - sym_comment, - ACTIONS(2272), 2, - anon_sym_LBRACE2, - sym__not_escape_sequence, - ACTIONS(2274), 4, - sym__string_content, - sym__string_end, - sym__escape_interpolation, - sym_escape_sequence, - [50682] = 6, + [50844] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(2278), 1, - anon_sym_COLON, - ACTIONS(2276), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [50702] = 7, + ACTIONS(2165), 1, + sym_identifier, + STATE(1124), 1, + sym_dotted_name, + STATE(1268), 1, + sym_aliased_import, + ACTIONS(2316), 2, + sym__newline, + sym__semicolon, + [50861] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1878), 1, + ACTIONS(2320), 1, anon_sym_COMMA, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(2280), 1, - anon_sym_COLON, - STATE(944), 1, - aux_sym_expression_list_repeat1, - [50724] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1829), 1, - anon_sym_DOT, - STATE(1016), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(2270), 4, - anon_sym_import, + STATE(1051), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(2318), 3, anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - [50740] = 6, + anon_sym_RBRACK, + anon_sym_RBRACE, + [50876] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2284), 1, - anon_sym_COLON, - ACTIONS(2282), 2, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2323), 2, anon_sym_COMMA, anon_sym_RBRACK, - [50760] = 5, + [50893] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(2286), 3, - anon_sym_RPAREN, - anon_sym_COMMA, + ACTIONS(2325), 1, + anon_sym_LPAREN, + ACTIONS(2327), 1, anon_sym_COLON, - [50778] = 5, + ACTIONS(2329), 1, + anon_sym_LBRACK, + STATE(1198), 1, + sym_type_parameters, + STATE(1365), 1, + sym_argument_list, + [50912] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2183), 1, + ACTIONS(2165), 1, sym_identifier, - STATE(1119), 1, + ACTIONS(2331), 1, + anon_sym_LPAREN, + STATE(1055), 1, sym_dotted_name, - STATE(1242), 1, + STATE(1117), 1, sym_aliased_import, - ACTIONS(2288), 2, + STATE(1294), 1, + sym__import_list, + [50931] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2333), 1, + anon_sym_COMMA, + ACTIONS(2335), 1, + anon_sym_as, + STATE(1107), 1, + aux_sym__import_list_repeat1, + ACTIONS(2337), 2, sym__newline, sym__semicolon, - [50795] = 6, + [50948] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2095), 1, - anon_sym_if, - ACTIONS(2097), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(2099), 1, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(2290), 1, - anon_sym_as, - ACTIONS(2292), 1, - anon_sym_COLON, - [50814] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2296), 1, + ACTIONS(2339), 2, anon_sym_COMMA, - STATE(1073), 1, - aux_sym__collection_elements_repeat1, - ACTIONS(2294), 3, - anon_sym_RPAREN, anon_sym_RBRACK, - anon_sym_RBRACE, - [50829] = 5, + [50965] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2298), 1, - anon_sym_COMMA, - ACTIONS(2300), 1, - anon_sym_as, - STATE(1126), 1, - aux_sym__import_list_repeat1, - ACTIONS(2302), 2, - sym__newline, - sym__semicolon, - [50846] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1991), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(2013), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(2304), 2, - sym__newline, - sym__semicolon, - [50863] = 6, - ACTIONS(1898), 1, + ACTIONS(2341), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [50982] = 6, + ACTIONS(1914), 1, sym_comment, - ACTIONS(2306), 1, + ACTIONS(2343), 1, anon_sym_RBRACE, - ACTIONS(2308), 1, + ACTIONS(2345), 1, anon_sym_LBRACE2, - ACTIONS(2310), 1, + ACTIONS(2347), 1, aux_sym_format_specifier_token1, - STATE(1058), 1, + STATE(1069), 1, aux_sym_format_specifier_repeat1, - STATE(1222), 1, + STATE(1219), 1, sym_interpolation, - [50882] = 6, + [51001] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2312), 1, - anon_sym_COLON, - ACTIONS(2314), 1, + ACTIONS(2351), 1, + anon_sym_COMMA, + STATE(1051), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(2349), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, anon_sym_RBRACE, - ACTIONS(2316), 1, - anon_sym_EQ, - ACTIONS(2318), 1, - sym_type_conversion, - STATE(1384), 1, - sym_format_specifier, - [50901] = 6, + [51016] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2095), 1, - anon_sym_if, - ACTIONS(2097), 1, - anon_sym_and, - ACTIONS(2099), 1, - anon_sym_or, - ACTIONS(2320), 1, - anon_sym_as, - ACTIONS(2322), 1, + ACTIONS(2353), 1, anon_sym_COLON, - [50920] = 6, - ACTIONS(1898), 1, - sym_comment, - ACTIONS(2324), 1, + ACTIONS(2355), 1, anon_sym_RBRACE, - ACTIONS(2326), 1, - anon_sym_LBRACE2, - ACTIONS(2329), 1, - aux_sym_format_specifier_token1, - STATE(1054), 1, - aux_sym_format_specifier_repeat1, - STATE(1222), 1, - sym_interpolation, - [50939] = 5, + ACTIONS(2357), 1, + anon_sym_EQ, + ACTIONS(2359), 1, + sym_type_conversion, + STATE(1383), 1, + sym_format_specifier, + [51035] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(2332), 2, + ACTIONS(2361), 1, anon_sym_COMMA, + STATE(1051), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(2349), 3, + anon_sym_RPAREN, anon_sym_RBRACK, - [50956] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(2139), 2, - anon_sym_COMMA, anon_sym_RBRACE, - [50973] = 2, + [51050] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1818), 5, + ACTIONS(1834), 5, sym__newline, anon_sym_DOT, anon_sym_COMMA, anon_sym_as, sym__semicolon, - [50984] = 6, - ACTIONS(1898), 1, + [51061] = 5, + ACTIONS(3), 1, sym_comment, - ACTIONS(2308), 1, - anon_sym_LBRACE2, - ACTIONS(2334), 1, + ACTIONS(1841), 1, + anon_sym_and, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2141), 2, + anon_sym_COMMA, anon_sym_RBRACE, - ACTIONS(2336), 1, - aux_sym_format_specifier_token1, - STATE(1054), 1, - aux_sym_format_specifier_repeat1, - STATE(1222), 1, - sym_interpolation, - [51003] = 4, + [51078] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2338), 1, - anon_sym_COMMA, - STATE(1080), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2041), 3, + ACTIONS(2051), 1, + anon_sym_and, + ACTIONS(2053), 1, + anon_sym_or, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2363), 2, sym__newline, - anon_sym_from, sym__semicolon, - [51018] = 4, + [51095] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2340), 1, + ACTIONS(2365), 1, anon_sym_COMMA, - STATE(1080), 1, + STATE(1075), 1, aux_sym_expression_list_repeat1, - ACTIONS(2041), 3, + ACTIONS(2035), 3, sym__newline, anon_sym_from, sym__semicolon, - [51033] = 5, + [51110] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(1953), 2, - sym__newline, - sym__semicolon, - [51050] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2183), 1, - sym_identifier, - STATE(1119), 1, - sym_dotted_name, - STATE(1242), 1, - sym_aliased_import, - ACTIONS(2288), 2, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2367), 2, sym__newline, sym__semicolon, - [51067] = 4, + [51127] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2342), 1, - anon_sym_COMMA, - STATE(1073), 1, - aux_sym__collection_elements_repeat1, - ACTIONS(2294), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, + ACTIONS(2353), 1, + anon_sym_COLON, + ACTIONS(2369), 1, anon_sym_RBRACE, - [51082] = 5, + ACTIONS(2371), 1, + anon_sym_EQ, + ACTIONS(2373), 1, + sym_type_conversion, + STATE(1392), 1, + sym_format_specifier, + [51146] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(2344), 2, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2375), 2, sym__newline, sym__semicolon, - [51099] = 4, + [51163] = 6, + ACTIONS(1914), 1, + sym_comment, + ACTIONS(2345), 1, + anon_sym_LBRACE2, + ACTIONS(2377), 1, + anon_sym_RBRACE, + ACTIONS(2379), 1, + aux_sym_format_specifier_token1, + STATE(1080), 1, + aux_sym_format_specifier_repeat1, + STATE(1219), 1, + sym_interpolation, + [51182] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1845), 1, - anon_sym_COMMA, - STATE(1063), 1, - aux_sym__collection_elements_repeat1, - ACTIONS(1853), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - [51114] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2346), 2, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2381), 2, anon_sym_RPAREN, anon_sym_COMMA, - [51131] = 5, + [51199] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2348), 2, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2383), 2, anon_sym_RPAREN, anon_sym_COMMA, - [51148] = 5, + [51216] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(1827), 1, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(2065), 1, anon_sym_if, - ACTIONS(2350), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [51165] = 5, + ACTIONS(1940), 2, + sym__newline, + sym__semicolon, + [51233] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2352), 2, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2385), 2, anon_sym_RPAREN, anon_sym_COMMA, - [51182] = 6, + [51250] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2183), 1, + ACTIONS(2165), 1, sym_identifier, - ACTIONS(2354), 1, - anon_sym_LPAREN, - STATE(1049), 1, + STATE(1124), 1, sym_dotted_name, - STATE(1142), 1, + STATE(1268), 1, sym_aliased_import, - STATE(1330), 1, - sym__import_list, - [51201] = 6, + ACTIONS(2314), 2, + sym__newline, + sym__semicolon, + [51267] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2356), 1, - anon_sym_LPAREN, - ACTIONS(2358), 1, - anon_sym_COLON, - ACTIONS(2360), 1, - anon_sym_LBRACK, - STATE(1257), 1, - sym_type_parameters, - STATE(1415), 1, - sym_argument_list, - [51220] = 5, + ACTIONS(2387), 1, + anon_sym_COMMA, + STATE(1075), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2011), 3, + sym__newline, + anon_sym_from, + sym__semicolon, + [51282] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2362), 2, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2390), 2, anon_sym_COMMA, anon_sym_RBRACK, - [51237] = 4, + [51299] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2366), 1, - anon_sym_COMMA, - STATE(1073), 1, - aux_sym__collection_elements_repeat1, - ACTIONS(2364), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - [51252] = 6, + ACTIONS(2325), 1, + anon_sym_LPAREN, + ACTIONS(2329), 1, + anon_sym_LBRACK, + ACTIONS(2392), 1, + anon_sym_COLON, + STATE(1260), 1, + sym_type_parameters, + STATE(1414), 1, + sym_argument_list, + [51318] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2312), 1, + ACTIONS(2259), 5, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, anon_sym_COLON, - ACTIONS(2369), 1, - anon_sym_RBRACE, - ACTIONS(2371), 1, - anon_sym_EQ, - ACTIONS(2373), 1, - sym_type_conversion, - STATE(1456), 1, - sym_format_specifier, - [51271] = 5, + anon_sym_RBRACK, + [51329] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2183), 1, - sym_identifier, - STATE(1119), 1, - sym_dotted_name, - STATE(1242), 1, - sym_aliased_import, - ACTIONS(2375), 2, + ACTIONS(2394), 1, + anon_sym_COMMA, + STATE(1075), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2035), 3, sym__newline, + anon_sym_from, sym__semicolon, - [51288] = 5, - ACTIONS(3), 1, + [51344] = 6, + ACTIONS(1914), 1, sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(2377), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [51305] = 2, + ACTIONS(2396), 1, + anon_sym_RBRACE, + ACTIONS(2398), 1, + anon_sym_LBRACE2, + ACTIONS(2401), 1, + aux_sym_format_specifier_token1, + STATE(1080), 1, + aux_sym_format_specifier_repeat1, + STATE(1219), 1, + sym_interpolation, + [51363] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2379), 5, - anon_sym_RPAREN, + ACTIONS(1843), 1, anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, + STATE(1059), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(1853), 3, + anon_sym_RPAREN, anon_sym_RBRACK, - [51316] = 5, + anon_sym_RBRACE, + [51378] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(2013), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(2381), 2, - sym__newline, - sym__semicolon, - [51333] = 5, + ACTIONS(2404), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [51395] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(2051), 1, anon_sym_and, - ACTIONS(1827), 1, + ACTIONS(2053), 1, anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(2065), 1, anon_sym_if, - ACTIONS(2383), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [51350] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2385), 1, - anon_sym_COMMA, - STATE(1080), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2032), 3, + ACTIONS(2406), 2, sym__newline, - anon_sym_from, sym__semicolon, - [51365] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2356), 1, - anon_sym_LPAREN, - ACTIONS(2360), 1, - anon_sym_LBRACK, - ACTIONS(2388), 1, - anon_sym_COLON, - STATE(1181), 1, - sym_type_parameters, - STATE(1365), 1, - sym_argument_list, - [51384] = 2, + [51412] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2242), 5, - anon_sym_RPAREN, + ACTIONS(2300), 1, + anon_sym_EQ, + STATE(1312), 1, + sym__type_param_default, + ACTIONS(2408), 2, anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, anon_sym_RBRACK, - [51395] = 5, + [51426] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1991), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(2013), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2015), 1, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(2390), 2, - sym__newline, - sym__semicolon, - [51412] = 4, + ACTIONS(2410), 1, + anon_sym_COLON, + [51442] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2392), 1, + ACTIONS(2412), 1, anon_sym_case, - STATE(516), 1, + STATE(558), 1, sym_cases, - STATE(328), 2, + STATE(332), 2, sym_case_block, aux_sym_cases_repeat1, - [51426] = 5, + [51456] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2412), 1, + anon_sym_case, + STATE(463), 1, + sym_cases, + STATE(332), 2, + sym_case_block, + aux_sym_cases_repeat1, + [51470] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2353), 1, + anon_sym_COLON, + ACTIONS(2414), 1, + anon_sym_RBRACE, + ACTIONS(2416), 1, + sym_type_conversion, + STATE(1424), 1, + sym_format_specifier, + [51486] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(2418), 1, + anon_sym_COLON, + [51502] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1841), 1, + anon_sym_and, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2394), 1, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2420), 1, anon_sym_else, - [51442] = 4, + [51518] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2101), 1, + ACTIONS(2353), 1, + anon_sym_COLON, + ACTIONS(2422), 1, + anon_sym_RBRACE, + ACTIONS(2424), 1, + sym_type_conversion, + STATE(1413), 1, + sym_format_specifier, + [51534] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2426), 1, anon_sym_COMMA, - STATE(1137), 1, + STATE(1092), 1, aux_sym_assert_statement_repeat1, - ACTIONS(2396), 2, + ACTIONS(2223), 2, + sym__newline, + sym__semicolon, + [51548] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2143), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_RBRACE, + [51558] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2429), 1, + sym_identifier, + STATE(1110), 1, + sym_dotted_name, + STATE(1163), 1, + sym_aliased_import, + STATE(1478), 1, + sym__import_list, + [51574] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2431), 1, + anon_sym_COMMA, + STATE(1127), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2433), 2, sym__newline, sym__semicolon, - [51456] = 5, + [51588] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2398), 1, - anon_sym_else, - [51472] = 2, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2435), 1, + anon_sym_COLON, + [51604] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1916), 4, - sym__newline, - anon_sym_from, + ACTIONS(2437), 1, anon_sym_COMMA, + STATE(1127), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2439), 2, + sym__newline, sym__semicolon, - [51482] = 4, + [51618] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2101), 1, + ACTIONS(2133), 1, anon_sym_COMMA, - STATE(1137), 1, + STATE(1092), 1, aux_sym_assert_statement_repeat1, - ACTIONS(2400), 2, + ACTIONS(2441), 2, + sym__newline, + sym__semicolon, + [51632] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2443), 1, + anon_sym_COMMA, + STATE(1111), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2445), 2, sym__newline, sym__semicolon, - [51496] = 5, + [51646] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2360), 1, + ACTIONS(2329), 1, anon_sym_LBRACK, - ACTIONS(2402), 1, + ACTIONS(2447), 1, anon_sym_LPAREN, - STATE(1323), 1, - sym_type_parameters, - STATE(1324), 1, + STATE(1302), 1, sym_parameters, - [51512] = 5, + STATE(1303), 1, + sym_type_parameters, + [51662] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2288), 1, - anon_sym_RPAREN, - ACTIONS(2404), 1, - sym_identifier, - STATE(1212), 1, - sym_dotted_name, - STATE(1306), 1, - sym_aliased_import, - [51528] = 4, + ACTIONS(305), 1, + sym__string_start, + ACTIONS(1904), 1, + anon_sym_COLON, + STATE(566), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + [51676] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2406), 1, + ACTIONS(2451), 1, anon_sym_COMMA, - STATE(1116), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2408), 2, - sym__newline, - sym__semicolon, - [51542] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(2410), 1, + STATE(1102), 1, + aux_sym_with_clause_repeat1, + ACTIONS(2449), 2, + anon_sym_RPAREN, anon_sym_COLON, - [51558] = 4, + [51690] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2226), 1, + ACTIONS(2300), 1, anon_sym_EQ, - STATE(1336), 1, + STATE(1313), 1, sym__type_param_default, - ACTIONS(2412), 2, + ACTIONS(2454), 2, anon_sym_COMMA, anon_sym_RBRACK, - [51572] = 5, + [51704] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2414), 1, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2456), 1, anon_sym_COLON, - [51588] = 5, + [51720] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2288), 1, - anon_sym_RPAREN, - ACTIONS(2404), 1, - sym_identifier, - STATE(1212), 1, - sym_dotted_name, - STATE(1306), 1, - sym_aliased_import, - [51604] = 4, + ACTIONS(2458), 1, + anon_sym_case, + STATE(485), 1, + sym_cases, + STATE(315), 2, + sym_case_block, + aux_sym_cases_repeat1, + [51734] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2392), 1, + ACTIONS(2458), 1, anon_sym_case, - STATE(468), 1, + STATE(530), 1, sym_cases, - STATE(328), 2, + STATE(315), 2, sym_case_block, aux_sym_cases_repeat1, - [51618] = 5, + [51748] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(2416), 1, - anon_sym_COLON, - [51634] = 2, + ACTIONS(2460), 1, + anon_sym_COMMA, + STATE(1126), 1, + aux_sym__import_list_repeat1, + ACTIONS(2462), 2, + sym__newline, + sym__semicolon, + [51762] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2418), 4, - anon_sym_async, - anon_sym_def, - anon_sym_class, - anon_sym_AT, - [51644] = 4, + ACTIONS(2466), 1, + anon_sym_DOT, + STATE(1138), 1, + aux_sym_import_prefix_repeat1, + ACTIONS(2464), 2, + anon_sym_import, + sym_identifier, + [51776] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2422), 1, - anon_sym_COLON, - ACTIONS(2424), 1, + ACTIONS(2300), 1, anon_sym_EQ, - ACTIONS(2420), 2, - anon_sym_RPAREN, + STATE(1345), 1, + sym__type_param_default, + ACTIONS(2468), 2, anon_sym_COMMA, - [51658] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(2426), 1, - anon_sym_COLON, - [51674] = 5, + anon_sym_RBRACK, + [51790] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2360), 1, - anon_sym_LBRACK, - ACTIONS(2402), 1, - anon_sym_LPAREN, - STATE(1342), 1, - sym_parameters, - STATE(1343), 1, - sym_type_parameters, - [51690] = 4, + ACTIONS(2337), 1, + anon_sym_RPAREN, + ACTIONS(2470), 1, + anon_sym_COMMA, + ACTIONS(2472), 1, + anon_sym_as, + STATE(1164), 1, + aux_sym__import_list_repeat1, + [51806] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2428), 1, + ACTIONS(2443), 1, anon_sym_COMMA, - STATE(1135), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2430), 2, + STATE(1144), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2474), 2, sym__newline, sym__semicolon, - [51704] = 4, + [51820] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2432), 1, + ACTIONS(2443), 1, anon_sym_COMMA, - STATE(1135), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2434), 2, + STATE(1144), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2476), 2, sym__newline, sym__semicolon, - [51718] = 4, + [51834] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2436), 1, - anon_sym_case, - STATE(499), 1, - sym_cases, - STATE(335), 2, - sym_case_block, - aux_sym_cases_repeat1, - [51732] = 4, + ACTIONS(2478), 4, + anon_sym_async, + anon_sym_def, + anon_sym_class, + anon_sym_AT, + [51844] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2436), 1, - anon_sym_case, - STATE(498), 1, - sym_cases, - STATE(335), 2, - sym_case_block, - aux_sym_cases_repeat1, - [51746] = 5, + ACTIONS(2179), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_EQ, + [51854] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2438), 1, - anon_sym_else, - [51762] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, + ACTIONS(1871), 1, anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(2440), 1, + ACTIONS(2480), 1, anon_sym_COLON, - [51778] = 5, + [51870] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2302), 1, - anon_sym_RPAREN, - ACTIONS(2442), 1, + ACTIONS(2133), 1, anon_sym_COMMA, - ACTIONS(2444), 1, - anon_sym_as, - STATE(1153), 1, + STATE(1092), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(2482), 2, + sym__newline, + sym__semicolon, + [51884] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2333), 1, + anon_sym_COMMA, + STATE(1133), 1, aux_sym__import_list_repeat1, - [51794] = 5, + ACTIONS(2337), 2, + sym__newline, + sym__semicolon, + [51898] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(2446), 1, - anon_sym_COLON, - [51810] = 5, + ACTIONS(2484), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_RBRACE, + [51908] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2312), 1, - anon_sym_COLON, - ACTIONS(2448), 1, + ACTIONS(2486), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, anon_sym_RBRACE, - ACTIONS(2450), 1, - sym_type_conversion, - STATE(1454), 1, - sym_format_specifier, - [51826] = 4, + [51918] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2454), 1, + ACTIONS(2490), 1, anon_sym_COMMA, - STATE(1118), 1, + STATE(1151), 1, aux_sym__patterns_repeat1, - ACTIONS(2452), 2, + ACTIONS(2488), 2, anon_sym_RPAREN, anon_sym_RBRACK, - [51840] = 4, + [51932] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2226), 1, - anon_sym_EQ, - STATE(1337), 1, - sym__type_param_default, - ACTIONS(2456), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [51854] = 4, + ACTIONS(2051), 1, + anon_sym_and, + ACTIONS(2053), 1, + anon_sym_or, + ACTIONS(2065), 1, + anon_sym_if, + ACTIONS(2492), 1, + sym__newline, + [51948] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2458), 1, + ACTIONS(2443), 1, anon_sym_COMMA, - STATE(1104), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2460), 2, + STATE(1112), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2494), 2, sym__newline, sym__semicolon, - [51868] = 2, + [51962] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2163), 4, - anon_sym_RPAREN, - anon_sym_COMMA, + ACTIONS(1841), 1, + anon_sym_and, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2496), 1, anon_sym_COLON, - anon_sym_EQ, - [51878] = 4, + [51978] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2406), 1, - anon_sym_COMMA, - STATE(1125), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2462), 2, + ACTIONS(2335), 1, + anon_sym_as, + ACTIONS(2498), 3, sym__newline, + anon_sym_COMMA, sym__semicolon, - [51892] = 5, + [51990] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2312), 1, - anon_sym_COLON, - ACTIONS(2464), 1, - anon_sym_RBRACE, - ACTIONS(2466), 1, - sym_type_conversion, - STATE(1430), 1, - sym_format_specifier, - [51908] = 4, + ACTIONS(1841), 1, + anon_sym_and, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2500), 1, + anon_sym_else, + [52006] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2470), 1, + ACTIONS(2502), 1, anon_sym_COMMA, - STATE(832), 1, - aux_sym__patterns_repeat1, - ACTIONS(2468), 2, - anon_sym_RPAREN, - anon_sym_RBRACK, - [51922] = 3, + STATE(1126), 1, + aux_sym__import_list_repeat1, + ACTIONS(2505), 2, + sym__newline, + sym__semicolon, + [52020] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2300), 1, - anon_sym_as, - ACTIONS(2472), 3, - sym__newline, + ACTIONS(2507), 1, anon_sym_COMMA, + STATE(1127), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2510), 2, + sym__newline, sym__semicolon, - [51934] = 4, + [52034] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2474), 1, - anon_sym_COMMA, - STATE(1120), 1, - aux_sym__import_list_repeat1, - ACTIONS(2477), 2, + ACTIONS(1948), 4, sym__newline, + anon_sym_from, + anon_sym_COMMA, sym__semicolon, - [51948] = 5, + [52044] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2404), 1, + ACTIONS(2314), 1, + anon_sym_RPAREN, + ACTIONS(2429), 1, sym_identifier, - STATE(1109), 1, + STATE(1185), 1, sym_dotted_name, - STATE(1231), 1, + STATE(1322), 1, sym_aliased_import, - STATE(1432), 1, - sym__import_list, - [51964] = 4, + [52060] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2481), 1, - anon_sym_DOT, - STATE(1122), 1, - aux_sym_import_prefix_repeat1, - ACTIONS(2479), 2, - anon_sym_import, - sym_identifier, - [51978] = 5, + ACTIONS(2329), 1, + anon_sym_LBRACK, + ACTIONS(2447), 1, + anon_sym_LPAREN, + STATE(1288), 1, + sym_parameters, + STATE(1289), 1, + sym_type_parameters, + [52076] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2404), 1, + ACTIONS(2429), 1, sym_identifier, - STATE(1109), 1, + STATE(1110), 1, sym_dotted_name, - STATE(1231), 1, + STATE(1163), 1, sym_aliased_import, - STATE(1436), 1, + STATE(1454), 1, sym__import_list, - [51994] = 4, + [52092] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2486), 1, - anon_sym_DOT, - STATE(1122), 1, - aux_sym_import_prefix_repeat1, - ACTIONS(2484), 2, - anon_sym_import, - sym_identifier, - [52008] = 4, + ACTIONS(1841), 1, + anon_sym_and, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2512), 1, + anon_sym_else, + [52108] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2488), 1, + ACTIONS(2514), 1, anon_sym_COMMA, - STATE(1125), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2491), 2, + STATE(1126), 1, + aux_sym__import_list_repeat1, + ACTIONS(2462), 2, sym__newline, sym__semicolon, - [52022] = 4, + [52122] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2493), 1, - anon_sym_COMMA, - STATE(1120), 1, - aux_sym__import_list_repeat1, - ACTIONS(2495), 2, - sym__newline, - sym__semicolon, - [52036] = 4, + ACTIONS(1841), 1, + anon_sym_and, + ACTIONS(1869), 1, + anon_sym_if, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2516), 1, + anon_sym_COLON, + [52138] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2406), 1, - anon_sym_COMMA, - STATE(1125), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2497), 2, - sym__newline, - sym__semicolon, - [52050] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2499), 1, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2518), 1, anon_sym_COLON, - [52066] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2501), 4, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_RBRACE, - [52076] = 2, + [52154] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2503), 4, + ACTIONS(2522), 1, + anon_sym_COLON, + ACTIONS(2524), 1, + anon_sym_EQ, + ACTIONS(2520), 2, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_RBRACE, - [52086] = 5, + [52168] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2375), 1, + ACTIONS(2314), 1, anon_sym_RPAREN, - ACTIONS(2404), 1, + ACTIONS(2429), 1, sym_identifier, - STATE(1212), 1, + STATE(1185), 1, sym_dotted_name, - STATE(1306), 1, + STATE(1322), 1, sym_aliased_import, - [52102] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2505), 1, - anon_sym_COMMA, - STATE(1120), 1, - aux_sym__import_list_repeat1, - ACTIONS(2495), 2, - sym__newline, - sym__semicolon, - [52116] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2189), 4, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_RBRACE, - [52126] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(299), 1, - sym__string_start, - ACTIONS(1886), 1, - anon_sym_COLON, - STATE(565), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - [52140] = 4, + [52184] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2507), 1, - anon_sym_COMMA, - STATE(1135), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2510), 2, - sym__newline, - sym__semicolon, - [52154] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2406), 1, - anon_sym_COMMA, - STATE(1127), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2512), 2, - sym__newline, - sym__semicolon, - [52168] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2514), 1, - anon_sym_COMMA, - STATE(1137), 1, - aux_sym_assert_statement_repeat1, - ACTIONS(2210), 2, - sym__newline, - sym__semicolon, - [52182] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1825), 1, - anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, - anon_sym_if, - ACTIONS(2517), 1, - anon_sym_COLON, + ACTIONS(2528), 1, + anon_sym_DOT, + STATE(1138), 1, + aux_sym_import_prefix_repeat1, + ACTIONS(2526), 2, + anon_sym_import, + sym_identifier, [52198] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2519), 1, + ACTIONS(2531), 1, anon_sym_COMMA, - STATE(1028), 1, + STATE(1031), 1, aux_sym_open_sequence_match_pattern_repeat1, - ACTIONS(1671), 2, + ACTIONS(1687), 2, anon_sym_if, anon_sym_COLON, [52212] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2521), 1, - anon_sym_else, - [52228] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2360), 1, - anon_sym_LBRACK, - ACTIONS(2402), 1, - anon_sym_LPAREN, - STATE(1294), 1, - sym_type_parameters, - STATE(1312), 1, - sym_parameters, - [52244] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2298), 1, - anon_sym_COMMA, - STATE(1132), 1, - aux_sym__import_list_repeat1, - ACTIONS(2302), 2, - sym__newline, - sym__semicolon, - [52258] = 4, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2533), 1, + anon_sym_COLON, + [52228] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2525), 1, - anon_sym_COMMA, - STATE(1143), 1, - aux_sym_with_clause_repeat1, - ACTIONS(2523), 2, + ACTIONS(2537), 1, + anon_sym_EQ, + ACTIONS(2535), 3, anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_COLON, - [52272] = 5, + [52240] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2528), 1, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2539), 1, anon_sym_COLON, - [52288] = 5, + [52256] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2530), 1, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2541), 1, anon_sym_COLON, - [52304] = 5, + [52272] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2360), 1, + ACTIONS(2543), 1, + anon_sym_COMMA, + STATE(1144), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2546), 2, + sym__newline, + sym__semicolon, + [52286] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2329), 1, anon_sym_LBRACK, - ACTIONS(2402), 1, + ACTIONS(2447), 1, anon_sym_LPAREN, - STATE(1296), 1, - sym_type_parameters, - STATE(1315), 1, + STATE(1328), 1, sym_parameters, - [52320] = 4, + STATE(1346), 1, + sym_type_parameters, + [52302] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2226), 1, - anon_sym_EQ, - STATE(1283), 1, - sym__type_param_default, - ACTIONS(2532), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [52334] = 5, + ACTIONS(2329), 1, + anon_sym_LBRACK, + ACTIONS(2447), 1, + anon_sym_LPAREN, + STATE(1329), 1, + sym_parameters, + STATE(1348), 1, + sym_type_parameters, + [52318] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2534), 1, - anon_sym_COLON, - [52350] = 5, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2548), 1, + anon_sym_else, + [52334] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1825), 1, + ACTIONS(1841), 1, anon_sym_and, - ACTIONS(1827), 1, - anon_sym_or, - ACTIONS(1880), 1, + ACTIONS(1869), 1, anon_sym_if, - ACTIONS(2536), 1, + ACTIONS(1871), 1, + anon_sym_or, + ACTIONS(2550), 1, anon_sym_COLON, - [52366] = 5, + [52350] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2183), 1, - sym_identifier, - STATE(1049), 1, - sym_dotted_name, - STATE(1142), 1, - sym_aliased_import, - STATE(1322), 1, - sym__import_list, - [52382] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2540), 1, - anon_sym_EQ, - ACTIONS(2538), 3, - anon_sym_RPAREN, + ACTIONS(2552), 1, anon_sym_COMMA, - anon_sym_COLON, - [52394] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1991), 1, - anon_sym_and, - ACTIONS(2013), 1, - anon_sym_if, - ACTIONS(2015), 1, - anon_sym_or, - ACTIONS(2542), 1, + STATE(1095), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2554), 2, sym__newline, - [52410] = 4, + sym__semicolon, + [52364] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2495), 1, + ACTIONS(2316), 1, anon_sym_RPAREN, - ACTIONS(2544), 1, - anon_sym_COMMA, - STATE(1217), 1, - aux_sym__import_list_repeat1, - [52423] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2546), 1, + ACTIONS(2429), 1, sym_identifier, - ACTIONS(2548), 1, - anon_sym_RPAREN, - STATE(1311), 1, - sym_match_keyword_pattern, - [52436] = 4, + STATE(1185), 1, + sym_dotted_name, + STATE(1322), 1, + sym_aliased_import, + [52380] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2546), 1, - sym_identifier, - ACTIONS(2550), 1, + ACTIONS(2558), 1, + anon_sym_COMMA, + STATE(832), 1, + aux_sym__patterns_repeat1, + ACTIONS(2556), 2, anon_sym_RPAREN, - STATE(1311), 1, - sym_match_keyword_pattern, - [52449] = 4, + anon_sym_RBRACK, + [52394] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2183), 1, + ACTIONS(2165), 1, sym_identifier, - STATE(1119), 1, + STATE(1055), 1, sym_dotted_name, - STATE(1242), 1, + STATE(1117), 1, sym_aliased_import, - [52462] = 2, + STATE(1350), 1, + sym__import_list, + [52410] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2552), 3, - anon_sym_LPAREN, - anon_sym_COLON, + ACTIONS(2560), 1, anon_sym_EQ, - [52471] = 4, + ACTIONS(2562), 2, + sym__newline, + sym__semicolon, + [52421] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2554), 1, + ACTIONS(2564), 3, anon_sym_RPAREN, - ACTIONS(2556), 1, anon_sym_COMMA, - STATE(1208), 1, - aux_sym_match_class_pattern_repeat2, - [52484] = 4, + anon_sym_COLON, + [52430] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2554), 1, + ACTIONS(2566), 1, anon_sym_RPAREN, - ACTIONS(2558), 1, + ACTIONS(2568), 1, anon_sym_COMMA, - STATE(1201), 1, - aux_sym_match_class_pattern_repeat1, - [52497] = 4, + STATE(1246), 1, + aux_sym_argument_list_repeat1, + [52443] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1677), 1, + ACTIONS(1843), 1, + anon_sym_COMMA, + ACTIONS(1942), 1, anon_sym_RPAREN, - ACTIONS(2560), 1, + STATE(1274), 1, + aux_sym__collection_elements_repeat1, + [52456] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2462), 1, + anon_sym_RPAREN, + ACTIONS(2570), 1, anon_sym_COMMA, - STATE(1028), 1, - aux_sym_open_sequence_match_pattern_repeat1, - [52510] = 4, + STATE(1194), 1, + aux_sym__import_list_repeat1, + [52469] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2562), 1, + ACTIONS(2572), 1, sym__semicolon, - ACTIONS(2564), 1, + ACTIONS(2574), 1, sym__newline, - STATE(1270), 1, + STATE(1243), 1, aux_sym__simple_statements_repeat1, - [52523] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1377), 3, - sym__newline, - anon_sym_in, - sym__semicolon, - [52532] = 4, + [52482] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2566), 1, + ACTIONS(1944), 1, + anon_sym_RPAREN, + ACTIONS(1946), 1, anon_sym_COMMA, - ACTIONS(2568), 1, - anon_sym_RBRACE, - STATE(1268), 1, - aux_sym_dictionary_repeat1, - [52545] = 4, + STATE(1245), 1, + aux_sym_argument_list_repeat1, + [52495] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1788), 1, + ACTIONS(2576), 1, + anon_sym_RPAREN, + ACTIONS(2578), 1, anon_sym_COMMA, - ACTIONS(2570), 1, - anon_sym_in, - STATE(842), 1, - aux_sym__patterns_repeat1, - [52558] = 4, + STATE(1215), 1, + aux_sym_match_class_pattern_repeat2, + [52508] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2572), 1, + ACTIONS(2580), 3, anon_sym_RPAREN, - ACTIONS(2574), 1, anon_sym_COMMA, - STATE(1226), 1, - aux_sym_match_class_pattern_repeat2, - [52571] = 4, + anon_sym_COLON, + [52517] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(2576), 1, - anon_sym_COMMA, + anon_sym_RPAREN, ACTIONS(2578), 1, - anon_sym_RBRACE, - STATE(1268), 1, - aux_sym_dictionary_repeat1, - [52584] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2051), 1, - anon_sym_from, - ACTIONS(2055), 2, - sym__newline, - sym__semicolon, - [52595] = 3, + anon_sym_COMMA, + STATE(1207), 1, + aux_sym_match_class_pattern_repeat2, + [52530] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2580), 1, + ACTIONS(2337), 1, + anon_sym_RPAREN, + ACTIONS(2470), 1, anon_sym_COMMA, - ACTIONS(2582), 2, - anon_sym_if, - anon_sym_COLON, - [52606] = 2, + STATE(1157), 1, + aux_sym__import_list_repeat1, + [52543] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1365), 3, - sym__newline, - anon_sym_in, - sym__semicolon, - [52615] = 4, + ACTIONS(2462), 1, + anon_sym_RPAREN, + ACTIONS(2582), 1, + anon_sym_COMMA, + STATE(1194), 1, + aux_sym__import_list_repeat1, + [52556] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(2584), 1, - anon_sym_if, + anon_sym_RPAREN, ACTIONS(2586), 1, - anon_sym_COLON, - STATE(1356), 1, - sym_guard, - [52628] = 4, + anon_sym_COMMA, + STATE(1165), 1, + aux_sym__parameters_repeat1, + [52569] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2588), 1, + ACTIONS(1705), 1, anon_sym_RPAREN, - ACTIONS(2590), 1, + ACTIONS(2589), 1, anon_sym_COMMA, - STATE(1171), 1, - aux_sym_argument_list_repeat1, - [52641] = 4, + STATE(1160), 1, + aux_sym_match_class_pattern_repeat2, + [52582] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1685), 1, + ACTIONS(2591), 1, anon_sym_RPAREN, - ACTIONS(2546), 1, - sym_identifier, - STATE(1311), 1, - sym_match_keyword_pattern, - [52654] = 4, + ACTIONS(2593), 1, + anon_sym_COMMA, + STATE(1246), 1, + aux_sym_argument_list_repeat1, + [52595] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2593), 1, + ACTIONS(2524), 1, + anon_sym_EQ, + ACTIONS(2520), 2, anon_sym_COMMA, - ACTIONS(2595), 1, - anon_sym_RBRACE, - STATE(1266), 1, - aux_sym_match_mapping_pattern_repeat1, - [52667] = 4, + anon_sym_COLON, + [52606] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2495), 1, + ACTIONS(2595), 1, anon_sym_RPAREN, ACTIONS(2597), 1, anon_sym_COMMA, - STATE(1217), 1, - aux_sym__import_list_repeat1, - [52680] = 4, + STATE(1246), 1, + aux_sym_argument_list_repeat1, + [52619] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(2599), 1, - sym__semicolon, + anon_sym_RPAREN, ACTIONS(2601), 1, - sym__newline, - STATE(1198), 1, - aux_sym__simple_statements_repeat1, - [52693] = 4, + anon_sym_COMMA, + STATE(1246), 1, + aux_sym_argument_list_repeat1, + [52632] = 4, ACTIONS(3), 1, sym_comment, + ACTIONS(2353), 1, + anon_sym_COLON, ACTIONS(2603), 1, - sym_identifier, - ACTIONS(2605), 1, - sym_match_wildcard_pattern, - STATE(1077), 1, - sym_match_capture_pattern, - [52706] = 4, + anon_sym_RBRACE, + STATE(1466), 1, + sym_format_specifier, + [52645] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1845), 1, + ACTIONS(1798), 1, anon_sym_COMMA, - ACTIONS(1865), 1, - anon_sym_RPAREN, - STATE(1235), 1, - aux_sym__collection_elements_repeat1, - [52719] = 4, + ACTIONS(2605), 1, + anon_sym_in, + STATE(842), 1, + aux_sym__patterns_repeat1, + [52658] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2141), 1, - anon_sym_COMMA, - ACTIONS(2143), 1, - anon_sym_RBRACE, - STATE(1214), 1, - aux_sym_dictionary_repeat1, - [52732] = 4, + ACTIONS(2185), 1, + sym_identifier, + ACTIONS(2607), 1, + anon_sym_import, + STATE(1369), 1, + sym_dotted_name, + [52671] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2607), 1, + ACTIONS(2609), 1, anon_sym_COMMA, - ACTIONS(2610), 1, + ACTIONS(2612), 1, anon_sym_RBRACE, - STATE(1179), 1, + STATE(1174), 1, aux_sym_match_mapping_pattern_repeat1, - [52745] = 2, + [52684] = 3, + ACTIONS(1914), 1, + sym_comment, + ACTIONS(2244), 1, + anon_sym_RBRACE, + ACTIONS(2246), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [52695] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2612), 3, - anon_sym_LPAREN, - anon_sym_COLON, - anon_sym_EQ, - [52754] = 4, + ACTIONS(2429), 1, + sym_identifier, + STATE(1185), 1, + sym_dotted_name, + STATE(1322), 1, + sym_aliased_import, + [52708] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2356), 1, - anon_sym_LPAREN, + ACTIONS(1798), 1, + anon_sym_COMMA, ACTIONS(2614), 1, - anon_sym_COLON, - STATE(1412), 1, - sym_argument_list, - [52767] = 4, + anon_sym_in, + STATE(842), 1, + aux_sym__patterns_repeat1, + [52721] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2616), 1, + ACTIONS(2546), 3, + sym__newline, anon_sym_COMMA, + sym__semicolon, + [52730] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2616), 1, + anon_sym_RPAREN, ACTIONS(2618), 1, - anon_sym_RBRACK, - STATE(1202), 1, - aux_sym_open_sequence_match_pattern_repeat1, - [52780] = 4, + anon_sym_COMMA, + STATE(1257), 1, + aux_sym_with_clause_repeat1, + [52743] = 3, + ACTIONS(1914), 1, + sym_comment, + ACTIONS(2272), 1, + anon_sym_RBRACE, + ACTIONS(2274), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [52754] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(2620), 1, anon_sym_COMMA, ACTIONS(2622), 1, anon_sym_COLON, - STATE(1143), 1, + STATE(1102), 1, aux_sym_with_clause_repeat1, - [52793] = 3, + [52767] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2624), 1, - anon_sym_COLON, - ACTIONS(2420), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [52804] = 4, + ACTIONS(1381), 3, + sym__newline, + anon_sym_in, + sym__semicolon, + [52776] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2626), 1, + ACTIONS(1701), 1, anon_sym_RPAREN, - ACTIONS(2628), 1, + ACTIONS(2624), 1, anon_sym_COMMA, - STATE(1264), 1, - aux_sym_with_clause_repeat1, - [52817] = 4, + STATE(1186), 1, + aux_sym_match_class_pattern_repeat1, + [52789] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1788), 1, - anon_sym_COMMA, - ACTIONS(2630), 1, - anon_sym_in, - STATE(842), 1, - aux_sym__patterns_repeat1, - [52830] = 4, + ACTIONS(1701), 1, + anon_sym_RPAREN, + ACTIONS(2626), 1, + sym_identifier, + STATE(1325), 1, + sym_match_keyword_pattern, + [52802] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2632), 1, - sym__semicolon, - ACTIONS(2634), 1, - sym__newline, - STATE(1205), 1, - aux_sym__simple_statements_repeat1, - [52843] = 2, + ACTIONS(2472), 1, + anon_sym_as, + ACTIONS(2498), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [52813] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2491), 3, - sym__newline, + ACTIONS(2628), 1, + anon_sym_RPAREN, + ACTIONS(2630), 1, anon_sym_COMMA, - sym__semicolon, - [52852] = 4, + STATE(1186), 1, + aux_sym_match_class_pattern_repeat1, + [52826] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2636), 1, + ACTIONS(2633), 1, anon_sym_COMMA, - ACTIONS(2638), 1, + ACTIONS(2635), 1, anon_sym_RBRACK, - STATE(1228), 1, - aux_sym_type_parameters_repeat1, - [52865] = 2, + STATE(1214), 1, + aux_sym_index_expression_list_repeat1, + [52839] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1095), 3, - anon_sym_RPAREN, + ACTIONS(2637), 1, anon_sym_COMMA, - anon_sym_COLON, - [52874] = 4, + ACTIONS(2639), 1, + anon_sym_RBRACE, + STATE(1197), 1, + aux_sym_dictionary_repeat1, + [52852] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2584), 1, - anon_sym_if, - ACTIONS(2640), 1, + ACTIONS(2353), 1, anon_sym_COLON, - STATE(1433), 1, - sym_guard, - [52887] = 4, + ACTIONS(2414), 1, + anon_sym_RBRACE, + STATE(1424), 1, + sym_format_specifier, + [52865] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1845), 1, + ACTIONS(2641), 1, anon_sym_COMMA, - ACTIONS(1957), 1, - anon_sym_RPAREN, - STATE(1235), 1, - aux_sym__collection_elements_repeat1, - [52900] = 4, + ACTIONS(2643), 1, + anon_sym_RBRACE, + STATE(1197), 1, + aux_sym_dictionary_repeat1, + [52878] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2620), 1, - anon_sym_COMMA, - ACTIONS(2642), 1, + ACTIONS(2645), 3, + anon_sym_LPAREN, anon_sym_COLON, - STATE(1183), 1, - aux_sym_with_clause_repeat1, - [52913] = 4, + anon_sym_EQ, + [52887] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2312), 1, + ACTIONS(2584), 3, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_COLON, - ACTIONS(2644), 1, - anon_sym_RBRACE, - STATE(1378), 1, - sym_format_specifier, - [52926] = 4, + [52896] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2546), 1, - sym_identifier, - ACTIONS(2572), 1, - anon_sym_RPAREN, - STATE(1311), 1, - sym_match_keyword_pattern, - [52939] = 4, + ACTIONS(1393), 3, + sym__newline, + anon_sym_in, + sym__semicolon, + [52905] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2646), 1, + ACTIONS(2505), 1, + anon_sym_RPAREN, + ACTIONS(2647), 1, anon_sym_COMMA, - ACTIONS(2649), 1, - anon_sym_RBRACK, - STATE(1196), 1, - aux_sym_index_expression_list_repeat1, - [52952] = 4, + STATE(1194), 1, + aux_sym__import_list_repeat1, + [52918] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1810), 1, - anon_sym_COLON, - ACTIONS(2651), 1, + ACTIONS(2650), 1, anon_sym_COMMA, - STATE(1260), 1, + ACTIONS(2652), 1, + anon_sym_COLON, + STATE(1231), 1, aux_sym__parameters_repeat1, - [52965] = 4, + [52931] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(545), 1, - sym__newline, - ACTIONS(2653), 1, - sym__semicolon, - STATE(1200), 1, - aux_sym__simple_statements_repeat1, - [52978] = 4, + ACTIONS(2654), 1, + anon_sym_COMMA, + ACTIONS(2656), 1, + anon_sym_RBRACK, + STATE(1237), 1, + aux_sym_type_parameters_repeat1, + [52944] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2105), 1, + ACTIONS(2658), 1, anon_sym_COMMA, - ACTIONS(2107), 1, + ACTIONS(2661), 1, anon_sym_RBRACE, - STATE(1221), 1, + STATE(1197), 1, aux_sym_dictionary_repeat1, - [52991] = 4, + [52957] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2655), 1, - sym__semicolon, - ACTIONS(2658), 1, - sym__newline, - STATE(1200), 1, - aux_sym__simple_statements_repeat1, - [53004] = 4, + ACTIONS(2325), 1, + anon_sym_LPAREN, + ACTIONS(2663), 1, + anon_sym_COLON, + STATE(1357), 1, + sym_argument_list, + [52970] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1687), 1, + ACTIONS(1798), 1, + anon_sym_COMMA, + ACTIONS(2665), 1, + anon_sym_in, + STATE(842), 1, + aux_sym__patterns_repeat1, + [52983] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1154), 3, anon_sym_RPAREN, - ACTIONS(2660), 1, anon_sym_COMMA, - STATE(1272), 1, - aux_sym_match_class_pattern_repeat1, - [53017] = 4, + anon_sym_COLON, + [52992] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1677), 1, - anon_sym_RBRACK, - ACTIONS(2662), 1, + ACTIONS(2667), 1, anon_sym_COMMA, - STATE(1028), 1, + ACTIONS(2669), 1, + anon_sym_RBRACK, + STATE(1211), 1, aux_sym_open_sequence_match_pattern_repeat1, - [53030] = 4, + [53005] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2664), 1, + ACTIONS(2671), 1, anon_sym_RPAREN, - ACTIONS(2666), 1, + ACTIONS(2673), 1, anon_sym_COMMA, - STATE(1224), 1, + STATE(1273), 1, + aux_sym_argument_list_repeat1, + [53018] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2584), 1, + anon_sym_COLON, + ACTIONS(2675), 1, + anon_sym_COMMA, + STATE(1203), 1, aux_sym__parameters_repeat1, - [53043] = 4, + [53031] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1687), 1, + ACTIONS(2520), 3, anon_sym_RPAREN, - ACTIONS(2546), 1, - sym_identifier, - STATE(1311), 1, - sym_match_keyword_pattern, - [53056] = 4, + anon_sym_COMMA, + anon_sym_COLON, + [53040] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(547), 1, - sym__newline, - ACTIONS(2668), 1, - sym__semicolon, - STATE(1200), 1, - aux_sym__simple_statements_repeat1, - [53069] = 4, + ACTIONS(2626), 1, + sym_identifier, + ACTIONS(2678), 1, + anon_sym_RPAREN, + STATE(1325), 1, + sym_match_keyword_pattern, + [53053] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1829), 1, - anon_sym_DOT, - ACTIONS(1833), 1, + ACTIONS(2620), 1, + anon_sym_COMMA, + ACTIONS(2680), 1, anon_sym_COLON, - STATE(865), 1, - aux_sym_match_value_pattern_repeat1, - [53082] = 4, + STATE(1181), 1, + aux_sym_with_clause_repeat1, + [53066] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2109), 1, + ACTIONS(2678), 1, + anon_sym_RPAREN, + ACTIONS(2682), 1, anon_sym_COMMA, - ACTIONS(2111), 1, - anon_sym_RBRACE, - STATE(1166), 1, - aux_sym_dictionary_repeat1, - [53095] = 4, + STATE(1215), 1, + aux_sym_match_class_pattern_repeat2, + [53079] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1687), 1, + ACTIONS(1701), 1, anon_sym_RPAREN, - ACTIONS(2670), 1, + ACTIONS(2684), 1, anon_sym_COMMA, - STATE(1226), 1, + STATE(1215), 1, aux_sym_match_class_pattern_repeat2, - [53108] = 3, - ACTIONS(1898), 1, + [53092] = 2, + ACTIONS(3), 1, sym_comment, - ACTIONS(2272), 1, - anon_sym_RBRACE, - ACTIONS(2274), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [53119] = 2, + ACTIONS(2535), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + [53101] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2163), 3, - sym__newline, - anon_sym_EQ, - sym__semicolon, - [53128] = 3, + ACTIONS(1697), 1, + anon_sym_RPAREN, + ACTIONS(2686), 1, + anon_sym_COMMA, + STATE(1031), 1, + aux_sym_open_sequence_match_pattern_repeat1, + [53114] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2672), 1, - anon_sym_EQ, - ACTIONS(2674), 2, - sym__newline, - sym__semicolon, - [53139] = 3, + ACTIONS(1697), 1, + anon_sym_RBRACK, + ACTIONS(2688), 1, + anon_sym_COMMA, + STATE(1031), 1, + aux_sym_open_sequence_match_pattern_repeat1, + [53127] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2444), 1, - anon_sym_as, - ACTIONS(2472), 2, + ACTIONS(1859), 1, + anon_sym_DOT, + ACTIONS(1863), 1, + anon_sym_COLON, + STATE(865), 1, + aux_sym_match_value_pattern_repeat1, + [53140] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1705), 1, anon_sym_RPAREN, - anon_sym_COMMA, - [53150] = 4, + ACTIONS(2626), 1, + sym_identifier, + STATE(1325), 1, + sym_match_keyword_pattern, + [53153] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1788), 1, + ACTIONS(2690), 1, anon_sym_COMMA, - ACTIONS(2676), 1, - anon_sym_in, - STATE(842), 1, - aux_sym__patterns_repeat1, - [53163] = 4, + ACTIONS(2692), 1, + anon_sym_RBRACK, + STATE(1267), 1, + aux_sym_index_expression_list_repeat1, + [53166] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2678), 1, + ACTIONS(2694), 1, + anon_sym_RPAREN, + ACTIONS(2696), 1, anon_sym_COMMA, - ACTIONS(2680), 1, - anon_sym_RBRACE, - STATE(1268), 1, - aux_sym_dictionary_repeat1, - [53176] = 4, + STATE(1215), 1, + aux_sym_match_class_pattern_repeat2, + [53179] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2682), 1, + ACTIONS(1818), 1, + anon_sym_RBRACE, + ACTIONS(2699), 1, anon_sym_COMMA, - ACTIONS(2684), 1, + STATE(1174), 1, + aux_sym_match_mapping_pattern_repeat1, + [53192] = 3, + ACTIONS(1914), 1, + sym_comment, + ACTIONS(2288), 1, anon_sym_RBRACE, - STATE(1268), 1, - aux_sym_dictionary_repeat1, - [53189] = 4, + ACTIONS(2290), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [53203] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1845), 1, - anon_sym_COMMA, - ACTIONS(1945), 1, + ACTIONS(2349), 1, anon_sym_RPAREN, - STATE(1235), 1, + ACTIONS(2701), 1, + anon_sym_COMMA, + STATE(1051), 1, aux_sym__collection_elements_repeat1, - [53202] = 4, + [53216] = 3, + ACTIONS(1914), 1, + sym_comment, + ACTIONS(2703), 1, + anon_sym_RBRACE, + ACTIONS(2705), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [53227] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2477), 1, - anon_sym_RPAREN, - ACTIONS(2686), 1, - anon_sym_COMMA, - STATE(1217), 1, - aux_sym__import_list_repeat1, - [53215] = 4, + ACTIONS(2707), 1, + sym__semicolon, + ACTIONS(2709), 1, + sym__newline, + STATE(1227), 1, + aux_sym__simple_statements_repeat1, + [53240] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1941), 1, - anon_sym_RPAREN, - ACTIONS(1943), 1, + ACTIONS(1843), 1, anon_sym_COMMA, - STATE(1240), 1, - aux_sym_argument_list_repeat1, - [53228] = 4, + ACTIONS(1895), 1, + anon_sym_RPAREN, + STATE(1274), 1, + aux_sym__collection_elements_repeat1, + [53253] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1937), 1, - anon_sym_RPAREN, - ACTIONS(1939), 1, + ACTIONS(1843), 1, anon_sym_COMMA, - STATE(1263), 1, - aux_sym_argument_list_repeat1, - [53241] = 4, + ACTIONS(2711), 1, + anon_sym_RPAREN, + STATE(1059), 1, + aux_sym__collection_elements_repeat1, + [53266] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2689), 1, - anon_sym_RPAREN, - ACTIONS(2691), 1, + ACTIONS(1843), 1, anon_sym_COMMA, - STATE(1238), 1, - aux_sym_argument_list_repeat1, - [53254] = 4, + ACTIONS(2713), 1, + anon_sym_RPAREN, + STATE(1218), 1, + aux_sym__collection_elements_repeat1, + [53279] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2693), 1, + ACTIONS(2205), 1, anon_sym_COMMA, - ACTIONS(2695), 1, + ACTIONS(2207), 1, anon_sym_RBRACE, - STATE(1268), 1, + STATE(1229), 1, aux_sym_dictionary_repeat1, - [53267] = 3, - ACTIONS(1898), 1, + [53292] = 4, + ACTIONS(3), 1, sym_comment, - ACTIONS(2697), 1, + ACTIONS(2353), 1, + anon_sym_COLON, + ACTIONS(2422), 1, anon_sym_RBRACE, - ACTIONS(2699), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [53278] = 4, + STATE(1413), 1, + sym_format_specifier, + [53305] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2701), 1, - anon_sym_COMMA, - ACTIONS(2703), 1, - anon_sym_RBRACE, - STATE(1268), 1, - aux_sym_dictionary_repeat1, - [53291] = 4, + ACTIONS(2715), 1, + sym_identifier, + ACTIONS(2717), 1, + sym_match_wildcard_pattern, + STATE(1048), 1, + sym_match_capture_pattern, + [53318] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1810), 1, - anon_sym_RPAREN, - ACTIONS(2705), 1, - anon_sym_COMMA, - STATE(1245), 1, - aux_sym__parameters_repeat1, - [53304] = 4, + ACTIONS(551), 1, + sym__newline, + ACTIONS(2719), 1, + sym__semicolon, + STATE(1241), 1, + aux_sym__simple_statements_repeat1, + [53331] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2707), 1, - anon_sym_RPAREN, - ACTIONS(2709), 1, - anon_sym_COMMA, - STATE(1252), 1, - aux_sym_argument_list_repeat1, - [53317] = 4, + ACTIONS(2721), 1, + sym__semicolon, + ACTIONS(2723), 1, + sym__newline, + STATE(1251), 1, + aux_sym__simple_statements_repeat1, + [53344] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2711), 1, - anon_sym_RPAREN, - ACTIONS(2713), 1, + ACTIONS(2725), 1, anon_sym_COMMA, - STATE(1226), 1, - aux_sym_match_class_pattern_repeat2, - [53330] = 4, + ACTIONS(2727), 1, + anon_sym_RBRACE, + STATE(1197), 1, + aux_sym_dictionary_repeat1, + [53357] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2716), 1, + ACTIONS(2729), 1, anon_sym_COMMA, - ACTIONS(2718), 1, - anon_sym_RBRACK, - STATE(1233), 1, - aux_sym_index_expression_list_repeat1, - [53343] = 4, + ACTIONS(2731), 1, + anon_sym_RBRACE, + STATE(1197), 1, + aux_sym_dictionary_repeat1, + [53370] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2720), 1, + ACTIONS(1826), 1, + anon_sym_COLON, + ACTIONS(2733), 1, anon_sym_COMMA, - ACTIONS(2723), 1, - anon_sym_RBRACK, - STATE(1228), 1, - aux_sym_type_parameters_repeat1, - [53356] = 4, + STATE(1203), 1, + aux_sym__parameters_repeat1, + [53383] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1929), 1, - anon_sym_RPAREN, - ACTIONS(1931), 1, + ACTIONS(2735), 1, anon_sym_COMMA, - STATE(1247), 1, - aux_sym_argument_list_repeat1, - [53369] = 4, + ACTIONS(2737), 1, + anon_sym_RBRACE, + STATE(1216), 1, + aux_sym_match_mapping_pattern_repeat1, + [53396] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2725), 1, + ACTIONS(1954), 1, anon_sym_RPAREN, - ACTIONS(2727), 1, + ACTIONS(1956), 1, anon_sym_COMMA, - STATE(1249), 1, + STATE(1238), 1, aux_sym_argument_list_repeat1, - [53382] = 4, + [53409] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2302), 1, + ACTIONS(2739), 1, anon_sym_RPAREN, - ACTIONS(2442), 1, + ACTIONS(2741), 1, anon_sym_COMMA, - STATE(1174), 1, - aux_sym__import_list_repeat1, - [53395] = 4, + STATE(1239), 1, + aux_sym_argument_list_repeat1, + [53422] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2716), 1, - anon_sym_COMMA, - ACTIONS(2729), 1, - anon_sym_RBRACK, - STATE(1233), 1, - aux_sym_index_expression_list_repeat1, - [53408] = 4, + ACTIONS(2743), 3, + anon_sym_LPAREN, + anon_sym_COLON, + anon_sym_EQ, + [53431] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2731), 1, + ACTIONS(2633), 1, anon_sym_COMMA, - ACTIONS(2733), 1, + ACTIONS(2745), 1, anon_sym_RBRACK, - STATE(1196), 1, + STATE(1214), 1, aux_sym_index_expression_list_repeat1, - [53421] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2312), 1, - anon_sym_COLON, - ACTIONS(2448), 1, - anon_sym_RBRACE, - STATE(1454), 1, - sym_format_specifier, - [53434] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2294), 1, - anon_sym_RPAREN, - ACTIONS(2735), 1, - anon_sym_COMMA, - STATE(1073), 1, - aux_sym__collection_elements_repeat1, - [53447] = 4, + [53444] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2716), 1, + ACTIONS(2747), 1, anon_sym_COMMA, - ACTIONS(2737), 1, + ACTIONS(2750), 1, anon_sym_RBRACK, - STATE(1233), 1, - aux_sym_index_expression_list_repeat1, - [53460] = 4, + STATE(1237), 1, + aux_sym_type_parameters_repeat1, + [53457] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2739), 1, + ACTIONS(2752), 1, anon_sym_RPAREN, - ACTIONS(2741), 1, + ACTIONS(2754), 1, anon_sym_COMMA, - STATE(1171), 1, + STATE(1246), 1, aux_sym_argument_list_repeat1, - [53473] = 4, + [53470] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2743), 1, + ACTIONS(2756), 1, anon_sym_RPAREN, - ACTIONS(2745), 1, + ACTIONS(2758), 1, anon_sym_COMMA, - STATE(1171), 1, + STATE(1246), 1, aux_sym_argument_list_repeat1, - [53486] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2312), 1, - anon_sym_COLON, - ACTIONS(2464), 1, - anon_sym_RBRACE, - STATE(1430), 1, - sym_format_specifier, - [53499] = 4, + [53483] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2747), 1, + ACTIONS(2760), 1, anon_sym_RPAREN, - ACTIONS(2749), 1, + ACTIONS(2762), 1, anon_sym_COMMA, - STATE(1171), 1, + STATE(1246), 1, aux_sym_argument_list_repeat1, - [53512] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1788), 1, - anon_sym_COMMA, - ACTIONS(2751), 1, - anon_sym_in, - STATE(842), 1, - aux_sym__patterns_repeat1, - [53525] = 2, + [53496] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2472), 3, - sym__newline, - anon_sym_COMMA, + ACTIONS(2764), 1, sym__semicolon, - [53534] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1845), 1, - anon_sym_COMMA, - ACTIONS(2753), 1, - anon_sym_RPAREN, - STATE(1255), 1, - aux_sym__collection_elements_repeat1, - [53547] = 4, + ACTIONS(2767), 1, + sym__newline, + STATE(1241), 1, + aux_sym__simple_statements_repeat1, + [53509] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1845), 1, + ACTIONS(1843), 1, anon_sym_COMMA, - ACTIONS(2755), 1, + ACTIONS(1924), 1, anon_sym_RPAREN, - STATE(1063), 1, + STATE(1274), 1, aux_sym__collection_elements_repeat1, - [53560] = 4, + [53522] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2757), 1, - anon_sym_RPAREN, - ACTIONS(2759), 1, - anon_sym_COMMA, - STATE(1245), 1, - aux_sym__parameters_repeat1, - [53573] = 2, + ACTIONS(557), 1, + sym__newline, + ACTIONS(2769), 1, + sym__semicolon, + STATE(1241), 1, + aux_sym__simple_statements_repeat1, + [53535] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2762), 3, + ACTIONS(2771), 3, sym__newline, anon_sym_COMMA, sym__semicolon, - [53582] = 4, + [53544] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2764), 1, + ACTIONS(2773), 1, anon_sym_RPAREN, - ACTIONS(2766), 1, + ACTIONS(2775), 1, anon_sym_COMMA, - STATE(1171), 1, + STATE(1246), 1, aux_sym_argument_list_repeat1, - [53595] = 3, - ACTIONS(1898), 1, - sym_comment, - ACTIONS(2251), 1, - anon_sym_RBRACE, - ACTIONS(2253), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [53606] = 4, + [53557] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2768), 1, + ACTIONS(2777), 1, anon_sym_RPAREN, - ACTIONS(2770), 1, + ACTIONS(2779), 1, anon_sym_COMMA, - STATE(1171), 1, + STATE(1246), 1, aux_sym_argument_list_repeat1, - [53619] = 4, + [53570] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2772), 1, - anon_sym_RPAREN, - ACTIONS(2774), 1, + ACTIONS(2161), 1, anon_sym_COMMA, - STATE(1171), 1, - aux_sym_argument_list_repeat1, - [53632] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2312), 1, - anon_sym_COLON, - ACTIONS(2776), 1, + ACTIONS(2163), 1, anon_sym_RBRACE, - STATE(1450), 1, - sym_format_specifier, - [53645] = 4, + STATE(1263), 1, + aux_sym_dictionary_repeat1, + [53583] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2778), 1, + ACTIONS(2652), 1, anon_sym_RPAREN, - ACTIONS(2780), 1, + ACTIONS(2782), 1, anon_sym_COMMA, - STATE(1171), 1, - aux_sym_argument_list_repeat1, - [53658] = 4, + STATE(1266), 1, + aux_sym__parameters_repeat1, + [53596] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2782), 1, - anon_sym_RPAREN, + ACTIONS(2353), 1, + anon_sym_COLON, ACTIONS(2784), 1, - anon_sym_COMMA, - STATE(1171), 1, - aux_sym_argument_list_repeat1, - [53671] = 4, + anon_sym_RBRACE, + STATE(1440), 1, + sym_format_specifier, + [53609] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2157), 1, - sym_identifier, ACTIONS(2786), 1, - anon_sym_import, - STATE(1453), 1, - sym_dotted_name, - [53684] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2294), 1, - anon_sym_RPAREN, + anon_sym_if, ACTIONS(2788), 1, - anon_sym_COMMA, - STATE(1073), 1, - aux_sym__collection_elements_repeat1, - [53697] = 4, + anon_sym_COLON, + STATE(1441), 1, + sym_guard, + [53622] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1788), 1, - anon_sym_COMMA, + ACTIONS(549), 1, + sym__newline, ACTIONS(2790), 1, - anon_sym_in, - STATE(842), 1, - aux_sym__patterns_repeat1, - [53710] = 4, + sym__semicolon, + STATE(1241), 1, + aux_sym__simple_statements_repeat1, + [53635] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2356), 1, - anon_sym_LPAREN, + ACTIONS(2329), 1, + anon_sym_LBRACK, ACTIONS(2792), 1, - anon_sym_COLON, - STATE(1422), 1, - sym_argument_list, - [53723] = 3, - ACTIONS(1898), 1, + anon_sym_EQ, + STATE(1452), 1, + sym_type_parameters, + [53648] = 3, + ACTIONS(3), 1, sym_comment, - ACTIONS(2216), 1, - anon_sym_RBRACE, - ACTIONS(2218), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [53734] = 2, + ACTIONS(2083), 1, + anon_sym_from, + ACTIONS(2087), 2, + sym__newline, + sym__semicolon, + [53659] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2538), 3, - anon_sym_RPAREN, + ACTIONS(2794), 1, anon_sym_COMMA, + ACTIONS(2796), 2, + anon_sym_if, anon_sym_COLON, - [53743] = 4, + [53670] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2757), 1, + ACTIONS(2798), 1, anon_sym_COLON, - ACTIONS(2794), 1, + ACTIONS(2520), 2, + anon_sym_RPAREN, anon_sym_COMMA, - STATE(1260), 1, - aux_sym__parameters_repeat1, - [53756] = 2, + [53681] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2757), 3, + ACTIONS(2449), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, - [53765] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1788), 1, - anon_sym_COMMA, - ACTIONS(2797), 1, - anon_sym_in, - STATE(842), 1, - aux_sym__patterns_repeat1, - [53778] = 4, + [53690] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2799), 1, + ACTIONS(989), 1, anon_sym_RPAREN, - ACTIONS(2801), 1, + ACTIONS(2800), 1, anon_sym_COMMA, - STATE(1171), 1, - aux_sym_argument_list_repeat1, - [53791] = 4, + STATE(1102), 1, + aux_sym_with_clause_repeat1, + [53703] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(960), 1, - anon_sym_RPAREN, - ACTIONS(2803), 1, - anon_sym_COMMA, - STATE(1143), 1, - aux_sym_with_clause_repeat1, - [53804] = 2, + ACTIONS(2179), 3, + sym__newline, + anon_sym_EQ, + sym__semicolon, + [53712] = 3, + ACTIONS(1914), 1, + sym_comment, + ACTIONS(2284), 1, + anon_sym_RBRACE, + ACTIONS(2286), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [53723] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2523), 3, - anon_sym_RPAREN, - anon_sym_COMMA, + ACTIONS(2325), 1, + anon_sym_LPAREN, + ACTIONS(2802), 1, anon_sym_COLON, - [53813] = 4, + STATE(1421), 1, + sym_argument_list, + [53736] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1804), 1, - anon_sym_RBRACE, - ACTIONS(2805), 1, + ACTIONS(2181), 1, anon_sym_COMMA, - STATE(1179), 1, - aux_sym_match_mapping_pattern_repeat1, - [53826] = 2, + ACTIONS(2183), 1, + anon_sym_RBRACE, + STATE(1188), 1, + aux_sym_dictionary_repeat1, + [53749] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2807), 3, - anon_sym_RPAREN, - anon_sym_COMMA, + ACTIONS(2786), 1, + anon_sym_if, + ACTIONS(2804), 1, anon_sym_COLON, - [53835] = 4, + STATE(1432), 1, + sym_guard, + [53762] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2809), 1, + ACTIONS(2806), 1, anon_sym_COMMA, - ACTIONS(2812), 1, + ACTIONS(2808), 1, anon_sym_RBRACE, - STATE(1268), 1, + STATE(1197), 1, aux_sym_dictionary_repeat1, - [53848] = 4, + [53775] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1685), 1, - anon_sym_RPAREN, - ACTIONS(2814), 1, - anon_sym_COMMA, - STATE(1277), 1, - aux_sym_match_class_pattern_repeat2, - [53861] = 4, + ACTIONS(2810), 1, + anon_sym_in, + ACTIONS(2812), 2, + sym__newline, + sym__semicolon, + [53786] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(551), 1, - sym__newline, + ACTIONS(2814), 1, + anon_sym_COMMA, ACTIONS(2816), 1, - sym__semicolon, - STATE(1200), 1, - aux_sym__simple_statements_repeat1, - [53874] = 4, + anon_sym_RBRACE, + STATE(1197), 1, + aux_sym_dictionary_repeat1, + [53799] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2548), 1, + ACTIONS(1826), 1, anon_sym_RPAREN, ACTIONS(2818), 1, anon_sym_COMMA, STATE(1165), 1, - aux_sym_match_class_pattern_repeat2, - [53887] = 4, + aux_sym__parameters_repeat1, + [53812] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(2820), 1, + anon_sym_COMMA, + ACTIONS(2823), 1, + anon_sym_RBRACK, + STATE(1267), 1, + aux_sym_index_expression_list_repeat1, + [53825] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2498), 3, + sym__newline, + anon_sym_COMMA, + sym__semicolon, + [53834] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2825), 1, anon_sym_RPAREN, - ACTIONS(2822), 1, + ACTIONS(2827), 1, anon_sym_COMMA, - STATE(1272), 1, + STATE(1183), 1, aux_sym_match_class_pattern_repeat1, - [53900] = 2, + [53847] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2420), 3, + ACTIONS(2825), 1, anon_sym_RPAREN, + ACTIONS(2829), 1, anon_sym_COMMA, - anon_sym_COLON, - [53909] = 4, + STATE(1208), 1, + aux_sym_match_class_pattern_repeat2, + [53860] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2664), 1, - anon_sym_COLON, - ACTIONS(2825), 1, + ACTIONS(2165), 1, + sym_identifier, + STATE(1124), 1, + sym_dotted_name, + STATE(1268), 1, + sym_aliased_import, + [53873] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1798), 1, anon_sym_COMMA, - STATE(1197), 1, - aux_sym__parameters_repeat1, - [53922] = 3, + ACTIONS(2831), 1, + anon_sym_in, + STATE(842), 1, + aux_sym__patterns_repeat1, + [53886] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2424), 1, - anon_sym_EQ, - ACTIONS(2420), 2, + ACTIONS(2833), 1, + anon_sym_RPAREN, + ACTIONS(2835), 1, anon_sym_COMMA, - anon_sym_COLON, - [53933] = 2, + STATE(1246), 1, + aux_sym_argument_list_repeat1, + [53899] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2827), 3, + ACTIONS(2349), 1, anon_sym_RPAREN, + ACTIONS(2837), 1, anon_sym_COMMA, - anon_sym_COLON, - [53942] = 4, + STATE(1051), 1, + aux_sym__collection_elements_repeat1, + [53912] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2548), 1, + ACTIONS(1926), 1, anon_sym_RPAREN, - ACTIONS(2818), 1, + ACTIONS(1928), 1, anon_sym_COMMA, - STATE(1226), 1, - aux_sym_match_class_pattern_repeat2, - [53955] = 4, + STATE(1167), 1, + aux_sym_argument_list_repeat1, + [53925] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2636), 1, + ACTIONS(2839), 1, + anon_sym_RPAREN, + ACTIONS(2841), 1, anon_sym_COMMA, - ACTIONS(2829), 1, + STATE(1169), 1, + aux_sym_argument_list_repeat1, + [53938] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2654), 1, + anon_sym_COMMA, + ACTIONS(2843), 1, anon_sym_RBRACK, - STATE(1189), 1, + STATE(1196), 1, aux_sym_type_parameters_repeat1, - [53968] = 4, + [53951] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1798), 1, + anon_sym_COMMA, + ACTIONS(2845), 1, + anon_sym_in, + STATE(842), 1, + aux_sym__patterns_repeat1, + [53964] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1798), 1, + anon_sym_COMMA, + ACTIONS(2847), 1, + anon_sym_in, + STATE(842), 1, + aux_sym__patterns_repeat1, + [53977] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2404), 1, + ACTIONS(2633), 1, + anon_sym_COMMA, + ACTIONS(2849), 1, + anon_sym_RBRACK, + STATE(1214), 1, + aux_sym_index_expression_list_repeat1, + [53990] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2576), 1, + anon_sym_RPAREN, + ACTIONS(2626), 1, sym_identifier, - STATE(1212), 1, - sym_dotted_name, - STATE(1306), 1, - sym_aliased_import, - [53981] = 4, + STATE(1325), 1, + sym_match_keyword_pattern, + [54003] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2360), 1, - anon_sym_LBRACK, - ACTIONS(2831), 1, - anon_sym_EQ, - STATE(1441), 1, - sym_type_parameters, - [53994] = 3, + ACTIONS(2626), 1, + sym_identifier, + ACTIONS(2851), 1, + anon_sym_RPAREN, + STATE(1325), 1, + sym_match_keyword_pattern, + [54016] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2833), 1, - anon_sym_in, - ACTIONS(2835), 2, - sym__newline, - sym__semicolon, - [54005] = 3, - ACTIONS(1898), 1, + ACTIONS(2085), 1, + anon_sym_COMMA, + STATE(1065), 1, + aux_sym_expression_list_repeat1, + [54026] = 3, + ACTIONS(3), 1, sym_comment, - ACTIONS(2255), 1, - anon_sym_RBRACE, - ACTIONS(2257), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [54016] = 2, + ACTIONS(1867), 1, + anon_sym_COMMA, + STATE(933), 1, + aux_sym_expression_list_repeat1, + [54036] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2837), 2, + ACTIONS(2853), 2, anon_sym_COMMA, anon_sym_RBRACK, - [54024] = 3, + [54044] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1798), 1, + ACTIONS(888), 2, + anon_sym_except, + anon_sym_finally, + [54052] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1824), 1, anon_sym_RBRACE, - ACTIONS(2839), 1, + ACTIONS(2855), 1, anon_sym_COMMA, - [54034] = 3, + [54062] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2546), 1, - sym_identifier, - STATE(1311), 1, - sym_match_keyword_pattern, - [54044] = 2, + ACTIONS(2857), 1, + anon_sym_COLON, + ACTIONS(2859), 1, + anon_sym_DASH_GT, + [54072] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2841), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [54052] = 2, + ACTIONS(2447), 1, + anon_sym_LPAREN, + STATE(1299), 1, + sym_parameters, + [54082] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2346), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [54060] = 2, + ACTIONS(2861), 1, + sym_integer, + ACTIONS(2863), 1, + sym_float, + [54092] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2843), 2, + ACTIONS(2865), 2, sym__newline, sym__semicolon, - [54068] = 2, + [54100] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2845), 2, + ACTIONS(2867), 2, sym__newline, sym__semicolon, - [54076] = 2, + [54108] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2847), 2, + ACTIONS(2869), 2, sym__newline, sym__semicolon, - [54084] = 2, + [54116] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1876), 2, + ACTIONS(2871), 2, sym__newline, sym__semicolon, - [54092] = 2, + [54124] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2420), 2, + ACTIONS(2520), 2, anon_sym_COMMA, anon_sym_COLON, - [54100] = 2, + [54132] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2873), 1, + sym_integer, + ACTIONS(2875), 1, + sym_float, + [54142] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2849), 2, + ACTIONS(2877), 2, sym__newline, sym__semicolon, - [54108] = 3, + [54150] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2402), 1, - anon_sym_LPAREN, - STATE(1308), 1, - sym_parameters, - [54118] = 2, + ACTIONS(2177), 2, + sym__newline, + sym__semicolon, + [54158] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2851), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [54126] = 3, + ACTIONS(2879), 1, + anon_sym_COLON, + ACTIONS(2881), 1, + anon_sym_DASH_GT, + [54168] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2402), 1, - anon_sym_LPAREN, - STATE(1310), 1, - sym_parameters, - [54136] = 2, + ACTIONS(2883), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [54176] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(874), 2, - anon_sym_except, - anon_sym_finally, - [54144] = 2, + ACTIONS(2885), 2, + sym__newline, + sym__semicolon, + [54184] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2853), 2, + ACTIONS(2887), 1, anon_sym_COLON, + ACTIONS(2889), 1, anon_sym_DASH_GT, - [54152] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2855), 1, - anon_sym_COMMA, - STATE(1139), 1, - aux_sym_open_sequence_match_pattern_repeat1, - [54162] = 3, + [54194] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2053), 1, - anon_sym_COMMA, - STATE(1060), 1, - aux_sym_expression_list_repeat1, - [54172] = 2, + ACTIONS(2447), 1, + anon_sym_LPAREN, + STATE(1324), 1, + sym_parameters, + [54204] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2165), 2, + ACTIONS(2891), 2, sym__newline, sym__semicolon, - [54180] = 3, + [54212] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2857), 1, - sym_integer, - ACTIONS(2859), 1, - sym_float, - [54190] = 2, + ACTIONS(2893), 2, + sym__newline, + sym__semicolon, + [54220] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2861), 2, + ACTIONS(2628), 2, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_RBRACK, - [54198] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(896), 2, - anon_sym_except, - anon_sym_finally, - [54206] = 3, + [54228] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2863), 1, + ACTIONS(2895), 2, anon_sym_COLON, - ACTIONS(2865), 1, anon_sym_DASH_GT, - [54216] = 2, + [54236] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2472), 2, - anon_sym_RPAREN, + ACTIONS(2897), 2, anon_sym_COMMA, - [54224] = 2, + anon_sym_RBRACE, + [54244] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2762), 2, - anon_sym_RPAREN, + ACTIONS(2794), 1, anon_sym_COMMA, - [54232] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2867), 1, - anon_sym_COLON, - ACTIONS(2869), 1, - anon_sym_DASH_GT, - [54242] = 3, + ACTIONS(2899), 1, + anon_sym_RPAREN, + [54254] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2871), 1, + ACTIONS(2901), 1, anon_sym_COMMA, - STATE(1160), 1, + STATE(1210), 1, aux_sym_open_sequence_match_pattern_repeat1, - [54252] = 3, + [54264] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2873), 1, - anon_sym_COLON, - ACTIONS(2875), 1, - anon_sym_DASH_GT, - [54262] = 2, + ACTIONS(910), 2, + anon_sym_except, + anon_sym_finally, + [54272] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2711), 2, - anon_sym_RPAREN, + ACTIONS(2903), 2, anon_sym_COMMA, - [54270] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2877), 1, - anon_sym_COLON, - ACTIONS(2879), 1, - anon_sym_DASH_GT, + anon_sym_RBRACK, [54280] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(902), 2, - anon_sym_except, - anon_sym_finally, + ACTIONS(2905), 2, + anon_sym_COMMA, + anon_sym_RBRACK, [54288] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2881), 2, + ACTIONS(2385), 2, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_RBRACE, - [54296] = 3, + [54296] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2883), 1, - anon_sym_COLON, - ACTIONS(2885), 1, - anon_sym_DASH_GT, - [54306] = 2, + ACTIONS(1865), 2, + sym__newline, + sym__semicolon, + [54304] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(878), 2, - anon_sym_except, - anon_sym_finally, - [54314] = 2, + ACTIONS(2767), 2, + sym__newline, + sym__semicolon, + [54312] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2887), 2, - anon_sym_COLON, - anon_sym_DASH_GT, + ACTIONS(2907), 1, + anon_sym_COMMA, + STATE(1139), 1, + aux_sym_open_sequence_match_pattern_repeat1, [54322] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2820), 2, + ACTIONS(2909), 2, anon_sym_RPAREN, anon_sym_COMMA, - [54330] = 2, + [54330] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2889), 2, - anon_sym_COMMA, - anon_sym_RBRACE, - [54338] = 2, + ACTIONS(2911), 1, + sym_integer, + ACTIONS(2913), 1, + sym_float, + [54340] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2891), 2, - anon_sym_RPAREN, + ACTIONS(2323), 2, anon_sym_COMMA, - [54346] = 2, + anon_sym_RBRACK, + [54348] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(906), 2, + ACTIONS(914), 2, anon_sym_except, anon_sym_finally, - [54354] = 2, + [54356] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2893), 2, - sym__newline, - sym__semicolon, - [54362] = 3, + ACTIONS(2498), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [54364] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2402), 1, - anon_sym_LPAREN, - STATE(1305), 1, - sym_parameters, - [54372] = 3, + ACTIONS(2737), 1, + anon_sym_RBRACE, + ACTIONS(2915), 1, + anon_sym_COMMA, + [54374] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2895), 1, + ACTIONS(2917), 1, anon_sym_COLON, - ACTIONS(2897), 1, + ACTIONS(2919), 1, anon_sym_DASH_GT, - [54382] = 3, + [54384] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2899), 1, - sym_integer, - ACTIONS(2901), 1, - sym_float, + ACTIONS(2694), 2, + anon_sym_RPAREN, + anon_sym_COMMA, [54392] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2903), 2, - sym__newline, - sym__semicolon, + ACTIONS(2771), 2, + anon_sym_RPAREN, + anon_sym_COMMA, [54400] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2905), 2, + ACTIONS(2175), 2, sym__newline, sym__semicolon, - [54408] = 2, + [54408] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2907), 2, - sym__newline, - sym__semicolon, - [54416] = 3, + ACTIONS(2921), 1, + anon_sym_COLON, + ACTIONS(2923), 1, + anon_sym_DASH_GT, + [54418] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2925), 1, + anon_sym_COLON, + ACTIONS(2927), 1, + anon_sym_DASH_GT, + [54428] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2929), 1, + anon_sym_COLON, + ACTIONS(2931), 1, + anon_sym_DASH_GT, + [54438] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2933), 1, + anon_sym_COLON, + ACTIONS(2935), 1, + anon_sym_DASH_GT, + [54448] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1878), 1, + ACTIONS(2937), 2, anon_sym_COMMA, - STATE(950), 1, - aux_sym_expression_list_repeat1, - [54426] = 2, + anon_sym_RBRACK, + [54456] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2909), 2, - sym__newline, - sym__semicolon, - [54434] = 3, + ACTIONS(925), 2, + anon_sym_except, + anon_sym_finally, + [54464] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2911), 1, - anon_sym_COMMA, - ACTIONS(2913), 1, - anon_sym_RBRACE, - [54444] = 2, + ACTIONS(2939), 2, + anon_sym_COLON, + anon_sym_DASH_GT, + [54472] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2610), 2, + ACTIONS(2941), 2, anon_sym_COMMA, anon_sym_RBRACE, - [54452] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2915), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [54460] = 2, + [54480] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2917), 2, + ACTIONS(2612), 2, anon_sym_COMMA, - anon_sym_RBRACK, - [54468] = 2, + anon_sym_RBRACE, + [54488] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2350), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [54476] = 2, + ACTIONS(2943), 2, + sym__newline, + sym__semicolon, + [54496] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2919), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [54484] = 2, + ACTIONS(2945), 2, + sym__newline, + sym__semicolon, + [54504] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2921), 2, + ACTIONS(2947), 2, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_RBRACK, - [54492] = 2, + [54512] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2167), 2, + ACTIONS(2129), 2, sym__newline, sym__semicolon, - [54500] = 2, + [54520] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2923), 2, + ACTIONS(2949), 2, sym__newline, sym__semicolon, - [54508] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2925), 1, - sym_integer, - ACTIONS(2927), 1, - sym_float, - [54518] = 2, + [54528] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2191), 2, + ACTIONS(2951), 2, sym__newline, sym__semicolon, - [54526] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2929), 1, - anon_sym_COLON, - ACTIONS(2931), 1, - anon_sym_DASH_GT, [54536] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2402), 1, - anon_sym_LPAREN, - STATE(1349), 1, - sym_parameters, + ACTIONS(2953), 1, + sym_identifier, + STATE(1300), 1, + sym_match_capture_pattern, [54546] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2933), 2, - sym__newline, - sym__semicolon, - [54554] = 3, + ACTIONS(2955), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [54554] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2595), 1, - anon_sym_RBRACE, - ACTIONS(2935), 1, + ACTIONS(2957), 2, anon_sym_COMMA, - [54564] = 2, + anon_sym_RBRACK, + [54562] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2937), 2, - sym__newline, - sym__semicolon, - [54572] = 3, + ACTIONS(2447), 1, + anon_sym_LPAREN, + STATE(1330), 1, + sym_parameters, + [54572] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1829), 1, - anon_sym_DOT, - STATE(1206), 1, - aux_sym_match_value_pattern_repeat1, - [54582] = 3, + ACTIONS(2959), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [54580] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2939), 1, - sym_identifier, - STATE(1314), 1, - sym_match_capture_pattern, - [54592] = 3, + ACTIONS(2447), 1, + anon_sym_LPAREN, + STATE(1331), 1, + sym_parameters, + [54590] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2941), 1, - anon_sym_COLON, - ACTIONS(2943), 1, - anon_sym_DASH_GT, - [54602] = 2, + ACTIONS(906), 2, + anon_sym_except, + anon_sym_finally, + [54598] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2945), 2, - anon_sym_COMMA, - anon_sym_RBRACE, - [54610] = 3, + ACTIONS(2961), 2, + sym__newline, + sym__semicolon, + [54606] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2580), 1, + ACTIONS(2963), 1, anon_sym_COMMA, - ACTIONS(2947), 1, - anon_sym_RPAREN, - [54620] = 2, + ACTIONS(2965), 1, + anon_sym_RBRACE, + [54616] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2658), 2, - sym__newline, - sym__semicolon, - [54628] = 2, + ACTIONS(1859), 1, + anon_sym_DOT, + STATE(1212), 1, + aux_sym_match_value_pattern_repeat1, + [54626] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2949), 2, - sym__newline, - sym__semicolon, + ACTIONS(2626), 1, + sym_identifier, + STATE(1325), 1, + sym_match_keyword_pattern, [54636] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2951), 1, - anon_sym_RBRACE, + ACTIONS(2967), 1, + anon_sym_COLON, [54643] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2220), 1, - anon_sym_COLON, + ACTIONS(2969), 1, + anon_sym_RBRACE, [54650] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2953), 1, + ACTIONS(2971), 1, anon_sym_COLON, [54657] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2955), 1, - sym_identifier, + ACTIONS(2973), 1, + anon_sym_COLON, [54664] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2957), 1, + ACTIONS(2975), 1, anon_sym_COLON, [54671] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2959), 1, - anon_sym_RPAREN, + ACTIONS(2977), 1, + sym_identifier, [54678] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2961), 1, + ACTIONS(2979), 1, anon_sym_RBRACE, [54685] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2963), 1, - anon_sym_RBRACK, + ACTIONS(2981), 1, + anon_sym_in, [54692] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2965), 1, - anon_sym_RBRACE, + ACTIONS(2983), 1, + anon_sym_RPAREN, [54699] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2967), 1, - anon_sym_RBRACE, + ACTIONS(2985), 1, + anon_sym_RBRACK, [54706] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2969), 1, - anon_sym_COLON, + ACTIONS(2987), 1, + anon_sym_RPAREN, [54713] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2971), 1, + ACTIONS(2989), 1, anon_sym_COLON, [54720] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2973), 1, - sym_identifier, + ACTIONS(2991), 1, + anon_sym_RBRACE, [54727] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2975), 1, - anon_sym_in, + ACTIONS(2993), 1, + anon_sym_RBRACE, [54734] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2977), 1, - anon_sym_RPAREN, + ACTIONS(2995), 1, + anon_sym_RBRACE, [54741] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2979), 1, - anon_sym_RBRACK, + ACTIONS(2997), 1, + anon_sym_import, [54748] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2981), 1, - anon_sym_RPAREN, + ACTIONS(2999), 1, + anon_sym_COLON, [54755] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2983), 1, - anon_sym_RBRACE, + ACTIONS(3001), 1, + anon_sym_RPAREN, [54762] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2985), 1, - anon_sym_RBRACE, + ACTIONS(3003), 1, + anon_sym_import, [54769] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2987), 1, - anon_sym_COLON, + ACTIONS(3005), 1, + sym_identifier, [54776] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2989), 1, - anon_sym_RPAREN, + ACTIONS(3007), 1, + anon_sym_RBRACK, [54783] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2991), 1, - anon_sym_COLON, + ACTIONS(2849), 1, + anon_sym_RBRACK, [54790] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2993), 1, - anon_sym_RPAREN, + ACTIONS(2745), 1, + anon_sym_RBRACK, [54797] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2718), 1, - anon_sym_RBRACK, + ACTIONS(3009), 1, + anon_sym_RPAREN, [54804] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2995), 1, - anon_sym_RBRACE, + ACTIONS(3011), 1, + anon_sym_RPAREN, [54811] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2737), 1, - anon_sym_RBRACK, + ACTIONS(3013), 1, + sym_identifier, [54818] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2997), 1, - anon_sym_RPAREN, + ACTIONS(3015), 1, + sym_identifier, [54825] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2913), 1, - anon_sym_RBRACE, + ACTIONS(1002), 1, + anon_sym_STAR, [54832] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2999), 1, - anon_sym_RBRACE, + ACTIONS(3017), 1, + anon_sym_COLON, [54839] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3001), 1, - anon_sym_COLON, + ACTIONS(2422), 1, + anon_sym_RBRACE, [54846] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2464), 1, - anon_sym_RBRACE, + ACTIONS(3019), 1, + anon_sym_COLON, [54853] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3003), 1, - sym_identifier, + ACTIONS(3021), 1, + anon_sym_COLON, [54860] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3005), 1, - anon_sym_RBRACK, + ACTIONS(3023), 1, + anon_sym_LPAREN, [54867] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3007), 1, - anon_sym_import, + ACTIONS(2965), 1, + anon_sym_RBRACE, [54874] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2570), 1, - anon_sym_in, + ACTIONS(3025), 1, + anon_sym_import, [54881] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3009), 1, - anon_sym_RPAREN, + ACTIONS(2635), 1, + anon_sym_RBRACK, [54888] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3011), 1, - anon_sym_import, + ACTIONS(3027), 1, + ts_builtin_sym_end, [54895] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2790), 1, - anon_sym_in, + ACTIONS(3029), 1, + anon_sym_COLON, [54902] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3013), 1, - anon_sym_COLON, + ACTIONS(2414), 1, + anon_sym_RBRACE, [54909] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3015), 1, - anon_sym_RBRACK, + ACTIONS(3031), 1, + anon_sym_COLON, [54916] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3017), 1, - anon_sym_COLON, + ACTIONS(3033), 1, + anon_sym_in, [54923] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3019), 1, - anon_sym_in, + ACTIONS(3035), 1, + anon_sym_RPAREN, [54930] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2266), 1, - anon_sym_COLON, + ACTIONS(3037), 1, + anon_sym_in, [54937] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3021), 1, - anon_sym_COLON, + ACTIONS(3039), 1, + sym_identifier, [54944] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3023), 1, - anon_sym_RBRACE, + ACTIONS(2105), 1, + anon_sym_EQ, [54951] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3025), 1, - anon_sym_COLON, + ACTIONS(3041), 1, + anon_sym_RBRACE, [54958] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3027), 1, - anon_sym_COLON, + ACTIONS(3043), 1, + sym_identifier, [54965] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3029), 1, + ACTIONS(3045), 1, anon_sym_RBRACE, [54972] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3031), 1, + ACTIONS(3047), 1, anon_sym_COLON, [54979] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3033), 1, + ACTIONS(3049), 1, anon_sym_COLON, [54986] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3035), 1, + ACTIONS(2257), 1, anon_sym_COLON, [54993] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3037), 1, - anon_sym_COLON, + ACTIONS(3051), 1, + sym_identifier, [55000] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3039), 1, - anon_sym_RBRACK, + ACTIONS(2831), 1, + anon_sym_in, [55007] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3041), 1, + ACTIONS(3053), 1, anon_sym_RPAREN, [55014] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3043), 1, - sym_identifier, + ACTIONS(3055), 1, + anon_sym_COLON, [55021] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3045), 1, + ACTIONS(3057), 1, sym_identifier, [55028] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3047), 1, - sym_identifier, + ACTIONS(3059), 1, + anon_sym_COLON, [55035] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3049), 1, + ACTIONS(3061), 1, anon_sym_COLON, [55042] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3051), 1, + ACTIONS(3063), 1, anon_sym_COLON, [55049] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3053), 1, - anon_sym_RBRACK, + ACTIONS(2603), 1, + anon_sym_RBRACE, [55056] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3055), 1, - anon_sym_RBRACE, + ACTIONS(3065), 1, + anon_sym_COLON, [55063] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3057), 1, - anon_sym_COLON, + ACTIONS(3067), 1, + sym_identifier, [55070] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2676), 1, - anon_sym_in, + ACTIONS(2209), 1, + anon_sym_COLON, [55077] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3059), 1, - sym_identifier, + ACTIONS(3069), 1, + anon_sym_RBRACK, [55084] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2061), 1, - anon_sym_EQ, + ACTIONS(3071), 1, + sym_identifier, [55091] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1804), 1, - anon_sym_RBRACE, + ACTIONS(3073), 1, + anon_sym_COLON, [55098] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3061), 1, - anon_sym_COLON, + ACTIONS(3075), 1, + anon_sym_RPAREN, [55105] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3063), 1, - anon_sym_in, + ACTIONS(3077), 1, + anon_sym_COLON, [55112] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3065), 1, + ACTIONS(3079), 1, anon_sym_COLON, [55119] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3067), 1, + ACTIONS(2302), 1, anon_sym_COLON, [55126] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2249), 1, - anon_sym_COLON, + ACTIONS(2784), 1, + anon_sym_RBRACE, [55133] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3069), 1, - sym_identifier, + ACTIONS(3081), 1, + anon_sym_for, [55140] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3071), 1, - sym_identifier, + ACTIONS(3083), 1, + anon_sym_RBRACK, [55147] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3073), 1, - anon_sym_RPAREN, + ACTIONS(1818), 1, + anon_sym_RBRACE, [55154] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3075), 1, - anon_sym_RBRACK, + ACTIONS(3085), 1, + anon_sym_COLON, [55161] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3077), 1, - anon_sym_COLON, + ACTIONS(2605), 1, + anon_sym_in, [55168] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2644), 1, - anon_sym_RBRACE, + ACTIONS(3087), 1, + anon_sym_COLON, [55175] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3079), 1, + ACTIONS(3089), 1, anon_sym_COLON, [55182] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3081), 1, - anon_sym_RPAREN, + ACTIONS(3091), 1, + anon_sym_COLON, [55189] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3083), 1, + ACTIONS(3093), 1, anon_sym_COLON, [55196] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3085), 1, + ACTIONS(3095), 1, anon_sym_COLON, [55203] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3087), 1, + ACTIONS(3097), 1, anon_sym_COLON, [55210] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3089), 1, - anon_sym_RPAREN, + ACTIONS(3099), 1, + anon_sym_COLON, [55217] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2630), 1, + ACTIONS(2614), 1, anon_sym_in, [55224] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3091), 1, + ACTIONS(3101), 1, anon_sym_COLON, [55231] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3093), 1, - anon_sym_COLON, + ACTIONS(3103), 1, + anon_sym_RBRACE, [55238] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2280), 1, - anon_sym_COLON, + ACTIONS(3105), 1, + anon_sym_RBRACE, [55245] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3095), 1, - anon_sym_EQ, + ACTIONS(3107), 1, + anon_sym_COLON, [55252] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3097), 1, - anon_sym_in, + ACTIONS(3109), 1, + sym_identifier, [55259] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(962), 1, - anon_sym_STAR, + ACTIONS(3111), 1, + anon_sym_RBRACK, [55266] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3099), 1, + ACTIONS(3113), 1, anon_sym_COLON, [55273] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3101), 1, - sym_identifier, + ACTIONS(3115), 1, + anon_sym_RBRACK, [55280] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3103), 1, - anon_sym_RBRACE, + ACTIONS(2665), 1, + anon_sym_in, [55287] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3105), 1, - anon_sym_RPAREN, + ACTIONS(3117), 1, + anon_sym_COLON, [55294] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3107), 1, - anon_sym_COLON, + ACTIONS(3119), 1, + anon_sym_RPAREN, [55301] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(856), 1, - anon_sym_def, + ACTIONS(2282), 1, + anon_sym_COLON, [55308] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3109), 1, - anon_sym_RBRACE, + ACTIONS(3121), 1, + sym_identifier, [55315] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3111), 1, - sym_identifier, + ACTIONS(3123), 1, + anon_sym_in, [55322] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3113), 1, - anon_sym_LPAREN, + ACTIONS(3125), 1, + anon_sym_EQ, [55329] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3115), 1, - anon_sym_import, + ACTIONS(3127), 1, + sym_identifier, [55336] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2776), 1, - anon_sym_RBRACE, + ACTIONS(3129), 1, + anon_sym_RPAREN, [55343] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3117), 1, - ts_builtin_sym_end, + ACTIONS(3131), 1, + anon_sym_RBRACE, [55350] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2448), 1, - anon_sym_RBRACE, + ACTIONS(3133), 1, + anon_sym_RPAREN, [55357] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3119), 1, - anon_sym_COLON, + ACTIONS(3135), 1, + anon_sym_RBRACE, [55364] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3121), 1, - anon_sym_COLON, + ACTIONS(3137), 1, + anon_sym_RBRACE, [55371] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3123), 1, - anon_sym_COLON, + ACTIONS(864), 1, + anon_sym_def, [55378] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3125), 1, - anon_sym_RBRACE, + ACTIONS(3139), 1, + sym_identifier, [55385] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3127), 1, + ACTIONS(3141), 1, sym_identifier, [55392] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3129), 1, - sym_identifier, + ACTIONS(3143), 1, + anon_sym_RBRACK, [55399] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3131), 1, - sym_identifier, + ACTIONS(956), 1, + anon_sym_STAR, [55406] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(956), 1, - anon_sym_STAR, + ACTIONS(3145), 1, + anon_sym_RBRACE, [55413] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3133), 1, + ACTIONS(3147), 1, sym_identifier, [55420] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3135), 1, - anon_sym_COLON, + ACTIONS(3149), 1, + anon_sym_RBRACE, [55427] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3137), 1, + ACTIONS(3151), 1, anon_sym_COLON, [55434] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3139), 1, - sym_identifier, + ACTIONS(3153), 1, + anon_sym_RPAREN, [55441] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3141), 1, + ACTIONS(3155), 1, sym_identifier, [55448] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3143), 1, + ACTIONS(3157), 1, sym_identifier, [55455] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3145), 1, - sym_identifier, + ACTIONS(3159), 1, + anon_sym_RBRACE, [55462] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3147), 1, - anon_sym_for, + ACTIONS(2845), 1, + anon_sym_in, [55469] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2751), 1, - anon_sym_in, + ACTIONS(858), 1, + anon_sym_def, [55476] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(842), 1, - anon_sym_def, + ACTIONS(3161), 1, + sym_identifier, [55483] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3149), 1, - anon_sym_RPAREN, + ACTIONS(2847), 1, + anon_sym_in, [55490] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2797), 1, - anon_sym_in, + ACTIONS(3163), 1, + anon_sym_COLON, [55497] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2729), 1, - anon_sym_RBRACK, + ACTIONS(3165), 1, + anon_sym_COLON, [55504] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3151), 1, - anon_sym_RBRACE, + ACTIONS(3167), 1, + anon_sym_RPAREN, }; static const uint32_t ts_small_parse_table_map[] = { @@ -68288,293 +69874,293 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(152)] = 354, [SMALL_STATE(153)] = 464, [SMALL_STATE(154)] = 581, - [SMALL_STATE(155)] = 696, - [SMALL_STATE(156)] = 799, - [SMALL_STATE(157)] = 902, - [SMALL_STATE(158)] = 1017, - [SMALL_STATE(159)] = 1136, - [SMALL_STATE(160)] = 1251, + [SMALL_STATE(155)] = 698, + [SMALL_STATE(156)] = 801, + [SMALL_STATE(157)] = 920, + [SMALL_STATE(158)] = 1035, + [SMALL_STATE(159)] = 1150, + [SMALL_STATE(160)] = 1265, [SMALL_STATE(161)] = 1368, - [SMALL_STATE(162)] = 1482, - [SMALL_STATE(163)] = 1586, - [SMALL_STATE(164)] = 1700, - [SMALL_STATE(165)] = 1804, + [SMALL_STATE(162)] = 1472, + [SMALL_STATE(163)] = 1576, + [SMALL_STATE(164)] = 1680, + [SMALL_STATE(165)] = 1794, [SMALL_STATE(166)] = 1908, [SMALL_STATE(167)] = 2022, - [SMALL_STATE(168)] = 2123, - [SMALL_STATE(169)] = 2228, - [SMALL_STATE(170)] = 2335, - [SMALL_STATE(171)] = 2438, - [SMALL_STATE(172)] = 2539, - [SMALL_STATE(173)] = 2640, - [SMALL_STATE(174)] = 2745, - [SMALL_STATE(175)] = 2850, - [SMALL_STATE(176)] = 2953, - [SMALL_STATE(177)] = 3058, + [SMALL_STATE(168)] = 2129, + [SMALL_STATE(169)] = 2234, + [SMALL_STATE(170)] = 2339, + [SMALL_STATE(171)] = 2444, + [SMALL_STATE(172)] = 2547, + [SMALL_STATE(173)] = 2652, + [SMALL_STATE(174)] = 2757, + [SMALL_STATE(175)] = 2858, + [SMALL_STATE(176)] = 2961, + [SMALL_STATE(177)] = 3062, [SMALL_STATE(178)] = 3163, [SMALL_STATE(179)] = 3268, - [SMALL_STATE(180)] = 3370, - [SMALL_STATE(181)] = 3472, - [SMALL_STATE(182)] = 3574, - [SMALL_STATE(183)] = 3672, - [SMALL_STATE(184)] = 3776, - [SMALL_STATE(185)] = 3878, - [SMALL_STATE(186)] = 3982, + [SMALL_STATE(180)] = 3366, + [SMALL_STATE(181)] = 3468, + [SMALL_STATE(182)] = 3572, + [SMALL_STATE(183)] = 3674, + [SMALL_STATE(184)] = 3780, + [SMALL_STATE(185)] = 3882, + [SMALL_STATE(186)] = 3984, [SMALL_STATE(187)] = 4086, [SMALL_STATE(188)] = 4188, [SMALL_STATE(189)] = 4290, [SMALL_STATE(190)] = 4392, [SMALL_STATE(191)] = 4494, - [SMALL_STATE(192)] = 4600, - [SMALL_STATE(193)] = 4702, - [SMALL_STATE(194)] = 4804, - [SMALL_STATE(195)] = 4906, - [SMALL_STATE(196)] = 5010, - [SMALL_STATE(197)] = 5112, - [SMALL_STATE(198)] = 5214, - [SMALL_STATE(199)] = 5316, - [SMALL_STATE(200)] = 5422, - [SMALL_STATE(201)] = 5524, - [SMALL_STATE(202)] = 5626, - [SMALL_STATE(203)] = 5728, - [SMALL_STATE(204)] = 5830, - [SMALL_STATE(205)] = 5932, - [SMALL_STATE(206)] = 6030, - [SMALL_STATE(207)] = 6128, - [SMALL_STATE(208)] = 6230, - [SMALL_STATE(209)] = 6332, - [SMALL_STATE(210)] = 6434, - [SMALL_STATE(211)] = 6532, + [SMALL_STATE(192)] = 4596, + [SMALL_STATE(193)] = 4698, + [SMALL_STATE(194)] = 4800, + [SMALL_STATE(195)] = 4902, + [SMALL_STATE(196)] = 5000, + [SMALL_STATE(197)] = 5106, + [SMALL_STATE(198)] = 5210, + [SMALL_STATE(199)] = 5312, + [SMALL_STATE(200)] = 5414, + [SMALL_STATE(201)] = 5512, + [SMALL_STATE(202)] = 5616, + [SMALL_STATE(203)] = 5718, + [SMALL_STATE(204)] = 5820, + [SMALL_STATE(205)] = 5922, + [SMALL_STATE(206)] = 6024, + [SMALL_STATE(207)] = 6126, + [SMALL_STATE(208)] = 6228, + [SMALL_STATE(209)] = 6330, + [SMALL_STATE(210)] = 6432, + [SMALL_STATE(211)] = 6536, [SMALL_STATE(212)] = 6634, [SMALL_STATE(213)] = 6733, - [SMALL_STATE(214)] = 6794, - [SMALL_STATE(215)] = 6893, - [SMALL_STATE(216)] = 6992, - [SMALL_STATE(217)] = 7091, - [SMALL_STATE(218)] = 7178, - [SMALL_STATE(219)] = 7277, - [SMALL_STATE(220)] = 7376, - [SMALL_STATE(221)] = 7437, + [SMALL_STATE(214)] = 6832, + [SMALL_STATE(215)] = 6931, + [SMALL_STATE(216)] = 7030, + [SMALL_STATE(217)] = 7129, + [SMALL_STATE(218)] = 7190, + [SMALL_STATE(219)] = 7289, + [SMALL_STATE(220)] = 7350, + [SMALL_STATE(221)] = 7449, [SMALL_STATE(222)] = 7536, [SMALL_STATE(223)] = 7635, [SMALL_STATE(224)] = 7707, - [SMALL_STATE(225)] = 7779, - [SMALL_STATE(226)] = 7851, - [SMALL_STATE(227)] = 7947, - [SMALL_STATE(228)] = 8019, - [SMALL_STATE(229)] = 8117, - [SMALL_STATE(230)] = 8213, - [SMALL_STATE(231)] = 8311, - [SMALL_STATE(232)] = 8383, - [SMALL_STATE(233)] = 8455, - [SMALL_STATE(234)] = 8527, - [SMALL_STATE(235)] = 8625, - [SMALL_STATE(236)] = 8723, + [SMALL_STATE(225)] = 7805, + [SMALL_STATE(226)] = 7901, + [SMALL_STATE(227)] = 7973, + [SMALL_STATE(228)] = 8045, + [SMALL_STATE(229)] = 8143, + [SMALL_STATE(230)] = 8215, + [SMALL_STATE(231)] = 8313, + [SMALL_STATE(232)] = 8385, + [SMALL_STATE(233)] = 8457, + [SMALL_STATE(234)] = 8529, + [SMALL_STATE(235)] = 8601, + [SMALL_STATE(236)] = 8697, [SMALL_STATE(237)] = 8795, [SMALL_STATE(238)] = 8893, [SMALL_STATE(239)] = 8988, [SMALL_STATE(240)] = 9061, [SMALL_STATE(241)] = 9156, - [SMALL_STATE(242)] = 9251, - [SMALL_STATE(243)] = 9346, - [SMALL_STATE(244)] = 9441, - [SMALL_STATE(245)] = 9536, - [SMALL_STATE(246)] = 9631, + [SMALL_STATE(242)] = 9229, + [SMALL_STATE(243)] = 9324, + [SMALL_STATE(244)] = 9419, + [SMALL_STATE(245)] = 9514, + [SMALL_STATE(246)] = 9609, [SMALL_STATE(247)] = 9704, [SMALL_STATE(248)] = 9799, [SMALL_STATE(249)] = 9894, [SMALL_STATE(250)] = 9989, [SMALL_STATE(251)] = 10084, - [SMALL_STATE(252)] = 10178, - [SMALL_STATE(253)] = 10246, - [SMALL_STATE(254)] = 10340, - [SMALL_STATE(255)] = 10434, - [SMALL_STATE(256)] = 10528, - [SMALL_STATE(257)] = 10586, - [SMALL_STATE(258)] = 10644, - [SMALL_STATE(259)] = 10706, - [SMALL_STATE(260)] = 10800, - [SMALL_STATE(261)] = 10862, - [SMALL_STATE(262)] = 10920, - [SMALL_STATE(263)] = 10978, - [SMALL_STATE(264)] = 11036, - [SMALL_STATE(265)] = 11094, + [SMALL_STATE(252)] = 10152, + [SMALL_STATE(253)] = 10210, + [SMALL_STATE(254)] = 10278, + [SMALL_STATE(255)] = 10346, + [SMALL_STATE(256)] = 10414, + [SMALL_STATE(257)] = 10484, + [SMALL_STATE(258)] = 10578, + [SMALL_STATE(259)] = 10672, + [SMALL_STATE(260)] = 10766, + [SMALL_STATE(261)] = 10824, + [SMALL_STATE(262)] = 10882, + [SMALL_STATE(263)] = 10940, + [SMALL_STATE(264)] = 11002, + [SMALL_STATE(265)] = 11060, [SMALL_STATE(266)] = 11152, [SMALL_STATE(267)] = 11220, [SMALL_STATE(268)] = 11314, - [SMALL_STATE(269)] = 11372, - [SMALL_STATE(270)] = 11430, - [SMALL_STATE(271)] = 11492, - [SMALL_STATE(272)] = 11584, - [SMALL_STATE(273)] = 11646, - [SMALL_STATE(274)] = 11738, - [SMALL_STATE(275)] = 11830, - [SMALL_STATE(276)] = 11900, - [SMALL_STATE(277)] = 11994, - [SMALL_STATE(278)] = 12062, - [SMALL_STATE(279)] = 12130, - [SMALL_STATE(280)] = 12198, - [SMALL_STATE(281)] = 12266, - [SMALL_STATE(282)] = 12334, - [SMALL_STATE(283)] = 12392, - [SMALL_STATE(284)] = 12486, - [SMALL_STATE(285)] = 12580, - [SMALL_STATE(286)] = 12674, + [SMALL_STATE(269)] = 11376, + [SMALL_STATE(270)] = 11444, + [SMALL_STATE(271)] = 11512, + [SMALL_STATE(272)] = 11574, + [SMALL_STATE(273)] = 11636, + [SMALL_STATE(274)] = 11728, + [SMALL_STATE(275)] = 11786, + [SMALL_STATE(276)] = 11844, + [SMALL_STATE(277)] = 11938, + [SMALL_STATE(278)] = 12006, + [SMALL_STATE(279)] = 12098, + [SMALL_STATE(280)] = 12156, + [SMALL_STATE(281)] = 12250, + [SMALL_STATE(282)] = 12308, + [SMALL_STATE(283)] = 12402, + [SMALL_STATE(284)] = 12460, + [SMALL_STATE(285)] = 12554, + [SMALL_STATE(286)] = 12648, [SMALL_STATE(287)] = 12742, [SMALL_STATE(288)] = 12836, [SMALL_STATE(289)] = 12927, - [SMALL_STATE(290)] = 13016, - [SMALL_STATE(291)] = 13105, - [SMALL_STATE(292)] = 13194, - [SMALL_STATE(293)] = 13283, - [SMALL_STATE(294)] = 13372, - [SMALL_STATE(295)] = 13463, - [SMALL_STATE(296)] = 13552, - [SMALL_STATE(297)] = 13641, - [SMALL_STATE(298)] = 13732, - [SMALL_STATE(299)] = 13823, - [SMALL_STATE(300)] = 13914, - [SMALL_STATE(301)] = 14005, - [SMALL_STATE(302)] = 14096, - [SMALL_STATE(303)] = 14187, - [SMALL_STATE(304)] = 14250, - [SMALL_STATE(305)] = 14313, - [SMALL_STATE(306)] = 14402, - [SMALL_STATE(307)] = 14491, - [SMALL_STATE(308)] = 14580, - [SMALL_STATE(309)] = 14669, + [SMALL_STATE(290)] = 13018, + [SMALL_STATE(291)] = 13107, + [SMALL_STATE(292)] = 13198, + [SMALL_STATE(293)] = 13261, + [SMALL_STATE(294)] = 13350, + [SMALL_STATE(295)] = 13439, + [SMALL_STATE(296)] = 13530, + [SMALL_STATE(297)] = 13619, + [SMALL_STATE(298)] = 13708, + [SMALL_STATE(299)] = 13799, + [SMALL_STATE(300)] = 13888, + [SMALL_STATE(301)] = 13977, + [SMALL_STATE(302)] = 14044, + [SMALL_STATE(303)] = 14135, + [SMALL_STATE(304)] = 14226, + [SMALL_STATE(305)] = 14315, + [SMALL_STATE(306)] = 14406, + [SMALL_STATE(307)] = 14495, + [SMALL_STATE(308)] = 14584, + [SMALL_STATE(309)] = 14647, [SMALL_STATE(310)] = 14736, - [SMALL_STATE(311)] = 14827, - [SMALL_STATE(312)] = 14916, + [SMALL_STATE(311)] = 14825, + [SMALL_STATE(312)] = 14914, [SMALL_STATE(313)] = 15005, - [SMALL_STATE(314)] = 15065, - [SMALL_STATE(315)] = 15153, - [SMALL_STATE(316)] = 15209, - [SMALL_STATE(317)] = 15265, - [SMALL_STATE(318)] = 15321, - [SMALL_STATE(319)] = 15377, - [SMALL_STATE(320)] = 15433, - [SMALL_STATE(321)] = 15497, - [SMALL_STATE(322)] = 15553, - [SMALL_STATE(323)] = 15609, - [SMALL_STATE(324)] = 15665, - [SMALL_STATE(325)] = 15721, - [SMALL_STATE(326)] = 15785, - [SMALL_STATE(327)] = 15841, - [SMALL_STATE(328)] = 15897, + [SMALL_STATE(314)] = 15061, + [SMALL_STATE(315)] = 15117, + [SMALL_STATE(316)] = 15177, + [SMALL_STATE(317)] = 15241, + [SMALL_STATE(318)] = 15305, + [SMALL_STATE(319)] = 15361, + [SMALL_STATE(320)] = 15449, + [SMALL_STATE(321)] = 15509, + [SMALL_STATE(322)] = 15565, + [SMALL_STATE(323)] = 15621, + [SMALL_STATE(324)] = 15677, + [SMALL_STATE(325)] = 15733, + [SMALL_STATE(326)] = 15789, + [SMALL_STATE(327)] = 15845, + [SMALL_STATE(328)] = 15901, [SMALL_STATE(329)] = 15957, [SMALL_STATE(330)] = 16013, - [SMALL_STATE(331)] = 16069, - [SMALL_STATE(332)] = 16125, - [SMALL_STATE(333)] = 16181, - [SMALL_STATE(334)] = 16237, - [SMALL_STATE(335)] = 16301, - [SMALL_STATE(336)] = 16361, - [SMALL_STATE(337)] = 16417, - [SMALL_STATE(338)] = 16477, - [SMALL_STATE(339)] = 16533, - [SMALL_STATE(340)] = 16589, - [SMALL_STATE(341)] = 16677, - [SMALL_STATE(342)] = 16741, - [SMALL_STATE(343)] = 16797, - [SMALL_STATE(344)] = 16853, + [SMALL_STATE(331)] = 16077, + [SMALL_STATE(332)] = 16141, + [SMALL_STATE(333)] = 16201, + [SMALL_STATE(334)] = 16261, + [SMALL_STATE(335)] = 16317, + [SMALL_STATE(336)] = 16373, + [SMALL_STATE(337)] = 16429, + [SMALL_STATE(338)] = 16485, + [SMALL_STATE(339)] = 16541, + [SMALL_STATE(340)] = 16597, + [SMALL_STATE(341)] = 16653, + [SMALL_STATE(342)] = 16709, + [SMALL_STATE(343)] = 16765, + [SMALL_STATE(344)] = 16821, [SMALL_STATE(345)] = 16909, [SMALL_STATE(346)] = 16997, - [SMALL_STATE(347)] = 17056, - [SMALL_STATE(348)] = 17143, - [SMALL_STATE(349)] = 17202, - [SMALL_STATE(350)] = 17287, - [SMALL_STATE(351)] = 17372, - [SMALL_STATE(352)] = 17457, + [SMALL_STATE(347)] = 17082, + [SMALL_STATE(348)] = 17141, + [SMALL_STATE(349)] = 17226, + [SMALL_STATE(350)] = 17285, + [SMALL_STATE(351)] = 17344, + [SMALL_STATE(352)] = 17431, [SMALL_STATE(353)] = 17516, [SMALL_STATE(354)] = 17601, [SMALL_STATE(355)] = 17662, - [SMALL_STATE(356)] = 17747, - [SMALL_STATE(357)] = 17832, - [SMALL_STATE(358)] = 17917, - [SMALL_STATE(359)] = 18002, - [SMALL_STATE(360)] = 18087, - [SMALL_STATE(361)] = 18172, - [SMALL_STATE(362)] = 18257, - [SMALL_STATE(363)] = 18316, - [SMALL_STATE(364)] = 18401, - [SMALL_STATE(365)] = 18486, - [SMALL_STATE(366)] = 18571, - [SMALL_STATE(367)] = 18656, - [SMALL_STATE(368)] = 18741, - [SMALL_STATE(369)] = 18826, - [SMALL_STATE(370)] = 18885, - [SMALL_STATE(371)] = 18970, - [SMALL_STATE(372)] = 19055, - [SMALL_STATE(373)] = 19140, - [SMALL_STATE(374)] = 19225, - [SMALL_STATE(375)] = 19310, - [SMALL_STATE(376)] = 19395, - [SMALL_STATE(377)] = 19480, - [SMALL_STATE(378)] = 19565, - [SMALL_STATE(379)] = 19650, - [SMALL_STATE(380)] = 19735, - [SMALL_STATE(381)] = 19794, - [SMALL_STATE(382)] = 19879, - [SMALL_STATE(383)] = 19964, - [SMALL_STATE(384)] = 20049, - [SMALL_STATE(385)] = 20134, - [SMALL_STATE(386)] = 20219, - [SMALL_STATE(387)] = 20278, - [SMALL_STATE(388)] = 20363, - [SMALL_STATE(389)] = 20448, - [SMALL_STATE(390)] = 20533, - [SMALL_STATE(391)] = 20592, - [SMALL_STATE(392)] = 20647, - [SMALL_STATE(393)] = 20708, - [SMALL_STATE(394)] = 20793, - [SMALL_STATE(395)] = 20878, - [SMALL_STATE(396)] = 20963, - [SMALL_STATE(397)] = 21048, - [SMALL_STATE(398)] = 21107, - [SMALL_STATE(399)] = 21162, - [SMALL_STATE(400)] = 21247, - [SMALL_STATE(401)] = 21306, - [SMALL_STATE(402)] = 21391, - [SMALL_STATE(403)] = 21476, - [SMALL_STATE(404)] = 21561, - [SMALL_STATE(405)] = 21646, - [SMALL_STATE(406)] = 21731, - [SMALL_STATE(407)] = 21816, - [SMALL_STATE(408)] = 21901, - [SMALL_STATE(409)] = 21986, - [SMALL_STATE(410)] = 22071, - [SMALL_STATE(411)] = 22156, - [SMALL_STATE(412)] = 22241, - [SMALL_STATE(413)] = 22326, - [SMALL_STATE(414)] = 22411, - [SMALL_STATE(415)] = 22472, - [SMALL_STATE(416)] = 22557, - [SMALL_STATE(417)] = 22642, - [SMALL_STATE(418)] = 22701, - [SMALL_STATE(419)] = 22760, - [SMALL_STATE(420)] = 22819, - [SMALL_STATE(421)] = 22878, - [SMALL_STATE(422)] = 22963, - [SMALL_STATE(423)] = 23018, - [SMALL_STATE(424)] = 23103, - [SMALL_STATE(425)] = 23158, - [SMALL_STATE(426)] = 23213, - [SMALL_STATE(427)] = 23298, - [SMALL_STATE(428)] = 23359, - [SMALL_STATE(429)] = 23414, - [SMALL_STATE(430)] = 23499, - [SMALL_STATE(431)] = 23584, - [SMALL_STATE(432)] = 23669, - [SMALL_STATE(433)] = 23754, - [SMALL_STATE(434)] = 23839, - [SMALL_STATE(435)] = 23924, - [SMALL_STATE(436)] = 24009, - [SMALL_STATE(437)] = 24068, - [SMALL_STATE(438)] = 24153, - [SMALL_STATE(439)] = 24238, - [SMALL_STATE(440)] = 24323, - [SMALL_STATE(441)] = 24408, + [SMALL_STATE(356)] = 17721, + [SMALL_STATE(357)] = 17806, + [SMALL_STATE(358)] = 17865, + [SMALL_STATE(359)] = 17950, + [SMALL_STATE(360)] = 18035, + [SMALL_STATE(361)] = 18094, + [SMALL_STATE(362)] = 18153, + [SMALL_STATE(363)] = 18238, + [SMALL_STATE(364)] = 18323, + [SMALL_STATE(365)] = 18408, + [SMALL_STATE(366)] = 18463, + [SMALL_STATE(367)] = 18522, + [SMALL_STATE(368)] = 18607, + [SMALL_STATE(369)] = 18692, + [SMALL_STATE(370)] = 18777, + [SMALL_STATE(371)] = 18862, + [SMALL_STATE(372)] = 18917, + [SMALL_STATE(373)] = 19002, + [SMALL_STATE(374)] = 19087, + [SMALL_STATE(375)] = 19172, + [SMALL_STATE(376)] = 19257, + [SMALL_STATE(377)] = 19342, + [SMALL_STATE(378)] = 19403, + [SMALL_STATE(379)] = 19488, + [SMALL_STATE(380)] = 19573, + [SMALL_STATE(381)] = 19658, + [SMALL_STATE(382)] = 19743, + [SMALL_STATE(383)] = 19828, + [SMALL_STATE(384)] = 19913, + [SMALL_STATE(385)] = 19998, + [SMALL_STATE(386)] = 20083, + [SMALL_STATE(387)] = 20142, + [SMALL_STATE(388)] = 20227, + [SMALL_STATE(389)] = 20312, + [SMALL_STATE(390)] = 20397, + [SMALL_STATE(391)] = 20452, + [SMALL_STATE(392)] = 20511, + [SMALL_STATE(393)] = 20570, + [SMALL_STATE(394)] = 20629, + [SMALL_STATE(395)] = 20714, + [SMALL_STATE(396)] = 20773, + [SMALL_STATE(397)] = 20832, + [SMALL_STATE(398)] = 20891, + [SMALL_STATE(399)] = 20976, + [SMALL_STATE(400)] = 21061, + [SMALL_STATE(401)] = 21116, + [SMALL_STATE(402)] = 21175, + [SMALL_STATE(403)] = 21260, + [SMALL_STATE(404)] = 21321, + [SMALL_STATE(405)] = 21376, + [SMALL_STATE(406)] = 21461, + [SMALL_STATE(407)] = 21546, + [SMALL_STATE(408)] = 21601, + [SMALL_STATE(409)] = 21686, + [SMALL_STATE(410)] = 21771, + [SMALL_STATE(411)] = 21856, + [SMALL_STATE(412)] = 21941, + [SMALL_STATE(413)] = 22026, + [SMALL_STATE(414)] = 22111, + [SMALL_STATE(415)] = 22196, + [SMALL_STATE(416)] = 22281, + [SMALL_STATE(417)] = 22366, + [SMALL_STATE(418)] = 22451, + [SMALL_STATE(419)] = 22536, + [SMALL_STATE(420)] = 22621, + [SMALL_STATE(421)] = 22706, + [SMALL_STATE(422)] = 22791, + [SMALL_STATE(423)] = 22876, + [SMALL_STATE(424)] = 22961, + [SMALL_STATE(425)] = 23046, + [SMALL_STATE(426)] = 23131, + [SMALL_STATE(427)] = 23216, + [SMALL_STATE(428)] = 23301, + [SMALL_STATE(429)] = 23386, + [SMALL_STATE(430)] = 23471, + [SMALL_STATE(431)] = 23556, + [SMALL_STATE(432)] = 23617, + [SMALL_STATE(433)] = 23702, + [SMALL_STATE(434)] = 23787, + [SMALL_STATE(435)] = 23872, + [SMALL_STATE(436)] = 23957, + [SMALL_STATE(437)] = 24042, + [SMALL_STATE(438)] = 24127, + [SMALL_STATE(439)] = 24212, + [SMALL_STATE(440)] = 24297, + [SMALL_STATE(441)] = 24382, [SMALL_STATE(442)] = 24467, [SMALL_STATE(443)] = 24552, [SMALL_STATE(444)] = 24637, @@ -68607,36 +70193,36 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(471)] = 26144, [SMALL_STATE(472)] = 26197, [SMALL_STATE(473)] = 26250, - [SMALL_STATE(474)] = 26303, - [SMALL_STATE(475)] = 26356, - [SMALL_STATE(476)] = 26409, - [SMALL_STATE(477)] = 26462, - [SMALL_STATE(478)] = 26515, - [SMALL_STATE(479)] = 26568, - [SMALL_STATE(480)] = 26621, - [SMALL_STATE(481)] = 26674, - [SMALL_STATE(482)] = 26727, - [SMALL_STATE(483)] = 26780, - [SMALL_STATE(484)] = 26833, - [SMALL_STATE(485)] = 26886, - [SMALL_STATE(486)] = 26939, - [SMALL_STATE(487)] = 26992, - [SMALL_STATE(488)] = 27045, - [SMALL_STATE(489)] = 27098, - [SMALL_STATE(490)] = 27151, - [SMALL_STATE(491)] = 27204, - [SMALL_STATE(492)] = 27257, - [SMALL_STATE(493)] = 27310, - [SMALL_STATE(494)] = 27363, - [SMALL_STATE(495)] = 27416, - [SMALL_STATE(496)] = 27469, - [SMALL_STATE(497)] = 27522, - [SMALL_STATE(498)] = 27575, - [SMALL_STATE(499)] = 27628, - [SMALL_STATE(500)] = 27681, - [SMALL_STATE(501)] = 27734, - [SMALL_STATE(502)] = 27787, - [SMALL_STATE(503)] = 27840, + [SMALL_STATE(474)] = 26335, + [SMALL_STATE(475)] = 26388, + [SMALL_STATE(476)] = 26441, + [SMALL_STATE(477)] = 26494, + [SMALL_STATE(478)] = 26547, + [SMALL_STATE(479)] = 26600, + [SMALL_STATE(480)] = 26653, + [SMALL_STATE(481)] = 26706, + [SMALL_STATE(482)] = 26759, + [SMALL_STATE(483)] = 26812, + [SMALL_STATE(484)] = 26865, + [SMALL_STATE(485)] = 26918, + [SMALL_STATE(486)] = 26971, + [SMALL_STATE(487)] = 27024, + [SMALL_STATE(488)] = 27077, + [SMALL_STATE(489)] = 27130, + [SMALL_STATE(490)] = 27183, + [SMALL_STATE(491)] = 27236, + [SMALL_STATE(492)] = 27289, + [SMALL_STATE(493)] = 27342, + [SMALL_STATE(494)] = 27395, + [SMALL_STATE(495)] = 27448, + [SMALL_STATE(496)] = 27501, + [SMALL_STATE(497)] = 27554, + [SMALL_STATE(498)] = 27607, + [SMALL_STATE(499)] = 27660, + [SMALL_STATE(500)] = 27713, + [SMALL_STATE(501)] = 27766, + [SMALL_STATE(502)] = 27819, + [SMALL_STATE(503)] = 27872, [SMALL_STATE(504)] = 27925, [SMALL_STATE(505)] = 27978, [SMALL_STATE(506)] = 28031, @@ -68652,45 +70238,45 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(516)] = 28561, [SMALL_STATE(517)] = 28614, [SMALL_STATE(518)] = 28667, - [SMALL_STATE(519)] = 28754, - [SMALL_STATE(520)] = 28807, - [SMALL_STATE(521)] = 28860, - [SMALL_STATE(522)] = 28913, - [SMALL_STATE(523)] = 28966, - [SMALL_STATE(524)] = 29019, - [SMALL_STATE(525)] = 29072, - [SMALL_STATE(526)] = 29125, - [SMALL_STATE(527)] = 29178, - [SMALL_STATE(528)] = 29231, - [SMALL_STATE(529)] = 29284, - [SMALL_STATE(530)] = 29337, - [SMALL_STATE(531)] = 29390, - [SMALL_STATE(532)] = 29443, - [SMALL_STATE(533)] = 29496, - [SMALL_STATE(534)] = 29549, - [SMALL_STATE(535)] = 29602, - [SMALL_STATE(536)] = 29655, - [SMALL_STATE(537)] = 29708, - [SMALL_STATE(538)] = 29761, - [SMALL_STATE(539)] = 29814, - [SMALL_STATE(540)] = 29867, - [SMALL_STATE(541)] = 29920, - [SMALL_STATE(542)] = 29973, - [SMALL_STATE(543)] = 30026, - [SMALL_STATE(544)] = 30111, - [SMALL_STATE(545)] = 30164, - [SMALL_STATE(546)] = 30217, - [SMALL_STATE(547)] = 30270, - [SMALL_STATE(548)] = 30323, - [SMALL_STATE(549)] = 30376, - [SMALL_STATE(550)] = 30429, - [SMALL_STATE(551)] = 30482, - [SMALL_STATE(552)] = 30535, - [SMALL_STATE(553)] = 30588, - [SMALL_STATE(554)] = 30641, - [SMALL_STATE(555)] = 30694, - [SMALL_STATE(556)] = 30747, - [SMALL_STATE(557)] = 30800, + [SMALL_STATE(519)] = 28720, + [SMALL_STATE(520)] = 28773, + [SMALL_STATE(521)] = 28826, + [SMALL_STATE(522)] = 28879, + [SMALL_STATE(523)] = 28932, + [SMALL_STATE(524)] = 28985, + [SMALL_STATE(525)] = 29038, + [SMALL_STATE(526)] = 29091, + [SMALL_STATE(527)] = 29144, + [SMALL_STATE(528)] = 29197, + [SMALL_STATE(529)] = 29250, + [SMALL_STATE(530)] = 29303, + [SMALL_STATE(531)] = 29356, + [SMALL_STATE(532)] = 29409, + [SMALL_STATE(533)] = 29462, + [SMALL_STATE(534)] = 29515, + [SMALL_STATE(535)] = 29568, + [SMALL_STATE(536)] = 29621, + [SMALL_STATE(537)] = 29674, + [SMALL_STATE(538)] = 29727, + [SMALL_STATE(539)] = 29780, + [SMALL_STATE(540)] = 29833, + [SMALL_STATE(541)] = 29886, + [SMALL_STATE(542)] = 29939, + [SMALL_STATE(543)] = 29992, + [SMALL_STATE(544)] = 30077, + [SMALL_STATE(545)] = 30130, + [SMALL_STATE(546)] = 30183, + [SMALL_STATE(547)] = 30236, + [SMALL_STATE(548)] = 30289, + [SMALL_STATE(549)] = 30342, + [SMALL_STATE(550)] = 30395, + [SMALL_STATE(551)] = 30448, + [SMALL_STATE(552)] = 30501, + [SMALL_STATE(553)] = 30554, + [SMALL_STATE(554)] = 30607, + [SMALL_STATE(555)] = 30660, + [SMALL_STATE(556)] = 30713, + [SMALL_STATE(557)] = 30766, [SMALL_STATE(558)] = 30853, [SMALL_STATE(559)] = 30906, [SMALL_STATE(560)] = 30990, @@ -68700,7 +70286,7 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(564)] = 31326, [SMALL_STATE(565)] = 31410, [SMALL_STATE(566)] = 31465, - [SMALL_STATE(567)] = 31546, + [SMALL_STATE(567)] = 31520, [SMALL_STATE(568)] = 31601, [SMALL_STATE(569)] = 31682, [SMALL_STATE(570)] = 31737, @@ -68710,25 +70296,25 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(574)] = 31958, [SMALL_STATE(575)] = 32006, [SMALL_STATE(576)] = 32054, - [SMALL_STATE(577)] = 32136, - [SMALL_STATE(578)] = 32184, - [SMALL_STATE(579)] = 32232, - [SMALL_STATE(580)] = 32280, - [SMALL_STATE(581)] = 32328, - [SMALL_STATE(582)] = 32376, - [SMALL_STATE(583)] = 32424, - [SMALL_STATE(584)] = 32472, - [SMALL_STATE(585)] = 32520, - [SMALL_STATE(586)] = 32568, - [SMALL_STATE(587)] = 32616, - [SMALL_STATE(588)] = 32664, - [SMALL_STATE(589)] = 32712, - [SMALL_STATE(590)] = 32794, - [SMALL_STATE(591)] = 32842, - [SMALL_STATE(592)] = 32890, - [SMALL_STATE(593)] = 32938, - [SMALL_STATE(594)] = 32986, - [SMALL_STATE(595)] = 33034, + [SMALL_STATE(577)] = 32102, + [SMALL_STATE(578)] = 32150, + [SMALL_STATE(579)] = 32198, + [SMALL_STATE(580)] = 32246, + [SMALL_STATE(581)] = 32294, + [SMALL_STATE(582)] = 32342, + [SMALL_STATE(583)] = 32390, + [SMALL_STATE(584)] = 32438, + [SMALL_STATE(585)] = 32486, + [SMALL_STATE(586)] = 32534, + [SMALL_STATE(587)] = 32582, + [SMALL_STATE(588)] = 32630, + [SMALL_STATE(589)] = 32678, + [SMALL_STATE(590)] = 32726, + [SMALL_STATE(591)] = 32808, + [SMALL_STATE(592)] = 32856, + [SMALL_STATE(593)] = 32904, + [SMALL_STATE(594)] = 32952, + [SMALL_STATE(595)] = 33000, [SMALL_STATE(596)] = 33082, [SMALL_STATE(597)] = 33130, [SMALL_STATE(598)] = 33178, @@ -68740,151 +70326,151 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(604)] = 33466, [SMALL_STATE(605)] = 33514, [SMALL_STATE(606)] = 33562, - [SMALL_STATE(607)] = 33629, - [SMALL_STATE(608)] = 33690, - [SMALL_STATE(609)] = 33753, + [SMALL_STATE(607)] = 33625, + [SMALL_STATE(608)] = 33694, + [SMALL_STATE(609)] = 33751, [SMALL_STATE(610)] = 33814, [SMALL_STATE(611)] = 33883, - [SMALL_STATE(612)] = 33940, - [SMALL_STATE(613)] = 34009, - [SMALL_STATE(614)] = 34076, - [SMALL_STATE(615)] = 34145, - [SMALL_STATE(616)] = 34214, - [SMALL_STATE(617)] = 34283, - [SMALL_STATE(618)] = 34348, - [SMALL_STATE(619)] = 34405, - [SMALL_STATE(620)] = 34462, - [SMALL_STATE(621)] = 34533, - [SMALL_STATE(622)] = 34604, - [SMALL_STATE(623)] = 34669, - [SMALL_STATE(624)] = 34740, - [SMALL_STATE(625)] = 34811, - [SMALL_STATE(626)] = 34868, - [SMALL_STATE(627)] = 34925, - [SMALL_STATE(628)] = 34996, - [SMALL_STATE(629)] = 35065, - [SMALL_STATE(630)] = 35122, - [SMALL_STATE(631)] = 35185, - [SMALL_STATE(632)] = 35242, + [SMALL_STATE(612)] = 33954, + [SMALL_STATE(613)] = 34023, + [SMALL_STATE(614)] = 34084, + [SMALL_STATE(615)] = 34141, + [SMALL_STATE(616)] = 34208, + [SMALL_STATE(617)] = 34273, + [SMALL_STATE(618)] = 34342, + [SMALL_STATE(619)] = 34399, + [SMALL_STATE(620)] = 34468, + [SMALL_STATE(621)] = 34525, + [SMALL_STATE(622)] = 34596, + [SMALL_STATE(623)] = 34665, + [SMALL_STATE(624)] = 34726, + [SMALL_STATE(625)] = 34783, + [SMALL_STATE(626)] = 34850, + [SMALL_STATE(627)] = 34915, + [SMALL_STATE(628)] = 34986, + [SMALL_STATE(629)] = 35057, + [SMALL_STATE(630)] = 35114, + [SMALL_STATE(631)] = 35171, + [SMALL_STATE(632)] = 35228, [SMALL_STATE(633)] = 35299, [SMALL_STATE(634)] = 35370, - [SMALL_STATE(635)] = 35436, - [SMALL_STATE(636)] = 35502, - [SMALL_STATE(637)] = 35568, - [SMALL_STATE(638)] = 35634, - [SMALL_STATE(639)] = 35700, - [SMALL_STATE(640)] = 35766, - [SMALL_STATE(641)] = 35836, - [SMALL_STATE(642)] = 35884, - [SMALL_STATE(643)] = 35950, - [SMALL_STATE(644)] = 36016, - [SMALL_STATE(645)] = 36082, - [SMALL_STATE(646)] = 36148, - [SMALL_STATE(647)] = 36214, - [SMALL_STATE(648)] = 36280, - [SMALL_STATE(649)] = 36346, - [SMALL_STATE(650)] = 36412, - [SMALL_STATE(651)] = 36478, - [SMALL_STATE(652)] = 36524, - [SMALL_STATE(653)] = 36590, - [SMALL_STATE(654)] = 36636, - [SMALL_STATE(655)] = 36702, - [SMALL_STATE(656)] = 36768, - [SMALL_STATE(657)] = 36834, - [SMALL_STATE(658)] = 36900, - [SMALL_STATE(659)] = 36950, - [SMALL_STATE(660)] = 37016, - [SMALL_STATE(661)] = 37082, - [SMALL_STATE(662)] = 37148, - [SMALL_STATE(663)] = 37214, - [SMALL_STATE(664)] = 37280, - [SMALL_STATE(665)] = 37346, - [SMALL_STATE(666)] = 37412, - [SMALL_STATE(667)] = 37478, - [SMALL_STATE(668)] = 37548, - [SMALL_STATE(669)] = 37614, - [SMALL_STATE(670)] = 37680, - [SMALL_STATE(671)] = 37746, - [SMALL_STATE(672)] = 37812, - [SMALL_STATE(673)] = 37878, - [SMALL_STATE(674)] = 37926, - [SMALL_STATE(675)] = 37992, - [SMALL_STATE(676)] = 38040, - [SMALL_STATE(677)] = 38106, - [SMALL_STATE(678)] = 38172, - [SMALL_STATE(679)] = 38238, - [SMALL_STATE(680)] = 38304, - [SMALL_STATE(681)] = 38370, - [SMALL_STATE(682)] = 38436, - [SMALL_STATE(683)] = 38502, - [SMALL_STATE(684)] = 38552, - [SMALL_STATE(685)] = 38618, + [SMALL_STATE(635)] = 35416, + [SMALL_STATE(636)] = 35482, + [SMALL_STATE(637)] = 35548, + [SMALL_STATE(638)] = 35614, + [SMALL_STATE(639)] = 35680, + [SMALL_STATE(640)] = 35746, + [SMALL_STATE(641)] = 35812, + [SMALL_STATE(642)] = 35878, + [SMALL_STATE(643)] = 35944, + [SMALL_STATE(644)] = 35994, + [SMALL_STATE(645)] = 36060, + [SMALL_STATE(646)] = 36126, + [SMALL_STATE(647)] = 36192, + [SMALL_STATE(648)] = 36242, + [SMALL_STATE(649)] = 36312, + [SMALL_STATE(650)] = 36382, + [SMALL_STATE(651)] = 36448, + [SMALL_STATE(652)] = 36514, + [SMALL_STATE(653)] = 36580, + [SMALL_STATE(654)] = 36646, + [SMALL_STATE(655)] = 36712, + [SMALL_STATE(656)] = 36778, + [SMALL_STATE(657)] = 36824, + [SMALL_STATE(658)] = 36872, + [SMALL_STATE(659)] = 36920, + [SMALL_STATE(660)] = 36986, + [SMALL_STATE(661)] = 37052, + [SMALL_STATE(662)] = 37118, + [SMALL_STATE(663)] = 37184, + [SMALL_STATE(664)] = 37250, + [SMALL_STATE(665)] = 37316, + [SMALL_STATE(666)] = 37382, + [SMALL_STATE(667)] = 37448, + [SMALL_STATE(668)] = 37514, + [SMALL_STATE(669)] = 37580, + [SMALL_STATE(670)] = 37646, + [SMALL_STATE(671)] = 37712, + [SMALL_STATE(672)] = 37760, + [SMALL_STATE(673)] = 37826, + [SMALL_STATE(674)] = 37892, + [SMALL_STATE(675)] = 37940, + [SMALL_STATE(676)] = 38006, + [SMALL_STATE(677)] = 38072, + [SMALL_STATE(678)] = 38138, + [SMALL_STATE(679)] = 38204, + [SMALL_STATE(680)] = 38270, + [SMALL_STATE(681)] = 38336, + [SMALL_STATE(682)] = 38402, + [SMALL_STATE(683)] = 38468, + [SMALL_STATE(684)] = 38534, + [SMALL_STATE(685)] = 38600, [SMALL_STATE(686)] = 38666, [SMALL_STATE(687)] = 38732, [SMALL_STATE(688)] = 38798, - [SMALL_STATE(689)] = 38843, - [SMALL_STATE(690)] = 38888, - [SMALL_STATE(691)] = 38937, - [SMALL_STATE(692)] = 38986, + [SMALL_STATE(689)] = 38847, + [SMALL_STATE(690)] = 38926, + [SMALL_STATE(691)] = 38971, + [SMALL_STATE(692)] = 39016, [SMALL_STATE(693)] = 39065, [SMALL_STATE(694)] = 39114, - [SMALL_STATE(695)] = 39182, - [SMALL_STATE(696)] = 39226, - [SMALL_STATE(697)] = 39270, - [SMALL_STATE(698)] = 39324, - [SMALL_STATE(699)] = 39384, - [SMALL_STATE(700)] = 39452, - [SMALL_STATE(701)] = 39518, - [SMALL_STATE(702)] = 39576, - [SMALL_STATE(703)] = 39630, - [SMALL_STATE(704)] = 39694, - [SMALL_STATE(705)] = 39756, - [SMALL_STATE(706)] = 39832, + [SMALL_STATE(695)] = 39180, + [SMALL_STATE(696)] = 39224, + [SMALL_STATE(697)] = 39284, + [SMALL_STATE(698)] = 39352, + [SMALL_STATE(699)] = 39428, + [SMALL_STATE(700)] = 39476, + [SMALL_STATE(701)] = 39520, + [SMALL_STATE(702)] = 39588, + [SMALL_STATE(703)] = 39642, + [SMALL_STATE(704)] = 39710, + [SMALL_STATE(705)] = 39764, + [SMALL_STATE(706)] = 39828, [SMALL_STATE(707)] = 39886, - [SMALL_STATE(708)] = 39954, + [SMALL_STATE(708)] = 39948, [SMALL_STATE(709)] = 40002, [SMALL_STATE(710)] = 40056, - [SMALL_STATE(711)] = 40117, - [SMALL_STATE(712)] = 40184, - [SMALL_STATE(713)] = 40229, - [SMALL_STATE(714)] = 40274, - [SMALL_STATE(715)] = 40319, - [SMALL_STATE(716)] = 40372, - [SMALL_STATE(717)] = 40415, - [SMALL_STATE(718)] = 40460, - [SMALL_STATE(719)] = 40513, - [SMALL_STATE(720)] = 40556, - [SMALL_STATE(721)] = 40603, - [SMALL_STATE(722)] = 40648, - [SMALL_STATE(723)] = 40695, - [SMALL_STATE(724)] = 40742, - [SMALL_STATE(725)] = 40787, - [SMALL_STATE(726)] = 40840, - [SMALL_STATE(727)] = 40899, - [SMALL_STATE(728)] = 40966, - [SMALL_STATE(729)] = 41031, - [SMALL_STATE(730)] = 41088, - [SMALL_STATE(731)] = 41141, - [SMALL_STATE(732)] = 41204, - [SMALL_STATE(733)] = 41251, - [SMALL_STATE(734)] = 41296, - [SMALL_STATE(735)] = 41341, + [SMALL_STATE(711)] = 40103, + [SMALL_STATE(712)] = 40156, + [SMALL_STATE(713)] = 40203, + [SMALL_STATE(714)] = 40262, + [SMALL_STATE(715)] = 40309, + [SMALL_STATE(716)] = 40354, + [SMALL_STATE(717)] = 40399, + [SMALL_STATE(718)] = 40442, + [SMALL_STATE(719)] = 40505, + [SMALL_STATE(720)] = 40572, + [SMALL_STATE(721)] = 40625, + [SMALL_STATE(722)] = 40692, + [SMALL_STATE(723)] = 40737, + [SMALL_STATE(724)] = 40782, + [SMALL_STATE(725)] = 40825, + [SMALL_STATE(726)] = 40872, + [SMALL_STATE(727)] = 40917, + [SMALL_STATE(728)] = 40970, + [SMALL_STATE(729)] = 41015, + [SMALL_STATE(730)] = 41082, + [SMALL_STATE(731)] = 41143, + [SMALL_STATE(732)] = 41208, + [SMALL_STATE(733)] = 41253, + [SMALL_STATE(734)] = 41310, + [SMALL_STATE(735)] = 41363, [SMALL_STATE(736)] = 41408, [SMALL_STATE(737)] = 41450, [SMALL_STATE(738)] = 41492, [SMALL_STATE(739)] = 41534, [SMALL_STATE(740)] = 41576, [SMALL_STATE(741)] = 41618, - [SMALL_STATE(742)] = 41660, - [SMALL_STATE(743)] = 41702, - [SMALL_STATE(744)] = 41744, - [SMALL_STATE(745)] = 41786, - [SMALL_STATE(746)] = 41830, - [SMALL_STATE(747)] = 41874, - [SMALL_STATE(748)] = 41916, - [SMALL_STATE(749)] = 41958, - [SMALL_STATE(750)] = 42000, - [SMALL_STATE(751)] = 42042, + [SMALL_STATE(742)] = 41662, + [SMALL_STATE(743)] = 41706, + [SMALL_STATE(744)] = 41750, + [SMALL_STATE(745)] = 41792, + [SMALL_STATE(746)] = 41834, + [SMALL_STATE(747)] = 41876, + [SMALL_STATE(748)] = 41918, + [SMALL_STATE(749)] = 41960, + [SMALL_STATE(750)] = 42002, + [SMALL_STATE(751)] = 42044, [SMALL_STATE(752)] = 42086, [SMALL_STATE(753)] = 42128, [SMALL_STATE(754)] = 42170, @@ -68893,42 +70479,42 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(757)] = 42296, [SMALL_STATE(758)] = 42338, [SMALL_STATE(759)] = 42380, - [SMALL_STATE(760)] = 42424, - [SMALL_STATE(761)] = 42466, - [SMALL_STATE(762)] = 42508, - [SMALL_STATE(763)] = 42550, - [SMALL_STATE(764)] = 42592, - [SMALL_STATE(765)] = 42634, - [SMALL_STATE(766)] = 42676, - [SMALL_STATE(767)] = 42718, - [SMALL_STATE(768)] = 42760, - [SMALL_STATE(769)] = 42802, + [SMALL_STATE(760)] = 42422, + [SMALL_STATE(761)] = 42464, + [SMALL_STATE(762)] = 42506, + [SMALL_STATE(763)] = 42548, + [SMALL_STATE(764)] = 42590, + [SMALL_STATE(765)] = 42632, + [SMALL_STATE(766)] = 42674, + [SMALL_STATE(767)] = 42716, + [SMALL_STATE(768)] = 42758, + [SMALL_STATE(769)] = 42800, [SMALL_STATE(770)] = 42844, - [SMALL_STATE(771)] = 42886, + [SMALL_STATE(771)] = 42888, [SMALL_STATE(772)] = 42930, [SMALL_STATE(773)] = 42972, [SMALL_STATE(774)] = 43014, [SMALL_STATE(775)] = 43055, [SMALL_STATE(776)] = 43096, [SMALL_STATE(777)] = 43137, - [SMALL_STATE(778)] = 43182, - [SMALL_STATE(779)] = 43223, - [SMALL_STATE(780)] = 43264, - [SMALL_STATE(781)] = 43305, - [SMALL_STATE(782)] = 43346, - [SMALL_STATE(783)] = 43387, - [SMALL_STATE(784)] = 43428, - [SMALL_STATE(785)] = 43469, - [SMALL_STATE(786)] = 43510, - [SMALL_STATE(787)] = 43555, - [SMALL_STATE(788)] = 43596, - [SMALL_STATE(789)] = 43637, - [SMALL_STATE(790)] = 43678, - [SMALL_STATE(791)] = 43719, - [SMALL_STATE(792)] = 43760, - [SMALL_STATE(793)] = 43801, - [SMALL_STATE(794)] = 43842, - [SMALL_STATE(795)] = 43883, + [SMALL_STATE(778)] = 43178, + [SMALL_STATE(779)] = 43219, + [SMALL_STATE(780)] = 43260, + [SMALL_STATE(781)] = 43301, + [SMALL_STATE(782)] = 43342, + [SMALL_STATE(783)] = 43383, + [SMALL_STATE(784)] = 43424, + [SMALL_STATE(785)] = 43465, + [SMALL_STATE(786)] = 43506, + [SMALL_STATE(787)] = 43547, + [SMALL_STATE(788)] = 43588, + [SMALL_STATE(789)] = 43629, + [SMALL_STATE(790)] = 43670, + [SMALL_STATE(791)] = 43711, + [SMALL_STATE(792)] = 43752, + [SMALL_STATE(793)] = 43793, + [SMALL_STATE(794)] = 43834, + [SMALL_STATE(795)] = 43879, [SMALL_STATE(796)] = 43924, [SMALL_STATE(797)] = 43965, [SMALL_STATE(798)] = 44006, @@ -68947,7 +70533,7 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(811)] = 44605, [SMALL_STATE(812)] = 44679, [SMALL_STATE(813)] = 44753, - [SMALL_STATE(814)] = 44824, + [SMALL_STATE(814)] = 44826, [SMALL_STATE(815)] = 44897, [SMALL_STATE(816)] = 44968, [SMALL_STATE(817)] = 45039, @@ -68955,7 +70541,7 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(819)] = 45181, [SMALL_STATE(820)] = 45253, [SMALL_STATE(821)] = 45325, - [SMALL_STATE(822)] = 45397, + [SMALL_STATE(822)] = 45393, [SMALL_STATE(823)] = 45465, [SMALL_STATE(824)] = 45531, [SMALL_STATE(825)] = 45594, @@ -68967,526 +70553,526 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(831)] = 45887, [SMALL_STATE(832)] = 45927, [SMALL_STATE(833)] = 45957, - [SMALL_STATE(834)] = 45994, - [SMALL_STATE(835)] = 46019, - [SMALL_STATE(836)] = 46048, - [SMALL_STATE(837)] = 46073, - [SMALL_STATE(838)] = 46098, - [SMALL_STATE(839)] = 46123, - [SMALL_STATE(840)] = 46160, + [SMALL_STATE(834)] = 45982, + [SMALL_STATE(835)] = 46007, + [SMALL_STATE(836)] = 46044, + [SMALL_STATE(837)] = 46069, + [SMALL_STATE(838)] = 46106, + [SMALL_STATE(839)] = 46135, + [SMALL_STATE(840)] = 46164, [SMALL_STATE(841)] = 46189, [SMALL_STATE(842)] = 46223, [SMALL_STATE(843)] = 46251, - [SMALL_STATE(844)] = 46297, + [SMALL_STATE(844)] = 46285, [SMALL_STATE(845)] = 46331, [SMALL_STATE(846)] = 46374, [SMALL_STATE(847)] = 46417, - [SMALL_STATE(848)] = 46460, - [SMALL_STATE(849)] = 46503, - [SMALL_STATE(850)] = 46546, + [SMALL_STATE(848)] = 46448, + [SMALL_STATE(849)] = 46491, + [SMALL_STATE(850)] = 46534, [SMALL_STATE(851)] = 46577, - [SMALL_STATE(852)] = 46623, - [SMALL_STATE(853)] = 46669, - [SMALL_STATE(854)] = 46715, + [SMALL_STATE(852)] = 46617, + [SMALL_STATE(853)] = 46663, + [SMALL_STATE(854)] = 46709, [SMALL_STATE(855)] = 46755, - [SMALL_STATE(856)] = 46792, - [SMALL_STATE(857)] = 46829, + [SMALL_STATE(856)] = 46780, + [SMALL_STATE(857)] = 46817, [SMALL_STATE(858)] = 46854, [SMALL_STATE(859)] = 46891, [SMALL_STATE(860)] = 46928, [SMALL_STATE(861)] = 46950, [SMALL_STATE(862)] = 46984, - [SMALL_STATE(863)] = 47006, + [SMALL_STATE(863)] = 47018, [SMALL_STATE(864)] = 47040, [SMALL_STATE(865)] = 47077, [SMALL_STATE(866)] = 47099, - [SMALL_STATE(867)] = 47120, - [SMALL_STATE(868)] = 47143, - [SMALL_STATE(869)] = 47168, - [SMALL_STATE(870)] = 47205, - [SMALL_STATE(871)] = 47224, - [SMALL_STATE(872)] = 47249, - [SMALL_STATE(873)] = 47272, - [SMALL_STATE(874)] = 47309, - [SMALL_STATE(875)] = 47346, - [SMALL_STATE(876)] = 47383, - [SMALL_STATE(877)] = 47408, - [SMALL_STATE(878)] = 47435, - [SMALL_STATE(879)] = 47456, - [SMALL_STATE(880)] = 47479, - [SMALL_STATE(881)] = 47500, - [SMALL_STATE(882)] = 47523, - [SMALL_STATE(883)] = 47546, - [SMALL_STATE(884)] = 47567, - [SMALL_STATE(885)] = 47584, - [SMALL_STATE(886)] = 47605, - [SMALL_STATE(887)] = 47628, - [SMALL_STATE(888)] = 47651, + [SMALL_STATE(867)] = 47118, + [SMALL_STATE(868)] = 47155, + [SMALL_STATE(869)] = 47192, + [SMALL_STATE(870)] = 47215, + [SMALL_STATE(871)] = 47242, + [SMALL_STATE(872)] = 47263, + [SMALL_STATE(873)] = 47286, + [SMALL_STATE(874)] = 47307, + [SMALL_STATE(875)] = 47328, + [SMALL_STATE(876)] = 47351, + [SMALL_STATE(877)] = 47374, + [SMALL_STATE(878)] = 47399, + [SMALL_STATE(879)] = 47422, + [SMALL_STATE(880)] = 47445, + [SMALL_STATE(881)] = 47466, + [SMALL_STATE(882)] = 47489, + [SMALL_STATE(883)] = 47506, + [SMALL_STATE(884)] = 47529, + [SMALL_STATE(885)] = 47566, + [SMALL_STATE(886)] = 47591, + [SMALL_STATE(887)] = 47612, + [SMALL_STATE(888)] = 47637, [SMALL_STATE(889)] = 47674, [SMALL_STATE(890)] = 47704, - [SMALL_STATE(891)] = 47726, - [SMALL_STATE(892)] = 47756, - [SMALL_STATE(893)] = 47774, - [SMALL_STATE(894)] = 47808, - [SMALL_STATE(895)] = 47826, - [SMALL_STATE(896)] = 47856, - [SMALL_STATE(897)] = 47890, - [SMALL_STATE(898)] = 47912, - [SMALL_STATE(899)] = 47946, + [SMALL_STATE(891)] = 47734, + [SMALL_STATE(892)] = 47764, + [SMALL_STATE(893)] = 47794, + [SMALL_STATE(894)] = 47828, + [SMALL_STATE(895)] = 47862, + [SMALL_STATE(896)] = 47896, + [SMALL_STATE(897)] = 47914, + [SMALL_STATE(898)] = 47932, + [SMALL_STATE(899)] = 47954, [SMALL_STATE(900)] = 47976, [SMALL_STATE(901)] = 48010, - [SMALL_STATE(902)] = 48032, - [SMALL_STATE(903)] = 48062, + [SMALL_STATE(902)] = 48044, + [SMALL_STATE(903)] = 48066, [SMALL_STATE(904)] = 48096, - [SMALL_STATE(905)] = 48130, - [SMALL_STATE(906)] = 48164, + [SMALL_STATE(905)] = 48126, + [SMALL_STATE(906)] = 48160, [SMALL_STATE(907)] = 48194, [SMALL_STATE(908)] = 48224, - [SMALL_STATE(909)] = 48254, + [SMALL_STATE(909)] = 48246, [SMALL_STATE(910)] = 48276, - [SMALL_STATE(911)] = 48306, - [SMALL_STATE(912)] = 48340, + [SMALL_STATE(911)] = 48310, + [SMALL_STATE(912)] = 48344, [SMALL_STATE(913)] = 48374, [SMALL_STATE(914)] = 48393, [SMALL_STATE(915)] = 48412, [SMALL_STATE(916)] = 48431, - [SMALL_STATE(917)] = 48450, + [SMALL_STATE(917)] = 48454, [SMALL_STATE(918)] = 48473, [SMALL_STATE(919)] = 48498, - [SMALL_STATE(920)] = 48517, + [SMALL_STATE(920)] = 48521, [SMALL_STATE(921)] = 48540, [SMALL_STATE(922)] = 48559, [SMALL_STATE(923)] = 48582, - [SMALL_STATE(924)] = 48598, - [SMALL_STATE(925)] = 48616, - [SMALL_STATE(926)] = 48630, - [SMALL_STATE(927)] = 48654, - [SMALL_STATE(928)] = 48668, - [SMALL_STATE(929)] = 48686, - [SMALL_STATE(930)] = 48700, - [SMALL_STATE(931)] = 48714, - [SMALL_STATE(932)] = 48728, - [SMALL_STATE(933)] = 48748, + [SMALL_STATE(924)] = 48596, + [SMALL_STATE(925)] = 48610, + [SMALL_STATE(926)] = 48628, + [SMALL_STATE(927)] = 48642, + [SMALL_STATE(928)] = 48656, + [SMALL_STATE(929)] = 48674, + [SMALL_STATE(930)] = 48688, + [SMALL_STATE(931)] = 48702, + [SMALL_STATE(932)] = 48720, + [SMALL_STATE(933)] = 48744, [SMALL_STATE(934)] = 48762, - [SMALL_STATE(935)] = 48780, - [SMALL_STATE(936)] = 48798, - [SMALL_STATE(937)] = 48814, - [SMALL_STATE(938)] = 48828, - [SMALL_STATE(939)] = 48842, - [SMALL_STATE(940)] = 48856, - [SMALL_STATE(941)] = 48870, - [SMALL_STATE(942)] = 48888, - [SMALL_STATE(943)] = 48906, - [SMALL_STATE(944)] = 48924, - [SMALL_STATE(945)] = 48942, - [SMALL_STATE(946)] = 48956, + [SMALL_STATE(935)] = 48776, + [SMALL_STATE(936)] = 48790, + [SMALL_STATE(937)] = 48808, + [SMALL_STATE(938)] = 48822, + [SMALL_STATE(939)] = 48840, + [SMALL_STATE(940)] = 48858, + [SMALL_STATE(941)] = 48872, + [SMALL_STATE(942)] = 48890, + [SMALL_STATE(943)] = 48904, + [SMALL_STATE(944)] = 48918, + [SMALL_STATE(945)] = 48932, + [SMALL_STATE(946)] = 48950, [SMALL_STATE(947)] = 48970, [SMALL_STATE(948)] = 48984, - [SMALL_STATE(949)] = 49010, - [SMALL_STATE(950)] = 49024, - [SMALL_STATE(951)] = 49042, - [SMALL_STATE(952)] = 49064, - [SMALL_STATE(953)] = 49082, - [SMALL_STATE(954)] = 49100, - [SMALL_STATE(955)] = 49114, - [SMALL_STATE(956)] = 49128, - [SMALL_STATE(957)] = 49142, - [SMALL_STATE(958)] = 49156, - [SMALL_STATE(959)] = 49180, - [SMALL_STATE(960)] = 49194, - [SMALL_STATE(961)] = 49214, - [SMALL_STATE(962)] = 49228, - [SMALL_STATE(963)] = 49248, - [SMALL_STATE(964)] = 49262, - [SMALL_STATE(965)] = 49276, - [SMALL_STATE(966)] = 49290, - [SMALL_STATE(967)] = 49310, - [SMALL_STATE(968)] = 49324, + [SMALL_STATE(949)] = 48998, + [SMALL_STATE(950)] = 49012, + [SMALL_STATE(951)] = 49026, + [SMALL_STATE(952)] = 49040, + [SMALL_STATE(953)] = 49060, + [SMALL_STATE(954)] = 49074, + [SMALL_STATE(955)] = 49088, + [SMALL_STATE(956)] = 49102, + [SMALL_STATE(957)] = 49128, + [SMALL_STATE(958)] = 49152, + [SMALL_STATE(959)] = 49170, + [SMALL_STATE(960)] = 49190, + [SMALL_STATE(961)] = 49210, + [SMALL_STATE(962)] = 49224, + [SMALL_STATE(963)] = 49238, + [SMALL_STATE(964)] = 49256, + [SMALL_STATE(965)] = 49270, + [SMALL_STATE(966)] = 49292, + [SMALL_STATE(967)] = 49308, + [SMALL_STATE(968)] = 49326, [SMALL_STATE(969)] = 49342, [SMALL_STATE(970)] = 49361, - [SMALL_STATE(971)] = 49384, - [SMALL_STATE(972)] = 49409, - [SMALL_STATE(973)] = 49428, - [SMALL_STATE(974)] = 49441, - [SMALL_STATE(975)] = 49466, - [SMALL_STATE(976)] = 49489, - [SMALL_STATE(977)] = 49512, - [SMALL_STATE(978)] = 49525, - [SMALL_STATE(979)] = 49538, - [SMALL_STATE(980)] = 49559, - [SMALL_STATE(981)] = 49580, - [SMALL_STATE(982)] = 49601, - [SMALL_STATE(983)] = 49614, - [SMALL_STATE(984)] = 49635, - [SMALL_STATE(985)] = 49654, - [SMALL_STATE(986)] = 49673, - [SMALL_STATE(987)] = 49698, - [SMALL_STATE(988)] = 49711, - [SMALL_STATE(989)] = 49724, - [SMALL_STATE(990)] = 49739, - [SMALL_STATE(991)] = 49758, - [SMALL_STATE(992)] = 49781, - [SMALL_STATE(993)] = 49800, - [SMALL_STATE(994)] = 49819, - [SMALL_STATE(995)] = 49842, - [SMALL_STATE(996)] = 49861, - [SMALL_STATE(997)] = 49882, - [SMALL_STATE(998)] = 49903, - [SMALL_STATE(999)] = 49916, - [SMALL_STATE(1000)] = 49935, - [SMALL_STATE(1001)] = 49958, - [SMALL_STATE(1002)] = 49975, - [SMALL_STATE(1003)] = 49998, - [SMALL_STATE(1004)] = 50021, - [SMALL_STATE(1005)] = 50042, - [SMALL_STATE(1006)] = 50059, - [SMALL_STATE(1007)] = 50074, - [SMALL_STATE(1008)] = 50099, - [SMALL_STATE(1009)] = 50116, - [SMALL_STATE(1010)] = 50135, + [SMALL_STATE(971)] = 49376, + [SMALL_STATE(972)] = 49393, + [SMALL_STATE(973)] = 49408, + [SMALL_STATE(974)] = 49429, + [SMALL_STATE(975)] = 49452, + [SMALL_STATE(976)] = 49473, + [SMALL_STATE(977)] = 49492, + [SMALL_STATE(978)] = 49515, + [SMALL_STATE(979)] = 49534, + [SMALL_STATE(980)] = 49547, + [SMALL_STATE(981)] = 49570, + [SMALL_STATE(982)] = 49589, + [SMALL_STATE(983)] = 49602, + [SMALL_STATE(984)] = 49621, + [SMALL_STATE(985)] = 49640, + [SMALL_STATE(986)] = 49659, + [SMALL_STATE(987)] = 49672, + [SMALL_STATE(988)] = 49693, + [SMALL_STATE(989)] = 49714, + [SMALL_STATE(990)] = 49727, + [SMALL_STATE(991)] = 49752, + [SMALL_STATE(992)] = 49777, + [SMALL_STATE(993)] = 49798, + [SMALL_STATE(994)] = 49821, + [SMALL_STATE(995)] = 49844, + [SMALL_STATE(996)] = 49863, + [SMALL_STATE(997)] = 49888, + [SMALL_STATE(998)] = 49911, + [SMALL_STATE(999)] = 49930, + [SMALL_STATE(1000)] = 49953, + [SMALL_STATE(1001)] = 49966, + [SMALL_STATE(1002)] = 49983, + [SMALL_STATE(1003)] = 50004, + [SMALL_STATE(1004)] = 50017, + [SMALL_STATE(1005)] = 50040, + [SMALL_STATE(1006)] = 50053, + [SMALL_STATE(1007)] = 50072, + [SMALL_STATE(1008)] = 50089, + [SMALL_STATE(1009)] = 50112, + [SMALL_STATE(1010)] = 50133, [SMALL_STATE(1011)] = 50158, - [SMALL_STATE(1012)] = 50176, - [SMALL_STATE(1013)] = 50192, - [SMALL_STATE(1014)] = 50208, - [SMALL_STATE(1015)] = 50230, - [SMALL_STATE(1016)] = 50244, - [SMALL_STATE(1017)] = 50260, - [SMALL_STATE(1018)] = 50278, - [SMALL_STATE(1019)] = 50296, - [SMALL_STATE(1020)] = 50308, - [SMALL_STATE(1021)] = 50322, - [SMALL_STATE(1022)] = 50344, - [SMALL_STATE(1023)] = 50362, - [SMALL_STATE(1024)] = 50382, + [SMALL_STATE(1012)] = 50180, + [SMALL_STATE(1013)] = 50200, + [SMALL_STATE(1014)] = 50214, + [SMALL_STATE(1015)] = 50236, + [SMALL_STATE(1016)] = 50248, + [SMALL_STATE(1017)] = 50266, + [SMALL_STATE(1018)] = 50282, + [SMALL_STATE(1019)] = 50300, + [SMALL_STATE(1020)] = 50316, + [SMALL_STATE(1021)] = 50330, + [SMALL_STATE(1022)] = 50348, + [SMALL_STATE(1023)] = 50370, + [SMALL_STATE(1024)] = 50384, [SMALL_STATE(1025)] = 50402, - [SMALL_STATE(1026)] = 50422, - [SMALL_STATE(1027)] = 50440, + [SMALL_STATE(1026)] = 50420, + [SMALL_STATE(1027)] = 50442, [SMALL_STATE(1028)] = 50454, - [SMALL_STATE(1029)] = 50470, - [SMALL_STATE(1030)] = 50492, - [SMALL_STATE(1031)] = 50514, - [SMALL_STATE(1032)] = 50536, - [SMALL_STATE(1033)] = 50550, + [SMALL_STATE(1029)] = 50474, + [SMALL_STATE(1030)] = 50490, + [SMALL_STATE(1031)] = 50512, + [SMALL_STATE(1032)] = 50528, + [SMALL_STATE(1033)] = 50544, [SMALL_STATE(1034)] = 50564, - [SMALL_STATE(1035)] = 50584, - [SMALL_STATE(1036)] = 50600, - [SMALL_STATE(1037)] = 50622, - [SMALL_STATE(1038)] = 50640, - [SMALL_STATE(1039)] = 50652, - [SMALL_STATE(1040)] = 50668, - [SMALL_STATE(1041)] = 50682, + [SMALL_STATE(1035)] = 50580, + [SMALL_STATE(1036)] = 50598, + [SMALL_STATE(1037)] = 50612, + [SMALL_STATE(1038)] = 50630, + [SMALL_STATE(1039)] = 50650, + [SMALL_STATE(1040)] = 50672, + [SMALL_STATE(1041)] = 50688, [SMALL_STATE(1042)] = 50702, - [SMALL_STATE(1043)] = 50724, - [SMALL_STATE(1044)] = 50740, - [SMALL_STATE(1045)] = 50760, + [SMALL_STATE(1043)] = 50716, + [SMALL_STATE(1044)] = 50736, + [SMALL_STATE(1045)] = 50756, [SMALL_STATE(1046)] = 50778, - [SMALL_STATE(1047)] = 50795, - [SMALL_STATE(1048)] = 50814, - [SMALL_STATE(1049)] = 50829, - [SMALL_STATE(1050)] = 50846, - [SMALL_STATE(1051)] = 50863, - [SMALL_STATE(1052)] = 50882, - [SMALL_STATE(1053)] = 50901, - [SMALL_STATE(1054)] = 50920, - [SMALL_STATE(1055)] = 50939, - [SMALL_STATE(1056)] = 50956, - [SMALL_STATE(1057)] = 50973, - [SMALL_STATE(1058)] = 50984, - [SMALL_STATE(1059)] = 51003, - [SMALL_STATE(1060)] = 51018, - [SMALL_STATE(1061)] = 51033, + [SMALL_STATE(1047)] = 50797, + [SMALL_STATE(1048)] = 50816, + [SMALL_STATE(1049)] = 50827, + [SMALL_STATE(1050)] = 50844, + [SMALL_STATE(1051)] = 50861, + [SMALL_STATE(1052)] = 50876, + [SMALL_STATE(1053)] = 50893, + [SMALL_STATE(1054)] = 50912, + [SMALL_STATE(1055)] = 50931, + [SMALL_STATE(1056)] = 50948, + [SMALL_STATE(1057)] = 50965, + [SMALL_STATE(1058)] = 50982, + [SMALL_STATE(1059)] = 51001, + [SMALL_STATE(1060)] = 51016, + [SMALL_STATE(1061)] = 51035, [SMALL_STATE(1062)] = 51050, - [SMALL_STATE(1063)] = 51067, - [SMALL_STATE(1064)] = 51082, - [SMALL_STATE(1065)] = 51099, - [SMALL_STATE(1066)] = 51114, - [SMALL_STATE(1067)] = 51131, - [SMALL_STATE(1068)] = 51148, - [SMALL_STATE(1069)] = 51165, + [SMALL_STATE(1063)] = 51061, + [SMALL_STATE(1064)] = 51078, + [SMALL_STATE(1065)] = 51095, + [SMALL_STATE(1066)] = 51110, + [SMALL_STATE(1067)] = 51127, + [SMALL_STATE(1068)] = 51146, + [SMALL_STATE(1069)] = 51163, [SMALL_STATE(1070)] = 51182, - [SMALL_STATE(1071)] = 51201, - [SMALL_STATE(1072)] = 51220, - [SMALL_STATE(1073)] = 51237, - [SMALL_STATE(1074)] = 51252, - [SMALL_STATE(1075)] = 51271, - [SMALL_STATE(1076)] = 51288, - [SMALL_STATE(1077)] = 51305, - [SMALL_STATE(1078)] = 51316, - [SMALL_STATE(1079)] = 51333, - [SMALL_STATE(1080)] = 51350, - [SMALL_STATE(1081)] = 51365, - [SMALL_STATE(1082)] = 51384, + [SMALL_STATE(1071)] = 51199, + [SMALL_STATE(1072)] = 51216, + [SMALL_STATE(1073)] = 51233, + [SMALL_STATE(1074)] = 51250, + [SMALL_STATE(1075)] = 51267, + [SMALL_STATE(1076)] = 51282, + [SMALL_STATE(1077)] = 51299, + [SMALL_STATE(1078)] = 51318, + [SMALL_STATE(1079)] = 51329, + [SMALL_STATE(1080)] = 51344, + [SMALL_STATE(1081)] = 51363, + [SMALL_STATE(1082)] = 51378, [SMALL_STATE(1083)] = 51395, [SMALL_STATE(1084)] = 51412, [SMALL_STATE(1085)] = 51426, [SMALL_STATE(1086)] = 51442, [SMALL_STATE(1087)] = 51456, - [SMALL_STATE(1088)] = 51472, - [SMALL_STATE(1089)] = 51482, - [SMALL_STATE(1090)] = 51496, - [SMALL_STATE(1091)] = 51512, - [SMALL_STATE(1092)] = 51528, - [SMALL_STATE(1093)] = 51542, + [SMALL_STATE(1088)] = 51470, + [SMALL_STATE(1089)] = 51486, + [SMALL_STATE(1090)] = 51502, + [SMALL_STATE(1091)] = 51518, + [SMALL_STATE(1092)] = 51534, + [SMALL_STATE(1093)] = 51548, [SMALL_STATE(1094)] = 51558, - [SMALL_STATE(1095)] = 51572, + [SMALL_STATE(1095)] = 51574, [SMALL_STATE(1096)] = 51588, [SMALL_STATE(1097)] = 51604, [SMALL_STATE(1098)] = 51618, - [SMALL_STATE(1099)] = 51634, - [SMALL_STATE(1100)] = 51644, - [SMALL_STATE(1101)] = 51658, - [SMALL_STATE(1102)] = 51674, + [SMALL_STATE(1099)] = 51632, + [SMALL_STATE(1100)] = 51646, + [SMALL_STATE(1101)] = 51662, + [SMALL_STATE(1102)] = 51676, [SMALL_STATE(1103)] = 51690, [SMALL_STATE(1104)] = 51704, - [SMALL_STATE(1105)] = 51718, - [SMALL_STATE(1106)] = 51732, - [SMALL_STATE(1107)] = 51746, + [SMALL_STATE(1105)] = 51720, + [SMALL_STATE(1106)] = 51734, + [SMALL_STATE(1107)] = 51748, [SMALL_STATE(1108)] = 51762, - [SMALL_STATE(1109)] = 51778, - [SMALL_STATE(1110)] = 51794, - [SMALL_STATE(1111)] = 51810, - [SMALL_STATE(1112)] = 51826, - [SMALL_STATE(1113)] = 51840, - [SMALL_STATE(1114)] = 51854, - [SMALL_STATE(1115)] = 51868, - [SMALL_STATE(1116)] = 51878, - [SMALL_STATE(1117)] = 51892, - [SMALL_STATE(1118)] = 51908, - [SMALL_STATE(1119)] = 51922, - [SMALL_STATE(1120)] = 51934, - [SMALL_STATE(1121)] = 51948, - [SMALL_STATE(1122)] = 51964, - [SMALL_STATE(1123)] = 51978, - [SMALL_STATE(1124)] = 51994, - [SMALL_STATE(1125)] = 52008, - [SMALL_STATE(1126)] = 52022, - [SMALL_STATE(1127)] = 52036, - [SMALL_STATE(1128)] = 52050, - [SMALL_STATE(1129)] = 52066, - [SMALL_STATE(1130)] = 52076, - [SMALL_STATE(1131)] = 52086, - [SMALL_STATE(1132)] = 52102, - [SMALL_STATE(1133)] = 52116, - [SMALL_STATE(1134)] = 52126, - [SMALL_STATE(1135)] = 52140, + [SMALL_STATE(1109)] = 51776, + [SMALL_STATE(1110)] = 51790, + [SMALL_STATE(1111)] = 51806, + [SMALL_STATE(1112)] = 51820, + [SMALL_STATE(1113)] = 51834, + [SMALL_STATE(1114)] = 51844, + [SMALL_STATE(1115)] = 51854, + [SMALL_STATE(1116)] = 51870, + [SMALL_STATE(1117)] = 51884, + [SMALL_STATE(1118)] = 51898, + [SMALL_STATE(1119)] = 51908, + [SMALL_STATE(1120)] = 51918, + [SMALL_STATE(1121)] = 51932, + [SMALL_STATE(1122)] = 51948, + [SMALL_STATE(1123)] = 51962, + [SMALL_STATE(1124)] = 51978, + [SMALL_STATE(1125)] = 51990, + [SMALL_STATE(1126)] = 52006, + [SMALL_STATE(1127)] = 52020, + [SMALL_STATE(1128)] = 52034, + [SMALL_STATE(1129)] = 52044, + [SMALL_STATE(1130)] = 52060, + [SMALL_STATE(1131)] = 52076, + [SMALL_STATE(1132)] = 52092, + [SMALL_STATE(1133)] = 52108, + [SMALL_STATE(1134)] = 52122, + [SMALL_STATE(1135)] = 52138, [SMALL_STATE(1136)] = 52154, [SMALL_STATE(1137)] = 52168, - [SMALL_STATE(1138)] = 52182, + [SMALL_STATE(1138)] = 52184, [SMALL_STATE(1139)] = 52198, [SMALL_STATE(1140)] = 52212, [SMALL_STATE(1141)] = 52228, - [SMALL_STATE(1142)] = 52244, - [SMALL_STATE(1143)] = 52258, + [SMALL_STATE(1142)] = 52240, + [SMALL_STATE(1143)] = 52256, [SMALL_STATE(1144)] = 52272, - [SMALL_STATE(1145)] = 52288, - [SMALL_STATE(1146)] = 52304, - [SMALL_STATE(1147)] = 52320, + [SMALL_STATE(1145)] = 52286, + [SMALL_STATE(1146)] = 52302, + [SMALL_STATE(1147)] = 52318, [SMALL_STATE(1148)] = 52334, [SMALL_STATE(1149)] = 52350, - [SMALL_STATE(1150)] = 52366, - [SMALL_STATE(1151)] = 52382, + [SMALL_STATE(1150)] = 52364, + [SMALL_STATE(1151)] = 52380, [SMALL_STATE(1152)] = 52394, [SMALL_STATE(1153)] = 52410, - [SMALL_STATE(1154)] = 52423, - [SMALL_STATE(1155)] = 52436, - [SMALL_STATE(1156)] = 52449, - [SMALL_STATE(1157)] = 52462, - [SMALL_STATE(1158)] = 52471, - [SMALL_STATE(1159)] = 52484, - [SMALL_STATE(1160)] = 52497, - [SMALL_STATE(1161)] = 52510, - [SMALL_STATE(1162)] = 52523, - [SMALL_STATE(1163)] = 52532, - [SMALL_STATE(1164)] = 52545, - [SMALL_STATE(1165)] = 52558, - [SMALL_STATE(1166)] = 52571, - [SMALL_STATE(1167)] = 52584, + [SMALL_STATE(1154)] = 52421, + [SMALL_STATE(1155)] = 52430, + [SMALL_STATE(1156)] = 52443, + [SMALL_STATE(1157)] = 52456, + [SMALL_STATE(1158)] = 52469, + [SMALL_STATE(1159)] = 52482, + [SMALL_STATE(1160)] = 52495, + [SMALL_STATE(1161)] = 52508, + [SMALL_STATE(1162)] = 52517, + [SMALL_STATE(1163)] = 52530, + [SMALL_STATE(1164)] = 52543, + [SMALL_STATE(1165)] = 52556, + [SMALL_STATE(1166)] = 52569, + [SMALL_STATE(1167)] = 52582, [SMALL_STATE(1168)] = 52595, [SMALL_STATE(1169)] = 52606, - [SMALL_STATE(1170)] = 52615, - [SMALL_STATE(1171)] = 52628, - [SMALL_STATE(1172)] = 52641, - [SMALL_STATE(1173)] = 52654, - [SMALL_STATE(1174)] = 52667, - [SMALL_STATE(1175)] = 52680, - [SMALL_STATE(1176)] = 52693, - [SMALL_STATE(1177)] = 52706, - [SMALL_STATE(1178)] = 52719, - [SMALL_STATE(1179)] = 52732, - [SMALL_STATE(1180)] = 52745, + [SMALL_STATE(1170)] = 52619, + [SMALL_STATE(1171)] = 52632, + [SMALL_STATE(1172)] = 52645, + [SMALL_STATE(1173)] = 52658, + [SMALL_STATE(1174)] = 52671, + [SMALL_STATE(1175)] = 52684, + [SMALL_STATE(1176)] = 52695, + [SMALL_STATE(1177)] = 52708, + [SMALL_STATE(1178)] = 52721, + [SMALL_STATE(1179)] = 52730, + [SMALL_STATE(1180)] = 52743, [SMALL_STATE(1181)] = 52754, [SMALL_STATE(1182)] = 52767, - [SMALL_STATE(1183)] = 52780, - [SMALL_STATE(1184)] = 52793, - [SMALL_STATE(1185)] = 52804, - [SMALL_STATE(1186)] = 52817, - [SMALL_STATE(1187)] = 52830, - [SMALL_STATE(1188)] = 52843, + [SMALL_STATE(1183)] = 52776, + [SMALL_STATE(1184)] = 52789, + [SMALL_STATE(1185)] = 52802, + [SMALL_STATE(1186)] = 52813, + [SMALL_STATE(1187)] = 52826, + [SMALL_STATE(1188)] = 52839, [SMALL_STATE(1189)] = 52852, [SMALL_STATE(1190)] = 52865, - [SMALL_STATE(1191)] = 52874, + [SMALL_STATE(1191)] = 52878, [SMALL_STATE(1192)] = 52887, - [SMALL_STATE(1193)] = 52900, - [SMALL_STATE(1194)] = 52913, - [SMALL_STATE(1195)] = 52926, - [SMALL_STATE(1196)] = 52939, - [SMALL_STATE(1197)] = 52952, - [SMALL_STATE(1198)] = 52965, - [SMALL_STATE(1199)] = 52978, - [SMALL_STATE(1200)] = 52991, - [SMALL_STATE(1201)] = 53004, - [SMALL_STATE(1202)] = 53017, - [SMALL_STATE(1203)] = 53030, - [SMALL_STATE(1204)] = 53043, - [SMALL_STATE(1205)] = 53056, - [SMALL_STATE(1206)] = 53069, - [SMALL_STATE(1207)] = 53082, - [SMALL_STATE(1208)] = 53095, - [SMALL_STATE(1209)] = 53108, - [SMALL_STATE(1210)] = 53119, - [SMALL_STATE(1211)] = 53128, - [SMALL_STATE(1212)] = 53139, - [SMALL_STATE(1213)] = 53150, - [SMALL_STATE(1214)] = 53163, - [SMALL_STATE(1215)] = 53176, - [SMALL_STATE(1216)] = 53189, - [SMALL_STATE(1217)] = 53202, - [SMALL_STATE(1218)] = 53215, - [SMALL_STATE(1219)] = 53228, - [SMALL_STATE(1220)] = 53241, - [SMALL_STATE(1221)] = 53254, - [SMALL_STATE(1222)] = 53267, - [SMALL_STATE(1223)] = 53278, - [SMALL_STATE(1224)] = 53291, - [SMALL_STATE(1225)] = 53304, - [SMALL_STATE(1226)] = 53317, - [SMALL_STATE(1227)] = 53330, - [SMALL_STATE(1228)] = 53343, - [SMALL_STATE(1229)] = 53356, - [SMALL_STATE(1230)] = 53369, - [SMALL_STATE(1231)] = 53382, - [SMALL_STATE(1232)] = 53395, - [SMALL_STATE(1233)] = 53408, - [SMALL_STATE(1234)] = 53421, - [SMALL_STATE(1235)] = 53434, - [SMALL_STATE(1236)] = 53447, - [SMALL_STATE(1237)] = 53460, - [SMALL_STATE(1238)] = 53473, - [SMALL_STATE(1239)] = 53486, - [SMALL_STATE(1240)] = 53499, - [SMALL_STATE(1241)] = 53512, - [SMALL_STATE(1242)] = 53525, - [SMALL_STATE(1243)] = 53534, - [SMALL_STATE(1244)] = 53547, - [SMALL_STATE(1245)] = 53560, - [SMALL_STATE(1246)] = 53573, - [SMALL_STATE(1247)] = 53582, - [SMALL_STATE(1248)] = 53595, - [SMALL_STATE(1249)] = 53606, - [SMALL_STATE(1250)] = 53619, - [SMALL_STATE(1251)] = 53632, - [SMALL_STATE(1252)] = 53645, - [SMALL_STATE(1253)] = 53658, - [SMALL_STATE(1254)] = 53671, - [SMALL_STATE(1255)] = 53684, - [SMALL_STATE(1256)] = 53697, - [SMALL_STATE(1257)] = 53710, - [SMALL_STATE(1258)] = 53723, - [SMALL_STATE(1259)] = 53734, - [SMALL_STATE(1260)] = 53743, - [SMALL_STATE(1261)] = 53756, - [SMALL_STATE(1262)] = 53765, - [SMALL_STATE(1263)] = 53778, - [SMALL_STATE(1264)] = 53791, - [SMALL_STATE(1265)] = 53804, - [SMALL_STATE(1266)] = 53813, - [SMALL_STATE(1267)] = 53826, - [SMALL_STATE(1268)] = 53835, - [SMALL_STATE(1269)] = 53848, - [SMALL_STATE(1270)] = 53861, - [SMALL_STATE(1271)] = 53874, - [SMALL_STATE(1272)] = 53887, - [SMALL_STATE(1273)] = 53900, - [SMALL_STATE(1274)] = 53909, - [SMALL_STATE(1275)] = 53922, - [SMALL_STATE(1276)] = 53933, - [SMALL_STATE(1277)] = 53942, - [SMALL_STATE(1278)] = 53955, - [SMALL_STATE(1279)] = 53968, - [SMALL_STATE(1280)] = 53981, - [SMALL_STATE(1281)] = 53994, - [SMALL_STATE(1282)] = 54005, + [SMALL_STATE(1193)] = 52896, + [SMALL_STATE(1194)] = 52905, + [SMALL_STATE(1195)] = 52918, + [SMALL_STATE(1196)] = 52931, + [SMALL_STATE(1197)] = 52944, + [SMALL_STATE(1198)] = 52957, + [SMALL_STATE(1199)] = 52970, + [SMALL_STATE(1200)] = 52983, + [SMALL_STATE(1201)] = 52992, + [SMALL_STATE(1202)] = 53005, + [SMALL_STATE(1203)] = 53018, + [SMALL_STATE(1204)] = 53031, + [SMALL_STATE(1205)] = 53040, + [SMALL_STATE(1206)] = 53053, + [SMALL_STATE(1207)] = 53066, + [SMALL_STATE(1208)] = 53079, + [SMALL_STATE(1209)] = 53092, + [SMALL_STATE(1210)] = 53101, + [SMALL_STATE(1211)] = 53114, + [SMALL_STATE(1212)] = 53127, + [SMALL_STATE(1213)] = 53140, + [SMALL_STATE(1214)] = 53153, + [SMALL_STATE(1215)] = 53166, + [SMALL_STATE(1216)] = 53179, + [SMALL_STATE(1217)] = 53192, + [SMALL_STATE(1218)] = 53203, + [SMALL_STATE(1219)] = 53216, + [SMALL_STATE(1220)] = 53227, + [SMALL_STATE(1221)] = 53240, + [SMALL_STATE(1222)] = 53253, + [SMALL_STATE(1223)] = 53266, + [SMALL_STATE(1224)] = 53279, + [SMALL_STATE(1225)] = 53292, + [SMALL_STATE(1226)] = 53305, + [SMALL_STATE(1227)] = 53318, + [SMALL_STATE(1228)] = 53331, + [SMALL_STATE(1229)] = 53344, + [SMALL_STATE(1230)] = 53357, + [SMALL_STATE(1231)] = 53370, + [SMALL_STATE(1232)] = 53383, + [SMALL_STATE(1233)] = 53396, + [SMALL_STATE(1234)] = 53409, + [SMALL_STATE(1235)] = 53422, + [SMALL_STATE(1236)] = 53431, + [SMALL_STATE(1237)] = 53444, + [SMALL_STATE(1238)] = 53457, + [SMALL_STATE(1239)] = 53470, + [SMALL_STATE(1240)] = 53483, + [SMALL_STATE(1241)] = 53496, + [SMALL_STATE(1242)] = 53509, + [SMALL_STATE(1243)] = 53522, + [SMALL_STATE(1244)] = 53535, + [SMALL_STATE(1245)] = 53544, + [SMALL_STATE(1246)] = 53557, + [SMALL_STATE(1247)] = 53570, + [SMALL_STATE(1248)] = 53583, + [SMALL_STATE(1249)] = 53596, + [SMALL_STATE(1250)] = 53609, + [SMALL_STATE(1251)] = 53622, + [SMALL_STATE(1252)] = 53635, + [SMALL_STATE(1253)] = 53648, + [SMALL_STATE(1254)] = 53659, + [SMALL_STATE(1255)] = 53670, + [SMALL_STATE(1256)] = 53681, + [SMALL_STATE(1257)] = 53690, + [SMALL_STATE(1258)] = 53703, + [SMALL_STATE(1259)] = 53712, + [SMALL_STATE(1260)] = 53723, + [SMALL_STATE(1261)] = 53736, + [SMALL_STATE(1262)] = 53749, + [SMALL_STATE(1263)] = 53762, + [SMALL_STATE(1264)] = 53775, + [SMALL_STATE(1265)] = 53786, + [SMALL_STATE(1266)] = 53799, + [SMALL_STATE(1267)] = 53812, + [SMALL_STATE(1268)] = 53825, + [SMALL_STATE(1269)] = 53834, + [SMALL_STATE(1270)] = 53847, + [SMALL_STATE(1271)] = 53860, + [SMALL_STATE(1272)] = 53873, + [SMALL_STATE(1273)] = 53886, + [SMALL_STATE(1274)] = 53899, + [SMALL_STATE(1275)] = 53912, + [SMALL_STATE(1276)] = 53925, + [SMALL_STATE(1277)] = 53938, + [SMALL_STATE(1278)] = 53951, + [SMALL_STATE(1279)] = 53964, + [SMALL_STATE(1280)] = 53977, + [SMALL_STATE(1281)] = 53990, + [SMALL_STATE(1282)] = 54003, [SMALL_STATE(1283)] = 54016, - [SMALL_STATE(1284)] = 54024, - [SMALL_STATE(1285)] = 54034, + [SMALL_STATE(1284)] = 54026, + [SMALL_STATE(1285)] = 54036, [SMALL_STATE(1286)] = 54044, [SMALL_STATE(1287)] = 54052, - [SMALL_STATE(1288)] = 54060, - [SMALL_STATE(1289)] = 54068, - [SMALL_STATE(1290)] = 54076, - [SMALL_STATE(1291)] = 54084, - [SMALL_STATE(1292)] = 54092, - [SMALL_STATE(1293)] = 54100, - [SMALL_STATE(1294)] = 54108, - [SMALL_STATE(1295)] = 54118, - [SMALL_STATE(1296)] = 54126, - [SMALL_STATE(1297)] = 54136, - [SMALL_STATE(1298)] = 54144, - [SMALL_STATE(1299)] = 54152, - [SMALL_STATE(1300)] = 54162, - [SMALL_STATE(1301)] = 54172, - [SMALL_STATE(1302)] = 54180, - [SMALL_STATE(1303)] = 54190, - [SMALL_STATE(1304)] = 54198, - [SMALL_STATE(1305)] = 54206, - [SMALL_STATE(1306)] = 54216, - [SMALL_STATE(1307)] = 54224, - [SMALL_STATE(1308)] = 54232, - [SMALL_STATE(1309)] = 54242, - [SMALL_STATE(1310)] = 54252, - [SMALL_STATE(1311)] = 54262, - [SMALL_STATE(1312)] = 54270, + [SMALL_STATE(1288)] = 54062, + [SMALL_STATE(1289)] = 54072, + [SMALL_STATE(1290)] = 54082, + [SMALL_STATE(1291)] = 54092, + [SMALL_STATE(1292)] = 54100, + [SMALL_STATE(1293)] = 54108, + [SMALL_STATE(1294)] = 54116, + [SMALL_STATE(1295)] = 54124, + [SMALL_STATE(1296)] = 54132, + [SMALL_STATE(1297)] = 54142, + [SMALL_STATE(1298)] = 54150, + [SMALL_STATE(1299)] = 54158, + [SMALL_STATE(1300)] = 54168, + [SMALL_STATE(1301)] = 54176, + [SMALL_STATE(1302)] = 54184, + [SMALL_STATE(1303)] = 54194, + [SMALL_STATE(1304)] = 54204, + [SMALL_STATE(1305)] = 54212, + [SMALL_STATE(1306)] = 54220, + [SMALL_STATE(1307)] = 54228, + [SMALL_STATE(1308)] = 54236, + [SMALL_STATE(1309)] = 54244, + [SMALL_STATE(1310)] = 54254, + [SMALL_STATE(1311)] = 54264, + [SMALL_STATE(1312)] = 54272, [SMALL_STATE(1313)] = 54280, [SMALL_STATE(1314)] = 54288, [SMALL_STATE(1315)] = 54296, - [SMALL_STATE(1316)] = 54306, - [SMALL_STATE(1317)] = 54314, + [SMALL_STATE(1316)] = 54304, + [SMALL_STATE(1317)] = 54312, [SMALL_STATE(1318)] = 54322, [SMALL_STATE(1319)] = 54330, - [SMALL_STATE(1320)] = 54338, - [SMALL_STATE(1321)] = 54346, - [SMALL_STATE(1322)] = 54354, - [SMALL_STATE(1323)] = 54362, - [SMALL_STATE(1324)] = 54372, - [SMALL_STATE(1325)] = 54382, + [SMALL_STATE(1320)] = 54340, + [SMALL_STATE(1321)] = 54348, + [SMALL_STATE(1322)] = 54356, + [SMALL_STATE(1323)] = 54364, + [SMALL_STATE(1324)] = 54374, + [SMALL_STATE(1325)] = 54384, [SMALL_STATE(1326)] = 54392, [SMALL_STATE(1327)] = 54400, [SMALL_STATE(1328)] = 54408, - [SMALL_STATE(1329)] = 54416, - [SMALL_STATE(1330)] = 54426, - [SMALL_STATE(1331)] = 54434, - [SMALL_STATE(1332)] = 54444, - [SMALL_STATE(1333)] = 54452, - [SMALL_STATE(1334)] = 54460, - [SMALL_STATE(1335)] = 54468, - [SMALL_STATE(1336)] = 54476, - [SMALL_STATE(1337)] = 54484, - [SMALL_STATE(1338)] = 54492, - [SMALL_STATE(1339)] = 54500, - [SMALL_STATE(1340)] = 54508, - [SMALL_STATE(1341)] = 54518, - [SMALL_STATE(1342)] = 54526, + [SMALL_STATE(1329)] = 54418, + [SMALL_STATE(1330)] = 54428, + [SMALL_STATE(1331)] = 54438, + [SMALL_STATE(1332)] = 54448, + [SMALL_STATE(1333)] = 54456, + [SMALL_STATE(1334)] = 54464, + [SMALL_STATE(1335)] = 54472, + [SMALL_STATE(1336)] = 54480, + [SMALL_STATE(1337)] = 54488, + [SMALL_STATE(1338)] = 54496, + [SMALL_STATE(1339)] = 54504, + [SMALL_STATE(1340)] = 54512, + [SMALL_STATE(1341)] = 54520, + [SMALL_STATE(1342)] = 54528, [SMALL_STATE(1343)] = 54536, [SMALL_STATE(1344)] = 54546, [SMALL_STATE(1345)] = 54554, - [SMALL_STATE(1346)] = 54564, + [SMALL_STATE(1346)] = 54562, [SMALL_STATE(1347)] = 54572, - [SMALL_STATE(1348)] = 54582, - [SMALL_STATE(1349)] = 54592, - [SMALL_STATE(1350)] = 54602, - [SMALL_STATE(1351)] = 54610, - [SMALL_STATE(1352)] = 54620, - [SMALL_STATE(1353)] = 54628, + [SMALL_STATE(1348)] = 54580, + [SMALL_STATE(1349)] = 54590, + [SMALL_STATE(1350)] = 54598, + [SMALL_STATE(1351)] = 54606, + [SMALL_STATE(1352)] = 54616, + [SMALL_STATE(1353)] = 54626, [SMALL_STATE(1354)] = 54636, [SMALL_STATE(1355)] = 54643, [SMALL_STATE(1356)] = 54650, @@ -69619,1520 +71205,1525 @@ static const TSParseActionEntry ts_parse_actions[] = { [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(), [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module, 0), - [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(334), - [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1150), - [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(994), - [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160), - [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(347), - [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(125), - [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(388), - [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(201), - [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(234), - [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(178), - [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1288), - [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1289), - [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1290), - [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(385), - [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(246), - [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(563), - [39] = {.entry = {.count = 1, .reusable = false}}, SHIFT(430), - [41] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1466), - [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(310), - [45] = {.entry = {.count = 1, .reusable = false}}, SHIFT(67), - [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(684), + [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(331), + [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1152), + [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(997), + [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(153), + [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(351), + [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(72), + [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(374), + [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(194), + [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(224), + [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(168), + [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1301), + [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1305), + [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1292), + [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(389), + [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(241), + [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(561), + [39] = {.entry = {.count = 1, .reusable = false}}, SHIFT(375), + [41] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1408), + [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(291), + [45] = {.entry = {.count = 1, .reusable = false}}, SHIFT(66), + [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(644), [49] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), - [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163), - [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(375), - [55] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1465), - [57] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1463), - [59] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1462), - [61] = {.entry = {.count = 1, .reusable = false}}, SHIFT(275), - [63] = {.entry = {.count = 1, .reusable = false}}, SHIFT(309), - [65] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1461), - [67] = {.entry = {.count = 1, .reusable = true}}, SHIFT(383), - [69] = {.entry = {.count = 1, .reusable = false}}, SHIFT(384), - [71] = {.entry = {.count = 1, .reusable = false}}, SHIFT(849), - [73] = {.entry = {.count = 1, .reusable = false}}, SHIFT(177), - [75] = {.entry = {.count = 1, .reusable = true}}, SHIFT(764), - [77] = {.entry = {.count = 1, .reusable = false}}, SHIFT(764), + [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164), + [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(353), + [55] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1379), + [57] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1397), + [59] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1461), + [61] = {.entry = {.count = 1, .reusable = false}}, SHIFT(256), + [63] = {.entry = {.count = 1, .reusable = false}}, SHIFT(301), + [65] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1474), + [67] = {.entry = {.count = 1, .reusable = true}}, SHIFT(367), + [69] = {.entry = {.count = 1, .reusable = false}}, SHIFT(368), + [71] = {.entry = {.count = 1, .reusable = false}}, SHIFT(850), + [73] = {.entry = {.count = 1, .reusable = false}}, SHIFT(178), + [75] = {.entry = {.count = 1, .reusable = true}}, SHIFT(773), + [77] = {.entry = {.count = 1, .reusable = false}}, SHIFT(773), [79] = {.entry = {.count = 1, .reusable = false}}, SHIFT(134), - [81] = {.entry = {.count = 1, .reusable = true}}, SHIFT(902), - [83] = {.entry = {.count = 1, .reusable = false}}, SHIFT(408), + [81] = {.entry = {.count = 1, .reusable = true}}, SHIFT(891), + [83] = {.entry = {.count = 1, .reusable = false}}, SHIFT(439), [85] = {.entry = {.count = 1, .reusable = false}}, SHIFT(239), [87] = {.entry = {.count = 1, .reusable = false}}, SHIFT(564), - [89] = {.entry = {.count = 1, .reusable = false}}, SHIFT(402), - [91] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1448), - [93] = {.entry = {.count = 1, .reusable = false}}, SHIFT(299), - [95] = {.entry = {.count = 1, .reusable = false}}, SHIFT(66), - [97] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1470), - [99] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1451), - [101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(264), - [103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(282), - [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1321), - [107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module, 1), - [109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(261), - [111] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(334), - [114] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1150), - [117] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(994), - [120] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(160), - [123] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(347), - [126] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(125), - [129] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(388), - [132] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(201), - [135] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(234), - [138] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(178), - [141] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1288), - [144] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1289), - [147] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1290), - [150] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(408), - [153] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(239), - [156] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(564), - [159] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(402), - [162] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1448), - [165] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(299), - [168] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(66), - [171] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(684), - [174] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(157), - [177] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(163), - [180] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(375), - [183] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1470), - [186] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1463), - [189] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1462), - [192] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(275), - [195] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(309), - [198] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1451), - [201] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(383), - [204] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(384), - [207] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(849), - [210] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(177), - [213] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(764), - [216] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(764), - [219] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(134), - [222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), - [224] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(902), - [227] = {.entry = {.count = 1, .reusable = true}}, SHIFT(257), - [229] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(385), - [232] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(246), - [235] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(563), - [238] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(430), - [241] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1466), - [244] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(310), - [247] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(67), - [250] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1465), - [253] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1461), - [256] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1316), - [258] = {.entry = {.count = 1, .reusable = false}}, SHIFT(685), + [89] = {.entry = {.count = 1, .reusable = false}}, SHIFT(440), + [91] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1447), + [93] = {.entry = {.count = 1, .reusable = false}}, SHIFT(303), + [95] = {.entry = {.count = 1, .reusable = false}}, SHIFT(67), + [97] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1469), + [99] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1450), + [101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(262), + [103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1321), + [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(279), + [107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(264), + [109] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module, 1), + [111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1333), + [113] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), + [115] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(331), + [118] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1152), + [121] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(997), + [124] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(153), + [127] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(351), + [130] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(72), + [133] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(374), + [136] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(194), + [139] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(224), + [142] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(168), + [145] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1301), + [148] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1305), + [151] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1292), + [154] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(389), + [157] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(241), + [160] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(561), + [163] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(375), + [166] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1408), + [169] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(291), + [172] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(66), + [175] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(644), + [178] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(157), + [181] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(164), + [184] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(353), + [187] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1379), + [190] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1397), + [193] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1461), + [196] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(256), + [199] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(301), + [202] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1474), + [205] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(367), + [208] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(368), + [211] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(850), + [214] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(178), + [217] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(773), + [220] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(773), + [223] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(134), + [226] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(891), + [229] = {.entry = {.count = 1, .reusable = true}}, SHIFT(281), + [231] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(439), + [234] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(239), + [237] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(564), + [240] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(440), + [243] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1447), + [246] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(303), + [249] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(67), + [252] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1469), + [255] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2), SHIFT_REPEAT(1450), + [258] = {.entry = {.count = 1, .reusable = false}}, SHIFT(658), [260] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_primary_expression, 1, .production_id = 1), - [262] = {.entry = {.count = 1, .reusable = true}}, SHIFT(185), - [264] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_pattern, 1, .production_id = 1), REDUCE(sym_primary_expression, 1, .production_id = 1), - [267] = {.entry = {.count = 1, .reusable = false}}, SHIFT(440), - [269] = {.entry = {.count = 1, .reusable = false}}, SHIFT(641), - [271] = {.entry = {.count = 1, .reusable = true}}, SHIFT(423), - [273] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern, 1, .production_id = 1), - [275] = {.entry = {.count = 1, .reusable = false}}, SHIFT(678), - [277] = {.entry = {.count = 1, .reusable = true}}, SHIFT(193), - [279] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), - [281] = {.entry = {.count = 1, .reusable = false}}, SHIFT(375), - [283] = {.entry = {.count = 1, .reusable = false}}, SHIFT(434), - [285] = {.entry = {.count = 1, .reusable = true}}, SHIFT(678), - [287] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primary_expression, 1, .production_id = 1), - [289] = {.entry = {.count = 1, .reusable = false}}, SHIFT(847), - [291] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern, 1, .production_id = 1), - [293] = {.entry = {.count = 1, .reusable = true}}, SHIFT(575), - [295] = {.entry = {.count = 1, .reusable = false}}, SHIFT(575), - [297] = {.entry = {.count = 1, .reusable = false}}, SHIFT(136), - [299] = {.entry = {.count = 1, .reusable = true}}, SHIFT(907), - [301] = {.entry = {.count = 1, .reusable = false}}, SHIFT(341), - [303] = {.entry = {.count = 1, .reusable = true}}, SHIFT(386), - [305] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), - [307] = {.entry = {.count = 1, .reusable = true}}, SHIFT(496), - [309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [311] = {.entry = {.count = 1, .reusable = true}}, SHIFT(450), - [313] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), - [315] = {.entry = {.count = 1, .reusable = true}}, SHIFT(326), - [317] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), - [319] = {.entry = {.count = 1, .reusable = true}}, SHIFT(397), - [321] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), - [323] = {.entry = {.count = 1, .reusable = true}}, SHIFT(486), - [325] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), - [327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(471), - [329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), - [331] = {.entry = {.count = 1, .reusable = true}}, SHIFT(463), - [333] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(451), - [337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), - [339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(448), - [341] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), - [343] = {.entry = {.count = 1, .reusable = true}}, SHIFT(319), - [345] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), - [347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(476), - [349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), - [351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(453), - [353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), - [355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(504), - [357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), - [359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(478), - [361] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [363] = {.entry = {.count = 1, .reusable = true}}, SHIFT(461), - [365] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), - [367] = {.entry = {.count = 1, .reusable = true}}, SHIFT(346), - [369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), - [371] = {.entry = {.count = 1, .reusable = true}}, SHIFT(545), - [373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), - [375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(531), - [377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), - [379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(266), - [381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), - [383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(252), - [385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(460), - [389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(343), - [393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), - [395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(534), - [397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), - [399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(465), - [401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), - [403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(327), - [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), - [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(979), - [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), - [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(493), - [413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(505), - [417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), - [419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(321), - [421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), - [423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(507), - [425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), - [427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(508), - [429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(540), - [433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(369), - [437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), - [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(342), - [441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), - [443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(544), - [445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), - [447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(459), - [449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(551), - [453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), - [455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(420), - [457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), - [459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(524), - [461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(338), - [465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), - [467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(554), - [469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), - [471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(558), - [473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), - [475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(457), - [477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), - [479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(352), - [481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), - [483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(317), - [485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), - [487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(483), - [489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), - [491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(480), - [493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), - [495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(981), - [497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), - [499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(521), - [501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), - [503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(455), - [505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(501), - [509] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), - [511] = {.entry = {.count = 1, .reusable = true}}, SHIFT(330), - [513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), - [515] = {.entry = {.count = 1, .reusable = true}}, SHIFT(428), - [517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), - [519] = {.entry = {.count = 1, .reusable = true}}, SHIFT(527), - [521] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), - [523] = {.entry = {.count = 1, .reusable = true}}, SHIFT(331), - [525] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), - [527] = {.entry = {.count = 1, .reusable = true}}, SHIFT(550), - [529] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), - [531] = {.entry = {.count = 1, .reusable = false}}, SHIFT(714), - [533] = {.entry = {.count = 1, .reusable = false}}, SHIFT(724), - [535] = {.entry = {.count = 1, .reusable = false}}, SHIFT(393), - [537] = {.entry = {.count = 1, .reusable = false}}, SHIFT(141), - [539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(422), - [541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), - [543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1313), - [545] = {.entry = {.count = 1, .reusable = true}}, SHIFT(268), - [547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1304), - [549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(263), - [551] = {.entry = {.count = 1, .reusable = true}}, SHIFT(262), - [553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(265), - [555] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), - [557] = {.entry = {.count = 1, .reusable = false}}, SHIFT(747), - [559] = {.entry = {.count = 1, .reusable = false}}, SHIFT(684), - [561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), - [563] = {.entry = {.count = 1, .reusable = false}}, SHIFT(143), - [565] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, .production_id = 1), REDUCE(sym_list_splat_pattern, 2, .production_id = 8), - [568] = {.entry = {.count = 1, .reusable = false}}, SHIFT(584), - [570] = {.entry = {.count = 1, .reusable = true}}, SHIFT(387), - [572] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_splat_pattern, 2, .production_id = 8), - [574] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_pattern, 2, .production_id = 8), - [576] = {.entry = {.count = 1, .reusable = false}}, SHIFT(137), - [578] = {.entry = {.count = 1, .reusable = true}}, SHIFT(195), - [580] = {.entry = {.count = 1, .reusable = true}}, SHIFT(401), - [582] = {.entry = {.count = 1, .reusable = true}}, SHIFT(655), - [584] = {.entry = {.count = 1, .reusable = true}}, SHIFT(198), - [586] = {.entry = {.count = 1, .reusable = false}}, SHIFT(139), - [588] = {.entry = {.count = 1, .reusable = false}}, SHIFT(787), - [590] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), - [592] = {.entry = {.count = 1, .reusable = false}}, SHIFT(781), - [594] = {.entry = {.count = 1, .reusable = true}}, SHIFT(371), - [596] = {.entry = {.count = 1, .reusable = true}}, SHIFT(679), - [598] = {.entry = {.count = 1, .reusable = true}}, SHIFT(194), - [600] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166), - [602] = {.entry = {.count = 1, .reusable = true}}, SHIFT(787), - [604] = {.entry = {.count = 1, .reusable = false}}, SHIFT(147), - [606] = {.entry = {.count = 1, .reusable = true}}, SHIFT(891), - [608] = {.entry = {.count = 1, .reusable = false}}, SHIFT(443), - [610] = {.entry = {.count = 1, .reusable = false}}, SHIFT(360), - [612] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 1), - [614] = {.entry = {.count = 1, .reusable = false}}, SHIFT(720), - [616] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), - [618] = {.entry = {.count = 1, .reusable = true}}, SHIFT(713), - [620] = {.entry = {.count = 1, .reusable = true}}, SHIFT(347), - [622] = {.entry = {.count = 1, .reusable = false}}, SHIFT(723), - [624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), - [626] = {.entry = {.count = 1, .reusable = false}}, SHIFT(363), - [628] = {.entry = {.count = 1, .reusable = false}}, SHIFT(848), - [630] = {.entry = {.count = 1, .reusable = false}}, SHIFT(152), - [632] = {.entry = {.count = 1, .reusable = false}}, SHIFT(144), - [634] = {.entry = {.count = 1, .reusable = true}}, SHIFT(751), - [636] = {.entry = {.count = 1, .reusable = false}}, SHIFT(712), - [638] = {.entry = {.count = 1, .reusable = true}}, SHIFT(153), - [640] = {.entry = {.count = 1, .reusable = false}}, SHIFT(667), - [642] = {.entry = {.count = 1, .reusable = false}}, SHIFT(733), - [644] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 2, .production_id = 7), - [646] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 2, .production_id = 7), - [648] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159), - [650] = {.entry = {.count = 1, .reusable = false}}, SHIFT(140), - [652] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 3, .production_id = 16), - [654] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 3, .production_id = 16), - [656] = {.entry = {.count = 1, .reusable = true}}, SHIFT(427), - [658] = {.entry = {.count = 1, .reusable = true}}, SHIFT(746), - [660] = {.entry = {.count = 1, .reusable = true}}, SHIFT(717), - [662] = {.entry = {.count = 1, .reusable = true}}, SHIFT(354), - [664] = {.entry = {.count = 1, .reusable = false}}, SHIFT(673), - [666] = {.entry = {.count = 1, .reusable = true}}, SHIFT(199), - [668] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1398), - [670] = {.entry = {.count = 1, .reusable = false}}, SHIFT(675), - [672] = {.entry = {.count = 1, .reusable = true}}, SHIFT(586), - [674] = {.entry = {.count = 1, .reusable = false}}, SHIFT(138), - [676] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 3, .production_id = 16), - [678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1414), - [680] = {.entry = {.count = 1, .reusable = true}}, SHIFT(748), + [262] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, .production_id = 1), SHIFT(197), + [265] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_pattern, 1, .production_id = 1), REDUCE(sym_primary_expression, 1, .production_id = 1), + [268] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, .production_id = 1), SHIFT(402), + [271] = {.entry = {.count = 1, .reusable = false}}, SHIFT(657), + [273] = {.entry = {.count = 1, .reusable = true}}, SHIFT(387), + [275] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern, 1, .production_id = 1), + [277] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, .production_id = 1), SHIFT(675), + [280] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, .production_id = 1), SHIFT(204), + [283] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166), + [285] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, .production_id = 1), SHIFT(353), + [288] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, .production_id = 1), SHIFT(432), + [291] = {.entry = {.count = 1, .reusable = true}}, SHIFT(675), + [293] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primary_expression, 1, .production_id = 1), + [295] = {.entry = {.count = 1, .reusable = false}}, SHIFT(849), + [297] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern, 1, .production_id = 1), + [299] = {.entry = {.count = 1, .reusable = true}}, SHIFT(589), + [301] = {.entry = {.count = 1, .reusable = false}}, SHIFT(589), + [303] = {.entry = {.count = 1, .reusable = false}}, SHIFT(136), + [305] = {.entry = {.count = 1, .reusable = true}}, SHIFT(892), + [307] = {.entry = {.count = 1, .reusable = false}}, SHIFT(330), + [309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(973), + [311] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [313] = {.entry = {.count = 1, .reusable = true}}, SHIFT(526), + [315] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [317] = {.entry = {.count = 1, .reusable = true}}, SHIFT(324), + [319] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [321] = {.entry = {.count = 1, .reusable = true}}, SHIFT(251), + [323] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [325] = {.entry = {.count = 1, .reusable = false}}, SHIFT(735), + [327] = {.entry = {.count = 1, .reusable = false}}, SHIFT(715), + [329] = {.entry = {.count = 1, .reusable = false}}, SHIFT(385), + [331] = {.entry = {.count = 1, .reusable = false}}, SHIFT(142), + [333] = {.entry = {.count = 1, .reusable = true}}, SHIFT(457), + [335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(349), + [339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), + [341] = {.entry = {.count = 1, .reusable = true}}, SHIFT(535), + [343] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [345] = {.entry = {.count = 1, .reusable = true}}, SHIFT(536), + [347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(540), + [351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), + [353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(550), + [355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(327), + [359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [361] = {.entry = {.count = 1, .reusable = true}}, SHIFT(328), + [363] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [365] = {.entry = {.count = 1, .reusable = true}}, SHIFT(546), + [367] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(254), + [371] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(386), + [375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(461), + [379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(464), + [383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(470), + [387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(549), + [391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(477), + [395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(479), + [399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(480), + [403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(462), + [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(484), + [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), + [413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(393), + [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), + [417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(334), + [419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), + [421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(487), + [423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(472), + [427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(365), + [431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(494), + [435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(448), + [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(396), + [443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), + [445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(499), + [447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(531), + [451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), + [453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(355), + [455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(336), + [459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(321), + [463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), + [465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(450), + [467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), + [469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(506), + [471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(541), + [475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(400), + [479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(552), + [483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(512), + [487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(554), + [491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(337), + [495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), + [497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(447), + [499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(453), + [503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), + [505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(360), + [507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), + [509] = {.entry = {.count = 1, .reusable = true}}, SHIFT(518), + [511] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), + [513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(466), + [515] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(521), + [519] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [521] = {.entry = {.count = 1, .reusable = true}}, SHIFT(340), + [523] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [525] = {.entry = {.count = 1, .reusable = true}}, SHIFT(323), + [527] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [529] = {.entry = {.count = 1, .reusable = true}}, SHIFT(341), + [531] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [533] = {.entry = {.count = 1, .reusable = true}}, SHIFT(449), + [535] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [537] = {.entry = {.count = 1, .reusable = true}}, SHIFT(503), + [539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), + [541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(992), + [543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [545] = {.entry = {.count = 1, .reusable = true}}, SHIFT(492), + [547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), + [549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1286), + [551] = {.entry = {.count = 1, .reusable = true}}, SHIFT(275), + [553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(261), + [555] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1311), + [557] = {.entry = {.count = 1, .reusable = true}}, SHIFT(252), + [559] = {.entry = {.count = 1, .reusable = true}}, SHIFT(283), + [561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(181), + [563] = {.entry = {.count = 1, .reusable = false}}, SHIFT(752), + [565] = {.entry = {.count = 1, .reusable = false}}, SHIFT(644), + [567] = {.entry = {.count = 1, .reusable = true}}, SHIFT(182), + [569] = {.entry = {.count = 1, .reusable = false}}, SHIFT(145), + [571] = {.entry = {.count = 1, .reusable = true}}, SHIFT(197), + [573] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, .production_id = 1), REDUCE(sym_list_splat_pattern, 2, .production_id = 8), + [576] = {.entry = {.count = 1, .reusable = false}}, SHIFT(598), + [578] = {.entry = {.count = 1, .reusable = true}}, SHIFT(409), + [580] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_splat_pattern, 2, .production_id = 8), + [582] = {.entry = {.count = 1, .reusable = false}}, SHIFT(675), + [584] = {.entry = {.count = 1, .reusable = true}}, SHIFT(204), + [586] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_pattern, 2, .production_id = 8), + [588] = {.entry = {.count = 1, .reusable = false}}, SHIFT(138), + [590] = {.entry = {.count = 1, .reusable = true}}, SHIFT(201), + [592] = {.entry = {.count = 1, .reusable = true}}, SHIFT(378), + [594] = {.entry = {.count = 1, .reusable = true}}, SHIFT(653), + [596] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202), + [598] = {.entry = {.count = 1, .reusable = false}}, SHIFT(139), + [600] = {.entry = {.count = 1, .reusable = false}}, SHIFT(796), + [602] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), + [604] = {.entry = {.count = 1, .reusable = false}}, SHIFT(797), + [606] = {.entry = {.count = 1, .reusable = true}}, SHIFT(416), + [608] = {.entry = {.count = 1, .reusable = true}}, SHIFT(676), + [610] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), + [612] = {.entry = {.count = 1, .reusable = true}}, SHIFT(165), + [614] = {.entry = {.count = 1, .reusable = true}}, SHIFT(796), + [616] = {.entry = {.count = 1, .reusable = false}}, SHIFT(147), + [618] = {.entry = {.count = 1, .reusable = true}}, SHIFT(903), + [620] = {.entry = {.count = 1, .reusable = false}}, SHIFT(398), + [622] = {.entry = {.count = 1, .reusable = false}}, SHIFT(381), + [624] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 1), + [626] = {.entry = {.count = 1, .reusable = false}}, SHIFT(402), + [628] = {.entry = {.count = 1, .reusable = false}}, SHIFT(432), + [630] = {.entry = {.count = 1, .reusable = false}}, SHIFT(725), + [632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), + [634] = {.entry = {.count = 1, .reusable = true}}, SHIFT(403), + [636] = {.entry = {.count = 1, .reusable = true}}, SHIFT(351), + [638] = {.entry = {.count = 1, .reusable = false}}, SHIFT(714), + [640] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159), + [642] = {.entry = {.count = 1, .reusable = false}}, SHIFT(424), + [644] = {.entry = {.count = 1, .reusable = false}}, SHIFT(846), + [646] = {.entry = {.count = 1, .reusable = false}}, SHIFT(152), + [648] = {.entry = {.count = 1, .reusable = false}}, SHIFT(144), + [650] = {.entry = {.count = 1, .reusable = true}}, SHIFT(732), + [652] = {.entry = {.count = 1, .reusable = false}}, SHIFT(722), + [654] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), + [656] = {.entry = {.count = 1, .reusable = false}}, SHIFT(649), + [658] = {.entry = {.count = 1, .reusable = false}}, SHIFT(726), + [660] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 3, .production_id = 16), + [662] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 3, .production_id = 16), + [664] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), + [666] = {.entry = {.count = 1, .reusable = false}}, SHIFT(141), + [668] = {.entry = {.count = 1, .reusable = true}}, SHIFT(742), + [670] = {.entry = {.count = 1, .reusable = true}}, SHIFT(354), + [672] = {.entry = {.count = 1, .reusable = true}}, SHIFT(723), + [674] = {.entry = {.count = 1, .reusable = true}}, SHIFT(743), + [676] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 2, .production_id = 7), + [678] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 2, .production_id = 7), + [680] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 3, .production_id = 16), [682] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 2, .production_id = 7), - [684] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1362), - [686] = {.entry = {.count = 1, .reusable = true}}, SHIFT(778), - [688] = {.entry = {.count = 1, .reusable = true}}, SHIFT(191), - [690] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 3, .production_id = 50), - [692] = {.entry = {.count = 1, .reusable = true}}, SHIFT(440), - [694] = {.entry = {.count = 1, .reusable = false}}, SHIFT(722), - [696] = {.entry = {.count = 1, .reusable = true}}, SHIFT(793), - [698] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1374), - [700] = {.entry = {.count = 1, .reusable = false}}, SHIFT(732), - [702] = {.entry = {.count = 1, .reusable = false}}, SHIFT(146), - [704] = {.entry = {.count = 1, .reusable = true}}, SHIFT(651), - [706] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 2, .production_id = 24), - [708] = {.entry = {.count = 1, .reusable = true}}, SHIFT(582), - [710] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1447), - [712] = {.entry = {.count = 1, .reusable = false}}, SHIFT(777), - [714] = {.entry = {.count = 1, .reusable = false}}, SHIFT(786), - [716] = {.entry = {.count = 1, .reusable = false}}, SHIFT(148), - [718] = {.entry = {.count = 1, .reusable = true}}, SHIFT(773), - [720] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1376), - [722] = {.entry = {.count = 1, .reusable = false}}, SHIFT(411), - [724] = {.entry = {.count = 1, .reusable = false}}, SHIFT(439), - [726] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 1), - [728] = {.entry = {.count = 1, .reusable = true}}, SHIFT(583), - [730] = {.entry = {.count = 1, .reusable = true}}, SHIFT(788), - [732] = {.entry = {.count = 1, .reusable = true}}, SHIFT(800), - [734] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, .production_id = 122), - [736] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, .production_id = 122), - [738] = {.entry = {.count = 1, .reusable = false}}, SHIFT(845), - [740] = {.entry = {.count = 1, .reusable = true}}, SHIFT(790), - [742] = {.entry = {.count = 1, .reusable = true}}, SHIFT(756), - [744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(581), - [746] = {.entry = {.count = 1, .reusable = true}}, SHIFT(737), - [748] = {.entry = {.count = 1, .reusable = true}}, SHIFT(593), - [750] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 3, .production_id = 16), - [752] = {.entry = {.count = 1, .reusable = false}}, SHIFT(350), - [754] = {.entry = {.count = 1, .reusable = true}}, SHIFT(358), - [756] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 2, .production_id = 7), - [758] = {.entry = {.count = 1, .reusable = true}}, SHIFT(653), - [760] = {.entry = {.count = 1, .reusable = true}}, SHIFT(689), - [762] = {.entry = {.count = 1, .reusable = true}}, SHIFT(754), - [764] = {.entry = {.count = 1, .reusable = true}}, SHIFT(772), - [766] = {.entry = {.count = 1, .reusable = true}}, SHIFT(688), - [768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(749), - [770] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 1), - [772] = {.entry = {.count = 1, .reusable = true}}, SHIFT(574), - [774] = {.entry = {.count = 1, .reusable = true}}, SHIFT(590), - [776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(774), - [778] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, .production_id = 98), - [780] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 5, .production_id = 98), - [782] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, .production_id = 123), - [784] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, .production_id = 123), - [786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(770), - [788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(761), + [684] = {.entry = {.count = 1, .reusable = false}}, SHIFT(674), + [686] = {.entry = {.count = 1, .reusable = true}}, SHIFT(196), + [688] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1464), + [690] = {.entry = {.count = 1, .reusable = false}}, SHIFT(671), + [692] = {.entry = {.count = 1, .reusable = true}}, SHIFT(756), + [694] = {.entry = {.count = 1, .reusable = false}}, SHIFT(137), + [696] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1471), + [698] = {.entry = {.count = 1, .reusable = true}}, SHIFT(798), + [700] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1458), + [702] = {.entry = {.count = 1, .reusable = true}}, SHIFT(599), + [704] = {.entry = {.count = 1, .reusable = true}}, SHIFT(656), + [706] = {.entry = {.count = 1, .reusable = true}}, SHIFT(402), + [708] = {.entry = {.count = 1, .reusable = false}}, SHIFT(408), + [710] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 1), + [712] = {.entry = {.count = 1, .reusable = false}}, SHIFT(795), + [714] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), + [716] = {.entry = {.count = 1, .reusable = true}}, SHIFT(581), + [718] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1364), + [720] = {.entry = {.count = 1, .reusable = false}}, SHIFT(794), + [722] = {.entry = {.count = 1, .reusable = false}}, SHIFT(148), + [724] = {.entry = {.count = 1, .reusable = false}}, SHIFT(710), + [726] = {.entry = {.count = 1, .reusable = false}}, SHIFT(712), + [728] = {.entry = {.count = 1, .reusable = false}}, SHIFT(146), + [730] = {.entry = {.count = 1, .reusable = true}}, SHIFT(807), + [732] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1371), + [734] = {.entry = {.count = 1, .reusable = true}}, SHIFT(736), + [736] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1468), + [738] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 2, .production_id = 24), + [740] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 3, .production_id = 50), + [742] = {.entry = {.count = 1, .reusable = false}}, SHIFT(363), + [744] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, .production_id = 123), + [746] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, .production_id = 123), + [748] = {.entry = {.count = 1, .reusable = false}}, SHIFT(845), + [750] = {.entry = {.count = 1, .reusable = true}}, SHIFT(634), + [752] = {.entry = {.count = 1, .reusable = true}}, SHIFT(744), + [754] = {.entry = {.count = 1, .reusable = true}}, SHIFT(745), + [756] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 3, .production_id = 16), + [758] = {.entry = {.count = 1, .reusable = false}}, SHIFT(379), + [760] = {.entry = {.count = 1, .reusable = true}}, SHIFT(423), + [762] = {.entry = {.count = 1, .reusable = true}}, SHIFT(757), + [764] = {.entry = {.count = 1, .reusable = true}}, SHIFT(758), + [766] = {.entry = {.count = 1, .reusable = true}}, SHIFT(759), + [768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(591), + [770] = {.entry = {.count = 1, .reusable = true}}, SHIFT(596), + [772] = {.entry = {.count = 1, .reusable = true}}, SHIFT(601), + [774] = {.entry = {.count = 1, .reusable = true}}, SHIFT(602), + [776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(603), + [778] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 1), + [780] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, .production_id = 122), + [782] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, .production_id = 122), + [784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(691), + [786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(750), + [788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(753), [790] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 7, .production_id = 141), [792] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 7, .production_id = 141), - [794] = {.entry = {.count = 1, .reusable = true}}, SHIFT(794), - [796] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, .production_id = 40), - [798] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attribute, 3, .production_id = 40), - [800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(271), - [802] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 3, .production_id = 16), - [804] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2, .production_id = 33), - [806] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_subscript, 4, .production_id = 70), - [808] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_subscript, 4, .production_id = 70), - [810] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 2, .production_id = 7), - [812] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, .production_id = 81), - [814] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, .production_id = 81), - [816] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1423), - [818] = {.entry = {.count = 1, .reusable = false}}, SHIFT(345), - [820] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1420), - [822] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1438), - [824] = {.entry = {.count = 1, .reusable = false}}, SHIFT(340), - [826] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1397), - [828] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 4, .production_id = 56), - [830] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 4, .production_id = 56), - [832] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1443), - [834] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1464), - [836] = {.entry = {.count = 1, .reusable = true}}, SHIFT(769), - [838] = {.entry = {.count = 1, .reusable = true}}, SHIFT(561), - [840] = {.entry = {.count = 1, .reusable = true}}, SHIFT(300), - [842] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1471), - [844] = {.entry = {.count = 1, .reusable = true}}, SHIFT(736), - [846] = {.entry = {.count = 1, .reusable = true}}, SHIFT(797), - [848] = {.entry = {.count = 1, .reusable = true}}, SHIFT(588), - [850] = {.entry = {.count = 1, .reusable = true}}, SHIFT(808), - [852] = {.entry = {.count = 1, .reusable = true}}, SHIFT(562), - [854] = {.entry = {.count = 1, .reusable = true}}, SHIFT(294), - [856] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1417), - [858] = {.entry = {.count = 1, .reusable = true}}, SHIFT(742), - [860] = {.entry = {.count = 1, .reusable = true}}, SHIFT(791), - [862] = {.entry = {.count = 1, .reusable = true}}, SHIFT(598), - [864] = {.entry = {.count = 1, .reusable = true}}, SHIFT(587), - [866] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 4, .production_id = 54), - [868] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 4, .production_id = 54), - [870] = {.entry = {.count = 1, .reusable = false}}, SHIFT(381), - [872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(350), - [874] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 2), - [876] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 2), - [878] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2), - [880] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 2), - [882] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat1, 2), - [884] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2), - [886] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2), SHIFT_REPEAT(340), - [889] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat2, 2), - [891] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2), - [893] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2), SHIFT_REPEAT(1443), - [896] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 3), - [898] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 3), - [900] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 4), - [902] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 4), - [904] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 1), - [906] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 1), - [908] = {.entry = {.count = 1, .reusable = false}}, SHIFT(426), - [910] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2), SHIFT_REPEAT(1464), - [913] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 1), - [915] = {.entry = {.count = 1, .reusable = true}}, SHIFT(290), - [917] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2), SHIFT_REPEAT(345), - [920] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, .production_id = 69), - [922] = {.entry = {.count = 1, .reusable = true}}, SHIFT(312), - [924] = {.entry = {.count = 1, .reusable = true}}, SHIFT(889), - [926] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, .production_id = 77), - [928] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, .production_id = 77), - [930] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, .production_id = 76), - [932] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, .production_id = 76), - [934] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, .production_id = 102), - [936] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, .production_id = 102), - [938] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, .production_id = 68), - [940] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2), - [942] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, .production_id = 95), - [944] = {.entry = {.count = 1, .reusable = false}}, SHIFT(745), - [946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(169), - [948] = {.entry = {.count = 1, .reusable = false}}, SHIFT(759), - [950] = {.entry = {.count = 1, .reusable = false}}, SHIFT(382), - [952] = {.entry = {.count = 1, .reusable = false}}, SHIFT(846), - [954] = {.entry = {.count = 1, .reusable = false}}, SHIFT(145), - [956] = {.entry = {.count = 1, .reusable = true}}, SHIFT(377), - [958] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), - [960] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1444), - [962] = {.entry = {.count = 1, .reusable = true}}, SHIFT(399), - [964] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), - [966] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1373), - [968] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 100), - [970] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 100), - [972] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 100), SHIFT_REPEAT(426), - [975] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 100), SHIFT_REPEAT(381), - [978] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, .production_id = 29), - [980] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, .production_id = 28), - [982] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3), - [984] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1280), - [986] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, .production_id = 10), - [988] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, .production_id = 69), - [990] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_cases_repeat1, 2), - [992] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2), - [994] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2), SHIFT_REPEAT(809), - [997] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 8, .production_id = 165), - [999] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 8, .production_id = 165), - [1001] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 7, .production_id = 164), - [1003] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 7, .production_id = 164), - [1005] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 7, .production_id = 163), - [1007] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 7, .production_id = 163), - [1009] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 6, .production_id = 157), - [1011] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 6, .production_id = 157), - [1013] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 6, .production_id = 158), - [1015] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 6, .production_id = 158), - [1017] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primary_expression, 1), - [1019] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1), REDUCE(sym_list_splat_pattern, 2, .production_id = 9), - [1022] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_primary_expression, 1), - [1024] = {.entry = {.count = 1, .reusable = true}}, SHIFT(376), - [1026] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_splat_pattern, 2, .production_id = 9), - [1028] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_pattern, 2, .production_id = 9), - [1030] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4, .production_id = 130), - [1032] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 4, .production_id = 130), - [1034] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cases, 1), - [1036] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cases, 1), - [1038] = {.entry = {.count = 1, .reusable = false}}, SHIFT(811), - [1040] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 5, .production_id = 148), - [1042] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 5, .production_id = 148), - [1044] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 5, .production_id = 147), - [1046] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 5, .production_id = 147), - [1048] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 3, .production_id = 56), - [1050] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 3, .production_id = 56), - [1052] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4, .production_id = 81), - [1054] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 4, .production_id = 81), - [1056] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_pattern, 1), REDUCE(sym_primary_expression, 1), - [1059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(409), - [1061] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern, 1), - [1063] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern, 1), - [1065] = {.entry = {.count = 1, .reusable = false}}, SHIFT(809), - [1067] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2), SHIFT_REPEAT(811), - [1070] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 4, .production_id = 55), - [1072] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 4, .production_id = 55), - [1074] = {.entry = {.count = 1, .reusable = false}}, SHIFT(325), - [1076] = {.entry = {.count = 1, .reusable = false}}, SHIFT(320), - [1078] = {.entry = {.count = 1, .reusable = false}}, SHIFT(135), - [1080] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, .production_id = 129), - [1082] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, .production_id = 129), - [1084] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, .production_id = 125), - [1086] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, .production_id = 125), - [1088] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2), - [1090] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_tuple_pattern, 2), REDUCE(sym_tuple, 2), - [1093] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 2), - [1095] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 2), - [1097] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_pattern, 2), - [1099] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, .production_id = 81), - [1101] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, .production_id = 81), - [1103] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 6, .production_id = 105), - [1105] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 6, .production_id = 105), - [1107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, .production_id = 56), - [1109] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, .production_id = 56), - [1111] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 5, .production_id = 77), - [1113] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 5, .production_id = 77), - [1115] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, .production_id = 80), - [1117] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, .production_id = 80), - [1119] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, .production_id = 143), - [1121] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, .production_id = 143), - [1123] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 4, .production_id = 54), - [1125] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 4, .production_id = 54), - [1127] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 1, .production_id = 74), - [1129] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 1, .production_id = 74), - [1131] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 2), - [1133] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_list_pattern, 2), REDUCE(sym_list, 2), - [1136] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 2), - [1138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 2), - [1140] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_pattern, 2), - [1142] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 5, .production_id = 150), - [1144] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 5, .production_id = 150), - [1146] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 4, .production_id = 81), - [1148] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 4, .production_id = 81), - [1150] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 4, .production_id = 134), - [1152] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 4, .production_id = 134), - [1154] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 3, .production_id = 56), - [1156] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 3, .production_id = 56), - [1158] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 5, .production_id = 151), - [1160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 5, .production_id = 151), - [1162] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 6, .production_id = 159), - [1164] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 6, .production_id = 159), - [1166] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, .production_id = 128), - [1168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, .production_id = 128), - [1170] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 3, .production_id = 56), - [1172] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 3, .production_id = 56), - [1174] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 4, .production_id = 57), - [1176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 4, .production_id = 57), - [1178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, .production_id = 137), - [1180] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, .production_id = 137), - [1182] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, .production_id = 126), - [1184] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, .production_id = 126), - [1186] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 4, .production_id = 64), - [1188] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 4, .production_id = 64), - [1190] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 4, .production_id = 81), - [1192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 4, .production_id = 81), - [1194] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, .production_id = 138), - [1196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, .production_id = 138), - [1198] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 7, .production_id = 124), - [1200] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 7, .production_id = 124), - [1202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, .production_id = 60), - [1204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, .production_id = 60), - [1206] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 7, .production_id = 81), - [1208] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 7, .production_id = 81), + [794] = {.entry = {.count = 1, .reusable = true}}, SHIFT(690), + [796] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 2, .production_id = 7), + [798] = {.entry = {.count = 1, .reusable = true}}, SHIFT(787), + [800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(789), + [802] = {.entry = {.count = 1, .reusable = true}}, SHIFT(792), + [804] = {.entry = {.count = 1, .reusable = true}}, SHIFT(774), + [806] = {.entry = {.count = 1, .reusable = true}}, SHIFT(808), + [808] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, .production_id = 98), + [810] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 5, .production_id = 98), + [812] = {.entry = {.count = 1, .reusable = true}}, SHIFT(278), + [814] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 3, .production_id = 16), + [816] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 2, .production_id = 7), + [818] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_subscript, 4, .production_id = 70), + [820] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_subscript, 4, .production_id = 70), + [822] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, .production_id = 40), + [824] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attribute, 3, .production_id = 40), + [826] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2, .production_id = 33), + [828] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, .production_id = 81), + [830] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, .production_id = 81), + [832] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1354), + [834] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1381), + [836] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1358), + [838] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1422), + [840] = {.entry = {.count = 1, .reusable = false}}, SHIFT(344), + [842] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1419), + [844] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1463), + [846] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 4, .production_id = 56), + [848] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 4, .production_id = 56), + [850] = {.entry = {.count = 1, .reusable = false}}, SHIFT(319), + [852] = {.entry = {.count = 1, .reusable = true}}, SHIFT(748), + [854] = {.entry = {.count = 1, .reusable = true}}, SHIFT(560), + [856] = {.entry = {.count = 1, .reusable = true}}, SHIFT(305), + [858] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1470), + [860] = {.entry = {.count = 1, .reusable = true}}, SHIFT(562), + [862] = {.entry = {.count = 1, .reusable = true}}, SHIFT(298), + [864] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1418), + [866] = {.entry = {.count = 1, .reusable = true}}, SHIFT(749), + [868] = {.entry = {.count = 1, .reusable = true}}, SHIFT(578), + [870] = {.entry = {.count = 1, .reusable = true}}, SHIFT(763), + [872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(580), + [874] = {.entry = {.count = 1, .reusable = true}}, SHIFT(776), + [876] = {.entry = {.count = 1, .reusable = true}}, SHIFT(582), + [878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(785), + [880] = {.entry = {.count = 1, .reusable = true}}, SHIFT(786), + [882] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 4, .production_id = 54), + [884] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 4, .production_id = 54), + [886] = {.entry = {.count = 1, .reusable = false}}, SHIFT(406), + [888] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 3), + [890] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 3), + [892] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, .production_id = 76), + [894] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, .production_id = 76), + [896] = {.entry = {.count = 1, .reusable = false}}, SHIFT(441), + [898] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, .production_id = 77), + [900] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, .production_id = 77), + [902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(907), + [904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(379), + [906] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 2), + [908] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 2), + [910] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 4), + [912] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 4), + [914] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 1), + [916] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 1), + [918] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2), + [920] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat1, 2), + [922] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2), SHIFT_REPEAT(344), + [925] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2), + [927] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 2), + [929] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, .production_id = 69), + [931] = {.entry = {.count = 1, .reusable = true}}, SHIFT(299), + [933] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, .production_id = 102), + [935] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, .production_id = 102), + [937] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2), + [939] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat2, 2), + [941] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2), SHIFT_REPEAT(1463), + [944] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2), SHIFT_REPEAT(1381), + [947] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2), SHIFT_REPEAT(319), + [950] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 1), + [952] = {.entry = {.count = 1, .reusable = true}}, SHIFT(311), + [954] = {.entry = {.count = 1, .reusable = false}}, SHIFT(770), + [956] = {.entry = {.count = 1, .reusable = true}}, SHIFT(442), + [958] = {.entry = {.count = 1, .reusable = false}}, SHIFT(769), + [960] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), + [962] = {.entry = {.count = 1, .reusable = false}}, SHIFT(435), + [964] = {.entry = {.count = 1, .reusable = false}}, SHIFT(848), + [966] = {.entry = {.count = 1, .reusable = false}}, SHIFT(143), + [968] = {.entry = {.count = 1, .reusable = true}}, SHIFT(167), + [970] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 100), + [972] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 100), + [974] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 100), SHIFT_REPEAT(406), + [977] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, .production_id = 10), + [979] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1384), + [981] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, .production_id = 68), + [983] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, .production_id = 69), + [985] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3), + [987] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1252), + [989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1435), + [991] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, .production_id = 95), + [993] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, .production_id = 28), + [995] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, .production_id = 29), + [997] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, .production_id = 100), SHIFT_REPEAT(441), + [1000] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2), + [1002] = {.entry = {.count = 1, .reusable = true}}, SHIFT(348), + [1004] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), + [1006] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 8, .production_id = 165), + [1008] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 8, .production_id = 165), + [1010] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cases, 1), + [1012] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cases, 1), + [1014] = {.entry = {.count = 1, .reusable = false}}, SHIFT(809), + [1016] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primary_expression, 1), + [1018] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1), REDUCE(sym_list_splat_pattern, 2, .production_id = 9), + [1021] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_primary_expression, 1), + [1023] = {.entry = {.count = 1, .reusable = true}}, SHIFT(411), + [1025] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_splat_pattern, 2, .production_id = 9), + [1027] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_pattern, 2, .production_id = 9), + [1029] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_cases_repeat1, 2), + [1031] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2), + [1033] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2), SHIFT_REPEAT(809), + [1036] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 3, .production_id = 56), + [1038] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 3, .production_id = 56), + [1040] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4, .production_id = 81), + [1042] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 4, .production_id = 81), + [1044] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4, .production_id = 130), + [1046] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 4, .production_id = 130), + [1048] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 5, .production_id = 147), + [1050] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 5, .production_id = 147), + [1052] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 5, .production_id = 148), + [1054] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 5, .production_id = 148), + [1056] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 6, .production_id = 157), + [1058] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 6, .production_id = 157), + [1060] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 6, .production_id = 158), + [1062] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 6, .production_id = 158), + [1064] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 7, .production_id = 163), + [1066] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 7, .production_id = 163), + [1068] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 7, .production_id = 164), + [1070] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 7, .production_id = 164), + [1072] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_pattern, 1), REDUCE(sym_primary_expression, 1), + [1075] = {.entry = {.count = 1, .reusable = true}}, SHIFT(364), + [1077] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern, 1), + [1079] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern, 1), + [1081] = {.entry = {.count = 1, .reusable = false}}, SHIFT(810), + [1083] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2), SHIFT_REPEAT(810), + [1086] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, .production_id = 80), + [1088] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, .production_id = 80), + [1090] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 4, .production_id = 55), + [1092] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 4, .production_id = 55), + [1094] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, .production_id = 56), + [1096] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, .production_id = 56), + [1098] = {.entry = {.count = 1, .reusable = false}}, SHIFT(317), + [1100] = {.entry = {.count = 1, .reusable = false}}, SHIFT(316), + [1102] = {.entry = {.count = 1, .reusable = false}}, SHIFT(135), + [1104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 2), + [1106] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_list_pattern, 2), REDUCE(sym_list, 2), + [1109] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 2), + [1111] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 2), + [1113] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_pattern, 2), + [1115] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 6, .production_id = 105), + [1117] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 6, .production_id = 105), + [1119] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, .production_id = 81), + [1121] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, .production_id = 81), + [1123] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, .production_id = 125), + [1125] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, .production_id = 125), + [1127] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, .production_id = 129), + [1129] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, .production_id = 129), + [1131] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 4, .production_id = 54), + [1133] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 4, .production_id = 54), + [1135] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, .production_id = 143), + [1137] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, .production_id = 143), + [1139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 5, .production_id = 77), + [1141] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 5, .production_id = 77), + [1143] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 1, .production_id = 74), + [1145] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 1, .production_id = 74), + [1147] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2), + [1149] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_tuple_pattern, 2), REDUCE(sym_tuple, 2), + [1152] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 2), + [1154] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 2), + [1156] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_pattern, 2), + [1158] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 6, .production_id = 159), + [1160] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 6, .production_id = 159), + [1162] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 3, .production_id = 56), + [1164] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 3, .production_id = 56), + [1166] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 4, .production_id = 134), + [1168] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 4, .production_id = 134), + [1170] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 4, .production_id = 81), + [1172] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 4, .production_id = 81), + [1174] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 5, .production_id = 150), + [1176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 5, .production_id = 150), + [1178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 5, .production_id = 151), + [1180] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 5, .production_id = 151), + [1182] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, .production_id = 138), + [1184] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, .production_id = 138), + [1186] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 7, .production_id = 124), + [1188] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 7, .production_id = 124), + [1190] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 4, .production_id = 57), + [1192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 4, .production_id = 57), + [1194] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, .production_id = 90), + [1196] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, .production_id = 90), + [1198] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, .production_id = 60), + [1200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, .production_id = 60), + [1202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 4, .production_id = 64), + [1204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 4, .production_id = 64), + [1206] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, .production_id = 126), + [1208] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, .production_id = 126), [1210] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, .production_id = 127), [1212] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, .production_id = 127), - [1214] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 7, .production_id = 139), - [1216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 7, .production_id = 139), - [1218] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, .production_id = 118), - [1220] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, .production_id = 118), - [1222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, .production_id = 117), - [1224] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, .production_id = 117), - [1226] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, .production_id = 116), - [1228] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, .production_id = 116), - [1230] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, .production_id = 115), - [1232] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, .production_id = 115), - [1234] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, .production_id = 114), - [1236] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, .production_id = 114), - [1238] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, .production_id = 142), - [1240] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, .production_id = 142), - [1242] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, .production_id = 144), - [1244] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, .production_id = 144), - [1246] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, .production_id = 145), - [1248] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, .production_id = 145), - [1250] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, .production_id = 146), - [1252] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, .production_id = 146), - [1254] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorated_definition, 2, .production_id = 19), - [1256] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_decorated_definition, 2, .production_id = 19), - [1258] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, .production_id = 152), - [1260] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, .production_id = 152), - [1262] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, .production_id = 75), - [1264] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, .production_id = 75), - [1266] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, .production_id = 78), - [1268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, .production_id = 78), - [1270] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, .production_id = 79), - [1272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, .production_id = 79), - [1274] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, .production_id = 59), - [1276] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, .production_id = 59), - [1278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, .production_id = 82), - [1280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, .production_id = 82), - [1282] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, .production_id = 153), - [1284] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, .production_id = 153), - [1286] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2, .production_id = 24), - [1288] = {.entry = {.count = 1, .reusable = true}}, SHIFT(667), - [1290] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 5, .production_id = 87), - [1292] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 5, .production_id = 87), - [1294] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, .production_id = 89), - [1296] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, .production_id = 89), - [1298] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, .production_id = 90), - [1300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, .production_id = 90), - [1302] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, .production_id = 91), - [1304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, .production_id = 91), - [1306] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, .production_id = 56), - [1308] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, .production_id = 56), - [1310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1190), - [1312] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 6, .production_id = 106), - [1314] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 6, .production_id = 106), - [1316] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, .production_id = 104), - [1318] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, .production_id = 104), - [1320] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 6, .production_id = 103), - [1322] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 6, .production_id = 103), - [1324] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, .production_id = 101), - [1326] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, .production_id = 101), - [1328] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, .production_id = 99), - [1330] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, .production_id = 99), - [1332] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 9, .production_id = 154), - [1334] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 9, .production_id = 154), - [1336] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, .production_id = 155), - [1338] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, .production_id = 155), - [1340] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, .production_id = 156), - [1342] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, .production_id = 156), - [1344] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 10, .production_id = 162), - [1346] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 10, .production_id = 162), - [1348] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, .production_id = 161), - [1350] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, .production_id = 161), - [1352] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 3, .production_id = 50), - [1354] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_concatenated_string, 2), - [1356] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_concatenated_string, 2), - [1358] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), - [1360] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), - [1362] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(907), - [1365] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 3, .production_id = 20), - [1367] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 3, .production_id = 20), - [1369] = {.entry = {.count = 1, .reusable = false}}, SHIFT(734), - [1371] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_separator, 1), - [1373] = {.entry = {.count = 1, .reusable = false}}, SHIFT(721), - [1375] = {.entry = {.count = 1, .reusable = false}}, SHIFT(142), - [1377] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 2, .production_id = 2), - [1379] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 2, .production_id = 2), - [1381] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, .production_id = 93), - [1383] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, .production_id = 93), - [1385] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, .production_id = 67), - [1387] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, .production_id = 67), - [1389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1410), - [1391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), - [1393] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1), - [1395] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1), - [1397] = {.entry = {.count = 1, .reusable = false}}, SHIFT(682), - [1399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(681), - [1401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(680), - [1403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(677), - [1405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(676), - [1407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219), - [1409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(672), - [1411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(682), - [1413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1421), - [1415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(670), - [1417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(669), - [1419] = {.entry = {.count = 1, .reusable = false}}, SHIFT(680), - [1421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(615), - [1423] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3), - [1425] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3), - [1427] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, .production_id = 31), - [1429] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, .production_id = 31), - [1431] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 4, .production_id = 61), - [1433] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 4, .production_id = 61), - [1435] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_comprehension, 4, .production_id = 51), - [1437] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary_comprehension, 4, .production_id = 51), - [1439] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5, .production_id = 61), - [1441] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5, .production_id = 61), - [1443] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2), - [1445] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 2), - [1447] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, .production_id = 61), - [1449] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, .production_id = 61), - [1451] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 2), - [1453] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 2), - [1455] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 5, .production_id = 61), - [1457] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 5, .production_id = 61), - [1459] = {.entry = {.count = 1, .reusable = false}}, SHIFT(644), - [1461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(645), - [1463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(646), - [1465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(647), - [1467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(648), - [1469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(650), - [1471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(644), - [1473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1367), - [1475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(652), - [1477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(654), - [1479] = {.entry = {.count = 1, .reusable = false}}, SHIFT(646), - [1481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(614), - [1483] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, .production_id = 31), - [1485] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, .production_id = 31), - [1487] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set, 3, .production_id = 25), - [1489] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set, 3, .production_id = 25), - [1491] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set_comprehension, 4, .production_id = 51), - [1493] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set_comprehension, 4, .production_id = 51), - [1495] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5, .production_id = 93), - [1497] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5, .production_id = 93), - [1499] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, .production_id = 67), - [1501] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, .production_id = 67), - [1503] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generator_expression, 4, .production_id = 51), - [1505] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_generator_expression, 4, .production_id = 51), - [1507] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 3, .production_id = 31), - [1509] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 3, .production_id = 31), - [1511] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 3), - [1513] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 3), - [1515] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 4, .production_id = 31), - [1517] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 4, .production_id = 31), - [1519] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call, 2, .production_id = 17), - [1521] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call, 2, .production_id = 17), - [1523] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_comprehension, 4, .production_id = 51), - [1525] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_comprehension, 4, .production_id = 51), - [1527] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 3, .production_id = 25), - [1529] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 3, .production_id = 25), - [1531] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_expression, 3, .production_id = 26), - [1533] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesized_expression, 3, .production_id = 26), - [1535] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3, .production_id = 25), - [1537] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 3, .production_id = 25), - [1539] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_operator, 3, .production_id = 39), - [1541] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_operator, 3, .production_id = 39), - [1543] = {.entry = {.count = 1, .reusable = false}}, SHIFT(656), - [1545] = {.entry = {.count = 1, .reusable = false}}, SHIFT(674), - [1547] = {.entry = {.count = 1, .reusable = false}}, SHIFT(668), - [1549] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 41), - [1551] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 41), - [1553] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, .production_id = 71), - [1555] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, .production_id = 71), - [1557] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, .production_id = 72), - [1559] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, .production_id = 72), - [1561] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_operator, 2, .production_id = 13), - [1563] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_operator, 2, .production_id = 13), - [1565] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_await, 2), - [1567] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_await, 2), - [1569] = {.entry = {.count = 1, .reusable = false}}, SHIFT(687), - [1571] = {.entry = {.count = 1, .reusable = false}}, SHIFT(835), - [1573] = {.entry = {.count = 1, .reusable = false}}, SHIFT(840), - [1575] = {.entry = {.count = 1, .reusable = false}}, SHIFT(217), - [1577] = {.entry = {.count = 1, .reusable = true}}, SHIFT(361), - [1579] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(891), - [1582] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(902), - [1585] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1385), - [1587] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), - [1589] = {.entry = {.count = 1, .reusable = false}}, SHIFT(639), - [1591] = {.entry = {.count = 1, .reusable = true}}, SHIFT(637), - [1593] = {.entry = {.count = 1, .reusable = true}}, SHIFT(635), - [1595] = {.entry = {.count = 1, .reusable = true}}, SHIFT(636), - [1597] = {.entry = {.count = 1, .reusable = true}}, SHIFT(638), - [1599] = {.entry = {.count = 1, .reusable = true}}, SHIFT(215), - [1601] = {.entry = {.count = 1, .reusable = true}}, SHIFT(642), - [1603] = {.entry = {.count = 1, .reusable = true}}, SHIFT(639), - [1605] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1442), - [1607] = {.entry = {.count = 1, .reusable = true}}, SHIFT(643), - [1609] = {.entry = {.count = 1, .reusable = true}}, SHIFT(649), - [1611] = {.entry = {.count = 1, .reusable = false}}, SHIFT(635), - [1613] = {.entry = {.count = 1, .reusable = true}}, SHIFT(628), - [1615] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1366), - [1617] = {.entry = {.count = 1, .reusable = true}}, SHIFT(168), - [1619] = {.entry = {.count = 1, .reusable = false}}, SHIFT(666), - [1621] = {.entry = {.count = 1, .reusable = true}}, SHIFT(665), - [1623] = {.entry = {.count = 1, .reusable = true}}, SHIFT(634), - [1625] = {.entry = {.count = 1, .reusable = true}}, SHIFT(664), - [1627] = {.entry = {.count = 1, .reusable = true}}, SHIFT(663), - [1629] = {.entry = {.count = 1, .reusable = true}}, SHIFT(218), - [1631] = {.entry = {.count = 1, .reusable = true}}, SHIFT(661), - [1633] = {.entry = {.count = 1, .reusable = true}}, SHIFT(666), - [1635] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1395), - [1637] = {.entry = {.count = 1, .reusable = true}}, SHIFT(660), - [1639] = {.entry = {.count = 1, .reusable = true}}, SHIFT(659), - [1641] = {.entry = {.count = 1, .reusable = false}}, SHIFT(634), - [1643] = {.entry = {.count = 1, .reusable = true}}, SHIFT(610), - [1645] = {.entry = {.count = 1, .reusable = false}}, SHIFT(444), - [1647] = {.entry = {.count = 1, .reusable = true}}, SHIFT(407), - [1649] = {.entry = {.count = 1, .reusable = false}}, SHIFT(887), - [1651] = {.entry = {.count = 1, .reusable = true}}, SHIFT(814), - [1653] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1176), - [1655] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1302), - [1657] = {.entry = {.count = 1, .reusable = false}}, SHIFT(936), - [1659] = {.entry = {.count = 1, .reusable = true}}, SHIFT(816), - [1661] = {.entry = {.count = 1, .reusable = true}}, SHIFT(852), - [1663] = {.entry = {.count = 1, .reusable = false}}, SHIFT(894), - [1665] = {.entry = {.count = 1, .reusable = true}}, SHIFT(894), - [1667] = {.entry = {.count = 1, .reusable = false}}, SHIFT(930), - [1669] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_open_sequence_match_pattern, 2), - [1671] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_sequence_match_pattern, 2), - [1673] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_open_sequence_match_pattern, 3), - [1675] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_sequence_match_pattern, 3), - [1677] = {.entry = {.count = 1, .reusable = true}}, SHIFT(945), - [1679] = {.entry = {.count = 1, .reusable = true}}, SHIFT(939), - [1681] = {.entry = {.count = 1, .reusable = true}}, SHIFT(947), - [1683] = {.entry = {.count = 1, .reusable = false}}, SHIFT(951), - [1685] = {.entry = {.count = 1, .reusable = true}}, SHIFT(940), - [1687] = {.entry = {.count = 1, .reusable = true}}, SHIFT(967), - [1689] = {.entry = {.count = 1, .reusable = true}}, SHIFT(956), - [1691] = {.entry = {.count = 1, .reusable = false}}, SHIFT(916), - [1693] = {.entry = {.count = 1, .reusable = false}}, SHIFT(933), - [1695] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), - [1697] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), - [1699] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(680), - [1702] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(1421), - [1705] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(680), - [1708] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(615), + [1214] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, .production_id = 128), + [1216] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, .production_id = 128), + [1218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, .production_id = 75), + [1220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, .production_id = 75), + [1222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorated_definition, 2, .production_id = 19), + [1224] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_decorated_definition, 2, .production_id = 19), + [1226] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, .production_id = 78), + [1228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, .production_id = 78), + [1230] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, .production_id = 79), + [1232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, .production_id = 79), + [1234] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, .production_id = 91), + [1236] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, .production_id = 91), + [1238] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 3, .production_id = 50), + [1240] = {.entry = {.count = 1, .reusable = true}}, SHIFT(649), + [1242] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, .production_id = 82), + [1244] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, .production_id = 82), + [1246] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 5, .production_id = 87), + [1248] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 5, .production_id = 87), + [1250] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, .production_id = 89), + [1252] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, .production_id = 89), + [1254] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, .production_id = 99), + [1256] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, .production_id = 99), + [1258] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, .production_id = 101), + [1260] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, .production_id = 101), + [1262] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 6, .production_id = 103), + [1264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 6, .production_id = 103), + [1266] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, .production_id = 104), + [1268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, .production_id = 104), + [1270] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, .production_id = 59), + [1272] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, .production_id = 59), + [1274] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 6, .production_id = 106), + [1276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 6, .production_id = 106), + [1278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 3, .production_id = 56), + [1280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 3, .production_id = 56), + [1282] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, .production_id = 56), + [1284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, .production_id = 56), + [1286] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 4, .production_id = 81), + [1288] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 4, .production_id = 81), + [1290] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, .production_id = 114), + [1292] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, .production_id = 114), + [1294] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, .production_id = 115), + [1296] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, .production_id = 115), + [1298] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, .production_id = 116), + [1300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, .production_id = 116), + [1302] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, .production_id = 117), + [1304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, .production_id = 117), + [1306] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, .production_id = 118), + [1308] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, .production_id = 118), + [1310] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 7, .production_id = 81), + [1312] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 7, .production_id = 81), + [1314] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, .production_id = 137), + [1316] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, .production_id = 137), + [1318] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 7, .production_id = 139), + [1320] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 7, .production_id = 139), + [1322] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, .production_id = 142), + [1324] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, .production_id = 142), + [1326] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, .production_id = 144), + [1328] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, .production_id = 144), + [1330] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, .production_id = 145), + [1332] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, .production_id = 145), + [1334] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, .production_id = 146), + [1336] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, .production_id = 146), + [1338] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, .production_id = 152), + [1340] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, .production_id = 152), + [1342] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, .production_id = 153), + [1344] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, .production_id = 153), + [1346] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 9, .production_id = 154), + [1348] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 9, .production_id = 154), + [1350] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, .production_id = 155), + [1352] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, .production_id = 155), + [1354] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, .production_id = 156), + [1356] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, .production_id = 156), + [1358] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, .production_id = 161), + [1360] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, .production_id = 161), + [1362] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 10, .production_id = 162), + [1364] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 10, .production_id = 162), + [1366] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2, .production_id = 24), + [1368] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1200), + [1370] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_concatenated_string, 2), + [1372] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_concatenated_string, 2), + [1374] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), + [1376] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), + [1378] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(892), + [1381] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 2, .production_id = 2), + [1383] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 2, .production_id = 2), + [1385] = {.entry = {.count = 1, .reusable = false}}, SHIFT(728), + [1387] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_separator, 1), + [1389] = {.entry = {.count = 1, .reusable = false}}, SHIFT(716), + [1391] = {.entry = {.count = 1, .reusable = false}}, SHIFT(140), + [1393] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 3, .production_id = 20), + [1395] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 3, .production_id = 20), + [1397] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 4, .production_id = 61), + [1399] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 4, .production_id = 61), + [1401] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3, .production_id = 25), + [1403] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 3, .production_id = 25), + [1405] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, .production_id = 31), + [1407] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, .production_id = 31), + [1409] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 3), + [1411] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 3), + [1413] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, .production_id = 67), + [1415] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, .production_id = 67), + [1417] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 4, .production_id = 31), + [1419] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 4, .production_id = 31), + [1421] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 5, .production_id = 61), + [1423] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 5, .production_id = 61), + [1425] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2), + [1427] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 2), + [1429] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 3, .production_id = 31), + [1431] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 3, .production_id = 31), + [1433] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set_comprehension, 4, .production_id = 51), + [1435] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set_comprehension, 4, .production_id = 51), + [1437] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_comprehension, 4, .production_id = 51), + [1439] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary_comprehension, 4, .production_id = 51), + [1441] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 3, .production_id = 25), + [1443] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 3, .production_id = 25), + [1445] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_comprehension, 4, .production_id = 51), + [1447] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_comprehension, 4, .production_id = 51), + [1449] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generator_expression, 4, .production_id = 51), + [1451] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_generator_expression, 4, .production_id = 51), + [1453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1380), + [1455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(170), + [1457] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1), + [1459] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1), + [1461] = {.entry = {.count = 1, .reusable = false}}, SHIFT(680), + [1463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(681), + [1465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(682), + [1467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(683), + [1469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(684), + [1471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(222), + [1473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(685), + [1475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(680), + [1477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1396), + [1479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(686), + [1481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(659), + [1483] = {.entry = {.count = 1, .reusable = false}}, SHIFT(682), + [1485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(607), + [1487] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, .production_id = 31), + [1489] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, .production_id = 31), + [1491] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, .production_id = 61), + [1493] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, .production_id = 61), + [1495] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call, 2, .production_id = 17), + [1497] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call, 2, .production_id = 17), + [1499] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_expression, 3, .production_id = 26), + [1501] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesized_expression, 3, .production_id = 26), + [1503] = {.entry = {.count = 1, .reusable = false}}, SHIFT(661), + [1505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(662), + [1507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(663), + [1509] = {.entry = {.count = 1, .reusable = true}}, SHIFT(664), + [1511] = {.entry = {.count = 1, .reusable = true}}, SHIFT(665), + [1513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(666), + [1515] = {.entry = {.count = 1, .reusable = true}}, SHIFT(661), + [1517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1361), + [1519] = {.entry = {.count = 1, .reusable = true}}, SHIFT(667), + [1521] = {.entry = {.count = 1, .reusable = true}}, SHIFT(668), + [1523] = {.entry = {.count = 1, .reusable = false}}, SHIFT(663), + [1525] = {.entry = {.count = 1, .reusable = true}}, SHIFT(619), + [1527] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, .production_id = 67), + [1529] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, .production_id = 67), + [1531] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, .production_id = 93), + [1533] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, .production_id = 93), + [1535] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 2), + [1537] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 2), + [1539] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set, 3, .production_id = 25), + [1541] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set, 3, .production_id = 25), + [1543] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5, .production_id = 61), + [1545] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5, .production_id = 61), + [1547] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5, .production_id = 93), + [1549] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5, .production_id = 93), + [1551] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3), + [1553] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3), + [1555] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_operator, 3, .production_id = 39), + [1557] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_operator, 3, .production_id = 39), + [1559] = {.entry = {.count = 1, .reusable = false}}, SHIFT(652), + [1561] = {.entry = {.count = 1, .reusable = false}}, SHIFT(646), + [1563] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 41), + [1565] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 41), + [1567] = {.entry = {.count = 1, .reusable = false}}, SHIFT(651), + [1569] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_operator, 2, .production_id = 13), + [1571] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_operator, 2, .production_id = 13), + [1573] = {.entry = {.count = 1, .reusable = false}}, SHIFT(672), + [1575] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, .production_id = 71), + [1577] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, .production_id = 71), + [1579] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, .production_id = 72), + [1581] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, .production_id = 72), + [1583] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_await, 2), + [1585] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_await, 2), + [1587] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(903), + [1590] = {.entry = {.count = 1, .reusable = false}}, SHIFT(839), + [1592] = {.entry = {.count = 1, .reusable = false}}, SHIFT(838), + [1594] = {.entry = {.count = 1, .reusable = false}}, SHIFT(221), + [1596] = {.entry = {.count = 1, .reusable = true}}, SHIFT(382), + [1598] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1373), + [1600] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), + [1602] = {.entry = {.count = 1, .reusable = false}}, SHIFT(655), + [1604] = {.entry = {.count = 1, .reusable = true}}, SHIFT(669), + [1606] = {.entry = {.count = 1, .reusable = true}}, SHIFT(687), + [1608] = {.entry = {.count = 1, .reusable = true}}, SHIFT(660), + [1610] = {.entry = {.count = 1, .reusable = true}}, SHIFT(677), + [1612] = {.entry = {.count = 1, .reusable = true}}, SHIFT(214), + [1614] = {.entry = {.count = 1, .reusable = true}}, SHIFT(673), + [1616] = {.entry = {.count = 1, .reusable = true}}, SHIFT(655), + [1618] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1451), + [1620] = {.entry = {.count = 1, .reusable = true}}, SHIFT(679), + [1622] = {.entry = {.count = 1, .reusable = true}}, SHIFT(654), + [1624] = {.entry = {.count = 1, .reusable = false}}, SHIFT(687), + [1626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(617), + [1628] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(891), + [1631] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1359), + [1633] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), + [1635] = {.entry = {.count = 1, .reusable = false}}, SHIFT(635), + [1637] = {.entry = {.count = 1, .reusable = true}}, SHIFT(636), + [1639] = {.entry = {.count = 1, .reusable = true}}, SHIFT(637), + [1641] = {.entry = {.count = 1, .reusable = true}}, SHIFT(638), + [1643] = {.entry = {.count = 1, .reusable = true}}, SHIFT(639), + [1645] = {.entry = {.count = 1, .reusable = true}}, SHIFT(220), + [1647] = {.entry = {.count = 1, .reusable = true}}, SHIFT(640), + [1649] = {.entry = {.count = 1, .reusable = true}}, SHIFT(635), + [1651] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1394), + [1653] = {.entry = {.count = 1, .reusable = true}}, SHIFT(641), + [1655] = {.entry = {.count = 1, .reusable = true}}, SHIFT(642), + [1657] = {.entry = {.count = 1, .reusable = false}}, SHIFT(637), + [1659] = {.entry = {.count = 1, .reusable = true}}, SHIFT(610), + [1661] = {.entry = {.count = 1, .reusable = false}}, SHIFT(399), + [1663] = {.entry = {.count = 1, .reusable = true}}, SHIFT(418), + [1665] = {.entry = {.count = 1, .reusable = false}}, SHIFT(883), + [1667] = {.entry = {.count = 1, .reusable = true}}, SHIFT(813), + [1669] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1226), + [1671] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1319), + [1673] = {.entry = {.count = 1, .reusable = false}}, SHIFT(968), + [1675] = {.entry = {.count = 1, .reusable = true}}, SHIFT(814), + [1677] = {.entry = {.count = 1, .reusable = true}}, SHIFT(853), + [1679] = {.entry = {.count = 1, .reusable = false}}, SHIFT(896), + [1681] = {.entry = {.count = 1, .reusable = true}}, SHIFT(896), + [1683] = {.entry = {.count = 1, .reusable = false}}, SHIFT(942), + [1685] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_open_sequence_match_pattern, 2), + [1687] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_sequence_match_pattern, 2), + [1689] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_open_sequence_match_pattern, 3), + [1691] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_sequence_match_pattern, 3), + [1693] = {.entry = {.count = 1, .reusable = true}}, SHIFT(923), + [1695] = {.entry = {.count = 1, .reusable = true}}, SHIFT(924), + [1697] = {.entry = {.count = 1, .reusable = true}}, SHIFT(943), + [1699] = {.entry = {.count = 1, .reusable = false}}, SHIFT(965), + [1701] = {.entry = {.count = 1, .reusable = true}}, SHIFT(934), + [1703] = {.entry = {.count = 1, .reusable = true}}, SHIFT(964), + [1705] = {.entry = {.count = 1, .reusable = true}}, SHIFT(944), + [1707] = {.entry = {.count = 1, .reusable = false}}, SHIFT(929), + [1709] = {.entry = {.count = 1, .reusable = false}}, SHIFT(915), [1711] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comparison_operator, 2, .production_id = 18), [1713] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comparison_operator, 2, .production_id = 18), - [1715] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(646), - [1718] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(1367), - [1721] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(646), - [1724] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(614), - [1727] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, .production_id = 36), - [1729] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, .production_id = 36), SHIFT_REPEAT(568), - [1732] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, .production_id = 31), - [1734] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2, .production_id = 34), - [1736] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 3, .production_id = 25), - [1738] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 3, .production_id = 25), - [1740] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(635), - [1743] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(1442), - [1746] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(635), - [1749] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(628), - [1752] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), - [1754] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 2, .production_id = 16), - [1756] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(634), - [1759] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(1395), - [1762] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(634), - [1765] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(610), - [1768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1275), - [1770] = {.entry = {.count = 1, .reusable = true}}, SHIFT(518), - [1772] = {.entry = {.count = 1, .reusable = false}}, SHIFT(571), - [1774] = {.entry = {.count = 1, .reusable = true}}, SHIFT(291), - [1776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(640), - [1778] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1276), - [1780] = {.entry = {.count = 1, .reusable = true}}, SHIFT(445), - [1782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(374), - [1784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(359), - [1786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(416), - [1788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155), - [1790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(254), - [1792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(150), - [1794] = {.entry = {.count = 1, .reusable = true}}, SHIFT(149), - [1796] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1347), - [1798] = {.entry = {.count = 1, .reusable = true}}, SHIFT(949), - [1800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1348), - [1802] = {.entry = {.count = 1, .reusable = true}}, SHIFT(946), - [1804] = {.entry = {.count = 1, .reusable = true}}, SHIFT(959), - [1806] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1100), - [1808] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1317), - [1810] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 2), - [1812] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 3), - [1814] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_not_operator, 2, .production_id = 10), - [1816] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_not_operator, 2, .production_id = 10), - [1818] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2), - [1820] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2), SHIFT_REPEAT(1425), - [1823] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_expression, 3, .production_id = 27), - [1825] = {.entry = {.count = 1, .reusable = true}}, SHIFT(378), - [1827] = {.entry = {.count = 1, .reusable = true}}, SHIFT(379), - [1829] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1425), - [1831] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_class_name, 2), - [1833] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_value_pattern, 2), - [1835] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 4, .production_id = 66), - [1837] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda, 4, .production_id = 66), - [1839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(421), - [1841] = {.entry = {.count = 1, .reusable = true}}, SHIFT(367), - [1843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(368), - [1845] = {.entry = {.count = 1, .reusable = true}}, SHIFT(171), - [1847] = {.entry = {.count = 1, .reusable = true}}, SHIFT(373), - [1849] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1472), - [1851] = {.entry = {.count = 1, .reusable = true}}, SHIFT(560), + [1715] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), + [1717] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(663), + [1720] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), + [1722] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(1361), + [1725] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(663), + [1728] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(619), + [1731] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(682), + [1734] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(1396), + [1737] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(682), + [1740] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(607), + [1743] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, .production_id = 36), + [1745] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, .production_id = 36), SHIFT_REPEAT(568), + [1748] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 3, .production_id = 25), + [1750] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(687), + [1753] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(1451), + [1756] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(687), + [1759] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(617), + [1762] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 3, .production_id = 25), + [1764] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2, .production_id = 34), + [1766] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, .production_id = 31), + [1768] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(637), + [1771] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(1394), + [1774] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(637), + [1777] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, .production_id = 42), SHIFT_REPEAT(610), + [1780] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155), + [1782] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 2, .production_id = 16), + [1784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1168), + [1786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(557), + [1788] = {.entry = {.count = 1, .reusable = false}}, SHIFT(571), + [1790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(310), + [1792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(648), + [1794] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1154), + [1796] = {.entry = {.count = 1, .reusable = true}}, SHIFT(380), + [1798] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160), + [1800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(258), + [1802] = {.entry = {.count = 1, .reusable = true}}, SHIFT(149), + [1804] = {.entry = {.count = 1, .reusable = true}}, SHIFT(150), + [1806] = {.entry = {.count = 1, .reusable = true}}, SHIFT(417), + [1808] = {.entry = {.count = 1, .reusable = true}}, SHIFT(410), + [1810] = {.entry = {.count = 1, .reusable = true}}, SHIFT(359), + [1812] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1136), + [1814] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1307), + [1816] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1352), + [1818] = {.entry = {.count = 1, .reusable = true}}, SHIFT(935), + [1820] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1343), + [1822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(961), + [1824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(926), + [1826] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 2), + [1828] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 3), + [1830] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_not_operator, 2, .production_id = 10), + [1832] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_not_operator, 2, .production_id = 10), + [1834] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2), + [1836] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2), SHIFT_REPEAT(1400), + [1839] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_boolean_operator, 3, .production_id = 39), + [1841] = {.entry = {.count = 1, .reusable = true}}, SHIFT(412), + [1843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(174), + [1845] = {.entry = {.count = 1, .reusable = true}}, SHIFT(436), + [1847] = {.entry = {.count = 1, .reusable = true}}, SHIFT(428), + [1849] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1425), + [1851] = {.entry = {.count = 1, .reusable = true}}, SHIFT(563), [1853] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 1, .production_id = 7), - [1855] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_boolean_operator, 3, .production_id = 39), - [1857] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_conditional_expression, 5), - [1859] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_conditional_expression, 5), - [1861] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_expression, 3, .production_id = 35), - [1863] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_expression, 3, .production_id = 35), - [1865] = {.entry = {.count = 1, .reusable = true}}, SHIFT(784), - [1867] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_with_item, 1, .dynamic_precedence = -1, .production_id = 12), SHIFT(171), - [1870] = {.entry = {.count = 1, .reusable = false}}, SHIFT(566), - [1872] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 3, .production_id = 32), - [1874] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda, 3, .production_id = 32), - [1876] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 2), - [1878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(165), - [1880] = {.entry = {.count = 1, .reusable = true}}, SHIFT(412), - [1882] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_expression, 3, .production_id = 27), - [1884] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_boolean_operator, 3, .production_id = 39), - [1886] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 1), - [1888] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_class_name, 1), - [1890] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_capture_pattern, 1), - [1892] = {.entry = {.count = 1, .reusable = false}}, SHIFT(175), - [1894] = {.entry = {.count = 1, .reusable = true}}, SHIFT(983), - [1896] = {.entry = {.count = 1, .reusable = false}}, SHIFT(983), - [1898] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), - [1900] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1162), - [1902] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat, 2), - [1904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(695), - [1906] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 2, .production_id = 107), - [1908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1325), - [1910] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 1, .production_id = 83), - [1912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1340), - [1914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(696), - [1916] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, .production_id = 31), - [1918] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, .production_id = 21), SHIFT_REPEAT(175), - [1921] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, .production_id = 21), SHIFT_REPEAT(983), - [1924] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, .production_id = 21), SHIFT_REPEAT(983), - [1927] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, .production_id = 21), - [1929] = {.entry = {.count = 1, .reusable = true}}, SHIFT(578), - [1931] = {.entry = {.count = 1, .reusable = true}}, SHIFT(203), - [1933] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat, 2, .production_id = 14), - [1935] = {.entry = {.count = 1, .reusable = true}}, SHIFT(719), - [1937] = {.entry = {.count = 1, .reusable = true}}, SHIFT(752), - [1939] = {.entry = {.count = 1, .reusable = true}}, SHIFT(200), - [1941] = {.entry = {.count = 1, .reusable = true}}, SHIFT(805), - [1943] = {.entry = {.count = 1, .reusable = true}}, SHIFT(181), - [1945] = {.entry = {.count = 1, .reusable = true}}, SHIFT(767), - [1947] = {.entry = {.count = 1, .reusable = true}}, SHIFT(716), - [1949] = {.entry = {.count = 1, .reusable = true}}, SHIFT(572), - [1951] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1169), - [1953] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 3), - [1955] = {.entry = {.count = 1, .reusable = true}}, SHIFT(570), - [1957] = {.entry = {.count = 1, .reusable = true}}, SHIFT(604), - [1959] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression_within_for_in_clause, 1), - [1961] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_or_pattern, 4), - [1963] = {.entry = {.count = 1, .reusable = true}}, SHIFT(827), - [1965] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_or_pattern_repeat1, 2), - [1967] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_or_pattern_repeat1, 2), SHIFT_REPEAT(827), - [1970] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_or_pattern, 3), - [1972] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comprehension_clauses, 2), - [1974] = {.entry = {.count = 1, .reusable = true}}, SHIFT(370), - [1976] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__f_expression, 1), - [1978] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), - [1980] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(370), - [1983] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(1472), - [1986] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(560), - [1989] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comprehension_clauses, 1), - [1991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(405), - [1993] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, .production_id = 141), - [1995] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), - [1997] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_group_pattern, 3, .production_id = 131), - [1999] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1449), - [2001] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1465), - [2003] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1461), - [2005] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 9, .production_id = 136), - [2007] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_clause, 2), - [2009] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 6), - [2011] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 4, .production_id = 136), - [2013] = {.entry = {.count = 1, .reusable = true}}, SHIFT(406), - [2015] = {.entry = {.count = 1, .reusable = true}}, SHIFT(403), - [2017] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2), - [2019] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2), SHIFT_REPEAT(293), - [2022] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_or_pattern, 1), - [2024] = {.entry = {.count = 1, .reusable = true}}, SHIFT(826), - [2026] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 8, .production_id = 136), - [2028] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 2), - [2030] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 6, .production_id = 136), - [2032] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, .production_id = 36), - [2034] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, .production_id = 36), SHIFT_REPEAT(240), - [2037] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 4, .production_id = 98), - [2039] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205), - [2041] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 2, .production_id = 16), - [2043] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164), - [2045] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 4), - [2047] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 2), - [2049] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 5), - [2051] = {.entry = {.count = 1, .reusable = true}}, SHIFT(364), - [2053] = {.entry = {.count = 1, .reusable = true}}, SHIFT(192), - [2055] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 2), - [2057] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 5), - [2059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(162), - [2061] = {.entry = {.count = 1, .reusable = true}}, SHIFT(824), - [2063] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, .production_id = 123), - [2065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(206), - [2067] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 4, .production_id = 149), - [2069] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 3, .production_id = 132), - [2071] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 3, .production_id = 136), - [2073] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1474), - [2075] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1470), - [2077] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1451), - [2079] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 4), - [2081] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 3), - [2083] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 3), - [2085] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 7, .production_id = 136), - [2087] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 7), - [2089] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 5, .production_id = 136), - [2091] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, .production_id = 122), - [2093] = {.entry = {.count = 1, .reusable = true}}, SHIFT(182), - [2095] = {.entry = {.count = 1, .reusable = true}}, SHIFT(410), - [2097] = {.entry = {.count = 1, .reusable = true}}, SHIFT(404), - [2099] = {.entry = {.count = 1, .reusable = true}}, SHIFT(394), - [2101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(366), - [2103] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 2), - [2105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(249), - [2107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(596), - [2109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(247), - [2111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(760), - [2113] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__right_hand_side, 1), - [2115] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 4, .production_id = 66), - [2117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(297), - [2119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1420), - [2121] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_item, 1, .dynamic_precedence = -1, .production_id = 12), - [2123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(566), - [2125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(301), - [2127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1397), - [2129] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 3, .production_id = 32), - [2131] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_content, 1), - [2133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1004), - [2135] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1004), - [2137] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_content, 1), - [2139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pair, 3, .production_id = 62), - [2141] = {.entry = {.count = 1, .reusable = true}}, SHIFT(243), - [2143] = {.entry = {.count = 1, .reusable = true}}, SHIFT(776), - [2145] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_pattern, 1), - [2147] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1468), - [2149] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 4, .production_id = 15), - [2151] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1023), - [2153] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1408), - [2155] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1409), - [2157] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1043), - [2159] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1124), - [2161] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1390), - [2163] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type, 1), - [2165] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_statement, 1), - [2167] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_delete_statement, 2, .production_id = 11), - [2169] = {.entry = {.count = 1, .reusable = true}}, SHIFT(311), - [2171] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2, .production_id = 10), - [2173] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2), - [2175] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2), SHIFT_REPEAT(1004), - [2178] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2), SHIFT_REPEAT(1004), - [2181] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2), - [2183] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1039), - [2185] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1123), - [2187] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1328), - [2189] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, .production_id = 31), - [2191] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 2), - [2193] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_default_parameter, 3, .production_id = 35), - [2195] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2), - [2197] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2), SHIFT_REPEAT(383), - [2200] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1469), - [2202] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 2), - [2204] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1106), - [2206] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, .production_id = 3), - [2208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, .production_id = 3), - [2210] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2), - [2212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, .production_id = 10), - [2214] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_as_pattern, 3, .production_id = 135), - [2216] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 5, .production_id = 43), - [2218] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 5, .production_id = 43), - [2220] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), - [2222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 1, .production_id = 6), - [2224] = {.entry = {.count = 1, .reusable = true}}, SHIFT(365), - [2226] = {.entry = {.count = 1, .reusable = true}}, SHIFT(288), - [2228] = {.entry = {.count = 1, .reusable = true}}, SHIFT(353), - [2230] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), - [2232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, .production_id = 95), - [2234] = {.entry = {.count = 1, .reusable = true}}, SHIFT(292), - [2236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_bound, 2, .production_id = 109), - [2238] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, .production_id = 4), - [2240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, .production_id = 4), - [2242] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_open_sequence_match_pattern_repeat1, 2), - [2244] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_open_sequence_match_pattern_repeat1, 2), SHIFT_REPEAT(822), - [2247] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1097), - [2249] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), - [2251] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 6, .production_id = 43), - [2253] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 6, .production_id = 43), - [2255] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 4, .production_id = 43), - [2257] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 4, .production_id = 43), - [2259] = {.entry = {.count = 1, .reusable = true}}, SHIFT(357), - [2261] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), - [2263] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2), SHIFT_REPEAT(1469), - [2266] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), - [2268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chevron, 2), - [2270] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 1), + [1855] = {.entry = {.count = 1, .reusable = true}}, SHIFT(383), + [1857] = {.entry = {.count = 1, .reusable = true}}, SHIFT(384), + [1859] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1400), + [1861] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_class_name, 2), + [1863] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_value_pattern, 2), + [1865] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 2), + [1867] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163), + [1869] = {.entry = {.count = 1, .reusable = true}}, SHIFT(437), + [1871] = {.entry = {.count = 1, .reusable = true}}, SHIFT(413), + [1873] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_expression, 3, .production_id = 27), + [1875] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 3, .production_id = 32), + [1877] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_expression, 3, .production_id = 35), + [1879] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_expression, 3, .production_id = 27), + [1881] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 4, .production_id = 66), + [1883] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda, 3, .production_id = 32), + [1885] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_expression, 3, .production_id = 35), + [1887] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_conditional_expression, 5), + [1889] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_boolean_operator, 3, .production_id = 39), + [1891] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_class_name, 1), + [1893] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_capture_pattern, 1), + [1895] = {.entry = {.count = 1, .reusable = true}}, SHIFT(800), + [1897] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_with_item, 1, .dynamic_precedence = -1, .production_id = 12), SHIFT(174), + [1900] = {.entry = {.count = 1, .reusable = false}}, SHIFT(567), + [1902] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda, 4, .production_id = 66), + [1904] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 1), + [1906] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_conditional_expression, 5), + [1908] = {.entry = {.count = 1, .reusable = false}}, SHIFT(171), + [1910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1009), + [1912] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1009), + [1914] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), + [1916] = {.entry = {.count = 1, .reusable = true}}, SHIFT(572), + [1918] = {.entry = {.count = 1, .reusable = true}}, SHIFT(724), + [1920] = {.entry = {.count = 1, .reusable = true}}, SHIFT(717), + [1922] = {.entry = {.count = 1, .reusable = true}}, SHIFT(570), + [1924] = {.entry = {.count = 1, .reusable = true}}, SHIFT(594), + [1926] = {.entry = {.count = 1, .reusable = true}}, SHIFT(575), + [1928] = {.entry = {.count = 1, .reusable = true}}, SHIFT(189), + [1930] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 1, .production_id = 83), + [1932] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1290), + [1934] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 2, .production_id = 107), + [1936] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1296), + [1938] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat, 2, .production_id = 14), + [1940] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 3), + [1942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(760), + [1944] = {.entry = {.count = 1, .reusable = true}}, SHIFT(739), + [1946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(198), + [1948] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, .production_id = 31), + [1950] = {.entry = {.count = 1, .reusable = true}}, SHIFT(700), + [1952] = {.entry = {.count = 1, .reusable = true}}, SHIFT(695), + [1954] = {.entry = {.count = 1, .reusable = true}}, SHIFT(782), + [1956] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205), + [1958] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1182), + [1960] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat, 2), + [1962] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1193), + [1964] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, .production_id = 21), SHIFT_REPEAT(171), + [1967] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, .production_id = 21), SHIFT_REPEAT(1009), + [1970] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, .production_id = 21), SHIFT_REPEAT(1009), + [1973] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, .production_id = 21), + [1975] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression_within_for_in_clause, 1), + [1977] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_or_pattern_repeat1, 2), + [1979] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_or_pattern_repeat1, 2), SHIFT_REPEAT(826), + [1982] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_or_pattern, 3), + [1984] = {.entry = {.count = 1, .reusable = true}}, SHIFT(826), + [1986] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comprehension_clauses, 1), + [1988] = {.entry = {.count = 1, .reusable = true}}, SHIFT(369), + [1990] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_or_pattern, 4), + [1992] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__f_expression, 1), + [1994] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), + [1996] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(369), + [1999] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(1425), + [2002] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2), SHIFT_REPEAT(563), + [2005] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comprehension_clauses, 2), + [2007] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 2), + [2009] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 5), + [2011] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, .production_id = 36), + [2013] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, .production_id = 36), SHIFT_REPEAT(240), + [2016] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 5), + [2018] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2), + [2020] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2), SHIFT_REPEAT(309), + [2023] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 4, .production_id = 136), + [2025] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, .production_id = 122), + [2027] = {.entry = {.count = 1, .reusable = true}}, SHIFT(195), + [2029] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1473), + [2031] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1469), + [2033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1450), + [2035] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 2, .production_id = 16), + [2037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(162), + [2039] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 5, .production_id = 136), + [2041] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 4), + [2043] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), + [2045] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 6), + [2047] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, .production_id = 123), + [2049] = {.entry = {.count = 1, .reusable = true}}, SHIFT(179), + [2051] = {.entry = {.count = 1, .reusable = true}}, SHIFT(372), + [2053] = {.entry = {.count = 1, .reusable = true}}, SHIFT(373), + [2055] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_clause, 2), + [2057] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 4), + [2059] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 6, .production_id = 136), + [2061] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 4, .production_id = 98), + [2063] = {.entry = {.count = 1, .reusable = true}}, SHIFT(211), + [2065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(370), + [2067] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 7), + [2069] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_group_pattern, 3, .production_id = 131), + [2071] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 3), + [2073] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 7, .production_id = 136), + [2075] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 3), + [2077] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 8, .production_id = 136), + [2079] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 9, .production_id = 136), + [2081] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 3, .production_id = 132), + [2083] = {.entry = {.count = 1, .reusable = true}}, SHIFT(427), + [2085] = {.entry = {.count = 1, .reusable = true}}, SHIFT(203), + [2087] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 2), + [2089] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1459), + [2091] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1379), + [2093] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1474), + [2095] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 2), + [2097] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 4, .production_id = 149), + [2099] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, .production_id = 141), + [2101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(200), + [2103] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 3, .production_id = 136), + [2105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(825), + [2107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_or_pattern, 1), + [2109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(827), + [2111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1044), + [2113] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1460), + [2115] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1465), + [2117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(419), + [2119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(420), + [2121] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_pattern, 1), + [2123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1442), + [2125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(312), + [2127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1358), + [2129] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_statement, 1), + [2131] = {.entry = {.count = 1, .reusable = true}}, SHIFT(438), + [2133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(426), + [2135] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 2), + [2137] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 3, .production_id = 32), + [2139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 4, .production_id = 15), + [2141] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pair, 3, .production_id = 62), + [2143] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, .production_id = 31), + [2145] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_item, 1, .dynamic_precedence = -1, .production_id = 12), + [2147] = {.entry = {.count = 1, .reusable = true}}, SHIFT(567), + [2149] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2), + [2151] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2), SHIFT_REPEAT(988), + [2154] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2), SHIFT_REPEAT(988), + [2157] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2), + [2159] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 4, .production_id = 66), + [2161] = {.entry = {.count = 1, .reusable = true}}, SHIFT(243), + [2163] = {.entry = {.count = 1, .reusable = true}}, SHIFT(583), + [2165] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1034), + [2167] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1094), + [2169] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1291), + [2171] = {.entry = {.count = 1, .reusable = true}}, SHIFT(288), + [2173] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1419), + [2175] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_delete_statement, 2, .production_id = 11), + [2177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 2), + [2179] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type, 1), + [2181] = {.entry = {.count = 1, .reusable = true}}, SHIFT(245), + [2183] = {.entry = {.count = 1, .reusable = true}}, SHIFT(766), + [2185] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1032), + [2187] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1108), + [2189] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1372), + [2191] = {.entry = {.count = 1, .reusable = true}}, SHIFT(293), + [2193] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2, .production_id = 10), + [2195] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__right_hand_side, 1), + [2197] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_content, 1), + [2199] = {.entry = {.count = 1, .reusable = true}}, SHIFT(988), + [2201] = {.entry = {.count = 1, .reusable = false}}, SHIFT(988), + [2203] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_content, 1), + [2205] = {.entry = {.count = 1, .reusable = true}}, SHIFT(247), + [2207] = {.entry = {.count = 1, .reusable = true}}, SHIFT(804), + [2209] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), + [2211] = {.entry = {.count = 1, .reusable = true}}, SHIFT(356), + [2213] = {.entry = {.count = 1, .reusable = true}}, SHIFT(121), + [2215] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, .production_id = 3), + [2217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, .production_id = 3), + [2219] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1106), + [2221] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_as_pattern, 3, .production_id = 135), + [2223] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2), + [2225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1453), + [2227] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 2), + [2229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, .production_id = 10), + [2231] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2), + [2233] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2), SHIFT_REPEAT(367), + [2236] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, .production_id = 4), + [2238] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, .production_id = 4), + [2240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_default_parameter, 3, .production_id = 35), + [2242] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1087), + [2244] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 4, .production_id = 43), + [2246] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 4, .production_id = 43), + [2248] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_bound, 2, .production_id = 109), + [2250] = {.entry = {.count = 1, .reusable = true}}, SHIFT(443), + [2252] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), + [2254] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2), SHIFT_REPEAT(1453), + [2257] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), + [2259] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_open_sequence_match_pattern_repeat1, 2), + [2261] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_open_sequence_match_pattern_repeat1, 2), SHIFT_REPEAT(821), + [2264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 1), + [2266] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, .production_id = 68), + [2268] = {.entry = {.count = 1, .reusable = true}}, SHIFT(296), + [2270] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chevron, 2), [2272] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 3, .production_id = 43), [2274] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 3, .production_id = 43), - [2276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__index_expression, 1), - [2278] = {.entry = {.count = 1, .reusable = true}}, SHIFT(273), - [2280] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), - [2282] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, .production_id = 68), - [2284] = {.entry = {.count = 1, .reusable = true}}, SHIFT(289), - [2286] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_default_parameter, 5, .production_id = 119), - [2288] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 3, .production_id = 22), - [2290] = {.entry = {.count = 1, .reusable = true}}, SHIFT(437), - [2292] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), - [2294] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 2, .production_id = 16), - [2296] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), - [2298] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1075), - [2300] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1445), - [2302] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 1, .production_id = 6), - [2304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias_statement, 4, .production_id = 63), - [2306] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 1), - [2308] = {.entry = {.count = 1, .reusable = true}}, SHIFT(170), - [2310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1058), - [2312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1051), - [2314] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1040), - [2316] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1117), - [2318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1239), - [2320] = {.entry = {.count = 1, .reusable = true}}, SHIFT(356), - [2322] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), - [2324] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 2), - [2326] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 2), SHIFT_REPEAT(170), - [2329] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 2), SHIFT_REPEAT(1054), - [2332] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, .production_id = 120), - [2334] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 2), - [2336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1054), - [2338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(209), - [2340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(190), - [2342] = {.entry = {.count = 1, .reusable = true}}, SHIFT(167), - [2344] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 3, .production_id = 30), - [2346] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, .production_id = 31), - [2348] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, .production_id = 35), - [2350] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_param_default, 2, .production_id = 110), - [2352] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, .production_id = 27), - [2354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1121), - [2356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(174), - [2358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), - [2360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(993), - [2362] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, .production_id = 94), - [2364] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, .production_id = 36), - [2366] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, .production_id = 36), SHIFT_REPEAT(229), - [2369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1209), - [2371] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1111), - [2373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1234), - [2375] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, .production_id = 6), - [2377] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, .production_id = 121), - [2379] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_star_pattern, 2, .production_id = 11), - [2381] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias_statement, 5, .production_id = 88), - [2383] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 5, .production_id = 140), - [2385] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, .production_id = 36), SHIFT_REPEAT(242), - [2388] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), - [2390] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 4, .production_id = 53), - [2392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(811), - [2394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(413), - [2396] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 3), - [2398] = {.entry = {.count = 1, .reusable = true}}, SHIFT(442), - [2400] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 5, .production_id = 15), - [2402] = {.entry = {.count = 1, .reusable = true}}, SHIFT(854), - [2404] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1043), - [2406] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1357), - [2408] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 2), - [2410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(121), - [2412] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paramspec_parameter, 2, .production_id = 23), - [2414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), - [2416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), - [2418] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorator, 3), - [2420] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 1), - [2422] = {.entry = {.count = 1, .reusable = true}}, SHIFT(283), - [2424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(396), - [2426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), - [2428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(305), - [2430] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, .production_id = 29), - [2432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(306), - [2434] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, .production_id = 28), - [2436] = {.entry = {.count = 1, .reusable = true}}, SHIFT(809), - [2438] = {.entry = {.count = 1, .reusable = true}}, SHIFT(433), - [2440] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), - [2442] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1131), - [2444] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1426), - [2446] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), - [2448] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1282), - [2450] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1251), - [2452] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 1, .production_id = 7), - [2454] = {.entry = {.count = 1, .reusable = true}}, SHIFT(503), - [2456] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevartuple_parameter, 2, .production_id = 23), - [2458] = {.entry = {.count = 1, .reusable = true}}, SHIFT(307), - [2460] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2), - [2462] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 3), - [2464] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1033), - [2466] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1194), - [2468] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2, .production_id = 16), - [2470] = {.entry = {.count = 1, .reusable = true}}, SHIFT(543), - [2472] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, .production_id = 23), - [2474] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, .production_id = 44), SHIFT_REPEAT(1156), - [2477] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, .production_id = 44), - [2479] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_import_prefix_repeat1, 2), - [2481] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_import_prefix_repeat1, 2), SHIFT_REPEAT(1122), - [2484] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_import_prefix, 1), - [2486] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1122), - [2488] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2), SHIFT_REPEAT(1357), - [2491] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2), - [2493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1046), - [2495] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, .production_id = 22), - [2497] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 3), - [2499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), - [2501] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3), - [2503] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3, .production_id = 49), - [2505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1062), - [2507] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, .production_id = 52), SHIFT_REPEAT(429), + [2276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_default_parameter, 5, .production_id = 119), + [2278] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, .production_id = 95), + [2280] = {.entry = {.count = 1, .reusable = true}}, SHIFT(304), + [2282] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), + [2284] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 6, .production_id = 43), + [2286] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 6, .production_id = 43), + [2288] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 5, .production_id = 43), + [2290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 5, .production_id = 43), + [2292] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__index_expression, 1), + [2294] = {.entry = {.count = 1, .reusable = true}}, SHIFT(265), + [2296] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 1, .production_id = 6), + [2298] = {.entry = {.count = 1, .reusable = true}}, SHIFT(352), + [2300] = {.entry = {.count = 1, .reusable = true}}, SHIFT(289), + [2302] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), + [2304] = {.entry = {.count = 1, .reusable = true}}, SHIFT(444), + [2306] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), + [2308] = {.entry = {.count = 1, .reusable = true}}, SHIFT(362), + [2310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), + [2312] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_star_pattern, 2, .production_id = 11), + [2314] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 3, .production_id = 22), + [2316] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, .production_id = 6), + [2318] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, .production_id = 36), + [2320] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, .production_id = 36), SHIFT_REPEAT(225), + [2323] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_param_default, 2, .production_id = 110), + [2325] = {.entry = {.count = 1, .reusable = true}}, SHIFT(169), + [2327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [2329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(969), + [2331] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1131), + [2333] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1050), + [2335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1409), + [2337] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 1, .production_id = 6), + [2339] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, .production_id = 120), + [2341] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, .production_id = 121), + [2343] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 1), + [2345] = {.entry = {.count = 1, .reusable = true}}, SHIFT(175), + [2347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1069), + [2349] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 2, .production_id = 16), + [2351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), + [2353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1058), + [2355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1180), + [2357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1091), + [2359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1225), + [2361] = {.entry = {.count = 1, .reusable = true}}, SHIFT(177), + [2363] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 3, .production_id = 30), + [2365] = {.entry = {.count = 1, .reusable = true}}, SHIFT(184), + [2367] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 4, .production_id = 53), + [2369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1036), + [2371] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1088), + [2373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1189), + [2375] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias_statement, 5, .production_id = 88), + [2377] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 2), + [2379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1080), + [2381] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, .production_id = 27), + [2383] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, .production_id = 35), + [2385] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, .production_id = 31), + [2387] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, .production_id = 36), SHIFT_REPEAT(244), + [2390] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, .production_id = 94), + [2392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [2394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(185), + [2396] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 2), + [2398] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 2), SHIFT_REPEAT(175), + [2401] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 2), SHIFT_REPEAT(1080), + [2404] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 5, .production_id = 140), + [2406] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias_statement, 4, .production_id = 63), + [2408] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevartuple_parameter, 2, .production_id = 23), + [2410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), + [2412] = {.entry = {.count = 1, .reusable = true}}, SHIFT(810), + [2414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1023), + [2416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1249), + [2418] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [2420] = {.entry = {.count = 1, .reusable = true}}, SHIFT(388), + [2422] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1175), + [2424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1171), + [2426] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2), SHIFT_REPEAT(426), + [2429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1032), + [2431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(306), + [2433] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, .production_id = 28), + [2435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [2437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(307), + [2439] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, .production_id = 29), + [2441] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 3), + [2443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1415), + [2445] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 2), + [2447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(851), + [2449] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2), + [2451] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2), SHIFT_REPEAT(345), + [2454] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paramspec_parameter, 2, .production_id = 23), + [2456] = {.entry = {.count = 1, .reusable = true}}, SHIFT(425), + [2458] = {.entry = {.count = 1, .reusable = true}}, SHIFT(809), + [2460] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1074), + [2462] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, .production_id = 22), + [2464] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_import_prefix, 1), + [2466] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1138), + [2468] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 2, .production_id = 84), + [2470] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1150), + [2472] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1405), + [2474] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 3), + [2476] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 3), + [2478] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorator, 3), + [2480] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), + [2482] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 5, .production_id = 15), + [2484] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3), + [2486] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3, .production_id = 49), + [2488] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 1, .production_id = 7), + [2490] = {.entry = {.count = 1, .reusable = true}}, SHIFT(543), + [2492] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1113), + [2494] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 2), + [2496] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_guard, 2, .production_id = 133), + [2498] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, .production_id = 23), + [2500] = {.entry = {.count = 1, .reusable = true}}, SHIFT(415), + [2502] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, .production_id = 44), SHIFT_REPEAT(1271), + [2505] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, .production_id = 44), + [2507] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, .production_id = 52), SHIFT_REPEAT(405), [2510] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, .production_id = 52), - [2512] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 2), - [2514] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2), SHIFT_REPEAT(366), - [2517] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_guard, 2, .production_id = 133), - [2519] = {.entry = {.count = 1, .reusable = true}}, SHIFT(812), - [2521] = {.entry = {.count = 1, .reusable = true}}, SHIFT(355), - [2523] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2), - [2525] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2), SHIFT_REPEAT(314), - [2528] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), - [2530] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), - [2532] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 2, .production_id = 84), - [2534] = {.entry = {.count = 1, .reusable = true}}, SHIFT(372), - [2536] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), - [2538] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_parameter, 3, .production_id = 65), - [2540] = {.entry = {.count = 1, .reusable = true}}, SHIFT(351), - [2542] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1099), - [2544] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1096), - [2546] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1418), - [2548] = {.entry = {.count = 1, .reusable = true}}, SHIFT(964), - [2550] = {.entry = {.count = 1, .reusable = true}}, SHIFT(927), - [2552] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 4, .production_id = 112), - [2554] = {.entry = {.count = 1, .reusable = true}}, SHIFT(931), - [2556] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1204), - [2558] = {.entry = {.count = 1, .reusable = true}}, SHIFT(820), - [2560] = {.entry = {.count = 1, .reusable = true}}, SHIFT(815), - [2562] = {.entry = {.count = 1, .reusable = true}}, SHIFT(131), - [2564] = {.entry = {.count = 1, .reusable = true}}, SHIFT(256), - [2566] = {.entry = {.count = 1, .reusable = true}}, SHIFT(238), - [2568] = {.entry = {.count = 1, .reusable = true}}, SHIFT(738), - [2570] = {.entry = {.count = 1, .reusable = true}}, SHIFT(235), - [2572] = {.entry = {.count = 1, .reusable = true}}, SHIFT(938), - [2574] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1155), - [2576] = {.entry = {.count = 1, .reusable = true}}, SHIFT(241), - [2578] = {.entry = {.count = 1, .reusable = true}}, SHIFT(741), - [2580] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_maybe_star_pattern, 1), - [2582] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_patterns, 1), - [2584] = {.entry = {.count = 1, .reusable = true}}, SHIFT(415), - [2586] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), - [2588] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, .production_id = 36), - [2590] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, .production_id = 36), SHIFT_REPEAT(221), - [2593] = {.entry = {.count = 1, .reusable = true}}, SHIFT(853), - [2595] = {.entry = {.count = 1, .reusable = true}}, SHIFT(963), - [2597] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1091), - [2599] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128), - [2601] = {.entry = {.count = 1, .reusable = true}}, SHIFT(269), - [2603] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1038), - [2605] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1077), - [2607] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_mapping_pattern_repeat1, 2), SHIFT_REPEAT(864), - [2610] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_mapping_pattern_repeat1, 2), - [2612] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 3, .production_id = 86), - [2614] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), - [2616] = {.entry = {.count = 1, .reusable = true}}, SHIFT(813), - [2618] = {.entry = {.count = 1, .reusable = true}}, SHIFT(961), - [2620] = {.entry = {.count = 1, .reusable = true}}, SHIFT(314), + [2512] = {.entry = {.count = 1, .reusable = true}}, SHIFT(422), + [2514] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1049), + [2516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), + [2518] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), + [2520] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 1), + [2522] = {.entry = {.count = 1, .reusable = true}}, SHIFT(280), + [2524] = {.entry = {.count = 1, .reusable = true}}, SHIFT(433), + [2526] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_import_prefix_repeat1, 2), + [2528] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_import_prefix_repeat1, 2), SHIFT_REPEAT(1138), + [2531] = {.entry = {.count = 1, .reusable = true}}, SHIFT(812), + [2533] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), + [2535] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_parameter, 3, .production_id = 65), + [2537] = {.entry = {.count = 1, .reusable = true}}, SHIFT(445), + [2539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), + [2541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(122), + [2543] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2), SHIFT_REPEAT(1415), + [2546] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2), + [2548] = {.entry = {.count = 1, .reusable = true}}, SHIFT(394), + [2550] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), + [2552] = {.entry = {.count = 1, .reusable = true}}, SHIFT(300), + [2554] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2), + [2556] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2, .production_id = 16), + [2558] = {.entry = {.count = 1, .reusable = true}}, SHIFT(473), + [2560] = {.entry = {.count = 1, .reusable = true}}, SHIFT(151), + [2562] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, .production_id = 37), + [2564] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_separator, 1), + [2566] = {.entry = {.count = 1, .reusable = true}}, SHIFT(755), + [2568] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), + [2570] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1129), + [2572] = {.entry = {.count = 1, .reusable = true}}, SHIFT(131), + [2574] = {.entry = {.count = 1, .reusable = true}}, SHIFT(260), + [2576] = {.entry = {.count = 1, .reusable = true}}, SHIFT(950), + [2578] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1205), + [2580] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_item, 3, .dynamic_precedence = -1, .production_id = 58), + [2582] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1137), + [2584] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2), + [2586] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2), SHIFT_REPEAT(862), + [2589] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1281), + [2591] = {.entry = {.count = 1, .reusable = true}}, SHIFT(592), + [2593] = {.entry = {.count = 1, .reusable = true}}, SHIFT(191), + [2595] = {.entry = {.count = 1, .reusable = true}}, SHIFT(597), + [2597] = {.entry = {.count = 1, .reusable = true}}, SHIFT(192), + [2599] = {.entry = {.count = 1, .reusable = true}}, SHIFT(605), + [2601] = {.entry = {.count = 1, .reusable = true}}, SHIFT(193), + [2603] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1217), + [2605] = {.entry = {.count = 1, .reusable = true}}, SHIFT(228), + [2607] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_relative_import, 1), + [2609] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_mapping_pattern_repeat1, 2), SHIFT_REPEAT(864), + [2612] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_mapping_pattern_repeat1, 2), + [2614] = {.entry = {.count = 1, .reusable = true}}, SHIFT(230), + [2616] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1411), + [2618] = {.entry = {.count = 1, .reusable = true}}, SHIFT(302), + [2620] = {.entry = {.count = 1, .reusable = true}}, SHIFT(345), [2622] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 2), - [2624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(287), - [2626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1400), - [2628] = {.entry = {.count = 1, .reusable = true}}, SHIFT(298), - [2630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(308), - [2632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), - [2634] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1297), - [2636] = {.entry = {.count = 1, .reusable = true}}, SHIFT(992), - [2638] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1157), - [2640] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), - [2642] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 1), - [2644] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1020), - [2646] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, .production_id = 36), SHIFT_REPEAT(226), - [2649] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, .production_id = 36), - [2651] = {.entry = {.count = 1, .reusable = true}}, SHIFT(858), - [2653] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130), - [2655] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2), SHIFT_REPEAT(133), - [2658] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2), - [2660] = {.entry = {.count = 1, .reusable = true}}, SHIFT(819), - [2662] = {.entry = {.count = 1, .reusable = true}}, SHIFT(818), - [2664] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 1), - [2666] = {.entry = {.count = 1, .reusable = true}}, SHIFT(856), - [2668] = {.entry = {.count = 1, .reusable = true}}, SHIFT(127), - [2670] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1172), - [2672] = {.entry = {.count = 1, .reusable = true}}, SHIFT(151), - [2674] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, .production_id = 37), - [2676] = {.entry = {.count = 1, .reusable = true}}, SHIFT(228), - [2678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(245), - [2680] = {.entry = {.count = 1, .reusable = true}}, SHIFT(798), - [2682] = {.entry = {.count = 1, .reusable = true}}, SHIFT(248), - [2684] = {.entry = {.count = 1, .reusable = true}}, SHIFT(803), - [2686] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, .production_id = 44), SHIFT_REPEAT(1279), - [2689] = {.entry = {.count = 1, .reusable = true}}, SHIFT(753), - [2691] = {.entry = {.count = 1, .reusable = true}}, SHIFT(208), - [2693] = {.entry = {.count = 1, .reusable = true}}, SHIFT(250), - [2695] = {.entry = {.count = 1, .reusable = true}}, SHIFT(600), - [2697] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 1, .production_id = 73), - [2699] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 1, .production_id = 73), - [2701] = {.entry = {.count = 1, .reusable = true}}, SHIFT(244), - [2703] = {.entry = {.count = 1, .reusable = true}}, SHIFT(579), - [2705] = {.entry = {.count = 1, .reusable = true}}, SHIFT(859), - [2707] = {.entry = {.count = 1, .reusable = true}}, SHIFT(806), - [2709] = {.entry = {.count = 1, .reusable = true}}, SHIFT(211), - [2711] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat2, 2), - [2713] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat2, 2), SHIFT_REPEAT(1285), - [2716] = {.entry = {.count = 1, .reusable = true}}, SHIFT(222), - [2718] = {.entry = {.count = 1, .reusable = true}}, SHIFT(807), - [2720] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, .production_id = 113), SHIFT_REPEAT(992), - [2723] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, .production_id = 113), - [2725] = {.entry = {.count = 1, .reusable = true}}, SHIFT(594), - [2727] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202), - [2729] = {.entry = {.count = 1, .reusable = true}}, SHIFT(220), - [2731] = {.entry = {.count = 1, .reusable = true}}, SHIFT(214), - [2733] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 2, .production_id = 16), - [2735] = {.entry = {.count = 1, .reusable = true}}, SHIFT(212), - [2737] = {.entry = {.count = 1, .reusable = true}}, SHIFT(324), - [2739] = {.entry = {.count = 1, .reusable = true}}, SHIFT(757), - [2741] = {.entry = {.count = 1, .reusable = true}}, SHIFT(207), - [2743] = {.entry = {.count = 1, .reusable = true}}, SHIFT(758), - [2745] = {.entry = {.count = 1, .reusable = true}}, SHIFT(197), - [2747] = {.entry = {.count = 1, .reusable = true}}, SHIFT(799), - [2749] = {.entry = {.count = 1, .reusable = true}}, SHIFT(184), - [2751] = {.entry = {.count = 1, .reusable = true}}, SHIFT(230), - [2753] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1130), - [2755] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1129), - [2757] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2), - [2759] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2), SHIFT_REPEAT(861), - [2762] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_aliased_import, 3, .production_id = 45), - [2764] = {.entry = {.count = 1, .reusable = true}}, SHIFT(585), - [2766] = {.entry = {.count = 1, .reusable = true}}, SHIFT(179), - [2768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(573), - [2770] = {.entry = {.count = 1, .reusable = true}}, SHIFT(189), - [2772] = {.entry = {.count = 1, .reusable = true}}, SHIFT(599), - [2774] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), - [2776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1258), - [2778] = {.entry = {.count = 1, .reusable = true}}, SHIFT(792), - [2780] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), - [2782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(775), - [2784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(204), - [2786] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_relative_import, 1), - [2788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), - [2790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(295), - [2792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), - [2794] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2), SHIFT_REPEAT(863), - [2797] = {.entry = {.count = 1, .reusable = true}}, SHIFT(237), - [2799] = {.entry = {.count = 1, .reusable = true}}, SHIFT(765), - [2801] = {.entry = {.count = 1, .reusable = true}}, SHIFT(196), - [2803] = {.entry = {.count = 1, .reusable = true}}, SHIFT(302), - [2805] = {.entry = {.count = 1, .reusable = true}}, SHIFT(851), - [2807] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_item, 3, .dynamic_precedence = -1, .production_id = 58), - [2809] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, .production_id = 36), SHIFT_REPEAT(274), - [2812] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, .production_id = 36), - [2814] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1154), - [2816] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), - [2818] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1195), - [2820] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat1, 2), - [2822] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat1, 2), SHIFT_REPEAT(823), - [2825] = {.entry = {.count = 1, .reusable = true}}, SHIFT(855), - [2827] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_separator, 1), - [2829] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1180), - [2831] = {.entry = {.count = 1, .reusable = true}}, SHIFT(431), - [2833] = {.entry = {.count = 1, .reusable = true}}, SHIFT(435), - [2835] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 2, .production_id = 15), - [2837] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 3, .production_id = 111), - [2839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1381), - [2841] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, .production_id = 67), - [2843] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pass_statement, 1), - [2845] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_statement, 1), - [2847] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_statement, 1), - [2849] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 5, .production_id = 92), - [2851] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 2, .production_id = 85), - [2853] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 3), - [2855] = {.entry = {.count = 1, .reusable = true}}, SHIFT(810), - [2857] = {.entry = {.count = 1, .reusable = false}}, SHIFT(892), - [2859] = {.entry = {.count = 1, .reusable = true}}, SHIFT(892), - [2861] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, .production_id = 31), - [2863] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), - [2865] = {.entry = {.count = 1, .reusable = true}}, SHIFT(276), - [2867] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), - [2869] = {.entry = {.count = 1, .reusable = true}}, SHIFT(284), - [2871] = {.entry = {.count = 1, .reusable = true}}, SHIFT(817), - [2873] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), - [2875] = {.entry = {.count = 1, .reusable = true}}, SHIFT(267), - [2877] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), - [2879] = {.entry = {.count = 1, .reusable = true}}, SHIFT(255), - [2881] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_double_star_pattern, 2, .production_id = 11), - [2883] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), - [2885] = {.entry = {.count = 1, .reusable = true}}, SHIFT(251), - [2887] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 2), - [2889] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, .production_id = 31), - [2891] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_keyword_pattern, 3, .production_id = 160), - [2893] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 2, .production_id = 5), - [2895] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), - [2897] = {.entry = {.count = 1, .reusable = true}}, SHIFT(253), - [2899] = {.entry = {.count = 1, .reusable = false}}, SHIFT(954), - [2901] = {.entry = {.count = 1, .reusable = true}}, SHIFT(954), - [2903] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, .production_id = 48), - [2905] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, .production_id = 47), - [2907] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wildcard_import, 1), - [2909] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 4, .production_id = 46), - [2911] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1478), - [2913] = {.entry = {.count = 1, .reusable = true}}, SHIFT(929), - [2915] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_positional_pattern, 1), - [2917] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, .production_id = 86), - [2919] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paramspec_parameter, 3, .production_id = 108), - [2921] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevartuple_parameter, 3, .production_id = 108), - [2923] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 6, .production_id = 96), - [2925] = {.entry = {.count = 1, .reusable = false}}, SHIFT(955), - [2927] = {.entry = {.count = 1, .reusable = true}}, SHIFT(955), - [2929] = {.entry = {.count = 1, .reusable = true}}, SHIFT(124), - [2931] = {.entry = {.count = 1, .reusable = true}}, SHIFT(285), - [2933] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 6, .production_id = 97), - [2935] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1419), - [2937] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, .production_id = 38), - [2939] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1038), - [2941] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), - [2943] = {.entry = {.count = 1, .reusable = true}}, SHIFT(259), - [2945] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_key_value_pattern, 3, .production_id = 62), - [2947] = {.entry = {.count = 1, .reusable = true}}, SHIFT(925), - [2949] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_augmented_assignment, 3, .production_id = 39), - [2951] = {.entry = {.count = 1, .reusable = true}}, SHIFT(739), - [2953] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118), - [2955] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1188), - [2957] = {.entry = {.count = 1, .reusable = true}}, SHIFT(825), - [2959] = {.entry = {.count = 1, .reusable = true}}, SHIFT(783), - [2961] = {.entry = {.count = 1, .reusable = true}}, SHIFT(740), - [2963] = {.entry = {.count = 1, .reusable = true}}, SHIFT(780), - [2965] = {.entry = {.count = 1, .reusable = true}}, SHIFT(779), - [2967] = {.entry = {.count = 1, .reusable = true}}, SHIFT(785), - [2969] = {.entry = {.count = 1, .reusable = true}}, SHIFT(438), - [2971] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), - [2973] = {.entry = {.count = 1, .reusable = true}}, SHIFT(782), - [2975] = {.entry = {.count = 1, .reusable = true}}, SHIFT(671), - [2977] = {.entry = {.count = 1, .reusable = true}}, SHIFT(795), - [2979] = {.entry = {.count = 1, .reusable = true}}, SHIFT(796), - [2981] = {.entry = {.count = 1, .reusable = true}}, SHIFT(766), - [2983] = {.entry = {.count = 1, .reusable = true}}, SHIFT(801), - [2985] = {.entry = {.count = 1, .reusable = true}}, SHIFT(802), - [2987] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 5), - [2989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(804), - [2991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), - [2993] = {.entry = {.count = 1, .reusable = true}}, SHIFT(750), - [2995] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1032), - [2997] = {.entry = {.count = 1, .reusable = true}}, SHIFT(838), - [2999] = {.entry = {.count = 1, .reusable = true}}, SHIFT(592), - [3001] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), - [3003] = {.entry = {.count = 1, .reusable = true}}, SHIFT(322), - [3005] = {.entry = {.count = 1, .reusable = true}}, SHIFT(743), - [3007] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1007), - [3009] = {.entry = {.count = 1, .reusable = true}}, SHIFT(605), - [3011] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1070), - [3013] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), - [3015] = {.entry = {.count = 1, .reusable = true}}, SHIFT(603), - [3017] = {.entry = {.count = 1, .reusable = true}}, SHIFT(349), - [3019] = {.entry = {.count = 1, .reusable = true}}, SHIFT(657), - [3021] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), - [3023] = {.entry = {.count = 1, .reusable = true}}, SHIFT(597), - [3025] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1105), - [3027] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 3), - [3029] = {.entry = {.count = 1, .reusable = true}}, SHIFT(591), - [3031] = {.entry = {.count = 1, .reusable = true}}, SHIFT(395), - [3033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), - [3035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1084), - [3037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), - [3039] = {.entry = {.count = 1, .reusable = true}}, SHIFT(836), - [3041] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1298), - [3043] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1113), - [3045] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1094), - [3047] = {.entry = {.count = 1, .reusable = true}}, SHIFT(213), - [3049] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), - [3051] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), - [3053] = {.entry = {.count = 1, .reusable = true}}, SHIFT(763), - [3055] = {.entry = {.count = 1, .reusable = true}}, SHIFT(762), - [3057] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), - [3059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1090), - [3061] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), - [3063] = {.entry = {.count = 1, .reusable = true}}, SHIFT(662), - [3065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), - [3067] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), - [3069] = {.entry = {.count = 1, .reusable = true}}, SHIFT(884), - [3071] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1307), - [3073] = {.entry = {.count = 1, .reusable = true}}, SHIFT(595), - [3075] = {.entry = {.count = 1, .reusable = true}}, SHIFT(602), - [3077] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), - [3079] = {.entry = {.count = 1, .reusable = true}}, SHIFT(122), - [3081] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1339), - [3083] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), - [3085] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), - [3087] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), - [3089] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1344), - [3091] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), - [3093] = {.entry = {.count = 1, .reusable = true}}, SHIFT(296), - [3095] = {.entry = {.count = 1, .reusable = true}}, SHIFT(432), - [3097] = {.entry = {.count = 1, .reusable = true}}, SHIFT(686), - [3099] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 4), - [3101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1246), - [3103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(580), - [3105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(577), - [3107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), - [3109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1248), - [3111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1071), - [3113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(821), - [3115] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_relative_import, 2, .production_id = 23), - [3117] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [3119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(389), - [3121] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameters, 1), - [3123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), - [3125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(755), - [3127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1081), - [3129] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1092), - [3131] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1136), - [3133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1102), - [3135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), - [3137] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), - [3139] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1019), - [3141] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1057), - [3143] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1146), - [3145] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1141), - [3147] = {.entry = {.count = 1, .reusable = true}}, SHIFT(559), - [3149] = {.entry = {.count = 1, .reusable = true}}, SHIFT(744), - [3151] = {.entry = {.count = 1, .reusable = true}}, SHIFT(965), + [2624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(822), + [2626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1398), + [2628] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat1, 2), + [2630] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat1, 2), SHIFT_REPEAT(823), + [2633] = {.entry = {.count = 1, .reusable = true}}, SHIFT(213), + [2635] = {.entry = {.count = 1, .reusable = true}}, SHIFT(318), + [2637] = {.entry = {.count = 1, .reusable = true}}, SHIFT(238), + [2639] = {.entry = {.count = 1, .reusable = true}}, SHIFT(768), + [2641] = {.entry = {.count = 1, .reusable = true}}, SHIFT(242), + [2643] = {.entry = {.count = 1, .reusable = true}}, SHIFT(737), + [2645] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 3, .production_id = 86), + [2647] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, .production_id = 44), SHIFT_REPEAT(1176), + [2650] = {.entry = {.count = 1, .reusable = true}}, SHIFT(856), + [2652] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 1), + [2654] = {.entry = {.count = 1, .reusable = true}}, SHIFT(981), + [2656] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1235), + [2658] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, .production_id = 36), SHIFT_REPEAT(273), + [2661] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, .production_id = 36), + [2663] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), + [2665] = {.entry = {.count = 1, .reusable = true}}, SHIFT(297), + [2667] = {.entry = {.count = 1, .reusable = true}}, SHIFT(818), + [2669] = {.entry = {.count = 1, .reusable = true}}, SHIFT(949), + [2671] = {.entry = {.count = 1, .reusable = true}}, SHIFT(740), + [2673] = {.entry = {.count = 1, .reusable = true}}, SHIFT(199), + [2675] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2), SHIFT_REPEAT(861), + [2678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(953), + [2680] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 1), + [2682] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1282), + [2684] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1213), + [2686] = {.entry = {.count = 1, .reusable = true}}, SHIFT(815), + [2688] = {.entry = {.count = 1, .reusable = true}}, SHIFT(816), + [2690] = {.entry = {.count = 1, .reusable = true}}, SHIFT(212), + [2692] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 2, .production_id = 16), + [2694] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat2, 2), + [2696] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat2, 2), SHIFT_REPEAT(1353), + [2699] = {.entry = {.count = 1, .reusable = true}}, SHIFT(854), + [2701] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), + [2703] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 1, .production_id = 73), + [2705] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 1, .production_id = 73), + [2707] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128), + [2709] = {.entry = {.count = 1, .reusable = true}}, SHIFT(274), + [2711] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1118), + [2713] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1119), + [2715] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1027), + [2717] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1048), + [2719] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), + [2721] = {.entry = {.count = 1, .reusable = true}}, SHIFT(127), + [2723] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1349), + [2725] = {.entry = {.count = 1, .reusable = true}}, SHIFT(249), + [2727] = {.entry = {.count = 1, .reusable = true}}, SHIFT(777), + [2729] = {.entry = {.count = 1, .reusable = true}}, SHIFT(250), + [2731] = {.entry = {.count = 1, .reusable = true}}, SHIFT(780), + [2733] = {.entry = {.count = 1, .reusable = true}}, SHIFT(858), + [2735] = {.entry = {.count = 1, .reusable = true}}, SHIFT(852), + [2737] = {.entry = {.count = 1, .reusable = true}}, SHIFT(951), + [2739] = {.entry = {.count = 1, .reusable = true}}, SHIFT(783), + [2741] = {.entry = {.count = 1, .reusable = true}}, SHIFT(206), + [2743] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 4, .production_id = 112), + [2745] = {.entry = {.count = 1, .reusable = true}}, SHIFT(784), + [2747] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, .production_id = 113), SHIFT_REPEAT(981), + [2750] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, .production_id = 113), + [2752] = {.entry = {.count = 1, .reusable = true}}, SHIFT(788), + [2754] = {.entry = {.count = 1, .reusable = true}}, SHIFT(207), + [2756] = {.entry = {.count = 1, .reusable = true}}, SHIFT(790), + [2758] = {.entry = {.count = 1, .reusable = true}}, SHIFT(208), + [2760] = {.entry = {.count = 1, .reusable = true}}, SHIFT(791), + [2762] = {.entry = {.count = 1, .reusable = true}}, SHIFT(209), + [2764] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2), SHIFT_REPEAT(133), + [2767] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2), + [2769] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), + [2771] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_aliased_import, 3, .production_id = 45), + [2773] = {.entry = {.count = 1, .reusable = true}}, SHIFT(751), + [2775] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), + [2777] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, .production_id = 36), + [2779] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, .production_id = 36), SHIFT_REPEAT(218), + [2782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(857), + [2784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1042), + [2786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(358), + [2788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), + [2790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130), + [2792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(430), + [2794] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_maybe_star_pattern, 1), + [2796] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_patterns, 1), + [2798] = {.entry = {.count = 1, .reusable = true}}, SHIFT(287), + [2800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(295), + [2802] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), + [2804] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), + [2806] = {.entry = {.count = 1, .reusable = true}}, SHIFT(246), + [2808] = {.entry = {.count = 1, .reusable = true}}, SHIFT(579), + [2810] = {.entry = {.count = 1, .reusable = true}}, SHIFT(429), + [2812] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 2, .production_id = 15), + [2814] = {.entry = {.count = 1, .reusable = true}}, SHIFT(248), + [2816] = {.entry = {.count = 1, .reusable = true}}, SHIFT(573), + [2818] = {.entry = {.count = 1, .reusable = true}}, SHIFT(859), + [2820] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, .production_id = 36), SHIFT_REPEAT(235), + [2823] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, .production_id = 36), + [2825] = {.entry = {.count = 1, .reusable = true}}, SHIFT(930), + [2827] = {.entry = {.count = 1, .reusable = true}}, SHIFT(819), + [2829] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1184), + [2831] = {.entry = {.count = 1, .reusable = true}}, SHIFT(290), + [2833] = {.entry = {.count = 1, .reusable = true}}, SHIFT(754), + [2835] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), + [2837] = {.entry = {.count = 1, .reusable = true}}, SHIFT(215), + [2839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(577), + [2841] = {.entry = {.count = 1, .reusable = true}}, SHIFT(190), + [2843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1191), + [2845] = {.entry = {.count = 1, .reusable = true}}, SHIFT(236), + [2847] = {.entry = {.count = 1, .reusable = true}}, SHIFT(237), + [2849] = {.entry = {.count = 1, .reusable = true}}, SHIFT(217), + [2851] = {.entry = {.count = 1, .reusable = true}}, SHIFT(954), + [2853] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 2, .production_id = 85), + [2855] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1387), + [2857] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), + [2859] = {.entry = {.count = 1, .reusable = true}}, SHIFT(257), + [2861] = {.entry = {.count = 1, .reusable = false}}, SHIFT(955), + [2863] = {.entry = {.count = 1, .reusable = true}}, SHIFT(955), + [2865] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wildcard_import, 1), + [2867] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_statement, 1), + [2869] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, .production_id = 47), + [2871] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 4, .production_id = 46), + [2873] = {.entry = {.count = 1, .reusable = false}}, SHIFT(962), + [2875] = {.entry = {.count = 1, .reusable = true}}, SHIFT(962), + [2877] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, .production_id = 48), + [2879] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), + [2881] = {.entry = {.count = 1, .reusable = true}}, SHIFT(259), + [2883] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_double_star_pattern, 2, .production_id = 11), + [2885] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pass_statement, 1), + [2887] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), + [2889] = {.entry = {.count = 1, .reusable = true}}, SHIFT(276), + [2891] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 5, .production_id = 92), + [2893] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_statement, 1), + [2895] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 2), + [2897] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_key_value_pattern, 3, .production_id = 62), + [2899] = {.entry = {.count = 1, .reusable = true}}, SHIFT(948), + [2901] = {.entry = {.count = 1, .reusable = true}}, SHIFT(817), + [2903] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevartuple_parameter, 3, .production_id = 108), + [2905] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paramspec_parameter, 3, .production_id = 108), + [2907] = {.entry = {.count = 1, .reusable = true}}, SHIFT(811), + [2909] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, .production_id = 67), + [2911] = {.entry = {.count = 1, .reusable = false}}, SHIFT(897), + [2913] = {.entry = {.count = 1, .reusable = true}}, SHIFT(897), + [2915] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1427), + [2917] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118), + [2919] = {.entry = {.count = 1, .reusable = true}}, SHIFT(282), + [2921] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), + [2923] = {.entry = {.count = 1, .reusable = true}}, SHIFT(284), + [2925] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), + [2927] = {.entry = {.count = 1, .reusable = true}}, SHIFT(285), + [2929] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), + [2931] = {.entry = {.count = 1, .reusable = true}}, SHIFT(286), + [2933] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [2935] = {.entry = {.count = 1, .reusable = true}}, SHIFT(267), + [2937] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, .production_id = 31), + [2939] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 3), + [2941] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, .production_id = 31), + [2943] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 6, .production_id = 96), + [2945] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 6, .production_id = 97), + [2947] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_positional_pattern, 1), + [2949] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, .production_id = 38), + [2951] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_augmented_assignment, 3, .production_id = 39), + [2953] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1027), + [2955] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_keyword_pattern, 3, .production_id = 160), + [2957] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 3, .production_id = 111), + [2959] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, .production_id = 86), + [2961] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 2, .production_id = 5), + [2963] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1399), + [2965] = {.entry = {.count = 1, .reusable = true}}, SHIFT(937), + [2967] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [2969] = {.entry = {.count = 1, .reusable = true}}, SHIFT(805), + [2971] = {.entry = {.count = 1, .reusable = true}}, SHIFT(414), + [2973] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), + [2975] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), + [2977] = {.entry = {.count = 1, .reusable = true}}, SHIFT(806), + [2979] = {.entry = {.count = 1, .reusable = true}}, SHIFT(772), + [2981] = {.entry = {.count = 1, .reusable = true}}, SHIFT(670), + [2983] = {.entry = {.count = 1, .reusable = true}}, SHIFT(793), + [2985] = {.entry = {.count = 1, .reusable = true}}, SHIFT(775), + [2987] = {.entry = {.count = 1, .reusable = true}}, SHIFT(604), + [2989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), + [2991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(778), + [2993] = {.entry = {.count = 1, .reusable = true}}, SHIFT(779), + [2995] = {.entry = {.count = 1, .reusable = true}}, SHIFT(600), + [2997] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_relative_import, 2, .production_id = 23), + [2999] = {.entry = {.count = 1, .reusable = true}}, SHIFT(346), + [3001] = {.entry = {.count = 1, .reusable = true}}, SHIFT(781), + [3003] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1054), + [3005] = {.entry = {.count = 1, .reusable = true}}, SHIFT(314), + [3007] = {.entry = {.count = 1, .reusable = true}}, SHIFT(762), + [3009] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1334), + [3011] = {.entry = {.count = 1, .reusable = true}}, SHIFT(574), + [3013] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1130), + [3015] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219), + [3017] = {.entry = {.count = 1, .reusable = true}}, SHIFT(124), + [3019] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 5), + [3021] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), + [3023] = {.entry = {.count = 1, .reusable = true}}, SHIFT(820), + [3025] = {.entry = {.count = 1, .reusable = true}}, SHIFT(991), + [3027] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [3029] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), + [3031] = {.entry = {.count = 1, .reusable = true}}, SHIFT(421), + [3033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(645), + [3035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(836), + [3037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(650), + [3039] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1099), + [3041] = {.entry = {.count = 1, .reusable = true}}, SHIFT(947), + [3043] = {.entry = {.count = 1, .reusable = true}}, SHIFT(882), + [3045] = {.entry = {.count = 1, .reusable = true}}, SHIFT(767), + [3047] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), + [3049] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1086), + [3051] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1326), + [3053] = {.entry = {.count = 1, .reusable = true}}, SHIFT(588), + [3055] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [3057] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1244), + [3059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [3061] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 3), + [3063] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [3065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), + [3067] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1178), + [3069] = {.entry = {.count = 1, .reusable = true}}, SHIFT(834), + [3071] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1100), + [3073] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), + [3075] = {.entry = {.count = 1, .reusable = true}}, SHIFT(761), + [3077] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [3079] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), + [3081] = {.entry = {.count = 1, .reusable = true}}, SHIFT(559), + [3083] = {.entry = {.count = 1, .reusable = true}}, SHIFT(586), + [3085] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), + [3087] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), + [3089] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [3091] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), + [3093] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), + [3095] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), + [3097] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 4), + [3099] = {.entry = {.count = 1, .reusable = true}}, SHIFT(294), + [3101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1105), + [3103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(771), + [3105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1041), + [3107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), + [3109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1015), + [3111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(764), + [3113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), + [3115] = {.entry = {.count = 1, .reusable = true}}, SHIFT(587), + [3117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), + [3119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(746), + [3121] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1077), + [3123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(678), + [3125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(376), + [3127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1062), + [3129] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1337), + [3131] = {.entry = {.count = 1, .reusable = true}}, SHIFT(584), + [3133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(801), + [3135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(585), + [3137] = {.entry = {.count = 1, .reusable = true}}, SHIFT(576), + [3139] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1084), + [3141] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1122), + [3143] = {.entry = {.count = 1, .reusable = true}}, SHIFT(802), + [3145] = {.entry = {.count = 1, .reusable = true}}, SHIFT(765), + [3147] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1103), + [3149] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1259), + [3151] = {.entry = {.count = 1, .reusable = true}}, SHIFT(434), + [3153] = {.entry = {.count = 1, .reusable = true}}, SHIFT(738), + [3155] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1145), + [3157] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1146), + [3159] = {.entry = {.count = 1, .reusable = true}}, SHIFT(803), + [3161] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1053), + [3163] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameters, 1), + [3165] = {.entry = {.count = 1, .reusable = true}}, SHIFT(824), + [3167] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1338), }; #ifdef __cplusplus @@ -71185,6 +72776,7 @@ extern const TSLanguage *tree_sitter_python(void) { tree_sitter_python_external_scanner_serialize, tree_sitter_python_external_scanner_deserialize, }, + .primary_state_ids = ts_primary_state_ids, }; return &language; } diff --git a/python/extractor/tsg-python/tsp/src/tree_sitter/array.h b/python/extractor/tsg-python/tsp/src/tree_sitter/array.h index 15a3b233bbb8..a17a574f04e0 100644 --- a/python/extractor/tsg-python/tsp/src/tree_sitter/array.h +++ b/python/extractor/tsg-python/tsp/src/tree_sitter/array.h @@ -14,6 +14,7 @@ extern "C" { #include #ifdef _MSC_VER +#pragma warning(push) #pragma warning(disable : 4101) #elif defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic push @@ -278,7 +279,7 @@ static inline void _array__splice(Array *self, size_t element_size, #define _compare_int(a, b) ((int)*(a) - (int)(b)) #ifdef _MSC_VER -#pragma warning(default : 4101) +#pragma warning(pop) #elif defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic pop #endif diff --git a/python/extractor/tsg-python/tsp/src/tree_sitter/parser.h b/python/extractor/tsg-python/tsp/src/tree_sitter/parser.h index cbbc7b4ee3c5..2b14ac1046bb 100644 --- a/python/extractor/tsg-python/tsp/src/tree_sitter/parser.h +++ b/python/extractor/tsg-python/tsp/src/tree_sitter/parser.h @@ -123,6 +123,7 @@ struct TSLanguage { unsigned (*serialize)(void *, char *); void (*deserialize)(void *, const char *, unsigned); } external_scanner; + const TSStateId *primary_state_ids; }; /* diff --git a/python/ql/integration-tests/query-suite/python-code-quality-extended.qls.expected b/python/ql/integration-tests/query-suite/python-code-quality-extended.qls.expected new file mode 100644 index 000000000000..960972c508c8 --- /dev/null +++ b/python/ql/integration-tests/query-suite/python-code-quality-extended.qls.expected @@ -0,0 +1,99 @@ +ql/python/ql/src/Classes/ConflictingAttributesInBaseClasses.ql +ql/python/ql/src/Classes/DefineEqualsWhenAddingAttributes.ql +ql/python/ql/src/Classes/EqualsOrHash.ql +ql/python/ql/src/Classes/InconsistentMRO.ql +ql/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql +ql/python/ql/src/Classes/MissingCallToDel.ql +ql/python/ql/src/Classes/MissingCallToInit.ql +ql/python/ql/src/Classes/MutatingDescriptor.ql +ql/python/ql/src/Classes/SubclassShadowing.ql +ql/python/ql/src/Classes/SuperclassDelCalledMultipleTimes.ql +ql/python/ql/src/Classes/SuperclassInitCalledMultipleTimes.ql +ql/python/ql/src/Classes/WrongNameForArgumentInClassInstantiation.ql +ql/python/ql/src/Classes/WrongNumberArgumentsInClassInstantiation.ql +ql/python/ql/src/Exceptions/CatchingBaseException.ql +ql/python/ql/src/Exceptions/EmptyExcept.ql +ql/python/ql/src/Exceptions/IllegalExceptionHandlerType.ql +ql/python/ql/src/Exceptions/IllegalRaise.ql +ql/python/ql/src/Exceptions/IncorrectExceptOrder.ql +ql/python/ql/src/Exceptions/NotImplementedIsNotAnException.ql +ql/python/ql/src/Expressions/CallToSuperWrongClass.ql +ql/python/ql/src/Expressions/CompareConstants.ql +ql/python/ql/src/Expressions/CompareIdenticalValues.ql +ql/python/ql/src/Expressions/CompareIdenticalValuesMissingSelf.ql +ql/python/ql/src/Expressions/Comparisons/UselessComparisonTest.ql +ql/python/ql/src/Expressions/ContainsNonContainer.ql +ql/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.ql +ql/python/ql/src/Expressions/EqualsNone.ql +ql/python/ql/src/Expressions/ExpectedMappingForFormatString.ql +ql/python/ql/src/Expressions/ExplicitCallToDel.ql +ql/python/ql/src/Expressions/Formatting/MixedExplicitImplicitIn3101Format.ql +ql/python/ql/src/Expressions/Formatting/UnusedArgumentIn3101Format.ql +ql/python/ql/src/Expressions/Formatting/UnusedNamedArgumentIn3101Format.ql +ql/python/ql/src/Expressions/Formatting/WrongNameInArgumentsFor3101Format.ql +ql/python/ql/src/Expressions/Formatting/WrongNumberArgumentsFor3101Format.ql +ql/python/ql/src/Expressions/HashedButNoHash.ql +ql/python/ql/src/Expressions/IncorrectComparisonUsingIs.ql +ql/python/ql/src/Expressions/NonCallableCalled.ql +ql/python/ql/src/Expressions/Regex/BackspaceEscape.ql +ql/python/ql/src/Expressions/Regex/DuplicateCharacterInSet.ql +ql/python/ql/src/Expressions/Regex/MissingPartSpecialGroup.ql +ql/python/ql/src/Expressions/Regex/UnmatchableCaret.ql +ql/python/ql/src/Expressions/Regex/UnmatchableDollar.ql +ql/python/ql/src/Expressions/UnintentionalImplicitStringConcatenation.ql +ql/python/ql/src/Expressions/UnnecessaryLambda.ql +ql/python/ql/src/Expressions/UnsupportedFormatCharacter.ql +ql/python/ql/src/Expressions/WrongNameForArgumentInCall.ql +ql/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql +ql/python/ql/src/Expressions/WrongNumberArgumentsInCall.ql +ql/python/ql/src/Functions/ConsistentReturns.ql +ql/python/ql/src/Functions/ExplicitReturnInInit.ql +ql/python/ql/src/Functions/IncorrectRaiseInSpecialMethod.ql +ql/python/ql/src/Functions/IncorrectlyOverriddenMethod.ql +ql/python/ql/src/Functions/IncorrectlySpecifiedOverriddenMethod.ql +ql/python/ql/src/Functions/InitIsGenerator.ql +ql/python/ql/src/Functions/IterReturnsNonIterator.ql +ql/python/ql/src/Functions/IterReturnsNonSelf.ql +ql/python/ql/src/Functions/ModificationOfParameterWithDefault.ql +ql/python/ql/src/Functions/NonCls.ql +ql/python/ql/src/Functions/NonSelf.ql +ql/python/ql/src/Functions/OverlyComplexDelMethod.ql +ql/python/ql/src/Functions/ReturnConsistentTupleSizes.ql +ql/python/ql/src/Functions/SignatureOverriddenMethod.ql +ql/python/ql/src/Functions/SignatureSpecialMethods.ql +ql/python/ql/src/Functions/UseImplicitNoneReturnValue.ql +ql/python/ql/src/Imports/EncodingError.ql +ql/python/ql/src/Imports/ImportandImportFrom.ql +ql/python/ql/src/Imports/ModuleImportsItself.ql +ql/python/ql/src/Imports/MultipleImports.ql +ql/python/ql/src/Imports/SyntaxError.ql +ql/python/ql/src/Imports/UnintentionalImport.ql +ql/python/ql/src/Imports/UnusedImport.ql +ql/python/ql/src/Lexical/CommentedOutCode.ql +ql/python/ql/src/Resources/FileNotAlwaysClosed.ql +ql/python/ql/src/Statements/AssertOnTuple.ql +ql/python/ql/src/Statements/ConstantInConditional.ql +ql/python/ql/src/Statements/IterableStringOrSequence.ql +ql/python/ql/src/Statements/MismatchInMultipleAssignment.ql +ql/python/ql/src/Statements/ModificationOfLocals.ql +ql/python/ql/src/Statements/NestedLoopsSameVariable.ql +ql/python/ql/src/Statements/NestedLoopsSameVariableWithReuse.ql +ql/python/ql/src/Statements/NonIteratorInForLoop.ql +ql/python/ql/src/Statements/RedundantAssignment.ql +ql/python/ql/src/Statements/ShouldUseWithStatement.ql +ql/python/ql/src/Statements/SideEffectInAssert.ql +ql/python/ql/src/Statements/StatementNoEffect.ql +ql/python/ql/src/Statements/TopLevelPrint.ql +ql/python/ql/src/Statements/UnnecessaryElseClause.ql +ql/python/ql/src/Statements/UnnecessaryPass.ql +ql/python/ql/src/Statements/UnreachableCode.ql +ql/python/ql/src/Statements/UnusedExceptionObject.ql +ql/python/ql/src/Statements/UseOfExit.ql +ql/python/ql/src/Testing/ImpreciseAssert.ql +ql/python/ql/src/Variables/GlobalAtModuleLevel.ql +ql/python/ql/src/Variables/LoopVariableCapture/LoopVariableCapture.ql +ql/python/ql/src/Variables/MultiplyDefined.ql +ql/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql +ql/python/ql/src/Variables/UndefinedExport.ql +ql/python/ql/src/Variables/UnusedLocalVariable.ql +ql/python/ql/src/Variables/UnusedModuleVariable.ql diff --git a/python/ql/integration-tests/query-suite/python-code-quality.qls.expected b/python/ql/integration-tests/query-suite/python-code-quality.qls.expected index b81d300d0241..960972c508c8 100644 --- a/python/ql/integration-tests/query-suite/python-code-quality.qls.expected +++ b/python/ql/integration-tests/query-suite/python-code-quality.qls.expected @@ -1,6 +1,99 @@ +ql/python/ql/src/Classes/ConflictingAttributesInBaseClasses.ql +ql/python/ql/src/Classes/DefineEqualsWhenAddingAttributes.ql +ql/python/ql/src/Classes/EqualsOrHash.ql +ql/python/ql/src/Classes/InconsistentMRO.ql +ql/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql +ql/python/ql/src/Classes/MissingCallToDel.ql +ql/python/ql/src/Classes/MissingCallToInit.ql +ql/python/ql/src/Classes/MutatingDescriptor.ql +ql/python/ql/src/Classes/SubclassShadowing.ql +ql/python/ql/src/Classes/SuperclassDelCalledMultipleTimes.ql +ql/python/ql/src/Classes/SuperclassInitCalledMultipleTimes.ql +ql/python/ql/src/Classes/WrongNameForArgumentInClassInstantiation.ql +ql/python/ql/src/Classes/WrongNumberArgumentsInClassInstantiation.ql +ql/python/ql/src/Exceptions/CatchingBaseException.ql +ql/python/ql/src/Exceptions/EmptyExcept.ql +ql/python/ql/src/Exceptions/IllegalExceptionHandlerType.ql +ql/python/ql/src/Exceptions/IllegalRaise.ql +ql/python/ql/src/Exceptions/IncorrectExceptOrder.ql +ql/python/ql/src/Exceptions/NotImplementedIsNotAnException.ql +ql/python/ql/src/Expressions/CallToSuperWrongClass.ql +ql/python/ql/src/Expressions/CompareConstants.ql +ql/python/ql/src/Expressions/CompareIdenticalValues.ql +ql/python/ql/src/Expressions/CompareIdenticalValuesMissingSelf.ql +ql/python/ql/src/Expressions/Comparisons/UselessComparisonTest.ql +ql/python/ql/src/Expressions/ContainsNonContainer.ql +ql/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.ql +ql/python/ql/src/Expressions/EqualsNone.ql +ql/python/ql/src/Expressions/ExpectedMappingForFormatString.ql +ql/python/ql/src/Expressions/ExplicitCallToDel.ql +ql/python/ql/src/Expressions/Formatting/MixedExplicitImplicitIn3101Format.ql +ql/python/ql/src/Expressions/Formatting/UnusedArgumentIn3101Format.ql +ql/python/ql/src/Expressions/Formatting/UnusedNamedArgumentIn3101Format.ql +ql/python/ql/src/Expressions/Formatting/WrongNameInArgumentsFor3101Format.ql +ql/python/ql/src/Expressions/Formatting/WrongNumberArgumentsFor3101Format.ql +ql/python/ql/src/Expressions/HashedButNoHash.ql +ql/python/ql/src/Expressions/IncorrectComparisonUsingIs.ql +ql/python/ql/src/Expressions/NonCallableCalled.ql +ql/python/ql/src/Expressions/Regex/BackspaceEscape.ql +ql/python/ql/src/Expressions/Regex/DuplicateCharacterInSet.ql +ql/python/ql/src/Expressions/Regex/MissingPartSpecialGroup.ql +ql/python/ql/src/Expressions/Regex/UnmatchableCaret.ql +ql/python/ql/src/Expressions/Regex/UnmatchableDollar.ql +ql/python/ql/src/Expressions/UnintentionalImplicitStringConcatenation.ql +ql/python/ql/src/Expressions/UnnecessaryLambda.ql +ql/python/ql/src/Expressions/UnsupportedFormatCharacter.ql +ql/python/ql/src/Expressions/WrongNameForArgumentInCall.ql +ql/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql +ql/python/ql/src/Expressions/WrongNumberArgumentsInCall.ql +ql/python/ql/src/Functions/ConsistentReturns.ql +ql/python/ql/src/Functions/ExplicitReturnInInit.ql +ql/python/ql/src/Functions/IncorrectRaiseInSpecialMethod.ql +ql/python/ql/src/Functions/IncorrectlyOverriddenMethod.ql +ql/python/ql/src/Functions/IncorrectlySpecifiedOverriddenMethod.ql +ql/python/ql/src/Functions/InitIsGenerator.ql +ql/python/ql/src/Functions/IterReturnsNonIterator.ql +ql/python/ql/src/Functions/IterReturnsNonSelf.ql +ql/python/ql/src/Functions/ModificationOfParameterWithDefault.ql ql/python/ql/src/Functions/NonCls.ql ql/python/ql/src/Functions/NonSelf.ql +ql/python/ql/src/Functions/OverlyComplexDelMethod.ql ql/python/ql/src/Functions/ReturnConsistentTupleSizes.ql +ql/python/ql/src/Functions/SignatureOverriddenMethod.ql ql/python/ql/src/Functions/SignatureSpecialMethods.ql +ql/python/ql/src/Functions/UseImplicitNoneReturnValue.ql +ql/python/ql/src/Imports/EncodingError.ql +ql/python/ql/src/Imports/ImportandImportFrom.ql +ql/python/ql/src/Imports/ModuleImportsItself.ql +ql/python/ql/src/Imports/MultipleImports.ql +ql/python/ql/src/Imports/SyntaxError.ql +ql/python/ql/src/Imports/UnintentionalImport.ql +ql/python/ql/src/Imports/UnusedImport.ql +ql/python/ql/src/Lexical/CommentedOutCode.ql ql/python/ql/src/Resources/FileNotAlwaysClosed.ql +ql/python/ql/src/Statements/AssertOnTuple.ql +ql/python/ql/src/Statements/ConstantInConditional.ql +ql/python/ql/src/Statements/IterableStringOrSequence.ql +ql/python/ql/src/Statements/MismatchInMultipleAssignment.ql +ql/python/ql/src/Statements/ModificationOfLocals.ql +ql/python/ql/src/Statements/NestedLoopsSameVariable.ql +ql/python/ql/src/Statements/NestedLoopsSameVariableWithReuse.ql +ql/python/ql/src/Statements/NonIteratorInForLoop.ql +ql/python/ql/src/Statements/RedundantAssignment.ql +ql/python/ql/src/Statements/ShouldUseWithStatement.ql +ql/python/ql/src/Statements/SideEffectInAssert.ql +ql/python/ql/src/Statements/StatementNoEffect.ql +ql/python/ql/src/Statements/TopLevelPrint.ql +ql/python/ql/src/Statements/UnnecessaryElseClause.ql +ql/python/ql/src/Statements/UnnecessaryPass.ql +ql/python/ql/src/Statements/UnreachableCode.ql +ql/python/ql/src/Statements/UnusedExceptionObject.ql +ql/python/ql/src/Statements/UseOfExit.ql +ql/python/ql/src/Testing/ImpreciseAssert.ql +ql/python/ql/src/Variables/GlobalAtModuleLevel.ql ql/python/ql/src/Variables/LoopVariableCapture/LoopVariableCapture.ql +ql/python/ql/src/Variables/MultiplyDefined.ql +ql/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql +ql/python/ql/src/Variables/UndefinedExport.ql +ql/python/ql/src/Variables/UnusedLocalVariable.ql +ql/python/ql/src/Variables/UnusedModuleVariable.ql diff --git a/python/ql/integration-tests/query-suite/python-security-and-quality.qls.expected b/python/ql/integration-tests/query-suite/python-security-and-quality.qls.expected index e391dea95cd7..170d9f442f92 100644 --- a/python/ql/integration-tests/query-suite/python-security-and-quality.qls.expected +++ b/python/ql/integration-tests/query-suite/python-security-and-quality.qls.expected @@ -4,7 +4,7 @@ ql/python/ql/src/Classes/EqualsOrHash.ql ql/python/ql/src/Classes/EqualsOrNotEquals.ql ql/python/ql/src/Classes/IncompleteOrdering.ql ql/python/ql/src/Classes/InconsistentMRO.ql -ql/python/ql/src/Classes/InitCallsSubclassMethod.ql +ql/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql ql/python/ql/src/Classes/MissingCallToDel.ql ql/python/ql/src/Classes/MissingCallToInit.ql ql/python/ql/src/Classes/MutatingDescriptor.ql diff --git a/python/ql/integration-tests/query-suite/test.py b/python/ql/integration-tests/query-suite/test.py index 940d79bc3616..745a3b5e2007 100644 --- a/python/ql/integration-tests/query-suite/test.py +++ b/python/ql/integration-tests/query-suite/test.py @@ -2,7 +2,7 @@ import pytest from query_suites import * -well_known_query_suites = ['python-code-quality.qls', 'python-security-and-quality.qls', 'python-security-extended.qls', 'python-code-scanning.qls'] +well_known_query_suites = ['python-code-quality.qls', 'python-code-quality-extended.qls', 'python-security-and-quality.qls', 'python-security-extended.qls', 'python-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index 09dc9d983a81..9f915e24edcf 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.0.10 + +No user-facing changes. + ## 4.0.9 No user-facing changes. diff --git a/python/ql/lib/change-notes/2025-06-26-fix-match-as-identifier.md b/python/ql/lib/change-notes/2025-06-26-fix-match-as-identifier.md new file mode 100644 index 000000000000..47d18a533d56 --- /dev/null +++ b/python/ql/lib/change-notes/2025-06-26-fix-match-as-identifier.md @@ -0,0 +1,5 @@ +--- +category: fix +--- + +- The Python parser is now able to correctly parse expressions such as `match[1]` and `match()` where `match` is not used as a keyword. diff --git a/python/ql/lib/change-notes/released/4.0.10.md b/python/ql/lib/change-notes/released/4.0.10.md new file mode 100644 index 000000000000..5dd008b9fa16 --- /dev/null +++ b/python/ql/lib/change-notes/released/4.0.10.md @@ -0,0 +1,3 @@ +## 4.0.10 + +No user-facing changes. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index 25b75788f994..df9695089cae 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.0.9 +lastReleaseVersion: 4.0.10 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 4b1d284def3b..87101c60e09c 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.0.9 +version: 4.0.11-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/lib/semmle/python/security/internal/EncryptionKeySizes.qll b/python/ql/lib/semmle/python/security/internal/EncryptionKeySizes.qll index 46df3a3ca7bb..f42e31b2d7e5 100644 --- a/python/ql/lib/semmle/python/security/internal/EncryptionKeySizes.qll +++ b/python/ql/lib/semmle/python/security/internal/EncryptionKeySizes.qll @@ -4,6 +4,8 @@ * Provides predicates for recommended encryption key sizes. * Such that we can share this logic across our CodeQL analysis of different languages. */ +overlay[local?] +module; /** Returns the minimum recommended key size for RSA. */ int minSecureKeySizeRsa() { result = 2048 } diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 292fda17c908..4a77f1a1d6d4 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,13 @@ +## 1.6.0 + +### Query Metadata Changes + +* The tag `quality` has been added to multiple Python quality queries for consistency. They have all been given a tag for one of the two top-level categories `reliability` or `maintainability`, and a tag for a sub-category. See [Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags) for more information about these categories. + +### Minor Analysis Improvements + +* The `py/iter-returns-non-self` query has been modernized, and no longer alerts for certain cases where an equivalent iterator is returned. + ## 1.5.2 ### Minor Analysis Improvements diff --git a/python/ql/src/Classes/ConflictingAttributesInBaseClasses.ql b/python/ql/src/Classes/ConflictingAttributesInBaseClasses.ql index 34a9e133075c..947c547c0500 100644 --- a/python/ql/src/Classes/ConflictingAttributesInBaseClasses.ql +++ b/python/ql/src/Classes/ConflictingAttributesInBaseClasses.ql @@ -2,9 +2,9 @@ * @name Conflicting attributes in base classes * @description When a class subclasses multiple base classes and more than one base class defines the same attribute, attribute overriding may result in unexpected behavior by instances of this class. * @kind problem - * @tags reliability - * maintainability - * modularity + * @tags quality + * reliability + * correctness * @problem.severity warning * @sub-severity low * @precision high diff --git a/python/ql/src/Classes/DefineEqualsWhenAddingAttributes.ql b/python/ql/src/Classes/DefineEqualsWhenAddingAttributes.ql index e3101e7f6c08..f6829b237a8e 100644 --- a/python/ql/src/Classes/DefineEqualsWhenAddingAttributes.ql +++ b/python/ql/src/Classes/DefineEqualsWhenAddingAttributes.ql @@ -2,7 +2,8 @@ * @name `__eq__` not overridden when adding attributes * @description When adding new attributes to instances of a class, equality for that class needs to be defined. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity warning * @sub-severity high diff --git a/python/ql/src/Classes/EqualsOrHash.ql b/python/ql/src/Classes/EqualsOrHash.ql index 26be0c2ec43e..4c8cf2c11699 100644 --- a/python/ql/src/Classes/EqualsOrHash.ql +++ b/python/ql/src/Classes/EqualsOrHash.ql @@ -2,7 +2,8 @@ * @name Inconsistent equality and hashing * @description Defining equality for a class without also defining hashability (or vice-versa) violates the object model. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-581 * @problem.severity warning diff --git a/python/ql/src/Classes/InconsistentMRO.ql b/python/ql/src/Classes/InconsistentMRO.ql index 90c1d3869386..b479f86ec557 100644 --- a/python/ql/src/Classes/InconsistentMRO.ql +++ b/python/ql/src/Classes/InconsistentMRO.ql @@ -2,7 +2,8 @@ * @name Inconsistent method resolution order * @description Class definition will raise a type error at runtime due to inconsistent method resolution order(MRO) * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity high diff --git a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp new file mode 100644 index 000000000000..be8ba98c613c --- /dev/null +++ b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp @@ -0,0 +1,48 @@ + + + +

    +When initializing an instance of the class in the class' __init__ method, calls tha are made using the instance may receive an instance of the class that is not +yet fully initialized. When a method called in an initializer is overridden in a subclass, the subclass method receives the instance +in a potentially unexpected state. Fields that would be initialized after the call, including potentially in the subclass' __init__ method, +will not be initialized. This may lead to runtime errors, as well as make the code more difficult to maintain, as future changes may not +be aware of which fields would not be initialized. +

    + +
    + + +

    If possible, refactor the initializer method such that initialization is complete before calling any overridden methods. +For helper methods used as part of initialization, avoid overriding them, and instead call any additional logic required +in the subclass' __init__ method. +

    +

    +If the overridden method does not depend on the instance self, and only on its class, consider making it a @classmethod or @staticmethod instead. +

    +

    +If calling an overridden method is absolutely required, consider marking it as an internal method (by using an _ prefix) to +discourage external users of the library from overriding it and observing partially initialized state, and ensure that the fact it is called during initialization +is mentioned in the documentation. +

    + +
    + +

    In the following case, the __init__ method of Super calls the set_up method that is overridden by Sub. +This results in Sub.set_up being called with a partially initialized instance of Super which may be unexpected.

    + +

    In the following case, the initialization methods are separate between the superclass and the subclass.

    + +
    + + + +
  • CERT Secure Coding: +Rule MET05-J. Reference discusses Java but is applicable to object oriented programming in many languages.
  • +
  • StackOverflow: Overridable method calls in constructors.
  • +
  • Python documentation: @classmethod.
  • + + + + diff --git a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql new file mode 100644 index 000000000000..32eb5ffe79e5 --- /dev/null +++ b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql @@ -0,0 +1,58 @@ +/** + * @name `__init__` method calls overridden method + * @description Calling a method from `__init__` that is overridden by a subclass may result in a partially + * initialized instance being observed. + * @kind problem + * @tags reliability + * correctness + * quality + * @problem.severity warning + * @sub-severity low + * @precision high + * @id py/init-calls-subclass + */ + +import python +import semmle.python.dataflow.new.DataFlow +import semmle.python.dataflow.new.internal.DataFlowDispatch + +predicate initSelfCallOverridden( + Function init, DataFlow::Node self, DataFlow::MethodCallNode call, Function target, + Function override +) { + init.isInitMethod() and + call.getScope() = init and + exists(Class superclass, Class subclass, DataFlow::ParameterNode selfArg | + superclass = init.getScope() and + subclass = override.getScope() and + subclass = getADirectSubclass+(superclass) and + selfArg.getParameter() = init.getArg(0) and + DataFlow::localFlow(selfArg, self) and + call.calls(self, override.getName()) and + target = superclass.getAMethod() and + target.getName() = override.getName() + ) +} + +predicate readsFromSelf(Function method) { + exists(DataFlow::ParameterNode self, DataFlow::Node sink | + self.getParameter() = method.getArg(0) and + DataFlow::localFlow(self, sink) + | + sink instanceof DataFlow::ArgumentNode + or + sink = any(DataFlow::AttrRead a).getObject() + ) +} + +from + Function init, DataFlow::Node self, DataFlow::MethodCallNode call, Function target, + Function override +where + initSelfCallOverridden(init, self, call, target, override) and + readsFromSelf(override) and + not isClassmethod(override) and + not isStaticmethod(override) and + not target.getName().matches("\\_%") +select call, "This call to $@ in an initialization method is overridden by $@.", target, + target.getQualifiedName(), override, override.getQualifiedName() diff --git a/python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodBad.py b/python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodBad.py new file mode 100644 index 000000000000..4bb5466267dc --- /dev/null +++ b/python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodBad.py @@ -0,0 +1,23 @@ +class Super(object): + + def __init__(self, arg): + self._state = "Not OK" + self.set_up(arg) # BAD: This method is overridden, so `Sub.set_up` receives a partially initialized instance. + self._state = "OK" + + def set_up(self, arg): + "Do some setup" + self.a = 2 + +class Sub(Super): + + def __init__(self, arg): + super().__init__(arg) + self.important_state = "OK" + + def set_up(self, arg): + super().set_up(arg) + "Do some more setup" + # BAD: at this point `self._state` is set to `"Not OK"`, and `self.important_state` is not initialized. + if self._state == "OK": + self.b = self.a + 2 diff --git a/python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodGood.py b/python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodGood.py new file mode 100644 index 000000000000..ebf501f06642 --- /dev/null +++ b/python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodGood.py @@ -0,0 +1,24 @@ +class Super(object): + + def __init__(self, arg): + self._state = "Not OK" + self.super_set_up(arg) # GOOD: This isn't overriden. Instead, additional setup the subclass needs is called by the subclass' `__init__ method.` + self._state = "OK" + + def super_set_up(self, arg): + "Do some setup" + self.a = 2 + + +class Sub(Super): + + def __init__(self, arg): + super().__init__(arg) + self.sub_set_up(self, arg) + self.important_state = "OK" + + + def sub_set_up(self, arg): + "Do some more setup" + if self._state == "OK": + self.b = self.a + 2 \ No newline at end of file diff --git a/python/ql/src/Classes/InitCallsSubclassMethod.py b/python/ql/src/Classes/InitCallsSubclassMethod.py deleted file mode 100644 index 6e0dedb0142d..000000000000 --- a/python/ql/src/Classes/InitCallsSubclassMethod.py +++ /dev/null @@ -1,48 +0,0 @@ -#Superclass __init__ calls subclass method - -class Super(object): - - def __init__(self, arg): - self._state = "Not OK" - self.set_up(arg) - self._state = "OK" - - def set_up(self, arg): - "Do some set up" - -class Sub(Super): - - def __init__(self, arg): - Super.__init__(self, arg) - self.important_state = "OK" - - def set_up(self, arg): - Super.set_up(self, arg) - "Do some more set up" # Dangerous as self._state is "Not OK" - - -#Improved version with inheritance: - -class Super(object): - - def __init__(self, arg): - self._state = "Not OK" - self.super_set_up(arg) - self._state = "OK" - - def super_set_up(self, arg): - "Do some set up" - - -class Sub(Super): - - def __init__(self, arg): - Super.__init__(self, arg) - self.sub_set_up(self, arg) - self.important_state = "OK" - - - def sub_set_up(self, arg): - "Do some more set up" - - diff --git a/python/ql/src/Classes/InitCallsSubclassMethod.qhelp b/python/ql/src/Classes/InitCallsSubclassMethod.qhelp deleted file mode 100644 index 72904a0bd296..000000000000 --- a/python/ql/src/Classes/InitCallsSubclassMethod.qhelp +++ /dev/null @@ -1,42 +0,0 @@ - - - -

    -When an instance of a class is initialized, the super-class state should be -fully initialized before it becomes visible to the subclass. -Calling methods of the subclass in the superclass' __init__ -method violates this important invariant. -

    - -
    - - -

    Do not use methods that are subclassed in the construction of an object. -For simpler cases move the initialization into the superclass' __init__ method, -preventing it being overridden. Additional initialization of subclass should -be done in the __init__ method of the subclass. -For more complex cases, it is advisable to use a static method or function to manage -object creation. -

    - -

    Alternatively, avoid inheritance altogether using composition instead.

    - -
    - - - - - - - -
  • CERT Secure Coding: -Rule MET05-J. Although this is a Java rule it applies to most object-oriented languages.
  • -
  • Python Standard Library: Static methods.
  • -
  • Wikipedia: Composition over inheritance.
  • - - - -
    -
    diff --git a/python/ql/src/Classes/InitCallsSubclassMethod.ql b/python/ql/src/Classes/InitCallsSubclassMethod.ql deleted file mode 100644 index 2fb6e90dd7d5..000000000000 --- a/python/ql/src/Classes/InitCallsSubclassMethod.ql +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @name `__init__` method calls overridden method - * @description Calling a method from `__init__` that is overridden by a subclass may result in a partially - * initialized instance being observed. - * @kind problem - * @tags reliability - * correctness - * @problem.severity warning - * @sub-severity low - * @precision high - * @id py/init-calls-subclass - */ - -import python - -from - ClassObject supercls, string method, Call call, FunctionObject overriding, - FunctionObject overridden -where - exists(FunctionObject init, SelfAttribute sa | - supercls.declaredAttribute("__init__") = init and - call.getScope() = init.getFunction() and - call.getFunc() = sa - | - sa.getName() = method and - overridden = supercls.declaredAttribute(method) and - overriding.overrides(overridden) - ) -select call, "Call to self.$@ in __init__ method, which is overridden by $@.", overridden, method, - overriding, overriding.descriptiveString() diff --git a/python/ql/src/Classes/MissingCallToDel.ql b/python/ql/src/Classes/MissingCallToDel.ql index 641968789d62..be49dc48b5f4 100644 --- a/python/ql/src/Classes/MissingCallToDel.ql +++ b/python/ql/src/Classes/MissingCallToDel.ql @@ -2,8 +2,10 @@ * @name Missing call to `__del__` during object destruction * @description An omitted call to a super-class `__del__` method may lead to class instances not being cleaned up properly. * @kind problem - * @tags efficiency + * @tags quality + * reliability * correctness + * performance * @problem.severity error * @sub-severity low * @precision high diff --git a/python/ql/src/Classes/MissingCallToInit.ql b/python/ql/src/Classes/MissingCallToInit.ql index 81d1916056ef..4f5d3d90e84a 100644 --- a/python/ql/src/Classes/MissingCallToInit.ql +++ b/python/ql/src/Classes/MissingCallToInit.ql @@ -2,7 +2,8 @@ * @name Missing call to `__init__` during object initialization * @description An omitted call to a super-class `__init__` method may lead to objects of this class not being fully initialized. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Classes/MutatingDescriptor.ql b/python/ql/src/Classes/MutatingDescriptor.ql index 477ecc18206a..aad468f8e3c3 100644 --- a/python/ql/src/Classes/MutatingDescriptor.ql +++ b/python/ql/src/Classes/MutatingDescriptor.ql @@ -2,7 +2,8 @@ * @name Mutation of descriptor in `__get__` or `__set__` method. * @description Descriptor objects can be shared across many instances. Mutating them can cause strange side effects or race conditions. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Classes/SubclassShadowing.ql b/python/ql/src/Classes/SubclassShadowing.ql index 974230709bbf..542cf31c76aa 100644 --- a/python/ql/src/Classes/SubclassShadowing.ql +++ b/python/ql/src/Classes/SubclassShadowing.ql @@ -4,7 +4,8 @@ * method, hides the method in the subclass. * @kind problem * @problem.severity error - * @tags maintainability + * @tags quality + * reliability * correctness * @sub-severity low * @precision high diff --git a/python/ql/src/Classes/SuperclassDelCalledMultipleTimes.ql b/python/ql/src/Classes/SuperclassDelCalledMultipleTimes.ql index da301b6422ab..019da4257aa0 100644 --- a/python/ql/src/Classes/SuperclassDelCalledMultipleTimes.ql +++ b/python/ql/src/Classes/SuperclassDelCalledMultipleTimes.ql @@ -2,7 +2,8 @@ * @name Multiple calls to `__del__` during object destruction * @description A duplicated call to a super-class `__del__` method may lead to class instances not be cleaned up properly. * @kind problem - * @tags efficiency + * @tags quality + * reliability * correctness * @problem.severity warning * @sub-severity high diff --git a/python/ql/src/Classes/SuperclassInitCalledMultipleTimes.ql b/python/ql/src/Classes/SuperclassInitCalledMultipleTimes.ql index ec94202c0f33..6251ef274dac 100644 --- a/python/ql/src/Classes/SuperclassInitCalledMultipleTimes.ql +++ b/python/ql/src/Classes/SuperclassInitCalledMultipleTimes.ql @@ -2,7 +2,8 @@ * @name Multiple calls to `__init__` during object initialization * @description A duplicated call to a super-class `__init__` method may lead to objects of this class not being properly initialized. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity warning * @sub-severity high diff --git a/python/ql/src/Classes/WrongNameForArgumentInClassInstantiation.ql b/python/ql/src/Classes/WrongNameForArgumentInClassInstantiation.ql index 73631a134c88..1de99ebdbf61 100644 --- a/python/ql/src/Classes/WrongNameForArgumentInClassInstantiation.ql +++ b/python/ql/src/Classes/WrongNameForArgumentInClassInstantiation.ql @@ -4,7 +4,8 @@ * parameter of the __init__ method of the class being * instantiated, will result in a TypeError at runtime. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-628 * @problem.severity error diff --git a/python/ql/src/Classes/WrongNumberArgumentsInClassInstantiation.ql b/python/ql/src/Classes/WrongNumberArgumentsInClassInstantiation.ql index 8b456c91dced..8518905f3a90 100644 --- a/python/ql/src/Classes/WrongNumberArgumentsInClassInstantiation.ql +++ b/python/ql/src/Classes/WrongNumberArgumentsInClassInstantiation.ql @@ -3,7 +3,8 @@ * @description Using too many or too few arguments in a call to the `__init__` * method of a class will result in a TypeError at runtime. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-685 * @problem.severity error diff --git a/python/ql/src/Exceptions/CatchingBaseException.ql b/python/ql/src/Exceptions/CatchingBaseException.ql index 5205af33441b..79174488760b 100644 --- a/python/ql/src/Exceptions/CatchingBaseException.ql +++ b/python/ql/src/Exceptions/CatchingBaseException.ql @@ -2,9 +2,9 @@ * @name Except block handles 'BaseException' * @description Handling 'BaseException' means that system exits and keyboard interrupts may be mis-handled. * @kind problem - * @tags reliability - * readability - * convention + * @tags quality + * reliability + * error-handling * external/cwe/cwe-396 * @problem.severity recommendation * @sub-severity high diff --git a/python/ql/src/Exceptions/EmptyExcept.ql b/python/ql/src/Exceptions/EmptyExcept.ql index bfd0915a783e..e1bbb29cf8ba 100644 --- a/python/ql/src/Exceptions/EmptyExcept.ql +++ b/python/ql/src/Exceptions/EmptyExcept.ql @@ -2,8 +2,9 @@ * @name Empty except * @description Except doesn't do anything and has no comment * @kind problem - * @tags reliability - * maintainability + * @tags quality + * reliability + * error-handling * external/cwe/cwe-390 * @problem.severity recommendation * @sub-severity high diff --git a/python/ql/src/Exceptions/IllegalExceptionHandlerType.ql b/python/ql/src/Exceptions/IllegalExceptionHandlerType.ql index 61850b2c0d1c..2bf97b469ee0 100644 --- a/python/ql/src/Exceptions/IllegalExceptionHandlerType.ql +++ b/python/ql/src/Exceptions/IllegalExceptionHandlerType.ql @@ -2,9 +2,9 @@ * @name Non-exception in 'except' clause * @description An exception handler specifying a non-exception type will never handle any exception. * @kind problem - * @tags reliability - * correctness - * types + * @tags quality + * reliability + * error-handling * @problem.severity error * @sub-severity low * @precision very-high diff --git a/python/ql/src/Exceptions/IllegalRaise.ql b/python/ql/src/Exceptions/IllegalRaise.ql index 7d8e89874107..04319e246ed1 100644 --- a/python/ql/src/Exceptions/IllegalRaise.ql +++ b/python/ql/src/Exceptions/IllegalRaise.ql @@ -2,9 +2,9 @@ * @name Illegal raise * @description Raising a non-exception object or type will result in a TypeError being raised instead. * @kind problem - * @tags reliability - * correctness - * types + * @tags quality + * reliability + * error-handling * @problem.severity error * @sub-severity high * @precision very-high diff --git a/python/ql/src/Exceptions/IncorrectExceptOrder.ql b/python/ql/src/Exceptions/IncorrectExceptOrder.ql index 0b57dd4659d1..3c0c90b36d35 100644 --- a/python/ql/src/Exceptions/IncorrectExceptOrder.ql +++ b/python/ql/src/Exceptions/IncorrectExceptOrder.ql @@ -3,8 +3,9 @@ * @description Handling general exceptions before specific exceptions means that the specific * handlers are never executed. * @kind problem - * @tags reliability - * maintainability + * @tags quality + * reliability + * error-handling * external/cwe/cwe-561 * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Exceptions/NotImplementedIsNotAnException.ql b/python/ql/src/Exceptions/NotImplementedIsNotAnException.ql index 933d15ddf60e..80dcd6f0dbea 100644 --- a/python/ql/src/Exceptions/NotImplementedIsNotAnException.ql +++ b/python/ql/src/Exceptions/NotImplementedIsNotAnException.ql @@ -6,8 +6,9 @@ * @sub-severity high * @precision very-high * @id py/raise-not-implemented - * @tags reliability - * maintainability + * @tags quality + * reliability + * error-handling */ import python diff --git a/python/ql/src/Expressions/CallToSuperWrongClass.ql b/python/ql/src/Expressions/CallToSuperWrongClass.ql index af5c33ef13ab..10a1435ac317 100644 --- a/python/ql/src/Expressions/CallToSuperWrongClass.ql +++ b/python/ql/src/Expressions/CallToSuperWrongClass.ql @@ -2,9 +2,9 @@ * @name First argument to super() is not enclosing class * @description Calling super with something other than the enclosing class may cause incorrect object initialization. * @kind problem - * @tags reliability - * maintainability - * convention + * @tags quality + * reliability + * correctness * external/cwe/cwe-687 * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Expressions/CompareConstants.ql b/python/ql/src/Expressions/CompareConstants.ql index d2d8f827dc0f..4b06e0a2a6e2 100644 --- a/python/ql/src/Expressions/CompareConstants.ql +++ b/python/ql/src/Expressions/CompareConstants.ql @@ -2,7 +2,8 @@ * @name Comparison of constants * @description Comparison of constants is always constant, but is harder to read than a simple constant. * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-570 * external/cwe/cwe-571 diff --git a/python/ql/src/Expressions/CompareIdenticalValues.ql b/python/ql/src/Expressions/CompareIdenticalValues.ql index c950d3ebb2ee..705f715df6c5 100644 --- a/python/ql/src/Expressions/CompareIdenticalValues.ql +++ b/python/ql/src/Expressions/CompareIdenticalValues.ql @@ -2,10 +2,9 @@ * @name Comparison of identical values * @description Comparison of identical values, the intent of which is unclear. * @kind problem - * @tags reliability - * correctness + * @tags quality + * maintainability * readability - * convention * external/cwe/cwe-570 * external/cwe/cwe-571 * @problem.severity warning diff --git a/python/ql/src/Expressions/CompareIdenticalValuesMissingSelf.ql b/python/ql/src/Expressions/CompareIdenticalValuesMissingSelf.ql index 554d7a087b66..fc63e5709999 100644 --- a/python/ql/src/Expressions/CompareIdenticalValuesMissingSelf.ql +++ b/python/ql/src/Expressions/CompareIdenticalValuesMissingSelf.ql @@ -2,8 +2,9 @@ * @name Maybe missing 'self' in comparison * @description Comparison of identical values, the intent of which is unclear. * @kind problem - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * external/cwe/cwe-570 * external/cwe/cwe-571 * @problem.severity warning diff --git a/python/ql/src/Expressions/Comparisons/UselessComparisonTest.ql b/python/ql/src/Expressions/Comparisons/UselessComparisonTest.ql index 3bd5f84fc67f..c681a141cc56 100644 --- a/python/ql/src/Expressions/Comparisons/UselessComparisonTest.ql +++ b/python/ql/src/Expressions/Comparisons/UselessComparisonTest.ql @@ -2,7 +2,9 @@ * @name Redundant comparison * @description The result of a comparison is implied by a previous comparison. * @kind problem - * @tags useless-code + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-561 * external/cwe/cwe-570 * external/cwe/cwe-571 diff --git a/python/ql/src/Expressions/ContainsNonContainer.ql b/python/ql/src/Expressions/ContainsNonContainer.ql index 87a3866085cb..cf6af5ce7b18 100644 --- a/python/ql/src/Expressions/ContainsNonContainer.ql +++ b/python/ql/src/Expressions/ContainsNonContainer.ql @@ -2,7 +2,8 @@ * @name Membership test with a non-container * @description A membership test, such as 'item in sequence', with a non-container on the right hand side will raise a 'TypeError'. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity high diff --git a/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.ql b/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.ql index 7a5399700ec7..166eae635fad 100644 --- a/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.ql +++ b/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.ql @@ -2,7 +2,8 @@ * @name Duplicate key in dict literal * @description Duplicate key in dict literal. All but the last will be lost. * @kind problem - * @tags reliability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 * @problem.severity warning diff --git a/python/ql/src/Expressions/EqualsNone.ql b/python/ql/src/Expressions/EqualsNone.ql index fa36dffb7248..8a2878c3b8ab 100644 --- a/python/ql/src/Expressions/EqualsNone.ql +++ b/python/ql/src/Expressions/EqualsNone.ql @@ -2,8 +2,10 @@ * @name Testing equality to None * @description Testing whether an object is 'None' using the == operator is inefficient and potentially incorrect. * @kind problem - * @tags efficiency - * maintainability + * @tags quality + * reliability + * correctness + * performance * @problem.severity recommendation * @sub-severity high * @precision very-high diff --git a/python/ql/src/Expressions/ExpectedMappingForFormatString.ql b/python/ql/src/Expressions/ExpectedMappingForFormatString.ql index 76d2f874779f..4342062270b7 100644 --- a/python/ql/src/Expressions/ExpectedMappingForFormatString.ql +++ b/python/ql/src/Expressions/ExpectedMappingForFormatString.ql @@ -2,7 +2,8 @@ * @name Formatted object is not a mapping * @description The formatted object must be a mapping when the format includes a named specifier; otherwise a TypeError will be raised." * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Expressions/ExplicitCallToDel.ql b/python/ql/src/Expressions/ExplicitCallToDel.ql index f60945ba05cf..44011aa43b08 100644 --- a/python/ql/src/Expressions/ExplicitCallToDel.ql +++ b/python/ql/src/Expressions/ExplicitCallToDel.ql @@ -2,7 +2,8 @@ * @name `__del__` is called explicitly * @description The `__del__` special method is called by the virtual machine when an object is being finalized. It should not be called explicitly. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity warning * @sub-severity low diff --git a/python/ql/src/Expressions/Formatting/MixedExplicitImplicitIn3101Format.ql b/python/ql/src/Expressions/Formatting/MixedExplicitImplicitIn3101Format.ql index a52fada69b02..1f77542eb904 100644 --- a/python/ql/src/Expressions/Formatting/MixedExplicitImplicitIn3101Format.ql +++ b/python/ql/src/Expressions/Formatting/MixedExplicitImplicitIn3101Format.ql @@ -3,7 +3,8 @@ * @description Using implicit and explicit numbering in string formatting operations, such as '"{}: {1}".format(a,b)', will raise a ValueError. * @kind problem * @problem.severity error - * @tags reliability + * @tags quality + * reliability * correctness * @sub-severity low * @precision high diff --git a/python/ql/src/Expressions/Formatting/UnusedArgumentIn3101Format.ql b/python/ql/src/Expressions/Formatting/UnusedArgumentIn3101Format.ql index d8e1f0af1b41..9c8b83a680c5 100644 --- a/python/ql/src/Expressions/Formatting/UnusedArgumentIn3101Format.ql +++ b/python/ql/src/Expressions/Formatting/UnusedArgumentIn3101Format.ql @@ -2,7 +2,8 @@ * @name Unused argument in a formatting call * @description Including surplus arguments in a formatting call makes code more difficult to read and may indicate an error. * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * @problem.severity warning * @sub-severity high diff --git a/python/ql/src/Expressions/Formatting/UnusedNamedArgumentIn3101Format.ql b/python/ql/src/Expressions/Formatting/UnusedNamedArgumentIn3101Format.ql index d5aac3aaab20..e8aa7f07e8b3 100644 --- a/python/ql/src/Expressions/Formatting/UnusedNamedArgumentIn3101Format.ql +++ b/python/ql/src/Expressions/Formatting/UnusedNamedArgumentIn3101Format.ql @@ -2,7 +2,8 @@ * @name Unused named argument in formatting call * @description Including surplus keyword arguments in a formatting call makes code more difficult to read and may indicate an error. * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * @problem.severity warning * @sub-severity high diff --git a/python/ql/src/Expressions/Formatting/WrongNameInArgumentsFor3101Format.ql b/python/ql/src/Expressions/Formatting/WrongNameInArgumentsFor3101Format.ql index 1cc1e4a94558..1dfab9c79b26 100644 --- a/python/ql/src/Expressions/Formatting/WrongNameInArgumentsFor3101Format.ql +++ b/python/ql/src/Expressions/Formatting/WrongNameInArgumentsFor3101Format.ql @@ -4,7 +4,8 @@ * where the names of format items in the format string differs from the names of the values to be formatted will raise a KeyError. * @kind problem * @problem.severity error - * @tags reliability + * @tags quality + * reliability * correctness * @sub-severity low * @precision high diff --git a/python/ql/src/Expressions/Formatting/WrongNumberArgumentsFor3101Format.ql b/python/ql/src/Expressions/Formatting/WrongNumberArgumentsFor3101Format.ql index e120cd6b5bb8..70c5290bf4b7 100644 --- a/python/ql/src/Expressions/Formatting/WrongNumberArgumentsFor3101Format.ql +++ b/python/ql/src/Expressions/Formatting/WrongNumberArgumentsFor3101Format.ql @@ -3,7 +3,8 @@ * @description A string formatting operation, such as '"{0}: {1}, {2}".format(a,b)', * where the number of values to be formatted is too few for the format string will raise an IndexError. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Expressions/HashedButNoHash.ql b/python/ql/src/Expressions/HashedButNoHash.ql index 336c344fa379..eb86f3b55332 100644 --- a/python/ql/src/Expressions/HashedButNoHash.ql +++ b/python/ql/src/Expressions/HashedButNoHash.ql @@ -2,7 +2,8 @@ * @name Unhashable object hashed * @description Hashing an object which is not hashable will result in a TypeError at runtime. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Expressions/IncorrectComparisonUsingIs.ql b/python/ql/src/Expressions/IncorrectComparisonUsingIs.ql index a60430aa4c1c..6eda4abbde21 100644 --- a/python/ql/src/Expressions/IncorrectComparisonUsingIs.ql +++ b/python/ql/src/Expressions/IncorrectComparisonUsingIs.ql @@ -2,7 +2,8 @@ * @name Comparison using is when operands support `__eq__` * @description Comparison using 'is' when equivalence is not the same as identity * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity warning * @sub-severity low diff --git a/python/ql/src/Expressions/NonCallableCalled.ql b/python/ql/src/Expressions/NonCallableCalled.ql index aed13af8f638..2740dbe5fb26 100644 --- a/python/ql/src/Expressions/NonCallableCalled.ql +++ b/python/ql/src/Expressions/NonCallableCalled.ql @@ -2,9 +2,9 @@ * @name Non-callable called * @description A call to an object which is not a callable will raise a TypeError at runtime. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness - * types * @problem.severity error * @sub-severity high * @precision high diff --git a/python/ql/src/Expressions/Regex/BackspaceEscape.ql b/python/ql/src/Expressions/Regex/BackspaceEscape.ql index e67ced94312f..f23d3e0e07cf 100644 --- a/python/ql/src/Expressions/Regex/BackspaceEscape.ql +++ b/python/ql/src/Expressions/Regex/BackspaceEscape.ql @@ -3,7 +3,9 @@ * @description Using '\b' to escape the backspace character in a regular expression is confusing * since it could be mistaken for a word boundary assertion. * @kind problem - * @tags maintainability + * @tags quality + * maintainability + * readability * @problem.severity recommendation * @sub-severity high * @precision very-high diff --git a/python/ql/src/Expressions/Regex/DuplicateCharacterInSet.ql b/python/ql/src/Expressions/Regex/DuplicateCharacterInSet.ql index 1c7cfc39de99..9f7f20a4f3ee 100644 --- a/python/ql/src/Expressions/Regex/DuplicateCharacterInSet.ql +++ b/python/ql/src/Expressions/Regex/DuplicateCharacterInSet.ql @@ -2,7 +2,8 @@ * @name Duplication in regular expression character class * @description Duplicate characters in a class have no effect and may indicate an error in the regular expression. * @kind problem - * @tags reliability + * @tags quality + * maintainability * readability * @problem.severity warning * @sub-severity low diff --git a/python/ql/src/Expressions/Regex/MissingPartSpecialGroup.ql b/python/ql/src/Expressions/Regex/MissingPartSpecialGroup.ql index e03fc65518a1..36709cee1378 100644 --- a/python/ql/src/Expressions/Regex/MissingPartSpecialGroup.ql +++ b/python/ql/src/Expressions/Regex/MissingPartSpecialGroup.ql @@ -2,7 +2,8 @@ * @name Missing part of special group in regular expression * @description Incomplete special groups are parsed as normal groups and are unlikely to match the intended strings. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity warning * @sub-severity high diff --git a/python/ql/src/Expressions/Regex/UnmatchableCaret.ql b/python/ql/src/Expressions/Regex/UnmatchableCaret.ql index 0dcf88a5d089..106bd8eedf8d 100644 --- a/python/ql/src/Expressions/Regex/UnmatchableCaret.ql +++ b/python/ql/src/Expressions/Regex/UnmatchableCaret.ql @@ -2,7 +2,8 @@ * @name Unmatchable caret in regular expression * @description Regular expressions containing a caret '^' in the middle cannot be matched, whatever the input. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Expressions/Regex/UnmatchableDollar.ql b/python/ql/src/Expressions/Regex/UnmatchableDollar.ql index 00b14998a044..dcc78c3730a5 100644 --- a/python/ql/src/Expressions/Regex/UnmatchableDollar.ql +++ b/python/ql/src/Expressions/Regex/UnmatchableDollar.ql @@ -2,7 +2,8 @@ * @name Unmatchable dollar in regular expression * @description Regular expressions containing a dollar '$' in the middle cannot be matched, whatever the input. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Expressions/UnintentionalImplicitStringConcatenation.ql b/python/ql/src/Expressions/UnintentionalImplicitStringConcatenation.ql index f653db40571d..06528f1d7547 100644 --- a/python/ql/src/Expressions/UnintentionalImplicitStringConcatenation.ql +++ b/python/ql/src/Expressions/UnintentionalImplicitStringConcatenation.ql @@ -2,9 +2,9 @@ * @name Implicit string concatenation in a list * @description Omitting a comma between strings causes implicit concatenation which is confusing in a list. * @kind problem - * @tags reliability + * @tags quality * maintainability - * convention + * readability * external/cwe/cwe-665 * @problem.severity warning * @sub-severity high diff --git a/python/ql/src/Expressions/UnnecessaryLambda.ql b/python/ql/src/Expressions/UnnecessaryLambda.ql index 7486e27d6952..5ba2dd171240 100644 --- a/python/ql/src/Expressions/UnnecessaryLambda.ql +++ b/python/ql/src/Expressions/UnnecessaryLambda.ql @@ -2,7 +2,8 @@ * @name Unnecessary lambda * @description A lambda is used that calls through to a function without modifying any parameters * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * @problem.severity recommendation * @sub-severity high diff --git a/python/ql/src/Expressions/UnsupportedFormatCharacter.ql b/python/ql/src/Expressions/UnsupportedFormatCharacter.ql index d3876725233a..ff99a87487a4 100644 --- a/python/ql/src/Expressions/UnsupportedFormatCharacter.ql +++ b/python/ql/src/Expressions/UnsupportedFormatCharacter.ql @@ -2,7 +2,8 @@ * @name Unsupported format character * @description An unsupported format character in a format string * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Expressions/WrongNameForArgumentInCall.ql b/python/ql/src/Expressions/WrongNameForArgumentInCall.ql index 053b0ef2ad20..21403c51c610 100644 --- a/python/ql/src/Expressions/WrongNameForArgumentInCall.ql +++ b/python/ql/src/Expressions/WrongNameForArgumentInCall.ql @@ -4,7 +4,8 @@ * parameter of the called function or method, will result in a * TypeError at runtime. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-628 * @problem.severity error diff --git a/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql b/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql index 2a6d3f62be86..e47d4a55bf5d 100644 --- a/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql +++ b/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql @@ -3,7 +3,8 @@ * @description A string formatting operation, such as '"%s: %s, %s" % (a,b)', where the number of conversion specifiers in the * format string differs from the number of values to be formatted will raise a TypeError. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-685 * @problem.severity error diff --git a/python/ql/src/Expressions/WrongNumberArgumentsInCall.ql b/python/ql/src/Expressions/WrongNumberArgumentsInCall.ql index ffebb000034f..bde54558c9bd 100644 --- a/python/ql/src/Expressions/WrongNumberArgumentsInCall.ql +++ b/python/ql/src/Expressions/WrongNumberArgumentsInCall.ql @@ -2,7 +2,8 @@ * @name Wrong number of arguments in a call * @description Using too many or too few arguments in a call to a function will result in a TypeError at runtime. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-685 * @problem.severity error diff --git a/python/ql/src/Functions/ConsistentReturns.ql b/python/ql/src/Functions/ConsistentReturns.ql index f9d81c63936f..a1b308514562 100644 --- a/python/ql/src/Functions/ConsistentReturns.ql +++ b/python/ql/src/Functions/ConsistentReturns.ql @@ -2,8 +2,9 @@ * @name Explicit returns mixed with implicit (fall through) returns * @description Mixing implicit and explicit returns indicates a likely error as implicit returns always return 'None'. * @kind problem - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * @problem.severity recommendation * @sub-severity high * @precision high diff --git a/python/ql/src/Functions/ExplicitReturnInInit.ql b/python/ql/src/Functions/ExplicitReturnInInit.ql index 000c671396e1..c4deea6111c6 100644 --- a/python/ql/src/Functions/ExplicitReturnInInit.ql +++ b/python/ql/src/Functions/ExplicitReturnInInit.ql @@ -2,7 +2,8 @@ * @name `__init__` method returns a value * @description Explicitly returning a value from an `__init__` method will raise a TypeError. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Functions/IncorrectRaiseInSpecialMethod.ql b/python/ql/src/Functions/IncorrectRaiseInSpecialMethod.ql index a99a66bca3bd..4bf52af9061f 100644 --- a/python/ql/src/Functions/IncorrectRaiseInSpecialMethod.ql +++ b/python/ql/src/Functions/IncorrectRaiseInSpecialMethod.ql @@ -2,9 +2,9 @@ * @name Non-standard exception raised in special method * @description Raising a non-standard exception in a special method alters the expected interface of that method. * @kind problem - * @tags reliability - * maintainability - * convention + * @tags quality + * reliability + * error-handling * @problem.severity recommendation * @sub-severity high * @precision very-high diff --git a/python/ql/src/Functions/IncorrectlyOverriddenMethod.ql b/python/ql/src/Functions/IncorrectlyOverriddenMethod.ql index e607245f97fc..a46a2370c0ee 100644 --- a/python/ql/src/Functions/IncorrectlyOverriddenMethod.ql +++ b/python/ql/src/Functions/IncorrectlyOverriddenMethod.ql @@ -2,7 +2,9 @@ * @name Mismatch between signature and use of an overriding method * @description Method has a different signature from the overridden method and, if it were called, would be likely to cause an error. * @kind problem - * @tags maintainability + * @tags quality + * reliability + * correctness * @problem.severity error * @sub-severity low * @precision high diff --git a/python/ql/src/Functions/IncorrectlySpecifiedOverriddenMethod.ql b/python/ql/src/Functions/IncorrectlySpecifiedOverriddenMethod.ql index 0d68d0b506e3..6b31795d94ea 100644 --- a/python/ql/src/Functions/IncorrectlySpecifiedOverriddenMethod.ql +++ b/python/ql/src/Functions/IncorrectlySpecifiedOverriddenMethod.ql @@ -3,7 +3,9 @@ * @description Method has a signature that differs from both the signature of its overriding methods and * the arguments with which it is called, and if it were called, would be likely to cause an error. * @kind problem - * @tags maintainability + * @tags quality + * reliability + * correctness * @problem.severity recommendation * @sub-severity high * @precision high diff --git a/python/ql/src/Functions/InitIsGenerator.ql b/python/ql/src/Functions/InitIsGenerator.ql index 84bb935ad2e8..a0bb94153313 100644 --- a/python/ql/src/Functions/InitIsGenerator.ql +++ b/python/ql/src/Functions/InitIsGenerator.ql @@ -2,7 +2,8 @@ * @name `__init__` method is a generator * @description `__init__` method is a generator. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Functions/IterReturnsNonIterator.ql b/python/ql/src/Functions/IterReturnsNonIterator.ql index ed4a240ec4d1..367332cf49a7 100644 --- a/python/ql/src/Functions/IterReturnsNonIterator.ql +++ b/python/ql/src/Functions/IterReturnsNonIterator.ql @@ -2,7 +2,8 @@ * @name `__iter__` method returns a non-iterator * @description The `__iter__` method returns a non-iterator which, if used in a 'for' loop, would raise a 'TypeError'. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Functions/IterReturnsNonSelf.py b/python/ql/src/Functions/IterReturnsNonSelf.py deleted file mode 100644 index 6251b87aba7b..000000000000 --- a/python/ql/src/Functions/IterReturnsNonSelf.py +++ /dev/null @@ -1,13 +0,0 @@ -class MyRange(object): - def __init__(self, low, high): - self.current = low - self.high = high - - def __iter__(self): - return self.current - - def next(self): - if self.current > self.high: - raise StopIteration - self.current += 1 - return self.current - 1 \ No newline at end of file diff --git a/python/ql/src/Functions/IterReturnsNonSelf.qhelp b/python/ql/src/Functions/IterReturnsNonSelf.qhelp index f614d912ff0a..0ad5a05fdf48 100644 --- a/python/ql/src/Functions/IterReturnsNonSelf.qhelp +++ b/python/ql/src/Functions/IterReturnsNonSelf.qhelp @@ -3,34 +3,27 @@ "qhelp.dtd"> -

    The __iter__ method of an iterator should return self. -This is important so that iterators can be used as sequences in any context -that expect a sequence. To do so requires that __iter__ is -idempotent on iterators.

    - -

    -Note that sequences and mapping should return a new iterator, it is just the returned -iterator that must obey this constraint. +

    Iterator classes (classes defining a __next__ method) should have an __iter__ method that returns the iterator itself. +This ensures that the object is also an iterable; and behaves as expected when used anywhere an iterator or iterable is expected, such as in for loops.

    + +
    -

    Make the __iter__ return self unless the class should not be an iterator, -in which case rename the next (Python 2) or __next__ (Python 3) -to something else.

    +

    Ensure that the __iter__ method returns self, or is otherwise equivalent as an iterator to self.

    -

    In this example the Counter class's __iter__ method does not -return self (or even an iterator). This will cause the program to fail when anyone attempts -to use the iterator in a for loop or in statement.

    - +

    In the following example, the MyRange class's __iter__ method does not return self. +This would lead to unexpected results when used with a for loop or in statement.

    +
    -
  • Python Language Reference: object.__iter__.
  • -
  • Python Standard Library: Iterators.
  • +
  • Python Language Reference: object.__iter__.
  • +
  • Python Standard Library: Iterators.
  • diff --git a/python/ql/src/Functions/IterReturnsNonSelf.ql b/python/ql/src/Functions/IterReturnsNonSelf.ql index 385677a57630..d6501a803a30 100644 --- a/python/ql/src/Functions/IterReturnsNonSelf.ql +++ b/python/ql/src/Functions/IterReturnsNonSelf.ql @@ -4,6 +4,7 @@ * @kind problem * @tags reliability * correctness + * quality * @problem.severity error * @sub-severity low * @precision high @@ -11,20 +12,79 @@ */ import python +import semmle.python.ApiGraphs -Function iter_method(ClassValue t) { result = t.lookup("__iter__").(FunctionValue).getScope() } +/** Gets the __iter__ method of `c`. */ +Function iterMethod(Class c) { result = c.getAMethod() and result.getName() = "__iter__" } -predicate is_self(Name value, Function f) { value.getVariable() = f.getArg(0).(Name).getVariable() } +/** Gets the `__next__` method of `c`. */ +Function nextMethod(Class c) { result = c.getAMethod() and result.getName() = "__next__" } -predicate returns_non_self(Function f) { +/** Holds if `var` is a variable referring to the `self` parameter of `f`. */ +predicate isSelfVar(Function f, Name var) { var.getVariable() = f.getArg(0).(Name).getVariable() } + +/** Holds if `e` is an expression that an iter function `f` should return. */ +predicate isGoodReturn(Function f, Expr e) { + isSelfVar(f, e) + or + exists(DataFlow::CallCfgNode call, DataFlow::AttrRead read, DataFlow::Node selfNode | + e = call.asExpr() + | + call = API::builtin("iter").getACall() and + call.getArg(0) = read and + read.accesses(selfNode, "__next__") and + isSelfVar(f, selfNode.asExpr()) and + call.getArg(1).asExpr() instanceof None + ) +} + +/** Holds if the iter method `f` does not return `self` or an equivalent. */ +predicate returnsNonSelf(Function f) { exists(f.getFallthroughNode()) or - exists(Return r | r.getScope() = f and not is_self(r.getValue(), f)) + exists(Return r | r.getScope() = f and not isGoodReturn(f, r.getValue())) +} + +/** Holds if `iter` and `next` methods are wrappers around some field. */ +predicate iterWrapperMethods(Function iter, Function next) { + exists(string field | + exists(Return r, DataFlow::Node self, DataFlow::AttrRead read | + r.getScope() = iter and + r.getValue() = [iterCall(read).asExpr(), read.asExpr()] and + read.accesses(self, field) and + isSelfVar(iter, self.asExpr()) + ) and + exists(Return r, DataFlow::Node self, DataFlow::AttrRead read | + r.getScope() = next and + r.getValue() = nextCall(read).asExpr() and + read.accesses(self, field) and + isSelfVar(next, self.asExpr()) + ) + ) +} + +/** Gets a call to `iter(arg)` or `arg.__iter__()`. */ +private DataFlow::CallCfgNode iterCall(DataFlow::Node arg) { + result.(DataFlow::MethodCallNode).calls(arg, "__iter__") + or + result = API::builtin("iter").getACall() and + arg = result.getArg(0) and + not exists(result.getArg(1)) +} + +/** Gets a call to `next(arg)` or `arg.__next__()`. */ +private DataFlow::CallCfgNode nextCall(DataFlow::Node arg) { + result.(DataFlow::MethodCallNode).calls(arg, "__next__") or - exists(Return r | r.getScope() = f and not exists(r.getValue())) + result = API::builtin("next").getACall() and + arg = result.getArg(0) } -from ClassValue t, Function iter -where t.isIterator() and iter = iter_method(t) and returns_non_self(iter) -select t, "Class " + t.getName() + " is an iterator but its $@ method does not return 'self'.", - iter, iter.getName() +from Class c, Function iter, Function next +where + next = nextMethod(c) and + iter = iterMethod(c) and + returnsNonSelf(iter) and + not iterWrapperMethods(iter, next) +select iter, "Iter method of iterator $@ does not return `" + iter.getArg(0).getName() + "`.", c, + c.getName() diff --git a/python/ql/src/Functions/ModificationOfParameterWithDefault.ql b/python/ql/src/Functions/ModificationOfParameterWithDefault.ql index 3c6010916949..f0f80ef59467 100644 --- a/python/ql/src/Functions/ModificationOfParameterWithDefault.ql +++ b/python/ql/src/Functions/ModificationOfParameterWithDefault.ql @@ -3,8 +3,9 @@ * @description Modifying the default value of a parameter can lead to unexpected * results. * @kind path-problem - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * @problem.severity error * @sub-severity low * @precision high diff --git a/python/ql/src/Functions/OverlyComplexDelMethod.ql b/python/ql/src/Functions/OverlyComplexDelMethod.ql index 192623329903..b93dc4af3c34 100644 --- a/python/ql/src/Functions/OverlyComplexDelMethod.ql +++ b/python/ql/src/Functions/OverlyComplexDelMethod.ql @@ -2,11 +2,9 @@ * @name Overly complex `__del__` method * @description `__del__` methods may be called at arbitrary times, perhaps never called at all, and should be simple. * @kind problem - * @tags efficiency + * @tags quality * maintainability * complexity - * statistical - * non-attributable * @problem.severity recommendation * @sub-severity low * @precision high diff --git a/python/ql/src/Functions/ReturnConsistentTupleSizes.ql b/python/ql/src/Functions/ReturnConsistentTupleSizes.ql index f0cb83067e0f..d37ca3eda356 100644 --- a/python/ql/src/Functions/ReturnConsistentTupleSizes.ql +++ b/python/ql/src/Functions/ReturnConsistentTupleSizes.ql @@ -2,9 +2,9 @@ * @name Returning tuples with varying lengths * @description A function that potentially returns tuples of different lengths may indicate a problem. * @kind problem - * @tags reliability - * maintainability - * quality + * @tags quality + * reliability + * correctness * @problem.severity recommendation * @sub-severity high * @precision high diff --git a/python/ql/src/Functions/SignatureOverriddenMethod.ql b/python/ql/src/Functions/SignatureOverriddenMethod.ql index 85f1f0c2eb10..3e3877bc1393 100644 --- a/python/ql/src/Functions/SignatureOverriddenMethod.ql +++ b/python/ql/src/Functions/SignatureOverriddenMethod.ql @@ -4,7 +4,8 @@ * number and type of parameters has the potential to cause an error when there is a mismatch. * @kind problem * @problem.severity warning - * @tags reliability + * @tags quality + * reliability * correctness * @sub-severity high * @precision very-high diff --git a/python/ql/src/Functions/UseImplicitNoneReturnValue.ql b/python/ql/src/Functions/UseImplicitNoneReturnValue.ql index f45c9c42e0eb..aeac382f6380 100644 --- a/python/ql/src/Functions/UseImplicitNoneReturnValue.ql +++ b/python/ql/src/Functions/UseImplicitNoneReturnValue.ql @@ -2,7 +2,9 @@ * @name Use of the return value of a procedure * @description The return value of a procedure (a function that does not return a value) is used. This is confusing to the reader as the value (None) has no meaning. * @kind problem - * @tags maintainability + * @tags quality + * maintainability + * readability * @problem.severity warning * @sub-severity low * @precision high diff --git a/python/ql/src/Functions/examples/IterReturnsNonSelf.py b/python/ql/src/Functions/examples/IterReturnsNonSelf.py new file mode 100644 index 000000000000..20ba5eb18215 --- /dev/null +++ b/python/ql/src/Functions/examples/IterReturnsNonSelf.py @@ -0,0 +1,13 @@ +class MyRange(object): + def __init__(self, low, high): + self.current = low + self.high = high + + def __iter__(self): + return (self.current, self.high) # BAD: does not return `self`. + + def __next__(self): + if self.current > self.high: + return None + self.current += 1 + return self.current - 1 \ No newline at end of file diff --git a/python/ql/src/Imports/EncodingError.ql b/python/ql/src/Imports/EncodingError.ql index 962ae4426df1..6d60342e6735 100644 --- a/python/ql/src/Imports/EncodingError.ql +++ b/python/ql/src/Imports/EncodingError.ql @@ -2,7 +2,8 @@ * @name Encoding error * @description Encoding errors cause failures at runtime and prevent analysis of the code. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Imports/ImportandImportFrom.ql b/python/ql/src/Imports/ImportandImportFrom.ql index f77ce345113d..48ada91b11b4 100644 --- a/python/ql/src/Imports/ImportandImportFrom.ql +++ b/python/ql/src/Imports/ImportandImportFrom.ql @@ -2,7 +2,9 @@ * @name Module is imported with 'import' and 'import from' * @description A module is imported with the "import" and "import from" statements * @kind problem - * @tags maintainability + * @tags quality + * maintainability + * readability * @problem.severity recommendation * @sub-severity low * @precision very-high diff --git a/python/ql/src/Imports/ModuleImportsItself.ql b/python/ql/src/Imports/ModuleImportsItself.ql index c876853fff53..72d223da3dbb 100644 --- a/python/ql/src/Imports/ModuleImportsItself.ql +++ b/python/ql/src/Imports/ModuleImportsItself.ql @@ -2,7 +2,8 @@ * @name Module imports itself * @description A module imports itself * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * @problem.severity recommendation * @sub-severity high diff --git a/python/ql/src/Imports/MultipleImports.ql b/python/ql/src/Imports/MultipleImports.ql index fdff082e0c56..f23ae25e6747 100644 --- a/python/ql/src/Imports/MultipleImports.ql +++ b/python/ql/src/Imports/MultipleImports.ql @@ -2,7 +2,8 @@ * @name Module is imported more than once * @description Importing a module a second time has no effect and impairs readability * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * @problem.severity recommendation * @sub-severity high diff --git a/python/ql/src/Imports/SyntaxError.ql b/python/ql/src/Imports/SyntaxError.ql index fd92211d2411..4a5c71b6901f 100644 --- a/python/ql/src/Imports/SyntaxError.ql +++ b/python/ql/src/Imports/SyntaxError.ql @@ -2,7 +2,8 @@ * @name Syntax error * @description Syntax errors cause failures at runtime and prevent analysis of the code. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity high diff --git a/python/ql/src/Imports/UnintentionalImport.ql b/python/ql/src/Imports/UnintentionalImport.ql index cdbcec278dd7..1faf3bb55f3d 100644 --- a/python/ql/src/Imports/UnintentionalImport.ql +++ b/python/ql/src/Imports/UnintentionalImport.ql @@ -3,8 +3,9 @@ * @description Importing a module using 'import *' may unintentionally pollute the global * namespace if the module does not define `__all__` * @kind problem - * @tags maintainability - * modularity + * @tags quality + * maintainability + * readability * @problem.severity recommendation * @sub-severity high * @precision very-high diff --git a/python/ql/src/Imports/UnusedImport.ql b/python/ql/src/Imports/UnusedImport.ql index a4990a3a34c6..020356901652 100644 --- a/python/ql/src/Imports/UnusedImport.ql +++ b/python/ql/src/Imports/UnusedImport.ql @@ -2,7 +2,8 @@ * @name Unused import * @description Import is not required as it is not used * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * @problem.severity recommendation * @sub-severity high diff --git a/python/ql/src/Lexical/CommentedOutCode.ql b/python/ql/src/Lexical/CommentedOutCode.ql index d604e0290bff..d20ac7982700 100644 --- a/python/ql/src/Lexical/CommentedOutCode.ql +++ b/python/ql/src/Lexical/CommentedOutCode.ql @@ -2,9 +2,9 @@ * @name Commented-out code * @description Commented-out code makes the remaining code more difficult to read. * @kind problem - * @tags maintainability + * @tags quality + * maintainability * readability - * documentation * @problem.severity recommendation * @sub-severity high * @precision high diff --git a/python/ql/src/Resources/FileNotAlwaysClosed.ql b/python/ql/src/Resources/FileNotAlwaysClosed.ql index c3950eda805d..f639bc4aa912 100644 --- a/python/ql/src/Resources/FileNotAlwaysClosed.ql +++ b/python/ql/src/Resources/FileNotAlwaysClosed.ql @@ -2,10 +2,10 @@ * @name File is not always closed * @description Opening a file without ensuring that it is always closed may lead to data loss or resource leaks. * @kind problem - * @tags efficiency + * @tags quality + * reliability * correctness - * resources - * quality + * performance * external/cwe/cwe-772 * @problem.severity warning * @sub-severity high diff --git a/python/ql/src/Resources/FileNotAlwaysClosedQuery.qll b/python/ql/src/Resources/FileNotAlwaysClosedQuery.qll index af31ec6ea4fb..0122344d370e 100644 --- a/python/ql/src/Resources/FileNotAlwaysClosedQuery.qll +++ b/python/ql/src/Resources/FileNotAlwaysClosedQuery.qll @@ -50,29 +50,32 @@ class FileWrapperCall extends DataFlow::CallCfgNode { /** A node where a file is closed. */ abstract class FileClose extends DataFlow::CfgNode { - /** Holds if this file close will occur if an exception is thrown at `raises`. */ + /** Holds if this file close will occur if an exception is raised at `raises`. */ predicate guardsExceptions(DataFlow::CfgNode raises) { - cfgGetASuccessorStar(raises.asCfgNode().getAnExceptionalSuccessor(), this.asCfgNode()) + // The close call occurs after an exception edge in the cfg (a catch or finally) + bbReachableRefl(raises.asCfgNode().getBasicBlock().getAnExceptionalSuccessor(), + this.asCfgNode().getBasicBlock()) or - // The expression is after the close call. - // This also covers the body of a `with` statement. - cfgGetASuccessorStar(this.asCfgNode(), raises.asCfgNode()) + // The exception is after the close call. + // A full cfg reachability check is not in general feasible for performance, so we approximate it with: + // - A basic block reachability check (here) that works if the expression and close call are in different basic blocks + // - A check (in the `WithStatement` override of `guardsExceptions`) for the case where the exception call + // is lexically contained in the body of a `with` statement that closes the file. + // This may cause FPs in a case such as: + // f.close() + // f.write("...") + // We presume this to not be very common. + bbReachableStrict(this.asCfgNode().getBasicBlock(), raises.asCfgNode().getBasicBlock()) } } -private predicate cfgGetASuccessor(ControlFlowNode src, ControlFlowNode sink) { - sink = src.getASuccessor() -} +private predicate bbSuccessor(BasicBlock src, BasicBlock sink) { sink = src.getASuccessor() } -pragma[inline] -private predicate cfgGetASuccessorPlus(ControlFlowNode src, ControlFlowNode sink) = - fastTC(cfgGetASuccessor/2)(src, sink) +private predicate bbReachableStrict(BasicBlock src, BasicBlock sink) = + fastTC(bbSuccessor/2)(src, sink) -pragma[inline] -private predicate cfgGetASuccessorStar(ControlFlowNode src, ControlFlowNode sink) { - src = sink - or - cfgGetASuccessorPlus(src, sink) +private predicate bbReachableRefl(BasicBlock src, BasicBlock sink) { + bbReachableStrict(src, sink) or src = sink } /** A call to the `.close()` method of a file object. */ @@ -87,7 +90,16 @@ class OsCloseCall extends FileClose { /** A `with` statement. */ class WithStatement extends FileClose { - WithStatement() { this.asExpr() = any(With w).getContextExpr() } + With w; + + WithStatement() { this.asExpr() = w.getContextExpr() } + + override predicate guardsExceptions(DataFlow::CfgNode raises) { + super.guardsExceptions(raises) + or + // Check whether the exception is raised in the body of the with statement. + raises.asExpr().getParent*() = w.getBody().getAnItem() + } } /** Holds if an exception may be raised at `raises` if `file` is a file object. */ diff --git a/python/ql/src/Statements/AssertOnTuple.ql b/python/ql/src/Statements/AssertOnTuple.ql index e86e05483c31..1dbdc5a0e175 100644 --- a/python/ql/src/Statements/AssertOnTuple.ql +++ b/python/ql/src/Statements/AssertOnTuple.ql @@ -2,8 +2,9 @@ * @name Asserting a tuple * @description Using an assert statement to test a tuple provides no validity checking. * @kind problem - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * external/cwe/cwe-670 * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Statements/ConstantInConditional.ql b/python/ql/src/Statements/ConstantInConditional.ql index 0b12d6efd985..9aa180c19371 100644 --- a/python/ql/src/Statements/ConstantInConditional.ql +++ b/python/ql/src/Statements/ConstantInConditional.ql @@ -2,7 +2,8 @@ * @name Constant in conditional expression or statement * @description The conditional is always true or always false * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 * external/cwe/cwe-570 diff --git a/python/ql/src/Statements/IterableStringOrSequence.ql b/python/ql/src/Statements/IterableStringOrSequence.ql index a92a1d79d5f6..5cf92754f622 100644 --- a/python/ql/src/Statements/IterableStringOrSequence.ql +++ b/python/ql/src/Statements/IterableStringOrSequence.ql @@ -2,9 +2,9 @@ * @name Iterable can be either a string or a sequence * @description Iteration over either a string or a sequence in the same loop can cause errors that are hard to find. * @kind problem - * @tags reliability - * maintainability - * non-local + * @tags quality + * reliability + * correctness * @problem.severity error * @sub-severity low * @precision high diff --git a/python/ql/src/Statements/MismatchInMultipleAssignment.ql b/python/ql/src/Statements/MismatchInMultipleAssignment.ql index 41db397bc733..188bdd7b9156 100644 --- a/python/ql/src/Statements/MismatchInMultipleAssignment.ql +++ b/python/ql/src/Statements/MismatchInMultipleAssignment.ql @@ -3,9 +3,9 @@ * @description Assigning multiple variables without ensuring that you define a * value for each variable causes an exception at runtime. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness - * types * @problem.severity error * @sub-severity low * @precision very-high diff --git a/python/ql/src/Statements/ModificationOfLocals.ql b/python/ql/src/Statements/ModificationOfLocals.ql index f766000ec3e4..05c2095f88cb 100644 --- a/python/ql/src/Statements/ModificationOfLocals.ql +++ b/python/ql/src/Statements/ModificationOfLocals.ql @@ -2,7 +2,8 @@ * @name Modification of dictionary returned by locals() * @description Modifications of the dictionary returned by locals() are not propagated to the local variables of a function. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness * @problem.severity warning * @sub-severity low diff --git a/python/ql/src/Statements/NestedLoopsSameVariable.ql b/python/ql/src/Statements/NestedLoopsSameVariable.ql index f57fa9b361ad..48d9c7beb78c 100644 --- a/python/ql/src/Statements/NestedLoopsSameVariable.ql +++ b/python/ql/src/Statements/NestedLoopsSameVariable.ql @@ -3,8 +3,9 @@ * @description Nested loops in which the target variable is the same for each loop make * the behavior of the loops difficult to understand. * @kind problem - * @tags maintainability - * correctness + * @tags quality + * maintainability + * readability * @problem.severity recommendation * @sub-severity high * @precision very-high diff --git a/python/ql/src/Statements/NestedLoopsSameVariableWithReuse.ql b/python/ql/src/Statements/NestedLoopsSameVariableWithReuse.ql index de293a7aeeae..c4deb4e64277 100644 --- a/python/ql/src/Statements/NestedLoopsSameVariableWithReuse.ql +++ b/python/ql/src/Statements/NestedLoopsSameVariableWithReuse.ql @@ -3,7 +3,8 @@ * @description Redefining a variable in an inner loop and then using * the variable in an outer loop causes unexpected behavior. * @kind problem - * @tags maintainability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Statements/NonIteratorInForLoop.ql b/python/ql/src/Statements/NonIteratorInForLoop.ql index 91ad69f8d445..92527a10e3bb 100644 --- a/python/ql/src/Statements/NonIteratorInForLoop.ql +++ b/python/ql/src/Statements/NonIteratorInForLoop.ql @@ -2,9 +2,9 @@ * @name Non-iterable used in for loop * @description Using a non-iterable as the object in a 'for' loop causes a TypeError. * @kind problem - * @tags reliability + * @tags quality + * reliability * correctness - * types * @problem.severity error * @sub-severity low * @precision high diff --git a/python/ql/src/Statements/RedundantAssignment.ql b/python/ql/src/Statements/RedundantAssignment.ql index 097e4d0052f6..42561905bacd 100644 --- a/python/ql/src/Statements/RedundantAssignment.ql +++ b/python/ql/src/Statements/RedundantAssignment.ql @@ -2,8 +2,9 @@ * @name Redundant assignment * @description Assigning a variable to itself is useless and very likely indicates an error in the code. * @kind problem - * @tags reliability - * useless-code + * @tags quality + * reliability + * correctness * external/cwe/cwe-563 * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Statements/ShouldUseWithStatement.ql b/python/ql/src/Statements/ShouldUseWithStatement.ql index b453f971e86f..2ad76b5c832d 100644 --- a/python/ql/src/Statements/ShouldUseWithStatement.ql +++ b/python/ql/src/Statements/ShouldUseWithStatement.ql @@ -3,9 +3,9 @@ * @description Using a 'try-finally' block to ensure only that a resource is closed makes code more * difficult to read. * @kind problem - * @tags maintainability + * @tags quality + * maintainability * readability - * convention * @problem.severity recommendation * @sub-severity high * @precision very-high diff --git a/python/ql/src/Statements/SideEffectInAssert.ql b/python/ql/src/Statements/SideEffectInAssert.ql index e4797d2dad4b..92cb95d702bf 100644 --- a/python/ql/src/Statements/SideEffectInAssert.ql +++ b/python/ql/src/Statements/SideEffectInAssert.ql @@ -3,8 +3,9 @@ * @description Side-effects in assert statements result in differences between normal * and optimized behavior. * @kind problem - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * @problem.severity error * @sub-severity low * @precision high diff --git a/python/ql/src/Statements/StatementNoEffect.ql b/python/ql/src/Statements/StatementNoEffect.ql index 72a9c91f8aeb..a5806e7082dd 100644 --- a/python/ql/src/Statements/StatementNoEffect.ql +++ b/python/ql/src/Statements/StatementNoEffect.ql @@ -2,7 +2,8 @@ * @name Statement has no effect * @description A statement has no effect * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 * @problem.severity recommendation diff --git a/python/ql/src/Statements/TopLevelPrint.ql b/python/ql/src/Statements/TopLevelPrint.ql index 068bd594f745..2d481421b7e8 100644 --- a/python/ql/src/Statements/TopLevelPrint.ql +++ b/python/ql/src/Statements/TopLevelPrint.ql @@ -2,9 +2,9 @@ * @name Use of a print statement at module level * @description Using a print statement at module scope (except when guarded by `if __name__ == '__main__'`) will cause surprising output when the module is imported. * @kind problem - * @tags reliability - * maintainability - * convention + * @tags quality + * reliability + * correctness * @problem.severity recommendation * @sub-severity high * @precision high diff --git a/python/ql/src/Statements/UnnecessaryElseClause.ql b/python/ql/src/Statements/UnnecessaryElseClause.ql index 35ac254b276d..5e4763637a9f 100644 --- a/python/ql/src/Statements/UnnecessaryElseClause.ql +++ b/python/ql/src/Statements/UnnecessaryElseClause.ql @@ -2,7 +2,8 @@ * @name Unnecessary 'else' clause in loop * @description An 'else' clause in a 'for' or 'while' statement that does not contain a 'break' is redundant. * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * @problem.severity warning * @sub-severity low diff --git a/python/ql/src/Statements/UnnecessaryPass.ql b/python/ql/src/Statements/UnnecessaryPass.ql index 215fac5192e5..1a842639b760 100644 --- a/python/ql/src/Statements/UnnecessaryPass.ql +++ b/python/ql/src/Statements/UnnecessaryPass.ql @@ -2,7 +2,8 @@ * @name Unnecessary pass * @description Unnecessary 'pass' statement * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * @problem.severity warning * @sub-severity low diff --git a/python/ql/src/Statements/UnreachableCode.ql b/python/ql/src/Statements/UnreachableCode.ql index 47426af2c349..98c99ac12185 100644 --- a/python/ql/src/Statements/UnreachableCode.ql +++ b/python/ql/src/Statements/UnreachableCode.ql @@ -2,7 +2,8 @@ * @name Unreachable code * @description Code is unreachable * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 * @problem.severity warning diff --git a/python/ql/src/Statements/UnusedExceptionObject.ql b/python/ql/src/Statements/UnusedExceptionObject.ql index 2cb4c4e447a4..90724b9f1671 100644 --- a/python/ql/src/Statements/UnusedExceptionObject.ql +++ b/python/ql/src/Statements/UnusedExceptionObject.ql @@ -2,8 +2,9 @@ * @name Unused exception object * @description An exception object is created, but is not used. * @kind problem - * @tags reliability - * maintainability + * @tags quality + * reliability + * error-handling * @problem.severity error * @sub-severity low * @precision very-high diff --git a/python/ql/src/Statements/UseOfExit.ql b/python/ql/src/Statements/UseOfExit.ql index 4a2730b7753f..be3579481fcb 100644 --- a/python/ql/src/Statements/UseOfExit.ql +++ b/python/ql/src/Statements/UseOfExit.ql @@ -2,7 +2,9 @@ * @name Use of exit() or quit() * @description exit() or quit() may fail if the interpreter is run with the -S option. * @kind problem - * @tags maintainability + * @tags quality + * reliability + * correctness * @problem.severity warning * @sub-severity low * @precision very-high diff --git a/python/ql/src/Testing/ImpreciseAssert.ql b/python/ql/src/Testing/ImpreciseAssert.ql index 121ec6024e8a..40ceba269834 100644 --- a/python/ql/src/Testing/ImpreciseAssert.ql +++ b/python/ql/src/Testing/ImpreciseAssert.ql @@ -2,8 +2,9 @@ * @name Imprecise assert * @description Using 'assertTrue' or 'assertFalse' rather than a more specific assertion can give uninformative failure messages. * @kind problem - * @tags maintainability - * testability + * @tags quality + * maintainability + * readability * @problem.severity recommendation * @sub-severity high * @precision very-high diff --git a/python/ql/src/Variables/GlobalAtModuleLevel.ql b/python/ql/src/Variables/GlobalAtModuleLevel.ql index e0ac59d2e721..e68caf2adf48 100644 --- a/python/ql/src/Variables/GlobalAtModuleLevel.ql +++ b/python/ql/src/Variables/GlobalAtModuleLevel.ql @@ -2,7 +2,8 @@ * @name Use of 'global' at module level * @description Use of the 'global' statement at module level * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * @problem.severity warning * @sub-severity low diff --git a/python/ql/src/Variables/LoopVariableCapture/LoopVariableCapture.ql b/python/ql/src/Variables/LoopVariableCapture/LoopVariableCapture.ql index 034ac05ee946..38e686f94653 100644 --- a/python/ql/src/Variables/LoopVariableCapture/LoopVariableCapture.ql +++ b/python/ql/src/Variables/LoopVariableCapture/LoopVariableCapture.ql @@ -2,8 +2,9 @@ * @name Loop variable capture * @description Capturing a loop variable is not the same as capturing its value, and can lead to unexpected behavior or bugs. * @kind path-problem - * @tags correctness - * quality + * @tags quality + * reliability + * correctness * @problem.severity error * @sub-severity low * @precision high diff --git a/python/ql/src/Variables/MultiplyDefined.ql b/python/ql/src/Variables/MultiplyDefined.ql index 7d0e76fb6c30..3c26ff0b1eb1 100644 --- a/python/ql/src/Variables/MultiplyDefined.ql +++ b/python/ql/src/Variables/MultiplyDefined.ql @@ -2,7 +2,8 @@ * @name Variable defined multiple times * @description Assignment to a variable occurs multiple times without any intermediate use of that variable * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-563 * @problem.severity warning diff --git a/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql b/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql index 169b686a22a1..fbeb9b2b4f96 100644 --- a/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql +++ b/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql @@ -2,7 +2,8 @@ * @name Suspicious unused loop iteration variable * @description A loop iteration variable is unused, which suggests an error. * @kind problem - * @tags maintainability + * @tags quality + * reliability * correctness * @problem.severity error * @sub-severity low diff --git a/python/ql/src/Variables/UndefinedExport.ql b/python/ql/src/Variables/UndefinedExport.ql index 537828616e57..173139e224a8 100644 --- a/python/ql/src/Variables/UndefinedExport.ql +++ b/python/ql/src/Variables/UndefinedExport.ql @@ -3,8 +3,9 @@ * @description Including an undefined attribute in `__all__` causes an exception when * the module is imported using '*' * @kind problem - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * @problem.severity error * @sub-severity low * @precision high diff --git a/python/ql/src/Variables/UnusedLocalVariable.ql b/python/ql/src/Variables/UnusedLocalVariable.ql index a009d4a51b95..4acd7a08b54c 100644 --- a/python/ql/src/Variables/UnusedLocalVariable.ql +++ b/python/ql/src/Variables/UnusedLocalVariable.ql @@ -2,7 +2,8 @@ * @name Unused local variable * @description Local variable is defined but not used * @kind problem - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-563 * @problem.severity recommendation diff --git a/python/ql/src/Variables/UnusedModuleVariable.ql b/python/ql/src/Variables/UnusedModuleVariable.ql index c9009d9bf369..855ca27a7417 100644 --- a/python/ql/src/Variables/UnusedModuleVariable.ql +++ b/python/ql/src/Variables/UnusedModuleVariable.ql @@ -2,7 +2,8 @@ * @name Unused global variable * @description Global variable is defined but not used * @kind problem - * @tags efficiency + * @tags quality + * maintainability * useless-code * external/cwe/cwe-563 * @problem.severity recommendation diff --git a/python/ql/src/change-notes/released/1.6.0.md b/python/ql/src/change-notes/released/1.6.0.md new file mode 100644 index 000000000000..72dd1bf20026 --- /dev/null +++ b/python/ql/src/change-notes/released/1.6.0.md @@ -0,0 +1,9 @@ +## 1.6.0 + +### Query Metadata Changes + +* The tag `quality` has been added to multiple Python quality queries for consistency. They have all been given a tag for one of the two top-level categories `reliability` or `maintainability`, and a tag for a sub-category. See [Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags) for more information about these categories. + +### Minor Analysis Improvements + +* The `py/iter-returns-non-self` query has been modernized, and no longer alerts for certain cases where an equivalent iterator is returned. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 7eb901bae56a..c4f0b07d5336 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.2 +lastReleaseVersion: 1.6.0 diff --git a/python/ql/src/codeql-suites/python-code-quality-extended.qls b/python/ql/src/codeql-suites/python-code-quality-extended.qls new file mode 100644 index 000000000000..1ee85cae856c --- /dev/null +++ b/python/ql/src/codeql-suites/python-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/python/ql/src/codeql-suites/python-security-and-quality.qls b/python/ql/src/codeql-suites/python-security-and-quality.qls index 2a97a497db0a..557ca61f2b1a 100644 --- a/python/ql/src/codeql-suites/python-security-and-quality.qls +++ b/python/ql/src/codeql-suites/python-security-and-quality.qls @@ -1,4 +1,128 @@ - description: Security-and-quality queries for Python - queries: . -- apply: security-and-quality-selectors.yml +- apply: security-and-frozen-quality-selectors.yml from: codeql/suite-helpers +- include: + id: + - py/asserts-tuple + - py/attribute-shadows-method + - py/call-to-non-callable + - py/call/wrong-arguments + - py/call/wrong-named-argument + - py/call/wrong-named-class-argument + - py/call/wrong-number-class-arguments + - py/catch-base-exception + - py/commented-out-code + - py/comparison-missing-self + - py/comparison-of-constants + - py/comparison-of-identical-expressions + - py/comparison-using-is + - py/conflicting-attributes + - py/constant-conditional-expression + - py/cyclic-import + - py/deprecated-slice-method + - py/duplicate-key-dict-literal + - py/empty-except + - py/encoding-error + - py/equals-hash-mismatch + - py/exit-from-finally + - py/explicit-call-to-delete + - py/explicit-return-in-init + - py/file-not-closed + - py/hash-unhashable-value + - py/illegal-raise + - py/implicit-string-concatenation-in-list + - py/import-and-import-from + - py/import-deprecated-module + - py/import-of-mutable-attribute + - py/import-own-module + - py/imprecise-assert + - py/incomplete-ordering + - py/inconsistent-equality + - py/inconsistent-mro + - py/ineffectual-statement + - py/inheritance/incorrect-overridden-signature + - py/inheritance/incorrect-overriding-signature + - py/inheritance/signature-mismatch + - py/init-calls-subclass + - py/init-method-is-generator + - py/iter-returns-non-iterator + - py/iter-returns-non-self + - py/iteration-string-and-sequence + - py/leaking-list-comprehension + - py/loop-variable-capture + - py/member-test-non-container + - py/mismatched-multiple-assignment + - py/missing-call-to-delete + - py/missing-call-to-init + - py/missing-equals + - py/mixed-returns + - py/mixed-tuple-returns + - py/modification-of-default-value + - py/modification-of-locals + - py/multiple-calls-to-delete + - py/multiple-calls-to-init + - py/multiple-definition + - py/mutable-descriptor + - py/nested-loops-with-same-variable + - py/nested-loops-with-same-variable-reused + - py/non-iterable-in-for-loop + - py/not-named-cls + - py/not-named-self + - py/old-style-octal-literal + - py/overly-complex-delete + - py/overwritten-inherited-attribute + - py/percent-format/not-mapping + - py/percent-format/unsupported-character + - py/percent-format/wrong-arguments + - py/polluting-import + - py/print-during-import + - py/procedure-return-value-used + - py/property-in-old-style-class + - py/pythagorean + - py/raise-not-implemented + - py/raises-tuple + - py/redundant-assignment + - py/redundant-comparison + - py/redundant-else + - py/redundant-global-declaration + - py/regex/backspace-escape + - py/regex/duplicate-in-character-class + - py/regex/incomplete-special-group + - py/regex/unmatchable-caret + - py/regex/unmatchable-dollar + - py/repeated-import + - py/return-or-yield-outside-function + - py/should-use-with + - py/side-effect-in-assert + - py/slots-in-old-style-class + - py/special-method-wrong-signature + - py/str-format/missing-argument + - py/str-format/missing-named-argument + - py/str-format/mixed-fields + - py/str-format/surplus-argument + - py/str-format/surplus-named-argument + - py/super-in-old-style + - py/super-not-enclosing-class + - py/syntax-error + - py/test-equals-none + - py/truncated-division + - py/undefined-export + - py/undefined-placeholder-variable + - py/unexpected-raise-in-special-method + - py/unguarded-next-in-generator + - py/uninitialized-local-variable + - py/unnecessary-delete + - py/unnecessary-lambda + - py/unnecessary-pass + - py/unreachable-except + - py/unreachable-statement + - py/unsafe-cyclic-import + - py/unused-exception-object + - py/unused-global-variable + - py/unused-import + - py/unused-local-variable + - py/unused-loop-variable + - py/use-of-apply + - py/use-of-exit-or-quit + - py/useless-except diff --git a/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql b/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql index a0fadbff3f3b..a93787c9d790 100644 --- a/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql +++ b/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql @@ -147,6 +147,8 @@ private module AzureBlobClientConfig implements DataFlow::StateConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module AzureBlobClientFlow = DataFlow::GlobalWithState; diff --git a/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql b/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql index 01e661cb0bbf..4bb8440c02cd 100644 --- a/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql +++ b/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql @@ -81,6 +81,8 @@ module CorsBypassConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module CorsFlow = TaintTracking::Global; diff --git a/python/ql/src/experimental/Security/UnsafeUnpackQuery.qll b/python/ql/src/experimental/Security/UnsafeUnpackQuery.qll index 64da6b8d799a..79e50fbd36e9 100644 --- a/python/ql/src/experimental/Security/UnsafeUnpackQuery.qll +++ b/python/ql/src/experimental/Security/UnsafeUnpackQuery.qll @@ -210,6 +210,8 @@ module UnsafeUnpackConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** Global taint-tracking for detecting "UnsafeUnpacking" vulnerabilities. */ diff --git a/python/ql/src/experimental/semmle/python/security/LdapInsecureAuth.qll b/python/ql/src/experimental/semmle/python/security/LdapInsecureAuth.qll index 630543e6f798..431f9f9ab732 100644 --- a/python/ql/src/experimental/semmle/python/security/LdapInsecureAuth.qll +++ b/python/ql/src/experimental/semmle/python/security/LdapInsecureAuth.qll @@ -103,6 +103,8 @@ private module LdapInsecureAuthConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** Global taint-tracking for detecting "LDAP insecure authentications" vulnerabilities. */ diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 54dfe59df779..ff38476458fb 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.5.2 +version: 1.6.1-dev groups: - python - queries diff --git a/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.expected b/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.expected index d3cde45c1ff2..f06282e133b6 100644 --- a/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.expected +++ b/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.expected @@ -1 +1,2 @@ -| init_calls_subclass.py:7:9:7:24 | Attribute() | Call to self.$@ in __init__ method, which is overridden by $@. | init_calls_subclass.py:10:5:10:26 | Function set_up | set_up | init_calls_subclass.py:19:5:19:26 | Function set_up | method Sub.set_up | +| init_calls_subclass.py:8:13:8:28 | ControlFlowNode for Attribute() | This call to $@ in an initialization method is overridden by $@. | init_calls_subclass.py:11:9:11:30 | Function set_up | bad1.Super.set_up | init_calls_subclass.py:20:9:20:30 | Function set_up | bad1.Sub.set_up | +| init_calls_subclass.py:32:13:32:27 | ControlFlowNode for Attribute() | This call to $@ in an initialization method is overridden by $@. | init_calls_subclass.py:34:9:34:27 | Function postproc | bad2.Super.postproc | init_calls_subclass.py:43:9:43:27 | Function postproc | bad2.Sub.postproc | diff --git a/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.qlref b/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.qlref index f820a30b11a2..6530409f90ac 100644 --- a/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.qlref +++ b/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.qlref @@ -1 +1 @@ -Classes/InitCallsSubclassMethod.ql +Classes/InitCallsSubclass/InitCallsSubclassMethod.ql diff --git a/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py b/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py index 3248f8d83034..ef944a9c7ef5 100644 --- a/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py +++ b/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py @@ -1,22 +1,75 @@ #Superclass __init__ calls subclass method -class Super(object): +def bad1(): + class Super: - def __init__(self, arg): - self._state = "Not OK" - self.set_up(arg) - self._state = "OK" + def __init__(self, arg): + self._state = "Not OK" + self.set_up(arg) # BAD: set_up is overriden. + self._state = "OK" - def set_up(self, arg): - "Do some set up" + def set_up(self, arg): + "Do some set up" -class Sub(Super): + class Sub(Super): - def __init__(self, arg): - Super.__init__(self, arg) - self.important_state = "OK" + def __init__(self, arg): + super().__init__(arg) + self.important_state = "OK" - def set_up(self, arg): - Super.set_up(self, arg) - "Do some more set up" # Dangerous as self._state is "Not OK" and - # self.important_state is uninitialized \ No newline at end of file + def set_up(self, arg): + super().set_up(arg) + "Do some more set up" # `self` is partially initialized + if self.important_state == "OK": + pass + +def bad2(): + class Super: + def __init__(self, arg): + self.a = arg + # BAD: postproc is called after initialization. This is still an issue + # since it may still occur before all initialization on a subclass is complete. + self.postproc() + + def postproc(self): + if self.a == 1: + pass + + class Sub(Super): + def __init__(self, arg): + super().__init__(arg) + self.b = 3 + + def postproc(self): + if self.a == 2 and self.b == 3: + pass + +def good3(): + class Super: + def __init__(self, arg): + self.a = arg + self.set_b() # OK: Here `set_b` is used for initialization, but does not read the partially initialized state of `self`. + self.c = 1 + + def set_b(self): + self.b = 3 + + class Sub(Super): + def set_b(self): + self.b = 4 + +def good4(): + class Super: + def __init__(self, arg): + self.a = arg + # OK: Here `_set_b` is likely an internal method (as indicated by the _ prefix). + # We assume thus that regular consumers of the library will not override it, and classes that do are internal and account for `self`'s partially initialized state. + self._set_b() + self.c = 1 + + def _set_b(self): + self.b = 3 + + class Sub(Super): + def _set_b(self): + self.b = self.a+1 \ No newline at end of file diff --git a/python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.expected b/python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.expected deleted file mode 100644 index 9fd22c1df612..000000000000 --- a/python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.expected +++ /dev/null @@ -1 +0,0 @@ -| protocols.py:54:1:54:29 | class AlmostIterator | Class AlmostIterator is an iterator but its $@ method does not return 'self'. | protocols.py:62:5:62:23 | Function __iter__ | __iter__ | diff --git a/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected b/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected new file mode 100644 index 000000000000..a21f8de68a59 --- /dev/null +++ b/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected @@ -0,0 +1,2 @@ +| test.py:5:5:5:23 | Function __iter__ | Iter method of iterator $@ does not return `self`. | test.py:1:1:1:11 | Class Bad1 | Bad1 | +| test.py:51:5:51:23 | Function __iter__ | Iter method of iterator $@ does not return `self`. | test.py:42:1:42:21 | Class FalsePositive1 | FalsePositive1 | diff --git a/python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.qlref b/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.qlref similarity index 100% rename from python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.qlref rename to python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.qlref diff --git a/python/ql/test/query-tests/Functions/iterators/test.py b/python/ql/test/query-tests/Functions/iterators/test.py new file mode 100644 index 000000000000..ced389967e41 --- /dev/null +++ b/python/ql/test/query-tests/Functions/iterators/test.py @@ -0,0 +1,53 @@ +class Bad1: + def __next__(self): + return 0 + + def __iter__(self): # BAD: Iter does not return self + yield 0 + +class Good1: + def __next__(self): + return 0 + + def __iter__(self): # GOOD: iter returns self + return self + +class Good2: + def __init__(self): + self._it = iter([0,0,0]) + + def __next__(self): + return next(self._it) + + def __iter__(self): # GOOD: iter and next are wrappers around a field + return self._it.__iter__() + +class Good3: + def __init__(self): + self._it = iter([0,0,0]) + + def __next__(self): + return self._it.__next__() + + def __iter__(self): # GOOD: iter and next are wrappers around a field + return self._it + +class Good4: + def __next__(self): + return 0 + + def __iter__(self): # GOOD: this is an equivalent iterator to `self`. + return iter(self.__next__, None) + +class FalsePositive1: + def __init__(self): + self._it = None + + def __next__(self): + if self._it is None: + self._it = iter(self) + return next(self._it) + + def __iter__(self): # SPURIOUS, GOOD: implementation of next ensures the iterator is equivalent to the one returned by iter, but this is not detected. + yield 0 + yield 0 \ No newline at end of file diff --git a/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/resources_test.py b/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/resources_test.py index 598d54c892c3..244c6f73c133 100644 --- a/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/resources_test.py +++ b/python/ql/test/query-tests/Resources/FileNotAlwaysClosed/resources_test.py @@ -277,4 +277,11 @@ def closed28(path): try: f28.write("hi") finally: - f28.close() \ No newline at end of file + f28.close() + +def closed29(path): + # Due to an approximation in CFG reachability for performance, it is not detected that the `write` call that may raise occurs after the file has already been closed. + # We presume this case to be uncommon. + f28 = open(path) # $SPURIOUS:notClosedOnException + f28.close() + f28.write("already closed") \ No newline at end of file diff --git a/ql/ql/src/codeql_ql/ast/Ast.qll b/ql/ql/src/codeql_ql/ast/Ast.qll index 937c7bc61010..89bdf14d4b2a 100644 --- a/ql/ql/src/codeql_ql/ast/Ast.qll +++ b/ql/ql/src/codeql_ql/ast/Ast.qll @@ -2538,6 +2538,22 @@ private class NoOptArg extends AnnotationArg { NoOptArg() { this.getValue() = "noopt" } } +private class CallerArg extends AnnotationArg { + CallerArg() { this.getValue() = "caller" } +} + +private class CallerQArg extends AnnotationArg { + CallerQArg() { this.getValue() = "caller?" } +} + +private class LocalArg extends AnnotationArg { + LocalArg() { this.getValue() = "local" } +} + +private class LocalQArg extends AnnotationArg { + LocalQArg() { this.getValue() = "local?" } +} + private class MonotonicAggregatesArg extends AnnotationArg { MonotonicAggregatesArg() { this.getValue() = "monotonicAggregates" } } @@ -2597,6 +2613,34 @@ class NoOpt extends Annotation { override string toString() { result = "noopt" } } +/** An `overlay[caller]` annotation. */ +class OverlayCaller extends Annotation { + OverlayCaller() { this.getName() = "overlay" and this.getArgs(0) instanceof CallerArg } + + override string toString() { result = "overlay[caller]" } +} + +/** An `overlay[caller?]` annotation. */ +class OverlayCallerQ extends Annotation { + OverlayCallerQ() { this.getName() = "overlay" and this.getArgs(0) instanceof CallerQArg } + + override string toString() { result = "overlay[caller?]" } +} + +/** An `overlay[local]` annotation. */ +class OverlayLocal extends Annotation { + OverlayLocal() { this.getName() = "overlay" and this.getArgs(0) instanceof LocalArg } + + override string toString() { result = "overlay[local]" } +} + +/** An `overlay[local?]` annotation. */ +class OverlayLocalQ extends Annotation { + OverlayLocalQ() { this.getName() = "overlay" and this.getArgs(0) instanceof LocalQArg } + + override string toString() { result = "overlay[local?]" } +} + /** A `language[monotonicAggregates]` annotation. */ class MonotonicAggregates extends Annotation { MonotonicAggregates() { this.getArgs(0) instanceof MonotonicAggregatesArg } diff --git a/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll b/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll index 562af993d894..a83095629ab5 100644 --- a/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll +++ b/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll @@ -5,6 +5,10 @@ import codeql.Locations as L +/** Holds if the database is an overlay. */ +overlay[local] +private predicate isOverlay() { databaseMetadata("isOverlay", "true") } + module QL { /** The base class for all AST nodes */ class AstNode extends @ql_ast_node { @@ -48,6 +52,30 @@ module QL { final override string getAPrimaryQlClass() { result = "ReservedWord" } } + /** Gets the file containing the given `node`. */ + overlay[local] + private @file getNodeFile(@ql_ast_node node) { + exists(@location_default loc | ql_ast_node_location(node, loc) | + locations_default(loc, result, _, _, _, _) + ) + } + + /** Holds if `file` was extracted as part of the overlay database. */ + overlay[local] + private predicate discardFile(@file file) { isOverlay() and file = getNodeFile(_) } + + /** Holds if `node` is in the `file` and is part of the overlay base database. */ + overlay[local] + private predicate discardableAstNode(@file file, @ql_ast_node node) { + not isOverlay() and file = getNodeFile(node) + } + + /** Holds if `node` should be discarded, because it is part of the overlay base and is in a file that was also extracted as part of the overlay database. */ + overlay[discard_entity] + private predicate discardAstNode(@ql_ast_node node) { + exists(@file file | discardableAstNode(file, node) and discardFile(file)) + } + /** A class representing `add_expr` nodes. */ class AddExpr extends @ql_add_expr, AstNode { /** Gets the name of the primary QL class for this element. */ @@ -1318,6 +1346,30 @@ module Dbscheme { final override string getAPrimaryQlClass() { result = "ReservedWord" } } + /** Gets the file containing the given `node`. */ + overlay[local] + private @file getNodeFile(@dbscheme_ast_node node) { + exists(@location_default loc | dbscheme_ast_node_location(node, loc) | + locations_default(loc, result, _, _, _, _) + ) + } + + /** Holds if `file` was extracted as part of the overlay database. */ + overlay[local] + private predicate discardFile(@file file) { isOverlay() and file = getNodeFile(_) } + + /** Holds if `node` is in the `file` and is part of the overlay base database. */ + overlay[local] + private predicate discardableAstNode(@file file, @dbscheme_ast_node node) { + not isOverlay() and file = getNodeFile(node) + } + + /** Holds if `node` should be discarded, because it is part of the overlay base and is in a file that was also extracted as part of the overlay database. */ + overlay[discard_entity] + private predicate discardAstNode(@dbscheme_ast_node node) { + exists(@file file | discardableAstNode(file, node) and discardFile(file)) + } + /** A class representing `annotName` tokens. */ class AnnotName extends @dbscheme_token_annot_name, Token { /** Gets the name of the primary QL class for this element. */ @@ -1654,6 +1706,30 @@ module Blame { final override string getAPrimaryQlClass() { result = "ReservedWord" } } + /** Gets the file containing the given `node`. */ + overlay[local] + private @file getNodeFile(@blame_ast_node node) { + exists(@location_default loc | blame_ast_node_location(node, loc) | + locations_default(loc, result, _, _, _, _) + ) + } + + /** Holds if `file` was extracted as part of the overlay database. */ + overlay[local] + private predicate discardFile(@file file) { isOverlay() and file = getNodeFile(_) } + + /** Holds if `node` is in the `file` and is part of the overlay base database. */ + overlay[local] + private predicate discardableAstNode(@file file, @blame_ast_node node) { + not isOverlay() and file = getNodeFile(node) + } + + /** Holds if `node` should be discarded, because it is part of the overlay base and is in a file that was also extracted as part of the overlay database. */ + overlay[discard_entity] + private predicate discardAstNode(@blame_ast_node node) { + exists(@file file | discardableAstNode(file, node) and discardFile(file)) + } + /** A class representing `blame_entry` nodes. */ class BlameEntry extends @blame_blame_entry, AstNode { /** Gets the name of the primary QL class for this element. */ @@ -1767,6 +1843,30 @@ module JSON { final override string getAPrimaryQlClass() { result = "ReservedWord" } } + /** Gets the file containing the given `node`. */ + overlay[local] + private @file getNodeFile(@json_ast_node node) { + exists(@location_default loc | json_ast_node_location(node, loc) | + locations_default(loc, result, _, _, _, _) + ) + } + + /** Holds if `file` was extracted as part of the overlay database. */ + overlay[local] + private predicate discardFile(@file file) { isOverlay() and file = getNodeFile(_) } + + /** Holds if `node` is in the `file` and is part of the overlay base database. */ + overlay[local] + private predicate discardableAstNode(@file file, @json_ast_node node) { + not isOverlay() and file = getNodeFile(node) + } + + /** Holds if `node` should be discarded, because it is part of the overlay base and is in a file that was also extracted as part of the overlay database. */ + overlay[discard_entity] + private predicate discardAstNode(@json_ast_node node) { + exists(@file file | discardableAstNode(file, node) and discardFile(file)) + } + class UnderscoreValue extends @json_underscore_value, AstNode { } /** A class representing `array` nodes. */ diff --git a/ql/ql/src/ql.dbscheme b/ql/ql/src/ql.dbscheme index 6b7646b90f91..d2a002084695 100644 --- a/ql/ql/src/ql.dbscheme +++ b/ql/ql/src/ql.dbscheme @@ -108,6 +108,12 @@ yaml_locations(unique int locatable: @yaml_locatable ref, @yaml_locatable = @yaml_node | @yaml_error; +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + /*- QL dbscheme -*/ @ql_add_expr_left_type = @ql_add_expr | @ql_aggregate | @ql_call_or_unqual_agg_expr | @ql_comp_term | @ql_conjunction | @ql_disjunction | @ql_expr_annotation | @ql_if_term | @ql_implication | @ql_in_expr | @ql_instance_of | @ql_literal | @ql_mul_expr | @ql_negation | @ql_par_expr | @ql_prefix_cast | @ql_qualified_expr | @ql_quantified | @ql_range | @ql_set_literal | @ql_special_call | @ql_super_ref | @ql_unary_expr | @ql_variable diff --git a/ql/ql/src/ql.dbscheme.stats b/ql/ql/src/ql.dbscheme.stats index 1e992f7d7a40..8a5866812634 100644 --- a/ql/ql/src/ql.dbscheme.stats +++ b/ql/ql/src/ql.dbscheme.stats @@ -22436,5 +22436,41 @@ + + databaseMetadata + 1 + + + metadataKey + 1 + + + value + 1 + + + + + metadataKey + value + + + 12 + + + + + + value + metadataKey + + + 12 + + + + + + diff --git a/ql/ql/src/queries/overlay/InlineOverlayCaller.ql b/ql/ql/src/queries/overlay/InlineOverlayCaller.ql new file mode 100644 index 000000000000..0853dfde830e --- /dev/null +++ b/ql/ql/src/queries/overlay/InlineOverlayCaller.ql @@ -0,0 +1,42 @@ +/** + * @name Cannot inline predicate across overlay frontier + * @description Local inline predicates that are not annotated with `overlay[caller]` are + * not inlined across the overlay frontier. This may negatively affect performance. + * @kind problem + * @problem.severity warning + * @id ql/inline-overlay-caller + * @tags performance + * @precision high + */ + +import ql + +predicate mayBeLocal(AstNode n) { + n.getAnAnnotation() instanceof OverlayLocal + or + n.getAnAnnotation() instanceof OverlayLocalQ + or + // The tree-sitter-ql grammar doesn't handle annotations on file-level + // module declarations correctly. To work around that, we consider any + // node in a file that contains an overlay[local] or overlay[local?] + // annotation to be potentially local. + exists(AstNode m | + n.getLocation().getFile() = m.getLocation().getFile() and + mayBeLocal(m) + ) +} + +from Predicate p +where + mayBeLocal(p) and + p.getAnAnnotation() instanceof Inline and + not p.getAnAnnotation() instanceof OverlayCaller and + not p.getAnAnnotation() instanceof OverlayCallerQ and + not p.isPrivate() +select p, + "This possibly local non-private inline predicate will not " + + "be inlined across the overlay frontier. This may negatively " + + "affect evaluation performance. Consider adding an " + + "`overlay[caller]` or `overlay[caller?]` annotation to allow inlining across the " + + "overlay frontier. Note that adding an `overlay[caller]` or `overlay[caller?]` " + + "annotation affects semantics under overlay evaluation." diff --git a/ql/ql/test/queries/overlay/InlineOverlayCaller/InlineOverlayCaller.expected b/ql/ql/test/queries/overlay/InlineOverlayCaller/InlineOverlayCaller.expected new file mode 100644 index 000000000000..5075797c0dde --- /dev/null +++ b/ql/ql/test/queries/overlay/InlineOverlayCaller/InlineOverlayCaller.expected @@ -0,0 +1 @@ +| Test.qll:7:11:7:13 | ClasslessPredicate foo | This possibly local non-private inline predicate will not be inlined across the overlay frontier. This may negatively affect evaluation performance. Consider adding an `overlay[caller]` or `overlay[caller?]` annotation to allow inlining across the overlay frontier. Note that adding an `overlay[caller]` or `overlay[caller?]` annotation affects semantics under overlay evaluation. | diff --git a/ql/ql/test/queries/overlay/InlineOverlayCaller/InlineOverlayCaller.qlref b/ql/ql/test/queries/overlay/InlineOverlayCaller/InlineOverlayCaller.qlref new file mode 100644 index 000000000000..0347e9eedc54 --- /dev/null +++ b/ql/ql/test/queries/overlay/InlineOverlayCaller/InlineOverlayCaller.qlref @@ -0,0 +1 @@ +queries/overlay/InlineOverlayCaller.ql diff --git a/ql/ql/test/queries/overlay/InlineOverlayCaller/Test.qll b/ql/ql/test/queries/overlay/InlineOverlayCaller/Test.qll new file mode 100644 index 000000000000..e25577d91a17 --- /dev/null +++ b/ql/ql/test/queries/overlay/InlineOverlayCaller/Test.qll @@ -0,0 +1,18 @@ +overlay[local?] +module; + +import ql + +pragma[inline] +predicate foo(int x) { x = 42 } + +overlay[caller] +pragma[inline] +predicate bar(int x) { x = 43 } + +pragma[inline] +private predicate baz(int x) { x = 44 } + +overlay[caller?] +pragma[inline] +predicate baw(int x) { x = 45 } diff --git a/ruby/codeql-extractor.yml b/ruby/codeql-extractor.yml index abb50db2a295..a832b0c10654 100644 --- a/ruby/codeql-extractor.yml +++ b/ruby/codeql-extractor.yml @@ -3,6 +3,7 @@ display_name: "Ruby" version: 0.1.0 column_kind: "utf8" legacy_qltest_extraction: true +overlay_support_version: 20250108 build_modes: - none github_api_languages: diff --git a/ruby/downgrades/dc51d416301df12df5b70fbc4338de6cc1f82bfd/old.dbscheme b/ruby/downgrades/dc51d416301df12df5b70fbc4338de6cc1f82bfd/old.dbscheme new file mode 100644 index 000000000000..dc51d416301d --- /dev/null +++ b/ruby/downgrades/dc51d416301df12df5b70fbc4338de6cc1f82bfd/old.dbscheme @@ -0,0 +1,1532 @@ +// CodeQL database schema for Ruby +// Automatically generated from the tree-sitter grammar; do not edit + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Ruby dbscheme -*/ +@ruby_underscore_arg = @ruby_assignment | @ruby_binary | @ruby_conditional | @ruby_operator_assignment | @ruby_range | @ruby_unary | @ruby_underscore_primary + +@ruby_underscore_call_operator = @ruby_reserved_word + +@ruby_underscore_expression = @ruby_assignment | @ruby_binary | @ruby_break | @ruby_call | @ruby_match_pattern | @ruby_next | @ruby_operator_assignment | @ruby_return | @ruby_test_pattern | @ruby_unary | @ruby_underscore_arg | @ruby_yield + +@ruby_underscore_lhs = @ruby_call | @ruby_element_reference | @ruby_scope_resolution | @ruby_token_false | @ruby_token_nil | @ruby_token_true | @ruby_underscore_variable + +@ruby_underscore_method_name = @ruby_delimited_symbol | @ruby_setter | @ruby_token_constant | @ruby_token_identifier | @ruby_token_operator | @ruby_token_simple_symbol | @ruby_underscore_nonlocal_variable + +@ruby_underscore_nonlocal_variable = @ruby_token_class_variable | @ruby_token_global_variable | @ruby_token_instance_variable + +@ruby_underscore_pattern_constant = @ruby_scope_resolution | @ruby_token_constant + +@ruby_underscore_pattern_expr = @ruby_alternative_pattern | @ruby_as_pattern | @ruby_underscore_pattern_expr_basic + +@ruby_underscore_pattern_expr_basic = @ruby_array_pattern | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_parenthesized_pattern | @ruby_range | @ruby_token_identifier | @ruby_underscore_pattern_constant | @ruby_underscore_pattern_primitive | @ruby_variable_reference_pattern + +@ruby_underscore_pattern_primitive = @ruby_delimited_symbol | @ruby_lambda | @ruby_regex | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_encoding | @ruby_token_false | @ruby_token_file | @ruby_token_heredoc_beginning | @ruby_token_line | @ruby_token_nil | @ruby_token_self | @ruby_token_simple_symbol | @ruby_token_true | @ruby_unary | @ruby_underscore_simple_numeric + +@ruby_underscore_pattern_top_expr_body = @ruby_array_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_underscore_pattern_expr + +@ruby_underscore_primary = @ruby_array | @ruby_begin | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_delimited_symbol | @ruby_for | @ruby_hash | @ruby_if | @ruby_lambda | @ruby_method | @ruby_module | @ruby_next | @ruby_parenthesized_statements | @ruby_redo | @ruby_regex | @ruby_retry | @ruby_return | @ruby_singleton_class | @ruby_singleton_method | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_character | @ruby_token_heredoc_beginning | @ruby_token_simple_symbol | @ruby_unary | @ruby_underscore_lhs | @ruby_underscore_simple_numeric | @ruby_unless | @ruby_until | @ruby_while | @ruby_yield + +@ruby_underscore_simple_numeric = @ruby_complex | @ruby_rational | @ruby_token_float | @ruby_token_integer + +@ruby_underscore_statement = @ruby_alias | @ruby_begin_block | @ruby_end_block | @ruby_if_modifier | @ruby_rescue_modifier | @ruby_undef | @ruby_underscore_expression | @ruby_unless_modifier | @ruby_until_modifier | @ruby_while_modifier + +@ruby_underscore_variable = @ruby_token_constant | @ruby_token_identifier | @ruby_token_self | @ruby_token_super | @ruby_underscore_nonlocal_variable + +ruby_alias_def( + unique int id: @ruby_alias, + int alias: @ruby_underscore_method_name ref, + int name: @ruby_underscore_method_name ref +); + +#keyset[ruby_alternative_pattern, index] +ruby_alternative_pattern_alternatives( + int ruby_alternative_pattern: @ruby_alternative_pattern ref, + int index: int ref, + unique int alternatives: @ruby_underscore_pattern_expr_basic ref +); + +ruby_alternative_pattern_def( + unique int id: @ruby_alternative_pattern +); + +@ruby_argument_list_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_argument_list, index] +ruby_argument_list_child( + int ruby_argument_list: @ruby_argument_list ref, + int index: int ref, + unique int child: @ruby_argument_list_child_type ref +); + +ruby_argument_list_def( + unique int id: @ruby_argument_list +); + +@ruby_array_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_array, index] +ruby_array_child( + int ruby_array: @ruby_array ref, + int index: int ref, + unique int child: @ruby_array_child_type ref +); + +ruby_array_def( + unique int id: @ruby_array +); + +ruby_array_pattern_class( + unique int ruby_array_pattern: @ruby_array_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_array_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_array_pattern, index] +ruby_array_pattern_child( + int ruby_array_pattern: @ruby_array_pattern ref, + int index: int ref, + unique int child: @ruby_array_pattern_child_type ref +); + +ruby_array_pattern_def( + unique int id: @ruby_array_pattern +); + +ruby_as_pattern_def( + unique int id: @ruby_as_pattern, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_pattern_expr ref +); + +@ruby_assignment_left_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +@ruby_assignment_right_type = @ruby_rescue_modifier | @ruby_right_assignment_list | @ruby_splat_argument | @ruby_underscore_expression + +ruby_assignment_def( + unique int id: @ruby_assignment, + int left: @ruby_assignment_left_type ref, + int right: @ruby_assignment_right_type ref +); + +@ruby_bare_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_string, index] +ruby_bare_string_child( + int ruby_bare_string: @ruby_bare_string ref, + int index: int ref, + unique int child: @ruby_bare_string_child_type ref +); + +ruby_bare_string_def( + unique int id: @ruby_bare_string +); + +@ruby_bare_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_symbol, index] +ruby_bare_symbol_child( + int ruby_bare_symbol: @ruby_bare_symbol ref, + int index: int ref, + unique int child: @ruby_bare_symbol_child_type ref +); + +ruby_bare_symbol_def( + unique int id: @ruby_bare_symbol +); + +@ruby_begin_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin, index] +ruby_begin_child( + int ruby_begin: @ruby_begin ref, + int index: int ref, + unique int child: @ruby_begin_child_type ref +); + +ruby_begin_def( + unique int id: @ruby_begin +); + +@ruby_begin_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin_block, index] +ruby_begin_block_child( + int ruby_begin_block: @ruby_begin_block ref, + int index: int ref, + unique int child: @ruby_begin_block_child_type ref +); + +ruby_begin_block_def( + unique int id: @ruby_begin_block +); + +@ruby_binary_left_type = @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_binary.operator of + 0 = @ruby_binary_bangequal +| 1 = @ruby_binary_bangtilde +| 2 = @ruby_binary_percent +| 3 = @ruby_binary_ampersand +| 4 = @ruby_binary_ampersandampersand +| 5 = @ruby_binary_star +| 6 = @ruby_binary_starstar +| 7 = @ruby_binary_plus +| 8 = @ruby_binary_minus +| 9 = @ruby_binary_slash +| 10 = @ruby_binary_langle +| 11 = @ruby_binary_langlelangle +| 12 = @ruby_binary_langleequal +| 13 = @ruby_binary_langleequalrangle +| 14 = @ruby_binary_equalequal +| 15 = @ruby_binary_equalequalequal +| 16 = @ruby_binary_equaltilde +| 17 = @ruby_binary_rangle +| 18 = @ruby_binary_rangleequal +| 19 = @ruby_binary_ranglerangle +| 20 = @ruby_binary_caret +| 21 = @ruby_binary_and +| 22 = @ruby_binary_or +| 23 = @ruby_binary_pipe +| 24 = @ruby_binary_pipepipe +; + + +ruby_binary_def( + unique int id: @ruby_binary, + int left: @ruby_binary_left_type ref, + int operator: int ref, + int right: @ruby_underscore_expression ref +); + +ruby_block_body( + unique int ruby_block: @ruby_block ref, + unique int body: @ruby_block_body ref +); + +ruby_block_parameters( + unique int ruby_block: @ruby_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_block_def( + unique int id: @ruby_block +); + +ruby_block_argument_child( + unique int ruby_block_argument: @ruby_block_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_block_argument_def( + unique int id: @ruby_block_argument +); + +@ruby_block_body_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_block_body, index] +ruby_block_body_child( + int ruby_block_body: @ruby_block_body ref, + int index: int ref, + unique int child: @ruby_block_body_child_type ref +); + +ruby_block_body_def( + unique int id: @ruby_block_body +); + +ruby_block_parameter_name( + unique int ruby_block_parameter: @ruby_block_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_block_parameter_def( + unique int id: @ruby_block_parameter +); + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_locals( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int locals: @ruby_token_identifier ref +); + +@ruby_block_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_child( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int child: @ruby_block_parameters_child_type ref +); + +ruby_block_parameters_def( + unique int id: @ruby_block_parameters +); + +@ruby_body_statement_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_body_statement, index] +ruby_body_statement_child( + int ruby_body_statement: @ruby_body_statement ref, + int index: int ref, + unique int child: @ruby_body_statement_child_type ref +); + +ruby_body_statement_def( + unique int id: @ruby_body_statement +); + +ruby_break_child( + unique int ruby_break: @ruby_break ref, + unique int child: @ruby_argument_list ref +); + +ruby_break_def( + unique int id: @ruby_break +); + +ruby_call_arguments( + unique int ruby_call: @ruby_call ref, + unique int arguments: @ruby_argument_list ref +); + +@ruby_call_block_type = @ruby_block | @ruby_do_block + +ruby_call_block( + unique int ruby_call: @ruby_call ref, + unique int block: @ruby_call_block_type ref +); + +@ruby_call_method_type = @ruby_token_operator | @ruby_underscore_variable + +ruby_call_method( + unique int ruby_call: @ruby_call ref, + unique int method: @ruby_call_method_type ref +); + +ruby_call_operator( + unique int ruby_call: @ruby_call ref, + unique int operator: @ruby_underscore_call_operator ref +); + +ruby_call_receiver( + unique int ruby_call: @ruby_call ref, + unique int receiver: @ruby_underscore_primary ref +); + +ruby_call_def( + unique int id: @ruby_call +); + +ruby_case_value( + unique int ruby_case__: @ruby_case__ ref, + unique int value: @ruby_underscore_statement ref +); + +@ruby_case_child_type = @ruby_else | @ruby_when + +#keyset[ruby_case__, index] +ruby_case_child( + int ruby_case__: @ruby_case__ ref, + int index: int ref, + unique int child: @ruby_case_child_type ref +); + +ruby_case_def( + unique int id: @ruby_case__ +); + +#keyset[ruby_case_match, index] +ruby_case_match_clauses( + int ruby_case_match: @ruby_case_match ref, + int index: int ref, + unique int clauses: @ruby_in_clause ref +); + +ruby_case_match_else( + unique int ruby_case_match: @ruby_case_match ref, + unique int else: @ruby_else ref +); + +ruby_case_match_def( + unique int id: @ruby_case_match, + int value: @ruby_underscore_statement ref +); + +#keyset[ruby_chained_string, index] +ruby_chained_string_child( + int ruby_chained_string: @ruby_chained_string ref, + int index: int ref, + unique int child: @ruby_string__ ref +); + +ruby_chained_string_def( + unique int id: @ruby_chained_string +); + +ruby_class_body( + unique int ruby_class: @ruby_class ref, + unique int body: @ruby_body_statement ref +); + +@ruby_class_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_class_superclass( + unique int ruby_class: @ruby_class ref, + unique int superclass: @ruby_superclass ref +); + +ruby_class_def( + unique int id: @ruby_class, + int name: @ruby_class_name_type ref +); + +@ruby_complex_child_type = @ruby_rational | @ruby_token_float | @ruby_token_integer + +ruby_complex_def( + unique int id: @ruby_complex, + int child: @ruby_complex_child_type ref +); + +ruby_conditional_def( + unique int id: @ruby_conditional, + int alternative: @ruby_underscore_arg ref, + int condition: @ruby_underscore_arg ref, + int consequence: @ruby_underscore_arg ref +); + +@ruby_delimited_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_delimited_symbol, index] +ruby_delimited_symbol_child( + int ruby_delimited_symbol: @ruby_delimited_symbol ref, + int index: int ref, + unique int child: @ruby_delimited_symbol_child_type ref +); + +ruby_delimited_symbol_def( + unique int id: @ruby_delimited_symbol +); + +@ruby_destructured_left_assignment_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_destructured_left_assignment, index] +ruby_destructured_left_assignment_child( + int ruby_destructured_left_assignment: @ruby_destructured_left_assignment ref, + int index: int ref, + unique int child: @ruby_destructured_left_assignment_child_type ref +); + +ruby_destructured_left_assignment_def( + unique int id: @ruby_destructured_left_assignment +); + +@ruby_destructured_parameter_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_destructured_parameter, index] +ruby_destructured_parameter_child( + int ruby_destructured_parameter: @ruby_destructured_parameter ref, + int index: int ref, + unique int child: @ruby_destructured_parameter_child_type ref +); + +ruby_destructured_parameter_def( + unique int id: @ruby_destructured_parameter +); + +@ruby_do_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_do, index] +ruby_do_child( + int ruby_do: @ruby_do ref, + int index: int ref, + unique int child: @ruby_do_child_type ref +); + +ruby_do_def( + unique int id: @ruby_do +); + +ruby_do_block_body( + unique int ruby_do_block: @ruby_do_block ref, + unique int body: @ruby_body_statement ref +); + +ruby_do_block_parameters( + unique int ruby_do_block: @ruby_do_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_do_block_def( + unique int id: @ruby_do_block +); + +@ruby_element_reference_block_type = @ruby_block | @ruby_do_block + +ruby_element_reference_block( + unique int ruby_element_reference: @ruby_element_reference ref, + unique int block: @ruby_element_reference_block_type ref +); + +@ruby_element_reference_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_element_reference, index] +ruby_element_reference_child( + int ruby_element_reference: @ruby_element_reference ref, + int index: int ref, + unique int child: @ruby_element_reference_child_type ref +); + +ruby_element_reference_def( + unique int id: @ruby_element_reference, + int object: @ruby_underscore_primary ref +); + +@ruby_else_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_else, index] +ruby_else_child( + int ruby_else: @ruby_else ref, + int index: int ref, + unique int child: @ruby_else_child_type ref +); + +ruby_else_def( + unique int id: @ruby_else +); + +@ruby_elsif_alternative_type = @ruby_else | @ruby_elsif + +ruby_elsif_alternative( + unique int ruby_elsif: @ruby_elsif ref, + unique int alternative: @ruby_elsif_alternative_type ref +); + +ruby_elsif_consequence( + unique int ruby_elsif: @ruby_elsif ref, + unique int consequence: @ruby_then ref +); + +ruby_elsif_def( + unique int id: @ruby_elsif, + int condition: @ruby_underscore_statement ref +); + +@ruby_end_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_end_block, index] +ruby_end_block_child( + int ruby_end_block: @ruby_end_block ref, + int index: int ref, + unique int child: @ruby_end_block_child_type ref +); + +ruby_end_block_def( + unique int id: @ruby_end_block +); + +@ruby_ensure_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_ensure, index] +ruby_ensure_child( + int ruby_ensure: @ruby_ensure ref, + int index: int ref, + unique int child: @ruby_ensure_child_type ref +); + +ruby_ensure_def( + unique int id: @ruby_ensure +); + +ruby_exception_variable_def( + unique int id: @ruby_exception_variable, + int child: @ruby_underscore_lhs ref +); + +@ruby_exceptions_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_exceptions, index] +ruby_exceptions_child( + int ruby_exceptions: @ruby_exceptions ref, + int index: int ref, + unique int child: @ruby_exceptions_child_type ref +); + +ruby_exceptions_def( + unique int id: @ruby_exceptions +); + +ruby_expression_reference_pattern_def( + unique int id: @ruby_expression_reference_pattern, + int value: @ruby_underscore_expression ref +); + +ruby_find_pattern_class( + unique int ruby_find_pattern: @ruby_find_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_find_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_find_pattern, index] +ruby_find_pattern_child( + int ruby_find_pattern: @ruby_find_pattern ref, + int index: int ref, + unique int child: @ruby_find_pattern_child_type ref +); + +ruby_find_pattern_def( + unique int id: @ruby_find_pattern +); + +@ruby_for_pattern_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +ruby_for_def( + unique int id: @ruby_for, + int body: @ruby_do ref, + int pattern: @ruby_for_pattern_type ref, + int value: @ruby_in ref +); + +@ruby_hash_child_type = @ruby_hash_splat_argument | @ruby_pair + +#keyset[ruby_hash, index] +ruby_hash_child( + int ruby_hash: @ruby_hash ref, + int index: int ref, + unique int child: @ruby_hash_child_type ref +); + +ruby_hash_def( + unique int id: @ruby_hash +); + +ruby_hash_pattern_class( + unique int ruby_hash_pattern: @ruby_hash_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_hash_pattern_child_type = @ruby_hash_splat_parameter | @ruby_keyword_pattern | @ruby_token_hash_splat_nil + +#keyset[ruby_hash_pattern, index] +ruby_hash_pattern_child( + int ruby_hash_pattern: @ruby_hash_pattern ref, + int index: int ref, + unique int child: @ruby_hash_pattern_child_type ref +); + +ruby_hash_pattern_def( + unique int id: @ruby_hash_pattern +); + +ruby_hash_splat_argument_child( + unique int ruby_hash_splat_argument: @ruby_hash_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_hash_splat_argument_def( + unique int id: @ruby_hash_splat_argument +); + +ruby_hash_splat_parameter_name( + unique int ruby_hash_splat_parameter: @ruby_hash_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_hash_splat_parameter_def( + unique int id: @ruby_hash_splat_parameter +); + +@ruby_heredoc_body_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_heredoc_content | @ruby_token_heredoc_end + +#keyset[ruby_heredoc_body, index] +ruby_heredoc_body_child( + int ruby_heredoc_body: @ruby_heredoc_body ref, + int index: int ref, + unique int child: @ruby_heredoc_body_child_type ref +); + +ruby_heredoc_body_def( + unique int id: @ruby_heredoc_body +); + +@ruby_if_alternative_type = @ruby_else | @ruby_elsif + +ruby_if_alternative( + unique int ruby_if: @ruby_if ref, + unique int alternative: @ruby_if_alternative_type ref +); + +ruby_if_consequence( + unique int ruby_if: @ruby_if ref, + unique int consequence: @ruby_then ref +); + +ruby_if_def( + unique int id: @ruby_if, + int condition: @ruby_underscore_statement ref +); + +ruby_if_guard_def( + unique int id: @ruby_if_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_if_modifier_def( + unique int id: @ruby_if_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_in_def( + unique int id: @ruby_in, + int child: @ruby_underscore_arg ref +); + +ruby_in_clause_body( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int body: @ruby_then ref +); + +@ruby_in_clause_guard_type = @ruby_if_guard | @ruby_unless_guard + +ruby_in_clause_guard( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int guard: @ruby_in_clause_guard_type ref +); + +ruby_in_clause_def( + unique int id: @ruby_in_clause, + int pattern: @ruby_underscore_pattern_top_expr_body ref +); + +@ruby_interpolation_child_type = @ruby_token_empty_statement | @ruby_underscore_nonlocal_variable | @ruby_underscore_statement + +#keyset[ruby_interpolation, index] +ruby_interpolation_child( + int ruby_interpolation: @ruby_interpolation ref, + int index: int ref, + unique int child: @ruby_interpolation_child_type ref +); + +ruby_interpolation_def( + unique int id: @ruby_interpolation +); + +ruby_keyword_parameter_value( + unique int ruby_keyword_parameter: @ruby_keyword_parameter ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_keyword_parameter_def( + unique int id: @ruby_keyword_parameter, + int name: @ruby_token_identifier ref +); + +@ruby_keyword_pattern_key_type = @ruby_string__ | @ruby_token_hash_key_symbol + +ruby_keyword_pattern_value( + unique int ruby_keyword_pattern: @ruby_keyword_pattern ref, + unique int value: @ruby_underscore_pattern_expr ref +); + +ruby_keyword_pattern_def( + unique int id: @ruby_keyword_pattern, + int key__: @ruby_keyword_pattern_key_type ref +); + +@ruby_lambda_body_type = @ruby_block | @ruby_do_block + +ruby_lambda_parameters( + unique int ruby_lambda: @ruby_lambda ref, + unique int parameters: @ruby_lambda_parameters ref +); + +ruby_lambda_def( + unique int id: @ruby_lambda, + int body: @ruby_lambda_body_type ref +); + +@ruby_lambda_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_lambda_parameters, index] +ruby_lambda_parameters_child( + int ruby_lambda_parameters: @ruby_lambda_parameters ref, + int index: int ref, + unique int child: @ruby_lambda_parameters_child_type ref +); + +ruby_lambda_parameters_def( + unique int id: @ruby_lambda_parameters +); + +@ruby_left_assignment_list_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_left_assignment_list, index] +ruby_left_assignment_list_child( + int ruby_left_assignment_list: @ruby_left_assignment_list ref, + int index: int ref, + unique int child: @ruby_left_assignment_list_child_type ref +); + +ruby_left_assignment_list_def( + unique int id: @ruby_left_assignment_list +); + +ruby_match_pattern_def( + unique int id: @ruby_match_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_method_body( + unique int ruby_method: @ruby_method ref, + unique int body: @ruby_method_body_type ref +); + +ruby_method_parameters( + unique int ruby_method: @ruby_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_method_def( + unique int id: @ruby_method, + int name: @ruby_underscore_method_name ref +); + +@ruby_method_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_method_parameters, index] +ruby_method_parameters_child( + int ruby_method_parameters: @ruby_method_parameters ref, + int index: int ref, + unique int child: @ruby_method_parameters_child_type ref +); + +ruby_method_parameters_def( + unique int id: @ruby_method_parameters +); + +ruby_module_body( + unique int ruby_module: @ruby_module ref, + unique int body: @ruby_body_statement ref +); + +@ruby_module_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_module_def( + unique int id: @ruby_module, + int name: @ruby_module_name_type ref +); + +ruby_next_child( + unique int ruby_next: @ruby_next ref, + unique int child: @ruby_argument_list ref +); + +ruby_next_def( + unique int id: @ruby_next +); + +case @ruby_operator_assignment.operator of + 0 = @ruby_operator_assignment_percentequal +| 1 = @ruby_operator_assignment_ampersandampersandequal +| 2 = @ruby_operator_assignment_ampersandequal +| 3 = @ruby_operator_assignment_starstarequal +| 4 = @ruby_operator_assignment_starequal +| 5 = @ruby_operator_assignment_plusequal +| 6 = @ruby_operator_assignment_minusequal +| 7 = @ruby_operator_assignment_slashequal +| 8 = @ruby_operator_assignment_langlelangleequal +| 9 = @ruby_operator_assignment_ranglerangleequal +| 10 = @ruby_operator_assignment_caretequal +| 11 = @ruby_operator_assignment_pipeequal +| 12 = @ruby_operator_assignment_pipepipeequal +; + + +@ruby_operator_assignment_right_type = @ruby_rescue_modifier | @ruby_underscore_expression + +ruby_operator_assignment_def( + unique int id: @ruby_operator_assignment, + int left: @ruby_underscore_lhs ref, + int operator: int ref, + int right: @ruby_operator_assignment_right_type ref +); + +ruby_optional_parameter_def( + unique int id: @ruby_optional_parameter, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_arg ref +); + +@ruby_pair_key_type = @ruby_string__ | @ruby_token_hash_key_symbol | @ruby_underscore_arg + +ruby_pair_value( + unique int ruby_pair: @ruby_pair ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_pair_def( + unique int id: @ruby_pair, + int key__: @ruby_pair_key_type ref +); + +ruby_parenthesized_pattern_def( + unique int id: @ruby_parenthesized_pattern, + int child: @ruby_underscore_pattern_expr ref +); + +@ruby_parenthesized_statements_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_parenthesized_statements, index] +ruby_parenthesized_statements_child( + int ruby_parenthesized_statements: @ruby_parenthesized_statements ref, + int index: int ref, + unique int child: @ruby_parenthesized_statements_child_type ref +); + +ruby_parenthesized_statements_def( + unique int id: @ruby_parenthesized_statements +); + +@ruby_pattern_child_type = @ruby_splat_argument | @ruby_underscore_arg + +ruby_pattern_def( + unique int id: @ruby_pattern, + int child: @ruby_pattern_child_type ref +); + +@ruby_program_child_type = @ruby_token_empty_statement | @ruby_token_uninterpreted | @ruby_underscore_statement + +#keyset[ruby_program, index] +ruby_program_child( + int ruby_program: @ruby_program ref, + int index: int ref, + unique int child: @ruby_program_child_type ref +); + +ruby_program_def( + unique int id: @ruby_program +); + +@ruby_range_begin_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_begin( + unique int ruby_range: @ruby_range ref, + unique int begin: @ruby_range_begin_type ref +); + +@ruby_range_end_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_end( + unique int ruby_range: @ruby_range ref, + unique int end: @ruby_range_end_type ref +); + +case @ruby_range.operator of + 0 = @ruby_range_dotdot +| 1 = @ruby_range_dotdotdot +; + + +ruby_range_def( + unique int id: @ruby_range, + int operator: int ref +); + +@ruby_rational_child_type = @ruby_token_float | @ruby_token_integer + +ruby_rational_def( + unique int id: @ruby_rational, + int child: @ruby_rational_child_type ref +); + +ruby_redo_child( + unique int ruby_redo: @ruby_redo ref, + unique int child: @ruby_argument_list ref +); + +ruby_redo_def( + unique int id: @ruby_redo +); + +@ruby_regex_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_regex, index] +ruby_regex_child( + int ruby_regex: @ruby_regex ref, + int index: int ref, + unique int child: @ruby_regex_child_type ref +); + +ruby_regex_def( + unique int id: @ruby_regex +); + +ruby_rescue_body( + unique int ruby_rescue: @ruby_rescue ref, + unique int body: @ruby_then ref +); + +ruby_rescue_exceptions( + unique int ruby_rescue: @ruby_rescue ref, + unique int exceptions: @ruby_exceptions ref +); + +ruby_rescue_variable( + unique int ruby_rescue: @ruby_rescue ref, + unique int variable: @ruby_exception_variable ref +); + +ruby_rescue_def( + unique int id: @ruby_rescue +); + +@ruby_rescue_modifier_body_type = @ruby_underscore_arg | @ruby_underscore_statement + +ruby_rescue_modifier_def( + unique int id: @ruby_rescue_modifier, + int body: @ruby_rescue_modifier_body_type ref, + int handler: @ruby_underscore_expression ref +); + +ruby_rest_assignment_child( + unique int ruby_rest_assignment: @ruby_rest_assignment ref, + unique int child: @ruby_underscore_lhs ref +); + +ruby_rest_assignment_def( + unique int id: @ruby_rest_assignment +); + +ruby_retry_child( + unique int ruby_retry: @ruby_retry ref, + unique int child: @ruby_argument_list ref +); + +ruby_retry_def( + unique int id: @ruby_retry +); + +ruby_return_child( + unique int ruby_return: @ruby_return ref, + unique int child: @ruby_argument_list ref +); + +ruby_return_def( + unique int id: @ruby_return +); + +@ruby_right_assignment_list_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_right_assignment_list, index] +ruby_right_assignment_list_child( + int ruby_right_assignment_list: @ruby_right_assignment_list ref, + int index: int ref, + unique int child: @ruby_right_assignment_list_child_type ref +); + +ruby_right_assignment_list_def( + unique int id: @ruby_right_assignment_list +); + +@ruby_scope_resolution_scope_type = @ruby_underscore_pattern_constant | @ruby_underscore_primary + +ruby_scope_resolution_scope( + unique int ruby_scope_resolution: @ruby_scope_resolution ref, + unique int scope: @ruby_scope_resolution_scope_type ref +); + +ruby_scope_resolution_def( + unique int id: @ruby_scope_resolution, + int name: @ruby_token_constant ref +); + +ruby_setter_def( + unique int id: @ruby_setter, + int name: @ruby_token_identifier ref +); + +ruby_singleton_class_body( + unique int ruby_singleton_class: @ruby_singleton_class ref, + unique int body: @ruby_body_statement ref +); + +ruby_singleton_class_def( + unique int id: @ruby_singleton_class, + int value: @ruby_underscore_arg ref +); + +@ruby_singleton_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_singleton_method_body( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int body: @ruby_singleton_method_body_type ref +); + +@ruby_singleton_method_object_type = @ruby_underscore_arg | @ruby_underscore_variable + +ruby_singleton_method_parameters( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_singleton_method_def( + unique int id: @ruby_singleton_method, + int name: @ruby_underscore_method_name ref, + int object: @ruby_singleton_method_object_type ref +); + +ruby_splat_argument_child( + unique int ruby_splat_argument: @ruby_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_splat_argument_def( + unique int id: @ruby_splat_argument +); + +ruby_splat_parameter_name( + unique int ruby_splat_parameter: @ruby_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_splat_parameter_def( + unique int id: @ruby_splat_parameter +); + +@ruby_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_string__, index] +ruby_string_child( + int ruby_string__: @ruby_string__ ref, + int index: int ref, + unique int child: @ruby_string_child_type ref +); + +ruby_string_def( + unique int id: @ruby_string__ +); + +#keyset[ruby_string_array, index] +ruby_string_array_child( + int ruby_string_array: @ruby_string_array ref, + int index: int ref, + unique int child: @ruby_bare_string ref +); + +ruby_string_array_def( + unique int id: @ruby_string_array +); + +@ruby_subshell_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_subshell, index] +ruby_subshell_child( + int ruby_subshell: @ruby_subshell ref, + int index: int ref, + unique int child: @ruby_subshell_child_type ref +); + +ruby_subshell_def( + unique int id: @ruby_subshell +); + +ruby_superclass_def( + unique int id: @ruby_superclass, + int child: @ruby_underscore_expression ref +); + +#keyset[ruby_symbol_array, index] +ruby_symbol_array_child( + int ruby_symbol_array: @ruby_symbol_array ref, + int index: int ref, + unique int child: @ruby_bare_symbol ref +); + +ruby_symbol_array_def( + unique int id: @ruby_symbol_array +); + +ruby_test_pattern_def( + unique int id: @ruby_test_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_then_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_then, index] +ruby_then_child( + int ruby_then: @ruby_then ref, + int index: int ref, + unique int child: @ruby_then_child_type ref +); + +ruby_then_def( + unique int id: @ruby_then +); + +@ruby_unary_operand_type = @ruby_parenthesized_statements | @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_unary.operator of + 0 = @ruby_unary_bang +| 1 = @ruby_unary_plus +| 2 = @ruby_unary_minus +| 3 = @ruby_unary_definedquestion +| 4 = @ruby_unary_not +| 5 = @ruby_unary_tilde +; + + +ruby_unary_def( + unique int id: @ruby_unary, + int operand: @ruby_unary_operand_type ref, + int operator: int ref +); + +#keyset[ruby_undef, index] +ruby_undef_child( + int ruby_undef: @ruby_undef ref, + int index: int ref, + unique int child: @ruby_underscore_method_name ref +); + +ruby_undef_def( + unique int id: @ruby_undef +); + +@ruby_unless_alternative_type = @ruby_else | @ruby_elsif + +ruby_unless_alternative( + unique int ruby_unless: @ruby_unless ref, + unique int alternative: @ruby_unless_alternative_type ref +); + +ruby_unless_consequence( + unique int ruby_unless: @ruby_unless ref, + unique int consequence: @ruby_then ref +); + +ruby_unless_def( + unique int id: @ruby_unless, + int condition: @ruby_underscore_statement ref +); + +ruby_unless_guard_def( + unique int id: @ruby_unless_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_unless_modifier_def( + unique int id: @ruby_unless_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_until_def( + unique int id: @ruby_until, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_until_modifier_def( + unique int id: @ruby_until_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +@ruby_variable_reference_pattern_name_type = @ruby_token_identifier | @ruby_underscore_nonlocal_variable + +ruby_variable_reference_pattern_def( + unique int id: @ruby_variable_reference_pattern, + int name: @ruby_variable_reference_pattern_name_type ref +); + +ruby_when_body( + unique int ruby_when: @ruby_when ref, + unique int body: @ruby_then ref +); + +#keyset[ruby_when, index] +ruby_when_pattern( + int ruby_when: @ruby_when ref, + int index: int ref, + unique int pattern: @ruby_pattern ref +); + +ruby_when_def( + unique int id: @ruby_when +); + +ruby_while_def( + unique int id: @ruby_while, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_while_modifier_def( + unique int id: @ruby_while_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_yield_child( + unique int ruby_yield: @ruby_yield ref, + unique int child: @ruby_argument_list ref +); + +ruby_yield_def( + unique int id: @ruby_yield +); + +ruby_tokeninfo( + unique int id: @ruby_token, + int kind: int ref, + string value: string ref +); + +case @ruby_token.kind of + 0 = @ruby_reserved_word +| 1 = @ruby_token_character +| 2 = @ruby_token_class_variable +| 3 = @ruby_token_comment +| 4 = @ruby_token_constant +| 5 = @ruby_token_empty_statement +| 6 = @ruby_token_encoding +| 7 = @ruby_token_escape_sequence +| 8 = @ruby_token_false +| 9 = @ruby_token_file +| 10 = @ruby_token_float +| 11 = @ruby_token_forward_argument +| 12 = @ruby_token_forward_parameter +| 13 = @ruby_token_global_variable +| 14 = @ruby_token_hash_key_symbol +| 15 = @ruby_token_hash_splat_nil +| 16 = @ruby_token_heredoc_beginning +| 17 = @ruby_token_heredoc_content +| 18 = @ruby_token_heredoc_end +| 19 = @ruby_token_identifier +| 20 = @ruby_token_instance_variable +| 21 = @ruby_token_integer +| 22 = @ruby_token_line +| 23 = @ruby_token_nil +| 24 = @ruby_token_operator +| 25 = @ruby_token_self +| 26 = @ruby_token_simple_symbol +| 27 = @ruby_token_string_content +| 28 = @ruby_token_super +| 29 = @ruby_token_true +| 30 = @ruby_token_uninterpreted +; + + +@ruby_ast_node = @ruby_alias | @ruby_alternative_pattern | @ruby_argument_list | @ruby_array | @ruby_array_pattern | @ruby_as_pattern | @ruby_assignment | @ruby_bare_string | @ruby_bare_symbol | @ruby_begin | @ruby_begin_block | @ruby_binary | @ruby_block | @ruby_block_argument | @ruby_block_body | @ruby_block_parameter | @ruby_block_parameters | @ruby_body_statement | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_complex | @ruby_conditional | @ruby_delimited_symbol | @ruby_destructured_left_assignment | @ruby_destructured_parameter | @ruby_do | @ruby_do_block | @ruby_element_reference | @ruby_else | @ruby_elsif | @ruby_end_block | @ruby_ensure | @ruby_exception_variable | @ruby_exceptions | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_for | @ruby_hash | @ruby_hash_pattern | @ruby_hash_splat_argument | @ruby_hash_splat_parameter | @ruby_heredoc_body | @ruby_if | @ruby_if_guard | @ruby_if_modifier | @ruby_in | @ruby_in_clause | @ruby_interpolation | @ruby_keyword_parameter | @ruby_keyword_pattern | @ruby_lambda | @ruby_lambda_parameters | @ruby_left_assignment_list | @ruby_match_pattern | @ruby_method | @ruby_method_parameters | @ruby_module | @ruby_next | @ruby_operator_assignment | @ruby_optional_parameter | @ruby_pair | @ruby_parenthesized_pattern | @ruby_parenthesized_statements | @ruby_pattern | @ruby_program | @ruby_range | @ruby_rational | @ruby_redo | @ruby_regex | @ruby_rescue | @ruby_rescue_modifier | @ruby_rest_assignment | @ruby_retry | @ruby_return | @ruby_right_assignment_list | @ruby_scope_resolution | @ruby_setter | @ruby_singleton_class | @ruby_singleton_method | @ruby_splat_argument | @ruby_splat_parameter | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_superclass | @ruby_symbol_array | @ruby_test_pattern | @ruby_then | @ruby_token | @ruby_unary | @ruby_undef | @ruby_unless | @ruby_unless_guard | @ruby_unless_modifier | @ruby_until | @ruby_until_modifier | @ruby_variable_reference_pattern | @ruby_when | @ruby_while | @ruby_while_modifier | @ruby_yield + +ruby_ast_node_location( + unique int node: @ruby_ast_node ref, + int loc: @location_default ref +); + +#keyset[parent, parent_index] +ruby_ast_node_parent( + unique int node: @ruby_ast_node ref, + int parent: @ruby_ast_node ref, + int parent_index: int ref +); + +/*- Erb dbscheme -*/ +erb_comment_directive_child( + unique int erb_comment_directive: @erb_comment_directive ref, + unique int child: @erb_token_comment ref +); + +erb_comment_directive_def( + unique int id: @erb_comment_directive +); + +erb_directive_child( + unique int erb_directive: @erb_directive ref, + unique int child: @erb_token_code ref +); + +erb_directive_def( + unique int id: @erb_directive +); + +erb_graphql_directive_child( + unique int erb_graphql_directive: @erb_graphql_directive ref, + unique int child: @erb_token_code ref +); + +erb_graphql_directive_def( + unique int id: @erb_graphql_directive +); + +erb_output_directive_child( + unique int erb_output_directive: @erb_output_directive ref, + unique int child: @erb_token_code ref +); + +erb_output_directive_def( + unique int id: @erb_output_directive +); + +@erb_template_child_type = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_token_content + +#keyset[erb_template, index] +erb_template_child( + int erb_template: @erb_template ref, + int index: int ref, + unique int child: @erb_template_child_type ref +); + +erb_template_def( + unique int id: @erb_template +); + +erb_tokeninfo( + unique int id: @erb_token, + int kind: int ref, + string value: string ref +); + +case @erb_token.kind of + 0 = @erb_reserved_word +| 1 = @erb_token_code +| 2 = @erb_token_comment +| 3 = @erb_token_content +; + + +@erb_ast_node = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_template | @erb_token + +erb_ast_node_location( + unique int node: @erb_ast_node ref, + int loc: @location_default ref +); + +#keyset[parent, parent_index] +erb_ast_node_parent( + unique int node: @erb_ast_node ref, + int parent: @erb_ast_node ref, + int parent_index: int ref +); + diff --git a/ruby/downgrades/dc51d416301df12df5b70fbc4338de6cc1f82bfd/ruby.dbscheme b/ruby/downgrades/dc51d416301df12df5b70fbc4338de6cc1f82bfd/ruby.dbscheme new file mode 100644 index 000000000000..40a6b0a5e811 --- /dev/null +++ b/ruby/downgrades/dc51d416301df12df5b70fbc4338de6cc1f82bfd/ruby.dbscheme @@ -0,0 +1,1526 @@ +// CodeQL database schema for Ruby +// Automatically generated from the tree-sitter grammar; do not edit + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Ruby dbscheme -*/ +@ruby_underscore_arg = @ruby_assignment | @ruby_binary | @ruby_conditional | @ruby_operator_assignment | @ruby_range | @ruby_unary | @ruby_underscore_primary + +@ruby_underscore_call_operator = @ruby_reserved_word + +@ruby_underscore_expression = @ruby_assignment | @ruby_binary | @ruby_break | @ruby_call | @ruby_match_pattern | @ruby_next | @ruby_operator_assignment | @ruby_return | @ruby_test_pattern | @ruby_unary | @ruby_underscore_arg | @ruby_yield + +@ruby_underscore_lhs = @ruby_call | @ruby_element_reference | @ruby_scope_resolution | @ruby_token_false | @ruby_token_nil | @ruby_token_true | @ruby_underscore_variable + +@ruby_underscore_method_name = @ruby_delimited_symbol | @ruby_setter | @ruby_token_constant | @ruby_token_identifier | @ruby_token_operator | @ruby_token_simple_symbol | @ruby_underscore_nonlocal_variable + +@ruby_underscore_nonlocal_variable = @ruby_token_class_variable | @ruby_token_global_variable | @ruby_token_instance_variable + +@ruby_underscore_pattern_constant = @ruby_scope_resolution | @ruby_token_constant + +@ruby_underscore_pattern_expr = @ruby_alternative_pattern | @ruby_as_pattern | @ruby_underscore_pattern_expr_basic + +@ruby_underscore_pattern_expr_basic = @ruby_array_pattern | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_parenthesized_pattern | @ruby_range | @ruby_token_identifier | @ruby_underscore_pattern_constant | @ruby_underscore_pattern_primitive | @ruby_variable_reference_pattern + +@ruby_underscore_pattern_primitive = @ruby_delimited_symbol | @ruby_lambda | @ruby_regex | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_encoding | @ruby_token_false | @ruby_token_file | @ruby_token_heredoc_beginning | @ruby_token_line | @ruby_token_nil | @ruby_token_self | @ruby_token_simple_symbol | @ruby_token_true | @ruby_unary | @ruby_underscore_simple_numeric + +@ruby_underscore_pattern_top_expr_body = @ruby_array_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_underscore_pattern_expr + +@ruby_underscore_primary = @ruby_array | @ruby_begin | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_delimited_symbol | @ruby_for | @ruby_hash | @ruby_if | @ruby_lambda | @ruby_method | @ruby_module | @ruby_next | @ruby_parenthesized_statements | @ruby_redo | @ruby_regex | @ruby_retry | @ruby_return | @ruby_singleton_class | @ruby_singleton_method | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_character | @ruby_token_heredoc_beginning | @ruby_token_simple_symbol | @ruby_unary | @ruby_underscore_lhs | @ruby_underscore_simple_numeric | @ruby_unless | @ruby_until | @ruby_while | @ruby_yield + +@ruby_underscore_simple_numeric = @ruby_complex | @ruby_rational | @ruby_token_float | @ruby_token_integer + +@ruby_underscore_statement = @ruby_alias | @ruby_begin_block | @ruby_end_block | @ruby_if_modifier | @ruby_rescue_modifier | @ruby_undef | @ruby_underscore_expression | @ruby_unless_modifier | @ruby_until_modifier | @ruby_while_modifier + +@ruby_underscore_variable = @ruby_token_constant | @ruby_token_identifier | @ruby_token_self | @ruby_token_super | @ruby_underscore_nonlocal_variable + +ruby_alias_def( + unique int id: @ruby_alias, + int alias: @ruby_underscore_method_name ref, + int name: @ruby_underscore_method_name ref +); + +#keyset[ruby_alternative_pattern, index] +ruby_alternative_pattern_alternatives( + int ruby_alternative_pattern: @ruby_alternative_pattern ref, + int index: int ref, + unique int alternatives: @ruby_underscore_pattern_expr_basic ref +); + +ruby_alternative_pattern_def( + unique int id: @ruby_alternative_pattern +); + +@ruby_argument_list_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_argument_list, index] +ruby_argument_list_child( + int ruby_argument_list: @ruby_argument_list ref, + int index: int ref, + unique int child: @ruby_argument_list_child_type ref +); + +ruby_argument_list_def( + unique int id: @ruby_argument_list +); + +@ruby_array_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_array, index] +ruby_array_child( + int ruby_array: @ruby_array ref, + int index: int ref, + unique int child: @ruby_array_child_type ref +); + +ruby_array_def( + unique int id: @ruby_array +); + +ruby_array_pattern_class( + unique int ruby_array_pattern: @ruby_array_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_array_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_array_pattern, index] +ruby_array_pattern_child( + int ruby_array_pattern: @ruby_array_pattern ref, + int index: int ref, + unique int child: @ruby_array_pattern_child_type ref +); + +ruby_array_pattern_def( + unique int id: @ruby_array_pattern +); + +ruby_as_pattern_def( + unique int id: @ruby_as_pattern, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_pattern_expr ref +); + +@ruby_assignment_left_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +@ruby_assignment_right_type = @ruby_rescue_modifier | @ruby_right_assignment_list | @ruby_splat_argument | @ruby_underscore_expression + +ruby_assignment_def( + unique int id: @ruby_assignment, + int left: @ruby_assignment_left_type ref, + int right: @ruby_assignment_right_type ref +); + +@ruby_bare_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_string, index] +ruby_bare_string_child( + int ruby_bare_string: @ruby_bare_string ref, + int index: int ref, + unique int child: @ruby_bare_string_child_type ref +); + +ruby_bare_string_def( + unique int id: @ruby_bare_string +); + +@ruby_bare_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_symbol, index] +ruby_bare_symbol_child( + int ruby_bare_symbol: @ruby_bare_symbol ref, + int index: int ref, + unique int child: @ruby_bare_symbol_child_type ref +); + +ruby_bare_symbol_def( + unique int id: @ruby_bare_symbol +); + +@ruby_begin_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin, index] +ruby_begin_child( + int ruby_begin: @ruby_begin ref, + int index: int ref, + unique int child: @ruby_begin_child_type ref +); + +ruby_begin_def( + unique int id: @ruby_begin +); + +@ruby_begin_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin_block, index] +ruby_begin_block_child( + int ruby_begin_block: @ruby_begin_block ref, + int index: int ref, + unique int child: @ruby_begin_block_child_type ref +); + +ruby_begin_block_def( + unique int id: @ruby_begin_block +); + +@ruby_binary_left_type = @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_binary.operator of + 0 = @ruby_binary_bangequal +| 1 = @ruby_binary_bangtilde +| 2 = @ruby_binary_percent +| 3 = @ruby_binary_ampersand +| 4 = @ruby_binary_ampersandampersand +| 5 = @ruby_binary_star +| 6 = @ruby_binary_starstar +| 7 = @ruby_binary_plus +| 8 = @ruby_binary_minus +| 9 = @ruby_binary_slash +| 10 = @ruby_binary_langle +| 11 = @ruby_binary_langlelangle +| 12 = @ruby_binary_langleequal +| 13 = @ruby_binary_langleequalrangle +| 14 = @ruby_binary_equalequal +| 15 = @ruby_binary_equalequalequal +| 16 = @ruby_binary_equaltilde +| 17 = @ruby_binary_rangle +| 18 = @ruby_binary_rangleequal +| 19 = @ruby_binary_ranglerangle +| 20 = @ruby_binary_caret +| 21 = @ruby_binary_and +| 22 = @ruby_binary_or +| 23 = @ruby_binary_pipe +| 24 = @ruby_binary_pipepipe +; + + +ruby_binary_def( + unique int id: @ruby_binary, + int left: @ruby_binary_left_type ref, + int operator: int ref, + int right: @ruby_underscore_expression ref +); + +ruby_block_body( + unique int ruby_block: @ruby_block ref, + unique int body: @ruby_block_body ref +); + +ruby_block_parameters( + unique int ruby_block: @ruby_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_block_def( + unique int id: @ruby_block +); + +ruby_block_argument_child( + unique int ruby_block_argument: @ruby_block_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_block_argument_def( + unique int id: @ruby_block_argument +); + +@ruby_block_body_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_block_body, index] +ruby_block_body_child( + int ruby_block_body: @ruby_block_body ref, + int index: int ref, + unique int child: @ruby_block_body_child_type ref +); + +ruby_block_body_def( + unique int id: @ruby_block_body +); + +ruby_block_parameter_name( + unique int ruby_block_parameter: @ruby_block_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_block_parameter_def( + unique int id: @ruby_block_parameter +); + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_locals( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int locals: @ruby_token_identifier ref +); + +@ruby_block_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_child( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int child: @ruby_block_parameters_child_type ref +); + +ruby_block_parameters_def( + unique int id: @ruby_block_parameters +); + +@ruby_body_statement_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_body_statement, index] +ruby_body_statement_child( + int ruby_body_statement: @ruby_body_statement ref, + int index: int ref, + unique int child: @ruby_body_statement_child_type ref +); + +ruby_body_statement_def( + unique int id: @ruby_body_statement +); + +ruby_break_child( + unique int ruby_break: @ruby_break ref, + unique int child: @ruby_argument_list ref +); + +ruby_break_def( + unique int id: @ruby_break +); + +ruby_call_arguments( + unique int ruby_call: @ruby_call ref, + unique int arguments: @ruby_argument_list ref +); + +@ruby_call_block_type = @ruby_block | @ruby_do_block + +ruby_call_block( + unique int ruby_call: @ruby_call ref, + unique int block: @ruby_call_block_type ref +); + +@ruby_call_method_type = @ruby_token_operator | @ruby_underscore_variable + +ruby_call_method( + unique int ruby_call: @ruby_call ref, + unique int method: @ruby_call_method_type ref +); + +ruby_call_operator( + unique int ruby_call: @ruby_call ref, + unique int operator: @ruby_underscore_call_operator ref +); + +ruby_call_receiver( + unique int ruby_call: @ruby_call ref, + unique int receiver: @ruby_underscore_primary ref +); + +ruby_call_def( + unique int id: @ruby_call +); + +ruby_case_value( + unique int ruby_case__: @ruby_case__ ref, + unique int value: @ruby_underscore_statement ref +); + +@ruby_case_child_type = @ruby_else | @ruby_when + +#keyset[ruby_case__, index] +ruby_case_child( + int ruby_case__: @ruby_case__ ref, + int index: int ref, + unique int child: @ruby_case_child_type ref +); + +ruby_case_def( + unique int id: @ruby_case__ +); + +#keyset[ruby_case_match, index] +ruby_case_match_clauses( + int ruby_case_match: @ruby_case_match ref, + int index: int ref, + unique int clauses: @ruby_in_clause ref +); + +ruby_case_match_else( + unique int ruby_case_match: @ruby_case_match ref, + unique int else: @ruby_else ref +); + +ruby_case_match_def( + unique int id: @ruby_case_match, + int value: @ruby_underscore_statement ref +); + +#keyset[ruby_chained_string, index] +ruby_chained_string_child( + int ruby_chained_string: @ruby_chained_string ref, + int index: int ref, + unique int child: @ruby_string__ ref +); + +ruby_chained_string_def( + unique int id: @ruby_chained_string +); + +ruby_class_body( + unique int ruby_class: @ruby_class ref, + unique int body: @ruby_body_statement ref +); + +@ruby_class_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_class_superclass( + unique int ruby_class: @ruby_class ref, + unique int superclass: @ruby_superclass ref +); + +ruby_class_def( + unique int id: @ruby_class, + int name: @ruby_class_name_type ref +); + +@ruby_complex_child_type = @ruby_rational | @ruby_token_float | @ruby_token_integer + +ruby_complex_def( + unique int id: @ruby_complex, + int child: @ruby_complex_child_type ref +); + +ruby_conditional_def( + unique int id: @ruby_conditional, + int alternative: @ruby_underscore_arg ref, + int condition: @ruby_underscore_arg ref, + int consequence: @ruby_underscore_arg ref +); + +@ruby_delimited_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_delimited_symbol, index] +ruby_delimited_symbol_child( + int ruby_delimited_symbol: @ruby_delimited_symbol ref, + int index: int ref, + unique int child: @ruby_delimited_symbol_child_type ref +); + +ruby_delimited_symbol_def( + unique int id: @ruby_delimited_symbol +); + +@ruby_destructured_left_assignment_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_destructured_left_assignment, index] +ruby_destructured_left_assignment_child( + int ruby_destructured_left_assignment: @ruby_destructured_left_assignment ref, + int index: int ref, + unique int child: @ruby_destructured_left_assignment_child_type ref +); + +ruby_destructured_left_assignment_def( + unique int id: @ruby_destructured_left_assignment +); + +@ruby_destructured_parameter_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_destructured_parameter, index] +ruby_destructured_parameter_child( + int ruby_destructured_parameter: @ruby_destructured_parameter ref, + int index: int ref, + unique int child: @ruby_destructured_parameter_child_type ref +); + +ruby_destructured_parameter_def( + unique int id: @ruby_destructured_parameter +); + +@ruby_do_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_do, index] +ruby_do_child( + int ruby_do: @ruby_do ref, + int index: int ref, + unique int child: @ruby_do_child_type ref +); + +ruby_do_def( + unique int id: @ruby_do +); + +ruby_do_block_body( + unique int ruby_do_block: @ruby_do_block ref, + unique int body: @ruby_body_statement ref +); + +ruby_do_block_parameters( + unique int ruby_do_block: @ruby_do_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_do_block_def( + unique int id: @ruby_do_block +); + +@ruby_element_reference_block_type = @ruby_block | @ruby_do_block + +ruby_element_reference_block( + unique int ruby_element_reference: @ruby_element_reference ref, + unique int block: @ruby_element_reference_block_type ref +); + +@ruby_element_reference_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_element_reference, index] +ruby_element_reference_child( + int ruby_element_reference: @ruby_element_reference ref, + int index: int ref, + unique int child: @ruby_element_reference_child_type ref +); + +ruby_element_reference_def( + unique int id: @ruby_element_reference, + int object: @ruby_underscore_primary ref +); + +@ruby_else_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_else, index] +ruby_else_child( + int ruby_else: @ruby_else ref, + int index: int ref, + unique int child: @ruby_else_child_type ref +); + +ruby_else_def( + unique int id: @ruby_else +); + +@ruby_elsif_alternative_type = @ruby_else | @ruby_elsif + +ruby_elsif_alternative( + unique int ruby_elsif: @ruby_elsif ref, + unique int alternative: @ruby_elsif_alternative_type ref +); + +ruby_elsif_consequence( + unique int ruby_elsif: @ruby_elsif ref, + unique int consequence: @ruby_then ref +); + +ruby_elsif_def( + unique int id: @ruby_elsif, + int condition: @ruby_underscore_statement ref +); + +@ruby_end_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_end_block, index] +ruby_end_block_child( + int ruby_end_block: @ruby_end_block ref, + int index: int ref, + unique int child: @ruby_end_block_child_type ref +); + +ruby_end_block_def( + unique int id: @ruby_end_block +); + +@ruby_ensure_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_ensure, index] +ruby_ensure_child( + int ruby_ensure: @ruby_ensure ref, + int index: int ref, + unique int child: @ruby_ensure_child_type ref +); + +ruby_ensure_def( + unique int id: @ruby_ensure +); + +ruby_exception_variable_def( + unique int id: @ruby_exception_variable, + int child: @ruby_underscore_lhs ref +); + +@ruby_exceptions_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_exceptions, index] +ruby_exceptions_child( + int ruby_exceptions: @ruby_exceptions ref, + int index: int ref, + unique int child: @ruby_exceptions_child_type ref +); + +ruby_exceptions_def( + unique int id: @ruby_exceptions +); + +ruby_expression_reference_pattern_def( + unique int id: @ruby_expression_reference_pattern, + int value: @ruby_underscore_expression ref +); + +ruby_find_pattern_class( + unique int ruby_find_pattern: @ruby_find_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_find_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_find_pattern, index] +ruby_find_pattern_child( + int ruby_find_pattern: @ruby_find_pattern ref, + int index: int ref, + unique int child: @ruby_find_pattern_child_type ref +); + +ruby_find_pattern_def( + unique int id: @ruby_find_pattern +); + +@ruby_for_pattern_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +ruby_for_def( + unique int id: @ruby_for, + int body: @ruby_do ref, + int pattern: @ruby_for_pattern_type ref, + int value: @ruby_in ref +); + +@ruby_hash_child_type = @ruby_hash_splat_argument | @ruby_pair + +#keyset[ruby_hash, index] +ruby_hash_child( + int ruby_hash: @ruby_hash ref, + int index: int ref, + unique int child: @ruby_hash_child_type ref +); + +ruby_hash_def( + unique int id: @ruby_hash +); + +ruby_hash_pattern_class( + unique int ruby_hash_pattern: @ruby_hash_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_hash_pattern_child_type = @ruby_hash_splat_parameter | @ruby_keyword_pattern | @ruby_token_hash_splat_nil + +#keyset[ruby_hash_pattern, index] +ruby_hash_pattern_child( + int ruby_hash_pattern: @ruby_hash_pattern ref, + int index: int ref, + unique int child: @ruby_hash_pattern_child_type ref +); + +ruby_hash_pattern_def( + unique int id: @ruby_hash_pattern +); + +ruby_hash_splat_argument_child( + unique int ruby_hash_splat_argument: @ruby_hash_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_hash_splat_argument_def( + unique int id: @ruby_hash_splat_argument +); + +ruby_hash_splat_parameter_name( + unique int ruby_hash_splat_parameter: @ruby_hash_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_hash_splat_parameter_def( + unique int id: @ruby_hash_splat_parameter +); + +@ruby_heredoc_body_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_heredoc_content | @ruby_token_heredoc_end + +#keyset[ruby_heredoc_body, index] +ruby_heredoc_body_child( + int ruby_heredoc_body: @ruby_heredoc_body ref, + int index: int ref, + unique int child: @ruby_heredoc_body_child_type ref +); + +ruby_heredoc_body_def( + unique int id: @ruby_heredoc_body +); + +@ruby_if_alternative_type = @ruby_else | @ruby_elsif + +ruby_if_alternative( + unique int ruby_if: @ruby_if ref, + unique int alternative: @ruby_if_alternative_type ref +); + +ruby_if_consequence( + unique int ruby_if: @ruby_if ref, + unique int consequence: @ruby_then ref +); + +ruby_if_def( + unique int id: @ruby_if, + int condition: @ruby_underscore_statement ref +); + +ruby_if_guard_def( + unique int id: @ruby_if_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_if_modifier_def( + unique int id: @ruby_if_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_in_def( + unique int id: @ruby_in, + int child: @ruby_underscore_arg ref +); + +ruby_in_clause_body( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int body: @ruby_then ref +); + +@ruby_in_clause_guard_type = @ruby_if_guard | @ruby_unless_guard + +ruby_in_clause_guard( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int guard: @ruby_in_clause_guard_type ref +); + +ruby_in_clause_def( + unique int id: @ruby_in_clause, + int pattern: @ruby_underscore_pattern_top_expr_body ref +); + +@ruby_interpolation_child_type = @ruby_token_empty_statement | @ruby_underscore_nonlocal_variable | @ruby_underscore_statement + +#keyset[ruby_interpolation, index] +ruby_interpolation_child( + int ruby_interpolation: @ruby_interpolation ref, + int index: int ref, + unique int child: @ruby_interpolation_child_type ref +); + +ruby_interpolation_def( + unique int id: @ruby_interpolation +); + +ruby_keyword_parameter_value( + unique int ruby_keyword_parameter: @ruby_keyword_parameter ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_keyword_parameter_def( + unique int id: @ruby_keyword_parameter, + int name: @ruby_token_identifier ref +); + +@ruby_keyword_pattern_key_type = @ruby_string__ | @ruby_token_hash_key_symbol + +ruby_keyword_pattern_value( + unique int ruby_keyword_pattern: @ruby_keyword_pattern ref, + unique int value: @ruby_underscore_pattern_expr ref +); + +ruby_keyword_pattern_def( + unique int id: @ruby_keyword_pattern, + int key__: @ruby_keyword_pattern_key_type ref +); + +@ruby_lambda_body_type = @ruby_block | @ruby_do_block + +ruby_lambda_parameters( + unique int ruby_lambda: @ruby_lambda ref, + unique int parameters: @ruby_lambda_parameters ref +); + +ruby_lambda_def( + unique int id: @ruby_lambda, + int body: @ruby_lambda_body_type ref +); + +@ruby_lambda_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_lambda_parameters, index] +ruby_lambda_parameters_child( + int ruby_lambda_parameters: @ruby_lambda_parameters ref, + int index: int ref, + unique int child: @ruby_lambda_parameters_child_type ref +); + +ruby_lambda_parameters_def( + unique int id: @ruby_lambda_parameters +); + +@ruby_left_assignment_list_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_left_assignment_list, index] +ruby_left_assignment_list_child( + int ruby_left_assignment_list: @ruby_left_assignment_list ref, + int index: int ref, + unique int child: @ruby_left_assignment_list_child_type ref +); + +ruby_left_assignment_list_def( + unique int id: @ruby_left_assignment_list +); + +ruby_match_pattern_def( + unique int id: @ruby_match_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_method_body( + unique int ruby_method: @ruby_method ref, + unique int body: @ruby_method_body_type ref +); + +ruby_method_parameters( + unique int ruby_method: @ruby_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_method_def( + unique int id: @ruby_method, + int name: @ruby_underscore_method_name ref +); + +@ruby_method_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_method_parameters, index] +ruby_method_parameters_child( + int ruby_method_parameters: @ruby_method_parameters ref, + int index: int ref, + unique int child: @ruby_method_parameters_child_type ref +); + +ruby_method_parameters_def( + unique int id: @ruby_method_parameters +); + +ruby_module_body( + unique int ruby_module: @ruby_module ref, + unique int body: @ruby_body_statement ref +); + +@ruby_module_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_module_def( + unique int id: @ruby_module, + int name: @ruby_module_name_type ref +); + +ruby_next_child( + unique int ruby_next: @ruby_next ref, + unique int child: @ruby_argument_list ref +); + +ruby_next_def( + unique int id: @ruby_next +); + +case @ruby_operator_assignment.operator of + 0 = @ruby_operator_assignment_percentequal +| 1 = @ruby_operator_assignment_ampersandampersandequal +| 2 = @ruby_operator_assignment_ampersandequal +| 3 = @ruby_operator_assignment_starstarequal +| 4 = @ruby_operator_assignment_starequal +| 5 = @ruby_operator_assignment_plusequal +| 6 = @ruby_operator_assignment_minusequal +| 7 = @ruby_operator_assignment_slashequal +| 8 = @ruby_operator_assignment_langlelangleequal +| 9 = @ruby_operator_assignment_ranglerangleequal +| 10 = @ruby_operator_assignment_caretequal +| 11 = @ruby_operator_assignment_pipeequal +| 12 = @ruby_operator_assignment_pipepipeequal +; + + +@ruby_operator_assignment_right_type = @ruby_rescue_modifier | @ruby_underscore_expression + +ruby_operator_assignment_def( + unique int id: @ruby_operator_assignment, + int left: @ruby_underscore_lhs ref, + int operator: int ref, + int right: @ruby_operator_assignment_right_type ref +); + +ruby_optional_parameter_def( + unique int id: @ruby_optional_parameter, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_arg ref +); + +@ruby_pair_key_type = @ruby_string__ | @ruby_token_hash_key_symbol | @ruby_underscore_arg + +ruby_pair_value( + unique int ruby_pair: @ruby_pair ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_pair_def( + unique int id: @ruby_pair, + int key__: @ruby_pair_key_type ref +); + +ruby_parenthesized_pattern_def( + unique int id: @ruby_parenthesized_pattern, + int child: @ruby_underscore_pattern_expr ref +); + +@ruby_parenthesized_statements_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_parenthesized_statements, index] +ruby_parenthesized_statements_child( + int ruby_parenthesized_statements: @ruby_parenthesized_statements ref, + int index: int ref, + unique int child: @ruby_parenthesized_statements_child_type ref +); + +ruby_parenthesized_statements_def( + unique int id: @ruby_parenthesized_statements +); + +@ruby_pattern_child_type = @ruby_splat_argument | @ruby_underscore_arg + +ruby_pattern_def( + unique int id: @ruby_pattern, + int child: @ruby_pattern_child_type ref +); + +@ruby_program_child_type = @ruby_token_empty_statement | @ruby_token_uninterpreted | @ruby_underscore_statement + +#keyset[ruby_program, index] +ruby_program_child( + int ruby_program: @ruby_program ref, + int index: int ref, + unique int child: @ruby_program_child_type ref +); + +ruby_program_def( + unique int id: @ruby_program +); + +@ruby_range_begin_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_begin( + unique int ruby_range: @ruby_range ref, + unique int begin: @ruby_range_begin_type ref +); + +@ruby_range_end_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_end( + unique int ruby_range: @ruby_range ref, + unique int end: @ruby_range_end_type ref +); + +case @ruby_range.operator of + 0 = @ruby_range_dotdot +| 1 = @ruby_range_dotdotdot +; + + +ruby_range_def( + unique int id: @ruby_range, + int operator: int ref +); + +@ruby_rational_child_type = @ruby_token_float | @ruby_token_integer + +ruby_rational_def( + unique int id: @ruby_rational, + int child: @ruby_rational_child_type ref +); + +ruby_redo_child( + unique int ruby_redo: @ruby_redo ref, + unique int child: @ruby_argument_list ref +); + +ruby_redo_def( + unique int id: @ruby_redo +); + +@ruby_regex_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_regex, index] +ruby_regex_child( + int ruby_regex: @ruby_regex ref, + int index: int ref, + unique int child: @ruby_regex_child_type ref +); + +ruby_regex_def( + unique int id: @ruby_regex +); + +ruby_rescue_body( + unique int ruby_rescue: @ruby_rescue ref, + unique int body: @ruby_then ref +); + +ruby_rescue_exceptions( + unique int ruby_rescue: @ruby_rescue ref, + unique int exceptions: @ruby_exceptions ref +); + +ruby_rescue_variable( + unique int ruby_rescue: @ruby_rescue ref, + unique int variable: @ruby_exception_variable ref +); + +ruby_rescue_def( + unique int id: @ruby_rescue +); + +@ruby_rescue_modifier_body_type = @ruby_underscore_arg | @ruby_underscore_statement + +ruby_rescue_modifier_def( + unique int id: @ruby_rescue_modifier, + int body: @ruby_rescue_modifier_body_type ref, + int handler: @ruby_underscore_expression ref +); + +ruby_rest_assignment_child( + unique int ruby_rest_assignment: @ruby_rest_assignment ref, + unique int child: @ruby_underscore_lhs ref +); + +ruby_rest_assignment_def( + unique int id: @ruby_rest_assignment +); + +ruby_retry_child( + unique int ruby_retry: @ruby_retry ref, + unique int child: @ruby_argument_list ref +); + +ruby_retry_def( + unique int id: @ruby_retry +); + +ruby_return_child( + unique int ruby_return: @ruby_return ref, + unique int child: @ruby_argument_list ref +); + +ruby_return_def( + unique int id: @ruby_return +); + +@ruby_right_assignment_list_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_right_assignment_list, index] +ruby_right_assignment_list_child( + int ruby_right_assignment_list: @ruby_right_assignment_list ref, + int index: int ref, + unique int child: @ruby_right_assignment_list_child_type ref +); + +ruby_right_assignment_list_def( + unique int id: @ruby_right_assignment_list +); + +@ruby_scope_resolution_scope_type = @ruby_underscore_pattern_constant | @ruby_underscore_primary + +ruby_scope_resolution_scope( + unique int ruby_scope_resolution: @ruby_scope_resolution ref, + unique int scope: @ruby_scope_resolution_scope_type ref +); + +ruby_scope_resolution_def( + unique int id: @ruby_scope_resolution, + int name: @ruby_token_constant ref +); + +ruby_setter_def( + unique int id: @ruby_setter, + int name: @ruby_token_identifier ref +); + +ruby_singleton_class_body( + unique int ruby_singleton_class: @ruby_singleton_class ref, + unique int body: @ruby_body_statement ref +); + +ruby_singleton_class_def( + unique int id: @ruby_singleton_class, + int value: @ruby_underscore_arg ref +); + +@ruby_singleton_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_singleton_method_body( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int body: @ruby_singleton_method_body_type ref +); + +@ruby_singleton_method_object_type = @ruby_underscore_arg | @ruby_underscore_variable + +ruby_singleton_method_parameters( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_singleton_method_def( + unique int id: @ruby_singleton_method, + int name: @ruby_underscore_method_name ref, + int object: @ruby_singleton_method_object_type ref +); + +ruby_splat_argument_child( + unique int ruby_splat_argument: @ruby_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_splat_argument_def( + unique int id: @ruby_splat_argument +); + +ruby_splat_parameter_name( + unique int ruby_splat_parameter: @ruby_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_splat_parameter_def( + unique int id: @ruby_splat_parameter +); + +@ruby_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_string__, index] +ruby_string_child( + int ruby_string__: @ruby_string__ ref, + int index: int ref, + unique int child: @ruby_string_child_type ref +); + +ruby_string_def( + unique int id: @ruby_string__ +); + +#keyset[ruby_string_array, index] +ruby_string_array_child( + int ruby_string_array: @ruby_string_array ref, + int index: int ref, + unique int child: @ruby_bare_string ref +); + +ruby_string_array_def( + unique int id: @ruby_string_array +); + +@ruby_subshell_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_subshell, index] +ruby_subshell_child( + int ruby_subshell: @ruby_subshell ref, + int index: int ref, + unique int child: @ruby_subshell_child_type ref +); + +ruby_subshell_def( + unique int id: @ruby_subshell +); + +ruby_superclass_def( + unique int id: @ruby_superclass, + int child: @ruby_underscore_expression ref +); + +#keyset[ruby_symbol_array, index] +ruby_symbol_array_child( + int ruby_symbol_array: @ruby_symbol_array ref, + int index: int ref, + unique int child: @ruby_bare_symbol ref +); + +ruby_symbol_array_def( + unique int id: @ruby_symbol_array +); + +ruby_test_pattern_def( + unique int id: @ruby_test_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_then_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_then, index] +ruby_then_child( + int ruby_then: @ruby_then ref, + int index: int ref, + unique int child: @ruby_then_child_type ref +); + +ruby_then_def( + unique int id: @ruby_then +); + +@ruby_unary_operand_type = @ruby_parenthesized_statements | @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_unary.operator of + 0 = @ruby_unary_bang +| 1 = @ruby_unary_plus +| 2 = @ruby_unary_minus +| 3 = @ruby_unary_definedquestion +| 4 = @ruby_unary_not +| 5 = @ruby_unary_tilde +; + + +ruby_unary_def( + unique int id: @ruby_unary, + int operand: @ruby_unary_operand_type ref, + int operator: int ref +); + +#keyset[ruby_undef, index] +ruby_undef_child( + int ruby_undef: @ruby_undef ref, + int index: int ref, + unique int child: @ruby_underscore_method_name ref +); + +ruby_undef_def( + unique int id: @ruby_undef +); + +@ruby_unless_alternative_type = @ruby_else | @ruby_elsif + +ruby_unless_alternative( + unique int ruby_unless: @ruby_unless ref, + unique int alternative: @ruby_unless_alternative_type ref +); + +ruby_unless_consequence( + unique int ruby_unless: @ruby_unless ref, + unique int consequence: @ruby_then ref +); + +ruby_unless_def( + unique int id: @ruby_unless, + int condition: @ruby_underscore_statement ref +); + +ruby_unless_guard_def( + unique int id: @ruby_unless_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_unless_modifier_def( + unique int id: @ruby_unless_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_until_def( + unique int id: @ruby_until, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_until_modifier_def( + unique int id: @ruby_until_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +@ruby_variable_reference_pattern_name_type = @ruby_token_identifier | @ruby_underscore_nonlocal_variable + +ruby_variable_reference_pattern_def( + unique int id: @ruby_variable_reference_pattern, + int name: @ruby_variable_reference_pattern_name_type ref +); + +ruby_when_body( + unique int ruby_when: @ruby_when ref, + unique int body: @ruby_then ref +); + +#keyset[ruby_when, index] +ruby_when_pattern( + int ruby_when: @ruby_when ref, + int index: int ref, + unique int pattern: @ruby_pattern ref +); + +ruby_when_def( + unique int id: @ruby_when +); + +ruby_while_def( + unique int id: @ruby_while, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_while_modifier_def( + unique int id: @ruby_while_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_yield_child( + unique int ruby_yield: @ruby_yield ref, + unique int child: @ruby_argument_list ref +); + +ruby_yield_def( + unique int id: @ruby_yield +); + +ruby_tokeninfo( + unique int id: @ruby_token, + int kind: int ref, + string value: string ref +); + +case @ruby_token.kind of + 0 = @ruby_reserved_word +| 1 = @ruby_token_character +| 2 = @ruby_token_class_variable +| 3 = @ruby_token_comment +| 4 = @ruby_token_constant +| 5 = @ruby_token_empty_statement +| 6 = @ruby_token_encoding +| 7 = @ruby_token_escape_sequence +| 8 = @ruby_token_false +| 9 = @ruby_token_file +| 10 = @ruby_token_float +| 11 = @ruby_token_forward_argument +| 12 = @ruby_token_forward_parameter +| 13 = @ruby_token_global_variable +| 14 = @ruby_token_hash_key_symbol +| 15 = @ruby_token_hash_splat_nil +| 16 = @ruby_token_heredoc_beginning +| 17 = @ruby_token_heredoc_content +| 18 = @ruby_token_heredoc_end +| 19 = @ruby_token_identifier +| 20 = @ruby_token_instance_variable +| 21 = @ruby_token_integer +| 22 = @ruby_token_line +| 23 = @ruby_token_nil +| 24 = @ruby_token_operator +| 25 = @ruby_token_self +| 26 = @ruby_token_simple_symbol +| 27 = @ruby_token_string_content +| 28 = @ruby_token_super +| 29 = @ruby_token_true +| 30 = @ruby_token_uninterpreted +; + + +@ruby_ast_node = @ruby_alias | @ruby_alternative_pattern | @ruby_argument_list | @ruby_array | @ruby_array_pattern | @ruby_as_pattern | @ruby_assignment | @ruby_bare_string | @ruby_bare_symbol | @ruby_begin | @ruby_begin_block | @ruby_binary | @ruby_block | @ruby_block_argument | @ruby_block_body | @ruby_block_parameter | @ruby_block_parameters | @ruby_body_statement | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_complex | @ruby_conditional | @ruby_delimited_symbol | @ruby_destructured_left_assignment | @ruby_destructured_parameter | @ruby_do | @ruby_do_block | @ruby_element_reference | @ruby_else | @ruby_elsif | @ruby_end_block | @ruby_ensure | @ruby_exception_variable | @ruby_exceptions | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_for | @ruby_hash | @ruby_hash_pattern | @ruby_hash_splat_argument | @ruby_hash_splat_parameter | @ruby_heredoc_body | @ruby_if | @ruby_if_guard | @ruby_if_modifier | @ruby_in | @ruby_in_clause | @ruby_interpolation | @ruby_keyword_parameter | @ruby_keyword_pattern | @ruby_lambda | @ruby_lambda_parameters | @ruby_left_assignment_list | @ruby_match_pattern | @ruby_method | @ruby_method_parameters | @ruby_module | @ruby_next | @ruby_operator_assignment | @ruby_optional_parameter | @ruby_pair | @ruby_parenthesized_pattern | @ruby_parenthesized_statements | @ruby_pattern | @ruby_program | @ruby_range | @ruby_rational | @ruby_redo | @ruby_regex | @ruby_rescue | @ruby_rescue_modifier | @ruby_rest_assignment | @ruby_retry | @ruby_return | @ruby_right_assignment_list | @ruby_scope_resolution | @ruby_setter | @ruby_singleton_class | @ruby_singleton_method | @ruby_splat_argument | @ruby_splat_parameter | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_superclass | @ruby_symbol_array | @ruby_test_pattern | @ruby_then | @ruby_token | @ruby_unary | @ruby_undef | @ruby_unless | @ruby_unless_guard | @ruby_unless_modifier | @ruby_until | @ruby_until_modifier | @ruby_variable_reference_pattern | @ruby_when | @ruby_while | @ruby_while_modifier | @ruby_yield + +ruby_ast_node_location( + unique int node: @ruby_ast_node ref, + int loc: @location_default ref +); + +#keyset[parent, parent_index] +ruby_ast_node_parent( + unique int node: @ruby_ast_node ref, + int parent: @ruby_ast_node ref, + int parent_index: int ref +); + +/*- Erb dbscheme -*/ +erb_comment_directive_child( + unique int erb_comment_directive: @erb_comment_directive ref, + unique int child: @erb_token_comment ref +); + +erb_comment_directive_def( + unique int id: @erb_comment_directive +); + +erb_directive_child( + unique int erb_directive: @erb_directive ref, + unique int child: @erb_token_code ref +); + +erb_directive_def( + unique int id: @erb_directive +); + +erb_graphql_directive_child( + unique int erb_graphql_directive: @erb_graphql_directive ref, + unique int child: @erb_token_code ref +); + +erb_graphql_directive_def( + unique int id: @erb_graphql_directive +); + +erb_output_directive_child( + unique int erb_output_directive: @erb_output_directive ref, + unique int child: @erb_token_code ref +); + +erb_output_directive_def( + unique int id: @erb_output_directive +); + +@erb_template_child_type = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_token_content + +#keyset[erb_template, index] +erb_template_child( + int erb_template: @erb_template ref, + int index: int ref, + unique int child: @erb_template_child_type ref +); + +erb_template_def( + unique int id: @erb_template +); + +erb_tokeninfo( + unique int id: @erb_token, + int kind: int ref, + string value: string ref +); + +case @erb_token.kind of + 0 = @erb_reserved_word +| 1 = @erb_token_code +| 2 = @erb_token_comment +| 3 = @erb_token_content +; + + +@erb_ast_node = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_template | @erb_token + +erb_ast_node_location( + unique int node: @erb_ast_node ref, + int loc: @location_default ref +); + +#keyset[parent, parent_index] +erb_ast_node_parent( + unique int node: @erb_ast_node ref, + int parent: @erb_ast_node ref, + int parent_index: int ref +); + diff --git a/ruby/downgrades/dc51d416301df12df5b70fbc4338de6cc1f82bfd/upgrade.properties b/ruby/downgrades/dc51d416301df12df5b70fbc4338de6cc1f82bfd/upgrade.properties new file mode 100644 index 000000000000..1d437ec8ac6b --- /dev/null +++ b/ruby/downgrades/dc51d416301df12df5b70fbc4338de6cc1f82bfd/upgrade.properties @@ -0,0 +1,3 @@ +description: Add databaseMetadata relation +compatibility: full +databaseMetadata.rel: delete diff --git a/ruby/extractor/Cargo.toml b/ruby/extractor/Cargo.toml index 8d3a94113fa2..16cdcca246c2 100644 --- a/ruby/extractor/Cargo.toml +++ b/ruby/extractor/Cargo.toml @@ -17,5 +17,6 @@ rayon = "1.10.0" regex = "1.11.1" encoding = "0.2" lazy_static = "1.5.0" +serde_json = "1.0.140" codeql-extractor = { path = "../../shared/tree-sitter-extractor" } diff --git a/ruby/extractor/src/extractor.rs b/ruby/extractor/src/extractor.rs index d42713122263..6807d09e9bec 100644 --- a/ruby/extractor/src/extractor.rs +++ b/ruby/extractor/src/extractor.rs @@ -1,7 +1,9 @@ use clap::Args; +use codeql_extractor::file_paths::PathTransformer; use lazy_static::lazy_static; use rayon::prelude::*; use std::borrow::Cow; +use std::collections::HashSet; use std::fs; use std::io::BufRead; use std::path::{Path, PathBuf}; @@ -78,6 +80,9 @@ pub fn run(options: Options) -> std::io::Result<()> { let file_list = fs::File::open(file_paths::path_from_string(&options.file_list))?; + let overlay_changed_files: Option> = get_overlay_changed_files(); + let path_transformer = file_paths::load_path_transformer()?; + let language: Language = tree_sitter_ruby::LANGUAGE.into(); let erb: Language = tree_sitter_embedded_template::LANGUAGE.into(); // Look up tree-sitter kind ids now, to avoid string comparisons when scanning ERB files. @@ -94,7 +99,14 @@ pub fn run(options: Options) -> std::io::Result<()> { .try_for_each(|line| { let mut diagnostics_writer = diagnostics.logger(); let path = PathBuf::from(line).canonicalize()?; - let src_archive_file = file_paths::path_for(&src_archive_dir, &path, ""); + match &overlay_changed_files { + Some(changed_files) if !changed_files.contains(&path) => { + // We are extracting an overlay and this file is not in the list of changes files, so we should skip it. + return Result::Ok(()); + } + _ => {}, + } + let src_archive_file = file_paths::path_for(&src_archive_dir, &path, "", path_transformer.as_ref()); let mut source = std::fs::read(&path)?; let mut needs_conversion = false; let code_ranges; @@ -107,6 +119,7 @@ pub fn run(options: Options) -> std::io::Result<()> { &erb_schema, &mut diagnostics_writer, &mut trap_writer, + path_transformer.as_ref(), &path, &source, &[], @@ -151,7 +164,7 @@ pub fn run(options: Options) -> std::io::Result<()> { "character-decoding-error", "Character decoding error", ) - .file(&file_paths::normalize_path(&path)) + .file(&file_paths::normalize_and_transform_path(&path, path_transformer.as_ref())) .message( "Could not decode the file contents as {}: {}. The contents of the file must match the character encoding specified in the {} {}.", &[ @@ -171,7 +184,7 @@ pub fn run(options: Options) -> std::io::Result<()> { diagnostics_writer.write( diagnostics_writer .new_entry("unknown-character-encoding", "Could not process some files due to an unknown character encoding") - .file(&file_paths::normalize_path(&path)) + .file(&file_paths::normalize_and_transform_path(&path, path_transformer.as_ref())) .message( "Unknown character encoding {} in {} {}.", &[ @@ -194,6 +207,7 @@ pub fn run(options: Options) -> std::io::Result<()> { &schema, &mut diagnostics_writer, &mut trap_writer, + path_transformer.as_ref(), &path, &source, &code_ranges, @@ -204,14 +218,26 @@ pub fn run(options: Options) -> std::io::Result<()> { } else { std::fs::copy(&path, &src_archive_file)?; } - write_trap(&trap_dir, path, &trap_writer, trap_compression) + write_trap(&trap_dir, path, &trap_writer, trap_compression, path_transformer.as_ref()) }) .expect("failed to extract files"); let path = PathBuf::from("extras"); let mut trap_writer = trap::Writer::new(); extractor::populate_empty_location(&mut trap_writer); - let res = write_trap(&trap_dir, path, &trap_writer, trap_compression); + let res = write_trap( + &trap_dir, + path, + &trap_writer, + trap_compression, + path_transformer.as_ref(), + ); + if let Ok(output_path) = std::env::var("CODEQL_EXTRACTOR_RUBY_OVERLAY_BASE_METADATA_OUT") { + // We're extracting an overlay base. For now, we don't have any metadata we need to store + // that would get read when extracting the overlay, but the CLI expects us to write + // *something*. An empty file will do. + std::fs::write(output_path, b"")?; + } tracing::info!("Extraction complete"); res } @@ -237,8 +263,14 @@ fn write_trap( path: PathBuf, trap_writer: &trap::Writer, trap_compression: trap::Compression, + path_transformer: Option<&PathTransformer>, ) -> std::io::Result<()> { - let trap_file = file_paths::path_for(trap_dir, &path, trap_compression.extension()); + let trap_file = file_paths::path_for( + trap_dir, + &path, + trap_compression.extension(), + path_transformer, + ); std::fs::create_dir_all(trap_file.parent().unwrap())?; trap_writer.write_to_file(&trap_file, trap_compression) } @@ -302,6 +334,39 @@ fn skip_space(content: &[u8], index: usize) -> usize { } index } + +/** +* If the relevant environment variable has been set by the CLI, indicating that we are extracting +* an overlay, this function reads the JSON file at the path given by its value, and returns a set +* of canonicalized paths of source files that have changed and should therefore be extracted. +* +* If the environment variable is not set (i.e. we're not extracting an overlay), or if the file +* cannot be read, this function returns `None`. In that case, all files should be extracted. +*/ +fn get_overlay_changed_files() -> Option> { + let path = std::env::var("CODEQL_EXTRACTOR_RUBY_OVERLAY_CHANGES").ok()?; + let file_content = fs::read_to_string(path).ok()?; + let json_value: serde_json::Value = serde_json::from_str(&file_content).ok()?; + + // The JSON file is expected to have the following structure: + // { + // "changes": [ + // "relative/path/to/changed/file1.rb", + // "relative/path/to/changed/file2.rb", + // ... + // ] + // } + Some( + json_value + .get("changes")? + .as_array()? + .iter() + .filter_map(|change| change.as_str()) + .filter_map(|s| PathBuf::from(s).canonicalize().ok()) + .collect(), + ) +} + fn scan_coding_comment(content: &[u8]) -> std::option::Option> { let mut index = 0; // skip UTF-8 BOM marker if there is one diff --git a/ruby/ql/integration-tests/query-suite/ruby-code-quality-extended.qls.expected b/ruby/ql/integration-tests/query-suite/ruby-code-quality-extended.qls.expected new file mode 100644 index 000000000000..94b2f19caaa8 --- /dev/null +++ b/ruby/ql/integration-tests/query-suite/ruby-code-quality-extended.qls.expected @@ -0,0 +1,3 @@ +ql/ruby/ql/src/queries/performance/DatabaseQueryInLoop.ql +ql/ruby/ql/src/queries/variables/DeadStoreOfLocal.ql +ql/ruby/ql/src/queries/variables/UninitializedLocal.ql diff --git a/ruby/ql/integration-tests/query-suite/test.py b/ruby/ql/integration-tests/query-suite/test.py index 7ebb9d9c9b5b..3202f0c13fdf 100644 --- a/ruby/ql/integration-tests/query-suite/test.py +++ b/ruby/ql/integration-tests/query-suite/test.py @@ -2,7 +2,7 @@ import pytest from query_suites import * -well_known_query_suites = ['ruby-code-quality.qls', 'ruby-security-and-quality.qls', 'ruby-security-extended.qls', 'ruby-code-scanning.qls'] +well_known_query_suites = ['ruby-code-quality.qls', 'ruby-code-quality-extended.qls', 'ruby-security-and-quality.qls', 'ruby-security-extended.qls', 'ruby-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index cdd84b3aeeb6..2a4d6f213757 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.1.9 + +No user-facing changes. + ## 4.1.8 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/4.1.9.md b/ruby/ql/lib/change-notes/released/4.1.9.md new file mode 100644 index 000000000000..94eac40d6e38 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/4.1.9.md @@ -0,0 +1,3 @@ +## 4.1.9 + +No user-facing changes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 8636017292cf..4a8b97062776 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.1.8 +lastReleaseVersion: 4.1.9 diff --git a/ruby/ql/lib/codeql/ruby/ast/internal/Literal.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Literal.qll index a82256a0162a..8af4673d9168 100644 --- a/ruby/ql/lib/codeql/ruby/ast/internal/Literal.qll +++ b/ruby/ql/lib/codeql/ruby/ast/internal/Literal.qll @@ -579,12 +579,27 @@ abstract class StringlikeLiteralImpl extends Expr, TStringlikeLiteral { ) } + pragma[nomagic] + private StringComponentImpl getComponentImplRestricted(int n) { + result = this.getComponentImpl(n) and + strictsum(int length, int i | length = this.getComponentImpl(i).getValue().length() | length) < + 10000 + } + // 0 components results in the empty string - // if all interpolations have a known string value, we will get a result + // if all interpolations have a known string value, we will get a result, unless the + // combined length exceeds 10,000 characters language[monotonicAggregates] final string getStringValue() { + not exists(this.getComponentImpl(_)) and + result = "" + or result = - concat(StringComponentImpl c, int i | c = this.getComponentImpl(i) | c.getValue() order by i) + strictconcat(StringComponentImpl c, int i | + c = this.getComponentImplRestricted(i) + | + c.getValue() order by i + ) } } diff --git a/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll b/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll index e339b07d35b9..3532a5d2a21f 100644 --- a/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll +++ b/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll @@ -5,6 +5,10 @@ import codeql.Locations as L +/** Holds if the database is an overlay. */ +overlay[local] +private predicate isOverlay() { databaseMetadata("isOverlay", "true") } + module Ruby { /** The base class for all AST nodes */ class AstNode extends @ruby_ast_node { @@ -48,6 +52,30 @@ module Ruby { final override string getAPrimaryQlClass() { result = "ReservedWord" } } + /** Gets the file containing the given `node`. */ + overlay[local] + private @file getNodeFile(@ruby_ast_node node) { + exists(@location_default loc | ruby_ast_node_location(node, loc) | + locations_default(loc, result, _, _, _, _) + ) + } + + /** Holds if `file` was extracted as part of the overlay database. */ + overlay[local] + private predicate discardFile(@file file) { isOverlay() and file = getNodeFile(_) } + + /** Holds if `node` is in the `file` and is part of the overlay base database. */ + overlay[local] + private predicate discardableAstNode(@file file, @ruby_ast_node node) { + not isOverlay() and file = getNodeFile(node) + } + + /** Holds if `node` should be discarded, because it is part of the overlay base and is in a file that was also extracted as part of the overlay database. */ + overlay[discard_entity] + private predicate discardAstNode(@ruby_ast_node node) { + exists(@file file | discardableAstNode(file, node) and discardFile(file)) + } + class UnderscoreArg extends @ruby_underscore_arg, AstNode { } class UnderscoreCallOperator extends @ruby_underscore_call_operator, AstNode { } @@ -1970,6 +1998,30 @@ module Erb { final override string getAPrimaryQlClass() { result = "ReservedWord" } } + /** Gets the file containing the given `node`. */ + overlay[local] + private @file getNodeFile(@erb_ast_node node) { + exists(@location_default loc | erb_ast_node_location(node, loc) | + locations_default(loc, result, _, _, _, _) + ) + } + + /** Holds if `file` was extracted as part of the overlay database. */ + overlay[local] + private predicate discardFile(@file file) { isOverlay() and file = getNodeFile(_) } + + /** Holds if `node` is in the `file` and is part of the overlay base database. */ + overlay[local] + private predicate discardableAstNode(@file file, @erb_ast_node node) { + not isOverlay() and file = getNodeFile(node) + } + + /** Holds if `node` should be discarded, because it is part of the overlay base and is in a file that was also extracted as part of the overlay database. */ + overlay[discard_entity] + private predicate discardAstNode(@erb_ast_node node) { + exists(@file file | discardableAstNode(file, node) and discardFile(file)) + } + /** A class representing `code` tokens. */ class Code extends @erb_token_code, Token { /** Gets the name of the primary QL class for this element. */ diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 1ed20c1ddcfd..ef9f163cbd91 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 4.1.8 +version: 4.1.10-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/lib/ruby.dbscheme b/ruby/ql/lib/ruby.dbscheme index 40a6b0a5e811..dc51d416301d 100644 --- a/ruby/ql/lib/ruby.dbscheme +++ b/ruby/ql/lib/ruby.dbscheme @@ -108,6 +108,12 @@ yaml_locations(unique int locatable: @yaml_locatable ref, @yaml_locatable = @yaml_node | @yaml_error; +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + /*- Ruby dbscheme -*/ @ruby_underscore_arg = @ruby_assignment | @ruby_binary | @ruby_conditional | @ruby_operator_assignment | @ruby_range | @ruby_unary | @ruby_underscore_primary diff --git a/ruby/ql/lib/ruby.dbscheme.stats b/ruby/ql/lib/ruby.dbscheme.stats index fd8850293b49..74a9e97f4bd4 100644 --- a/ruby/ql/lib/ruby.dbscheme.stats +++ b/ruby/ql/lib/ruby.dbscheme.stats @@ -21521,6 +21521,42 @@ + + databaseMetadata + 1 + + + metadataKey + 1 + + + value + 1 + + + + + metadataKey + value + + + 12 + + + + + + value + metadataKey + + + 12 + + + + + + yaml_aliases 0 diff --git a/ruby/ql/lib/upgrades/40a6b0a5e81115bd870b3a12a1fe954b06362bb7/old.dbscheme b/ruby/ql/lib/upgrades/40a6b0a5e81115bd870b3a12a1fe954b06362bb7/old.dbscheme new file mode 100644 index 000000000000..40a6b0a5e811 --- /dev/null +++ b/ruby/ql/lib/upgrades/40a6b0a5e81115bd870b3a12a1fe954b06362bb7/old.dbscheme @@ -0,0 +1,1526 @@ +// CodeQL database schema for Ruby +// Automatically generated from the tree-sitter grammar; do not edit + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Ruby dbscheme -*/ +@ruby_underscore_arg = @ruby_assignment | @ruby_binary | @ruby_conditional | @ruby_operator_assignment | @ruby_range | @ruby_unary | @ruby_underscore_primary + +@ruby_underscore_call_operator = @ruby_reserved_word + +@ruby_underscore_expression = @ruby_assignment | @ruby_binary | @ruby_break | @ruby_call | @ruby_match_pattern | @ruby_next | @ruby_operator_assignment | @ruby_return | @ruby_test_pattern | @ruby_unary | @ruby_underscore_arg | @ruby_yield + +@ruby_underscore_lhs = @ruby_call | @ruby_element_reference | @ruby_scope_resolution | @ruby_token_false | @ruby_token_nil | @ruby_token_true | @ruby_underscore_variable + +@ruby_underscore_method_name = @ruby_delimited_symbol | @ruby_setter | @ruby_token_constant | @ruby_token_identifier | @ruby_token_operator | @ruby_token_simple_symbol | @ruby_underscore_nonlocal_variable + +@ruby_underscore_nonlocal_variable = @ruby_token_class_variable | @ruby_token_global_variable | @ruby_token_instance_variable + +@ruby_underscore_pattern_constant = @ruby_scope_resolution | @ruby_token_constant + +@ruby_underscore_pattern_expr = @ruby_alternative_pattern | @ruby_as_pattern | @ruby_underscore_pattern_expr_basic + +@ruby_underscore_pattern_expr_basic = @ruby_array_pattern | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_parenthesized_pattern | @ruby_range | @ruby_token_identifier | @ruby_underscore_pattern_constant | @ruby_underscore_pattern_primitive | @ruby_variable_reference_pattern + +@ruby_underscore_pattern_primitive = @ruby_delimited_symbol | @ruby_lambda | @ruby_regex | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_encoding | @ruby_token_false | @ruby_token_file | @ruby_token_heredoc_beginning | @ruby_token_line | @ruby_token_nil | @ruby_token_self | @ruby_token_simple_symbol | @ruby_token_true | @ruby_unary | @ruby_underscore_simple_numeric + +@ruby_underscore_pattern_top_expr_body = @ruby_array_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_underscore_pattern_expr + +@ruby_underscore_primary = @ruby_array | @ruby_begin | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_delimited_symbol | @ruby_for | @ruby_hash | @ruby_if | @ruby_lambda | @ruby_method | @ruby_module | @ruby_next | @ruby_parenthesized_statements | @ruby_redo | @ruby_regex | @ruby_retry | @ruby_return | @ruby_singleton_class | @ruby_singleton_method | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_character | @ruby_token_heredoc_beginning | @ruby_token_simple_symbol | @ruby_unary | @ruby_underscore_lhs | @ruby_underscore_simple_numeric | @ruby_unless | @ruby_until | @ruby_while | @ruby_yield + +@ruby_underscore_simple_numeric = @ruby_complex | @ruby_rational | @ruby_token_float | @ruby_token_integer + +@ruby_underscore_statement = @ruby_alias | @ruby_begin_block | @ruby_end_block | @ruby_if_modifier | @ruby_rescue_modifier | @ruby_undef | @ruby_underscore_expression | @ruby_unless_modifier | @ruby_until_modifier | @ruby_while_modifier + +@ruby_underscore_variable = @ruby_token_constant | @ruby_token_identifier | @ruby_token_self | @ruby_token_super | @ruby_underscore_nonlocal_variable + +ruby_alias_def( + unique int id: @ruby_alias, + int alias: @ruby_underscore_method_name ref, + int name: @ruby_underscore_method_name ref +); + +#keyset[ruby_alternative_pattern, index] +ruby_alternative_pattern_alternatives( + int ruby_alternative_pattern: @ruby_alternative_pattern ref, + int index: int ref, + unique int alternatives: @ruby_underscore_pattern_expr_basic ref +); + +ruby_alternative_pattern_def( + unique int id: @ruby_alternative_pattern +); + +@ruby_argument_list_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_argument_list, index] +ruby_argument_list_child( + int ruby_argument_list: @ruby_argument_list ref, + int index: int ref, + unique int child: @ruby_argument_list_child_type ref +); + +ruby_argument_list_def( + unique int id: @ruby_argument_list +); + +@ruby_array_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_array, index] +ruby_array_child( + int ruby_array: @ruby_array ref, + int index: int ref, + unique int child: @ruby_array_child_type ref +); + +ruby_array_def( + unique int id: @ruby_array +); + +ruby_array_pattern_class( + unique int ruby_array_pattern: @ruby_array_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_array_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_array_pattern, index] +ruby_array_pattern_child( + int ruby_array_pattern: @ruby_array_pattern ref, + int index: int ref, + unique int child: @ruby_array_pattern_child_type ref +); + +ruby_array_pattern_def( + unique int id: @ruby_array_pattern +); + +ruby_as_pattern_def( + unique int id: @ruby_as_pattern, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_pattern_expr ref +); + +@ruby_assignment_left_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +@ruby_assignment_right_type = @ruby_rescue_modifier | @ruby_right_assignment_list | @ruby_splat_argument | @ruby_underscore_expression + +ruby_assignment_def( + unique int id: @ruby_assignment, + int left: @ruby_assignment_left_type ref, + int right: @ruby_assignment_right_type ref +); + +@ruby_bare_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_string, index] +ruby_bare_string_child( + int ruby_bare_string: @ruby_bare_string ref, + int index: int ref, + unique int child: @ruby_bare_string_child_type ref +); + +ruby_bare_string_def( + unique int id: @ruby_bare_string +); + +@ruby_bare_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_symbol, index] +ruby_bare_symbol_child( + int ruby_bare_symbol: @ruby_bare_symbol ref, + int index: int ref, + unique int child: @ruby_bare_symbol_child_type ref +); + +ruby_bare_symbol_def( + unique int id: @ruby_bare_symbol +); + +@ruby_begin_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin, index] +ruby_begin_child( + int ruby_begin: @ruby_begin ref, + int index: int ref, + unique int child: @ruby_begin_child_type ref +); + +ruby_begin_def( + unique int id: @ruby_begin +); + +@ruby_begin_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin_block, index] +ruby_begin_block_child( + int ruby_begin_block: @ruby_begin_block ref, + int index: int ref, + unique int child: @ruby_begin_block_child_type ref +); + +ruby_begin_block_def( + unique int id: @ruby_begin_block +); + +@ruby_binary_left_type = @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_binary.operator of + 0 = @ruby_binary_bangequal +| 1 = @ruby_binary_bangtilde +| 2 = @ruby_binary_percent +| 3 = @ruby_binary_ampersand +| 4 = @ruby_binary_ampersandampersand +| 5 = @ruby_binary_star +| 6 = @ruby_binary_starstar +| 7 = @ruby_binary_plus +| 8 = @ruby_binary_minus +| 9 = @ruby_binary_slash +| 10 = @ruby_binary_langle +| 11 = @ruby_binary_langlelangle +| 12 = @ruby_binary_langleequal +| 13 = @ruby_binary_langleequalrangle +| 14 = @ruby_binary_equalequal +| 15 = @ruby_binary_equalequalequal +| 16 = @ruby_binary_equaltilde +| 17 = @ruby_binary_rangle +| 18 = @ruby_binary_rangleequal +| 19 = @ruby_binary_ranglerangle +| 20 = @ruby_binary_caret +| 21 = @ruby_binary_and +| 22 = @ruby_binary_or +| 23 = @ruby_binary_pipe +| 24 = @ruby_binary_pipepipe +; + + +ruby_binary_def( + unique int id: @ruby_binary, + int left: @ruby_binary_left_type ref, + int operator: int ref, + int right: @ruby_underscore_expression ref +); + +ruby_block_body( + unique int ruby_block: @ruby_block ref, + unique int body: @ruby_block_body ref +); + +ruby_block_parameters( + unique int ruby_block: @ruby_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_block_def( + unique int id: @ruby_block +); + +ruby_block_argument_child( + unique int ruby_block_argument: @ruby_block_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_block_argument_def( + unique int id: @ruby_block_argument +); + +@ruby_block_body_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_block_body, index] +ruby_block_body_child( + int ruby_block_body: @ruby_block_body ref, + int index: int ref, + unique int child: @ruby_block_body_child_type ref +); + +ruby_block_body_def( + unique int id: @ruby_block_body +); + +ruby_block_parameter_name( + unique int ruby_block_parameter: @ruby_block_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_block_parameter_def( + unique int id: @ruby_block_parameter +); + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_locals( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int locals: @ruby_token_identifier ref +); + +@ruby_block_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_child( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int child: @ruby_block_parameters_child_type ref +); + +ruby_block_parameters_def( + unique int id: @ruby_block_parameters +); + +@ruby_body_statement_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_body_statement, index] +ruby_body_statement_child( + int ruby_body_statement: @ruby_body_statement ref, + int index: int ref, + unique int child: @ruby_body_statement_child_type ref +); + +ruby_body_statement_def( + unique int id: @ruby_body_statement +); + +ruby_break_child( + unique int ruby_break: @ruby_break ref, + unique int child: @ruby_argument_list ref +); + +ruby_break_def( + unique int id: @ruby_break +); + +ruby_call_arguments( + unique int ruby_call: @ruby_call ref, + unique int arguments: @ruby_argument_list ref +); + +@ruby_call_block_type = @ruby_block | @ruby_do_block + +ruby_call_block( + unique int ruby_call: @ruby_call ref, + unique int block: @ruby_call_block_type ref +); + +@ruby_call_method_type = @ruby_token_operator | @ruby_underscore_variable + +ruby_call_method( + unique int ruby_call: @ruby_call ref, + unique int method: @ruby_call_method_type ref +); + +ruby_call_operator( + unique int ruby_call: @ruby_call ref, + unique int operator: @ruby_underscore_call_operator ref +); + +ruby_call_receiver( + unique int ruby_call: @ruby_call ref, + unique int receiver: @ruby_underscore_primary ref +); + +ruby_call_def( + unique int id: @ruby_call +); + +ruby_case_value( + unique int ruby_case__: @ruby_case__ ref, + unique int value: @ruby_underscore_statement ref +); + +@ruby_case_child_type = @ruby_else | @ruby_when + +#keyset[ruby_case__, index] +ruby_case_child( + int ruby_case__: @ruby_case__ ref, + int index: int ref, + unique int child: @ruby_case_child_type ref +); + +ruby_case_def( + unique int id: @ruby_case__ +); + +#keyset[ruby_case_match, index] +ruby_case_match_clauses( + int ruby_case_match: @ruby_case_match ref, + int index: int ref, + unique int clauses: @ruby_in_clause ref +); + +ruby_case_match_else( + unique int ruby_case_match: @ruby_case_match ref, + unique int else: @ruby_else ref +); + +ruby_case_match_def( + unique int id: @ruby_case_match, + int value: @ruby_underscore_statement ref +); + +#keyset[ruby_chained_string, index] +ruby_chained_string_child( + int ruby_chained_string: @ruby_chained_string ref, + int index: int ref, + unique int child: @ruby_string__ ref +); + +ruby_chained_string_def( + unique int id: @ruby_chained_string +); + +ruby_class_body( + unique int ruby_class: @ruby_class ref, + unique int body: @ruby_body_statement ref +); + +@ruby_class_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_class_superclass( + unique int ruby_class: @ruby_class ref, + unique int superclass: @ruby_superclass ref +); + +ruby_class_def( + unique int id: @ruby_class, + int name: @ruby_class_name_type ref +); + +@ruby_complex_child_type = @ruby_rational | @ruby_token_float | @ruby_token_integer + +ruby_complex_def( + unique int id: @ruby_complex, + int child: @ruby_complex_child_type ref +); + +ruby_conditional_def( + unique int id: @ruby_conditional, + int alternative: @ruby_underscore_arg ref, + int condition: @ruby_underscore_arg ref, + int consequence: @ruby_underscore_arg ref +); + +@ruby_delimited_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_delimited_symbol, index] +ruby_delimited_symbol_child( + int ruby_delimited_symbol: @ruby_delimited_symbol ref, + int index: int ref, + unique int child: @ruby_delimited_symbol_child_type ref +); + +ruby_delimited_symbol_def( + unique int id: @ruby_delimited_symbol +); + +@ruby_destructured_left_assignment_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_destructured_left_assignment, index] +ruby_destructured_left_assignment_child( + int ruby_destructured_left_assignment: @ruby_destructured_left_assignment ref, + int index: int ref, + unique int child: @ruby_destructured_left_assignment_child_type ref +); + +ruby_destructured_left_assignment_def( + unique int id: @ruby_destructured_left_assignment +); + +@ruby_destructured_parameter_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_destructured_parameter, index] +ruby_destructured_parameter_child( + int ruby_destructured_parameter: @ruby_destructured_parameter ref, + int index: int ref, + unique int child: @ruby_destructured_parameter_child_type ref +); + +ruby_destructured_parameter_def( + unique int id: @ruby_destructured_parameter +); + +@ruby_do_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_do, index] +ruby_do_child( + int ruby_do: @ruby_do ref, + int index: int ref, + unique int child: @ruby_do_child_type ref +); + +ruby_do_def( + unique int id: @ruby_do +); + +ruby_do_block_body( + unique int ruby_do_block: @ruby_do_block ref, + unique int body: @ruby_body_statement ref +); + +ruby_do_block_parameters( + unique int ruby_do_block: @ruby_do_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_do_block_def( + unique int id: @ruby_do_block +); + +@ruby_element_reference_block_type = @ruby_block | @ruby_do_block + +ruby_element_reference_block( + unique int ruby_element_reference: @ruby_element_reference ref, + unique int block: @ruby_element_reference_block_type ref +); + +@ruby_element_reference_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_element_reference, index] +ruby_element_reference_child( + int ruby_element_reference: @ruby_element_reference ref, + int index: int ref, + unique int child: @ruby_element_reference_child_type ref +); + +ruby_element_reference_def( + unique int id: @ruby_element_reference, + int object: @ruby_underscore_primary ref +); + +@ruby_else_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_else, index] +ruby_else_child( + int ruby_else: @ruby_else ref, + int index: int ref, + unique int child: @ruby_else_child_type ref +); + +ruby_else_def( + unique int id: @ruby_else +); + +@ruby_elsif_alternative_type = @ruby_else | @ruby_elsif + +ruby_elsif_alternative( + unique int ruby_elsif: @ruby_elsif ref, + unique int alternative: @ruby_elsif_alternative_type ref +); + +ruby_elsif_consequence( + unique int ruby_elsif: @ruby_elsif ref, + unique int consequence: @ruby_then ref +); + +ruby_elsif_def( + unique int id: @ruby_elsif, + int condition: @ruby_underscore_statement ref +); + +@ruby_end_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_end_block, index] +ruby_end_block_child( + int ruby_end_block: @ruby_end_block ref, + int index: int ref, + unique int child: @ruby_end_block_child_type ref +); + +ruby_end_block_def( + unique int id: @ruby_end_block +); + +@ruby_ensure_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_ensure, index] +ruby_ensure_child( + int ruby_ensure: @ruby_ensure ref, + int index: int ref, + unique int child: @ruby_ensure_child_type ref +); + +ruby_ensure_def( + unique int id: @ruby_ensure +); + +ruby_exception_variable_def( + unique int id: @ruby_exception_variable, + int child: @ruby_underscore_lhs ref +); + +@ruby_exceptions_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_exceptions, index] +ruby_exceptions_child( + int ruby_exceptions: @ruby_exceptions ref, + int index: int ref, + unique int child: @ruby_exceptions_child_type ref +); + +ruby_exceptions_def( + unique int id: @ruby_exceptions +); + +ruby_expression_reference_pattern_def( + unique int id: @ruby_expression_reference_pattern, + int value: @ruby_underscore_expression ref +); + +ruby_find_pattern_class( + unique int ruby_find_pattern: @ruby_find_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_find_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_find_pattern, index] +ruby_find_pattern_child( + int ruby_find_pattern: @ruby_find_pattern ref, + int index: int ref, + unique int child: @ruby_find_pattern_child_type ref +); + +ruby_find_pattern_def( + unique int id: @ruby_find_pattern +); + +@ruby_for_pattern_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +ruby_for_def( + unique int id: @ruby_for, + int body: @ruby_do ref, + int pattern: @ruby_for_pattern_type ref, + int value: @ruby_in ref +); + +@ruby_hash_child_type = @ruby_hash_splat_argument | @ruby_pair + +#keyset[ruby_hash, index] +ruby_hash_child( + int ruby_hash: @ruby_hash ref, + int index: int ref, + unique int child: @ruby_hash_child_type ref +); + +ruby_hash_def( + unique int id: @ruby_hash +); + +ruby_hash_pattern_class( + unique int ruby_hash_pattern: @ruby_hash_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_hash_pattern_child_type = @ruby_hash_splat_parameter | @ruby_keyword_pattern | @ruby_token_hash_splat_nil + +#keyset[ruby_hash_pattern, index] +ruby_hash_pattern_child( + int ruby_hash_pattern: @ruby_hash_pattern ref, + int index: int ref, + unique int child: @ruby_hash_pattern_child_type ref +); + +ruby_hash_pattern_def( + unique int id: @ruby_hash_pattern +); + +ruby_hash_splat_argument_child( + unique int ruby_hash_splat_argument: @ruby_hash_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_hash_splat_argument_def( + unique int id: @ruby_hash_splat_argument +); + +ruby_hash_splat_parameter_name( + unique int ruby_hash_splat_parameter: @ruby_hash_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_hash_splat_parameter_def( + unique int id: @ruby_hash_splat_parameter +); + +@ruby_heredoc_body_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_heredoc_content | @ruby_token_heredoc_end + +#keyset[ruby_heredoc_body, index] +ruby_heredoc_body_child( + int ruby_heredoc_body: @ruby_heredoc_body ref, + int index: int ref, + unique int child: @ruby_heredoc_body_child_type ref +); + +ruby_heredoc_body_def( + unique int id: @ruby_heredoc_body +); + +@ruby_if_alternative_type = @ruby_else | @ruby_elsif + +ruby_if_alternative( + unique int ruby_if: @ruby_if ref, + unique int alternative: @ruby_if_alternative_type ref +); + +ruby_if_consequence( + unique int ruby_if: @ruby_if ref, + unique int consequence: @ruby_then ref +); + +ruby_if_def( + unique int id: @ruby_if, + int condition: @ruby_underscore_statement ref +); + +ruby_if_guard_def( + unique int id: @ruby_if_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_if_modifier_def( + unique int id: @ruby_if_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_in_def( + unique int id: @ruby_in, + int child: @ruby_underscore_arg ref +); + +ruby_in_clause_body( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int body: @ruby_then ref +); + +@ruby_in_clause_guard_type = @ruby_if_guard | @ruby_unless_guard + +ruby_in_clause_guard( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int guard: @ruby_in_clause_guard_type ref +); + +ruby_in_clause_def( + unique int id: @ruby_in_clause, + int pattern: @ruby_underscore_pattern_top_expr_body ref +); + +@ruby_interpolation_child_type = @ruby_token_empty_statement | @ruby_underscore_nonlocal_variable | @ruby_underscore_statement + +#keyset[ruby_interpolation, index] +ruby_interpolation_child( + int ruby_interpolation: @ruby_interpolation ref, + int index: int ref, + unique int child: @ruby_interpolation_child_type ref +); + +ruby_interpolation_def( + unique int id: @ruby_interpolation +); + +ruby_keyword_parameter_value( + unique int ruby_keyword_parameter: @ruby_keyword_parameter ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_keyword_parameter_def( + unique int id: @ruby_keyword_parameter, + int name: @ruby_token_identifier ref +); + +@ruby_keyword_pattern_key_type = @ruby_string__ | @ruby_token_hash_key_symbol + +ruby_keyword_pattern_value( + unique int ruby_keyword_pattern: @ruby_keyword_pattern ref, + unique int value: @ruby_underscore_pattern_expr ref +); + +ruby_keyword_pattern_def( + unique int id: @ruby_keyword_pattern, + int key__: @ruby_keyword_pattern_key_type ref +); + +@ruby_lambda_body_type = @ruby_block | @ruby_do_block + +ruby_lambda_parameters( + unique int ruby_lambda: @ruby_lambda ref, + unique int parameters: @ruby_lambda_parameters ref +); + +ruby_lambda_def( + unique int id: @ruby_lambda, + int body: @ruby_lambda_body_type ref +); + +@ruby_lambda_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_lambda_parameters, index] +ruby_lambda_parameters_child( + int ruby_lambda_parameters: @ruby_lambda_parameters ref, + int index: int ref, + unique int child: @ruby_lambda_parameters_child_type ref +); + +ruby_lambda_parameters_def( + unique int id: @ruby_lambda_parameters +); + +@ruby_left_assignment_list_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_left_assignment_list, index] +ruby_left_assignment_list_child( + int ruby_left_assignment_list: @ruby_left_assignment_list ref, + int index: int ref, + unique int child: @ruby_left_assignment_list_child_type ref +); + +ruby_left_assignment_list_def( + unique int id: @ruby_left_assignment_list +); + +ruby_match_pattern_def( + unique int id: @ruby_match_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_method_body( + unique int ruby_method: @ruby_method ref, + unique int body: @ruby_method_body_type ref +); + +ruby_method_parameters( + unique int ruby_method: @ruby_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_method_def( + unique int id: @ruby_method, + int name: @ruby_underscore_method_name ref +); + +@ruby_method_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_method_parameters, index] +ruby_method_parameters_child( + int ruby_method_parameters: @ruby_method_parameters ref, + int index: int ref, + unique int child: @ruby_method_parameters_child_type ref +); + +ruby_method_parameters_def( + unique int id: @ruby_method_parameters +); + +ruby_module_body( + unique int ruby_module: @ruby_module ref, + unique int body: @ruby_body_statement ref +); + +@ruby_module_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_module_def( + unique int id: @ruby_module, + int name: @ruby_module_name_type ref +); + +ruby_next_child( + unique int ruby_next: @ruby_next ref, + unique int child: @ruby_argument_list ref +); + +ruby_next_def( + unique int id: @ruby_next +); + +case @ruby_operator_assignment.operator of + 0 = @ruby_operator_assignment_percentequal +| 1 = @ruby_operator_assignment_ampersandampersandequal +| 2 = @ruby_operator_assignment_ampersandequal +| 3 = @ruby_operator_assignment_starstarequal +| 4 = @ruby_operator_assignment_starequal +| 5 = @ruby_operator_assignment_plusequal +| 6 = @ruby_operator_assignment_minusequal +| 7 = @ruby_operator_assignment_slashequal +| 8 = @ruby_operator_assignment_langlelangleequal +| 9 = @ruby_operator_assignment_ranglerangleequal +| 10 = @ruby_operator_assignment_caretequal +| 11 = @ruby_operator_assignment_pipeequal +| 12 = @ruby_operator_assignment_pipepipeequal +; + + +@ruby_operator_assignment_right_type = @ruby_rescue_modifier | @ruby_underscore_expression + +ruby_operator_assignment_def( + unique int id: @ruby_operator_assignment, + int left: @ruby_underscore_lhs ref, + int operator: int ref, + int right: @ruby_operator_assignment_right_type ref +); + +ruby_optional_parameter_def( + unique int id: @ruby_optional_parameter, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_arg ref +); + +@ruby_pair_key_type = @ruby_string__ | @ruby_token_hash_key_symbol | @ruby_underscore_arg + +ruby_pair_value( + unique int ruby_pair: @ruby_pair ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_pair_def( + unique int id: @ruby_pair, + int key__: @ruby_pair_key_type ref +); + +ruby_parenthesized_pattern_def( + unique int id: @ruby_parenthesized_pattern, + int child: @ruby_underscore_pattern_expr ref +); + +@ruby_parenthesized_statements_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_parenthesized_statements, index] +ruby_parenthesized_statements_child( + int ruby_parenthesized_statements: @ruby_parenthesized_statements ref, + int index: int ref, + unique int child: @ruby_parenthesized_statements_child_type ref +); + +ruby_parenthesized_statements_def( + unique int id: @ruby_parenthesized_statements +); + +@ruby_pattern_child_type = @ruby_splat_argument | @ruby_underscore_arg + +ruby_pattern_def( + unique int id: @ruby_pattern, + int child: @ruby_pattern_child_type ref +); + +@ruby_program_child_type = @ruby_token_empty_statement | @ruby_token_uninterpreted | @ruby_underscore_statement + +#keyset[ruby_program, index] +ruby_program_child( + int ruby_program: @ruby_program ref, + int index: int ref, + unique int child: @ruby_program_child_type ref +); + +ruby_program_def( + unique int id: @ruby_program +); + +@ruby_range_begin_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_begin( + unique int ruby_range: @ruby_range ref, + unique int begin: @ruby_range_begin_type ref +); + +@ruby_range_end_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_end( + unique int ruby_range: @ruby_range ref, + unique int end: @ruby_range_end_type ref +); + +case @ruby_range.operator of + 0 = @ruby_range_dotdot +| 1 = @ruby_range_dotdotdot +; + + +ruby_range_def( + unique int id: @ruby_range, + int operator: int ref +); + +@ruby_rational_child_type = @ruby_token_float | @ruby_token_integer + +ruby_rational_def( + unique int id: @ruby_rational, + int child: @ruby_rational_child_type ref +); + +ruby_redo_child( + unique int ruby_redo: @ruby_redo ref, + unique int child: @ruby_argument_list ref +); + +ruby_redo_def( + unique int id: @ruby_redo +); + +@ruby_regex_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_regex, index] +ruby_regex_child( + int ruby_regex: @ruby_regex ref, + int index: int ref, + unique int child: @ruby_regex_child_type ref +); + +ruby_regex_def( + unique int id: @ruby_regex +); + +ruby_rescue_body( + unique int ruby_rescue: @ruby_rescue ref, + unique int body: @ruby_then ref +); + +ruby_rescue_exceptions( + unique int ruby_rescue: @ruby_rescue ref, + unique int exceptions: @ruby_exceptions ref +); + +ruby_rescue_variable( + unique int ruby_rescue: @ruby_rescue ref, + unique int variable: @ruby_exception_variable ref +); + +ruby_rescue_def( + unique int id: @ruby_rescue +); + +@ruby_rescue_modifier_body_type = @ruby_underscore_arg | @ruby_underscore_statement + +ruby_rescue_modifier_def( + unique int id: @ruby_rescue_modifier, + int body: @ruby_rescue_modifier_body_type ref, + int handler: @ruby_underscore_expression ref +); + +ruby_rest_assignment_child( + unique int ruby_rest_assignment: @ruby_rest_assignment ref, + unique int child: @ruby_underscore_lhs ref +); + +ruby_rest_assignment_def( + unique int id: @ruby_rest_assignment +); + +ruby_retry_child( + unique int ruby_retry: @ruby_retry ref, + unique int child: @ruby_argument_list ref +); + +ruby_retry_def( + unique int id: @ruby_retry +); + +ruby_return_child( + unique int ruby_return: @ruby_return ref, + unique int child: @ruby_argument_list ref +); + +ruby_return_def( + unique int id: @ruby_return +); + +@ruby_right_assignment_list_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_right_assignment_list, index] +ruby_right_assignment_list_child( + int ruby_right_assignment_list: @ruby_right_assignment_list ref, + int index: int ref, + unique int child: @ruby_right_assignment_list_child_type ref +); + +ruby_right_assignment_list_def( + unique int id: @ruby_right_assignment_list +); + +@ruby_scope_resolution_scope_type = @ruby_underscore_pattern_constant | @ruby_underscore_primary + +ruby_scope_resolution_scope( + unique int ruby_scope_resolution: @ruby_scope_resolution ref, + unique int scope: @ruby_scope_resolution_scope_type ref +); + +ruby_scope_resolution_def( + unique int id: @ruby_scope_resolution, + int name: @ruby_token_constant ref +); + +ruby_setter_def( + unique int id: @ruby_setter, + int name: @ruby_token_identifier ref +); + +ruby_singleton_class_body( + unique int ruby_singleton_class: @ruby_singleton_class ref, + unique int body: @ruby_body_statement ref +); + +ruby_singleton_class_def( + unique int id: @ruby_singleton_class, + int value: @ruby_underscore_arg ref +); + +@ruby_singleton_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_singleton_method_body( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int body: @ruby_singleton_method_body_type ref +); + +@ruby_singleton_method_object_type = @ruby_underscore_arg | @ruby_underscore_variable + +ruby_singleton_method_parameters( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_singleton_method_def( + unique int id: @ruby_singleton_method, + int name: @ruby_underscore_method_name ref, + int object: @ruby_singleton_method_object_type ref +); + +ruby_splat_argument_child( + unique int ruby_splat_argument: @ruby_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_splat_argument_def( + unique int id: @ruby_splat_argument +); + +ruby_splat_parameter_name( + unique int ruby_splat_parameter: @ruby_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_splat_parameter_def( + unique int id: @ruby_splat_parameter +); + +@ruby_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_string__, index] +ruby_string_child( + int ruby_string__: @ruby_string__ ref, + int index: int ref, + unique int child: @ruby_string_child_type ref +); + +ruby_string_def( + unique int id: @ruby_string__ +); + +#keyset[ruby_string_array, index] +ruby_string_array_child( + int ruby_string_array: @ruby_string_array ref, + int index: int ref, + unique int child: @ruby_bare_string ref +); + +ruby_string_array_def( + unique int id: @ruby_string_array +); + +@ruby_subshell_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_subshell, index] +ruby_subshell_child( + int ruby_subshell: @ruby_subshell ref, + int index: int ref, + unique int child: @ruby_subshell_child_type ref +); + +ruby_subshell_def( + unique int id: @ruby_subshell +); + +ruby_superclass_def( + unique int id: @ruby_superclass, + int child: @ruby_underscore_expression ref +); + +#keyset[ruby_symbol_array, index] +ruby_symbol_array_child( + int ruby_symbol_array: @ruby_symbol_array ref, + int index: int ref, + unique int child: @ruby_bare_symbol ref +); + +ruby_symbol_array_def( + unique int id: @ruby_symbol_array +); + +ruby_test_pattern_def( + unique int id: @ruby_test_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_then_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_then, index] +ruby_then_child( + int ruby_then: @ruby_then ref, + int index: int ref, + unique int child: @ruby_then_child_type ref +); + +ruby_then_def( + unique int id: @ruby_then +); + +@ruby_unary_operand_type = @ruby_parenthesized_statements | @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_unary.operator of + 0 = @ruby_unary_bang +| 1 = @ruby_unary_plus +| 2 = @ruby_unary_minus +| 3 = @ruby_unary_definedquestion +| 4 = @ruby_unary_not +| 5 = @ruby_unary_tilde +; + + +ruby_unary_def( + unique int id: @ruby_unary, + int operand: @ruby_unary_operand_type ref, + int operator: int ref +); + +#keyset[ruby_undef, index] +ruby_undef_child( + int ruby_undef: @ruby_undef ref, + int index: int ref, + unique int child: @ruby_underscore_method_name ref +); + +ruby_undef_def( + unique int id: @ruby_undef +); + +@ruby_unless_alternative_type = @ruby_else | @ruby_elsif + +ruby_unless_alternative( + unique int ruby_unless: @ruby_unless ref, + unique int alternative: @ruby_unless_alternative_type ref +); + +ruby_unless_consequence( + unique int ruby_unless: @ruby_unless ref, + unique int consequence: @ruby_then ref +); + +ruby_unless_def( + unique int id: @ruby_unless, + int condition: @ruby_underscore_statement ref +); + +ruby_unless_guard_def( + unique int id: @ruby_unless_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_unless_modifier_def( + unique int id: @ruby_unless_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_until_def( + unique int id: @ruby_until, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_until_modifier_def( + unique int id: @ruby_until_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +@ruby_variable_reference_pattern_name_type = @ruby_token_identifier | @ruby_underscore_nonlocal_variable + +ruby_variable_reference_pattern_def( + unique int id: @ruby_variable_reference_pattern, + int name: @ruby_variable_reference_pattern_name_type ref +); + +ruby_when_body( + unique int ruby_when: @ruby_when ref, + unique int body: @ruby_then ref +); + +#keyset[ruby_when, index] +ruby_when_pattern( + int ruby_when: @ruby_when ref, + int index: int ref, + unique int pattern: @ruby_pattern ref +); + +ruby_when_def( + unique int id: @ruby_when +); + +ruby_while_def( + unique int id: @ruby_while, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_while_modifier_def( + unique int id: @ruby_while_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_yield_child( + unique int ruby_yield: @ruby_yield ref, + unique int child: @ruby_argument_list ref +); + +ruby_yield_def( + unique int id: @ruby_yield +); + +ruby_tokeninfo( + unique int id: @ruby_token, + int kind: int ref, + string value: string ref +); + +case @ruby_token.kind of + 0 = @ruby_reserved_word +| 1 = @ruby_token_character +| 2 = @ruby_token_class_variable +| 3 = @ruby_token_comment +| 4 = @ruby_token_constant +| 5 = @ruby_token_empty_statement +| 6 = @ruby_token_encoding +| 7 = @ruby_token_escape_sequence +| 8 = @ruby_token_false +| 9 = @ruby_token_file +| 10 = @ruby_token_float +| 11 = @ruby_token_forward_argument +| 12 = @ruby_token_forward_parameter +| 13 = @ruby_token_global_variable +| 14 = @ruby_token_hash_key_symbol +| 15 = @ruby_token_hash_splat_nil +| 16 = @ruby_token_heredoc_beginning +| 17 = @ruby_token_heredoc_content +| 18 = @ruby_token_heredoc_end +| 19 = @ruby_token_identifier +| 20 = @ruby_token_instance_variable +| 21 = @ruby_token_integer +| 22 = @ruby_token_line +| 23 = @ruby_token_nil +| 24 = @ruby_token_operator +| 25 = @ruby_token_self +| 26 = @ruby_token_simple_symbol +| 27 = @ruby_token_string_content +| 28 = @ruby_token_super +| 29 = @ruby_token_true +| 30 = @ruby_token_uninterpreted +; + + +@ruby_ast_node = @ruby_alias | @ruby_alternative_pattern | @ruby_argument_list | @ruby_array | @ruby_array_pattern | @ruby_as_pattern | @ruby_assignment | @ruby_bare_string | @ruby_bare_symbol | @ruby_begin | @ruby_begin_block | @ruby_binary | @ruby_block | @ruby_block_argument | @ruby_block_body | @ruby_block_parameter | @ruby_block_parameters | @ruby_body_statement | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_complex | @ruby_conditional | @ruby_delimited_symbol | @ruby_destructured_left_assignment | @ruby_destructured_parameter | @ruby_do | @ruby_do_block | @ruby_element_reference | @ruby_else | @ruby_elsif | @ruby_end_block | @ruby_ensure | @ruby_exception_variable | @ruby_exceptions | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_for | @ruby_hash | @ruby_hash_pattern | @ruby_hash_splat_argument | @ruby_hash_splat_parameter | @ruby_heredoc_body | @ruby_if | @ruby_if_guard | @ruby_if_modifier | @ruby_in | @ruby_in_clause | @ruby_interpolation | @ruby_keyword_parameter | @ruby_keyword_pattern | @ruby_lambda | @ruby_lambda_parameters | @ruby_left_assignment_list | @ruby_match_pattern | @ruby_method | @ruby_method_parameters | @ruby_module | @ruby_next | @ruby_operator_assignment | @ruby_optional_parameter | @ruby_pair | @ruby_parenthesized_pattern | @ruby_parenthesized_statements | @ruby_pattern | @ruby_program | @ruby_range | @ruby_rational | @ruby_redo | @ruby_regex | @ruby_rescue | @ruby_rescue_modifier | @ruby_rest_assignment | @ruby_retry | @ruby_return | @ruby_right_assignment_list | @ruby_scope_resolution | @ruby_setter | @ruby_singleton_class | @ruby_singleton_method | @ruby_splat_argument | @ruby_splat_parameter | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_superclass | @ruby_symbol_array | @ruby_test_pattern | @ruby_then | @ruby_token | @ruby_unary | @ruby_undef | @ruby_unless | @ruby_unless_guard | @ruby_unless_modifier | @ruby_until | @ruby_until_modifier | @ruby_variable_reference_pattern | @ruby_when | @ruby_while | @ruby_while_modifier | @ruby_yield + +ruby_ast_node_location( + unique int node: @ruby_ast_node ref, + int loc: @location_default ref +); + +#keyset[parent, parent_index] +ruby_ast_node_parent( + unique int node: @ruby_ast_node ref, + int parent: @ruby_ast_node ref, + int parent_index: int ref +); + +/*- Erb dbscheme -*/ +erb_comment_directive_child( + unique int erb_comment_directive: @erb_comment_directive ref, + unique int child: @erb_token_comment ref +); + +erb_comment_directive_def( + unique int id: @erb_comment_directive +); + +erb_directive_child( + unique int erb_directive: @erb_directive ref, + unique int child: @erb_token_code ref +); + +erb_directive_def( + unique int id: @erb_directive +); + +erb_graphql_directive_child( + unique int erb_graphql_directive: @erb_graphql_directive ref, + unique int child: @erb_token_code ref +); + +erb_graphql_directive_def( + unique int id: @erb_graphql_directive +); + +erb_output_directive_child( + unique int erb_output_directive: @erb_output_directive ref, + unique int child: @erb_token_code ref +); + +erb_output_directive_def( + unique int id: @erb_output_directive +); + +@erb_template_child_type = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_token_content + +#keyset[erb_template, index] +erb_template_child( + int erb_template: @erb_template ref, + int index: int ref, + unique int child: @erb_template_child_type ref +); + +erb_template_def( + unique int id: @erb_template +); + +erb_tokeninfo( + unique int id: @erb_token, + int kind: int ref, + string value: string ref +); + +case @erb_token.kind of + 0 = @erb_reserved_word +| 1 = @erb_token_code +| 2 = @erb_token_comment +| 3 = @erb_token_content +; + + +@erb_ast_node = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_template | @erb_token + +erb_ast_node_location( + unique int node: @erb_ast_node ref, + int loc: @location_default ref +); + +#keyset[parent, parent_index] +erb_ast_node_parent( + unique int node: @erb_ast_node ref, + int parent: @erb_ast_node ref, + int parent_index: int ref +); + diff --git a/ruby/ql/lib/upgrades/40a6b0a5e81115bd870b3a12a1fe954b06362bb7/ruby.dbscheme b/ruby/ql/lib/upgrades/40a6b0a5e81115bd870b3a12a1fe954b06362bb7/ruby.dbscheme new file mode 100644 index 000000000000..dc51d416301d --- /dev/null +++ b/ruby/ql/lib/upgrades/40a6b0a5e81115bd870b3a12a1fe954b06362bb7/ruby.dbscheme @@ -0,0 +1,1532 @@ +// CodeQL database schema for Ruby +// Automatically generated from the tree-sitter grammar; do not edit + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Ruby dbscheme -*/ +@ruby_underscore_arg = @ruby_assignment | @ruby_binary | @ruby_conditional | @ruby_operator_assignment | @ruby_range | @ruby_unary | @ruby_underscore_primary + +@ruby_underscore_call_operator = @ruby_reserved_word + +@ruby_underscore_expression = @ruby_assignment | @ruby_binary | @ruby_break | @ruby_call | @ruby_match_pattern | @ruby_next | @ruby_operator_assignment | @ruby_return | @ruby_test_pattern | @ruby_unary | @ruby_underscore_arg | @ruby_yield + +@ruby_underscore_lhs = @ruby_call | @ruby_element_reference | @ruby_scope_resolution | @ruby_token_false | @ruby_token_nil | @ruby_token_true | @ruby_underscore_variable + +@ruby_underscore_method_name = @ruby_delimited_symbol | @ruby_setter | @ruby_token_constant | @ruby_token_identifier | @ruby_token_operator | @ruby_token_simple_symbol | @ruby_underscore_nonlocal_variable + +@ruby_underscore_nonlocal_variable = @ruby_token_class_variable | @ruby_token_global_variable | @ruby_token_instance_variable + +@ruby_underscore_pattern_constant = @ruby_scope_resolution | @ruby_token_constant + +@ruby_underscore_pattern_expr = @ruby_alternative_pattern | @ruby_as_pattern | @ruby_underscore_pattern_expr_basic + +@ruby_underscore_pattern_expr_basic = @ruby_array_pattern | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_parenthesized_pattern | @ruby_range | @ruby_token_identifier | @ruby_underscore_pattern_constant | @ruby_underscore_pattern_primitive | @ruby_variable_reference_pattern + +@ruby_underscore_pattern_primitive = @ruby_delimited_symbol | @ruby_lambda | @ruby_regex | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_encoding | @ruby_token_false | @ruby_token_file | @ruby_token_heredoc_beginning | @ruby_token_line | @ruby_token_nil | @ruby_token_self | @ruby_token_simple_symbol | @ruby_token_true | @ruby_unary | @ruby_underscore_simple_numeric + +@ruby_underscore_pattern_top_expr_body = @ruby_array_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_underscore_pattern_expr + +@ruby_underscore_primary = @ruby_array | @ruby_begin | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_delimited_symbol | @ruby_for | @ruby_hash | @ruby_if | @ruby_lambda | @ruby_method | @ruby_module | @ruby_next | @ruby_parenthesized_statements | @ruby_redo | @ruby_regex | @ruby_retry | @ruby_return | @ruby_singleton_class | @ruby_singleton_method | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_character | @ruby_token_heredoc_beginning | @ruby_token_simple_symbol | @ruby_unary | @ruby_underscore_lhs | @ruby_underscore_simple_numeric | @ruby_unless | @ruby_until | @ruby_while | @ruby_yield + +@ruby_underscore_simple_numeric = @ruby_complex | @ruby_rational | @ruby_token_float | @ruby_token_integer + +@ruby_underscore_statement = @ruby_alias | @ruby_begin_block | @ruby_end_block | @ruby_if_modifier | @ruby_rescue_modifier | @ruby_undef | @ruby_underscore_expression | @ruby_unless_modifier | @ruby_until_modifier | @ruby_while_modifier + +@ruby_underscore_variable = @ruby_token_constant | @ruby_token_identifier | @ruby_token_self | @ruby_token_super | @ruby_underscore_nonlocal_variable + +ruby_alias_def( + unique int id: @ruby_alias, + int alias: @ruby_underscore_method_name ref, + int name: @ruby_underscore_method_name ref +); + +#keyset[ruby_alternative_pattern, index] +ruby_alternative_pattern_alternatives( + int ruby_alternative_pattern: @ruby_alternative_pattern ref, + int index: int ref, + unique int alternatives: @ruby_underscore_pattern_expr_basic ref +); + +ruby_alternative_pattern_def( + unique int id: @ruby_alternative_pattern +); + +@ruby_argument_list_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_argument_list, index] +ruby_argument_list_child( + int ruby_argument_list: @ruby_argument_list ref, + int index: int ref, + unique int child: @ruby_argument_list_child_type ref +); + +ruby_argument_list_def( + unique int id: @ruby_argument_list +); + +@ruby_array_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_array, index] +ruby_array_child( + int ruby_array: @ruby_array ref, + int index: int ref, + unique int child: @ruby_array_child_type ref +); + +ruby_array_def( + unique int id: @ruby_array +); + +ruby_array_pattern_class( + unique int ruby_array_pattern: @ruby_array_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_array_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_array_pattern, index] +ruby_array_pattern_child( + int ruby_array_pattern: @ruby_array_pattern ref, + int index: int ref, + unique int child: @ruby_array_pattern_child_type ref +); + +ruby_array_pattern_def( + unique int id: @ruby_array_pattern +); + +ruby_as_pattern_def( + unique int id: @ruby_as_pattern, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_pattern_expr ref +); + +@ruby_assignment_left_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +@ruby_assignment_right_type = @ruby_rescue_modifier | @ruby_right_assignment_list | @ruby_splat_argument | @ruby_underscore_expression + +ruby_assignment_def( + unique int id: @ruby_assignment, + int left: @ruby_assignment_left_type ref, + int right: @ruby_assignment_right_type ref +); + +@ruby_bare_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_string, index] +ruby_bare_string_child( + int ruby_bare_string: @ruby_bare_string ref, + int index: int ref, + unique int child: @ruby_bare_string_child_type ref +); + +ruby_bare_string_def( + unique int id: @ruby_bare_string +); + +@ruby_bare_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_symbol, index] +ruby_bare_symbol_child( + int ruby_bare_symbol: @ruby_bare_symbol ref, + int index: int ref, + unique int child: @ruby_bare_symbol_child_type ref +); + +ruby_bare_symbol_def( + unique int id: @ruby_bare_symbol +); + +@ruby_begin_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin, index] +ruby_begin_child( + int ruby_begin: @ruby_begin ref, + int index: int ref, + unique int child: @ruby_begin_child_type ref +); + +ruby_begin_def( + unique int id: @ruby_begin +); + +@ruby_begin_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin_block, index] +ruby_begin_block_child( + int ruby_begin_block: @ruby_begin_block ref, + int index: int ref, + unique int child: @ruby_begin_block_child_type ref +); + +ruby_begin_block_def( + unique int id: @ruby_begin_block +); + +@ruby_binary_left_type = @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_binary.operator of + 0 = @ruby_binary_bangequal +| 1 = @ruby_binary_bangtilde +| 2 = @ruby_binary_percent +| 3 = @ruby_binary_ampersand +| 4 = @ruby_binary_ampersandampersand +| 5 = @ruby_binary_star +| 6 = @ruby_binary_starstar +| 7 = @ruby_binary_plus +| 8 = @ruby_binary_minus +| 9 = @ruby_binary_slash +| 10 = @ruby_binary_langle +| 11 = @ruby_binary_langlelangle +| 12 = @ruby_binary_langleequal +| 13 = @ruby_binary_langleequalrangle +| 14 = @ruby_binary_equalequal +| 15 = @ruby_binary_equalequalequal +| 16 = @ruby_binary_equaltilde +| 17 = @ruby_binary_rangle +| 18 = @ruby_binary_rangleequal +| 19 = @ruby_binary_ranglerangle +| 20 = @ruby_binary_caret +| 21 = @ruby_binary_and +| 22 = @ruby_binary_or +| 23 = @ruby_binary_pipe +| 24 = @ruby_binary_pipepipe +; + + +ruby_binary_def( + unique int id: @ruby_binary, + int left: @ruby_binary_left_type ref, + int operator: int ref, + int right: @ruby_underscore_expression ref +); + +ruby_block_body( + unique int ruby_block: @ruby_block ref, + unique int body: @ruby_block_body ref +); + +ruby_block_parameters( + unique int ruby_block: @ruby_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_block_def( + unique int id: @ruby_block +); + +ruby_block_argument_child( + unique int ruby_block_argument: @ruby_block_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_block_argument_def( + unique int id: @ruby_block_argument +); + +@ruby_block_body_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_block_body, index] +ruby_block_body_child( + int ruby_block_body: @ruby_block_body ref, + int index: int ref, + unique int child: @ruby_block_body_child_type ref +); + +ruby_block_body_def( + unique int id: @ruby_block_body +); + +ruby_block_parameter_name( + unique int ruby_block_parameter: @ruby_block_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_block_parameter_def( + unique int id: @ruby_block_parameter +); + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_locals( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int locals: @ruby_token_identifier ref +); + +@ruby_block_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_child( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int child: @ruby_block_parameters_child_type ref +); + +ruby_block_parameters_def( + unique int id: @ruby_block_parameters +); + +@ruby_body_statement_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_body_statement, index] +ruby_body_statement_child( + int ruby_body_statement: @ruby_body_statement ref, + int index: int ref, + unique int child: @ruby_body_statement_child_type ref +); + +ruby_body_statement_def( + unique int id: @ruby_body_statement +); + +ruby_break_child( + unique int ruby_break: @ruby_break ref, + unique int child: @ruby_argument_list ref +); + +ruby_break_def( + unique int id: @ruby_break +); + +ruby_call_arguments( + unique int ruby_call: @ruby_call ref, + unique int arguments: @ruby_argument_list ref +); + +@ruby_call_block_type = @ruby_block | @ruby_do_block + +ruby_call_block( + unique int ruby_call: @ruby_call ref, + unique int block: @ruby_call_block_type ref +); + +@ruby_call_method_type = @ruby_token_operator | @ruby_underscore_variable + +ruby_call_method( + unique int ruby_call: @ruby_call ref, + unique int method: @ruby_call_method_type ref +); + +ruby_call_operator( + unique int ruby_call: @ruby_call ref, + unique int operator: @ruby_underscore_call_operator ref +); + +ruby_call_receiver( + unique int ruby_call: @ruby_call ref, + unique int receiver: @ruby_underscore_primary ref +); + +ruby_call_def( + unique int id: @ruby_call +); + +ruby_case_value( + unique int ruby_case__: @ruby_case__ ref, + unique int value: @ruby_underscore_statement ref +); + +@ruby_case_child_type = @ruby_else | @ruby_when + +#keyset[ruby_case__, index] +ruby_case_child( + int ruby_case__: @ruby_case__ ref, + int index: int ref, + unique int child: @ruby_case_child_type ref +); + +ruby_case_def( + unique int id: @ruby_case__ +); + +#keyset[ruby_case_match, index] +ruby_case_match_clauses( + int ruby_case_match: @ruby_case_match ref, + int index: int ref, + unique int clauses: @ruby_in_clause ref +); + +ruby_case_match_else( + unique int ruby_case_match: @ruby_case_match ref, + unique int else: @ruby_else ref +); + +ruby_case_match_def( + unique int id: @ruby_case_match, + int value: @ruby_underscore_statement ref +); + +#keyset[ruby_chained_string, index] +ruby_chained_string_child( + int ruby_chained_string: @ruby_chained_string ref, + int index: int ref, + unique int child: @ruby_string__ ref +); + +ruby_chained_string_def( + unique int id: @ruby_chained_string +); + +ruby_class_body( + unique int ruby_class: @ruby_class ref, + unique int body: @ruby_body_statement ref +); + +@ruby_class_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_class_superclass( + unique int ruby_class: @ruby_class ref, + unique int superclass: @ruby_superclass ref +); + +ruby_class_def( + unique int id: @ruby_class, + int name: @ruby_class_name_type ref +); + +@ruby_complex_child_type = @ruby_rational | @ruby_token_float | @ruby_token_integer + +ruby_complex_def( + unique int id: @ruby_complex, + int child: @ruby_complex_child_type ref +); + +ruby_conditional_def( + unique int id: @ruby_conditional, + int alternative: @ruby_underscore_arg ref, + int condition: @ruby_underscore_arg ref, + int consequence: @ruby_underscore_arg ref +); + +@ruby_delimited_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_delimited_symbol, index] +ruby_delimited_symbol_child( + int ruby_delimited_symbol: @ruby_delimited_symbol ref, + int index: int ref, + unique int child: @ruby_delimited_symbol_child_type ref +); + +ruby_delimited_symbol_def( + unique int id: @ruby_delimited_symbol +); + +@ruby_destructured_left_assignment_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_destructured_left_assignment, index] +ruby_destructured_left_assignment_child( + int ruby_destructured_left_assignment: @ruby_destructured_left_assignment ref, + int index: int ref, + unique int child: @ruby_destructured_left_assignment_child_type ref +); + +ruby_destructured_left_assignment_def( + unique int id: @ruby_destructured_left_assignment +); + +@ruby_destructured_parameter_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_destructured_parameter, index] +ruby_destructured_parameter_child( + int ruby_destructured_parameter: @ruby_destructured_parameter ref, + int index: int ref, + unique int child: @ruby_destructured_parameter_child_type ref +); + +ruby_destructured_parameter_def( + unique int id: @ruby_destructured_parameter +); + +@ruby_do_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_do, index] +ruby_do_child( + int ruby_do: @ruby_do ref, + int index: int ref, + unique int child: @ruby_do_child_type ref +); + +ruby_do_def( + unique int id: @ruby_do +); + +ruby_do_block_body( + unique int ruby_do_block: @ruby_do_block ref, + unique int body: @ruby_body_statement ref +); + +ruby_do_block_parameters( + unique int ruby_do_block: @ruby_do_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_do_block_def( + unique int id: @ruby_do_block +); + +@ruby_element_reference_block_type = @ruby_block | @ruby_do_block + +ruby_element_reference_block( + unique int ruby_element_reference: @ruby_element_reference ref, + unique int block: @ruby_element_reference_block_type ref +); + +@ruby_element_reference_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_element_reference, index] +ruby_element_reference_child( + int ruby_element_reference: @ruby_element_reference ref, + int index: int ref, + unique int child: @ruby_element_reference_child_type ref +); + +ruby_element_reference_def( + unique int id: @ruby_element_reference, + int object: @ruby_underscore_primary ref +); + +@ruby_else_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_else, index] +ruby_else_child( + int ruby_else: @ruby_else ref, + int index: int ref, + unique int child: @ruby_else_child_type ref +); + +ruby_else_def( + unique int id: @ruby_else +); + +@ruby_elsif_alternative_type = @ruby_else | @ruby_elsif + +ruby_elsif_alternative( + unique int ruby_elsif: @ruby_elsif ref, + unique int alternative: @ruby_elsif_alternative_type ref +); + +ruby_elsif_consequence( + unique int ruby_elsif: @ruby_elsif ref, + unique int consequence: @ruby_then ref +); + +ruby_elsif_def( + unique int id: @ruby_elsif, + int condition: @ruby_underscore_statement ref +); + +@ruby_end_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_end_block, index] +ruby_end_block_child( + int ruby_end_block: @ruby_end_block ref, + int index: int ref, + unique int child: @ruby_end_block_child_type ref +); + +ruby_end_block_def( + unique int id: @ruby_end_block +); + +@ruby_ensure_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_ensure, index] +ruby_ensure_child( + int ruby_ensure: @ruby_ensure ref, + int index: int ref, + unique int child: @ruby_ensure_child_type ref +); + +ruby_ensure_def( + unique int id: @ruby_ensure +); + +ruby_exception_variable_def( + unique int id: @ruby_exception_variable, + int child: @ruby_underscore_lhs ref +); + +@ruby_exceptions_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_exceptions, index] +ruby_exceptions_child( + int ruby_exceptions: @ruby_exceptions ref, + int index: int ref, + unique int child: @ruby_exceptions_child_type ref +); + +ruby_exceptions_def( + unique int id: @ruby_exceptions +); + +ruby_expression_reference_pattern_def( + unique int id: @ruby_expression_reference_pattern, + int value: @ruby_underscore_expression ref +); + +ruby_find_pattern_class( + unique int ruby_find_pattern: @ruby_find_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_find_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_find_pattern, index] +ruby_find_pattern_child( + int ruby_find_pattern: @ruby_find_pattern ref, + int index: int ref, + unique int child: @ruby_find_pattern_child_type ref +); + +ruby_find_pattern_def( + unique int id: @ruby_find_pattern +); + +@ruby_for_pattern_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +ruby_for_def( + unique int id: @ruby_for, + int body: @ruby_do ref, + int pattern: @ruby_for_pattern_type ref, + int value: @ruby_in ref +); + +@ruby_hash_child_type = @ruby_hash_splat_argument | @ruby_pair + +#keyset[ruby_hash, index] +ruby_hash_child( + int ruby_hash: @ruby_hash ref, + int index: int ref, + unique int child: @ruby_hash_child_type ref +); + +ruby_hash_def( + unique int id: @ruby_hash +); + +ruby_hash_pattern_class( + unique int ruby_hash_pattern: @ruby_hash_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_hash_pattern_child_type = @ruby_hash_splat_parameter | @ruby_keyword_pattern | @ruby_token_hash_splat_nil + +#keyset[ruby_hash_pattern, index] +ruby_hash_pattern_child( + int ruby_hash_pattern: @ruby_hash_pattern ref, + int index: int ref, + unique int child: @ruby_hash_pattern_child_type ref +); + +ruby_hash_pattern_def( + unique int id: @ruby_hash_pattern +); + +ruby_hash_splat_argument_child( + unique int ruby_hash_splat_argument: @ruby_hash_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_hash_splat_argument_def( + unique int id: @ruby_hash_splat_argument +); + +ruby_hash_splat_parameter_name( + unique int ruby_hash_splat_parameter: @ruby_hash_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_hash_splat_parameter_def( + unique int id: @ruby_hash_splat_parameter +); + +@ruby_heredoc_body_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_heredoc_content | @ruby_token_heredoc_end + +#keyset[ruby_heredoc_body, index] +ruby_heredoc_body_child( + int ruby_heredoc_body: @ruby_heredoc_body ref, + int index: int ref, + unique int child: @ruby_heredoc_body_child_type ref +); + +ruby_heredoc_body_def( + unique int id: @ruby_heredoc_body +); + +@ruby_if_alternative_type = @ruby_else | @ruby_elsif + +ruby_if_alternative( + unique int ruby_if: @ruby_if ref, + unique int alternative: @ruby_if_alternative_type ref +); + +ruby_if_consequence( + unique int ruby_if: @ruby_if ref, + unique int consequence: @ruby_then ref +); + +ruby_if_def( + unique int id: @ruby_if, + int condition: @ruby_underscore_statement ref +); + +ruby_if_guard_def( + unique int id: @ruby_if_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_if_modifier_def( + unique int id: @ruby_if_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_in_def( + unique int id: @ruby_in, + int child: @ruby_underscore_arg ref +); + +ruby_in_clause_body( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int body: @ruby_then ref +); + +@ruby_in_clause_guard_type = @ruby_if_guard | @ruby_unless_guard + +ruby_in_clause_guard( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int guard: @ruby_in_clause_guard_type ref +); + +ruby_in_clause_def( + unique int id: @ruby_in_clause, + int pattern: @ruby_underscore_pattern_top_expr_body ref +); + +@ruby_interpolation_child_type = @ruby_token_empty_statement | @ruby_underscore_nonlocal_variable | @ruby_underscore_statement + +#keyset[ruby_interpolation, index] +ruby_interpolation_child( + int ruby_interpolation: @ruby_interpolation ref, + int index: int ref, + unique int child: @ruby_interpolation_child_type ref +); + +ruby_interpolation_def( + unique int id: @ruby_interpolation +); + +ruby_keyword_parameter_value( + unique int ruby_keyword_parameter: @ruby_keyword_parameter ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_keyword_parameter_def( + unique int id: @ruby_keyword_parameter, + int name: @ruby_token_identifier ref +); + +@ruby_keyword_pattern_key_type = @ruby_string__ | @ruby_token_hash_key_symbol + +ruby_keyword_pattern_value( + unique int ruby_keyword_pattern: @ruby_keyword_pattern ref, + unique int value: @ruby_underscore_pattern_expr ref +); + +ruby_keyword_pattern_def( + unique int id: @ruby_keyword_pattern, + int key__: @ruby_keyword_pattern_key_type ref +); + +@ruby_lambda_body_type = @ruby_block | @ruby_do_block + +ruby_lambda_parameters( + unique int ruby_lambda: @ruby_lambda ref, + unique int parameters: @ruby_lambda_parameters ref +); + +ruby_lambda_def( + unique int id: @ruby_lambda, + int body: @ruby_lambda_body_type ref +); + +@ruby_lambda_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_lambda_parameters, index] +ruby_lambda_parameters_child( + int ruby_lambda_parameters: @ruby_lambda_parameters ref, + int index: int ref, + unique int child: @ruby_lambda_parameters_child_type ref +); + +ruby_lambda_parameters_def( + unique int id: @ruby_lambda_parameters +); + +@ruby_left_assignment_list_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_left_assignment_list, index] +ruby_left_assignment_list_child( + int ruby_left_assignment_list: @ruby_left_assignment_list ref, + int index: int ref, + unique int child: @ruby_left_assignment_list_child_type ref +); + +ruby_left_assignment_list_def( + unique int id: @ruby_left_assignment_list +); + +ruby_match_pattern_def( + unique int id: @ruby_match_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_method_body( + unique int ruby_method: @ruby_method ref, + unique int body: @ruby_method_body_type ref +); + +ruby_method_parameters( + unique int ruby_method: @ruby_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_method_def( + unique int id: @ruby_method, + int name: @ruby_underscore_method_name ref +); + +@ruby_method_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_method_parameters, index] +ruby_method_parameters_child( + int ruby_method_parameters: @ruby_method_parameters ref, + int index: int ref, + unique int child: @ruby_method_parameters_child_type ref +); + +ruby_method_parameters_def( + unique int id: @ruby_method_parameters +); + +ruby_module_body( + unique int ruby_module: @ruby_module ref, + unique int body: @ruby_body_statement ref +); + +@ruby_module_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_module_def( + unique int id: @ruby_module, + int name: @ruby_module_name_type ref +); + +ruby_next_child( + unique int ruby_next: @ruby_next ref, + unique int child: @ruby_argument_list ref +); + +ruby_next_def( + unique int id: @ruby_next +); + +case @ruby_operator_assignment.operator of + 0 = @ruby_operator_assignment_percentequal +| 1 = @ruby_operator_assignment_ampersandampersandequal +| 2 = @ruby_operator_assignment_ampersandequal +| 3 = @ruby_operator_assignment_starstarequal +| 4 = @ruby_operator_assignment_starequal +| 5 = @ruby_operator_assignment_plusequal +| 6 = @ruby_operator_assignment_minusequal +| 7 = @ruby_operator_assignment_slashequal +| 8 = @ruby_operator_assignment_langlelangleequal +| 9 = @ruby_operator_assignment_ranglerangleequal +| 10 = @ruby_operator_assignment_caretequal +| 11 = @ruby_operator_assignment_pipeequal +| 12 = @ruby_operator_assignment_pipepipeequal +; + + +@ruby_operator_assignment_right_type = @ruby_rescue_modifier | @ruby_underscore_expression + +ruby_operator_assignment_def( + unique int id: @ruby_operator_assignment, + int left: @ruby_underscore_lhs ref, + int operator: int ref, + int right: @ruby_operator_assignment_right_type ref +); + +ruby_optional_parameter_def( + unique int id: @ruby_optional_parameter, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_arg ref +); + +@ruby_pair_key_type = @ruby_string__ | @ruby_token_hash_key_symbol | @ruby_underscore_arg + +ruby_pair_value( + unique int ruby_pair: @ruby_pair ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_pair_def( + unique int id: @ruby_pair, + int key__: @ruby_pair_key_type ref +); + +ruby_parenthesized_pattern_def( + unique int id: @ruby_parenthesized_pattern, + int child: @ruby_underscore_pattern_expr ref +); + +@ruby_parenthesized_statements_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_parenthesized_statements, index] +ruby_parenthesized_statements_child( + int ruby_parenthesized_statements: @ruby_parenthesized_statements ref, + int index: int ref, + unique int child: @ruby_parenthesized_statements_child_type ref +); + +ruby_parenthesized_statements_def( + unique int id: @ruby_parenthesized_statements +); + +@ruby_pattern_child_type = @ruby_splat_argument | @ruby_underscore_arg + +ruby_pattern_def( + unique int id: @ruby_pattern, + int child: @ruby_pattern_child_type ref +); + +@ruby_program_child_type = @ruby_token_empty_statement | @ruby_token_uninterpreted | @ruby_underscore_statement + +#keyset[ruby_program, index] +ruby_program_child( + int ruby_program: @ruby_program ref, + int index: int ref, + unique int child: @ruby_program_child_type ref +); + +ruby_program_def( + unique int id: @ruby_program +); + +@ruby_range_begin_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_begin( + unique int ruby_range: @ruby_range ref, + unique int begin: @ruby_range_begin_type ref +); + +@ruby_range_end_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_end( + unique int ruby_range: @ruby_range ref, + unique int end: @ruby_range_end_type ref +); + +case @ruby_range.operator of + 0 = @ruby_range_dotdot +| 1 = @ruby_range_dotdotdot +; + + +ruby_range_def( + unique int id: @ruby_range, + int operator: int ref +); + +@ruby_rational_child_type = @ruby_token_float | @ruby_token_integer + +ruby_rational_def( + unique int id: @ruby_rational, + int child: @ruby_rational_child_type ref +); + +ruby_redo_child( + unique int ruby_redo: @ruby_redo ref, + unique int child: @ruby_argument_list ref +); + +ruby_redo_def( + unique int id: @ruby_redo +); + +@ruby_regex_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_regex, index] +ruby_regex_child( + int ruby_regex: @ruby_regex ref, + int index: int ref, + unique int child: @ruby_regex_child_type ref +); + +ruby_regex_def( + unique int id: @ruby_regex +); + +ruby_rescue_body( + unique int ruby_rescue: @ruby_rescue ref, + unique int body: @ruby_then ref +); + +ruby_rescue_exceptions( + unique int ruby_rescue: @ruby_rescue ref, + unique int exceptions: @ruby_exceptions ref +); + +ruby_rescue_variable( + unique int ruby_rescue: @ruby_rescue ref, + unique int variable: @ruby_exception_variable ref +); + +ruby_rescue_def( + unique int id: @ruby_rescue +); + +@ruby_rescue_modifier_body_type = @ruby_underscore_arg | @ruby_underscore_statement + +ruby_rescue_modifier_def( + unique int id: @ruby_rescue_modifier, + int body: @ruby_rescue_modifier_body_type ref, + int handler: @ruby_underscore_expression ref +); + +ruby_rest_assignment_child( + unique int ruby_rest_assignment: @ruby_rest_assignment ref, + unique int child: @ruby_underscore_lhs ref +); + +ruby_rest_assignment_def( + unique int id: @ruby_rest_assignment +); + +ruby_retry_child( + unique int ruby_retry: @ruby_retry ref, + unique int child: @ruby_argument_list ref +); + +ruby_retry_def( + unique int id: @ruby_retry +); + +ruby_return_child( + unique int ruby_return: @ruby_return ref, + unique int child: @ruby_argument_list ref +); + +ruby_return_def( + unique int id: @ruby_return +); + +@ruby_right_assignment_list_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_right_assignment_list, index] +ruby_right_assignment_list_child( + int ruby_right_assignment_list: @ruby_right_assignment_list ref, + int index: int ref, + unique int child: @ruby_right_assignment_list_child_type ref +); + +ruby_right_assignment_list_def( + unique int id: @ruby_right_assignment_list +); + +@ruby_scope_resolution_scope_type = @ruby_underscore_pattern_constant | @ruby_underscore_primary + +ruby_scope_resolution_scope( + unique int ruby_scope_resolution: @ruby_scope_resolution ref, + unique int scope: @ruby_scope_resolution_scope_type ref +); + +ruby_scope_resolution_def( + unique int id: @ruby_scope_resolution, + int name: @ruby_token_constant ref +); + +ruby_setter_def( + unique int id: @ruby_setter, + int name: @ruby_token_identifier ref +); + +ruby_singleton_class_body( + unique int ruby_singleton_class: @ruby_singleton_class ref, + unique int body: @ruby_body_statement ref +); + +ruby_singleton_class_def( + unique int id: @ruby_singleton_class, + int value: @ruby_underscore_arg ref +); + +@ruby_singleton_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_singleton_method_body( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int body: @ruby_singleton_method_body_type ref +); + +@ruby_singleton_method_object_type = @ruby_underscore_arg | @ruby_underscore_variable + +ruby_singleton_method_parameters( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_singleton_method_def( + unique int id: @ruby_singleton_method, + int name: @ruby_underscore_method_name ref, + int object: @ruby_singleton_method_object_type ref +); + +ruby_splat_argument_child( + unique int ruby_splat_argument: @ruby_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_splat_argument_def( + unique int id: @ruby_splat_argument +); + +ruby_splat_parameter_name( + unique int ruby_splat_parameter: @ruby_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_splat_parameter_def( + unique int id: @ruby_splat_parameter +); + +@ruby_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_string__, index] +ruby_string_child( + int ruby_string__: @ruby_string__ ref, + int index: int ref, + unique int child: @ruby_string_child_type ref +); + +ruby_string_def( + unique int id: @ruby_string__ +); + +#keyset[ruby_string_array, index] +ruby_string_array_child( + int ruby_string_array: @ruby_string_array ref, + int index: int ref, + unique int child: @ruby_bare_string ref +); + +ruby_string_array_def( + unique int id: @ruby_string_array +); + +@ruby_subshell_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_subshell, index] +ruby_subshell_child( + int ruby_subshell: @ruby_subshell ref, + int index: int ref, + unique int child: @ruby_subshell_child_type ref +); + +ruby_subshell_def( + unique int id: @ruby_subshell +); + +ruby_superclass_def( + unique int id: @ruby_superclass, + int child: @ruby_underscore_expression ref +); + +#keyset[ruby_symbol_array, index] +ruby_symbol_array_child( + int ruby_symbol_array: @ruby_symbol_array ref, + int index: int ref, + unique int child: @ruby_bare_symbol ref +); + +ruby_symbol_array_def( + unique int id: @ruby_symbol_array +); + +ruby_test_pattern_def( + unique int id: @ruby_test_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_then_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_then, index] +ruby_then_child( + int ruby_then: @ruby_then ref, + int index: int ref, + unique int child: @ruby_then_child_type ref +); + +ruby_then_def( + unique int id: @ruby_then +); + +@ruby_unary_operand_type = @ruby_parenthesized_statements | @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_unary.operator of + 0 = @ruby_unary_bang +| 1 = @ruby_unary_plus +| 2 = @ruby_unary_minus +| 3 = @ruby_unary_definedquestion +| 4 = @ruby_unary_not +| 5 = @ruby_unary_tilde +; + + +ruby_unary_def( + unique int id: @ruby_unary, + int operand: @ruby_unary_operand_type ref, + int operator: int ref +); + +#keyset[ruby_undef, index] +ruby_undef_child( + int ruby_undef: @ruby_undef ref, + int index: int ref, + unique int child: @ruby_underscore_method_name ref +); + +ruby_undef_def( + unique int id: @ruby_undef +); + +@ruby_unless_alternative_type = @ruby_else | @ruby_elsif + +ruby_unless_alternative( + unique int ruby_unless: @ruby_unless ref, + unique int alternative: @ruby_unless_alternative_type ref +); + +ruby_unless_consequence( + unique int ruby_unless: @ruby_unless ref, + unique int consequence: @ruby_then ref +); + +ruby_unless_def( + unique int id: @ruby_unless, + int condition: @ruby_underscore_statement ref +); + +ruby_unless_guard_def( + unique int id: @ruby_unless_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_unless_modifier_def( + unique int id: @ruby_unless_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_until_def( + unique int id: @ruby_until, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_until_modifier_def( + unique int id: @ruby_until_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +@ruby_variable_reference_pattern_name_type = @ruby_token_identifier | @ruby_underscore_nonlocal_variable + +ruby_variable_reference_pattern_def( + unique int id: @ruby_variable_reference_pattern, + int name: @ruby_variable_reference_pattern_name_type ref +); + +ruby_when_body( + unique int ruby_when: @ruby_when ref, + unique int body: @ruby_then ref +); + +#keyset[ruby_when, index] +ruby_when_pattern( + int ruby_when: @ruby_when ref, + int index: int ref, + unique int pattern: @ruby_pattern ref +); + +ruby_when_def( + unique int id: @ruby_when +); + +ruby_while_def( + unique int id: @ruby_while, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_while_modifier_def( + unique int id: @ruby_while_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_yield_child( + unique int ruby_yield: @ruby_yield ref, + unique int child: @ruby_argument_list ref +); + +ruby_yield_def( + unique int id: @ruby_yield +); + +ruby_tokeninfo( + unique int id: @ruby_token, + int kind: int ref, + string value: string ref +); + +case @ruby_token.kind of + 0 = @ruby_reserved_word +| 1 = @ruby_token_character +| 2 = @ruby_token_class_variable +| 3 = @ruby_token_comment +| 4 = @ruby_token_constant +| 5 = @ruby_token_empty_statement +| 6 = @ruby_token_encoding +| 7 = @ruby_token_escape_sequence +| 8 = @ruby_token_false +| 9 = @ruby_token_file +| 10 = @ruby_token_float +| 11 = @ruby_token_forward_argument +| 12 = @ruby_token_forward_parameter +| 13 = @ruby_token_global_variable +| 14 = @ruby_token_hash_key_symbol +| 15 = @ruby_token_hash_splat_nil +| 16 = @ruby_token_heredoc_beginning +| 17 = @ruby_token_heredoc_content +| 18 = @ruby_token_heredoc_end +| 19 = @ruby_token_identifier +| 20 = @ruby_token_instance_variable +| 21 = @ruby_token_integer +| 22 = @ruby_token_line +| 23 = @ruby_token_nil +| 24 = @ruby_token_operator +| 25 = @ruby_token_self +| 26 = @ruby_token_simple_symbol +| 27 = @ruby_token_string_content +| 28 = @ruby_token_super +| 29 = @ruby_token_true +| 30 = @ruby_token_uninterpreted +; + + +@ruby_ast_node = @ruby_alias | @ruby_alternative_pattern | @ruby_argument_list | @ruby_array | @ruby_array_pattern | @ruby_as_pattern | @ruby_assignment | @ruby_bare_string | @ruby_bare_symbol | @ruby_begin | @ruby_begin_block | @ruby_binary | @ruby_block | @ruby_block_argument | @ruby_block_body | @ruby_block_parameter | @ruby_block_parameters | @ruby_body_statement | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_complex | @ruby_conditional | @ruby_delimited_symbol | @ruby_destructured_left_assignment | @ruby_destructured_parameter | @ruby_do | @ruby_do_block | @ruby_element_reference | @ruby_else | @ruby_elsif | @ruby_end_block | @ruby_ensure | @ruby_exception_variable | @ruby_exceptions | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_for | @ruby_hash | @ruby_hash_pattern | @ruby_hash_splat_argument | @ruby_hash_splat_parameter | @ruby_heredoc_body | @ruby_if | @ruby_if_guard | @ruby_if_modifier | @ruby_in | @ruby_in_clause | @ruby_interpolation | @ruby_keyword_parameter | @ruby_keyword_pattern | @ruby_lambda | @ruby_lambda_parameters | @ruby_left_assignment_list | @ruby_match_pattern | @ruby_method | @ruby_method_parameters | @ruby_module | @ruby_next | @ruby_operator_assignment | @ruby_optional_parameter | @ruby_pair | @ruby_parenthesized_pattern | @ruby_parenthesized_statements | @ruby_pattern | @ruby_program | @ruby_range | @ruby_rational | @ruby_redo | @ruby_regex | @ruby_rescue | @ruby_rescue_modifier | @ruby_rest_assignment | @ruby_retry | @ruby_return | @ruby_right_assignment_list | @ruby_scope_resolution | @ruby_setter | @ruby_singleton_class | @ruby_singleton_method | @ruby_splat_argument | @ruby_splat_parameter | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_superclass | @ruby_symbol_array | @ruby_test_pattern | @ruby_then | @ruby_token | @ruby_unary | @ruby_undef | @ruby_unless | @ruby_unless_guard | @ruby_unless_modifier | @ruby_until | @ruby_until_modifier | @ruby_variable_reference_pattern | @ruby_when | @ruby_while | @ruby_while_modifier | @ruby_yield + +ruby_ast_node_location( + unique int node: @ruby_ast_node ref, + int loc: @location_default ref +); + +#keyset[parent, parent_index] +ruby_ast_node_parent( + unique int node: @ruby_ast_node ref, + int parent: @ruby_ast_node ref, + int parent_index: int ref +); + +/*- Erb dbscheme -*/ +erb_comment_directive_child( + unique int erb_comment_directive: @erb_comment_directive ref, + unique int child: @erb_token_comment ref +); + +erb_comment_directive_def( + unique int id: @erb_comment_directive +); + +erb_directive_child( + unique int erb_directive: @erb_directive ref, + unique int child: @erb_token_code ref +); + +erb_directive_def( + unique int id: @erb_directive +); + +erb_graphql_directive_child( + unique int erb_graphql_directive: @erb_graphql_directive ref, + unique int child: @erb_token_code ref +); + +erb_graphql_directive_def( + unique int id: @erb_graphql_directive +); + +erb_output_directive_child( + unique int erb_output_directive: @erb_output_directive ref, + unique int child: @erb_token_code ref +); + +erb_output_directive_def( + unique int id: @erb_output_directive +); + +@erb_template_child_type = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_token_content + +#keyset[erb_template, index] +erb_template_child( + int erb_template: @erb_template ref, + int index: int ref, + unique int child: @erb_template_child_type ref +); + +erb_template_def( + unique int id: @erb_template +); + +erb_tokeninfo( + unique int id: @erb_token, + int kind: int ref, + string value: string ref +); + +case @erb_token.kind of + 0 = @erb_reserved_word +| 1 = @erb_token_code +| 2 = @erb_token_comment +| 3 = @erb_token_content +; + + +@erb_ast_node = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_template | @erb_token + +erb_ast_node_location( + unique int node: @erb_ast_node ref, + int loc: @location_default ref +); + +#keyset[parent, parent_index] +erb_ast_node_parent( + unique int node: @erb_ast_node ref, + int parent: @erb_ast_node ref, + int parent_index: int ref +); + diff --git a/ruby/ql/lib/upgrades/40a6b0a5e81115bd870b3a12a1fe954b06362bb7/upgrade.properties b/ruby/ql/lib/upgrades/40a6b0a5e81115bd870b3a12a1fe954b06362bb7/upgrade.properties new file mode 100644 index 000000000000..9b83871fb9b6 --- /dev/null +++ b/ruby/ql/lib/upgrades/40a6b0a5e81115bd870b3a12a1fe954b06362bb7/upgrade.properties @@ -0,0 +1,2 @@ +description: Add databaseMetadata relation +compatibility: full diff --git a/ruby/ql/lib/utils/test/PrettyPrintModels.ql b/ruby/ql/lib/utils/test/PrettyPrintModels.ql new file mode 100644 index 000000000000..115cc2c12873 --- /dev/null +++ b/ruby/ql/lib/utils/test/PrettyPrintModels.ql @@ -0,0 +1,6 @@ +/** + * @kind test-postprocess + */ + +import codeql.ruby.frameworks.data.internal.ApiGraphModels +import codeql.dataflow.test.ProvenancePathGraph::TestPostProcessing::TranslateProvenanceResults diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index fcee47275f5b..ef903e8d144c 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,10 @@ +## 1.4.0 + +### Query Metadata Changes + +* Update query metadata tags for `rb/database-query-in-loop` and `rb/useless-assignment-to-local` to align with the established +[Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags). + ## 1.3.2 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.4.0.md b/ruby/ql/src/change-notes/released/1.4.0.md new file mode 100644 index 000000000000..2c71d9748b40 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.4.0.md @@ -0,0 +1,6 @@ +## 1.4.0 + +### Query Metadata Changes + +* Update query metadata tags for `rb/database-query-in-loop` and `rb/useless-assignment-to-local` to align with the established +[Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags). diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 86a9cb32d86b..b8b2e97d5086 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.3.2 +lastReleaseVersion: 1.4.0 diff --git a/ruby/ql/src/codeql-suites/ruby-code-quality-extended.qls b/ruby/ql/src/codeql-suites/ruby-code-quality-extended.qls new file mode 100644 index 000000000000..1ee85cae856c --- /dev/null +++ b/ruby/ql/src/codeql-suites/ruby-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/ruby/ql/src/codeql-suites/ruby-security-and-quality.qls b/ruby/ql/src/codeql-suites/ruby-security-and-quality.qls index 588a074cb508..dd91109a3ac2 100644 --- a/ruby/ql/src/codeql-suites/ruby-security-and-quality.qls +++ b/ruby/ql/src/codeql-suites/ruby-security-and-quality.qls @@ -1,4 +1,9 @@ - description: Security-and-quality queries for Ruby - queries: . -- apply: security-and-quality-selectors.yml +- apply: security-and-frozen-quality-selectors.yml from: codeql/suite-helpers +- include: + id: + - rb/database-query-in-loop + - rb/uninitialized-local-variable + - rb/useless-assignment-to-local diff --git a/ruby/ql/src/experimental/manually-check-http-verb/ManuallyCheckHttpVerb.ql b/ruby/ql/src/experimental/manually-check-http-verb/ManuallyCheckHttpVerb.ql index 4af2425b1a82..80113ee78232 100644 --- a/ruby/ql/src/experimental/manually-check-http-verb/ManuallyCheckHttpVerb.ql +++ b/ruby/ql/src/experimental/manually-check-http-verb/ManuallyCheckHttpVerb.ql @@ -88,6 +88,8 @@ private module HttpVerbConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node source) { none() } } private module HttpVerbFlow = TaintTracking::Global; diff --git a/ruby/ql/src/experimental/weak-params/WeakParams.ql b/ruby/ql/src/experimental/weak-params/WeakParams.ql index faec728a2dd8..2abc151a9201 100644 --- a/ruby/ql/src/experimental/weak-params/WeakParams.ql +++ b/ruby/ql/src/experimental/weak-params/WeakParams.ql @@ -48,6 +48,8 @@ private module WeakParamsConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node node) { node = any(PersistentWriteAccess a).getValue() } predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node source) { none() } } private module WeakParamsFlow = TaintTracking::Global; diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index d3963ed7ea47..f5e2a6997b6f 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.3.2 +version: 1.4.1-dev groups: - ruby - queries diff --git a/ruby/ql/src/queries/meta/TaintedNodes.ql b/ruby/ql/src/queries/meta/TaintedNodes.ql index 8ddda63b359e..2ee6e83e0de2 100644 --- a/ruby/ql/src/queries/meta/TaintedNodes.ql +++ b/ruby/ql/src/queries/meta/TaintedNodes.ql @@ -21,6 +21,8 @@ private module BasicTaintConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node source) { none() } } private module BasicTaintFlow = TaintTracking::Global; diff --git a/ruby/ql/src/queries/performance/DatabaseQueryInLoop.ql b/ruby/ql/src/queries/performance/DatabaseQueryInLoop.ql index 835fe620984d..b34ee080fcdd 100644 --- a/ruby/ql/src/queries/performance/DatabaseQueryInLoop.ql +++ b/ruby/ql/src/queries/performance/DatabaseQueryInLoop.ql @@ -5,8 +5,9 @@ * @problem.severity info * @precision high * @id rb/database-query-in-loop - * @tags performance - * quality + * @tags quality + * reliability + * performance */ import ruby diff --git a/ruby/ql/src/queries/variables/DeadStoreOfLocal.ql b/ruby/ql/src/queries/variables/DeadStoreOfLocal.ql index 808ce42dd85d..849fb8ecd5a7 100644 --- a/ruby/ql/src/queries/variables/DeadStoreOfLocal.ql +++ b/ruby/ql/src/queries/variables/DeadStoreOfLocal.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity warning * @id rb/useless-assignment-to-local - * @tags maintainability - * quality + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-563 * @precision high */ diff --git a/ruby/ql/src/queries/variables/UninitializedLocal.md b/ruby/ql/src/queries/variables/UninitializedLocal.md index 4dd3fce43041..c560c511eebd 100644 --- a/ruby/ql/src/queries/variables/UninitializedLocal.md +++ b/ruby/ql/src/queries/variables/UninitializedLocal.md @@ -1,6 +1,4 @@ -# Method call on `nil` - -## Description +## Overview In Ruby, it is not necessary to explicitly initialize variables. If a local variable has not been explicitly initialized, it will have the value `nil`. If this happens unintentionally, though, the variable will not represent an object with the expected methods, and a method call on the variable will raise a `NoMethodError`. @@ -11,7 +9,9 @@ This can be achieved by using a safe navigation or adding a check for `nil`. Note: You do not need to explicitly initialize the variable, if you can make the program deal with the possible `nil` value. In particular, initializing the variable to `nil` will have no effect, as this is already the value of the variable. If `nil` is the only possible default value, you need to handle the `nil` value instead of initializing the variable. -## Examples +## Example + +### Incorrect Usage In the following code, the call to `create_file` may fail and then the call `f.close` will raise a `NoMethodError` since `f` will be `nil` at that point. @@ -24,6 +24,8 @@ ensure end ``` +### Correct Usage + We can fix this by using safe navigation: ```ruby def dump(x) @@ -36,6 +38,5 @@ end ## References -- https://www.rubyguides.com/: [Nil](https://www.rubyguides.com/2018/01/ruby-nil/) -- https://ruby-doc.org/: [NoMethodError](https://ruby-doc.org/core-2.6.5/NoMethodError.html) - +- RubyGuides: [Everything You Need To Know About Nil](https://www.rubyguides.com/2018/01/ruby-nil/). +- Ruby-Doc.org: [NoMethodError](https://ruby-doc.org/core-2.6.5/NoMethodError.html). diff --git a/ruby/ql/test/query-tests/meta/TaintedNodes/TaintedNodes.expected b/ruby/ql/test/query-tests/meta/TaintedNodes/TaintedNodes.expected new file mode 100644 index 000000000000..26956a4ad927 --- /dev/null +++ b/ruby/ql/test/query-tests/meta/TaintedNodes/TaintedNodes.expected @@ -0,0 +1,79 @@ +| tainted_path.rb:4:5:4:24 | ... = ... | Tainted node | +| tainted_path.rb:4:12:4:17 | call to params | Tainted node | +| tainted_path.rb:4:12:4:24 | ...[...] | Tainted node | +| tainted_path.rb:5:26:5:29 | path | Tainted node | +| tainted_path.rb:10:5:10:43 | ... = ... | Tainted node | +| tainted_path.rb:10:12:10:43 | call to absolute_path | Tainted node | +| tainted_path.rb:10:31:10:36 | call to params | Tainted node | +| tainted_path.rb:10:31:10:43 | ...[...] | Tainted node | +| tainted_path.rb:11:26:11:29 | path | Tainted node | +| tainted_path.rb:16:5:16:47 | ... = ... | Tainted node | +| tainted_path.rb:16:12:16:47 | "#{...}/foo" | Tainted node | +| tainted_path.rb:16:13:16:42 | #{...} | Tainted node | +| tainted_path.rb:16:15:16:41 | call to dirname | Tainted node | +| tainted_path.rb:16:28:16:33 | call to params | Tainted node | +| tainted_path.rb:16:28:16:40 | ...[...] | Tainted node | +| tainted_path.rb:17:26:17:29 | path | Tainted node | +| tainted_path.rb:22:5:22:41 | ... = ... | Tainted node | +| tainted_path.rb:22:12:22:41 | call to expand_path | Tainted node | +| tainted_path.rb:22:29:22:34 | call to params | Tainted node | +| tainted_path.rb:22:29:22:41 | ...[...] | Tainted node | +| tainted_path.rb:23:26:23:29 | path | Tainted node | +| tainted_path.rb:28:5:28:34 | ... = ... | Tainted node | +| tainted_path.rb:28:12:28:34 | call to path | Tainted node | +| tainted_path.rb:28:22:28:27 | call to params | Tainted node | +| tainted_path.rb:28:22:28:34 | ...[...] | Tainted node | +| tainted_path.rb:29:26:29:29 | path | Tainted node | +| tainted_path.rb:34:5:34:41 | ... = ... | Tainted node | +| tainted_path.rb:34:12:34:41 | call to realdirpath | Tainted node | +| tainted_path.rb:34:29:34:34 | call to params | Tainted node | +| tainted_path.rb:34:29:34:41 | ...[...] | Tainted node | +| tainted_path.rb:35:26:35:29 | path | Tainted node | +| tainted_path.rb:40:5:40:38 | ... = ... | Tainted node | +| tainted_path.rb:40:12:40:38 | call to realpath | Tainted node | +| tainted_path.rb:40:26:40:31 | call to params | Tainted node | +| tainted_path.rb:40:26:40:38 | ...[...] | Tainted node | +| tainted_path.rb:41:26:41:29 | path | Tainted node | +| tainted_path.rb:47:5:47:63 | ... = ... | Tainted node | +| tainted_path.rb:47:12:47:63 | call to join | Tainted node | +| tainted_path.rb:47:43:47:48 | call to params | Tainted node | +| tainted_path.rb:47:43:47:55 | ...[...] | Tainted node | +| tainted_path.rb:48:26:48:29 | path | Tainted node | +| tainted_path.rb:53:26:53:31 | call to params | Tainted node | +| tainted_path.rb:53:26:53:38 | ...[...] | Tainted node | +| tainted_path.rb:59:5:59:53 | ... = ... | Tainted node | +| tainted_path.rb:59:12:59:53 | call to new | Tainted node | +| tainted_path.rb:59:40:59:45 | call to params | Tainted node | +| tainted_path.rb:59:40:59:52 | ...[...] | Tainted node | +| tainted_path.rb:60:26:60:29 | path | Tainted node | +| tainted_path.rb:65:5:65:63 | ... = ... | Tainted node | +| tainted_path.rb:65:12:65:53 | call to new | Tainted node | +| tainted_path.rb:65:12:65:63 | call to sanitized | Tainted node | +| tainted_path.rb:65:40:65:45 | call to params | Tainted node | +| tainted_path.rb:65:40:65:52 | ...[...] | Tainted node | +| tainted_path.rb:66:26:66:29 | path | Tainted node | +| tainted_path.rb:71:5:71:53 | ... = ... | Tainted node | +| tainted_path.rb:71:12:71:53 | call to new | Tainted node | +| tainted_path.rb:71:40:71:45 | call to params | Tainted node | +| tainted_path.rb:71:40:71:52 | ...[...] | Tainted node | +| tainted_path.rb:72:15:72:18 | path | Tainted node | +| tainted_path.rb:77:5:77:53 | ... = ... | Tainted node | +| tainted_path.rb:77:12:77:53 | call to new | Tainted node | +| tainted_path.rb:77:40:77:45 | call to params | Tainted node | +| tainted_path.rb:77:40:77:52 | ...[...] | Tainted node | +| tainted_path.rb:78:19:78:22 | path | Tainted node | +| tainted_path.rb:79:14:79:17 | path | Tainted node | +| tainted_path.rb:84:5:84:53 | ... = ... | Tainted node | +| tainted_path.rb:84:12:84:53 | call to new | Tainted node | +| tainted_path.rb:84:40:84:45 | call to params | Tainted node | +| tainted_path.rb:84:40:84:52 | ...[...] | Tainted node | +| tainted_path.rb:85:10:85:13 | path | Tainted node | +| tainted_path.rb:86:25:86:28 | path | Tainted node | +| tainted_path.rb:90:5:90:53 | ... = ... | Tainted node | +| tainted_path.rb:90:12:90:53 | call to new | Tainted node | +| tainted_path.rb:90:40:90:45 | call to params | Tainted node | +| tainted_path.rb:90:40:90:52 | ...[...] | Tainted node | +| tainted_path.rb:91:10:91:43 | "Debug: require_relative(#{...})" | Tainted node | +| tainted_path.rb:91:35:91:41 | #{...} | Tainted node | +| tainted_path.rb:91:37:91:40 | path | Tainted node | +| tainted_path.rb:92:11:92:14 | path | Tainted node | diff --git a/ruby/ql/test/query-tests/meta/TaintedNodes/TaintedNodes.qlref b/ruby/ql/test/query-tests/meta/TaintedNodes/TaintedNodes.qlref new file mode 100644 index 000000000000..0fd4f30b68ae --- /dev/null +++ b/ruby/ql/test/query-tests/meta/TaintedNodes/TaintedNodes.qlref @@ -0,0 +1,4 @@ +query: queries/meta/TaintedNodes.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/ruby/ql/test/query-tests/meta/TaintedNodes/tainted_path.rb b/ruby/ql/test/query-tests/meta/TaintedNodes/tainted_path.rb new file mode 100644 index 000000000000..a85c0ad975d2 --- /dev/null +++ b/ruby/ql/test/query-tests/meta/TaintedNodes/tainted_path.rb @@ -0,0 +1,94 @@ +class FooController < ActionController::Base + # BAD + def route0 + path = params[:path] # $ Alert + @content = File.read path # $ Alert + end + + # BAD - File.absolute_path preserves taint + def route1 + path = File.absolute_path params[:path] # $ Alert + @content = File.read path # $ Alert + end + + # BAD - File.dirname preserves taint + def route2 + path = "#{File.dirname(params[:path])}/foo" # $ Alert + @content = File.read path # $ Alert + end + + # BAD - File.expand_path preserves taint + def route3 + path = File.expand_path params[:path] # $ Alert + @content = File.read path # $ Alert + end + + # BAD - File.path preserves taint + def route4 + path = File.path params[:path] # $ Alert + @content = File.read path # $ Alert + end + + # BAD - File.realdirpath preserves taint + def route5 + path = File.realdirpath params[:path] # $ Alert + @content = File.read path # $ Alert + end + + # BAD - File.realpath preserves taint + def route6 + path = File.realpath params[:path] # $ Alert + @content = File.read path # $ Alert + end + + # BAD - tainted arguments in any position propagate to the return value of + # File.join + def route7 + path = File.join("foo", "bar", "baz", params[:path], "qux") # $ Alert + @content = File.read path # $ Alert + end + + # GOOD - File.basename does not preserve taint + def route8 + path = File.basename params[:path] # $ Alert + @content = File.read path # Sanitized + end + + # BAD + def route9 + path = ActiveStorage::Filename.new(params[:path]) # $ Alert + @content = File.read path # $ Alert + end + + # GOOD - explicitly sanitized + def route10 + path = ActiveStorage::Filename.new(params[:path]).sanitized # $ Alert + @content = File.read path # $ SPURIOUS: Alert (should have been sanitized) + end + + # BAD + def route11 + path = ActiveStorage::Filename.new(params[:path]) # $ Alert + send_file path # $ Alert + end + + # BAD + def route12 + path = ActiveStorage::Filename.new(params[:path]) # $ Alert + bla (Dir.glob path) # $ Alert + bla (Dir[path]) # $ Alert + end + + # BAD + def route13 + path = ActiveStorage::Filename.new(params[:path]) # $ Alert + load(path) # $ Alert + autoload(:MyModule, path) # $ Alert + end + + def require_relative() + path = ActiveStorage::Filename.new(params[:path]) # $ Alert + puts "Debug: require_relative(#{path})" # $ Alert + super(path) # $ Alert + end +end diff --git a/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.expected b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.expected index 049edf75ace7..2173fed576a2 100644 --- a/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.expected +++ b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.expected @@ -1,32 +1,49 @@ -models -| 1 | Sink: Terrapin::CommandLine!; Method[new].Argument[0]; command-injection | -| 2 | Sink: Terrapin::CommandLine!; Method[new].Argument[1]; command-injection | +#select +| CommandInjection.rb:7:10:7:15 | #{...} | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:7:10:7:15 | #{...} | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | +| CommandInjection.rb:8:16:8:18 | cmd | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:8:16:8:18 | cmd | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | +| CommandInjection.rb:10:14:10:16 | cmd | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:10:14:10:16 | cmd | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | +| CommandInjection.rb:11:17:11:22 | #{...} | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:11:17:11:22 | #{...} | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | +| CommandInjection.rb:13:9:13:14 | #{...} | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:13:9:13:14 | #{...} | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | +| CommandInjection.rb:30:19:30:24 | #{...} | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:30:19:30:24 | #{...} | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | +| CommandInjection.rb:34:24:34:36 | "echo #{...}" | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:34:24:34:36 | "echo #{...}" | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | +| CommandInjection.rb:35:39:35:51 | "grep #{...}" | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:35:39:35:51 | "grep #{...}" | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | +| CommandInjection.rb:51:24:51:36 | "echo #{...}" | CommandInjection.rb:47:15:47:20 | call to params | CommandInjection.rb:51:24:51:36 | "echo #{...}" | This command depends on a $@. | CommandInjection.rb:47:15:47:20 | call to params | user-provided value | +| CommandInjection.rb:60:14:60:16 | cmd | CommandInjection.rb:55:13:55:18 | call to params | CommandInjection.rb:60:14:60:16 | cmd | This command depends on a $@. | CommandInjection.rb:55:13:55:18 | call to params | user-provided value | +| CommandInjection.rb:75:14:75:29 | "echo #{...}" | CommandInjection.rb:74:18:74:23 | number | CommandInjection.rb:75:14:75:29 | "echo #{...}" | This command depends on a $@. | CommandInjection.rb:74:18:74:23 | number | user-provided value | +| CommandInjection.rb:83:14:83:34 | "echo #{...}" | CommandInjection.rb:82:23:82:33 | blah_number | CommandInjection.rb:83:14:83:34 | "echo #{...}" | This command depends on a $@. | CommandInjection.rb:82:23:82:33 | blah_number | user-provided value | +| CommandInjection.rb:92:14:92:39 | "echo #{...}" | CommandInjection.rb:92:22:92:37 | ...[...] | CommandInjection.rb:92:14:92:39 | "echo #{...}" | This command depends on a $@. | CommandInjection.rb:92:22:92:37 | ...[...] | user-provided value | +| CommandInjection.rb:105:16:105:28 | "cat #{...}" | CommandInjection.rb:104:16:104:21 | call to params | CommandInjection.rb:105:16:105:28 | "cat #{...}" | This command depends on a $@. | CommandInjection.rb:104:16:104:21 | call to params | user-provided value | +| CommandInjection.rb:112:33:112:44 | ...[...] | CommandInjection.rb:112:33:112:38 | call to params | CommandInjection.rb:112:33:112:44 | ...[...] | This command depends on a $@. | CommandInjection.rb:112:33:112:38 | call to params | user-provided value | +| CommandInjection.rb:114:41:114:56 | "#{...}" | CommandInjection.rb:114:44:114:49 | call to params | CommandInjection.rb:114:41:114:56 | "#{...}" | This command depends on a $@. | CommandInjection.rb:114:44:114:49 | call to params | user-provided value | edges | CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:7:10:7:15 | #{...} | provenance | | | CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:8:16:8:18 | cmd | provenance | | | CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:10:14:10:16 | cmd | provenance | | | CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:11:17:11:22 | #{...} | provenance | | | CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:13:9:13:14 | #{...} | provenance | | -| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:29:19:29:24 | #{...} | provenance | | -| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:33:24:33:36 | "echo #{...}" | provenance | AdditionalTaintStep | -| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:34:39:34:51 | "grep #{...}" | provenance | AdditionalTaintStep | +| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:30:19:30:24 | #{...} | provenance | | +| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:34:24:34:36 | "echo #{...}" | provenance | AdditionalTaintStep | +| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:35:39:35:51 | "grep #{...}" | provenance | AdditionalTaintStep | | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:6:15:6:26 | ...[...] | provenance | | | CommandInjection.rb:6:15:6:26 | ...[...] | CommandInjection.rb:6:9:6:11 | cmd | provenance | | -| CommandInjection.rb:46:9:46:11 | cmd | CommandInjection.rb:50:24:50:36 | "echo #{...}" | provenance | AdditionalTaintStep | -| CommandInjection.rb:46:15:46:20 | call to params | CommandInjection.rb:46:15:46:26 | ...[...] | provenance | | -| CommandInjection.rb:46:15:46:26 | ...[...] | CommandInjection.rb:46:9:46:11 | cmd | provenance | | -| CommandInjection.rb:54:7:54:9 | cmd | CommandInjection.rb:59:14:59:16 | cmd | provenance | | -| CommandInjection.rb:54:13:54:18 | call to params | CommandInjection.rb:54:13:54:24 | ...[...] | provenance | | -| CommandInjection.rb:54:13:54:24 | ...[...] | CommandInjection.rb:54:7:54:9 | cmd | provenance | | -| CommandInjection.rb:73:18:73:23 | number | CommandInjection.rb:74:14:74:29 | "echo #{...}" | provenance | AdditionalTaintStep | -| CommandInjection.rb:81:23:81:33 | blah_number | CommandInjection.rb:82:14:82:34 | "echo #{...}" | provenance | AdditionalTaintStep | -| CommandInjection.rb:91:22:91:37 | ...[...] | CommandInjection.rb:91:14:91:39 | "echo #{...}" | provenance | AdditionalTaintStep | -| CommandInjection.rb:103:9:103:12 | file | CommandInjection.rb:104:16:104:28 | "cat #{...}" | provenance | AdditionalTaintStep | -| CommandInjection.rb:103:16:103:21 | call to params | CommandInjection.rb:103:16:103:28 | ...[...] | provenance | | -| CommandInjection.rb:103:16:103:28 | ...[...] | CommandInjection.rb:103:9:103:12 | file | provenance | | -| CommandInjection.rb:111:33:111:38 | call to params | CommandInjection.rb:111:33:111:44 | ...[...] | provenance | Sink:MaD:1 | -| CommandInjection.rb:113:44:113:49 | call to params | CommandInjection.rb:113:44:113:54 | ...[...] | provenance | | -| CommandInjection.rb:113:44:113:54 | ...[...] | CommandInjection.rb:113:41:113:56 | "#{...}" | provenance | AdditionalTaintStep Sink:MaD:2 | +| CommandInjection.rb:47:9:47:11 | cmd | CommandInjection.rb:51:24:51:36 | "echo #{...}" | provenance | AdditionalTaintStep | +| CommandInjection.rb:47:15:47:20 | call to params | CommandInjection.rb:47:15:47:26 | ...[...] | provenance | | +| CommandInjection.rb:47:15:47:26 | ...[...] | CommandInjection.rb:47:9:47:11 | cmd | provenance | | +| CommandInjection.rb:55:7:55:9 | cmd | CommandInjection.rb:60:14:60:16 | cmd | provenance | | +| CommandInjection.rb:55:13:55:18 | call to params | CommandInjection.rb:55:13:55:24 | ...[...] | provenance | | +| CommandInjection.rb:55:13:55:24 | ...[...] | CommandInjection.rb:55:7:55:9 | cmd | provenance | | +| CommandInjection.rb:74:18:74:23 | number | CommandInjection.rb:75:14:75:29 | "echo #{...}" | provenance | AdditionalTaintStep | +| CommandInjection.rb:82:23:82:33 | blah_number | CommandInjection.rb:83:14:83:34 | "echo #{...}" | provenance | AdditionalTaintStep | +| CommandInjection.rb:92:22:92:37 | ...[...] | CommandInjection.rb:92:14:92:39 | "echo #{...}" | provenance | AdditionalTaintStep | +| CommandInjection.rb:104:9:104:12 | file | CommandInjection.rb:105:16:105:28 | "cat #{...}" | provenance | AdditionalTaintStep | +| CommandInjection.rb:104:16:104:21 | call to params | CommandInjection.rb:104:16:104:28 | ...[...] | provenance | | +| CommandInjection.rb:104:16:104:28 | ...[...] | CommandInjection.rb:104:9:104:12 | file | provenance | | +| CommandInjection.rb:112:33:112:38 | call to params | CommandInjection.rb:112:33:112:44 | ...[...] | provenance | Sink:MaD:1 | +| CommandInjection.rb:114:44:114:49 | call to params | CommandInjection.rb:114:44:114:54 | ...[...] | provenance | | +| CommandInjection.rb:114:44:114:54 | ...[...] | CommandInjection.rb:114:41:114:56 | "#{...}" | provenance | AdditionalTaintStep Sink:MaD:2 | +models +| 1 | Sink: Terrapin::CommandLine!; Method[new].Argument[0]; command-injection | +| 2 | Sink: Terrapin::CommandLine!; Method[new].Argument[1]; command-injection | nodes | CommandInjection.rb:6:9:6:11 | cmd | semmle.label | cmd | | CommandInjection.rb:6:15:6:20 | call to params | semmle.label | call to params | @@ -36,47 +53,30 @@ nodes | CommandInjection.rb:10:14:10:16 | cmd | semmle.label | cmd | | CommandInjection.rb:11:17:11:22 | #{...} | semmle.label | #{...} | | CommandInjection.rb:13:9:13:14 | #{...} | semmle.label | #{...} | -| CommandInjection.rb:29:19:29:24 | #{...} | semmle.label | #{...} | -| CommandInjection.rb:33:24:33:36 | "echo #{...}" | semmle.label | "echo #{...}" | -| CommandInjection.rb:34:39:34:51 | "grep #{...}" | semmle.label | "grep #{...}" | -| CommandInjection.rb:46:9:46:11 | cmd | semmle.label | cmd | -| CommandInjection.rb:46:15:46:20 | call to params | semmle.label | call to params | -| CommandInjection.rb:46:15:46:26 | ...[...] | semmle.label | ...[...] | -| CommandInjection.rb:50:24:50:36 | "echo #{...}" | semmle.label | "echo #{...}" | -| CommandInjection.rb:54:7:54:9 | cmd | semmle.label | cmd | -| CommandInjection.rb:54:13:54:18 | call to params | semmle.label | call to params | -| CommandInjection.rb:54:13:54:24 | ...[...] | semmle.label | ...[...] | -| CommandInjection.rb:59:14:59:16 | cmd | semmle.label | cmd | -| CommandInjection.rb:73:18:73:23 | number | semmle.label | number | -| CommandInjection.rb:74:14:74:29 | "echo #{...}" | semmle.label | "echo #{...}" | -| CommandInjection.rb:81:23:81:33 | blah_number | semmle.label | blah_number | -| CommandInjection.rb:82:14:82:34 | "echo #{...}" | semmle.label | "echo #{...}" | -| CommandInjection.rb:91:14:91:39 | "echo #{...}" | semmle.label | "echo #{...}" | -| CommandInjection.rb:91:22:91:37 | ...[...] | semmle.label | ...[...] | -| CommandInjection.rb:103:9:103:12 | file | semmle.label | file | -| CommandInjection.rb:103:16:103:21 | call to params | semmle.label | call to params | -| CommandInjection.rb:103:16:103:28 | ...[...] | semmle.label | ...[...] | -| CommandInjection.rb:104:16:104:28 | "cat #{...}" | semmle.label | "cat #{...}" | -| CommandInjection.rb:111:33:111:38 | call to params | semmle.label | call to params | -| CommandInjection.rb:111:33:111:44 | ...[...] | semmle.label | ...[...] | -| CommandInjection.rb:113:41:113:56 | "#{...}" | semmle.label | "#{...}" | -| CommandInjection.rb:113:44:113:49 | call to params | semmle.label | call to params | -| CommandInjection.rb:113:44:113:54 | ...[...] | semmle.label | ...[...] | +| CommandInjection.rb:30:19:30:24 | #{...} | semmle.label | #{...} | +| CommandInjection.rb:34:24:34:36 | "echo #{...}" | semmle.label | "echo #{...}" | +| CommandInjection.rb:35:39:35:51 | "grep #{...}" | semmle.label | "grep #{...}" | +| CommandInjection.rb:47:9:47:11 | cmd | semmle.label | cmd | +| CommandInjection.rb:47:15:47:20 | call to params | semmle.label | call to params | +| CommandInjection.rb:47:15:47:26 | ...[...] | semmle.label | ...[...] | +| CommandInjection.rb:51:24:51:36 | "echo #{...}" | semmle.label | "echo #{...}" | +| CommandInjection.rb:55:7:55:9 | cmd | semmle.label | cmd | +| CommandInjection.rb:55:13:55:18 | call to params | semmle.label | call to params | +| CommandInjection.rb:55:13:55:24 | ...[...] | semmle.label | ...[...] | +| CommandInjection.rb:60:14:60:16 | cmd | semmle.label | cmd | +| CommandInjection.rb:74:18:74:23 | number | semmle.label | number | +| CommandInjection.rb:75:14:75:29 | "echo #{...}" | semmle.label | "echo #{...}" | +| CommandInjection.rb:82:23:82:33 | blah_number | semmle.label | blah_number | +| CommandInjection.rb:83:14:83:34 | "echo #{...}" | semmle.label | "echo #{...}" | +| CommandInjection.rb:92:14:92:39 | "echo #{...}" | semmle.label | "echo #{...}" | +| CommandInjection.rb:92:22:92:37 | ...[...] | semmle.label | ...[...] | +| CommandInjection.rb:104:9:104:12 | file | semmle.label | file | +| CommandInjection.rb:104:16:104:21 | call to params | semmle.label | call to params | +| CommandInjection.rb:104:16:104:28 | ...[...] | semmle.label | ...[...] | +| CommandInjection.rb:105:16:105:28 | "cat #{...}" | semmle.label | "cat #{...}" | +| CommandInjection.rb:112:33:112:38 | call to params | semmle.label | call to params | +| CommandInjection.rb:112:33:112:44 | ...[...] | semmle.label | ...[...] | +| CommandInjection.rb:114:41:114:56 | "#{...}" | semmle.label | "#{...}" | +| CommandInjection.rb:114:44:114:49 | call to params | semmle.label | call to params | +| CommandInjection.rb:114:44:114:54 | ...[...] | semmle.label | ...[...] | subpaths -#select -| CommandInjection.rb:7:10:7:15 | #{...} | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:7:10:7:15 | #{...} | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | -| CommandInjection.rb:8:16:8:18 | cmd | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:8:16:8:18 | cmd | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | -| CommandInjection.rb:10:14:10:16 | cmd | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:10:14:10:16 | cmd | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | -| CommandInjection.rb:11:17:11:22 | #{...} | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:11:17:11:22 | #{...} | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | -| CommandInjection.rb:13:9:13:14 | #{...} | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:13:9:13:14 | #{...} | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | -| CommandInjection.rb:29:19:29:24 | #{...} | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:29:19:29:24 | #{...} | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | -| CommandInjection.rb:33:24:33:36 | "echo #{...}" | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:33:24:33:36 | "echo #{...}" | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | -| CommandInjection.rb:34:39:34:51 | "grep #{...}" | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:34:39:34:51 | "grep #{...}" | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | -| CommandInjection.rb:50:24:50:36 | "echo #{...}" | CommandInjection.rb:46:15:46:20 | call to params | CommandInjection.rb:50:24:50:36 | "echo #{...}" | This command depends on a $@. | CommandInjection.rb:46:15:46:20 | call to params | user-provided value | -| CommandInjection.rb:59:14:59:16 | cmd | CommandInjection.rb:54:13:54:18 | call to params | CommandInjection.rb:59:14:59:16 | cmd | This command depends on a $@. | CommandInjection.rb:54:13:54:18 | call to params | user-provided value | -| CommandInjection.rb:74:14:74:29 | "echo #{...}" | CommandInjection.rb:73:18:73:23 | number | CommandInjection.rb:74:14:74:29 | "echo #{...}" | This command depends on a $@. | CommandInjection.rb:73:18:73:23 | number | user-provided value | -| CommandInjection.rb:82:14:82:34 | "echo #{...}" | CommandInjection.rb:81:23:81:33 | blah_number | CommandInjection.rb:82:14:82:34 | "echo #{...}" | This command depends on a $@. | CommandInjection.rb:81:23:81:33 | blah_number | user-provided value | -| CommandInjection.rb:91:14:91:39 | "echo #{...}" | CommandInjection.rb:91:22:91:37 | ...[...] | CommandInjection.rb:91:14:91:39 | "echo #{...}" | This command depends on a $@. | CommandInjection.rb:91:22:91:37 | ...[...] | user-provided value | -| CommandInjection.rb:104:16:104:28 | "cat #{...}" | CommandInjection.rb:103:16:103:21 | call to params | CommandInjection.rb:104:16:104:28 | "cat #{...}" | This command depends on a $@. | CommandInjection.rb:103:16:103:21 | call to params | user-provided value | -| CommandInjection.rb:111:33:111:44 | ...[...] | CommandInjection.rb:111:33:111:38 | call to params | CommandInjection.rb:111:33:111:44 | ...[...] | This command depends on a $@. | CommandInjection.rb:111:33:111:38 | call to params | user-provided value | -| CommandInjection.rb:113:41:113:56 | "#{...}" | CommandInjection.rb:113:44:113:49 | call to params | CommandInjection.rb:113:41:113:56 | "#{...}" | This command depends on a $@. | CommandInjection.rb:113:44:113:49 | call to params | user-provided value | diff --git a/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.ql b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.ql deleted file mode 100644 index c0f54091eb4e..000000000000 --- a/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.ql +++ /dev/null @@ -1,16 +0,0 @@ -/** - * @kind path-problem - */ - -import codeql.ruby.AST -import codeql.ruby.security.CommandInjectionQuery -import codeql.dataflow.test.ProvenancePathGraph -import codeql.ruby.frameworks.data.internal.ApiGraphModels -import ShowProvenance - -from CommandInjectionFlow::PathNode source, CommandInjectionFlow::PathNode sink, Source sourceNode -where - CommandInjectionFlow::flowPath(source, sink) and - sourceNode = source.getNode() -select sink.getNode(), source, sink, "This command depends on a $@.", sourceNode, - sourceNode.getSourceType() diff --git a/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.qlref b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.qlref new file mode 100644 index 000000000000..1d0a8c019fbd --- /dev/null +++ b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.qlref @@ -0,0 +1,4 @@ +query: queries/security/cwe-078/CommandInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.rb b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.rb index 12c15a30b158..9fd7c6286a12 100644 --- a/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.rb +++ b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.rb @@ -3,14 +3,15 @@ class UsersController < ActionController::Base def create - cmd = params[:cmd] - `#{cmd}` - system(cmd) + cmd = params[:cmd] # $ Source + `#{cmd}` # $ Alert + system(cmd) # $ Alert system("echo", cmd) # OK, because cmd is not shell interpreted - exec(cmd) - %x(echo #{cmd}) + exec(cmd) # $ Alert + %x(echo #{cmd}) # $ Alert result = <<`EOF` - #{cmd} + #{cmd} #{# $ Alert + } EOF safe_cmd_1 = Shellwords.escape(cmd) @@ -26,12 +27,12 @@ def create if %w(foo bar).include? cmd `echo #{cmd}` else - `echo #{cmd}` + `echo #{cmd}` # $ Alert end # Open3 methods - Open3.capture2("echo #{cmd}") - Open3.pipeline("cat foo.txt", "grep #{cmd}") + Open3.capture2("echo #{cmd}") # $ Alert + Open3.pipeline("cat foo.txt", "grep #{cmd}") # $ Alert Open3.pipeline(["echo", cmd], "tail") # OK, because cmd is not shell interpreted end @@ -43,20 +44,20 @@ def show end def index - cmd = params[:key] + cmd = params[:key] # $ Source if %w(foo bar).include? cmd `echo #{cmd}` end - Open3.capture2("echo #{cmd}") + Open3.capture2("echo #{cmd}") # $ Alert end def update - cmd = params[:key] + cmd = params[:key] # $ Source case cmd when "foo" system(cmd) end - system(cmd) + system(cmd) # $ Alert end end @@ -70,16 +71,16 @@ class QueryType < BaseObject field :with_arg, String, null: false, description: "A field with an argument" do argument :number, Int, "A number", required: true end - def with_arg(number:) - system("echo #{number}") + def with_arg(number:) # $ Source + system("echo #{number}") # $ Alert number.to_s end field :with_method, String, null: false, description: "A field with a custom resolver method", resolver_method: :custom_method do argument :blah_number, Int, "A number", required: true end - def custom_method(blah_number:, number: nil) - system("echo #{blah_number}") + def custom_method(blah_number:, number: nil) # $ Source + system("echo #{blah_number}") # $ Alert system("echo #{number}") # OK, number: is not an `argument` for this field blah_number.to_s end @@ -88,7 +89,7 @@ def custom_method(blah_number:, number: nil) argument :something, Int, "A number", required: true end def with_splat(**args) - system("echo #{args[:something]}") + system("echo #{args[:something]}") # $ Alert args[:something].to_s end @@ -100,17 +101,17 @@ def foo(arg) class Foo < ActionController::Base def create - file = params[:file] - system("cat #{file}") + file = params[:file] # $ Source + system("cat #{file}") # $ Alert # .shellescape system("cat #{file.shellescape}") # OK, because file is shell escaped - + end def index - Terrapin::CommandLine.new(params[:foo], "bar") # BAD + Terrapin::CommandLine.new(params[:foo], "bar") # $ Alert - Terrapin::CommandLine.new("echo", "#{params[foo]}") # BAD + Terrapin::CommandLine.new("echo", "#{params[foo]}") # $ Alert cmd = Terrapin::CommandLine.new("echo", ":msg") cmd.run(msg: params[:foo]) # GOOD diff --git a/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.expected b/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.expected index 67e59fb08c18..b8951412c1f8 100644 --- a/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.expected +++ b/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.expected @@ -1,4 +1,14 @@ -testFailures +#select +| insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | $@ of sensitive file from $@. | insecure_download.rb:27:5:27:46 | call to get | Download | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | HTTP source | +| insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | $@ of sensitive file from $@. | insecure_download.rb:27:5:27:46 | call to get | Download | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | HTTP source | +| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | insecure_download.rb:33:15:33:17 | url | $@ of sensitive file from $@. | insecure_download.rb:33:5:33:18 | call to get | Download | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | HTTP source | +| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | insecure_download.rb:33:15:33:17 | url | $@ of sensitive file from $@. | insecure_download.rb:33:5:33:18 | call to get | Download | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | HTTP source | +| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:33:15:33:17 | url | insecure_download.rb:33:15:33:17 | url | $@ of sensitive file from $@. | insecure_download.rb:33:5:33:18 | call to get | Download | insecure_download.rb:33:15:33:17 | url | HTTP source | +| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:33:15:33:17 | url | insecure_download.rb:33:15:33:17 | url | $@ of sensitive file from $@. | insecure_download.rb:33:5:33:18 | call to get | Download | insecure_download.rb:33:15:33:17 | url | HTTP source | +| insecure_download.rb:37:42:37:68 | "http://example.org/unsafe" | insecure_download.rb:37:42:37:68 | "http://example.org/unsafe" | insecure_download.rb:37:42:37:68 | "http://example.org/unsafe" | $@ of sensitive file from $@. | insecure_download.rb:37:32:37:69 | call to get | Download | insecure_download.rb:37:42:37:68 | "http://example.org/unsafe" | HTTP source | +| insecure_download.rb:41:37:41:63 | "http://example.org/unsafe" | insecure_download.rb:41:37:41:63 | "http://example.org/unsafe" | insecure_download.rb:41:37:41:63 | "http://example.org/unsafe" | $@ of sensitive file from $@. | insecure_download.rb:41:27:41:64 | call to get | Download | insecure_download.rb:41:37:41:63 | "http://example.org/unsafe" | HTTP source | +| insecure_download.rb:43:22:43:56 | "http://example.org/unsafe.unk..." | insecure_download.rb:43:22:43:56 | "http://example.org/unsafe.unk..." | insecure_download.rb:43:22:43:56 | "http://example.org/unsafe.unk..." | $@ of sensitive file from $@. | insecure_download.rb:43:12:43:57 | call to get | Download | insecure_download.rb:43:22:43:56 | "http://example.org/unsafe.unk..." | HTTP source | +| insecure_download.rb:53:65:53:78 | "/myscript.sh" | insecure_download.rb:53:65:53:78 | "/myscript.sh" | insecure_download.rb:53:65:53:78 | "/myscript.sh" | $@ of sensitive file from $@. | insecure_download.rb:53:14:53:79 | call to get | Download | insecure_download.rb:53:65:53:78 | "/myscript.sh" | HTTP source | edges | insecure_download.rb:31:5:31:7 | url : String | insecure_download.rb:33:15:33:17 | url | provenance | | | insecure_download.rb:31:5:31:7 | url : String | insecure_download.rb:33:15:33:17 | url | provenance | | @@ -18,14 +28,3 @@ nodes | insecure_download.rb:43:22:43:56 | "http://example.org/unsafe.unk..." | semmle.label | "http://example.org/unsafe.unk..." | | insecure_download.rb:53:65:53:78 | "/myscript.sh" | semmle.label | "/myscript.sh" | subpaths -#select -| insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | $@ | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | "http://example.org/unsafe.APK" | -| insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | $@ | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | "http://example.org/unsafe.APK" | -| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | insecure_download.rb:33:15:33:17 | url | $@ | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | "http://example.org/unsafe.APK" : String | -| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | insecure_download.rb:33:15:33:17 | url | $@ | insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" : String | "http://example.org/unsafe.APK" : String | -| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:33:15:33:17 | url | insecure_download.rb:33:15:33:17 | url | $@ | insecure_download.rb:33:15:33:17 | url | url | -| insecure_download.rb:33:15:33:17 | url | insecure_download.rb:33:15:33:17 | url | insecure_download.rb:33:15:33:17 | url | $@ | insecure_download.rb:33:15:33:17 | url | url | -| insecure_download.rb:37:42:37:68 | "http://example.org/unsafe" | insecure_download.rb:37:42:37:68 | "http://example.org/unsafe" | insecure_download.rb:37:42:37:68 | "http://example.org/unsafe" | $@ | insecure_download.rb:37:42:37:68 | "http://example.org/unsafe" | "http://example.org/unsafe" | -| insecure_download.rb:41:37:41:63 | "http://example.org/unsafe" | insecure_download.rb:41:37:41:63 | "http://example.org/unsafe" | insecure_download.rb:41:37:41:63 | "http://example.org/unsafe" | $@ | insecure_download.rb:41:37:41:63 | "http://example.org/unsafe" | "http://example.org/unsafe" | -| insecure_download.rb:43:22:43:56 | "http://example.org/unsafe.unk..." | insecure_download.rb:43:22:43:56 | "http://example.org/unsafe.unk..." | insecure_download.rb:43:22:43:56 | "http://example.org/unsafe.unk..." | $@ | insecure_download.rb:43:22:43:56 | "http://example.org/unsafe.unk..." | "http://example.org/unsafe.unk..." | -| insecure_download.rb:53:65:53:78 | "/myscript.sh" | insecure_download.rb:53:65:53:78 | "/myscript.sh" | insecure_download.rb:53:65:53:78 | "/myscript.sh" | $@ | insecure_download.rb:53:65:53:78 | "/myscript.sh" | "/myscript.sh" | diff --git a/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.ql b/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.ql deleted file mode 100644 index a8480b23a2df..000000000000 --- a/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.ql +++ /dev/null @@ -1,23 +0,0 @@ -import codeql.ruby.security.InsecureDownloadQuery -import InsecureDownloadFlow::PathGraph -import utils.test.InlineExpectationsTest -import utils.test.InlineFlowTestUtil - -module FlowTest implements TestSig { - string getARelevantTag() { result = "BAD" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "BAD" and - exists(DataFlow::Node src, DataFlow::Node sink | InsecureDownloadFlow::flow(src, sink) | - sink.getLocation() = location and - element = sink.toString() and - if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" - ) - } -} - -import MakeTest - -from InsecureDownloadFlow::PathNode source, InsecureDownloadFlow::PathNode sink -where InsecureDownloadFlow::flowPath(source, sink) -select sink, source, sink, "$@", source, source.toString() diff --git a/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.qlref b/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.qlref new file mode 100644 index 000000000000..e2048e1cee4f --- /dev/null +++ b/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.qlref @@ -0,0 +1,4 @@ +query: queries/security/cwe-829/InsecureDownload.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/ruby/ql/test/query-tests/security/cwe-829/insecure_download.rb b/ruby/ql/test/query-tests/security/cwe-829/insecure_download.rb index 062de2e4e8f3..80b6c286aad3 100644 --- a/ruby/ql/test/query-tests/security/cwe-829/insecure_download.rb +++ b/ruby/ql/test/query-tests/security/cwe-829/insecure_download.rb @@ -2,7 +2,7 @@ def foo def download_tools(installer) - Excon.get(installer[:url]) # $ MISSING: BAD= (requires hash flow) + Excon.get(installer[:url]) # $ MISSING: Alert (requires hash flow) end constants = { @@ -24,23 +24,23 @@ def bar Excon.get("https://download.microsoft.com/download/5/f/7/5f7acaeb-8363-451f-9425-68a90f98b238/visualcppbuildtools_full.exe") # GOOD - Excon.get("http://example.org/unsafe.APK") # $BAD= + Excon.get("http://example.org/unsafe.APK") # $ Alert end def baz - url = "http://example.org/unsafe.APK" + url = "http://example.org/unsafe.APK" # $ Source - Excon.get(url) # $BAD= + Excon.get(url) # $ Alert end def test - File.open("foo.exe").write(Excon.get("http://example.org/unsafe").body) # $BAD= + File.open("foo.exe").write(Excon.get("http://example.org/unsafe").body) # $ Alert File.open("foo.safe").write(Excon.get("http://example.org/unsafe").body) # GOOD - File.write("foo.exe", Excon.get("http://example.org/unsafe").body) # $BAD= + File.write("foo.exe", Excon.get("http://example.org/unsafe").body) # $ Alert - resp = Excon.get("http://example.org/unsafe.unknown") # $BAD= + resp = Excon.get("http://example.org/unsafe.unknown") # $ Alert file = File.open("unsafe.exe", "w") file.write(resp.body) @@ -50,6 +50,6 @@ def test end def sh - script = Net::HTTP.new("http://mydownload.example.org").get("/myscript.sh").body # $BAD= + script = Net::HTTP.new("http://mydownload.example.org").get("/myscript.sh").body # $ Alert system(script) -end \ No newline at end of file +end diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 60e431ae8835..84b71da2ec96 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -3,6 +3,6 @@ # we want to support. [toolchain] -channel = "1.85" +channel = "1.86" profile = "minimal" components = [ "clippy", "rustfmt" ] diff --git a/rust/ast-generator/Cargo.toml b/rust/ast-generator/Cargo.toml index 233a380b2f71..78c8a9b6d5bd 100644 --- a/rust/ast-generator/Cargo.toml +++ b/rust/ast-generator/Cargo.toml @@ -7,11 +7,11 @@ license = "MIT" # When updating these dependencies, run `rust/update_cargo_deps.sh` [dependencies] ungrammar = "1.16.1" -proc-macro2 = "1.0.94" +proc-macro2 = "1.0.95" quote = "1.0.40" either = "1.15.0" -stdx = {package = "ra_ap_stdx", version = "0.0.273"} +stdx = {package = "ra_ap_stdx", version = "0.0.288"} itertools = "0.14.0" mustache = "0.9.0" serde = { version = "1.0.219", features = ["derive"] } -anyhow = "1.0.97" +anyhow = "1.0.98" diff --git a/rust/ast-generator/README.md b/rust/ast-generator/README.md index 17d75c6445d6..21193bdee1c5 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/ast-generator/src/main.rs b/rust/ast-generator/src/main.rs index 83999711161d..e6f39c4147d8 100644 --- a/rust/ast-generator/src/main.rs +++ b/rust/ast-generator/src/main.rs @@ -52,6 +52,32 @@ fn property_name(type_name: &str, field_name: &str) -> String { name.to_owned() } +fn has_special_emission(type_name: &str) -> bool { + matches!( + type_name, + "Item" + | "AssocItem" + | "ExternItem" + | "Meta" + | "MacroCall" + | "Fn" + | "Struct" + | "Enum" + | "Union" + | "Trait" + | "Module" + | "Variant" + | "PathExpr" + | "RecordExpr" + | "PathPat" + | "RecordPat" + | "TupleStructPat" + | "MethodCallExpr" + | "PathSegment" + | "Const" + ) +} + fn to_lower_snake_case(s: &str) -> String { let mut buf = String::with_capacity(s.len()); let mut prev = false; @@ -114,7 +140,9 @@ fn node_src_to_schema_class( let (ty, child) = match &f.ty { FieldType::String => ("optional[string]".to_string(), false), FieldType::Predicate => ("predicate".to_string(), false), - FieldType::Optional(ty) => (format!("optional[\"{}\"]", class_name(ty)), true), + FieldType::Optional(ty) | FieldType::Body(ty) => { + (format!("optional[\"{}\"]", class_name(ty)), true) + } FieldType::List(ty) => (format!("list[\"{}\"]", class_name(ty)), true), }; SchemaField { @@ -169,6 +197,7 @@ enum FieldType { String, Predicate, Optional(String), + Body(String), List(String), } @@ -177,158 +206,95 @@ struct FieldInfo { ty: FieldType, } +impl FieldInfo { + pub fn optional(name: &str, ty: &str) -> FieldInfo { + FieldInfo { + name: name.to_string(), + ty: FieldType::Optional(ty.to_string()), + } + } + + pub fn body(name: &str, ty: &str) -> FieldInfo { + FieldInfo { + name: name.to_string(), + ty: FieldType::Body(ty.to_string()), + } + } + + pub fn string(name: &str) -> FieldInfo { + FieldInfo { + name: name.to_string(), + ty: FieldType::String, + } + } + + pub fn predicate(name: &str) -> FieldInfo { + FieldInfo { + name: name.to_string(), + ty: FieldType::Predicate, + } + } + + pub fn list(name: &str, ty: &str) -> FieldInfo { + FieldInfo { + name: name.to_string(), + ty: FieldType::List(ty.to_string()), + } + } +} + fn get_additional_fields(node: &AstNodeSrc) -> Vec { match node.name.as_str() { - "Name" | "NameRef" | "Lifetime" => vec![FieldInfo { - name: "text".to_string(), - ty: FieldType::String, - }], - "Abi" => vec![FieldInfo { - name: "abi_string".to_string(), - ty: FieldType::String, - }], - "Literal" => vec![FieldInfo { - name: "text_value".to_string(), - ty: FieldType::String, - }], - "PrefixExpr" => vec![FieldInfo { - name: "operator_name".to_string(), - ty: FieldType::String, - }], + "Name" | "NameRef" | "Lifetime" => vec![FieldInfo::string("text")], + "Abi" => vec![FieldInfo::string("abi_string")], + "Literal" => vec![FieldInfo::string("text_value")], + "PrefixExpr" => vec![FieldInfo::string("operator_name")], "BinExpr" => vec![ - FieldInfo { - name: "lhs".to_string(), - ty: FieldType::Optional("Expr".to_string()), - }, - FieldInfo { - name: "rhs".to_string(), - ty: FieldType::Optional("Expr".to_string()), - }, - FieldInfo { - name: "operator_name".to_string(), - ty: FieldType::String, - }, + FieldInfo::optional("lhs", "Expr"), + FieldInfo::optional("rhs", "Expr"), + FieldInfo::string("operator_name"), ], "IfExpr" => vec![ - FieldInfo { - name: "then_branch".to_string(), - ty: FieldType::Optional("BlockExpr".to_string()), - }, - FieldInfo { - name: "else_branch".to_string(), - ty: FieldType::Optional("ElseBranch".to_string()), - }, - FieldInfo { - name: "condition".to_string(), - ty: FieldType::Optional("Expr".to_string()), - }, + FieldInfo::optional("then_branch", "BlockExpr"), + FieldInfo::optional("else_branch", "ElseBranch"), + FieldInfo::optional("condition", "Expr"), ], "RangeExpr" => vec![ - FieldInfo { - name: "start".to_string(), - ty: FieldType::Optional("Expr".to_string()), - }, - FieldInfo { - name: "end".to_string(), - ty: FieldType::Optional("Expr".to_string()), - }, - FieldInfo { - name: "operator_name".to_string(), - ty: FieldType::String, - }, + FieldInfo::optional("start", "Expr"), + FieldInfo::optional("end", "Expr"), + FieldInfo::string("operator_name"), ], "RangePat" => vec![ - FieldInfo { - name: "start".to_string(), - ty: FieldType::Optional("Pat".to_string()), - }, - FieldInfo { - name: "end".to_string(), - ty: FieldType::Optional("Pat".to_string()), - }, - FieldInfo { - name: "operator_name".to_string(), - ty: FieldType::String, - }, + FieldInfo::optional("start", "Pat"), + FieldInfo::optional("end", "Pat"), + FieldInfo::string("operator_name"), ], "IndexExpr" => vec![ - FieldInfo { - name: "index".to_string(), - ty: FieldType::Optional("Expr".to_string()), - }, - FieldInfo { - name: "base".to_string(), - ty: FieldType::Optional("Expr".to_string()), - }, + FieldInfo::optional("index", "Expr"), + FieldInfo::optional("base", "Expr"), ], "Impl" => vec![ - FieldInfo { - name: "trait_".to_string(), - ty: FieldType::Optional("Type".to_string()), - }, - FieldInfo { - name: "self_ty".to_string(), - ty: FieldType::Optional("Type".to_string()), - }, + FieldInfo::optional("trait_", "Type"), + FieldInfo::optional("self_ty", "Type"), ], - "ForExpr" => vec![FieldInfo { - name: "iterable".to_string(), - ty: FieldType::Optional("Expr".to_string()), - }], - "WhileExpr" => vec![FieldInfo { - name: "condition".to_string(), - ty: FieldType::Optional("Expr".to_string()), - }], - "MatchGuard" => vec![FieldInfo { - name: "condition".to_string(), - ty: FieldType::Optional("Expr".to_string()), - }], + "ForExpr" => vec![FieldInfo::optional("iterable", "Expr")], + "WhileExpr" => vec![FieldInfo::optional("condition", "Expr")], + "MatchGuard" => vec![FieldInfo::optional("condition", "Expr")], "MacroDef" => vec![ - FieldInfo { - name: "args".to_string(), - ty: FieldType::Optional("TokenTree".to_string()), - }, - FieldInfo { - name: "body".to_string(), - ty: FieldType::Optional("TokenTree".to_string()), - }, + FieldInfo::body("args", "TokenTree"), + FieldInfo::body("body", "TokenTree"), ], - "FormatArgsExpr" => vec![FieldInfo { - name: "args".to_string(), - ty: FieldType::List("FormatArgsArg".to_string()), - }], - "ArgList" => vec![FieldInfo { - name: "args".to_string(), - ty: FieldType::List("Expr".to_string()), - }], - "Fn" => vec![FieldInfo { - name: "body".to_string(), - ty: FieldType::Optional("BlockExpr".to_string()), - }], - "Const" => vec![FieldInfo { - name: "body".to_string(), - ty: FieldType::Optional("Expr".to_string()), - }], - "Static" => vec![FieldInfo { - name: "body".to_string(), - ty: FieldType::Optional("Expr".to_string()), - }], - "ClosureExpr" => vec![FieldInfo { - name: "body".to_string(), - ty: FieldType::Optional("Expr".to_string()), - }], - "ArrayExpr" => vec![FieldInfo { - name: "is_semicolon".to_string(), - ty: FieldType::Predicate, - }], - "SelfParam" => vec![FieldInfo { - name: "is_amp".to_string(), - ty: FieldType::Predicate, - }], - "UseTree" => vec![FieldInfo { - name: "is_star".to_string(), - ty: FieldType::Predicate, - }], + "MacroCall" => vec![FieldInfo::body("token_tree", "TokenTree")], + "FormatArgsExpr" => vec![FieldInfo::list("args", "FormatArgsArg")], + "ArgList" => vec![FieldInfo::list("args", "Expr")], + "Fn" => vec![FieldInfo::body("body", "BlockExpr")], + "Const" => vec![FieldInfo::body("body", "Expr")], + "Static" => vec![FieldInfo::body("body", "Expr")], + "Param" => vec![FieldInfo::body("pat", "Pat")], + "ClosureExpr" => vec![FieldInfo::optional("body", "Expr")], + "ArrayExpr" => vec![FieldInfo::predicate("is_semicolon")], + "SelfParam" => vec![FieldInfo::predicate("is_amp")], + "UseTree" => vec![FieldInfo::predicate("is_star")], _ => vec![], } } @@ -352,9 +318,11 @@ fn get_fields(node: &AstNodeSrc) -> Vec { result.extend(get_additional_fields(node)); for field in &node.fields { - match (node.name.as_str(), field.method_name().as_str()) { + let name = field.method_name(); + match (node.name.as_str(), name.as_str()) { ("ArrayExpr", "expr") // The ArrayExpr type also has an 'exprs' field - | ("PathSegment", "ty" | "path_type") // these are broken, handling them manually + | ("PathSegment", "type_anchor") // we flatten TypeAnchor into PathSegment in the extractor + | ("Param", "pat") | ("MacroCall", "token_tree") // handled manually to use `body` => continue, _ => {} } @@ -367,61 +335,30 @@ fn get_fields(node: &AstNodeSrc) -> Vec { Cardinality::Many => FieldType::List(ty.clone()), }, }; - result.push(FieldInfo { - name: field.method_name(), - ty, - }); + result.push(FieldInfo { name, ty }); } for trait_ in &node.traits { match trait_.as_str() { - "HasAttrs" => result.push(FieldInfo { - name: "attrs".to_owned(), - ty: FieldType::List("Attr".to_owned()), - }), - "HasName" => result.push(FieldInfo { - name: "name".to_owned(), - ty: FieldType::Optional("Name".to_owned()), - }), - "HasVisibility" => result.push(FieldInfo { - name: "visibility".to_owned(), - ty: FieldType::Optional("Visibility".to_owned()), - }), + "HasAttrs" => result.push(FieldInfo::list("attrs", "Attr")), + "HasName" => result.push(FieldInfo::optional("name", "Name")), + "HasVisibility" => result.push(FieldInfo::optional("visibility", "Visibility")), "HasGenericParams" => { - result.push(FieldInfo { - name: "generic_param_list".to_owned(), - ty: FieldType::Optional("GenericParamList".to_owned()), - }); - result.push(FieldInfo { - name: "where_clause".to_owned(), - ty: FieldType::Optional("WhereClause".to_owned()), - }) + result.push(FieldInfo::optional( + "generic_param_list", + "GenericParamList", + )); + result.push(FieldInfo::optional("where_clause", "WhereClause")) + } + "HasGenericArgs" => { + result.push(FieldInfo::optional("generic_arg_list", "GenericArgList")) } - "HasGenericArgs" => result.push(FieldInfo { - name: "generic_arg_list".to_owned(), - ty: FieldType::Optional("GenericArgList".to_owned()), - }), - "HasTypeBounds" => result.push(FieldInfo { - name: "type_bound_list".to_owned(), - ty: FieldType::Optional("TypeBoundList".to_owned()), - }), - "HasModuleItem" => result.push(FieldInfo { - name: "items".to_owned(), - ty: FieldType::List("Item".to_owned()), - }), + "HasTypeBounds" => result.push(FieldInfo::optional("type_bound_list", "TypeBoundList")), + "HasModuleItem" => result.push(FieldInfo::list("items", "Item")), "HasLoopBody" => { - result.push(FieldInfo { - name: "label".to_owned(), - ty: FieldType::Optional("Label".to_owned()), - }); - result.push(FieldInfo { - name: "loop_body".to_owned(), - ty: FieldType::Optional("BlockExpr".to_owned()), - }) + result.push(FieldInfo::optional("label", "Label")); + result.push(FieldInfo::optional("loop_body", "BlockExpr")) } - "HasArgList" => result.push(FieldInfo { - name: "arg_list".to_owned(), - ty: FieldType::Optional("ArgList".to_owned()), - }), + "HasArgList" => result.push(FieldInfo::optional("arg_list", "ArgList")), "HasDocComments" => {} _ => panic!("Unknown trait {}", trait_), @@ -444,6 +381,7 @@ struct ExtractorEnumInfo { snake_case_name: String, ast_name: String, variants: Vec, + has_special_emission: bool, } #[derive(Serialize, Default)] @@ -455,6 +393,7 @@ struct ExtractorNodeFieldInfo { predicate: bool, optional: bool, list: bool, + body: bool, } #[derive(Serialize)] @@ -464,6 +403,7 @@ struct ExtractorNodeInfo { ast_name: String, fields: Vec, has_attrs: bool, + has_special_emission: bool, } #[derive(Serialize)] @@ -473,8 +413,8 @@ struct ExtractorInfo { } fn enum_to_extractor_info(node: &AstEnumSrc) -> Option { - if node.name == "VariantDef" { - // currently defined but unused + if node.name == "Adt" { + // no fields have `Adt` type, so we don't need extraction for it return None; } Some(ExtractorEnumInfo { @@ -494,6 +434,7 @@ fn enum_to_extractor_info(node: &AstEnumSrc) -> Option { } }) .collect(), + has_special_emission: has_special_emission(&node.name), }) } @@ -518,6 +459,13 @@ fn field_info_to_extractor_info(name: &str, field: &FieldInfo) -> ExtractorNodeF optional: true, ..Default::default() }, + FieldType::Body(ty) => ExtractorNodeFieldInfo { + name, + method: field.name.clone(), + snake_case_ty: to_lower_snake_case(ty), + body: true, + ..Default::default() + }, FieldType::List(ty) => ExtractorNodeFieldInfo { name, method: field.name.clone(), @@ -541,6 +489,7 @@ fn node_to_extractor_info(node: &AstNodeSrc) -> ExtractorNodeInfo { ast_name: node.name.clone(), fields, has_attrs, + has_special_emission: has_special_emission(&node.name), } } @@ -565,8 +514,11 @@ fn main() -> anyhow::Result<()> { .parse() .expect("Failed to parse grammar"); let mut grammar = codegen::grammar::lower(&grammar); + // remove the VariantDef enum, there is no use for it at the moment + grammar.enums.retain(|e| e.name != "VariantDef"); - grammar.enums.retain(|x| x.name != "Adt"); + // we flatten TypeAnchor into PathSegment in the extractor + grammar.nodes.retain(|x| x.name != "TypeAnchor"); let mut super_types: BTreeMap> = BTreeMap::new(); for node in &grammar.enums { diff --git a/rust/ast-generator/templates/extractor.mustache b/rust/ast-generator/templates/extractor.mustache index b94f8a6043a7..03269c26ae3f 100644 --- a/rust/ast-generator/templates/extractor.mustache +++ b/rust/ast-generator/templates/extractor.mustache @@ -1,8 +1,7 @@ //! Generated by `ast-generator`, do not edit by hand. use super::base::Translator; -use super::mappings::TextValue; -use crate::{pre_emit,post_emit}; +use super::mappings::{TextValue, HasTrapClass, Emission}; use crate::generated; use crate::trap::{Label, TrapId}; use ra_ap_syntax::ast::{ @@ -13,46 +12,44 @@ use ra_ap_syntax::ast::{ use ra_ap_syntax::{AstNode, ast}; impl Translator<'_> { - fn emit_else_branch(&mut self, node: &ast::ElseBranch) -> Option> { - match node { - ast::ElseBranch::IfExpr(inner) => self.emit_if_expr(inner).map(Into::into), - ast::ElseBranch::Block(inner) => self.emit_block_expr(inner).map(Into::into), - } - } {{#enums}} pub(crate) fn emit_{{snake_case_name}}(&mut self, node: &ast::{{ast_name}}) -> Option> { - pre_emit!({{name}}, self, node); + {{>pre_emission}} let label = match node { {{#variants}} ast::{{ast_name}}::{{variant_ast_name}}(inner) => self.emit_{{snake_case_name}}(inner).map(Into::into), {{/variants}} }?; - post_emit!({{name}}, self, node, label); + {{>post_emission}} Some(label) } {{/enums}} {{#nodes}} pub(crate) fn emit_{{snake_case_name}}(&mut self, node: &ast::{{ast_name}}) -> Option> { - pre_emit!({{name}}, self, node); - if self.should_be_excluded(node) { return None; } + {{>pre_emission}} {{#has_attrs}} - if self.should_be_excluded_attrs(node) { return None; } + if self.should_be_excluded(node) { return None; } {{/has_attrs}} {{#fields}} - {{#predicate}} - let {{name}} = node.{{method}}().is_some(); - {{/predicate}} - {{#string}} - let {{name}} = node.try_get_text(); - {{/string}} - {{#list}} - let {{name}} = node.{{method}}().filter_map(|x| self.emit_{{snake_case_ty}}(&x)).collect(); - {{/list}} - {{#optional}} - let {{name}} = node.{{method}}().and_then(|x| self.emit_{{snake_case_ty}}(&x)); - {{/optional}} + let {{name}} = + {{#predicate}} + node.{{method}}().is_some() + {{/predicate}} + {{#string}} + node.try_get_text() + {{/string}} + {{#list}} + node.{{method}}().filter_map(|x| self.emit_{{snake_case_ty}}(&x)).collect() + {{/list}} + {{#optional}} + node.{{method}}().and_then(|x| self.emit_{{snake_case_ty}}(&x)) + {{/optional}} + {{#body}} + if self.should_skip_bodies() { None } else { node.{{method}}().and_then(|x| self.emit_{{snake_case_ty}}(&x)) } + {{/body}} + ; {{/fields}} let label = self.trap.emit(generated::{{name}} { id: TrapId::Star, @@ -61,9 +58,15 @@ impl Translator<'_> { {{/fields}} }); self.emit_location(label, node); - post_emit!({{name}}, self, node, label); + {{>post_emission}} self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } {{/nodes}} } +{{#enums}} +{{>trap_class_mapping}} +{{/enums}} +{{#nodes}} +{{>trap_class_mapping}} +{{/nodes}} diff --git a/rust/ast-generator/templates/post_emission.mustache b/rust/ast-generator/templates/post_emission.mustache new file mode 100644 index 000000000000..fb57a7802a1f --- /dev/null +++ b/rust/ast-generator/templates/post_emission.mustache @@ -0,0 +1,3 @@ +{{#has_special_emission}} +self.post_emit(node, label); +{{/has_special_emission}} diff --git a/rust/ast-generator/templates/pre_emission.mustache b/rust/ast-generator/templates/pre_emission.mustache new file mode 100644 index 000000000000..150529c41290 --- /dev/null +++ b/rust/ast-generator/templates/pre_emission.mustache @@ -0,0 +1,5 @@ +{{#has_special_emission}} +if let Some(label) = self.pre_emit(node) { + return Some(label); +} +{{/has_special_emission}} diff --git a/rust/ast-generator/templates/trap_class_mapping.mustache b/rust/ast-generator/templates/trap_class_mapping.mustache new file mode 100644 index 000000000000..6d833c64067f --- /dev/null +++ b/rust/ast-generator/templates/trap_class_mapping.mustache @@ -0,0 +1,6 @@ +{{#has_special_emission}} + +impl HasTrapClass for ast::{{ast_name}} { + type TrapClass = generated::{{name}}; +} +{{/has_special_emission}} diff --git a/rust/bulk_generation_targets.yml b/rust/bulk_generation_targets.yml new file mode 100644 index 000000000000..baccc89da38a --- /dev/null +++ b/rust/bulk_generation_targets.yml @@ -0,0 +1,25 @@ +strategy: dca +language: rust +destination: rust/ql/lib/ext/generated +single-file: true # dump models into a single file per crate (we do not have proper namespaces) +# 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/downgrades/8e9b0c516ae822286689672d1020707020128a19/old.dbscheme b/rust/downgrades/8e9b0c516ae822286689672d1020707020128a19/old.dbscheme new file mode 100644 index 000000000000..8e9b0c516ae8 --- /dev/null +++ b/rust/downgrades/8e9b0c516ae822286689672d1020707020128a19/old.dbscheme @@ -0,0 +1,3633 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @trait_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/8e9b0c516ae822286689672d1020707020128a19/rust.dbscheme b/rust/downgrades/8e9b0c516ae822286689672d1020707020128a19/rust.dbscheme new file mode 100644 index 000000000000..f72a3d8d021c --- /dev/null +++ b/rust/downgrades/8e9b0c516ae822286689672d1020707020128a19/rust.dbscheme @@ -0,0 +1,3638 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @const +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @trait +| @trait_alias +| @type_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/8e9b0c516ae822286689672d1020707020128a19/upgrade.properties b/rust/downgrades/8e9b0c516ae822286689672d1020707020128a19/upgrade.properties new file mode 100644 index 000000000000..baad5c5cda55 --- /dev/null +++ b/rust/downgrades/8e9b0c516ae822286689672d1020707020128a19/upgrade.properties @@ -0,0 +1,2 @@ +description: Revert making `@assoc_item` and `@extern_item` subtypes of `@item` +compatibility: full diff --git a/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/old.dbscheme b/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/old.dbscheme new file mode 100644 index 000000000000..aa9a0bda17c7 --- /dev/null +++ b/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/old.dbscheme @@ -0,0 +1,3616 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_def +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +@variant_def = + @struct +| @union +| @variant +; + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @const +| @enum +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @struct +| @trait +| @trait_alias +| @type_alias +| @union +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/rust.dbscheme b/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/rust.dbscheme new file mode 100644 index 000000000000..a1005655e9ef --- /dev/null +++ b/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/rust.dbscheme @@ -0,0 +1,3606 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_def +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +@variant_def = + @struct +| @union +| @variant +; + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @const +| @enum +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @struct +| @trait +| @trait_alias +| @type_alias +| @union +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/upgrade.properties b/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/upgrade.properties new file mode 100644 index 000000000000..5ae01660cb97 --- /dev/null +++ b/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/upgrade.properties @@ -0,0 +1,5 @@ +description: Remove `function_has_implementation` and `const_has_implementation` tables +compatibility: full + +function_has_implementation.rel: delete +const_has_implementation.rel: delete diff --git a/rust/downgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/old.dbscheme b/rust/downgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/old.dbscheme new file mode 100644 index 000000000000..e019447231cd --- /dev/null +++ b/rust/downgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/old.dbscheme @@ -0,0 +1,3620 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @const +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @trait +| @trait_alias +| @type_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/rust.dbscheme b/rust/downgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/rust.dbscheme new file mode 100644 index 000000000000..aa9a0bda17c7 --- /dev/null +++ b/rust/downgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/rust.dbscheme @@ -0,0 +1,3616 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_def +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +@variant_def = + @struct +| @union +| @variant +; + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @const +| @enum +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @struct +| @trait +| @trait_alias +| @type_alias +| @union +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/upgrade.properties b/rust/downgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/upgrade.properties new file mode 100644 index 000000000000..8ea80a9f7fe9 --- /dev/null +++ b/rust/downgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/upgrade.properties @@ -0,0 +1,4 @@ +description: Remove `adt_derive_macro_expansions` +compatibility: partial + +adt_derive_macro_expansions.rel: delete diff --git a/rust/downgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/old.dbscheme b/rust/downgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/old.dbscheme new file mode 100644 index 000000000000..e3b3765116ec --- /dev/null +++ b/rust/downgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/old.dbscheme @@ -0,0 +1,3632 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @const +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @trait +| @trait_alias +| @type_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/rust.dbscheme b/rust/downgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/rust.dbscheme new file mode 100644 index 000000000000..e019447231cd --- /dev/null +++ b/rust/downgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/rust.dbscheme @@ -0,0 +1,3620 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @const +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @trait +| @trait_alias +| @type_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/upgrade.properties b/rust/downgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/upgrade.properties new file mode 100644 index 000000000000..18a103d870ff --- /dev/null +++ b/rust/downgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/upgrade.properties @@ -0,0 +1,5 @@ +description: Remove `const_generic_param_lists` and `const_where_clauses` +compatibility: backwards + +const_generic_param_lists.rel: delete +const_where_clauses.rel: delete diff --git a/rust/downgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/old.dbscheme b/rust/downgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/old.dbscheme new file mode 100644 index 000000000000..f72a3d8d021c --- /dev/null +++ b/rust/downgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/old.dbscheme @@ -0,0 +1,3638 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @const +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @trait +| @trait_alias +| @type_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/rust.dbscheme b/rust/downgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/rust.dbscheme new file mode 100644 index 000000000000..e3b3765116ec --- /dev/null +++ b/rust/downgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/rust.dbscheme @@ -0,0 +1,3632 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @const +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @trait +| @trait_alias +| @type_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/upgrade.properties b/rust/downgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/upgrade.properties new file mode 100644 index 000000000000..1d437ec8ac6b --- /dev/null +++ b/rust/downgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/upgrade.properties @@ -0,0 +1,3 @@ +description: Add databaseMetadata relation +compatibility: full +databaseMetadata.rel: delete diff --git a/rust/extractor/BUILD.bazel b/rust/extractor/BUILD.bazel index 124895b149c6..52b551f6335d 100644 --- a/rust/extractor/BUILD.bazel +++ b/rust/extractor/BUILD.bazel @@ -7,6 +7,10 @@ codeql_rust_binary( name = "extractor", srcs = glob(["src/**/*.rs"]), aliases = aliases(), + compile_data = [ + "src/qltest_cargo.mustache", + "src/nightly-toolchain/rust-toolchain.toml", + ], proc_macro_deps = all_crate_deps( proc_macro = True, ) + [ diff --git a/rust/extractor/Cargo.toml b/rust/extractor/Cargo.toml index bdbe7c969eeb..88a3e203a278 100644 --- a/rust/extractor/Cargo.toml +++ b/rust/extractor/Cargo.toml @@ -6,38 +6,39 @@ license = "MIT" # When updating these dependencies, run `rust/update_cargo_deps.sh` [dependencies] -anyhow = "1.0.97" -clap = { version = "4.5.35", features = ["derive"] } +anyhow = "1.0.98" +clap = { version = "4.5.40", features = ["derive"] } figment = { version = "0.10.19", features = ["env", "yaml"] } num-traits = "0.2.19" -ra_ap_base_db = "0.0.273" -ra_ap_hir = "0.0.273" -ra_ap_hir_def = "0.0.273" -ra_ap_ide_db = "0.0.273" -ra_ap_hir_ty = "0.0.273" -ra_ap_hir_expand = "0.0.273" -ra_ap_load-cargo = "0.0.273" -ra_ap_paths = "0.0.273" -ra_ap_project_model = "0.0.273" -ra_ap_syntax = "0.0.273" -ra_ap_vfs = "0.0.273" -ra_ap_parser = "0.0.273" -ra_ap_span = "0.0.273" -ra_ap_cfg = "0.0.273" -ra_ap_intern = "0.0.273" +ra_ap_base_db = "0.0.288" +ra_ap_hir = "0.0.288" +ra_ap_hir_def = "0.0.288" +ra_ap_ide_db = "0.0.288" +ra_ap_hir_ty = "0.0.288" +ra_ap_hir_expand = "0.0.288" +ra_ap_load-cargo = "0.0.288" +ra_ap_paths = "0.0.288" +ra_ap_project_model = "0.0.288" +ra_ap_syntax = "0.0.288" +ra_ap_vfs = "0.0.288" +ra_ap_parser = "0.0.288" +ra_ap_span = "0.0.288" +ra_ap_cfg = "0.0.288" +ra_ap_intern = "0.0.288" serde = "1.0.219" -serde_with = "3.12.0" +serde_with = "3.13.0" triomphe = "0.1.14" argfile = "0.2.1" codeql-extractor = { path = "../../shared/tree-sitter-extractor" } rust-extractor-macros = { path = "macros" } itertools = "0.14.0" glob = "0.3.2" -chrono = { version = "0.4.40", features = ["serde"] } +chrono = { version = "0.4.41", features = ["serde"] } serde_json = "1.0.140" dunce = "1.0.5" -toml = "0.8.20" +toml = "0.8.23" tracing = "0.1.41" tracing-flame = "0.2.0" tracing-subscriber = "0.3.19" -chalk-ir = "0.100.0" +chalk-ir = "0.103.0" +mustache = "0.9.0" diff --git a/rust/extractor/macros/Cargo.toml b/rust/extractor/macros/Cargo.toml index c088e98ea76c..3444aa98758e 100644 --- a/rust/extractor/macros/Cargo.toml +++ b/rust/extractor/macros/Cargo.toml @@ -10,4 +10,4 @@ proc-macro = true # When updating these dependencies, run `rust/update_cargo_deps.sh` [dependencies] quote = "1.0.40" -syn = { version = "2.0.100", features = ["full"] } +syn = { version = "2.0.103", features = ["full"] } diff --git a/rust/extractor/src/archive.rs b/rust/extractor/src/archive.rs index ad27c483942c..2cc3be227016 100644 --- a/rust/extractor/src/archive.rs +++ b/rust/extractor/src/archive.rs @@ -15,7 +15,7 @@ impl Archiver { } fn try_archive(&self, source: &Path) -> std::io::Result<()> { - let dest = file_paths::path_for(&self.root, source, ""); + let dest = file_paths::path_for(&self.root, source, "", None); if fs::metadata(&dest).is_ok() { return Ok(()); } diff --git a/rust/extractor/src/config.rs b/rust/extractor/src/config.rs index a2a74420b5d8..303089b15742 100644 --- a/rust/extractor/src/config.rs +++ b/rust/extractor/src/config.rs @@ -52,7 +52,7 @@ pub struct Config { pub cargo_target: Option, pub cargo_features: Vec, pub cargo_cfg_overrides: Vec, - pub cargo_extra_env: FxHashMap, + pub cargo_extra_env: FxHashMap>, pub cargo_extra_args: Vec, pub cargo_all_targets: bool, pub logging_flamegraph: Option, @@ -62,6 +62,7 @@ pub struct Config { pub qltest: bool, pub qltest_cargo_check: bool, pub qltest_dependencies: Vec, + pub qltest_use_nightly: bool, pub sysroot: Option, pub sysroot_src: Option, pub rustc_src: Option, diff --git a/rust/extractor/src/config/deserialize.rs b/rust/extractor/src/config/deserialize.rs index 4f3d96897909..6e1b9b398b63 100644 --- a/rust/extractor/src/config/deserialize.rs +++ b/rust/extractor/src/config/deserialize.rs @@ -1,5 +1,5 @@ use serde::Deserializer; -use serde::de::{Error, Unexpected, Visitor}; +use serde::de::Visitor; use std::collections::HashMap; use std::fmt::Formatter; use std::hash::BuildHasher; @@ -36,23 +36,22 @@ impl<'de, T: From> Visitor<'de> for VectorVisitor { } impl<'de, S: BuildHasher + Default> Visitor<'de> for MapVisitor { - type Value = HashMap; + type Value = HashMap, S>; fn expecting(&self, formatter: &mut Formatter) -> std::fmt::Result { formatter.write_str( - "either a sequence, or a comma or newline separated string of key=value entries", + "either a sequence, or a comma or newline separated string of key[=value] entries", ) } fn visit_str(self, value: &str) -> Result { - value + Ok(value .split(['\n', ',']) - .map(|s| { - s.split_once('=') - .ok_or_else(|| E::custom(format!("key=value expected, found {s}"))) - .map(|(key, value)| (key.to_owned(), value.to_owned())) + .map(|s| match s.split_once('=') { + Some((key, value)) => (key.to_owned(), Some(value.to_owned())), + None => (s.to_owned(), None), }) - .collect() + .collect()) } fn visit_seq(self, mut seq: A) -> Result @@ -61,10 +60,14 @@ impl<'de, S: BuildHasher + Default> Visitor<'de> for MapVisitor { { let mut ret = HashMap::with_hasher(Default::default()); while let Some(el) = seq.next_element::()? { - let (key, value) = el - .split_once('=') - .ok_or_else(|| A::Error::invalid_value(Unexpected::Str(&el), &self))?; - ret.insert(key.to_owned(), value.to_owned()); + match el.split_once('=') { + None => { + ret.insert(el.to_owned(), None); + } + Some((key, value)) => { + ret.insert(key.to_owned(), Some(value.to_owned())); + } + } } Ok(ret) } @@ -83,7 +86,7 @@ pub(crate) fn deserialize_newline_or_comma_separated_vec< deserializer.deserialize_seq(VectorVisitor(PhantomData)) } -/// deserialize into a map of `String`s to `String`s either of: +/// deserialize into a map of `String`s to `Option`s either of: /// * a sequence of elements serializable into `String`s, or /// * a single element serializable into `String`, then split on `,` and `\n` pub(crate) fn deserialize_newline_or_comma_separated_map< @@ -92,6 +95,6 @@ pub(crate) fn deserialize_newline_or_comma_separated_map< S: BuildHasher + Default, >( deserializer: D, -) -> Result, D::Error> { +) -> Result, S>, D::Error> { deserializer.deserialize_map(MapVisitor(PhantomData)) } diff --git a/rust/extractor/src/generated/.generated.list b/rust/extractor/src/generated/.generated.list index cb687e1bff00..4dcfb5380e12 100644 --- a/rust/extractor/src/generated/.generated.list +++ b/rust/extractor/src/generated/.generated.list @@ -1,2 +1,2 @@ mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 -top.rs 7f8a694078bc0cde1ce420544d0cf5b83bb297dd29ee4f9d7bcbb1572f0e815a 7f8a694078bc0cde1ce420544d0cf5b83bb297dd29ee4f9d7bcbb1572f0e815a +top.rs 409eb2e5fb18cb360a7d255fc2d7926a78bcd2d3c9f8dcdfce0419cea49d1489 409eb2e5fb18cb360a7d255fc2d7926a78bcd2d3c9f8dcdfce0419cea49d1489 diff --git a/rust/extractor/src/generated/top.rs b/rust/extractor/src/generated/top.rs index 6cece591734d..278f4e59ab95 100644 --- a/rust/extractor/src/generated/top.rs +++ b/rust/extractor/src/generated/top.rs @@ -335,9 +335,11 @@ impl Addressable { pub fn emit_extended_canonical_path(id: trap::Label, value: String, out: &mut trap::Writer) { out.add_tuple("addressable_extended_canonical_paths", vec![id.into(), value.into()]); } + pub fn emit_crate_origin(id: trap::Label, value: String, out: &mut trap::Writer) { out.add_tuple("addressable_crate_origins", vec![id.into(), value.into()]); } + } impl trap::TrapClass for Addressable { @@ -693,42 +695,6 @@ impl From> for trap::Label { } } -#[derive(Debug)] -pub struct AssocItem { - _unused: () -} - -impl trap::TrapClass for AssocItem { - fn class_name() -> &'static str { "AssocItem" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme AssocItem is a subclass of AstNode - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme AssocItem is a subclass of Locatable - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme AssocItem is a subclass of Element - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - #[derive(Debug)] pub struct AssocItemList { pub id: trap::TrapId, @@ -955,42 +921,6 @@ impl From> for trap::Label { } } -#[derive(Debug)] -pub struct ExternItem { - _unused: () -} - -impl trap::TrapClass for ExternItem { - fn class_name() -> &'static str { "ExternItem" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternItem is a subclass of AstNode - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternItem is a subclass of Locatable - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternItem is a subclass of Element - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - #[derive(Debug)] pub struct ExternItemList { pub id: trap::TrapId, @@ -2058,9 +1988,11 @@ impl PathSegment { pub fn emit_type_repr(id: trap::Label, value: trap::Label, out: &mut trap::Writer) { out.add_tuple("path_segment_type_reprs", vec![id.into(), value.into()]); } + pub fn emit_trait_type_repr(id: trap::Label, value: trap::Label, out: &mut trap::Writer) { out.add_tuple("path_segment_trait_type_reprs", vec![id.into(), value.into()]); } + } impl trap::TrapClass for PathSegment { @@ -2153,9 +2085,11 @@ impl Resolvable { pub fn emit_resolved_path(id: trap::Label, value: String, out: &mut trap::Writer) { out.add_tuple("resolvable_resolved_paths", vec![id.into(), value.into()]); } + pub fn emit_resolved_crate_origin(id: trap::Label, value: String, out: &mut trap::Writer) { out.add_tuple("resolvable_resolved_crate_origins", vec![id.into(), value.into()]); } + } impl trap::TrapClass for Resolvable { @@ -3221,42 +3155,6 @@ impl From> for trap::Label { } } -#[derive(Debug)] -pub struct VariantDef { - _unused: () -} - -impl trap::TrapClass for VariantDef { - fn class_name() -> &'static str { "VariantDef" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme VariantDef is a subclass of AstNode - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme VariantDef is a subclass of Locatable - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme VariantDef is a subclass of Element - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - #[derive(Debug)] pub struct VariantList { pub id: trap::TrapId, @@ -5764,6 +5662,7 @@ impl Item { pub fn emit_attribute_macro_expansion(id: trap::Label, value: trap::Label, out: &mut trap::Writer) { out.add_tuple("item_attribute_macro_expansions", vec![id.into(), value.into()]); } + } impl trap::TrapClass for Item { @@ -8639,9 +8538,9 @@ impl trap::TrapClass for Variant { fn class_name() -> &'static str { "Variant" } } -impl From> for trap::Label { +impl From> for trap::Label { fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Variant is a subclass of VariantDef + // SAFETY: this is safe because in the dbscheme Variant is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -8675,15 +8574,6 @@ impl From> for trap::Label { } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Variant is a subclass of Addressable - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - #[derive(Debug)] pub struct WildcardPat { pub id: trap::TrapId, @@ -8865,6 +8755,145 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct Adt { + _unused: () +} + +impl Adt { + pub fn emit_derive_macro_expansion(id: trap::Label, i: usize, value: trap::Label, out: &mut trap::Writer) { + out.add_tuple("adt_derive_macro_expansions", vec![id.into(), i.into(), value.into()]); + } + + pub fn emit_derive_macro_expansions(id: trap::Label, values: impl IntoIterator>, out: &mut trap::Writer) { + values + .into_iter() + .enumerate() + .for_each(|(i, value)| Self::emit_derive_macro_expansion(id, i, value, out)); + } +} + +impl trap::TrapClass for Adt { + fn class_name() -> &'static str { "Adt" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Adt is a subclass of Item + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Adt is a subclass of Stmt + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Adt is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Adt is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Adt is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Adt is a subclass of Addressable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct AssocItem { + _unused: () +} + +impl trap::TrapClass for AssocItem { + fn class_name() -> &'static str { "AssocItem" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme AssocItem is a subclass of Item + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme AssocItem is a subclass of Stmt + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme AssocItem is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme AssocItem is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme AssocItem is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme AssocItem is a subclass of Addressable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct BlockExpr { pub id: trap::TrapId, @@ -9042,109 +9071,88 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct Const { - pub id: trap::TrapId, +pub struct ExternBlock { + pub id: trap::TrapId, + pub abi: Option>, pub attrs: Vec>, - pub body: Option>, - pub is_const: bool, - pub is_default: bool, - pub name: Option>, - pub type_repr: Option>, - pub visibility: Option>, + pub extern_item_list: Option>, + pub is_unsafe: bool, } -impl trap::TrapEntry for Const { +impl trap::TrapEntry for ExternBlock { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("consts", vec![id.into()]); - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("const_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.body { - out.add_tuple("const_bodies", vec![id.into(), v.into()]); + out.add_tuple("extern_blocks", vec![id.into()]); + if let Some(v) = self.abi { + out.add_tuple("extern_block_abis", vec![id.into(), v.into()]); } - if self.is_const { - out.add_tuple("const_is_const", vec![id.into()]); + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("extern_block_attrs", vec![id.into(), i.into(), v.into()]); } - if self.is_default { - out.add_tuple("const_is_default", vec![id.into()]); + if let Some(v) = self.extern_item_list { + out.add_tuple("extern_block_extern_item_lists", vec![id.into(), v.into()]); } - if let Some(v) = self.name { - out.add_tuple("const_names", vec![id.into(), v.into()]); - } - if let Some(v) = self.type_repr { - out.add_tuple("const_type_reprs", vec![id.into(), v.into()]); - } - if let Some(v) = self.visibility { - out.add_tuple("const_visibilities", vec![id.into(), v.into()]); + if self.is_unsafe { + out.add_tuple("extern_block_is_unsafe", vec![id.into()]); } } } -impl trap::TrapClass for Const { - fn class_name() -> &'static str { "Const" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Const is a subclass of AssocItem - unsafe { - Self::from_untyped(value.as_untyped()) - } - } +impl trap::TrapClass for ExternBlock { + fn class_name() -> &'static str { "ExternBlock" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Const is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternBlock is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Const is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternBlock is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Const is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternBlock is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Const is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternBlock is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Const is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternBlock is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Const is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternBlock is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -9152,96 +9160,88 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct Enum { - pub id: trap::TrapId, +pub struct ExternCrate { + pub id: trap::TrapId, pub attrs: Vec>, - pub generic_param_list: Option>, - pub name: Option>, - pub variant_list: Option>, + pub identifier: Option>, + pub rename: Option>, pub visibility: Option>, - pub where_clause: Option>, } -impl trap::TrapEntry for Enum { +impl trap::TrapEntry for ExternCrate { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("enums", vec![id.into()]); + out.add_tuple("extern_crates", vec![id.into()]); for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("enum_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.generic_param_list { - out.add_tuple("enum_generic_param_lists", vec![id.into(), v.into()]); + out.add_tuple("extern_crate_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.name { - out.add_tuple("enum_names", vec![id.into(), v.into()]); + if let Some(v) = self.identifier { + out.add_tuple("extern_crate_identifiers", vec![id.into(), v.into()]); } - if let Some(v) = self.variant_list { - out.add_tuple("enum_variant_lists", vec![id.into(), v.into()]); + if let Some(v) = self.rename { + out.add_tuple("extern_crate_renames", vec![id.into(), v.into()]); } if let Some(v) = self.visibility { - out.add_tuple("enum_visibilities", vec![id.into(), v.into()]); - } - if let Some(v) = self.where_clause { - out.add_tuple("enum_where_clauses", vec![id.into(), v.into()]); + out.add_tuple("extern_crate_visibilities", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for Enum { - fn class_name() -> &'static str { "Enum" } +impl trap::TrapClass for ExternCrate { + fn class_name() -> &'static str { "ExternCrate" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Enum is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternCrate is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Enum is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternCrate is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Enum is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternCrate is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Enum is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternCrate is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Enum is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternCrate is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Enum is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternCrate is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -9249,88 +9249,62 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct ExternBlock { - pub id: trap::TrapId, - pub abi: Option>, - pub attrs: Vec>, - pub extern_item_list: Option>, - pub is_unsafe: bool, -} - -impl trap::TrapEntry for ExternBlock { - fn extract_id(&mut self) -> trap::TrapId { - std::mem::replace(&mut self.id, trap::TrapId::Star) - } - - fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("extern_blocks", vec![id.into()]); - if let Some(v) = self.abi { - out.add_tuple("extern_block_abis", vec![id.into(), v.into()]); - } - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("extern_block_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.extern_item_list { - out.add_tuple("extern_block_extern_item_lists", vec![id.into(), v.into()]); - } - if self.is_unsafe { - out.add_tuple("extern_block_is_unsafe", vec![id.into()]); - } - } +pub struct ExternItem { + _unused: () } -impl trap::TrapClass for ExternBlock { - fn class_name() -> &'static str { "ExternBlock" } +impl trap::TrapClass for ExternItem { + fn class_name() -> &'static str { "ExternItem" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternBlock is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternItem is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternBlock is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternItem is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternBlock is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternItem is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternBlock is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternItem is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternBlock is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternItem is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternBlock is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ExternItem is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -9338,88 +9312,112 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct ExternCrate { - pub id: trap::TrapId, +pub struct Impl { + pub id: trap::TrapId, + pub assoc_item_list: Option>, pub attrs: Vec>, - pub identifier: Option>, - pub rename: Option>, + pub generic_param_list: Option>, + pub is_const: bool, + pub is_default: bool, + pub is_unsafe: bool, + pub self_ty: Option>, + pub trait_: Option>, pub visibility: Option>, + pub where_clause: Option>, } -impl trap::TrapEntry for ExternCrate { +impl trap::TrapEntry for Impl { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("extern_crates", vec![id.into()]); + out.add_tuple("impls", vec![id.into()]); + if let Some(v) = self.assoc_item_list { + out.add_tuple("impl_assoc_item_lists", vec![id.into(), v.into()]); + } for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("extern_crate_attrs", vec![id.into(), i.into(), v.into()]); + out.add_tuple("impl_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.identifier { - out.add_tuple("extern_crate_identifiers", vec![id.into(), v.into()]); + if let Some(v) = self.generic_param_list { + out.add_tuple("impl_generic_param_lists", vec![id.into(), v.into()]); } - if let Some(v) = self.rename { - out.add_tuple("extern_crate_renames", vec![id.into(), v.into()]); + if self.is_const { + out.add_tuple("impl_is_const", vec![id.into()]); + } + if self.is_default { + out.add_tuple("impl_is_default", vec![id.into()]); + } + if self.is_unsafe { + out.add_tuple("impl_is_unsafe", vec![id.into()]); + } + if let Some(v) = self.self_ty { + out.add_tuple("impl_self_ties", vec![id.into(), v.into()]); + } + if let Some(v) = self.trait_ { + out.add_tuple("impl_traits", vec![id.into(), v.into()]); } if let Some(v) = self.visibility { - out.add_tuple("extern_crate_visibilities", vec![id.into(), v.into()]); + out.add_tuple("impl_visibilities", vec![id.into(), v.into()]); + } + if let Some(v) = self.where_clause { + out.add_tuple("impl_where_clauses", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for ExternCrate { - fn class_name() -> &'static str { "ExternCrate" } +impl trap::TrapClass for Impl { + fn class_name() -> &'static str { "Impl" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternCrate is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Impl is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternCrate is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Impl is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternCrate is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Impl is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternCrate is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Impl is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternCrate is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Impl is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ExternCrate is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Impl is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -9427,155 +9425,146 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct Function { - pub id: trap::TrapId, - pub param_list: Option>, - pub attrs: Vec>, - pub abi: Option>, - pub body: Option>, - pub generic_param_list: Option>, - pub is_async: bool, - pub is_const: bool, - pub is_default: bool, - pub is_gen: bool, - pub is_unsafe: bool, - pub name: Option>, - pub ret_type: Option>, - pub visibility: Option>, - pub where_clause: Option>, +pub struct LoopingExpr { + _unused: () } -impl trap::TrapEntry for Function { - fn extract_id(&mut self) -> trap::TrapId { - std::mem::replace(&mut self.id, trap::TrapId::Star) - } +impl trap::TrapClass for LoopingExpr { + fn class_name() -> &'static str { "LoopingExpr" } +} - fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("functions", vec![id.into()]); - if let Some(v) = self.param_list { - out.add_tuple("callable_param_lists", vec![id.into(), v.into()]); - } - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("callable_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.abi { - out.add_tuple("function_abis", vec![id.into(), v.into()]); - } - if let Some(v) = self.body { - out.add_tuple("function_bodies", vec![id.into(), v.into()]); - } - if let Some(v) = self.generic_param_list { - out.add_tuple("function_generic_param_lists", vec![id.into(), v.into()]); - } - if self.is_async { - out.add_tuple("function_is_async", vec![id.into()]); - } - if self.is_const { - out.add_tuple("function_is_const", vec![id.into()]); - } - if self.is_default { - out.add_tuple("function_is_default", vec![id.into()]); - } - if self.is_gen { - out.add_tuple("function_is_gen", vec![id.into()]); - } - if self.is_unsafe { - out.add_tuple("function_is_unsafe", vec![id.into()]); - } - if let Some(v) = self.name { - out.add_tuple("function_names", vec![id.into(), v.into()]); - } - if let Some(v) = self.ret_type { - out.add_tuple("function_ret_types", vec![id.into(), v.into()]); - } - if let Some(v) = self.visibility { - out.add_tuple("function_visibilities", vec![id.into(), v.into()]); - } - if let Some(v) = self.where_clause { - out.add_tuple("function_where_clauses", vec![id.into(), v.into()]); +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of LabelableExpr + unsafe { + Self::from_untyped(value.as_untyped()) } } } -impl trap::TrapClass for Function { - fn class_name() -> &'static str { "Function" } +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of Expr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Function is a subclass of AssocItem +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Function is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Function is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Function is a subclass of Element +#[derive(Debug)] +pub struct MacroDef { + pub id: trap::TrapId, + pub args: Option>, + pub attrs: Vec>, + pub body: Option>, + pub name: Option>, + pub visibility: Option>, +} + +impl trap::TrapEntry for MacroDef { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("macro_defs", vec![id.into()]); + if let Some(v) = self.args { + out.add_tuple("macro_def_args", vec![id.into(), v.into()]); + } + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("macro_def_attrs", vec![id.into(), i.into(), v.into()]); + } + if let Some(v) = self.body { + out.add_tuple("macro_def_bodies", vec![id.into(), v.into()]); + } + if let Some(v) = self.name { + out.add_tuple("macro_def_names", vec![id.into(), v.into()]); + } + if let Some(v) = self.visibility { + out.add_tuple("macro_def_visibilities", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for MacroDef { + fn class_name() -> &'static str { "MacroDef" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroDef is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Function is a subclass of ExternItem +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroDef is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Function is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroDef is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Function is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroDef is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Function is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroDef is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Function is a subclass of Callable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroDef is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -9583,112 +9572,88 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct Impl { - pub id: trap::TrapId, - pub assoc_item_list: Option>, +pub struct MacroRules { + pub id: trap::TrapId, pub attrs: Vec>, - pub generic_param_list: Option>, - pub is_const: bool, - pub is_default: bool, - pub is_unsafe: bool, - pub self_ty: Option>, - pub trait_: Option>, + pub name: Option>, + pub token_tree: Option>, pub visibility: Option>, - pub where_clause: Option>, } -impl trap::TrapEntry for Impl { +impl trap::TrapEntry for MacroRules { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("impls", vec![id.into()]); - if let Some(v) = self.assoc_item_list { - out.add_tuple("impl_assoc_item_lists", vec![id.into(), v.into()]); - } + out.add_tuple("macro_rules", vec![id.into()]); for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("impl_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.generic_param_list { - out.add_tuple("impl_generic_param_lists", vec![id.into(), v.into()]); - } - if self.is_const { - out.add_tuple("impl_is_const", vec![id.into()]); - } - if self.is_default { - out.add_tuple("impl_is_default", vec![id.into()]); - } - if self.is_unsafe { - out.add_tuple("impl_is_unsafe", vec![id.into()]); + out.add_tuple("macro_rules_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.self_ty { - out.add_tuple("impl_self_ties", vec![id.into(), v.into()]); + if let Some(v) = self.name { + out.add_tuple("macro_rules_names", vec![id.into(), v.into()]); } - if let Some(v) = self.trait_ { - out.add_tuple("impl_traits", vec![id.into(), v.into()]); + if let Some(v) = self.token_tree { + out.add_tuple("macro_rules_token_trees", vec![id.into(), v.into()]); } if let Some(v) = self.visibility { - out.add_tuple("impl_visibilities", vec![id.into(), v.into()]); - } - if let Some(v) = self.where_clause { - out.add_tuple("impl_where_clauses", vec![id.into(), v.into()]); + out.add_tuple("macro_rules_visibilities", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for Impl { - fn class_name() -> &'static str { "Impl" } +impl trap::TrapClass for MacroRules { + fn class_name() -> &'static str { "MacroRules" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Impl is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroRules is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Impl is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroRules is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Impl is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroRules is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Impl is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroRules is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Impl is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroRules is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Impl is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroRules is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -9696,53 +9661,92 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct LoopingExpr { - _unused: () +pub struct MethodCallExpr { + pub id: trap::TrapId, + pub arg_list: Option>, + pub attrs: Vec>, + pub generic_arg_list: Option>, + pub identifier: Option>, + pub receiver: Option>, } -impl trap::TrapClass for LoopingExpr { - fn class_name() -> &'static str { "LoopingExpr" } +impl trap::TrapEntry for MethodCallExpr { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("method_call_exprs", vec![id.into()]); + if let Some(v) = self.arg_list { + out.add_tuple("call_expr_base_arg_lists", vec![id.into(), v.into()]); + } + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("call_expr_base_attrs", vec![id.into(), i.into(), v.into()]); + } + if let Some(v) = self.generic_arg_list { + out.add_tuple("method_call_expr_generic_arg_lists", vec![id.into(), v.into()]); + } + if let Some(v) = self.identifier { + out.add_tuple("method_call_expr_identifiers", vec![id.into(), v.into()]); + } + if let Some(v) = self.receiver { + out.add_tuple("method_call_expr_receivers", vec![id.into(), v.into()]); + } + } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of LabelableExpr +impl trap::TrapClass for MethodCallExpr { + fn class_name() -> &'static str { "MethodCallExpr" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MethodCallExpr is a subclass of CallExprBase unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of Expr +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MethodCallExpr is a subclass of Expr unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MethodCallExpr is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MethodCallExpr is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MethodCallExpr is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MethodCallExpr is a subclass of Resolvable unsafe { Self::from_untyped(value.as_untyped()) } @@ -9750,108 +9754,88 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct MacroCall { - pub id: trap::TrapId, +pub struct Module { + pub id: trap::TrapId, pub attrs: Vec>, - pub path: Option>, - pub token_tree: Option>, + pub item_list: Option>, + pub name: Option>, + pub visibility: Option>, } -impl trap::TrapEntry for MacroCall { +impl trap::TrapEntry for Module { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("macro_calls", vec![id.into()]); + out.add_tuple("modules", vec![id.into()]); for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("macro_call_attrs", vec![id.into(), i.into(), v.into()]); + out.add_tuple("module_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.path { - out.add_tuple("macro_call_paths", vec![id.into(), v.into()]); + if let Some(v) = self.item_list { + out.add_tuple("module_item_lists", vec![id.into(), v.into()]); } - if let Some(v) = self.token_tree { - out.add_tuple("macro_call_token_trees", vec![id.into(), v.into()]); + if let Some(v) = self.name { + out.add_tuple("module_names", vec![id.into(), v.into()]); } - } -} - -impl MacroCall { - pub fn emit_macro_call_expansion(id: trap::Label, value: trap::Label, out: &mut trap::Writer) { - out.add_tuple("macro_call_macro_call_expansions", vec![id.into(), value.into()]); - } -} - -impl trap::TrapClass for MacroCall { - fn class_name() -> &'static str { "MacroCall" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of AssocItem - unsafe { - Self::from_untyped(value.as_untyped()) + if let Some(v) = self.visibility { + out.add_tuple("module_visibilities", vec![id.into(), v.into()]); } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of AstNode - unsafe { - Self::from_untyped(value.as_untyped()) - } - } +impl trap::TrapClass for Module { + fn class_name() -> &'static str { "Module" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Module is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Module is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of ExternItem +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Module is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Module is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Module is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Module is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -9859,92 +9843,89 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct MacroDef { - pub id: trap::TrapId, - pub args: Option>, +pub struct PathExpr { + pub id: trap::TrapId, + pub path: Option>, pub attrs: Vec>, - pub body: Option>, - pub name: Option>, - pub visibility: Option>, } -impl trap::TrapEntry for MacroDef { +impl trap::TrapEntry for PathExpr { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("macro_defs", vec![id.into()]); - if let Some(v) = self.args { - out.add_tuple("macro_def_args", vec![id.into(), v.into()]); + out.add_tuple("path_exprs", vec![id.into()]); + if let Some(v) = self.path { + out.add_tuple("path_ast_node_paths", vec![id.into(), v.into()]); } for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("macro_def_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.body { - out.add_tuple("macro_def_bodies", vec![id.into(), v.into()]); - } - if let Some(v) = self.name { - out.add_tuple("macro_def_names", vec![id.into(), v.into()]); - } - if let Some(v) = self.visibility { - out.add_tuple("macro_def_visibilities", vec![id.into(), v.into()]); + out.add_tuple("path_expr_attrs", vec![id.into(), i.into(), v.into()]); } } } -impl trap::TrapClass for MacroDef { - fn class_name() -> &'static str { "MacroDef" } +impl trap::TrapClass for PathExpr { + fn class_name() -> &'static str { "PathExpr" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroDef is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of PathExprBase unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroDef is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of Expr unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroDef is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroDef is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroDef is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroDef is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of PathAstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of Resolvable unsafe { Self::from_untyped(value.as_untyped()) } @@ -9952,88 +9933,76 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct MacroRules { - pub id: trap::TrapId, - pub attrs: Vec>, - pub name: Option>, - pub token_tree: Option>, - pub visibility: Option>, +pub struct PathPat { + pub id: trap::TrapId, + pub path: Option>, } -impl trap::TrapEntry for MacroRules { +impl trap::TrapEntry for PathPat { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("macro_rules", vec![id.into()]); - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("macro_rules_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.name { - out.add_tuple("macro_rules_names", vec![id.into(), v.into()]); - } - if let Some(v) = self.token_tree { - out.add_tuple("macro_rules_token_trees", vec![id.into(), v.into()]); - } - if let Some(v) = self.visibility { - out.add_tuple("macro_rules_visibilities", vec![id.into(), v.into()]); + out.add_tuple("path_pats", vec![id.into()]); + if let Some(v) = self.path { + out.add_tuple("path_ast_node_paths", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for MacroRules { - fn class_name() -> &'static str { "MacroRules" } +impl trap::TrapClass for PathPat { + fn class_name() -> &'static str { "PathPat" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroRules is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathPat is a subclass of Pat unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroRules is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathPat is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroRules is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathPat is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroRules is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathPat is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroRules is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathPat is a subclass of PathAstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroRules is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PathPat is a subclass of Resolvable unsafe { Self::from_untyped(value.as_untyped()) } @@ -10041,92 +10010,80 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct MethodCallExpr { - pub id: trap::TrapId, - pub arg_list: Option>, - pub attrs: Vec>, - pub generic_arg_list: Option>, - pub identifier: Option>, - pub receiver: Option>, +pub struct StructExpr { + pub id: trap::TrapId, + pub path: Option>, + pub struct_expr_field_list: Option>, } -impl trap::TrapEntry for MethodCallExpr { +impl trap::TrapEntry for StructExpr { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("method_call_exprs", vec![id.into()]); - if let Some(v) = self.arg_list { - out.add_tuple("call_expr_base_arg_lists", vec![id.into(), v.into()]); - } - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("call_expr_base_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.generic_arg_list { - out.add_tuple("method_call_expr_generic_arg_lists", vec![id.into(), v.into()]); - } - if let Some(v) = self.identifier { - out.add_tuple("method_call_expr_identifiers", vec![id.into(), v.into()]); + out.add_tuple("struct_exprs", vec![id.into()]); + if let Some(v) = self.path { + out.add_tuple("path_ast_node_paths", vec![id.into(), v.into()]); } - if let Some(v) = self.receiver { - out.add_tuple("method_call_expr_receivers", vec![id.into(), v.into()]); + if let Some(v) = self.struct_expr_field_list { + out.add_tuple("struct_expr_struct_expr_field_lists", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for MethodCallExpr { - fn class_name() -> &'static str { "MethodCallExpr" } +impl trap::TrapClass for StructExpr { + fn class_name() -> &'static str { "StructExpr" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MethodCallExpr is a subclass of CallExprBase +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme StructExpr is a subclass of Expr unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MethodCallExpr is a subclass of Expr +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme StructExpr is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MethodCallExpr is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme StructExpr is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MethodCallExpr is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme StructExpr is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MethodCallExpr is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme StructExpr is a subclass of PathAstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MethodCallExpr is a subclass of Resolvable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme StructExpr is a subclass of Resolvable unsafe { Self::from_untyped(value.as_untyped()) } @@ -10134,88 +10091,80 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct Module { - pub id: trap::TrapId, - pub attrs: Vec>, - pub item_list: Option>, - pub name: Option>, - pub visibility: Option>, +pub struct StructPat { + pub id: trap::TrapId, + pub path: Option>, + pub struct_pat_field_list: Option>, } -impl trap::TrapEntry for Module { +impl trap::TrapEntry for StructPat { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("modules", vec![id.into()]); - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("module_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.item_list { - out.add_tuple("module_item_lists", vec![id.into(), v.into()]); - } - if let Some(v) = self.name { - out.add_tuple("module_names", vec![id.into(), v.into()]); + out.add_tuple("struct_pats", vec![id.into()]); + if let Some(v) = self.path { + out.add_tuple("path_ast_node_paths", vec![id.into(), v.into()]); } - if let Some(v) = self.visibility { - out.add_tuple("module_visibilities", vec![id.into(), v.into()]); + if let Some(v) = self.struct_pat_field_list { + out.add_tuple("struct_pat_struct_pat_field_lists", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for Module { - fn class_name() -> &'static str { "Module" } +impl trap::TrapClass for StructPat { + fn class_name() -> &'static str { "StructPat" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Module is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme StructPat is a subclass of Pat unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Module is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme StructPat is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Module is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme StructPat is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Module is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme StructPat is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Module is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme StructPat is a subclass of PathAstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Module is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme StructPat is a subclass of Resolvable unsafe { Self::from_untyped(value.as_untyped()) } @@ -10223,89 +10172,108 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct PathExpr { - pub id: trap::TrapId, - pub path: Option>, +pub struct Trait { + pub id: trap::TrapId, + pub assoc_item_list: Option>, pub attrs: Vec>, + pub generic_param_list: Option>, + pub is_auto: bool, + pub is_unsafe: bool, + pub name: Option>, + pub type_bound_list: Option>, + pub visibility: Option>, + pub where_clause: Option>, } -impl trap::TrapEntry for PathExpr { +impl trap::TrapEntry for Trait { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("path_exprs", vec![id.into()]); - if let Some(v) = self.path { - out.add_tuple("path_ast_node_paths", vec![id.into(), v.into()]); + out.add_tuple("traits", vec![id.into()]); + if let Some(v) = self.assoc_item_list { + out.add_tuple("trait_assoc_item_lists", vec![id.into(), v.into()]); } for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("path_expr_attrs", vec![id.into(), i.into(), v.into()]); + out.add_tuple("trait_attrs", vec![id.into(), i.into(), v.into()]); + } + if let Some(v) = self.generic_param_list { + out.add_tuple("trait_generic_param_lists", vec![id.into(), v.into()]); + } + if self.is_auto { + out.add_tuple("trait_is_auto", vec![id.into()]); + } + if self.is_unsafe { + out.add_tuple("trait_is_unsafe", vec![id.into()]); + } + if let Some(v) = self.name { + out.add_tuple("trait_names", vec![id.into(), v.into()]); + } + if let Some(v) = self.type_bound_list { + out.add_tuple("trait_type_bound_lists", vec![id.into(), v.into()]); + } + if let Some(v) = self.visibility { + out.add_tuple("trait_visibilities", vec![id.into(), v.into()]); + } + if let Some(v) = self.where_clause { + out.add_tuple("trait_where_clauses", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for PathExpr { - fn class_name() -> &'static str { "PathExpr" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of PathExprBase - unsafe { - Self::from_untyped(value.as_untyped()) - } - } +impl trap::TrapClass for Trait { + fn class_name() -> &'static str { "Trait" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of Expr +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Trait is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Trait is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Trait is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Trait is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of PathAstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Trait is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme PathExpr is a subclass of Resolvable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Trait is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -10313,76 +10281,96 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct PathPat { - pub id: trap::TrapId, - pub path: Option>, +pub struct TraitAlias { + pub id: trap::TrapId, + pub attrs: Vec>, + pub generic_param_list: Option>, + pub name: Option>, + pub type_bound_list: Option>, + pub visibility: Option>, + pub where_clause: Option>, } -impl trap::TrapEntry for PathPat { +impl trap::TrapEntry for TraitAlias { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("path_pats", vec![id.into()]); - if let Some(v) = self.path { - out.add_tuple("path_ast_node_paths", vec![id.into(), v.into()]); + out.add_tuple("trait_aliases", vec![id.into()]); + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("trait_alias_attrs", vec![id.into(), i.into(), v.into()]); + } + if let Some(v) = self.generic_param_list { + out.add_tuple("trait_alias_generic_param_lists", vec![id.into(), v.into()]); + } + if let Some(v) = self.name { + out.add_tuple("trait_alias_names", vec![id.into(), v.into()]); + } + if let Some(v) = self.type_bound_list { + out.add_tuple("trait_alias_type_bound_lists", vec![id.into(), v.into()]); + } + if let Some(v) = self.visibility { + out.add_tuple("trait_alias_visibilities", vec![id.into(), v.into()]); + } + if let Some(v) = self.where_clause { + out.add_tuple("trait_alias_where_clauses", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for PathPat { - fn class_name() -> &'static str { "PathPat" } +impl trap::TrapClass for TraitAlias { + fn class_name() -> &'static str { "TraitAlias" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme PathPat is a subclass of Pat +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme PathPat is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme PathPat is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme PathPat is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme PathPat is a subclass of PathAstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme PathPat is a subclass of Resolvable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -10390,113 +10378,80 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct Static { - pub id: trap::TrapId, - pub attrs: Vec>, - pub body: Option>, - pub is_mut: bool, - pub is_static: bool, - pub is_unsafe: bool, - pub name: Option>, - pub type_repr: Option>, - pub visibility: Option>, +pub struct TupleStructPat { + pub id: trap::TrapId, + pub path: Option>, + pub fields: Vec>, } -impl trap::TrapEntry for Static { +impl trap::TrapEntry for TupleStructPat { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("statics", vec![id.into()]); - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("static_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.body { - out.add_tuple("static_bodies", vec![id.into(), v.into()]); - } - if self.is_mut { - out.add_tuple("static_is_mut", vec![id.into()]); - } - if self.is_static { - out.add_tuple("static_is_static", vec![id.into()]); - } - if self.is_unsafe { - out.add_tuple("static_is_unsafe", vec![id.into()]); - } - if let Some(v) = self.name { - out.add_tuple("static_names", vec![id.into(), v.into()]); - } - if let Some(v) = self.type_repr { - out.add_tuple("static_type_reprs", vec![id.into(), v.into()]); + out.add_tuple("tuple_struct_pats", vec![id.into()]); + if let Some(v) = self.path { + out.add_tuple("path_ast_node_paths", vec![id.into(), v.into()]); } - if let Some(v) = self.visibility { - out.add_tuple("static_visibilities", vec![id.into(), v.into()]); + for (i, v) in self.fields.into_iter().enumerate() { + out.add_tuple("tuple_struct_pat_fields", vec![id.into(), i.into(), v.into()]); } } } -impl trap::TrapClass for Static { - fn class_name() -> &'static str { "Static" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Static is a subclass of ExternItem - unsafe { - Self::from_untyped(value.as_untyped()) - } - } +impl trap::TrapClass for TupleStructPat { + fn class_name() -> &'static str { "TupleStructPat" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Static is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TupleStructPat is a subclass of Pat unsafe { Self::from_untyped(value.as_untyped()) } } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Static is a subclass of Locatable +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TupleStructPat is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Static is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TupleStructPat is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Static is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TupleStructPat is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Static is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TupleStructPat is a subclass of PathAstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Static is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TupleStructPat is a subclass of Resolvable unsafe { Self::from_untyped(value.as_untyped()) } @@ -10504,105 +10459,84 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct Struct { - pub id: trap::TrapId, +pub struct Use { + pub id: trap::TrapId, pub attrs: Vec>, - pub field_list: Option>, - pub generic_param_list: Option>, - pub name: Option>, + pub use_tree: Option>, pub visibility: Option>, - pub where_clause: Option>, } -impl trap::TrapEntry for Struct { +impl trap::TrapEntry for Use { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("structs", vec![id.into()]); + out.add_tuple("uses", vec![id.into()]); for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("struct_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.field_list { - out.add_tuple("struct_field_lists_", vec![id.into(), v.into()]); - } - if let Some(v) = self.generic_param_list { - out.add_tuple("struct_generic_param_lists", vec![id.into(), v.into()]); + out.add_tuple("use_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.name { - out.add_tuple("struct_names", vec![id.into(), v.into()]); + if let Some(v) = self.use_tree { + out.add_tuple("use_use_trees", vec![id.into(), v.into()]); } if let Some(v) = self.visibility { - out.add_tuple("struct_visibilities", vec![id.into(), v.into()]); - } - if let Some(v) = self.where_clause { - out.add_tuple("struct_where_clauses", vec![id.into(), v.into()]); + out.add_tuple("use_visibilities", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for Struct { - fn class_name() -> &'static str { "Struct" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Struct is a subclass of Item - unsafe { - Self::from_untyped(value.as_untyped()) - } - } +impl trap::TrapClass for Use { + fn class_name() -> &'static str { "Use" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Struct is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Use is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Struct is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Use is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Struct is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Use is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Struct is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Use is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Struct is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Use is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Struct is a subclass of VariantDef +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Use is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -10610,80 +10544,124 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct StructExpr { - pub id: trap::TrapId, - pub path: Option>, - pub struct_expr_field_list: Option>, +pub struct Const { + pub id: trap::TrapId, + pub attrs: Vec>, + pub body: Option>, + pub generic_param_list: Option>, + pub is_const: bool, + pub is_default: bool, + pub name: Option>, + pub type_repr: Option>, + pub visibility: Option>, + pub where_clause: Option>, } -impl trap::TrapEntry for StructExpr { +impl trap::TrapEntry for Const { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("struct_exprs", vec![id.into()]); - if let Some(v) = self.path { - out.add_tuple("path_ast_node_paths", vec![id.into(), v.into()]); + out.add_tuple("consts", vec![id.into()]); + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("const_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.struct_expr_field_list { - out.add_tuple("struct_expr_struct_expr_field_lists", vec![id.into(), v.into()]); + if let Some(v) = self.body { + out.add_tuple("const_bodies", vec![id.into(), v.into()]); + } + if let Some(v) = self.generic_param_list { + out.add_tuple("const_generic_param_lists", vec![id.into(), v.into()]); + } + if self.is_const { + out.add_tuple("const_is_const", vec![id.into()]); + } + if self.is_default { + out.add_tuple("const_is_default", vec![id.into()]); + } + if let Some(v) = self.name { + out.add_tuple("const_names", vec![id.into(), v.into()]); + } + if let Some(v) = self.type_repr { + out.add_tuple("const_type_reprs", vec![id.into(), v.into()]); + } + if let Some(v) = self.visibility { + out.add_tuple("const_visibilities", vec![id.into(), v.into()]); + } + if let Some(v) = self.where_clause { + out.add_tuple("const_where_clauses", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for StructExpr { - fn class_name() -> &'static str { "StructExpr" } +impl Const { + pub fn emit_has_implementation(id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("const_has_implementation", vec![id.into()]); + } + } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme StructExpr is a subclass of Expr +impl trap::TrapClass for Const { + fn class_name() -> &'static str { "Const" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Const is a subclass of AssocItem unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme StructExpr is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Const is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme StructExpr is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Const is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme StructExpr is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Const is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme StructExpr is a subclass of PathAstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Const is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme StructExpr is a subclass of Resolvable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Const is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Const is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -10691,80 +10669,105 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct StructPat { - pub id: trap::TrapId, - pub path: Option>, - pub struct_pat_field_list: Option>, +pub struct Enum { + pub id: trap::TrapId, + pub attrs: Vec>, + pub generic_param_list: Option>, + pub name: Option>, + pub variant_list: Option>, + pub visibility: Option>, + pub where_clause: Option>, } -impl trap::TrapEntry for StructPat { +impl trap::TrapEntry for Enum { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("struct_pats", vec![id.into()]); - if let Some(v) = self.path { - out.add_tuple("path_ast_node_paths", vec![id.into(), v.into()]); + out.add_tuple("enums", vec![id.into()]); + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("enum_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.struct_pat_field_list { - out.add_tuple("struct_pat_struct_pat_field_lists", vec![id.into(), v.into()]); + if let Some(v) = self.generic_param_list { + out.add_tuple("enum_generic_param_lists", vec![id.into(), v.into()]); + } + if let Some(v) = self.name { + out.add_tuple("enum_names", vec![id.into(), v.into()]); + } + if let Some(v) = self.variant_list { + out.add_tuple("enum_variant_lists", vec![id.into(), v.into()]); + } + if let Some(v) = self.visibility { + out.add_tuple("enum_visibilities", vec![id.into(), v.into()]); + } + if let Some(v) = self.where_clause { + out.add_tuple("enum_where_clauses", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for StructPat { - fn class_name() -> &'static str { "StructPat" } +impl trap::TrapClass for Enum { + fn class_name() -> &'static str { "Enum" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme StructPat is a subclass of Pat +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Enum is a subclass of Adt + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Enum is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme StructPat is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Enum is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme StructPat is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Enum is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme StructPat is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Enum is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme StructPat is a subclass of PathAstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Enum is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme StructPat is a subclass of Resolvable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Enum is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -10772,108 +10775,92 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct Trait { - pub id: trap::TrapId, - pub assoc_item_list: Option>, +pub struct ForExpr { + pub id: trap::TrapId, + pub label: Option>, + pub loop_body: Option>, pub attrs: Vec>, - pub generic_param_list: Option>, - pub is_auto: bool, - pub is_unsafe: bool, - pub name: Option>, - pub type_bound_list: Option>, - pub visibility: Option>, - pub where_clause: Option>, + pub iterable: Option>, + pub pat: Option>, } -impl trap::TrapEntry for Trait { +impl trap::TrapEntry for ForExpr { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("traits", vec![id.into()]); - if let Some(v) = self.assoc_item_list { - out.add_tuple("trait_assoc_item_lists", vec![id.into(), v.into()]); - } - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("trait_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.generic_param_list { - out.add_tuple("trait_generic_param_lists", vec![id.into(), v.into()]); - } - if self.is_auto { - out.add_tuple("trait_is_auto", vec![id.into()]); - } - if self.is_unsafe { - out.add_tuple("trait_is_unsafe", vec![id.into()]); + out.add_tuple("for_exprs", vec![id.into()]); + if let Some(v) = self.label { + out.add_tuple("labelable_expr_labels", vec![id.into(), v.into()]); } - if let Some(v) = self.name { - out.add_tuple("trait_names", vec![id.into(), v.into()]); + if let Some(v) = self.loop_body { + out.add_tuple("looping_expr_loop_bodies", vec![id.into(), v.into()]); } - if let Some(v) = self.type_bound_list { - out.add_tuple("trait_type_bound_lists", vec![id.into(), v.into()]); + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("for_expr_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.visibility { - out.add_tuple("trait_visibilities", vec![id.into(), v.into()]); + if let Some(v) = self.iterable { + out.add_tuple("for_expr_iterables", vec![id.into(), v.into()]); } - if let Some(v) = self.where_clause { - out.add_tuple("trait_where_clauses", vec![id.into(), v.into()]); + if let Some(v) = self.pat { + out.add_tuple("for_expr_pats", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for Trait { - fn class_name() -> &'static str { "Trait" } +impl trap::TrapClass for ForExpr { + fn class_name() -> &'static str { "ForExpr" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Trait is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of LoopingExpr unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Trait is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of LabelableExpr unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Trait is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of Expr unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Trait is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Trait is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Trait is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } @@ -10881,96 +10868,162 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct TraitAlias { - pub id: trap::TrapId, +pub struct Function { + pub id: trap::TrapId, + pub param_list: Option>, pub attrs: Vec>, + pub abi: Option>, + pub body: Option>, pub generic_param_list: Option>, + pub is_async: bool, + pub is_const: bool, + pub is_default: bool, + pub is_gen: bool, + pub is_unsafe: bool, pub name: Option>, - pub type_bound_list: Option>, + pub ret_type: Option>, pub visibility: Option>, pub where_clause: Option>, } -impl trap::TrapEntry for TraitAlias { +impl trap::TrapEntry for Function { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("trait_aliases", vec![id.into()]); + out.add_tuple("functions", vec![id.into()]); + if let Some(v) = self.param_list { + out.add_tuple("callable_param_lists", vec![id.into(), v.into()]); + } for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("trait_alias_attrs", vec![id.into(), i.into(), v.into()]); + out.add_tuple("callable_attrs", vec![id.into(), i.into(), v.into()]); + } + if let Some(v) = self.abi { + out.add_tuple("function_abis", vec![id.into(), v.into()]); + } + if let Some(v) = self.body { + out.add_tuple("function_bodies", vec![id.into(), v.into()]); } if let Some(v) = self.generic_param_list { - out.add_tuple("trait_alias_generic_param_lists", vec![id.into(), v.into()]); + out.add_tuple("function_generic_param_lists", vec![id.into(), v.into()]); + } + if self.is_async { + out.add_tuple("function_is_async", vec![id.into()]); + } + if self.is_const { + out.add_tuple("function_is_const", vec![id.into()]); + } + if self.is_default { + out.add_tuple("function_is_default", vec![id.into()]); + } + if self.is_gen { + out.add_tuple("function_is_gen", vec![id.into()]); + } + if self.is_unsafe { + out.add_tuple("function_is_unsafe", vec![id.into()]); } if let Some(v) = self.name { - out.add_tuple("trait_alias_names", vec![id.into(), v.into()]); + out.add_tuple("function_names", vec![id.into(), v.into()]); } - if let Some(v) = self.type_bound_list { - out.add_tuple("trait_alias_type_bound_lists", vec![id.into(), v.into()]); + if let Some(v) = self.ret_type { + out.add_tuple("function_ret_types", vec![id.into(), v.into()]); } if let Some(v) = self.visibility { - out.add_tuple("trait_alias_visibilities", vec![id.into(), v.into()]); + out.add_tuple("function_visibilities", vec![id.into(), v.into()]); } if let Some(v) = self.where_clause { - out.add_tuple("trait_alias_where_clauses", vec![id.into(), v.into()]); + out.add_tuple("function_where_clauses", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for TraitAlias { - fn class_name() -> &'static str { "TraitAlias" } +impl Function { + pub fn emit_has_implementation(id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("function_has_implementation", vec![id.into()]); + } + } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Item +impl trap::TrapClass for Function { + fn class_name() -> &'static str { "Function" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Function is a subclass of AssocItem unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Function is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Function is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Function is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Function is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Function is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Function is a subclass of Addressable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Function is a subclass of ExternItem + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Function is a subclass of Callable unsafe { Self::from_untyped(value.as_untyped()) } @@ -10978,80 +11031,84 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct TupleStructPat { - pub id: trap::TrapId, - pub path: Option>, - pub fields: Vec>, +pub struct LoopExpr { + pub id: trap::TrapId, + pub label: Option>, + pub loop_body: Option>, + pub attrs: Vec>, } -impl trap::TrapEntry for TupleStructPat { +impl trap::TrapEntry for LoopExpr { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("tuple_struct_pats", vec![id.into()]); - if let Some(v) = self.path { - out.add_tuple("path_ast_node_paths", vec![id.into(), v.into()]); + out.add_tuple("loop_exprs", vec![id.into()]); + if let Some(v) = self.label { + out.add_tuple("labelable_expr_labels", vec![id.into(), v.into()]); } - for (i, v) in self.fields.into_iter().enumerate() { - out.add_tuple("tuple_struct_pat_fields", vec![id.into(), i.into(), v.into()]); + if let Some(v) = self.loop_body { + out.add_tuple("looping_expr_loop_bodies", vec![id.into(), v.into()]); + } + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("loop_expr_attrs", vec![id.into(), i.into(), v.into()]); } } } -impl trap::TrapClass for TupleStructPat { - fn class_name() -> &'static str { "TupleStructPat" } +impl trap::TrapClass for LoopExpr { + fn class_name() -> &'static str { "LoopExpr" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TupleStructPat is a subclass of Pat +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of LoopingExpr unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TupleStructPat is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of LabelableExpr unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TupleStructPat is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of Expr unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TupleStructPat is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TupleStructPat is a subclass of PathAstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TupleStructPat is a subclass of Resolvable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } @@ -11059,122 +11116,109 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct TypeAlias { - pub id: trap::TrapId, +pub struct MacroCall { + pub id: trap::TrapId, pub attrs: Vec>, - pub generic_param_list: Option>, - pub is_default: bool, - pub name: Option>, - pub type_repr: Option>, - pub type_bound_list: Option>, - pub visibility: Option>, - pub where_clause: Option>, + pub path: Option>, + pub token_tree: Option>, } -impl trap::TrapEntry for TypeAlias { +impl trap::TrapEntry for MacroCall { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("type_aliases", vec![id.into()]); + out.add_tuple("macro_calls", vec![id.into()]); for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("type_alias_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.generic_param_list { - out.add_tuple("type_alias_generic_param_lists", vec![id.into(), v.into()]); - } - if self.is_default { - out.add_tuple("type_alias_is_default", vec![id.into()]); - } - if let Some(v) = self.name { - out.add_tuple("type_alias_names", vec![id.into(), v.into()]); - } - if let Some(v) = self.type_repr { - out.add_tuple("type_alias_type_reprs", vec![id.into(), v.into()]); - } - if let Some(v) = self.type_bound_list { - out.add_tuple("type_alias_type_bound_lists", vec![id.into(), v.into()]); + out.add_tuple("macro_call_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.visibility { - out.add_tuple("type_alias_visibilities", vec![id.into(), v.into()]); + if let Some(v) = self.path { + out.add_tuple("macro_call_paths", vec![id.into(), v.into()]); } - if let Some(v) = self.where_clause { - out.add_tuple("type_alias_where_clauses", vec![id.into(), v.into()]); + if let Some(v) = self.token_tree { + out.add_tuple("macro_call_token_trees", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for TypeAlias { - fn class_name() -> &'static str { "TypeAlias" } +impl MacroCall { + pub fn emit_macro_call_expansion(id: trap::Label, value: trap::Label, out: &mut trap::Writer) { + out.add_tuple("macro_call_macro_call_expansions", vec![id.into(), value.into()]); + } + } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of AssocItem +impl trap::TrapClass for MacroCall { + fn class_name() -> &'static str { "MacroCall" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of AssocItem unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of ExternItem +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroCall is a subclass of ExternItem unsafe { Self::from_untyped(value.as_untyped()) } @@ -11182,105 +11226,113 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct Union { - pub id: trap::TrapId, +pub struct Static { + pub id: trap::TrapId, pub attrs: Vec>, - pub generic_param_list: Option>, + pub body: Option>, + pub is_mut: bool, + pub is_static: bool, + pub is_unsafe: bool, pub name: Option>, - pub struct_field_list: Option>, + pub type_repr: Option>, pub visibility: Option>, - pub where_clause: Option>, } -impl trap::TrapEntry for Union { +impl trap::TrapEntry for Static { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("unions", vec![id.into()]); + out.add_tuple("statics", vec![id.into()]); for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("union_attrs", vec![id.into(), i.into(), v.into()]); + out.add_tuple("static_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.generic_param_list { - out.add_tuple("union_generic_param_lists", vec![id.into(), v.into()]); + if let Some(v) = self.body { + out.add_tuple("static_bodies", vec![id.into(), v.into()]); + } + if self.is_mut { + out.add_tuple("static_is_mut", vec![id.into()]); + } + if self.is_static { + out.add_tuple("static_is_static", vec![id.into()]); + } + if self.is_unsafe { + out.add_tuple("static_is_unsafe", vec![id.into()]); } if let Some(v) = self.name { - out.add_tuple("union_names", vec![id.into(), v.into()]); + out.add_tuple("static_names", vec![id.into(), v.into()]); } - if let Some(v) = self.struct_field_list { - out.add_tuple("union_struct_field_lists", vec![id.into(), v.into()]); + if let Some(v) = self.type_repr { + out.add_tuple("static_type_reprs", vec![id.into(), v.into()]); } if let Some(v) = self.visibility { - out.add_tuple("union_visibilities", vec![id.into(), v.into()]); - } - if let Some(v) = self.where_clause { - out.add_tuple("union_where_clauses", vec![id.into(), v.into()]); + out.add_tuple("static_visibilities", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for Union { - fn class_name() -> &'static str { "Union" } +impl trap::TrapClass for Static { + fn class_name() -> &'static str { "Static" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Union is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Static is a subclass of ExternItem unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Union is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Static is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Union is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Static is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Union is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Static is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Union is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Static is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Union is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Static is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Union is a subclass of VariantDef +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Static is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -11288,84 +11340,105 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct Use { - pub id: trap::TrapId, +pub struct Struct { + pub id: trap::TrapId, pub attrs: Vec>, - pub use_tree: Option>, + pub field_list: Option>, + pub generic_param_list: Option>, + pub name: Option>, pub visibility: Option>, + pub where_clause: Option>, } -impl trap::TrapEntry for Use { +impl trap::TrapEntry for Struct { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("uses", vec![id.into()]); + out.add_tuple("structs", vec![id.into()]); for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("use_attrs", vec![id.into(), i.into(), v.into()]); + out.add_tuple("struct_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.use_tree { - out.add_tuple("use_use_trees", vec![id.into(), v.into()]); + if let Some(v) = self.field_list { + out.add_tuple("struct_field_lists_", vec![id.into(), v.into()]); + } + if let Some(v) = self.generic_param_list { + out.add_tuple("struct_generic_param_lists", vec![id.into(), v.into()]); + } + if let Some(v) = self.name { + out.add_tuple("struct_names", vec![id.into(), v.into()]); } if let Some(v) = self.visibility { - out.add_tuple("use_visibilities", vec![id.into(), v.into()]); + out.add_tuple("struct_visibilities", vec![id.into(), v.into()]); + } + if let Some(v) = self.where_clause { + out.add_tuple("struct_where_clauses", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for Use { - fn class_name() -> &'static str { "Use" } +impl trap::TrapClass for Struct { + fn class_name() -> &'static str { "Struct" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Use is a subclass of Item +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Struct is a subclass of Adt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Use is a subclass of Stmt +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Struct is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Use is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Struct is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Use is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Struct is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Use is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Struct is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Use is a subclass of Addressable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Struct is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Struct is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } @@ -11373,92 +11446,122 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct ForExpr { - pub id: trap::TrapId, - pub label: Option>, - pub loop_body: Option>, +pub struct TypeAlias { + pub id: trap::TrapId, pub attrs: Vec>, - pub iterable: Option>, - pub pat: Option>, + pub generic_param_list: Option>, + pub is_default: bool, + pub name: Option>, + pub type_repr: Option>, + pub type_bound_list: Option>, + pub visibility: Option>, + pub where_clause: Option>, } -impl trap::TrapEntry for ForExpr { +impl trap::TrapEntry for TypeAlias { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("for_exprs", vec![id.into()]); - if let Some(v) = self.label { - out.add_tuple("labelable_expr_labels", vec![id.into(), v.into()]); + out.add_tuple("type_aliases", vec![id.into()]); + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("type_alias_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.loop_body { - out.add_tuple("looping_expr_loop_bodies", vec![id.into(), v.into()]); + if let Some(v) = self.generic_param_list { + out.add_tuple("type_alias_generic_param_lists", vec![id.into(), v.into()]); } - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("for_expr_attrs", vec![id.into(), i.into(), v.into()]); + if self.is_default { + out.add_tuple("type_alias_is_default", vec![id.into()]); } - if let Some(v) = self.iterable { - out.add_tuple("for_expr_iterables", vec![id.into(), v.into()]); + if let Some(v) = self.name { + out.add_tuple("type_alias_names", vec![id.into(), v.into()]); } - if let Some(v) = self.pat { - out.add_tuple("for_expr_pats", vec![id.into(), v.into()]); + if let Some(v) = self.type_repr { + out.add_tuple("type_alias_type_reprs", vec![id.into(), v.into()]); + } + if let Some(v) = self.type_bound_list { + out.add_tuple("type_alias_type_bound_lists", vec![id.into(), v.into()]); + } + if let Some(v) = self.visibility { + out.add_tuple("type_alias_visibilities", vec![id.into(), v.into()]); + } + if let Some(v) = self.where_clause { + out.add_tuple("type_alias_where_clauses", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for ForExpr { - fn class_name() -> &'static str { "ForExpr" } +impl trap::TrapClass for TypeAlias { + fn class_name() -> &'static str { "TypeAlias" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of LoopingExpr +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of AssocItem unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of LabelableExpr +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of Expr +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of Addressable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of ExternItem unsafe { Self::from_untyped(value.as_untyped()) } @@ -11466,84 +11569,105 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct LoopExpr { - pub id: trap::TrapId, - pub label: Option>, - pub loop_body: Option>, +pub struct Union { + pub id: trap::TrapId, pub attrs: Vec>, + pub generic_param_list: Option>, + pub name: Option>, + pub struct_field_list: Option>, + pub visibility: Option>, + pub where_clause: Option>, } -impl trap::TrapEntry for LoopExpr { +impl trap::TrapEntry for Union { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("loop_exprs", vec![id.into()]); - if let Some(v) = self.label { - out.add_tuple("labelable_expr_labels", vec![id.into(), v.into()]); + out.add_tuple("unions", vec![id.into()]); + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("union_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.loop_body { - out.add_tuple("looping_expr_loop_bodies", vec![id.into(), v.into()]); + if let Some(v) = self.generic_param_list { + out.add_tuple("union_generic_param_lists", vec![id.into(), v.into()]); } - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("loop_expr_attrs", vec![id.into(), i.into(), v.into()]); + if let Some(v) = self.name { + out.add_tuple("union_names", vec![id.into(), v.into()]); + } + if let Some(v) = self.struct_field_list { + out.add_tuple("union_struct_field_lists", vec![id.into(), v.into()]); + } + if let Some(v) = self.visibility { + out.add_tuple("union_visibilities", vec![id.into(), v.into()]); + } + if let Some(v) = self.where_clause { + out.add_tuple("union_where_clauses", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for LoopExpr { - fn class_name() -> &'static str { "LoopExpr" } +impl trap::TrapClass for Union { + fn class_name() -> &'static str { "Union" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of LoopingExpr +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Union is a subclass of Adt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of LabelableExpr +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Union is a subclass of Item unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of Expr +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Union is a subclass of Stmt unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Union is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Union is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Union is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Union is a subclass of Addressable unsafe { Self::from_untyped(value.as_untyped()) } diff --git a/rust/extractor/src/main.rs b/rust/extractor/src/main.rs index bae83c99fbfc..fc9d060add81 100644 --- a/rust/extractor/src/main.rs +++ b/rust/extractor/src/main.rs @@ -103,6 +103,7 @@ impl<'a> Extractor<'a> { } } translator.emit_source_file(&ast); + translator.emit_truncated_diagnostics_message(); translator.trap.commit().unwrap_or_else(|err| { error!( "Failed to write trap file for: {}: {}", @@ -167,9 +168,19 @@ impl<'a> Extractor<'a> { let Some(id) = path_to_file_id(file, vfs) else { return Err("not included in files loaded from manifest".to_string()); }; - if semantics.file_to_module_def(id).is_none() { - return Err("not included as a module".to_string()); - } + match semantics.file_to_module_def(id) { + None => return Err("not included as a module".to_string()), + Some(module) + if module + .as_source_file_id(semantics.db) + .is_none_or(|mod_file_id| mod_file_id.file_id(semantics.db) != id) => + { + return Err( + "not loaded as its own module, probably included by `!include`".to_string(), + ); + } + _ => {} + }; self.steps.push(ExtractionStep::load_source(before, file)); Ok(()) } diff --git a/rust/extractor/src/nightly-toolchain/rust-toolchain.toml b/rust/extractor/src/nightly-toolchain/rust-toolchain.toml new file mode 100644 index 000000000000..7ed21df91218 --- /dev/null +++ b/rust/extractor/src/nightly-toolchain/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "nightly-2025-06-01" +components = [ "rust-src" ] diff --git a/rust/extractor/src/qltest.rs b/rust/extractor/src/qltest.rs index de0c36df7845..92ed9d62505c 100644 --- a/rust/extractor/src/qltest.rs +++ b/rust/extractor/src/qltest.rs @@ -8,6 +8,8 @@ use std::path::Path; use std::process::Command; use tracing::info; +const EDITION: &str = "2021"; + fn dump_lib() -> anyhow::Result<()> { let path_iterator = glob("*.rs").context("globbing test sources")?; let paths = path_iterator @@ -16,39 +18,67 @@ fn dump_lib() -> anyhow::Result<()> { let lib = paths .iter() .map(|p| p.file_stem().expect("results of glob must have a name")) - .filter(|&p| !["main", "lib"].map(OsStr::new).contains(&p)) + .filter(|&p| !["main", "lib", "proc_macro"].map(OsStr::new).contains(&p)) .map(|p| format!("mod {};", p.to_string_lossy())) .join("\n"); fs::write("lib.rs", lib).context("writing lib.rs") } -fn dump_cargo_manifest(dependencies: &[String]) -> anyhow::Result<()> { - let mut manifest = String::from( - r#"[workspace] -[package] -name = "test" -version="0.0.1" -edition="2021" -[lib] -path="lib.rs" -"#, - ); - if fs::exists("main.rs").context("checking existence of main.rs")? { - manifest.push_str( - r#"[[bin]] -name = "main" -path = "main.rs" -"#, - ); +#[derive(serde::Serialize)] +enum TestCargoManifest<'a> { + Workspace {}, + Lib { + uses_proc_macro: bool, + uses_main: bool, + dependencies: &'a [String], + edition: &'a str, + }, + Macro { + edition: &'a str, + }, +} + +impl TestCargoManifest<'_> { + pub fn dump(&self, path: impl AsRef) -> anyhow::Result<()> { + static TEMPLATE: std::sync::LazyLock = std::sync::LazyLock::new(|| { + mustache::compile_str(include_str!("qltest_cargo.mustache")) + .expect("compiling template") + }); + + let path = path.as_ref(); + fs::create_dir_all(path).with_context(|| format!("creating {}", path.display()))?; + let path = path.join("Cargo.toml"); + let rendered = TEMPLATE + .render_to_string(&self) + .with_context(|| format!("rendering {}", path.display()))?; + fs::write(&path, rendered).with_context(|| format!("writing {}", path.display())) } - if !dependencies.is_empty() { - manifest.push_str("[dependencies]\n"); - for dep in dependencies { - manifest.push_str(dep); - manifest.push('\n'); - } +} +fn dump_cargo_manifest(dependencies: &[String]) -> anyhow::Result<()> { + let uses_proc_macro = + fs::exists("proc_macro.rs").context("checking existence of proc_macro.rs")?; + let lib_manifest = TestCargoManifest::Lib { + uses_proc_macro, + uses_main: fs::exists("main.rs").context("checking existence of main.rs")?, + dependencies, + edition: EDITION, + }; + if uses_proc_macro { + TestCargoManifest::Workspace {}.dump("")?; + lib_manifest.dump(".lib")?; + TestCargoManifest::Macro { edition: EDITION }.dump(".proc_macro") + } else { + lib_manifest.dump("") } - fs::write("Cargo.toml", manifest).context("writing Cargo.toml") +} + +fn dump_nightly_toolchain() -> anyhow::Result<()> { + fs::write( + "rust-toolchain.toml", + include_str!("nightly-toolchain/rust-toolchain.toml"), + ) + .context("writing rust-toolchain.toml")?; + Ok(()) } fn set_sources(config: &mut Config) -> anyhow::Result<()> { @@ -60,19 +90,13 @@ fn set_sources(config: &mut Config) -> anyhow::Result<()> { Ok(()) } -fn remove_file_if_exists(path: &Path) -> anyhow::Result<()> { - match fs::remove_file(path) { - Err(e) if e.kind() == std::io::ErrorKind::NotFound => Ok(()), - x => x, - } - .context(format!("removing file {}", path.display())) -} - pub(crate) fn prepare(config: &mut Config) -> anyhow::Result<()> { dump_lib()?; set_sources(config)?; - remove_file_if_exists(Path::new("Cargo.lock"))?; dump_cargo_manifest(&config.qltest_dependencies)?; + if config.qltest_use_nightly { + dump_nightly_toolchain()?; + } if config.qltest_cargo_check { let status = Command::new("cargo") .env("RUSTFLAGS", "-Awarnings") @@ -85,6 +109,6 @@ pub(crate) fn prepare(config: &mut Config) -> anyhow::Result<()> { } else { anyhow::bail!("requested cargo check failed"); } - } + }; Ok(()) } diff --git a/rust/extractor/src/qltest_cargo.mustache b/rust/extractor/src/qltest_cargo.mustache new file mode 100644 index 000000000000..ed405bae05d6 --- /dev/null +++ b/rust/extractor/src/qltest_cargo.mustache @@ -0,0 +1,42 @@ +{{#Workspace}} +[workspace] +resolver = "2" +members = [".lib", ".proc_macro"] +{{/Workspace}} + +{{#Lib}} +{{^uses_proc_macro}} +[workspace] +{{/uses_proc_macro}} +[package] +name = "test" +version = "0.0.1" +edition = "{{ edition }}" +[lib] +path = "{{#uses_proc_macro}}../{{/uses_proc_macro}}lib.rs" +{{#uses_main}} +[[bin]] +name = "main" +path = "{{#uses_proc_macro}}../{{/uses_proc_macro}}main.rs" +{{/uses_main}} +[dependencies] +{{#uses_proc_macro}} +proc_macro = { path = "../.proc_macro" } +{{/uses_proc_macro}} +{{#dependencies}} +{{{.}}} +{{/dependencies}} +{{/Lib}} + +{{#Macro}} +[package] +name = "proc_macro" +version = "0.0.1" +edition = "{{ edition }}" +[lib] +path = "../proc_macro.rs" +proc_macro = true +[dependencies] +quote = "1.0.40" +syn = { version = "2.0.100", features = ["full"] } +{{/Macro}} diff --git a/rust/extractor/src/rust_analyzer.rs b/rust/extractor/src/rust_analyzer.rs index ef4c638efbe6..bed6e66c9b7f 100644 --- a/rust/extractor/src/rust_analyzer.rs +++ b/rust/extractor/src/rust_analyzer.rs @@ -77,11 +77,7 @@ impl<'a> RustAnalyzer<'a> { let editioned_file_id = semantics .attach_first_edition(file_id) .ok_or("failed to determine rust edition")?; - Ok(( - semantics, - EditionedFileId::new(semantics.db, editioned_file_id), - input, - )) + Ok((semantics, editioned_file_id, input)) } } } diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs index 8d971900497e..81bb13305a62 100644 --- a/rust/extractor/src/translate/base.rs +++ b/rust/extractor/src/translate/base.rs @@ -1,4 +1,4 @@ -use super::mappings::{AddressableAst, AddressableHir, PathAst}; +use super::mappings::{AddressableAst, AddressableHir, Emission, PathAst}; use crate::generated::{self}; use crate::rust_analyzer::FileSemanticInformation; use crate::trap::{DiagnosticSeverity, TrapFile, TrapId}; @@ -16,74 +16,153 @@ use ra_ap_ide_db::RootDatabase; use ra_ap_ide_db::line_index::{LineCol, LineIndex}; use ra_ap_parser::SyntaxKind; use ra_ap_span::TextSize; -use ra_ap_syntax::ast::{Const, Fn, HasName, Param, Static}; +use ra_ap_syntax::ast::{HasAttrs, HasName}; use ra_ap_syntax::{ AstNode, NodeOrToken, SyntaxElementChildren, SyntaxError, SyntaxNode, SyntaxToken, TextRange, ast, }; -#[macro_export] -macro_rules! pre_emit { - (Item, $self:ident, $node:ident) => { - if let Some(label) = $self.prepare_item_expansion($node) { - return Some(label); - } - }; - ($($_:tt)*) => {}; +impl Emission for Translator<'_> { + fn pre_emit(&mut self, node: &ast::Item) -> Option> { + self.prepare_item_expansion(node).map(Into::into) + } + + fn post_emit(&mut self, node: &ast::Item, label: Label) { + self.emit_item_expansion(node, label); + } } -#[macro_export] -macro_rules! post_emit { - (MacroCall, $self:ident, $node:ident, $label:ident) => { - $self.extract_macro_call_expanded($node, $label); - }; - (Function, $self:ident, $node:ident, $label:ident) => { - $self.extract_canonical_origin($node, $label.into()); - }; - (Trait, $self:ident, $node:ident, $label:ident) => { - $self.extract_canonical_origin($node, $label.into()); - }; - (Struct, $self:ident, $node:ident, $label:ident) => { - $self.extract_canonical_origin($node, $label.into()); - }; - (Enum, $self:ident, $node:ident, $label:ident) => { - $self.extract_canonical_origin($node, $label.into()); - }; - (Union, $self:ident, $node:ident, $label:ident) => { - $self.extract_canonical_origin($node, $label.into()); - }; - (Module, $self:ident, $node:ident, $label:ident) => { - $self.extract_canonical_origin($node, $label.into()); - }; - (Variant, $self:ident, $node:ident, $label:ident) => { - $self.extract_canonical_origin_of_enum_variant($node, $label); - }; - (Item, $self:ident, $node:ident, $label:ident) => { - $self.emit_item_expansion($node, $label); - }; - // TODO canonical origin of other items - (PathExpr, $self:ident, $node:ident, $label:ident) => { - $self.extract_path_canonical_destination($node, $label.into()); - }; - (StructExpr, $self:ident, $node:ident, $label:ident) => { - $self.extract_path_canonical_destination($node, $label.into()); - }; - (PathPat, $self:ident, $node:ident, $label:ident) => { - $self.extract_path_canonical_destination($node, $label.into()); - }; - (StructPat, $self:ident, $node:ident, $label:ident) => { - $self.extract_path_canonical_destination($node, $label.into()); - }; - (TupleStructPat, $self:ident, $node:ident, $label:ident) => { - $self.extract_path_canonical_destination($node, $label.into()); - }; - (MethodCallExpr, $self:ident, $node:ident, $label:ident) => { - $self.extract_method_canonical_destination($node, $label); - }; - (PathSegment, $self:ident, $node:ident, $label:ident) => { - $self.extract_types_from_path_segment($node, $label.into()); - }; - ($($_:tt)*) => {}; +impl Emission for Translator<'_> { + fn pre_emit(&mut self, node: &ast::AssocItem) -> Option> { + self.prepare_item_expansion(&node.clone().into()) + .map(Into::into) + } + + fn post_emit(&mut self, node: &ast::AssocItem, label: Label) { + self.emit_item_expansion(&node.clone().into(), label.into()); + } +} + +impl Emission for Translator<'_> { + fn pre_emit(&mut self, node: &ast::ExternItem) -> Option> { + self.prepare_item_expansion(&node.clone().into()) + .map(Into::into) + } + + fn post_emit(&mut self, node: &ast::ExternItem, label: Label) { + self.emit_item_expansion(&node.clone().into(), label.into()); + } +} + +impl Emission for Translator<'_> { + fn pre_emit(&mut self, _node: &ast::Meta) -> Option> { + self.macro_context_depth += 1; + None + } + + fn post_emit(&mut self, _node: &ast::Meta, _label: Label) { + self.macro_context_depth -= 1; + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::Fn, label: Label) { + self.emit_function_has_implementation(node, label); + self.extract_canonical_origin(node, label.into()); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::Struct, label: Label) { + self.emit_derive_expansion(node, label); + self.extract_canonical_origin(node, label.into()); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::Enum, label: Label) { + self.emit_derive_expansion(node, label); + self.extract_canonical_origin(node, label.into()); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::Union, label: Label) { + self.emit_derive_expansion(node, label); + self.extract_canonical_origin(node, label.into()); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::Trait, label: Label) { + self.extract_canonical_origin(node, label.into()); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::Module, label: Label) { + self.extract_canonical_origin(node, label.into()); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::Variant, label: Label) { + self.extract_canonical_origin_of_enum_variant(node, label); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::PathExpr, label: Label) { + self.extract_path_canonical_destination(node, label.into()); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::RecordExpr, label: Label) { + self.extract_path_canonical_destination(node, label.into()); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::PathPat, label: Label) { + self.extract_path_canonical_destination(node, label.into()); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::RecordPat, label: Label) { + self.extract_path_canonical_destination(node, label.into()); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::TupleStructPat, label: Label) { + self.extract_path_canonical_destination(node, label.into()); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::MethodCallExpr, label: Label) { + self.extract_method_canonical_destination(node, label); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::PathSegment, label: Label) { + self.extract_types_from_path_segment(node, label); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::Const, label: Label) { + self.emit_const_has_implementation(node, label); + } +} + +impl Emission for Translator<'_> { + fn post_emit(&mut self, node: &ast::MacroCall, label: Label) { + self.extract_macro_call_expanded(node, label); + } } // see https://github.com/tokio-rs/tracing/issues/2730 @@ -118,12 +197,15 @@ pub struct Translator<'a> { pub semantics: Option<&'a Semantics<'a, RootDatabase>>, resolve_paths: bool, source_kind: SourceKind, - macro_context_depth: usize, + pub(crate) macro_context_depth: usize, + diagnostic_count: usize, } const UNKNOWN_LOCATION: (LineCol, LineCol) = (LineCol { line: 0, col: 0 }, LineCol { line: 0, col: 0 }); +const DIAGNOSTIC_LIMIT_PER_FILE: usize = 100; + impl<'a> Translator<'a> { pub fn new( trap: TrapFile, @@ -144,6 +226,7 @@ impl<'a> Translator<'a> { resolve_paths: resolve_paths == ResolvePaths::Yes, source_kind, macro_context_depth: 0, + diagnostic_count: 0, } } fn location(&self, range: TextRange) -> Option<(LineCol, LineCol)> { @@ -170,7 +253,7 @@ impl<'a> Translator<'a> { if let Some(semantics) = self.semantics.as_ref() { let file_range = semantics.original_range(node.syntax()); let file_id = self.file_id?; - if file_id.file_id(semantics.db) == file_range.file_id { + if file_id == file_range.file_id { Some(file_range.range) } else { None @@ -230,6 +313,36 @@ impl<'a> Translator<'a> { } else { severity }; + if severity > DiagnosticSeverity::Debug { + self.diagnostic_count += 1; + if self.diagnostic_count > DIAGNOSTIC_LIMIT_PER_FILE { + return; + } + } + self.emit_diagnostic_unchecked(severity, tag, message, full_message, location); + } + pub fn emit_truncated_diagnostics_message(&mut self) { + if self.diagnostic_count > DIAGNOSTIC_LIMIT_PER_FILE { + let count = self.diagnostic_count - DIAGNOSTIC_LIMIT_PER_FILE; + self.emit_diagnostic_unchecked( + DiagnosticSeverity::Warning, + "diagnostics".to_owned(), + "Too many diagnostic messages".to_owned(), + format!( + "Too many diagnostic messages, {count} diagnostic messages were suppressed" + ), + UNKNOWN_LOCATION, + ); + } + } + fn emit_diagnostic_unchecked( + &mut self, + severity: DiagnosticSeverity, + tag: String, + message: String, + full_message: String, + location: (LineCol, LineCol), + ) { let (start, end) = location; dispatch_to_tracing!( severity, @@ -246,6 +359,25 @@ impl<'a> Translator<'a> { .emit_diagnostic(severity, tag, message, full_message, location); } } + + pub fn emit_diagnostic_for_node( + &mut self, + node: &impl ast::AstNode, + severity: DiagnosticSeverity, + tag: String, + message: String, + full_message: String, + ) { + let location = self.location_for_node(node); + self.emit_diagnostic( + severity, + tag, + message, + full_message, + location.unwrap_or(UNKNOWN_LOCATION), + ); + } + pub fn emit_parse_error(&mut self, owner: &impl ast::AstNode, err: &SyntaxError) { let owner_range: TextRange = owner.syntax().text_range(); let err_range = err.range(); @@ -294,20 +426,18 @@ impl<'a> Translator<'a> { if let Some(value) = semantics .hir_file_for(expanded) .macro_file() - .and_then(|macro_file| { - semantics - .db - .parse_macro_expansion_error(macro_file.macro_call_id) - }) + .and_then(|macro_call_id| semantics.db.parse_macro_expansion_error(macro_call_id)) { if let Some(err) = &value.err { let error = err.render_to_string(semantics.db); - - if err.span().anchor.file_id == semantics.hir_file_for(node.syntax()) { + let hir_file_id = semantics.hir_file_for(node.syntax()); + if Some(err.span().anchor.file_id.file_id()) + == hir_file_id.file_id().map(|f| f.file_id(semantics.db)) + { let location = err.span().range + semantics .db - .ast_id_map(err.span().anchor.file_id.into()) + .ast_id_map(hir_file_id) .get_erased(err.span().anchor.ast_id) .text_range() .start(); @@ -359,10 +489,10 @@ impl<'a> Translator<'a> { .as_ref() .and_then(|s| s.expand_macro_call(mcall)) { - self.emit_macro_expansion_parse_errors(mcall, &expanded); + self.emit_macro_expansion_parse_errors(mcall, &expanded.value); let expand_to = ra_ap_hir_expand::ExpandTo::from_call_site(mcall); let kind = expanded.kind(); - if let Some(value) = self.emit_expanded_as(expand_to, expanded) { + if let Some(value) = self.emit_expanded_as(expand_to, expanded.value) { generated::MacroCall::emit_macro_call_expansion( label, value, @@ -394,6 +524,17 @@ impl<'a> Translator<'a> { ); } } + + pub(crate) fn emit_else_branch( + &mut self, + node: &ast::ElseBranch, + ) -> Option> { + match node { + ast::ElseBranch::IfExpr(inner) => self.emit_if_expr(inner).map(Into::into), + ast::ElseBranch::Block(inner) => self.emit_block_expr(inner).map(Into::into), + } + } + fn canonical_path_from_type(&self, ty: Type) -> Option { let sema = self.semantics.as_ref().unwrap(); // rust-analyzer doesn't provide a type enum directly @@ -644,7 +785,7 @@ impl<'a> Translator<'a> { })(); } - pub(crate) fn should_be_excluded_attrs(&self, item: &impl ast::HasAttrs) -> bool { + pub(crate) fn should_be_excluded(&self, item: &impl ast::HasAttrs) -> bool { self.semantics.is_some_and(|sema| { item.attrs().any(|attr| { attr.as_simple_call().is_some_and(|(name, tokens)| { @@ -654,46 +795,8 @@ impl<'a> Translator<'a> { }) } - pub(crate) fn should_be_excluded(&self, item: &impl ast::AstNode) -> bool { - if self.source_kind == SourceKind::Library { - let syntax = item.syntax(); - if syntax - .parent() - .and_then(Fn::cast) - .and_then(|x| x.body()) - .is_some_and(|body| body.syntax() == syntax) - { - return true; - } - if syntax - .parent() - .and_then(Const::cast) - .and_then(|x| x.body()) - .is_some_and(|body| body.syntax() == syntax) - { - return true; - } - if syntax - .parent() - .and_then(Static::cast) - .and_then(|x| x.body()) - .is_some_and(|body| body.syntax() == syntax) - { - return true; - } - if syntax - .parent() - .and_then(Param::cast) - .and_then(|x| x.pat()) - .is_some_and(|pat| pat.syntax() == syntax) - { - return true; - } - if syntax.kind() == SyntaxKind::TOKEN_TREE { - return true; - } - } - false + pub(crate) fn should_skip_bodies(&self) -> bool { + self.source_kind == SourceKind::Library } pub(crate) fn extract_types_from_path_segment( @@ -703,11 +806,11 @@ impl<'a> Translator<'a> { ) { // work around a bug in rust-analyzer AST generation machinery // this code was inspired by rust-analyzer's own workaround for this: - // https://github.com/rust-lang/rust-analyzer/blob/1f86729f29ea50e8491a1516422df4fd3d1277b0/crates/syntax/src/ast/node_ext.rs#L268-L277 - if item.l_angle_token().is_some() { + // https://github.com/rust-lang/rust-analyzer/blob/a642aa8023be11d6bc027fc6a68c71c2f3fc7f72/crates/syntax/src/ast/node_ext.rs#L290-L297 + if let Some(anchor) = item.type_anchor() { // or // T is any TypeRef, Trait has to be a PathType - let mut type_refs = item + let mut type_refs = anchor .syntax() .children() .filter(|node| ast::Type::can_cast(node.kind())); @@ -725,13 +828,31 @@ impl<'a> Translator<'a> { { generated::PathSegment::emit_trait_type_repr(label, t, &mut self.trap.writer) } + // moreover as we're skipping emission of TypeAnchor, we need to attach its comments to + // this path segment + self.emit_tokens( + &anchor, + label.into(), + anchor.syntax().children_with_tokens(), + ); } } + fn is_attribute_macro_target(&self, node: &ast::Item) -> bool { + // rust-analyzer considers as an `attr_macro_call` also a plain macro call, but we want to + // process that differently (in `extract_macro_call_expanded`) + !matches!(node, ast::Item::MacroCall(_)) + && self.semantics.is_some_and(|semantics| { + let file = semantics.hir_file_for(node.syntax()); + let node = InFile::new(file, node); + semantics.is_attr_macro_call(node) + }) + } + pub(crate) fn prepare_item_expansion( &mut self, node: &ast::Item, - ) -> Option> { + ) -> Option> { if self.source_kind == SourceKind::Library { // if the item expands via an attribute macro, we want to only emit the expansion if let Some(expanded) = self.emit_attribute_macro_expansion(node) { @@ -748,26 +869,53 @@ impl<'a> Translator<'a> { expanded.into(), &mut self.trap.writer, ); - return Some(label.into()); + return Some(label); } } - let semantics = self.semantics.as_ref()?; - let file = semantics.hir_file_for(node.syntax()); - let node = InFile::new(file, node); - if semantics.is_attr_macro_call(node) { + if self.is_attribute_macro_target(node) { self.macro_context_depth += 1; } None } + fn process_item_macro_expansion( + &mut self, + node: &impl ast::AstNode, + ExpandResult { value, err }: ExpandResult, + ) -> Option> { + let semantics = self.semantics.unwrap(); // if we are here, we have semantics + self.emit_macro_expansion_parse_errors(node, &value); + if let Some(err) = err { + let rendered = err.render_to_string(semantics.db); + self.emit_diagnostic_for_node( + node, + DiagnosticSeverity::Warning, + "item_expansion".to_owned(), + format!("item expansion failed ({})", rendered.kind), + rendered.message, + ); + } + if let Some(items) = ast::MacroItems::cast(value) { + self.emit_macro_items(&items) + } else { + let message = + "attribute or derive macro expansion cannot be cast to MacroItems".to_owned(); + self.emit_diagnostic_for_node( + node, + DiagnosticSeverity::Warning, + "item_expansion".to_owned(), + message.clone(), + message, + ); + None + } + } + fn emit_attribute_macro_expansion( &mut self, node: &ast::Item, ) -> Option> { - let semantics = self.semantics?; - let file = semantics.hir_file_for(node.syntax()); - let infile_node = InFile::new(file, node); - if !semantics.is_attr_macro_call(infile_node) { + if !self.is_attribute_macro_target(node) { return None; } self.macro_context_depth -= 1; @@ -775,23 +923,8 @@ impl<'a> Translator<'a> { // only expand the outermost attribute macro return None; } - let ExpandResult { - value: expanded, .. - } = semantics.expand_attr_macro(node)?; - self.emit_macro_expansion_parse_errors(node, &expanded); - let macro_items = ast::MacroItems::cast(expanded).or_else(|| { - let message = "attribute macro expansion cannot be cast to MacroItems".to_owned(); - let location = self.location_for_node(node); - self.emit_diagnostic( - DiagnosticSeverity::Warning, - "item_expansion".to_owned(), - message.clone(), - message, - location.unwrap_or(UNKNOWN_LOCATION), - ); - None - })?; - self.emit_macro_items(¯o_items) + let expansion = self.semantics?.expand_attr_macro(node)?; + self.process_item_macro_expansion(node, expansion.map(|x| x.value)) } pub(crate) fn emit_item_expansion(&mut self, node: &ast::Item, label: Label) { @@ -799,4 +932,46 @@ impl<'a> Translator<'a> { generated::Item::emit_attribute_macro_expansion(label, expanded, &mut self.trap.writer); } } + + pub(crate) fn emit_function_has_implementation( + &mut self, + node: &ast::Fn, + label: Label, + ) { + if node.body().is_some() { + generated::Function::emit_has_implementation(label, &mut self.trap.writer); + } + } + + pub(crate) fn emit_const_has_implementation( + &mut self, + node: &ast::Const, + label: Label, + ) { + if node.body().is_some() { + generated::Const::emit_has_implementation(label, &mut self.trap.writer); + } + } + + pub(crate) fn emit_derive_expansion( + &mut self, + node: &(impl Into + Clone), + label: impl Into> + Copy, + ) { + let Some(semantics) = self.semantics else { + return; + }; + let node: ast::Adt = node.clone().into(); + let expansions = node + .attrs() + .filter_map(|attr| semantics.expand_derive_macro(&attr)) + .flatten() + .filter_map(|expanded| self.process_item_macro_expansion(&node, expanded)) + .collect::>(); + generated::Adt::emit_derive_macro_expansions( + label.into(), + expansions, + &mut self.trap.writer, + ); + } } diff --git a/rust/extractor/src/translate/generated.rs b/rust/extractor/src/translate/generated.rs index cd0c2f9a9d96..787ce71bf2a8 100644 --- a/rust/extractor/src/translate/generated.rs +++ b/rust/extractor/src/translate/generated.rs @@ -1,9 +1,8 @@ //! Generated by `ast-generator`, do not edit by hand. use super::base::Translator; -use super::mappings::TextValue; +use super::mappings::{Emission, HasTrapClass, TextValue}; use crate::generated; use crate::trap::{Label, TrapId}; -use crate::{post_emit, pre_emit}; use ra_ap_syntax::ast::{ HasArgList, HasAttrs, HasGenericArgs, HasGenericParams, HasLoopBody, HasModuleItem, HasName, HasTypeBounds, HasVisibility, RangeItem, @@ -11,17 +10,10 @@ use ra_ap_syntax::ast::{ #[rustfmt::skip] use ra_ap_syntax::{AstNode, ast}; impl Translator<'_> { - fn emit_else_branch(&mut self, node: &ast::ElseBranch) -> Option> { - match node { - ast::ElseBranch::IfExpr(inner) => self.emit_if_expr(inner).map(Into::into), - ast::ElseBranch::Block(inner) => self.emit_block_expr(inner).map(Into::into), - } - } pub(crate) fn emit_asm_operand( &mut self, node: &ast::AsmOperand, ) -> Option> { - pre_emit!(AsmOperand, self, node); let label = match node { ast::AsmOperand::AsmConst(inner) => self.emit_asm_const(inner).map(Into::into), ast::AsmOperand::AsmLabel(inner) => self.emit_asm_label(inner).map(Into::into), @@ -30,14 +22,12 @@ impl Translator<'_> { } ast::AsmOperand::AsmSym(inner) => self.emit_asm_sym(inner).map(Into::into), }?; - post_emit!(AsmOperand, self, node, label); Some(label) } pub(crate) fn emit_asm_piece( &mut self, node: &ast::AsmPiece, ) -> Option> { - pre_emit!(AsmPiece, self, node); let label = match node { ast::AsmPiece::AsmClobberAbi(inner) => self.emit_asm_clobber_abi(inner).map(Into::into), ast::AsmPiece::AsmOperandNamed(inner) => { @@ -45,25 +35,25 @@ impl Translator<'_> { } ast::AsmPiece::AsmOptions(inner) => self.emit_asm_options(inner).map(Into::into), }?; - post_emit!(AsmPiece, self, node, label); Some(label) } pub(crate) fn emit_assoc_item( &mut self, node: &ast::AssocItem, ) -> Option> { - pre_emit!(AssocItem, self, node); + if let Some(label) = self.pre_emit(node) { + return Some(label); + } let label = match node { ast::AssocItem::Const(inner) => self.emit_const(inner).map(Into::into), ast::AssocItem::Fn(inner) => self.emit_fn(inner).map(Into::into), ast::AssocItem::MacroCall(inner) => self.emit_macro_call(inner).map(Into::into), ast::AssocItem::TypeAlias(inner) => self.emit_type_alias(inner).map(Into::into), }?; - post_emit!(AssocItem, self, node, label); + self.post_emit(node, label); Some(label) } pub(crate) fn emit_expr(&mut self, node: &ast::Expr) -> Option> { - pre_emit!(Expr, self, node); let label = match node { ast::Expr::ArrayExpr(inner) => self.emit_array_expr(inner).map(Into::into), ast::Expr::AsmExpr(inner) => self.emit_asm_expr(inner).map(Into::into), @@ -102,28 +92,28 @@ impl Translator<'_> { ast::Expr::YeetExpr(inner) => self.emit_yeet_expr(inner).map(Into::into), ast::Expr::YieldExpr(inner) => self.emit_yield_expr(inner).map(Into::into), }?; - post_emit!(Expr, self, node, label); Some(label) } pub(crate) fn emit_extern_item( &mut self, node: &ast::ExternItem, ) -> Option> { - pre_emit!(ExternItem, self, node); + if let Some(label) = self.pre_emit(node) { + return Some(label); + } let label = match node { ast::ExternItem::Fn(inner) => self.emit_fn(inner).map(Into::into), ast::ExternItem::MacroCall(inner) => self.emit_macro_call(inner).map(Into::into), ast::ExternItem::Static(inner) => self.emit_static(inner).map(Into::into), ast::ExternItem::TypeAlias(inner) => self.emit_type_alias(inner).map(Into::into), }?; - post_emit!(ExternItem, self, node, label); + self.post_emit(node, label); Some(label) } pub(crate) fn emit_field_list( &mut self, node: &ast::FieldList, ) -> Option> { - pre_emit!(FieldList, self, node); let label = match node { ast::FieldList::RecordFieldList(inner) => { self.emit_record_field_list(inner).map(Into::into) @@ -132,28 +122,24 @@ impl Translator<'_> { self.emit_tuple_field_list(inner).map(Into::into) } }?; - post_emit!(FieldList, self, node, label); Some(label) } pub(crate) fn emit_generic_arg( &mut self, node: &ast::GenericArg, ) -> Option> { - pre_emit!(GenericArg, self, node); let label = match node { ast::GenericArg::AssocTypeArg(inner) => self.emit_assoc_type_arg(inner).map(Into::into), ast::GenericArg::ConstArg(inner) => self.emit_const_arg(inner).map(Into::into), ast::GenericArg::LifetimeArg(inner) => self.emit_lifetime_arg(inner).map(Into::into), ast::GenericArg::TypeArg(inner) => self.emit_type_arg(inner).map(Into::into), }?; - post_emit!(GenericArg, self, node, label); Some(label) } pub(crate) fn emit_generic_param( &mut self, node: &ast::GenericParam, ) -> Option> { - pre_emit!(GenericParam, self, node); let label = match node { ast::GenericParam::ConstParam(inner) => self.emit_const_param(inner).map(Into::into), ast::GenericParam::LifetimeParam(inner) => { @@ -161,11 +147,9 @@ impl Translator<'_> { } ast::GenericParam::TypeParam(inner) => self.emit_type_param(inner).map(Into::into), }?; - post_emit!(GenericParam, self, node, label); Some(label) } pub(crate) fn emit_pat(&mut self, node: &ast::Pat) -> Option> { - pre_emit!(Pat, self, node); let label = match node { ast::Pat::BoxPat(inner) => self.emit_box_pat(inner).map(Into::into), ast::Pat::ConstBlockPat(inner) => self.emit_const_block_pat(inner).map(Into::into), @@ -184,21 +168,17 @@ impl Translator<'_> { ast::Pat::TupleStructPat(inner) => self.emit_tuple_struct_pat(inner).map(Into::into), ast::Pat::WildcardPat(inner) => self.emit_wildcard_pat(inner).map(Into::into), }?; - post_emit!(Pat, self, node, label); Some(label) } pub(crate) fn emit_stmt(&mut self, node: &ast::Stmt) -> Option> { - pre_emit!(Stmt, self, node); let label = match node { ast::Stmt::ExprStmt(inner) => self.emit_expr_stmt(inner).map(Into::into), ast::Stmt::Item(inner) => self.emit_item(inner).map(Into::into), ast::Stmt::LetStmt(inner) => self.emit_let_stmt(inner).map(Into::into), }?; - post_emit!(Stmt, self, node, label); Some(label) } pub(crate) fn emit_type(&mut self, node: &ast::Type) -> Option> { - pre_emit!(TypeRepr, self, node); let label = match node { ast::Type::ArrayType(inner) => self.emit_array_type(inner).map(Into::into), ast::Type::DynTraitType(inner) => self.emit_dyn_trait_type(inner).map(Into::into), @@ -215,23 +195,22 @@ impl Translator<'_> { ast::Type::SliceType(inner) => self.emit_slice_type(inner).map(Into::into), ast::Type::TupleType(inner) => self.emit_tuple_type(inner).map(Into::into), }?; - post_emit!(TypeRepr, self, node, label); Some(label) } pub(crate) fn emit_use_bound_generic_arg( &mut self, node: &ast::UseBoundGenericArg, ) -> Option> { - pre_emit!(UseBoundGenericArg, self, node); let label = match node { ast::UseBoundGenericArg::Lifetime(inner) => self.emit_lifetime(inner).map(Into::into), ast::UseBoundGenericArg::NameRef(inner) => self.emit_name_ref(inner).map(Into::into), }?; - post_emit!(UseBoundGenericArg, self, node, label); Some(label) } pub(crate) fn emit_item(&mut self, node: &ast::Item) -> Option> { - pre_emit!(Item, self, node); + if let Some(label) = self.pre_emit(node) { + return Some(label); + } let label = match node { ast::Item::Const(inner) => self.emit_const(inner).map(Into::into), ast::Item::Enum(inner) => self.emit_enum(inner).map(Into::into), @@ -251,21 +230,16 @@ impl Translator<'_> { ast::Item::Union(inner) => self.emit_union(inner).map(Into::into), ast::Item::Use(inner) => self.emit_use(inner).map(Into::into), }?; - post_emit!(Item, self, node, label); + self.post_emit(node, label); Some(label) } pub(crate) fn emit_abi(&mut self, node: &ast::Abi) -> Option> { - pre_emit!(Abi, self, node); - if self.should_be_excluded(node) { - return None; - } let abi_string = node.try_get_text(); let label = self.trap.emit(generated::Abi { id: TrapId::Star, abi_string, }); self.emit_location(label, node); - post_emit!(Abi, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -273,17 +247,12 @@ impl Translator<'_> { &mut self, node: &ast::ArgList, ) -> Option> { - pre_emit!(ArgList, self, node); - if self.should_be_excluded(node) { - return None; - } let args = node.args().filter_map(|x| self.emit_expr(&x)).collect(); let label = self.trap.emit(generated::ArgList { id: TrapId::Star, args, }); self.emit_location(label, node); - post_emit!(ArgList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -291,13 +260,9 @@ impl Translator<'_> { &mut self, node: &ast::ArrayExpr, ) -> Option> { - pre_emit!(ArrayExprInternal, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let exprs = node.exprs().filter_map(|x| self.emit_expr(&x)).collect(); let is_semicolon = node.semicolon_token().is_some(); @@ -308,7 +273,6 @@ impl Translator<'_> { is_semicolon, }); self.emit_location(label, node); - post_emit!(ArrayExprInternal, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -316,10 +280,6 @@ impl Translator<'_> { &mut self, node: &ast::ArrayType, ) -> Option> { - pre_emit!(ArrayTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let const_arg = node.const_arg().and_then(|x| self.emit_const_arg(&x)); let element_type_repr = node.ty().and_then(|x| self.emit_type(&x)); let label = self.trap.emit(generated::ArrayTypeRepr { @@ -328,7 +288,6 @@ impl Translator<'_> { element_type_repr, }); self.emit_location(label, node); - post_emit!(ArrayTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -336,15 +295,10 @@ impl Translator<'_> { &mut self, node: &ast::AsmClobberAbi, ) -> Option> { - pre_emit!(AsmClobberAbi, self, node); - if self.should_be_excluded(node) { - return None; - } let label = self .trap .emit(generated::AsmClobberAbi { id: TrapId::Star }); self.emit_location(label, node); - post_emit!(AsmClobberAbi, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -352,10 +306,6 @@ impl Translator<'_> { &mut self, node: &ast::AsmConst, ) -> Option> { - pre_emit!(AsmConst, self, node); - if self.should_be_excluded(node) { - return None; - } let expr = node.expr().and_then(|x| self.emit_expr(&x)); let is_const = node.const_token().is_some(); let label = self.trap.emit(generated::AsmConst { @@ -364,7 +314,6 @@ impl Translator<'_> { is_const, }); self.emit_location(label, node); - post_emit!(AsmConst, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -372,13 +321,8 @@ impl Translator<'_> { &mut self, node: &ast::AsmDirSpec, ) -> Option> { - pre_emit!(AsmDirSpec, self, node); - if self.should_be_excluded(node) { - return None; - } let label = self.trap.emit(generated::AsmDirSpec { id: TrapId::Star }); self.emit_location(label, node); - post_emit!(AsmDirSpec, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -386,13 +330,9 @@ impl Translator<'_> { &mut self, node: &ast::AsmExpr, ) -> Option> { - pre_emit!(AsmExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let asm_pieces = node .asm_pieces() .filter_map(|x| self.emit_asm_piece(&x)) @@ -406,7 +346,6 @@ impl Translator<'_> { template, }); self.emit_location(label, node); - post_emit!(AsmExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -414,17 +353,12 @@ impl Translator<'_> { &mut self, node: &ast::AsmLabel, ) -> Option> { - pre_emit!(AsmLabel, self, node); - if self.should_be_excluded(node) { - return None; - } let block_expr = node.block_expr().and_then(|x| self.emit_block_expr(&x)); let label = self.trap.emit(generated::AsmLabel { id: TrapId::Star, block_expr, }); self.emit_location(label, node); - post_emit!(AsmLabel, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -432,10 +366,6 @@ impl Translator<'_> { &mut self, node: &ast::AsmOperandExpr, ) -> Option> { - pre_emit!(AsmOperandExpr, self, node); - if self.should_be_excluded(node) { - return None; - } let in_expr = node.in_expr().and_then(|x| self.emit_expr(&x)); let out_expr = node.out_expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::AsmOperandExpr { @@ -444,7 +374,6 @@ impl Translator<'_> { out_expr, }); self.emit_location(label, node); - post_emit!(AsmOperandExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -452,10 +381,6 @@ impl Translator<'_> { &mut self, node: &ast::AsmOperandNamed, ) -> Option> { - pre_emit!(AsmOperandNamed, self, node); - if self.should_be_excluded(node) { - return None; - } let asm_operand = node.asm_operand().and_then(|x| self.emit_asm_operand(&x)); let name = node.name().and_then(|x| self.emit_name(&x)); let label = self.trap.emit(generated::AsmOperandNamed { @@ -464,7 +389,6 @@ impl Translator<'_> { name, }); self.emit_location(label, node); - post_emit!(AsmOperandNamed, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -472,17 +396,12 @@ impl Translator<'_> { &mut self, node: &ast::AsmOption, ) -> Option> { - pre_emit!(AsmOption, self, node); - if self.should_be_excluded(node) { - return None; - } let is_raw = node.raw_token().is_some(); let label = self.trap.emit(generated::AsmOption { id: TrapId::Star, is_raw, }); self.emit_location(label, node); - post_emit!(AsmOption, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -490,10 +409,6 @@ impl Translator<'_> { &mut self, node: &ast::AsmOptions, ) -> Option> { - pre_emit!(AsmOptionsList, self, node); - if self.should_be_excluded(node) { - return None; - } let asm_options = node .asm_options() .filter_map(|x| self.emit_asm_option(&x)) @@ -503,7 +418,6 @@ impl Translator<'_> { asm_options, }); self.emit_location(label, node); - post_emit!(AsmOptionsList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -511,10 +425,6 @@ impl Translator<'_> { &mut self, node: &ast::AsmRegOperand, ) -> Option> { - pre_emit!(AsmRegOperand, self, node); - if self.should_be_excluded(node) { - return None; - } let asm_dir_spec = node.asm_dir_spec().and_then(|x| self.emit_asm_dir_spec(&x)); let asm_operand_expr = node .asm_operand_expr() @@ -527,7 +437,6 @@ impl Translator<'_> { asm_reg_spec, }); self.emit_location(label, node); - post_emit!(AsmRegOperand, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -535,32 +444,22 @@ impl Translator<'_> { &mut self, node: &ast::AsmRegSpec, ) -> Option> { - pre_emit!(AsmRegSpec, self, node); - if self.should_be_excluded(node) { - return None; - } let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x)); let label = self.trap.emit(generated::AsmRegSpec { id: TrapId::Star, identifier, }); self.emit_location(label, node); - post_emit!(AsmRegSpec, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_asm_sym(&mut self, node: &ast::AsmSym) -> Option> { - pre_emit!(AsmSym, self, node); - if self.should_be_excluded(node) { - return None; - } let path = node.path().and_then(|x| self.emit_path(&x)); let label = self.trap.emit(generated::AsmSym { id: TrapId::Star, path, }); self.emit_location(label, node); - post_emit!(AsmSym, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -568,13 +467,9 @@ impl Translator<'_> { &mut self, node: &ast::AssocItemList, ) -> Option> { - pre_emit!(AssocItemList, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let assoc_items = node .assoc_items() .filter_map(|x| self.emit_assoc_item(&x)) @@ -586,7 +481,6 @@ impl Translator<'_> { attrs, }); self.emit_location(label, node); - post_emit!(AssocItemList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -594,10 +488,6 @@ impl Translator<'_> { &mut self, node: &ast::AssocTypeArg, ) -> Option> { - pre_emit!(AssocTypeArg, self, node); - if self.should_be_excluded(node) { - return None; - } let const_arg = node.const_arg().and_then(|x| self.emit_const_arg(&x)); let generic_arg_list = node .generic_arg_list() @@ -624,22 +514,16 @@ impl Translator<'_> { type_bound_list, }); self.emit_location(label, node); - post_emit!(AssocTypeArg, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_attr(&mut self, node: &ast::Attr) -> Option> { - pre_emit!(Attr, self, node); - if self.should_be_excluded(node) { - return None; - } let meta = node.meta().and_then(|x| self.emit_meta(&x)); let label = self.trap.emit(generated::Attr { id: TrapId::Star, meta, }); self.emit_location(label, node); - post_emit!(Attr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -647,13 +531,9 @@ impl Translator<'_> { &mut self, node: &ast::AwaitExpr, ) -> Option> { - pre_emit!(AwaitExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::AwaitExpr { @@ -662,7 +542,6 @@ impl Translator<'_> { expr, }); self.emit_location(label, node); - post_emit!(AwaitExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -670,13 +549,9 @@ impl Translator<'_> { &mut self, node: &ast::BecomeExpr, ) -> Option> { - pre_emit!(BecomeExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::BecomeExpr { @@ -685,7 +560,6 @@ impl Translator<'_> { expr, }); self.emit_location(label, node); - post_emit!(BecomeExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -693,13 +567,9 @@ impl Translator<'_> { &mut self, node: &ast::BinExpr, ) -> Option> { - pre_emit!(BinaryExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let lhs = node.lhs().and_then(|x| self.emit_expr(&x)); let operator_name = node.try_get_text(); @@ -712,7 +582,6 @@ impl Translator<'_> { rhs, }); self.emit_location(label, node); - post_emit!(BinaryExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -720,13 +589,9 @@ impl Translator<'_> { &mut self, node: &ast::BlockExpr, ) -> Option> { - pre_emit!(BlockExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let is_async = node.async_token().is_some(); let is_const = node.const_token().is_some(); @@ -749,22 +614,16 @@ impl Translator<'_> { stmt_list, }); self.emit_location(label, node); - post_emit!(BlockExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_box_pat(&mut self, node: &ast::BoxPat) -> Option> { - pre_emit!(BoxPat, self, node); - if self.should_be_excluded(node) { - return None; - } let pat = node.pat().and_then(|x| self.emit_pat(&x)); let label = self.trap.emit(generated::BoxPat { id: TrapId::Star, pat, }); self.emit_location(label, node); - post_emit!(BoxPat, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -772,13 +631,9 @@ impl Translator<'_> { &mut self, node: &ast::BreakExpr, ) -> Option> { - pre_emit!(BreakExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); @@ -789,7 +644,6 @@ impl Translator<'_> { lifetime, }); self.emit_location(label, node); - post_emit!(BreakExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -797,13 +651,9 @@ impl Translator<'_> { &mut self, node: &ast::CallExpr, ) -> Option> { - pre_emit!(CallExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let arg_list = node.arg_list().and_then(|x| self.emit_arg_list(&x)); let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let function = node.expr().and_then(|x| self.emit_expr(&x)); @@ -814,7 +664,6 @@ impl Translator<'_> { function, }); self.emit_location(label, node); - post_emit!(CallExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -822,13 +671,9 @@ impl Translator<'_> { &mut self, node: &ast::CastExpr, ) -> Option> { - pre_emit!(CastExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let type_repr = node.ty().and_then(|x| self.emit_type(&x)); @@ -839,7 +684,6 @@ impl Translator<'_> { type_repr, }); self.emit_location(label, node); - post_emit!(CastExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -847,10 +691,6 @@ impl Translator<'_> { &mut self, node: &ast::ClosureBinder, ) -> Option> { - pre_emit!(ClosureBinder, self, node); - if self.should_be_excluded(node) { - return None; - } let generic_param_list = node .generic_param_list() .and_then(|x| self.emit_generic_param_list(&x)); @@ -859,7 +699,6 @@ impl Translator<'_> { generic_param_list, }); self.emit_location(label, node); - post_emit!(ClosureBinder, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -867,13 +706,9 @@ impl Translator<'_> { &mut self, node: &ast::ClosureExpr, ) -> Option> { - pre_emit!(ClosureExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let body = node.body().and_then(|x| self.emit_expr(&x)); let closure_binder = node @@ -900,37 +735,45 @@ impl Translator<'_> { ret_type, }); self.emit_location(label, node); - post_emit!(ClosureExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_const(&mut self, node: &ast::Const) -> Option> { - pre_emit!(Const, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } - if self.should_be_excluded_attrs(node) { + if self.should_be_excluded(node) { return None; } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); - let body = node.body().and_then(|x| self.emit_expr(&x)); + let body = if self.should_skip_bodies() { + None + } else { + node.body().and_then(|x| self.emit_expr(&x)) + }; + let generic_param_list = node + .generic_param_list() + .and_then(|x| self.emit_generic_param_list(&x)); let is_const = node.const_token().is_some(); let is_default = node.default_token().is_some(); let name = node.name().and_then(|x| self.emit_name(&x)); let type_repr = node.ty().and_then(|x| self.emit_type(&x)); let visibility = node.visibility().and_then(|x| self.emit_visibility(&x)); + let where_clause = node.where_clause().and_then(|x| self.emit_where_clause(&x)); let label = self.trap.emit(generated::Const { id: TrapId::Star, attrs, body, + generic_param_list, is_const, is_default, name, type_repr, visibility, + where_clause, }); self.emit_location(label, node); - post_emit!(Const, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -938,17 +781,12 @@ impl Translator<'_> { &mut self, node: &ast::ConstArg, ) -> Option> { - pre_emit!(ConstArg, self, node); - if self.should_be_excluded(node) { - return None; - } let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::ConstArg { id: TrapId::Star, expr, }); self.emit_location(label, node); - post_emit!(ConstArg, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -956,10 +794,6 @@ impl Translator<'_> { &mut self, node: &ast::ConstBlockPat, ) -> Option> { - pre_emit!(ConstBlockPat, self, node); - if self.should_be_excluded(node) { - return None; - } let block_expr = node.block_expr().and_then(|x| self.emit_block_expr(&x)); let is_const = node.const_token().is_some(); let label = self.trap.emit(generated::ConstBlockPat { @@ -968,7 +802,6 @@ impl Translator<'_> { is_const, }); self.emit_location(label, node); - post_emit!(ConstBlockPat, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -976,13 +809,9 @@ impl Translator<'_> { &mut self, node: &ast::ConstParam, ) -> Option> { - pre_emit!(ConstParam, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let default_val = node.default_val().and_then(|x| self.emit_const_arg(&x)); let is_const = node.const_token().is_some(); @@ -997,7 +826,6 @@ impl Translator<'_> { type_repr, }); self.emit_location(label, node); - post_emit!(ConstParam, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1005,13 +833,9 @@ impl Translator<'_> { &mut self, node: &ast::ContinueExpr, ) -> Option> { - pre_emit!(ContinueExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); let label = self.trap.emit(generated::ContinueExpr { @@ -1020,7 +844,6 @@ impl Translator<'_> { lifetime, }); self.emit_location(label, node); - post_emit!(ContinueExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1028,10 +851,6 @@ impl Translator<'_> { &mut self, node: &ast::DynTraitType, ) -> Option> { - pre_emit!(DynTraitTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let type_bound_list = node .type_bound_list() .and_then(|x| self.emit_type_bound_list(&x)); @@ -1040,16 +859,14 @@ impl Translator<'_> { type_bound_list, }); self.emit_location(label, node); - post_emit!(DynTraitTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_enum(&mut self, node: &ast::Enum) -> Option> { - pre_emit!(Enum, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } - if self.should_be_excluded_attrs(node) { + if self.should_be_excluded(node) { return None; } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); @@ -1070,7 +887,7 @@ impl Translator<'_> { where_clause, }); self.emit_location(label, node); - post_emit!(Enum, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1078,17 +895,12 @@ impl Translator<'_> { &mut self, node: &ast::ExprStmt, ) -> Option> { - pre_emit!(ExprStmt, self, node); - if self.should_be_excluded(node) { - return None; - } let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::ExprStmt { id: TrapId::Star, expr, }); self.emit_location(label, node); - post_emit!(ExprStmt, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1096,13 +908,9 @@ impl Translator<'_> { &mut self, node: &ast::ExternBlock, ) -> Option> { - pre_emit!(ExternBlock, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let abi = node.abi().and_then(|x| self.emit_abi(&x)); let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let extern_item_list = node @@ -1117,7 +925,6 @@ impl Translator<'_> { is_unsafe, }); self.emit_location(label, node); - post_emit!(ExternBlock, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1125,13 +932,9 @@ impl Translator<'_> { &mut self, node: &ast::ExternCrate, ) -> Option> { - pre_emit!(ExternCrate, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x)); let rename = node.rename().and_then(|x| self.emit_rename(&x)); @@ -1144,7 +947,6 @@ impl Translator<'_> { visibility, }); self.emit_location(label, node); - post_emit!(ExternCrate, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1152,13 +954,9 @@ impl Translator<'_> { &mut self, node: &ast::ExternItemList, ) -> Option> { - pre_emit!(ExternItemList, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let extern_items = node .extern_items() @@ -1170,7 +968,6 @@ impl Translator<'_> { extern_items, }); self.emit_location(label, node); - post_emit!(ExternItemList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1178,13 +975,9 @@ impl Translator<'_> { &mut self, node: &ast::FieldExpr, ) -> Option> { - pre_emit!(FieldExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let container = node.expr().and_then(|x| self.emit_expr(&x)); let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x)); @@ -1195,21 +988,23 @@ impl Translator<'_> { identifier, }); self.emit_location(label, node); - post_emit!(FieldExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_fn(&mut self, node: &ast::Fn) -> Option> { - pre_emit!(Function, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } - if self.should_be_excluded_attrs(node) { + if self.should_be_excluded(node) { return None; } let abi = node.abi().and_then(|x| self.emit_abi(&x)); let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); - let body = node.body().and_then(|x| self.emit_block_expr(&x)); + let body = if self.should_skip_bodies() { + None + } else { + node.body().and_then(|x| self.emit_block_expr(&x)) + }; let generic_param_list = node .generic_param_list() .and_then(|x| self.emit_generic_param_list(&x)); @@ -1241,7 +1036,7 @@ impl Translator<'_> { where_clause, }); self.emit_location(label, node); - post_emit!(Function, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1249,10 +1044,6 @@ impl Translator<'_> { &mut self, node: &ast::FnPtrType, ) -> Option> { - pre_emit!(FnPtrTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let abi = node.abi().and_then(|x| self.emit_abi(&x)); let is_async = node.async_token().is_some(); let is_const = node.const_token().is_some(); @@ -1269,7 +1060,6 @@ impl Translator<'_> { ret_type, }); self.emit_location(label, node); - post_emit!(FnPtrTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1277,13 +1067,9 @@ impl Translator<'_> { &mut self, node: &ast::ForExpr, ) -> Option> { - pre_emit!(ForExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let iterable = node.iterable().and_then(|x| self.emit_expr(&x)); let label = node.label().and_then(|x| self.emit_label(&x)); @@ -1298,7 +1084,6 @@ impl Translator<'_> { pat, }); self.emit_location(label, node); - post_emit!(ForExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1306,10 +1091,6 @@ impl Translator<'_> { &mut self, node: &ast::ForType, ) -> Option> { - pre_emit!(ForTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let generic_param_list = node .generic_param_list() .and_then(|x| self.emit_generic_param_list(&x)); @@ -1320,7 +1101,6 @@ impl Translator<'_> { type_repr, }); self.emit_location(label, node); - post_emit!(ForTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1328,10 +1108,6 @@ impl Translator<'_> { &mut self, node: &ast::FormatArgsArg, ) -> Option> { - pre_emit!(FormatArgsArg, self, node); - if self.should_be_excluded(node) { - return None; - } let expr = node.expr().and_then(|x| self.emit_expr(&x)); let name = node.name().and_then(|x| self.emit_name(&x)); let label = self.trap.emit(generated::FormatArgsArg { @@ -1340,7 +1116,6 @@ impl Translator<'_> { name, }); self.emit_location(label, node); - post_emit!(FormatArgsArg, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1348,13 +1123,9 @@ impl Translator<'_> { &mut self, node: &ast::FormatArgsExpr, ) -> Option> { - pre_emit!(FormatArgsExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let args = node .args() .filter_map(|x| self.emit_format_args_arg(&x)) @@ -1368,7 +1139,6 @@ impl Translator<'_> { template, }); self.emit_location(label, node); - post_emit!(FormatArgsExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1376,10 +1146,6 @@ impl Translator<'_> { &mut self, node: &ast::GenericArgList, ) -> Option> { - pre_emit!(GenericArgList, self, node); - if self.should_be_excluded(node) { - return None; - } let generic_args = node .generic_args() .filter_map(|x| self.emit_generic_arg(&x)) @@ -1389,7 +1155,6 @@ impl Translator<'_> { generic_args, }); self.emit_location(label, node); - post_emit!(GenericArgList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1397,10 +1162,6 @@ impl Translator<'_> { &mut self, node: &ast::GenericParamList, ) -> Option> { - pre_emit!(GenericParamList, self, node); - if self.should_be_excluded(node) { - return None; - } let generic_params = node .generic_params() .filter_map(|x| self.emit_generic_param(&x)) @@ -1410,7 +1171,6 @@ impl Translator<'_> { generic_params, }); self.emit_location(label, node); - post_emit!(GenericParamList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1418,13 +1178,9 @@ impl Translator<'_> { &mut self, node: &ast::IdentPat, ) -> Option> { - pre_emit!(IdentPat, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let is_mut = node.mut_token().is_some(); let is_ref = node.ref_token().is_some(); @@ -1439,18 +1195,13 @@ impl Translator<'_> { pat, }); self.emit_location(label, node); - post_emit!(IdentPat, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_if_expr(&mut self, node: &ast::IfExpr) -> Option> { - pre_emit!(IfExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let condition = node.condition().and_then(|x| self.emit_expr(&x)); let else_ = node.else_branch().and_then(|x| self.emit_else_branch(&x)); @@ -1463,18 +1214,13 @@ impl Translator<'_> { then, }); self.emit_location(label, node); - post_emit!(IfExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_impl(&mut self, node: &ast::Impl) -> Option> { - pre_emit!(Impl, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let assoc_item_list = node .assoc_item_list() .and_then(|x| self.emit_assoc_item_list(&x)); @@ -1503,7 +1249,6 @@ impl Translator<'_> { where_clause, }); self.emit_location(label, node); - post_emit!(Impl, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1511,10 +1256,6 @@ impl Translator<'_> { &mut self, node: &ast::ImplTraitType, ) -> Option> { - pre_emit!(ImplTraitTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let type_bound_list = node .type_bound_list() .and_then(|x| self.emit_type_bound_list(&x)); @@ -1523,7 +1264,6 @@ impl Translator<'_> { type_bound_list, }); self.emit_location(label, node); - post_emit!(ImplTraitTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1531,13 +1271,9 @@ impl Translator<'_> { &mut self, node: &ast::IndexExpr, ) -> Option> { - pre_emit!(IndexExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let base = node.base().and_then(|x| self.emit_expr(&x)); let index = node.index().and_then(|x| self.emit_expr(&x)); @@ -1548,7 +1284,6 @@ impl Translator<'_> { index, }); self.emit_location(label, node); - post_emit!(IndexExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1556,15 +1291,10 @@ impl Translator<'_> { &mut self, node: &ast::InferType, ) -> Option> { - pre_emit!(InferTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let label = self .trap .emit(generated::InferTypeRepr { id: TrapId::Star }); self.emit_location(label, node); - post_emit!(InferTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1572,13 +1302,9 @@ impl Translator<'_> { &mut self, node: &ast::ItemList, ) -> Option> { - pre_emit!(ItemList, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let items = node.items().filter_map(|x| self.emit_item(&x)).collect(); let label = self.trap.emit(generated::ItemList { @@ -1587,22 +1313,16 @@ impl Translator<'_> { items, }); self.emit_location(label, node); - post_emit!(ItemList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_label(&mut self, node: &ast::Label) -> Option> { - pre_emit!(Label, self, node); - if self.should_be_excluded(node) { - return None; - } let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); let label = self.trap.emit(generated::Label { id: TrapId::Star, lifetime, }); self.emit_location(label, node); - post_emit!(Label, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1610,17 +1330,12 @@ impl Translator<'_> { &mut self, node: &ast::LetElse, ) -> Option> { - pre_emit!(LetElse, self, node); - if self.should_be_excluded(node) { - return None; - } let block_expr = node.block_expr().and_then(|x| self.emit_block_expr(&x)); let label = self.trap.emit(generated::LetElse { id: TrapId::Star, block_expr, }); self.emit_location(label, node); - post_emit!(LetElse, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1628,13 +1343,9 @@ impl Translator<'_> { &mut self, node: &ast::LetExpr, ) -> Option> { - pre_emit!(LetExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let scrutinee = node.expr().and_then(|x| self.emit_expr(&x)); let pat = node.pat().and_then(|x| self.emit_pat(&x)); @@ -1645,7 +1356,6 @@ impl Translator<'_> { pat, }); self.emit_location(label, node); - post_emit!(LetExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1653,13 +1363,9 @@ impl Translator<'_> { &mut self, node: &ast::LetStmt, ) -> Option> { - pre_emit!(LetStmt, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let initializer = node.initializer().and_then(|x| self.emit_expr(&x)); let let_else = node.let_else().and_then(|x| self.emit_let_else(&x)); @@ -1674,7 +1380,6 @@ impl Translator<'_> { type_repr, }); self.emit_location(label, node); - post_emit!(LetStmt, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1682,17 +1387,12 @@ impl Translator<'_> { &mut self, node: &ast::Lifetime, ) -> Option> { - pre_emit!(Lifetime, self, node); - if self.should_be_excluded(node) { - return None; - } let text = node.try_get_text(); let label = self.trap.emit(generated::Lifetime { id: TrapId::Star, text, }); self.emit_location(label, node); - post_emit!(Lifetime, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1700,17 +1400,12 @@ impl Translator<'_> { &mut self, node: &ast::LifetimeArg, ) -> Option> { - pre_emit!(LifetimeArg, self, node); - if self.should_be_excluded(node) { - return None; - } let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); let label = self.trap.emit(generated::LifetimeArg { id: TrapId::Star, lifetime, }); self.emit_location(label, node); - post_emit!(LifetimeArg, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1718,13 +1413,9 @@ impl Translator<'_> { &mut self, node: &ast::LifetimeParam, ) -> Option> { - pre_emit!(LifetimeParam, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); let type_bound_list = node @@ -1737,7 +1428,6 @@ impl Translator<'_> { type_bound_list, }); self.emit_location(label, node); - post_emit!(LifetimeParam, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1745,13 +1435,9 @@ impl Translator<'_> { &mut self, node: &ast::Literal, ) -> Option> { - pre_emit!(LiteralExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let text_value = node.try_get_text(); let label = self.trap.emit(generated::LiteralExpr { @@ -1760,7 +1446,6 @@ impl Translator<'_> { text_value, }); self.emit_location(label, node); - post_emit!(LiteralExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1768,17 +1453,12 @@ impl Translator<'_> { &mut self, node: &ast::LiteralPat, ) -> Option> { - pre_emit!(LiteralPat, self, node); - if self.should_be_excluded(node) { - return None; - } let literal = node.literal().and_then(|x| self.emit_literal(&x)); let label = self.trap.emit(generated::LiteralPat { id: TrapId::Star, literal, }); self.emit_location(label, node); - post_emit!(LiteralPat, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1786,13 +1466,9 @@ impl Translator<'_> { &mut self, node: &ast::LoopExpr, ) -> Option> { - pre_emit!(LoopExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let label = node.label().and_then(|x| self.emit_label(&x)); let loop_body = node.loop_body().and_then(|x| self.emit_block_expr(&x)); @@ -1803,7 +1479,6 @@ impl Translator<'_> { loop_body, }); self.emit_location(label, node); - post_emit!(LoopExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1811,16 +1486,19 @@ impl Translator<'_> { &mut self, node: &ast::MacroCall, ) -> Option> { - pre_emit!(MacroCall, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } - if self.should_be_excluded_attrs(node) { + if self.should_be_excluded(node) { return None; } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let path = node.path().and_then(|x| self.emit_path(&x)); - let token_tree = node.token_tree().and_then(|x| self.emit_token_tree(&x)); + let token_tree = if self.should_skip_bodies() { + None + } else { + node.token_tree().and_then(|x| self.emit_token_tree(&x)) + }; let label = self.trap.emit(generated::MacroCall { id: TrapId::Star, attrs, @@ -1828,7 +1506,7 @@ impl Translator<'_> { token_tree, }); self.emit_location(label, node); - post_emit!(MacroCall, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1836,16 +1514,20 @@ impl Translator<'_> { &mut self, node: &ast::MacroDef, ) -> Option> { - pre_emit!(MacroDef, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } - let args = node.args().and_then(|x| self.emit_token_tree(&x)); + let args = if self.should_skip_bodies() { + None + } else { + node.args().and_then(|x| self.emit_token_tree(&x)) + }; let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); - let body = node.body().and_then(|x| self.emit_token_tree(&x)); + let body = if self.should_skip_bodies() { + None + } else { + node.body().and_then(|x| self.emit_token_tree(&x)) + }; let name = node.name().and_then(|x| self.emit_name(&x)); let visibility = node.visibility().and_then(|x| self.emit_visibility(&x)); let label = self.trap.emit(generated::MacroDef { @@ -1857,7 +1539,6 @@ impl Translator<'_> { visibility, }); self.emit_location(label, node); - post_emit!(MacroDef, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1865,17 +1546,12 @@ impl Translator<'_> { &mut self, node: &ast::MacroExpr, ) -> Option> { - pre_emit!(MacroExpr, self, node); - if self.should_be_excluded(node) { - return None; - } let macro_call = node.macro_call().and_then(|x| self.emit_macro_call(&x)); let label = self.trap.emit(generated::MacroExpr { id: TrapId::Star, macro_call, }); self.emit_location(label, node); - post_emit!(MacroExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1883,17 +1559,12 @@ impl Translator<'_> { &mut self, node: &ast::MacroItems, ) -> Option> { - pre_emit!(MacroItems, self, node); - if self.should_be_excluded(node) { - return None; - } let items = node.items().filter_map(|x| self.emit_item(&x)).collect(); let label = self.trap.emit(generated::MacroItems { id: TrapId::Star, items, }); self.emit_location(label, node); - post_emit!(MacroItems, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1901,17 +1572,12 @@ impl Translator<'_> { &mut self, node: &ast::MacroPat, ) -> Option> { - pre_emit!(MacroPat, self, node); - if self.should_be_excluded(node) { - return None; - } let macro_call = node.macro_call().and_then(|x| self.emit_macro_call(&x)); let label = self.trap.emit(generated::MacroPat { id: TrapId::Star, macro_call, }); self.emit_location(label, node); - post_emit!(MacroPat, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1919,13 +1585,9 @@ impl Translator<'_> { &mut self, node: &ast::MacroRules, ) -> Option> { - pre_emit!(MacroRules, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let name = node.name().and_then(|x| self.emit_name(&x)); let token_tree = node.token_tree().and_then(|x| self.emit_token_tree(&x)); @@ -1938,7 +1600,6 @@ impl Translator<'_> { visibility, }); self.emit_location(label, node); - post_emit!(MacroRules, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1946,10 +1607,6 @@ impl Translator<'_> { &mut self, node: &ast::MacroStmts, ) -> Option> { - pre_emit!(MacroBlockExpr, self, node); - if self.should_be_excluded(node) { - return None; - } let tail_expr = node.expr().and_then(|x| self.emit_expr(&x)); let statements = node .statements() @@ -1961,7 +1618,6 @@ impl Translator<'_> { statements, }); self.emit_location(label, node); - post_emit!(MacroBlockExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1969,17 +1625,12 @@ impl Translator<'_> { &mut self, node: &ast::MacroType, ) -> Option> { - pre_emit!(MacroTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let macro_call = node.macro_call().and_then(|x| self.emit_macro_call(&x)); let label = self.trap.emit(generated::MacroTypeRepr { id: TrapId::Star, macro_call, }); self.emit_location(label, node); - post_emit!(MacroTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -1987,13 +1638,9 @@ impl Translator<'_> { &mut self, node: &ast::MatchArm, ) -> Option> { - pre_emit!(MatchArm, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let guard = node.guard().and_then(|x| self.emit_match_guard(&x)); @@ -2006,7 +1653,6 @@ impl Translator<'_> { pat, }); self.emit_location(label, node); - post_emit!(MatchArm, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2014,13 +1660,9 @@ impl Translator<'_> { &mut self, node: &ast::MatchArmList, ) -> Option> { - pre_emit!(MatchArmList, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let arms = node .arms() .filter_map(|x| self.emit_match_arm(&x)) @@ -2032,7 +1674,6 @@ impl Translator<'_> { attrs, }); self.emit_location(label, node); - post_emit!(MatchArmList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2040,13 +1681,9 @@ impl Translator<'_> { &mut self, node: &ast::MatchExpr, ) -> Option> { - pre_emit!(MatchExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let scrutinee = node.expr().and_then(|x| self.emit_expr(&x)); let match_arm_list = node @@ -2059,7 +1696,6 @@ impl Translator<'_> { match_arm_list, }); self.emit_location(label, node); - post_emit!(MatchExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2067,24 +1703,18 @@ impl Translator<'_> { &mut self, node: &ast::MatchGuard, ) -> Option> { - pre_emit!(MatchGuard, self, node); - if self.should_be_excluded(node) { - return None; - } let condition = node.condition().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::MatchGuard { id: TrapId::Star, condition, }); self.emit_location(label, node); - post_emit!(MatchGuard, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_meta(&mut self, node: &ast::Meta) -> Option> { - pre_emit!(Meta, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } let expr = node.expr().and_then(|x| self.emit_expr(&x)); let is_unsafe = node.unsafe_token().is_some(); @@ -2098,7 +1728,7 @@ impl Translator<'_> { token_tree, }); self.emit_location(label, node); - post_emit!(Meta, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2106,11 +1736,10 @@ impl Translator<'_> { &mut self, node: &ast::MethodCallExpr, ) -> Option> { - pre_emit!(MethodCallExpr, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } - if self.should_be_excluded_attrs(node) { + if self.should_be_excluded(node) { return None; } let arg_list = node.arg_list().and_then(|x| self.emit_arg_list(&x)); @@ -2129,16 +1758,15 @@ impl Translator<'_> { receiver, }); self.emit_location(label, node); - post_emit!(MethodCallExpr, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_module(&mut self, node: &ast::Module) -> Option> { - pre_emit!(Module, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } - if self.should_be_excluded_attrs(node) { + if self.should_be_excluded(node) { return None; } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); @@ -2153,22 +1781,17 @@ impl Translator<'_> { visibility, }); self.emit_location(label, node); - post_emit!(Module, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_name(&mut self, node: &ast::Name) -> Option> { - pre_emit!(Name, self, node); - if self.should_be_excluded(node) { - return None; - } let text = node.try_get_text(); let label = self.trap.emit(generated::Name { id: TrapId::Star, text, }); self.emit_location(label, node); - post_emit!(Name, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2176,17 +1799,12 @@ impl Translator<'_> { &mut self, node: &ast::NameRef, ) -> Option> { - pre_emit!(NameRef, self, node); - if self.should_be_excluded(node) { - return None; - } let text = node.try_get_text(); let label = self.trap.emit(generated::NameRef { id: TrapId::Star, text, }); self.emit_location(label, node); - post_emit!(NameRef, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2194,15 +1812,10 @@ impl Translator<'_> { &mut self, node: &ast::NeverType, ) -> Option> { - pre_emit!(NeverTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let label = self .trap .emit(generated::NeverTypeRepr { id: TrapId::Star }); self.emit_location(label, node); - post_emit!(NeverTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2210,13 +1823,9 @@ impl Translator<'_> { &mut self, node: &ast::OffsetOfExpr, ) -> Option> { - pre_emit!(OffsetOfExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let fields = node .fields() @@ -2230,35 +1839,29 @@ impl Translator<'_> { type_repr, }); self.emit_location(label, node); - post_emit!(OffsetOfExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_or_pat(&mut self, node: &ast::OrPat) -> Option> { - pre_emit!(OrPat, self, node); - if self.should_be_excluded(node) { - return None; - } let pats = node.pats().filter_map(|x| self.emit_pat(&x)).collect(); let label = self.trap.emit(generated::OrPat { id: TrapId::Star, pats, }); self.emit_location(label, node); - post_emit!(OrPat, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_param(&mut self, node: &ast::Param) -> Option> { - pre_emit!(Param, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); - let pat = node.pat().and_then(|x| self.emit_pat(&x)); + let pat = if self.should_skip_bodies() { + None + } else { + node.pat().and_then(|x| self.emit_pat(&x)) + }; let type_repr = node.ty().and_then(|x| self.emit_type(&x)); let label = self.trap.emit(generated::Param { id: TrapId::Star, @@ -2267,7 +1870,6 @@ impl Translator<'_> { type_repr, }); self.emit_location(label, node); - post_emit!(Param, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2275,10 +1877,6 @@ impl Translator<'_> { &mut self, node: &ast::ParamList, ) -> Option> { - pre_emit!(ParamList, self, node); - if self.should_be_excluded(node) { - return None; - } let params = node.params().filter_map(|x| self.emit_param(&x)).collect(); let self_param = node.self_param().and_then(|x| self.emit_self_param(&x)); let label = self.trap.emit(generated::ParamList { @@ -2287,7 +1885,6 @@ impl Translator<'_> { self_param, }); self.emit_location(label, node); - post_emit!(ParamList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2295,13 +1892,9 @@ impl Translator<'_> { &mut self, node: &ast::ParenExpr, ) -> Option> { - pre_emit!(ParenExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::ParenExpr { @@ -2310,7 +1903,6 @@ impl Translator<'_> { expr, }); self.emit_location(label, node); - post_emit!(ParenExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2318,17 +1910,12 @@ impl Translator<'_> { &mut self, node: &ast::ParenPat, ) -> Option> { - pre_emit!(ParenPat, self, node); - if self.should_be_excluded(node) { - return None; - } let pat = node.pat().and_then(|x| self.emit_pat(&x)); let label = self.trap.emit(generated::ParenPat { id: TrapId::Star, pat, }); self.emit_location(label, node); - post_emit!(ParenPat, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2336,17 +1923,12 @@ impl Translator<'_> { &mut self, node: &ast::ParenType, ) -> Option> { - pre_emit!(ParenTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let type_repr = node.ty().and_then(|x| self.emit_type(&x)); let label = self.trap.emit(generated::ParenTypeRepr { id: TrapId::Star, type_repr, }); self.emit_location(label, node); - post_emit!(ParenTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2354,10 +1936,6 @@ impl Translator<'_> { &mut self, node: &ast::ParenthesizedArgList, ) -> Option> { - pre_emit!(ParenthesizedArgList, self, node); - if self.should_be_excluded(node) { - return None; - } let type_args = node .type_args() .filter_map(|x| self.emit_type_arg(&x)) @@ -2367,15 +1945,10 @@ impl Translator<'_> { type_args, }); self.emit_location(label, node); - post_emit!(ParenthesizedArgList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_path(&mut self, node: &ast::Path) -> Option> { - pre_emit!(Path, self, node); - if self.should_be_excluded(node) { - return None; - } let qualifier = node.qualifier().and_then(|x| self.emit_path(&x)); let segment = node.segment().and_then(|x| self.emit_path_segment(&x)); let label = self.trap.emit(generated::Path { @@ -2384,7 +1957,6 @@ impl Translator<'_> { segment, }); self.emit_location(label, node); - post_emit!(Path, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2392,11 +1964,10 @@ impl Translator<'_> { &mut self, node: &ast::PathExpr, ) -> Option> { - pre_emit!(PathExpr, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } - if self.should_be_excluded_attrs(node) { + if self.should_be_excluded(node) { return None; } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); @@ -2407,7 +1978,7 @@ impl Translator<'_> { path, }); self.emit_location(label, node); - post_emit!(PathExpr, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2415,9 +1986,8 @@ impl Translator<'_> { &mut self, node: &ast::PathPat, ) -> Option> { - pre_emit!(PathPat, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } let path = node.path().and_then(|x| self.emit_path(&x)); let label = self.trap.emit(generated::PathPat { @@ -2425,7 +1995,7 @@ impl Translator<'_> { path, }); self.emit_location(label, node); - post_emit!(PathPat, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2433,9 +2003,8 @@ impl Translator<'_> { &mut self, node: &ast::PathSegment, ) -> Option> { - pre_emit!(PathSegment, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } let generic_arg_list = node .generic_arg_list() @@ -2457,7 +2026,7 @@ impl Translator<'_> { return_type_syntax, }); self.emit_location(label, node); - post_emit!(PathSegment, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2465,17 +2034,12 @@ impl Translator<'_> { &mut self, node: &ast::PathType, ) -> Option> { - pre_emit!(PathTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let path = node.path().and_then(|x| self.emit_path(&x)); let label = self.trap.emit(generated::PathTypeRepr { id: TrapId::Star, path, }); self.emit_location(label, node); - post_emit!(PathTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2483,13 +2047,9 @@ impl Translator<'_> { &mut self, node: &ast::PrefixExpr, ) -> Option> { - pre_emit!(PrefixExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let operator_name = node.try_get_text(); @@ -2500,7 +2060,6 @@ impl Translator<'_> { operator_name, }); self.emit_location(label, node); - post_emit!(PrefixExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2508,10 +2067,6 @@ impl Translator<'_> { &mut self, node: &ast::PtrType, ) -> Option> { - pre_emit!(PtrTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let is_const = node.const_token().is_some(); let is_mut = node.mut_token().is_some(); let type_repr = node.ty().and_then(|x| self.emit_type(&x)); @@ -2522,7 +2077,6 @@ impl Translator<'_> { type_repr, }); self.emit_location(label, node); - post_emit!(PtrTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2530,13 +2084,9 @@ impl Translator<'_> { &mut self, node: &ast::RangeExpr, ) -> Option> { - pre_emit!(RangeExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let end = node.end().and_then(|x| self.emit_expr(&x)); let operator_name = node.try_get_text(); @@ -2549,7 +2099,6 @@ impl Translator<'_> { start, }); self.emit_location(label, node); - post_emit!(RangeExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2557,10 +2106,6 @@ impl Translator<'_> { &mut self, node: &ast::RangePat, ) -> Option> { - pre_emit!(RangePat, self, node); - if self.should_be_excluded(node) { - return None; - } let end = node.end().and_then(|x| self.emit_pat(&x)); let operator_name = node.try_get_text(); let start = node.start().and_then(|x| self.emit_pat(&x)); @@ -2571,7 +2116,6 @@ impl Translator<'_> { start, }); self.emit_location(label, node); - post_emit!(RangePat, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2579,9 +2123,8 @@ impl Translator<'_> { &mut self, node: &ast::RecordExpr, ) -> Option> { - pre_emit!(StructExpr, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } let path = node.path().and_then(|x| self.emit_path(&x)); let struct_expr_field_list = node @@ -2593,7 +2136,7 @@ impl Translator<'_> { struct_expr_field_list, }); self.emit_location(label, node); - post_emit!(StructExpr, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2601,13 +2144,9 @@ impl Translator<'_> { &mut self, node: &ast::RecordExprField, ) -> Option> { - pre_emit!(StructExprField, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x)); @@ -2618,7 +2157,6 @@ impl Translator<'_> { identifier, }); self.emit_location(label, node); - post_emit!(StructExprField, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2626,13 +2164,9 @@ impl Translator<'_> { &mut self, node: &ast::RecordExprFieldList, ) -> Option> { - pre_emit!(StructExprFieldList, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let fields = node .fields() @@ -2646,7 +2180,6 @@ impl Translator<'_> { spread, }); self.emit_location(label, node); - post_emit!(StructExprFieldList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2654,13 +2187,9 @@ impl Translator<'_> { &mut self, node: &ast::RecordField, ) -> Option> { - pre_emit!(StructField, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let default = node.expr().and_then(|x| self.emit_expr(&x)); let is_unsafe = node.unsafe_token().is_some(); @@ -2677,7 +2206,6 @@ impl Translator<'_> { visibility, }); self.emit_location(label, node); - post_emit!(StructField, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2685,10 +2213,6 @@ impl Translator<'_> { &mut self, node: &ast::RecordFieldList, ) -> Option> { - pre_emit!(StructFieldList, self, node); - if self.should_be_excluded(node) { - return None; - } let fields = node .fields() .filter_map(|x| self.emit_record_field(&x)) @@ -2698,7 +2222,6 @@ impl Translator<'_> { fields, }); self.emit_location(label, node); - post_emit!(StructFieldList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2706,9 +2229,8 @@ impl Translator<'_> { &mut self, node: &ast::RecordPat, ) -> Option> { - pre_emit!(StructPat, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } let path = node.path().and_then(|x| self.emit_path(&x)); let struct_pat_field_list = node @@ -2720,7 +2242,7 @@ impl Translator<'_> { struct_pat_field_list, }); self.emit_location(label, node); - post_emit!(StructPat, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2728,13 +2250,9 @@ impl Translator<'_> { &mut self, node: &ast::RecordPatField, ) -> Option> { - pre_emit!(StructPatField, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x)); let pat = node.pat().and_then(|x| self.emit_pat(&x)); @@ -2745,7 +2263,6 @@ impl Translator<'_> { pat, }); self.emit_location(label, node); - post_emit!(StructPatField, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2753,10 +2270,6 @@ impl Translator<'_> { &mut self, node: &ast::RecordPatFieldList, ) -> Option> { - pre_emit!(StructPatFieldList, self, node); - if self.should_be_excluded(node) { - return None; - } let fields = node .fields() .filter_map(|x| self.emit_record_pat_field(&x)) @@ -2768,7 +2281,6 @@ impl Translator<'_> { rest_pat, }); self.emit_location(label, node); - post_emit!(StructPatFieldList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2776,13 +2288,9 @@ impl Translator<'_> { &mut self, node: &ast::RefExpr, ) -> Option> { - pre_emit!(RefExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let is_const = node.const_token().is_some(); @@ -2797,15 +2305,10 @@ impl Translator<'_> { is_raw, }); self.emit_location(label, node); - post_emit!(RefExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_ref_pat(&mut self, node: &ast::RefPat) -> Option> { - pre_emit!(RefPat, self, node); - if self.should_be_excluded(node) { - return None; - } let is_mut = node.mut_token().is_some(); let pat = node.pat().and_then(|x| self.emit_pat(&x)); let label = self.trap.emit(generated::RefPat { @@ -2814,7 +2317,6 @@ impl Translator<'_> { pat, }); self.emit_location(label, node); - post_emit!(RefPat, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2822,10 +2324,6 @@ impl Translator<'_> { &mut self, node: &ast::RefType, ) -> Option> { - pre_emit!(RefTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let is_mut = node.mut_token().is_some(); let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); let type_repr = node.ty().and_then(|x| self.emit_type(&x)); @@ -2836,22 +2334,16 @@ impl Translator<'_> { type_repr, }); self.emit_location(label, node); - post_emit!(RefTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_rename(&mut self, node: &ast::Rename) -> Option> { - pre_emit!(Rename, self, node); - if self.should_be_excluded(node) { - return None; - } let name = node.name().and_then(|x| self.emit_name(&x)); let label = self.trap.emit(generated::Rename { id: TrapId::Star, name, }); self.emit_location(label, node); - post_emit!(Rename, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2859,20 +2351,15 @@ impl Translator<'_> { &mut self, node: &ast::RestPat, ) -> Option> { - pre_emit!(RestPat, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let label = self.trap.emit(generated::RestPat { id: TrapId::Star, attrs, }); self.emit_location(label, node); - post_emit!(RestPat, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2880,17 +2367,12 @@ impl Translator<'_> { &mut self, node: &ast::RetType, ) -> Option> { - pre_emit!(RetTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let type_repr = node.ty().and_then(|x| self.emit_type(&x)); let label = self.trap.emit(generated::RetTypeRepr { id: TrapId::Star, type_repr, }); self.emit_location(label, node); - post_emit!(RetTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2898,13 +2380,9 @@ impl Translator<'_> { &mut self, node: &ast::ReturnExpr, ) -> Option> { - pre_emit!(ReturnExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::ReturnExpr { @@ -2913,7 +2391,6 @@ impl Translator<'_> { expr, }); self.emit_location(label, node); - post_emit!(ReturnExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2921,15 +2398,10 @@ impl Translator<'_> { &mut self, node: &ast::ReturnTypeSyntax, ) -> Option> { - pre_emit!(ReturnTypeSyntax, self, node); - if self.should_be_excluded(node) { - return None; - } let label = self .trap .emit(generated::ReturnTypeSyntax { id: TrapId::Star }); self.emit_location(label, node); - post_emit!(ReturnTypeSyntax, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2937,13 +2409,9 @@ impl Translator<'_> { &mut self, node: &ast::SelfParam, ) -> Option> { - pre_emit!(SelfParam, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let is_ref = node.amp_token().is_some(); let is_mut = node.mut_token().is_some(); @@ -2960,7 +2428,6 @@ impl Translator<'_> { type_repr, }); self.emit_location(label, node); - post_emit!(SelfParam, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2968,17 +2435,12 @@ impl Translator<'_> { &mut self, node: &ast::SlicePat, ) -> Option> { - pre_emit!(SlicePat, self, node); - if self.should_be_excluded(node) { - return None; - } let pats = node.pats().filter_map(|x| self.emit_pat(&x)).collect(); let label = self.trap.emit(generated::SlicePat { id: TrapId::Star, pats, }); self.emit_location(label, node); - post_emit!(SlicePat, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -2986,17 +2448,12 @@ impl Translator<'_> { &mut self, node: &ast::SliceType, ) -> Option> { - pre_emit!(SliceTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let type_repr = node.ty().and_then(|x| self.emit_type(&x)); let label = self.trap.emit(generated::SliceTypeRepr { id: TrapId::Star, type_repr, }); self.emit_location(label, node); - post_emit!(SliceTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3004,13 +2461,9 @@ impl Translator<'_> { &mut self, node: &ast::SourceFile, ) -> Option> { - pre_emit!(SourceFile, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let items = node.items().filter_map(|x| self.emit_item(&x)).collect(); let label = self.trap.emit(generated::SourceFile { @@ -3019,20 +2472,19 @@ impl Translator<'_> { items, }); self.emit_location(label, node); - post_emit!(SourceFile, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_static(&mut self, node: &ast::Static) -> Option> { - pre_emit!(Static, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); - let body = node.body().and_then(|x| self.emit_expr(&x)); + let body = if self.should_skip_bodies() { + None + } else { + node.body().and_then(|x| self.emit_expr(&x)) + }; let is_mut = node.mut_token().is_some(); let is_static = node.static_token().is_some(); let is_unsafe = node.unsafe_token().is_some(); @@ -3051,7 +2503,6 @@ impl Translator<'_> { visibility, }); self.emit_location(label, node); - post_emit!(Static, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3059,13 +2510,9 @@ impl Translator<'_> { &mut self, node: &ast::StmtList, ) -> Option> { - pre_emit!(StmtList, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let statements = node .statements() @@ -3079,16 +2526,14 @@ impl Translator<'_> { tail_expr, }); self.emit_location(label, node); - post_emit!(StmtList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_struct(&mut self, node: &ast::Struct) -> Option> { - pre_emit!(Struct, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } - if self.should_be_excluded_attrs(node) { + if self.should_be_excluded(node) { return None; } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); @@ -3109,7 +2554,7 @@ impl Translator<'_> { where_clause, }); self.emit_location(label, node); - post_emit!(Struct, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3117,22 +2562,16 @@ impl Translator<'_> { &mut self, node: &ast::TokenTree, ) -> Option> { - pre_emit!(TokenTree, self, node); - if self.should_be_excluded(node) { - return None; - } let label = self.trap.emit(generated::TokenTree { id: TrapId::Star }); self.emit_location(label, node); - post_emit!(TokenTree, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_trait(&mut self, node: &ast::Trait) -> Option> { - pre_emit!(Trait, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } - if self.should_be_excluded_attrs(node) { + if self.should_be_excluded(node) { return None; } let assoc_item_list = node @@ -3163,7 +2602,7 @@ impl Translator<'_> { where_clause, }); self.emit_location(label, node); - post_emit!(Trait, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3171,13 +2610,9 @@ impl Translator<'_> { &mut self, node: &ast::TraitAlias, ) -> Option> { - pre_emit!(TraitAlias, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let generic_param_list = node .generic_param_list() @@ -3198,7 +2633,6 @@ impl Translator<'_> { where_clause, }); self.emit_location(label, node); - post_emit!(TraitAlias, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3206,13 +2640,9 @@ impl Translator<'_> { &mut self, node: &ast::TryExpr, ) -> Option> { - pre_emit!(TryExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::TryExpr { @@ -3221,7 +2651,6 @@ impl Translator<'_> { expr, }); self.emit_location(label, node); - post_emit!(TryExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3229,13 +2658,9 @@ impl Translator<'_> { &mut self, node: &ast::TupleExpr, ) -> Option> { - pre_emit!(TupleExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let fields = node.fields().filter_map(|x| self.emit_expr(&x)).collect(); let label = self.trap.emit(generated::TupleExpr { @@ -3244,7 +2669,6 @@ impl Translator<'_> { fields, }); self.emit_location(label, node); - post_emit!(TupleExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3252,13 +2676,9 @@ impl Translator<'_> { &mut self, node: &ast::TupleField, ) -> Option> { - pre_emit!(TupleField, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let type_repr = node.ty().and_then(|x| self.emit_type(&x)); let visibility = node.visibility().and_then(|x| self.emit_visibility(&x)); @@ -3269,7 +2689,6 @@ impl Translator<'_> { visibility, }); self.emit_location(label, node); - post_emit!(TupleField, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3277,10 +2696,6 @@ impl Translator<'_> { &mut self, node: &ast::TupleFieldList, ) -> Option> { - pre_emit!(TupleFieldList, self, node); - if self.should_be_excluded(node) { - return None; - } let fields = node .fields() .filter_map(|x| self.emit_tuple_field(&x)) @@ -3290,7 +2705,6 @@ impl Translator<'_> { fields, }); self.emit_location(label, node); - post_emit!(TupleFieldList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3298,17 +2712,12 @@ impl Translator<'_> { &mut self, node: &ast::TuplePat, ) -> Option> { - pre_emit!(TuplePat, self, node); - if self.should_be_excluded(node) { - return None; - } let fields = node.fields().filter_map(|x| self.emit_pat(&x)).collect(); let label = self.trap.emit(generated::TuplePat { id: TrapId::Star, fields, }); self.emit_location(label, node); - post_emit!(TuplePat, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3316,9 +2725,8 @@ impl Translator<'_> { &mut self, node: &ast::TupleStructPat, ) -> Option> { - pre_emit!(TupleStructPat, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } let fields = node.fields().filter_map(|x| self.emit_pat(&x)).collect(); let path = node.path().and_then(|x| self.emit_path(&x)); @@ -3328,7 +2736,7 @@ impl Translator<'_> { path, }); self.emit_location(label, node); - post_emit!(TupleStructPat, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3336,17 +2744,12 @@ impl Translator<'_> { &mut self, node: &ast::TupleType, ) -> Option> { - pre_emit!(TupleTypeRepr, self, node); - if self.should_be_excluded(node) { - return None; - } let fields = node.fields().filter_map(|x| self.emit_type(&x)).collect(); let label = self.trap.emit(generated::TupleTypeRepr { id: TrapId::Star, fields, }); self.emit_location(label, node); - post_emit!(TupleTypeRepr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3354,13 +2757,9 @@ impl Translator<'_> { &mut self, node: &ast::TypeAlias, ) -> Option> { - pre_emit!(TypeAlias, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let generic_param_list = node .generic_param_list() @@ -3385,7 +2784,6 @@ impl Translator<'_> { where_clause, }); self.emit_location(label, node); - post_emit!(TypeAlias, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3393,17 +2791,12 @@ impl Translator<'_> { &mut self, node: &ast::TypeArg, ) -> Option> { - pre_emit!(TypeArg, self, node); - if self.should_be_excluded(node) { - return None; - } let type_repr = node.ty().and_then(|x| self.emit_type(&x)); let label = self.trap.emit(generated::TypeArg { id: TrapId::Star, type_repr, }); self.emit_location(label, node); - post_emit!(TypeArg, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3411,10 +2804,6 @@ impl Translator<'_> { &mut self, node: &ast::TypeBound, ) -> Option> { - pre_emit!(TypeBound, self, node); - if self.should_be_excluded(node) { - return None; - } let is_async = node.async_token().is_some(); let is_const = node.const_token().is_some(); let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); @@ -3431,7 +2820,6 @@ impl Translator<'_> { use_bound_generic_args, }); self.emit_location(label, node); - post_emit!(TypeBound, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3439,10 +2827,6 @@ impl Translator<'_> { &mut self, node: &ast::TypeBoundList, ) -> Option> { - pre_emit!(TypeBoundList, self, node); - if self.should_be_excluded(node) { - return None; - } let bounds = node .bounds() .filter_map(|x| self.emit_type_bound(&x)) @@ -3452,7 +2836,6 @@ impl Translator<'_> { bounds, }); self.emit_location(label, node); - post_emit!(TypeBoundList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3460,13 +2843,9 @@ impl Translator<'_> { &mut self, node: &ast::TypeParam, ) -> Option> { - pre_emit!(TypeParam, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let default_type = node.default_type().and_then(|x| self.emit_type(&x)); let name = node.name().and_then(|x| self.emit_name(&x)); @@ -3481,7 +2860,6 @@ impl Translator<'_> { type_bound_list, }); self.emit_location(label, node); - post_emit!(TypeParam, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3489,29 +2867,23 @@ impl Translator<'_> { &mut self, node: &ast::UnderscoreExpr, ) -> Option> { - pre_emit!(UnderscoreExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let label = self.trap.emit(generated::UnderscoreExpr { id: TrapId::Star, attrs, }); self.emit_location(label, node); - post_emit!(UnderscoreExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_union(&mut self, node: &ast::Union) -> Option> { - pre_emit!(Union, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } - if self.should_be_excluded_attrs(node) { + if self.should_be_excluded(node) { return None; } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); @@ -3534,18 +2906,14 @@ impl Translator<'_> { where_clause, }); self.emit_location(label, node); - post_emit!(Union, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } pub(crate) fn emit_use(&mut self, node: &ast::Use) -> Option> { - pre_emit!(Use, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let use_tree = node.use_tree().and_then(|x| self.emit_use_tree(&x)); let visibility = node.visibility().and_then(|x| self.emit_visibility(&x)); @@ -3556,7 +2924,6 @@ impl Translator<'_> { visibility, }); self.emit_location(label, node); - post_emit!(Use, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3564,10 +2931,6 @@ impl Translator<'_> { &mut self, node: &ast::UseBoundGenericArgs, ) -> Option> { - pre_emit!(UseBoundGenericArgs, self, node); - if self.should_be_excluded(node) { - return None; - } let use_bound_generic_args = node .use_bound_generic_args() .filter_map(|x| self.emit_use_bound_generic_arg(&x)) @@ -3577,7 +2940,6 @@ impl Translator<'_> { use_bound_generic_args, }); self.emit_location(label, node); - post_emit!(UseBoundGenericArgs, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3585,10 +2947,6 @@ impl Translator<'_> { &mut self, node: &ast::UseTree, ) -> Option> { - pre_emit!(UseTree, self, node); - if self.should_be_excluded(node) { - return None; - } let is_glob = node.star_token().is_some(); let path = node.path().and_then(|x| self.emit_path(&x)); let rename = node.rename().and_then(|x| self.emit_rename(&x)); @@ -3603,7 +2961,6 @@ impl Translator<'_> { use_tree_list, }); self.emit_location(label, node); - post_emit!(UseTree, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3611,10 +2968,6 @@ impl Translator<'_> { &mut self, node: &ast::UseTreeList, ) -> Option> { - pre_emit!(UseTreeList, self, node); - if self.should_be_excluded(node) { - return None; - } let use_trees = node .use_trees() .filter_map(|x| self.emit_use_tree(&x)) @@ -3624,7 +2977,6 @@ impl Translator<'_> { use_trees, }); self.emit_location(label, node); - post_emit!(UseTreeList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3632,11 +2984,10 @@ impl Translator<'_> { &mut self, node: &ast::Variant, ) -> Option> { - pre_emit!(Variant, self, node); - if self.should_be_excluded(node) { - return None; + if let Some(label) = self.pre_emit(node) { + return Some(label); } - if self.should_be_excluded_attrs(node) { + if self.should_be_excluded(node) { return None; } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); @@ -3653,7 +3004,7 @@ impl Translator<'_> { visibility, }); self.emit_location(label, node); - post_emit!(Variant, self, node, label); + self.post_emit(node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3661,10 +3012,6 @@ impl Translator<'_> { &mut self, node: &ast::VariantList, ) -> Option> { - pre_emit!(VariantList, self, node); - if self.should_be_excluded(node) { - return None; - } let variants = node .variants() .filter_map(|x| self.emit_variant(&x)) @@ -3674,7 +3021,6 @@ impl Translator<'_> { variants, }); self.emit_location(label, node); - post_emit!(VariantList, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3682,17 +3028,12 @@ impl Translator<'_> { &mut self, node: &ast::Visibility, ) -> Option> { - pre_emit!(Visibility, self, node); - if self.should_be_excluded(node) { - return None; - } let path = node.path().and_then(|x| self.emit_path(&x)); let label = self.trap.emit(generated::Visibility { id: TrapId::Star, path, }); self.emit_location(label, node); - post_emit!(Visibility, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3700,10 +3041,6 @@ impl Translator<'_> { &mut self, node: &ast::WhereClause, ) -> Option> { - pre_emit!(WhereClause, self, node); - if self.should_be_excluded(node) { - return None; - } let predicates = node .predicates() .filter_map(|x| self.emit_where_pred(&x)) @@ -3713,7 +3050,6 @@ impl Translator<'_> { predicates, }); self.emit_location(label, node); - post_emit!(WhereClause, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3721,10 +3057,6 @@ impl Translator<'_> { &mut self, node: &ast::WherePred, ) -> Option> { - pre_emit!(WherePred, self, node); - if self.should_be_excluded(node) { - return None; - } let generic_param_list = node .generic_param_list() .and_then(|x| self.emit_generic_param_list(&x)); @@ -3741,7 +3073,6 @@ impl Translator<'_> { type_bound_list, }); self.emit_location(label, node); - post_emit!(WherePred, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3749,13 +3080,9 @@ impl Translator<'_> { &mut self, node: &ast::WhileExpr, ) -> Option> { - pre_emit!(WhileExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let condition = node.condition().and_then(|x| self.emit_expr(&x)); let label = node.label().and_then(|x| self.emit_label(&x)); @@ -3768,7 +3095,6 @@ impl Translator<'_> { loop_body, }); self.emit_location(label, node); - post_emit!(WhileExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3776,13 +3102,8 @@ impl Translator<'_> { &mut self, node: &ast::WildcardPat, ) -> Option> { - pre_emit!(WildcardPat, self, node); - if self.should_be_excluded(node) { - return None; - } let label = self.trap.emit(generated::WildcardPat { id: TrapId::Star }); self.emit_location(label, node); - post_emit!(WildcardPat, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3790,13 +3111,9 @@ impl Translator<'_> { &mut self, node: &ast::YeetExpr, ) -> Option> { - pre_emit!(YeetExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::YeetExpr { @@ -3805,7 +3122,6 @@ impl Translator<'_> { expr, }); self.emit_location(label, node); - post_emit!(YeetExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } @@ -3813,13 +3129,9 @@ impl Translator<'_> { &mut self, node: &ast::YieldExpr, ) -> Option> { - pre_emit!(YieldExpr, self, node); if self.should_be_excluded(node) { return None; } - if self.should_be_excluded_attrs(node) { - return None; - } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::YieldExpr { @@ -3828,8 +3140,67 @@ impl Translator<'_> { expr, }); self.emit_location(label, node); - post_emit!(YieldExpr, self, node, label); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } } +impl HasTrapClass for ast::AssocItem { + type TrapClass = generated::AssocItem; +} +impl HasTrapClass for ast::ExternItem { + type TrapClass = generated::ExternItem; +} +impl HasTrapClass for ast::Item { + type TrapClass = generated::Item; +} +impl HasTrapClass for ast::Const { + type TrapClass = generated::Const; +} +impl HasTrapClass for ast::Enum { + type TrapClass = generated::Enum; +} +impl HasTrapClass for ast::Fn { + type TrapClass = generated::Function; +} +impl HasTrapClass for ast::MacroCall { + type TrapClass = generated::MacroCall; +} +impl HasTrapClass for ast::Meta { + type TrapClass = generated::Meta; +} +impl HasTrapClass for ast::MethodCallExpr { + type TrapClass = generated::MethodCallExpr; +} +impl HasTrapClass for ast::Module { + type TrapClass = generated::Module; +} +impl HasTrapClass for ast::PathExpr { + type TrapClass = generated::PathExpr; +} +impl HasTrapClass for ast::PathPat { + type TrapClass = generated::PathPat; +} +impl HasTrapClass for ast::PathSegment { + type TrapClass = generated::PathSegment; +} +impl HasTrapClass for ast::RecordExpr { + type TrapClass = generated::StructExpr; +} +impl HasTrapClass for ast::RecordPat { + type TrapClass = generated::StructPat; +} +impl HasTrapClass for ast::Struct { + type TrapClass = generated::Struct; +} +impl HasTrapClass for ast::Trait { + type TrapClass = generated::Trait; +} +impl HasTrapClass for ast::TupleStructPat { + type TrapClass = generated::TupleStructPat; +} +impl HasTrapClass for ast::Union { + type TrapClass = generated::Union; +} +impl HasTrapClass for ast::Variant { + type TrapClass = generated::Variant; +} diff --git a/rust/extractor/src/translate/mappings.rs b/rust/extractor/src/translate/mappings.rs index 3068e5cea52e..3e71c6deb14a 100644 --- a/rust/extractor/src/translate/mappings.rs +++ b/rust/extractor/src/translate/mappings.rs @@ -1,7 +1,20 @@ +use crate::trap::{Label, TrapClass}; use ra_ap_hir::{Enum, Function, HasContainer, Module, Semantics, Struct, Trait, Union}; use ra_ap_ide_db::RootDatabase; use ra_ap_syntax::{AstNode, ast, ast::RangeItem}; +pub(crate) trait HasTrapClass: AstNode { + type TrapClass: TrapClass; +} + +pub(crate) trait Emission { + fn pre_emit(&mut self, _node: &T) -> Option> { + None + } + + fn post_emit(&mut self, _node: &T, _label: Label) {} +} + pub(crate) trait TextValue { fn try_get_text(&self) -> Option; } diff --git a/rust/extractor/src/trap.rs b/rust/extractor/src/trap.rs index 2206c4c067b2..a7cb43a64327 100644 --- a/rust/extractor/src/trap.rs +++ b/rust/extractor/src/trap.rs @@ -212,7 +212,7 @@ impl TrapFile { ); } pub fn emit_file(&mut self, absolute_path: &Path) -> Label { - let untyped = extractor::populate_file(&mut self.writer, absolute_path); + let untyped = extractor::populate_file(&mut self.writer, absolute_path, None); // SAFETY: populate_file emits `@file` typed labels unsafe { Label::from_untyped(untyped) } } @@ -268,6 +268,7 @@ impl TrapFileProvider { &self.trap_dir.join(category), key.as_ref(), self.compression.extension(), + None, ); debug!("creating trap file {}", path.display()); let mut writer = trap::Writer::new(); diff --git a/rust/misc/bulk_generation_targets.json b/rust/misc/bulk_generation_targets.json deleted file mode 100644 index 274d5dc5b361..000000000000 --- 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 eb60dccb3e6a..7461f8e0131f 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -1,6 +1,7 @@ -lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll bd01b4d17625ee8c0da93231cf2291deb7e57db2c8aaa2c37968553c3144c47e 6e6ac58e09b84d02f461699a25ee80798a1bdc51c1836d9d75f5b52e93ae7ba6 +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/Adt.qll c2afed4ac2e17039ccd98f74ea22111f4d765c4e232c50ccd3128da0d26da837 1380bde2eb667c6ec2ef5f8710aa24e926851c9e321ebc72ba514fa92c369dc3 lib/codeql/rust/elements/ArgList.qll 3d2f6f5542340b80a4c6e944ac17aba0d00727588bb66e501453ac0f80c82f83 afd52700bf5a337f19827846667cd0fb1fea5abbbcbc353828e292a727ea58c9 lib/codeql/rust/elements/ArrayExpr.qll e4e7cff3518c50ec908271906dd46c1fbe9098faa1e8cd06a27f0a6e8d165ed1 fe02a4f4197f57ecd1e8e82d6c9384148ec29d8b106d7f696795b2f325e4a71b lib/codeql/rust/elements/ArrayListExpr.qll 451aedcecb479c385ff497588c7a07fda304fd5b873270223a4f2c804e96b245 a8cb008f6f732215623b5626c84b37b651ca01ccafb2cf4c835df35d5140c6ad @@ -20,7 +21,7 @@ lib/codeql/rust/elements/AsmPiece.qll 8650bf07246fac95533876db66178e4b30ed3210de 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/AssocItem.qll 7a65365df8ae0603f892b6d9a27372ad81d06945abd408a2f25a6595a6ea3b6e 24bc6dd8485bcd7d236067cb37bda1300a891009d0a739681aee218449304ed2 lib/codeql/rust/elements/AssocItemList.qll 5d2660e199e59647e3a8b6234531428f6e0a236ed2ced3c9fede13e7f83a5ba5 a2a8e87ab8978f77a70e4c0a8cc7322c522fc4a7a05116646a2b97a2f47428a4 lib/codeql/rust/elements/AssocTypeArg.qll 6ceeec7a0ec78a6f8b2e74c0798d4727ad350cebde954b4ffe442b06e08eb4aa d615f5cd696892518387d20f04dae240fb10ee7c9577028fb6f2a51cd9f5b9e4 lib/codeql/rust/elements/AstNode.qll 5ee6355afb1cafd6dfe408b8c21836a1ba2aeb709fb618802aa09f9342646084 dee708f19c1b333cbd9609819db3dfdb48a0c90d26266c380f31357b1e2d6141 @@ -33,12 +34,12 @@ 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 02c8e83bf07deaf7bf0233b76623ec7f1837be8b77fe7e1c23544edc7d85e3c4 2b114d9a6dede694324aebe3dac80a802d139cfacd39beb0f12b5b0a46ee6390 lib/codeql/rust/elements/ClosureExpr.qll 67e2a106e9154c90367b129987e574d2a9ecf5b297536627e43706675d35eaed d6a381132ddd589c5a7ce174f50f9620041ddf690e15a65ebfb05ff7e7c02de7 lib/codeql/rust/elements/Comment.qll fedad50575125e9a64a8a8776a8c1dbf1e76df990f01849d9f0955f9d74cb2a6 8eb1afad1e1007a4f0090fdac65d81726b23eda6517d067fd0185f70f17635ab -lib/codeql/rust/elements/Const.qll 8b9c66b59d9469a78b2c696b6e37d915a25f9dd215c0b79b113dc7d34adca9e3 7b8213bf21403a1f8b78ea6a20b716f312b26fee5526111602482a2e985e8ac5 +lib/codeql/rust/elements/Const.qll 5f4d11e01162a06127ba56519efd66d1ecfb5de7c1792fc1c283a56cf2127373 8c618ac774267d25db70cc05a080f8a408dc23ab7e88c0fc543eda8b4d4cb995 lib/codeql/rust/elements/ConstArg.qll 01865b3be4790c627a062c59ea608462931abcb2f94a132cf265318664fd1251 a2c6bbf63dbfa999e511b6941143a51c9392477d8ccd25e081f85475936ff558 lib/codeql/rust/elements/ConstBlockPat.qll a25f42b84dbeb33e10955735ef53b8bb7e3258522d6d1a9068f19adaf1af89d9 eeb816d2b54db77a1e7bb70e90b68d040a0cd44e9d44455a223311c3615c5e6e lib/codeql/rust/elements/ConstParam.qll 87776586f7ff562ff3c71373f45cf70486f9a832613a0aaac943311c451cc057 67a31616688106d5130951f2162e5229bff0fde08ff647943663cac427d7048b @@ -46,12 +47,12 @@ lib/codeql/rust/elements/ContinueExpr.qll 9f27c5d5c819ad0ebc5bd10967ba8d33a9dc95 lib/codeql/rust/elements/Crate.qll 1426960e6f36195e42ea5ea321405c1a72fccd40cd6c0a33673c321c20302d8d 1571a89f89dab43c5291b71386de7aadf52730755ba10f9d696db9ad2f760aff lib/codeql/rust/elements/DynTraitTypeRepr.qll e4d27112d27ae93c621defd2c976fd4e90663ab7f6115e83ae4fe8106cb5e015 eb9fde89698588f3b7116f62388c54e937f99559b22c93d11a5596e754560072 lib/codeql/rust/elements/Element.qll 0b62d139fef54ed2cf2e2334806aa9bfbc036c9c2085d558f15a42cc3fa84c48 24b999b93df79383ef27ede46e38da752868c88a07fe35fcff5d526684ba7294 -lib/codeql/rust/elements/Enum.qll accb97d0bd8c0f41df873d41886f606b6ae4cd1ffa38b70fe9504cfb89d0bd7d b456103ac992e384165d151eb0f169499be4961c3ec35b94a32201b5e4e22189 +lib/codeql/rust/elements/Enum.qll 55d5a4a775f07d9c1d5183af76f9d8de1d700bfe1dea427cc7ff3083f39e13de f00a585596f1d0ab34e6f2b7cdaba6d4a89005820478f810e8685478cf88100e lib/codeql/rust/elements/Expr.qll e5d65e805ccf440d64d331e55df4c4144ab8c8f63f367382494714087659ffe8 2bbc1e5d3a65f413ec33d9822fa451fbdbe32349158db58cc0bfcfafb0e21bda lib/codeql/rust/elements/ExprStmt.qll 00ac4c7d0192b9e8b0f28d5ae59c27729ff5a831ca11938ea3e677a262337a64 7cc02aa5346cd7c50d75ca63cd6501097b0a3979eb2ed838adff114fe17d35a3 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/ExternItem.qll 24301f14e9b7dda6eb5263ba46ae806eedd5901c114399e712a86164b8f03002 0cbb368952bda103c75eba504a7f2840da7d9d17bd64e087184055de2fa6f862 lib/codeql/rust/elements/ExternItemList.qll eceb0fcd3a6f9d87fa044da1da112ce96b75c8e0f0897d51e44c5822a3e430dc 2255f1121d7cec4e29401ad08b728f02a920a82da48f16b6bb86c5056775be31 lib/codeql/rust/elements/FieldExpr.qll 8102cd659f9059cf6af2a22033cfcd2aae9c35204b86f7d219a05f1f8de54b3b f818169dddf5102095ae1410583615f80031376a08b5307d0c464e79953c3975 lib/codeql/rust/elements/FieldList.qll 72f3eace2f0c0600b1ad059819ae756f1feccd15562e0449a3f039a680365462 50e4c01df7b801613688b06bb47ccc36e6c8c7fa2e50cc62cb4705c9abf5ee31 @@ -63,7 +64,7 @@ lib/codeql/rust/elements/FormatArgsArg.qll a2c23cd512d44dd60b7d65eba52cc3adf6e2f 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/Function.qll a5d1654003137bcfd5b0bdfaf73778f6316521dd896aaa58b95422f795e2d674 e13ad1cc560525d94917fb5a0c9605e022d3f2e33042933a1c7141556ca75ce8 lib/codeql/rust/elements/GenericArg.qll 5f8666af395208f8ad2044063788fa2c0c317cc0201d1ffc8c6ade62da82867c 174025826d3f4d6bf714be043acfea323701988bae134bd5a8b908b1ba1d3850 lib/codeql/rust/elements/GenericArgList.qll dcf274db517b0e8f19e4545d77f86cdd4066ff2805e68c808d0bb5750b49f569 1055a82929e850264e501b367ef4d314a3e6bb8943ec95f4284d157fb4d0092f lib/codeql/rust/elements/GenericParam.qll 87adf96aac385f2a182008a7b90aad46cf46d70134364123871afb43e5ea2590 be82f1986b263053d7b894a8998ddb59543200a2aa8df5a44c217b8773f60307 @@ -90,7 +91,7 @@ lib/codeql/rust/elements/Locatable.qll 2855efa4a469b54e0ca85daa89309a8b991cded6f 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 7e456de5b506ea6d4ca20a55f75734ede9202f31529c111df3ed3eab1a9b83e5 cc0f45aaeaab4d32ad133c18ad8000316cbcfa62062bd31b6a0e690df7bb76bc +lib/codeql/rust/elements/MacroCall.qll 452aee152b655cdd5a69bf973977072f000a6451f626469a3f7313f0468ffc18 a8652d0de1c6c2118d683d5465ba4115dd4c65031896440269a2a0522d90fceb lib/codeql/rust/elements/MacroDef.qll 5bcf2bba7ba40879fe47370bfeb65b23c67c463be20535327467338a1e2e04bb c3d28416fc08e5d79149fccd388fea2bc3097bce074468a323383056404926db lib/codeql/rust/elements/MacroExpr.qll 640554f4964def19936a16ce88a03fb12f74ec2bcfe38b88d32742b79f85d909 a284fb66e012664a33a4e9c8fd3e38d3ffd588fccd6b16b02270da55fc025f7a lib/codeql/rust/elements/MacroItems.qll f2d80ff23634ac6bc3e96e8d73154587f9d24edb56654b5c0ae426124d2709ea f794f751b77fc50d7cc3069c93c22dd3a479182edce15c1b22c8da31d2e30a12 @@ -142,10 +143,10 @@ lib/codeql/rust/elements/SelfParam.qll e36b54cdc57529935910b321c336783e9e2662c76 lib/codeql/rust/elements/SlicePat.qll f48f13bb13378cc68f935d5b09175c316f3e81f50ef6a3ac5fdbfbfb473d6fc1 4c8df0b092274f37028e287a949f1a287f7505b7c2c36ee8d5f47fb8365d278a 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/Static.qll 9dca6d4fb80fb4ead49a3de89bec2b02bae6f96fbc2601dde35a2aa69a9bfdb0 70f67bc75d7799dab04ea7a7fd13286bb76bbe514be16d23149c59dfb31fd0c9 lib/codeql/rust/elements/Stmt.qll 532b12973037301246daf7d8c0177f734202f43d9261c7a4ca6f5080eea8ca64 b838643c4f2b4623d2c816cddad0e68ca3e11f2879ab7beaece46f489ec4b1f3 lib/codeql/rust/elements/StmtList.qll e874859ce03672d0085e47e0ca5e571b92b539b31bf0d5a8802f9727bef0c6b0 e5fe83237f713cdb57c446a6e1c20f645c2f49d9f5ef2c984032df83acb3c0de -lib/codeql/rust/elements/Struct.qll c1f607aa4b039fc24bbbedc5992e49bd13e9851731296645c7ec2669425f19ad d7720c76a5a50284bd62df707cb113dfb19104226e9ee7578e75eb207da0655c +lib/codeql/rust/elements/Struct.qll 297d3ea732fc7fbb8b8fb5479c1873ce84705146853ff752c84a6f70af12b923 3df0e5fd50a910a0b5611c3a860a1d7c318f6925c3a0727006d91840caf04812 lib/codeql/rust/elements/StructExpr.qll af9059c01a97755e94f1a8b60c66d9c7663ed0705b2845b086b8953f16019fab 2d33d86b035a15c1b31c3e07e0e74c4bbe57a71c5a55d60e720827814e73b7ba lib/codeql/rust/elements/StructExprField.qll 3eb9f17ecd1ad38679689eb4ecc169d3a0b5b7a3fc597ae5a957a7aea2f74e4f 8fcd26f266f203004899a60447ba16e7eae4e3a654fbec7f54e26857730ede93 lib/codeql/rust/elements/StructExprFieldList.qll 6efb2ec4889b38556dc679bb89bbd4bd76ed6a60014c41f8e232288fc23b2d52 dc867a0a4710621e04b36bbec7d317d6f360e0d6ac68b79168c8b714babde31d @@ -165,7 +166,7 @@ lib/codeql/rust/elements/TupleFieldList.qll b67cd2dec918d09e582467e5db7a38c8fa18 lib/codeql/rust/elements/TuplePat.qll 028cdea43868b0fdd2fc4c31ff25b6bbb40813e8aaccf72186051a280db7632e 38c56187971671e6a9dd0c6ccccb2ee4470aa82852110c6b89884496eb4abc64 lib/codeql/rust/elements/TupleStructPat.qll da398a23eb616bf7dd586b2a87f4ab00f28623418f081cd7b1cc3de497ef1819 6573bf3f8501c30af3aeb23d96db9f5bea7ab73e2b7ef3473095c03e96c20a5c lib/codeql/rust/elements/TupleTypeRepr.qll 1ac5abf6281ea31680a4098407fbe55459d08f92a50dec20d1f8b93d498eee41 6d9625cce4e4abf6b6e6c22e47880fbd23740d07b621137bd7fa0a2ee13badd9 -lib/codeql/rust/elements/TypeAlias.qll 7c06232b50df4b6d9066e18a7286f6f0986df6b3994838923c3b2cd0898bb937 d4e61091e396b6cbbfbc9731a58154d81ef986ccf0f306e64962661c468b2889 +lib/codeql/rust/elements/TypeAlias.qll b59f24488f0d7de8d4046a9e0ca1e1f54d1d5c11e035898b11ab97e151fc600f 7b25c9e14c8bb310cec796824904fcefced2cc486d55e981b80b7620e73dd2d7 lib/codeql/rust/elements/TypeArg.qll e91dbb399d2ab7cf7af9dd5f743a551d0bf91dba3cfb76cea9e2d42ada0f9f2e c67d64e20e35a9bba5092651e0f82c75ba53b8c165e823bc81d67975107ae375 lib/codeql/rust/elements/TypeBound.qll a1645f31a789995af85b1db236caece180013cc2e28e1c50b792dc0d4ab0854e 14a68ebef2149bc657ba1f18606ef8cf9b7cc3e6113b50bc038c168eb6cfd11c lib/codeql/rust/elements/TypeBoundList.qll 61a861e89b3de23801c723531cd3331a61214817a230aaae74d91cb60f0e096f d54e3d830bb550c5ba082ccd09bc0dc4e6e44e8d11066a7afba5a7172aa687a8 @@ -174,14 +175,13 @@ lib/codeql/rust/elements/TypeRepr.qll ea41b05ef0aaac71da460f9a6a8331cf98166f2c38 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 f035871f9d265a002f8a4535da11d6191f04337c1d22dc54f545e3b527067e20 fdb86022a4f4f7e323899aaf47741d0a4c4e6a987fe1b4e8fea24e28b1377177 +lib/codeql/rust/elements/Union.qll 13f7f62e98b117d18e79db5f6e6535447bc069ebb08f7cdb390b012678b7e085 bd8c37bc0ff09926753bc250e1848ed25923f224829d0136afc27b749eaddd1f lib/codeql/rust/elements/Use.qll fdcf70574403c2f219353211b6930f2f9bc79f41c2594e07548de5a8c6cbb24d e41f2b689fcbeb7b84c7ba8d09592f7561626559318642b73574bbac83f74546 lib/codeql/rust/elements/UseBoundGenericArg.qll f16903f8fff676d3700eaad5490804624391141472ecc3166ccb1f70c794c120 5efda98088d096b42f53ceccae78c05f15c6953525b514d849681cb2cf65b147 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/Variant.qll 7895461fa728f6c3a7293799c5e6b965b413b679566dcbd40bbe2609db8b6cde b0413547365a301bd9fbb6b266757f956394abad0a77f0e424446e23ec7d83e9 lib/codeql/rust/elements/VariantList.qll 39803fbb873d48202c2a511c00c8eafede06e519894e0fd050c2a85bf5f4aa73 1735f89b2b8f6d5960a276b87ea10e4bb8c848c24a5d5fad7f3add7a4d94b7da lib/codeql/rust/elements/Visibility.qll aa69e8a3fd3b01f6fea0ae2d841a2adc51f4e46dcfc9f8f03c34fbe96f7e24e7 0d475e97e07b73c8da2b53555085b8309d8dc69c113bcb396fc901361dbfe6b8 lib/codeql/rust/elements/WhereClause.qll 4e28e11ceec835a093e469854a4b615e698309cdcbc39ed83810e2e4e7c5953f 4736baf689b87dd6669cb0ef9e27eb2c0f2776ce7f29d7693670bbcea06eb4e4 @@ -192,6 +192,7 @@ lib/codeql/rust/elements/YeetExpr.qll 4172bf70de31cab17639da6eed4a12a7afcefd7aa9 lib/codeql/rust/elements/YieldExpr.qll de2dc096a077f6c57bba9d1c2b2dcdbecce501333753b866d77c3ffbe06aa516 1f3e8949689c09ed356ff4777394fe39f2ed2b1e6c381fd391790da4f5d5c76a lib/codeql/rust/elements/internal/AbiConstructor.qll 4484538db49d7c1d31c139f0f21879fceb48d00416e24499a1d4b1337b4141ac 460818e397f2a1a8f2e5466d9551698b0e569d4640fcb87de6c4268a519b3da1 lib/codeql/rust/elements/internal/AbiImpl.qll 28a2b6bdb38fd626e5d7d1ed29b839b95976c3a03717d840669eb17c4d6f0c7a 8e83877855abe760f3be8f45c2cf91c1f6e810ec0301313910b8104b2474d9cf +lib/codeql/rust/elements/internal/AdtImpl.qll 2dc727a14a0fc775512d35e224eab7955884ec143dbd7dbf4cada9a1f5516df4 f3991cea544c5537b0a810492979a317b47685e1c0e58b948df2a957c7a18fdc lib/codeql/rust/elements/internal/ArgListConstructor.qll a73685c8792ae23a2d628e7357658efb3f6e34006ff6e9661863ef116ec0b015 0bee572a046e8dfc031b1216d729843991519d94ae66280f5e795d20aea07a22 lib/codeql/rust/elements/internal/ArgListImpl.qll 0903b2ca31b3e5439f631582d12f17d77721d63fdb54dc41372d19b742881ce4 2c71c153ccca4b4988e6a25c37e58dc8ecb5a7483273afff563a8542f33e7949 lib/codeql/rust/elements/internal/ArrayExprInternal.qll 07a219b3d3fba3ff8b18e77686b2f58ab01acd99e0f5d5cad5d91af937e228f5 7528fc0e2064c481f0d6cbff3835950a044e429a2cd00c4d8442d2e132560d37 @@ -225,7 +226,6 @@ lib/codeql/rust/elements/internal/AsmRegSpecConstructor.qll bf3e0783645622691183 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 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 70e82744464827326bfc394dab417f39905db155fb631f804bf1f27e23892698 760c7b42137d010e15920f9623e461daaf16518ab44a36a15259e549ecd4fa7a lib/codeql/rust/elements/internal/AssocTypeArgConstructor.qll 58b4ac5a532e55d71f77a5af8eadaf7ba53a8715c398f48285dac1db3a6c87a3 f0d889f32d9ea7bd633b495df014e39af24454608253200c05721022948bd856 @@ -240,7 +240,6 @@ 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 9f6ce7068b5c17df44f00037ebb42e6c8fdbbbd09bf89951221fb04f378fbdf1 6e6e372e151fe0b0f17a5ea0ed774553b6ed0bf53e1d377e5ed24a0f98529735 @@ -443,7 +442,6 @@ lib/codeql/rust/elements/internal/UseTreeConstructor.qll 3e6e834100fcc7249f8a20f lib/codeql/rust/elements/internal/UseTreeListConstructor.qll 973577da5d7b58eb245f108bd1ae2fecc5645f2795421dedf7687b067a233003 f41e5e3ffcb2a387e5c37f56c0b271e8dc20428b6ff4c63e1ee42fcfa4e67d0a 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 4ceeda617696eb547c707589ba26103cf4c5c3d889955531be24cbf224e79dff 4258196c126fd2fad0e18068cb3d570a67034a8b26e2f13f8223d7f1a246d1a4 lib/codeql/rust/elements/internal/VisibilityConstructor.qll 1fd30663d87945f08d15cfaca54f586a658f26b7a98ea45ac73a35d36d4f65d0 6ddaf11742cc8fbbe03af2aa578394041ae077911e62d2fa6c885ae0543ba53a @@ -460,6 +458,7 @@ lib/codeql/rust/elements/internal/YieldExprConstructor.qll 8cbfa6405acb151ee31cc lib/codeql/rust/elements/internal/YieldExprImpl.qll af184649a348ddd0be16dee9daae307240bf123ace09243950342e9d71ededd9 17df90f67dd51623e8a5715b344ccd8740c8fc415af092469f801b99caacb70d 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/Adt.qll 155f4025a26c3d2d5d3c42dfce9274a10f0862ea0574843c5d276179de421569 17138b271eea81d3ee2697c82cccfd7af752cd18cd925dd5fa20d7fce0e2432f 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 @@ -480,7 +479,7 @@ lib/codeql/rust/elements/internal/generated/AsmPiece.qll 17f425727781cdda3a2ec59 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/AssocItem.qll 188fd2aaaef11cc926cf202adc64f294988fe2b3ec768d586d260c23877bbe21 58332ddaeff27fa80ce329d3964f4cc05f2cc807eb2a7a4cd6c26e90442e7f3a 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 @@ -492,13 +491,13 @@ 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 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 ab494351d5807321114620194c54ebf6b5bacf322b710edf7558b3ee092967ae 057d6a13b6a479bd69a2f291a6718a97747a20f517b16060223a412bbadc6083 +lib/codeql/rust/elements/internal/generated/Const.qll 3e606f0198b6461a94964dba7a4d386408f01651d75378eeab251dfceccf49c8 20fe276cded4764bdb1cd50de956bea88d7cd731909c0b84b4abb972b3094959 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 2e24198f636e4932c79f28c324f395ae5f61f713795ed4543e920913898e2815 5abe6d3df395c679c28a7720479bad455c53bc5ade9133f1ff113ea54dc66c11 @@ -506,12 +505,12 @@ lib/codeql/rust/elements/internal/generated/ContinueExpr.qll e2010feb14fb6edeb83 lib/codeql/rust/elements/internal/generated/Crate.qll 37f3760d7c0c1c3ca809d07daf7215a8eae6053eda05e88ed7db6e07f4db0781 649a3d7cd7ee99f95f8a4d3d3c41ea2fa848ce7d8415ccbac62977dfc9a49d35 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 ad2a79ae52665f88a41ee045adce4e60beb43483547d958f8230b9917824f0a1 cb12e304d04dffb4d8fb838eb9dbecf00fa8ac18fbf3edc37ee049ad248a4f67 +lib/codeql/rust/elements/internal/generated/Enum.qll 477eaa102c1268f0fa7603ecd88f1b83db1388c17c25e3719d4113ea980256f7 2d60db61ba4a385218f0a01e366e04ba1e7dad386b7e6a027c31f32fb730cca2 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 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/ExternItem.qll 08c02dbc8a96df25725ccec69ef5e19089ae03faea2efb86be892077ea1bc8ab 8afe7b6a87445dde4ce2c790ad05c2ccf771996d10625e6fc100113f219e8e32 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 @@ -524,7 +523,7 @@ lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll c762a4af8609472e28 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 6c04fffdc9de54cd01ff76f93aef5fcd3f2f779a2735523c9b1a859d394cefc9 af3c0f05c05ecd74560ab7b128a4a8e9822aa3cb80eddf304d51ea44725ac706 +lib/codeql/rust/elements/internal/generated/Function.qll 695dbc61e1c4d67a75e438f30fffcaa4a251be629093428b6b7afba053342fb6 ddc34f1da6b4b2ac64d60028822c7cfc72da133dd08ad2490bd2dcae9d91e074 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 85ac027a42b3300febc9f7ede1098d3ffae7bac571cba6391bc00f9061780324 806cb9d1b0e93442bef180e362c4abc055ab31867ff34bac734b89d32bd82aa1 @@ -551,7 +550,7 @@ lib/codeql/rust/elements/internal/generated/Locatable.qll c897dc1bdd4dfcb6ded83a 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 74501c9687d6f216091d8cd3033613cd5f5c4aedbf75b594a2e2d1e438a74445 1de4d8bec211a7b1b12ff21505e17a4c381ccfa8f775049e2a6c8b3616efa993 +lib/codeql/rust/elements/internal/generated/MacroCall.qll 1a7ee9c782ebc9ab0a807762aabebc9e0a7ef10c6eb945679737598630b20af2 782a437654cb316355c020e89d50b07c93ba7817715fa5d42a9e807cf12d1a43 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 @@ -578,7 +577,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll eaa0cd4402d3665013d47e lib/codeql/rust/elements/internal/generated/ParenExpr.qll 812d2ff65079277f39f15c084657a955a960a7c1c0e96dd60472a58d56b945eb eb8c607f43e1fcbb41f37a10de203a1db806690e10ff4f04d48ed874189cb0eb lib/codeql/rust/elements/internal/generated/ParenPat.qll 24f9dc7fce75827d6fddb856cd48f80168143151b27295c0bab6db5a06567a09 ebadbc6f5498e9ed754b39893ce0763840409a0721036a25b56e1ead7dcc09aa lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 03f5c5b96a37adeb845352d7fcea3e098da9050e534972d14ac0f70d60a2d776 ed3d6e5d02086523087adebce4e89e35461eb95f2a66d1d4100fe23fc691b126 -lib/codeql/rust/elements/internal/generated/ParentChild.qll e2c6aaaa1735113f160c0e178d682bff8e9ebc627632f73c0dd2d1f4f9d692a8 61cf70eb649f241e2fcd5e0ba34df63f3a14f07032811b9ae151721783a0fd20 +lib/codeql/rust/elements/internal/generated/ParentChild.qll 3657258593982c34cb5934cf51fe21a0749af3161890b43c20f2b327d89ecf77 83509d01d5735e297057327be7fbb837a4633604cf6641ba34bb4825798187da 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 @@ -593,7 +592,7 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 8d0ea4f6c7f8203340bf lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9 lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9 -lib/codeql/rust/elements/internal/generated/Raw.qll 55ec0031a67964805e9dfb8d3190385e101178d1bcce1c4efd53d8f58d1cf0be d34faae700e7c2cb9e6eb2183244ff900a270c761676491d3ffe6a939903edd7 +lib/codeql/rust/elements/internal/generated/Raw.qll f5b37458fb9c16829da761323deab22b440c3cb5bf915e07ee3eb2315251020e 0198c8d6ac310f107e4685f6dc0bd2eb58800af41ab4ac4c15c42d8d575f4b0a lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66 lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05 lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 5b0663a6d234572fb3e467e276d019415caa95ef006438cc59b7af4e1783161e 0e27c8a8f0e323c0e4d6db01fca821bf07c0864d293cdf96fa891b10820c1e4b @@ -607,10 +606,10 @@ lib/codeql/rust/elements/internal/generated/SelfParam.qll 076c583f7f34e29aaaf331 lib/codeql/rust/elements/internal/generated/SlicePat.qll 722b1bd47a980ac9c91d018133b251c65ee817682e06708ad130031fbd01379b 7e0ce13b9de2040d2ef9d0948aab3f39e5fdc28d38c40bfbee590e2125dbe41c 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/Static.qll 1a6c87d3c5602e3d02268ebe2463a4ac64614ad25e8966a9bdb9c0ef58991365 cc1fe16d70cdce41a12e41a8f80cc38bdd7efa49c1544e35342fcf3cd26b8219 lib/codeql/rust/elements/internal/generated/Stmt.qll 8473ff532dd5cc9d7decaddcd174b94d610f6ca0aec8e473cc051dad9f3db917 6ef7d2b5237c2dbdcacbf7d8b39109d4dc100229f2b28b5c9e3e4fbf673ba72b 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/Struct.qll 999da1b46e40d6e03fd2338fea02429462877c329c5d1338618cbd886a81567e daa7ff7bd32c554462e0a1502d8319cb5e734e056d0564e06596e416e2b88e9d 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 298d33442d1054922d2f97133a436ee559f1f35b7708523284d1f7eee7ebf443 7febe38a79fadf3dcb53fb8f8caf4c2780f5df55a1f8336269c7b674d53c6272 @@ -619,7 +618,7 @@ lib/codeql/rust/elements/internal/generated/StructFieldList.qll 5da528a51a6a5db9 lib/codeql/rust/elements/internal/generated/StructPat.qll c76fa005c2fd0448a8803233e1e8818c4123301eb66ac5cf69d0b9eaafc61e98 6e0dffccdce24bca20e87d5ba0f0995c9a1ae8983283e71e7dbfcf6fffc67a58 lib/codeql/rust/elements/internal/generated/StructPatField.qll 5b5c7302dbc4a902ca8e69ff31875c867e295a16a626ba3cef29cd0aa248f179 4e192a0df79947f5cb0d47fdbbba7986137a6a40a1be92ae119873e2fad67edf lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll 1a95a1bd9f64fb18e9571657cf2d02a8b13c747048a1f0f74baf31b91f0392ad fc274e414ff4ed54386046505920de92755ad0b4d39a7523cdffa4830bd53b37 -lib/codeql/rust/elements/internal/generated/Synth.qll eb248f4e57985ec8eabf9ed5cfb8ba8f5ebd6ca17fb712c992811bced0e342d4 bbcbdba484d3b977a0d6b9158c5fa506f59ced2ad3ae8239d536bf826bfb7e31 +lib/codeql/rust/elements/internal/generated/Synth.qll 4390996606c436cb34201d7dba9821a0d775d1707e54fbbe24cbf788d1d1d948 8e8077a387c69f7f5e3bdb2754654625c233283eb39eab33a72bde536f139a16 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 1a3c4f5f30659738641abdd28cb793dab3cfde484196b59656fc0a2767e53511 de2ebb210c7759ef7a6f7ee9f805e1cac879221287281775fc80ba34a5492edf @@ -632,7 +631,7 @@ lib/codeql/rust/elements/internal/generated/TupleFieldList.qll fb76d1a3953263618 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 1756cdbad56d634bf4726bc39c768386754e62650492d7d6344012038236a05b 3ac0997a47f95f28cc70c782173ce345fcb5b073be10f3c0b414d1df8443e04c -lib/codeql/rust/elements/internal/generated/TypeAlias.qll 76f2ed5427077a5a4723285410740aeba01886ff1499d603cfeb735fc58ec580 b713c0ee40c959dff01b0f936552e6253634bb5ae152315f0949ecc88cb0dcce +lib/codeql/rust/elements/internal/generated/TypeAlias.qll 0d0c97d9e9213b8f0390b3456737d4611701a570b9943bb20b348c4efc8e4693 a83c701c0d8914e01517dfa9253a12be962f0a7ed2f75fbaae25a13432db403f 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 @@ -641,14 +640,13 @@ lib/codeql/rust/elements/internal/generated/TypeRepr.qll 1e7b9d2ddab86e35dad7c31 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 0d5528d9331cc7599f0c7bc4d2b17908a9f90037bc94b8b7cd8bed058df98e45 986b33efddc36ff34acaf3d38bd3f90055aa14ec018432f5d4510037fc8ee59f +lib/codeql/rust/elements/internal/generated/Union.qll 456504e6a32991ba17ca65f97636f4dfb86c758c7f8509aaca1b0d0432231dfe c96068edfec3e0755a7726426a10996455ee9f0f2d678af258719f1943a3063e 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 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/Variant.qll fa6909715133049b3dba4622e6262fa30c4a9478b6219ec4fd12e07c58750709 71fc2ddac97fc4c4e6b92a13ee217cccc81dffc7c12295b6bc97c56ad25a92cc 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 @@ -657,605 +655,164 @@ lib/codeql/rust/elements/internal/generated/WhileExpr.qll 0353aab87c49569e1fbf58 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 -lib/codeql/rust/elements.qll da721d51bc659921998521579df5bff6172d9079d8e243c2b65a5b9eb441b52e da721d51bc659921998521579df5bff6172d9079d8e243c2b65a5b9eb441b52e -test/extractor-tests/generated/Abi/Abi.ql 7f6e7dc4af86eca3ebdc79b10373988cd0871bd78b51997d3cffd969105e5fdd 2f936b6ca005c6157c755121584410c03e4a3949c23bee302fbe05ee10ce118f -test/extractor-tests/generated/Abi/Abi_getAbiString.ql a496762fcec5a0887b87023bbf93e9b650f02e20113e25c44d6e4281ae8f5335 14109c7ce11ba25e3cd6e7f1b3fcb4cb00622f2a4eac91bfe43145c5f366bc52 -test/extractor-tests/generated/ArgList/ArgList.ql e412927756e72165d0e7c5c9bd3fca89d08197bbf760db8fb7683c64bb2229bc 043dba8506946fbb87753e22c387987d7eded6ddb963aa067f9e60ef9024d684 -test/extractor-tests/generated/ArgList/ArgList_getArg.ql c07c946218489a0ad5fe89e5fd4a7f0ad84a73dc2e650729f48a340cb133be84 ff2382c0693f47e5eb1290aca325290e60c19d877b25b1d7e2ee96009f5fe934 -test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql e6f9fe0dd6af5a1223e1e59827346aa2975bd665aeda36e8844ffb3a79c5e532 38576b6f7257c119917442e4f54fc883480e4da86d2542a1ac16d723ebbba039 -test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getAttr.ql f1ca0521f641bed17581121c0f07c7f8737d9891acdde2c68de59a0684e86a34 496da6513cfee28a31274a2e72b5a58d843407ac5e4870296da0f0b8e7fc85c1 -test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getExpr.ql 6920b532623e8c919701a83a059d9b1aac9e8673e7fdbe26e0a8af5ad6a34b8a 601137c715ce947d79f39d5b131d7ab167a16d29477eacdb1380cd647c4ebac4 -test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql 60a0df80fd34ca5c960b5e060c7090f8bbb8af83aba7099aa298a80e19a13346 c41f80601c7f50eee01c0ed7587e0198296d6a8a5b95c98dd8f865901d34ba5c -test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getAttr.ql fc6ca212aa633b73ee21f7564631c9ad345f15839656d88940dc686cf076a344 d580a367305adbe168996a294329b1adec36956a500ae9717a4af78cb2bef4e6 -test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getExpr.ql 6b00037350fc36cc46345a290bda4c4d4ff99050b970d23eb94294313046a884 0687638b46e43bba9dda35d78ff7b40f976e5e38271eec77e7a21c28349dc42c -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/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/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 -test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getIdentifier.ql 1d6d4031ed10dbe09ba8597d9ba5417c6b890b5b745e91bca12401459fc3c4e2 7da625c3a6eaf93b0ebd5d9863aad5fad45b1baf5df27d93d7f9c5d1fb76db13 -test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getParamList.ql 586cb26683e522469a5094d359be4d8e5c6a3a74c1621a059bfcbbbedc0e34b4 84784b38c24313f3ffc88371421550922d9deb44d09ca7727ca77e892a672dc9 -test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getRetType.ql 3e18791a74c12d93ac8f786aa76bd836876052837bb9f0b25222cde47c55e419 b53bb52ff98c1ca0ba09ffce034a97ddd86e32828df7acb9bf34e20c4fb19664 -test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getReturnTypeSyntax.ql 37252b5cee5ae64c36612aea57a6766bd34254ae35b9774642a36a8222aecfe6 c1f587d52b39c8aa66b9e6e4f36f40bda17dfcd72714ff79a262af99f829f89d -test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeBoundList.ql 7e006ac8e8574c66a312b1389c7a85a83561b946e060575cc7234ef523b1a3ba 6123b375796c014a0bc96d39877b3108c13eff34536aa68402bda85511da18da -test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeRepr.ql 0e41d63d34076111cdd00ba08e93da36411491ea6eafa2e61e94ea6d05e6bfa6 7bf0e678fe310f9085199877ac2b0817109cd10d26a3179715493b54a2cea649 -test/extractor-tests/generated/Attr/Attr.ql 028ac0a387f674205c5ef903238872ab1b6b7e2201f58c31776cdf740daf437c cb56a22887e0737d28034b39d7c3fb37a3d6eb1f34ce3d112bcea2f0affb3b13 -test/extractor-tests/generated/Attr/Attr_getMeta.ql f1e2df2bc987c670e31b454ab51b3028efc1018fbed2298a8c97f554eb1862f0 a9115ced872c89edc398bda1cbd54068f9065debc14ea5ac887ba13ad8f4e3d8 -test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql 8dcc94a553fbddf17dfc619fbac563a9dc4fc6029860e10703e9ae9765d9ab66 52e7f0c98e6ab5dcef04b2ab5283ecde76e61a2297aa2080d16998f93dc923b7 -test/extractor-tests/generated/AwaitExpr/AwaitExpr_getAttr.ql c5ee1fc6017c4432a59dfec7d10d32681bd23f98cac70bbe65bc2aec8a680f3a ce6cf93c6305e6585c9d452bcc23af9dc8cbe2c872d2af5238a54c85df2071ee -test/extractor-tests/generated/AwaitExpr/AwaitExpr_getExpr.ql 143158284c8b7cc40fd2fa47c0bcf3f137ecd080b830476faca0c950b97c797c 0c9f64ce70cccf90fff7e7e9602f8ffdf68535d113914aab24f6450505b61d10 -test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql b095c87b128d667f76585cda671173808130df6d094ac7ebcf89fc345d7908f4 aa3f1caba1cc7a40a0903f91458807e9ac9e8e9f3f5688acea061cebc8a2ff07 -test/extractor-tests/generated/BecomeExpr/BecomeExpr_getAttr.ql 88c6342cfaa4d199a6c9f69612d3f783ad48c715c729f4909d563e032ee50be3 d90c139b22bf7350f9ae32b8b3ae6c19bf190fb2b4d5154b845f2252090fde32 -test/extractor-tests/generated/BecomeExpr/BecomeExpr_getExpr.ql c8942270a2ff2b1b5c9ee4319185f0a8f1f8acb39eb825029c02a2457a8cd641 fb4c910ab658404869506718e18a5c8097629ba56111329552abbf429df0a324 -test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql 1c36f72c679d4c0e7d0653bf5f7b70e3019d68e9115645f6db61f6fccabfeaf4 890b64875e44a73eec0d7c905de3363fffec3468171de628652b5066a4306bed -test/extractor-tests/generated/BinaryExpr/BinaryExpr_getAttr.ql 26d985ac4b668d78d2fefc6b5a37f2dc334e4c5f8511dd14b89014e2ef5c3b07 4546dae1816b2618f8d881e0ca8eaa851c768fcd994f3edd3285a3880878177c -test/extractor-tests/generated/BinaryExpr/BinaryExpr_getLhs.ql c3f19d8a60066ad6b1810291a669473c75b659cd2f6ac3ab9ed3db2203d4145c c05c5e0226e30f923155669ffc79cfe63af1ca464e8dfc85888dda5f7049711b -test/extractor-tests/generated/BinaryExpr/BinaryExpr_getOperatorName.ql 33612159be1c111e3306009d0b04579450fc962a81119b6ea4e255d3c409b401 1a0995b298f50242217cfef81dca8ac978e19e06f90a5f4caadcb6f84460fec2 -test/extractor-tests/generated/BinaryExpr/BinaryExpr_getRhs.ql 3bcd36b678e87d5c29a43b69c54c80468a89aefa7e69481b48158ae794a53160 a629dc1472b3f6fd7c608ff760e83d8e1363db81dfe9a4b2968690c2ba4925ca -test/extractor-tests/generated/BlockExpr/BlockExpr.ql 19caa39aaa39356219dda740b7152f85e43a4f8d6295841e2c535c7e3bda7a5a bd668574ba41021e758e391d4790b871439badb2486ccf6a5aaf788ad6ae4142 -test/extractor-tests/generated/BlockExpr/BlockExpr_getAttr.ql 15d4d9853d3262ce6ec629c075c60a76eb112dcafe34b71df0e09b39282223cf 792c498bc7079bb5b93034b8a87db3b275a591d78954e844821aeacffe4258ea -test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.ql de3c28a2677ed71ebd95207aa43ce270765f7f556283f095f1f6296622b80cbc 414ebbb2bfbe4350f933fc3d3636b49a6bb8242e200180780caf95ab8523adb0 -test/extractor-tests/generated/BlockExpr/BlockExpr_getStmtList.ql 8c391dfeb69bd92c547a2417bf231cc960a8f34845802722214294728772316a f3e847fa594e9d9cf25d09a0396a10176aad1100c1977a24756ff6287a79e69e -test/extractor-tests/generated/BoxPat/BoxPat.ql 228052e5303f523797994232b1b762c26ce29bd1e38b49d496ccf04090b97c00 6501e816dcb8839b9b72c6ab231db449b8f7779e5faadf5a8c5be81f53eb001f -test/extractor-tests/generated/BoxPat/BoxPat_getPat.ql 7372e29737d968820108211612ed880f3e13084992419f5b52eaddf4bbfa874c dda2f412fcfba756604c03b766e9bbd17e6c2141b2d355fc0e33ec33573ffadb -test/extractor-tests/generated/BreakExpr/BreakExpr.ql cdde2855d98f658187c60b9edc2aa36b1853270f3c183a37b11801ff24d22a8b 687ec032ff86ee21952d2b95dde93fba026a09f6f39a284fbc6e9b42647d80e3 -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_getArgList.ql b022e7b6b6db9932e787e37b7760c6a09c91140a0368940374a2c919688e0488 c20849c96b53c96f6f717efff5e8b4c0e900c0ef5d715cfbaf7101c7056ad8f4 -test/extractor-tests/generated/CallExpr/CallExpr_getAttr.ql 1ace458070875b9ff2c671c2ee18392ea7bf6e51b68ee98d412c8606e8eb8d33 4c35da8255d2975cef4adee15623662441bb8f2e1d73582e4c193d1bc11cc1b5 -test/extractor-tests/generated/CallExpr/CallExpr_getFunction.ql 060a6c8b5b85c839b14fe96f9e50291a7a0e5662a945f4f337070f782ec76715 e9a1e44433936146d87be939aa160848b9a7d7333c36da601fb7d1a66d71eb59 -test/extractor-tests/generated/CastExpr/CastExpr.ql f8d889de678f09c32b8e999a1667aaa38366a005d37a537883bce7ea576aad66 488f8285d6af8644968c19488ada65c8f4b7fd82f57271cb290b4896a675d2d7 -test/extractor-tests/generated/CastExpr/CastExpr_getAttr.ql 5d5d98172e495cdb8b5cea9d6588c4c245107b441464e3ffd6c27668af11ab4e 5820bf083aaa4c3275004a2cd9eeecc4b45ab96916cbc0655a1b42611c540715 -test/extractor-tests/generated/CastExpr/CastExpr_getExpr.ql c37186b8f3e3dab8ae28c0da7263ff7272c40501beb16736ec0fb8990d285e22 59d50d7349234afcf84986b7570db9dcd342e16812f7c46199d4736cdfa5462d -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_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_getParamList.ql 68ce501516094512dd5bfed42a785474583a91312f704087cba801b02ba7b834 eacbf89d63159e7decfd84c2a1dc5c067dfce56a8157fbb52bc133e9702d266d -test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.ql c95bc7306b2d77aa05a6501b6321e6f1e7a48b7ad422ba082635ab20014288ae fe72d44c9819b42fff49b9092a9fb2bfafde6d3b9e4967547fb5298822f30bc3 -test/extractor-tests/generated/Comment/Comment.ql 5428b8417a737f88f0d55d87de45c4693d81f03686f03da11dc5369e163d977b 8948c1860cde198d49cff7c74741f554a9e89f8af97bb94de80f3c62e1e29244 -test/extractor-tests/generated/Const/Const.ql 6794d0056060a82258d1e832ad265e2eb276206f0224a3f0eb9221e225370066 0a6134fb5a849ce9bd1a28de783460301cafca5773bd7caa4fb1f774f81b476a -test/extractor-tests/generated/Const/Const_getAttr.ql bd6296dab00065db39663db8d09fe62146838875206ff9d8595d06d6439f5043 34cb55ca6d1f44e27d82a8b624f16f9408bae2485c85da94cc76327eed168577 -test/extractor-tests/generated/Const/Const_getAttributeMacroExpansion.ql 82e86399d5cd72621dc8d9cd9f310d3dc7f2ecf208149dab0d202047ccbbd2f8 33df8c5b5044f49ec244e183c61c3b81fabd987f590ba6da4e18e08231343dc8 -test/extractor-tests/generated/Const/Const_getBody.ql f50f79b7f42bb1043b79ec96f999fa4740c8014e6969a25812d5d023d7a5a5d8 90e5060ba9757f1021429ed4ec4913bc78747f3fc415456ef7e7fc284b8a0026 -test/extractor-tests/generated/Const/Const_getCrateOrigin.ql f042bf15f9bde6c62d129601806c79951a2a131b6388e8df24b1dc5d17fe89f7 7c6decb624f087fda178f87f6609510907d2ed3877b0f36e605e2422b4b13f57 -test/extractor-tests/generated/Const/Const_getExtendedCanonicalPath.ql 3300b902e1d1f9928cfe918203b87043e13460cfa5348a8c93712d2e26d61ced 71e7b80d3290f17b1c235adaca2c48ae90eb8b2cb24d4c9e6dc66559daf3824c -test/extractor-tests/generated/Const/Const_getName.ql b876a1964bbb857fbe8852fb05f589fba947a494f343e8c96a1171e791aa2b5e 83655b1fbc67a4a1704439726c1138bb6784553e35b6ac16250b807e6cd0f40c -test/extractor-tests/generated/Const/Const_getTypeRepr.ql 87c5deaa31014c40a035deaf149d76b3aca15c4560c93dd6f4b1ee5f76714baa f3e6b31e4877849792778d4535bd0389f3afd482a6a02f9ceb7e792e46fca83e -test/extractor-tests/generated/Const/Const_getVisibility.ql de6b2e9d887316e279b45fab7887980ca7d93fd32c2259f3a06de2b6e2957c12 2f135cdbbb84b43d282131edb7eb4df6caba61bf7421881a49d4679f0f44f661 -test/extractor-tests/generated/ConstArg/ConstArg.ql f1422b216eb45819ff41f0c19e0f88aa184ddd3fa2984ba22ec46df398147fc3 d2e4f367848c2bc4f6aef51c1dd8180035c39919430082c83f18a3f324228df3 -test/extractor-tests/generated/ConstArg/ConstArg_getExpr.ql 317fd83ad51acc3ff3dfab71ebb1385b67d49404c1d7b3804a8ca3c099b84e99 91ecf5ebbfc1aab286dce708680f0be97417f9755676db7479fa6836e50be845 -test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.ql ee17b4deba9c503130e3ce565102bc8e181770efcb1309be9c822f0a7ba6fc17 638ed17b5c009e71b31f580c4060ba763bd4208c3984b6c032183ab46a4dd43d -test/extractor-tests/generated/ConstBlockPat/ConstBlockPat_getBlockExpr.ql cc06e762e1652e467c7cf02c34f17c621fb3a938f294ee527fa04ed78c8701ec f863f8f6bfc9d169b585ae56b4e4ac0fc1603fd14775450e950cca4d5ea28e8a -test/extractor-tests/generated/ConstParam/ConstParam.ql de4a92306dd3f65e0d308d34715f388815dc70955b819c627f5839cbd9d8b464 ff98827d3ab57bfc48356072de0172e8e1c2374dc6a086b1ad721b6d9e6038e6 -test/extractor-tests/generated/ConstParam/ConstParam_getAttr.ql af8949f1ea039a562a3b3561185a85f7f8a871bf27dba0580782f81c62b6508c 2874783b84fdce47b809f953e02c36473cad6a2d3dd1c0f1a9cb14a3e28b9c30 -test/extractor-tests/generated/ConstParam/ConstParam_getDefaultVal.ql 021630468422c30e7aa623bdf4e97f3076e68087991723c624922b1ee608d173 9fd78738cfd0455be2c655852f6c618e901af80c6b6791396d9683c118a44e91 -test/extractor-tests/generated/ConstParam/ConstParam_getName.ql e2e9b75dd7ce501793efce75079aabd3851b91aa4d437972693bacd7b04859d8 4d2326b39af870a2ef8b37448f78395cdb5c1e94df88f137ef71f8fd3548cd8e -test/extractor-tests/generated/ConstParam/ConstParam_getTypeRepr.ql f25a4695e06a6410264e979c7a4421253437cbab5837afafffbe69ecb384ce55 4b7ead1298ea0b5e12dfa2d75aa4732e1070c6880982a9cbaccc8d129956a232 -test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql 971ccb238aec663855745fa2669d5f8973a4e6c76bacdf0deaf23522ec1cf80c 4e3ceb4c4cd833ad8311bb02e5cda18163082e341cd8a3def60734a53cca8929 -test/extractor-tests/generated/ContinueExpr/ContinueExpr_getAttr.ql acb261869d3b3c65e364e7b6fbd7afdf5305806d4417b05044beed9a81e66ea4 af35ce0aee87ddc7a0cd34be4a480c619940d036d5cecce0e4e1fcd75b7c553e -test/extractor-tests/generated/ContinueExpr/ContinueExpr_getLifetime.ql 39dae9872d92fa9b15343c93da545c2b0e15b4f27f2296c200fd4611b68858d5 52a209022e3b83260b4ef5513ffbcc1ca1f7c21bad2c721a0d3698793d2161d2 +lib/codeql/rust/elements.qll 6ebcf16ef214075bc43562c246c11f8b90c089ff1b5041ab1b39ab9f4a40e9b3 6ebcf16ef214075bc43562c246c11f8b90c089ff1b5041ab1b39ab9f4a40e9b3 +test/extractor-tests/generated/Abi/Abi.ql 086ed104ab1a7e7fe5c1ed29e03f1719a797c7096c738868bf6ebe872ab8fdaa fe23fe67ab0d9201e1177ea3f844b18ed428e13e3ce77381bf2b6910adfa3a0e +test/extractor-tests/generated/ArgList/ArgList.ql da97b5b25418b2aa8cb8df793f48870c89fa00759cdade8ddba60d7f1f4bbc01 acfd5d2caf67282ad2d57b961068472100482d0f770a52a3c00214c647d18c75 +test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql 42b365276aa43e2cad588338463542d3ce1dd0db3a428621554584b07a1431d5 08a66a8b69af35ee3bc64c35c453a19a6c9881cc6cc7e65275d1fff056121270 +test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql 339629d69e2d7db153e2c738d70d2df33f395ae2377f07eb247132ede87b9899 07e0611667c09456241aabf80dc420fe1f5c13b1bce324da92e6b18d250c3896 +test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.ql b262300235ab5bf4fe7712c0208390c7e876413a37a433340fbc078318233e83 68cfb18e8fb73b53cf8a8e73e8bf5e7ba11f32ca6b4695a64ebab51ac7d58d1b +test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql adfcfcdc6ac2a9a4849ea592e37da4221b6279cf2ea1112d32b6c89fda33e85e 7438490536e27b7173dec731f6925531a0e3fa839639c97a53905ba72d7efbe5 +test/extractor-tests/generated/AsmConst/AsmConst.ql 82f322fc8a01f4ccc86b3ecca86a9515313120764c6a3ac00b968e4441625422 62831f204c5c2d0f155152c661f9b5d4a4b685df6e40693106fbef0379378981 +test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.ql 518a739c91481f67b27bfd1989d9dcbada12de54901eb6d598c896cd72f1f5fe 4567661eecf475fb05e13749b9250bcec51056b6db5a6ae7df24b7ba5cfb88c2 +test/extractor-tests/generated/AsmExpr/AsmExpr.ql c6c0128b252a13d5acea9a07b3854625aa51ebcce9dd93c11b423c9929d441fb 7618977e43f202af5b7d21b67531c4795bb791abe3cb03ba4077913c430b31d5 +test/extractor-tests/generated/AsmLabel/AsmLabel.ql 130bf49dc1f5ae79e3588415b9a4c25dfdcbcac1884db9b2fb802a68e33180e5 c087e47d8953d312488fcc0b1bcbfca02521e3683e2063eaf380d76399bca037 +test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.ql e866fd4715e78511352bb286c1120cbd52c4d960664d57dd99f0380eb1db7109 081d6a6267a3e251a123099b4c1e7d3c5a3b56e0efe9db7c7db24db1c08b7e0d +test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.ql fb1eb1f275ad251ba2e0876cf1d097bb33f20d06b0e50f8c01f7c11c71057688 e308567ffd18671cf172853a5c594f0f211d492c7e2fb58be412703d1b342b41 +test/extractor-tests/generated/AsmOption/AsmOption.ql d613c40391f4985414cc3541f900b6e3f5f9ef157d2bfb96a773710af4b059ed 8450ef57a5a891db514e8340151d161e515b59ae7b963fd5eebf3bf862eaff08 +test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql e0e76f1d6e454c60db632baabd29642f315c4bf9284bab9ff8368604df15e77a 8450851f062232e7ea92845f406287f945c16e1e1a69a3189773e6e86df8a64f +test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.ql 4ad6aa224e980602aaa77a601bda1065b1814249d889b54eda4da99dfcb53a8c b2503095957c7e3cdd345e8ccc594aa0f7590954e64a831660aed9a515f74d80 +test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.ql 3ae5068254b83bc4663230d2d21f16e189d213acbb4f25924819288b433d4a7c eea94d02b9bccb20d9ac9627667b84eeb486b5976b1b37fa0b94767c83c44a3e +test/extractor-tests/generated/AsmSym/AsmSym.ql b3dadbd288d92dad7517f7997aa3e5974f807a30793486d174bfa9cc67128fc3 4f82ca31ef7e5a7d9a86567516a257a212ecca911c02d9a67de792ae66960def +test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.ql 553cf7850a60985438e85079d3b55ec821fff6912d2076c2847e19626e9443c0 6c1c52cc2d4823b450bf3f3c9b166514863155f842faeaeae4bac8587a63efc8 +test/extractor-tests/generated/Attr/Attr.ql 88f9a524b557e81006a5079ac6d703c42df03ee510b7bc10cd22b481275d1939 49580ff1d1c34fd2ff636b983a19a96af0e36da939b5ac556817a741bb3b0435 +test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql 93ccb34e00b37deecd6d3019bb47948daffe55a2d5d031c60b4f6fa7a61412a4 5502459743efd8346ab943ff3334545407b21aaf0771bf422be58a5df5d27381 +test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql 7076b3f965c680e8f03bccd9ecb4495d03d35a4f460ec43628c19314eae8b49e 961e6e656e467ba389bbc6db39f345d9a8afaae4584d357dfe47484c6afadb99 +test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql 4e849e6eaae581f487aa74d09d1106e441c876b06474389687a04df446690a4d 6cd36dfdb0af25396d2219fe2789f898e2393cc3f10a25410b2ede5d216707cd +test/extractor-tests/generated/BlockExpr/BlockExpr.ql cd6ef66de9e56ebb74964e59617d47999fb8c9081e885acece17a3b747a35ae1 6766844c1b87e518688565f2469575af5ca4e0ff4eb0c0b620df73a451d86a0b +test/extractor-tests/generated/BoxPat/BoxPat.ql 854c9ba4e045dbe7ea1666866c1c443a92597df0ce02f4ca5993142925941c39 a22c17cce0bff7d1df51b817d2cb1a61045357f91be14465166971efa5f5daad +test/extractor-tests/generated/BreakExpr/BreakExpr.ql c2181211da3dfe983cfca93ead32d5d211e91181899b9477152c58124eaa846d 57e57b926e14db2efb2e88e04699608b2ba9797ee4f6c4f710135b6858982256 +test/extractor-tests/generated/CallExpr/CallExpr.ql 2a1cd4485ccd8d4eb24a75889e832612adef9bb7feae414c90572796380bc6d7 95060b92aa04d7ad1fc6603c5ec14a275a5788ecb5a19932732e28105607a3b7 +test/extractor-tests/generated/CastExpr/CastExpr.ql 3480ec51072399409b7553ab6139c832db6ed4ca991f3a7a2282a39afe07c6f2 614c8ea7a2fe30d57583dbf84ed7a12743c2aba49d8c6252d31af3ed10853a39 +test/extractor-tests/generated/ClosureBinder/ClosureBinder.ql b68285fec6224b156754f51ee75a9b7ed32edaa16527e6f657a73bf6dd97eba3 d02b1b6d66dea1da892447d7b309f9b6e4eda0dd02055d71706d52aa73b5b9c4 +test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql 849c874de45781b8491cee428cc00fefc8cdc76f87de8a373a181b16ce930ab1 5e570193befae7bfe6c21ce91e20afd52bb94f234e2be89d0974bd6337221508 +test/extractor-tests/generated/Comment/Comment.ql 0e0454911d2cf2e7ef5c6d860b84c57b9d490090914ebcf4fa0e8a70f777f066 cbd1c195276ef163f8d3c122344738c884dc9fb70eb2f9b7067829d735d48c4c +test/extractor-tests/generated/Const/Const.ql 28a0f2debbf73ae867fc2d08d8e54d9e96fea69522b7180a48495c9b7fce9367 54d4a68a2b67db95ceb856535a8b27860ce2b502da17a7eeea3bb554d7fb5e43 +test/extractor-tests/generated/ConstArg/ConstArg.ql 21c7caf1939ff9fcc1bf0fe6dec5c6a6929f714cf1e17faf7a2f4a31c910194b 61eac00f4727f7269f926c53f53a62b5fae82ce7a02b42d23b9de6337b6f9d6e +test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.ql e2198f9ef913f7ecb9e96a4e5e4849737b664dbdf1ef67428d372ea1c29bbb35 c49aaaafd65c4dfadd1fae42a2078dba90bbd3fa1bcb09b88501c5085ab22c49 +test/extractor-tests/generated/ConstParam/ConstParam.ql 6facb2402e1cbf23d836f619ef68e2d8496b3c0c438e71266de24d8690852468 211ed6f7384f86d849f559410b2ac09da3df278bdeea9e77c4d9c26a727a6990 +test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql 58b5046a4da06a4cd2d942720603313126888b2249b218bef6f7c44ca469ccfa eeb84a04deb4c4496b7f9b38798cc7fdc179a486c8beaa0b33bf87e7f9482b1a test/extractor-tests/generated/Crate/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.ql 513d64b564f359e1022ae6f3d6d4a8ad637f595f01f29a6c2a167d1c2e8f1f99 0c7a7af6ee1005126b9ab77b2a7732821f85f1d2d426312c98206cbbedc19bb2 -test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr_getTypeBoundList.ql b20720ff0b147d55cea6f2de44d5bf297e79991eaf103938ccd7ab9d129e9656 eb8c9db2581cea00c29d7772de0b0a125be02c37092217a419f1a2b6a9711a6c -test/extractor-tests/generated/Enum/Enum.ql eebc780aef77b87e6062724dd8ddb8f3ad33021061c95924c2c2439798ffbb87 0d19552872a2254f66a78b999a488ce2becdb0b0611b858e0bee2b119ee08eae -test/extractor-tests/generated/Enum/Enum_getAttr.ql 8109ef2495f4a154e3bb408d549a16c6085e28de3aa9b40b51043af3d007afa7 868cf275a582266ffa8da556d99247bc8af0fdf3b43026c49e250cf0cac64687 -test/extractor-tests/generated/Enum/Enum_getAttributeMacroExpansion.ql 571ec6396fb7fc703b23aab651b3c6c05c9b5cd9d69a9ae8f5e36d69a18c89d3 c04025992f76bce7638728847f1ef835d3a48d3dc3368a4d3b73b778f1334618 -test/extractor-tests/generated/Enum/Enum_getCrateOrigin.ql 76d32838b7800ed8e5cab895c9dbea76129f96afab949598bebec2b0cb34b7ff 226d099377c9d499cc614b45aa7e26756124d82f07b797863ad2ac6a6b2f5acb -test/extractor-tests/generated/Enum/Enum_getExtendedCanonicalPath.ql 001bb634adc4b20afb241bff41194bc91ba8544d1edd55958a01975e2ac428e1 c7c3fe3dc22a1887981a895a1e5262b1d0ad18f5052c67aa73094586de5212f6 -test/extractor-tests/generated/Enum/Enum_getGenericParamList.ql 2a858a07195a4b26b8c92e28519995bd6eba64889bddd126e161038f4a8d78e0 db188f238db915c67b084bc85aa0784c6a20b97b5a5f1966b3530c4c945b5527 -test/extractor-tests/generated/Enum/Enum_getName.ql 32a8638534f37bfd416a6906114a3bcaf985af118a165b78f2c8fffd9f1841b8 c9ca8030622932dd6ceab7d41e05f86b923f77067b457fb7ec196fe4f4155397 -test/extractor-tests/generated/Enum/Enum_getVariantList.ql eb30e972b93770be1b64eb387814b99b3901e8884dd74701c5478574242f5269 43e2f53c339f27e71954a96e218f6fc8a631b827457f718693eb2c79737b6cb0 -test/extractor-tests/generated/Enum/Enum_getVisibility.ql 7fdae1b147d3d2ed41e055415c557e1e3d5d4c5ec0da01089c0a8a978782f9cb d377397b4d9a3f34aed2a1790d1e826c9f77b60d65d3535b7738f21c41e1a095 -test/extractor-tests/generated/Enum/Enum_getWhereClause.ql 00be944242a2056cd760a59a04d7a4f95910c122fe8ea6eca3efe44be1386b0c 70107b11fb72ed722afa9464acc4a90916822410d6b8bf3b670f6388a193d27d -test/extractor-tests/generated/ExprStmt/ExprStmt.ql 811d3c75a93d081002ecf03f4e299c248f708e3c2708fca9e17b36708da620e5 a4477e67931ba90fd948a7ef778b18b50c8492bae32689356899e7104a6d6794 -test/extractor-tests/generated/ExprStmt/ExprStmt_getExpr.ql e269bb222317afe1470eee1be822d305fc37c65bca2999da8d24a86fa9337036 088369d6c5b072192290c34c1828b1068aeedaabdae131594ca529bbb1630548 -test/extractor-tests/generated/ExternBlock/ExternBlock.ql 237040dfe227530c23b77f4039d2a9ed5f247e1e8353dc99099b18d651428db2 49c8672faa8cc503cc12db6f694895ee90e9ab024a8597673fd4a620a39f28cf -test/extractor-tests/generated/ExternBlock/ExternBlock_getAbi.ql 9b7c7263fcbc84e07361f5b419026a525f781836ede051412b22fb4ddb5d0c6a c3755faa7ffb69ad7d3b4c5d6c7b4d378beca2fa349ea072e3bef4401e18ec99 -test/extractor-tests/generated/ExternBlock/ExternBlock_getAttr.ql 78ed6a2d31ccab67b02da4792e9d2c7c7084a9f20eb065d83f64cd1c0a603d1b e548d4fa8a3dc1ca4b7d7b893897537237a01242c187ac738493b9f5c4700521 -test/extractor-tests/generated/ExternBlock/ExternBlock_getAttributeMacroExpansion.ql 39b006e3acb71272cd0f211d37048949c41cc2cdf5bad1702ca95d7ff889f23f 2fceb9fa8375391cfe3d062f2d96160983d4cf94281e0098ab94c7f182cb008d -test/extractor-tests/generated/ExternBlock/ExternBlock_getCrateOrigin.ql 5a2e0b546e17a998156f48f62e711c8a7b920d352516de3518dfcd0dfedde82d 1d11b8a790c943ef215784907ff2e367b13737a5d1c24ad0d869794114deaa32 -test/extractor-tests/generated/ExternBlock/ExternBlock_getExtendedCanonicalPath.ql 40d6ee4bcb77c2669e07cf8070cc1aadfca22a638412c8fcf35ff892f5393b0c e9782a3b580e076800a1ad013c8f43cdda5c08fee30947599c0c38c2638820d6 -test/extractor-tests/generated/ExternBlock/ExternBlock_getExternItemList.ql 2c2b29bdfdc3b27173c068cbaab9946b42053aa14cf371236b4b60ff2e723370 dfc20fc8ef81cdce6f0badd664ef3914d6d49082eb942b1da3f45239b4351e2f -test/extractor-tests/generated/ExternCrate/ExternCrate.ql 25721ab97d58155c7eb434dc09f458a7cb7346a81d62fae762c84ae0795da06d d8315c4cf2950d87ecf12861cf9ca1e1a5f9312939dce9d01c265b00ba8103fd -test/extractor-tests/generated/ExternCrate/ExternCrate_getAttr.ql cbe8efdfdbe5d46b4cd28d0e9d3bffcf08f0f9a093acf12314c15b692a9e502e 67fe03af83e4460725f371920277186c13cf1ed35629bce4ed9e23dd3d986b95 -test/extractor-tests/generated/ExternCrate/ExternCrate_getAttributeMacroExpansion.ql 254a0be2f36e593f1473dfc4d4466a959683a4c09d8b8273f33b39f04bb41a7b a087003503a0b611de2cd02da4414bb0bbbc73ef60021376a4748e0e34a44119 -test/extractor-tests/generated/ExternCrate/ExternCrate_getCrateOrigin.ql c0bf9ba36beb93dc27cd1c688f18b606f961b687fd7a7afd4b3fc7328373dcfb 312da595252812bd311aecb356dd80f2f7dc5ecf77bc956e6478bbe96ec72fd9 -test/extractor-tests/generated/ExternCrate/ExternCrate_getExtendedCanonicalPath.ql 88e16e2bbef466cec43ace25716e354408b5289f9054eaafe38abafd9df327e3 83a69487e16d59492d44d8c02f0baf7898c88ed5fcf67c73ed89d80f00c69fe8 -test/extractor-tests/generated/ExternCrate/ExternCrate_getIdentifier.ql 6ce362fb4df37210ce491e2ef4e04c0899a67c7e15b746c37ef87a42b2b5d5f9 5209c8a64d5707e50771521850ff6deae20892d85a82803aad1328c2d6372d09 -test/extractor-tests/generated/ExternCrate/ExternCrate_getRename.ql 52007ef7745e7ceb394de73212c5566300eb7962d1de669136633aea0263afb2 da98779b9e82a1b985c1b1310f0d43c784e5e66716a791ac0f2a78a10702f34b -test/extractor-tests/generated/ExternCrate/ExternCrate_getVisibility.ql d2c13d0c19a5ef81ca776f03a7259e743adbfa66ef440f7d402cd97391ecdfc4 c678f6ac0a075c1e0adc3768a344dbeebcf0d13e30878546094777e3fcdf92bd -test/extractor-tests/generated/ExternItemList/ExternItemList.ql 7596986006fe1084815ad47b7e1cb77c4062a8c0432c2e6234c974b8632ead40 23c30ea01dba595e6e1bfa384f3570d32df4310ec2e8dbeb9a20afab9edbbfc0 -test/extractor-tests/generated/ExternItemList/ExternItemList_getAttr.ql f9560f441efc30b65ad88e3d3d323f40cbe3862c04a9c044fb2ca16edac4f3ca 18138daa285c73d40e5caa03791a6133b44429bff4e14cb1f223d487cf1648b4 -test/extractor-tests/generated/ExternItemList/ExternItemList_getExternItem.ql 2f20a6a4f41babb7340dd366a8145bb7cc9ceb75812af8a6316d076a4eac3428 4f613a73604dfe3f0d32343156e8ae30f4295186ac4ef2f733c772e96821ffc4 -test/extractor-tests/generated/FieldExpr/FieldExpr.ql bac5eb23ef2e6a69b3b898a486c2c498bd8a92233116224faaf9039225cf33bb 23a4a86b6235571b3af8a27ad88b4e163d9dc568a23b948d690662089c55e26b -test/extractor-tests/generated/FieldExpr/FieldExpr_getAttr.ql 609c4f1e275d963cf93a364b5ec750de8cb4790abdaa710cb533ff13ab750a4e 8c2aa84b1ea6ef40a7ee39a2168baf1b88323bfbc6b9f184e7b39631765a48dd -test/extractor-tests/generated/FieldExpr/FieldExpr_getContainer.ql 747b7de5f2bc23f526e96611401c897d063625912dc90544a4c57e2732c0766a 1528b998f6480bb1fd089c0115137c3a39fcfabc73d30917784a5d7ed5ef2990 -test/extractor-tests/generated/FieldExpr/FieldExpr_getIdentifier.ql 61fcbae168878f655bb35e8f1af8536c82acf02068bf782e5abdb7b780136ef9 5716c109cfbc996e884a7fbba8800cb770930060cc5c4d70c0bd434e37f2bbcb -test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.ql 277dc617dd193f414c777e85db358f6dc5ebd7c029ac321d92fc6f1036da6abf 2c1a245975852e010552b0e0157b0daac7137cb25aa059fa5cc3adb43544a52a -test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getAbi.ql c4a7519f9ab86de609a0155d41a0fd6cdfab6bbd7ffc41f3d5ef49565bdb5825 a0404f9a702f007d78f24291e80e939ce3ed2b603e436998dd1337f978499137 -test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getParamList.ql e097544fa9a1c173a996f323a90aa2b82aa6f12f30cd602fbcf0d4bfaf136311 6b5f8a4e4bee41343d075561005442c89b2b16ba547226f54c060c206b0b9e26 -test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getRetType.ql acd208155569ff3e9f4560f274560f1fb08585f18bfde74f3a011b469a492096 fc624e3dbe69fbda31ffcf86398213423cfabc4da33ae5099caed1f3751dad25 -test/extractor-tests/generated/ForExpr/ForExpr.ql 1f8b7a9bbe7a8c077864be64dc51d91ec267c4f34f1cad80fc79902cc0af04ff ae999fb206b04ed81fa08bdd7617cbfe932c5e4109285e10108613cdebba8f7a -test/extractor-tests/generated/ForExpr/ForExpr_getAttr.ql d3399b7453e10ff48efc79ec38dd9b6e06bb472b9c39f559242d003e7f63b1d9 ba37e6bf129e1c2f9094e093bbfbf41864f2cb7725a64334f9443270dafdbfdc -test/extractor-tests/generated/ForExpr/ForExpr_getIterable.ql 90a6540f8a91cfe3ed1bdde1e680786ce5a00edbb797a8fe70bcc0507c438fcc 65c67ad5890aa502628ee73efd26bcbd4597a8bdfc9839233ede9e26393638f8 -test/extractor-tests/generated/ForExpr/ForExpr_getLabel.ql ce90da75e040f448d524187357f3ceededba72407a84c1dc8e1498ed9788044d 0e23d43e0b3412fe90c6a5a4331f8da85eebe19e05b8c7d9710056857280797b -test/extractor-tests/generated/ForExpr/ForExpr_getLoopBody.ql 21657e470752bd83e05e176c2ca9371ba0f7ca3d1f97f764a42dff3caeb46ff2 0cafad7adf79ce90f475465b4a144e6529c6345504282b1ba3c6a12ff2e99892 -test/extractor-tests/generated/ForExpr/ForExpr_getPat.ql 1e0205a9b3a58fd2ddba49ef1b13a82c812519604d4c5bc02f23cbb6ce960016 d00efc63d714b1c76e4b0a67195d4e605f43a1e49d469f4f18bfa18d12280b63 -test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.ql 38fa18958dc8c1564abf0c38ebc7e76bc64904f9774a99e46504f903e9c19379 8384e007868981dcd8120f4ef52475ca99641a530a487cd9dc7eba98b9391060 -test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getGenericParamList.ql 33535c02c7000e89e4d4e4560499b9512455fae407e72e05615b38f9e950c6bf 35a6aa7de0f627fb96ca7f4f2134b060a820327a3de4970fa2790c8fbea28a2c -test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getTypeRepr.ql f24d02c57af9f4fb4f5c3058e236a8d9b4c4f6f2aff84e65497f693309bdf93e 1c93d6214ee0a89e2bd5d0e02800e29e8a14ebd7efdb6a62380edb97dc902def -test/extractor-tests/generated/FormatArgsExpr/Format.ql 6fa117eebe7ec99b71ffd10cf2cb2a21e67ab157f7c08feedabcc9bcc5390dce 9e7681c3bff55ed78d43ba6567f85bb98da6b166358951b1e972de1114750009 -test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql a521903c73f79e2616f7b8ef76790e11cbf432f8437825d52d117da232022b9e 4cb195d09ecb51e5bbd5c1c069ec1720f74fc074efc88b0f5c07cfc140167775 -test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getExpr.ql 7e1a7f902fb661660760d2a2f3f4cb6818a0c9f5b5061ede6ae80223774e4e09 8a50f64cba6f56320631206c801160201e3c98e74367bb035d689baaa9b4e411 -test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getName.ql 0e2f24388d516e14d195957163a2d5d97029c9e11a83ca71cf69e00ecc0bb2a8 dab2969f5ae6a15ec331c0152e7c116d1ee2c3d073b2d4da59ffbcb83404c65f -test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql 7b6f09b23d0dffa19b8dddf7f5cfe53068f8a8e5279e235c6d54e60616bd0822 47db74f035770ce708a00355acbfd4ae99152b7eb29cf28001985806a4efe5aa -test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getArg.ql 8f692486be1546b914b17abdff4a989dfbaa889bfa1fc44597f4357806c1a1dd da9fd237e31e9c8dd0ef0c3c968157815b87d3e8dcdfd74674c988ce2ab6d270 -test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getAttr.ql 1f9bf1344f942e65c3a3591b6ae04d3f5a2a1a65459bce0d976698de7d8a5958 02acb861d8ab4d32cf144c589881a888c3da5e2ade27e8c85fec3ae45219bb3b -test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getFormat.ql 02d3fad540700966488b24c62dcf200548154a2f10f578ee2995d8c4ebe32287 cccfe779b9804c2bb968a2b1f54da8a72393805c2c8b31d7160e8538f2f335f2 -test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getTemplate.ql c912ac37275cbe7b3b29607bed1a3190c80779436422c14a475113e1bfd91a54 ef90f67a9b952a38ce557b1afbf0b5ce8551e83ddfaad8309a0c9523e40b5ea7 -test/extractor-tests/generated/FormatArgsExpr/FormatArgument.ql 7a7ee3a3322b4af8cb3b525cfed8cc9719d136ea80aa6b3fb30c7e16394dd93f 5aa8a77d7741b02f8ceb9e5991efa4c2c43c6f1624989218990e985108dae535 -test/extractor-tests/generated/FormatArgsExpr/FormatArgument_getVariable.ql 7bd4ec3dde2ef0463585794101e6cc426c368b0e4ab95fbb1f24f8f0a76cf471 e7b01e8b21df5b22c51643e2c909c6fc4ca96fda41b3290c907ba228abe8669b -test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql 2793ba1ff52182dab992d82d3767a000928f6b2fbfdb621349cafc183f0d2480 c3777d03214f7feb9020de3ce45af6556129e39e9b30d083de605b70ab9a0a12 -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 2efae1916e8f501668b3dbb2237cda788243fdd643683eda41b108dfdc578a90 6ec948518963985ec41b66e2b3b2b953e1da872dcd052a6d8c8f61c25bf09600 -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 -test/extractor-tests/generated/Function/Function_getBody.ql cf2716a751e309deba703ee4da70e607aae767c1961d3c0ac5b6728f7791f608 3beaf4032924720cb881ef6618a3dd22316f88635c86cbc1be60e3bdad173e21 -test/extractor-tests/generated/Function/Function_getCrateOrigin.ql acec761c56b386600443411cabb438d7a88f3a5e221942b31a2bf949e77c14b4 ff2387acb13eebfad614b808278f057a702ef4a844386680b8767f9bb4438461 -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_getParamList.ql f888802ab00defb58de59cc39d1e0518e3884db7eaf845f39dfa55befdda58b2 ba0d1a07676f1c987b820a3d126a563ecf9a3d53ac1115b87a5af487a8a03c3e -test/extractor-tests/generated/Function/Function_getRetType.ql b3a1ab90c8ebf0543e5db6a415896e44a02f984321f49bc409aec2657298942b cdfa37772e5026febb19c9bcd0d325688b0fbf2f6e7bba424b73eca38b9b3e38 -test/extractor-tests/generated/Function/Function_getVisibility.ql 490b0a369c809a757d4835b97becf617b0399f16a63a2b06258c9a227d5cc415 25ceff15d3cd03821e1cb2c04cb8894bcd101eeca62b66b54d1751b628107818 -test/extractor-tests/generated/Function/Function_getWhereClause.ql 37a44ce54bfa7e54dda5db2e5662d0fd70ad6e2caa07ffdedd923a6492b4c6a3 2ced4e49d19cf717b9bf26859fa20f94713b6438e817c63c29ccaf34bb5f373c -test/extractor-tests/generated/GenericArgList/GenericArgList.ql 2d3e37da2c02a88ec8a1f99baebf352196f84c76c093c6f851d2c2d2ee941e9a 1cd884cfbaf59a2da080f50d966dc511243055fcfdd08a61bdfb10cc5701e1aa -test/extractor-tests/generated/GenericArgList/GenericArgList_getGenericArg.ql 7f92dc62d814c39bc50dfd46c359540261fe433fcad1752ea2fe139a05071183 9863976c97c1b7c07d5d18d8ffee798b1c1b0223784a61066ee2c9ffc46c4979 -test/extractor-tests/generated/GenericParamList/GenericParamList.ql 5d04af9be32c5f8bdf9ec679b0acbabd58ff01a20f5543a0c7d4fe5c5773ebba 7e86c4d3ed64b9ef2f928abd22b593d72131862321096722df5150b5202a4a28 -test/extractor-tests/generated/GenericParamList/GenericParamList_getGenericParam.ql 7866ed49ebfca1cc1fffeec797329a592f52b4431a5d259aeb7120a7f4961c44 16d89dd05d9db1b1997f801d9e5ba2dd9389d13a3031c730414f3daf5fb7b12f -test/extractor-tests/generated/IdentPat/IdentPat.ql 1e61edbdff611193bbb497eeba8c35043e1d1c6d3359903be58382b1c95e39e4 6f3a288cc12ee24a9ff21ca2fe544838d66f6481e60539cf7d4a473e628e3c3f -test/extractor-tests/generated/IdentPat/IdentPat_getAttr.ql 02607c8c616dc94152777390f912fc1e6bb420cc3ea687397e31392848942aa7 aeb10434577815d9a9f0f45a1a448656323f05d5321ff07d435ca4a449527d53 -test/extractor-tests/generated/IdentPat/IdentPat_getName.ql b96a3dbca1bade052cad294d95f95504665ad0b14c7f5f9f8083486d0ee64026 28c851703250c25b518024add1052d3204271db3f89eddf862d9a1e122ee6eb0 -test/extractor-tests/generated/IdentPat/IdentPat_getPat.ql fea604fee0db39f83a3dadb4583cb53123c63351282bc3387b84f90477be19cb ef2e620ade30e0225f6bf1c84982d1b8f949ee0c2ced5edbd00e5547e0a81a7c -test/extractor-tests/generated/IfExpr/IfExpr.ql 1401ba0ed88e27d24e5dc3911bfcc2aee3e0f3da30981866bfec2c71c238e6b9 2bd7abeb5ab28418eb4155206696356cc484ed83705a3a215e0d779b632a521c -test/extractor-tests/generated/IfExpr/IfExpr_getAttr.ql f5872cdbb21683bed689e753ebe1c49cded210188883a5f846ab79c0b2147e1b 6cb3a47778c3116ee95f7aeac0e2dd640bbf0c07f8b65236e9040e139f02e5fb -test/extractor-tests/generated/IfExpr/IfExpr_getCondition.ql 5bab301a1d53fe6ee599edfb17f9c7edb2410ec6ea7108b3f4a5f0a8d14316e3 355183b52cca9dc81591a09891dab799150370fff2034ddcbf7b1e4a7cb43482 -test/extractor-tests/generated/IfExpr/IfExpr_getElse.ql 8674cedf42fb7be513fdf6b9c3988308453ae3baf8051649832e7767b366c12f e064e5f0b8e394b080a05a7bccd57277a229c1f985aa4df37daea26aeade4603 -test/extractor-tests/generated/IfExpr/IfExpr_getThen.ql 0989ddab2c231c0ee122ae805ffa0d3f0697fb7b6d9e53ee6d32b9140d4b0421 81028f9cd6b417c63091d46a8b85c3b32b1c77eea885f3f93ae12c99685bfe0a -test/extractor-tests/generated/Impl/Impl.ql 3a82dc8738ad09d624be31cad86a5a387981ec927d21074ec6c9820c124dfd57 8fabe8e48396fb3ad5102539241e6b1d3d2455e4e5831a1fa2da39e4faf68a0e -test/extractor-tests/generated/Impl/Impl_getAssocItemList.ql cf875361c53c081ac967482fd3af8daf735b0bc22f21dcf0936fcf70500a001a 0ad723839fa26d30fa1cd2badd01f9453977eba81add7f0f0a0fcb3adb76b87e -test/extractor-tests/generated/Impl/Impl_getAttr.ql 018bdf6d9a9724d4f497d249de7cecd8bda0ac2340bde64b9b3d7c57482e715b cd065899d92aa35aca5d53ef64eadf7bb195d9a4e8ed632378a4e8c550b850cd -test/extractor-tests/generated/Impl/Impl_getAttributeMacroExpansion.ql 526d4651f2bc703ee107f72b9940a3062777645d2421a3522429bf1d3925f6a2 c08c3d7501552987e50b28ab12a34abd539f6a395b8636167b109d9a470f195e -test/extractor-tests/generated/Impl/Impl_getCrateOrigin.ql 494d5524ef7bac1286b8a465e833e98409c13f3f8155edab21d72424944f2ed9 b238ef992fce97699b14a5c45d386a2711287fd88fa44d43d18c0cdfd81ed72c -test/extractor-tests/generated/Impl/Impl_getExtendedCanonicalPath.ql 3ab82fd7831d22c7ec125908abf9238a9e8562087d783c1c12c108b449c31c83 320afd5dd1cea9017dbc25cc31ebe1588d242e273d27207a5ad2578eee638f7e -test/extractor-tests/generated/Impl/Impl_getGenericParamList.ql 88d5cd8fd03cb4cc2887393ee38b2e2315eeef8c4db40a9bd94cf86b95935bdd 9c72828669ccf8f7ca39851bc36a0c426325a91fc428b49681e4bb680d6547a9 -test/extractor-tests/generated/Impl/Impl_getSelfTy.ql 2962d540a174b38815d150cdd9053796251de4843b7276d051191c6a6c8ecad4 b7156cec08bd6231f7b8f621e823da0642a0eb036b05476222f259101d9d37c0 -test/extractor-tests/generated/Impl/Impl_getTrait.ql 3319d2649b4a7f3c501c8e16a1a3e5d74057c94c02772d33f19b4030daf934d2 3acca9d040c3f1d90ed26b159dac71625bea689221e180c856a75c2bab95d286 -test/extractor-tests/generated/Impl/Impl_getVisibility.ql 2497bb8c867297e4c398473ee7f0ec3693f7e894b84819f6336d69bebcd3af5f d8be2e9535b06471fa873af13b0223cc79d30d63a3f5e27a0f64874d60dbf07d -test/extractor-tests/generated/Impl/Impl_getWhereClause.ql 269d4b0639db28a7535b2d745b11cda0885da7369f9cf4c4973a6ccc20c9960b c4baf89f68a173c1415baf90ddd9195e29784997a5ce45a36171485f6bb44c03 -test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.ql 309d5bed6a2bee9f728727338401c9c48841bd31d917dabb837bd88b78289ece 223060ef89358483a7aafed567a7b657d37eee023c49032aa55ad08a17c9e31d -test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr_getTypeBoundList.ql 5e3561412a8f990e7f32fb99d40b82690a9281c850226fd301b9f656f7b9ad2d 4e23068d2635056a74f40bdfa809878e31a8172086f115985ca027055e8317b8 -test/extractor-tests/generated/IndexExpr/IndexExpr.ql 0a93213b755faaab84b7eccb5b8f3d8f8ba87910ad661f194e06917722dbf6a8 46497b3e92523c6c015373fe122678846618b45412b903323ff3644e37f2c52d -test/extractor-tests/generated/IndexExpr/IndexExpr_getAttr.ql 360dbf8e7d69c691a1f4c9bb0aaa7860a6b0f09b21a1d1a6db908ec7a7d7561a e50b942f7592cb944f607bd64f8e4d4abac30bdc53f73b4dc851e689dce61be9 -test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.ql 841cacda1a1cd976229f2bd18dcee4315506105c2cb3789c30a7539fd6d49d0c 37a92e9151f10cf971b24f5af6e2ca6dccf87b6e0e0b2237a0564f97719a0d66 -test/extractor-tests/generated/IndexExpr/IndexExpr_getIndex.ql 1aa934524dd44009297ef89a657d1ba99304f6590514a0b0b51b2769780f8c20 a42f25640f0331318bbc8f44af133095580b8947309628511bf0b3675149506a -test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.ql a9c92ce8e20e427de3651fe59e6cbbe1b7efa8db9ef9d836da254cf07509e4ef 5ee2cb6ffcdc1fd2a7c190b1a98bb7369c114d837f7e232d425563255b71ce3c -test/extractor-tests/generated/ItemList/ItemList.ql 6c1c8ef6da0fce64b1a5edbec98fe18910b0ecc390d1219cc08124ab51b13bf6 e94e5c8d1639c1ed2ba543a521a57a026e15ea6b339b6c6d4409dd30ae67a51f -test/extractor-tests/generated/ItemList/ItemList_getAttr.ql 24d7a764d4f8997bb77e93c21e6e5ba7256ed11657bd6479bf42458b8e89b52f a6b4df0cc6bf79ab3f98c93eabbbd3aaf11ec2506a0e894fa1f51be90191d71c -test/extractor-tests/generated/ItemList/ItemList_getItem.ql 6e129499f77f7dba287b2b31b58fe6d834559e27214797807bb29b2a401f1f7d e406c07421dd6382ea73308d9124c30e971591c9e4c797b3115955f22c93589f -test/extractor-tests/generated/Label/Label.ql 6a92a27d615dd9c380cb9d889eecf827fc3a26f4bef65c2374e5ffbd6a7ce6b3 a344e26bc6ef835f2fa818413ba518c23f956750f9a2232acb1ad77aab9df446 -test/extractor-tests/generated/Label/Label_getLifetime.ql 3d6ddc3b44182e6432e938d5c1c95e0281575e320d517e431f6bad7748efb93e 56d07e485cb5e4263443eb5a0d62d7d4456bb0c2748331b371e519bfe14d3b81 -test/extractor-tests/generated/LetElse/LetElse.ql bdf2b17d5efe6b9cb5bb4fcfe854a5fcd72443d39ae1e7981d2a0459c481e394 a14a611d0783ae38d631600c2bde7409f4e739ba2f284314b90ec9a21c23ab3a -test/extractor-tests/generated/LetElse/LetElse_getBlockExpr.ql 32c21ad843884944738a735f01e272032a347d1860fa6d27d17652c549f941b0 2bfd8a5e3d42eb1c73eb679ada847dd29f2f0657a0ad8ef15da126e54fff5ef5 -test/extractor-tests/generated/LetExpr/LetExpr.ql c76a0c4aaa73f4064207dacc8d2c649d3a5f8046c0f6e1aae985d2402a342e73 c5abe3845d4975d05c98ee6496732da384cdaca60ed49235776338e6dbe80b3d -test/extractor-tests/generated/LetExpr/LetExpr_getAttr.ql 911b143afebaa0a487b13d533f089c5b0eaf336a44a4cab42147c284338484ba 625c91fb6d8c2e3a9f13e5679cc0cd29329c6c2b213d2e1191e23db2b65841dd -test/extractor-tests/generated/LetExpr/LetExpr_getPat.ql bc0363f77bc2ba583619ab7d309293ace0ed6a851bfb9b886f75729f96eb40a8 bc0cd9233b7904d8cc7f9021377120f5f4bcc5c7aa28b1b55f17bc738c434d78 -test/extractor-tests/generated/LetExpr/LetExpr_getScrutinee.ql ee33d3bbaf0ee7cdf9bd7b800e9684b5ac7ce8cf1939378cd460cb0c5ea11742 5d69e727b3e9d1ab4ce9eef702a7b1911515469625056bce87fac1d27ba863e6 -test/extractor-tests/generated/LetStmt/LetStmt.ql 9f8cf125eae91b190e6f534541b5fb0a0ee2391803266e9d02ef5d605bcfed81 e5cb251e9fd1a0d22553fb9180f95c697d780f51f93121d2fd654210477641df -test/extractor-tests/generated/LetStmt/LetStmt_getAttr.ql 68f69c4c054514140c0f0833a170e9f3facf950bd7af663ac9019f6c88ba0ea7 ca54d25cc052289458c7e34e40f0304bca2c412cecfb407f31279262bd74c15a -test/extractor-tests/generated/LetStmt/LetStmt_getInitializer.ql 6a5f0eed3ce3e8cbc57be6ec2b4eed732f00e084108d21a61d9ab28b65e494ca a48b426b97a6c347ad04fe2e592cd25b5c66b2a6a299cbf8c0da03e14304fd70 -test/extractor-tests/generated/LetStmt/LetStmt_getLetElse.ql 21f8f1cbf725399da80c24c4d3ca27072758b76cbdfd726a7f1e851ea12e58fc c01a4eda22088184357288910fa41692f52486d60fbf7c0bc3b5b01f8f67fe07 -test/extractor-tests/generated/LetStmt/LetStmt_getPat.ql 978e4f7861c7b03e6f2a3a2f7ae82e9b72bb5ef000f111127cb583a04ea6f971 3c92dbb765dfb01c290413e538290b0b2bee5a83bcfee383d081f56202a784fa -test/extractor-tests/generated/LetStmt/LetStmt_getTypeRepr.ql 8bf8a99450b27bc97db90a323b19ab13cb266c0b6c4e7d0ccda80952f8f7987c 70227445fb87ea1afae10ced988bdfeff4a1edd3d9d787367a17ee121d31db0a -test/extractor-tests/generated/Lifetime/Lifetime.ql 07b093285b08fddc149cbce3047700072874efb29d55e591c86d53e6432a10a7 29437b1b20f6321870837c12348d165729312e164ac4fac1029c1000e48d311a -test/extractor-tests/generated/Lifetime/Lifetime_getText.ql 7b06b940145c3d1a1bb3aff67e8e106f902a737edf61ed91577cf3ca94606936 c70d6186c500fdf6bc9d9d028cf3ec093914e20ba9547a391203ac8c5df1d727 -test/extractor-tests/generated/LifetimeArg/LifetimeArg.ql 4a0c2166d9ba79c99d6be430a28f79d3e7e971dcd96777e02c3fec56cec3ffeb 158bbf0f06ad36c81704d11f6318f80a0f7dd9c1a71409980ca60cac49dbe9c4 -test/extractor-tests/generated/LifetimeArg/LifetimeArg_getLifetime.ql 050015eb1130bab1ff6fe7df6915a634e66e27f2c90609026aadb4287fcc0c3f e4f63abbbb7668aa36de0caa2bb38fdbb4ff198aafa312ab12c9667eea67f04e -test/extractor-tests/generated/LifetimeParam/LifetimeParam.ql 4848a1c83b138e3842a7dbd0edb416b1ea2985b77b92d45b6d02b9f8bb997b1d 75fd2beafd2076121edb435996743e4d32ee58f6999205c9dadcb84a7fa80860 -test/extractor-tests/generated/LifetimeParam/LifetimeParam_getAttr.ql d1ff2d3cd34bfc0f363bcd7638d4b9fdcc604c6a9c74da22359df1877a0cb26d 57b7654249890266ecfc9a325c27da84b8b3cf21666a74f38e6439ed7a0596f9 -test/extractor-tests/generated/LifetimeParam/LifetimeParam_getLifetime.ql 893879293bed44e7a259c7e501f8301b92be0e00665c0049cddfc7d027790284 ee74064414e6ec1299180aa00851b5f323053bf4bbc2c5db6c0bedbcc1388411 -test/extractor-tests/generated/LifetimeParam/LifetimeParam_getTypeBoundList.ql b1fb7f8e9fff999f7b0508951c089b2d6588a0960f172b67e7e111e64d608d49 fdfdd3a159033fca0549d6db97d681114e83f630982e72abbbf7cf1b2d77b4e9 -test/extractor-tests/generated/LiteralExpr/LiteralExpr.ql a5644e5cf8b03121a1bdee793083cfe27286a7ac67d6ab5f1733b1fa81c5b38c 711d44afb1d0fba47f355563a040f4b21ca63a1c59a73d9b6510715133fee5b3 -test/extractor-tests/generated/LiteralExpr/LiteralExpr_getAttr.ql 6e76da2bb7858f493641f91216ea28f22dc5825931841327e34330f11d20c8b3 3f10a510944ea049b636ffc2c6223c0a15fd9b528ada7ffce54fb70637640768 -test/extractor-tests/generated/LiteralExpr/LiteralExpr_getTextValue.ql 7049fec0bbbf0e048af1ff318f42f43d0f8a7354a5638dc21174c4ea725b54ce 2edc94cc0a7f58ec9808b63ddb4d20a3907c88e50bd9ffb14f0281b433f5621b -test/extractor-tests/generated/LiteralPat/LiteralPat.ql 3d3db6cad0eb13f84b69efa24a9f9a32d35c62582274d2751cc3ac54dca3b538 7feb64af87546ea64c139c61ac20176a99ad40b9949b361742a424b164fe6d54 -test/extractor-tests/generated/LiteralPat/LiteralPat_getLiteral.ql 2cb03a22220e99237d4f3cd94d5090757cd6e57df708d32e80bca3964507651f 4dd9a6c1e23ad9851d9aa8c42c79535f7a2c7224bbaaff286eac7fd04b39c6f0 -test/extractor-tests/generated/LoopExpr/LoopExpr.ql 37b320acefa3734331f87414de270c98ab3309fe069d428550738197e3498a8c e744c25640b5c46aab53ce5114b789e13319572b0c99d0f2bc3c177849e61541 -test/extractor-tests/generated/LoopExpr/LoopExpr_getAttr.ql d557c1a34ae8762b32702d6b50e79c25bc506275c33a896b6b94bbbe73d04c49 34846c9eefa0219f4a16e28b518b2afa23f372d0aa03b08d042c5a35375e0cd6 -test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.ql 0b77b9d9fb5903d37bce5a2c0d6b276e6269da56fcb37b83cd931872fb88490f c7f09c526e59dcadec13ec9719980d68b8619d630caab2c26b8368b06c1f2cc0 -test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.ql 0267f54077640f3dfeb38524577e4a1229115eeb1c839398d0c5f460c1d65129 96ec876635b8c561f7add19e57574444f630eae3df9ab9bc33ac180e61f3a7b8 -test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr.ql 03144a5448de91801037f3c1e6d29a230e18f9c077c718e5c3801a31cf593977 9a035e3f119b0e0c88fc4c775a032220a01680fbea2cc7f8e98180205b9bb8da -test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getStatement.ql 415a762768df2c850d21742daab5e53cd248dc3dc9652414b99737f1d5c5824b bdd2ba6c004ada34f26dac3bbc7abcd5fe250c77a97faa7fd71fb54a0dd4743a -test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getTailExpr.ql 8f6604c09e85da1a19b0f87340cebeb1cdf4e94b208305c7393082d88cf0b032 5081d9db5b38454fad1daad2f8972661bd2fb4cce2c815a560a15f8a7b9cfcee -test/extractor-tests/generated/MacroCall/MacroCall.ql 992e338a9c1353030f4bb31cae6ae4a1b957052e28c8753bae5b6d33dbe03fe9 863fbfd712a4f9ed613abb64ecb814b0a72b9ab65c50aa0dc5279d319249ae6a -test/extractor-tests/generated/MacroCall/MacroCall_getAttr.ql c22a2a29d705e85b03a6586d1eda1a2f4f99f95f7dfeb4e6908ec3188b5ad0ad 9b8d9dcc2116a123c15c520a880efab73ade20e08197c64bc3ed0c50902c4672 -test/extractor-tests/generated/MacroCall/MacroCall_getAttributeMacroExpansion.ql 60cf2c12ec7fc3b25ed2a75bb7f3da5689469a65a418ba68db0ab26d0c227967 7f71c88c67834f82ef4bda93a678a084d41e9acb86808c3257b37dfc6c2908d2 -test/extractor-tests/generated/MacroCall/MacroCall_getCrateOrigin.ql 3030e87de6f773d510882ee4469146f6008898e23a4a4ccabcbaa7da1a4e765e a10fe67315eda1c59d726d538ead34f35ccffc3e121eeda74c286d49a4ce4f54 -test/extractor-tests/generated/MacroCall/MacroCall_getExtendedCanonicalPath.ql 553b810f611014ae04d76663d1393c93687df8b96bda325bd71e264e950a8be9 a0e80c3dac6a0e48c635e9f25926b6a97adabd4b3c0e3cfb6766ae160bcb4ee7 -test/extractor-tests/generated/MacroCall/MacroCall_getMacroCallExpansion.ql 1416adaedf6a11680c7261c912aa523db72d015fbfdad3a288999216050380a6 10b87d50f21ac5e1b7706fe3979cab72ecb95f51699540f2659ee161c9186138 -test/extractor-tests/generated/MacroCall/MacroCall_getPath.ql 160edc6a001a2d946da6049ffb21a84b9a3756e85f9a2fb0a4d85058124b399a 1e25dd600f19ef89a99f328f86603bce12190220168387c5a88bfb9926da56d9 -test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.ql 1cbf6b1ac7fa0910ff299b939743153fc00ad7e28a9a70c69a8297c6841e8238 570380c0dc4b20fe25c0499378569720a6da14bdb058e73d757e174bdd62d0c0 -test/extractor-tests/generated/MacroDef/MacroDef.ql 13ef4bdde6910b09cefe47f8753f092ed61db4d9f3cece0f67071b12af81991c a68091e30a38a9b42373497b79c9b4bde23ef0ab8e3a334ff73bfdde0c9895b2 -test/extractor-tests/generated/MacroDef/MacroDef_getArgs.ql 61f11d6ba6ea3bd42708c4dc172be4016277c015d3560025d776e8fef447270f 331541eff1d8a835a9ecc6306f3adf234cbff96ea74b0638e482e03f3e336fd1 -test/extractor-tests/generated/MacroDef/MacroDef_getAttr.ql 0a30875f7b02351a4facf454273fb124aa40c6ef8a47dfe5210072a226b03656 8e97307aef71bf93b28f787050bfaa50fe95edf6c3f5418acd07c1de64e62cc1 -test/extractor-tests/generated/MacroDef/MacroDef_getAttributeMacroExpansion.ql bd076cf1bab968a1502467652d73259d1ce0fe7f8af73bdf914e2ed1d903adf7 4673df049b36082be9a5b325f6afa7118b930bccdb5689e57ff7192b21d07345 -test/extractor-tests/generated/MacroDef/MacroDef_getBody.ql 7b350f48e6f208d9fa4725919efd439baf5e9ec4563ba9be261b7a17dacc451b 33f99a707bb89705c92195a5f86055d1f6019bcd33aafcc1942358a6ed413661 -test/extractor-tests/generated/MacroDef/MacroDef_getCrateOrigin.ql 6c46366798df82ed96b8fb1efeb46bd84c2660f226ff2359af0041d5cdf004ba 8ab22599ef784dcad778d86828318699c2230c8927ae98ab0c60ac4639d6d1b5 -test/extractor-tests/generated/MacroDef/MacroDef_getExtendedCanonicalPath.ql d09b262b8e5558078506ec370255a63c861ca0c41ab9af3eb4f987325dadd90c cd466062c59b6a8ea2a05ddac1bf5b6d04165755f4773867774215ec5e79afa3 -test/extractor-tests/generated/MacroDef/MacroDef_getName.ql 6bc8a17804f23782e98f7baf70a0a87256a639c11f92e3c80940021319868847 726f9d8249b2ca6789d37bb4248bf5dd044acc9add5c25ed62607502c8af65aa -test/extractor-tests/generated/MacroDef/MacroDef_getVisibility.ql d858ccaab381432c529bf4a621afc82ea5e4b810b463f2b1f551de79908e14e7 83a85c4f90417ab44570a862642d8f8fc9208e62ba20ca69b32d39a3190381aa -test/extractor-tests/generated/MacroExpr/MacroExpr.ql 69445cf24f5bec5c3f11f0ebf13604891bb2c0dffe715612628e5572587c7a6c 5434db79d94e437c86126d9cf20bf1e86e5537f462a57b9bf6b22a2caa95cc40 -test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.ql 8859743e23b987225a6a1933054a1ed8f5f1442b61a769599e2efd143f4feb9e d2d336135ff4d2ea65e79430dee8d0f69f9d7818a674f5446903d986f3948b92 -test/extractor-tests/generated/MacroItems/MacroItems.ql 876b5d2a4ce7dcb599e022083ff3f2d57300bcb0ea05f61069d59ad58353ca69 61ea54d4633ef871d3e634069e39fbb2545f7dc2796fa66f8edbacd4e0aa4ef5 -test/extractor-tests/generated/MacroItems/MacroItems_getItem.ql 53fc2db35a23b9aca6ee327d2a51202d23ddf482e6bdd92c5399b7f3a73959b1 63051c8b7a7bfbe9cc640f775e753c9a82f1eb8472989f7d3c8af94fdf26c7a0 -test/extractor-tests/generated/MacroPat/MacroPat.ql d9ec72d4d6a7342ee2d9aa7e90227faa31792ca5842fe948d7fdf22597a123b7 74b0f21ef2bb6c13aae74dba1eea97451755110909a083360e2c56cfbc76fd91 -test/extractor-tests/generated/MacroPat/MacroPat_getMacroCall.ql 398996f0d0f2aa6d3b58d80b26c7d1185b5094d455c6c5c7f075f6d414150aa6 b4662e57cac36ed0e692201f53ba46c3d0826bba99c5cc6dfcb302b44dd2154b -test/extractor-tests/generated/MacroRules/MacroRules.ql 3c88db0c2ba65a1871340a5e940b66d471477852a1e3edba59a86234b7a9c498 98778dd95d029e4801c42081238db84a39e3ed60b30932436ea0fb51eedfcda1 -test/extractor-tests/generated/MacroRules/MacroRules_getAttr.ql 7de501c724e3465520cdc870c357911e7e7fce147f6fb5ed30ad37f21cf7d932 0d7754b89bcad6c012a0b43ee4e48e64dd20b608b3a7aeb4042f95eec50bb6e6 -test/extractor-tests/generated/MacroRules/MacroRules_getAttributeMacroExpansion.ql 461651a72e5f860864ed4342973a666efa5b5749b7fcb00297808352a93f86e0 8b18a507753014f9faf716061d2366f7768dee0e8ea6c04e5276729306f26ce0 -test/extractor-tests/generated/MacroRules/MacroRules_getCrateOrigin.ql fccedeee10ef85be3c26f6360b867e81d4ebce3e7f9cf90ccb641c5a14e73e7d 28c38a03a7597a9f56032077102e7a19378b0f3f3a6804e6c234526d0a441997 -test/extractor-tests/generated/MacroRules/MacroRules_getExtendedCanonicalPath.ql a0098b1d945df46e546e748c2297444aaccd04a4d543ba3d94424e7f33be6d26 3bab748c7f5bbe486f30e1a1c422a421ab622f401f4f865afb003915ae47be83 -test/extractor-tests/generated/MacroRules/MacroRules_getName.ql 591606e3accae8b8fb49e1218c4867a42724ac209cf99786db0e5d7ea0bf55d5 d2936ef5aa4bbf024372516dde3de578990aafb2b8675bbbf0f72e8b54eb82a8 -test/extractor-tests/generated/MacroRules/MacroRules_getTokenTree.ql 7598d33c3d86f9ad8629219b90667b2b65e3a1e18c6b0887291df9455a319cab 69d90446743e78e851145683c17677497fe42ed02f61f2b2974e216dc6e05b01 -test/extractor-tests/generated/MacroRules/MacroRules_getVisibility.ql 5306cc85f470d21ebcbe6e98436334b0bf5ba819a0ae186569ba7e88c31636c6 fcbf5c54e5a904767a6f4d37d853072aa0040738e622c49c9a02dec8739d6587 -test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.ql 49c0dbf587f84023025f90d73d54f5320993f4db7dcc90e21eda53fc0b4d1f57 0a0712171db935c549a9cfddb6721c2c188c584a67be85409ffc3facf6c9a935 -test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr_getMacroCall.ql cae14884e549c74be4b600a264eb236993d7b8ddd86589a9116ee2ba18f181e1 1d4ae2d8ed9ce0d7635a2ae447b41a328e59e97c6df7827ee7d5cf62343e86e1 -test/extractor-tests/generated/MatchArm/MatchArm.ql 512aa404c94ba40b859564f07e9dffe6a5e687fafb039556e9145f4f3742981c 529f96e38cede8a26054f8981d4ba1d189c17d14d0f92d622eb20acd8f3d7e5d -test/extractor-tests/generated/MatchArm/MatchArm_getAttr.ql 4faf7a542702d13283262be7cb2e1cc3c862bc2e1953a460fd2bb5e75a7e9b1e 1d43f4d2a580d0ac309dd18a45a9693ab92107cafd817ccdb26fd7998728edf3 -test/extractor-tests/generated/MatchArm/MatchArm_getExpr.ql 116f02bef8650d27784a8657208e9215b04af9139d19a54952c6ba2523770f4b e0677aed6d53148e120fd0b03f4bc4fa108c6dd090f605c87b2e3ba413fb0155 -test/extractor-tests/generated/MatchArm/MatchArm_getGuard.ql 54e2c2805d54b353c9e36258ed750189846cd422dfb476c6eb52301860d7ff13 8fd408a3e9c6e5c138860144ba0f69dc2099a7a062e3bdf7d324c09df7d132f3 -test/extractor-tests/generated/MatchArm/MatchArm_getPat.ql b346bca229226414b32acc3d8ab0ae26647563fd79e1c434d1ef8d14bda2d65b e72eb69bb243c39fa997d17bb7060e2f82f2bb33d11a58caaae48f8372996704 -test/extractor-tests/generated/MatchArmList/MatchArmList.ql 14b5e110d48e2b77c85b7a188262e6a98300e0d4d507bb7ed9179c5802251dd6 4d091f06b12fef0fffe1c80a10f74438d8068f2fa09c50d5e240b6d140e60d90 -test/extractor-tests/generated/MatchArmList/MatchArmList_getArm.ql 4781d002538a92b7f40fb0ec3d61aeedb6348341ddc354bbdd3ff61b74d59767 ae0da9497a30ce006e03bdb70e0ee24b685df529ac15a7d99a6869b5f7d7b371 -test/extractor-tests/generated/MatchArmList/MatchArmList_getAttr.ql 4d7e6d152d2dbeb4c9f594becabea27d3b25fecbde40d791a2907c69cc0c9631 4be9be658bb22e1b764c4ebc8d6b99bf50fd939f35ea44fbb869056c14632bd4 -test/extractor-tests/generated/MatchExpr/MatchExpr.ql 2966bf0507c0d45db1b933442ce8f1c4e0a9d4212c53a768791665cd2e0927f0 8af3b87528b6dd4cd3ff4fc6d2d389b1a743f979d9ccacd0aff134b5a4376118 -test/extractor-tests/generated/MatchExpr/MatchExpr_getAttr.ql cb8057372dcf24dfa02896ebf4e60a0b757dc4742b94011edc38f5b898ed4d25 6809695c2d3ac3b92c06049c9b920e8c0e99ee1998a11a7f181f2b0ceb47c197 -test/extractor-tests/generated/MatchExpr/MatchExpr_getMatchArmList.ql d97055bcb0431e8b258b5ecdd98aa07cb24ece06b0cd658b697cd71da4ede8fc 5e9c03b2665ef6b2af98897996abb2e0a9c18d54eb64588340b8efbcee9793bd -test/extractor-tests/generated/MatchExpr/MatchExpr_getScrutinee.ql 0bfeb8f903fb23356d50b7edd80377f4a67045010ffbed04c835191b5bd62820 7dc8e38730ad72b4cea91c1f023cdbe83057053e8dbd077ff925c59e92744498 -test/extractor-tests/generated/MatchGuard/MatchGuard.ql 23e47ec1b13e2d80e31b57894a46ec789d6ab5ed1eb66bdb6bba9bd5ae71d3ef 7302f4a93108a83228e0ebd5b4a1bc6bccc1f6f0f3272054866fa90378c0dcc4 -test/extractor-tests/generated/MatchGuard/MatchGuard_getCondition.ql 8a79dd46798f111f8d0d5a975380b5cebe5e337267752b77b3718b268ba2773d 6691d8fb483f64fc7e3ad3f46e3129e0a1184d7beb9f83a1000acdbb081c8b5e -test/extractor-tests/generated/Meta/Meta.ql 16f163f00ba2bbaa0a8c6f3f6710c860a8f61d02d43321c78e05a10a3606e39b ba982c6bb93ddb4fc2c44d24635bd487128a5b1d1f885214044c989a21f4d05a -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_getArgList.ql 180e0b1715f5cd2be0de01bff3d3a45594b495b8250748d40ff7108d6c85923d bdadcdbecca5891287a47b6dd6b2fda62e07457718aef39212503ab63bc17783 -test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getAttr.ql 2ce876a04a159efce83b863dffc47fbb714b95daea2b91fa6fbb623d28eed9ec 7bca1cd0e8fbceec0e640afb6800e1780eff5b5b402e71b9b169c0ba26966f96 -test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.ql 655db9a0501b1ef20d604cc4cd9d708371781291443e8dec97b70ec2914601d2 2fc7df0eca22dcef2f9f5c86d37ee43452d372a4c0f9f4da0194828c82ba93e0 -test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getIdentifier.ql 13c08e67eda07ea9ddc6f22ab4fc7773185c0b700ae11d57b62e0c78a4dea2e3 cb812e282a77fa29c838ba939d342a29c360c263c5afa5aac4ad422a8176869b -test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getReceiver.ql 77407ac956c897ff7234132de1a825f1af5cfd0b6c1fd3a30f64fe08813d56db d80719e02d19c45bd6534c89ec7255652655f5680199854a0a6552b7c7793249 -test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedCrateOrigin.ql c22504665900715e8a32dd47627111e8cef4ed2646f74a8886dead15fbc85bb5 d92462cf3cb40dcd383bcaffc67d9a43e840494df9d7491339cbd09a0a73427b -test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedPath.ql 9e7bbb7ed60db49b45c3bdf8e01ec58de751889fc394f59ac33f9d6e98200aa1 c055d877e2ff0edc78cce6dd79c78b2881e7940889729cbb5c12e7029ddeb5a3 -test/extractor-tests/generated/Module/Module.ql 9e75a0f22f1f71eb473ebe73e6ffc618cbb59ea9f22b6e8bc85d3fb00b771c52 3eb5201ef046259207cb64fb123a20b01f2e742b7e4dd38400bd24743e2db1ad -test/extractor-tests/generated/Module/Module_getAttr.ql b97ae3f5175a358bf02c47ec154f7c2a0bd7ca54d0561517008d59344736d5cd f199116633c183826afa9ab8e409c3bf118d8e626647dbc617ae0d40d42e5d25 -test/extractor-tests/generated/Module/Module_getAttributeMacroExpansion.ql 9f7c04c405d25448ed6d0e7bf1bb7fea851ea0e400db2246151dd705292ae3a8 f55d86901c7cf053cd68cb7ceb4d6b786834d2d35394079326ea992e7fbc9ce1 -test/extractor-tests/generated/Module/Module_getCrateOrigin.ql ff479546bf8fe8ef3da60c9c95b7e8e523c415be61839b2fff5f44c146c4e7df b14d3c0577bd6d6e3b6e5f4b93448cdccde424e21327a2e0213715b16c064a52 -test/extractor-tests/generated/Module/Module_getExtendedCanonicalPath.ql 55c5b633d05ddbe47d324535a337d5dfed5913ab23cdb826424ddd22009a2a53 ab9e11e334e99be0d4c8d2bd0580657211d05feeeb322fbb5400f07264219497 -test/extractor-tests/generated/Module/Module_getItemList.ql 59b49af9788e9d8b5bceaeffe3c3d203038abd987880a720669117ac3db35388 9550939a0e07b11892b38ca03a0ce305d0e924c28d27f25c9acc47a819088969 -test/extractor-tests/generated/Module/Module_getName.ql 7945dc007146c650cf4f5ac6e312bbd9c8b023246ff77f033a9410da29774ace 9de11a1806487d123376c6a267a332d72cd81e7d6e4baa48669e0bb28b7e352e -test/extractor-tests/generated/Module/Module_getVisibility.ql bdce43e97b99226f55c84547a84d99b44f5d1eac757d49bcc06d732e0fb0b5a8 a482c18851286fb14ec6f709dc7f3280a62de8c3d59c49ba29d07bd24cf416cd -test/extractor-tests/generated/Name/Name.ql 0a78cd5c0c703ff30f8e3253b38f9aac98a564b22c02329d525cf101d8ac3fda 2fd83327063e6ab57dcae2dc5103c2965d7a09f6a10d553ea336cf594d32032c -test/extractor-tests/generated/Name/Name_getText.ql 5d223baad356308abc45cdce9ca9201d674de1cc1e9fff7ef55dd96082d59d99 6488ccc102ed4f0a2e1c5cef3f8b1adbe00d52c961573f1a16eca66af31e2d14 -test/extractor-tests/generated/NameRef/NameRef.ql f73d49d5c176cd7589f6ca148b0d0cc3d1084e27686910058adfd5764ef5767d ebff67ed3b325b01277e25baa1ad588e633ef8ce63209a72305465a0dc8002d1 -test/extractor-tests/generated/NameRef/NameRef_getText.ql 5212dfc1b65c0f724a72f5bffd82268d1f8ae287d3d61797673c29fd70d7ebd6 75c343614925c55a18917c07ef62af08c97c9cc714f627d1a27b9f26158a0bde -test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.ql 6db9820e62fe7a7395aafb6966043bd24d89833fe59c825ebbd4a2504d58bcc3 85dc1500ba751a4b3fa432fe5f5cb0c104a2179ac2e73620ed9ff08552cfbba1 -test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql ba10ed5147469564e632f9444176fffeb1accdb14ad635a3dee76044e5782eca 3f894c494421d49d3f8f2593bccd261c9defa768bd252705d4a3671ca8e8255f -test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getAttr.ql a12e828c85577184a41b255f54b10d4a654b57703074a7ebcfde2d43a358955f bc2590e76b60a3ddda9cc10903c68d07c6af19a593c8426d108a2a6520304145 -test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getField.ql 6d729fb91deacb1f620df5cbc86473183664e81849958624195da883c410a707 f3374c3d7306699d1f9d1c6c5788ee7c5a17103345bf53847be9d94e5fb9f14d -test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getTypeRepr.ql 27f2d94699140805169a0c18068d78e10bddadb8db243bcb8957677c9d477935 4fb96f2f7a6e7217218adeb5069a7d4da548c6ac650683773bbff4fba32a99da -test/extractor-tests/generated/OrPat/OrPat.ql 49d881b384acaf68fa79de46da997cacab3e75467641f61150908f4112c47fa4 5d721da23be44e79d7b8a0dd475119836828d6a1edaff2c55decea8da83e65b8 -test/extractor-tests/generated/OrPat/OrPat_getPat.ql d56b78287cecebacb25249380647500387e0d9e28be20034b8a12406a999a7c4 cba7bb60afaaed4333ea5ff6d3850fb44a8b42edee67d86fd16df85938454269 -test/extractor-tests/generated/Param/Param.ql 0a2375e240422ced3e7e6f16da3f538501bc214d0713cf5415a91b8f9f4554f8 12b286e5622e693dfd0a614b96c5d4f0a7dad3dbd033f78ad7318d1bd85a5eaf -test/extractor-tests/generated/Param/Param_getAttr.ql e1dcf86540fd2971ced34a33b2959f001c3f654914d82e576caa4534b80fbfbf 987a826bf6dcd25c3426edb603a22f6caa030c82c1cb0e9e11062fdbfed23030 -test/extractor-tests/generated/Param/Param_getPat.ql 0c448e8ba8bf3432be08b5eb4a052aa19cccf0eb4596a3239481401dae9d2dc2 c943d4da36e1e734c1a012f092b2f597cb389a7ab33d5371ff8ee9c93e115ffc -test/extractor-tests/generated/Param/Param_getTypeRepr.ql 151a653a66722ec782af13980638b4156968a2bf1ee9221e983695712c39482e 597dd1b45078711d1ff2a5d3b0282d571b4d76d0d2e410c79a48ff9d5c8f80f6 -test/extractor-tests/generated/ParamList/ParamList.ql 4d879e6a6db24fb8d7f935c2dd332075ca4b2de41cc841aafec7e0b6b77f2cf3 b7e2357b77961f0f8315d3c9e8fde8578373ecfb9efba892416b31d7c168bb26 -test/extractor-tests/generated/ParamList/ParamList_getParam.ql dcaabf654941bf9afe50df3a5c61ef0eab50830a436eede98e30778bfd244a09 63cc7f529f96d5016804f50a385d8a736a534475a6340a8c2f51de99b54206a1 -test/extractor-tests/generated/ParamList/ParamList_getSelfParam.ql 310582a9921226a44e6fee2b386d48bf84388351204941dd12e3a2da395eefaf 6c2e0a6d5bc6db49430cf25501444da6540b7b2f9ac0052da93c8086e2af0c46 -test/extractor-tests/generated/ParenExpr/ParenExpr.ql a40c60a92be944f15f5cbcca52b0fde318bb1ad6864f9ab9302dbf5ce5f1058d a50e80b6b222fb43f9fec82677d0785c0b2696b9818887e2befafb7a6d399a7a -test/extractor-tests/generated/ParenExpr/ParenExpr_getAttr.ql e8b9016d2374d124472d135c8b9031124227cbb139362f6aa6d4d99cad631e30 4aaf95ee8a9ab1ead19eaa4dabc080f12aca49f50a150a287b93132de5c61df1 -test/extractor-tests/generated/ParenExpr/ParenExpr_getExpr.ql a75dc46dc78d3b4a4f629ba16f7129ecc0ab90f60b651259d00d241b2886bf7c 32164d75418df184618501f41fbc0a81dafe1ad2dcbc9ec87bea909aaf05ae40 -test/extractor-tests/generated/ParenPat/ParenPat.ql 565182ccd81a9b420911b488c083f540d339eec6a9c230424800bb505df13a66 876cdca008ed32f415c9ee99ce7e66b276769d0b51ad7eee716e1317484a34ce -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/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 -test/extractor-tests/generated/Path/PathExpr_getPath.ql e7894071313a74166bdd31d7cd974037fcd5a7f0e92d5eec42833266196eb858 46a06e8a1207e7a0fa175cd4b61068e5fd6c43b5575b88986409f0ac2be64c51 -test/extractor-tests/generated/Path/PathExpr_getResolvedCrateOrigin.ql a68a1f0d865d10c955f7ab1fd7614b517e660553b65fabb9daa8f302adbc2602 c47480d6440ae63be27d8158a35536a8d9051817dec1521cdcab297ddb52e1ae -test/extractor-tests/generated/Path/PathExpr_getResolvedPath.ql dfa55fe480da0df37670660fc1c54b6c38d47365353bc9d4f662183b33d4e80f 1b18329a7b60805fc073df3149c48f39aa66924d7eefedecbca36a2b170a7fbe -test/extractor-tests/generated/Path/PathPat.ql 6b9d973009f1b4963c7c83b0f5051eda7a76c8fb4a789217b4a25cbab0cdb274 57f0621dd3657b6f4630d5406816effcc6bc1b03361aa12e118e807e28e9e71b -test/extractor-tests/generated/Path/PathPat_getPath.ql 6c0c71c80a6e631ea7775ec8660b470ff6b264bab14a399606cf113b1fb190fc 8e34cbb4d064db929e94652e1901ec4f26affa71e30e556b7acdff71dd622cbb -test/extractor-tests/generated/Path/PathPat_getResolvedCrateOrigin.ql f690fd9a8773e7c73b70f2d64ee919fef8eee243c5a315c4a6d2713d43ea0e43 f37817427c36cec14a2e07f99d3a32f37f3f27a8eafdf170749ec2780054729b -test/extractor-tests/generated/Path/PathPat_getResolvedPath.ql 55df4541a7b0e82198acfcedd7dc99eb564908270e4fb2b032bf05e40fba6fef a5932d884903da901263f88644c8585a45045190d7204f630506c5aece798288 -test/extractor-tests/generated/Path/PathSegment.ql 523ec635961b9aff465dd98a1e63f8e872e147943646ea7383af95c3fa5d8e42 29bd402ee76eaa080cd6fbf29ba9d9141cc9828f1d3ddf162da6534daed52c56 -test/extractor-tests/generated/Path/PathSegment_getGenericArgList.ql 8f6e67b3e316309f20e21d7e7944accf66b0256b76fa50ee9a714044c6ec8cea 15f10a701fc4d3f9fd6734da90790cdbc8a1ddd57bf52695740acedcb2e6e485 -test/extractor-tests/generated/Path/PathSegment_getIdentifier.ql 52fedfc7518d4646e5f90843806c70fcfde7e7af602846a4f1dd90c3a46c9229 a291e47676ee9d257ac76fd5e4088f5905ec5fefc77568038efa6c88d2116a85 -test/extractor-tests/generated/Path/PathSegment_getParenthesizedArgList.ql 0d5919b0a240678d84dc687de954ef6dc11fe4a20f54c56578c541c573bdf3f2 5d2094ad5c0b0b7f298260511c5072b129b121928394b27c49d39e69ba6a5870 -test/extractor-tests/generated/Path/PathSegment_getRetType.ql 36386a514bc925f5b17ad87afba9fef7986900c1b791732de061213c6e86743f f38bcee68c1da19e70bb1e1c4a4047c763a466f1b8ef2c4f65f8c724c0b58197 -test/extractor-tests/generated/Path/PathSegment_getReturnTypeSyntax.ql d1db51208a311c30af369ce2fdc3a3296e7d598b27bf4960b8b34622a9d9163b 561b1e38c6d8b301fdc016e1d012dd805fde1b42b0720c17d7b15535715047f2 -test/extractor-tests/generated/Path/PathSegment_getTraitTypeRepr.ql d7ea6ee3f6b7539786d8de92db1b5e3bb88f0da9096293107e39065a09aad20e 19e05a303472c25115a9e3cb60943109eaf4788d6ed1d37ac2114b58bb94ef04 -test/extractor-tests/generated/Path/PathSegment_getTypeRepr.ql d9d8ff43a55671616bd5b98ff2c03690ec2661817d19a61edcc4b37d23e312d0 b4dc0ae4d7f03c98c23312b358d214565b34c7a028ba8983826c6bf5c1177eeb -test/extractor-tests/generated/Path/PathTypeRepr.ql c2e069acc5111088a7287d98b4bd4bf44bd79c5a786b275f7448ebafc3613500 6e016750e5fef92a98bc5cc60bfd40d85fbb5eb2d251b4d69ffe600813f81df0 -test/extractor-tests/generated/Path/PathTypeRepr_getPath.ql 49e96ea2aa482e3b80cb0e2d944055f8298f7fc55b36cea7468586c94bacf686 29b3c2140ac1bc6e0e6160140e292e2b84e13145c1553480e2a582cd7f7bd3fd -test/extractor-tests/generated/Path/Path_getQualifier.ql 9af95e22cdf3a65da6a41d93136aef4523db5ce81d38f6ed4bc613f1c68784d0 3102d9241a417a92c97a53ac56a7a8683463f1adc7a593cda1382c0d25b3f261 -test/extractor-tests/generated/Path/Path_getSegment.ql 475f344ee24a14468745d50922fdfd63f5d817f14cc041a184c2f8ec144a01dd 4f663c5c2b1e0cb8b9a8a0b2d8b5d81f12a3bf333c71ecbb43d9258f7dfe4ec7 -test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql 44fb7174365c6deecdc22c720d84617c6e060c05d49c41c90433451588f8aa6f 871fab471c82fede3c36edc003f9decee5bb7844c016951d28be78d0c91487e5 -test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.ql fdad6ad5199435ded1e4a9ea6b246e76b904cd73a36aaa4780e84eef91741c5b 75d63940046e62c1efa1151b0cac45b5ec0bab5e39aec2e11d43f6c385e37984 -test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.ql 2d1d97f6277794871fbb032ea87ac30b1aa902a74cd874720156162057ea202e b1b9880fce07d66df7ec87f12189c37adf9f233a1d0b38a1b09808d052a95642 -test/extractor-tests/generated/PrefixExpr/PrefixExpr_getOperatorName.ql d27602e77ddf491a278426de65041dda8568f427d1e0ff97c0f23069ae64670e 4e4766e948adf88a6b003ead7d9de1ad26174fe9e30c370f1d3e666aa944df52 -test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.ql 33b38895b3a25f0cbec7040861143bd5bdc01f98beff3a6b44bb77e1e0953d4d 9ad76676a6dcdee8eceaedbd759a089eb74fcf9c51308837027cd10253f18bdd -test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr_getTypeRepr.ql a1901323348a86a47b3d3d2a3d30b4f5aebf46744e4ecbcea650b3360024050c 58eb93dd76a927bb0cab1b25d01162c3b163e8a72ee13b4dd334e6017bb67db3 -test/extractor-tests/generated/RangeExpr/RangeExpr.ql 707c08aab49cc0a22c80a734e663b13ecbbddf0db28b6a25fdbc030a1ce38d6f 1f78950b30485cdde9fe7d9e416ad1dfdac8c5b6bc328172e6e721821c076131 -test/extractor-tests/generated/RangeExpr/RangeExpr_getAttr.ql 8767e670f88c2115bc61b16195d2c9d02bc074adc4ca57d2aa537c1af9b4c530 4fa51652c60ca7d06bd9ad604107e002603ee2a7b4587636f6b46b8e8060e06c -test/extractor-tests/generated/RangeExpr/RangeExpr_getEnd.ql 0328c3d0597004f3facf3d553ed763566344f54e1b9c9e26f2f41b8146b6bdba 8e701b595631af117fd0a79154e298dfc64cb0874eb58018921f94076a0c7ebe -test/extractor-tests/generated/RangeExpr/RangeExpr_getOperatorName.ql 355a4d61bcb6ac37003c49e736e0e3d4c6d223343db4d79ecb43a78fbf6b4c94 a81c79a5d54dec5f3918ad486cb07ffcb0af067823f7597d8e86efaffdb70935 -test/extractor-tests/generated/RangeExpr/RangeExpr_getStart.ql e6e35c735b2bc56adf38f96f32ef59a004391cafbb23b9acc34d2177764588c7 478969212626b1d101c19115f726ca7616fdd4d8de82fa1e91c50a26515c2ee1 -test/extractor-tests/generated/RangePat/RangePat.ql 97314b9a5543a7471d722ae188a657fd325974eb38eafe0997a6cf1095d04d69 5dd655582157b3436722b4ba3118bdd29853b0bc170248ad2c4c1162c534afe6 -test/extractor-tests/generated/RangePat/RangePat_getEnd.ql 723eb5030ec52d3aa3650a3e2de6cc0195a0030630239b972235963320e0d808 2df3b1a6197c3abd43dc743fd09cbf55165e3191f2b49336777594541e5da96a -test/extractor-tests/generated/RangePat/RangePat_getOperatorName.ql 564216b2342f56dc8c1aed6306f57b6dafb33de9e3ba337a840a8c077ce95933 2a76ec7a59bada29733a1515bc1ea8bedd37429d1694ca63c7a8fbf94098a4c7 -test/extractor-tests/generated/RangePat/RangePat_getStart.ql ad2066efa32fced2dd107031f2a9b9635c3c892e874870a4320522bae9309aa4 b4a8c57a838074e186b823938d1a9372153c193da6c839b5f242ca25c679e83f -test/extractor-tests/generated/RefExpr/RefExpr.ql 27d5dceb9e50668e77143ff5c4aa07cbe15aeea9829de70f1ddfe18d83690106 b95058b7a0bad4bddb857794901d9b651b2f9e4dd3554e5349a70a52cbbfaff6 -test/extractor-tests/generated/RefExpr/RefExpr_getAttr.ql 477fb3fee61395fabf78f76360ea27656432cb9db62e6f1dab1e9f3c75c83d39 5210f2ac54c082b616d8dcb091659cdad08a5d4ae06bf61193c33f208237482f -test/extractor-tests/generated/RefExpr/RefExpr_getExpr.ql 180d6417fd7322cabf4143d0ddd7810f65506b172a5c82484b3ef398041636b2 a291f0bec1ec5b3fa6d088b3d1a658889b9a3521c39ff3bb7a5ab22a56b8b20a -test/extractor-tests/generated/RefPat/RefPat.ql ba0f0c0b12394ed80880bea7d80a58791492f1f96a26783c2b19085d11e2fd2b 22aa62c6d4b6e4354f20511f8e6d12e6da9d8b0f0b3509eefe7a0c50f7acfb49 -test/extractor-tests/generated/RefPat/RefPat_getPat.ql 60f5e010b90c2c62d26674323d209b7e46c1c2b968a69765e1b1cde028893111 fe9e7dc6a5459250355336eca0bdf2a0be575b1e34936280fd12a76a004f7b46 -test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.ql 0e543a2e907bec0736a4e3821e94a49ad5127a69dab88f89a4a4bd6ff9e6a138 fe157d0a00264e2e5b7eee7248b052c960915aac14543e16a31ef659ce84978b -test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getLifetime.ql 0fc1babe97a3c12609f30af8d68a2a25a588061fd92fb5a0d6ddb2afd0f87296 c9fcd48451faf77a3d47c4085904439243744119648e10499bc1b1533c5e14be -test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getTypeRepr.ql 63130e9884b588a2e0f076a00b55e9c3106826ab78f5e7ff859d24d4f1b4d0d1 fabe9cc6967433def8ddba298d5cb4d903f8491bc4ccfa1b36e415995da9b804 -test/extractor-tests/generated/Rename/Rename.ql c8605e5d8ebb39be238ba26e46861df493d86c9caf9aa9a791ed5ff8d65a812a 7263c2c2565e41c652eda03d1e1ddd030fea79a8e3c967909df9945e30ecbe68 -test/extractor-tests/generated/Rename/Rename_getName.ql 1648191216ece0e3468823ed376292611bd3e5dbe9b3e215167d7051aa03385f 381683d4637a1a7322c9a0df2d90a30a153630965e7facbfaccd6cdb5c1de2cd -test/extractor-tests/generated/RestPat/RestPat.ql 0abc6a13ec82ebc923ce768344d468871a05a515690f0feaaf55b7967cf34a9e c2bc069de6927c6c04c89c54e694b50d6ca052230cc36668302907a7ed883e08 -test/extractor-tests/generated/RestPat/RestPat_getAttr.ql fb391ab265a454b10270136efd61c1ae9b29951cd28b0f585c6b6eea37c64745 6311e3ca49eb8a061684f8cebdfb11cc5ae09db6e145d1b2349a2ee80298cfe9 -test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.ql 9183fb22ed8cab493719ab4c26e9129a033962330893c21a994ca9a98de86670 4031d0ba6f2ea3bd5116c594c053bd92f10f3dd2166e5ac7d6d6006fc6c1911a -test/extractor-tests/generated/RetTypeRepr/RetTypeRepr_getTypeRepr.ql 0cfb66dc354c6b58c695dace97c4d5ec2a730ba6076918be2beca4a4cedaae07 54a6299dfa05b7ef60feca77dbad3d0a444655df4d1d4c69a8efc3a425ca35af -test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql 8e9eba0837a466255e8e249e62c69c613cb5a78193fe50e26a617cf9d21c995a f33f6cc874f74d1ce93a6975c88748bd5bca6dc10360f8fd59493d939be63658 -test/extractor-tests/generated/ReturnExpr/ReturnExpr_getAttr.ql 9fb7e1c79798e4f42e18785f3af17ea75f901a36abf9beb47a1eede69c613ba9 9cdb7cc4a4742865f6c92357973f84cee9229f55ff28081e5d17b6d57d6d275f -test/extractor-tests/generated/ReturnExpr/ReturnExpr_getExpr.ql 7d4562efb0d26d92d11f03a0ef80338eb7d5a0c073f1f09cbb8a826f0cef33de 523ebd51b97f957afaf497e5a4d27929eed18e1d276054e3d5a7c5cfe7285c6e -test/extractor-tests/generated/ReturnTypeSyntax/ReturnTypeSyntax.ql 976ce33fe3fd34aae2028a11b4accdee122b6d82d07722488c3239f0d2c14609 906bf8c8e7769a1052196bc78947b655158dd3b2903fef2802e2031cffbc1d78 -test/extractor-tests/generated/SelfParam/SelfParam.ql a5be8dc977d652c6fe8b27377a3dae3e34b4e034b76d2621d6c43ea9cf07128e 099fe28e1b17238c46c457593aed8d9fca6e6e6cf8f9c4ec5b14261035261c04 -test/extractor-tests/generated/SelfParam/SelfParam_getAttr.ql 00dd5409c07e9a7b5dc51c1444e24b35d2ac3cab11320396ef70f531a3b65dc0 effbed79ad530a835e85b931389a0c8609a10ee035cb694f2e39b8539f8e54ba -test/extractor-tests/generated/SelfParam/SelfParam_getLifetime.ql 0b7c243f609e005dd63fd1b3b9f0096fc13cb98fe113e6f3fefb0d5c414e9a5f f6e06de8bcddfc9bd978c058079e53174edbe7b39f18df3c0bd4e80486808eda -test/extractor-tests/generated/SelfParam/SelfParam_getName.ql 69207a57b415ba590e50003d506a64fd1780b27b8832b14f9bd3c909bddb5593 56fa28ba1222f45893237052fa5a9421d960e14fbf1396b2d1049b440c2e5abe -test/extractor-tests/generated/SelfParam/SelfParam_getTypeRepr.ql 406c04fbb5e0f4c57a2f73dfd69aff7da95fbbe552dc7391b3332d4e451b1ff4 025ef82cd0bf947333253141a5c3c4990db47a699c21a2381089428d0d133670 -test/extractor-tests/generated/SlicePat/SlicePat.ql c6ff3c926ebbea3d923ba8ed00bf9cc20eaaee4c6ae49ea797c0975d0535240e 1b27e0caeb793da3b82059268b83bd624e81f215de42acbb548c52bacba3ed9e -test/extractor-tests/generated/SlicePat/SlicePat_getPat.ql e2f892a3a4c623fe3f7e64e1438128126bc4d8b8c0f657ae53bb99d3209a3b13 af835d9ec840c63e13edc6a9230a4e34cb894f4379b85b463b8068de5a8bd717 -test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.ql 59c4e943626b6d284fa30778437b0ac5b10243b2dd3081200ada18e5a5f75ebc a479a079c841290a42a86da71d0b951d6ff354a4818be72180e6fe24b3eecde4 -test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr_getTypeRepr.ql a6604fccd54cf86fb2b929ffda248a2da207e0841a46fd5e80fc18e2efccd9ca f10cc6446549214d8929521f8794a93cfacdbd71cd95e05e585bd178af414e52 -test/extractor-tests/generated/SourceFile/SourceFile.ql c30a3c2c82be3114f3857295615e2ec1e59c823f0b65ea3918be85e6b7adb921 6a5bbe96f81861c953eb89f77ea64d580f996dca5950f717dd257a0b795453e6 -test/extractor-tests/generated/SourceFile/SourceFile_getAttr.ql 450404306b3d991b23c60a7bb354631d37925e74dec7cc795452fe3263dc2358 07ffcc91523fd029bd599be28fe2fc909917e22f2b95c4257d3605f54f9d7551 -test/extractor-tests/generated/SourceFile/SourceFile_getItem.ql f17e44bc0c829b2aadcb6d4ab9c687c10dc8f1afbed4e5190404e574d6ab3107 1cf49a37cc32a67fdc00d16b520daf39143e1b27205c1a610e24d2fe1a464b95 -test/extractor-tests/generated/Static/Static.ql f5f71ff62984d3b337b2065b0a5bc13eed71a61bbf5869f1a1977c5e35dfdd50 630c4d30987e3ca873487f6f0cf7f498827ae0ace005005acdd573cf0e660f6e -test/extractor-tests/generated/Static/Static_getAttr.ql adb0bbf55fb962c0e9d317fd815c09c88793c04f2fb78dfd62c259420c70bc68 d317429171c69c4d5d926c26e97b47f5df87cf0552338f575cd3aeea0e57d2c2 -test/extractor-tests/generated/Static/Static_getAttributeMacroExpansion.ql 828ba050c964781dace382e4673c232f2aa80aa4e414d371fd421c3afc2b6902 018f8b75e1779829c87299d2d8f1ab5e7fa1aaa153599da789cf29b599d78477 -test/extractor-tests/generated/Static/Static_getBody.ql e735bbd421e22c67db792671f5cb78291c437621fdfd700e5ef13b5b76b3684d 9148dc9d1899cedf817258a30a274e4f2c34659140090ca2afeb1b6f2f21e52f -test/extractor-tests/generated/Static/Static_getCrateOrigin.ql f24ac3dac6a6e04d3cc58ae11b09749114a89816c28b96bf6be0e96b2e20d37f e4051426c5daa7e73c1a5a9023d6e50a2b46ebf194f45befbe3dd45e64831a55 -test/extractor-tests/generated/Static/Static_getExtendedCanonicalPath.ql 6ec02f7ec9cf4cb174a7cdf87921758a3e798c76171be85939614305d773b6a0 c51567dac069fc67ece0aa018ae6332187aa1145f33489093e4aee049d7cea52 -test/extractor-tests/generated/Static/Static_getName.ql c7537e166d994b6f961547e8b97ab4328b78cbd038a0eb9afaae42e35f6d9cb4 bb5ae24b85cd7a8340a4ce9e9d56ec3be31558051c82257ccb84289291f38a42 -test/extractor-tests/generated/Static/Static_getTypeRepr.ql 45efcf393a3c6d4eca92416d8d6c88e0d0e85a2bc017da097ae2bbbe8a271a32 374b551e2d58813203df6f475a1701c89508803693e2a4bec7afc86c2d58d60b -test/extractor-tests/generated/Static/Static_getVisibility.ql 0672b27f16955f7b0223a27c037884338dcf30759b7b8bb3da44e5d533228f90 0e4916f5683963041ef23c724ca8e16acfa370b583d90b76508c87131b9e1c73 -test/extractor-tests/generated/StmtList/StmtList.ql 0010df0d5e30f7bed3bd5d916faff7d101cc1edddceab7ddc12bb744f8e46cf7 aaff98988c68713b3577f3d4b4ed16b978eb11433ec7f3a32def82e96aac8c5b -test/extractor-tests/generated/StmtList/StmtList_getAttr.ql 78d4bf65273498f04238706330b03d0b61dd03b001531f05fcb2230f24ceab64 6e02cee05c0b9f104ddea72b20097034edb76e985188b3f10f079bb03163b830 -test/extractor-tests/generated/StmtList/StmtList_getStatement.ql abbc3bcf98aab395fc851d5cc58c9c8a13fe1bdd531723bec1bc1b8ddbec6614 e302a26079986fa055306a1f641533dfde36c9bc0dd7958d21e2518b59e808c2 -test/extractor-tests/generated/StmtList/StmtList_getTailExpr.ql 578d7c944ef42bdb822fc6ce52fe3d49a0012cf7854cfddbb3d5117133700587 64ea407455a3b4dfbb86202e71a72b5abbff885479367b2834c0dd16d1f9d0ee -test/extractor-tests/generated/Struct/Struct.ql a4e5d3fe4f994bdf911ebed54a65d237cd5a00510337e911bd5286637bc8ea80 a335224605f3cc35635bf5fd0bebcb50800429c0a82a5aa86a37cb9f6eb3f651 -test/extractor-tests/generated/Struct/Struct_getAttr.ql 028d90ddc5189b82cfc8de20f9e05d98e8a12cc185705481f91dd209f2cb1f87 760780a48c12be4581c1675c46aae054a6198196a55b6b989402cc29b7caf245 -test/extractor-tests/generated/Struct/Struct_getAttributeMacroExpansion.ql a17504527a307615d26c2c4b6c21fe9b508f5a77a741d68ca605d2e69668e385 f755d8965c10568a57ff44432a795a0a36b86007fc7470bc652d555946e19231 -test/extractor-tests/generated/Struct/Struct_getCrateOrigin.ql 289622244a1333277d3b1507c5cea7c7dd29a7905774f974d8c2100cea50b35f d32941a2d08d7830b42c263ee336bf54de5240bfc22082341b4420a20a1886c7 -test/extractor-tests/generated/Struct/Struct_getExtendedCanonicalPath.ql 866a5893bd0869224fb8aadd071fba35b5386183bb476f5de45c9de7ab88c583 267aedc228d69e31ca8e95dcab6bcb1aa30f9ebaea43896a55016b7d68e3c441 -test/extractor-tests/generated/Struct/Struct_getFieldList.ql f45d6d5d953741e52aca67129994b80f6904b2e6b43c519d6d42c29c7b663c42 77a7d07e8462fa608efc58af97ce8f17c5369f9573f9d200191136607cb0e600 -test/extractor-tests/generated/Struct/Struct_getGenericParamList.ql cd72452713004690b77086163541fa319f8ab5faf503bb4a6a20bcaf2f790d38 4d72e891c5fac6e491d9e18b87ecf680dc423787d6b419da8f700fe1a14bc26f -test/extractor-tests/generated/Struct/Struct_getName.ql 8f1d9da4013307b4d23a1ce5dc76466ecdd7f0010b5148ec2e7dd2883efe3427 411b326d15d56713c2a5e6d22909474c5d33062296518221e36c920927f859fe -test/extractor-tests/generated/Struct/Struct_getVisibility.ql 17139d3f91e02a0fc12ad8443fe166fe11003301fee0c303f13aa6d1138e82d5 07bdc1fbcc0ea40508364ea632fce899cbe734159f5c377ea2029bc41bc9a3b4 -test/extractor-tests/generated/Struct/Struct_getWhereClause.ql d0db2c9811ed4568359e84255f04f0c75ae65a80d40981a1545d6cddf53e9c09 1133a46bc502757aaab61a8ac94b4a256b590548c5e27ec6a239ffd5a4a81577 -test/extractor-tests/generated/StructExpr/StructExpr.ql 5bdc2163b7ddd0bc3eb938acc366105590742c417b09ed814b9c4d5d78b9b90a e59a4973aa882879f1940a955020df91fb588f004d7ea83866f52b0930e46763 -test/extractor-tests/generated/StructExpr/StructExpr_getPath.ql f6f2b26a93b24d19f74eab73518eaa688ec270f865764fb9b839ae7e029b10bd bd963650f78009ac44a2aa14f0e53f10e832a73cc69d5819ea89865874113040 -test/extractor-tests/generated/StructExpr/StructExpr_getResolvedCrateOrigin.ql c2794babda0823c62c2af6fe9e3b11d8e4b6baa8095bf8f01faee13b4894ff67 cba6a7576a572238c59142e46cc398c5f31cd91c8d1710381d579bb6bb0edb7c -test/extractor-tests/generated/StructExpr/StructExpr_getResolvedPath.ql 5152d15064daa1da4470cdc659a07281734d56ed958e67efc54701eb44d550dc a7a78db088b0dd7b7c148ad24c8faa014e2eab29146e056bdf35bef5ca2f8485 -test/extractor-tests/generated/StructExpr/StructExpr_getStructExprFieldList.ql 1c2401038fe14e660d5101951e7467dc3a56969698a8cc5b818d664902b269bc f6b7047112ade49b632d2e3f71531dd2dffe7c2cc848587908fa4b85dc06ee82 -test/extractor-tests/generated/StructExprField/StructExprField.ql f054440c074461bdb00506e775be346efc4faf8afd3e55d61f72c8776d1d4bd5 8bfacfa4864309157b6795de26e6c37676ad627e2e8771dfdc8abe57ff269c92 -test/extractor-tests/generated/StructExprField/StructExprField_getAttr.ql 660400f80824956422b95923519769df08514f089269c7a5ccc14036b90b233d f137716537f8780ad63bd6af0da06a96f0d00cb7a35402d3684e6866112b9d1a -test/extractor-tests/generated/StructExprField/StructExprField_getExpr.ql 00180d982057ee23297578d76bf1a337fde8341f0520ebfa5786c8564884ae5a c2b813c25df4ffc49486426365cc0cc0bbf07cf0c7d7adece7e6576fc8b776dc -test/extractor-tests/generated/StructExprField/StructExprField_getIdentifier.ql 9bacb8d6590d5cde340443c4d0963a8ef8ddf434f912a28b04f9dd9f76504f3b 1a2209ee1086873dd2b07979b089bbab849283bfb8f44ba3deb5ff480acc1cbd -test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql 33dc3f6c1f737e0ca2015530467bfa123eac0eb8ab63f2937ad0064f2246fb2d b89d5817c6a249232540570ef93ecf880a8ef74aa409c7cd8ddbc83f6d589fea -test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getAttr.ql cd7f5236f6b660fc064f3a04f3a58d720ed4e81916cbd1a049c1fac7171108ed 61317928d0833f7bb55255a5045bedc0913db1266e963ede97d597ee43e3ddd9 -test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getField.ql 1292aec1141bdb75fd8e0993f683035f396a0e6c841b76ee86a0a1d3dce0dbc4 450eccbd07cc0aa81cef698f43d60aeb55f8952a573eaf84a389a6449c3d63a7 -test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getSpread.ql d0470b9846323d0408e0f26444cdc5322d78ce1ac203073ff4f556dac5343be7 280712a0b3714256aff4c2a4370fd43e70c418f526e383ed7100d61cdf790c36 -test/extractor-tests/generated/StructField/StructField.ql 5ec75ec3c1a18299259dfa041790e9b4a791ceb1706aadea3537d0a67e7e65bb cba580a8678547dc88a736bd639cc4d8e84ec32a9ad1095e50f7e03047c37f1c -test/extractor-tests/generated/StructField/StructField_getAttr.ql a01715bc688d5fa48c9dd4bfab21d0909169f851a290895c13a181f22c0e73a9 fa6ffcf007492d9e1b7f90d571b9747bd47b2dc29e558a8e1c3013c5949dcdb7 -test/extractor-tests/generated/StructField/StructField_getDefault.ql deccc63b81892cd1b293d8b328ad5b3efdf32892efc8b161dfcd89330ca6b5a2 9a9f306f63208ce30d26f91dd15b94867a7d9affd31a0f51a3d1d2ce50786abc -test/extractor-tests/generated/StructField/StructField_getName.ql 4c5a7e00b758a744a719bff63d493ee7d31ff8b3010e00c1d1449034d00130ec 9b284d848e5c86eac089f33deca7586441a89d927e7703cb4f98bb7c65a7238c -test/extractor-tests/generated/StructField/StructField_getTypeRepr.ql 3f36890b9ced576327d0fb6e3c80c6482c3a6d6f751fa769b24b2c14a46f8ee8 aed0681a3928b965f1448954d3a0369238a3cd715b97a0d988d15b971bf45356 -test/extractor-tests/generated/StructField/StructField_getVisibility.ql 335d097fabbc9720b065248cd1c295fe8dc040bf646ce491244b6840d9a847d3 9a9073eb52cd401b07beb4eb0aef7a15d5d398d0c76c35416ffcb059a360d654 -test/extractor-tests/generated/StructFieldList/StructFieldList.ql 02635fb8b0bccb4cb8be71a2b103c6854192dd0300669127ce74590566b0b163 62e4151cbc47ec7bd10cb9f711587454d8fcf64fb54f279b82eefcf20028c37f -test/extractor-tests/generated/StructFieldList/StructFieldList_getField.ql b70e569d48109f57a1a765fcab2329adce382a17258c4e93a57f540a408b1836 1d6a65b7ac1ed8fd0e966132ec9ecbb425fa7ca501a2cd1db7269f9534415f30 -test/extractor-tests/generated/StructPat/StructPat.ql 2fa9b13ad6752a1296908c76caf3778dfd7d31e1ffc581011366208dfc3288a4 5a61ae9056a153b526d07c451a55f3959ce90adf762fe6c31f434fae27086d5d -test/extractor-tests/generated/StructPat/StructPat_getPath.ql 03fb1254cc797239de302fbf1ad1b4e7e926e2ec4423221fbec06425e3647f63 9ab60ad1f16d4fb04d3de9f8f05d959fc90c42bb8f0dfc04ccc906897f5c1633 -test/extractor-tests/generated/StructPat/StructPat_getResolvedCrateOrigin.ql e3188ae0bb8835ad4aed5c775b52afb6cc7f9c520a8f62140d6cc590f2b8ce5d fd3e6eaf185e933e5ab1566cc49ef3497e50608070831879e01cf5a5ec23eae5 -test/extractor-tests/generated/StructPat/StructPat_getResolvedPath.ql 1f4be7d78b187997093d52729d985dceb4c9e918274e0b9f06585e3337e3044b 2533855f07fce230dd567b2192ee20168bca077dbf7f1e8489dec142fcd396b8 -test/extractor-tests/generated/StructPat/StructPat_getStructPatFieldList.ql f7b6dadd6ed0e40fb87e4be6eabe7fb96931b8c910c443588147202707655ced a43de755e0ca786a491afc97805e34d787c7bd03e7bca8df090e9386d4019688 -test/extractor-tests/generated/StructPatField/StructPatField.ql e6f468111706d4254b6c3e686c31e309c11b4246d8ed7eb288dd349ec0787c12 7ab1b5ead54fe09daf3d4cc6d8eb3e39fe253bede8822187de1a74a10cc59e01 -test/extractor-tests/generated/StructPatField/StructPatField_getAttr.ql 5e1df4f73291bbefda06437859aef73457fe58a22c134ceb9148cfcc19b696e7 69aea129500dca110023f03c6337e4b1a86627d6d51c43585534cf826db13d04 -test/extractor-tests/generated/StructPatField/StructPatField_getIdentifier.ql bf44755d6b82d69610de44cab2d49362b10621589948b68480d80412acec820a ec06b8f947cdaca913fd44685e5ce2bf52281306808cbb17e7e88118c897f877 -test/extractor-tests/generated/StructPatField/StructPatField_getPat.ql bb3e9ad8cdaac8723504fffbafa21acc95c5bce7843fc6f3641e98758d93573f 77e6f9946e66a25ac70622e65c164413e7001f4b8e9361a0850171fc0cead935 -test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.ql fad84896295380e3576bfaef384ac88b2f96a73196d8df3ec39ecc6184ec053f 3dd63ce5d1ffd48c873397368c6229de8da37e8f694f395165af8257a4d2faf2 -test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getField.ql 4e6fa98e48d474f31585a644d6045b7d8427a76bb04810728ad121a43b59e8a2 e3b1d915aae3e3c3df752146e222df71667f73731d7337cc2eb391b13f097315 -test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getRestPat.ql 4be5b8afebc081602429d7cfb1fd87de629abc17f3739131c93f7e0b3adaec3d d5ced2366c5a278e820261239c4de183517dadf9bc8496f3e568758ab9570752 -test/extractor-tests/generated/TokenTree/TokenTree.ql ba2ef197e0566640b57503579f3bc811a16fec56f4817117395bf81da08922a6 2e7b105cb917a444171669eb06f5491a4b222b1f81fa79209a138ab97db85aff -test/extractor-tests/generated/Trait/AssocItemList.ql 0ea572b1350f87cc09ce4dc1794b392cc9ad292abb8439c106a7a1afe166868b 6e7493a3ace65c68b714e31234e149f3fc44941c3b4d125892531102b1060b2f -test/extractor-tests/generated/Trait/AssocItemList_getAssocItem.ql 8149d905f6fc6caeb51fa1ddec787d0d90f4642687461c7b1a9d4ab93a27d65d 8fb9caad7d88a89dd71e5cc8e17496afbdf33800e58179f424ef482b1b765bb1 -test/extractor-tests/generated/Trait/AssocItemList_getAttr.ql 06526c4a28fd4fdce04ca15fbadc2205b13dcc2d2de24177c370d812e02540e6 79c8ce6e1f8acc1aaca498531e2c1a0e7e2c0f2459d7fc9fe485fd82263c433f -test/extractor-tests/generated/Trait/Trait.ql 064785e9389bdf9abd6e0c8728a90a399af568a24c4b18b32cf1c2be2bcbf0b8 a77e89ac31d12c00d1849cb666ebb1eecc4a612934a0d82cd82ecd4c549c9e97 -test/extractor-tests/generated/Trait/Trait_getAssocItemList.ql 05e6896f60afabf931a244e42f75ee55e09c749954a751d8895846de3121f58f def1f07d9945e8d9b45a659a285b0eb72b37509d20624c88e0a2d34abf7f0c72 -test/extractor-tests/generated/Trait/Trait_getAttr.ql 9711125fa4fc0212b6357f06d1bc50df50b46168d139b649034296c64d732e21 901b6a9d04055b563f13d8742bd770c76ed1b2ccf9a7236a64de9d6d287fbd52 -test/extractor-tests/generated/Trait/Trait_getAttributeMacroExpansion.ql 7ea169336dca0fcaf961f61d811c81834ea28b17b2a01dc57a6e89f5bedc7594 d5a542f84149c0ccd32c7b4a7a19014a99aa63a493f40ea6fbebb83395b788a1 -test/extractor-tests/generated/Trait/Trait_getCrateOrigin.ql d8433d63bb2c4b3befaaedc9ce862d1d7edcdf8b83b3fb5529262fab93880d20 3779f2678b3e00aac87259ecfe60903bb564aa5dbbc39adc6c98ad70117d8510 -test/extractor-tests/generated/Trait/Trait_getExtendedCanonicalPath.ql a2bd16e84f057ed8cb6aae3e2a117453a6e312705302f544a1496dbdd6fcb3e6 b4d419045430aa7acbc45f8043acf6bdacd8aff7fdda8a96c70ae6c364c9f4d1 -test/extractor-tests/generated/Trait/Trait_getGenericParamList.ql b27ff28e3aff9ec3369bbbcbee40a07a4bd8af40928c8c1cb7dd1e407a88ffee 2b48e2049df18de61ae3026f8ab4c3e9e517f411605328b37a0b71b288826925 -test/extractor-tests/generated/Trait/Trait_getName.ql d4ff3374f9d6068633bd125ede188fcd3f842f739ede214327cd33c3ace37379 3dcf91c303531113b65ea5205e9b6936c5d8b45cd3ddb60cd89ca7e49f0f00c1 -test/extractor-tests/generated/Trait/Trait_getTypeBoundList.ql 8a4eb898424fe476db549207d67ba520999342f708cbb89ee0713e6bbf1c050d 69d01d97d161eef86f24dd0777e510530a4db5b0c31c760a9a3a54f70d6dc144 -test/extractor-tests/generated/Trait/Trait_getVisibility.ql 8f4641558effd13a96c45d902e5726ba5e78fc9f39d3a05b4c72069993c499f4 553cf299e7d60a242cf44f2a68b8349fd8666cc4ccecab5ce200ce44ad244ba9 -test/extractor-tests/generated/Trait/Trait_getWhereClause.ql b34562e7f9ad9003d2ae1f3a9be1b5c141944d3236eae3402a6c73f14652e8ad 509fa3815933737e8996ea2c1540f5d7f3f7de21947b02e10597006967efc9d1 -test/extractor-tests/generated/TraitAlias/TraitAlias.ql c2a36ea7bf5723b9ec1fc24050c99681d9443081386980987bcb5989230a6605 b511356fea3dee5b70fee15369855002775c016db3f292e08293d0bf4b5bd33d -test/extractor-tests/generated/TraitAlias/TraitAlias_getAttr.ql 128c24196bfa6204fffd4154ff6acebd2d1924bb366809cdb227f33d89e185c8 56e8329e652567f19ef7d4c4933ee670a27c0afb877a0fab060a0a2031d8133e -test/extractor-tests/generated/TraitAlias/TraitAlias_getAttributeMacroExpansion.ql 029d261d0bdd6fe5bc30011ac72481bce9e5a6029d52fde8bd00932455703276 cad506346840304954e365743c33efed22049f0cbcbb68e21d3a95f7c2e2b301 -test/extractor-tests/generated/TraitAlias/TraitAlias_getCrateOrigin.ql 303212122021da7f745050c5de76c756461e5c6e8f4b20e26c43aa63d821c2b6 fdbd024cbe13e34265505147c6faffd997e5c222386c3d9e719cd2a385bde51c -test/extractor-tests/generated/TraitAlias/TraitAlias_getExtendedCanonicalPath.ql 601b6b0e5e7e7f2926626866085d9a4a9e31dc575791e9bd0019befc0e397193 9bd325414edc35364dba570f6eecc48a8e18c4cbff37d32e920859773c586319 -test/extractor-tests/generated/TraitAlias/TraitAlias_getGenericParamList.ql 5a40c1760fcf5074dc9e9efa1a543fc6223f4e5d2984923355802f91edb307e4 9fd7ab65c1d6affe19f96b1037ec3fb9381e90f602dd4611bb958048710601fa -test/extractor-tests/generated/TraitAlias/TraitAlias_getName.ql e91fa621774b9467ae820f3c408191ac75ad33dd73bcd417d299006a84c1a069 113e0c5dd2e3ac2ddb1fd6b099b9b5c91d5cdd4a02e62d4eb8e575096f7f4c6a -test/extractor-tests/generated/TraitAlias/TraitAlias_getTypeBoundList.ql 9ab4c329b25ea5e1a899b8698093f404ee9c095f0b0e38011161ca6480cd10a7 95c3b93610cdc08a0e251ab1307523f8cfb5560460923c81aace8619e30746dd -test/extractor-tests/generated/TraitAlias/TraitAlias_getVisibility.ql 7e86140d2e9081d46063a15d82719be315406eb4d6e6738b3cb5ba7bcbef458f 8fb1ecf6a96b1f1d4a840425139c4ad47feb8b0ff14a319c08f82535e62e23c7 -test/extractor-tests/generated/TraitAlias/TraitAlias_getWhereClause.ql 129e1f10aa23f10d71f144caa4ccb923928ec1fd791b203cdba9989b079fc1e1 1fb112215bd3e39b7bc8ebc059f9cc362e5b2f04a242df053e150efa638cfea7 -test/extractor-tests/generated/TryExpr/TryExpr.ql 3beaa08f6d734e74eca32ae2e3fb6aa7694400a429cd6b3db97bfd3402b379b8 3f55bfc71e804e2ba6f02087c0808901a379b2cb30f58d5933c91becc10f3654 -test/extractor-tests/generated/TryExpr/TryExpr_getAttr.ql a2cef886bb959ff0f47fa555e7a89075f93ab013e1766270590951bf0b14a47b 24d12c96f1c7a1ae3d0d596551fb53ef2745c890eb602e0f99db3cb70cf1e474 -test/extractor-tests/generated/TryExpr/TryExpr_getExpr.ql 4ccd50eb4bdf01381eabb843b5ea3ebddec5d5852a04f10be9b9a4ef8a3005f1 0ec050d28c70322f6f280180fee998d1b6cd82db4e114db7e10758fcee2a2fca -test/extractor-tests/generated/TupleExpr/TupleExpr.ql d6caa8d9ff94f27f88d338b07cacc280289970931e101680c6574e32bc0c863e 70508104013003dcf98f22db6eb9b60d14552831714048f348f812807189e9b1 -test/extractor-tests/generated/TupleExpr/TupleExpr_getAttr.ql b1e93069613a8cd2b49af93a5cdd1571b343571e9c3d049d8bf19b25a461f9d3 be18008a00e3b0fb786f5dd36268201fd43bf8527d8a40119b147a3a8c973b3b -test/extractor-tests/generated/TupleExpr/TupleExpr_getField.ql 308cd14873afedc74e3ed61d283f72da50008ce7690510c57fe0934c92158d58 5e3e23a7221486ead6502debb5d4978fb67046c8b0a5c8a688e4e196cb1f28a1 -test/extractor-tests/generated/TupleField/TupleField.ql ec4f5a92fd702f8ff4540f5c681d79e197354244fdcc6df8a3c50f30f7c3c4c2 ad8c7f8316dc02238c40cc79d257fdfd8614b2db14a871eea849be6551e8f0f5 -test/extractor-tests/generated/TupleField/TupleField_getAttr.ql b6b6a5349fc6767b0081d737e818425f0c93be5bd8de47c29fd89b7812e3267d 23d82a649cb733bc8c1d1b09dde84dbfcc8f847ed35be986a9ca8717ea9e5081 -test/extractor-tests/generated/TupleField/TupleField_getTypeRepr.ql ce4b6f69779e9f3c5a8b5625137bac806fc929d1c637804edefbf804a66f88e3 a3b741a2f48cb1e275f978585d2a04a720e23a03ccc04d09eb229fec322f42e3 -test/extractor-tests/generated/TupleField/TupleField_getVisibility.ql c7af5373382394a686d12a23c4e688a7cc0dfe6b6cbee25c7e863b4713601ddb b174f30404e69eef112dedc8397ad444e968f12dde9befdccb051305d98a75d2 -test/extractor-tests/generated/TupleFieldList/TupleFieldList.ql 7dc88440222ff036eb6aeabf9311568ea34f31f7c1ad19c71dd69a2dc17a6ed9 0255890d1389da004f18e8a0fc0b72d22790c36ccfacc6f452b269667f030f22 -test/extractor-tests/generated/TupleFieldList/TupleFieldList_getField.ql ad552a9c0b9964d1770f14cabbb436db60ebedc3c569006542a8eae9ddb30f6d 3a8c49d629376a9b8326138836b05ee2366b1021ffd19f5be74ab023e70aa50d -test/extractor-tests/generated/TuplePat/TuplePat.ql 24ee56bc848537da65eb8ecef71e84cc351a2aedcc31d6fb53a5b7865f15f7c2 81db1076e2e4921ceb50933b96cd7b574caab1818de257c1e9038f3f97447d59 -test/extractor-tests/generated/TuplePat/TuplePat_getField.ql f000bed41af031bc56d0705ce312abe7ab3dc6745b2936798c9938781e51475e f464a84dbc36aa371d60d6db68d6251f6b275dc4ecebdc56f195637be390b067 -test/extractor-tests/generated/TupleStructPat/TupleStructPat.ql 967409c7bddd7fc8d0b9fdfab2f5e6c82e8b4ff57020822aa0cda177244dfbc5 eaf0b7e56c38db60fafb39f8de75b67ee1099ac540fa92b5dfe84b601d31781a -test/extractor-tests/generated/TupleStructPat/TupleStructPat_getField.ql f3f2e23cc2a32aa5abc1e0fda1300dab1693230632b9eaa75bb3b1e82ee9ea1a 24b87a39ec639a26ff8c1d04dc3429b72266b2a3b1650a06a7cd4387b6f0e615 -test/extractor-tests/generated/TupleStructPat/TupleStructPat_getPath.ql 13a06696bbf1fa8d5b73107e28cdba40e93da04b27f9c54381b78a52368d2ad1 5558c35ea9bb371ad90a5b374d7530dd1936f83e6ba656ebfbfd5bd63598e088 -test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedCrateOrigin.ql e409667233331a038e482de4b2669d9fac9d7eb0e3bd5580ea19828f0c4ed7ad 588e4628471f1004575900d7365490efcf9168b555ff26becfc3f27b9e657de3 -test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedPath.ql 150898b6e55cc74b9ddb947f136b5a7f538ee5598928c5724d80e3ddf93ae499 66e0bd7b32df8f5bbe229cc02be6a07cb9ec0fe8b444dad3f5b32282a90551ee -test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.ql 2f99917a95a85a932f423cba5a619a51cada8e704b93c54b0a8cb5d7a1129fa1 759bd02347c898139ac7dabe207988eea125be24d3e4c2282b791ec810c16ea7 -test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr_getField.ql 615acfcbc475b5c2ffa8e46d023fc2e19d29ee879b4949644a7f0b25c33125e6 81b037af5dcb8a0489a7a81a0ad668ca781b71d4406c123c4f1c4f558722f13e -test/extractor-tests/generated/TypeAlias/TypeAlias.ql 5cbf0b82a25a492c153b4663e5a2c0bea4b15ff53fa22ba1217edaf3bb48c6af d28e6a9eafff3fb84a6f38e3c79ad0d54cb08c7609cd43c968efd3fbc4154957 -test/extractor-tests/generated/TypeAlias/TypeAlias_getAttr.ql ecf4b45ef4876e46252785d2e42b11207e65757cdb26e60decafd765e7b03b49 21bb4d635d3d38abd731b9ad1a2b871f8e0788f48a03e9572823abeea0ea9382 -test/extractor-tests/generated/TypeAlias/TypeAlias_getAttributeMacroExpansion.ql fa2f0867039866e6405a735f9251de182429d3f1fdf00a749c7cfc3e3d62a7bb 56083d34fffd07a43b5736479b4d3b191d138415759639e9dd60789fefe5cb6f -test/extractor-tests/generated/TypeAlias/TypeAlias_getCrateOrigin.ql cd66db5b43bcb46a6cf6db8c262fd524017ef67cdb67c010af61fab303e3bc65 2aebae618448530ec537709c5381359ea98399db83eeae3be88825ebefa1829d -test/extractor-tests/generated/TypeAlias/TypeAlias_getExtendedCanonicalPath.ql fe9c4132e65b54eb071b779e508e9ed0081d860df20f8d4748332b45b7215fd5 448c10c3f8f785c380ce430996af4040419d8dccfa86f75253b6af83d2c8f1c9 -test/extractor-tests/generated/TypeAlias/TypeAlias_getGenericParamList.ql e7e936458dce5a8c6675485a49e2769b6dbff29c112ed744c880e0fc7ae740ef e5fcf3a33d2416db6b0a73401a3cbc0cece22d0e06794e01a1645f2b3bca9306 -test/extractor-tests/generated/TypeAlias/TypeAlias_getName.ql 757deb3493764677de3eb1ff7cc119a469482b7277ed01eb8aa0c38b4a8797fb 5efed24a6968544b10ff44bfac7d0432a9621bde0e53b8477563d600d4847825 -test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeBoundList.ql 309efaa32a840fb1fca7d34b7cdbbf51ab469707fa195b69a9f1a7d141db3a02 e12bf44d8858e930bdde80ecd7909b5405a51a1b00a6d2c8ee880e68dd622075 -test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeRepr.ql 64acc817272d5ee0ff3659a6851635ec8436a8f7944c15d19c80fffa2ad29eb7 db1e91971ba1ae8ba95ba8ac1dfa91f2fe0381c1b520518d80b344878357dbf5 -test/extractor-tests/generated/TypeAlias/TypeAlias_getVisibility.ql a1851a78f31ad6e3e5e43537832701f4c420546c2c86449c8391d3cc366d5445 23c118f662dee5f0e286753d107165b1964ce703a1378765f974530929a32723 -test/extractor-tests/generated/TypeAlias/TypeAlias_getWhereClause.ql 0cd281b7b5d3a76e4ec1938d7dcebb41e24ed54e94f352dcf48cbcdb5d48b353 5898e71246d8ba7517dab1f8d726af02a7add79924c8e6b30ce2c760e1344e8f -test/extractor-tests/generated/TypeArg/TypeArg.ql 32366a6163dcb2fbe2e98d739cc049f410a6523a135310e79b98a4c760926c8a dd52b9c138197ab07b6abbb66236c37261b47cc3201b1e1ab6ccb425b2cc6f44 -test/extractor-tests/generated/TypeArg/TypeArg_getTypeRepr.ql de9102f7cb306503d1858cba40a48b8f40e192bd11b40104453a303db5c6e241 65105b7b2ee346a37a3d6ee61d4c12e34d0cd6ff4a3d79ee0634081a6f959ef6 -test/extractor-tests/generated/TypeBound/TypeBound.ql 9f688714d359bf02c39bfc1ad767df0c37465241672ecc2c7acbed76703b5b1b ce49ac6d48f96f73c1de1cc2b053c06d7ab5ced234cd005549ccb96ef7fc6584 -test/extractor-tests/generated/TypeBound/TypeBound_getLifetime.ql 615b0f5ccbffc425a3fa9480197bfae649c072717697f59d2e9b8112d2ff3fcf 1f969aca15be820eb27fe80317ad7fd4ce60f1a0fbcb4ae98b04828b0aeca632 -test/extractor-tests/generated/TypeBound/TypeBound_getTypeRepr.ql 5c77f9ba0ce7ccde5a512e1eb6887e1588789d2bfbaadefa42177a144ca56e37 122ab4c2eb6cf285a1ce8818c00f60a12a53765b6999879a1c3596fb48eda39e -test/extractor-tests/generated/TypeBound/TypeBound_getUseBoundGenericArgs.ql bdb0cf5cee3da296738224e6f44dcb348009f71e645498e72418e1b7d9b955e8 96168156dca7227f9d90dd8381bc04823dee8fae54c7eba427f99cdcae920d44 -test/extractor-tests/generated/TypeBoundList/TypeBoundList.ql 829c62ad88caa7707a4067c1a34f81971e936af1280a134b0b3532fbd4e4c887 10133eec05b902d5f0a6b3ed66156879914a83290014ba0ded26f1c3aaeb2b28 -test/extractor-tests/generated/TypeBoundList/TypeBoundList_getBound.ql a6f6ec3f8d329da3509a8040ee2383ec6d9c66fe7c5685d94e90ac989a9e61b0 c812280f09658c63beb2a2ec0ab86e007819da08b6637bb4299c6ed6c90a4c6f -test/extractor-tests/generated/TypeParam/TypeParam.ql bff624133257883477db43ae05cc17681ab20d5564c2025dc78758255a62eaf2 a25d4adbe6119f4f36fa57f08cf7ba52e0b54668047e685d811570e0126bcfaf -test/extractor-tests/generated/TypeParam/TypeParam_getAttr.ql c071639828faca21de4b65a26a712ce126f7e989118ad4a896342b8e7d2aa2d0 83050691345f58c73a47f9cfd011bdf65a0759ffb3ea957336dc0ff6d600d13a -test/extractor-tests/generated/TypeParam/TypeParam_getDefaultType.ql 705edd03cf04c030a244541de287d2acfd3842389bfc58a26cfd1577da475113 7f2680131d4bcf301e8207a4844305c459615744a83c81f2c3a245db8284df74 -test/extractor-tests/generated/TypeParam/TypeParam_getName.ql 9d5b6d6a9f2a5793e2fff8dfa69d470659cc36dc417fc8b463364892f70c9d13 91dc4396c2af6c5175c188691c84b768da0d779d5d82afee19baf31e92c7dd91 -test/extractor-tests/generated/TypeParam/TypeParam_getTypeBoundList.ql 080a6b370ad460bf128fdfd632aa443af2ad91c3483e192ad756eb234dbfa4d8 8b048d282963f670db357f1eef9b8339f83d03adf57489a22b441d5c782aff62 -test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql 4ad6ed0c803fb4f58094a55b866940b947b16259756c674200172551ee6546e0 d3270bdcc4c026325159bd2a59848eb51d96298b2bf21402ea0a83ac1ea6d291 -test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr_getAttr.ql d8502be88bcd97465f387c410b5078a4709e32b2baa556a4918ea5e609c40dd7 b238dc37404254e3e7806d50a7b1453e17e71da122931331b16a55853d3a843f -test/extractor-tests/generated/Union/Union.ql 2795c83d4511fadf24cc66a762adbabca084bc6ac48501715f666979d2ea9ea5 7efae5209ae3ee8c73cd1c9e9e05f01b3fdda65d9a553c2ac5216351b6f15e5c -test/extractor-tests/generated/Union/Union_getAttr.ql 42fa0878a6566208863b1d884baf7b68b46089827fdb1dbbfacbfccf5966a9a2 54aa94f0281ca80d1a4bdb0e2240f4384af2ab8d50f251875d1877d0964579fc -test/extractor-tests/generated/Union/Union_getAttributeMacroExpansion.ql ddd0133a497dc057a353b86acc8ed991fefeaefa335d8ad9fe95109a90e39e54 fcaed4287815226843157c007674b1f1405cae31856fed1113d569bab5608d9b -test/extractor-tests/generated/Union/Union_getCrateOrigin.ql c218308cf17b1490550229a725542d248617661b1a5fa14e9b0e18d29c5ecc00 e0489242c8ff7aa4dbfdebcd46a5e0d9bea0aa618eb0617e76b9b6f863a2907a -test/extractor-tests/generated/Union/Union_getExtendedCanonicalPath.ql 6268ddb68c3e05906e3fc85e40635925b84e5c7290746ded9c6814d362033068 04473b3b9891012e95733463018db8da0e96659ea0b10458b33dc857c091d278 -test/extractor-tests/generated/Union/Union_getGenericParamList.ql c55156ae26b766e385be7d21e67f8c3c45c29274201c93d660077fcc47e1ceee 4c4d338e17c32876ef6e51fd19cff67d125dd89c10e939dfaadbac824bef6a68 -test/extractor-tests/generated/Union/Union_getName.ql 17247183e1a8c8bbb15e67120f65ca323630bddeb614fa8a48e1e74319f8ed37 e21c2a0205bc991ba86f3e508451ef31398bdf5441f6d2a3f72113aaae9e152b -test/extractor-tests/generated/Union/Union_getStructFieldList.ql ae42dec53a42bcb712ec5e94a3137a5c0b7743ea3b635e44e7af8a0d59e59182 61b34bb8d6e05d9eb34ce353eef7cc07c684179bf2e3fdf9f5541e04bef41425 -test/extractor-tests/generated/Union/Union_getVisibility.ql 86628736a677343d816e541ba76db02bdae3390f8367c09be3c1ff46d1ae8274 6514cdf4bfad8d9c968de290cc981be1063c0919051822cc6fdb03e8a891f123 -test/extractor-tests/generated/Union/Union_getWhereClause.ql 508e68ffa87f4eca2e2f9c894d215ea76070d628a294809dc267082b9e36a359 29da765d11794441a32a5745d4cf594495a9733e28189d898f64da864817894f -test/extractor-tests/generated/Use/Use.ql 1adafd3adcfbf907250ce3592599d96c64572e381937fa11d11ce6d4f35cfd7f 2671e34197df8002142b5facb5380604e807e87aa41e7f8e32dc6d1eefb695f1 -test/extractor-tests/generated/Use/Use_getAttr.ql 6d43c25401398108553508aabb32ca476b3072060bb73eb07b1b60823a01f964 84e6f6953b4aa9a7472082f0a4f2df26ab1d157529ab2c661f0031603c94bb1d -test/extractor-tests/generated/Use/Use_getAttributeMacroExpansion.ql d02562044449f6de2c70241e0964a8dedb7d1f722c2a98ee9c96638841fa1bc5 a1db982e16b35f1a0ab4091999437a471018afd9f4f01504723aa989d49e4034 -test/extractor-tests/generated/Use/Use_getCrateOrigin.ql 912ebc1089aa3390d4142a39ea73d5490eae525d1fb51654fdd05e9dd48a94b6 c59e36362016ae536421e6d517889cea0b2670818ea1f9e997796f51a9b381e2 -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/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 -test/extractor-tests/generated/UseTree/UseTree_getUseTreeList.ql c265a88347e813840969ae934dfd2904bc06f502de77709bc0b1c7255e46382a 52a239c8ea5fd8fbfbd606559d70ecadc769887437a9bcab6fb3e774208ad868 -test/extractor-tests/generated/UseTreeList/UseTreeList.ql cd943c15c86e66244caafeb95b960a5c3d351d5edbd506258744fb60a61af3b2 cfa584cd9d8aa08267fd1106745a66226b2c99fadd1da65059cc7ecf2f2e68cf -test/extractor-tests/generated/UseTreeList/UseTreeList_getUseTree.ql dd72966b1cb7b04f0267503013809063fcfb145e2b2d7d5250d9f24d2e405f9a 75b953aa11c51ca0fe95e67d50d6238962d8df4a4b9054999a2c6338e5a5613d -test/extractor-tests/generated/Variant/Variant.ql 861e349a2c11571eb027e740b4bf29c0ce98b0f1342e45b364bb5fcbaa487d91 5825b12837862765e23ed09c08c146cc292b2305aadc531ad826ad5bb36f9cdc -test/extractor-tests/generated/Variant/Variant_getAttr.ql dd38e48e1eb05ce280b880652a90010eb63f7de3be7232411ba6265691249420 f8980680104de1e5fd40f264d8d62346aacaf6403a5e051f6fd680e234c82c1f -test/extractor-tests/generated/Variant/Variant_getCrateOrigin.ql 99e79930f8ff87a25f256926e5c3ce1ee0847daf6fadc5445fb33c85328b4c61 2dd64a53813790654c83be25b5e175c9c5b388e758723c2138fff095353fdd7b -test/extractor-tests/generated/Variant/Variant_getDiscriminant.ql 2adba17d4acd790ea7ff738a23fc8d691e40bbc0e1770bc0f15a6a6f0f1b37f2 6e28a8aef3cde78ce8db50e4a48c663d1aacd7a4cc8c212e7c440160da7ae4c2 -test/extractor-tests/generated/Variant/Variant_getExtendedCanonicalPath.ql fe6a4bfd1440e7629d47283910de84c5e8c2f5645512780e710f53540b5bc886 b1e31b765cb1a5fe063abb8c1b2115e881ae28aa3ccd39e088ff8f2af20d6cf4 -test/extractor-tests/generated/Variant/Variant_getFieldList.ql 083c8cf61989663de33d99b72dec231c308ccc8bb6739921465c473a07e8ea03 d03bff6945853c940acdc053b813d53b008ddab9a8bd4307826433828d4763ce -test/extractor-tests/generated/Variant/Variant_getName.ql 0d7b47bec9f9031c67f7b684112a84a311ef9b2efeb260bd7cd6f424011ca0d8 73565e6f965dd7fd7bb9b3408c7d7b69120e1971b67ab307fed293eb663a59ae -test/extractor-tests/generated/Variant/Variant_getVisibility.ql 2c8f365d28d96af55589f4d71ac3fee718b319b4cbc784560c0591d1f605a119 13160d9cf39fe169410eff6c338f5d063e1948109e8f18dd33ea0064f1dd9283 -test/extractor-tests/generated/VariantList/VariantList.ql 9830a7910c10aab76af40b093f10250fc80b8e92c3e2d25c1e88f7866773119d 758d6a8499a4528468e77575ca8f436450a12d1244d17cd2ab1c375e30fea870 -test/extractor-tests/generated/VariantList/VariantList_getVariant.ql beaf322eb010ddfafc5957cd2795595bf2b331033de69842f05cc2b5f8c57da5 c57187b3105c8bcd43de018671c58d3d532cef1724cf2f82039a99061ecb8d27 -test/extractor-tests/generated/Visibility/Visibility.ql 417b501e0eef74006cdc41aef2ee7496871fac8479c93737147336d53a60b1fc f65527aeb6c888c18096efc8b3a68d02cc4e857c18ae5381d85d3e10c610812e -test/extractor-tests/generated/Visibility/Visibility_getPath.ql 53de9942208dff340d4665f602c519592c79b65dad5db217360fe23bb22b9318 6e4d2b191792d7a259f2edbbb2333df3f97c14600b04142fff4c86266dc61b75 -test/extractor-tests/generated/WhereClause/WhereClause.ql 89af4f9e3021560c67c49a3b7458449aeda469f586317d8855d00977a8969a95 59f9f9e7619fb0aa17124679c69723a31f03e7a7af24088b274234c034371e7c -test/extractor-tests/generated/WhereClause/WhereClause_getPredicate.ql cc9f83e30aa028d0130c7f27a1cb72a2c8e3100d65de4041f24670e8062192a4 a561ef1d71efc850b73f30a695777acda4835e2b9a34b1d054a57ebb2450d73c -test/extractor-tests/generated/WherePred/WherePred.ql 3a29d0eae524810ade32546b9170f25cc243f8542b68b5fe86b0fd2d766e92b3 ff5742ad1d36f2675089c2692418e3c8e73cca3ed1e8796d795aa6c681107099 -test/extractor-tests/generated/WherePred/WherePred_getGenericParamList.ql 21c3aaae697a7c8b4df82aa5c6eeef4963c9240fafb20cca3888e4361e208966 2f9ab4ed12984a4c82af2b8b805b28c2cb0c82d4e90927d9cf5be81e3bdc231a -test/extractor-tests/generated/WherePred/WherePred_getLifetime.ql e08d9d6cccf634746f42a6ee583bbb3e7e9a9edbb63242e73b2bff4463df55d8 139543750c18f88d9c1ad2cdbcf1699d597cf2264bbb6b02a7e5792444e277ef -test/extractor-tests/generated/WherePred/WherePred_getTypeBoundList.ql c78e31ff4d1822a6b76f403e5ccb8f5529b4f784e14e618833df0378adca55fc 8bb1c9b5a1cfca0f5e8335464f7439aa098063176fbd3edbaf3407169f1899e6 -test/extractor-tests/generated/WherePred/WherePred_getTypeRepr.ql e56e4989bb9b9ff1d8648641993732dac2f37c5e3b4bbf1c550735a4f1d84b3c 246cd2cfaf90115060412c9e4a15da9089f3b524f72a63ae42d17b062e7be52f -test/extractor-tests/generated/WhileExpr/WhileExpr.ql 61c49414f2ed786a68b79bd9a77093e4086457edb6c136cf8a94f2ac830c2f5b 7737f724a297d011c12143e009a63926812c63c08a1067b03e8677697ab00f83 -test/extractor-tests/generated/WhileExpr/WhileExpr_getAttr.ql f8527130eb2492743c0e629c97db291abcefe3d35302c840fee327ab0d8f10fd b41bedd429e5566fd68a50140ff1f50b51e2c7c351cbc8253fbc126527073f7e -test/extractor-tests/generated/WhileExpr/WhileExpr_getCondition.ql 84a021806423425b24eaeb9fb9967a6aadabe823c24e77a0dfefcb3509041597 147aa8bbe4dbf9b90be2467db8207dc96aed281e722eb6b9c998442a90911a6c -test/extractor-tests/generated/WhileExpr/WhileExpr_getLabel.ql 60ef4de57d85c7df23c0518b944b3839a9b2478044326829b5bf709a8c8d7240 3916e9ff50733c58afdc09837339b72a555a043f92f1c4e09e1652866029b017 -test/extractor-tests/generated/WhileExpr/WhileExpr_getLoopBody.ql cd62b7a464b5778ac925c3dbaf607e97d88ecd30f83f9106ace8e4e148d935b6 ab8027bddd6f138d3530ecd1aeb342b15015e886af1db80b75160c210a380086 -test/extractor-tests/generated/WildcardPat/WildcardPat.ql c6da9df739528763f423eac0fa537bfd524d3ea67794abdbc7f7c56193163273 42be2c5e296ad3afd05b5dcc208a4d2db2fda9323cda2df66054f921e37f6efe -test/extractor-tests/generated/YeetExpr/YeetExpr.ql 8a9f110486be12494256382374d6d5af8aa2210a84fd4452e99a3a3882b0eb59 510fa9eadeb062bd4f733ca6b6892e8908c2c6d58ec8478efc6942bd63a527f4 -test/extractor-tests/generated/YeetExpr/YeetExpr_getAttr.ql 84e44a1fbf1a9d18f255781a3a9aaa71583b6c05da228989471dbe03da4e817f 560332129d3341fbb1c0ea88c894033f0bde19d0adc081111f7bf8af55b61f88 -test/extractor-tests/generated/YeetExpr/YeetExpr_getExpr.ql d77b68b621e5b903231e2dfbc53a1e1421d59a0ad2e8c346c2abc1a2dfc11efd 642eb5791eb336ff05594d06eca08735e54bdac3aecf5d31a4de1267d10cf440 -test/extractor-tests/generated/YieldExpr/YieldExpr.ql 1700b4b2660724d8dbabde5f3441424b79690e2a43dcc599dd69af255a7fc8ff a11e48d9fab0cc358c5806c01753d61e48713b740739ffc87f933754e7f103cc -test/extractor-tests/generated/YieldExpr/YieldExpr_getAttr.ql d4c5e2710b4e41f6fcec51e74041a8af4c3e8116d42fd14fad6ae166a9c18031 cc6763b9f06a3fe6cafc672054cea8835f800f934af47c3c135b443486400394 -test/extractor-tests/generated/YieldExpr/YieldExpr_getExpr.ql 592f8938120a036d78d180eb59634341d72d5e76854d9df48ab1b9b69db99c35 efe2955a5b4acc24257f9d79a007d39951736ce8ca11970864d1e366c4e516e6 +test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.ql ff54195d2e09424faaac4e145a40208bf0e57acc57dfa8247b3751862a317c4b 583d5b98aa31a9af6ad73df000ca529f57f67aa6daaa50ca5673a56eb57bf507 +test/extractor-tests/generated/Enum/Enum.ql 11b8b502f0e79e0447a3d014616798448130ec5d686b5b12e0db687786065f4f 5ea58a9b57ece63253a82599c096ebbbd0a3c4ad136ca20662f47a4bafd2df41 +test/extractor-tests/generated/ExprStmt/ExprStmt.ql 7c62a97f7f910ae6e0e9aff7fdd78b369d21257ccab52afe6307ddea2e15dad1 2d32a366c4acbea3136ff1f9f9dadf76b148f82ad1d7170f02efd977d8a07ae9 +test/extractor-tests/generated/ExternBlock/ExternBlock.ql ceb04a9596c73dc2e750ce1950cefcf0b5fffd1ab7dc3e723e4a6500b3ef3ab2 4f6ab037d307ff351a9e48c37b47b8f8f25de5f3d5ecb78cb8c39d7275751d29 +test/extractor-tests/generated/ExternCrate/ExternCrate.ql 7cd54aa65300453fc031e69fde24466d01cdfb8ba73e24e4d134fbd3847b15a8 6a6fdeaee88c74caf7345dc8b85f326032eb27e63aa63a6ed883256e4da86d3b +test/extractor-tests/generated/ExternItemList/ExternItemList.ql 7f4d538d8878a0166b1868f391abf34df1d5e986a7a2e9ceaddb36d95bc7f46c 37072596f5a1e28ad98cc87dbfed00afadd83fa007f03d5b17d4dee8922b100f +test/extractor-tests/generated/FieldExpr/FieldExpr.ql 2a04baaf57a22b65bd5b9e142e59cc2b7d3dd3174910ddc0c2510094f2dd32b1 d8e4fb4384aade1770c907d16795a4af9884051390a5a05935ad4b4df2e757a0 +test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.ql 1501730f1e02e9d22b07b18bb42a5372e1d327bda62bdc81d75f9966946cb97d 28625f0b7ee4d7ab37fc13206585961e89a5e509a93215c16136d2382418b7af +test/extractor-tests/generated/ForExpr/ForExpr.ql 3bac38bf33e140ae9f88371ec90409f7de867e39cdea46f02b15519b236b57cb aade1baf6e6081b3b9bce5b7e95fe4b7ffe00ea9450fd6e1d6692ad97cf93fe9 +test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.ql b74c0034bf5d1bb4a1a73ab822daca4572e80983a0c88620abe92bb794dd9cd8 a18f9a6d95b46b808c3a25e11fc54d2564ace67fb98d0c76632c5d5894b31030 +test/extractor-tests/generated/FormatArgsExpr/Format.ql 237ed2e01d9a75ee8521d6578333a7b1d566f09ef2102c4efcbb34ea58f2f9e8 09007ce4de701c0d1c0967f4f728ea9e627d9db19431bd9caebbf28ee51a1f36 +test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql 5abcb565dcd2822e2ea142d19b8c92194ee17c71c3db7595248690034559d174 1ffa743fc678701ffeefff6c14c1414bb9158e6756f32380dd590ff44b19ca5a +test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql 243c2f9d830f1eae915749e81ac78d3c140280385b0002d10fcc4d2feaf14711 72b90a99a8b1c16baf1e254e1e3463c3ce5409624a2a90829122717d4e5a2b74 +test/extractor-tests/generated/FormatArgsExpr/FormatArgument.ql 0a345eb48dba8e535d12a00e88008e71b3ce692fbf8f9686c8885e158635dffe eab1f230fd572474a3f304f97d05bbf4a004c52773aaf2d34f999192244c0b80 +test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql 24108cdc54feb77c24bb7894744e36e374f0c03d46d6e6c3fcb2012b1ad117f6 05a6b6f51029ee1a15039aa9d738bb1fd7145148f1aad790198fba832572c719 +test/extractor-tests/generated/Function/Function.ql 3a30225887bd7d6fbcd6dda1c946683a2b0e289f45bc8a8fe832abe662024d4e 225475fa02be09a1b0c0fcd56a003b026b3ac938f591a47e8fbead4873b2b202 +test/extractor-tests/generated/GenericArgList/GenericArgList.ql 9bd6873e56a381a693fed0f595d60d973d0073ba7afa303750d5c6a0b887a811 0b373079f65aa91cacabfc9729c91215082a915197eb657b66bcdb3b6d5e7e53 +test/extractor-tests/generated/GenericParamList/GenericParamList.ql 206f270690f5c142777d43cf87b65d6dda5ec9f3953c17ee943fe3d0e7b7761c 38a6e0bbca916778f85b106609df6d5929baed006d55811ec0d71c75fe137e92 +test/extractor-tests/generated/IdentPat/IdentPat.ql 23006eddf0ca1188e11ba5ee25ad62a83157b83e0b99119bf924c7f74fd8e70d 6e572f48f607f0ced309113304019ccc0a828f6ddd71e818369504dcf832a0b5 +test/extractor-tests/generated/IfExpr/IfExpr.ql 540b21838ad3e1ed879b66c1903eb8517d280f99babcbf3c5307c278db42f003 a6f84a7588ce7587936f24375518a365c571210844b99cb614596e14dd5e4dfd +test/extractor-tests/generated/Impl/Impl.ql 6db0831b8b6bbb0168a63b49aae27022546256c19cc9b36d7fdebbea6a51f2f3 4d2e6b46a9a9397e6da6a58fcea6e75c5b5df37360cdfb2d6d477140c3958fb7 +test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.ql 311c6c1e18bd74fbcd367f940d2cf91777eaba6b3d6307149beb529216d086fb 16c7c81618d7f49da30b4f026dcacfb23ed130dbfcfa19b5cb44dc6e15101401 +test/extractor-tests/generated/IndexExpr/IndexExpr.ql ecfca80175a78b633bf41684a0f8f5eebe0b8a23f8de9ff27142936687711263 27d4832911f7272376a199550d57d8488e75e0eeeeb7abbfb3b135350a30d277 +test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.ql 6ba01a9e229e7dfdb2878a0bdbeb6c0888c4a068984b820e7a48d4b84995daa2 7120cafd267e956dbb4af5e19d57237275d334ffe5ff0fb635d65d309381aa46 +test/extractor-tests/generated/ItemList/ItemList.ql e29302a9212b07fdaf93618852be30adfac64b292e9a0ddbf63addb803daaa98 7e69a78b0f58ef9344892113799092149024c1352b0965a6326d8a45cd44771a +test/extractor-tests/generated/Label/Label.ql da1f302da6cb31e6ccb73c722d9d5cfaad6a26d9869b3fa09fe50b03e26f3d9b 5fbfabfef6567ec6609be1af7859eba8ecb1f7f1878b8fac426e0d7098c17ba1 +test/extractor-tests/generated/LetElse/LetElse.ql ec8e7362ce9f903731ed6bfc190fc18a6f60abf150f5cee878a0fb9adaa20b94 2e019b6e246caabe4800ab940bc150bd8e466d59dde87bd614bf064adb703c8f +test/extractor-tests/generated/LetExpr/LetExpr.ql 59f70af49ba496559a7ccfe30e737597fb473794d677627d344a9285f85dad33 b59d1f665c600055666a422c4008878cecf17d9ff847cd02b6e0e82ca73073bc +test/extractor-tests/generated/LetStmt/LetStmt.ql d89291bb071484b1e79b009b2a310a5104a2ac0e85a8581ed73135e1351c27c8 45e20da515173e372c1d1d87392eae64d6d482eab0393f9753d1ebe792241d39 +test/extractor-tests/generated/Lifetime/Lifetime.ql 9ca2da890633be36338a60e41c19a32ed03a7397ffd5c2271de964ded59b380f 475925d5aaa3c7763f3fdc703b8510408b6f729a4855d9e7ed2cf642cb7e0f98 +test/extractor-tests/generated/LifetimeArg/LifetimeArg.ql ba052a01e76251c45960451fa183cd33e7435dd2906a8a085d99ce7bfba8ee05 bfa2de807b23f139342ef820d05f50e3b3573027427d0c77b710aea5a94fc839 +test/extractor-tests/generated/LifetimeParam/LifetimeParam.ql a96f586af332969878a4e9df8f9dfca99e5c98b6f60315dd1b3fea47c4cbace9 01d87c8d686466e15e19f85aa9b2536f7b8035181444d532ff11286c77b14dcb +test/extractor-tests/generated/LiteralExpr/LiteralExpr.ql 00570642966d233a10ec3106ae65e6ea865c29d0776fdbc452815f528301117c adb286ad3bd763f1b1b350cac91bc2615869dcb9b0faf29276ace9a99d31f0cc +test/extractor-tests/generated/LiteralPat/LiteralPat.ql 863d4902e7e22de3176398cbb908e6f5f487b3d22c0f9f7a5498a1ebc112c0fd 47e3f70c5c32f17050d3ca8c8b42d94ecd38e378627880d8100b7ca182cfa793 +test/extractor-tests/generated/LoopExpr/LoopExpr.ql a178e25f63b4d517482ec63e5dfb6903dd41dadd8db39be2dd2a831e8456811f f34165f78179960cc7e5876dac26a1d0f6f67933eff9a015b92ca0e2872b63e8 +test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr.ql 62859a25b88c93db1d47055f682f1b8ed97ef227c870bc14041af106cb9593fd 14c5831920249ef2e0799ddacca62805e2e2d8b8a6cbd244acb3a20c4542bf7b +test/extractor-tests/generated/MacroCall/MacroCall.ql f98017f6070e2a5e4b191d5380cc0491d7358c456e8459b313235e44eb368794 437129210d9b7f6850adf4d2c8ef7d0644193418645d631b8edf229656fc57ac +test/extractor-tests/generated/MacroDef/MacroDef.ql 9e3647a92713d32f87e876f37d703081855ea88a7a3104757f90bd94eb382fa9 b50e9797c1b8ea5491267ddb6778862f0541617ee60bd8e167cc23a499e36733 +test/extractor-tests/generated/MacroExpr/MacroExpr.ql 83fadb88fd8f913bb1b1cda26d21b173bdc94bb6682a74eaddce650ebf72aa41 1c502cde6a95ec637e43d348c613be3dec4092b69d2c8692abdc5a9377e37f5f +test/extractor-tests/generated/MacroItems/MacroItems.ql 0f8c1d134a28b80c70d5fff7c120f17350f6116689fdd7f67bdbfbaa0302c224 9f0594aa6d96c4f368d6c6521d0b58ab456611842afbfd040cb84f8858241677 +test/extractor-tests/generated/MacroPat/MacroPat.ql 71f65d80e670ec43db768693b8d44d627278a69e938517dc9068c76785ffd102 b1577dd669cafa9cf97aa998a7f30ac4a94aff129787a2d5a1cdac553fd56397 +test/extractor-tests/generated/MacroRules/MacroRules.ql d97daa29929a5bc4e25e65755c1929f9854beb1d2a183579a1ebec1d4b346dca 8b81026fa36152d870f91981a020ed0fa06cae0380d4e8d9496fea12a95b0326 +test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.ql ebe8451a9256c9d7e77749beca88d0fd5ab73c76404bed4ff6e0c75f126159cc 72dd6d5ca4133e318fd51bb9007519b938e618cd4ef27bfe52b9c8c8cbd484ea +test/extractor-tests/generated/MatchArm/MatchArm.ql 704976bd48e56a0a2fce7c2d9454b6cd24b1bf924633702ebcd71d8521b9b171 7c2bb501002c997a680c69b6d0856da13868125913e726f1a12b97907f32064a +test/extractor-tests/generated/MatchArmList/MatchArmList.ql bbc679fe6d8dedf9131d0fa5faa7b44c138c5f56b9cf3cb209fd3ccd614b689c 916c53a2b68646b52f2d28eca2a19218ba9d12eb8edf7c6cc4140dace1bf4e0d +test/extractor-tests/generated/MatchExpr/MatchExpr.ql b75a5936401bb5ca38686f1413f5c8267ad685722560a2e9041dacf2f8d54abc 7da57118fe5b1f7f5cbe8d6b5f3ae70816fd4837b1c2e6401b98175b36ca233f +test/extractor-tests/generated/MatchGuard/MatchGuard.ql 91de18a0a18d120db568b2c329e5cb26f83e327cf22c5825c555ea17249d7d23 0bcdb25895362128517227c860b9dad76851215c2cdf9b2d0e5cc3534278f4ec +test/extractor-tests/generated/Meta/Meta.ql 43dd1cd669099b38396b316616992af6d84b0c1cee953b19235a00ab3d3bb43c 80b1885809aa074357e21707d1f8c6dca19f0b968ccff43229bb0d5c6fffb2b2 +test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql 617bc809816dc3cc1de1c0b49c494568164fe2a048472f4cce1b83f0a1f54a42 1b323e0b1812dbfdd78ee58798353e20326a3ca7529f52d5c984d1d92889a65f +test/extractor-tests/generated/Module/Module.ql 4e154af13f19ee06e88ce8ff85e143bf6ddde798b2ec6fecebf43b8015211087 78f91c2827883ea7ed1f546de80d0909f4ac57b06027439f07dcdc0a09d7888d +test/extractor-tests/generated/Name/Name.ql b2fe417f7c816f71d12622b4f84ece74eba3c128c806266a55b53f8120fa4fb3 8bc65bbf3f2909637485f5db7830d6fc110a94c9b12eefe12d7627f41eae2256 +test/extractor-tests/generated/NameRef/NameRef.ql 210a70e0957f3444195eed3a3dfbb5806e349238c0b390dc00597e6b8b05fcec d74fbce3c71aa7b08ae4cb646ccb114335767cb4fe000322f9dd371c1bb3784f +test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.ql 4e73ec96fccb00fe241546ff12c47329a9c67b7ae40a58a5afa39ecb611b84d4 bb716f72db039e0a82de959e390259a82cf99ba4482070602b7b6b42511976e5 +test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql 851d84073f4a14cef24ce945a099bc43b22381fc21672ba9ba424623d66d9e0e b3ca3309da0054501dc49f83b9e1b51c155966a14504521565ea980cf1600f55 +test/extractor-tests/generated/OrPat/OrPat.ql 8742e1708da0bcc172c8cc637082672c92a136aa50bb2f0ef928387337aefa3e 1901c223502e8cc046c233a10d923226373bad0837264e2b837fd549929020e3 +test/extractor-tests/generated/Param/Param.ql de90709cbd61e1852c857ffb6cedd17818464c93bb7bdc92c900ee04f4d2a27c a105ee30716345987989d48c4fa6194c34741fc48528515aeca673662b5259cb +test/extractor-tests/generated/ParamList/ParamList.ql 015cfeec048fc89698d75a04492a0e39303b1264f80e2b6977d178aba18a745d 349455ea6fe026a482bf9d63e9581ed2f368de3331bd2f0b9591ec20ee2a5f21 +test/extractor-tests/generated/ParenExpr/ParenExpr.ql 5ac9654a149f32638a663894db769152ce5a5abff7051e4d865bf0ac2485759a 3fa0afc9522c241d7530cc6d1e52b662d920f0459684bec82fcfda30d2ec9871 +test/extractor-tests/generated/ParenPat/ParenPat.ql 50f99c6a7e5e2f76dc5bbc10a6b2db5f5f40b85e80a992aa616e424744a7606d 5ae681b09e7b8793d2d8fa36e9e7d9b6c32fc94d6c26d43425407d05d351fcb3 +test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.ql 86a45a9f9696a55562a7125f08297bcd50b368225a13cd31b6e9eb4071d04e13 53c0b8c4f453a748c9534220960c6ce8c52bd7501cf1d1f74e3928fc6512667c +test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.ql 6d0e3f7cbcc835f2a5784ccb09b0d65c2bb063c1904edded2e7fc8c9fb57c4fa e41c898b8b0d61078e0d76c6e2e141251dca71f79ad5fa119c012220c54cc409 +test/extractor-tests/generated/Path/Path.ql 0f6b63c723da7f140411c8e9a4bb9fbe043a997a1748a4a491add4bd6e81fd6e 5081db5bd590b72780c3c8032532e65b5d453c327c8771da6b87c10e30071523 +test/extractor-tests/generated/Path/PathExpr.ql 2b032a00d8f5570b34f44bdb4209f199f821e093011472b5c686918a063442a5 9f10b1e38863da09365fc45f749578dde74bbb64d35972fa34b83e6814f0004a +test/extractor-tests/generated/Path/PathPat.ql 8d8053588dba1f35fff3bb89eb66f1534f637cf3b56338a6f3c19d748db7e1ca d7405ca5bf3bfa6960426964be3ea32562e1367c74b1f438c0827573eeaf773a +test/extractor-tests/generated/Path/PathSegment.ql 87774cc2e9d1be7aaf8748d418b151d7ec03fb20fda9430ebabd86ddaebf5538 699545d8eb2d6325bcd2c253d56339bd71170b34e80efe5155189fbbdde9fbbc +test/extractor-tests/generated/Path/PathTypeRepr.ql 32023340cb9aa1fbf52a1a3e330c6f3206e1c64c9dce2f795d9e434aa5a1533b f451de0d4941ab79014d2883b46291f9f05f79d479fcdcab387020ab3ed68703 +test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql 63e9dbae0d0b46d5e9d60c313e408c4c7ee1a93c5a26fe4c01a632911de961d0 09fcc28bb22553356aebf9ea93811703e5404b88022be8dab61ac81d3b187b75 +test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.ql d9289bfe1e72d9560b3878e4557f8cfda578ef7bce67eb29d7320921c0ba46a5 f3ea108aa25635bffa7673bb66b2581ce246d3aae86edf878c6f1abca2493c16 +test/extractor-tests/generated/RangeExpr/RangeExpr.ql c9776706d933606d1463bb08ed76457ac03a9558f6dac0218ef2012bc5e8e48f 77cafee86abc2680e1f9c925fbe664c05ba1b9a2533b1873242ef01dde1ce308 +test/extractor-tests/generated/RangePat/RangePat.ql 72b6a5e250fcec844f96623f265762462966775326ad0ad4df03203ff17f0066 04c375e98d6c7d336ebf7dee522f0fc716b7ec8141752534ed083c5d2550c679 +test/extractor-tests/generated/RefExpr/RefExpr.ql 4359b9e10727fc505213a896c4c8761258f355b572e11675a5081d811affb4ea 0c46fcbd866334d168e1c4c481b4ad419df048e4ba74488875b2799d316291a7 +test/extractor-tests/generated/RefPat/RefPat.ql c83d5e79a7d5977f658d64e8caea471b948400bcb90a3610283bdb5e9757b99e 26fa8a337e242ce660eb0dc25709148b837fff3229b259bfcd2987261c58c38b +test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.ql c545689e4cee2035d79fdc3d9b720e7231232f57f35d16848b20d4659650a8c0 f248b342115cb0691f3ebe38ec9a65c8a36440cdf2f28b3ca7faed779a6d4164 +test/extractor-tests/generated/Rename/Rename.ql b65855515219a5fc1889f619d76e3fbb8fbe6a631f931e313608964640f68abe 7da9373ceb58054189036fcf5a262d9cb6897ea9d1008c963f8a18c34b99a60b +test/extractor-tests/generated/RestPat/RestPat.ql 59fbb7dc4bbad60a0a7ec91d8997ccf8a7036d4bb20c88332791906d88672c1f b104f06c2d350a9d703abdb28619672618d0082a0fbe7bcc67fa8df5526b266d +test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.ql a6a8ad01a54f8f4384d3e1ab6352cca1e55c9041673705658b9feec3e3a1d3b4 d9ba5a13087e7731019d947219f20af547664965b2b304bd23155994ea1aa397 +test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql b44ca36c30cd584c9f976e625a6bc09242792016d5e78057f9ec4174f3a0341f f61dcce549d282a9b7f0bbdcb612909799156231f22f2b5824ec6083630013ec +test/extractor-tests/generated/ReturnTypeSyntax/ReturnTypeSyntax.ql b08a4d4ad63ea6e62f8b9646fd838cac9d122a93f5716ee91ff7c62fa987a1d0 264d485a301f4220eaa580ae90964b05c1a2b19b898698e7cdcc86b624ba3aba +test/extractor-tests/generated/SelfParam/SelfParam.ql 7e57dd845ddc9142cce250c7e67e36044f2cc27b618a3b8876db7a6ac336d3e3 e546b5a690770e57bcfb07a662430f62128a3fed4eb46bd17c60c9e4595154ba +test/extractor-tests/generated/SlicePat/SlicePat.ql ec056b803471d22c8575313e0caca89a3d527d228719375e87cc6061c3da4ffe fb0af765ce9d04805cdd445e2222d6f956c6789285705bb1079e540935ae6cc5 +test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.ql a009f2ba47f3b082db274b6bd7068d65c0205bd11b13d2c202e43a6b9b48e76b a3092ea5f2b7113235aec5136800205265f1607c5cfac9f5a3552bed5d98cdf2 +test/extractor-tests/generated/SourceFile/SourceFile.ql 19ae5570a88b9e2d82db66685a31b01cc8e0c86c622a4bfaabe8c5b397b27eea 60e2ba5eb82518d6408254fb4ec01277b6c6c0e4316d4f3cdc809da9c32c4a57 +test/extractor-tests/generated/Static/Static.ql 103276adfe23b609b5965439d024007d4ed6831562452f880ee89300aab3e3a6 0418668d83b2e570bddb6edbf4eb7927f4fa6933ccda86c0354463bb839f724f +test/extractor-tests/generated/StmtList/StmtList.ql 4c6b9d5d8fd7535f97d81b968d4f67fc50e10c5d0f980e7c2704bbf5cd07481e ad972adb8d9a7892e6f8a12d96649340441f947afc99e633ea438c4d5c795ce4 +test/extractor-tests/generated/Struct/Struct.ql 197de8de01ede52110d827c4a673fcedc9175b1245b736a211b8724b4345902b fdf5d848a3b5dde164f1a540d7212fd3a3f6b0228c4645ddca773190830e2eb4 +test/extractor-tests/generated/StructExpr/StructExpr.ql 1e577f7cc83aa86fc82e4ac467bfb8a0c239408d4217f92a0a689957ea4fe6fe 35568a6cb7f0aaa3026e11a3b0e750eb5e93d4c0b6f737171e27c84f5dc967ac +test/extractor-tests/generated/StructExprField/StructExprField.ql b65375963aa24f0d1dd4c10784e32ab8c337ad431462ea1d081a0e456fbb1362 7f5a49e8df03ed0890b51c2e941d636fbbf70445a53d3af2c0f34a04f26bc6ef +test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql 01dc3ef66d79836a3d372464f05454015648ab093f9547c5d9c5d55271acb718 83625301c097fa38d4e6021ea28b8adc6338076c8c2aa88a86a22aac412839f6 +test/extractor-tests/generated/StructField/StructField.ql dbdb627202975a0ca07ed441449ecc95d9d0764084a49a18e7849164b2e65ce2 8e7f32f28d15104575eaa985e892c162ec775adf3481c227ef618b5668168de7 +test/extractor-tests/generated/StructFieldList/StructFieldList.ql 292170b20f3a55c0cd6a8d78ce99474ca68daf6fb380cffe00b2bd7074e1b73a 404bab780f290ae04d1d71d3c6d4e0092bb3d8c55e956168d2a445cbd6d1f06d +test/extractor-tests/generated/StructPat/StructPat.ql 73bd755ffb8d5ff3c77d7570c6d50eab7b51d8d4a44b638cf5904c37065f496e 9589dc8d8abd80d9f48d445af3dbdbd906a9c19dc75582688bf9c3abaa16861e +test/extractor-tests/generated/StructPatField/StructPatField.ql 92cb6a4b5234359c02d66085b10d41f37b77370491ed478ad6d4d9b12b943ecf 14bc2079763b53bc6ab11356f3bb21820ae9e4dd1b2a42a78665c32181c4ef92 +test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.ql a3ba3e99d3c87d5e0ae0ad82cbea3600ac1745e9364d54d8d51224b51a5a09a5 5942ed2722c006bae99de9174249110bfc79594c5ef9a6dfc098ae2be269b8f3 +test/extractor-tests/generated/TokenTree/TokenTree.ql 55592f43a6fe99045d0b0b1e2323211d3a3fd64a8c7d2b083f2518d4c3e2e4b0 8eeef2060c80b0918857ba9b3a8543a4b866ca04be3d5ca18aae8a26cbdb836e +test/extractor-tests/generated/Trait/AssocItemList.ql 065c4903992500423d796800e7dc9a5835a07cbada595108f3af6efa72517782 aa797bf5ddefb800d5ca7f49c19c5124b1007e1658129b27c8c3de34427c7f08 +test/extractor-tests/generated/Trait/Trait.ql ba40c2de2e8f2225ea7876c36b2510079838c0f4a99232bf0f3a3ab56b7705c4 c34364d0425f597a645fbb8b6a3874588cc652044909f1db73b09f2b6deae072 +test/extractor-tests/generated/TraitAlias/TraitAlias.ql 434558e26e1cdc4054536dd7a3e5e636509cd0f8576ba1612224a9873882a383 c904109afa94cffeacd6749dd4ad8b9d2e2cb3b228c275898d88625615dbedfc +test/extractor-tests/generated/TryExpr/TryExpr.ql 4e3c224a7d5fb8f01654c7d3c79414daa575897cfa6f351fcd5b5832f53a151f d961a497c304c1c5aa1d94e04aed2bf17a2c422e315f05986e1a9027e69dbd2a +test/extractor-tests/generated/TupleExpr/TupleExpr.ql 4011d94438903e96fa321285558f5791bee7e1d1fb26be0381586511cf439d1b c6bc8d08a8d5d98d7a52b72d5c597b63754fe12cec653c520833e4b71a9dcea4 +test/extractor-tests/generated/TupleField/TupleField.ql ed681b7fee5e68d24db4999389727b2589e5af793d3c2ddc8b1e245713c0e1f8 4f867b29adf91b4bfa5052e16d392c16bf260e858aad11b60c42f1eddb476e61 +test/extractor-tests/generated/TupleFieldList/TupleFieldList.ql 3c3fcef21231550bbbf6804314b94d44cc18d445987c23cb6f2c88015570cc4a 8958e6748296bc6d0ad469e52852c38445fe462a8599a2e71867aa5d7066595e +test/extractor-tests/generated/TuplePat/TuplePat.ql 80609f1c525e90e13f34d55a81d47a83a03e064241f8d33232e2a79eaeea5159 d289b19dae4cbae0180cc58bb946f41646bb9dc008f5ce8a0e12eaddbc7e63e9 +test/extractor-tests/generated/TupleStructPat/TupleStructPat.ql d00b185013bb4e5f878a5ec261ab2cfbf1fe2f67d1ad2e05d062629211f677ec 24254631a28c24ca78b4fa1b89c53b0b002cb43fe585e274155fcca0c481056c +test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.ql 2f1503734d272cd0616e5885cd344659cbd0ae7309a375c8351f57f2b86c3302 276a4fe91b8dc64cdca4467343e2bb2e240c66ec1e4e11bf8cba73819c6532cc +test/extractor-tests/generated/TypeAlias/TypeAlias.ql 2b120c7fe640b233540f6982153fddf50ddc089b8284dca321b4c48eecf93dfd 6d40a0d8c927dd499fd92fd95638c50eeca8f956aa1706c17913dbf83f0f500c +test/extractor-tests/generated/TypeArg/TypeArg.ql e1ca286c03bd2d44054f5dd75aac250382037f243046c49ec752ad8d65e4c0ba f316d5fa84a721427c0aadf6bfa0ed4cfd86e4d318cfb0fe82efc52e65c4733b +test/extractor-tests/generated/TypeBound/TypeBound.ql 4f5a2a49075c01c982988e66759f61c5285343d78cda94e228e17593d16fee6e 7aae320e881d6ea969e31b1e8fe586feb07b1db43c65da684cbac66157354851 +test/extractor-tests/generated/TypeBoundList/TypeBoundList.ql 6827529eca62f5e7be87538af6231099f5932f39d8694f7a76369273b93f28ea 539dac4ccda7e51b7ae1a9e05d8a56a98176d9de25d5ed4347ebe2fbea8adeb1 +test/extractor-tests/generated/TypeParam/TypeParam.ql c5f8f62f2877c719c3cf069f9d0ca83cebc14f7611c6c2dce86c85114ea2635c 751c630986f35a8d0d32fbeb61ca6ff801c96cd1829dbccc874fbf5f5158e98d +test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql a7b7a93104fff28515154cf8e79045d3eea2494b5c46f1caf36639c53b1c64a7 070ee2e1664e3291646ea56681b5c93331f94dcc519deb28622beca3e26e16f3 +test/extractor-tests/generated/Union/Union.ql ef31f8b10ced5ed3a441f8ad0640e2fb46e566c859856e84f5a7fd6c85424b2c 1066561577ab19bf028ea29622750adc17de5b4d5dd0a8f77a8a50c8a15062b6 +test/extractor-tests/generated/Use/Use.ql a12b9867cc71a681cd4602c4045e75288a7cca502d48e20ccf17e155be130b3b 2b9dcac18670b062461193a6b40fcf569f19605b14daff82239fb39fd7fa3408 +test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.ql 46ff2cf0fc8b561b21f8dff3230550f2feafbe52a7ea8b28bf183abef94ff241 92646f3bd15a8cf4c23ee9de4d857ac5c147e570ef0eb223423a109b4b79aedf +test/extractor-tests/generated/UseTree/UseTree.ql 3c2bc924b54b9af5c95784023d4098924571ba464c5982124acea712c3ce0e93 8d9f963b61a9a8a83efd93438ce8b43d4aa763493338ad9afd2a3dc7a440892d +test/extractor-tests/generated/UseTreeList/UseTreeList.ql faff7bfc060d5b0a922f38b37bf586596566186f704c9921651785580e86d684 81e5b90edeef0d3883547844a030e72b555d714de1ed8dded1c22a3772b4449a +test/extractor-tests/generated/Variant/Variant.ql 9405704e9192cac4838dcba8625261d5c1f839bb8c26dac44c2d517d172a06da 7236de83eb542cb4024e07d2cb5a899c851116a3a66b3896270ecf663439c6fe +test/extractor-tests/generated/VariantList/VariantList.ql 1c1d82ce3ecfa7daaae1920662510e81892ed899a3c2f785e2ff3670245a03cd 29d4c5ab2b737a92c7525789e10a4aa9848f1a327e34f4e9543018021106b303 +test/extractor-tests/generated/Visibility/Visibility.ql 725d47d7444332133df603f9b06592dc40b0f83bf5e21ad4781c5658e001a3aa 2d65a30702a8bb5bc91caf6ae2d0e4c769b3eeb0d72ffbd9cdb81048be4061ad +test/extractor-tests/generated/WhereClause/WhereClause.ql a6f0e69ffa6b997cac04d4da442eb8bde517a576840c953abcc40863b9099ba1 7ce888fffc3038d5b18f8c94d3b045815cd45500e1bb3849c05fc874edbeb695 +test/extractor-tests/generated/WherePred/WherePred.ql 504d00a40e418542c3e0ff30d43c4d2d0e7218b2a31fcf32c9310d705d97b9fe 61c53dde539a9e1e3d6bf13ca1d0dab8af6ea6b54ab698a0a5a5f49bf627934b +test/extractor-tests/generated/WhileExpr/WhileExpr.ql dcfe1ed375514a7b7513272767ed195cdbf339b56e00e62d207ca1eee080f164 f067283510655f0cf810cae834ac29ad2c6007ba312d027ebcdf695a23ec33e4 +test/extractor-tests/generated/WildcardPat/WildcardPat.ql d36f52a1d00d338b43894b6f8e198ad0c409542f436e3e57d527205c3dfee38c 4e1321e714cedb606e0d84f10ed37c72da61b3a1616754b967f721ff0bc0e4ee +test/extractor-tests/generated/YeetExpr/YeetExpr.ql 5c552b490ccf5b123f7a2fa3e73d03d008e4df5928ffa0bd503dc6bd7736462c 09a4f413ae045051abe392f29949d6feab1a808d666c6b8dac0901f84a8a4740 +test/extractor-tests/generated/YieldExpr/YieldExpr.ql 1d948eaa69ccffb12a2f832b84918d36becfd356d1c6d7cfa9315df03e77ca95 c31281830aee6866b0d4757a427183df4d2f06245345db61f69e9bfa5cd09a63 diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index 3326912c0ca8..b083b6e6ab55 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -3,6 +3,7 @@ /lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll linguist-generated /lib/codeql/rust/elements/Abi.qll linguist-generated /lib/codeql/rust/elements/Addressable.qll linguist-generated +/lib/codeql/rust/elements/Adt.qll linguist-generated /lib/codeql/rust/elements/ArgList.qll linguist-generated /lib/codeql/rust/elements/ArrayExpr.qll linguist-generated /lib/codeql/rust/elements/ArrayListExpr.qll linguist-generated @@ -183,7 +184,6 @@ /lib/codeql/rust/elements/UseTree.qll linguist-generated /lib/codeql/rust/elements/UseTreeList.qll linguist-generated /lib/codeql/rust/elements/Variant.qll linguist-generated -/lib/codeql/rust/elements/VariantDef.qll linguist-generated /lib/codeql/rust/elements/VariantList.qll linguist-generated /lib/codeql/rust/elements/Visibility.qll linguist-generated /lib/codeql/rust/elements/WhereClause.qll linguist-generated @@ -194,6 +194,7 @@ /lib/codeql/rust/elements/YieldExpr.qll linguist-generated /lib/codeql/rust/elements/internal/AbiConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/AbiImpl.qll linguist-generated +/lib/codeql/rust/elements/internal/AdtImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ArgListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ArgListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ArrayExprInternal.qll linguist-generated @@ -227,7 +228,6 @@ /lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmSymConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/AsmSymImpl.qll linguist-generated -/lib/codeql/rust/elements/internal/AssocItemImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AssocItemListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/AssocItemListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AssocTypeArgConstructor.qll linguist-generated @@ -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 @@ -445,7 +444,6 @@ /lib/codeql/rust/elements/internal/UseTreeListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/UseTreeListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/VariantConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/VariantDefImpl.qll linguist-generated /lib/codeql/rust/elements/internal/VariantListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/VariantListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/VisibilityConstructor.qll linguist-generated @@ -462,6 +460,7 @@ /lib/codeql/rust/elements/internal/YieldExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Abi.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Addressable.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/Adt.qll linguist-generated /lib/codeql/rust/elements/internal/generated/ArgList.qll linguist-generated /lib/codeql/rust/elements/internal/generated/ArrayExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/ArrayExprInternal.qll linguist-generated @@ -650,7 +649,6 @@ /lib/codeql/rust/elements/internal/generated/UseTree.qll linguist-generated /lib/codeql/rust/elements/internal/generated/UseTreeList.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Variant.qll linguist-generated -/lib/codeql/rust/elements/internal/generated/VariantDef.qll linguist-generated /lib/codeql/rust/elements/internal/generated/VariantList.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Visibility.qll linguist-generated /lib/codeql/rust/elements/internal/generated/WhereClause.qll linguist-generated @@ -661,603 +659,162 @@ /lib/codeql/rust/elements/internal/generated/YieldExpr.qll linguist-generated /lib/codeql/rust/elements.qll linguist-generated /test/extractor-tests/generated/Abi/Abi.ql linguist-generated -/test/extractor-tests/generated/Abi/Abi_getAbiString.ql linguist-generated /test/extractor-tests/generated/ArgList/ArgList.ql linguist-generated -/test/extractor-tests/generated/ArgList/ArgList_getArg.ql linguist-generated /test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql linguist-generated -/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getExpr.ql linguist-generated /test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql linguist-generated -/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getExpr.ql linguist-generated /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/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/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 -/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getIdentifier.ql linguist-generated -/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getParamList.ql linguist-generated -/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getRetType.ql linguist-generated -/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getReturnTypeSyntax.ql linguist-generated -/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeBoundList.ql linguist-generated -/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/Attr/Attr.ql linguist-generated -/test/extractor-tests/generated/Attr/Attr_getMeta.ql linguist-generated /test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql linguist-generated -/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getExpr.ql linguist-generated /test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql linguist-generated -/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getExpr.ql linguist-generated /test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql linguist-generated -/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getLhs.ql linguist-generated -/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getOperatorName.ql linguist-generated -/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getRhs.ql linguist-generated /test/extractor-tests/generated/BlockExpr/BlockExpr.ql linguist-generated -/test/extractor-tests/generated/BlockExpr/BlockExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.ql linguist-generated -/test/extractor-tests/generated/BlockExpr/BlockExpr_getStmtList.ql linguist-generated /test/extractor-tests/generated/BoxPat/BoxPat.ql linguist-generated -/test/extractor-tests/generated/BoxPat/BoxPat_getPat.ql linguist-generated /test/extractor-tests/generated/BreakExpr/BreakExpr.ql linguist-generated -/test/extractor-tests/generated/BreakExpr/BreakExpr_getAttr.ql linguist-generated -/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_getArgList.ql linguist-generated -/test/extractor-tests/generated/CallExpr/CallExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/CallExpr/CallExpr_getFunction.ql linguist-generated /test/extractor-tests/generated/CastExpr/CastExpr.ql linguist-generated -/test/extractor-tests/generated/CastExpr/CastExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.ql linguist-generated -/test/extractor-tests/generated/CastExpr/CastExpr_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/ClosureBinder/ClosureBinder.ql linguist-generated -/test/extractor-tests/generated/ClosureBinder/ClosureBinder_getGenericParamList.ql linguist-generated /test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql linguist-generated -/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_getParamList.ql linguist-generated -/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.ql linguist-generated /test/extractor-tests/generated/Comment/Comment.ql linguist-generated /test/extractor-tests/generated/Const/Const.ql linguist-generated -/test/extractor-tests/generated/Const/Const_getAttr.ql linguist-generated -/test/extractor-tests/generated/Const/Const_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/Const/Const_getBody.ql linguist-generated -/test/extractor-tests/generated/Const/Const_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/Const/Const_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/Const/Const_getName.ql linguist-generated -/test/extractor-tests/generated/Const/Const_getTypeRepr.ql linguist-generated -/test/extractor-tests/generated/Const/Const_getVisibility.ql linguist-generated /test/extractor-tests/generated/ConstArg/ConstArg.ql linguist-generated -/test/extractor-tests/generated/ConstArg/ConstArg_getExpr.ql linguist-generated /test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.ql linguist-generated -/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat_getBlockExpr.ql linguist-generated /test/extractor-tests/generated/ConstParam/ConstParam.ql linguist-generated -/test/extractor-tests/generated/ConstParam/ConstParam_getAttr.ql linguist-generated -/test/extractor-tests/generated/ConstParam/ConstParam_getDefaultVal.ql linguist-generated -/test/extractor-tests/generated/ConstParam/ConstParam_getName.ql linguist-generated -/test/extractor-tests/generated/ConstParam/ConstParam_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql linguist-generated -/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getLifetime.ql linguist-generated /test/extractor-tests/generated/Crate/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.ql linguist-generated -/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr_getTypeBoundList.ql linguist-generated /test/extractor-tests/generated/Enum/Enum.ql linguist-generated -/test/extractor-tests/generated/Enum/Enum_getAttr.ql linguist-generated -/test/extractor-tests/generated/Enum/Enum_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/Enum/Enum_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/Enum/Enum_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/Enum/Enum_getGenericParamList.ql linguist-generated -/test/extractor-tests/generated/Enum/Enum_getName.ql linguist-generated -/test/extractor-tests/generated/Enum/Enum_getVariantList.ql linguist-generated -/test/extractor-tests/generated/Enum/Enum_getVisibility.ql linguist-generated -/test/extractor-tests/generated/Enum/Enum_getWhereClause.ql linguist-generated /test/extractor-tests/generated/ExprStmt/ExprStmt.ql linguist-generated -/test/extractor-tests/generated/ExprStmt/ExprStmt_getExpr.ql linguist-generated /test/extractor-tests/generated/ExternBlock/ExternBlock.ql linguist-generated -/test/extractor-tests/generated/ExternBlock/ExternBlock_getAbi.ql linguist-generated -/test/extractor-tests/generated/ExternBlock/ExternBlock_getAttr.ql linguist-generated -/test/extractor-tests/generated/ExternBlock/ExternBlock_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/ExternBlock/ExternBlock_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/ExternBlock/ExternBlock_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/ExternBlock/ExternBlock_getExternItemList.ql linguist-generated /test/extractor-tests/generated/ExternCrate/ExternCrate.ql linguist-generated -/test/extractor-tests/generated/ExternCrate/ExternCrate_getAttr.ql linguist-generated -/test/extractor-tests/generated/ExternCrate/ExternCrate_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/ExternCrate/ExternCrate_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/ExternCrate/ExternCrate_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/ExternCrate/ExternCrate_getIdentifier.ql linguist-generated -/test/extractor-tests/generated/ExternCrate/ExternCrate_getRename.ql linguist-generated -/test/extractor-tests/generated/ExternCrate/ExternCrate_getVisibility.ql linguist-generated /test/extractor-tests/generated/ExternItemList/ExternItemList.ql linguist-generated -/test/extractor-tests/generated/ExternItemList/ExternItemList_getAttr.ql linguist-generated -/test/extractor-tests/generated/ExternItemList/ExternItemList_getExternItem.ql linguist-generated /test/extractor-tests/generated/FieldExpr/FieldExpr.ql linguist-generated -/test/extractor-tests/generated/FieldExpr/FieldExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/FieldExpr/FieldExpr_getContainer.ql linguist-generated -/test/extractor-tests/generated/FieldExpr/FieldExpr_getIdentifier.ql linguist-generated /test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.ql linguist-generated -/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getAbi.ql linguist-generated -/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getParamList.ql linguist-generated -/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getRetType.ql linguist-generated /test/extractor-tests/generated/ForExpr/ForExpr.ql linguist-generated -/test/extractor-tests/generated/ForExpr/ForExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/ForExpr/ForExpr_getIterable.ql linguist-generated -/test/extractor-tests/generated/ForExpr/ForExpr_getLabel.ql linguist-generated -/test/extractor-tests/generated/ForExpr/ForExpr_getLoopBody.ql linguist-generated -/test/extractor-tests/generated/ForExpr/ForExpr_getPat.ql linguist-generated /test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.ql linguist-generated -/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getGenericParamList.ql linguist-generated -/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/FormatArgsExpr/Format.ql linguist-generated /test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql linguist-generated -/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getExpr.ql linguist-generated -/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getName.ql linguist-generated /test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql linguist-generated -/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getArg.ql linguist-generated -/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getFormat.ql linguist-generated -/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getTemplate.ql linguist-generated /test/extractor-tests/generated/FormatArgsExpr/FormatArgument.ql linguist-generated -/test/extractor-tests/generated/FormatArgsExpr/FormatArgument_getVariable.ql linguist-generated /test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql linguist-generated -/test/extractor-tests/generated/FormatArgsExpr/Format_getArgumentRef.ql linguist-generated -/test/extractor-tests/generated/FormatArgsExpr/Format_getPrecisionArgument.ql linguist-generated -/test/extractor-tests/generated/FormatArgsExpr/Format_getWidthArgument.ql linguist-generated /test/extractor-tests/generated/Function/Function.ql linguist-generated -/test/extractor-tests/generated/Function/Function_getAbi.ql linguist-generated -/test/extractor-tests/generated/Function/Function_getAttr.ql linguist-generated -/test/extractor-tests/generated/Function/Function_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/Function/Function_getBody.ql linguist-generated -/test/extractor-tests/generated/Function/Function_getCrateOrigin.ql linguist-generated -/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_getParamList.ql linguist-generated -/test/extractor-tests/generated/Function/Function_getRetType.ql linguist-generated -/test/extractor-tests/generated/Function/Function_getVisibility.ql linguist-generated -/test/extractor-tests/generated/Function/Function_getWhereClause.ql linguist-generated /test/extractor-tests/generated/GenericArgList/GenericArgList.ql linguist-generated -/test/extractor-tests/generated/GenericArgList/GenericArgList_getGenericArg.ql linguist-generated /test/extractor-tests/generated/GenericParamList/GenericParamList.ql linguist-generated -/test/extractor-tests/generated/GenericParamList/GenericParamList_getGenericParam.ql linguist-generated /test/extractor-tests/generated/IdentPat/IdentPat.ql linguist-generated -/test/extractor-tests/generated/IdentPat/IdentPat_getAttr.ql linguist-generated -/test/extractor-tests/generated/IdentPat/IdentPat_getName.ql linguist-generated -/test/extractor-tests/generated/IdentPat/IdentPat_getPat.ql linguist-generated /test/extractor-tests/generated/IfExpr/IfExpr.ql linguist-generated -/test/extractor-tests/generated/IfExpr/IfExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/IfExpr/IfExpr_getCondition.ql linguist-generated -/test/extractor-tests/generated/IfExpr/IfExpr_getElse.ql linguist-generated -/test/extractor-tests/generated/IfExpr/IfExpr_getThen.ql linguist-generated /test/extractor-tests/generated/Impl/Impl.ql linguist-generated -/test/extractor-tests/generated/Impl/Impl_getAssocItemList.ql linguist-generated -/test/extractor-tests/generated/Impl/Impl_getAttr.ql linguist-generated -/test/extractor-tests/generated/Impl/Impl_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/Impl/Impl_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/Impl/Impl_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/Impl/Impl_getGenericParamList.ql linguist-generated -/test/extractor-tests/generated/Impl/Impl_getSelfTy.ql linguist-generated -/test/extractor-tests/generated/Impl/Impl_getTrait.ql linguist-generated -/test/extractor-tests/generated/Impl/Impl_getVisibility.ql linguist-generated -/test/extractor-tests/generated/Impl/Impl_getWhereClause.ql linguist-generated /test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.ql linguist-generated -/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr_getTypeBoundList.ql linguist-generated /test/extractor-tests/generated/IndexExpr/IndexExpr.ql linguist-generated -/test/extractor-tests/generated/IndexExpr/IndexExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.ql linguist-generated -/test/extractor-tests/generated/IndexExpr/IndexExpr_getIndex.ql linguist-generated /test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.ql linguist-generated /test/extractor-tests/generated/ItemList/ItemList.ql linguist-generated -/test/extractor-tests/generated/ItemList/ItemList_getAttr.ql linguist-generated -/test/extractor-tests/generated/ItemList/ItemList_getItem.ql linguist-generated /test/extractor-tests/generated/Label/Label.ql linguist-generated -/test/extractor-tests/generated/Label/Label_getLifetime.ql linguist-generated /test/extractor-tests/generated/LetElse/LetElse.ql linguist-generated -/test/extractor-tests/generated/LetElse/LetElse_getBlockExpr.ql linguist-generated /test/extractor-tests/generated/LetExpr/LetExpr.ql linguist-generated -/test/extractor-tests/generated/LetExpr/LetExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/LetExpr/LetExpr_getPat.ql linguist-generated -/test/extractor-tests/generated/LetExpr/LetExpr_getScrutinee.ql linguist-generated /test/extractor-tests/generated/LetStmt/LetStmt.ql linguist-generated -/test/extractor-tests/generated/LetStmt/LetStmt_getAttr.ql linguist-generated -/test/extractor-tests/generated/LetStmt/LetStmt_getInitializer.ql linguist-generated -/test/extractor-tests/generated/LetStmt/LetStmt_getLetElse.ql linguist-generated -/test/extractor-tests/generated/LetStmt/LetStmt_getPat.ql linguist-generated -/test/extractor-tests/generated/LetStmt/LetStmt_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/Lifetime/Lifetime.ql linguist-generated -/test/extractor-tests/generated/Lifetime/Lifetime_getText.ql linguist-generated /test/extractor-tests/generated/LifetimeArg/LifetimeArg.ql linguist-generated -/test/extractor-tests/generated/LifetimeArg/LifetimeArg_getLifetime.ql linguist-generated /test/extractor-tests/generated/LifetimeParam/LifetimeParam.ql linguist-generated -/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getAttr.ql linguist-generated -/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getLifetime.ql linguist-generated -/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getTypeBoundList.ql linguist-generated /test/extractor-tests/generated/LiteralExpr/LiteralExpr.ql linguist-generated -/test/extractor-tests/generated/LiteralExpr/LiteralExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/LiteralExpr/LiteralExpr_getTextValue.ql linguist-generated /test/extractor-tests/generated/LiteralPat/LiteralPat.ql linguist-generated -/test/extractor-tests/generated/LiteralPat/LiteralPat_getLiteral.ql linguist-generated /test/extractor-tests/generated/LoopExpr/LoopExpr.ql linguist-generated -/test/extractor-tests/generated/LoopExpr/LoopExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.ql linguist-generated -/test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.ql linguist-generated /test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr.ql linguist-generated -/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getStatement.ql linguist-generated -/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getTailExpr.ql linguist-generated /test/extractor-tests/generated/MacroCall/MacroCall.ql linguist-generated -/test/extractor-tests/generated/MacroCall/MacroCall_getAttr.ql linguist-generated -/test/extractor-tests/generated/MacroCall/MacroCall_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/MacroCall/MacroCall_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/MacroCall/MacroCall_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/MacroCall/MacroCall_getMacroCallExpansion.ql linguist-generated -/test/extractor-tests/generated/MacroCall/MacroCall_getPath.ql linguist-generated -/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.ql linguist-generated /test/extractor-tests/generated/MacroDef/MacroDef.ql linguist-generated -/test/extractor-tests/generated/MacroDef/MacroDef_getArgs.ql linguist-generated -/test/extractor-tests/generated/MacroDef/MacroDef_getAttr.ql linguist-generated -/test/extractor-tests/generated/MacroDef/MacroDef_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/MacroDef/MacroDef_getBody.ql linguist-generated -/test/extractor-tests/generated/MacroDef/MacroDef_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/MacroDef/MacroDef_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/MacroDef/MacroDef_getName.ql linguist-generated -/test/extractor-tests/generated/MacroDef/MacroDef_getVisibility.ql linguist-generated /test/extractor-tests/generated/MacroExpr/MacroExpr.ql linguist-generated -/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.ql linguist-generated /test/extractor-tests/generated/MacroItems/MacroItems.ql linguist-generated -/test/extractor-tests/generated/MacroItems/MacroItems_getItem.ql linguist-generated /test/extractor-tests/generated/MacroPat/MacroPat.ql linguist-generated -/test/extractor-tests/generated/MacroPat/MacroPat_getMacroCall.ql linguist-generated /test/extractor-tests/generated/MacroRules/MacroRules.ql linguist-generated -/test/extractor-tests/generated/MacroRules/MacroRules_getAttr.ql linguist-generated -/test/extractor-tests/generated/MacroRules/MacroRules_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/MacroRules/MacroRules_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/MacroRules/MacroRules_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/MacroRules/MacroRules_getName.ql linguist-generated -/test/extractor-tests/generated/MacroRules/MacroRules_getTokenTree.ql linguist-generated -/test/extractor-tests/generated/MacroRules/MacroRules_getVisibility.ql linguist-generated /test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.ql linguist-generated -/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr_getMacroCall.ql linguist-generated /test/extractor-tests/generated/MatchArm/MatchArm.ql linguist-generated -/test/extractor-tests/generated/MatchArm/MatchArm_getAttr.ql linguist-generated -/test/extractor-tests/generated/MatchArm/MatchArm_getExpr.ql linguist-generated -/test/extractor-tests/generated/MatchArm/MatchArm_getGuard.ql linguist-generated -/test/extractor-tests/generated/MatchArm/MatchArm_getPat.ql linguist-generated /test/extractor-tests/generated/MatchArmList/MatchArmList.ql linguist-generated -/test/extractor-tests/generated/MatchArmList/MatchArmList_getArm.ql linguist-generated -/test/extractor-tests/generated/MatchArmList/MatchArmList_getAttr.ql linguist-generated /test/extractor-tests/generated/MatchExpr/MatchExpr.ql linguist-generated -/test/extractor-tests/generated/MatchExpr/MatchExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/MatchExpr/MatchExpr_getMatchArmList.ql linguist-generated -/test/extractor-tests/generated/MatchExpr/MatchExpr_getScrutinee.ql linguist-generated /test/extractor-tests/generated/MatchGuard/MatchGuard.ql linguist-generated -/test/extractor-tests/generated/MatchGuard/MatchGuard_getCondition.ql linguist-generated /test/extractor-tests/generated/Meta/Meta.ql linguist-generated -/test/extractor-tests/generated/Meta/Meta_getExpr.ql linguist-generated -/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_getArgList.ql linguist-generated -/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.ql linguist-generated -/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getIdentifier.ql linguist-generated -/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getReceiver.ql linguist-generated -/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedPath.ql linguist-generated /test/extractor-tests/generated/Module/Module.ql linguist-generated -/test/extractor-tests/generated/Module/Module_getAttr.ql linguist-generated -/test/extractor-tests/generated/Module/Module_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/Module/Module_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/Module/Module_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/Module/Module_getItemList.ql linguist-generated -/test/extractor-tests/generated/Module/Module_getName.ql linguist-generated -/test/extractor-tests/generated/Module/Module_getVisibility.ql linguist-generated /test/extractor-tests/generated/Name/Name.ql linguist-generated -/test/extractor-tests/generated/Name/Name_getText.ql linguist-generated /test/extractor-tests/generated/NameRef/NameRef.ql linguist-generated -/test/extractor-tests/generated/NameRef/NameRef_getText.ql linguist-generated /test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.ql linguist-generated /test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql linguist-generated -/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getField.ql linguist-generated -/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/OrPat/OrPat.ql linguist-generated -/test/extractor-tests/generated/OrPat/OrPat_getPat.ql linguist-generated /test/extractor-tests/generated/Param/Param.ql linguist-generated -/test/extractor-tests/generated/Param/Param_getAttr.ql linguist-generated -/test/extractor-tests/generated/Param/Param_getPat.ql linguist-generated -/test/extractor-tests/generated/Param/Param_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/ParamList/ParamList.ql linguist-generated -/test/extractor-tests/generated/ParamList/ParamList_getParam.ql linguist-generated -/test/extractor-tests/generated/ParamList/ParamList_getSelfParam.ql linguist-generated /test/extractor-tests/generated/ParenExpr/ParenExpr.ql linguist-generated -/test/extractor-tests/generated/ParenExpr/ParenExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/ParenExpr/ParenExpr_getExpr.ql linguist-generated /test/extractor-tests/generated/ParenPat/ParenPat.ql linguist-generated -/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/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 -/test/extractor-tests/generated/Path/PathExpr_getPath.ql linguist-generated -/test/extractor-tests/generated/Path/PathExpr_getResolvedCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/Path/PathExpr_getResolvedPath.ql linguist-generated /test/extractor-tests/generated/Path/PathPat.ql linguist-generated -/test/extractor-tests/generated/Path/PathPat_getPath.ql linguist-generated -/test/extractor-tests/generated/Path/PathPat_getResolvedCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/Path/PathPat_getResolvedPath.ql linguist-generated /test/extractor-tests/generated/Path/PathSegment.ql linguist-generated -/test/extractor-tests/generated/Path/PathSegment_getGenericArgList.ql linguist-generated -/test/extractor-tests/generated/Path/PathSegment_getIdentifier.ql linguist-generated -/test/extractor-tests/generated/Path/PathSegment_getParenthesizedArgList.ql linguist-generated -/test/extractor-tests/generated/Path/PathSegment_getRetType.ql linguist-generated -/test/extractor-tests/generated/Path/PathSegment_getReturnTypeSyntax.ql linguist-generated -/test/extractor-tests/generated/Path/PathSegment_getTraitTypeRepr.ql linguist-generated -/test/extractor-tests/generated/Path/PathSegment_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/Path/PathTypeRepr.ql linguist-generated -/test/extractor-tests/generated/Path/PathTypeRepr_getPath.ql linguist-generated -/test/extractor-tests/generated/Path/Path_getQualifier.ql linguist-generated -/test/extractor-tests/generated/Path/Path_getSegment.ql linguist-generated /test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql linguist-generated -/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.ql linguist-generated -/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getOperatorName.ql linguist-generated /test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.ql linguist-generated -/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/RangeExpr/RangeExpr.ql linguist-generated -/test/extractor-tests/generated/RangeExpr/RangeExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/RangeExpr/RangeExpr_getEnd.ql linguist-generated -/test/extractor-tests/generated/RangeExpr/RangeExpr_getOperatorName.ql linguist-generated -/test/extractor-tests/generated/RangeExpr/RangeExpr_getStart.ql linguist-generated /test/extractor-tests/generated/RangePat/RangePat.ql linguist-generated -/test/extractor-tests/generated/RangePat/RangePat_getEnd.ql linguist-generated -/test/extractor-tests/generated/RangePat/RangePat_getOperatorName.ql linguist-generated -/test/extractor-tests/generated/RangePat/RangePat_getStart.ql linguist-generated /test/extractor-tests/generated/RefExpr/RefExpr.ql linguist-generated -/test/extractor-tests/generated/RefExpr/RefExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.ql linguist-generated /test/extractor-tests/generated/RefPat/RefPat.ql linguist-generated -/test/extractor-tests/generated/RefPat/RefPat_getPat.ql linguist-generated /test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.ql linguist-generated -/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getLifetime.ql linguist-generated -/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/Rename/Rename.ql linguist-generated -/test/extractor-tests/generated/Rename/Rename_getName.ql linguist-generated /test/extractor-tests/generated/RestPat/RestPat.ql linguist-generated -/test/extractor-tests/generated/RestPat/RestPat_getAttr.ql linguist-generated /test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.ql linguist-generated -/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql linguist-generated -/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getExpr.ql linguist-generated /test/extractor-tests/generated/ReturnTypeSyntax/ReturnTypeSyntax.ql linguist-generated /test/extractor-tests/generated/SelfParam/SelfParam.ql linguist-generated -/test/extractor-tests/generated/SelfParam/SelfParam_getAttr.ql linguist-generated -/test/extractor-tests/generated/SelfParam/SelfParam_getLifetime.ql linguist-generated -/test/extractor-tests/generated/SelfParam/SelfParam_getName.ql linguist-generated -/test/extractor-tests/generated/SelfParam/SelfParam_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/SlicePat/SlicePat.ql linguist-generated -/test/extractor-tests/generated/SlicePat/SlicePat_getPat.ql linguist-generated /test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.ql linguist-generated -/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/SourceFile/SourceFile.ql linguist-generated -/test/extractor-tests/generated/SourceFile/SourceFile_getAttr.ql linguist-generated -/test/extractor-tests/generated/SourceFile/SourceFile_getItem.ql linguist-generated /test/extractor-tests/generated/Static/Static.ql linguist-generated -/test/extractor-tests/generated/Static/Static_getAttr.ql linguist-generated -/test/extractor-tests/generated/Static/Static_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/Static/Static_getBody.ql linguist-generated -/test/extractor-tests/generated/Static/Static_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/Static/Static_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/Static/Static_getName.ql linguist-generated -/test/extractor-tests/generated/Static/Static_getTypeRepr.ql linguist-generated -/test/extractor-tests/generated/Static/Static_getVisibility.ql linguist-generated /test/extractor-tests/generated/StmtList/StmtList.ql linguist-generated -/test/extractor-tests/generated/StmtList/StmtList_getAttr.ql linguist-generated -/test/extractor-tests/generated/StmtList/StmtList_getStatement.ql linguist-generated -/test/extractor-tests/generated/StmtList/StmtList_getTailExpr.ql linguist-generated /test/extractor-tests/generated/Struct/Struct.ql linguist-generated -/test/extractor-tests/generated/Struct/Struct_getAttr.ql linguist-generated -/test/extractor-tests/generated/Struct/Struct_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/Struct/Struct_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/Struct/Struct_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/Struct/Struct_getFieldList.ql linguist-generated -/test/extractor-tests/generated/Struct/Struct_getGenericParamList.ql linguist-generated -/test/extractor-tests/generated/Struct/Struct_getName.ql linguist-generated -/test/extractor-tests/generated/Struct/Struct_getVisibility.ql linguist-generated -/test/extractor-tests/generated/Struct/Struct_getWhereClause.ql linguist-generated /test/extractor-tests/generated/StructExpr/StructExpr.ql linguist-generated -/test/extractor-tests/generated/StructExpr/StructExpr_getPath.ql linguist-generated -/test/extractor-tests/generated/StructExpr/StructExpr_getResolvedCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/StructExpr/StructExpr_getResolvedPath.ql linguist-generated -/test/extractor-tests/generated/StructExpr/StructExpr_getStructExprFieldList.ql linguist-generated /test/extractor-tests/generated/StructExprField/StructExprField.ql linguist-generated -/test/extractor-tests/generated/StructExprField/StructExprField_getAttr.ql linguist-generated -/test/extractor-tests/generated/StructExprField/StructExprField_getExpr.ql linguist-generated -/test/extractor-tests/generated/StructExprField/StructExprField_getIdentifier.ql linguist-generated /test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql linguist-generated -/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getAttr.ql linguist-generated -/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getField.ql linguist-generated -/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getSpread.ql linguist-generated /test/extractor-tests/generated/StructField/StructField.ql linguist-generated -/test/extractor-tests/generated/StructField/StructField_getAttr.ql linguist-generated -/test/extractor-tests/generated/StructField/StructField_getDefault.ql linguist-generated -/test/extractor-tests/generated/StructField/StructField_getName.ql linguist-generated -/test/extractor-tests/generated/StructField/StructField_getTypeRepr.ql linguist-generated -/test/extractor-tests/generated/StructField/StructField_getVisibility.ql linguist-generated /test/extractor-tests/generated/StructFieldList/StructFieldList.ql linguist-generated -/test/extractor-tests/generated/StructFieldList/StructFieldList_getField.ql linguist-generated /test/extractor-tests/generated/StructPat/StructPat.ql linguist-generated -/test/extractor-tests/generated/StructPat/StructPat_getPath.ql linguist-generated -/test/extractor-tests/generated/StructPat/StructPat_getResolvedCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/StructPat/StructPat_getResolvedPath.ql linguist-generated -/test/extractor-tests/generated/StructPat/StructPat_getStructPatFieldList.ql linguist-generated /test/extractor-tests/generated/StructPatField/StructPatField.ql linguist-generated -/test/extractor-tests/generated/StructPatField/StructPatField_getAttr.ql linguist-generated -/test/extractor-tests/generated/StructPatField/StructPatField_getIdentifier.ql linguist-generated -/test/extractor-tests/generated/StructPatField/StructPatField_getPat.ql linguist-generated /test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.ql linguist-generated -/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getField.ql linguist-generated -/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getRestPat.ql linguist-generated /test/extractor-tests/generated/TokenTree/TokenTree.ql linguist-generated /test/extractor-tests/generated/Trait/AssocItemList.ql linguist-generated -/test/extractor-tests/generated/Trait/AssocItemList_getAssocItem.ql linguist-generated -/test/extractor-tests/generated/Trait/AssocItemList_getAttr.ql linguist-generated /test/extractor-tests/generated/Trait/Trait.ql linguist-generated -/test/extractor-tests/generated/Trait/Trait_getAssocItemList.ql linguist-generated -/test/extractor-tests/generated/Trait/Trait_getAttr.ql linguist-generated -/test/extractor-tests/generated/Trait/Trait_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/Trait/Trait_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/Trait/Trait_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/Trait/Trait_getGenericParamList.ql linguist-generated -/test/extractor-tests/generated/Trait/Trait_getName.ql linguist-generated -/test/extractor-tests/generated/Trait/Trait_getTypeBoundList.ql linguist-generated -/test/extractor-tests/generated/Trait/Trait_getVisibility.ql linguist-generated -/test/extractor-tests/generated/Trait/Trait_getWhereClause.ql linguist-generated /test/extractor-tests/generated/TraitAlias/TraitAlias.ql linguist-generated -/test/extractor-tests/generated/TraitAlias/TraitAlias_getAttr.ql linguist-generated -/test/extractor-tests/generated/TraitAlias/TraitAlias_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/TraitAlias/TraitAlias_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/TraitAlias/TraitAlias_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/TraitAlias/TraitAlias_getGenericParamList.ql linguist-generated -/test/extractor-tests/generated/TraitAlias/TraitAlias_getName.ql linguist-generated -/test/extractor-tests/generated/TraitAlias/TraitAlias_getTypeBoundList.ql linguist-generated -/test/extractor-tests/generated/TraitAlias/TraitAlias_getVisibility.ql linguist-generated -/test/extractor-tests/generated/TraitAlias/TraitAlias_getWhereClause.ql linguist-generated /test/extractor-tests/generated/TryExpr/TryExpr.ql linguist-generated -/test/extractor-tests/generated/TryExpr/TryExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/TryExpr/TryExpr_getExpr.ql linguist-generated /test/extractor-tests/generated/TupleExpr/TupleExpr.ql linguist-generated -/test/extractor-tests/generated/TupleExpr/TupleExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/TupleExpr/TupleExpr_getField.ql linguist-generated /test/extractor-tests/generated/TupleField/TupleField.ql linguist-generated -/test/extractor-tests/generated/TupleField/TupleField_getAttr.ql linguist-generated -/test/extractor-tests/generated/TupleField/TupleField_getTypeRepr.ql linguist-generated -/test/extractor-tests/generated/TupleField/TupleField_getVisibility.ql linguist-generated /test/extractor-tests/generated/TupleFieldList/TupleFieldList.ql linguist-generated -/test/extractor-tests/generated/TupleFieldList/TupleFieldList_getField.ql linguist-generated /test/extractor-tests/generated/TuplePat/TuplePat.ql linguist-generated -/test/extractor-tests/generated/TuplePat/TuplePat_getField.ql linguist-generated /test/extractor-tests/generated/TupleStructPat/TupleStructPat.ql linguist-generated -/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getField.ql linguist-generated -/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getPath.ql linguist-generated -/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedPath.ql linguist-generated /test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.ql linguist-generated -/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr_getField.ql linguist-generated /test/extractor-tests/generated/TypeAlias/TypeAlias.ql linguist-generated -/test/extractor-tests/generated/TypeAlias/TypeAlias_getAttr.ql linguist-generated -/test/extractor-tests/generated/TypeAlias/TypeAlias_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/TypeAlias/TypeAlias_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/TypeAlias/TypeAlias_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/TypeAlias/TypeAlias_getGenericParamList.ql linguist-generated -/test/extractor-tests/generated/TypeAlias/TypeAlias_getName.ql linguist-generated -/test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeBoundList.ql linguist-generated -/test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeRepr.ql linguist-generated -/test/extractor-tests/generated/TypeAlias/TypeAlias_getVisibility.ql linguist-generated -/test/extractor-tests/generated/TypeAlias/TypeAlias_getWhereClause.ql linguist-generated /test/extractor-tests/generated/TypeArg/TypeArg.ql linguist-generated -/test/extractor-tests/generated/TypeArg/TypeArg_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/TypeBound/TypeBound.ql linguist-generated -/test/extractor-tests/generated/TypeBound/TypeBound_getLifetime.ql linguist-generated -/test/extractor-tests/generated/TypeBound/TypeBound_getTypeRepr.ql linguist-generated -/test/extractor-tests/generated/TypeBound/TypeBound_getUseBoundGenericArgs.ql linguist-generated /test/extractor-tests/generated/TypeBoundList/TypeBoundList.ql linguist-generated -/test/extractor-tests/generated/TypeBoundList/TypeBoundList_getBound.ql linguist-generated /test/extractor-tests/generated/TypeParam/TypeParam.ql linguist-generated -/test/extractor-tests/generated/TypeParam/TypeParam_getAttr.ql linguist-generated -/test/extractor-tests/generated/TypeParam/TypeParam_getDefaultType.ql linguist-generated -/test/extractor-tests/generated/TypeParam/TypeParam_getName.ql linguist-generated -/test/extractor-tests/generated/TypeParam/TypeParam_getTypeBoundList.ql linguist-generated /test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql linguist-generated -/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr_getAttr.ql linguist-generated /test/extractor-tests/generated/Union/Union.ql linguist-generated -/test/extractor-tests/generated/Union/Union_getAttr.ql linguist-generated -/test/extractor-tests/generated/Union/Union_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/Union/Union_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/Union/Union_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/Union/Union_getGenericParamList.ql linguist-generated -/test/extractor-tests/generated/Union/Union_getName.ql linguist-generated -/test/extractor-tests/generated/Union/Union_getStructFieldList.ql linguist-generated -/test/extractor-tests/generated/Union/Union_getVisibility.ql linguist-generated -/test/extractor-tests/generated/Union/Union_getWhereClause.ql linguist-generated /test/extractor-tests/generated/Use/Use.ql linguist-generated -/test/extractor-tests/generated/Use/Use_getAttr.ql linguist-generated -/test/extractor-tests/generated/Use/Use_getAttributeMacroExpansion.ql linguist-generated -/test/extractor-tests/generated/Use/Use_getCrateOrigin.ql linguist-generated -/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/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 -/test/extractor-tests/generated/UseTree/UseTree_getUseTreeList.ql linguist-generated /test/extractor-tests/generated/UseTreeList/UseTreeList.ql linguist-generated -/test/extractor-tests/generated/UseTreeList/UseTreeList_getUseTree.ql linguist-generated /test/extractor-tests/generated/Variant/Variant.ql linguist-generated -/test/extractor-tests/generated/Variant/Variant_getAttr.ql linguist-generated -/test/extractor-tests/generated/Variant/Variant_getCrateOrigin.ql linguist-generated -/test/extractor-tests/generated/Variant/Variant_getDiscriminant.ql linguist-generated -/test/extractor-tests/generated/Variant/Variant_getExtendedCanonicalPath.ql linguist-generated -/test/extractor-tests/generated/Variant/Variant_getFieldList.ql linguist-generated -/test/extractor-tests/generated/Variant/Variant_getName.ql linguist-generated -/test/extractor-tests/generated/Variant/Variant_getVisibility.ql linguist-generated /test/extractor-tests/generated/VariantList/VariantList.ql linguist-generated -/test/extractor-tests/generated/VariantList/VariantList_getVariant.ql linguist-generated /test/extractor-tests/generated/Visibility/Visibility.ql linguist-generated -/test/extractor-tests/generated/Visibility/Visibility_getPath.ql linguist-generated /test/extractor-tests/generated/WhereClause/WhereClause.ql linguist-generated -/test/extractor-tests/generated/WhereClause/WhereClause_getPredicate.ql linguist-generated /test/extractor-tests/generated/WherePred/WherePred.ql linguist-generated -/test/extractor-tests/generated/WherePred/WherePred_getGenericParamList.ql linguist-generated -/test/extractor-tests/generated/WherePred/WherePred_getLifetime.ql linguist-generated -/test/extractor-tests/generated/WherePred/WherePred_getTypeBoundList.ql linguist-generated -/test/extractor-tests/generated/WherePred/WherePred_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/WhileExpr/WhileExpr.ql linguist-generated -/test/extractor-tests/generated/WhileExpr/WhileExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/WhileExpr/WhileExpr_getCondition.ql linguist-generated -/test/extractor-tests/generated/WhileExpr/WhileExpr_getLabel.ql linguist-generated -/test/extractor-tests/generated/WhileExpr/WhileExpr_getLoopBody.ql linguist-generated /test/extractor-tests/generated/WildcardPat/WildcardPat.ql linguist-generated /test/extractor-tests/generated/YeetExpr/YeetExpr.ql linguist-generated -/test/extractor-tests/generated/YeetExpr/YeetExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/YeetExpr/YeetExpr_getExpr.ql linguist-generated /test/extractor-tests/generated/YieldExpr/YieldExpr.ql linguist-generated -/test/extractor-tests/generated/YieldExpr/YieldExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/YieldExpr/YieldExpr_getExpr.ql linguist-generated diff --git a/rust/ql/consistency-queries/PathResolutionConsistency.ql b/rust/ql/consistency-queries/PathResolutionConsistency.ql index db93f4b2860a..3b2165b712f3 100644 --- a/rust/ql/consistency-queries/PathResolutionConsistency.ql +++ b/rust/ql/consistency-queries/PathResolutionConsistency.ql @@ -10,22 +10,17 @@ private import codeql.rust.internal.PathResolution private import codeql.rust.internal.PathResolutionConsistency as PathResolutionConsistency private import codeql.rust.elements.Locatable private import codeql.Locations -import PathResolutionConsistency class SourceLocatable extends Locatable { - Location getLocation() { - if super.getLocation().fromSource() - then result = super.getLocation() - else result instanceof EmptyLocation - } + SourceLocatable() { this.fromSource() } } -query predicate multipleMethodCallTargets(SourceLocatable a, SourceLocatable b) { - PathResolutionConsistency::multipleMethodCallTargets(a, b) +query predicate multipleCallTargets(SourceLocatable a) { + PathResolutionConsistency::multipleCallTargets(a, _) } -query predicate multiplePathResolutions(SourceLocatable a, SourceLocatable b) { - PathResolutionConsistency::multiplePathResolutions(a, b) +query predicate multiplePathResolutions(SourceLocatable a) { + PathResolutionConsistency::multiplePathResolutions(a, _) } query predicate multipleCanonicalPaths(SourceLocatable i, SourceLocatable c, string path) { diff --git a/rust/ql/integration-tests/macro-expansion/Cargo.toml b/rust/ql/integration-tests/macro-expansion/Cargo.toml deleted file mode 100644 index 9be2ec64b578..000000000000 --- a/rust/ql/integration-tests/macro-expansion/Cargo.toml +++ /dev/null @@ -1,3 +0,0 @@ -[workspace] -members = [ "attributes", "calls", "proc_macros"] -resolver = "2" diff --git a/rust/ql/integration-tests/macro-expansion/attributes/Cargo.toml b/rust/ql/integration-tests/macro-expansion/attributes/Cargo.toml deleted file mode 100644 index b475ead960af..000000000000 --- a/rust/ql/integration-tests/macro-expansion/attributes/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "attributes" -version = "0.1.0" -edition = "2024" - -[dependencies] -proc_macros = { path = "../proc_macros" } diff --git a/rust/ql/integration-tests/macro-expansion/attributes/src/lib.rs b/rust/ql/integration-tests/macro-expansion/attributes/src/lib.rs deleted file mode 100644 index 682083aa10ae..000000000000 --- a/rust/ql/integration-tests/macro-expansion/attributes/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -use proc_macros::repeat; - -#[repeat(3)] -fn foo() { - _ = concat!("Hello ", "world!"); - - #[repeat(2)] - fn inner() {} -} - -#[repeat(2)] -#[repeat(3)] -fn bar() {} - -#[repeat(0)] -fn baz() {} diff --git a/rust/ql/integration-tests/macro-expansion/calls/Cargo.toml b/rust/ql/integration-tests/macro-expansion/calls/Cargo.toml deleted file mode 100644 index d38cf944489e..000000000000 --- a/rust/ql/integration-tests/macro-expansion/calls/Cargo.toml +++ /dev/null @@ -1,6 +0,0 @@ -[package] -name = "calls" -version = "0.1.0" -edition = "2024" - -[dependencies] diff --git a/rust/ql/integration-tests/macro-expansion/calls/src/lib.rs b/rust/ql/integration-tests/macro-expansion/calls/src/lib.rs deleted file mode 100644 index df3fccb7c40a..000000000000 --- a/rust/ql/integration-tests/macro-expansion/calls/src/lib.rs +++ /dev/null @@ -1,30 +0,0 @@ -struct S; - -macro_rules! def_x { - () => { - fn x() {} - }; -} - -impl S { - def_x!(); // this doesn't expand since 0.0.274 -} - -macro_rules! my_macro { - ($head:expr, $($tail:tt)*) => { format!($head, $($tail)*) }; -} - - -fn test() { - _ = concat!("x", "y"); - - _ = my_macro!( - concat!("<", "{}", ">"), // this doesn't expand since 0.0.274 - "hi", - ); -} - -include!("included.rs"); - -#[doc = include_str!("some.txt")] // this doesn't expand since 0.0.274 -fn documented() {} diff --git a/rust/ql/integration-tests/macro-expansion/diagnostics.expected b/rust/ql/integration-tests/macro-expansion/diagnostics.expected deleted file mode 100644 index 511bd49f1a51..000000000000 --- a/rust/ql/integration-tests/macro-expansion/diagnostics.expected +++ /dev/null @@ -1,55 +0,0 @@ -{ - "attributes": { - "durations": { - "crateGraph": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "extract": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "extractLibrary": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "findManifests": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "loadManifest": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "loadSource": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "parse": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "parseLibrary": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "total": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - } - }, - "numberOfFiles": 4, - "numberOfManifests": 1 - }, - "severity": "note", - "source": { - "extractorName": "rust", - "id": "rust/extractor/telemetry", - "name": "telemetry" - }, - "visibility": { - "cliSummaryTable": false, - "statusPage": false, - "telemetry": true - } -} diff --git a/rust/ql/integration-tests/macro-expansion/proc_macros/Cargo.toml b/rust/ql/integration-tests/macro-expansion/proc_macros/Cargo.toml deleted file mode 100644 index 712f7ba33933..000000000000 --- a/rust/ql/integration-tests/macro-expansion/proc_macros/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "proc_macros" -version = "0.1.0" -edition = "2024" - -[lib] -proc-macro = true - -[dependencies] -quote = "1.0.40" -syn = { version = "2.0.100", features = ["full"] } diff --git a/rust/ql/integration-tests/macro-expansion/proc_macros/src/lib.rs b/rust/ql/integration-tests/macro-expansion/proc_macros/src/lib.rs deleted file mode 100644 index 8d1f3be0e4ef..000000000000 --- a/rust/ql/integration-tests/macro-expansion/proc_macros/src/lib.rs +++ /dev/null @@ -1,18 +0,0 @@ -use proc_macro::TokenStream; -use quote::quote; - -#[proc_macro_attribute] -pub fn repeat(attr: TokenStream, item: TokenStream) -> TokenStream { - let number = syn::parse_macro_input!(attr as syn::LitInt).base10_parse::().unwrap(); - let ast = syn::parse_macro_input!(item as syn::ItemFn); - let items = (0..number) - .map(|i| { - let mut new_ast = ast.clone(); - new_ast.sig.ident = syn::Ident::new(&format!("{}_{}", ast.sig.ident, i), ast.sig.ident.span()); - new_ast - }) - .collect::>(); - quote! { - #(#items)* - }.into() -} diff --git a/rust/ql/integration-tests/macro-expansion/source_archive.expected b/rust/ql/integration-tests/macro-expansion/source_archive.expected deleted file mode 100644 index c1700a0a3003..000000000000 --- a/rust/ql/integration-tests/macro-expansion/source_archive.expected +++ /dev/null @@ -1,4 +0,0 @@ -attributes/src/lib.rs -calls/src/included.rs -calls/src/lib.rs -proc_macros/src/lib.rs diff --git a/rust/ql/integration-tests/macro-expansion/test.expected b/rust/ql/integration-tests/macro-expansion/test.expected deleted file mode 100644 index 24d95c99b351..000000000000 --- a/rust/ql/integration-tests/macro-expansion/test.expected +++ /dev/null @@ -1,34 +0,0 @@ -attribute_macros -| attributes/src/lib.rs:3:1:9:1 | fn foo | 0 | attributes/src/lib.rs:4:1:8:16 | fn foo_0 | -| attributes/src/lib.rs:3:1:9:1 | fn foo | 1 | attributes/src/lib.rs:4:1:8:16 | fn foo_1 | -| attributes/src/lib.rs:3:1:9:1 | fn foo | 2 | attributes/src/lib.rs:4:1:8:16 | fn foo_2 | -| attributes/src/lib.rs:7:5:8:16 | fn inner | 0 | attributes/src/lib.rs:8:5:8:16 | fn inner_0 | -| attributes/src/lib.rs:7:5:8:16 | fn inner | 0 | attributes/src/lib.rs:8:5:8:16 | fn inner_0 | -| attributes/src/lib.rs:7:5:8:16 | fn inner | 0 | attributes/src/lib.rs:8:5:8:16 | fn inner_0 | -| attributes/src/lib.rs:7:5:8:16 | fn inner | 1 | attributes/src/lib.rs:8:5:8:16 | fn inner_1 | -| attributes/src/lib.rs:7:5:8:16 | fn inner | 1 | attributes/src/lib.rs:8:5:8:16 | fn inner_1 | -| attributes/src/lib.rs:7:5:8:16 | fn inner | 1 | attributes/src/lib.rs:8:5:8:16 | fn inner_1 | -| attributes/src/lib.rs:11:1:13:11 | fn bar | 0 | attributes/src/lib.rs:12:1:13:10 | fn bar_0 | -| attributes/src/lib.rs:11:1:13:11 | fn bar | 1 | attributes/src/lib.rs:12:1:13:10 | fn bar_1 | -| attributes/src/lib.rs:12:1:13:10 | fn bar_0 | 0 | attributes/src/lib.rs:13:1:13:10 | fn bar_0_0 | -| attributes/src/lib.rs:12:1:13:10 | fn bar_0 | 1 | attributes/src/lib.rs:13:1:13:10 | fn bar_0_1 | -| attributes/src/lib.rs:12:1:13:10 | fn bar_0 | 2 | attributes/src/lib.rs:13:1:13:10 | fn bar_0_2 | -| attributes/src/lib.rs:12:1:13:10 | fn bar_1 | 0 | attributes/src/lib.rs:13:1:13:10 | fn bar_1_0 | -| attributes/src/lib.rs:12:1:13:10 | fn bar_1 | 1 | attributes/src/lib.rs:13:1:13:10 | fn bar_1_1 | -| attributes/src/lib.rs:12:1:13:10 | fn bar_1 | 2 | attributes/src/lib.rs:13:1:13:10 | fn bar_1_2 | -macro_calls -| attributes/src/lib.rs:5:9:5:34 | concat!... | attributes/src/lib.rs:5:17:5:34 | "Hello world!" | -| attributes/src/lib.rs:5:9:5:34 | concat!... | attributes/src/lib.rs:5:17:5:34 | "Hello world!" | -| attributes/src/lib.rs:5:9:5:34 | concat!... | attributes/src/lib.rs:5:17:5:34 | "Hello world!" | -| calls/src/included.rs:2:9:2:39 | concat!... | calls/src/included.rs:2:17:2:38 | "Hello world!" | -| calls/src/lib.rs:10:5:10:13 | def_x!... | calls/src/lib.rs:10:5:10:13 | MacroItems | -| calls/src/lib.rs:19:9:19:25 | concat!... | calls/src/lib.rs:19:17:19:24 | "xy" | -| calls/src/lib.rs:21:9:24:5 | my_macro!... | calls/src/lib.rs:22:9:23:13 | MacroExpr | -| calls/src/lib.rs:22:9:22:31 | concat!... | calls/src/lib.rs:22:17:22:30 | "<{}>" | -| calls/src/lib.rs:22:9:23:13 | ...::format_args!... | calls/src/lib.rs:22:9:23:13 | FormatArgsExpr | -| calls/src/lib.rs:22:9:23:13 | format!... | calls/src/lib.rs:22:9:23:13 | ...::must_use(...) | -| calls/src/lib.rs:27:1:27:24 | concat!... | calls/src/lib.rs:27:1:27:24 | "Hello world!" | -| calls/src/lib.rs:27:1:27:24 | include!... | calls/src/lib.rs:27:1:27:24 | MacroItems | -| calls/src/lib.rs:29:9:29:32 | include_str!... | calls/src/lib.rs:29:22:29:31 | "" | -unexpanded_macro_calls -| attributes/src/lib.rs:5:9:5:35 | concat!... | diff --git a/rust/ql/integration-tests/macro-expansion/test.ql b/rust/ql/integration-tests/macro-expansion/test.ql deleted file mode 100644 index 439ffab9a293..000000000000 --- a/rust/ql/integration-tests/macro-expansion/test.ql +++ /dev/null @@ -1,15 +0,0 @@ -import rust - -query predicate attribute_macros(Item i, int index, Item expanded) { - i.fromSource() and expanded = i.getAttributeMacroExpansion().getItem(index) -} - -query predicate macro_calls(MacroCall c, AstNode expansion) { - c.fromSource() and - not c.getLocation().getFile().getAbsolutePath().matches("%proc_macros%") and - expansion = c.getMacroCallExpansion() -} - -query predicate unexpanded_macro_calls(MacroCall c) { - c.fromSource() and not c.hasMacroCallExpansion() -} diff --git a/rust/ql/integration-tests/macro-expansion/test_macro_expansion.py b/rust/ql/integration-tests/macro-expansion/test_macro_expansion.py deleted file mode 100644 index 0d20cc2e27da..000000000000 --- a/rust/ql/integration-tests/macro-expansion/test_macro_expansion.py +++ /dev/null @@ -1,2 +0,0 @@ -def test_macro_expansion(codeql, rust, check_source_archive, rust_check_diagnostics): - codeql.database.create() diff --git a/rust/ql/integration-tests/query-suite/not_included_in_qls.expected b/rust/ql/integration-tests/query-suite/not_included_in_qls.expected index a719b933bc07..78cb055abe5f 100644 --- a/rust/ql/integration-tests/query-suite/not_included_in_qls.expected +++ b/rust/ql/integration-tests/query-suite/not_included_in_qls.expected @@ -3,8 +3,6 @@ ql/rust/ql/src/queries/summary/LinesOfUserCodeInFiles.ql ql/rust/ql/src/queries/summary/QuerySinks.ql ql/rust/ql/src/queries/summary/SensitiveData.ql ql/rust/ql/src/queries/summary/TaintSources.ql -ql/rust/ql/src/queries/unusedentities/UnreachableCode.ql -ql/rust/ql/src/queries/unusedentities/UnusedValue.ql ql/rust/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql ql/rust/ql/src/utils/modelgenerator/CaptureNeutralModels.ql ql/rust/ql/src/utils/modelgenerator/CaptureSinkModels.ql diff --git a/rust/ql/integration-tests/query-suite/rust-code-quality-extended.qls.expected b/rust/ql/integration-tests/query-suite/rust-code-quality-extended.qls.expected new file mode 100644 index 000000000000..7a7d4dc07c14 --- /dev/null +++ b/rust/ql/integration-tests/query-suite/rust-code-quality-extended.qls.expected @@ -0,0 +1,3 @@ +ql/rust/ql/src/queries/unusedentities/UnreachableCode.ql +ql/rust/ql/src/queries/unusedentities/UnusedValue.ql +ql/rust/ql/src/queries/unusedentities/UnusedVariable.ql diff --git a/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected b/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected index c21b79749d17..650bf3169412 100644 --- a/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected @@ -16,6 +16,7 @@ ql/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.ql ql/rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-696/BadCtorInitialization.ql ql/rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSize.ql +ql/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql ql/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql ql/rust/ql/src/queries/summary/LinesOfCode.ql ql/rust/ql/src/queries/summary/LinesOfUserCode.ql diff --git a/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected b/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected index b3683f02d927..b5df88f96eca 100644 --- a/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected @@ -15,6 +15,7 @@ ql/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql ql/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.ql ql/rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSize.ql +ql/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql ql/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql ql/rust/ql/src/queries/summary/LinesOfCode.ql ql/rust/ql/src/queries/summary/LinesOfUserCode.ql diff --git a/rust/ql/integration-tests/query-suite/test.py b/rust/ql/integration-tests/query-suite/test.py index 5f48fb428531..8880d35b1c9d 100644 --- a/rust/ql/integration-tests/query-suite/test.py +++ b/rust/ql/integration-tests/query-suite/test.py @@ -2,7 +2,7 @@ import pytest from query_suites import * -well_known_query_suites = ['rust-code-quality.qls', 'rust-security-and-quality.qls', 'rust-security-extended.qls', 'rust-code-scanning.qls'] +well_known_query_suites = ['rust-code-quality.qls', 'rust-code-quality-extended.qls', 'rust-security-and-quality.qls', 'rust-security-extended.qls', 'rust-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/rust/ql/lib/CHANGELOG.md b/rust/ql/lib/CHANGELOG.md index 85c29db05c19..aaaa73ae07ef 100644 --- a/rust/ql/lib/CHANGELOG.md +++ b/rust/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.1.11 + +### New Features + +* Initial public preview release. + ## 0.1.10 No user-facing changes. diff --git a/rust/ql/lib/change-notes/2025-06-24-type-inference.md b/rust/ql/lib/change-notes/2025-06-24-type-inference.md new file mode 100644 index 000000000000..5e3fd6fc53d9 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-06-24-type-inference.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added type inference for `for` loops and array expressions. diff --git a/rust/ql/lib/change-notes/2025-06-25-item-reorg.md.md b/rust/ql/lib/change-notes/2025-06-25-item-reorg.md.md new file mode 100644 index 000000000000..842dc3b1e318 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-06-25-item-reorg.md.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* `AssocItem` and `ExternItem` are now proper subclasses of `Item`. diff --git a/rust/ql/lib/change-notes/2025-06-26-dataflow-traits.md b/rust/ql/lib/change-notes/2025-06-26-dataflow-traits.md new file mode 100644 index 000000000000..c3513958ccd1 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-06-26-dataflow-traits.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Implemented support for data flow through trait functions. For the purpose of data flow, calls to trait functions dispatch to all possible implementations. diff --git a/rust/ql/lib/change-notes/released/0.1.11.md b/rust/ql/lib/change-notes/released/0.1.11.md new file mode 100644 index 000000000000..58740d0b0242 --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.1.11.md @@ -0,0 +1,5 @@ +## 0.1.11 + +### New Features + +* Initial public preview release. diff --git a/rust/ql/lib/codeql-pack.release.yml b/rust/ql/lib/codeql-pack.release.yml index 30f5ca88be0e..1d1688e8d612 100644 --- a/rust/ql/lib/codeql-pack.release.yml +++ b/rust/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.10 +lastReleaseVersion: 0.1.11 diff --git a/rust/ql/lib/codeql/rust/controlflow/CfgNodes.qll b/rust/ql/lib/codeql/rust/controlflow/CfgNodes.qll index a118cf6b4720..1aed1cfa0265 100644 --- a/rust/ql/lib/codeql/rust/controlflow/CfgNodes.qll +++ b/rust/ql/lib/codeql/rust/controlflow/CfgNodes.qll @@ -4,6 +4,7 @@ */ private import rust +private import codeql.rust.elements.Call private import ControlFlowGraph private import internal.ControlFlowGraphImpl as CfgImpl private import internal.CfgNodes @@ -162,6 +163,30 @@ final class CallExprBaseCfgNode extends Nodes::CallExprBaseCfgNode { */ final class MethodCallExprCfgNode extends CallExprBaseCfgNode, Nodes::MethodCallExprCfgNode { } +/** + * A CFG node that calls a function. + * + * This class abstract over the different ways in which a function can be called in Rust. + */ +final class CallCfgNode extends ExprCfgNode { + private Call node; + + CallCfgNode() { node = this.getAstNode() } + + /** Gets the underlying `Call`. */ + Call getCall() { result = node } + + /** Gets the receiver of this call if it is a method call. */ + ExprCfgNode getReceiver() { + any(ChildMapping mapping).hasCfgChild(node, node.getReceiver(), this, result) + } + + /** Gets the `i`th argument of this call, if any. */ + ExprCfgNode getPositionalArgument(int i) { + any(ChildMapping mapping).hasCfgChild(node, node.getPositionalArgument(i), this, result) + } +} + /** * A function call expression. For example: * ```rust diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll b/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll index e32028885110..dc08c0d32a78 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 522eaf59fe6d..58cb9f6a95f1 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() @@ -543,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 cfa37ed45394..36dd0fb304f2 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll @@ -722,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 { diff --git a/rust/ql/lib/codeql/rust/dataflow/FlowSummary.qll b/rust/ql/lib/codeql/rust/dataflow/FlowSummary.qll index 60e76ceff94f..0c41bb6d7a8e 100644 --- a/rust/ql/lib/codeql/rust/dataflow/FlowSummary.qll +++ b/rust/ql/lib/codeql/rust/dataflow/FlowSummary.qll @@ -2,7 +2,6 @@ private import rust private import internal.FlowSummaryImpl as Impl -private import codeql.rust.elements.internal.CallExprBaseImpl::Impl as CallExprBaseImpl // import all instances below private module Summaries { @@ -10,34 +9,10 @@ private module Summaries { private import codeql.rust.dataflow.internal.ModelsAsData } -/** Provides the `Range` class used to define the extent of `LibraryCallable`. */ -module LibraryCallable { - /** A callable defined in library code, identified by a unique string. */ - abstract class Range extends string { - bindingset[this] - Range() { any() } - - /** Gets a call to this library callable. */ - CallExprBase getACall() { - exists(Resolvable r, string crate | - r = CallExprBaseImpl::getCallResolvable(result) and - this = crate + r.getResolvedPath() - | - crate = r.getResolvedCrateOrigin() + "::_::" - or - not r.hasResolvedCrateOrigin() and - crate = "" - ) - } - } -} - -final class LibraryCallable = LibraryCallable::Range; - /** Provides the `Range` class used to define the extent of `SummarizedCallable`. */ module SummarizedCallable { /** A callable with a flow summary, identified by a unique string. */ - abstract class Range extends LibraryCallable::Range, Impl::Public::SummarizedCallable { + abstract class Range extends Impl::Public::SummarizedCallable { bindingset[this] Range() { any() } diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll index f0dc961a9f93..d544ff888d56 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll @@ -1,5 +1,8 @@ import codeql.rust.dataflow.DataFlow::DataFlow as DataFlow private import rust +private import codeql.rust.controlflow.ControlFlowGraph +private import codeql.rust.controlflow.internal.Splitting +private import codeql.rust.controlflow.CfgNodes as CfgNodes private import codeql.rust.dataflow.internal.DataFlowImpl private import codeql.rust.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl private import codeql.rust.dataflow.internal.Node as Node @@ -26,28 +29,18 @@ private module Input implements InputSig { } predicate missingLocationExclude(RustDataFlow::Node n) { not exists(n.asExpr().getLocation()) } + + predicate multipleArgumentCallExclude(Node::ArgumentNode arg, DataFlowCall call) { + // An argument such as `x` in `if !x { ... }` has two successors (and hence + // two calls); one for each Boolean outcome of `x`. + exists(CfgNodes::ExprCfgNode n | + arg.isArgumentOf(call, _) and + n = call.asCallCfgNode() and + arg.asExpr().getASuccessor(any(ConditionalSuccessor c)).getASuccessor*() = n and + n.getASplit() instanceof ConditionalCompletionSplitting::ConditionalCompletionSplit + ) + } } import MakeConsistency private import codeql.rust.dataflow.internal.ModelsAsData - -query predicate missingMadSummaryCanonicalPath(string crate, string path, Addressable a) { - summaryModel(crate, path, _, _, _, _, _) and - a.getCrateOrigin() = crate and - a.getExtendedCanonicalPath() = path and - not exists(a.getCanonicalPath()) -} - -query predicate missingMadSourceCanonicalPath(string crate, string path, Addressable a) { - sourceModel(crate, path, _, _, _, _) and - a.getCrateOrigin() = crate and - a.getExtendedCanonicalPath() = path and - not exists(a.getCanonicalPath()) -} - -query predicate missingMadSinkCanonicalPath(string crate, string path, Addressable a) { - sinkModel(crate, path, _, _, _, _) and - a.getCrateOrigin() = crate and - a.getExtendedCanonicalPath() = path and - not exists(a.getCanonicalPath()) -} diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index 1715f87df867..db2315688de2 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -8,6 +8,7 @@ private import codeql.util.Boolean private import codeql.dataflow.DataFlow private import codeql.dataflow.internal.DataFlowImpl private import rust +private import codeql.rust.elements.Call private import SsaImpl as SsaImpl private import codeql.rust.controlflow.internal.Scope as Scope private import codeql.rust.internal.PathResolution @@ -45,10 +46,12 @@ final class DataFlowCallable extends TDataFlowCallable { /** * Gets the underlying library callable, if any. */ - LibraryCallable asLibraryCallable() { this = TLibraryCallable(result) } + SummarizedCallable asSummarizedCallable() { this = TSummarizedCallable(result) } /** Gets a textual representation of this callable. */ - string toString() { result = [this.asCfgScope().toString(), this.asLibraryCallable().toString()] } + string toString() { + result = [this.asCfgScope().toString(), this.asSummarizedCallable().toString()] + } /** Gets the location of this callable. */ Location getLocation() { result = this.asCfgScope().getLocation() } @@ -60,11 +63,7 @@ final class DataFlowCallable extends TDataFlowCallable { final class DataFlowCall extends TDataFlowCall { /** Gets the underlying call in the CFG, if any. */ - CallExprCfgNode asCallExprCfgNode() { result = this.asCallBaseExprCfgNode() } - - MethodCallExprCfgNode asMethodCallExprCfgNode() { result = this.asCallBaseExprCfgNode() } - - CallExprBaseCfgNode asCallBaseExprCfgNode() { this = TCall(result) } + CallCfgNode asCallCfgNode() { this = TCall(result) } predicate isSummaryCall( FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver @@ -73,16 +72,13 @@ final class DataFlowCall extends TDataFlowCall { } DataFlowCallable getEnclosingCallable() { - result = TCfgScope(this.asCallBaseExprCfgNode().getExpr().getEnclosingCfgScope()) + result.asCfgScope() = this.asCallCfgNode().getExpr().getEnclosingCfgScope() or - exists(FlowSummaryImpl::Public::SummarizedCallable c | - this.isSummaryCall(c, _) and - result = TLibraryCallable(c) - ) + this.isSummaryCall(result.asSummarizedCallable(), _) } string toString() { - result = this.asCallBaseExprCfgNode().toString() + result = this.asCallCfgNode().toString() or exists( FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver @@ -92,13 +88,13 @@ final class DataFlowCall extends TDataFlowCall { ) } - Location getLocation() { result = this.asCallBaseExprCfgNode().getLocation() } - //** TODO JB1: Move to subclass, monkey patching for #153 */ DataFlowCallable getARuntimeTarget(){ none() } ArgumentNode getAnArgumentNode(){ none() } int totalorder(){ none() } //** TODO JB1: end stubs for #153 */ + + Location getLocation() { result = this.asCallCfgNode().getLocation() } } /** @@ -146,38 +142,27 @@ final class ParameterPosition extends TParameterPosition { */ final class ArgumentPosition extends ParameterPosition { /** Gets the argument of `call` at this position, if any. */ - Expr getArgument(CallExprBase call) { - result = call.getArgList().getArg(this.getPosition()) + Expr getArgument(Call call) { + result = call.getPositionalArgument(this.getPosition()) or - this.isSelf() and - result = call.(MethodCallExpr).getReceiver() + result = call.getReceiver() and this.isSelf() } } -/** Holds if `call` invokes a qualified path that resolves to a method. */ -private predicate callToMethod(CallExpr call) { - exists(Path path | - path = call.getFunction().(PathExpr).getPath() and - path.hasQualifier() and - resolvePath(path).(Function).getParamList().hasSelfParam() - ) -} - /** * Holds if `arg` is an argument of `call` at the position `pos`. * * Note that this does not hold for the receiever expression of a method call * as the synthetic `ReceiverNode` is the argument for the `self` parameter. */ -predicate isArgumentForCall(ExprCfgNode arg, CallExprBaseCfgNode call, ParameterPosition pos) { - if callToMethod(call.(CallExprCfgNode).getCallExpr()) - then - // The first argument is for the `self` parameter - arg = call.getArgument(0) and pos.isSelf() - or - // Succeeding arguments are shifted left - arg = call.getArgument(pos.getPosition() + 1) - else arg = call.getArgument(pos.getPosition()) +predicate isArgumentForCall(ExprCfgNode arg, CallCfgNode call, ParameterPosition pos) { + // TODO: Handle index expressions as calls in data flow. + not call.getCall() instanceof IndexExpr and + ( + call.getPositionalArgument(pos.getPosition()) = arg + or + call.getReceiver() = arg and pos.isSelf() and not call.getCall().receiverImplicitlyBorrowed() + ) } /** Provides logic related to SSA. */ @@ -430,9 +415,21 @@ module RustDataFlow implements InputSig { /** Gets a viable implementation of the target of the given `Call`. */ DataFlowCallable viableCallable(DataFlowCall call) { - result.asCfgScope() = call.asCallBaseExprCfgNode().getCallExprBase().getStaticTarget() - or - result.asLibraryCallable().getACall() = call.asCallBaseExprCfgNode().getCallExprBase() + exists(Call c | c = call.asCallCfgNode().getCall() | + result.asCfgScope() = c.getARuntimeTarget() + or + exists(SummarizedCallable sc, Function staticTarget | + staticTarget = c.getStaticTarget() and + sc = result.asSummarizedCallable() + | + sc = staticTarget + or + // only apply trait models to concrete implementations when they are not + // defined in source code + staticTarget.implements(sc) and + not staticTarget.fromSource() + ) + ) } /** @@ -790,7 +787,7 @@ module RustDataFlow implements InputSig { predicate allowParameterReturnInSelf(ParameterNode p) { exists(DataFlowCallable c, ParameterPosition pos | p.isParameterOf(c, pos) and - FlowSummaryImpl::Private::summaryAllowParameterReturnInSelf(c.asLibraryCallable(), pos) + FlowSummaryImpl::Private::summaryAllowParameterReturnInSelf(c.asSummarizedCallable(), pos) ) or VariableCapture::Flow::heuristicAllowInstanceParameterReturnInSelf(p.(ClosureParameterNode) @@ -827,7 +824,7 @@ module RustDataFlow implements InputSig { */ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { ( - receiver.asExpr() = call.asCallExprCfgNode().getFunction() and + receiver.asExpr() = call.asCallCfgNode().(CallExprCfgNode).getFunction() and // All calls to complex expressions and local variable accesses are lambda call. exists(Expr f | f = receiver.asExpr().getExpr() | f instanceof PathExpr implies f = any(Variable v).getAnAccess() @@ -928,7 +925,11 @@ module VariableCapture { CapturedVariable v; VariableRead() { - exists(VariableReadAccess read | this.getExpr() = read and v = read.getVariable()) + exists(VariableAccess read | this.getExpr() = read and v = read.getVariable() | + read instanceof VariableReadAccess + or + read = any(RefExpr re).getExpr() + ) } CapturedVariable getVariable() { result = v } @@ -991,7 +992,11 @@ private module Cached { cached newtype TDataFlowCall = - TCall(CallExprBaseCfgNode c) { Stages::DataFlowStage::ref() } or + TCall(CallCfgNode c) { + Stages::DataFlowStage::ref() and + // TODO: Handle index expressions as calls in data flow. + not c.getCall() instanceof IndexExpr + } or TSummaryCall( FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver ) { @@ -1001,7 +1006,7 @@ private module Cached { cached newtype TDataFlowCallable = TCfgScope(CfgScope scope) or - TLibraryCallable(LibraryCallable c) + TSummarizedCallable(SummarizedCallable c) /** This is the local flow predicate that is exposed. */ cached diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll index 62cc47dfc0d3..4eeac1d640ac 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll @@ -13,7 +13,7 @@ module Input implements InputSig { private import codeql.rust.elements.internal.CallExprBaseImpl::Impl as CallExprBaseImpl private import codeql.rust.frameworks.stdlib.Stdlib - class SummarizedCallableBase = string; + class SummarizedCallableBase = Function; abstract private class SourceSinkBase extends AstNode { /** Gets the associated call. */ @@ -31,6 +31,11 @@ module Input implements InputSig { crate = "" ) } + + /** Holds if the associated call resolves to `path`. */ + final predicate callResolvesTo(string path) { + path = this.getCall().getStaticTarget().(Addressable).getCanonicalPath() + } } abstract class SourceBase extends SourceSinkBase { } @@ -68,29 +73,14 @@ module Input implements InputSig { result = "Field" and ( exists(Addressable a, int pos, string prefix | - // TODO: calculate in QL - arg = prefix + "(" + pos + ")" and - ( - prefix = a.getExtendedCanonicalPath() - or - a = any(OptionEnum o).getSome() and - prefix = "crate::option::Option::Some" - or - exists(string name | - a = any(ResultEnum r).getVariant(name) and - prefix = "crate::result::Result::" + name - ) - ) + arg = prefix + "(" + pos + ")" and prefix = a.getCanonicalPath() | c.(TupleFieldContent).isStructField(a, pos) or c.(TupleFieldContent).isVariantField(a, pos) ) or - exists(Addressable a, string field | - // TODO: calculate in QL - arg = a.getExtendedCanonicalPath() + "::" + field - | + exists(Addressable a, string field | arg = a.getCanonicalPath() + "::" + field | c.(StructFieldContent).isStructField(a, field) or c.(StructFieldContent).isVariantField(a, field) @@ -153,7 +143,7 @@ private import Make as Impl private module StepsInput implements Impl::Private::StepsInputSig { DataFlowCall getACall(Public::SummarizedCallable sc) { - result.asCallBaseExprCfgNode().getCallExprBase() = sc.(LibraryCallable).getACall() + result.asCallCfgNode().getCall().getStaticTarget() = sc } RustDataFlow::Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) { diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll index 57adae96d0ec..112fe6de5dcd 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll @@ -4,21 +4,19 @@ * The extensible relations have the following columns: * * - Sources: - * `crate; path; output; kind; provenance` + * `path; output; kind; provenance` * - Sinks: - * `crate; path; input; kind; provenance` + * `path; input; kind; provenance` * - Summaries: - * `crate; path; input; output; kind; provenance` + * `path; input; output; kind; provenance` * * The interpretation of a row is similar to API-graphs with a left-to-right * reading. * - * 1. The `crate` column selects a crate. - * 2. The `path` column selects a function with the given canonical path within - * the crate. - * 3. The `input` column specifies how data enters the element selected by the - * first 2 columns, and the `output` column specifies how data leaves the - * element selected by the first 2 columns. Both `input` and `output` are + * 1. The `path` column selects a function with the given canonical path. + * 2. The `input` column specifies how data enters the element selected by the + * first column, and the `output` column specifies how data leaves the + * element selected by the first column. Both `input` and `output` are * `.`-separated lists of "access path tokens" to resolve, starting at the * selected function. * @@ -30,16 +28,18 @@ * - `ReturnValue`: the value returned by a function call. * - `Element`: an element in a collection. * - `Field[t::f]`: field `f` of the variant/struct with canonical path `t`, for example - * `Field[crate::ihex::Record::Data::value]`. + * `Field[ihex::Record::Data::value]`. * - `Field[t(i)]`: position `i` inside the variant/struct with canonical path `v`, for example - * `Field[crate::option::Option::Some(0)]`. + * `Field[core::option::Option::Some(0)]`. * - `Field[i]`: the `i`th element of a tuple. - * 4. The `kind` column is a tag that can be referenced from QL to determine to + * - `Reference`: the referenced value. + * - `Future`: the value being computed asynchronously. + * 3. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources `"remote"` indicates a default remote flow source, and for summaries * `"taint"` indicates a default additional taint step and `"value"` indicates a * globally applicable value-preserving step. - * 5. The `provenance` column is mainly used internally, and should be set to `"manual"` for + * 4. The `provenance` column is mainly used internally, and should be set to `"manual"` for * all custom models. */ @@ -47,8 +47,11 @@ private import rust private import codeql.rust.dataflow.FlowSummary private import codeql.rust.dataflow.FlowSource private import codeql.rust.dataflow.FlowSink +private import codeql.rust.elements.internal.CallExprBaseImpl::Impl as CallExprBaseImpl /** + * DEPRECATED: Do not use. + * * Holds if in a call to the function with canonical path `path`, defined in the * crate `crate`, the value referred to by `output` is a flow source of the given * `kind`. @@ -58,12 +61,27 @@ private import codeql.rust.dataflow.FlowSink * For more information on the `kind` parameter, see * https://github.com/github/codeql/blob/main/docs/codeql/reusables/threat-model-description.rst. */ -extensible predicate sourceModel( +extensible predicate sourceModelDeprecated( string crate, string path, string output, string kind, string provenance, QlBuiltins::ExtensionId madId ); /** + * Holds if in a call to the function with canonical path `path`, the value referred + * to by `output` is a flow source of the given `kind`. + * + * `output = "ReturnValue"` simply means the result of the call itself. + * + * For more information on the `kind` parameter, see + * https://github.com/github/codeql/blob/main/docs/codeql/reusables/threat-model-description.rst. + */ +extensible predicate sourceModel( + string path, string output, string kind, string provenance, QlBuiltins::ExtensionId madId +); + +/** + * DEPRECATED: Do not use. + * * Holds if in a call to the function with canonical path `path`, defined in the * crate `crate`, the value referred to by `input` is a flow sink of the given * `kind`. @@ -74,12 +92,28 @@ extensible predicate sourceModel( * * - `sql-injection`: a flow sink for SQL injection. */ -extensible predicate sinkModel( +extensible predicate sinkModelDeprecated( string crate, string path, string input, string kind, string provenance, QlBuiltins::ExtensionId madId ); /** + * Holds if in a call to the function with canonical path `path`, the value referred + * to by `input` is a flow sink of the given `kind`. + * + * For example, `input = Argument[0]` means the first argument of the call. + * + * The following kinds are supported: + * + * - `sql-injection`: a flow sink for SQL injection. + */ +extensible predicate sinkModel( + string path, string input, string kind, string provenance, QlBuiltins::ExtensionId madId +); + +/** + * DEPRECATED: Do not use. + * * Holds if in a call to the function with canonical path `path`, defined in the * crate `crate`, the value referred to by `input` can flow to the value referred * to by `output`. @@ -87,11 +121,23 @@ extensible predicate sinkModel( * `kind` should be either `value` or `taint`, for value-preserving or taint-preserving * steps, respectively. */ -extensible predicate summaryModel( +extensible predicate summaryModelDeprecated( string crate, string path, string input, string output, string kind, string provenance, QlBuiltins::ExtensionId madId ); +/** + * Holds if in a call to the function with canonical path `path`, the value referred + * to by `input` can flow to the value referred to by `output`. + * + * `kind` should be either `value` or `taint`, for value-preserving or taint-preserving + * steps, respectively. + */ +extensible predicate summaryModel( + string path, string input, string output, string kind, string provenance, + QlBuiltins::ExtensionId madId +); + /** * Holds if the given extension tuple `madId` should pretty-print as `model`. * @@ -99,35 +145,83 @@ extensible predicate summaryModel( */ predicate interpretModelForTest(QlBuiltins::ExtensionId madId, string model) { exists(string crate, string path, string output, string kind | - sourceModel(crate, path, kind, output, _, madId) and + sourceModelDeprecated(crate, path, output, kind, _, madId) and model = "Source: " + crate + "; " + path + "; " + output + "; " + kind ) or + exists(string path, string output, string kind | + sourceModel(path, output, kind, _, madId) and + model = "Source: " + path + "; " + output + "; " + kind + ) + or exists(string crate, string path, string input, string kind | - sinkModel(crate, path, kind, input, _, madId) and + sinkModelDeprecated(crate, path, input, kind, _, madId) and model = "Sink: " + crate + "; " + path + "; " + input + "; " + kind ) or + exists(string path, string input, string kind | + sinkModel(path, input, kind, _, madId) and + model = "Sink: " + path + "; " + input + "; " + kind + ) + or exists(string type, string path, string input, string output, string kind | - summaryModel(type, path, input, output, kind, _, madId) and + summaryModelDeprecated(type, path, input, output, kind, _, madId) and model = "Summary: " + type + "; " + path + "; " + input + "; " + output + "; " + kind ) + or + exists(string path, string input, string output, string kind | + summaryModel(path, input, output, kind, _, madId) and + model = "Summary: " + path + "; " + input + "; " + output + "; " + kind + ) } -private class SummarizedCallableFromModel extends SummarizedCallable::Range { +private class SummarizedCallableFromModelDeprecated extends SummarizedCallable::Range { private string crate; private string path; + SummarizedCallableFromModelDeprecated() { + summaryModelDeprecated(crate, path, _, _, _, _, _) and + exists(CallExprBase call, Resolvable r | + call.getStaticTarget() = this and + r = CallExprBaseImpl::getCallResolvable(call) and + r.getResolvedPath() = path and + r.getResolvedCrateOrigin() = crate + ) + } + + override predicate propagatesFlow( + string input, string output, boolean preservesValue, string model + ) { + exists(string kind, QlBuiltins::ExtensionId madId | + summaryModelDeprecated(crate, path, input, output, kind, _, madId) and + model = "MaD:" + madId.toString() + | + kind = "value" and + preservesValue = true + or + kind = "taint" and + preservesValue = false + ) + } +} + +private class SummarizedCallableFromModel extends SummarizedCallable::Range { + private string path; + SummarizedCallableFromModel() { - summaryModel(crate, path, _, _, _, _, _) and - this = crate + "::_::" + path + summaryModel(path, _, _, _, _, _) and + this.getCanonicalPath() = path + } + + override predicate hasProvenance(Provenance provenance) { + summaryModel(path, _, _, _, provenance, _) } override predicate propagatesFlow( string input, string output, boolean preservesValue, string model ) { exists(string kind, QlBuiltins::ExtensionId madId | - summaryModel(crate, path, input, output, kind, _, madId) and + summaryModel(path, input, output, kind, _, madId) and model = "MaD:" + madId.toString() | kind = "value" and @@ -139,35 +233,67 @@ private class SummarizedCallableFromModel extends SummarizedCallable::Range { } } -private class FlowSourceFromModel extends FlowSource::Range { +private class FlowSourceFromModelDeprecated extends FlowSource::Range { private string crate; private string path; - FlowSourceFromModel() { - sourceModel(crate, path, _, _, _, _) and + FlowSourceFromModelDeprecated() { + sourceModelDeprecated(crate, path, _, _, _, _) and this.callResolvesTo(crate, path) } override predicate isSource(string output, string kind, Provenance provenance, string model) { exists(QlBuiltins::ExtensionId madId | - sourceModel(crate, path, output, kind, provenance, madId) and + sourceModelDeprecated(crate, path, output, kind, provenance, madId) and model = "MaD:" + madId.toString() ) } } -private class FlowSinkFromModel extends FlowSink::Range { +private class FlowSourceFromModel extends FlowSource::Range { + private string path; + + FlowSourceFromModel() { + sourceModel(path, _, _, _, _) and + this.callResolvesTo(path) + } + + override predicate isSource(string output, string kind, Provenance provenance, string model) { + exists(QlBuiltins::ExtensionId madId | + sourceModel(path, output, kind, provenance, madId) and + model = "MaD:" + madId.toString() + ) + } +} + +private class FlowSinkFromModelDeprecated extends FlowSink::Range { private string crate; private string path; - FlowSinkFromModel() { - sinkModel(crate, path, _, _, _, _) and + FlowSinkFromModelDeprecated() { + sinkModelDeprecated(crate, path, _, _, _, _) and this.callResolvesTo(crate, path) } override predicate isSink(string input, string kind, Provenance provenance, string model) { exists(QlBuiltins::ExtensionId madId | - sinkModel(crate, path, input, kind, provenance, madId) and + sinkModelDeprecated(crate, path, input, kind, provenance, madId) and + model = "MaD:" + madId.toString() + ) + } +} + +private class FlowSinkFromModel extends FlowSink::Range { + private string path; + + FlowSinkFromModel() { + sinkModel(path, _, _, _, _) and + this.callResolvesTo(path) + } + + override predicate isSink(string input, string kind, Provenance provenance, string model) { + exists(QlBuiltins::ExtensionId madId | + sinkModel(path, input, kind, provenance, madId) and model = "MaD:" + madId.toString() ) } diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll index 67782f0b7e00..a1bdc367d0aa 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll @@ -17,13 +17,19 @@ private import codeql.rust.dataflow.FlowSummary private import Node as Node private import DataFlowImpl private import FlowSummaryImpl as FlowSummaryImpl +private import codeql.rust.internal.CachedStages /** An element, viewed as a node in a data flow graph. */ -abstract class NodePublic extends TNode { +// It is important to not make this class `abstract`, as it otherwise results in +// a needless charpred, which will result in recomputation of internal non-cached +// predicates +class NodePublic extends TNode { /** Gets the location of this node. */ + cached abstract Location getLocation(); /** Gets a textual representation of this node. */ + cached abstract string toString(); /** @@ -44,7 +50,7 @@ abstract class NodePublic extends TNode { abstract class Node extends NodePublic { /** Gets the enclosing callable. */ - DataFlowCallable getEnclosingCallable() { result = TCfgScope(this.getCfgScope()) } + DataFlowCallable getEnclosingCallable() { result.asCfgScope() = this.getCfgScope() } /** Do not call: use `getEnclosingCallable()` instead. */ abstract CfgScope getCfgScope(); @@ -55,17 +61,6 @@ abstract class Node extends NodePublic { CfgNode getCfgNode() { none() } } -/** A node type that is not implemented. */ -final class NaNode extends Node { - NaNode() { none() } - - override CfgScope getCfgScope() { none() } - - override string toString() { result = "N/A" } - - override Location getLocation() { none() } -} - /** A data flow node used to model flow summaries. */ class FlowSummaryNode extends Node, TFlowSummaryNode { FlowSummaryImpl::Private::SummaryNode getSummaryNode() { this = TFlowSummaryNode(result) } @@ -102,12 +97,13 @@ class FlowSummaryNode extends Node, TFlowSummaryNode { } override DataFlowCallable getEnclosingCallable() { - result.asLibraryCallable() = this.getSummarizedCallable() - or result.asCfgScope() = this.getCfgScope() + or + result.asSummarizedCallable() = this.getSummarizedCallable() } override Location getLocation() { + Stages::DataFlowStage::ref() and exists(this.getSummarizedCallable()) and result instanceof EmptyLocation or @@ -116,7 +112,10 @@ class FlowSummaryNode extends Node, TFlowSummaryNode { result = this.getSinkElement().getLocation() } - override string toString() { result = this.getSummaryNode().toString() } + override string toString() { + Stages::DataFlowStage::ref() and + result = this.getSummaryNode().toString() + } } /** A data flow node that corresponds directly to a CFG node for an AST node. */ @@ -195,7 +194,7 @@ final class SummaryParameterNode extends ParameterNode, FlowSummaryNode { } override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { - this.getSummarizedCallable() = c.asLibraryCallable() and pos = pos_ + this.getSummarizedCallable() = c.asSummarizedCallable() and pos = pos_ } } @@ -224,13 +223,13 @@ abstract class ArgumentNode extends Node { } final class ExprArgumentNode extends ArgumentNode, ExprNode { - private CallExprBaseCfgNode call_; + private CallCfgNode call_; private RustDataFlow::ArgumentPosition pos_; ExprArgumentNode() { isArgumentForCall(n, call_, pos_) } override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { - call.asCallBaseExprCfgNode() = call_ and pos = pos_ + call.asCallCfgNode() = call_ and pos = pos_ } } @@ -239,7 +238,7 @@ final class ExprArgumentNode extends ArgumentNode, ExprNode { * has taken place. */ final class ReceiverNode extends ArgumentNode, TReceiverNode { - private MethodCallExprCfgNode n; + private CallCfgNode n; ReceiverNode() { this = TReceiverNode(n, false) } @@ -248,7 +247,7 @@ final class ReceiverNode extends ArgumentNode, TReceiverNode { MethodCallExprCfgNode getMethodCall() { result = n } override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { - call.asMethodCallExprCfgNode() = n and pos = TSelfParameterPosition() + call.asCallCfgNode() = n and pos = TSelfParameterPosition() } override CfgScope getCfgScope() { result = n.getAstNode().getEnclosingCfgScope() } @@ -281,7 +280,7 @@ final class ClosureArgumentNode extends ArgumentNode, ExprNode { ClosureArgumentNode() { lambdaCallExpr(call_, _, this.asExpr()) } override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { - call.asCallExprCfgNode() = call_ and + call.asCallCfgNode() = call_ and pos.isClosureSelf() } } @@ -330,11 +329,11 @@ abstract class OutNode extends Node { } final private class ExprOutNode extends ExprNode, OutNode { - ExprOutNode() { this.asExpr() instanceof CallExprBaseCfgNode } + ExprOutNode() { this.asExpr() instanceof CallCfgNode } /** Gets the underlying call CFG node that includes this out node. */ override DataFlowCall getCall(ReturnKind kind) { - result.asCallBaseExprCfgNode() = this.getCfgNode() and + result.asCallCfgNode() = this.getCfgNode() and kind = TNormalReturnKind() } } @@ -404,7 +403,7 @@ final class ExprPostUpdateNode extends PostUpdateNode, TExprPostUpdateNode { } final class ReceiverPostUpdateNode extends PostUpdateNode, TReceiverNode { - private MethodCallExprCfgNode n; + private CallCfgNode n; ReceiverPostUpdateNode() { this = TReceiverNode(n, true) } @@ -440,9 +439,9 @@ private class CapturePostUpdateNode extends PostUpdateNode, CaptureNode { final override string toString() { result = PostUpdateNode.super.toString() } } -final class CastNode = NaNode; - -private import codeql.rust.internal.CachedStages +final class CastNode extends ExprNode { + CastNode() { none() } +} cached newtype TNode = @@ -467,11 +466,16 @@ newtype TNode = any(FieldExprCfgNode access).getContainer(), // any(TryExprCfgNode try).getExpr(), // any(PrefixExprCfgNode pe | pe.getOperatorName() = "*").getExpr(), // - any(AwaitExprCfgNode a).getExpr(), any(MethodCallExprCfgNode mc).getReceiver(), // + any(AwaitExprCfgNode a).getExpr(), // + any(MethodCallExprCfgNode mc).getReceiver(), // getPostUpdateReverseStep(any(PostUpdateNode n).getPreUpdateNode().asExpr(), _) ] } or - TReceiverNode(MethodCallExprCfgNode mc, Boolean isPost) or + TReceiverNode(CallCfgNode mc, Boolean isPost) { + mc.getCall().receiverImplicitlyBorrowed() and + // TODO: Handle index expressions as calls in data flow. + not mc.getCall() instanceof IndexExpr + } or TSsaNode(SsaImpl::DataFlowIntegration::SsaNode node) or TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) or TClosureSelfReferenceNode(CfgScope c) { lambdaCreationExpr(c, _) } or diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll index 42b1d09f8f9a..5144df16662c 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll @@ -38,6 +38,22 @@ predicate variableWrite(AstNode write, Variable v) { ) } +private predicate variableReadCertain(BasicBlock bb, int i, VariableAccess va, Variable v) { + bb.getNode(i).getAstNode() = va and + va = v.getAnAccess() and + ( + va instanceof VariableReadAccess + or + // For immutable variables, we model a read when they are borrowed + // (although the actual read happens later, if at all). + va = any(RefExpr re).getExpr() + or + // Although compound assignments, like `x += y`, may in fact not read `x`, + // it makes sense to treat them as such + va = any(CompoundAssignmentExpr cae).getLhs() + ) +} + module SsaInput implements SsaImplCommon::InputSig { class BasicBlock = BasicBlocks::BasicBlock; @@ -66,20 +82,7 @@ module SsaInput implements SsaImplCommon::InputSig { } predicate variableRead(BasicBlock bb, int i, SourceVariable v, boolean certain) { - exists(VariableAccess va | - bb.getNode(i).getAstNode() = va and - va = v.getAnAccess() - | - va instanceof VariableReadAccess - or - // For immutable variables, we model a read when they are borrowed - // (although the actual read happens later, if at all). - va = any(RefExpr re).getExpr() - or - // Although compound assignments, like `x += y`, may in fact not read `x`, - // it makes sense to treat them as such - va = any(CompoundAssignmentExpr cae).getLhs() - ) and + variableReadCertain(bb, i, _, v) and certain = true or capturedCallRead(_, bb, i, v) and certain = false @@ -100,16 +103,6 @@ class PhiDefinition = Impl::PhiNode; module Consistency = Impl::Consistency; -/** Holds if `v` is read at index `i` in basic block `bb`. */ -private predicate variableReadActual(BasicBlock bb, int i, Variable v) { - exists(VariableAccess read | - read instanceof VariableReadAccess or read = any(RefExpr re).getExpr() - | - read.getVariable() = v and - read = bb.getNode(i).getAstNode() - ) -} - /** * Holds if captured variable `v` is written directly inside `scope`, * or inside a (transitively) nested scope of `scope`. @@ -125,10 +118,10 @@ private predicate hasCapturedWrite(Variable v, Cfg::CfgScope scope) { * immediate outer CFG scope of `scope`. */ pragma[noinline] -private predicate variableReadActualInOuterScope( +private predicate variableReadCertainInOuterScope( BasicBlock bb, int i, Variable v, Cfg::CfgScope scope ) { - variableReadActual(bb, i, v) and bb.getScope() = scope.getEnclosingCfgScope() + variableReadCertain(bb, i, _, v) and bb.getScope() = scope.getEnclosingCfgScope() } pragma[noinline] @@ -136,7 +129,7 @@ private predicate hasVariableReadWithCapturedWrite( BasicBlock bb, int i, Variable v, Cfg::CfgScope scope ) { hasCapturedWrite(v, scope) and - variableReadActualInOuterScope(bb, i, v, scope) + variableReadCertainInOuterScope(bb, i, v, scope) } private VariableAccess getACapturedVariableAccess(BasicBlock bb, Variable v) { @@ -154,7 +147,7 @@ private predicate writesCapturedVariable(BasicBlock bb, Variable v) { /** Holds if `bb` contains a captured read to variable `v`. */ pragma[nomagic] private predicate readsCapturedVariable(BasicBlock bb, Variable v) { - getACapturedVariableAccess(bb, v) instanceof VariableReadAccess + variableReadCertain(_, _, getACapturedVariableAccess(bb, v), _) } /** @@ -254,7 +247,7 @@ private module Cached { CfgNode getARead(Definition def) { exists(Variable v, BasicBlock bb, int i | Impl::ssaDefReachesRead(v, def, bb, i) and - variableReadActual(bb, i, v) and + variableReadCertain(bb, i, v.getAnAccess(), v) and result = bb.getNode(i) ) } diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml b/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml index 1a33951dfc38..1200720a0cee 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml +++ b/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml @@ -1,16 +1,28 @@ extensions: # Make sure that the extensible model predicates have at least one definition # to avoid errors about undefined extensionals. + - addsTo: + pack: codeql/rust-all + extensible: sourceModelDeprecated + data: [] - addsTo: pack: codeql/rust-all extensible: sourceModel data: [] + - addsTo: + pack: codeql/rust-all + extensible: sinkModelDeprecated + data: [] - addsTo: pack: codeql/rust-all extensible: sinkModel data: [] + - addsTo: + pack: codeql/rust-all + extensible: summaryModelDeprecated + data: [] - addsTo: pack: codeql/rust-all extensible: summaryModel diff --git a/rust/ql/lib/codeql/rust/elements.qll b/rust/ql/lib/codeql/rust/elements.qll index 4456cb4b44ae..cd44985675f3 100644 --- a/rust/ql/lib/codeql/rust/elements.qll +++ b/rust/ql/lib/codeql/rust/elements.qll @@ -6,6 +6,7 @@ import codeql.files.FileSystem import codeql.rust.elements.Abi import codeql.rust.elements.Addressable +import codeql.rust.elements.Adt import codeql.rust.elements.ArgList import codeql.rust.elements.ArrayExpr import codeql.rust.elements.ArrayListExpr @@ -186,7 +187,6 @@ import codeql.rust.elements.UseBoundGenericArgs import codeql.rust.elements.UseTree import codeql.rust.elements.UseTreeList import codeql.rust.elements.Variant -import codeql.rust.elements.VariantDef import codeql.rust.elements.VariantList import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause diff --git a/rust/ql/lib/codeql/rust/elements/Adt.qll b/rust/ql/lib/codeql/rust/elements/Adt.qll new file mode 100644 index 000000000000..c8fa30d743db --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/Adt.qll @@ -0,0 +1,13 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `Adt`. + */ + +private import internal.AdtImpl +import codeql.rust.elements.Item +import codeql.rust.elements.MacroItems + +/** + * An ADT (Abstract Data Type) definition, such as `Struct`, `Enum`, or `Union`. + */ +final class Adt = Impl::Adt; diff --git a/rust/ql/lib/codeql/rust/elements/AssocItem.qll b/rust/ql/lib/codeql/rust/elements/AssocItem.qll index 80c1ecafd7e7..525df804290f 100644 --- a/rust/ql/lib/codeql/rust/elements/AssocItem.qll +++ b/rust/ql/lib/codeql/rust/elements/AssocItem.qll @@ -4,7 +4,7 @@ */ private import internal.AssocItemImpl -import codeql.rust.elements.AstNode +import codeql.rust.elements.Item /** * An associated item in a `Trait` or `Impl`. diff --git a/rust/ql/lib/codeql/rust/elements/Call.qll b/rust/ql/lib/codeql/rust/elements/Call.qll new file mode 100644 index 000000000000..0fd7f1397e2d --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/Call.qll @@ -0,0 +1,9 @@ +/** + * This module provides the public class `Call`. + */ + +private import internal.CallImpl + +final class ArgumentPosition = Impl::ArgumentPosition; + +final class Call = Impl::Call; diff --git a/rust/ql/lib/codeql/rust/elements/Callable.qll b/rust/ql/lib/codeql/rust/elements/Callable.qll index c42262a1854a..11d029fff7df 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/Const.qll b/rust/ql/lib/codeql/rust/elements/Const.qll index b4c652076082..39aea3e25dc4 100644 --- a/rust/ql/lib/codeql/rust/elements/Const.qll +++ b/rust/ql/lib/codeql/rust/elements/Const.qll @@ -7,10 +7,11 @@ private import internal.ConstImpl import codeql.rust.elements.AssocItem import codeql.rust.elements.Attr import codeql.rust.elements.Expr -import codeql.rust.elements.Item +import codeql.rust.elements.GenericParamList import codeql.rust.elements.Name import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility +import codeql.rust.elements.WhereClause /** * A constant item declaration. diff --git a/rust/ql/lib/codeql/rust/elements/Enum.qll b/rust/ql/lib/codeql/rust/elements/Enum.qll index 3901b3827232..9d52b558f538 100644 --- a/rust/ql/lib/codeql/rust/elements/Enum.qll +++ b/rust/ql/lib/codeql/rust/elements/Enum.qll @@ -4,9 +4,9 @@ */ private import internal.EnumImpl +import codeql.rust.elements.Adt import codeql.rust.elements.Attr import codeql.rust.elements.GenericParamList -import codeql.rust.elements.Item import codeql.rust.elements.Name import codeql.rust.elements.VariantList import codeql.rust.elements.Visibility diff --git a/rust/ql/lib/codeql/rust/elements/ExternItem.qll b/rust/ql/lib/codeql/rust/elements/ExternItem.qll index 7931ce81c403..d723af883086 100644 --- a/rust/ql/lib/codeql/rust/elements/ExternItem.qll +++ b/rust/ql/lib/codeql/rust/elements/ExternItem.qll @@ -4,7 +4,7 @@ */ private import internal.ExternItemImpl -import codeql.rust.elements.AstNode +import codeql.rust.elements.Item /** * An item inside an extern block. diff --git a/rust/ql/lib/codeql/rust/elements/Function.qll b/rust/ql/lib/codeql/rust/elements/Function.qll index 2f2a151f453d..c44a3b119145 100644 --- a/rust/ql/lib/codeql/rust/elements/Function.qll +++ b/rust/ql/lib/codeql/rust/elements/Function.qll @@ -10,7 +10,6 @@ import codeql.rust.elements.BlockExpr import codeql.rust.elements.Callable import codeql.rust.elements.ExternItem import codeql.rust.elements.GenericParamList -import codeql.rust.elements.Item import codeql.rust.elements.Name import codeql.rust.elements.RetTypeRepr import codeql.rust.elements.Visibility diff --git a/rust/ql/lib/codeql/rust/elements/MacroCall.qll b/rust/ql/lib/codeql/rust/elements/MacroCall.qll index 7b8a591bb62e..240ff7ab97d5 100644 --- a/rust/ql/lib/codeql/rust/elements/MacroCall.qll +++ b/rust/ql/lib/codeql/rust/elements/MacroCall.qll @@ -8,7 +8,6 @@ import codeql.rust.elements.AssocItem import codeql.rust.elements.AstNode import codeql.rust.elements.Attr import codeql.rust.elements.ExternItem -import codeql.rust.elements.Item import codeql.rust.elements.Path import codeql.rust.elements.TokenTree diff --git a/rust/ql/lib/codeql/rust/elements/Static.qll b/rust/ql/lib/codeql/rust/elements/Static.qll index 2ddd82f25cd2..ae6e8b3b6a46 100644 --- a/rust/ql/lib/codeql/rust/elements/Static.qll +++ b/rust/ql/lib/codeql/rust/elements/Static.qll @@ -7,7 +7,6 @@ private import internal.StaticImpl import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.ExternItem -import codeql.rust.elements.Item import codeql.rust.elements.Name import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility diff --git a/rust/ql/lib/codeql/rust/elements/Struct.qll b/rust/ql/lib/codeql/rust/elements/Struct.qll index 9b57316e0ec6..7627f866f058 100644 --- a/rust/ql/lib/codeql/rust/elements/Struct.qll +++ b/rust/ql/lib/codeql/rust/elements/Struct.qll @@ -4,12 +4,11 @@ */ private import internal.StructImpl +import codeql.rust.elements.Adt import codeql.rust.elements.Attr import codeql.rust.elements.FieldList import codeql.rust.elements.GenericParamList -import codeql.rust.elements.Item import codeql.rust.elements.Name -import codeql.rust.elements.VariantDef import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause diff --git a/rust/ql/lib/codeql/rust/elements/TypeAlias.qll b/rust/ql/lib/codeql/rust/elements/TypeAlias.qll index 6cccf6a24003..051b381003bc 100644 --- a/rust/ql/lib/codeql/rust/elements/TypeAlias.qll +++ b/rust/ql/lib/codeql/rust/elements/TypeAlias.qll @@ -8,7 +8,6 @@ import codeql.rust.elements.AssocItem import codeql.rust.elements.Attr import codeql.rust.elements.ExternItem import codeql.rust.elements.GenericParamList -import codeql.rust.elements.Item import codeql.rust.elements.Name import codeql.rust.elements.TypeBoundList import codeql.rust.elements.TypeRepr diff --git a/rust/ql/lib/codeql/rust/elements/Union.qll b/rust/ql/lib/codeql/rust/elements/Union.qll index fac11390b1bf..988a1cf97997 100644 --- a/rust/ql/lib/codeql/rust/elements/Union.qll +++ b/rust/ql/lib/codeql/rust/elements/Union.qll @@ -4,12 +4,11 @@ */ private import internal.UnionImpl +import codeql.rust.elements.Adt import codeql.rust.elements.Attr import codeql.rust.elements.GenericParamList -import codeql.rust.elements.Item import codeql.rust.elements.Name import codeql.rust.elements.StructFieldList -import codeql.rust.elements.VariantDef import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause diff --git a/rust/ql/lib/codeql/rust/elements/Variant.qll b/rust/ql/lib/codeql/rust/elements/Variant.qll index 5afa140923b5..dfe5199f1592 100644 --- a/rust/ql/lib/codeql/rust/elements/Variant.qll +++ b/rust/ql/lib/codeql/rust/elements/Variant.qll @@ -9,7 +9,6 @@ import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.FieldList import codeql.rust.elements.Name -import codeql.rust.elements.VariantDef import codeql.rust.elements.Visibility /** diff --git a/rust/ql/lib/codeql/rust/elements/VariantDef.qll b/rust/ql/lib/codeql/rust/elements/VariantDef.qll deleted file mode 100644 index bafb396c29da..000000000000 --- a/rust/ql/lib/codeql/rust/elements/VariantDef.qll +++ /dev/null @@ -1,9 +0,0 @@ -// generated by codegen, do not edit -/** - * This module provides the public class `VariantDef`. - */ - -private import internal.VariantDefImpl -import codeql.rust.elements.AstNode - -final class VariantDef = Impl::VariantDef; diff --git a/rust/ql/lib/codeql/rust/elements/internal/AdtImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AdtImpl.qll new file mode 100644 index 000000000000..2243aed17a34 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/AdtImpl.qll @@ -0,0 +1,19 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `Adt`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Adt + +/** + * INTERNAL: This module contains the customizable definition of `Adt` and should not + * be referenced directly. + */ +module Impl { + /** + * An ADT (Abstract Data Type) definition, such as `Struct`, `Enum`, or `Union`. + */ + class Adt extends Generated::Adt { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/AssocItemImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AssocItemImpl.qll index 68e2945d377e..e731dd5a5219 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AssocItemImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AssocItemImpl.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 `AssocItem`. * @@ -12,6 +11,10 @@ private import codeql.rust.elements.internal.generated.AssocItem * be referenced directly. */ module Impl { + private import rust + private import codeql.rust.internal.PathResolution + + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An associated item in a `Trait` or `Impl`. * @@ -21,5 +24,15 @@ module Impl { * // ^^^^^^^^^^^^^ * ``` */ - class AssocItem extends Generated::AssocItem { } + class AssocItem extends Generated::AssocItem { + /** Holds if this item implements trait item `other`. */ + pragma[nomagic] + predicate implements(AssocItem other) { + exists(TraitItemNode t, ImplItemNode i, string name | + other = t.getAssocItem(pragma[only_bind_into](name)) and + t = i.resolveTraitTy() and + this = i.getAssocItem(pragma[only_bind_into](name)) + ) + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll index b80da6d7084f..237ebfa6b413 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll @@ -59,6 +59,17 @@ module Impl { ) } + /** Gets the block that encloses this node, if any. */ + cached + BlockExpr getEnclosingBlock() { + exists(AstNode p | p = this.getParentNode() | + result = p + or + not p instanceof BlockExpr and + result = p.getEnclosingBlock() + ) + } + /** Holds if this node is inside a macro expansion. */ predicate isInMacroExpansion() { MacroCallImpl::isInMacroExpansion(_, this) } @@ -70,9 +81,9 @@ module Impl { */ pragma[nomagic] predicate isFromMacroExpansion() { - exists(MacroCall mc | - MacroCallImpl::isInMacroExpansion(mc, this) and - not this = mc.getATokenTreeNode() + exists(AstNode root | + MacroCallImpl::isInMacroExpansion(root, this) and + not this = root.(MacroCall).getATokenTreeNode() ) } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallExprBaseImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallExprBaseImpl.qll index c916b717bf65..b78720b08fa3 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 e9ec4339d1ac..e5262014ab49 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/CallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll new file mode 100644 index 000000000000..bfa6f9b7242f --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll @@ -0,0 +1,190 @@ +private import rust +private import codeql.rust.internal.PathResolution +private import codeql.rust.internal.TypeInference as TypeInference +private import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl +private import codeql.rust.elements.Operation + +module Impl { + newtype TArgumentPosition = + TPositionalArgumentPosition(int i) { + i in [0 .. max([any(ParamList l).getNumberOfParams(), any(ArgList l).getNumberOfArgs()]) - 1] + } or + TSelfArgumentPosition() + + /** An argument position in a call. */ + class ArgumentPosition extends TArgumentPosition { + /** Gets the index of the argument in the call, if this is a positional argument. */ + int asPosition() { this = TPositionalArgumentPosition(result) } + + /** Holds if this call position is a self argument. */ + predicate isSelf() { this instanceof TSelfArgumentPosition } + + /** Gets a string representation of this argument position. */ + string toString() { + result = this.asPosition().toString() + or + this.isSelf() and result = "self" + } + } + + /** + * An expression that calls a function. + * + * This class abstracts over the different ways in which a function can be + * called in Rust. + */ + abstract class Call extends ExprImpl::Expr { + /** Holds if the receiver of this call is implicitly borrowed. */ + predicate receiverImplicitlyBorrowed() { this.implicitBorrowAt(TSelfArgumentPosition(), _) } + + /** Gets the trait targeted by this call, if any. */ + abstract Trait getTrait(); + + /** Gets the name of the method called if this call is a method call. */ + abstract string getMethodName(); + + /** Gets the argument at the given position, if any. */ + abstract Expr getArgument(ArgumentPosition pos); + + /** Holds if the argument at `pos` might be implicitly borrowed. */ + abstract predicate implicitBorrowAt(ArgumentPosition pos, boolean certain); + + /** Gets the number of arguments _excluding_ any `self` argument. */ + int getNumberOfArguments() { result = count(this.getArgument(TPositionalArgumentPosition(_))) } + + /** Gets the `i`th argument of this call, if any. */ + Expr getPositionalArgument(int i) { result = this.getArgument(TPositionalArgumentPosition(i)) } + + /** Gets the receiver of this call if it is a method call. */ + Expr getReceiver() { result = this.getArgument(TSelfArgumentPosition()) } + + /** Gets the static target of this call, if any. */ + Function getStaticTarget() { + result = TypeInference::resolveMethodCallTarget(this) + or + not exists(TypeInference::resolveMethodCallTarget(this)) and + result = this.(CallExpr).getStaticTarget() + } + + /** Gets a runtime target of this call, if any. */ + pragma[nomagic] + Function getARuntimeTarget() { + result.hasImplementation() and + ( + result = this.getStaticTarget() + or + result.implements(this.getStaticTarget()) + ) + } + } + + /** Holds if the call expression dispatches to a trait method. */ + private predicate callIsMethodCall(CallExpr call, Path qualifier, string methodName) { + exists(Path path, Function f | + path = call.getFunction().(PathExpr).getPath() and + f = resolvePath(path) and + f.getParamList().hasSelfParam() and + qualifier = path.getQualifier() and + path.getSegment().getIdentifier().getText() = methodName + ) + } + + private class CallExprCall extends Call instanceof CallExpr { + CallExprCall() { not callIsMethodCall(this, _, _) } + + override string getMethodName() { none() } + + override Trait getTrait() { none() } + + override predicate implicitBorrowAt(ArgumentPosition pos, boolean certain) { none() } + + override Expr getArgument(ArgumentPosition pos) { + result = super.getArgList().getArg(pos.asPosition()) + } + } + + private class CallExprMethodCall extends Call instanceof CallExpr { + Path qualifier; + string methodName; + + CallExprMethodCall() { callIsMethodCall(this, qualifier, methodName) } + + override string getMethodName() { result = methodName } + + override Trait getTrait() { + result = resolvePath(qualifier) and + // When the qualifier is `Self` and resolves to a trait, it's inside a + // trait method's default implementation. This is not a dispatch whose + // target is inferred from the type of the receiver, but should always + // resolve to the function in the trait block as path resolution does. + qualifier.toString() != "Self" + } + + override predicate implicitBorrowAt(ArgumentPosition pos, boolean certain) { none() } + + override Expr getArgument(ArgumentPosition pos) { + pos.isSelf() and result = super.getArgList().getArg(0) + or + result = super.getArgList().getArg(pos.asPosition() + 1) + } + } + + private class MethodCallExprCall extends Call instanceof MethodCallExpr { + override string getMethodName() { result = super.getIdentifier().getText() } + + override Trait getTrait() { none() } + + override predicate implicitBorrowAt(ArgumentPosition pos, boolean certain) { + pos.isSelf() and certain = false + } + + override Expr getArgument(ArgumentPosition pos) { + pos.isSelf() and result = this.(MethodCallExpr).getReceiver() + or + result = super.getArgList().getArg(pos.asPosition()) + } + } + + private class OperatorCall extends Call instanceof Operation { + Trait trait; + string methodName; + int borrows; + + OperatorCall() { super.isOverloaded(trait, methodName, borrows) } + + override string getMethodName() { result = methodName } + + override Trait getTrait() { result = trait } + + override predicate implicitBorrowAt(ArgumentPosition pos, boolean certain) { + ( + pos.isSelf() and borrows >= 1 + or + pos.asPosition() = 0 and borrows = 2 + ) and + certain = true + } + + override Expr getArgument(ArgumentPosition pos) { + pos.isSelf() and result = super.getOperand(0) + or + pos.asPosition() = 0 and result = super.getOperand(1) + } + } + + private class IndexCall extends Call instanceof IndexExpr { + override string getMethodName() { result = "index" } + + override Trait getTrait() { result.getCanonicalPath() = "core::ops::index::Index" } + + override predicate implicitBorrowAt(ArgumentPosition pos, boolean certain) { + pos.isSelf() and certain = true + } + + override Expr getArgument(ArgumentPosition pos) { + pos.isSelf() and result = super.getBase() + or + pos.asPosition() = 0 and result = super.getIndex() + } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll index d604b4d239f0..37e24a9150ce 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/GenericArgListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/GenericArgListImpl.qll index eaba0f7ff6e8..d459ab13dc6e 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/MacroCallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll index cac1d71dd1e1..7afe59662e4a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll @@ -14,10 +14,12 @@ module Impl { private import rust pragma[nomagic] - predicate isInMacroExpansion(MacroCall mc, AstNode n) { - n = mc.getMacroCallExpansion() + predicate isInMacroExpansion(AstNode root, AstNode n) { + n = root.(MacroCall).getMacroCallExpansion() or - isInMacroExpansion(mc, n.getParentNode()) + n = root.(Adt).getDeriveMacroExpansion(_) + or + isInMacroExpansion(root, n.getParentNode()) } // the following QLdoc is generated: if you need to edit it, do it in the schema file diff --git a/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll index c1ba794e8e43..ea76293a1bd9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll @@ -8,75 +8,82 @@ private import rust private import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl /** - * Holds if the operator `op` is overloaded to a trait with the canonical path - * `path` and the method name `method`. + * Holds if the operator `op` with arity `arity` is overloaded to a trait with + * the canonical path `path` and the method name `method`, and if it borrows its + * first `borrows` arguments. */ -private predicate isOverloaded(string op, string path, string method) { - // Negation - op = "-" and path = "core::ops::arith::Neg" and method = "neg" - or - // Not - op = "!" and path = "core::ops::bit::Not" and method = "not" - or - // Dereference - op = "*" and path = "core::ops::Deref" and method = "deref" - or - // Comparison operators - op = "==" and path = "core::cmp::PartialEq" and method = "eq" - or - op = "!=" and path = "core::cmp::PartialEq" and method = "ne" - or - op = "<" and path = "core::cmp::PartialOrd" and method = "lt" - or - op = "<=" and path = "core::cmp::PartialOrd" and method = "le" - or - op = ">" and path = "core::cmp::PartialOrd" and method = "gt" - or - op = ">=" and path = "core::cmp::PartialOrd" and method = "ge" - or - // Arithmetic operators - op = "+" and path = "core::ops::arith::Add" and method = "add" - or - op = "-" and path = "core::ops::arith::Sub" and method = "sub" - or - op = "*" and path = "core::ops::arith::Mul" and method = "mul" - or - op = "/" and path = "core::ops::arith::Div" and method = "div" - or - op = "%" and path = "core::ops::arith::Rem" and method = "rem" - or - // Arithmetic assignment expressions - op = "+=" and path = "core::ops::arith::AddAssign" and method = "add_assign" - or - op = "-=" and path = "core::ops::arith::SubAssign" and method = "sub_assign" - or - op = "*=" and path = "core::ops::arith::MulAssign" and method = "mul_assign" - or - op = "/=" and path = "core::ops::arith::DivAssign" and method = "div_assign" - or - op = "%=" and path = "core::ops::arith::RemAssign" and method = "rem_assign" - or - // Bitwise operators - op = "&" and path = "core::ops::bit::BitAnd" and method = "bitand" - or - op = "|" and path = "core::ops::bit::BitOr" and method = "bitor" - or - op = "^" and path = "core::ops::bit::BitXor" and method = "bitxor" - or - op = "<<" and path = "core::ops::bit::Shl" and method = "shl" - or - op = ">>" and path = "core::ops::bit::Shr" and method = "shr" - or - // Bitwise assignment operators - op = "&=" and path = "core::ops::bit::BitAndAssign" and method = "bitand_assign" - or - op = "|=" and path = "core::ops::bit::BitOrAssign" and method = "bitor_assign" - or - op = "^=" and path = "core::ops::bit::BitXorAssign" and method = "bitxor_assign" - or - op = "<<=" and path = "core::ops::bit::ShlAssign" and method = "shl_assign" - or - op = ">>=" and path = "core::ops::bit::ShrAssign" and method = "shr_assign" +private predicate isOverloaded(string op, int arity, string path, string method, int borrows) { + arity = 1 and + ( + // Negation + op = "-" and path = "core::ops::arith::Neg" and method = "neg" and borrows = 0 + or + // Not + op = "!" and path = "core::ops::bit::Not" and method = "not" and borrows = 0 + or + // Dereference + op = "*" and path = "core::ops::deref::Deref" and method = "deref" and borrows = 1 + ) + or + arity = 2 and + ( + // Comparison operators + op = "==" and path = "core::cmp::PartialEq" and method = "eq" and borrows = 2 + or + op = "!=" and path = "core::cmp::PartialEq" and method = "ne" and borrows = 2 + or + op = "<" and path = "core::cmp::PartialOrd" and method = "lt" and borrows = 2 + or + op = "<=" and path = "core::cmp::PartialOrd" and method = "le" and borrows = 2 + or + op = ">" and path = "core::cmp::PartialOrd" and method = "gt" and borrows = 2 + or + op = ">=" and path = "core::cmp::PartialOrd" and method = "ge" and borrows = 2 + or + // Arithmetic operators + op = "+" and path = "core::ops::arith::Add" and method = "add" and borrows = 0 + or + op = "-" and path = "core::ops::arith::Sub" and method = "sub" and borrows = 0 + or + op = "*" and path = "core::ops::arith::Mul" and method = "mul" and borrows = 0 + or + op = "/" and path = "core::ops::arith::Div" and method = "div" and borrows = 0 + or + op = "%" and path = "core::ops::arith::Rem" and method = "rem" and borrows = 0 + or + // Arithmetic assignment expressions + op = "+=" and path = "core::ops::arith::AddAssign" and method = "add_assign" and borrows = 1 + or + op = "-=" and path = "core::ops::arith::SubAssign" and method = "sub_assign" and borrows = 1 + or + op = "*=" and path = "core::ops::arith::MulAssign" and method = "mul_assign" and borrows = 1 + or + op = "/=" and path = "core::ops::arith::DivAssign" and method = "div_assign" and borrows = 1 + or + op = "%=" and path = "core::ops::arith::RemAssign" and method = "rem_assign" and borrows = 1 + or + // Bitwise operators + op = "&" and path = "core::ops::bit::BitAnd" and method = "bitand" and borrows = 0 + or + op = "|" and path = "core::ops::bit::BitOr" and method = "bitor" and borrows = 0 + or + op = "^" and path = "core::ops::bit::BitXor" and method = "bitxor" and borrows = 0 + or + op = "<<" and path = "core::ops::bit::Shl" and method = "shl" and borrows = 0 + or + op = ">>" and path = "core::ops::bit::Shr" and method = "shr" and borrows = 0 + or + // Bitwise assignment operators + op = "&=" and path = "core::ops::bit::BitAndAssign" and method = "bitand_assign" and borrows = 1 + or + op = "|=" and path = "core::ops::bit::BitOrAssign" and method = "bitor_assign" and borrows = 1 + or + op = "^=" and path = "core::ops::bit::BitXorAssign" and method = "bitxor_assign" and borrows = 1 + or + op = "<<=" and path = "core::ops::bit::ShlAssign" and method = "shl_assign" and borrows = 1 + or + op = ">>=" and path = "core::ops::bit::ShrAssign" and method = "shr_assign" and borrows = 1 + ) } /** @@ -108,8 +115,9 @@ module Impl { * Holds if this operation is overloaded to the method `methodName` of the * trait `trait`. */ - predicate isOverloaded(Trait trait, string methodName) { - isOverloaded(this.getOperatorName(), trait.getCanonicalPath(), methodName) + predicate isOverloaded(Trait trait, string methodName, int borrows) { + isOverloaded(this.getOperatorName(), this.getNumberOfOperands(), trait.getCanonicalPath(), + methodName, borrows) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TupleStructPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TupleStructPatImpl.qll index d7d4f02f81e4..38259efadb74 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TupleStructPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TupleStructPatImpl.qll @@ -34,6 +34,11 @@ module Impl { exists(this.getField(pragma[only_bind_into](pos))) } + /** + * Gets the struct matched by this pattern. + */ + Struct getStruct() { result = PathResolution::resolvePath(this.getPath()) } + /** Gets the tuple field that matches the `pos`th pattern of this pattern. */ pragma[nomagic] TupleField getTupleField(int pos) { diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll index 790186bf2c9f..056310492549 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) ) } @@ -127,6 +127,9 @@ module Impl { */ Name getName() { variableDecl(definingNode, result, text) } + /** Gets the block that encloses this variable, if any. */ + BlockExpr getEnclosingBlock() { result = definingNode.getEnclosingBlock() } + /** Gets the `self` parameter that declares this variable, if any. */ SelfParam getSelfParam() { result.getName() = this.getName() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariantDefImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariantDefImpl.qll deleted file mode 100644 index 21ab1f20d4e8..000000000000 --- a/rust/ql/lib/codeql/rust/elements/internal/VariantDefImpl.qll +++ /dev/null @@ -1,16 +0,0 @@ -// generated by codegen, remove this comment if you wish to edit this file -/** - * This module provides a hand-modifiable wrapper around the generated class `VariantDef`. - * - * INTERNAL: Do not use. - */ - -private import codeql.rust.elements.internal.generated.VariantDef - -/** - * INTERNAL: This module contains the customizable definition of `VariantDef` and should not - * be referenced directly. - */ -module Impl { - class VariantDef extends Generated::VariantDef { } -} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Adt.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Adt.qll new file mode 100644 index 000000000000..385e3930fb89 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Adt.qll @@ -0,0 +1,45 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `Adt`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl +import codeql.rust.elements.MacroItems + +/** + * INTERNAL: This module contains the fully generated definition of `Adt` and should not + * be referenced directly. + */ +module Generated { + /** + * An ADT (Abstract Data Type) definition, such as `Struct`, `Enum`, or `Union`. + * INTERNAL: Do not reference the `Generated::Adt` class directly. + * Use the subclass `Adt`, where the following predicates are available. + */ + class Adt extends Synth::TAdt, ItemImpl::Item { + /** + * Gets the `index`th derive macro expansion of this adt (0-based). + */ + MacroItems getDeriveMacroExpansion(int index) { + result = + Synth::convertMacroItemsFromRaw(Synth::convertAdtToRaw(this) + .(Raw::Adt) + .getDeriveMacroExpansion(index)) + } + + /** + * Gets any of the derive macro expansions of this adt. + */ + final MacroItems getADeriveMacroExpansion() { result = this.getDeriveMacroExpansion(_) } + + /** + * Gets the number of derive macro expansions of this adt. + */ + final int getNumberOfDeriveMacroExpansions() { + result = count(int i | exists(this.getDeriveMacroExpansion(i))) + } + } +} 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 d63e9824efd5..89f3a044c3ab 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItem.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItem.qll @@ -6,7 +6,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.internal.ItemImpl::Impl as ItemImpl /** * INTERNAL: This module contains the fully generated definition of `AssocItem` and should not @@ -24,5 +24,5 @@ module Generated { * INTERNAL: Do not reference the `Generated::AssocItem` class directly. * Use the subclass `AssocItem`, where the following predicates are available. */ - class AssocItem extends Synth::TAssocItem, AstNodeImpl::AstNode { } + class AssocItem extends Synth::TAssocItem, ItemImpl::Item { } } 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 046558c356d2..1d6364fb94f3 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 710cfe2078e3..f42f711dcf82 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/Const.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll index 3ff3c77f04ed..07ffd9058bba 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll @@ -9,10 +9,11 @@ private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.internal.AssocItemImpl::Impl as AssocItemImpl import codeql.rust.elements.Attr import codeql.rust.elements.Expr -import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl +import codeql.rust.elements.GenericParamList import codeql.rust.elements.Name import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility +import codeql.rust.elements.WhereClause /** * INTERNAL: This module contains the fully generated definition of `Const` and should not @@ -29,7 +30,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::Const` class directly. * Use the subclass `Const`, where the following predicates are available. */ - class Const extends Synth::TConst, AssocItemImpl::AssocItem, ItemImpl::Item { + class Const extends Synth::TConst, AssocItemImpl::AssocItem { override string getAPrimaryQlClass() { result = "Const" } /** @@ -61,6 +62,21 @@ module Generated { */ final predicate hasBody() { exists(this.getBody()) } + /** + * Gets the generic parameter list of this const, if it exists. + */ + GenericParamList getGenericParamList() { + result = + Synth::convertGenericParamListFromRaw(Synth::convertConstToRaw(this) + .(Raw::Const) + .getGenericParamList()) + } + + /** + * Holds if `getGenericParamList()` exists. + */ + final predicate hasGenericParamList() { exists(this.getGenericParamList()) } + /** * Holds if this const is const. */ @@ -108,5 +124,30 @@ module Generated { * Holds if `getVisibility()` exists. */ final predicate hasVisibility() { exists(this.getVisibility()) } + + /** + * Gets the where clause of this const, if it exists. + */ + WhereClause getWhereClause() { + result = + Synth::convertWhereClauseFromRaw(Synth::convertConstToRaw(this) + .(Raw::Const) + .getWhereClause()) + } + + /** + * Holds if `getWhereClause()` exists. + */ + final predicate hasWhereClause() { exists(this.getWhereClause()) } + + /** + * Holds if this constant has an implementation. + * + * This is the same as `hasBody` for source code, but for library code (for which we always skip + * the body), this will hold when the body was present in the original code. + */ + predicate hasImplementation() { + Synth::convertConstToRaw(this).(Raw::Const).hasImplementation() + } } } 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 ec5c97892f5f..b829ead848cc 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Enum.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Enum.qll @@ -6,9 +6,9 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.internal.AdtImpl::Impl as AdtImpl import codeql.rust.elements.Attr import codeql.rust.elements.GenericParamList -import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.Name import codeql.rust.elements.VariantList import codeql.rust.elements.Visibility @@ -29,7 +29,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::Enum` class directly. * Use the subclass `Enum`, where the following predicates are available. */ - class Enum extends Synth::TEnum, ItemImpl::Item { + class Enum extends Synth::TEnum, AdtImpl::Adt { override string getAPrimaryQlClass() { result = "Enum" } /** 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 09c6ed3bdeb2..c42e43173ff5 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItem.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItem.qll @@ -6,7 +6,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.internal.ItemImpl::Impl as ItemImpl /** * INTERNAL: This module contains the fully generated definition of `ExternItem` and should not @@ -26,5 +26,5 @@ module Generated { * INTERNAL: Do not reference the `Generated::ExternItem` class directly. * Use the subclass `ExternItem`, where the following predicates are available. */ - class ExternItem extends Synth::TExternItem, AstNodeImpl::AstNode { } + class ExternItem extends Synth::TExternItem, ItemImpl::Item { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Function.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Function.qll index 82914663b940..db0b4fd15091 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Function.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Function.qll @@ -12,7 +12,6 @@ import codeql.rust.elements.BlockExpr import codeql.rust.elements.internal.CallableImpl::Impl as CallableImpl import codeql.rust.elements.internal.ExternItemImpl::Impl as ExternItemImpl import codeql.rust.elements.GenericParamList -import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.Name import codeql.rust.elements.RetTypeRepr import codeql.rust.elements.Visibility @@ -38,7 +37,7 @@ module Generated { * Use the subclass `Function`, where the following predicates are available. */ class Function extends Synth::TFunction, AssocItemImpl::AssocItem, ExternItemImpl::ExternItem, - ItemImpl::Item, CallableImpl::Callable + CallableImpl::Callable { override string getAPrimaryQlClass() { result = "Function" } @@ -164,5 +163,15 @@ module Generated { * Holds if `getWhereClause()` exists. */ final predicate hasWhereClause() { exists(this.getWhereClause()) } + + /** + * Holds if this function has an implementation. + * + * This is the same as `hasBody` for source code, but for library code (for which we always skip + * the body), this will hold when the body was present in the original code. + */ + predicate hasImplementation() { + Synth::convertFunctionToRaw(this).(Raw::Function).hasImplementation() + } } } 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 94b9c13e789c..bcca8b8deef3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroCall.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroCall.qll @@ -10,7 +10,6 @@ import codeql.rust.elements.internal.AssocItemImpl::Impl as AssocItemImpl import codeql.rust.elements.AstNode import codeql.rust.elements.Attr import codeql.rust.elements.internal.ExternItemImpl::Impl as ExternItemImpl -import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.Path import codeql.rust.elements.TokenTree @@ -29,9 +28,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::MacroCall` class directly. * Use the subclass `MacroCall`, where the following predicates are available. */ - class MacroCall extends Synth::TMacroCall, AssocItemImpl::AssocItem, ExternItemImpl::ExternItem, - ItemImpl::Item - { + class MacroCall extends Synth::TMacroCall, AssocItemImpl::AssocItem, ExternItemImpl::ExternItem { override string getAPrimaryQlClass() { result = "MacroCall" } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll index 5c8e5f868204..e2aa343f65d9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll @@ -9,107 +9,29 @@ import codeql.rust.elements.internal.ExtractorStep import codeql.rust.elements.internal.NamedCrate private module Impl { - private Element getImmediateChildOfElement(Element e, int index, string partialPredicateCall) { - none() - } - private Element getImmediateChildOfExtractorStep( ExtractorStep e, int index, string partialPredicateCall ) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfLocatable(Locatable e, int index, string partialPredicateCall) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfNamedCrate(NamedCrate e, int index, string partialPredicateCall) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfUnextracted( - Unextracted e, int index, string partialPredicateCall - ) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAstNode(AstNode e, int index, string partialPredicateCall) { - exists(int b, int bLocatable, int n | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and - ( - none() - or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfCrate(Crate e, int index, string partialPredicateCall) { - exists(int b, int bLocatable, int n | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and - ( - none() - or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfFormat(Format e, int index, string partialPredicateCall) { - exists( - int b, int bLocatable, int n, int nArgumentRef, int nWidthArgument, int nPrecisionArgument - | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and + exists(int n, int nArgumentRef, int nWidthArgument, int nPrecisionArgument | + n = 0 and nArgumentRef = n + 1 and nWidthArgument = nArgumentRef + 1 and nPrecisionArgument = nWidthArgument + 1 and ( none() or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - or index = n and result = e.getArgumentRef() and partialPredicateCall = "ArgumentRef()" or index = nArgumentRef and @@ -126,90 +48,36 @@ private module Impl { private Element getImmediateChildOfFormatArgument( FormatArgument e, int index, string partialPredicateCall ) { - exists(int b, int bLocatable, int n, int nVariable | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and + exists(int n, int nVariable | + n = 0 and nVariable = n + 1 and ( none() or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - or index = n and result = e.getVariable() and partialPredicateCall = "Variable()" ) ) } private Element getImmediateChildOfMissing(Missing e, int index, string partialPredicateCall) { - exists(int b, int bUnextracted, int n | - b = 0 and - bUnextracted = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnextracted(e, i, _)) | i) and - n = bUnextracted and - ( - none() - or - result = getImmediateChildOfUnextracted(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnimplemented( Unimplemented e, int index, string partialPredicateCall ) { - exists(int b, int bUnextracted, int n | - b = 0 and - bUnextracted = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnextracted(e, i, _)) | i) and - n = bUnextracted and - ( - none() - or - result = getImmediateChildOfUnextracted(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAbi(Abi e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } - private Element getImmediateChildOfAddressable( - Addressable e, int index, string partialPredicateCall - ) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } + private Element getImmediateChildOfAbi(Abi e, int index, string partialPredicateCall) { none() } private Element getImmediateChildOfArgList(ArgList e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nArg | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nArg | + n = 0 and nArg = n + 1 + max(int i | i = -1 or exists(e.getArg(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getArg(index - n) and partialPredicateCall = "Arg(" + (index - n).toString() + ")" ) @@ -217,45 +85,19 @@ private module Impl { } private Element getImmediateChildOfAsmDirSpec(AsmDirSpec e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAsmOperand(AsmOperand e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfAsmOperandExpr( AsmOperandExpr e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nInExpr, int nOutExpr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nInExpr, int nOutExpr | + n = 0 and nInExpr = n + 1 and nOutExpr = nInExpr + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getInExpr() and partialPredicateCall = "InExpr()" or index = nInExpr and result = e.getOutExpr() and partialPredicateCall = "OutExpr()" @@ -264,74 +106,31 @@ private module Impl { } private Element getImmediateChildOfAsmOption(AsmOption e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAsmPiece(AsmPiece e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfAsmRegSpec(AsmRegSpec e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nIdentifier | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nIdentifier | + n = 0 and nIdentifier = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getIdentifier() and partialPredicateCall = "Identifier()" ) ) } - private Element getImmediateChildOfAssocItem(AssocItem e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfAssocItemList( AssocItemList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nAssocItem, int nAttr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAssocItem, int nAttr | + n = 0 and nAssocItem = n + 1 + max(int i | i = -1 or exists(e.getAssocItem(i)) | i) and nAttr = nAssocItem + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAssocItem(index - n) and partialPredicateCall = "AssocItem(" + (index - n).toString() + ")" or @@ -342,54 +141,26 @@ private module Impl { } private Element getImmediateChildOfAttr(Attr e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nMeta | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nMeta | + n = 0 and nMeta = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getMeta() and partialPredicateCall = "Meta()" ) ) } - private Element getImmediateChildOfCallable(Callable e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nParamList, int nAttr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - nParamList = n + 1 and - nAttr = nParamList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or - index = n and result = e.getParamList() and partialPredicateCall = "ParamList()" - or - result = e.getAttr(index - nParamList) and - partialPredicateCall = "Attr(" + (index - nParamList).toString() + ")" - ) - ) - } - private Element getImmediateChildOfClosureBinder( ClosureBinder e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nGenericParamList | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nGenericParamList | + n = 0 and nGenericParamList = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getGenericParamList() and partialPredicateCall = "GenericParamList()" @@ -397,46 +168,16 @@ private module Impl { ) } - private Element getImmediateChildOfExpr(Expr e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfExternItem(ExternItem e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfExternItemList( ExternItemList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nAttr, int nExternItem | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nExternItem | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExternItem = nAttr + 1 + max(int i | i = -1 or exists(e.getExternItem(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -446,33 +187,16 @@ private module Impl { ) } - private Element getImmediateChildOfFieldList(FieldList e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfFormatArgsArg( FormatArgsArg e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nExpr, int nName | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nExpr, int nName | + n = 0 and nExpr = n + 1 and nName = nExpr + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getExpr() and partialPredicateCall = "Expr()" or index = nExpr and result = e.getName() and partialPredicateCall = "Name()" @@ -480,66 +204,30 @@ private module Impl { ) } - private Element getImmediateChildOfGenericArg(GenericArg e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfGenericArgList( GenericArgList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nGenericArg | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nGenericArg | + n = 0 and nGenericArg = n + 1 + max(int i | i = -1 or exists(e.getGenericArg(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getGenericArg(index - n) and partialPredicateCall = "GenericArg(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfGenericParam( - GenericParam e, int index, string partialPredicateCall - ) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfGenericParamList( GenericParamList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nGenericParam | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nGenericParam | + n = 0 and nGenericParam = n + 1 + max(int i | i = -1 or exists(e.getGenericParam(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getGenericParam(index - n) and partialPredicateCall = "GenericParam(" + (index - n).toString() + ")" ) @@ -547,17 +235,13 @@ private module Impl { } private Element getImmediateChildOfItemList(ItemList e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nAttr, int nItem | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nItem | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nItem = nAttr + 1 + max(int i | i = -1 or exists(e.getItem(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -568,48 +252,36 @@ private module Impl { } private Element getImmediateChildOfLabel(Label e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nLifetime | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nLifetime | + n = 0 and nLifetime = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getLifetime() and partialPredicateCall = "Lifetime()" ) ) } private Element getImmediateChildOfLetElse(LetElse e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nBlockExpr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nBlockExpr | + n = 0 and nBlockExpr = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getBlockExpr() and partialPredicateCall = "BlockExpr()" ) ) } private Element getImmediateChildOfMacroItems(MacroItems e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nItem | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nItem | + n = 0 and nItem = n + 1 + max(int i | i = -1 or exists(e.getItem(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getItem(index - n) and partialPredicateCall = "Item(" + (index - n).toString() + ")" ) @@ -617,10 +289,8 @@ private module Impl { } private Element getImmediateChildOfMatchArm(MatchArm e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nAttr, int nExpr, int nGuard, int nPat | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nExpr, int nGuard, int nPat | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and nGuard = nExpr + 1 and @@ -628,8 +298,6 @@ private module Impl { ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -645,17 +313,13 @@ private module Impl { private Element getImmediateChildOfMatchArmList( MatchArmList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nArm, int nAttr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nArm, int nAttr | + n = 0 and nArm = n + 1 + max(int i | i = -1 or exists(e.getArm(i)) | i) and nAttr = nArm + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getArm(index - n) and partialPredicateCall = "Arm(" + (index - n).toString() + ")" or @@ -666,34 +330,26 @@ private module Impl { } private Element getImmediateChildOfMatchGuard(MatchGuard e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nCondition | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nCondition | + n = 0 and nCondition = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getCondition() and partialPredicateCall = "Condition()" ) ) } private Element getImmediateChildOfMeta(Meta e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nExpr, int nPath, int nTokenTree | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nExpr, int nPath, int nTokenTree | + n = 0 and nExpr = n + 1 and nPath = nExpr + 1 and nTokenTree = nPath + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getExpr() and partialPredicateCall = "Expr()" or index = nExpr and result = e.getPath() and partialPredicateCall = "Path()" @@ -703,51 +359,16 @@ private module Impl { ) } - private Element getImmediateChildOfName(Name e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfParamBase(ParamBase e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nAttr, int nTypeRepr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nTypeRepr = nAttr + 1 and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" - or - index = nAttr and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" - ) - ) - } + private Element getImmediateChildOfName(Name e, int index, string partialPredicateCall) { none() } private Element getImmediateChildOfParamList(ParamList e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nParam, int nSelfParam | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nParam, int nSelfParam | + n = 0 and nParam = n + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and nSelfParam = nParam + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getParam(index - n) and partialPredicateCall = "Param(" + (index - n).toString() + ")" or @@ -759,47 +380,26 @@ private module Impl { private Element getImmediateChildOfParenthesizedArgList( ParenthesizedArgList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nTypeArg | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nTypeArg | + n = 0 and nTypeArg = n + 1 + max(int i | i = -1 or exists(e.getTypeArg(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getTypeArg(index - n) and partialPredicateCall = "TypeArg(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfPat(Pat e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfPath(Path e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nQualifier, int nSegment | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nQualifier, int nSegment | + n = 0 and nQualifier = n + 1 and nSegment = nQualifier + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getQualifier() and partialPredicateCall = "Qualifier()" or index = nQualifier and result = e.getSegment() and partialPredicateCall = "Segment()" @@ -811,12 +411,10 @@ private module Impl { PathSegment e, int index, string partialPredicateCall ) { exists( - int b, int bAstNode, int n, int nGenericArgList, int nIdentifier, int nParenthesizedArgList, - int nRetType, int nReturnTypeSyntax, int nTypeRepr, int nTraitTypeRepr + int n, int nGenericArgList, int nIdentifier, int nParenthesizedArgList, int nRetType, + int nReturnTypeSyntax, int nTypeRepr, int nTraitTypeRepr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + n = 0 and nGenericArgList = n + 1 and nIdentifier = nGenericArgList + 1 and nParenthesizedArgList = nIdentifier + 1 and @@ -827,8 +425,6 @@ private module Impl { ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getGenericArgList() and partialPredicateCall = "GenericArgList()" or index = nGenericArgList and @@ -859,47 +455,26 @@ private module Impl { } private Element getImmediateChildOfRename(Rename e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nName | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nName | + n = 0 and nName = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getName() and partialPredicateCall = "Name()" ) ) } - private Element getImmediateChildOfResolvable(Resolvable e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfRetTypeRepr( RetTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nTypeRepr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) @@ -908,30 +483,17 @@ private module Impl { private Element getImmediateChildOfReturnTypeSyntax( ReturnTypeSyntax e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfSourceFile(SourceFile e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nAttr, int nItem | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nItem | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nItem = nAttr + 1 + max(int i | i = -1 or exists(e.getItem(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -941,32 +503,15 @@ private module Impl { ) } - private Element getImmediateChildOfStmt(Stmt e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfStmtList(StmtList e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nAttr, int nStatement, int nTailExpr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nStatement, int nTailExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nStatement = nAttr + 1 + max(int i | i = -1 or exists(e.getStatement(i)) | i) and nTailExpr = nStatement + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -981,18 +526,14 @@ private module Impl { private Element getImmediateChildOfStructExprField( StructExprField e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nAttr, int nExpr, int nIdentifier | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nExpr, int nIdentifier | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and nIdentifier = nExpr + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1006,18 +547,14 @@ private module Impl { private Element getImmediateChildOfStructExprFieldList( StructExprFieldList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nAttr, int nField, int nSpread | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nField, int nSpread | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nField = nAttr + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and nSpread = nField + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1032,12 +569,8 @@ private module Impl { private Element getImmediateChildOfStructField( StructField e, int index, string partialPredicateCall ) { - exists( - int b, int bAstNode, int n, int nAttr, int nDefault, int nName, int nTypeRepr, int nVisibility - | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nDefault, int nName, int nTypeRepr, int nVisibility | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nDefault = nAttr + 1 and nName = nDefault + 1 and @@ -1046,8 +579,6 @@ private module Impl { ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1065,18 +596,14 @@ private module Impl { private Element getImmediateChildOfStructPatField( StructPatField e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nAttr, int nIdentifier, int nPat | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nIdentifier, int nPat | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nIdentifier = nAttr + 1 and nPat = nIdentifier + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1090,17 +617,13 @@ private module Impl { private Element getImmediateChildOfStructPatFieldList( StructPatFieldList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nField, int nRestPat | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nField, int nRestPat | + n = 0 and nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and nRestPat = nField + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getField(index - n) and partialPredicateCall = "Field(" + (index - n).toString() + ")" or @@ -1109,45 +632,19 @@ private module Impl { ) } - private Element getImmediateChildOfToken(Token e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfTokenTree(TokenTree e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfTupleField(TupleField e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nAttr, int nTypeRepr, int nVisibility | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nTypeRepr, int nVisibility | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nTypeRepr = nAttr + 1 and nVisibility = nTypeRepr + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1159,18 +656,14 @@ private module Impl { } private Element getImmediateChildOfTypeBound(TypeBound e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nLifetime, int nTypeRepr, int nUseBoundGenericArgs | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nLifetime, int nTypeRepr, int nUseBoundGenericArgs | + n = 0 and nLifetime = n + 1 and nTypeRepr = nLifetime + 1 and nUseBoundGenericArgs = nTypeRepr + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getLifetime() and partialPredicateCall = "Lifetime()" or index = nLifetime and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" @@ -1185,63 +678,27 @@ private module Impl { private Element getImmediateChildOfTypeBoundList( TypeBoundList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nBound | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nBound | + n = 0 and nBound = n + 1 + max(int i | i = -1 or exists(e.getBound(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getBound(index - n) and partialPredicateCall = "Bound(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfTypeRepr(TypeRepr e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + private Element getImmediateChildOfUseBoundGenericArgs( + UseBoundGenericArgs e, int index, string partialPredicateCall + ) { + exists(int n, int nUseBoundGenericArg | + n = 0 and + nUseBoundGenericArg = n + 1 + max(int i | i = -1 or exists(e.getUseBoundGenericArg(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfUseBoundGenericArg( - UseBoundGenericArg e, int index, string partialPredicateCall - ) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfUseBoundGenericArgs( - UseBoundGenericArgs e, int index, string partialPredicateCall - ) { - exists(int b, int bAstNode, int n, int nUseBoundGenericArg | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - nUseBoundGenericArg = n + 1 + max(int i | i = -1 or exists(e.getUseBoundGenericArg(i)) | i) and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getUseBoundGenericArg(index - n) and partialPredicateCall = "UseBoundGenericArg(" + (index - n).toString() + ")" ) @@ -1249,18 +706,14 @@ private module Impl { } private Element getImmediateChildOfUseTree(UseTree e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nPath, int nRename, int nUseTreeList | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nPath, int nRename, int nUseTreeList | + n = 0 and nPath = n + 1 and nRename = nPath + 1 and nUseTreeList = nRename + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getPath() and partialPredicateCall = "Path()" or index = nPath and result = e.getRename() and partialPredicateCall = "Rename()" @@ -1273,48 +726,27 @@ private module Impl { private Element getImmediateChildOfUseTreeList( UseTreeList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nUseTree | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nUseTree | + n = 0 and nUseTree = n + 1 + max(int i | i = -1 or exists(e.getUseTree(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getUseTree(index - n) and partialPredicateCall = "UseTree(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfVariantDef(VariantDef e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfVariantList( VariantList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nVariant | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nVariant | + n = 0 and nVariant = n + 1 + max(int i | i = -1 or exists(e.getVariant(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getVariant(index - n) and partialPredicateCall = "Variant(" + (index - n).toString() + ")" ) @@ -1322,16 +754,12 @@ private module Impl { } private Element getImmediateChildOfVisibility(Visibility e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nPath | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nPath | + n = 0 and nPath = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getPath() and partialPredicateCall = "Path()" ) ) @@ -1340,16 +768,12 @@ private module Impl { private Element getImmediateChildOfWhereClause( WhereClause e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nPredicate | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nPredicate | + n = 0 and nPredicate = n + 1 + max(int i | i = -1 or exists(e.getPredicate(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getPredicate(index - n) and partialPredicateCall = "Predicate(" + (index - n).toString() + ")" ) @@ -1357,13 +781,8 @@ private module Impl { } private Element getImmediateChildOfWherePred(WherePred e, int index, string partialPredicateCall) { - exists( - int b, int bAstNode, int n, int nGenericParamList, int nLifetime, int nTypeRepr, - int nTypeBoundList - | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nGenericParamList, int nLifetime, int nTypeRepr, int nTypeBoundList | + n = 0 and nGenericParamList = n + 1 and nLifetime = nGenericParamList + 1 and nTypeRepr = nLifetime + 1 and @@ -1371,8 +790,6 @@ private module Impl { ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getGenericParamList() and partialPredicateCall = "GenericParamList()" @@ -1390,41 +807,16 @@ private module Impl { ) } - private Element getImmediateChildOfArrayExpr(ArrayExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nExpr, int nAttr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nExpr = n + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and - nAttr = nExpr + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = e.getExpr(index - n) and - partialPredicateCall = "Expr(" + (index - n).toString() + ")" - or - result = e.getAttr(index - nExpr) and - partialPredicateCall = "Attr(" + (index - nExpr).toString() + ")" - ) - ) - } - private Element getImmediateChildOfArrayExprInternal( ArrayExprInternal e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1437,17 +829,13 @@ private module Impl { private Element getImmediateChildOfArrayTypeRepr( ArrayTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nConstArg, int nElementTypeRepr | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nConstArg, int nElementTypeRepr | + n = 0 and nConstArg = n + 1 and nElementTypeRepr = nConstArg + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getConstArg() and partialPredicateCall = "ConstArg()" or index = nConstArg and @@ -1460,48 +848,30 @@ private module Impl { private Element getImmediateChildOfAsmClobberAbi( AsmClobberAbi e, int index, string partialPredicateCall ) { - exists(int b, int bAsmPiece, int n | - b = 0 and - bAsmPiece = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmPiece(e, i, _)) | i) and - n = bAsmPiece and - ( - none() - or - result = getImmediateChildOfAsmPiece(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfAsmConst(AsmConst e, int index, string partialPredicateCall) { - exists(int b, int bAsmOperand, int n, int nExpr | - b = 0 and - bAsmOperand = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmOperand(e, i, _)) | i) and - n = bAsmOperand and + exists(int n, int nExpr | + n = 0 and nExpr = n + 1 and ( none() or - result = getImmediateChildOfAsmOperand(e, index - b, partialPredicateCall) - or index = n and result = e.getExpr() and partialPredicateCall = "Expr()" ) ) } private Element getImmediateChildOfAsmExpr(AsmExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAsmPiece, int nAttr, int nTemplate | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAsmPiece, int nAttr, int nTemplate | + n = 0 and nAsmPiece = n + 1 + max(int i | i = -1 or exists(e.getAsmPiece(i)) | i) and nAttr = nAsmPiece + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nTemplate = nAttr + 1 + max(int i | i = -1 or exists(e.getTemplate(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAsmPiece(index - n) and partialPredicateCall = "AsmPiece(" + (index - n).toString() + ")" or @@ -1515,17 +885,12 @@ private module Impl { } private Element getImmediateChildOfAsmLabel(AsmLabel e, int index, string partialPredicateCall) { - exists(int b, int bAsmOperand, int n, int nBlockExpr | - b = 0 and - bAsmOperand = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmOperand(e, i, _)) | i) and - n = bAsmOperand and + exists(int n, int nBlockExpr | + n = 0 and nBlockExpr = n + 1 and ( none() or - result = getImmediateChildOfAsmOperand(e, index - b, partialPredicateCall) - or index = n and result = e.getBlockExpr() and partialPredicateCall = "BlockExpr()" ) ) @@ -1534,17 +899,13 @@ private module Impl { private Element getImmediateChildOfAsmOperandNamed( AsmOperandNamed e, int index, string partialPredicateCall ) { - exists(int b, int bAsmPiece, int n, int nAsmOperand, int nName | - b = 0 and - bAsmPiece = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmPiece(e, i, _)) | i) and - n = bAsmPiece and + exists(int n, int nAsmOperand, int nName | + n = 0 and nAsmOperand = n + 1 and nName = nAsmOperand + 1 and ( none() or - result = getImmediateChildOfAsmPiece(e, index - b, partialPredicateCall) - or index = n and result = e.getAsmOperand() and partialPredicateCall = "AsmOperand()" or index = nAsmOperand and result = e.getName() and partialPredicateCall = "Name()" @@ -1555,16 +916,12 @@ private module Impl { private Element getImmediateChildOfAsmOptionsList( AsmOptionsList e, int index, string partialPredicateCall ) { - exists(int b, int bAsmPiece, int n, int nAsmOption | - b = 0 and - bAsmPiece = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmPiece(e, i, _)) | i) and - n = bAsmPiece and + exists(int n, int nAsmOption | + n = 0 and nAsmOption = n + 1 + max(int i | i = -1 or exists(e.getAsmOption(i)) | i) and ( none() or - result = getImmediateChildOfAsmPiece(e, index - b, partialPredicateCall) - or result = e.getAsmOption(index - n) and partialPredicateCall = "AsmOption(" + (index - n).toString() + ")" ) @@ -1574,19 +931,14 @@ private module Impl { private Element getImmediateChildOfAsmRegOperand( AsmRegOperand e, int index, string partialPredicateCall ) { - exists(int b, int bAsmOperand, int n, int nAsmDirSpec, int nAsmOperandExpr, int nAsmRegSpec | - b = 0 and - bAsmOperand = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmOperand(e, i, _)) | i) and - n = bAsmOperand and + exists(int n, int nAsmDirSpec, int nAsmOperandExpr, int nAsmRegSpec | + n = 0 and nAsmDirSpec = n + 1 and nAsmOperandExpr = nAsmDirSpec + 1 and nAsmRegSpec = nAsmOperandExpr + 1 and ( none() or - result = getImmediateChildOfAsmOperand(e, index - b, partialPredicateCall) - or index = n and result = e.getAsmDirSpec() and partialPredicateCall = "AsmDirSpec()" or index = nAsmDirSpec and @@ -1601,17 +953,12 @@ private module Impl { } private Element getImmediateChildOfAsmSym(AsmSym e, int index, string partialPredicateCall) { - exists(int b, int bAsmOperand, int n, int nPath | - b = 0 and - bAsmOperand = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmOperand(e, i, _)) | i) and - n = bAsmOperand and + exists(int n, int nPath | + n = 0 and nPath = n + 1 and ( none() or - result = getImmediateChildOfAsmOperand(e, index - b, partialPredicateCall) - or index = n and result = e.getPath() and partialPredicateCall = "Path()" ) ) @@ -1621,13 +968,10 @@ private module Impl { AssocTypeArg e, int index, string partialPredicateCall ) { exists( - int b, int bGenericArg, int n, int nConstArg, int nGenericArgList, int nIdentifier, - int nParamList, int nRetType, int nReturnTypeSyntax, int nTypeRepr, int nTypeBoundList + int n, int nConstArg, int nGenericArgList, int nIdentifier, int nParamList, int nRetType, + int nReturnTypeSyntax, int nTypeRepr, int nTypeBoundList | - b = 0 and - bGenericArg = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericArg(e, i, _)) | i) and - n = bGenericArg and + n = 0 and nConstArg = n + 1 and nGenericArgList = nConstArg + 1 and nIdentifier = nGenericArgList + 1 and @@ -1639,8 +983,6 @@ private module Impl { ( none() or - result = getImmediateChildOfGenericArg(e, index - b, partialPredicateCall) - or index = n and result = e.getConstArg() and partialPredicateCall = "ConstArg()" or index = nConstArg and @@ -1671,17 +1013,13 @@ private module Impl { } private Element getImmediateChildOfAwaitExpr(AwaitExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1691,17 +1029,13 @@ private module Impl { } private Element getImmediateChildOfBecomeExpr(BecomeExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1711,18 +1045,14 @@ private module Impl { } private Element getImmediateChildOfBinaryExpr(BinaryExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nLhs, int nRhs | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nLhs, int nRhs | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nLhs = nAttr + 1 and nRhs = nLhs + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1734,34 +1064,26 @@ private module Impl { } private Element getImmediateChildOfBoxPat(BoxPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nPat | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nPat | + n = 0 and nPat = n + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getPat() and partialPredicateCall = "Pat()" ) ) } private Element getImmediateChildOfBreakExpr(BreakExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr, int nLifetime | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr, int nLifetime | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and nLifetime = nExpr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1772,41 +1094,15 @@ private module Impl { ) } - private Element getImmediateChildOfCallExprBase( - CallExprBase e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n, int nArgList, int nAttr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nArgList = n + 1 and - nAttr = nArgList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getArgList() and partialPredicateCall = "ArgList()" - or - result = e.getAttr(index - nArgList) and - partialPredicateCall = "Attr(" + (index - nArgList).toString() + ")" - ) - ) - } - private Element getImmediateChildOfCastExpr(CastExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr, int nTypeRepr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr, int nTypeRepr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and nTypeRepr = nExpr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1820,23 +1116,22 @@ private module Impl { private Element getImmediateChildOfClosureExpr( ClosureExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bCallable, int n, int nBody, int nClosureBinder, int nRetType | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bCallable = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfCallable(e, i, _)) | i) and - n = bCallable and - nBody = n + 1 and + exists(int n, int nParamList, int nAttr, int nBody, int nClosureBinder, int nRetType | + n = 0 and + nParamList = n + 1 and + nAttr = nParamList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nBody = nAttr + 1 and nClosureBinder = nBody + 1 and nRetType = nClosureBinder + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) + index = n and result = e.getParamList() and partialPredicateCall = "ParamList()" or - result = getImmediateChildOfCallable(e, index - bExpr, partialPredicateCall) + result = e.getAttr(index - nParamList) and + partialPredicateCall = "Attr(" + (index - nParamList).toString() + ")" or - index = n and result = e.getBody() and partialPredicateCall = "Body()" + index = nAttr and result = e.getBody() and partialPredicateCall = "Body()" or index = nBody and result = e.getClosureBinder() and partialPredicateCall = "ClosureBinder()" or @@ -1846,30 +1141,16 @@ private module Impl { } private Element getImmediateChildOfComment(Comment e, int index, string partialPredicateCall) { - exists(int b, int bToken, int n | - b = 0 and - bToken = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfToken(e, i, _)) | i) and - n = bToken and - ( - none() - or - result = getImmediateChildOfToken(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfConstArg(ConstArg e, int index, string partialPredicateCall) { - exists(int b, int bGenericArg, int n, int nExpr | - b = 0 and - bGenericArg = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericArg(e, i, _)) | i) and - n = bGenericArg and + exists(int n, int nExpr | + n = 0 and nExpr = n + 1 and ( none() or - result = getImmediateChildOfGenericArg(e, index - b, partialPredicateCall) - or index = n and result = e.getExpr() and partialPredicateCall = "Expr()" ) ) @@ -1878,27 +1159,20 @@ private module Impl { private Element getImmediateChildOfConstBlockPat( ConstBlockPat e, int index, string partialPredicateCall ) { - exists(int b, int bPat, int n, int nBlockExpr | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nBlockExpr | + n = 0 and nBlockExpr = n + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getBlockExpr() and partialPredicateCall = "BlockExpr()" ) ) } private Element getImmediateChildOfConstParam(ConstParam e, int index, string partialPredicateCall) { - exists(int b, int bGenericParam, int n, int nAttr, int nDefaultVal, int nName, int nTypeRepr | - b = 0 and - bGenericParam = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericParam(e, i, _)) | i) and - n = bGenericParam and + exists(int n, int nAttr, int nDefaultVal, int nName, int nTypeRepr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nDefaultVal = nAttr + 1 and nName = nDefaultVal + 1 and @@ -1906,8 +1180,6 @@ private module Impl { ( none() or - result = getImmediateChildOfGenericParam(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1923,17 +1195,13 @@ private module Impl { private Element getImmediateChildOfContinueExpr( ContinueExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nAttr, int nLifetime | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nLifetime | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nLifetime = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1945,50 +1213,38 @@ private module Impl { private Element getImmediateChildOfDynTraitTypeRepr( DynTraitTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nTypeBoundList | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nTypeBoundList | + n = 0 and nTypeBoundList = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeBoundList() and partialPredicateCall = "TypeBoundList()" ) ) } private Element getImmediateChildOfExprStmt(ExprStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nExpr | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nExpr | + n = 0 and nExpr = n + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getExpr() and partialPredicateCall = "Expr()" ) ) } private Element getImmediateChildOfFieldExpr(FieldExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nContainer, int nIdentifier | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nContainer, int nIdentifier | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nContainer = nAttr + 1 and nIdentifier = nContainer + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2002,18 +1258,14 @@ private module Impl { private Element getImmediateChildOfFnPtrTypeRepr( FnPtrTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nAbi, int nParamList, int nRetType | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nAbi, int nParamList, int nRetType | + n = 0 and nAbi = n + 1 and nParamList = nAbi + 1 and nRetType = nParamList + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getAbi() and partialPredicateCall = "Abi()" or index = nAbi and result = e.getParamList() and partialPredicateCall = "ParamList()" @@ -2026,17 +1278,13 @@ private module Impl { private Element getImmediateChildOfForTypeRepr( ForTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nGenericParamList, int nTypeRepr | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nGenericParamList, int nTypeRepr | + n = 0 and nGenericParamList = n + 1 and nTypeRepr = nGenericParamList + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getGenericParamList() and partialPredicateCall = "GenericParamList()" @@ -2051,10 +1299,8 @@ private module Impl { private Element getImmediateChildOfFormatArgsExpr( FormatArgsExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nArg, int nAttr, int nTemplate, int nFormat | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nArg, int nAttr, int nTemplate, int nFormat | + n = 0 and nArg = n + 1 + max(int i | i = -1 or exists(e.getArg(i)) | i) and nAttr = nArg + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nTemplate = nAttr + 1 and @@ -2062,8 +1308,6 @@ private module Impl { ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getArg(index - n) and partialPredicateCall = "Arg(" + (index - n).toString() + ")" or @@ -2079,18 +1323,14 @@ private module Impl { } private Element getImmediateChildOfIdentPat(IdentPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nAttr, int nName, int nPat | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nAttr, int nName, int nPat | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nName = nAttr + 1 and nPat = nName + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2102,10 +1342,8 @@ private module Impl { } private Element getImmediateChildOfIfExpr(IfExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nCondition, int nElse, int nThen | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nCondition, int nElse, int nThen | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nCondition = nAttr + 1 and nElse = nCondition + 1 and @@ -2113,8 +1351,6 @@ private module Impl { ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2130,34 +1366,26 @@ private module Impl { private Element getImmediateChildOfImplTraitTypeRepr( ImplTraitTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nTypeBoundList | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nTypeBoundList | + n = 0 and nTypeBoundList = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeBoundList() and partialPredicateCall = "TypeBoundList()" ) ) } private Element getImmediateChildOfIndexExpr(IndexExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nBase, int nIndex | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nBase, int nIndex | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nBase = nAttr + 1 and nIndex = nBase + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2171,71 +1399,18 @@ private module Impl { private Element getImmediateChildOfInferTypeRepr( InferTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and - ( - none() - or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfItem(Item e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int bAddressable, int n, int nAttributeMacroExpansion | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - bAddressable = - bStmt + 1 + max(int i | i = -1 or exists(getImmediateChildOfAddressable(e, i, _)) | i) and - n = bAddressable and - nAttributeMacroExpansion = n + 1 and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfAddressable(e, index - bStmt, partialPredicateCall) - or - index = n and - result = e.getAttributeMacroExpansion() and - partialPredicateCall = "AttributeMacroExpansion()" - ) - ) - } - - private Element getImmediateChildOfLabelableExpr( - LabelableExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n, int nLabel | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nLabel = n + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getLabel() and partialPredicateCall = "Label()" - ) - ) + none() } private Element getImmediateChildOfLetExpr(LetExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nScrutinee, int nPat | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nScrutinee, int nPat | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nScrutinee = nAttr + 1 and nPat = nScrutinee + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2247,12 +1422,8 @@ private module Impl { } private Element getImmediateChildOfLetStmt(LetStmt e, int index, string partialPredicateCall) { - exists( - int b, int bStmt, int n, int nAttr, int nInitializer, int nLetElse, int nPat, int nTypeRepr - | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nAttr, int nInitializer, int nLetElse, int nPat, int nTypeRepr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nInitializer = nAttr + 1 and nLetElse = nInitializer + 1 and @@ -2261,8 +1432,6 @@ private module Impl { ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2278,33 +1447,18 @@ private module Impl { } private Element getImmediateChildOfLifetime(Lifetime e, int index, string partialPredicateCall) { - exists(int b, int bUseBoundGenericArg, int n | - b = 0 and - bUseBoundGenericArg = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUseBoundGenericArg(e, i, _)) | i) and - n = bUseBoundGenericArg and - ( - none() - or - result = getImmediateChildOfUseBoundGenericArg(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfLifetimeArg( LifetimeArg e, int index, string partialPredicateCall ) { - exists(int b, int bGenericArg, int n, int nLifetime | - b = 0 and - bGenericArg = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericArg(e, i, _)) | i) and - n = bGenericArg and + exists(int n, int nLifetime | + n = 0 and nLifetime = n + 1 and ( none() or - result = getImmediateChildOfGenericArg(e, index - b, partialPredicateCall) - or index = n and result = e.getLifetime() and partialPredicateCall = "Lifetime()" ) ) @@ -2313,19 +1467,14 @@ private module Impl { private Element getImmediateChildOfLifetimeParam( LifetimeParam e, int index, string partialPredicateCall ) { - exists(int b, int bGenericParam, int n, int nAttr, int nLifetime, int nTypeBoundList | - b = 0 and - bGenericParam = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericParam(e, i, _)) | i) and - n = bGenericParam and + exists(int n, int nAttr, int nLifetime, int nTypeBoundList | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nLifetime = nAttr + 1 and nTypeBoundList = nLifetime + 1 and ( none() or - result = getImmediateChildOfGenericParam(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2341,16 +1490,12 @@ private module Impl { private Element getImmediateChildOfLiteralExpr( LiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nAttr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" ) @@ -2358,16 +1503,12 @@ private module Impl { } private Element getImmediateChildOfLiteralPat(LiteralPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nLiteral | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nLiteral | + n = 0 and nLiteral = n + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getLiteral() and partialPredicateCall = "Literal()" ) ) @@ -2376,17 +1517,13 @@ private module Impl { private Element getImmediateChildOfMacroBlockExpr( MacroBlockExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nTailExpr, int nStatement | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nTailExpr, int nStatement | + n = 0 and nTailExpr = n + 1 and nStatement = nTailExpr + 1 + max(int i | i = -1 or exists(e.getStatement(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getTailExpr() and partialPredicateCall = "TailExpr()" or result = e.getStatement(index - nTailExpr) and @@ -2396,32 +1533,24 @@ private module Impl { } private Element getImmediateChildOfMacroExpr(MacroExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nMacroCall | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nMacroCall | + n = 0 and nMacroCall = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getMacroCall() and partialPredicateCall = "MacroCall()" ) ) } private Element getImmediateChildOfMacroPat(MacroPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nMacroCall | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nMacroCall | + n = 0 and nMacroCall = n + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getMacroCall() and partialPredicateCall = "MacroCall()" ) ) @@ -2430,34 +1559,26 @@ private module Impl { private Element getImmediateChildOfMacroTypeRepr( MacroTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nMacroCall | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nMacroCall | + n = 0 and nMacroCall = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getMacroCall() and partialPredicateCall = "MacroCall()" ) ) } private Element getImmediateChildOfMatchExpr(MatchExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nScrutinee, int nMatchArmList | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nScrutinee, int nMatchArmList | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nScrutinee = nAttr + 1 and nMatchArmList = nScrutinee + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2471,49 +1592,26 @@ private module Impl { } private Element getImmediateChildOfNameRef(NameRef e, int index, string partialPredicateCall) { - exists(int b, int bUseBoundGenericArg, int n | - b = 0 and - bUseBoundGenericArg = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUseBoundGenericArg(e, i, _)) | i) and - n = bUseBoundGenericArg and - ( - none() - or - result = getImmediateChildOfUseBoundGenericArg(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfNeverTypeRepr( NeverTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and - ( - none() - or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOffsetOfExpr( OffsetOfExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nAttr, int nField, int nTypeRepr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nField, int nTypeRepr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nField = nAttr + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and nTypeRepr = nField + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2526,16 +1624,12 @@ private module Impl { } private Element getImmediateChildOfOrPat(OrPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nPat | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nPat | + n = 0 and nPat = n + 1 + max(int i | i = -1 or exists(e.getPat(i)) | i) and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or result = e.getPat(index - n) and partialPredicateCall = "Pat(" + (index - n).toString() + ")" ) @@ -2543,33 +1637,32 @@ private module Impl { } private Element getImmediateChildOfParam(Param e, int index, string partialPredicateCall) { - exists(int b, int bParamBase, int n, int nPat | - b = 0 and - bParamBase = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfParamBase(e, i, _)) | i) and - n = bParamBase and - nPat = n + 1 and + exists(int n, int nAttr, int nTypeRepr, int nPat | + n = 0 and + nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nTypeRepr = nAttr + 1 and + nPat = nTypeRepr + 1 and ( none() or - result = getImmediateChildOfParamBase(e, index - b, partialPredicateCall) + result = e.getAttr(index - n) and + partialPredicateCall = "Attr(" + (index - n).toString() + ")" or - index = n and result = e.getPat() and partialPredicateCall = "Pat()" + index = nAttr and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" + or + index = nTypeRepr and result = e.getPat() and partialPredicateCall = "Pat()" ) ) } private Element getImmediateChildOfParenExpr(ParenExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2579,16 +1672,12 @@ private module Impl { } private Element getImmediateChildOfParenPat(ParenPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nPat | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nPat | + n = 0 and nPat = n + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getPat() and partialPredicateCall = "Pat()" ) ) @@ -2597,85 +1686,39 @@ private module Impl { private Element getImmediateChildOfParenTypeRepr( ParenTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nTypeRepr | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) } - private Element getImmediateChildOfPathAstNode( - PathAstNode e, int index, string partialPredicateCall - ) { - exists(int b, int bResolvable, int n, int nPath | - b = 0 and - bResolvable = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfResolvable(e, i, _)) | i) and - n = bResolvable and - nPath = n + 1 and - ( - none() - or - result = getImmediateChildOfResolvable(e, index - b, partialPredicateCall) - or - index = n and result = e.getPath() and partialPredicateCall = "Path()" - ) - ) - } - - private Element getImmediateChildOfPathExprBase( - PathExprBase e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfPathTypeRepr( PathTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nPath | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nPath | + n = 0 and nPath = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getPath() and partialPredicateCall = "Path()" ) ) } private Element getImmediateChildOfPrefixExpr(PrefixExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2687,34 +1730,26 @@ private module Impl { private Element getImmediateChildOfPtrTypeRepr( PtrTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nTypeRepr | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) } private Element getImmediateChildOfRangeExpr(RangeExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nEnd, int nStart | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nEnd, int nStart | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nEnd = nAttr + 1 and nStart = nEnd + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2726,17 +1761,13 @@ private module Impl { } private Element getImmediateChildOfRangePat(RangePat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nEnd, int nStart | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nEnd, int nStart | + n = 0 and nEnd = n + 1 and nStart = nEnd + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getEnd() and partialPredicateCall = "End()" or index = nEnd and result = e.getStart() and partialPredicateCall = "Start()" @@ -2745,17 +1776,13 @@ private module Impl { } private Element getImmediateChildOfRefExpr(RefExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2765,16 +1792,12 @@ private module Impl { } private Element getImmediateChildOfRefPat(RefPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nPat | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nPat | + n = 0 and nPat = n + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getPat() and partialPredicateCall = "Pat()" ) ) @@ -2783,17 +1806,13 @@ private module Impl { private Element getImmediateChildOfRefTypeRepr( RefTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nLifetime, int nTypeRepr | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nLifetime, int nTypeRepr | + n = 0 and nLifetime = n + 1 and nTypeRepr = nLifetime + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getLifetime() and partialPredicateCall = "Lifetime()" or index = nLifetime and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" @@ -2802,16 +1821,12 @@ private module Impl { } private Element getImmediateChildOfRestPat(RestPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nAttr | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nAttr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" ) @@ -2819,17 +1834,13 @@ private module Impl { } private Element getImmediateChildOfReturnExpr(ReturnExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2839,18 +1850,21 @@ private module Impl { } private Element getImmediateChildOfSelfParam(SelfParam e, int index, string partialPredicateCall) { - exists(int b, int bParamBase, int n, int nLifetime, int nName | - b = 0 and - bParamBase = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfParamBase(e, i, _)) | i) and - n = bParamBase and - nLifetime = n + 1 and + exists(int n, int nAttr, int nTypeRepr, int nLifetime, int nName | + n = 0 and + nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nTypeRepr = nAttr + 1 and + nLifetime = nTypeRepr + 1 and nName = nLifetime + 1 and ( none() or - result = getImmediateChildOfParamBase(e, index - b, partialPredicateCall) + result = e.getAttr(index - n) and + partialPredicateCall = "Attr(" + (index - n).toString() + ")" or - index = n and result = e.getLifetime() and partialPredicateCall = "Lifetime()" + index = nAttr and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" + or + index = nTypeRepr and result = e.getLifetime() and partialPredicateCall = "Lifetime()" or index = nLifetime and result = e.getName() and partialPredicateCall = "Name()" ) @@ -2858,16 +1872,12 @@ private module Impl { } private Element getImmediateChildOfSlicePat(SlicePat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nPat | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nPat | + n = 0 and nPat = n + 1 + max(int i | i = -1 or exists(e.getPat(i)) | i) and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or result = e.getPat(index - n) and partialPredicateCall = "Pat(" + (index - n).toString() + ")" ) @@ -2877,16 +1887,12 @@ private module Impl { private Element getImmediateChildOfSliceTypeRepr( SliceTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nTypeRepr | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) @@ -2895,16 +1901,12 @@ private module Impl { private Element getImmediateChildOfStructFieldList( StructFieldList e, int index, string partialPredicateCall ) { - exists(int b, int bFieldList, int n, int nField | - b = 0 and - bFieldList = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFieldList(e, i, _)) | i) and - n = bFieldList and + exists(int n, int nField | + n = 0 and nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and ( none() or - result = getImmediateChildOfFieldList(e, index - b, partialPredicateCall) - or result = e.getField(index - n) and partialPredicateCall = "Field(" + (index - n).toString() + ")" ) @@ -2912,17 +1914,13 @@ private module Impl { } private Element getImmediateChildOfTryExpr(TryExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2932,17 +1930,13 @@ private module Impl { } private Element getImmediateChildOfTupleExpr(TupleExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nField | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nField | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nField = nAttr + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2955,16 +1949,12 @@ private module Impl { private Element getImmediateChildOfTupleFieldList( TupleFieldList e, int index, string partialPredicateCall ) { - exists(int b, int bFieldList, int n, int nField | - b = 0 and - bFieldList = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFieldList(e, i, _)) | i) and - n = bFieldList and + exists(int n, int nField | + n = 0 and nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and ( none() or - result = getImmediateChildOfFieldList(e, index - b, partialPredicateCall) - or result = e.getField(index - n) and partialPredicateCall = "Field(" + (index - n).toString() + ")" ) @@ -2972,16 +1962,12 @@ private module Impl { } private Element getImmediateChildOfTuplePat(TuplePat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nField | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nField | + n = 0 and nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or result = e.getField(index - n) and partialPredicateCall = "Field(" + (index - n).toString() + ")" ) @@ -2991,16 +1977,12 @@ private module Impl { private Element getImmediateChildOfTupleTypeRepr( TupleTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nField | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nField | + n = 0 and nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or result = e.getField(index - n) and partialPredicateCall = "Field(" + (index - n).toString() + ")" ) @@ -3008,30 +1990,20 @@ private module Impl { } private Element getImmediateChildOfTypeArg(TypeArg e, int index, string partialPredicateCall) { - exists(int b, int bGenericArg, int n, int nTypeRepr | - b = 0 and - bGenericArg = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericArg(e, i, _)) | i) and - n = bGenericArg and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfGenericArg(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) } private Element getImmediateChildOfTypeParam(TypeParam e, int index, string partialPredicateCall) { - exists( - int b, int bGenericParam, int n, int nAttr, int nDefaultType, int nName, int nTypeBoundList - | - b = 0 and - bGenericParam = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericParam(e, i, _)) | i) and - n = bGenericParam and + exists(int n, int nAttr, int nDefaultType, int nName, int nTypeBoundList | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nDefaultType = nAttr + 1 and nName = nDefaultType + 1 and @@ -3039,8 +2011,6 @@ private module Impl { ( none() or - result = getImmediateChildOfGenericParam(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -3056,16 +2026,12 @@ private module Impl { private Element getImmediateChildOfUnderscoreExpr( UnderscoreExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nAttr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" ) @@ -3073,16 +2039,8 @@ private module Impl { } private Element getImmediateChildOfVariant(Variant e, int index, string partialPredicateCall) { - exists( - int b, int bVariantDef, int bAddressable, int n, int nAttr, int nDiscriminant, int nFieldList, - int nName, int nVisibility - | - b = 0 and - bVariantDef = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfVariantDef(e, i, _)) | i) and - bAddressable = - bVariantDef + 1 + max(int i | i = -1 or exists(getImmediateChildOfAddressable(e, i, _)) | i) and - n = bAddressable and + exists(int n, int nAttr, int nDiscriminant, int nFieldList, int nName, int nVisibility | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nDiscriminant = nAttr + 1 and nFieldList = nDiscriminant + 1 and @@ -3091,10 +2049,6 @@ private module Impl { ( none() or - result = getImmediateChildOfVariantDef(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfAddressable(e, index - bVariantDef, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -3112,30 +2066,17 @@ private module Impl { private Element getImmediateChildOfWildcardPat( WildcardPat e, int index, string partialPredicateCall ) { - exists(int b, int bPat, int n | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and - ( - none() - or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfYeetExpr(YeetExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -3145,17 +2086,13 @@ private module Impl { } private Element getImmediateChildOfYieldExpr(YieldExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -3167,33 +2104,41 @@ private module Impl { private Element getImmediateChildOfArrayListExpr( ArrayListExpr e, int index, string partialPredicateCall ) { - exists(int b, int bArrayExpr, int n | - b = 0 and - bArrayExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArrayExpr(e, i, _)) | i) and - n = bArrayExpr and + exists(int n, int nExpr, int nAttr | + n = 0 and + nExpr = n + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and + nAttr = nExpr + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfArrayExpr(e, index - b, partialPredicateCall) - ) - ) - } - + result = e.getExpr(index - n) and + partialPredicateCall = "Expr(" + (index - n).toString() + ")" + or + result = e.getAttr(index - nExpr) and + partialPredicateCall = "Attr(" + (index - nExpr).toString() + ")" + ) + ) + } + private Element getImmediateChildOfArrayRepeatExpr( ArrayRepeatExpr e, int index, string partialPredicateCall ) { - exists(int b, int bArrayExpr, int n, int nRepeatOperand, int nRepeatLength | - b = 0 and - bArrayExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArrayExpr(e, i, _)) | i) and - n = bArrayExpr and - nRepeatOperand = n + 1 and + exists(int n, int nExpr, int nAttr, int nRepeatOperand, int nRepeatLength | + n = 0 and + nExpr = n + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and + nAttr = nExpr + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nRepeatOperand = nAttr + 1 and nRepeatLength = nRepeatOperand + 1 and ( none() or - result = getImmediateChildOfArrayExpr(e, index - b, partialPredicateCall) + result = e.getExpr(index - n) and + partialPredicateCall = "Expr(" + (index - n).toString() + ")" or - index = n and result = e.getRepeatOperand() and partialPredicateCall = "RepeatOperand()" + result = e.getAttr(index - nExpr) and + partialPredicateCall = "Attr(" + (index - nExpr).toString() + ")" + or + index = nAttr and result = e.getRepeatOperand() and partialPredicateCall = "RepeatOperand()" or index = nRepeatOperand and result = e.getRepeatLength() and @@ -3203,20 +2148,18 @@ private module Impl { } private Element getImmediateChildOfBlockExpr(BlockExpr e, int index, string partialPredicateCall) { - exists(int b, int bLabelableExpr, int n, int nAttr, int nStmtList | - b = 0 and - bLabelableExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabelableExpr(e, i, _)) | i) and - n = bLabelableExpr and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists(int n, int nLabel, int nAttr, int nStmtList | + n = 0 and + nLabel = n + 1 and + nAttr = nLabel + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nStmtList = nAttr + 1 and ( none() or - result = getImmediateChildOfLabelableExpr(e, index - b, partialPredicateCall) + index = n and result = e.getLabel() and partialPredicateCall = "Label()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nLabel) and + partialPredicateCall = "Attr(" + (index - nLabel).toString() + ")" or index = nAttr and result = e.getStmtList() and partialPredicateCall = "StmtList()" ) @@ -3224,94 +2167,20 @@ private module Impl { } private Element getImmediateChildOfCallExpr(CallExpr e, int index, string partialPredicateCall) { - exists(int b, int bCallExprBase, int n, int nFunction | - b = 0 and - bCallExprBase = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCallExprBase(e, i, _)) | i) and - n = bCallExprBase and - nFunction = n + 1 and - ( - none() - or - result = getImmediateChildOfCallExprBase(e, index - b, partialPredicateCall) - or - index = n and result = e.getFunction() and partialPredicateCall = "Function()" - ) - ) - } - - private Element getImmediateChildOfConst(Const e, int index, string partialPredicateCall) { - exists( - int b, int bAssocItem, int bItem, int n, int nAttr, int nBody, int nName, int nTypeRepr, - int nVisibility - | - b = 0 and - bAssocItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAssocItem(e, i, _)) | i) and - bItem = bAssocItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nBody = nAttr + 1 and - nName = nBody + 1 and - nTypeRepr = nName + 1 and - nVisibility = nTypeRepr + 1 and - ( - none() - or - result = getImmediateChildOfAssocItem(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfItem(e, index - bAssocItem, partialPredicateCall) - or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" - or - index = nAttr and result = e.getBody() and partialPredicateCall = "Body()" - or - index = nBody and result = e.getName() and partialPredicateCall = "Name()" - or - index = nName and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" - or - index = nTypeRepr and result = e.getVisibility() and partialPredicateCall = "Visibility()" - ) - ) - } - - private Element getImmediateChildOfEnum(Enum e, int index, string partialPredicateCall) { - exists( - int b, int bItem, int n, int nAttr, int nGenericParamList, int nName, int nVariantList, - int nVisibility, int nWhereClause - | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nGenericParamList = nAttr + 1 and - nName = nGenericParamList + 1 and - nVariantList = nName + 1 and - nVisibility = nVariantList + 1 and - nWhereClause = nVisibility + 1 and + exists(int n, int nArgList, int nAttr, int nFunction | + n = 0 and + nArgList = n + 1 and + nAttr = nArgList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nFunction = nAttr + 1 and ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) - or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" - or - index = nAttr and - result = e.getGenericParamList() and - partialPredicateCall = "GenericParamList()" - or - index = nGenericParamList and result = e.getName() and partialPredicateCall = "Name()" - or - index = nName and result = e.getVariantList() and partialPredicateCall = "VariantList()" + index = n and result = e.getArgList() and partialPredicateCall = "ArgList()" or - index = nVariantList and - result = e.getVisibility() and - partialPredicateCall = "Visibility()" + result = e.getAttr(index - nArgList) and + partialPredicateCall = "Attr(" + (index - nArgList).toString() + ")" or - index = nVisibility and - result = e.getWhereClause() and - partialPredicateCall = "WhereClause()" + index = nAttr and result = e.getFunction() and partialPredicateCall = "Function()" ) ) } @@ -3319,19 +2188,20 @@ private module Impl { private Element getImmediateChildOfExternBlock( ExternBlock e, int index, string partialPredicateCall ) { - exists(int b, int bItem, int n, int nAbi, int nAttr, int nExternItemList | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAbi = n + 1 and + exists(int n, int nAttributeMacroExpansion, int nAbi, int nAttr, int nExternItemList | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAbi = nAttributeMacroExpansion + 1 and nAttr = nAbi + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExternItemList = nAttr + 1 and ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - index = n and result = e.getAbi() and partialPredicateCall = "Abi()" + index = nAttributeMacroExpansion and result = e.getAbi() and partialPredicateCall = "Abi()" or result = e.getAttr(index - nAbi) and partialPredicateCall = "Attr(" + (index - nAbi).toString() + ")" @@ -3346,21 +2216,24 @@ private module Impl { private Element getImmediateChildOfExternCrate( ExternCrate e, int index, string partialPredicateCall ) { - exists(int b, int bItem, int n, int nAttr, int nIdentifier, int nRename, int nVisibility | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nIdentifier, int nRename, int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nIdentifier = nAttr + 1 and nRename = nIdentifier + 1 and nVisibility = nRename + 1 and ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or index = nAttr and result = e.getIdentifier() and partialPredicateCall = "Identifier()" or @@ -3374,80 +2247,17 @@ private module Impl { private Element getImmediateChildOfFormatTemplateVariableAccess( FormatTemplateVariableAccess e, int index, string partialPredicateCall ) { - exists(int b, int bPathExprBase, int n | - b = 0 and - bPathExprBase = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPathExprBase(e, i, _)) | i) and - n = bPathExprBase and - ( - none() - or - result = getImmediateChildOfPathExprBase(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfFunction(Function e, int index, string partialPredicateCall) { - exists( - int b, int bAssocItem, int bExternItem, int bItem, int bCallable, int n, int nAbi, int nBody, - int nGenericParamList, int nName, int nRetType, int nVisibility, int nWhereClause - | - b = 0 and - bAssocItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAssocItem(e, i, _)) | i) and - bExternItem = - bAssocItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfExternItem(e, i, _)) | i) and - bItem = bExternItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - bCallable = - bItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfCallable(e, i, _)) | i) and - n = bCallable and - nAbi = n + 1 and - nBody = nAbi + 1 and - nGenericParamList = nBody + 1 and - nName = nGenericParamList + 1 and - nRetType = nName + 1 and - nVisibility = nRetType + 1 and - nWhereClause = nVisibility + 1 and - ( - none() - or - result = getImmediateChildOfAssocItem(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfExternItem(e, index - bAssocItem, partialPredicateCall) - or - result = getImmediateChildOfItem(e, index - bExternItem, partialPredicateCall) - or - result = getImmediateChildOfCallable(e, index - bItem, partialPredicateCall) - or - index = n and result = e.getAbi() and partialPredicateCall = "Abi()" - or - index = nAbi and result = e.getBody() and partialPredicateCall = "Body()" - or - index = nBody and - result = e.getGenericParamList() and - partialPredicateCall = "GenericParamList()" - or - index = nGenericParamList and result = e.getName() and partialPredicateCall = "Name()" - or - index = nName and result = e.getRetType() and partialPredicateCall = "RetType()" - or - index = nRetType and result = e.getVisibility() and partialPredicateCall = "Visibility()" - or - index = nVisibility and - result = e.getWhereClause() and - partialPredicateCall = "WhereClause()" - ) - ) + none() } private Element getImmediateChildOfImpl(Impl e, int index, string partialPredicateCall) { exists( - int b, int bItem, int n, int nAssocItemList, int nAttr, int nGenericParamList, int nSelfTy, - int nTrait, int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nAssocItemList, int nAttr, int nGenericParamList, + int nSelfTy, int nTrait, int nVisibility, int nWhereClause | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAssocItemList = n + 1 and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAssocItemList = nAttributeMacroExpansion + 1 and nAttr = nAssocItemList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nGenericParamList = nAttr + 1 and nSelfTy = nGenericParamList + 1 and @@ -3457,9 +2267,13 @@ private module Impl { ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - index = n and result = e.getAssocItemList() and partialPredicateCall = "AssocItemList()" + index = nAttributeMacroExpansion and + result = e.getAssocItemList() and + partialPredicateCall = "AssocItemList()" or result = e.getAttr(index - nAssocItemList) and partialPredicateCall = "Attr(" + (index - nAssocItemList).toString() + ")" @@ -3481,69 +2295,14 @@ private module Impl { ) } - private Element getImmediateChildOfLoopingExpr( - LoopingExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bLabelableExpr, int n, int nLoopBody | - b = 0 and - bLabelableExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabelableExpr(e, i, _)) | i) and - n = bLabelableExpr and - nLoopBody = n + 1 and - ( - none() - or - result = getImmediateChildOfLabelableExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getLoopBody() and partialPredicateCall = "LoopBody()" - ) - ) - } - - private Element getImmediateChildOfMacroCall(MacroCall e, int index, string partialPredicateCall) { + private Element getImmediateChildOfMacroDef(MacroDef e, int index, string partialPredicateCall) { exists( - int b, int bAssocItem, int bExternItem, int bItem, int n, int nAttr, int nPath, - int nTokenTree, int nMacroCallExpansion + int n, int nAttributeMacroExpansion, int nArgs, int nAttr, int nBody, int nName, + int nVisibility | - b = 0 and - bAssocItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAssocItem(e, i, _)) | i) and - bExternItem = - bAssocItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfExternItem(e, i, _)) | i) and - bItem = bExternItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nPath = nAttr + 1 and - nTokenTree = nPath + 1 and - nMacroCallExpansion = nTokenTree + 1 and - ( - none() - or - result = getImmediateChildOfAssocItem(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfExternItem(e, index - bAssocItem, partialPredicateCall) - or - result = getImmediateChildOfItem(e, index - bExternItem, partialPredicateCall) - or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" - or - index = nAttr and result = e.getPath() and partialPredicateCall = "Path()" - or - index = nPath and result = e.getTokenTree() and partialPredicateCall = "TokenTree()" - or - index = nTokenTree and - result = e.getMacroCallExpansion() and - partialPredicateCall = "MacroCallExpansion()" - ) - ) - } - - private Element getImmediateChildOfMacroDef(MacroDef e, int index, string partialPredicateCall) { - exists(int b, int bItem, int n, int nArgs, int nAttr, int nBody, int nName, int nVisibility | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nArgs = n + 1 and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nArgs = nAttributeMacroExpansion + 1 and nAttr = nArgs + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nBody = nAttr + 1 and nName = nBody + 1 and @@ -3551,9 +2310,13 @@ private module Impl { ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - index = n and result = e.getArgs() and partialPredicateCall = "Args()" + index = nAttributeMacroExpansion and + result = e.getArgs() and + partialPredicateCall = "Args()" or result = e.getAttr(index - nArgs) and partialPredicateCall = "Attr(" + (index - nArgs).toString() + ")" @@ -3568,21 +2331,24 @@ private module Impl { } private Element getImmediateChildOfMacroRules(MacroRules e, int index, string partialPredicateCall) { - exists(int b, int bItem, int n, int nAttr, int nName, int nTokenTree, int nVisibility | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nName, int nTokenTree, int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nName = nAttr + 1 and nTokenTree = nName + 1 and nVisibility = nTokenTree + 1 and ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or index = nAttr and result = e.getName() and partialPredicateCall = "Name()" or @@ -3596,28 +2362,24 @@ private module Impl { private Element getImmediateChildOfMethodCallExpr( MethodCallExpr e, int index, string partialPredicateCall ) { - exists( - int b, int bCallExprBase, int bResolvable, int n, int nGenericArgList, int nIdentifier, - int nReceiver - | - b = 0 and - bCallExprBase = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCallExprBase(e, i, _)) | i) and - bResolvable = - bCallExprBase + 1 + - max(int i | i = -1 or exists(getImmediateChildOfResolvable(e, i, _)) | i) and - n = bResolvable and - nGenericArgList = n + 1 and + exists(int n, int nArgList, int nAttr, int nGenericArgList, int nIdentifier, int nReceiver | + n = 0 and + nArgList = n + 1 and + nAttr = nArgList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nGenericArgList = nAttr + 1 and nIdentifier = nGenericArgList + 1 and nReceiver = nIdentifier + 1 and ( none() or - result = getImmediateChildOfCallExprBase(e, index - b, partialPredicateCall) + index = n and result = e.getArgList() and partialPredicateCall = "ArgList()" or - result = getImmediateChildOfResolvable(e, index - bCallExprBase, partialPredicateCall) + result = e.getAttr(index - nArgList) and + partialPredicateCall = "Attr(" + (index - nArgList).toString() + ")" or - index = n and result = e.getGenericArgList() and partialPredicateCall = "GenericArgList()" + index = nAttr and + result = e.getGenericArgList() and + partialPredicateCall = "GenericArgList()" or index = nGenericArgList and result = e.getIdentifier() and @@ -3629,21 +2391,24 @@ private module Impl { } private Element getImmediateChildOfModule(Module e, int index, string partialPredicateCall) { - exists(int b, int bItem, int n, int nAttr, int nItemList, int nName, int nVisibility | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nItemList, int nName, int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nItemList = nAttr + 1 and nName = nItemList + 1 and nVisibility = nName + 1 and ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or index = nAttr and result = e.getItemList() and partialPredicateCall = "ItemList()" or @@ -3655,116 +2420,358 @@ private module Impl { } private Element getImmediateChildOfPathExpr(PathExpr e, int index, string partialPredicateCall) { - exists(int b, int bPathExprBase, int bPathAstNode, int n, int nAttr | - b = 0 and - bPathExprBase = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPathExprBase(e, i, _)) | i) and - bPathAstNode = - bPathExprBase + 1 + - max(int i | i = -1 or exists(getImmediateChildOfPathAstNode(e, i, _)) | i) and - n = bPathAstNode and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists(int n, int nPath, int nAttr | + n = 0 and + nPath = n + 1 and + nAttr = nPath + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfPathExprBase(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfPathAstNode(e, index - bPathExprBase, partialPredicateCall) + index = n and result = e.getPath() and partialPredicateCall = "Path()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nPath) and + partialPredicateCall = "Attr(" + (index - nPath).toString() + ")" ) ) } private Element getImmediateChildOfPathPat(PathPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int bPathAstNode, int n | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - bPathAstNode = - bPat + 1 + max(int i | i = -1 or exists(getImmediateChildOfPathAstNode(e, i, _)) | i) and - n = bPathAstNode and + exists(int n, int nPath | + n = 0 and + nPath = n + 1 and + ( + none() + or + index = n and result = e.getPath() and partialPredicateCall = "Path()" + ) + ) + } + + private Element getImmediateChildOfStructExpr(StructExpr e, int index, string partialPredicateCall) { + exists(int n, int nPath, int nStructExprFieldList | + n = 0 and + nPath = n + 1 and + nStructExprFieldList = nPath + 1 and + ( + none() + or + index = n and result = e.getPath() and partialPredicateCall = "Path()" + or + index = nPath and + result = e.getStructExprFieldList() and + partialPredicateCall = "StructExprFieldList()" + ) + ) + } + + private Element getImmediateChildOfStructPat(StructPat e, int index, string partialPredicateCall) { + exists(int n, int nPath, int nStructPatFieldList | + n = 0 and + nPath = n + 1 and + nStructPatFieldList = nPath + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) + index = n and result = e.getPath() and partialPredicateCall = "Path()" or - result = getImmediateChildOfPathAstNode(e, index - bPat, partialPredicateCall) + index = nPath and + result = e.getStructPatFieldList() and + partialPredicateCall = "StructPatFieldList()" ) ) } - private Element getImmediateChildOfStatic(Static e, int index, string partialPredicateCall) { + private Element getImmediateChildOfTrait(Trait e, int index, string partialPredicateCall) { exists( - int b, int bExternItem, int bItem, int n, int nAttr, int nBody, int nName, int nTypeRepr, - int nVisibility + int n, int nAttributeMacroExpansion, int nAssocItemList, int nAttr, int nGenericParamList, + int nName, int nTypeBoundList, int nVisibility, int nWhereClause | - b = 0 and - bExternItem = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExternItem(e, i, _)) | i) and - bItem = bExternItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAssocItemList = nAttributeMacroExpansion + 1 and + nAttr = nAssocItemList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nGenericParamList = nAttr + 1 and + nName = nGenericParamList + 1 and + nTypeBoundList = nName + 1 and + nVisibility = nTypeBoundList + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" + or + index = nAttributeMacroExpansion and + result = e.getAssocItemList() and + partialPredicateCall = "AssocItemList()" + or + result = e.getAttr(index - nAssocItemList) and + partialPredicateCall = "Attr(" + (index - nAssocItemList).toString() + ")" + or + index = nAttr and + result = e.getGenericParamList() and + partialPredicateCall = "GenericParamList()" + or + index = nGenericParamList and result = e.getName() and partialPredicateCall = "Name()" + or + index = nName and result = e.getTypeBoundList() and partialPredicateCall = "TypeBoundList()" + or + index = nTypeBoundList and + result = e.getVisibility() and + partialPredicateCall = "Visibility()" + or + index = nVisibility and + result = e.getWhereClause() and + partialPredicateCall = "WhereClause()" + ) + ) + } + + private Element getImmediateChildOfTraitAlias(TraitAlias e, int index, string partialPredicateCall) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nGenericParamList, int nName, + int nTypeBoundList, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nGenericParamList = nAttr + 1 and + nName = nGenericParamList + 1 and + nTypeBoundList = nName + 1 and + nVisibility = nTypeBoundList + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" + or + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" + or + index = nAttr and + result = e.getGenericParamList() and + partialPredicateCall = "GenericParamList()" + or + index = nGenericParamList and result = e.getName() and partialPredicateCall = "Name()" + or + index = nName and result = e.getTypeBoundList() and partialPredicateCall = "TypeBoundList()" + or + index = nTypeBoundList and + result = e.getVisibility() and + partialPredicateCall = "Visibility()" + or + index = nVisibility and + result = e.getWhereClause() and + partialPredicateCall = "WhereClause()" + ) + ) + } + + private Element getImmediateChildOfTupleStructPat( + TupleStructPat e, int index, string partialPredicateCall + ) { + exists(int n, int nPath, int nField | + n = 0 and + nPath = n + 1 and + nField = nPath + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + ( + none() + or + index = n and result = e.getPath() and partialPredicateCall = "Path()" + or + result = e.getField(index - nPath) and + partialPredicateCall = "Field(" + (index - nPath).toString() + ")" + ) + ) + } + + private Element getImmediateChildOfUse(Use e, int index, string partialPredicateCall) { + exists(int n, int nAttributeMacroExpansion, int nAttr, int nUseTree, int nVisibility | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nUseTree = nAttr + 1 and + nVisibility = nUseTree + 1 and + ( + none() + or + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" + or + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" + or + index = nAttr and result = e.getUseTree() and partialPredicateCall = "UseTree()" + or + index = nUseTree and result = e.getVisibility() and partialPredicateCall = "Visibility()" + ) + ) + } + + private Element getImmediateChildOfConst(Const e, int index, string partialPredicateCall) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nBody, int nGenericParamList, int nName, + int nTypeRepr, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nBody = nAttr + 1 and - nName = nBody + 1 and + nGenericParamList = nBody + 1 and + nName = nGenericParamList + 1 and nTypeRepr = nName + 1 and nVisibility = nTypeRepr + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" + or + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" + or + index = nAttr and result = e.getBody() and partialPredicateCall = "Body()" + or + index = nBody and + result = e.getGenericParamList() and + partialPredicateCall = "GenericParamList()" + or + index = nGenericParamList and result = e.getName() and partialPredicateCall = "Name()" + or + index = nName and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" + or + index = nTypeRepr and result = e.getVisibility() and partialPredicateCall = "Visibility()" + or + index = nVisibility and + result = e.getWhereClause() and + partialPredicateCall = "WhereClause()" + ) + ) + } + + private Element getImmediateChildOfEnum(Enum e, int index, string partialPredicateCall) { + exists( + int n, int nAttributeMacroExpansion, int nDeriveMacroExpansion, int nAttr, + int nGenericParamList, int nName, int nVariantList, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nDeriveMacroExpansion = + nAttributeMacroExpansion + 1 + + max(int i | i = -1 or exists(e.getDeriveMacroExpansion(i)) | i) and + nAttr = nDeriveMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nGenericParamList = nAttr + 1 and + nName = nGenericParamList + 1 and + nVariantList = nName + 1 and + nVisibility = nVariantList + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" + or + result = e.getDeriveMacroExpansion(index - nAttributeMacroExpansion) and + partialPredicateCall = + "DeriveMacroExpansion(" + (index - nAttributeMacroExpansion).toString() + ")" + or + result = e.getAttr(index - nDeriveMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nDeriveMacroExpansion).toString() + ")" + or + index = nAttr and + result = e.getGenericParamList() and + partialPredicateCall = "GenericParamList()" + or + index = nGenericParamList and result = e.getName() and partialPredicateCall = "Name()" + or + index = nName and result = e.getVariantList() and partialPredicateCall = "VariantList()" + or + index = nVariantList and + result = e.getVisibility() and + partialPredicateCall = "Visibility()" + or + index = nVisibility and + result = e.getWhereClause() and + partialPredicateCall = "WhereClause()" + ) + ) + } + + private Element getImmediateChildOfForExpr(ForExpr e, int index, string partialPredicateCall) { + exists(int n, int nLabel, int nLoopBody, int nAttr, int nIterable, int nPat | + n = 0 and + nLabel = n + 1 and + nLoopBody = nLabel + 1 and + nAttr = nLoopBody + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nIterable = nAttr + 1 and + nPat = nIterable + 1 and ( none() or - result = getImmediateChildOfExternItem(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfItem(e, index - bExternItem, partialPredicateCall) - or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + index = n and result = e.getLabel() and partialPredicateCall = "Label()" or - index = nAttr and result = e.getBody() and partialPredicateCall = "Body()" + index = nLabel and result = e.getLoopBody() and partialPredicateCall = "LoopBody()" or - index = nBody and result = e.getName() and partialPredicateCall = "Name()" + result = e.getAttr(index - nLoopBody) and + partialPredicateCall = "Attr(" + (index - nLoopBody).toString() + ")" or - index = nName and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" + index = nAttr and result = e.getIterable() and partialPredicateCall = "Iterable()" or - index = nTypeRepr and result = e.getVisibility() and partialPredicateCall = "Visibility()" + index = nIterable and result = e.getPat() and partialPredicateCall = "Pat()" ) ) } - private Element getImmediateChildOfStruct(Struct e, int index, string partialPredicateCall) { + private Element getImmediateChildOfFunction(Function e, int index, string partialPredicateCall) { exists( - int b, int bItem, int bVariantDef, int n, int nAttr, int nFieldList, int nGenericParamList, - int nName, int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nParamList, int nAttr, int nAbi, int nBody, + int nGenericParamList, int nName, int nRetType, int nVisibility, int nWhereClause | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - bVariantDef = - bItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfVariantDef(e, i, _)) | i) and - n = bVariantDef and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nFieldList = nAttr + 1 and - nGenericParamList = nFieldList + 1 and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nParamList = nAttributeMacroExpansion + 1 and + nAttr = nParamList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAbi = nAttr + 1 and + nBody = nAbi + 1 and + nGenericParamList = nBody + 1 and nName = nGenericParamList + 1 and - nVisibility = nName + 1 and + nRetType = nName + 1 and + nVisibility = nRetType + 1 and nWhereClause = nVisibility + 1 and ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = getImmediateChildOfVariantDef(e, index - bItem, partialPredicateCall) + index = nAttributeMacroExpansion and + result = e.getParamList() and + partialPredicateCall = "ParamList()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nParamList) and + partialPredicateCall = "Attr(" + (index - nParamList).toString() + ")" or - index = nAttr and result = e.getFieldList() and partialPredicateCall = "FieldList()" + index = nAttr and result = e.getAbi() and partialPredicateCall = "Abi()" or - index = nFieldList and + index = nAbi and result = e.getBody() and partialPredicateCall = "Body()" + or + index = nBody and result = e.getGenericParamList() and partialPredicateCall = "GenericParamList()" or index = nGenericParamList and result = e.getName() and partialPredicateCall = "Name()" or - index = nName and result = e.getVisibility() and partialPredicateCall = "Visibility()" + index = nName and result = e.getRetType() and partialPredicateCall = "RetType()" + or + index = nRetType and result = e.getVisibility() and partialPredicateCall = "Visibility()" or index = nVisibility and result = e.getWhereClause() and @@ -3773,127 +2780,129 @@ private module Impl { ) } - private Element getImmediateChildOfStructExpr(StructExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int bPathAstNode, int n, int nStructExprFieldList | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bPathAstNode = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfPathAstNode(e, i, _)) | i) and - n = bPathAstNode and - nStructExprFieldList = n + 1 and + private Element getImmediateChildOfLoopExpr(LoopExpr e, int index, string partialPredicateCall) { + exists(int n, int nLabel, int nLoopBody, int nAttr | + n = 0 and + nLabel = n + 1 and + nLoopBody = nLabel + 1 and + nAttr = nLoopBody + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) + index = n and result = e.getLabel() and partialPredicateCall = "Label()" or - result = getImmediateChildOfPathAstNode(e, index - bExpr, partialPredicateCall) + index = nLabel and result = e.getLoopBody() and partialPredicateCall = "LoopBody()" or - index = n and - result = e.getStructExprFieldList() and - partialPredicateCall = "StructExprFieldList()" + result = e.getAttr(index - nLoopBody) and + partialPredicateCall = "Attr(" + (index - nLoopBody).toString() + ")" ) ) } - private Element getImmediateChildOfStructPat(StructPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int bPathAstNode, int n, int nStructPatFieldList | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - bPathAstNode = - bPat + 1 + max(int i | i = -1 or exists(getImmediateChildOfPathAstNode(e, i, _)) | i) and - n = bPathAstNode and - nStructPatFieldList = n + 1 and + private Element getImmediateChildOfMacroCall(MacroCall e, int index, string partialPredicateCall) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nPath, int nTokenTree, + int nMacroCallExpansion + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nPath = nAttr + 1 and + nTokenTree = nPath + 1 and + nMacroCallExpansion = nTokenTree + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = getImmediateChildOfPathAstNode(e, index - bPat, partialPredicateCall) + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or - index = n and - result = e.getStructPatFieldList() and - partialPredicateCall = "StructPatFieldList()" + index = nAttr and result = e.getPath() and partialPredicateCall = "Path()" + or + index = nPath and result = e.getTokenTree() and partialPredicateCall = "TokenTree()" + or + index = nTokenTree and + result = e.getMacroCallExpansion() and + partialPredicateCall = "MacroCallExpansion()" ) ) } - private Element getImmediateChildOfTrait(Trait e, int index, string partialPredicateCall) { + private Element getImmediateChildOfStatic(Static e, int index, string partialPredicateCall) { exists( - int b, int bItem, int n, int nAssocItemList, int nAttr, int nGenericParamList, int nName, - int nTypeBoundList, int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nAttr, int nBody, int nName, int nTypeRepr, + int nVisibility | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAssocItemList = n + 1 and - nAttr = nAssocItemList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nGenericParamList = nAttr + 1 and - nName = nGenericParamList + 1 and - nTypeBoundList = nName + 1 and - nVisibility = nTypeBoundList + 1 and - nWhereClause = nVisibility + 1 and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nBody = nAttr + 1 and + nName = nBody + 1 and + nTypeRepr = nName + 1 and + nVisibility = nTypeRepr + 1 and ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) - or - index = n and result = e.getAssocItemList() and partialPredicateCall = "AssocItemList()" - or - result = e.getAttr(index - nAssocItemList) and - partialPredicateCall = "Attr(" + (index - nAssocItemList).toString() + ")" + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - index = nAttr and - result = e.getGenericParamList() and - partialPredicateCall = "GenericParamList()" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or - index = nGenericParamList and result = e.getName() and partialPredicateCall = "Name()" + index = nAttr and result = e.getBody() and partialPredicateCall = "Body()" or - index = nName and result = e.getTypeBoundList() and partialPredicateCall = "TypeBoundList()" + index = nBody and result = e.getName() and partialPredicateCall = "Name()" or - index = nTypeBoundList and - result = e.getVisibility() and - partialPredicateCall = "Visibility()" + index = nName and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" or - index = nVisibility and - result = e.getWhereClause() and - partialPredicateCall = "WhereClause()" + index = nTypeRepr and result = e.getVisibility() and partialPredicateCall = "Visibility()" ) ) } - private Element getImmediateChildOfTraitAlias(TraitAlias e, int index, string partialPredicateCall) { + private Element getImmediateChildOfStruct(Struct e, int index, string partialPredicateCall) { exists( - int b, int bItem, int n, int nAttr, int nGenericParamList, int nName, int nTypeBoundList, - int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nDeriveMacroExpansion, int nAttr, int nFieldList, + int nGenericParamList, int nName, int nVisibility, int nWhereClause | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nGenericParamList = nAttr + 1 and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nDeriveMacroExpansion = + nAttributeMacroExpansion + 1 + + max(int i | i = -1 or exists(e.getDeriveMacroExpansion(i)) | i) and + nAttr = nDeriveMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nFieldList = nAttr + 1 and + nGenericParamList = nFieldList + 1 and nName = nGenericParamList + 1 and - nTypeBoundList = nName + 1 and - nVisibility = nTypeBoundList + 1 and + nVisibility = nName + 1 and nWhereClause = nVisibility + 1 and ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" + or + result = e.getDeriveMacroExpansion(index - nAttributeMacroExpansion) and + partialPredicateCall = + "DeriveMacroExpansion(" + (index - nAttributeMacroExpansion).toString() + ")" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nDeriveMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nDeriveMacroExpansion).toString() + ")" or - index = nAttr and + index = nAttr and result = e.getFieldList() and partialPredicateCall = "FieldList()" + or + index = nFieldList and result = e.getGenericParamList() and partialPredicateCall = "GenericParamList()" or index = nGenericParamList and result = e.getName() and partialPredicateCall = "Name()" or - index = nName and result = e.getTypeBoundList() and partialPredicateCall = "TypeBoundList()" - or - index = nTypeBoundList and - result = e.getVisibility() and - partialPredicateCall = "Visibility()" + index = nName and result = e.getVisibility() and partialPredicateCall = "Visibility()" or index = nVisibility and result = e.getWhereClause() and @@ -3902,41 +2911,14 @@ private module Impl { ) } - private Element getImmediateChildOfTupleStructPat( - TupleStructPat e, int index, string partialPredicateCall - ) { - exists(int b, int bPat, int bPathAstNode, int n, int nField | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - bPathAstNode = - bPat + 1 + max(int i | i = -1 or exists(getImmediateChildOfPathAstNode(e, i, _)) | i) and - n = bPathAstNode and - nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and - ( - none() - or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfPathAstNode(e, index - bPat, partialPredicateCall) - or - result = e.getField(index - n) and - partialPredicateCall = "Field(" + (index - n).toString() + ")" - ) - ) - } - private Element getImmediateChildOfTypeAlias(TypeAlias e, int index, string partialPredicateCall) { exists( - int b, int bAssocItem, int bExternItem, int bItem, int n, int nAttr, int nGenericParamList, - int nName, int nTypeRepr, int nTypeBoundList, int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nAttr, int nGenericParamList, int nName, + int nTypeRepr, int nTypeBoundList, int nVisibility, int nWhereClause | - b = 0 and - bAssocItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAssocItem(e, i, _)) | i) and - bExternItem = - bAssocItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfExternItem(e, i, _)) | i) and - bItem = bExternItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nTypeRepr = nName + 1 and @@ -3946,14 +2928,12 @@ private module Impl { ( none() or - result = getImmediateChildOfAssocItem(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfExternItem(e, index - bAssocItem, partialPredicateCall) - or - result = getImmediateChildOfItem(e, index - bExternItem, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or index = nAttr and result = e.getGenericParamList() and @@ -3980,15 +2960,15 @@ private module Impl { private Element getImmediateChildOfUnion(Union e, int index, string partialPredicateCall) { exists( - int b, int bItem, int bVariantDef, int n, int nAttr, int nGenericParamList, int nName, - int nStructFieldList, int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nDeriveMacroExpansion, int nAttr, + int nGenericParamList, int nName, int nStructFieldList, int nVisibility, int nWhereClause | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - bVariantDef = - bItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfVariantDef(e, i, _)) | i) and - n = bVariantDef and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nDeriveMacroExpansion = + nAttributeMacroExpansion + 1 + + max(int i | i = -1 or exists(e.getDeriveMacroExpansion(i)) | i) and + nAttr = nDeriveMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nStructFieldList = nName + 1 and @@ -3997,12 +2977,16 @@ private module Impl { ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = getImmediateChildOfVariantDef(e, index - bItem, partialPredicateCall) + result = e.getDeriveMacroExpansion(index - nAttributeMacroExpansion) and + partialPredicateCall = + "DeriveMacroExpansion(" + (index - nAttributeMacroExpansion).toString() + ")" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nDeriveMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nDeriveMacroExpansion).toString() + ")" or index = nAttr and result = e.getGenericParamList() and @@ -4025,86 +3009,22 @@ private module Impl { ) } - private Element getImmediateChildOfUse(Use e, int index, string partialPredicateCall) { - exists(int b, int bItem, int n, int nAttr, int nUseTree, int nVisibility | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nUseTree = nAttr + 1 and - nVisibility = nUseTree + 1 and - ( - none() - or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) - or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" - or - index = nAttr and result = e.getUseTree() and partialPredicateCall = "UseTree()" - or - index = nUseTree and result = e.getVisibility() and partialPredicateCall = "Visibility()" - ) - ) - } - - private Element getImmediateChildOfForExpr(ForExpr e, int index, string partialPredicateCall) { - exists(int b, int bLoopingExpr, int n, int nAttr, int nIterable, int nPat | - b = 0 and - bLoopingExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLoopingExpr(e, i, _)) | i) and - n = bLoopingExpr and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nIterable = nAttr + 1 and - nPat = nIterable + 1 and - ( - none() - or - result = getImmediateChildOfLoopingExpr(e, index - b, partialPredicateCall) - or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" - or - index = nAttr and result = e.getIterable() and partialPredicateCall = "Iterable()" - or - index = nIterable and result = e.getPat() and partialPredicateCall = "Pat()" - ) - ) - } - - private Element getImmediateChildOfLoopExpr(LoopExpr e, int index, string partialPredicateCall) { - exists(int b, int bLoopingExpr, int n, int nAttr | - b = 0 and - bLoopingExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLoopingExpr(e, i, _)) | i) and - n = bLoopingExpr and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - ( - none() - or - result = getImmediateChildOfLoopingExpr(e, index - b, partialPredicateCall) - or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" - ) - ) - } - private Element getImmediateChildOfWhileExpr(WhileExpr e, int index, string partialPredicateCall) { - exists(int b, int bLoopingExpr, int n, int nAttr, int nCondition | - b = 0 and - bLoopingExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLoopingExpr(e, i, _)) | i) and - n = bLoopingExpr and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists(int n, int nLabel, int nLoopBody, int nAttr, int nCondition | + n = 0 and + nLabel = n + 1 and + nLoopBody = nLabel + 1 and + nAttr = nLoopBody + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nCondition = nAttr + 1 and ( none() or - result = getImmediateChildOfLoopingExpr(e, index - b, partialPredicateCall) + index = n and result = e.getLabel() and partialPredicateCall = "Label()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + index = nLabel and result = e.getLoopBody() and partialPredicateCall = "LoopBody()" + or + result = e.getAttr(index - nLoopBody) and + partialPredicateCall = "Attr(" + (index - nLoopBody).toString() + ")" or index = nAttr and result = e.getCondition() and partialPredicateCall = "Condition()" ) @@ -4393,22 +3313,14 @@ private module Impl { or result = getImmediateChildOfCallExpr(e, index, partialAccessor) or - result = getImmediateChildOfConst(e, index, partialAccessor) - or - result = getImmediateChildOfEnum(e, index, partialAccessor) - or result = getImmediateChildOfExternBlock(e, index, partialAccessor) or result = getImmediateChildOfExternCrate(e, index, partialAccessor) or result = getImmediateChildOfFormatTemplateVariableAccess(e, index, partialAccessor) or - result = getImmediateChildOfFunction(e, index, partialAccessor) - or result = getImmediateChildOfImpl(e, index, partialAccessor) or - result = getImmediateChildOfMacroCall(e, index, partialAccessor) - or result = getImmediateChildOfMacroDef(e, index, partialAccessor) or result = getImmediateChildOfMacroRules(e, index, partialAccessor) @@ -4421,10 +3333,6 @@ private module Impl { or result = getImmediateChildOfPathPat(e, index, partialAccessor) or - result = getImmediateChildOfStatic(e, index, partialAccessor) - or - result = getImmediateChildOfStruct(e, index, partialAccessor) - or result = getImmediateChildOfStructExpr(e, index, partialAccessor) or result = getImmediateChildOfStructPat(e, index, partialAccessor) @@ -4435,16 +3343,28 @@ private module Impl { or result = getImmediateChildOfTupleStructPat(e, index, partialAccessor) or - result = getImmediateChildOfTypeAlias(e, index, partialAccessor) + result = getImmediateChildOfUse(e, index, partialAccessor) or - result = getImmediateChildOfUnion(e, index, partialAccessor) + result = getImmediateChildOfConst(e, index, partialAccessor) or - result = getImmediateChildOfUse(e, index, partialAccessor) + result = getImmediateChildOfEnum(e, index, partialAccessor) or result = getImmediateChildOfForExpr(e, index, partialAccessor) or + result = getImmediateChildOfFunction(e, index, partialAccessor) + or result = getImmediateChildOfLoopExpr(e, index, partialAccessor) or + result = getImmediateChildOfMacroCall(e, index, partialAccessor) + or + result = getImmediateChildOfStatic(e, index, partialAccessor) + or + result = getImmediateChildOfStruct(e, index, partialAccessor) + or + result = getImmediateChildOfTypeAlias(e, index, partialAccessor) + or + result = getImmediateChildOfUnion(e, index, partialAccessor) + or result = getImmediateChildOfWhileExpr(e, index, partialAccessor) } } 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 c5344d351d4a..a8e526e52639 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll @@ -265,18 +265,6 @@ module Raw { NameRef getIdentifier() { asm_reg_spec_identifiers(this, result) } } - /** - * INTERNAL: Do not use. - * An associated item in a `Trait` or `Impl`. - * - * For example: - * ```rust - * trait T {fn foo(&self);} - * // ^^^^^^^^^^^^^ - * ``` - */ - class AssocItem extends @assoc_item, AstNode { } - /** * INTERNAL: Do not use. * A list of `AssocItem` elements, as appearing in a `Trait` or `Impl`. @@ -361,20 +349,6 @@ module Raw { */ class Expr extends @expr, AstNode { } - /** - * INTERNAL: Do not use. - * An item inside an extern block. - * - * For example: - * ```rust - * extern "C" { - * fn foo(); - * static BAR: i32; - * } - * ``` - */ - class ExternItem extends @extern_item, AstNode { } - /** * INTERNAL: Do not use. * A list of items inside an extern block. @@ -1370,11 +1344,6 @@ module Raw { UseTree getUseTree(int index) { use_tree_list_use_trees(this, index, result) } } - /** - * INTERNAL: Do not use. - */ - class VariantDef extends @variant_def, AstNode { } - /** * INTERNAL: Do not use. * A list of variants in an enum declaration. @@ -3523,7 +3492,7 @@ module Raw { * // ^ ^^^^^^ ^^^^^^^^^^^^ * ``` */ - class Variant extends @variant, VariantDef, Addressable { + class Variant extends @variant, Addressable { override string toString() { result = "Variant" } /** @@ -3610,6 +3579,31 @@ module Raw { Expr getExpr() { yield_expr_exprs(this, result) } } + /** + * INTERNAL: Do not use. + * An ADT (Abstract Data Type) definition, such as `Struct`, `Enum`, or `Union`. + */ + class Adt extends @adt, Item { + /** + * Gets the `index`th derive macro expansion of this adt (0-based). + */ + MacroItems getDeriveMacroExpansion(int index) { + adt_derive_macro_expansions(this, index, result) + } + } + + /** + * INTERNAL: Do not use. + * An associated item in a `Trait` or `Impl`. + * + * For example: + * ```rust + * trait T {fn foo(&self);} + * // ^^^^^^^^^^^^^ + * ``` + */ + class AssocItem extends @assoc_item, Item { } + /** * INTERNAL: Do not use. * A block expression. For example: @@ -3688,97 +3682,6 @@ module Raw { Expr getFunction() { call_expr_functions(this, result) } } - /** - * INTERNAL: Do not use. - * A constant item declaration. - * - * For example: - * ```rust - * const X: i32 = 42; - * ``` - */ - class Const extends @const, AssocItem, Item { - override string toString() { result = "Const" } - - /** - * Gets the `index`th attr of this const (0-based). - */ - Attr getAttr(int index) { const_attrs(this, index, result) } - - /** - * Gets the body of this const, if it exists. - */ - Expr getBody() { const_bodies(this, result) } - - /** - * Holds if this const is const. - */ - predicate isConst() { const_is_const(this) } - - /** - * Holds if this const is default. - */ - predicate isDefault() { const_is_default(this) } - - /** - * Gets the name of this const, if it exists. - */ - Name getName() { const_names(this, result) } - - /** - * Gets the type representation of this const, if it exists. - */ - TypeRepr getTypeRepr() { const_type_reprs(this, result) } - - /** - * Gets the visibility of this const, if it exists. - */ - Visibility getVisibility() { const_visibilities(this, result) } - } - - /** - * INTERNAL: Do not use. - * An enum declaration. - * - * For example: - * ```rust - * enum E {A, B(i32), C {x: i32}} - * ``` - */ - class Enum extends @enum, Item { - override string toString() { result = "Enum" } - - /** - * Gets the `index`th attr of this enum (0-based). - */ - Attr getAttr(int index) { enum_attrs(this, index, result) } - - /** - * Gets the generic parameter list of this enum, if it exists. - */ - GenericParamList getGenericParamList() { enum_generic_param_lists(this, result) } - - /** - * Gets the name of this enum, if it exists. - */ - Name getName() { enum_names(this, result) } - - /** - * Gets the variant list of this enum, if it exists. - */ - VariantList getVariantList() { enum_variant_lists(this, result) } - - /** - * Gets the visibility of this enum, if it exists. - */ - Visibility getVisibility() { enum_visibilities(this, result) } - - /** - * Gets the where clause of this enum, if it exists. - */ - WhereClause getWhereClause() { enum_where_clauses(this, result) } - } - /** * INTERNAL: Do not use. * An extern block containing foreign function declarations. @@ -3849,80 +3752,17 @@ module Raw { /** * INTERNAL: Do not use. - * A function declaration. For example - * ```rust - * fn foo(x: u32) -> u64 {(x + 1).into()} - * ``` - * A function declaration within a trait might not have a body: + * An item inside an extern block. + * + * For example: * ```rust - * trait Trait { - * fn bar(); + * extern "C" { + * fn foo(); + * static BAR: i32; * } * ``` */ - class Function extends @function, AssocItem, ExternItem, Item, Callable { - override string toString() { result = "Function" } - - /** - * Gets the abi of this function, if it exists. - */ - Abi getAbi() { function_abis(this, result) } - - /** - * Gets the body of this function, if it exists. - */ - BlockExpr getBody() { function_bodies(this, result) } - - /** - * Gets the generic parameter list of this function, if it exists. - */ - GenericParamList getGenericParamList() { function_generic_param_lists(this, result) } - - /** - * Holds if this function is async. - */ - predicate isAsync() { function_is_async(this) } - - /** - * Holds if this function is const. - */ - predicate isConst() { function_is_const(this) } - - /** - * Holds if this function is default. - */ - predicate isDefault() { function_is_default(this) } - - /** - * Holds if this function is gen. - */ - predicate isGen() { function_is_gen(this) } - - /** - * Holds if this function is unsafe. - */ - predicate isUnsafe() { function_is_unsafe(this) } - - /** - * Gets the name of this function, if it exists. - */ - Name getName() { function_names(this, result) } - - /** - * Gets the ret type of this function, if it exists. - */ - RetTypeRepr getRetType() { function_ret_types(this, result) } - - /** - * Gets the visibility of this function, if it exists. - */ - Visibility getVisibility() { function_visibilities(this, result) } - - /** - * Gets the where clause of this function, if it exists. - */ - WhereClause getWhereClause() { function_where_clauses(this, result) } - } + class ExternItem extends @extern_item, Item { } /** * INTERNAL: Do not use. @@ -4000,39 +3840,6 @@ module Raw { BlockExpr getLoopBody() { looping_expr_loop_bodies(this, result) } } - /** - * INTERNAL: Do not use. - * A macro invocation. - * - * For example: - * ```rust - * println!("Hello, world!"); - * ``` - */ - class MacroCall extends @macro_call, AssocItem, ExternItem, Item { - override string toString() { result = "MacroCall" } - - /** - * Gets the `index`th attr of this macro call (0-based). - */ - Attr getAttr(int index) { macro_call_attrs(this, index, result) } - - /** - * Gets the path of this macro call, if it exists. - */ - Path getPath() { macro_call_paths(this, result) } - - /** - * Gets the token tree of this macro call, if it exists. - */ - TokenTree getTokenTree() { macro_call_token_trees(this, result) } - - /** - * Gets the macro call expansion of this macro call, if it exists. - */ - AstNode getMacroCallExpansion() { macro_call_macro_call_expansions(this, result) } - } - /** * INTERNAL: Do not use. * A Rust 2.0 style declarative macro definition. @@ -4206,113 +4013,16 @@ module Raw { /** * INTERNAL: Do not use. - * A static item declaration. - * - * For example: + * A struct expression. For example: * ```rust - * static X: i32 = 42; + * let first = Foo { a: 1, b: 2 }; + * let second = Foo { a: 2, ..first }; + * Foo { a: 1, b: 2 }[2] = 10; + * Foo { .. } = second; * ``` */ - class Static extends @static, ExternItem, Item { - override string toString() { result = "Static" } - - /** - * Gets the `index`th attr of this static (0-based). - */ - Attr getAttr(int index) { static_attrs(this, index, result) } - - /** - * Gets the body of this static, if it exists. - */ - Expr getBody() { static_bodies(this, result) } - - /** - * Holds if this static is mut. - */ - predicate isMut() { static_is_mut(this) } - - /** - * Holds if this static is static. - */ - predicate isStatic() { static_is_static(this) } - - /** - * Holds if this static is unsafe. - */ - predicate isUnsafe() { static_is_unsafe(this) } - - /** - * Gets the name of this static, if it exists. - */ - Name getName() { static_names(this, result) } - - /** - * Gets the type representation of this static, if it exists. - */ - TypeRepr getTypeRepr() { static_type_reprs(this, result) } - - /** - * Gets the visibility of this static, if it exists. - */ - Visibility getVisibility() { static_visibilities(this, result) } - } - - /** - * INTERNAL: Do not use. - * A Struct. For example: - * ```rust - * struct Point { - * x: i32, - * y: i32, - * } - * ``` - */ - class Struct extends @struct, Item, VariantDef { - override string toString() { result = "Struct" } - - /** - * Gets the `index`th attr of this struct (0-based). - */ - Attr getAttr(int index) { struct_attrs(this, index, result) } - - /** - * Gets the field list of this struct, if it exists. - */ - FieldList getFieldList() { struct_field_lists_(this, result) } - - /** - * Gets the generic parameter list of this struct, if it exists. - */ - GenericParamList getGenericParamList() { struct_generic_param_lists(this, result) } - - /** - * Gets the name of this struct, if it exists. - */ - Name getName() { struct_names(this, result) } - - /** - * Gets the visibility of this struct, if it exists. - */ - Visibility getVisibility() { struct_visibilities(this, result) } - - /** - * Gets the where clause of this struct, if it exists. - */ - WhereClause getWhereClause() { struct_where_clauses(this, result) } - } - - /** - * INTERNAL: Do not use. - * A struct expression. For example: - * ```rust - * let first = Foo { a: 1, b: 2 }; - * let second = Foo { a: 2, ..first }; - * Foo { a: 1, b: 2 }[2] = 10; - * Foo { .. } = second; - * ``` - */ - class StructExpr extends @struct_expr, Expr, PathAstNode { - override string toString() { result = "StructExpr" } + class StructExpr extends @struct_expr, Expr, PathAstNode { + override string toString() { result = "StructExpr" } /** * Gets the struct expression field list of this struct expression, if it exists. @@ -4468,127 +4178,137 @@ module Raw { /** * INTERNAL: Do not use. - * A type alias. For example: + * A `use` statement. For example: * ```rust - * type Point = (u8, u8); - * - * trait Trait { - * type Output; - * // ^^^^^^^^^^^ - * } + * use std::collections::HashMap; * ``` */ - class TypeAlias extends @type_alias, AssocItem, ExternItem, Item { - override string toString() { result = "TypeAlias" } + class Use extends @use, Item { + override string toString() { result = "Use" } /** - * Gets the `index`th attr of this type alias (0-based). + * Gets the `index`th attr of this use (0-based). */ - Attr getAttr(int index) { type_alias_attrs(this, index, result) } + Attr getAttr(int index) { use_attrs(this, index, result) } /** - * Gets the generic parameter list of this type alias, if it exists. + * Gets the use tree of this use, if it exists. */ - GenericParamList getGenericParamList() { type_alias_generic_param_lists(this, result) } + UseTree getUseTree() { use_use_trees(this, result) } /** - * Holds if this type alias is default. + * Gets the visibility of this use, if it exists. */ - predicate isDefault() { type_alias_is_default(this) } + Visibility getVisibility() { use_visibilities(this, result) } + } - /** - * Gets the name of this type alias, if it exists. - */ - Name getName() { type_alias_names(this, result) } + /** + * INTERNAL: Do not use. + * A constant item declaration. + * + * For example: + * ```rust + * const X: i32 = 42; + * ``` + */ + class Const extends @const, AssocItem { + override string toString() { result = "Const" } /** - * Gets the type representation of this type alias, if it exists. + * Gets the `index`th attr of this const (0-based). */ - TypeRepr getTypeRepr() { type_alias_type_reprs(this, result) } + Attr getAttr(int index) { const_attrs(this, index, result) } /** - * Gets the type bound list of this type alias, if it exists. + * Gets the body of this const, if it exists. */ - TypeBoundList getTypeBoundList() { type_alias_type_bound_lists(this, result) } + Expr getBody() { const_bodies(this, result) } /** - * Gets the visibility of this type alias, if it exists. + * Gets the generic parameter list of this const, if it exists. */ - Visibility getVisibility() { type_alias_visibilities(this, result) } + GenericParamList getGenericParamList() { const_generic_param_lists(this, result) } /** - * Gets the where clause of this type alias, if it exists. + * Holds if this const is const. */ - WhereClause getWhereClause() { type_alias_where_clauses(this, result) } - } - - /** - * INTERNAL: Do not use. - * A union declaration. - * - * For example: - * ```rust - * union U { f1: u32, f2: f32 } - * ``` - */ - class Union extends @union, Item, VariantDef { - override string toString() { result = "Union" } + predicate isConst() { const_is_const(this) } /** - * Gets the `index`th attr of this union (0-based). + * Holds if this const is default. */ - Attr getAttr(int index) { union_attrs(this, index, result) } + predicate isDefault() { const_is_default(this) } /** - * Gets the generic parameter list of this union, if it exists. + * Gets the name of this const, if it exists. */ - GenericParamList getGenericParamList() { union_generic_param_lists(this, result) } + Name getName() { const_names(this, result) } /** - * Gets the name of this union, if it exists. + * Gets the type representation of this const, if it exists. */ - Name getName() { union_names(this, result) } + TypeRepr getTypeRepr() { const_type_reprs(this, result) } /** - * Gets the struct field list of this union, if it exists. + * Gets the visibility of this const, if it exists. */ - StructFieldList getStructFieldList() { union_struct_field_lists(this, result) } + Visibility getVisibility() { const_visibilities(this, result) } /** - * Gets the visibility of this union, if it exists. + * Gets the where clause of this const, if it exists. */ - Visibility getVisibility() { union_visibilities(this, result) } + WhereClause getWhereClause() { const_where_clauses(this, result) } /** - * Gets the where clause of this union, if it exists. + * Holds if this constant has an implementation. + * + * This is the same as `hasBody` for source code, but for library code (for which we always skip + * the body), this will hold when the body was present in the original code. */ - WhereClause getWhereClause() { union_where_clauses(this, result) } + predicate hasImplementation() { const_has_implementation(this) } } /** * INTERNAL: Do not use. - * A `use` statement. For example: + * An enum declaration. + * + * For example: * ```rust - * use std::collections::HashMap; + * enum E {A, B(i32), C {x: i32}} * ``` */ - class Use extends @use, Item { - override string toString() { result = "Use" } + class Enum extends @enum, Adt { + override string toString() { result = "Enum" } /** - * Gets the `index`th attr of this use (0-based). + * Gets the `index`th attr of this enum (0-based). */ - Attr getAttr(int index) { use_attrs(this, index, result) } + Attr getAttr(int index) { enum_attrs(this, index, result) } /** - * Gets the use tree of this use, if it exists. + * Gets the generic parameter list of this enum, if it exists. */ - UseTree getUseTree() { use_use_trees(this, result) } + GenericParamList getGenericParamList() { enum_generic_param_lists(this, result) } /** - * Gets the visibility of this use, if it exists. + * Gets the name of this enum, if it exists. */ - Visibility getVisibility() { use_visibilities(this, result) } + Name getName() { enum_names(this, result) } + + /** + * Gets the variant list of this enum, if it exists. + */ + VariantList getVariantList() { enum_variant_lists(this, result) } + + /** + * Gets the visibility of this enum, if it exists. + */ + Visibility getVisibility() { enum_visibilities(this, result) } + + /** + * Gets the where clause of this enum, if it exists. + */ + WhereClause getWhereClause() { enum_where_clauses(this, result) } } /** @@ -4623,36 +4343,350 @@ module Raw { /** * INTERNAL: Do not use. - * A loop expression. For example: - * ```rust - * loop { - * println!("Hello, world (again)!"); - * }; - * ``` + * A function declaration. For example * ```rust - * 'label: loop { - * println!("Hello, world (once)!"); - * break 'label; - * }; + * fn foo(x: u32) -> u64 {(x + 1).into()} * ``` + * A function declaration within a trait might not have a body: * ```rust - * let mut x = 0; - * loop { - * if x < 10 { - * x += 1; - * } else { - * break; - * } - * }; + * trait Trait { + * fn bar(); + * } * ``` */ - class LoopExpr extends @loop_expr, LoopingExpr { - override string toString() { result = "LoopExpr" } + class Function extends @function, AssocItem, ExternItem, Callable { + override string toString() { result = "Function" } /** - * Gets the `index`th attr of this loop expression (0-based). + * Gets the abi of this function, if it exists. */ - Attr getAttr(int index) { loop_expr_attrs(this, index, result) } + Abi getAbi() { function_abis(this, result) } + + /** + * Gets the body of this function, if it exists. + */ + BlockExpr getBody() { function_bodies(this, result) } + + /** + * Gets the generic parameter list of this function, if it exists. + */ + GenericParamList getGenericParamList() { function_generic_param_lists(this, result) } + + /** + * Holds if this function is async. + */ + predicate isAsync() { function_is_async(this) } + + /** + * Holds if this function is const. + */ + predicate isConst() { function_is_const(this) } + + /** + * Holds if this function is default. + */ + predicate isDefault() { function_is_default(this) } + + /** + * Holds if this function is gen. + */ + predicate isGen() { function_is_gen(this) } + + /** + * Holds if this function is unsafe. + */ + predicate isUnsafe() { function_is_unsafe(this) } + + /** + * Gets the name of this function, if it exists. + */ + Name getName() { function_names(this, result) } + + /** + * Gets the ret type of this function, if it exists. + */ + RetTypeRepr getRetType() { function_ret_types(this, result) } + + /** + * Gets the visibility of this function, if it exists. + */ + Visibility getVisibility() { function_visibilities(this, result) } + + /** + * Gets the where clause of this function, if it exists. + */ + WhereClause getWhereClause() { function_where_clauses(this, result) } + + /** + * Holds if this function has an implementation. + * + * This is the same as `hasBody` for source code, but for library code (for which we always skip + * the body), this will hold when the body was present in the original code. + */ + predicate hasImplementation() { function_has_implementation(this) } + } + + /** + * INTERNAL: Do not use. + * A loop expression. For example: + * ```rust + * loop { + * println!("Hello, world (again)!"); + * }; + * ``` + * ```rust + * 'label: loop { + * println!("Hello, world (once)!"); + * break 'label; + * }; + * ``` + * ```rust + * let mut x = 0; + * loop { + * if x < 10 { + * x += 1; + * } else { + * break; + * } + * }; + * ``` + */ + class LoopExpr extends @loop_expr, LoopingExpr { + override string toString() { result = "LoopExpr" } + + /** + * Gets the `index`th attr of this loop expression (0-based). + */ + Attr getAttr(int index) { loop_expr_attrs(this, index, result) } + } + + /** + * INTERNAL: Do not use. + * A macro invocation. + * + * For example: + * ```rust + * println!("Hello, world!"); + * ``` + */ + class MacroCall extends @macro_call, AssocItem, ExternItem { + override string toString() { result = "MacroCall" } + + /** + * Gets the `index`th attr of this macro call (0-based). + */ + Attr getAttr(int index) { macro_call_attrs(this, index, result) } + + /** + * Gets the path of this macro call, if it exists. + */ + Path getPath() { macro_call_paths(this, result) } + + /** + * Gets the token tree of this macro call, if it exists. + */ + TokenTree getTokenTree() { macro_call_token_trees(this, result) } + + /** + * Gets the macro call expansion of this macro call, if it exists. + */ + AstNode getMacroCallExpansion() { macro_call_macro_call_expansions(this, result) } + } + + /** + * INTERNAL: Do not use. + * A static item declaration. + * + * For example: + * ```rust + * static X: i32 = 42; + * ``` + */ + class Static extends @static, ExternItem { + override string toString() { result = "Static" } + + /** + * Gets the `index`th attr of this static (0-based). + */ + Attr getAttr(int index) { static_attrs(this, index, result) } + + /** + * Gets the body of this static, if it exists. + */ + Expr getBody() { static_bodies(this, result) } + + /** + * Holds if this static is mut. + */ + predicate isMut() { static_is_mut(this) } + + /** + * Holds if this static is static. + */ + predicate isStatic() { static_is_static(this) } + + /** + * Holds if this static is unsafe. + */ + predicate isUnsafe() { static_is_unsafe(this) } + + /** + * Gets the name of this static, if it exists. + */ + Name getName() { static_names(this, result) } + + /** + * Gets the type representation of this static, if it exists. + */ + TypeRepr getTypeRepr() { static_type_reprs(this, result) } + + /** + * Gets the visibility of this static, if it exists. + */ + Visibility getVisibility() { static_visibilities(this, result) } + } + + /** + * INTERNAL: Do not use. + * A Struct. For example: + * ```rust + * struct Point { + * x: i32, + * y: i32, + * } + * ``` + */ + class Struct extends @struct, Adt { + override string toString() { result = "Struct" } + + /** + * Gets the `index`th attr of this struct (0-based). + */ + Attr getAttr(int index) { struct_attrs(this, index, result) } + + /** + * Gets the field list of this struct, if it exists. + */ + FieldList getFieldList() { struct_field_lists_(this, result) } + + /** + * Gets the generic parameter list of this struct, if it exists. + */ + GenericParamList getGenericParamList() { struct_generic_param_lists(this, result) } + + /** + * Gets the name of this struct, if it exists. + */ + Name getName() { struct_names(this, result) } + + /** + * Gets the visibility of this struct, if it exists. + */ + Visibility getVisibility() { struct_visibilities(this, result) } + + /** + * Gets the where clause of this struct, if it exists. + */ + WhereClause getWhereClause() { struct_where_clauses(this, result) } + } + + /** + * INTERNAL: Do not use. + * A type alias. For example: + * ```rust + * type Point = (u8, u8); + * + * trait Trait { + * type Output; + * // ^^^^^^^^^^^ + * } + * ``` + */ + class TypeAlias extends @type_alias, AssocItem, ExternItem { + override string toString() { result = "TypeAlias" } + + /** + * Gets the `index`th attr of this type alias (0-based). + */ + Attr getAttr(int index) { type_alias_attrs(this, index, result) } + + /** + * Gets the generic parameter list of this type alias, if it exists. + */ + GenericParamList getGenericParamList() { type_alias_generic_param_lists(this, result) } + + /** + * Holds if this type alias is default. + */ + predicate isDefault() { type_alias_is_default(this) } + + /** + * Gets the name of this type alias, if it exists. + */ + Name getName() { type_alias_names(this, result) } + + /** + * Gets the type representation of this type alias, if it exists. + */ + TypeRepr getTypeRepr() { type_alias_type_reprs(this, result) } + + /** + * Gets the type bound list of this type alias, if it exists. + */ + TypeBoundList getTypeBoundList() { type_alias_type_bound_lists(this, result) } + + /** + * Gets the visibility of this type alias, if it exists. + */ + Visibility getVisibility() { type_alias_visibilities(this, result) } + + /** + * Gets the where clause of this type alias, if it exists. + */ + WhereClause getWhereClause() { type_alias_where_clauses(this, result) } + } + + /** + * INTERNAL: Do not use. + * A union declaration. + * + * For example: + * ```rust + * union U { f1: u32, f2: f32 } + * ``` + */ + class Union extends @union, Adt { + override string toString() { result = "Union" } + + /** + * Gets the `index`th attr of this union (0-based). + */ + Attr getAttr(int index) { union_attrs(this, index, result) } + + /** + * Gets the generic parameter list of this union, if it exists. + */ + GenericParamList getGenericParamList() { union_generic_param_lists(this, result) } + + /** + * Gets the name of this union, if it exists. + */ + Name getName() { union_names(this, result) } + + /** + * Gets the struct field list of this union, if it exists. + */ + StructFieldList getStructFieldList() { union_struct_field_lists(this, result) } + + /** + * Gets the visibility of this union, if it exists. + */ + Visibility getVisibility() { union_visibilities(this, result) } + + /** + * Gets the where clause of this union, if it exists. + */ + WhereClause getWhereClause() { union_where_clauses(this, result) } } /** 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 0fb3c627de29..075b48c42e31 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Static.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Static.qll @@ -9,7 +9,6 @@ private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExternItemImpl::Impl as ExternItemImpl -import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.Name import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility @@ -29,7 +28,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::Static` class directly. * Use the subclass `Static`, where the following predicates are available. */ - class Static extends Synth::TStatic, ExternItemImpl::ExternItem, ItemImpl::Item { + class Static extends Synth::TStatic, ExternItemImpl::ExternItem { override string getAPrimaryQlClass() { result = "Static" } /** 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 6776d9a80072..8910d2691695 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Struct.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Struct.qll @@ -6,12 +6,11 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.internal.AdtImpl::Impl as AdtImpl import codeql.rust.elements.Attr import codeql.rust.elements.FieldList import codeql.rust.elements.GenericParamList -import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.Name -import codeql.rust.elements.internal.VariantDefImpl::Impl as VariantDefImpl import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause @@ -31,7 +30,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::Struct` class directly. * Use the subclass `Struct`, where the following predicates are available. */ - class Struct extends Synth::TStruct, ItemImpl::Item, VariantDefImpl::VariantDef { + class Struct extends Synth::TStruct, AdtImpl::Adt { override string getAPrimaryQlClass() { result = "Struct" } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll index 04588e2861e7..3d89d74b7e8c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll @@ -688,6 +688,11 @@ module Synth { */ class TAddressable = TItem or TVariant; + /** + * INTERNAL: Do not use. + */ + class TAdt = TEnum or TStruct or TUnion; + /** * INTERNAL: Do not use. */ @@ -713,17 +718,16 @@ module Synth { */ class TAstNode = TAbi or TAddressable or TArgList or TAsmDirSpec or TAsmOperand or TAsmOperandExpr or - TAsmOption or TAsmPiece or TAsmRegSpec or TAssocItem or TAssocItemList or TAttr or - TCallable or TClosureBinder or TExpr or TExternItem or TExternItemList or TFieldList or - TFormatArgsArg or TGenericArg or TGenericArgList or TGenericParam or TGenericParamList or - TItemList or TLabel or TLetElse or TMacroItems or TMatchArm or TMatchArmList or - TMatchGuard or TMeta or TName or TParamBase or TParamList or TParenthesizedArgList or - TPat or TPath or TPathSegment or TRename or TResolvable or TRetTypeRepr or - TReturnTypeSyntax or TSourceFile or TStmt or TStmtList or TStructExprField or - TStructExprFieldList or TStructField or TStructPatField or TStructPatFieldList or TToken or - TTokenTree or TTupleField or TTypeBound or TTypeBoundList or TTypeRepr or - TUseBoundGenericArg or TUseBoundGenericArgs or TUseTree or TUseTreeList or TVariantDef or - TVariantList or TVisibility or TWhereClause or TWherePred; + TAsmOption or TAsmPiece or TAsmRegSpec or TAssocItemList or TAttr or TCallable or + TClosureBinder or TExpr or TExternItemList or TFieldList or TFormatArgsArg or TGenericArg or + TGenericArgList or TGenericParam or TGenericParamList or TItemList or TLabel or TLetElse or + TMacroItems or TMatchArm or TMatchArmList or TMatchGuard or TMeta or TName or TParamBase or + TParamList or TParenthesizedArgList or TPat or TPath or TPathSegment or TRename or + TResolvable or TRetTypeRepr or TReturnTypeSyntax or TSourceFile or TStmt or TStmtList or + TStructExprField or TStructExprFieldList or TStructField or TStructPatField or + TStructPatFieldList or TToken or TTokenTree or TTupleField or TTypeBound or + TTypeBoundList or TTypeRepr or TUseBoundGenericArg or TUseBoundGenericArgs or TUseTree or + TUseTreeList or TVariantList or TVisibility or TWhereClause or TWherePred; /** * INTERNAL: Do not use. @@ -770,9 +774,8 @@ module Synth { * INTERNAL: Do not use. */ class TItem = - TConst or TEnum or TExternBlock or TExternCrate or TFunction or TImpl or TMacroCall or - TMacroDef or TMacroRules or TModule or TStatic or TStruct or TTrait or TTraitAlias or - TTypeAlias or TUnion or TUse; + TAdt or TAssocItem or TExternBlock or TExternCrate or TExternItem or TImpl or TMacroDef or + TMacroRules or TModule or TTrait or TTraitAlias or TUse; /** * INTERNAL: Do not use. @@ -845,11 +848,6 @@ module Synth { */ class TUseBoundGenericArg = TLifetime or TNameRef; - /** - * INTERNAL: Do not use. - */ - class TVariantDef = TStruct or TUnion or TVariant; - /** * INTERNAL: Do not use. * Converts a raw element to a synthesized `TAbi`, if possible. @@ -1864,6 +1862,18 @@ module Synth { result = convertVariantFromRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a raw DB element to a synthesized `TAdt`, if possible. + */ + TAdt convertAdtFromRaw(Raw::Element e) { + result = convertEnumFromRaw(e) + or + result = convertStructFromRaw(e) + or + result = convertUnionFromRaw(e) + } + /** * INTERNAL: Do not use. * Converts a raw DB element to a synthesized `TArrayExpr`, if possible. @@ -1937,8 +1947,6 @@ module Synth { or result = convertAsmRegSpecFromRaw(e) or - result = convertAssocItemFromRaw(e) - or result = convertAssocItemListFromRaw(e) or result = convertAttrFromRaw(e) @@ -1949,8 +1957,6 @@ module Synth { or result = convertExprFromRaw(e) or - result = convertExternItemFromRaw(e) - or result = convertExternItemListFromRaw(e) or result = convertFieldListFromRaw(e) @@ -2039,8 +2045,6 @@ module Synth { or result = convertUseTreeListFromRaw(e) or - result = convertVariantDefFromRaw(e) - or result = convertVariantListFromRaw(e) or result = convertVisibilityFromRaw(e) @@ -2213,38 +2217,28 @@ module Synth { * Converts a raw DB element to a synthesized `TItem`, if possible. */ TItem convertItemFromRaw(Raw::Element e) { - result = convertConstFromRaw(e) + result = convertAdtFromRaw(e) or - result = convertEnumFromRaw(e) + result = convertAssocItemFromRaw(e) or result = convertExternBlockFromRaw(e) or result = convertExternCrateFromRaw(e) or - result = convertFunctionFromRaw(e) + result = convertExternItemFromRaw(e) or result = convertImplFromRaw(e) or - result = convertMacroCallFromRaw(e) - or result = convertMacroDefFromRaw(e) or result = convertMacroRulesFromRaw(e) or result = convertModuleFromRaw(e) or - result = convertStaticFromRaw(e) - or - result = convertStructFromRaw(e) - or result = convertTraitFromRaw(e) or result = convertTraitAliasFromRaw(e) or - result = convertTypeAliasFromRaw(e) - or - result = convertUnionFromRaw(e) - or result = convertUseFromRaw(e) } @@ -2440,18 +2434,6 @@ module Synth { result = convertNameRefFromRaw(e) } - /** - * INTERNAL: Do not use. - * Converts a raw DB element to a synthesized `TVariantDef`, if possible. - */ - TVariantDef convertVariantDefFromRaw(Raw::Element e) { - result = convertStructFromRaw(e) - or - result = convertUnionFromRaw(e) - or - result = convertVariantFromRaw(e) - } - /** * INTERNAL: Do not use. * Converts a synthesized `TAbi` to a raw DB element, if possible. @@ -3464,6 +3446,18 @@ module Synth { result = convertVariantToRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TAdt` to a raw DB element, if possible. + */ + Raw::Element convertAdtToRaw(TAdt e) { + result = convertEnumToRaw(e) + or + result = convertStructToRaw(e) + or + result = convertUnionToRaw(e) + } + /** * INTERNAL: Do not use. * Converts a synthesized `TArrayExpr` to a raw DB element, if possible. @@ -3537,8 +3531,6 @@ module Synth { or result = convertAsmRegSpecToRaw(e) or - result = convertAssocItemToRaw(e) - or result = convertAssocItemListToRaw(e) or result = convertAttrToRaw(e) @@ -3549,8 +3541,6 @@ module Synth { or result = convertExprToRaw(e) or - result = convertExternItemToRaw(e) - or result = convertExternItemListToRaw(e) or result = convertFieldListToRaw(e) @@ -3639,8 +3629,6 @@ module Synth { or result = convertUseTreeListToRaw(e) or - result = convertVariantDefToRaw(e) - or result = convertVariantListToRaw(e) or result = convertVisibilityToRaw(e) @@ -3813,38 +3801,28 @@ module Synth { * Converts a synthesized `TItem` to a raw DB element, if possible. */ Raw::Element convertItemToRaw(TItem e) { - result = convertConstToRaw(e) + result = convertAdtToRaw(e) or - result = convertEnumToRaw(e) + result = convertAssocItemToRaw(e) or result = convertExternBlockToRaw(e) or result = convertExternCrateToRaw(e) or - result = convertFunctionToRaw(e) + result = convertExternItemToRaw(e) or result = convertImplToRaw(e) or - result = convertMacroCallToRaw(e) - or result = convertMacroDefToRaw(e) or result = convertMacroRulesToRaw(e) or result = convertModuleToRaw(e) or - result = convertStaticToRaw(e) - or - result = convertStructToRaw(e) - or result = convertTraitToRaw(e) or result = convertTraitAliasToRaw(e) or - result = convertTypeAliasToRaw(e) - or - result = convertUnionToRaw(e) - or result = convertUseToRaw(e) } @@ -4039,16 +4017,4 @@ module Synth { or result = convertNameRefToRaw(e) } - - /** - * INTERNAL: Do not use. - * Converts a synthesized `TVariantDef` to a raw DB element, if possible. - */ - Raw::Element convertVariantDefToRaw(TVariantDef e) { - result = convertStructToRaw(e) - or - result = convertUnionToRaw(e) - or - result = convertVariantToRaw(e) - } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeAlias.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeAlias.qll index 7f2f904bd437..063658e0a7bc 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeAlias.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeAlias.qll @@ -10,7 +10,6 @@ import codeql.rust.elements.internal.AssocItemImpl::Impl as AssocItemImpl import codeql.rust.elements.Attr import codeql.rust.elements.internal.ExternItemImpl::Impl as ExternItemImpl import codeql.rust.elements.GenericParamList -import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.Name import codeql.rust.elements.TypeBoundList import codeql.rust.elements.TypeRepr @@ -35,9 +34,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::TypeAlias` class directly. * Use the subclass `TypeAlias`, where the following predicates are available. */ - class TypeAlias extends Synth::TTypeAlias, AssocItemImpl::AssocItem, ExternItemImpl::ExternItem, - ItemImpl::Item - { + class TypeAlias extends Synth::TTypeAlias, AssocItemImpl::AssocItem, ExternItemImpl::ExternItem { override string getAPrimaryQlClass() { result = "TypeAlias" } /** 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 63f76703bcb1..e42eed69263b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Union.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Union.qll @@ -6,12 +6,11 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.internal.AdtImpl::Impl as AdtImpl import codeql.rust.elements.Attr import codeql.rust.elements.GenericParamList -import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.Name import codeql.rust.elements.StructFieldList -import codeql.rust.elements.internal.VariantDefImpl::Impl as VariantDefImpl import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause @@ -30,7 +29,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::Union` class directly. * Use the subclass `Union`, where the following predicates are available. */ - class Union extends Synth::TUnion, ItemImpl::Item, VariantDefImpl::VariantDef { + class Union extends Synth::TUnion, AdtImpl::Adt { override string getAPrimaryQlClass() { result = "Union" } /** 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 93d4fc6a4160..7da69072953c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll @@ -11,7 +11,6 @@ import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.FieldList import codeql.rust.elements.Name -import codeql.rust.elements.internal.VariantDefImpl::Impl as VariantDefImpl import codeql.rust.elements.Visibility /** @@ -30,7 +29,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::Variant` class directly. * Use the subclass `Variant`, where the following predicates are available. */ - class Variant extends Synth::TVariant, VariantDefImpl::VariantDef, AddressableImpl::Addressable { + class Variant extends Synth::TVariant, AddressableImpl::Addressable { override string getAPrimaryQlClass() { result = "Variant" } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/VariantDef.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/VariantDef.qll deleted file mode 100644 index 3114f03caded..000000000000 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/VariantDef.qll +++ /dev/null @@ -1,21 +0,0 @@ -// generated by codegen, do not edit -/** - * This module provides the generated definition of `VariantDef`. - * INTERNAL: Do not import directly. - */ - -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 - -/** - * INTERNAL: This module contains the fully generated definition of `VariantDef` and should not - * be referenced directly. - */ -module Generated { - /** - * INTERNAL: Do not reference the `Generated::VariantDef` class directly. - * Use the subclass `VariantDef`, where the following predicates are available. - */ - class VariantDef extends Synth::TVariantDef, AstNodeImpl::AstNode { } -} diff --git a/rust/ql/lib/codeql/rust/frameworks/Poem.qll b/rust/ql/lib/codeql/rust/frameworks/Poem.qll index 66c01a415a1c..2554d8452939 100644 --- a/rust/ql/lib/codeql/rust/frameworks/Poem.qll +++ b/rust/ql/lib/codeql/rust/frameworks/Poem.qll @@ -4,7 +4,6 @@ private import rust private import codeql.rust.Concepts -private import codeql.rust.dataflow.DataFlow /** * Parameters of a handler function @@ -12,9 +11,8 @@ private import codeql.rust.dataflow.DataFlow private class PoemHandlerParam extends RemoteSource::Range { PoemHandlerParam() { exists(TupleStructPat param | - param.getResolvedPath() = ["crate::web::query::Query", "crate::web::path::Path"] - | - this.asPat().getPat() = param.getAField() + this.asPat().getPat() = param.getAField() and + param.getStruct().getCanonicalPath() = ["poem::web::query::Query", "poem::web::path::Path"] ) } } 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 000000000000..8276574e73af --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sourceModelDeprecated + data: + - ["repo:https://github.com/async-rs/async-std:async-std", "::connect", "ReturnValue.Future.Field[core::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 1361ff9aeb2e..b1fa17f58762 100644 --- a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml @@ -1,6 +1,19 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated 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[core::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[core::option::Option::Some(0)]", "taint", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "::poll_fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/http.model.yml b/rust/ql/lib/codeql/rust/frameworks/http.model.yml index 8cb7489fdf77..5ad34ef53fe9 100644 --- a/rust/ql/lib/codeql/rust/frameworks/http.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/http.model.yml @@ -1,12 +1,12 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - - ["repo:https://github.com/hyperium/hyper:hyper", "::send_request", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "remote", "manual"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::send_request", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "remote", "manual"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::try_send_request", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "remote", "manual"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::try_send_request", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "remote", "manual"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::send_request", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::send_request", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::try_send_request", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::try_send_request", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] - ["repo:https://github.com/hyperium/hyper:hyper", "::get", "ReturnValue.Future", "remote", "manual"] - ["repo:https://github.com/hyperium/hyper:hyper", "::request", "ReturnValue.Future", "remote", "manual"] - ["repo:https://github.com/hyperium/hyper-util:hyper-util", "::get", "ReturnValue.Future", "remote", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/libc.model.yml b/rust/ql/lib/codeql/rust/frameworks/libc.model.yml index de34d13aeaa9..ce44a71732ec 100644 --- a/rust/ql/lib/codeql/rust/frameworks/libc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/libc.model.yml @@ -1,12 +1,12 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/rust-lang/libc:libc", "::free", "Argument[0]", "pointer-invalidate", "manual"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rust-lang/libc:libc", "::malloc", "Argument[0]", "alloc-size", "manual"] - ["repo:https://github.com/rust-lang/libc:libc", "::aligned_alloc", "Argument[1]", "alloc-size", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/log.model.yml b/rust/ql/lib/codeql/rust/frameworks/log.model.yml index 15f45c400934..b41b400e4142 100644 --- a/rust/ql/lib/codeql/rust/frameworks/log.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/log.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rust-lang/log:log", "crate::__private_api::log", "Argument[0]", "log-injection", "manual"] # logger / args (pre v0.4.27) - ["repo:https://github.com/rust-lang/log:log", "crate::__private_api::log", "Argument[1]", "log-injection", "manual"] # args / level (pre v0.4.27) @@ -15,9 +15,9 @@ extensions: - ["lang:std", "::write", "Argument[0]", "log-injection", "manual"] - ["lang:std", "::write_all", "Argument[0]", "log-injection", "manual"] - ["lang:core", "crate::panicking::panic_fmt", "Argument[0]", "log-injection", "manual"] - - ["lang:core", "crate::panicking::assert_failed", "Argument[3].Field[crate::option::Option::Some(0)]", "log-injection", "manual"] + - ["lang:core", "crate::panicking::assert_failed", "Argument[3].Field[core::option::Option::Some(0)]", "log-injection", "manual"] - ["lang:core", "::expect", "Argument[0]", "log-injection", "manual"] - ["repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err", "::log_expect", "Argument[0]", "log-injection", "manual"] - - ["repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err", "::log_unwrap", "Argument[self].Field[crate::result::Result::Err(0)]", "log-injection", "manual"] + - ["repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err", "::log_unwrap", "Argument[self].Field[core::result::Result::Err(0)]", "log-injection", "manual"] - ["repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err", "::log_expect", "Argument[0]", "log-injection", "manual"] - - ["repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err", "::log_expect", "Argument[self].Field[crate::result::Result::Err(0)]", "log-injection", "manual"] + - ["repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err", "::log_expect", "Argument[self].Field[core::result::Result::Err(0)]", "log-injection", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/postgres.model.yml b/rust/ql/lib/codeql/rust/frameworks/postgres.model.yml index c877947a45f4..4aba20e34505 100644 --- a/rust/ql/lib/codeql/rust/frameworks/postgres.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/postgres.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/sfackler/rust-postgres:postgres", "::execute", "Argument[0]", "sql-injection", "manual"] - ["repo:https://github.com/sfackler/rust-postgres:postgres", "::batch_execute", "Argument[0]", "sql-injection", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/regex.model.yml b/rust/ql/lib/codeql/rust/frameworks/regex.model.yml index b645dc0b955c..dbe8afe8f6ea 100644 --- a/rust/ql/lib/codeql/rust/frameworks/regex.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/regex.model.yml @@ -2,6 +2,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rust-lang/regex:regex", "crate::escape", "Argument[0].Reference", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml b/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml index f954d4ce7cce..3974d5b08174 100644 --- a/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml @@ -1,27 +1,27 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::get", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "remote", "manual"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::blocking::get", "ReturnValue.Field[crate::result::Result::Ok(0)]", "remote", "manual"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::get", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::blocking::get", "ReturnValue.Field[core::result::Result::Ok(0)]", "remote", "manual"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::request", "Argument[1]", "transmission", "manual"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::request", "Argument[1]", "transmission", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text_with_charset", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::bytes", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::chunk", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)]", "taint", "manual"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text_with_charset", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::bytes", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::bytes", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::chunk", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)]", "taint", "manual"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text_with_charset", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::bytes", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::chunk", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "taint", "manual"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text_with_charset", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::bytes", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::bytes", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::chunk", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/rusqlite.model.yml b/rust/ql/lib/codeql/rust/frameworks/rusqlite.model.yml index 0d44bbdc9a3f..3da7e2a1bc6c 100644 --- a/rust/ql/lib/codeql/rust/frameworks/rusqlite.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/rusqlite.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::execute", "Argument[0]", "sql-injection", "manual"] - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::execute_batch", "Argument[0]", "sql-injection", "manual"] @@ -12,9 +12,9 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get", "ReturnValue.Field[crate::result::Result::Ok(0)]", "database", "manual"] + - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get", "ReturnValue.Field[core::result::Result::Ok(0)]", "database", "manual"] - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get_unwrap", "ReturnValue", "database", "manual"] - - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get_ref", "ReturnValue.Field[crate::result::Result::Ok(0)]", "database", "manual"] + - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get_ref", "ReturnValue.Field[core::result::Result::Ok(0)]", "database", "manual"] - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get_ref_unwrap", "ReturnValue", "database", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/rustcrypto/rustcrypto.model.yml b/rust/ql/lib/codeql/rust/frameworks/rustcrypto/rustcrypto.model.yml index fe3fd67a8fd4..7b7a79644004 100644 --- a/rust/ql/lib/codeql/rust/frameworks/rustcrypto/rustcrypto.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/rustcrypto/rustcrypto.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/RustCrypto/traits:digest", "<_ as crate::digest::Digest>::new_with_prefix", "Argument[0]", "hasher-input", "manual"] - ["repo:https://github.com/RustCrypto/traits:digest", "<_ as crate::digest::Digest>::update", "Argument[0]", "hasher-input", "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 000000000000..1e21646f2cac --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml @@ -0,0 +1,14 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sourceModelDeprecated + data: + - ["repo:https://github.com/rustls/rustls:rustls", "::new", "ReturnValue.Field[core::result::Result::Ok(0)]", "remote", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: summaryModelDeprecated + data: + - ["repo:https://github.com/quininer/futures-rustls:futures-rustls", "::connect", "Argument[1]", "ReturnValue.Future.Field[core::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/Clone.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Clone.qll index 8d3c41c47082..954792ec61e4 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Clone.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Clone.qll @@ -6,13 +6,9 @@ private import codeql.rust.dataflow.FlowSummary /** A `clone` method. */ final class CloneCallable extends SummarizedCallable::Range { CloneCallable() { - // NOTE: The function target may not exist in the database, so we base this - // on method calls. - exists(MethodCallExpr c | - c.getIdentifier().getText() = "clone" and - c.getArgList().getNumberOfArgs() = 0 and - this = c.getResolvedCrateOrigin() + "::_::" + c.getResolvedPath() - ) + this.getParamList().hasSelfParam() and + this.getParamList().getNumberOfParams() = 0 and + this.getName().getText() = "clone" } final override predicate propagatesFlow( diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll index e7d9cac24e92..51a943190c53 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll @@ -49,3 +49,28 @@ 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" + } +} + +/** + * The [`String` struct][1]. + * + * [1]: https://doc.rust-lang.org/std/string/struct.String.html + */ +class StringStruct extends Struct { + StringStruct() { this.getCanonicalPath() = "alloc::string::String" } +} diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/env.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/env.model.yml index 8ca01fdc4224..83036991126e 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/env.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/env.model.yml @@ -1,14 +1,14 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["lang:std", "crate::env::args", "ReturnValue.Element", "commandargs", "manual"] - ["lang:std", "crate::env::args_os", "ReturnValue.Element", "commandargs", "manual"] - - ["lang:std", "crate::env::current_dir", "ReturnValue.Field[crate::result::Result::Ok(0)]", "commandargs", "manual"] - - ["lang:std", "crate::env::current_exe", "ReturnValue.Field[crate::result::Result::Ok(0)]", "commandargs", "manual"] - - ["lang:std", "crate::env::home_dir", "ReturnValue.Field[crate::option::Option::Some(0)]", "commandargs", "manual"] - - ["lang:std", "crate::env::var", "ReturnValue.Field[crate::result::Result::Ok(0)]", "environment", "manual"] - - ["lang:std", "crate::env::var_os", "ReturnValue.Field[crate::option::Option::Some(0)]", "environment", "manual"] + - ["lang:std", "crate::env::current_dir", "ReturnValue.Field[core::result::Result::Ok(0)]", "commandargs", "manual"] + - ["lang:std", "crate::env::current_exe", "ReturnValue.Field[core::result::Result::Ok(0)]", "commandargs", "manual"] + - ["lang:std", "crate::env::home_dir", "ReturnValue.Field[core::option::Option::Some(0)]", "commandargs", "manual"] + - ["lang:std", "crate::env::var", "ReturnValue.Field[core::result::Result::Ok(0)]", "environment", "manual"] + - ["lang:std", "crate::env::var_os", "ReturnValue.Field[core::option::Option::Some(0)]", "environment", "manual"] - ["lang:std", "crate::env::vars", "ReturnValue.Element", "environment", "manual"] - ["lang:std", "crate::env::vars_os", "ReturnValue.Element", "environment", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml index 436ff2002baa..ea1d93b2f7f7 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml @@ -1,18 +1,18 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - - ["lang:std", "crate::fs::read", "ReturnValue.Field[crate::result::Result::Ok(0)]", "file", "manual"] - - ["lang:std", "crate::fs::read_to_string", "ReturnValue.Field[crate::result::Result::Ok(0)]", "file", "manual"] - - ["lang:std", "crate::fs::read_link", "ReturnValue.Field[crate::result::Result::Ok(0)]", "file", "manual"] + - ["lang:std", "crate::fs::read", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["lang:std", "crate::fs::read_to_string", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["lang:std", "crate::fs::read_link", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["lang:std", "::path", "ReturnValue", "file", "manual"] - ["lang:std", "::file_name", "ReturnValue", "file", "manual"] - - ["lang:std", "::open", "ReturnValue.Field[crate::result::Result::Ok(0)]", "file", "manual"] - - ["lang:std", "::open_buffered", "ReturnValue.Field[crate::result::Result::Ok(0)]", "file", "manual"] + - ["lang:std", "::open", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["lang:std", "::open_buffered", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["lang:std", "crate::fs::copy", "Argument[0]", "path-injection", "manual"] - ["lang:std", "crate::fs::copy", "Argument[1]", "path-injection", "manual"] @@ -43,10 +43,10 @@ extensions: - ["lang:std", "::open_buffered", "Argument[0]", "path-injection", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["lang:std", "::from", "Argument[0]", "ReturnValue", "taint", "manual"] - ["lang:std", "::join", "Argument[self]", "ReturnValue", "taint", "manual"] - ["lang:std", "::join", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["lang:std", "::canonicalize", "Argument[self].OptionalStep[normalize-path]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["lang:std", "::canonicalize", "Argument[self].OptionalBarrier[normalize-path]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:std", "::canonicalize", "Argument[self].OptionalStep[normalize-path]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:std", "::canonicalize", "Argument[self].OptionalBarrier[normalize-path]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml index e6b75aeb8d32..fc86d2fb908f 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml @@ -1,15 +1,15 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["lang:std", "crate::io::stdio::stdin", "ReturnValue", "stdin", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["lang:std", "::new", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["lang:std", "::fill_buf", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:std", "::fill_buf", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["lang:std", "::buffer", "Argument[self]", "ReturnValue", "taint", "manual"] - ["lang:std", "::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["lang:std", "::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] @@ -36,4 +36,4 @@ extensions: - ["lang:std", "crate::io::Read::chain", "Argument[0]", "ReturnValue", "taint", "manual"] - ["lang:std", "crate::io::Read::take", "Argument[self]", "ReturnValue", "taint", "manual"] - ["lang:std", "::lock", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["lang:std", "::next", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:std", "::next", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml index 77c33b47b0c2..eea2f6726db7 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml @@ -1,13 +1,13 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: # Alloc - ["lang:alloc", "crate::alloc::dealloc", "Argument[0]", "pointer-invalidate", "manual"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: # Alloc - ["lang:alloc", "crate::alloc::alloc", "Argument[0]", "alloc-layout", "manual"] @@ -27,7 +27,7 @@ extensions: - ["lang:alloc", "::grow_zeroed", "Argument[2]", "alloc-layout", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: # Box - ["lang:alloc", "::pin", "Argument[0]", "ReturnValue.Reference", "value", "manual"] @@ -39,6 +39,6 @@ extensions: - ["lang:alloc", "::as_str", "Argument[self]", "ReturnValue", "value", "manual"] - ["lang:alloc", "::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - ["lang:alloc", "<_ as crate::string::ToString>::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["lang:alloc", "::parse", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:alloc", "::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["lang:alloc", "::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - ["lang:alloc", "::from", "Argument[0]", "ReturnValue", "value", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml index 69b2236e3ce8..00d78a7d8cb5 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml @@ -1,35 +1,35 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: # Iterator - - ["lang:core", "<[_]>::iter", "Argument[Self].Element", "ReturnValue.Element", "value", "manual"] - - ["lang:core", "<[_]>::iter_mut", "Argument[Self].Element", "ReturnValue.Element", "value", "manual"] - - ["lang:core", "<[_]>::into_iter", "Argument[Self].Element", "ReturnValue.Element", "value", "manual"] - - ["lang:core", "crate::iter::traits::iterator::Iterator::nth", "Argument[self].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "manual"] - - ["lang:core", "crate::iter::traits::iterator::Iterator::next", "Argument[self].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "manual"] + - ["lang:core", "<[_]>::iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] + - ["lang:core", "<[_]>::iter_mut", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] + - ["lang:core", "<[_]>::into_iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] + - ["lang:core", "crate::iter::traits::iterator::Iterator::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] + - ["lang:core", "crate::iter::traits::iterator::Iterator::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - ["lang:core", "crate::iter::traits::iterator::Iterator::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["lang:core", "crate::iter::traits::iterator::Iterator::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["lang:core", "crate::iter::traits::iterator::Iterator::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - - ["lang:core", "::nth", "Argument[self].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "manual"] - - ["lang:core", "::next", "Argument[self].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "manual"] + - ["lang:core", "::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] + - ["lang:core", "::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - ["lang:core", "::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["lang:core", "::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["lang:core", "::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] # Layout - - ["lang:core", "::from_size_align", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:core", "::from_size_align", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["lang:core", "::from_size_align_unchecked", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["lang:core", "::array", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["lang:core", "::repeat", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["lang:core", "::repeat", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["lang:core", "::repeat_packed", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["lang:core", "::repeat_packed", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["lang:core", "::extend", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["lang:core", "::extend", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["lang:core", "::extend_packed", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["lang:core", "::extend_packed", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["lang:core", "::align_to", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:core", "::array", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:core", "::repeat", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["lang:core", "::repeat", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["lang:core", "::repeat_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:core", "::repeat_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:core", "::extend", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["lang:core", "::extend", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["lang:core", "::extend_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:core", "::extend_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:core", "::align_to", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["lang:core", "::pad_to_align", "Argument[self]", "ReturnValue", "taint", "manual"] - ["lang:core", "::size", "Argument[self]", "ReturnValue", "taint", "manual"] # Pin @@ -51,11 +51,11 @@ extensions: - ["lang:core", "::as_str", "Argument[self]", "ReturnValue", "taint", "value"] - ["lang:core", "::as_bytes", "Argument[self]", "ReturnValue", "taint", "value"] - ["lang:core", "::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["lang:core", "::parse", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:core", "::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["lang:core", "::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: # Ptr - ["lang:core", "crate::ptr::drop_in_place", "Argument[0]", "pointer-invalidate", "manual"] @@ -64,7 +64,7 @@ extensions: - ["lang:core", "crate::ptr::null", "ReturnValue", "pointer-invalidate", "manual"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: # Ptr - ["lang:core", "crate::ptr::read", "Argument[0]", "pointer-access", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml index c088c11e7b6c..307b20b5b884 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml @@ -1,15 +1,15 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - - ["lang:std", "::connect", "ReturnValue.Field[crate::result::Result::Ok(0)]", "remote", "manual"] - - ["lang:std", "::connect_timeout", "ReturnValue.Field[crate::result::Result::Ok(0)]", "remote", "manual"] + - ["lang:std", "::connect", "ReturnValue.Field[core::result::Result::Ok(0)]", "remote", "manual"] + - ["lang:std", "::connect_timeout", "ReturnValue.Field[core::result::Result::Ok(0)]", "remote", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - - ["lang:std", "::try_clone", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] + - ["lang:std", "::try_clone", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["lang:std", "::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["lang:std", "::read_to_string", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0].Reference", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml index e057efe84aa5..7ad540227846 100644 --- a/rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/sfackler/rust-postgres:tokio-postgres", "::execute", "Argument[0]", "sql-injection", "manual"] - ["repo:https://github.com/sfackler/rust-postgres:tokio-postgres", "::batch_execute", "Argument[0]", "sql-injection", "manual"] @@ -18,7 +18,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/sfackler/rust-postgres:tokio-postgres", "::get", "ReturnValue", "database", "manual"] - - ["repo:https://github.com/sfackler/rust-postgres:tokio-postgres", "::try_get", "ReturnValue.Field[crate::result::Result::Ok(0)]", "database", "manual"] + - ["repo:https://github.com/sfackler/rust-postgres:tokio-postgres", "::try_get", "ReturnValue.Field[core::result::Result::Ok(0)]", "database", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio/fs.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio/fs.model.yml index caa108de2b59..108ca6e1a3ac 100644 --- a/rust/ql/lib/codeql/rust/frameworks/tokio/fs.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/tokio/fs.model.yml @@ -1,11 +1,11 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::fs::read::read", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "file", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::fs::read_to_string::read_to_string", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "file", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::fs::read_link::read_link", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "file", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::fs::read::read", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::fs::read_to_string::read_to_string", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::fs::read_link::read_link", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::path", "ReturnValue", "file", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::file_name", "ReturnValue", "file", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::open", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "file", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::open", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "file", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml index ecfcb1b241b2..35dcd597c0d6 100644 --- a/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml @@ -1,15 +1,15 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::stdin::stdin", "ReturnValue", "stdin", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_buf_read_ext::AsyncBufReadExt::fill_buf", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_buf_read_ext::AsyncBufReadExt::fill_buf", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::buffer", "Argument[self]", "ReturnValue", "taint", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_to_string", "Argument[self]", "Argument[0].Reference", "taint", "manual"] @@ -18,34 +18,34 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_buf_read_ext::AsyncBufReadExt::read_line", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_buf_read_ext::AsyncBufReadExt::read_until", "Argument[self]", "Argument[1].Reference", "taint", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_buf_read_ext::AsyncBufReadExt::split", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::next_segment", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::next_segment", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "taint", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_buf_read_ext::AsyncBufReadExt::lines", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::next_line", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::next_line", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "taint", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_buf", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u8", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u8_le", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u16", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u16_le", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u32", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u32_le", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u64", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u64_le", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u128", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u128_le", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i8", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i8_le", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i16", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i16_le", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i32", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i32_le", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i64", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i64_le", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i128", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i128_le", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_f32", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_f32_le", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_f64", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_f64_le", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u8", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u8_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u16", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u16_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u32", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u32_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u64", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u64_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u128", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_u128_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i8", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i8_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i16", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i16_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i32", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i32_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i64", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i64_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i128", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_i128_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_f32", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_f32_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_f64", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read_f64_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::chain", "Argument[self]", "ReturnValue", "taint", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::chain", "Argument[0]", "ReturnValue", "taint", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::take", "Argument[self]", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio/net.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio/net.model.yml index 8c9d278818bb..64926df979e0 100644 --- a/rust/ql/lib/codeql/rust/frameworks/tokio/net.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/tokio/net.model.yml @@ -1,12 +1,12 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::connect", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "remote", "manual"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::connect", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::peek", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/url.model.yml b/rust/ql/lib/codeql/rust/frameworks/url.model.yml index 31a7c79011ab..496b235c9306 100644 --- a/rust/ql/lib/codeql/rust/frameworks/url.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/url.model.yml @@ -2,6 +2,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - - ["repo:https://github.com/servo/rust-url:url", "::parse", "Argument[0].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"] \ No newline at end of file + - ["repo:https://github.com/servo/rust-url:url", "::parse", "Argument[0].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/internal/CachedStages.qll b/rust/ql/lib/codeql/rust/internal/CachedStages.qll index 2a7447ed7a3f..0c2099d4dcde 100644 --- a/rust/ql/lib/codeql/rust/internal/CachedStages.qll +++ b/rust/ql/lib/codeql/rust/internal/CachedStages.qll @@ -186,7 +186,9 @@ module Stages { predicate backref() { 1 = 1 or - exists(Node n) + exists(any(Node n).toString()) + or + exists(any(Node n).getLocation()) or RustTaintTracking::defaultAdditionalTaintStep(_, _, _) or diff --git a/rust/ql/lib/codeql/rust/internal/Definitions.qll b/rust/ql/lib/codeql/rust/internal/Definitions.qll index 0603146c9af2..c03ece9d56de 100644 --- a/rust/ql/lib/codeql/rust/internal/Definitions.qll +++ b/rust/ql/lib/codeql/rust/internal/Definitions.qll @@ -135,12 +135,34 @@ private class PositionalFormatArgumentUse extends Use instanceof PositionalForma override string getUseType() { result = "format argument" } } -private class PathUse extends Use instanceof Path { - override Definition getDefinition() { result.asItemNode() = resolvePath(this) } +private class PathUse extends Use instanceof PathSegment { + private Path path; + + PathUse() { this = path.getSegment() } + + private CallExpr getCall() { result.getFunction().(PathExpr).getPath() = path } + + override Definition getDefinition() { + // Our call resolution logic may disambiguate some calls, so only use those + result.asItemNode() = this.getCall().getStaticTarget() + or + not exists(this.getCall()) and + result.asItemNode() = resolvePath(path) + } override string getUseType() { result = "path" } } +private class MethodUse extends Use instanceof NameRef { + private MethodCallExpr mc; + + MethodUse() { this = mc.getIdentifier() } + + override Definition getDefinition() { result.asItemNode() = mc.getStaticTarget() } + + override string getUseType() { result = "method" } +} + private class FileUse extends Use instanceof Name { override Definition getDefinition() { exists(Module m | diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index d23679ee81be..520b924aa32d 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) } /** @@ -178,7 +194,7 @@ abstract class ItemNode extends Locatable { Stages::PathResolutionStage::ref() and result = this.getASuccessorRec(name) or - preludeEdge(this, name, result) and not declares(this, _, name) + preludeEdge(this, name, result) or this instanceof SourceFile and builtin(name, result) @@ -189,7 +205,11 @@ abstract class ItemNode extends Locatable { else result = this.getImmediateParentModule().getImmediateParentModule() or name = "self" and - if this instanceof Module or this instanceof Enum or this instanceof Struct + if + this instanceof Module or + this instanceof Enum or + this instanceof Struct or + this instanceof Crate then result = this else result = this.getImmediateParentModule() or @@ -353,18 +373,35 @@ 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 { +abstract private class AssocItemNode extends ItemNode instanceof AssocItem { /** Holds if this associated item has an implementation. */ abstract predicate hasImplementation(); @@ -392,14 +429,7 @@ abstract private class AssocItemNode extends ItemNode, AssocItem { private class ConstItemNode extends AssocItemNode instanceof Const { override string getName() { result = Const.super.getName().getText() } - override predicate hasImplementation() { - super.hasBody() - or - // for trait items from library code, we do not currently know if they - // have default implementations or not, so we assume they do - not this.fromSource() and - this = any(TraitItemNode t).getAnAssocItem() - } + override predicate hasImplementation() { Const.super.hasImplementation() } override Namespace getNamespace() { result.isValue() } @@ -475,14 +505,7 @@ private class VariantItemNode extends ItemNode instanceof Variant { class FunctionItemNode extends AssocItemNode instanceof Function { override string getName() { result = Function.super.getName().getText() } - override predicate hasImplementation() { - super.hasBody() - or - // for trait items from library code, we do not currently know if they - // have default implementations or not, so we assume they do - not this.fromSource() and - this = any(TraitItemNode t).getAnAssocItem() - } + override predicate hasImplementation() { Function.super.hasImplementation() } override Namespace getNamespace() { result.isValue() } @@ -517,6 +540,13 @@ abstract class ImplOrTraitItemNode extends ItemNode { /** Gets an associated item belonging to this trait or `impl` block. */ abstract AssocItemNode getAnAssocItem(); + /** Gets the associated item named `name` belonging to this trait or `impl` block. */ + pragma[nomagic] + AssocItemNode getAssocItem(string name) { + result = this.getAnAssocItem() and + result.getName() = name + } + /** Holds if this trait or `impl` block declares an associated item named `name`. */ pragma[nomagic] predicate hasAssocItem(string name) { name = this.getAnAssocItem().getName() } @@ -577,6 +607,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 +624,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 +651,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 +848,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 +988,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 +1003,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 +1091,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 +1128,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 access to `std` + file instanceof BuiltinSourceFile and + dep.getName() = name and + name = "std" } private predicate useTreeDeclares(UseTree tree, string name) { @@ -1404,6 +1477,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 +1503,10 @@ 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) { + not declares(f, _, name) and exists(Crate stdOrCore, ModuleLikeNode mod, ModuleItemNode prelude, ModuleItemNode rust | - f = any(Crate c0 | stdOrCore = c0.getDependency(_) or stdOrCore = c0).getASourceFile() and stdOrCore.getName() = ["std", "core"] and mod = stdOrCore.getSourceFile() and prelude = mod.getASuccessorRec("prelude") and @@ -1426,12 +1516,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) ) } @@ -1441,8 +1529,8 @@ private module Debug { private Locatable getRelevantLocatable() { exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | result.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and - filepath.matches("%/test.rs") and - startline = 74 + filepath.matches("%/main.rs") and + startline = 52 ) } diff --git a/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll b/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll index 2175dea37133..9b7131b7a7ff 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolutionConsistency.qll @@ -17,11 +17,13 @@ query predicate multiplePathResolutions(Path p, ItemNode i) { not use.isGlob() and not use.hasUseTreeList() ).getPath() and + // avoid overlap with `multipleCallTargets` below + not p = any(CallExpr ce).getFunction().(PathExpr).getPath() and strictcount(resolvePath(p)) > 1 } /** Holds if `call` has multiple static call targets including `target`. */ -query predicate multipleMethodCallTargets(MethodCallExpr call, Callable target) { +query predicate multipleCallTargets(CallExprBase call, Callable target) { target = call.getStaticTarget() and strictcount(call.getStaticTarget()) > 1 } @@ -51,8 +53,8 @@ int getPathResolutionInconsistencyCounts(string type) { type = "Multiple path resolutions" and result = count(Path p | multiplePathResolutions(p, _) | p) or - type = "Multiple static method call targets" and - result = count(CallExprBase call | multipleMethodCallTargets(call, _) | call) + type = "Multiple static call targets" and + result = count(CallExprBase call | multipleCallTargets(call, _) | call) or type = "Multiple record fields" and result = count(FieldExpr fe | multipleStructFields(fe, _) | fe) diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index db7938b3cf1b..d675287f7ccc 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. @@ -38,6 +42,9 @@ abstract class Type extends TType { /** Gets the `i`th type parameter of this type, if any. */ abstract TypeParameter getTypeParameter(int i); + /** Gets the default type for the `i`th type parameter, if any. */ + TypeMention getTypeParameterDefault(int i) { none() } + /** Gets a type parameter of this type. */ final TypeParameter getATypeParameter() { result = this.getTypeParameter(_) } @@ -83,6 +90,10 @@ class StructType extends StructOrEnumType, TStruct { result = TTypeParamTypeParameter(struct.getGenericParamList().getTypeParam(i)) } + override TypeMention getTypeParameterDefault(int i) { + result = struct.getGenericParamList().getTypeParam(i).getDefaultType() + } + override string toString() { result = struct.getName().getText() } override Location getLocation() { result = struct.getLocation() } @@ -104,6 +115,10 @@ class EnumType extends StructOrEnumType, TEnum { result = TTypeParamTypeParameter(enum.getGenericParamList().getTypeParam(i)) } + override TypeMention getTypeParameterDefault(int i) { + result = enum.getGenericParamList().getTypeParam(i).getDefaultType() + } + override string toString() { result = enum.getName().getText() } override Location getLocation() { result = enum.getLocation() } @@ -115,6 +130,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() } @@ -126,6 +144,10 @@ class TraitType extends Type, TTrait { any(AssociatedTypeTypeParameter param | param.getTrait() = trait and param.getIndex() = i) } + override TypeMention getTypeParameterDefault(int i) { + result = trait.getGenericParamList().getTypeParam(i).getDefaultType() + } + override string toString() { result = trait.toString() } override Location getLocation() { result = trait.getLocation() } @@ -145,7 +167,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 +199,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 +278,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 +348,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 +362,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 +388,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 +454,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 8399bde8aa80..1e1e411d5d83 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1,5 +1,6 @@ /** Provides functionality for inferring types. */ +private import codeql.util.Boolean private import rust private import PathResolution private import Type @@ -7,7 +8,8 @@ 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 +private import codeql.rust.elements.Call class Type = T::Type; @@ -80,15 +82,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 +128,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 +174,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 +252,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() @@ -243,10 +265,35 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat n1 = be.getLhs() and n2 = be.getRhs() ) + or + n1 = n2.(MacroExpr).getMacroCall().getMacroCallExpansion() + ) + or + n1 = n2.(RefExpr).getExpr() and + prefix1.isEmpty() and + prefix2 = TypePath::singleton(TRefTypeParameter()) + 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() + ) ) or - n1 = n2.(DerefExpr).getExpr() and - prefix1 = TypePath::singleton(TRefTypeParameter()) and + // an array list expression (`[1, 2, 3]`) has the type of the first (any) element + n1.(ArrayListExpr).getExpr(_) = n2 and + prefix1 = TypePath::singleton(TArrayTypeParameter()) and + prefix2.isEmpty() + or + // an array repeat expression (`[1; 3]`) has the type of the repeat operand + n1.(ArrayRepeatExpr).getRepeatOperand() = n2 and + prefix1 = TypePath::singleton(TArrayTypeParameter()) and prefix2.isEmpty() } @@ -459,28 +506,23 @@ private Type inferPathExprType(PathExpr pe, TypePath path) { * like `foo::bar(baz)` and `foo.bar(baz)`. */ private module CallExprBaseMatchingInput implements MatchingInputSig { - private predicate paramPos(ParamList pl, Param p, int pos, boolean inMethod) { - p = pl.getParam(pos) and - if pl.hasSelfParam() then inMethod = true else inMethod = false - } + private predicate paramPos(ParamList pl, Param p, int pos) { p = pl.getParam(pos) } private newtype TDeclarationPosition = - TSelfDeclarationPosition() or - TPositionalDeclarationPosition(int pos, boolean inMethod) { paramPos(_, _, pos, inMethod) } or + TArgumentDeclarationPosition(ArgumentPosition pos) or TReturnDeclarationPosition() class DeclarationPosition extends TDeclarationPosition { - predicate isSelf() { this = TSelfDeclarationPosition() } + predicate isSelf() { this.asArgumentPosition().isSelf() } - int asPosition(boolean inMethod) { this = TPositionalDeclarationPosition(result, inMethod) } + int asPosition() { result = this.asArgumentPosition().asPosition() } + + ArgumentPosition asArgumentPosition() { this = TArgumentDeclarationPosition(result) } predicate isReturn() { this = TReturnDeclarationPosition() } string toString() { - this.isSelf() and - result = "self" - or - result = this.asPosition(_).toString() + result = this.asArgumentPosition().toString() or this.isReturn() and result = "(return)" @@ -513,7 +555,7 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { override Type getParameterType(DeclarationPosition dpos, TypePath path) { exists(int pos | result = this.getTupleField(pos).getTypeRepr().(TypeMention).resolveTypeAt(path) and - dpos = TPositionalDeclarationPosition(pos, false) + pos = dpos.asPosition() ) } @@ -534,9 +576,9 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { } override Type getParameterType(DeclarationPosition dpos, TypePath path) { - exists(int p | - result = this.getTupleField(p).getTypeRepr().(TypeMention).resolveTypeAt(path) and - dpos = TPositionalDeclarationPosition(p, false) + exists(int pos | + result = this.getTupleField(pos).getTypeRepr().(TypeMention).resolveTypeAt(path) and + pos = dpos.asPosition() ) } @@ -563,12 +605,15 @@ 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) { - exists(Param p, int i, boolean inMethod | - paramPos(this.getParamList(), p, i, inMethod) and - dpos = TPositionalDeclarationPosition(i, inMethod) and + exists(Param p, int i | + paramPos(this.getParamList(), p, i) and + i = dpos.asPosition() and result = inferAnnotatedType(p.getPat(), path) ) or @@ -582,36 +627,40 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { ) } - override Type getReturnType(TypePath path) { + private Type resolveRetType(TypePath path) { result = this.getRetType().getTypeRepr().(TypeMention).resolveTypeAt(path) } - } - private predicate argPos(CallExprBase call, Expr e, int pos, boolean isMethodCall) { - exists(ArgList al | - e = al.getArg(pos) and - call.getArgList() = al and - if call instanceof MethodCallExpr then isMethodCall = true else isMethodCall = false - ) + 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 newtype TAccessPosition = - TSelfAccessPosition() or - TPositionalAccessPosition(int pos, boolean isMethodCall) { argPos(_, _, pos, isMethodCall) } or + TArgumentAccessPosition(ArgumentPosition pos, Boolean borrowed, Boolean certain) or TReturnAccessPosition() class AccessPosition extends TAccessPosition { - predicate isSelf() { this = TSelfAccessPosition() } + ArgumentPosition getArgumentPosition() { this = TArgumentAccessPosition(result, _, _) } - int asPosition(boolean isMethodCall) { this = TPositionalAccessPosition(result, isMethodCall) } + predicate isBorrowed(boolean certain) { this = TArgumentAccessPosition(_, true, certain) } predicate isReturn() { this = TReturnAccessPosition() } string toString() { - this.isSelf() and - result = "self" - or - result = this.asPosition(_).toString() + exists(ArgumentPosition pos, boolean borrowed, boolean certain | + this = TArgumentAccessPosition(pos, borrowed, certain) and + result = pos + ":" + borrowed + ":" + certain + ) or this.isReturn() and result = "(return)" @@ -620,95 +669,46 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { private import codeql.rust.elements.internal.CallExprImpl::Impl as CallExprImpl - abstract class Access extends Expr { - abstract Type getTypeArgument(TypeArgumentPosition apos, TypePath path); - - abstract AstNode getNodeAt(AccessPosition apos); - - abstract Type getInferredType(AccessPosition apos, TypePath path); - - abstract Declaration getTarget(); - } - - private class CallExprBaseAccess extends Access instanceof CallExprBase { - private TypeMention getMethodTypeArg(int i) { - result = this.(MethodCallExpr).getGenericArgList().getTypeArg(i) - } - - override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { + final class Access extends Call { + Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { exists(TypeMention arg | result = arg.resolveTypeAt(path) | arg = getExplicitTypeArgMention(CallExprImpl::getFunctionPath(this), apos.asTypeParam()) or - arg = this.getMethodTypeArg(apos.asMethodTypeArgumentPosition()) + arg = + this.(MethodCallExpr).getGenericArgList().getTypeArg(apos.asMethodTypeArgumentPosition()) ) } - override AstNode getNodeAt(AccessPosition apos) { - exists(int p, boolean isMethodCall | - argPos(this, result, p, isMethodCall) and - apos = TPositionalAccessPosition(p, isMethodCall) + AstNode getNodeAt(AccessPosition apos) { + exists(ArgumentPosition pos, boolean borrowed, boolean certain | + apos = TArgumentAccessPosition(pos, borrowed, certain) and + result = this.getArgument(pos) + | + if this.implicitBorrowAt(pos, _) + then borrowed = true and this.implicitBorrowAt(pos, certain) + else ( + borrowed = false and certain = true + ) ) or - result = this.(MethodCallExpr).getReceiver() and - apos = TSelfAccessPosition() - or - result = this and - apos = TReturnAccessPosition() + result = this and apos.isReturn() } - override Type getInferredType(AccessPosition apos, TypePath path) { + Type getInferredType(AccessPosition apos, TypePath path) { result = inferType(this.getNodeAt(apos), path) } - override Declaration getTarget() { - result = CallExprImpl::getResolvedFunction(this) - or - result = inferMethodCallTarget(this) // mutual recursion; resolving method calls requires resolving types and vice versa - } - } - - private class OperationAccess extends Access instanceof Operation { - OperationAccess() { super.isOverloaded(_, _) } - - override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - // The syntax for operators does not allow type arguments. - none() - } - - override AstNode getNodeAt(AccessPosition apos) { - result = super.getOperand(0) and apos = TSelfAccessPosition() - or - result = super.getOperand(1) and apos = TPositionalAccessPosition(0, true) + Declaration getTarget() { + result = resolveMethodCallTarget(this) // mutual recursion; resolving method calls requires resolving types and vice versa or - result = this and apos = TReturnAccessPosition() - } - - override Type getInferredType(AccessPosition apos, TypePath path) { - result = inferType(this.getNodeAt(apos), path) - } - - override Declaration getTarget() { - result = inferMethodCallTarget(this) // mutual recursion; resolving method calls requires resolving types and vice versa + result = CallExprImpl::getResolvedFunction(this) } } predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { - apos.isSelf() and - dpos.isSelf() + apos.getArgumentPosition() = dpos.asArgumentPosition() or - exists(int pos, boolean isMethodCall | pos = apos.asPosition(isMethodCall) | - pos = 0 and - isMethodCall = false and - dpos.isSelf() - or - isMethodCall = false and - pos = dpos.asPosition(true) + 1 - or - pos = dpos.asPosition(isMethodCall) - ) - or - apos.isReturn() and - dpos.isReturn() + apos.isReturn() and dpos.isReturn() } bindingset[apos, target, path, t] @@ -716,48 +716,54 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { predicate adjustAccessType( AccessPosition apos, Declaration target, TypePath path, Type t, TypePath pathAdj, Type tAdj ) { - if apos.isSelf() - then - exists(Type selfParamType | - selfParamType = target.getParameterType(TSelfDeclarationPosition(), TypePath::nil()) - | - if selfParamType = TRefType() + apos.isBorrowed(true) and + pathAdj = TypePath::cons(TRefTypeParameter(), path) and + tAdj = t + or + apos.isBorrowed(false) and + exists(Type selfParamType | + selfParamType = + target + .getParameterType(TArgumentDeclarationPosition(apos.getArgumentPosition()), + TypePath::nil()) + | + if selfParamType = TRefType() + then + if t != TRefType() and path.isEmpty() then - if t != TRefType() and path.isEmpty() + // adjust for implicit borrow + pathAdj.isEmpty() and + tAdj = TRefType() + or + // adjust for implicit borrow + pathAdj = TypePath::singleton(TRefTypeParameter()) and + tAdj = t + else + if path.isCons(TRefTypeParameter(), _) then + pathAdj = path and + tAdj = t + else ( // adjust for implicit borrow - pathAdj.isEmpty() and - tAdj = TRefType() - or - // adjust for implicit borrow - pathAdj = TypePath::singleton(TRefTypeParameter()) and + not (t = TRefType() and path.isEmpty()) and + pathAdj = TypePath::cons(TRefTypeParameter(), path) and tAdj = t - else - if path.isCons(TRefTypeParameter(), _) - then - pathAdj = path and - tAdj = t - else ( - // adjust for implicit borrow - not (t = TRefType() and path.isEmpty()) and - pathAdj = TypePath::cons(TRefTypeParameter(), path) and - tAdj = t - ) - else ( - // adjust for implicit deref - path.isCons(TRefTypeParameter(), pathAdj) and - tAdj = t - or - not path.isCons(TRefTypeParameter(), _) and - not (t = TRefType() and path.isEmpty()) and - pathAdj = path and - tAdj = t - ) + ) + else ( + // adjust for implicit deref + path.isCons(TRefTypeParameter(), pathAdj) and + tAdj = t + or + not path.isCons(TRefTypeParameter(), _) and + not (t = TRefType() and path.isEmpty()) and + pathAdj = path and + tAdj = t ) - else ( - pathAdj = path and - tAdj = t ) + or + not apos.isBorrowed(_) and + pathAdj = path and + tAdj = t } } @@ -776,28 +782,48 @@ private Type inferCallExprBaseType(AstNode n, TypePath path) { n = a.getNodeAt(apos) and result = CallExprBaseMatching::inferAccessType(a, apos, path0) | - if apos.isSelf() - then - exists(Type receiverType | receiverType = inferType(n) | - if receiverType = TRefType() - then - path = path0 and - path0.isCons(TRefTypeParameter(), _) - or - // adjust for implicit deref - not path0.isCons(TRefTypeParameter(), _) and - not (path0.isEmpty() and result = TRefType()) and - path = TypePath::cons(TRefTypeParameter(), path0) - else ( - not path0.isCons(TRefTypeParameter(), _) and - not (path0.isEmpty() and result = TRefType()) and - path = path0 - or - // adjust for implicit borrow - path0.isCons(TRefTypeParameter(), path) + if + apos.isBorrowed(true) + or + // The desugaring of the unary `*e` is `*Deref::deref(&e)` and the + // desugaring of `a[b]` is `*Index::index(&a, b)`. To handle the deref + // expression after the call we must strip a `&` from the type at the + // return position. + apos.isReturn() and + (a instanceof DerefExpr or a instanceof IndexExpr) + then path0.isCons(TRefTypeParameter(), path) + else + if apos.isBorrowed(false) + then + exists(Type argType | argType = inferType(n) | + if argType = TRefType() + then + path = path0 and + path0.isCons(TRefTypeParameter(), _) + or + // adjust for implicit deref + not path0.isCons(TRefTypeParameter(), _) and + not (path0.isEmpty() and result = TRefType()) and + path = TypePath::cons(TRefTypeParameter(), path0) + else ( + not ( + argType.(StructType).asItemNode() instanceof StringStruct and + result.(StructType).asItemNode() instanceof Builtins::Str + ) and + ( + not path0.isCons(TRefTypeParameter(), _) and + not (path0.isEmpty() and result = TRefType()) and + path = path0 + or + // adjust for implicit borrow + path0.isCons(TRefTypeParameter(), path) + ) + ) ) + else ( + not apos.isBorrowed(_) and + path = path0 ) - else path = path0 ) } @@ -932,43 +958,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,95 +1002,163 @@ private StructType inferLiteralType(LiteralExpr le) { ) } -private module MethodCall { - /** An expression that calls a method. */ - abstract private class MethodCallImpl extends Expr { - /** Gets the name of the method targeted. */ - abstract string getMethodName(); - - /** Gets the number of arguments _excluding_ the `self` argument. */ - abstract int getArity(); - - /** Gets the trait targeted by this method call, if any. */ - Trait getTrait() { none() } +pragma[nomagic] +private TraitType getFutureTraitType() { result.getTrait() instanceof FutureTrait } - /** Gets the type of the receiver of the method call at `path`. */ - abstract Type getTypeAt(TypePath path); - } +pragma[nomagic] +private AssociatedTypeTypeParameter getFutureOutputTypeParameter() { + result.getTypeAlias() = any(FutureTrait ft).getOutputType() +} - final class MethodCall = MethodCallImpl; +pragma[nomagic] +private TraitType inferAsyncBlockExprRootType(AsyncBlockExpr abe) { + // `typeEquality` handles the non-root case + exists(abe) and + result = getFutureTraitType() +} - private class MethodCallExprMethodCall extends MethodCallImpl instanceof MethodCallExpr { - override string getMethodName() { result = super.getIdentifier().getText() } +final class AwaitTarget extends Expr { + AwaitTarget() { this = any(AwaitExpr ae).getExpr() } - override int getArity() { result = super.getArgList().getNumberOfArgs() } + Type getTypeAt(TypePath path) { result = inferType(this, path) } +} - pragma[nomagic] - override Type getTypeAt(TypePath path) { - exists(TypePath path0 | result = inferType(super.getReceiver(), path0) | - path0.isCons(TRefTypeParameter(), path) - or - not path0.isCons(TRefTypeParameter(), _) and - not (path0.isEmpty() and result = TRefType()) and - path = path0 - ) - } +private module AwaitSatisfiesConstraintInput implements SatisfiesConstraintInputSig { + predicate relevantConstraint(AwaitTarget term, Type constraint) { + exists(term) and + constraint.(TraitType).getTrait() instanceof FutureTrait } +} - private class CallExprMethodCall extends MethodCallImpl instanceof CallExpr { - TraitItemNode trait; - string methodName; - Expr receiver; - - CallExprMethodCall() { - receiver = this.getArgList().getArg(0) and - exists(Path path, Function f | - path = this.getFunction().(PathExpr).getPath() and - f = resolvePath(path) and - f.getParamList().hasSelfParam() and - trait = resolvePath(path.getQualifier()) and - trait.getAnAssocItem() = f and - path.getSegment().getIdentifier().getText() = methodName - ) - } - - override string getMethodName() { result = methodName } - - override int getArity() { result = super.getArgList().getNumberOfArgs() - 1 } +pragma[nomagic] +private Type inferAwaitExprType(AstNode n, TypePath path) { + exists(TypePath exprPath | + SatisfiesConstraint::satisfiesConstraintType(n.(AwaitExpr) + .getExpr(), _, exprPath, result) and + exprPath.isCons(getFutureOutputTypeParameter(), path) + ) +} - override Trait getTrait() { result = trait } +private class Vec extends Struct { + Vec() { this.getCanonicalPath() = "alloc::vec::Vec" } - pragma[nomagic] - override Type getTypeAt(TypePath path) { result = inferType(receiver, path) } + TypeParamTypeParameter getElementTypeParameter() { + result.getTypeParam() = this.getGenericParamList().getTypeParam(0) } +} - private class OperationMethodCall extends MethodCallImpl instanceof Operation { - TraitItemNode trait; - string methodName; - - OperationMethodCall() { super.isOverloaded(trait, methodName) } +/** + * Gets the root type of the array expression `ae`. + */ +pragma[nomagic] +private Type inferArrayExprType(ArrayExpr ae) { exists(ae) and result = TArrayType() } - override string getMethodName() { result = methodName } +/** + * 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: Method resolution to the `std::ops::Index` trait can handle the + // `Index` instances for slices and arrays. + 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) + ) + ) +} - override int getArity() { result = this.(Operation).getNumberOfOperands() - 1 } +pragma[nomagic] +private Type inferForLoopExprType(AstNode n, TypePath path) { + // type of iterable -> type of pattern (loop variable) + exists(ForExpr fe, Type iterableType, TypePath iterablePath | + n = fe.getPat() and + iterableType = inferType(fe.getIterable(), iterablePath) and + result = iterableType and + ( + iterablePath.isCons(any(Vec v).getElementTypeParameter(), path) + or + iterablePath.isCons(any(ArrayTypeParameter tp), path) + or + iterablePath + .stripPrefix(TypePath::cons(TRefTypeParameter(), + TypePath::singleton(any(SliceTypeParameter tp)))) = path + // TODO: iterables (general case for containers, ranges etc) + ) + ) +} - override Trait getTrait() { result = trait } +final class MethodCall extends Call { + MethodCall() { + exists(this.getReceiver()) and + // We want the method calls that don't have a path to a concrete method in + // an impl block. We need to exclude calls like `MyType::my_method(..)`. + (this instanceof CallExpr implies exists(this.getTrait())) + } - pragma[nomagic] - override Type getTypeAt(TypePath path) { - result = inferType(this.(BinaryExpr).getLhs(), path) - or - result = inferType(this.(PrefixExpr).getExpr(), path) - } + /** Gets the type of the receiver of the method call at `path`. */ + Type getTypeAt(TypePath path) { + if this.receiverImplicitlyBorrowed() + then + exists(TypePath path0, Type t0 | + t0 = inferType(super.getReceiver(), path0) and + ( + path0.isCons(TRefTypeParameter(), path) + or + ( + not path0.isCons(TRefTypeParameter(), _) and + not (path0.isEmpty() and result = TRefType()) + or + // Ideally we should find all methods on reference types, but as + // that currently causes a blowup we limit this to the `deref` + // method in order to make dereferencing work. + this.getMethodName() = "deref" + ) and + path = path0 + ) + | + result = t0 + or + // We do not yet model the `Deref` trait, so we hard-code the fact that + // `String` dereferences to `str` here. This allows us e.g. to resolve + // `x.parse::()` to the function `::parse` when `x` has + // type `String`. + // + // See also https://doc.rust-lang.org/reference/expressions/method-call-expr.html#r-expr.method.autoref-deref + path.isEmpty() and + t0.(StructType).asItemNode() instanceof StringStruct and + result.(StructType).asItemNode() instanceof Builtins::Str + ) + else result = inferType(super.getReceiver(), path) } } -import MethodCall - /** * Holds if a method for `type` with the name `name` and the arity `arity` * exists in `impl`. */ +pragma[nomagic] private predicate methodCandidate(Type type, string name, int arity, Impl impl) { type = impl.getSelfTy().(TypeMention).resolveType() and exists(Function f | @@ -1118,13 +1178,18 @@ private predicate methodCandidateTrait(Type type, Trait trait, string name, int methodCandidate(type, name, arity, impl) } +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.getNumberOfArguments() +} + private module IsInstantiationOfInput implements IsInstantiationOfInputSig { 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,27 +1216,173 @@ 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`. */ -private Function getMethodFromImpl(MethodCall mc) { - exists(Impl impl | - IsInstantiationOf::isInstantiationOf(mc, impl, _) and - result = getMethodSuccessor(impl, mc.getMethodName()) +bindingset[t1, t2] +private predicate typeMentionEqual(TypeMention t1, TypeMention t2) { + forex(TypePath path, Type type | t1.resolveTypeAt(path) = type | t2.resolveTypeAt(path) = type) +} + +pragma[nomagic] +private predicate implSiblingCandidate( + Impl impl, TraitItemNode trait, Type rootType, TypeMention selfTy +) { + trait = impl.(ImplItemNode).resolveTraitTy() and + // If `impl` has an expansion from a macro attribute, then it's been + // superseded by the output of the expansion (and usually the expansion + // contains the same `impl` block so considering both would give spurious + // siblings). + not exists(impl.getAttributeMacroExpansion()) and + // We use this for resolving methods, so exclude traits that do not have methods. + exists(Function f | f = trait.getASuccessor(_) and f.getParamList().hasSelfParam()) and + selfTy = impl.getSelfTy() and + rootType = selfTy.resolveType() +} + +/** + * Holds if `impl1` and `impl2` are a sibling implementations of `trait`. We + * consider implementations to be siblings if they implement the same trait for + * the same type. In that case `Self` is the same type in both implementations, + * and method calls to the implementations cannot be resolved unambiguously + * based only on the receiver type. + */ +pragma[inline] +private predicate implSiblings(TraitItemNode trait, Impl impl1, Impl impl2) { + exists(Type rootType, TypeMention selfTy1, TypeMention selfTy2 | + impl1 != impl2 and + implSiblingCandidate(impl1, trait, rootType, selfTy1) and + implSiblingCandidate(impl2, trait, rootType, selfTy2) and + // In principle the second conjunct below should be superflous, but we still + // have ill-formed type mentions for types that we don't understand. For + // those checking both directions restricts further. Note also that we check + // syntactic equality, whereas equality up to renaming would be more + // correct. + typeMentionEqual(selfTy1, selfTy2) and + typeMentionEqual(selfTy2, selfTy1) ) } /** - * Gets a method that the method call `mc` resolves to based on type inference, - * if any. + * Holds if `impl` is an implementation of `trait` and if another implementation + * exists for the same type. */ -private Function inferMethodCallTarget(MethodCall mc) { - // The method comes from an `impl` block targeting the type of the receiver. - result = getMethodFromImpl(mc) - or - // 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()) +pragma[nomagic] +private predicate implHasSibling(Impl impl, Trait trait) { implSiblings(trait, impl, _) } + +/** + * Holds if a type parameter of `trait` occurs in the method with the name + * `methodName` at the `pos`th parameter at `path`. + */ +bindingset[trait] +pragma[inline_late] +private predicate traitTypeParameterOccurrence( + TraitItemNode trait, string methodName, int pos, TypePath path +) { + exists(Function f | f = trait.getASuccessor(methodName) | + f.getParam(pos).getTypeRepr().(TypeMention).resolveTypeAt(path) = + trait.(TraitTypeAbstraction).getATypeParameter() + ) +} + +bindingset[f, pos, path] +pragma[inline_late] +private predicate methodTypeAtPath(Function f, int pos, TypePath path, Type type) { + f.getParam(pos).getTypeRepr().(TypeMention).resolveTypeAt(path) = type +} + +/** + * Holds if resolving the method `f` in `impl` with the name `methodName` + * requires inspecting the types of applied _arguments_ in order to determine + * whether it is the correct resolution. + */ +pragma[nomagic] +private predicate methodResolutionDependsOnArgument( + Impl impl, string methodName, Function f, int pos, TypePath path, Type type +) { + /* + * As seen in the example below, when an implementation has a sibling for a + * trait we find occurrences of a type parameter of the trait in a method + * signature in the trait. We then find the type given in the implementation + * at the same position, which is a position that might disambiguate the + * method from its siblings. + * + * ```rust + * trait MyTrait { + * fn method(&self, value: Foo) -> Self; + * // ^^^^^^^^^^^^^ `pos` = 0 + * // ^ `path` = "T" + * } + * impl MyAdd for i64 { + * fn method(&self, value: Foo) -> Self { ... } + * // ^^^ `type` = i64 + * } + * ``` + * + * Note that we only check the root type symbol at the position. If the type + * at that position is a type constructor (for instance `Vec<..>`) then + * inspecting the entire type tree could be necessary to disambiguate the + * method. In that case we will still resolve several methods. + */ + + exists(TraitItemNode trait | + implHasSibling(impl, trait) and + traitTypeParameterOccurrence(trait, methodName, pos, path) and + methodTypeAtPath(getMethodSuccessor(impl, methodName), pos, path, type) and + f = getMethodSuccessor(impl, methodName) + ) +} + +/** + * Holds if the method call `mc` has no inherent target, i.e., it does not + * resolve to a method in an `impl` block for the type of the receiver. + */ +pragma[nomagic] +private predicate methodCallHasNoInherentTarget(MethodCall mc) { + exists(Type rootType, string name, int arity | + isMethodCall(mc, rootType, name, arity) and + forall(Impl impl | + methodCandidate(rootType, name, arity, impl) and + not impl.hasTrait() + | + IsInstantiationOf::isNotInstantiationOf(mc, impl, _) + ) + ) +} + +pragma[nomagic] +private predicate methodCallHasImplCandidate(MethodCall mc, Impl impl) { + IsInstantiationOf::isInstantiationOf(mc, impl, _) and + if impl.hasTrait() and not exists(mc.getTrait()) + then + // inherent methods take precedence over trait methods, so only allow + // trait methods when there are no matching inherent methods + methodCallHasNoInherentTarget(mc) + else any() +} + +/** Gets a method from an `impl` block that matches the method call `mc`. */ +pragma[nomagic] +private Function getMethodFromImpl(MethodCall mc) { + exists(Impl impl, string name | + methodCallHasImplCandidate(mc, impl) and + name = mc.getMethodName() and + result = getMethodSuccessor(impl, name) + | + not methodResolutionDependsOnArgument(impl, _, _, _, _, _) + or + exists(int pos, TypePath path, Type type | + methodResolutionDependsOnArgument(impl, name, result, pos, path, type) and + inferType(mc.getPositionalArgument(pos), path) = type + ) + ) +} + +bindingset[trait, name] +pragma[inline_late] +private Function getTraitMethod(ImplTraitReturnType trait, string name) { + result = getMethodSuccessor(trait.getImplTraitTypeRepr(), name) } cached @@ -1182,7 +1393,8 @@ private module Cached { cached predicate receiverHasImplicitDeref(AstNode receiver) { exists(CallExprBaseMatchingInput::Access a, CallExprBaseMatchingInput::AccessPosition apos | - apos.isSelf() and + apos.getArgumentPosition().isSelf() and + apos.isBorrowed(_) and receiver = a.getNodeAt(apos) and inferType(receiver) = TRefType() and CallExprBaseMatching::inferAccessType(a, apos, TypePath::nil()) != TRefType() @@ -1193,54 +1405,26 @@ private module Cached { cached predicate receiverHasImplicitBorrow(AstNode receiver) { exists(CallExprBaseMatchingInput::Access a, CallExprBaseMatchingInput::AccessPosition apos | - apos.isSelf() and + apos.getArgumentPosition().isSelf() and + apos.isBorrowed(_) and receiver = a.getNodeAt(apos) and CallExprBaseMatching::inferAccessType(a, apos, TypePath::nil()) = TRefType() and inferType(receiver) != TRefType() ) } - private predicate isInherentImplFunction(Function f) { - f = any(Impl impl | not impl.hasTrait()).(ImplItemNode).getAnAssocItem() - } - - private predicate isTraitImplFunction(Function f) { - f = any(Impl impl | impl.hasTrait()).(ImplItemNode).getAnAssocItem() - } - - private Function resolveMethodCallTargetFrom(MethodCall mc, boolean fromSource) { - result = inferMethodCallTarget(mc) and - (if result.fromSource() then fromSource = true else fromSource = false) and - ( - // prioritize inherent implementation methods first - isInherentImplFunction(result) - or - not isInherentImplFunction(inferMethodCallTarget(mc)) and - ( - // then trait implementation methods - isTraitImplFunction(result) - or - not isTraitImplFunction(inferMethodCallTarget(mc)) and - ( - // then trait methods with default implementations - result.hasBody() - or - // and finally trait methods without default implementations - not inferMethodCallTarget(mc).hasBody() - ) - ) - ) - } - /** Gets a method that the method call `mc` resolves to, if any. */ cached Function resolveMethodCallTarget(MethodCall mc) { - // Functions in source code also gets extracted as library code, due to - // this duplication we prioritize functions from source code. - result = resolveMethodCallTargetFrom(mc, true) + // The method comes from an `impl` block targeting the type of the receiver. + result = getMethodFromImpl(mc) + or + // 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 - not exists(resolveMethodCallTargetFrom(mc, true)) and - result = resolveMethodCallTargetFrom(mc, false) + // The type of the receiver is an `impl Trait` type. + result = getTraitMethod(mc.getTypeAt(TypePath::nil()), mc.getMethodName()) } pragma[inline] @@ -1341,12 +1525,25 @@ 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 = inferArrayExprType(n) and + path.isEmpty() + or + result = inferIndexExprType(n, path) + or + result = inferForLoopExprType(n, path) } } @@ -1362,8 +1559,8 @@ private module Debug { private Locatable getRelevantLocatable() { 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 + filepath.matches("%/sqlx.rs") and + startline = [56 .. 60] ) } @@ -1372,8 +1569,24 @@ private module Debug { result = inferType(n, path) } - Function debugResolveMethodCallExpr(MethodCallExpr mce) { + Function debugResolveMethodCallTarget(Call mce) { mce = getRelevantLocatable() and result = resolveMethodCallTarget(mce) } + + predicate debugTypeMention(TypeMention tm, TypePath path, Type type) { + tm = getRelevantLocatable() and + tm.resolveTypeAt(path) = type + } + + 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 7e947a35bc48..81500b690f3c 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,9 +62,37 @@ 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 + // If a type argument is not given in the path, then we use the default for + // the type parameter if one exists for the type. + not exists(path.getSegment().getGenericArgList().getTypeArg(i)) and + result = this.resolveType().getTypeParameterDefault(i) + or // `Self` paths inside `impl` blocks have implicit type arguments that are // the type parameters of the `impl` block. For example, in // @@ -96,12 +130,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 +192,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/AccessAfterLifetimeExtensions.qll b/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll new file mode 100644 index 000000000000..4b3177c9df95 --- /dev/null +++ b/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll @@ -0,0 +1,119 @@ +/** + * Provides classes and predicates for reasoning about accesses to a pointer + * after its lifetime has ended. + */ + +import rust +private import codeql.rust.dataflow.DataFlow +private import codeql.rust.security.AccessInvalidPointerExtensions +private import codeql.rust.internal.Type +private import codeql.rust.internal.TypeInference as TypeInference + +/** + * Provides default sources, sinks and barriers for detecting accesses to a + * pointer after its lifetime has ended, as well as extension points for + * adding your own. Note that a particular `(source, sink)` pair must be + * checked with `dereferenceAfterLifetime` to determine if it is a result. + */ +module AccessAfterLifetime { + /** + * A data flow source for accesses to a pointer after its lifetime has ended, + * that is, creation of a pointer or reference. + */ + abstract class Source extends DataFlow::Node { + /** + * Gets the value this pointer or reference points to. + */ + abstract Expr getTarget(); + } + + /** + * A data flow sink for accesses to a pointer after its lifetime has ended, + * that is, a dereference. We re-use the same sinks as for the accesses to + * invalid pointers query. + */ + class Sink = AccessInvalidPointer::Sink; + + /** + * A barrier for accesses to a pointer after its lifetime has ended. + */ + abstract class Barrier extends DataFlow::Node { } + + /** + * Holds if the pair `(source, sink)`, that represents a flow from a + * pointer or reference to a dereference, has its dereference outside the + * lifetime of the target variable `target`. + */ + bindingset[source, sink] + predicate dereferenceAfterLifetime(Source source, Sink sink, Variable target) { + exists(BlockExpr valueScope, BlockExpr accessScope | + valueScope(source.getTarget(), target, valueScope) and + accessScope = sink.asExpr().getExpr().getEnclosingBlock() and + not mayEncloseOnStack(valueScope, accessScope) + ) + } + + /** + * Holds if `var` has scope `scope`. + */ + private predicate variableScope(Variable var, BlockExpr scope) { + // local variable + scope = var.getEnclosingBlock() + or + // parameter + exists(Callable c | + var.getParameter().getEnclosingCallable() = c and + scope.getParentNode() = c + ) + } + + /** + * Holds if `value` accesses a variable `target` with scope `scope`. + */ + private predicate valueScope(Expr value, Variable target, BlockExpr scope) { + // variable access (to a non-reference) + target = value.(VariableAccess).getVariable() and + variableScope(target, scope) and + not TypeInference::inferType(value) instanceof RefType + or + // field access + valueScope(value.(FieldExpr).getContainer(), target, scope) + } + + /** + * Holds if block `a` contains block `b`, in the sense that a stack allocated variable in + * `a` may still be on the stack during execution of `b`. This is interprocedural, + * but is an overapproximation that doesn't accurately track call contexts + * (for example if `f` and `g` both call `b`, then then depending on the + * caller a variable in `f` or `g` may or may-not be on the stack during `b`). + */ + private predicate mayEncloseOnStack(BlockExpr a, BlockExpr b) { + // `b` is a child of `a` + a = b.getEnclosingBlock*() + or + // propagate through function calls + exists(CallExprBase ce | + mayEncloseOnStack(a, ce.getEnclosingBlock()) and + ce.getStaticTarget() = b.getEnclosingCallable() + ) + } + + /** + * A source that is a `RefExpr`. + */ + private class RefExprSource extends Source { + Expr targetValue; + + RefExprSource() { this.asExpr().getExpr().(RefExpr).getExpr() = targetValue } + + override Expr getTarget() { result = targetValue } + } + + /** + * A barrier for nodes inside closures, as we don't model lifetimes of + * variables through closures properly. + */ + private class ClosureBarrier extends Barrier { + ClosureBarrier() { this.asExpr().getExpr().getEnclosingCallable() instanceof ClosureExpr } + } +} diff --git a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll index 4daff543b980..61d26f2f938b 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.model.yml b/rust/ql/lib/ext/generated/actix-web.model.yml new file mode 100644 index 000000000000..e925255eb831 --- /dev/null +++ b/rust/ql/lib/ext/generated/actix-web.model.yml @@ -0,0 +1,1375 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_files::directory::Directory::base]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_files::directory::Directory::path]", "value", "dfc-generated"] + - ["::new_service", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::default_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::disable_content_disposition", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::files_listing_renderer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::guard", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::index_file", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::method_guard", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mime_override", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::path_filter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::prefer_utf8", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::redirect_to_slash_directory", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::show_files_listing", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::use_etag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::use_guards", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::use_hidden_files", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::use_last_modified", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new_service", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::deref", "Argument[self].Field[actix_files::named::NamedFile::file]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_files::named::NamedFile::file]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::content_disposition", "Argument[self].Field[actix_files::named::NamedFile::content_disposition]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::content_encoding", "Argument[self].Field[actix_files::named::NamedFile::encoding]", "ReturnValue", "value", "dfc-generated"] + - ["::content_type", "Argument[self].Field[actix_files::named::NamedFile::content_type]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::disable_content_disposition", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::etag", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::file", "Argument[self].Field[actix_files::named::NamedFile::file]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_file", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[actix_files::named::NamedFile::file]", "value", "dfc-generated"] + - ["::last_modified", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::metadata", "Argument[self].Field[actix_files::named::NamedFile::md]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::modified", "Argument[self].Field[actix_files::named::NamedFile::modified]", "ReturnValue", "value", "dfc-generated"] + - ["::path", "Argument[self].Field[actix_files::named::NamedFile::path]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::path", "Argument[self].Field[actix_files::named::NamedFile::path]", "ReturnValue", "value", "dfc-generated"] + - ["::prefer_utf8", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_content_disposition", "Argument[0]", "Argument[self].Field[actix_files::named::NamedFile::content_disposition]", "value", "dfc-generated"] + - ["::set_content_disposition", "Argument[0]", "ReturnValue.Field[actix_files::named::NamedFile::content_disposition]", "value", "dfc-generated"] + - ["::set_content_disposition", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_content_encoding", "Argument[0]", "Argument[self].Field[actix_files::named::NamedFile::encoding].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::set_content_encoding", "Argument[0]", "ReturnValue.Field[actix_files::named::NamedFile::encoding].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::set_content_encoding", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_content_type", "Argument[0]", "Argument[self].Field[actix_files::named::NamedFile::content_type]", "value", "dfc-generated"] + - ["::set_content_type", "Argument[0]", "ReturnValue.Field[actix_files::named::NamedFile::content_type]", "value", "dfc-generated"] + - ["::set_content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_status_code", "Argument[0]", "Argument[self].Field[actix_files::named::NamedFile::status_code]", "value", "dfc-generated"] + - ["::set_status_code", "Argument[0]", "ReturnValue.Field[actix_files::named::NamedFile::status_code]", "value", "dfc-generated"] + - ["::set_status_code", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::use_etag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::use_last_modified", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[actix_files::named::NamedFileService::path].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[actix_files::named::NamedFileService::path]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::call", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::call", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_files::service::FilesService(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_io", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_http::body::body_stream::BodyStream::stream]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::body::body_stream::BodyStream::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::body::body_stream::BodyStream::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::boxed", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::try_into_bytes", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::as_pin_mut", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::as_pin_mut", "Argument[self]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::as_pin_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_http::body::message_body::MessageBodyMapErr::body]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_http::body::message_body::MessageBodyMapErr::mapper].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::body::message_body::MessageBodyMapErr::body]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::body::message_body::MessageBodyMapErr::mapper]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::body::message_body::MessageBodyMapErr::body]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::body::message_body::MessageBodyMapErr::mapper]", "ReturnValue", "value", "dfc-generated"] + - ["::size", "Argument[self].Field[actix_http::body::sized_stream::SizedStream::size]", "ReturnValue.Field[actix_http::body::size::BodySize::Sized(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_http::body::sized_stream::SizedStream::size]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_http::body::sized_stream::SizedStream::stream]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::body::sized_stream::SizedStream::size]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::body::sized_stream::SizedStream::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::body::sized_stream::SizedStream::size]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::body::sized_stream::SizedStream::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::client_disconnect", "Argument[0]", "Argument[self].Field[actix_http::builder::HttpServiceBuilder::client_disconnect_timeout]", "value", "dfc-generated"] + - ["::client_disconnect", "Argument[0]", "ReturnValue.Field[actix_http::builder::HttpServiceBuilder::client_disconnect_timeout]", "value", "dfc-generated"] + - ["::client_disconnect", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::client_disconnect_timeout", "Argument[0]", "Argument[self].Field[actix_http::builder::HttpServiceBuilder::client_disconnect_timeout]", "value", "dfc-generated"] + - ["::client_disconnect_timeout", "Argument[0]", "ReturnValue.Field[actix_http::builder::HttpServiceBuilder::client_disconnect_timeout]", "value", "dfc-generated"] + - ["::client_disconnect_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::client_request_timeout", "Argument[0]", "Argument[self].Field[actix_http::builder::HttpServiceBuilder::client_request_timeout]", "value", "dfc-generated"] + - ["::client_request_timeout", "Argument[0]", "ReturnValue.Field[actix_http::builder::HttpServiceBuilder::client_request_timeout]", "value", "dfc-generated"] + - ["::client_request_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::client_timeout", "Argument[0]", "Argument[self].Field[actix_http::builder::HttpServiceBuilder::client_request_timeout]", "value", "dfc-generated"] + - ["::client_timeout", "Argument[0]", "ReturnValue.Field[actix_http::builder::HttpServiceBuilder::client_request_timeout]", "value", "dfc-generated"] + - ["::client_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::expect", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::finish", "Argument[self].Field[actix_http::builder::HttpServiceBuilder::expect]", "ReturnValue.Field[actix_http::service::HttpService::expect]", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[actix_http::builder::HttpServiceBuilder::on_connect_ext]", "ReturnValue.Field[actix_http::service::HttpService::on_connect_ext]", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[actix_http::builder::HttpServiceBuilder::upgrade]", "ReturnValue.Field[actix_http::service::HttpService::upgrade]", "value", "dfc-generated"] + - ["::h1", "Argument[self].Field[actix_http::builder::HttpServiceBuilder::expect]", "ReturnValue.Field[actix_http::h1::service::H1Service::expect]", "value", "dfc-generated"] + - ["::h1", "Argument[self].Field[actix_http::builder::HttpServiceBuilder::on_connect_ext]", "ReturnValue.Field[actix_http::h1::service::H1Service::on_connect_ext]", "value", "dfc-generated"] + - ["::h1", "Argument[self].Field[actix_http::builder::HttpServiceBuilder::upgrade]", "ReturnValue.Field[actix_http::h1::service::H1Service::upgrade]", "value", "dfc-generated"] + - ["::h2", "Argument[self].Field[actix_http::builder::HttpServiceBuilder::on_connect_ext]", "ReturnValue.Field[actix_http::h2::service::H2Service::on_connect_ext]", "value", "dfc-generated"] + - ["::keep_alive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::local_addr", "Argument[0]", "Argument[self].Field[actix_http::builder::HttpServiceBuilder::local_addr].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::local_addr", "Argument[0]", "ReturnValue.Field[actix_http::builder::HttpServiceBuilder::local_addr].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::local_addr", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::on_connect_ext", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::secure", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::upgrade", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_headers", "Argument[0]", "ReturnValue.Field[actix_http::encoding::decoder::Decoder::stream]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_http::encoding::decoder::Decoder::stream]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::try_into_bytes", "Argument[self].Field[actix_http::encoding::encoder::Encoder::body]", "ReturnValue.Field[core::result::Result::Err(0)].Field[actix_http::encoding::encoder::Encoder::body]", "value", "dfc-generated"] + - ["::try_into_bytes", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::response", "Argument[2]", "ReturnValue.Field[actix_http::encoding::encoder::Encoder::body].Field[actix_http::encoding::encoder::EncoderBody::Stream::body]", "value", "dfc-generated"] + - ["::try_into_bytes", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::source", "Argument[self].Field[actix_http::encoding::encoder::EncoderError::Io(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::error::DispatchError::Body(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::error::DispatchError::H2(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::error::DispatchError::Io(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::error::DispatchError::Parse(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::error::DispatchError::Service(0)]", "value", "dfc-generated"] + - ["::source", "Argument[self].Field[actix_http::error::DispatchError::H2(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::source", "Argument[self].Field[actix_http::error::DispatchError::Io(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::source", "Argument[self].Field[actix_http::error::DispatchError::Parse(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::with_cause", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::source", "Argument[self].Field[actix_http::error::PayloadError::Http2Payload(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::source", "Argument[self].Field[actix_http::error::PayloadError::Incomplete(0)].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::source", "Argument[self].Field[actix_http::error::PayloadError::Io(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[actix_http::extensions::NoOpHasher(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::write_u64", "Argument[0]", "Argument[self].Field[0]", "value", "dfc-generated"] + - ["::write_u64", "Argument[0]", "Argument[self].Field[actix_http::extensions::NoOpHasher(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::h1::Message::Item(0)]", "value", "dfc-generated"] + - ["::chunk", "Argument[self].Field[actix_http::h1::Message::Chunk(0)].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::message", "Argument[self].Field[actix_http::h1::Message::Item(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_payload_codec", "Argument[self].Field[actix_http::h1::client::ClientCodec::inner]", "ReturnValue.Field[actix_http::h1::client::ClientPayloadCodec::inner]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_http::h1::client::ClientCodec::inner].Field[actix_http::h1::client::ClientCodecInner::config]", "value", "dfc-generated"] + - ["::into_message_codec", "Argument[self].Field[actix_http::h1::client::ClientPayloadCodec::inner]", "ReturnValue.Field[actix_http::h1::client::ClientCodec::inner]", "value", "dfc-generated"] + - ["::config", "Argument[self].Field[actix_http::h1::codec::Codec::config]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_http::h1::codec::Codec::config]", "value", "dfc-generated"] + - ["::length", "Argument[0]", "ReturnValue.Field[actix_http::h1::decoder::PayloadDecoder::kind].Field[actix_http::h1::decoder::Kind::Length(0)]", "value", "dfc-generated"] + - ["::chunk", "Argument[self].Field[actix_http::h1::decoder::PayloadItem::Chunk(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap", "Argument[self].Field[actix_http::h1::decoder::PayloadType::Payload(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::h1::dispatcher::Dispatcher::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::h1::dispatcher::Dispatcher::poll_count]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::h1::dispatcher::Dispatcher::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::h1::dispatcher::Dispatcher::poll_count]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::encode", "Argument[self].Field[actix_http::h1::encoder::TransferEncoding::kind].Field[actix_http::h1::encoder::TransferEncodingKind::Chunked(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::length", "Argument[0]", "ReturnValue.Field[actix_http::h1::encoder::TransferEncoding::kind].Field[actix_http::h1::encoder::TransferEncodingKind::Length(0)]", "value", "dfc-generated"] + - ["::new_service", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::expect", "Argument[0]", "ReturnValue.Field[actix_http::h1::service::H1Service::expect]", "value", "dfc-generated"] + - ["::on_connect_ext", "Argument[0]", "Argument[self].Field[actix_http::h1::service::H1Service::on_connect_ext]", "value", "dfc-generated"] + - ["::on_connect_ext", "Argument[0]", "ReturnValue.Field[actix_http::h1::service::H1Service::on_connect_ext]", "value", "dfc-generated"] + - ["::on_connect_ext", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::upgrade", "Argument[0]", "ReturnValue.Field[actix_http::h1::service::H1Service::upgrade]", "value", "dfc-generated"] + - ["::with_config", "Argument[0]", "ReturnValue.Field[actix_http::h1::service::H1Service::cfg]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_http::h1::utils::SendResponse::framed].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[1].Field[actix_http::responses::response::Response::body]", "ReturnValue.Field[actix_http::h1::utils::SendResponse::body].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::h1::utils::SendResponse::body]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::h1::utils::SendResponse::framed]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::h1::utils::SendResponse::res]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::h1::utils::SendResponse::body]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::h1::utils::SendResponse::framed]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::h1::utils::SendResponse::res]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_http::h2::Payload::stream]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_http::h2::dispatcher::Dispatcher::connection]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_http::h2::dispatcher::Dispatcher::flow]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[actix_http::h2::dispatcher::Dispatcher::config]", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[actix_http::h2::dispatcher::Dispatcher::peer_addr]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new_service", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::on_connect_ext", "Argument[0]", "Argument[self].Field[actix_http::h2::service::H2Service::on_connect_ext]", "value", "dfc-generated"] + - ["::on_connect_ext", "Argument[0]", "ReturnValue.Field[actix_http::h2::service::H2Service::on_connect_ext]", "value", "dfc-generated"] + - ["::on_connect_ext", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_config", "Argument[0]", "ReturnValue.Field[actix_http::h2::service::H2Service::cfg]", "value", "dfc-generated"] + - ["::call", "Argument[0].Field[1]", "ReturnValue.Field[actix_http::h2::service::H2ServiceHandlerResponse::state].Field[actix_http::h2::service::State::Handshake(2)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[actix_http::header::map::Removed::inner].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_http::header::map::Value::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::header::shared::http_date::HttpDate(0)]", "value", "dfc-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::max", "Argument[0]", "ReturnValue.Field[actix_http::header::shared::quality_item::QualityItem::item]", "value", "dfc-generated"] + - ["::min", "Argument[0]", "ReturnValue.Field[actix_http::header::shared::quality_item::QualityItem::item]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_http::header::shared::quality_item::QualityItem::item]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_http::header::shared::quality_item::QualityItem::quality]", "value", "dfc-generated"] + - ["::zero", "Argument[0]", "ReturnValue.Field[actix_http::header::shared::quality_item::QualityItem::item]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::option::Option::Some(0)].Field[core::option::Option::Some(0)]", "ReturnValue.Field[actix_http::keep_alive::KeepAlive::Timeout(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue.Field[actix_http::keep_alive::KeepAlive::Timeout(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::keep_alive::KeepAlive::Timeout(0)]", "value", "dfc-generated"] + - ["::duration", "Argument[self].Field[actix_http::keep_alive::KeepAlive::Timeout(0)].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::normalize", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_http::message::Message::head].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_http::message::Message::head]", "ReturnValue.Reference.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_http::message::Message::head]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::payload::Payload::H1::payload]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::payload::Payload::H2::payload].Field[actix_http::h2::Payload::stream]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::payload::Payload::H2::payload]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::payload::Payload::Stream::payload]", "value", "dfc-generated"] + - ["::headers", "Argument[self].Field[actix_http::requests::head::RequestHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::headers_mut", "Argument[self].Field[actix_http::requests::head::RequestHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::headers", "Argument[self].Field[actix_http::requests::head::RequestHeadType::Owned(0)].Field[actix_http::requests::head::RequestHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[actix_http::requests::head::RequestHeadType::Owned(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::requests::head::RequestHeadType::Owned(0)]", "value", "dfc-generated"] + - ["::headers_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::extensions", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::extensions_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::headers", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::requests::request::Request::head]", "value", "dfc-generated"] + - ["::head", "Argument[self].Field[actix_http::requests::request::Request::head]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::head_mut", "Argument[self].Field[actix_http::requests::request::Request::head]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[actix_http::requests::request::Request::head]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[actix_http::requests::request::Request::payload]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::method", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::payload", "Argument[self].Field[actix_http::requests::request::Request::payload]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::peer_addr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::replace_payload", "Argument[0]", "ReturnValue.Field[0].Field[actix_http::requests::request::Request::payload]", "value", "dfc-generated"] + - ["::uri", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::version", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::with_payload", "Argument[0]", "ReturnValue.Field[actix_http::requests::request::Request::payload]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[actix_http::responses::response::Response::head]", "ReturnValue.Field[actix_http::responses::builder::ResponseBuilder::head].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::append_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::force_close", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::insert_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::keep_alive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::message_body", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[actix_http::responses::response::Response::body]", "value", "dfc-generated"] + - ["::no_chunking", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::reason", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::status", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::upgrade", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_http::responses::head::BoxedResponseHead::head].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_http::responses::head::BoxedResponseHead::head].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::headers_mut", "Argument[self].Field[actix_http::responses::head::ResponseHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::headers", "Argument[self].Field[actix_http::responses::head::ResponseHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::headers_mut", "Argument[self].Field[actix_http::responses::head::ResponseHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_http::responses::head::ResponseHead::status]", "value", "dfc-generated"] + - ["::reason", "Argument[self].Field[actix_http::responses::head::ResponseHead::reason].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::headers", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::status", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::respond_to", "Argument[self].Field[actix_web::service::ServiceResponse::response]", "ReturnValue", "value", "dfc-generated"] + - ["::respond_to", "Argument[self]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[actix_web::response::response::HttpResponse::res]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::string::String::vec].Reference", "ReturnValue.Field[actix_http::responses::response::Response::body].Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::string::String::vec]", "ReturnValue.Field[actix_http::responses::response::Response::body].Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::from", "Argument[0].Reference", "ReturnValue.Field[actix_http::responses::response::Response::body]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::responses::response::Response::body]", "value", "dfc-generated"] + - ["::body", "Argument[self].Field[actix_http::responses::response::Response::body]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::drop_body", "Argument[self].Field[actix_http::responses::response::Response::extensions]", "ReturnValue.Field[actix_http::responses::response::Response::extensions]", "value", "dfc-generated"] + - ["::drop_body", "Argument[self].Field[actix_http::responses::response::Response::head]", "ReturnValue.Field[actix_http::responses::response::Response::head]", "value", "dfc-generated"] + - ["::extensions", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::extensions_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::head", "Argument[self].Field[actix_http::responses::response::Response::head]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::head_mut", "Argument[self].Field[actix_http::responses::response::Response::head]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_body", "Argument[self].Field[actix_http::responses::response::Response::body]", "ReturnValue", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[actix_http::responses::response::Response::body]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[actix_http::responses::response::Response::extensions]", "ReturnValue.Field[0].Field[actix_http::responses::response::Response::extensions]", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[actix_http::responses::response::Response::head]", "ReturnValue.Field[0].Field[actix_http::responses::response::Response::head]", "value", "dfc-generated"] + - ["::map_body", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::map_body", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::map_body", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::map_into_boxed_body", "Argument[self].Field[actix_http::responses::response::Response::extensions]", "ReturnValue.Field[actix_http::responses::response::Response::extensions]", "value", "dfc-generated"] + - ["::map_into_boxed_body", "Argument[self].Field[actix_http::responses::response::Response::head]", "ReturnValue.Field[actix_http::responses::response::Response::head]", "value", "dfc-generated"] + - ["::replace_body", "Argument[0]", "ReturnValue.Field[0].Field[actix_http::responses::response::Response::body]", "value", "dfc-generated"] + - ["::replace_body", "Argument[self].Field[actix_http::responses::response::Response::body]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::replace_body", "Argument[self].Field[actix_http::responses::response::Response::extensions]", "ReturnValue.Field[0].Field[actix_http::responses::response::Response::extensions]", "value", "dfc-generated"] + - ["::replace_body", "Argument[self].Field[actix_http::responses::response::Response::head]", "ReturnValue.Field[0].Field[actix_http::responses::response::Response::head]", "value", "dfc-generated"] + - ["::set_body", "Argument[0]", "ReturnValue.Field[actix_http::responses::response::Response::body]", "value", "dfc-generated"] + - ["::set_body", "Argument[self].Field[actix_http::responses::response::Response::extensions]", "ReturnValue.Field[actix_http::responses::response::Response::extensions]", "value", "dfc-generated"] + - ["::set_body", "Argument[self].Field[actix_http::responses::response::Response::head]", "ReturnValue.Field[actix_http::responses::response::Response::head]", "value", "dfc-generated"] + - ["::with_body", "Argument[1]", "ReturnValue.Field[actix_http::responses::response::Response::body]", "value", "dfc-generated"] + - ["::new_service", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::expect", "Argument[0]", "ReturnValue.Field[actix_http::service::HttpService::expect]", "value", "dfc-generated"] + - ["::on_connect_ext", "Argument[0]", "Argument[self].Field[actix_http::service::HttpService::on_connect_ext]", "value", "dfc-generated"] + - ["::on_connect_ext", "Argument[0]", "ReturnValue.Field[actix_http::service::HttpService::on_connect_ext]", "value", "dfc-generated"] + - ["::on_connect_ext", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::upgrade", "Argument[0]", "ReturnValue.Field[actix_http::service::HttpService::upgrade]", "value", "dfc-generated"] + - ["::with_config", "Argument[0]", "ReturnValue.Field[actix_http::service::HttpService::cfg]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_http::service::HttpServiceHandler::cfg]", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[actix_http::service::HttpServiceHandler::on_connect_ext]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::service::HttpServiceHandlerResponse::state]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::service::HttpServiceHandlerResponse::state]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::handshake_timeout", "Argument[0]", "ReturnValue.Field[actix_http::service::TlsAcceptorConfig::handshake_timeout].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::read_buf_slice", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::write_buf_slice", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::append_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::insert_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::method", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_payload", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::uri", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::err", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::read_buf", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::write_buf", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::ws::ProtocolError::ContinuationFragment(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::ws::ProtocolError::InvalidLength(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::ws::ProtocolError::InvalidOpcode(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::ws::ProtocolError::Io(0)]", "value", "dfc-generated"] + - ["::decode", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::client_mode", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_size", "Argument[0]", "Argument[self].Field[actix_http::ws::codec::Codec::max_size]", "value", "dfc-generated"] + - ["::max_size", "Argument[0]", "ReturnValue.Field[actix_http::ws::codec::Codec::max_size]", "value", "dfc-generated"] + - ["::max_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::ws::dispatcher::Dispatcher::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_http::ws::dispatcher::Dispatcher::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::with", "Argument[0]", "ReturnValue.Field[actix_http::ws::dispatcher::Dispatcher::inner].Field[actix_http::ws::dispatcher::inner::Dispatcher::framed]", "value", "dfc-generated"] + - ["::framed", "Argument[self].Field[actix_http::ws::dispatcher::inner::Dispatcher::framed]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::framed_mut", "Argument[self].Field[actix_http::ws::dispatcher::inner::Dispatcher::framed]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_http::ws::dispatcher::inner::Dispatcher::framed]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::service", "Argument[self].Field[actix_http::ws::dispatcher::inner::Dispatcher::service]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::service_mut", "Argument[self].Field[actix_http::ws::dispatcher::inner::Dispatcher::service]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::tx", "Argument[self].Field[actix_http::ws::dispatcher::inner::Dispatcher::tx].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::tx", "Argument[self].Field[actix_http::ws::dispatcher::inner::Dispatcher::tx]", "ReturnValue", "value", "dfc-generated"] + - ["::with_rx", "Argument[0]", "ReturnValue.Field[actix_http::ws::dispatcher::inner::Dispatcher::framed]", "value", "dfc-generated"] + - ["::with_rx", "Argument[2]", "ReturnValue.Field[actix_http::ws::dispatcher::inner::Dispatcher::rx]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::ws::dispatcher::inner::DispatcherError::Service(0)]", "value", "dfc-generated"] + - ["::parse", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::ws::proto::CloseCode::Other(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue.Field[actix_http::ws::proto::CloseReason::code]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_http::ws::proto::CloseReason::code]", "value", "dfc-generated"] + - ["::addr", "Argument[self].Field[actix_http_test::TestServer::addr]", "ReturnValue", "value", "dfc-generated"] + - ["::delete", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::delete", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::get", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::get", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::head", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::head", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::options", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::options", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::patch", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::patch", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::post", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::post", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::put", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::put", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::request", "Argument[0]", "ReturnValue.Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::method]", "value", "dfc-generated"] + - ["::request", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::request", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::sdelete", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::sdelete", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::sget", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::sget", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::shead", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::shead", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::soptions", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::soptions", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::spatch", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::spatch", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::spost", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::spost", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::sput", "Argument[self].Field[actix_http_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::sput", "Argument[self].Field[actix_http_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::surl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::url", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue.Field[actix_multipart::error::Error::Field::name]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[1]", "ReturnValue.Field[actix_multipart::error::Error::Field::source]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_multipart::error::Error::Parse(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_multipart::error::Error::Payload(0)]", "value", "dfc-generated"] + - ["::content_disposition", "Argument[self].Field[actix_multipart::field::Field::content_disposition].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::content_type", "Argument[self].Field[actix_multipart::field::Field::content_type].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::headers", "Argument[self].Field[actix_multipart::field::Field::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[actix_multipart::field::Field::content_disposition].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_multipart::field::Field::content_type]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_multipart::field::Field::content_disposition]", "value", "dfc-generated"] + - ["::new", "Argument[2].Field[core::option::Option::Some(0)]", "ReturnValue.Field[actix_multipart::field::Field::form_field_name]", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[actix_multipart::field::Field::headers]", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[actix_multipart::field::Field::safety]", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[actix_multipart::field::Field::inner]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[actix_multipart::field::InnerField::boundary]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_multipart::form::Limits::total_limit_remaining]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_multipart::form::Limits::memory_limit_remaining]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_multipart::form::MultipartForm(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_multipart::form::MultipartForm(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[actix_multipart::form::MultipartForm(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::memory_limit", "Argument[0]", "Argument[self].Field[actix_multipart::form::MultipartFormConfig::memory_limit]", "value", "dfc-generated"] + - ["::memory_limit", "Argument[0]", "ReturnValue.Field[actix_multipart::form::MultipartFormConfig::memory_limit]", "value", "dfc-generated"] + - ["::memory_limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::total_limit", "Argument[0]", "Argument[self].Field[actix_multipart::form::MultipartFormConfig::total_limit]", "value", "dfc-generated"] + - ["::total_limit", "Argument[0]", "ReturnValue.Field[actix_multipart::form::MultipartFormConfig::total_limit]", "value", "dfc-generated"] + - ["::total_limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_multipart::form::State(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_multipart::form::State(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_field", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_field", "Argument[2]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_field", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_field", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_field", "Argument[2]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_multipart::form::json::Json(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_multipart::form::json::Json(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[actix_multipart::form::json::Json(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::validate_content_type", "Argument[0]", "Argument[self].Field[actix_multipart::form::json::JsonConfig::validate_content_type]", "value", "dfc-generated"] + - ["::validate_content_type", "Argument[0]", "ReturnValue.Field[actix_multipart::form::json::JsonConfig::validate_content_type]", "value", "dfc-generated"] + - ["::validate_content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::read_field", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_field", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_field", "Argument[2]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::directory", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::read_field", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_field", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_field", "Argument[2]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_multipart::form::text::Text(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_multipart::form::text::Text(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[actix_multipart::form::text::Text(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::validate_content_type", "Argument[0]", "Argument[self].Field[actix_multipart::form::text::TextConfig::validate_content_type]", "value", "dfc-generated"] + - ["::validate_content_type", "Argument[0]", "ReturnValue.Field[actix_multipart::form::text::TextConfig::validate_content_type]", "value", "dfc-generated"] + - ["::validate_content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_multipart::payload::PayloadBuffer::stream].Reference", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[actix_multipart::payload::PayloadRef::payload]", "ReturnValue.Field[actix_multipart::payload::PayloadRef::payload]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[actix_multipart::safety::Safety::clean].Reference", "ReturnValue.Field[actix_multipart::safety::Safety::clean]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[actix_multipart::safety::Safety::clean]", "ReturnValue.Field[actix_multipart::safety::Safety::clean]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[actix_multipart::safety::Safety::payload]", "ReturnValue.Field[actix_multipart::safety::Safety::payload]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_router::de::PathDeserializer::path]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[actix_router::path::Path::path]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[actix_router::path::Path::path]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::iter", "Argument[self]", "ReturnValue.Field[actix_router::path::PathIter::params]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_router::path::Path::path]", "value", "dfc-generated"] + - ["::segment_count", "Argument[self].Field[actix_router::path::Path::segments].Field[alloc::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] + - ["::set", "Argument[0]", "Argument[self].Field[actix_router::path::Path::path]", "value", "dfc-generated"] + - ["::patterns", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::capture_match_info_fn", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::id", "Argument[self].Field[actix_router::resource::ResourceDef::id]", "ReturnValue", "value", "dfc-generated"] + - ["::is_prefix", "Argument[self].Field[actix_router::resource::ResourceDef::is_prefix]", "ReturnValue", "value", "dfc-generated"] + - ["::join", "Argument[0].Field[actix_router::resource::ResourceDef::is_prefix]", "ReturnValue.Field[actix_router::resource::ResourceDef::is_prefix]", "value", "dfc-generated"] + - ["::pattern_iter", "Argument[self].Field[actix_router::resource::ResourceDef::patterns]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::set_id", "Argument[0]", "Argument[self].Field[actix_router::resource::ResourceDef::id]", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[actix_router::router::RouterBuilder::routes]", "ReturnValue.Field[actix_router::router::Router::routes]", "value", "dfc-generated"] + - ["::path", "Argument[self].Field[actix_router::url::Url::path].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_router::url::Url::uri]", "value", "dfc-generated"] + - ["::new_with_quoter", "Argument[0]", "ReturnValue.Field[actix_router::url::Url::uri]", "value", "dfc-generated"] + - ["::path", "Argument[self].Field[actix_router::url::Url::path].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::update", "Argument[0].Reference", "Argument[self].Field[actix_router::url::Url::uri]", "value", "dfc-generated"] + - ["::update_with_quoter", "Argument[0].Reference", "Argument[self].Field[actix_router::url::Url::uri]", "value", "dfc-generated"] + - ["::uri", "Argument[self].Field[actix_router::url::Url::uri]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::addr", "Argument[self].Field[actix_test::TestServer::addr]", "ReturnValue", "value", "dfc-generated"] + - ["::delete", "Argument[self].Field[actix_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::delete", "Argument[self].Field[actix_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::get", "Argument[self].Field[actix_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::get", "Argument[self].Field[actix_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::head", "Argument[self].Field[actix_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::head", "Argument[self].Field[actix_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::options", "Argument[self].Field[actix_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::options", "Argument[self].Field[actix_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::patch", "Argument[self].Field[actix_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::patch", "Argument[self].Field[actix_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::post", "Argument[self].Field[actix_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::post", "Argument[self].Field[actix_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::put", "Argument[self].Field[actix_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::put", "Argument[self].Field[actix_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::request", "Argument[0]", "ReturnValue.Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::method]", "value", "dfc-generated"] + - ["::request", "Argument[self].Field[actix_test::TestServer::client].Field[0]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::request", "Argument[self].Field[actix_test::TestServer::client].Field[awc::client::Client(0)]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::url", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::url", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::client_request_timeout", "Argument[0]", "Argument[self].Field[actix_test::TestServerConfig::client_request_timeout]", "value", "dfc-generated"] + - ["::client_request_timeout", "Argument[0]", "ReturnValue.Field[actix_test::TestServerConfig::client_request_timeout]", "value", "dfc-generated"] + - ["::client_request_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::disable_redirects", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::h1", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::h2", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::listen_address", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::openssl", "Argument[0]", "Argument[self].Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Openssl(0)]", "value", "dfc-generated"] + - ["::openssl", "Argument[0]", "ReturnValue.Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Openssl(0)]", "value", "dfc-generated"] + - ["::openssl", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::port", "Argument[0]", "Argument[self].Field[actix_test::TestServerConfig::port]", "value", "dfc-generated"] + - ["::port", "Argument[0]", "ReturnValue.Field[actix_test::TestServerConfig::port]", "value", "dfc-generated"] + - ["::port", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::rustls", "Argument[0]", "Argument[self].Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Rustls020(0)]", "value", "dfc-generated"] + - ["::rustls", "Argument[0]", "ReturnValue.Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Rustls020(0)]", "value", "dfc-generated"] + - ["::rustls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::rustls_021", "Argument[0]", "Argument[self].Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Rustls021(0)]", "value", "dfc-generated"] + - ["::rustls_021", "Argument[0]", "ReturnValue.Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Rustls021(0)]", "value", "dfc-generated"] + - ["::rustls_021", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::rustls_0_20", "Argument[0]", "Argument[self].Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Rustls020(0)]", "value", "dfc-generated"] + - ["::rustls_0_20", "Argument[0]", "ReturnValue.Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Rustls020(0)]", "value", "dfc-generated"] + - ["::rustls_0_20", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::rustls_0_21", "Argument[0]", "Argument[self].Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Rustls021(0)]", "value", "dfc-generated"] + - ["::rustls_0_21", "Argument[0]", "ReturnValue.Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Rustls021(0)]", "value", "dfc-generated"] + - ["::rustls_0_21", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::rustls_0_22", "Argument[0]", "Argument[self].Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Rustls022(0)]", "value", "dfc-generated"] + - ["::rustls_0_22", "Argument[0]", "ReturnValue.Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Rustls022(0)]", "value", "dfc-generated"] + - ["::rustls_0_22", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::rustls_0_23", "Argument[0]", "Argument[self].Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Rustls023(0)]", "value", "dfc-generated"] + - ["::rustls_0_23", "Argument[0]", "ReturnValue.Field[actix_test::TestServerConfig::stream].Field[actix_test::StreamType::Rustls023(0)]", "value", "dfc-generated"] + - ["::rustls_0_23", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::workers", "Argument[0]", "Argument[self].Field[actix_test::TestServerConfig::workers]", "value", "dfc-generated"] + - ["::workers", "Argument[0]", "ReturnValue.Field[actix_test::TestServerConfig::workers]", "value", "dfc-generated"] + - ["::workers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::into_factory", "Argument[self].Field[actix_web::app::App::default]", "ReturnValue.Field[actix_web::app_service::AppInit::default]", "value", "dfc-generated"] + - ["::into_factory", "Argument[self].Field[actix_web::app::App::endpoint]", "ReturnValue.Field[actix_web::app_service::AppInit::endpoint]", "value", "dfc-generated"] + - ["::into_factory", "Argument[self].Field[actix_web::app::App::factory_ref]", "ReturnValue.Field[actix_web::app_service::AppInit::factory_ref]", "value", "dfc-generated"] + - ["::app_data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::configure", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::data_factory", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_service", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::external_resource", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::route", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::service", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::wrap", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrap_fn", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::app_service::AppEntry::factory]", "value", "dfc-generated"] + - ["::config", "Argument[self].Field[actix_web::app_service::AppInitServiceState::config]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::pool", "Argument[self].Field[actix_web::app_service::AppInitServiceState::pool]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::rmap", "Argument[self].Field[actix_web::app_service::AppInitServiceState::rmap]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::__priv_test_new", "Argument[0]", "ReturnValue.Field[actix_web::config::AppConfig::secure]", "value", "dfc-generated"] + - ["::__priv_test_new", "Argument[1]", "ReturnValue.Field[actix_web::config::AppConfig::host]", "value", "dfc-generated"] + - ["::__priv_test_new", "Argument[2]", "ReturnValue.Field[actix_web::config::AppConfig::addr]", "value", "dfc-generated"] + - ["::host", "Argument[self].Field[actix_web::config::AppConfig::host]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::local_addr", "Argument[self].Field[actix_web::config::AppConfig::addr]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::config::AppConfig::secure]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_web::config::AppConfig::host]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[actix_web::config::AppConfig::addr]", "value", "dfc-generated"] + - ["::secure", "Argument[self].Field[actix_web::config::AppConfig::secure]", "ReturnValue", "value", "dfc-generated"] + - ["::clone_config", "Argument[self].Field[actix_web::config::AppService::config].Reference", "ReturnValue.Field[actix_web::config::AppService::config]", "value", "dfc-generated"] + - ["::clone_config", "Argument[self].Field[actix_web::config::AppService::config]", "ReturnValue.Field[actix_web::config::AppService::config]", "value", "dfc-generated"] + - ["::clone_config", "Argument[self].Field[actix_web::config::AppService::default]", "ReturnValue.Field[actix_web::config::AppService::default]", "value", "dfc-generated"] + - ["::config", "Argument[self].Field[actix_web::config::AppService::config]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::default_service", "Argument[self].Field[actix_web::config::AppService::default]", "ReturnValue", "value", "dfc-generated"] + - ["::into_services", "Argument[self].Field[actix_web::config::AppService::config]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::into_services", "Argument[self].Field[actix_web::config::AppService::services]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::is_root", "Argument[self].Field[actix_web::config::AppService::root]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::config::AppService::config]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_web::config::AppService::default]", "value", "dfc-generated"] + - ["::app_data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::configure", "Argument[self]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::configure", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_service", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::external_resource", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::route", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::service", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[0]", "ReturnValue.Field[actix_web::data::Data(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[actix_web::data::Data(0)]", "ReturnValue.Field[actix_web::data::Data(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_web::data::Data(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::data::Data(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[actix_web::data::Data(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_web::error::QueryPayloadError::Deserialize(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_web::error::ReadlinesError::ContentTypeError(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_web::error::ReadlinesError::Payload(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_web::error::UrlGenerationError::ParseError(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue.Field[actix_web::error::UrlencodedError::Overflow::size]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[1]", "ReturnValue.Field[actix_web::error::UrlencodedError::Overflow::limit]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_web::error::UrlencodedError::Parse(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_web::error::UrlencodedError::Payload(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_web::error::UrlencodedError::Serialize(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[actix_web::types::either::EitherExtractError::Bytes(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_web::error::error::Error::cause].Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_web::error::error::Error::cause]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::as_response_error", "Argument[self].Field[actix_web::error::error::Error::cause].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::status_code", "Argument[self].Field[actix_web::error::internal::InternalError::status].Field[actix_web::error::internal::InternalErrorType::Status(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from_response", "Argument[0]", "ReturnValue.Field[actix_web::error::internal::InternalError::cause]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::error::internal::InternalError::cause]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_web::error::internal::InternalError::status].Field[actix_web::error::internal::InternalErrorType::Status(0)]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::extract::FromRequestOptFuture::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::extract::FromRequestOptFuture::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::extract::FromRequestResFuture::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::extract::FromRequestResFuture::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::and", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::or", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::check", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::check", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::match_star_star", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::guard::acceptable::Acceptable::mime]", "value", "dfc-generated"] + - ["::scheme", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::accept::Accept(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::accept::Accept(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::accept_charset::AcceptCharset(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::accept_charset::AcceptCharset(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::accept_encoding::AcceptEncoding(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::accept_encoding::AcceptEncoding(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::preference", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::accept_language::AcceptLanguage(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::accept_language::AcceptLanguage(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::allow::Allow(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::allow::Allow(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::cache_control::CacheControl(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::cache_control::CacheControl(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_filename_ext", "Argument[self].Field[actix_web::http::header::content_disposition::DispositionParam::FilenameExt(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::as_unknown_ext", "Argument[self].Field[actix_web::http::header::content_disposition::DispositionParam::UnknownExt(1)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::content_language::ContentLanguage(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::content_language::ContentLanguage(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_web::http::header::content_length::ContentLength(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::content_length::ContentLength(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::content_length::ContentLength(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[actix_web::http::header::content_length::ContentLength(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::content_range::ContentRange(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::content_range::ContentRange(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::content_type::ContentType(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::content_type::ContentType(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::date::Date(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::date::Date(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::http::header::entity::EntityTag::weak]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_web::http::header::entity::EntityTag::tag]", "value", "dfc-generated"] + - ["::new_strong", "Argument[0]", "ReturnValue.Field[actix_web::http::header::entity::EntityTag::tag]", "value", "dfc-generated"] + - ["::new_weak", "Argument[0]", "ReturnValue.Field[actix_web::http::header::entity::EntityTag::tag]", "value", "dfc-generated"] + - ["::strong", "Argument[0]", "ReturnValue.Field[actix_web::http::header::entity::EntityTag::tag]", "value", "dfc-generated"] + - ["::tag", "Argument[self].Field[actix_web::http::header::entity::EntityTag::tag]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::tag", "Argument[self].Field[actix_web::http::header::entity::EntityTag::tag]", "ReturnValue", "value", "dfc-generated"] + - ["::weak", "Argument[0]", "ReturnValue.Field[actix_web::http::header::entity::EntityTag::tag]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::etag::ETag(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::etag::ETag(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::expires::Expires(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::expires::Expires(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::if_modified_since::IfModifiedSince(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::if_modified_since::IfModifiedSince(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::if_unmodified_since::IfUnmodifiedSince(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::if_unmodified_since::IfUnmodifiedSince(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::http::header::last_modified::LastModified(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::http::header::last_modified::LastModified(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_item", "Argument[self].Field[actix_web::http::header::preference::Preference::Specific(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::item", "Argument[self].Field[actix_web::http::header::preference::Preference::Specific(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::to_satisfiable_range", "Argument[self].Reference.Field[actix_web::http::header::range::ByteRangeSpec::From(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] + - ["::to_satisfiable_range", "Argument[self].Reference.Field[actix_web::http::header::range::ByteRangeSpec::FromTo(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] + - ["::to_satisfiable_range", "Argument[self].Reference.Field[actix_web::http::header::range::ByteRangeSpec::FromTo(1)]", "ReturnValue.Field[core::option::Option::Some(0)].Field[1]", "value", "dfc-generated"] + - ["::host", "Argument[self].Field[actix_web::info::ConnectionInfo::host]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::scheme", "Argument[self].Field[actix_web::info::ConnectionInfo::scheme]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[actix_web::info::PeerAddr(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::middleware::compat::Compat::transform]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::middleware::compat::CompatMiddlewareFuture::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::middleware::compat::CompatMiddlewareFuture::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::middleware::compress::CompressResponse::encoding]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::middleware::compress::CompressResponse::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::middleware::compress::CompressResponse::encoding]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::middleware::compress::CompressResponse::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::middleware::condition::Condition::enable]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_web::middleware::condition::Condition::transformer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::middleware::default_headers::DefaultHeaderFuture::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::middleware::default_headers::DefaultHeaderFuture::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::middleware::default_headers::DefaultHeaderFuture::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::middleware::default_headers::DefaultHeaderFuture::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::add", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::add_content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[actix_web::middleware::default_headers::DefaultHeadersMiddleware::inner]", "ReturnValue.Field[actix_web::middleware::default_headers::DefaultHeaderFuture::inner]", "value", "dfc-generated"] + - ["::handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::call", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::call", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::call", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[actix_web::middleware::from_fn::MiddlewareFnService::mw_fn]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[actix_web::middleware::from_fn::MiddlewareFnService::service]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::call", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::fmt", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::custom_request_replace", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::custom_response_replace", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::exclude", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::exclude_regex", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::log_level", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::log_target", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::permanent", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::see_other", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::temporary", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::using_status_code", "Argument[0]", "Argument[self].Field[actix_web::redirect::Redirect::status_code]", "value", "dfc-generated"] + - ["::using_status_code", "Argument[0]", "ReturnValue.Field[actix_web::redirect::Redirect::status_code]", "value", "dfc-generated"] + - ["::using_status_code", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_capacity", "Argument[0]", "ReturnValue.Field[actix_web::request::HttpRequestPool::cap]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::request_data::ReqData(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[actix_web::request_data::ReqData(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::add_guards", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::app_data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_service", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::guard", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::route", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::to", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::wrap", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrap_fn", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::append_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::force_close", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::insert_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::keep_alive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::no_chunking", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::reason", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::status", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::upgrade", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::add_cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::append_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::insert_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::response::customize_responder::CustomizeResponder::inner].Field[actix_web::response::customize_responder::CustomizeResponderInner::responder]", "value", "dfc-generated"] + - ["::with_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_status", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::respond_to", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[actix_web::service::ServiceResponse::response]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res]", "value", "dfc-generated"] + - ["::body", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::body]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::drop_body", "Argument[self].Field[actix_web::response::response::HttpResponse::error]", "ReturnValue.Field[actix_web::response::response::HttpResponse::error]", "value", "dfc-generated"] + - ["::drop_body", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::extensions]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::extensions]", "value", "dfc-generated"] + - ["::drop_body", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::head]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::head]", "value", "dfc-generated"] + - ["::error", "Argument[self].Field[actix_web::response::response::HttpResponse::error].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::extensions", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::extensions_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::head", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::head]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::head_mut", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::head]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_body", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::body]", "ReturnValue", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[actix_web::response::response::HttpResponse::error]", "ReturnValue.Field[0].Field[actix_web::response::response::HttpResponse::error]", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::body]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::map_body", "Argument[0].ReturnValue", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::body]", "value", "dfc-generated"] + - ["::map_into_boxed_body", "Argument[self].Field[actix_web::response::response::HttpResponse::error]", "ReturnValue.Field[actix_web::response::response::HttpResponse::error]", "value", "dfc-generated"] + - ["::map_into_boxed_body", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::extensions]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::extensions]", "value", "dfc-generated"] + - ["::map_into_boxed_body", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::head]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::head]", "value", "dfc-generated"] + - ["::map_into_left_body", "Argument[self].Field[actix_web::response::response::HttpResponse::error]", "ReturnValue.Field[actix_web::response::response::HttpResponse::error]", "value", "dfc-generated"] + - ["::map_into_left_body", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::extensions]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::extensions]", "value", "dfc-generated"] + - ["::map_into_left_body", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::head]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::head]", "value", "dfc-generated"] + - ["::map_into_right_body", "Argument[self].Field[actix_web::response::response::HttpResponse::error]", "ReturnValue.Field[actix_web::response::response::HttpResponse::error]", "value", "dfc-generated"] + - ["::map_into_right_body", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::extensions]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::extensions]", "value", "dfc-generated"] + - ["::map_into_right_body", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::head]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::head]", "value", "dfc-generated"] + - ["::set_body", "Argument[0]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::body]", "value", "dfc-generated"] + - ["::set_body", "Argument[self].Field[actix_web::response::response::HttpResponse::error]", "ReturnValue.Field[actix_web::response::response::HttpResponse::error]", "value", "dfc-generated"] + - ["::set_body", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::extensions]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::extensions]", "value", "dfc-generated"] + - ["::set_body", "Argument[self].Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::head]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::head]", "value", "dfc-generated"] + - ["::with_body", "Argument[1]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::body]", "value", "dfc-generated"] + - ["::match_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::match_pattern", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::rmap::ResourceMap::pattern]", "value", "dfc-generated"] + - ["::new_service", "Argument[self].Field[actix_web::route::Route::guards]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::guard", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::method", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::service", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::to", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::wrap", "Argument[self].Field[actix_web::route::Route::guards]", "ReturnValue.Field[actix_web::route::Route::guards]", "value", "dfc-generated"] + - ["::app_data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::configure", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_service", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::guard", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::route", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::service", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::wrap", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrap_fn", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::backlog", "Argument[0]", "Argument[self].Field[actix_web::server::HttpServer::backlog]", "value", "dfc-generated"] + - ["::backlog", "Argument[0]", "ReturnValue.Field[actix_web::server::HttpServer::backlog]", "value", "dfc-generated"] + - ["::backlog", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::bind", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::bind_auto_h2c", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::bind_openssl", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::bind_rustls", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::bind_rustls_021", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::bind_rustls_0_22", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::bind_rustls_0_23", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::bind_uds", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::client_disconnect_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::client_request_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::client_shutdown", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::client_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::disable_signals", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::keep_alive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::listen", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::listen_auto_h2c", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::listen_openssl", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::listen_rustls", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::listen_rustls_0_21", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::listen_rustls_0_22", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::listen_rustls_0_23", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::listen_uds", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::max_connection_rate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_connections", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::server::HttpServer::factory]", "value", "dfc-generated"] + - ["::on_connect", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::server_hostname", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::shutdown_signal", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::shutdown_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::system_exit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tls_handshake_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::worker_max_blocking_threads", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::workers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::service::ServiceFactoryWrapper::factory].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::error_response", "Argument[self].Field[actix_web::service::ServiceRequest::req]", "ReturnValue.Field[actix_web::service::ServiceResponse::request]", "value", "dfc-generated"] + - ["::from_parts", "Argument[0]", "ReturnValue.Field[actix_web::service::ServiceRequest::req]", "value", "dfc-generated"] + - ["::from_parts", "Argument[1]", "ReturnValue.Field[actix_web::service::ServiceRequest::payload]", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Field[actix_web::service::ServiceRequest::req]", "value", "dfc-generated"] + - ["::guard_ctx", "Argument[self]", "ReturnValue.Field[actix_web::guard::GuardContext::req]", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[actix_web::service::ServiceRequest::payload]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[actix_web::service::ServiceRequest::req]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::into_response", "Argument[self].Field[actix_web::service::ServiceRequest::req]", "ReturnValue.Field[actix_web::service::ServiceResponse::request]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::service::ServiceRequest::req]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_web::service::ServiceRequest::payload]", "value", "dfc-generated"] + - ["::parts", "Argument[self].Field[actix_web::service::ServiceRequest::payload]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] + - ["::parts", "Argument[self].Field[actix_web::service::ServiceRequest::req]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] + - ["::parts_mut", "Argument[self].Field[actix_web::service::ServiceRequest::payload]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] + - ["::parts_mut", "Argument[self].Field[actix_web::service::ServiceRequest::req]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] + - ["::request", "Argument[self].Field[actix_web::service::ServiceRequest::req]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::set_payload", "Argument[0]", "Argument[self].Field[actix_web::service::ServiceRequest::payload]", "value", "dfc-generated"] + - ["::map_body", "Argument[self].Field[actix_web::service::ServiceResponse::request]", "ReturnValue.Field[actix_web::service::ServiceResponse::request]", "value", "dfc-generated"] + - ["::map_body", "Argument[self].Field[actix_web::service::ServiceResponse::response].Field[actix_web::response::response::HttpResponse::error]", "ReturnValue.Field[actix_web::service::ServiceResponse::response].Field[actix_web::response::response::HttpResponse::error]", "value", "dfc-generated"] + - ["::error_response", "Argument[self].Field[actix_web::service::ServiceResponse::request]", "ReturnValue.Field[actix_web::service::ServiceResponse::request]", "value", "dfc-generated"] + - ["::from_err", "Argument[1]", "ReturnValue.Field[actix_web::service::ServiceResponse::request]", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[actix_web::service::ServiceResponse::request]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[actix_web::service::ServiceResponse::response]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::into_response", "Argument[0]", "ReturnValue.Field[actix_web::service::ServiceResponse::response]", "value", "dfc-generated"] + - ["::into_response", "Argument[self].Field[actix_web::service::ServiceResponse::request]", "ReturnValue.Field[actix_web::service::ServiceResponse::request]", "value", "dfc-generated"] + - ["::map_body", "Argument[self].Field[actix_web::service::ServiceResponse::request]", "ReturnValue.Field[actix_web::service::ServiceResponse::request]", "value", "dfc-generated"] + - ["::map_body", "Argument[self].Field[actix_web::service::ServiceResponse::response].Field[actix_web::response::response::HttpResponse::error]", "ReturnValue.Field[actix_web::service::ServiceResponse::response].Field[actix_web::response::response::HttpResponse::error]", "value", "dfc-generated"] + - ["::map_into_boxed_body", "Argument[self].Field[actix_web::service::ServiceResponse::request]", "ReturnValue.Field[actix_web::service::ServiceResponse::request]", "value", "dfc-generated"] + - ["::map_into_boxed_body", "Argument[self].Field[actix_web::service::ServiceResponse::response].Field[actix_web::response::response::HttpResponse::error]", "ReturnValue.Field[actix_web::service::ServiceResponse::response].Field[actix_web::response::response::HttpResponse::error]", "value", "dfc-generated"] + - ["::map_into_left_body", "Argument[self].Field[actix_web::service::ServiceResponse::request]", "ReturnValue.Field[actix_web::service::ServiceResponse::request]", "value", "dfc-generated"] + - ["::map_into_left_body", "Argument[self].Field[actix_web::service::ServiceResponse::response].Field[actix_web::response::response::HttpResponse::error]", "ReturnValue.Field[actix_web::service::ServiceResponse::response].Field[actix_web::response::response::HttpResponse::error]", "value", "dfc-generated"] + - ["::map_into_right_body", "Argument[self].Field[actix_web::service::ServiceResponse::request]", "ReturnValue.Field[actix_web::service::ServiceResponse::request]", "value", "dfc-generated"] + - ["::map_into_right_body", "Argument[self].Field[actix_web::service::ServiceResponse::response].Field[actix_web::response::response::HttpResponse::error]", "ReturnValue.Field[actix_web::service::ServiceResponse::response].Field[actix_web::response::response::HttpResponse::error]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::service::ServiceResponse::request]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_web::service::ServiceResponse::response]", "value", "dfc-generated"] + - ["::request", "Argument[self].Field[actix_web::service::ServiceResponse::request]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::response", "Argument[self].Field[actix_web::service::ServiceResponse::response]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::response_mut", "Argument[self].Field[actix_web::service::ServiceResponse::response]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[actix_web::service::WebService::guards]", "ReturnValue.Field[actix_web::service::WebServiceImpl::guards]", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[actix_web::service::WebService::name]", "ReturnValue.Field[actix_web::service::WebServiceImpl::name]", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[actix_web::service::WebService::rdef]", "ReturnValue.Field[actix_web::service::WebServiceImpl::rdef]", "value", "dfc-generated"] + - ["::guard", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::app_data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::append_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::insert_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::method", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::param", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::peer_addr", "Argument[0]", "Argument[self].Field[actix_web::test::test_request::TestRequest::peer_addr].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::peer_addr", "Argument[0]", "ReturnValue.Field[actix_web::test::test_request::TestRequest::peer_addr].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::peer_addr", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::rmap", "Argument[0]", "Argument[self].Field[actix_web::test::test_request::TestRequest::rmap]", "value", "dfc-generated"] + - ["::rmap", "Argument[0]", "ReturnValue.Field[actix_web::test::test_request::TestRequest::rmap]", "value", "dfc-generated"] + - ["::rmap", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_form", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_json", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_payload", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::uri", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[actix_web::thin_data::ThinData(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[actix_web::thin_data::ThinData(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::thin_data::ThinData(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::thin_data::ThinData(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_request", "Argument[0].Reference", "ReturnValue.Field[actix_web::types::either::EitherExtractFut::req]", "value", "dfc-generated"] + - ["::unwrap_left", "Argument[self].Field[actix_web::types::either::Either::Left(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_right", "Argument[self].Field[actix_web::types::either::Either::Right(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::types::either::EitherExtractFut::req]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::types::either::EitherExtractFut::state]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::types::either::EitherExtractFut::req]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[actix_web::types::either::EitherExtractFut::state]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::from_request", "Argument[0].Reference", "ReturnValue.Field[actix_web::types::form::FormExtractFut::req]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::types::form::Form(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::types::form::Form(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[actix_web::types::form::Form(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "Argument[self].Field[actix_web::types::form::FormConfig::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "ReturnValue.Field[actix_web::types::form::FormConfig::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "Argument[self].Field[actix_web::types::form::UrlEncoded::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "ReturnValue.Field[actix_web::types::form::UrlEncoded::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::types::header::Header(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::types::header::Header(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[actix_web::types::header::Header(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::respond_to", "Argument[self].Field[0]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::body]", "value", "dfc-generated"] + - ["::respond_to", "Argument[self].Field[actix_web::types::html::Html(0)]", "ReturnValue.Field[actix_web::response::response::HttpResponse::res].Field[actix_http::responses::response::Response::body]", "value", "dfc-generated"] + - ["::from_request", "Argument[0].Reference", "ReturnValue.Field[actix_web::types::json::JsonExtractFut::req].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::types::json::Json(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::types::json::Json(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[actix_web::types::json::Json(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "ReturnValue.Field[actix_web::types::json::JsonBody::Body::limit]", "value", "dfc-generated"] + - ["::content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::content_type_required", "Argument[0]", "Argument[self].Field[actix_web::types::json::JsonConfig::content_type_required]", "value", "dfc-generated"] + - ["::content_type_required", "Argument[0]", "ReturnValue.Field[actix_web::types::json::JsonConfig::content_type_required]", "value", "dfc-generated"] + - ["::content_type_required", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "Argument[self].Field[actix_web::types::json::JsonConfig::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "ReturnValue.Field[actix_web::types::json::JsonConfig::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[actix_web::types::path::Path(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[actix_web::types::path::Path(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::types::path::Path(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::types::path::Path(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[actix_web::types::path::Path(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "Argument[self].Field[actix_web::types::payload::HttpMessageBody::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "ReturnValue.Field[actix_web::types::payload::HttpMessageBody::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[actix_web::types::payload::Payload(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "Argument[self].Field[actix_web::types::payload::PayloadConfig::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "ReturnValue.Field[actix_web::types::payload::PayloadConfig::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mimetype", "Argument[0]", "Argument[self].Field[actix_web::types::payload::PayloadConfig::mimetype].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::mimetype", "Argument[0]", "ReturnValue.Field[actix_web::types::payload::PayloadConfig::mimetype].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::mimetype", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web::types::payload::PayloadConfig::limit]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[actix_web::types::query::Query(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[actix_web::types::query::Query(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[actix_web::types::query::Query(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "Argument[self].Field[actix_web::types::readlines::Readlines::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "ReturnValue.Field[actix_web::types::readlines::Readlines::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::parts", "Argument[self].Field[actix_web_actors::context::HttpContext::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::parts", "Argument[self].Field[actix_web_actors::ws::WebsocketContext::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::with_codec", "Argument[2]", "ReturnValue.Field[actix_web_actors::ws::WebsocketContextFut::encoder]", "value", "dfc-generated"] + - ["::codec", "Argument[0]", "Argument[self].Field[actix_web_actors::ws::WsResponseBuilder::codec].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::codec", "Argument[0]", "ReturnValue.Field[actix_web_actors::ws::WsResponseBuilder::codec].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::codec", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::frame_size", "Argument[0]", "Argument[self].Field[actix_web_actors::ws::WsResponseBuilder::frame_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::frame_size", "Argument[0]", "ReturnValue.Field[actix_web_actors::ws::WsResponseBuilder::frame_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::frame_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[actix_web_actors::ws::WsResponseBuilder::actor]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[actix_web_actors::ws::WsResponseBuilder::req]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[actix_web_actors::ws::WsResponseBuilder::stream]", "value", "dfc-generated"] + - ["::protocols", "Argument[0]", "Argument[self].Field[actix_web_actors::ws::WsResponseBuilder::protocols].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::protocols", "Argument[0]", "ReturnValue.Field[actix_web_actors::ws::WsResponseBuilder::protocols].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::protocols", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::try_from", "Argument[0].Reference", "ReturnValue.Field[core::result::Result::Ok(0)].Field[actix_web_codegen::route::MethodTypeExt::Custom(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0].Field[actix_web_codegen::route::RouteArgs::path]", "ReturnValue.Field[actix_web_codegen::route::Args::path]", "value", "dfc-generated"] + - ["::new", "Argument[1].Field[syn::item::ItemFn::sig].Field[syn::item::Signature::ident]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[actix_web_codegen::route::Route::name]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[actix_web_codegen::route::Route::ast]", "value", "dfc-generated"] + - ["::size", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::patterns", "Argument[self].Field[alloc::string::String::vec].Reference", "ReturnValue.Field[actix_router::pattern::Patterns::Single(0)].Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::patterns", "Argument[self].Field[alloc::string::String::vec]", "ReturnValue.Field[actix_router::pattern::Patterns::Single(0)].Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::patterns", "Argument[self].Reference", "ReturnValue.Field[actix_router::pattern::Patterns::Single(0)]", "value", "dfc-generated"] + - ["::path", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::size", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::handle_field", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::handle_field", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::handle_field", "Argument[2]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::handle_field", "Argument[3]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::add_default_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::basic_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::bearer_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::connector", "Argument[0]", "ReturnValue.Field[awc::builder::ClientBuilder::connector]", "value", "dfc-generated"] + - ["::disable_redirects", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::disable_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[awc::builder::ClientBuilder::timeout]", "ReturnValue.Field[awc::client::Client(0)].Field[awc::client::ClientConfig::timeout]", "value", "dfc-generated"] + - ["::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::initial_connection_window_size", "Argument[0]", "Argument[self].Field[awc::builder::ClientBuilder::conn_window_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::initial_connection_window_size", "Argument[0]", "ReturnValue.Field[awc::builder::ClientBuilder::conn_window_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::initial_connection_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::initial_window_size", "Argument[0]", "Argument[self].Field[awc::builder::ClientBuilder::stream_window_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::initial_window_size", "Argument[0]", "ReturnValue.Field[awc::builder::ClientBuilder::stream_window_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::initial_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::local_address", "Argument[0]", "Argument[self].Field[awc::builder::ClientBuilder::local_address].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::local_address", "Argument[0]", "ReturnValue.Field[awc::builder::ClientBuilder::local_address].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::local_address", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_http_version", "Argument[0]", "Argument[self].Field[awc::builder::ClientBuilder::max_http_version].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max_http_version", "Argument[0]", "ReturnValue.Field[awc::builder::ClientBuilder::max_http_version].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max_http_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_redirects", "Argument[0]", "Argument[self].Field[awc::builder::ClientBuilder::max_redirects]", "value", "dfc-generated"] + - ["::max_redirects", "Argument[0]", "ReturnValue.Field[awc::builder::ClientBuilder::max_redirects]", "value", "dfc-generated"] + - ["::max_redirects", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::no_default_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::timeout", "Argument[0]", "Argument[self].Field[awc::builder::ClientBuilder::timeout].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::timeout", "Argument[0]", "ReturnValue.Field[awc::builder::ClientBuilder::timeout].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::wrap", "Argument[0]", "ReturnValue.Field[awc::builder::ClientBuilder::middleware].Field[awc::middleware::NestTransform::parent]", "value", "dfc-generated"] + - ["::delete", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::head", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::options", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::patch", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::post", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::put", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::request", "Argument[0]", "ReturnValue.Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::method]", "value", "dfc-generated"] + - ["::request_from", "Argument[1].Field[actix_http::requests::head::RequestHead::method].Reference", "ReturnValue.Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::method]", "value", "dfc-generated"] + - ["::request_from", "Argument[1].Field[actix_http::requests::head::RequestHead::method]", "ReturnValue.Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::method]", "value", "dfc-generated"] + - ["::ws", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::no_disconnect_timeout", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::open_tunnel", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::open_tunnel", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::send_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::send_request", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::send_request", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[awc::client::connection::H2ConnectionInner::sender]", "value", "dfc-generated"] + - ["::conn_keep_alive", "Argument[0]", "Argument[self].Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::conn_keep_alive]", "value", "dfc-generated"] + - ["::conn_keep_alive", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::conn_keep_alive]", "value", "dfc-generated"] + - ["::conn_keep_alive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::conn_lifetime", "Argument[0]", "Argument[self].Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::conn_lifetime]", "value", "dfc-generated"] + - ["::conn_lifetime", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::conn_lifetime]", "value", "dfc-generated"] + - ["::conn_lifetime", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::connector", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::connector]", "value", "dfc-generated"] + - ["::connector", "Argument[self].Field[awc::client::connector::Connector::config]", "ReturnValue.Field[awc::client::connector::Connector::config]", "value", "dfc-generated"] + - ["::connector", "Argument[self].Field[awc::client::connector::Connector::tls]", "ReturnValue.Field[awc::client::connector::Connector::tls]", "value", "dfc-generated"] + - ["::disconnect_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::finish", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::handshake_timeout", "Argument[0]", "Argument[self].Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::handshake_timeout]", "value", "dfc-generated"] + - ["::handshake_timeout", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::handshake_timeout]", "value", "dfc-generated"] + - ["::handshake_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::initial_connection_window_size", "Argument[0]", "Argument[self].Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::conn_window_size]", "value", "dfc-generated"] + - ["::initial_connection_window_size", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::conn_window_size]", "value", "dfc-generated"] + - ["::initial_connection_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::initial_window_size", "Argument[0]", "Argument[self].Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::stream_window_size]", "value", "dfc-generated"] + - ["::initial_window_size", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::stream_window_size]", "value", "dfc-generated"] + - ["::initial_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "Argument[self].Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::limit]", "value", "dfc-generated"] + - ["::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::local_address", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_http_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::openssl", "Argument[0]", "Argument[self].Field[awc::client::connector::Connector::tls].Field[awc::client::connector::OurTlsConnector::Openssl(0)]", "value", "dfc-generated"] + - ["::openssl", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::tls].Field[awc::client::connector::OurTlsConnector::Openssl(0)]", "value", "dfc-generated"] + - ["::openssl", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::rustls", "Argument[0]", "Argument[self].Field[awc::client::connector::Connector::tls].Field[awc::client::connector::OurTlsConnector::Rustls020(0)]", "value", "dfc-generated"] + - ["::rustls", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::tls].Field[awc::client::connector::OurTlsConnector::Rustls020(0)]", "value", "dfc-generated"] + - ["::rustls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::rustls_021", "Argument[0]", "Argument[self].Field[awc::client::connector::Connector::tls].Field[awc::client::connector::OurTlsConnector::Rustls021(0)]", "value", "dfc-generated"] + - ["::rustls_021", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::tls].Field[awc::client::connector::OurTlsConnector::Rustls021(0)]", "value", "dfc-generated"] + - ["::rustls_021", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::rustls_0_22", "Argument[0]", "Argument[self].Field[awc::client::connector::Connector::tls].Field[awc::client::connector::OurTlsConnector::Rustls022(0)]", "value", "dfc-generated"] + - ["::rustls_0_22", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::tls].Field[awc::client::connector::OurTlsConnector::Rustls022(0)]", "value", "dfc-generated"] + - ["::rustls_0_22", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::rustls_0_23", "Argument[0]", "Argument[self].Field[awc::client::connector::Connector::tls].Field[awc::client::connector::OurTlsConnector::Rustls023(0)]", "value", "dfc-generated"] + - ["::rustls_0_23", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::tls].Field[awc::client::connector::OurTlsConnector::Rustls023(0)]", "value", "dfc-generated"] + - ["::rustls_0_23", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::ssl", "Argument[0]", "Argument[self].Field[awc::client::connector::Connector::tls].Field[awc::client::connector::OurTlsConnector::Openssl(0)]", "value", "dfc-generated"] + - ["::ssl", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::tls].Field[awc::client::connector::OurTlsConnector::Openssl(0)]", "value", "dfc-generated"] + - ["::ssl", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::timeout", "Argument[0]", "Argument[self].Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::timeout]", "value", "dfc-generated"] + - ["::timeout", "Argument[0]", "ReturnValue.Field[awc::client::connector::Connector::config].Field[awc::client::config::ConnectorConfig::timeout]", "value", "dfc-generated"] + - ["::timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::call", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::call", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::client::connector::TcpConnectorFuture::fut]", "ReturnValue.Field[awc::client::connector::TcpConnectorFutureProj::fut].Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::client::connector::TcpConnectorFuture::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::client::connector::TcpConnectorInnerFuture::fut]", "ReturnValue.Field[awc::client::connector::TcpConnectorInnerFutureProj::fut].Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::client::connector::TcpConnectorInnerFuture::timeout]", "ReturnValue.Field[awc::client::connector::TcpConnectorInnerFutureProj::timeout].Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::client::connector::TcpConnectorInnerFuture::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::client::connector::TcpConnectorInnerFuture::timeout]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[awc::client::connector::TlsConnectorService::timeout]", "ReturnValue.Field[awc::client::connector::TlsConnectorFuture::TcpConnect::timeout]", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[awc::client::connector::TlsConnectorService::tls_service].Reference", "ReturnValue.Field[awc::client::connector::TlsConnectorFuture::TcpConnect::tls_service].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[awc::client::connector::TlsConnectorService::tls_service]", "ReturnValue.Field[awc::client::connector::TlsConnectorFuture::TcpConnect::tls_service].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::ConnectError::H2(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::ConnectError::Io(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::ConnectError::Resolver(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::ConnectError::SslError(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue.Field[awc::client::error::FreezeRequestError::Custom(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[1]", "ReturnValue.Field[awc::client::error::FreezeRequestError::Custom(1)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::FreezeRequestError::Http(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::FreezeRequestError::Url(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::InvalidUrl::HttpError(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue.Field[awc::client::error::SendRequestError::Custom(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[1]", "ReturnValue.Field[awc::client::error::SendRequestError::Custom(1)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::SendRequestError::Body(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::SendRequestError::Connect(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::SendRequestError::H2(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::SendRequestError::Http(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::SendRequestError::Response(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::SendRequestError::Send(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::error::SendRequestError::Url(0)]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::client::h1proto::PlStream::framed]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::client::h1proto::PlStream::framed]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::call", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[awc::client::pool::ConnectionPool::connector]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[awc::client::pool::ConnectionPoolInner(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::client::pool::Key::authority]", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[awc::client::pool::test::TestPoolConnector::generated].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[awc::client::pool::test::TestPoolConnector::generated]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_client_response", "Argument[self].Field[awc::connect::ConnectResponse::Client(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_tunnel_response", "Argument[self].Field[awc::connect::ConnectResponse::Tunnel(0)]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::into_tunnel_response", "Argument[self].Field[awc::connect::ConnectResponse::Tunnel(1)]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::call", "Argument[0]", "ReturnValue.Field[awc::connect::ConnectRequestFuture::Connection::req].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[awc::connect::DefaultConnector::connector]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::error::JsonPayloadError::Deserialize(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::error::JsonPayloadError::Payload(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue.Field[awc::error::WsClientError::InvalidChallengeResponse(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[1]", "ReturnValue.Field[awc::error::WsClientError::InvalidChallengeResponse(1)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::error::WsClientError::InvalidConnectionHeader(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::error::WsClientError::InvalidResponseStatus(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::error::WsClientError::Protocol(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::error::WsClientError::SendRequest(0)]", "value", "dfc-generated"] + - ["::extra_header", "Argument[self].Reference", "ReturnValue.Field[awc::frozen::FrozenSendBuilder::req]", "value", "dfc-generated"] + - ["::extra_headers", "Argument[0]", "ReturnValue.Field[awc::frozen::FrozenSendBuilder::extra_headers]", "value", "dfc-generated"] + - ["::extra_headers", "Argument[self].Reference", "ReturnValue.Field[awc::frozen::FrozenSendBuilder::req]", "value", "dfc-generated"] + - ["::send", "Argument[self].Field[awc::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::send_body", "Argument[self].Field[awc::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::send_form", "Argument[self].Field[awc::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::send_json", "Argument[self].Field[awc::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::send_stream", "Argument[self].Field[awc::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::extra_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[awc::frozen::FrozenSendBuilder::req]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[awc::frozen::FrozenSendBuilder::extra_headers]", "value", "dfc-generated"] + - ["::send", "Argument[self].Field[awc::frozen::FrozenSendBuilder::req].Field[awc::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::send_body", "Argument[self].Field[awc::frozen::FrozenSendBuilder::req].Field[awc::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::send_form", "Argument[self].Field[awc::frozen::FrozenSendBuilder::req].Field[awc::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::send_json", "Argument[self].Field[awc::frozen::FrozenSendBuilder::req].Field[awc::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::send_stream", "Argument[self].Field[awc::frozen::FrozenSendBuilder::req].Field[awc::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[awc::middleware::NestTransform::child]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[awc::middleware::NestTransform::parent]", "value", "dfc-generated"] + - ["::max_redirect_times", "Argument[0]", "Argument[self].Field[awc::middleware::redirect::Redirect::max_redirect_times]", "value", "dfc-generated"] + - ["::max_redirect_times", "Argument[0]", "ReturnValue.Field[awc::middleware::redirect::Redirect::max_redirect_times]", "value", "dfc-generated"] + - ["::max_redirect_times", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::call", "Argument[0].Field[awc::connect::ConnectRequest::Client(2)]", "ReturnValue.Field[awc::middleware::redirect::RedirectServiceFuture::Client::addr]", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[awc::middleware::redirect::RedirectService::connector]", "ReturnValue.Field[awc::middleware::redirect::RedirectServiceFuture::Client::connector].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[awc::middleware::redirect::RedirectService::max_redirect_times]", "ReturnValue.Field[awc::middleware::redirect::RedirectServiceFuture::Client::max_redirect_times]", "value", "dfc-generated"] + - ["::address", "Argument[0]", "Argument[self].Field[awc::request::ClientRequest::addr].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::address", "Argument[0]", "ReturnValue.Field[awc::request::ClientRequest::addr].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::address", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::append_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::basic_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::bearer_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::camel_case", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::content_length", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::force_close", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::get_method", "Argument[self].Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::method]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_peer_addr", "Argument[self].Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::peer_addr]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_uri", "Argument[self].Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::uri]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_version", "Argument[self].Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::version]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::headers", "Argument[self].Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::headers_mut", "Argument[self].Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::insert_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::insert_header_if_none", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::method", "Argument[0]", "Argument[self].Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::method]", "value", "dfc-generated"] + - ["::method", "Argument[0]", "ReturnValue.Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::method]", "value", "dfc-generated"] + - ["::method", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::method]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[awc::request::ClientRequest::config]", "value", "dfc-generated"] + - ["::no_decompress", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::query", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::timeout", "Argument[0]", "Argument[self].Field[awc::request::ClientRequest::timeout].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::timeout", "Argument[0]", "ReturnValue.Field[awc::request::ClientRequest::timeout].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::uri", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::version", "Argument[0]", "Argument[self].Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::version]", "value", "dfc-generated"] + - ["::version", "Argument[0]", "ReturnValue.Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::version]", "value", "dfc-generated"] + - ["::version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[awc::responses::read_body::ReadBody::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[awc::responses::read_body::ReadBody::limit]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::responses::read_body::ReadBody::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::responses::read_body::ReadBody::limit]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::responses::read_body::ReadBody::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::responses::read_body::ReadBody::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::responses::read_body::ReadBody::limit]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[awc::responses::read_body::ReadBody::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::extensions", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::extensions_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::headers", "Argument[self].Field[awc::responses::response::ClientResponse::head].Field[actix_http::responses::head::ResponseHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::_timeout", "Argument[0]", "Argument[self].Field[awc::responses::response::ClientResponse::timeout].Field[awc::responses::ResponseTimeout::Disabled(0)]", "value", "dfc-generated"] + - ["::_timeout", "Argument[0]", "ReturnValue.Field[awc::responses::response::ClientResponse::timeout].Field[awc::responses::ResponseTimeout::Disabled(0)]", "value", "dfc-generated"] + - ["::_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookies", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::head", "Argument[self].Field[awc::responses::response::ClientResponse::head]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::headers", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::map_body", "Argument[0].ReturnValue", "ReturnValue.Field[awc::responses::response::ClientResponse::payload]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[awc::responses::response::ClientResponse::head]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[awc::responses::response::ClientResponse::payload]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::status", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::timeout", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::version", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::sender::PrepForSendingError::Form(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::sender::PrepForSendingError::Http(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::sender::PrepForSendingError::Json(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[awc::sender::PrepForSendingError::Url(0)]", "value", "dfc-generated"] + - ["::send", "Argument[1]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::send_body", "Argument[1]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::send_form", "Argument[1]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::send_json", "Argument[1]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::send_stream", "Argument[1]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(0)]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[awc::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] + - ["::append_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[awc::test::TestResponse::head]", "ReturnValue.Field[awc::responses::response::ClientResponse::head]", "value", "dfc-generated"] + - ["::insert_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_payload", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::version", "Argument[0]", "Argument[self].Field[awc::test::TestResponse::head].Field[actix_http::responses::head::ResponseHead::version]", "value", "dfc-generated"] + - ["::version", "Argument[0]", "ReturnValue.Field[awc::test::TestResponse::head].Field[actix_http::responses::head::ResponseHead::version]", "value", "dfc-generated"] + - ["::version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::address", "Argument[0]", "Argument[self].Field[awc::ws::WebsocketsRequest::addr].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::address", "Argument[0]", "ReturnValue.Field[awc::ws::WebsocketsRequest::addr].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::address", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::basic_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::bearer_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_frame_size", "Argument[0]", "Argument[self].Field[awc::ws::WebsocketsRequest::max_size]", "value", "dfc-generated"] + - ["::max_frame_size", "Argument[0]", "ReturnValue.Field[awc::ws::WebsocketsRequest::max_size]", "value", "dfc-generated"] + - ["::max_frame_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[awc::ws::WebsocketsRequest::config]", "value", "dfc-generated"] + - ["::origin", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::protocols", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::server_mode", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_header_if_none", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::try_into_bytes", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::path", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::handle_field", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::handle_field", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::handle_field", "Argument[2]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::handle_field", "Argument[3]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[actix_http::ws::proto::CloseCode::Other(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[actix_web::http::header::content_length::ContentLength(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[actix_web::types::either::EitherExtractError::Bytes(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_as_name", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::borrow::Cow::Borrowed(0)]", "value", "dfc-generated"] + - ["::try_into_value", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[actix_http::header::shared::http_date::HttpDate(0)]", "ReturnValue", "value", "dfc-generated"] + - ["actix_files::chunked::new_chunked_read", "Argument[0]", "ReturnValue.Field[actix_files::chunked::ChunkedReadFile::size]", "value", "dfc-generated"] + - ["actix_files::chunked::new_chunked_read", "Argument[1]", "ReturnValue.Field[actix_files::chunked::ChunkedReadFile::offset]", "value", "dfc-generated"] + - ["actix_files::directory::directory_listing", "Argument[1].Reference", "ReturnValue.Field[core::result::Result::Ok(0)].Field[actix_web::service::ServiceResponse::request]", "value", "dfc-generated"] + - ["actix_files::encoding::equiv_utf8_text", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["actix_router::resource::insert_slash", "Argument[0]", "ReturnValue.Field[alloc::borrow::Cow::Borrowed(0)]", "value", "dfc-generated"] + - ["actix_web::guard::Method", "Argument[0]", "ReturnValue.Field[actix_web::guard::MethodGuard(0)]", "value", "dfc-generated"] + - ["actix_web::guard::fn_guard", "Argument[0]", "ReturnValue.Field[actix_web::guard::FnGuard(0)]", "value", "dfc-generated"] + - ["actix_web_codegen::connect", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::delete", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::get", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::head", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::options", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::patch", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::post", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::put", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::route::with_method", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::route::with_methods", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::route", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::routes", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::scope::with_scope", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::scope", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["actix_web_codegen::trace", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::respond_to", "Argument[self]", "pointer-access", "df-generated"] + - ["::into_response", "Argument[self]", "pointer-access", "df-generated"] + - ["::last_modified", "Argument[self]", "pointer-access", "df-generated"] + - ["::from_io", "Argument[1]", "pointer-access", "df-generated"] + - ["::new", "Argument[4]", "pointer-access", "df-generated"] + - ["::new", "Argument[4]", "pointer-access", "df-generated"] + - ["::call", "Argument[0]", "log-injection", "df-generated"] + - ["::new", "Argument[1]", "log-injection", "df-generated"] + - ["::new_strong", "Argument[0]", "log-injection", "df-generated"] + - ["::new_weak", "Argument[0]", "log-injection", "df-generated"] + - ["::strong", "Argument[0]", "log-injection", "df-generated"] + - ["::weak", "Argument[0]", "log-injection", "df-generated"] + - ["::new", "Argument[0]", "pointer-access", "df-generated"] + - ["::new", "Argument[0]", "log-injection", "df-generated"] + - ["::custom_request_replace", "Argument[0]", "log-injection", "df-generated"] + - ["::custom_response_replace", "Argument[0]", "log-injection", "df-generated"] + - ["::new", "Argument[0]", "log-injection", "df-generated"] + - ["::respond_to", "Argument[self]", "log-injection", "df-generated"] + - ["::register", "Argument[self]", "pointer-access", "df-generated"] + - ["::register", "Argument[self]", "pointer-access", "df-generated"] + - ["::write", "Argument[self]", "log-injection", "df-generated"] + - ["::write_eof", "Argument[self]", "log-injection", "df-generated"] + - ["::binary", "Argument[self]", "log-injection", "df-generated"] + - ["::close", "Argument[self]", "log-injection", "df-generated"] + - ["::ping", "Argument[self]", "log-injection", "df-generated"] + - ["::pong", "Argument[self]", "log-injection", "df-generated"] + - ["::text", "Argument[self]", "log-injection", "df-generated"] + - ["::write_raw", "Argument[self]", "log-injection", "df-generated"] + - ["::send", "Argument[self]", "pointer-access", "df-generated"] + - ["::send_body", "Argument[self]", "pointer-access", "df-generated"] + - ["::send_form", "Argument[self]", "pointer-access", "df-generated"] + - ["::send_json", "Argument[self]", "pointer-access", "df-generated"] + - ["::send_stream", "Argument[self]", "pointer-access", "df-generated"] + - ["::send", "Argument[self]", "pointer-access", "df-generated"] + - ["::send_body", "Argument[self]", "pointer-access", "df-generated"] + - ["::send_form", "Argument[self]", "pointer-access", "df-generated"] + - ["::send_json", "Argument[self]", "pointer-access", "df-generated"] + - ["::send_stream", "Argument[self]", "pointer-access", "df-generated"] + - ["::send", "Argument[2]", "pointer-access", "df-generated"] + - ["::send", "Argument[3]", "pointer-access", "df-generated"] + - ["::send_body", "Argument[2]", "pointer-access", "df-generated"] + - ["::send_body", "Argument[3]", "pointer-access", "df-generated"] + - ["::send_form", "Argument[2]", "pointer-access", "df-generated"] + - ["::send_form", "Argument[3]", "pointer-access", "df-generated"] + - ["::send_json", "Argument[2]", "pointer-access", "df-generated"] + - ["::send_json", "Argument[3]", "pointer-access", "df-generated"] + - ["::send_stream", "Argument[2]", "pointer-access", "df-generated"] + - ["::send_stream", "Argument[3]", "pointer-access", "df-generated"] + - ["::new", "Argument[2]", "pointer-access", "df-generated"] + - ["actix_http::ws::proto::hash_key", "Argument[0]", "hasher-input", "df-generated"] + - ["awc::client::h2proto::send_request", "Argument[1]", "log-injection", "df-generated"] 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 deleted file mode 100644 index ed7c81cde187..000000000000 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-files.model.yml +++ /dev/null @@ -1,58 +0,0 @@ -# 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/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", "::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"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::files_listing_renderer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::guard", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::index_file", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::method_guard", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::mime_override", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::path_filter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::prefer_utf8", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::redirect_to_slash_directory", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::show_files_listing", "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_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", "::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"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::disable_content_disposition", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::etag", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::file", "Argument[self].Field[crate::named::NamedFile::file]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::from_file", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::named::NamedFile::file]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::last_modified", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::metadata", "Argument[self].Field[crate::named::NamedFile::md]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::modified", "Argument[self].Field[crate::named::NamedFile::modified]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::path", "Argument[self].Field[crate::named::NamedFile::path]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::path", "Argument[self].Field[crate::named::NamedFile::path]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::prefer_utf8", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::set_content_disposition", "Argument[0]", "Argument[self].Field[crate::named::NamedFile::content_disposition]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::set_content_disposition", "Argument[0]", "ReturnValue.Field[crate::named::NamedFile::content_disposition]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::set_content_disposition", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::set_content_encoding", "Argument[0]", "Argument[self].Field[crate::named::NamedFile::encoding].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::set_content_encoding", "Argument[0]", "ReturnValue.Field[crate::named::NamedFile::encoding].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::set_content_encoding", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::set_content_type", "Argument[0]", "Argument[self].Field[crate::named::NamedFile::content_type]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::set_content_type", "Argument[0]", "ReturnValue.Field[crate::named::NamedFile::content_type]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::set_content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::set_status_code", "Argument[0]", "Argument[self].Field[crate::named::NamedFile::status_code]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-files", "::set_status_code", "Argument[0]", "ReturnValue.Field[crate::named::NamedFile::status_code]", "value", "dfc-generated"] - - ["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", "::as_ref", "Argument[self]", "ReturnValue", "taint", "df-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"] 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 deleted file mode 100644 index e76569692ab7..000000000000 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http-test.model.yml +++ /dev/null @@ -1,40 +0,0 @@ -# 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/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 deleted file mode 100644 index f1e7d73e1294..000000000000 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http.model.yml +++ /dev/null @@ -1,227 +0,0 @@ -# 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/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", "::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", "::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_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", "::expect", "Argument[self]", "ReturnValue", "taint", "df-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"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::local_addr", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::on_connect_ext", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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]", "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"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::source", "Argument[self].Field[crate::encoding::encoder::EncoderError::Io(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::source", "Argument[self].Field[crate::error::DispatchError::H2(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::source", "Argument[self].Field[crate::error::DispatchError::Io(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::source", "Argument[self].Field[crate::error::DispatchError::Parse(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::with_cause", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::error::ParseError::Io(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::error::ParseError::Uri(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::error::ParseError::Utf8(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::error::PayloadError::Http2Payload(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::error::PayloadError::Incomplete(0)].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::error::PayloadError::Incomplete(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::source", "Argument[self].Field[crate::error::PayloadError::Http2Payload(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::source", "Argument[self].Field[crate::error::PayloadError::Incomplete(0)].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::source", "Argument[self].Field[crate::error::PayloadError::Io(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::finish", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::finish", "Argument[self].Field[crate::extensions::NoOpHasher(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::write_u64", "Argument[0]", "Argument[self].Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::write_u64", "Argument[0]", "Argument[self].Field[crate::extensions::NoOpHasher(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::h1::Message::Item(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::chunk", "Argument[self].Field[crate::h1::Message::Chunk(0)].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::message", "Argument[self].Field[crate::h1::Message::Item(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::into_payload_codec", "Argument[self].Field[crate::h1::client::ClientCodec::inner]", "ReturnValue.Field[crate::h1::client::ClientPayloadCodec::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[0]", "ReturnValue.Field[crate::h1::client::ClientCodec::inner].Field[crate::h1::client::ClientCodecInner::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::into_message_codec", "Argument[self].Field[crate::h1::client::ClientPayloadCodec::inner]", "ReturnValue.Field[crate::h1::client::ClientCodec::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::config", "Argument[self].Field[crate::h1::codec::Codec::config]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[0]", "ReturnValue.Field[crate::h1::codec::Codec::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::length", "Argument[0]", "ReturnValue.Field[crate::h1::decoder::PayloadDecoder::kind].Field[crate::h1::decoder::Kind::Length(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::chunk", "Argument[self].Field[crate::h1::decoder::PayloadItem::Chunk(0)]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::on_connect_ext", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::upgrade", "Argument[0]", "ReturnValue.Field[crate::h1::service::H1Service::upgrade]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::with_config", "Argument[0]", "ReturnValue.Field[crate::h1::service::H1Service::cfg]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[0]", "ReturnValue.Field[crate::h1::utils::SendResponse::framed].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[1].Field[crate::responses::response::Response::body]", "ReturnValue.Field[crate::h1::utils::SendResponse::body].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[0]", "ReturnValue.Field[crate::h2::Payload::stream]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[0]", "ReturnValue.Field[crate::h2::dispatcher::Dispatcher::connection]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::with_config", "Argument[0]", "ReturnValue.Field[crate::h2::service::H2Service::cfg]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::call", "Argument[0].Field[1]", "ReturnValue.Field[crate::h2::service::H2ServiceHandlerResponse::state].Field[crate::h2::service::State::Handshake(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::next", "Argument[self].Field[crate::header::map::Removed::inner].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::deref", "Argument[self].Field[crate::header::map::Value::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::header::shared::http_date::HttpDate(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::max", "Argument[0]", "ReturnValue.Field[crate::header::shared::quality_item::QualityItem::item]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::min", "Argument[0]", "ReturnValue.Field[crate::header::shared::quality_item::QualityItem::item]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[0]", "ReturnValue.Field[crate::header::shared::quality_item::QualityItem::item]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[1]", "ReturnValue.Field[crate::header::shared::quality_item::QualityItem::quality]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::zero", "Argument[0]", "ReturnValue.Field[crate::header::shared::quality_item::QualityItem::item]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::try_into_value", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0].Field[crate::option::Option::Some(0)].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::keep_alive::KeepAlive::Timeout(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::keep_alive::KeepAlive::Timeout(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::keep_alive::KeepAlive::Timeout(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::duration", "Argument[self].Field[crate::keep_alive::KeepAlive::Timeout(0)].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::normalize", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::payload::Payload::H1::payload]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::as_ref", "Argument[self].Field[crate::requests::head::RequestHeadType::Owned(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::requests::head::RequestHeadType::Owned(0)]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::into_parts", "Argument[self].Field[crate::requests::request::Request::payload]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::method", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0].Field[crate::responses::response::Response::head]", "ReturnValue.Field[crate::responses::builder::ResponseBuilder::head].Field[crate::option::Option::Some(0)]", "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", "::content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::force_close", "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", "::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"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::headers_mut", "Argument[self].Field[crate::responses::head::ResponseHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::headers", "Argument[self].Field[crate::responses::head::ResponseHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::headers_mut", "Argument[self].Field[crate::responses::head::ResponseHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[0]", "ReturnValue.Field[crate::responses::head::ResponseHead::status]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::reason", "Argument[self].Field[crate::responses::head::ResponseHead::reason].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0].Reference", "ReturnValue.Field[crate::responses::response::Response::body]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::responses::response::Response::body]", "value", "dfc-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", "::status", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::into_parts", "Argument[self].Field[crate::responses::response::Response::body]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::into_parts", "Argument[self].Field[crate::responses::response::Response::extensions]", "ReturnValue.Field[0].Field[crate::responses::response::Response::extensions]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::into_parts", "Argument[self].Field[crate::responses::response::Response::head]", "ReturnValue.Field[0].Field[crate::responses::response::Response::head]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::map_body", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::map_body", "Argument[self]", "Argument[0]", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::map_body", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::map_into_boxed_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", "::map_into_boxed_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", "::replace_body", "Argument[0]", "ReturnValue.Field[0].Field[crate::responses::response::Response::body]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::replace_body", "Argument[self].Field[crate::responses::response::Response::body]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::replace_body", "Argument[self].Field[crate::responses::response::Response::extensions]", "ReturnValue.Field[0].Field[crate::responses::response::Response::extensions]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::replace_body", "Argument[self].Field[crate::responses::response::Response::head]", "ReturnValue.Field[0].Field[crate::responses::response::Response::head]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::set_body", "Argument[0]", "ReturnValue.Field[crate::responses::response::Response::body]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::on_connect_ext", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::upgrade", "Argument[0]", "ReturnValue.Field[crate::service::HttpService::upgrade]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::with_config", "Argument[0]", "ReturnValue.Field[crate::service::HttpService::cfg]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::decode", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::client_mode", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::max_size", "Argument[0]", "Argument[self].Field[crate::ws::codec::Codec::max_size]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::max_size", "Argument[0]", "ReturnValue.Field[crate::ws::codec::Codec::max_size]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::max_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::with", "Argument[0]", "ReturnValue.Field[crate::ws::dispatcher::Dispatcher::inner].Field[crate::ws::dispatcher::inner::Dispatcher::framed]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::framed", "Argument[self].Field[crate::ws::dispatcher::inner::Dispatcher::framed]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::framed_mut", "Argument[self].Field[crate::ws::dispatcher::inner::Dispatcher::framed]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[0]", "ReturnValue.Field[crate::ws::dispatcher::inner::Dispatcher::framed]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::service", "Argument[self].Field[crate::ws::dispatcher::inner::Dispatcher::service]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::service_mut", "Argument[self].Field[crate::ws::dispatcher::inner::Dispatcher::service]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::tx", "Argument[self].Field[crate::ws::dispatcher::inner::Dispatcher::tx].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::tx", "Argument[self].Field[crate::ws::dispatcher::inner::Dispatcher::tx]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::with_rx", "Argument[0]", "ReturnValue.Field[crate::ws::dispatcher::inner::Dispatcher::framed]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::with_rx", "Argument[2]", "ReturnValue.Field[crate::ws::dispatcher::inner::Dispatcher::rx]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::ws::dispatcher::inner::DispatcherError::Service(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::parse", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::ws::proto::CloseCode::Other(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0].Field[0]", "ReturnValue.Field[crate::ws::proto::CloseReason::code]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::ws::proto::CloseReason::code]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0].Field[crate::ws::proto::CloseCode::Other(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["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 deleted file mode 100644 index f5be3177f5b8..000000000000 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-multipart.model.yml +++ /dev/null @@ -1,43 +0,0 @@ -# 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/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"] - - ["repo:https://github.com/actix/actix-web:actix-multipart", "::name", "Argument[self].Field[crate::field::Field::content_disposition].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-multipart", "::new", "Argument[0]", "ReturnValue.Field[crate::field::Field::content_type]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-multipart", "::new", "Argument[1]", "ReturnValue.Field[crate::field::Field::content_disposition]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-multipart", "::new", "Argument[2].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::field::Field::form_field_name]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-multipart", "::new", "Argument[3]", "ReturnValue.Field[crate::field::Field::headers]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-multipart", "::new", "Argument[4]", "ReturnValue.Field[crate::field::Field::safety]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-multipart", "::new", "Argument[5]", "ReturnValue.Field[crate::field::Field::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-multipart", "::new", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::field::InnerField::boundary]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-multipart", "::new", "Argument[0]", "ReturnValue.Field[crate::form::Limits::total_limit_remaining]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-multipart", "::new", "Argument[1]", "ReturnValue.Field[crate::form::Limits::memory_limit_remaining]", "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::MultipartForm(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", "::memory_limit", "Argument[0]", "Argument[self].Field[crate::form::MultipartFormConfig::memory_limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-multipart", "::memory_limit", "Argument[0]", "ReturnValue.Field[crate::form::MultipartFormConfig::memory_limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-multipart", "::memory_limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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", "::clone", "Argument[self].Field[crate::safety::Safety::clean].Reference", "ReturnValue.Field[crate::safety::Safety::clean]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-router.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-router.model.yml deleted file mode 100644 index 7f2f1a6c17e6..000000000000 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-router.model.yml +++ /dev/null @@ -1,35 +0,0 @@ -# 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/actix/actix-web:actix-router", "<&str as crate::resource_path::ResourcePath>::path", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "<_ as crate::resource_path::Resource>::resource_path", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::patterns", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::path", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::new", "Argument[0]", "ReturnValue.Field[crate::de::PathDeserializer::path]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::resource_path", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::get_mut", "Argument[self].Field[crate::path::Path::path]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::get_ref", "Argument[self].Field[crate::path::Path::path]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::iter", "Argument[self]", "ReturnValue.Field[crate::path::PathIter::params]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::new", "Argument[0]", "ReturnValue.Field[crate::path::Path::path]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::set", "Argument[0]", "Argument[self].Field[crate::path::Path::path]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::patterns", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::capture_match_info_fn", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::id", "Argument[self].Field[crate::resource::ResourceDef::id]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::is_prefix", "Argument[self].Field[crate::resource::ResourceDef::is_prefix]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::join", "Argument[0].Field[crate::resource::ResourceDef::is_prefix]", "ReturnValue.Field[crate::resource::ResourceDef::is_prefix]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::pattern", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::pattern_iter", "Argument[self].Field[crate::resource::ResourceDef::patterns]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::set_id", "Argument[0]", "Argument[self].Field[crate::resource::ResourceDef::id]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::finish", "Argument[self].Field[crate::router::RouterBuilder::routes]", "ReturnValue.Field[crate::router::Router::routes]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::patterns", "Argument[self].Reference", "ReturnValue.Field[crate::pattern::Patterns::Single(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::path", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::path", "Argument[self].Field[crate::url::Url::path].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::new", "Argument[0]", "ReturnValue.Field[crate::url::Url::uri]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::new_with_quoter", "Argument[0]", "ReturnValue.Field[crate::url::Url::uri]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::path", "Argument[self].Field[crate::url::Url::path].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::update", "Argument[0].Reference", "Argument[self].Field[crate::url::Url::uri]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::update_with_quoter", "Argument[0].Reference", "Argument[self].Field[crate::url::Url::uri]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-router", "::uri", "Argument[self].Field[crate::url::Url::uri]", "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 deleted file mode 100644 index 092daa5214e4..000000000000 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-test.model.yml +++ /dev/null @@ -1,60 +0,0 @@ -# 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/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"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::client_request_timeout", "Argument[0]", "ReturnValue.Field[crate::TestServerConfig::client_request_timeout]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::client_request_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::disable_redirects", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::h1", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::h2", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::listen_address", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::openssl", "Argument[0]", "Argument[self].Field[crate::TestServerConfig::stream].Field[crate::StreamType::Openssl(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::openssl", "Argument[0]", "ReturnValue.Field[crate::TestServerConfig::stream].Field[crate::StreamType::Openssl(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::openssl", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::port", "Argument[0]", "Argument[self].Field[crate::TestServerConfig::port]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::port", "Argument[0]", "ReturnValue.Field[crate::TestServerConfig::port]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::port", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls", "Argument[0]", "Argument[self].Field[crate::TestServerConfig::stream].Field[crate::StreamType::Rustls020(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls", "Argument[0]", "ReturnValue.Field[crate::TestServerConfig::stream].Field[crate::StreamType::Rustls020(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_021", "Argument[0]", "Argument[self].Field[crate::TestServerConfig::stream].Field[crate::StreamType::Rustls021(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_021", "Argument[0]", "ReturnValue.Field[crate::TestServerConfig::stream].Field[crate::StreamType::Rustls021(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_021", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_0_20", "Argument[0]", "Argument[self].Field[crate::TestServerConfig::stream].Field[crate::StreamType::Rustls020(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_0_20", "Argument[0]", "ReturnValue.Field[crate::TestServerConfig::stream].Field[crate::StreamType::Rustls020(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_0_20", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_0_21", "Argument[0]", "Argument[self].Field[crate::TestServerConfig::stream].Field[crate::StreamType::Rustls021(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_0_21", "Argument[0]", "ReturnValue.Field[crate::TestServerConfig::stream].Field[crate::StreamType::Rustls021(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_0_21", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_0_22", "Argument[0]", "Argument[self].Field[crate::TestServerConfig::stream].Field[crate::StreamType::Rustls022(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_0_22", "Argument[0]", "ReturnValue.Field[crate::TestServerConfig::stream].Field[crate::StreamType::Rustls022(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_0_22", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_0_23", "Argument[0]", "Argument[self].Field[crate::TestServerConfig::stream].Field[crate::StreamType::Rustls023(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_0_23", "Argument[0]", "ReturnValue.Field[crate::TestServerConfig::stream].Field[crate::StreamType::Rustls023(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::rustls_0_23", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::workers", "Argument[0]", "Argument[self].Field[crate::TestServerConfig::workers]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::workers", "Argument[0]", "ReturnValue.Field[crate::TestServerConfig::workers]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::workers", "Argument[self]", "ReturnValue", "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 deleted file mode 100644 index 6c1bd84c988b..000000000000 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-actors.model.yml +++ /dev/null @@ -1,21 +0,0 @@ -# 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/actix/actix-web:actix-web-actors", "::parts", "Argument[self].Field[crate::context::HttpContext::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::parts", "Argument[self].Field[crate::ws::WebsocketContext::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::with_codec", "Argument[2]", "ReturnValue.Field[crate::ws::WebsocketContextFut::encoder]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::codec", "Argument[0]", "Argument[self].Field[crate::ws::WsResponseBuilder::codec].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::codec", "Argument[0]", "ReturnValue.Field[crate::ws::WsResponseBuilder::codec].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::codec", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::frame_size", "Argument[0]", "Argument[self].Field[crate::ws::WsResponseBuilder::frame_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::frame_size", "Argument[0]", "ReturnValue.Field[crate::ws::WsResponseBuilder::frame_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::frame_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::new", "Argument[0]", "ReturnValue.Field[crate::ws::WsResponseBuilder::actor]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::new", "Argument[1]", "ReturnValue.Field[crate::ws::WsResponseBuilder::req]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::new", "Argument[2]", "ReturnValue.Field[crate::ws::WsResponseBuilder::stream]", "value", "dfc-generated"] - - ["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"] 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 deleted file mode 100644 index da04e3d3bf06..000000000000 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-codegen.model.yml +++ /dev/null @@ -1,25 +0,0 @@ -# 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/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"] - - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::head", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::options", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::patch", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::post", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::put", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::route::with_method", "Argument[2]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::route::with_methods", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::route", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::routes", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::scope::with_scope", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::scope", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::trace", "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 deleted file mode 100644 index 71d89fea2728..000000000000 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web.model.yml +++ /dev/null @@ -1,385 +0,0 @@ -# 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/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", "::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_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", "::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"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::app_service::AppEntry::factory]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::config", "Argument[self].Field[crate::app_service::AppInitServiceState::config]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::pool", "Argument[self].Field[crate::app_service::AppInitServiceState::pool]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::rmap", "Argument[self].Field[crate::app_service::AppInitServiceState::rmap]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::__priv_test_new", "Argument[0]", "ReturnValue.Field[crate::config::AppConfig::secure]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::__priv_test_new", "Argument[1]", "ReturnValue.Field[crate::config::AppConfig::host]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::__priv_test_new", "Argument[2]", "ReturnValue.Field[crate::config::AppConfig::addr]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::host", "Argument[self].Field[crate::config::AppConfig::host]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::local_addr", "Argument[self].Field[crate::config::AppConfig::addr]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::config::AppConfig::secure]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[1]", "ReturnValue.Field[crate::config::AppConfig::host]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::is_root", "Argument[self].Field[crate::config::AppService::root]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::config::AppService::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[1]", "ReturnValue.Field[crate::config::AppService::default]", "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]", "Argument[0].Parameter[0]", "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", "::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", "::from", "Argument[0]", "ReturnValue.Field[crate::data::Data(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[crate::data::Data(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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]", "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"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::from_response", "Argument[0]", "ReturnValue.Field[crate::error::internal::InternalError::cause]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::error::internal::InternalError::cause]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[1]", "ReturnValue.Field[crate::error::internal::InternalError::status].Field[crate::error::internal::InternalErrorType::Status(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::and", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::or", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::check", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::check", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::as_unknown", "Argument[self].Field[crate::http::header::content_disposition::DispositionParam::Unknown(1)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::as_unknown_ext", "Argument[self].Field[crate::http::header::content_disposition::DispositionParam::UnknownExt(1)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::from", "Argument[0]", "ReturnValue.Field[crate::http::header::content_length::ContentLength(0)]", "value", "dfc-generated"] - - ["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::http::header::content_length::ContentLength(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::http::header::entity::EntityTag::weak]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[1]", "ReturnValue.Field[crate::http::header::entity::EntityTag::tag]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new_strong", "Argument[0]", "ReturnValue.Field[crate::http::header::entity::EntityTag::tag]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new_weak", "Argument[0]", "ReturnValue.Field[crate::http::header::entity::EntityTag::tag]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::strong", "Argument[0]", "ReturnValue.Field[crate::http::header::entity::EntityTag::tag]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::tag", "Argument[self].Field[crate::http::header::entity::EntityTag::tag]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::weak", "Argument[0]", "ReturnValue.Field[crate::http::header::entity::EntityTag::tag]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::into_item", "Argument[self].Field[crate::http::header::preference::Preference::Specific(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::item", "Argument[self].Field[crate::http::header::preference::Preference::Specific(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::to_satisfiable_range", "Argument[self].Reference.Field[crate::http::header::range::ByteRangeSpec::From(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::to_satisfiable_range", "Argument[self].Reference.Field[crate::http::header::range::ByteRangeSpec::FromTo(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::to_satisfiable_range", "Argument[self].Reference.Field[crate::http::header::range::ByteRangeSpec::FromTo(1)]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::host", "Argument[self].Field[crate::info::ConnectionInfo::host]", "ReturnValue.Reference", "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", "::scheme", "Argument[self].Field[crate::info::ConnectionInfo::scheme]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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::info::PeerAddr(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::middleware::compat::Compat::transform]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::middleware::condition::Condition::enable]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[1]", "ReturnValue.Field[crate::middleware::condition::Condition::transformer]", "value", "dfc-generated"] - - ["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", "::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[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"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::custom_request_replace", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::custom_response_replace", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::exclude", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::exclude_regex", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::log_level", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::log_target", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::permanent", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::see_other", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::temporary", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::using_status_code", "Argument[0]", "Argument[self].Field[crate::redirect::Redirect::status_code]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::using_status_code", "Argument[0]", "ReturnValue.Field[crate::redirect::Redirect::status_code]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::using_status_code", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::with_capacity", "Argument[0]", "ReturnValue.Field[crate::request::HttpRequestPool::cap]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[crate::request_data::ReqData(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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::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", "::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"] - - ["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", "::to", "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"] - - ["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", "::content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::force_close", "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", "::insert_header", "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", "::no_chunking", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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_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"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::respond_to", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::body", "Argument[self].Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::body]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::drop_body", "Argument[self].Field[crate::response::response::HttpResponse::error]", "ReturnValue.Field[crate::response::response::HttpResponse::error]", "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::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", "::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"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::into_parts", "Argument[self].Field[crate::response::response::HttpResponse::error]", "ReturnValue.Field[0].Field[crate::response::response::HttpResponse::error]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::into_parts", "Argument[self].Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::body]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_body", "Argument[0].ReturnValue", "ReturnValue.Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::body]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_into_boxed_body", "Argument[self].Field[crate::response::response::HttpResponse::error]", "ReturnValue.Field[crate::response::response::HttpResponse::error]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_into_boxed_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", "::map_into_boxed_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", "::map_into_left_body", "Argument[self].Field[crate::response::response::HttpResponse::error]", "ReturnValue.Field[crate::response::response::HttpResponse::error]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_into_left_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", "::map_into_left_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", "::map_into_right_body", "Argument[self].Field[crate::response::response::HttpResponse::error]", "ReturnValue.Field[crate::response::response::HttpResponse::error]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_into_right_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", "::map_into_right_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", "::set_body", "Argument[0]", "ReturnValue.Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::body]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::set_body", "Argument[self].Field[crate::response::response::HttpResponse::error]", "ReturnValue.Field[crate::response::response::HttpResponse::error]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::set_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", "::set_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", "::with_body", "Argument[1]", "ReturnValue.Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::body]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::from", "Argument[0].Field[crate::response::response::HttpResponse::res]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::respond_to", "Argument[self].Field[crate::service::ServiceResponse::response]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::respond_to", "Argument[self]", "ReturnValue.Field[crate::response::response::HttpResponse::res]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::match_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::match_pattern", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::rmap::ResourceMap::pattern]", "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", "::method", "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", "::to", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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", "::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"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::backlog", "Argument[0]", "Argument[self].Field[crate::server::HttpServer::backlog]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::backlog", "Argument[0]", "ReturnValue.Field[crate::server::HttpServer::backlog]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::backlog", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::bind", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::bind_auto_h2c", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::bind_openssl", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::bind_rustls", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::bind_rustls_021", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::bind_rustls_0_22", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::bind_rustls_0_23", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["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", "::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_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"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::server::HttpServer::factory]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::on_connect", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::server_hostname", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::shutdown_signal", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::shutdown_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::system_exit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::tls_handshake_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::from_request", "Argument[0]", "ReturnValue.Field[crate::service::ServiceRequest::req]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::guard_ctx", "Argument[self]", "ReturnValue.Field[crate::guard::GuardContext::req]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::into_parts", "Argument[self].Field[crate::service::ServiceRequest::payload]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::into_parts", "Argument[self].Field[crate::service::ServiceRequest::req]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::into_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", "::new", "Argument[0]", "ReturnValue.Field[crate::service::ServiceRequest::req]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[1]", "ReturnValue.Field[crate::service::ServiceRequest::payload]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::parts", "Argument[self].Field[crate::service::ServiceRequest::payload]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::parts", "Argument[self].Field[crate::service::ServiceRequest::req]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::parts_mut", "Argument[self].Field[crate::service::ServiceRequest::payload]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::parts_mut", "Argument[self].Field[crate::service::ServiceRequest::req]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::request", "Argument[self].Field[crate::service::ServiceRequest::req]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::set_payload", "Argument[0]", "Argument[self].Field[crate::service::ServiceRequest::payload]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_body", "Argument[self].Field[crate::service::ServiceResponse::request]", "ReturnValue.Field[crate::service::ServiceResponse::request]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_body", "Argument[self].Field[crate::service::ServiceResponse::response].Field[crate::response::response::HttpResponse::error]", "ReturnValue.Field[crate::service::ServiceResponse::response].Field[crate::response::response::HttpResponse::error]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::error_response", "Argument[self].Field[crate::service::ServiceResponse::request]", "ReturnValue.Field[crate::service::ServiceResponse::request]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::from_err", "Argument[1]", "ReturnValue.Field[crate::service::ServiceResponse::request]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::into_parts", "Argument[self].Field[crate::service::ServiceResponse::request]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::into_parts", "Argument[self].Field[crate::service::ServiceResponse::response]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::into_response", "Argument[0]", "ReturnValue.Field[crate::service::ServiceResponse::response]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::into_response", "Argument[self].Field[crate::service::ServiceResponse::request]", "ReturnValue.Field[crate::service::ServiceResponse::request]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_body", "Argument[self].Field[crate::service::ServiceResponse::request]", "ReturnValue.Field[crate::service::ServiceResponse::request]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_body", "Argument[self].Field[crate::service::ServiceResponse::response].Field[crate::response::response::HttpResponse::error]", "ReturnValue.Field[crate::service::ServiceResponse::response].Field[crate::response::response::HttpResponse::error]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_into_boxed_body", "Argument[self].Field[crate::service::ServiceResponse::request]", "ReturnValue.Field[crate::service::ServiceResponse::request]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_into_boxed_body", "Argument[self].Field[crate::service::ServiceResponse::response].Field[crate::response::response::HttpResponse::error]", "ReturnValue.Field[crate::service::ServiceResponse::response].Field[crate::response::response::HttpResponse::error]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_into_left_body", "Argument[self].Field[crate::service::ServiceResponse::request]", "ReturnValue.Field[crate::service::ServiceResponse::request]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_into_left_body", "Argument[self].Field[crate::service::ServiceResponse::response].Field[crate::response::response::HttpResponse::error]", "ReturnValue.Field[crate::service::ServiceResponse::response].Field[crate::response::response::HttpResponse::error]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_into_right_body", "Argument[self].Field[crate::service::ServiceResponse::request]", "ReturnValue.Field[crate::service::ServiceResponse::request]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::map_into_right_body", "Argument[self].Field[crate::service::ServiceResponse::response].Field[crate::response::response::HttpResponse::error]", "ReturnValue.Field[crate::service::ServiceResponse::response].Field[crate::response::response::HttpResponse::error]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::service::ServiceResponse::request]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[1]", "ReturnValue.Field[crate::service::ServiceResponse::response]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::request", "Argument[self].Field[crate::service::ServiceResponse::request]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::response", "Argument[self].Field[crate::service::ServiceResponse::response]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::response_mut", "Argument[self].Field[crate::service::ServiceResponse::response]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::finish", "Argument[self].Field[crate::service::WebService::guards]", "ReturnValue.Field[crate::service::WebServiceImpl::guards]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::finish", "Argument[self].Field[crate::service::WebService::name]", "ReturnValue.Field[crate::service::WebServiceImpl::name]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::finish", "Argument[self].Field[crate::service::WebService::rdef]", "ReturnValue.Field[crate::service::WebServiceImpl::rdef]", "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"] - - ["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", "::append_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::cookie", "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", "::insert_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::method", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::param", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::peer_addr", "Argument[0]", "Argument[self].Field[crate::test::test_request::TestRequest::peer_addr].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::peer_addr", "Argument[0]", "ReturnValue.Field[crate::test::test_request::TestRequest::peer_addr].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::peer_addr", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::rmap", "Argument[0]", "Argument[self].Field[crate::test::test_request::TestRequest::rmap]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::rmap", "Argument[0]", "ReturnValue.Field[crate::test::test_request::TestRequest::rmap]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::rmap", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::set_form", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::set_json", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::set_payload", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::uri", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::as_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::as_mut", "Argument[self].Field[crate::thin_data::ThinData(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::as_ref", "Argument[self].Field[crate::thin_data::ThinData(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[crate::thin_data::ThinData(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref_mut", "Argument[self].Field[crate::thin_data::ThinData(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::from_request", "Argument[0].Reference", "ReturnValue.Field[crate::types::either::EitherExtractFut::req]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::unwrap_left", "Argument[self].Field[crate::types::either::Either::Left(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::unwrap_right", "Argument[self].Field[crate::types::either::Either::Right(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::from_request", "Argument[0].Reference", "ReturnValue.Field[crate::types::form::FormExtractFut::req]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[crate::types::form::Form(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref_mut", "Argument[self].Field[crate::types::form::Form(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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::types::form::Form(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[0]", "Argument[self].Field[crate::types::form::FormConfig::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[0]", "ReturnValue.Field[crate::types::form::FormConfig::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[0]", "Argument[self].Field[crate::types::form::UrlEncoded::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[0]", "ReturnValue.Field[crate::types::form::UrlEncoded::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[crate::types::header::Header(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref_mut", "Argument[self].Field[crate::types::header::Header(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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::types::header::Header(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::respond_to", "Argument[self].Field[0]", "ReturnValue.Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::body]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::respond_to", "Argument[self].Field[crate::types::html::Html(0)]", "ReturnValue.Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::body]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::from_request", "Argument[0].Reference", "ReturnValue.Field[crate::types::json::JsonExtractFut::req].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[crate::types::json::Json(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref_mut", "Argument[self].Field[crate::types::json::Json(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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::types::json::Json(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[0]", "ReturnValue.Field[crate::types::json::JsonBody::Body::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::content_type_required", "Argument[0]", "Argument[self].Field[crate::types::json::JsonConfig::content_type_required]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::content_type_required", "Argument[0]", "ReturnValue.Field[crate::types::json::JsonConfig::content_type_required]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::content_type_required", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[0]", "Argument[self].Field[crate::types::json::JsonConfig::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[0]", "ReturnValue.Field[crate::types::json::JsonConfig::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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::types::path::Path(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[0]", "Argument[self].Field[crate::types::payload::HttpMessageBody::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[0]", "ReturnValue.Field[crate::types::payload::HttpMessageBody::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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::types::payload::Payload(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[0]", "Argument[self].Field[crate::types::payload::PayloadConfig::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[0]", "ReturnValue.Field[crate::types::payload::PayloadConfig::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::mimetype", "Argument[0]", "Argument[self].Field[crate::types::payload::PayloadConfig::mimetype].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::mimetype", "Argument[0]", "ReturnValue.Field[crate::types::payload::PayloadConfig::mimetype].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::mimetype", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::types::payload::PayloadConfig::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref", "Argument[self].Field[crate::types::query::Query(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::deref_mut", "Argument[self].Field[crate::types::query::Query(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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::types::query::Query(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[0]", "Argument[self].Field[crate::types::readlines::Readlines::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[0]", "ReturnValue.Field[crate::types::readlines::Readlines::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::downcast_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::downcast_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::downcast_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::downcast_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::from", "Argument[0].Field[crate::http::header::content_length::ContentLength(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "crate::guard::Method", "Argument[0]", "ReturnValue.Field[crate::guard::MethodGuard(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "crate::guard::fn_guard", "Argument[0]", "ReturnValue.Field[crate::guard::FnGuard(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "crate::web::scope", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["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]", "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"] 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 deleted file mode 100644 index 30828f012fa4..000000000000 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-awc.model.yml +++ /dev/null @@ -1,226 +0,0 @@ -# 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/actix/actix-web:awc", "::add_default_header", "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", "::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"] - - ["repo:https://github.com/actix/actix-web:awc", "::initial_connection_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::initial_window_size", "Argument[0]", "Argument[self].Field[crate::builder::ClientBuilder::stream_window_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::initial_window_size", "Argument[0]", "ReturnValue.Field[crate::builder::ClientBuilder::stream_window_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::initial_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::local_address", "Argument[0]", "Argument[self].Field[crate::builder::ClientBuilder::local_address].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::local_address", "Argument[0]", "ReturnValue.Field[crate::builder::ClientBuilder::local_address].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::local_address", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::max_http_version", "Argument[0]", "Argument[self].Field[crate::builder::ClientBuilder::max_http_version].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::max_http_version", "Argument[0]", "ReturnValue.Field[crate::builder::ClientBuilder::max_http_version].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::max_http_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::max_redirects", "Argument[0]", "Argument[self].Field[crate::builder::ClientBuilder::max_redirects]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::max_redirects", "Argument[0]", "ReturnValue.Field[crate::builder::ClientBuilder::max_redirects]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::max_redirects", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::no_default_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::timeout", "Argument[0]", "Argument[self].Field[crate::builder::ClientBuilder::timeout].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["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", "::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_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", "::no_disconnect_timeout", "Argument[self].Reference", "ReturnValue", "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"] - - ["repo:https://github.com/actix/actix-web:awc", "::conn_keep_alive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::conn_lifetime", "Argument[0]", "Argument[self].Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::conn_lifetime]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::conn_lifetime", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::conn_lifetime]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::conn_lifetime", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::connector", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::connector]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::connector", "Argument[self].Field[crate::client::connector::Connector::config]", "ReturnValue.Field[crate::client::connector::Connector::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::connector", "Argument[self].Field[crate::client::connector::Connector::tls]", "ReturnValue.Field[crate::client::connector::Connector::tls]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::disconnect_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::finish", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::handshake_timeout", "Argument[0]", "Argument[self].Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::handshake_timeout]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::handshake_timeout", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::handshake_timeout]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::handshake_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::initial_connection_window_size", "Argument[0]", "Argument[self].Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::conn_window_size]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::initial_connection_window_size", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::conn_window_size]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::initial_connection_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::initial_window_size", "Argument[0]", "Argument[self].Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::stream_window_size]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::initial_window_size", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::stream_window_size]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::initial_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::limit", "Argument[0]", "Argument[self].Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::limit]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::limit", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::limit]", "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", "::local_address", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::max_http_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::openssl", "Argument[0]", "Argument[self].Field[crate::client::connector::Connector::tls].Field[crate::client::connector::OurTlsConnector::Openssl(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::openssl", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::tls].Field[crate::client::connector::OurTlsConnector::Openssl(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::openssl", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::rustls", "Argument[0]", "Argument[self].Field[crate::client::connector::Connector::tls].Field[crate::client::connector::OurTlsConnector::Rustls020(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::rustls", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::tls].Field[crate::client::connector::OurTlsConnector::Rustls020(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::rustls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::rustls_021", "Argument[0]", "Argument[self].Field[crate::client::connector::Connector::tls].Field[crate::client::connector::OurTlsConnector::Rustls021(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::rustls_021", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::tls].Field[crate::client::connector::OurTlsConnector::Rustls021(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::rustls_021", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::rustls_0_22", "Argument[0]", "Argument[self].Field[crate::client::connector::Connector::tls].Field[crate::client::connector::OurTlsConnector::Rustls022(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::rustls_0_22", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::tls].Field[crate::client::connector::OurTlsConnector::Rustls022(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::rustls_0_22", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::rustls_0_23", "Argument[0]", "Argument[self].Field[crate::client::connector::Connector::tls].Field[crate::client::connector::OurTlsConnector::Rustls023(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::rustls_0_23", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::tls].Field[crate::client::connector::OurTlsConnector::Rustls023(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::rustls_0_23", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::ssl", "Argument[0]", "Argument[self].Field[crate::client::connector::Connector::tls].Field[crate::client::connector::OurTlsConnector::Openssl(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::ssl", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::tls].Field[crate::client::connector::OurTlsConnector::Openssl(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::ssl", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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[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].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", "::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", "::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"] - - ["repo:https://github.com/actix/actix-web:awc", "::call", "Argument[0]", "ReturnValue.Field[crate::connect::ConnectRequestFuture::Connection::req].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[0]", "ReturnValue.Field[crate::connect::DefaultConnector::connector]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::extra_header", "Argument[self].Reference", "ReturnValue.Field[crate::frozen::FrozenSendBuilder::req]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::extra_headers", "Argument[0]", "ReturnValue.Field[crate::frozen::FrozenSendBuilder::extra_headers]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::extra_headers", "Argument[self].Reference", "ReturnValue.Field[crate::frozen::FrozenSendBuilder::req]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::send", "Argument[self].Field[crate::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::send_body", "Argument[self].Field[crate::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::send_form", "Argument[self].Field[crate::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::send_json", "Argument[self].Field[crate::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::send_stream", "Argument[self].Field[crate::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::extra_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[0]", "ReturnValue.Field[crate::frozen::FrozenSendBuilder::req]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[1]", "ReturnValue.Field[crate::frozen::FrozenSendBuilder::extra_headers]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::send", "Argument[self].Field[crate::frozen::FrozenSendBuilder::req].Field[crate::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::send_body", "Argument[self].Field[crate::frozen::FrozenSendBuilder::req].Field[crate::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::send_form", "Argument[self].Field[crate::frozen::FrozenSendBuilder::req].Field[crate::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::send_json", "Argument[self].Field[crate::frozen::FrozenSendBuilder::req].Field[crate::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::send_stream", "Argument[self].Field[crate::frozen::FrozenSendBuilder::req].Field[crate::frozen::FrozenClientRequest::response_decompress]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[0]", "ReturnValue.Field[crate::middleware::NestTransform::child]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[1]", "ReturnValue.Field[crate::middleware::NestTransform::parent]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::new_transform", "Argument[self].Field[crate::middleware::redirect::Redirect::max_redirect_times]", "ReturnValue.Field[crate::middleware::redirect::RedirectService::max_redirect_times]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::max_redirect_times", "Argument[0]", "Argument[self].Field[crate::middleware::redirect::Redirect::max_redirect_times]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::max_redirect_times", "Argument[0]", "ReturnValue.Field[crate::middleware::redirect::Redirect::max_redirect_times]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::max_redirect_times", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::call", "Argument[0].Field[crate::connect::ConnectRequest::Client(1)].Field[crate::any_body::AnyBody::Bytes::body]", "ReturnValue.Field[crate::middleware::redirect::RedirectServiceFuture::Client::body].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::call", "Argument[0].Field[crate::connect::ConnectRequest::Client(2)]", "ReturnValue.Field[crate::middleware::redirect::RedirectServiceFuture::Client::addr]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::call", "Argument[self].Field[crate::middleware::redirect::RedirectService::max_redirect_times]", "ReturnValue.Field[crate::middleware::redirect::RedirectServiceFuture::Client::max_redirect_times]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::address", "Argument[0]", "Argument[self].Field[crate::request::ClientRequest::addr].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::address", "Argument[0]", "ReturnValue.Field[crate::request::ClientRequest::addr].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::address", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::append_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", "::camel_case", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::content_length", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::force_close", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::get_method", "Argument[self].Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::method]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::get_peer_addr", "Argument[self].Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::peer_addr]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::get_uri", "Argument[self].Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::uri]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::get_version", "Argument[self].Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::version]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::headers", "Argument[self].Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::headers_mut", "Argument[self].Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::insert_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::insert_header_if_none", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::method", "Argument[0]", "Argument[self].Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::method]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::method", "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", "::method", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::new", "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", "::new", "Argument[2]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::no_decompress", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::query", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::timeout", "Argument[0]", "Argument[self].Field[crate::request::ClientRequest::timeout].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::timeout", "Argument[0]", "ReturnValue.Field[crate::request::ClientRequest::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", "::uri", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::version", "Argument[0]", "Argument[self].Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::version]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/actix/actix-web:awc", "::status", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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"] - - ["repo:https://github.com/actix/actix-web:awc", "::send_json", "Argument[1]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::send_stream", "Argument[1]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::from", "Argument[0]", "ReturnValue.Field[crate::sender::SendClientRequest::Err(0)].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[0]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[1]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::append_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::finish", "Argument[self].Field[crate::test::TestResponse::head]", "ReturnValue.Field[crate::responses::response::ClientResponse::head]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::insert_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::set_payload", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::version", "Argument[0]", "Argument[self].Field[crate::test::TestResponse::head].Field[crate::responses::head::ResponseHead::version]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::version", "Argument[0]", "ReturnValue.Field[crate::test::TestResponse::head].Field[crate::responses::head::ResponseHead::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", "::address", "Argument[0]", "Argument[self].Field[crate::ws::WebsocketsRequest::addr].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::address", "Argument[0]", "ReturnValue.Field[crate::ws::WebsocketsRequest::addr].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::address", "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", "::cookie", "Argument[self]", "ReturnValue", "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", "::max_frame_size", "Argument[0]", "Argument[self].Field[crate::ws::WebsocketsRequest::max_size]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::max_frame_size", "Argument[0]", "ReturnValue.Field[crate::ws::WebsocketsRequest::max_size]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::max_frame_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[1]", "ReturnValue.Field[crate::ws::WebsocketsRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::origin", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::protocols", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::server_mode", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::set_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::set_header_if_none", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["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.model.yml b/rust/ql/lib/ext/generated/clap.model.yml new file mode 100644 index 000000000000..376b4ca530b3 --- /dev/null +++ b/rust/ql/lib/ext/generated/clap.model.yml @@ -0,0 +1,568 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["<04_01_enum::Mode as core::fmt::Display>::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["<04_01_enum::Mode as core::str::traits::FromStr>::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_resettable", "Argument[self]", "ReturnValue.Field[clap_builder::builder::resettable::Resettable::Value(0)]", "value", "dfc-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::action", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::add", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::allow_hyphen_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::allow_negative_numbers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::conflicts_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::conflicts_with_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_missing_value", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_missing_value_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_missing_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_missing_values_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_value", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_value_if", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_value_if_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_value_ifs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_value_ifs_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_value_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_values_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::display_order", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::env", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::env_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::exclusive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::get_action", "Argument[self].Field[clap_builder::builder::arg::Arg::action].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_default_values", "Argument[self].Field[clap_builder::builder::arg::Arg::default_vals]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_display_order", "Argument[self].Field[clap_builder::builder::arg::Arg::disp_ord].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::get_env", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::get_help", "Argument[self].Field[clap_builder::builder::arg::Arg::help].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_id", "Argument[self].Field[clap_builder::builder::arg::Arg::id]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_index", "Argument[self].Field[clap_builder::builder::arg::Arg::index]", "ReturnValue", "value", "dfc-generated"] + - ["::get_long_help", "Argument[self].Field[clap_builder::builder::arg::Arg::long_help].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_num_args", "Argument[self].Field[clap_builder::builder::arg::Arg::num_vals]", "ReturnValue", "value", "dfc-generated"] + - ["::get_short", "Argument[self].Field[clap_builder::builder::arg::Arg::short]", "ReturnValue", "value", "dfc-generated"] + - ["::get_value_delimiter", "Argument[self].Field[clap_builder::builder::arg::Arg::val_delim]", "ReturnValue", "value", "dfc-generated"] + - ["::get_value_names", "Argument[self].Field[clap_builder::builder::arg::Arg::val_names]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_value_terminator", "Argument[self].Field[clap_builder::builder::arg::Arg::terminator].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::global", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::group", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::groups", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::help_heading", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::hide", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::hide_default_value", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::hide_env", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::hide_env_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::hide_long_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::hide_possible_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::hide_short_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::id", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::ignore_case", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::index", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::last", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::long", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::long_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::next_line_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::num_args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::number_of_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overrides_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overrides_with_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::raw", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::require_equals", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::required", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::required_if_eq", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::required_if_eq_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::required_if_eq_any", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::required_unless_present", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::required_unless_present_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::required_unless_present_any", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::requires", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::requires_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::requires_if", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::requires_ifs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::setting", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::short", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::short_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::short_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::trailing_var_arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::unset_setting", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::use_value_delimiter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::value_delimiter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::value_hint", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::value_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::value_names", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::value_parser", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::value_terminator", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::visible_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::visible_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::visible_short_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::visible_short_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::conflicts_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::conflicts_with_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::get_id", "Argument[self].Field[clap_builder::builder::arg_group::ArgGroup::id]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::id", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::is_multiple", "Argument[self].Field[clap_builder::builder::arg_group::ArgGroup::multiple]", "ReturnValue", "value", "dfc-generated"] + - ["::is_required_set", "Argument[self].Field[clap_builder::builder::arg_group::ArgGroup::required]", "ReturnValue", "value", "dfc-generated"] + - ["::multiple", "Argument[0]", "Argument[self].Field[clap_builder::builder::arg_group::ArgGroup::multiple]", "value", "dfc-generated"] + - ["::multiple", "Argument[0]", "ReturnValue.Field[clap_builder::builder::arg_group::ArgGroup::multiple]", "value", "dfc-generated"] + - ["::multiple", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::required", "Argument[0]", "Argument[self].Field[clap_builder::builder::arg_group::ArgGroup::required]", "value", "dfc-generated"] + - ["::required", "Argument[0]", "ReturnValue.Field[clap_builder::builder::arg_group::ArgGroup::required]", "value", "dfc-generated"] + - ["::required", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::requires", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::requires_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::about", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::add", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::after_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::after_long_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::allow_external_subcommands", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::allow_hyphen_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::allow_missing_positional", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::allow_negative_numbers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::arg_required_else_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::args_conflicts_with_subcommands", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::args_override_self", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::author", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::before_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::before_long_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::bin_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::color", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::defer", "Argument[0]", "Argument[self].Field[clap_builder::builder::command::Command::deferred].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::defer", "Argument[0]", "ReturnValue.Field[clap_builder::builder::command::Command::deferred].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::defer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::disable_colored_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::disable_help_flag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::disable_help_subcommand", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::disable_version_flag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::display_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::display_order", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::dont_collapse_args_in_usage", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::dont_delimit_trailing_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::external_subcommand_value_parser", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::flatten_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::get_about", "Argument[self].Field[clap_builder::builder::command::Command::about].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_after_help", "Argument[self].Field[clap_builder::builder::command::Command::after_help].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_after_long_help", "Argument[self].Field[clap_builder::builder::command::Command::after_long_help].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_before_help", "Argument[self].Field[clap_builder::builder::command::Command::before_help].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_before_long_help", "Argument[self].Field[clap_builder::builder::command::Command::before_long_help].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_display_order", "Argument[self].Field[clap_builder::builder::command::Command::disp_ord].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::get_external_subcommand_value_parser", "Argument[self].Field[clap_builder::builder::command::Command::external_value_parser].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_help_template", "Argument[self].Field[clap_builder::builder::command::Command::template].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_keymap", "Argument[self].Field[clap_builder::builder::command::Command::args]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_long_about", "Argument[self].Field[clap_builder::builder::command::Command::long_about].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_override_help", "Argument[self].Field[clap_builder::builder::command::Command::help_str].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_override_usage", "Argument[self].Field[clap_builder::builder::command::Command::usage_str].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_short_flag", "Argument[self].Field[clap_builder::builder::command::Command::short_flag]", "ReturnValue", "value", "dfc-generated"] + - ["::global_setting", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::group", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::groups", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::help_expected", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::help_template", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::hide", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::hide_possible_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::ignore_errors", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::infer_long_args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::infer_subcommands", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::long_about", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::long_flag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::long_flag_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::long_flag_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::long_help_exists", "Argument[self].Field[clap_builder::builder::command::Command::long_help_exists]", "ReturnValue", "value", "dfc-generated"] + - ["::long_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_term_width", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::multicall", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mut_arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mut_args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mut_group", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mut_subcommand", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::next_display_order", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::next_help_heading", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::next_line_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::no_binary_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::override_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::override_usage", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::propagate_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::setting", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::short_flag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::short_flag_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::short_flag_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::styles", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::subcommand", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::subcommand_help_heading", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::subcommand_negates_reqs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::subcommand_precedence_over_arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::subcommand_required", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::subcommand_value_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::subcommands", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::term_width", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::trailing_var_arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::unset_global_setting", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::unset_setting", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::visible_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::visible_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::visible_long_flag_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::visible_long_flag_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::visible_short_flag_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::visible_short_flag_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::get_help", "Argument[self].Field[clap_builder::builder::possible_value::PossibleValue::help].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::hide", "Argument[0]", "Argument[self].Field[clap_builder::builder::possible_value::PossibleValue::hide]", "value", "dfc-generated"] + - ["::hide", "Argument[0]", "ReturnValue.Field[clap_builder::builder::possible_value::PossibleValue::hide]", "value", "dfc-generated"] + - ["::hide", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::is_hide_set", "Argument[self].Field[clap_builder::builder::possible_value::PossibleValue::hide]", "ReturnValue", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[clap_builder::builder::range::ValueRange::end_inclusive]", "ReturnValue.Field[core::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] + - ["::start_bound", "Argument[self].Field[clap_builder::builder::range::ValueRange::start_inclusive]", "ReturnValue.Field[core::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] + - ["::max_values", "Argument[self].Field[clap_builder::builder::range::ValueRange::end_inclusive]", "ReturnValue", "value", "dfc-generated"] + - ["::min_values", "Argument[self].Field[clap_builder::builder::range::ValueRange::start_inclusive]", "ReturnValue", "value", "dfc-generated"] + - ["::num_values", "Argument[self].Field[clap_builder::builder::range::ValueRange::start_inclusive]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::raw", "Argument[0]", "ReturnValue.Field[clap_builder::builder::range::ValueRange::start_inclusive]", "value", "dfc-generated"] + - ["::raw", "Argument[1]", "ReturnValue.Field[clap_builder::builder::range::ValueRange::end_inclusive]", "value", "dfc-generated"] + - ["::into_resettable", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[clap_builder::util::id::Id(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[clap_builder::builder::str::Str::name]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[clap_builder::builder::styled_str::StyledStr(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::ansi", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_styled_str", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_styled_str", "Argument[self].Field[clap_builder::builder::styled_str::StyledStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::error", "Argument[0]", "Argument[self].Field[clap_builder::builder::styling::Styles::error]", "value", "dfc-generated"] + - ["::error", "Argument[0]", "ReturnValue.Field[clap_builder::builder::styling::Styles::error]", "value", "dfc-generated"] + - ["::error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::get_error", "Argument[self].Field[clap_builder::builder::styling::Styles::error]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_header", "Argument[self].Field[clap_builder::builder::styling::Styles::header]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_invalid", "Argument[self].Field[clap_builder::builder::styling::Styles::invalid]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_literal", "Argument[self].Field[clap_builder::builder::styling::Styles::literal]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_placeholder", "Argument[self].Field[clap_builder::builder::styling::Styles::placeholder]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_usage", "Argument[self].Field[clap_builder::builder::styling::Styles::usage]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_valid", "Argument[self].Field[clap_builder::builder::styling::Styles::valid]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::header", "Argument[0]", "Argument[self].Field[clap_builder::builder::styling::Styles::header]", "value", "dfc-generated"] + - ["::header", "Argument[0]", "ReturnValue.Field[clap_builder::builder::styling::Styles::header]", "value", "dfc-generated"] + - ["::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::invalid", "Argument[0]", "Argument[self].Field[clap_builder::builder::styling::Styles::invalid]", "value", "dfc-generated"] + - ["::invalid", "Argument[0]", "ReturnValue.Field[clap_builder::builder::styling::Styles::invalid]", "value", "dfc-generated"] + - ["::invalid", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::literal", "Argument[0]", "Argument[self].Field[clap_builder::builder::styling::Styles::literal]", "value", "dfc-generated"] + - ["::literal", "Argument[0]", "ReturnValue.Field[clap_builder::builder::styling::Styles::literal]", "value", "dfc-generated"] + - ["::literal", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::placeholder", "Argument[0]", "Argument[self].Field[clap_builder::builder::styling::Styles::placeholder]", "value", "dfc-generated"] + - ["::placeholder", "Argument[0]", "ReturnValue.Field[clap_builder::builder::styling::Styles::placeholder]", "value", "dfc-generated"] + - ["::placeholder", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::usage", "Argument[0]", "Argument[self].Field[clap_builder::builder::styling::Styles::usage]", "value", "dfc-generated"] + - ["::usage", "Argument[0]", "ReturnValue.Field[clap_builder::builder::styling::Styles::usage]", "value", "dfc-generated"] + - ["::usage", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::valid", "Argument[0]", "Argument[self].Field[clap_builder::builder::styling::Styles::valid]", "value", "dfc-generated"] + - ["::valid", "Argument[0]", "ReturnValue.Field[clap_builder::builder::styling::Styles::valid]", "value", "dfc-generated"] + - ["::valid", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::into_resettable", "Argument[self]", "ReturnValue.Field[clap_builder::builder::resettable::Resettable::Value(0)]", "value", "dfc-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::parse", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::parse_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::parse", "Argument[2]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::range", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::range", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::and_suggest", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[clap_builder::builder::value_parser::_AnonymousValueParser(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::apply", "Argument[self].Field[clap_builder::error::Error::inner]", "ReturnValue.Field[clap_builder::error::Error::inner]", "value", "dfc-generated"] + - ["::extend_context_unchecked", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::format", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::insert_context_unchecked", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::raw", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::set_color", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_colored_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_help_flag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_message", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_source", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_styles", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_cmd", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[clap_builder::output::fmt::Colorizer::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[clap_builder::output::fmt::Colorizer::color_when]", "value", "dfc-generated"] + - ["::with_content", "Argument[0]", "Argument[self].Field[clap_builder::output::fmt::Colorizer::content]", "value", "dfc-generated"] + - ["::with_content", "Argument[0]", "ReturnValue.Field[clap_builder::output::fmt::Colorizer::content]", "value", "dfc-generated"] + - ["::with_content", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[clap_builder::output::help_template::AutoHelp::template].Field[clap_builder::output::help_template::HelpTemplate::writer]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[clap_builder::output::help_template::AutoHelp::template].Field[clap_builder::output::help_template::HelpTemplate::cmd]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[clap_builder::output::help_template::AutoHelp::template].Field[clap_builder::output::help_template::HelpTemplate::usage]", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[clap_builder::output::help_template::AutoHelp::template].Field[clap_builder::output::help_template::HelpTemplate::use_long]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[clap_builder::output::help_template::HelpTemplate::writer]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[clap_builder::output::help_template::HelpTemplate::cmd]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[clap_builder::output::help_template::HelpTemplate::usage]", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[clap_builder::output::help_template::HelpTemplate::use_long]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[clap_builder::output::textwrap::wrap_algorithms::LineWrapper::hard_width]", "value", "dfc-generated"] + - ["::wrap", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[clap_builder::output::usage::Usage::cmd]", "value", "dfc-generated"] + - ["::required", "Argument[0]", "Argument[self].Field[clap_builder::output::usage::Usage::required].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::required", "Argument[0]", "ReturnValue.Field[clap_builder::output::usage::Usage::required].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::required", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[clap_builder::parser::arg_matcher::ArgMatcher::matches]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::entry", "Argument[0]", "ReturnValue.Field[clap_builder::util::flat_map::Entry::Vacant(0)].Field[clap_builder::util::flat_map::VacantEntry::key]", "value", "dfc-generated"] + - ["::entry", "Argument[self].Field[clap_builder::parser::arg_matcher::ArgMatcher::matches].Field[clap_builder::parser::matches::arg_matches::ArgMatches::args]", "ReturnValue.Field[clap_builder::util::flat_map::Entry::Occupied(0)].Field[clap_builder::util::flat_map::OccupiedEntry::v]", "value", "dfc-generated"] + - ["::entry", "Argument[self].Field[clap_builder::parser::arg_matcher::ArgMatcher::matches].Field[clap_builder::parser::matches::arg_matches::ArgMatches::args]", "ReturnValue.Field[clap_builder::util::flat_map::Entry::Vacant(0)].Field[clap_builder::util::flat_map::VacantEntry::v]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[clap_builder::parser::arg_matcher::ArgMatcher::matches]", "ReturnValue", "value", "dfc-generated"] + - ["::pending_arg_id", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::unwrap", "Argument[1].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::subcommand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::subcommand_name", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::size_hint", "Argument[self].Field[clap_builder::parser::matches::arg_matches::GroupedValues::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[clap_builder::parser::matches::arg_matches::GroupedValues::len]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[clap_builder::parser::matches::arg_matches::IdsRef::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[clap_builder::parser::matches::arg_matches::Indices::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[clap_builder::parser::matches::arg_matches::Indices::len]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::size_hint", "Argument[self].Field[clap_builder::parser::matches::arg_matches::RawValues::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[clap_builder::parser::matches::arg_matches::RawValues::len]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[clap_builder::parser::matches::arg_matches::Values::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[clap_builder::parser::matches::arg_matches::Values::len]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[clap_builder::parser::matches::arg_matches::ValuesRef::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[clap_builder::parser::matches::arg_matches::ValuesRef::len]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::infer_type_id", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::infer_type_id", "Argument[self].Field[clap_builder::parser::matches::matched_arg::MatchedArg::type_id].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_vals", "Argument[self].Field[clap_builder::parser::matches::matched_arg::MatchedArg::vals]", "ReturnValue", "value", "dfc-generated"] + - ["::set_source", "Argument[0]", "Argument[self].Field[clap_builder::parser::matches::matched_arg::MatchedArg::source].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::source", "Argument[self].Field[clap_builder::parser::matches::matched_arg::MatchedArg::source]", "ReturnValue", "value", "dfc-generated"] + - ["::type_id", "Argument[self].Field[clap_builder::parser::matches::matched_arg::MatchedArg::type_id]", "ReturnValue", "value", "dfc-generated"] + - ["::get_matches_with", "Argument[self]", "Argument[1]", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[clap_builder::parser::parser::Parser::cmd]", "value", "dfc-generated"] + - ["::parse", "Argument[self]", "Argument[1]", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[clap_builder::parser::validator::Validator::cmd]", "value", "dfc-generated"] + - ["::type_id", "Argument[self].Field[clap_builder::util::any_value::AnyValue::id]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::entry", "Argument[0]", "ReturnValue.Field[clap_builder::util::flat_map::Entry::Vacant(0)].Field[clap_builder::util::flat_map::VacantEntry::key]", "value", "dfc-generated"] + - ["::entry", "Argument[self]", "ReturnValue.Field[clap_builder::util::flat_map::Entry::Occupied(0)].Field[clap_builder::util::flat_map::OccupiedEntry::v]", "value", "dfc-generated"] + - ["::entry", "Argument[self]", "ReturnValue.Field[clap_builder::util::flat_map::Entry::Vacant(0)].Field[clap_builder::util::flat_map::VacantEntry::v]", "value", "dfc-generated"] + - ["::get", "Argument[self].Field[clap_builder::util::flat_map::FlatMap::values].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[clap_builder::util::flat_map::FlatMap::values].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::insert", "Argument[1]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[clap_builder::util::flat_map::Iter::keys].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[clap_builder::util::flat_map::Iter::values].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[1]", "value", "dfc-generated"] + - ["::insert_child", "Argument[self].Field[0].Field[alloc::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] + - ["::insert_child", "Argument[self].Field[clap_builder::util::graph::ChildGraph(0)].Field[alloc::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::as_internal_str", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_internal_str", "Argument[self].Field[clap_builder::util::id::Id(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::file_name", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::file_name", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::file_name", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::file_name", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::file_name", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::file_name", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add_prefix", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::display_order", "Argument[0]", "Argument[self].Field[clap_complete::engine::candidate::CompletionCandidate::display_order]", "value", "dfc-generated"] + - ["::display_order", "Argument[0]", "ReturnValue.Field[clap_complete::engine::candidate::CompletionCandidate::display_order]", "value", "dfc-generated"] + - ["::display_order", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::get_display_order", "Argument[self].Field[clap_complete::engine::candidate::CompletionCandidate::display_order]", "ReturnValue", "value", "dfc-generated"] + - ["::get_help", "Argument[self].Field[clap_complete::engine::candidate::CompletionCandidate::help].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_id", "Argument[self].Field[clap_complete::engine::candidate::CompletionCandidate::id].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_tag", "Argument[self].Field[clap_complete::engine::candidate::CompletionCandidate::tag].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::get_value", "Argument[self].Field[clap_complete::engine::candidate::CompletionCandidate::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::help", "Argument[0]", "Argument[self].Field[clap_complete::engine::candidate::CompletionCandidate::help]", "value", "dfc-generated"] + - ["::help", "Argument[0]", "ReturnValue.Field[clap_complete::engine::candidate::CompletionCandidate::help]", "value", "dfc-generated"] + - ["::help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::hide", "Argument[0]", "Argument[self].Field[clap_complete::engine::candidate::CompletionCandidate::hidden]", "value", "dfc-generated"] + - ["::hide", "Argument[0]", "ReturnValue.Field[clap_complete::engine::candidate::CompletionCandidate::hidden]", "value", "dfc-generated"] + - ["::hide", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::id", "Argument[0]", "Argument[self].Field[clap_complete::engine::candidate::CompletionCandidate::id]", "value", "dfc-generated"] + - ["::id", "Argument[0]", "ReturnValue.Field[clap_complete::engine::candidate::CompletionCandidate::id]", "value", "dfc-generated"] + - ["::id", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::is_hide_set", "Argument[self].Field[clap_complete::engine::candidate::CompletionCandidate::hidden]", "ReturnValue", "value", "dfc-generated"] + - ["::tag", "Argument[0]", "Argument[self].Field[clap_complete::engine::candidate::CompletionCandidate::tag]", "value", "dfc-generated"] + - ["::tag", "Argument[0]", "ReturnValue.Field[clap_complete::engine::candidate::CompletionCandidate::tag]", "value", "dfc-generated"] + - ["::tag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::current_dir", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::filter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::stdio", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::bin", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::completer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::shells", "Argument[0]", "Argument[self].Field[clap_complete::env::CompleteEnv::shells]", "value", "dfc-generated"] + - ["::shells", "Argument[0]", "ReturnValue.Field[clap_complete::env::CompleteEnv::shells]", "value", "dfc-generated"] + - ["::shells", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::var", "Argument[0]", "Argument[self].Field[clap_complete::env::CompleteEnv::var]", "value", "dfc-generated"] + - ["::var", "Argument[0]", "ReturnValue.Field[clap_complete::env::CompleteEnv::var]", "value", "dfc-generated"] + - ["::var", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_factory", "Argument[0]", "ReturnValue.Field[clap_complete::env::CompleteEnv::factory]", "value", "dfc-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::file_name", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::lit_str_or_abort", "Argument[self].Field[clap_derive::attr::ClapAttr::value].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::value_or_abort", "Argument[self].Field[clap_derive::attr::ClapAttr::value].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::result::Result::Ok(0)].Reference", "value", "dfc-generated"] + - ["::value_or_abort", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::action", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::action", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::cased_name", "Argument[self].Field[clap_derive::item::Item::name].Field[clap_derive::item::Name::Assigned(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::casing", "Argument[self].Field[clap_derive::item::Item::casing]", "ReturnValue", "value", "dfc-generated"] + - ["::env_casing", "Argument[self].Field[clap_derive::item::Item::env_casing]", "ReturnValue", "value", "dfc-generated"] + - ["::from_args_field", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[clap_derive::item::Item::casing]", "value", "dfc-generated"] + - ["::from_args_field", "Argument[2]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[clap_derive::item::Item::env_casing]", "value", "dfc-generated"] + - ["::from_args_struct", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[clap_derive::item::Item::name]", "value", "dfc-generated"] + - ["::from_subcommand_enum", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[clap_derive::item::Item::name]", "value", "dfc-generated"] + - ["::from_subcommand_variant", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[clap_derive::item::Item::casing]", "value", "dfc-generated"] + - ["::from_subcommand_variant", "Argument[2]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[clap_derive::item::Item::env_casing]", "value", "dfc-generated"] + - ["::from_value_enum", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[clap_derive::item::Item::name]", "value", "dfc-generated"] + - ["::from_value_enum_variant", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[clap_derive::item::Item::casing]", "value", "dfc-generated"] + - ["::from_value_enum_variant", "Argument[2]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[clap_derive::item::Item::env_casing]", "value", "dfc-generated"] + - ["::group_id", "Argument[self].Field[clap_derive::item::Item::group_id]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::id", "Argument[self].Field[clap_derive::item::Item::name]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::is_positional", "Argument[self].Field[clap_derive::item::Item::is_positional]", "ReturnValue", "value", "dfc-generated"] + - ["::kind", "Argument[self].Field[clap_derive::item::Item::kind].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::kind", "Argument[self].Field[clap_derive::item::Item::kind]", "ReturnValue", "value", "dfc-generated"] + - ["::skip_group", "Argument[self].Field[clap_derive::item::Item::skip_group]", "ReturnValue", "value", "dfc-generated"] + - ["::value_name", "Argument[self].Field[clap_derive::item::Item::name].Field[clap_derive::item::Name::Assigned(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::value_parser", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::value_parser", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::args", "Argument[self].Field[clap_derive::item::Method::args]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[clap_derive::item::Method::name]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[clap_derive::item::Method::args]", "value", "dfc-generated"] + - ["::translate", "Argument[self].Field[clap_derive::item::Name::Assigned(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[clap_derive::utils::spanned::Sp::span]", "ReturnValue.Field[clap_derive::utils::spanned::Sp::span]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[clap_derive::utils::spanned::Sp::val]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[clap_derive::utils::spanned::Sp::val]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get", "Argument[self].Field[clap_derive::utils::spanned::Sp::val]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[clap_derive::utils::spanned::Sp::val]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[clap_derive::utils::spanned::Sp::span]", "value", "dfc-generated"] + - ["::span", "Argument[self].Field[clap_derive::utils::spanned::Sp::span]", "ReturnValue", "value", "dfc-generated"] + - ["::to_value", "Argument[self].Field[clap_lex::ParsedArg::inner]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::to_value_os", "Argument[self].Field[clap_lex::ParsedArg::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::remaining", "Argument[self].Field[clap_lex::RawArgs::items].Field[alloc::vec::Vec::len]", "Argument[0].Field[clap_lex::ArgCursor::cursor]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::date", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::generate_to", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::get_filename", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::manual", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[clap_mangen::Man::cmd]", "value", "dfc-generated"] + - ["::section", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::source", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::title", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::args", "Argument[self].Field[1]", "ReturnValue", "value", "dfc-generated"] + - ["::args", "Argument[self].Field[complex::Args(1)]", "ReturnValue", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[complex::Args(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_resettable", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue.Field[clap_builder::builder::resettable::Resettable::Value(0)]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::split", "Argument[0]", "ReturnValue.Field[clap_lex::ext::Split::needle]", "value", "dfc-generated"] + - ["::split", "Argument[self]", "ReturnValue.Field[clap_lex::ext::Split::haystack].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["clap_builder::output::textwrap::word_separators::find_words_ascii_space", "Argument[0]", "ReturnValue.Field[core::iter::sources::from_fn::FromFn(0)]", "value", "dfc-generated"] + - ["clap_complete::aot::generator::utils::find_subcommand_with_path", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["clap_derive::derives::args::derive_args", "Argument[0].Field[syn::derive::DeriveInput::ident].Reference", "ReturnValue.Field[clap_derive::item::Item::group_id].Field[clap_derive::item::Name::Derived(0)]", "value", "dfc-generated"] + - ["clap_derive::derives::args::derive_args", "Argument[0].Field[syn::derive::DeriveInput::ident]", "ReturnValue.Field[clap_derive::item::Item::group_id].Field[clap_derive::item::Name::Derived(0)]", "value", "dfc-generated"] + - ["clap_derive::derives::args::derive_args", "Argument[0].Field[syn::derive::DeriveInput::ident]", "ReturnValue.Field[clap_derive::item::Item::name].Field[clap_derive::item::Name::Derived(0)]", "value", "dfc-generated"] + - ["clap_derive::derives::parser::derive_parser", "Argument[0].Field[syn::derive::DeriveInput::ident].Reference", "ReturnValue.Field[clap_derive::item::Item::group_id].Field[clap_derive::item::Name::Derived(0)]", "value", "dfc-generated"] + - ["clap_derive::derives::parser::derive_parser", "Argument[0].Field[syn::derive::DeriveInput::ident]", "ReturnValue.Field[clap_derive::item::Item::group_id].Field[clap_derive::item::Name::Derived(0)]", "value", "dfc-generated"] + - ["clap_derive::derives::subcommand::derive_subcommand", "Argument[0].Field[syn::derive::DeriveInput::ident].Reference", "ReturnValue.Field[clap_derive::item::Item::group_id].Field[clap_derive::item::Name::Derived(0)]", "value", "dfc-generated"] + - ["clap_derive::derives::subcommand::derive_subcommand", "Argument[0].Field[syn::derive::DeriveInput::ident]", "ReturnValue.Field[clap_derive::item::Item::group_id].Field[clap_derive::item::Name::Derived(0)]", "value", "dfc-generated"] + - ["clap_derive::derives::subcommand::derive_subcommand", "Argument[0].Field[syn::derive::DeriveInput::ident]", "ReturnValue.Field[clap_derive::item::Item::name].Field[clap_derive::item::Name::Derived(0)]", "value", "dfc-generated"] + - ["clap_derive::derives::value_enum::derive_value_enum", "Argument[0].Field[syn::derive::DeriveInput::ident].Reference", "ReturnValue.Field[clap_derive::item::Item::group_id].Field[clap_derive::item::Name::Derived(0)]", "value", "dfc-generated"] + - ["clap_derive::derives::value_enum::derive_value_enum", "Argument[0].Field[syn::derive::DeriveInput::ident]", "ReturnValue.Field[clap_derive::item::Item::group_id].Field[clap_derive::item::Name::Derived(0)]", "value", "dfc-generated"] + - ["clap_derive::derives::value_enum::derive_value_enum", "Argument[0].Field[syn::derive::DeriveInput::ident]", "ReturnValue.Field[clap_derive::item::Item::name].Field[clap_derive::item::Name::Derived(0)]", "value", "dfc-generated"] + - ["clap_derive::utils::ty::inner_type", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::remove", "Argument[self]", "log-injection", "df-generated"] + - ["::value_hint", "Argument[self]", "log-injection", "df-generated"] + - ["::_panic_on_missing_help", "Argument[self]", "log-injection", "df-generated"] + - ["::mut_group", "Argument[self]", "log-injection", "df-generated"] + - ["::mut_subcommand", "Argument[self]", "log-injection", "df-generated"] + - ["::remove", "Argument[self]", "log-injection", "df-generated"] + - ["::remove", "Argument[self]", "log-injection", "df-generated"] + - ["::parse_ref", "Argument[1]", "pointer-access", "df-generated"] + - ["::parse_ref", "Argument[1]", "pointer-access", "df-generated"] + - ["::parse_ref", "Argument[1]", "pointer-access", "df-generated"] + - ["::parse_ref", "Argument[1]", "pointer-access", "df-generated"] + - ["::parse", "Argument[1]", "pointer-access", "df-generated"] + - ["::parse", "Argument[1]", "pointer-access", "df-generated"] + - ["::parse_ref", "Argument[1]", "pointer-access", "df-generated"] + - ["::range", "Argument[self]", "log-injection", "df-generated"] + - ["::parse_ref", "Argument[1]", "pointer-access", "df-generated"] + - ["::range", "Argument[self]", "log-injection", "df-generated"] + - ["::wrap", "Argument[0]", "log-injection", "df-generated"] + - ["::get_required_usage_from", "Argument[1]", "pointer-access", "df-generated"] + - ["::remove", "Argument[self]", "log-injection", "df-generated"] + - ["::unwrap", "Argument[0]", "log-injection", "df-generated"] + - ["::unwrap", "Argument[1]", "log-injection", "df-generated"] + - ["::contains_id", "Argument[0]", "log-injection", "df-generated"] + - ["::get_count", "Argument[0]", "log-injection", "df-generated"] + - ["::get_flag", "Argument[0]", "log-injection", "df-generated"] + - ["::get_many", "Argument[0]", "log-injection", "df-generated"] + - ["::get_occurrences", "Argument[0]", "log-injection", "df-generated"] + - ["::get_one", "Argument[0]", "log-injection", "df-generated"] + - ["::get_raw", "Argument[0]", "log-injection", "df-generated"] + - ["::get_raw_occurrences", "Argument[0]", "log-injection", "df-generated"] + - ["::remove_many", "Argument[0]", "log-injection", "df-generated"] + - ["::remove_many", "Argument[self]", "log-injection", "df-generated"] + - ["::remove_occurrences", "Argument[0]", "log-injection", "df-generated"] + - ["::remove_occurrences", "Argument[self]", "log-injection", "df-generated"] + - ["::remove_one", "Argument[0]", "log-injection", "df-generated"] + - ["::remove_one", "Argument[self]", "log-injection", "df-generated"] + - ["::try_clear_id", "Argument[self]", "log-injection", "df-generated"] + - ["::try_remove_many", "Argument[self]", "log-injection", "df-generated"] + - ["::try_remove_occurrences", "Argument[self]", "log-injection", "df-generated"] + - ["::try_remove_one", "Argument[self]", "log-injection", "df-generated"] + - ["::check_explicit", "Argument[self]", "pointer-access", "df-generated"] + - ["::get_matches_with", "Argument[0]", "log-injection", "df-generated"] + - ["::get_matches_with", "Argument[self]", "pointer-access", "df-generated"] + - ["::parse", "Argument[0]", "log-injection", "df-generated"] + - ["::parse", "Argument[self]", "pointer-access", "df-generated"] + - ["::remove", "Argument[self]", "log-injection", "df-generated"] + - ["::remove_entry", "Argument[self]", "log-injection", "df-generated"] + - ["::write_complete", "Argument[1]", "log-injection", "df-generated"] + - ["::write_complete", "Argument[2]", "log-injection", "df-generated"] + - ["::write_complete", "Argument[1]", "log-injection", "df-generated"] + - ["::write_complete", "Argument[2]", "log-injection", "df-generated"] + - ["::write_complete", "Argument[1]", "log-injection", "df-generated"] + - ["::write_complete", "Argument[2]", "log-injection", "df-generated"] + - ["::write_complete", "Argument[1]", "log-injection", "df-generated"] + - ["::write_complete", "Argument[2]", "log-injection", "df-generated"] + - ["::write_complete", "Argument[1]", "log-injection", "df-generated"] + - ["::write_complete", "Argument[2]", "log-injection", "df-generated"] + - ["::action", "Argument[self]", "pointer-access", "df-generated"] + - ["::value_parser", "Argument[self]", "pointer-access", "df-generated"] + - ["::generate_to", "Argument[self]", "path-injection", "df-generated"] + - ["::from_matches", "Argument[0]", "log-injection", "df-generated"] + - ["::from_arg_matches", "Argument[0]", "log-injection", "df-generated"] + - ["::from_arg_matches_mut", "Argument[0]", "log-injection", "df-generated"] + - ["::update_from_arg_matches", "Argument[0]", "log-injection", "df-generated"] + - ["::update_from_arg_matches_mut", "Argument[0]", "log-injection", "df-generated"] + - ["clap_complete::engine::complete::complete", "Argument[1]", "log-injection", "df-generated"] + - ["clap_complete::engine::complete::complete", "Argument[2]", "log-injection", "df-generated"] + - ["clap_complete::engine::complete::complete", "Argument[3]", "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 deleted file mode 100644 index f6539d8bde13..000000000000 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap.model.yml +++ /dev/null @@ -1,17 +0,0 @@ -# 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/clap-rs/clap:clap", "::augment_args", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::from_str", "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_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 deleted file mode 100644 index 8daf130e9ea5..000000000000 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_bench.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -# 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/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"] - - ["repo:https://github.com/clap-rs/clap:clap_bench", "::name", "Argument[self].Field[crate::Args(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 deleted file mode 100644 index a26bc4c1a0ba..000000000000 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_builder.model.yml +++ /dev/null @@ -1,394 +0,0 @@ -# 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/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", "::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"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::allow_hyphen_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::allow_negative_numbers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::conflicts_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::conflicts_with_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::default_missing_value", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::default_missing_value_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::default_missing_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::default_missing_values_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::default_value", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::default_value_if", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::default_value_if_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::default_value_ifs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::default_value_ifs_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::default_value_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::default_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::default_values_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::display_order", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::env", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::env_os", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::exclusive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_action", "Argument[self].Field[crate::builder::arg::Arg::action].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_default_values", "Argument[self].Field[crate::builder::arg::Arg::default_vals]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_display_order", "Argument[self].Field[crate::builder::arg::Arg::disp_ord].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_env", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_help", "Argument[self].Field[crate::builder::arg::Arg::help].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_id", "Argument[self].Field[crate::builder::arg::Arg::id]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_index", "Argument[self].Field[crate::builder::arg::Arg::index]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_long_help", "Argument[self].Field[crate::builder::arg::Arg::long_help].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_num_args", "Argument[self].Field[crate::builder::arg::Arg::num_vals]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_short", "Argument[self].Field[crate::builder::arg::Arg::short]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_value_delimiter", "Argument[self].Field[crate::builder::arg::Arg::val_delim]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_value_names", "Argument[self].Field[crate::builder::arg::Arg::val_names]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_value_terminator", "Argument[self].Field[crate::builder::arg::Arg::terminator].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::global", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::group", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::groups", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::help_heading", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::hide", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::hide_default_value", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::hide_env", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::hide_env_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::hide_long_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::hide_possible_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::hide_short_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::id", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::ignore_case", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::index", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::last", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::long", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::long_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next_line_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::num_args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::number_of_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::overrides_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::overrides_with_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::raw", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::require_equals", "Argument[self]", "ReturnValue", "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", "::required_if_eq", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::required_if_eq_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::required_if_eq_any", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::required_unless_present", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::required_unless_present_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::required_unless_present_any", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::requires", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::requires_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::requires_if", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::requires_ifs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::setting", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::short", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::short_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::short_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::trailing_var_arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::unset_setting", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::use_value_delimiter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::value_delimiter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::value_hint", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::value_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::value_names", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::value_parser", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::value_terminator", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::visible_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::visible_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::visible_short_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::visible_short_aliases", "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", "::arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::conflicts_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::conflicts_with_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_id", "Argument[self].Field[crate::builder::arg_group::ArgGroup::id]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::id", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::is_multiple", "Argument[self].Field[crate::builder::arg_group::ArgGroup::multiple]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::is_required_set", "Argument[self].Field[crate::builder::arg_group::ArgGroup::required]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::multiple", "Argument[0]", "Argument[self].Field[crate::builder::arg_group::ArgGroup::multiple]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::multiple", "Argument[0]", "ReturnValue.Field[crate::builder::arg_group::ArgGroup::multiple]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::multiple", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::required", "Argument[0]", "Argument[self].Field[crate::builder::arg_group::ArgGroup::required]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::required", "Argument[0]", "ReturnValue.Field[crate::builder::arg_group::ArgGroup::required]", "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", "::requires", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::requires_all", "Argument[self]", "ReturnValue", "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", "::about", "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", "::after_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::after_long_help", "Argument[self]", "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"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::allow_external_subcommands", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::allow_hyphen_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::allow_missing_positional", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::allow_negative_numbers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::arg_required_else_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::args_conflicts_with_subcommands", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::args_override_self", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::author", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::before_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::before_long_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::bin_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::color", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::defer", "Argument[0]", "Argument[self].Field[crate::builder::command::Command::deferred].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::defer", "Argument[0]", "ReturnValue.Field[crate::builder::command::Command::deferred].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::defer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::disable_colored_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::disable_help_flag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::disable_help_subcommand", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::disable_version_flag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::display_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::display_order", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::dont_collapse_args_in_usage", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::dont_delimit_trailing_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::external_subcommand_value_parser", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::flatten_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_about", "Argument[self].Field[crate::builder::command::Command::about].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_after_help", "Argument[self].Field[crate::builder::command::Command::after_help].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_after_long_help", "Argument[self].Field[crate::builder::command::Command::after_long_help].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_before_help", "Argument[self].Field[crate::builder::command::Command::before_help].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_before_long_help", "Argument[self].Field[crate::builder::command::Command::before_long_help].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_display_order", "Argument[self].Field[crate::builder::command::Command::disp_ord].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_external_subcommand_value_parser", "Argument[self].Field[crate::builder::command::Command::external_value_parser].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_help_template", "Argument[self].Field[crate::builder::command::Command::template].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_keymap", "Argument[self].Field[crate::builder::command::Command::args]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_long_about", "Argument[self].Field[crate::builder::command::Command::long_about].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_override_help", "Argument[self].Field[crate::builder::command::Command::help_str].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_override_usage", "Argument[self].Field[crate::builder::command::Command::usage_str].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_short_flag", "Argument[self].Field[crate::builder::command::Command::short_flag]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::global_setting", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::group", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::groups", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::help_expected", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::help_template", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::hide", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::hide_possible_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::ignore_errors", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::infer_long_args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::infer_subcommands", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::long_about", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::long_flag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::long_flag_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::long_flag_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::long_help_exists", "Argument[self].Field[crate::builder::command::Command::long_help_exists]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::long_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::max_term_width", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::multicall", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::mut_arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::mut_args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::mut_group", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::mut_subcommand", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next_display_order", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next_help_heading", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next_line_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::no_binary_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::override_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::override_usage", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::propagate_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::setting", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::short_flag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::short_flag_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::short_flag_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::styles", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::subcommand", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::subcommand_help_heading", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::subcommand_negates_reqs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::subcommand_precedence_over_arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::subcommand_required", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::subcommand_value_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::subcommands", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::term_width", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::trailing_var_arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::unset_global_setting", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::unset_setting", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::visible_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::visible_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::visible_long_flag_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_help", "Argument[self].Field[crate::builder::possible_value::PossibleValue::help].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::hide", "Argument[0]", "Argument[self].Field[crate::builder::possible_value::PossibleValue::hide]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::hide", "Argument[0]", "ReturnValue.Field[crate::builder::possible_value::PossibleValue::hide]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::hide", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::is_hide_set", "Argument[self].Field[crate::builder::possible_value::PossibleValue::hide]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::end_bound", "Argument[self].Field[crate::builder::range::ValueRange::end_inclusive]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::start_bound", "Argument[self].Field[crate::builder::range::ValueRange::start_inclusive]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::max_values", "Argument[self].Field[crate::builder::range::ValueRange::end_inclusive]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::min_values", "Argument[self].Field[crate::builder::range::ValueRange::start_inclusive]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::num_values", "Argument[self].Field[crate::builder::range::ValueRange::start_inclusive]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::raw", "Argument[0]", "ReturnValue.Field[crate::builder::range::ValueRange::start_inclusive]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::raw", "Argument[1]", "ReturnValue.Field[crate::builder::range::ValueRange::end_inclusive]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::into_resettable", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::as_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::from", "Argument[0].Field[crate::util::id::Id(0)]", "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", "::into_inner", "Argument[self].Field[crate::builder::str::Str::name]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::as_styled_str", "Argument[self].Field[crate::builder::styled_str::StyledStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::error", "Argument[0]", "Argument[self].Field[crate::builder::styling::Styles::error]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::error", "Argument[0]", "ReturnValue.Field[crate::builder::styling::Styles::error]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_error", "Argument[self].Field[crate::builder::styling::Styles::error]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_header", "Argument[self].Field[crate::builder::styling::Styles::header]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_invalid", "Argument[self].Field[crate::builder::styling::Styles::invalid]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_literal", "Argument[self].Field[crate::builder::styling::Styles::literal]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_placeholder", "Argument[self].Field[crate::builder::styling::Styles::placeholder]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_usage", "Argument[self].Field[crate::builder::styling::Styles::usage]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_valid", "Argument[self].Field[crate::builder::styling::Styles::valid]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::header", "Argument[0]", "Argument[self].Field[crate::builder::styling::Styles::header]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::header", "Argument[0]", "ReturnValue.Field[crate::builder::styling::Styles::header]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::invalid", "Argument[0]", "Argument[self].Field[crate::builder::styling::Styles::invalid]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::invalid", "Argument[0]", "ReturnValue.Field[crate::builder::styling::Styles::invalid]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::invalid", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::literal", "Argument[0]", "Argument[self].Field[crate::builder::styling::Styles::literal]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::literal", "Argument[0]", "ReturnValue.Field[crate::builder::styling::Styles::literal]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::literal", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::placeholder", "Argument[0]", "Argument[self].Field[crate::builder::styling::Styles::placeholder]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::placeholder", "Argument[0]", "ReturnValue.Field[crate::builder::styling::Styles::placeholder]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::placeholder", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::usage", "Argument[0]", "Argument[self].Field[crate::builder::styling::Styles::usage]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::usage", "Argument[0]", "ReturnValue.Field[crate::builder::styling::Styles::usage]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::usage", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::valid", "Argument[0]", "Argument[self].Field[crate::builder::styling::Styles::valid]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::valid", "Argument[0]", "ReturnValue.Field[crate::builder::styling::Styles::valid]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::valid", "Argument[self]", "ReturnValue", "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", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse", "Argument[2]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::range", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::range", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::and_suggest", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::insert_context_unchecked", "Argument[self]", "ReturnValue", "value", "dfc-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", "::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", "::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"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::with_content", "Argument[0]", "ReturnValue.Field[crate::output::fmt::Colorizer::content]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::with_content", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[0]", "ReturnValue.Field[crate::output::help_template::AutoHelp::template].Field[crate::output::help_template::HelpTemplate::writer]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[1]", "ReturnValue.Field[crate::output::help_template::AutoHelp::template].Field[crate::output::help_template::HelpTemplate::cmd]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[2]", "ReturnValue.Field[crate::output::help_template::AutoHelp::template].Field[crate::output::help_template::HelpTemplate::usage]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[3]", "ReturnValue.Field[crate::output::help_template::AutoHelp::template].Field[crate::output::help_template::HelpTemplate::use_long]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[0]", "ReturnValue.Field[crate::output::help_template::HelpTemplate::writer]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[1]", "ReturnValue.Field[crate::output::help_template::HelpTemplate::cmd]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[2]", "ReturnValue.Field[crate::output::help_template::HelpTemplate::usage]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[3]", "ReturnValue.Field[crate::output::help_template::HelpTemplate::use_long]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[0]", "ReturnValue.Field[crate::output::textwrap::wrap_algorithms::LineWrapper::hard_width]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::wrap", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[0]", "ReturnValue.Field[crate::output::usage::Usage::cmd]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::required", "Argument[0]", "Argument[self].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[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", "::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"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::size_hint", "Argument[self].Field[crate::parser::matches::arg_matches::GroupedValues::len]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next", "Argument[self].Field[crate::parser::matches::arg_matches::IdsRef::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::size_hint", "Argument[self].Field[crate::parser::matches::arg_matches::Indices::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::size_hint", "Argument[self].Field[crate::parser::matches::arg_matches::Indices::len]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next", "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::RawValues::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::size_hint", "Argument[self].Field[crate::parser::matches::arg_matches::RawValues::len]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::size_hint", "Argument[self].Field[crate::parser::matches::arg_matches::Values::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::size_hint", "Argument[self].Field[crate::parser::matches::arg_matches::Values::len]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::size_hint", "Argument[self].Field[crate::parser::matches::arg_matches::ValuesRef::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::size_hint", "Argument[self].Field[crate::parser::matches::arg_matches::ValuesRef::len]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::infer_type_id", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::infer_type_id", "Argument[self].Field[crate::parser::matches::matched_arg::MatchedArg::type_id].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::into_vals", "Argument[self].Field[crate::parser::matches::matched_arg::MatchedArg::vals]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::set_source", "Argument[0]", "Argument[self].Field[crate::parser::matches::matched_arg::MatchedArg::source].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::source", "Argument[self].Field[crate::parser::matches::matched_arg::MatchedArg::source]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::type_id", "Argument[self].Field[crate::parser::matches::matched_arg::MatchedArg::type_id]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_matches_with", "Argument[self]", "Argument[1]", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[0]", "ReturnValue.Field[crate::parser::parser::Parser::cmd]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::entry", "Argument[self]", "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", "::get", "Argument[self].Field[crate::util::flat_map::FlatMap::values].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_mut", "Argument[self].Field[crate::util::flat_map::FlatMap::values].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::insert", "Argument[1]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next", "Argument[self].Field[crate::util::flat_map::Iter::keys].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::next", "Argument[self].Field[crate::util::flat_map::Iter::values].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Field[1]", "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", "::as_internal_str", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::as_internal_str", "Argument[self].Field[crate::util::id::Id(0)]", "ReturnValue.Reference", "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"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["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", "::range", "Argument[self]", "log-injection", "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", "::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"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_count", "Argument[0]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_flag", "Argument[0]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_many", "Argument[0]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_occurrences", "Argument[0]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_one", "Argument[0]", "log-injection", "df-generated"] - - ["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_occurrences", "Argument[0]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove_one", "Argument[0]", "log-injection", "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 deleted file mode 100644 index b9a0f77c4ede..000000000000 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete.model.yml +++ /dev/null @@ -1,78 +0,0 @@ -# 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/clap-rs/clap:clap_complete", "<_ as crate::engine::custom::ValueCandidates>::candidates", "Argument[self].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "<_ as crate::engine::custom::ValueCompleter>::complete", "Argument[0]", "Argument[self].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "<_ as crate::engine::custom::ValueCompleter>::complete", "Argument[self].ReturnValue", "ReturnValue", "value", "dfc-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", "::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", "::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"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::display_order", "Argument[0]", "Argument[self].Field[crate::engine::candidate::CompletionCandidate::display_order]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::display_order", "Argument[0]", "ReturnValue.Field[crate::engine::candidate::CompletionCandidate::display_order]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::display_order", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::get_display_order", "Argument[self].Field[crate::engine::candidate::CompletionCandidate::display_order]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::get_help", "Argument[self].Field[crate::engine::candidate::CompletionCandidate::help].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::get_id", "Argument[self].Field[crate::engine::candidate::CompletionCandidate::id].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::get_tag", "Argument[self].Field[crate::engine::candidate::CompletionCandidate::tag].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::get_value", "Argument[self].Field[crate::engine::candidate::CompletionCandidate::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::help", "Argument[0]", "Argument[self].Field[crate::engine::candidate::CompletionCandidate::help]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::help", "Argument[0]", "ReturnValue.Field[crate::engine::candidate::CompletionCandidate::help]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::hide", "Argument[0]", "Argument[self].Field[crate::engine::candidate::CompletionCandidate::hidden]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::hide", "Argument[0]", "ReturnValue.Field[crate::engine::candidate::CompletionCandidate::hidden]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::hide", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::id", "Argument[0]", "Argument[self].Field[crate::engine::candidate::CompletionCandidate::id]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::id", "Argument[0]", "ReturnValue.Field[crate::engine::candidate::CompletionCandidate::id]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::id", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::is_hide_set", "Argument[self].Field[crate::engine::candidate::CompletionCandidate::hidden]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::tag", "Argument[0]", "Argument[self].Field[crate::engine::candidate::CompletionCandidate::tag]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::tag", "Argument[0]", "ReturnValue.Field[crate::engine::candidate::CompletionCandidate::tag]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::tag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::current_dir", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::filter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::stdio", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::bin", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::completer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::shells", "Argument[0]", "Argument[self].Field[crate::env::CompleteEnv::shells]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::shells", "Argument[0]", "ReturnValue.Field[crate::env::CompleteEnv::shells]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::shells", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::var", "Argument[0]", "Argument[self].Field[crate::env::CompleteEnv::var]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::var", "Argument[0]", "ReturnValue.Field[crate::env::CompleteEnv::var]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::var", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::with_factory", "Argument[0]", "ReturnValue.Field[crate::env::CompleteEnv::factory]", "value", "dfc-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", "crate::aot::generator::utils::find_subcommand_with_path", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "crate::engine::custom::complete_path", "Argument[1]", "Argument[2]", "taint", "df-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[1]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[2]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[2]", "path-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[1]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[2]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[2]", "path-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[1]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[2]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[2]", "path-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[1]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[2]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[2]", "path-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[1]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[2]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[2]", "path-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "crate::engine::complete::complete", "Argument[1]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "crate::engine::complete::complete", "Argument[2]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "crate::engine::complete::complete", "Argument[3]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "crate::engine::complete::complete", "Argument[3]", "path-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "crate::engine::custom::complete_path", "Argument[1]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete", "crate::engine::custom::complete_path", "Argument[1]", "path-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete_nushell.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete_nushell.model.yml deleted file mode 100644 index 0317e38cc51c..000000000000 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete_nushell.model.yml +++ /dev/null @@ -1,13 +0,0 @@ -# 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/clap-rs/clap:clap_complete_nushell", "::file_name", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["repo:https://github.com/clap-rs/clap:clap_complete_nushell", "crate::has_command", "Argument[0]", "log-injection", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_complete_nushell", "crate::register_example", "Argument[0]", "log-injection", "df-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 deleted file mode 100644 index 4397f956fcfd..000000000000 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_derive.model.yml +++ /dev/null @@ -1,55 +0,0 @@ -# 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/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", "::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"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::from_args_field", "Argument[2]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::item::Item::env_casing]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::from_args_struct", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::item::Item::name]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::from_subcommand_enum", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::item::Item::name]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::from_subcommand_variant", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::item::Item::casing]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::from_subcommand_variant", "Argument[2]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::item::Item::env_casing]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::from_value_enum", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::item::Item::name]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::from_value_enum_variant", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::item::Item::casing]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::from_value_enum_variant", "Argument[2]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::item::Item::env_casing]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::group_id", "Argument[self].Field[crate::item::Item::group_id]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::new", "Argument[0]", "ReturnValue.Field[crate::item::Method::name]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::new", "Argument[1]", "ReturnValue.Field[crate::item::Method::args]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::translate", "Argument[self].Field[crate::item::Name::Assigned(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::from", "Argument[0].Field[crate::utils::spanned::Sp::span]", "ReturnValue.Field[crate::utils::spanned::Sp::span]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::deref", "Argument[self].Field[crate::utils::spanned::Sp::val]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::deref_mut", "Argument[self].Field[crate::utils::spanned::Sp::val]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::get", "Argument[self].Field[crate::utils::spanned::Sp::val]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::new", "Argument[0]", "ReturnValue.Field[crate::utils::spanned::Sp::val]", "value", "dfc-generated"] - - ["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"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_lex.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_lex.model.yml deleted file mode 100644 index 5ccc93d09ccf..000000000000 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_lex.model.yml +++ /dev/null @@ -1,11 +0,0 @@ -# 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/clap-rs/clap:clap_lex", "::to_value", "Argument[self].Field[crate::ParsedArg::inner]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_lex", "::to_value_os", "Argument[self].Field[crate::ParsedArg::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_lex", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_lex", "::split", "Argument[0]", "ReturnValue.Field[crate::ext::Split::needle]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_lex", "::split", "Argument[self]", "ReturnValue.Field[crate::ext::Split::haystack].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_mangen.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_mangen.model.yml deleted file mode 100644 index 6829efe4972f..000000000000 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_mangen.model.yml +++ /dev/null @@ -1,19 +0,0 @@ -# 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/clap-rs/clap:clap_mangen", "::date", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_mangen", "::generate_to", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_mangen", "::get_filename", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_mangen", "::manual", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_mangen", "::new", "Argument[0]", "ReturnValue.Field[crate::Man::cmd]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_mangen", "::section", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_mangen", "::source", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_mangen", "::title", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["repo:https://github.com/clap-rs/clap:clap_mangen", "::generate_to", "Argument[self]", "path-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/hyper.model.yml b/rust/ql/lib/ext/generated/hyper.model.yml new file mode 100644 index 000000000000..306bf248543c --- /dev/null +++ b/rust/ql/lib/ext/generated/hyper.model.yml @@ -0,0 +1,445 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[hyper::ext::h1_reason_phrase::ReasonPhrase(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers]", "ReturnValue", "value", "dfc-generated"] + - ["::set_trailers", "Argument[0]", "Argument[self].Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::with_trailers", "Argument[0]", "ReturnValue.Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "value", "dfc-generated"] + - ["::with_trailers", "Argument[1]", "ReturnValue.Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::as_ffi_mut", "Argument[self].Field[hyper::body::incoming::Incoming::kind].Field[hyper::body::incoming::Kind::Ffi(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::h2", "Argument[0]", "ReturnValue.Field[hyper::body::incoming::Incoming::kind].Field[hyper::body::incoming::Kind::H2::recv]", "value", "dfc-generated"] + - ["::h2", "Argument[1]", "ReturnValue.Field[hyper::body::incoming::Incoming::kind].Field[hyper::body::incoming::Kind::H2::content_length]", "value", "dfc-generated"] + - ["::h2", "Argument[2]", "ReturnValue.Field[hyper::body::incoming::Incoming::kind].Field[hyper::body::incoming::Kind::H2::ping]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::option::Option::Some(0)].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::option::Option::Some(0)].Field[std::path::Component::Normal(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::checked_new", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[hyper::body::length::DecodedLength(0)]", "value", "dfc-generated"] + - ["::danger_len", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::danger_len", "Argument[self].Field[hyper::body::length::DecodedLength(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_opt", "Argument[self].Field[hyper::body::length::DecodedLength(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[hyper::body::length::DecodedLength(0)]", "value", "dfc-generated"] + - ["::allow_obsolete_multiline_headers_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::allow_spaces_after_header_name_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::handshake", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::handshake", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::http09_responses", "Argument[0]", "Argument[self].Field[hyper::client::conn::http1::Builder::h09_responses]", "value", "dfc-generated"] + - ["::http09_responses", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http1::Builder::h09_responses]", "value", "dfc-generated"] + - ["::http09_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::ignore_invalid_headers_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_buf_size", "Argument[0]", "Argument[self].Field[hyper::client::conn::http1::Builder::h1_max_buf_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max_buf_size", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http1::Builder::h1_max_buf_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max_buf_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_headers", "Argument[0]", "Argument[self].Field[hyper::client::conn::http1::Builder::h1_max_headers].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max_headers", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http1::Builder::h1_max_headers].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::preserve_header_case", "Argument[0]", "Argument[self].Field[hyper::client::conn::http1::Builder::h1_preserve_header_case]", "value", "dfc-generated"] + - ["::preserve_header_case", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http1::Builder::h1_preserve_header_case]", "value", "dfc-generated"] + - ["::preserve_header_case", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::preserve_header_order", "Argument[0]", "Argument[self].Field[hyper::client::conn::http1::Builder::h1_preserve_header_order]", "value", "dfc-generated"] + - ["::preserve_header_order", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http1::Builder::h1_preserve_header_order]", "value", "dfc-generated"] + - ["::preserve_header_order", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::read_buf_exact_size", "Argument[0]", "Argument[self].Field[hyper::client::conn::http1::Builder::h1_read_buf_exact_size]", "value", "dfc-generated"] + - ["::read_buf_exact_size", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http1::Builder::h1_read_buf_exact_size]", "value", "dfc-generated"] + - ["::read_buf_exact_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::title_case_headers", "Argument[0]", "Argument[self].Field[hyper::client::conn::http1::Builder::h1_title_case_headers]", "value", "dfc-generated"] + - ["::title_case_headers", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http1::Builder::h1_title_case_headers]", "value", "dfc-generated"] + - ["::title_case_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::writev", "Argument[0]", "Argument[self].Field[hyper::client::conn::http1::Builder::h1_writev].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::writev", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http1::Builder::h1_writev].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::writev", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_upgrades", "Argument[self]", "ReturnValue.Field[hyper::client::conn::http1::upgrades::UpgradeableConnection::inner].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::send_request", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::try_send_request", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::adaptive_window", "Argument[0]", "Argument[self].Field[hyper::client::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::client::Config::adaptive_window]", "value", "dfc-generated"] + - ["::adaptive_window", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::client::Config::adaptive_window]", "value", "dfc-generated"] + - ["::adaptive_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::handshake", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::handshake", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::header_table_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::initial_connection_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::initial_max_send_streams", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::initial_stream_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::keep_alive_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::keep_alive_timeout", "Argument[0]", "Argument[self].Field[hyper::client::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::client::Config::keep_alive_timeout]", "value", "dfc-generated"] + - ["::keep_alive_timeout", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::client::Config::keep_alive_timeout]", "value", "dfc-generated"] + - ["::keep_alive_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::keep_alive_while_idle", "Argument[0]", "Argument[self].Field[hyper::client::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::client::Config::keep_alive_while_idle]", "value", "dfc-generated"] + - ["::keep_alive_while_idle", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::client::Config::keep_alive_while_idle]", "value", "dfc-generated"] + - ["::keep_alive_while_idle", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_concurrent_reset_streams", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_concurrent_streams", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_frame_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_header_list_size", "Argument[0]", "Argument[self].Field[hyper::client::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::client::Config::max_header_list_size]", "value", "dfc-generated"] + - ["::max_header_list_size", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::client::Config::max_header_list_size]", "value", "dfc-generated"] + - ["::max_header_list_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_pending_accept_reset_streams", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_send_buf_size", "Argument[0]", "Argument[self].Field[hyper::client::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::client::Config::max_send_buffer_size]", "value", "dfc-generated"] + - ["::max_send_buf_size", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::client::Config::max_send_buffer_size]", "value", "dfc-generated"] + - ["::max_send_buf_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[hyper::client::conn::http2::Builder::exec]", "value", "dfc-generated"] + - ["::timer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::client::dispatch::SendWhen::call_back]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::client::dispatch::SendWhen::when]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::client::dispatch::SendWhen::call_back]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::client::dispatch::SendWhen::when]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::try_send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::unbound", "Argument[self].Field[hyper::client::dispatch::Sender::inner]", "ReturnValue.Field[hyper::client::dispatch::UnboundedSender::inner]", "value", "dfc-generated"] + - ["::into_error", "Argument[self].Field[hyper::client::dispatch::TrySendError::error]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bufs_cnt", "Argument[self].Field[hyper::common::buf::BufList::bufs].Field[alloc::collections::vec_deque::VecDeque::len]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[hyper::common::io::compat::Compat(0)]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[hyper::common::io::rewind::Rewind::inner]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[hyper::common::io::rewind::Rewind::pre].Field[core::option::Option::Some(0)]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[hyper::common::io::rewind::Rewind::inner]", "value", "dfc-generated"] + - ["::new_buffered", "Argument[0]", "ReturnValue.Field[hyper::common::io::rewind::Rewind::inner]", "value", "dfc-generated"] + - ["::new_buffered", "Argument[1]", "ReturnValue.Field[hyper::common::io::rewind::Rewind::pre].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::rewind", "Argument[0]", "Argument[self].Field[hyper::common::io::rewind::Rewind::pre].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::check", "Argument[0].Field[hyper::common::time::Dur::Configured(0)].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::check", "Argument[0].Field[hyper::common::time::Dur::Default(0)].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[hyper::ext::Protocol::inner]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[hyper::ext::Protocol::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[hyper::ext::h1_reason_phrase::ReasonPhrase(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_bytes", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_bytes", "Argument[self].Field[hyper::ext::h1_reason_phrase::ReasonPhrase(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::wrap", "Argument[0]", "ReturnValue.Field[hyper::ffi::http_types::hyper_response(0)]", "value", "dfc-generated"] + - ["::downgrade", "Argument[0].Field[alloc::sync::Arc::alloc].Reference", "ReturnValue.Field[hyper::ffi::task::WeakExec(0)].Field[alloc::sync::Weak::alloc]", "value", "dfc-generated"] + - ["::downgrade", "Argument[0].Field[alloc::sync::Arc::alloc]", "ReturnValue.Field[hyper::ffi::task::WeakExec(0)].Field[alloc::sync::Weak::alloc]", "value", "dfc-generated"] + - ["::downgrade", "Argument[0].Field[alloc::sync::Arc::ptr]", "ReturnValue.Field[hyper::ffi::task::WeakExec(0)].Field[alloc::sync::Weak::ptr]", "value", "dfc-generated"] + - ["::boxed", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[hyper::proto::h1::conn::Conn::io].Field[hyper::proto::h1::io::Buffered::io]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::conn::Conn::io].Field[hyper::proto::h1::io::Buffered::io]", "value", "dfc-generated"] + - ["::set_flush_pipeline", "Argument[0]", "Argument[self].Field[hyper::proto::h1::conn::Conn::io].Field[hyper::proto::h1::io::Buffered::flush_pipeline]", "value", "dfc-generated"] + - ["::set_h1_parser_config", "Argument[0]", "Argument[self].Field[hyper::proto::h1::conn::Conn::state].Field[hyper::proto::h1::conn::State::h1_parser_config]", "value", "dfc-generated"] + - ["::set_timer", "Argument[0]", "Argument[self].Field[hyper::proto::h1::conn::Conn::state].Field[hyper::proto::h1::conn::State::timer]", "value", "dfc-generated"] + - ["::wants_read_again", "Argument[self].Field[hyper::proto::h1::conn::Conn::state].Field[hyper::proto::h1::conn::State::notify_read]", "ReturnValue", "value", "dfc-generated"] + - ["::chunked", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::decode::Decoder::kind].Field[hyper::proto::h1::decode::Kind::Chunked::h1_max_headers]", "value", "dfc-generated"] + - ["::chunked", "Argument[1]", "ReturnValue.Field[hyper::proto::h1::decode::Decoder::kind].Field[hyper::proto::h1::decode::Kind::Chunked::h1_max_header_size]", "value", "dfc-generated"] + - ["::length", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::decode::Decoder::kind].Field[hyper::proto::h1::decode::Kind::Length(0)]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[hyper::proto::h1::decode::Decoder::kind].Field[hyper::proto::h1::decode::Kind::Chunked::h1_max_headers]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[hyper::proto::h1::decode::Decoder::kind].Field[hyper::proto::h1::decode::Kind::Chunked::h1_max_header_size]", "value", "dfc-generated"] + - ["::recv_msg", "Argument[0].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::dispatch::Client::rx]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h1::dispatch::Client::callback]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h1::dispatch::Client::rx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h1::dispatch::Client::rx_closed]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h1::dispatch::Client::callback]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h1::dispatch::Client::rx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h1::dispatch::Client::rx_closed]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[hyper::proto::h1::dispatch::Dispatcher::dispatch]", "ReturnValue.Field[2]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::dispatch::Dispatcher::dispatch]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[hyper::proto::h1::dispatch::Dispatcher::conn]", "value", "dfc-generated"] + - ["::recv_msg", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::recv_msg", "Argument[0].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_service", "Argument[self].Field[hyper::proto::h1::dispatch::Server::service]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::dispatch::Server::service]", "value", "dfc-generated"] + - ["::chunk", "Argument[self].Field[hyper::proto::h1::encode::ChunkSize::bytes].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::encode::EncodedBuf::kind].Field[hyper::proto::h1::encode::BufKind::Chunked(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::encode::EncodedBuf::kind].Field[hyper::proto::h1::encode::BufKind::Exact(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::encode::EncodedBuf::kind].Field[hyper::proto::h1::encode::BufKind::Limited(0)]", "value", "dfc-generated"] + - ["::encode", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::encode::EncodedBuf::kind].Field[hyper::proto::h1::encode::BufKind::Exact(0)]", "value", "dfc-generated"] + - ["::encode_and_end", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::end", "Argument[self].Field[hyper::proto::h1::encode::Encoder::kind].Field[hyper::proto::h1::encode::Kind::Length(0)]", "ReturnValue.Field[core::result::Result::Err(0)].Field[hyper::proto::h1::encode::NotEof(0)]", "value", "dfc-generated"] + - ["::into_chunked_with_trailing_fields", "Argument[self].Field[hyper::proto::h1::encode::Encoder::is_last]", "ReturnValue.Field[hyper::proto::h1::encode::Encoder::is_last]", "value", "dfc-generated"] + - ["::into_chunked_with_trailing_fields", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::is_last", "Argument[self].Field[hyper::proto::h1::encode::Encoder::is_last]", "ReturnValue", "value", "dfc-generated"] + - ["::length", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::encode::Encoder::kind].Field[hyper::proto::h1::encode::Kind::Length(0)]", "value", "dfc-generated"] + - ["::set_last", "Argument[0]", "Argument[self].Field[hyper::proto::h1::encode::Encoder::is_last]", "value", "dfc-generated"] + - ["::set_last", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::encode::Encoder::is_last]", "value", "dfc-generated"] + - ["::set_last", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[hyper::proto::h1::io::Buffered::io]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::io_mut", "Argument[self].Field[hyper::proto::h1::io::Buffered::io]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::is_read_blocked", "Argument[self].Field[hyper::proto::h1::io::Buffered::read_blocked]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::io::Buffered::io]", "value", "dfc-generated"] + - ["::read_buf_mut", "Argument[self].Field[hyper::proto::h1::io::Buffered::read_buf]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::set_flush_pipeline", "Argument[0]", "Argument[self].Field[hyper::proto::h1::io::Buffered::flush_pipeline]", "value", "dfc-generated"] + - ["::set_max_buf_size", "Argument[0]", "Argument[self].Field[hyper::proto::h1::io::Buffered::read_buf_strategy].Field[hyper::proto::h1::io::ReadStrategy::Adaptive::max]", "value", "dfc-generated"] + - ["::set_max_buf_size", "Argument[0]", "Argument[self].Field[hyper::proto::h1::io::Buffered::write_buf].Field[hyper::proto::h1::io::WriteBuf::max_buf_size]", "value", "dfc-generated"] + - ["::set_read_buf_exact_size", "Argument[0]", "Argument[self].Field[hyper::proto::h1::io::Buffered::read_buf_strategy].Field[hyper::proto::h1::io::ReadStrategy::Exact(0)]", "value", "dfc-generated"] + - ["::write_buf", "Argument[self].Field[hyper::proto::h1::io::Buffered::write_buf]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::remaining", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::io::Cursor::bytes]", "value", "dfc-generated"] + - ["::remaining", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::PipeToSendStream::body_tx]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::PipeToSendStream::data_done]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::PipeToSendStream::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::PipeToSendStream::body_tx]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::PipeToSendStream::data_done]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::PipeToSendStream::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ConnTask::cancel_tx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ConnTask::conn]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ConnTask::drop_rx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ConnTask::cancel_tx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ConnTask::conn]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ConnTask::drop_rx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::PipeMap::conn_drop_ref]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::PipeMap::ping]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::PipeMap::pipe]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::PipeMap::conn_drop_ref]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::PipeMap::ping]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::PipeMap::pipe]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ResponseFutMap::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ResponseFutMap::ping]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ResponseFutMap::send_stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ResponseFutMap::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ResponseFutMap::ping]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ResponseFutMap::send_stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::for_stream", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::server::H2Stream::date_header]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::server::H2Stream::reply]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::server::H2Stream::state]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::server::H2Stream::date_header]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::server::H2Stream::reply]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::server::H2Stream::state]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[hyper::proto::h2::server::Server::service]", "value", "dfc-generated"] + - ["::new", "Argument[2].Field[hyper::proto::h2::server::Config::date_header]", "ReturnValue.Field[hyper::proto::h2::server::Server::date_header]", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[hyper::proto::h2::server::Server::exec]", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[hyper::proto::h2::server::Server::timer]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::init_len", "Argument[self].Field[hyper::rt::io::ReadBuf::init]", "ReturnValue", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[hyper::rt::io::ReadBuf::filled]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::uninit", "Argument[0]", "ReturnValue.Field[hyper::rt::io::ReadBuf::raw]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::remaining", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::auto_date_header", "Argument[0]", "Argument[self].Field[hyper::server::conn::http1::Builder::date_header]", "value", "dfc-generated"] + - ["::auto_date_header", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http1::Builder::date_header]", "value", "dfc-generated"] + - ["::auto_date_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::half_close", "Argument[0]", "Argument[self].Field[hyper::server::conn::http1::Builder::h1_half_close]", "value", "dfc-generated"] + - ["::half_close", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http1::Builder::h1_half_close]", "value", "dfc-generated"] + - ["::half_close", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::header_read_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::ignore_invalid_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::keep_alive", "Argument[0]", "Argument[self].Field[hyper::server::conn::http1::Builder::h1_keep_alive]", "value", "dfc-generated"] + - ["::keep_alive", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http1::Builder::h1_keep_alive]", "value", "dfc-generated"] + - ["::keep_alive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_buf_size", "Argument[0]", "Argument[self].Field[hyper::server::conn::http1::Builder::max_buf_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max_buf_size", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http1::Builder::max_buf_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max_buf_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_headers", "Argument[0]", "Argument[self].Field[hyper::server::conn::http1::Builder::h1_max_headers].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max_headers", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http1::Builder::h1_max_headers].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::pipeline_flush", "Argument[0]", "Argument[self].Field[hyper::server::conn::http1::Builder::pipeline_flush]", "value", "dfc-generated"] + - ["::pipeline_flush", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http1::Builder::pipeline_flush]", "value", "dfc-generated"] + - ["::pipeline_flush", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::preserve_header_case", "Argument[0]", "Argument[self].Field[hyper::server::conn::http1::Builder::h1_preserve_header_case]", "value", "dfc-generated"] + - ["::preserve_header_case", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http1::Builder::h1_preserve_header_case]", "value", "dfc-generated"] + - ["::preserve_header_case", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::timer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::title_case_headers", "Argument[0]", "Argument[self].Field[hyper::server::conn::http1::Builder::h1_title_case_headers]", "value", "dfc-generated"] + - ["::title_case_headers", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http1::Builder::h1_title_case_headers]", "value", "dfc-generated"] + - ["::title_case_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::writev", "Argument[0]", "Argument[self].Field[hyper::server::conn::http1::Builder::h1_writev].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::writev", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http1::Builder::h1_writev].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::writev", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::server::conn::http1::Connection::conn]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::server::conn::http1::Connection::conn]", "ReturnValue", "value", "dfc-generated"] + - ["::with_upgrades", "Argument[self]", "ReturnValue.Field[hyper::server::conn::http1::UpgradeableConnection::inner].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::adaptive_window", "Argument[0]", "Argument[self].Field[hyper::server::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::server::Config::adaptive_window]", "value", "dfc-generated"] + - ["::adaptive_window", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::server::Config::adaptive_window]", "value", "dfc-generated"] + - ["::adaptive_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::auto_date_header", "Argument[0]", "Argument[self].Field[hyper::server::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::server::Config::date_header]", "value", "dfc-generated"] + - ["::auto_date_header", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::server::Config::date_header]", "value", "dfc-generated"] + - ["::auto_date_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::enable_connect_protocol", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::initial_connection_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::initial_stream_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::keep_alive_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::keep_alive_timeout", "Argument[0]", "Argument[self].Field[hyper::server::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::server::Config::keep_alive_timeout]", "value", "dfc-generated"] + - ["::keep_alive_timeout", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::server::Config::keep_alive_timeout]", "value", "dfc-generated"] + - ["::keep_alive_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_concurrent_streams", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_frame_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_header_list_size", "Argument[0]", "Argument[self].Field[hyper::server::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::server::Config::max_header_list_size]", "value", "dfc-generated"] + - ["::max_header_list_size", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::server::Config::max_header_list_size]", "value", "dfc-generated"] + - ["::max_header_list_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_local_error_reset_streams", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_pending_accept_reset_streams", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_send_buf_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http2::Builder::exec]", "value", "dfc-generated"] + - ["::serve_connection", "Argument[1]", "ReturnValue.Field[hyper::server::conn::http2::Connection::conn].Field[hyper::proto::h2::server::Server::service]", "value", "dfc-generated"] + - ["::serve_connection", "Argument[self].Field[hyper::server::conn::http2::Builder::timer].Reference", "ReturnValue.Field[hyper::server::conn::http2::Connection::conn].Field[hyper::proto::h2::server::Server::timer]", "value", "dfc-generated"] + - ["::serve_connection", "Argument[self].Field[hyper::server::conn::http2::Builder::timer]", "ReturnValue.Field[hyper::server::conn::http2::Connection::conn].Field[hyper::proto::h2::server::Server::timer]", "value", "dfc-generated"] + - ["::timer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::server::conn::http2::Connection::conn]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::server::conn::http2::Connection::conn]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[hyper::service::util::ServiceFn::f].Reference", "ReturnValue.Field[hyper::service::util::ServiceFn::f]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[hyper::service::util::ServiceFn::f]", "ReturnValue.Field[hyper::service::util::ServiceFn::f]", "value", "dfc-generated"] + - ["::call", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::call", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers]", "ReturnValue", "value", "dfc-generated"] + - ["::set_trailers", "Argument[0]", "Argument[self].Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::with_trailers", "Argument[0]", "ReturnValue.Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "value", "dfc-generated"] + - ["::with_trailers", "Argument[1]", "ReturnValue.Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::call", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers]", "ReturnValue", "value", "dfc-generated"] + - ["::set_trailers", "Argument[0]", "Argument[self].Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::with_trailers", "Argument[0]", "ReturnValue.Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "value", "dfc-generated"] + - ["::with_trailers", "Argument[1]", "ReturnValue.Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["hyper::proto::h2::client::handshake", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[hyper::proto::h2::client::ClientTask::req_rx]", "value", "dfc-generated"] + - ["hyper::proto::h2::client::handshake", "Argument[3]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[hyper::proto::h2::client::ClientTask::executor]", "value", "dfc-generated"] + - ["hyper::proto::h2::ping::channel", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hyper::service::util::service_fn", "Argument[0]", "ReturnValue.Field[hyper::service::util::ServiceFn::f]", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::push", "Argument[self]", "log-injection", "df-generated"] + - ["::check", "Argument[1]", "log-injection", "df-generated"] + - ["::end_body", "Argument[self]", "log-injection", "df-generated"] + - ["::poll_drain_or_close_read", "Argument[self]", "log-injection", "df-generated"] + - ["::poll_read_body", "Argument[self]", "log-injection", "df-generated"] + - ["::write_body", "Argument[self]", "log-injection", "df-generated"] + - ["::write_body_and_end", "Argument[self]", "log-injection", "df-generated"] + - ["::write_trailers", "Argument[self]", "log-injection", "df-generated"] + - ["::encode_and_end", "Argument[1]", "log-injection", "df-generated"] + - ["::buffer", "Argument[self]", "log-injection", "df-generated"] + - ["::buffer", "Argument[self]", "log-injection", "df-generated"] + - ["::encode", "Argument[0]", "log-injection", "df-generated"] + - ["::encode", "Argument[0]", "log-injection", "df-generated"] + - ["hyper::proto::h2::client::handshake", "Argument[2]", "pointer-access", "df-generated"] + - ["hyper::proto::h2::ping::channel", "Argument[1]", "pointer-access", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["hyper::ffi::body::hyper_buf_bytes", "ReturnValue", "pointer-invalidate", "df-generated"] + - ["hyper::ffi::http_types::hyper_response_reason_phrase", "ReturnValue", "pointer-invalidate", "df-generated"] + - ["hyper::ffi::hyper_version", "ReturnValue", "pointer-invalidate", "df-generated"] + - ["hyper::ffi::task::hyper_executor_new", "ReturnValue", "pointer-invalidate", "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 deleted file mode 100644 index 3e30d66ced41..000000000000 --- a/rust/ql/lib/ext/generated/hyper/repo-https-github.com-hyperium-hyper-hyper.model.yml +++ /dev/null @@ -1,254 +0,0 @@ -# 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/hyperium/hyper:hyper", "::read", "Argument[self]", "Argument[0]", "taint", "df-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"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::into_opt", "Argument[self].Field[crate::body::length::DecodedLength(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[crate::body::length::DecodedLength(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::from", "Argument[0].Field[crate::ext::h1_reason_phrase::ReasonPhrase(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::allow_obsolete_multiline_headers_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::allow_spaces_after_header_name_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::handshake", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::handshake", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::http09_responses", "Argument[0]", "Argument[self].Field[crate::client::conn::http1::Builder::h09_responses]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::http09_responses", "Argument[0]", "ReturnValue.Field[crate::client::conn::http1::Builder::h09_responses]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::http09_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::ignore_invalid_headers_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_buf_size", "Argument[0]", "Argument[self].Field[crate::client::conn::http1::Builder::h1_max_buf_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_buf_size", "Argument[0]", "ReturnValue.Field[crate::client::conn::http1::Builder::h1_max_buf_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_buf_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_headers", "Argument[0]", "Argument[self].Field[crate::client::conn::http1::Builder::h1_max_headers].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_headers", "Argument[0]", "ReturnValue.Field[crate::client::conn::http1::Builder::h1_max_headers].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::preserve_header_case", "Argument[0]", "Argument[self].Field[crate::client::conn::http1::Builder::h1_preserve_header_case]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::preserve_header_case", "Argument[0]", "ReturnValue.Field[crate::client::conn::http1::Builder::h1_preserve_header_case]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::preserve_header_case", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::preserve_header_order", "Argument[0]", "Argument[self].Field[crate::client::conn::http1::Builder::h1_preserve_header_order]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::preserve_header_order", "Argument[0]", "ReturnValue.Field[crate::client::conn::http1::Builder::h1_preserve_header_order]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::preserve_header_order", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::read_buf_exact_size", "Argument[0]", "Argument[self].Field[crate::client::conn::http1::Builder::h1_read_buf_exact_size]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::read_buf_exact_size", "Argument[0]", "ReturnValue.Field[crate::client::conn::http1::Builder::h1_read_buf_exact_size]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::read_buf_exact_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::title_case_headers", "Argument[0]", "Argument[self].Field[crate::client::conn::http1::Builder::h1_title_case_headers]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::title_case_headers", "Argument[0]", "ReturnValue.Field[crate::client::conn::http1::Builder::h1_title_case_headers]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::title_case_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::writev", "Argument[0]", "Argument[self].Field[crate::client::conn::http1::Builder::h1_writev].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::writev", "Argument[0]", "ReturnValue.Field[crate::client::conn::http1::Builder::h1_writev].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::writev", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::with_upgrades", "Argument[self]", "ReturnValue.Field[crate::client::conn::http1::upgrades::UpgradeableConnection::inner].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::send_request", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::try_send_request", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::adaptive_window", "Argument[0]", "Argument[self].Field[crate::client::conn::http2::Builder::h2_builder].Field[crate::proto::h2::client::Config::adaptive_window]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::adaptive_window", "Argument[0]", "ReturnValue.Field[crate::client::conn::http2::Builder::h2_builder].Field[crate::proto::h2::client::Config::adaptive_window]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::adaptive_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::handshake", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::handshake", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::header_table_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::initial_connection_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::initial_max_send_streams", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::initial_stream_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive_timeout", "Argument[0]", "Argument[self].Field[crate::client::conn::http2::Builder::h2_builder].Field[crate::proto::h2::client::Config::keep_alive_timeout]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive_timeout", "Argument[0]", "ReturnValue.Field[crate::client::conn::http2::Builder::h2_builder].Field[crate::proto::h2::client::Config::keep_alive_timeout]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive_while_idle", "Argument[0]", "Argument[self].Field[crate::client::conn::http2::Builder::h2_builder].Field[crate::proto::h2::client::Config::keep_alive_while_idle]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive_while_idle", "Argument[0]", "ReturnValue.Field[crate::client::conn::http2::Builder::h2_builder].Field[crate::proto::h2::client::Config::keep_alive_while_idle]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive_while_idle", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_concurrent_reset_streams", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_concurrent_streams", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_frame_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_header_list_size", "Argument[0]", "Argument[self].Field[crate::client::conn::http2::Builder::h2_builder].Field[crate::proto::h2::client::Config::max_header_list_size]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_header_list_size", "Argument[0]", "ReturnValue.Field[crate::client::conn::http2::Builder::h2_builder].Field[crate::proto::h2::client::Config::max_header_list_size]", "value", "dfc-generated"] - - ["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_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::client::conn::http2::Builder::h2_builder].Field[crate::proto::h2::client::Config::max_send_buffer_size]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_send_buf_size", "Argument[0]", "ReturnValue.Field[crate::client::conn::http2::Builder::h2_builder].Field[crate::proto::h2::client::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::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", "::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", "::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", "::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"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::as_ref", "Argument[self].Field[crate::ext::h1_reason_phrase::ReasonPhrase(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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", "::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_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"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::chunked", "Argument[0]", "ReturnValue.Field[crate::proto::h1::decode::Decoder::kind].Field[crate::proto::h1::decode::Kind::Chunked::h1_max_headers]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::chunked", "Argument[1]", "ReturnValue.Field[crate::proto::h1::decode::Decoder::kind].Field[crate::proto::h1::decode::Kind::Chunked::h1_max_header_size]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::length", "Argument[0]", "ReturnValue.Field[crate::proto::h1::decode::Decoder::kind].Field[crate::proto::h1::decode::Kind::Length(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[1]", "ReturnValue.Field[crate::proto::h1::decode::Decoder::kind].Field[crate::proto::h1::decode::Kind::Chunked::h1_max_headers]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[2]", "ReturnValue.Field[crate::proto::h1::decode::Decoder::kind].Field[crate::proto::h1::decode::Kind::Chunked::h1_max_header_size]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::recv_msg", "Argument[0].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[crate::proto::h1::dispatch::Client::rx]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::into_inner", "Argument[self].Field[crate::proto::h1::dispatch::Dispatcher::dispatch]", "ReturnValue.Field[2]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[crate::proto::h1::dispatch::Dispatcher::dispatch]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[1]", "ReturnValue.Field[crate::proto::h1::dispatch::Dispatcher::conn]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::recv_msg", "Argument[0].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::recv_msg", "Argument[0].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::into_service", "Argument[self].Field[crate::proto::h1::dispatch::Server::service]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[crate::proto::h1::dispatch::Server::service]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::chunk", "Argument[self].Field[crate::proto::h1::encode::ChunkSize::bytes].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::from", "Argument[0]", "ReturnValue.Field[crate::proto::h1::encode::EncodedBuf::kind].Field[crate::proto::h1::encode::BufKind::Chunked(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::from", "Argument[0]", "ReturnValue.Field[crate::proto::h1::encode::EncodedBuf::kind].Field[crate::proto::h1::encode::BufKind::Exact(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::from", "Argument[0]", "ReturnValue.Field[crate::proto::h1::encode::EncodedBuf::kind].Field[crate::proto::h1::encode::BufKind::Limited(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::encode", "Argument[0]", "ReturnValue.Field[crate::proto::h1::encode::EncodedBuf::kind].Field[crate::proto::h1::encode::BufKind::Exact(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::encode_and_end", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::end", "Argument[self].Field[crate::proto::h1::encode::Encoder::kind].Field[crate::proto::h1::encode::Kind::Length(0)]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::proto::h1::encode::NotEof(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::into_chunked_with_trailing_fields", "Argument[self].Field[crate::proto::h1::encode::Encoder::is_last]", "ReturnValue.Field[crate::proto::h1::encode::Encoder::is_last]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::into_chunked_with_trailing_fields", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::is_last", "Argument[self].Field[crate::proto::h1::encode::Encoder::is_last]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::length", "Argument[0]", "ReturnValue.Field[crate::proto::h1::encode::Encoder::kind].Field[crate::proto::h1::encode::Kind::Length(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::set_last", "Argument[0]", "Argument[self].Field[crate::proto::h1::encode::Encoder::is_last]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::set_last", "Argument[0]", "ReturnValue.Field[crate::proto::h1::encode::Encoder::is_last]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::set_last", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::into_inner", "Argument[self].Field[crate::proto::h1::io::Buffered::io]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::io_mut", "Argument[self].Field[crate::proto::h1::io::Buffered::io]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::is_read_blocked", "Argument[self].Field[crate::proto::h1::io::Buffered::read_blocked]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[crate::proto::h1::io::Buffered::io]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::read_buf_mut", "Argument[self].Field[crate::proto::h1::io::Buffered::read_buf]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::set_flush_pipeline", "Argument[0]", "Argument[self].Field[crate::proto::h1::io::Buffered::flush_pipeline]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::set_max_buf_size", "Argument[0]", "Argument[self].Field[crate::proto::h1::io::Buffered::read_buf_strategy].Field[crate::proto::h1::io::ReadStrategy::Adaptive::max]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::set_max_buf_size", "Argument[0]", "Argument[self].Field[crate::proto::h1::io::Buffered::write_buf].Field[crate::proto::h1::io::WriteBuf::max_buf_size]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::set_read_buf_exact_size", "Argument[0]", "Argument[self].Field[crate::proto::h1::io::Buffered::read_buf_strategy].Field[crate::proto::h1::io::ReadStrategy::Exact(0)]", "value", "dfc-generated"] - - ["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", "::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", "::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"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::uninit", "Argument[0]", "ReturnValue.Field[crate::rt::io::ReadBuf::raw]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::as_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::remaining", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::auto_date_header", "Argument[0]", "Argument[self].Field[crate::server::conn::http1::Builder::date_header]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::auto_date_header", "Argument[0]", "ReturnValue.Field[crate::server::conn::http1::Builder::date_header]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::auto_date_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::half_close", "Argument[0]", "Argument[self].Field[crate::server::conn::http1::Builder::h1_half_close]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::half_close", "Argument[0]", "ReturnValue.Field[crate::server::conn::http1::Builder::h1_half_close]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::half_close", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::header_read_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::ignore_invalid_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive", "Argument[0]", "Argument[self].Field[crate::server::conn::http1::Builder::h1_keep_alive]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive", "Argument[0]", "ReturnValue.Field[crate::server::conn::http1::Builder::h1_keep_alive]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_buf_size", "Argument[0]", "Argument[self].Field[crate::server::conn::http1::Builder::max_buf_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_buf_size", "Argument[0]", "ReturnValue.Field[crate::server::conn::http1::Builder::max_buf_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_buf_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_headers", "Argument[0]", "Argument[self].Field[crate::server::conn::http1::Builder::h1_max_headers].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_headers", "Argument[0]", "ReturnValue.Field[crate::server::conn::http1::Builder::h1_max_headers].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::pipeline_flush", "Argument[0]", "Argument[self].Field[crate::server::conn::http1::Builder::pipeline_flush]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::pipeline_flush", "Argument[0]", "ReturnValue.Field[crate::server::conn::http1::Builder::pipeline_flush]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::pipeline_flush", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::preserve_header_case", "Argument[0]", "Argument[self].Field[crate::server::conn::http1::Builder::h1_preserve_header_case]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::preserve_header_case", "Argument[0]", "ReturnValue.Field[crate::server::conn::http1::Builder::h1_preserve_header_case]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::preserve_header_case", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::timer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::title_case_headers", "Argument[0]", "Argument[self].Field[crate::server::conn::http1::Builder::h1_title_case_headers]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::title_case_headers", "Argument[0]", "ReturnValue.Field[crate::server::conn::http1::Builder::h1_title_case_headers]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::title_case_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::writev", "Argument[0]", "Argument[self].Field[crate::server::conn::http1::Builder::h1_writev].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::writev", "Argument[0]", "ReturnValue.Field[crate::server::conn::http1::Builder::h1_writev].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::writev", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::with_upgrades", "Argument[self]", "ReturnValue.Field[crate::server::conn::http1::UpgradeableConnection::inner].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::adaptive_window", "Argument[0]", "Argument[self].Field[crate::server::conn::http2::Builder::h2_builder].Field[crate::proto::h2::server::Config::adaptive_window]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::adaptive_window", "Argument[0]", "ReturnValue.Field[crate::server::conn::http2::Builder::h2_builder].Field[crate::proto::h2::server::Config::adaptive_window]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::adaptive_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::auto_date_header", "Argument[0]", "Argument[self].Field[crate::server::conn::http2::Builder::h2_builder].Field[crate::proto::h2::server::Config::date_header]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::auto_date_header", "Argument[0]", "ReturnValue.Field[crate::server::conn::http2::Builder::h2_builder].Field[crate::proto::h2::server::Config::date_header]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::auto_date_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::enable_connect_protocol", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::initial_connection_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::initial_stream_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive_timeout", "Argument[0]", "Argument[self].Field[crate::server::conn::http2::Builder::h2_builder].Field[crate::proto::h2::server::Config::keep_alive_timeout]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive_timeout", "Argument[0]", "ReturnValue.Field[crate::server::conn::http2::Builder::h2_builder].Field[crate::proto::h2::server::Config::keep_alive_timeout]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::keep_alive_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_concurrent_streams", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_frame_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_header_list_size", "Argument[0]", "Argument[self].Field[crate::server::conn::http2::Builder::h2_builder].Field[crate::proto::h2::server::Config::max_header_list_size]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_header_list_size", "Argument[0]", "ReturnValue.Field[crate::server::conn::http2::Builder::h2_builder].Field[crate::proto::h2::server::Config::max_header_list_size]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::call", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::call", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::inner", "Argument[self].Field[crate::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[crate::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[crate::support::trailers::StreamBodyWithTrailers::stream]", "value", "dfc-generated"] - - ["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", "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_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"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::write_trailers", "Argument[self]", "log-injection", "df-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::encode", "Argument[0]", "log-injection", "df-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::encode", "Argument[0]", "log-injection", "df-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sourceModel - data: - - ["repo:https://github.com/hyperium/hyper:hyper", "crate::ffi::body::hyper_buf_bytes", "ReturnValue", "pointer-invalidate", "df-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "crate::ffi::http_types::hyper_response_reason_phrase", "ReturnValue", "pointer-invalidate", "df-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "crate::ffi::hyper_version", "ReturnValue", "pointer-invalidate", "df-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "crate::ffi::task::hyper_executor_new", "ReturnValue", "pointer-invalidate", "df-generated"] diff --git a/rust/ql/lib/ext/generated/libc.model.yml b/rust/ql/lib/ext/generated/libc.model.yml new file mode 100644 index 000000000000..352eb1338a8b --- /dev/null +++ b/rust/ql/lib/ext/generated/libc.model.yml @@ -0,0 +1,96 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::check_file", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "Argument[self].Field[style::style::StyleChecker::path].Field[style_tests::style::StyleChecker::path]", "value", "dfc-generated"] + - ["::check_file", "Argument[0]", "Argument[self].Field[style::style::StyleChecker::path].Field[style_tests::style::StyleChecker::path].Field[std::path::PathBuf::inner]", "value", "dfc-generated"] + - ["::check_file", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "Argument[self].Field[style::style::StyleChecker::path].Field[style_tests::style::StyleChecker::path]", "value", "dfc-generated"] + - ["::check_file", "Argument[0]", "Argument[self].Field[style::style::StyleChecker::path].Field[style_tests::style::StyleChecker::path].Field[std::path::PathBuf::inner]", "value", "dfc-generated"] + - ["libc::unix::linux_like::CMSG_LEN", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::CMSG_SPACE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::IPOPT_CLASS", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::IPOPT_COPIED", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::IPOPT_NUMBER", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::IPTOS_ECN", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::KERNEL_VERSION", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::KERNEL_VERSION", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::KERNEL_VERSION", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::QCMD", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::QCMD", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::WEXITSTATUS", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::WSTOPSIG", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::WTERMSIG", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::W_EXITCODE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::W_EXITCODE", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::W_STOPCODE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::BPF_CLASS", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::BPF_JUMP", "Argument[0]", "ReturnValue.Field[libc::unix::linux_like::linux::sock_filter::code]", "value", "dfc-generated"] + - ["libc::unix::linux_like::linux::BPF_JUMP", "Argument[1]", "ReturnValue.Field[libc::unix::linux_like::linux::sock_filter::k]", "value", "dfc-generated"] + - ["libc::unix::linux_like::linux::BPF_JUMP", "Argument[2]", "ReturnValue.Field[libc::unix::linux_like::linux::sock_filter::jt]", "value", "dfc-generated"] + - ["libc::unix::linux_like::linux::BPF_JUMP", "Argument[3]", "ReturnValue.Field[libc::unix::linux_like::linux::sock_filter::jf]", "value", "dfc-generated"] + - ["libc::unix::linux_like::linux::BPF_MISCOP", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::BPF_MODE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::BPF_OP", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::BPF_RVAL", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::BPF_SIZE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::BPF_SRC", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::BPF_STMT", "Argument[0]", "ReturnValue.Field[libc::unix::linux_like::linux::sock_filter::code]", "value", "dfc-generated"] + - ["libc::unix::linux_like::linux::BPF_STMT", "Argument[1]", "ReturnValue.Field[libc::unix::linux_like::linux::sock_filter::k]", "value", "dfc-generated"] + - ["libc::unix::linux_like::linux::CMSG_NXTHDR", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::CPU_ALLOC_SIZE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::ELF32_R_INFO", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::ELF32_R_INFO", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::ELF32_R_SYM", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::ELF32_R_TYPE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::ELF64_R_INFO", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::ELF64_R_INFO", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::ELF64_R_SYM", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::ELF64_R_TYPE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::FUTEX_OP", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::FUTEX_OP", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::FUTEX_OP", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::FUTEX_OP", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::IPTOS_PREC", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::IPTOS_TOS", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::NLA_ALIGN", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::RT_ADDRCLASS", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::RT_TOS", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::SCTP_PR_INDEX", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::SCTP_PR_POLICY", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::TPACKET_ALIGN", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::_IO", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::_IO", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::_IOR", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::_IOR", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::_IOW", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::_IOW", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::_IOWR", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["libc::unix::linux_like::linux::_IOWR", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::check_file", "Argument[0]", "path-injection", "df-generated"] + - ["::check_file", "Argument[0]", "path-injection", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["::check_file", "ReturnValue", "file", "df-generated"] + - ["::finalize", "ReturnValue", "file", "df-generated"] + - ["::check_file", "ReturnValue", "file", "df-generated"] + - ["::finalize", "ReturnValue", "file", "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 deleted file mode 100644 index 09c7a61c4f71..000000000000 --- a/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc-test.model.yml +++ /dev/null @@ -1,19 +0,0 @@ -# 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/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 - data: - - ["repo:https://github.com/rust-lang/libc:libc-test", "::check_file", "Argument[0]", "path-injection", "df-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sourceModel - data: - - ["repo:https://github.com/rust-lang/libc:libc-test", "::check_file", "ReturnValue", "file", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc-test", "::finalize", "ReturnValue", "file", "df-generated"] 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 deleted file mode 100644 index e8dc059dd9d7..000000000000 --- a/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc.model.yml +++ /dev/null @@ -1,28 +0,0 @@ -# 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/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"] diff --git a/rust/ql/lib/ext/generated/log.model.yml b/rust/ql/lib/ext/generated/log.model.yml new file mode 100644 index 000000000000..4b8a9ebfc1a6 --- /dev/null +++ b/rust/ql/lib/ext/generated/log.model.yml @@ -0,0 +1,73 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::to_key", "Argument[self]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"] + - ["::count", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue", "value", "dfc-generated"] + - ["::to_key", "Argument[self]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::level", "Argument[self].Field[log::Metadata::level]", "ReturnValue", "value", "dfc-generated"] + - ["::target", "Argument[self].Field[log::Metadata::target]", "ReturnValue", "value", "dfc-generated"] + - ["::build", "Argument[self].Field[log::MetadataBuilder::metadata].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::build", "Argument[self].Field[log::MetadataBuilder::metadata]", "ReturnValue", "value", "dfc-generated"] + - ["::level", "Argument[0]", "Argument[self].Field[log::MetadataBuilder::metadata].Field[log::Metadata::level]", "value", "dfc-generated"] + - ["::level", "Argument[0]", "ReturnValue.Field[log::MetadataBuilder::metadata].Field[log::Metadata::level]", "value", "dfc-generated"] + - ["::level", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::target", "Argument[0]", "Argument[self].Field[log::MetadataBuilder::metadata].Field[log::Metadata::target]", "value", "dfc-generated"] + - ["::target", "Argument[0]", "ReturnValue.Field[log::MetadataBuilder::metadata].Field[log::Metadata::target]", "value", "dfc-generated"] + - ["::target", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::args", "Argument[self].Field[log::Record::args]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::file", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::key_values", "Argument[self].Field[log::Record::key_values].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::key_values", "Argument[self].Field[log::Record::key_values].Field[log::KeyValues(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::level", "Argument[self].Field[log::Record::metadata].Field[log::Metadata::level]", "ReturnValue", "value", "dfc-generated"] + - ["::line", "Argument[self].Field[log::Record::line]", "ReturnValue", "value", "dfc-generated"] + - ["::metadata", "Argument[self].Field[log::Record::metadata]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::module_path", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::target", "Argument[self].Field[log::Record::metadata].Field[log::Metadata::target]", "ReturnValue", "value", "dfc-generated"] + - ["::to_builder", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::args", "Argument[0]", "Argument[self].Field[log::RecordBuilder::record].Field[log::Record::args]", "value", "dfc-generated"] + - ["::args", "Argument[0]", "ReturnValue.Field[log::RecordBuilder::record].Field[log::Record::args]", "value", "dfc-generated"] + - ["::args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::build", "Argument[self].Field[log::RecordBuilder::record].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::build", "Argument[self].Field[log::RecordBuilder::record]", "ReturnValue", "value", "dfc-generated"] + - ["::file", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::file_static", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::key_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::level", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::line", "Argument[0]", "Argument[self].Field[log::RecordBuilder::record].Field[log::Record::line]", "value", "dfc-generated"] + - ["::line", "Argument[0]", "ReturnValue.Field[log::RecordBuilder::record].Field[log::Record::line]", "value", "dfc-generated"] + - ["::line", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::metadata", "Argument[0]", "Argument[self].Field[log::RecordBuilder::record].Field[log::Record::metadata]", "value", "dfc-generated"] + - ["::metadata", "Argument[0]", "ReturnValue.Field[log::RecordBuilder::record].Field[log::Record::metadata]", "value", "dfc-generated"] + - ["::metadata", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::module_path", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::module_path_static", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::target", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_value", "Argument[0]", "ReturnValue.Field[log::kv::error::Error::inner].Field[log::kv::error::Inner::Value(0)]", "value", "dfc-generated"] + - ["::into_value", "Argument[self].Field[log::kv::error::Error::inner].Field[log::kv::error::Inner::Value(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::msg", "Argument[0]", "ReturnValue.Field[log::kv::error::Error::inner].Field[log::kv::error::Inner::Msg(0)]", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Field[log::kv::key::Key::key]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[log::kv::key::Key::key]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_key", "Argument[self].Field[log::kv::key::Key::key]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Field[log::kv::key::Key::key]", "ReturnValue", "value", "dfc-generated"] + - ["::from_str", "Argument[0]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"] + - ["::to_borrowed_str", "Argument[self].Field[log::kv::key::Key::key]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::to_value", "Argument[self].Field[log::kv::value::Value::inner].Reference", "ReturnValue.Field[log::kv::value::Value::inner]", "value", "dfc-generated"] + - ["::to_value", "Argument[self].Field[log::kv::value::Value::inner]", "ReturnValue.Field[log::kv::value::Value::inner]", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::file", "Argument[self]", "pointer-access", "df-generated"] + - ["::module_path", "Argument[self]", "pointer-access", "df-generated"] + - ["::file", "Argument[0]", "pointer-access", "df-generated"] + - ["::file_static", "Argument[0]", "pointer-access", "df-generated"] + - ["::module_path", "Argument[0]", "pointer-access", "df-generated"] + - ["::module_path_static", "Argument[0]", "pointer-access", "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 deleted file mode 100644 index a894c71018fc..000000000000 --- a/rust/ql/lib/ext/generated/log/repo-https-github.com-rust-lang-log-log.model.yml +++ /dev/null @@ -1,59 +0,0 @@ -# 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/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"] - - ["repo:https://github.com/rust-lang/log:log", "::target", "Argument[0]", "Argument[self].Field[crate::MetadataBuilder::metadata].Field[crate::Metadata::target]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/rust-lang/log:log", "::level", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::line", "Argument[0]", "Argument[self].Field[crate::RecordBuilder::record].Field[crate::Record::line]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::line", "Argument[0]", "ReturnValue.Field[crate::RecordBuilder::record].Field[crate::Record::line]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::line", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::metadata", "Argument[0]", "Argument[self].Field[crate::RecordBuilder::record].Field[crate::Record::metadata]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::metadata", "Argument[0]", "ReturnValue.Field[crate::RecordBuilder::record].Field[crate::Record::metadata]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::metadata", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::module_path", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::module_path_static", "Argument[self]", "ReturnValue", "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", "::to_key", "Argument[self]", "ReturnValue.Field[crate::kv::key::Key::key]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::from_value", "Argument[0]", "ReturnValue.Field[crate::kv::error::Error::inner].Field[crate::kv::error::Inner::Value(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::into_value", "Argument[self].Field[crate::kv::error::Error::inner].Field[crate::kv::error::Inner::Value(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::msg", "Argument[0]", "ReturnValue.Field[crate::kv::error::Error::inner].Field[crate::kv::error::Inner::Msg(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::borrow", "Argument[self].Field[crate::kv::key::Key::key]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::as_ref", "Argument[self].Field[crate::kv::key::Key::key]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::from", "Argument[0]", "ReturnValue.Field[crate::kv::key::Key::key]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::to_key", "Argument[self].Field[crate::kv::key::Key::key]", "ReturnValue.Field[crate::kv::key::Key::key]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::as_str", "Argument[self].Field[crate::kv::key::Key::key]", "ReturnValue", "value", "dfc-generated"] - - ["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.model.yml b/rust/ql/lib/ext/generated/memchr.model.yml new file mode 100644 index 000000000000..4555f3ffe484 --- /dev/null +++ b/rust/ql/lib/ext/generated/memchr.model.yml @@ -0,0 +1,175 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::load_aligned", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::load_aligned", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::find_raw", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::iter", "Argument[self]", "ReturnValue.Field[memchr::arch::all::memchr::OneIter::searcher]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[memchr::arch::all::memchr::One::s1]", "value", "dfc-generated"] + - ["::try_new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[memchr::arch::all::memchr::One::s1]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[memchr::arch::all::memchr::OneIter::it].Field[memchr::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["::find_raw", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::iter", "Argument[self]", "ReturnValue.Field[memchr::arch::all::memchr::ThreeIter::searcher]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[memchr::arch::all::memchr::Three::s1]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[memchr::arch::all::memchr::Three::s2]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[memchr::arch::all::memchr::Three::s3]", "value", "dfc-generated"] + - ["::try_new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[memchr::arch::all::memchr::Three::s1]", "value", "dfc-generated"] + - ["::try_new", "Argument[1]", "ReturnValue.Field[core::option::Option::Some(0)].Field[memchr::arch::all::memchr::Three::s2]", "value", "dfc-generated"] + - ["::try_new", "Argument[2]", "ReturnValue.Field[core::option::Option::Some(0)].Field[memchr::arch::all::memchr::Three::s3]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[memchr::arch::all::memchr::ThreeIter::it].Field[memchr::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["::find_raw", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::iter", "Argument[self]", "ReturnValue.Field[memchr::arch::all::memchr::TwoIter::searcher]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[memchr::arch::all::memchr::Two::s1]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[memchr::arch::all::memchr::Two::s2]", "value", "dfc-generated"] + - ["::try_new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[memchr::arch::all::memchr::Two::s1]", "value", "dfc-generated"] + - ["::try_new", "Argument[1]", "ReturnValue.Field[core::option::Option::Some(0)].Field[memchr::arch::all::memchr::Two::s2]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[memchr::arch::all::memchr::TwoIter::it].Field[memchr::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[memchr::arch::all::packedpair::Finder::byte1]", "value", "dfc-generated"] + - ["::new", "Argument[0].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[memchr::arch::all::packedpair::Finder::byte2]", "value", "dfc-generated"] + - ["::pair", "Argument[self].Field[memchr::arch::all::packedpair::Finder::pair]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::with_pair", "Argument[0].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[memchr::arch::all::packedpair::Finder::byte1]", "value", "dfc-generated"] + - ["::with_pair", "Argument[0].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[memchr::arch::all::packedpair::Finder::byte2]", "value", "dfc-generated"] + - ["::with_pair", "Argument[1]", "ReturnValue.Field[core::option::Option::Some(0)].Field[memchr::arch::all::packedpair::Finder::pair]", "value", "dfc-generated"] + - ["::index1", "Argument[self].Field[memchr::arch::all::packedpair::Pair::index1]", "ReturnValue", "value", "dfc-generated"] + - ["::index2", "Argument[self].Field[memchr::arch::all::packedpair::Pair::index2]", "ReturnValue", "value", "dfc-generated"] + - ["::with_indices", "Argument[1]", "ReturnValue.Field[core::option::Option::Some(0)].Field[memchr::arch::all::packedpair::Pair::index1]", "value", "dfc-generated"] + - ["::with_indices", "Argument[2]", "ReturnValue.Field[core::option::Option::Some(0)].Field[memchr::arch::all::packedpair::Pair::index2]", "value", "dfc-generated"] + - ["::find_raw", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::find", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::count", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::count", "Argument[self].Field[memchr::arch::generic::memchr::Iter::end]", "Argument[0].Parameter[1]", "value", "dfc-generated"] + - ["::count", "Argument[self].Field[memchr::arch::generic::memchr::Iter::start]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[memchr::arch::generic::memchr::Iter::end]", "Argument[0].Parameter[1]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[memchr::arch::generic::memchr::Iter::start]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[memchr::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[memchr::arch::generic::memchr::Iter::end]", "Argument[0].Parameter[1]", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[memchr::arch::generic::memchr::Iter::start]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::needle1", "Argument[self].Field[memchr::arch::generic::memchr::One::s1]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[memchr::arch::generic::memchr::One::s1]", "value", "dfc-generated"] + - ["::needle1", "Argument[self].Field[memchr::arch::generic::memchr::Three::s1]", "ReturnValue", "value", "dfc-generated"] + - ["::needle2", "Argument[self].Field[memchr::arch::generic::memchr::Three::s2]", "ReturnValue", "value", "dfc-generated"] + - ["::needle3", "Argument[self].Field[memchr::arch::generic::memchr::Three::s3]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[memchr::arch::generic::memchr::Three::s1]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[memchr::arch::generic::memchr::Three::s2]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[memchr::arch::generic::memchr::Three::s3]", "value", "dfc-generated"] + - ["::needle1", "Argument[self].Field[memchr::arch::generic::memchr::Two::s1]", "ReturnValue", "value", "dfc-generated"] + - ["::needle2", "Argument[self].Field[memchr::arch::generic::memchr::Two::s2]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[memchr::arch::generic::memchr::Two::s1]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[memchr::arch::generic::memchr::Two::s2]", "value", "dfc-generated"] + - ["::min_haystack_len", "Argument[self].Field[memchr::arch::generic::packedpair::Finder::min_haystack_len]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[memchr::arch::generic::packedpair::Finder::pair]", "value", "dfc-generated"] + - ["::pair", "Argument[self].Field[memchr::arch::generic::packedpair::Finder::pair]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::find_raw", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::iter", "Argument[self]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::OneIter::searcher]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::One::avx2].Field[memchr::arch::generic::memchr::One::s1]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::One::sse2].Field[memchr::arch::generic::memchr::One::s1]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[memchr::arch::x86_64::avx2::memchr::OneIter::it].Field[memchr::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["::find_raw", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::iter", "Argument[self]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::ThreeIter::searcher]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::Three::avx2].Field[memchr::arch::generic::memchr::Three::s1]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::Three::sse2].Field[memchr::arch::generic::memchr::Three::s1]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[1]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::Three::avx2].Field[memchr::arch::generic::memchr::Three::s2]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[1]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::Three::sse2].Field[memchr::arch::generic::memchr::Three::s2]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[2]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::Three::avx2].Field[memchr::arch::generic::memchr::Three::s3]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[2]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::Three::sse2].Field[memchr::arch::generic::memchr::Three::s3]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[memchr::arch::x86_64::avx2::memchr::ThreeIter::it].Field[memchr::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["::find_raw", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::iter", "Argument[self]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::TwoIter::searcher]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::Two::avx2].Field[memchr::arch::generic::memchr::Two::s1]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::Two::sse2].Field[memchr::arch::generic::memchr::Two::s1]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[1]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::Two::avx2].Field[memchr::arch::generic::memchr::Two::s2]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[1]", "ReturnValue.Field[memchr::arch::x86_64::avx2::memchr::Two::sse2].Field[memchr::arch::generic::memchr::Two::s2]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[memchr::arch::x86_64::avx2::memchr::TwoIter::it].Field[memchr::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["::min_haystack_len", "Argument[self].Field[memchr::arch::x86_64::avx2::packedpair::Finder::sse2].Field[memchr::arch::generic::packedpair::Finder::min_haystack_len]", "ReturnValue", "value", "dfc-generated"] + - ["::pair", "Argument[self].Field[memchr::arch::x86_64::avx2::packedpair::Finder::avx2].Field[memchr::arch::generic::packedpair::Finder::pair]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::find_raw", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::iter", "Argument[self]", "ReturnValue.Field[memchr::arch::x86_64::sse2::memchr::OneIter::searcher]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[memchr::arch::x86_64::sse2::memchr::One(0)].Field[memchr::arch::generic::memchr::One::s1]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[memchr::arch::x86_64::sse2::memchr::OneIter::it].Field[memchr::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["::find_raw", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::iter", "Argument[self]", "ReturnValue.Field[memchr::arch::x86_64::sse2::memchr::ThreeIter::searcher]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[memchr::arch::x86_64::sse2::memchr::Three(0)].Field[memchr::arch::generic::memchr::Three::s1]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[1]", "ReturnValue.Field[memchr::arch::x86_64::sse2::memchr::Three(0)].Field[memchr::arch::generic::memchr::Three::s2]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[2]", "ReturnValue.Field[memchr::arch::x86_64::sse2::memchr::Three(0)].Field[memchr::arch::generic::memchr::Three::s3]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[memchr::arch::x86_64::sse2::memchr::ThreeIter::it].Field[memchr::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["::find_raw", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::iter", "Argument[self]", "ReturnValue.Field[memchr::arch::x86_64::sse2::memchr::TwoIter::searcher]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[memchr::arch::x86_64::sse2::memchr::Two(0)].Field[memchr::arch::generic::memchr::Two::s1]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[1]", "ReturnValue.Field[memchr::arch::x86_64::sse2::memchr::Two(0)].Field[memchr::arch::generic::memchr::Two::s2]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[memchr::arch::x86_64::sse2::memchr::TwoIter::it].Field[memchr::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["::min_haystack_len", "Argument[self].Field[0].Field[memchr::arch::generic::packedpair::Finder::min_haystack_len]", "ReturnValue", "value", "dfc-generated"] + - ["::min_haystack_len", "Argument[self].Field[memchr::arch::x86_64::sse2::packedpair::Finder(0)].Field[memchr::arch::generic::packedpair::Finder::min_haystack_len]", "ReturnValue", "value", "dfc-generated"] + - ["::pair", "Argument[self].Field[0].Field[memchr::arch::generic::packedpair::Finder::pair]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::pair", "Argument[self].Field[memchr::arch::x86_64::sse2::packedpair::Finder(0)].Field[memchr::arch::generic::packedpair::Finder::pair]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[0].Field[memchr::cow::Imp::Owned(0)]", "ReturnValue.Field[memchr::cow::CowBytes(0)].Field[memchr::cow::Imp::Owned(0)]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[memchr::cow::CowBytes(0)].Field[memchr::cow::Imp::Owned(0)]", "ReturnValue.Field[memchr::cow::CowBytes(0)].Field[memchr::cow::Imp::Owned(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[memchr::memchr::Memchr2::needle1]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[memchr::memchr::Memchr2::needle2]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[memchr::memchr::Memchr3::needle1]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[memchr::memchr::Memchr3::needle2]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[memchr::memchr::Memchr3::needle3]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[memchr::memchr::Memchr::needle1]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[memchr::memmem::FindIter::haystack]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[memchr::memmem::FindIter::finder]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[memchr::memmem::FindRevIter::finder].Field[memchr::memmem::FinderRev::searcher]", "ReturnValue.Field[memchr::memmem::FindRevIter::finder].Field[memchr::memmem::FinderRev::searcher]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[memchr::memmem::FindRevIter::haystack]", "ReturnValue.Field[memchr::memmem::FindRevIter::haystack]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[memchr::memmem::FindRevIter::pos]", "ReturnValue.Field[memchr::memmem::FindRevIter::pos]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[memchr::memmem::FindRevIter::haystack]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[memchr::memmem::FindRevIter::finder]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[memchr::memmem::Finder::searcher].Reference", "ReturnValue.Field[memchr::memmem::Finder::searcher]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[memchr::memmem::Finder::searcher]", "ReturnValue.Field[memchr::memmem::Finder::searcher]", "value", "dfc-generated"] + - ["::find_iter", "Argument[0]", "ReturnValue.Field[memchr::memmem::FindIter::haystack]", "value", "dfc-generated"] + - ["::find_iter", "Argument[self].Field[memchr::memmem::Finder::searcher].Reference", "ReturnValue.Field[memchr::memmem::FindIter::finder].Field[memchr::memmem::Finder::searcher]", "value", "dfc-generated"] + - ["::find_iter", "Argument[self].Field[memchr::memmem::Finder::searcher]", "ReturnValue.Field[memchr::memmem::FindIter::finder].Field[memchr::memmem::Finder::searcher]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[memchr::memmem::Finder::searcher].Reference", "ReturnValue.Field[memchr::memmem::Finder::searcher]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[memchr::memmem::Finder::searcher]", "ReturnValue.Field[memchr::memmem::Finder::searcher]", "value", "dfc-generated"] + - ["::prefilter", "Argument[0]", "Argument[self].Field[memchr::memmem::FinderBuilder::prefilter]", "value", "dfc-generated"] + - ["::prefilter", "Argument[0]", "ReturnValue.Field[memchr::memmem::FinderBuilder::prefilter]", "value", "dfc-generated"] + - ["::prefilter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[memchr::memmem::FinderRev::searcher].Reference", "ReturnValue.Field[memchr::memmem::FinderRev::searcher]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[memchr::memmem::FinderRev::searcher]", "ReturnValue.Field[memchr::memmem::FinderRev::searcher]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[memchr::memmem::FinderRev::searcher].Reference", "ReturnValue.Field[memchr::memmem::FinderRev::searcher]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[memchr::memmem::FinderRev::searcher]", "ReturnValue.Field[memchr::memmem::FinderRev::searcher]", "value", "dfc-generated"] + - ["::rfind_iter", "Argument[0]", "ReturnValue.Field[memchr::memmem::FindRevIter::haystack]", "value", "dfc-generated"] + - ["::rfind_iter", "Argument[self].Field[memchr::memmem::FinderRev::searcher].Reference", "ReturnValue.Field[memchr::memmem::FindRevIter::finder].Field[memchr::memmem::FinderRev::searcher]", "value", "dfc-generated"] + - ["::rfind_iter", "Argument[self].Field[memchr::memmem::FinderRev::searcher]", "ReturnValue.Field[memchr::memmem::FindRevIter::finder].Field[memchr::memmem::FinderRev::searcher]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::find", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::find", "Argument[1]", "Argument[self]", "taint", "df-generated"] + - ["::find", "Argument[2]", "Argument[self]", "taint", "df-generated"] + - ["::find", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0].Element", "ReturnValue.Field[memchr::memmem::searcher::SearcherRev::kind].Field[memchr::memmem::searcher::SearcherRevKind::OneByte::needle]", "value", "dfc-generated"] + - ["::all_zeros_except_least_significant", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::and", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::and", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clear_least_significant_bit", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::or", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::or", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["memchr::arch::generic::memchr::count_byte_by_byte", "Argument[0].Reference", "Argument[2].Parameter[0]", "value", "dfc-generated"] + - ["memchr::arch::generic::memchr::fwd_byte_by_byte", "Argument[0].Reference", "Argument[2].Parameter[0]", "value", "dfc-generated"] + - ["memchr::arch::generic::memchr::fwd_byte_by_byte", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["memchr::arch::generic::memchr::search_slice_with_raw", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["memchr::memchr::memchr2_iter", "Argument[0]", "ReturnValue.Field[memchr::memchr::Memchr2::needle1]", "value", "dfc-generated"] + - ["memchr::memchr::memchr2_iter", "Argument[1]", "ReturnValue.Field[memchr::memchr::Memchr2::needle2]", "value", "dfc-generated"] + - ["memchr::memchr::memchr3_iter", "Argument[0]", "ReturnValue.Field[memchr::memchr::Memchr3::needle1]", "value", "dfc-generated"] + - ["memchr::memchr::memchr3_iter", "Argument[1]", "ReturnValue.Field[memchr::memchr::Memchr3::needle2]", "value", "dfc-generated"] + - ["memchr::memchr::memchr3_iter", "Argument[2]", "ReturnValue.Field[memchr::memchr::Memchr3::needle3]", "value", "dfc-generated"] + - ["memchr::memchr::memchr_iter", "Argument[0]", "ReturnValue.Field[memchr::memchr::Memchr::needle1]", "value", "dfc-generated"] + - ["memchr::memmem::find_iter", "Argument[0]", "ReturnValue.Field[memchr::memmem::FindIter::haystack]", "value", "dfc-generated"] + - ["memchr::memmem::rfind_iter", "Argument[0]", "ReturnValue.Field[memchr::memmem::FindRevIter::haystack]", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::find", "Argument[self]", "log-injection", "df-generated"] + - ["::find_prefilter", "Argument[self]", "log-injection", "df-generated"] + - ["::find", "Argument[self]", "log-injection", "df-generated"] + - ["::find_prefilter", "Argument[self]", "log-injection", "df-generated"] + - ["::find", "Argument[self]", "log-injection", "df-generated"] + - ["::find_prefilter", "Argument[self]", "log-injection", "df-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 deleted file mode 100644 index 62617b2b0334..000000000000 --- a/rust/ql/lib/ext/generated/memchr/repo-https-github.com-BurntSushi-memchr-memchr.model.yml +++ /dev/null @@ -1,168 +0,0 @@ -# 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/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"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0]", "ReturnValue.Field[crate::arch::all::memchr::One::s1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::try_new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::arch::all::memchr::One::s1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::all::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::all::memchr::ThreeIter::searcher]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0]", "ReturnValue.Field[crate::arch::all::memchr::Three::s1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[1]", "ReturnValue.Field[crate::arch::all::memchr::Three::s2]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[2]", "ReturnValue.Field[crate::arch::all::memchr::Three::s3]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::try_new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::arch::all::memchr::Three::s1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::try_new", "Argument[1]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::arch::all::memchr::Three::s2]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::try_new", "Argument[2]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::arch::all::memchr::Three::s3]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::all::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::all::memchr::TwoIter::searcher]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0]", "ReturnValue.Field[crate::arch::all::memchr::Two::s1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[1]", "ReturnValue.Field[crate::arch::all::memchr::Two::s2]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::try_new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::arch::all::memchr::Two::s1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::try_new", "Argument[1]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::arch::all::memchr::Two::s2]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::all::memchr::TwoIter::it].Field[crate::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::arch::all::packedpair::Finder::byte1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::arch::all::packedpair::Finder::byte2]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::pair", "Argument[self].Field[crate::arch::all::packedpair::Finder::pair]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::with_pair", "Argument[0].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::arch::all::packedpair::Finder::byte1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::with_pair", "Argument[0].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::arch::all::packedpair::Finder::byte2]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::with_pair", "Argument[1]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::arch::all::packedpair::Finder::pair]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::index1", "Argument[self].Field[crate::arch::all::packedpair::Pair::index1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::index2", "Argument[self].Field[crate::arch::all::packedpair::Pair::index2]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::with_indices", "Argument[1]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::arch::all::packedpair::Pair::index1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::with_indices", "Argument[2]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::arch::all::packedpair::Pair::index2]", "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", "::find", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::count", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::count", "Argument[self].Field[crate::arch::generic::memchr::Iter::end]", "Argument[0].Parameter[1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::count", "Argument[self].Field[crate::arch::generic::memchr::Iter::start]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::generic::memchr::Iter::end]", "Argument[0].Parameter[1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::generic::memchr::Iter::start]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next_back", "Argument[self].Field[crate::arch::generic::memchr::Iter::end]", "Argument[0].Parameter[1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next_back", "Argument[self].Field[crate::arch::generic::memchr::Iter::start]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::needle1", "Argument[self].Field[crate::arch::generic::memchr::One::s1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0]", "ReturnValue.Field[crate::arch::generic::memchr::One::s1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::needle1", "Argument[self].Field[crate::arch::generic::memchr::Three::s1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::needle2", "Argument[self].Field[crate::arch::generic::memchr::Three::s2]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::needle3", "Argument[self].Field[crate::arch::generic::memchr::Three::s3]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0]", "ReturnValue.Field[crate::arch::generic::memchr::Three::s1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[1]", "ReturnValue.Field[crate::arch::generic::memchr::Three::s2]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[2]", "ReturnValue.Field[crate::arch::generic::memchr::Three::s3]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::needle1", "Argument[self].Field[crate::arch::generic::memchr::Two::s1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::needle2", "Argument[self].Field[crate::arch::generic::memchr::Two::s2]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0]", "ReturnValue.Field[crate::arch::generic::memchr::Two::s1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[1]", "ReturnValue.Field[crate::arch::generic::memchr::Two::s2]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[1]", "ReturnValue.Field[crate::memchr::Memchr2::needle2]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0]", "ReturnValue.Field[crate::memchr::Memchr3::needle1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[1]", "ReturnValue.Field[crate::memchr::Memchr3::needle2]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0].Element", "ReturnValue.Field[crate::memmem::searcher::SearcherRev::kind].Field[crate::memmem::searcher::SearcherRevKind::OneByte::needle]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0]", "ReturnValue.Field[crate::tests::memchr::Runner::needle_len]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::fwd", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::fwd", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::rev", "Argument[self]", "ReturnValue", "value", "dfc-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", "::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"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::arch::generic::memchr::fwd_byte_by_byte", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::arch::generic::memchr::search_slice_with_raw", "Argument[0]", "Argument[1]", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::arch::generic::memchr::search_slice_with_raw", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::arch::generic::memchr::search_slice_with_raw", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::memchr::memchr2_iter", "Argument[0]", "ReturnValue.Field[crate::memchr::Memchr2::needle1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::memchr::memchr2_iter", "Argument[1]", "ReturnValue.Field[crate::memchr::Memchr2::needle2]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::memchr::memchr3_iter", "Argument[0]", "ReturnValue.Field[crate::memchr::Memchr3::needle1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::memchr::memchr3_iter", "Argument[1]", "ReturnValue.Field[crate::memchr::Memchr3::needle2]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::memchr::memchr3_iter", "Argument[2]", "ReturnValue.Field[crate::memchr::Memchr3::needle3]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::memchr::memchr_iter", "Argument[0]", "ReturnValue.Field[crate::memchr::Memchr::needle1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::memmem::find", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::memmem::find_iter", "Argument[0]", "ReturnValue.Field[crate::memmem::FindIter::haystack]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::memmem::rfind_iter", "Argument[0]", "ReturnValue.Field[crate::memmem::FindRevIter::haystack]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::tests::substring::prop::prefix_is_substring", "Argument[0].Element", "Argument[1].Parameter[1].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::tests::substring::prop::prefix_is_substring", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::tests::substring::prop::same_as_naive", "Argument[1]", "Argument[3].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::tests::substring::prop::same_as_naive", "Argument[2]", "Argument[3].Parameter[1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::tests::substring::prop::suffix_is_substring", "Argument[0].Element", "Argument[1].Parameter[1].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::tests::substring::prop::suffix_is_substring", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - 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"] diff --git a/rust/ql/lib/ext/generated/memchr/repo-shared.model.yml b/rust/ql/lib/ext/generated/memchr/repo-shared.model.yml deleted file mode 100644 index 792aa942c4dc..000000000000 --- a/rust/ql/lib/ext/generated/memchr/repo-shared.model.yml +++ /dev/null @@ -1,27 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["repo::shared", "::one_needle", "Argument[self].Field[crate::Benchmark::needles].Element", "ReturnValue.Field[crate::result::Result::Ok(0)].Reference", "value", "dfc-generated"] - - ["repo::shared", "::one_needle_byte", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo::shared", "::three_needle_bytes", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo::shared", "::two_needle_bytes", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo::shared", "crate::count_memchr2", "Argument[0]", "Argument[3].Parameter[0]", "value", "dfc-generated"] - - ["repo::shared", "crate::count_memchr2", "Argument[1]", "Argument[3].Parameter[1]", "value", "dfc-generated"] - - ["repo::shared", "crate::count_memchr2", "Argument[2]", "Argument[3].Parameter[2]", "value", "dfc-generated"] - - ["repo::shared", "crate::count_memchr3", "Argument[0]", "Argument[4].Parameter[0]", "value", "dfc-generated"] - - ["repo::shared", "crate::count_memchr3", "Argument[1]", "Argument[4].Parameter[1]", "value", "dfc-generated"] - - ["repo::shared", "crate::count_memchr3", "Argument[2]", "Argument[4].Parameter[2]", "value", "dfc-generated"] - - ["repo::shared", "crate::count_memchr3", "Argument[3]", "Argument[4].Parameter[3]", "value", "dfc-generated"] - - ["repo::shared", "crate::count_memchr", "Argument[0]", "Argument[2].Parameter[0]", "value", "dfc-generated"] - - ["repo::shared", "crate::count_memchr", "Argument[1]", "Argument[2].Parameter[1]", "value", "dfc-generated"] - - ["repo::shared", "crate::count_memmem", "Argument[0]", "Argument[2].Parameter[0]", "value", "dfc-generated"] - - ["repo::shared", "crate::count_memmem", "Argument[1]", "Argument[2].Parameter[1]", "value", "dfc-generated"] - - ["repo::shared", "crate::count_memmem_str", "Argument[0]", "Argument[2].Parameter[0]", "value", "dfc-generated"] - - ["repo::shared", "crate::count_memmem_str", "Argument[1]", "Argument[2].Parameter[1]", "value", "dfc-generated"] - - ["repo::shared", "crate::run", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["repo::shared", "crate::run_and_count", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["repo::shared", "crate::run_and_count", "Argument[2]", "Argument[1]", "taint", "df-generated"] - - ["repo::shared", "crate::run_and_count", "Argument[2]", "ReturnValue", "taint", "df-generated"] diff --git a/rust/ql/lib/ext/generated/once_cell.model.yml b/rust/ql/lib/ext/generated/once_cell.model.yml new file mode 100644 index 000000000000..ef8ffdc22289 --- /dev/null +++ b/rust/ql/lib/ext/generated/once_cell.model.yml @@ -0,0 +1,24 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::into_inner", "Argument[self].Field[once_cell::imp::OnceCell::value].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::get_or_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_or_try_init", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::get_or_init", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::get_or_try_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_or_init", "Argument[0].ReturnValue", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_or_try_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_value", "Argument[0].Field[once_cell::sync::Lazy::init]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::clone_from", "Argument[0].Reference", "Argument[self].Reference", "value", "dfc-generated"] + - ["::set", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::try_insert", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[1]", "value", "dfc-generated"] + - ["::into_value", "Argument[0].Field[once_cell::unsync::Lazy::init]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::clone_from", "Argument[0].Reference", "Argument[self].Reference", "value", "dfc-generated"] + - ["::get_or_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_or_try_init", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[once_cell::unsync::OnceCell::inner].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::set", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::try_insert", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[1]", "value", "dfc-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 deleted file mode 100644 index deaaf890d15b..000000000000 --- a/rust/ql/lib/ext/generated/once_cell/repo-https-github.com-matklad-once_cell-once_cell.model.yml +++ /dev/null @@ -1,21 +0,0 @@ -# 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/matklad/once_cell:once_cell", "::get_or_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["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", "::get_or_init", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/matklad/once_cell:once_cell", "::get_or_try_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/matklad/once_cell:once_cell", "::get_or_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["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", "::clone_from", "Argument[0].Reference", "Argument[self].Reference", "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", "::clone_from", "Argument[0].Reference", "Argument[self].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/matklad/once_cell:once_cell", "::get_or_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["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.model.yml b/rust/ql/lib/ext/generated/rand.model.yml new file mode 100644 index 000000000000..2425829bce14 --- /dev/null +++ b/rust/ql/lib/ext/generated/rand.model.yml @@ -0,0 +1,87 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::extract_lane", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::replace", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from_ratio", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_ratio", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::p", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::sample", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[rand::distr::slice::Choose::slice]", "value", "dfc-generated"] + - ["::num_choices", "Argument[self].Field[rand::distr::slice::Choose::num_choices]", "ReturnValue", "value", "dfc-generated"] + - ["::sample", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::sample", "Argument[self].Field[rand::distr::uniform::other::UniformDuration::mode].Field[rand::distr::uniform::other::UniformDurationMode::Small::secs]", "ReturnValue.Field[core::time::Duration::secs]", "value", "dfc-generated"] + - ["::total_weight", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndex::total_weight].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::total_weight", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndex::total_weight]", "ReturnValue", "value", "dfc-generated"] + - ["::weight", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndex::cumulative_weights].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::weight", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndex::total_weight].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::weight", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndex::total_weight]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::weights", "Argument[self]", "ReturnValue.Field[rand::distr::weighted::weighted_index::WeightedIndexIter::weighted_index]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndexIter::index]", "ReturnValue.Field[rand::distr::weighted::weighted_index::WeightedIndexIter::index]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndexIter::weighted_index]", "ReturnValue.Field[rand::distr::weighted::weighted_index::WeightedIndexIter::weighted_index]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndexIter::weighted_index].Field[rand::distr::weighted::weighted_index::WeightedIndex::total_weight]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next_u32", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_u64", "Argument[self].Field[rand::rngs::mock::StepRng::v]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rand::rngs::mock::StepRng::v]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rand::rngs::mock::StepRng::a]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Field[0].Field[rand_core::block::BlockRng::core]", "ReturnValue.Field[rand::rngs::reseeding::ReseedingRng(0)].Field[rand_core::block::BlockRng::core]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[rand::rngs::reseeding::ReseedingRng(0)].Field[rand_core::block::BlockRng::core]", "ReturnValue.Field[rand::rngs::reseeding::ReseedingRng(0)].Field[rand_core::block::BlockRng::core]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rand::rngs::reseeding::ReseedingCore::reseeder]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rand::seq::coin_flipper::CoinFlipper::rng]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rand::seq::increasing_uniform::IncreasingUniform::rng]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rand::seq::increasing_uniform::IncreasingUniform::n]", "value", "dfc-generated"] + - ["::next_index", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rand::seq::index_::IndexVec::U32(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rand::seq::index_::IndexVec::U64(0)]", "value", "dfc-generated"] + - ["::index", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self].Field[rand::seq::iterator::test::ChunkHintedIterator::chunk_size]", "Argument[self].Field[rand::seq::iterator::test::ChunkHintedIterator::chunk_remaining]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[rand::seq::iterator::test::ChunkHintedIterator::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[rand::seq::iterator::test::ChunkHintedIterator::chunk_remaining]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[rand::seq::iterator::test::UnhintedIterator::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[rand::seq::iterator::test::WindowHintedIterator::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[rand::seq::iterator::test::WindowHintedIterator::window_size]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[rand_chacha::chacha::Array64(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[rand_chacha::chacha::Array64(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rand_chacha::chacha::ChaCha12Rng::rng].Field[rand_core::block::BlockRng::core]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_word_pos", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::set_word_pos", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rand_chacha::chacha::ChaCha20Rng::rng].Field[rand_core::block::BlockRng::core]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_word_pos", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::set_word_pos", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rand_chacha::chacha::ChaCha8Rng::rng].Field[rand_core::block::BlockRng::core]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_word_pos", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::set_word_pos", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::re", "Argument[self].Field[0]", "ReturnValue.Field[rand_core::UnwrapMut(0)]", "value", "dfc-generated"] + - ["::re", "Argument[self].Field[rand_core::UnwrapMut(0)]", "ReturnValue.Field[rand_core::UnwrapMut(0)]", "value", "dfc-generated"] + - ["::next_u32", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::generate_and_set", "Argument[0]", "Argument[self].Field[rand_core::block::BlockRng64::index]", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[rand_core::block::BlockRng64::index]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rand_core::block::BlockRng64::core]", "value", "dfc-generated"] + - ["::generate_and_set", "Argument[0]", "Argument[self].Field[rand_core::block::BlockRng::index]", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[rand_core::block::BlockRng::index]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rand_core::block::BlockRng::core]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rand_pcg::pcg128::Lcg128Xsl64::state]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rand_pcg::pcg128cm::Lcg128CmDxsm64::state]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rand_pcg::pcg64::Lcg64Xsh32::state]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[seq_choose::UnhintedIterator::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[seq_choose::WindowHintedIterator::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[seq_choose::WindowHintedIterator::window_size]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["rand::seq::index_::sample", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["rand_chacha::guts::diagonalize", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["rand_chacha::guts::round", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["rand_chacha::guts::undiagonalize", "Argument[0]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rand/repo-benches.model.yml b/rust/ql/lib/ext/generated/rand/repo-benches.model.yml deleted file mode 100644 index a16a29a127f5..000000000000 --- a/rust/ql/lib/ext/generated/rand/repo-benches.model.yml +++ /dev/null @@ -1,9 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["repo::benches", "::next", "Argument[self].Field[crate::UnhintedIterator::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo::benches", "::next", "Argument[self].Field[crate::WindowHintedIterator::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo::benches", "::size_hint", "Argument[self].Field[crate::WindowHintedIterator::window_size]", "ReturnValue.Field[0]", "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 deleted file mode 100644 index 682e25457132..000000000000 --- a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand.model.yml +++ /dev/null @@ -1,63 +0,0 @@ -# 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-random/rand:rand", "<&_ as crate::distr::uniform::SampleBorrow>::borrow", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "<_ as crate::distr::uniform::SampleBorrow>::borrow", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::any", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::replace", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::from_ratio", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::from_ratio", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::p", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::sample", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::new", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::distr::slice::Choose::slice]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::num_choices", "Argument[self].Field[crate::distr::slice::Choose::num_choices]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::sample", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::total_weight", "Argument[self].Field[crate::distr::weighted::weighted_index::WeightedIndex::total_weight].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::total_weight", "Argument[self].Field[crate::distr::weighted::weighted_index::WeightedIndex::total_weight]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::update_weights", "Argument[self].Field[crate::distr::weighted::weighted_index::WeightedIndex::total_weight].Reference", "Argument[self].Field[crate::distr::weighted::weighted_index::WeightedIndex::total_weight]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::weight", "Argument[self].Field[crate::distr::weighted::weighted_index::WeightedIndex::total_weight].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::weight", "Argument[self].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", "::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_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", "::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"] - - ["repo:https://github.com/rust-random/rand:rand", "::new", "Argument[1]", "ReturnValue.Field[crate::seq::increasing_uniform::IncreasingUniform::n]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::next_index", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::from", "Argument[0]", "ReturnValue.Field[crate::seq::index_::IndexVec::U32(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::from", "Argument[0]", "ReturnValue.Field[crate::seq::index_::IndexVec::U64(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::index", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::next", "Argument[self].Field[crate::seq::iterator::test::ChunkHintedIterator::chunk_size]", "Argument[self].Field[crate::seq::iterator::test::ChunkHintedIterator::chunk_remaining]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::next", "Argument[self].Field[crate::seq::iterator::test::ChunkHintedIterator::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::size_hint", "Argument[self].Field[crate::seq::iterator::test::ChunkHintedIterator::chunk_remaining]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::next", "Argument[self].Field[crate::seq::iterator::test::UnhintedIterator::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::next", "Argument[self].Field[crate::seq::iterator::test::WindowHintedIterator::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::size_hint", "Argument[self].Field[crate::seq::iterator::test::WindowHintedIterator::window_size]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::extract_lane", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::replace", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::cast_from_int", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::extract_lane", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::replace", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::cast_from_int", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::wmul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::wmul", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::wmul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::wmul", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::as_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::wmul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::wmul", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::as_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::wmul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand", "::wmul", "Argument[self]", "ReturnValue", "taint", "df-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 deleted file mode 100644 index 456b8c7e3e74..000000000000 --- a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_chacha.model.yml +++ /dev/null @@ -1,16 +0,0 @@ -# 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-random/rand:rand_chacha", "::as_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand_chacha", "::as_mut", "Argument[self].Field[crate::chacha::Array64(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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.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.Field[crate::chacha::ChaCha8Rng::rng].Field[crate::block::BlockRng::core]", "value", "dfc-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/rand/repo-https-github.com-rust-random-rand-rand_core.model.yml b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_core.model.yml deleted file mode 100644 index 013eb600dc67..000000000000 --- a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_core.model.yml +++ /dev/null @@ -1,15 +0,0 @@ -# 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-random/rand:rand_core", "::re", "Argument[self].Field[0]", "ReturnValue.Field[crate::UnwrapMut(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand_core", "::re", "Argument[self].Field[crate::UnwrapMut(0)]", "ReturnValue.Field[crate::UnwrapMut(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand_core", "::next_u32", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand_core", "::generate_and_set", "Argument[0]", "Argument[self].Field[crate::block::BlockRng64::index]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand_core", "::index", "Argument[self].Field[crate::block::BlockRng64::index]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand_core", "::new", "Argument[0]", "ReturnValue.Field[crate::block::BlockRng64::core]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand_core", "::generate_and_set", "Argument[0]", "Argument[self].Field[crate::block::BlockRng::index]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand_core", "::index", "Argument[self].Field[crate::block::BlockRng::index]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand_core", "::new", "Argument[0]", "ReturnValue.Field[crate::block::BlockRng::core]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_pcg.model.yml b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_pcg.model.yml deleted file mode 100644 index 054d5e8ca16a..000000000000 --- a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_pcg.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -# 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-random/rand:rand_pcg", "::new", "Argument[0]", "ReturnValue.Field[crate::pcg128::Lcg128Xsl64::state]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand_pcg", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-random/rand:rand_pcg", "::new", "Argument[0]", "ReturnValue.Field[crate::pcg128cm::Lcg128CmDxsm64::state]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-random/rand:rand_pcg", "::new", "Argument[0]", "ReturnValue.Field[crate::pcg64::Lcg64Xsh32::state]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/reqwest.model.yml b/rust/ql/lib/ext/generated/reqwest.model.yml new file mode 100644 index 000000000000..109a35a39e0b --- /dev/null +++ b/rust/ql/lib/ext/generated/reqwest.model.yml @@ -0,0 +1,464 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::as_str", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[connect_via_lower_priority_tokio_runtime::background_threadpool::BackgroundProcessor::inner]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[connect_via_lower_priority_tokio_runtime::background_threadpool::BackgroundResponseFuture::rx]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[connect_via_lower_priority_tokio_runtime::background_threadpool::BackgroundResponseFuture::rx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[connect_via_lower_priority_tokio_runtime::background_threadpool::BackgroundResponseFuture::rx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::body::Body::inner].Field[reqwest::async_impl::body::Inner::Reusable(0)]", "value", "dfc-generated"] + - ["::into_stream", "Argument[self]", "ReturnValue.Field[reqwest::async_impl::body::DataStream(0)]", "value", "dfc-generated"] + - ["::reusable", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::body::Body::inner].Field[reqwest::async_impl::body::Inner::Reusable(0)]", "value", "dfc-generated"] + - ["::try_reuse", "Argument[self]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::async_impl::body::ReadTimeoutBody::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::async_impl::body::ReadTimeoutBody::sleep]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::async_impl::body::ReadTimeoutBody::timeout]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::async_impl::body::ReadTimeoutBody::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::async_impl::body::ReadTimeoutBody::sleep]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::async_impl::body::ReadTimeoutBody::timeout]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::async_impl::body::TotalTimeoutBody::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::async_impl::body::TotalTimeoutBody::timeout]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::async_impl::body::TotalTimeoutBody::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::async_impl::body::TotalTimeoutBody::timeout]", "ReturnValue", "value", "dfc-generated"] + - ["::delete", "Argument[self].Reference", "ReturnValue.Field[reqwest::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::get", "Argument[self].Reference", "ReturnValue.Field[reqwest::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::head", "Argument[self].Reference", "ReturnValue.Field[reqwest::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::patch", "Argument[self].Reference", "ReturnValue.Field[reqwest::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::post", "Argument[self].Reference", "ReturnValue.Field[reqwest::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::put", "Argument[self].Reference", "ReturnValue.Field[reqwest::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::request", "Argument[self].Reference", "ReturnValue.Field[reqwest::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::add_crl", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::add_crls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::add_root_certificate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::brotli", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::build", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::nodelay]", "ReturnValue.Field[reqwest::connect::ConnectorBuilder::nodelay]", "value", "dfc-generated"] + - ["::build", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::tls_info]", "ReturnValue.Field[reqwest::connect::ConnectorBuilder::tls_info]", "value", "dfc-generated"] + - ["::connect_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::connection_verbose", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::connection_verbose]", "value", "dfc-generated"] + - ["::connection_verbose", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::connection_verbose]", "value", "dfc-generated"] + - ["::connection_verbose", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::connector_layer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookie_provider", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookie_store", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::danger_accept_invalid_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::danger_accept_invalid_hostnames", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deflate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::dns_resolver", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::gzip", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::hickory_dns", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::hickory_dns]", "value", "dfc-generated"] + - ["::hickory_dns", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::hickory_dns]", "value", "dfc-generated"] + - ["::hickory_dns", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http09_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http1_allow_obsolete_multiline_headers_in_responses", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::http1_allow_obsolete_multiline_headers_in_responses]", "value", "dfc-generated"] + - ["::http1_allow_obsolete_multiline_headers_in_responses", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::http1_allow_obsolete_multiline_headers_in_responses]", "value", "dfc-generated"] + - ["::http1_allow_obsolete_multiline_headers_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http1_allow_spaces_after_header_name_in_responses", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::http1_allow_spaces_after_header_name_in_responses]", "value", "dfc-generated"] + - ["::http1_allow_spaces_after_header_name_in_responses", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::http1_allow_spaces_after_header_name_in_responses]", "value", "dfc-generated"] + - ["::http1_allow_spaces_after_header_name_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http1_ignore_invalid_headers_in_responses", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::http1_ignore_invalid_headers_in_responses]", "value", "dfc-generated"] + - ["::http1_ignore_invalid_headers_in_responses", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::http1_ignore_invalid_headers_in_responses]", "value", "dfc-generated"] + - ["::http1_ignore_invalid_headers_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http1_only", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http1_title_case_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_adaptive_window", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::http2_adaptive_window]", "value", "dfc-generated"] + - ["::http2_adaptive_window", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::http2_adaptive_window]", "value", "dfc-generated"] + - ["::http2_adaptive_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_initial_connection_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_initial_stream_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_keep_alive_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_keep_alive_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_keep_alive_while_idle", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::http2_keep_alive_while_idle]", "value", "dfc-generated"] + - ["::http2_keep_alive_while_idle", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::http2_keep_alive_while_idle]", "value", "dfc-generated"] + - ["::http2_keep_alive_while_idle", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_max_frame_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_max_header_list_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_prior_knowledge", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http3_congestion_bbr", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http3_conn_receive_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http3_max_field_section_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http3_max_idle_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http3_prior_knowledge", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http3_send_grease", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http3_send_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http3_stream_receive_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::https_only", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::https_only]", "value", "dfc-generated"] + - ["::https_only", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::https_only]", "value", "dfc-generated"] + - ["::https_only", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::identity", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::interface", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::local_address", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_tls_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::min_tls_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::no_proxy", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::pool_idle_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::pool_max_idle_per_host", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::pool_max_idle_per_host]", "value", "dfc-generated"] + - ["::pool_max_idle_per_host", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::pool_max_idle_per_host]", "value", "dfc-generated"] + - ["::pool_max_idle_per_host", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::proxy", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::read_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::redirect", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::redirect_policy]", "value", "dfc-generated"] + - ["::redirect", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::redirect_policy]", "value", "dfc-generated"] + - ["::redirect", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::referer", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::referer]", "value", "dfc-generated"] + - ["::referer", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::referer]", "value", "dfc-generated"] + - ["::referer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::resolve", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::resolve_to_addrs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tcp_keepalive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tcp_keepalive_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tcp_keepalive_retries", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tcp_nodelay", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::nodelay]", "value", "dfc-generated"] + - ["::tcp_nodelay", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::nodelay]", "value", "dfc-generated"] + - ["::tcp_nodelay", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tls_built_in_native_certs", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::tls_built_in_certs_native]", "value", "dfc-generated"] + - ["::tls_built_in_native_certs", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::tls_built_in_certs_native]", "value", "dfc-generated"] + - ["::tls_built_in_native_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tls_built_in_root_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tls_built_in_webpki_certs", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::tls_built_in_certs_webpki]", "value", "dfc-generated"] + - ["::tls_built_in_webpki_certs", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::tls_built_in_certs_webpki]", "value", "dfc-generated"] + - ["::tls_built_in_webpki_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tls_early_data", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::tls_enable_early_data]", "value", "dfc-generated"] + - ["::tls_early_data", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::tls_enable_early_data]", "value", "dfc-generated"] + - ["::tls_early_data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tls_info", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::tls_info]", "value", "dfc-generated"] + - ["::tls_info", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::tls_info]", "value", "dfc-generated"] + - ["::tls_info", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tls_sni", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::tls_sni]", "value", "dfc-generated"] + - ["::tls_sni", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::tls_sni]", "value", "dfc-generated"] + - ["::tls_sni", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::trust_dns", "Argument[0]", "Argument[self].Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::hickory_dns]", "value", "dfc-generated"] + - ["::trust_dns", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::client::ClientBuilder::config].Field[reqwest::async_impl::client::Config::hickory_dns]", "value", "dfc-generated"] + - ["::trust_dns", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::use_native_tls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::use_preconfigured_tls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::use_rustls_tls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::user_agent", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::zstd", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::call", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[reqwest::async_impl::client::HyperService::cookie_store].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::call", "Argument[self].Field[reqwest::async_impl::client::HyperService::cookie_store]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::async_impl::client::Pending::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::async_impl::client::Pending::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::detect", "Argument[1]", "ReturnValue.Field[reqwest::async_impl::decoder::Decoder::inner].Field[reqwest::async_impl::decoder::Inner::PlainText(0)]", "value", "dfc-generated"] + - ["::into_stream", "Argument[self]", "ReturnValue.Field[reqwest::async_impl::decoder::IoStream(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::h3_client::H3Client::connector]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[reqwest::async_impl::h3_client::H3Client::cookie_store]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[reqwest::async_impl::h3_client::connect::H3Connector::resolver]", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[reqwest::async_impl::h3_client::connect::H3Connector::client_config]", "value", "dfc-generated"] + - ["::new_connection", "Argument[2]", "ReturnValue.Field[reqwest::async_impl::h3_client::pool::PoolClient::inner]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::h3_client::pool::PoolClient::inner]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::h3_client::pool::PoolConnection::client]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[reqwest::async_impl::h3_client::pool::PoolConnection::close_rx]", "value", "dfc-generated"] + - ["::pool", "Argument[self].Field[reqwest::async_impl::h3_client::pool::PoolConnection::client].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::pool", "Argument[self].Field[reqwest::async_impl::h3_client::pool::PoolConnection::client]", "ReturnValue", "value", "dfc-generated"] + - ["::boundary", "Argument[self].Field[reqwest::async_impl::multipart::Form::inner].Field[reqwest::async_impl::multipart::FormParts::boundary]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::boundary", "Argument[self].Field[reqwest::async_impl::multipart::FormParts::boundary]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::part", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::percent_encode_attr_chars", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::percent_encode_noop", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::percent_encode_path_segment", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::metadata", "Argument[self].Field[reqwest::async_impl::multipart::Part::meta]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::value_len", "Argument[self].Field[reqwest::async_impl::multipart::Part::body_length]", "ReturnValue", "value", "dfc-generated"] + - ["::stream_with_length", "Argument[1]", "ReturnValue.Field[reqwest::async_impl::multipart::Part::body_length].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::file_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt_fields", "Argument[0].Field[core::fmt::builders::DebugStruct::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::fmt::builders::DebugStruct::result].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::fmt_fields", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mime", "Argument[0]", "Argument[self].Field[reqwest::async_impl::multipart::PartMetadata::mime].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::mime", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::multipart::PartMetadata::mime].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::mime", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::body", "Argument[self].Field[reqwest::async_impl::request::Request::body].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::body_mut", "Argument[self].Field[reqwest::async_impl::request::Request::body]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::extensions", "Argument[self].Field[reqwest::async_impl::request::Request::extensions]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::extensions_mut", "Argument[self].Field[reqwest::async_impl::request::Request::extensions]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::headers", "Argument[self].Field[reqwest::async_impl::request::Request::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::headers_mut", "Argument[self].Field[reqwest::async_impl::request::Request::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::method", "Argument[self].Field[reqwest::async_impl::request::Request::method]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::method_mut", "Argument[self].Field[reqwest::async_impl::request::Request::method]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::request::Request::method]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[reqwest::async_impl::request::Request::url]", "value", "dfc-generated"] + - ["::pieces", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::try_clone", "Argument[self].Field[reqwest::async_impl::request::Request::method]", "ReturnValue.Field[core::option::Option::Some(0)].Field[reqwest::async_impl::request::Request::method]", "value", "dfc-generated"] + - ["::try_clone", "Argument[self].Field[reqwest::async_impl::request::Request::url]", "ReturnValue.Field[core::option::Option::Some(0)].Field[reqwest::async_impl::request::Request::url]", "value", "dfc-generated"] + - ["::url", "Argument[self].Field[reqwest::async_impl::request::Request::url]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::url_mut", "Argument[self].Field[reqwest::async_impl::request::Request::url]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::version", "Argument[self].Field[reqwest::async_impl::request::Request::version]", "ReturnValue", "value", "dfc-generated"] + - ["::version_mut", "Argument[self].Field[reqwest::async_impl::request::Request::version]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::basic_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::bearer_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::build", "Argument[self].Field[reqwest::async_impl::request::RequestBuilder::request]", "ReturnValue", "value", "dfc-generated"] + - ["::build_split", "Argument[self].Field[reqwest::async_impl::request::RequestBuilder::client]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::build_split", "Argument[self].Field[reqwest::async_impl::request::RequestBuilder::request]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::fetch_mode_no_cors", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::form", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from_parts", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::json", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[reqwest::async_impl::request::RequestBuilder::request]", "value", "dfc-generated"] + - ["::query", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::try_clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::error_for_status", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::error_for_status_ref", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::json", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[reqwest::async_impl::response::Response::url].Reference", "value", "dfc-generated"] + - ["::text_with_charset", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::url", "Argument[self].Field[reqwest::async_impl::response::Response::url]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[reqwest::blocking::body::Body::kind].Field[reqwest::blocking::body::Kind::Bytes(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_async", "Argument[self].Field[reqwest::blocking::body::Body::kind].Field[reqwest::blocking::body::Kind::Reader(1)]", "ReturnValue.Field[2]", "value", "dfc-generated"] + - ["::into_reader", "Argument[self].Field[reqwest::blocking::body::Body::kind].Field[reqwest::blocking::body::Kind::Bytes(0)]", "ReturnValue.Field[reqwest::blocking::body::Reader::Bytes(0)].Field[std::io::cursor::Cursor::inner]", "value", "dfc-generated"] + - ["::into_reader", "Argument[self].Field[reqwest::blocking::body::Body::kind].Field[reqwest::blocking::body::Kind::Reader(0)]", "ReturnValue.Field[reqwest::blocking::body::Reader::Reader(0)]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[reqwest::blocking::body::Body::kind].Field[reqwest::blocking::body::Kind::Reader(1)]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sized", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::delete", "Argument[self].Reference", "ReturnValue.Field[reqwest::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::get", "Argument[self].Reference", "ReturnValue.Field[reqwest::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::head", "Argument[self].Reference", "ReturnValue.Field[reqwest::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::patch", "Argument[self].Reference", "ReturnValue.Field[reqwest::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::post", "Argument[self].Reference", "ReturnValue.Field[reqwest::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::put", "Argument[self].Reference", "ReturnValue.Field[reqwest::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::request", "Argument[self].Reference", "ReturnValue.Field[reqwest::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[reqwest::blocking::client::ClientBuilder::inner]", "value", "dfc-generated"] + - ["::add_crl", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::add_crls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::add_root_certificate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::brotli", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::connect_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::connection_verbose", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::connector_layer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookie_provider", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookie_store", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::danger_accept_invalid_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::danger_accept_invalid_hostnames", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deflate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::dns_resolver", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::gzip", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::hickory_dns", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http09_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http1_allow_obsolete_multiline_headers_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http1_allow_spaces_after_header_name_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http1_ignore_invalid_headers_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http1_only", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http1_title_case_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_adaptive_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_initial_connection_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_initial_stream_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_max_frame_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_max_header_list_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http2_prior_knowledge", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::http3_prior_knowledge", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::https_only", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::identity", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::interface", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::local_address", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_tls_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::min_tls_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::no_brotli", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::no_deflate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::no_gzip", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::no_hickory_dns", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::no_proxy", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::no_trust_dns", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::no_zstd", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::pool_idle_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::pool_max_idle_per_host", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::proxy", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::redirect", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::referer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::resolve", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::resolve_to_addrs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tcp_keepalive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tcp_keepalive_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tcp_keepalive_retries", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tcp_nodelay", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tls_built_in_native_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tls_built_in_root_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tls_built_in_webpki_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tls_info", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tls_sni", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::trust_dns", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::use_native_tls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::use_preconfigured_tls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::use_rustls_tls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::user_agent", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::zstd", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::boundary", "Argument[self].Field[reqwest::blocking::multipart::Form::inner].Field[reqwest::async_impl::multipart::FormParts::boundary]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_reader", "Argument[self]", "ReturnValue.Field[reqwest::blocking::multipart::Reader::form]", "value", "dfc-generated"] + - ["::reader", "Argument[self]", "ReturnValue.Field[reqwest::blocking::multipart::Reader::form]", "value", "dfc-generated"] + - ["::metadata", "Argument[self].Field[reqwest::blocking::multipart::Part::meta]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::file_name", "Argument[self].Field[reqwest::blocking::multipart::Part::value]", "ReturnValue.Field[reqwest::blocking::multipart::Part::value]", "value", "dfc-generated"] + - ["::headers", "Argument[self].Field[reqwest::blocking::multipart::Part::value]", "ReturnValue.Field[reqwest::blocking::multipart::Part::value]", "value", "dfc-generated"] + - ["::mime_str", "Argument[self].Field[reqwest::blocking::multipart::Part::value]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[reqwest::blocking::multipart::Part::value]", "value", "dfc-generated"] + - ["::body", "Argument[self].Field[reqwest::blocking::request::Request::body].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::body_mut", "Argument[self].Field[reqwest::blocking::request::Request::body]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::headers", "Argument[self].Field[reqwest::blocking::request::Request::inner].Field[reqwest::async_impl::request::Request::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::headers_mut", "Argument[self].Field[reqwest::blocking::request::Request::inner].Field[reqwest::async_impl::request::Request::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_async", "Argument[self].Field[reqwest::blocking::request::Request::inner]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::method", "Argument[self].Field[reqwest::blocking::request::Request::inner].Field[reqwest::async_impl::request::Request::method]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::method_mut", "Argument[self].Field[reqwest::blocking::request::Request::inner].Field[reqwest::async_impl::request::Request::method]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[reqwest::blocking::request::Request::inner].Field[reqwest::async_impl::request::Request::method]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[reqwest::blocking::request::Request::inner].Field[reqwest::async_impl::request::Request::url]", "value", "dfc-generated"] + - ["::url", "Argument[self].Field[reqwest::blocking::request::Request::inner].Field[reqwest::async_impl::request::Request::url]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::url_mut", "Argument[self].Field[reqwest::blocking::request::Request::inner].Field[reqwest::async_impl::request::Request::url]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::version", "Argument[self].Field[reqwest::blocking::request::Request::inner].Field[reqwest::async_impl::request::Request::version]", "ReturnValue", "value", "dfc-generated"] + - ["::version_mut", "Argument[self].Field[reqwest::blocking::request::Request::inner].Field[reqwest::async_impl::request::Request::version]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::basic_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::bearer_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::build", "Argument[self].Field[reqwest::blocking::request::RequestBuilder::request]", "ReturnValue", "value", "dfc-generated"] + - ["::build_split", "Argument[self].Field[reqwest::blocking::request::RequestBuilder::client]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::build_split", "Argument[self].Field[reqwest::blocking::request::RequestBuilder::request]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::form", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from_parts", "Argument[0]", "ReturnValue.Field[reqwest::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::json", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::multipart", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[reqwest::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[reqwest::blocking::request::RequestBuilder::request]", "value", "dfc-generated"] + - ["::query", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::send", "Argument[self].Field[reqwest::blocking::request::RequestBuilder::request].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::send", "Argument[self].Field[reqwest::blocking::request::RequestBuilder::request].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::try_clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::error_for_status_ref", "Argument[self].Field[reqwest::blocking::response::Response::inner]", "ReturnValue.Field[core::result::Result::Ok(0)].Reference", "value", "dfc-generated"] + - ["::error_for_status_ref", "Argument[self].Field[reqwest::blocking::response::Response::inner]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[reqwest::blocking::response::Response::inner]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[reqwest::blocking::response::Response::timeout]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[reqwest::blocking::response::Response::_thread_handle]", "value", "dfc-generated"] + - ["::url", "Argument[self].Field[reqwest::blocking::response::Response::inner].Field[reqwest::async_impl::response::Response::url]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::fetch", "Argument[self].Field[0].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::fetch", "Argument[self].Field[reqwest::config::RequestConfig(0)].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[reqwest::config::RequestConfig(0)]", "value", "dfc-generated"] + - ["::build", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_built_default_tls", "Argument[0]", "ReturnValue.Field[reqwest::connect::ConnectorBuilder::inner].Field[reqwest::connect::Inner::DefaultTls(0)]", "value", "dfc-generated"] + - ["::from_built_default_tls", "Argument[1]", "ReturnValue.Field[reqwest::connect::ConnectorBuilder::inner].Field[reqwest::connect::Inner::DefaultTls(1)]", "value", "dfc-generated"] + - ["::from_built_default_tls", "Argument[2]", "ReturnValue.Field[reqwest::connect::ConnectorBuilder::proxies]", "value", "dfc-generated"] + - ["::from_built_default_tls", "Argument[3]", "ReturnValue.Field[reqwest::connect::ConnectorBuilder::user_agent]", "value", "dfc-generated"] + - ["::from_built_default_tls", "Argument[6]", "ReturnValue.Field[reqwest::connect::ConnectorBuilder::nodelay]", "value", "dfc-generated"] + - ["::from_built_default_tls", "Argument[7]", "ReturnValue.Field[reqwest::connect::ConnectorBuilder::tls_info]", "value", "dfc-generated"] + - ["::new_default_tls", "Argument[2]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[reqwest::connect::ConnectorBuilder::proxies]", "value", "dfc-generated"] + - ["::new_default_tls", "Argument[3]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[reqwest::connect::ConnectorBuilder::user_agent]", "value", "dfc-generated"] + - ["::new_default_tls", "Argument[6]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[reqwest::connect::ConnectorBuilder::nodelay]", "value", "dfc-generated"] + - ["::new_default_tls", "Argument[7]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[reqwest::connect::ConnectorBuilder::tls_info]", "value", "dfc-generated"] + - ["::new_rustls_tls", "Argument[0]", "ReturnValue.Field[reqwest::connect::ConnectorBuilder::inner].Field[reqwest::connect::Inner::RustlsTls::http]", "value", "dfc-generated"] + - ["::new_rustls_tls", "Argument[2]", "ReturnValue.Field[reqwest::connect::ConnectorBuilder::proxies]", "value", "dfc-generated"] + - ["::new_rustls_tls", "Argument[3]", "ReturnValue.Field[reqwest::connect::ConnectorBuilder::user_agent]", "value", "dfc-generated"] + - ["::new_rustls_tls", "Argument[6]", "ReturnValue.Field[reqwest::connect::ConnectorBuilder::nodelay]", "value", "dfc-generated"] + - ["::new_rustls_tls", "Argument[7]", "ReturnValue.Field[reqwest::connect::ConnectorBuilder::tls_info]", "value", "dfc-generated"] + - ["::set_socks_resolver", "Argument[0]", "Argument[self].Field[reqwest::connect::ConnectorBuilder::resolver].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::set_timeout", "Argument[0]", "Argument[self].Field[reqwest::connect::ConnectorBuilder::timeout]", "value", "dfc-generated"] + - ["::set_verbose", "Argument[0]", "Argument[self].Field[reqwest::connect::ConnectorBuilder::verbose].Field[0]", "value", "dfc-generated"] + - ["::set_verbose", "Argument[0]", "Argument[self].Field[reqwest::connect::ConnectorBuilder::verbose].Field[reqwest::connect::verbose::Wrapper(0)]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::connect::native_tls_conn::NativeTlsConn::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::connect::native_tls_conn::NativeTlsConn::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::connect::rustls_tls_conn::RustlsTlsConn::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::connect::rustls_tls_conn::RustlsTlsConn::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::connect::sealed::Conn::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::connect::sealed::Conn::is_proxy]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::connect::sealed::Conn::tls_info]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::connect::sealed::Conn::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::connect::sealed::Conn::is_proxy]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[reqwest::connect::sealed::Conn::tls_info]", "ReturnValue", "value", "dfc-generated"] + - ["::wrap", "Argument[0]", "ReturnValue.Reference.Field[reqwest::connect::verbose::Verbose::inner]", "value", "dfc-generated"] + - ["::wrap", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::resolve", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::resolve", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::resolve", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::source", "Argument[self].Field[0]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::source", "Argument[self].Field[reqwest::dns::hickory::HickoryDnsSystemConfError(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[reqwest::dns::resolve::DnsResolverWithOverrides::dns_resolver]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[reqwest::dns::resolve::DynResolver::resolver]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::with_url", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::without_url", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::maybe_has_http_auth", "Argument[self].Field[reqwest::proxy::Matcher::maybe_has_http_auth]", "ReturnValue", "value", "dfc-generated"] + - ["::maybe_has_http_custom_headers", "Argument[self].Field[reqwest::proxy::Matcher::maybe_has_http_custom_headers]", "ReturnValue", "value", "dfc-generated"] + - ["::basic_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::custom_http_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::into_matcher", "Argument[self].Field[reqwest::proxy::Proxy::extra]", "ReturnValue.Field[reqwest::proxy::Matcher::extra]", "value", "dfc-generated"] + - ["::into_matcher", "Argument[self].Field[reqwest::proxy::Proxy::intercept].Field[reqwest::proxy::Intercept::Custom(0)]", "ReturnValue.Field[reqwest::proxy::Matcher::inner].Field[reqwest::proxy::Matcher_::Custom(0)]", "value", "dfc-generated"] + - ["::no_proxy", "Argument[0]", "Argument[self].Field[reqwest::proxy::Proxy::no_proxy]", "value", "dfc-generated"] + - ["::no_proxy", "Argument[0]", "ReturnValue.Field[reqwest::proxy::Proxy::no_proxy]", "value", "dfc-generated"] + - ["::no_proxy", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::previous", "Argument[self].Field[reqwest::redirect::Attempt::previous]", "ReturnValue", "value", "dfc-generated"] + - ["::status", "Argument[self].Field[reqwest::redirect::Attempt::status]", "ReturnValue", "value", "dfc-generated"] + - ["::url", "Argument[self].Field[reqwest::redirect::Attempt::next]", "ReturnValue", "value", "dfc-generated"] + - ["::custom", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::limited", "Argument[0]", "ReturnValue.Field[reqwest::redirect::Policy::inner].Field[reqwest::redirect::PolicyKind::Limit(0)]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::with_https_only", "Argument[0]", "Argument[self].Field[reqwest::redirect::TowerRedirectPolicy::https_only]", "value", "dfc-generated"] + - ["::with_https_only", "Argument[0]", "ReturnValue.Field[reqwest::redirect::TowerRedirectPolicy::https_only]", "value", "dfc-generated"] + - ["::with_https_only", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_referer", "Argument[0]", "Argument[self].Field[reqwest::redirect::TowerRedirectPolicy::referer]", "value", "dfc-generated"] + - ["::with_referer", "Argument[0]", "ReturnValue.Field[reqwest::redirect::TowerRedirectPolicy::referer]", "value", "dfc-generated"] + - ["::with_referer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_rustls_crl", "Argument[self].Field[reqwest::tls::CertificateRevocationList::inner].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::as_rustls_crl", "Argument[self].Field[reqwest::tls::CertificateRevocationList::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[reqwest::tls::IgnoreHostname::roots]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[reqwest::tls::IgnoreHostname::signature_algorithms]", "value", "dfc-generated"] + - ["::peer_certificate", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[reqwest::util::Escape(0)]", "value", "dfc-generated"] + - ["::into_url", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["reqwest::async_impl::body::total_timeout", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::body::TotalTimeoutBody::inner]", "value", "dfc-generated"] + - ["reqwest::async_impl::body::total_timeout", "Argument[1]", "ReturnValue.Field[reqwest::async_impl::body::TotalTimeoutBody::timeout]", "value", "dfc-generated"] + - ["reqwest::async_impl::body::with_read_timeout", "Argument[0]", "ReturnValue.Field[reqwest::async_impl::body::ReadTimeoutBody::inner]", "value", "dfc-generated"] + - ["reqwest::async_impl::body::with_read_timeout", "Argument[1]", "ReturnValue.Field[reqwest::async_impl::body::ReadTimeoutBody::timeout]", "value", "dfc-generated"] + - ["reqwest::error::cast_to_internal_error", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::delete", "Argument[0]", "transmission", "df-generated"] + - ["::get", "Argument[0]", "transmission", "df-generated"] + - ["::head", "Argument[0]", "transmission", "df-generated"] + - ["::patch", "Argument[0]", "transmission", "df-generated"] + - ["::post", "Argument[0]", "transmission", "df-generated"] + - ["::put", "Argument[0]", "transmission", "df-generated"] + - ["::into_stream", "Argument[self]", "log-injection", "df-generated"] + - ["::stream", "Argument[self]", "log-injection", "df-generated"] + - ["::multipart", "Argument[0]", "log-injection", "df-generated"] + - ["::delete", "Argument[0]", "transmission", "df-generated"] + - ["::get", "Argument[0]", "transmission", "df-generated"] + - ["::head", "Argument[0]", "transmission", "df-generated"] + - ["::patch", "Argument[0]", "transmission", "df-generated"] + - ["::post", "Argument[0]", "transmission", "df-generated"] + - ["::put", "Argument[0]", "transmission", "df-generated"] + - ["::into_reader", "Argument[self]", "log-injection", "df-generated"] + - ["::reader", "Argument[self]", "log-injection", "df-generated"] + - ["::read", "Argument[self]", "log-injection", "df-generated"] + - ["::multipart", "Argument[0]", "log-injection", "df-generated"] + - ["::read", "Argument[self]", "pointer-access", "df-generated"] + - ["::bytes", "Argument[self]", "pointer-access", "df-generated"] + - ["::json", "Argument[self]", "pointer-access", "df-generated"] + - ["::text", "Argument[self]", "pointer-access", "df-generated"] + - ["::text_with_charset", "Argument[self]", "pointer-access", "df-generated"] + - ["::call", "Argument[0]", "log-injection", "df-generated"] + - ["::new", "Argument[1]", "pointer-access", "df-generated"] + - ["reqwest::blocking::get", "Argument[0]", "transmission", "df-generated"] + - ["reqwest::blocking::wait::timeout", "Argument[1]", "pointer-access", "df-generated"] + - ["reqwest::get", "Argument[0]", "transmission", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["::file", "ReturnValue", "file", "df-generated"] + - ["::file", "ReturnValue", "file", "df-generated"] + - ["::file", "ReturnValue", "file", "df-generated"] + - ["::file", "ReturnValue", "file", "df-generated"] + - ["::from_env", "ReturnValue", "environment", "df-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 deleted file mode 100644 index 7355d362c71e..000000000000 --- a/rust/ql/lib/ext/generated/reqwest/repo-https-github.com-seanmonstar-reqwest-reqwest.model.yml +++ /dev/null @@ -1,397 +0,0 @@ -# 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/seanmonstar/reqwest:reqwest", "<&str as crate::into_url::IntoUrlSealed>::as_str", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "<&str as crate::into_url::IntoUrlSealed>::into_url", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::into_url", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from", "Argument[0]", "ReturnValue.Field[crate::async_impl::body::Body::inner].Field[crate::async_impl::body::Inner::Reusable(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::into_stream", "Argument[self]", "ReturnValue.Field[crate::async_impl::body::DataStream(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::reusable", "Argument[0]", "ReturnValue.Field[crate::async_impl::body::Body::inner].Field[crate::async_impl::body::Inner::Reusable(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::try_reuse", "Argument[self].Field[crate::async_impl::body::Body::inner].Field[crate::async_impl::body::Inner::Reusable(0)]", "ReturnValue.Field[0].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::try_reuse", "Argument[self]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::delete", "Argument[self].Reference", "ReturnValue.Field[crate::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::get", "Argument[self].Reference", "ReturnValue.Field[crate::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::head", "Argument[self].Reference", "ReturnValue.Field[crate::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::patch", "Argument[self].Reference", "ReturnValue.Field[crate::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::post", "Argument[self].Reference", "ReturnValue.Field[crate::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::put", "Argument[self].Reference", "ReturnValue.Field[crate::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::request", "Argument[self].Reference", "ReturnValue.Field[crate::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::add_crl", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::add_crls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::add_root_certificate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::brotli", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::build", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::nodelay]", "ReturnValue.Field[crate::connect::ConnectorBuilder::nodelay]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::build", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::tls_info]", "ReturnValue.Field[crate::connect::ConnectorBuilder::tls_info]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::connect_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::connection_verbose", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::connection_verbose]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::connection_verbose", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::connection_verbose]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::connection_verbose", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::connector_layer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::cookie_provider", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::cookie_store", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::danger_accept_invalid_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::danger_accept_invalid_hostnames", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::default_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::deflate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::dns_resolver", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::gzip", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::hickory_dns", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::hickory_dns]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::hickory_dns", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::hickory_dns]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::hickory_dns", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http09_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_allow_obsolete_multiline_headers_in_responses", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::http1_allow_obsolete_multiline_headers_in_responses]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_allow_obsolete_multiline_headers_in_responses", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::http1_allow_obsolete_multiline_headers_in_responses]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_allow_obsolete_multiline_headers_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_allow_spaces_after_header_name_in_responses", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::http1_allow_spaces_after_header_name_in_responses]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_allow_spaces_after_header_name_in_responses", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::http1_allow_spaces_after_header_name_in_responses]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_allow_spaces_after_header_name_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_ignore_invalid_headers_in_responses", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::http1_ignore_invalid_headers_in_responses]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_ignore_invalid_headers_in_responses", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::http1_ignore_invalid_headers_in_responses]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_ignore_invalid_headers_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_only", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_title_case_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_adaptive_window", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::http2_adaptive_window]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_adaptive_window", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::http2_adaptive_window]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_adaptive_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_initial_connection_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_initial_stream_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_keep_alive_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_keep_alive_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_keep_alive_while_idle", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::http2_keep_alive_while_idle]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_keep_alive_while_idle", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::http2_keep_alive_while_idle]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_keep_alive_while_idle", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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_conn_receive_window", "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_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", "::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"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::no_proxy", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::pool_idle_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::pool_max_idle_per_host", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::pool_max_idle_per_host]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::pool_max_idle_per_host", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::pool_max_idle_per_host]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::pool_max_idle_per_host", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::proxy", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::read_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::redirect", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::redirect_policy]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::redirect", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::redirect_policy]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::redirect", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::referer", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::referer]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::referer", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::referer]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::referer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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_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"] - - ["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[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::tls_built_in_certs_native]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_built_in_native_certs", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::tls_built_in_certs_native]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_built_in_native_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_built_in_root_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_built_in_webpki_certs", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::tls_built_in_certs_webpki]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_built_in_webpki_certs", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::tls_built_in_certs_webpki]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_built_in_webpki_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_early_data", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::tls_enable_early_data]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_early_data", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::tls_enable_early_data]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_early_data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_info", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::tls_info]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_info", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::tls_info]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_info", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_sni", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::tls_sni]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_sni", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::tls_sni]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_sni", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::trust_dns", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::hickory_dns]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::trust_dns", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::hickory_dns]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::trust_dns", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::use_native_tls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::use_preconfigured_tls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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[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_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::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"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::percent_encode_noop", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::percent_encode_path_segment", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::metadata", "Argument[self].Field[crate::async_impl::multipart::Part::meta]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::value_len", "Argument[self].Field[crate::async_impl::multipart::Part::body_length]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::mime_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::stream_with_length", "Argument[1]", "ReturnValue.Field[crate::async_impl::multipart::Part::body_length].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::file_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::fmt_fields", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::mime", "Argument[0]", "Argument[self].Field[crate::async_impl::multipart::PartMetadata::mime].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::mime", "Argument[0]", "ReturnValue.Field[crate::async_impl::multipart::PartMetadata::mime].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::method_mut", "Argument[self].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::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"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::url_mut", "Argument[self].Field[crate::async_impl::request::Request::url]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::version", "Argument[self].Field[crate::async_impl::request::Request::version]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::version_mut", "Argument[self].Field[crate::async_impl::request::Request::version]", "ReturnValue.Reference", "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", "::bearer_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::build", "Argument[self].Field[crate::async_impl::request::RequestBuilder::request]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::build_split", "Argument[self].Field[crate::async_impl::request::RequestBuilder::client]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::build_split", "Argument[self].Field[crate::async_impl::request::RequestBuilder::request]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::fetch_mode_no_cors", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::form", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from_parts", "Argument[0]", "ReturnValue.Field[crate::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::json", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::async_impl::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[1]", "ReturnValue.Field[crate::async_impl::request::RequestBuilder::request]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::query", "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", "::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", "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", "::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", "::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", "::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"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::head", "Argument[self].Reference", "ReturnValue.Field[crate::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::patch", "Argument[self].Reference", "ReturnValue.Field[crate::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::post", "Argument[self].Reference", "ReturnValue.Field[crate::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::put", "Argument[self].Reference", "ReturnValue.Field[crate::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::request", "Argument[self].Reference", "ReturnValue.Field[crate::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from", "Argument[0]", "ReturnValue.Field[crate::blocking::client::ClientBuilder::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::add_crl", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::add_crls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::add_root_certificate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::brotli", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::connect_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::connection_verbose", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::connector_layer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::cookie_provider", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::cookie_store", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::danger_accept_invalid_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::danger_accept_invalid_hostnames", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::default_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::deflate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::dns_resolver", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::gzip", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::hickory_dns", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http09_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_allow_obsolete_multiline_headers_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_allow_spaces_after_header_name_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_ignore_invalid_headers_in_responses", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_only", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http1_title_case_headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_adaptive_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_initial_connection_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_initial_stream_window_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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_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", "::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"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::no_brotli", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::no_deflate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::no_gzip", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::no_hickory_dns", "Argument[self]", "ReturnValue", "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", "::no_trust_dns", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::no_zstd", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::pool_idle_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::pool_max_idle_per_host", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::proxy", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::redirect", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::referer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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_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"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_built_in_root_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_built_in_webpki_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_info", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_sni", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::trust_dns", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::use_native_tls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::use_preconfigured_tls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::file_name", "Argument[self].Field[crate::blocking::multipart::Part::value]", "ReturnValue.Field[crate::blocking::multipart::Part::value]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::headers", "Argument[self].Field[crate::blocking::multipart::Part::value]", "ReturnValue.Field[crate::blocking::multipart::Part::value]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::mime_str", "Argument[self].Field[crate::blocking::multipart::Part::value]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::blocking::multipart::Part::value]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::body", "Argument[self].Field[crate::blocking::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::blocking::request::Request::body]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::headers", "Argument[self].Field[crate::blocking::request::Request::inner].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::blocking::request::Request::inner].Field[crate::async_impl::request::Request::headers]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::into_async", "Argument[self].Field[crate::blocking::request::Request::inner]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::method", "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", "::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"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::version_mut", "Argument[self].Field[crate::blocking::request::Request::inner].Field[crate::async_impl::request::Request::version]", "ReturnValue.Reference", "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", "::bearer_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::build", "Argument[self].Field[crate::blocking::request::RequestBuilder::request]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::build_split", "Argument[self].Field[crate::blocking::request::RequestBuilder::client]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::build_split", "Argument[self].Field[crate::blocking::request::RequestBuilder::request]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::form", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from_parts", "Argument[0]", "ReturnValue.Field[crate::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::json", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::multipart", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[1]", "ReturnValue.Field[crate::blocking::request::RequestBuilder::request]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::query", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::send", "Argument[self].Field[crate::blocking::request::RequestBuilder::request].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::send", "Argument[self].Field[crate::blocking::request::RequestBuilder::request].Field[crate::result::Result::Ok(0)]", "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", "::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", "::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", "::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", "::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_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", "::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", "::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", "::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", "::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", "::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", "::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", "::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"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::layer", "Argument[0]", "ReturnValue.Field[crate::support::delay_layer::Delay::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::layer", "Argument[self].Field[crate::support::delay_layer::DelayLayer::delay]", "ReturnValue.Field[crate::support::delay_layer::Delay::delay]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::support::delay_layer::DelayLayer::delay]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::support::delay_layer::ResponseFuture::response]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[1]", "ReturnValue.Field[crate::support::delay_layer::ResponseFuture::sleep]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::addr", "Argument[self].Field[crate::support::delay_server::Server::addr]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::with_addr", "Argument[0]", "Argument[self].Field[crate::support::server::Http3::addr].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::with_addr", "Argument[0]", "ReturnValue.Field[crate::support::server::Http3::addr].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["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", "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"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::async_impl::body::with_read_timeout", "Argument[1]", "ReturnValue.Field[crate::async_impl::body::ReadTimeoutBody::timeout]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::error::cast_to_internal_error", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::delete", "Argument[0]", "transmission", "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", "::delete", "Argument[0]", "transmission", "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", "::call", "Argument[0]", "log-injection", "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::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", "::from_env", "ReturnValue", "environment", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket.model.yml b/rust/ql/lib/ext/generated/rocket.model.yml new file mode 100644 index 000000000000..d17297267634 --- /dev/null +++ b/rust/ql/lib/ext/generated/rocket.model.yml @@ -0,0 +1,930 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::from", "Argument[0]", "ReturnValue.Field[alloc::borrow::Cow::Borrowed(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[alloc::borrow::Cow::Owned(0)]", "value", "dfc-generated"] + - ["::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue.Field[alloc::borrow::Cow::Owned(0)]", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::finalize", "Argument[0].Field[rocket::form::from_form::MapContext::errors]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::init", "Argument[0]", "ReturnValue.Field[rocket::form::from_form::MapContext::opts]", "value", "dfc-generated"] + - ["::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue", "value", "dfc-generated"] + - ["::len_into_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::string::String::vec].Field[alloc::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::string::String::vec].Field[alloc::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] + - ["::len_into_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::on_ignite", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_ignite", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_liftoff", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_liftoff", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_request", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_request", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_response", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_response", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_response", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_shutdown", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_shutdown", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] + - ["::finalize", "Argument[0].Field[rocket::form::from_form::VecContext::errors]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::finalize", "Argument[0].Field[rocket::form::from_form::VecContext::items]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::init", "Argument[0]", "ReturnValue.Field[rocket::form::from_form::VecContext::opts]", "value", "dfc-generated"] + - ["::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] + - ["::len_into_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_collection", "Argument[self].Field[alloc::vec::Vec::len]", "ReturnValue.Field[smallvec::SmallVec::capacity]", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::or_error", "Argument[0]", "ReturnValue.Field[rocket::outcome::Outcome::Error(0)]", "value", "dfc-generated"] + - ["::or_error", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Success(0)]", "value", "dfc-generated"] + - ["::or_forward", "Argument[0]", "ReturnValue.Field[rocket::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] + - ["::or_forward", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Success(0)]", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_uri_param", "Argument[0].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[std::fs::File::inner]", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::or_error", "Argument[0]", "ReturnValue.Field[rocket::outcome::Outcome::Error(0)].Field[0]", "value", "dfc-generated"] + - ["::or_error", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Error(0)].Field[1]", "value", "dfc-generated"] + - ["::or_error", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Success(0)]", "value", "dfc-generated"] + - ["::or_forward", "Argument[0].Field[0]", "ReturnValue.Field[rocket::outcome::Outcome::Forward(0)].Field[0]", "value", "dfc-generated"] + - ["::or_forward", "Argument[0].Field[1]", "ReturnValue.Field[rocket::outcome::Outcome::Forward(0)].Field[1]", "value", "dfc-generated"] + - ["::or_forward", "Argument[0]", "ReturnValue.Field[rocket::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] + - ["::or_forward", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Success(0)]", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[std::fs::File::inner]", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[databases::diesel_mysql::Db(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[databases::diesel_mysql::Db(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[databases::sqlx::Db(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[databases::sqlx::Db(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::close", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::init", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_ignite", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::on_ignite", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_ignite", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_request", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::handle", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::handle", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::handle", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::close", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::get", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::init", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_param", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::file_path", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::with_span", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[rocket::catcher::catcher::StaticInfo::handler]", "ReturnValue.Field[rocket::catcher::catcher::Catcher::handler].Reference", "value", "dfc-generated"] + - ["::map_base", "Argument[self].Field[rocket::catcher::catcher::Catcher::base]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map_base", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rocket::catcher::catcher::Catcher::handler].Reference", "value", "dfc-generated"] + - ["::profile", "Argument[self].Field[rocket::config::config::Config::profile].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::profile", "Argument[self].Field[rocket::config::config::Config::profile]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::ca_certs", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::mandatory", "Argument[0]", "Argument[self].Field[rocket::config::tls::MutualTls::mandatory]", "value", "dfc-generated"] + - ["::mandatory", "Argument[0]", "ReturnValue.Field[rocket::config::tls::MutualTls::mandatory]", "value", "dfc-generated"] + - ["::mandatory", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::certs", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::key", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::mutual", "Argument[self].Field[rocket::config::tls::TlsConfig::mutual].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::prefer_server_cipher_order", "Argument[self].Field[rocket::config::tls::TlsConfig::prefer_server_cipher_order]", "ReturnValue", "value", "dfc-generated"] + - ["::to_native_config", "Argument[self].Field[rocket::config::tls::TlsConfig::prefer_server_cipher_order]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[rocket_http::tls::listener::Config::prefer_server_order]", "value", "dfc-generated"] + - ["::with_ciphers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_mutual", "Argument[0]", "Argument[self].Field[rocket::config::tls::TlsConfig::mutual].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::with_mutual", "Argument[0]", "ReturnValue.Field[rocket::config::tls::TlsConfig::mutual].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::with_mutual", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_preferred_server_cipher_order", "Argument[0]", "Argument[self].Field[rocket::config::tls::TlsConfig::prefer_server_cipher_order]", "value", "dfc-generated"] + - ["::with_preferred_server_cipher_order", "Argument[0]", "ReturnValue.Field[rocket::config::tls::TlsConfig::prefer_server_cipher_order]", "value", "dfc-generated"] + - ["::with_preferred_server_cipher_order", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[rocket::cookies::CookieJar::config]", "ReturnValue.Field[rocket::cookies::CookieJar::config]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::cookies::CookieJar::jar]", "value", "dfc-generated"] + - ["::from", "Argument[1]", "ReturnValue.Field[rocket::cookies::CookieJar::config]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket::cookies::CookieJar::config]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::data::capped::Capped::value]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::data::capped::Capped::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[rocket::data::capped::Capped::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_value", "Argument[0].Field[rocket::form::field::ValueField::value]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[rocket::data::capped::Capped::value]", "value", "dfc-generated"] + - ["::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::complete", "Argument[0]", "ReturnValue.Field[rocket::data::capped::Capped::value]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[rocket::data::capped::Capped::value]", "ReturnValue", "value", "dfc-generated"] + - ["::is_complete", "Argument[self].Field[rocket::data::capped::Capped::n].Field[rocket::data::capped::N::complete]", "ReturnValue", "value", "dfc-generated"] + - ["::map", "Argument[0].ReturnValue", "ReturnValue.Field[rocket::data::capped::Capped::value]", "value", "dfc-generated"] + - ["::map", "Argument[self].Field[rocket::data::capped::Capped::n]", "ReturnValue.Field[rocket::data::capped::Capped::n]", "value", "dfc-generated"] + - ["::map", "Argument[self].Field[rocket::data::capped::Capped::value]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket::data::capped::Capped::value]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rocket::data::capped::Capped::n]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::data::capped::N::written]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[1]", "ReturnValue.Field[rocket::outcome::Outcome::Success(0)]", "value", "dfc-generated"] + - ["::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::local", "Argument[0]", "ReturnValue.Field[rocket::data::data::Data::buffer]", "value", "dfc-generated"] + - ["::peek", "Argument[self].Field[rocket::data::data::Data::buffer].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::peek_complete", "Argument[self].Field[rocket::data::data::Data::is_complete]", "ReturnValue", "value", "dfc-generated"] + - ["::hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::data::data_stream::StreamReader::inner].Field[rocket::data::data_stream::StreamKind::Body(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::data::data_stream::StreamReader::inner].Field[rocket::data::data_stream::StreamKind::Multipart(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::data::io_stream::IoStream::kind].Field[rocket::data::io_stream::IoStreamKind::Upgraded(0)]", "value", "dfc-generated"] + - ["::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::error::Error::kind]", "value", "dfc-generated"] + - ["::kind", "Argument[self].Field[rocket::error::Error::kind]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket::error::Error::kind]", "value", "dfc-generated"] + - ["::shutdown", "Argument[0]", "ReturnValue.Field[rocket::error::Error::kind].Field[rocket::error::ErrorKind::Shutdown(0)]", "value", "dfc-generated"] + - ["::io", "Argument[self].Field[rocket::ext::CancellableIo::io].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rocket::ext::CancellableIo::io].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[rocket::ext::CancellableIo::grace]", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[rocket::ext::CancellableIo::mercy]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket::ext::CancellableListener::trigger]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rocket::ext::CancellableListener::listener]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[rocket::ext::CancellableListener::grace].Field[core::time::Duration::secs]", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[rocket::ext::CancellableListener::mercy].Field[core::time::Duration::secs]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::get_ref", "Argument[self].Field[rocket::ext::Chain::first]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[rocket::ext::Chain::second]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket::ext::Chain::first]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rocket::ext::Chain::second]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::ext::Chain::done_first]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::ext::Chain::first]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::ext::Chain::second]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::ext::Chain::done_first]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::ext::Chain::first]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::ext::Chain::second]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket::ext::Join::a]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rocket::ext::Join::b]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::ext::ReaderStream::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::ext::ReaderStream::cap]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::ext::ReaderStream::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::ext::ReaderStream::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::ext::ReaderStream::cap]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::ext::ReaderStream::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::info", "Argument[self].Field[rocket::fairing::ad_hoc::AdHoc::name]", "ReturnValue.Field[rocket::fairing::info_kind::Info::name]", "value", "dfc-generated"] + - ["::on_ignite", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::on_ignite", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_ignite", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_liftoff", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_liftoff", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_request", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_request", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_response", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_response", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_response", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_shutdown", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_shutdown", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_ignite", "Argument[0]", "ReturnValue.Field[rocket::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] + - ["::on_liftoff", "Argument[0]", "ReturnValue.Field[rocket::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] + - ["::on_request", "Argument[0]", "ReturnValue.Field[rocket::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] + - ["::on_response", "Argument[0]", "ReturnValue.Field[rocket::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] + - ["::on_shutdown", "Argument[0]", "ReturnValue.Field[rocket::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] + - ["::try_on_ignite", "Argument[0]", "ReturnValue.Field[rocket::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] + - ["::audit", "Argument[self].Field[rocket::fairing::fairings::Fairings::failures]", "ReturnValue.Field[core::result::Result::Err(0)].Reference", "value", "dfc-generated"] + - ["::handle_ignite", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::push_error", "Argument[0].Field[rocket::form::error::Error::kind].Field[rocket::form::error::ErrorKind::Custom(0)]", "Argument[self].Field[rocket::form::context::Context::status]", "value", "dfc-generated"] + - ["::status", "Argument[self].Field[rocket::form::context::Context::status]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::form::error::Error::kind]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::set_entity", "Argument[0]", "Argument[self].Field[rocket::form::error::Error::entity]", "value", "dfc-generated"] + - ["::status", "Argument[self].Field[rocket::form::error::Error::kind].Field[rocket::form::error::ErrorKind::Custom(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::with_entity", "Argument[0]", "Argument[self].Field[rocket::form::error::Error::entity]", "value", "dfc-generated"] + - ["::with_entity", "Argument[0]", "ReturnValue.Field[rocket::form::error::Error::entity]", "value", "dfc-generated"] + - ["::with_entity", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_value", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue.Field[rocket::form::error::ErrorKind::Custom(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue.Field[rocket::form::error::ErrorKind::InvalidLength::min]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue.Field[rocket::form::error::ErrorKind::OutOfRange::start]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[1]", "ReturnValue.Field[rocket::form::error::ErrorKind::Custom(1)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[1]", "ReturnValue.Field[rocket::form::error::ErrorKind::InvalidLength::max]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[1]", "ReturnValue.Field[rocket::form::error::ErrorKind::OutOfRange::end]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::form::error::ErrorKind::Custom(1)]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::form::error::Errors(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::form::error::Errors(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[rocket::form::error::Errors(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::with_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_value", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::shift", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[1]", "ReturnValue.Field[rocket::form::field::ValueField::value]", "value", "dfc-generated"] + - ["::from_value", "Argument[0]", "ReturnValue.Field[rocket::form::field::ValueField::value]", "value", "dfc-generated"] + - ["::shift", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::form::form::Form(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::form::form::Form(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[rocket::form::form::Form(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[rocket::form::form::Form(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::form::lenient::Lenient(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::form::lenient::Lenient(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[rocket::form::lenient::Lenient(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[rocket::form::lenient::Lenient(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0].Field[core::option::Option::Some(0)]", "ReturnValue.Field[rocket::form::name::buf::NameBuf::left]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue.Field[rocket::form::name::buf::NameBuf::left].Field[0]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[1]", "ReturnValue.Field[rocket::form::name::buf::NameBuf::right]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[rocket::form::name::view::NameView::name].Element", "ReturnValue.Field[rocket::form::name::buf::NameBuf::left].Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::form::name::buf::NameBuf::left]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[rocket::form::name::buf::NameBuf::right].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue.Field[rocket::form::name::buf::NameBuf::right].Field[alloc::borrow::Cow::Owned(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::form::name::key::Key(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Field[0]", "ReturnValue.Reference.Reference", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Field[rocket::form::name::key::Key(0)]", "ReturnValue.Reference.Reference", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::form::name::name::Name(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Field[rocket::form::name::name::Name(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Field[rocket::form::name::view::NameView::name].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_name", "Argument[self].Field[rocket::form::name::view::NameView::name].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::parent", "Argument[self].Field[rocket::form::name::view::NameView::name].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::shift", "Argument[self].Field[rocket::form::name::view::NameView::end]", "Argument[self].Reference.Field[rocket::form::name::view::NameView::start]", "value", "dfc-generated"] + - ["::shift", "Argument[self].Field[rocket::form::name::view::NameView::name]", "Argument[self].Reference.Field[rocket::form::name::view::NameView::name]", "value", "dfc-generated"] + - ["::source", "Argument[self].Field[rocket::form::name::view::NameView::name]", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[rocket::form::parser::RawStrParser::source].Element", "Argument[self].Field[rocket::form::parser::RawStrParser::source].Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket::form::parser::RawStrParser::buffer]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rocket::form::parser::RawStrParser::source]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::form::strict::Strict(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::form::strict::Strict(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[rocket::form::strict::Strict(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[rocket::form::strict::Strict(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::fs::named_file::NamedFile(1)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[rocket::fs::named_file::NamedFile(1)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::file", "Argument[self].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::file", "Argument[self].Field[rocket::fs::named_file::NamedFile(1)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::file_mut", "Argument[self].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::file_mut", "Argument[self].Field[rocket::fs::named_file::NamedFile(1)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::path", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::take_file", "Argument[self].Field[1]", "ReturnValue", "value", "dfc-generated"] + - ["::take_file", "Argument[self].Field[rocket::fs::named_file::NamedFile(1)]", "ReturnValue", "value", "dfc-generated"] + - ["::handle", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::handle", "Argument[1]", "ReturnValue.Field[rocket::outcome::Outcome::Forward(0)].Field[0]", "value", "dfc-generated"] + - ["::handle", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::handle", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rocket::fs::server::FileServer::options]", "value", "dfc-generated"] + - ["::rank", "Argument[0]", "Argument[self].Field[rocket::fs::server::FileServer::rank]", "value", "dfc-generated"] + - ["::rank", "Argument[0]", "ReturnValue.Field[rocket::fs::server::FileServer::rank]", "value", "dfc-generated"] + - ["::rank", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[rocket::fs::temp_file::TempFile::File::len].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::len_into_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::len", "Argument[self].Field[rocket::fs::temp_file::TempFile::File::len].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::open", "Argument[self].Field[rocket::fs::temp_file::TempFile::Buffered::content].Reference", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio_util::either::Either::Right(0)]", "value", "dfc-generated"] + - ["::raw_name", "Argument[self].Reference.Field[rocket::fs::temp_file::TempFile::File::file_name]", "ReturnValue", "value", "dfc-generated"] + - ["::_new", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[rocket::local::asynchronous::client::Client::tracked]", "value", "dfc-generated"] + - ["::_rocket", "Argument[self].Field[rocket::local::asynchronous::client::Client::rocket]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::_with_raw_cookies", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::_with_raw_cookies_mut", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::_body_mut", "Argument[self].Field[rocket::local::asynchronous::request::LocalRequest::data]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::_request", "Argument[self].Field[rocket::local::asynchronous::request::LocalRequest::request]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::_request_mut", "Argument[self].Field[rocket::local::asynchronous::request::LocalRequest::request]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookies", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::identity", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket::local::asynchronous::request::LocalRequest::client]", "value", "dfc-generated"] + - ["::private_cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::remote", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::_cookies", "Argument[self].Field[rocket::local::asynchronous::response::LocalResponse::cookies]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::_response", "Argument[self].Field[rocket::local::asynchronous::response::LocalResponse::response]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["::_test", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::_with_raw_cookies", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[rocket::local::blocking::client::Client::inner].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cookies", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::identity", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket::local::blocking::request::LocalRequest::client]", "value", "dfc-generated"] + - ["::private_cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::remote", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::_cookies", "Argument[self].Field[rocket::local::blocking::response::LocalResponse::inner].Field[rocket::local::asynchronous::response::LocalResponse::cookies]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::and_then", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::and_then", "Argument[self].Field[rocket::outcome::Outcome::Error(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Error(0)]", "value", "dfc-generated"] + - ["::and_then", "Argument[self].Field[rocket::outcome::Outcome::Forward(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] + - ["::and_then", "Argument[self].Field[rocket::outcome::Outcome::Success(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Reference.Field[rocket::outcome::Outcome::Error(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Error(0)].Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Reference.Field[rocket::outcome::Outcome::Forward(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Forward(0)].Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Reference.Field[rocket::outcome::Outcome::Success(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Success(0)].Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference.Field[rocket::outcome::Outcome::Error(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Error(0)].Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference.Field[rocket::outcome::Outcome::Forward(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Forward(0)].Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference.Field[rocket::outcome::Outcome::Success(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Success(0)].Reference", "value", "dfc-generated"] + - ["::error_then", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::error_then", "Argument[self].Field[rocket::outcome::Outcome::Error(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::error_then", "Argument[self].Field[rocket::outcome::Outcome::Forward(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] + - ["::error_then", "Argument[self].Field[rocket::outcome::Outcome::Success(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Success(0)]", "value", "dfc-generated"] + - ["::expect", "Argument[self].Field[rocket::outcome::Outcome::Success(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::failed", "Argument[self].Field[rocket::outcome::Outcome::Error(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::forward_then", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::forward_then", "Argument[self].Field[rocket::outcome::Outcome::Error(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Error(0)]", "value", "dfc-generated"] + - ["::forward_then", "Argument[self].Field[rocket::outcome::Outcome::Forward(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::forward_then", "Argument[self].Field[rocket::outcome::Outcome::Success(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Success(0)]", "value", "dfc-generated"] + - ["::forwarded", "Argument[self].Field[rocket::outcome::Outcome::Forward(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::map", "Argument[0].ReturnValue", "ReturnValue.Field[rocket::outcome::Outcome::Success(0)]", "value", "dfc-generated"] + - ["::map", "Argument[self].Field[rocket::outcome::Outcome::Error(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Error(0)]", "value", "dfc-generated"] + - ["::map", "Argument[self].Field[rocket::outcome::Outcome::Forward(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] + - ["::map", "Argument[self].Field[rocket::outcome::Outcome::Success(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map_error", "Argument[0].ReturnValue", "ReturnValue.Field[rocket::outcome::Outcome::Error(0)]", "value", "dfc-generated"] + - ["::map_error", "Argument[self].Field[rocket::outcome::Outcome::Error(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map_error", "Argument[self].Field[rocket::outcome::Outcome::Forward(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] + - ["::map_error", "Argument[self].Field[rocket::outcome::Outcome::Success(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Success(0)]", "value", "dfc-generated"] + - ["::map_forward", "Argument[0].ReturnValue", "ReturnValue.Field[rocket::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] + - ["::map_forward", "Argument[self].Field[rocket::outcome::Outcome::Error(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Error(0)]", "value", "dfc-generated"] + - ["::map_forward", "Argument[self].Field[rocket::outcome::Outcome::Forward(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map_forward", "Argument[self].Field[rocket::outcome::Outcome::Success(0)]", "ReturnValue.Field[rocket::outcome::Outcome::Success(0)]", "value", "dfc-generated"] + - ["::ok_map_error", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::ok_map_error", "Argument[self].Field[rocket::outcome::Outcome::Error(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::ok_map_error", "Argument[self].Field[rocket::outcome::Outcome::Forward(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::ok_map_error", "Argument[self].Field[rocket::outcome::Outcome::Success(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::ok_map_forward", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::ok_map_forward", "Argument[self].Field[rocket::outcome::Outcome::Error(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::ok_map_forward", "Argument[self].Field[rocket::outcome::Outcome::Forward(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::ok_map_forward", "Argument[self].Field[rocket::outcome::Outcome::Success(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::pin", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::succeeded", "Argument[self].Field[rocket::outcome::Outcome::Success(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::success_or", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::success_or", "Argument[self].Field[rocket::outcome::Outcome::Success(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::success_or_else", "Argument[0].ReturnValue", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::success_or_else", "Argument[self].Field[rocket::outcome::Outcome::Success(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::unwrap", "Argument[self].Field[rocket::outcome::Outcome::Success(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::as_state_ref", "Argument[self]", "ReturnValue.Field[rocket::phase::StateRef::Build(0)]", "value", "dfc-generated"] + - ["::into_state", "Argument[self]", "ReturnValue.Field[rocket::phase::State::Build(0)]", "value", "dfc-generated"] + - ["::as_state_ref", "Argument[self]", "ReturnValue.Field[rocket::phase::StateRef::Ignite(0)]", "value", "dfc-generated"] + - ["::into_state", "Argument[self]", "ReturnValue.Field[rocket::phase::State::Ignite(0)]", "value", "dfc-generated"] + - ["::as_state_ref", "Argument[self]", "ReturnValue.Field[rocket::phase::StateRef::Orbit(0)]", "value", "dfc-generated"] + - ["::into_state", "Argument[self]", "ReturnValue.Field[rocket::phase::State::Orbit(0)]", "value", "dfc-generated"] + - ["::client_ip", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::cookies", "Argument[self].Field[rocket::request::request::Request::state].Field[rocket::request::request::RequestState::cookies]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::cookies_mut", "Argument[self].Field[rocket::request::request::Request::state].Field[rocket::request::request::RequestState::cookies]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::headers", "Argument[self].Field[rocket::request::request::Request::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket::request::request::Request::state].Field[rocket::request::request::RequestState::rocket]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[rocket::request::request::Request::uri]", "value", "dfc-generated"] + - ["::remote", "Argument[self].Field[rocket::request::request::Request::connection].Field[rocket::request::request::ConnectionMeta::remote]", "ReturnValue", "value", "dfc-generated"] + - ["::rocket", "Argument[self].Field[rocket::request::request::Request::state].Field[rocket::request::request::RequestState::rocket]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::routed_segments", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::set_uri", "Argument[0]", "Argument[self].Field[rocket::request::request::Request::uri]", "value", "dfc-generated"] + - ["::uri", "Argument[self].Field[rocket::request::request::Request::uri]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::max_chunk_size", "Argument[self].Field[rocket::response::body::Body::max_chunk]", "ReturnValue", "value", "dfc-generated"] + - ["::preset_size", "Argument[self].Field[rocket::response::body::Body::size]", "ReturnValue", "value", "dfc-generated"] + - ["::set_max_chunk_size", "Argument[0]", "Argument[self].Field[rocket::response::body::Body::max_chunk]", "value", "dfc-generated"] + - ["::with_sized", "Argument[1]", "ReturnValue.Field[rocket::response::body::Body::size]", "value", "dfc-generated"] + - ["::with_unsized", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::response::debug::Debug(0)]", "value", "dfc-generated"] + - ["::error", "Argument[0]", "ReturnValue.Field[rocket::response::flash::Flash::inner]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket::response::flash::Flash::inner]", "value", "dfc-generated"] + - ["::success", "Argument[0]", "ReturnValue.Field[rocket::response::flash::Flash::inner]", "value", "dfc-generated"] + - ["::warning", "Argument[0]", "ReturnValue.Field[rocket::response::flash::Flash::inner]", "value", "dfc-generated"] + - ["::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::header_adjoin", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::join", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_chunk_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::merge", "Argument[0].Field[rocket::response::response::Response::body]", "Argument[self].Field[rocket::response::response::Builder::response].Field[rocket::response::response::Response::body]", "value", "dfc-generated"] + - ["::merge", "Argument[0].Field[rocket::response::response::Response::body]", "ReturnValue.Field[rocket::response::response::Builder::response].Field[rocket::response::response::Response::body]", "value", "dfc-generated"] + - ["::merge", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket::response::response::Builder::response]", "value", "dfc-generated"] + - ["::raw_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::raw_header_adjoin", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::sized_body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::status", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::streamed_body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::upgrade", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::body", "Argument[self].Field[rocket::response::response::Response::body]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::body_mut", "Argument[self].Field[rocket::response::response::Response::body]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::build_from", "Argument[0]", "ReturnValue.Field[rocket::response::response::Builder::response]", "value", "dfc-generated"] + - ["::headers", "Argument[self].Field[rocket::response::response::Response::headers]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::join", "Argument[0].Field[rocket::response::response::Response::body]", "Argument[self].Field[rocket::response::response::Response::body]", "value", "dfc-generated"] + - ["::join", "Argument[0].Field[rocket::response::response::Response::status]", "Argument[self].Field[rocket::response::response::Response::status]", "value", "dfc-generated"] + - ["::merge", "Argument[0].Field[rocket::response::response::Response::body]", "Argument[self].Field[rocket::response::response::Response::body]", "value", "dfc-generated"] + - ["::set_status", "Argument[0]", "Argument[self].Field[rocket::response::response::Response::status].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::status", "Argument[self].Field[rocket::response::response::Response::status].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::tagged_body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::response::stream::bytes::ByteStream(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::response::stream::one::One(0)].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::response::stream::reader::ReaderStream::stream]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::response::stream::reader::ReaderStream::state]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::response::stream::reader::ReaderStream::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::response::stream::reader::ReaderStream::state]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[rocket::response::stream::reader::ReaderStream::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::event", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::id", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::retry", "Argument[0]", "ReturnValue.Field[rocket::response::stream::sse::Event::retry].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::with_comment", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::with_retry", "Argument[0]", "Argument[self].Field[rocket::response::stream::sse::Event::retry].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::with_retry", "Argument[0]", "ReturnValue.Field[rocket::response::stream::sse::Event::retry].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::with_retry", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::response::stream::sse::EventStream::stream]", "value", "dfc-generated"] + - ["::heartbeat", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::response::stream::text::TextStream(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::rkt::Rocket(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::rkt::Rocket(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[rocket::rkt::Rocket(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::attach", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::configure", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::default_tcp_http_server", "Argument[self]", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] + - ["::manage", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mount", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::register", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::map_base", "Argument[self].Field[rocket::route::route::Route::uri].Field[rocket::route::uri::RouteUri::base]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map_base", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket::route::route::Route::method]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[rocket::route::route::Route::handler].Reference", "value", "dfc-generated"] + - ["::ranked", "Argument[1]", "ReturnValue.Field[rocket::route::route::Route::method]", "value", "dfc-generated"] + - ["::ranked", "Argument[3]", "ReturnValue.Field[rocket::route::route::Route::handler].Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::route::uri::RouteUri::origin]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Field[rocket::route::uri::RouteUri::source]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::default_rank", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::query", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::serde::json::Json(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::serde::json::Json(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[rocket::serde::json::Json(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue.Field[rocket::serde::json::Json(0)]", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[rocket::serde::json::Json(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket::serde::msgpack::MsgPack(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::serde::msgpack::MsgPack(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[rocket::serde::msgpack::MsgPack(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[rocket::serde::msgpack::MsgPack(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::allow", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::block", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::on_liftoff", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_liftoff", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_response", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_response", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::disable", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::enable", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::state::State(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::inner", "Argument[self].Field[rocket::state::State(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[rocket::trip_wire::TripWire::state].Reference", "ReturnValue.Field[rocket::trip_wire::TripWire::state]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[rocket::trip_wire::TripWire::state]", "ReturnValue.Field[rocket::trip_wire::TripWire::state]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket::trip_wire::TripWire::state]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_codegen::attribute::param::Dynamic::name]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::parse", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[rocket_codegen::attribute::param::parse::Error::segment]", "value", "dfc-generated"] + - ["::parse", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[rocket_codegen::attribute::param::parse::Error::source]", "value", "dfc-generated"] + - ["::parse", "Argument[1]", "ReturnValue.Field[core::result::Result::Err(0)].Field[rocket_codegen::attribute::param::parse::Error::source_span]", "value", "dfc-generated"] + - ["::parse", "Argument[1]", "ReturnValue.Field[core::result::Result::Err(0)].Field[rocket_codegen::attribute::param::parse::Error::span]", "value", "dfc-generated"] + - ["::parse", "Argument[1]", "ReturnValue.Field[rocket_codegen::attribute::param::Parameter::Static(0)].Field[rocket_codegen::name::Name::span]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_codegen::attribute::param::Guard::source]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_codegen::attribute::param::Guard::source]", "value", "dfc-generated"] + - ["::from", "Argument[1]", "ReturnValue.Field[rocket_codegen::attribute::param::Guard::fn_ident]", "value", "dfc-generated"] + - ["::from", "Argument[2]", "ReturnValue.Field[rocket_codegen::attribute::param::Guard::ty]", "value", "dfc-generated"] + - ["::dynamic", "Argument[self].Field[rocket_codegen::attribute::param::Parameter::Dynamic(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::dynamic_mut", "Argument[self].Field[rocket_codegen::attribute::param::Parameter::Dynamic(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::guard", "Argument[self].Field[rocket_codegen::attribute::param::Parameter::Guard(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::ignored", "Argument[self].Field[rocket_codegen::attribute::param::Parameter::Ignored(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::parse", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[rocket_codegen::attribute::param::parse::Error::segment]", "value", "dfc-generated"] + - ["::parse", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[rocket_codegen::attribute::param::parse::Error::source]", "value", "dfc-generated"] + - ["::parse", "Argument[1]", "ReturnValue.Field[core::result::Result::Err(0)].Field[rocket_codegen::attribute::param::parse::Error::source_span]", "value", "dfc-generated"] + - ["::parse", "Argument[1]", "ReturnValue.Field[core::result::Result::Err(0)].Field[rocket_codegen::attribute::param::parse::Error::span]", "value", "dfc-generated"] + - ["::r#static", "Argument[self].Field[rocket_codegen::attribute::param::Parameter::Static(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::take_dynamic", "Argument[self].Field[rocket_codegen::attribute::param::Parameter::Dynamic(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket_codegen::attribute::param::parse::Error::segment]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket_codegen::attribute::param::parse::Error::source]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rocket_codegen::attribute::param::parse::Error::source_span]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rocket_codegen::attribute::param::parse::Error::span]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[rocket_codegen::attribute::param::parse::Error::kind]", "value", "dfc-generated"] + - ["::source", "Argument[0]", "Argument[self].Field[rocket_codegen::attribute::param::parse::Error::source]", "value", "dfc-generated"] + - ["::source", "Argument[0]", "ReturnValue.Field[rocket_codegen::attribute::param::parse::Error::source]", "value", "dfc-generated"] + - ["::source", "Argument[1]", "Argument[self].Field[rocket_codegen::attribute::param::parse::Error::source_span]", "value", "dfc-generated"] + - ["::source", "Argument[1]", "ReturnValue.Field[rocket_codegen::attribute::param::parse::Error::source_span]", "value", "dfc-generated"] + - ["::source", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[rocket_codegen::attribute::route::parse::Route::attr]", "value", "dfc-generated"] + - ["::from", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[rocket_codegen::attribute::route::parse::Route::handler]", "value", "dfc-generated"] + - ["::upgrade_dynamic", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[rocket_codegen::attribute::param::Guard::source]", "value", "dfc-generated"] + - ["::upgrade_param", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_codegen::attribute::route::parse::RouteUri::origin]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_expr", "Argument[self].Field[rocket_codegen::bang::uri_parsing::ArgExpr::Expr(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::unwrap_expr", "Argument[self].Field[rocket_codegen::bang::uri_parsing::ArgExpr::Expr(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_codegen::bang::uri_parsing::UriLit(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_codegen::derive::form_field::FieldName::Cased(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_codegen::derive::form_field::FieldName::Uncased(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::respanned", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[rocket_codegen::name::Name::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_codegen::name::Name::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Field[rocket_codegen::name::Name::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rocket_codegen::name::Name::span]", "value", "dfc-generated"] + - ["::span", "Argument[self].Field[rocket_codegen::name::Name::span]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_codegen::proc_macro_ext::Diagnostics(0)]", "value", "dfc-generated"] + - ["::head_err_or", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_codegen::proc_macro_ext::StringLit(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_codegen::syn_ext::Child::ty]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[rocket_codegen::syn_ext::Child::ty].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue.Field[rocket_codegen::syn_ext::Child::ty].Field[alloc::borrow::Cow::Owned(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_db_pools::database::Connection(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[rocket_db_pools::database::Connection(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[rocket_db_pools::database::Connection(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::info", "Argument[self].Field[0].Field[core::option::Option::Some(0)]", "ReturnValue.Field[rocket::fairing::info_kind::Info::name]", "value", "dfc-generated"] + - ["::info", "Argument[self].Field[rocket_db_pools::database::Initializer(0)].Field[core::option::Option::Some(0)]", "ReturnValue.Field[rocket::fairing::info_kind::Info::name]", "value", "dfc-generated"] + - ["::on_ignite", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::on_ignite", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::on_ignite", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_ignite", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_shutdown", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_shutdown", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::context", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::context", "Argument[self].Field[rocket_dyn_templates::context::manager::ContextManager(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket_dyn_templates::context::manager::ContextManager(0)]", "value", "dfc-generated"] + - ["::on_ignite", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::on_ignite", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::on_ignite", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_ignite", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_liftoff", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_liftoff", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::custom", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_custom", "Argument[0]", "ReturnValue.Field[rocket_dyn_templates::fairing::TemplateFairing::callback].Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_http::header::accept::QMediaType(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_http::header::accept::QMediaType(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::media_type", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::media_type", "Argument[self].Field[rocket_http::header::accept::QMediaType(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::weight", "Argument[self].Field[1]", "ReturnValue", "value", "dfc-generated"] + - ["::weight", "Argument[self].Field[rocket_http::header::accept::QMediaType(1)]", "ReturnValue", "value", "dfc-generated"] + - ["::weight_or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::weight_or", "Argument[self].Field[1].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::weight_or", "Argument[self].Field[rocket_http::header::accept::QMediaType(1)].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_http::header::content_type::ContentType(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_http::header::content_type::ContentType(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::media_type", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::media_type", "Argument[self].Field[rocket_http::header::content_type::ContentType(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::with_params", "Argument[self].Field[0]", "ReturnValue.Field[rocket_http::header::content_type::ContentType(0)]", "value", "dfc-generated"] + - ["::with_params", "Argument[self].Field[rocket_http::header::content_type::ContentType(0)]", "ReturnValue.Field[rocket_http::header::content_type::ContentType(0)]", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[rocket_http::header::header::Header::name]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::value", "Argument[self].Field[rocket_http::header::header::Header::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::const_new", "Argument[2]", "ReturnValue.Field[rocket_http::header::media_type::MediaType::params].Field[rocket_http::header::media_type::MediaParams::Static(0)]", "value", "dfc-generated"] + - ["::known_source", "Argument[self].Field[rocket_http::header::media_type::MediaType::source].Field[rocket_http::header::media_type::Source::Known(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new_known", "Argument[0]", "ReturnValue.Field[rocket_http::header::media_type::MediaType::source].Field[rocket_http::header::media_type::Source::Known(0)]", "value", "dfc-generated"] + - ["::new_known", "Argument[3]", "ReturnValue.Field[rocket_http::header::media_type::MediaType::params].Field[rocket_http::header::media_type::MediaParams::Static(0)]", "value", "dfc-generated"] + - ["::with_params", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_http::header::media_type::Source::Custom(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket_http::listener::Incoming::listener]", "value", "dfc-generated"] + - ["::nodelay", "Argument[0]", "Argument[self].Field[rocket_http::listener::Incoming::nodelay]", "value", "dfc-generated"] + - ["::nodelay", "Argument[0]", "ReturnValue.Field[rocket_http::listener::Incoming::nodelay]", "value", "dfc-generated"] + - ["::nodelay", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::sleep_on_errors", "Argument[0]", "Argument[self].Field[rocket_http::listener::Incoming::sleep_on_errors]", "value", "dfc-generated"] + - ["::sleep_on_errors", "Argument[0]", "ReturnValue.Field[rocket_http::listener::Incoming::sleep_on_errors]", "value", "dfc-generated"] + - ["::sleep_on_errors", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference.Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference.Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[pear::input::cursor::Extent::end]", "ReturnValue.Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[pear::input::cursor::Extent::start]", "ReturnValue.Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_http::parse::indexed::Indexed::Concrete(0)]", "value", "dfc-generated"] + - ["::add", "Argument[0].Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] + - ["::add", "Argument[self].Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] + - ["::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_owned", "Argument[self].Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] + - ["::coerce", "Argument[self].Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] + - ["::coerce", "Argument[self].Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] + - ["::coerce_lifetime", "Argument[self].Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] + - ["::coerce_lifetime", "Argument[self].Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] + - ["::from_cow_source", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_source", "Argument[0].Field[core::option::Option::Some(0)].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_source", "Argument[self].Reference.Field[rocket_http::parse::indexed::Indexed::Concrete(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::indices", "Argument[self].Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::indices", "Argument[self].Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::into_concrete", "Argument[self].Field[rocket_http::parse::indexed::Indexed::Concrete(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[rocket_http::parse::uri::error::Error::index]", "ReturnValue.Field[rocket_http::parse::uri::error::Error::index]", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[rocket_http::parse::uri::error::Error::index]", "ReturnValue", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Field[rocket_http::raw_str::RawStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[rocket_http::raw_str::RawStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_str", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Field[rocket_http::raw_str::RawStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::html_escape", "Argument[self].Field[0]", "ReturnValue.Field[alloc::borrow::Cow::Borrowed(0)].Reference", "value", "dfc-generated"] + - ["::html_escape", "Argument[self].Field[rocket_http::raw_str::RawStr(0)]", "ReturnValue.Field[alloc::borrow::Cow::Borrowed(0)].Reference", "value", "dfc-generated"] + - ["::split_at_byte", "Argument[self].Element", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] + - ["::split_at_byte", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::url_decode", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::url_decode_lossy", "Argument[self].Field[0]", "ReturnValue.Field[alloc::borrow::Cow::Borrowed(0)].Reference", "value", "dfc-generated"] + - ["::url_decode_lossy", "Argument[self].Field[rocket_http::raw_str::RawStr(0)]", "ReturnValue.Field[alloc::borrow::Cow::Borrowed(0)].Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_http::raw_str::RawStrBuf(0)]", "value", "dfc-generated"] + - ["::into_string", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_string", "Argument[self].Field[rocket_http::raw_str::RawStrBuf(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::respond_to", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket_http::status::Status::code]", "value", "dfc-generated"] + - ["::visit_i64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::visit_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::peer_address", "Argument[self].Field[rocket_http::tls::listener::TlsStream::remote]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::peer_certificates", "Argument[self].Field[rocket_http::tls::listener::TlsStream::certs].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::peer_certificates", "Argument[self].Field[rocket_http::tls::listener::TlsStream::certs]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_http::tls::mtls::Certificate::x509].Field[x509_parser::certificate::X509Certificate::tbs_certificate]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_bytes", "Argument[self].Field[rocket_http::tls::mtls::Certificate::data].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::has_serial", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0].Field[nom::internal::Err::Error(0)]", "ReturnValue.Field[rocket_http::tls::mtls::Error::Parse(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[nom::internal::Err::Failure(0)]", "ReturnValue.Field[rocket_http::tls::mtls::Error::Parse(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[nom::internal::Err::Incomplete(0)].Field[nom::internal::Needed::Size(0)]", "ReturnValue.Field[rocket_http::tls::mtls::Error::Incomplete(0)].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_http::tls::mtls::Name(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::try_from", "Argument[0].Field[rocket_http::uri::uri::Uri::Absolute(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[rocket_http::uri::absolute::Absolute::scheme].Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[rocket_http::uri::absolute::Absolute::scheme].Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[rocket_http::uri::absolute::Absolute::scheme].Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[rocket_http::uri::absolute::Absolute::scheme].Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] + - ["::append", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::prepend", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::authority", "Argument[self].Field[rocket_http::uri::absolute::Absolute::authority].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::const_new", "Argument[1]", "ReturnValue.Field[rocket_http::uri::absolute::Absolute::authority]", "value", "dfc-generated"] + - ["::into_normalized", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::path", "Argument[self].Field[rocket_http::uri::absolute::Absolute::path]", "ReturnValue.Field[rocket_http::uri::path_query::Path::data].Reference", "value", "dfc-generated"] + - ["::path", "Argument[self].Field[rocket_http::uri::absolute::Absolute::source]", "ReturnValue.Field[rocket_http::uri::path_query::Path::source].Reference", "value", "dfc-generated"] + - ["::query", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::raw", "Argument[2]", "ReturnValue.Field[rocket_http::uri::absolute::Absolute::authority]", "value", "dfc-generated"] + - ["::scheme", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::set_authority", "Argument[0]", "Argument[self].Field[rocket_http::uri::absolute::Absolute::authority].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::with_authority", "Argument[0]", "Argument[self].Field[rocket_http::uri::absolute::Absolute::authority].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::with_authority", "Argument[0]", "ReturnValue.Field[rocket_http::uri::absolute::Absolute::authority].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::with_authority", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::try_from", "Argument[0].Field[rocket_http::uri::uri::Uri::Asterisk(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::try_from", "Argument[0].Field[rocket_http::uri::uri::Uri::Authority(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[rocket_http::uri::authority::Authority::host].Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[rocket_http::uri::authority::Authority::host].Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[rocket_http::uri::authority::Authority::host].Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[rocket_http::uri::authority::Authority::host].Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] + - ["::const_new", "Argument[2]", "ReturnValue.Field[rocket_http::uri::authority::Authority::port]", "value", "dfc-generated"] + - ["::host", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::port", "Argument[self].Field[rocket_http::uri::authority::Authority::port]", "ReturnValue", "value", "dfc-generated"] + - ["::raw", "Argument[3]", "ReturnValue.Field[rocket_http::uri::authority::Authority::port]", "value", "dfc-generated"] + - ["::user_info", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket_http::uri::fmt::formatter::Formatter::inner]", "value", "dfc-generated"] + - ["::render", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::render", "Argument[self].Field[rocket_http::uri::fmt::formatter::PrefixedRouteUri(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::render", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::render", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::render", "Argument[self].Field[rocket_http::uri::fmt::formatter::SuffixedRouteUri(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_http::uri::host::Host(0)]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket_http::uri::host::Host(0)]", "value", "dfc-generated"] + - ["::port", "Argument[self].Field[0].Field[rocket_http::uri::authority::Authority::port]", "ReturnValue", "value", "dfc-generated"] + - ["::port", "Argument[self].Field[rocket_http::uri::host::Host(0)].Field[rocket_http::uri::authority::Authority::port]", "ReturnValue", "value", "dfc-generated"] + - ["::to_absolute", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_from", "Argument[0].Field[rocket_http::uri::uri::Uri::Origin(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::append", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::into_normalized", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::map_path", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::path", "Argument[self].Field[rocket_http::uri::origin::Origin::path]", "ReturnValue.Field[rocket_http::uri::path_query::Path::data].Reference", "value", "dfc-generated"] + - ["::path", "Argument[self].Field[rocket_http::uri::origin::Origin::source]", "ReturnValue.Field[rocket_http::uri::path_query::Path::source].Reference", "value", "dfc-generated"] + - ["::query", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::raw", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::into_owned", "Argument[self].Field[rocket_http::uri::path_query::Data::value].Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[rocket_http::uri::path_query::Data::value].Field[rocket_http::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[rocket_http::uri::path_query::Data::value].Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[rocket_http::uri::path_query::Data::value].Field[rocket_http::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[rocket_http::uri::origin::Origin::path]", "ReturnValue.Field[rocket_http::uri::reference::Reference::path]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[rocket_http::uri::origin::Origin::query]", "ReturnValue.Field[rocket_http::uri::reference::Reference::query]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[rocket_http::uri::origin::Origin::source]", "ReturnValue.Field[rocket_http::uri::reference::Reference::source]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_http::uri::reference::Reference::authority].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0].Field[rocket_http::uri::uri::Uri::Reference(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::prepend", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::authority", "Argument[self].Field[rocket_http::uri::reference::Reference::authority].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::const_new", "Argument[1]", "ReturnValue.Field[rocket_http::uri::reference::Reference::authority]", "value", "dfc-generated"] + - ["::fragment", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_normalized", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::path", "Argument[self].Field[rocket_http::uri::reference::Reference::path]", "ReturnValue.Field[rocket_http::uri::path_query::Path::data].Reference", "value", "dfc-generated"] + - ["::path", "Argument[self].Field[rocket_http::uri::reference::Reference::source]", "ReturnValue.Field[rocket_http::uri::path_query::Path::source].Reference", "value", "dfc-generated"] + - ["::query", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::raw", "Argument[2]", "ReturnValue.Field[rocket_http::uri::reference::Reference::authority]", "value", "dfc-generated"] + - ["::scheme", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::with_query_fragment_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::count", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_segments", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[rocket_http::uri::segments::Segments::source]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[rocket_http::uri::segments::Segments::segments]", "value", "dfc-generated"] + - ["::skip", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_http::uri::uri::Uri::Absolute(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_http::uri::uri::Uri::Asterisk(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_http::uri::uri::Uri::Authority(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_http::uri::uri::Uri::Origin(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_http::uri::uri::Uri::Reference(0)]", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[rocket_http::uri::uri::Uri::Asterisk(0)]", "ReturnValue.Field[rocket_http::uri::uri::Uri::Asterisk(0)]", "value", "dfc-generated"] + - ["::absolute", "Argument[self].Field[rocket_http::uri::uri::Uri::Absolute(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::authority", "Argument[self].Field[rocket_http::uri::uri::Uri::Authority(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::origin", "Argument[self].Field[rocket_http::uri::uri::Uri::Origin(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::reference", "Argument[self].Field[rocket_http::uri::uri::Uri::Reference(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fairing", "Argument[0]", "ReturnValue.Field[rocket::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_sync_db_pools::error::Error::Config(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[rocket_sync_db_pools::error::Error::Pool(0)]", "value", "dfc-generated"] + - ["::io", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::io", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::io", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::io", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::accept_key", "Argument[self].Field[rocket_ws::websocket::WebSocket::key]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::channel", "Argument[0]", "ReturnValue.Field[rocket_ws::websocket::Channel::handler].Reference", "value", "dfc-generated"] + - ["::channel", "Argument[self]", "ReturnValue.Field[rocket_ws::websocket::Channel::ws]", "value", "dfc-generated"] + - ["::config", "Argument[0]", "Argument[self].Field[rocket_ws::websocket::WebSocket::config]", "value", "dfc-generated"] + - ["::config", "Argument[0]", "ReturnValue.Field[rocket_ws::websocket::WebSocket::config]", "value", "dfc-generated"] + - ["::config", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::stream", "Argument[0]", "ReturnValue.Field[rocket_ws::websocket::MessageStream::handler].Reference", "value", "dfc-generated"] + - ["::stream", "Argument[self]", "ReturnValue.Field[rocket_ws::websocket::MessageStream::ws]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[rocket_http::tls::mtls::Certificate::x509].Field[x509_parser::certificate::X509Certificate::tbs_certificate]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_bytes", "Argument[self].Field[rocket_http::tls::mtls::Certificate::data].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::has_serial", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::finalize", "Argument[0].Field[rocket::form::from_form::MapContext::errors]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::init", "Argument[0]", "ReturnValue.Field[rocket::form::from_form::MapContext::opts]", "value", "dfc-generated"] + - ["::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::len_into_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::ty", "Argument[self].Field[syn::ty::ReturnType::Type(1)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::on_liftoff", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::on_liftoff", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::try_launch", "Argument[self].Field[tls::redirector::Redirector::port]", "Argument[0].Field[rocket::config::config::Config::port]", "value", "dfc-generated"] + - ["::raw", "Argument[1]", "ReturnValue.Field[todo::Context::flash]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from_param", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["rocket::form::validate::try_with", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["rocket::form::validate::with", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["rocket_codegen::derive::form_field::first_duplicate", "Argument[0].Element", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["rocket_http::parse::uri::parser::complete::complete", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["rocket_http::parse::uri::parser::complete", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["rocket_http::parse::uri::scheme_from_str", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["rocket_http::uri::uri::as_utf8_unchecked", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue.Field[alloc::borrow::Cow::Owned(0)].Field[alloc::string::String::vec]", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::from_request", "Argument[0]", "pointer-access", "df-generated"] + - ["::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["::from_uri_param", "Argument[0]", "pointer-access", "df-generated"] + - ["::from_uri_param", "Argument[0]", "pointer-access", "df-generated"] + - ["::render", "Argument[0]", "log-injection", "df-generated"] + - ["::signal_stream", "Argument[self]", "log-injection", "df-generated"] + - ["::limit", "Argument[self]", "log-injection", "df-generated"] + - ["::add", "Argument[self]", "log-injection", "df-generated"] + - ["::append", "Argument[self]", "log-injection", "df-generated"] + - ["::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["::handle", "Argument[0]", "pointer-access", "df-generated"] + - ["::log", "Argument[0]", "pointer-access", "df-generated"] + - ["::expect", "Argument[0]", "log-injection", "df-generated"] + - ["::client_ip", "Argument[self]", "pointer-access", "df-generated"] + - ["::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["::respond_to", "Argument[self]", "pointer-access", "df-generated"] + - ["::dispatch", "Argument[1]", "log-injection", "df-generated"] + - ["::handle_error", "Argument[0]", "log-injection", "df-generated"] + - ["::matches", "Argument[0]", "log-injection", "df-generated"] + - ["::from", "Argument[0]", "pointer-access", "df-generated"] + - ["::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["::render", "Argument[self]", "log-injection", "df-generated"] + - ["::finalize", "Argument[0]", "log-injection", "df-generated"] + - ["::respond_to", "Argument[self]", "log-injection", "df-generated"] + - ["::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["::raw", "Argument[4]", "pointer-access", "df-generated"] + - ["::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["::raw", "Argument[1]", "pointer-access", "df-generated"] + - ["::render", "Argument[self]", "pointer-access", "df-generated"] + - ["::with_suffix", "Argument[self]", "pointer-access", "df-generated"] + - ["::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["::append", "Argument[1]", "pointer-access", "df-generated"] + - ["::new", "Argument[1]", "pointer-access", "df-generated"] + - ["::raw", "Argument[2]", "pointer-access", "df-generated"] + - ["::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["::raw", "Argument[1]", "pointer-access", "df-generated"] + - ["::raw", "Argument[4]", "pointer-access", "df-generated"] + - ["::raw", "Argument[5]", "pointer-access", "df-generated"] + - ["::render", "Argument[0]", "log-injection", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["::open", "ReturnValue", "file", "df-generated"] + - ["::open", "ReturnValue", "file", "df-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 deleted file mode 100644 index 76cd9d7618e2..000000000000 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket.model.yml +++ /dev/null @@ -1,481 +0,0 @@ -# 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/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::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_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::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", "::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", "::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", "::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", "::init", "Argument[0]", "ReturnValue.Field[crate::form::from_form::MapContext::opts]", "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", "::init", "Argument[0]", "ReturnValue.Field[crate::form::from_form::MapContext::opts]", "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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::mandatory", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::certs", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::key", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::mutual", "Argument[self].Field[crate::config::tls::TlsConfig::mutual].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::prefer_server_cipher_order", "Argument[self].Field[crate::config::tls::TlsConfig::prefer_server_cipher_order]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::to_native_config", "Argument[self].Field[crate::config::tls::TlsConfig::prefer_server_cipher_order]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::tls::listener::Config::prefer_server_order]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_ciphers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_mutual", "Argument[0]", "Argument[self].Field[crate::config::tls::TlsConfig::mutual].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_mutual", "Argument[0]", "ReturnValue.Field[crate::config::tls::TlsConfig::mutual].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_mutual", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_preferred_server_cipher_order", "Argument[0]", "Argument[self].Field[crate::config::tls::TlsConfig::prefer_server_cipher_order]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_preferred_server_cipher_order", "Argument[0]", "ReturnValue.Field[crate::config::tls::TlsConfig::prefer_server_cipher_order]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_preferred_server_cipher_order", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::clone", "Argument[self].Field[crate::cookies::CookieJar::config]", "ReturnValue.Field[crate::cookies::CookieJar::config]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::clone", "Argument[self].Field[crate::cookies::CookieJar::jar].Reference", "ReturnValue.Field[crate::cookies::CookieJar::jar]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::cookies::CookieJar::jar]", "value", "dfc-generated"] - - ["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_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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref_mut", "Argument[self].Field[crate::data::capped::Capped::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::complete", "Argument[0]", "ReturnValue.Field[crate::data::capped::Capped::value]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_inner", "Argument[self].Field[crate::data::capped::Capped::value]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::is_complete", "Argument[self].Field[crate::data::capped::Capped::n].Field[crate::data::capped::N::complete]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::map", "Argument[0].ReturnValue", "ReturnValue.Field[crate::data::capped::Capped::value]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::map", "Argument[self].Field[crate::data::capped::Capped::n]", "ReturnValue.Field[crate::data::capped::Capped::n]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::map", "Argument[self].Field[crate::data::capped::Capped::value]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[3]", "ReturnValue.Field[crate::ext::CancellableIo::mercy]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Field[crate::ext::CancellableListener::trigger]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[1]", "ReturnValue.Field[crate::ext::CancellableListener::listener]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::get_ref", "Argument[self].Field[crate::ext::Chain::first]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::get_ref", "Argument[self].Field[crate::ext::Chain::second]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Field[crate::ext::Chain::first]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[1]", "ReturnValue.Field[crate::ext::Chain::second]", "value", "dfc-generated"] - - ["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.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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_response", "Argument[0]", "ReturnValue.Field[crate::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_shutdown", "Argument[0]", "ReturnValue.Field[crate::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::try_on_ignite", "Argument[0]", "ReturnValue.Field[crate::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::audit", "Argument[self].Field[crate::fairing::fairings::Fairings::failures]", "ReturnValue.Field[crate::result::Result::Err(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::handle_ignite", "Argument[0]", "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", "::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", "::into_owned", "Argument[self]", "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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_entity", "Argument[0]", "Argument[self].Field[crate::form::error::Error::entity]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_entity", "Argument[0]", "ReturnValue.Field[crate::form::error::Error::entity]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_entity", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_value", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[0]", "ReturnValue.Field[crate::form::error::ErrorKind::Custom(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[0]", "ReturnValue.Field[crate::form::error::ErrorKind::InvalidLength::min]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[0]", "ReturnValue.Field[crate::form::error::ErrorKind::OutOfRange::start]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[1]", "ReturnValue.Field[crate::form::error::ErrorKind::Custom(1)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[1]", "ReturnValue.Field[crate::form::error::ErrorKind::InvalidLength::max]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[1]", "ReturnValue.Field[crate::form::error::ErrorKind::OutOfRange::end]", "value", "dfc-generated"] - - ["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", "::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"] - - ["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::form::error::Errors(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_value", "Argument[self]", "ReturnValue", "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].Field[1]", "ReturnValue.Field[crate::form::field::ValueField::value]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref_mut", "Argument[self].Field[crate::form::form::Form(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::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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref_mut", "Argument[self].Field[crate::form::lenient::Lenient(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::form::lenient::Lenient(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[0].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::form::name::buf::NameBuf::left]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[0]", "ReturnValue.Field[crate::form::name::buf::NameBuf::left].Field[0]", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::shift", "Argument[self].Field[crate::form::name::view::NameView::name]", "Argument[self].Reference.Field[crate::form::name::view::NameView::name]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::source", "Argument[self].Field[crate::form::name::view::NameView::name]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::next", "Argument[self].Field[crate::form::parser::RawStrParser::source].Element", "Argument[self].Field[crate::form::parser::RawStrParser::source].Reference", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref_mut", "Argument[self].Field[crate::form::strict::Strict(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::form::strict::Strict(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::fs::named_file::NamedFile(1)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref_mut", "Argument[self].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref_mut", "Argument[self].Field[crate::fs::named_file::NamedFile(1)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::file", "Argument[self].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::file", "Argument[self].Field[crate::fs::named_file::NamedFile(1)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::file_mut", "Argument[self].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::file_mut", "Argument[self].Field[crate::fs::named_file::NamedFile(1)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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", "::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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::open", "Argument[self].Field[crate::fs::temp_file::TempFile::Buffered::content].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::path", "Argument[self].Field[crate::fs::temp_file::TempFile::File::path]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::raw_name", "Argument[self].Reference.Field[crate::fs::temp_file::TempFile::File::file_name]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::_new", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::local::asynchronous::client::Client::tracked]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::_rocket", "Argument[self].Field[crate::local::asynchronous::client::Client::rocket]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::_with_raw_cookies", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::_with_raw_cookies_mut", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::_body_mut", "Argument[self].Field[crate::local::asynchronous::request::LocalRequest::data]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::_request", "Argument[self].Field[crate::local::asynchronous::request::LocalRequest::request]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::_request_mut", "Argument[self].Field[crate::local::asynchronous::request::LocalRequest::request]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::cookies", "Argument[self]", "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", "::identity", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Field[crate::local::asynchronous::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", "::_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[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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::inner", "Argument[self].Field[crate::local::blocking::client::Client::inner].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::cookies", "Argument[self]", "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", "::identity", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::_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_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_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_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", "::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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::and_then", "Argument[self].Field[crate::outcome::Outcome::Success(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_mut", "Argument[self].Reference.Field[crate::outcome::Outcome::Error(0)]", "ReturnValue.Field[crate::outcome::Outcome::Error(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_mut", "Argument[self].Reference.Field[crate::outcome::Outcome::Forward(0)]", "ReturnValue.Field[crate::outcome::Outcome::Forward(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_mut", "Argument[self].Reference.Field[crate::outcome::Outcome::Success(0)]", "ReturnValue.Field[crate::outcome::Outcome::Success(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_ref", "Argument[self].Reference.Field[crate::outcome::Outcome::Error(0)]", "ReturnValue.Field[crate::outcome::Outcome::Error(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_ref", "Argument[self].Reference.Field[crate::outcome::Outcome::Forward(0)]", "ReturnValue.Field[crate::outcome::Outcome::Forward(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_ref", "Argument[self].Reference.Field[crate::outcome::Outcome::Success(0)]", "ReturnValue.Field[crate::outcome::Outcome::Success(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::error_then", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::error_then", "Argument[self].Field[crate::outcome::Outcome::Error(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::error_then", "Argument[self].Field[crate::outcome::Outcome::Forward(0)]", "ReturnValue.Field[crate::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::error_then", "Argument[self].Field[crate::outcome::Outcome::Success(0)]", "ReturnValue.Field[crate::outcome::Outcome::Success(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::expect", "Argument[self].Field[crate::outcome::Outcome::Success(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::failed", "Argument[self].Field[crate::outcome::Outcome::Error(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::forward_then", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::forward_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", "::forward_then", "Argument[self].Field[crate::outcome::Outcome::Forward(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::forward_then", "Argument[self].Field[crate::outcome::Outcome::Success(0)]", "ReturnValue.Field[crate::outcome::Outcome::Success(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::forwarded", "Argument[self].Field[crate::outcome::Outcome::Forward(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::log_display", "Argument[self]", "ReturnValue.Field[crate::outcome::Display(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::map", "Argument[0].ReturnValue", "ReturnValue.Field[crate::outcome::Outcome::Success(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::map", "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", "::map", "Argument[self].Field[crate::outcome::Outcome::Forward(0)]", "ReturnValue.Field[crate::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::map", "Argument[self].Field[crate::outcome::Outcome::Success(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::map_error", "Argument[0].ReturnValue", "ReturnValue.Field[crate::outcome::Outcome::Error(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::map_error", "Argument[self].Field[crate::outcome::Outcome::Error(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::map_error", "Argument[self].Field[crate::outcome::Outcome::Forward(0)]", "ReturnValue.Field[crate::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::map_error", "Argument[self].Field[crate::outcome::Outcome::Success(0)]", "ReturnValue.Field[crate::outcome::Outcome::Success(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::map_forward", "Argument[0].ReturnValue", "ReturnValue.Field[crate::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::map_forward", "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", "::map_forward", "Argument[self].Field[crate::outcome::Outcome::Forward(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::map_forward", "Argument[self].Field[crate::outcome::Outcome::Success(0)]", "ReturnValue.Field[crate::outcome::Outcome::Success(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::ok_map_error", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::ok_map_error", "Argument[self].Field[crate::outcome::Outcome::Error(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::ok_map_error", "Argument[self].Field[crate::outcome::Outcome::Forward(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::ok_map_error", "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", "::ok_map_forward", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::success_or_else", "Argument[0].ReturnValue", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::success_or_else", "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", "::unwrap", "Argument[self].Field[crate::outcome::Outcome::Success(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_state_ref", "Argument[self]", "ReturnValue.Field[crate::phase::StateRef::Build(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_state", "Argument[self]", "ReturnValue.Field[crate::phase::State::Build(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_state_ref", "Argument[self]", "ReturnValue.Field[crate::phase::StateRef::Ignite(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_state", "Argument[self]", "ReturnValue.Field[crate::phase::State::Ignite(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_state_ref", "Argument[self]", "ReturnValue.Field[crate::phase::StateRef::Orbit(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_state", "Argument[self]", "ReturnValue.Field[crate::phase::State::Orbit(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::client_ip", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::cookies", "Argument[self].Field[crate::request::request::Request::state].Field[crate::request::request::RequestState::cookies]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::cookies_mut", "Argument[self].Field[crate::request::request::Request::state].Field[crate::request::request::RequestState::cookies]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::headers", "Argument[self].Field[crate::request::request::Request::headers]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Field[crate::request::request::Request::state].Field[crate::request::request::RequestState::rocket]", "value", "dfc-generated"] - - ["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", "::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", "::with_sized", "Argument[1]", "ReturnValue.Field[crate::response::body::Body::size]", "value", "dfc-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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::kind", "Argument[self].Field[crate::response::flash::Flash::kind]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::message", "Argument[self].Field[crate::response::flash::Flash::message]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::max_chunk_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::merge", "Argument[0].Field[crate::response::response::Response::body]", "Argument[self].Field[crate::response::response::Builder::response].Field[crate::response::response::Response::body]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::status", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::streamed_body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::upgrade", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::body", "Argument[self].Field[crate::response::response::Response::body]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::body_mut", "Argument[self].Field[crate::response::response::Response::body]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::build_from", "Argument[0]", "ReturnValue.Field[crate::response::response::Builder::response]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::headers", "Argument[self].Field[crate::response::response::Response::headers]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::join", "Argument[0].Field[crate::response::response::Response::body]", "Argument[self].Field[crate::response::response::Response::body]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::join", "Argument[0].Field[crate::response::response::Response::status]", "Argument[self].Field[crate::response::response::Response::status]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::merge", "Argument[0].Field[crate::response::response::Response::body]", "Argument[self].Field[crate::response::response::Response::body]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::set_status", "Argument[0]", "Argument[self].Field[crate::response::response::Response::status].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::status", "Argument[self].Field[crate::response::response::Response::status].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::retry", "Argument[0]", "ReturnValue.Field[crate::response::stream::sse::Event::retry].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_comment", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_retry", "Argument[0]", "Argument[self].Field[crate::response::stream::sse::Event::retry].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_retry", "Argument[0]", "ReturnValue.Field[crate::response::stream::sse::Event::retry].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_retry", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::or_error", "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", "::or_forward", "Argument[0].Field[0]", "ReturnValue.Field[crate::outcome::Outcome::Forward(0)].Field[0]", "value", "dfc-generated"] - - ["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", "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"] - - ["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::rkt::Rocket(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::attach", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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", "::ranked", "Argument[1]", "ReturnValue.Field[crate::route::route::Route::method]", "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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref_mut", "Argument[self].Field[crate::serde::json::Json(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_uri_param", "Argument[0]", "ReturnValue.Field[crate::serde::json::Json(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_uri_param", "Argument[0]", "ReturnValue", "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::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", "::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", "::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", "::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", "::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", "::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", "::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", "::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", "::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"] - - ["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_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_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", "::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"] - - ["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_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", "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"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - 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", "::expect", "Argument[0]", "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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::respond_to", "Argument[self]", "log-injection", "df-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sourceModel - data: - - ["repo:https://github.com/rwf2/Rocket:rocket", "::to_native_config", "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 deleted file mode 100644 index 3c08a3aa283d..000000000000 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_codegen.model.yml +++ /dev/null @@ -1,62 +0,0 @@ -# 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/rwf2/Rocket:rocket_codegen", "::with_span", "Argument[self]", "ReturnValue", "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"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::parse", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::attribute::param::parse::Error::source]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::parse", "Argument[1]", "ReturnValue.Field[crate::attribute::param::Parameter::Static(0)].Field[crate::name::Name::span]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::parse", "Argument[1]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::attribute::param::parse::Error::source_span]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::parse", "Argument[1]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::attribute::param::parse::Error::span]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::deref", "Argument[self].Field[crate::attribute::param::Guard::source]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::from", "Argument[0]", "ReturnValue.Field[crate::attribute::param::Guard::source]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::from", "Argument[1]", "ReturnValue.Field[crate::attribute::param::Guard::fn_ident]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::from", "Argument[2]", "ReturnValue.Field[crate::attribute::param::Guard::ty]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::dynamic", "Argument[self].Field[crate::attribute::param::Parameter::Dynamic(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::dynamic_mut", "Argument[self].Field[crate::attribute::param::Parameter::Dynamic(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::guard", "Argument[self].Field[crate::attribute::param::Parameter::Guard(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::ignored", "Argument[self].Field[crate::attribute::param::Parameter::Ignored(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "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"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::parse", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::attribute::param::parse::Error::source]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::parse", "Argument[1]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::attribute::param::parse::Error::source_span]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::parse", "Argument[1]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::attribute::param::parse::Error::span]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::static", "Argument[self].Field[crate::attribute::param::Parameter::Static(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::take_dynamic", "Argument[self].Field[crate::attribute::param::Parameter::Dynamic(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::new", "Argument[0]", "ReturnValue.Field[crate::attribute::param::parse::Error::segment]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::new", "Argument[0]", "ReturnValue.Field[crate::attribute::param::parse::Error::source]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::new", "Argument[1]", "ReturnValue.Field[crate::attribute::param::parse::Error::source_span]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::new", "Argument[1]", "ReturnValue.Field[crate::attribute::param::parse::Error::span]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::new", "Argument[2]", "ReturnValue.Field[crate::attribute::param::parse::Error::kind]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::source", "Argument[0]", "Argument[self].Field[crate::attribute::param::parse::Error::source]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::source", "Argument[0]", "ReturnValue.Field[crate::attribute::param::parse::Error::source]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::upgrade_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::deref", "Argument[self].Field[crate::attribute::route::parse::RouteUri::origin]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::as_expr", "Argument[self].Field[crate::bang::uri_parsing::ArgExpr::Expr(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::unwrap_expr", "Argument[self].Field[crate::bang::uri_parsing::ArgExpr::Expr(0)]", "ReturnValue", "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::bang::uri_parsing::UriLit(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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", "::as_ref", "Argument[self].Field[crate::name::Name::value]", "ReturnValue.Reference", "value", "dfc-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"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::span", "Argument[self].Field[crate::name::Name::span]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::from", "Argument[0]", "ReturnValue.Field[crate::proc_macro_ext::Diagnostics(0)]", "value", "dfc-generated"] - - ["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", "::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"] 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 deleted file mode 100644 index c987027c1855..000000000000 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_http.model.yml +++ /dev/null @@ -1,215 +0,0 @@ -# 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/rwf2/Rocket:rocket_http", "<&[u8] as crate::uri::fmt::from_uri_param::FromUriParam>::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "<&crate::path::Path as crate::uri::fmt::from_uri_param::FromUriParam>::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "<&str as crate::uri::fmt::from_uri_param::FromUriParam>::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "<_ as crate::ext::IntoCollection>::mapped", "Argument[self]", "Argument[0].Parameter[0]", "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", "::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", "Argument[0]", "ReturnValue.Field[crate::header::accept::QMediaType(0)]", "value", "dfc-generated"] - - ["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::header::accept::QMediaType(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::media_type", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::media_type", "Argument[self].Field[crate::header::accept::QMediaType(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::weight", "Argument[self].Field[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::weight", "Argument[self].Field[crate::header::accept::QMediaType(1)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::weight_or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::weight_or", "Argument[self].Field[1].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::weight_or", "Argument[self].Field[crate::header::accept::QMediaType(1)].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::header::content_type::ContentType(0)]", "value", "dfc-generated"] - - ["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::header::content_type::ContentType(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::media_type", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::media_type", "Argument[self].Field[crate::header::content_type::ContentType(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::with_params", "Argument[self].Field[0]", "ReturnValue.Field[crate::header::content_type::ContentType(0)]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::new_known", "Argument[3]", "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", "::with_params", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::header::media_type::Source::Custom(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::new", "Argument[0]", "ReturnValue.Field[crate::listener::Incoming::listener]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::nodelay", "Argument[0]", "Argument[self].Field[crate::listener::Incoming::nodelay]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::nodelay", "Argument[0]", "ReturnValue.Field[crate::listener::Incoming::nodelay]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::nodelay", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::clone", "Argument[self].Reference.Field[crate::parse::indexed::Indexed::Concrete(0)]", "ReturnValue.Field[crate::parse::indexed::Indexed::Concrete(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::clone", "Argument[self].Reference.Field[crate::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[crate::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::clone", "Argument[self].Reference.Field[crate::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[crate::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::parse::indexed::Indexed::Concrete(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self].Field[crate::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[crate::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self].Field[crate::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[crate::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::add", "Argument[0].Field[crate::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[crate::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::add", "Argument[self].Field[crate::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[crate::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::coerce", "Argument[self].Field[crate::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[crate::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::coerce", "Argument[self].Field[crate::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[crate::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::coerce_lifetime", "Argument[self].Field[crate::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[crate::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::coerce_lifetime", "Argument[self].Field[crate::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[crate::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_cow_source", "Argument[self].Reference.Field[crate::parse::indexed::Indexed::Concrete(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_source", "Argument[0].Field[crate::option::Option::Some(0)].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_source", "Argument[self].Reference.Field[crate::parse::indexed::Indexed::Concrete(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::indices", "Argument[self].Field[crate::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::indices", "Argument[self].Field[crate::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_concrete", "Argument[self].Field[crate::parse::indexed::Indexed::Concrete(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self].Field[crate::parse::uri::error::Error::index]", "ReturnValue.Field[crate::parse::uri::error::Error::index]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::index", "Argument[self].Field[crate::parse::uri::error::Error::index]", "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", "::borrow", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::borrow", "Argument[self].Field[crate::raw_str::RawStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::to_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::as_str", "Argument[self].Field[crate::raw_str::RawStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::split_at_byte", "Argument[self].Element", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::split_at_byte", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::raw_str::RawStrBuf(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_string", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_string", "Argument[self].Field[crate::raw_str::RawStrBuf(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::new", "Argument[0]", "ReturnValue.Field[crate::status::Status::code]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::visit_i64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::visit_u64", "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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::tls::mtls::Error::Incomplete(0)].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::tls::mtls::Error::Parse(0)]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::const_new", "Argument[1]", "ReturnValue.Field[crate::uri::absolute::Absolute::authority]", "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", "::path", "Argument[self].Field[crate::uri::absolute::Absolute::path]", "ReturnValue.Field[crate::uri::path_query::Path::data].Reference", "value", "dfc-generated"] - - ["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", "::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", "::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", "::const_new", "Argument[2]", "ReturnValue.Field[crate::uri::authority::Authority::port]", "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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::render", "Argument[self]", "ReturnValue", "taint", "df-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::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", "::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_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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::new", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::path", "Argument[self].Field[crate::uri::origin::Origin::path]", "ReturnValue.Field[crate::uri::path_query::Path::data].Reference", "value", "dfc-generated"] - - ["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", "::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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::fragment", "Argument[self]", "ReturnValue", "taint", "df-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", "::path", "Argument[self].Field[crate::uri::reference::Reference::path]", "ReturnValue.Field[crate::uri::path_query::Path::data].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::path", "Argument[self].Field[crate::uri::reference::Reference::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::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", "::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"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::new", "Argument[1]", "ReturnValue.Field[crate::uri::segments::Segments::segments]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::skip", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::uri::uri::Uri::Absolute(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::uri::uri::Uri::Asterisk(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::uri::uri::Uri::Authority(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::uri::uri::Uri::Origin(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::uri::uri::Uri::Reference(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self].Field[crate::uri::uri::Uri::Asterisk(0)]", "ReturnValue.Field[crate::uri::uri::Uri::Asterisk(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::absolute", "Argument[self].Field[crate::uri::uri::Uri::Absolute(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::authority", "Argument[self].Field[crate::uri::uri::Uri::Authority(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::origin", "Argument[self].Field[crate::uri::uri::Uri::Origin(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::reference", "Argument[self].Field[crate::uri::uri::Uri::Reference(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "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", "::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", "::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", "::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", "::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", "::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", "::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", "::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", "::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", "::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", "::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", "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"] 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 deleted file mode 100644 index 64aa3ccb425f..000000000000 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-db_pools-rocket_db_pools.model.yml +++ /dev/null @@ -1,14 +0,0 @@ -# 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/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", "::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"] 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 deleted file mode 100644 index bfd8737a5e39..000000000000 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-dyn_templates-rocket_dyn_templates.model.yml +++ /dev/null @@ -1,22 +0,0 @@ -# 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/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", "::finalize", "Argument[self].Field[crate::template::Template::value].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::render", "Argument[0]", "log-injection", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::render", "Argument[self]", "log-injection", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::init", "Argument[0]", "log-injection", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::render", "Argument[0]", "log-injection", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::respond_to", "Argument[self]", "log-injection", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::finalize", "Argument[0]", "log-injection", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::finalize", "Argument[self]", "log-injection", "df-generated"] - - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::render", "Argument[0]", "log-injection", "df-generated"] 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 deleted file mode 100644 index 552ca54324b7..000000000000 --- 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 +++ /dev/null @@ -1,10 +0,0 @@ -# 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/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"] - - ["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::Pool(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 deleted file mode 100644 index 66aadb9919b0..000000000000 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-ws-rocket_ws.model.yml +++ /dev/null @@ -1,12 +0,0 @@ -# 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/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[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[self]", "ReturnValue.Field[crate::websocket::MessageStream::ws]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-pastebin.model.yml b/rust/ql/lib/ext/generated/rocket/repo-pastebin.model.yml deleted file mode 100644 index 9fb36c037036..000000000000 --- a/rust/ql/lib/ext/generated/rocket/repo-pastebin.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["repo::pastebin", "::from_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["repo::pastebin", "::file_path", "Argument[self]", "ReturnValue", "taint", "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 deleted file mode 100644 index f2bb481b1afe..000000000000 --- a/rust/ql/lib/ext/generated/rocket/repo-tls.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["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/rocket/repo-todo.model.yml b/rust/ql/lib/ext/generated/rocket/repo-todo.model.yml deleted file mode 100644 index 29ade2ffc34a..000000000000 --- a/rust/ql/lib/ext/generated/rocket/repo-todo.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["repo::todo", "::raw", "Argument[1]", "ReturnValue.Field[crate::Context::flash]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rust.model.yml b/rust/ql/lib/ext/generated/rust.model.yml new file mode 100644 index 000000000000..9c39cc545956 --- /dev/null +++ b/rust/ql/lib/ext/generated/rust.model.yml @@ -0,0 +1,6932 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference.Field[alloc::borrow::Cow::Borrowed(0)]", "ReturnValue.Field[alloc::borrow::Cow::Borrowed(0)]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Reference", "ReturnValue.Field[alloc::borrow::Cow::Borrowed(0)].Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[alloc::borrow::Cow::Borrowed(0)].Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[alloc::borrow::Cow::Borrowed(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[alloc::borrow::Cow::Owned(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add_assign", "Argument[0]", "Argument[self].Reference.Field[alloc::borrow::Cow::Borrowed(0)]", "value", "dfc-generated"] + - ["::add_assign", "Argument[0]", "Argument[self].Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Reference.Field[alloc::borrow::Cow::Borrowed(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_owned", "Argument[self].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::to_mut", "Argument[self].Reference.Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::clone_from", "Argument[0].Reference", "Argument[self].Reference", "value", "dfc-generated"] + - ["::clone_from", "Argument[0]", "Argument[self].Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[proc_macro::bridge::rpc::PanicMessage::StaticStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[proc_macro::bridge::rpc::PanicMessage::String(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::nth", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::deref", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_line", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_until", "Argument[self]", "Argument[1]", "taint", "df-generated"] + - ["::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_exact", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::allocator", "Argument[0].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::allocator", "Argument[0].Field[alloc::boxed::Box(1)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_mut_ptr", "Argument[0].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ptr", "Argument[0].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::downcast", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::from_non_null_in", "Argument[1]", "ReturnValue.Field[alloc::boxed::Box(1)]", "value", "dfc-generated"] + - ["::from_raw_in", "Argument[1]", "ReturnValue.Field[alloc::boxed::Box(1)]", "value", "dfc-generated"] + - ["::into_inner", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_non_null", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_pin", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_pin", "Argument[0]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::into_raw", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_raw_with_allocator", "Argument[0]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] + - ["::into_unique", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::leak", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new_uninit_in", "Argument[0]", "ReturnValue.Field[alloc::boxed::Box(1)]", "value", "dfc-generated"] + - ["::new_zeroed_in", "Argument[0]", "ReturnValue.Field[alloc::boxed::Box(1)]", "value", "dfc-generated"] + - ["::try_new_in", "Argument[1]", "ReturnValue.Field[alloc::boxed::Box(1)]", "value", "dfc-generated"] + - ["::try_new_uninit_in", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::boxed::Box(1)]", "value", "dfc-generated"] + - ["::try_new_zeroed_in", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::boxed::Box(1)]", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Field[alloc::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self].Field[alloc::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[alloc::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[alloc::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[alloc::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[alloc::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[0].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[alloc::bstr::ByteString(0)].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::index_mut", "Argument[self].Field[0].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::index_mut", "Argument[self].Field[alloc::bstr::ByteString(0)].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_bytes", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_bytes", "Argument[self].Field[alloc::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[alloc::collections::TryReserveError::kind]", "value", "dfc-generated"] + - ["::kind", "Argument[self].Field[alloc::collections::TryReserveError::kind].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::kind", "Argument[self].Field[alloc::collections::TryReserveError::kind]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::collections::binary_heap::BinaryHeap::data].Reference", "ReturnValue.Field[alloc::collections::binary_heap::BinaryHeap::data]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::collections::binary_heap::BinaryHeap::data]", "ReturnValue.Field[alloc::collections::binary_heap::BinaryHeap::data]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[alloc::collections::binary_heap::BinaryHeap::data]", "value", "dfc-generated"] + - ["::drain", "Argument[self].Field[alloc::collections::binary_heap::BinaryHeap::data].Field[core::ptr::unique::Unique::pointer]", "ReturnValue.Field[alloc::collections::binary_heap::Drain::iter].Field[alloc::vec::drain::Drain::vec]", "value", "dfc-generated"] + - ["::drain_sorted", "Argument[self]", "ReturnValue.Field[alloc::collections::binary_heap::DrainSorted::inner]", "value", "dfc-generated"] + - ["::into_iter_sorted", "Argument[self]", "ReturnValue.Field[alloc::collections::binary_heap::IntoIterSorted::inner]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::collections::binary_heap::BinaryHeap::data].Field[alloc::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] + - ["::peek_mut", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)].Field[alloc::collections::binary_heap::PeekMut::heap]", "value", "dfc-generated"] + - ["::as_into_iter", "Argument[self].Field[alloc::collections::binary_heap::IntoIter::iter]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::allocator", "Argument[self].Field[alloc::collections::binary_heap::IntoIter::iter].Field[alloc::vec::into_iter::IntoIter::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self].Field[alloc::collections::binary_heap::Iter::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0].Field[core::ptr::unique::Unique::pointer]", "ReturnValue.Field[1].Field[alloc::collections::btree::borrow::DormantMutRef::ptr]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::dedup_sorted_iter::DedupSortedIter::iter].Field[core::iter::adapters::peekable::Peekable::iter]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::alloc].Field[core::mem::manually_drop::ManuallyDrop::value]", "ReturnValue.Field[alloc::collections::btree::map::BTreeMap::alloc].Field[core::mem::manually_drop::ManuallyDrop::value]", "value", "dfc-generated"] + - ["::bulk_build_from_sorted_iter", "Argument[1]", "ReturnValue.Field[alloc::collections::btree::map::BTreeMap::alloc].Field[core::mem::manually_drop::ManuallyDrop::value]", "value", "dfc-generated"] + - ["::entry", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::map::entry::Entry::Vacant(0)].Field[alloc::collections::btree::map::entry::VacantEntry::key]", "value", "dfc-generated"] + - ["::extract_if", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::map::ExtractIf::pred]", "value", "dfc-generated"] + - ["::extract_if", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::alloc].Field[core::mem::manually_drop::ManuallyDrop::value]", "ReturnValue.Field[alloc::collections::btree::map::ExtractIf::alloc]", "value", "dfc-generated"] + - ["::extract_if_inner", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::alloc].Field[core::mem::manually_drop::ManuallyDrop::value]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::first_key_value", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::root].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::root].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_key_value", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::root].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::root].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_or_insert_with", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::iter", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[alloc::collections::btree::map::Iter::length]", "value", "dfc-generated"] + - ["::iter_mut", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[alloc::collections::btree::map::IterMut::length]", "value", "dfc-generated"] + - ["::keys", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[alloc::collections::btree::map::Keys::inner].Field[alloc::collections::btree::map::Iter::length]", "value", "dfc-generated"] + - ["::last_key_value", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::root].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue", "value", "dfc-generated"] + - ["::lower_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::lower_bound_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new_in", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::map::BTreeMap::alloc].Field[core::mem::manually_drop::ManuallyDrop::value]", "value", "dfc-generated"] + - ["::split_off", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::alloc].Reference", "ReturnValue.Field[alloc::collections::btree::map::BTreeMap::alloc]", "value", "dfc-generated"] + - ["::split_off", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::alloc]", "ReturnValue.Field[alloc::collections::btree::map::BTreeMap::alloc]", "value", "dfc-generated"] + - ["::try_insert", "Argument[1]", "ReturnValue.Field[core::result::Result::Err(0)].Field[alloc::collections::btree::map::entry::OccupiedError::value]", "value", "dfc-generated"] + - ["::upper_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::upper_bound_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::values", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[alloc::collections::btree::map::Values::inner].Field[alloc::collections::btree::map::Iter::length]", "value", "dfc-generated"] + - ["::values_mut", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[alloc::collections::btree::map::ValuesMut::inner].Field[alloc::collections::btree::map::IterMut::length]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference.Field[alloc::collections::btree::map::Cursor::current]", "ReturnValue.Field[alloc::collections::btree::map::Cursor::current]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference.Field[alloc::collections::btree::map::Cursor::root]", "ReturnValue.Field[alloc::collections::btree::map::Cursor::root]", "value", "dfc-generated"] + - ["::with_mutable_key", "Argument[self].Field[alloc::collections::btree::map::CursorMut::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::peek_next", "Argument[self].Field[alloc::collections::btree::map::CursorMutKey::current].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::peek_prev", "Argument[self].Field[alloc::collections::btree::map::CursorMutKey::current].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::peek", "Argument[self].Field[alloc::collections::btree::map::ExtractIfInner::cur_leaf_edge].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::ExtractIfInner::length].Reference", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::iter", "Argument[self].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue.Field[alloc::collections::btree::map::Iter::length]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::collections::btree::map::IntoKeys::inner].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::IntoKeys::inner].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::IntoKeys::inner].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::collections::btree::map::IntoValues::inner].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::IntoValues::inner].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::IntoValues::inner].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::len", "Argument[self].Field[alloc::collections::btree::map::Iter::length]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::Iter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::Iter::length]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::collections::btree::map::IterMut::length]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::IterMut::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::IterMut::length]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::iter", "Argument[self].Field[alloc::collections::btree::map::IterMut::length]", "ReturnValue.Field[alloc::collections::btree::map::Iter::length]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::len", "Argument[self].Field[alloc::collections::btree::map::Keys::inner].Field[alloc::collections::btree::map::Iter::length]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::Keys::inner].Field[alloc::collections::btree::map::Iter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::Keys::inner].Field[alloc::collections::btree::map::Iter::length]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::len", "Argument[self].Field[alloc::collections::btree::map::Values::inner].Field[alloc::collections::btree::map::Iter::length]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::Values::inner].Field[alloc::collections::btree::map::Iter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::Values::inner].Field[alloc::collections::btree::map::Iter::length]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::collections::btree::map::ValuesMut::inner].Field[alloc::collections::btree::map::IterMut::length]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::ValuesMut::inner].Field[alloc::collections::btree::map::IterMut::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::map::ValuesMut::inner].Field[alloc::collections::btree::map::IterMut::length]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::and_modify", "Argument[self].Field[alloc::collections::btree::map::entry::Entry::Occupied(0)]", "ReturnValue.Field[alloc::collections::btree::map::entry::Entry::Occupied(0)]", "value", "dfc-generated"] + - ["::and_modify", "Argument[self].Field[alloc::collections::btree::map::entry::Entry::Vacant(0)]", "ReturnValue.Field[alloc::collections::btree::map::entry::Entry::Vacant(0)]", "value", "dfc-generated"] + - ["::insert_entry", "Argument[self].Field[alloc::collections::btree::map::entry::Entry::Occupied(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::insert_entry", "Argument[self].Field[alloc::collections::btree::map::entry::VacantEntry::alloc]", "ReturnValue.Field[alloc::collections::btree::map::entry::OccupiedEntry::alloc]", "value", "dfc-generated"] + - ["::insert_entry", "Argument[self].Field[alloc::collections::btree::map::entry::VacantEntry::dormant_map]", "ReturnValue.Field[alloc::collections::btree::map::entry::OccupiedEntry::dormant_map]", "value", "dfc-generated"] + - ["::into_key", "Argument[self].Field[alloc::collections::btree::map::entry::VacantEntry::key]", "ReturnValue", "value", "dfc-generated"] + - ["::key", "Argument[self].Field[alloc::collections::btree::map::entry::VacantEntry::key]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::merge_iter::MergeIterInner::a]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[alloc::collections::btree::merge_iter::MergeIterInner::b]", "value", "dfc-generated"] + - ["::nexts", "Argument[self].Field[alloc::collections::btree::merge_iter::MergeIterInner::a].Element", "ReturnValue.Field[0].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nexts", "Argument[self].Field[alloc::collections::btree::merge_iter::MergeIterInner::b].Element", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::collections::btree::navigate::LazyLeafHandle::Edge(0)].Reference", "ReturnValue.Field[alloc::collections::btree::navigate::LazyLeafHandle::Edge(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::collections::btree::navigate::LazyLeafHandle::Root(0)].Reference", "ReturnValue.Field[alloc::collections::btree::navigate::LazyLeafHandle::Root(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_left_child", "Argument[self].Field[alloc::collections::btree::node::BalancingContext::left_child]", "ReturnValue", "value", "dfc-generated"] + - ["::into_right_child", "Argument[self].Field[alloc::collections::btree::node::BalancingContext::right_child]", "ReturnValue", "value", "dfc-generated"] + - ["::merge_tracking_child", "Argument[self].Field[alloc::collections::btree::node::BalancingContext::left_child]", "ReturnValue", "value", "dfc-generated"] + - ["::merge_tracking_child_edge", "Argument[0].Field[alloc::collections::btree::node::LeftOrRight::Left(0)]", "ReturnValue.Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::merge_tracking_child_edge", "Argument[self].Field[alloc::collections::btree::node::BalancingContext::left_child]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::merge_tracking_parent", "Argument[self].Field[alloc::collections::btree::node::BalancingContext::parent].Field[alloc::collections::btree::node::Handle::node]", "ReturnValue", "value", "dfc-generated"] + - ["::steal_left", "Argument[self].Field[alloc::collections::btree::node::BalancingContext::right_child]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::steal_right", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::steal_right", "Argument[self].Field[alloc::collections::btree::node::BalancingContext::left_child]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::awaken", "Argument[self].Field[alloc::collections::btree::node::Handle::idx]", "ReturnValue.Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::awaken", "Argument[self].Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::awaken", "Argument[self].Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::cast_to_leaf_unchecked", "Argument[self].Field[alloc::collections::btree::node::Handle::idx]", "ReturnValue.Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::cast_to_leaf_unchecked", "Argument[self].Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::cast_to_leaf_unchecked", "Argument[self].Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::consider_for_balancing", "Argument[self]", "ReturnValue.Field[alloc::collections::btree::node::BalancingContext::parent]", "value", "dfc-generated"] + - ["::descend", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::dormant", "Argument[self].Field[alloc::collections::btree::node::Handle::idx]", "ReturnValue.Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::dormant", "Argument[self].Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::dormant", "Argument[self].Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::force", "Argument[self].Field[alloc::collections::btree::node::Handle::idx]", "ReturnValue.Field[alloc::collections::btree::node::ForceResult::Internal(0)].Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::force", "Argument[self].Field[alloc::collections::btree::node::Handle::idx]", "ReturnValue.Field[alloc::collections::btree::node::ForceResult::Leaf(0)].Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::forget_node_type", "Argument[self].Field[alloc::collections::btree::node::Handle::idx]", "ReturnValue.Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::forget_node_type", "Argument[self].Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::forget_node_type", "Argument[self].Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::idx", "Argument[self].Field[alloc::collections::btree::node::Handle::idx]", "ReturnValue", "value", "dfc-generated"] + - ["::into_node", "Argument[self].Field[alloc::collections::btree::node::Handle::node]", "ReturnValue", "value", "dfc-generated"] + - ["::left_edge", "Argument[self].Field[alloc::collections::btree::node::Handle::idx]", "ReturnValue.Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::left_edge", "Argument[self].Field[alloc::collections::btree::node::Handle::node]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::left_kv", "Argument[self].Field[alloc::collections::btree::node::Handle::node]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::left_kv", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::new_edge", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::new_edge", "Argument[1]", "ReturnValue.Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::new_kv", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::new_kv", "Argument[1]", "ReturnValue.Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::reborrow", "Argument[self].Field[alloc::collections::btree::node::Handle::idx]", "ReturnValue.Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::reborrow", "Argument[self].Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::reborrow", "Argument[self].Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::reborrow_mut", "Argument[self].Field[alloc::collections::btree::node::Handle::idx]", "ReturnValue.Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::reborrow_mut", "Argument[self].Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::reborrow_mut", "Argument[self].Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::remove", "Argument[self].Field[alloc::collections::btree::node::Handle::idx]", "ReturnValue.Field[1].Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::remove", "Argument[self].Field[alloc::collections::btree::node::Handle::node]", "ReturnValue.Field[1].Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::right_edge", "Argument[self].Field[alloc::collections::btree::node::Handle::node]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::right_kv", "Argument[self].Field[alloc::collections::btree::node::Handle::idx]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["::right_kv", "Argument[self].Field[alloc::collections::btree::node::Handle::node]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::right_kv", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::split", "Argument[self].Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::SplitResult::right].Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::split", "Argument[self].Field[alloc::collections::btree::node::Handle::node]", "ReturnValue.Field[alloc::collections::btree::node::SplitResult::left]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::awaken", "Argument[self].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::awaken", "Argument[self].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::borrow_valmut", "Argument[self].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::borrow_valmut", "Argument[self].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::cast_to_leaf_unchecked", "Argument[self].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::cast_to_leaf_unchecked", "Argument[self].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::dormant", "Argument[self].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::dormant", "Argument[self].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::find_lower_bound_edge", "Argument[0]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::find_lower_bound_edge", "Argument[self]", "ReturnValue.Field[0].Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::find_upper_bound_edge", "Argument[0]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::find_upper_bound_edge", "Argument[self]", "ReturnValue.Field[0].Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::first_edge", "Argument[self]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::first_kv", "Argument[self]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::force", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::forget_type", "Argument[self].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::forget_type", "Argument[self].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::height", "Argument[self].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue", "value", "dfc-generated"] + - ["::into_dying", "Argument[self].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::into_dying", "Argument[self].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::last_edge", "Argument[self]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::last_kv", "Argument[self]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::push_internal_level", "Argument[self].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::push_internal_level", "Argument[self].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::push_with_handle", "Argument[self].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::push_with_handle", "Argument[self].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::Handle::node].Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::reborrow", "Argument[self].Field[alloc::collections::btree::node::NodeRef::height]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["::reborrow", "Argument[self].Field[alloc::collections::btree::node::NodeRef::node]", "ReturnValue.Field[alloc::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["::search_node", "Argument[self]", "ReturnValue.Field[alloc::collections::btree::search::SearchResult::Found(0)].Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::search_node", "Argument[self]", "ReturnValue.Field[alloc::collections::btree::search::SearchResult::GoDown(0)].Field[alloc::collections::btree::node::Handle::node]", "value", "dfc-generated"] + - ["::search_tree_for_bifurcation", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "value", "dfc-generated"] + - ["::visit_nodes_in_order", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::forget_node_type", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_range", "Argument[0].Field[core::ops::range::Bound::Excluded(0)]", "ReturnValue.Field[alloc::collections::btree::search::SearchBound::Excluded(0)]", "value", "dfc-generated"] + - ["::from_range", "Argument[0].Field[core::ops::range::Bound::Included(0)]", "ReturnValue.Field[alloc::collections::btree::search::SearchBound::Included(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::collections::btree::set::BTreeSet::map].Reference", "ReturnValue.Field[alloc::collections::btree::set::BTreeSet::map]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::collections::btree::set::BTreeSet::map]", "ReturnValue.Field[alloc::collections::btree::set::BTreeSet::map]", "value", "dfc-generated"] + - ["::clone_from", "Argument[0].Field[alloc::collections::btree::set::BTreeSet::map]", "Argument[self].Field[alloc::collections::btree::set::BTreeSet::map].Reference", "value", "dfc-generated"] + - ["::clone_from", "Argument[0].Field[alloc::collections::btree::set::BTreeSet::map]", "Argument[self].Field[alloc::collections::btree::set::BTreeSet::map]", "value", "dfc-generated"] + - ["::difference", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::set::Difference::inner].Field[alloc::collections::btree::set::DifferenceInner::Search::other_set]", "value", "dfc-generated"] + - ["::extract_if", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::set::ExtractIf::pred]", "value", "dfc-generated"] + - ["::get_or_insert_with", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::intersection", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::set::Intersection::inner].Field[alloc::collections::btree::set::IntersectionInner::Search::large_set]", "value", "dfc-generated"] + - ["::intersection", "Argument[self]", "ReturnValue.Field[alloc::collections::btree::set::Intersection::inner].Field[alloc::collections::btree::set::IntersectionInner::Search::large_set]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::collections::btree::set::BTreeSet::map].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue", "value", "dfc-generated"] + - ["::split_off", "Argument[self].Field[alloc::collections::btree::set::BTreeSet::map].Field[alloc::collections::btree::map::BTreeMap::alloc]", "ReturnValue.Field[alloc::collections::btree::set::BTreeSet::map].Field[alloc::collections::btree::map::BTreeMap::alloc]", "value", "dfc-generated"] + - ["::with_mutable_key", "Argument[self].Field[alloc::collections::btree::set::CursorMut::inner].Field[alloc::collections::btree::map::CursorMut::inner]", "ReturnValue.Field[alloc::collections::btree::set::CursorMutKey::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::len", "Argument[self].Field[alloc::collections::btree::set::IntoIter::iter].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::set::IntoIter::iter].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::btree::set::IntoIter::iter].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::collections::btree::set::Iter::iter].Field[alloc::collections::btree::map::Keys::inner]", "ReturnValue.Field[alloc::collections::btree::set::Iter::iter].Field[alloc::collections::btree::map::Keys::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::collections::btree::set::Iter::iter].Reference", "ReturnValue.Field[alloc::collections::btree::set::Iter::iter]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::collections::btree::set::Iter::iter]", "ReturnValue.Field[alloc::collections::btree::set::Iter::iter]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::collections::btree::set::Range::iter].Field[alloc::collections::btree::map::Range::inner]", "ReturnValue.Field[alloc::collections::btree::set::Range::iter].Field[alloc::collections::btree::map::Range::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::collections::btree::set::Range::iter].Reference", "ReturnValue.Field[alloc::collections::btree::set::Range::iter]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::collections::btree::set::Range::iter]", "ReturnValue.Field[alloc::collections::btree::set::Range::iter]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::insert", "Argument[self].Field[alloc::collections::btree::set::entry::Entry::Occupied(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::get", "Argument[self].Field[alloc::collections::btree::set::entry::VacantEntry::inner].Field[alloc::collections::btree::map::entry::VacantEntry::key]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_value", "Argument[self].Field[alloc::collections::btree::set::entry::VacantEntry::inner].Field[alloc::collections::btree::map::entry::VacantEntry::key]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference.Field[alloc::collections::linked_list::Cursor::current]", "ReturnValue.Field[alloc::collections::linked_list::Cursor::current]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference.Field[alloc::collections::linked_list::Cursor::index]", "ReturnValue.Field[alloc::collections::linked_list::Cursor::index]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference.Field[alloc::collections::linked_list::Cursor::list]", "ReturnValue.Field[alloc::collections::linked_list::Cursor::list]", "value", "dfc-generated"] + - ["::as_list", "Argument[self].Field[alloc::collections::linked_list::Cursor::list]", "ReturnValue", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[alloc::collections::linked_list::Cursor::current].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[alloc::collections::linked_list::Cursor::current].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[alloc::collections::linked_list::Cursor::index]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::move_next", "Argument[self].Field[alloc::collections::linked_list::Cursor::list].Field[alloc::collections::linked_list::LinkedList::head]", "Argument[self].Field[alloc::collections::linked_list::Cursor::current]", "value", "dfc-generated"] + - ["::move_prev", "Argument[self].Field[alloc::collections::linked_list::Cursor::list].Field[alloc::collections::linked_list::LinkedList::len]", "Argument[self].Field[alloc::collections::linked_list::Cursor::index]", "value", "dfc-generated"] + - ["::move_prev", "Argument[self].Field[alloc::collections::linked_list::Cursor::list].Field[alloc::collections::linked_list::LinkedList::tail]", "Argument[self].Field[alloc::collections::linked_list::Cursor::current]", "value", "dfc-generated"] + - ["::as_cursor", "Argument[self].Field[alloc::collections::linked_list::CursorMut::current]", "ReturnValue.Field[alloc::collections::linked_list::Cursor::current]", "value", "dfc-generated"] + - ["::as_cursor", "Argument[self].Field[alloc::collections::linked_list::CursorMut::index]", "ReturnValue.Field[alloc::collections::linked_list::Cursor::index]", "value", "dfc-generated"] + - ["::as_cursor", "Argument[self].Field[alloc::collections::linked_list::CursorMut::list]", "ReturnValue.Field[alloc::collections::linked_list::Cursor::list]", "value", "dfc-generated"] + - ["::as_list", "Argument[self].Field[alloc::collections::linked_list::CursorMut::list]", "ReturnValue", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[alloc::collections::linked_list::CursorMut::current].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[alloc::collections::linked_list::CursorMut::current].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[alloc::collections::linked_list::CursorMut::index]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::insert_after", "Argument[self].Field[alloc::collections::linked_list::CursorMut::list].Field[alloc::collections::linked_list::LinkedList::len]", "Argument[self].Field[alloc::collections::linked_list::CursorMut::index]", "value", "dfc-generated"] + - ["::move_next", "Argument[self].Field[alloc::collections::linked_list::CursorMut::list].Field[alloc::collections::linked_list::LinkedList::head]", "Argument[self].Field[alloc::collections::linked_list::CursorMut::current]", "value", "dfc-generated"] + - ["::move_prev", "Argument[self].Field[alloc::collections::linked_list::CursorMut::list].Field[alloc::collections::linked_list::LinkedList::len]", "Argument[self].Field[alloc::collections::linked_list::CursorMut::index]", "value", "dfc-generated"] + - ["::move_prev", "Argument[self].Field[alloc::collections::linked_list::CursorMut::list].Field[alloc::collections::linked_list::LinkedList::tail]", "Argument[self].Field[alloc::collections::linked_list::CursorMut::current]", "value", "dfc-generated"] + - ["::remove_current", "Argument[self].Field[alloc::collections::linked_list::CursorMut::current].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::remove_current", "Argument[self].Field[alloc::collections::linked_list::CursorMut::current].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::remove_current_as_list", "Argument[self].Field[alloc::collections::linked_list::CursorMut::current].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::remove_current_as_list", "Argument[self].Field[alloc::collections::linked_list::CursorMut::current].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::splice_after", "Argument[self].Field[alloc::collections::linked_list::CursorMut::list].Field[alloc::collections::linked_list::LinkedList::len]", "Argument[self].Field[alloc::collections::linked_list::CursorMut::index]", "value", "dfc-generated"] + - ["::split_after", "Argument[self].Field[alloc::collections::linked_list::CursorMut::list].Field[alloc::collections::linked_list::LinkedList::alloc]", "ReturnValue.Field[alloc::collections::linked_list::LinkedList::alloc]", "value", "dfc-generated"] + - ["::split_after", "Argument[self].Field[alloc::collections::linked_list::CursorMut::list].Field[alloc::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[alloc::collections::linked_list::LinkedList::tail]", "value", "dfc-generated"] + - ["::split_before", "Argument[self].Field[alloc::collections::linked_list::CursorMut::index]", "ReturnValue.Field[alloc::collections::linked_list::LinkedList::len]", "value", "dfc-generated"] + - ["::split_before", "Argument[self].Field[alloc::collections::linked_list::CursorMut::list].Field[alloc::collections::linked_list::LinkedList::alloc]", "ReturnValue.Field[alloc::collections::linked_list::LinkedList::alloc]", "value", "dfc-generated"] + - ["::split_before", "Argument[self].Field[alloc::collections::linked_list::CursorMut::list].Field[alloc::collections::linked_list::LinkedList::head]", "ReturnValue.Field[alloc::collections::linked_list::LinkedList::head]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::linked_list::IntoIter::list].Field[alloc::collections::linked_list::LinkedList::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::linked_list::IntoIter::list].Field[alloc::collections::linked_list::LinkedList::len]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::linked_list::Iter::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::linked_list::Iter::len]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::linked_list::IterMut::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::linked_list::IterMut::len]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::clone_from", "Argument[0].Field[alloc::collections::linked_list::LinkedList::len]", "Argument[self].Field[alloc::collections::linked_list::LinkedList::len]", "value", "dfc-generated"] + - ["::cursor_back", "Argument[self].Field[alloc::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[alloc::collections::linked_list::Cursor::current]", "value", "dfc-generated"] + - ["::cursor_back", "Argument[self]", "ReturnValue.Field[alloc::collections::linked_list::Cursor::list]", "value", "dfc-generated"] + - ["::cursor_back_mut", "Argument[self].Field[alloc::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[alloc::collections::linked_list::CursorMut::current]", "value", "dfc-generated"] + - ["::cursor_back_mut", "Argument[self]", "ReturnValue.Field[alloc::collections::linked_list::CursorMut::list]", "value", "dfc-generated"] + - ["::cursor_front", "Argument[self].Field[alloc::collections::linked_list::LinkedList::head]", "ReturnValue.Field[alloc::collections::linked_list::Cursor::current]", "value", "dfc-generated"] + - ["::cursor_front", "Argument[self]", "ReturnValue.Field[alloc::collections::linked_list::Cursor::list]", "value", "dfc-generated"] + - ["::cursor_front_mut", "Argument[self].Field[alloc::collections::linked_list::LinkedList::head]", "ReturnValue.Field[alloc::collections::linked_list::CursorMut::current]", "value", "dfc-generated"] + - ["::cursor_front_mut", "Argument[self]", "ReturnValue.Field[alloc::collections::linked_list::CursorMut::list]", "value", "dfc-generated"] + - ["::extract_if", "Argument[0]", "ReturnValue.Field[alloc::collections::linked_list::ExtractIf::pred]", "value", "dfc-generated"] + - ["::extract_if", "Argument[self].Field[alloc::collections::linked_list::LinkedList::head]", "ReturnValue.Field[alloc::collections::linked_list::ExtractIf::it]", "value", "dfc-generated"] + - ["::extract_if", "Argument[self].Field[alloc::collections::linked_list::LinkedList::len]", "ReturnValue.Field[alloc::collections::linked_list::ExtractIf::old_len]", "value", "dfc-generated"] + - ["::extract_if", "Argument[self]", "ReturnValue.Field[alloc::collections::linked_list::ExtractIf::list]", "value", "dfc-generated"] + - ["::iter", "Argument[self].Field[alloc::collections::linked_list::LinkedList::head]", "ReturnValue.Field[alloc::collections::linked_list::Iter::head]", "value", "dfc-generated"] + - ["::iter", "Argument[self].Field[alloc::collections::linked_list::LinkedList::len]", "ReturnValue.Field[alloc::collections::linked_list::Iter::len]", "value", "dfc-generated"] + - ["::iter", "Argument[self].Field[alloc::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[alloc::collections::linked_list::Iter::tail]", "value", "dfc-generated"] + - ["::iter_mut", "Argument[self].Field[alloc::collections::linked_list::LinkedList::head]", "ReturnValue.Field[alloc::collections::linked_list::IterMut::head]", "value", "dfc-generated"] + - ["::iter_mut", "Argument[self].Field[alloc::collections::linked_list::LinkedList::len]", "ReturnValue.Field[alloc::collections::linked_list::IterMut::len]", "value", "dfc-generated"] + - ["::iter_mut", "Argument[self].Field[alloc::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[alloc::collections::linked_list::IterMut::tail]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::collections::linked_list::LinkedList::len]", "ReturnValue", "value", "dfc-generated"] + - ["::new_in", "Argument[0]", "ReturnValue.Field[alloc::collections::linked_list::LinkedList::alloc]", "value", "dfc-generated"] + - ["::split_off", "Argument[0]", "Argument[self].Field[alloc::collections::linked_list::LinkedList::len]", "value", "dfc-generated"] + - ["::split_off", "Argument[self].Field[alloc::collections::linked_list::LinkedList::alloc].Reference", "ReturnValue.Field[alloc::collections::linked_list::LinkedList::alloc]", "value", "dfc-generated"] + - ["::split_off", "Argument[self].Field[alloc::collections::linked_list::LinkedList::alloc]", "ReturnValue.Field[alloc::collections::linked_list::LinkedList::alloc]", "value", "dfc-generated"] + - ["::split_off", "Argument[self].Field[alloc::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[alloc::collections::linked_list::LinkedList::tail]", "value", "dfc-generated"] + - ["::spec_from_iter", "Argument[0].Field[alloc::collections::vec_deque::into_iter::IntoIter::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::read_to_end", "Argument[self].Field[alloc::collections::vec_deque::VecDeque::len]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::read_to_string", "Argument[self].Field[alloc::collections::vec_deque::VecDeque::len]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::copy_to", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::drain", "Argument[self].Field[core::ptr::unique::Unique::pointer]", "ReturnValue.Field[alloc::collections::vec_deque::drain::Drain::deque]", "value", "dfc-generated"] + - ["::from_contiguous_raw_parts_in", "Argument[1].Field[core::ops::range::Range::start]", "ReturnValue.Field[alloc::collections::vec_deque::VecDeque::head]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::collections::vec_deque::VecDeque::len]", "ReturnValue", "value", "dfc-generated"] + - ["::resize", "Argument[0]", "Argument[self].Field[alloc::collections::vec_deque::VecDeque::len]", "value", "dfc-generated"] + - ["::resize_with", "Argument[0]", "Argument[self].Field[alloc::collections::vec_deque::VecDeque::len]", "value", "dfc-generated"] + - ["::retain", "Argument[self].Element", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] + - ["::retain_mut", "Argument[self].Element", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] + - ["::shrink_to", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::split_off", "Argument[0]", "Argument[self].Field[alloc::collections::vec_deque::VecDeque::len]", "value", "dfc-generated"] + - ["::truncate", "Argument[0]", "Argument[self].Field[alloc::collections::vec_deque::VecDeque::len]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::vec_deque::drain::Drain::remaining]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::vec_deque::drain::Drain::remaining]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0].Field[core::ptr::unique::Unique::pointer]", "ReturnValue.Field[alloc::collections::vec_deque::drain::Drain::deque]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[alloc::collections::vec_deque::drain::Drain::idx]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[alloc::collections::vec_deque::drain::Drain::drain_len]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[alloc::collections::vec_deque::drain::Drain::remaining]", "value", "dfc-generated"] + - ["::advance_back_by", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::count", "Argument[self].Field[alloc::collections::vec_deque::into_iter::IntoIter::inner].Field[alloc::collections::vec_deque::VecDeque::len]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::vec_deque::into_iter::IntoIter::inner].Field[alloc::collections::vec_deque::VecDeque::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[alloc::collections::vec_deque::into_iter::IntoIter::inner].Field[alloc::collections::vec_deque::VecDeque::len]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::into_vecdeque", "Argument[self].Field[alloc::collections::vec_deque::into_iter::IntoIter::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[alloc::collections::vec_deque::into_iter::IntoIter::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[alloc::collections::vec_deque::iter::Iter::i1].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::try_fold", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[alloc::collections::vec_deque::iter::Iter::i1]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[alloc::collections::vec_deque::iter::Iter::i2]", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[alloc::collections::vec_deque::iter_mut::IterMut::i1]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[alloc::collections::vec_deque::iter_mut::IterMut::i2]", "value", "dfc-generated"] + - ["::borrow", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::index", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_bytes_with_nul", "Argument[self].Field[alloc::ffi::c_str::CString::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_c_str", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_c_str", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_vec_with_nul", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[alloc::ffi::c_str::FromVecWithNulError::bytes]", "value", "dfc-generated"] + - ["::as_bytes", "Argument[self].Field[alloc::ffi::c_str::FromVecWithNulError::bytes].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_bytes", "Argument[self].Field[alloc::ffi::c_str::FromVecWithNulError::bytes]", "ReturnValue", "value", "dfc-generated"] + - ["::source", "Argument[self].Field[alloc::ffi::c_str::IntoStringError::error]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_cstring", "Argument[self].Field[alloc::ffi::c_str::IntoStringError::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::utf8_error", "Argument[self].Field[alloc::ffi::c_str::IntoStringError::error]", "ReturnValue", "value", "dfc-generated"] + - ["::into_vec", "Argument[self].Field[1]", "ReturnValue", "value", "dfc-generated"] + - ["::into_vec", "Argument[self].Field[alloc::ffi::c_str::NulError(1)]", "ReturnValue", "value", "dfc-generated"] + - ["::nul_position", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::nul_position", "Argument[self].Field[alloc::ffi::c_str::NulError(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::allocator", "Argument[self].Field[alloc::raw_vec::RawVec::inner].Field[alloc::raw_vec::RawVecInner::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_nonnull_in", "Argument[2]", "ReturnValue.Field[alloc::raw_vec::RawVec::inner].Field[alloc::raw_vec::RawVecInner::alloc]", "value", "dfc-generated"] + - ["::from_raw_parts_in", "Argument[2]", "ReturnValue.Field[alloc::raw_vec::RawVec::inner].Field[alloc::raw_vec::RawVecInner::alloc]", "value", "dfc-generated"] + - ["::new_in", "Argument[0]", "ReturnValue.Field[alloc::raw_vec::RawVec::inner].Field[alloc::raw_vec::RawVecInner::alloc]", "value", "dfc-generated"] + - ["::with_capacity_in", "Argument[1]", "ReturnValue.Field[alloc::raw_vec::RawVec::inner].Field[alloc::raw_vec::RawVecInner::alloc]", "value", "dfc-generated"] + - ["::with_capacity_zeroed_in", "Argument[1]", "ReturnValue.Field[alloc::raw_vec::RawVec::inner].Field[alloc::raw_vec::RawVecInner::alloc]", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::try_from", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::allocator", "Argument[0].Field[alloc::rc::Rc::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::downcast", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::downgrade", "Argument[0].Field[alloc::rc::Rc::alloc].Reference", "ReturnValue.Field[alloc::rc::Weak::alloc]", "value", "dfc-generated"] + - ["::downgrade", "Argument[0].Field[alloc::rc::Rc::alloc]", "ReturnValue.Field[alloc::rc::Weak::alloc]", "value", "dfc-generated"] + - ["::downgrade", "Argument[0].Field[alloc::rc::Rc::ptr]", "ReturnValue.Field[alloc::rc::Weak::ptr]", "value", "dfc-generated"] + - ["::into_inner", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new_uninit_in", "Argument[0]", "ReturnValue.Field[alloc::rc::Rc::alloc]", "value", "dfc-generated"] + - ["::new_uninit_slice_in", "Argument[1]", "ReturnValue.Field[alloc::rc::Rc::alloc]", "value", "dfc-generated"] + - ["::new_zeroed_in", "Argument[0]", "ReturnValue.Field[alloc::rc::Rc::alloc]", "value", "dfc-generated"] + - ["::new_zeroed_slice_in", "Argument[1]", "ReturnValue.Field[alloc::rc::Rc::alloc]", "value", "dfc-generated"] + - ["::try_new_uninit_in", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::rc::Rc::alloc]", "value", "dfc-generated"] + - ["::try_new_zeroed_in", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::rc::Rc::alloc]", "value", "dfc-generated"] + - ["::try_unwrap", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::try_unwrap", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Reference", "value", "dfc-generated"] + - ["::try_unwrap", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::unwrap_or_clone", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::unwrap_or_clone", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::strong_ref", "Argument[self].Field[alloc::rc::RcInner::strong]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::weak_ref", "Argument[self].Field[alloc::rc::RcInner::weak]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::downgrade", "Argument[0].Field[alloc::rc::UniqueRc::alloc].Reference", "ReturnValue.Field[alloc::rc::Weak::alloc]", "value", "dfc-generated"] + - ["::downgrade", "Argument[0].Field[alloc::rc::UniqueRc::alloc]", "ReturnValue.Field[alloc::rc::Weak::alloc]", "value", "dfc-generated"] + - ["::downgrade", "Argument[0].Field[alloc::rc::UniqueRc::ptr]", "ReturnValue.Field[alloc::rc::Weak::ptr]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::rc::Weak::alloc].Reference", "ReturnValue.Field[alloc::rc::Weak::alloc]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::rc::Weak::alloc]", "ReturnValue.Field[alloc::rc::Weak::alloc]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::rc::Weak::ptr]", "ReturnValue.Field[alloc::rc::Weak::ptr]", "value", "dfc-generated"] + - ["::allocator", "Argument[self].Field[alloc::rc::Weak::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_raw_in", "Argument[1]", "ReturnValue.Field[alloc::rc::Weak::alloc]", "value", "dfc-generated"] + - ["::new_in", "Argument[0]", "ReturnValue.Field[alloc::rc::Weak::alloc]", "value", "dfc-generated"] + - ["::upgrade", "Argument[self].Field[alloc::rc::Weak::ptr]", "ReturnValue.Field[core::option::Option::Some(0)].Field[alloc::rc::Rc::ptr]", "value", "dfc-generated"] + - ["::strong_ref", "Argument[self].Field[alloc::rc::WeakInner::strong]", "ReturnValue", "value", "dfc-generated"] + - ["::weak_ref", "Argument[self].Field[alloc::rc::WeakInner::weak]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::as_bytes", "Argument[self].Field[alloc::string::FromUtf8Error::bytes].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_bytes", "Argument[self].Field[alloc::string::FromUtf8Error::bytes]", "ReturnValue", "value", "dfc-generated"] + - ["::utf8_error", "Argument[self].Field[alloc::string::FromUtf8Error::error]", "ReturnValue", "value", "dfc-generated"] + - ["::into_string", "Argument[self].Field[alloc::string::IntoChars::bytes].Element", "ReturnValue.Field[alloc::string::String::vec].Element", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::string::String::vec].Reference", "ReturnValue.Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::string::String::vec]", "ReturnValue.Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::string::String::vec].Reference", "ReturnValue.Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::string::String::vec]", "ReturnValue.Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::from", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::unmark", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_mut_vec", "Argument[self].Field[alloc::string::String::vec]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::drain", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_utf8", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[alloc::string::FromUtf8Error::bytes]", "value", "dfc-generated"] + - ["::from_utf8", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::from_utf8_lossy_owned", "Argument[0]", "ReturnValue.Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::from_utf8_unchecked", "Argument[0]", "ReturnValue.Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::into_bytes", "Argument[self].Field[alloc::string::String::vec]", "ReturnValue", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::string::String::vec].Field[alloc::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] + - ["::remove", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::split_off", "Argument[0]", "Argument[self].Field[alloc::string::String::vec].Field[alloc::vec::Vec::len]", "value", "dfc-generated"] + - ["::truncate", "Argument[0]", "Argument[self].Field[alloc::string::String::vec].Field[alloc::vec::Vec::len]", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::try_from", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_string", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::allocator", "Argument[0].Field[alloc::sync::Arc::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::downcast", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::downgrade", "Argument[0].Field[alloc::sync::Arc::alloc].Reference", "ReturnValue.Field[alloc::sync::Weak::alloc]", "value", "dfc-generated"] + - ["::downgrade", "Argument[0].Field[alloc::sync::Arc::alloc]", "ReturnValue.Field[alloc::sync::Weak::alloc]", "value", "dfc-generated"] + - ["::downgrade", "Argument[0].Field[alloc::sync::Arc::ptr]", "ReturnValue.Field[alloc::sync::Weak::ptr]", "value", "dfc-generated"] + - ["::new_uninit_in", "Argument[0]", "ReturnValue.Field[alloc::sync::Arc::alloc]", "value", "dfc-generated"] + - ["::new_uninit_slice_in", "Argument[1]", "ReturnValue.Field[alloc::sync::Arc::alloc]", "value", "dfc-generated"] + - ["::new_zeroed_in", "Argument[0]", "ReturnValue.Field[alloc::sync::Arc::alloc]", "value", "dfc-generated"] + - ["::new_zeroed_slice_in", "Argument[1]", "ReturnValue.Field[alloc::sync::Arc::alloc]", "value", "dfc-generated"] + - ["::try_new_uninit_in", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::sync::Arc::alloc]", "value", "dfc-generated"] + - ["::try_new_zeroed_in", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::sync::Arc::alloc]", "value", "dfc-generated"] + - ["::try_unwrap", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::sync::Weak::alloc].Reference", "ReturnValue.Field[alloc::sync::Weak::alloc]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::sync::Weak::alloc]", "ReturnValue.Field[alloc::sync::Weak::alloc]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::sync::Weak::ptr]", "ReturnValue.Field[alloc::sync::Weak::ptr]", "value", "dfc-generated"] + - ["::allocator", "Argument[self].Field[alloc::sync::Weak::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_raw", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_raw_in", "Argument[1]", "ReturnValue.Field[alloc::sync::Weak::alloc]", "value", "dfc-generated"] + - ["::new_in", "Argument[0]", "ReturnValue.Field[alloc::sync::Weak::alloc]", "value", "dfc-generated"] + - ["::upgrade", "Argument[self].Field[alloc::sync::Weak::ptr]", "ReturnValue.Field[core::option::Option::Some(0)].Field[alloc::sync::Arc::ptr]", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::bstr::ByteString(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::collections::binary_heap::BinaryHeap::data]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::string::String::vec]", "ReturnValue", "value", "dfc-generated"] + - ["::into_spans", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::buffer_size", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::copy_from", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::drain", "Argument[self].Field[core::ptr::unique::Unique::pointer]", "ReturnValue.Field[alloc::vec::drain::Drain::vec]", "value", "dfc-generated"] + - ["::extract_if", "Argument[1]", "ReturnValue.Field[alloc::vec::extract_if::ExtractIf::pred]", "value", "dfc-generated"] + - ["::extract_if", "Argument[self].Field[alloc::vec::Vec::len]", "ReturnValue.Field[alloc::vec::extract_if::ExtractIf::old_len]", "value", "dfc-generated"] + - ["::extract_if", "Argument[self]", "ReturnValue.Field[alloc::vec::extract_if::ExtractIf::vec]", "value", "dfc-generated"] + - ["::from_parts_in", "Argument[1]", "ReturnValue.Field[alloc::vec::Vec::len]", "value", "dfc-generated"] + - ["::from_raw_parts_in", "Argument[1]", "ReturnValue.Field[alloc::vec::Vec::len]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[alloc::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] + - ["::push_within_capacity", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::resize", "Argument[0]", "Argument[self].Field[alloc::vec::Vec::len]", "value", "dfc-generated"] + - ["::resize_with", "Argument[0]", "Argument[self].Field[alloc::vec::Vec::len]", "value", "dfc-generated"] + - ["::set_len", "Argument[0]", "Argument[self].Field[alloc::vec::Vec::len]", "value", "dfc-generated"] + - ["::splice", "Argument[self].Field[core::ptr::unique::Unique::pointer]", "ReturnValue.Field[alloc::vec::splice::Splice::drain].Field[alloc::vec::drain::Drain::vec]", "value", "dfc-generated"] + - ["::split_off", "Argument[0]", "Argument[self].Field[alloc::vec::Vec::len]", "value", "dfc-generated"] + - ["::truncate", "Argument[0]", "Argument[self].Field[alloc::vec::Vec::len]", "value", "dfc-generated"] + - ["::try_with_capacity_in", "Argument[1]", "ReturnValue.Field[alloc::raw_vec::RawVec::inner].Field[alloc::raw_vec::RawVecInner::alloc]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0].Field[alloc::vec::Vec::len]", "ReturnValue.Field[alloc::vec::extract_if::ExtractIf::old_len]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[alloc::vec::extract_if::ExtractIf::vec]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[alloc::vec::extract_if::ExtractIf::pred]", "value", "dfc-generated"] + - ["::as_into_iter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[alloc::vec::into_iter::IntoIter::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::allocator", "Argument[self].Field[alloc::vec::into_iter::IntoIter::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::forget_allocation_drop_remaining", "Argument[self].Field[alloc::vec::into_iter::IntoIter::buf]", "Argument[self].Field[alloc::vec::into_iter::IntoIter::ptr]", "value", "dfc-generated"] + - ["::drop", "Argument[self].Field[alloc::vec::set_len_on_drop::SetLenOnDrop::local_len]", "Argument[self].Field[alloc::vec::set_len_on_drop::SetLenOnDrop::len].Reference", "value", "dfc-generated"] + - ["::current_len", "Argument[self].Field[alloc::vec::set_len_on_drop::SetLenOnDrop::local_len]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0].Reference", "ReturnValue.Field[alloc::vec::set_len_on_drop::SetLenOnDrop::local_len]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[alloc::vec::set_len_on_drop::SetLenOnDrop::len]", "value", "dfc-generated"] + - ["::sp", "Argument[self].Field[as_if_std::the_backtrace_crate::backtrace::Frame::inner].Field[backtrace::backtrace::Frame::inner].Field[std::backtrace_rs::backtrace::Frame::inner].Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "value", "dfc-generated"] + - ["::sp", "Argument[self].Reference.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[as_if_std::the_backtrace_crate::capture::Backtrace::frames].Field[backtrace::capture::Backtrace::frames].Field[std::backtrace_rs::capture::Backtrace::frames]", "value", "dfc-generated"] + - ["::into", "Argument[self].Field[as_if_std::the_backtrace_crate::capture::Backtrace::frames].Field[backtrace::capture::Backtrace::frames].Field[std::backtrace_rs::capture::Backtrace::frames]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[as_if_std::the_backtrace_crate::capture::BacktraceFrame::frame].Field[backtrace::capture::BacktraceFrame::frame].Field[std::backtrace_rs::capture::BacktraceFrame::frame].Field[as_if_std::the_backtrace_crate::capture::Frame::Raw(0)].Field[backtrace::capture::Frame::Raw(0)].Field[std::backtrace_rs::capture::Frame::Raw(0)]", "value", "dfc-generated"] + - ["::symbols", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::colno", "Argument[self].Field[as_if_std::the_backtrace_crate::capture::BacktraceSymbol::colno].Field[backtrace::capture::BacktraceSymbol::colno].Field[std::backtrace_rs::capture::BacktraceSymbol::colno]", "ReturnValue", "value", "dfc-generated"] + - ["::lineno", "Argument[self].Field[as_if_std::the_backtrace_crate::capture::BacktraceSymbol::lineno].Field[backtrace::capture::BacktraceSymbol::lineno].Field[std::backtrace_rs::capture::BacktraceSymbol::lineno]", "ReturnValue", "value", "dfc-generated"] + - ["::name", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::formatter", "Argument[self].Field[as_if_std::the_backtrace_crate::print::BacktraceFmt::fmt].Field[backtrace::print::BacktraceFmt::fmt].Field[std::backtrace_rs::print::BacktraceFmt::fmt]", "ReturnValue", "value", "dfc-generated"] + - ["::frame", "Argument[self]", "ReturnValue.Field[as_if_std::the_backtrace_crate::print::BacktraceFrameFmt::fmt].Field[backtrace::print::BacktraceFrameFmt::fmt].Field[std::backtrace_rs::print::BacktraceFrameFmt::fmt]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[as_if_std::the_backtrace_crate::print::BacktraceFmt::fmt].Field[backtrace::print::BacktraceFmt::fmt].Field[std::backtrace_rs::print::BacktraceFmt::fmt]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[as_if_std::the_backtrace_crate::print::BacktraceFmt::format].Field[backtrace::print::BacktraceFmt::format].Field[std::backtrace_rs::print::BacktraceFmt::format]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[as_if_std::the_backtrace_crate::print::BacktraceFmt::print_path].Field[backtrace::print::BacktraceFmt::print_path].Field[std::backtrace_rs::print::BacktraceFmt::print_path]", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::Symbol::inner].Field[backtrace::symbolize::Symbol::inner].Field[std::backtrace_rs::symbolize::Symbol::inner].Field[as_if_std::the_backtrace_crate::symbolize::gimli::Symbol::Symtab::name].Field[backtrace::symbolize::gimli::Symbol::Symtab::name].Field[std::backtrace_rs::symbolize::gimli::Symbol::Symtab::name]", "ReturnValue.Field[core::option::Option::Some(0)].Field[as_if_std::the_backtrace_crate::symbolize::SymbolName::bytes].Field[backtrace::symbolize::SymbolName::bytes].Field[std::backtrace_rs::symbolize::SymbolName::bytes]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::as_bytes", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::SymbolName::bytes].Field[backtrace::symbolize::SymbolName::bytes].Field[std::backtrace_rs::symbolize::SymbolName::bytes]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[as_if_std::the_backtrace_crate::symbolize::SymbolName::bytes].Field[backtrace::symbolize::SymbolName::bytes].Field[std::backtrace_rs::symbolize::SymbolName::bytes]", "value", "dfc-generated"] + - ["::addr", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::gimli::Symbol::Frame::addr].Field[backtrace::symbolize::gimli::Symbol::Frame::addr].Field[std::backtrace_rs::symbolize::gimli::Symbol::Frame::addr].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::gimli::Symbol::Symtab::name].Field[backtrace::symbolize::gimli::Symbol::Symtab::name].Field[std::backtrace_rs::symbolize::gimli::Symbol::Symtab::name]", "ReturnValue.Field[core::option::Option::Some(0)].Field[as_if_std::the_backtrace_crate::symbolize::SymbolName::bytes].Field[backtrace::symbolize::SymbolName::bytes].Field[std::backtrace_rs::symbolize::SymbolName::bytes]", "value", "dfc-generated"] + - ["::section", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::map", "Argument[1]", "ReturnValue.Field[core::option::Option::Some(0)].Field[as_if_std::the_backtrace_crate::symbolize::gimli::mmap::Mmap::len].Field[backtrace::symbolize::gimli::mmap::Mmap::len].Field[std::backtrace_rs::symbolize::gimli::mmap::Mmap::len]", "value", "dfc-generated"] + - ["::pathname", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::gimli::parse_running_mmaps::MapsEntry::pathname].Field[backtrace::symbolize::gimli::parse_running_mmaps::MapsEntry::pathname].Field[std::backtrace_rs::symbolize::gimli::parse_running_mmaps::MapsEntry::pathname]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::allocate", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::sp", "Argument[self].Field[as_if_std::the_backtrace_crate::backtrace::Frame::inner].Field[backtrace::backtrace::Frame::inner].Field[std::backtrace_rs::backtrace::Frame::inner].Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "value", "dfc-generated"] + - ["::sp", "Argument[self].Reference.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[as_if_std::the_backtrace_crate::capture::Backtrace::frames].Field[backtrace::capture::Backtrace::frames].Field[std::backtrace_rs::capture::Backtrace::frames]", "value", "dfc-generated"] + - ["::into", "Argument[self].Field[as_if_std::the_backtrace_crate::capture::Backtrace::frames].Field[backtrace::capture::Backtrace::frames].Field[std::backtrace_rs::capture::Backtrace::frames]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[as_if_std::the_backtrace_crate::capture::BacktraceFrame::frame].Field[backtrace::capture::BacktraceFrame::frame].Field[std::backtrace_rs::capture::BacktraceFrame::frame].Field[as_if_std::the_backtrace_crate::capture::Frame::Raw(0)].Field[backtrace::capture::Frame::Raw(0)].Field[std::backtrace_rs::capture::Frame::Raw(0)]", "value", "dfc-generated"] + - ["::symbols", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::colno", "Argument[self].Field[as_if_std::the_backtrace_crate::capture::BacktraceSymbol::colno].Field[backtrace::capture::BacktraceSymbol::colno].Field[std::backtrace_rs::capture::BacktraceSymbol::colno]", "ReturnValue", "value", "dfc-generated"] + - ["::lineno", "Argument[self].Field[as_if_std::the_backtrace_crate::capture::BacktraceSymbol::lineno].Field[backtrace::capture::BacktraceSymbol::lineno].Field[std::backtrace_rs::capture::BacktraceSymbol::lineno]", "ReturnValue", "value", "dfc-generated"] + - ["::name", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::formatter", "Argument[self].Field[as_if_std::the_backtrace_crate::print::BacktraceFmt::fmt].Field[backtrace::print::BacktraceFmt::fmt].Field[std::backtrace_rs::print::BacktraceFmt::fmt]", "ReturnValue", "value", "dfc-generated"] + - ["::frame", "Argument[self]", "ReturnValue.Field[as_if_std::the_backtrace_crate::print::BacktraceFrameFmt::fmt].Field[backtrace::print::BacktraceFrameFmt::fmt].Field[std::backtrace_rs::print::BacktraceFrameFmt::fmt]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[as_if_std::the_backtrace_crate::print::BacktraceFmt::fmt].Field[backtrace::print::BacktraceFmt::fmt].Field[std::backtrace_rs::print::BacktraceFmt::fmt]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[as_if_std::the_backtrace_crate::print::BacktraceFmt::format].Field[backtrace::print::BacktraceFmt::format].Field[std::backtrace_rs::print::BacktraceFmt::format]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[as_if_std::the_backtrace_crate::print::BacktraceFmt::print_path].Field[backtrace::print::BacktraceFmt::print_path].Field[std::backtrace_rs::print::BacktraceFmt::print_path]", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::Symbol::inner].Field[backtrace::symbolize::Symbol::inner].Field[std::backtrace_rs::symbolize::Symbol::inner].Field[as_if_std::the_backtrace_crate::symbolize::gimli::Symbol::Symtab::name].Field[backtrace::symbolize::gimli::Symbol::Symtab::name].Field[std::backtrace_rs::symbolize::gimli::Symbol::Symtab::name]", "ReturnValue.Field[core::option::Option::Some(0)].Field[as_if_std::the_backtrace_crate::symbolize::SymbolName::bytes].Field[backtrace::symbolize::SymbolName::bytes].Field[std::backtrace_rs::symbolize::SymbolName::bytes]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::as_bytes", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::SymbolName::bytes].Field[backtrace::symbolize::SymbolName::bytes].Field[std::backtrace_rs::symbolize::SymbolName::bytes]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[as_if_std::the_backtrace_crate::symbolize::SymbolName::bytes].Field[backtrace::symbolize::SymbolName::bytes].Field[std::backtrace_rs::symbolize::SymbolName::bytes]", "value", "dfc-generated"] + - ["::addr", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::gimli::Symbol::Frame::addr].Field[backtrace::symbolize::gimli::Symbol::Frame::addr].Field[std::backtrace_rs::symbolize::gimli::Symbol::Frame::addr].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::gimli::Symbol::Symtab::name].Field[backtrace::symbolize::gimli::Symbol::Symtab::name].Field[std::backtrace_rs::symbolize::gimli::Symbol::Symtab::name]", "ReturnValue.Field[core::option::Option::Some(0)].Field[as_if_std::the_backtrace_crate::symbolize::SymbolName::bytes].Field[backtrace::symbolize::SymbolName::bytes].Field[std::backtrace_rs::symbolize::SymbolName::bytes]", "value", "dfc-generated"] + - ["::section", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::map", "Argument[1]", "ReturnValue.Field[core::option::Option::Some(0)].Field[as_if_std::the_backtrace_crate::symbolize::gimli::mmap::Mmap::len].Field[backtrace::symbolize::gimli::mmap::Mmap::len].Field[std::backtrace_rs::symbolize::gimli::mmap::Mmap::len]", "value", "dfc-generated"] + - ["::pathname", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::gimli::parse_running_mmaps::MapsEntry::pathname].Field[backtrace::symbolize::gimli::parse_running_mmaps::MapsEntry::pathname].Field[std::backtrace_rs::symbolize::gimli::parse_running_mmaps::MapsEntry::pathname]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::allocate", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "Argument[self].Field[connect5::List::p_move].Element", "value", "dfc-generated"] + - ["::size", "Argument[self].Field[connect5::List::p_size]", "ReturnValue", "value", "dfc-generated"] + - ["::align", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::align_to", "Argument[self].Field[core::alloc::layout::Layout::align]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::alloc::layout::Layout::align]", "value", "dfc-generated"] + - ["::align_to", "Argument[self].Field[core::alloc::layout::Layout::size]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::alloc::layout::Layout::size]", "value", "dfc-generated"] + - ["::extend_packed", "Argument[self].Field[core::alloc::layout::Layout::align]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::alloc::layout::Layout::align]", "value", "dfc-generated"] + - ["::from_size_align", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::alloc::layout::Layout::size]", "value", "dfc-generated"] + - ["::from_size_align_unchecked", "Argument[0]", "ReturnValue.Field[core::alloc::layout::Layout::size]", "value", "dfc-generated"] + - ["::repeat", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::repeat_packed", "Argument[self].Field[core::alloc::layout::Layout::align]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::alloc::layout::Layout::align]", "value", "dfc-generated"] + - ["::size", "Argument[self].Field[core::alloc::layout::Layout::size]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rfold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::array::iter::IntoIter::data]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[1].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::array::iter::IntoIter::alive].Field[core::ops::index_range::IndexRange::end]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[1].Field[core::ops::range::Range::start]", "ReturnValue.Field[core::array::iter::IntoIter::alive].Field[core::ops::index_range::IndexRange::start]", "value", "dfc-generated"] + - ["::to_char", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::try_capture", "Argument[self].Field[0].Reference", "Argument[0].Field[core::asserting::Capture::elem].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::try_capture", "Argument[self].Field[core::asserting::Wrapper(0)].Reference", "Argument[0].Field[core::asserting::Capture::elem].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clamp", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::clamp", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::clamp", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::max", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::max", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::min", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::min", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::select_unpredictable", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::select_unpredictable", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["::then", "Argument[0].ReturnValue", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::then_some", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Field[core::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self].Field[core::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[core::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[core::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[core::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[core::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[0].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[core::bstr::ByteStr(0)].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::index", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::index_mut", "Argument[self].Field[0].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::index_mut", "Argument[self].Field[core::bstr::ByteStr(0)].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::index_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_bytes", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_bytes", "Argument[self].Field[core::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_bytes", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_bytes_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Field[core::cell::BorrowRef::borrow]", "ReturnValue.Field[core::cell::BorrowRef::borrow]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::cell::Cell::value].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_array_of_cells", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_slice_of_cells", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::cell::Cell::value].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[core::cell::Cell::value].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::cell::Cell::value].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::update", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::filter_map", "Argument[0].Field[core::cell::Ref::borrow]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::cell::Ref::borrow]", "value", "dfc-generated"] + - ["::filter_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::filter_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::map", "Argument[0].Field[core::cell::Ref::borrow]", "ReturnValue.Field[core::cell::Ref::borrow]", "value", "dfc-generated"] + - ["::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::map_split", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["::map_split", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::cell::RefCell::value].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::borrow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::borrow_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::cell::RefCell::value].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[core::cell::RefCell::value].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::cell::RefCell::value].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::try_borrow_unguarded", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::undo_leak", "Argument[self].Field[core::cell::RefCell::value].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::filter_map", "Argument[0].Field[core::cell::RefMut::borrow]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::cell::RefMut::borrow]", "value", "dfc-generated"] + - ["::filter_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::filter_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::map", "Argument[0].Field[core::cell::RefMut::borrow]", "ReturnValue.Field[core::cell::RefMut::borrow]", "value", "dfc-generated"] + - ["::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::map_split", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["::map_split", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::cell::SyncUnsafeCell::value].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::cell::SyncUnsafeCell::value].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[core::cell::SyncUnsafeCell::value].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::cell::SyncUnsafeCell::value].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::raw_get", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::raw_get", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_or_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_or_try_init", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[core::cell::once::OnceCell::inner].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::set", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::try_insert", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[1]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::as_utf8_pattern", "Argument[self].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::str::pattern::Utf8Pattern::CharPattern(0)]", "value", "dfc-generated"] + - ["::into_searcher", "Argument[0]", "ReturnValue.Field[core::str::pattern::CharSearcher::haystack]", "value", "dfc-generated"] + - ["::into_searcher", "Argument[self]", "ReturnValue.Field[core::str::pattern::CharSearcher::needle]", "value", "dfc-generated"] + - ["::rfold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[0].Field[core::char::EscapeDebugInner::Char(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::char::EscapeDebug(0)].Field[core::char::EscapeDebugInner::Char(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::rfold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::rfold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self].Field[core::char::decode::DecodeUtf16::iter].Element", "Argument[self].Field[core::char::decode::DecodeUtf16::buf].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::char::decode::DecodeUtf16::iter].Element", "ReturnValue", "value", "dfc-generated"] + - ["::unpaired_surrogate", "Argument[self].Field[core::char::decode::DecodeUtf16Error::code]", "ReturnValue", "value", "dfc-generated"] + - ["::from_digit", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_ascii_lowercase", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::to_ascii_uppercase", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::then", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::then", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::then_with", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::then_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone_from", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x4(0)].Field[core_arch::core_arch::simd::f16x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x4(0)].Field[core_arch::core_arch::simd::f16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f16x4(0)].Field[core_arch::core_arch::simd::f16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f16x4(0)].Field[core_arch::core_arch::simd::f16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f16x4(0)].Field[core_arch::core_arch::simd::f16x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x2(0)].Field[core_arch::core_arch::simd::f32x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x2(0)].Field[core_arch::core_arch::simd::f32x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f32x2(0)].Field[core_arch::core_arch::simd::f32x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x4(0)].Field[core_arch::core_arch::simd::f32x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x4(0)].Field[core_arch::core_arch::simd::f32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f32x4(0)].Field[core_arch::core_arch::simd::f32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f32x4(0)].Field[core_arch::core_arch::simd::f32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f32x4(0)].Field[core_arch::core_arch::simd::f32x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x1(0)].Field[core_arch::core_arch::simd::f64x1(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x1(0)].Field[core_arch::core_arch::simd::f64x1(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x2(0)].Field[core_arch::core_arch::simd::f64x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x2(0)].Field[core_arch::core_arch::simd::f64x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f64x2(0)].Field[core_arch::core_arch::simd::f64x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x4(0)].Field[core_arch::core_arch::simd::f64x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x4(0)].Field[core_arch::core_arch::simd::f64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f64x4(0)].Field[core_arch::core_arch::simd::f64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f64x4(0)].Field[core_arch::core_arch::simd::f64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f64x4(0)].Field[core_arch::core_arch::simd::f64x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x2(0)].Field[core_arch::core_arch::simd::i16x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x2(0)].Field[core_arch::core_arch::simd::i16x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i16x2(0)].Field[core_arch::core_arch::simd::i16x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x4(0)].Field[core_arch::core_arch::simd::i16x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x4(0)].Field[core_arch::core_arch::simd::i16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i16x4(0)].Field[core_arch::core_arch::simd::i16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i16x4(0)].Field[core_arch::core_arch::simd::i16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i16x4(0)].Field[core_arch::core_arch::simd::i16x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x2(0)].Field[core_arch::core_arch::simd::i32x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x2(0)].Field[core_arch::core_arch::simd::i32x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i32x2(0)].Field[core_arch::core_arch::simd::i32x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x4(0)].Field[core_arch::core_arch::simd::i32x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x4(0)].Field[core_arch::core_arch::simd::i32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i32x4(0)].Field[core_arch::core_arch::simd::i32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i32x4(0)].Field[core_arch::core_arch::simd::i32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i32x4(0)].Field[core_arch::core_arch::simd::i32x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x1(0)].Field[core_arch::core_arch::simd::i64x1(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x1(0)].Field[core_arch::core_arch::simd::i64x1(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x2(0)].Field[core_arch::core_arch::simd::i64x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x2(0)].Field[core_arch::core_arch::simd::i64x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i64x2(0)].Field[core_arch::core_arch::simd::i64x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x4(0)].Field[core_arch::core_arch::simd::i64x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x4(0)].Field[core_arch::core_arch::simd::i64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i64x4(0)].Field[core_arch::core_arch::simd::i64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i64x4(0)].Field[core_arch::core_arch::simd::i64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i64x4(0)].Field[core_arch::core_arch::simd::i64x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x2(0)].Field[core_arch::core_arch::simd::i8x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x2(0)].Field[core_arch::core_arch::simd::i8x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i8x2(0)].Field[core_arch::core_arch::simd::i8x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x4(0)].Field[core_arch::core_arch::simd::i8x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x4(0)].Field[core_arch::core_arch::simd::i8x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i8x4(0)].Field[core_arch::core_arch::simd::i8x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i8x4(0)].Field[core_arch::core_arch::simd::i8x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i8x4(0)].Field[core_arch::core_arch::simd::i8x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[32]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[33]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[34]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[35]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[36]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[37]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[38]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[39]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[40]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[41]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[42]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[43]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[44]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[45]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[46]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[47]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[48]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[49]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[50]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[51]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[52]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[53]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[54]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[55]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[56]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[57]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[58]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[59]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[60]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[61]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[62]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[63]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x2(0)].Field[core_arch::core_arch::simd::u16x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x2(0)].Field[core_arch::core_arch::simd::u16x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u16x2(0)].Field[core_arch::core_arch::simd::u16x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x4(0)].Field[core_arch::core_arch::simd::u16x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x4(0)].Field[core_arch::core_arch::simd::u16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u16x4(0)].Field[core_arch::core_arch::simd::u16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u16x4(0)].Field[core_arch::core_arch::simd::u16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u16x4(0)].Field[core_arch::core_arch::simd::u16x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[32]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[33]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[34]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[35]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[36]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[37]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[38]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[39]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[40]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[41]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[42]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[43]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[44]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[45]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[46]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[47]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[48]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[49]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[50]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[51]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[52]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[53]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[54]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[55]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[56]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[57]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[58]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[59]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[60]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[61]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[62]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[63]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x2(0)].Field[core_arch::core_arch::simd::u32x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x2(0)].Field[core_arch::core_arch::simd::u32x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u32x2(0)].Field[core_arch::core_arch::simd::u32x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x4(0)].Field[core_arch::core_arch::simd::u32x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x4(0)].Field[core_arch::core_arch::simd::u32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u32x4(0)].Field[core_arch::core_arch::simd::u32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u32x4(0)].Field[core_arch::core_arch::simd::u32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u32x4(0)].Field[core_arch::core_arch::simd::u32x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x1(0)].Field[core_arch::core_arch::simd::u64x1(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x1(0)].Field[core_arch::core_arch::simd::u64x1(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x2(0)].Field[core_arch::core_arch::simd::u64x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x2(0)].Field[core_arch::core_arch::simd::u64x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u64x2(0)].Field[core_arch::core_arch::simd::u64x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x4(0)].Field[core_arch::core_arch::simd::u64x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x4(0)].Field[core_arch::core_arch::simd::u64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u64x4(0)].Field[core_arch::core_arch::simd::u64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u64x4(0)].Field[core_arch::core_arch::simd::u64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u64x4(0)].Field[core_arch::core_arch::simd::u64x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x2(0)].Field[core_arch::core_arch::simd::u8x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x2(0)].Field[core_arch::core_arch::simd::u8x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u8x2(0)].Field[core_arch::core_arch::simd::u8x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x4(0)].Field[core_arch::core_arch::simd::u8x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x4(0)].Field[core_arch::core_arch::simd::u8x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u8x4(0)].Field[core_arch::core_arch::simd::u8x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u8x4(0)].Field[core_arch::core_arch::simd::u8x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u8x4(0)].Field[core_arch::core_arch::simd::u8x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[32]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[33]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[34]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[35]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[36]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[37]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[38]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[39]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[40]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[41]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[42]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[43]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[44]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[45]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[46]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[47]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[48]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[49]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[50]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[51]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[52]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[53]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[54]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[55]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[56]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[57]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[58]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[59]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[60]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[61]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[62]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[63]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::from_bits", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::bf16(0)].Field[core_arch::core_arch::x86::bf16(0)]", "value", "dfc-generated"] + - ["::to_bits", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::to_bits", "Argument[self].Field[core::core_arch::x86::bf16(0)].Field[core_arch::core_arch::x86::bf16(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::select_mask", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::select_mask", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::select_mask", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::as_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::recip", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_degrees", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_radians", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::index", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::index_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fract", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fract", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_array", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_mut_array", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::provide_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::provide_ref_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::provide_value", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::provide_value_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::error::Source::current]", "ReturnValue", "value", "dfc-generated"] + - ["::as_request", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::backslash", "Argument[0]", "ReturnValue.Field[core::escape::EscapeIterInner::data].Element", "value", "dfc-generated"] + - ["::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self].Field[core::escape::EscapeIterInner::alive].Field[core::ops::range::Range::start]", "ReturnValue", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::escape::EscapeIterInner::alive].Field[core::ops::range::Range::end]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clamp", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::clamp", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["::clamp", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::fract", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::maximum", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::maximum", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::minimum", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::minimum", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::next_down", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::next_up", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::recip", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_degrees", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_radians", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clamp", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::clamp", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["::clamp", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::fract", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::maximum", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::maximum", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::minimum", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::minimum", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::next_down", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::next_up", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::recip", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_degrees", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_radians", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_c_string", "Argument[self].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[core::ffi::va_list::VaList::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[core::ffi::va_list::VaList::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_va_list", "Argument[self]", "ReturnValue.Field[core::ffi::va_list::VaList::inner]", "value", "dfc-generated"] + - ["::with_copy", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::spec_to_string", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_statically_known_str", "Argument[self].Field[core::fmt::Arguments::pieces].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Field[core::fmt::Arguments::pieces].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new_const", "Argument[0]", "ReturnValue.Field[core::fmt::Arguments::pieces]", "value", "dfc-generated"] + - ["::new_v1", "Argument[0]", "ReturnValue.Field[core::fmt::Arguments::pieces]", "value", "dfc-generated"] + - ["::new_v1", "Argument[1]", "ReturnValue.Field[core::fmt::Arguments::args]", "value", "dfc-generated"] + - ["::new_v1_formatted", "Argument[0]", "ReturnValue.Field[core::fmt::Arguments::pieces]", "value", "dfc-generated"] + - ["::new_v1_formatted", "Argument[1]", "ReturnValue.Field[core::fmt::Arguments::args]", "value", "dfc-generated"] + - ["::new_v1_formatted", "Argument[2]", "ReturnValue.Field[core::fmt::Arguments::fmt].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::debug_list", "Argument[self]", "ReturnValue.Field[core::fmt::builders::DebugList::inner].Field[core::fmt::builders::DebugInner::fmt]", "value", "dfc-generated"] + - ["::debug_map", "Argument[self]", "ReturnValue.Field[core::fmt::builders::DebugMap::fmt]", "value", "dfc-generated"] + - ["::debug_set", "Argument[self]", "ReturnValue.Field[core::fmt::builders::DebugSet::inner].Field[core::fmt::builders::DebugInner::fmt]", "value", "dfc-generated"] + - ["::debug_struct", "Argument[self]", "ReturnValue.Field[core::fmt::builders::DebugStruct::fmt]", "value", "dfc-generated"] + - ["::debug_tuple", "Argument[self]", "ReturnValue.Field[core::fmt::builders::DebugTuple::fmt]", "value", "dfc-generated"] + - ["::flags", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::fmt::Formatter::buf]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::fmt::Formatter::options]", "value", "dfc-generated"] + - ["::options", "Argument[self].Field[core::fmt::Formatter::options]", "ReturnValue", "value", "dfc-generated"] + - ["::pad", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::pad_integral", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::padding", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::precision", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::width", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::with_options", "Argument[0]", "ReturnValue.Field[core::fmt::Formatter::options]", "value", "dfc-generated"] + - ["::with_options", "Argument[self].Field[core::fmt::Formatter::buf]", "ReturnValue.Field[core::fmt::Formatter::buf]", "value", "dfc-generated"] + - ["::align", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::alternate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::create_formatter", "Argument[0]", "ReturnValue.Field[core::fmt::Formatter::buf]", "value", "dfc-generated"] + - ["::create_formatter", "Argument[self]", "ReturnValue.Field[core::fmt::Formatter::options]", "value", "dfc-generated"] + - ["::debug_as_hex", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::fill", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::get_precision", "Argument[self].Field[core::fmt::FormattingOptions::precision]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::get_width", "Argument[self].Field[core::fmt::FormattingOptions::width]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::precision", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::sign", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::sign_aware_zero_pad", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::width", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::entries", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::entry", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::entry_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[core::fmt::builders::DebugList::inner].Field[core::fmt::builders::DebugInner::result]", "ReturnValue", "value", "dfc-generated"] + - ["::entries", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::entry", "Argument[self].Field[core::fmt::builders::DebugMap::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::fmt::builders::DebugMap::result].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::entry", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[core::fmt::builders::DebugMap::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[core::fmt::builders::DebugMap::result]", "ReturnValue", "value", "dfc-generated"] + - ["::finish_non_exhaustive", "Argument[self].Field[core::fmt::builders::DebugMap::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::finish_non_exhaustive", "Argument[self].Field[core::fmt::builders::DebugMap::result]", "ReturnValue", "value", "dfc-generated"] + - ["::key", "Argument[self].Field[core::fmt::builders::DebugMap::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::fmt::builders::DebugMap::result].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::key", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::key_with", "Argument[self].Field[core::fmt::builders::DebugMap::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::fmt::builders::DebugMap::result].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::key_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::value", "Argument[self].Field[core::fmt::builders::DebugMap::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::fmt::builders::DebugMap::result].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::value", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::value_with", "Argument[self].Field[core::fmt::builders::DebugMap::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::fmt::builders::DebugMap::result].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::value_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::entries", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::entry", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::entry_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[core::fmt::builders::DebugSet::inner].Field[core::fmt::builders::DebugInner::result]", "ReturnValue", "value", "dfc-generated"] + - ["::finish_non_exhaustive", "Argument[self].Field[core::fmt::builders::DebugSet::inner].Field[core::fmt::builders::DebugInner::result]", "ReturnValue", "value", "dfc-generated"] + - ["::field", "Argument[self].Field[core::fmt::builders::DebugStruct::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::fmt::builders::DebugStruct::result].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::field", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::field_with", "Argument[self].Field[core::fmt::builders::DebugStruct::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::fmt::builders::DebugStruct::result].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::field_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[core::fmt::builders::DebugStruct::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[core::fmt::builders::DebugStruct::result]", "ReturnValue", "value", "dfc-generated"] + - ["::finish_non_exhaustive", "Argument[self].Field[core::fmt::builders::DebugStruct::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::finish_non_exhaustive", "Argument[self].Field[core::fmt::builders::DebugStruct::result]", "ReturnValue", "value", "dfc-generated"] + - ["::field", "Argument[self].Field[core::fmt::builders::DebugTuple::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::fmt::builders::DebugTuple::result].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::field", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::field_with", "Argument[self].Field[core::fmt::builders::DebugTuple::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::fmt::builders::DebugTuple::result].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::field_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[core::fmt::builders::DebugTuple::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[core::fmt::builders::DebugTuple::result]", "ReturnValue", "value", "dfc-generated"] + - ["::finish_non_exhaustive", "Argument[self].Field[core::fmt::builders::DebugTuple::result].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::finish_non_exhaustive", "Argument[self].Field[core::fmt::builders::DebugTuple::result]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::fmt", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::fmt", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::digit", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::digit", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::digit", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::digit", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::as_u16", "Argument[self].Field[core::fmt::rt::Argument::ty].Field[core::fmt::rt::ArgumentType::Count(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::from_usize", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::fmt::rt::Placeholder::position]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::fmt::rt::Placeholder::fill]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::fmt::rt::Placeholder::align]", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::fmt::rt::Placeholder::flags]", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::fmt::rt::Placeholder::precision]", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::fmt::rt::Placeholder::width]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[core::future::ready::Ready(0)].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::finish", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new_with_keys", "Argument[0]", "ReturnValue.Field[core::hash::sip::SipHasher13::hasher].Field[core::hash::sip::Hasher::k0]", "value", "dfc-generated"] + - ["::new_with_keys", "Argument[1]", "ReturnValue.Field[core::hash::sip::SipHasher13::hasher].Field[core::hash::sip::Hasher::k1]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cast_unsigned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_abs", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::checked_ilog10", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overflowing_div", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::overflowing_div_euclid", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::overflowing_neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::saturating_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::strict_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::wrapping_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cast_unsigned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_abs", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::checked_ilog10", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overflowing_div", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::overflowing_div_euclid", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::overflowing_neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::saturating_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::strict_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::wrapping_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cast_unsigned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_abs", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::checked_ilog10", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overflowing_div", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::overflowing_div_euclid", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::overflowing_neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::saturating_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::strict_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::wrapping_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cast_unsigned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_abs", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::checked_ilog10", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overflowing_div", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::overflowing_div_euclid", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::overflowing_neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::saturating_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::strict_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::wrapping_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cast_unsigned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_abs", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::checked_ilog10", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overflowing_div", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::overflowing_div_euclid", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::overflowing_neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::saturating_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::strict_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::wrapping_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::io::borrowed_buf::BorrowedBuf::buf]", "value", "dfc-generated"] + - ["::clear", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::init_len", "Argument[self].Field[core::io::borrowed_buf::BorrowedBuf::init]", "ReturnValue", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[core::io::borrowed_buf::BorrowedBuf::filled]", "ReturnValue", "value", "dfc-generated"] + - ["::set_init", "Argument[0]", "Argument[self].Field[core::io::borrowed_buf::BorrowedBuf::init]", "value", "dfc-generated"] + - ["::set_init", "Argument[0]", "ReturnValue.Field[core::io::borrowed_buf::BorrowedBuf::init]", "value", "dfc-generated"] + - ["::set_init", "Argument[self].Field[core::io::borrowed_buf::BorrowedBuf::init]", "ReturnValue.Field[core::io::borrowed_buf::BorrowedBuf::init]", "value", "dfc-generated"] + - ["::set_init", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::unfilled", "Argument[self].Field[core::io::borrowed_buf::BorrowedBuf::filled]", "ReturnValue.Field[core::io::borrowed_buf::BorrowedCursor::start]", "value", "dfc-generated"] + - ["::write", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::write_all", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::write_all_vectored", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::write_vectored", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::advance", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::advance_unchecked", "Argument[self]", "ReturnValue", "value", "df-generated"] + - ["::capacity", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::ensure_init", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::reborrow", "Argument[self].Field[core::io::borrowed_buf::BorrowedCursor::start]", "ReturnValue.Field[core::io::borrowed_buf::BorrowedCursor::start]", "value", "dfc-generated"] + - ["::set_init", "Argument[self].Field[core::io::borrowed_buf::BorrowedCursor::buf].Field[core::io::borrowed_buf::BorrowedBuf::init]", "ReturnValue.Field[core::io::borrowed_buf::BorrowedCursor::buf].Field[core::io::borrowed_buf::BorrowedBuf::init]", "value", "dfc-generated"] + - ["::set_init", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::written", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::cast_unsigned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_abs", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::checked_ilog10", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overflowing_div", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::overflowing_div_euclid", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::overflowing_neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::saturating_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::strict_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::wrapping_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_remainder", "Argument[self].Field[core::iter::adapters::array_chunks::ArrayChunks::remainder]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::array_chunks::ArrayChunks::iter]", "value", "dfc-generated"] + - ["::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rfold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[0].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::by_ref_sized::ByRefSized(0)].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[0].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::iter::adapters::by_ref_sized::ByRefSized(0)].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::iter::adapters::chain::Chain::a].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::iter::adapters::chain::Chain::b].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::iter::adapters::chain::Chain::a].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::rfind", "Argument[self].Field[core::iter::adapters::chain::Chain::a].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::rfind", "Argument[self].Field[core::iter::adapters::chain::Chain::b].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::find", "Argument[self].Field[core::iter::adapters::chain::Chain::a].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::find", "Argument[self].Field[core::iter::adapters::chain::Chain::b].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::chain::Chain::a].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::chain::Chain::b].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::iter::adapters::chain::Chain::b].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::chain::Chain::a].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::chain::Chain::b].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::cloned::Cloned::it]", "value", "dfc-generated"] + - ["::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::nth", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::copied::Copied::it]", "value", "dfc-generated"] + - ["::advance_by", "Argument[self].Field[core::iter::adapters::cycle::Cycle::orig].Reference", "Argument[self].Field[core::iter::adapters::cycle::Cycle::iter]", "value", "dfc-generated"] + - ["::advance_by", "Argument[self].Field[core::iter::adapters::cycle::Cycle::orig]", "Argument[self].Field[core::iter::adapters::cycle::Cycle::iter]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::try_fold", "Argument[self].Field[core::iter::adapters::cycle::Cycle::orig].Reference", "Argument[self].Field[core::iter::adapters::cycle::Cycle::iter]", "value", "dfc-generated"] + - ["::try_fold", "Argument[self].Field[core::iter::adapters::cycle::Cycle::orig]", "Argument[self].Field[core::iter::adapters::cycle::Cycle::iter]", "value", "dfc-generated"] + - ["::new", "Argument[0].Reference", "ReturnValue.Field[core::iter::adapters::cycle::Cycle::orig]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::cycle::Cycle::iter]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::cycle::Cycle::orig]", "value", "dfc-generated"] + - ["::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::nth_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::__iterator_get_unchecked", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::__iterator_get_unchecked", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::enumerate::Enumerate::count]", "ReturnValue.Field[core::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::enumerate::Enumerate::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[1]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::enumerate::Enumerate::iter].Element", "ReturnValue", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::iter::adapters::enumerate::Enumerate::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[1]", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::iter::adapters::enumerate::Enumerate::iter].Element", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::enumerate::Enumerate::iter]", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::filter::Filter::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::filter::Filter::predicate]", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::filter_map::FilterMap::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::filter_map::FilterMap::f]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::iter::adapters::flatten::FlatMap::inner].Reference", "ReturnValue.Field[core::iter::adapters::flatten::FlatMap::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::iter::adapters::flatten::FlatMap::inner]", "ReturnValue.Field[core::iter::adapters::flatten::FlatMap::inner]", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[core::iter::adapters::flatten::FlatMap::inner].Field[core::iter::adapters::flatten::FlattenCompat::backiter]", "ReturnValue.Field[2]", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[core::iter::adapters::flatten::FlatMap::inner].Field[core::iter::adapters::flatten::FlattenCompat::frontiter]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::iter::adapters::flatten::Flatten::inner].Reference", "ReturnValue.Field[core::iter::adapters::flatten::Flatten::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::iter::adapters::flatten::Flatten::inner]", "ReturnValue.Field[core::iter::adapters::flatten::Flatten::inner]", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::iter::adapters::flatten::FlattenCompat::frontiter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::flatten::FlattenCompat::backiter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::find", "Argument[self].Field[core::iter::adapters::fuse::Fuse::iter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::fuse::Fuse::iter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::iter::adapters::fuse::Fuse::iter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::iter::adapters::fuse::Fuse::iter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::iter::adapters::fuse::Fuse::iter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::rfind", "Argument[self].Field[core::iter::adapters::fuse::Fuse::iter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[core::iter::adapters::fuse::Fuse::iter]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::fuse::Fuse::iter].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::inspect::Inspect::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::inspect::Inspect::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::inspect::Inspect::f]", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::intersperse::Intersperse::separator]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::intersperse::IntersperseWith::separator]", "value", "dfc-generated"] + - ["::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::__iterator_get_unchecked", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::next_unchecked", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::iter::adapters::map::Map::iter]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::map::Map::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::map::Map::f]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::map_while::MapWhile::iter].Element", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::map_while::MapWhile::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::map_while::MapWhile::predicate]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::iter::adapters::map_windows::Buffer::start]", "ReturnValue.Field[core::iter::adapters::map_windows::Buffer::start]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::map_windows::MapWindows::f]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rfold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::peekable::Peekable::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::iter::adapters::peekable::Peekable::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::peekable::Peekable::iter]", "value", "dfc-generated"] + - ["::next_if", "Argument[self].Field[core::iter::adapters::peekable::Peekable::iter].Element", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] + - ["::next_if", "Argument[self].Field[core::iter::adapters::peekable::Peekable::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next_if_eq", "Argument[self].Field[core::iter::adapters::peekable::Peekable::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::peek", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::peek_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::next_back", "Argument[self].Field[core::iter::adapters::rev::Rev::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::iter::adapters::rev::Rev::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::rev::Rev::iter]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::scan::Scan::iter].Element", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::scan::Scan::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::scan::Scan::state]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::iter::adapters::scan::Scan::f]", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::last", "Argument[self].Field[core::iter::adapters::skip::Skip::iter].Element", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::skip::Skip::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::iter::adapters::skip::Skip::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::iter::adapters::skip::Skip::iter].Element", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::skip::Skip::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::skip::Skip::n]", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::skip_while::SkipWhile::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::skip_while::SkipWhile::predicate]", "value", "dfc-generated"] + - ["::spec_next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::spec_rfold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::spec_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::spec_rfold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::spec_rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::spec_try_rfold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::spec_try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::spec_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::spec_fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::spec_fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::spec_fold", "Argument[self].Field[core::iter::adapters::step_by::StepBy::iter].Element", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::spec_fold", "Argument[self].Field[core::iter::adapters::step_by::StepBy::iter].Field[core::ops::range::Range::start]", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::spec_next", "Argument[self].Field[core::iter::adapters::step_by::StepBy::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::spec_next", "Argument[self].Field[core::iter::adapters::step_by::StepBy::iter].Field[core::ops::range::Range::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::spec_nth", "Argument[self].Field[core::iter::adapters::step_by::StepBy::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::spec_size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::spec_try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::spec_try_fold", "Argument[self].Field[core::iter::adapters::step_by::StepBy::iter].Element", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[self].Field[core::iter::adapters::step_by::StepBy::iter].Element", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::step_by::StepBy::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::iter::adapters::step_by::StepBy::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[self].Field[core::iter::adapters::step_by::StepBy::iter].Element", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::spec_fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::spec_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::spec_fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::spec_fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::iter::adapters::take::Take::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::iter::adapters::take::Take::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[core::iter::adapters::take::Take::n]", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::take::Take::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::iter::adapters::take::Take::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[core::iter::adapters::take::Take::n]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[core::iter::adapters::take::Take::n]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::take::Take::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::take::Take::n]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::take_while::TakeWhile::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::adapters::take_while::TakeWhile::iter].Element", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::take_while::TakeWhile::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::take_while::TakeWhile::predicate]", "value", "dfc-generated"] + - ["::spec_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::spec_fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::spec_fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::zip::Zip::a]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::zip::Zip::b]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_back", "Argument[self].Field[core::iter::sources::repeat::Repeat::element].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::iter::sources::repeat::Repeat::element]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::iter::sources::repeat::Repeat::element].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::iter::sources::repeat::Repeat::element]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::sources::repeat::Repeat::element].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::iter::sources::repeat::Repeat::element]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::iter::sources::repeat::Repeat::element].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::iter::sources::repeat::Repeat::element]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::iter::sources::repeat_n::RepeatN::count]", "ReturnValue.Field[core::iter::sources::repeat_n::RepeatN::count]", "value", "dfc-generated"] + - ["::advance_back_by", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::advance_back_by", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::nth_back", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::rfold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[core::iter::sources::repeat_n::RepeatN::count]", "ReturnValue", "value", "dfc-generated"] + - ["::advance_by", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::advance_by", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::count", "Argument[self].Field[core::iter::sources::repeat_n::RepeatN::count]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[core::iter::sources::repeat_n::RepeatN::count]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[core::iter::sources::repeat_n::RepeatN::count]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::try_fold", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::try_fold", "Argument[self]", "Argument[1]", "taint", "df-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[core::mem::manually_drop::ManuallyDrop::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[core::mem::manually_drop::ManuallyDrop::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[0].Field[core::mem::manually_drop::ManuallyDrop::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::mem::manually_drop::ManuallyDrop::value]", "value", "dfc-generated"] + - ["::take", "Argument[0].Field[core::mem::manually_drop::ManuallyDrop::value]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::as_mut_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone_from_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::copy_from_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fill", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fill_with", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::slice_as_mut_ptr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::slice_as_ptr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::slice_assume_init_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::slice_assume_init_ref", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::net::ip_addr::IpAddr::V4(0)].Field[core::net::ip_addr::Ipv4Addr::octets]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::net::ip_addr::IpAddr::V4(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::net::ip_addr::IpAddr::V6(0)].Field[core::net::ip_addr::Ipv6Addr::octets]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::net::ip_addr::IpAddr::V6(0)]", "value", "dfc-generated"] + - ["::to_canonical", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::net::ip_addr::Ipv4Addr::octets]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::not", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_octets", "Argument[self].Field[core::net::ip_addr::Ipv4Addr::octets]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_octets", "Argument[0]", "ReturnValue.Field[core::net::ip_addr::Ipv4Addr::octets]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::net::ip_addr::Ipv4Addr::octets].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::net::ip_addr::Ipv4Addr::octets].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::net::ip_addr::Ipv4Addr::octets].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::net::ip_addr::Ipv4Addr::octets].Element", "value", "dfc-generated"] + - ["::octets", "Argument[self].Field[core::net::ip_addr::Ipv4Addr::octets]", "ReturnValue", "value", "dfc-generated"] + - ["::to_ipv6_compatible", "Argument[self].Field[core::net::ip_addr::Ipv4Addr::octets].Element", "ReturnValue.Field[core::net::ip_addr::Ipv6Addr::octets].Element", "value", "dfc-generated"] + - ["::to_ipv6_mapped", "Argument[self].Field[core::net::ip_addr::Ipv4Addr::octets].Element", "ReturnValue.Field[core::net::ip_addr::Ipv6Addr::octets].Element", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::net::ip_addr::Ipv6Addr::octets]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::not", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_octets", "Argument[self].Field[core::net::ip_addr::Ipv6Addr::octets]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_octets", "Argument[0]", "ReturnValue.Field[core::net::ip_addr::Ipv6Addr::octets]", "value", "dfc-generated"] + - ["::octets", "Argument[self].Field[core::net::ip_addr::Ipv6Addr::octets]", "ReturnValue", "value", "dfc-generated"] + - ["::to_canonical", "Argument[self].Reference", "ReturnValue.Field[core::net::ip_addr::IpAddr::V6(0)]", "value", "dfc-generated"] + - ["::to_ipv4_mapped", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0].Field[1]", "ReturnValue.Field[core::net::socket_addr::SocketAddr::V4(0)].Field[core::net::socket_addr::SocketAddrV4::port]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[1]", "ReturnValue.Field[core::net::socket_addr::SocketAddr::V6(0)].Field[core::net::socket_addr::SocketAddrV6::port]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::net::socket_addr::SocketAddr::V4(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::net::socket_addr::SocketAddr::V6(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0].Field[core::net::ip_addr::IpAddr::V4(0)]", "ReturnValue.Field[core::net::socket_addr::SocketAddr::V4(0)].Field[core::net::socket_addr::SocketAddrV4::ip]", "value", "dfc-generated"] + - ["::new", "Argument[0].Field[core::net::ip_addr::IpAddr::V6(0)]", "ReturnValue.Field[core::net::socket_addr::SocketAddr::V6(0)].Field[core::net::socket_addr::SocketAddrV6::ip]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::net::socket_addr::SocketAddr::V4(0)].Field[core::net::socket_addr::SocketAddrV4::port]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::net::socket_addr::SocketAddr::V6(0)].Field[core::net::socket_addr::SocketAddrV6::port]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::ip", "Argument[self].Field[core::net::socket_addr::SocketAddrV4::ip]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::net::socket_addr::SocketAddrV4::ip]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::net::socket_addr::SocketAddrV4::port]", "value", "dfc-generated"] + - ["::port", "Argument[self].Field[core::net::socket_addr::SocketAddrV4::port]", "ReturnValue", "value", "dfc-generated"] + - ["::set_ip", "Argument[0]", "Argument[self].Field[core::net::socket_addr::SocketAddrV4::ip]", "value", "dfc-generated"] + - ["::set_port", "Argument[0]", "Argument[self].Field[core::net::socket_addr::SocketAddrV4::port]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::flowinfo", "Argument[self].Field[core::net::socket_addr::SocketAddrV6::flowinfo]", "ReturnValue", "value", "dfc-generated"] + - ["::ip", "Argument[self].Field[core::net::socket_addr::SocketAddrV6::ip]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::net::socket_addr::SocketAddrV6::ip]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::net::socket_addr::SocketAddrV6::port]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::net::socket_addr::SocketAddrV6::flowinfo]", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::net::socket_addr::SocketAddrV6::scope_id]", "value", "dfc-generated"] + - ["::port", "Argument[self].Field[core::net::socket_addr::SocketAddrV6::port]", "ReturnValue", "value", "dfc-generated"] + - ["::scope_id", "Argument[self].Field[core::net::socket_addr::SocketAddrV6::scope_id]", "ReturnValue", "value", "dfc-generated"] + - ["::set_flowinfo", "Argument[0]", "Argument[self].Field[core::net::socket_addr::SocketAddrV6::flowinfo]", "value", "dfc-generated"] + - ["::set_ip", "Argument[0]", "Argument[self].Field[core::net::socket_addr::SocketAddrV6::ip]", "value", "dfc-generated"] + - ["::set_port", "Argument[0]", "Argument[self].Field[core::net::socket_addr::SocketAddrV6::port]", "value", "dfc-generated"] + - ["::set_scope_id", "Argument[0]", "Argument[self].Field[core::net::socket_addr::SocketAddrV6::scope_id]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::num::bignum::Big32x40::base]", "ReturnValue.Field[core::num::bignum::Big32x40::base]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::num::bignum::Big32x40::size]", "ReturnValue.Field[core::num::bignum::Big32x40::size]", "value", "dfc-generated"] + - ["::add", "Argument[0].Field[core::num::bignum::Big32x40::size]", "Argument[self].Field[core::num::bignum::Big32x40::size]", "value", "dfc-generated"] + - ["::add", "Argument[0].Field[core::num::bignum::Big32x40::size]", "ReturnValue.Field[core::num::bignum::Big32x40::size]", "value", "dfc-generated"] + - ["::add", "Argument[self].Field[core::num::bignum::Big32x40::size]", "ReturnValue.Field[core::num::bignum::Big32x40::size]", "value", "dfc-generated"] + - ["::add", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::add_small", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::digits", "Argument[self].Field[core::num::bignum::Big32x40::base].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::div_rem", "Argument[0].Field[core::num::bignum::Big32x40::size]", "Argument[2].Field[core::num::bignum::Big32x40::size]", "value", "dfc-generated"] + - ["::div_rem_small", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::from_small", "Argument[0]", "ReturnValue.Field[core::num::bignum::Big32x40::base].Element", "value", "dfc-generated"] + - ["::from_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_bit", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_bit", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::mul_digits", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mul_pow2", "Argument[self].Field[core::num::bignum::Big32x40::base].Element", "ReturnValue.Field[core::num::bignum::Big32x40::base].Element", "value", "dfc-generated"] + - ["::mul_pow2", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mul_pow5", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mul_small", "Argument[self].Field[core::num::bignum::Big32x40::size]", "ReturnValue.Field[core::num::bignum::Big32x40::size]", "value", "dfc-generated"] + - ["::mul_small", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::sub", "Argument[0].Field[core::num::bignum::Big32x40::size]", "Argument[self].Field[core::num::bignum::Big32x40::size]", "value", "dfc-generated"] + - ["::sub", "Argument[0].Field[core::num::bignum::Big32x40::size]", "ReturnValue.Field[core::num::bignum::Big32x40::size]", "value", "dfc-generated"] + - ["::sub", "Argument[self].Field[core::num::bignum::Big32x40::size]", "ReturnValue.Field[core::num::bignum::Big32x40::size]", "value", "dfc-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::num::bignum::tests::Big8x3::base]", "ReturnValue.Field[core::num::bignum::tests::Big8x3::base]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::num::bignum::tests::Big8x3::size]", "ReturnValue.Field[core::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] + - ["::add", "Argument[0].Field[core::num::bignum::tests::Big8x3::size]", "Argument[self].Field[core::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] + - ["::add", "Argument[0].Field[core::num::bignum::tests::Big8x3::size]", "ReturnValue.Field[core::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] + - ["::add", "Argument[self].Field[core::num::bignum::tests::Big8x3::size]", "ReturnValue.Field[core::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] + - ["::add", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::add_small", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::digits", "Argument[self].Field[core::num::bignum::tests::Big8x3::base].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::div_rem", "Argument[0].Field[core::num::bignum::tests::Big8x3::size]", "Argument[2].Field[core::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] + - ["::div_rem_small", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::from_small", "Argument[0]", "ReturnValue.Field[core::num::bignum::tests::Big8x3::base].Element", "value", "dfc-generated"] + - ["::from_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_bit", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_bit", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::mul_digits", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mul_pow2", "Argument[self].Field[core::num::bignum::tests::Big8x3::base].Element", "ReturnValue.Field[core::num::bignum::tests::Big8x3::base].Element", "value", "dfc-generated"] + - ["::mul_pow2", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mul_pow5", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mul_small", "Argument[self].Field[core::num::bignum::tests::Big8x3::size]", "ReturnValue.Field[core::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] + - ["::mul_small", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::sub", "Argument[0].Field[core::num::bignum::tests::Big8x3::size]", "Argument[self].Field[core::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] + - ["::sub", "Argument[0].Field[core::num::bignum::tests::Big8x3::size]", "ReturnValue.Field[core::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] + - ["::sub", "Argument[self].Field[core::num::bignum::tests::Big8x3::size]", "ReturnValue.Field[core::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::zero_pow2", "Argument[0]", "ReturnValue.Field[core::num::dec2flt::common::BiasedFp::p_biased]", "value", "dfc-generated"] + - ["::right_shift", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::try_add_digit", "Argument[0]", "Argument[self].Field[core::num::dec2flt::decimal_seq::DecimalSeq::digits].Element", "value", "dfc-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::normalize", "Argument[self].Field[core::num::diy_float::Fp::e]", "ReturnValue.Field[core::num::diy_float::Fp::e]", "value", "dfc-generated"] + - ["::normalize", "Argument[self].Field[core::num::diy_float::Fp::f]", "ReturnValue.Field[core::num::diy_float::Fp::f]", "value", "dfc-generated"] + - ["::normalize_to", "Argument[0]", "ReturnValue.Field[core::num::diy_float::Fp::e]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::kind", "Argument[self].Field[core::num::error::ParseIntError::kind]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::len", "Argument[self].Reference.Field[core::num::fmt::Part::Zero(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::write", "Argument[self].Reference.Field[core::num::fmt::Part::Zero(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::I32NotAllOnes(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::I32NotAllOnes(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::I64NotAllOnes(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::I64NotAllOnes(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::Nanoseconds(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::Nanoseconds(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::NonZeroI128Inner(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::NonZeroI128Inner(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::NonZeroI16Inner(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::NonZeroI16Inner(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::NonZeroI32Inner(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::NonZeroI32Inner(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::NonZeroI64Inner(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::NonZeroI64Inner(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::NonZeroI8Inner(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::NonZeroI8Inner(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::NonZeroIsizeInner(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::NonZeroIsizeInner(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::NonZeroU128Inner(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::NonZeroU128Inner(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::NonZeroU16Inner(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::NonZeroU16Inner(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::NonZeroU32Inner(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::NonZeroU32Inner(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::NonZeroU64Inner(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::NonZeroU64Inner(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::NonZeroU8Inner(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::NonZeroU8Inner(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::NonZeroUsizeInner(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::NonZeroUsizeInner(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::U32NotAllOnes(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::U32NotAllOnes(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::U64NotAllOnes(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::U64NotAllOnes(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::num::niche_types::UsizeNoHighBit(0)]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::num::niche_types::UsizeNoHighBit(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::bitor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::from_mut_unchecked", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::add_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::mul_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::sub_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs", "Argument[self].Field[0]", "ReturnValue.Field[core::num::saturating::Saturating(0)]", "value", "dfc-generated"] + - ["::abs", "Argument[self].Field[core::num::saturating::Saturating(0)]", "ReturnValue.Field[core::num::saturating::Saturating(0)]", "value", "dfc-generated"] + - ["::add_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::mul_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::sub_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shl_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::shr_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::abs", "Argument[self].Field[0]", "ReturnValue.Field[core::num::wrapping::Wrapping(0)]", "value", "dfc-generated"] + - ["::abs", "Argument[self].Field[core::num::wrapping::Wrapping(0)]", "ReturnValue.Field[core::num::wrapping::Wrapping(0)]", "value", "dfc-generated"] + - ["::from_residual", "Argument[0].Field[core::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Break(0)]", "value", "dfc-generated"] + - ["::branch", "Argument[self].Field[core::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Break(0)].Field[core::ops::control_flow::ControlFlow::Break(0)]", "value", "dfc-generated"] + - ["::branch", "Argument[self].Field[core::ops::control_flow::ControlFlow::Continue(0)]", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] + - ["::from_output", "Argument[0]", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] + - ["::break_value", "Argument[self].Field[core::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::continue_value", "Argument[self].Field[core::ops::control_flow::ControlFlow::Continue(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::into_try", "Argument[self].Field[core::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_value", "Argument[self].Field[core::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_value", "Argument[self].Field[core::ops::control_flow::ControlFlow::Continue(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::map_break", "Argument[0].ReturnValue", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Break(0)]", "value", "dfc-generated"] + - ["::map_break", "Argument[self].Field[core::ops::control_flow::ControlFlow::Break(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map_break", "Argument[self].Field[core::ops::control_flow::ControlFlow::Continue(0)]", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] + - ["::map_continue", "Argument[0].ReturnValue", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] + - ["::map_continue", "Argument[self].Field[core::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Break(0)]", "value", "dfc-generated"] + - ["::map_continue", "Argument[self].Field[core::ops::control_flow::ControlFlow::Continue(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::ops::index_range::IndexRange::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::end", "Argument[self].Field[core::ops::index_range::IndexRange::end]", "ReturnValue", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::ops::index_range::IndexRange::start]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[1]", "ReturnValue.Field[core::ops::index_range::IndexRange::end]", "value", "dfc-generated"] + - ["::start", "Argument[self].Field[core::ops::index_range::IndexRange::start]", "ReturnValue", "value", "dfc-generated"] + - ["::take_prefix", "Argument[self].Field[core::ops::index_range::IndexRange::end]", "Argument[self].Field[core::ops::index_range::IndexRange::start]", "value", "dfc-generated"] + - ["::take_prefix", "Argument[self].Field[core::ops::index_range::IndexRange::end]", "ReturnValue.Field[core::ops::index_range::IndexRange::end]", "value", "dfc-generated"] + - ["::take_prefix", "Argument[self].Field[core::ops::index_range::IndexRange::start]", "ReturnValue.Field[core::ops::index_range::IndexRange::start]", "value", "dfc-generated"] + - ["::take_suffix", "Argument[self].Field[core::ops::index_range::IndexRange::end]", "ReturnValue.Field[core::ops::index_range::IndexRange::end]", "value", "dfc-generated"] + - ["::take_suffix", "Argument[self].Field[core::ops::index_range::IndexRange::start]", "Argument[self].Field[core::ops::index_range::IndexRange::end]", "value", "dfc-generated"] + - ["::take_suffix", "Argument[self].Field[core::ops::index_range::IndexRange::start]", "ReturnValue.Field[core::ops::index_range::IndexRange::start]", "value", "dfc-generated"] + - ["::zero_to", "Argument[0]", "ReturnValue.Field[core::ops::index_range::IndexRange::end]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Reference.Field[core::ops::range::Bound::Excluded(0)]", "ReturnValue.Field[core::ops::range::Bound::Excluded(0)].Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Reference.Field[core::ops::range::Bound::Included(0)]", "ReturnValue.Field[core::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference.Field[core::ops::range::Bound::Excluded(0)]", "ReturnValue.Field[core::ops::range::Bound::Excluded(0)].Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference.Field[core::ops::range::Bound::Included(0)]", "ReturnValue.Field[core::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] + - ["::map", "Argument[0].ReturnValue", "ReturnValue.Field[core::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] + - ["::map", "Argument[0].ReturnValue", "ReturnValue.Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::map", "Argument[self].Field[core::ops::range::Bound::Excluded(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map", "Argument[self].Field[core::ops::range::Bound::Included(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::range::Range::end]", "ReturnValue.Field[core::ops::range::Range::end]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::range::Range::start]", "ReturnValue.Field[core::ops::range::Range::start]", "value", "dfc-generated"] + - ["::setup", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::spec_next", "Argument[self].Field[core::ops::range::Range::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::spec_next_back", "Argument[self].Field[core::ops::range::Range::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::spec_next_back", "Argument[self].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::spec_nth", "Argument[self].Field[core::ops::range::Range::end].Reference", "Argument[self].Field[core::ops::range::Range::start]", "value", "dfc-generated"] + - ["::spec_nth", "Argument[self].Field[core::ops::range::Range::end]", "Argument[self].Field[core::ops::range::Range::start]", "value", "dfc-generated"] + - ["::spec_nth_back", "Argument[self].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::spec_nth_back", "Argument[self].Field[core::ops::range::Range::start]", "Argument[self].Field[core::ops::range::Range::end]", "value", "dfc-generated"] + - ["::spec_nth_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_back", "Argument[self].Field[core::ops::range::Range::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::ops::range::Range::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::last", "Argument[self].Field[core::ops::range::Range::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::last", "Argument[self].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max", "Argument[self].Field[core::ops::range::Range::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max", "Argument[self].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::min", "Argument[self].Field[core::ops::range::Range::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::ops::range::Range::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::into_bounds", "Argument[self].Field[core::ops::range::Range::end]", "ReturnValue.Field[1].Field[core::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] + - ["::into_bounds", "Argument[self].Field[core::ops::range::Range::start]", "ReturnValue.Field[0].Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::ops::range::Bound::Excluded(0)].Reference", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] + - ["::start_bound", "Argument[self].Field[core::ops::range::Range::start]", "ReturnValue.Field[core::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] + - ["::start_bound", "Argument[self].Field[core::ops::range::Range::start]", "ReturnValue.Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::range::RangeFrom::start]", "ReturnValue.Field[core::ops::range::RangeFrom::start]", "value", "dfc-generated"] + - ["::into_bounds", "Argument[self].Field[core::ops::range::RangeFrom::start]", "ReturnValue.Field[0].Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::bound", "Argument[self].Field[core::ops::range::RangeFrom::start]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::start_bound", "Argument[self].Field[core::ops::range::RangeFrom::start]", "ReturnValue.Field[core::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] + - ["::start_bound", "Argument[self].Field[core::ops::range::RangeFrom::start]", "ReturnValue.Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::get", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::get_mut", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::get_unchecked", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::get_unchecked_mut", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::index", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::index_mut", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::spec_next", "Argument[self].Field[core::ops::range::RangeInclusive::start].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::spec_next", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::spec_next_back", "Argument[self].Field[core::ops::range::RangeInclusive::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::spec_next_back", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::spec_try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::spec_try_fold", "Argument[self].Field[core::ops::range::RangeInclusive::start].Reference", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::spec_try_fold", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::spec_try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::spec_try_rfold", "Argument[self].Field[core::ops::range::RangeInclusive::start].Reference", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::spec_try_rfold", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::ops::range::RangeInclusive::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::ops::range::RangeInclusive::start].Reference", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "value", "dfc-generated"] + - ["::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_rfold", "Argument[self].Field[core::ops::range::RangeInclusive::start].Reference", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::try_rfold", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::last", "Argument[self].Field[core::ops::range::RangeInclusive::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::last", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max", "Argument[self].Field[core::ops::range::RangeInclusive::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::min", "Argument[self].Field[core::ops::range::RangeInclusive::start].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::min", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::ops::range::RangeInclusive::start].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::ops::range::RangeInclusive::end].Reference", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[self].Field[core::ops::range::RangeInclusive::start].Reference", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::try_fold", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::into_bounds", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[1].Field[core::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] + - ["::into_bounds", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[1].Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::into_bounds", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Field[0].Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::ops::range::Bound::Excluded(0)].Reference", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::start_bound", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Field[core::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] + - ["::start_bound", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::end", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::ops::range::RangeInclusive::start]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::ops::range::RangeInclusive::end]", "value", "dfc-generated"] + - ["::start", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_bounds", "Argument[self].Field[core::ops::range::RangeTo::end]", "ReturnValue.Field[1].Field[core::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] + - ["::bound", "Argument[self].Field[core::ops::range::RangeTo::end]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[core::ops::range::RangeTo::end]", "ReturnValue.Field[core::ops::range::Bound::Excluded(0)].Reference", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[core::ops::range::RangeTo::end]", "ReturnValue.Field[core::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] + - ["::into_bounds", "Argument[self].Field[core::ops::range::RangeToInclusive::end]", "ReturnValue.Field[1].Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::bound", "Argument[self].Field[core::ops::range::RangeToInclusive::end]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[core::ops::range::RangeToInclusive::end]", "ReturnValue.Field[core::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[core::ops::range::RangeToInclusive::end]", "ReturnValue.Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::branch", "Argument[self].Field[0]", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] + - ["::branch", "Argument[self].Field[core::ops::try_trait::NeverShortCircuit(0)]", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] + - ["::from_output", "Argument[0]", "ReturnValue.Field[core::ops::try_trait::NeverShortCircuit(0)]", "value", "dfc-generated"] + - ["::wrap_mut_1", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::wrap_mut_2", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::option::Iter::inner].Reference", "ReturnValue.Field[core::option::Iter::inner]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::option::Iter::inner].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::option::IterMut::inner].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::branch", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] + - ["::from_output", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::and", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::and_then", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::and_then", "Argument[self].Field[core::option::Option::Some(0)].Field[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::and_then", "Argument[self].Field[core::option::Option::Some(0)].Field[std::path::Component::Normal(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::and_then", "Argument[self].Field[core::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::copied", "Argument[self].Field[core::option::Option::Some(0)].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::expect", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::flatten", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::get_or_insert", "Argument[0]", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::get_or_insert", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_or_insert", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_or_insert_default", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_or_insert_with", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::insert", "Argument[0]", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::insert", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::insert", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::inspect", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::is_none_or", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::is_none_or", "Argument[self].Field[core::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::is_some_and", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::is_some_and", "Argument[self].Field[core::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::map", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::map", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::map_or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::map_or", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::map_or", "Argument[self].Field[core::option::Option::Some(0)]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::map_or_else", "Argument[0].ReturnValue", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::map_or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::map_or_else", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::map_or_else", "Argument[self].Field[core::option::Option::Some(0)]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::ok_or", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::ok_or", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::ok_or_else", "Argument[0].ReturnValue", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::ok_or_else", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::ok_or_else", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::or", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::or_else", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::take_if", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] + - ["::transpose", "Argument[self].Field[core::option::Option::Some(0)].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::transpose", "Argument[self].Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::unwrap", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_or", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_or_default", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_or_else", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_unchecked", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::unzip", "Argument[self].Field[core::option::Option::Some(0)].Field[0]", "ReturnValue.Field[0].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::unzip", "Argument[self].Field[core::option::Option::Some(0)].Field[1]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::xor", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::xor", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::zip", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Field[1]", "value", "dfc-generated"] + - ["::zip", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] + - ["::zip_with", "Argument[0].Field[core::option::Option::Some(0)]", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["::zip_with", "Argument[1].ReturnValue", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::zip_with", "Argument[self].Field[core::option::Option::Some(0)]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::column", "Argument[self].Field[core::panic::location::Location::col]", "ReturnValue", "value", "dfc-generated"] + - ["::file", "Argument[self].Field[core::panic::location::Location::file]", "ReturnValue", "value", "dfc-generated"] + - ["::internal_constructor", "Argument[0]", "ReturnValue.Field[core::panic::location::Location::file]", "value", "dfc-generated"] + - ["::internal_constructor", "Argument[1]", "ReturnValue.Field[core::panic::location::Location::line]", "value", "dfc-generated"] + - ["::internal_constructor", "Argument[2]", "ReturnValue.Field[core::panic::location::Location::col]", "value", "dfc-generated"] + - ["::line", "Argument[self].Field[core::panic::location::Location::line]", "ReturnValue", "value", "dfc-generated"] + - ["::can_unwind", "Argument[self].Field[core::panic::panic_info::PanicInfo::can_unwind]", "ReturnValue", "value", "dfc-generated"] + - ["::force_no_backtrace", "Argument[self].Field[core::panic::panic_info::PanicInfo::force_no_backtrace]", "ReturnValue", "value", "dfc-generated"] + - ["::location", "Argument[self].Field[core::panic::panic_info::PanicInfo::location]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::message", "Argument[self].Field[core::panic::panic_info::PanicInfo::message]", "ReturnValue.Field[core::panic::panic_info::PanicMessage::message]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::panic::panic_info::PanicInfo::message]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::panic::panic_info::PanicInfo::location]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::panic::panic_info::PanicInfo::can_unwind]", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::panic::panic_info::PanicInfo::force_no_backtrace]", "value", "dfc-generated"] + - ["::as_str", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[core::panic::unwind_safe::AssertUnwindSafe(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[core::panic::unwind_safe::AssertUnwindSafe(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::call_once", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[core::pin::Pin::__pointer].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[core::pin::Pin::__pointer].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[core::pin::Pin::__pointer].Reference", "ReturnValue.Field[core::pin::Pin::__pointer].Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[core::pin::Pin::__pointer].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[core::pin::Pin::__pointer].Reference", "ReturnValue.Field[core::pin::Pin::__pointer].Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[core::pin::Pin::__pointer].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[core::pin::Pin::__pointer]", "ReturnValue", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[core::pin::Pin::__pointer]", "ReturnValue", "value", "dfc-generated"] + - ["::get_unchecked_mut", "Argument[self].Field[core::pin::Pin::__pointer]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[0].Field[core::pin::Pin::__pointer]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner_unchecked", "Argument[0].Field[core::pin::Pin::__pointer]", "ReturnValue", "value", "dfc-generated"] + - ["::into_ref", "Argument[self].Field[core::pin::Pin::__pointer]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::map_unchecked", "Argument[0].ReturnValue.Reference", "ReturnValue", "value", "dfc-generated"] + - ["::map_unchecked", "Argument[0].ReturnValue", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::map_unchecked", "Argument[self].Field[core::pin::Pin::__pointer].Reference", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] + - ["::map_unchecked_mut", "Argument[0].ReturnValue.Reference", "ReturnValue", "value", "dfc-generated"] + - ["::map_unchecked_mut", "Argument[0].ReturnValue", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::map_unchecked_mut", "Argument[self].Field[core::pin::Pin::__pointer].Field[0]", "ReturnValue.Field[core::pin::Pin::__pointer].Reference", "value", "dfc-generated"] + - ["::map_unchecked_mut", "Argument[self].Field[core::pin::Pin::__pointer].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::map_unchecked_mut", "Argument[self].Field[core::pin::Pin::__pointer]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::new", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::set", "Argument[0]", "Argument[self].Field[core::pin::Pin::__pointer].Reference", "value", "dfc-generated"] + - ["::static_mut", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::static_mut", "Argument[0]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::static_ref", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::static_ref", "Argument[0]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::as_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::max", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::max", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::ptr::unique::Unique::pointer]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_ref", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::ptr::unique::Unique::pointer]", "value", "dfc-generated"] + - ["::as_non_null_ptr", "Argument[self].Field[core::ptr::unique::Unique::pointer]", "ReturnValue", "value", "dfc-generated"] + - ["::new_unchecked", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::range::Range::end]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::ops::range::Range::start]", "ReturnValue.Field[core::range::Range::start]", "value", "dfc-generated"] + - ["::into_bounds", "Argument[self].Field[core::range::Range::end]", "ReturnValue.Field[1].Field[core::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] + - ["::into_bounds", "Argument[self].Field[core::range::Range::start]", "ReturnValue.Field[0].Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[core::range::Range::end]", "ReturnValue.Field[core::ops::range::Bound::Excluded(0)].Reference", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[core::range::Range::end]", "ReturnValue.Field[core::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] + - ["::start_bound", "Argument[self].Field[core::range::Range::start]", "ReturnValue.Field[core::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] + - ["::start_bound", "Argument[self].Field[core::range::Range::start]", "ReturnValue.Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::ops::range::RangeFrom::start]", "ReturnValue.Field[core::range::RangeFrom::start]", "value", "dfc-generated"] + - ["::into_bounds", "Argument[self].Field[core::range::RangeFrom::start]", "ReturnValue.Field[0].Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::start_bound", "Argument[self].Field[core::range::RangeFrom::start]", "ReturnValue.Field[core::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] + - ["::start_bound", "Argument[self].Field[core::range::RangeFrom::start]", "ReturnValue.Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::range::RangeInclusive::end]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Field[core::range::RangeInclusive::start]", "value", "dfc-generated"] + - ["::into_bounds", "Argument[self].Field[core::range::RangeInclusive::end]", "ReturnValue.Field[1].Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::into_bounds", "Argument[self].Field[core::range::RangeInclusive::start]", "ReturnValue.Field[0].Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[core::range::RangeInclusive::end]", "ReturnValue.Field[core::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] + - ["::end_bound", "Argument[self].Field[core::range::RangeInclusive::end]", "ReturnValue.Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::start_bound", "Argument[self].Field[core::range::RangeInclusive::start]", "ReturnValue.Field[core::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] + - ["::start_bound", "Argument[self].Field[core::range::RangeInclusive::start]", "ReturnValue.Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] + - ["::into_slice_range", "Argument[self].Field[core::range::RangeInclusive::start]", "ReturnValue.Field[core::range::Range::start]", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[0].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::range::iter::IterRange(0)].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[0].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::range::iter::IterRange(0)].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::last", "Argument[self].Field[0].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::last", "Argument[self].Field[core::range::iter::IterRange(0)].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max", "Argument[self].Field[0].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max", "Argument[self].Field[core::range::iter::IterRange(0)].Field[core::ops::range::Range::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::min", "Argument[self].Field[0].Field[core::ops::range::Range::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::min", "Argument[self].Field[core::range::iter::IterRange(0)].Field[core::ops::range::Range::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[0].Field[core::ops::range::Range::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::range::iter::IterRange(0)].Field[core::ops::range::Range::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::remainder", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::remainder", "Argument[self].Field[0].Field[core::ops::range::RangeFrom::start]", "ReturnValue.Field[core::range::RangeFrom::start]", "value", "dfc-generated"] + - ["::remainder", "Argument[self].Field[core::range::iter::IterRangeFrom(0)].Field[core::ops::range::RangeFrom::start]", "ReturnValue.Field[core::range::RangeFrom::start]", "value", "dfc-generated"] + - ["::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::next_back", "Argument[self].Field[0].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::range::iter::IterRangeInclusive(0)].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::last", "Argument[self].Field[0].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::last", "Argument[self].Field[core::range::iter::IterRangeInclusive(0)].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max", "Argument[self].Field[0].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::max", "Argument[self].Field[core::range::iter::IterRangeInclusive(0)].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::min", "Argument[self].Field[0].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::min", "Argument[self].Field[core::range::iter::IterRangeInclusive(0)].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[0].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::range::iter::IterRangeInclusive(0)].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::remainder", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Field[core::result::Iter::inner]", "ReturnValue.Field[core::result::Iter::inner]", "value", "dfc-generated"] + - ["::branch", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Break(0)].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::branch", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] + - ["::from_output", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::and", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::and", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::and_then", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::and_then", "Argument[self].Field[core::result::Result::Ok(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::and_then", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::as_deref", "Argument[self].Reference.Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)].Reference", "value", "dfc-generated"] + - ["::as_deref_mut", "Argument[self].Reference.Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)].Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Reference.Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)].Reference", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Reference.Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::result::Result::Ok(0)].Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference.Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)].Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference.Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::result::Result::Ok(0)].Reference", "value", "dfc-generated"] + - ["::cloned", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::copied", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::copied", "Argument[self].Field[core::result::Result::Ok(0)].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::err", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::expect", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::expect_err", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::flatten", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::flatten", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::inspect", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::inspect_err", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::into_err", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_ok", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::is_err_and", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::is_err_and", "Argument[self].Field[core::result::Result::Err(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::is_ok_and", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::is_ok_and", "Argument[self].Field[core::result::Result::Ok(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::iter", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::iter_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::map", "Argument[0].ReturnValue", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::map", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::map", "Argument[self].Field[core::result::Result::Ok(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[std::fs::File::inner]", "value", "dfc-generated"] + - ["::map_err", "Argument[0].ReturnValue", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::map_or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::map_or", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::map_or", "Argument[self].Field[core::result::Result::Ok(0)]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::map_or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::map_or_else", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::map_or_else", "Argument[self].Field[core::result::Result::Err(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map_or_else", "Argument[self].Field[core::result::Result::Ok(0)]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::ok", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::or", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::or_else", "Argument[self].Field[core::result::Result::Err(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::or_else", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::transpose", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::transpose", "Argument[self].Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::unwrap", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_err", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_err_unchecked", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_or", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_or_default", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_or_else", "Argument[self].Field[core::result::Result::Err(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::unwrap_or_else", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::unwrap_unchecked", "Argument[self].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self].Field[core::slice::iter::ArrayChunks::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::slice::iter::ArrayChunks::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::remainder", "Argument[self].Field[core::slice::iter::ArrayChunks::rem]", "ReturnValue", "value", "dfc-generated"] + - ["::into_remainder", "Argument[self].Field[core::slice::iter::ArrayChunksMut::rem]", "ReturnValue", "value", "dfc-generated"] + - ["::count", "Argument[self].Field[core::slice::iter::ArrayWindows::num]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[core::slice::iter::ArrayWindows::num]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[core::slice::iter::ArrayWindows::num]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::ChunkBy::slice]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::ChunkBy::predicate]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::ChunkByMut::slice]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::ChunkByMut::predicate]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::Chunks::chunk_size]", "ReturnValue.Field[core::slice::iter::Chunks::chunk_size]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::Chunks::v]", "ReturnValue.Field[core::slice::iter::Chunks::v]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::slice::iter::Chunks::v].Element", "Argument[self].Field[core::slice::iter::Chunks::v].Reference", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::slice::iter::Chunks::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::last", "Argument[self].Field[core::slice::iter::Chunks::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::slice::iter::Chunks::v].Element", "Argument[self].Field[core::slice::iter::Chunks::v].Reference", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::slice::iter::Chunks::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::Chunks::v]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::Chunks::chunk_size]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::ChunksExact::chunk_size]", "ReturnValue.Field[core::slice::iter::ChunksExact::chunk_size]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::ChunksExact::rem]", "ReturnValue.Field[core::slice::iter::ChunksExact::rem]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::ChunksExact::v]", "ReturnValue.Field[core::slice::iter::ChunksExact::v]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::slice::iter::ChunksExact::v].Element", "Argument[self].Field[core::slice::iter::ChunksExact::v].Reference", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::slice::iter::ChunksExact::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::ChunksExact::chunk_size]", "value", "dfc-generated"] + - ["::remainder", "Argument[self].Field[core::slice::iter::ChunksExact::rem]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_remainder", "Argument[self].Field[core::slice::iter::ChunksExactMut::rem]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::ChunksExactMut::chunk_size]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::ChunksMut::v]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::ChunksMut::chunk_size]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::slice::iter::GenericSplitN::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[core::slice::iter::GenericSplitN::count]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::Iter::_marker]", "ReturnValue.Field[core::slice::iter::Iter::_marker]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::Iter::end_or_len]", "ReturnValue.Field[core::slice::iter::Iter::end_or_len]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::Iter::ptr]", "ReturnValue.Field[core::slice::iter::Iter::ptr]", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::RChunks::chunk_size]", "ReturnValue.Field[core::slice::iter::RChunks::chunk_size]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::RChunks::v]", "ReturnValue.Field[core::slice::iter::RChunks::v]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::slice::iter::RChunks::v].Element", "Argument[self].Field[core::slice::iter::RChunks::v].Reference", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::slice::iter::RChunks::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::last", "Argument[self].Field[core::slice::iter::RChunks::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::slice::iter::RChunks::v].Element", "Argument[self].Field[core::slice::iter::RChunks::v].Reference", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::slice::iter::RChunks::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::RChunks::v]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::RChunks::chunk_size]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::RChunksExact::chunk_size]", "ReturnValue.Field[core::slice::iter::RChunksExact::chunk_size]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::RChunksExact::rem]", "ReturnValue.Field[core::slice::iter::RChunksExact::rem]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::RChunksExact::v]", "ReturnValue.Field[core::slice::iter::RChunksExact::v]", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::slice::iter::RChunksExact::v].Element", "Argument[self].Field[core::slice::iter::RChunksExact::v].Reference", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::slice::iter::RChunksExact::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::RChunksExact::chunk_size]", "value", "dfc-generated"] + - ["::remainder", "Argument[self].Field[core::slice::iter::RChunksExact::rem]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_remainder", "Argument[self].Field[core::slice::iter::RChunksExactMut::rem]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::RChunksExactMut::chunk_size]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::RChunksMut::v]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::RChunksMut::chunk_size]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_back", "Argument[self].Field[core::slice::iter::RSplit::inner].Field[core::slice::iter::Split::v]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::slice::iter::RSplit::inner].Field[core::slice::iter::Split::v]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[core::slice::iter::RSplit::inner].Field[core::slice::iter::Split::v]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::RSplit::inner].Field[core::slice::iter::Split::v]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::RSplit::inner].Field[core::slice::iter::Split::pred]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::RSplitMut::inner].Field[core::slice::iter::SplitMut::v]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::RSplitMut::inner].Field[core::slice::iter::SplitMut::pred]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::size_hint", "Argument[self].Field[core::slice::iter::RSplitN::inner].Field[core::slice::iter::GenericSplitN::count]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::RSplitN::inner].Field[core::slice::iter::GenericSplitN::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::RSplitN::inner].Field[core::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::size_hint", "Argument[self].Field[core::slice::iter::RSplitNMut::inner].Field[core::slice::iter::GenericSplitN::count]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::RSplitNMut::inner].Field[core::slice::iter::GenericSplitN::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::RSplitNMut::inner].Field[core::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_back", "Argument[self].Field[core::slice::iter::Split::v]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::slice::iter::Split::v]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::finish", "Argument[self].Field[core::slice::iter::Split::v]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::as_slice", "Argument[self].Field[core::slice::iter::Split::v]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::Split::v]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::Split::pred]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_back", "Argument[self].Field[core::slice::iter::SplitInclusive::v].Element", "Argument[self].Field[core::slice::iter::SplitInclusive::v].Reference", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::slice::iter::SplitInclusive::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::slice::iter::SplitInclusive::v].Element", "Argument[self].Field[core::slice::iter::SplitInclusive::v].Reference", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::slice::iter::SplitInclusive::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::SplitInclusive::v]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::SplitInclusive::pred]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::SplitInclusiveMut::v]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::SplitInclusiveMut::pred]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::SplitMut::v]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::SplitMut::pred]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::size_hint", "Argument[self].Field[core::slice::iter::SplitN::inner].Field[core::slice::iter::GenericSplitN::count]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::SplitN::inner].Field[core::slice::iter::GenericSplitN::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::SplitN::inner].Field[core::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::size_hint", "Argument[self].Field[core::slice::iter::SplitNMut::inner].Field[core::slice::iter::GenericSplitN::count]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::SplitNMut::inner].Field[core::slice::iter::GenericSplitN::iter]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::SplitNMut::inner].Field[core::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::Windows::size]", "ReturnValue.Field[core::slice::iter::Windows::size]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::slice::iter::Windows::v]", "ReturnValue.Field[core::slice::iter::Windows::v]", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::slice::iter::Windows::v].Element", "Argument[self].Field[core::slice::iter::Windows::v].Reference", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[core::slice::iter::Windows::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::slice::iter::Windows::v].Element", "Argument[self].Field[core::slice::iter::Windows::v].Reference", "value", "dfc-generated"] + - ["::nth_back", "Argument[self].Field[core::slice::iter::Windows::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::last", "Argument[self].Field[core::slice::iter::Windows::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::slice::iter::Windows::v].Element", "Argument[self].Field[core::slice::iter::Windows::v].Reference", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::slice::iter::Windows::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::slice::iter::Windows::v].Element", "Argument[self].Field[core::slice::iter::Windows::v].Reference", "value", "dfc-generated"] + - ["::nth", "Argument[self].Field[core::slice::iter::Windows::v].Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::Windows::v]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::Windows::size]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::call", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::error_len", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::valid_up_to", "Argument[self].Field[core::str::error::Utf8Error::valid_up_to]", "ReturnValue", "value", "dfc-generated"] + - ["::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::last", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self].Field[core::str::iter::CharIndices::front_offset]", "ReturnValue.Field[core::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] + - ["::offset", "Argument[self].Field[core::str::iter::CharIndices::front_offset]", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[core::str::iter::EncodeUtf16::extra]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Field[core::str::iter::SplitNInternal::iter].Reference", "ReturnValue.Field[core::str::iter::SplitNInternal::iter]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[core::str::iter::SplitNInternal::iter]", "ReturnValue.Field[core::str::iter::SplitNInternal::iter]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::invalid", "Argument[self].Field[core::str::lossy::Utf8Chunk::invalid]", "ReturnValue", "value", "dfc-generated"] + - ["::valid", "Argument[self].Field[core::str::lossy::Utf8Chunk::valid]", "ReturnValue", "value", "dfc-generated"] + - ["::debug", "Argument[self].Field[core::str::lossy::Utf8Chunks::source]", "ReturnValue.Field[core::str::lossy::Debug(0)]", "value", "dfc-generated"] + - ["::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_match_back", "Argument[self].Field[core::str::pattern::CharSearcher::finger]", "Argument[self].Field[core::str::pattern::CharSearcher::finger_back]", "value", "dfc-generated"] + - ["::next_match_back", "Argument[self].Field[core::str::pattern::CharSearcher::finger_back]", "ReturnValue.Field[core::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] + - ["::haystack", "Argument[self].Field[core::str::pattern::CharSearcher::haystack]", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_match", "Argument[self].Field[core::str::pattern::CharSearcher::finger]", "ReturnValue.Field[core::option::Option::Some(0)].Field[1]", "value", "dfc-generated"] + - ["::next_match", "Argument[self].Field[core::str::pattern::CharSearcher::finger_back]", "Argument[self].Field[core::str::pattern::CharSearcher::finger]", "value", "dfc-generated"] + - ["::matching", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] + - ["::matching", "Argument[1]", "ReturnValue.Field[core::option::Option::Some(0)].Field[1]", "value", "dfc-generated"] + - ["::into_searcher", "Argument[0]", "ReturnValue.Field[core::str::pattern::MultiCharEqSearcher::haystack]", "value", "dfc-generated"] + - ["::into_searcher", "Argument[self].Field[0]", "ReturnValue.Field[core::str::pattern::MultiCharEqSearcher::char_eq]", "value", "dfc-generated"] + - ["::into_searcher", "Argument[self].Field[core::str::pattern::MultiCharEqPattern(0)]", "ReturnValue.Field[core::str::pattern::MultiCharEqSearcher::char_eq]", "value", "dfc-generated"] + - ["::haystack", "Argument[self].Field[core::str::pattern::MultiCharEqSearcher::haystack]", "ReturnValue", "value", "dfc-generated"] + - ["::matching", "Argument[0]", "ReturnValue.Field[core::str::pattern::SearchStep::Match(0)]", "value", "dfc-generated"] + - ["::matching", "Argument[1]", "ReturnValue.Field[core::str::pattern::SearchStep::Match(1)]", "value", "dfc-generated"] + - ["::rejecting", "Argument[0]", "ReturnValue.Field[core::str::pattern::SearchStep::Reject(0)]", "value", "dfc-generated"] + - ["::rejecting", "Argument[1]", "ReturnValue.Field[core::str::pattern::SearchStep::Reject(1)]", "value", "dfc-generated"] + - ["::haystack", "Argument[self].Field[core::str::pattern::StrSearcher::haystack]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ascii", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_bytes_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_mut_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_str", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::bytes", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::char_indices", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::chars", "Argument[self].Element", "ReturnValue.Field[core::str::iter::Chars::iter].Element", "value", "dfc-generated"] + - ["::encode_utf16", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_utf8_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_utf8_unchecked_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::replace", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rsplitn", "Argument[0]", "ReturnValue.Field[core::str::iter::RSplitN(0)].Field[core::str::iter::SplitNInternal::count]", "value", "dfc-generated"] + - ["::splitn", "Argument[0]", "ReturnValue.Field[core::str::iter::SplitN(0)].Field[core::str::iter::SplitNInternal::count]", "value", "dfc-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::atomic::AtomicI128::v].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::atomic::AtomicI128::v].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::atomic::AtomicI128::v].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::atomic::AtomicI16::v].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::atomic::AtomicI16::v].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::atomic::AtomicI16::v].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::atomic::AtomicI32::v].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::atomic::AtomicI32::v].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::atomic::AtomicI32::v].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::atomic::AtomicI64::v].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::atomic::AtomicI64::v].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::atomic::AtomicI64::v].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::atomic::AtomicI8::v].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::atomic::AtomicI8::v].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::atomic::AtomicI8::v].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::atomic::AtomicIsize::v].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::atomic::AtomicIsize::v].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::atomic::AtomicIsize::v].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::atomic::AtomicPtr::p].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::atomic::AtomicPtr::p].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::atomic::AtomicPtr::p].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::atomic::AtomicU128::v].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::atomic::AtomicU128::v].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::atomic::AtomicU128::v].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::atomic::AtomicU16::v].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::atomic::AtomicU16::v].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::atomic::AtomicU16::v].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::atomic::AtomicU32::v].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::atomic::AtomicU32::v].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::atomic::AtomicU32::v].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::atomic::AtomicU64::v].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::atomic::AtomicU64::v].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::atomic::AtomicU64::v].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::atomic::AtomicU8::v].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::atomic::AtomicU8::v].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::atomic::AtomicU8::v].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::atomic::AtomicUsize::v].Field[core::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::atomic::AtomicUsize::v].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::atomic::AtomicUsize::v].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_pin_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[core::sync::exclusive::Exclusive::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_pin_mut", "Argument[self].Field[core::pin::Pin::__pointer].Field[core::sync::exclusive::Exclusive::inner]", "ReturnValue.Field[core::pin::Pin::__pointer].Reference", "value", "dfc-generated"] + - ["::get_pin_mut", "Argument[self].Field[core::pin::Pin::__pointer].Field[core::sync::exclusive::Exclusive::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[core::sync::exclusive::Exclusive::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::sync::exclusive::Exclusive::inner]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[core::task::poll::Poll::Ready(0)]", "value", "dfc-generated"] + - ["::branch", "Argument[self].Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Break(0)].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::branch", "Argument[self].Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::ops::control_flow::ControlFlow::Continue(0)].Field[core::task::poll::Poll::Ready(0)]", "value", "dfc-generated"] + - ["::async_gen_ready", "Argument[0]", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::map", "Argument[0].ReturnValue", "ReturnValue.Field[core::task::poll::Poll::Ready(0)]", "value", "dfc-generated"] + - ["::map", "Argument[self].Field[core::task::poll::Poll::Ready(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map_err", "Argument[0].ReturnValue", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::map_err", "Argument[self].Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Err(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map_err", "Argument[self].Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::map_ok", "Argument[0].ReturnValue", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::map_ok", "Argument[self].Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::map_ok", "Argument[self].Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::from_waker", "Argument[0]", "ReturnValue.Field[core::task::wake::Context::waker]", "value", "dfc-generated"] + - ["::local_waker", "Argument[self].Field[core::task::wake::Context::local_waker]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::waker", "Argument[self].Field[core::task::wake::Context::waker]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::build", "Argument[self].Field[core::task::wake::ContextBuilder::ext]", "ReturnValue.Field[core::task::wake::Context::ext].Field[core::panic::unwind_safe::AssertUnwindSafe(0)]", "value", "dfc-generated"] + - ["::build", "Argument[self].Field[core::task::wake::ContextBuilder::local_waker]", "ReturnValue.Field[core::task::wake::Context::local_waker]", "value", "dfc-generated"] + - ["::build", "Argument[self].Field[core::task::wake::ContextBuilder::waker]", "ReturnValue.Field[core::task::wake::Context::waker]", "value", "dfc-generated"] + - ["::ext", "Argument[0]", "ReturnValue.Field[core::task::wake::ContextBuilder::ext].Field[core::task::wake::ExtData::Some(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::task::wake::Context::local_waker]", "ReturnValue.Field[core::task::wake::ContextBuilder::local_waker]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[core::task::wake::Context::waker]", "ReturnValue.Field[core::task::wake::ContextBuilder::waker]", "value", "dfc-generated"] + - ["::from_waker", "Argument[0]", "ReturnValue.Field[core::task::wake::ContextBuilder::waker]", "value", "dfc-generated"] + - ["::local_waker", "Argument[0]", "ReturnValue.Field[core::task::wake::ContextBuilder::local_waker]", "value", "dfc-generated"] + - ["::waker", "Argument[0]", "ReturnValue.Field[core::task::wake::ContextBuilder::waker]", "value", "dfc-generated"] + - ["::clone_from", "Argument[0].Reference", "Argument[self].Reference", "value", "dfc-generated"] + - ["::data", "Argument[self].Field[core::task::wake::LocalWaker::waker].Field[core::task::wake::RawWaker::data]", "ReturnValue", "value", "dfc-generated"] + - ["::from_raw", "Argument[0]", "ReturnValue.Field[core::task::wake::LocalWaker::waker]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::task::wake::LocalWaker::waker].Field[core::task::wake::RawWaker::data]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::task::wake::LocalWaker::waker].Field[core::task::wake::RawWaker::vtable]", "value", "dfc-generated"] + - ["::vtable", "Argument[self].Field[core::task::wake::LocalWaker::waker].Field[core::task::wake::RawWaker::vtable]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::task::wake::RawWaker::data]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::task::wake::RawWaker::vtable]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::task::wake::RawWakerVTable::clone]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::task::wake::RawWakerVTable::wake]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::task::wake::RawWakerVTable::wake_by_ref]", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::task::wake::RawWakerVTable::drop]", "value", "dfc-generated"] + - ["::clone_from", "Argument[0].Reference", "Argument[self].Reference", "value", "dfc-generated"] + - ["::data", "Argument[self].Field[core::task::wake::Waker::waker].Field[core::task::wake::RawWaker::data]", "ReturnValue", "value", "dfc-generated"] + - ["::from_raw", "Argument[0]", "ReturnValue.Field[core::task::wake::Waker::waker]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::task::wake::Waker::waker].Field[core::task::wake::RawWaker::data]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::task::wake::Waker::waker].Field[core::task::wake::RawWaker::vtable]", "value", "dfc-generated"] + - ["::vtable", "Argument[self].Field[core::task::wake::Waker::waker].Field[core::task::wake::RawWaker::vtable]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::sub_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::as_micros", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_millis", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_millis_f32", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_millis_f64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_nanos", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_secs", "Argument[self].Field[core::time::Duration::secs]", "ReturnValue", "value", "dfc-generated"] + - ["::as_secs_f32", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_secs_f64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::checked_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_duration_f32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_duration_f32", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_duration_f64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_duration_f64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_days", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_hours", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_micros", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_millis", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_mins", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_nanos", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_secs", "Argument[0]", "ReturnValue.Field[core::time::Duration::secs]", "value", "dfc-generated"] + - ["::from_weeks", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::time::Duration::secs]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::time::Duration::nanos].Field[core::num::niche_types::Nanoseconds(0)]", "value", "dfc-generated"] + - ["::saturating_mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs_diff", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::abs_diff", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::cast_signed", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overflowing_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::steps_between", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::steps_between", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::full_div_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::full_div_rem", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::full_div_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::full_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::full_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::full_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::full_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs_diff", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::abs_diff", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::cast_signed", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overflowing_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::steps_between", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::steps_between", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::full_div_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::full_div_rem", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::full_div_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::full_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::full_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::full_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::full_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::cast", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs_diff", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::abs_diff", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::cast_signed", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overflowing_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::steps_between", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::steps_between", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::cast", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs_diff", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::abs_diff", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::cast_signed", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overflowing_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::steps_between", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::steps_between", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::full_div_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::full_div_rem", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::full_div_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::full_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::full_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::full_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::full_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs_diff", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::abs_diff", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::ascii_change_case_unchecked", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::cast_signed", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overflowing_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_ascii_lowercase", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_ascii_uppercase", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::carrying_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::steps_between", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::steps_between", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::index", "Argument[0].Reference.Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::index_mut", "Argument[0].Reference.Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::abs_diff", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::abs_diff", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::cast_signed", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::overflowing_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::overflowing_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::repeat_u16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::strict_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wrapping_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::f16x32(0)].Field[core_arch::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x4(0)].Field[core_arch::core_arch::simd::f16x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x4(0)].Field[core_arch::core_arch::simd::f16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f16x4(0)].Field[core_arch::core_arch::simd::f16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f16x4(0)].Field[core_arch::core_arch::simd::f16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f16x4(0)].Field[core_arch::core_arch::simd::f16x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::f16x8(0)].Field[core_arch::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::f32x16(0)].Field[core_arch::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x2(0)].Field[core_arch::core_arch::simd::f32x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x2(0)].Field[core_arch::core_arch::simd::f32x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f32x2(0)].Field[core_arch::core_arch::simd::f32x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x4(0)].Field[core_arch::core_arch::simd::f32x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x4(0)].Field[core_arch::core_arch::simd::f32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f32x4(0)].Field[core_arch::core_arch::simd::f32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f32x4(0)].Field[core_arch::core_arch::simd::f32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f32x4(0)].Field[core_arch::core_arch::simd::f32x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::f32x8(0)].Field[core_arch::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x1(0)].Field[core_arch::core_arch::simd::f64x1(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x1(0)].Field[core_arch::core_arch::simd::f64x1(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x2(0)].Field[core_arch::core_arch::simd::f64x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x2(0)].Field[core_arch::core_arch::simd::f64x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f64x2(0)].Field[core_arch::core_arch::simd::f64x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x4(0)].Field[core_arch::core_arch::simd::f64x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x4(0)].Field[core_arch::core_arch::simd::f64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f64x4(0)].Field[core_arch::core_arch::simd::f64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f64x4(0)].Field[core_arch::core_arch::simd::f64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f64x4(0)].Field[core_arch::core_arch::simd::f64x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::f64x8(0)].Field[core_arch::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i16x16(0)].Field[core_arch::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x2(0)].Field[core_arch::core_arch::simd::i16x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x2(0)].Field[core_arch::core_arch::simd::i16x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i16x2(0)].Field[core_arch::core_arch::simd::i16x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i16x32(0)].Field[core_arch::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x4(0)].Field[core_arch::core_arch::simd::i16x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x4(0)].Field[core_arch::core_arch::simd::i16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i16x4(0)].Field[core_arch::core_arch::simd::i16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i16x4(0)].Field[core_arch::core_arch::simd::i16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i16x4(0)].Field[core_arch::core_arch::simd::i16x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i16x8(0)].Field[core_arch::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i32x16(0)].Field[core_arch::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x2(0)].Field[core_arch::core_arch::simd::i32x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x2(0)].Field[core_arch::core_arch::simd::i32x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i32x2(0)].Field[core_arch::core_arch::simd::i32x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i32x32(0)].Field[core_arch::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x4(0)].Field[core_arch::core_arch::simd::i32x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x4(0)].Field[core_arch::core_arch::simd::i32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i32x4(0)].Field[core_arch::core_arch::simd::i32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i32x4(0)].Field[core_arch::core_arch::simd::i32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i32x4(0)].Field[core_arch::core_arch::simd::i32x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i32x8(0)].Field[core_arch::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x1(0)].Field[core_arch::core_arch::simd::i64x1(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x1(0)].Field[core_arch::core_arch::simd::i64x1(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x2(0)].Field[core_arch::core_arch::simd::i64x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x2(0)].Field[core_arch::core_arch::simd::i64x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i64x2(0)].Field[core_arch::core_arch::simd::i64x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x4(0)].Field[core_arch::core_arch::simd::i64x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x4(0)].Field[core_arch::core_arch::simd::i64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i64x4(0)].Field[core_arch::core_arch::simd::i64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i64x4(0)].Field[core_arch::core_arch::simd::i64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i64x4(0)].Field[core_arch::core_arch::simd::i64x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i64x8(0)].Field[core_arch::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i8x16(0)].Field[core_arch::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x2(0)].Field[core_arch::core_arch::simd::i8x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x2(0)].Field[core_arch::core_arch::simd::i8x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i8x2(0)].Field[core_arch::core_arch::simd::i8x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i8x32(0)].Field[core_arch::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x4(0)].Field[core_arch::core_arch::simd::i8x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x4(0)].Field[core_arch::core_arch::simd::i8x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i8x4(0)].Field[core_arch::core_arch::simd::i8x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i8x4(0)].Field[core_arch::core_arch::simd::i8x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i8x4(0)].Field[core_arch::core_arch::simd::i8x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[32]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[33]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[34]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[35]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[36]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[37]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[38]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[39]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[40]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[41]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[42]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[43]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[44]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[45]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[46]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[47]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[48]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[49]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[50]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[51]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[52]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[53]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[54]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[55]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[56]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[57]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[58]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[59]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[60]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[61]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[62]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[63]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::i8x64(0)].Field[core_arch::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::i8x8(0)].Field[core_arch::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u16x16(0)].Field[core_arch::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x2(0)].Field[core_arch::core_arch::simd::u16x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x2(0)].Field[core_arch::core_arch::simd::u16x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u16x2(0)].Field[core_arch::core_arch::simd::u16x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u16x32(0)].Field[core_arch::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x4(0)].Field[core_arch::core_arch::simd::u16x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x4(0)].Field[core_arch::core_arch::simd::u16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u16x4(0)].Field[core_arch::core_arch::simd::u16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u16x4(0)].Field[core_arch::core_arch::simd::u16x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u16x4(0)].Field[core_arch::core_arch::simd::u16x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[32]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[33]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[34]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[35]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[36]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[37]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[38]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[39]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[40]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[41]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[42]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[43]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[44]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[45]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[46]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[47]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[48]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[49]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[50]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[51]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[52]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[53]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[54]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[55]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[56]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[57]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[58]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[59]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[60]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[61]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[62]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[63]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u16x64(0)].Field[core_arch::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u16x8(0)].Field[core_arch::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u32x16(0)].Field[core_arch::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x2(0)].Field[core_arch::core_arch::simd::u32x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x2(0)].Field[core_arch::core_arch::simd::u32x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u32x2(0)].Field[core_arch::core_arch::simd::u32x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u32x32(0)].Field[core_arch::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x4(0)].Field[core_arch::core_arch::simd::u32x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x4(0)].Field[core_arch::core_arch::simd::u32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u32x4(0)].Field[core_arch::core_arch::simd::u32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u32x4(0)].Field[core_arch::core_arch::simd::u32x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u32x4(0)].Field[core_arch::core_arch::simd::u32x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u32x8(0)].Field[core_arch::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x1(0)].Field[core_arch::core_arch::simd::u64x1(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x1(0)].Field[core_arch::core_arch::simd::u64x1(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x2(0)].Field[core_arch::core_arch::simd::u64x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x2(0)].Field[core_arch::core_arch::simd::u64x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u64x2(0)].Field[core_arch::core_arch::simd::u64x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x4(0)].Field[core_arch::core_arch::simd::u64x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x4(0)].Field[core_arch::core_arch::simd::u64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u64x4(0)].Field[core_arch::core_arch::simd::u64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u64x4(0)].Field[core_arch::core_arch::simd::u64x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u64x4(0)].Field[core_arch::core_arch::simd::u64x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u64x8(0)].Field[core_arch::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u8x16(0)].Field[core_arch::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x2(0)].Field[core_arch::core_arch::simd::u8x2(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x2(0)].Field[core_arch::core_arch::simd::u8x2(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u8x2(0)].Field[core_arch::core_arch::simd::u8x2(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u8x32(0)].Field[core_arch::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x4(0)].Field[core_arch::core_arch::simd::u8x4(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x4(0)].Field[core_arch::core_arch::simd::u8x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u8x4(0)].Field[core_arch::core_arch::simd::u8x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u8x4(0)].Field[core_arch::core_arch::simd::u8x4(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u8x4(0)].Field[core_arch::core_arch::simd::u8x4(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[10]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[11]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[12]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[13]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[14]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[15]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[16]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[17]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[18]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[19]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[20]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[21]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[22]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[23]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[24]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[25]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[26]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[27]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[28]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[29]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[30]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[31]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[32]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[33]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[34]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[35]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[36]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[37]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[38]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[39]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[40]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[41]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[42]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[43]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[44]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[45]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[46]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[47]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[48]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[49]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[50]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[51]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[52]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[53]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[54]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[55]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[56]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[57]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[58]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[59]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[60]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[61]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[62]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[63]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[8]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[9]", "ReturnValue.Field[core::core_arch::simd::u8x64(0)].Field[core_arch::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[4]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[5]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[6]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::new", "Argument[7]", "ReturnValue.Field[core::core_arch::simd::u8x8(0)].Field[core_arch::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["::from_bits", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::bf16(0)].Field[core_arch::core_arch::x86::bf16(0)]", "value", "dfc-generated"] + - ["::to_bits", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::to_bits", "Argument[self].Field[core::core_arch::x86::bf16(0)].Field[core_arch::core_arch::x86::bf16(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::select_mask", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::select_mask", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::select_mask", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::recip", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_degrees", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_radians", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::abs", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fract", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fract", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_array", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_mut_array", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_c", "Argument[0]", "ReturnValue.Field[intrinsic-test::argument::Argument::pos]", "value", "dfc-generated"] + - ["::from_c", "Argument[1].Element", "ReturnValue.Field[intrinsic-test::argument::Argument::name].Reference", "value", "dfc-generated"] + - ["::type_and_name_from_c", "Argument[0].Element", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] + - ["::load_values_c", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::load_values_c", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::load_values_rust", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::generate_loop_c", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::generate_loop_c", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::generate_loop_c", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::generate_loop_c", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::generate_loop_rust", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::generate_loop_rust", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::generate_loop_rust", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::generate_loop_rust", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::print_result_c", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::print_result_c", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::c_single_vector_type", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::c_type", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::kind", "Argument[self].Reference.Field[intrinsic-test::types::IntrinsicType::Type::kind]", "ReturnValue", "value", "dfc-generated"] + - ["::populate_random", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::rust_type", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::unmark", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::delimiter", "Argument[self].Field[0].Field[proc_macro::bridge::Group::delimiter]", "ReturnValue", "value", "dfc-generated"] + - ["::delimiter", "Argument[self].Field[proc_macro::Group(0)].Field[proc_macro::bridge::Group::delimiter]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[proc_macro::Group(0)].Field[proc_macro::bridge::Group::delimiter]", "value", "dfc-generated"] + - ["::new", "Argument[1].Field[0]", "ReturnValue.Field[proc_macro::Group(0)].Field[proc_macro::bridge::Group::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1].Field[proc_macro::TokenStream(0)]", "ReturnValue.Field[proc_macro::Group(0)].Field[proc_macro::bridge::Group::stream]", "value", "dfc-generated"] + - ["::stream", "Argument[self].Field[0].Field[proc_macro::bridge::Group::stream]", "ReturnValue.Field[proc_macro::TokenStream(0)]", "value", "dfc-generated"] + - ["::stream", "Argument[self].Field[proc_macro::Group(0)].Field[proc_macro::bridge::Group::stream]", "ReturnValue.Field[proc_macro::TokenStream(0)]", "value", "dfc-generated"] + - ["::new", "Argument[1].Field[0]", "ReturnValue.Field[proc_macro::Ident(0)].Field[proc_macro::bridge::Ident::span]", "value", "dfc-generated"] + - ["::new", "Argument[1].Field[proc_macro::Span(0)]", "ReturnValue.Field[proc_macro::Ident(0)].Field[proc_macro::bridge::Ident::span]", "value", "dfc-generated"] + - ["::new_raw", "Argument[1].Field[0]", "ReturnValue.Field[proc_macro::Ident(0)].Field[proc_macro::bridge::Ident::span]", "value", "dfc-generated"] + - ["::new_raw", "Argument[1].Field[proc_macro::Span(0)]", "ReturnValue.Field[proc_macro::Ident(0)].Field[proc_macro::bridge::Ident::span]", "value", "dfc-generated"] + - ["::set_span", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::span", "Argument[self].Field[0].Field[proc_macro::bridge::Ident::span]", "ReturnValue.Field[proc_macro::Span(0)]", "value", "dfc-generated"] + - ["::span", "Argument[self].Field[proc_macro::Ident(0)].Field[proc_macro::bridge::Ident::span]", "ReturnValue.Field[proc_macro::Span(0)]", "value", "dfc-generated"] + - ["::set_span", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::span", "Argument[self].Field[0].Field[proc_macro::bridge::Literal::span]", "ReturnValue.Field[proc_macro::Span(0)]", "value", "dfc-generated"] + - ["::span", "Argument[self].Field[proc_macro::Literal(0)].Field[proc_macro::bridge::Literal::span]", "ReturnValue.Field[proc_macro::Span(0)]", "value", "dfc-generated"] + - ["::as_char", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::set_span", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::span", "Argument[self].Field[0].Field[proc_macro::bridge::Punct::span]", "ReturnValue.Field[proc_macro::Span(0)]", "value", "dfc-generated"] + - ["::span", "Argument[self].Field[proc_macro::Punct(0)].Field[proc_macro::bridge::Punct::span]", "ReturnValue.Field[proc_macro::Span(0)]", "value", "dfc-generated"] + - ["::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::unmark", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::into_token_stream", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::expand_expr", "Argument[self].Field[0].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::expand_expr", "Argument[self].Field[proc_macro::TokenStream(0)].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[proc_macro::TokenTree::Group(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[proc_macro::TokenTree::Ident(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[proc_macro::TokenTree::Literal(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[proc_macro::TokenTree::Punct(0)]", "value", "dfc-generated"] + - ["::from_single", "Argument[0]", "ReturnValue.Field[proc_macro::bridge::DelimSpan::close]", "value", "dfc-generated"] + - ["::from_single", "Argument[0]", "ReturnValue.Field[proc_macro::bridge::DelimSpan::entire]", "value", "dfc-generated"] + - ["::from_single", "Argument[0]", "ReturnValue.Field[proc_macro::bridge::DelimSpan::open]", "value", "dfc-generated"] + - ["::unmark", "Argument[self].Field[proc_macro::bridge::Diagnostic::level]", "ReturnValue.Field[proc_macro::bridge::Diagnostic::level]", "value", "dfc-generated"] + - ["::unmark", "Argument[self].Field[proc_macro::bridge::Diagnostic::message]", "ReturnValue.Field[proc_macro::bridge::Diagnostic::message]", "value", "dfc-generated"] + - ["::unmark", "Argument[self].Field[proc_macro::bridge::Group::delimiter]", "ReturnValue.Field[proc_macro::bridge::Group::delimiter]", "value", "dfc-generated"] + - ["::unmark", "Argument[self].Field[proc_macro::bridge::Ident::is_raw]", "ReturnValue.Field[proc_macro::bridge::Ident::is_raw]", "value", "dfc-generated"] + - ["::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::unmark", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::unmark", "Argument[self].Field[proc_macro::bridge::Literal::kind]", "ReturnValue.Field[proc_macro::bridge::Literal::kind]", "value", "dfc-generated"] + - ["::mark", "Argument[0]", "ReturnValue.Field[proc_macro::bridge::Marked::value]", "value", "dfc-generated"] + - ["::unmark", "Argument[self].Field[proc_macro::bridge::Marked::value]", "ReturnValue", "value", "dfc-generated"] + - ["::decode", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::unmark", "Argument[self].Field[proc_macro::bridge::Punct::ch]", "ReturnValue.Field[proc_macro::bridge::Punct::ch]", "value", "dfc-generated"] + - ["::unmark", "Argument[self].Field[proc_macro::bridge::Punct::joint]", "ReturnValue.Field[proc_macro::bridge::Punct::joint]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::attr", "Argument[0]", "ReturnValue.Field[proc_macro::bridge::client::ProcMacro::Attr::name]", "value", "dfc-generated"] + - ["::bang", "Argument[0]", "ReturnValue.Field[proc_macro::bridge::client::ProcMacro::Bang::name]", "value", "dfc-generated"] + - ["::custom_derive", "Argument[0]", "ReturnValue.Field[proc_macro::bridge::client::ProcMacro::CustomDerive::trait_name]", "value", "dfc-generated"] + - ["::custom_derive", "Argument[1]", "ReturnValue.Field[proc_macro::bridge::client::ProcMacro::CustomDerive::attributes]", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[proc_macro::bridge::client::ProcMacro::Attr::name]", "ReturnValue", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[proc_macro::bridge::client::ProcMacro::Bang::name]", "ReturnValue", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[proc_macro::bridge::client::ProcMacro::CustomDerive::trait_name]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::call", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::call", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::finish", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::copy", "Argument[self].Field[proc_macro::bridge::handle::InternedStore::owned].Element", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[proc_macro::bridge::handle::InternedStore::owned].Field[proc_macro::bridge::handle::OwnedStore::counter]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[proc_macro::bridge::handle::OwnedStore::counter]", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Field[proc_macro::bridge::rpc::PanicMessage::StaticStr(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Field[proc_macro::bridge::rpc::PanicMessage::String(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::dispatch", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::run_bridge_and_client", "Argument[2].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[proc_macro::bridge::server::MaybeCrossThread::cross_thread]", "value", "dfc-generated"] + - ["::run_bridge_and_client", "Argument[2].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[0].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[proc_macro::diagnostic::Children(0)].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::level", "Argument[self].Field[proc_macro::diagnostic::Diagnostic::level]", "ReturnValue", "value", "dfc-generated"] + - ["::message", "Argument[self].Field[proc_macro::diagnostic::Diagnostic::message]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[proc_macro::diagnostic::Diagnostic::level]", "value", "dfc-generated"] + - ["::note", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_level", "Argument[0]", "Argument[self].Field[proc_macro::diagnostic::Diagnostic::level]", "value", "dfc-generated"] + - ["::span_error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::span_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::span_note", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::span_warning", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::spanned", "Argument[1]", "ReturnValue.Field[proc_macro::diagnostic::Diagnostic::level]", "value", "dfc-generated"] + - ["::spans", "Argument[self].Field[proc_macro::diagnostic::Diagnostic::spans]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::warning", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::unmark", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::sp", "Argument[self].Field[as_if_std::the_backtrace_crate::backtrace::Frame::inner].Field[backtrace::backtrace::Frame::inner].Field[std::backtrace_rs::backtrace::Frame::inner].Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "value", "dfc-generated"] + - ["::sp", "Argument[self].Reference.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[as_if_std::the_backtrace_crate::capture::Backtrace::frames].Field[backtrace::capture::Backtrace::frames].Field[std::backtrace_rs::capture::Backtrace::frames]", "value", "dfc-generated"] + - ["::into", "Argument[self].Field[as_if_std::the_backtrace_crate::capture::Backtrace::frames].Field[backtrace::capture::Backtrace::frames].Field[std::backtrace_rs::capture::Backtrace::frames]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[as_if_std::the_backtrace_crate::capture::BacktraceFrame::frame].Field[backtrace::capture::BacktraceFrame::frame].Field[std::backtrace_rs::capture::BacktraceFrame::frame].Field[as_if_std::the_backtrace_crate::capture::Frame::Raw(0)].Field[backtrace::capture::Frame::Raw(0)].Field[std::backtrace_rs::capture::Frame::Raw(0)]", "value", "dfc-generated"] + - ["::symbols", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::colno", "Argument[self].Field[as_if_std::the_backtrace_crate::capture::BacktraceSymbol::colno].Field[backtrace::capture::BacktraceSymbol::colno].Field[std::backtrace_rs::capture::BacktraceSymbol::colno]", "ReturnValue", "value", "dfc-generated"] + - ["::lineno", "Argument[self].Field[as_if_std::the_backtrace_crate::capture::BacktraceSymbol::lineno].Field[backtrace::capture::BacktraceSymbol::lineno].Field[std::backtrace_rs::capture::BacktraceSymbol::lineno]", "ReturnValue", "value", "dfc-generated"] + - ["::name", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::formatter", "Argument[self].Field[as_if_std::the_backtrace_crate::print::BacktraceFmt::fmt].Field[backtrace::print::BacktraceFmt::fmt].Field[std::backtrace_rs::print::BacktraceFmt::fmt]", "ReturnValue", "value", "dfc-generated"] + - ["::frame", "Argument[self]", "ReturnValue.Field[as_if_std::the_backtrace_crate::print::BacktraceFrameFmt::fmt].Field[backtrace::print::BacktraceFrameFmt::fmt].Field[std::backtrace_rs::print::BacktraceFrameFmt::fmt]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[as_if_std::the_backtrace_crate::print::BacktraceFmt::fmt].Field[backtrace::print::BacktraceFmt::fmt].Field[std::backtrace_rs::print::BacktraceFmt::fmt]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[as_if_std::the_backtrace_crate::print::BacktraceFmt::format].Field[backtrace::print::BacktraceFmt::format].Field[std::backtrace_rs::print::BacktraceFmt::format]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[as_if_std::the_backtrace_crate::print::BacktraceFmt::print_path].Field[backtrace::print::BacktraceFmt::print_path].Field[std::backtrace_rs::print::BacktraceFmt::print_path]", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::Symbol::inner].Field[backtrace::symbolize::Symbol::inner].Field[std::backtrace_rs::symbolize::Symbol::inner].Field[as_if_std::the_backtrace_crate::symbolize::gimli::Symbol::Symtab::name].Field[backtrace::symbolize::gimli::Symbol::Symtab::name].Field[std::backtrace_rs::symbolize::gimli::Symbol::Symtab::name]", "ReturnValue.Field[core::option::Option::Some(0)].Field[as_if_std::the_backtrace_crate::symbolize::SymbolName::bytes].Field[backtrace::symbolize::SymbolName::bytes].Field[std::backtrace_rs::symbolize::SymbolName::bytes]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::as_bytes", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::SymbolName::bytes].Field[backtrace::symbolize::SymbolName::bytes].Field[std::backtrace_rs::symbolize::SymbolName::bytes]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[as_if_std::the_backtrace_crate::symbolize::SymbolName::bytes].Field[backtrace::symbolize::SymbolName::bytes].Field[std::backtrace_rs::symbolize::SymbolName::bytes]", "value", "dfc-generated"] + - ["::addr", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::gimli::Symbol::Frame::addr].Field[backtrace::symbolize::gimli::Symbol::Frame::addr].Field[std::backtrace_rs::symbolize::gimli::Symbol::Frame::addr].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::gimli::Symbol::Symtab::name].Field[backtrace::symbolize::gimli::Symbol::Symtab::name].Field[std::backtrace_rs::symbolize::gimli::Symbol::Symtab::name]", "ReturnValue.Field[core::option::Option::Some(0)].Field[as_if_std::the_backtrace_crate::symbolize::SymbolName::bytes].Field[backtrace::symbolize::SymbolName::bytes].Field[std::backtrace_rs::symbolize::SymbolName::bytes]", "value", "dfc-generated"] + - ["::section", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::map", "Argument[1]", "ReturnValue.Field[core::option::Option::Some(0)].Field[as_if_std::the_backtrace_crate::symbolize::gimli::mmap::Mmap::len].Field[backtrace::symbolize::gimli::mmap::Mmap::len].Field[std::backtrace_rs::symbolize::gimli::mmap::Mmap::len]", "value", "dfc-generated"] + - ["::pathname", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::gimli::parse_running_mmaps::MapsEntry::pathname].Field[backtrace::symbolize::gimli::parse_running_mmaps::MapsEntry::pathname].Field[std::backtrace_rs::symbolize::gimli::parse_running_mmaps::MapsEntry::pathname]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::allocate", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::and_modify", "Argument[self].Field[std::collections::hash::map::Entry::Occupied(0)]", "ReturnValue.Field[std::collections::hash::map::Entry::Occupied(0)]", "value", "dfc-generated"] + - ["::and_modify", "Argument[self].Field[std::collections::hash::map::Entry::Vacant(0)]", "ReturnValue.Field[std::collections::hash::map::Entry::Vacant(0)]", "value", "dfc-generated"] + - ["::insert_entry", "Argument[self].Field[std::collections::hash::map::Entry::Occupied(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::map::HashMap::base].Reference", "ReturnValue.Field[std::collections::hash::map::HashMap::base]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::map::HashMap::base]", "ReturnValue.Field[std::collections::hash::map::HashMap::base]", "value", "dfc-generated"] + - ["::try_insert", "Argument[1]", "ReturnValue.Field[core::result::Result::Err(0)].Field[std::collections::hash::map::OccupiedError::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::map::Iter::base].Reference", "ReturnValue.Field[std::collections::hash::map::Iter::base]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::map::Iter::base]", "ReturnValue.Field[std::collections::hash::map::Iter::base]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::map::Keys::inner].Field[std::collections::hash::map::Iter::base]", "ReturnValue.Field[std::collections::hash::map::Keys::inner].Field[std::collections::hash::map::Iter::base]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::map::Keys::inner].Reference", "ReturnValue.Field[std::collections::hash::map::Keys::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::map::Keys::inner]", "ReturnValue.Field[std::collections::hash::map::Keys::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::map::Values::inner].Field[std::collections::hash::map::Iter::base]", "ReturnValue.Field[std::collections::hash::map::Values::inner].Field[std::collections::hash::map::Iter::base]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::map::Values::inner].Reference", "ReturnValue.Field[std::collections::hash::map::Values::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::map::Values::inner]", "ReturnValue.Field[std::collections::hash::map::Values::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::Difference::iter].Field[std::collections::hash::set::Iter::base]", "ReturnValue.Field[std::collections::hash::set::Difference::iter].Field[std::collections::hash::set::Iter::base]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::Difference::iter].Reference", "ReturnValue.Field[std::collections::hash::set::Difference::iter]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::Difference::iter]", "ReturnValue.Field[std::collections::hash::set::Difference::iter]", "value", "dfc-generated"] + - ["::insert", "Argument[self].Field[std::collections::hash::set::Entry::Occupied(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::HashSet::base].Reference", "ReturnValue.Field[std::collections::hash::set::HashSet::base]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::HashSet::base]", "ReturnValue.Field[std::collections::hash::set::HashSet::base]", "value", "dfc-generated"] + - ["::difference", "Argument[0]", "ReturnValue.Field[std::collections::hash::set::Difference::other]", "value", "dfc-generated"] + - ["::intersection", "Argument[0]", "ReturnValue.Field[std::collections::hash::set::Intersection::other]", "value", "dfc-generated"] + - ["::intersection", "Argument[self]", "ReturnValue.Field[std::collections::hash::set::Intersection::other]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::Intersection::iter].Field[std::collections::hash::set::Iter::base]", "ReturnValue.Field[std::collections::hash::set::Intersection::iter].Field[std::collections::hash::set::Iter::base]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::Intersection::iter].Reference", "ReturnValue.Field[std::collections::hash::set::Intersection::iter]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::Intersection::iter]", "ReturnValue.Field[std::collections::hash::set::Intersection::iter]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::Iter::base].Reference", "ReturnValue.Field[std::collections::hash::set::Iter::base]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::Iter::base]", "ReturnValue.Field[std::collections::hash::set::Iter::base]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::SymmetricDifference::iter].Reference", "ReturnValue.Field[std::collections::hash::set::SymmetricDifference::iter]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::SymmetricDifference::iter]", "ReturnValue.Field[std::collections::hash::set::SymmetricDifference::iter]", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::Union::iter].Reference", "ReturnValue.Field[std::collections::hash::set::Union::iter]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::collections::hash::set::Union::iter]", "ReturnValue.Field[std::collections::hash::set::Union::iter]", "value", "dfc-generated"] + - ["::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[std::error::Report::error]", "value", "dfc-generated"] + - ["::pretty", "Argument[0]", "Argument[self].Field[std::error::Report::pretty]", "value", "dfc-generated"] + - ["::pretty", "Argument[0]", "ReturnValue.Field[std::error::Report::pretty]", "value", "dfc-generated"] + - ["::pretty", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::show_backtrace", "Argument[0]", "Argument[self].Field[std::error::Report::show_backtrace]", "value", "dfc-generated"] + - ["::show_backtrace", "Argument[0]", "ReturnValue.Field[std::error::Report::show_backtrace]", "value", "dfc-generated"] + - ["::show_backtrace", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_inner", "Argument[self].Field[std::ffi::os_str::OsStr::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_encoded_bytes", "Argument[self].Field[std::ffi::os_str::OsStr::inner].Field[std::sys::os_str::bytes::Slice::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::display", "Argument[self]", "ReturnValue.Field[std::ffi::os_str::Display::os_str]", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::ffi::os_str::OsString::inner].Field[std::sys::os_str::bytes::Buf::inner]", "ReturnValue.Field[std::ffi::os_str::OsString::inner].Field[std::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::ffi::os_str::OsString::inner].Reference", "ReturnValue.Field[std::ffi::os_str::OsString::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::ffi::os_str::OsString::inner]", "ReturnValue.Field[std::ffi::os_str::OsString::inner]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::string::String::vec]", "ReturnValue.Field[std::ffi::os_str::OsString::inner].Field[std::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[std::path::PathBuf::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_str", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::from_str", "Argument[0].Field[std::path::PathBuf::inner]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::into_vec", "Argument[self].Field[std::ffi::os_str::OsString::inner].Field[std::sys::os_str::bytes::Buf::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::ffi::os_str::OsString::inner]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::ffi::os_str::OsString::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::as_os_str", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from_encoded_bytes_unchecked", "Argument[0]", "ReturnValue.Field[std::ffi::os_str::OsString::inner].Field[std::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"] + - ["::into_encoded_bytes", "Argument[self].Field[std::ffi::os_str::OsString::inner].Field[std::sys::os_str::bytes::Buf::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::into_string", "Argument[self].Field[std::ffi::os_str::OsString::inner].Field[std::sys::os_str::bytes::Buf::inner]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::mode", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner_mut", "Argument[self].Field[std::fs::DirBuilder::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::recursive", "Argument[0]", "Argument[self].Field[std::fs::DirBuilder::recursive]", "value", "dfc-generated"] + - ["::recursive", "Argument[0]", "ReturnValue.Field[std::fs::DirBuilder::recursive]", "value", "dfc-generated"] + - ["::recursive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::fs::DirEntry(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_string", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::as_inner", "Argument[self].Field[std::fs::File::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::fs::File::inner]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::fs::File::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner_mut", "Argument[self].Field[std::fs::FileTimes(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::set_accessed", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_modified", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::fs::FileType(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::fs::Metadata(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::fs::Metadata(0)]", "value", "dfc-generated"] + - ["::custom_flags", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mode", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::fs::OpenOptions(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner_mut", "Argument[self].Field[std::fs::OpenOptions(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::append", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::create", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::create_new", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::read", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::truncate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::write", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mode", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::fs::Permissions(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::fs::Permissions(0)]", "value", "dfc-generated"] + - ["::read_until", "Argument[self]", "Argument[1]", "taint", "df-generated"] + - ["::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_end", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[std::io::Chain::first]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[std::io::Chain::second]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[std::io::Chain::first]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[std::io::Chain::second]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::io::Chain::first]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::io::Chain::second]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::drop", "Argument[self].Field[std::io::Guard::len]", "Argument[self].Field[std::io::Guard::buf].Field[alloc::vec::Vec::len]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::lower_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::upper_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::min_limit", "Argument[self].Field[std::io::Take::limit]", "ReturnValue", "value", "dfc-generated"] + - ["::taken", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[std::io::Take::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[std::io::Take::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::io::Take::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::limit", "Argument[self].Field[std::io::Take::limit]", "ReturnValue", "value", "dfc-generated"] + - ["::set_limit", "Argument[0]", "Argument[self].Field[std::io::Take::limit]", "value", "dfc-generated"] + - ["::error", "Argument[self].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::error", "Argument[self].Field[std::io::buffered::IntoInnerError(1)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_error", "Argument[self].Field[1]", "ReturnValue", "value", "dfc-generated"] + - ["::into_error", "Argument[self].Field[std::io::buffered::IntoInnerError(1)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::io::buffered::IntoInnerError(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_parts", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::consume", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::read_buf", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::read_buf", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::read_exact", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_string", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::read_vectored", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::seek_relative", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[std::io::buffered::bufreader::BufReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[std::io::buffered::bufreader::BufReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::io::buffered::bufreader::BufReader::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::io::buffered::bufreader::BufReader::inner]", "value", "dfc-generated"] + - ["::seek_relative", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::with_buffer", "Argument[0]", "ReturnValue.Field[std::io::buffered::bufreader::BufReader::inner]", "value", "dfc-generated"] + - ["::with_buffer", "Argument[1]", "ReturnValue.Field[std::io::buffered::bufreader::BufReader::buf]", "value", "dfc-generated"] + - ["::with_capacity", "Argument[1]", "ReturnValue.Field[std::io::buffered::bufreader::BufReader::inner]", "value", "dfc-generated"] + - ["::consume", "Argument[self].Field[std::io::buffered::bufreader::buffer::Buffer::filled]", "Argument[self].Field[std::io::buffered::bufreader::buffer::Buffer::pos]", "value", "dfc-generated"] + - ["::filled", "Argument[self].Field[std::io::buffered::bufreader::buffer::Buffer::filled]", "ReturnValue", "value", "dfc-generated"] + - ["::pos", "Argument[self].Field[std::io::buffered::bufreader::buffer::Buffer::pos]", "ReturnValue", "value", "dfc-generated"] + - ["::buffer", "Argument[self].Field[std::io::buffered::bufwriter::BufWriter::buf]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::buffer_mut", "Argument[self].Field[std::io::buffered::bufwriter::BufWriter::buf]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[std::io::buffered::bufwriter::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[std::io::buffered::bufwriter::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::io::buffered::bufwriter::BufWriter::inner]", "value", "dfc-generated"] + - ["::with_buffer", "Argument[0]", "ReturnValue.Field[std::io::buffered::bufwriter::BufWriter::inner]", "value", "dfc-generated"] + - ["::with_buffer", "Argument[1]", "ReturnValue.Field[std::io::buffered::bufwriter::BufWriter::buf]", "value", "dfc-generated"] + - ["::with_capacity", "Argument[1]", "ReturnValue.Field[std::io::buffered::bufwriter::BufWriter::inner]", "value", "dfc-generated"] + - ["::write_to_buf", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[std::io::buffered::bufwriter::WriterPanicked::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[std::io::buffered::linewriter::LineWriter::inner].Field[std::io::buffered::bufwriter::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[std::io::buffered::linewriter::LineWriter::inner].Field[std::io::buffered::bufwriter::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::io::buffered::linewriter::LineWriter::inner].Field[std::io::buffered::bufwriter::BufWriter::inner]", "value", "dfc-generated"] + - ["::with_capacity", "Argument[1]", "ReturnValue.Field[std::io::buffered::linewriter::LineWriter::inner].Field[std::io::buffered::bufwriter::BufWriter::inner]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::io::buffered::linewritershim::LineWriterShim::buffer]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::io::cursor::Cursor::inner].Reference", "ReturnValue.Field[std::io::cursor::Cursor::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::io::cursor::Cursor::inner]", "ReturnValue.Field[std::io::cursor::Cursor::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::io::cursor::Cursor::pos]", "ReturnValue.Field[std::io::cursor::Cursor::pos]", "value", "dfc-generated"] + - ["::clone_from", "Argument[0].Field[std::io::cursor::Cursor::inner]", "Argument[self].Field[std::io::cursor::Cursor::inner].Reference", "value", "dfc-generated"] + - ["::clone_from", "Argument[0].Field[std::io::cursor::Cursor::inner]", "Argument[self].Field[std::io::cursor::Cursor::inner]", "value", "dfc-generated"] + - ["::clone_from", "Argument[0].Field[std::io::cursor::Cursor::pos]", "Argument[self].Field[std::io::cursor::Cursor::pos]", "value", "dfc-generated"] + - ["::seek", "Argument[0].Field[std::io::SeekFrom::Start(0)]", "Argument[self].Field[std::io::cursor::Cursor::pos]", "value", "dfc-generated"] + - ["::seek", "Argument[0].Field[std::io::SeekFrom::Start(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::seek", "Argument[self].Field[std::io::cursor::Cursor::pos]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::stream_position", "Argument[self].Field[std::io::cursor::Cursor::pos]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[std::io::cursor::Cursor::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[std::io::cursor::Cursor::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::io::cursor::Cursor::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::io::cursor::Cursor::inner]", "value", "dfc-generated"] + - ["::position", "Argument[self].Field[std::io::cursor::Cursor::pos]", "ReturnValue", "value", "dfc-generated"] + - ["::set_position", "Argument[0]", "Argument[self].Field[std::io::cursor::Cursor::pos]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[1]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[std::io::buffered::IntoInnerError(1)]", "ReturnValue", "value", "dfc-generated"] + - ["::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::io::pipe::PipeReader(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::io::pipe::PipeWriter(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::lock", "Argument[self].Field[std::io::stdio::Stderr::inner]", "ReturnValue.Field[std::io::stdio::StderrLock::inner].Field[std::sync::reentrant_lock::ReentrantLockGuard::lock]", "value", "dfc-generated"] + - ["::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_exact", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::lines", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::lock", "Argument[self].Field[std::io::stdio::Stdin::inner]", "ReturnValue.Field[std::io::stdio::StdinLock::inner].Field[std::sync::poison::mutex::MutexGuard::lock]", "value", "dfc-generated"] + - ["::as_mut_buf", "Argument[self].Field[std::io::stdio::StdinLock::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_exact", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_string", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::lock", "Argument[self].Field[std::io::stdio::Stdout::inner]", "ReturnValue.Field[std::io::stdio::StdoutLock::inner].Field[std::sync::reentrant_lock::ReentrantLockGuard::lock]", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::net::tcp::TcpListener(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::net::tcp::TcpListener(0)]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::net::tcp::TcpListener(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::incoming", "Argument[self]", "ReturnValue.Field[std::net::tcp::Incoming::listener]", "value", "dfc-generated"] + - ["::into_incoming", "Argument[self]", "ReturnValue.Field[std::net::tcp::IntoIncoming::listener]", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::net::tcp::TcpStream(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::net::tcp::TcpStream(0)]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::net::tcp::TcpStream(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::net::udp::UdpSocket(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::net::udp::UdpSocket(0)]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::net::udp::UdpSocket(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::as_fd", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::as_inner", "Argument[self].Field[std::os::linux::process::PidFd::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::os::linux::process::PidFd::inner]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::os::linux::process::PidFd::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::from_parts", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[std::os::unix::net::addr::SocketAddr::addr]", "value", "dfc-generated"] + - ["::from_parts", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[std::os::unix::net::addr::SocketAddr::len]", "value", "dfc-generated"] + - ["::new", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[std::os::unix::net::ancillary::AncillaryDataIter::data].Element", "Argument[self].Field[std::os::unix::net::ancillary::AncillaryDataIter::data].Reference", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::next", "Argument[self].Field[0].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[std::os::unix::net::ancillary::ScmRights(0)].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[std::os::unix::net::ancillary::SocketAncillary::length]", "ReturnValue", "value", "dfc-generated"] + - ["::messages", "Argument[self].Field[std::os::unix::net::ancillary::SocketAncillary::buffer].Element", "ReturnValue.Field[std::os::unix::net::ancillary::Messages::buffer].Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::os::unix::net::ancillary::SocketAncillary::buffer]", "value", "dfc-generated"] + - ["::truncated", "Argument[self].Field[std::os::unix::net::ancillary::SocketAncillary::truncated]", "ReturnValue", "value", "dfc-generated"] + - ["::get_gid", "Argument[self].Field[0].Field[libc::unix::linux_like::linux::ucred::gid]", "ReturnValue", "value", "dfc-generated"] + - ["::get_gid", "Argument[self].Field[std::os::unix::net::ancillary::SocketCred(0)].Field[libc::unix::linux_like::linux::ucred::gid]", "ReturnValue", "value", "dfc-generated"] + - ["::get_pid", "Argument[self].Field[0].Field[libc::unix::linux_like::linux::ucred::pid]", "ReturnValue", "value", "dfc-generated"] + - ["::get_pid", "Argument[self].Field[std::os::unix::net::ancillary::SocketCred(0)].Field[libc::unix::linux_like::linux::ucred::pid]", "ReturnValue", "value", "dfc-generated"] + - ["::get_uid", "Argument[self].Field[0].Field[libc::unix::linux_like::linux::ucred::uid]", "ReturnValue", "value", "dfc-generated"] + - ["::get_uid", "Argument[self].Field[std::os::unix::net::ancillary::SocketCred(0)].Field[libc::unix::linux_like::linux::ucred::uid]", "ReturnValue", "value", "dfc-generated"] + - ["::set_gid", "Argument[0]", "Argument[self].Field[0].Field[libc::unix::linux_like::linux::ucred::gid]", "value", "dfc-generated"] + - ["::set_gid", "Argument[0]", "Argument[self].Field[std::os::unix::net::ancillary::SocketCred(0)].Field[libc::unix::linux_like::linux::ucred::gid]", "value", "dfc-generated"] + - ["::set_pid", "Argument[0]", "Argument[self].Field[0].Field[libc::unix::linux_like::linux::ucred::pid]", "value", "dfc-generated"] + - ["::set_pid", "Argument[0]", "Argument[self].Field[std::os::unix::net::ancillary::SocketCred(0)].Field[libc::unix::linux_like::linux::ucred::pid]", "value", "dfc-generated"] + - ["::set_uid", "Argument[0]", "Argument[self].Field[0].Field[libc::unix::linux_like::linux::ucred::uid]", "value", "dfc-generated"] + - ["::set_uid", "Argument[0]", "Argument[self].Field[std::os::unix::net::ancillary::SocketCred(0)].Field[libc::unix::linux_like::linux::ucred::uid]", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::os::unix::net::datagram::UnixDatagram(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::incoming", "Argument[self]", "ReturnValue.Field[std::os::unix::net::listener::Incoming::listener]", "value", "dfc-generated"] + - ["::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::os::unix::net::stream::UnixStream(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::can_unwind", "Argument[self].Field[std::panic::PanicHookInfo::can_unwind]", "ReturnValue", "value", "dfc-generated"] + - ["::force_no_backtrace", "Argument[self].Field[std::panic::PanicHookInfo::force_no_backtrace]", "ReturnValue", "value", "dfc-generated"] + - ["::location", "Argument[self].Field[std::panic::PanicHookInfo::location]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::panic::PanicHookInfo::location]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[std::panic::PanicHookInfo::payload]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[std::panic::PanicHookInfo::can_unwind]", "value", "dfc-generated"] + - ["::new", "Argument[3]", "ReturnValue.Field[std::panic::PanicHookInfo::force_no_backtrace]", "value", "dfc-generated"] + - ["::payload", "Argument[self].Field[std::panic::PanicHookInfo::payload]", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[std::path::Ancestors::next]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[std::path::Component::Normal(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Reference.Field[std::path::Component::Normal(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::as_os_str", "Argument[self].Field[std::path::Component::Normal(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::next_back", "Argument[self].Field[std::path::Components::path].Element", "Argument[self].Field[std::path::Components::path].Reference", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[std::path::Components::path].Element", "Argument[self].Field[std::path::Components::path].Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[std::path::Path::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::ancestors", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_mut_os_str", "Argument[self].Field[std::path::Path::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_os_str", "Argument[self].Field[std::path::Path::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::display", "Argument[self].Field[std::path::Path::inner]", "ReturnValue.Field[std::path::Display::inner].Field[std::ffi::os_str::Display::os_str]", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::path::PathBuf::inner].Field[std::ffi::os_str::OsString::inner]", "ReturnValue.Field[std::path::PathBuf::inner].Field[std::ffi::os_str::OsString::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::path::PathBuf::inner].Reference", "ReturnValue.Field[std::path::PathBuf::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::path::PathBuf::inner]", "ReturnValue.Field[std::path::PathBuf::inner]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[std::path::PathBuf::inner].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[std::path::PathBuf::inner]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::as_mut_os_string", "Argument[self].Field[std::path::PathBuf::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_path", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::into_os_string", "Argument[self].Field[std::path::PathBuf::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::as_os_str", "Argument[self].Field[std::path::PrefixComponent::raw]", "ReturnValue", "value", "dfc-generated"] + - ["::kind", "Argument[self].Field[std::path::PrefixComponent::parsed]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_pidfd", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::process::Child::handle]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0].Field[0]", "ReturnValue.Field[std::process::Child::handle]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::process::Child::handle]", "ReturnValue", "value", "dfc-generated"] + - ["::id", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::as_inner", "Argument[self].Field[std::process::ChildStderr::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::process::ChildStderr::inner]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::process::ChildStderr::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::process::ChildStdin::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::process::ChildStdin::inner]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::process::ChildStdin::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::as_inner", "Argument[self].Field[std::process::ChildStdout::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::process::ChildStdout::inner]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::process::ChildStdout::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::create_pidfd", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::arg0", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::gid", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::groups", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::pre_exec", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::process_group", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::uid", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::process::Command::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner_mut", "Argument[self].Field[std::process::Command::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::current_dir", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::env", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::env_clear", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::env_remove", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::envs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::stderr", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::stdin", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::stdout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::report", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::process::ExitCode(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::process::ExitCode(0)]", "value", "dfc-generated"] + - ["::to_i32", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::process::ExitStatus(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::process::ExitStatus(0)]", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::process::Stdio(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::sync::barrier::Barrier::num_threads]", "value", "dfc-generated"] + - ["::is_leader", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::is_leader", "Argument[self].Field[std::sync::barrier::BarrierWaitResult(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::iter", "Argument[self]", "ReturnValue.Field[std::sync::mpmc::Iter::rx]", "value", "dfc-generated"] + - ["::try_iter", "Argument[self]", "ReturnValue.Field[std::sync::mpmc::TryIter::rx]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::capacity", "Argument[self].Field[std::sync::mpmc::array::Channel::cap]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[std::sync::mpmc::array::Channel::cap]", "ReturnValue", "value", "dfc-generated"] + - ["::send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[std::sync::mpmc::error::SendTimeoutError::Timeout(0)]", "value", "dfc-generated"] + - ["::try_send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[std::sync::mpsc::TrySendError::Full(0)]", "value", "dfc-generated"] + - ["::with_capacity", "Argument[0]", "ReturnValue.Field[std::sync::mpmc::array::Channel::cap]", "value", "dfc-generated"] + - ["::write", "Argument[1]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::acquire", "Argument[self].Field[std::sync::mpmc::counter::Receiver::counter]", "ReturnValue.Field[std::sync::mpmc::counter::Receiver::counter]", "value", "dfc-generated"] + - ["::acquire", "Argument[self].Field[std::sync::mpmc::counter::Sender::counter]", "ReturnValue.Field[std::sync::mpmc::counter::Sender::counter]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[std::sync::mpsc::SendError(0)]", "ReturnValue.Field[std::sync::mpmc::error::SendTimeoutError::Disconnected(0)]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::write", "Argument[1]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::hook", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[std::sync::mpmc::select::Selected::Operation(0)].Field[std::sync::mpmc::select::Operation(0)]", "value", "dfc-generated"] + - ["::into", "Argument[self].Field[std::sync::mpmc::select::Selected::Operation(0)].Field[std::sync::mpmc::select::Operation(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[std::sync::mpmc::utils::CachePadded::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[std::sync::mpmc::utils::CachePadded::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::sync::mpmc::utils::CachePadded::value]", "value", "dfc-generated"] + - ["::send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[std::sync::mpmc::error::SendTimeoutError::Disconnected(0)]", "value", "dfc-generated"] + - ["::try_send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[std::sync::mpsc::TrySendError::Disconnected(0)]", "value", "dfc-generated"] + - ["::try_send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[std::sync::mpsc::TrySendError::Full(0)]", "value", "dfc-generated"] + - ["::write", "Argument[1]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::iter", "Argument[self]", "ReturnValue.Field[std::sync::mpsc::Iter::rx]", "value", "dfc-generated"] + - ["::try_iter", "Argument[self]", "ReturnValue.Field[std::sync::mpsc::TryIter::rx]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Field[std::sync::mpsc::Sender::inner].Reference", "ReturnValue.Field[std::sync::mpsc::Sender::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::sync::mpsc::Sender::inner]", "ReturnValue.Field[std::sync::mpsc::Sender::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::sync::mpsc::SyncSender::inner].Reference", "ReturnValue.Field[std::sync::mpsc::SyncSender::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::sync::mpsc::SyncSender::inner]", "ReturnValue.Field[std::sync::mpsc::SyncSender::inner]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0].Field[std::sync::mpsc::SendError(0)]", "ReturnValue.Field[std::sync::mpsc::TrySendError::Disconnected(0)]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::set", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::try_insert", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[1]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[std::sync::poison::PoisonError::data]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[std::sync::poison::PoisonError::data]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::sync::poison::PoisonError::data]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::sync::poison::PoisonError::data]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[std::sync::poison::TryLockError::Poisoned(0)]", "value", "dfc-generated"] + - ["::cause", "Argument[self].Reference.Field[std::sync::poison::TryLockError::Poisoned(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::wait", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[std::sync::poison::PoisonError::data]", "value", "dfc-generated"] + - ["::wait", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::wait_timeout", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "value", "dfc-generated"] + - ["::wait_timeout_ms", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "value", "dfc-generated"] + - ["::wait_timeout_while", "Argument[0].Reference", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] + - ["::wait_timeout_while", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "value", "dfc-generated"] + - ["::wait_while", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::wait_while", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::timed_out", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::timed_out", "Argument[self].Field[std::sync::poison::condvar::WaitTimeoutResult(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::map", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[std::sync::poison::mutex::Mutex::data].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[std::sync::poison::mutex::Mutex::data].Field[core::cell::UnsafeCell::value]", "ReturnValue.Field[core::result::Result::Ok(0)].Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::sync::poison::mutex::Mutex::data].Field[core::cell::UnsafeCell::value]", "ReturnValue.Field[core::result::Result::Err(0)].Field[std::sync::poison::PoisonError::data]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::sync::poison::mutex::Mutex::data].Field[core::cell::UnsafeCell::value]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::lock", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[std::sync::poison::mutex::MutexGuard::lock]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::sync::poison::mutex::Mutex::data].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::replace", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[std::sync::poison::PoisonError::data]", "value", "dfc-generated"] + - ["::set", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[std::sync::poison::PoisonError::data]", "value", "dfc-generated"] + - ["::try_lock", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[std::sync::poison::mutex::MutexGuard::lock]", "value", "dfc-generated"] + - ["::try_lock", "Argument[self]", "ReturnValue.Field[std::sync::poison::mutex::MutexGuard::lock]", "value", "dfc-generated"] + - ["::map", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::is_poisoned", "Argument[self].Field[std::sync::poison::once::OnceState::inner].Field[std::sys::sync::once::futex::OnceState::poisoned]", "ReturnValue", "value", "dfc-generated"] + - ["::map", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::map", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[std::sync::poison::rwlock::RwLock::data].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[std::sync::poison::rwlock::RwLock::data].Field[core::cell::UnsafeCell::value]", "ReturnValue.Field[core::result::Result::Ok(0)].Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::sync::poison::rwlock::RwLock::data].Field[core::cell::UnsafeCell::value]", "ReturnValue.Field[core::result::Result::Err(0)].Field[std::sync::poison::PoisonError::data]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::sync::poison::rwlock::RwLock::data].Field[core::cell::UnsafeCell::value]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::sync::poison::rwlock::RwLock::data].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::read", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::replace", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[std::sync::poison::PoisonError::data]", "value", "dfc-generated"] + - ["::set", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[std::sync::poison::PoisonError::data]", "value", "dfc-generated"] + - ["::try_read", "Argument[self].Field[std::sync::poison::rwlock::RwLock::inner]", "ReturnValue.Field[std::sync::poison::rwlock::RwLockReadGuard::inner_lock].Reference", "value", "dfc-generated"] + - ["::try_write", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[std::sync::poison::rwlock::RwLockWriteGuard::lock]", "value", "dfc-generated"] + - ["::try_write", "Argument[self]", "ReturnValue.Field[std::sync::poison::rwlock::RwLockWriteGuard::lock]", "value", "dfc-generated"] + - ["::write", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[std::sync::poison::rwlock::RwLockWriteGuard::lock]", "value", "dfc-generated"] + - ["::map", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::downgrade", "Argument[0].Field[std::sync::poison::rwlock::RwLockWriteGuard::lock].Field[std::sync::poison::rwlock::RwLock::inner]", "ReturnValue.Field[std::sync::poison::rwlock::RwLockReadGuard::inner_lock].Reference", "value", "dfc-generated"] + - ["::map", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[std::sync::reentrant_lock::ReentrantLock::data]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::sync::reentrant_lock::ReentrantLock::data]", "ReturnValue", "value", "dfc-generated"] + - ["::lock", "Argument[self]", "ReturnValue.Field[std::sync::reentrant_lock::ReentrantLockGuard::lock]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::sync::reentrant_lock::ReentrantLock::data]", "value", "dfc-generated"] + - ["::try_lock", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)].Field[std::sync::reentrant_lock::ReentrantLockGuard::lock]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[std::sync::reentrant_lock::ReentrantLockGuard::lock].Field[std::sync::reentrant_lock::ReentrantLock::data]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::set_mode", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::ino", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::sys::fs::unix::File(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner_mut", "Argument[self].Field[std::sys::fs::unix::File(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::sys::fs::unix::File(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::sys::fs::unix::FileAttr::stat]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::accessed", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::file_type", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::modified", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::perm", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::size", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::mode", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::set_accessed", "Argument[0]", "Argument[self].Field[std::sys::fs::unix::FileTimes::accessed].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::set_modified", "Argument[0]", "Argument[self].Field[std::sys::fs::unix::FileTimes::modified].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::append", "Argument[0]", "Argument[self].Field[std::sys::fs::unix::OpenOptions::append]", "value", "dfc-generated"] + - ["::create", "Argument[0]", "Argument[self].Field[std::sys::fs::unix::OpenOptions::create]", "value", "dfc-generated"] + - ["::create_new", "Argument[0]", "Argument[self].Field[std::sys::fs::unix::OpenOptions::create_new]", "value", "dfc-generated"] + - ["::custom_flags", "Argument[0]", "Argument[self].Field[std::sys::fs::unix::OpenOptions::custom_flags]", "value", "dfc-generated"] + - ["::mode", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::read", "Argument[0]", "Argument[self].Field[std::sys::fs::unix::OpenOptions::read]", "value", "dfc-generated"] + - ["::truncate", "Argument[0]", "Argument[self].Field[std::sys::fs::unix::OpenOptions::truncate]", "value", "dfc-generated"] + - ["::write", "Argument[0]", "Argument[self].Field[std::sys::fs::unix::OpenOptions::write]", "value", "dfc-generated"] + - ["::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_to_string", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::properties", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::properties", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::port", "Argument[self].Field[std::sys::net::connection::socket::LookupHost::port]", "ReturnValue", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::sys::net::connection::socket::TcpListener::inner]", "value", "dfc-generated"] + - ["::bind", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::bind", "Argument[0].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_socket", "Argument[self].Field[std::sys::net::connection::socket::TcpListener::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::socket", "Argument[self].Field[std::sys::net::connection::socket::TcpListener::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::sys::net::connection::socket::TcpStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::sys::net::connection::socket::TcpStream::inner]", "value", "dfc-generated"] + - ["::connect", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::connect", "Argument[0].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_socket", "Argument[self].Field[std::sys::net::connection::socket::TcpStream::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::socket", "Argument[self].Field[std::sys::net::connection::socket::TcpStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::sys::net::connection::socket::UdpSocket::inner]", "value", "dfc-generated"] + - ["::bind", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::bind", "Argument[0].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::connect", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::connect", "Argument[0].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_socket", "Argument[self].Field[std::sys::net::connection::socket::UdpSocket::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::socket", "Argument[self].Field[std::sys::net::connection::socket::UdpSocket::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::sys::net::connection::socket::unix::Socket(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::sys::net::connection::socket::unix::Socket(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::sys::os_str::bytes::Buf::inner].Reference", "ReturnValue.Field[std::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[std::sys::os_str::bytes::Buf::inner]", "ReturnValue.Field[std::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::sys::os_str::bytes::Buf::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::sys::os_str::bytes::Buf::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::from_encoded_bytes_unchecked", "Argument[0]", "ReturnValue.Field[std::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"] + - ["::from_string", "Argument[0].Field[alloc::string::String::vec]", "ReturnValue.Field[std::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"] + - ["::into_encoded_bytes", "Argument[self].Field[std::sys::os_str::bytes::Buf::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::into_string", "Argument[self].Field[std::sys::os_str::bytes::Buf::inner]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::truncate", "Argument[0]", "Argument[self].Field[std::sys::os_str::bytes::Buf::inner].Field[alloc::vec::Vec::len]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::as_encoded_bytes", "Argument[self].Field[std::sys::os_str::bytes::Slice::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::sys::pal::unix::fd::FileDesc(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::sys::pal::unix::fd::FileDesc(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::sys::pal::unix::linux::pidfd::PidFd(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::sys::pal::unix::linux::pidfd::PidFd(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::sys::pal::unix::pipe::AnonPipe(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::as_file_desc", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_file_desc", "Argument[self].Field[std::sys::pal::unix::pipe::AnonPipe(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::raw", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::id", "Argument[self].Field[std::sys::pal::unix::thread::Thread::id]", "ReturnValue", "value", "dfc-generated"] + - ["::checked_sub_instant", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::checked_sub_instant", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::sys::pal::unix::time::Timespec::tv_sec]", "value", "dfc-generated"] + - ["::sub_time", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub_time", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::sub_timespec", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub_timespec", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::sys::pal::unix::weak::DlsymWeak::name]", "value", "dfc-generated"] + - ["::get", "Argument[self].Field[std::sys::pal::unix::weak::ExternWeak::weak_ptr]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::sys::pal::unix::weak::ExternWeak::weak_ptr]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::sys::personality::dwarf::DwarfReader::ptr]", "value", "dfc-generated"] + - ["::fd", "Argument[self].Reference.Field[std::sys::process::unix::common::ChildStdio::Explicit(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::create_pidfd", "Argument[0]", "Argument[self].Field[std::sys::process::unix::common::Command::create_pidfd]", "value", "dfc-generated"] + - ["::env_mut", "Argument[self].Field[std::sys::process::unix::common::Command::env]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_argv", "Argument[self].Field[std::sys::process::unix::common::Command::argv].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_argv", "Argument[self].Field[std::sys::process::unix::common::Command::argv].Field[std::sys::process::unix::common::Argv(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_closures", "Argument[self].Field[std::sys::process::unix::common::Command::closures]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_create_pidfd", "Argument[self].Field[std::sys::process::unix::common::Command::create_pidfd]", "ReturnValue", "value", "dfc-generated"] + - ["::get_gid", "Argument[self].Field[std::sys::process::unix::common::Command::gid]", "ReturnValue", "value", "dfc-generated"] + - ["::get_pgroup", "Argument[self].Field[std::sys::process::unix::common::Command::pgroup]", "ReturnValue", "value", "dfc-generated"] + - ["::get_program_cstr", "Argument[self].Field[std::sys::process::unix::common::Command::program].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_program_kind", "Argument[self].Field[std::sys::process::unix::common::Command::program_kind]", "ReturnValue", "value", "dfc-generated"] + - ["::get_uid", "Argument[self].Field[std::sys::process::unix::common::Command::uid]", "ReturnValue", "value", "dfc-generated"] + - ["::gid", "Argument[0]", "Argument[self].Field[std::sys::process::unix::common::Command::gid].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::pgroup", "Argument[0]", "Argument[self].Field[std::sys::process::unix::common::Command::pgroup].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::saw_nul", "Argument[self].Field[std::sys::process::unix::common::Command::saw_nul]", "ReturnValue", "value", "dfc-generated"] + - ["::stderr", "Argument[0]", "Argument[self].Field[std::sys::process::unix::common::Command::stderr].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::stdin", "Argument[0]", "Argument[self].Field[std::sys::process::unix::common::Command::stdin].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::stdout", "Argument[0]", "Argument[self].Field[std::sys::process::unix::common::Command::stdout].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::uid", "Argument[0]", "Argument[self].Field[std::sys::process::unix::common::Command::uid].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::as_i32", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue.Field[std::sys::process::unix::common::Stdio::Fd(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[std::sys::fs::unix::File(0)]", "ReturnValue.Field[std::sys::process::unix::common::Stdio::Fd(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[std::sys::pal::unix::pipe::AnonPipe(0)]", "ReturnValue.Field[std::sys::process::unix::common::Stdio::Fd(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[std::sys::process::unix::common::Stdio::Fd(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[std::sys::process::unix::unix::ExitStatus(0)]", "value", "dfc-generated"] + - ["::into_raw", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_raw", "Argument[self].Field[std::sys::process::unix::unix::ExitStatus(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::sys::process::unix::unix::ExitStatus(0)]", "value", "dfc-generated"] + - ["::id", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::is_poisoned", "Argument[self].Field[std::sys::sync::once::futex::OnceState::poisoned]", "ReturnValue", "value", "dfc-generated"] + - ["::get_or_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::sys::thread_local::key::racy::LazyKey::dtor]", "value", "dfc-generated"] + - ["::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::sys::thread_local::native::eager::Storage::val].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::does_clear", "Argument[self].Field[std::sys_common::process::CommandEnv::clear]", "ReturnValue", "value", "dfc-generated"] + - ["::iter", "Argument[self].Field[std::sys_common::process::CommandEnv::vars].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[std::sys_common::process::CommandEnvs::iter].Field[alloc::collections::btree::map::Iter::length]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[std::sys_common::process::CommandEnvs::iter].Field[alloc::collections::btree::map::Iter::length]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[std::sys_common::process::CommandEnvs::iter].Field[alloc::collections::btree::map::Iter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[std::sys_common::process::CommandEnvs::iter].Field[alloc::collections::btree::map::Iter::length]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_char", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_u32", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[std::sys_common::wtf8::CodePoint::value]", "value", "dfc-generated"] + - ["::from_u32_unchecked", "Argument[0]", "ReturnValue.Field[std::sys_common::wtf8::CodePoint::value]", "value", "dfc-generated"] + - ["::to_lead_surrogate", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_trail_surrogate", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::to_u32", "Argument[self].Field[std::sys_common::wtf8::CodePoint::value]", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[std::sys_common::wtf8::EncodeWide::extra]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::index", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::sys_common::wtf8::Wtf8::bytes]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_bytes", "Argument[self].Field[std::sys_common::wtf8::Wtf8::bytes]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::ascii_byte_at", "Argument[self].Field[std::sys_common::wtf8::Wtf8::bytes].Element", "ReturnValue", "value", "dfc-generated"] + - ["::code_points", "Argument[self].Field[std::sys_common::wtf8::Wtf8::bytes].Element", "ReturnValue.Field[std::sys_common::wtf8::Wtf8CodePoints::bytes].Element", "value", "dfc-generated"] + - ["::encode_wide", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from_bytes_unchecked", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_bytes_unchecked", "Argument[0]", "ReturnValue.Field[std::sys_common::wtf8::Wtf8Buf::bytes]", "value", "dfc-generated"] + - ["::from_string", "Argument[0].Field[alloc::string::String::vec]", "ReturnValue.Field[std::sys_common::wtf8::Wtf8Buf::bytes]", "value", "dfc-generated"] + - ["::into_bytes", "Argument[self].Field[std::sys_common::wtf8::Wtf8Buf::bytes]", "ReturnValue", "value", "dfc-generated"] + - ["::into_string", "Argument[self].Field[std::sys_common::wtf8::Wtf8Buf::bytes]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::into_string", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::into_string_lossy", "Argument[self].Field[std::sys_common::wtf8::Wtf8Buf::bytes]", "ReturnValue.Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::truncate", "Argument[0]", "Argument[self].Field[std::sys_common::wtf8::Wtf8::bytes].Field[alloc::vec::Vec::len]", "value", "dfc-generated"] + - ["::truncate", "Argument[0]", "Argument[self].Field[std::sys_common::wtf8::Wtf8Buf::bytes].Field[alloc::vec::Vec::len]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::name", "Argument[0]", "Argument[self].Field[std::thread::Builder::name].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::name", "Argument[0]", "ReturnValue.Field[std::thread::Builder::name].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::no_hooks", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::stack_size", "Argument[0]", "Argument[self].Field[std::thread::Builder::stack_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::stack_size", "Argument[0]", "ReturnValue.Field[std::thread::Builder::stack_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::stack_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[0].Field[std::thread::JoinInner::native]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[std::thread::JoinHandle(0)].Field[std::thread::JoinInner::native]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0].Field[std::thread::JoinInner::native]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::thread::JoinHandle(0)].Field[std::thread::JoinInner::native]", "ReturnValue", "value", "dfc-generated"] + - ["::thread", "Argument[self].Field[0].Field[std::thread::JoinInner::thread]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::thread", "Argument[self].Field[std::thread::JoinHandle(0)].Field[std::thread::JoinInner::thread]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_u64", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::as_u64", "Argument[self].Field[std::thread::ThreadId(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[std::thread::local::LocalKey::inner]", "value", "dfc-generated"] + - ["::try_with", "Argument[0].ReturnValue", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::with", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::with_borrow", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::with_borrow_mut", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::thread", "Argument[self].Field[0].Field[std::thread::JoinInner::thread]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::thread", "Argument[self].Field[std::thread::scoped::ScopedJoinHandle(0)].Field[std::thread::JoinInner::thread]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_cstr", "Argument[self].Field[std::thread::thread_name_string::ThreadNameString::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::add_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::sub_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::elapsed", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::sub_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::from_inner", "Argument[0]", "ReturnValue.Field[std::time::SystemTime(0)]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[std::time::SystemTime(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::duration", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::duration", "Argument[self].Field[std::time::SystemTimeError(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::set", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::unset", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::make_assertion_from_constraint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::make_assertion_from_constraint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[stdarch-gen-arm::context::LocalContext::input]", "value", "dfc-generated"] + - ["::new", "Argument[1].Field[stdarch-gen-arm::intrinsic::Intrinsic::signature].Reference", "ReturnValue.Field[stdarch-gen-arm::context::LocalContext::signature]", "value", "dfc-generated"] + - ["::new", "Argument[1].Field[stdarch-gen-arm::intrinsic::Intrinsic::signature]", "ReturnValue.Field[stdarch-gen-arm::context::LocalContext::signature]", "value", "dfc-generated"] + - ["::provide_substitution_wildcard", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::provide_type_wildcard", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[stdarch-gen-arm::expression::Expression::FnCall(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[stdarch-gen-arm::expression::Expression::Identifier(0)]", "value", "dfc-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::n_variant_op", "Argument[self].Field[stdarch-gen-arm::input::InputType::NVariantOp(0)].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::predicate_form", "Argument[self].Field[stdarch-gen-arm::input::InputType::PredicateForm(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::predicate_form_mut", "Argument[self].Field[stdarch-gen-arm::input::InputType::PredicateForm(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::typekind", "Argument[self].Field[stdarch-gen-arm::input::InputType::Type(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::build", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::generate_variant", "Argument[self].Reference.Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::generate_variant", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::apply_conversions_to_call", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[stdarch-gen-arm::expression::Expression::FnCall(0)]", "value", "dfc-generated"] + - ["::make_fn_call", "Argument[self].Field[stdarch-gen-arm::intrinsic::LLVMLink::signature].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::resolve", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::resolve", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::drop_argument", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::get_typeset_index", "Argument[self].Reference.Field[stdarch-gen-arm::intrinsic::Test::Load(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::get_typeset_index", "Argument[self].Reference.Field[stdarch-gen-arm::intrinsic::Test::Store(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::get", "Argument[self].Field[stdarch-gen-arm::matching::MatchKindValues::default]", "ReturnValue.Field[core::result::Result::Ok(0)].Reference", "value", "dfc-generated"] + - ["::get", "Argument[self].Field[stdarch-gen-arm::matching::MatchSizeValues::default]", "ReturnValue.Field[core::result::Result::Ok(0)].Reference", "value", "dfc-generated"] + - ["::has_dont_care", "Argument[self].Field[stdarch-gen-arm::predicate_forms::PredicationMask::x]", "ReturnValue", "value", "dfc-generated"] + - ["::has_merging", "Argument[self].Field[stdarch-gen-arm::predicate_forms::PredicationMask::m]", "ReturnValue", "value", "dfc-generated"] + - ["::has_zeroing", "Argument[self].Field[stdarch-gen-arm::predicate_forms::PredicationMask::z]", "ReturnValue", "value", "dfc-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::repr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::get_size", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::kind", "Argument[self].Field[stdarch-gen-arm::typekinds::BaseType::Sized(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::kind", "Argument[self].Field[stdarch-gen-arm::typekinds::BaseType::Unsized(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::make_vector", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::populate_wildcard", "Argument[0]", "Argument[self].Reference", "value", "dfc-generated"] + - ["::contains", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::repr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::base_type", "Argument[self].Field[stdarch-gen-arm::typekinds::VectorType::base_type]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::base_type_mut", "Argument[self].Field[stdarch-gen-arm::typekinds::VectorType::base_type]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::cast_base_type_as", "Argument[0]", "Argument[self].Field[stdarch-gen-arm::typekinds::VectorType::base_type]", "value", "dfc-generated"] + - ["::lanes", "Argument[self].Field[stdarch-gen-arm::typekinds::VectorType::lanes]", "ReturnValue", "value", "dfc-generated"] + - ["::make_from_base", "Argument[0].Field[stdarch-gen-arm::typekinds::BaseType::Sized(1)]", "ReturnValue.Field[stdarch-gen-arm::typekinds::VectorType::lanes]", "value", "dfc-generated"] + - ["::make_from_base", "Argument[0]", "ReturnValue.Field[stdarch-gen-arm::typekinds::VectorType::base_type]", "value", "dfc-generated"] + - ["::make_from_base", "Argument[1]", "ReturnValue.Field[stdarch-gen-arm::typekinds::VectorType::is_scalable]", "value", "dfc-generated"] + - ["::make_from_base", "Argument[2]", "ReturnValue.Field[stdarch-gen-arm::typekinds::VectorType::tuple_size]", "value", "dfc-generated"] + - ["::make_predicate_from_bitsize", "Argument[0]", "ReturnValue.Field[stdarch-gen-arm::typekinds::VectorType::base_type].Field[stdarch-gen-arm::typekinds::BaseType::Sized(1)]", "value", "dfc-generated"] + - ["::tuple_size", "Argument[self].Field[stdarch-gen-arm::typekinds::VectorType::tuple_size]", "ReturnValue", "value", "dfc-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[stdarch-gen-loongarch::Lines::lines]", "value", "dfc-generated"] + - ["::simplify", "Argument[self].Field[test_helpers::array::ArrayValueTree::shrinker]", "Argument[self].Field[test_helpers::array::ArrayValueTree::last_shrinker].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[test_helpers::array::UniformArrayStrategy::strategy]", "value", "dfc-generated"] + - ["alloc::collections::btree::mem::replace", "Argument[0].Reference", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["alloc::collections::btree::mem::take_mut", "Argument[0].Reference", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["alloc::collections::btree::mem::take_mut", "Argument[1].ReturnValue", "Argument[0].Reference", "value", "dfc-generated"] + - ["alloc::str::convert_while_ascii", "Argument[0].Element", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["as_if_std::the_backtrace_crate::symbolize::gimli::elf::handle_split_dwarf", "Argument[2].Field[addr2line::lookup::SplitDwarfLoad::path].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["backtrace::symbolize::gimli::elf::handle_split_dwarf", "Argument[2].Field[addr2line::lookup::SplitDwarfLoad::path].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["core::array::drain::drain_array_with", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["core::char::convert::from_digit", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::char::from_digit", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::cmp::max", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::cmp::max", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["core::cmp::max_by", "Argument[0]", "Argument[2].Parameter[1].Reference", "value", "dfc-generated"] + - ["core::cmp::max_by", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::cmp::max_by", "Argument[1]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] + - ["core::cmp::max_by", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["core::cmp::max_by_key", "Argument[0]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] + - ["core::cmp::max_by_key", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::cmp::max_by_key", "Argument[1]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] + - ["core::cmp::max_by_key", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["core::cmp::min", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::cmp::min", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["core::cmp::min_by", "Argument[0]", "Argument[2].Parameter[1].Reference", "value", "dfc-generated"] + - ["core::cmp::min_by", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::cmp::min_by", "Argument[1]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] + - ["core::cmp::min_by", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["core::cmp::min_by_key", "Argument[0]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] + - ["core::cmp::min_by_key", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::cmp::min_by_key", "Argument[1]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] + - ["core::cmp::min_by_key", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["core::cmp::minmax", "Argument[0]", "ReturnValue.Element", "value", "dfc-generated"] + - ["core::cmp::minmax", "Argument[1]", "ReturnValue.Element", "value", "dfc-generated"] + - ["core::cmp::minmax_by", "Argument[0]", "Argument[2].Parameter[1].Reference", "value", "dfc-generated"] + - ["core::cmp::minmax_by", "Argument[0]", "ReturnValue.Element", "value", "dfc-generated"] + - ["core::cmp::minmax_by", "Argument[1]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] + - ["core::cmp::minmax_by", "Argument[1]", "ReturnValue.Element", "value", "dfc-generated"] + - ["core::cmp::minmax_by_key", "Argument[0]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] + - ["core::cmp::minmax_by_key", "Argument[0]", "ReturnValue.Element", "value", "dfc-generated"] + - ["core::cmp::minmax_by_key", "Argument[1]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] + - ["core::cmp::minmax_by_key", "Argument[1]", "ReturnValue.Element", "value", "dfc-generated"] + - ["core::contracts::build_check_ensures", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::convert::identity", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512bf16::_mm_mask_cvtneps_pbh", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512bw::_cvtmask32_u32", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512bw::_cvtu32_mask32", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512bw::_kadd_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kadd_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kadd_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kadd_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kand_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kand_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kand_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kand_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kandn_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kandn_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kandn_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kandn_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_knot_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_knot_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kor_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kor_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kor_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kor_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kshiftli_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kshiftli_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kshiftri_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kshiftri_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kxnor_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kxnor_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kxnor_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kxnor_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kxor_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kxor_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kxor_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_kxor_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_load_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_load_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm256_loadu_epi16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm256_loadu_epi8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm256_storeu_epi16", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm256_storeu_epi8", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm512_kunpackd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm512_kunpackd", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm512_kunpackw", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm512_kunpackw", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm512_loadu_epi16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm512_loadu_epi8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm512_storeu_epi16", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm512_storeu_epi8", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm_loadu_epi16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm_loadu_epi8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm_storeu_epi16", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm_storeu_epi8", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_store_mask32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512bw::_store_mask64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_cvtmask8_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_cvtu32_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kadd_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kadd_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kadd_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kadd_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kand_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kand_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kandn_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kandn_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_knot_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kor_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kor_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kshiftli_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kshiftri_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kxnor_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kxnor_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kxor_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_kxor_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512dq::_load_mask8", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512dq::_store_mask8", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512f::_cvtmask16_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_cvtu32_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_kand_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_kand_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_kandn_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_kandn_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_knot_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_kor_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_kor_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_kshiftli_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_kshiftri_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_kxnor_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_kxnor_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_kxor_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_kxor_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_load_mask16", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512f::_mm256_load_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_load_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_loadu_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_loadu_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_store_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_store_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_storeu_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_storeu_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_int2mask", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_kand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_kand", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_kandn", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_kandn", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_kmov", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512f::_mm512_knot", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_kor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_kor", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_kunpackb", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_kunpackb", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_kxnor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_kxnor", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_kxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_kxor", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_load_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_load_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_load_pd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_load_ps", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_load_si512", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_loadu_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_loadu_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_loadu_pd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_loadu_ps", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_loadu_si512", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_mask2int", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_store_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_store_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_store_pd", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_store_ps", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_store_si512", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512f::_mm512_storeu_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_storeu_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_storeu_pd", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_storeu_ps", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_storeu_si512", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512f::_mm_load_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_load_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_loadu_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_loadu_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_mask_load_sd", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512f::_mm_mask_load_ss", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512f::_mm_store_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_store_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_storeu_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_storeu_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx512f::_store_mask16", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[10]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[11]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[12]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[13]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[14]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[15]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[8]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[9]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[10]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[11]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[12]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[13]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[14]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[15]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[8]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[9]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[10]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[11]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[12]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[13]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[14]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[15]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[16]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[17]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[18]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[19]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[20]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[21]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[22]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[23]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[24]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[25]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[26]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[27]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[28]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[29]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[30]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[31]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[8]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[9]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[10]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[11]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[12]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[13]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[14]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[15]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[16]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[17]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[18]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[19]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[20]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[21]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[22]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[23]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[24]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[25]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[26]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[27]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[28]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[29]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[30]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[31]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[8]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[9]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_load_sh", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_mask_load_sh", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_set_sh", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_broadcast_sd", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_broadcast_ss", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_load_pd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx::_mm256_load_ps", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::avx::_mm256_load_si256", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set1_pd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set1_ps", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set_pd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set_pd", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set_pd", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set_pd", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set_ps", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set_ps", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set_ps", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set_ps", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set_ps", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set_ps", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set_ps", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_set_ps", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_setr_pd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_setr_pd", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_setr_pd", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_setr_pd", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_setr_ps", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_setr_ps", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_setr_ps", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_setr_ps", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_setr_ps", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_setr_ps", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_setr_ps", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_setr_ps", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm256_store_pd", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx::_mm256_store_ps", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::avx::_mm256_store_si256", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["core::core_arch::x86::avx::_mm_broadcast_ss", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::bmi1::_andn_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::bmi1::_andn_u32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::bmi1::_blsi_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::bmi1::_blsmsk_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::bmi1::_blsr_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::bmi2::_mulx_u32", "Argument[0]", "Argument[2]", "taint", "df-generated"] + - ["core::core_arch::x86::bmi2::_mulx_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::bmi2::_mulx_u32", "Argument[1]", "Argument[2]", "taint", "df-generated"] + - ["core::core_arch::x86::bmi2::_mulx_u32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::rtm::_xabort_code", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::sse2::_mm_load1_pd", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse2::_mm_load_pd1", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse2::_mm_load_pd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::sse2::_mm_load_sd", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse2::_mm_load_si128", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86::sse2::_mm_loadh_pd", "Argument[1].Reference", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse2::_mm_loadl_pd", "Argument[1].Reference", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse2::_mm_set1_pd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse2::_mm_set_pd1", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse2::_mm_set_pd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse2::_mm_set_pd", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse2::_mm_set_sd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse2::_mm_setr_pd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse2::_mm_setr_pd", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse2::_mm_store_pd", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::sse2::_mm_store_si128", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["core::core_arch::x86::sse3::_mm_loaddup_pd", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_MM_SHUFFLE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::sse::_MM_SHUFFLE", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::sse::_MM_SHUFFLE", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::sse::_MM_SHUFFLE", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::sse::_mm_load1_ps", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_load_ps1", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_load_ps", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::sse::_mm_load_ss", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_set1_ps", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_set_ps1", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_set_ps", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_set_ps", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_set_ps", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_set_ps", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_set_ss", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_setr_ps", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_setr_ps", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_setr_ps", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_setr_ps", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core::core_arch::x86::sse::_mm_store_ps", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core::core_arch::x86::tbm::_blcfill_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::tbm::_blci_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::tbm::_blcic_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::tbm::_blcmsk_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::tbm::_blcs_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::tbm::_blsfill_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::tbm::_blsic_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::tbm::_t1mskc_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86::tbm::_tzmsk_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::avx512bw::_cvtmask64_u64", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86_64::avx512bw::_cvtu64_mask64", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::core_arch::x86_64::bmi2::_mulx_u64", "Argument[0]", "Argument[2]", "taint", "df-generated"] + - ["core::core_arch::x86_64::bmi2::_mulx_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::bmi2::_mulx_u64", "Argument[1]", "Argument[2]", "taint", "df-generated"] + - ["core::core_arch::x86_64::bmi2::_mulx_u64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::bmi::_andn_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::bmi::_andn_u64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::bmi::_blsi_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::bmi::_blsmsk_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::bmi::_blsr_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::tbm::_blcfill_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::tbm::_blci_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::tbm::_blcic_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::tbm::_blcmsk_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::tbm::_blcs_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::tbm::_blsfill_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::tbm::_blsic_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::tbm::_t1mskc_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::core_arch::x86_64::tbm::_tzmsk_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::fmt::builders::debug_list_new", "Argument[0]", "ReturnValue.Field[core::fmt::builders::DebugList::inner].Field[core::fmt::builders::DebugInner::fmt]", "value", "dfc-generated"] + - ["core::fmt::builders::debug_map_new", "Argument[0]", "ReturnValue.Field[core::fmt::builders::DebugMap::fmt]", "value", "dfc-generated"] + - ["core::fmt::builders::debug_set_new", "Argument[0]", "ReturnValue.Field[core::fmt::builders::DebugSet::inner].Field[core::fmt::builders::DebugInner::fmt]", "value", "dfc-generated"] + - ["core::fmt::builders::debug_struct_new", "Argument[0]", "ReturnValue.Field[core::fmt::builders::DebugStruct::fmt]", "value", "dfc-generated"] + - ["core::fmt::builders::debug_tuple_new", "Argument[0]", "ReturnValue.Field[core::fmt::builders::DebugTuple::fmt]", "value", "dfc-generated"] + - ["core::fmt::builders::from_fn", "Argument[0]", "ReturnValue.Field[core::fmt::builders::FromFn(0)]", "value", "dfc-generated"] + - ["core::future::poll_fn::poll_fn", "Argument[0]", "ReturnValue.Field[core::future::poll_fn::PollFn::f]", "value", "dfc-generated"] + - ["core::future::ready::ready", "Argument[0]", "ReturnValue.Field[core::future::ready::Ready(0)].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["core::hint::must_use", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::intrinsics::contract_check_ensures", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["core::intrinsics::select_unpredictable", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["core::intrinsics::select_unpredictable", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["core::iter::adapters::try_process", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["core::iter::sources::from_coroutine::from_coroutine", "Argument[0]", "ReturnValue.Field[core::iter::sources::from_coroutine::FromCoroutine(0)]", "value", "dfc-generated"] + - ["core::iter::sources::from_fn::from_fn", "Argument[0]", "ReturnValue.Field[core::iter::sources::from_fn::FromFn(0)]", "value", "dfc-generated"] + - ["core::iter::sources::once_with::once_with", "Argument[0]", "ReturnValue.Field[core::iter::sources::once_with::OnceWith::make].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["core::iter::sources::repeat::repeat", "Argument[0]", "ReturnValue.Field[core::iter::sources::repeat::Repeat::element]", "value", "dfc-generated"] + - ["core::iter::sources::repeat_n::repeat_n", "Argument[1]", "ReturnValue.Field[core::iter::sources::repeat_n::RepeatN::count]", "value", "dfc-generated"] + - ["core::iter::sources::repeat_with::repeat_with", "Argument[0]", "ReturnValue.Field[core::iter::sources::repeat_with::RepeatWith::repeater]", "value", "dfc-generated"] + - ["core::iter::sources::successors::successors", "Argument[0]", "ReturnValue.Field[core::iter::sources::successors::Successors::next]", "value", "dfc-generated"] + - ["core::iter::sources::successors::successors", "Argument[1]", "ReturnValue.Field[core::iter::sources::successors::Successors::succ]", "value", "dfc-generated"] + - ["core::mem::copy", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["core::mem::transmute_copy", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::flt2dec::estimator::estimate_scaling_factor", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core::num::flt2dec::strategy::dragon::format_exact", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::flt2dec::strategy::dragon::format_shortest", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::flt2dec::strategy::dragon::mul_pow10", "Argument[0].Field[core::num::bignum::Big32x40::base].Element", "ReturnValue.Field[core::num::bignum::Big32x40::base].Element", "value", "dfc-generated"] + - ["core::num::flt2dec::strategy::dragon::mul_pow10", "Argument[0].Field[core::num::bignum::Big32x40::size]", "ReturnValue.Field[core::num::bignum::Big32x40::size]", "value", "dfc-generated"] + - ["core::num::flt2dec::strategy::dragon::mul_pow10", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::num::flt2dec::strategy::grisu::format_exact", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::flt2dec::strategy::grisu::format_shortest", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::flt2dec::to_exact_exp_str", "Argument[5].Element", "Argument[0].Parameter[1].Reference", "value", "dfc-generated"] + - ["core::num::flt2dec::to_exact_fixed_str", "Argument[4].Element", "Argument[0].Parameter[1].Reference", "value", "dfc-generated"] + - ["core::num::flt2dec::to_shortest_exp_str", "Argument[5]", "Argument[0].Parameter[1]", "value", "dfc-generated"] + - ["core::num::flt2dec::to_shortest_str", "Argument[4]", "Argument[0].Parameter[1]", "value", "dfc-generated"] + - ["core::num::int_log10::i128", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::int_log10::i16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::int_log10::i32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::int_log10::i64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::int_log10::i8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::int_log10::u128", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::int_log10::u16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::int_log10::u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::int_log10::u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::int_log10::u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::num::int_log10::usize", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::panic::abort_unwind", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["core::ptr::from_mut", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::ptr::from_ref", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core::ptr::with_exposed_provenance", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::ptr::with_exposed_provenance_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::slice::index::range", "Argument[1].Field[core::ops::range::RangeTo::end]", "ReturnValue.Field[core::ops::range::Range::end]", "value", "dfc-generated"] + - ["core::slice::index::try_range", "Argument[1].Field[core::ops::range::RangeTo::end]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::ops::range::Range::end]", "value", "dfc-generated"] + - ["core::slice::sort::shared::find_existing_run", "Argument[1].ReturnValue", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["core::slice::sort::shared::pivot::choose_pivot", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["core::slice::sort::shared::smallsort::sort4_stable", "Argument[0].Reference", "Argument[2].Parameter[1].Reference", "value", "dfc-generated"] + - ["core::slice::sort::stable::drift::sort", "Argument[0].Element", "Argument[3].Parameter[1].Reference", "value", "dfc-generated"] + - ["core::slice::sort::stable::merge::merge", "Argument[1]", "Argument[3]", "taint", "df-generated"] + - ["core::slice::sort::stable::quicksort::quicksort", "Argument[0].Element", "Argument[4].Parameter[1].Reference", "value", "dfc-generated"] + - ["core::slice::sort::stable::sort", "Argument[0].Element", "Argument[1].Parameter[1].Reference", "value", "dfc-generated"] + - ["core::slice::sort::unstable::quicksort::quicksort", "Argument[0]", "Argument[3]", "taint", "df-generated"] + - ["core::slice::sort::unstable::sort", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["core::str::converts::from_utf8_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::str::converts::from_utf8_unchecked_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core::str::validations::next_code_point", "Argument[0].Element", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512bf16::_mm_mask_cvtneps_pbh", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512bw::_cvtmask32_u32", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512bw::_cvtu32_mask32", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kadd_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kadd_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kadd_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kadd_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kand_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kand_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kand_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kand_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kandn_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kandn_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kandn_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kandn_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_knot_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_knot_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kor_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kor_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kor_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kor_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kshiftli_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kshiftli_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kshiftri_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kshiftri_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kxnor_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kxnor_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kxnor_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kxnor_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kxor_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kxor_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kxor_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_kxor_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_load_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_load_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm256_loadu_epi16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm256_loadu_epi8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm256_storeu_epi16", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm256_storeu_epi8", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm512_kunpackd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm512_kunpackd", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm512_kunpackw", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm512_kunpackw", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm512_loadu_epi16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm512_loadu_epi8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm512_storeu_epi16", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm512_storeu_epi8", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm_loadu_epi16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm_loadu_epi8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm_storeu_epi16", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm_storeu_epi8", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_store_mask32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_store_mask64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_cvtmask8_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_cvtu32_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kadd_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kadd_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kadd_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kadd_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kand_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kand_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kandn_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kandn_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_knot_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kor_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kor_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kshiftli_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kshiftri_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kxnor_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kxnor_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kxor_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_kxor_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512dq::_load_mask8", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512dq::_store_mask8", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512f::_cvtmask16_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_cvtu32_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_kand_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_kand_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_kandn_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_kandn_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_knot_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_kor_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_kor_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_kshiftli_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_kshiftri_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_kxnor_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_kxnor_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_kxor_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_kxor_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_load_mask16", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_load_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_load_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_loadu_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_loadu_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_store_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_store_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_storeu_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_storeu_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_int2mask", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_kand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_kand", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_kandn", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_kandn", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_kmov", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_knot", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_kor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_kor", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_kunpackb", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_kunpackb", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_kxnor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_kxnor", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_kxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_kxor", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_load_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_load_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_load_pd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_load_ps", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_load_si512", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_loadu_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_loadu_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_loadu_pd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_loadu_ps", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_loadu_si512", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_mask2int", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_store_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_store_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_store_pd", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_store_ps", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_store_si512", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_storeu_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_storeu_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_storeu_pd", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_storeu_ps", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_storeu_si512", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_load_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_load_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_loadu_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_loadu_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_mask_load_sd", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_mask_load_ss", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_store_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_store_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_storeu_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_storeu_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_store_mask16", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[10]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[11]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[12]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[13]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[14]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[15]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[8]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[9]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[10]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[11]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[12]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[13]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[14]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[15]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[8]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[9]", "ReturnValue.Field[core::core_arch::x86::__m256h(0)].Field[core_arch::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[10]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[11]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[12]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[13]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[14]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[15]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[16]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[17]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[18]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[19]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[20]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[21]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[22]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[23]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[24]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[25]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[26]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[27]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[28]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[29]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[30]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[31]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[8]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[9]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[10]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[11]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[12]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[13]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[14]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[15]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[16]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[17]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[18]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[19]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[20]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[21]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[22]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[23]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[24]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[25]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[26]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[27]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[28]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[29]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[30]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[31]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[8]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[9]", "ReturnValue.Field[core::core_arch::x86::__m512h(0)].Field[core_arch::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_load_sh", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_mask_load_sh", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_set_sh", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m128h(0)].Field[core_arch::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_broadcast_sd", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_broadcast_ss", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_load_pd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_load_ps", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_load_si256", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set1_pd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set1_ps", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set_pd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set_pd", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set_pd", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set_pd", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set_ps", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set_ps", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set_ps", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set_ps", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set_ps", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set_ps", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set_ps", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_set_ps", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_setr_pd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_setr_pd", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_setr_pd", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_setr_pd", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m256d(0)].Field[core_arch::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_setr_ps", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_setr_ps", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_setr_ps", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_setr_ps", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_setr_ps", "Argument[4]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_setr_ps", "Argument[5]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_setr_ps", "Argument[6]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_setr_ps", "Argument[7]", "ReturnValue.Field[core::core_arch::x86::__m256(0)].Field[core_arch::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_store_pd", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_store_ps", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::avx::_mm256_store_si256", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::avx::_mm_broadcast_ss", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::bmi1::_andn_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::bmi1::_andn_u32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::bmi1::_blsi_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::bmi1::_blsmsk_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::bmi1::_blsr_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::bmi2::_mulx_u32", "Argument[0]", "Argument[2]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::bmi2::_mulx_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::bmi2::_mulx_u32", "Argument[1]", "Argument[2]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::bmi2::_mulx_u32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::rtm::_xabort_code", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_load1_pd", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_load_pd1", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_load_pd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_load_sd", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_load_si128", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_loadh_pd", "Argument[1].Reference", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_loadl_pd", "Argument[1].Reference", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_set1_pd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_set_pd1", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_set_pd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_set_pd", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_set_sd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_setr_pd", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_setr_pd", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_store_pd", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_store_si128", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse3::_mm_loaddup_pd", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128d(0)].Field[core_arch::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_MM_SHUFFLE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::sse::_MM_SHUFFLE", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::sse::_MM_SHUFFLE", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::sse::_MM_SHUFFLE", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::sse::_mm_load1_ps", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_load_ps1", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_load_ps", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::sse::_mm_load_ss", "Argument[0].Reference", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_set1_ps", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_set_ps1", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_set_ps", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_set_ps", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_set_ps", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_set_ps", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_set_ss", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_setr_ps", "Argument[0]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_setr_ps", "Argument[1]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_setr_ps", "Argument[2]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_setr_ps", "Argument[3]", "ReturnValue.Field[core::core_arch::x86::__m128(0)].Field[core_arch::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["core_arch::core_arch::x86::sse::_mm_store_ps", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["core_arch::core_arch::x86::tbm::_blcfill_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::tbm::_blci_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::tbm::_blcic_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::tbm::_blcmsk_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::tbm::_blcs_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::tbm::_blsfill_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::tbm::_blsic_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::tbm::_t1mskc_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86::tbm::_tzmsk_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::avx512bw::_cvtmask64_u64", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86_64::avx512bw::_cvtu64_mask64", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["core_arch::core_arch::x86_64::bmi2::_mulx_u64", "Argument[0]", "Argument[2]", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::bmi2::_mulx_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::bmi2::_mulx_u64", "Argument[1]", "Argument[2]", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::bmi2::_mulx_u64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::bmi::_andn_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::bmi::_andn_u64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::bmi::_blsi_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::bmi::_blsmsk_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::bmi::_blsr_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::tbm::_blcfill_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::tbm::_blci_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::tbm::_blcic_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::tbm::_blcmsk_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::tbm::_blcs_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::tbm::_blsfill_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::tbm::_blsic_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::tbm::_t1mskc_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["core_arch::core_arch::x86_64::tbm::_tzmsk_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["dylib_dep::foo", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["matrix_inversion::simd_inv4x4", "Argument[0].Field[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[matrix_inversion::Matrix4x4(0)]", "value", "dfc-generated"] + - ["matrix_inversion::simd_inv4x4", "Argument[0].Field[matrix_inversion::Matrix4x4(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Field[matrix_inversion::Matrix4x4(0)]", "value", "dfc-generated"] + - ["proc_macro::bridge::client::state::set", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["proc_macro::bridge::client::state::set", "Argument[1]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["proc_macro::bridge::client::state::with", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["std::backtrace::helper::lazy_resolve", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["std::backtrace_rs::symbolize::gimli::elf::handle_split_dwarf", "Argument[2].Field[addr2line::lookup::SplitDwarfLoad::path].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["std::io::append_to_string", "Argument[0].Field[alloc::string::String::vec]", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["std::io::append_to_string", "Argument[1].Field[alloc::collections::vec_deque::VecDeque::len]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["std::io::append_to_string", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["std::io::default_read_buf", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["std::io::default_read_exact", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["std::io::default_read_to_end", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["std::io::default_read_to_string", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["std::io::default_read_vectored", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["std::io::default_write_vectored", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["std::io::read_to_string", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["std::io::util::repeat", "Argument[0]", "ReturnValue.Field[std::io::util::Repeat::byte]", "value", "dfc-generated"] + - ["std::sync::poison::map_result", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["std::sync::poison::map_result", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["std::sync::poison::map_result", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["std::sync::poison::mutex::guard_lock", "Argument[0].Field[std::sync::poison::mutex::MutexGuard::lock].Field[std::sync::poison::mutex::Mutex::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["std::sync::poison::mutex::guard_poison", "Argument[0].Field[std::sync::poison::mutex::MutexGuard::lock].Field[std::sync::poison::mutex::Mutex::poison]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["std::sys::backtrace::__rust_begin_short_backtrace", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["std::sys::backtrace::__rust_end_short_backtrace", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["std::sys::pal::common::small_c_string::run_path_with_cstr", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["std::sys::pal::common::small_c_string::run_with_cstr", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["std::sys::pal::unix::cvt", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["std::sys::pal::unix::pipe::read2", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["std::sys::pal::unix::pipe::read2", "Argument[2]", "Argument[3]", "taint", "df-generated"] + - ["std::sys_common::ignore_notfound", "Argument[0].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["std::sys_common::mul_div_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["std::sys_common::mul_div_u64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["std::sys_common::mul_div_u64", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["std::thread::current::set_current", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["std::thread::current::try_with_current", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["std::thread::with_current_name", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["stdarch-gen-arm::big_endian::create_let_variable", "Argument[1].Reference", "ReturnValue.Field[stdarch-gen-arm::expression::Expression::Let(0)].Field[stdarch-gen-arm::expression::LetVariant::WithType(1)]", "value", "dfc-generated"] + - ["stdarch-gen-arm::big_endian::create_mut_let_variable", "Argument[1].Reference", "ReturnValue.Field[stdarch-gen-arm::expression::Expression::Let(0)].Field[stdarch-gen-arm::expression::LetVariant::MutWithType(1)]", "value", "dfc-generated"] + - ["stdarch-gen-arm::fn_suffix::make_neon_suffix", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["test_helpers::subnormals::flush", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["test_helpers::subnormals::flush_in", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::allocate", "Argument[0]", "alloc-layout", "df-generated"] + - ["::allocate_zeroed", "Argument[0]", "alloc-layout", "df-generated"] + - ["::grow", "Argument[2]", "alloc-layout", "df-generated"] + - ["::grow", "Argument[2]", "alloc-size", "df-generated"] + - ["::grow_zeroed", "Argument[2]", "alloc-layout", "df-generated"] + - ["::grow_zeroed", "Argument[2]", "alloc-size", "df-generated"] + - ["::shrink", "Argument[2]", "alloc-layout", "df-generated"] + - ["::shrink", "Argument[2]", "alloc-size", "df-generated"] + - ["::new_uninit_slice_in", "Argument[0]", "alloc-layout", "df-generated"] + - ["::new_zeroed_slice", "Argument[0]", "alloc-layout", "df-generated"] + - ["::new_zeroed_slice_in", "Argument[0]", "alloc-layout", "df-generated"] + - ["::try_new_uninit_slice", "Argument[0]", "alloc-layout", "df-generated"] + - ["::try_new_uninit_slice_in", "Argument[0]", "alloc-layout", "df-generated"] + - ["::try_new_zeroed_slice", "Argument[0]", "alloc-layout", "df-generated"] + - ["::try_new_zeroed_slice_in", "Argument[0]", "alloc-layout", "df-generated"] + - ["::with_capacity_in", "Argument[0]", "alloc-layout", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::drop", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::drop", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::last", "Argument[self]", "pointer-access", "df-generated"] + - ["::max", "Argument[self]", "pointer-access", "df-generated"] + - ["::min", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::last", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::last", "Argument[self]", "pointer-access", "df-generated"] + - ["::max", "Argument[self]", "pointer-access", "df-generated"] + - ["::min", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::last", "Argument[self]", "pointer-access", "df-generated"] + - ["::max", "Argument[self]", "pointer-access", "df-generated"] + - ["::min", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::last", "Argument[self]", "pointer-access", "df-generated"] + - ["::max", "Argument[self]", "pointer-access", "df-generated"] + - ["::min", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::last", "Argument[self]", "pointer-access", "df-generated"] + - ["::max", "Argument[self]", "pointer-access", "df-generated"] + - ["::min", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::last", "Argument[self]", "pointer-access", "df-generated"] + - ["::max", "Argument[self]", "pointer-access", "df-generated"] + - ["::min", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::last", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::last", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::deallocating_next_back_unchecked", "Argument[self]", "pointer-access", "df-generated"] + - ["::deallocating_next_unchecked", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back_unchecked", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_unchecked", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back_checked", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_checked", "Argument[self]", "pointer-access", "df-generated"] + - ["::consider_for_balancing", "Argument[self]", "pointer-access", "df-generated"] + - ["::choose_parent_kv", "Argument[self]", "pointer-access", "df-generated"] + - ["::fix_node_and_affected_ancestors", "Argument[self]", "pointer-access", "df-generated"] + - ["::full_range", "Argument[self]", "pointer-access", "df-generated"] + - ["::push_internal_level", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::last", "Argument[self]", "pointer-access", "df-generated"] + - ["::max", "Argument[self]", "pointer-access", "df-generated"] + - ["::min", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::last", "Argument[self]", "pointer-access", "df-generated"] + - ["::max", "Argument[self]", "pointer-access", "df-generated"] + - ["::min", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::spec_extend", "Argument[self]", "log-injection", "df-generated"] + - ["::clone_from", "Argument[self]", "log-injection", "df-generated"] + - ["::extend", "Argument[self]", "log-injection", "df-generated"] + - ["::extend_one", "Argument[self]", "log-injection", "df-generated"] + - ["::extend_reserve", "Argument[self]", "log-injection", "df-generated"] + - ["::write", "Argument[self]", "log-injection", "df-generated"] + - ["::write_all", "Argument[self]", "log-injection", "df-generated"] + - ["::write_all_vectored", "Argument[self]", "log-injection", "df-generated"] + - ["::write_vectored", "Argument[self]", "log-injection", "df-generated"] + - ["::append", "Argument[self]", "log-injection", "df-generated"] + - ["::insert", "Argument[0]", "log-injection", "df-generated"] + - ["::insert", "Argument[self]", "log-injection", "df-generated"] + - ["::make_contiguous", "Argument[self]", "log-injection", "df-generated"] + - ["::push_back", "Argument[self]", "log-injection", "df-generated"] + - ["::push_front", "Argument[self]", "log-injection", "df-generated"] + - ["::remove", "Argument[0]", "log-injection", "df-generated"] + - ["::remove", "Argument[self]", "log-injection", "df-generated"] + - ["::reserve", "Argument[self]", "log-injection", "df-generated"] + - ["::reserve_exact", "Argument[self]", "log-injection", "df-generated"] + - ["::resize", "Argument[self]", "log-injection", "df-generated"] + - ["::resize_with", "Argument[self]", "log-injection", "df-generated"] + - ["::rotate_left", "Argument[0]", "log-injection", "df-generated"] + - ["::rotate_left", "Argument[self]", "log-injection", "df-generated"] + - ["::rotate_right", "Argument[0]", "log-injection", "df-generated"] + - ["::rotate_right", "Argument[self]", "log-injection", "df-generated"] + - ["::shrink_to", "Argument[0]", "log-injection", "df-generated"] + - ["::shrink_to", "Argument[self]", "log-injection", "df-generated"] + - ["::shrink_to_fit", "Argument[self]", "log-injection", "df-generated"] + - ["::split_off", "Argument[0]", "alloc-layout", "df-generated"] + - ["::split_off", "Argument[self]", "alloc-layout", "df-generated"] + - ["::try_reserve", "Argument[self]", "log-injection", "df-generated"] + - ["::try_reserve_exact", "Argument[self]", "log-injection", "df-generated"] + - ["::try_with_capacity", "Argument[0]", "alloc-layout", "df-generated"] + - ["::with_capacity_in", "Argument[0]", "alloc-layout", "df-generated"] + - ["::try_with_capacity_in", "Argument[0]", "alloc-layout", "df-generated"] + - ["::with_capacity_in", "Argument[0]", "alloc-layout", "df-generated"] + - ["::with_capacity_zeroed", "Argument[0]", "alloc-layout", "df-generated"] + - ["::with_capacity_zeroed_in", "Argument[0]", "alloc-layout", "df-generated"] + - ["::into_inner", "Argument[0]", "pointer-access", "df-generated"] + - ["::make_mut", "Argument[0]", "pointer-access", "df-generated"] + - ["::try_unwrap", "Argument[0]", "pointer-access", "df-generated"] + - ["::unwrap_or_clone", "Argument[0]", "pointer-access", "df-generated"] + - ["::split_off", "Argument[0]", "alloc-layout", "df-generated"] + - ["::split_off", "Argument[0]", "log-injection", "df-generated"] + - ["::split_off", "Argument[self]", "alloc-layout", "df-generated"] + - ["::split_off", "Argument[self]", "log-injection", "df-generated"] + - ["::make_mut", "Argument[0]", "pointer-access", "df-generated"] + - ["::from", "Argument[0]", "log-injection", "df-generated"] + - ["::insert", "Argument[0]", "log-injection", "df-generated"] + - ["::insert", "Argument[self]", "log-injection", "df-generated"] + - ["::remove", "Argument[0]", "log-injection", "df-generated"] + - ["::remove", "Argument[self]", "log-injection", "df-generated"] + - ["::split_off", "Argument[0]", "alloc-layout", "df-generated"] + - ["::split_off", "Argument[0]", "log-injection", "df-generated"] + - ["::split_off", "Argument[self]", "alloc-layout", "df-generated"] + - ["::split_off", "Argument[self]", "log-injection", "df-generated"] + - ["::swap_remove", "Argument[0]", "log-injection", "df-generated"] + - ["::swap_remove", "Argument[self]", "log-injection", "df-generated"] + - ["::try_with_capacity_in", "Argument[0]", "alloc-layout", "df-generated"] + - ["::with_capacity_in", "Argument[0]", "alloc-layout", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::new", "Argument[0]", "path-injection", "df-generated"] + - ["::new", "Argument[0]", "path-injection", "df-generated"] + - ["::force_mut", "Argument[0]", "pointer-access", "df-generated"] + - ["::index", "Argument[0]", "log-injection", "df-generated"] + - ["::digit", "Argument[0]", "log-injection", "df-generated"] + - ["::digit", "Argument[0]", "log-injection", "df-generated"] + - ["::digit", "Argument[0]", "log-injection", "df-generated"] + - ["::digit", "Argument[0]", "log-injection", "df-generated"] + - ["::take", "Argument[0]", "pointer-access", "df-generated"] + - ["::expect", "Argument[0]", "log-injection", "df-generated"] + - ["::map", "Argument[self]", "pointer-access", "df-generated"] + - ["::expect", "Argument[0]", "log-injection", "df-generated"] + - ["::expect_err", "Argument[0]", "log-injection", "df-generated"] + - ["::unwrap_or_else", "Argument[0]", "log-injection", "df-generated"] + - ["::from_c", "Argument[1]", "log-injection", "df-generated"] + - ["::generate_loop_c", "Argument[self]", "log-injection", "df-generated"] + - ["::print_result_c", "Argument[self]", "log-injection", "df-generated"] + - ["::c_scalar_type", "Argument[self]", "log-injection", "df-generated"] + - ["::c_type", "Argument[self]", "log-injection", "df-generated"] + - ["::get_lane_function", "Argument[self]", "log-injection", "df-generated"] + - ["::get_load_function", "Argument[self]", "log-injection", "df-generated"] + - ["::populate_random", "Argument[self]", "log-injection", "df-generated"] + - ["::rust_scalar_type", "Argument[self]", "log-injection", "df-generated"] + - ["::rust_type", "Argument[self]", "log-injection", "df-generated"] + - ["::c_prefix", "Argument[self]", "log-injection", "df-generated"] + - ["::rust_prefix", "Argument[self]", "log-injection", "df-generated"] + - ["::new", "Argument[0]", "log-injection", "df-generated"] + - ["::new_raw", "Argument[0]", "log-injection", "df-generated"] + - ["::f32_suffixed", "Argument[0]", "log-injection", "df-generated"] + - ["::f32_unsuffixed", "Argument[0]", "log-injection", "df-generated"] + - ["::f64_suffixed", "Argument[0]", "log-injection", "df-generated"] + - ["::f64_unsuffixed", "Argument[0]", "log-injection", "df-generated"] + - ["::new", "Argument[0]", "log-injection", "df-generated"] + - ["::new_ident", "Argument[0]", "log-injection", "df-generated"] + - ["::allocate", "Argument[0]", "alloc-layout", "df-generated"] + - ["::allocate_zeroed", "Argument[0]", "alloc-layout", "df-generated"] + - ["::grow", "Argument[2]", "alloc-layout", "df-generated"] + - ["::grow_zeroed", "Argument[2]", "alloc-layout", "df-generated"] + - ["::shrink", "Argument[2]", "alloc-layout", "df-generated"] + - ["::alloc", "Argument[0]", "alloc-size", "df-generated"] + - ["::alloc_zeroed", "Argument[0]", "alloc-layout", "df-generated"] + - ["::alloc_zeroed", "Argument[0]", "alloc-size", "df-generated"] + - ["::realloc", "Argument[2]", "alloc-layout", "df-generated"] + - ["::realloc", "Argument[2]", "alloc-size", "df-generated"] + - ["::new", "Argument[0]", "path-injection", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::truncate", "Argument[0]", "log-injection", "df-generated"] + - ["::create_buffered", "Argument[0]", "path-injection", "df-generated"] + - ["::open_buffered", "Argument[0]", "path-injection", "df-generated"] + - ["::try_with_capacity", "Argument[0]", "alloc-layout", "df-generated"] + - ["::from", "Argument[0]", "log-injection", "df-generated"] + - ["::from_raw_os_error", "Argument[0]", "log-injection", "df-generated"] + - ["::new", "Argument[0]", "log-injection", "df-generated"] + - ["::new_os", "Argument[0]", "log-injection", "df-generated"] + - ["::new_simple", "Argument[0]", "log-injection", "df-generated"] + - ["::write", "Argument[0]", "log-injection", "df-generated"] + - ["::write_all", "Argument[0]", "log-injection", "df-generated"] + - ["::write", "Argument[0]", "log-injection", "df-generated"] + - ["::write_all", "Argument[0]", "log-injection", "df-generated"] + - ["::exists", "Argument[self]", "path-injection", "df-generated"] + - ["::is_dir", "Argument[self]", "path-injection", "df-generated"] + - ["::is_file", "Argument[self]", "path-injection", "df-generated"] + - ["::is_symlink", "Argument[self]", "path-injection", "df-generated"] + - ["::metadata", "Argument[self]", "path-injection", "df-generated"] + - ["::read_dir", "Argument[self]", "path-injection", "df-generated"] + - ["::read_link", "Argument[self]", "path-injection", "df-generated"] + - ["::symlink_metadata", "Argument[self]", "path-injection", "df-generated"] + - ["::unregister", "Argument[self]", "log-injection", "df-generated"] + - ["::check_public_boundary", "Argument[0]", "log-injection", "df-generated"] + - ["::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["::next", "Argument[self]", "pointer-access", "df-generated"] + - ["::index", "Argument[0]", "log-injection", "df-generated"] + - ["::index", "Argument[self]", "log-injection", "df-generated"] + - ["::to_tokens", "Argument[self]", "log-injection", "df-generated"] + - ["::is_static_assert", "Argument[self]", "log-injection", "df-generated"] + - ["::requires_unsafe_wrapper", "Argument[0]", "log-injection", "df-generated"] + - ["::requires_unsafe_wrapper", "Argument[self]", "log-injection", "df-generated"] + - ["::generate_variant", "Argument[self]", "log-injection", "df-generated"] + - ["::to_tokens", "Argument[self]", "log-injection", "df-generated"] + - ["::build", "Argument[0]", "log-injection", "df-generated"] + - ["::build_and_save", "Argument[0]", "log-injection", "df-generated"] + - ["::drop_argument", "Argument[self]", "log-injection", "df-generated"] + - ["::as_mut", "Argument[self]", "log-injection", "df-generated"] + - ["::as_ref", "Argument[self]", "log-injection", "df-generated"] + - ["::to_tokens", "Argument[self]", "log-injection", "df-generated"] + - ["::as_mut", "Argument[self]", "log-injection", "df-generated"] + - ["::as_ref", "Argument[self]", "log-injection", "df-generated"] + - ["::to_tokens", "Argument[self]", "log-injection", "df-generated"] + - ["::post_build", "Argument[0]", "log-injection", "df-generated"] + - ["::repr", "Argument[self]", "log-injection", "df-generated"] + - ["::repr", "Argument[0]", "log-injection", "df-generated"] + - ["::to_tokens", "Argument[self]", "log-injection", "df-generated"] + - ["::prepend_str", "Argument[self]", "log-injection", "df-generated"] + - ["alloc::alloc::__alloc_error_handler::__rdl_oom", "Argument[0]", "log-injection", "df-generated"] + - ["alloc::collections::btree::mem::replace", "Argument[0]", "pointer-access", "df-generated"] + - ["alloc::collections::btree::mem::take_mut", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_load_mask32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_load_mask64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm256_loadu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm256_loadu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm256_storeu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm256_storeu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm512_loadu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm512_loadu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm512_storeu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm512_storeu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm_loadu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm_loadu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm_storeu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_mm_storeu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_store_mask32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512bw::_store_mask64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_load_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_load_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_loadu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_loadu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_store_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_store_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_storeu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm256_storeu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_load_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_load_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_load_pd", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_load_ps", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_load_si512", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_loadu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_loadu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_loadu_pd", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_loadu_ps", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_loadu_si512", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_store_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_store_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_store_pd", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_store_ps", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_store_si512", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_storeu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_storeu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_storeu_pd", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_storeu_ps", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm512_storeu_si512", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_load_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_load_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_loadu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_loadu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_store_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_store_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_storeu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::avx512f::_mm_storeu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::sse2::_mm_loadl_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::sse2::_mm_loadu_si16", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::sse2::_mm_loadu_si32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::sse2::_mm_loadu_si64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::sse2::_mm_storeu_si16", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::sse2::_mm_storeu_si32", "Argument[0]", "pointer-access", "df-generated"] + - ["core::core_arch::x86::sse2::_mm_storeu_si64", "Argument[0]", "pointer-access", "df-generated"] + - ["core::mem::transmute_copy", "Argument[0]", "pointer-access", "df-generated"] + - ["core::panicking::assert_failed", "Argument[3]", "log-injection", "df-generated"] + - ["core::panicking::assert_matches_failed", "Argument[2]", "log-injection", "df-generated"] + - ["core::panicking::panic_display", "Argument[0]", "log-injection", "df-generated"] + - ["core::panicking::panic_str_2015", "Argument[0]", "log-injection", "df-generated"] + - ["core::panicking::unreachable_display", "Argument[0]", "log-injection", "df-generated"] + - ["core::slice::sort::select::partition_at_index", "Argument[1]", "log-injection", "df-generated"] + - ["core::slice::sort::stable::drift::sort", "Argument[0]", "pointer-access", "df-generated"] + - ["core::slice::sort::stable::quicksort::quicksort", "Argument[0]", "pointer-access", "df-generated"] + - ["core::slice::sort::stable::sort", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_load_mask32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_load_mask64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm256_loadu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm256_loadu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm256_storeu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm256_storeu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm512_loadu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm512_loadu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm512_storeu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm512_storeu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm_loadu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm_loadu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm_storeu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_mm_storeu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_store_mask32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512bw::_store_mask64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_load_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_load_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_loadu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_loadu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_store_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_store_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_storeu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm256_storeu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_load_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_load_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_load_pd", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_load_ps", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_load_si512", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_loadu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_loadu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_loadu_pd", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_loadu_ps", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_loadu_si512", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_store_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_store_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_store_pd", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_store_ps", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_store_si512", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_storeu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_storeu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_storeu_pd", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_storeu_ps", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm512_storeu_si512", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_load_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_load_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_loadu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_loadu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_store_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_store_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_storeu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::avx512f::_mm_storeu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_loadl_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_loadu_si16", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_loadu_si32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_loadu_si64", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_storeu_si16", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_storeu_si32", "Argument[0]", "pointer-access", "df-generated"] + - ["core_arch::core_arch::x86::sse2::_mm_storeu_si64", "Argument[0]", "pointer-access", "df-generated"] + - ["intrinsic-test::json_parser::get_neon_intrinsics", "Argument[0]", "path-injection", "df-generated"] + - ["intrinsic-test::values::value_for_array", "Argument[0]", "log-injection", "df-generated"] + - ["std::alloc::__default_lib_allocator::__rdl_alloc", "Argument[0]", "alloc-layout", "df-generated"] + - ["std::alloc::__default_lib_allocator::__rdl_alloc", "Argument[0]", "alloc-size", "df-generated"] + - ["std::alloc::__default_lib_allocator::__rdl_alloc_zeroed", "Argument[0]", "alloc-layout", "df-generated"] + - ["std::alloc::__default_lib_allocator::__rdl_alloc_zeroed", "Argument[0]", "alloc-size", "df-generated"] + - ["std::alloc::__default_lib_allocator::__rdl_realloc", "Argument[3]", "alloc-layout", "df-generated"] + - ["std::alloc::__default_lib_allocator::__rdl_realloc", "Argument[3]", "alloc-size", "df-generated"] + - ["std::sys::fs::common::copy", "Argument[0]", "path-injection", "df-generated"] + - ["std::sys::fs::common::copy", "Argument[1]", "path-injection", "df-generated"] + - ["std::sys::fs::common::exists", "Argument[0]", "path-injection", "df-generated"] + - ["std::sys::fs::common::remove_dir_all", "Argument[0]", "path-injection", "df-generated"] + - ["std::sys::fs::unix::copy", "Argument[0]", "path-injection", "df-generated"] + - ["std::sys::pal::unix::cvt_nz", "Argument[0]", "log-injection", "df-generated"] + - ["std::sys_common::wtf8::check_utf8_boundary", "Argument[1]", "log-injection", "df-generated"] + - ["std::sys_common::wtf8::slice_error_fail", "Argument[0]", "log-injection", "df-generated"] + - ["std::sys_common::wtf8::slice_error_fail", "Argument[1]", "log-injection", "df-generated"] + - ["std::sys_common::wtf8::slice_error_fail", "Argument[2]", "log-injection", "df-generated"] + - ["stdarch-gen-arm::fn_suffix::type_to_size", "Argument[0]", "log-injection", "df-generated"] + - ["stdarch-gen-arm::load_store_tests::generate_load_store_tests", "Argument[2]", "path-injection", "df-generated"] + - ["stdarch_test::assert", "Argument[1]", "log-injection", "df-generated"] + - ["stdarch_test::assert", "Argument[2]", "log-injection", "df-generated"] + - ["stdarch_test::assert_skip_test_ok", "Argument[0]", "log-injection", "df-generated"] + - ["stdarch_test::assert_skip_test_ok", "Argument[1]", "log-injection", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["::drop", "Argument[self]", "pointer-invalidate", "df-generated"] + - ["::new", "ReturnValue", "file", "df-generated"] + - ["::new", "ReturnValue", "file", "df-generated"] + - ["::dealloc", "Argument[0]", "pointer-invalidate", "df-generated"] + - ["::new", "ReturnValue", "file", "df-generated"] + - ["::open_buffered", "ReturnValue", "file", "df-generated"] + - ["::get", "ReturnValue", "pointer-invalidate", "df-generated"] + - ["::get_or_init", "ReturnValue", "pointer-invalidate", "df-generated"] + - ["as_if_std::the_backtrace_crate::symbolize::gimli::parse_running_mmaps::parse_maps", "ReturnValue", "file", "df-generated"] + - ["backtrace::symbolize::gimli::parse_running_mmaps::parse_maps", "ReturnValue", "file", "df-generated"] + - ["core::intrinsics::drop_in_place", "Argument[0]", "pointer-invalidate", "df-generated"] + - ["core::ptr::dangling", "ReturnValue", "pointer-invalidate", "df-generated"] + - ["core::ptr::drop_in_place", "Argument[0]", "pointer-invalidate", "df-generated"] + - ["intrinsic-test::json_parser::get_neon_intrinsics", "ReturnValue", "file", "df-generated"] + - ["std::alloc::__default_lib_allocator::__rdl_dealloc", "Argument[0]", "pointer-invalidate", "df-generated"] + - ["std::backtrace_rs::symbolize::gimli::parse_running_mmaps::parse_maps", "ReturnValue", "file", "df-generated"] + - ["std::fs::copy", "ReturnValue", "file", "df-generated"] + - ["std::fs::read", "ReturnValue", "file", "df-generated"] + - ["std::fs::read_to_string", "ReturnValue", "file", "df-generated"] + - ["std::path::absolute", "ReturnValue", "commandargs", "df-generated"] + - ["std::sys::fs::common::copy", "ReturnValue", "file", "df-generated"] + - ["std::sys::fs::unix::copy", "ReturnValue", "file", "df-generated"] + - ["std::sys::pal::unix::thread::cgroups::quota", "ReturnValue", "file", "df-generated"] + - ["std::sys::path::unix::absolute", "ReturnValue", "commandargs", "df-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 deleted file mode 100644 index 2b91ef421070..000000000000 --- a/rust/ql/lib/ext/generated/rust/lang-alloc.model.yml +++ /dev/null @@ -1,493 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["lang:alloc", "<&&str as crate::string::SpecToString>::spec_to_string", "Argument[self].Reference.Reference", "ReturnValue", "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", "<_ 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"] - - ["lang:alloc", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::from", "Argument[0].Reference", "ReturnValue.Field[crate::borrow::Cow::Borrowed(0)].Reference", "value", "dfc-generated"] - - ["lang:alloc", "::from", "Argument[0]", "ReturnValue.Field[crate::borrow::Cow::Borrowed(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::from", "Argument[0]", "ReturnValue.Field[crate::borrow::Cow::Owned(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::add_assign", "Argument[0]", "Argument[self].Reference.Field[crate::borrow::Cow::Borrowed(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::add_assign", "Argument[0]", "Argument[self].Reference", "value", "dfc-generated"] - - ["lang:alloc", "::deref", "Argument[self].Reference.Field[crate::borrow::Cow::Borrowed(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::into_owned", "Argument[self].Field[crate::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::to_mut", "Argument[self].Reference.Field[crate::borrow::Cow::Owned(0)]", "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", "::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", "::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"] - - ["lang:alloc", "::deref", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::deref_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::allocator", "Argument[0].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::allocator", "Argument[0].Field[crate::boxed::Box(1)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::as_mut_ptr", "Argument[0].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::as_ptr", "Argument[0].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::downcast", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["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]", "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_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"] - - ["lang:alloc", "::borrow", "Argument[self].Field[crate::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::borrow_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::borrow_mut", "Argument[self].Field[crate::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::as_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::as_mut", "Argument[self].Field[crate::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::as_ref", "Argument[self].Field[crate::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::deref", "Argument[self].Field[crate::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::deref_mut", "Argument[self].Field[crate::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::index", "Argument[self].Field[0].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::index", "Argument[self].Field[crate::bstr::ByteString(0)].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::index_mut", "Argument[self].Field[0].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::index_mut", "Argument[self].Field[crate::bstr::ByteString(0)].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::as_bytes", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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_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", "::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", "::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]", "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", "::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", "::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", "::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", "::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::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"] - - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::btree::map::IterMut::length]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::IterMut::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::IterMut::length]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::iter", "Argument[self].Field[crate::collections::btree::map::IterMut::length]", "ReturnValue.Field[crate::collections::btree::map::Iter::length]", "value", "dfc-generated"] - - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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"] - - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::Values::inner].Field[crate::collections::btree::map::Iter::length]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::btree::map::ValuesMut::inner].Field[crate::collections::btree::map::IterMut::length]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::ValuesMut::inner].Field[crate::collections::btree::map::IterMut::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::ValuesMut::inner].Field[crate::collections::btree::map::IterMut::length]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::and_modify", "Argument[self].Field[crate::collections::btree::map::entry::Entry::Occupied(0)]", "ReturnValue.Field[crate::collections::btree::map::entry::Entry::Occupied(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::and_modify", "Argument[self].Field[crate::collections::btree::map::entry::Entry::Vacant(0)]", "ReturnValue.Field[crate::collections::btree::map::entry::Entry::Vacant(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::insert_entry", "Argument[self].Field[crate::collections::btree::map::entry::Entry::Occupied(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::insert_entry", "Argument[self].Field[crate::collections::btree::map::entry::VacantEntry::alloc]", "ReturnValue.Field[crate::collections::btree::map::entry::OccupiedEntry::alloc]", "value", "dfc-generated"] - - ["lang:alloc", "::insert_entry", "Argument[self].Field[crate::collections::btree::map::entry::VacantEntry::dormant_map]", "ReturnValue.Field[crate::collections::btree::map::entry::OccupiedEntry::dormant_map]", "value", "dfc-generated"] - - ["lang:alloc", "::into_key", "Argument[self].Field[crate::collections::btree::map::entry::VacantEntry::key]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::key", "Argument[self].Field[crate::collections::btree::map::entry::VacantEntry::key]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::new", "Argument[0]", "ReturnValue.Field[crate::collections::btree::merge_iter::MergeIterInner::a]", "value", "dfc-generated"] - - ["lang:alloc", "::new", "Argument[1]", "ReturnValue.Field[crate::collections::btree::merge_iter::MergeIterInner::b]", "value", "dfc-generated"] - - ["lang:alloc", "::nexts", "Argument[self].Field[crate::collections::btree::merge_iter::MergeIterInner::a].Element", "ReturnValue.Field[0].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::nexts", "Argument[self].Field[crate::collections::btree::merge_iter::MergeIterInner::b].Element", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::navigate::LazyLeafHandle::Edge(0)].Reference", "ReturnValue.Field[crate::collections::btree::navigate::LazyLeafHandle::Edge(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::navigate::LazyLeafHandle::Root(0)].Reference", "ReturnValue.Field[crate::collections::btree::navigate::LazyLeafHandle::Root(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::into_left_child", "Argument[self].Field[crate::collections::btree::node::BalancingContext::left_child]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::into_right_child", "Argument[self].Field[crate::collections::btree::node::BalancingContext::right_child]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::merge_tracking_child", "Argument[self].Field[crate::collections::btree::node::BalancingContext::left_child]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::merge_tracking_child_edge", "Argument[0].Field[crate::collections::btree::node::LeftOrRight::Left(0)]", "ReturnValue.Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] - - ["lang:alloc", "::merge_tracking_child_edge", "Argument[self].Field[crate::collections::btree::node::BalancingContext::left_child]", "ReturnValue.Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - - ["lang:alloc", "::merge_tracking_parent", "Argument[self].Field[crate::collections::btree::node::BalancingContext::parent].Field[crate::collections::btree::node::Handle::node]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::steal_left", "Argument[self].Field[crate::collections::btree::node::BalancingContext::right_child]", "ReturnValue.Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - - ["lang:alloc", "::steal_right", "Argument[0]", "ReturnValue.Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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", "::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"] - - ["lang:alloc", "::left_edge", "Argument[self].Field[crate::collections::btree::node::Handle::node]", "ReturnValue.Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - - ["lang:alloc", "::left_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"] - - ["lang:alloc", "::left_kv", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::new_edge", "Argument[0]", "ReturnValue.Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - - ["lang:alloc", "::new_edge", "Argument[1]", "ReturnValue.Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] - - ["lang:alloc", "::new_kv", "Argument[0]", "ReturnValue.Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - - ["lang:alloc", "::new_kv", "Argument[1]", "ReturnValue.Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] - - ["lang:alloc", "::reborrow", "Argument[self].Field[crate::collections::btree::node::Handle::idx]", "ReturnValue.Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:alloc", "::right_kv", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::split", "Argument[self].Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::SplitResult::right].Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] - - ["lang:alloc", "::split", "Argument[self].Field[crate::collections::btree::node::Handle::node]", "ReturnValue.Field[crate::collections::btree::node::SplitResult::left]", "value", "dfc-generated"] - - ["lang:alloc", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::awaken", "Argument[self].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] - - ["lang:alloc", "::awaken", "Argument[self].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - - ["lang:alloc", "::borrow_mut", "Argument[self].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] - - ["lang:alloc", "::borrow_mut", "Argument[self].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - - ["lang:alloc", "::borrow_valmut", "Argument[self].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] - - ["lang:alloc", "::borrow_valmut", "Argument[self].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - - ["lang:alloc", "::calc_split_length", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::cast_to_leaf_unchecked", "Argument[self].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] - - ["lang:alloc", "::cast_to_leaf_unchecked", "Argument[self].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - - ["lang:alloc", "::dormant", "Argument[self].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] - - ["lang:alloc", "::dormant", "Argument[self].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - - ["lang:alloc", "::find_lower_bound_edge", "Argument[0]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["lang:alloc", "::find_lower_bound_edge", "Argument[self]", "ReturnValue.Field[0].Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - - ["lang:alloc", "::find_upper_bound_edge", "Argument[0]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["lang:alloc", "::find_upper_bound_edge", "Argument[self]", "ReturnValue.Field[0].Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - - ["lang:alloc", "::first_edge", "Argument[self]", "ReturnValue.Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - - ["lang:alloc", "::first_kv", "Argument[self]", "ReturnValue.Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - - ["lang:alloc", "::force", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::forget_type", "Argument[self].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] - - ["lang:alloc", "::forget_type", "Argument[self].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - - ["lang:alloc", "::height", "Argument[self].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::into_dying", "Argument[self].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] - - ["lang:alloc", "::into_dying", "Argument[self].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - - ["lang:alloc", "::last_edge", "Argument[self]", "ReturnValue.Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - - ["lang:alloc", "::last_kv", "Argument[self]", "ReturnValue.Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - - ["lang:alloc", "::push_internal_level", "Argument[self].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] - - ["lang:alloc", "::push_internal_level", "Argument[self].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - - ["lang:alloc", "::push_with_handle", "Argument[self].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", "::push_with_handle", "Argument[self].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", "Argument[self].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] - - ["lang:alloc", "::reborrow", "Argument[self].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - - ["lang:alloc", "::search_node", "Argument[self]", "ReturnValue.Field[crate::collections::btree::search::SearchResult::Found(0)].Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::set::BTreeSet::map]", "ReturnValue.Field[crate::collections::btree::set::BTreeSet::map]", "value", "dfc-generated"] - - ["lang:alloc", "::clone_from", "Argument[0].Field[crate::collections::btree::set::BTreeSet::map]", "Argument[self].Field[crate::collections::btree::set::BTreeSet::map].Reference", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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", "::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"] - - ["lang:alloc", "::as_list", "Argument[self].Field[crate::collections::linked_list::Cursor::list]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::index", "Argument[self].Field[crate::collections::linked_list::Cursor::current].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["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::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"] - - ["lang:alloc", "::as_cursor", "Argument[self].Field[crate::collections::linked_list::CursorMut::list]", "ReturnValue.Field[crate::collections::linked_list::Cursor::list]", "value", "dfc-generated"] - - ["lang:alloc", "::as_list", "Argument[self].Field[crate::collections::linked_list::CursorMut::list]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::index", "Argument[self].Field[crate::collections::linked_list::CursorMut::current].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::index", "Argument[self].Field[crate::collections::linked_list::CursorMut::current].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["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::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", "::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"] - - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::linked_list::Iter::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:alloc", "::cursor_back_mut", "Argument[self]", "ReturnValue.Field[crate::collections::linked_list::CursorMut::list]", "value", "dfc-generated"] - - ["lang:alloc", "::cursor_front", "Argument[self].Field[crate::collections::linked_list::LinkedList::head]", "ReturnValue.Field[crate::collections::linked_list::Cursor::current]", "value", "dfc-generated"] - - ["lang:alloc", "::cursor_front", "Argument[self]", "ReturnValue.Field[crate::collections::linked_list::Cursor::list]", "value", "dfc-generated"] - - ["lang:alloc", "::cursor_front_mut", "Argument[self].Field[crate::collections::linked_list::LinkedList::head]", "ReturnValue.Field[crate::collections::linked_list::CursorMut::current]", "value", "dfc-generated"] - - ["lang:alloc", "::cursor_front_mut", "Argument[self]", "ReturnValue.Field[crate::collections::linked_list::CursorMut::list]", "value", "dfc-generated"] - - ["lang:alloc", "::extract_if", "Argument[0]", "ReturnValue.Field[crate::collections::linked_list::ExtractIf::pred]", "value", "dfc-generated"] - - ["lang:alloc", "::extract_if", "Argument[self].Field[crate::collections::linked_list::LinkedList::head]", "ReturnValue.Field[crate::collections::linked_list::ExtractIf::it]", "value", "dfc-generated"] - - ["lang:alloc", "::extract_if", "Argument[self].Field[crate::collections::linked_list::LinkedList::len]", "ReturnValue.Field[crate::collections::linked_list::ExtractIf::old_len]", "value", "dfc-generated"] - - ["lang:alloc", "::extract_if", "Argument[self]", "ReturnValue.Field[crate::collections::linked_list::ExtractIf::list]", "value", "dfc-generated"] - - ["lang:alloc", "::iter", "Argument[self].Field[crate::collections::linked_list::LinkedList::head]", "ReturnValue.Field[crate::collections::linked_list::Iter::head]", "value", "dfc-generated"] - - ["lang:alloc", "::iter", "Argument[self].Field[crate::collections::linked_list::LinkedList::len]", "ReturnValue.Field[crate::collections::linked_list::Iter::len]", "value", "dfc-generated"] - - ["lang:alloc", "::iter", "Argument[self].Field[crate::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[crate::collections::linked_list::Iter::tail]", "value", "dfc-generated"] - - ["lang:alloc", "::iter_mut", "Argument[self].Field[crate::collections::linked_list::LinkedList::head]", "ReturnValue.Field[crate::collections::linked_list::IterMut::head]", "value", "dfc-generated"] - - ["lang:alloc", "::iter_mut", "Argument[self].Field[crate::collections::linked_list::LinkedList::len]", "ReturnValue.Field[crate::collections::linked_list::IterMut::len]", "value", "dfc-generated"] - - ["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", "::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", "::retain_mut", "Argument[self].Element", "Argument[0].Parameter[0].Reference", "value", "dfc-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[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", "::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", "::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"] - - ["lang:alloc", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::try_rfold", "Argument[0].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::try_rfold", "Argument[0].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::next", "Argument[self].Field[crate::collections::vec_deque::iter::Iter::i1].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::try_fold", "Argument[0].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["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::Iter::i1]", "value", "dfc-generated"] - - ["lang:alloc", "::new", "Argument[1]", "ReturnValue.Field[crate::collections::vec_deque::iter::Iter::i2]", "value", "dfc-generated"] - - ["lang:alloc", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::try_rfold", "Argument[0].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::try_rfold", "Argument[0].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::try_fold", "Argument[0].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::borrow", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::as_ref", "Argument[self]", "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"] - - ["lang:alloc", "::from_vec_with_nul", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::ffi::c_str::FromVecWithNulError::bytes]", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:alloc", "::into_vec", "Argument[self].Field[crate::ffi::c_str::NulError(1)]", "ReturnValue", "value", "dfc-generated"] - - ["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]", "ReturnValue.Field[crate::pin::Pin::__pointer]", "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"] - - ["lang:alloc", "::with_capacity_in", "Argument[1]", "ReturnValue.Field[crate::raw_vec::RawVec::inner].Field[crate::raw_vec::RawVecInner::alloc]", "value", "dfc-generated"] - - ["lang:alloc", "::with_capacity_zeroed_in", "Argument[1]", "ReturnValue.Field[crate::raw_vec::RawVec::inner].Field[crate::raw_vec::RawVecInner::alloc]", "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::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"] - - ["lang:alloc", "::new_zeroed_in", "Argument[0]", "ReturnValue.Field[crate::rc::Rc::alloc]", "value", "dfc-generated"] - - ["lang:alloc", "::new_zeroed_slice_in", "Argument[1]", "ReturnValue.Field[crate::rc::Rc::alloc]", "value", "dfc-generated"] - - ["lang:alloc", "::try_new_uninit_in", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::rc::Rc::alloc]", "value", "dfc-generated"] - - ["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", "::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", "::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"] - - ["lang:alloc", "::into_string", "Argument[self].Field[crate::string::IntoChars::bytes].Element", "ReturnValue.Field[crate::string::String::vec].Element", "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", "::clone", "Argument[self].Field[crate::string::String::vec].Reference", "ReturnValue.Field[crate::string::String::vec]", "value", "dfc-generated"] - - ["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]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::add", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::deref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::as_mut_vec", "Argument[self].Field[crate::string::String::vec]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::drain", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::from_utf8", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::string::FromUtf8Error::bytes]", "value", "dfc-generated"] - - ["lang:alloc", "::from_utf8", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::string::String::vec]", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:alloc", "::new_zeroed_in", "Argument[0]", "ReturnValue.Field[crate::sync::Arc::alloc]", "value", "dfc-generated"] - - ["lang:alloc", "::new_zeroed_slice_in", "Argument[1]", "ReturnValue.Field[crate::sync::Arc::alloc]", "value", "dfc-generated"] - - ["lang:alloc", "::try_new_uninit_in", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::Arc::alloc]", "value", "dfc-generated"] - - ["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", "::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::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", "::extract_if", "Argument[1]", "ReturnValue.Field[crate::vec::extract_if::ExtractIf::pred]", "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", "::set_len", "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", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-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"] - - ["lang:alloc", "::next_back", "Argument[self].Field[crate::vec::into_iter::IntoIter::end].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["lang:alloc", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::try_fold", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::as_into_iter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::allocator", "Argument[self].Field[crate::vec::into_iter::IntoIter::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::forget_allocation_drop_remaining", "Argument[self].Field[crate::vec::into_iter::IntoIter::buf]", "Argument[self].Field[crate::vec::into_iter::IntoIter::ptr]", "value", "dfc-generated"] - - ["lang:alloc", "::drop", "Argument[self].Field[crate::vec::set_len_on_drop::SetLenOnDrop::local_len]", "Argument[self].Field[crate::vec::set_len_on_drop::SetLenOnDrop::len].Reference", "value", "dfc-generated"] - - ["lang:alloc", "::current_len", "Argument[self].Field[crate::vec::set_len_on_drop::SetLenOnDrop::local_len]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::new", "Argument[0].Reference", "ReturnValue.Field[crate::vec::set_len_on_drop::SetLenOnDrop::local_len]", "value", "dfc-generated"] - - ["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", "::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"] diff --git a/rust/ql/lib/ext/generated/rust/lang-core.model.yml b/rust/ql/lib/ext/generated/rust/lang-core.model.yml deleted file mode 100644 index 734b13027cd8..000000000000 --- a/rust/ql/lib/ext/generated/rust/lang-core.model.yml +++ /dev/null @@ -1,2600 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["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", "<&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::result::Result as crate::iter::traits::collect::IntoIterator>::into_iter", "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::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"] - - ["lang:core", "<&mut _ as crate::iter::traits::double_ended::DoubleEndedIteratorRefSpec>::spec_try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["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::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"] - - ["lang:core", "<&mut _ as crate::iter::traits::iterator::IteratorRefSpec>::spec_try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "<&mut _ as crate::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "<&mut _ as crate::ops::deref::DerefMut>::deref_mut", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "<&mut crate::result::Result as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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", "<[_] 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"] - - ["lang:core", "<[_]>::align_to", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::align_to_mut", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::as_mut_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "<[_]>::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "<[_]>::chunk_by", "Argument[0]", "ReturnValue.Field[crate::slice::iter::ChunkBy::predicate]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::chunk_by", "Argument[self]", "ReturnValue.Field[crate::slice::iter::ChunkBy::slice]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::chunk_by_mut", "Argument[0]", "ReturnValue.Field[crate::slice::iter::ChunkByMut::predicate]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::chunk_by_mut", "Argument[self]", "ReturnValue.Field[crate::slice::iter::ChunkByMut::slice]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::chunks", "Argument[0]", "ReturnValue.Field[crate::slice::iter::Chunks::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::chunks", "Argument[self]", "ReturnValue.Field[crate::slice::iter::Chunks::v]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::chunks_exact", "Argument[0]", "ReturnValue.Field[crate::slice::iter::ChunksExact::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::chunks_exact_mut", "Argument[0]", "ReturnValue.Field[crate::slice::iter::ChunksExactMut::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::chunks_mut", "Argument[0]", "ReturnValue.Field[crate::slice::iter::ChunksMut::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::chunks_mut", "Argument[self]", "ReturnValue.Field[crate::slice::iter::ChunksMut::v]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::partition_dedup_by", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::rchunks", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RChunks::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::rchunks", "Argument[self]", "ReturnValue.Field[crate::slice::iter::RChunks::v]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::rchunks_exact", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RChunksExact::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::rchunks_exact_mut", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RChunksExactMut::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::rchunks_mut", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RChunksMut::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::rchunks_mut", "Argument[self]", "ReturnValue.Field[crate::slice::iter::RChunksMut::v]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::rsplit", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RSplit::inner].Field[crate::slice::iter::Split::pred]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::rsplit", "Argument[self]", "ReturnValue.Field[crate::slice::iter::RSplit::inner].Field[crate::slice::iter::Split::v]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::rsplit_mut", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RSplitMut::inner].Field[crate::slice::iter::SplitMut::pred]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::rsplit_mut", "Argument[self]", "ReturnValue.Field[crate::slice::iter::RSplitMut::inner].Field[crate::slice::iter::SplitMut::v]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::rsplit_once", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "<[_]>::rsplitn", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RSplitN::inner].Field[crate::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::rsplitn_mut", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RSplitNMut::inner].Field[crate::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::split", "Argument[0]", "ReturnValue.Field[crate::slice::iter::Split::pred]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::split", "Argument[self]", "ReturnValue.Field[crate::slice::iter::Split::v]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::split_inclusive", "Argument[0]", "ReturnValue.Field[crate::slice::iter::SplitInclusive::pred]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::split_inclusive", "Argument[self]", "ReturnValue.Field[crate::slice::iter::SplitInclusive::v]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::split_inclusive_mut", "Argument[0]", "ReturnValue.Field[crate::slice::iter::SplitInclusiveMut::pred]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::split_inclusive_mut", "Argument[self]", "ReturnValue.Field[crate::slice::iter::SplitInclusiveMut::v]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::split_mut", "Argument[0]", "ReturnValue.Field[crate::slice::iter::SplitMut::pred]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::split_mut", "Argument[self]", "ReturnValue.Field[crate::slice::iter::SplitMut::v]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::split_once", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "<[_]>::splitn", "Argument[0]", "ReturnValue.Field[crate::slice::iter::SplitN::inner].Field[crate::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::splitn_mut", "Argument[0]", "ReturnValue.Field[crate::slice::iter::SplitNMut::inner].Field[crate::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] - - ["lang:core", "<[_]>::windows", "Argument[self]", "ReturnValue.Field[crate::slice::iter::Windows::v]", "value", "dfc-generated"] - - ["lang:core", "<[crate::ascii::ascii_char::AsciiChar]>::as_str", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "<[crate::mem::maybe_uninit::MaybeUninit]>::assume_init_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "<[crate::mem::maybe_uninit::MaybeUninit]>::assume_init_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "<[u8] as crate::num::dec2flt::common::ByteSlice>::parse_digits", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "<[u8]>::as_ascii_unchecked", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "<[u8]>::trim_ascii_end", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "<[u8]>::trim_ascii_start", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "<[u8]>::utf8_chunks", "Argument[self]", "ReturnValue.Field[crate::str::lossy::Utf8Chunks::source]", "value", "dfc-generated"] - - ["lang:core", "<_ as crate::array::SpecArrayClone>::clone", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "<_ as crate::async_iter::async_iter::IntoAsyncIterator>::into_async_iter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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"] - - ["lang:core", "<_ as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "<_ as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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", "::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"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::select_unpredictable", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::select_unpredictable", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::then", "Argument[0].ReturnValue", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:core", "::from_digit", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::to_ascii_lowercase", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::to_ascii_uppercase", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::align", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::align_to", "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", "::align_to", "Argument[self].Field[crate::alloc::layout::Layout::size]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::alloc::layout::Layout::size]", "value", "dfc-generated"] - - ["lang:core", "::extend_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", "::from_size_align", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::alloc::layout::Layout::size]", "value", "dfc-generated"] - - ["lang:core", "::from_size_align_unchecked", "Argument[0]", "ReturnValue.Field[crate::alloc::layout::Layout::size]", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:core", "::to_char", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::try_capture", "Argument[self].Field[0].Reference", "Argument[0].Field[crate::asserting::Capture::elem].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::try_capture", "Argument[self].Field[crate::asserting::Wrapper(0)].Reference", "Argument[0].Field[crate::asserting::Capture::elem].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::borrow", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::borrow", "Argument[self].Field[crate::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::borrow_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::borrow_mut", "Argument[self].Field[crate::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::as_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::as_mut", "Argument[self].Field[crate::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::as_ref", "Argument[self].Field[crate::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::deref", "Argument[self].Field[crate::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::deref_mut", "Argument[self].Field[crate::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::index", "Argument[self].Field[0].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::index", "Argument[self].Field[crate::bstr::ByteStr(0)].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::index", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::index_mut", "Argument[self].Field[0].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::index_mut", "Argument[self].Field[crate::bstr::ByteStr(0)].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::index_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::as_bytes", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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", "::clone", "Argument[self].Field[crate::cell::BorrowRef::borrow]", "ReturnValue.Field[crate::cell::BorrowRef::borrow]", "value", "dfc-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_slice_of_cells", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-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"] - - ["lang:core", "::clone", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::filter_map", "Argument[0].Field[crate::cell::Ref::borrow]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::cell::Ref::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"] - - ["lang:core", "::map", "Argument[0].Field[crate::cell::Ref::borrow]", "ReturnValue.Field[crate::cell::Ref::borrow]", "value", "dfc-generated"] - - ["lang:core", "::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - - ["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", "::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", "::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"] - - ["lang:core", "::map", "Argument[0].Field[crate::cell::RefMut::borrow]", "ReturnValue.Field[crate::cell::RefMut::borrow]", "value", "dfc-generated"] - - ["lang:core", "::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::cell::UnsafeCell::value]", "value", "dfc-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::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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"] - - ["lang:core", "::then", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::then", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::then_with", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::then_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::clone_from", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::provide_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::provide_ref_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::provide_value", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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", "::with_copy", "Argument[0].ReturnValue", "ReturnValue", "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"] - - ["lang:core", "::new_v1", "Argument[1]", "ReturnValue.Field[crate::fmt::Arguments::args]", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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", "::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"] - - ["lang:core", "::entry_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::finish", "Argument[self].Field[crate::fmt::builders::DebugList::inner].Field[crate::fmt::builders::DebugInner::result]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::entries", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::entry", "Argument[self].Field[crate::fmt::builders::DebugMap::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::fmt::builders::DebugMap::result].Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::entry", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::finish", "Argument[self].Field[crate::fmt::builders::DebugMap::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::finish", "Argument[self].Field[crate::fmt::builders::DebugMap::result]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::finish_non_exhaustive", "Argument[self].Field[crate::fmt::builders::DebugMap::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::finish_non_exhaustive", "Argument[self].Field[crate::fmt::builders::DebugMap::result]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::key", "Argument[self].Field[crate::fmt::builders::DebugMap::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::fmt::builders::DebugMap::result].Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::key", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::key_with", "Argument[self].Field[crate::fmt::builders::DebugMap::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::fmt::builders::DebugMap::result].Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::key_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::value", "Argument[self].Field[crate::fmt::builders::DebugMap::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::fmt::builders::DebugMap::result].Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::value", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::value_with", "Argument[self].Field[crate::fmt::builders::DebugMap::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::fmt::builders::DebugMap::result].Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::value_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::entries", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::entry", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::entry_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::finish", "Argument[self].Field[crate::fmt::builders::DebugSet::inner].Field[crate::fmt::builders::DebugInner::result]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::finish_non_exhaustive", "Argument[self].Field[crate::fmt::builders::DebugSet::inner].Field[crate::fmt::builders::DebugInner::result]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::field", "Argument[self].Field[crate::fmt::builders::DebugStruct::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::fmt::builders::DebugStruct::result].Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::field", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::field_with", "Argument[self].Field[crate::fmt::builders::DebugStruct::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::fmt::builders::DebugStruct::result].Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::field_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::finish", "Argument[self].Field[crate::fmt::builders::DebugStruct::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::finish", "Argument[self].Field[crate::fmt::builders::DebugStruct::result]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::finish_non_exhaustive", "Argument[self].Field[crate::fmt::builders::DebugStruct::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::finish_non_exhaustive", "Argument[self].Field[crate::fmt::builders::DebugStruct::result]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::field", "Argument[self].Field[crate::fmt::builders::DebugTuple::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::fmt::builders::DebugTuple::result].Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::field", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::field_with", "Argument[self].Field[crate::fmt::builders::DebugTuple::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::fmt::builders::DebugTuple::result].Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::field_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::finish", "Argument[self].Field[crate::fmt::builders::DebugTuple::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::finish", "Argument[self].Field[crate::fmt::builders::DebugTuple::result]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::finish_non_exhaustive", "Argument[self].Field[crate::fmt::builders::DebugTuple::result].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::finish_non_exhaustive", "Argument[self].Field[crate::fmt::builders::DebugTuple::result]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fmt", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::fmt", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::fmt", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::fmt", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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", "::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"] - - ["lang:core", "::finish", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::new_with_keys", "Argument[0]", "ReturnValue.Field[crate::hash::sip::SipHasher13::hasher].Field[crate::hash::sip::Hasher::k0]", "value", "dfc-generated"] - - ["lang:core", "::new_with_keys", "Argument[1]", "ReturnValue.Field[crate::hash::sip::SipHasher13::hasher].Field[crate::hash::sip::Hasher::k1]", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::io::borrowed_buf::BorrowedBuf::buf]", "value", "dfc-generated"] - - ["lang:core", "::clear", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::init_len", "Argument[self].Field[crate::io::borrowed_buf::BorrowedBuf::init]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::len", "Argument[self].Field[crate::io::borrowed_buf::BorrowedBuf::filled]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::set_init", "Argument[0]", "Argument[self].Field[crate::io::borrowed_buf::BorrowedBuf::init]", "value", "dfc-generated"] - - ["lang:core", "::set_init", "Argument[0]", "ReturnValue.Field[crate::io::borrowed_buf::BorrowedBuf::init]", "value", "dfc-generated"] - - ["lang:core", "::set_init", "Argument[self].Field[crate::io::borrowed_buf::BorrowedBuf::init]", "ReturnValue.Field[crate::io::borrowed_buf::BorrowedBuf::init]", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:core", "::set_init", "Argument[self].Field[crate::io::borrowed_buf::BorrowedCursor::buf].Field[crate::io::borrowed_buf::BorrowedBuf::init]", "ReturnValue.Field[crate::io::borrowed_buf::BorrowedCursor::buf].Field[crate::io::borrowed_buf::BorrowedBuf::init]", "value", "dfc-generated"] - - ["lang:core", "::set_init", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::written", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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", "::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"] - - ["lang:core", "::rfold", "Argument[1].ReturnValue", "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]", "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", "::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", "::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"] - - ["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", "::__iterator_get_unchecked", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::__iterator_get_unchecked", "Argument[self]", "ReturnValue", "taint", "df-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", "::next", "Argument[self].Field[crate::iter::adapters::enumerate::Enumerate::count]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::enumerate::Enumerate::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Field[1]", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::enumerate::Enumerate::iter].Element", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::iter::adapters::enumerate::Enumerate::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Field[1]", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::iter::adapters::enumerate::Enumerate::iter].Element", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::enumerate::Enumerate::iter]", "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", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::filter::Filter::iter]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::filter::Filter::predicate]", "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", "::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", "::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", "::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", "::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"] - - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::into_inner", "Argument[self].Field[crate::iter::adapters::fuse::Fuse::iter]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::fuse::Fuse::iter].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", "::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"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::intersperse::IntersperseWith::separator]", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self]", "ReturnValue", "taint", "df-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", "::__iterator_get_unchecked", "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", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_unchecked", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::into_inner", "Argument[self].Field[crate::iter::adapters::map::Map::iter]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::map::Map::iter]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::map::Map::f]", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::map_while::MapWhile::iter].Element", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::map_while::MapWhile::iter]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::map_while::MapWhile::predicate]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::iter::adapters::map_windows::Buffer::start]", "ReturnValue.Field[crate::iter::adapters::map_windows::Buffer::start]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::map_windows::MapWindows::f]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-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]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::try_rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::iter::adapters::rev::Rev::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[crate::iter::adapters::rev::Rev::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"] - - ["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", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::rev::Rev::iter]", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::scan::Scan::iter].Element", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::scan::Scan::iter]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::scan::Scan::state]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[2]", "ReturnValue.Field[crate::iter::adapters::scan::Scan::f]", "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", "::last", "Argument[self].Field[crate::iter::adapters::skip::Skip::iter].Element", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::skip::Skip::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::iter::adapters::skip::Skip::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::iter::adapters::skip::Skip::iter].Element", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::skip::Skip::iter]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::skip::Skip::n]", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "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", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::skip_while::SkipWhile::iter]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::skip_while::SkipWhile::predicate]", "value", "dfc-generated"] - - ["lang:core", "::spec_next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::spec_rfold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::spec_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::spec_rfold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::spec_rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::spec_try_rfold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::spec_try_rfold", "Argument[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", "::spec_fold", "Argument[self].Field[crate::iter::adapters::step_by::StepBy::iter].Element", "Argument[1].Parameter[1]", "value", "dfc-generated"] - - ["lang:core", "::spec_fold", "Argument[self].Field[crate::iter::adapters::step_by::StepBy::iter].Field[crate::ops::range::Range::start]", "Argument[1].Parameter[1]", "value", "dfc-generated"] - - ["lang:core", "::spec_next", "Argument[self].Field[crate::iter::adapters::step_by::StepBy::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::spec_next", "Argument[self].Field[crate::iter::adapters::step_by::StepBy::iter].Field[crate::ops::range::Range::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::spec_nth", "Argument[self].Field[crate::iter::adapters::step_by::StepBy::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["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", "::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", "::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", "::len", "Argument[self].Field[crate::iter::adapters::take::Take::n]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::take::Take::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::iter::adapters::take::Take::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::size_hint", "Argument[self].Field[crate::iter::adapters::take::Take::n]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::size_hint", "Argument[self].Field[crate::iter::adapters::take::Take::n]", "ReturnValue.Field[1].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::take::Take::iter]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::take::Take::n]", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::take_while::TakeWhile::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::take_while::TakeWhile::iter].Element", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::take_while::TakeWhile::iter]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::take_while::TakeWhile::predicate]", "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", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::nth_back", "Argument[self].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "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", "::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"] - - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::deref", "Argument[self].Field[crate::mem::manually_drop::ManuallyDrop::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::deref_mut", "Argument[self].Field[crate::mem::manually_drop::ManuallyDrop::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::into_inner", "Argument[0].Field[crate::mem::manually_drop::ManuallyDrop::value]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::net::ip_addr::IpAddr::V4(0)]", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::net::ip_addr::IpAddr::V6(0)].Field[crate::net::ip_addr::Ipv6Addr::octets]", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:core", "::as_octets", "Argument[self].Field[crate::net::ip_addr::Ipv4Addr::octets]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::from_octets", "Argument[0]", "ReturnValue.Field[crate::net::ip_addr::Ipv4Addr::octets]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::net::ip_addr::Ipv4Addr::octets].Element", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::net::ip_addr::Ipv4Addr::octets].Element", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[2]", "ReturnValue.Field[crate::net::ip_addr::Ipv4Addr::octets].Element", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[3]", "ReturnValue.Field[crate::net::ip_addr::Ipv4Addr::octets].Element", "value", "dfc-generated"] - - ["lang:core", "::octets", "Argument[self].Field[crate::net::ip_addr::Ipv4Addr::octets]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:core", "::as_octets", "Argument[self].Field[crate::net::ip_addr::Ipv6Addr::octets]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::from_octets", "Argument[0]", "ReturnValue.Field[crate::net::ip_addr::Ipv6Addr::octets]", "value", "dfc-generated"] - - ["lang:core", "::octets", "Argument[self].Field[crate::net::ip_addr::Ipv6Addr::octets]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::to_canonical", "Argument[self].Reference", "ReturnValue.Field[crate::net::ip_addr::IpAddr::V6(0)]", "value", "dfc-generated"] - - ["lang:core", "::to_ipv4_mapped", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from", "Argument[0].Field[1]", "ReturnValue.Field[crate::net::socket_addr::SocketAddr::V4(0)].Field[crate::net::socket_addr::SocketAddrV4::port]", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0].Field[1]", "ReturnValue.Field[crate::net::socket_addr::SocketAddr::V6(0)].Field[crate::net::socket_addr::SocketAddrV6::port]", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::net::socket_addr::SocketAddr::V4(0)]", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::net::socket_addr::SocketAddr::V6(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0].Field[crate::net::ip_addr::IpAddr::V4(0)]", "ReturnValue.Field[crate::net::socket_addr::SocketAddr::V4(0)].Field[crate::net::socket_addr::SocketAddrV4::ip]", "value", "dfc-generated"] - - ["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", "::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", "::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"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::net::socket_addr::SocketAddrV6::port]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[2]", "ReturnValue.Field[crate::net::socket_addr::SocketAddrV6::flowinfo]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[3]", "ReturnValue.Field[crate::net::socket_addr::SocketAddrV6::scope_id]", "value", "dfc-generated"] - - ["lang:core", "::port", "Argument[self].Field[crate::net::socket_addr::SocketAddrV6::port]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::scope_id", "Argument[self].Field[crate::net::socket_addr::SocketAddrV6::scope_id]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::set_flowinfo", "Argument[0]", "Argument[self].Field[crate::net::socket_addr::SocketAddrV6::flowinfo]", "value", "dfc-generated"] - - ["lang:core", "::set_ip", "Argument[0]", "Argument[self].Field[crate::net::socket_addr::SocketAddrV6::ip]", "value", "dfc-generated"] - - ["lang:core", "::set_port", "Argument[0]", "Argument[self].Field[crate::net::socket_addr::SocketAddrV6::port]", "value", "dfc-generated"] - - ["lang:core", "::set_scope_id", "Argument[0]", "Argument[self].Field[crate::net::socket_addr::SocketAddrV6::scope_id]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::num::bignum::Big32x40::base]", "ReturnValue.Field[crate::num::bignum::Big32x40::base]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::num::bignum::Big32x40::size]", "ReturnValue.Field[crate::num::bignum::Big32x40::size]", "value", "dfc-generated"] - - ["lang:core", "::add", "Argument[0].Field[crate::num::bignum::Big32x40::size]", "Argument[self].Field[crate::num::bignum::Big32x40::size]", "value", "dfc-generated"] - - ["lang:core", "::add", "Argument[0].Field[crate::num::bignum::Big32x40::size]", "ReturnValue.Field[crate::num::bignum::Big32x40::size]", "value", "dfc-generated"] - - ["lang:core", "::add", "Argument[self].Field[crate::num::bignum::Big32x40::size]", "ReturnValue.Field[crate::num::bignum::Big32x40::size]", "value", "dfc-generated"] - - ["lang:core", "::add", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::add_small", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::digits", "Argument[self].Field[crate::num::bignum::Big32x40::base].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::div_rem", "Argument[0].Field[crate::num::bignum::Big32x40::size]", "Argument[2].Field[crate::num::bignum::Big32x40::size]", "value", "dfc-generated"] - - ["lang:core", "::div_rem_small", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::from_small", "Argument[0]", "ReturnValue.Field[crate::num::bignum::Big32x40::base].Element", "value", "dfc-generated"] - - ["lang:core", "::from_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::get_bit", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::get_bit", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul_digits", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::mul_pow2", "Argument[self].Field[crate::num::bignum::Big32x40::base].Element", "ReturnValue.Field[crate::num::bignum::Big32x40::base].Element", "value", "dfc-generated"] - - ["lang:core", "::mul_pow2", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::mul_pow5", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::mul_small", "Argument[self].Field[crate::num::bignum::Big32x40::size]", "ReturnValue.Field[crate::num::bignum::Big32x40::size]", "value", "dfc-generated"] - - ["lang:core", "::mul_small", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::sub", "Argument[0].Field[crate::num::bignum::Big32x40::size]", "Argument[self].Field[crate::num::bignum::Big32x40::size]", "value", "dfc-generated"] - - ["lang:core", "::sub", "Argument[0].Field[crate::num::bignum::Big32x40::size]", "ReturnValue.Field[crate::num::bignum::Big32x40::size]", "value", "dfc-generated"] - - ["lang:core", "::sub", "Argument[self].Field[crate::num::bignum::Big32x40::size]", "ReturnValue.Field[crate::num::bignum::Big32x40::size]", "value", "dfc-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::num::bignum::tests::Big8x3::base]", "ReturnValue.Field[crate::num::bignum::tests::Big8x3::base]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::num::bignum::tests::Big8x3::size]", "ReturnValue.Field[crate::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] - - ["lang:core", "::add", "Argument[0].Field[crate::num::bignum::tests::Big8x3::size]", "Argument[self].Field[crate::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] - - ["lang:core", "::add", "Argument[0].Field[crate::num::bignum::tests::Big8x3::size]", "ReturnValue.Field[crate::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] - - ["lang:core", "::add", "Argument[self].Field[crate::num::bignum::tests::Big8x3::size]", "ReturnValue.Field[crate::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] - - ["lang:core", "::add", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::add_small", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::digits", "Argument[self].Field[crate::num::bignum::tests::Big8x3::base].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::div_rem", "Argument[0].Field[crate::num::bignum::tests::Big8x3::size]", "Argument[2].Field[crate::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] - - ["lang:core", "::div_rem_small", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::from_small", "Argument[0]", "ReturnValue.Field[crate::num::bignum::tests::Big8x3::base].Element", "value", "dfc-generated"] - - ["lang:core", "::from_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::get_bit", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::get_bit", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul_digits", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::mul_pow2", "Argument[self].Field[crate::num::bignum::tests::Big8x3::base].Element", "ReturnValue.Field[crate::num::bignum::tests::Big8x3::base].Element", "value", "dfc-generated"] - - ["lang:core", "::mul_pow2", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::mul_pow5", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::mul_small", "Argument[self].Field[crate::num::bignum::tests::Big8x3::size]", "ReturnValue.Field[crate::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] - - ["lang:core", "::mul_small", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::sub", "Argument[0].Field[crate::num::bignum::tests::Big8x3::size]", "Argument[self].Field[crate::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] - - ["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", "::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", "::kind", "Argument[self].Field[crate::num::error::ParseIntError::kind]", "ReturnValue.Reference", "value", "dfc-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"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::I32NotAllOnes(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::I64NotAllOnes(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::I64NotAllOnes(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::Nanoseconds(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::Nanoseconds(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroI128Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroI128Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroI16Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroI16Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroI32Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroI32Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroI64Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroI64Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroI8Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroI8Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroIsizeInner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroIsizeInner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroU128Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroU128Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroU16Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroU16Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroU32Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroU32Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroU64Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroU64Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroU8Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroU8Inner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroUsizeInner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroUsizeInner(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::U32NotAllOnes(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::U32NotAllOnes(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::U64NotAllOnes(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::U64NotAllOnes(0)]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::UsizeNoHighBit(0)]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::UsizeNoHighBit(0)]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::bitor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::from_mut_unchecked", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["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_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"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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", "::neg", "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"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["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", "::shl_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::shr_assign", "Argument[0]", "Argument[self]", "taint", "df-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"] - - ["lang:core", "::from_output", "Argument[0]", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] - - ["lang:core", "::break_value", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::continue_value", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::into_try", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::into_value", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::into_value", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::map_break", "Argument[0].ReturnValue", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Break(0)]", "value", "dfc-generated"] - - ["lang:core", "::map_break", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Break(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::map_break", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] - - ["lang:core", "::map_continue", "Argument[0].ReturnValue", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] - - ["lang:core", "::map_continue", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Break(0)]", "value", "dfc-generated"] - - ["lang:core", "::map_continue", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::ops::index_range::IndexRange::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::end", "Argument[self].Field[crate::ops::index_range::IndexRange::end]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::ops::index_range::IndexRange::start]", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[1]", "ReturnValue.Field[crate::ops::index_range::IndexRange::end]", "value", "dfc-generated"] - - ["lang:core", "::start", "Argument[self].Field[crate::ops::index_range::IndexRange::start]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::take_prefix", "Argument[self].Field[crate::ops::index_range::IndexRange::end]", "Argument[self].Field[crate::ops::index_range::IndexRange::start]", "value", "dfc-generated"] - - ["lang:core", "::take_prefix", "Argument[self].Field[crate::ops::index_range::IndexRange::end]", "ReturnValue.Field[crate::ops::index_range::IndexRange::end]", "value", "dfc-generated"] - - ["lang:core", "::take_prefix", "Argument[self].Field[crate::ops::index_range::IndexRange::start]", "ReturnValue.Field[crate::ops::index_range::IndexRange::start]", "value", "dfc-generated"] - - ["lang:core", "::take_suffix", "Argument[self].Field[crate::ops::index_range::IndexRange::end]", "ReturnValue.Field[crate::ops::index_range::IndexRange::end]", "value", "dfc-generated"] - - ["lang:core", "::take_suffix", "Argument[self].Field[crate::ops::index_range::IndexRange::start]", "Argument[self].Field[crate::ops::index_range::IndexRange::end]", "value", "dfc-generated"] - - ["lang:core", "::take_suffix", "Argument[self].Field[crate::ops::index_range::IndexRange::start]", "ReturnValue.Field[crate::ops::index_range::IndexRange::start]", "value", "dfc-generated"] - - ["lang:core", "::zero_to", "Argument[0]", "ReturnValue.Field[crate::ops::index_range::IndexRange::end]", "value", "dfc-generated"] - - ["lang:core", "::as_mut", "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_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", "::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"] - - ["lang:core", "::map", "Argument[self].Field[crate::ops::range::Bound::Included(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0].Field[crate::range::Range::end]", "ReturnValue.Field[crate::ops::range::Range::end]", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0].Field[crate::range::Range::start]", "ReturnValue.Field[crate::ops::range::Range::start]", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:core", "::end_bound", "Argument[self].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] - - ["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"] - - ["lang:core", "::start_bound", "Argument[self].Field[crate::ops::range::RangeFrom::start]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - - ["lang:core", "::get", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::get_mut", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::get_unchecked", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::get_unchecked_mut", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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"] - - ["lang:core", "::end_bound", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::end_bound", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::end_bound", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - - ["lang:core", "::start_bound", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::start_bound", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - - ["lang:core", "::end", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::into_inner", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["lang:core", "::into_inner", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::ops::range::RangeInclusive::start]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::ops::range::RangeInclusive::end]", "value", "dfc-generated"] - - ["lang:core", "::start", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::into_bounds", "Argument[self].Field[crate::ops::range::RangeTo::end]", "ReturnValue.Field[1].Field[crate::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] - - ["lang:core", "::bound", "Argument[self].Field[crate::ops::range::RangeTo::end]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["lang:core", "::end_bound", "Argument[self].Field[crate::ops::range::RangeTo::end]", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::end_bound", "Argument[self].Field[crate::ops::range::RangeTo::end]", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] - - ["lang:core", "::into_bounds", "Argument[self].Field[crate::ops::range::RangeToInclusive::end]", "ReturnValue.Field[1].Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - - ["lang:core", "::bound", "Argument[self].Field[crate::ops::range::RangeToInclusive::end]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["lang:core", "::end_bound", "Argument[self].Field[crate::ops::range::RangeToInclusive::end]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::end_bound", "Argument[self].Field[crate::ops::range::RangeToInclusive::end]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - - ["lang:core", "::branch", "Argument[self].Field[0]", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] - - ["lang:core", "::branch", "Argument[self].Field[crate::ops::try_trait::NeverShortCircuit(0)]", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:core", "::from_output", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::and", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::and_then", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::and_then", "Argument[self].Field[crate::option::Option::Some(0)].Field[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::and_then", "Argument[self].Field[crate::option::Option::Some(0)].Field[crate::path::Component::Normal(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::and_then", "Argument[self].Field[crate::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["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"] - - ["lang:core", "::get_or_insert", "Argument[0]", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::get_or_insert", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::get_or_insert", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::get_or_insert_default", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::get_or_insert_with", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::insert", "Argument[0]", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::insert", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::insert", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::inspect", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::is_none_or", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::is_none_or", "Argument[self].Field[crate::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::is_some_and", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::is_some_and", "Argument[self].Field[crate::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::map", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::map", "Argument[self]", "Argument[0]", "taint", "df-generated"] - - ["lang:core", "::map", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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", "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)]", "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[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"] - - ["lang:core", "::unwrap_or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::unwrap_or", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::unwrap_or_default", "Argument[self].Field[crate::option::Option::Some(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::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::unwrap_unchecked", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::unzip", "Argument[self].Field[crate::option::Option::Some(0)].Field[0]", "ReturnValue.Field[0].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::unzip", "Argument[self].Field[crate::option::Option::Some(0)].Field[1]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::xor", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::xor", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::zip", "Argument[0].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[1]", "value", "dfc-generated"] - - ["lang:core", "::zip", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] - - ["lang:core", "::zip_with", "Argument[0].Field[crate::option::Option::Some(0)]", "Argument[1].Parameter[1]", "value", "dfc-generated"] - - ["lang:core", "::zip_with", "Argument[1].ReturnValue", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::zip_with", "Argument[self].Field[crate::option::Option::Some(0)]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::column", "Argument[self].Field[crate::panic::location::Location::col]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::file", "Argument[self].Field[crate::panic::location::Location::file]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::internal_constructor", "Argument[0]", "ReturnValue.Field[crate::panic::location::Location::file]", "value", "dfc-generated"] - - ["lang:core", "::internal_constructor", "Argument[1]", "ReturnValue.Field[crate::panic::location::Location::line]", "value", "dfc-generated"] - - ["lang:core", "::internal_constructor", "Argument[2]", "ReturnValue.Field[crate::panic::location::Location::col]", "value", "dfc-generated"] - - ["lang:core", "::line", "Argument[self].Field[crate::panic::location::Location::line]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::can_unwind", "Argument[self].Field[crate::panic::panic_info::PanicInfo::can_unwind]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::force_no_backtrace", "Argument[self].Field[crate::panic::panic_info::PanicInfo::force_no_backtrace]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::location", "Argument[self].Field[crate::panic::panic_info::PanicInfo::location]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::message", "Argument[self].Field[crate::panic::panic_info::PanicInfo::message]", "ReturnValue.Field[crate::panic::panic_info::PanicMessage::message]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::panic::panic_info::PanicInfo::message]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::panic::panic_info::PanicInfo::location]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[2]", "ReturnValue.Field[crate::panic::panic_info::PanicInfo::can_unwind]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[3]", "ReturnValue.Field[crate::panic::panic_info::PanicInfo::force_no_backtrace]", "value", "dfc-generated"] - - ["lang:core", "::as_str", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::deref", "Argument[self].Field[crate::panic::unwind_safe::AssertUnwindSafe(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::deref_mut", "Argument[self].Field[crate::panic::unwind_safe::AssertUnwindSafe(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::call_once", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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_ref", "Argument[self].Field[crate::pin::Pin::__pointer].Reference", "ReturnValue.Field[crate::pin::Pin::__pointer].Reference", "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", "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", "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]", "Argument[0].Parameter[0]", "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]", "ReturnValue.Field[crate::pin::Pin::__pointer]", "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]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_ref", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::ptr::unique::Unique::pointer]", "value", "dfc-generated"] - - ["lang:core", "::as_non_null_ptr", "Argument[self].Field[crate::ptr::unique::Unique::pointer]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from", "Argument[0].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::range::Range::end]", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0].Field[crate::ops::range::Range::start]", "ReturnValue.Field[crate::range::Range::start]", "value", "dfc-generated"] - - ["lang:core", "::into_bounds", "Argument[self].Field[crate::range::Range::end]", "ReturnValue.Field[1].Field[crate::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] - - ["lang:core", "::into_bounds", "Argument[self].Field[crate::range::Range::start]", "ReturnValue.Field[0].Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - - ["lang:core", "::end_bound", "Argument[self].Field[crate::range::Range::end]", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::end_bound", "Argument[self].Field[crate::range::Range::end]", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] - - ["lang:core", "::start_bound", "Argument[self].Field[crate::range::Range::start]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::start_bound", "Argument[self].Field[crate::range::Range::start]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0].Field[crate::ops::range::RangeFrom::start]", "ReturnValue.Field[crate::range::RangeFrom::start]", "value", "dfc-generated"] - - ["lang:core", "::into_bounds", "Argument[self].Field[crate::range::RangeFrom::start]", "ReturnValue.Field[0].Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - - ["lang:core", "::start_bound", "Argument[self].Field[crate::range::RangeFrom::start]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::start_bound", "Argument[self].Field[crate::range::RangeFrom::start]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::range::RangeInclusive::end]", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Field[crate::range::RangeInclusive::start]", "value", "dfc-generated"] - - ["lang:core", "::into_bounds", "Argument[self].Field[crate::range::RangeInclusive::end]", "ReturnValue.Field[1].Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - - ["lang:core", "::into_bounds", "Argument[self].Field[crate::range::RangeInclusive::start]", "ReturnValue.Field[0].Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - - ["lang:core", "::end_bound", "Argument[self].Field[crate::range::RangeInclusive::end]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::end_bound", "Argument[self].Field[crate::range::RangeInclusive::end]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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", "::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"] - - ["lang:core", "::and", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:core", "::as_mut", "Argument[self].Reference.Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::as_ref", "Argument[self].Reference.Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)].Reference", "value", "dfc-generated"] - - ["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"] - - ["lang:core", "::expect", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::expect_err", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::flatten", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::flatten", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::inspect", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::inspect_err", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::into_err", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::into_ok", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::is_err_and", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::is_err_and", "Argument[self].Field[crate::result::Result::Err(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::is_ok_and", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::is_ok_and", "Argument[self].Field[crate::result::Result::Ok(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["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_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"] - - ["lang:core", "::map_err", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["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::result::Result::Ok(0)]", "Argument[1].Parameter[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::result::Result::Err(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::map_or_else", "Argument[self].Field[crate::result::Result::Ok(0)]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::ok", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::or", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["lang:core", "::or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::or_else", "Argument[self].Field[crate::result::Result::Err(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::or_else", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["lang:core", "::transpose", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::transpose", "Argument[self].Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["lang:core", "::unwrap", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::unwrap_err", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::unwrap_err_unchecked", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::unwrap_or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:core", "::nth", "Argument[self].Field[crate::slice::iter::ArrayChunks::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["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"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::ChunkBy::predicate]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::ChunkByMut::slice]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::ChunkByMut::predicate]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::Chunks::chunk_size]", "ReturnValue.Field[crate::slice::iter::Chunks::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::Chunks::v]", "ReturnValue.Field[crate::slice::iter::Chunks::v]", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[crate::slice::iter::Chunks::v].Element", "Argument[self].Field[crate::slice::iter::Chunks::v].Reference", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[crate::slice::iter::Chunks::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::last", "Argument[self].Field[crate::slice::iter::Chunks::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::slice::iter::Chunks::v].Element", "Argument[self].Field[crate::slice::iter::Chunks::v].Reference", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::slice::iter::Chunks::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::Chunks::v]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::Chunks::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::ChunksExact::chunk_size]", "ReturnValue.Field[crate::slice::iter::ChunksExact::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::ChunksExact::rem]", "ReturnValue.Field[crate::slice::iter::ChunksExact::rem]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::ChunksExact::v]", "ReturnValue.Field[crate::slice::iter::ChunksExact::v]", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[crate::slice::iter::ChunksExact::v].Element", "Argument[self].Field[crate::slice::iter::ChunksExact::v].Reference", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[crate::slice::iter::ChunksExact::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::ChunksExact::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "::remainder", "Argument[self].Field[crate::slice::iter::ChunksExact::rem]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::into_remainder", "Argument[self].Field[crate::slice::iter::ChunksExactMut::rem]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::ChunksExactMut::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::ChunksMut::v]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::ChunksMut::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::slice::iter::GenericSplitN::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::size_hint", "Argument[self].Field[crate::slice::iter::GenericSplitN::count]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::Iter::_marker]", "ReturnValue.Field[crate::slice::iter::Iter::_marker]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::Iter::end_or_len]", "ReturnValue.Field[crate::slice::iter::Iter::end_or_len]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::Iter::ptr]", "ReturnValue.Field[crate::slice::iter::Iter::ptr]", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::RChunks::chunk_size]", "ReturnValue.Field[crate::slice::iter::RChunks::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::RChunks::v]", "ReturnValue.Field[crate::slice::iter::RChunks::v]", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[crate::slice::iter::RChunks::v].Element", "Argument[self].Field[crate::slice::iter::RChunks::v].Reference", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[crate::slice::iter::RChunks::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::last", "Argument[self].Field[crate::slice::iter::RChunks::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::slice::iter::RChunks::v].Element", "Argument[self].Field[crate::slice::iter::RChunks::v].Reference", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::slice::iter::RChunks::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RChunks::v]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::RChunks::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::RChunksExact::chunk_size]", "ReturnValue.Field[crate::slice::iter::RChunksExact::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::RChunksExact::rem]", "ReturnValue.Field[crate::slice::iter::RChunksExact::rem]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::RChunksExact::v]", "ReturnValue.Field[crate::slice::iter::RChunksExact::v]", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[crate::slice::iter::RChunksExact::v].Element", "Argument[self].Field[crate::slice::iter::RChunksExact::v].Reference", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[crate::slice::iter::RChunksExact::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::RChunksExact::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "::remainder", "Argument[self].Field[crate::slice::iter::RChunksExact::rem]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::into_remainder", "Argument[self].Field[crate::slice::iter::RChunksExactMut::rem]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::RChunksExactMut::chunk_size]", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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", "::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"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::Split::pred]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::slice::iter::SplitInclusive::v].Element", "Argument[self].Field[crate::slice::iter::SplitInclusive::v].Reference", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::slice::iter::SplitInclusive::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::slice::iter::SplitInclusive::v].Element", "Argument[self].Field[crate::slice::iter::SplitInclusive::v].Reference", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::slice::iter::SplitInclusive::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::SplitInclusive::v]", "value", "dfc-generated"] - - ["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", "::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", "::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"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::Windows::v]", "ReturnValue.Field[crate::slice::iter::Windows::v]", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::slice::iter::Windows::v].Element", "Argument[self].Field[crate::slice::iter::Windows::v].Reference", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::slice::iter::Windows::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[crate::slice::iter::Windows::v].Element", "Argument[self].Field[crate::slice::iter::Windows::v].Reference", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[crate::slice::iter::Windows::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::last", "Argument[self].Field[crate::slice::iter::Windows::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::slice::iter::Windows::v].Element", "Argument[self].Field[crate::slice::iter::Windows::v].Reference", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::slice::iter::Windows::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::slice::iter::Windows::v].Element", "Argument[self].Field[crate::slice::iter::Windows::v].Reference", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::slice::iter::Windows::v].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["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", "::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]", "ReturnValue", "taint", "df-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"] - - ["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"] - - ["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"] - - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::invalid", "Argument[self].Field[crate::str::lossy::Utf8Chunk::invalid]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::valid", "Argument[self].Field[crate::str::lossy::Utf8Chunk::valid]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::debug", "Argument[self].Field[crate::str::lossy::Utf8Chunks::source]", "ReturnValue.Field[crate::str::lossy::Debug(0)]", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_match_back", "Argument[self].Field[crate::str::pattern::CharSearcher::finger]", "Argument[self].Field[crate::str::pattern::CharSearcher::finger_back]", "value", "dfc-generated"] - - ["lang:core", "::next_match_back", "Argument[self].Field[crate::str::pattern::CharSearcher::finger_back]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] - - ["lang:core", "::haystack", "Argument[self].Field[crate::str::pattern::CharSearcher::haystack]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_match", "Argument[self].Field[crate::str::pattern::CharSearcher::finger]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[1]", "value", "dfc-generated"] - - ["lang:core", "::next_match", "Argument[self].Field[crate::str::pattern::CharSearcher::finger_back]", "Argument[self].Field[crate::str::pattern::CharSearcher::finger]", "value", "dfc-generated"] - - ["lang:core", "::matching", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] - - ["lang:core", "::matching", "Argument[1]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[1]", "value", "dfc-generated"] - - ["lang:core", "::into_searcher", "Argument[0]", "ReturnValue.Field[crate::str::pattern::MultiCharEqSearcher::haystack]", "value", "dfc-generated"] - - ["lang:core", "::into_searcher", "Argument[self].Field[0]", "ReturnValue.Field[crate::str::pattern::MultiCharEqSearcher::char_eq]", "value", "dfc-generated"] - - ["lang:core", "::into_searcher", "Argument[self].Field[crate::str::pattern::MultiCharEqPattern(0)]", "ReturnValue.Field[crate::str::pattern::MultiCharEqSearcher::char_eq]", "value", "dfc-generated"] - - ["lang:core", "::haystack", "Argument[self].Field[crate::str::pattern::MultiCharEqSearcher::haystack]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::matching", "Argument[0]", "ReturnValue.Field[crate::str::pattern::SearchStep::Match(0)]", "value", "dfc-generated"] - - ["lang:core", "::matching", "Argument[1]", "ReturnValue.Field[crate::str::pattern::SearchStep::Match(1)]", "value", "dfc-generated"] - - ["lang:core", "::rejecting", "Argument[0]", "ReturnValue.Field[crate::str::pattern::SearchStep::Reject(0)]", "value", "dfc-generated"] - - ["lang:core", "::rejecting", "Argument[1]", "ReturnValue.Field[crate::str::pattern::SearchStep::Reject(1)]", "value", "dfc-generated"] - - ["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_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::new", "Argument[0]", "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_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", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-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", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-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", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-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", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-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", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-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", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-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", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-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", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-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", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-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", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-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", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-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", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-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", "::get_mut", "Argument[self].Field[crate::sync::exclusive::Exclusive::inner]", "ReturnValue.Reference", "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"] - - ["lang:core", "::branch", "Argument[self].Field[crate::task::poll::Poll::Ready(0)].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::task::poll::Poll::Ready(0)].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Continue(0)].Field[crate::task::poll::Poll::Ready(0)]", "value", "dfc-generated"] - - ["lang:core", "::async_gen_ready", "Argument[0]", "ReturnValue.Field[crate::task::poll::Poll::Ready(0)].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::map", "Argument[0].ReturnValue", "ReturnValue.Field[crate::task::poll::Poll::Ready(0)]", "value", "dfc-generated"] - - ["lang:core", "::map", "Argument[self].Field[crate::task::poll::Poll::Ready(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::map_err", "Argument[0].ReturnValue", "ReturnValue.Field[crate::task::poll::Poll::Ready(0)].Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::map_err", "Argument[self].Field[crate::task::poll::Poll::Ready(0)].Field[crate::result::Result::Err(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::map_err", "Argument[self].Field[crate::task::poll::Poll::Ready(0)].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::task::poll::Poll::Ready(0)].Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["lang:core", "::map_ok", "Argument[0].ReturnValue", "ReturnValue.Field[crate::task::poll::Poll::Ready(0)].Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["lang:core", "::map_ok", "Argument[self].Field[crate::task::poll::Poll::Ready(0)].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::task::poll::Poll::Ready(0)].Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:core", "::map_ok", "Argument[self].Field[crate::task::poll::Poll::Ready(0)].Field[crate::result::Result::Ok(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "::from_waker", "Argument[0]", "ReturnValue.Field[crate::task::wake::Context::waker]", "value", "dfc-generated"] - - ["lang:core", "::local_waker", "Argument[self].Field[crate::task::wake::Context::local_waker]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::waker", "Argument[self].Field[crate::task::wake::Context::waker]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::build", "Argument[self].Field[crate::task::wake::ContextBuilder::ext]", "ReturnValue.Field[crate::task::wake::Context::ext].Field[crate::panic::unwind_safe::AssertUnwindSafe(0)]", "value", "dfc-generated"] - - ["lang:core", "::build", "Argument[self].Field[crate::task::wake::ContextBuilder::local_waker]", "ReturnValue.Field[crate::task::wake::Context::local_waker]", "value", "dfc-generated"] - - ["lang:core", "::build", "Argument[self].Field[crate::task::wake::ContextBuilder::waker]", "ReturnValue.Field[crate::task::wake::Context::waker]", "value", "dfc-generated"] - - ["lang:core", "::ext", "Argument[0]", "ReturnValue.Field[crate::task::wake::ContextBuilder::ext].Field[crate::task::wake::ExtData::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0].Field[crate::task::wake::Context::local_waker]", "ReturnValue.Field[crate::task::wake::ContextBuilder::local_waker]", "value", "dfc-generated"] - - ["lang:core", "::from", "Argument[0].Field[crate::task::wake::Context::waker]", "ReturnValue.Field[crate::task::wake::ContextBuilder::waker]", "value", "dfc-generated"] - - ["lang:core", "::from_waker", "Argument[0]", "ReturnValue.Field[crate::task::wake::ContextBuilder::waker]", "value", "dfc-generated"] - - ["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"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::task::wake::LocalWaker::waker].Field[crate::task::wake::RawWaker::vtable]", "value", "dfc-generated"] - - ["lang:core", "::vtable", "Argument[self].Field[crate::task::wake::LocalWaker::waker].Field[crate::task::wake::RawWaker::vtable]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::task::wake::RawWaker::data]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::task::wake::RawWaker::vtable]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::task::wake::RawWakerVTable::clone]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::task::wake::RawWakerVTable::wake]", "value", "dfc-generated"] - - ["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", "::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", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::sub_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::as_micros", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::as_millis", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::as_millis_f32", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::as_millis_f64", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::as_nanos", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::as_secs", "Argument[self].Field[crate::time::Duration::secs]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::as_secs_f32", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::as_secs_f64", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_duration_f32", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_duration_f32", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_duration_f64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_duration_f64", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_days", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_hours", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_micros", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_millis", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_mins", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_nanos", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::from_secs", "Argument[0]", "ReturnValue.Field[crate::time::Duration::secs]", "value", "dfc-generated"] - - ["lang:core", "::from_weeks", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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"] - - ["lang:core", "::downcast_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sources", "Argument[self]", "ReturnValue.Field[crate::error::Source::current].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", "::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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[self]", "ReturnValue", "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", "::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::clamp", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::clamp", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::clamp", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::maximum", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::maximum", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::minimum", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::minimum", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_down", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_up", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::recip", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[self]", "ReturnValue", "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", "::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::clamp", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::clamp", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::clamp", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::maximum", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::maximum", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::minimum", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::minimum", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_down", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_up", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::recip", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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"] - - ["lang:core", "::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[self]", "ReturnValue", "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", "::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::clamp", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::clamp", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::clamp", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::maximum", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::maximum", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::minimum", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::minimum", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_down", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_up", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::recip", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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"] - - ["lang:core", "::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[self]", "ReturnValue", "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", "::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::clamp", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::clamp", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::clamp", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::maximum", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::maximum", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::minimum", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::minimum", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_down", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_up", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::recip", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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", "::try_from", "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"] - - ["lang:core", "::to_u8", "Argument[self]", "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", "::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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[self]", "ReturnValue", "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", "::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::cast_unsigned", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_abs", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::checked_ilog10", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::overflowing_neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::saturating_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::strict_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::wrapping_abs", "Argument[self]", "ReturnValue", "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", "::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"] - - ["lang:core", "::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[self]", "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", "::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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[self]", "ReturnValue", "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", "::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::cast_unsigned", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_abs", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::checked_ilog10", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::overflowing_neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::saturating_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::strict_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::wrapping_abs", "Argument[self]", "ReturnValue", "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", "::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"] - - ["lang:core", "::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[self]", "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", "::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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[self]", "ReturnValue", "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", "::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::cast_unsigned", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_abs", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::checked_ilog10", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::overflowing_neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::saturating_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::strict_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::wrapping_abs", "Argument[self]", "ReturnValue", "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", "::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"] - - ["lang:core", "::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[self]", "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", "::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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[self]", "ReturnValue", "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", "::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::cast_unsigned", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_abs", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::checked_ilog10", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::overflowing_neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::saturating_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::strict_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::wrapping_abs", "Argument[self]", "ReturnValue", "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", "::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"] - - ["lang:core", "::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[self]", "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", "::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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[self]", "ReturnValue", "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", "::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::cast_unsigned", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_abs", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::checked_ilog10", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::overflowing_neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::saturating_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::strict_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::wrapping_abs", "Argument[self]", "ReturnValue", "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", "::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"] - - ["lang:core", "::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[self]", "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", "::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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[self]", "ReturnValue", "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", "::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::cast_unsigned", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_abs", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::checked_ilog10", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["lang:core", "::overflowing_neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::saturating_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::strict_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::wrapping_abs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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"] - - ["lang:core", "::to_u8", "Argument[self]", "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", "::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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "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", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs_diff", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs_diff", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::cast_signed", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem_euclid", "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", "::try_from", "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"] - - ["lang:core", "::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[self]", "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", "::steps_between", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::steps_between", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::full_div_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::full_div_rem", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::full_div_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::full_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "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", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs_diff", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs_diff", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::cast_signed", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem_euclid", "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", "::try_from", "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"] - - ["lang:core", "::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[self]", "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", "::steps_between", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::steps_between", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::full_div_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::full_div_rem", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::full_div_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::full_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "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", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs_diff", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs_diff", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::cast_signed", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem_euclid", "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", "::try_from", "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"] - - ["lang:core", "::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[self]", "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", "::steps_between", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::steps_between", "Argument[1]", "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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "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", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs_diff", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs_diff", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::cast_signed", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem_euclid", "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", "::try_from", "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"] - - ["lang:core", "::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[self]", "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", "::steps_between", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::steps_between", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::full_div_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::full_div_rem", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::full_div_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::full_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "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", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs_diff", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs_diff", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::ascii_change_case_unchecked", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::cast_signed", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::to_ascii_lowercase", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::to_ascii_uppercase", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem_euclid", "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", "::try_from", "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"] - - ["lang:core", "::to_u8", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::carrying_mul_add", "Argument[self]", "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", "::steps_between", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::steps_between", "Argument[1]", "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"] - - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::mul", "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", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::index", "Argument[0].Reference.Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::index_mut", "Argument[0].Reference.Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::abs_diff", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::abs_diff", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::cast_signed", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::checked_next_multiple_of", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::div_ceil", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_ceil", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::overflowing_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::overflowing_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::pow", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::repeat_u16", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::strict_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::wrapping_rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::array::drain::drain_array_with", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::char::convert::from_digit", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::char::from_digit", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::cmp::max", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::max", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::max_by", "Argument[0]", "Argument[2].Parameter[1].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::max_by", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::max_by", "Argument[1]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::max_by", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::max_by_key", "Argument[0]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::max_by_key", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::max_by_key", "Argument[1]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::max_by_key", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::min", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::min", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::min_by", "Argument[0]", "Argument[2].Parameter[1].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::min_by", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::min_by", "Argument[1]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::min_by", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::min_by_key", "Argument[0]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::min_by_key", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::min_by_key", "Argument[1]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::min_by_key", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::minmax", "Argument[0]", "ReturnValue.Element", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::minmax", "Argument[1]", "ReturnValue.Element", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::minmax_by", "Argument[0]", "Argument[2].Parameter[1].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::minmax_by", "Argument[0]", "ReturnValue.Element", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::minmax_by", "Argument[1]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::minmax_by", "Argument[1]", "ReturnValue.Element", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::minmax_by_key", "Argument[0]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::minmax_by_key", "Argument[0]", "ReturnValue.Element", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::minmax_by_key", "Argument[1]", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::cmp::minmax_by_key", "Argument[1]", "ReturnValue.Element", "value", "dfc-generated"] - - ["lang:core", "crate::contracts::build_check_ensures", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::convert::identity", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::fmt::builders::debug_list_new", "Argument[0]", "ReturnValue.Field[crate::fmt::builders::DebugList::inner].Field[crate::fmt::builders::DebugInner::fmt]", "value", "dfc-generated"] - - ["lang:core", "crate::fmt::builders::debug_map_new", "Argument[0]", "ReturnValue.Field[crate::fmt::builders::DebugMap::fmt]", "value", "dfc-generated"] - - ["lang:core", "crate::fmt::builders::debug_set_new", "Argument[0]", "ReturnValue.Field[crate::fmt::builders::DebugSet::inner].Field[crate::fmt::builders::DebugInner::fmt]", "value", "dfc-generated"] - - ["lang:core", "crate::fmt::builders::debug_struct_new", "Argument[0]", "ReturnValue.Field[crate::fmt::builders::DebugStruct::fmt]", "value", "dfc-generated"] - - ["lang:core", "crate::fmt::builders::debug_tuple_new", "Argument[0]", "ReturnValue.Field[crate::fmt::builders::DebugTuple::fmt]", "value", "dfc-generated"] - - ["lang:core", "crate::fmt::builders::from_fn", "Argument[0]", "ReturnValue.Field[crate::fmt::builders::FromFn(0)]", "value", "dfc-generated"] - - ["lang:core", "crate::future::poll_fn::poll_fn", "Argument[0]", "ReturnValue.Field[crate::future::poll_fn::PollFn::f]", "value", "dfc-generated"] - - ["lang:core", "crate::future::ready::ready", "Argument[0]", "ReturnValue.Field[crate::future::ready::Ready(0)].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "crate::hint::must_use", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::intrinsics::contract_check_ensures", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["lang:core", "crate::intrinsics::select_unpredictable", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::intrinsics::select_unpredictable", "Argument[2]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::iter::adapters::try_process", "Argument[0]", "Argument[1]", "taint", "df-generated"] - - ["lang:core", "crate::iter::sources::from_coroutine::from_coroutine", "Argument[0]", "ReturnValue.Field[crate::iter::sources::from_coroutine::FromCoroutine(0)]", "value", "dfc-generated"] - - ["lang:core", "crate::iter::sources::from_fn::from_fn", "Argument[0]", "ReturnValue.Field[crate::iter::sources::from_fn::FromFn(0)]", "value", "dfc-generated"] - - ["lang:core", "crate::iter::sources::once_with::once_with", "Argument[0]", "ReturnValue.Field[crate::iter::sources::once_with::OnceWith::make].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "crate::iter::sources::repeat::repeat", "Argument[0]", "ReturnValue.Field[crate::iter::sources::repeat::Repeat::element]", "value", "dfc-generated"] - - ["lang:core", "crate::iter::sources::repeat_n::repeat_n", "Argument[1]", "ReturnValue.Field[crate::iter::sources::repeat_n::RepeatN::count]", "value", "dfc-generated"] - - ["lang:core", "crate::iter::sources::repeat_with::repeat_with", "Argument[0]", "ReturnValue.Field[crate::iter::sources::repeat_with::RepeatWith::repeater]", "value", "dfc-generated"] - - ["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"] - - ["lang:core", "crate::num::flt2dec::strategy::dragon::format_shortest", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::num::flt2dec::strategy::dragon::mul_pow10", "Argument[0].Field[crate::num::bignum::Big32x40::base].Element", "ReturnValue.Field[crate::num::bignum::Big32x40::base].Element", "value", "dfc-generated"] - - ["lang:core", "crate::num::flt2dec::strategy::dragon::mul_pow10", "Argument[0].Field[crate::num::bignum::Big32x40::size]", "ReturnValue.Field[crate::num::bignum::Big32x40::size]", "value", "dfc-generated"] - - ["lang:core", "crate::num::flt2dec::strategy::dragon::mul_pow10", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::num::flt2dec::strategy::grisu::format_exact", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::num::flt2dec::strategy::grisu::format_shortest", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::num::flt2dec::to_exact_exp_str", "Argument[5].Element", "Argument[0].Parameter[1].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::num::flt2dec::to_exact_fixed_str", "Argument[4].Element", "Argument[0].Parameter[1].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::num::flt2dec::to_shortest_exp_str", "Argument[5]", "Argument[0].Parameter[1]", "value", "dfc-generated"] - - ["lang:core", "crate::num::flt2dec::to_shortest_str", "Argument[4]", "Argument[0].Parameter[1]", "value", "dfc-generated"] - - ["lang:core", "crate::num::int_log10::i128", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::num::int_log10::i16", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::num::int_log10::i32", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::num::int_log10::i64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::num::int_log10::i8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::num::int_log10::u128", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::num::int_log10::u16", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::num::int_log10::u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::num::int_log10::u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::num::int_log10::u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "crate::num::int_log10::usize", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["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"] - - ["lang:core", "crate::slice::index::try_range", "Argument[1].Field[crate::ops::range::RangeTo::end]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::ops::range::Range::end]", "value", "dfc-generated"] - - ["lang:core", "crate::slice::sort::shared::find_existing_run", "Argument[1].ReturnValue", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["lang:core", "crate::slice::sort::shared::smallsort::sort4_stable", "Argument[0].Reference", "Argument[2].Parameter[1].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::slice::sort::stable::drift::sort", "Argument[0].Element", "Argument[3].Parameter[1].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::slice::sort::stable::quicksort::quicksort", "Argument[0].Element", "Argument[4].Parameter[1].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::slice::sort::stable::sort", "Argument[0].Element", "Argument[1].Parameter[1].Reference", "value", "dfc-generated"] - - ["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"] 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 deleted file mode 100644 index 8f45f5773b43..000000000000 --- a/rust/ql/lib/ext/generated/rust/lang-proc_macro.model.yml +++ /dev/null @@ -1,120 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["lang:proc_macro", "<&[u8] as crate::bridge::Mark>::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "<&[u8] as crate::bridge::Unmark>::unmark", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "<&[u8] as crate::bridge::rpc::DecodeMut>::decode", "Argument[0].Element", "Argument[0].Reference.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "<&[u8] as crate::bridge::rpc::DecodeMut>::decode", "Argument[0].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "<&crate::bridge::Marked as crate::bridge::Unmark>::unmark", "Argument[self].Field[crate::bridge::Marked::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "<&crate::bridge::Marked as crate::bridge::rpc::Decode>::decode", "Argument[1].Field[crate::bridge::server::HandleStore::FreeFunctions].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "<&crate::bridge::Marked as crate::bridge::rpc::Decode>::decode", "Argument[1].Field[crate::bridge::server::HandleStore::SourceFile].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "<&crate::bridge::Marked as crate::bridge::rpc::Decode>::decode", "Argument[1].Field[crate::bridge::server::HandleStore::TokenStream].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "<&mut crate::bridge::Marked as crate::bridge::Unmark>::unmark", "Argument[self].Field[crate::bridge::Marked::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "<&mut crate::bridge::Marked as crate::bridge::rpc::DecodeMut>::decode", "Argument[1].Field[crate::bridge::server::HandleStore::FreeFunctions].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "<&mut crate::bridge::Marked as crate::bridge::rpc::DecodeMut>::decode", "Argument[1].Field[crate::bridge::server::HandleStore::SourceFile].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "<&mut crate::bridge::Marked as crate::bridge::rpc::DecodeMut>::decode", "Argument[1].Field[crate::bridge::server::HandleStore::TokenStream].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "<&str as crate::bridge::Mark>::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "<&str as crate::bridge::Unmark>::unmark", "Argument[self]", "ReturnValue", "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", "::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::unmark", "Argument[self]", "ReturnValue", "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", "::delimiter", "Argument[self].Field[0].Field[crate::bridge::Group::delimiter]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::delimiter", "Argument[self].Field[crate::Group(0)].Field[crate::bridge::Group::delimiter]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::new", "Argument[0]", "ReturnValue.Field[crate::Group(0)].Field[crate::bridge::Group::delimiter]", "value", "dfc-generated"] - - ["lang:proc_macro", "::new", "Argument[1].Field[0]", "ReturnValue.Field[crate::Group(0)].Field[crate::bridge::Group::stream]", "value", "dfc-generated"] - - ["lang:proc_macro", "::new", "Argument[1].Field[crate::TokenStream(0)]", "ReturnValue.Field[crate::Group(0)].Field[crate::bridge::Group::stream]", "value", "dfc-generated"] - - ["lang:proc_macro", "::stream", "Argument[self].Field[0].Field[crate::bridge::Group::stream]", "ReturnValue.Field[crate::TokenStream(0)]", "value", "dfc-generated"] - - ["lang:proc_macro", "::stream", "Argument[self].Field[crate::Group(0)].Field[crate::bridge::Group::stream]", "ReturnValue.Field[crate::TokenStream(0)]", "value", "dfc-generated"] - - ["lang:proc_macro", "::new", "Argument[1].Field[0]", "ReturnValue.Field[crate::Ident(0)].Field[crate::bridge::Ident::span]", "value", "dfc-generated"] - - ["lang:proc_macro", "::new", "Argument[1].Field[crate::Span(0)]", "ReturnValue.Field[crate::Ident(0)].Field[crate::bridge::Ident::span]", "value", "dfc-generated"] - - ["lang:proc_macro", "::new_raw", "Argument[1].Field[0]", "ReturnValue.Field[crate::Ident(0)].Field[crate::bridge::Ident::span]", "value", "dfc-generated"] - - ["lang:proc_macro", "::new_raw", "Argument[1].Field[crate::Span(0)]", "ReturnValue.Field[crate::Ident(0)].Field[crate::bridge::Ident::span]", "value", "dfc-generated"] - - ["lang:proc_macro", "::set_span", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:proc_macro", "::span", "Argument[self].Field[0].Field[crate::bridge::Ident::span]", "ReturnValue.Field[crate::Span(0)]", "value", "dfc-generated"] - - ["lang:proc_macro", "::span", "Argument[self].Field[crate::Ident(0)].Field[crate::bridge::Ident::span]", "ReturnValue.Field[crate::Span(0)]", "value", "dfc-generated"] - - ["lang:proc_macro", "::set_span", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:proc_macro", "::span", "Argument[self].Field[0].Field[crate::bridge::Literal::span]", "ReturnValue.Field[crate::Span(0)]", "value", "dfc-generated"] - - ["lang:proc_macro", "::span", "Argument[self].Field[crate::Literal(0)].Field[crate::bridge::Literal::span]", "ReturnValue.Field[crate::Span(0)]", "value", "dfc-generated"] - - ["lang:proc_macro", "::as_char", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:proc_macro", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:proc_macro", "::set_span", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:proc_macro", "::span", "Argument[self].Field[0].Field[crate::bridge::Punct::span]", "ReturnValue.Field[crate::Span(0)]", "value", "dfc-generated"] - - ["lang:proc_macro", "::span", "Argument[self].Field[crate::Punct(0)].Field[crate::bridge::Punct::span]", "ReturnValue.Field[crate::Span(0)]", "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", "::into_token_stream", "Argument[self]", "ReturnValue", "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_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", "::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::unmark", "Argument[self]", "ReturnValue", "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", "::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"] - - ["lang:proc_macro", "::custom_derive", "Argument[0]", "ReturnValue.Field[crate::bridge::client::ProcMacro::CustomDerive::trait_name]", "value", "dfc-generated"] - - ["lang:proc_macro", "::custom_derive", "Argument[1]", "ReturnValue.Field[crate::bridge::client::ProcMacro::CustomDerive::attributes]", "value", "dfc-generated"] - - ["lang:proc_macro", "::name", "Argument[self].Field[crate::bridge::client::ProcMacro::Attr::name]", "ReturnValue", "value", "dfc-generated"] - - ["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"] - - ["lang:proc_macro", "::finish", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:proc_macro", "::copy", "Argument[self].Field[crate::bridge::handle::InternedStore::owned].Element", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::new", "Argument[0]", "ReturnValue.Field[crate::bridge::handle::InternedStore::owned].Field[crate::bridge::handle::OwnedStore::counter]", "value", "dfc-generated"] - - ["lang:proc_macro", "::new", "Argument[0]", "ReturnValue.Field[crate::bridge::handle::OwnedStore::counter]", "value", "dfc-generated"] - - ["lang:proc_macro", "::as_str", "Argument[self].Field[crate::bridge::rpc::PanicMessage::StaticStr(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:proc_macro", "::as_str", "Argument[self].Field[crate::bridge::rpc::PanicMessage::String(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:proc_macro", "::dispatch", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::run_bridge_and_client", "Argument[2].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::new", "Argument[0]", "ReturnValue.Field[crate::bridge::server::MaybeCrossThread::cross_thread]", "value", "dfc-generated"] - - ["lang:proc_macro", "::run_bridge_and_client", "Argument[2].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::next", "Argument[self].Field[0].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:proc_macro", "::next", "Argument[self].Field[crate::diagnostic::Children(0)].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:proc_macro", "::error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::level", "Argument[self].Field[crate::diagnostic::Diagnostic::level]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::message", "Argument[self].Field[crate::diagnostic::Diagnostic::message]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "::new", "Argument[0]", "ReturnValue.Field[crate::diagnostic::Diagnostic::level]", "value", "dfc-generated"] - - ["lang:proc_macro", "::note", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::set_level", "Argument[0]", "Argument[self].Field[crate::diagnostic::Diagnostic::level]", "value", "dfc-generated"] - - ["lang:proc_macro", "::span_error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::span_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::span_note", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::span_warning", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::spanned", "Argument[1]", "ReturnValue.Field[crate::diagnostic::Diagnostic::level]", "value", "dfc-generated"] - - ["lang:proc_macro", "::spans", "Argument[self].Field[crate::diagnostic::Diagnostic::spans]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "::warning", "Argument[self]", "ReturnValue", "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", "::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::unmark", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::into_spans", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::decode", "Argument[0].Element", "Argument[0].Reference.Reference", "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", "::decode", "Argument[0].Element", "Argument[0].Reference.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "::decode", "Argument[0].Element", "ReturnValue", "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", "::decode", "Argument[0].Element", "Argument[0].Reference.Reference", "value", "dfc-generated"] - - ["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"] diff --git a/rust/ql/lib/ext/generated/rust/lang-std.model.yml b/rust/ql/lib/ext/generated/rust/lang-std.model.yml deleted file mode 100644 index 00d31391a4dc..000000000000 --- a/rust/ql/lib/ext/generated/rust/lang-std.model.yml +++ /dev/null @@ -1,627 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["lang:std", "<&[u8] as crate::io::BufRead>::consume", "Argument[self].Element", "Argument[self].Reference.Reference", "value", "dfc-generated"] - - ["lang:std", "<&[u8] as crate::io::BufRead>::fill_buf", "Argument[self].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["lang:std", "<&[u8] as crate::io::Read>::read_buf_exact", "Argument[self].Element", "Argument[self].Reference.Reference", "value", "dfc-generated"] - - ["lang:std", "<&[u8] as crate::io::Read>::read_exact", "Argument[self].Element", "Argument[self].Reference.Reference", "value", "dfc-generated"] - - ["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::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"] - - ["lang:std", "<&crate::os::unix::net::listener::UnixListener as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self]", "ReturnValue.Field[crate::os::unix::net::listener::Incoming::listener]", "value", "dfc-generated"] - - ["lang:std", "<&crate::sync::mpmc::Receiver as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self]", "ReturnValue.Field[crate::sync::mpmc::Iter::rx]", "value", "dfc-generated"] - - ["lang:std", "<&crate::sync::mpsc::Receiver as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self]", "ReturnValue.Field[crate::sync::mpsc::Iter::rx]", "value", "dfc-generated"] - - ["lang:std", "<&mut _ as crate::io::BufRead>::read_line", "Argument[self]", "Argument[0]", "taint", "df-generated"] - - ["lang:std", "<&mut _ as crate::io::BufRead>::read_until", "Argument[self]", "Argument[1]", "taint", "df-generated"] - - ["lang:std", "<&mut _ as crate::io::Read>::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] - - ["lang:std", "<&mut _ as crate::io::Read>::read_exact", "Argument[self]", "Argument[0]", "taint", "df-generated"] - - ["lang:std", "<&mut _ as crate::io::Read>::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - - ["lang:std", "<&mut _ as crate::io::Read>::read_to_string", "Argument[self]", "Argument[0]", "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", "::read", "Argument[self]", "Argument[0]", "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_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", "::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::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"] - - ["lang:std", "::pretty", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::show_backtrace", "Argument[0]", "Argument[self].Field[crate::error::Report::show_backtrace]", "value", "dfc-generated"] - - ["lang:std", "::show_backtrace", "Argument[0]", "ReturnValue.Field[crate::error::Report::show_backtrace]", "value", "dfc-generated"] - - ["lang:std", "::show_backtrace", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_bytes", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[crate::ffi::os_str::OsStr::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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", "::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_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"] - - ["lang:std", "::from_encoded_bytes_unchecked", "Argument[0]", "ReturnValue.Field[crate::ffi::os_str::OsString::inner].Field[crate::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"] - - ["lang:std", "::into_encoded_bytes", "Argument[self].Field[crate::ffi::os_str::OsString::inner].Field[crate::sys::os_str::bytes::Buf::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::mode", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_inner_mut", "Argument[self].Field[crate::fs::DirBuilder::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::recursive", "Argument[0]", "Argument[self].Field[crate::fs::DirBuilder::recursive]", "value", "dfc-generated"] - - ["lang:std", "::recursive", "Argument[0]", "ReturnValue.Field[crate::fs::DirBuilder::recursive]", "value", "dfc-generated"] - - ["lang:std", "::recursive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[crate::fs::DirEntry(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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"] - - ["lang:std", "::set_modified", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[crate::fs::FileType(0)]", "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::fs::Metadata(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::fs::Metadata(0)]", "value", "dfc-generated"] - - ["lang:std", "::custom_flags", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::mode", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[crate::fs::OpenOptions(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::fs::OpenOptions(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::append", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::create", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::create_new", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::read", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::truncate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::write", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::mode", "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::fs::Permissions(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::fs::Permissions(0)]", "value", "dfc-generated"] - - ["lang:std", "::read_until", "Argument[self]", "Argument[1]", "taint", "df-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", "::get_mut", "Argument[self].Field[crate::io::Chain::first]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] - - ["lang:std", "::get_mut", "Argument[self].Field[crate::io::Chain::second]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] - - ["lang:std", "::get_ref", "Argument[self].Field[crate::io::Chain::first]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] - - ["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", "::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", "::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"] - - ["lang:std", "::into_error", "Argument[self].Field[crate::io::buffered::IntoInnerError(1)]", "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::buffered::IntoInnerError(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::into_parts", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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[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", "::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"] - - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::io::buffered::bufreader::BufReader::inner]", "value", "dfc-generated"] - - ["lang:std", "::seek_relative", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:std", "::with_buffer", "Argument[0]", "ReturnValue.Field[crate::io::buffered::bufreader::BufReader::inner]", "value", "dfc-generated"] - - ["lang:std", "::with_buffer", "Argument[1]", "ReturnValue.Field[crate::io::buffered::bufreader::BufReader::buf]", "value", "dfc-generated"] - - ["lang:std", "::with_capacity", "Argument[1]", "ReturnValue.Field[crate::io::buffered::bufreader::BufReader::inner]", "value", "dfc-generated"] - - ["lang:std", "::consume", "Argument[self].Field[crate::io::buffered::bufreader::buffer::Buffer::filled]", "Argument[self].Field[crate::io::buffered::bufreader::buffer::Buffer::pos]", "value", "dfc-generated"] - - ["lang:std", "::filled", "Argument[self].Field[crate::io::buffered::bufreader::buffer::Buffer::filled]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::pos", "Argument[self].Field[crate::io::buffered::bufreader::buffer::Buffer::pos]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::buffer", "Argument[self].Field[crate::io::buffered::bufwriter::BufWriter::buf]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::buffer_mut", "Argument[self].Field[crate::io::buffered::bufwriter::BufWriter::buf]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::get_mut", "Argument[self].Field[crate::io::buffered::bufwriter::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::get_ref", "Argument[self].Field[crate::io::buffered::bufwriter::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::io::buffered::bufwriter::BufWriter::inner]", "value", "dfc-generated"] - - ["lang:std", "::with_buffer", "Argument[0]", "ReturnValue.Field[crate::io::buffered::bufwriter::BufWriter::inner]", "value", "dfc-generated"] - - ["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", "::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_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"] - - ["lang:std", "::seek", "Argument[0].Field[crate::io::SeekFrom::Start(0)]", "Argument[self].Field[crate::io::cursor::Cursor::pos]", "value", "dfc-generated"] - - ["lang:std", "::seek", "Argument[0].Field[crate::io::SeekFrom::Start(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["lang:std", "::seek", "Argument[self].Field[crate::io::cursor::Cursor::pos]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["lang:std", "::stream_position", "Argument[self].Field[crate::io::cursor::Cursor::pos]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["lang:std", "::get_mut", "Argument[self].Field[crate::io::cursor::Cursor::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::get_ref", "Argument[self].Field[crate::io::cursor::Cursor::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::into_inner", "Argument[self].Field[crate::io::cursor::Cursor::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::io::cursor::Cursor::inner]", "value", "dfc-generated"] - - ["lang:std", "::position", "Argument[self].Field[crate::io::cursor::Cursor::pos]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::set_position", "Argument[0]", "Argument[self].Field[crate::io::cursor::Cursor::pos]", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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::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"] - - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::into_inner", "Argument[self].Field[crate::net::tcp::TcpListener(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::incoming", "Argument[self]", "ReturnValue.Field[crate::net::tcp::Incoming::listener]", "value", "dfc-generated"] - - ["lang:std", "::into_incoming", "Argument[self]", "ReturnValue.Field[crate::net::tcp::IntoIncoming::listener]", "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::TcpStream(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::net::tcp::TcpStream(0)]", "value", "dfc-generated"] - - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::into_inner", "Argument[self].Field[crate::net::tcp::TcpStream(0)]", "ReturnValue", "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::udp::UdpSocket(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::net::udp::UdpSocket(0)]", "value", "dfc-generated"] - - ["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_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", "::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", "::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"] - - ["lang:std", "::force_no_backtrace", "Argument[self].Field[crate::panic::PanicHookInfo::force_no_backtrace]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::location", "Argument[self].Field[crate::panic::PanicHookInfo::location]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::panic::PanicHookInfo::location]", "value", "dfc-generated"] - - ["lang:std", "::new", "Argument[1]", "ReturnValue.Field[crate::panic::PanicHookInfo::payload]", "value", "dfc-generated"] - - ["lang:std", "::new", "Argument[2]", "ReturnValue.Field[crate::panic::PanicHookInfo::can_unwind]", "value", "dfc-generated"] - - ["lang:std", "::new", "Argument[3]", "ReturnValue.Field[crate::panic::PanicHookInfo::force_no_backtrace]", "value", "dfc-generated"] - - ["lang:std", "::payload", "Argument[self].Field[crate::panic::PanicHookInfo::payload]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::next", "Argument[self].Field[crate::path::Ancestors::next]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_ref", "Argument[self].Field[crate::path::Component::Normal(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_ref", "Argument[self].Reference.Field[crate::path::Component::Normal(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_os_str", "Argument[self].Field[crate::path::Component::Normal(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::next_back", "Argument[self].Field[crate::path::Components::path].Element", "Argument[self].Field[crate::path::Components::path].Reference", "value", "dfc-generated"] - - ["lang:std", "::next", "Argument[self].Field[crate::path::Components::path].Element", "Argument[self].Field[crate::path::Components::path].Reference", "value", "dfc-generated"] - - ["lang:std", "::as_ref", "Argument[self].Field[crate::path::Path::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::ancestors", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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"] - - ["lang:std", "::from", "Argument[0].Field[crate::path::PathBuf::inner]", "ReturnValue.Field[crate::path::PathBuf::inner]", "value", "dfc-generated"] - - ["lang:std", "::from", "Argument[0]", "ReturnValue.Field[crate::path::PathBuf::inner]", "value", "dfc-generated"] - - ["lang:std", "::from_str", "Argument[0].Field[crate::path::PathBuf::inner].Field[crate::path::PathBuf::inner]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::path::PathBuf::inner]", "value", "dfc-generated"] - - ["lang:std", "::from_str", "Argument[0].Field[crate::path::PathBuf::inner]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::path::PathBuf::inner]", "value", "dfc-generated"] - - ["lang:std", "::from_str", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::path::PathBuf::inner]", "value", "dfc-generated"] - - ["lang:std", "::as_mut_os_string", "Argument[self].Field[crate::path::PathBuf::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::as_path", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:std", "::id", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[crate::process::ChildStderr::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::process::ChildStderr::inner]", "value", "dfc-generated"] - - ["lang:std", "::into_inner", "Argument[self].Field[crate::process::ChildStderr::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[crate::process::ChildStdin::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::process::ChildStdin::inner]", "value", "dfc-generated"] - - ["lang:std", "::into_inner", "Argument[self].Field[crate::process::ChildStdin::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - - ["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", "::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"] - - ["lang:std", "::pre_exec", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::process_group", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::uid", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[crate::process::Command::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::as_inner_mut", "Argument[self].Field[crate::process::Command::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::current_dir", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::env", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::env_clear", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::env_remove", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::envs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::stderr", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::stdin", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::stdout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::report", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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", "::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", "::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"] - - ["lang:std", "::is_leader", "Argument[self].Field[crate::sync::barrier::BarrierWaitResult(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::iter", "Argument[self]", "ReturnValue.Field[crate::sync::mpmc::Iter::rx]", "value", "dfc-generated"] - - ["lang:std", "::try_iter", "Argument[self]", "ReturnValue.Field[crate::sync::mpmc::TryIter::rx]", "value", "dfc-generated"] - - ["lang:std", "::capacity", "Argument[self].Field[crate::sync::mpmc::array::Channel::cap]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::len", "Argument[self].Field[crate::sync::mpmc::array::Channel::cap]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::send", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::mpmc::error::SendTimeoutError::Timeout(0)]", "value", "dfc-generated"] - - ["lang:std", "::try_send", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::mpsc::TrySendError::Full(0)]", "value", "dfc-generated"] - - ["lang:std", "::with_capacity", "Argument[0]", "ReturnValue.Field[crate::sync::mpmc::array::Channel::cap]", "value", "dfc-generated"] - - ["lang:std", "::write", "Argument[1]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:std", "::into", "Argument[self].Field[crate::sync::mpmc::select::Selected::Operation(0)].Field[crate::sync::mpmc::select::Operation(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::deref", "Argument[self].Field[crate::sync::mpmc::utils::CachePadded::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::deref_mut", "Argument[self].Field[crate::sync::mpmc::utils::CachePadded::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::mpmc::utils::CachePadded::value]", "value", "dfc-generated"] - - ["lang:std", "::send", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::mpmc::error::SendTimeoutError::Disconnected(0)]", "value", "dfc-generated"] - - ["lang:std", "::try_send", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::mpsc::TrySendError::Disconnected(0)]", "value", "dfc-generated"] - - ["lang:std", "::try_send", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::mpsc::TrySendError::Full(0)]", "value", "dfc-generated"] - - ["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", "::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", "::from", "Argument[0].Field[crate::sync::mpsc::SendError(0)]", "ReturnValue.Field[crate::sync::mpsc::TrySendError::Disconnected(0)]", "value", "dfc-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", "::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", "::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"] - - ["lang:std", "::wait_timeout_ms", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]", "value", "dfc-generated"] - - ["lang:std", "::wait_timeout_while", "Argument[0].Reference", "Argument[2].Parameter[0].Reference", "value", "dfc-generated"] - - ["lang:std", "::wait_timeout_while", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]", "value", "dfc-generated"] - - ["lang:std", "::wait_while", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - - ["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", "::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", "::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_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", "::try_map", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-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", "::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", "::write", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::poison::rwlock::RwLockWriteGuard::lock]", "value", "dfc-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", "::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"] - - ["lang:std", "::lock", "Argument[self]", "ReturnValue.Field[crate::sync::reentrant_lock::ReentrantLockGuard::lock]", "value", "dfc-generated"] - - ["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", "::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"] - - ["lang:std", "::bind", "Argument[0].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::into_socket", "Argument[self].Field[crate::sys::net::connection::socket::TcpListener::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::socket", "Argument[self].Field[crate::sys::net::connection::socket::TcpListener::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[crate::sys::net::connection::socket::TcpStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::sys::net::connection::socket::TcpStream::inner]", "value", "dfc-generated"] - - ["lang:std", "::connect", "Argument[0].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::connect", "Argument[0].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::into_socket", "Argument[self].Field[crate::sys::net::connection::socket::TcpStream::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::socket", "Argument[self].Field[crate::sys::net::connection::socket::TcpStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::sys::net::connection::socket::UdpSocket::inner]", "value", "dfc-generated"] - - ["lang:std", "::bind", "Argument[0].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::bind", "Argument[0].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::connect", "Argument[0].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::connect", "Argument[0].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::into_socket", "Argument[self].Field[crate::sys::net::connection::socket::UdpSocket::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::socket", "Argument[self].Field[crate::sys::net::connection::socket::UdpSocket::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::net::connection::socket::unix::Socket(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::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", "::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", "::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", "::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"] - - ["lang:std", "::sub_timespec", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sys::pal::unix::weak::DlsymWeak::name]", "value", "dfc-generated"] - - ["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", "::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", "::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"] - - ["lang:std", "::to_lead_surrogate", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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", "::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"] - - ["lang:std", "::ascii_byte_at", "Argument[self].Field[crate::sys_common::wtf8::Wtf8::bytes].Element", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::from_bytes_unchecked", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::from_bytes_unchecked", "Argument[0]", "ReturnValue.Field[crate::sys_common::wtf8::Wtf8Buf::bytes]", "value", "dfc-generated"] - - ["lang:std", "::into_bytes", "Argument[self].Field[crate::sys_common::wtf8::Wtf8Buf::bytes]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::into_string", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:std", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::name", "Argument[0]", "Argument[self].Field[crate::thread::Builder::name].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::name", "Argument[0]", "ReturnValue.Field[crate::thread::Builder::name].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::no_hooks", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::stack_size", "Argument[0]", "Argument[self].Field[crate::thread::Builder::stack_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::stack_size", "Argument[0]", "ReturnValue.Field[crate::thread::Builder::stack_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::stack_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[0].Field[crate::thread::JoinInner::native]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[crate::thread::JoinHandle(0)].Field[crate::thread::JoinInner::native]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::into_inner", "Argument[self].Field[0].Field[crate::thread::JoinInner::native]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::into_inner", "Argument[self].Field[crate::thread::JoinHandle(0)].Field[crate::thread::JoinInner::native]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::thread", "Argument[self].Field[0].Field[crate::thread::JoinInner::thread]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::thread", "Argument[self].Field[crate::thread::JoinHandle(0)].Field[crate::thread::JoinInner::thread]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::as_u64", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_u64", "Argument[self].Field[crate::thread::ThreadId(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::thread::local::LocalKey::inner]", "value", "dfc-generated"] - - ["lang:std", "::try_with", "Argument[0].ReturnValue", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["lang:std", "::with", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::with_borrow", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::with_borrow_mut", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::thread", "Argument[self].Field[0].Field[crate::thread::JoinInner::thread]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::thread", "Argument[self].Field[crate::thread::scoped::ScopedJoinHandle(0)].Field[crate::thread::JoinInner::thread]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::as_cstr", "Argument[self].Field[crate::thread::thread_name_string::ThreadNameString::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::add_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:std", "::sub_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:std", "::elapsed", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::add_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:std", "::sub_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::time::SystemTime(0)]", "value", "dfc-generated"] - - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::into_inner", "Argument[self].Field[crate::time::SystemTime(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::duration", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::duration", "Argument[self].Field[crate::time::SystemTimeError(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::copy_from", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["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", "::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", "::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", "::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"] - - ["lang:std", "crate::io::default_read_exact", "Argument[0]", "Argument[1]", "taint", "df-generated"] - - ["lang:std", "crate::io::default_read_vectored", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "crate::io::default_write_vectored", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "crate::io::read_to_string", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "crate::io::util::repeat", "Argument[0]", "ReturnValue.Field[crate::io::util::Repeat::byte]", "value", "dfc-generated"] - - ["lang:std", "crate::sync::poison::map_result", "Argument[0]", "Argument[1]", "taint", "df-generated"] - - ["lang:std", "crate::sync::poison::map_result", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "crate::sync::poison::map_result", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "crate::sync::poison::mutex::guard_lock", "Argument[0].Field[crate::sync::poison::mutex::MutexGuard::lock].Field[crate::sync::poison::mutex::Mutex::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "crate::sync::poison::mutex::guard_poison", "Argument[0].Field[crate::sync::poison::mutex::MutexGuard::lock].Field[crate::sync::poison::mutex::Mutex::poison]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "crate::sys::backtrace::__rust_begin_short_backtrace", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "crate::sys::backtrace::__rust_end_short_backtrace", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "crate::sys::pal::common::small_c_string::run_path_with_cstr", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "crate::sys::pal::common::small_c_string::run_with_cstr", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "crate::sys::pal::unix::cvt", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["lang:std", "crate::sys::pal::unix::pipe::read2", "Argument[0]", "Argument[1]", "taint", "df-generated"] - - ["lang:std", "crate::sys::pal::unix::pipe::read2", "Argument[2]", "Argument[3]", "taint", "df-generated"] - - ["lang:std", "crate::sys_common::ignore_notfound", "Argument[0].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:std", "crate::sys_common::mul_div_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "crate::sys_common::mul_div_u64", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "crate::sys_common::mul_div_u64", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["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"] diff --git a/rust/ql/lib/ext/generated/serde.model.yml b/rust/ql/lib/ext/generated/serde.model.yml new file mode 100644 index 000000000000..689467711432 --- /dev/null +++ b/rust/ql/lib/ext/generated/serde.model.yml @@ -0,0 +1,270 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::into_deserializer", "Argument[self]", "ReturnValue.Field[serde::de::value::CowStrDeserializer::value]", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue.Field[serde::de::value::StringDeserializer::value]", "value", "dfc-generated"] + - ["::from", "Argument[self].Field[0]", "ReturnValue.Field[serde::__private::de::BorrowedStrDeserializer::value]", "value", "dfc-generated"] + - ["::from", "Argument[self].Field[0]", "ReturnValue.Field[serde::de::value::BorrowedBytesDeserializer::value]", "value", "dfc-generated"] + - ["::from", "Argument[self].Field[serde::__private::de::Borrowed(0)]", "ReturnValue.Field[serde::__private::de::BorrowedStrDeserializer::value]", "value", "dfc-generated"] + - ["::from", "Argument[self].Field[serde::__private::de::Borrowed(0)]", "ReturnValue.Field[serde::de::value::BorrowedBytesDeserializer::value]", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue.Field[serde::__private::de::content::ContentDeserializer::content]", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Reference.Field[serde::__private::de::content::Content::Str(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::as_str", "Argument[self].Reference.Field[serde::__private::de::content::Content::String(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::__deserialize_content", "Argument[self].Field[serde::__private::de::content::ContentDeserializer::content]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::__private::de::content::ContentDeserializer::content]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::__deserialize_content", "Argument[self].Field[serde::__private::de::content::ContentRefDeserializer::content].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::__private::de::content::ContentRefDeserializer::content]", "value", "dfc-generated"] + - ["::visit_bool", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::Bool(0)]", "value", "dfc-generated"] + - ["::visit_borrowed_bytes", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::Bytes(0)]", "value", "dfc-generated"] + - ["::visit_borrowed_str", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::Str(0)]", "value", "dfc-generated"] + - ["::visit_byte_buf", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::ByteBuf(0)]", "value", "dfc-generated"] + - ["::visit_char", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::Char(0)]", "value", "dfc-generated"] + - ["::visit_f32", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::F32(0)]", "value", "dfc-generated"] + - ["::visit_f64", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::F64(0)]", "value", "dfc-generated"] + - ["::visit_i16", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::I16(0)]", "value", "dfc-generated"] + - ["::visit_i32", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::I32(0)]", "value", "dfc-generated"] + - ["::visit_i64", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::I64(0)]", "value", "dfc-generated"] + - ["::visit_i8", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::I8(0)]", "value", "dfc-generated"] + - ["::visit_string", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::String(0)]", "value", "dfc-generated"] + - ["::visit_u16", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::U16(0)]", "value", "dfc-generated"] + - ["::visit_u32", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::U32(0)]", "value", "dfc-generated"] + - ["::visit_u64", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::U64(0)]", "value", "dfc-generated"] + - ["::visit_u8", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::de::content::Content::U8(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::__private::de::content::EnumDeserializer::variant]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[serde::__private::de::content::EnumDeserializer::value]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::__private::de::content::InternallyTaggedUnitVisitor::type_name]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[serde::__private::de::content::InternallyTaggedUnitVisitor::variant_name]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::__private::de::content::TaggedContentVisitor::tag_name]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[serde::__private::de::content::TaggedContentVisitor::expecting]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::__private::de::content::UntaggedUnitVisitor::type_name]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[serde::__private::de::content::UntaggedUnitVisitor::variant_name]", "value", "dfc-generated"] + - ["::serialize_map", "Argument[self].Field[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::FlatMapSerializeMap(0)]", "value", "dfc-generated"] + - ["::serialize_map", "Argument[self].Field[serde::__private::ser::FlatMapSerializer(0)]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::FlatMapSerializeMap(0)]", "value", "dfc-generated"] + - ["::serialize_struct", "Argument[self].Field[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::FlatMapSerializeStruct(0)]", "value", "dfc-generated"] + - ["::serialize_struct", "Argument[self].Field[serde::__private::ser::FlatMapSerializer(0)]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::FlatMapSerializeStruct(0)]", "value", "dfc-generated"] + - ["::serialize_struct_variant", "Argument[2]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::FlatMapSerializeStructVariantAsMapValue::name]", "value", "dfc-generated"] + - ["::serialize_struct_variant", "Argument[self].Field[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::FlatMapSerializeStructVariantAsMapValue::map]", "value", "dfc-generated"] + - ["::serialize_struct_variant", "Argument[self].Field[serde::__private::ser::FlatMapSerializer(0)]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::FlatMapSerializeStructVariantAsMapValue::map]", "value", "dfc-generated"] + - ["::serialize_tuple_variant", "Argument[self].Field[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::FlatMapSerializeTupleVariantAsMapValue::map]", "value", "dfc-generated"] + - ["::serialize_tuple_variant", "Argument[self].Field[serde::__private::ser::FlatMapSerializer(0)]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::FlatMapSerializeTupleVariantAsMapValue::map]", "value", "dfc-generated"] + - ["::serialize_struct_variant", "Argument[2]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::SerializeStructVariantAsMapValue::name]", "value", "dfc-generated"] + - ["::serialize_tuple_variant", "Argument[2]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::SerializeTupleVariantAsMapValue::name]", "value", "dfc-generated"] + - ["::serialize_bool", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::Bool(0)]", "value", "dfc-generated"] + - ["::serialize_char", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::Char(0)]", "value", "dfc-generated"] + - ["::serialize_f32", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::F32(0)]", "value", "dfc-generated"] + - ["::serialize_f64", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::F64(0)]", "value", "dfc-generated"] + - ["::serialize_i16", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::I16(0)]", "value", "dfc-generated"] + - ["::serialize_i32", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::I32(0)]", "value", "dfc-generated"] + - ["::serialize_i64", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::I64(0)]", "value", "dfc-generated"] + - ["::serialize_i8", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::I8(0)]", "value", "dfc-generated"] + - ["::serialize_newtype_struct", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::NewtypeStruct(0)]", "value", "dfc-generated"] + - ["::serialize_newtype_variant", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::NewtypeVariant(0)]", "value", "dfc-generated"] + - ["::serialize_newtype_variant", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::NewtypeVariant(1)]", "value", "dfc-generated"] + - ["::serialize_newtype_variant", "Argument[2]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::NewtypeVariant(2)]", "value", "dfc-generated"] + - ["::serialize_u16", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::U16(0)]", "value", "dfc-generated"] + - ["::serialize_u32", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::U32(0)]", "value", "dfc-generated"] + - ["::serialize_u64", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::U64(0)]", "value", "dfc-generated"] + - ["::serialize_u8", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::U8(0)]", "value", "dfc-generated"] + - ["::serialize_unit_struct", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::UnitStruct(0)]", "value", "dfc-generated"] + - ["::serialize_unit_variant", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::UnitVariant(0)]", "value", "dfc-generated"] + - ["::serialize_unit_variant", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::UnitVariant(1)]", "value", "dfc-generated"] + - ["::serialize_unit_variant", "Argument[2]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::UnitVariant(2)]", "value", "dfc-generated"] + - ["::end", "Argument[self].Field[serde::__private::ser::content::SerializeMap::entries]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::Map(0)]", "value", "dfc-generated"] + - ["::end", "Argument[self].Field[serde::__private::ser::content::SerializeSeq::elements]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::Seq(0)]", "value", "dfc-generated"] + - ["::end", "Argument[self].Field[serde::__private::ser::content::SerializeStruct::fields]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::Struct(1)]", "value", "dfc-generated"] + - ["::end", "Argument[self].Field[serde::__private::ser::content::SerializeStruct::name]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::Struct(0)]", "value", "dfc-generated"] + - ["::end", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::__private::ser::content::SerializeStructVariantAsMapValue::map]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[serde::__private::ser::content::SerializeStructVariantAsMapValue::name]", "value", "dfc-generated"] + - ["::end", "Argument[self].Field[serde::__private::ser::content::SerializeTuple::elements]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::Tuple(0)]", "value", "dfc-generated"] + - ["::end", "Argument[self].Field[serde::__private::ser::content::SerializeTupleStruct::fields]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::TupleStruct(1)]", "value", "dfc-generated"] + - ["::end", "Argument[self].Field[serde::__private::ser::content::SerializeTupleStruct::name]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[serde::__private::ser::content::Content::TupleStruct(0)]", "value", "dfc-generated"] + - ["::end", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::__private::ser::content::SerializeTupleVariantAsMapValue::map]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[serde::__private::ser::content::SerializeTupleVariantAsMapValue::name]", "value", "dfc-generated"] + - ["::visit_bool", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::visit_borrowed_bytes", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::visit_borrowed_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::visit_char", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::visit_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::visit_string", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::visit_borrowed_str", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::visit_borrowed_str", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::visit_byte_buf", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::visit_string", "Argument[0]", "Argument[self].Field[0].Reference", "value", "dfc-generated"] + - ["::visit_string", "Argument[0]", "Argument[self].Field[serde::de::impls::StringInPlaceVisitor(0)].Reference", "value", "dfc-generated"] + - ["::visit_byte_buf", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::visit_string", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::BoolDeserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::BorrowedBytesDeserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::BorrowedStrDeserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::BytesDeserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::CharDeserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[serde::de::value::CowStrDeserializer::value].Field[alloc::borrow::Cow::Borrowed(0)]", "ReturnValue.Field[serde::de::value::CowStrDeserializer::value].Field[alloc::borrow::Cow::Borrowed(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[serde::de::value::CowStrDeserializer::value].Reference", "ReturnValue.Field[serde::de::value::CowStrDeserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[serde::de::value::CowStrDeserializer::value]", "ReturnValue.Field[serde::de::value::CowStrDeserializer::value]", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::CowStrDeserializer::value]", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::EnumAccessDeserializer::access]", "value", "dfc-generated"] + - ["::description", "Argument[self].Field[serde::de::value::Error::err]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::F32Deserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::F64Deserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::I128Deserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::I16Deserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::I32Deserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::I64Deserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::I8Deserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::IsizeDeserializer::value]", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::MapAccessDeserializer::map]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deserialize_any", "Argument[self].Field[serde::de::value::NeverDeserializer::never]", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::SeqAccessDeserializer::seq]", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::StrDeserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[serde::de::value::StringDeserializer::value].Field[alloc::string::String::vec]", "ReturnValue.Field[serde::de::value::StringDeserializer::value].Field[alloc::string::String::vec]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[serde::de::value::StringDeserializer::value].Reference", "ReturnValue.Field[serde::de::value::StringDeserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[serde::de::value::StringDeserializer::value]", "ReturnValue.Field[serde::de::value::StringDeserializer::value]", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::StringDeserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::U128Deserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::U16Deserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::U32Deserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::U64Deserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::U8Deserializer::value]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::de::value::UsizeDeserializer::value]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[serde::format::Buf::bytes]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[serde_derive::fragment::Fragment::Block(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[serde_derive::fragment::Fragment::Expr(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from_ast", "Argument[1].Field[syn::derive::DeriveInput::ident].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Field[serde_derive::internals::ast::Container::ident]", "value", "dfc-generated"] + - ["::from_ast", "Argument[1].Field[syn::derive::DeriveInput::ident]", "ReturnValue.Field[core::option::Option::Some(0)].Field[serde_derive::internals::ast::Container::ident]", "value", "dfc-generated"] + - ["::from_ast", "Argument[1]", "ReturnValue.Field[core::option::Option::Some(0)].Field[serde_derive::internals::ast::Container::original]", "value", "dfc-generated"] + - ["::get", "Argument[self].Field[serde_derive::internals::attr::Attr::value]", "ReturnValue", "value", "dfc-generated"] + - ["::custom_serde_path", "Argument[self].Field[serde_derive::internals::attr::Container::serde_path].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::de_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::default", "Argument[self].Field[serde_derive::internals::attr::Container::default]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deny_unknown_fields", "Argument[self].Field[serde_derive::internals::attr::Container::deny_unknown_fields]", "ReturnValue", "value", "dfc-generated"] + - ["::expecting", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::identifier", "Argument[self].Field[serde_derive::internals::attr::Container::identifier]", "ReturnValue", "value", "dfc-generated"] + - ["::is_packed", "Argument[self].Field[serde_derive::internals::attr::Container::is_packed]", "ReturnValue", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[serde_derive::internals::attr::Container::name]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::non_exhaustive", "Argument[self].Field[serde_derive::internals::attr::Container::non_exhaustive]", "ReturnValue", "value", "dfc-generated"] + - ["::remote", "Argument[self].Field[serde_derive::internals::attr::Container::remote].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::rename_all_fields_rules", "Argument[self].Field[serde_derive::internals::attr::Container::rename_all_fields_rules]", "ReturnValue", "value", "dfc-generated"] + - ["::rename_all_rules", "Argument[self].Field[serde_derive::internals::attr::Container::rename_all_rules]", "ReturnValue", "value", "dfc-generated"] + - ["::ser_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::tag", "Argument[self].Field[serde_derive::internals::attr::Container::tag]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::transparent", "Argument[self].Field[serde_derive::internals::attr::Container::transparent]", "ReturnValue", "value", "dfc-generated"] + - ["::type_from", "Argument[self].Field[serde_derive::internals::attr::Container::type_from].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::type_into", "Argument[self].Field[serde_derive::internals::attr::Container::type_into].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::type_try_from", "Argument[self].Field[serde_derive::internals::attr::Container::type_try_from].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::aliases", "Argument[self].Field[serde_derive::internals::attr::Field::name].Field[serde_derive::internals::name::MultiName::deserialize_aliases]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrowed_lifetimes", "Argument[self].Field[serde_derive::internals::attr::Field::borrowed_lifetimes]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::de_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::default", "Argument[self].Field[serde_derive::internals::attr::Field::default]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deserialize_with", "Argument[self].Field[serde_derive::internals::attr::Field::deserialize_with].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::flatten", "Argument[self].Field[serde_derive::internals::attr::Field::flatten]", "ReturnValue", "value", "dfc-generated"] + - ["::getter", "Argument[self].Field[serde_derive::internals::attr::Field::getter].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[serde_derive::internals::attr::Field::name]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::ser_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::serialize_with", "Argument[self].Field[serde_derive::internals::attr::Field::serialize_with].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::skip_deserializing", "Argument[self].Field[serde_derive::internals::attr::Field::skip_deserializing]", "ReturnValue", "value", "dfc-generated"] + - ["::skip_serializing", "Argument[self].Field[serde_derive::internals::attr::Field::skip_serializing]", "ReturnValue", "value", "dfc-generated"] + - ["::skip_serializing_if", "Argument[self].Field[serde_derive::internals::attr::Field::skip_serializing_if].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::transparent", "Argument[self].Field[serde_derive::internals::attr::Field::transparent]", "ReturnValue", "value", "dfc-generated"] + - ["::or", "Argument[0].Field[serde_derive::internals::attr::RenameAllRules::deserialize]", "ReturnValue.Field[serde_derive::internals::attr::RenameAllRules::deserialize]", "value", "dfc-generated"] + - ["::or", "Argument[0].Field[serde_derive::internals::attr::RenameAllRules::serialize]", "ReturnValue.Field[serde_derive::internals::attr::RenameAllRules::serialize]", "value", "dfc-generated"] + - ["::or", "Argument[self].Field[serde_derive::internals::attr::RenameAllRules::deserialize]", "ReturnValue.Field[serde_derive::internals::attr::RenameAllRules::deserialize]", "value", "dfc-generated"] + - ["::or", "Argument[self].Field[serde_derive::internals::attr::RenameAllRules::serialize]", "ReturnValue.Field[serde_derive::internals::attr::RenameAllRules::serialize]", "value", "dfc-generated"] + - ["::aliases", "Argument[self].Field[serde_derive::internals::attr::Variant::name].Field[serde_derive::internals::name::MultiName::deserialize_aliases]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::de_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::deserialize_with", "Argument[self].Field[serde_derive::internals::attr::Variant::deserialize_with].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::name", "Argument[self].Field[serde_derive::internals::attr::Variant::name]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::other", "Argument[self].Field[serde_derive::internals::attr::Variant::other]", "ReturnValue", "value", "dfc-generated"] + - ["::rename_all_rules", "Argument[self].Field[serde_derive::internals::attr::Variant::rename_all_rules]", "ReturnValue", "value", "dfc-generated"] + - ["::ser_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::serialize_with", "Argument[self].Field[serde_derive::internals::attr::Variant::serialize_with].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::skip_deserializing", "Argument[self].Field[serde_derive::internals::attr::Variant::skip_deserializing]", "ReturnValue", "value", "dfc-generated"] + - ["::skip_serializing", "Argument[self].Field[serde_derive::internals::attr::Variant::skip_serializing]", "ReturnValue", "value", "dfc-generated"] + - ["::untagged", "Argument[self].Field[serde_derive::internals::attr::Variant::untagged]", "ReturnValue", "value", "dfc-generated"] + - ["::get", "Argument[self].Field[serde_derive::internals::attr::VecAttr::values]", "ReturnValue", "value", "dfc-generated"] + - ["::apply_to_field", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::apply_to_variant", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_str", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[serde_derive::internals::case::ParseError::unknown]", "value", "dfc-generated"] + - ["::or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::or", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deserialize_aliases", "Argument[self].Field[serde_derive::internals::name::MultiName::deserialize_aliases]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deserialize_name", "Argument[self].Field[serde_derive::internals::name::MultiName::deserialize]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_attrs", "Argument[0].Reference", "ReturnValue.Field[serde_derive::internals::name::MultiName::serialize]", "value", "dfc-generated"] + - ["::from_attrs", "Argument[0]", "ReturnValue.Field[serde_derive::internals::name::MultiName::deserialize]", "value", "dfc-generated"] + - ["::from_attrs", "Argument[0]", "ReturnValue.Field[serde_derive::internals::name::MultiName::serialize]", "value", "dfc-generated"] + - ["::from_attrs", "Argument[1].Field[serde_derive::internals::attr::Attr::value].Field[core::option::Option::Some(0)]", "ReturnValue.Field[serde_derive::internals::name::MultiName::serialize]", "value", "dfc-generated"] + - ["::from_attrs", "Argument[2].Field[serde_derive::internals::attr::Attr::value].Field[core::option::Option::Some(0)]", "ReturnValue.Field[serde_derive::internals::name::MultiName::deserialize]", "value", "dfc-generated"] + - ["::serialize_name", "Argument[self].Field[serde_derive::internals::name::MultiName::serialize]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["serde::__private::ser::constrain", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["serde::de::size_hint::cautious", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["serde::de::value::private::map_as_enum", "Argument[0]", "ReturnValue.Field[serde::de::value::private::MapAsEnum::map]", "value", "dfc-generated"] + - ["serde::de::value::private::unit_only", "Argument[0]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["serde_derive::bound::with_bound", "Argument[1].Reference", "ReturnValue", "value", "dfc-generated"] + - ["serde_derive::bound::with_self_bound", "Argument[1].Reference", "ReturnValue", "value", "dfc-generated"] + - ["serde_derive::bound::with_where_predicates", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["serde_derive::bound::with_where_predicates_from_fields", "Argument[1].Reference", "ReturnValue", "value", "dfc-generated"] + - ["serde_derive::bound::with_where_predicates_from_variants", "Argument[1].Reference", "ReturnValue", "value", "dfc-generated"] + - ["serde_derive::internals::ungroup", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::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.model.yml b/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml deleted file mode 100644 index 68cd535dce36..000000000000 --- a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml +++ /dev/null @@ -1,207 +0,0 @@ -# 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/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", "<&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"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::CharDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::from", "Argument[self].Field[0]", "ReturnValue.Field[crate::__private::de::BorrowedStrDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::from", "Argument[self].Field[0]", "ReturnValue.Field[crate::de::value::BorrowedBytesDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::from", "Argument[self].Field[crate::__private::de::Borrowed(0)]", "ReturnValue.Field[crate::__private::de::BorrowedStrDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::from", "Argument[self].Field[crate::__private::de::Borrowed(0)]", "ReturnValue.Field[crate::de::value::BorrowedBytesDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::__private::de::content::ContentDeserializer::content]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::as_str", "Argument[self].Reference.Field[crate::__private::de::content::Content::Str(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::as_str", "Argument[self].Reference.Field[crate::__private::de::content::Content::String(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::__deserialize_content", "Argument[self].Field[crate::__private::de::content::ContentDeserializer::content]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::__private::de::content::ContentDeserializer::content]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::__deserialize_content", "Argument[self].Field[crate::__private::de::content::ContentRefDeserializer::content].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::__private::de::content::ContentRefDeserializer::content]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_bool", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::Bool(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_borrowed_bytes", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::Bytes(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_borrowed_str", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::Str(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_byte_buf", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::ByteBuf(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_char", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::Char(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_f32", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::F32(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_f64", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::F64(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_i16", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::I16(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_i32", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::I32(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_i64", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::I64(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_i8", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::I8(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_string", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::String(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_u16", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::U16(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_u32", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::U32(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_u64", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::U64(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_u8", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::de::content::Content::U8(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::__private::de::content::EnumDeserializer::variant]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[1]", "ReturnValue.Field[crate::__private::de::content::EnumDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::__private::de::content::InternallyTaggedUnitVisitor::type_name]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[1]", "ReturnValue.Field[crate::__private::de::content::InternallyTaggedUnitVisitor::variant_name]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::__private::de::content::TaggedContentVisitor::tag_name]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[1]", "ReturnValue.Field[crate::__private::de::content::TaggedContentVisitor::expecting]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::__private::de::content::UntaggedUnitVisitor::type_name]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[1]", "ReturnValue.Field[crate::__private::de::content::UntaggedUnitVisitor::variant_name]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_map", "Argument[self].Field[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::FlatMapSerializeMap(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_map", "Argument[self].Field[crate::__private::ser::FlatMapSerializer(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::FlatMapSerializeMap(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_struct", "Argument[self].Field[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::FlatMapSerializeStruct(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_struct", "Argument[self].Field[crate::__private::ser::FlatMapSerializer(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::FlatMapSerializeStruct(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_struct_variant", "Argument[2]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::FlatMapSerializeStructVariantAsMapValue::name]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_struct_variant", "Argument[self].Field[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::FlatMapSerializeStructVariantAsMapValue::map]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_struct_variant", "Argument[self].Field[crate::__private::ser::FlatMapSerializer(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::FlatMapSerializeStructVariantAsMapValue::map]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_tuple_variant", "Argument[self].Field[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::FlatMapSerializeTupleVariantAsMapValue::map]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_tuple_variant", "Argument[self].Field[crate::__private::ser::FlatMapSerializer(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::FlatMapSerializeTupleVariantAsMapValue::map]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_struct_variant", "Argument[2]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::SerializeStructVariantAsMapValue::name]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_tuple_variant", "Argument[2]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::SerializeTupleVariantAsMapValue::name]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_bool", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::Bool(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_char", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::Char(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_f32", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::F32(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_f64", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::F64(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_i16", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::I16(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_i32", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::I32(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_i64", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::I64(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_i8", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::I8(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_newtype_struct", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::NewtypeStruct(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_newtype_variant", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::NewtypeVariant(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_newtype_variant", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::NewtypeVariant(1)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_newtype_variant", "Argument[2]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::NewtypeVariant(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_u16", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::U16(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_u32", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::U32(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_u64", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::U64(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_u8", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::U8(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_unit_struct", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::UnitStruct(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_unit_variant", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::UnitVariant(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_unit_variant", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::UnitVariant(1)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_unit_variant", "Argument[2]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::UnitVariant(2)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::end", "Argument[self].Field[crate::__private::ser::content::SerializeMap::entries]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::Map(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::end", "Argument[self].Field[crate::__private::ser::content::SerializeSeq::elements]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::Seq(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::end", "Argument[self].Field[crate::__private::ser::content::SerializeStruct::fields]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::Struct(1)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::end", "Argument[self].Field[crate::__private::ser::content::SerializeStruct::name]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::Struct(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::end", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::__private::ser::content::SerializeStructVariantAsMapValue::map]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[1]", "ReturnValue.Field[crate::__private::ser::content::SerializeStructVariantAsMapValue::name]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::end", "Argument[self].Field[crate::__private::ser::content::SerializeTuple::elements]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::Tuple(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::end", "Argument[self].Field[crate::__private::ser::content::SerializeTupleStruct::fields]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::TupleStruct(1)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::end", "Argument[self].Field[crate::__private::ser::content::SerializeTupleStruct::name]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::__private::ser::content::Content::TupleStruct(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::end", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::__private::ser::content::SerializeTupleVariantAsMapValue::map]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[1]", "ReturnValue.Field[crate::__private::ser::content::SerializeTupleVariantAsMapValue::name]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::CowStrDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_bool", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_borrowed_bytes", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_borrowed_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_char", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_string", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_borrowed_str", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_string", "Argument[0]", "Argument[self].Field[0].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_string", "Argument[0]", "Argument[self].Field[crate::de::impls::StringInPlaceVisitor(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_string", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::BoolDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::BorrowedBytesDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::BorrowedStrDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::BytesDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::CharDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Field[crate::de::value::CowStrDeserializer::value].Reference", "ReturnValue.Field[crate::de::value::CowStrDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::CowStrDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::EnumAccessDeserializer::access]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::description", "Argument[self].Field[crate::de::value::Error::err]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::F32Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::F64Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::I128Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::I16Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::I32Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::I64Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::I8Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::IsizeDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::MapAccessDeserializer::map]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::deserialize_any", "Argument[self].Field[crate::de::value::NeverDeserializer::never]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::SeqAccessDeserializer::seq]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::StrDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Field[crate::de::value::StringDeserializer::value].Reference", "ReturnValue.Field[crate::de::value::StringDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::StringDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::U128Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::U16Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::U32Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::U64Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::U8Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::de::value::UsizeDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[crate::format::Buf::bytes]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::StringDeserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::F32Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::F64Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::I128Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::I16Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::I32Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::I64Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::I8Deserializer::value]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::IsizeDeserializer::value]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/serde-rs/serde:serde", "crate::__private::ser::constrain", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["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"] 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 deleted file mode 100644 index f60417ee9fb4..000000000000 --- a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde_derive.model.yml +++ /dev/null @@ -1,79 +0,0 @@ -# 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/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"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::de_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::default", "Argument[self].Field[crate::internals::attr::Container::default]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::deny_unknown_fields", "Argument[self].Field[crate::internals::attr::Container::deny_unknown_fields]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::expecting", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::identifier", "Argument[self].Field[crate::internals::attr::Container::identifier]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::is_packed", "Argument[self].Field[crate::internals::attr::Container::is_packed]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::name", "Argument[self].Field[crate::internals::attr::Container::name]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::non_exhaustive", "Argument[self].Field[crate::internals::attr::Container::non_exhaustive]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::remote", "Argument[self].Field[crate::internals::attr::Container::remote].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::type_into", "Argument[self].Field[crate::internals::attr::Container::type_into].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::type_try_from", "Argument[self].Field[crate::internals::attr::Container::type_try_from].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::aliases", "Argument[self].Field[crate::internals::attr::Field::name].Field[crate::internals::name::MultiName::deserialize_aliases]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::borrowed_lifetimes", "Argument[self].Field[crate::internals::attr::Field::borrowed_lifetimes]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::de_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::default", "Argument[self].Field[crate::internals::attr::Field::default]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::deserialize_with", "Argument[self].Field[crate::internals::attr::Field::deserialize_with].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::flatten", "Argument[self].Field[crate::internals::attr::Field::flatten]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::getter", "Argument[self].Field[crate::internals::attr::Field::getter].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::name", "Argument[self].Field[crate::internals::attr::Field::name]", "ReturnValue.Reference", "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", "::serialize_with", "Argument[self].Field[crate::internals::attr::Field::serialize_with].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::skip_deserializing", "Argument[self].Field[crate::internals::attr::Field::skip_deserializing]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::skip_serializing", "Argument[self].Field[crate::internals::attr::Field::skip_serializing]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::skip_serializing_if", "Argument[self].Field[crate::internals::attr::Field::skip_serializing_if].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::transparent", "Argument[self].Field[crate::internals::attr::Field::transparent]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::or", "Argument[0].Field[crate::internals::attr::RenameAllRules::deserialize]", "ReturnValue.Field[crate::internals::attr::RenameAllRules::deserialize]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::or", "Argument[0].Field[crate::internals::attr::RenameAllRules::serialize]", "ReturnValue.Field[crate::internals::attr::RenameAllRules::serialize]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::or", "Argument[self].Field[crate::internals::attr::RenameAllRules::deserialize]", "ReturnValue.Field[crate::internals::attr::RenameAllRules::deserialize]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::or", "Argument[self].Field[crate::internals::attr::RenameAllRules::serialize]", "ReturnValue.Field[crate::internals::attr::RenameAllRules::serialize]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::aliases", "Argument[self].Field[crate::internals::attr::Variant::name].Field[crate::internals::name::MultiName::deserialize_aliases]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::de_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::deserialize_with", "Argument[self].Field[crate::internals::attr::Variant::deserialize_with].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::name", "Argument[self].Field[crate::internals::attr::Variant::name]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::other", "Argument[self].Field[crate::internals::attr::Variant::other]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::rename_all_rules", "Argument[self].Field[crate::internals::attr::Variant::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", "::serialize_with", "Argument[self].Field[crate::internals::attr::Variant::serialize_with].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::skip_deserializing", "Argument[self].Field[crate::internals::attr::Variant::skip_deserializing]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::skip_serializing", "Argument[self].Field[crate::internals::attr::Variant::skip_serializing]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::untagged", "Argument[self].Field[crate::internals::attr::Variant::untagged]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::get", "Argument[self].Field[crate::internals::attr::VecAttr::values]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::apply_to_variant", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_str", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::internals::case::ParseError::unknown]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::or", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::deserialize_aliases", "Argument[self].Field[crate::internals::name::MultiName::deserialize_aliases]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "crate::bound::with_bound", "Argument[1].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "crate::bound::with_self_bound", "Argument[1].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "crate::bound::with_where_predicates", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "crate::bound::with_where_predicates_from_fields", "Argument[1].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "crate::bound::with_where_predicates_from_variants", "Argument[1].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "crate::internals::ungroup", "Argument[0]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/serde/repo-serde_test_suite.model.yml b/rust/ql/lib/ext/generated/serde/repo-serde_test_suite.model.yml deleted file mode 100644 index 103fc5f1533c..000000000000 --- a/rust/ql/lib/ext/generated/serde/repo-serde_test_suite.model.yml +++ /dev/null @@ -1,33 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["repo::serde_test_suite", "::variant_seed", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[1]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::visit_byte_buf", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::from", "Argument[0].Field[0]", "ReturnValue.Field[crate::remote::NewtypePriv(0)]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::from", "Argument[0].Field[crate::NewtypePrivDef(0)]", "ReturnValue.Field[crate::remote::NewtypePriv(0)]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::get", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::get", "Argument[self].Field[crate::remote::NewtypePriv(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::new", "Argument[0]", "ReturnValue.Field[crate::remote::NewtypePriv(0)]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::from", "Argument[0].Field[0]", "ReturnValue.Field[crate::remote::PrimitivePriv(0)]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::from", "Argument[0].Field[crate::PrimitivePrivDef(0)]", "ReturnValue.Field[crate::remote::PrimitivePriv(0)]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::get", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::get", "Argument[self].Field[crate::remote::PrimitivePriv(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::new", "Argument[0]", "ReturnValue.Field[crate::remote::PrimitivePriv(0)]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::from", "Argument[0].Field[crate::StructGenericWithGetterDef::value]", "ReturnValue.Field[crate::remote::StructGeneric::value]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::get_value", "Argument[self].Field[crate::remote::StructGeneric::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::from", "Argument[0].Field[crate::StructPrivDef::a]", "ReturnValue.Field[crate::remote::StructPriv::a]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::from", "Argument[0].Field[crate::StructPrivDef::b]", "ReturnValue.Field[crate::remote::StructPriv::b]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::a", "Argument[self].Field[crate::remote::StructPriv::a]", "ReturnValue", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::b", "Argument[self].Field[crate::remote::StructPriv::b]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::new", "Argument[0]", "ReturnValue.Field[crate::remote::StructPriv::a]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::new", "Argument[1]", "ReturnValue.Field[crate::remote::StructPriv::b]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo::serde_test_suite", "::first", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::first", "Argument[self].Field[crate::remote::TuplePriv(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::new", "Argument[0]", "ReturnValue.Field[crate::remote::TuplePriv(0)]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::new", "Argument[1]", "ReturnValue.Field[crate::remote::TuplePriv(1)]", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::second", "Argument[self].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo::serde_test_suite", "::second", "Argument[self].Field[crate::remote::TuplePriv(1)]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/smallvec.model.yml b/rust/ql/lib/ext/generated/smallvec.model.yml new file mode 100644 index 000000000000..9e78c1e496d9 --- /dev/null +++ b/rust/ql/lib/ext/generated/smallvec.model.yml @@ -0,0 +1,54 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::drop", "Argument[self].Field[smallvec::SetLenOnDrop::local_len]", "Argument[self].Field[smallvec::SetLenOnDrop::len].Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[alloc::vec::Vec::len]", "ReturnValue.Field[smallvec::SmallVec::capacity]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[alloc::vec::Vec::len]", "ReturnValue.Field[smallvec::SmallVec::capacity]", "value", "dfc-generated"] + - ["::index", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::index_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_mut_slice", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_slice", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::capacity", "Argument[self].Field[smallvec::SmallVec::capacity]", "ReturnValue", "value", "dfc-generated"] + - ["::drain", "Argument[self].Field[smallvec::SmallVec::capacity]", "ReturnValue.Field[smallvec::Drain::tail_start]", "value", "dfc-generated"] + - ["::drain_filter", "Argument[0]", "ReturnValue.Field[smallvec::DrainFilter::pred]", "value", "dfc-generated"] + - ["::drain_filter", "Argument[self].Field[smallvec::SmallVec::capacity]", "ReturnValue.Field[smallvec::DrainFilter::old_len]", "value", "dfc-generated"] + - ["::drain_filter", "Argument[self]", "ReturnValue.Field[smallvec::DrainFilter::vec]", "value", "dfc-generated"] + - ["::from_buf_and_len", "Argument[1]", "ReturnValue.Field[smallvec::SmallVec::capacity]", "value", "dfc-generated"] + - ["::from_buf_and_len_unchecked", "Argument[1]", "ReturnValue.Field[smallvec::SmallVec::capacity]", "value", "dfc-generated"] + - ["::from_const_with_len_unchecked", "Argument[1]", "ReturnValue.Field[smallvec::SmallVec::capacity]", "value", "dfc-generated"] + - ["::from_raw_parts", "Argument[2]", "ReturnValue.Field[smallvec::SmallVec::capacity]", "value", "dfc-generated"] + - ["::from_vec", "Argument[0].Field[alloc::vec::Vec::len]", "ReturnValue.Field[smallvec::SmallVec::capacity]", "value", "dfc-generated"] + - ["::grow", "Argument[0]", "Argument[self].Field[smallvec::SmallVec::capacity]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[smallvec::SmallVec::capacity]", "ReturnValue", "value", "dfc-generated"] + - ["::retain", "Argument[self].Element", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] + - ["::retain_mut", "Argument[self].Element", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_grow", "Argument[0]", "Argument[self].Field[smallvec::SmallVec::capacity]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[smallvec::tests::MockHintIter::x].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[smallvec::tests::MockHintIter::hint]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[smallvec::tests::insert_many_panic::BadIter::hint]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::insert", "Argument[0]", "log-injection", "df-generated"] + - ["::insert", "Argument[self]", "log-injection", "df-generated"] + - ["::remove", "Argument[0]", "log-injection", "df-generated"] + - ["::remove", "Argument[self]", "log-injection", "df-generated"] + - ["::into_inner", "Argument[self]", "pointer-access", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["::drop", "Argument[self]", "pointer-invalidate", "df-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 deleted file mode 100644 index d0ca9a017612..000000000000 --- a/rust/ql/lib/ext/generated/smallvec/repo-https-github.com-servo-rust-smallvec-smallvec.model.yml +++ /dev/null @@ -1,42 +0,0 @@ -# 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/servo/rust-smallvec:smallvec", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::drop", "Argument[self].Field[crate::SetLenOnDrop::local_len]", "Argument[self].Field[crate::SetLenOnDrop::len].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::borrow", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::borrow_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::as_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::index", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["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", "::drain_filter", "Argument[0]", "ReturnValue.Field[crate::DrainFilter::pred]", "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", "::into_inner", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "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", "::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"] - - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::size_hint", "Argument[self].Field[crate::tests::insert_many_panic::BadIter::hint]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::into_inner", "Argument[self]", "pointer-access", "df-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sourceModel - data: - - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::drop", "Argument[self]", "pointer-invalidate", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio.model.yml b/rust/ql/lib/ext/generated/tokio.model.yml new file mode 100644 index 000000000000..98c9fb5f33f5 --- /dev/null +++ b/rust/ql/lib/ext/generated/tokio.model.yml @@ -0,0 +1,1648 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::extend", "Argument[2].Field[core::result::Result::Err(0)]", "Argument[1].Reference.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::into_waker", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[tokio::runtime::scheduler::multi_thread::idle::State(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::is_write_vectored", "Argument[self].Field[io_buf_writer::MockWriter::vectored]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[io_buf_writer::support::io_vec::IoBufs(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::advance", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[io_buf_writer::support::io_vec::IoBufs(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[length_delimited::Op::Data(0)]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[net_unix_pipe::TempFifo::path]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[net_unix_pipe::TempFifo::path]", "ReturnValue", "value", "dfc-generated"] + - ["::poll_complete", "Argument[self].Field[core::pin::Pin::__pointer].Field[std::io::cursor::Cursor::pos]", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[tokio::io::async_fd::AsyncFdTryNewError::cause]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[tokio::runtime::blocking::pool::SpawnError::NoThreads(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[tokio::net::unix::socketaddr::SocketAddr(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::id", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0].Field[tokio::time::instant::Instant::std]", "ReturnValue", "value", "dfc-generated"] + - ["::mode", "Argument[0]", "Argument[self].Field[tokio::fs::dir_builder::DirBuilder::mode].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::mode", "Argument[0]", "ReturnValue.Field[tokio::fs::dir_builder::DirBuilder::mode].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::mode", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::recursive", "Argument[0]", "Argument[self].Field[tokio::fs::dir_builder::DirBuilder::recursive]", "value", "dfc-generated"] + - ["::recursive", "Argument[0]", "ReturnValue.Field[tokio::fs::dir_builder::DirBuilder::recursive]", "value", "dfc-generated"] + - ["::recursive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_max_buf_size", "Argument[0]", "Argument[self].Field[tokio::fs::file::File::max_buf_size]", "value", "dfc-generated"] + - ["::try_into_std", "Argument[self].Field[tokio::fs::file::File::std]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::fs::file::File::std]", "value", "dfc-generated"] + - ["::try_into_std", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[tokio::fs::open_options::OpenOptions(0)]", "value", "dfc-generated"] + - ["::append", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_inner_mut", "Argument[self].Field[tokio::fs::open_options::OpenOptions(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::create", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::create_new", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::custom_flags", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::mode", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::read", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::truncate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::write", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_inner", "Argument[self].Field[tokio::fs::read_dir::DirEntry::std]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::future::try_join::TryJoin3::future1]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::future::try_join::TryJoin3::future2]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::future::try_join::TryJoin3::future3]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::future::try_join::TryJoin3::future1]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::future::try_join::TryJoin3::future2]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::future::try_join::TryJoin3::future3]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio::io::async_fd::AsyncFd::inner].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio::io::async_fd::AsyncFd::inner].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::ready", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::io::async_fd::AsyncFdReadyGuard::async_fd]", "value", "dfc-generated"] + - ["::ready_mut", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::io::async_fd::AsyncFdReadyMutGuard::async_fd]", "value", "dfc-generated"] + - ["::try_io", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_io_mut", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::try_new", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::io::async_fd::AsyncFdTryNewError::inner]", "value", "dfc-generated"] + - ["::try_new_with_handle_and_interest", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::io::async_fd::AsyncFdTryNewError::inner]", "value", "dfc-generated"] + - ["::try_with_interest", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::io::async_fd::AsyncFdTryNewError::inner]", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio::io::async_fd::AsyncFdReadyGuard::async_fd]", "ReturnValue", "value", "dfc-generated"] + - ["::try_io", "Argument[0].ReturnValue", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::try_io", "Argument[self].Field[tokio::io::async_fd::AsyncFdReadyGuard::async_fd]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio::io::async_fd::AsyncFdReadyMutGuard::async_fd]", "ReturnValue", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio::io::async_fd::AsyncFdReadyMutGuard::async_fd]", "ReturnValue", "value", "dfc-generated"] + - ["::try_io", "Argument[0].ReturnValue", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::try_io", "Argument[self].Field[tokio::io::async_fd::AsyncFdReadyMutGuard::async_fd]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::source", "Argument[self].Field[tokio::io::async_fd::AsyncFdTryNewError::cause]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[tokio::io::async_fd::AsyncFdTryNewError::cause]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[tokio::io::async_fd::AsyncFdTryNewError::inner]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::blocking::Blocking::inner].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::bytes", "Argument[self].Field[tokio::io::blocking::Buf::buf].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::copy_from", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["::copy_from_bufs", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::copy_to", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::copy_to", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[tokio::io::join::Join::reader]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio::io::join::Join::writer]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::join::Join::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::join::Join::writer]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::join::Join::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::join::Join::writer]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::reader", "Argument[self].Field[tokio::io::join::Join::reader]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::reader_mut", "Argument[self].Field[tokio::io::join::Join::reader]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::writer", "Argument[self].Field[tokio::io::join::Join::writer]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::writer_mut", "Argument[self].Field[tokio::io::join::Join::writer]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[tokio::io::poll_evented::PollEvented::io].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new_with_interest_and_handle", "Argument[2]", "ReturnValue.Field[tokio::runtime::io::registration::Registration::handle]", "value", "dfc-generated"] + - ["::registration", "Argument[self].Field[tokio::io::poll_evented::PollEvented::registration]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::advance_mut", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::remaining_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::assume_init", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::initialize_unfilled_to", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::inner_mut", "Argument[self].Field[tokio::io::read_buf::ReadBuf::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::remaining", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::set_filled", "Argument[0]", "Argument[self].Field[tokio::io::read_buf::ReadBuf::filled]", "value", "dfc-generated"] + - ["::take", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::unfilled_mut", "Argument[self].Field[tokio::io::read_buf::ReadBuf::buf].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::uninit", "Argument[0]", "ReturnValue.Field[tokio::io::read_buf::ReadBuf::buf]", "value", "dfc-generated"] + - ["::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::as_usize", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::as_usize", "Argument[self].Field[tokio::io::ready::Ready(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::from_usize", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::intersection", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::seek::Seek::pos]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::seek::Seek::seek]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::seek::Seek::pos]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::seek::Seek::seek]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::stdio_common::SplitByUtf8BoundaryIfWindows::inner]", "value", "dfc-generated"] + - ["::buffer", "Argument[self].Field[tokio::io::util::buf_reader::BufReader::buf].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio::io::util::buf_reader::BufReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio::io::util::buf_reader::BufReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio::io::util::buf_reader::BufReader::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::buf_reader::BufReader::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::with_capacity", "Argument[1]", "ReturnValue.Field[tokio::io::util::buf_reader::BufReader::inner]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[tokio::io::util::buf_stream::BufStream::inner]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::buf_stream::BufStream::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::buf_stream::BufStream::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::buffer", "Argument[self].Field[tokio::io::util::buf_writer::BufWriter::buf]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio::io::util::buf_writer::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio::io::util::buf_writer::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio::io::util::buf_writer::BufWriter::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::buf_writer::BufWriter::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::with_capacity", "Argument[1]", "ReturnValue.Field[tokio::io::util::buf_writer::BufWriter::inner]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio::io::util::chain::Chain::first]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio::io::util::chain::Chain::second]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio::io::util::chain::Chain::first]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio::io::util::chain::Chain::second]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio::io::util::chain::Chain::first]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio::io::util::chain::Chain::second]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::chain::Chain::done_first]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::chain::Chain::first]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::chain::Chain::second]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::chain::Chain::done_first]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::chain::Chain::first]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::chain::Chain::second]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::poll_copy", "Argument[self].Field[tokio::io::util::copy::CopyBuffer::amt]", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::fill_buf::FillBuf::reader]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::fill_buf::FillBuf::reader]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::flush::Flush::a]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::flush::Flush::a]", "ReturnValue", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio::io::util::lines::Lines::reader]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio::io::util::lines::Lines::reader]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio::io::util::lines::Lines::reader]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new_unsplit", "Argument[0]", "ReturnValue.Field[tokio::io::util::mem::SimplexStream::max_buf_size]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read::Read::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read::Read::reader]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read::Read::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read::Read::reader]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_buf::ReadBuf::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_buf::ReadBuf::reader]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_buf::ReadBuf::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_buf::ReadBuf::reader]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_exact::ReadExact::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_exact::ReadExact::reader]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_exact::ReadExact::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_exact::ReadExact::reader]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadF32::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadF32Le::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadF64::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadF64Le::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI128::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI128Le::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI16::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI16Le::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI32::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI32Le::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI64::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI64Le::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI8::reader]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI8::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI8::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU128::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU128Le::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU16::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU16Le::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU32::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU32Le::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU64::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU64Le::src]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU8::reader]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU8::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU8::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_to_end::ReadToEnd::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_to_end::ReadToEnd::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_to_end::ReadToEnd::reader]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_to_end::ReadToEnd::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_to_end::ReadToEnd::read]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_to_end::ReadToEnd::reader]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::shutdown::Shutdown::a]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::shutdown::Shutdown::a]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::get_mut", "Argument[self].Field[tokio::io::util::take::Take::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio::io::util::take::Take::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio::io::util::take::Take::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::limit", "Argument[self].Field[tokio::io::util::take::Take::limit_]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::take::Take::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::take::Take::limit_]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::take::Take::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::take::Take::limit_]", "ReturnValue", "value", "dfc-generated"] + - ["::set_limit", "Argument[0]", "Argument[self].Field[tokio::io::util::take::Take::limit_]", "value", "dfc-generated"] + - ["::apply_read_buf", "Argument[0].Field[tokio::io::util::vec_with_initialized::ReadBufParts::initialized]", "Argument[self].Field[tokio::io::util::vec_with_initialized::VecWithInitialized::num_initialized]", "value", "dfc-generated"] + - ["::get_read_buf", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::vec_with_initialized::VecWithInitialized::vec]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write::Write::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write::Write::writer]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write::Write::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write::Write::writer]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all::WriteAll::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all::WriteAll::writer]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all::WriteAll::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all::WriteAll::writer]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all_buf::WriteAllBuf::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all_buf::WriteAllBuf::writer]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all_buf::WriteAllBuf::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all_buf::WriteAllBuf::writer]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_buf::WriteBuf::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_buf::WriteBuf::writer]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_buf::WriteBuf::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_buf::WriteBuf::writer]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteF32::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteF32Le::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteF64::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteF64Le::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI128::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI128Le::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI16::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI16Le::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI32::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI32Le::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI64::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI64Le::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI8::dst]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio::io::util::write_int::WriteI8::byte]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI8::byte]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI8::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI8::byte]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI8::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU128::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU128Le::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU16::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU16Le::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU32::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU32Le::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU64::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU64Le::dst]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU8::dst]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio::io::util::write_int::WriteU8::byte]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU8::byte]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU8::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU8::byte]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU8::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_vectored::WriteVectored::bufs]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_vectored::WriteVectored::writer]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_vectored::WriteVectored::bufs]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_vectored::WriteVectored::writer]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::unsync_load", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::deref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::unsync_load", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::deref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::deref_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::unsync_load", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::with_mut", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::loom::std::barrier::Barrier::num_threads]", "value", "dfc-generated"] + - ["::is_leader", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::is_leader", "Argument[self].Field[tokio::loom::std::barrier::BarrierWaitResult(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::lock", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::try_lock", "Argument[self].Field[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[std::sync::poison::mutex::MutexGuard::lock]", "value", "dfc-generated"] + - ["::try_lock", "Argument[self].Field[tokio::loom::std::mutex::Mutex(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Field[std::sync::poison::mutex::MutexGuard::lock]", "value", "dfc-generated"] + - ["::wait", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["::wait_timeout", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "value", "dfc-generated"] + - ["::read", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::try_write", "Argument[self].Field[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[std::sync::poison::rwlock::RwLockWriteGuard::lock]", "value", "dfc-generated"] + - ["::try_write", "Argument[self].Field[tokio::loom::std::rwlock::RwLock(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Field[std::sync::poison::rwlock::RwLockWriteGuard::lock]", "value", "dfc-generated"] + - ["::write", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::loom::std::unsafe_cell::UnsafeCell(0)].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::with", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::with_mut", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::poll_evented::PollEvented::io].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio::net::tcp::split::ReadHalf(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::try_read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::as_ref", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio::net::tcp::split::WriteHalf(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio::net::tcp::split_owned::OwnedReadHalf::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::reunite", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::tcp::split_owned::ReuniteError(1)]", "value", "dfc-generated"] + - ["::reunite", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::tcp::split_owned::ReuniteError(0)]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio::net::tcp::split_owned::OwnedWriteHalf::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::reunite", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::tcp::split_owned::ReuniteError(0)]", "value", "dfc-generated"] + - ["::reunite", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::tcp::split_owned::ReuniteError(1)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::poll_evented::PollEvented::io].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::split", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::poll_evented::PollEvented::io].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::read_write", "Argument[0]", "Argument[self].Field[tokio::net::unix::pipe::OpenOptions::read_write]", "value", "dfc-generated"] + - ["::read_write", "Argument[0]", "ReturnValue.Field[tokio::net::unix::pipe::OpenOptions::read_write]", "value", "dfc-generated"] + - ["::read_write", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::unchecked", "Argument[0]", "Argument[self].Field[tokio::net::unix::pipe::OpenOptions::unchecked]", "value", "dfc-generated"] + - ["::unchecked", "Argument[0]", "ReturnValue.Field[tokio::net::unix::pipe::OpenOptions::unchecked]", "value", "dfc-generated"] + - ["::unchecked", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[tokio::net::unix::socketaddr::SocketAddr(0)]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio::net::unix::split::ReadHalf(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio::net::unix::split::WriteHalf(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio::net::unix::split_owned::OwnedReadHalf::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::reunite", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::unix::split_owned::ReuniteError(1)]", "value", "dfc-generated"] + - ["::reunite", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::unix::split_owned::ReuniteError(0)]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio::net::unix::split_owned::OwnedWriteHalf::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::reunite", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::unix::split_owned::ReuniteError(0)]", "value", "dfc-generated"] + - ["::reunite", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::unix::split_owned::ReuniteError(1)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::io::poll_evented::PollEvented::io].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::split", "Argument[self]", "ReturnValue.Field[0].Field[tokio::net::unix::split::ReadHalf(0)]", "value", "dfc-generated"] + - ["::split", "Argument[self]", "ReturnValue.Field[1].Field[tokio::net::unix::split::WriteHalf(0)]", "value", "dfc-generated"] + - ["::gid", "Argument[self].Field[tokio::net::unix::ucred::UCred::gid]", "ReturnValue", "value", "dfc-generated"] + - ["::pid", "Argument[self].Field[tokio::net::unix::ucred::UCred::pid]", "ReturnValue", "value", "dfc-generated"] + - ["::uid", "Argument[self].Field[tokio::net::unix::ucred::UCred::uid]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[tokio::process::Command::std]", "value", "dfc-generated"] + - ["::arg0", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::as_std", "Argument[self].Field[tokio::process::Command::std]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_std_mut", "Argument[self].Field[tokio::process::Command::std]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::current_dir", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::env", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::env_clear", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::env_remove", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::envs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::get_kill_on_drop", "Argument[self].Field[tokio::process::Command::kill_on_drop]", "ReturnValue", "value", "dfc-generated"] + - ["::gid", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::into_std", "Argument[self].Field[tokio::process::Command::std]", "ReturnValue", "value", "dfc-generated"] + - ["::kill_on_drop", "Argument[0]", "Argument[self].Field[tokio::process::Command::kill_on_drop]", "value", "dfc-generated"] + - ["::kill_on_drop", "Argument[0]", "ReturnValue.Field[tokio::process::Command::kill_on_drop]", "value", "dfc-generated"] + - ["::kill_on_drop", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::pre_exec", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::process_group", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::stderr", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::stdin", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::stdout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::uid", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[1]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::process::imp::pidfd_reaper::PidfdReaper::orphan_queue]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[tokio::process::imp::reap::Reaper::inner].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::inner_mut", "Argument[self].Field[tokio::process::imp::reap::Reaper::inner].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::process::imp::reap::Reaper::inner].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio::process::imp::reap::Reaper::orphan_queue]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[tokio::process::imp::reap::Reaper::signal]", "value", "dfc-generated"] + - ["::try_wait", "Argument[self].Field[tokio::process::imp::reap::test::MockWait::status]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::poll", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::process::test::Mock::poll_result]", "ReturnValue", "value", "dfc-generated"] + - ["::spawner", "Argument[self].Field[tokio::runtime::blocking::pool::BlockingPool::spawner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::runtime::blocking::pool::Task::task]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio::runtime::blocking::pool::Task::mandatory]", "value", "dfc-generated"] + - ["::hooks", "Argument[self].Field[tokio::runtime::blocking::schedule::BlockingSchedule::hooks].Field[tokio::runtime::task::TaskHarnessScheduleHooks::task_terminate_callback]", "ReturnValue.Field[tokio::runtime::task::TaskHarnessScheduleHooks::task_terminate_callback]", "value", "dfc-generated"] + - ["::new", "Argument[0].Reference", "ReturnValue.Field[tokio::runtime::blocking::schedule::BlockingSchedule::handle]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::runtime::blocking::task::BlockingTask::func].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::enable_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::enable_io", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::enable_time", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::event_interval", "Argument[0]", "Argument[self].Field[tokio::runtime::builder::Builder::event_interval]", "value", "dfc-generated"] + - ["::event_interval", "Argument[0]", "ReturnValue.Field[tokio::runtime::builder::Builder::event_interval]", "value", "dfc-generated"] + - ["::event_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::global_queue_interval", "Argument[0]", "Argument[self].Field[tokio::runtime::builder::Builder::global_queue_interval].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::global_queue_interval", "Argument[0]", "ReturnValue.Field[tokio::runtime::builder::Builder::global_queue_interval].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::global_queue_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_blocking_threads", "Argument[0]", "Argument[self].Field[tokio::runtime::builder::Builder::max_blocking_threads]", "value", "dfc-generated"] + - ["::max_blocking_threads", "Argument[0]", "ReturnValue.Field[tokio::runtime::builder::Builder::max_blocking_threads]", "value", "dfc-generated"] + - ["::max_blocking_threads", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_io_events_per_tick", "Argument[0]", "Argument[self].Field[tokio::runtime::builder::Builder::nevents]", "value", "dfc-generated"] + - ["::max_io_events_per_tick", "Argument[0]", "ReturnValue.Field[tokio::runtime::builder::Builder::nevents]", "value", "dfc-generated"] + - ["::max_io_events_per_tick", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::runtime::builder::Builder::kind]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio::runtime::builder::Builder::event_interval]", "value", "dfc-generated"] + - ["::on_thread_park", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::on_thread_start", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::on_thread_stop", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::on_thread_unpark", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::start_paused", "Argument[0]", "Argument[self].Field[tokio::runtime::builder::Builder::start_paused]", "value", "dfc-generated"] + - ["::start_paused", "Argument[0]", "ReturnValue.Field[tokio::runtime::builder::Builder::start_paused]", "value", "dfc-generated"] + - ["::start_paused", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::thread_keep_alive", "Argument[0]", "Argument[self].Field[tokio::runtime::builder::Builder::keep_alive].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::thread_keep_alive", "Argument[0]", "ReturnValue.Field[tokio::runtime::builder::Builder::keep_alive].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::thread_keep_alive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::thread_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::thread_name_fn", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::thread_stack_size", "Argument[0]", "Argument[self].Field[tokio::runtime::builder::Builder::thread_stack_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::thread_stack_size", "Argument[0]", "ReturnValue.Field[tokio::runtime::builder::Builder::thread_stack_size].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::thread_stack_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::worker_threads", "Argument[0]", "Argument[self].Field[tokio::runtime::builder::Builder::worker_threads].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::worker_threads", "Argument[0]", "ReturnValue.Field[tokio::runtime::builder::Builder::worker_threads].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::worker_threads", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::set_current", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::set", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::with", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio::runtime::driver::IoHandle::Enabled(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::metrics", "Argument[self].Reference", "ReturnValue.Field[tokio::runtime::metrics::runtime::RuntimeMetrics::handle]", "value", "dfc-generated"] + - ["::consume_signal_ready", "Argument[self].Field[tokio::runtime::io::driver::Driver::signal_ready]", "ReturnValue", "value", "dfc-generated"] + - ["::with_ready", "Argument[0]", "ReturnValue.Field[tokio::runtime::io::driver::ReadyEvent::ready]", "value", "dfc-generated"] + - ["::with_ready", "Argument[self].Field[tokio::runtime::io::driver::ReadyEvent::is_shutdown]", "ReturnValue.Field[tokio::runtime::io::driver::ReadyEvent::is_shutdown]", "value", "dfc-generated"] + - ["::with_ready", "Argument[self].Field[tokio::runtime::io::driver::ReadyEvent::tick]", "ReturnValue.Field[tokio::runtime::io::driver::ReadyEvent::tick]", "value", "dfc-generated"] + - ["::new_with_interest_and_handle", "Argument[2]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::runtime::io::registration::Registration::handle]", "value", "dfc-generated"] + - ["::poll_read_io", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::poll_write_io", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::try_io", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::is_shutdown", "Argument[0].Field[tokio::runtime::io::registration_set::Synced::is_shutdown]", "ReturnValue", "value", "dfc-generated"] + - ["::as_raw", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from_raw", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::runtime::metrics::runtime::RuntimeMetrics::handle]", "value", "dfc-generated"] + - ["::unpark", "Argument[self].Field[tokio::runtime::park::ParkThread::inner].Reference", "ReturnValue.Field[tokio::runtime::park::UnparkThread::inner]", "value", "dfc-generated"] + - ["::unpark", "Argument[self].Field[tokio::runtime::park::ParkThread::inner]", "ReturnValue.Field[tokio::runtime::park::UnparkThread::inner]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::runtime::process::Driver::park]", "value", "dfc-generated"] + - ["::wrap", "Argument[0]", "ReturnValue.Field[tokio_util::context::TokioContext::inner]", "value", "dfc-generated"] + - ["::wrap", "Argument[self].Field[tokio::runtime::runtime::Runtime::handle]", "ReturnValue.Field[tokio_util::context::TokioContext::handle]", "value", "dfc-generated"] + - ["::from_parts", "Argument[0]", "ReturnValue.Field[tokio::runtime::runtime::Runtime::scheduler]", "value", "dfc-generated"] + - ["::from_parts", "Argument[1]", "ReturnValue.Field[tokio::runtime::runtime::Runtime::handle]", "value", "dfc-generated"] + - ["::from_parts", "Argument[2]", "ReturnValue.Field[tokio::runtime::runtime::Runtime::blocking_pool]", "value", "dfc-generated"] + - ["::handle", "Argument[self].Field[tokio::runtime::runtime::Runtime::handle]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::metrics", "Argument[self].Field[tokio::runtime::runtime::Runtime::handle].Reference", "ReturnValue.Field[tokio::runtime::metrics::runtime::RuntimeMetrics::handle]", "value", "dfc-generated"] + - ["::metrics", "Argument[self].Field[tokio::runtime::runtime::Runtime::handle]", "ReturnValue.Field[tokio::runtime::metrics::runtime::RuntimeMetrics::handle]", "value", "dfc-generated"] + - ["::expect_current_thread", "Argument[self].Field[tokio::runtime::scheduler::Context::CurrentThread(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::expect_multi_thread", "Argument[self].Field[tokio::runtime::scheduler::Context::MultiThread(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::as_current_thread", "Argument[self].Field[tokio::runtime::scheduler::Handle::CurrentThread(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::worker_metrics", "Argument[self].Field[tokio::runtime::scheduler::current_thread::Handle::shared].Field[tokio::runtime::scheduler::current_thread::Shared::worker_metrics]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[tokio::runtime::scheduler::inject::pop::Pop::len]", "ReturnValue", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[tokio::runtime::scheduler::inject::pop::Pop::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[tokio::runtime::scheduler::inject::pop::Pop::len]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::runtime::scheduler::inject::pop::Pop::len]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio::runtime::scheduler::inject::pop::Pop::synced]", "value", "dfc-generated"] + - ["::is_closed", "Argument[0].Field[tokio::runtime::scheduler::inject::synced::Synced::is_closed]", "ReturnValue", "value", "dfc-generated"] + - ["::pop", "Argument[0].Field[tokio::runtime::scheduler::inject::synced::Synced::head].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::pop", "Argument[0].Field[tokio::runtime::scheduler::inject::synced::Synced::head].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::pop_n", "Argument[0]", "ReturnValue.Field[tokio::runtime::scheduler::inject::pop::Pop::synced]", "value", "dfc-generated"] + - ["::pop_n", "Argument[1]", "ReturnValue.Field[tokio::runtime::scheduler::inject::pop::Pop::len]", "value", "dfc-generated"] + - ["::push", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["::as_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::pop", "Argument[self].Field[tokio::runtime::scheduler::inject::synced::Synced::head].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::pop", "Argument[self].Field[tokio::runtime::scheduler::inject::synced::Synced::head].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::trace_core", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::worker_metrics", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[0].Field[tokio::runtime::scheduler::multi_thread::idle::Idle::num_workers]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[tokio::runtime::scheduler::multi_thread::idle::State(0)]", "value", "dfc-generated"] + - ["::unpark", "Argument[self].Field[tokio::runtime::scheduler::multi_thread::park::Parker::inner].Reference", "ReturnValue.Field[tokio::runtime::scheduler::multi_thread::park::Unparker::inner]", "value", "dfc-generated"] + - ["::unpark", "Argument[self].Field[tokio::runtime::scheduler::multi_thread::park::Parker::inner]", "ReturnValue.Field[tokio::runtime::scheduler::multi_thread::park::Unparker::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::handle", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::runtime::signal::Driver::io]", "value", "dfc-generated"] + - ["::from_raw", "Argument[0]", "ReturnValue.Field[tokio::runtime::task::Notified(0)].Field[tokio::runtime::task::Task::raw]", "value", "dfc-generated"] + - ["::into_raw", "Argument[self].Field[0].Field[tokio::runtime::task::Task::raw]", "ReturnValue", "value", "dfc-generated"] + - ["::into_raw", "Argument[self].Field[tokio::runtime::task::Notified(0)].Field[tokio::runtime::task::Task::raw]", "ReturnValue", "value", "dfc-generated"] + - ["::as_raw", "Argument[0].Field[tokio::runtime::task::Task::raw].Field[tokio::runtime::task::raw::RawTask::ptr]", "ReturnValue", "value", "dfc-generated"] + - ["::from_raw", "Argument[0]", "ReturnValue.Field[tokio::runtime::task::Task::raw].Field[tokio::runtime::task::raw::RawTask::ptr]", "value", "dfc-generated"] + - ["::into_notified", "Argument[self].Field[tokio::runtime::task::UnownedTask::raw]", "ReturnValue.Field[tokio::runtime::task::Notified(0)].Field[tokio::runtime::task::Task::raw]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::runtime::task::abort::AbortHandle::raw]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["::with_mut", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::cancelled", "Argument[0]", "ReturnValue.Field[tokio::runtime::task::error::JoinError::id]", "value", "dfc-generated"] + - ["::id", "Argument[self].Field[tokio::runtime::task::error::JoinError::id]", "ReturnValue", "value", "dfc-generated"] + - ["::panic", "Argument[0]", "ReturnValue.Field[tokio::runtime::task::error::JoinError::id]", "value", "dfc-generated"] + - ["::try_into_panic", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::abort_handle", "Argument[self].Field[tokio::runtime::task::join::JoinHandle::raw]", "ReturnValue.Field[tokio::runtime::task::abort::AbortHandle::raw]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::runtime::task::join::JoinHandle::raw]", "value", "dfc-generated"] + - ["::assert_owner", "Argument[0].Field[0]", "ReturnValue.Field[tokio::runtime::task::LocalNotified::task]", "value", "dfc-generated"] + - ["::assert_owner", "Argument[0].Field[tokio::runtime::task::Notified(0)]", "ReturnValue.Field[tokio::runtime::task::LocalNotified::task]", "value", "dfc-generated"] + - ["::assert_owner", "Argument[0].Field[0]", "ReturnValue.Field[tokio::runtime::task::LocalNotified::task]", "value", "dfc-generated"] + - ["::assert_owner", "Argument[0].Field[tokio::runtime::task::Notified(0)]", "ReturnValue.Field[tokio::runtime::task::LocalNotified::task]", "value", "dfc-generated"] + - ["::from_raw", "Argument[0]", "ReturnValue.Field[tokio::runtime::task::raw::RawTask::ptr]", "value", "dfc-generated"] + - ["::header_ptr", "Argument[self].Field[tokio::runtime::task::raw::RawTask::ptr]", "ReturnValue", "value", "dfc-generated"] + - ["::ref_count", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::deref", "Argument[self].Field[tokio::runtime::task::waker::WakerRef::waker]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_config", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::id", "Argument[self].Field[tokio::runtime::task_hooks::TaskMeta::id]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[0].Field[tokio::runtime::time::Driver::park]", "value", "dfc-generated"] + - ["::deadline", "Argument[self].Field[tokio::runtime::time::entry::TimerEntry::deadline]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::runtime::time::entry::TimerEntry::driver]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio::runtime::time::entry::TimerEntry::deadline]", "value", "dfc-generated"] + - ["::as_raw", "Argument[0].Field[tokio::runtime::time::entry::TimerHandle::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::from_raw", "Argument[0]", "ReturnValue.Field[tokio::runtime::time::entry::TimerHandle::inner]", "value", "dfc-generated"] + - ["::handle", "Argument[self].Field[core::ptr::unique::Unique::pointer]", "ReturnValue.Field[tokio::runtime::time::entry::TimerHandle::inner]", "value", "dfc-generated"] + - ["::time_source", "Argument[self].Field[tokio::runtime::time::handle::Handle::time_source]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::start_time", "Argument[self].Field[tokio::runtime::time::source::TimeSource::start_time]", "ReturnValue", "value", "dfc-generated"] + - ["::tick_to_duration", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::elapsed", "Argument[self].Field[tokio::runtime::time::wheel::Wheel::elapsed]", "ReturnValue", "value", "dfc-generated"] + - ["::insert", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[0]", "value", "dfc-generated"] + - ["::next_expiration_time", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::poll", "Argument[0]", "Argument[self].Field[tokio::runtime::time::wheel::Wheel::elapsed]", "value", "dfc-generated"] + - ["::poll_at", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::runtime::time::wheel::level::Level::level]", "value", "dfc-generated"] + - ["::next_expiration", "Argument[self].Field[tokio::runtime::time::wheel::level::Level::level]", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::runtime::time::wheel::level::Expiration::level]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[tokio::signal::registry::Globals::extra]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::storage", "Argument[self].Field[tokio::signal::registry::Globals::registry].Field[tokio::signal::registry::Registry::storage]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::set", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::try_set", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::as_raw_value", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::as_raw_value", "Argument[self].Field[tokio::signal::unix::SignalKind(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::event_info", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::for_each", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::sync::barrier::Barrier::n]", "value", "dfc-generated"] + - ["::is_leader", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::is_leader", "Argument[self].Field[tokio::sync::barrier::BarrierWaitResult(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::acquire", "Argument[0]", "ReturnValue.Field[tokio::sync::batch_semaphore::Acquire::num_permits]", "value", "dfc-generated"] + - ["::acquire", "Argument[self]", "ReturnValue.Field[tokio::sync::batch_semaphore::Acquire::semaphore]", "value", "dfc-generated"] + - ["::forget_permits", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::as_raw", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from_raw", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::resubscribe", "Argument[self].Field[tokio::sync::broadcast::Receiver::shared].Reference", "ReturnValue.Field[tokio::sync::broadcast::Receiver::shared]", "value", "dfc-generated"] + - ["::resubscribe", "Argument[self].Field[tokio::sync::broadcast::Receiver::shared]", "ReturnValue.Field[tokio::sync::broadcast::Receiver::shared]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::broadcast::Sender::shared].Reference", "ReturnValue.Field[tokio::sync::broadcast::Sender::shared]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::broadcast::Sender::shared]", "ReturnValue.Field[tokio::sync::broadcast::Sender::shared]", "value", "dfc-generated"] + - ["::downgrade", "Argument[self].Field[tokio::sync::broadcast::Sender::shared].Reference", "ReturnValue.Field[tokio::sync::broadcast::WeakSender::shared]", "value", "dfc-generated"] + - ["::downgrade", "Argument[self].Field[tokio::sync::broadcast::Sender::shared]", "ReturnValue.Field[tokio::sync::broadcast::WeakSender::shared]", "value", "dfc-generated"] + - ["::send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::broadcast::error::SendError(0)]", "value", "dfc-generated"] + - ["::subscribe", "Argument[self].Field[tokio::sync::broadcast::Sender::shared].Reference", "ReturnValue.Field[tokio::sync::broadcast::Receiver::shared]", "value", "dfc-generated"] + - ["::subscribe", "Argument[self].Field[tokio::sync::broadcast::Sender::shared]", "ReturnValue.Field[tokio::sync::broadcast::Receiver::shared]", "value", "dfc-generated"] + - ["::as_raw", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from_raw", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::broadcast::WeakSender::shared].Reference", "ReturnValue.Field[tokio::sync::broadcast::WeakSender::shared]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::broadcast::WeakSender::shared]", "ReturnValue.Field[tokio::sync::broadcast::WeakSender::shared]", "value", "dfc-generated"] + - ["::upgrade", "Argument[self].Field[tokio::sync::broadcast::WeakSender::shared].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::sync::broadcast::Sender::shared]", "value", "dfc-generated"] + - ["::upgrade", "Argument[self].Field[tokio::sync::broadcast::WeakSender::shared]", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::sync::broadcast::Sender::shared]", "value", "dfc-generated"] + - ["::next", "Argument[self].Field[tokio::sync::mpsc::bounded::PermitIterator::chan]", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::sync::mpsc::bounded::Permit::chan]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[tokio::sync::mpsc::bounded::PermitIterator::n]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[tokio::sync::mpsc::bounded::PermitIterator::n]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::sync::mpsc::bounded::Receiver::chan]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::mpsc::bounded::Sender::chan].Field[tokio::sync::mpsc::chan::Tx::inner]", "ReturnValue.Field[tokio::sync::mpsc::bounded::Sender::chan].Field[tokio::sync::mpsc::chan::Tx::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::mpsc::bounded::Sender::chan].Reference", "ReturnValue.Field[tokio::sync::mpsc::bounded::Sender::chan]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::mpsc::bounded::Sender::chan]", "ReturnValue.Field[tokio::sync::mpsc::bounded::Sender::chan]", "value", "dfc-generated"] + - ["::downgrade", "Argument[self].Field[tokio::sync::mpsc::bounded::Sender::chan].Field[tokio::sync::mpsc::chan::Tx::inner]", "ReturnValue.Field[tokio::sync::mpsc::bounded::WeakSender::chan]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::sync::mpsc::bounded::Sender::chan]", "value", "dfc-generated"] + - ["::reserve", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::reserve_many", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::mpsc::bounded::PermitIterator::n]", "value", "dfc-generated"] + - ["::send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::mpsc::error::SendError(0)]", "value", "dfc-generated"] + - ["::send_timeout", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::mpsc::error::SendTimeoutError::Closed(0)]", "value", "dfc-generated"] + - ["::send_timeout", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::mpsc::error::SendTimeoutError::Timeout(0)]", "value", "dfc-generated"] + - ["::try_reserve", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::try_reserve_many", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::mpsc::bounded::PermitIterator::n]", "value", "dfc-generated"] + - ["::try_reserve_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::mpsc::error::TrySendError::Closed(0)]", "value", "dfc-generated"] + - ["::try_reserve_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::mpsc::error::TrySendError::Full(0)]", "value", "dfc-generated"] + - ["::try_send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::mpsc::error::TrySendError::Closed(0)]", "value", "dfc-generated"] + - ["::try_send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::mpsc::error::TrySendError::Full(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::mpsc::bounded::WeakSender::chan].Reference", "ReturnValue.Field[tokio::sync::mpsc::bounded::WeakSender::chan]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::mpsc::bounded::WeakSender::chan]", "ReturnValue.Field[tokio::sync::mpsc::bounded::WeakSender::chan]", "value", "dfc-generated"] + - ["::upgrade", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::mpsc::chan::Tx::inner].Reference", "ReturnValue.Field[tokio::sync::mpsc::chan::Tx::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::mpsc::chan::Tx::inner]", "ReturnValue.Field[tokio::sync::mpsc::chan::Tx::inner]", "value", "dfc-generated"] + - ["::downgrade", "Argument[self].Field[tokio::sync::mpsc::chan::Tx::inner].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::downgrade", "Argument[self].Field[tokio::sync::mpsc::chan::Tx::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::upgrade", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::sync::mpsc::chan::Tx::inner]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[tokio::sync::mpsc::error::SendTimeoutError::Closed(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio::sync::mpsc::error::SendTimeoutError::Timeout(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0].Field[0]", "ReturnValue.Field[tokio::sync::mpsc::error::TrySendError::Closed(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[tokio::sync::mpsc::error::SendError(0)]", "ReturnValue.Field[tokio::sync::mpsc::error::TrySendError::Closed(0)]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[tokio::sync::mpsc::error::TrySendError::Closed(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio::sync::mpsc::error::TrySendError::Full(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::sync::mpsc::unbounded::UnboundedReceiver::chan]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::mpsc::unbounded::UnboundedSender::chan].Field[tokio::sync::mpsc::chan::Tx::inner]", "ReturnValue.Field[tokio::sync::mpsc::unbounded::UnboundedSender::chan].Field[tokio::sync::mpsc::chan::Tx::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::mpsc::unbounded::UnboundedSender::chan].Reference", "ReturnValue.Field[tokio::sync::mpsc::unbounded::UnboundedSender::chan]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::mpsc::unbounded::UnboundedSender::chan]", "ReturnValue.Field[tokio::sync::mpsc::unbounded::UnboundedSender::chan]", "value", "dfc-generated"] + - ["::downgrade", "Argument[self].Field[tokio::sync::mpsc::unbounded::UnboundedSender::chan].Field[tokio::sync::mpsc::chan::Tx::inner]", "ReturnValue.Field[tokio::sync::mpsc::unbounded::WeakUnboundedSender::chan]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::sync::mpsc::unbounded::UnboundedSender::chan]", "value", "dfc-generated"] + - ["::send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::mpsc::error::SendError(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::mpsc::unbounded::WeakUnboundedSender::chan].Reference", "ReturnValue.Field[tokio::sync::mpsc::unbounded::WeakUnboundedSender::chan]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::mpsc::unbounded::WeakUnboundedSender::chan]", "ReturnValue.Field[tokio::sync::mpsc::unbounded::WeakUnboundedSender::chan]", "value", "dfc-generated"] + - ["::upgrade", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::deref", "Argument[self].Field[tokio::sync::mutex::MappedMutexGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[tokio::sync::mutex::MappedMutexGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::const_new", "Argument[0]", "ReturnValue.Field[tokio::sync::mutex::Mutex::c].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[tokio::sync::mutex::Mutex::c].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::sync::mutex::Mutex::c].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::try_lock", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::mutex::MutexGuard::lock]", "value", "dfc-generated"] + - ["::try_lock_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::mutex::OwnedMutexGuard::lock]", "value", "dfc-generated"] + - ["::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::mutex", "Argument[0].Field[tokio::sync::mutex::MutexGuard::lock]", "ReturnValue", "value", "dfc-generated"] + - ["::try_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[tokio::sync::mutex::OwnedMappedMutexGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[tokio::sync::mutex::OwnedMappedMutexGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::mutex", "Argument[0].Field[tokio::sync::mutex::OwnedMutexGuard::lock]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::notified", "Argument[self]", "ReturnValue.Field[tokio::sync::notify::Notified::notify]", "value", "dfc-generated"] + - ["::as_raw", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::from_raw", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::set", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::once_cell::SetError::AlreadyInitializedError(0)]", "value", "dfc-generated"] + - ["::set", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::once_cell::SetError::InitializingError(0)]", "value", "dfc-generated"] + - ["::const_new", "Argument[0]", "ReturnValue.Field[tokio::sync::rwlock::RwLock::c].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::const_with_max_readers", "Argument[0]", "ReturnValue.Field[tokio::sync::rwlock::RwLock::c].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::const_with_max_readers", "Argument[1]", "ReturnValue.Field[tokio::sync::rwlock::RwLock::mr]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[tokio::sync::rwlock::RwLock::c].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::sync::rwlock::RwLock::c].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::try_read", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::try_read_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::rwlock::owned_read_guard::OwnedRwLockReadGuard::lock]", "value", "dfc-generated"] + - ["::try_write", "Argument[self].Field[tokio::sync::rwlock::RwLock::mr]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::rwlock::write_guard::RwLockWriteGuard::permits_acquired]", "value", "dfc-generated"] + - ["::try_write_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::rwlock::owned_write_guard::OwnedRwLockWriteGuard::lock]", "value", "dfc-generated"] + - ["::with_max_readers", "Argument[0]", "ReturnValue.Field[tokio::sync::rwlock::RwLock::c].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::with_max_readers", "Argument[1]", "ReturnValue.Field[tokio::sync::rwlock::RwLock::mr]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[tokio::sync::rwlock::owned_read_guard::OwnedRwLockReadGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::rwlock", "Argument[0].Field[tokio::sync::rwlock::owned_read_guard::OwnedRwLockReadGuard::lock]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[tokio::sync::rwlock::owned_write_guard::OwnedRwLockWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[tokio::sync::rwlock::owned_write_guard::OwnedRwLockWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::downgrade_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::into_mapped", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::rwlock", "Argument[0].Field[tokio::sync::rwlock::owned_write_guard::OwnedRwLockWriteGuard::lock]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::try_downgrade_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_downgrade_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::try_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[tokio::sync::rwlock::owned_write_guard_mapped::OwnedRwLockMappedWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[tokio::sync::rwlock::owned_write_guard_mapped::OwnedRwLockMappedWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::rwlock", "Argument[0].Field[tokio::sync::rwlock::owned_write_guard_mapped::OwnedRwLockMappedWriteGuard::lock]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[tokio::sync::rwlock::read_guard::RwLockReadGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[tokio::sync::rwlock::write_guard::RwLockWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[tokio::sync::rwlock::write_guard::RwLockWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::downgrade_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::into_mapped", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_downgrade_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_downgrade_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::try_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[tokio::sync::rwlock::write_guard_mapped::RwLockMappedWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[tokio::sync::rwlock::write_guard_mapped::RwLockMappedWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - ["::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::num_permits", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::semaphore", "Argument[self].Field[tokio::sync::semaphore::OwnedSemaphorePermit::sem]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::split", "Argument[self].Field[tokio::sync::semaphore::OwnedSemaphorePermit::sem].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::sync::semaphore::OwnedSemaphorePermit::sem]", "value", "dfc-generated"] + - ["::split", "Argument[self].Field[tokio::sync::semaphore::OwnedSemaphorePermit::sem]", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::sync::semaphore::OwnedSemaphorePermit::sem]", "value", "dfc-generated"] + - ["::acquire", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::SemaphorePermit::sem]", "value", "dfc-generated"] + - ["::acquire_many", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::SemaphorePermit::permits]", "value", "dfc-generated"] + - ["::acquire_many", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::SemaphorePermit::sem]", "value", "dfc-generated"] + - ["::acquire_many_owned", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::OwnedSemaphorePermit::permits]", "value", "dfc-generated"] + - ["::acquire_many_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::OwnedSemaphorePermit::sem]", "value", "dfc-generated"] + - ["::acquire_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::OwnedSemaphorePermit::sem]", "value", "dfc-generated"] + - ["::forget_permits", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::try_acquire", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::SemaphorePermit::sem]", "value", "dfc-generated"] + - ["::try_acquire_many", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::SemaphorePermit::permits]", "value", "dfc-generated"] + - ["::try_acquire_many", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::SemaphorePermit::sem]", "value", "dfc-generated"] + - ["::try_acquire_many_owned", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::OwnedSemaphorePermit::permits]", "value", "dfc-generated"] + - ["::try_acquire_many_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::OwnedSemaphorePermit::sem]", "value", "dfc-generated"] + - ["::try_acquire_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::OwnedSemaphorePermit::sem]", "value", "dfc-generated"] + - ["::num_permits", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::split", "Argument[self].Field[tokio::sync::semaphore::SemaphorePermit::sem]", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::sync::semaphore::SemaphorePermit::sem]", "value", "dfc-generated"] + - ["::has_changed", "Argument[self].Field[tokio::sync::watch::Ref::has_changed]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::watch::Sender::shared].Reference", "ReturnValue.Field[tokio::sync::watch::Sender::shared]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio::sync::watch::Sender::shared]", "ReturnValue.Field[tokio::sync::watch::Sender::shared]", "value", "dfc-generated"] + - ["::send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::watch::error::SendError(0)]", "value", "dfc-generated"] + - ["::send_replace", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["::subscribe", "Argument[self].Field[tokio::sync::watch::Sender::shared].Reference", "ReturnValue.Field[tokio::sync::watch::Receiver::shared]", "value", "dfc-generated"] + - ["::subscribe", "Argument[self].Field[tokio::sync::watch::Sender::shared]", "ReturnValue.Field[tokio::sync::watch::Receiver::shared]", "value", "dfc-generated"] + - ["::version", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::coop::Coop::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::coop::Coop::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::coop::unconstrained::Unconstrained::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::coop::unconstrained::Unconstrained::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[tokio::task::join_set::JoinSet::inner].Field[tokio::util::idle_notified_set::IdleNotifiedSet::length]", "ReturnValue", "value", "dfc-generated"] + - ["::try_join_next", "Argument[self].Field[tokio::task::join_set::JoinSet::inner]", "ReturnValue.Field[tokio::util::idle_notified_set::EntryInOneOfTheLists::set].Reference", "value", "dfc-generated"] + - ["::try_join_next", "Argument[self].Field[tokio::task::join_set::JoinSet::inner]", "ReturnValue.Field[tokio::util::idle_notified_set::EntryInOneOfTheLists::set]", "value", "dfc-generated"] + - ["::try_join_next_with_id", "Argument[self].Field[tokio::task::join_set::JoinSet::inner]", "ReturnValue.Field[tokio::util::idle_notified_set::EntryInOneOfTheLists::set].Reference", "value", "dfc-generated"] + - ["::try_join_next_with_id", "Argument[self].Field[tokio::task::join_set::JoinSet::inner]", "ReturnValue.Field[tokio::util::idle_notified_set::EntryInOneOfTheLists::set]", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::scope", "Argument[0]", "ReturnValue.Field[tokio::task::task_local::TaskLocalFuture::slot].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::scope", "Argument[1]", "ReturnValue.Field[tokio::task::task_local::TaskLocalFuture::future].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::scope", "Argument[self]", "ReturnValue.Field[tokio::task::task_local::TaskLocalFuture::local]", "value", "dfc-generated"] + - ["::sync_scope", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::task_local::TaskLocalFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::task_local::TaskLocalFuture::local]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::task_local::TaskLocalFuture::slot]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::task_local::TaskLocalFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::task_local::TaskLocalFuture::local]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::task_local::TaskLocalFuture::slot]", "ReturnValue", "value", "dfc-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[tokio::time::error::Error(0)]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[tokio::time::instant::Instant::std]", "value", "dfc-generated"] + - ["::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::add_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::sub_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["::from_std", "Argument[0]", "ReturnValue.Field[tokio::time::instant::Instant::std]", "value", "dfc-generated"] + - ["::into_std", "Argument[self].Field[tokio::time::instant::Instant::std]", "ReturnValue", "value", "dfc-generated"] + - ["::missed_tick_behavior", "Argument[self].Field[tokio::time::interval::Interval::missed_tick_behavior]", "ReturnValue", "value", "dfc-generated"] + - ["::period", "Argument[self].Field[tokio::time::interval::Interval::period]", "ReturnValue", "value", "dfc-generated"] + - ["::set_missed_tick_behavior", "Argument[0]", "Argument[self].Field[tokio::time::interval::Interval::missed_tick_behavior]", "value", "dfc-generated"] + - ["::deadline", "Argument[self].Field[tokio::time::sleep::Sleep::entry].Field[tokio::runtime::time::entry::TimerEntry::deadline]", "ReturnValue", "value", "dfc-generated"] + - ["::new_timeout", "Argument[0]", "ReturnValue.Field[tokio::time::sleep::Sleep::entry].Field[tokio::runtime::time::entry::TimerEntry::deadline]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::time::sleep::Sleep::entry]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::time::sleep::Sleep::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::time::sleep::Sleep::entry]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::time::sleep::Sleep::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio::time::timeout::Timeout::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio::time::timeout::Timeout::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio::time::timeout::Timeout::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new_with_delay", "Argument[0]", "ReturnValue.Field[tokio::time::timeout::Timeout::value]", "value", "dfc-generated"] + - ["::new_with_delay", "Argument[1]", "ReturnValue.Field[tokio::time::timeout::Timeout::delay]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::time::timeout::Timeout::delay]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::time::timeout::Timeout::value]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::time::timeout::Timeout::delay]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::time::timeout::Timeout::value]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::pack", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::pack", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["::pack", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::unpack", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::unpack", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::deref", "Argument[self].Field[tokio::util::cacheline::CachePadded::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[tokio::util::cacheline::CachePadded::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::util::cacheline::CachePadded::value]", "value", "dfc-generated"] + - ["::insert_idle", "Argument[self]", "ReturnValue.Field[tokio::util::idle_notified_set::EntryInOneOfTheLists::set]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[tokio::util::idle_notified_set::IdleNotifiedSet::length]", "ReturnValue", "value", "dfc-generated"] + - ["::pop_notified", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::util::idle_notified_set::EntryInOneOfTheLists::set]", "value", "dfc-generated"] + - ["::try_pop_notified", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::util::idle_notified_set::EntryInOneOfTheLists::set]", "value", "dfc-generated"] + - ["::drain_filter", "Argument[0]", "ReturnValue.Field[tokio::util::linked_list::DrainFilter::filter]", "value", "dfc-generated"] + - ["::drain_filter", "Argument[self].Field[tokio::util::linked_list::LinkedList::head]", "ReturnValue.Field[tokio::util::linked_list::DrainFilter::curr]", "value", "dfc-generated"] + - ["::drain_filter", "Argument[self]", "ReturnValue.Field[tokio::util::linked_list::DrainFilter::list]", "value", "dfc-generated"] + - ["::last", "Argument[self].Field[tokio::util::linked_list::LinkedList::tail].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::pop_back", "Argument[self].Field[tokio::util::linked_list::LinkedList::tail].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::pop_back", "Argument[self].Field[tokio::util::linked_list::LinkedList::tail].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::pop_front", "Argument[self].Field[tokio::util::linked_list::LinkedList::head].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::pop_front", "Argument[self].Field[tokio::util::linked_list::LinkedList::head].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::expose_provenance", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_exposed_addr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::from_seed", "Argument[0].Field[tokio::util::rand::RngSeed::r]", "ReturnValue.Field[tokio::util::rand::FastRand::two]", "value", "dfc-generated"] + - ["::from_seed", "Argument[0].Field[tokio::util::rand::RngSeed::s]", "ReturnValue.Field[tokio::util::rand::FastRand::one]", "value", "dfc-generated"] + - ["::replace_seed", "Argument[0].Field[tokio::util::rand::RngSeed::r]", "Argument[self].Field[tokio::util::rand::FastRand::two]", "value", "dfc-generated"] + - ["::replace_seed", "Argument[0].Field[tokio::util::rand::RngSeed::s]", "Argument[self].Field[tokio::util::rand::FastRand::one]", "value", "dfc-generated"] + - ["::replace_seed", "Argument[self].Field[tokio::util::rand::FastRand::one]", "ReturnValue.Field[tokio::util::rand::RngSeed::s]", "value", "dfc-generated"] + - ["::replace_seed", "Argument[self].Field[tokio::util::rand::FastRand::two]", "ReturnValue.Field[tokio::util::rand::RngSeed::r]", "value", "dfc-generated"] + - ["::lock_shard", "Argument[self].Field[tokio::util::sharded_list::ShardedList::added]", "ReturnValue.Field[tokio::util::sharded_list::ShardGuard::added].Reference", "value", "dfc-generated"] + - ["::lock_shard", "Argument[self].Field[tokio::util::sharded_list::ShardedList::count]", "ReturnValue.Field[tokio::util::sharded_list::ShardGuard::count].Reference", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::shard_size", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[tokio::util::sync_wrapper::SyncWrapper::value]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::util::sync_wrapper::SyncWrapper::value]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio::util::try_lock::TryLock::data].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["::try_lock", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::util::try_lock::LockGuard::lock]", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[tokio::util::wake::WakerRef::waker]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_stream::stream_close::StreamNotifyClose::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_close::StreamNotifyClose::inner].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_close::StreamNotifyClose::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_close::StreamNotifyClose::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::all::AllFuture::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::all::AllFuture::f]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::all::AllFuture::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::all::AllFuture::stream]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::all::AllFuture::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::all::AllFuture::stream]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::any::AnyFuture::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::any::AnyFuture::f]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::any::AnyFuture::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::any::AnyFuture::stream]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::any::AnyFuture::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::any::AnyFuture::stream]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::chain::Chain::b]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::chain::Chain::a]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::chain::Chain::b]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::chain::Chain::a]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::chain::Chain::b]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::chunks_timeout::ChunksTimeout::cap]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[tokio_stream::stream_ext::chunks_timeout::ChunksTimeout::duration]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::collect::Collect::stream]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::collect::Collect::collection]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::collect::Collect::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::collect::Collect::collection]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::collect::Collect::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::filter::Filter::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::filter::Filter::f]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter::Filter::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter::Filter::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter::Filter::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter::Filter::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::filter_map::FilterMap::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::filter_map::FilterMap::f]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter_map::FilterMap::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter_map::FilterMap::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter_map::FilterMap::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter_map::FilterMap::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::fold::FoldFuture::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::fold::FoldFuture::acc].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[2]", "ReturnValue.Field[tokio_stream::stream_ext::fold::FoldFuture::f]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fold::FoldFuture::acc]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fold::FoldFuture::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fold::FoldFuture::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fold::FoldFuture::acc]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fold::FoldFuture::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fold::FoldFuture::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::fuse::Fuse::stream].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fuse::Fuse::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fuse::Fuse::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::map::Map::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::map::Map::f]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map::Map::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map::Map::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map::Map::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map::Map::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::map_while::MapWhile::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::map_while::MapWhile::f]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map_while::MapWhile::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map_while::MapWhile::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map_while::MapWhile::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map_while::MapWhile::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::merge::Merge::a]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::merge::Merge::a_first]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::merge::Merge::b]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::merge::Merge::a]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::merge::Merge::a_first]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::merge::Merge::b]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::next::Next::stream]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::next::Next::stream]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::next::Next::stream]", "ReturnValue", "value", "dfc-generated"] + - ["::peek", "Argument[self].Field[tokio_stream::stream_ext::peekable::Peekable::peek].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::peekable::Peekable::peek]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::peekable::Peekable::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::peekable::Peekable::peek]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::peekable::Peekable::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::skip::Skip::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::skip::Skip::remaining]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip::Skip::remaining]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip::Skip::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip::Skip::remaining]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip::Skip::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::skip_while::SkipWhile::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::skip_while::SkipWhile::predicate].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip_while::SkipWhile::predicate]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip_while::SkipWhile::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip_while::SkipWhile::predicate]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip_while::SkipWhile::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[tokio_stream::stream_ext::take::Take::remaining]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::size_hint", "Argument[self].Field[tokio_stream::stream_ext::take::Take::remaining]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::take::Take::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::take::Take::remaining]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take::Take::remaining]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take::Take::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take::Take::remaining]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take::Take::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::take_while::TakeWhile::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::take_while::TakeWhile::predicate]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take_while::TakeWhile::done]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take_while::TakeWhile::predicate]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take_while::TakeWhile::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take_while::TakeWhile::done]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take_while::TakeWhile::predicate]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take_while::TakeWhile::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::then::Then::stream]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::then::Then::f]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::then::Then::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::then::Then::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::then::Then::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::then::Then::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::then::Then::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::then::Then::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio_stream::stream_ext::throttle::Throttle::stream]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio_stream::stream_ext::throttle::Throttle::stream]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_stream::stream_ext::throttle::Throttle::stream]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::timeout::Timeout::duration]", "value", "dfc-generated"] + - ["::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::timeout_repeating::TimeoutRepeating::interval]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::timeout_repeating::TimeoutRepeating::interval]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::timeout_repeating::TimeoutRepeating::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::timeout_repeating::TimeoutRepeating::interval]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::timeout_repeating::TimeoutRepeating::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::try_next::TryNext::inner].Field[tokio_stream::stream_ext::next::Next::stream]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::try_next::TryNext::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::try_next::TryNext::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::len", "Argument[self].Field[tokio_stream::stream_map::StreamMap::entries].Field[alloc::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[tokio_stream::wrappers::interval::IntervalStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio_stream::wrappers::interval::IntervalStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_stream::wrappers::interval::IntervalStream::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::wrappers::interval::IntervalStream::inner]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[tokio_stream::wrappers::lines::LinesStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio_stream::wrappers::lines::LinesStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_stream::wrappers::lines::LinesStream::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::wrappers::lines::LinesStream::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::wrappers::lines::LinesStream::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::wrappers::lines::LinesStream::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[tokio_stream::wrappers::mpsc_bounded::ReceiverStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio_stream::wrappers::mpsc_bounded::ReceiverStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_stream::wrappers::mpsc_bounded::ReceiverStream::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::wrappers::mpsc_bounded::ReceiverStream::inner]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[tokio_stream::wrappers::mpsc_unbounded::UnboundedReceiverStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio_stream::wrappers::mpsc_unbounded::UnboundedReceiverStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_stream::wrappers::mpsc_unbounded::UnboundedReceiverStream::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::wrappers::mpsc_unbounded::UnboundedReceiverStream::inner]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[tokio_stream::wrappers::read_dir::ReadDirStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio_stream::wrappers::read_dir::ReadDirStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_stream::wrappers::read_dir::ReadDirStream::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::wrappers::read_dir::ReadDirStream::inner]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[tokio_stream::wrappers::signal_unix::SignalStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio_stream::wrappers::signal_unix::SignalStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_stream::wrappers::signal_unix::SignalStream::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::wrappers::signal_unix::SignalStream::inner]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[tokio_stream::wrappers::split::SplitStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio_stream::wrappers::split::SplitStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_stream::wrappers::split::SplitStream::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::wrappers::split::SplitStream::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::wrappers::split::SplitStream::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::wrappers::split::SplitStream::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[tokio_stream::wrappers::tcp_listener::TcpListenerStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio_stream::wrappers::tcp_listener::TcpListenerStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_stream::wrappers::tcp_listener::TcpListenerStream::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::wrappers::tcp_listener::TcpListenerStream::inner]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[tokio_stream::wrappers::unix_listener::UnixListenerStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio_stream::wrappers::unix_listener::UnixListenerStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_stream::wrappers::unix_listener::UnixListenerStream::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_stream::wrappers::unix_listener::UnixListenerStream::inner]", "value", "dfc-generated"] + - ["::build", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::read", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::read_error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::wait", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::write", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::write_error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::read", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::read_error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::write", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::write_error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::build", "Argument[self].Field[tokio_test::stream_mock::StreamMockBuilder::actions]", "ReturnValue.Field[tokio_test::stream_mock::StreamMock::actions]", "value", "dfc-generated"] + - ["::next", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::wait", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::deref", "Argument[self].Field[tokio_test::task::Spawn::future]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::deref_mut", "Argument[self].Field[tokio_test::task::Spawn::future]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::enter", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_test::task::Spawn::future].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::max_length", "Argument[self].Field[tokio_util::codec::any_delimiter_codec::AnyDelimiterCodec::max_length]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::codec::any_delimiter_codec::AnyDelimiterCodec::seek_delimiters]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_util::codec::any_delimiter_codec::AnyDelimiterCodec::sequence_writer]", "value", "dfc-generated"] + - ["::new_with_max_length", "Argument[2]", "ReturnValue.Field[tokio_util::codec::any_delimiter_codec::AnyDelimiterCodec::max_length]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[tokio_util::codec::any_delimiter_codec::AnyDelimiterCodecError::Io(0)]", "value", "dfc-generated"] + - ["::codec", "Argument[self].Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::codec_mut", "Argument[self].Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from_parts", "Argument[0].Field[tokio_util::codec::framed::FramedParts::codec]", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] + - ["::from_parts", "Argument[0].Field[tokio_util::codec::framed::FramedParts::io]", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Field[tokio_util::codec::framed::FramedParts::codec]", "value", "dfc-generated"] + - ["::into_parts", "Argument[self].Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Field[tokio_util::codec::framed::FramedParts::io]", "value", "dfc-generated"] + - ["::map_codec", "Argument[0].ReturnValue", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] + - ["::map_codec", "Argument[self].Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map_codec", "Argument[self].Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed::Framed::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed::Framed::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::with_capacity", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] + - ["::with_capacity", "Argument[1]", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed::FramedParts::io]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_util::codec::framed::FramedParts::codec]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_impl::FramedImpl::state]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_impl::FramedImpl::state]", "ReturnValue", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Field[tokio_util::codec::framed_impl::RWFrames::read]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow", "Argument[self].Field[tokio_util::codec::framed_impl::RWFrames::write]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self].Field[tokio_util::codec::framed_impl::RWFrames::read]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::borrow_mut", "Argument[self].Field[tokio_util::codec::framed_impl::RWFrames::write]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed_impl::ReadFrame::buffer]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed_impl::WriteFrame::buffer]", "value", "dfc-generated"] + - ["::decoder", "Argument[self].Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::decoder_mut", "Argument[self].Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::map_decoder", "Argument[0].ReturnValue", "ReturnValue.Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] + - ["::map_decoder", "Argument[self].Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map_decoder", "Argument[self].Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] + - ["::map_decoder", "Argument[self].Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::state]", "ReturnValue.Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::state]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_read::FramedRead::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_read::FramedRead::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::with_capacity", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] + - ["::with_capacity", "Argument[1]", "ReturnValue.Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] + - ["::encoder", "Argument[self].Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::encoder_mut", "Argument[self].Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::map_encoder", "Argument[0].ReturnValue", "ReturnValue.Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] + - ["::map_encoder", "Argument[self].Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["::map_encoder", "Argument[self].Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] + - ["::map_encoder", "Argument[self].Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::state]", "ReturnValue.Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::state]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_write::FramedWrite::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_write::FramedWrite::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::big_endian", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::length_adjustment", "Argument[0]", "Argument[self].Field[tokio_util::codec::length_delimited::Builder::length_adjustment]", "value", "dfc-generated"] + - ["::length_adjustment", "Argument[0]", "ReturnValue.Field[tokio_util::codec::length_delimited::Builder::length_adjustment]", "value", "dfc-generated"] + - ["::length_adjustment", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::length_field_length", "Argument[0]", "Argument[self].Field[tokio_util::codec::length_delimited::Builder::length_field_len]", "value", "dfc-generated"] + - ["::length_field_length", "Argument[0]", "ReturnValue.Field[tokio_util::codec::length_delimited::Builder::length_field_len]", "value", "dfc-generated"] + - ["::length_field_length", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::length_field_offset", "Argument[0]", "Argument[self].Field[tokio_util::codec::length_delimited::Builder::length_field_offset]", "value", "dfc-generated"] + - ["::length_field_offset", "Argument[0]", "ReturnValue.Field[tokio_util::codec::length_delimited::Builder::length_field_offset]", "value", "dfc-generated"] + - ["::length_field_offset", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::length_field_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::little_endian", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_frame_length", "Argument[0]", "Argument[self].Field[tokio_util::codec::length_delimited::Builder::max_frame_len]", "value", "dfc-generated"] + - ["::max_frame_length", "Argument[0]", "ReturnValue.Field[tokio_util::codec::length_delimited::Builder::max_frame_len]", "value", "dfc-generated"] + - ["::max_frame_length", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::native_endian", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::new_codec", "Argument[self].Reference", "ReturnValue.Field[tokio_util::codec::length_delimited::LengthDelimitedCodec::builder]", "value", "dfc-generated"] + - ["::new_framed", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] + - ["::new_read", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] + - ["::new_write", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] + - ["::num_skip", "Argument[0]", "Argument[self].Field[tokio_util::codec::length_delimited::Builder::num_skip].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::num_skip", "Argument[0]", "ReturnValue.Field[tokio_util::codec::length_delimited::Builder::num_skip].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::num_skip", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["::max_frame_length", "Argument[self].Field[tokio_util::codec::length_delimited::LengthDelimitedCodec::builder].Field[tokio_util::codec::length_delimited::Builder::max_frame_len]", "ReturnValue", "value", "dfc-generated"] + - ["::set_max_frame_length", "Argument[0]", "Argument[self].Field[tokio_util::codec::length_delimited::LengthDelimitedCodec::builder].Field[tokio_util::codec::length_delimited::Builder::max_frame_len]", "value", "dfc-generated"] + - ["::max_length", "Argument[self].Field[tokio_util::codec::lines_codec::LinesCodec::max_length]", "ReturnValue", "value", "dfc-generated"] + - ["::new_with_max_length", "Argument[0]", "ReturnValue.Field[tokio_util::codec::lines_codec::LinesCodec::max_length]", "value", "dfc-generated"] + - ["::from", "Argument[0]", "ReturnValue.Field[tokio_util::codec::lines_codec::LinesCodecError::Io(0)]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio_util::compat::Compat::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio_util::compat::Compat::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::compat::Compat::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::compat::Compat::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::compat::Compat::seek_pos]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::compat::Compat::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::compat::Compat::seek_pos]", "ReturnValue", "value", "dfc-generated"] + - ["::handle", "Argument[self].Field[tokio_util::context::TokioContext::handle]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::context::TokioContext::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::context::TokioContext::inner]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_util::context::TokioContext::handle]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::context::TokioContext::handle]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::context::TokioContext::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::context::TokioContext::handle]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::context::TokioContext::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio_util::io::copy_to_bytes::CopyToBytes::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio_util::io::copy_to_bytes::CopyToBytes::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::io::copy_to_bytes::CopyToBytes::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::io::copy_to_bytes::CopyToBytes::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::copy_to_bytes::CopyToBytes::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::copy_to_bytes::CopyToBytes::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::io::inspect::InspectReader::reader]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::io::inspect::InspectReader::reader]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_util::io::inspect::InspectReader::f]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectReader::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectReader::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectReader::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectReader::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::io::inspect::InspectWriter::writer]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::io::inspect::InspectWriter::writer]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_util::io::inspect::InspectWriter::f]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectWriter::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectWriter::writer]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectWriter::f]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectWriter::writer]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::io::reader_stream::ReaderStream::reader].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::reader_stream::ReaderStream::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::reader_stream::ReaderStream::capacity]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::reader_stream::ReaderStream::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::reader_stream::ReaderStream::buf]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::reader_stream::ReaderStream::capacity]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::reader_stream::ReaderStream::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::with_capacity", "Argument[0]", "ReturnValue.Field[tokio_util::io::reader_stream::ReaderStream::reader].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::with_capacity", "Argument[1]", "ReturnValue.Field[tokio_util::io::reader_stream::ReaderStream::capacity]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio_util::io::sink_writer::SinkWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio_util::io::sink_writer::SinkWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::io::sink_writer::SinkWriter::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::io::sink_writer::SinkWriter::inner]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::sink_writer::SinkWriter::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::sink_writer::SinkWriter::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio_util::io::stream_reader::StreamReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio_util::io::stream_reader::StreamReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::io::stream_reader::StreamReader::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner_with_chunk", "Argument[self].Field[tokio_util::io::stream_reader::StreamReader::chunk]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["::into_inner_with_chunk", "Argument[self].Field[tokio_util::io::stream_reader::StreamReader::inner]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::io::stream_reader::StreamReader::inner]", "value", "dfc-generated"] + - ["::as_mut", "Argument[self].Field[tokio_util::io::sync_bridge::SyncIoBridge::src]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio_util::io::sync_bridge::SyncIoBridge::src]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_line", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::read_until", "Argument[self]", "Argument[1]", "taint", "df-generated"] + - ["::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::io::sync_bridge::SyncIoBridge::src]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::io::sync_bridge::SyncIoBridge::src]", "value", "dfc-generated"] + - ["::new_with_handle", "Argument[0]", "ReturnValue.Field[tokio_util::io::sync_bridge::SyncIoBridge::src]", "value", "dfc-generated"] + - ["::new_with_handle", "Argument[1]", "ReturnValue.Field[tokio_util::io::sync_bridge::SyncIoBridge::rt]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio_util::sync::cancellation_token::CancellationToken::inner].Reference", "ReturnValue.Field[tokio_util::sync::cancellation_token::CancellationToken::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio_util::sync::cancellation_token::CancellationToken::inner]", "ReturnValue.Field[tokio_util::sync::cancellation_token::CancellationToken::inner]", "value", "dfc-generated"] + - ["::cancelled", "Argument[self]", "ReturnValue.Field[tokio_util::sync::cancellation_token::WaitForCancellationFuture::cancellation_token]", "value", "dfc-generated"] + - ["::cancelled_owned", "Argument[self]", "ReturnValue.Field[tokio_util::sync::cancellation_token::WaitForCancellationFutureOwned::cancellation_token]", "value", "dfc-generated"] + - ["::drop_guard", "Argument[self]", "ReturnValue.Field[tokio_util::sync::cancellation_token::guard::DropGuard::inner].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFuture::cancellation_token]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFuture::cancellation_token]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFutureOwned::cancellation_token]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFutureOwned::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFutureOwned::cancellation_token]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFutureOwned::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::notified", "Argument[self].Field[tokio_util::sync::cancellation_token::tree_node::TreeNode::waker]", "ReturnValue.Field[tokio::sync::notify::Notified::notify].Reference", "value", "dfc-generated"] + - ["::notified", "Argument[self].Field[tokio_util::sync::cancellation_token::tree_node::TreeNode::waker]", "ReturnValue.Field[tokio::sync::notify::Notified::notify]", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::sync::mpsc::PollSendError(0)]", "ReturnValue", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "ReturnValue.Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "ReturnValue.Field[tokio_util::sync::mpsc::PollSender::state].Field[tokio_util::sync::mpsc::State::Idle(0)]", "value", "dfc-generated"] + - ["::abort_send", "Argument[self].Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "Argument[self].Field[tokio_util::sync::mpsc::PollSender::state].Field[tokio_util::sync::mpsc::State::Idle(0)]", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["::new", "Argument[0].Reference", "ReturnValue.Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::sync::mpsc::PollSender::state].Field[tokio_util::sync::mpsc::State::Idle(0)]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio_util::sync::poll_semaphore::PollSemaphore::semaphore].Reference", "ReturnValue.Field[tokio_util::sync::poll_semaphore::PollSemaphore::semaphore]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio_util::sync::poll_semaphore::PollSemaphore::semaphore]", "ReturnValue.Field[tokio_util::sync::poll_semaphore::PollSemaphore::semaphore]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio_util::sync::poll_semaphore::PollSemaphore::semaphore]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::clone_inner", "Argument[self].Field[tokio_util::sync::poll_semaphore::PollSemaphore::semaphore].Reference", "ReturnValue", "value", "dfc-generated"] + - ["::clone_inner", "Argument[self].Field[tokio_util::sync::poll_semaphore::PollSemaphore::semaphore]", "ReturnValue", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::sync::poll_semaphore::PollSemaphore::semaphore]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::sync::poll_semaphore::PollSemaphore::semaphore]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::sync::reusable_box::ReusableBoxFuture::boxed].Reference", "value", "dfc-generated"] + - ["::try_set", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::as_ref", "Argument[self].Field[tokio_util::task::abort_on_drop::AbortOnDropHandle(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::abort_handle", "Argument[self].Field[0].Field[tokio::runtime::task::join::JoinHandle::raw]", "ReturnValue.Field[tokio::runtime::task::abort::AbortHandle::raw]", "value", "dfc-generated"] + - ["::abort_handle", "Argument[self].Field[tokio_util::task::abort_on_drop::AbortOnDropHandle(0)].Field[tokio::runtime::task::join::JoinHandle::raw]", "ReturnValue.Field[tokio::runtime::task::abort::AbortHandle::raw]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio_util::task::task_tracker::TaskTracker::inner].Reference", "ReturnValue.Field[tokio_util::task::task_tracker::TaskTracker::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio_util::task::task_tracker::TaskTracker::inner]", "ReturnValue.Field[tokio_util::task::task_tracker::TaskTracker::inner]", "value", "dfc-generated"] + - ["::token", "Argument[self].Field[tokio_util::task::task_tracker::TaskTracker::inner].Reference", "ReturnValue.Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker].Field[tokio_util::task::task_tracker::TaskTracker::inner]", "value", "dfc-generated"] + - ["::token", "Argument[self].Field[tokio_util::task::task_tracker::TaskTracker::inner]", "ReturnValue.Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker].Field[tokio_util::task::task_tracker::TaskTracker::inner]", "value", "dfc-generated"] + - ["::token", "Argument[self].Reference", "ReturnValue.Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker]", "value", "dfc-generated"] + - ["::track_future", "Argument[0]", "ReturnValue.Field[tokio_util::task::task_tracker::TrackedFuture::future]", "value", "dfc-generated"] + - ["::track_future", "Argument[self].Reference", "ReturnValue.Field[tokio_util::task::task_tracker::TrackedFuture::token].Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker]", "value", "dfc-generated"] + - ["::wait", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::clone", "Argument[self].Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker].Field[tokio_util::task::task_tracker::TaskTracker::inner]", "ReturnValue.Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker].Field[tokio_util::task::task_tracker::TaskTracker::inner]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker].Reference", "ReturnValue.Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker]", "value", "dfc-generated"] + - ["::clone", "Argument[self].Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker]", "ReturnValue.Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker]", "value", "dfc-generated"] + - ["::task_tracker", "Argument[self].Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TaskTrackerWaitFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TaskTrackerWaitFuture::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TaskTrackerWaitFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TaskTrackerWaitFuture::inner]", "ReturnValue", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TrackedFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TrackedFuture::token]", "ReturnValue", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TrackedFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TrackedFuture::token]", "ReturnValue", "value", "dfc-generated"] + - ["::deadline", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::peek", "Argument[self].Field[tokio_util::time::delay_queue::DelayQueue::expired].Field[tokio_util::time::delay_queue::Stack::head]", "ReturnValue", "value", "dfc-generated"] + - ["::poll_expired", "Argument[0].Field[core::task::wake::Context::waker]", "Argument[self].Field[tokio_util::time::delay_queue::DelayQueue::waker].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::remove", "Argument[0].Field[tokio_util::time::delay_queue::Key::index]", "ReturnValue.Field[tokio_util::time::delay_queue::Expired::key].Field[tokio_util::time::delay_queue::Key::index]", "value", "dfc-generated"] + - ["::try_remove", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["::deadline", "Argument[self].Field[tokio_util::time::delay_queue::Expired::deadline]", "ReturnValue", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio_util::time::delay_queue::Expired::data]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio_util::time::delay_queue::Expired::data]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::time::delay_queue::Expired::data]", "ReturnValue", "value", "dfc-generated"] + - ["::key", "Argument[self].Field[tokio_util::time::delay_queue::Expired::key]", "ReturnValue", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[tokio_util::time::delay_queue::KeyInternal::index]", "ReturnValue.Field[tokio_util::time::delay_queue::Key::index]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::time::delay_queue::Key::index]", "value", "dfc-generated"] + - ["::from", "Argument[0].Field[tokio_util::time::delay_queue::Key::index]", "ReturnValue.Field[tokio_util::time::delay_queue::KeyInternal::index]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::time::delay_queue::KeyInternal::index]", "value", "dfc-generated"] + - ["::index", "Argument[self].Field[tokio_util::time::delay_queue::SlabStorage::inner].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::index_mut", "Argument[self].Field[tokio_util::time::delay_queue::SlabStorage::inner].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::peek", "Argument[self].Field[tokio_util::time::delay_queue::Stack::head]", "ReturnValue", "value", "dfc-generated"] + - ["::push", "Argument[0]", "Argument[self].Field[tokio_util::time::delay_queue::Stack::head].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["::elapsed", "Argument[self].Field[tokio_util::time::wheel::Wheel::elapsed]", "ReturnValue", "value", "dfc-generated"] + - ["::insert", "Argument[1]", "ReturnValue.Field[core::result::Result::Err(0)].Field[0]", "value", "dfc-generated"] + - ["::poll", "Argument[0]", "Argument[self].Field[tokio_util::time::wheel::Wheel::elapsed]", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::time::wheel::level::Level::level]", "value", "dfc-generated"] + - ["::next_expiration", "Argument[self].Field[tokio_util::time::wheel::level::Level::level]", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio_util::time::wheel::level::Expiration::level]", "value", "dfc-generated"] + - ["::codec", "Argument[self].Field[tokio_util::udp::frame::UdpFramed::codec]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::codec_mut", "Argument[self].Field[tokio_util::udp::frame::UdpFramed::codec]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_mut", "Argument[self].Field[tokio_util::udp::frame::UdpFramed::socket]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::get_ref", "Argument[self].Field[tokio_util::udp::frame::UdpFramed::socket]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::into_inner", "Argument[self].Field[tokio_util::udp::frame::UdpFramed::socket]", "ReturnValue", "value", "dfc-generated"] + - ["::new", "Argument[0]", "ReturnValue.Field[tokio_util::udp::frame::UdpFramed::socket]", "value", "dfc-generated"] + - ["::new", "Argument[1]", "ReturnValue.Field[tokio_util::udp::frame::UdpFramed::codec]", "value", "dfc-generated"] + - ["::read_buffer", "Argument[self].Field[tokio_util::udp::frame::UdpFramed::rd]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["::read_buffer_mut", "Argument[self].Field[tokio_util::udp::frame::UdpFramed::rd]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["tokio::io::join::join", "Argument[0]", "ReturnValue.Field[tokio::io::join::Join::reader]", "value", "dfc-generated"] + - ["tokio::io::join::join", "Argument[1]", "ReturnValue.Field[tokio::io::join::Join::writer]", "value", "dfc-generated"] + - ["tokio::io::seek::seek", "Argument[0]", "ReturnValue.Field[tokio::io::seek::Seek::seek]", "value", "dfc-generated"] + - ["tokio::io::seek::seek", "Argument[1]", "ReturnValue.Field[tokio::io::seek::Seek::pos].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["tokio::io::util::chain::chain", "Argument[0]", "ReturnValue.Field[tokio::io::util::chain::Chain::first]", "value", "dfc-generated"] + - ["tokio::io::util::chain::chain", "Argument[1]", "ReturnValue.Field[tokio::io::util::chain::Chain::second]", "value", "dfc-generated"] + - ["tokio::io::util::fill_buf::fill_buf", "Argument[0]", "ReturnValue.Field[tokio::io::util::fill_buf::FillBuf::reader].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["tokio::io::util::flush::flush", "Argument[0]", "ReturnValue.Field[tokio::io::util::flush::Flush::a]", "value", "dfc-generated"] + - ["tokio::io::util::lines::lines", "Argument[0]", "ReturnValue.Field[tokio::io::util::lines::Lines::reader]", "value", "dfc-generated"] + - ["tokio::io::util::read::read", "Argument[0]", "ReturnValue.Field[tokio::io::util::read::Read::reader]", "value", "dfc-generated"] + - ["tokio::io::util::read::read", "Argument[1]", "ReturnValue.Field[tokio::io::util::read::Read::buf]", "value", "dfc-generated"] + - ["tokio::io::util::read_buf::read_buf", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_buf::ReadBuf::reader]", "value", "dfc-generated"] + - ["tokio::io::util::read_buf::read_buf", "Argument[1]", "ReturnValue.Field[tokio::io::util::read_buf::ReadBuf::buf]", "value", "dfc-generated"] + - ["tokio::io::util::read_exact::read_exact", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_exact::ReadExact::reader]", "value", "dfc-generated"] + - ["tokio::io::util::read_line::finish_string_read", "Argument[0].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["tokio::io::util::read_line::finish_string_read", "Argument[0].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["tokio::io::util::read_line::finish_string_read", "Argument[1].Field[core::result::Result::Ok(0)]", "Argument[3].Reference", "value", "dfc-generated"] + - ["tokio::io::util::read_line::read_line", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_line::ReadLine::reader]", "value", "dfc-generated"] + - ["tokio::io::util::read_line::read_line", "Argument[1]", "ReturnValue.Field[tokio::io::util::read_line::ReadLine::output]", "value", "dfc-generated"] + - ["tokio::io::util::read_line::read_line_internal", "Argument[4]", "Argument[2]", "taint", "df-generated"] + - ["tokio::io::util::read_to_end::read_to_end", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_to_end::ReadToEnd::reader]", "value", "dfc-generated"] + - ["tokio::io::util::read_to_end::read_to_end", "Argument[1]", "ReturnValue.Field[tokio::io::util::read_to_end::ReadToEnd::buf].Field[tokio::io::util::vec_with_initialized::VecWithInitialized::vec]", "value", "dfc-generated"] + - ["tokio::io::util::read_to_string::read_to_string", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_to_string::ReadToString::reader]", "value", "dfc-generated"] + - ["tokio::io::util::read_to_string::read_to_string", "Argument[1]", "ReturnValue.Field[tokio::io::util::read_to_string::ReadToString::output]", "value", "dfc-generated"] + - ["tokio::io::util::read_until::read_until", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_until::ReadUntil::reader]", "value", "dfc-generated"] + - ["tokio::io::util::read_until::read_until", "Argument[1]", "ReturnValue.Field[tokio::io::util::read_until::ReadUntil::delimiter]", "value", "dfc-generated"] + - ["tokio::io::util::read_until::read_until", "Argument[2]", "ReturnValue.Field[tokio::io::util::read_until::ReadUntil::buf]", "value", "dfc-generated"] + - ["tokio::io::util::repeat::repeat", "Argument[0]", "ReturnValue.Field[tokio::io::util::repeat::Repeat::byte]", "value", "dfc-generated"] + - ["tokio::io::util::shutdown::shutdown", "Argument[0]", "ReturnValue.Field[tokio::io::util::shutdown::Shutdown::a]", "value", "dfc-generated"] + - ["tokio::io::util::split::split", "Argument[0]", "ReturnValue.Field[tokio::io::util::split::Split::reader]", "value", "dfc-generated"] + - ["tokio::io::util::split::split", "Argument[1]", "ReturnValue.Field[tokio::io::util::split::Split::delim]", "value", "dfc-generated"] + - ["tokio::io::util::take::take", "Argument[0]", "ReturnValue.Field[tokio::io::util::take::Take::inner]", "value", "dfc-generated"] + - ["tokio::io::util::take::take", "Argument[1]", "ReturnValue.Field[tokio::io::util::take::Take::limit_]", "value", "dfc-generated"] + - ["tokio::io::util::write::write", "Argument[0]", "ReturnValue.Field[tokio::io::util::write::Write::writer]", "value", "dfc-generated"] + - ["tokio::io::util::write::write", "Argument[1]", "ReturnValue.Field[tokio::io::util::write::Write::buf]", "value", "dfc-generated"] + - ["tokio::io::util::write_all::write_all", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_all::WriteAll::writer]", "value", "dfc-generated"] + - ["tokio::io::util::write_all::write_all", "Argument[1]", "ReturnValue.Field[tokio::io::util::write_all::WriteAll::buf]", "value", "dfc-generated"] + - ["tokio::io::util::write_all_buf::write_all_buf", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_all_buf::WriteAllBuf::writer]", "value", "dfc-generated"] + - ["tokio::io::util::write_all_buf::write_all_buf", "Argument[1]", "ReturnValue.Field[tokio::io::util::write_all_buf::WriteAllBuf::buf]", "value", "dfc-generated"] + - ["tokio::io::util::write_buf::write_buf", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_buf::WriteBuf::writer]", "value", "dfc-generated"] + - ["tokio::io::util::write_buf::write_buf", "Argument[1]", "ReturnValue.Field[tokio::io::util::write_buf::WriteBuf::buf]", "value", "dfc-generated"] + - ["tokio::io::util::write_vectored::write_vectored", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_vectored::WriteVectored::writer]", "value", "dfc-generated"] + - ["tokio::io::util::write_vectored::write_vectored", "Argument[1]", "ReturnValue.Field[tokio::io::util::write_vectored::WriteVectored::bufs]", "value", "dfc-generated"] + - ["tokio::net::tcp::split::split", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["tokio::net::tcp::split_owned::reunite", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::tcp::split_owned::ReuniteError(0)]", "value", "dfc-generated"] + - ["tokio::net::tcp::split_owned::reunite", "Argument[1]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::tcp::split_owned::ReuniteError(1)]", "value", "dfc-generated"] + - ["tokio::net::unix::split::split", "Argument[0]", "ReturnValue.Field[0].Field[tokio::net::unix::split::ReadHalf(0)]", "value", "dfc-generated"] + - ["tokio::net::unix::split::split", "Argument[0]", "ReturnValue.Field[1].Field[tokio::net::unix::split::WriteHalf(0)]", "value", "dfc-generated"] + - ["tokio::net::unix::split_owned::reunite", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::unix::split_owned::ReuniteError(0)]", "value", "dfc-generated"] + - ["tokio::net::unix::split_owned::reunite", "Argument[1]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::unix::split_owned::ReuniteError(1)]", "value", "dfc-generated"] + - ["tokio::runtime::context::runtime::enter_runtime", "Argument[2].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["tokio::runtime::context::runtime_mt::exit_runtime", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["tokio::runtime::context::runtime_mt::exit_runtime", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["tokio::runtime::metrics::batch::duration_as_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["tokio::runtime::scheduler::block_in_place::block_in_place", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["tokio::runtime::scheduler::block_in_place::block_in_place", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["tokio::runtime::scheduler::multi_thread::worker::block_in_place", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["tokio::runtime::scheduler::multi_thread::worker::block_in_place", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["tokio::sync::mpsc::block::offset", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["tokio::sync::mpsc::block::start_index", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["tokio::task::blocking::block_in_place", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["tokio::task::blocking::block_in_place", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["tokio::task::coop::budget", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["tokio::task::coop::cooperative", "Argument[0]", "ReturnValue.Field[tokio::task::coop::Coop::fut]", "value", "dfc-generated"] + - ["tokio::task::coop::unconstrained::unconstrained", "Argument[0]", "ReturnValue.Field[tokio::task::coop::unconstrained::Unconstrained::inner]", "value", "dfc-generated"] + - ["tokio::task::coop::with_unconstrained", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["tokio::time::interval::interval", "Argument[0]", "ReturnValue.Field[tokio::time::interval::Interval::period]", "value", "dfc-generated"] + - ["tokio::time::interval::interval_at", "Argument[1]", "ReturnValue.Field[tokio::time::interval::Interval::period]", "value", "dfc-generated"] + - ["tokio::time::sleep::sleep_until", "Argument[0]", "ReturnValue.Field[tokio::time::sleep::Sleep::entry].Field[tokio::runtime::time::entry::TimerEntry::deadline]", "value", "dfc-generated"] + - ["tokio::util::bit::unpack", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["tokio::util::bit::unpack", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["tokio::util::bit::unpack", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["tokio::util::trace::blocking_task", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["tokio::util::trace::task", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["tokio::util::typeid::try_transmute", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["tokio_macros::entry::main", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["tokio_macros::entry::test", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["tokio_macros::select::clean_pattern_macro", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["tokio_macros::select_priv_clean_pattern", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["tokio_stream::stream_ext::throttle::throttle", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::throttle::Throttle::duration]", "value", "dfc-generated"] + - ["tokio_stream::stream_ext::throttle::throttle", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::throttle::Throttle::stream]", "value", "dfc-generated"] + - ["tokio_test::task::spawn", "Argument[0]", "ReturnValue.Field[tokio_test::task::Spawn::future].Reference", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["::write", "Argument[0]", "log-injection", "df-generated"] + - ["::poll_write", "Argument[1]", "log-injection", "df-generated"] + - ["::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["::poll_write", "Argument[1]", "log-injection", "df-generated"] + - ["::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["::copy_to", "Argument[0]", "log-injection", "df-generated"] + - ["::put_slice", "Argument[self]", "log-injection", "df-generated"] + - ["::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["::unsync_load", "Argument[self]", "pointer-access", "df-generated"] + - ["::unsync_load", "Argument[self]", "pointer-access", "df-generated"] + - ["::unsync_load", "Argument[self]", "pointer-access", "df-generated"] + - ["::with", "Argument[self]", "pointer-access", "df-generated"] + - ["::poll_recv", "Argument[self]", "log-injection", "df-generated"] + - ["::shutdown", "Argument[0]", "pointer-access", "df-generated"] + - ["::pop", "Argument[self]", "pointer-access", "df-generated"] + - ["::push", "Argument[self]", "pointer-access", "df-generated"] + - ["::pop", "Argument[self]", "pointer-access", "df-generated"] + - ["::pop_n", "Argument[self]", "pointer-access", "df-generated"] + - ["::push", "Argument[self]", "pointer-access", "df-generated"] + - ["::push_batch", "Argument[self]", "pointer-access", "df-generated"] + - ["::push", "Argument[self]", "pointer-access", "df-generated"] + - ["::push_batch", "Argument[self]", "pointer-access", "df-generated"] + - ["::set_queue_next", "Argument[0]", "pointer-access", "df-generated"] + - ["::transition_to_terminal", "Argument[0]", "log-injection", "df-generated"] + - ["::poll", "Argument[0]", "log-injection", "df-generated"] + - ["::poll", "Argument[self]", "log-injection", "df-generated"] + - ["::remove", "Argument[self]", "log-injection", "df-generated"] + - ["::next_expiration", "Argument[0]", "log-injection", "df-generated"] + - ["::next_expiration", "Argument[self]", "log-injection", "df-generated"] + - ["::register_listener", "Argument[0]", "log-injection", "df-generated"] + - ["::drop", "Argument[self]", "log-injection", "df-generated"] + - ["::release", "Argument[0]", "log-injection", "df-generated"] + - ["::drop", "Argument[self]", "log-injection", "df-generated"] + - ["::add_permits", "Argument[0]", "log-injection", "df-generated"] + - ["::into_inner", "Argument[self]", "pointer-access", "df-generated"] + - ["::drop", "Argument[self]", "log-injection", "df-generated"] + - ["::drop", "Argument[self]", "log-injection", "df-generated"] + - ["::add_permits", "Argument[0]", "log-injection", "df-generated"] + - ["::drop", "Argument[self]", "log-injection", "df-generated"] + - ["::insert", "Argument[self]", "log-injection", "df-generated"] + - ["::poll_next_many", "Argument[self]", "log-injection", "df-generated"] + - ["::remove", "Argument[self]", "log-injection", "df-generated"] + - ["::read", "Argument[self]", "log-injection", "df-generated"] + - ["::read_error", "Argument[self]", "log-injection", "df-generated"] + - ["::wait", "Argument[self]", "log-injection", "df-generated"] + - ["::write", "Argument[self]", "log-injection", "df-generated"] + - ["::write_error", "Argument[self]", "log-injection", "df-generated"] + - ["::next", "Argument[self]", "log-injection", "df-generated"] + - ["::wait", "Argument[self]", "log-injection", "df-generated"] + - ["::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["::drop", "Argument[self]", "pointer-access", "df-generated"] + - ["::fmt", "Argument[self]", "pointer-access", "df-generated"] + - ["::poll_next", "Argument[self]", "log-injection", "df-generated"] + - ["::poll_expired", "Argument[self]", "log-injection", "df-generated"] + - ["::remove", "Argument[self]", "log-injection", "df-generated"] + - ["::reset", "Argument[self]", "log-injection", "df-generated"] + - ["::reset_at", "Argument[self]", "log-injection", "df-generated"] + - ["::try_remove", "Argument[self]", "log-injection", "df-generated"] + - ["::index", "Argument[0]", "log-injection", "df-generated"] + - ["::index_mut", "Argument[0]", "log-injection", "df-generated"] + - ["::poll", "Argument[0]", "log-injection", "df-generated"] + - ["::poll", "Argument[self]", "log-injection", "df-generated"] + - ["::remove", "Argument[self]", "log-injection", "df-generated"] + - ["::next_expiration", "Argument[0]", "log-injection", "df-generated"] + - ["::next_expiration", "Argument[self]", "log-injection", "df-generated"] + - ["signal_ctrl_c::support::signal::send_signal", "Argument[0]", "log-injection", "df-generated"] + - ["signal_drop_recv::support::signal::send_signal", "Argument[0]", "log-injection", "df-generated"] + - ["signal_drop_rt::support::signal::send_signal", "Argument[0]", "log-injection", "df-generated"] + - ["signal_drop_signal::support::signal::send_signal", "Argument[0]", "log-injection", "df-generated"] + - ["signal_multi_rt::support::signal::send_signal", "Argument[0]", "log-injection", "df-generated"] + - ["signal_notify_both::support::signal::send_signal", "Argument[0]", "log-injection", "df-generated"] + - ["signal_realtime::support::signal::send_signal", "Argument[0]", "log-injection", "df-generated"] + - ["signal_twice::support::signal::send_signal", "Argument[0]", "log-injection", "df-generated"] + - ["signal_usr1::support::signal::send_signal", "Argument[0]", "log-injection", "df-generated"] + - ["tokio::signal::unix::signal", "Argument[0]", "log-injection", "df-generated"] + - ["tokio::signal::unix::signal_with_handle", "Argument[0]", "log-injection", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["::file_name", "ReturnValue", "file", "df-generated"] + - ["::path", "ReturnValue", "file", "df-generated"] + - ["connect-tcp::connect", "ReturnValue", "remote", "df-generated"] + - ["tokio::runtime::context::runtime_mt::exit_runtime", "ReturnValue", "file", "df-generated"] + - ["tokio::runtime::scheduler::block_in_place::block_in_place", "ReturnValue", "file", "df-generated"] + - ["tokio::runtime::scheduler::multi_thread::worker::block_in_place", "ReturnValue", "file", "df-generated"] + - ["tokio::task::blocking::block_in_place", "ReturnValue", "file", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-benches.model.yml b/rust/ql/lib/ext/generated/tokio/repo-benches.model.yml deleted file mode 100644 index d371cb1ae58e..000000000000 --- a/rust/ql/lib/ext/generated/tokio/repo-benches.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["repo::benches", "::poll_read", "Argument[1]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-macros.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-macros.model.yml deleted file mode 100644 index d75cefcd1ebe..000000000000 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-macros.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -# 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/tokio-rs/tokio:tokio-macros", "crate::entry::main", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-macros", "crate::entry::test", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-macros", "crate::select::clean_pattern_macro", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-macros", "crate::select_priv_clean_pattern", "Argument[0]", "ReturnValue", "value", "dfc-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 deleted file mode 100644 index 76217f9951fc..000000000000 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-stream.model.yml +++ /dev/null @@ -1,90 +0,0 @@ -# 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/tokio-rs/tokio:tokio-stream", "::extend", "Argument[2].Field[crate::result::Result::Err(0)]", "Argument[1].Reference.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[crate::stream_close::StreamNotifyClose::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_close::StreamNotifyClose::inner].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::all::AllFuture::stream]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::all::AllFuture::f]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::any::AnyFuture::stream]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::any::AnyFuture::f]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::chain::Chain::b]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::chunks_timeout::ChunksTimeout::cap]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[2]", "ReturnValue.Field[crate::stream_ext::chunks_timeout::ChunksTimeout::duration]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::collect::Collect::stream]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::filter::Filter::stream]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::filter::Filter::f]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::filter_map::FilterMap::stream]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::filter_map::FilterMap::f]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::fold::FoldFuture::stream]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::fold::FoldFuture::acc].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[2]", "ReturnValue.Field[crate::stream_ext::fold::FoldFuture::f]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::fuse::Fuse::stream].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::map::Map::stream]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::map::Map::f]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::take_while::TakeWhile::stream]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::take_while::TakeWhile::predicate]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::then::Then::stream]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::then::Then::f]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::get_mut", "Argument[self].Field[crate::stream_ext::throttle::Throttle::stream]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::get_ref", "Argument[self].Field[crate::stream_ext::throttle::Throttle::stream]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[crate::stream_ext::throttle::Throttle::stream]", "ReturnValue", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::wrappers::interval::IntervalStream::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_mut", "Argument[self].Field[crate::wrappers::lines::LinesStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[crate::wrappers::lines::LinesStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[crate::wrappers::lines::LinesStream::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::wrappers::lines::LinesStream::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_mut", "Argument[self].Field[crate::wrappers::mpsc_bounded::ReceiverStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[crate::wrappers::mpsc_bounded::ReceiverStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[crate::wrappers::mpsc_bounded::ReceiverStream::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::wrappers::mpsc_bounded::ReceiverStream::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_mut", "Argument[self].Field[crate::wrappers::mpsc_unbounded::UnboundedReceiverStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[crate::wrappers::mpsc_unbounded::UnboundedReceiverStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[crate::wrappers::mpsc_unbounded::UnboundedReceiverStream::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::wrappers::mpsc_unbounded::UnboundedReceiverStream::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_mut", "Argument[self].Field[crate::wrappers::read_dir::ReadDirStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[crate::wrappers::read_dir::ReadDirStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[crate::wrappers::read_dir::ReadDirStream::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::wrappers::read_dir::ReadDirStream::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_mut", "Argument[self].Field[crate::wrappers::signal_unix::SignalStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[crate::wrappers::signal_unix::SignalStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[crate::wrappers::signal_unix::SignalStream::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::wrappers::signal_unix::SignalStream::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_mut", "Argument[self].Field[crate::wrappers::split::SplitStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[crate::wrappers::split::SplitStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[crate::wrappers::split::SplitStream::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::wrappers::split::SplitStream::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_mut", "Argument[self].Field[crate::wrappers::tcp_listener::TcpListenerStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[crate::wrappers::tcp_listener::TcpListenerStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[crate::wrappers::tcp_listener::TcpListenerStream::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::wrappers::tcp_listener::TcpListenerStream::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_mut", "Argument[self].Field[crate::wrappers::unix_listener::UnixListenerStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[crate::wrappers::unix_listener::UnixListenerStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[crate::wrappers::unix_listener::UnixListenerStream::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::wrappers::unix_listener::UnixListenerStream::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "crate::stream_ext::throttle::throttle", "Argument[0]", "ReturnValue.Field[crate::stream_ext::throttle::Throttle::duration]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "crate::stream_ext::throttle::throttle", "Argument[1]", "ReturnValue.Field[crate::stream_ext::throttle::Throttle::stream]", "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 deleted file mode 100644 index cff2c622acff..000000000000 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-test.model.yml +++ /dev/null @@ -1,24 +0,0 @@ -# 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/tokio-rs/tokio:tokio-test", "::build", "Argument[self].Field[crate::io::Builder::actions].Reference", "ReturnValue.Field[crate::io::Mock::inner].Field[crate::io::Inner::actions]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::build", "Argument[self].Field[crate::io::Builder::name].Reference", "ReturnValue.Field[crate::io::Mock::inner].Field[crate::io::Inner::name]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::read", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::read_error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::wait", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::write", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::write_error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::read", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::read_error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::write", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::write_error", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::build", "Argument[self].Field[crate::stream_mock::StreamMockBuilder::actions]", "ReturnValue.Field[crate::stream_mock::StreamMock::actions]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::next", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::wait", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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"] 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 deleted file mode 100644 index db6e6afc9445..000000000000 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-util.model.yml +++ /dev/null @@ -1,206 +0,0 @@ -# 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/tokio-rs/tokio:tokio-util", "::from", "Argument[0]", "ReturnValue.Field[crate::Op::Data(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::max_length", "Argument[self].Field[crate::codec::any_delimiter_codec::AnyDelimiterCodec::max_length]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::codec::any_delimiter_codec::AnyDelimiterCodec::seek_delimiters]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[crate::codec::any_delimiter_codec::AnyDelimiterCodec::sequence_writer]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new_with_max_length", "Argument[2]", "ReturnValue.Field[crate::codec::any_delimiter_codec::AnyDelimiterCodec::max_length]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::from", "Argument[0]", "ReturnValue.Field[crate::codec::any_delimiter_codec::AnyDelimiterCodecError::Io(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::codec", "Argument[self].Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::codec_mut", "Argument[self].Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::from_parts", "Argument[0].Field[crate::codec::framed::FramedParts::codec]", "ReturnValue.Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::from_parts", "Argument[0].Field[crate::codec::framed::FramedParts::io]", "ReturnValue.Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_mut", "Argument[self].Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_parts", "Argument[self].Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Field[crate::codec::framed::FramedParts::codec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_parts", "Argument[self].Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Field[crate::codec::framed::FramedParts::io]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_codec", "Argument[0].ReturnValue", "ReturnValue.Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_codec", "Argument[self].Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_codec", "Argument[self].Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::with_capacity", "Argument[0]", "ReturnValue.Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::with_capacity", "Argument[1]", "ReturnValue.Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::codec::framed::FramedParts::io]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[crate::codec::framed::FramedParts::codec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::borrow", "Argument[self].Field[crate::codec::framed_impl::RWFrames::read]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::borrow", "Argument[self].Field[crate::codec::framed_impl::RWFrames::write]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::borrow_mut", "Argument[self].Field[crate::codec::framed_impl::RWFrames::read]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::borrow_mut", "Argument[self].Field[crate::codec::framed_impl::RWFrames::write]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::from", "Argument[0]", "ReturnValue.Field[crate::codec::framed_impl::ReadFrame::buffer]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::from", "Argument[0]", "ReturnValue.Field[crate::codec::framed_impl::WriteFrame::buffer]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::decoder", "Argument[self].Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::decoder_mut", "Argument[self].Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_mut", "Argument[self].Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_decoder", "Argument[0].ReturnValue", "ReturnValue.Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_decoder", "Argument[self].Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_decoder", "Argument[self].Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_decoder", "Argument[self].Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::state]", "ReturnValue.Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::state]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::with_capacity", "Argument[0]", "ReturnValue.Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::with_capacity", "Argument[1]", "ReturnValue.Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::encoder", "Argument[self].Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::encoder_mut", "Argument[self].Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_mut", "Argument[self].Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_encoder", "Argument[0].ReturnValue", "ReturnValue.Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_encoder", "Argument[self].Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_encoder", "Argument[self].Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_encoder", "Argument[self].Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::state]", "ReturnValue.Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::state]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::big_endian", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::length_adjustment", "Argument[0]", "Argument[self].Field[crate::codec::length_delimited::Builder::length_adjustment]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::length_adjustment", "Argument[0]", "ReturnValue.Field[crate::codec::length_delimited::Builder::length_adjustment]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::length_adjustment", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::length_field_length", "Argument[0]", "Argument[self].Field[crate::codec::length_delimited::Builder::length_field_len]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::length_field_length", "Argument[0]", "ReturnValue.Field[crate::codec::length_delimited::Builder::length_field_len]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::length_field_length", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::length_field_offset", "Argument[0]", "Argument[self].Field[crate::codec::length_delimited::Builder::length_field_offset]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::length_field_offset", "Argument[0]", "ReturnValue.Field[crate::codec::length_delimited::Builder::length_field_offset]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::length_field_offset", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::length_field_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::little_endian", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::max_frame_length", "Argument[0]", "Argument[self].Field[crate::codec::length_delimited::Builder::max_frame_len]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::max_frame_length", "Argument[0]", "ReturnValue.Field[crate::codec::length_delimited::Builder::max_frame_len]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::max_frame_length", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::native_endian", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new_codec", "Argument[self].Reference", "ReturnValue.Field[crate::codec::length_delimited::LengthDelimitedCodec::builder]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new_framed", "Argument[0]", "ReturnValue.Field[crate::codec::framed::Framed::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new_read", "Argument[0]", "ReturnValue.Field[crate::codec::framed_read::FramedRead::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new_write", "Argument[0]", "ReturnValue.Field[crate::codec::framed_write::FramedWrite::inner].Field[crate::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::num_skip", "Argument[0]", "Argument[self].Field[crate::codec::length_delimited::Builder::num_skip].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::num_skip", "Argument[0]", "ReturnValue.Field[crate::codec::length_delimited::Builder::num_skip].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::num_skip", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::max_frame_length", "Argument[self].Field[crate::codec::length_delimited::LengthDelimitedCodec::builder].Field[crate::codec::length_delimited::Builder::max_frame_len]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::set_max_frame_length", "Argument[0]", "Argument[self].Field[crate::codec::length_delimited::LengthDelimitedCodec::builder].Field[crate::codec::length_delimited::Builder::max_frame_len]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::max_length", "Argument[self].Field[crate::codec::lines_codec::LinesCodec::max_length]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new_with_max_length", "Argument[0]", "ReturnValue.Field[crate::codec::lines_codec::LinesCodec::max_length]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::from", "Argument[0]", "ReturnValue.Field[crate::codec::lines_codec::LinesCodecError::Io(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_mut", "Argument[self].Field[crate::compat::Compat::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[crate::compat::Compat::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::compat::Compat::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::handle", "Argument[self].Field[crate::context::TokioContext::handle]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::context::TokioContext::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::context::TokioContext::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[crate::context::TokioContext::handle]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_mut", "Argument[self].Field[crate::io::copy_to_bytes::CopyToBytes::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[crate::io::copy_to_bytes::CopyToBytes::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::io::copy_to_bytes::CopyToBytes::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::io::copy_to_bytes::CopyToBytes::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::io::inspect::InspectReader::reader]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::io::inspect::InspectReader::reader]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[crate::io::inspect::InspectReader::f]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::io::inspect::InspectWriter::writer]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::io::inspect::InspectWriter::writer]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[crate::io::inspect::InspectWriter::f]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::io::reader_stream::ReaderStream::reader].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::with_capacity", "Argument[0]", "ReturnValue.Field[crate::io::reader_stream::ReaderStream::reader].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::with_capacity", "Argument[1]", "ReturnValue.Field[crate::io::reader_stream::ReaderStream::capacity]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_mut", "Argument[self].Field[crate::io::sink_writer::SinkWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[crate::io::sink_writer::SinkWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::io::sink_writer::SinkWriter::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::io::sink_writer::SinkWriter::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_mut", "Argument[self].Field[crate::io::stream_reader::StreamReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[crate::io::stream_reader::StreamReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::io::stream_reader::StreamReader::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner_with_chunk", "Argument[self].Field[crate::io::stream_reader::StreamReader::chunk]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner_with_chunk", "Argument[self].Field[crate::io::stream_reader::StreamReader::inner]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new_with_handle", "Argument[1]", "ReturnValue.Field[crate::io::sync_bridge::SyncIoBridge::rt]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::wrap", "Argument[0]", "ReturnValue.Field[crate::context::TokioContext::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::wrap", "Argument[self].Field[crate::runtime::runtime::Runtime::handle]", "ReturnValue.Field[crate::context::TokioContext::handle]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::clone", "Argument[self].Field[crate::sync::cancellation_token::CancellationToken::inner].Reference", "ReturnValue.Field[crate::sync::cancellation_token::CancellationToken::inner]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::sync::mpsc::PollSendError(0)]", "ReturnValue", "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::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::clone", "Argument[self].Field[crate::sync::poll_semaphore::PollSemaphore::semaphore].Reference", "ReturnValue.Field[crate::sync::poll_semaphore::PollSemaphore::semaphore]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::as_ref", "Argument[self].Field[crate::sync::poll_semaphore::PollSemaphore::semaphore]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::abort_handle", "Argument[self].Field[0].Field[crate::runtime::task::join::JoinHandle::raw]", "ReturnValue.Field[crate::runtime::task::abort::AbortHandle::raw]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::abort_handle", "Argument[self].Field[crate::task::abort_on_drop::AbortOnDropHandle(0)].Field[crate::runtime::task::join::JoinHandle::raw]", "ReturnValue.Field[crate::runtime::task::abort::AbortHandle::raw]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::clone", "Argument[self].Field[crate::task::task_tracker::TaskTracker::inner].Reference", "ReturnValue.Field[crate::task::task_tracker::TaskTracker::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::token", "Argument[self].Field[crate::task::task_tracker::TaskTracker::inner].Reference", "ReturnValue.Field[crate::task::task_tracker::TaskTrackerToken::task_tracker].Field[crate::task::task_tracker::TaskTracker::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::token", "Argument[self].Reference", "ReturnValue.Field[crate::task::task_tracker::TaskTrackerToken::task_tracker]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::track_future", "Argument[0]", "ReturnValue.Field[crate::task::task_tracker::TrackedFuture::future]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::track_future", "Argument[self].Reference", "ReturnValue.Field[crate::task::task_tracker::TrackedFuture::token].Field[crate::task::task_tracker::TaskTrackerToken::task_tracker]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::wait", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::clone", "Argument[self].Field[crate::task::task_tracker::TaskTrackerToken::task_tracker].Reference", "ReturnValue.Field[crate::task::task_tracker::TaskTrackerToken::task_tracker]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_mut", "Argument[self].Field[crate::time::delay_queue::Expired::data]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[crate::time::delay_queue::Expired::data]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::time::delay_queue::Expired::data]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::key", "Argument[self].Field[crate::time::delay_queue::Expired::key]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::from", "Argument[0].Field[crate::time::delay_queue::KeyInternal::index]", "ReturnValue.Field[crate::time::delay_queue::Key::index]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::time::delay_queue::Key::index]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::from", "Argument[0].Field[crate::time::delay_queue::Key::index]", "ReturnValue.Field[crate::time::delay_queue::KeyInternal::index]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::time::delay_queue::KeyInternal::index]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::index", "Argument[self].Field[crate::time::delay_queue::SlabStorage::inner].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::index_mut", "Argument[self].Field[crate::time::delay_queue::SlabStorage::inner].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::peek", "Argument[self].Field[crate::time::delay_queue::Stack::head]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::codec_mut", "Argument[self].Field[crate::udp::frame::UdpFramed::codec]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_mut", "Argument[self].Field[crate::udp::frame::UdpFramed::socket]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[crate::udp::frame::UdpFramed::socket]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::udp::frame::UdpFramed::socket]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::udp::frame::UdpFramed::socket]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[crate::udp::frame::UdpFramed::codec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::read_buffer", "Argument[self].Field[crate::udp::frame::UdpFramed::rd]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::read_buffer_mut", "Argument[self].Field[crate::udp::frame::UdpFramed::rd]", "ReturnValue.Reference", "value", "dfc-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::write", "Argument[0]", "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_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", "::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", "::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 deleted file mode 100644 index 6790d9d9711f..000000000000 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio.model.yml +++ /dev/null @@ -1,752 +0,0 @@ -# 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/tokio-rs/tokio:tokio", "<&[u8] as crate::io::async_buf_read::AsyncBufRead>::consume", "Argument[self].Element", "Argument[self].Reference.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "<&[u8] as crate::io::async_buf_read::AsyncBufRead>::poll_fill_buf", "Argument[self].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::recursive", "Argument[0]", "Argument[self].Field[crate::fs::dir_builder::DirBuilder::recursive]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_inner_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_inner_mut", "Argument[self].Field[crate::fs::open_options::OpenOptions(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::create", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::create_new", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::custom_flags", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::mode", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::read", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_io_mut", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_new", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::io::async_fd::AsyncFdTryNewError::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_new_with_handle_and_interest", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::io::async_fd::AsyncFdTryNewError::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_with_interest", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::io::async_fd::AsyncFdTryNewError::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[crate::io::async_fd::AsyncFdReadyGuard::async_fd]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_io", "Argument[0].ReturnValue", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_io", "Argument[self].Field[crate::io::async_fd::AsyncFdReadyGuard::async_fd]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[crate::io::async_fd::AsyncFdReadyMutGuard::async_fd]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[crate::io::async_fd::AsyncFdReadyMutGuard::async_fd]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_io", "Argument[0].ReturnValue", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_io", "Argument[self].Field[crate::io::async_fd::AsyncFdReadyMutGuard::async_fd]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::source", "Argument[self].Field[crate::io::async_fd::AsyncFdTryNewError::cause]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_parts", "Argument[self].Field[crate::io::async_fd::AsyncFdTryNewError::cause]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::bitor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::io::join::Join::reader]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::io::join::Join::writer]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::reader", "Argument[self].Field[crate::io::join::Join::reader]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::remaining_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::assume_init", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::initialize_unfilled_to", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::inner_mut", "Argument[self].Field[crate::io::read_buf::ReadBuf::buf]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::remaining", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set_filled", "Argument[0]", "Argument[self].Field[crate::io::read_buf::ReadBuf::filled]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::take", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unfilled_mut", "Argument[self].Field[crate::io::read_buf::ReadBuf::buf].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::uninit", "Argument[0]", "ReturnValue.Field[crate::io::read_buf::ReadBuf::buf]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_usize", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_usize", "Argument[self].Field[crate::io::ready::Ready(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_usize", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::intersection", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::stdio_common::SplitByUtf8BoundaryIfWindows::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::buffer", "Argument[self].Field[crate::io::util::buf_reader::BufReader::buf].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[crate::io::util::buf_reader::BufReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[crate::io::util::buf_reader::BufReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::io::util::buf_reader::BufReader::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::buf_reader::BufReader::inner]", "value", "dfc-generated"] - - ["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", "::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::io::util::buf_writer::BufWriter::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::buf_writer::BufWriter::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_capacity", "Argument[1]", "ReturnValue.Field[crate::io::util::buf_writer::BufWriter::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[crate::io::util::chain::Chain::first]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[crate::io::util::chain::Chain::second]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[crate::io::util::chain::Chain::first]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[crate::io::util::chain::Chain::second]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::io::util::chain::Chain::first]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::io::util::chain::Chain::second]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_copy", "Argument[self].Field[crate::io::util::copy::CopyBuffer::amt]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[crate::io::util::lines::Lines::reader]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[crate::io::util::lines::Lines::reader]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::io::util::lines::Lines::reader]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new_unsplit", "Argument[0]", "ReturnValue.Field[crate::io::util::mem::SimplexStream::max_buf_size]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadF32::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadF32Le::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadF64::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadF64Le::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadI128::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadI128Le::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadI16::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadI16Le::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadI32::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadI32Le::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadI64::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadI64Le::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadI8::reader]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadU128::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadU128Le::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadU16::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadU16Le::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadU32::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadU32Le::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadU64::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadU64Le::src]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::read_int::ReadU8::reader]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[crate::io::util::take::Take::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[crate::io::util::take::Take::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::io::util::take::Take::inner]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::limit", "Argument[self].Field[crate::io::util::take::Take::limit_]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set_limit", "Argument[0]", "Argument[self].Field[crate::io::util::take::Take::limit_]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteF64Le::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteI128::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteI128Le::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteI16::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteI16Le::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteI32::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteI32Le::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteI64::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteI64Le::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteI8::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[crate::io::util::write_int::WriteI8::byte]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteU128::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteU128Le::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteU16::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteU16Le::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteU32::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteU32Le::dst]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteU64::dst]", "value", "dfc-generated"] - - ["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", "::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", "::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", "::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue.Field[crate::net::unix::socketaddr::SocketAddr(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::unix::split::ReadHalf(0)]", "ReturnValue", "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::unix::split::WriteHalf(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_ref", "Argument[self].Field[crate::net::unix::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::unix::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::unix::split_owned::ReuniteError(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_ref", "Argument[self].Field[crate::net::unix::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::unix::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::unix::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.Field[0].Field[crate::net::unix::split::ReadHalf(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::split", "Argument[self]", "ReturnValue.Field[1].Field[crate::net::unix::split::WriteHalf(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::gid", "Argument[self].Field[crate::net::unix::ucred::UCred::gid]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pid", "Argument[self].Field[crate::net::unix::ucred::UCred::pid]", "ReturnValue", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_std", "Argument[self].Field[crate::process::Command::std]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_std_mut", "Argument[self].Field[crate::process::Command::std]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::current_dir", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::env", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::env_clear", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::env_remove", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::envs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_kill_on_drop", "Argument[self].Field[crate::process::Command::kill_on_drop]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::gid", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_std", "Argument[self].Field[crate::process::Command::std]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::kill_on_drop", "Argument[0]", "Argument[self].Field[crate::process::Command::kill_on_drop]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::kill_on_drop", "Argument[0]", "ReturnValue.Field[crate::process::Command::kill_on_drop]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::kill_on_drop", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pre_exec", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::process_group", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::stderr", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["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::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_wait", "Argument[self].Field[crate::process::imp::reap::test::MockWait::status]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::spawner", "Argument[self].Field[crate::runtime::blocking::pool::BlockingPool::spawner]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::runtime::blocking::pool::Task::task]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[crate::runtime::blocking::pool::Task::mandatory]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::hooks", "Argument[self].Field[crate::runtime::blocking::schedule::BlockingSchedule::hooks].Field[crate::runtime::task::TaskHarnessScheduleHooks::task_terminate_callback]", "ReturnValue.Field[crate::runtime::task::TaskHarnessScheduleHooks::task_terminate_callback]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0].Reference", "ReturnValue.Field[crate::runtime::blocking::schedule::BlockingSchedule::handle]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::runtime::blocking::task::BlockingTask::func].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::enable_all", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::enable_io", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::enable_time", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::event_interval", "Argument[0]", "Argument[self].Field[crate::runtime::builder::Builder::event_interval]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::event_interval", "Argument[0]", "ReturnValue.Field[crate::runtime::builder::Builder::event_interval]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::event_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::global_queue_interval", "Argument[0]", "Argument[self].Field[crate::runtime::builder::Builder::global_queue_interval].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::global_queue_interval", "Argument[0]", "ReturnValue.Field[crate::runtime::builder::Builder::global_queue_interval].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::global_queue_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::max_blocking_threads", "Argument[0]", "Argument[self].Field[crate::runtime::builder::Builder::max_blocking_threads]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::max_blocking_threads", "Argument[0]", "ReturnValue.Field[crate::runtime::builder::Builder::max_blocking_threads]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::max_blocking_threads", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::max_io_events_per_tick", "Argument[0]", "Argument[self].Field[crate::runtime::builder::Builder::nevents]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::max_io_events_per_tick", "Argument[0]", "ReturnValue.Field[crate::runtime::builder::Builder::nevents]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::max_io_events_per_tick", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::runtime::builder::Builder::kind]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[crate::runtime::builder::Builder::event_interval]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::on_thread_park", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::on_thread_start", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::on_thread_stop", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::on_thread_unpark", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::start_paused", "Argument[0]", "Argument[self].Field[crate::runtime::builder::Builder::start_paused]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::start_paused", "Argument[0]", "ReturnValue.Field[crate::runtime::builder::Builder::start_paused]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::start_paused", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::thread_keep_alive", "Argument[0]", "Argument[self].Field[crate::runtime::builder::Builder::keep_alive].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::thread_keep_alive", "Argument[0]", "ReturnValue.Field[crate::runtime::builder::Builder::keep_alive].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::thread_keep_alive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::thread_name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::thread_name_fn", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::thread_stack_size", "Argument[0]", "Argument[self].Field[crate::runtime::builder::Builder::thread_stack_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::thread_stack_size", "Argument[0]", "ReturnValue.Field[crate::runtime::builder::Builder::thread_stack_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::thread_stack_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::worker_threads", "Argument[0]", "Argument[self].Field[crate::runtime::builder::Builder::worker_threads].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::worker_threads", "Argument[0]", "ReturnValue.Field[crate::runtime::builder::Builder::worker_threads].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::worker_threads", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-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", "::as_ref", "Argument[self].Field[crate::runtime::driver::IoHandle::Enabled(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::metrics", "Argument[self].Reference", "ReturnValue.Field[crate::runtime::metrics::runtime::RuntimeMetrics::handle]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::consume_signal_ready", "Argument[self].Field[crate::runtime::io::driver::Driver::signal_ready]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_ready", "Argument[0]", "ReturnValue.Field[crate::runtime::io::driver::ReadyEvent::ready]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_ready", "Argument[self].Field[crate::runtime::io::driver::ReadyEvent::is_shutdown]", "ReturnValue.Field[crate::runtime::io::driver::ReadyEvent::is_shutdown]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_ready", "Argument[self].Field[crate::runtime::io::driver::ReadyEvent::tick]", "ReturnValue.Field[crate::runtime::io::driver::ReadyEvent::tick]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new_with_interest_and_handle", "Argument[2]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::runtime::io::registration::Registration::handle]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_read_io", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_write_io", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_io", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::is_shutdown", "Argument[0].Field[crate::runtime::io::registration_set::Synced::is_shutdown]", "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", "::new", "Argument[0]", "ReturnValue.Field[crate::runtime::metrics::runtime::RuntimeMetrics::handle]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unpark", "Argument[self].Field[crate::runtime::park::ParkThread::inner].Reference", "ReturnValue.Field[crate::runtime::park::UnparkThread::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::runtime::process::Driver::park]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_parts", "Argument[0]", "ReturnValue.Field[crate::runtime::runtime::Runtime::scheduler]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_parts", "Argument[1]", "ReturnValue.Field[crate::runtime::runtime::Runtime::handle]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_parts", "Argument[2]", "ReturnValue.Field[crate::runtime::runtime::Runtime::blocking_pool]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::handle", "Argument[self].Field[crate::runtime::runtime::Runtime::handle]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::metrics", "Argument[self].Field[crate::runtime::runtime::Runtime::handle].Reference", "ReturnValue.Field[crate::runtime::metrics::runtime::RuntimeMetrics::handle]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::metrics", "Argument[self].Field[crate::runtime::runtime::Runtime::handle]", "ReturnValue.Field[crate::runtime::metrics::runtime::RuntimeMetrics::handle]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::expect_current_thread", "Argument[self].Field[crate::runtime::scheduler::Context::CurrentThread(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::expect_multi_thread", "Argument[self].Field[crate::runtime::scheduler::Context::MultiThread(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_current_thread", "Argument[self].Field[crate::runtime::scheduler::Handle::CurrentThread(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::worker_metrics", "Argument[self].Field[crate::runtime::scheduler::current_thread::Handle::shared].Field[crate::runtime::scheduler::current_thread::Shared::worker_metrics]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::len", "Argument[self].Field[crate::runtime::scheduler::inject::pop::Pop::len]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::size_hint", "Argument[self].Field[crate::runtime::scheduler::inject::pop::Pop::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::size_hint", "Argument[self].Field[crate::runtime::scheduler::inject::pop::Pop::len]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::runtime::scheduler::inject::pop::Pop::len]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[crate::runtime::scheduler::inject::pop::Pop::synced]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::is_closed", "Argument[0].Field[crate::runtime::scheduler::inject::synced::Synced::is_closed]", "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::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop", "Argument[self].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", "::trace_core", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::worker_metrics", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[0].Field[crate::runtime::scheduler::multi_thread::idle::Idle::num_workers]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue.Field[crate::runtime::scheduler::multi_thread::idle::State(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unpark", "Argument[self].Field[crate::runtime::scheduler::multi_thread::park::Parker::inner].Reference", "ReturnValue.Field[crate::runtime::scheduler::multi_thread::park::Unparker::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[0].Reference", "ReturnValue.Field[crate::runtime::scheduler::multi_thread::queue::Steal(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[crate::runtime::scheduler::multi_thread::queue::Steal(0)].Reference", "ReturnValue.Field[crate::runtime::scheduler::multi_thread::queue::Steal(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::runtime::signal::Driver::io]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_raw", "Argument[0]", "ReturnValue.Field[crate::runtime::task::Notified(0)].Field[crate::runtime::task::Task::raw]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_raw", "Argument[self].Field[0].Field[crate::runtime::task::Task::raw]", "ReturnValue", "value", "dfc-generated"] - - ["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", "::new", "Argument[0]", "ReturnValue.Field[crate::runtime::task::abort::AbortHandle::raw]", "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", "::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::panic", "Argument[0]", "ReturnValue.Field[crate::runtime::task::error::JoinError::id]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_into_panic", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::abort_handle", "Argument[self].Field[crate::runtime::task::join::JoinHandle::raw]", "ReturnValue.Field[crate::runtime::task::abort::AbortHandle::raw]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::runtime::task::join::JoinHandle::raw]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::assert_owner", "Argument[0].Field[0]", "ReturnValue.Field[crate::runtime::task::LocalNotified::task]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::assert_owner", "Argument[0].Field[crate::runtime::task::Notified(0)]", "ReturnValue.Field[crate::runtime::task::LocalNotified::task]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::assert_owner", "Argument[0].Field[0]", "ReturnValue.Field[crate::runtime::task::LocalNotified::task]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::assert_owner", "Argument[0].Field[crate::runtime::task::Notified(0)]", "ReturnValue.Field[crate::runtime::task::LocalNotified::task]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_raw", "Argument[0]", "ReturnValue.Field[crate::runtime::task::raw::RawTask::ptr]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::header_ptr", "Argument[self].Field[crate::runtime::task::raw::RawTask::ptr]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::ref_count", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[crate::runtime::task::waker::WakerRef::waker]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_config", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::id", "Argument[self].Field[crate::runtime::task_hooks::TaskMeta::id]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[0].Field[crate::runtime::time::Driver::park]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deadline", "Argument[self].Field[crate::runtime::time::entry::TimerEntry::deadline]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::runtime::time::entry::TimerEntry::driver]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[crate::support::io_vec::IoBufs(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::advance", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::support::io_vec::IoBufs(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::barrier::Barrier::n]", "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::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::resubscribe", "Argument[self].Field[crate::sync::broadcast::Receiver::shared].Reference", "ReturnValue.Field[crate::sync::broadcast::Receiver::shared]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[crate::sync::broadcast::Sender::shared].Reference", "ReturnValue.Field[crate::sync::broadcast::Sender::shared]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::downgrade", "Argument[self].Field[crate::sync::broadcast::Sender::shared].Reference", "ReturnValue.Field[crate::sync::broadcast::WeakSender::shared]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::send", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::broadcast::error::SendError(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::subscribe", "Argument[self].Field[crate::sync::broadcast::Sender::shared].Reference", "ReturnValue.Field[crate::sync::broadcast::Receiver::shared]", "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", "::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::mpsc::bounded::Receiver::chan]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[crate::sync::mpsc::bounded::Sender::chan].Reference", "ReturnValue.Field[crate::sync::mpsc::bounded::Sender::chan]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[crate::sync::mpsc::bounded::Sender::chan]", "ReturnValue.Field[crate::sync::mpsc::bounded::Sender::chan]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::mpsc::bounded::Sender::chan]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::reserve", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::reserve_many", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::mpsc::bounded::PermitIterator::n]", "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", "::send_timeout", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::mpsc::error::SendTimeoutError::Closed(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::send_timeout", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::mpsc::error::SendTimeoutError::Timeout(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_reserve", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_reserve_many", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::mpsc::bounded::PermitIterator::n]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_reserve_owned", "Argument[self]", "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_reserve_owned", "Argument[self]", "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", "::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::sync::mpsc::error::SendTimeoutError::Closed(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::sync::mpsc::error::SendTimeoutError::Timeout(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[0]", "ReturnValue.Field[crate::sync::mpsc::error::TrySendError::Closed(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[crate::sync::mpsc::error::SendError(0)]", "ReturnValue.Field[crate::sync::mpsc::error::TrySendError::Closed(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::sync::mpsc::error::TrySendError::Closed(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::sync::mpsc::error::TrySendError::Full(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::mpsc::unbounded::UnboundedReceiver::chan]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[crate::sync::mpsc::unbounded::UnboundedSender::chan].Reference", "ReturnValue.Field[crate::sync::mpsc::unbounded::UnboundedSender::chan]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[crate::sync::mpsc::unbounded::UnboundedSender::chan]", "ReturnValue.Field[crate::sync::mpsc::unbounded::UnboundedSender::chan]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::mutex", "Argument[0].Field[crate::sync::mutex::MutexGuard::lock]", "ReturnValue", "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", "::deref", "Argument[self].Field[crate::sync::mutex::OwnedMappedMutexGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref_mut", "Argument[self].Field[crate::sync::mutex::OwnedMappedMutexGuard::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", "::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::mutex", "Argument[0].Field[crate::sync::mutex::OwnedMutexGuard::lock]", "ReturnValue.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", "::notified", "Argument[self]", "ReturnValue.Field[crate::sync::notify::Notified::notify]", "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", "::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_write_owned", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::rwlock::owned_write_guard::OwnedRwLockWriteGuard::lock]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_max_readers", "Argument[1]", "ReturnValue.Field[crate::sync::rwlock::RwLock::mr]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[crate::sync::rwlock::owned_read_guard::OwnedRwLockReadGuard::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", "::rwlock", "Argument[0].Field[crate::sync::rwlock::owned_read_guard::OwnedRwLockReadGuard::lock]", "ReturnValue.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", "::deref", "Argument[self].Field[crate::sync::rwlock::owned_write_guard::OwnedRwLockWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref_mut", "Argument[self].Field[crate::sync::rwlock::owned_write_guard::OwnedRwLockWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::downgrade_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_mapped", "Argument[0]", "ReturnValue", "taint", "df-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", "::rwlock", "Argument[0].Field[crate::sync::rwlock::owned_write_guard::OwnedRwLockWriteGuard::lock]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_downgrade_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_downgrade_map", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "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", "::deref", "Argument[self].Field[crate::sync::rwlock::owned_write_guard_mapped::OwnedRwLockMappedWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref_mut", "Argument[self].Field[crate::sync::rwlock::owned_write_guard_mapped::OwnedRwLockMappedWriteGuard::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", "::rwlock", "Argument[0].Field[crate::sync::rwlock::owned_write_guard_mapped::OwnedRwLockMappedWriteGuard::lock]", "ReturnValue.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", "::deref", "Argument[self].Field[crate::sync::rwlock::read_guard::RwLockReadGuard::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", "::deref", "Argument[self].Field[crate::sync::rwlock::write_guard::RwLockWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref_mut", "Argument[self].Field[crate::sync::rwlock::write_guard::RwLockWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::downgrade_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_mapped", "Argument[0]", "ReturnValue", "taint", "df-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_downgrade_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_downgrade_map", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "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", "::deref", "Argument[self].Field[crate::sync::rwlock::write_guard_mapped::RwLockMappedWriteGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref_mut", "Argument[self].Field[crate::sync::rwlock::write_guard_mapped::RwLockMappedWriteGuard::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", "::num_permits", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::semaphore", "Argument[self].Field[crate::sync::semaphore::OwnedSemaphorePermit::sem]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::split", "Argument[self].Field[crate::sync::semaphore::OwnedSemaphorePermit::sem].Reference", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::sync::semaphore::OwnedSemaphorePermit::sem]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::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", "::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", "::acquire_many", "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", "::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_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", "::try_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", "::try_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", "::num_permits", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::split", "Argument[self].Field[crate::sync::semaphore::SemaphorePermit::sem]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::sync::semaphore::SemaphorePermit::sem]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::has_changed", "Argument[self].Field[crate::sync::watch::Ref::has_changed]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[crate::sync::watch::Sender::shared].Reference", "ReturnValue.Field[crate::sync::watch::Sender::shared]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::send", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::watch::error::SendError(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::send_replace", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::subscribe", "Argument[self].Field[crate::sync::watch::Sender::shared].Reference", "ReturnValue.Field[crate::sync::watch::Receiver::shared]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::version", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::len", "Argument[self].Field[crate::task::join_set::JoinSet::inner].Field[crate::util::idle_notified_set::IdleNotifiedSet::length]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_join_next", "Argument[self].Field[crate::task::join_set::JoinSet::inner]", "ReturnValue.Field[crate::util::idle_notified_set::EntryInOneOfTheLists::set].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_join_next", "Argument[self].Field[crate::task::join_set::JoinSet::inner]", "ReturnValue.Field[crate::util::idle_notified_set::EntryInOneOfTheLists::set]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_join_next_with_id", "Argument[self].Field[crate::task::join_set::JoinSet::inner]", "ReturnValue.Field[crate::util::idle_notified_set::EntryInOneOfTheLists::set].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_join_next_with_id", "Argument[self].Field[crate::task::join_set::JoinSet::inner]", "ReturnValue.Field[crate::util::idle_notified_set::EntryInOneOfTheLists::set]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::scope", "Argument[0]", "ReturnValue.Field[crate::task::task_local::TaskLocalFuture::slot].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue.Field[crate::time::instant::Instant::std]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::add_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::sub_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_std", "Argument[0]", "ReturnValue.Field[crate::time::instant::Instant::std]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_std", "Argument[self].Field[crate::time::instant::Instant::std]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::missed_tick_behavior", "Argument[self].Field[crate::time::interval::Interval::missed_tick_behavior]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::period", "Argument[self].Field[crate::time::interval::Interval::period]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set_missed_tick_behavior", "Argument[0]", "Argument[self].Field[crate::time::interval::Interval::missed_tick_behavior]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deadline", "Argument[self].Field[crate::time::sleep::Sleep::entry].Field[crate::runtime::time::entry::TimerEntry::deadline]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new_timeout", "Argument[0]", "ReturnValue.Field[crate::time::sleep::Sleep::entry].Field[crate::runtime::time::entry::TimerEntry::deadline]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[crate::time::timeout::Timeout::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[crate::time::timeout::Timeout::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::time::timeout::Timeout::value]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new_with_delay", "Argument[0]", "ReturnValue.Field[crate::time::timeout::Timeout::value]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new_with_delay", "Argument[1]", "ReturnValue.Field[crate::time::timeout::Timeout::delay]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pack", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pack", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pack", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unpack", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unpack", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[crate::util::cacheline::CachePadded::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref_mut", "Argument[self].Field[crate::util::cacheline::CachePadded::value]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::util::cacheline::CachePadded::value]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::insert_idle", "Argument[self]", "ReturnValue.Field[crate::util::idle_notified_set::EntryInOneOfTheLists::set]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::len", "Argument[self].Field[crate::util::idle_notified_set::IdleNotifiedSet::length]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_notified", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::util::idle_notified_set::EntryInOneOfTheLists::set]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_pop_notified", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::util::idle_notified_set::EntryInOneOfTheLists::set]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_front", "Argument[self].Field[crate::util::linked_list::LinkedList::head].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::expose_provenance", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_exposed_addr", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_seed", "Argument[0].Field[crate::util::rand::RngSeed::r]", "ReturnValue.Field[crate::util::rand::FastRand::two]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_seed", "Argument[0].Field[crate::util::rand::RngSeed::s]", "ReturnValue.Field[crate::util::rand::FastRand::one]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::replace_seed", "Argument[0].Field[crate::util::rand::RngSeed::r]", "Argument[self].Field[crate::util::rand::FastRand::two]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::replace_seed", "Argument[0].Field[crate::util::rand::RngSeed::s]", "Argument[self].Field[crate::util::rand::FastRand::one]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::replace_seed", "Argument[self].Field[crate::util::rand::FastRand::one]", "ReturnValue.Field[crate::util::rand::RngSeed::s]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::replace_seed", "Argument[self].Field[crate::util::rand::FastRand::two]", "ReturnValue.Field[crate::util::rand::RngSeed::r]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::lock_shard", "Argument[self].Field[crate::util::sharded_list::ShardedList::added]", "ReturnValue.Field[crate::util::sharded_list::ShardGuard::added].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::lock_shard", "Argument[self].Field[crate::util::sharded_list::ShardedList::count]", "ReturnValue.Field[crate::util::sharded_list::ShardGuard::count].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::shard_size", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::util::sync_wrapper::SyncWrapper::value]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::util::sync_wrapper::SyncWrapper::value]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_lock", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::util::try_lock::LockGuard::lock]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[crate::util::wake::WakerRef::waker]", "ReturnValue.Reference", "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::signal::unix::SignalKind(0)]", "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::runtime::scheduler::multi_thread::idle::State(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::join::join", "Argument[0]", "ReturnValue.Field[crate::io::join::Join::reader]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::join::join", "Argument[1]", "ReturnValue.Field[crate::io::join::Join::writer]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::seek::seek", "Argument[0]", "ReturnValue.Field[crate::io::seek::Seek::seek]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::seek::seek", "Argument[1]", "ReturnValue.Field[crate::io::seek::Seek::pos].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::chain::chain", "Argument[0]", "ReturnValue.Field[crate::io::util::chain::Chain::first]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::chain::chain", "Argument[1]", "ReturnValue.Field[crate::io::util::chain::Chain::second]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::fill_buf::fill_buf", "Argument[0]", "ReturnValue.Field[crate::io::util::fill_buf::FillBuf::reader].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::flush::flush", "Argument[0]", "ReturnValue.Field[crate::io::util::flush::Flush::a]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::lines::lines", "Argument[0]", "ReturnValue.Field[crate::io::util::lines::Lines::reader]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read::read", "Argument[0]", "ReturnValue.Field[crate::io::util::read::Read::reader]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read::read", "Argument[1]", "ReturnValue.Field[crate::io::util::read::Read::buf]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_buf::read_buf", "Argument[0]", "ReturnValue.Field[crate::io::util::read_buf::ReadBuf::reader]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_buf::read_buf", "Argument[1]", "ReturnValue.Field[crate::io::util::read_buf::ReadBuf::buf]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_exact::read_exact", "Argument[0]", "ReturnValue.Field[crate::io::util::read_exact::ReadExact::reader]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_line::finish_string_read", "Argument[0].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_line::finish_string_read", "Argument[0].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::split::split", "Argument[1]", "ReturnValue.Field[crate::io::util::split::Split::delim]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::take::take", "Argument[0]", "ReturnValue.Field[crate::io::util::take::Take::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::take::take", "Argument[1]", "ReturnValue.Field[crate::io::util::take::Take::limit_]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::write::write", "Argument[0]", "ReturnValue.Field[crate::io::util::write::Write::writer]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::write::write", "Argument[1]", "ReturnValue.Field[crate::io::util::write::Write::buf]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::write_all::write_all", "Argument[0]", "ReturnValue.Field[crate::io::util::write_all::WriteAll::writer]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::write_all::write_all", "Argument[1]", "ReturnValue.Field[crate::io::util::write_all::WriteAll::buf]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::write_all_buf::write_all_buf", "Argument[0]", "ReturnValue.Field[crate::io::util::write_all_buf::WriteAllBuf::writer]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::write_all_buf::write_all_buf", "Argument[1]", "ReturnValue.Field[crate::io::util::write_all_buf::WriteAllBuf::buf]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::write_buf::write_buf", "Argument[0]", "ReturnValue.Field[crate::io::util::write_buf::WriteBuf::writer]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::write_buf::write_buf", "Argument[1]", "ReturnValue.Field[crate::io::util::write_buf::WriteBuf::buf]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::write_vectored::write_vectored", "Argument[0]", "ReturnValue.Field[crate::io::util::write_vectored::WriteVectored::writer]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::write_vectored::write_vectored", "Argument[1]", "ReturnValue.Field[crate::io::util::write_vectored::WriteVectored::bufs]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::net::tcp::split::split", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::net::tcp::split_owned::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", "crate::net::tcp::split_owned::reunite", "Argument[1]", "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", "crate::net::unix::split::split", "Argument[0]", "ReturnValue.Field[0].Field[crate::net::unix::split::ReadHalf(0)]", "value", "dfc-generated"] - - ["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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::scheduler::multi_thread::worker::block_in_place", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::sync::mpsc::block::offset", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::sync::mpsc::block::start_index", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::task::blocking::block_in_place", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::task::blocking::block_in_place", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::task::coop::budget", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::task::coop::cooperative", "Argument[0]", "ReturnValue.Field[crate::task::coop::Coop::fut]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::task::coop::unconstrained::unconstrained", "Argument[0]", "ReturnValue.Field[crate::task::coop::unconstrained::Unconstrained::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::task::coop::with_unconstrained", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::time::interval::interval", "Argument[0]", "ReturnValue.Field[crate::time::interval::Interval::period]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::time::interval::interval_at", "Argument[1]", "ReturnValue.Field[crate::time::interval::Interval::period]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::time::sleep::sleep_until", "Argument[0]", "ReturnValue.Field[crate::time::sleep::Sleep::entry].Field[crate::runtime::time::entry::TimerEntry::deadline]", "value", "dfc-generated"] - - ["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"] - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["repo:https://github.com/tokio-rs/tokio:tokio", "<&[u8] as crate::io::async_read::AsyncRead>::poll_read", "Argument[1]", "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", "::poll_read", "Argument[1]", "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", "::poll_read", "Argument[1]", "log-injection", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::copy_to", "Argument[0]", "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", "::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::remove", "Argument[self]", "log-injection", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::next_expiration", "Argument[0]", "log-injection", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::next_expiration", "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", "::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"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drop", "Argument[self]", "log-injection", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::support::signal::send_signal", "Argument[0]", "log-injection", "df-generated"] - - addsTo: - pack: codeql/rust-all - extensible: sourceModel - data: - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::file_name", "ReturnValue", "file", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::path", "ReturnValue", "file", "df-generated"] diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index 246c9948c50b..f2a10f4c4f74 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.10 +version: 0.1.12-dev groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/lib/rust.dbscheme b/rust/ql/lib/rust.dbscheme index a1005655e9ef..8e9b0c516ae8 100644 --- a/rust/ql/lib/rust.dbscheme +++ b/rust/ql/lib/rust.dbscheme @@ -108,6 +108,12 @@ yaml_locations(unique int locatable: @yaml_locatable ref, @yaml_locatable = @yaml_node | @yaml_error; +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + // from prefix.dbscheme #keyset[id] @@ -164,13 +170,11 @@ named_crates( | @asm_option | @asm_piece | @asm_reg_spec -| @assoc_item | @assoc_item_list | @attr | @callable | @closure_binder | @expr -| @extern_item | @extern_item_list | @field_list | @format_args_arg @@ -215,7 +219,6 @@ named_crates( | @use_bound_generic_args | @use_tree | @use_tree_list -| @variant_def | @variant_list | @visibility | @where_clause @@ -350,13 +353,6 @@ asm_reg_spec_identifiers( int identifier: @name_ref ref ); -@assoc_item = - @const -| @function -| @macro_call -| @type_alias -; - assoc_item_lists( unique int id: @assoc_item_list ); @@ -449,13 +445,6 @@ closure_binder_generic_param_lists( | @yield_expr ; -@extern_item = - @function -| @macro_call -| @static -| @type_alias -; - extern_item_lists( unique int id: @extern_item_list ); @@ -1161,12 +1150,6 @@ use_tree_list_use_trees( int use_tree: @use_tree ref ); -@variant_def = - @struct -| @union -| @variant -; - variant_lists( unique int id: @variant_list ); @@ -1917,22 +1900,17 @@ infer_type_reprs( ); @item = - @const -| @enum + @adt +| @assoc_item | @extern_block | @extern_crate -| @function +| @extern_item | @impl -| @macro_call | @macro_def | @macro_rules | @module -| @static -| @struct | @trait | @trait_alias -| @type_alias -| @union | @use ; @@ -2714,6 +2692,26 @@ yield_expr_exprs( int expr: @expr ref ); +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + block_exprs( unique int id: @block_expr ); @@ -2771,92 +2769,6 @@ call_expr_functions( int function: @expr ref ); -consts( - unique int id: @const -); - -#keyset[id, index] -const_attrs( - int id: @const ref, - int index: int ref, - int attr: @attr ref -); - -#keyset[id] -const_bodies( - int id: @const ref, - int body: @expr ref -); - -#keyset[id] -const_is_const( - int id: @const ref -); - -#keyset[id] -const_is_default( - int id: @const ref -); - -#keyset[id] -const_names( - int id: @const ref, - int name: @name ref -); - -#keyset[id] -const_type_reprs( - int id: @const ref, - int type_repr: @type_repr ref -); - -#keyset[id] -const_visibilities( - int id: @const ref, - int visibility: @visibility ref -); - -enums( - unique int id: @enum -); - -#keyset[id, index] -enum_attrs( - int id: @enum ref, - int index: int ref, - int attr: @attr ref -); - -#keyset[id] -enum_generic_param_lists( - int id: @enum ref, - int generic_param_list: @generic_param_list ref -); - -#keyset[id] -enum_names( - int id: @enum ref, - int name: @name ref -); - -#keyset[id] -enum_variant_lists( - int id: @enum ref, - int variant_list: @variant_list ref -); - -#keyset[id] -enum_visibilities( - int id: @enum ref, - int visibility: @visibility ref -); - -#keyset[id] -enum_where_clauses( - int id: @enum ref, - int where_clause: @where_clause ref -); - extern_blocks( unique int id: @extern_block ); @@ -2914,76 +2826,12 @@ extern_crate_visibilities( int visibility: @visibility ref ); -functions( - unique int id: @function -); - -#keyset[id] -function_abis( - int id: @function ref, - int abi: @abi ref -); - -#keyset[id] -function_bodies( - int id: @function ref, - int body: @block_expr ref -); - -#keyset[id] -function_generic_param_lists( - int id: @function ref, - int generic_param_list: @generic_param_list ref -); - -#keyset[id] -function_is_async( - int id: @function ref -); - -#keyset[id] -function_is_const( - int id: @function ref -); - -#keyset[id] -function_is_default( - int id: @function ref -); - -#keyset[id] -function_is_gen( - int id: @function ref -); - -#keyset[id] -function_is_unsafe( - int id: @function ref -); - -#keyset[id] -function_names( - int id: @function ref, - int name: @name ref -); - -#keyset[id] -function_ret_types( - int id: @function ref, - int ret_type: @ret_type_repr ref -); - -#keyset[id] -function_visibilities( - int id: @function ref, - int visibility: @visibility ref -); - -#keyset[id] -function_where_clauses( - int id: @function ref, - int where_clause: @where_clause ref -); +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; impls( unique int id: @impl @@ -3059,35 +2907,6 @@ looping_expr_loop_bodies( int loop_body: @block_expr ref ); -macro_calls( - unique int id: @macro_call -); - -#keyset[id, index] -macro_call_attrs( - int id: @macro_call ref, - int index: int ref, - int attr: @attr ref -); - -#keyset[id] -macro_call_paths( - int id: @macro_call ref, - int path: @path ref -); - -#keyset[id] -macro_call_token_trees( - int id: @macro_call ref, - int token_tree: @token_tree ref -); - -#keyset[id] -macro_call_macro_call_expansions( - int id: @macro_call ref, - int macro_call_expansion: @ast_node ref -); - macro_defs( unique int id: @macro_def ); @@ -3218,224 +3037,489 @@ path_pats( unique int id: @path_pat ); -statics( - unique int id: @static +struct_exprs( + unique int id: @struct_expr ); -#keyset[id, index] -static_attrs( - int id: @static ref, - int index: int ref, - int attr: @attr ref +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref ); -#keyset[id] -static_bodies( - int id: @static ref, - int body: @expr ref +struct_pats( + unique int id: @struct_pat ); #keyset[id] -static_is_mut( - int id: @static ref +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait ); #keyset[id] -static_is_static( - int id: @static ref +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref ); #keyset[id] -static_is_unsafe( - int id: @static ref +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref ); #keyset[id] -static_names( - int id: @static ref, +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, int name: @name ref ); #keyset[id] -static_type_reprs( - int id: @static ref, - int type_repr: @type_repr ref +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref ); #keyset[id] -static_visibilities( - int id: @static ref, +trait_visibilities( + int id: @trait ref, int visibility: @visibility ref ); -structs( - unique int id: @struct +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias ); #keyset[id, index] -struct_attrs( - int id: @struct ref, +trait_alias_attrs( + int id: @trait_alias ref, int index: int ref, int attr: @attr ref ); #keyset[id] -struct_field_lists_( - int id: @struct ref, - int field_list: @field_list ref +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref ); #keyset[id] -struct_generic_param_lists( - int id: @struct ref, - int generic_param_list: @generic_param_list ref +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref ); #keyset[id] -struct_names( - int id: @struct ref, - int name: @name ref +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref ); #keyset[id] -struct_visibilities( - int id: @struct ref, +trait_alias_visibilities( + int id: @trait_alias ref, int visibility: @visibility ref ); #keyset[id] -struct_where_clauses( - int id: @struct ref, +trait_alias_where_clauses( + int id: @trait_alias ref, int where_clause: @where_clause ref ); -struct_exprs( - unique int id: @struct_expr +tuple_struct_pats( + unique int id: @tuple_struct_pat ); -#keyset[id] -struct_expr_struct_expr_field_lists( - int id: @struct_expr ref, - int struct_expr_field_list: @struct_expr_field_list ref +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref ); -struct_pats( - unique int id: @struct_pat +uses( + unique int id: @use ); -#keyset[id] -struct_pat_struct_pat_field_lists( - int id: @struct_pat ref, - int struct_pat_field_list: @struct_pat_field_list ref +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref ); -traits( - unique int id: @trait +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref ); #keyset[id] -trait_assoc_item_lists( - int id: @trait ref, - int assoc_item_list: @assoc_item_list ref +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +consts( + unique int id: @const ); #keyset[id, index] -trait_attrs( - int id: @trait ref, +const_attrs( + int id: @const ref, int index: int ref, int attr: @attr ref ); #keyset[id] -trait_generic_param_lists( - int id: @trait ref, +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, int generic_param_list: @generic_param_list ref ); #keyset[id] -trait_is_auto( - int id: @trait ref +const_is_const( + int id: @const ref ); #keyset[id] -trait_is_unsafe( - int id: @trait ref +const_is_default( + int id: @const ref ); #keyset[id] -trait_names( - int id: @trait ref, +const_names( + int id: @const ref, int name: @name ref ); #keyset[id] -trait_type_bound_lists( - int id: @trait ref, - int type_bound_list: @type_bound_list ref +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref ); #keyset[id] -trait_visibilities( - int id: @trait ref, +const_visibilities( + int id: @const ref, int visibility: @visibility ref ); #keyset[id] -trait_where_clauses( - int id: @trait ref, +const_where_clauses( + int id: @const ref, int where_clause: @where_clause ref ); -trait_aliases( - unique int id: @trait_alias +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum ); #keyset[id, index] -trait_alias_attrs( - int id: @trait_alias ref, +enum_attrs( + int id: @enum ref, int index: int ref, int attr: @attr ref ); #keyset[id] -trait_alias_generic_param_lists( - int id: @trait_alias ref, +enum_generic_param_lists( + int id: @enum ref, int generic_param_list: @generic_param_list ref ); #keyset[id] -trait_alias_names( - int id: @trait_alias ref, +enum_names( + int id: @enum ref, int name: @name ref ); #keyset[id] -trait_alias_type_bound_lists( - int id: @trait_alias ref, - int type_bound_list: @type_bound_list ref +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref ); #keyset[id] -trait_alias_visibilities( - int id: @trait_alias ref, +enum_visibilities( + int id: @enum ref, int visibility: @visibility ref ); #keyset[id] -trait_alias_where_clauses( - int id: @trait_alias ref, +enum_where_clauses( + int id: @enum ref, int where_clause: @where_clause ref ); -tuple_struct_pats( - unique int id: @tuple_struct_pat +for_exprs( + unique int id: @for_expr ); #keyset[id, index] -tuple_struct_pat_fields( - int id: @tuple_struct_pat ref, +for_expr_attrs( + int id: @for_expr ref, int index: int ref, - int field: @pat ref + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref ); type_aliases( @@ -3531,63 +3615,6 @@ union_where_clauses( int where_clause: @where_clause ref ); -uses( - unique int id: @use -); - -#keyset[id, index] -use_attrs( - int id: @use ref, - int index: int ref, - int attr: @attr ref -); - -#keyset[id] -use_use_trees( - int id: @use ref, - int use_tree: @use_tree ref -); - -#keyset[id] -use_visibilities( - int id: @use ref, - int visibility: @visibility ref -); - -for_exprs( - unique int id: @for_expr -); - -#keyset[id, index] -for_expr_attrs( - int id: @for_expr ref, - int index: int ref, - int attr: @attr ref -); - -#keyset[id] -for_expr_iterables( - int id: @for_expr ref, - int iterable: @expr ref -); - -#keyset[id] -for_expr_pats( - int id: @for_expr ref, - int pat: @pat ref -); - -loop_exprs( - unique int id: @loop_expr -); - -#keyset[id, index] -loop_expr_attrs( - int id: @loop_expr ref, - int index: int ref, - int attr: @attr ref -); - while_exprs( unique int id: @while_expr ); diff --git a/rust/ql/lib/upgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/old.dbscheme b/rust/ql/lib/upgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/old.dbscheme new file mode 100644 index 000000000000..a1005655e9ef --- /dev/null +++ b/rust/ql/lib/upgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/old.dbscheme @@ -0,0 +1,3606 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_def +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +@variant_def = + @struct +| @union +| @variant +; + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @const +| @enum +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @struct +| @trait +| @trait_alias +| @type_alias +| @union +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/rust.dbscheme b/rust/ql/lib/upgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/rust.dbscheme new file mode 100644 index 000000000000..aa9a0bda17c7 --- /dev/null +++ b/rust/ql/lib/upgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/rust.dbscheme @@ -0,0 +1,3616 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_def +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +@variant_def = + @struct +| @union +| @variant +; + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @const +| @enum +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @struct +| @trait +| @trait_alias +| @type_alias +| @union +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/upgrade.properties b/rust/ql/lib/upgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/upgrade.properties new file mode 100644 index 000000000000..a27f5bf84cf2 --- /dev/null +++ b/rust/ql/lib/upgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/upgrade.properties @@ -0,0 +1,5 @@ +description: Add `function_has_implementation` and `const_has_implementation` tables +compatibility: backwards + +function_has_implementation.rel: reorder function_bodies (@function id, @block_expr body) id +const_has_implementation.rel: reorder const_bodies (@const id, @expr body) id diff --git a/rust/ql/lib/upgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/old.dbscheme b/rust/ql/lib/upgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/old.dbscheme new file mode 100644 index 000000000000..aa9a0bda17c7 --- /dev/null +++ b/rust/ql/lib/upgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/old.dbscheme @@ -0,0 +1,3616 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_def +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +@variant_def = + @struct +| @union +| @variant +; + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @const +| @enum +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @struct +| @trait +| @trait_alias +| @type_alias +| @union +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/rust.dbscheme b/rust/ql/lib/upgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/rust.dbscheme new file mode 100644 index 000000000000..e019447231cd --- /dev/null +++ b/rust/ql/lib/upgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/rust.dbscheme @@ -0,0 +1,3620 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @const +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @trait +| @trait_alias +| @type_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/upgrade.properties b/rust/ql/lib/upgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/upgrade.properties new file mode 100644 index 000000000000..a8b770728ac5 --- /dev/null +++ b/rust/ql/lib/upgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/upgrade.properties @@ -0,0 +1,2 @@ +description: Add `adt_derive_macro_expansions` +compatibility: backwards diff --git a/rust/ql/lib/upgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/old.dbscheme b/rust/ql/lib/upgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/old.dbscheme new file mode 100644 index 000000000000..e019447231cd --- /dev/null +++ b/rust/ql/lib/upgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/old.dbscheme @@ -0,0 +1,3620 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @const +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @trait +| @trait_alias +| @type_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/rust.dbscheme b/rust/ql/lib/upgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/rust.dbscheme new file mode 100644 index 000000000000..e3b3765116ec --- /dev/null +++ b/rust/ql/lib/upgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/rust.dbscheme @@ -0,0 +1,3632 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @const +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @trait +| @trait_alias +| @type_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/upgrade.properties b/rust/ql/lib/upgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/upgrade.properties new file mode 100644 index 000000000000..140ad714d120 --- /dev/null +++ b/rust/ql/lib/upgrades/e019447231cd93c23ecd173ea5f82e7f9ff54ece/upgrade.properties @@ -0,0 +1,2 @@ +description: Add `const_generic_param_lists` and `const_where_clauses` +compatibility: backwards diff --git a/rust/ql/lib/upgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/old.dbscheme b/rust/ql/lib/upgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/old.dbscheme new file mode 100644 index 000000000000..e3b3765116ec --- /dev/null +++ b/rust/ql/lib/upgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/old.dbscheme @@ -0,0 +1,3632 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @const +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @trait +| @trait_alias +| @type_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/rust.dbscheme b/rust/ql/lib/upgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/rust.dbscheme new file mode 100644 index 000000000000..f72a3d8d021c --- /dev/null +++ b/rust/ql/lib/upgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/rust.dbscheme @@ -0,0 +1,3638 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @const +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @trait +| @trait_alias +| @type_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/upgrade.properties b/rust/ql/lib/upgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/upgrade.properties new file mode 100644 index 000000000000..9b83871fb9b6 --- /dev/null +++ b/rust/ql/lib/upgrades/e3b3765116ecb8d796979f0b4787926cb8d691b5/upgrade.properties @@ -0,0 +1,2 @@ +description: Add databaseMetadata relation +compatibility: full diff --git a/rust/ql/lib/upgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/old.dbscheme b/rust/ql/lib/upgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/old.dbscheme new file mode 100644 index 000000000000..f72a3d8d021c --- /dev/null +++ b/rust/ql/lib/upgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/old.dbscheme @@ -0,0 +1,3638 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @const +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @trait +| @trait_alias +| @type_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/rust.dbscheme b/rust/ql/lib/upgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/rust.dbscheme new file mode 100644 index 000000000000..8e9b0c516ae8 --- /dev/null +++ b/rust/ql/lib/upgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/rust.dbscheme @@ -0,0 +1,3633 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @trait_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/upgrade.properties b/rust/ql/lib/upgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/upgrade.properties new file mode 100644 index 000000000000..709ef9de611c --- /dev/null +++ b/rust/ql/lib/upgrades/f72a3d8d021c81c67ba046c6af15c61a79cb8163/upgrade.properties @@ -0,0 +1,2 @@ +description: Make `@assoc_item` and `@extern_item` subtypes of `@item` +compatibility: full diff --git a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll index e6cf20da84dc..c5a95ac90389 100644 --- a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll +++ b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll @@ -37,6 +37,7 @@ private module ResolveTest implements TestSig { not n = any(Path parent).getQualifier() and location = n.getLocation() and n.fromSource() and + not location.getFile().getAbsolutePath().matches("%proc_macro.rs") and not n.isFromMacroExpansion() and element = n.toString() and tag = "item" diff --git a/rust/ql/src/CHANGELOG.md b/rust/ql/src/CHANGELOG.md index 1459910b5eef..ad73b7174f9a 100644 --- a/rust/ql/src/CHANGELOG.md +++ b/rust/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.1.11 + +### New Queries + +* Initial public preview release. + ## 0.1.10 No user-facing changes. diff --git a/rust/ql/src/change-notes/2025-06-24-access-after-lifetime-ended.md b/rust/ql/src/change-notes/2025-06-24-access-after-lifetime-ended.md new file mode 100644 index 000000000000..7b92a3de78b7 --- /dev/null +++ b/rust/ql/src/change-notes/2025-06-24-access-after-lifetime-ended.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `rust/access-after-lifetime-ended`, for detecting pointer dereferences after the lifetime of the pointed-to object has ended. diff --git a/rust/ql/src/change-notes/released/0.1.11.md b/rust/ql/src/change-notes/released/0.1.11.md new file mode 100644 index 000000000000..04115f54f4cc --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.11.md @@ -0,0 +1,5 @@ +## 0.1.11 + +### New Queries + +* Initial public preview release. diff --git a/rust/ql/src/codeql-pack.release.yml b/rust/ql/src/codeql-pack.release.yml index 30f5ca88be0e..1d1688e8d612 100644 --- a/rust/ql/src/codeql-pack.release.yml +++ b/rust/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.10 +lastReleaseVersion: 0.1.11 diff --git a/rust/ql/src/codeql-suites/rust-code-quality-extended.qls b/rust/ql/src/codeql-suites/rust-code-quality-extended.qls new file mode 100644 index 000000000000..1ee85cae856c --- /dev/null +++ b/rust/ql/src/codeql-suites/rust-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index 813da756c7bd..478c7139d5a7 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.10 +version: 0.1.12-dev groups: - rust - queries diff --git a/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.qhelp b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.qhelp new file mode 100644 index 000000000000..fe5dd64a270f --- /dev/null +++ b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.qhelp @@ -0,0 +1,50 @@ + + + + +

    +Dereferencing a pointer after the lifetime of its target has ended causes undefined behavior. Memory +may be corrupted, causing the program to crash or behave incorrectly, in some cases exposing the program +to potential attacks. +

    + +
    + + +

    +When dereferencing a pointer in unsafe code, take care that the pointer is still valid +at the time it is dereferenced. Code may need to be rearranged or changed to extend lifetimes. If +possible, rewrite the code using safe Rust types to avoid this kind of problem altogether. +

    + +
    + + +

    +In the following example, val is local to get_pointer so its lifetime +ends when that function returns. However, a pointer to val is returned and dereferenced +after that lifetime has ended, causing undefined behavior: +

    + + + +

    +One way to fix this is to change the return type of the function from a pointer to a Box, +which ensures that the value it points to remains on the heap for the lifetime of the Box +itself. Note that there is no longer a need for an unsafe block as the code no longer +handles pointers directly: +

    + + + +
    + + +
    +
  • Rust Documentation: Module ptr - Safety.
  • +
  • Massachusetts Institute of Technology: Unsafe Rust - Dereferencing a Raw Pointer.
  • + + +
  • Rust Documentation: Behavior considered undefined >> Dangling pointers.
  • diff --git a/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql new file mode 100644 index 000000000000..b4f652668b71 --- /dev/null +++ b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql @@ -0,0 +1,52 @@ +/** + * @name Access of a pointer after its lifetime has ended + * @description Dereferencing a pointer after the lifetime of its target has ended + * causes undefined behavior and may result in memory corruption. + * @kind path-problem + * @problem.severity error + * @security-severity 9.8 + * @precision medium + * @id rust/access-after-lifetime-ended + * @tags reliability + * security + * external/cwe/cwe-825 + */ + +import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.dataflow.TaintTracking +import codeql.rust.security.AccessAfterLifetimeExtensions +import AccessAfterLifetimeFlow::PathGraph + +/** + * A data flow configuration for detecting accesses to a pointer after its + * lifetime has ended. + */ +module AccessAfterLifetimeConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { node instanceof AccessAfterLifetime::Source } + + predicate isSink(DataFlow::Node node) { node instanceof AccessAfterLifetime::Sink } + + predicate isBarrier(DataFlow::Node barrier) { barrier instanceof AccessAfterLifetime::Barrier } +} + +module AccessAfterLifetimeFlow = TaintTracking::Global; + +from + AccessAfterLifetimeFlow::PathNode sourceNode, AccessAfterLifetimeFlow::PathNode sinkNode, + Variable target +where + // flow from a pointer or reference to the dereference + AccessAfterLifetimeFlow::flowPath(sourceNode, sinkNode) and + // check that the dereference is outside the lifetime of the target + AccessAfterLifetime::dereferenceAfterLifetime(sourceNode.getNode(), sinkNode.getNode(), target) and + // include only results inside `unsafe` blocks, as other results tend to be false positives + ( + sinkNode.getNode().asExpr().getExpr().getEnclosingBlock*().isUnsafe() or + sinkNode.getNode().asExpr().getExpr().getEnclosingCallable().(Function).isUnsafe() + ) and + // exclude cases with sources / sinks in macros, since these results are difficult to interpret + not sourceNode.getNode().asExpr().getExpr().isFromMacroExpansion() and + not sinkNode.getNode().asExpr().getExpr().isFromMacroExpansion() +select sinkNode.getNode(), sourceNode, sinkNode, + "Access of a pointer to $@ after its lifetime has ended.", target, target.toString() diff --git a/rust/ql/src/queries/security/CWE-825/AccessAfterLifetimeBad.rs b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetimeBad.rs new file mode 100644 index 000000000000..b2512f9424f2 --- /dev/null +++ b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetimeBad.rs @@ -0,0 +1,19 @@ + +fn get_pointer() -> *const i64 { + let val = 123; + + &val +} // lifetime of `val` ends here, the pointer becomes dangling + +fn example() { + let ptr = get_pointer(); + let dereferenced_ptr; + + // ... + + unsafe { + dereferenced_ptr = *ptr; // BAD: dereferences `ptr` after the lifetime of `val` has ended + } + + // ... +} diff --git a/rust/ql/src/queries/security/CWE-825/AccessAfterLifetimeGood.rs b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetimeGood.rs new file mode 100644 index 000000000000..84f19a8a6c90 --- /dev/null +++ b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetimeGood.rs @@ -0,0 +1,17 @@ + +fn get_box() -> Box { + let val = 123; + + Box::new(val) // copies `val` onto the heap, where it remains for the lifetime of the `Box`. +} + +fn example() { + let ptr = get_box(); + let dereferenced_ptr; + + // ... + + dereferenced_ptr = *ptr; // GOOD + + // ... +} diff --git a/rust/ql/src/queries/summary/Stats.qll b/rust/ql/src/queries/summary/Stats.qll index 1feaf3ab48b2..3156f1ffb26e 100644 --- a/rust/ql/src/queries/summary/Stats.qll +++ b/rust/ql/src/queries/summary/Stats.qll @@ -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 0f00fe6f7c6e..650bbe727c33 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/debug/CaptureSummaryModelsPartialPath.ql b/rust/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPartialPath.ql index b10b638129b4..f12b66b7e56a 100644 --- a/rust/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPartialPath.ql +++ b/rust/ql/src/utils/modelgenerator/debug/CaptureSummaryModelsPartialPath.ql @@ -23,6 +23,6 @@ from where PartialFlow::partialFlow(source, sink, _) and p = source.getNode() and - p.asParameter() = api.getParamList().getAParamBase() + p.asParameter() = api.getFunction().getParamList().getAParamBase() select sink.getNode(), source, sink, "There is flow from a $@ to $@.", source.getNode(), "parameter", sink.getNode(), "intermediate value" diff --git a/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll index 58f90cc33a0d..754bb53357a8 100644 --- a/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -1,5 +1,4 @@ private import codeql.util.Unit -private import rust private import rust as R private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.internal.DataFlowImpl as DataFlowImpl @@ -11,44 +10,50 @@ private import codeql.rust.dataflow.internal.TaintTrackingImpl private import codeql.mad.modelgenerator.internal.ModelGeneratorImpl private import codeql.rust.dataflow.internal.FlowSummaryImpl as FlowSummary -private predicate relevant(Function api) { - // Only include functions that have a resolved path. - api.hasCrateOrigin() and - api.hasExtendedCanonicalPath() and - // A canonical path can contain `;` as the syntax for array types use `;`. For - // instance `<[Foo; 1] as Bar>::baz`. This does not work with the shared model - // generator and it is not clear if this will also be the case when we move to - // QL created canoonical paths, so for now we just exclude functions with - // `;`s. - not exists(api.getExtendedCanonicalPath().indexOf(";")) and - ( - // This excludes closures (these are not exported API endpoints) and - // functions without a `pub` visibility. A function can be `pub` without - // ultimately being exported by a crate, so this is an overapproximation. - api.hasVisibility() - or - // If a method implements a public trait it is exposed through the trait. - // We overapproximate this by including all trait method implementations. - exists(Impl impl | impl.hasTrait() and impl.getAssocItemList().getAssocItem(_) = api) - ) +private newtype TCallable = + TFunction(R::Function api, string path) { + path = api.getCanonicalPath() and + ( + // This excludes closures (these are not exported API endpoints) and + // functions without a `pub` visibility. A function can be `pub` without + // ultimately being exported by a crate, so this is an overapproximation. + api.hasVisibility() + or + // If a method implements a public trait it is exposed through the trait. + // We overapproximate this by including all trait method implementations. + exists(R::Impl impl | impl.hasTrait() and impl.getAssocItemList().getAssocItem(_) = api) + ) + } + +class QualifiedCallable extends TCallable { + R::Function api; + string path; + + QualifiedCallable() { this = TFunction(api, path) } + + string toString() { result = path } + + R::Function getFunction() { result = api } + + string getCanonicalPath() { result = path } } module ModelGeneratorCommonInput implements - ModelGeneratorCommonInputSig + ModelGeneratorCommonInputSig { // NOTE: We are not using type information for now. class Type = Unit; class Parameter = R::ParamBase; - class Callable = R::Callable; + class Callable = QualifiedCallable; class NodeExtended extends DataFlow::Node { Type getType() { any() } } - Callable getEnclosingCallable(NodeExtended node) { - result = node.(Node::Node).getEnclosingCallable().asCfgScope() + QualifiedCallable getEnclosingCallable(NodeExtended node) { + result.getFunction() = node.(Node::Node).getEnclosingCallable().asCfgScope() } predicate isRelevantType(Type t) { any() } @@ -69,23 +74,23 @@ module ModelGeneratorCommonInput implements string parameterApproximateAccess(R::ParamBase p) { result = parameterExactAccess(p) } class InstanceParameterNode extends DataFlow::ParameterNode { - InstanceParameterNode() { this.asParameter() instanceof SelfParam } + InstanceParameterNode() { this.asParameter() instanceof R::SelfParam } } bindingset[c] - string paramReturnNodeAsApproximateOutput(Callable c, DataFlowImpl::ParameterPosition pos) { + string paramReturnNodeAsApproximateOutput(QualifiedCallable c, DataFlowImpl::ParameterPosition pos) { result = paramReturnNodeAsExactOutput(c, pos) } bindingset[c] - string paramReturnNodeAsExactOutput(Callable c, DataFlowImpl::ParameterPosition pos) { - result = parameterExactAccess(c.getParamList().getParam(pos.getPosition())) + string paramReturnNodeAsExactOutput(QualifiedCallable c, DataFlowImpl::ParameterPosition pos) { + result = parameterExactAccess(c.getFunction().getParam(pos.getPosition())) or pos.isSelf() and result = qualifierString() } - Callable returnNodeEnclosingCallable(DataFlow::Node ret) { - result = ret.(Node::Node).getEnclosingCallable().asCfgScope() + QualifiedCallable returnNodeEnclosingCallable(DataFlow::Node ret) { + result.getFunction() = ret.(Node::Node).getEnclosingCallable().asCfgScope() } predicate isOwnInstanceAccessNode(DataFlowImpl::RustDataFlow::ReturnNode node) { @@ -99,33 +104,24 @@ module ModelGeneratorCommonInput implements c.(SingletonContentSet).getContent() instanceof ElementContent } - string partialModelRow(Callable api, int i) { - i = 0 and result = api.(Function).getCrateOrigin() // crate - or - i = 1 and result = api.(Function).getExtendedCanonicalPath() // name - } + string partialModelRow(Callable api, int i) { i = 0 and result = api.getCanonicalPath() } string partialNeutralModelRow(Callable api, int i) { result = partialModelRow(api, i) } } private import ModelGeneratorCommonInput -private import MakeModelGeneratorFactory +private import MakeModelGeneratorFactory private module SummaryModelGeneratorInput implements SummaryModelGeneratorInputSig { - class SummaryTargetApi extends Callable { - private Callable lift; - - SummaryTargetApi() { - lift = this and - relevant(this) - } + class SummaryTargetApi extends QualifiedCallable { + QualifiedCallable lift() { result = this } - Callable lift() { result = lift } - - predicate isRelevant() { relevant(this) } + predicate isRelevant() { any() } } - Callable getAsExprEnclosingCallable(NodeExtended node) { result = node.asExpr().getScope() } + QualifiedCallable getAsExprEnclosingCallable(NodeExtended node) { + result.getFunction() = node.asExpr().getScope() + } Parameter asParameter(NodeExtended node) { result = node.asParameter() } @@ -167,17 +163,13 @@ private module SummaryModelGeneratorInput implements SummaryModelGeneratorInputS } private module SourceModelGeneratorInput implements SourceModelGeneratorInputSig { - class SourceTargetApi extends Callable { - SourceTargetApi() { relevant(this) } - } + class SourceTargetApi extends QualifiedCallable { } predicate sourceNode(DataFlow::Node node, string kind) { FlowSource::sourceNode(node, kind) } } private module SinkModelGeneratorInput implements SinkModelGeneratorInputSig { - class SinkTargetApi extends Callable { - SinkTargetApi() { relevant(this) } - } + class SinkTargetApi extends QualifiedCallable { } /** * Holds if `source` is an API entrypoint, i.e., a source of input where data diff --git a/rust/ql/src/utils/modelgenerator/internal/CaptureModelsPrinting.qll b/rust/ql/src/utils/modelgenerator/internal/CaptureModelsPrinting.qll index 789113f7580d..58a80557d0a4 100644 --- a/rust/ql/src/utils/modelgenerator/internal/CaptureModelsPrinting.qll +++ b/rust/ql/src/utils/modelgenerator/internal/CaptureModelsPrinting.qll @@ -1,9 +1,9 @@ -private import rust as R private import codeql.mad.modelgenerator.internal.ModelPrinting private import CaptureModels::ModelGeneratorCommonInput as ModelGeneratorInput +private import CaptureModels private module ModelPrintingLang implements ModelPrintingLangSig { - class Callable = R::Callable; + class Callable = QualifiedCallable; predicate partialModelRow = ModelGeneratorInput::partialModelRow/2; diff --git a/rust/ql/test/.gitignore b/rust/ql/test/.gitignore index 00e3af1fc0a4..65baed5837a4 100644 --- a/rust/ql/test/.gitignore +++ b/rust/ql/test/.gitignore @@ -1,4 +1,9 @@ +target/ + +# these are all generated, see `rust/extractor/src/qltest.rs` for details Cargo.toml -Cargo.lock +rust-toolchain.toml lib.rs -target/ +.proc_macro/ +.lib/ + diff --git a/rust/ql/test/extractor-tests/File/Cargo.lock b/rust/ql/test/extractor-tests/File/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/File/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/canonical_path/Cargo.lock b/rust/ql/test/extractor-tests/canonical_path/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/canonical_path/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected index 69ea1bb7b0e3..49bf47841d0c 100644 --- a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected +++ b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected @@ -1,9 +1,13 @@ 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 | +| regular.rs:2:12:2:17 | fn eq | ::eq | +| regular.rs:2:12:2:17 | impl ...::Eq for Struct::<...> { ... } | | +| regular.rs:2:12:2:17 | impl ...::PartialEq for Struct::<...> { ... } | | | regular.rs:4:1:6:1 | trait Trait | test::regular::Trait | | regular.rs:5:5:5:16 | fn f | <_ as test::regular::Trait>::f | | regular.rs:8:1:10:1 | impl Trait for Struct { ... } | | @@ -41,6 +45,9 @@ canonicalPaths | lib.rs:1:1:1:14 | mod anonymous | repo::test | crate::anonymous | | lib.rs:2:1:2:12 | mod regular | repo::test | crate::regular | | regular.rs:1:1:2:18 | struct Struct | repo::test | crate::regular::Struct | +| regular.rs:2:12:2:17 | fn eq | repo::test | ::eq | +| regular.rs:2:12:2:17 | impl ...::Eq for Struct::<...> { ... } | None | None | +| regular.rs:2:12:2:17 | impl ...::PartialEq for Struct::<...> { ... } | None | None | | regular.rs:4:1:6:1 | trait Trait | repo::test | crate::regular::Trait | | regular.rs:5:5:5:16 | fn f | repo::test | crate::regular::Trait::f | | regular.rs:8:1:10:1 | impl Trait for Struct { ... } | None | None | @@ -65,6 +72,8 @@ resolvedPaths | anonymous.rs:29:9:29:9 | s | None | None | | anonymous.rs:29:9:29:13 | s.g() | None | None | | anonymous.rs:30:9:30:14 | nested | None | None | +| regular.rs:1:1:1:24 | other | None | None | +| regular.rs:1:1:1:24 | self | None | None | | regular.rs:27:13:27:21 | Struct {...} | repo::test | crate::regular::Struct | | regular.rs:28:5:28:5 | s | None | None | | regular.rs:28:5:28:9 | s.f() | repo::test | ::f | 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 16aa82eee21c..51fc3d4c2432 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 000000000000..c65650adf9ae --- /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/Cargo.lock b/rust/ql/test/extractor-tests/canonical_path_disabled/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/canonical_path_disabled/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/canonical_path_disabled/canonical_paths.expected b/rust/ql/test/extractor-tests/canonical_path_disabled/canonical_paths.expected index 2605a806f6f7..d411ab289c93 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,9 +1,13 @@ 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 | +| regular.rs:5:12:5:17 | fn eq | ::eq | +| regular.rs:5:12:5:17 | impl ...::Eq for Struct::<...> { ... } | | +| regular.rs:5:12:5:17 | impl ...::PartialEq for Struct::<...> { ... } | | | regular.rs:7:1:9:1 | trait Trait | test::regular::Trait | | regular.rs:8:5:8:16 | fn f | <_ as test::regular::Trait>::f | | regular.rs:11:1:13:1 | impl Trait for Struct { ... } | | @@ -41,6 +45,9 @@ canonicalPaths | lib.rs:1:1:1:14 | mod anonymous | None | None | | lib.rs:2:1:2:12 | mod regular | None | None | | regular.rs:4:1:5:18 | struct Struct | None | None | +| regular.rs:5:12:5:17 | fn eq | None | None | +| regular.rs:5:12:5:17 | impl ...::Eq for Struct::<...> { ... } | None | None | +| regular.rs:5:12:5:17 | impl ...::PartialEq for Struct::<...> { ... } | None | None | | regular.rs:7:1:9:1 | trait Trait | None | None | | regular.rs:8:5:8:16 | fn f | None | None | | regular.rs:11:1:13:1 | impl Trait for Struct { ... } | None | None | @@ -65,6 +72,8 @@ resolvedPaths | anonymous.rs:32:9:32:9 | s | None | None | | anonymous.rs:32:9:32:13 | s.g() | None | None | | anonymous.rs:33:9:33:14 | nested | None | None | +| regular.rs:4:1:4:24 | other | None | None | +| regular.rs:4:1:4:24 | self | None | None | | regular.rs:30:13:30:21 | Struct {...} | None | None | | regular.rs:31:5:31:5 | s | None | None | | regular.rs:31:5:31:9 | s.f() | None | None | 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 f40a74f5aeda..9a5712b5135b 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/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/extractor-tests/crate_graph/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 0aa771632529..000000000000 --- a/rust/ql/test/extractor-tests/crate_graph/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,13 +0,0 @@ -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 | -| 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 | -| 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 | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | 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 000000000000..efdbaf4f23fe --- /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 acc8aa3dec87..21c662bb425d 100644 --- a/rust/ql/test/extractor-tests/crate_graph/crates.expected +++ b/rust/ql/test/extractor-tests/crate_graph/crates.expected @@ -1,8 +1,8 @@ #-----| Crate(alloc@0.0.0) #-----| core -> Crate(core@0.0.0) -#-----| compiler_builtins -> Crate(compiler_builtins@0.1.140) -#-----| rand -> Crate(rand@0.8.5) -#-----| rand_xorshift -> Crate(rand_xorshift@0.3.0) +#-----| compiler_builtins -> Crate(compiler_builtins@0.1.146) +#-----| rand -> Crate(rand@0.9.0) +#-----| rand_xorshift -> Crate(rand_xorshift@0.4.0) #-----| Crate(allocator_api2@0.2.21) @@ -16,21 +16,19 @@ #-----| Crate(cfg_if@1.0.0) #-----| core -> Crate(core@0.0.0) -#-----| compiler_builtins -> Crate(compiler_builtins@0.1.140) +#-----| compiler_builtins -> Crate(compiler_builtins@0.1.146) -#-----| 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) #-----| std -> Crate(std@0.0.0) #-----| test -> Crate(test@0.0.0) -#-----| Crate(compiler_builtins@0.1.140) +#-----| Crate(compiler_builtins@0.1.146) #-----| core -> Crate(core@0.0.0) #-----| Crate(core@0.0.0) -#-----| rand -> Crate(rand@0.8.5) -#-----| rand_xorshift -> Crate(rand_xorshift@0.3.0) #-----| Crate(crypto_common@0.1.6) #-----| proc_macro -> Crate(proc_macro@0.0.0) @@ -67,7 +65,7 @@ #-----| allocator_api2 -> Crate(allocator_api2@0.2.21) #-----| alloc -> Crate(alloc@0.0.0) #-----| core -> Crate(core@0.0.0) -#-----| compiler_builtins -> Crate(compiler_builtins@0.1.140) +#-----| compiler_builtins -> Crate(compiler_builtins@0.1.146) #-----| Crate(libc@0.2.169) #-----| rustc_std_workspace_core -> Crate(core@0.0.0) @@ -89,7 +87,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) @@ -102,14 +100,14 @@ main.rs: #-----| Crate(panic_abort@0.0.0) #-----| alloc -> Crate(alloc@0.0.0) #-----| core -> Crate(core@0.0.0) -#-----| compiler_builtins -> Crate(compiler_builtins@0.1.140) +#-----| compiler_builtins -> Crate(compiler_builtins@0.1.146) #-----| cfg_if -> Crate(cfg_if@1.0.0) #-----| libc -> Crate(libc@0.2.169) #-----| Crate(panic_unwind@0.0.0) #-----| alloc -> Crate(alloc@0.0.0) #-----| core -> Crate(core@0.0.0) -#-----| compiler_builtins -> Crate(compiler_builtins@0.1.140) +#-----| compiler_builtins -> Crate(compiler_builtins@0.1.146) #-----| cfg_if -> Crate(cfg_if@1.0.0) #-----| libc -> Crate(libc@0.2.169) #-----| unwind -> Crate(unwind@0.0.0) @@ -118,27 +116,29 @@ main.rs: #-----| core -> Crate(core@0.0.0) #-----| std -> Crate(std@0.0.0) -#-----| Crate(rand@0.8.5) -#-----| rand_core -> Crate(rand_core@0.6.4) +#-----| Crate(rand@0.9.0) +#-----| zerocopy -> Crate(zerocopy@0.8.17) +#-----| rand_core -> Crate(rand_core@0.9.0) -#-----| Crate(rand_core@0.6.4) +#-----| Crate(rand_core@0.9.0) +#-----| zerocopy -> Crate(zerocopy@0.8.17) -#-----| Crate(rand_xorshift@0.3.0) -#-----| rand_core -> Crate(rand_core@0.6.4) +#-----| Crate(rand_xorshift@0.4.0) +#-----| rand_core -> Crate(rand_core@0.9.0) #-----| Crate(rustc_demangle@0.1.24) #-----| core -> Crate(core@0.0.0) -#-----| compiler_builtins -> Crate(compiler_builtins@0.1.140) +#-----| compiler_builtins -> Crate(compiler_builtins@0.1.146) #-----| Crate(std@0.0.0) #-----| alloc -> Crate(alloc@0.0.0) #-----| core -> Crate(core@0.0.0) -#-----| compiler_builtins -> Crate(compiler_builtins@0.1.140) +#-----| compiler_builtins -> Crate(compiler_builtins@0.1.146) #-----| cfg_if -> Crate(cfg_if@1.0.0) #-----| hashbrown -> Crate(hashbrown@0.15.2) #-----| libc -> Crate(libc@0.2.169) -#-----| rand -> Crate(rand@0.8.5) -#-----| rand_xorshift -> Crate(rand_xorshift@0.3.0) +#-----| rand -> Crate(rand@0.9.0) +#-----| rand_xorshift -> Crate(rand_xorshift@0.4.0) #-----| rustc_demangle -> Crate(rustc_demangle@0.1.24) #-----| panic_abort -> Crate(panic_abort@0.0.0) #-----| unwind -> Crate(unwind@0.0.0) @@ -148,7 +148,7 @@ main.rs: #-----| Crate(std_detect@0.1.5) #-----| alloc -> Crate(alloc@0.0.0) #-----| core -> Crate(core@0.0.0) -#-----| compiler_builtins -> Crate(compiler_builtins@0.1.140) +#-----| compiler_builtins -> Crate(compiler_builtins@0.1.146) #-----| cfg_if -> Crate(cfg_if@1.0.0) #-----| libc -> Crate(libc@0.2.169) @@ -178,11 +178,11 @@ lib.rs: #-----| Crate(unicode_width@0.1.14) #-----| core -> Crate(core@0.0.0) #-----| std -> Crate(std@0.0.0) -#-----| compiler_builtins -> Crate(compiler_builtins@0.1.140) +#-----| compiler_builtins -> Crate(compiler_builtins@0.1.146) #-----| Crate(unwind@0.0.0) #-----| core -> Crate(core@0.0.0) -#-----| compiler_builtins -> Crate(compiler_builtins@0.1.140) +#-----| compiler_builtins -> Crate(compiler_builtins@0.1.146) #-----| cfg_if -> Crate(cfg_if@1.0.0) #-----| libc -> Crate(libc@0.2.169) @@ -192,3 +192,5 @@ lib.rs: #-----| core -> Crate(core@0.0.0) #-----| std -> Crate(std@0.0.0) #-----| test -> Crate(test@0.0.0) + +#-----| Crate(zerocopy@0.8.17) diff --git a/rust/ql/test/extractor-tests/generated/Abi/Abi.expected b/rust/ql/test/extractor-tests/generated/Abi/Abi.expected index 1184fc0e3742..158233ee757b 100644 --- a/rust/ql/test/extractor-tests/generated/Abi/Abi.expected +++ b/rust/ql/test/extractor-tests/generated/Abi/Abi.expected @@ -1 +1,4 @@ -| gen_abi.rs:7:5:7:14 | Abi | hasAbiString: | yes | +instances +| gen_abi.rs:7:5:7:14 | Abi | +getAbiString +| gen_abi.rs:7:5:7:14 | Abi | "C" | diff --git a/rust/ql/test/extractor-tests/generated/Abi/Abi.ql b/rust/ql/test/extractor-tests/generated/Abi/Abi.ql index 3c0fd40eaeb3..bbf211911a47 100644 --- a/rust/ql/test/extractor-tests/generated/Abi/Abi.ql +++ b/rust/ql/test/extractor-tests/generated/Abi/Abi.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from Abi x, string hasAbiString -where - toBeTested(x) and - not x.isUnknown() and - if x.hasAbiString() then hasAbiString = "yes" else hasAbiString = "no" -select x, "hasAbiString:", hasAbiString +query predicate instances(Abi x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAbiString(Abi x, string getAbiString) { + toBeTested(x) and not x.isUnknown() and getAbiString = x.getAbiString() +} diff --git a/rust/ql/test/extractor-tests/generated/Abi/Abi_getAbiString.expected b/rust/ql/test/extractor-tests/generated/Abi/Abi_getAbiString.expected deleted file mode 100644 index 278aa2d83252..000000000000 --- a/rust/ql/test/extractor-tests/generated/Abi/Abi_getAbiString.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_abi.rs:7:5:7:14 | Abi | "C" | diff --git a/rust/ql/test/extractor-tests/generated/Abi/Abi_getAbiString.ql b/rust/ql/test/extractor-tests/generated/Abi/Abi_getAbiString.ql deleted file mode 100644 index 77104019b328..000000000000 --- a/rust/ql/test/extractor-tests/generated/Abi/Abi_getAbiString.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Abi x -where toBeTested(x) and not x.isUnknown() -select x, x.getAbiString() diff --git a/rust/ql/test/extractor-tests/generated/Abi/Cargo.lock b/rust/ql/test/extractor-tests/generated/Abi/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Abi/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ArgList/ArgList.expected b/rust/ql/test/extractor-tests/generated/ArgList/ArgList.expected index 86eca9460ef4..cf6f3a3a0587 100644 --- a/rust/ql/test/extractor-tests/generated/ArgList/ArgList.expected +++ b/rust/ql/test/extractor-tests/generated/ArgList/ArgList.expected @@ -1 +1,6 @@ -| gen_arg_list.rs:7:8:7:16 | ArgList | getNumberOfArgs: | 3 | +instances +| gen_arg_list.rs:7:8:7:16 | ArgList | +getArg +| 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/ArgList.ql b/rust/ql/test/extractor-tests/generated/ArgList/ArgList.ql index 0e8c23922b5a..91bbcef10e62 100644 --- a/rust/ql/test/extractor-tests/generated/ArgList/ArgList.ql +++ b/rust/ql/test/extractor-tests/generated/ArgList/ArgList.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from ArgList x, int getNumberOfArgs -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfArgs = x.getNumberOfArgs() -select x, "getNumberOfArgs:", getNumberOfArgs +query predicate instances(ArgList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getArg(ArgList x, int index, Expr getArg) { + toBeTested(x) and not x.isUnknown() and getArg = x.getArg(index) +} diff --git a/rust/ql/test/extractor-tests/generated/ArgList/ArgList_getArg.expected b/rust/ql/test/extractor-tests/generated/ArgList/ArgList_getArg.expected deleted file mode 100644 index 2cfb771d6cb6..000000000000 --- a/rust/ql/test/extractor-tests/generated/ArgList/ArgList_getArg.expected +++ /dev/null @@ -1,3 +0,0 @@ -| 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/ArgList_getArg.ql b/rust/ql/test/extractor-tests/generated/ArgList/ArgList_getArg.ql deleted file mode 100644 index 253d13f2b56a..000000000000 --- a/rust/ql/test/extractor-tests/generated/ArgList/ArgList_getArg.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ArgList 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/ArgList/Cargo.lock b/rust/ql/test/extractor-tests/generated/ArgList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ArgList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.expected b/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.expected index 31fd8036aad7..fbe635d579d2 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.expected @@ -1 +1,7 @@ -| gen_array_list_expr.rs:5:5:5:13 | [...] | getNumberOfExprs: | 3 | getNumberOfAttrs: | 0 | +instances +| gen_array_list_expr.rs:5:5:5:13 | [...] | +getExpr +| gen_array_list_expr.rs:5:5:5:13 | [...] | 0 | gen_array_list_expr.rs:5:6:5:6 | 1 | +| gen_array_list_expr.rs:5:5:5:13 | [...] | 1 | gen_array_list_expr.rs:5:9:5:9 | 2 | +| gen_array_list_expr.rs:5:5:5:13 | [...] | 2 | gen_array_list_expr.rs:5:12:5:12 | 3 | +getAttr diff --git a/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql b/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql index 72f74d5ce34d..36f7bb41db93 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from ArrayListExpr x, int getNumberOfExprs, int getNumberOfAttrs -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfExprs = x.getNumberOfExprs() and - getNumberOfAttrs = x.getNumberOfAttrs() -select x, "getNumberOfExprs:", getNumberOfExprs, "getNumberOfAttrs:", getNumberOfAttrs +query predicate instances(ArrayListExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExpr(ArrayListExpr x, int index, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr(index) +} + +query predicate getAttr(ArrayListExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} diff --git a/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getAttr.ql deleted file mode 100644 index 10a9b3d52b34..000000000000 --- a/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ArrayListExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getExpr.expected deleted file mode 100644 index ac836b145bd7..000000000000 --- a/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getExpr.expected +++ /dev/null @@ -1,3 +0,0 @@ -| gen_array_list_expr.rs:5:5:5:13 | [...] | 0 | gen_array_list_expr.rs:5:6:5:6 | 1 | -| gen_array_list_expr.rs:5:5:5:13 | [...] | 1 | gen_array_list_expr.rs:5:9:5:9 | 2 | -| gen_array_list_expr.rs:5:5:5:13 | [...] | 2 | gen_array_list_expr.rs:5:12:5:12 | 3 | diff --git a/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getExpr.ql b/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getExpr.ql deleted file mode 100644 index 96d635c3c175..000000000000 --- a/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ArrayListExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getExpr(index) diff --git a/rust/ql/test/extractor-tests/generated/ArrayListExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/ArrayListExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ArrayListExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.expected b/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.expected index e19394137d93..39bb2b685bea 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.expected @@ -1 +1,6 @@ -| gen_array_repeat_expr.rs:5:5:5:11 | [1; 10] | getNumberOfExprs: | 2 | getNumberOfAttrs: | 0 | getRepeatOperand: | gen_array_repeat_expr.rs:5:6:5:6 | 1 | getRepeatLength: | gen_array_repeat_expr.rs:5:9:5:10 | 10 | +instances +| gen_array_repeat_expr.rs:5:5:5:11 | [1; 10] | getRepeatOperand: | gen_array_repeat_expr.rs:5:6:5:6 | 1 | getRepeatLength: | gen_array_repeat_expr.rs:5:9:5:10 | 10 | +getExpr +| gen_array_repeat_expr.rs:5:5:5:11 | [1; 10] | 0 | gen_array_repeat_expr.rs:5:6:5:6 | 1 | +| gen_array_repeat_expr.rs:5:5:5:11 | [1; 10] | 1 | gen_array_repeat_expr.rs:5:9:5:10 | 10 | +getAttr diff --git a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql b/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql index cda59a0d6387..7f337fc87b55 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql @@ -2,15 +2,22 @@ import codeql.rust.elements import TestUtils -from - ArrayRepeatExpr x, int getNumberOfExprs, int getNumberOfAttrs, Expr getRepeatOperand, - Expr getRepeatLength -where +query predicate instances( + ArrayRepeatExpr x, string getRepeatOperand__label, Expr getRepeatOperand, + string getRepeatLength__label, Expr getRepeatLength +) { toBeTested(x) and not x.isUnknown() and - getNumberOfExprs = x.getNumberOfExprs() and - getNumberOfAttrs = x.getNumberOfAttrs() and + getRepeatOperand__label = "getRepeatOperand:" and getRepeatOperand = x.getRepeatOperand() and + getRepeatLength__label = "getRepeatLength:" and getRepeatLength = x.getRepeatLength() -select x, "getNumberOfExprs:", getNumberOfExprs, "getNumberOfAttrs:", getNumberOfAttrs, - "getRepeatOperand:", getRepeatOperand, "getRepeatLength:", getRepeatLength +} + +query predicate getExpr(ArrayRepeatExpr x, int index, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr(index) +} + +query predicate getAttr(ArrayRepeatExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} diff --git a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getAttr.ql deleted file mode 100644 index 30c64104eeef..000000000000 --- a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ArrayRepeatExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getExpr.expected deleted file mode 100644 index ccf6290172e6..000000000000 --- a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getExpr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_array_repeat_expr.rs:5:5:5:11 | [1; 10] | 0 | gen_array_repeat_expr.rs:5:6:5:6 | 1 | -| gen_array_repeat_expr.rs:5:5:5:11 | [1; 10] | 1 | gen_array_repeat_expr.rs:5:9:5:10 | 10 | diff --git a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getExpr.ql b/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getExpr.ql deleted file mode 100644 index 63352ff7776e..000000000000 --- a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ArrayRepeatExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getExpr(index) diff --git a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.expected index b19154aca0b0..98da7c6b5a96 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.expected @@ -1 +1,6 @@ -| gen_array_type_repr.rs:7:14:7:21 | ArrayTypeRepr | hasConstArg: | yes | hasElementTypeRepr: | yes | +instances +| gen_array_type_repr.rs:7:14:7:21 | ArrayTypeRepr | +getConstArg +| gen_array_type_repr.rs:7:14:7:21 | ArrayTypeRepr | gen_array_type_repr.rs:7:20:7:20 | ConstArg | +getElementTypeRepr +| 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/ArrayTypeRepr.ql b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.ql index 5ec3d499addc..e12f81b7b716 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from ArrayTypeRepr x, string hasConstArg, string hasElementTypeRepr -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasConstArg() then hasConstArg = "yes" else hasConstArg = "no") and - if x.hasElementTypeRepr() then hasElementTypeRepr = "yes" else hasElementTypeRepr = "no" -select x, "hasConstArg:", hasConstArg, "hasElementTypeRepr:", hasElementTypeRepr +query predicate instances(ArrayTypeRepr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getConstArg(ArrayTypeRepr x, ConstArg getConstArg) { + toBeTested(x) and not x.isUnknown() and getConstArg = x.getConstArg() +} + +query predicate getElementTypeRepr(ArrayTypeRepr x, TypeRepr getElementTypeRepr) { + toBeTested(x) and not x.isUnknown() and getElementTypeRepr = x.getElementTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getConstArg.expected b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getConstArg.expected deleted file mode 100644 index 9ab029133f6b..000000000000 --- a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getConstArg.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getConstArg.ql b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getConstArg.ql deleted file mode 100644 index f89dc93f5b83..000000000000 --- a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getConstArg.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ArrayTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getConstArg() diff --git a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getElementTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getElementTypeRepr.expected deleted file mode 100644 index 86b22f2f39d8..000000000000 --- a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getElementTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/ArrayTypeRepr_getElementTypeRepr.ql b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getElementTypeRepr.ql deleted file mode 100644 index f343cbd19c99..000000000000 --- a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getElementTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ArrayTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getElementTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql index 087663779dbd..65680442dfb8 100644 --- a/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql +++ b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql @@ -2,6 +2,4 @@ import codeql.rust.elements import TestUtils -from AsmClobberAbi x -where toBeTested(x) and not x.isUnknown() -select x +query predicate instances(AsmClobberAbi x) { toBeTested(x) and not x.isUnknown() } diff --git a/rust/ql/test/extractor-tests/generated/AsmClobberAbi/Cargo.lock b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst.expected b/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst.expected index 5a82c38127c1..30ed42e46f90 100644 --- a/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst.expected +++ b/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst.expected @@ -1 +1,4 @@ -| gen_asm_const.rs:8:30:8:37 | AsmConst | hasExpr: | yes | isConst: | yes | +instances +| gen_asm_const.rs:8:30:8:37 | AsmConst | isConst: | yes | +getExpr +| 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.ql b/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst.ql index 151d7a70fa21..dbec4fe27e34 100644 --- a/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst.ql +++ b/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst.ql @@ -2,10 +2,13 @@ import codeql.rust.elements import TestUtils -from AsmConst x, string hasExpr, string isConst -where +query predicate instances(AsmConst x, string isConst__label, string isConst) { toBeTested(x) and not x.isUnknown() and - (if x.hasExpr() then hasExpr = "yes" else hasExpr = "no") and + isConst__label = "isConst:" and if x.isConst() then isConst = "yes" else isConst = "no" -select x, "hasExpr:", hasExpr, "isConst:", isConst +} + +query predicate getExpr(AsmConst x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst_getExpr.expected b/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst_getExpr.expected deleted file mode 100644 index f1bb1ffc0533..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst_getExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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 deleted file mode 100644 index e01d9d86fbe3..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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/Cargo.lock b/rust/ql/test/extractor-tests/generated/AsmConst/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmConst/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.ql b/rust/ql/test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.ql index 0d009492422b..2507d0e20812 100644 --- a/rust/ql/test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.ql +++ b/rust/ql/test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.ql @@ -2,6 +2,4 @@ import codeql.rust.elements import TestUtils -from AsmDirSpec x -where toBeTested(x) and not x.isUnknown() -select x +query predicate instances(AsmDirSpec x) { toBeTested(x) and not x.isUnknown() } diff --git a/rust/ql/test/extractor-tests/generated/AsmDirSpec/Cargo.lock b/rust/ql/test/extractor-tests/generated/AsmDirSpec/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmDirSpec/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.expected b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.expected index 3a039fe43fe4..2091c3814d5d 100644 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.expected +++ b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.expected @@ -1 +1,9 @@ -| gen_asm_expr.rs:6:9:7:59 | AsmExpr | getNumberOfAsmPieces: | 2 | getNumberOfAttrs: | 1 | getNumberOfTemplates: | 1 | +instances +| gen_asm_expr.rs:6:9:7:59 | AsmExpr | +getAsmPiece +| 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 | +getAttr +| gen_asm_expr.rs:6:9:7:59 | AsmExpr | 0 | gen_asm_expr.rs:6:9:6:25 | Attr | +getTemplate +| 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/AsmExpr.ql b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.ql index 1658328f7b67..11cc082dae04 100644 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.ql +++ b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.ql @@ -2,12 +2,16 @@ import codeql.rust.elements import TestUtils -from AsmExpr x, int getNumberOfAsmPieces, int getNumberOfAttrs, int getNumberOfTemplates -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAsmPieces = x.getNumberOfAsmPieces() and - getNumberOfAttrs = x.getNumberOfAttrs() and - getNumberOfTemplates = x.getNumberOfTemplates() -select x, "getNumberOfAsmPieces:", getNumberOfAsmPieces, "getNumberOfAttrs:", getNumberOfAttrs, - "getNumberOfTemplates:", getNumberOfTemplates +query predicate instances(AsmExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAsmPiece(AsmExpr x, int index, AsmPiece getAsmPiece) { + toBeTested(x) and not x.isUnknown() and getAsmPiece = x.getAsmPiece(index) +} + +query predicate getAttr(AsmExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getTemplate(AsmExpr x, int index, Expr getTemplate) { + toBeTested(x) and not x.isUnknown() and getTemplate = x.getTemplate(index) +} diff --git a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAsmPiece.expected b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAsmPiece.expected deleted file mode 100644 index 449113ff8fab..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAsmPiece.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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_getAsmPiece.ql b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAsmPiece.ql deleted file mode 100644 index a29ac3d48891..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAsmPiece.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AsmExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAsmPiece(index) diff --git a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAttr.expected deleted file mode 100644 index 1e8572997556..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAttr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getAttr.ql b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAttr.ql deleted file mode 100644 index 4455caf1aa5d..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AsmExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getTemplate.expected b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getTemplate.expected deleted file mode 100644 index fa3414743e92..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getTemplate.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/AsmExpr_getTemplate.ql b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getTemplate.ql deleted file mode 100644 index 71e98db67db4..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getTemplate.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AsmExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getTemplate(index) diff --git a/rust/ql/test/extractor-tests/generated/AsmExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/AsmExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel.expected b/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel.expected index e69de29bb2d1..cbd9eac398a0 100644 --- a/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel.expected +++ b/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel.expected @@ -0,0 +1,4 @@ +instances +| gen_asm_label.rs:10:9:10:47 | AsmLabel | +getBlockExpr +| gen_asm_label.rs:10:9:10:47 | AsmLabel | gen_asm_label.rs:10:15:10:47 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel.ql b/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel.ql index fd81bc1820af..d2517cdd4136 100644 --- a/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel.ql +++ b/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel.ql @@ -2,9 +2,8 @@ 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 +query predicate instances(AsmLabel x) { toBeTested(x) and not x.isUnknown() } + +query predicate getBlockExpr(AsmLabel x, BlockExpr getBlockExpr) { + toBeTested(x) and not x.isUnknown() and getBlockExpr = x.getBlockExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel_getBlockExpr.expected b/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel_getBlockExpr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel_getBlockExpr.ql b/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel_getBlockExpr.ql deleted file mode 100644 index 910efd74be1b..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel_getBlockExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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/Cargo.lock b/rust/ql/test/extractor-tests/generated/AsmLabel/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmLabel/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.expected b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.expected index f71018339116..262ca3ada579 100644 --- a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.expected +++ b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.expected @@ -1,2 +1,9 @@ -| 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 | +instances +| gen_asm_operand_expr.rs:8:35:8:35 | AsmOperandExpr | +| gen_asm_operand_expr.rs:8:46:8:46 | AsmOperandExpr | +getInExpr +| 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 | +getOutExpr +| 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.ql b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.ql index b7ccc0b5722e..c8dda7a07e0b 100644 --- a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.ql +++ b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.ql @@ -2,10 +2,12 @@ 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 +query predicate instances(AsmOperandExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getInExpr(AsmOperandExpr x, Expr getInExpr) { + toBeTested(x) and not x.isUnknown() and getInExpr = x.getInExpr() +} + +query predicate getOutExpr(AsmOperandExpr x, Expr getOutExpr) { + toBeTested(x) and not x.isUnknown() and getOutExpr = x.getOutExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getInExpr.expected b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getInExpr.expected deleted file mode 100644 index 642838b0ef3c..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getInExpr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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 deleted file mode 100644 index 95aec8cc53d0..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getInExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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 deleted file mode 100644 index 642838b0ef3c..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getOutExpr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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 deleted file mode 100644 index a137533938a6..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getOutExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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/Cargo.lock b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.expected b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.expected index 4f8c21cb7ef6..c8aec731ff8c 100644 --- a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.expected +++ b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.expected @@ -1,2 +1,8 @@ -| 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 | +instances +| gen_asm_operand_named.rs:8:34:8:43 | AsmOperandNamed | +| gen_asm_operand_named.rs:8:46:8:62 | AsmOperandNamed | +getAsmOperand +| 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 | +getName +| 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.ql b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.ql index 7cb204f6b9e6..9c900afe42e1 100644 --- a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.ql +++ b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.ql @@ -2,10 +2,12 @@ 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 +query predicate instances(AsmOperandNamed x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAsmOperand(AsmOperandNamed x, AsmOperand getAsmOperand) { + toBeTested(x) and not x.isUnknown() and getAsmOperand = x.getAsmOperand() +} + +query predicate getName(AsmOperandNamed x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getAsmOperand.expected b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getAsmOperand.expected deleted file mode 100644 index 8e008a44f8aa..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getAsmOperand.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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 deleted file mode 100644 index c3cd36b2ac5b..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getAsmOperand.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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 deleted file mode 100644 index aad90d4b5e81..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getName.expected +++ /dev/null @@ -1 +0,0 @@ -| 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 deleted file mode 100644 index a8b856ffaa82..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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/Cargo.lock b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AsmOption/AsmOption.ql b/rust/ql/test/extractor-tests/generated/AsmOption/AsmOption.ql index c9e3997ed42e..3247f52ea366 100644 --- a/rust/ql/test/extractor-tests/generated/AsmOption/AsmOption.ql +++ b/rust/ql/test/extractor-tests/generated/AsmOption/AsmOption.ql @@ -2,9 +2,9 @@ import codeql.rust.elements import TestUtils -from AsmOption x, string isRaw -where +query predicate instances(AsmOption x, string isRaw__label, string isRaw) { toBeTested(x) and not x.isUnknown() and + isRaw__label = "isRaw:" and if x.isRaw() then isRaw = "yes" else isRaw = "no" -select x, "isRaw:", isRaw +} diff --git a/rust/ql/test/extractor-tests/generated/AsmOption/Cargo.lock b/rust/ql/test/extractor-tests/generated/AsmOption/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOption/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.expected b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.expected index 692d66164f83..cf9ec35d070e 100644 --- a/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.expected +++ b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.expected @@ -1 +1,5 @@ -| gen_asm_options_list.rs:8:14:8:36 | AsmOptionsList | getNumberOfAsmOptions: | 2 | +instances +| gen_asm_options_list.rs:8:14:8:36 | AsmOptionsList | +getAsmOption +| 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.ql b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql index 77790bb85068..a4806cce3535 100644 --- a/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql +++ b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql @@ -2,9 +2,8 @@ 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 +query predicate instances(AsmOptionsList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAsmOption(AsmOptionsList x, int index, AsmOption getAsmOption) { + toBeTested(x) and not x.isUnknown() and getAsmOption = x.getAsmOption(index) +} diff --git a/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList_getAsmOption.expected b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList_getAsmOption.expected deleted file mode 100644 index f159de9080ed..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList_getAsmOption.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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 deleted file mode 100644 index 06f2ba54b6e7..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList_getAsmOption.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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/Cargo.lock b/rust/ql/test/extractor-tests/generated/AsmOptionsList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOptionsList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.expected b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.expected index c9eca662143b..a141f1a25c24 100644 --- a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.expected +++ b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.expected @@ -1,2 +1,12 @@ -| 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 | +instances +| gen_asm_reg_operand.rs:8:26:8:35 | AsmRegOperand | +| gen_asm_reg_operand.rs:8:38:8:46 | AsmRegOperand | +getAsmDirSpec +| 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 | +getAsmOperandExpr +| 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 | +getAsmRegSpec +| 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.ql b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.ql index 05685f3d994e..ae7a9bb84f1e 100644 --- a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.ql +++ b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.ql @@ -2,12 +2,16 @@ 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 +query predicate instances(AsmRegOperand x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAsmDirSpec(AsmRegOperand x, AsmDirSpec getAsmDirSpec) { + toBeTested(x) and not x.isUnknown() and getAsmDirSpec = x.getAsmDirSpec() +} + +query predicate getAsmOperandExpr(AsmRegOperand x, AsmOperandExpr getAsmOperandExpr) { + toBeTested(x) and not x.isUnknown() and getAsmOperandExpr = x.getAsmOperandExpr() +} + +query predicate getAsmRegSpec(AsmRegOperand x, AsmRegSpec getAsmRegSpec) { + toBeTested(x) and not x.isUnknown() and getAsmRegSpec = x.getAsmRegSpec() +} diff --git a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmDirSpec.expected b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmDirSpec.expected deleted file mode 100644 index e47c650ada01..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmDirSpec.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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 deleted file mode 100644 index 5542617aea6c..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmDirSpec.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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 deleted file mode 100644 index c43a8ca14439..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmOperandExpr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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 deleted file mode 100644 index bcda631ef9d9..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmOperandExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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 deleted file mode 100644 index b1da1a4d1d43..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmRegSpec.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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 deleted file mode 100644 index aaf03f132120..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmRegSpec.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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/Cargo.lock b/rust/ql/test/extractor-tests/generated/AsmRegOperand/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegOperand/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.expected b/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.expected index 0ecd2dfbdf83..120ba8d20934 100644 --- a/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.expected +++ b/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.expected @@ -1,2 +1,5 @@ -| gen_asm_reg_spec.rs:8:30:8:34 | AsmRegSpec | hasIdentifier: | no | -| gen_asm_reg_spec.rs:8:43:8:45 | AsmRegSpec | hasIdentifier: | yes | +instances +| gen_asm_reg_spec.rs:8:30:8:34 | AsmRegSpec | +| gen_asm_reg_spec.rs:8:43:8:45 | AsmRegSpec | +getIdentifier +| 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.ql b/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.ql index 5fce70e50f94..a84d2843da2b 100644 --- a/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.ql +++ b/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.ql @@ -2,9 +2,8 @@ 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 +query predicate instances(AsmRegSpec x) { toBeTested(x) and not x.isUnknown() } + +query predicate getIdentifier(AsmRegSpec x, NameRef getIdentifier) { + toBeTested(x) and not x.isUnknown() and getIdentifier = x.getIdentifier() +} diff --git a/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec_getIdentifier.expected b/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec_getIdentifier.expected deleted file mode 100644 index d40d67cb6a7e..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec_getIdentifier.expected +++ /dev/null @@ -1 +0,0 @@ -| 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 deleted file mode 100644 index 3fe54bd3697b..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec_getIdentifier.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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/Cargo.lock b/rust/ql/test/extractor-tests/generated/AsmRegSpec/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegSpec/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym.expected b/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym.expected index 664c70d06ba1..e3f8fbc9ec7c 100644 --- a/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym.expected +++ b/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym.expected @@ -1 +1,4 @@ -| gen_asm_sym.rs:8:30:8:44 | AsmSym | hasPath: | yes | +instances +| gen_asm_sym.rs:8:30:8:44 | AsmSym | +getPath +| 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.ql b/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym.ql index e7841f07f689..d105903ad166 100644 --- a/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym.ql +++ b/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym.ql @@ -2,9 +2,8 @@ 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 +query predicate instances(AsmSym x) { toBeTested(x) and not x.isUnknown() } + +query predicate getPath(AsmSym x, Path getPath) { + toBeTested(x) and not x.isUnknown() and getPath = x.getPath() +} diff --git a/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym_getPath.expected b/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym_getPath.expected deleted file mode 100644 index 0bcf012c475a..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym_getPath.expected +++ /dev/null @@ -1 +0,0 @@ -| 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 deleted file mode 100644 index b753181e7282..000000000000 --- a/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym_getPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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/Cargo.lock b/rust/ql/test/extractor-tests/generated/AsmSym/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmSym/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.expected b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.expected index 2c62ef6594b4..83bfd832501b 100644 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.expected +++ b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.expected @@ -1 +1,12 @@ -| 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 | +instances +| gen_assoc_type_arg.rs:9:21:9:31 | AssocTypeArg | +getConstArg +getGenericArgList +getIdentifier +| gen_assoc_type_arg.rs:9:21:9:31 | AssocTypeArg | gen_assoc_type_arg.rs:9:21:9:24 | Item | +getParamList +getRetType +getReturnTypeSyntax +getTypeRepr +getTypeBoundList +| 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/AssocTypeArg.ql b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.ql index 52095924f852..1117c9341809 100644 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.ql +++ b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.ql @@ -2,21 +2,36 @@ import codeql.rust.elements import TestUtils -from - AssocTypeArg x, string hasConstArg, string hasGenericArgList, string hasIdentifier, - string hasParamList, string hasRetType, string hasReturnTypeSyntax, string hasTypeRepr, - string hasTypeBoundList -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasConstArg() then hasConstArg = "yes" else hasConstArg = "no") and - (if x.hasGenericArgList() then hasGenericArgList = "yes" else hasGenericArgList = "no") and - (if x.hasIdentifier() then hasIdentifier = "yes" else hasIdentifier = "no") and - (if x.hasParamList() then hasParamList = "yes" else hasParamList = "no") and - (if x.hasRetType() then hasRetType = "yes" else hasRetType = "no") and - (if x.hasReturnTypeSyntax() then hasReturnTypeSyntax = "yes" else hasReturnTypeSyntax = "no") and - (if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and - if x.hasTypeBoundList() then hasTypeBoundList = "yes" else hasTypeBoundList = "no" -select x, "hasConstArg:", hasConstArg, "hasGenericArgList:", hasGenericArgList, "hasIdentifier:", - hasIdentifier, "hasParamList:", hasParamList, "hasRetType:", hasRetType, "hasReturnTypeSyntax:", - hasReturnTypeSyntax, "hasTypeRepr:", hasTypeRepr, "hasTypeBoundList:", hasTypeBoundList +query predicate instances(AssocTypeArg x) { toBeTested(x) and not x.isUnknown() } + +query predicate getConstArg(AssocTypeArg x, ConstArg getConstArg) { + toBeTested(x) and not x.isUnknown() and getConstArg = x.getConstArg() +} + +query predicate getGenericArgList(AssocTypeArg x, GenericArgList getGenericArgList) { + toBeTested(x) and not x.isUnknown() and getGenericArgList = x.getGenericArgList() +} + +query predicate getIdentifier(AssocTypeArg x, NameRef getIdentifier) { + toBeTested(x) and not x.isUnknown() and getIdentifier = x.getIdentifier() +} + +query predicate getParamList(AssocTypeArg x, ParamList getParamList) { + toBeTested(x) and not x.isUnknown() and getParamList = x.getParamList() +} + +query predicate getRetType(AssocTypeArg x, RetTypeRepr getRetType) { + toBeTested(x) and not x.isUnknown() and getRetType = x.getRetType() +} + +query predicate getReturnTypeSyntax(AssocTypeArg x, ReturnTypeSyntax getReturnTypeSyntax) { + toBeTested(x) and not x.isUnknown() and getReturnTypeSyntax = x.getReturnTypeSyntax() +} + +query predicate getTypeRepr(AssocTypeArg x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} + +query predicate getTypeBoundList(AssocTypeArg x, TypeBoundList getTypeBoundList) { + toBeTested(x) and not x.isUnknown() and getTypeBoundList = x.getTypeBoundList() +} diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getConstArg.expected b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getConstArg.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getConstArg.ql b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getConstArg.ql deleted file mode 100644 index 6619858dfe39..000000000000 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getConstArg.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AssocTypeArg x -where toBeTested(x) and not x.isUnknown() -select x, x.getConstArg() diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getGenericArgList.expected b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getGenericArgList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getGenericArgList.ql b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getGenericArgList.ql deleted file mode 100644 index 09c1924f693f..000000000000 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getGenericArgList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AssocTypeArg x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericArgList() diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getIdentifier.expected b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getIdentifier.expected deleted file mode 100644 index 901ebce3a552..000000000000 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getIdentifier.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getIdentifier.ql b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getIdentifier.ql deleted file mode 100644 index ce4016622d42..000000000000 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getIdentifier.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AssocTypeArg x -where toBeTested(x) and not x.isUnknown() -select x, x.getIdentifier() diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getParamList.expected b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getParamList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getParamList.ql b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getParamList.ql deleted file mode 100644 index e745669c52df..000000000000 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AssocTypeArg x -where toBeTested(x) and not x.isUnknown() -select x, x.getParamList() diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getRetType.expected b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getRetType.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getRetType.ql b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getRetType.ql deleted file mode 100644 index 413b05df0d44..000000000000 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getRetType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AssocTypeArg x -where toBeTested(x) and not x.isUnknown() -select x, x.getRetType() diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getReturnTypeSyntax.expected b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getReturnTypeSyntax.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getReturnTypeSyntax.ql b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getReturnTypeSyntax.ql deleted file mode 100644 index f3929edba7ec..000000000000 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getReturnTypeSyntax.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AssocTypeArg x -where toBeTested(x) and not x.isUnknown() -select x, x.getReturnTypeSyntax() diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeBoundList.expected deleted file mode 100644 index b6c9b7e740d2..000000000000 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeBoundList.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/AssocTypeArg_getTypeBoundList.ql b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeBoundList.ql deleted file mode 100644 index e798c8bbaa42..000000000000 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeBoundList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AssocTypeArg x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeBoundList() diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeRepr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeRepr.ql deleted file mode 100644 index 0e4d81812edf..000000000000 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AssocTypeArg x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/Cargo.lock b/rust/ql/test/extractor-tests/generated/AssocTypeArg/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AssocTypeArg/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Attr/Attr.expected b/rust/ql/test/extractor-tests/generated/Attr/Attr.expected index e0c63af7678e..1272453173d9 100644 --- a/rust/ql/test/extractor-tests/generated/Attr/Attr.expected +++ b/rust/ql/test/extractor-tests/generated/Attr/Attr.expected @@ -1 +1,4 @@ -| gen_attr.rs:7:5:7:20 | Attr | hasMeta: | yes | +instances +| gen_attr.rs:7:5:7:20 | Attr | +getMeta +| 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/Attr.ql b/rust/ql/test/extractor-tests/generated/Attr/Attr.ql index b80d3089be9b..4f717cc7f4d5 100644 --- a/rust/ql/test/extractor-tests/generated/Attr/Attr.ql +++ b/rust/ql/test/extractor-tests/generated/Attr/Attr.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from Attr x, string hasMeta -where - toBeTested(x) and - not x.isUnknown() and - if x.hasMeta() then hasMeta = "yes" else hasMeta = "no" -select x, "hasMeta:", hasMeta +query predicate instances(Attr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getMeta(Attr x, Meta getMeta) { + toBeTested(x) and not x.isUnknown() and getMeta = x.getMeta() +} diff --git a/rust/ql/test/extractor-tests/generated/Attr/Attr_getMeta.expected b/rust/ql/test/extractor-tests/generated/Attr/Attr_getMeta.expected deleted file mode 100644 index 8b7c87927b29..000000000000 --- a/rust/ql/test/extractor-tests/generated/Attr/Attr_getMeta.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/Attr_getMeta.ql b/rust/ql/test/extractor-tests/generated/Attr/Attr_getMeta.ql deleted file mode 100644 index dd4ed7f56efb..000000000000 --- a/rust/ql/test/extractor-tests/generated/Attr/Attr_getMeta.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Attr x -where toBeTested(x) and not x.isUnknown() -select x, x.getMeta() diff --git a/rust/ql/test/extractor-tests/generated/Attr/Cargo.lock b/rust/ql/test/extractor-tests/generated/Attr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Attr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.expected b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.expected index 9104ba77e5fe..1135e3b3e453 100644 --- a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.expected +++ b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.expected @@ -1 +1,5 @@ -| gen_await_expr.rs:6:17:6:27 | await ... | getNumberOfAttrs: | 0 | hasExpr: | yes | +instances +| gen_await_expr.rs:6:17:6:27 | await ... | +getAttr +getExpr +| gen_await_expr.rs:6:17:6:27 | await ... | gen_await_expr.rs:6:17:6:21 | foo(...) | diff --git a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql index f78d81a3ec4f..d98d833c9515 100644 --- a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql +++ b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from AwaitExpr x, int getNumberOfAttrs, string hasExpr -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - if x.hasExpr() then hasExpr = "yes" else hasExpr = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasExpr:", hasExpr +query predicate instances(AwaitExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(AwaitExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExpr(AwaitExpr x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getAttr.ql deleted file mode 100644 index 9ac930312b5c..000000000000 --- a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AwaitExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getExpr.expected deleted file mode 100644 index a1ea7809bb01..000000000000 --- a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_await_expr.rs:6:17:6:27 | await ... | gen_await_expr.rs:6:17:6:21 | foo(...) | diff --git a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getExpr.ql b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getExpr.ql deleted file mode 100644 index 45e9d40ec736..000000000000 --- a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AwaitExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/AwaitExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/AwaitExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AwaitExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.expected b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.expected index ce3e6a096909..2ec05480e367 100644 --- a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.expected +++ b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.expected @@ -1 +1,5 @@ -| gen_become_expr.rs:8:10:8:36 | become ... | getNumberOfAttrs: | 0 | hasExpr: | yes | +instances +| gen_become_expr.rs:8:10:8:36 | become ... | +getAttr +getExpr +| gen_become_expr.rs:8:10:8:36 | become ... | gen_become_expr.rs:8:17:8:36 | fact_a(...) | diff --git a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql index e297230419c4..d8b5775da70f 100644 --- a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql +++ b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from BecomeExpr x, int getNumberOfAttrs, string hasExpr -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - if x.hasExpr() then hasExpr = "yes" else hasExpr = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasExpr:", hasExpr +query predicate instances(BecomeExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(BecomeExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExpr(BecomeExpr x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getAttr.ql deleted file mode 100644 index aac3e259a326..000000000000 --- a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from BecomeExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getExpr.expected deleted file mode 100644 index d0cb86a0303c..000000000000 --- a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_become_expr.rs:8:10:8:36 | become ... | gen_become_expr.rs:8:17:8:36 | fact_a(...) | diff --git a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getExpr.ql b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getExpr.ql deleted file mode 100644 index 697178d5e489..000000000000 --- a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from BecomeExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/BecomeExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/BecomeExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/BecomeExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr.expected b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr.expected index 2f7a47933b1c..f1b99f24258e 100644 --- a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr.expected +++ b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr.expected @@ -1,5 +1,25 @@ -| gen_binary_expr.rs:5:5:5:9 | ... + ... | getNumberOfAttrs: | 0 | hasLhs: | yes | hasOperatorName: | yes | hasRhs: | yes | -| gen_binary_expr.rs:6:5:6:10 | ... && ... | getNumberOfAttrs: | 0 | hasLhs: | yes | hasOperatorName: | yes | hasRhs: | yes | -| gen_binary_expr.rs:7:5:7:10 | ... <= ... | getNumberOfAttrs: | 0 | hasLhs: | yes | hasOperatorName: | yes | hasRhs: | yes | -| gen_binary_expr.rs:8:5:8:9 | ... = ... | getNumberOfAttrs: | 0 | hasLhs: | yes | hasOperatorName: | yes | hasRhs: | yes | -| gen_binary_expr.rs:9:5:9:10 | ... += ... | getNumberOfAttrs: | 0 | hasLhs: | yes | hasOperatorName: | yes | hasRhs: | yes | +instances +| gen_binary_expr.rs:5:5:5:9 | ... + ... | +| gen_binary_expr.rs:6:5:6:10 | ... && ... | +| gen_binary_expr.rs:7:5:7:10 | ... <= ... | +| gen_binary_expr.rs:8:5:8:9 | ... = ... | +| gen_binary_expr.rs:9:5:9:10 | ... += ... | +getAttr +getLhs +| gen_binary_expr.rs:5:5:5:9 | ... + ... | gen_binary_expr.rs:5:5:5:5 | x | +| gen_binary_expr.rs:6:5:6:10 | ... && ... | gen_binary_expr.rs:6:5:6:5 | x | +| gen_binary_expr.rs:7:5:7:10 | ... <= ... | gen_binary_expr.rs:7:5:7:5 | x | +| gen_binary_expr.rs:8:5:8:9 | ... = ... | gen_binary_expr.rs:8:5:8:5 | x | +| gen_binary_expr.rs:9:5:9:10 | ... += ... | gen_binary_expr.rs:9:5:9:5 | x | +getOperatorName +| gen_binary_expr.rs:5:5:5:9 | ... + ... | + | +| gen_binary_expr.rs:6:5:6:10 | ... && ... | && | +| gen_binary_expr.rs:7:5:7:10 | ... <= ... | <= | +| gen_binary_expr.rs:8:5:8:9 | ... = ... | = | +| gen_binary_expr.rs:9:5:9:10 | ... += ... | += | +getRhs +| gen_binary_expr.rs:5:5:5:9 | ... + ... | gen_binary_expr.rs:5:9:5:9 | y | +| gen_binary_expr.rs:6:5:6:10 | ... && ... | gen_binary_expr.rs:6:10:6:10 | y | +| gen_binary_expr.rs:7:5:7:10 | ... <= ... | gen_binary_expr.rs:7:10:7:10 | y | +| gen_binary_expr.rs:8:5:8:9 | ... = ... | gen_binary_expr.rs:8:9:8:9 | y | +| gen_binary_expr.rs:9:5:9:10 | ... += ... | gen_binary_expr.rs:9:10:9:10 | y | diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql index 87c00d18e3e6..6b5bf4ba206b 100644 --- a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql +++ b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql @@ -2,13 +2,20 @@ import codeql.rust.elements import TestUtils -from BinaryExpr x, int getNumberOfAttrs, string hasLhs, string hasOperatorName, string hasRhs -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasLhs() then hasLhs = "yes" else hasLhs = "no") and - (if x.hasOperatorName() then hasOperatorName = "yes" else hasOperatorName = "no") and - if x.hasRhs() then hasRhs = "yes" else hasRhs = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasLhs:", hasLhs, "hasOperatorName:", - hasOperatorName, "hasRhs:", hasRhs +query predicate instances(BinaryExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(BinaryExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getLhs(BinaryExpr x, Expr getLhs) { + toBeTested(x) and not x.isUnknown() and getLhs = x.getLhs() +} + +query predicate getOperatorName(BinaryExpr x, string getOperatorName) { + toBeTested(x) and not x.isUnknown() and getOperatorName = x.getOperatorName() +} + +query predicate getRhs(BinaryExpr x, Expr getRhs) { + toBeTested(x) and not x.isUnknown() and getRhs = x.getRhs() +} diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getAttr.ql deleted file mode 100644 index 0d4503c82bde..000000000000 --- a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from BinaryExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getLhs.expected b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getLhs.expected deleted file mode 100644 index 9321ce0724a9..000000000000 --- a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getLhs.expected +++ /dev/null @@ -1,5 +0,0 @@ -| gen_binary_expr.rs:5:5:5:9 | ... + ... | gen_binary_expr.rs:5:5:5:5 | x | -| gen_binary_expr.rs:6:5:6:10 | ... && ... | gen_binary_expr.rs:6:5:6:5 | x | -| gen_binary_expr.rs:7:5:7:10 | ... <= ... | gen_binary_expr.rs:7:5:7:5 | x | -| gen_binary_expr.rs:8:5:8:9 | ... = ... | gen_binary_expr.rs:8:5:8:5 | x | -| gen_binary_expr.rs:9:5:9:10 | ... += ... | gen_binary_expr.rs:9:5:9:5 | x | diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getLhs.ql b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getLhs.ql deleted file mode 100644 index a8b21f014959..000000000000 --- a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getLhs.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from BinaryExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getLhs() diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getOperatorName.expected b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getOperatorName.expected deleted file mode 100644 index e55ca0c63a05..000000000000 --- a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getOperatorName.expected +++ /dev/null @@ -1,5 +0,0 @@ -| gen_binary_expr.rs:5:5:5:9 | ... + ... | + | -| gen_binary_expr.rs:6:5:6:10 | ... && ... | && | -| gen_binary_expr.rs:7:5:7:10 | ... <= ... | <= | -| gen_binary_expr.rs:8:5:8:9 | ... = ... | = | -| gen_binary_expr.rs:9:5:9:10 | ... += ... | += | diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getOperatorName.ql b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getOperatorName.ql deleted file mode 100644 index 05da704202da..000000000000 --- a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getOperatorName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from BinaryExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getOperatorName() diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getRhs.expected b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getRhs.expected deleted file mode 100644 index 9bd36da5fa6a..000000000000 --- a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getRhs.expected +++ /dev/null @@ -1,5 +0,0 @@ -| gen_binary_expr.rs:5:5:5:9 | ... + ... | gen_binary_expr.rs:5:9:5:9 | y | -| gen_binary_expr.rs:6:5:6:10 | ... && ... | gen_binary_expr.rs:6:10:6:10 | y | -| gen_binary_expr.rs:7:5:7:10 | ... <= ... | gen_binary_expr.rs:7:10:7:10 | y | -| gen_binary_expr.rs:8:5:8:9 | ... = ... | gen_binary_expr.rs:8:9:8:9 | y | -| gen_binary_expr.rs:9:5:9:10 | ... += ... | gen_binary_expr.rs:9:10:9:10 | y | diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getRhs.ql b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getRhs.ql deleted file mode 100644 index 8c491b7f575d..000000000000 --- a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getRhs.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from BinaryExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getRhs() diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/BinaryExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/BinaryExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.expected b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.expected index b6be24d0bb73..0423524834b7 100644 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.expected +++ b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.expected @@ -1,3 +1,11 @@ -| gen_block_expr.rs:3:28:12:1 | { ... } | hasLabel: | no | getNumberOfAttrs: | 0 | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | hasStmtList: | yes | -| gen_block_expr.rs:5:5:7:5 | { ... } | hasLabel: | no | getNumberOfAttrs: | 0 | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | hasStmtList: | yes | -| gen_block_expr.rs:8:5:11:5 | 'label: { ... } | hasLabel: | yes | getNumberOfAttrs: | 0 | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | hasStmtList: | yes | +instances +| gen_block_expr.rs:3:28:12:1 | { ... } | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | +| gen_block_expr.rs:5:5:7:5 | { ... } | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | +| gen_block_expr.rs:8:5:11:5 | 'label: { ... } | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | +getLabel +| gen_block_expr.rs:8:5:11:5 | 'label: { ... } | gen_block_expr.rs:8:5:8:11 | 'label | +getAttr +getStmtList +| gen_block_expr.rs:3:28:12:1 | { ... } | gen_block_expr.rs:3:28:12:1 | StmtList | +| gen_block_expr.rs:5:5:7:5 | { ... } | gen_block_expr.rs:5:5:7:5 | StmtList | +| gen_block_expr.rs:8:5:11:5 | 'label: { ... } | gen_block_expr.rs:8:13:11:5 | StmtList | diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql index 992c06a605b6..4b69689bb913 100644 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql +++ b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql @@ -2,21 +2,35 @@ import codeql.rust.elements import TestUtils -from - BlockExpr x, string hasLabel, int getNumberOfAttrs, string isAsync, string isConst, string isGen, - string isMove, string isTry, string isUnsafe, string hasStmtList -where +query predicate instances( + BlockExpr x, string isAsync__label, string isAsync, string isConst__label, string isConst, + string isGen__label, string isGen, string isMove__label, string isMove, string isTry__label, + string isTry, string isUnsafe__label, string isUnsafe +) { toBeTested(x) and not x.isUnknown() and - (if x.hasLabel() then hasLabel = "yes" else hasLabel = "no") and - getNumberOfAttrs = x.getNumberOfAttrs() and + isAsync__label = "isAsync:" and (if x.isAsync() then isAsync = "yes" else isAsync = "no") and + isConst__label = "isConst:" and (if x.isConst() then isConst = "yes" else isConst = "no") and + isGen__label = "isGen:" and (if x.isGen() then isGen = "yes" else isGen = "no") and + isMove__label = "isMove:" and (if x.isMove() then isMove = "yes" else isMove = "no") and + isTry__label = "isTry:" and (if x.isTry() then isTry = "yes" else isTry = "no") and - (if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no") and - if x.hasStmtList() then hasStmtList = "yes" else hasStmtList = "no" -select x, "hasLabel:", hasLabel, "getNumberOfAttrs:", getNumberOfAttrs, "isAsync:", isAsync, - "isConst:", isConst, "isGen:", isGen, "isMove:", isMove, "isTry:", isTry, "isUnsafe:", isUnsafe, - "hasStmtList:", hasStmtList + isUnsafe__label = "isUnsafe:" and + if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no" +} + +query predicate getLabel(BlockExpr x, Label getLabel) { + toBeTested(x) and not x.isUnknown() and getLabel = x.getLabel() +} + +query predicate getAttr(BlockExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getStmtList(BlockExpr x, StmtList getStmtList) { + toBeTested(x) and not x.isUnknown() and getStmtList = x.getStmtList() +} diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getAttr.ql deleted file mode 100644 index b44ebf9d08d6..000000000000 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from BlockExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.expected b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.expected deleted file mode 100644 index a6933d65b22b..000000000000 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_block_expr.rs:8:5:11:5 | 'label: { ... } | gen_block_expr.rs:8:5:8:11 | 'label | diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.ql b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.ql deleted file mode 100644 index 25f432e2a990..000000000000 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from BlockExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getLabel() diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getStmtList.expected b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getStmtList.expected deleted file mode 100644 index 4863264491b3..000000000000 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getStmtList.expected +++ /dev/null @@ -1,3 +0,0 @@ -| gen_block_expr.rs:3:28:12:1 | { ... } | gen_block_expr.rs:3:28:12:1 | StmtList | -| gen_block_expr.rs:5:5:7:5 | { ... } | gen_block_expr.rs:5:5:7:5 | StmtList | -| gen_block_expr.rs:8:5:11:5 | 'label: { ... } | gen_block_expr.rs:8:13:11:5 | StmtList | diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getStmtList.ql b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getStmtList.ql deleted file mode 100644 index 493e9ad5d4af..000000000000 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getStmtList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from BlockExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getStmtList() diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/BlockExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/BlockExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat.expected b/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat.expected index 8ca2412e8ff5..67b2f917b496 100644 --- a/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat.expected +++ b/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat.expected @@ -1,2 +1,6 @@ -| gen_box_pat.rs:6:9:6:27 | box ... | hasPat: | yes | -| gen_box_pat.rs:7:9:7:24 | box ...::None | hasPat: | yes | +instances +| gen_box_pat.rs:6:9:6:27 | box ... | +| gen_box_pat.rs:7:9:7:24 | box ...::None | +getPat +| gen_box_pat.rs:6:9:6:27 | box ... | gen_box_pat.rs:6:13:6:27 | ...::Some(...) | +| gen_box_pat.rs:7:9:7:24 | box ...::None | gen_box_pat.rs:7:13:7:24 | ...::None | diff --git a/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat.ql b/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat.ql index cee3b683e66d..3bed43b630a7 100644 --- a/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat.ql +++ b/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from BoxPat x, string hasPat -where - toBeTested(x) and - not x.isUnknown() and - if x.hasPat() then hasPat = "yes" else hasPat = "no" -select x, "hasPat:", hasPat +query predicate instances(BoxPat x) { toBeTested(x) and not x.isUnknown() } + +query predicate getPat(BoxPat x, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat() +} diff --git a/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat_getPat.expected b/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat_getPat.expected deleted file mode 100644 index a43975657a84..000000000000 --- a/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat_getPat.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_box_pat.rs:6:9:6:27 | box ... | gen_box_pat.rs:6:13:6:27 | ...::Some(...) | -| gen_box_pat.rs:7:9:7:24 | box ...::None | gen_box_pat.rs:7:13:7:24 | ...::None | diff --git a/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat_getPat.ql b/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat_getPat.ql deleted file mode 100644 index d1a4ad6fca81..000000000000 --- a/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat_getPat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from BoxPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getPat() diff --git a/rust/ql/test/extractor-tests/generated/BoxPat/Cargo.lock b/rust/ql/test/extractor-tests/generated/BoxPat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/BoxPat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.expected b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.expected index 26a3ea2d9987..6901bc607f49 100644 --- a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.expected +++ b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.expected @@ -1,3 +1,11 @@ -| gen_break_expr.rs:7:13:7:17 | break | getNumberOfAttrs: | 0 | hasExpr: | no | hasLifetime: | no | -| gen_break_expr.rs:12:13:12:27 | break 'label 42 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasLifetime: | yes | -| gen_break_expr.rs:17:13:17:27 | break 'label 42 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasLifetime: | yes | +instances +| gen_break_expr.rs:7:13:7:17 | break | +| gen_break_expr.rs:12:13:12:27 | break 'label 42 | +| gen_break_expr.rs:17:13:17:27 | break 'label 42 | +getAttr +getExpr +| gen_break_expr.rs:12:13:12:27 | break 'label 42 | gen_break_expr.rs:12:26:12:27 | 42 | +| gen_break_expr.rs:17:13:17:27 | break 'label 42 | gen_break_expr.rs:17:26:17:27 | 42 | +getLifetime +| gen_break_expr.rs:12:13:12:27 | break 'label 42 | gen_break_expr.rs:12:19:12:24 | 'label | +| gen_break_expr.rs:17:13:17:27 | break 'label 42 | gen_break_expr.rs:17:19:17:24 | 'label | diff --git a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.ql b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.ql index 1238e6e42319..c9d9fb9ee66a 100644 --- a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.ql +++ b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.ql @@ -2,11 +2,16 @@ import codeql.rust.elements import TestUtils -from BreakExpr x, int getNumberOfAttrs, string hasExpr, string hasLifetime -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasExpr() then hasExpr = "yes" else hasExpr = "no") and - if x.hasLifetime() then hasLifetime = "yes" else hasLifetime = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasExpr:", hasExpr, "hasLifetime:", hasLifetime +query predicate instances(BreakExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(BreakExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExpr(BreakExpr x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} + +query predicate getLifetime(BreakExpr x, Lifetime getLifetime) { + toBeTested(x) and not x.isUnknown() and getLifetime = x.getLifetime() +} diff --git a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getAttr.ql deleted file mode 100644 index dca05d9b8902..000000000000 --- a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from BreakExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.expected deleted file mode 100644 index 276f1d3333be..000000000000 --- a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_break_expr.rs:12:13:12:27 | break 'label 42 | gen_break_expr.rs:12:26:12:27 | 42 | -| gen_break_expr.rs:17:13:17:27 | break 'label 42 | gen_break_expr.rs:17:26:17:27 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.ql b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.ql deleted file mode 100644 index 0ae64a4d5331..000000000000 --- a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from BreakExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.expected b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.expected deleted file mode 100644 index 09f1132362f6..000000000000 --- a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_break_expr.rs:12:13:12:27 | break 'label 42 | gen_break_expr.rs:12:19:12:24 | 'label | -| gen_break_expr.rs:17:13:17:27 | break 'label 42 | gen_break_expr.rs:17:19:17:24 | 'label | diff --git a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.ql b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.ql deleted file mode 100644 index c272d79f9cfb..000000000000 --- a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from BreakExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getLifetime() diff --git a/rust/ql/test/extractor-tests/generated/BreakExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/BreakExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/BreakExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.expected b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.expected index ebe6eeda1049..3aaaed00da2d 100644 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.expected +++ b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.expected @@ -1,4 +1,21 @@ -| 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 | +instances +| gen_call_expr.rs:5:5:5:11 | foo(...) | +| gen_call_expr.rs:6:5:6:23 | foo::<...>(...) | +| gen_call_expr.rs:7:5:7:14 | ...(...) | +| gen_call_expr.rs:8:5:8:10 | foo(...) | +getArgList +| gen_call_expr.rs:5:5:5:11 | foo(...) | gen_call_expr.rs:5:8:5:11 | ArgList | +| gen_call_expr.rs:6:5:6:23 | foo::<...>(...) | gen_call_expr.rs:6:20:6:23 | ArgList | +| gen_call_expr.rs:7:5:7:14 | ...(...) | gen_call_expr.rs:7:11:7:14 | ArgList | +| gen_call_expr.rs:8:5:8:10 | foo(...) | gen_call_expr.rs:8:8:8:10 | ArgList | +getAttr +getArg +| 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 | +getFunction +| gen_call_expr.rs:5:5:5:11 | foo(...) | gen_call_expr.rs:5:5:5:7 | foo | +| gen_call_expr.rs:6:5:6:23 | foo::<...>(...) | gen_call_expr.rs:6:5:6:19 | foo::<...> | +| gen_call_expr.rs:7:5:7:14 | ...(...) | gen_call_expr.rs:7:5:7:10 | foo[0] | +| gen_call_expr.rs:8:5:8:10 | foo(...) | gen_call_expr.rs:8:5:8:7 | foo | diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.ql b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.ql index cd043e88d1dd..e16ab837325b 100644 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.ql +++ b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.ql @@ -2,12 +2,20 @@ import codeql.rust.elements import TestUtils -from CallExpr x, string hasArgList, int getNumberOfAttrs, string hasFunction -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasArgList() then hasArgList = "yes" else hasArgList = "no") and - getNumberOfAttrs = x.getNumberOfAttrs() and - if x.hasFunction() then hasFunction = "yes" else hasFunction = "no" -select x, "hasArgList:", hasArgList, "getNumberOfAttrs:", getNumberOfAttrs, "hasFunction:", - hasFunction +query predicate instances(CallExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getArgList(CallExpr x, ArgList getArgList) { + toBeTested(x) and not x.isUnknown() and getArgList = x.getArgList() +} + +query predicate getAttr(CallExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getArg(CallExpr x, int index, Expr getArg) { + toBeTested(x) and not x.isUnknown() and getArg = x.getArg(index) +} + +query predicate getFunction(CallExpr x, Expr getFunction) { + toBeTested(x) and not x.isUnknown() and getFunction = x.getFunction() +} diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArgList.expected b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArgList.expected deleted file mode 100644 index 13c426db99d1..000000000000 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArgList.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_call_expr.rs:5:5:5:11 | foo(...) | gen_call_expr.rs:5:8:5:11 | ArgList | -| gen_call_expr.rs:6:5:6:23 | foo::<...>(...) | gen_call_expr.rs:6:20:6:23 | ArgList | -| gen_call_expr.rs:7:5:7:14 | ...(...) | gen_call_expr.rs:7:11:7:14 | ArgList | -| gen_call_expr.rs:8:5:8:10 | foo(...) | gen_call_expr.rs:8:8:8:10 | ArgList | diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArgList.ql b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArgList.ql deleted file mode 100644 index 088f92ec06db..000000000000 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArgList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from CallExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getArgList() diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getAttr.ql deleted file mode 100644 index 53b8ec257a69..000000000000 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getFunction.expected b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getFunction.expected deleted file mode 100644 index ecaaf15cebbc..000000000000 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getFunction.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_call_expr.rs:5:5:5:11 | foo(...) | gen_call_expr.rs:5:5:5:7 | foo | -| gen_call_expr.rs:6:5:6:23 | foo::<...>(...) | gen_call_expr.rs:6:5:6:19 | foo::<...> | -| gen_call_expr.rs:7:5:7:14 | ...(...) | gen_call_expr.rs:7:5:7:10 | foo[0] | -| gen_call_expr.rs:8:5:8:10 | foo(...) | gen_call_expr.rs:8:5:8:7 | foo | diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getFunction.ql b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getFunction.ql deleted file mode 100644 index 61196bcd14df..000000000000 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getFunction.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from CallExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getFunction() diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/CallExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/CallExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/CastExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/CastExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.expected b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.expected index 76e6f567b061..05f618ced101 100644 --- a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.expected +++ b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.expected @@ -1 +1,7 @@ -| gen_cast_expr.rs:5:5:5:16 | value as u64 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasTypeRepr: | yes | +instances +| gen_cast_expr.rs:5:5:5:16 | value as u64 | +getAttr +getExpr +| gen_cast_expr.rs:5:5:5:16 | value as u64 | gen_cast_expr.rs:5:5:5:9 | value | +getTypeRepr +| gen_cast_expr.rs:5:5:5:16 | value as u64 | gen_cast_expr.rs:5:14:5:16 | u64 | diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.ql b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.ql index 0c60d9f8c4e2..46c06b4c21cd 100644 --- a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.ql +++ b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.ql @@ -2,11 +2,16 @@ import codeql.rust.elements import TestUtils -from CastExpr x, int getNumberOfAttrs, string hasExpr, string hasTypeRepr -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasExpr() then hasExpr = "yes" else hasExpr = "no") and - if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasExpr:", hasExpr, "hasTypeRepr:", hasTypeRepr +query predicate instances(CastExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(CastExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExpr(CastExpr x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} + +query predicate getTypeRepr(CastExpr x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getAttr.ql deleted file mode 100644 index afb47c82fdbd..000000000000 --- a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from CastExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.expected deleted file mode 100644 index 01a710bfb533..000000000000 --- a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_cast_expr.rs:5:5:5:16 | value as u64 | gen_cast_expr.rs:5:5:5:9 | value | diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.ql b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.ql deleted file mode 100644 index 3d8c47f13546..000000000000 --- a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from CastExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getTypeRepr.expected deleted file mode 100644 index 87c07babb021..000000000000 --- a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_cast_expr.rs:5:5:5:16 | value as u64 | gen_cast_expr.rs:5:14:5:16 | u64 | diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getTypeRepr.ql deleted file mode 100644 index 34ee4c5ef9df..000000000000 --- a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from CastExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/ClosureBinder/Cargo.lock b/rust/ql/test/extractor-tests/generated/ClosureBinder/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ClosureBinder/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ClosureBinder/ClosureBinder.expected b/rust/ql/test/extractor-tests/generated/ClosureBinder/ClosureBinder.expected index e69de29bb2d1..dfd2bd58d077 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureBinder/ClosureBinder.expected +++ b/rust/ql/test/extractor-tests/generated/ClosureBinder/ClosureBinder.expected @@ -0,0 +1,4 @@ +instances +| gen_closure_binder.rs:7:21:7:43 | ClosureBinder | +getGenericParamList +| gen_closure_binder.rs:7:21:7:43 | ClosureBinder | gen_closure_binder.rs:7:24:7:43 | <...> | diff --git a/rust/ql/test/extractor-tests/generated/ClosureBinder/ClosureBinder.ql b/rust/ql/test/extractor-tests/generated/ClosureBinder/ClosureBinder.ql index b099f4aa548d..d204c5fbde18 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureBinder/ClosureBinder.ql +++ b/rust/ql/test/extractor-tests/generated/ClosureBinder/ClosureBinder.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from ClosureBinder x, string hasGenericParamList -where - toBeTested(x) and - not x.isUnknown() and - if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no" -select x, "hasGenericParamList:", hasGenericParamList +query predicate instances(ClosureBinder x) { toBeTested(x) and not x.isUnknown() } + +query predicate getGenericParamList(ClosureBinder x, GenericParamList getGenericParamList) { + toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() +} diff --git a/rust/ql/test/extractor-tests/generated/ClosureBinder/ClosureBinder_getGenericParamList.expected b/rust/ql/test/extractor-tests/generated/ClosureBinder/ClosureBinder_getGenericParamList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ClosureBinder/ClosureBinder_getGenericParamList.ql b/rust/ql/test/extractor-tests/generated/ClosureBinder/ClosureBinder_getGenericParamList.ql deleted file mode 100644 index 553bcf8970e3..000000000000 --- a/rust/ql/test/extractor-tests/generated/ClosureBinder/ClosureBinder_getGenericParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ClosureBinder x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericParamList() diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/ClosureExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected index 3ea9f463a00d..041669861b93 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected @@ -1,5 +1,31 @@ -| 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 | +instances +| gen_closure_expr.rs:5:5:5:13 | \|...\| ... | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | +| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | isAsync: | no | isConst: | no | isGen: | no | isMove: | yes | isStatic: | no | +| gen_closure_expr.rs:7:5:7:27 | \|...\| ... | isAsync: | yes | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | +| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | +| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | yes | +getParamList +| gen_closure_expr.rs:5:5:5:13 | \|...\| ... | gen_closure_expr.rs:5:5:5:7 | ParamList | +| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | gen_closure_expr.rs:6:10:6:17 | ParamList | +| gen_closure_expr.rs:7:5:7:27 | \|...\| ... | gen_closure_expr.rs:7:11:7:21 | ParamList | +| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | gen_closure_expr.rs:9:5:9:7 | ParamList | +| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | gen_closure_expr.rs:11:13:11:15 | ParamList | +getAttr +| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | 0 | gen_closure_expr.rs:8:6:8:17 | Attr | +| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | 0 | gen_closure_expr.rs:10:6:10:17 | Attr | +getParam +| 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 | ... | +getBody +| gen_closure_expr.rs:5:5:5:13 | \|...\| ... | gen_closure_expr.rs:5:9:5:13 | ... + ... | +| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | gen_closure_expr.rs:6:26:6:34 | { ... } | +| gen_closure_expr.rs:7:5:7:27 | \|...\| ... | gen_closure_expr.rs:7:23:7:27 | ... + ... | +| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | gen_closure_expr.rs:9:9:9:15 | YieldExpr | +| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | gen_closure_expr.rs:11:17:11:23 | YieldExpr | +getClosureBinder +getRetType +| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | gen_closure_expr.rs:6:19:6:24 | RetTypeRepr | diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql index b4b3dddc6798..acf3b1306776 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql @@ -2,22 +2,45 @@ 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 -where +query predicate instances( + ClosureExpr x, string isAsync__label, string isAsync, string isConst__label, string isConst, + string isGen__label, string isGen, string isMove__label, string isMove, string isStatic__label, + string isStatic +) { toBeTested(x) and not x.isUnknown() and - (if x.hasParamList() then hasParamList = "yes" else hasParamList = "no") and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasBody() then hasBody = "yes" else hasBody = "no") and - (if x.hasClosureBinder() then hasClosureBinder = "yes" else hasClosureBinder = "no") and + isAsync__label = "isAsync:" and (if x.isAsync() then isAsync = "yes" else isAsync = "no") and + isConst__label = "isConst:" and (if x.isConst() then isConst = "yes" else isConst = "no") and + isGen__label = "isGen:" and (if x.isGen() then isGen = "yes" else isGen = "no") and + isMove__label = "isMove:" and (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 + isStatic__label = "isStatic:" and + if x.isStatic() then isStatic = "yes" else isStatic = "no" +} + +query predicate getParamList(ClosureExpr x, ParamList getParamList) { + toBeTested(x) and not x.isUnknown() and getParamList = x.getParamList() +} + +query predicate getAttr(ClosureExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getParam(ClosureExpr x, int index, Param getParam) { + toBeTested(x) and not x.isUnknown() and getParam = x.getParam(index) +} + +query predicate getBody(ClosureExpr x, Expr getBody) { + toBeTested(x) and not x.isUnknown() and getBody = x.getBody() +} + +query predicate getClosureBinder(ClosureExpr x, ClosureBinder getClosureBinder) { + toBeTested(x) and not x.isUnknown() and getClosureBinder = x.getClosureBinder() +} + +query predicate getRetType(ClosureExpr x, RetTypeRepr getRetType) { + toBeTested(x) and not x.isUnknown() and getRetType = x.getRetType() +} diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.expected deleted file mode 100644 index 4de6e17d785a..000000000000 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | 0 | gen_closure_expr.rs:8:6:8:17 | Attr | -| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | 0 | gen_closure_expr.rs:10:6:10:17 | Attr | diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.ql deleted file mode 100644 index b32da8e541bc..000000000000 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.expected deleted file mode 100644 index d7b6180e63b2..000000000000 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.expected +++ /dev/null @@ -1,5 +0,0 @@ -| gen_closure_expr.rs:5:5:5:13 | \|...\| ... | gen_closure_expr.rs:5:9:5:13 | ... + ... | -| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | gen_closure_expr.rs:6:26:6:34 | { ... } | -| gen_closure_expr.rs:7:5:7:27 | \|...\| ... | gen_closure_expr.rs:7:23:7:27 | ... + ... | -| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | gen_closure_expr.rs:9:9:9:15 | YieldExpr | -| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | gen_closure_expr.rs:11:17:11:23 | YieldExpr | diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.ql b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.ql deleted file mode 100644 index cee8662cc44e..000000000000 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ClosureExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getBody() diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getClosureBinder.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getClosureBinder.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getClosureBinder.ql b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getClosureBinder.ql deleted file mode 100644 index fc838f8e2542..000000000000 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getClosureBinder.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ClosureExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getClosureBinder() diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.expected deleted file mode 100644 index 5945738433bd..000000000000 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.expected +++ /dev/null @@ -1,5 +0,0 @@ -| gen_closure_expr.rs:5:5:5:13 | \|...\| ... | gen_closure_expr.rs:5:5:5:7 | ParamList | -| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | gen_closure_expr.rs:6:10:6:17 | ParamList | -| gen_closure_expr.rs:7:5:7:27 | \|...\| ... | gen_closure_expr.rs:7:11:7:21 | ParamList | -| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | gen_closure_expr.rs:9:5:9:7 | ParamList | -| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | gen_closure_expr.rs:11:13:11:15 | ParamList | diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.ql b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.ql deleted file mode 100644 index d055aa69de30..000000000000 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ClosureExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getParamList() diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.expected deleted file mode 100644 index d5b2095eaccf..000000000000 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | gen_closure_expr.rs:6:19:6:24 | RetTypeRepr | diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.ql b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.ql deleted file mode 100644 index acafcc710620..000000000000 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ClosureExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getRetType() diff --git a/rust/ql/test/extractor-tests/generated/Comment/Cargo.lock b/rust/ql/test/extractor-tests/generated/Comment/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Comment/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Comment/Comment.ql b/rust/ql/test/extractor-tests/generated/Comment/Comment.ql index 7e940186748a..43aad9a404bd 100644 --- a/rust/ql/test/extractor-tests/generated/Comment/Comment.ql +++ b/rust/ql/test/extractor-tests/generated/Comment/Comment.ql @@ -2,10 +2,13 @@ import codeql.rust.elements import TestUtils -from Comment x, AstNode getParent, string getText -where +query predicate instances( + Comment x, string getParent__label, AstNode getParent, string getText__label, string getText +) { toBeTested(x) and not x.isUnknown() and + getParent__label = "getParent:" and getParent = x.getParent() and + getText__label = "getText:" and getText = x.getText() -select x, "getParent:", getParent, "getText:", getText +} diff --git a/rust/ql/test/extractor-tests/generated/Const/Cargo.lock b/rust/ql/test/extractor-tests/generated/Const/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Const/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Const/Const.expected b/rust/ql/test/extractor-tests/generated/Const/Const.expected index 4f4863338730..64b20c95e261 100644 --- a/rust/ql/test/extractor-tests/generated/Const/Const.expected +++ b/rust/ql/test/extractor-tests/generated/Const/Const.expected @@ -1 +1,15 @@ -| 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 | +instances +| gen_const.rs:4:5:7:22 | Const | isConst: | yes | isDefault: | no | hasImplementation: | yes | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getAttr +getBody +| gen_const.rs:4:5:7:22 | Const | gen_const.rs:7:20:7:21 | 42 | +getGenericParamList +getName +| gen_const.rs:4:5:7:22 | Const | gen_const.rs:7:11:7:11 | X | +getTypeRepr +| gen_const.rs:4:5:7:22 | Const | gen_const.rs:7:14:7:16 | i32 | +getVisibility +getWhereClause diff --git a/rust/ql/test/extractor-tests/generated/Const/Const.ql b/rust/ql/test/extractor-tests/generated/Const/Const.ql index dee1c6dada40..ef88f980fc0a 100644 --- a/rust/ql/test/extractor-tests/generated/Const/Const.ql +++ b/rust/ql/test/extractor-tests/generated/Const/Const.ql @@ -2,32 +2,58 @@ import codeql.rust.elements import TestUtils -from - Const x, string hasExtendedCanonicalPath, string hasCrateOrigin, - string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasBody, string isConst, - string isDefault, string hasName, string hasTypeRepr, string hasVisibility -where +query predicate instances( + Const x, string isConst__label, string isConst, string isDefault__label, string isDefault, + string hasImplementation__label, string hasImplementation +) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasBody() then hasBody = "yes" else hasBody = "no") and + isConst__label = "isConst:" and (if x.isConst() then isConst = "yes" else isConst = "no") and + isDefault__label = "isDefault:" and (if x.isDefault() then isDefault = "yes" else isDefault = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - (if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and - if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs, - "hasBody:", hasBody, "isConst:", isConst, "isDefault:", isDefault, "hasName:", hasName, - "hasTypeRepr:", hasTypeRepr, "hasVisibility:", hasVisibility + hasImplementation__label = "hasImplementation:" and + if x.hasImplementation() then hasImplementation = "yes" else hasImplementation = "no" +} + +query predicate getExtendedCanonicalPath(Const x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(Const x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(Const x, MacroItems getAttributeMacroExpansion) { + toBeTested(x) and + not x.isUnknown() and + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getAttr(Const x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getBody(Const x, Expr getBody) { + toBeTested(x) and not x.isUnknown() and getBody = x.getBody() +} + +query predicate getGenericParamList(Const x, GenericParamList getGenericParamList) { + toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() +} + +query predicate getName(Const x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getTypeRepr(Const x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} + +query predicate getVisibility(Const x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} + +query predicate getWhereClause(Const x, WhereClause getWhereClause) { + toBeTested(x) and not x.isUnknown() and getWhereClause = x.getWhereClause() +} diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getAttr.expected b/rust/ql/test/extractor-tests/generated/Const/Const_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getAttr.ql b/rust/ql/test/extractor-tests/generated/Const/Const_getAttr.ql deleted file mode 100644 index 0b4adeec093f..000000000000 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Const x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/Const/Const_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/Const/Const_getAttributeMacroExpansion.ql deleted file mode 100644 index 4056751f9726..000000000000 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Const x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getBody.expected b/rust/ql/test/extractor-tests/generated/Const/Const_getBody.expected deleted file mode 100644 index e6653a26b918..000000000000 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getBody.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getBody.ql b/rust/ql/test/extractor-tests/generated/Const/Const_getBody.ql deleted file mode 100644 index 368aa82afb41..000000000000 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getBody.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Const x -where toBeTested(x) and not x.isUnknown() -select x, x.getBody() diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Const/Const_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/Const/Const_getCrateOrigin.ql deleted file mode 100644 index 644b92409802..000000000000 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Const x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Const/Const_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/Const/Const_getExtendedCanonicalPath.ql deleted file mode 100644 index c11c4e0856d7..000000000000 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Const x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getName.expected b/rust/ql/test/extractor-tests/generated/Const/Const_getName.expected deleted file mode 100644 index e0c9ac085543..000000000000 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getName.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getName.ql b/rust/ql/test/extractor-tests/generated/Const/Const_getName.ql deleted file mode 100644 index 23698a012eb3..000000000000 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Const x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/Const/Const_getTypeRepr.expected deleted file mode 100644 index dde3546336aa..000000000000 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/Const_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/Const/Const_getTypeRepr.ql deleted file mode 100644 index 4185581df19d..000000000000 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Const x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getVisibility.expected b/rust/ql/test/extractor-tests/generated/Const/Const_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getVisibility.ql b/rust/ql/test/extractor-tests/generated/Const/Const_getVisibility.ql deleted file mode 100644 index c0599d921a0d..000000000000 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Const x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/ConstArg/Cargo.lock b/rust/ql/test/extractor-tests/generated/ConstArg/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ConstArg/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg.expected b/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg.expected index 56a3b5946fa9..111690872fe3 100644 --- a/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg.expected +++ b/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg.expected @@ -1 +1,4 @@ -| gen_const_arg.rs:7:11:7:11 | ConstArg | hasExpr: | yes | +instances +| gen_const_arg.rs:7:11:7:11 | ConstArg | +getExpr +| 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/ConstArg.ql b/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg.ql index 4080bf099c44..c89b791090a1 100644 --- a/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg.ql +++ b/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from ConstArg x, string hasExpr -where - toBeTested(x) and - not x.isUnknown() and - if x.hasExpr() then hasExpr = "yes" else hasExpr = "no" -select x, "hasExpr:", hasExpr +query predicate instances(ConstArg x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExpr(ConstArg x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg_getExpr.expected b/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg_getExpr.expected deleted file mode 100644 index c26632a25e76..000000000000 --- a/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg_getExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/ConstArg_getExpr.ql b/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg_getExpr.ql deleted file mode 100644 index 702328c2aacd..000000000000 --- a/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ConstArg x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/ConstBlockPat/Cargo.lock b/rust/ql/test/extractor-tests/generated/ConstBlockPat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ConstBlockPat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.expected b/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.expected index 21feba1f729f..742ac11f9859 100644 --- a/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.expected +++ b/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.expected @@ -1 +1,4 @@ -| gen_const_block_pat.rs:6:9:6:27 | ConstBlockPat | hasBlockExpr: | yes | isConst: | yes | +instances +| gen_const_block_pat.rs:6:9:6:27 | ConstBlockPat | isConst: | yes | +getBlockExpr +| gen_const_block_pat.rs:6:9:6:27 | ConstBlockPat | gen_const_block_pat.rs:6:15:6:27 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.ql b/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.ql index 005f8a752c1f..324b275e0071 100644 --- a/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.ql +++ b/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.ql @@ -2,10 +2,13 @@ import codeql.rust.elements import TestUtils -from ConstBlockPat x, string hasBlockExpr, string isConst -where +query predicate instances(ConstBlockPat x, string isConst__label, string isConst) { toBeTested(x) and not x.isUnknown() and - (if x.hasBlockExpr() then hasBlockExpr = "yes" else hasBlockExpr = "no") and + isConst__label = "isConst:" and if x.isConst() then isConst = "yes" else isConst = "no" -select x, "hasBlockExpr:", hasBlockExpr, "isConst:", isConst +} + +query predicate getBlockExpr(ConstBlockPat x, BlockExpr getBlockExpr) { + toBeTested(x) and not x.isUnknown() and getBlockExpr = x.getBlockExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat_getBlockExpr.expected b/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat_getBlockExpr.expected deleted file mode 100644 index 42cdb5ef4c30..000000000000 --- a/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat_getBlockExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_const_block_pat.rs:6:9:6:27 | ConstBlockPat | gen_const_block_pat.rs:6:15:6:27 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat_getBlockExpr.ql b/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat_getBlockExpr.ql deleted file mode 100644 index e2c0f6440078..000000000000 --- a/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat_getBlockExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ConstBlockPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getBlockExpr() diff --git a/rust/ql/test/extractor-tests/generated/ConstParam/Cargo.lock b/rust/ql/test/extractor-tests/generated/ConstParam/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ConstParam/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.expected b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.expected index 9632fea6dd54..f6067623d272 100644 --- a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.expected +++ b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.expected @@ -1 +1,8 @@ -| gen_const_param.rs:7:17:7:30 | ConstParam | getNumberOfAttrs: | 0 | hasDefaultVal: | no | isConst: | yes | hasName: | yes | hasTypeRepr: | yes | +instances +| gen_const_param.rs:7:17:7:30 | ConstParam | isConst: | yes | +getAttr +getDefaultVal +getName +| gen_const_param.rs:7:17:7:30 | ConstParam | gen_const_param.rs:7:23:7:23 | N | +getTypeRepr +| 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/ConstParam.ql b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.ql index 4f7fbab909ee..cfbf6f3cc45a 100644 --- a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.ql +++ b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.ql @@ -2,16 +2,25 @@ import codeql.rust.elements import TestUtils -from - ConstParam x, int getNumberOfAttrs, string hasDefaultVal, string isConst, string hasName, - string hasTypeRepr -where +query predicate instances(ConstParam x, string isConst__label, string isConst) { toBeTested(x) and not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasDefaultVal() then hasDefaultVal = "yes" else hasDefaultVal = "no") and - (if x.isConst() then isConst = "yes" else isConst = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasDefaultVal:", hasDefaultVal, "isConst:", - isConst, "hasName:", hasName, "hasTypeRepr:", hasTypeRepr + isConst__label = "isConst:" and + if x.isConst() then isConst = "yes" else isConst = "no" +} + +query predicate getAttr(ConstParam x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getDefaultVal(ConstParam x, ConstArg getDefaultVal) { + toBeTested(x) and not x.isUnknown() and getDefaultVal = x.getDefaultVal() +} + +query predicate getName(ConstParam x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getTypeRepr(ConstParam x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getAttr.expected b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getAttr.ql b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getAttr.ql deleted file mode 100644 index ed8406eecefc..000000000000 --- a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ConstParam x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getDefaultVal.expected b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getDefaultVal.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getDefaultVal.ql b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getDefaultVal.ql deleted file mode 100644 index f4af24f39b73..000000000000 --- a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getDefaultVal.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ConstParam x -where toBeTested(x) and not x.isUnknown() -select x, x.getDefaultVal() diff --git a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getName.expected b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getName.expected deleted file mode 100644 index 65eb953a20b1..000000000000 --- a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getName.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getName.ql b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getName.ql deleted file mode 100644 index 7c627d43650b..000000000000 --- a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ConstParam x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getTypeRepr.expected deleted file mode 100644 index 5a96f2d3ad6d..000000000000 --- a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/ConstParam_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getTypeRepr.ql deleted file mode 100644 index d789f9eb1445..000000000000 --- a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ConstParam x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/ContinueExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/ContinueExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ContinueExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.expected b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.expected index a09556b9a3ff..e9547d569a3d 100644 --- a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.expected @@ -1,2 +1,6 @@ -| gen_continue_expr.rs:7:13:7:20 | continue | getNumberOfAttrs: | 0 | hasLifetime: | no | -| gen_continue_expr.rs:12:13:12:27 | continue 'label | getNumberOfAttrs: | 0 | hasLifetime: | yes | +instances +| gen_continue_expr.rs:7:13:7:20 | continue | +| gen_continue_expr.rs:12:13:12:27 | continue 'label | +getAttr +getLifetime +| gen_continue_expr.rs:12:13:12:27 | continue 'label | gen_continue_expr.rs:12:22:12:27 | 'label | diff --git a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql index 9d2e2d5177d2..590b8d1faa50 100644 --- a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from ContinueExpr x, int getNumberOfAttrs, string hasLifetime -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - if x.hasLifetime() then hasLifetime = "yes" else hasLifetime = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasLifetime:", hasLifetime +query predicate instances(ContinueExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(ContinueExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getLifetime(ContinueExpr x, Lifetime getLifetime) { + toBeTested(x) and not x.isUnknown() and getLifetime = x.getLifetime() +} diff --git a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getAttr.ql deleted file mode 100644 index d6166fe4a29a..000000000000 --- a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ContinueExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getLifetime.expected b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getLifetime.expected deleted file mode 100644 index 3260e45d1b74..000000000000 --- a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getLifetime.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_continue_expr.rs:12:13:12:27 | continue 'label | gen_continue_expr.rs:12:22:12:27 | 'label | diff --git a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getLifetime.ql b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getLifetime.ql deleted file mode 100644 index 89bc6f68dd38..000000000000 --- a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getLifetime.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ContinueExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getLifetime() diff --git a/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.expected b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.expected index af1df824814b..14ff9874ffb3 100644 --- a/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.expected @@ -1 +1,4 @@ -| gen_dyn_trait_type_repr.rs:7:13:7:21 | DynTraitTypeRepr | hasTypeBoundList: | yes | +instances +| gen_dyn_trait_type_repr.rs:7:13:7:21 | DynTraitTypeRepr | +getTypeBoundList +| 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/DynTraitTypeRepr.ql b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.ql index c67812dec36f..e67423fadfd9 100644 --- a/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from DynTraitTypeRepr x, string hasTypeBoundList -where - toBeTested(x) and - not x.isUnknown() and - if x.hasTypeBoundList() then hasTypeBoundList = "yes" else hasTypeBoundList = "no" -select x, "hasTypeBoundList:", hasTypeBoundList +query predicate instances(DynTraitTypeRepr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getTypeBoundList(DynTraitTypeRepr x, TypeBoundList getTypeBoundList) { + toBeTested(x) and not x.isUnknown() and getTypeBoundList = x.getTypeBoundList() +} diff --git a/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr_getTypeBoundList.expected deleted file mode 100644 index 63b58d830c1e..000000000000 --- a/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr_getTypeBoundList.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/DynTraitTypeRepr_getTypeBoundList.ql b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr_getTypeBoundList.ql deleted file mode 100644 index f9c215991a33..000000000000 --- a/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr_getTypeBoundList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from DynTraitTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeBoundList() diff --git a/rust/ql/test/extractor-tests/generated/Enum/Cargo.lock b/rust/ql/test/extractor-tests/generated/Enum/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Enum/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum.expected index 02547a2400ee..45154c93e487 100644 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum.expected +++ b/rust/ql/test/extractor-tests/generated/Enum/Enum.expected @@ -1 +1,14 @@ -| 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 | +instances +| gen_enum.rs:4:5:7:34 | enum E | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getDeriveMacroExpansion +getAttr +getGenericParamList +getName +| gen_enum.rs:4:5:7:34 | enum E | gen_enum.rs:7:10:7:10 | E | +getVariantList +| gen_enum.rs:4:5:7:34 | enum E | gen_enum.rs:7:12:7:34 | VariantList | +getVisibility +getWhereClause diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum.ql b/rust/ql/test/extractor-tests/generated/Enum/Enum.ql index e6639d783d27..e5c4c12693e9 100644 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum.ql +++ b/rust/ql/test/extractor-tests/generated/Enum/Enum.ql @@ -2,31 +2,46 @@ import codeql.rust.elements import TestUtils -from - Enum x, string hasExtendedCanonicalPath, string hasCrateOrigin, string hasAttributeMacroExpansion, - int getNumberOfAttrs, string hasGenericParamList, string hasName, string hasVariantList, - string hasVisibility, string hasWhereClause -where +query predicate instances(Enum x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExtendedCanonicalPath(Enum x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(Enum x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(Enum x, MacroItems getAttributeMacroExpansion) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - (if x.hasVariantList() then hasVariantList = "yes" else hasVariantList = "no") and - (if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no") and - if x.hasWhereClause() then hasWhereClause = "yes" else hasWhereClause = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs, - "hasGenericParamList:", hasGenericParamList, "hasName:", hasName, "hasVariantList:", - hasVariantList, "hasVisibility:", hasVisibility, "hasWhereClause:", hasWhereClause + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getDeriveMacroExpansion(Enum x, int index, MacroItems getDeriveMacroExpansion) { + toBeTested(x) and not x.isUnknown() and getDeriveMacroExpansion = x.getDeriveMacroExpansion(index) +} + +query predicate getAttr(Enum x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getGenericParamList(Enum x, GenericParamList getGenericParamList) { + toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() +} + +query predicate getName(Enum x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getVariantList(Enum x, VariantList getVariantList) { + toBeTested(x) and not x.isUnknown() and getVariantList = x.getVariantList() +} + +query predicate getVisibility(Enum x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} + +query predicate getWhereClause(Enum x, WhereClause getWhereClause) { + toBeTested(x) and not x.isUnknown() and getWhereClause = x.getWhereClause() +} diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getAttr.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getAttr.ql b/rust/ql/test/extractor-tests/generated/Enum/Enum_getAttr.ql deleted file mode 100644 index b2ffb4b5666d..000000000000 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Enum x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/Enum/Enum_getAttributeMacroExpansion.ql deleted file mode 100644 index 6f0623348c4c..000000000000 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Enum x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/Enum/Enum_getCrateOrigin.ql deleted file mode 100644 index 07fdc2fe5cde..000000000000 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Enum x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/Enum/Enum_getExtendedCanonicalPath.ql deleted file mode 100644 index fa456ecd9d03..000000000000 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Enum x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getGenericParamList.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum_getGenericParamList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getGenericParamList.ql b/rust/ql/test/extractor-tests/generated/Enum/Enum_getGenericParamList.ql deleted file mode 100644 index 79486fad3eb5..000000000000 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum_getGenericParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Enum x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericParamList() diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getName.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum_getName.expected deleted file mode 100644 index 0e5f3660d5ee..000000000000 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum_getName.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getName.ql b/rust/ql/test/extractor-tests/generated/Enum/Enum_getName.ql deleted file mode 100644 index 218e5ee494b1..000000000000 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Enum x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getVariantList.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum_getVariantList.expected deleted file mode 100644 index 4827f814fac6..000000000000 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum_getVariantList.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/Enum_getVariantList.ql b/rust/ql/test/extractor-tests/generated/Enum/Enum_getVariantList.ql deleted file mode 100644 index 35af7d9d396f..000000000000 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum_getVariantList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Enum x -where toBeTested(x) and not x.isUnknown() -select x, x.getVariantList() diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getVisibility.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getVisibility.ql b/rust/ql/test/extractor-tests/generated/Enum/Enum_getVisibility.ql deleted file mode 100644 index b437e30e2ca8..000000000000 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Enum x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getWhereClause.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum_getWhereClause.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getWhereClause.ql b/rust/ql/test/extractor-tests/generated/Enum/Enum_getWhereClause.ql deleted file mode 100644 index b9aaa3f34993..000000000000 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum_getWhereClause.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Enum x -where toBeTested(x) and not x.isUnknown() -select x, x.getWhereClause() diff --git a/rust/ql/test/extractor-tests/generated/ExprStmt/Cargo.lock b/rust/ql/test/extractor-tests/generated/ExprStmt/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ExprStmt/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt.expected b/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt.expected index 61f85c10f9e6..35db91b7cfb7 100644 --- a/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt.expected +++ b/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt.expected @@ -1,2 +1,6 @@ -| gen_expr_stmt.rs:5:5:5:12 | ExprStmt | hasExpr: | yes | -| gen_expr_stmt.rs:6:5:6:13 | ExprStmt | hasExpr: | yes | +instances +| gen_expr_stmt.rs:5:5:5:12 | ExprStmt | +| gen_expr_stmt.rs:6:5:6:13 | ExprStmt | +getExpr +| gen_expr_stmt.rs:5:5:5:12 | ExprStmt | gen_expr_stmt.rs:5:5:5:11 | start(...) | +| gen_expr_stmt.rs:6:5:6:13 | ExprStmt | gen_expr_stmt.rs:6:5:6:12 | finish(...) | diff --git a/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt.ql b/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt.ql index 977516d1eea1..34995cf50149 100644 --- a/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt.ql +++ b/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from ExprStmt x, string hasExpr -where - toBeTested(x) and - not x.isUnknown() and - if x.hasExpr() then hasExpr = "yes" else hasExpr = "no" -select x, "hasExpr:", hasExpr +query predicate instances(ExprStmt x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExpr(ExprStmt x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt_getExpr.expected b/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt_getExpr.expected deleted file mode 100644 index 1cacf1e84241..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt_getExpr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_expr_stmt.rs:5:5:5:12 | ExprStmt | gen_expr_stmt.rs:5:5:5:11 | start(...) | -| gen_expr_stmt.rs:6:5:6:13 | ExprStmt | gen_expr_stmt.rs:6:5:6:12 | finish(...) | diff --git a/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt_getExpr.ql b/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt_getExpr.ql deleted file mode 100644 index df142202a02d..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExprStmt x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/Cargo.lock b/rust/ql/test/extractor-tests/generated/ExternBlock/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ExternBlock/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.expected b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.expected index 9c06abfad701..8e061f24a562 100644 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.expected +++ b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.expected @@ -1 +1,10 @@ -| gen_extern_block.rs:7:5:9:5 | ExternBlock | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | hasAbi: | yes | getNumberOfAttrs: | 0 | hasExternItemList: | yes | isUnsafe: | no | +instances +| gen_extern_block.rs:7:5:9:5 | ExternBlock | isUnsafe: | no | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getAbi +| gen_extern_block.rs:7:5:9:5 | ExternBlock | gen_extern_block.rs:7:5:7:14 | Abi | +getAttr +getExternItemList +| 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/ExternBlock.ql b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.ql index e7ef0f90fe93..2f07e5dfcae3 100644 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.ql +++ b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.ql @@ -2,28 +2,35 @@ import codeql.rust.elements import TestUtils -from - ExternBlock x, string hasExtendedCanonicalPath, string hasCrateOrigin, - string hasAttributeMacroExpansion, string hasAbi, int getNumberOfAttrs, string hasExternItemList, - string isUnsafe -where +query predicate instances(ExternBlock x, string isUnsafe__label, string isUnsafe) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - (if x.hasAbi() then hasAbi = "yes" else hasAbi = "no") and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasExternItemList() then hasExternItemList = "yes" else hasExternItemList = "no") and + isUnsafe__label = "isUnsafe:" and if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "hasAbi:", hasAbi, "getNumberOfAttrs:", - getNumberOfAttrs, "hasExternItemList:", hasExternItemList, "isUnsafe:", isUnsafe +} + +query predicate getExtendedCanonicalPath(ExternBlock x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(ExternBlock x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(ExternBlock x, MacroItems getAttributeMacroExpansion) { + toBeTested(x) and + not x.isUnknown() and + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getAbi(ExternBlock x, Abi getAbi) { + toBeTested(x) and not x.isUnknown() and getAbi = x.getAbi() +} + +query predicate getAttr(ExternBlock x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExternItemList(ExternBlock x, ExternItemList getExternItemList) { + toBeTested(x) and not x.isUnknown() and getExternItemList = x.getExternItemList() +} diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAbi.expected b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAbi.expected deleted file mode 100644 index ea8e7797362c..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAbi.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getAbi.ql b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAbi.ql deleted file mode 100644 index d713045ef755..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAbi.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternBlock x -where toBeTested(x) and not x.isUnknown() -select x, x.getAbi() diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAttr.expected b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAttr.ql b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAttr.ql deleted file mode 100644 index 2ac7fc2aa724..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternBlock x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAttributeMacroExpansion.ql deleted file mode 100644 index f3b6ad363fa9..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternBlock x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getCrateOrigin.ql deleted file mode 100644 index 5be455fe7d24..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternBlock x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExtendedCanonicalPath.ql deleted file mode 100644 index f0bd607a179a..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternBlock x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExternItemList.expected b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExternItemList.expected deleted file mode 100644 index 83bb34c61abc..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExternItemList.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/ExternBlock_getExternItemList.ql b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExternItemList.ql deleted file mode 100644 index 6d04cb67441a..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExternItemList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternBlock x -where toBeTested(x) and not x.isUnknown() -select x, x.getExternItemList() diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/Cargo.lock b/rust/ql/test/extractor-tests/generated/ExternCrate/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ExternCrate/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.expected b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.expected index f47afb2acb52..6e1b1a84e1ae 100644 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.expected +++ b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.expected @@ -1 +1,10 @@ -| gen_extern_crate.rs:4:5:7:23 | ExternCrate | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasIdentifier: | yes | hasRename: | no | hasVisibility: | no | +instances +| gen_extern_crate.rs:4:5:7:23 | ExternCrate | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getAttr +getIdentifier +| gen_extern_crate.rs:4:5:7:23 | ExternCrate | gen_extern_crate.rs:7:18:7:22 | serde | +getRename +getVisibility diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.ql b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.ql index cbcfd462473c..b0c2c372896e 100644 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.ql +++ b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.ql @@ -2,28 +2,34 @@ import codeql.rust.elements import TestUtils -from - ExternCrate x, string hasExtendedCanonicalPath, string hasCrateOrigin, - string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasIdentifier, string hasRename, - string hasVisibility -where +query predicate instances(ExternCrate x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExtendedCanonicalPath(ExternCrate x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(ExternCrate x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(ExternCrate x, MacroItems getAttributeMacroExpansion) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasIdentifier() then hasIdentifier = "yes" else hasIdentifier = "no") and - (if x.hasRename() then hasRename = "yes" else hasRename = "no") and - if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs, - "hasIdentifier:", hasIdentifier, "hasRename:", hasRename, "hasVisibility:", hasVisibility + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getAttr(ExternCrate x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getIdentifier(ExternCrate x, NameRef getIdentifier) { + toBeTested(x) and not x.isUnknown() and getIdentifier = x.getIdentifier() +} + +query predicate getRename(ExternCrate x, Rename getRename) { + toBeTested(x) and not x.isUnknown() and getRename = x.getRename() +} + +query predicate getVisibility(ExternCrate x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getAttr.expected b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getAttr.ql b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getAttr.ql deleted file mode 100644 index 68edd573a7a0..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternCrate x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getAttributeMacroExpansion.ql deleted file mode 100644 index 0c7c0e8c89dc..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternCrate x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getCrateOrigin.ql deleted file mode 100644 index b6b74730fe40..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternCrate x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getExtendedCanonicalPath.ql deleted file mode 100644 index 15959426eed0..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternCrate x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getIdentifier.expected b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getIdentifier.expected deleted file mode 100644 index 3e545d1761da..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getIdentifier.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/ExternCrate_getIdentifier.ql b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getIdentifier.ql deleted file mode 100644 index 1a8f5693f13c..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getIdentifier.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternCrate x -where toBeTested(x) and not x.isUnknown() -select x, x.getIdentifier() diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getRename.expected b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getRename.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getRename.ql b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getRename.ql deleted file mode 100644 index 82df3d60e05a..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getRename.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternCrate x -where toBeTested(x) and not x.isUnknown() -select x, x.getRename() diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getVisibility.expected b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getVisibility.ql b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getVisibility.ql deleted file mode 100644 index e7a9b316e1bc..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternCrate x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/ExternItemList/Cargo.lock b/rust/ql/test/extractor-tests/generated/ExternItemList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ExternItemList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.expected b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.expected index 9cc7190339f5..8b6eb94b1b2c 100644 --- a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.expected +++ b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.expected @@ -1 +1,6 @@ -| gen_extern_item_list.rs:7:16:10:5 | ExternItemList | getNumberOfAttrs: | 0 | getNumberOfExternItems: | 2 | +instances +| gen_extern_item_list.rs:7:16:10:5 | ExternItemList | +getAttr +getExternItem +| 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/ExternItemList.ql b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.ql index e9530f3c1aa8..b947daaff649 100644 --- a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.ql +++ b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from ExternItemList x, int getNumberOfAttrs, int getNumberOfExternItems -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - getNumberOfExternItems = x.getNumberOfExternItems() -select x, "getNumberOfAttrs:", getNumberOfAttrs, "getNumberOfExternItems:", getNumberOfExternItems +query predicate instances(ExternItemList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(ExternItemList x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExternItem(ExternItemList x, int index, ExternItem getExternItem) { + toBeTested(x) and not x.isUnknown() and getExternItem = x.getExternItem(index) +} diff --git a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getAttr.expected b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getAttr.ql b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getAttr.ql deleted file mode 100644 index 33a1c2f4c5ca..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternItemList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getExternItem.expected b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getExternItem.expected deleted file mode 100644 index a1f1b91aca6f..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getExternItem.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/ExternItemList_getExternItem.ql b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getExternItem.ql deleted file mode 100644 index d4be03a1d479..000000000000 --- a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getExternItem.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ExternItemList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getExternItem(index) diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/FieldExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/FieldExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.expected b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.expected index 9bb0e244fd19..dab9e4a05b44 100644 --- a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.expected +++ b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.expected @@ -1 +1,7 @@ -| gen_field_expr.rs:5:5:5:9 | x.foo | getNumberOfAttrs: | 0 | hasContainer: | yes | hasIdentifier: | yes | +instances +| gen_field_expr.rs:5:5:5:9 | x.foo | +getAttr +getContainer +| gen_field_expr.rs:5:5:5:9 | x.foo | gen_field_expr.rs:5:5:5:5 | x | +getIdentifier +| gen_field_expr.rs:5:5:5:9 | x.foo | gen_field_expr.rs:5:7:5:9 | foo | diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.ql b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.ql index 631e15698b66..49780f145b8f 100644 --- a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.ql +++ b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.ql @@ -2,12 +2,16 @@ import codeql.rust.elements import TestUtils -from FieldExpr x, int getNumberOfAttrs, string hasContainer, string hasIdentifier -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasContainer() then hasContainer = "yes" else hasContainer = "no") and - if x.hasIdentifier() then hasIdentifier = "yes" else hasIdentifier = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasContainer:", hasContainer, "hasIdentifier:", - hasIdentifier +query predicate instances(FieldExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(FieldExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getContainer(FieldExpr x, Expr getContainer) { + toBeTested(x) and not x.isUnknown() and getContainer = x.getContainer() +} + +query predicate getIdentifier(FieldExpr x, NameRef getIdentifier) { + toBeTested(x) and not x.isUnknown() and getIdentifier = x.getIdentifier() +} diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getAttr.ql deleted file mode 100644 index eeaad96fb6af..000000000000 --- a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from FieldExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getContainer.expected b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getContainer.expected deleted file mode 100644 index 7d21f7f7af81..000000000000 --- a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getContainer.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_field_expr.rs:5:5:5:9 | x.foo | gen_field_expr.rs:5:5:5:5 | x | diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getContainer.ql b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getContainer.ql deleted file mode 100644 index b32e302ad913..000000000000 --- a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getContainer.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from FieldExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getContainer() diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getIdentifier.expected b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getIdentifier.expected deleted file mode 100644 index 0722ca1aaf28..000000000000 --- a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getIdentifier.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_field_expr.rs:5:5:5:9 | x.foo | gen_field_expr.rs:5:7:5:9 | foo | diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getIdentifier.ql b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getIdentifier.ql deleted file mode 100644 index 766fc85ab0fc..000000000000 --- a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getIdentifier.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from FieldExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getIdentifier() diff --git a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.expected b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.expected index e70c54798b2c..1e61549b3f3c 100644 --- a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.expected @@ -1 +1,7 @@ -| gen_fn_ptr_type_repr.rs:7:12:7:25 | FnPtrTypeRepr | hasAbi: | no | isAsync: | no | isConst: | no | isUnsafe: | no | hasParamList: | yes | hasRetType: | yes | +instances +| gen_fn_ptr_type_repr.rs:7:12:7:25 | FnPtrTypeRepr | isAsync: | no | isConst: | no | isUnsafe: | no | +getAbi +getParamList +| gen_fn_ptr_type_repr.rs:7:12:7:25 | FnPtrTypeRepr | gen_fn_ptr_type_repr.rs:7:14:7:18 | ParamList | +getRetType +| 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/FnPtrTypeRepr.ql b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.ql index a3f3b81fcde8..47cbb8ee28c1 100644 --- a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.ql @@ -2,17 +2,28 @@ import codeql.rust.elements import TestUtils -from - FnPtrTypeRepr x, string hasAbi, string isAsync, string isConst, string isUnsafe, - string hasParamList, string hasRetType -where +query predicate instances( + FnPtrTypeRepr x, string isAsync__label, string isAsync, string isConst__label, string isConst, + string isUnsafe__label, string isUnsafe +) { toBeTested(x) and not x.isUnknown() and - (if x.hasAbi() then hasAbi = "yes" else hasAbi = "no") and + isAsync__label = "isAsync:" and (if x.isAsync() then isAsync = "yes" else isAsync = "no") and + isConst__label = "isConst:" and (if x.isConst() then isConst = "yes" else isConst = "no") and - (if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no") and - (if x.hasParamList() then hasParamList = "yes" else hasParamList = "no") and - if x.hasRetType() then hasRetType = "yes" else hasRetType = "no" -select x, "hasAbi:", hasAbi, "isAsync:", isAsync, "isConst:", isConst, "isUnsafe:", isUnsafe, - "hasParamList:", hasParamList, "hasRetType:", hasRetType + isUnsafe__label = "isUnsafe:" and + if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no" +} + +query predicate getAbi(FnPtrTypeRepr x, Abi getAbi) { + toBeTested(x) and not x.isUnknown() and getAbi = x.getAbi() +} + +query predicate getParamList(FnPtrTypeRepr x, ParamList getParamList) { + toBeTested(x) and not x.isUnknown() and getParamList = x.getParamList() +} + +query predicate getRetType(FnPtrTypeRepr x, RetTypeRepr getRetType) { + toBeTested(x) and not x.isUnknown() and getRetType = x.getRetType() +} diff --git a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getAbi.expected b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getAbi.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getAbi.ql b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getAbi.ql deleted file mode 100644 index 738031ddf22e..000000000000 --- a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getAbi.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from FnPtrTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getAbi() diff --git a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getParamList.expected b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getParamList.expected deleted file mode 100644 index 26e6ae2ef9f6..000000000000 --- a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getParamList.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getParamList.ql b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getParamList.ql deleted file mode 100644 index bc5b5d935ca8..000000000000 --- a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from FnPtrTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getParamList() diff --git a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getRetType.expected b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getRetType.expected deleted file mode 100644 index 244765e95063..000000000000 --- a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getRetType.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/FnPtrTypeRepr_getRetType.ql b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getRetType.ql deleted file mode 100644 index a0bd1df08d9c..000000000000 --- a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getRetType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from FnPtrTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getRetType() diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/ForExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ForExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.expected b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.expected index afe5349abb52..2e91473136f4 100644 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.expected @@ -1 +1,10 @@ -| gen_for_expr.rs:7:5:9:5 | for ... in ... { ... } | hasLabel: | no | hasLoopBody: | yes | getNumberOfAttrs: | 0 | hasIterable: | yes | hasPat: | yes | +instances +| gen_for_expr.rs:7:5:9:5 | for ... in ... { ... } | +getLabel +getLoopBody +| gen_for_expr.rs:7:5:9:5 | for ... in ... { ... } | gen_for_expr.rs:7:20:9:5 | { ... } | +getAttr +getIterable +| gen_for_expr.rs:7:5:9:5 | for ... in ... { ... } | gen_for_expr.rs:7:14:7:18 | 0..10 | +getPat +| 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/ForExpr.ql b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.ql index 60f5ab1e0809..1bb7bba5c49b 100644 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.ql @@ -2,16 +2,24 @@ import codeql.rust.elements import TestUtils -from - ForExpr x, string hasLabel, string hasLoopBody, int getNumberOfAttrs, string hasIterable, - string hasPat -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasLabel() then hasLabel = "yes" else hasLabel = "no") and - (if x.hasLoopBody() then hasLoopBody = "yes" else hasLoopBody = "no") and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasIterable() then hasIterable = "yes" else hasIterable = "no") and - if x.hasPat() then hasPat = "yes" else hasPat = "no" -select x, "hasLabel:", hasLabel, "hasLoopBody:", hasLoopBody, "getNumberOfAttrs:", getNumberOfAttrs, - "hasIterable:", hasIterable, "hasPat:", hasPat +query predicate instances(ForExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getLabel(ForExpr x, Label getLabel) { + toBeTested(x) and not x.isUnknown() and getLabel = x.getLabel() +} + +query predicate getLoopBody(ForExpr x, BlockExpr getLoopBody) { + toBeTested(x) and not x.isUnknown() and getLoopBody = x.getLoopBody() +} + +query predicate getAttr(ForExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getIterable(ForExpr x, Expr getIterable) { + toBeTested(x) and not x.isUnknown() and getIterable = x.getIterable() +} + +query predicate getPat(ForExpr x, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat() +} diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getAttr.ql deleted file mode 100644 index c348759b84ee..000000000000 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ForExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getIterable.expected b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getIterable.expected deleted file mode 100644 index d73979b6df8a..000000000000 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getIterable.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getIterable.ql b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getIterable.ql deleted file mode 100644 index 742189903504..000000000000 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getIterable.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ForExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getIterable() diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLabel.expected b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLabel.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLabel.ql b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLabel.ql deleted file mode 100644 index 019495fcf98c..000000000000 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLabel.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ForExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getLabel() diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLoopBody.expected b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLoopBody.expected deleted file mode 100644 index d0460f8ed7a4..000000000000 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLoopBody.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getLoopBody.ql b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLoopBody.ql deleted file mode 100644 index 5cc166fa96f5..000000000000 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLoopBody.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ForExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getLoopBody() diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getPat.expected b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getPat.expected deleted file mode 100644 index 44c312073f9c..000000000000 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getPat.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/ForExpr_getPat.ql b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getPat.ql deleted file mode 100644 index 9f83218ea31e..000000000000 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getPat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ForExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getPat() diff --git a/rust/ql/test/extractor-tests/generated/ForTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/ForTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ForTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.expected index 6adad498f31d..8f5ac12ec364 100644 --- a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.expected @@ -1 +1,6 @@ -| gen_for_type_repr.rs:9:12:9:41 | ForTypeRepr | hasGenericParamList: | yes | hasTypeRepr: | yes | +instances +| gen_for_type_repr.rs:9:12:9:41 | ForTypeRepr | +getGenericParamList +| gen_for_type_repr.rs:9:12:9:41 | ForTypeRepr | gen_for_type_repr.rs:9:15:9:18 | <...> | +getTypeRepr +| 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/ForTypeRepr.ql b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.ql index 5cb8aeecde1f..398a317a3ddc 100644 --- a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from ForTypeRepr x, string hasGenericParamList, string hasTypeRepr -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no") and - if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no" -select x, "hasGenericParamList:", hasGenericParamList, "hasTypeRepr:", hasTypeRepr +query predicate instances(ForTypeRepr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getGenericParamList(ForTypeRepr x, GenericParamList getGenericParamList) { + toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() +} + +query predicate getTypeRepr(ForTypeRepr x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getGenericParamList.expected b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getGenericParamList.expected deleted file mode 100644 index 0cb4ba872092..000000000000 --- a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getGenericParamList.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getGenericParamList.ql b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getGenericParamList.ql deleted file mode 100644 index 3ee936fca2ad..000000000000 --- a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getGenericParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ForTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericParamList() diff --git a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getTypeRepr.expected deleted file mode 100644 index 14610d6319f8..000000000000 --- a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/ForTypeRepr_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getTypeRepr.ql deleted file mode 100644 index 677f61b023da..000000000000 --- a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ForTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format.expected index efd593719cc0..ec9fba8965aa 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format.expected +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format.expected @@ -1,17 +1,40 @@ -| gen_format.rs:5:21:5:22 | {} | getParent: | gen_format.rs:5:14:5:32 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | no | hasWidthArgument: | no | hasPrecisionArgument: | no | -| gen_format.rs:7:21:7:46 | {value:#width$.precision$} | getParent: | gen_format.rs:7:14:7:47 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | yes | hasWidthArgument: | yes | hasPrecisionArgument: | yes | -| gen_format.rs:11:15:11:20 | {name} | getParent: | gen_format.rs:11:14:11:35 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | yes | hasWidthArgument: | no | hasPrecisionArgument: | no | -| gen_format.rs:12:15:12:17 | {0} | getParent: | gen_format.rs:12:14:12:38 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | yes | hasWidthArgument: | no | hasPrecisionArgument: | no | -| gen_format.rs:16:15:16:23 | {:width$} | getParent: | gen_format.rs:16:14:16:28 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | no | hasWidthArgument: | yes | hasPrecisionArgument: | no | -| gen_format.rs:17:15:17:19 | {:1$} | getParent: | gen_format.rs:17:14:17:31 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | no | hasWidthArgument: | yes | hasPrecisionArgument: | no | -| gen_format.rs:21:15:21:23 | {:.prec$} | getParent: | gen_format.rs:21:14:21:28 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | no | hasWidthArgument: | no | hasPrecisionArgument: | yes | -| gen_format.rs:22:15:22:20 | {:.1$} | getParent: | gen_format.rs:22:14:22:31 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | no | hasWidthArgument: | no | hasPrecisionArgument: | yes | -| gen_format_args_arg.rs:5:26:5:27 | {} | getParent: | gen_format_args_arg.rs:5:17:5:39 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | no | hasWidthArgument: | no | hasPrecisionArgument: | no | -| gen_format_args_expr.rs:6:19:6:20 | {} | getParent: | gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | no | hasWidthArgument: | no | hasPrecisionArgument: | no | -| gen_format_args_expr.rs:6:26:6:29 | {:?} | getParent: | gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | getIndex: | 3 | hasArgumentRef: | no | hasWidthArgument: | no | hasPrecisionArgument: | no | -| gen_format_args_expr.rs:7:19:7:21 | {b} | getParent: | gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | yes | hasWidthArgument: | no | hasPrecisionArgument: | no | -| gen_format_args_expr.rs:7:27:7:31 | {a:?} | getParent: | gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | getIndex: | 3 | hasArgumentRef: | yes | hasWidthArgument: | no | hasPrecisionArgument: | no | -| gen_format_args_expr.rs:9:19:9:21 | {x} | getParent: | gen_format_args_expr.rs:9:17:9:28 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | yes | hasWidthArgument: | no | hasPrecisionArgument: | no | -| gen_format_args_expr.rs:9:24:9:26 | {y} | getParent: | gen_format_args_expr.rs:9:17:9:28 | FormatArgsExpr | getIndex: | 3 | hasArgumentRef: | yes | hasWidthArgument: | no | hasPrecisionArgument: | no | -| gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | getParent: | gen_format_argument.rs:5:14:5:47 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | yes | hasWidthArgument: | yes | hasPrecisionArgument: | yes | -| gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | getParent: | gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | getIndex: | 1 | hasArgumentRef: | yes | hasWidthArgument: | yes | hasPrecisionArgument: | yes | +instances +| gen_format.rs:5:21:5:22 | {} | getParent: | gen_format.rs:5:14:5:32 | FormatArgsExpr | getIndex: | 1 | +| gen_format.rs:7:21:7:46 | {value:#width$.precision$} | getParent: | gen_format.rs:7:14:7:47 | FormatArgsExpr | getIndex: | 1 | +| gen_format.rs:11:15:11:20 | {name} | getParent: | gen_format.rs:11:14:11:35 | FormatArgsExpr | getIndex: | 1 | +| gen_format.rs:12:15:12:17 | {0} | getParent: | gen_format.rs:12:14:12:38 | FormatArgsExpr | getIndex: | 1 | +| gen_format.rs:16:15:16:23 | {:width$} | getParent: | gen_format.rs:16:14:16:28 | FormatArgsExpr | getIndex: | 1 | +| gen_format.rs:17:15:17:19 | {:1$} | getParent: | gen_format.rs:17:14:17:31 | FormatArgsExpr | getIndex: | 1 | +| gen_format.rs:21:15:21:23 | {:.prec$} | getParent: | gen_format.rs:21:14:21:28 | FormatArgsExpr | getIndex: | 1 | +| gen_format.rs:22:15:22:20 | {:.1$} | getParent: | gen_format.rs:22:14:22:31 | FormatArgsExpr | getIndex: | 1 | +| gen_format_args_arg.rs:5:26:5:27 | {} | getParent: | gen_format_args_arg.rs:5:17:5:39 | FormatArgsExpr | getIndex: | 1 | +| gen_format_args_expr.rs:6:19:6:20 | {} | getParent: | gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | getIndex: | 1 | +| gen_format_args_expr.rs:6:26:6:29 | {:?} | getParent: | gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | getIndex: | 3 | +| gen_format_args_expr.rs:7:19:7:21 | {b} | getParent: | gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | getIndex: | 1 | +| gen_format_args_expr.rs:7:27:7:31 | {a:?} | getParent: | gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | getIndex: | 3 | +| gen_format_args_expr.rs:9:19:9:21 | {x} | getParent: | gen_format_args_expr.rs:9:17:9:28 | FormatArgsExpr | getIndex: | 1 | +| gen_format_args_expr.rs:9:24:9:26 | {y} | getParent: | gen_format_args_expr.rs:9:17:9:28 | FormatArgsExpr | getIndex: | 3 | +| gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | getParent: | gen_format_argument.rs:5:14:5:47 | FormatArgsExpr | getIndex: | 1 | +| gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | getParent: | gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | getIndex: | 1 | +getArgumentRef +| gen_format.rs:7:21:7:46 | {value:#width$.precision$} | gen_format.rs:7:22:7:26 | value | +| gen_format.rs:11:15:11:20 | {name} | gen_format.rs:11:16:11:19 | name | +| gen_format.rs:12:15:12:17 | {0} | gen_format.rs:12:16:12:16 | 0 | +| gen_format_args_expr.rs:7:19:7:21 | {b} | gen_format_args_expr.rs:7:20:7:20 | b | +| gen_format_args_expr.rs:7:27:7:31 | {a:?} | gen_format_args_expr.rs:7:28:7:28 | a | +| gen_format_args_expr.rs:9:19:9:21 | {x} | gen_format_args_expr.rs:9:20:9:20 | x | +| gen_format_args_expr.rs:9:24:9:26 | {y} | gen_format_args_expr.rs:9:25:9:25 | y | +| gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | gen_format_argument.rs:5:22:5:26 | value | +| gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | gen_format_argument.rs:7:22:7:22 | 0 | +getWidthArgument +| gen_format.rs:7:21:7:46 | {value:#width$.precision$} | gen_format.rs:7:29:7:33 | width | +| gen_format.rs:16:15:16:23 | {:width$} | gen_format.rs:16:17:16:21 | width | +| gen_format.rs:17:15:17:19 | {:1$} | gen_format.rs:17:17:17:17 | 1 | +| gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | gen_format_argument.rs:5:29:5:33 | width | +| gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | gen_format_argument.rs:7:25:7:25 | 1 | +getPrecisionArgument +| gen_format.rs:7:21:7:46 | {value:#width$.precision$} | gen_format.rs:7:36:7:44 | precision | +| gen_format.rs:21:15:21:23 | {:.prec$} | gen_format.rs:21:18:21:21 | prec | +| gen_format.rs:22:15:22:20 | {:.1$} | gen_format.rs:22:18:22:18 | 1 | +| gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | gen_format_argument.rs:5:36:5:44 | precision | +| gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | gen_format_argument.rs:7:28:7:28 | 2 | diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format.ql index 5c7893ea65c5..5a74e34cbaf3 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format.ql +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format.ql @@ -2,16 +2,25 @@ import codeql.rust.elements import TestUtils -from - Format x, FormatArgsExpr getParent, int getIndex, string hasArgumentRef, string hasWidthArgument, - string hasPrecisionArgument -where +query predicate instances( + Format x, string getParent__label, FormatArgsExpr getParent, string getIndex__label, int getIndex +) { toBeTested(x) and not x.isUnknown() and + getParent__label = "getParent:" and getParent = x.getParent() and - getIndex = x.getIndex() and - (if x.hasArgumentRef() then hasArgumentRef = "yes" else hasArgumentRef = "no") and - (if x.hasWidthArgument() then hasWidthArgument = "yes" else hasWidthArgument = "no") and - if x.hasPrecisionArgument() then hasPrecisionArgument = "yes" else hasPrecisionArgument = "no" -select x, "getParent:", getParent, "getIndex:", getIndex, "hasArgumentRef:", hasArgumentRef, - "hasWidthArgument:", hasWidthArgument, "hasPrecisionArgument:", hasPrecisionArgument + getIndex__label = "getIndex:" and + getIndex = x.getIndex() +} + +query predicate getArgumentRef(Format x, FormatArgument getArgumentRef) { + toBeTested(x) and not x.isUnknown() and getArgumentRef = x.getArgumentRef() +} + +query predicate getWidthArgument(Format x, FormatArgument getWidthArgument) { + toBeTested(x) and not x.isUnknown() and getWidthArgument = x.getWidthArgument() +} + +query predicate getPrecisionArgument(Format x, FormatArgument getPrecisionArgument) { + toBeTested(x) and not x.isUnknown() and getPrecisionArgument = x.getPrecisionArgument() +} diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.expected index e1ce7c44998a..32a73ae1c7c4 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.expected +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.expected @@ -1,16 +1,37 @@ -| gen_format.rs:5:26:5:32 | FormatArgsArg | hasExpr: | yes | hasName: | no | -| gen_format.rs:12:35:12:38 | FormatArgsArg | hasExpr: | yes | hasName: | no | -| gen_format.rs:16:27:16:28 | FormatArgsArg | hasExpr: | yes | hasName: | no | -| gen_format.rs:17:23:17:24 | FormatArgsArg | hasExpr: | yes | hasName: | no | -| gen_format.rs:17:27:17:31 | FormatArgsArg | hasExpr: | yes | hasName: | no | -| gen_format.rs:21:27:21:28 | FormatArgsArg | hasExpr: | yes | hasName: | no | -| gen_format.rs:22:24:22:25 | FormatArgsArg | hasExpr: | yes | hasName: | no | -| gen_format.rs:22:28:22:31 | FormatArgsArg | hasExpr: | yes | hasName: | no | -| gen_format_args_arg.rs:5:32:5:38 | FormatArgsArg | hasExpr: | yes | hasName: | no | -| gen_format_args_expr.rs:6:33:6:33 | FormatArgsArg | hasExpr: | yes | hasName: | no | -| gen_format_args_expr.rs:6:36:6:36 | FormatArgsArg | hasExpr: | yes | hasName: | no | -| gen_format_args_expr.rs:7:35:7:37 | FormatArgsArg | hasExpr: | yes | hasName: | yes | -| gen_format_args_expr.rs:7:40:7:42 | FormatArgsArg | hasExpr: | yes | hasName: | yes | -| gen_format_argument.rs:7:34:7:38 | FormatArgsArg | hasExpr: | yes | hasName: | no | -| gen_format_argument.rs:7:41:7:45 | FormatArgsArg | hasExpr: | yes | hasName: | no | -| gen_format_argument.rs:7:48:7:56 | FormatArgsArg | hasExpr: | yes | hasName: | no | +instances +| gen_format.rs:5:26:5:32 | FormatArgsArg | +| gen_format.rs:12:35:12:38 | FormatArgsArg | +| gen_format.rs:16:27:16:28 | FormatArgsArg | +| gen_format.rs:17:23:17:24 | FormatArgsArg | +| gen_format.rs:17:27:17:31 | FormatArgsArg | +| gen_format.rs:21:27:21:28 | FormatArgsArg | +| gen_format.rs:22:24:22:25 | FormatArgsArg | +| gen_format.rs:22:28:22:31 | FormatArgsArg | +| gen_format_args_arg.rs:5:32:5:38 | FormatArgsArg | +| gen_format_args_expr.rs:6:33:6:33 | FormatArgsArg | +| gen_format_args_expr.rs:6:36:6:36 | FormatArgsArg | +| gen_format_args_expr.rs:7:35:7:37 | FormatArgsArg | +| gen_format_args_expr.rs:7:40:7:42 | FormatArgsArg | +| gen_format_argument.rs:7:34:7:38 | FormatArgsArg | +| gen_format_argument.rs:7:41:7:45 | FormatArgsArg | +| gen_format_argument.rs:7:48:7:56 | FormatArgsArg | +getExpr +| gen_format.rs:5:26:5:32 | FormatArgsArg | gen_format.rs:5:26:5:32 | "world" | +| gen_format.rs:12:35:12:38 | FormatArgsArg | gen_format.rs:12:35:12:38 | name | +| gen_format.rs:16:27:16:28 | FormatArgsArg | gen_format.rs:16:27:16:28 | PI | +| gen_format.rs:17:23:17:24 | FormatArgsArg | gen_format.rs:17:23:17:24 | PI | +| gen_format.rs:17:27:17:31 | FormatArgsArg | gen_format.rs:17:27:17:31 | width | +| gen_format.rs:21:27:21:28 | FormatArgsArg | gen_format.rs:21:27:21:28 | PI | +| gen_format.rs:22:24:22:25 | FormatArgsArg | gen_format.rs:22:24:22:25 | PI | +| gen_format.rs:22:28:22:31 | FormatArgsArg | gen_format.rs:22:28:22:31 | prec | +| gen_format_args_arg.rs:5:32:5:38 | FormatArgsArg | gen_format_args_arg.rs:5:32:5:38 | "world" | +| gen_format_args_expr.rs:6:33:6:33 | FormatArgsArg | gen_format_args_expr.rs:6:33:6:33 | 1 | +| gen_format_args_expr.rs:6:36:6:36 | FormatArgsArg | gen_format_args_expr.rs:6:36:6:36 | 2 | +| gen_format_args_expr.rs:7:35:7:37 | FormatArgsArg | gen_format_args_expr.rs:7:37:7:37 | 1 | +| gen_format_args_expr.rs:7:40:7:42 | FormatArgsArg | gen_format_args_expr.rs:7:42:7:42 | 2 | +| gen_format_argument.rs:7:34:7:38 | FormatArgsArg | gen_format_argument.rs:7:34:7:38 | value | +| gen_format_argument.rs:7:41:7:45 | FormatArgsArg | gen_format_argument.rs:7:41:7:45 | width | +| gen_format_argument.rs:7:48:7:56 | FormatArgsArg | gen_format_argument.rs:7:48:7:56 | precision | +getName +| gen_format_args_expr.rs:7:35:7:37 | FormatArgsArg | gen_format_args_expr.rs:7:35:7:35 | a | +| gen_format_args_expr.rs:7:40:7:42 | FormatArgsArg | gen_format_args_expr.rs:7:40:7:40 | b | diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql index 428bd82909f5..d3931f985113 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from FormatArgsArg x, string hasExpr, string hasName -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasExpr() then hasExpr = "yes" else hasExpr = "no") and - if x.hasName() then hasName = "yes" else hasName = "no" -select x, "hasExpr:", hasExpr, "hasName:", hasName +query predicate instances(FormatArgsArg x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExpr(FormatArgsArg x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} + +query predicate getName(FormatArgsArg x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getExpr.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getExpr.expected deleted file mode 100644 index 326f5d0415e8..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getExpr.expected +++ /dev/null @@ -1,16 +0,0 @@ -| gen_format.rs:5:26:5:32 | FormatArgsArg | gen_format.rs:5:26:5:32 | "world" | -| gen_format.rs:12:35:12:38 | FormatArgsArg | gen_format.rs:12:35:12:38 | name | -| gen_format.rs:16:27:16:28 | FormatArgsArg | gen_format.rs:16:27:16:28 | PI | -| gen_format.rs:17:23:17:24 | FormatArgsArg | gen_format.rs:17:23:17:24 | PI | -| gen_format.rs:17:27:17:31 | FormatArgsArg | gen_format.rs:17:27:17:31 | width | -| gen_format.rs:21:27:21:28 | FormatArgsArg | gen_format.rs:21:27:21:28 | PI | -| gen_format.rs:22:24:22:25 | FormatArgsArg | gen_format.rs:22:24:22:25 | PI | -| gen_format.rs:22:28:22:31 | FormatArgsArg | gen_format.rs:22:28:22:31 | prec | -| gen_format_args_arg.rs:5:32:5:38 | FormatArgsArg | gen_format_args_arg.rs:5:32:5:38 | "world" | -| gen_format_args_expr.rs:6:33:6:33 | FormatArgsArg | gen_format_args_expr.rs:6:33:6:33 | 1 | -| gen_format_args_expr.rs:6:36:6:36 | FormatArgsArg | gen_format_args_expr.rs:6:36:6:36 | 2 | -| gen_format_args_expr.rs:7:35:7:37 | FormatArgsArg | gen_format_args_expr.rs:7:37:7:37 | 1 | -| gen_format_args_expr.rs:7:40:7:42 | FormatArgsArg | gen_format_args_expr.rs:7:42:7:42 | 2 | -| gen_format_argument.rs:7:34:7:38 | FormatArgsArg | gen_format_argument.rs:7:34:7:38 | value | -| gen_format_argument.rs:7:41:7:45 | FormatArgsArg | gen_format_argument.rs:7:41:7:45 | width | -| gen_format_argument.rs:7:48:7:56 | FormatArgsArg | gen_format_argument.rs:7:48:7:56 | precision | diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getExpr.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getExpr.ql deleted file mode 100644 index ee67794f93ac..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from FormatArgsArg x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getName.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getName.expected deleted file mode 100644 index ad5d7ab4ab22..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getName.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_format_args_expr.rs:7:35:7:37 | FormatArgsArg | gen_format_args_expr.rs:7:35:7:35 | a | -| gen_format_args_expr.rs:7:40:7:42 | FormatArgsArg | gen_format_args_expr.rs:7:40:7:40 | b | diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getName.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getName.ql deleted file mode 100644 index 8f4bdb2a0c84..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from FormatArgsArg x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.expected index d3319ded2fb2..36afee17dacc 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.expected +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.expected @@ -1,15 +1,68 @@ -| gen_format.rs:5:14:5:32 | FormatArgsExpr | getNumberOfArgs: | 1 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 1 | -| gen_format.rs:7:14:7:47 | FormatArgsExpr | getNumberOfArgs: | 0 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 1 | -| gen_format.rs:11:14:11:35 | FormatArgsExpr | getNumberOfArgs: | 0 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 1 | -| gen_format.rs:12:14:12:38 | FormatArgsExpr | getNumberOfArgs: | 1 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 1 | -| gen_format.rs:16:14:16:28 | FormatArgsExpr | getNumberOfArgs: | 1 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 1 | -| gen_format.rs:17:14:17:31 | FormatArgsExpr | getNumberOfArgs: | 2 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 1 | -| gen_format.rs:21:14:21:28 | FormatArgsExpr | getNumberOfArgs: | 1 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 1 | -| gen_format.rs:22:14:22:31 | FormatArgsExpr | getNumberOfArgs: | 2 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 1 | -| gen_format_args_arg.rs:5:17:5:39 | FormatArgsExpr | getNumberOfArgs: | 1 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 1 | -| gen_format_args_expr.rs:5:17:5:27 | FormatArgsExpr | getNumberOfArgs: | 0 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 0 | -| gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | getNumberOfArgs: | 2 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 2 | -| gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | getNumberOfArgs: | 2 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 2 | -| gen_format_args_expr.rs:9:17:9:28 | FormatArgsExpr | getNumberOfArgs: | 0 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 2 | -| gen_format_argument.rs:5:14:5:47 | FormatArgsExpr | getNumberOfArgs: | 0 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 1 | -| gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | getNumberOfArgs: | 3 | getNumberOfAttrs: | 0 | hasTemplate: | yes | getNumberOfFormats: | 1 | +instances +| gen_format.rs:5:14:5:32 | FormatArgsExpr | +| gen_format.rs:7:14:7:47 | FormatArgsExpr | +| gen_format.rs:11:14:11:35 | FormatArgsExpr | +| gen_format.rs:12:14:12:38 | FormatArgsExpr | +| gen_format.rs:16:14:16:28 | FormatArgsExpr | +| gen_format.rs:17:14:17:31 | FormatArgsExpr | +| gen_format.rs:21:14:21:28 | FormatArgsExpr | +| gen_format.rs:22:14:22:31 | FormatArgsExpr | +| gen_format_args_arg.rs:5:17:5:39 | FormatArgsExpr | +| gen_format_args_expr.rs:5:17:5:27 | FormatArgsExpr | +| gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | +| gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | +| gen_format_args_expr.rs:9:17:9:28 | FormatArgsExpr | +| gen_format_argument.rs:5:14:5:47 | FormatArgsExpr | +| gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | +getArg +| gen_format.rs:5:14:5:32 | FormatArgsExpr | 0 | gen_format.rs:5:26:5:32 | FormatArgsArg | +| gen_format.rs:12:14:12:38 | FormatArgsExpr | 0 | gen_format.rs:12:35:12:38 | FormatArgsArg | +| gen_format.rs:16:14:16:28 | FormatArgsExpr | 0 | gen_format.rs:16:27:16:28 | FormatArgsArg | +| gen_format.rs:17:14:17:31 | FormatArgsExpr | 0 | gen_format.rs:17:23:17:24 | FormatArgsArg | +| gen_format.rs:17:14:17:31 | FormatArgsExpr | 1 | gen_format.rs:17:27:17:31 | FormatArgsArg | +| gen_format.rs:21:14:21:28 | FormatArgsExpr | 0 | gen_format.rs:21:27:21:28 | FormatArgsArg | +| gen_format.rs:22:14:22:31 | FormatArgsExpr | 0 | gen_format.rs:22:24:22:25 | FormatArgsArg | +| gen_format.rs:22:14:22:31 | FormatArgsExpr | 1 | gen_format.rs:22:28:22:31 | FormatArgsArg | +| gen_format_args_arg.rs:5:17:5:39 | FormatArgsExpr | 0 | gen_format_args_arg.rs:5:32:5:38 | FormatArgsArg | +| gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | 0 | gen_format_args_expr.rs:6:33:6:33 | FormatArgsArg | +| gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | 1 | gen_format_args_expr.rs:6:36:6:36 | FormatArgsArg | +| gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | 0 | gen_format_args_expr.rs:7:35:7:37 | FormatArgsArg | +| gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | 1 | gen_format_args_expr.rs:7:40:7:42 | FormatArgsArg | +| gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | 0 | gen_format_argument.rs:7:34:7:38 | FormatArgsArg | +| gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | 1 | gen_format_argument.rs:7:41:7:45 | FormatArgsArg | +| gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | 2 | gen_format_argument.rs:7:48:7:56 | FormatArgsArg | +getAttr +getTemplate +| gen_format.rs:5:14:5:32 | FormatArgsExpr | gen_format.rs:5:14:5:23 | "Hello {}\\n" | +| gen_format.rs:7:14:7:47 | FormatArgsExpr | gen_format.rs:7:14:7:47 | "Value {value:#width$.precisio... | +| gen_format.rs:11:14:11:35 | FormatArgsExpr | gen_format.rs:11:14:11:35 | "{name} in wonderland\\n" | +| gen_format.rs:12:14:12:38 | FormatArgsExpr | gen_format.rs:12:14:12:32 | "{0} in wonderland\\n" | +| gen_format.rs:16:14:16:28 | FormatArgsExpr | gen_format.rs:16:14:16:24 | "{:width$}\\n" | +| gen_format.rs:17:14:17:31 | FormatArgsExpr | gen_format.rs:17:14:17:20 | "{:1$}\\n" | +| gen_format.rs:21:14:21:28 | FormatArgsExpr | gen_format.rs:21:14:21:24 | "{:.prec$}\\n" | +| gen_format.rs:22:14:22:31 | FormatArgsExpr | gen_format.rs:22:14:22:21 | "{:.1$}\\n" | +| gen_format_args_arg.rs:5:17:5:39 | FormatArgsExpr | gen_format_args_arg.rs:5:18:5:29 | "Hello, {}!" | +| gen_format_args_expr.rs:5:17:5:27 | FormatArgsExpr | gen_format_args_expr.rs:5:18:5:26 | "no args" | +| gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | gen_format_args_expr.rs:6:18:6:30 | "{} foo {:?}" | +| gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | gen_format_args_expr.rs:7:18:7:32 | "{b} foo {a:?}" | +| gen_format_args_expr.rs:9:17:9:28 | FormatArgsExpr | gen_format_args_expr.rs:9:18:9:27 | "{x}, {y}" | +| gen_format_argument.rs:5:14:5:47 | FormatArgsExpr | gen_format_argument.rs:5:14:5:47 | "Value {value:#width$.precisio... | +| gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | gen_format_argument.rs:7:14:7:31 | "Value {0:#1$.2$}\\n" | +getFormat +| gen_format.rs:5:14:5:32 | FormatArgsExpr | 0 | gen_format.rs:5:21:5:22 | {} | +| gen_format.rs:7:14:7:47 | FormatArgsExpr | 0 | gen_format.rs:7:21:7:46 | {value:#width$.precision$} | +| gen_format.rs:11:14:11:35 | FormatArgsExpr | 0 | gen_format.rs:11:15:11:20 | {name} | +| gen_format.rs:12:14:12:38 | FormatArgsExpr | 0 | gen_format.rs:12:15:12:17 | {0} | +| gen_format.rs:16:14:16:28 | FormatArgsExpr | 0 | gen_format.rs:16:15:16:23 | {:width$} | +| gen_format.rs:17:14:17:31 | FormatArgsExpr | 0 | gen_format.rs:17:15:17:19 | {:1$} | +| gen_format.rs:21:14:21:28 | FormatArgsExpr | 0 | gen_format.rs:21:15:21:23 | {:.prec$} | +| gen_format.rs:22:14:22:31 | FormatArgsExpr | 0 | gen_format.rs:22:15:22:20 | {:.1$} | +| gen_format_args_arg.rs:5:17:5:39 | FormatArgsExpr | 0 | gen_format_args_arg.rs:5:26:5:27 | {} | +| gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | 0 | gen_format_args_expr.rs:6:19:6:20 | {} | +| gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | 1 | gen_format_args_expr.rs:6:26:6:29 | {:?} | +| gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | 0 | gen_format_args_expr.rs:7:19:7:21 | {b} | +| gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | 1 | gen_format_args_expr.rs:7:27:7:31 | {a:?} | +| gen_format_args_expr.rs:9:17:9:28 | FormatArgsExpr | 0 | gen_format_args_expr.rs:9:19:9:21 | {x} | +| gen_format_args_expr.rs:9:17:9:28 | FormatArgsExpr | 1 | gen_format_args_expr.rs:9:24:9:26 | {y} | +| gen_format_argument.rs:5:14:5:47 | FormatArgsExpr | 0 | gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | +| gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | 0 | gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql index 6a43bc1ea0a3..04e7a007e677 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql @@ -2,15 +2,20 @@ import codeql.rust.elements import TestUtils -from - FormatArgsExpr x, int getNumberOfArgs, int getNumberOfAttrs, string hasTemplate, - int getNumberOfFormats -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfArgs = x.getNumberOfArgs() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasTemplate() then hasTemplate = "yes" else hasTemplate = "no") and - getNumberOfFormats = x.getNumberOfFormats() -select x, "getNumberOfArgs:", getNumberOfArgs, "getNumberOfAttrs:", getNumberOfAttrs, - "hasTemplate:", hasTemplate, "getNumberOfFormats:", getNumberOfFormats +query predicate instances(FormatArgsExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getArg(FormatArgsExpr x, int index, FormatArgsArg getArg) { + toBeTested(x) and not x.isUnknown() and getArg = x.getArg(index) +} + +query predicate getAttr(FormatArgsExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getTemplate(FormatArgsExpr x, Expr getTemplate) { + toBeTested(x) and not x.isUnknown() and getTemplate = x.getTemplate() +} + +query predicate getFormat(FormatArgsExpr x, int index, Format getFormat) { + toBeTested(x) and not x.isUnknown() and getFormat = x.getFormat(index) +} diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getArg.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getArg.expected deleted file mode 100644 index 8a6e0ba12273..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getArg.expected +++ /dev/null @@ -1,16 +0,0 @@ -| gen_format.rs:5:14:5:32 | FormatArgsExpr | 0 | gen_format.rs:5:26:5:32 | FormatArgsArg | -| gen_format.rs:12:14:12:38 | FormatArgsExpr | 0 | gen_format.rs:12:35:12:38 | FormatArgsArg | -| gen_format.rs:16:14:16:28 | FormatArgsExpr | 0 | gen_format.rs:16:27:16:28 | FormatArgsArg | -| gen_format.rs:17:14:17:31 | FormatArgsExpr | 0 | gen_format.rs:17:23:17:24 | FormatArgsArg | -| gen_format.rs:17:14:17:31 | FormatArgsExpr | 1 | gen_format.rs:17:27:17:31 | FormatArgsArg | -| gen_format.rs:21:14:21:28 | FormatArgsExpr | 0 | gen_format.rs:21:27:21:28 | FormatArgsArg | -| gen_format.rs:22:14:22:31 | FormatArgsExpr | 0 | gen_format.rs:22:24:22:25 | FormatArgsArg | -| gen_format.rs:22:14:22:31 | FormatArgsExpr | 1 | gen_format.rs:22:28:22:31 | FormatArgsArg | -| gen_format_args_arg.rs:5:17:5:39 | FormatArgsExpr | 0 | gen_format_args_arg.rs:5:32:5:38 | FormatArgsArg | -| gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | 0 | gen_format_args_expr.rs:6:33:6:33 | FormatArgsArg | -| gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | 1 | gen_format_args_expr.rs:6:36:6:36 | FormatArgsArg | -| gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | 0 | gen_format_args_expr.rs:7:35:7:37 | FormatArgsArg | -| gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | 1 | gen_format_args_expr.rs:7:40:7:42 | FormatArgsArg | -| gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | 0 | gen_format_argument.rs:7:34:7:38 | FormatArgsArg | -| gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | 1 | gen_format_argument.rs:7:41:7:45 | FormatArgsArg | -| gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | 2 | gen_format_argument.rs:7:48:7:56 | FormatArgsArg | diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getArg.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getArg.ql deleted file mode 100644 index 1bf575a0f868..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getArg.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from FormatArgsExpr 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/FormatArgsExpr/FormatArgsExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getAttr.ql deleted file mode 100644 index bfaf15b6ff5a..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from FormatArgsExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getFormat.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getFormat.expected deleted file mode 100644 index 3b6486bcfdbf..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getFormat.expected +++ /dev/null @@ -1,17 +0,0 @@ -| gen_format.rs:5:14:5:32 | FormatArgsExpr | 0 | gen_format.rs:5:21:5:22 | {} | -| gen_format.rs:7:14:7:47 | FormatArgsExpr | 0 | gen_format.rs:7:21:7:46 | {value:#width$.precision$} | -| gen_format.rs:11:14:11:35 | FormatArgsExpr | 0 | gen_format.rs:11:15:11:20 | {name} | -| gen_format.rs:12:14:12:38 | FormatArgsExpr | 0 | gen_format.rs:12:15:12:17 | {0} | -| gen_format.rs:16:14:16:28 | FormatArgsExpr | 0 | gen_format.rs:16:15:16:23 | {:width$} | -| gen_format.rs:17:14:17:31 | FormatArgsExpr | 0 | gen_format.rs:17:15:17:19 | {:1$} | -| gen_format.rs:21:14:21:28 | FormatArgsExpr | 0 | gen_format.rs:21:15:21:23 | {:.prec$} | -| gen_format.rs:22:14:22:31 | FormatArgsExpr | 0 | gen_format.rs:22:15:22:20 | {:.1$} | -| gen_format_args_arg.rs:5:17:5:39 | FormatArgsExpr | 0 | gen_format_args_arg.rs:5:26:5:27 | {} | -| gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | 0 | gen_format_args_expr.rs:6:19:6:20 | {} | -| gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | 1 | gen_format_args_expr.rs:6:26:6:29 | {:?} | -| gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | 0 | gen_format_args_expr.rs:7:19:7:21 | {b} | -| gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | 1 | gen_format_args_expr.rs:7:27:7:31 | {a:?} | -| gen_format_args_expr.rs:9:17:9:28 | FormatArgsExpr | 0 | gen_format_args_expr.rs:9:19:9:21 | {x} | -| gen_format_args_expr.rs:9:17:9:28 | FormatArgsExpr | 1 | gen_format_args_expr.rs:9:24:9:26 | {y} | -| gen_format_argument.rs:5:14:5:47 | FormatArgsExpr | 0 | gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | -| gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | 0 | gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getFormat.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getFormat.ql deleted file mode 100644 index ca61ca2bebd9..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getFormat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from FormatArgsExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getFormat(index) diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getTemplate.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getTemplate.expected deleted file mode 100644 index 3ef17d6470a5..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getTemplate.expected +++ /dev/null @@ -1,15 +0,0 @@ -| gen_format.rs:5:14:5:32 | FormatArgsExpr | gen_format.rs:5:14:5:23 | "Hello {}\\n" | -| gen_format.rs:7:14:7:47 | FormatArgsExpr | gen_format.rs:7:14:7:47 | "Value {value:#width$.precisio... | -| gen_format.rs:11:14:11:35 | FormatArgsExpr | gen_format.rs:11:14:11:35 | "{name} in wonderland\\n" | -| gen_format.rs:12:14:12:38 | FormatArgsExpr | gen_format.rs:12:14:12:32 | "{0} in wonderland\\n" | -| gen_format.rs:16:14:16:28 | FormatArgsExpr | gen_format.rs:16:14:16:24 | "{:width$}\\n" | -| gen_format.rs:17:14:17:31 | FormatArgsExpr | gen_format.rs:17:14:17:20 | "{:1$}\\n" | -| gen_format.rs:21:14:21:28 | FormatArgsExpr | gen_format.rs:21:14:21:24 | "{:.prec$}\\n" | -| gen_format.rs:22:14:22:31 | FormatArgsExpr | gen_format.rs:22:14:22:21 | "{:.1$}\\n" | -| gen_format_args_arg.rs:5:17:5:39 | FormatArgsExpr | gen_format_args_arg.rs:5:18:5:29 | "Hello, {}!" | -| gen_format_args_expr.rs:5:17:5:27 | FormatArgsExpr | gen_format_args_expr.rs:5:18:5:26 | "no args" | -| gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | gen_format_args_expr.rs:6:18:6:30 | "{} foo {:?}" | -| gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | gen_format_args_expr.rs:7:18:7:32 | "{b} foo {a:?}" | -| gen_format_args_expr.rs:9:17:9:28 | FormatArgsExpr | gen_format_args_expr.rs:9:18:9:27 | "{x}, {y}" | -| gen_format_argument.rs:5:14:5:47 | FormatArgsExpr | gen_format_argument.rs:5:14:5:47 | "Value {value:#width$.precisio... | -| gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | gen_format_argument.rs:7:14:7:31 | "Value {0:#1$.2$}\\n" | diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getTemplate.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getTemplate.ql deleted file mode 100644 index b43b24ed4f23..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getTemplate.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from FormatArgsExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getTemplate() diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument.expected index 6da44e9d84b1..d51a409ea943 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument.expected +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument.expected @@ -1,19 +1,32 @@ -| gen_format.rs:7:22:7:26 | value | getParent: | gen_format.rs:7:21:7:46 | {value:#width$.precision$} | hasVariable: | yes | -| gen_format.rs:7:29:7:33 | width | getParent: | gen_format.rs:7:21:7:46 | {value:#width$.precision$} | hasVariable: | yes | -| gen_format.rs:7:36:7:44 | precision | getParent: | gen_format.rs:7:21:7:46 | {value:#width$.precision$} | hasVariable: | yes | -| gen_format.rs:11:16:11:19 | name | getParent: | gen_format.rs:11:15:11:20 | {name} | hasVariable: | yes | -| gen_format.rs:12:16:12:16 | 0 | getParent: | gen_format.rs:12:15:12:17 | {0} | hasVariable: | no | -| gen_format.rs:16:17:16:21 | width | getParent: | gen_format.rs:16:15:16:23 | {:width$} | hasVariable: | yes | -| gen_format.rs:17:17:17:17 | 1 | getParent: | gen_format.rs:17:15:17:19 | {:1$} | hasVariable: | no | -| gen_format.rs:21:18:21:21 | prec | getParent: | gen_format.rs:21:15:21:23 | {:.prec$} | hasVariable: | yes | -| gen_format.rs:22:18:22:18 | 1 | getParent: | gen_format.rs:22:15:22:20 | {:.1$} | hasVariable: | no | -| gen_format_args_expr.rs:7:20:7:20 | b | getParent: | gen_format_args_expr.rs:7:19:7:21 | {b} | hasVariable: | no | -| gen_format_args_expr.rs:7:28:7:28 | a | getParent: | gen_format_args_expr.rs:7:27:7:31 | {a:?} | hasVariable: | no | -| gen_format_args_expr.rs:9:20:9:20 | x | getParent: | gen_format_args_expr.rs:9:19:9:21 | {x} | hasVariable: | yes | -| gen_format_args_expr.rs:9:25:9:25 | y | getParent: | gen_format_args_expr.rs:9:24:9:26 | {y} | hasVariable: | yes | -| gen_format_argument.rs:5:22:5:26 | value | getParent: | gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | hasVariable: | yes | -| gen_format_argument.rs:5:29:5:33 | width | getParent: | gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | hasVariable: | yes | -| gen_format_argument.rs:5:36:5:44 | precision | getParent: | gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | hasVariable: | yes | -| gen_format_argument.rs:7:22:7:22 | 0 | getParent: | gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | hasVariable: | no | -| gen_format_argument.rs:7:25:7:25 | 1 | getParent: | gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | hasVariable: | no | -| gen_format_argument.rs:7:28:7:28 | 2 | getParent: | gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | hasVariable: | no | +instances +| gen_format.rs:7:22:7:26 | value | getParent: | gen_format.rs:7:21:7:46 | {value:#width$.precision$} | +| gen_format.rs:7:29:7:33 | width | getParent: | gen_format.rs:7:21:7:46 | {value:#width$.precision$} | +| gen_format.rs:7:36:7:44 | precision | getParent: | gen_format.rs:7:21:7:46 | {value:#width$.precision$} | +| gen_format.rs:11:16:11:19 | name | getParent: | gen_format.rs:11:15:11:20 | {name} | +| gen_format.rs:12:16:12:16 | 0 | getParent: | gen_format.rs:12:15:12:17 | {0} | +| gen_format.rs:16:17:16:21 | width | getParent: | gen_format.rs:16:15:16:23 | {:width$} | +| gen_format.rs:17:17:17:17 | 1 | getParent: | gen_format.rs:17:15:17:19 | {:1$} | +| gen_format.rs:21:18:21:21 | prec | getParent: | gen_format.rs:21:15:21:23 | {:.prec$} | +| gen_format.rs:22:18:22:18 | 1 | getParent: | gen_format.rs:22:15:22:20 | {:.1$} | +| gen_format_args_expr.rs:7:20:7:20 | b | getParent: | gen_format_args_expr.rs:7:19:7:21 | {b} | +| gen_format_args_expr.rs:7:28:7:28 | a | getParent: | gen_format_args_expr.rs:7:27:7:31 | {a:?} | +| gen_format_args_expr.rs:9:20:9:20 | x | getParent: | gen_format_args_expr.rs:9:19:9:21 | {x} | +| gen_format_args_expr.rs:9:25:9:25 | y | getParent: | gen_format_args_expr.rs:9:24:9:26 | {y} | +| gen_format_argument.rs:5:22:5:26 | value | getParent: | gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | +| gen_format_argument.rs:5:29:5:33 | width | getParent: | gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | +| gen_format_argument.rs:5:36:5:44 | precision | getParent: | gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | +| gen_format_argument.rs:7:22:7:22 | 0 | getParent: | gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | +| gen_format_argument.rs:7:25:7:25 | 1 | getParent: | gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | +| gen_format_argument.rs:7:28:7:28 | 2 | getParent: | gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | +getVariable +| gen_format.rs:7:22:7:26 | value | gen_format.rs:7:22:7:26 | value | +| gen_format.rs:7:29:7:33 | width | gen_format.rs:7:29:7:33 | width | +| gen_format.rs:7:36:7:44 | precision | gen_format.rs:7:36:7:44 | precision | +| gen_format.rs:11:16:11:19 | name | gen_format.rs:11:16:11:19 | name | +| gen_format.rs:16:17:16:21 | width | gen_format.rs:16:17:16:21 | width | +| gen_format.rs:21:18:21:21 | prec | gen_format.rs:21:18:21:21 | prec | +| gen_format_args_expr.rs:9:20:9:20 | x | gen_format_args_expr.rs:9:20:9:20 | x | +| gen_format_args_expr.rs:9:25:9:25 | y | gen_format_args_expr.rs:9:25:9:25 | y | +| gen_format_argument.rs:5:22:5:26 | value | gen_format_argument.rs:5:22:5:26 | value | +| gen_format_argument.rs:5:29:5:33 | width | gen_format_argument.rs:5:29:5:33 | width | +| gen_format_argument.rs:5:36:5:44 | precision | gen_format_argument.rs:5:36:5:44 | precision | diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument.ql index ed57154f7e82..0c8498fba86e 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument.ql +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument.ql @@ -2,10 +2,13 @@ import codeql.rust.elements import TestUtils -from FormatArgument x, Format getParent, string hasVariable -where +query predicate instances(FormatArgument x, string getParent__label, Format getParent) { toBeTested(x) and not x.isUnknown() and - getParent = x.getParent() and - if x.hasVariable() then hasVariable = "yes" else hasVariable = "no" -select x, "getParent:", getParent, "hasVariable:", hasVariable + getParent__label = "getParent:" and + getParent = x.getParent() +} + +query predicate getVariable(FormatArgument x, FormatTemplateVariableAccess getVariable) { + toBeTested(x) and not x.isUnknown() and getVariable = x.getVariable() +} diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument_getVariable.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument_getVariable.expected deleted file mode 100644 index 46b5e6255e12..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument_getVariable.expected +++ /dev/null @@ -1,11 +0,0 @@ -| gen_format.rs:7:22:7:26 | value | gen_format.rs:7:22:7:26 | value | -| gen_format.rs:7:29:7:33 | width | gen_format.rs:7:29:7:33 | width | -| gen_format.rs:7:36:7:44 | precision | gen_format.rs:7:36:7:44 | precision | -| gen_format.rs:11:16:11:19 | name | gen_format.rs:11:16:11:19 | name | -| gen_format.rs:16:17:16:21 | width | gen_format.rs:16:17:16:21 | width | -| gen_format.rs:21:18:21:21 | prec | gen_format.rs:21:18:21:21 | prec | -| gen_format_args_expr.rs:9:20:9:20 | x | gen_format_args_expr.rs:9:20:9:20 | x | -| gen_format_args_expr.rs:9:25:9:25 | y | gen_format_args_expr.rs:9:25:9:25 | y | -| gen_format_argument.rs:5:22:5:26 | value | gen_format_argument.rs:5:22:5:26 | value | -| gen_format_argument.rs:5:29:5:33 | width | gen_format_argument.rs:5:29:5:33 | width | -| gen_format_argument.rs:5:36:5:44 | precision | gen_format_argument.rs:5:36:5:44 | precision | diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument_getVariable.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument_getVariable.ql deleted file mode 100644 index 5d303bc4b6c6..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgument_getVariable.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from FormatArgument x -where toBeTested(x) and not x.isUnknown() -select x, x.getVariable() diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql index 4f43ca11870a..8a75f9cdb543 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql @@ -2,6 +2,4 @@ import codeql.rust.elements import TestUtils -from FormatTemplateVariableAccess x -where toBeTested(x) and not x.isUnknown() -select x +query predicate instances(FormatTemplateVariableAccess x) { toBeTested(x) and not x.isUnknown() } diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getArgumentRef.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getArgumentRef.expected deleted file mode 100644 index 5df8716a659b..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getArgumentRef.expected +++ /dev/null @@ -1,9 +0,0 @@ -| gen_format.rs:7:21:7:46 | {value:#width$.precision$} | gen_format.rs:7:22:7:26 | value | -| gen_format.rs:11:15:11:20 | {name} | gen_format.rs:11:16:11:19 | name | -| gen_format.rs:12:15:12:17 | {0} | gen_format.rs:12:16:12:16 | 0 | -| gen_format_args_expr.rs:7:19:7:21 | {b} | gen_format_args_expr.rs:7:20:7:20 | b | -| gen_format_args_expr.rs:7:27:7:31 | {a:?} | gen_format_args_expr.rs:7:28:7:28 | a | -| gen_format_args_expr.rs:9:19:9:21 | {x} | gen_format_args_expr.rs:9:20:9:20 | x | -| gen_format_args_expr.rs:9:24:9:26 | {y} | gen_format_args_expr.rs:9:25:9:25 | y | -| gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | gen_format_argument.rs:5:22:5:26 | value | -| gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | gen_format_argument.rs:7:22:7:22 | 0 | diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getArgumentRef.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getArgumentRef.ql deleted file mode 100644 index e9958bcf0fa2..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getArgumentRef.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Format x -where toBeTested(x) and not x.isUnknown() -select x, x.getArgumentRef() diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getPrecisionArgument.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getPrecisionArgument.expected deleted file mode 100644 index 21a246404d76..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getPrecisionArgument.expected +++ /dev/null @@ -1,5 +0,0 @@ -| gen_format.rs:7:21:7:46 | {value:#width$.precision$} | gen_format.rs:7:36:7:44 | precision | -| gen_format.rs:21:15:21:23 | {:.prec$} | gen_format.rs:21:18:21:21 | prec | -| gen_format.rs:22:15:22:20 | {:.1$} | gen_format.rs:22:18:22:18 | 1 | -| gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | gen_format_argument.rs:5:36:5:44 | precision | -| gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | gen_format_argument.rs:7:28:7:28 | 2 | diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getPrecisionArgument.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getPrecisionArgument.ql deleted file mode 100644 index 4b690bb0cc1e..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getPrecisionArgument.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Format x -where toBeTested(x) and not x.isUnknown() -select x, x.getPrecisionArgument() diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getWidthArgument.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getWidthArgument.expected deleted file mode 100644 index 9e009ee4fd13..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getWidthArgument.expected +++ /dev/null @@ -1,5 +0,0 @@ -| gen_format.rs:7:21:7:46 | {value:#width$.precision$} | gen_format.rs:7:29:7:33 | width | -| gen_format.rs:16:15:16:23 | {:width$} | gen_format.rs:16:17:16:21 | width | -| gen_format.rs:17:15:17:19 | {:1$} | gen_format.rs:17:17:17:17 | 1 | -| gen_format_argument.rs:5:21:5:46 | {value:#width$.precision$} | gen_format_argument.rs:5:29:5:33 | width | -| gen_format_argument.rs:7:21:7:30 | {0:#1$.2$} | gen_format_argument.rs:7:25:7:25 | 1 | diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getWidthArgument.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getWidthArgument.ql deleted file mode 100644 index 62fe11f48ebf..000000000000 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/Format_getWidthArgument.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Format x -where toBeTested(x) and not x.isUnknown() -select x, x.getWidthArgument() diff --git a/rust/ql/test/extractor-tests/generated/Function/Cargo.lock b/rust/ql/test/extractor-tests/generated/Function/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Function/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Function/Function.expected b/rust/ql/test/extractor-tests/generated/Function/Function.expected index d30ef684493d..db434cf918d6 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function.expected +++ b/rust/ql/test/extractor-tests/generated/Function/Function.expected @@ -1,2 +1,27 @@ -| 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 | -| 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 | +instances +| gen_function.rs:3:1:4:38 | fn foo | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasImplementation: | yes | +| gen_function.rs:7:5:7:13 | fn bar | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasImplementation: | no | +getExtendedCanonicalPath +| gen_function.rs:3:1:4:38 | fn foo | crate::gen_function::foo | +| gen_function.rs:7:5:7:13 | fn bar | crate::gen_function::Trait::bar | +getCrateOrigin +| gen_function.rs:3:1:4:38 | fn foo | repo::test | +| gen_function.rs:7:5:7:13 | fn bar | repo::test | +getAttributeMacroExpansion +getParamList +| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:7:4:14 | ParamList | +| gen_function.rs:7:5:7:13 | fn bar | gen_function.rs:7:11:7:12 | ParamList | +getAttr +getParam +| gen_function.rs:3:1:4:38 | fn foo | 0 | gen_function.rs:4:8:4:13 | ...: u32 | +getAbi +getBody +| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:23:4:38 | { ... } | +getGenericParamList +getName +| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:4:4:6 | foo | +| gen_function.rs:7:5:7:13 | fn bar | gen_function.rs:7:8:7:10 | bar | +getRetType +| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:16:4:21 | RetTypeRepr | +getVisibility +getWhereClause diff --git a/rust/ql/test/extractor-tests/generated/Function/Function.ql b/rust/ql/test/extractor-tests/generated/Function/Function.ql index 3c368187c296..4f76623cb20c 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function.ql +++ b/rust/ql/test/extractor-tests/generated/Function/Function.ql @@ -2,42 +2,77 @@ 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 -where +query predicate instances( + Function x, string isAsync__label, string isAsync, string isConst__label, string isConst, + string isDefault__label, string isDefault, string isGen__label, string isGen, + string isUnsafe__label, string isUnsafe, string hasImplementation__label, string hasImplementation +) { toBeTested(x) and not x.isUnknown() and - (if x.hasParamList() then hasParamList = "yes" else hasParamList = "no") and - getNumberOfAttrs = x.getNumberOfAttrs() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - (if x.hasAbi() then hasAbi = "yes" else hasAbi = "no") and - (if x.hasBody() then hasBody = "yes" else hasBody = "no") and - (if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no") and + isAsync__label = "isAsync:" and (if x.isAsync() then isAsync = "yes" else isAsync = "no") and + isConst__label = "isConst:" and (if x.isConst() then isConst = "yes" else isConst = "no") and + isDefault__label = "isDefault:" and (if x.isDefault() then isDefault = "yes" else isDefault = "no") and + isGen__label = "isGen:" and (if x.isGen() then isGen = "yes" else isGen = "no") and + isUnsafe__label = "isUnsafe:" and (if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - (if x.hasRetType() then hasRetType = "yes" else hasRetType = "no") and - (if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no") and - if x.hasWhereClause() then hasWhereClause = "yes" else hasWhereClause = "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__label = "hasImplementation:" and + if x.hasImplementation() then hasImplementation = "yes" else hasImplementation = "no" +} + +query predicate getExtendedCanonicalPath(Function x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(Function x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(Function x, MacroItems getAttributeMacroExpansion) { + toBeTested(x) and + not x.isUnknown() and + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getParamList(Function x, ParamList getParamList) { + toBeTested(x) and not x.isUnknown() and getParamList = x.getParamList() +} + +query predicate getAttr(Function x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getParam(Function x, int index, Param getParam) { + toBeTested(x) and not x.isUnknown() and getParam = x.getParam(index) +} + +query predicate getAbi(Function x, Abi getAbi) { + toBeTested(x) and not x.isUnknown() and getAbi = x.getAbi() +} + +query predicate getBody(Function x, BlockExpr getBody) { + toBeTested(x) and not x.isUnknown() and getBody = x.getBody() +} + +query predicate getGenericParamList(Function x, GenericParamList getGenericParamList) { + toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() +} + +query predicate getName(Function x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getRetType(Function x, RetTypeRepr getRetType) { + toBeTested(x) and not x.isUnknown() and getRetType = x.getRetType() +} + +query predicate getVisibility(Function x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} + +query predicate getWhereClause(Function x, WhereClause getWhereClause) { + toBeTested(x) and not x.isUnknown() and getWhereClause = x.getWhereClause() +} diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getAbi.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getAbi.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getAbi.ql b/rust/ql/test/extractor-tests/generated/Function/Function_getAbi.ql deleted file mode 100644 index a1317ed761f4..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getAbi.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Function x -where toBeTested(x) and not x.isUnknown() -select x, x.getAbi() diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getAttr.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getAttr.ql b/rust/ql/test/extractor-tests/generated/Function/Function_getAttr.ql deleted file mode 100644 index 239c6da56c46..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/Function/Function_getAttributeMacroExpansion.ql deleted file mode 100644 index 4bb6e2852cb9..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Function x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getBody.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getBody.expected deleted file mode 100644 index 894900b3eaa8..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getBody.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:23:4:38 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getBody.ql b/rust/ql/test/extractor-tests/generated/Function/Function_getBody.ql deleted file mode 100644 index 5b3191cac00b..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getBody.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Function x -where toBeTested(x) and not x.isUnknown() -select x, x.getBody() diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getCrateOrigin.expected deleted file mode 100644 index eabc941bd5be..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getCrateOrigin.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_function.rs:3:1:4:38 | fn foo | repo::test | -| gen_function.rs:7:5:7:13 | fn bar | repo::test | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/Function/Function_getCrateOrigin.ql deleted file mode 100644 index 933e5867d841..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Function x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.expected deleted file mode 100644 index 2c0059ebc2a5..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_function.rs:3:1:4:38 | fn foo | crate::gen_function::foo | -| gen_function.rs:7:5:7:13 | fn bar | crate::gen_function::Trait::bar | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.ql deleted file mode 100644 index f2c413748de6..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Function x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getGenericParamList.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getGenericParamList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getGenericParamList.ql b/rust/ql/test/extractor-tests/generated/Function/Function_getGenericParamList.ql deleted file mode 100644 index 410d28c3ef89..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getGenericParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Function x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericParamList() diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getName.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getName.expected deleted file mode 100644 index 7e889e82d284..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getName.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:4:4:6 | foo | -| gen_function.rs:7:5:7:13 | fn bar | gen_function.rs:7:8:7:10 | bar | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getName.ql b/rust/ql/test/extractor-tests/generated/Function/Function_getName.ql deleted file mode 100644 index 8d1e2fbfe206..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Function x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getParamList.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getParamList.expected deleted file mode 100644 index df5810619191..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getParamList.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:7:4:14 | ParamList | -| gen_function.rs:7:5:7:13 | fn bar | gen_function.rs:7:11:7:12 | ParamList | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getParamList.ql b/rust/ql/test/extractor-tests/generated/Function/Function_getParamList.ql deleted file mode 100644 index 6d9fed49b7b6..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Function x -where toBeTested(x) and not x.isUnknown() -select x, x.getParamList() diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getRetType.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getRetType.expected deleted file mode 100644 index f9778c63c7ef..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getRetType.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:16:4:21 | RetTypeRepr | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getRetType.ql b/rust/ql/test/extractor-tests/generated/Function/Function_getRetType.ql deleted file mode 100644 index 123640add8bf..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getRetType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Function x -where toBeTested(x) and not x.isUnknown() -select x, x.getRetType() diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getVisibility.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getVisibility.ql b/rust/ql/test/extractor-tests/generated/Function/Function_getVisibility.ql deleted file mode 100644 index 1aa04da90e9b..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Function x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getWhereClause.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getWhereClause.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getWhereClause.ql b/rust/ql/test/extractor-tests/generated/Function/Function_getWhereClause.ql deleted file mode 100644 index b4f5bd562743..000000000000 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getWhereClause.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Function x -where toBeTested(x) and not x.isUnknown() -select x, x.getWhereClause() diff --git a/rust/ql/test/extractor-tests/generated/GenericArgList/Cargo.lock b/rust/ql/test/extractor-tests/generated/GenericArgList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/GenericArgList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList.expected b/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList.expected index d2a5b7bcd8f0..792822323862 100644 --- a/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList.expected +++ b/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList.expected @@ -1 +1,5 @@ -| gen_generic_arg_list.rs:5:10:5:21 | <...> | getNumberOfGenericArgs: | 2 | +instances +| gen_generic_arg_list.rs:5:10:5:21 | <...> | +getGenericArg +| gen_generic_arg_list.rs:5:10:5:21 | <...> | 0 | gen_generic_arg_list.rs:5:13:5:15 | TypeArg | +| gen_generic_arg_list.rs:5:10:5:21 | <...> | 1 | gen_generic_arg_list.rs:5:18:5:20 | TypeArg | diff --git a/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList.ql b/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList.ql index bd3e8bfb63f0..3ba930f204af 100644 --- a/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList.ql +++ b/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from GenericArgList x, int getNumberOfGenericArgs -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfGenericArgs = x.getNumberOfGenericArgs() -select x, "getNumberOfGenericArgs:", getNumberOfGenericArgs +query predicate instances(GenericArgList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getGenericArg(GenericArgList x, int index, GenericArg getGenericArg) { + toBeTested(x) and not x.isUnknown() and getGenericArg = x.getGenericArg(index) +} diff --git a/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList_getGenericArg.expected b/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList_getGenericArg.expected deleted file mode 100644 index 69e416a57ad7..000000000000 --- a/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList_getGenericArg.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_generic_arg_list.rs:5:10:5:21 | <...> | 0 | gen_generic_arg_list.rs:5:13:5:15 | TypeArg | -| gen_generic_arg_list.rs:5:10:5:21 | <...> | 1 | gen_generic_arg_list.rs:5:18:5:20 | TypeArg | diff --git a/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList_getGenericArg.ql b/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList_getGenericArg.ql deleted file mode 100644 index cc13c85782a1..000000000000 --- a/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList_getGenericArg.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from GenericArgList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getGenericArg(index) diff --git a/rust/ql/test/extractor-tests/generated/GenericParamList/Cargo.lock b/rust/ql/test/extractor-tests/generated/GenericParamList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/GenericParamList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList.expected b/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList.expected index 22f71c13aa6f..be0b98eb2c5e 100644 --- a/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList.expected +++ b/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList.expected @@ -1,2 +1,8 @@ -| gen_generic_param_list.rs:5:9:5:14 | <...> | getNumberOfGenericParams: | 2 | -| gen_generic_param_list.rs:7:13:7:20 | <...> | getNumberOfGenericParams: | 2 | +instances +| gen_generic_param_list.rs:5:9:5:14 | <...> | +| gen_generic_param_list.rs:7:13:7:20 | <...> | +getGenericParam +| gen_generic_param_list.rs:5:9:5:14 | <...> | 0 | gen_generic_param_list.rs:5:10:5:10 | A | +| gen_generic_param_list.rs:5:9:5:14 | <...> | 1 | gen_generic_param_list.rs:5:13:5:13 | B | +| gen_generic_param_list.rs:7:13:7:20 | <...> | 0 | gen_generic_param_list.rs:7:14:7:15 | T1 | +| gen_generic_param_list.rs:7:13:7:20 | <...> | 1 | gen_generic_param_list.rs:7:18:7:19 | T2 | diff --git a/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList.ql b/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList.ql index b79afcf33f75..c09637a5757c 100644 --- a/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList.ql +++ b/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from GenericParamList x, int getNumberOfGenericParams -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfGenericParams = x.getNumberOfGenericParams() -select x, "getNumberOfGenericParams:", getNumberOfGenericParams +query predicate instances(GenericParamList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getGenericParam(GenericParamList x, int index, GenericParam getGenericParam) { + toBeTested(x) and not x.isUnknown() and getGenericParam = x.getGenericParam(index) +} diff --git a/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList_getGenericParam.expected b/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList_getGenericParam.expected deleted file mode 100644 index 01af2d987e94..000000000000 --- a/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList_getGenericParam.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_generic_param_list.rs:5:9:5:14 | <...> | 0 | gen_generic_param_list.rs:5:10:5:10 | A | -| gen_generic_param_list.rs:5:9:5:14 | <...> | 1 | gen_generic_param_list.rs:5:13:5:13 | B | -| gen_generic_param_list.rs:7:13:7:20 | <...> | 0 | gen_generic_param_list.rs:7:14:7:15 | T1 | -| gen_generic_param_list.rs:7:13:7:20 | <...> | 1 | gen_generic_param_list.rs:7:18:7:19 | T2 | diff --git a/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList_getGenericParam.ql b/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList_getGenericParam.ql deleted file mode 100644 index 323c11e3841e..000000000000 --- a/rust/ql/test/extractor-tests/generated/GenericParamList/GenericParamList_getGenericParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from GenericParamList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getGenericParam(index) diff --git a/rust/ql/test/extractor-tests/generated/IdentPat/Cargo.lock b/rust/ql/test/extractor-tests/generated/IdentPat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/IdentPat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat.expected b/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat.expected index e00fd230ad1e..931a1e9069a0 100644 --- a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat.expected +++ b/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat.expected @@ -1,2 +1,9 @@ -| gen_ident_pat.rs:6:22:6:22 | y | getNumberOfAttrs: | 0 | isMut: | no | isRef: | no | hasName: | yes | hasPat: | no | -| gen_ident_pat.rs:10:9:10:25 | y @ ... | getNumberOfAttrs: | 0 | isMut: | no | isRef: | no | hasName: | yes | hasPat: | yes | +instances +| gen_ident_pat.rs:6:22:6:22 | y | isMut: | no | isRef: | no | +| gen_ident_pat.rs:10:9:10:25 | y @ ... | isMut: | no | isRef: | no | +getAttr +getName +| gen_ident_pat.rs:6:22:6:22 | y | gen_ident_pat.rs:6:22:6:22 | y | +| gen_ident_pat.rs:10:9:10:25 | y @ ... | gen_ident_pat.rs:10:9:10:9 | y | +getPat +| gen_ident_pat.rs:10:9:10:25 | y @ ... | gen_ident_pat.rs:10:11:10:25 | ...::Some(...) | diff --git a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat.ql b/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat.ql index 3587ccff9ae5..a70bc32ca79c 100644 --- a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat.ql +++ b/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat.ql @@ -2,14 +2,25 @@ import codeql.rust.elements import TestUtils -from IdentPat x, int getNumberOfAttrs, string isMut, string isRef, string hasName, string hasPat -where +query predicate instances( + IdentPat x, string isMut__label, string isMut, string isRef__label, string isRef +) { toBeTested(x) and not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and + isMut__label = "isMut:" and (if x.isMut() then isMut = "yes" else isMut = "no") and - (if x.isRef() then isRef = "yes" else isRef = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - if x.hasPat() then hasPat = "yes" else hasPat = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "isMut:", isMut, "isRef:", isRef, "hasName:", - hasName, "hasPat:", hasPat + isRef__label = "isRef:" and + if x.isRef() then isRef = "yes" else isRef = "no" +} + +query predicate getAttr(IdentPat x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getName(IdentPat x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getPat(IdentPat x, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat() +} diff --git a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getAttr.expected b/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getAttr.ql b/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getAttr.ql deleted file mode 100644 index 8dde5cce1ca4..000000000000 --- a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from IdentPat x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getName.expected b/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getName.expected deleted file mode 100644 index c3009e862a44..000000000000 --- a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getName.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_ident_pat.rs:6:22:6:22 | y | gen_ident_pat.rs:6:22:6:22 | y | -| gen_ident_pat.rs:10:9:10:25 | y @ ... | gen_ident_pat.rs:10:9:10:9 | y | diff --git a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getName.ql b/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getName.ql deleted file mode 100644 index e96736741f50..000000000000 --- a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from IdentPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getPat.expected b/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getPat.expected deleted file mode 100644 index 6ae1d9f978ad..000000000000 --- a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getPat.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_ident_pat.rs:10:9:10:25 | y @ ... | gen_ident_pat.rs:10:11:10:25 | ...::Some(...) | diff --git a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getPat.ql b/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getPat.ql deleted file mode 100644 index 14d979626d4e..000000000000 --- a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat_getPat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from IdentPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getPat() diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/IfExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/IfExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.expected b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.expected index d9a33ad74f79..3051c69d10e4 100644 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.expected +++ b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.expected @@ -1,2 +1,12 @@ -| gen_if_expr.rs:5:5:7:5 | if ... {...} | getNumberOfAttrs: | 0 | hasCondition: | yes | hasElse: | no | hasThen: | yes | -| gen_if_expr.rs:8:13:12:5 | if ... {...} else {...} | getNumberOfAttrs: | 0 | hasCondition: | yes | hasElse: | yes | hasThen: | yes | +instances +| gen_if_expr.rs:5:5:7:5 | if ... {...} | +| gen_if_expr.rs:8:13:12:5 | if ... {...} else {...} | +getAttr +getCondition +| gen_if_expr.rs:5:5:7:5 | if ... {...} | gen_if_expr.rs:5:8:5:14 | ... == ... | +| gen_if_expr.rs:8:13:12:5 | if ... {...} else {...} | gen_if_expr.rs:8:16:8:20 | ... > ... | +getElse +| gen_if_expr.rs:8:13:12:5 | if ... {...} else {...} | gen_if_expr.rs:10:12:12:5 | { ... } | +getThen +| gen_if_expr.rs:5:5:7:5 | if ... {...} | gen_if_expr.rs:5:16:7:5 | { ... } | +| gen_if_expr.rs:8:13:12:5 | if ... {...} else {...} | gen_if_expr.rs:8:22:10:5 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.ql b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.ql index e72816279572..c41248fa322e 100644 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.ql +++ b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.ql @@ -2,13 +2,20 @@ import codeql.rust.elements import TestUtils -from IfExpr x, int getNumberOfAttrs, string hasCondition, string hasElse, string hasThen -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasCondition() then hasCondition = "yes" else hasCondition = "no") and - (if x.hasElse() then hasElse = "yes" else hasElse = "no") and - if x.hasThen() then hasThen = "yes" else hasThen = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasCondition:", hasCondition, "hasElse:", hasElse, - "hasThen:", hasThen +query predicate instances(IfExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(IfExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getCondition(IfExpr x, Expr getCondition) { + toBeTested(x) and not x.isUnknown() and getCondition = x.getCondition() +} + +query predicate getElse(IfExpr x, Expr getElse) { + toBeTested(x) and not x.isUnknown() and getElse = x.getElse() +} + +query predicate getThen(IfExpr x, BlockExpr getThen) { + toBeTested(x) and not x.isUnknown() and getThen = x.getThen() +} diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getAttr.ql deleted file mode 100644 index 46f5bde3e3bb..000000000000 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from IfExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getCondition.expected b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getCondition.expected deleted file mode 100644 index 4990a47bc96e..000000000000 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getCondition.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_if_expr.rs:5:5:7:5 | if ... {...} | gen_if_expr.rs:5:8:5:14 | ... == ... | -| gen_if_expr.rs:8:13:12:5 | if ... {...} else {...} | gen_if_expr.rs:8:16:8:20 | ... > ... | diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getCondition.ql b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getCondition.ql deleted file mode 100644 index 459d6961e5a5..000000000000 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getCondition.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from IfExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getCondition() diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getElse.expected b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getElse.expected deleted file mode 100644 index a03626f5e5dd..000000000000 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getElse.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_if_expr.rs:8:13:12:5 | if ... {...} else {...} | gen_if_expr.rs:10:12:12:5 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getElse.ql b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getElse.ql deleted file mode 100644 index 187637aab212..000000000000 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getElse.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from IfExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getElse() diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getThen.expected b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getThen.expected deleted file mode 100644 index 6080b004f38f..000000000000 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getThen.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_if_expr.rs:5:5:7:5 | if ... {...} | gen_if_expr.rs:5:16:7:5 | { ... } | -| gen_if_expr.rs:8:13:12:5 | if ... {...} else {...} | gen_if_expr.rs:8:22:10:5 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getThen.ql b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getThen.ql deleted file mode 100644 index 35fa09196611..000000000000 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getThen.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from IfExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getThen() diff --git a/rust/ql/test/extractor-tests/generated/Impl/Cargo.lock b/rust/ql/test/extractor-tests/generated/Impl/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Impl/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl.expected index 5297703e7d86..2a47a4e20f68 100644 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl.expected +++ b/rust/ql/test/extractor-tests/generated/Impl/Impl.expected @@ -1 +1,15 @@ -| 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 | +instances +| gen_impl.rs:4:5:9:5 | impl MyTrait for MyType { ... } | isConst: | no | isDefault: | no | isUnsafe: | no | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getAssocItemList +| gen_impl.rs:4:5:9:5 | impl MyTrait for MyType { ... } | gen_impl.rs:7:29:9:5 | AssocItemList | +getAttr +getGenericParamList +getSelfTy +| gen_impl.rs:4:5:9:5 | impl MyTrait for MyType { ... } | gen_impl.rs:7:22:7:27 | MyType | +getTrait +| gen_impl.rs:4:5:9:5 | impl MyTrait for MyType { ... } | gen_impl.rs:7:10:7:16 | MyTrait | +getVisibility +getWhereClause diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl.ql b/rust/ql/test/extractor-tests/generated/Impl/Impl.ql index fa92053a2172..c64bae752c3e 100644 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl.ql +++ b/rust/ql/test/extractor-tests/generated/Impl/Impl.ql @@ -2,37 +2,58 @@ import codeql.rust.elements import TestUtils -from - Impl x, string hasExtendedCanonicalPath, string hasCrateOrigin, string hasAttributeMacroExpansion, - string hasAssocItemList, int getNumberOfAttrs, string hasGenericParamList, string isConst, - string isDefault, string isUnsafe, string hasSelfTy, string hasTrait, string hasVisibility, - string hasWhereClause -where +query predicate instances( + Impl x, string isConst__label, string isConst, string isDefault__label, string isDefault, + string isUnsafe__label, string isUnsafe +) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - (if x.hasAssocItemList() then hasAssocItemList = "yes" else hasAssocItemList = "no") and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no") and + isConst__label = "isConst:" and (if x.isConst() then isConst = "yes" else isConst = "no") and + isDefault__label = "isDefault:" and (if x.isDefault() then isDefault = "yes" else isDefault = "no") and - (if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no") and - (if x.hasSelfTy() then hasSelfTy = "yes" else hasSelfTy = "no") and - (if x.hasTrait() then hasTrait = "yes" else hasTrait = "no") and - (if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no") and - if x.hasWhereClause() then hasWhereClause = "yes" else hasWhereClause = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "hasAssocItemList:", hasAssocItemList, - "getNumberOfAttrs:", getNumberOfAttrs, "hasGenericParamList:", hasGenericParamList, "isConst:", - isConst, "isDefault:", isDefault, "isUnsafe:", isUnsafe, "hasSelfTy:", hasSelfTy, "hasTrait:", - hasTrait, "hasVisibility:", hasVisibility, "hasWhereClause:", hasWhereClause + isUnsafe__label = "isUnsafe:" and + if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no" +} + +query predicate getExtendedCanonicalPath(Impl x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(Impl x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(Impl x, MacroItems getAttributeMacroExpansion) { + toBeTested(x) and + not x.isUnknown() and + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getAssocItemList(Impl x, AssocItemList getAssocItemList) { + toBeTested(x) and not x.isUnknown() and getAssocItemList = x.getAssocItemList() +} + +query predicate getAttr(Impl x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getGenericParamList(Impl x, GenericParamList getGenericParamList) { + toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() +} + +query predicate getSelfTy(Impl x, TypeRepr getSelfTy) { + toBeTested(x) and not x.isUnknown() and getSelfTy = x.getSelfTy() +} + +query predicate getTrait(Impl x, TypeRepr getTrait) { + toBeTested(x) and not x.isUnknown() and getTrait = x.getTrait() +} + +query predicate getVisibility(Impl x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} + +query predicate getWhereClause(Impl x, WhereClause getWhereClause) { + toBeTested(x) and not x.isUnknown() and getWhereClause = x.getWhereClause() +} diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getAssocItemList.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl_getAssocItemList.expected deleted file mode 100644 index ae3d1f4a97f2..000000000000 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getAssocItemList.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getAssocItemList.ql b/rust/ql/test/extractor-tests/generated/Impl/Impl_getAssocItemList.ql deleted file mode 100644 index 8365b6b0dfe4..000000000000 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getAssocItemList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Impl x -where toBeTested(x) and not x.isUnknown() -select x, x.getAssocItemList() diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getAttr.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getAttr.ql b/rust/ql/test/extractor-tests/generated/Impl/Impl_getAttr.ql deleted file mode 100644 index d6c01005755b..000000000000 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Impl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/Impl/Impl_getAttributeMacroExpansion.ql deleted file mode 100644 index 3496b9cebe79..000000000000 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Impl x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/Impl/Impl_getCrateOrigin.ql deleted file mode 100644 index b9d428ce94aa..000000000000 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Impl x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/Impl/Impl_getExtendedCanonicalPath.ql deleted file mode 100644 index 140490fcaff3..000000000000 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Impl x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getGenericParamList.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl_getGenericParamList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getGenericParamList.ql b/rust/ql/test/extractor-tests/generated/Impl/Impl_getGenericParamList.ql deleted file mode 100644 index 2b24c7d73a99..000000000000 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getGenericParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Impl x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericParamList() diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getSelfTy.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl_getSelfTy.expected deleted file mode 100644 index 3d38010c592a..000000000000 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getSelfTy.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getSelfTy.ql b/rust/ql/test/extractor-tests/generated/Impl/Impl_getSelfTy.ql deleted file mode 100644 index 283903e8d34b..000000000000 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getSelfTy.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Impl x -where toBeTested(x) and not x.isUnknown() -select x, x.getSelfTy() diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getTrait.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl_getTrait.expected deleted file mode 100644 index 9c0392972e1a..000000000000 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getTrait.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/Impl_getTrait.ql b/rust/ql/test/extractor-tests/generated/Impl/Impl_getTrait.ql deleted file mode 100644 index 7551a5e960ea..000000000000 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getTrait.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Impl x -where toBeTested(x) and not x.isUnknown() -select x, x.getTrait() diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getVisibility.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getVisibility.ql b/rust/ql/test/extractor-tests/generated/Impl/Impl_getVisibility.ql deleted file mode 100644 index f50c36bc8343..000000000000 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Impl x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getWhereClause.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl_getWhereClause.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getWhereClause.ql b/rust/ql/test/extractor-tests/generated/Impl/Impl_getWhereClause.ql deleted file mode 100644 index e2e87ef03c4e..000000000000 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getWhereClause.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Impl x -where toBeTested(x) and not x.isUnknown() -select x, x.getWhereClause() diff --git a/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.expected index 27a8426d9c2c..aa04363dc445 100644 --- a/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.expected @@ -1 +1,4 @@ -| gen_impl_trait_type_repr.rs:7:17:7:41 | ImplTraitTypeRepr | hasTypeBoundList: | yes | +instances +| gen_impl_trait_type_repr.rs:7:17:7:41 | ImplTraitTypeRepr | +getTypeBoundList +| 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/ImplTraitTypeRepr.ql b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.ql index 8ff70bd976db..e877ba909ff1 100644 --- a/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from ImplTraitTypeRepr x, string hasTypeBoundList -where - toBeTested(x) and - not x.isUnknown() and - if x.hasTypeBoundList() then hasTypeBoundList = "yes" else hasTypeBoundList = "no" -select x, "hasTypeBoundList:", hasTypeBoundList +query predicate instances(ImplTraitTypeRepr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getTypeBoundList(ImplTraitTypeRepr x, TypeBoundList getTypeBoundList) { + toBeTested(x) and not x.isUnknown() and getTypeBoundList = x.getTypeBoundList() +} diff --git a/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr_getTypeBoundList.expected deleted file mode 100644 index fbab626faa29..000000000000 --- a/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr_getTypeBoundList.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/ImplTraitTypeRepr_getTypeBoundList.ql b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr_getTypeBoundList.ql deleted file mode 100644 index 32c100f19075..000000000000 --- a/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr_getTypeBoundList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ImplTraitTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeBoundList() diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/IndexExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/IndexExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.expected b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.expected index 614afc3040f4..d951344b17e7 100644 --- a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.expected +++ b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.expected @@ -1,2 +1,10 @@ -| gen_index_expr.rs:5:5:5:12 | list[42] | getNumberOfAttrs: | 0 | hasBase: | yes | hasIndex: | yes | -| gen_index_expr.rs:6:5:6:12 | list[42] | getNumberOfAttrs: | 0 | hasBase: | yes | hasIndex: | yes | +instances +| gen_index_expr.rs:5:5:5:12 | list[42] | +| gen_index_expr.rs:6:5:6:12 | list[42] | +getAttr +getBase +| gen_index_expr.rs:5:5:5:12 | list[42] | gen_index_expr.rs:5:5:5:8 | list | +| gen_index_expr.rs:6:5:6:12 | list[42] | gen_index_expr.rs:6:5:6:8 | list | +getIndex +| gen_index_expr.rs:5:5:5:12 | list[42] | gen_index_expr.rs:5:10:5:11 | 42 | +| gen_index_expr.rs:6:5:6:12 | list[42] | gen_index_expr.rs:6:10:6:11 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.ql b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.ql index a4b7139c97e2..a7a870b1423f 100644 --- a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.ql +++ b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.ql @@ -2,11 +2,16 @@ import codeql.rust.elements import TestUtils -from IndexExpr x, int getNumberOfAttrs, string hasBase, string hasIndex -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasBase() then hasBase = "yes" else hasBase = "no") and - if x.hasIndex() then hasIndex = "yes" else hasIndex = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasBase:", hasBase, "hasIndex:", hasIndex +query predicate instances(IndexExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(IndexExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getBase(IndexExpr x, Expr getBase) { + toBeTested(x) and not x.isUnknown() and getBase = x.getBase() +} + +query predicate getIndex(IndexExpr x, Expr getIndex) { + toBeTested(x) and not x.isUnknown() and getIndex = x.getIndex() +} diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getAttr.ql deleted file mode 100644 index 504f8e56cbe5..000000000000 --- a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from IndexExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.expected b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.expected deleted file mode 100644 index 13fb9a2c6a6d..000000000000 --- a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_index_expr.rs:5:5:5:12 | list[42] | gen_index_expr.rs:5:5:5:8 | list | -| gen_index_expr.rs:6:5:6:12 | list[42] | gen_index_expr.rs:6:5:6:8 | list | diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.ql b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.ql deleted file mode 100644 index b4debab06d72..000000000000 --- a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from IndexExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getBase() diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getIndex.expected b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getIndex.expected deleted file mode 100644 index dfca82040881..000000000000 --- a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getIndex.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_index_expr.rs:5:5:5:12 | list[42] | gen_index_expr.rs:5:10:5:11 | 42 | -| gen_index_expr.rs:6:5:6:12 | list[42] | gen_index_expr.rs:6:10:6:11 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getIndex.ql b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getIndex.ql deleted file mode 100644 index f6d5b1e5998b..000000000000 --- a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getIndex.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from IndexExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getIndex() diff --git a/rust/ql/test/extractor-tests/generated/InferTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/InferTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/InferTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.ql b/rust/ql/test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.ql index 97f91c3307ef..5ee772eee5ca 100644 --- a/rust/ql/test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.ql @@ -2,6 +2,4 @@ import codeql.rust.elements import TestUtils -from InferTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x +query predicate instances(InferTypeRepr x) { toBeTested(x) and not x.isUnknown() } diff --git a/rust/ql/test/extractor-tests/generated/ItemList/Cargo.lock b/rust/ql/test/extractor-tests/generated/ItemList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ItemList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ItemList/ItemList.expected b/rust/ql/test/extractor-tests/generated/ItemList/ItemList.expected index 482eff5695c1..2efc834b6228 100644 --- a/rust/ql/test/extractor-tests/generated/ItemList/ItemList.expected +++ b/rust/ql/test/extractor-tests/generated/ItemList/ItemList.expected @@ -1 +1,6 @@ -| gen_item_list.rs:7:11:10:5 | ItemList | getNumberOfAttrs: | 0 | getNumberOfItems: | 2 | +instances +| gen_item_list.rs:7:11:10:5 | ItemList | +getAttr +getItem +| 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/ItemList.ql b/rust/ql/test/extractor-tests/generated/ItemList/ItemList.ql index b656fd735009..015b8f79125d 100644 --- a/rust/ql/test/extractor-tests/generated/ItemList/ItemList.ql +++ b/rust/ql/test/extractor-tests/generated/ItemList/ItemList.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from ItemList x, int getNumberOfAttrs, int getNumberOfItems -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - getNumberOfItems = x.getNumberOfItems() -select x, "getNumberOfAttrs:", getNumberOfAttrs, "getNumberOfItems:", getNumberOfItems +query predicate instances(ItemList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(ItemList x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getItem(ItemList x, int index, Item getItem) { + toBeTested(x) and not x.isUnknown() and getItem = x.getItem(index) +} diff --git a/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getAttr.expected b/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getAttr.ql b/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getAttr.ql deleted file mode 100644 index b49e5c18d37d..000000000000 --- a/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ItemList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getItem.expected b/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getItem.expected deleted file mode 100644 index 1ea2c7b8fc7f..000000000000 --- a/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getItem.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/ItemList_getItem.ql b/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getItem.ql deleted file mode 100644 index f9e65903fe96..000000000000 --- a/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getItem.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ItemList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getItem(index) diff --git a/rust/ql/test/extractor-tests/generated/Label/Cargo.lock b/rust/ql/test/extractor-tests/generated/Label/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Label/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Label/Label.expected b/rust/ql/test/extractor-tests/generated/Label/Label.expected index 7525044aaa25..1028afbe3f61 100644 --- a/rust/ql/test/extractor-tests/generated/Label/Label.expected +++ b/rust/ql/test/extractor-tests/generated/Label/Label.expected @@ -1 +1,4 @@ -| gen_label.rs:5:5:5:11 | 'label | hasLifetime: | yes | +instances +| gen_label.rs:5:5:5:11 | 'label | +getLifetime +| gen_label.rs:5:5:5:11 | 'label | gen_label.rs:5:5:5:10 | 'label | diff --git a/rust/ql/test/extractor-tests/generated/Label/Label.ql b/rust/ql/test/extractor-tests/generated/Label/Label.ql index 92f4d44230ee..e8cfb2a2b133 100644 --- a/rust/ql/test/extractor-tests/generated/Label/Label.ql +++ b/rust/ql/test/extractor-tests/generated/Label/Label.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from Label x, string hasLifetime -where - toBeTested(x) and - not x.isUnknown() and - if x.hasLifetime() then hasLifetime = "yes" else hasLifetime = "no" -select x, "hasLifetime:", hasLifetime +query predicate instances(Label x) { toBeTested(x) and not x.isUnknown() } + +query predicate getLifetime(Label x, Lifetime getLifetime) { + toBeTested(x) and not x.isUnknown() and getLifetime = x.getLifetime() +} diff --git a/rust/ql/test/extractor-tests/generated/Label/Label_getLifetime.expected b/rust/ql/test/extractor-tests/generated/Label/Label_getLifetime.expected deleted file mode 100644 index 9bbe91519133..000000000000 --- a/rust/ql/test/extractor-tests/generated/Label/Label_getLifetime.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_label.rs:5:5:5:11 | 'label | gen_label.rs:5:5:5:10 | 'label | diff --git a/rust/ql/test/extractor-tests/generated/Label/Label_getLifetime.ql b/rust/ql/test/extractor-tests/generated/Label/Label_getLifetime.ql deleted file mode 100644 index ba555d1209c3..000000000000 --- a/rust/ql/test/extractor-tests/generated/Label/Label_getLifetime.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Label x -where toBeTested(x) and not x.isUnknown() -select x, x.getLifetime() diff --git a/rust/ql/test/extractor-tests/generated/LetElse/Cargo.lock b/rust/ql/test/extractor-tests/generated/LetElse/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/LetElse/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/LetElse/LetElse.expected b/rust/ql/test/extractor-tests/generated/LetElse/LetElse.expected index 64b1e39e01d4..f0816731e30b 100644 --- a/rust/ql/test/extractor-tests/generated/LetElse/LetElse.expected +++ b/rust/ql/test/extractor-tests/generated/LetElse/LetElse.expected @@ -1 +1,4 @@ -| gen_let_else.rs:7:23:9:5 | else {...} | hasBlockExpr: | yes | +instances +| gen_let_else.rs:7:23:9:5 | else {...} | +getBlockExpr +| 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/LetElse.ql b/rust/ql/test/extractor-tests/generated/LetElse/LetElse.ql index 288e99d5a47c..12302dcd6fa6 100644 --- a/rust/ql/test/extractor-tests/generated/LetElse/LetElse.ql +++ b/rust/ql/test/extractor-tests/generated/LetElse/LetElse.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from LetElse x, string hasBlockExpr -where - toBeTested(x) and - not x.isUnknown() and - if x.hasBlockExpr() then hasBlockExpr = "yes" else hasBlockExpr = "no" -select x, "hasBlockExpr:", hasBlockExpr +query predicate instances(LetElse x) { toBeTested(x) and not x.isUnknown() } + +query predicate getBlockExpr(LetElse x, BlockExpr getBlockExpr) { + toBeTested(x) and not x.isUnknown() and getBlockExpr = x.getBlockExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/LetElse/LetElse_getBlockExpr.expected b/rust/ql/test/extractor-tests/generated/LetElse/LetElse_getBlockExpr.expected deleted file mode 100644 index 0083f6a3df57..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetElse/LetElse_getBlockExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/LetElse_getBlockExpr.ql b/rust/ql/test/extractor-tests/generated/LetElse/LetElse_getBlockExpr.ql deleted file mode 100644 index daebdb306132..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetElse/LetElse_getBlockExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LetElse x -where toBeTested(x) and not x.isUnknown() -select x, x.getBlockExpr() diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/LetExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/LetExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.expected b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.expected index 115493214ea5..ad1544b9f971 100644 --- a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.expected +++ b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.expected @@ -1 +1,7 @@ -| gen_let_expr.rs:5:8:5:31 | let ... = maybe_some | getNumberOfAttrs: | 0 | hasScrutinee: | yes | hasPat: | yes | +instances +| gen_let_expr.rs:5:8:5:31 | let ... = maybe_some | +getAttr +getScrutinee +| gen_let_expr.rs:5:8:5:31 | let ... = maybe_some | gen_let_expr.rs:5:22:5:31 | maybe_some | +getPat +| gen_let_expr.rs:5:8:5:31 | let ... = maybe_some | gen_let_expr.rs:5:12:5:18 | Some(...) | diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.ql b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.ql index 60aa8b90892c..2f8de7cd2d75 100644 --- a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.ql +++ b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.ql @@ -2,11 +2,16 @@ import codeql.rust.elements import TestUtils -from LetExpr x, int getNumberOfAttrs, string hasScrutinee, string hasPat -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasScrutinee() then hasScrutinee = "yes" else hasScrutinee = "no") and - if x.hasPat() then hasPat = "yes" else hasPat = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasScrutinee:", hasScrutinee, "hasPat:", hasPat +query predicate instances(LetExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(LetExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getScrutinee(LetExpr x, Expr getScrutinee) { + toBeTested(x) and not x.isUnknown() and getScrutinee = x.getScrutinee() +} + +query predicate getPat(LetExpr x, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat() +} diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getAttr.ql deleted file mode 100644 index 24330c4b19b5..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LetExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getPat.expected b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getPat.expected deleted file mode 100644 index b935bd98013a..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getPat.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_let_expr.rs:5:8:5:31 | let ... = maybe_some | gen_let_expr.rs:5:12:5:18 | Some(...) | diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getPat.ql b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getPat.ql deleted file mode 100644 index bd358b49c046..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getPat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LetExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getPat() diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getScrutinee.expected b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getScrutinee.expected deleted file mode 100644 index 0080ab4ee6e5..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getScrutinee.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_let_expr.rs:5:8:5:31 | let ... = maybe_some | gen_let_expr.rs:5:22:5:31 | maybe_some | diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getScrutinee.ql b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getScrutinee.ql deleted file mode 100644 index 2c144c2ac3c7..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getScrutinee.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LetExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getScrutinee() diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/Cargo.lock b/rust/ql/test/extractor-tests/generated/LetStmt/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/LetStmt/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.expected b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.expected index 8f01e57d3e95..235eb5e04b54 100644 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.expected +++ b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.expected @@ -1,6 +1,25 @@ -| gen_let_stmt.rs:5:5:5:15 | let ... = 42 | getNumberOfAttrs: | 0 | hasInitializer: | yes | hasLetElse: | no | hasPat: | yes | hasTypeRepr: | no | -| gen_let_stmt.rs:6:5:6:20 | let ... = 42 | getNumberOfAttrs: | 0 | hasInitializer: | yes | hasLetElse: | no | hasPat: | yes | hasTypeRepr: | yes | -| gen_let_stmt.rs:7:5:7:15 | let ... | getNumberOfAttrs: | 0 | hasInitializer: | no | hasLetElse: | no | hasPat: | yes | hasTypeRepr: | yes | -| gen_let_stmt.rs:8:5:8:10 | let ... | getNumberOfAttrs: | 0 | hasInitializer: | no | hasLetElse: | no | hasPat: | yes | hasTypeRepr: | no | -| gen_let_stmt.rs:9:5:9:24 | let ... = ... | getNumberOfAttrs: | 0 | hasInitializer: | yes | hasLetElse: | no | hasPat: | yes | hasTypeRepr: | no | -| gen_let_stmt.rs:10:5:12:6 | let ... = ... else {...} | getNumberOfAttrs: | 0 | hasInitializer: | yes | hasLetElse: | yes | hasPat: | yes | hasTypeRepr: | no | +instances +| gen_let_stmt.rs:5:5:5:15 | let ... = 42 | +| gen_let_stmt.rs:6:5:6:20 | let ... = 42 | +| gen_let_stmt.rs:7:5:7:15 | let ... | +| gen_let_stmt.rs:8:5:8:10 | let ... | +| gen_let_stmt.rs:9:5:9:24 | let ... = ... | +| gen_let_stmt.rs:10:5:12:6 | let ... = ... else {...} | +getAttr +getInitializer +| gen_let_stmt.rs:5:5:5:15 | let ... = 42 | gen_let_stmt.rs:5:13:5:14 | 42 | +| gen_let_stmt.rs:6:5:6:20 | let ... = 42 | gen_let_stmt.rs:6:18:6:19 | 42 | +| gen_let_stmt.rs:9:5:9:24 | let ... = ... | gen_let_stmt.rs:9:18:9:23 | TupleExpr | +| gen_let_stmt.rs:10:5:12:6 | let ... = ... else {...} | gen_let_stmt.rs:10:19:10:38 | ...::var(...) | +getLetElse +| gen_let_stmt.rs:10:5:12:6 | let ... = ... else {...} | gen_let_stmt.rs:10:40:12:5 | else {...} | +getPat +| gen_let_stmt.rs:5:5:5:15 | let ... = 42 | gen_let_stmt.rs:5:9:5:9 | x | +| gen_let_stmt.rs:6:5:6:20 | let ... = 42 | gen_let_stmt.rs:6:9:6:9 | x | +| gen_let_stmt.rs:7:5:7:15 | let ... | gen_let_stmt.rs:7:9:7:9 | x | +| gen_let_stmt.rs:8:5:8:10 | let ... | gen_let_stmt.rs:8:9:8:9 | x | +| gen_let_stmt.rs:9:5:9:24 | let ... = ... | gen_let_stmt.rs:9:9:9:14 | TuplePat | +| gen_let_stmt.rs:10:5:12:6 | let ... = ... else {...} | gen_let_stmt.rs:10:9:10:15 | Some(...) | +getTypeRepr +| gen_let_stmt.rs:6:5:6:20 | let ... = 42 | gen_let_stmt.rs:6:12:6:14 | i32 | +| gen_let_stmt.rs:7:5:7:15 | let ... | gen_let_stmt.rs:7:12:7:14 | i32 | diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.ql b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.ql index 0501354dfa1e..07feca933996 100644 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.ql +++ b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.ql @@ -2,16 +2,24 @@ import codeql.rust.elements import TestUtils -from - LetStmt x, int getNumberOfAttrs, string hasInitializer, string hasLetElse, string hasPat, - string hasTypeRepr -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasInitializer() then hasInitializer = "yes" else hasInitializer = "no") and - (if x.hasLetElse() then hasLetElse = "yes" else hasLetElse = "no") and - (if x.hasPat() then hasPat = "yes" else hasPat = "no") and - if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasInitializer:", hasInitializer, "hasLetElse:", - hasLetElse, "hasPat:", hasPat, "hasTypeRepr:", hasTypeRepr +query predicate instances(LetStmt x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(LetStmt x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getInitializer(LetStmt x, Expr getInitializer) { + toBeTested(x) and not x.isUnknown() and getInitializer = x.getInitializer() +} + +query predicate getLetElse(LetStmt x, LetElse getLetElse) { + toBeTested(x) and not x.isUnknown() and getLetElse = x.getLetElse() +} + +query predicate getPat(LetStmt x, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat() +} + +query predicate getTypeRepr(LetStmt x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getAttr.expected b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getAttr.ql b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getAttr.ql deleted file mode 100644 index 82f563323519..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LetStmt x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getInitializer.expected b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getInitializer.expected deleted file mode 100644 index bd8368e351fb..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getInitializer.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_let_stmt.rs:5:5:5:15 | let ... = 42 | gen_let_stmt.rs:5:13:5:14 | 42 | -| gen_let_stmt.rs:6:5:6:20 | let ... = 42 | gen_let_stmt.rs:6:18:6:19 | 42 | -| gen_let_stmt.rs:9:5:9:24 | let ... = ... | gen_let_stmt.rs:9:18:9:23 | TupleExpr | -| gen_let_stmt.rs:10:5:12:6 | let ... = ... else {...} | gen_let_stmt.rs:10:19:10:38 | ...::var(...) | diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getInitializer.ql b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getInitializer.ql deleted file mode 100644 index cac847aa7265..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getInitializer.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LetStmt x -where toBeTested(x) and not x.isUnknown() -select x, x.getInitializer() diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getLetElse.expected b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getLetElse.expected deleted file mode 100644 index 5e8090859af5..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getLetElse.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_let_stmt.rs:10:5:12:6 | let ... = ... else {...} | gen_let_stmt.rs:10:40:12:5 | else {...} | diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getLetElse.ql b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getLetElse.ql deleted file mode 100644 index f29257c0b289..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getLetElse.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LetStmt x -where toBeTested(x) and not x.isUnknown() -select x, x.getLetElse() diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getPat.expected b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getPat.expected deleted file mode 100644 index cd4c3f8cc64b..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getPat.expected +++ /dev/null @@ -1,6 +0,0 @@ -| gen_let_stmt.rs:5:5:5:15 | let ... = 42 | gen_let_stmt.rs:5:9:5:9 | x | -| gen_let_stmt.rs:6:5:6:20 | let ... = 42 | gen_let_stmt.rs:6:9:6:9 | x | -| gen_let_stmt.rs:7:5:7:15 | let ... | gen_let_stmt.rs:7:9:7:9 | x | -| gen_let_stmt.rs:8:5:8:10 | let ... | gen_let_stmt.rs:8:9:8:9 | x | -| gen_let_stmt.rs:9:5:9:24 | let ... = ... | gen_let_stmt.rs:9:9:9:14 | TuplePat | -| gen_let_stmt.rs:10:5:12:6 | let ... = ... else {...} | gen_let_stmt.rs:10:9:10:15 | Some(...) | diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getPat.ql b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getPat.ql deleted file mode 100644 index fd10317a2874..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getPat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LetStmt x -where toBeTested(x) and not x.isUnknown() -select x, x.getPat() diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getTypeRepr.expected deleted file mode 100644 index 489647f4793a..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getTypeRepr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_let_stmt.rs:6:5:6:20 | let ... = 42 | gen_let_stmt.rs:6:12:6:14 | i32 | -| gen_let_stmt.rs:7:5:7:15 | let ... | gen_let_stmt.rs:7:12:7:14 | i32 | diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getTypeRepr.ql deleted file mode 100644 index 7c5a8872bc31..000000000000 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LetStmt x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/Lifetime/Cargo.lock b/rust/ql/test/extractor-tests/generated/Lifetime/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Lifetime/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime.expected b/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime.expected index bb57ab8de874..e55b5553b5c3 100644 --- a/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime.expected +++ b/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime.expected @@ -1,2 +1,6 @@ -| gen_lifetime.rs:7:12:7:13 | 'a | hasText: | yes | -| gen_lifetime.rs:7:20:7:21 | 'a | hasText: | yes | +instances +| gen_lifetime.rs:7:12:7:13 | 'a | +| gen_lifetime.rs:7:20:7:21 | 'a | +getText +| 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/Lifetime.ql b/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime.ql index e07b53ec7a02..fa2a2e90910b 100644 --- a/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime.ql +++ b/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from Lifetime x, string hasText -where - toBeTested(x) and - not x.isUnknown() and - if x.hasText() then hasText = "yes" else hasText = "no" -select x, "hasText:", hasText +query predicate instances(Lifetime x) { toBeTested(x) and not x.isUnknown() } + +query predicate getText(Lifetime x, string getText) { + toBeTested(x) and not x.isUnknown() and getText = x.getText() +} diff --git a/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime_getText.expected b/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime_getText.expected deleted file mode 100644 index 3570dcab91a0..000000000000 --- a/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime_getText.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/Lifetime_getText.ql b/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime_getText.ql deleted file mode 100644 index 471b3a2405b3..000000000000 --- a/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime_getText.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Lifetime x -where toBeTested(x) and not x.isUnknown() -select x, x.getText() diff --git a/rust/ql/test/extractor-tests/generated/LifetimeArg/Cargo.lock b/rust/ql/test/extractor-tests/generated/LifetimeArg/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/LifetimeArg/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg.expected b/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg.expected index 07554eee9bcd..0e80f0af3196 100644 --- a/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg.expected +++ b/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg.expected @@ -1 +1,4 @@ -| gen_lifetime_arg.rs:7:20:7:21 | LifetimeArg | hasLifetime: | yes | +instances +| gen_lifetime_arg.rs:7:20:7:21 | LifetimeArg | +getLifetime +| 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/LifetimeArg.ql b/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg.ql index 83033e27af9d..9d0c48958d8d 100644 --- a/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg.ql +++ b/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from LifetimeArg x, string hasLifetime -where - toBeTested(x) and - not x.isUnknown() and - if x.hasLifetime() then hasLifetime = "yes" else hasLifetime = "no" -select x, "hasLifetime:", hasLifetime +query predicate instances(LifetimeArg x) { toBeTested(x) and not x.isUnknown() } + +query predicate getLifetime(LifetimeArg x, Lifetime getLifetime) { + toBeTested(x) and not x.isUnknown() and getLifetime = x.getLifetime() +} diff --git a/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg_getLifetime.expected b/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg_getLifetime.expected deleted file mode 100644 index 598bae0390f5..000000000000 --- a/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg_getLifetime.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/LifetimeArg_getLifetime.ql b/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg_getLifetime.ql deleted file mode 100644 index 0fe36ad85149..000000000000 --- a/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg_getLifetime.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LifetimeArg x -where toBeTested(x) and not x.isUnknown() -select x, x.getLifetime() diff --git a/rust/ql/test/extractor-tests/generated/LifetimeParam/Cargo.lock b/rust/ql/test/extractor-tests/generated/LifetimeParam/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/LifetimeParam/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.expected b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.expected index 2055797b2fd6..7e33b58d17f7 100644 --- a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.expected +++ b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.expected @@ -1 +1,6 @@ -| gen_lifetime_param.rs:7:12:7:13 | LifetimeParam | getNumberOfAttrs: | 0 | hasLifetime: | yes | hasTypeBoundList: | no | +instances +| gen_lifetime_param.rs:7:12:7:13 | LifetimeParam | +getAttr +getLifetime +| gen_lifetime_param.rs:7:12:7:13 | LifetimeParam | gen_lifetime_param.rs:7:12:7:13 | 'a | +getTypeBoundList diff --git a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.ql b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.ql index abe4635c285b..bddc4418ba46 100644 --- a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.ql +++ b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.ql @@ -2,12 +2,16 @@ import codeql.rust.elements import TestUtils -from LifetimeParam x, int getNumberOfAttrs, string hasLifetime, string hasTypeBoundList -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasLifetime() then hasLifetime = "yes" else hasLifetime = "no") and - if x.hasTypeBoundList() then hasTypeBoundList = "yes" else hasTypeBoundList = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasLifetime:", hasLifetime, "hasTypeBoundList:", - hasTypeBoundList +query predicate instances(LifetimeParam x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(LifetimeParam x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getLifetime(LifetimeParam x, Lifetime getLifetime) { + toBeTested(x) and not x.isUnknown() and getLifetime = x.getLifetime() +} + +query predicate getTypeBoundList(LifetimeParam x, TypeBoundList getTypeBoundList) { + toBeTested(x) and not x.isUnknown() and getTypeBoundList = x.getTypeBoundList() +} diff --git a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getAttr.expected b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getAttr.ql b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getAttr.ql deleted file mode 100644 index 6053ca9b5fea..000000000000 --- a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LifetimeParam x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getLifetime.expected b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getLifetime.expected deleted file mode 100644 index 1d1bc5bf0b02..000000000000 --- a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getLifetime.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/LifetimeParam_getLifetime.ql b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getLifetime.ql deleted file mode 100644 index 0cc315fabe0f..000000000000 --- a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getLifetime.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LifetimeParam x -where toBeTested(x) and not x.isUnknown() -select x, x.getLifetime() diff --git a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getTypeBoundList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getTypeBoundList.ql b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getTypeBoundList.ql deleted file mode 100644 index 673701670844..000000000000 --- a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getTypeBoundList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LifetimeParam x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeBoundList() diff --git a/rust/ql/test/extractor-tests/generated/LiteralExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/LiteralExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/LiteralExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr.expected b/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr.expected index afe42a48f8f0..1cd7c4573ee6 100644 --- a/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr.expected +++ b/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr.expected @@ -1,8 +1,19 @@ -| gen_literal_expr.rs:5:5:5:6 | 42 | getNumberOfAttrs: | 0 | hasTextValue: | yes | -| gen_literal_expr.rs:6:5:6:8 | 42.0 | getNumberOfAttrs: | 0 | hasTextValue: | yes | -| gen_literal_expr.rs:7:5:7:19 | "Hello, world!" | getNumberOfAttrs: | 0 | hasTextValue: | yes | -| gen_literal_expr.rs:8:5:8:20 | b"Hello, world!" | getNumberOfAttrs: | 0 | hasTextValue: | yes | -| gen_literal_expr.rs:9:5:9:7 | 'x' | getNumberOfAttrs: | 0 | hasTextValue: | yes | -| gen_literal_expr.rs:10:5:10:8 | b'x' | getNumberOfAttrs: | 0 | hasTextValue: | yes | -| gen_literal_expr.rs:11:5:11:20 | r"Hello, world!" | getNumberOfAttrs: | 0 | hasTextValue: | yes | -| gen_literal_expr.rs:12:5:12:8 | true | getNumberOfAttrs: | 0 | hasTextValue: | yes | +instances +| gen_literal_expr.rs:5:5:5:6 | 42 | +| gen_literal_expr.rs:6:5:6:8 | 42.0 | +| gen_literal_expr.rs:7:5:7:19 | "Hello, world!" | +| gen_literal_expr.rs:8:5:8:20 | b"Hello, world!" | +| gen_literal_expr.rs:9:5:9:7 | 'x' | +| gen_literal_expr.rs:10:5:10:8 | b'x' | +| gen_literal_expr.rs:11:5:11:20 | r"Hello, world!" | +| gen_literal_expr.rs:12:5:12:8 | true | +getAttr +getTextValue +| gen_literal_expr.rs:5:5:5:6 | 42 | 42 | +| gen_literal_expr.rs:6:5:6:8 | 42.0 | 42.0 | +| gen_literal_expr.rs:7:5:7:19 | "Hello, world!" | "Hello, world!" | +| gen_literal_expr.rs:8:5:8:20 | b"Hello, world!" | b"Hello, world!" | +| gen_literal_expr.rs:9:5:9:7 | 'x' | 'x' | +| gen_literal_expr.rs:10:5:10:8 | b'x' | b'x' | +| gen_literal_expr.rs:11:5:11:20 | r"Hello, world!" | r"Hello, world!" | +| gen_literal_expr.rs:12:5:12:8 | true | true | diff --git a/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr.ql b/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr.ql index c33f15d8aff2..0b49e28cff23 100644 --- a/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr.ql +++ b/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from LiteralExpr x, int getNumberOfAttrs, string hasTextValue -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - if x.hasTextValue() then hasTextValue = "yes" else hasTextValue = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasTextValue:", hasTextValue +query predicate instances(LiteralExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(LiteralExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getTextValue(LiteralExpr x, string getTextValue) { + toBeTested(x) and not x.isUnknown() and getTextValue = x.getTextValue() +} diff --git a/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr_getAttr.ql deleted file mode 100644 index a4362a3ea725..000000000000 --- a/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LiteralExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr_getTextValue.expected b/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr_getTextValue.expected deleted file mode 100644 index c41aeee97ec6..000000000000 --- a/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr_getTextValue.expected +++ /dev/null @@ -1,8 +0,0 @@ -| gen_literal_expr.rs:5:5:5:6 | 42 | 42 | -| gen_literal_expr.rs:6:5:6:8 | 42.0 | 42.0 | -| gen_literal_expr.rs:7:5:7:19 | "Hello, world!" | "Hello, world!" | -| gen_literal_expr.rs:8:5:8:20 | b"Hello, world!" | b"Hello, world!" | -| gen_literal_expr.rs:9:5:9:7 | 'x' | 'x' | -| gen_literal_expr.rs:10:5:10:8 | b'x' | b'x' | -| gen_literal_expr.rs:11:5:11:20 | r"Hello, world!" | r"Hello, world!" | -| gen_literal_expr.rs:12:5:12:8 | true | true | diff --git a/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr_getTextValue.ql b/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr_getTextValue.ql deleted file mode 100644 index 147110b9333d..000000000000 --- a/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr_getTextValue.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LiteralExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getTextValue() diff --git a/rust/ql/test/extractor-tests/generated/LiteralPat/Cargo.lock b/rust/ql/test/extractor-tests/generated/LiteralPat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/LiteralPat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat.expected b/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat.expected index d4734ef3dac3..104913be1a1a 100644 --- a/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat.expected +++ b/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat.expected @@ -1 +1,4 @@ -| gen_literal_pat.rs:6:9:6:10 | 42 | hasLiteral: | yes | +instances +| gen_literal_pat.rs:6:9:6:10 | 42 | +getLiteral +| gen_literal_pat.rs:6:9:6:10 | 42 | gen_literal_pat.rs:6:9:6:10 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat.ql b/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat.ql index 6052b07a005f..ede495337268 100644 --- a/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat.ql +++ b/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from LiteralPat x, string hasLiteral -where - toBeTested(x) and - not x.isUnknown() and - if x.hasLiteral() then hasLiteral = "yes" else hasLiteral = "no" -select x, "hasLiteral:", hasLiteral +query predicate instances(LiteralPat x) { toBeTested(x) and not x.isUnknown() } + +query predicate getLiteral(LiteralPat x, LiteralExpr getLiteral) { + toBeTested(x) and not x.isUnknown() and getLiteral = x.getLiteral() +} diff --git a/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat_getLiteral.expected b/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat_getLiteral.expected deleted file mode 100644 index 487f239737bc..000000000000 --- a/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat_getLiteral.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_literal_pat.rs:6:9:6:10 | 42 | gen_literal_pat.rs:6:9:6:10 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat_getLiteral.ql b/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat_getLiteral.ql deleted file mode 100644 index ca6ff418b1ad..000000000000 --- a/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat_getLiteral.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LiteralPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getLiteral() diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/LoopExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/LoopExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.expected b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.expected index b0adbe40897f..970ebd6911b8 100644 --- a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.expected +++ b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.expected @@ -1,3 +1,11 @@ -| gen_loop_expr.rs:5:5:7:5 | loop { ... } | hasLabel: | no | hasLoopBody: | yes | getNumberOfAttrs: | 0 | -| gen_loop_expr.rs:8:5:11:5 | 'label: loop { ... } | hasLabel: | yes | hasLoopBody: | yes | getNumberOfAttrs: | 0 | -| gen_loop_expr.rs:13:5:19:5 | loop { ... } | hasLabel: | no | hasLoopBody: | yes | getNumberOfAttrs: | 0 | +instances +| gen_loop_expr.rs:5:5:7:5 | loop { ... } | +| gen_loop_expr.rs:8:5:11:5 | 'label: loop { ... } | +| gen_loop_expr.rs:13:5:19:5 | loop { ... } | +getLabel +| gen_loop_expr.rs:8:5:11:5 | 'label: loop { ... } | gen_loop_expr.rs:8:5:8:11 | 'label | +getLoopBody +| gen_loop_expr.rs:5:5:7:5 | loop { ... } | gen_loop_expr.rs:5:10:7:5 | { ... } | +| gen_loop_expr.rs:8:5:11:5 | 'label: loop { ... } | gen_loop_expr.rs:8:18:11:5 | { ... } | +| gen_loop_expr.rs:13:5:19:5 | loop { ... } | gen_loop_expr.rs:13:10:19:5 | { ... } | +getAttr diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.ql b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.ql index 92248ab5ec07..c266b1c064e2 100644 --- a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.ql +++ b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.ql @@ -2,11 +2,16 @@ import codeql.rust.elements import TestUtils -from LoopExpr x, string hasLabel, string hasLoopBody, int getNumberOfAttrs -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasLabel() then hasLabel = "yes" else hasLabel = "no") and - (if x.hasLoopBody() then hasLoopBody = "yes" else hasLoopBody = "no") and - getNumberOfAttrs = x.getNumberOfAttrs() -select x, "hasLabel:", hasLabel, "hasLoopBody:", hasLoopBody, "getNumberOfAttrs:", getNumberOfAttrs +query predicate instances(LoopExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getLabel(LoopExpr x, Label getLabel) { + toBeTested(x) and not x.isUnknown() and getLabel = x.getLabel() +} + +query predicate getLoopBody(LoopExpr x, BlockExpr getLoopBody) { + toBeTested(x) and not x.isUnknown() and getLoopBody = x.getLoopBody() +} + +query predicate getAttr(LoopExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getAttr.ql deleted file mode 100644 index 6367edb64216..000000000000 --- a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LoopExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.expected b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.expected deleted file mode 100644 index e2dc2fdf8950..000000000000 --- a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_loop_expr.rs:8:5:11:5 | 'label: loop { ... } | gen_loop_expr.rs:8:5:8:11 | 'label | diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.ql b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.ql deleted file mode 100644 index 9617abd7f346..000000000000 --- a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LoopExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getLabel() diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.expected b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.expected deleted file mode 100644 index 9cf0c64dd0b8..000000000000 --- a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.expected +++ /dev/null @@ -1,3 +0,0 @@ -| gen_loop_expr.rs:5:5:7:5 | loop { ... } | gen_loop_expr.rs:5:10:7:5 | { ... } | -| gen_loop_expr.rs:8:5:11:5 | 'label: loop { ... } | gen_loop_expr.rs:8:18:11:5 | { ... } | -| gen_loop_expr.rs:13:5:19:5 | loop { ... } | gen_loop_expr.rs:13:10:19:5 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.ql b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.ql deleted file mode 100644 index bd44b0ac7333..000000000000 --- a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from LoopExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getLoopBody() diff --git a/rust/ql/test/extractor-tests/generated/MacroBlockExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/MacroBlockExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MacroBlockExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr.expected b/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr.expected index 4bf0740b930f..67d330d937e1 100644 --- a/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr.expected +++ b/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr.expected @@ -1 +1,5 @@ -| gen_macro_block_expr.rs:5:14:5:28 | MacroBlockExpr | hasTailExpr: | yes | getNumberOfStatements: | 0 | +instances +| gen_macro_block_expr.rs:5:14:5:28 | MacroBlockExpr | +getTailExpr +| gen_macro_block_expr.rs:5:14:5:28 | MacroBlockExpr | gen_macro_block_expr.rs:5:14:5:28 | { ... } | +getStatement diff --git a/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr.ql b/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr.ql index c003ca232f1e..82502ad4ec0d 100644 --- a/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr.ql +++ b/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from MacroBlockExpr x, string hasTailExpr, int getNumberOfStatements -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasTailExpr() then hasTailExpr = "yes" else hasTailExpr = "no") and - getNumberOfStatements = x.getNumberOfStatements() -select x, "hasTailExpr:", hasTailExpr, "getNumberOfStatements:", getNumberOfStatements +query predicate instances(MacroBlockExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getTailExpr(MacroBlockExpr x, Expr getTailExpr) { + toBeTested(x) and not x.isUnknown() and getTailExpr = x.getTailExpr() +} + +query predicate getStatement(MacroBlockExpr x, int index, Stmt getStatement) { + toBeTested(x) and not x.isUnknown() and getStatement = x.getStatement(index) +} diff --git a/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getStatement.expected b/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getStatement.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getStatement.ql b/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getStatement.ql deleted file mode 100644 index a5d58c0e32d1..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getStatement.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroBlockExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getStatement(index) diff --git a/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getTailExpr.expected b/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getTailExpr.expected deleted file mode 100644 index ed7fbf364cf0..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getTailExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_macro_block_expr.rs:5:14:5:28 | MacroBlockExpr | gen_macro_block_expr.rs:5:14:5:28 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getTailExpr.ql b/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getTailExpr.ql deleted file mode 100644 index 4fdb10bc3513..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getTailExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroBlockExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getTailExpr() diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/Cargo.lock b/rust/ql/test/extractor-tests/generated/MacroCall/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MacroCall/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.expected index 1192db0ba7ea..0fae1d5e49da 100644 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.expected +++ b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.expected @@ -1,2 +1,16 @@ -| 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 | +instances +| gen_macro_call.rs:7:5:7:29 | println!... | +| gen_macro_call.rs:7:14:7:28 | ...::format_args_nl!... | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getAttr +getPath +| 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 | +getTokenTree +| 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 | +getMacroCallExpansion +| 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.ql b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.ql index b9461abfcf18..48fddccf341e 100644 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.ql +++ b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.ql @@ -2,29 +2,34 @@ import codeql.rust.elements import TestUtils -from - MacroCall x, string hasExtendedCanonicalPath, string hasCrateOrigin, - string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasPath, string hasTokenTree, - string hasMacroCallExpansion -where +query predicate instances(MacroCall x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExtendedCanonicalPath(MacroCall x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(MacroCall x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(MacroCall x, MacroItems getAttributeMacroExpansion) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasPath() then hasPath = "yes" else hasPath = "no") and - (if x.hasTokenTree() then hasTokenTree = "yes" else hasTokenTree = "no") and - if x.hasMacroCallExpansion() then hasMacroCallExpansion = "yes" else hasMacroCallExpansion = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs, - "hasPath:", hasPath, "hasTokenTree:", hasTokenTree, "hasMacroCallExpansion:", - hasMacroCallExpansion + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getAttr(MacroCall x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getPath(MacroCall x, Path getPath) { + toBeTested(x) and not x.isUnknown() and getPath = x.getPath() +} + +query predicate getTokenTree(MacroCall x, TokenTree getTokenTree) { + toBeTested(x) and not x.isUnknown() and getTokenTree = x.getTokenTree() +} + +query predicate getMacroCallExpansion(MacroCall x, AstNode getMacroCallExpansion) { + toBeTested(x) and not x.isUnknown() and getMacroCallExpansion = x.getMacroCallExpansion() +} diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getAttr.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getAttr.ql b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getAttr.ql deleted file mode 100644 index ef6a94400f02..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroCall x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getAttributeMacroExpansion.ql deleted file mode 100644 index 7931273e757e..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroCall x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getCrateOrigin.ql deleted file mode 100644 index 60e32669e7fc..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroCall x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getExtendedCanonicalPath.ql deleted file mode 100644 index 0fffb4f4384e..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroCall x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getMacroCallExpansion.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getMacroCallExpansion.expected deleted file mode 100644 index e93d36c8ac27..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getMacroCallExpansion.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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_getMacroCallExpansion.ql b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getMacroCallExpansion.ql deleted file mode 100644 index 6ce5fd6e7c88..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getMacroCallExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroCall x -where toBeTested(x) and not x.isUnknown() -select x, x.getMacroCallExpansion() diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getPath.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getPath.expected deleted file mode 100644 index 0f17b0ddd121..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getPath.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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_getPath.ql b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getPath.ql deleted file mode 100644 index 729ce15fb3f6..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroCall x -where toBeTested(x) and not x.isUnknown() -select x, x.getPath() diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.expected deleted file mode 100644 index 833429dd94fe..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/MacroCall_getTokenTree.ql b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.ql deleted file mode 100644 index 3186e5c62974..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroCall x -where toBeTested(x) and not x.isUnknown() -select x, x.getTokenTree() diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/Cargo.lock b/rust/ql/test/extractor-tests/generated/MacroDef/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MacroDef/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.expected index 2aa118cbfbc4..b9b6ddc10cd1 100644 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.expected +++ b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.expected @@ -1 +1,14 @@ -| 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 | +instances +| gen_macro_def.rs:4:5:9:5 | MacroDef | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getArgs +| gen_macro_def.rs:4:5:9:5 | MacroDef | gen_macro_def.rs:7:25:7:39 | TokenTree | +getAttr +getBody +| gen_macro_def.rs:4:5:9:5 | MacroDef | gen_macro_def.rs:7:41:9:5 | TokenTree | +getName +| gen_macro_def.rs:4:5:9:5 | MacroDef | gen_macro_def.rs:7:15:7:24 | vec_of_two | +getVisibility +| 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/MacroDef.ql b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.ql index 3ec25748abd4..e85173597cb6 100644 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.ql +++ b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.ql @@ -2,30 +2,38 @@ import codeql.rust.elements import TestUtils -from - MacroDef x, string hasExtendedCanonicalPath, string hasCrateOrigin, - string hasAttributeMacroExpansion, string hasArgs, int getNumberOfAttrs, string hasBody, - string hasName, string hasVisibility -where +query predicate instances(MacroDef x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExtendedCanonicalPath(MacroDef x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(MacroDef x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(MacroDef x, MacroItems getAttributeMacroExpansion) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - (if x.hasArgs() then hasArgs = "yes" else hasArgs = "no") and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasBody() then hasBody = "yes" else hasBody = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "hasArgs:", hasArgs, - "getNumberOfAttrs:", getNumberOfAttrs, "hasBody:", hasBody, "hasName:", hasName, "hasVisibility:", - hasVisibility + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getArgs(MacroDef x, TokenTree getArgs) { + toBeTested(x) and not x.isUnknown() and getArgs = x.getArgs() +} + +query predicate getAttr(MacroDef x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getBody(MacroDef x, TokenTree getBody) { + toBeTested(x) and not x.isUnknown() and getBody = x.getBody() +} + +query predicate getName(MacroDef x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getVisibility(MacroDef x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getArgs.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getArgs.expected deleted file mode 100644 index fecd14ff2baa..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getArgs.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getArgs.ql b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getArgs.ql deleted file mode 100644 index 304f6f8d5e33..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getArgs.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroDef x -where toBeTested(x) and not x.isUnknown() -select x, x.getArgs() diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getAttr.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getAttr.ql b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getAttr.ql deleted file mode 100644 index 28e5f418c01c..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroDef x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getAttributeMacroExpansion.ql deleted file mode 100644 index be2992839166..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroDef x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getBody.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getBody.expected deleted file mode 100644 index 776a64f484a0..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getBody.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getBody.ql b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getBody.ql deleted file mode 100644 index 0c2f4e329fdb..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getBody.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroDef x -where toBeTested(x) and not x.isUnknown() -select x, x.getBody() diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getCrateOrigin.ql deleted file mode 100644 index 81aa4aa3fadc..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroDef x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getExtendedCanonicalPath.ql deleted file mode 100644 index c30de43e669c..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroDef x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getName.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getName.expected deleted file mode 100644 index 7b7e532ab2e4..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getName.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getName.ql b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getName.ql deleted file mode 100644 index 49cba18e277b..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroDef x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getVisibility.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getVisibility.expected deleted file mode 100644 index 74234db763b6..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getVisibility.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/MacroDef_getVisibility.ql b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getVisibility.ql deleted file mode 100644 index 11323b3a581e..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroDef x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/MacroExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/MacroExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MacroExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr.expected b/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr.expected index 819ac71ef403..32cb0efaaef9 100644 --- a/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr.expected +++ b/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr.expected @@ -1 +1,4 @@ -| gen_macro_expr.rs:7:13:7:25 | MacroExpr | hasMacroCall: | yes | +instances +| gen_macro_expr.rs:7:13:7:25 | MacroExpr | +getMacroCall +| 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/MacroExpr.ql b/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr.ql index a2c2d4315125..0787ed7392c2 100644 --- a/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr.ql +++ b/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from MacroExpr x, string hasMacroCall -where - toBeTested(x) and - not x.isUnknown() and - if x.hasMacroCall() then hasMacroCall = "yes" else hasMacroCall = "no" -select x, "hasMacroCall:", hasMacroCall +query predicate instances(MacroExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getMacroCall(MacroExpr x, MacroCall getMacroCall) { + toBeTested(x) and not x.isUnknown() and getMacroCall = x.getMacroCall() +} diff --git a/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.expected b/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.expected deleted file mode 100644 index 493f2f882918..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/MacroExpr_getMacroCall.ql b/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.ql deleted file mode 100644 index 7c1d6c44c26a..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getMacroCall() diff --git a/rust/ql/test/extractor-tests/generated/MacroItems/Cargo.lock b/rust/ql/test/extractor-tests/generated/MacroItems/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MacroItems/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.expected b/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.expected index 651c7cdec66e..90daafd58170 100644 --- a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.expected +++ b/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.expected @@ -1 +1,7 @@ -| gen_macro_items.rs:5:5:5:38 | MacroItems | getNumberOfItems: | 2 | +instances +| gen_macro_items.rs:5:5:5:38 | MacroItems | +| gen_macro_items.rs:13:12:13:14 | MacroItems | +getItem +| gen_macro_items.rs:5:5:5:38 | MacroItems | 0 | gen_macro_items.rs:5:5:5:38 | use ...::Path | +| gen_macro_items.rs:5:5:5:38 | MacroItems | 1 | gen_macro_items.rs:5:5:5:38 | fn get_parent | +| gen_macro_items.rs:13:12:13:14 | MacroItems | 0 | gen_macro_items.rs:13:12:13:14 | impl ...::Debug for Bar::<...> { ... } | diff --git a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.ql b/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.ql index cd72b24c18d9..3a9cd1c84998 100644 --- a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.ql +++ b/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from MacroItems x, int getNumberOfItems -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfItems = x.getNumberOfItems() -select x, "getNumberOfItems:", getNumberOfItems +query predicate instances(MacroItems x) { toBeTested(x) and not x.isUnknown() } + +query predicate getItem(MacroItems x, int index, Item getItem) { + toBeTested(x) and not x.isUnknown() and getItem = x.getItem(index) +} diff --git a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems_getItem.expected b/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems_getItem.expected deleted file mode 100644 index e86dfee101a5..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems_getItem.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_macro_items.rs:5:5:5:38 | MacroItems | 0 | gen_macro_items.rs:5:5:5:38 | use ...::Path | -| gen_macro_items.rs:5:5:5:38 | MacroItems | 1 | gen_macro_items.rs:5:5:5:38 | fn get_parent | diff --git a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems_getItem.ql b/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems_getItem.ql deleted file mode 100644 index 09aaa2b8be7a..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems_getItem.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroItems x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getItem(index) diff --git a/rust/ql/test/extractor-tests/generated/MacroPat/Cargo.lock b/rust/ql/test/extractor-tests/generated/MacroPat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MacroPat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat.expected b/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat.expected index b56789484ffd..029b75549879 100644 --- a/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat.expected +++ b/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat.expected @@ -1 +1,4 @@ -| gen_macro_pat.rs:13:9:13:19 | MacroPat | hasMacroCall: | yes | +instances +| gen_macro_pat.rs:13:9:13:19 | MacroPat | +getMacroCall +| 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/MacroPat.ql b/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat.ql index d54889e043b4..6d9d7ba17fd3 100644 --- a/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat.ql +++ b/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from MacroPat x, string hasMacroCall -where - toBeTested(x) and - not x.isUnknown() and - if x.hasMacroCall() then hasMacroCall = "yes" else hasMacroCall = "no" -select x, "hasMacroCall:", hasMacroCall +query predicate instances(MacroPat x) { toBeTested(x) and not x.isUnknown() } + +query predicate getMacroCall(MacroPat x, MacroCall getMacroCall) { + toBeTested(x) and not x.isUnknown() and getMacroCall = x.getMacroCall() +} diff --git a/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat_getMacroCall.expected b/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat_getMacroCall.expected deleted file mode 100644 index faa6c1d7e6d4..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat_getMacroCall.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/MacroPat_getMacroCall.ql b/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat_getMacroCall.ql deleted file mode 100644 index 9c8f0846ede4..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat_getMacroCall.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getMacroCall() diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/Cargo.lock b/rust/ql/test/extractor-tests/generated/MacroRules/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MacroRules/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.expected b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.expected index db582f99f87f..4bfb98220f23 100644 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.expected +++ b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.expected @@ -1 +1,11 @@ -| gen_macro_rules.rs:4:5:9:5 | MacroRules | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasName: | yes | hasTokenTree: | yes | hasVisibility: | no | +instances +| gen_macro_rules.rs:4:5:9:5 | MacroRules | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getAttr +getName +| gen_macro_rules.rs:4:5:9:5 | MacroRules | gen_macro_rules.rs:5:18:5:25 | my_macro | +getTokenTree +| gen_macro_rules.rs:4:5:9:5 | MacroRules | gen_macro_rules.rs:5:27:9:5 | TokenTree | +getVisibility diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.ql b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.ql index 5e1ebacd573f..ef051f77c9ee 100644 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.ql +++ b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.ql @@ -2,28 +2,34 @@ import codeql.rust.elements import TestUtils -from - MacroRules x, string hasExtendedCanonicalPath, string hasCrateOrigin, - string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasName, string hasTokenTree, - string hasVisibility -where +query predicate instances(MacroRules x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExtendedCanonicalPath(MacroRules x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(MacroRules x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(MacroRules x, MacroItems getAttributeMacroExpansion) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasName() then hasName = "yes" else hasName = "no") and - (if x.hasTokenTree() then hasTokenTree = "yes" else hasTokenTree = "no") and - if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs, - "hasName:", hasName, "hasTokenTree:", hasTokenTree, "hasVisibility:", hasVisibility + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getAttr(MacroRules x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getName(MacroRules x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getTokenTree(MacroRules x, TokenTree getTokenTree) { + toBeTested(x) and not x.isUnknown() and getTokenTree = x.getTokenTree() +} + +query predicate getVisibility(MacroRules x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getAttr.expected b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getAttr.ql b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getAttr.ql deleted file mode 100644 index 4fa5d762c629..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroRules x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getAttributeMacroExpansion.ql deleted file mode 100644 index b7b01f36fe70..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroRules x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getCrateOrigin.ql deleted file mode 100644 index 987a91f57068..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroRules x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getExtendedCanonicalPath.ql deleted file mode 100644 index b2fa0cc9f7e9..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroRules x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getName.expected b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getName.expected deleted file mode 100644 index 08044386ded5..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getName.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getName.ql b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getName.ql deleted file mode 100644 index 7a1fd49401aa..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroRules x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getTokenTree.expected b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getTokenTree.expected deleted file mode 100644 index 9aafcc373892..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getTokenTree.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/MacroRules_getTokenTree.ql b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getTokenTree.ql deleted file mode 100644 index 7fae79438fcb..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getTokenTree.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroRules x -where toBeTested(x) and not x.isUnknown() -select x, x.getTokenTree() diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getVisibility.expected b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getVisibility.ql b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getVisibility.ql deleted file mode 100644 index bd50e49e339c..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroRules x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/MacroTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.expected b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.expected index 2f91b7f8d007..4047903cc5e1 100644 --- a/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.expected @@ -1 +1,4 @@ -| gen_macro_type_repr.rs:10:14:10:26 | MacroTypeRepr | hasMacroCall: | yes | +instances +| gen_macro_type_repr.rs:10:14:10:26 | MacroTypeRepr | +getMacroCall +| 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/MacroTypeRepr.ql b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.ql index 466d4cf04054..d946ec6d05d3 100644 --- a/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from MacroTypeRepr x, string hasMacroCall -where - toBeTested(x) and - not x.isUnknown() and - if x.hasMacroCall() then hasMacroCall = "yes" else hasMacroCall = "no" -select x, "hasMacroCall:", hasMacroCall +query predicate instances(MacroTypeRepr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getMacroCall(MacroTypeRepr x, MacroCall getMacroCall) { + toBeTested(x) and not x.isUnknown() and getMacroCall = x.getMacroCall() +} diff --git a/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr_getMacroCall.expected b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr_getMacroCall.expected deleted file mode 100644 index 896e3e199b2c..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr_getMacroCall.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/MacroTypeRepr_getMacroCall.ql b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr_getMacroCall.ql deleted file mode 100644 index 22aa72d039bb..000000000000 --- a/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr_getMacroCall.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MacroTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getMacroCall() diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/Cargo.lock b/rust/ql/test/extractor-tests/generated/MatchArm/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MatchArm/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.expected b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.expected index b3eb4c178b26..964af263cd79 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.expected +++ b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.expected @@ -1,4 +1,18 @@ -| gen_match_arm.rs:6:9:6:29 | ... => y | getNumberOfAttrs: | 0 | hasExpr: | yes | hasGuard: | no | hasPat: | yes | -| gen_match_arm.rs:7:9:7:26 | ...::None => 0 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasGuard: | no | hasPat: | yes | -| gen_match_arm.rs:10:9:10:35 | ... if ... => ... | getNumberOfAttrs: | 0 | hasExpr: | yes | hasGuard: | yes | hasPat: | yes | -| gen_match_arm.rs:11:9:11:15 | _ => 0 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasGuard: | no | hasPat: | yes | +instances +| gen_match_arm.rs:6:9:6:29 | ... => y | +| gen_match_arm.rs:7:9:7:26 | ...::None => 0 | +| gen_match_arm.rs:10:9:10:35 | ... if ... => ... | +| gen_match_arm.rs:11:9:11:15 | _ => 0 | +getAttr +getExpr +| gen_match_arm.rs:6:9:6:29 | ... => y | gen_match_arm.rs:6:28:6:28 | y | +| gen_match_arm.rs:7:9:7:26 | ...::None => 0 | gen_match_arm.rs:7:25:7:25 | 0 | +| gen_match_arm.rs:10:9:10:35 | ... if ... => ... | gen_match_arm.rs:10:30:10:34 | ... / ... | +| gen_match_arm.rs:11:9:11:15 | _ => 0 | gen_match_arm.rs:11:14:11:14 | 0 | +getGuard +| gen_match_arm.rs:10:9:10:35 | ... if ... => ... | gen_match_arm.rs:10:17:10:25 | MatchGuard | +getPat +| gen_match_arm.rs:6:9:6:29 | ... => y | gen_match_arm.rs:6:9:6:23 | ...::Some(...) | +| gen_match_arm.rs:7:9:7:26 | ...::None => 0 | gen_match_arm.rs:7:9:7:20 | ...::None | +| gen_match_arm.rs:10:9:10:35 | ... if ... => ... | gen_match_arm.rs:10:9:10:15 | Some(...) | +| gen_match_arm.rs:11:9:11:15 | _ => 0 | gen_match_arm.rs:11:9:11:9 | _ | diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.ql b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.ql index 9161cdadf73d..11450061ab03 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.ql +++ b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.ql @@ -2,13 +2,20 @@ import codeql.rust.elements import TestUtils -from MatchArm x, int getNumberOfAttrs, string hasExpr, string hasGuard, string hasPat -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasExpr() then hasExpr = "yes" else hasExpr = "no") and - (if x.hasGuard() then hasGuard = "yes" else hasGuard = "no") and - if x.hasPat() then hasPat = "yes" else hasPat = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasExpr:", hasExpr, "hasGuard:", hasGuard, - "hasPat:", hasPat +query predicate instances(MatchArm x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(MatchArm x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExpr(MatchArm x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} + +query predicate getGuard(MatchArm x, MatchGuard getGuard) { + toBeTested(x) and not x.isUnknown() and getGuard = x.getGuard() +} + +query predicate getPat(MatchArm x, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat() +} diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getAttr.expected b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getAttr.ql b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getAttr.ql deleted file mode 100644 index d86de1bb46dc..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MatchArm x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getExpr.expected b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getExpr.expected deleted file mode 100644 index 95d4a7fc2f22..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getExpr.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_match_arm.rs:6:9:6:29 | ... => y | gen_match_arm.rs:6:28:6:28 | y | -| gen_match_arm.rs:7:9:7:26 | ...::None => 0 | gen_match_arm.rs:7:25:7:25 | 0 | -| gen_match_arm.rs:10:9:10:35 | ... if ... => ... | gen_match_arm.rs:10:30:10:34 | ... / ... | -| gen_match_arm.rs:11:9:11:15 | _ => 0 | gen_match_arm.rs:11:14:11:14 | 0 | diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getExpr.ql b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getExpr.ql deleted file mode 100644 index b488c8cd7ada..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MatchArm x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getGuard.expected b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getGuard.expected deleted file mode 100644 index 002917455476..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getGuard.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_match_arm.rs:10:9:10:35 | ... if ... => ... | gen_match_arm.rs:10:17:10:25 | MatchGuard | diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getGuard.ql b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getGuard.ql deleted file mode 100644 index 508c72779ed7..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getGuard.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MatchArm x -where toBeTested(x) and not x.isUnknown() -select x, x.getGuard() diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getPat.expected b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getPat.expected deleted file mode 100644 index d4adba7f838b..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getPat.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_match_arm.rs:6:9:6:29 | ... => y | gen_match_arm.rs:6:9:6:23 | ...::Some(...) | -| gen_match_arm.rs:7:9:7:26 | ...::None => 0 | gen_match_arm.rs:7:9:7:20 | ...::None | -| gen_match_arm.rs:10:9:10:35 | ... if ... => ... | gen_match_arm.rs:10:9:10:15 | Some(...) | -| gen_match_arm.rs:11:9:11:15 | _ => 0 | gen_match_arm.rs:11:9:11:9 | _ | diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getPat.ql b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getPat.ql deleted file mode 100644 index ff83947901a0..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getPat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MatchArm x -where toBeTested(x) and not x.isUnknown() -select x, x.getPat() diff --git a/rust/ql/test/extractor-tests/generated/MatchArmList/Cargo.lock b/rust/ql/test/extractor-tests/generated/MatchArmList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MatchArmList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.expected b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.expected index 8a796ef9a55b..fec09a4f9baa 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.expected +++ b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.expected @@ -1 +1,7 @@ -| gen_match_arm_list.rs:7:13:11:5 | MatchArmList | getNumberOfArms: | 3 | getNumberOfAttrs: | 0 | +instances +| gen_match_arm_list.rs:7:13:11:5 | MatchArmList | +getArm +| 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" | +getAttr diff --git a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.ql b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.ql index be4583a9501c..5565aeafc7d2 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.ql +++ b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from MatchArmList x, int getNumberOfArms, int getNumberOfAttrs -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfArms = x.getNumberOfArms() and - getNumberOfAttrs = x.getNumberOfAttrs() -select x, "getNumberOfArms:", getNumberOfArms, "getNumberOfAttrs:", getNumberOfAttrs +query predicate instances(MatchArmList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getArm(MatchArmList x, int index, MatchArm getArm) { + toBeTested(x) and not x.isUnknown() and getArm = x.getArm(index) +} + +query predicate getAttr(MatchArmList x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} diff --git a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getArm.expected b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getArm.expected deleted file mode 100644 index 5a53f429e983..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getArm.expected +++ /dev/null @@ -1,3 +0,0 @@ -| 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/MatchArmList_getArm.ql b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getArm.ql deleted file mode 100644 index 3d29c5731586..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getArm.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MatchArmList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getArm(index) diff --git a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getAttr.expected b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getAttr.ql b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getAttr.ql deleted file mode 100644 index 0992c49ba305..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MatchArmList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/MatchExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MatchExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.expected b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.expected index 8c5b0a32a8fa..9648a7aa6c7e 100644 --- a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.expected +++ b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.expected @@ -1,2 +1,10 @@ -| gen_match_expr.rs:5:5:8:5 | match x { ... } | getNumberOfAttrs: | 0 | hasScrutinee: | yes | hasMatchArmList: | yes | -| gen_match_expr.rs:9:5:12:5 | match x { ... } | getNumberOfAttrs: | 0 | hasScrutinee: | yes | hasMatchArmList: | yes | +instances +| gen_match_expr.rs:5:5:8:5 | match x { ... } | +| gen_match_expr.rs:9:5:12:5 | match x { ... } | +getAttr +getScrutinee +| gen_match_expr.rs:5:5:8:5 | match x { ... } | gen_match_expr.rs:5:11:5:11 | x | +| gen_match_expr.rs:9:5:12:5 | match x { ... } | gen_match_expr.rs:9:11:9:11 | x | +getMatchArmList +| gen_match_expr.rs:5:5:8:5 | match x { ... } | gen_match_expr.rs:5:13:8:5 | MatchArmList | +| gen_match_expr.rs:9:5:12:5 | match x { ... } | gen_match_expr.rs:9:13:12:5 | MatchArmList | diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.ql b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.ql index 0847933e937c..c8cc9448d5e2 100644 --- a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.ql +++ b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.ql @@ -2,12 +2,16 @@ import codeql.rust.elements import TestUtils -from MatchExpr x, int getNumberOfAttrs, string hasScrutinee, string hasMatchArmList -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasScrutinee() then hasScrutinee = "yes" else hasScrutinee = "no") and - if x.hasMatchArmList() then hasMatchArmList = "yes" else hasMatchArmList = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasScrutinee:", hasScrutinee, "hasMatchArmList:", - hasMatchArmList +query predicate instances(MatchExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(MatchExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getScrutinee(MatchExpr x, Expr getScrutinee) { + toBeTested(x) and not x.isUnknown() and getScrutinee = x.getScrutinee() +} + +query predicate getMatchArmList(MatchExpr x, MatchArmList getMatchArmList) { + toBeTested(x) and not x.isUnknown() and getMatchArmList = x.getMatchArmList() +} diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getAttr.ql deleted file mode 100644 index 51c49a770739..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MatchExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getMatchArmList.expected b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getMatchArmList.expected deleted file mode 100644 index f5e25db5b39d..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getMatchArmList.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_match_expr.rs:5:5:8:5 | match x { ... } | gen_match_expr.rs:5:13:8:5 | MatchArmList | -| gen_match_expr.rs:9:5:12:5 | match x { ... } | gen_match_expr.rs:9:13:12:5 | MatchArmList | diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getMatchArmList.ql b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getMatchArmList.ql deleted file mode 100644 index d6dc36bfc919..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getMatchArmList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MatchExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getMatchArmList() diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getScrutinee.expected b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getScrutinee.expected deleted file mode 100644 index 427af7c6ed0c..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getScrutinee.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_match_expr.rs:5:5:8:5 | match x { ... } | gen_match_expr.rs:5:11:5:11 | x | -| gen_match_expr.rs:9:5:12:5 | match x { ... } | gen_match_expr.rs:9:11:9:11 | x | diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getScrutinee.ql b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getScrutinee.ql deleted file mode 100644 index 4d29f21fbfba..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getScrutinee.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MatchExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getScrutinee() diff --git a/rust/ql/test/extractor-tests/generated/MatchGuard/Cargo.lock b/rust/ql/test/extractor-tests/generated/MatchGuard/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MatchGuard/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard.expected b/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard.expected index 2005c2a1c3df..bcddfde4c267 100644 --- a/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard.expected +++ b/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard.expected @@ -1 +1,4 @@ -| gen_match_guard.rs:8:11:8:18 | MatchGuard | hasCondition: | yes | +instances +| gen_match_guard.rs:8:11:8:18 | MatchGuard | +getCondition +| 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/MatchGuard.ql b/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard.ql index d31138b1d957..b7051db22d6d 100644 --- a/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard.ql +++ b/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from MatchGuard x, string hasCondition -where - toBeTested(x) and - not x.isUnknown() and - if x.hasCondition() then hasCondition = "yes" else hasCondition = "no" -select x, "hasCondition:", hasCondition +query predicate instances(MatchGuard x) { toBeTested(x) and not x.isUnknown() } + +query predicate getCondition(MatchGuard x, Expr getCondition) { + toBeTested(x) and not x.isUnknown() and getCondition = x.getCondition() +} diff --git a/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard_getCondition.expected b/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard_getCondition.expected deleted file mode 100644 index e6d76089e714..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard_getCondition.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/MatchGuard_getCondition.ql b/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard_getCondition.ql deleted file mode 100644 index 1334666a960e..000000000000 --- a/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard_getCondition.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MatchGuard x -where toBeTested(x) and not x.isUnknown() -select x, x.getCondition() diff --git a/rust/ql/test/extractor-tests/generated/Meta/Cargo.lock b/rust/ql/test/extractor-tests/generated/Meta/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Meta/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Meta/Meta.expected b/rust/ql/test/extractor-tests/generated/Meta/Meta.expected index 0aa36a59d61a..92385fa4da98 100644 --- a/rust/ql/test/extractor-tests/generated/Meta/Meta.expected +++ b/rust/ql/test/extractor-tests/generated/Meta/Meta.expected @@ -1,2 +1,10 @@ -| 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 | +instances +| gen_meta.rs:7:7:7:46 | Meta | isUnsafe: | yes | +| gen_meta.rs:9:7:9:72 | Meta | isUnsafe: | no | +getExpr +| gen_meta.rs:7:7:7:46 | Meta | gen_meta.rs:7:27:7:45 | "reason_for_bypass" | +getPath +| 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 | +getTokenTree +| 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/Meta.ql b/rust/ql/test/extractor-tests/generated/Meta/Meta.ql index 72a0426d8098..dd054ea7e993 100644 --- a/rust/ql/test/extractor-tests/generated/Meta/Meta.ql +++ b/rust/ql/test/extractor-tests/generated/Meta/Meta.ql @@ -2,13 +2,21 @@ import codeql.rust.elements import TestUtils -from Meta x, string hasExpr, string isUnsafe, string hasPath, string hasTokenTree -where +query predicate instances(Meta x, string isUnsafe__label, string isUnsafe) { toBeTested(x) and not x.isUnknown() and - (if x.hasExpr() then hasExpr = "yes" else hasExpr = "no") and - (if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no") and - (if x.hasPath() then hasPath = "yes" else hasPath = "no") and - if x.hasTokenTree() then hasTokenTree = "yes" else hasTokenTree = "no" -select x, "hasExpr:", hasExpr, "isUnsafe:", isUnsafe, "hasPath:", hasPath, "hasTokenTree:", - hasTokenTree + isUnsafe__label = "isUnsafe:" and + if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no" +} + +query predicate getExpr(Meta x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} + +query predicate getPath(Meta x, Path getPath) { + toBeTested(x) and not x.isUnknown() and getPath = x.getPath() +} + +query predicate getTokenTree(Meta x, TokenTree getTokenTree) { + toBeTested(x) and not x.isUnknown() and getTokenTree = x.getTokenTree() +} diff --git a/rust/ql/test/extractor-tests/generated/Meta/Meta_getExpr.expected b/rust/ql/test/extractor-tests/generated/Meta/Meta_getExpr.expected deleted file mode 100644 index b4c0ec937342..000000000000 --- a/rust/ql/test/extractor-tests/generated/Meta/Meta_getExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getExpr.ql b/rust/ql/test/extractor-tests/generated/Meta/Meta_getExpr.ql deleted file mode 100644 index a93132dd15a9..000000000000 --- a/rust/ql/test/extractor-tests/generated/Meta/Meta_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Meta x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/Meta/Meta_getPath.expected b/rust/ql/test/extractor-tests/generated/Meta/Meta_getPath.expected deleted file mode 100644 index ad4a23a5e2a7..000000000000 --- a/rust/ql/test/extractor-tests/generated/Meta/Meta_getPath.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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_getPath.ql b/rust/ql/test/extractor-tests/generated/Meta/Meta_getPath.ql deleted file mode 100644 index 759c013a975e..000000000000 --- a/rust/ql/test/extractor-tests/generated/Meta/Meta_getPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Meta x -where toBeTested(x) and not x.isUnknown() -select x, x.getPath() diff --git a/rust/ql/test/extractor-tests/generated/Meta/Meta_getTokenTree.expected b/rust/ql/test/extractor-tests/generated/Meta/Meta_getTokenTree.expected deleted file mode 100644 index ffeca33dd3a3..000000000000 --- a/rust/ql/test/extractor-tests/generated/Meta/Meta_getTokenTree.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/Meta_getTokenTree.ql b/rust/ql/test/extractor-tests/generated/Meta/Meta_getTokenTree.ql deleted file mode 100644 index b0425a57bd37..000000000000 --- a/rust/ql/test/extractor-tests/generated/Meta/Meta_getTokenTree.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Meta x -where toBeTested(x) and not x.isUnknown() -select x, x.getTokenTree() diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/MethodCallExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MethodCallExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.expected b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.expected index 5862cd940812..61054a3841ad 100644 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.expected +++ b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.expected @@ -1,2 +1,20 @@ -| 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 | +instances +| gen_method_call_expr.rs:5:5:5:13 | x.foo(...) | +| gen_method_call_expr.rs:6:5:6:25 | x.foo(...) | +getArgList +| gen_method_call_expr.rs:5:5:5:13 | x.foo(...) | gen_method_call_expr.rs:5:10:5:13 | ArgList | +| gen_method_call_expr.rs:6:5:6:25 | x.foo(...) | gen_method_call_expr.rs:6:22:6:25 | ArgList | +getAttr +getArg +| 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 | +getResolvedPath +getResolvedCrateOrigin +getGenericArgList +| gen_method_call_expr.rs:6:5:6:25 | x.foo(...) | gen_method_call_expr.rs:6:10:6:21 | <...> | +getIdentifier +| gen_method_call_expr.rs:5:5:5:13 | x.foo(...) | gen_method_call_expr.rs:5:7:5:9 | foo | +| gen_method_call_expr.rs:6:5:6:25 | x.foo(...) | gen_method_call_expr.rs:6:7:6:9 | foo | +getReceiver +| gen_method_call_expr.rs:5:5:5:13 | x.foo(...) | gen_method_call_expr.rs:5:5:5:5 | x | +| gen_method_call_expr.rs:6:5:6:25 | x.foo(...) | gen_method_call_expr.rs:6:5:6:5 | x | diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql index d0b082f4523b..73ddf8e7d2e8 100644 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql +++ b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql @@ -2,23 +2,36 @@ import codeql.rust.elements import TestUtils -from - MethodCallExpr x, string hasArgList, int getNumberOfAttrs, 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 - (if x.hasResolvedPath() then hasResolvedPath = "yes" else hasResolvedPath = "no") and - ( - if x.hasResolvedCrateOrigin() - then hasResolvedCrateOrigin = "yes" - else hasResolvedCrateOrigin = "no" - ) and - (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 +query predicate instances(MethodCallExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getArgList(MethodCallExpr x, ArgList getArgList) { + toBeTested(x) and not x.isUnknown() and getArgList = x.getArgList() +} + +query predicate getAttr(MethodCallExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getArg(MethodCallExpr x, int index, Expr getArg) { + toBeTested(x) and not x.isUnknown() and getArg = x.getArg(index) +} + +query predicate getResolvedPath(MethodCallExpr x, string getResolvedPath) { + toBeTested(x) and not x.isUnknown() and getResolvedPath = x.getResolvedPath() +} + +query predicate getResolvedCrateOrigin(MethodCallExpr x, string getResolvedCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getResolvedCrateOrigin = x.getResolvedCrateOrigin() +} + +query predicate getGenericArgList(MethodCallExpr x, GenericArgList getGenericArgList) { + toBeTested(x) and not x.isUnknown() and getGenericArgList = x.getGenericArgList() +} + +query predicate getIdentifier(MethodCallExpr x, NameRef getIdentifier) { + toBeTested(x) and not x.isUnknown() and getIdentifier = x.getIdentifier() +} + +query predicate getReceiver(MethodCallExpr x, Expr getReceiver) { + toBeTested(x) and not x.isUnknown() and getReceiver = x.getReceiver() +} diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArgList.expected b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArgList.expected deleted file mode 100644 index c9d10231cd98..000000000000 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArgList.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_method_call_expr.rs:5:5:5:13 | x.foo(...) | gen_method_call_expr.rs:5:10:5:13 | ArgList | -| gen_method_call_expr.rs:6:5:6:25 | x.foo(...) | gen_method_call_expr.rs:6:22:6:25 | ArgList | diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArgList.ql b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArgList.ql deleted file mode 100644 index 3e6eb43ba1fe..000000000000 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArgList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MethodCallExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getArgList() diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getAttr.ql deleted file mode 100644 index 5cffc6cd43bd..000000000000 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.expected b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.expected deleted file mode 100644 index 51e1108ebb21..000000000000 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_method_call_expr.rs:6:5:6:25 | x.foo(...) | gen_method_call_expr.rs:6:10:6:21 | <...> | diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.ql b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.ql deleted file mode 100644 index d68ec9fa0ca1..000000000000 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MethodCallExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericArgList() diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getIdentifier.expected b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getIdentifier.expected deleted file mode 100644 index 9f20d2b07dd5..000000000000 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getIdentifier.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_method_call_expr.rs:5:5:5:13 | x.foo(...) | gen_method_call_expr.rs:5:7:5:9 | foo | -| gen_method_call_expr.rs:6:5:6:25 | x.foo(...) | gen_method_call_expr.rs:6:7:6:9 | foo | diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getIdentifier.ql b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getIdentifier.ql deleted file mode 100644 index f14399765d87..000000000000 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getIdentifier.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MethodCallExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getIdentifier() diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getReceiver.expected b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getReceiver.expected deleted file mode 100644 index b909a0f7793b..000000000000 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getReceiver.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_method_call_expr.rs:5:5:5:13 | x.foo(...) | gen_method_call_expr.rs:5:5:5:5 | x | -| gen_method_call_expr.rs:6:5:6:25 | x.foo(...) | gen_method_call_expr.rs:6:5:6:5 | x | diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getReceiver.ql b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getReceiver.ql deleted file mode 100644 index 853315863fbc..000000000000 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getReceiver.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MethodCallExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getReceiver() diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedCrateOrigin.ql deleted file mode 100644 index dfb292181331..000000000000 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MethodCallExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getResolvedCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedPath.expected b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedPath.ql b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedPath.ql deleted file mode 100644 index df94686cbf68..000000000000 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getResolvedPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from MethodCallExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getResolvedPath() diff --git a/rust/ql/test/extractor-tests/generated/Module/Cargo.lock b/rust/ql/test/extractor-tests/generated/Module/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Module/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Module/Module.expected b/rust/ql/test/extractor-tests/generated/Module/Module.expected index 9383e08f2815..a742b7145d30 100644 --- a/rust/ql/test/extractor-tests/generated/Module/Module.expected +++ b/rust/ql/test/extractor-tests/generated/Module/Module.expected @@ -1,3 +1,21 @@ -| gen_module.rs:3:1:4:8 | mod foo | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasItemList: | no | hasName: | yes | hasVisibility: | no | -| gen_module.rs:5:1:7:1 | mod bar | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasItemList: | yes | hasName: | yes | hasVisibility: | no | -| lib.rs:1:1:1:15 | mod gen_module | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasItemList: | no | hasName: | yes | hasVisibility: | no | +instances +| gen_module.rs:3:1:4:8 | mod foo | +| gen_module.rs:5:1:7:1 | mod bar | +| lib.rs:1:1:1:15 | mod gen_module | +getExtendedCanonicalPath +| gen_module.rs:3:1:4:8 | mod foo | crate::gen_module::foo | +| gen_module.rs:5:1:7:1 | mod bar | crate::gen_module::bar | +| lib.rs:1:1:1:15 | mod gen_module | crate::gen_module | +getCrateOrigin +| gen_module.rs:3:1:4:8 | mod foo | repo::test | +| gen_module.rs:5:1:7:1 | mod bar | repo::test | +| lib.rs:1:1:1:15 | mod gen_module | repo::test | +getAttributeMacroExpansion +getAttr +getItemList +| gen_module.rs:5:1:7:1 | mod bar | gen_module.rs:5:9:7:1 | ItemList | +getName +| gen_module.rs:3:1:4:8 | mod foo | gen_module.rs:4:5:4:7 | foo | +| gen_module.rs:5:1:7:1 | mod bar | gen_module.rs:5:5:5:7 | bar | +| lib.rs:1:1:1:15 | mod gen_module | lib.rs:1:5:1:14 | gen_module | +getVisibility diff --git a/rust/ql/test/extractor-tests/generated/Module/Module.ql b/rust/ql/test/extractor-tests/generated/Module/Module.ql index bd668e40b66a..48a141bbc1fe 100644 --- a/rust/ql/test/extractor-tests/generated/Module/Module.ql +++ b/rust/ql/test/extractor-tests/generated/Module/Module.ql @@ -2,28 +2,34 @@ import codeql.rust.elements import TestUtils -from - Module x, string hasExtendedCanonicalPath, string hasCrateOrigin, - string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasItemList, string hasName, - string hasVisibility -where +query predicate instances(Module x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExtendedCanonicalPath(Module x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(Module x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(Module x, MacroItems getAttributeMacroExpansion) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasItemList() then hasItemList = "yes" else hasItemList = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs, - "hasItemList:", hasItemList, "hasName:", hasName, "hasVisibility:", hasVisibility + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getAttr(Module x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getItemList(Module x, ItemList getItemList) { + toBeTested(x) and not x.isUnknown() and getItemList = x.getItemList() +} + +query predicate getName(Module x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getVisibility(Module x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getAttr.expected b/rust/ql/test/extractor-tests/generated/Module/Module_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getAttr.ql b/rust/ql/test/extractor-tests/generated/Module/Module_getAttr.ql deleted file mode 100644 index 1efd9a937c3b..000000000000 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Module x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/Module/Module_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/Module/Module_getAttributeMacroExpansion.ql deleted file mode 100644 index 1a7c70f63b67..000000000000 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Module x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Module/Module_getCrateOrigin.expected deleted file mode 100644 index 0164fbb8e29b..000000000000 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getCrateOrigin.expected +++ /dev/null @@ -1,3 +0,0 @@ -| gen_module.rs:3:1:4:8 | mod foo | repo::test | -| gen_module.rs:5:1:7:1 | mod bar | repo::test | -| lib.rs:1:1:1:15 | mod gen_module | repo::test | diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/Module/Module_getCrateOrigin.ql deleted file mode 100644 index 7a95cdcc772a..000000000000 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Module x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Module/Module_getExtendedCanonicalPath.expected deleted file mode 100644 index c573ef164ebe..000000000000 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getExtendedCanonicalPath.expected +++ /dev/null @@ -1,3 +0,0 @@ -| gen_module.rs:3:1:4:8 | mod foo | crate::gen_module::foo | -| gen_module.rs:5:1:7:1 | mod bar | crate::gen_module::bar | -| lib.rs:1:1:1:15 | mod gen_module | crate::gen_module | diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/Module/Module_getExtendedCanonicalPath.ql deleted file mode 100644 index 9c810fe65c67..000000000000 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Module x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getItemList.expected b/rust/ql/test/extractor-tests/generated/Module/Module_getItemList.expected deleted file mode 100644 index 8edc36efa738..000000000000 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getItemList.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_module.rs:5:1:7:1 | mod bar | gen_module.rs:5:9:7:1 | ItemList | diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getItemList.ql b/rust/ql/test/extractor-tests/generated/Module/Module_getItemList.ql deleted file mode 100644 index 0654df37918a..000000000000 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getItemList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Module x -where toBeTested(x) and not x.isUnknown() -select x, x.getItemList() diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getName.expected b/rust/ql/test/extractor-tests/generated/Module/Module_getName.expected deleted file mode 100644 index 1874862befe5..000000000000 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getName.expected +++ /dev/null @@ -1,3 +0,0 @@ -| gen_module.rs:3:1:4:8 | mod foo | gen_module.rs:4:5:4:7 | foo | -| gen_module.rs:5:1:7:1 | mod bar | gen_module.rs:5:5:5:7 | bar | -| lib.rs:1:1:1:15 | mod gen_module | lib.rs:1:5:1:14 | gen_module | diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getName.ql b/rust/ql/test/extractor-tests/generated/Module/Module_getName.ql deleted file mode 100644 index dbda0724b1ed..000000000000 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Module x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getVisibility.expected b/rust/ql/test/extractor-tests/generated/Module/Module_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getVisibility.ql b/rust/ql/test/extractor-tests/generated/Module/Module_getVisibility.ql deleted file mode 100644 index 064f520d6a78..000000000000 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Module x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/Name/Cargo.lock b/rust/ql/test/extractor-tests/generated/Name/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Name/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Name/Name.expected b/rust/ql/test/extractor-tests/generated/Name/Name.expected index 28a23a6d392e..2bcd496ef2ee 100644 --- a/rust/ql/test/extractor-tests/generated/Name/Name.expected +++ b/rust/ql/test/extractor-tests/generated/Name/Name.expected @@ -1,3 +1,8 @@ -| 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 | +instances +| gen_name.rs:3:4:3:12 | test_name | +| gen_name.rs:7:9:7:11 | foo | +| lib.rs:1:5:1:12 | gen_name | +getText +| 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/Name.ql b/rust/ql/test/extractor-tests/generated/Name/Name.ql index 6685f4f9b7ae..141042ac6a86 100644 --- a/rust/ql/test/extractor-tests/generated/Name/Name.ql +++ b/rust/ql/test/extractor-tests/generated/Name/Name.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from Name x, string hasText -where - toBeTested(x) and - not x.isUnknown() and - if x.hasText() then hasText = "yes" else hasText = "no" -select x, "hasText:", hasText +query predicate instances(Name x) { toBeTested(x) and not x.isUnknown() } + +query predicate getText(Name x, string getText) { + toBeTested(x) and not x.isUnknown() and getText = x.getText() +} diff --git a/rust/ql/test/extractor-tests/generated/Name/Name_getText.expected b/rust/ql/test/extractor-tests/generated/Name/Name_getText.expected deleted file mode 100644 index 3098a78003bd..000000000000 --- a/rust/ql/test/extractor-tests/generated/Name/Name_getText.expected +++ /dev/null @@ -1,3 +0,0 @@ -| 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/Name_getText.ql b/rust/ql/test/extractor-tests/generated/Name/Name_getText.ql deleted file mode 100644 index 90ff2d3e04bf..000000000000 --- a/rust/ql/test/extractor-tests/generated/Name/Name_getText.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Name x -where toBeTested(x) and not x.isUnknown() -select x, x.getText() diff --git a/rust/ql/test/extractor-tests/generated/NameRef/Cargo.lock b/rust/ql/test/extractor-tests/generated/NameRef/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/NameRef/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/NameRef/NameRef.expected b/rust/ql/test/extractor-tests/generated/NameRef/NameRef.expected index a73f8a029455..a77dc575a773 100644 --- a/rust/ql/test/extractor-tests/generated/NameRef/NameRef.expected +++ b/rust/ql/test/extractor-tests/generated/NameRef/NameRef.expected @@ -1 +1,4 @@ -| gen_name_ref.rs:7:7:7:9 | foo | hasText: | yes | +instances +| gen_name_ref.rs:7:7:7:9 | foo | +getText +| gen_name_ref.rs:7:7:7:9 | foo | foo | diff --git a/rust/ql/test/extractor-tests/generated/NameRef/NameRef.ql b/rust/ql/test/extractor-tests/generated/NameRef/NameRef.ql index cb5ab8652f8a..00af6f1dbcf5 100644 --- a/rust/ql/test/extractor-tests/generated/NameRef/NameRef.ql +++ b/rust/ql/test/extractor-tests/generated/NameRef/NameRef.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from NameRef x, string hasText -where - toBeTested(x) and - not x.isUnknown() and - if x.hasText() then hasText = "yes" else hasText = "no" -select x, "hasText:", hasText +query predicate instances(NameRef x) { toBeTested(x) and not x.isUnknown() } + +query predicate getText(NameRef x, string getText) { + toBeTested(x) and not x.isUnknown() and getText = x.getText() +} diff --git a/rust/ql/test/extractor-tests/generated/NameRef/NameRef_getText.expected b/rust/ql/test/extractor-tests/generated/NameRef/NameRef_getText.expected deleted file mode 100644 index 1b98842e5ec8..000000000000 --- a/rust/ql/test/extractor-tests/generated/NameRef/NameRef_getText.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_name_ref.rs:7:7:7:9 | foo | foo | diff --git a/rust/ql/test/extractor-tests/generated/NameRef/NameRef_getText.ql b/rust/ql/test/extractor-tests/generated/NameRef/NameRef_getText.ql deleted file mode 100644 index daa44134dca8..000000000000 --- a/rust/ql/test/extractor-tests/generated/NameRef/NameRef_getText.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from NameRef x -where toBeTested(x) and not x.isUnknown() -select x, x.getText() diff --git a/rust/ql/test/extractor-tests/generated/NeverTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/NeverTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/NeverTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.ql b/rust/ql/test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.ql index 71ab05928dff..0cdfe366eed4 100644 --- a/rust/ql/test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.ql @@ -2,6 +2,4 @@ import codeql.rust.elements import TestUtils -from NeverTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x +query predicate instances(NeverTypeRepr x) { toBeTested(x) and not x.isUnknown() } diff --git a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.expected b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.expected index 4f8705ab0da4..eb8b19babfe3 100644 --- a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.expected +++ b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.expected @@ -1 +1,7 @@ -| gen_offset_of_expr.rs:5:5:5:38 | OffsetOfExpr | getNumberOfAttrs: | 0 | getNumberOfFields: | 1 | hasTypeRepr: | yes | +instances +| gen_offset_of_expr.rs:5:5:5:38 | OffsetOfExpr | +getAttr +getField +| gen_offset_of_expr.rs:5:5:5:38 | OffsetOfExpr | 0 | gen_offset_of_expr.rs:5:33:5:37 | field | +getTypeRepr +| gen_offset_of_expr.rs:5:5:5:38 | OffsetOfExpr | gen_offset_of_expr.rs:5:25:5:30 | Struct | diff --git a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql index afcd0de84df1..64208e34bbf0 100644 --- a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql +++ b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql @@ -2,12 +2,16 @@ import codeql.rust.elements import TestUtils -from OffsetOfExpr x, int getNumberOfAttrs, int getNumberOfFields, string hasTypeRepr -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - getNumberOfFields = x.getNumberOfFields() and - if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "getNumberOfFields:", getNumberOfFields, - "hasTypeRepr:", hasTypeRepr +query predicate instances(OffsetOfExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(OffsetOfExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getField(OffsetOfExpr x, int index, NameRef getField) { + toBeTested(x) and not x.isUnknown() and getField = x.getField(index) +} + +query predicate getTypeRepr(OffsetOfExpr x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getAttr.ql deleted file mode 100644 index c038e83f2f5f..000000000000 --- a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from OffsetOfExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getField.expected b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getField.expected deleted file mode 100644 index bec224d18cee..000000000000 --- a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getField.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_offset_of_expr.rs:5:5:5:38 | OffsetOfExpr | 0 | gen_offset_of_expr.rs:5:33:5:37 | field | diff --git a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getField.ql b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getField.ql deleted file mode 100644 index c5b41700f641..000000000000 --- a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getField.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from OffsetOfExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getField(index) diff --git a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getTypeRepr.expected deleted file mode 100644 index e2e11abb6a0f..000000000000 --- a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_offset_of_expr.rs:5:5:5:38 | OffsetOfExpr | gen_offset_of_expr.rs:5:25:5:30 | Struct | diff --git a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getTypeRepr.ql deleted file mode 100644 index 5f2a647d8077..000000000000 --- a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from OffsetOfExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/OrPat/Cargo.lock b/rust/ql/test/extractor-tests/generated/OrPat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/OrPat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/OrPat/OrPat.expected b/rust/ql/test/extractor-tests/generated/OrPat/OrPat.expected index 1d67a8509b91..8dcc1baa8d50 100644 --- a/rust/ql/test/extractor-tests/generated/OrPat/OrPat.expected +++ b/rust/ql/test/extractor-tests/generated/OrPat/OrPat.expected @@ -1 +1,5 @@ -| gen_or_pat.rs:6:9:6:38 | ... \| ...::None | getNumberOfPats: | 2 | +instances +| gen_or_pat.rs:6:9:6:38 | ... \| ...::None | +getPat +| gen_or_pat.rs:6:9:6:38 | ... \| ...::None | 0 | gen_or_pat.rs:6:9:6:23 | ...::Some(...) | +| gen_or_pat.rs:6:9:6:38 | ... \| ...::None | 1 | gen_or_pat.rs:6:27:6:38 | ...::None | diff --git a/rust/ql/test/extractor-tests/generated/OrPat/OrPat.ql b/rust/ql/test/extractor-tests/generated/OrPat/OrPat.ql index 11b3bb7394c3..0c60f19278fe 100644 --- a/rust/ql/test/extractor-tests/generated/OrPat/OrPat.ql +++ b/rust/ql/test/extractor-tests/generated/OrPat/OrPat.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from OrPat x, int getNumberOfPats -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfPats = x.getNumberOfPats() -select x, "getNumberOfPats:", getNumberOfPats +query predicate instances(OrPat x) { toBeTested(x) and not x.isUnknown() } + +query predicate getPat(OrPat x, int index, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat(index) +} diff --git a/rust/ql/test/extractor-tests/generated/OrPat/OrPat_getPat.expected b/rust/ql/test/extractor-tests/generated/OrPat/OrPat_getPat.expected deleted file mode 100644 index 9e50c27e035c..000000000000 --- a/rust/ql/test/extractor-tests/generated/OrPat/OrPat_getPat.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_or_pat.rs:6:9:6:38 | ... \| ...::None | 0 | gen_or_pat.rs:6:9:6:23 | ...::Some(...) | -| gen_or_pat.rs:6:9:6:38 | ... \| ...::None | 1 | gen_or_pat.rs:6:27:6:38 | ...::None | diff --git a/rust/ql/test/extractor-tests/generated/OrPat/OrPat_getPat.ql b/rust/ql/test/extractor-tests/generated/OrPat/OrPat_getPat.ql deleted file mode 100644 index 468619511dd8..000000000000 --- a/rust/ql/test/extractor-tests/generated/OrPat/OrPat_getPat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from OrPat x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getPat(index) diff --git a/rust/ql/test/extractor-tests/generated/Param/Cargo.lock b/rust/ql/test/extractor-tests/generated/Param/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Param/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Param/Param.expected b/rust/ql/test/extractor-tests/generated/Param/Param.expected index c8218bdaec5e..929e72c51fbf 100644 --- a/rust/ql/test/extractor-tests/generated/Param/Param.expected +++ b/rust/ql/test/extractor-tests/generated/Param/Param.expected @@ -1 +1,7 @@ -| gen_param.rs:5:12:5:15 | ...: T | getNumberOfAttrs: | 0 | hasTypeRepr: | yes | hasPat: | yes | +instances +| gen_param.rs:5:12:5:15 | ...: T | +getAttr +getTypeRepr +| gen_param.rs:5:12:5:15 | ...: T | gen_param.rs:5:15:5:15 | T | +getPat +| gen_param.rs:5:12:5:15 | ...: T | gen_param.rs:5:12:5:12 | x | diff --git a/rust/ql/test/extractor-tests/generated/Param/Param.ql b/rust/ql/test/extractor-tests/generated/Param/Param.ql index c471f2aeb393..ff1a261ef04d 100644 --- a/rust/ql/test/extractor-tests/generated/Param/Param.ql +++ b/rust/ql/test/extractor-tests/generated/Param/Param.ql @@ -2,11 +2,16 @@ import codeql.rust.elements import TestUtils -from Param x, int getNumberOfAttrs, string hasTypeRepr, string hasPat -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and - if x.hasPat() then hasPat = "yes" else hasPat = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasTypeRepr:", hasTypeRepr, "hasPat:", hasPat +query predicate instances(Param x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(Param x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getTypeRepr(Param x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} + +query predicate getPat(Param x, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat() +} diff --git a/rust/ql/test/extractor-tests/generated/Param/Param_getAttr.expected b/rust/ql/test/extractor-tests/generated/Param/Param_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Param/Param_getAttr.ql b/rust/ql/test/extractor-tests/generated/Param/Param_getAttr.ql deleted file mode 100644 index 72c788635317..000000000000 --- a/rust/ql/test/extractor-tests/generated/Param/Param_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Param x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Param/Param_getPat.expected b/rust/ql/test/extractor-tests/generated/Param/Param_getPat.expected deleted file mode 100644 index c42d7ce0b9f2..000000000000 --- a/rust/ql/test/extractor-tests/generated/Param/Param_getPat.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_param.rs:5:12:5:15 | ...: T | gen_param.rs:5:12:5:12 | x | diff --git a/rust/ql/test/extractor-tests/generated/Param/Param_getPat.ql b/rust/ql/test/extractor-tests/generated/Param/Param_getPat.ql deleted file mode 100644 index 5e8e11356c79..000000000000 --- a/rust/ql/test/extractor-tests/generated/Param/Param_getPat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Param x -where toBeTested(x) and not x.isUnknown() -select x, x.getPat() diff --git a/rust/ql/test/extractor-tests/generated/Param/Param_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/Param/Param_getTypeRepr.expected deleted file mode 100644 index 10bf906af5da..000000000000 --- a/rust/ql/test/extractor-tests/generated/Param/Param_getTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_param.rs:5:12:5:15 | ...: T | gen_param.rs:5:15:5:15 | T | diff --git a/rust/ql/test/extractor-tests/generated/Param/Param_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/Param/Param_getTypeRepr.ql deleted file mode 100644 index 0e03e4b51185..000000000000 --- a/rust/ql/test/extractor-tests/generated/Param/Param_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Param x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/ParamList/Cargo.lock b/rust/ql/test/extractor-tests/generated/ParamList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ParamList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ParamList/ParamList.expected b/rust/ql/test/extractor-tests/generated/ParamList/ParamList.expected index bb999506a0c6..5b95cf48ca83 100644 --- a/rust/ql/test/extractor-tests/generated/ParamList/ParamList.expected +++ b/rust/ql/test/extractor-tests/generated/ParamList/ParamList.expected @@ -1,2 +1,7 @@ -| 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 | +instances +| gen_param_list.rs:3:19:3:20 | ParamList | +| gen_param_list.rs:7:11:7:26 | ParamList | +getParam +| 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 | +getSelfParam diff --git a/rust/ql/test/extractor-tests/generated/ParamList/ParamList.ql b/rust/ql/test/extractor-tests/generated/ParamList/ParamList.ql index 9e65fbf7f7f7..36af8b9eafaf 100644 --- a/rust/ql/test/extractor-tests/generated/ParamList/ParamList.ql +++ b/rust/ql/test/extractor-tests/generated/ParamList/ParamList.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from ParamList x, int getNumberOfParams, string hasSelfParam -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfParams = x.getNumberOfParams() and - if x.hasSelfParam() then hasSelfParam = "yes" else hasSelfParam = "no" -select x, "getNumberOfParams:", getNumberOfParams, "hasSelfParam:", hasSelfParam +query predicate instances(ParamList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getParam(ParamList x, int index, Param getParam) { + toBeTested(x) and not x.isUnknown() and getParam = x.getParam(index) +} + +query predicate getSelfParam(ParamList x, SelfParam getSelfParam) { + toBeTested(x) and not x.isUnknown() and getSelfParam = x.getSelfParam() +} diff --git a/rust/ql/test/extractor-tests/generated/ParamList/ParamList_getParam.expected b/rust/ql/test/extractor-tests/generated/ParamList/ParamList_getParam.expected deleted file mode 100644 index 9006caf6916a..000000000000 --- a/rust/ql/test/extractor-tests/generated/ParamList/ParamList_getParam.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/ParamList_getParam.ql b/rust/ql/test/extractor-tests/generated/ParamList/ParamList_getParam.ql deleted file mode 100644 index d0a24b094092..000000000000 --- a/rust/ql/test/extractor-tests/generated/ParamList/ParamList_getParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ParamList 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/ParamList/ParamList_getSelfParam.expected b/rust/ql/test/extractor-tests/generated/ParamList/ParamList_getSelfParam.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ParamList/ParamList_getSelfParam.ql b/rust/ql/test/extractor-tests/generated/ParamList/ParamList_getSelfParam.ql deleted file mode 100644 index bdd98b434d71..000000000000 --- a/rust/ql/test/extractor-tests/generated/ParamList/ParamList_getSelfParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ParamList x -where toBeTested(x) and not x.isUnknown() -select x, x.getSelfParam() diff --git a/rust/ql/test/extractor-tests/generated/ParenExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/ParenExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ParenExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.expected b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.expected index efe22fdb6253..57a89a35cdef 100644 --- a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.expected @@ -1 +1,5 @@ -| gen_paren_expr.rs:7:5:7:11 | (...) | getNumberOfAttrs: | 0 | hasExpr: | yes | +instances +| gen_paren_expr.rs:7:5:7:11 | (...) | +getAttr +getExpr +| 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/ParenExpr.ql b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.ql index 114bf888239b..1074fc3cd009 100644 --- a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from ParenExpr x, int getNumberOfAttrs, string hasExpr -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - if x.hasExpr() then hasExpr = "yes" else hasExpr = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasExpr:", hasExpr +query predicate instances(ParenExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(ParenExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExpr(ParenExpr x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getAttr.ql deleted file mode 100644 index c2352453b9a5..000000000000 --- a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ParenExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getExpr.expected deleted file mode 100644 index c20c0ec66fa1..000000000000 --- a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/ParenExpr_getExpr.ql b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getExpr.ql deleted file mode 100644 index c8a007478c38..000000000000 --- a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ParenExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/ParenPat/Cargo.lock b/rust/ql/test/extractor-tests/generated/ParenPat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ParenPat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat.expected b/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat.expected index 7b9b66a886dc..2e26da6da78c 100644 --- a/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat.expected +++ b/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat.expected @@ -1 +1,4 @@ -| gen_paren_pat.rs:7:9:7:11 | (...) | hasPat: | yes | +instances +| gen_paren_pat.rs:7:9:7:11 | (...) | +getPat +| 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/ParenPat.ql b/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat.ql index bf9724edde3a..18b7c74b94b8 100644 --- a/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat.ql +++ b/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from ParenPat x, string hasPat -where - toBeTested(x) and - not x.isUnknown() and - if x.hasPat() then hasPat = "yes" else hasPat = "no" -select x, "hasPat:", hasPat +query predicate instances(ParenPat x) { toBeTested(x) and not x.isUnknown() } + +query predicate getPat(ParenPat x, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat() +} diff --git a/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat_getPat.expected b/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat_getPat.expected deleted file mode 100644 index 832d823866fd..000000000000 --- a/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat_getPat.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/ParenPat_getPat.ql b/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat_getPat.ql deleted file mode 100644 index 648fbfd9df08..000000000000 --- a/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat_getPat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ParenPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getPat() diff --git a/rust/ql/test/extractor-tests/generated/ParenTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.expected index fd5d8310d170..1e77f93912f8 100644 --- a/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.expected @@ -1 +1,4 @@ -| gen_paren_type_repr.rs:7:12:7:16 | (i32) | hasTypeRepr: | yes | +instances +| gen_paren_type_repr.rs:7:12:7:16 | (i32) | +getTypeRepr +| 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/ParenTypeRepr.ql b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.ql index 83a4f846add1..8df81166aa50 100644 --- a/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from ParenTypeRepr x, string hasTypeRepr -where - toBeTested(x) and - not x.isUnknown() and - if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no" -select x, "hasTypeRepr:", hasTypeRepr +query predicate instances(ParenTypeRepr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getTypeRepr(ParenTypeRepr x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.expected deleted file mode 100644 index b4167e4201a5..000000000000 --- a/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/ParenTypeRepr_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.ql deleted file mode 100644 index 2b3a274fc089..000000000000 --- a/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ParenTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/Cargo.lock b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.expected b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.expected index 317d43de72d8..b787bde1ae2e 100644 --- a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.expected +++ b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.expected @@ -1 +1,5 @@ -| gen_parenthesized_arg_list.rs:9:14:9:26 | ParenthesizedArgList | getNumberOfTypeArgs: | 2 | +instances +| gen_parenthesized_arg_list.rs:9:14:9:26 | ParenthesizedArgList | +getTypeArg +| 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.ql b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.ql index 73080b26f2d9..b35858d3ad09 100644 --- a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.ql +++ b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.ql @@ -2,9 +2,8 @@ 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 +query predicate instances(ParenthesizedArgList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getTypeArg(ParenthesizedArgList x, int index, TypeArg getTypeArg) { + toBeTested(x) and not x.isUnknown() and getTypeArg = x.getTypeArg(index) +} diff --git a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList_getTypeArg.expected b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList_getTypeArg.expected deleted file mode 100644 index 8ae7aa526d3e..000000000000 --- a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList_getTypeArg.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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 deleted file mode 100644 index 04247f8ff647..000000000000 --- a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList_getTypeArg.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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/Path/Cargo.lock b/rust/ql/test/extractor-tests/generated/Path/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Path/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Path/Path.expected b/rust/ql/test/extractor-tests/generated/Path/Path.expected index 7cf8362293e3..e188cc32fecd 100644 --- a/rust/ql/test/extractor-tests/generated/Path/Path.expected +++ b/rust/ql/test/extractor-tests/generated/Path/Path.expected @@ -1,25 +1,63 @@ -| gen_path.rs:5:9:5:18 | some_crate | hasQualifier: | no | hasSegment: | yes | -| gen_path.rs:5:9:5:31 | ...::some_module | hasQualifier: | yes | hasSegment: | yes | -| gen_path.rs:5:9:5:42 | ...::some_item | hasQualifier: | yes | hasSegment: | yes | -| gen_path.rs:6:5:6:7 | foo | hasQualifier: | no | hasSegment: | yes | -| gen_path.rs:6:5:6:12 | ...::bar | hasQualifier: | yes | hasSegment: | yes | -| gen_path_expr.rs:5:13:5:20 | variable | hasQualifier: | no | hasSegment: | yes | -| gen_path_expr.rs:6:13:6:15 | foo | hasQualifier: | no | hasSegment: | yes | -| gen_path_expr.rs:6:13:6:20 | ...::bar | hasQualifier: | yes | hasSegment: | yes | -| gen_path_expr.rs:7:13:7:15 | <...> | hasQualifier: | no | hasSegment: | yes | -| gen_path_expr.rs:7:13:7:20 | ...::foo | hasQualifier: | yes | hasSegment: | yes | -| gen_path_expr.rs:7:14:7:14 | T | hasQualifier: | no | hasSegment: | yes | -| gen_path_expr.rs:8:13:8:31 | <...> | hasQualifier: | no | hasSegment: | yes | -| gen_path_expr.rs:8:13:8:36 | ...::foo | hasQualifier: | yes | hasSegment: | yes | -| gen_path_expr.rs:8:14:8:21 | TypeRepr | hasQualifier: | no | hasSegment: | yes | -| gen_path_expr.rs:8:26:8:30 | Trait | hasQualifier: | no | hasSegment: | yes | -| gen_path_pat.rs:5:11:5:11 | x | hasQualifier: | no | hasSegment: | yes | -| gen_path_pat.rs:6:9:6:11 | Foo | hasQualifier: | no | hasSegment: | yes | -| gen_path_pat.rs:6:9:6:16 | ...::Bar | hasQualifier: | yes | hasSegment: | yes | -| gen_path_type_repr.rs:5:14:5:16 | std | hasQualifier: | no | hasSegment: | yes | -| gen_path_type_repr.rs:5:14:5:29 | ...::collections | hasQualifier: | yes | hasSegment: | yes | -| gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | hasQualifier: | yes | hasSegment: | yes | -| gen_path_type_repr.rs:5:40:5:42 | i32 | hasQualifier: | no | hasSegment: | yes | -| gen_path_type_repr.rs:5:45:5:47 | i32 | hasQualifier: | no | hasSegment: | yes | -| gen_path_type_repr.rs:6:14:6:14 | X | hasQualifier: | no | hasSegment: | yes | -| gen_path_type_repr.rs:6:14:6:20 | ...::Item | hasQualifier: | yes | hasSegment: | yes | +instances +| gen_path.rs:5:9:5:18 | some_crate | +| gen_path.rs:5:9:5:31 | ...::some_module | +| gen_path.rs:5:9:5:42 | ...::some_item | +| gen_path.rs:6:5:6:7 | foo | +| gen_path.rs:6:5:6:12 | ...::bar | +| gen_path_expr.rs:5:13:5:20 | variable | +| gen_path_expr.rs:6:13:6:15 | foo | +| gen_path_expr.rs:6:13:6:20 | ...::bar | +| gen_path_expr.rs:7:13:7:15 | <...> | +| gen_path_expr.rs:7:13:7:20 | ...::foo | +| gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:8:13:8:31 | <...> | +| gen_path_expr.rs:8:13:8:36 | ...::foo | +| gen_path_expr.rs:8:14:8:21 | TypeRepr | +| gen_path_expr.rs:8:26:8:30 | Trait | +| gen_path_pat.rs:5:11:5:11 | x | +| gen_path_pat.rs:6:9:6:11 | Foo | +| gen_path_pat.rs:6:9:6:16 | ...::Bar | +| gen_path_type_repr.rs:5:14:5:16 | std | +| gen_path_type_repr.rs:5:14:5:29 | ...::collections | +| gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | +| gen_path_type_repr.rs:5:40:5:42 | i32 | +| gen_path_type_repr.rs:5:45:5:47 | i32 | +| gen_path_type_repr.rs:6:14:6:14 | X | +| gen_path_type_repr.rs:6:14:6:20 | ...::Item | +getQualifier +| gen_path.rs:5:9:5:31 | ...::some_module | gen_path.rs:5:9:5:18 | some_crate | +| gen_path.rs:5:9:5:42 | ...::some_item | gen_path.rs:5:9:5:31 | ...::some_module | +| gen_path.rs:6:5:6:12 | ...::bar | gen_path.rs:6:5:6:7 | foo | +| gen_path_expr.rs:6:13:6:20 | ...::bar | gen_path_expr.rs:6:13:6:15 | foo | +| gen_path_expr.rs:7:13:7:20 | ...::foo | gen_path_expr.rs:7:13:7:15 | <...> | +| gen_path_expr.rs:8:13:8:36 | ...::foo | gen_path_expr.rs:8:13:8:31 | <...> | +| gen_path_pat.rs:6:9:6:16 | ...::Bar | gen_path_pat.rs:6:9:6:11 | Foo | +| gen_path_type_repr.rs:5:14:5:29 | ...::collections | gen_path_type_repr.rs:5:14:5:16 | std | +| gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | gen_path_type_repr.rs:5:14:5:29 | ...::collections | +| gen_path_type_repr.rs:6:14:6:20 | ...::Item | gen_path_type_repr.rs:6:14:6:14 | X | +getSegment +| gen_path.rs:5:9:5:18 | some_crate | gen_path.rs:5:9:5:18 | some_crate | +| gen_path.rs:5:9:5:31 | ...::some_module | gen_path.rs:5:21:5:31 | some_module | +| gen_path.rs:5:9:5:42 | ...::some_item | gen_path.rs:5:34:5:42 | some_item | +| gen_path.rs:6:5:6:7 | foo | gen_path.rs:6:5:6:7 | foo | +| gen_path.rs:6:5:6:12 | ...::bar | gen_path.rs:6:10:6:12 | bar | +| gen_path_expr.rs:5:13:5:20 | variable | gen_path_expr.rs:5:13:5:20 | variable | +| gen_path_expr.rs:6:13:6:15 | foo | gen_path_expr.rs:6:13:6:15 | foo | +| gen_path_expr.rs:6:13:6:20 | ...::bar | gen_path_expr.rs:6:18:6:20 | bar | +| gen_path_expr.rs:7:13:7:15 | <...> | gen_path_expr.rs:7:13:7:15 | <...> | +| gen_path_expr.rs:7:13:7:20 | ...::foo | gen_path_expr.rs:7:18:7:20 | foo | +| gen_path_expr.rs:7:14:7:14 | T | gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:8:13:8:31 | <...> | gen_path_expr.rs:8:13:8:31 | <...> | +| gen_path_expr.rs:8:13:8:36 | ...::foo | gen_path_expr.rs:8:34:8:36 | foo | +| gen_path_expr.rs:8:14:8:21 | TypeRepr | gen_path_expr.rs:8:14:8:21 | TypeRepr | +| gen_path_expr.rs:8:26:8:30 | Trait | gen_path_expr.rs:8:26:8:30 | Trait | +| gen_path_pat.rs:5:11:5:11 | x | gen_path_pat.rs:5:11:5:11 | x | +| gen_path_pat.rs:6:9:6:11 | Foo | gen_path_pat.rs:6:9:6:11 | Foo | +| gen_path_pat.rs:6:9:6:16 | ...::Bar | gen_path_pat.rs:6:14:6:16 | Bar | +| gen_path_type_repr.rs:5:14:5:16 | std | gen_path_type_repr.rs:5:14:5:16 | std | +| gen_path_type_repr.rs:5:14:5:29 | ...::collections | gen_path_type_repr.rs:5:19:5:29 | collections | +| gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | gen_path_type_repr.rs:5:32:5:48 | HashMap::<...> | +| gen_path_type_repr.rs:5:40:5:42 | i32 | gen_path_type_repr.rs:5:40:5:42 | i32 | +| gen_path_type_repr.rs:5:45:5:47 | i32 | gen_path_type_repr.rs:5:45:5:47 | i32 | +| gen_path_type_repr.rs:6:14:6:14 | X | gen_path_type_repr.rs:6:14:6:14 | X | +| gen_path_type_repr.rs:6:14:6:20 | ...::Item | gen_path_type_repr.rs:6:17:6:20 | Item | diff --git a/rust/ql/test/extractor-tests/generated/Path/Path.ql b/rust/ql/test/extractor-tests/generated/Path/Path.ql index 2f32fa34147e..183fcbb24a6b 100644 --- a/rust/ql/test/extractor-tests/generated/Path/Path.ql +++ b/rust/ql/test/extractor-tests/generated/Path/Path.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from Path x, string hasQualifier, string hasSegment -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasQualifier() then hasQualifier = "yes" else hasQualifier = "no") and - if x.hasSegment() then hasSegment = "yes" else hasSegment = "no" -select x, "hasQualifier:", hasQualifier, "hasSegment:", hasSegment +query predicate instances(Path x) { toBeTested(x) and not x.isUnknown() } + +query predicate getQualifier(Path x, Path getQualifier) { + toBeTested(x) and not x.isUnknown() and getQualifier = x.getQualifier() +} + +query predicate getSegment(Path x, PathSegment getSegment) { + toBeTested(x) and not x.isUnknown() and getSegment = x.getSegment() +} diff --git a/rust/ql/test/extractor-tests/generated/Path/PathExpr.expected b/rust/ql/test/extractor-tests/generated/Path/PathExpr.expected index 25bc95ed055b..5a2df7ee29f9 100644 --- a/rust/ql/test/extractor-tests/generated/Path/PathExpr.expected +++ b/rust/ql/test/extractor-tests/generated/Path/PathExpr.expected @@ -1,6 +1,17 @@ -| gen_path.rs:6:5:6:12 | ...::bar | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | getNumberOfAttrs: | 0 | -| gen_path_expr.rs:5:13:5:20 | variable | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | getNumberOfAttrs: | 0 | -| gen_path_expr.rs:6:13:6:20 | ...::bar | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | getNumberOfAttrs: | 0 | -| gen_path_expr.rs:7:13:7:20 | ...::foo | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | getNumberOfAttrs: | 0 | -| gen_path_expr.rs:8:13:8:36 | ...::foo | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | getNumberOfAttrs: | 0 | -| gen_path_pat.rs:5:11:5:11 | x | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | getNumberOfAttrs: | 0 | +instances +| gen_path.rs:6:5:6:12 | ...::bar | +| gen_path_expr.rs:5:13:5:20 | variable | +| gen_path_expr.rs:6:13:6:20 | ...::bar | +| gen_path_expr.rs:7:13:7:20 | ...::foo | +| gen_path_expr.rs:8:13:8:36 | ...::foo | +| gen_path_pat.rs:5:11:5:11 | x | +getResolvedPath +getResolvedCrateOrigin +getPath +| gen_path.rs:6:5:6:12 | ...::bar | gen_path.rs:6:5:6:12 | ...::bar | +| gen_path_expr.rs:5:13:5:20 | variable | gen_path_expr.rs:5:13:5:20 | variable | +| gen_path_expr.rs:6:13:6:20 | ...::bar | gen_path_expr.rs:6:13:6:20 | ...::bar | +| gen_path_expr.rs:7:13:7:20 | ...::foo | gen_path_expr.rs:7:13:7:20 | ...::foo | +| gen_path_expr.rs:8:13:8:36 | ...::foo | gen_path_expr.rs:8:13:8:36 | ...::foo | +| gen_path_pat.rs:5:11:5:11 | x | gen_path_pat.rs:5:11:5:11 | x | +getAttr diff --git a/rust/ql/test/extractor-tests/generated/Path/PathExpr.ql b/rust/ql/test/extractor-tests/generated/Path/PathExpr.ql index 41b7414d24c7..70bff600ace0 100644 --- a/rust/ql/test/extractor-tests/generated/Path/PathExpr.ql +++ b/rust/ql/test/extractor-tests/generated/Path/PathExpr.ql @@ -2,19 +2,20 @@ import codeql.rust.elements import TestUtils -from - PathExpr x, string hasResolvedPath, string hasResolvedCrateOrigin, string hasPath, - int getNumberOfAttrs -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasResolvedPath() then hasResolvedPath = "yes" else hasResolvedPath = "no") and - ( - if x.hasResolvedCrateOrigin() - then hasResolvedCrateOrigin = "yes" - else hasResolvedCrateOrigin = "no" - ) and - (if x.hasPath() then hasPath = "yes" else hasPath = "no") and - getNumberOfAttrs = x.getNumberOfAttrs() -select x, "hasResolvedPath:", hasResolvedPath, "hasResolvedCrateOrigin:", hasResolvedCrateOrigin, - "hasPath:", hasPath, "getNumberOfAttrs:", getNumberOfAttrs +query predicate instances(PathExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getResolvedPath(PathExpr x, string getResolvedPath) { + toBeTested(x) and not x.isUnknown() and getResolvedPath = x.getResolvedPath() +} + +query predicate getResolvedCrateOrigin(PathExpr x, string getResolvedCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getResolvedCrateOrigin = x.getResolvedCrateOrigin() +} + +query predicate getPath(PathExpr x, Path getPath) { + toBeTested(x) and not x.isUnknown() and getPath = x.getPath() +} + +query predicate getAttr(PathExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} diff --git a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/Path/PathExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/Path/PathExpr_getAttr.ql deleted file mode 100644 index 0c0ed2aa7e45..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getPath.expected b/rust/ql/test/extractor-tests/generated/Path/PathExpr_getPath.expected deleted file mode 100644 index e9680024dc1c..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getPath.expected +++ /dev/null @@ -1,6 +0,0 @@ -| gen_path.rs:6:5:6:12 | ...::bar | gen_path.rs:6:5:6:12 | ...::bar | -| gen_path_expr.rs:5:13:5:20 | variable | gen_path_expr.rs:5:13:5:20 | variable | -| gen_path_expr.rs:6:13:6:20 | ...::bar | gen_path_expr.rs:6:13:6:20 | ...::bar | -| gen_path_expr.rs:7:13:7:20 | ...::foo | gen_path_expr.rs:7:13:7:20 | ...::foo | -| gen_path_expr.rs:8:13:8:36 | ...::foo | gen_path_expr.rs:8:13:8:36 | ...::foo | -| gen_path_pat.rs:5:11:5:11 | x | gen_path_pat.rs:5:11:5:11 | x | diff --git a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getPath.ql b/rust/ql/test/extractor-tests/generated/Path/PathExpr_getPath.ql deleted file mode 100644 index a776443137e5..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getPath() diff --git a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getResolvedCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Path/PathExpr_getResolvedCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getResolvedCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/Path/PathExpr_getResolvedCrateOrigin.ql deleted file mode 100644 index 24e079184844..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getResolvedCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getResolvedCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getResolvedPath.expected b/rust/ql/test/extractor-tests/generated/Path/PathExpr_getResolvedPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getResolvedPath.ql b/rust/ql/test/extractor-tests/generated/Path/PathExpr_getResolvedPath.ql deleted file mode 100644 index 10e6ceb2a0b9..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getResolvedPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getResolvedPath() diff --git a/rust/ql/test/extractor-tests/generated/Path/PathPat.expected b/rust/ql/test/extractor-tests/generated/Path/PathPat.expected index cf90175a84c0..9bcce9035582 100644 --- a/rust/ql/test/extractor-tests/generated/Path/PathPat.expected +++ b/rust/ql/test/extractor-tests/generated/Path/PathPat.expected @@ -1 +1,6 @@ -| gen_path_pat.rs:6:9:6:16 | ...::Bar | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | +instances +| gen_path_pat.rs:6:9:6:16 | ...::Bar | +getResolvedPath +getResolvedCrateOrigin +getPath +| gen_path_pat.rs:6:9:6:16 | ...::Bar | gen_path_pat.rs:6:9:6:16 | ...::Bar | diff --git a/rust/ql/test/extractor-tests/generated/Path/PathPat.ql b/rust/ql/test/extractor-tests/generated/Path/PathPat.ql index a105c20c39ed..9c5a874cabf5 100644 --- a/rust/ql/test/extractor-tests/generated/Path/PathPat.ql +++ b/rust/ql/test/extractor-tests/generated/Path/PathPat.ql @@ -2,16 +2,16 @@ import codeql.rust.elements import TestUtils -from PathPat x, string hasResolvedPath, string hasResolvedCrateOrigin, string hasPath -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasResolvedPath() then hasResolvedPath = "yes" else hasResolvedPath = "no") and - ( - if x.hasResolvedCrateOrigin() - then hasResolvedCrateOrigin = "yes" - else hasResolvedCrateOrigin = "no" - ) and - if x.hasPath() then hasPath = "yes" else hasPath = "no" -select x, "hasResolvedPath:", hasResolvedPath, "hasResolvedCrateOrigin:", hasResolvedCrateOrigin, - "hasPath:", hasPath +query predicate instances(PathPat x) { toBeTested(x) and not x.isUnknown() } + +query predicate getResolvedPath(PathPat x, string getResolvedPath) { + toBeTested(x) and not x.isUnknown() and getResolvedPath = x.getResolvedPath() +} + +query predicate getResolvedCrateOrigin(PathPat x, string getResolvedCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getResolvedCrateOrigin = x.getResolvedCrateOrigin() +} + +query predicate getPath(PathPat x, Path getPath) { + toBeTested(x) and not x.isUnknown() and getPath = x.getPath() +} diff --git a/rust/ql/test/extractor-tests/generated/Path/PathPat_getPath.expected b/rust/ql/test/extractor-tests/generated/Path/PathPat_getPath.expected deleted file mode 100644 index 3a601023f3f9..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathPat_getPath.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_path_pat.rs:6:9:6:16 | ...::Bar | gen_path_pat.rs:6:9:6:16 | ...::Bar | diff --git a/rust/ql/test/extractor-tests/generated/Path/PathPat_getPath.ql b/rust/ql/test/extractor-tests/generated/Path/PathPat_getPath.ql deleted file mode 100644 index 820b1028de21..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathPat_getPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getPath() diff --git a/rust/ql/test/extractor-tests/generated/Path/PathPat_getResolvedCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Path/PathPat_getResolvedCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Path/PathPat_getResolvedCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/Path/PathPat_getResolvedCrateOrigin.ql deleted file mode 100644 index 7ed41155d77e..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathPat_getResolvedCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getResolvedCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/Path/PathPat_getResolvedPath.expected b/rust/ql/test/extractor-tests/generated/Path/PathPat_getResolvedPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Path/PathPat_getResolvedPath.ql b/rust/ql/test/extractor-tests/generated/Path/PathPat_getResolvedPath.ql deleted file mode 100644 index cbe1932925a8..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathPat_getResolvedPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getResolvedPath() diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment.expected index a37dd8cbd96d..cf9e4501366d 100644 --- a/rust/ql/test/extractor-tests/generated/Path/PathSegment.expected +++ b/rust/ql/test/extractor-tests/generated/Path/PathSegment.expected @@ -1,25 +1,60 @@ -| gen_path.rs:5:9:5:18 | some_crate | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path.rs:5:21:5:31 | some_module | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path.rs:5:34:5:42 | some_item | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path.rs:6:5:6:7 | foo | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path.rs:6:10:6:12 | bar | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_expr.rs:5:13:5:20 | variable | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_expr.rs:6:13:6:15 | foo | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_expr.rs:6:18:6:20 | bar | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_expr.rs:7:13:7:15 | <...> | hasGenericArgList: | no | hasIdentifier: | no | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | yes | hasTraitTypeRepr: | no | -| gen_path_expr.rs:7:14:7:14 | T | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_expr.rs:7:18:7:20 | foo | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_expr.rs:8:13:8:31 | <...> | hasGenericArgList: | no | hasIdentifier: | no | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | yes | hasTraitTypeRepr: | yes | -| gen_path_expr.rs:8:14:8:21 | TypeRepr | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_expr.rs:8:26:8:30 | Trait | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_expr.rs:8:34:8:36 | foo | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_pat.rs:5:11:5:11 | x | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_pat.rs:6:9:6:11 | Foo | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_pat.rs:6:14:6:16 | Bar | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_type_repr.rs:5:14:5:16 | std | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_type_repr.rs:5:19:5:29 | collections | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_type_repr.rs:5:32:5:48 | HashMap::<...> | hasGenericArgList: | yes | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_type_repr.rs:5:40:5:42 | i32 | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_type_repr.rs:5:45:5:47 | i32 | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_type_repr.rs:6:14:6:14 | X | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | -| gen_path_type_repr.rs:6:17:6:20 | Item | hasGenericArgList: | no | hasIdentifier: | yes | hasParenthesizedArgList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTraitTypeRepr: | no | +instances +| gen_path.rs:5:9:5:18 | some_crate | +| gen_path.rs:5:21:5:31 | some_module | +| gen_path.rs:5:34:5:42 | some_item | +| gen_path.rs:6:5:6:7 | foo | +| gen_path.rs:6:10:6:12 | bar | +| gen_path_expr.rs:5:13:5:20 | variable | +| gen_path_expr.rs:6:13:6:15 | foo | +| gen_path_expr.rs:6:18:6:20 | bar | +| gen_path_expr.rs:7:13:7:15 | <...> | +| gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:7:18:7:20 | foo | +| gen_path_expr.rs:8:13:8:31 | <...> | +| gen_path_expr.rs:8:14:8:21 | TypeRepr | +| gen_path_expr.rs:8:26:8:30 | Trait | +| gen_path_expr.rs:8:34:8:36 | foo | +| gen_path_pat.rs:5:11:5:11 | x | +| gen_path_pat.rs:6:9:6:11 | Foo | +| gen_path_pat.rs:6:14:6:16 | Bar | +| gen_path_type_repr.rs:5:14:5:16 | std | +| gen_path_type_repr.rs:5:19:5:29 | collections | +| gen_path_type_repr.rs:5:32:5:48 | HashMap::<...> | +| gen_path_type_repr.rs:5:40:5:42 | i32 | +| gen_path_type_repr.rs:5:45:5:47 | i32 | +| gen_path_type_repr.rs:6:14:6:14 | X | +| gen_path_type_repr.rs:6:17:6:20 | Item | +getGenericArgList +| gen_path_type_repr.rs:5:32:5:48 | HashMap::<...> | gen_path_type_repr.rs:5:39:5:48 | <...> | +getIdentifier +| gen_path.rs:5:9:5:18 | some_crate | gen_path.rs:5:9:5:18 | some_crate | +| gen_path.rs:5:21:5:31 | some_module | gen_path.rs:5:21:5:31 | some_module | +| gen_path.rs:5:34:5:42 | some_item | gen_path.rs:5:34:5:42 | some_item | +| gen_path.rs:6:5:6:7 | foo | gen_path.rs:6:5:6:7 | foo | +| gen_path.rs:6:10:6:12 | bar | gen_path.rs:6:10:6:12 | bar | +| gen_path_expr.rs:5:13:5:20 | variable | gen_path_expr.rs:5:13:5:20 | variable | +| gen_path_expr.rs:6:13:6:15 | foo | gen_path_expr.rs:6:13:6:15 | foo | +| gen_path_expr.rs:6:18:6:20 | bar | gen_path_expr.rs:6:18:6:20 | bar | +| gen_path_expr.rs:7:14:7:14 | T | gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:7:18:7:20 | foo | gen_path_expr.rs:7:18:7:20 | foo | +| gen_path_expr.rs:8:14:8:21 | TypeRepr | gen_path_expr.rs:8:14:8:21 | TypeRepr | +| gen_path_expr.rs:8:26:8:30 | Trait | gen_path_expr.rs:8:26:8:30 | Trait | +| gen_path_expr.rs:8:34:8:36 | foo | gen_path_expr.rs:8:34:8:36 | foo | +| gen_path_pat.rs:5:11:5:11 | x | gen_path_pat.rs:5:11:5:11 | x | +| gen_path_pat.rs:6:9:6:11 | Foo | gen_path_pat.rs:6:9:6:11 | Foo | +| gen_path_pat.rs:6:14:6:16 | Bar | gen_path_pat.rs:6:14:6:16 | Bar | +| gen_path_type_repr.rs:5:14:5:16 | std | gen_path_type_repr.rs:5:14:5:16 | std | +| gen_path_type_repr.rs:5:19:5:29 | collections | gen_path_type_repr.rs:5:19:5:29 | collections | +| gen_path_type_repr.rs:5:32:5:48 | HashMap::<...> | gen_path_type_repr.rs:5:32:5:38 | HashMap | +| gen_path_type_repr.rs:5:40:5:42 | i32 | gen_path_type_repr.rs:5:40:5:42 | i32 | +| gen_path_type_repr.rs:5:45:5:47 | i32 | gen_path_type_repr.rs:5:45:5:47 | i32 | +| gen_path_type_repr.rs:6:14:6:14 | X | gen_path_type_repr.rs:6:14:6:14 | X | +| gen_path_type_repr.rs:6:17:6:20 | Item | gen_path_type_repr.rs:6:17:6:20 | Item | +getParenthesizedArgList +getRetType +getReturnTypeSyntax +getTypeRepr +| gen_path_expr.rs:7:13:7:15 | <...> | gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:8:13:8:31 | <...> | gen_path_expr.rs:8:14:8:21 | TypeRepr | +getTraitTypeRepr +| gen_path_expr.rs:8:13:8:31 | <...> | gen_path_expr.rs:8:26:8:30 | Trait | diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment.ql index 5bfa26039b18..2e0800706f09 100644 --- a/rust/ql/test/extractor-tests/generated/Path/PathSegment.ql +++ b/rust/ql/test/extractor-tests/generated/Path/PathSegment.ql @@ -2,24 +2,32 @@ import codeql.rust.elements import TestUtils -from - PathSegment x, string hasGenericArgList, string hasIdentifier, string hasParenthesizedArgList, - string hasRetType, string hasReturnTypeSyntax, string hasTypeRepr, string hasTraitTypeRepr -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasGenericArgList() then hasGenericArgList = "yes" else hasGenericArgList = "no") and - (if x.hasIdentifier() then hasIdentifier = "yes" else hasIdentifier = "no") and - ( - if x.hasParenthesizedArgList() - then hasParenthesizedArgList = "yes" - else hasParenthesizedArgList = "no" - ) and - (if x.hasRetType() then hasRetType = "yes" else hasRetType = "no") and - (if x.hasReturnTypeSyntax() then hasReturnTypeSyntax = "yes" else hasReturnTypeSyntax = "no") and - (if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and - if x.hasTraitTypeRepr() then hasTraitTypeRepr = "yes" else hasTraitTypeRepr = "no" -select x, "hasGenericArgList:", hasGenericArgList, "hasIdentifier:", hasIdentifier, - "hasParenthesizedArgList:", hasParenthesizedArgList, "hasRetType:", hasRetType, - "hasReturnTypeSyntax:", hasReturnTypeSyntax, "hasTypeRepr:", hasTypeRepr, "hasTraitTypeRepr:", - hasTraitTypeRepr +query predicate instances(PathSegment x) { toBeTested(x) and not x.isUnknown() } + +query predicate getGenericArgList(PathSegment x, GenericArgList getGenericArgList) { + toBeTested(x) and not x.isUnknown() and getGenericArgList = x.getGenericArgList() +} + +query predicate getIdentifier(PathSegment x, NameRef getIdentifier) { + toBeTested(x) and not x.isUnknown() and getIdentifier = x.getIdentifier() +} + +query predicate getParenthesizedArgList(PathSegment x, ParenthesizedArgList getParenthesizedArgList) { + toBeTested(x) and not x.isUnknown() and getParenthesizedArgList = x.getParenthesizedArgList() +} + +query predicate getRetType(PathSegment x, RetTypeRepr getRetType) { + toBeTested(x) and not x.isUnknown() and getRetType = x.getRetType() +} + +query predicate getReturnTypeSyntax(PathSegment x, ReturnTypeSyntax getReturnTypeSyntax) { + toBeTested(x) and not x.isUnknown() and getReturnTypeSyntax = x.getReturnTypeSyntax() +} + +query predicate getTypeRepr(PathSegment x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} + +query predicate getTraitTypeRepr(PathSegment x, PathTypeRepr getTraitTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTraitTypeRepr = x.getTraitTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getGenericArgList.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getGenericArgList.expected deleted file mode 100644 index ff0110440aef..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getGenericArgList.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_path_type_repr.rs:5:32:5:48 | HashMap::<...> | gen_path_type_repr.rs:5:39:5:48 | <...> | diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getGenericArgList.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getGenericArgList.ql deleted file mode 100644 index a93675780034..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getGenericArgList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathSegment x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericArgList() diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getIdentifier.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getIdentifier.expected deleted file mode 100644 index dfa33cf96119..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getIdentifier.expected +++ /dev/null @@ -1,23 +0,0 @@ -| gen_path.rs:5:9:5:18 | some_crate | gen_path.rs:5:9:5:18 | some_crate | -| gen_path.rs:5:21:5:31 | some_module | gen_path.rs:5:21:5:31 | some_module | -| gen_path.rs:5:34:5:42 | some_item | gen_path.rs:5:34:5:42 | some_item | -| gen_path.rs:6:5:6:7 | foo | gen_path.rs:6:5:6:7 | foo | -| gen_path.rs:6:10:6:12 | bar | gen_path.rs:6:10:6:12 | bar | -| gen_path_expr.rs:5:13:5:20 | variable | gen_path_expr.rs:5:13:5:20 | variable | -| gen_path_expr.rs:6:13:6:15 | foo | gen_path_expr.rs:6:13:6:15 | foo | -| gen_path_expr.rs:6:18:6:20 | bar | gen_path_expr.rs:6:18:6:20 | bar | -| gen_path_expr.rs:7:14:7:14 | T | gen_path_expr.rs:7:14:7:14 | T | -| gen_path_expr.rs:7:18:7:20 | foo | gen_path_expr.rs:7:18:7:20 | foo | -| gen_path_expr.rs:8:14:8:21 | TypeRepr | gen_path_expr.rs:8:14:8:21 | TypeRepr | -| gen_path_expr.rs:8:26:8:30 | Trait | gen_path_expr.rs:8:26:8:30 | Trait | -| gen_path_expr.rs:8:34:8:36 | foo | gen_path_expr.rs:8:34:8:36 | foo | -| gen_path_pat.rs:5:11:5:11 | x | gen_path_pat.rs:5:11:5:11 | x | -| gen_path_pat.rs:6:9:6:11 | Foo | gen_path_pat.rs:6:9:6:11 | Foo | -| gen_path_pat.rs:6:14:6:16 | Bar | gen_path_pat.rs:6:14:6:16 | Bar | -| gen_path_type_repr.rs:5:14:5:16 | std | gen_path_type_repr.rs:5:14:5:16 | std | -| gen_path_type_repr.rs:5:19:5:29 | collections | gen_path_type_repr.rs:5:19:5:29 | collections | -| gen_path_type_repr.rs:5:32:5:48 | HashMap::<...> | gen_path_type_repr.rs:5:32:5:38 | HashMap | -| gen_path_type_repr.rs:5:40:5:42 | i32 | gen_path_type_repr.rs:5:40:5:42 | i32 | -| gen_path_type_repr.rs:5:45:5:47 | i32 | gen_path_type_repr.rs:5:45:5:47 | i32 | -| gen_path_type_repr.rs:6:14:6:14 | X | gen_path_type_repr.rs:6:14:6:14 | X | -| gen_path_type_repr.rs:6:17:6:20 | Item | gen_path_type_repr.rs:6:17:6:20 | Item | diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getIdentifier.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getIdentifier.ql deleted file mode 100644 index 23c06cef5064..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getIdentifier.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathSegment x -where toBeTested(x) and not x.isUnknown() -select x, x.getIdentifier() diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getParenthesizedArgList.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getParenthesizedArgList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getParenthesizedArgList.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getParenthesizedArgList.ql deleted file mode 100644 index 917567c100fa..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getParenthesizedArgList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathSegment x -where toBeTested(x) and not x.isUnknown() -select x, x.getParenthesizedArgList() diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getRetType.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getRetType.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getRetType.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getRetType.ql deleted file mode 100644 index 311642a5f859..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getRetType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathSegment x -where toBeTested(x) and not x.isUnknown() -select x, x.getRetType() diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getReturnTypeSyntax.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getReturnTypeSyntax.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getReturnTypeSyntax.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getReturnTypeSyntax.ql deleted file mode 100644 index f978f70c8a6c..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getReturnTypeSyntax.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathSegment x -where toBeTested(x) and not x.isUnknown() -select x, x.getReturnTypeSyntax() diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTraitTypeRepr.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTraitTypeRepr.expected deleted file mode 100644 index bb178b909702..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTraitTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_path_expr.rs:8:13:8:31 | <...> | gen_path_expr.rs:8:26:8:30 | Trait | diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTraitTypeRepr.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTraitTypeRepr.ql deleted file mode 100644 index 11675883d6ae..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTraitTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathSegment x -where toBeTested(x) and not x.isUnknown() -select x, x.getTraitTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTypeRepr.expected deleted file mode 100644 index 99ac97381b3c..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTypeRepr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_path_expr.rs:7:13:7:15 | <...> | gen_path_expr.rs:7:14:7:14 | T | -| gen_path_expr.rs:8:13:8:31 | <...> | gen_path_expr.rs:8:14:8:21 | TypeRepr | diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTypeRepr.ql deleted file mode 100644 index 98303f7f0fb1..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathSegment x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr.expected b/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr.expected index 37988d0dfd70..841a1e6eb770 100644 --- a/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr.expected @@ -1,7 +1,16 @@ -| gen_path_expr.rs:7:14:7:14 | T | hasPath: | yes | -| gen_path_expr.rs:8:14:8:21 | TypeRepr | hasPath: | yes | -| gen_path_expr.rs:8:26:8:30 | Trait | hasPath: | yes | -| gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | hasPath: | yes | -| gen_path_type_repr.rs:5:40:5:42 | i32 | hasPath: | yes | -| gen_path_type_repr.rs:5:45:5:47 | i32 | hasPath: | yes | -| gen_path_type_repr.rs:6:14:6:20 | ...::Item | hasPath: | yes | +instances +| gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:8:14:8:21 | TypeRepr | +| gen_path_expr.rs:8:26:8:30 | Trait | +| gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | +| gen_path_type_repr.rs:5:40:5:42 | i32 | +| gen_path_type_repr.rs:5:45:5:47 | i32 | +| gen_path_type_repr.rs:6:14:6:20 | ...::Item | +getPath +| gen_path_expr.rs:7:14:7:14 | T | gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:8:14:8:21 | TypeRepr | gen_path_expr.rs:8:14:8:21 | TypeRepr | +| gen_path_expr.rs:8:26:8:30 | Trait | gen_path_expr.rs:8:26:8:30 | Trait | +| gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | +| gen_path_type_repr.rs:5:40:5:42 | i32 | gen_path_type_repr.rs:5:40:5:42 | i32 | +| gen_path_type_repr.rs:5:45:5:47 | i32 | gen_path_type_repr.rs:5:45:5:47 | i32 | +| gen_path_type_repr.rs:6:14:6:20 | ...::Item | gen_path_type_repr.rs:6:14:6:20 | ...::Item | diff --git a/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr.ql b/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr.ql index 0be55070a1b0..5ec18fd220a2 100644 --- a/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from PathTypeRepr x, string hasPath -where - toBeTested(x) and - not x.isUnknown() and - if x.hasPath() then hasPath = "yes" else hasPath = "no" -select x, "hasPath:", hasPath +query predicate instances(PathTypeRepr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getPath(PathTypeRepr x, Path getPath) { + toBeTested(x) and not x.isUnknown() and getPath = x.getPath() +} diff --git a/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr_getPath.expected b/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr_getPath.expected deleted file mode 100644 index 57b46ef2813a..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr_getPath.expected +++ /dev/null @@ -1,7 +0,0 @@ -| gen_path_expr.rs:7:14:7:14 | T | gen_path_expr.rs:7:14:7:14 | T | -| gen_path_expr.rs:8:14:8:21 | TypeRepr | gen_path_expr.rs:8:14:8:21 | TypeRepr | -| gen_path_expr.rs:8:26:8:30 | Trait | gen_path_expr.rs:8:26:8:30 | Trait | -| gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | -| gen_path_type_repr.rs:5:40:5:42 | i32 | gen_path_type_repr.rs:5:40:5:42 | i32 | -| gen_path_type_repr.rs:5:45:5:47 | i32 | gen_path_type_repr.rs:5:45:5:47 | i32 | -| gen_path_type_repr.rs:6:14:6:20 | ...::Item | gen_path_type_repr.rs:6:14:6:20 | ...::Item | diff --git a/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr_getPath.ql b/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr_getPath.ql deleted file mode 100644 index b90c858b4cf9..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/PathTypeRepr_getPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PathTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getPath() diff --git a/rust/ql/test/extractor-tests/generated/Path/Path_getQualifier.expected b/rust/ql/test/extractor-tests/generated/Path/Path_getQualifier.expected deleted file mode 100644 index de116eaca6a8..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/Path_getQualifier.expected +++ /dev/null @@ -1,10 +0,0 @@ -| gen_path.rs:5:9:5:31 | ...::some_module | gen_path.rs:5:9:5:18 | some_crate | -| gen_path.rs:5:9:5:42 | ...::some_item | gen_path.rs:5:9:5:31 | ...::some_module | -| gen_path.rs:6:5:6:12 | ...::bar | gen_path.rs:6:5:6:7 | foo | -| gen_path_expr.rs:6:13:6:20 | ...::bar | gen_path_expr.rs:6:13:6:15 | foo | -| gen_path_expr.rs:7:13:7:20 | ...::foo | gen_path_expr.rs:7:13:7:15 | <...> | -| gen_path_expr.rs:8:13:8:36 | ...::foo | gen_path_expr.rs:8:13:8:31 | <...> | -| gen_path_pat.rs:6:9:6:16 | ...::Bar | gen_path_pat.rs:6:9:6:11 | Foo | -| gen_path_type_repr.rs:5:14:5:29 | ...::collections | gen_path_type_repr.rs:5:14:5:16 | std | -| gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | gen_path_type_repr.rs:5:14:5:29 | ...::collections | -| gen_path_type_repr.rs:6:14:6:20 | ...::Item | gen_path_type_repr.rs:6:14:6:14 | X | diff --git a/rust/ql/test/extractor-tests/generated/Path/Path_getQualifier.ql b/rust/ql/test/extractor-tests/generated/Path/Path_getQualifier.ql deleted file mode 100644 index 7678cffcecad..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/Path_getQualifier.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Path x -where toBeTested(x) and not x.isUnknown() -select x, x.getQualifier() diff --git a/rust/ql/test/extractor-tests/generated/Path/Path_getSegment.expected b/rust/ql/test/extractor-tests/generated/Path/Path_getSegment.expected deleted file mode 100644 index 54cad7249d6e..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/Path_getSegment.expected +++ /dev/null @@ -1,25 +0,0 @@ -| gen_path.rs:5:9:5:18 | some_crate | gen_path.rs:5:9:5:18 | some_crate | -| gen_path.rs:5:9:5:31 | ...::some_module | gen_path.rs:5:21:5:31 | some_module | -| gen_path.rs:5:9:5:42 | ...::some_item | gen_path.rs:5:34:5:42 | some_item | -| gen_path.rs:6:5:6:7 | foo | gen_path.rs:6:5:6:7 | foo | -| gen_path.rs:6:5:6:12 | ...::bar | gen_path.rs:6:10:6:12 | bar | -| gen_path_expr.rs:5:13:5:20 | variable | gen_path_expr.rs:5:13:5:20 | variable | -| gen_path_expr.rs:6:13:6:15 | foo | gen_path_expr.rs:6:13:6:15 | foo | -| gen_path_expr.rs:6:13:6:20 | ...::bar | gen_path_expr.rs:6:18:6:20 | bar | -| gen_path_expr.rs:7:13:7:15 | <...> | gen_path_expr.rs:7:13:7:15 | <...> | -| gen_path_expr.rs:7:13:7:20 | ...::foo | gen_path_expr.rs:7:18:7:20 | foo | -| gen_path_expr.rs:7:14:7:14 | T | gen_path_expr.rs:7:14:7:14 | T | -| gen_path_expr.rs:8:13:8:31 | <...> | gen_path_expr.rs:8:13:8:31 | <...> | -| gen_path_expr.rs:8:13:8:36 | ...::foo | gen_path_expr.rs:8:34:8:36 | foo | -| gen_path_expr.rs:8:14:8:21 | TypeRepr | gen_path_expr.rs:8:14:8:21 | TypeRepr | -| gen_path_expr.rs:8:26:8:30 | Trait | gen_path_expr.rs:8:26:8:30 | Trait | -| gen_path_pat.rs:5:11:5:11 | x | gen_path_pat.rs:5:11:5:11 | x | -| gen_path_pat.rs:6:9:6:11 | Foo | gen_path_pat.rs:6:9:6:11 | Foo | -| gen_path_pat.rs:6:9:6:16 | ...::Bar | gen_path_pat.rs:6:14:6:16 | Bar | -| gen_path_type_repr.rs:5:14:5:16 | std | gen_path_type_repr.rs:5:14:5:16 | std | -| gen_path_type_repr.rs:5:14:5:29 | ...::collections | gen_path_type_repr.rs:5:19:5:29 | collections | -| gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | gen_path_type_repr.rs:5:32:5:48 | HashMap::<...> | -| gen_path_type_repr.rs:5:40:5:42 | i32 | gen_path_type_repr.rs:5:40:5:42 | i32 | -| gen_path_type_repr.rs:5:45:5:47 | i32 | gen_path_type_repr.rs:5:45:5:47 | i32 | -| gen_path_type_repr.rs:6:14:6:14 | X | gen_path_type_repr.rs:6:14:6:14 | X | -| gen_path_type_repr.rs:6:14:6:20 | ...::Item | gen_path_type_repr.rs:6:17:6:20 | Item | diff --git a/rust/ql/test/extractor-tests/generated/Path/Path_getSegment.ql b/rust/ql/test/extractor-tests/generated/Path/Path_getSegment.ql deleted file mode 100644 index 7ccbefb4149b..000000000000 --- a/rust/ql/test/extractor-tests/generated/Path/Path_getSegment.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Path x -where toBeTested(x) and not x.isUnknown() -select x, x.getSegment() diff --git a/rust/ql/test/extractor-tests/generated/PrefixExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/PrefixExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/PrefixExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr.expected b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr.expected index 01ebd0f099ca..056a1a6dd5dd 100644 --- a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr.expected +++ b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr.expected @@ -1,3 +1,13 @@ -| gen_prefix_expr.rs:5:13:5:15 | - ... | getNumberOfAttrs: | 0 | hasExpr: | yes | hasOperatorName: | yes | -| gen_prefix_expr.rs:6:13:6:17 | ! ... | getNumberOfAttrs: | 0 | hasExpr: | yes | hasOperatorName: | yes | -| gen_prefix_expr.rs:7:13:7:16 | * ... | getNumberOfAttrs: | 0 | hasExpr: | yes | hasOperatorName: | yes | +instances +| gen_prefix_expr.rs:5:13:5:15 | - ... | +| gen_prefix_expr.rs:6:13:6:17 | ! ... | +| gen_prefix_expr.rs:7:13:7:16 | * ... | +getAttr +getExpr +| gen_prefix_expr.rs:5:13:5:15 | - ... | gen_prefix_expr.rs:5:14:5:15 | 42 | +| gen_prefix_expr.rs:6:13:6:17 | ! ... | gen_prefix_expr.rs:6:14:6:17 | true | +| gen_prefix_expr.rs:7:13:7:16 | * ... | gen_prefix_expr.rs:7:14:7:16 | ptr | +getOperatorName +| gen_prefix_expr.rs:5:13:5:15 | - ... | - | +| gen_prefix_expr.rs:6:13:6:17 | ! ... | ! | +| gen_prefix_expr.rs:7:13:7:16 | * ... | * | diff --git a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql index 67d69c5363bb..0765d6e07d98 100644 --- a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql +++ b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql @@ -2,12 +2,16 @@ import codeql.rust.elements import TestUtils -from PrefixExpr x, int getNumberOfAttrs, string hasExpr, string hasOperatorName -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasExpr() then hasExpr = "yes" else hasExpr = "no") and - if x.hasOperatorName() then hasOperatorName = "yes" else hasOperatorName = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasExpr:", hasExpr, "hasOperatorName:", - hasOperatorName +query predicate instances(PrefixExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(PrefixExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExpr(PrefixExpr x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} + +query predicate getOperatorName(PrefixExpr x, string getOperatorName) { + toBeTested(x) and not x.isUnknown() and getOperatorName = x.getOperatorName() +} diff --git a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.ql deleted file mode 100644 index 813cb53ae4fb..000000000000 --- a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PrefixExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.expected deleted file mode 100644 index 6c9edcba00d2..000000000000 --- a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.expected +++ /dev/null @@ -1,3 +0,0 @@ -| gen_prefix_expr.rs:5:13:5:15 | - ... | gen_prefix_expr.rs:5:14:5:15 | 42 | -| gen_prefix_expr.rs:6:13:6:17 | ! ... | gen_prefix_expr.rs:6:14:6:17 | true | -| gen_prefix_expr.rs:7:13:7:16 | * ... | gen_prefix_expr.rs:7:14:7:16 | ptr | diff --git a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.ql b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.ql deleted file mode 100644 index d3e054d5eb8d..000000000000 --- a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PrefixExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getOperatorName.expected b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getOperatorName.expected deleted file mode 100644 index 0cee9c31bc3f..000000000000 --- a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getOperatorName.expected +++ /dev/null @@ -1,3 +0,0 @@ -| gen_prefix_expr.rs:5:13:5:15 | - ... | - | -| gen_prefix_expr.rs:6:13:6:17 | ! ... | ! | -| gen_prefix_expr.rs:7:13:7:16 | * ... | * | diff --git a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getOperatorName.ql b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getOperatorName.ql deleted file mode 100644 index 0246ef2465cc..000000000000 --- a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getOperatorName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PrefixExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getOperatorName() diff --git a/rust/ql/test/extractor-tests/generated/PtrTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.expected b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.expected index b975dde09ff2..6414c8ce04a5 100644 --- a/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.expected @@ -1,2 +1,6 @@ -| 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 | +instances +| gen_ptr_type_repr.rs:7:12:7:21 | PtrTypeRepr | isConst: | yes | isMut: | no | +| gen_ptr_type_repr.rs:8:12:8:19 | PtrTypeRepr | isConst: | no | isMut: | yes | +getTypeRepr +| 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/PtrTypeRepr.ql b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.ql index 4cbda847f324..d2a41eb9e591 100644 --- a/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.ql @@ -2,11 +2,17 @@ import codeql.rust.elements import TestUtils -from PtrTypeRepr x, string isConst, string isMut, string hasTypeRepr -where +query predicate instances( + PtrTypeRepr x, string isConst__label, string isConst, string isMut__label, string isMut +) { toBeTested(x) and not x.isUnknown() and + isConst__label = "isConst:" and (if x.isConst() then isConst = "yes" else isConst = "no") and - (if x.isMut() then isMut = "yes" else isMut = "no") and - if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no" -select x, "isConst:", isConst, "isMut:", isMut, "hasTypeRepr:", hasTypeRepr + isMut__label = "isMut:" and + if x.isMut() then isMut = "yes" else isMut = "no" +} + +query predicate getTypeRepr(PtrTypeRepr x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr_getTypeRepr.expected deleted file mode 100644 index 8006e33f1d6b..000000000000 --- a/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr_getTypeRepr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/PtrTypeRepr_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr_getTypeRepr.ql deleted file mode 100644 index 8200677c2b57..000000000000 --- a/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from PtrTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/RangeExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/RangeExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.expected b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.expected index 7d8aeff6dfa9..a79ce67401ad 100644 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.expected +++ b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.expected @@ -1,6 +1,24 @@ -| gen_range_expr.rs:5:13:5:18 | 1..=10 | getNumberOfAttrs: | 0 | hasEnd: | yes | hasOperatorName: | yes | hasStart: | yes | -| gen_range_expr.rs:6:13:6:17 | 1..10 | getNumberOfAttrs: | 0 | hasEnd: | yes | hasOperatorName: | yes | hasStart: | yes | -| gen_range_expr.rs:7:13:7:16 | 10.. | getNumberOfAttrs: | 0 | hasEnd: | no | hasOperatorName: | yes | hasStart: | yes | -| gen_range_expr.rs:8:13:8:16 | ..10 | getNumberOfAttrs: | 0 | hasEnd: | yes | hasOperatorName: | yes | hasStart: | no | -| gen_range_expr.rs:9:13:9:17 | ..=10 | getNumberOfAttrs: | 0 | hasEnd: | yes | hasOperatorName: | yes | hasStart: | no | -| gen_range_expr.rs:10:13:10:14 | .. | getNumberOfAttrs: | 0 | hasEnd: | no | hasOperatorName: | yes | hasStart: | no | +instances +| gen_range_expr.rs:5:13:5:18 | 1..=10 | +| gen_range_expr.rs:6:13:6:17 | 1..10 | +| gen_range_expr.rs:7:13:7:16 | 10.. | +| gen_range_expr.rs:8:13:8:16 | ..10 | +| gen_range_expr.rs:9:13:9:17 | ..=10 | +| gen_range_expr.rs:10:13:10:14 | .. | +getAttr +getEnd +| gen_range_expr.rs:5:13:5:18 | 1..=10 | gen_range_expr.rs:5:17:5:18 | 10 | +| gen_range_expr.rs:6:13:6:17 | 1..10 | gen_range_expr.rs:6:16:6:17 | 10 | +| gen_range_expr.rs:8:13:8:16 | ..10 | gen_range_expr.rs:8:15:8:16 | 10 | +| gen_range_expr.rs:9:13:9:17 | ..=10 | gen_range_expr.rs:9:16:9:17 | 10 | +getOperatorName +| gen_range_expr.rs:5:13:5:18 | 1..=10 | ..= | +| gen_range_expr.rs:6:13:6:17 | 1..10 | .. | +| gen_range_expr.rs:7:13:7:16 | 10.. | .. | +| gen_range_expr.rs:8:13:8:16 | ..10 | .. | +| gen_range_expr.rs:9:13:9:17 | ..=10 | ..= | +| gen_range_expr.rs:10:13:10:14 | .. | .. | +getStart +| gen_range_expr.rs:5:13:5:18 | 1..=10 | gen_range_expr.rs:5:13:5:13 | 1 | +| gen_range_expr.rs:6:13:6:17 | 1..10 | gen_range_expr.rs:6:13:6:13 | 1 | +| gen_range_expr.rs:7:13:7:16 | 10.. | gen_range_expr.rs:7:13:7:14 | 10 | diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.ql b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.ql index c664f1d747e5..69a699f14be5 100644 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.ql +++ b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.ql @@ -2,13 +2,20 @@ import codeql.rust.elements import TestUtils -from RangeExpr x, int getNumberOfAttrs, string hasEnd, string hasOperatorName, string hasStart -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasEnd() then hasEnd = "yes" else hasEnd = "no") and - (if x.hasOperatorName() then hasOperatorName = "yes" else hasOperatorName = "no") and - if x.hasStart() then hasStart = "yes" else hasStart = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasEnd:", hasEnd, "hasOperatorName:", - hasOperatorName, "hasStart:", hasStart +query predicate instances(RangeExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(RangeExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getEnd(RangeExpr x, Expr getEnd) { + toBeTested(x) and not x.isUnknown() and getEnd = x.getEnd() +} + +query predicate getOperatorName(RangeExpr x, string getOperatorName) { + toBeTested(x) and not x.isUnknown() and getOperatorName = x.getOperatorName() +} + +query predicate getStart(RangeExpr x, Expr getStart) { + toBeTested(x) and not x.isUnknown() and getStart = x.getStart() +} diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getAttr.ql deleted file mode 100644 index 1c538e88c29e..000000000000 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RangeExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getEnd.expected b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getEnd.expected deleted file mode 100644 index 46f5dba778c5..000000000000 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getEnd.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_range_expr.rs:5:13:5:18 | 1..=10 | gen_range_expr.rs:5:17:5:18 | 10 | -| gen_range_expr.rs:6:13:6:17 | 1..10 | gen_range_expr.rs:6:16:6:17 | 10 | -| gen_range_expr.rs:8:13:8:16 | ..10 | gen_range_expr.rs:8:15:8:16 | 10 | -| gen_range_expr.rs:9:13:9:17 | ..=10 | gen_range_expr.rs:9:16:9:17 | 10 | diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getEnd.ql b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getEnd.ql deleted file mode 100644 index c39a039099d3..000000000000 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getEnd.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RangeExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getEnd() diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getOperatorName.expected b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getOperatorName.expected deleted file mode 100644 index ee9172ac1ced..000000000000 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getOperatorName.expected +++ /dev/null @@ -1,6 +0,0 @@ -| gen_range_expr.rs:5:13:5:18 | 1..=10 | ..= | -| gen_range_expr.rs:6:13:6:17 | 1..10 | .. | -| gen_range_expr.rs:7:13:7:16 | 10.. | .. | -| gen_range_expr.rs:8:13:8:16 | ..10 | .. | -| gen_range_expr.rs:9:13:9:17 | ..=10 | ..= | -| gen_range_expr.rs:10:13:10:14 | .. | .. | diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getOperatorName.ql b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getOperatorName.ql deleted file mode 100644 index f554a9ecf747..000000000000 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getOperatorName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RangeExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getOperatorName() diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getStart.expected b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getStart.expected deleted file mode 100644 index 7f58ee5299fb..000000000000 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getStart.expected +++ /dev/null @@ -1,3 +0,0 @@ -| gen_range_expr.rs:5:13:5:18 | 1..=10 | gen_range_expr.rs:5:13:5:13 | 1 | -| gen_range_expr.rs:6:13:6:17 | 1..10 | gen_range_expr.rs:6:13:6:13 | 1 | -| gen_range_expr.rs:7:13:7:16 | 10.. | gen_range_expr.rs:7:13:7:14 | 10 | diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getStart.ql b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getStart.ql deleted file mode 100644 index d47b9e81b861..000000000000 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getStart.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RangeExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getStart() diff --git a/rust/ql/test/extractor-tests/generated/RangePat/Cargo.lock b/rust/ql/test/extractor-tests/generated/RangePat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/RangePat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/RangePat/RangePat.expected b/rust/ql/test/extractor-tests/generated/RangePat/RangePat.expected index ec32f2a5a1c4..969ccf754df7 100644 --- a/rust/ql/test/extractor-tests/generated/RangePat/RangePat.expected +++ b/rust/ql/test/extractor-tests/generated/RangePat/RangePat.expected @@ -1,3 +1,14 @@ -| gen_range_pat.rs:6:9:6:12 | RangePat | hasEnd: | yes | hasOperatorName: | yes | hasStart: | no | -| gen_range_pat.rs:7:9:7:15 | RangePat | hasEnd: | yes | hasOperatorName: | yes | hasStart: | yes | -| gen_range_pat.rs:8:9:8:12 | RangePat | hasEnd: | no | hasOperatorName: | yes | hasStart: | yes | +instances +| gen_range_pat.rs:6:9:6:12 | RangePat | +| gen_range_pat.rs:7:9:7:15 | RangePat | +| gen_range_pat.rs:8:9:8:12 | RangePat | +getEnd +| gen_range_pat.rs:6:9:6:12 | RangePat | gen_range_pat.rs:6:11:6:12 | 15 | +| gen_range_pat.rs:7:9:7:15 | RangePat | gen_range_pat.rs:7:14:7:15 | 25 | +getOperatorName +| gen_range_pat.rs:6:9:6:12 | RangePat | .. | +| gen_range_pat.rs:7:9:7:15 | RangePat | ..= | +| gen_range_pat.rs:8:9:8:12 | RangePat | .. | +getStart +| gen_range_pat.rs:7:9:7:15 | RangePat | gen_range_pat.rs:7:9:7:10 | 16 | +| gen_range_pat.rs:8:9:8:12 | RangePat | gen_range_pat.rs:8:9:8:10 | 26 | diff --git a/rust/ql/test/extractor-tests/generated/RangePat/RangePat.ql b/rust/ql/test/extractor-tests/generated/RangePat/RangePat.ql index d9b4bb413488..19070c77f263 100644 --- a/rust/ql/test/extractor-tests/generated/RangePat/RangePat.ql +++ b/rust/ql/test/extractor-tests/generated/RangePat/RangePat.ql @@ -2,11 +2,16 @@ import codeql.rust.elements import TestUtils -from RangePat x, string hasEnd, string hasOperatorName, string hasStart -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasEnd() then hasEnd = "yes" else hasEnd = "no") and - (if x.hasOperatorName() then hasOperatorName = "yes" else hasOperatorName = "no") and - if x.hasStart() then hasStart = "yes" else hasStart = "no" -select x, "hasEnd:", hasEnd, "hasOperatorName:", hasOperatorName, "hasStart:", hasStart +query predicate instances(RangePat x) { toBeTested(x) and not x.isUnknown() } + +query predicate getEnd(RangePat x, Pat getEnd) { + toBeTested(x) and not x.isUnknown() and getEnd = x.getEnd() +} + +query predicate getOperatorName(RangePat x, string getOperatorName) { + toBeTested(x) and not x.isUnknown() and getOperatorName = x.getOperatorName() +} + +query predicate getStart(RangePat x, Pat getStart) { + toBeTested(x) and not x.isUnknown() and getStart = x.getStart() +} diff --git a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getEnd.expected b/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getEnd.expected deleted file mode 100644 index 38ded3fb940d..000000000000 --- a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getEnd.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_range_pat.rs:6:9:6:12 | RangePat | gen_range_pat.rs:6:11:6:12 | 15 | -| gen_range_pat.rs:7:9:7:15 | RangePat | gen_range_pat.rs:7:14:7:15 | 25 | diff --git a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getEnd.ql b/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getEnd.ql deleted file mode 100644 index 61a27c775438..000000000000 --- a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getEnd.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RangePat x -where toBeTested(x) and not x.isUnknown() -select x, x.getEnd() diff --git a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getOperatorName.expected b/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getOperatorName.expected deleted file mode 100644 index 537608104c7b..000000000000 --- a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getOperatorName.expected +++ /dev/null @@ -1,3 +0,0 @@ -| gen_range_pat.rs:6:9:6:12 | RangePat | .. | -| gen_range_pat.rs:7:9:7:15 | RangePat | ..= | -| gen_range_pat.rs:8:9:8:12 | RangePat | .. | diff --git a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getOperatorName.ql b/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getOperatorName.ql deleted file mode 100644 index f2f3052eae35..000000000000 --- a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getOperatorName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RangePat x -where toBeTested(x) and not x.isUnknown() -select x, x.getOperatorName() diff --git a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getStart.expected b/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getStart.expected deleted file mode 100644 index ac6eadaf08c0..000000000000 --- a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getStart.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_range_pat.rs:7:9:7:15 | RangePat | gen_range_pat.rs:7:9:7:10 | 16 | -| gen_range_pat.rs:8:9:8:12 | RangePat | gen_range_pat.rs:8:9:8:10 | 26 | diff --git a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getStart.ql b/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getStart.ql deleted file mode 100644 index 29bbeda81cf1..000000000000 --- a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getStart.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RangePat x -where toBeTested(x) and not x.isUnknown() -select x, x.getStart() diff --git a/rust/ql/test/extractor-tests/generated/RefExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/RefExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/RefExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.expected b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.expected index 412f82142060..031daf888884 100644 --- a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.expected +++ b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.expected @@ -1,4 +1,11 @@ -| gen_ref_expr.rs:5:25:5:28 | &foo | getNumberOfAttrs: | 0 | hasExpr: | yes | isConst: | no | isMut: | no | isRaw: | no | -| gen_ref_expr.rs:6:23:6:30 | &mut foo | getNumberOfAttrs: | 0 | hasExpr: | yes | isConst: | no | isMut: | yes | isRaw: | no | -| gen_ref_expr.rs:7:35:7:48 | &raw const foo | getNumberOfAttrs: | 0 | hasExpr: | yes | isConst: | yes | isMut: | no | isRaw: | yes | -| gen_ref_expr.rs:8:33:8:44 | &raw mut foo | getNumberOfAttrs: | 0 | hasExpr: | yes | isConst: | no | isMut: | yes | isRaw: | yes | +instances +| gen_ref_expr.rs:5:25:5:28 | &foo | isConst: | no | isMut: | no | isRaw: | no | +| gen_ref_expr.rs:6:23:6:30 | &mut foo | isConst: | no | isMut: | yes | isRaw: | no | +| gen_ref_expr.rs:7:35:7:48 | &raw const foo | isConst: | yes | isMut: | no | isRaw: | yes | +| gen_ref_expr.rs:8:33:8:44 | &raw mut foo | isConst: | no | isMut: | yes | isRaw: | yes | +getAttr +getExpr +| gen_ref_expr.rs:5:25:5:28 | &foo | gen_ref_expr.rs:5:26:5:28 | foo | +| gen_ref_expr.rs:6:23:6:30 | &mut foo | gen_ref_expr.rs:6:28:6:30 | foo | +| gen_ref_expr.rs:7:35:7:48 | &raw const foo | gen_ref_expr.rs:7:46:7:48 | foo | +| gen_ref_expr.rs:8:33:8:44 | &raw mut foo | gen_ref_expr.rs:8:42:8:44 | foo | diff --git a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.ql b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.ql index a2567b81ed75..a9ae1f9ae8d4 100644 --- a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.ql +++ b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.ql @@ -2,14 +2,24 @@ import codeql.rust.elements import TestUtils -from RefExpr x, int getNumberOfAttrs, string hasExpr, string isConst, string isMut, string isRaw -where +query predicate instances( + RefExpr x, string isConst__label, string isConst, string isMut__label, string isMut, + string isRaw__label, string isRaw +) { toBeTested(x) and not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasExpr() then hasExpr = "yes" else hasExpr = "no") and + isConst__label = "isConst:" and (if x.isConst() then isConst = "yes" else isConst = "no") and + isMut__label = "isMut:" and (if x.isMut() then isMut = "yes" else isMut = "no") and + isRaw__label = "isRaw:" and if x.isRaw() then isRaw = "yes" else isRaw = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasExpr:", hasExpr, "isConst:", isConst, "isMut:", - isMut, "isRaw:", isRaw +} + +query predicate getAttr(RefExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExpr(RefExpr x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getAttr.ql deleted file mode 100644 index 7ef6d44228e4..000000000000 --- a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RefExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.expected deleted file mode 100644 index 7709668f6fd8..000000000000 --- a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_ref_expr.rs:5:25:5:28 | &foo | gen_ref_expr.rs:5:26:5:28 | foo | -| gen_ref_expr.rs:6:23:6:30 | &mut foo | gen_ref_expr.rs:6:28:6:30 | foo | -| gen_ref_expr.rs:7:35:7:48 | &raw const foo | gen_ref_expr.rs:7:46:7:48 | foo | -| gen_ref_expr.rs:8:33:8:44 | &raw mut foo | gen_ref_expr.rs:8:42:8:44 | foo | diff --git a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.ql b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.ql deleted file mode 100644 index b1404db9783a..000000000000 --- a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RefExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/RefPat/Cargo.lock b/rust/ql/test/extractor-tests/generated/RefPat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/RefPat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/RefPat/RefPat.expected b/rust/ql/test/extractor-tests/generated/RefPat/RefPat.expected index a9dfaf874561..0babab322d30 100644 --- a/rust/ql/test/extractor-tests/generated/RefPat/RefPat.expected +++ b/rust/ql/test/extractor-tests/generated/RefPat/RefPat.expected @@ -1,2 +1,6 @@ -| gen_ref_pat.rs:6:9:6:28 | &mut ... | isMut: | yes | hasPat: | yes | -| gen_ref_pat.rs:7:9:7:21 | &...::None | isMut: | no | hasPat: | yes | +instances +| gen_ref_pat.rs:6:9:6:28 | &mut ... | isMut: | yes | +| gen_ref_pat.rs:7:9:7:21 | &...::None | isMut: | no | +getPat +| gen_ref_pat.rs:6:9:6:28 | &mut ... | gen_ref_pat.rs:6:14:6:28 | ...::Some(...) | +| gen_ref_pat.rs:7:9:7:21 | &...::None | gen_ref_pat.rs:7:10:7:21 | ...::None | diff --git a/rust/ql/test/extractor-tests/generated/RefPat/RefPat.ql b/rust/ql/test/extractor-tests/generated/RefPat/RefPat.ql index 4ae72433dad4..3e8ec464569d 100644 --- a/rust/ql/test/extractor-tests/generated/RefPat/RefPat.ql +++ b/rust/ql/test/extractor-tests/generated/RefPat/RefPat.ql @@ -2,10 +2,13 @@ import codeql.rust.elements import TestUtils -from RefPat x, string isMut, string hasPat -where +query predicate instances(RefPat x, string isMut__label, string isMut) { toBeTested(x) and not x.isUnknown() and - (if x.isMut() then isMut = "yes" else isMut = "no") and - if x.hasPat() then hasPat = "yes" else hasPat = "no" -select x, "isMut:", isMut, "hasPat:", hasPat + isMut__label = "isMut:" and + if x.isMut() then isMut = "yes" else isMut = "no" +} + +query predicate getPat(RefPat x, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat() +} diff --git a/rust/ql/test/extractor-tests/generated/RefPat/RefPat_getPat.expected b/rust/ql/test/extractor-tests/generated/RefPat/RefPat_getPat.expected deleted file mode 100644 index 029fd9fa1722..000000000000 --- a/rust/ql/test/extractor-tests/generated/RefPat/RefPat_getPat.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_ref_pat.rs:6:9:6:28 | &mut ... | gen_ref_pat.rs:6:14:6:28 | ...::Some(...) | -| gen_ref_pat.rs:7:9:7:21 | &...::None | gen_ref_pat.rs:7:10:7:21 | ...::None | diff --git a/rust/ql/test/extractor-tests/generated/RefPat/RefPat_getPat.ql b/rust/ql/test/extractor-tests/generated/RefPat/RefPat_getPat.ql deleted file mode 100644 index 758e4e7895ed..000000000000 --- a/rust/ql/test/extractor-tests/generated/RefPat/RefPat_getPat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RefPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getPat() diff --git a/rust/ql/test/extractor-tests/generated/RefTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/RefTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/RefTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.expected b/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.expected index da74246c0db4..d48b8b7b9980 100644 --- a/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.expected @@ -1,2 +1,7 @@ -| 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 | +instances +| gen_ref_type_repr.rs:7:12:7:15 | RefTypeRepr | isMut: | no | +| gen_ref_type_repr.rs:8:12:8:19 | RefTypeRepr | isMut: | yes | +getLifetime +getTypeRepr +| 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/RefTypeRepr.ql b/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.ql index e60d7faa8ed2..a414e9a3e664 100644 --- a/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.ql @@ -2,11 +2,17 @@ import codeql.rust.elements import TestUtils -from RefTypeRepr x, string isMut, string hasLifetime, string hasTypeRepr -where +query predicate instances(RefTypeRepr x, string isMut__label, string isMut) { toBeTested(x) and not x.isUnknown() and - (if x.isMut() then isMut = "yes" else isMut = "no") and - (if x.hasLifetime() then hasLifetime = "yes" else hasLifetime = "no") and - if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no" -select x, "isMut:", isMut, "hasLifetime:", hasLifetime, "hasTypeRepr:", hasTypeRepr + isMut__label = "isMut:" and + if x.isMut() then isMut = "yes" else isMut = "no" +} + +query predicate getLifetime(RefTypeRepr x, Lifetime getLifetime) { + toBeTested(x) and not x.isUnknown() and getLifetime = x.getLifetime() +} + +query predicate getTypeRepr(RefTypeRepr x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getLifetime.expected b/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getLifetime.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getLifetime.ql b/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getLifetime.ql deleted file mode 100644 index 9d857300ea47..000000000000 --- a/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getLifetime.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RefTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getLifetime() diff --git a/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getTypeRepr.expected deleted file mode 100644 index 59518bf37431..000000000000 --- a/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getTypeRepr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/RefTypeRepr_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getTypeRepr.ql deleted file mode 100644 index 1e04fa75ab3a..000000000000 --- a/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RefTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/Rename/Cargo.lock b/rust/ql/test/extractor-tests/generated/Rename/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Rename/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Rename/Rename.expected b/rust/ql/test/extractor-tests/generated/Rename/Rename.expected index 3568d798d288..73137c57c987 100644 --- a/rust/ql/test/extractor-tests/generated/Rename/Rename.expected +++ b/rust/ql/test/extractor-tests/generated/Rename/Rename.expected @@ -1 +1,4 @@ -| gen_rename.rs:7:13:7:18 | Rename | hasName: | yes | +instances +| gen_rename.rs:7:13:7:18 | Rename | +getName +| 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/Rename.ql b/rust/ql/test/extractor-tests/generated/Rename/Rename.ql index 91e748797f2c..170b5e8bd7bf 100644 --- a/rust/ql/test/extractor-tests/generated/Rename/Rename.ql +++ b/rust/ql/test/extractor-tests/generated/Rename/Rename.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from Rename x, string hasName -where - toBeTested(x) and - not x.isUnknown() and - if x.hasName() then hasName = "yes" else hasName = "no" -select x, "hasName:", hasName +query predicate instances(Rename x) { toBeTested(x) and not x.isUnknown() } + +query predicate getName(Rename x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} diff --git a/rust/ql/test/extractor-tests/generated/Rename/Rename_getName.expected b/rust/ql/test/extractor-tests/generated/Rename/Rename_getName.expected deleted file mode 100644 index 323982f910df..000000000000 --- a/rust/ql/test/extractor-tests/generated/Rename/Rename_getName.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/Rename_getName.ql b/rust/ql/test/extractor-tests/generated/Rename/Rename_getName.ql deleted file mode 100644 index 59df9dcf5cae..000000000000 --- a/rust/ql/test/extractor-tests/generated/Rename/Rename_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Rename x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/RestPat/Cargo.lock b/rust/ql/test/extractor-tests/generated/RestPat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/RestPat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/RestPat/RestPat.expected b/rust/ql/test/extractor-tests/generated/RestPat/RestPat.expected index c5d19cda38db..6fd34b7cf234 100644 --- a/rust/ql/test/extractor-tests/generated/RestPat/RestPat.expected +++ b/rust/ql/test/extractor-tests/generated/RestPat/RestPat.expected @@ -1 +1,3 @@ -| gen_rest_pat.rs:7:13:7:14 | .. | getNumberOfAttrs: | 0 | +instances +| gen_rest_pat.rs:7:13:7:14 | .. | +getAttr diff --git a/rust/ql/test/extractor-tests/generated/RestPat/RestPat.ql b/rust/ql/test/extractor-tests/generated/RestPat/RestPat.ql index c3cb2a24f832..3754d7fd2f23 100644 --- a/rust/ql/test/extractor-tests/generated/RestPat/RestPat.ql +++ b/rust/ql/test/extractor-tests/generated/RestPat/RestPat.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from RestPat x, int getNumberOfAttrs -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() -select x, "getNumberOfAttrs:", getNumberOfAttrs +query predicate instances(RestPat x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(RestPat x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} diff --git a/rust/ql/test/extractor-tests/generated/RestPat/RestPat_getAttr.expected b/rust/ql/test/extractor-tests/generated/RestPat/RestPat_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/RestPat/RestPat_getAttr.ql b/rust/ql/test/extractor-tests/generated/RestPat/RestPat_getAttr.ql deleted file mode 100644 index e85a7975b6be..000000000000 --- a/rust/ql/test/extractor-tests/generated/RestPat/RestPat_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RestPat x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/RetTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/RetTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/RetTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.expected b/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.expected index 18726b694bf4..5b6612981945 100644 --- a/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.expected @@ -1,2 +1,6 @@ -| gen_ret_type_repr.rs:3:25:3:29 | RetTypeRepr | hasTypeRepr: | yes | -| gen_ret_type_repr.rs:7:14:7:19 | RetTypeRepr | hasTypeRepr: | yes | +instances +| gen_ret_type_repr.rs:3:25:3:29 | RetTypeRepr | +| gen_ret_type_repr.rs:7:14:7:19 | RetTypeRepr | +getTypeRepr +| 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/RetTypeRepr.ql b/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.ql index d03f9d4f1b6d..b92b05897e83 100644 --- a/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from RetTypeRepr x, string hasTypeRepr -where - toBeTested(x) and - not x.isUnknown() and - if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no" -select x, "hasTypeRepr:", hasTypeRepr +query predicate instances(RetTypeRepr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getTypeRepr(RetTypeRepr x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr_getTypeRepr.expected deleted file mode 100644 index c150253243ef..000000000000 --- a/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr_getTypeRepr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/RetTypeRepr_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr_getTypeRepr.ql deleted file mode 100644 index b2a7bf73d763..000000000000 --- a/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from RetTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/ReturnExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/ReturnExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ReturnExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.expected b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.expected index 83220773989e..e978eca2e7ca 100644 --- a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.expected @@ -1,2 +1,6 @@ -| gen_return_expr.rs:5:5:5:13 | return 42 | getNumberOfAttrs: | 0 | hasExpr: | yes | -| gen_return_expr.rs:8:5:8:10 | return | getNumberOfAttrs: | 0 | hasExpr: | no | +instances +| gen_return_expr.rs:5:5:5:13 | return 42 | +| gen_return_expr.rs:8:5:8:10 | return | +getAttr +getExpr +| gen_return_expr.rs:5:5:5:13 | return 42 | gen_return_expr.rs:5:12:5:13 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql index aa8c4d886a7b..11eeed2222cb 100644 --- a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from ReturnExpr x, int getNumberOfAttrs, string hasExpr -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - if x.hasExpr() then hasExpr = "yes" else hasExpr = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasExpr:", hasExpr +query predicate instances(ReturnExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(ReturnExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExpr(ReturnExpr x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getAttr.ql deleted file mode 100644 index 23366928f39f..000000000000 --- a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ReturnExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getExpr.expected deleted file mode 100644 index c75ecd0b23c5..000000000000 --- a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_return_expr.rs:5:5:5:13 | return 42 | gen_return_expr.rs:5:12:5:13 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getExpr.ql b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getExpr.ql deleted file mode 100644 index 8f682d7a5b1e..000000000000 --- a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from ReturnExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/Cargo.lock b/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/ReturnTypeSyntax.ql b/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/ReturnTypeSyntax.ql index e29f818af433..0b84f93a9b23 100644 --- a/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/ReturnTypeSyntax.ql +++ b/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/ReturnTypeSyntax.ql @@ -2,6 +2,4 @@ import codeql.rust.elements import TestUtils -from ReturnTypeSyntax x -where toBeTested(x) and not x.isUnknown() -select x +query predicate instances(ReturnTypeSyntax x) { toBeTested(x) and not x.isUnknown() } diff --git a/rust/ql/test/extractor-tests/generated/SelfParam/Cargo.lock b/rust/ql/test/extractor-tests/generated/SelfParam/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/SelfParam/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam.expected b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam.expected index ba8ab1e624d6..faa10f8e9121 100644 --- a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam.expected +++ b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam.expected @@ -1,5 +1,16 @@ -| gen_self_param.rs:6:10:6:14 | SelfParam | getNumberOfAttrs: | 0 | hasTypeRepr: | no | isRef: | yes | isMut: | no | hasLifetime: | no | hasName: | yes | -| gen_self_param.rs:7:10:7:18 | SelfParam | getNumberOfAttrs: | 0 | hasTypeRepr: | no | isRef: | yes | isMut: | yes | hasLifetime: | no | hasName: | yes | -| gen_self_param.rs:8:12:8:15 | SelfParam | getNumberOfAttrs: | 0 | hasTypeRepr: | no | isRef: | no | isMut: | no | hasLifetime: | no | hasName: | yes | -| gen_self_param.rs:9:11:9:18 | SelfParam | getNumberOfAttrs: | 0 | hasTypeRepr: | no | isRef: | no | isMut: | yes | hasLifetime: | no | hasName: | yes | -| gen_self_param.rs:10:15:10:22 | SelfParam | getNumberOfAttrs: | 0 | hasTypeRepr: | no | isRef: | yes | isMut: | no | hasLifetime: | yes | hasName: | yes | +instances +| gen_self_param.rs:6:10:6:14 | SelfParam | isRef: | yes | isMut: | no | +| gen_self_param.rs:7:10:7:18 | SelfParam | isRef: | yes | isMut: | yes | +| gen_self_param.rs:8:12:8:15 | SelfParam | isRef: | no | isMut: | no | +| gen_self_param.rs:9:11:9:18 | SelfParam | isRef: | no | isMut: | yes | +| gen_self_param.rs:10:15:10:22 | SelfParam | isRef: | yes | isMut: | no | +getAttr +getTypeRepr +getLifetime +| gen_self_param.rs:10:15:10:22 | SelfParam | gen_self_param.rs:10:16:10:17 | 'a | +getName +| gen_self_param.rs:6:10:6:14 | SelfParam | gen_self_param.rs:6:11:6:14 | self | +| gen_self_param.rs:7:10:7:18 | SelfParam | gen_self_param.rs:7:15:7:18 | self | +| gen_self_param.rs:8:12:8:15 | SelfParam | gen_self_param.rs:8:12:8:15 | self | +| gen_self_param.rs:9:11:9:18 | SelfParam | gen_self_param.rs:9:15:9:18 | self | +| gen_self_param.rs:10:15:10:22 | SelfParam | gen_self_param.rs:10:19:10:22 | self | diff --git a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam.ql b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam.ql index 3f09c3ece20b..07dd03a406f1 100644 --- a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam.ql +++ b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam.ql @@ -2,17 +2,29 @@ import codeql.rust.elements import TestUtils -from - SelfParam x, int getNumberOfAttrs, string hasTypeRepr, string isRef, string isMut, - string hasLifetime, string hasName -where +query predicate instances( + SelfParam x, string isRef__label, string isRef, string isMut__label, string isMut +) { toBeTested(x) and not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and + isRef__label = "isRef:" and (if x.isRef() then isRef = "yes" else isRef = "no") and - (if x.isMut() then isMut = "yes" else isMut = "no") and - (if x.hasLifetime() then hasLifetime = "yes" else hasLifetime = "no") and - if x.hasName() then hasName = "yes" else hasName = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasTypeRepr:", hasTypeRepr, "isRef:", isRef, - "isMut:", isMut, "hasLifetime:", hasLifetime, "hasName:", hasName + isMut__label = "isMut:" and + if x.isMut() then isMut = "yes" else isMut = "no" +} + +query predicate getAttr(SelfParam x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getTypeRepr(SelfParam x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} + +query predicate getLifetime(SelfParam x, Lifetime getLifetime) { + toBeTested(x) and not x.isUnknown() and getLifetime = x.getLifetime() +} + +query predicate getName(SelfParam x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} diff --git a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getAttr.expected b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getAttr.ql b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getAttr.ql deleted file mode 100644 index 682c1a9374a9..000000000000 --- a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from SelfParam x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getLifetime.expected b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getLifetime.expected deleted file mode 100644 index cfe91c68c858..000000000000 --- a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getLifetime.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_self_param.rs:10:15:10:22 | SelfParam | gen_self_param.rs:10:16:10:17 | 'a | diff --git a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getLifetime.ql b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getLifetime.ql deleted file mode 100644 index a64eb368a711..000000000000 --- a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getLifetime.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from SelfParam x -where toBeTested(x) and not x.isUnknown() -select x, x.getLifetime() diff --git a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getName.expected b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getName.expected deleted file mode 100644 index 6b57cfe1570a..000000000000 --- a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getName.expected +++ /dev/null @@ -1,5 +0,0 @@ -| gen_self_param.rs:6:10:6:14 | SelfParam | gen_self_param.rs:6:11:6:14 | self | -| gen_self_param.rs:7:10:7:18 | SelfParam | gen_self_param.rs:7:15:7:18 | self | -| gen_self_param.rs:8:12:8:15 | SelfParam | gen_self_param.rs:8:12:8:15 | self | -| gen_self_param.rs:9:11:9:18 | SelfParam | gen_self_param.rs:9:15:9:18 | self | -| gen_self_param.rs:10:15:10:22 | SelfParam | gen_self_param.rs:10:19:10:22 | self | diff --git a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getName.ql b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getName.ql deleted file mode 100644 index 7a99270bfa5f..000000000000 --- a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from SelfParam x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getTypeRepr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getTypeRepr.ql deleted file mode 100644 index 0be0ec9902d9..000000000000 --- a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from SelfParam x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/SlicePat/Cargo.lock b/rust/ql/test/extractor-tests/generated/SlicePat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/SlicePat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat.expected b/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat.expected index 0821ea233238..0594cf27e557 100644 --- a/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat.expected +++ b/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat.expected @@ -1,3 +1,18 @@ -| gen_slice_pat.rs:6:9:6:23 | SlicePat | getNumberOfPats: | 5 | -| gen_slice_pat.rs:7:9:7:18 | SlicePat | getNumberOfPats: | 3 | -| gen_slice_pat.rs:8:9:8:24 | SlicePat | getNumberOfPats: | 5 | +instances +| gen_slice_pat.rs:6:9:6:23 | SlicePat | +| gen_slice_pat.rs:7:9:7:18 | SlicePat | +| gen_slice_pat.rs:8:9:8:24 | SlicePat | +getPat +| gen_slice_pat.rs:6:9:6:23 | SlicePat | 0 | gen_slice_pat.rs:6:10:6:10 | 1 | +| gen_slice_pat.rs:6:9:6:23 | SlicePat | 1 | gen_slice_pat.rs:6:13:6:13 | 2 | +| gen_slice_pat.rs:6:9:6:23 | SlicePat | 2 | gen_slice_pat.rs:6:16:6:16 | 3 | +| gen_slice_pat.rs:6:9:6:23 | SlicePat | 3 | gen_slice_pat.rs:6:19:6:19 | 4 | +| gen_slice_pat.rs:6:9:6:23 | SlicePat | 4 | gen_slice_pat.rs:6:22:6:22 | 5 | +| gen_slice_pat.rs:7:9:7:18 | SlicePat | 0 | gen_slice_pat.rs:7:10:7:10 | 1 | +| gen_slice_pat.rs:7:9:7:18 | SlicePat | 1 | gen_slice_pat.rs:7:13:7:13 | 2 | +| gen_slice_pat.rs:7:9:7:18 | SlicePat | 2 | gen_slice_pat.rs:7:16:7:17 | .. | +| gen_slice_pat.rs:8:9:8:24 | SlicePat | 0 | gen_slice_pat.rs:8:10:8:10 | x | +| gen_slice_pat.rs:8:9:8:24 | SlicePat | 1 | gen_slice_pat.rs:8:13:8:13 | y | +| gen_slice_pat.rs:8:9:8:24 | SlicePat | 2 | gen_slice_pat.rs:8:16:8:17 | .. | +| gen_slice_pat.rs:8:9:8:24 | SlicePat | 3 | gen_slice_pat.rs:8:20:8:20 | z | +| gen_slice_pat.rs:8:9:8:24 | SlicePat | 4 | gen_slice_pat.rs:8:23:8:23 | 7 | diff --git a/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat.ql b/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat.ql index 2b6c51f9da6a..b4b0e9430363 100644 --- a/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat.ql +++ b/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from SlicePat x, int getNumberOfPats -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfPats = x.getNumberOfPats() -select x, "getNumberOfPats:", getNumberOfPats +query predicate instances(SlicePat x) { toBeTested(x) and not x.isUnknown() } + +query predicate getPat(SlicePat x, int index, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat(index) +} diff --git a/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat_getPat.expected b/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat_getPat.expected deleted file mode 100644 index 0725988f37fd..000000000000 --- a/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat_getPat.expected +++ /dev/null @@ -1,13 +0,0 @@ -| gen_slice_pat.rs:6:9:6:23 | SlicePat | 0 | gen_slice_pat.rs:6:10:6:10 | 1 | -| gen_slice_pat.rs:6:9:6:23 | SlicePat | 1 | gen_slice_pat.rs:6:13:6:13 | 2 | -| gen_slice_pat.rs:6:9:6:23 | SlicePat | 2 | gen_slice_pat.rs:6:16:6:16 | 3 | -| gen_slice_pat.rs:6:9:6:23 | SlicePat | 3 | gen_slice_pat.rs:6:19:6:19 | 4 | -| gen_slice_pat.rs:6:9:6:23 | SlicePat | 4 | gen_slice_pat.rs:6:22:6:22 | 5 | -| gen_slice_pat.rs:7:9:7:18 | SlicePat | 0 | gen_slice_pat.rs:7:10:7:10 | 1 | -| gen_slice_pat.rs:7:9:7:18 | SlicePat | 1 | gen_slice_pat.rs:7:13:7:13 | 2 | -| gen_slice_pat.rs:7:9:7:18 | SlicePat | 2 | gen_slice_pat.rs:7:16:7:17 | .. | -| gen_slice_pat.rs:8:9:8:24 | SlicePat | 0 | gen_slice_pat.rs:8:10:8:10 | x | -| gen_slice_pat.rs:8:9:8:24 | SlicePat | 1 | gen_slice_pat.rs:8:13:8:13 | y | -| gen_slice_pat.rs:8:9:8:24 | SlicePat | 2 | gen_slice_pat.rs:8:16:8:17 | .. | -| gen_slice_pat.rs:8:9:8:24 | SlicePat | 3 | gen_slice_pat.rs:8:20:8:20 | z | -| gen_slice_pat.rs:8:9:8:24 | SlicePat | 4 | gen_slice_pat.rs:8:23:8:23 | 7 | diff --git a/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat_getPat.ql b/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat_getPat.ql deleted file mode 100644 index 37194fd2f1d2..000000000000 --- a/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat_getPat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from SlicePat x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getPat(index) diff --git a/rust/ql/test/extractor-tests/generated/SliceTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.expected b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.expected index dfcfb754437f..20b1883e4d36 100644 --- a/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.expected @@ -1 +1,4 @@ -| gen_slice_type_repr.rs:7:13:7:17 | SliceTypeRepr | hasTypeRepr: | yes | +instances +| gen_slice_type_repr.rs:7:13:7:17 | SliceTypeRepr | +getTypeRepr +| 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/SliceTypeRepr.ql b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.ql index 4f60ce58624c..b32b4edf6d3c 100644 --- a/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from SliceTypeRepr x, string hasTypeRepr -where - toBeTested(x) and - not x.isUnknown() and - if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no" -select x, "hasTypeRepr:", hasTypeRepr +query predicate instances(SliceTypeRepr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getTypeRepr(SliceTypeRepr x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr_getTypeRepr.expected deleted file mode 100644 index 7c0b5e94e2f3..000000000000 --- a/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr_getTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/SliceTypeRepr_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr_getTypeRepr.ql deleted file mode 100644 index 80d2c59ba290..000000000000 --- a/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from SliceTypeRepr x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/SourceFile/Cargo.lock b/rust/ql/test/extractor-tests/generated/SourceFile/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/SourceFile/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.expected b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.expected index e354381a9216..e308c26daa80 100644 --- a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.expected +++ b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.expected @@ -1,2 +1,7 @@ -| gen_source_file.rs:1:1:9:2 | SourceFile | getNumberOfAttrs: | 0 | getNumberOfItems: | 1 | -| lib.rs:1:1:1:20 | SourceFile | getNumberOfAttrs: | 0 | getNumberOfItems: | 1 | +instances +| gen_source_file.rs:1:1:9:2 | SourceFile | +| lib.rs:1:1:1:20 | SourceFile | +getAttr +getItem +| 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/SourceFile.ql b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.ql index b904bf731a88..257752e706e6 100644 --- a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.ql +++ b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from SourceFile x, int getNumberOfAttrs, int getNumberOfItems -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - getNumberOfItems = x.getNumberOfItems() -select x, "getNumberOfAttrs:", getNumberOfAttrs, "getNumberOfItems:", getNumberOfItems +query predicate instances(SourceFile x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(SourceFile x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getItem(SourceFile x, int index, Item getItem) { + toBeTested(x) and not x.isUnknown() and getItem = x.getItem(index) +} diff --git a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getAttr.expected b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getAttr.ql b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getAttr.ql deleted file mode 100644 index d1842052239c..000000000000 --- a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from SourceFile x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getItem.expected b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getItem.expected deleted file mode 100644 index 236a2a0755b8..000000000000 --- a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getItem.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/SourceFile_getItem.ql b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getItem.ql deleted file mode 100644 index 339ea18c216b..000000000000 --- a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getItem.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from SourceFile x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getItem(index) diff --git a/rust/ql/test/extractor-tests/generated/Static/Cargo.lock b/rust/ql/test/extractor-tests/generated/Static/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Static/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Static/Static.expected b/rust/ql/test/extractor-tests/generated/Static/Static.expected index 076578efe684..ee87d07a2c18 100644 --- a/rust/ql/test/extractor-tests/generated/Static/Static.expected +++ b/rust/ql/test/extractor-tests/generated/Static/Static.expected @@ -1 +1,13 @@ -| 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 | +instances +| gen_static.rs:4:5:7:23 | Static | isMut: | no | isStatic: | yes | isUnsafe: | no | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getAttr +getBody +| gen_static.rs:4:5:7:23 | Static | gen_static.rs:7:21:7:22 | 42 | +getName +| gen_static.rs:4:5:7:23 | Static | gen_static.rs:7:12:7:12 | X | +getTypeRepr +| gen_static.rs:4:5:7:23 | Static | gen_static.rs:7:15:7:17 | i32 | +getVisibility diff --git a/rust/ql/test/extractor-tests/generated/Static/Static.ql b/rust/ql/test/extractor-tests/generated/Static/Static.ql index 96a1fbd9814f..58ade5f044fc 100644 --- a/rust/ql/test/extractor-tests/generated/Static/Static.ql +++ b/rust/ql/test/extractor-tests/generated/Static/Static.ql @@ -2,33 +2,50 @@ import codeql.rust.elements import TestUtils -from - Static x, string hasExtendedCanonicalPath, string hasCrateOrigin, - string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasBody, string isMut, - string isStatic, string isUnsafe, string hasName, string hasTypeRepr, string hasVisibility -where +query predicate instances( + Static x, string isMut__label, string isMut, string isStatic__label, string isStatic, + string isUnsafe__label, string isUnsafe +) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasBody() then hasBody = "yes" else hasBody = "no") and + isMut__label = "isMut:" and (if x.isMut() then isMut = "yes" else isMut = "no") and + isStatic__label = "isStatic:" and (if x.isStatic() then isStatic = "yes" else isStatic = "no") and - (if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - (if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and - if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs, - "hasBody:", hasBody, "isMut:", isMut, "isStatic:", isStatic, "isUnsafe:", isUnsafe, "hasName:", - hasName, "hasTypeRepr:", hasTypeRepr, "hasVisibility:", hasVisibility + isUnsafe__label = "isUnsafe:" and + if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no" +} + +query predicate getExtendedCanonicalPath(Static x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(Static x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(Static x, MacroItems getAttributeMacroExpansion) { + toBeTested(x) and + not x.isUnknown() and + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getAttr(Static x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getBody(Static x, Expr getBody) { + toBeTested(x) and not x.isUnknown() and getBody = x.getBody() +} + +query predicate getName(Static x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getTypeRepr(Static x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} + +query predicate getVisibility(Static x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getAttr.expected b/rust/ql/test/extractor-tests/generated/Static/Static_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getAttr.ql b/rust/ql/test/extractor-tests/generated/Static/Static_getAttr.ql deleted file mode 100644 index df76d9642d26..000000000000 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Static x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/Static/Static_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/Static/Static_getAttributeMacroExpansion.ql deleted file mode 100644 index 500484b60b34..000000000000 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Static x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getBody.expected b/rust/ql/test/extractor-tests/generated/Static/Static_getBody.expected deleted file mode 100644 index 1c7305c4991d..000000000000 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getBody.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getBody.ql b/rust/ql/test/extractor-tests/generated/Static/Static_getBody.ql deleted file mode 100644 index 3983685f7fab..000000000000 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getBody.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Static x -where toBeTested(x) and not x.isUnknown() -select x, x.getBody() diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Static/Static_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/Static/Static_getCrateOrigin.ql deleted file mode 100644 index 373b6bd45f42..000000000000 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Static x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Static/Static_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/Static/Static_getExtendedCanonicalPath.ql deleted file mode 100644 index 32b3a0c127e1..000000000000 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Static x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getName.expected b/rust/ql/test/extractor-tests/generated/Static/Static_getName.expected deleted file mode 100644 index 96c219c64db6..000000000000 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getName.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getName.ql b/rust/ql/test/extractor-tests/generated/Static/Static_getName.ql deleted file mode 100644 index 714d58c38922..000000000000 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Static x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/Static/Static_getTypeRepr.expected deleted file mode 100644 index 556c54674849..000000000000 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/Static_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/Static/Static_getTypeRepr.ql deleted file mode 100644 index 6aa9e4108e92..000000000000 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Static x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getVisibility.expected b/rust/ql/test/extractor-tests/generated/Static/Static_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getVisibility.ql b/rust/ql/test/extractor-tests/generated/Static/Static_getVisibility.ql deleted file mode 100644 index 7ba134e17bcf..000000000000 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Static x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/StmtList/Cargo.lock b/rust/ql/test/extractor-tests/generated/StmtList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/StmtList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/StmtList/StmtList.expected b/rust/ql/test/extractor-tests/generated/StmtList/StmtList.expected index 46bdea2a71cb..02f322734ca6 100644 --- a/rust/ql/test/extractor-tests/generated/StmtList/StmtList.expected +++ b/rust/ql/test/extractor-tests/generated/StmtList/StmtList.expected @@ -1,2 +1,9 @@ -| 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 | +instances +| gen_stmt_list.rs:3:27:12:1 | StmtList | +| gen_stmt_list.rs:7:5:10:5 | StmtList | +getAttr +getStatement +| 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 | +getTailExpr +| 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/StmtList.ql b/rust/ql/test/extractor-tests/generated/StmtList/StmtList.ql index e24be9ebffe4..1dcc1ce6db1e 100644 --- a/rust/ql/test/extractor-tests/generated/StmtList/StmtList.ql +++ b/rust/ql/test/extractor-tests/generated/StmtList/StmtList.ql @@ -2,12 +2,16 @@ import codeql.rust.elements import TestUtils -from StmtList x, int getNumberOfAttrs, int getNumberOfStatements, string hasTailExpr -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - getNumberOfStatements = x.getNumberOfStatements() and - if x.hasTailExpr() then hasTailExpr = "yes" else hasTailExpr = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "getNumberOfStatements:", getNumberOfStatements, - "hasTailExpr:", hasTailExpr +query predicate instances(StmtList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(StmtList x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getStatement(StmtList x, int index, Stmt getStatement) { + toBeTested(x) and not x.isUnknown() and getStatement = x.getStatement(index) +} + +query predicate getTailExpr(StmtList x, Expr getTailExpr) { + toBeTested(x) and not x.isUnknown() and getTailExpr = x.getTailExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getAttr.expected b/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getAttr.ql b/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getAttr.ql deleted file mode 100644 index a1a2079e938e..000000000000 --- a/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StmtList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getStatement.expected b/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getStatement.expected deleted file mode 100644 index 46bda795699f..000000000000 --- a/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getStatement.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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_getStatement.ql b/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getStatement.ql deleted file mode 100644 index f895ca9fa016..000000000000 --- a/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getStatement.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StmtList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getStatement(index) diff --git a/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getTailExpr.expected b/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getTailExpr.expected deleted file mode 100644 index 998a40aea79c..000000000000 --- a/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getTailExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/StmtList_getTailExpr.ql b/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getTailExpr.ql deleted file mode 100644 index 592c60854510..000000000000 --- a/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getTailExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StmtList x -where toBeTested(x) and not x.isUnknown() -select x, x.getTailExpr() diff --git a/rust/ql/test/extractor-tests/generated/Struct/Cargo.lock b/rust/ql/test/extractor-tests/generated/Struct/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Struct/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct.expected index 63c314de8695..ad34c13babe6 100644 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct.expected +++ b/rust/ql/test/extractor-tests/generated/Struct/Struct.expected @@ -1 +1,14 @@ -| 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 | +instances +| gen_struct.rs:4:5:8:5 | struct Point | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getDeriveMacroExpansion +getAttr +getFieldList +| gen_struct.rs:4:5:8:5 | struct Point | gen_struct.rs:5:18:8:5 | StructFieldList | +getGenericParamList +getName +| gen_struct.rs:4:5:8:5 | struct Point | gen_struct.rs:5:12:5:16 | Point | +getVisibility +getWhereClause diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct.ql b/rust/ql/test/extractor-tests/generated/Struct/Struct.ql index 4471b94700c9..185c1125f5c5 100644 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct.ql +++ b/rust/ql/test/extractor-tests/generated/Struct/Struct.ql @@ -2,31 +2,46 @@ import codeql.rust.elements import TestUtils -from - Struct x, string hasExtendedCanonicalPath, string hasCrateOrigin, - string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasFieldList, - string hasGenericParamList, string hasName, string hasVisibility, string hasWhereClause -where +query predicate instances(Struct x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExtendedCanonicalPath(Struct x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(Struct x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(Struct x, MacroItems getAttributeMacroExpansion) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasFieldList() then hasFieldList = "yes" else hasFieldList = "no") and - (if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - (if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no") and - if x.hasWhereClause() then hasWhereClause = "yes" else hasWhereClause = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs, - "hasFieldList:", hasFieldList, "hasGenericParamList:", hasGenericParamList, "hasName:", hasName, - "hasVisibility:", hasVisibility, "hasWhereClause:", hasWhereClause + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getDeriveMacroExpansion(Struct x, int index, MacroItems getDeriveMacroExpansion) { + toBeTested(x) and not x.isUnknown() and getDeriveMacroExpansion = x.getDeriveMacroExpansion(index) +} + +query predicate getAttr(Struct x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getFieldList(Struct x, FieldList getFieldList) { + toBeTested(x) and not x.isUnknown() and getFieldList = x.getFieldList() +} + +query predicate getGenericParamList(Struct x, GenericParamList getGenericParamList) { + toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() +} + +query predicate getName(Struct x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getVisibility(Struct x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} + +query predicate getWhereClause(Struct x, WhereClause getWhereClause) { + toBeTested(x) and not x.isUnknown() and getWhereClause = x.getWhereClause() +} diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getAttr.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getAttr.ql b/rust/ql/test/extractor-tests/generated/Struct/Struct_getAttr.ql deleted file mode 100644 index 11789c109f0f..000000000000 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Struct x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/Struct/Struct_getAttributeMacroExpansion.ql deleted file mode 100644 index 7673f2d669eb..000000000000 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Struct x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/Struct/Struct_getCrateOrigin.ql deleted file mode 100644 index cafe120d4dec..000000000000 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Struct x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/Struct/Struct_getExtendedCanonicalPath.ql deleted file mode 100644 index f502a347b3e7..000000000000 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Struct x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getFieldList.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct_getFieldList.expected deleted file mode 100644 index b2233206f649..000000000000 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct_getFieldList.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getFieldList.ql b/rust/ql/test/extractor-tests/generated/Struct/Struct_getFieldList.ql deleted file mode 100644 index cdbdf6a37be4..000000000000 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct_getFieldList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Struct x -where toBeTested(x) and not x.isUnknown() -select x, x.getFieldList() diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getGenericParamList.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct_getGenericParamList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getGenericParamList.ql b/rust/ql/test/extractor-tests/generated/Struct/Struct_getGenericParamList.ql deleted file mode 100644 index 31a30a865f77..000000000000 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct_getGenericParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Struct x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericParamList() diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getName.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct_getName.expected deleted file mode 100644 index 6912576e6fb4..000000000000 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct_getName.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/Struct_getName.ql b/rust/ql/test/extractor-tests/generated/Struct/Struct_getName.ql deleted file mode 100644 index 40a167b3f2ee..000000000000 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Struct x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getVisibility.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getVisibility.ql b/rust/ql/test/extractor-tests/generated/Struct/Struct_getVisibility.ql deleted file mode 100644 index a86863cb1c77..000000000000 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Struct x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getWhereClause.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct_getWhereClause.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getWhereClause.ql b/rust/ql/test/extractor-tests/generated/Struct/Struct_getWhereClause.ql deleted file mode 100644 index b1df6874c1d0..000000000000 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct_getWhereClause.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Struct x -where toBeTested(x) and not x.isUnknown() -select x, x.getWhereClause() diff --git a/rust/ql/test/extractor-tests/generated/StructExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/StructExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/StructExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr.expected b/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr.expected index b9d3562413c9..477aa732ece0 100644 --- a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr.expected +++ b/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr.expected @@ -1,4 +1,17 @@ -| gen_struct_expr.rs:5:17:5:34 | Foo {...} | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | hasStructExprFieldList: | yes | -| gen_struct_expr.rs:6:18:6:38 | Foo {...} | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | hasStructExprFieldList: | yes | -| gen_struct_expr.rs:7:5:7:22 | Foo {...} | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | hasStructExprFieldList: | yes | -| gen_struct_expr.rs:8:5:8:14 | Foo {...} | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | hasStructExprFieldList: | yes | +instances +| gen_struct_expr.rs:5:17:5:34 | Foo {...} | +| gen_struct_expr.rs:6:18:6:38 | Foo {...} | +| gen_struct_expr.rs:7:5:7:22 | Foo {...} | +| gen_struct_expr.rs:8:5:8:14 | Foo {...} | +getResolvedPath +getResolvedCrateOrigin +getPath +| gen_struct_expr.rs:5:17:5:34 | Foo {...} | gen_struct_expr.rs:5:17:5:19 | Foo | +| gen_struct_expr.rs:6:18:6:38 | Foo {...} | gen_struct_expr.rs:6:18:6:20 | Foo | +| gen_struct_expr.rs:7:5:7:22 | Foo {...} | gen_struct_expr.rs:7:5:7:7 | Foo | +| gen_struct_expr.rs:8:5:8:14 | Foo {...} | gen_struct_expr.rs:8:5:8:7 | Foo | +getStructExprFieldList +| gen_struct_expr.rs:5:17:5:34 | Foo {...} | gen_struct_expr.rs:5:21:5:34 | StructExprFieldList | +| gen_struct_expr.rs:6:18:6:38 | Foo {...} | gen_struct_expr.rs:6:22:6:38 | StructExprFieldList | +| gen_struct_expr.rs:7:5:7:22 | Foo {...} | gen_struct_expr.rs:7:9:7:22 | StructExprFieldList | +| gen_struct_expr.rs:8:5:8:14 | Foo {...} | gen_struct_expr.rs:8:9:8:14 | StructExprFieldList | diff --git a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr.ql b/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr.ql index 6b4189951a5d..4a71efa31ee6 100644 --- a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr.ql +++ b/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr.ql @@ -2,21 +2,20 @@ import codeql.rust.elements import TestUtils -from - StructExpr x, string hasResolvedPath, string hasResolvedCrateOrigin, string hasPath, - string hasStructExprFieldList -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasResolvedPath() then hasResolvedPath = "yes" else hasResolvedPath = "no") and - ( - if x.hasResolvedCrateOrigin() - then hasResolvedCrateOrigin = "yes" - else hasResolvedCrateOrigin = "no" - ) and - (if x.hasPath() then hasPath = "yes" else hasPath = "no") and - if x.hasStructExprFieldList() - then hasStructExprFieldList = "yes" - else hasStructExprFieldList = "no" -select x, "hasResolvedPath:", hasResolvedPath, "hasResolvedCrateOrigin:", hasResolvedCrateOrigin, - "hasPath:", hasPath, "hasStructExprFieldList:", hasStructExprFieldList +query predicate instances(StructExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getResolvedPath(StructExpr x, string getResolvedPath) { + toBeTested(x) and not x.isUnknown() and getResolvedPath = x.getResolvedPath() +} + +query predicate getResolvedCrateOrigin(StructExpr x, string getResolvedCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getResolvedCrateOrigin = x.getResolvedCrateOrigin() +} + +query predicate getPath(StructExpr x, Path getPath) { + toBeTested(x) and not x.isUnknown() and getPath = x.getPath() +} + +query predicate getStructExprFieldList(StructExpr x, StructExprFieldList getStructExprFieldList) { + toBeTested(x) and not x.isUnknown() and getStructExprFieldList = x.getStructExprFieldList() +} diff --git a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getPath.expected b/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getPath.expected deleted file mode 100644 index ca22511d4c13..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getPath.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_struct_expr.rs:5:17:5:34 | Foo {...} | gen_struct_expr.rs:5:17:5:19 | Foo | -| gen_struct_expr.rs:6:18:6:38 | Foo {...} | gen_struct_expr.rs:6:18:6:20 | Foo | -| gen_struct_expr.rs:7:5:7:22 | Foo {...} | gen_struct_expr.rs:7:5:7:7 | Foo | -| gen_struct_expr.rs:8:5:8:14 | Foo {...} | gen_struct_expr.rs:8:5:8:7 | Foo | diff --git a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getPath.ql b/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getPath.ql deleted file mode 100644 index dd6682ca28b2..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getPath() diff --git a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getResolvedCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getResolvedCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getResolvedCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getResolvedCrateOrigin.ql deleted file mode 100644 index 10d7894e2e15..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getResolvedCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getResolvedCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getResolvedPath.expected b/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getResolvedPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getResolvedPath.ql b/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getResolvedPath.ql deleted file mode 100644 index 49876f1872a3..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getResolvedPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getResolvedPath() diff --git a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getStructExprFieldList.expected b/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getStructExprFieldList.expected deleted file mode 100644 index cf201f27ca23..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getStructExprFieldList.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_struct_expr.rs:5:17:5:34 | Foo {...} | gen_struct_expr.rs:5:21:5:34 | StructExprFieldList | -| gen_struct_expr.rs:6:18:6:38 | Foo {...} | gen_struct_expr.rs:6:22:6:38 | StructExprFieldList | -| gen_struct_expr.rs:7:5:7:22 | Foo {...} | gen_struct_expr.rs:7:9:7:22 | StructExprFieldList | -| gen_struct_expr.rs:8:5:8:14 | Foo {...} | gen_struct_expr.rs:8:9:8:14 | StructExprFieldList | diff --git a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getStructExprFieldList.ql b/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getStructExprFieldList.ql deleted file mode 100644 index 4e8e74dca364..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExpr/StructExpr_getStructExprFieldList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getStructExprFieldList() diff --git a/rust/ql/test/extractor-tests/generated/StructExprField/Cargo.lock b/rust/ql/test/extractor-tests/generated/StructExprField/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/StructExprField/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField.expected b/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField.expected index 952656c39aaf..3e275eb6a241 100644 --- a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField.expected +++ b/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField.expected @@ -1,2 +1,10 @@ -| gen_struct_expr_field.rs:5:11:5:14 | a: 1 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasIdentifier: | yes | -| gen_struct_expr_field.rs:5:17:5:20 | b: 2 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasIdentifier: | yes | +instances +| gen_struct_expr_field.rs:5:11:5:14 | a: 1 | +| gen_struct_expr_field.rs:5:17:5:20 | b: 2 | +getAttr +getExpr +| gen_struct_expr_field.rs:5:11:5:14 | a: 1 | gen_struct_expr_field.rs:5:14:5:14 | 1 | +| gen_struct_expr_field.rs:5:17:5:20 | b: 2 | gen_struct_expr_field.rs:5:20:5:20 | 2 | +getIdentifier +| gen_struct_expr_field.rs:5:11:5:14 | a: 1 | gen_struct_expr_field.rs:5:11:5:11 | a | +| gen_struct_expr_field.rs:5:17:5:20 | b: 2 | gen_struct_expr_field.rs:5:17:5:17 | b | diff --git a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField.ql b/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField.ql index 3d383af10dc8..4b4703c88287 100644 --- a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField.ql +++ b/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField.ql @@ -2,12 +2,16 @@ import codeql.rust.elements import TestUtils -from StructExprField x, int getNumberOfAttrs, string hasExpr, string hasIdentifier -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasExpr() then hasExpr = "yes" else hasExpr = "no") and - if x.hasIdentifier() then hasIdentifier = "yes" else hasIdentifier = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasExpr:", hasExpr, "hasIdentifier:", - hasIdentifier +query predicate instances(StructExprField x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(StructExprField x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExpr(StructExprField x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} + +query predicate getIdentifier(StructExprField x, NameRef getIdentifier) { + toBeTested(x) and not x.isUnknown() and getIdentifier = x.getIdentifier() +} diff --git a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getAttr.expected b/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getAttr.ql b/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getAttr.ql deleted file mode 100644 index 2742907ba87e..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructExprField x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getExpr.expected b/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getExpr.expected deleted file mode 100644 index ee1f3e2a9fed..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getExpr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_struct_expr_field.rs:5:11:5:14 | a: 1 | gen_struct_expr_field.rs:5:14:5:14 | 1 | -| gen_struct_expr_field.rs:5:17:5:20 | b: 2 | gen_struct_expr_field.rs:5:20:5:20 | 2 | diff --git a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getExpr.ql b/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getExpr.ql deleted file mode 100644 index f301995d0b9f..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructExprField x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getIdentifier.expected b/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getIdentifier.expected deleted file mode 100644 index feb2debc66e9..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getIdentifier.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_struct_expr_field.rs:5:11:5:14 | a: 1 | gen_struct_expr_field.rs:5:11:5:11 | a | -| gen_struct_expr_field.rs:5:17:5:20 | b: 2 | gen_struct_expr_field.rs:5:17:5:17 | b | diff --git a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getIdentifier.ql b/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getIdentifier.ql deleted file mode 100644 index 6d6b06cf3d5d..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField_getIdentifier.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructExprField x -where toBeTested(x) and not x.isUnknown() -select x, x.getIdentifier() diff --git a/rust/ql/test/extractor-tests/generated/StructExprFieldList/Cargo.lock b/rust/ql/test/extractor-tests/generated/StructExprFieldList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/StructExprFieldList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.expected b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.expected index 16e48f1e4f91..188a3690d83d 100644 --- a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.expected +++ b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.expected @@ -1 +1,7 @@ -| gen_struct_expr_field_list.rs:7:9:7:22 | StructExprFieldList | getNumberOfAttrs: | 0 | getNumberOfFields: | 2 | hasSpread: | no | +instances +| gen_struct_expr_field_list.rs:7:9:7:22 | StructExprFieldList | +getAttr +getField +| 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 | +getSpread diff --git a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql index 75690e39e194..dfa2ea4c324a 100644 --- a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql +++ b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql @@ -2,12 +2,16 @@ import codeql.rust.elements import TestUtils -from StructExprFieldList x, int getNumberOfAttrs, int getNumberOfFields, string hasSpread -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - getNumberOfFields = x.getNumberOfFields() and - if x.hasSpread() then hasSpread = "yes" else hasSpread = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "getNumberOfFields:", getNumberOfFields, - "hasSpread:", hasSpread +query predicate instances(StructExprFieldList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(StructExprFieldList x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getField(StructExprFieldList x, int index, StructExprField getField) { + toBeTested(x) and not x.isUnknown() and getField = x.getField(index) +} + +query predicate getSpread(StructExprFieldList x, Expr getSpread) { + toBeTested(x) and not x.isUnknown() and getSpread = x.getSpread() +} diff --git a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getAttr.expected b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getAttr.ql b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getAttr.ql deleted file mode 100644 index 2285cd246d62..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructExprFieldList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getField.expected b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getField.expected deleted file mode 100644 index a9e8edc6aae1..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getField.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/StructExprFieldList_getField.ql b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getField.ql deleted file mode 100644 index 3872d178afc4..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getField.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructExprFieldList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getField(index) diff --git a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getSpread.expected b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getSpread.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getSpread.ql b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getSpread.ql deleted file mode 100644 index d3a504725920..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getSpread.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructExprFieldList x -where toBeTested(x) and not x.isUnknown() -select x, x.getSpread() diff --git a/rust/ql/test/extractor-tests/generated/StructField/Cargo.lock b/rust/ql/test/extractor-tests/generated/StructField/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/StructField/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField.expected b/rust/ql/test/extractor-tests/generated/StructField/StructField.expected index 52a70f01feb8..3b5d0d7b71ca 100644 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField.expected +++ b/rust/ql/test/extractor-tests/generated/StructField/StructField.expected @@ -1 +1,9 @@ -| gen_struct_field.rs:7:16:7:21 | StructField | getNumberOfAttrs: | 0 | hasDefault: | no | isUnsafe: | no | hasName: | yes | hasTypeRepr: | yes | hasVisibility: | no | +instances +| gen_struct_field.rs:7:16:7:21 | StructField | isUnsafe: | no | +getAttr +getDefault +getName +| gen_struct_field.rs:7:16:7:21 | StructField | gen_struct_field.rs:7:16:7:16 | x | +getTypeRepr +| gen_struct_field.rs:7:16:7:21 | StructField | gen_struct_field.rs:7:19:7:21 | i32 | +getVisibility diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField.ql b/rust/ql/test/extractor-tests/generated/StructField/StructField.ql index cf7b3d995e13..773f282e36b3 100644 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField.ql +++ b/rust/ql/test/extractor-tests/generated/StructField/StructField.ql @@ -2,17 +2,29 @@ import codeql.rust.elements import TestUtils -from - StructField x, int getNumberOfAttrs, string hasDefault, string isUnsafe, string hasName, - string hasTypeRepr, string hasVisibility -where +query predicate instances(StructField x, string isUnsafe__label, string isUnsafe) { toBeTested(x) and not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasDefault() then hasDefault = "yes" else hasDefault = "no") and - (if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - (if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and - if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasDefault:", hasDefault, "isUnsafe:", isUnsafe, - "hasName:", hasName, "hasTypeRepr:", hasTypeRepr, "hasVisibility:", hasVisibility + isUnsafe__label = "isUnsafe:" and + if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no" +} + +query predicate getAttr(StructField x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getDefault(StructField x, Expr getDefault) { + toBeTested(x) and not x.isUnknown() and getDefault = x.getDefault() +} + +query predicate getName(StructField x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getTypeRepr(StructField x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} + +query predicate getVisibility(StructField x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField_getAttr.expected b/rust/ql/test/extractor-tests/generated/StructField/StructField_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField_getAttr.ql b/rust/ql/test/extractor-tests/generated/StructField/StructField_getAttr.ql deleted file mode 100644 index 61661be44900..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructField x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField_getDefault.expected b/rust/ql/test/extractor-tests/generated/StructField/StructField_getDefault.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField_getDefault.ql b/rust/ql/test/extractor-tests/generated/StructField/StructField_getDefault.ql deleted file mode 100644 index dbdd22c00e04..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField_getDefault.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructField x -where toBeTested(x) and not x.isUnknown() -select x, x.getDefault() diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField_getName.expected b/rust/ql/test/extractor-tests/generated/StructField/StructField_getName.expected deleted file mode 100644 index 1b66b3a883b9..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField_getName.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getName.ql b/rust/ql/test/extractor-tests/generated/StructField/StructField_getName.ql deleted file mode 100644 index a8078e8a34e7..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructField x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/StructField/StructField_getTypeRepr.expected deleted file mode 100644 index ad77aac46016..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField_getTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/StructField_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/StructField/StructField_getTypeRepr.ql deleted file mode 100644 index 27cd539c0bee..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructField x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField_getVisibility.expected b/rust/ql/test/extractor-tests/generated/StructField/StructField_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField_getVisibility.ql b/rust/ql/test/extractor-tests/generated/StructField/StructField_getVisibility.ql deleted file mode 100644 index 43ebca776569..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructField x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/StructFieldList/Cargo.lock b/rust/ql/test/extractor-tests/generated/StructFieldList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/StructFieldList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList.expected b/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList.expected index f07a535897fe..847bfd3c9371 100644 --- a/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList.expected +++ b/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList.expected @@ -1 +1,5 @@ -| gen_struct_field_list.rs:7:14:7:31 | StructFieldList | getNumberOfFields: | 2 | +instances +| gen_struct_field_list.rs:7:14:7:31 | StructFieldList | +getField +| 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/StructFieldList.ql b/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList.ql index 62725f6189b2..f8afe271d812 100644 --- a/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList.ql +++ b/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from StructFieldList x, int getNumberOfFields -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfFields = x.getNumberOfFields() -select x, "getNumberOfFields:", getNumberOfFields +query predicate instances(StructFieldList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getField(StructFieldList x, int index, StructField getField) { + toBeTested(x) and not x.isUnknown() and getField = x.getField(index) +} diff --git a/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList_getField.expected b/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList_getField.expected deleted file mode 100644 index cd2ac33b4c95..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList_getField.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/StructFieldList_getField.ql b/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList_getField.ql deleted file mode 100644 index f1c7d0b58dc6..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList_getField.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructFieldList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getField(index) diff --git a/rust/ql/test/extractor-tests/generated/StructPat/Cargo.lock b/rust/ql/test/extractor-tests/generated/StructPat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/StructPat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/StructPat/StructPat.expected b/rust/ql/test/extractor-tests/generated/StructPat/StructPat.expected index 976f45ab4cdc..894e52fb1965 100644 --- a/rust/ql/test/extractor-tests/generated/StructPat/StructPat.expected +++ b/rust/ql/test/extractor-tests/generated/StructPat/StructPat.expected @@ -1,2 +1,11 @@ -| gen_struct_pat.rs:6:9:6:26 | Foo {...} | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | hasStructPatFieldList: | yes | -| gen_struct_pat.rs:7:9:7:18 | Foo {...} | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | hasStructPatFieldList: | yes | +instances +| gen_struct_pat.rs:6:9:6:26 | Foo {...} | +| gen_struct_pat.rs:7:9:7:18 | Foo {...} | +getResolvedPath +getResolvedCrateOrigin +getPath +| gen_struct_pat.rs:6:9:6:26 | Foo {...} | gen_struct_pat.rs:6:9:6:11 | Foo | +| gen_struct_pat.rs:7:9:7:18 | Foo {...} | gen_struct_pat.rs:7:9:7:11 | Foo | +getStructPatFieldList +| gen_struct_pat.rs:6:9:6:26 | Foo {...} | gen_struct_pat.rs:6:13:6:26 | StructPatFieldList | +| gen_struct_pat.rs:7:9:7:18 | Foo {...} | gen_struct_pat.rs:7:13:7:18 | StructPatFieldList | diff --git a/rust/ql/test/extractor-tests/generated/StructPat/StructPat.ql b/rust/ql/test/extractor-tests/generated/StructPat/StructPat.ql index 9df81390d42f..4aad29aede9c 100644 --- a/rust/ql/test/extractor-tests/generated/StructPat/StructPat.ql +++ b/rust/ql/test/extractor-tests/generated/StructPat/StructPat.ql @@ -2,19 +2,20 @@ import codeql.rust.elements import TestUtils -from - StructPat x, string hasResolvedPath, string hasResolvedCrateOrigin, string hasPath, - string hasStructPatFieldList -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasResolvedPath() then hasResolvedPath = "yes" else hasResolvedPath = "no") and - ( - if x.hasResolvedCrateOrigin() - then hasResolvedCrateOrigin = "yes" - else hasResolvedCrateOrigin = "no" - ) and - (if x.hasPath() then hasPath = "yes" else hasPath = "no") and - if x.hasStructPatFieldList() then hasStructPatFieldList = "yes" else hasStructPatFieldList = "no" -select x, "hasResolvedPath:", hasResolvedPath, "hasResolvedCrateOrigin:", hasResolvedCrateOrigin, - "hasPath:", hasPath, "hasStructPatFieldList:", hasStructPatFieldList +query predicate instances(StructPat x) { toBeTested(x) and not x.isUnknown() } + +query predicate getResolvedPath(StructPat x, string getResolvedPath) { + toBeTested(x) and not x.isUnknown() and getResolvedPath = x.getResolvedPath() +} + +query predicate getResolvedCrateOrigin(StructPat x, string getResolvedCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getResolvedCrateOrigin = x.getResolvedCrateOrigin() +} + +query predicate getPath(StructPat x, Path getPath) { + toBeTested(x) and not x.isUnknown() and getPath = x.getPath() +} + +query predicate getStructPatFieldList(StructPat x, StructPatFieldList getStructPatFieldList) { + toBeTested(x) and not x.isUnknown() and getStructPatFieldList = x.getStructPatFieldList() +} diff --git a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getPath.expected b/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getPath.expected deleted file mode 100644 index 1430d89402af..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getPath.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_struct_pat.rs:6:9:6:26 | Foo {...} | gen_struct_pat.rs:6:9:6:11 | Foo | -| gen_struct_pat.rs:7:9:7:18 | Foo {...} | gen_struct_pat.rs:7:9:7:11 | Foo | diff --git a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getPath.ql b/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getPath.ql deleted file mode 100644 index 078813c2700a..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getPath() diff --git a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getResolvedCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getResolvedCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getResolvedCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getResolvedCrateOrigin.ql deleted file mode 100644 index 1fdff67b7350..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getResolvedCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getResolvedCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getResolvedPath.expected b/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getResolvedPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getResolvedPath.ql b/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getResolvedPath.ql deleted file mode 100644 index f7a60efc20ee..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getResolvedPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getResolvedPath() diff --git a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getStructPatFieldList.expected b/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getStructPatFieldList.expected deleted file mode 100644 index 33464196b165..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getStructPatFieldList.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_struct_pat.rs:6:9:6:26 | Foo {...} | gen_struct_pat.rs:6:13:6:26 | StructPatFieldList | -| gen_struct_pat.rs:7:9:7:18 | Foo {...} | gen_struct_pat.rs:7:13:7:18 | StructPatFieldList | diff --git a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getStructPatFieldList.ql b/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getStructPatFieldList.ql deleted file mode 100644 index 1304a8e16f34..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPat/StructPat_getStructPatFieldList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getStructPatFieldList() diff --git a/rust/ql/test/extractor-tests/generated/StructPatField/Cargo.lock b/rust/ql/test/extractor-tests/generated/StructPatField/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/StructPatField/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField.expected b/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField.expected index bb492dabd126..c2efa2bda821 100644 --- a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField.expected +++ b/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField.expected @@ -1,2 +1,10 @@ -| gen_struct_pat_field.rs:5:15:5:18 | a: 1 | getNumberOfAttrs: | 0 | hasIdentifier: | yes | hasPat: | yes | -| gen_struct_pat_field.rs:5:21:5:24 | b: 2 | getNumberOfAttrs: | 0 | hasIdentifier: | yes | hasPat: | yes | +instances +| gen_struct_pat_field.rs:5:15:5:18 | a: 1 | +| gen_struct_pat_field.rs:5:21:5:24 | b: 2 | +getAttr +getIdentifier +| gen_struct_pat_field.rs:5:15:5:18 | a: 1 | gen_struct_pat_field.rs:5:15:5:15 | a | +| gen_struct_pat_field.rs:5:21:5:24 | b: 2 | gen_struct_pat_field.rs:5:21:5:21 | b | +getPat +| gen_struct_pat_field.rs:5:15:5:18 | a: 1 | gen_struct_pat_field.rs:5:18:5:18 | 1 | +| gen_struct_pat_field.rs:5:21:5:24 | b: 2 | gen_struct_pat_field.rs:5:24:5:24 | 2 | diff --git a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField.ql b/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField.ql index a68d2b52614d..4b3c605590d5 100644 --- a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField.ql +++ b/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField.ql @@ -2,11 +2,16 @@ import codeql.rust.elements import TestUtils -from StructPatField x, int getNumberOfAttrs, string hasIdentifier, string hasPat -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasIdentifier() then hasIdentifier = "yes" else hasIdentifier = "no") and - if x.hasPat() then hasPat = "yes" else hasPat = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasIdentifier:", hasIdentifier, "hasPat:", hasPat +query predicate instances(StructPatField x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(StructPatField x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getIdentifier(StructPatField x, NameRef getIdentifier) { + toBeTested(x) and not x.isUnknown() and getIdentifier = x.getIdentifier() +} + +query predicate getPat(StructPatField x, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat() +} diff --git a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getAttr.expected b/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getAttr.ql b/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getAttr.ql deleted file mode 100644 index 4dd2a726473f..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructPatField x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getIdentifier.expected b/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getIdentifier.expected deleted file mode 100644 index b2f9c4967475..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getIdentifier.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_struct_pat_field.rs:5:15:5:18 | a: 1 | gen_struct_pat_field.rs:5:15:5:15 | a | -| gen_struct_pat_field.rs:5:21:5:24 | b: 2 | gen_struct_pat_field.rs:5:21:5:21 | b | diff --git a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getIdentifier.ql b/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getIdentifier.ql deleted file mode 100644 index e03a98229b3d..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getIdentifier.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructPatField x -where toBeTested(x) and not x.isUnknown() -select x, x.getIdentifier() diff --git a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getPat.expected b/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getPat.expected deleted file mode 100644 index 28e7c4313b09..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getPat.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_struct_pat_field.rs:5:15:5:18 | a: 1 | gen_struct_pat_field.rs:5:18:5:18 | 1 | -| gen_struct_pat_field.rs:5:21:5:24 | b: 2 | gen_struct_pat_field.rs:5:24:5:24 | 2 | diff --git a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getPat.ql b/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getPat.ql deleted file mode 100644 index 4a8cbbd794bd..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField_getPat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructPatField x -where toBeTested(x) and not x.isUnknown() -select x, x.getPat() diff --git a/rust/ql/test/extractor-tests/generated/StructPatFieldList/Cargo.lock b/rust/ql/test/extractor-tests/generated/StructPatFieldList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/StructPatFieldList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.expected b/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.expected index a52d73ab6c8b..a40c54bd30a2 100644 --- a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.expected +++ b/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.expected @@ -1 +1,6 @@ -| gen_struct_pat_field_list.rs:7:13:7:20 | StructPatFieldList | getNumberOfFields: | 2 | hasRestPat: | no | +instances +| gen_struct_pat_field_list.rs:7:13:7:20 | StructPatFieldList | +getField +| 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 | ... | +getRestPat diff --git a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.ql b/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.ql index 051b28b07182..2d9433fdb809 100644 --- a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.ql +++ b/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from StructPatFieldList x, int getNumberOfFields, string hasRestPat -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfFields = x.getNumberOfFields() and - if x.hasRestPat() then hasRestPat = "yes" else hasRestPat = "no" -select x, "getNumberOfFields:", getNumberOfFields, "hasRestPat:", hasRestPat +query predicate instances(StructPatFieldList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getField(StructPatFieldList x, int index, StructPatField getField) { + toBeTested(x) and not x.isUnknown() and getField = x.getField(index) +} + +query predicate getRestPat(StructPatFieldList x, RestPat getRestPat) { + toBeTested(x) and not x.isUnknown() and getRestPat = x.getRestPat() +} diff --git a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getField.expected b/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getField.expected deleted file mode 100644 index c2d445a5a3f0..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getField.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/StructPatFieldList_getField.ql b/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getField.ql deleted file mode 100644 index 65e6d34b0f8f..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getField.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructPatFieldList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getField(index) diff --git a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getRestPat.expected b/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getRestPat.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getRestPat.ql b/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getRestPat.ql deleted file mode 100644 index 6ba00441e92d..000000000000 --- a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getRestPat.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from StructPatFieldList x -where toBeTested(x) and not x.isUnknown() -select x, x.getRestPat() diff --git a/rust/ql/test/extractor-tests/generated/TokenTree/Cargo.lock b/rust/ql/test/extractor-tests/generated/TokenTree/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TokenTree/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TokenTree/TokenTree.ql b/rust/ql/test/extractor-tests/generated/TokenTree/TokenTree.ql index 299c1e48b6bc..9e4496fc7182 100644 --- a/rust/ql/test/extractor-tests/generated/TokenTree/TokenTree.ql +++ b/rust/ql/test/extractor-tests/generated/TokenTree/TokenTree.ql @@ -2,6 +2,4 @@ import codeql.rust.elements import TestUtils -from TokenTree x -where toBeTested(x) and not x.isUnknown() -select x +query predicate instances(TokenTree x) { toBeTested(x) and not x.isUnknown() } diff --git a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList.expected b/rust/ql/test/extractor-tests/generated/Trait/AssocItemList.expected index 123a2da6653f..526d4057b3cb 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList.expected +++ b/rust/ql/test/extractor-tests/generated/Trait/AssocItemList.expected @@ -1,2 +1,8 @@ -| gen_trait.rs:4:20:8:1 | AssocItemList | getNumberOfAssocItems: | 3 | getNumberOfAttrs: | 0 | -| gen_trait.rs:10:56:10:57 | AssocItemList | getNumberOfAssocItems: | 0 | getNumberOfAttrs: | 0 | +instances +| gen_trait.rs:4:20:8:1 | AssocItemList | +| gen_trait.rs:10:56:10:57 | AssocItemList | +getAssocItem +| gen_trait.rs:4:20:8:1 | AssocItemList | 0 | gen_trait.rs:5:3:5:18 | type Frobinator | +| gen_trait.rs:4:20:8:1 | AssocItemList | 1 | gen_trait.rs:6:3:6:20 | type Result | +| gen_trait.rs:4:20:8:1 | AssocItemList | 2 | gen_trait.rs:7:3:7:72 | fn frobinize_with | +getAttr diff --git a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList.ql b/rust/ql/test/extractor-tests/generated/Trait/AssocItemList.ql index eebd261c6bd8..bbef174971fe 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList.ql +++ b/rust/ql/test/extractor-tests/generated/Trait/AssocItemList.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from AssocItemList x, int getNumberOfAssocItems, int getNumberOfAttrs -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAssocItems = x.getNumberOfAssocItems() and - getNumberOfAttrs = x.getNumberOfAttrs() -select x, "getNumberOfAssocItems:", getNumberOfAssocItems, "getNumberOfAttrs:", getNumberOfAttrs +query predicate instances(AssocItemList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAssocItem(AssocItemList x, int index, AssocItem getAssocItem) { + toBeTested(x) and not x.isUnknown() and getAssocItem = x.getAssocItem(index) +} + +query predicate getAttr(AssocItemList x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} diff --git a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAssocItem.expected b/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAssocItem.expected deleted file mode 100644 index a8b21eb84661..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAssocItem.expected +++ /dev/null @@ -1,3 +0,0 @@ -| gen_trait.rs:4:20:8:1 | AssocItemList | 0 | gen_trait.rs:5:3:5:18 | type Frobinator | -| gen_trait.rs:4:20:8:1 | AssocItemList | 1 | gen_trait.rs:6:3:6:20 | type Result | -| gen_trait.rs:4:20:8:1 | AssocItemList | 2 | gen_trait.rs:7:3:7:72 | fn frobinize_with | diff --git a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAssocItem.ql b/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAssocItem.ql deleted file mode 100644 index 01d36f7cc54a..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAssocItem.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AssocItemList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAssocItem(index) diff --git a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAttr.expected b/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAttr.ql b/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAttr.ql deleted file mode 100644 index 72b5f3667371..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from AssocItemList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Trait/Cargo.lock b/rust/ql/test/extractor-tests/generated/Trait/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Trait/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait.expected index de921f246b43..ff60871f40b3 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait.expected +++ b/rust/ql/test/extractor-tests/generated/Trait/Trait.expected @@ -1,2 +1,24 @@ -| gen_trait.rs:3:1:8:1 | trait Frobinizable | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAttributeMacroExpansion: | no | hasAssocItemList: | yes | getNumberOfAttrs: | 0 | hasGenericParamList: | no | isAuto: | no | isUnsafe: | no | hasName: | yes | hasTypeBoundList: | no | hasVisibility: | no | hasWhereClause: | no | -| gen_trait.rs:10:1:10:57 | trait Foo | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAttributeMacroExpansion: | no | hasAssocItemList: | yes | getNumberOfAttrs: | 0 | hasGenericParamList: | yes | isAuto: | no | isUnsafe: | no | hasName: | yes | hasTypeBoundList: | no | hasVisibility: | yes | hasWhereClause: | yes | +instances +| gen_trait.rs:3:1:8:1 | trait Frobinizable | isAuto: | no | isUnsafe: | no | +| gen_trait.rs:10:1:10:57 | trait Foo | isAuto: | no | isUnsafe: | no | +getExtendedCanonicalPath +| gen_trait.rs:3:1:8:1 | trait Frobinizable | crate::gen_trait::Frobinizable | +| gen_trait.rs:10:1:10:57 | trait Foo | crate::gen_trait::Foo | +getCrateOrigin +| gen_trait.rs:3:1:8:1 | trait Frobinizable | repo::test | +| gen_trait.rs:10:1:10:57 | trait Foo | repo::test | +getAttributeMacroExpansion +getAssocItemList +| gen_trait.rs:3:1:8:1 | trait Frobinizable | gen_trait.rs:4:20:8:1 | AssocItemList | +| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:56:10:57 | AssocItemList | +getAttr +getGenericParamList +| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:14:10:30 | <...> | +getName +| gen_trait.rs:3:1:8:1 | trait Frobinizable | gen_trait.rs:4:7:4:18 | Frobinizable | +| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:11:10:13 | Foo | +getTypeBoundList +getVisibility +| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:1:10:3 | Visibility | +getWhereClause +| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:32:10:54 | WhereClause | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait.ql b/rust/ql/test/extractor-tests/generated/Trait/Trait.ql index 2e8173a21aff..35725fcd5261 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait.ql +++ b/rust/ql/test/extractor-tests/generated/Trait/Trait.ql @@ -2,36 +2,55 @@ import codeql.rust.elements import TestUtils -from - Trait x, string hasExtendedCanonicalPath, string hasCrateOrigin, - string hasAttributeMacroExpansion, string hasAssocItemList, int getNumberOfAttrs, - string hasGenericParamList, string isAuto, string isUnsafe, string hasName, - string hasTypeBoundList, string hasVisibility, string hasWhereClause -where +query predicate instances( + Trait x, string isAuto__label, string isAuto, string isUnsafe__label, string isUnsafe +) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - (if x.hasAssocItemList() then hasAssocItemList = "yes" else hasAssocItemList = "no") and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no") and + isAuto__label = "isAuto:" and (if x.isAuto() then isAuto = "yes" else isAuto = "no") and - (if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - (if x.hasTypeBoundList() then hasTypeBoundList = "yes" else hasTypeBoundList = "no") and - (if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no") and - if x.hasWhereClause() then hasWhereClause = "yes" else hasWhereClause = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "hasAssocItemList:", hasAssocItemList, - "getNumberOfAttrs:", getNumberOfAttrs, "hasGenericParamList:", hasGenericParamList, "isAuto:", - isAuto, "isUnsafe:", isUnsafe, "hasName:", hasName, "hasTypeBoundList:", hasTypeBoundList, - "hasVisibility:", hasVisibility, "hasWhereClause:", hasWhereClause + isUnsafe__label = "isUnsafe:" and + if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no" +} + +query predicate getExtendedCanonicalPath(Trait x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(Trait x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(Trait x, MacroItems getAttributeMacroExpansion) { + toBeTested(x) and + not x.isUnknown() and + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getAssocItemList(Trait x, AssocItemList getAssocItemList) { + toBeTested(x) and not x.isUnknown() and getAssocItemList = x.getAssocItemList() +} + +query predicate getAttr(Trait x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getGenericParamList(Trait x, GenericParamList getGenericParamList) { + toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() +} + +query predicate getName(Trait x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getTypeBoundList(Trait x, TypeBoundList getTypeBoundList) { + toBeTested(x) and not x.isUnknown() and getTypeBoundList = x.getTypeBoundList() +} + +query predicate getVisibility(Trait x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} + +query predicate getWhereClause(Trait x, WhereClause getWhereClause) { + toBeTested(x) and not x.isUnknown() and getWhereClause = x.getWhereClause() +} diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getAssocItemList.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getAssocItemList.expected deleted file mode 100644 index b60c89c8d3fe..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getAssocItemList.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_trait.rs:3:1:8:1 | trait Frobinizable | gen_trait.rs:4:20:8:1 | AssocItemList | -| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:56:10:57 | AssocItemList | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getAssocItemList.ql b/rust/ql/test/extractor-tests/generated/Trait/Trait_getAssocItemList.ql deleted file mode 100644 index 94a59605021a..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getAssocItemList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Trait x -where toBeTested(x) and not x.isUnknown() -select x, x.getAssocItemList() diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getAttr.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getAttr.ql b/rust/ql/test/extractor-tests/generated/Trait/Trait_getAttr.ql deleted file mode 100644 index 219303af515b..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Trait x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/Trait/Trait_getAttributeMacroExpansion.ql deleted file mode 100644 index 9499d03e9ccc..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Trait x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getCrateOrigin.expected deleted file mode 100644 index 1e42bb437317..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getCrateOrigin.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_trait.rs:3:1:8:1 | trait Frobinizable | repo::test | -| gen_trait.rs:10:1:10:57 | trait Foo | repo::test | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/Trait/Trait_getCrateOrigin.ql deleted file mode 100644 index 8c2c71a918e4..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Trait x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getExtendedCanonicalPath.expected deleted file mode 100644 index 6a5e82036739..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getExtendedCanonicalPath.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_trait.rs:3:1:8:1 | trait Frobinizable | crate::gen_trait::Frobinizable | -| gen_trait.rs:10:1:10:57 | trait Foo | crate::gen_trait::Foo | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/Trait/Trait_getExtendedCanonicalPath.ql deleted file mode 100644 index 5281a18656bd..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Trait x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getGenericParamList.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getGenericParamList.expected deleted file mode 100644 index ba9e996565f4..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getGenericParamList.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:14:10:30 | <...> | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getGenericParamList.ql b/rust/ql/test/extractor-tests/generated/Trait/Trait_getGenericParamList.ql deleted file mode 100644 index db979636892f..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getGenericParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Trait x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericParamList() diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getName.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getName.expected deleted file mode 100644 index 1c087cdea895..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getName.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_trait.rs:3:1:8:1 | trait Frobinizable | gen_trait.rs:4:7:4:18 | Frobinizable | -| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:11:10:13 | Foo | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getName.ql b/rust/ql/test/extractor-tests/generated/Trait/Trait_getName.ql deleted file mode 100644 index eeb7b6f48023..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Trait x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getTypeBoundList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getTypeBoundList.ql b/rust/ql/test/extractor-tests/generated/Trait/Trait_getTypeBoundList.ql deleted file mode 100644 index f5544da39d35..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getTypeBoundList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Trait x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeBoundList() diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getVisibility.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getVisibility.expected deleted file mode 100644 index 56576624e47f..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getVisibility.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:1:10:3 | Visibility | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getVisibility.ql b/rust/ql/test/extractor-tests/generated/Trait/Trait_getVisibility.ql deleted file mode 100644 index 1405d15127ed..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Trait x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getWhereClause.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getWhereClause.expected deleted file mode 100644 index d46ac2d04cd9..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getWhereClause.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:32:10:54 | WhereClause | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getWhereClause.ql b/rust/ql/test/extractor-tests/generated/Trait/Trait_getWhereClause.ql deleted file mode 100644 index fb7448f81966..000000000000 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getWhereClause.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Trait x -where toBeTested(x) and not x.isUnknown() -select x, x.getWhereClause() diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/Cargo.lock b/rust/ql/test/extractor-tests/generated/TraitAlias/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TraitAlias/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.expected b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.expected index 0a5b69dcd5e2..f8fc16280369 100644 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.expected +++ b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.expected @@ -1 +1,13 @@ -| 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 | +instances +| gen_trait_alias.rs:7:5:7:26 | TraitAlias | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getAttr +getGenericParamList +getName +| gen_trait_alias.rs:7:5:7:26 | TraitAlias | gen_trait_alias.rs:7:11:7:13 | Foo | +getTypeBoundList +| gen_trait_alias.rs:7:5:7:26 | TraitAlias | gen_trait_alias.rs:7:17:7:25 | TypeBoundList | +getVisibility +getWhereClause diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.ql b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.ql index 319f65e3730e..2d65541f50ce 100644 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.ql +++ b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.ql @@ -2,31 +2,42 @@ import codeql.rust.elements import TestUtils -from - TraitAlias x, string hasExtendedCanonicalPath, string hasCrateOrigin, - string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasGenericParamList, - string hasName, string hasTypeBoundList, string hasVisibility, string hasWhereClause -where +query predicate instances(TraitAlias x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExtendedCanonicalPath(TraitAlias x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(TraitAlias x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(TraitAlias x, MacroItems getAttributeMacroExpansion) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - (if x.hasTypeBoundList() then hasTypeBoundList = "yes" else hasTypeBoundList = "no") and - (if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no") and - if x.hasWhereClause() then hasWhereClause = "yes" else hasWhereClause = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs, - "hasGenericParamList:", hasGenericParamList, "hasName:", hasName, "hasTypeBoundList:", - hasTypeBoundList, "hasVisibility:", hasVisibility, "hasWhereClause:", hasWhereClause + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getAttr(TraitAlias x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getGenericParamList(TraitAlias x, GenericParamList getGenericParamList) { + toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() +} + +query predicate getName(TraitAlias x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getTypeBoundList(TraitAlias x, TypeBoundList getTypeBoundList) { + toBeTested(x) and not x.isUnknown() and getTypeBoundList = x.getTypeBoundList() +} + +query predicate getVisibility(TraitAlias x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} + +query predicate getWhereClause(TraitAlias x, WhereClause getWhereClause) { + toBeTested(x) and not x.isUnknown() and getWhereClause = x.getWhereClause() +} diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getAttr.expected b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getAttr.ql b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getAttr.ql deleted file mode 100644 index 3ca992de122a..000000000000 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TraitAlias x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getAttributeMacroExpansion.ql deleted file mode 100644 index 6a0c43cfc87a..000000000000 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TraitAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getCrateOrigin.ql deleted file mode 100644 index 6f9ccf89262d..000000000000 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TraitAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getExtendedCanonicalPath.ql deleted file mode 100644 index 6326e730c331..000000000000 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TraitAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getGenericParamList.expected b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getGenericParamList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getGenericParamList.ql b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getGenericParamList.ql deleted file mode 100644 index 3372d78e89e8..000000000000 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getGenericParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TraitAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericParamList() diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getName.expected b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getName.expected deleted file mode 100644 index e0aae353801d..000000000000 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getName.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getName.ql b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getName.ql deleted file mode 100644 index 2b64f27e19d2..000000000000 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TraitAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getTypeBoundList.expected deleted file mode 100644 index 797921bf4ddc..000000000000 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getTypeBoundList.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/TraitAlias_getTypeBoundList.ql b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getTypeBoundList.ql deleted file mode 100644 index 28f7588ec9f6..000000000000 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getTypeBoundList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TraitAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeBoundList() diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getVisibility.expected b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getVisibility.ql b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getVisibility.ql deleted file mode 100644 index 1dde55e9663f..000000000000 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TraitAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getWhereClause.expected b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getWhereClause.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getWhereClause.ql b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getWhereClause.ql deleted file mode 100644 index 91e39d5e6464..000000000000 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getWhereClause.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TraitAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getWhereClause() diff --git a/rust/ql/test/extractor-tests/generated/TryExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/TryExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TryExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.expected b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.expected index 214ca5597ec6..7bfee39ff2ae 100644 --- a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.expected +++ b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.expected @@ -1 +1,5 @@ -| gen_try_expr.rs:7:13:7:18 | TryExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | +instances +| gen_try_expr.rs:7:13:7:18 | TryExpr | +getAttr +getExpr +| 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/TryExpr.ql b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.ql index be3c70a933ce..fc42bca14a93 100644 --- a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.ql +++ b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from TryExpr x, int getNumberOfAttrs, string hasExpr -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - if x.hasExpr() then hasExpr = "yes" else hasExpr = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasExpr:", hasExpr +query predicate instances(TryExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(TryExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExpr(TryExpr x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getAttr.ql deleted file mode 100644 index 1073bec18600..000000000000 --- a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TryExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getExpr.expected deleted file mode 100644 index fb0c80429696..000000000000 --- a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/TryExpr_getExpr.ql b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getExpr.ql deleted file mode 100644 index 477a2bb5811e..000000000000 --- a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TryExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/TupleExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/TupleExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TupleExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr.expected b/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr.expected index 2bd4e57c30ed..3a35afd6630d 100644 --- a/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr.expected +++ b/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr.expected @@ -1,2 +1,9 @@ -| gen_tuple_expr.rs:5:5:5:14 | TupleExpr | getNumberOfAttrs: | 0 | getNumberOfFields: | 2 | -| gen_tuple_expr.rs:6:5:6:14 | TupleExpr | getNumberOfAttrs: | 0 | getNumberOfFields: | 2 | +instances +| gen_tuple_expr.rs:5:5:5:14 | TupleExpr | +| gen_tuple_expr.rs:6:5:6:14 | TupleExpr | +getAttr +getField +| gen_tuple_expr.rs:5:5:5:14 | TupleExpr | 0 | gen_tuple_expr.rs:5:6:5:6 | 1 | +| gen_tuple_expr.rs:5:5:5:14 | TupleExpr | 1 | gen_tuple_expr.rs:5:9:5:13 | "one" | +| gen_tuple_expr.rs:6:5:6:14 | TupleExpr | 0 | gen_tuple_expr.rs:6:6:6:6 | 2 | +| gen_tuple_expr.rs:6:5:6:14 | TupleExpr | 1 | gen_tuple_expr.rs:6:9:6:13 | "two" | diff --git a/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr.ql b/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr.ql index 573d7936d6c7..0b49fca4cee8 100644 --- a/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr.ql +++ b/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from TupleExpr x, int getNumberOfAttrs, int getNumberOfFields -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - getNumberOfFields = x.getNumberOfFields() -select x, "getNumberOfAttrs:", getNumberOfAttrs, "getNumberOfFields:", getNumberOfFields +query predicate instances(TupleExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(TupleExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getField(TupleExpr x, int index, Expr getField) { + toBeTested(x) and not x.isUnknown() and getField = x.getField(index) +} diff --git a/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr_getAttr.ql deleted file mode 100644 index 6736dada82b8..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TupleExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr_getField.expected b/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr_getField.expected deleted file mode 100644 index 11cd1614ccd1..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr_getField.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_tuple_expr.rs:5:5:5:14 | TupleExpr | 0 | gen_tuple_expr.rs:5:6:5:6 | 1 | -| gen_tuple_expr.rs:5:5:5:14 | TupleExpr | 1 | gen_tuple_expr.rs:5:9:5:13 | "one" | -| gen_tuple_expr.rs:6:5:6:14 | TupleExpr | 0 | gen_tuple_expr.rs:6:6:6:6 | 2 | -| gen_tuple_expr.rs:6:5:6:14 | TupleExpr | 1 | gen_tuple_expr.rs:6:9:6:13 | "two" | diff --git a/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr_getField.ql b/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr_getField.ql deleted file mode 100644 index 79c25f047d05..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr_getField.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TupleExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getField(index) diff --git a/rust/ql/test/extractor-tests/generated/TupleField/Cargo.lock b/rust/ql/test/extractor-tests/generated/TupleField/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TupleField/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TupleField/TupleField.expected b/rust/ql/test/extractor-tests/generated/TupleField/TupleField.expected index 4c658836ad93..6c653a9c37f4 100644 --- a/rust/ql/test/extractor-tests/generated/TupleField/TupleField.expected +++ b/rust/ql/test/extractor-tests/generated/TupleField/TupleField.expected @@ -1,2 +1,8 @@ -| 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 | +instances +| gen_tuple_field.rs:7:14:7:16 | TupleField | +| gen_tuple_field.rs:7:19:7:24 | TupleField | +getAttr +getTypeRepr +| 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 | +getVisibility diff --git a/rust/ql/test/extractor-tests/generated/TupleField/TupleField.ql b/rust/ql/test/extractor-tests/generated/TupleField/TupleField.ql index 15401629a602..01c15ace3ddf 100644 --- a/rust/ql/test/extractor-tests/generated/TupleField/TupleField.ql +++ b/rust/ql/test/extractor-tests/generated/TupleField/TupleField.ql @@ -2,12 +2,16 @@ import codeql.rust.elements import TestUtils -from TupleField x, int getNumberOfAttrs, string hasTypeRepr, string hasVisibility -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and - if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasTypeRepr:", hasTypeRepr, "hasVisibility:", - hasVisibility +query predicate instances(TupleField x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(TupleField x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getTypeRepr(TupleField x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} + +query predicate getVisibility(TupleField x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} diff --git a/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getAttr.expected b/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getAttr.ql b/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getAttr.ql deleted file mode 100644 index 23481ed001ad..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TupleField x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getTypeRepr.expected deleted file mode 100644 index 31c4849e7a31..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getTypeRepr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/TupleField_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getTypeRepr.ql deleted file mode 100644 index b68e736cec3d..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TupleField x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getVisibility.expected b/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getVisibility.ql b/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getVisibility.ql deleted file mode 100644 index 457bbd1a57bf..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TupleField x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/TupleFieldList/Cargo.lock b/rust/ql/test/extractor-tests/generated/TupleFieldList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TupleFieldList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList.expected b/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList.expected index 5101ab7bf197..48940b31c345 100644 --- a/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList.expected +++ b/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList.expected @@ -1 +1,5 @@ -| gen_tuple_field_list.rs:7:13:7:25 | TupleFieldList | getNumberOfFields: | 2 | +instances +| gen_tuple_field_list.rs:7:13:7:25 | TupleFieldList | +getField +| 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/TupleFieldList.ql b/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList.ql index fd25929804e6..90b61236db33 100644 --- a/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList.ql +++ b/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from TupleFieldList x, int getNumberOfFields -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfFields = x.getNumberOfFields() -select x, "getNumberOfFields:", getNumberOfFields +query predicate instances(TupleFieldList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getField(TupleFieldList x, int index, TupleField getField) { + toBeTested(x) and not x.isUnknown() and getField = x.getField(index) +} diff --git a/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList_getField.expected b/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList_getField.expected deleted file mode 100644 index 77b15f1aa42f..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList_getField.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/TupleFieldList_getField.ql b/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList_getField.ql deleted file mode 100644 index 8483c03f1d77..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList_getField.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TupleFieldList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getField(index) diff --git a/rust/ql/test/extractor-tests/generated/TuplePat/Cargo.lock b/rust/ql/test/extractor-tests/generated/TuplePat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TuplePat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat.expected b/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat.expected index d6522bb7bf11..8e769296d5fb 100644 --- a/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat.expected +++ b/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat.expected @@ -1,2 +1,10 @@ -| gen_tuple_pat.rs:5:9:5:14 | TuplePat | getNumberOfFields: | 2 | -| gen_tuple_pat.rs:6:9:6:22 | TuplePat | getNumberOfFields: | 4 | +instances +| gen_tuple_pat.rs:5:9:5:14 | TuplePat | +| gen_tuple_pat.rs:6:9:6:22 | TuplePat | +getField +| gen_tuple_pat.rs:5:9:5:14 | TuplePat | 0 | gen_tuple_pat.rs:5:10:5:10 | x | +| gen_tuple_pat.rs:5:9:5:14 | TuplePat | 1 | gen_tuple_pat.rs:5:13:5:13 | y | +| gen_tuple_pat.rs:6:9:6:22 | TuplePat | 0 | gen_tuple_pat.rs:6:10:6:10 | a | +| gen_tuple_pat.rs:6:9:6:22 | TuplePat | 1 | gen_tuple_pat.rs:6:13:6:13 | b | +| gen_tuple_pat.rs:6:9:6:22 | TuplePat | 2 | gen_tuple_pat.rs:6:16:6:17 | .. | +| gen_tuple_pat.rs:6:9:6:22 | TuplePat | 3 | gen_tuple_pat.rs:6:21:6:21 | z | diff --git a/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat.ql b/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat.ql index 6e65f167985f..1692fe6758c9 100644 --- a/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat.ql +++ b/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from TuplePat x, int getNumberOfFields -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfFields = x.getNumberOfFields() -select x, "getNumberOfFields:", getNumberOfFields +query predicate instances(TuplePat x) { toBeTested(x) and not x.isUnknown() } + +query predicate getField(TuplePat x, int index, Pat getField) { + toBeTested(x) and not x.isUnknown() and getField = x.getField(index) +} diff --git a/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat_getField.expected b/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat_getField.expected deleted file mode 100644 index 78e00f39c92b..000000000000 --- a/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat_getField.expected +++ /dev/null @@ -1,6 +0,0 @@ -| gen_tuple_pat.rs:5:9:5:14 | TuplePat | 0 | gen_tuple_pat.rs:5:10:5:10 | x | -| gen_tuple_pat.rs:5:9:5:14 | TuplePat | 1 | gen_tuple_pat.rs:5:13:5:13 | y | -| gen_tuple_pat.rs:6:9:6:22 | TuplePat | 0 | gen_tuple_pat.rs:6:10:6:10 | a | -| gen_tuple_pat.rs:6:9:6:22 | TuplePat | 1 | gen_tuple_pat.rs:6:13:6:13 | b | -| gen_tuple_pat.rs:6:9:6:22 | TuplePat | 2 | gen_tuple_pat.rs:6:16:6:17 | .. | -| gen_tuple_pat.rs:6:9:6:22 | TuplePat | 3 | gen_tuple_pat.rs:6:21:6:21 | z | diff --git a/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat_getField.ql b/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat_getField.ql deleted file mode 100644 index 5366bc445f1f..000000000000 --- a/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat_getField.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TuplePat x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getField(index) diff --git a/rust/ql/test/extractor-tests/generated/TupleStructPat/Cargo.lock b/rust/ql/test/extractor-tests/generated/TupleStructPat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TupleStructPat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat.expected b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat.expected index 9e9de534b1e8..c5ce2e2640a0 100644 --- a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat.expected +++ b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat.expected @@ -1,3 +1,18 @@ -| gen_tuple_struct_pat.rs:6:9:6:27 | Tuple(...) | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | getNumberOfFields: | 4 | -| gen_tuple_struct_pat.rs:7:9:7:20 | Tuple(...) | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | getNumberOfFields: | 2 | -| gen_tuple_struct_pat.rs:8:9:8:17 | Tuple(...) | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasPath: | yes | getNumberOfFields: | 1 | +instances +| gen_tuple_struct_pat.rs:6:9:6:27 | Tuple(...) | +| gen_tuple_struct_pat.rs:7:9:7:20 | Tuple(...) | +| gen_tuple_struct_pat.rs:8:9:8:17 | Tuple(...) | +getResolvedPath +getResolvedCrateOrigin +getPath +| gen_tuple_struct_pat.rs:6:9:6:27 | Tuple(...) | gen_tuple_struct_pat.rs:6:9:6:13 | Tuple | +| gen_tuple_struct_pat.rs:7:9:7:20 | Tuple(...) | gen_tuple_struct_pat.rs:7:9:7:13 | Tuple | +| gen_tuple_struct_pat.rs:8:9:8:17 | Tuple(...) | gen_tuple_struct_pat.rs:8:9:8:13 | Tuple | +getField +| gen_tuple_struct_pat.rs:6:9:6:27 | Tuple(...) | 0 | gen_tuple_struct_pat.rs:6:15:6:17 | "a" | +| gen_tuple_struct_pat.rs:6:9:6:27 | Tuple(...) | 1 | gen_tuple_struct_pat.rs:6:20:6:20 | 1 | +| gen_tuple_struct_pat.rs:6:9:6:27 | Tuple(...) | 2 | gen_tuple_struct_pat.rs:6:23:6:23 | 2 | +| gen_tuple_struct_pat.rs:6:9:6:27 | Tuple(...) | 3 | gen_tuple_struct_pat.rs:6:26:6:26 | 3 | +| gen_tuple_struct_pat.rs:7:9:7:20 | Tuple(...) | 0 | gen_tuple_struct_pat.rs:7:15:7:16 | .. | +| gen_tuple_struct_pat.rs:7:9:7:20 | Tuple(...) | 1 | gen_tuple_struct_pat.rs:7:19:7:19 | 3 | +| gen_tuple_struct_pat.rs:8:9:8:17 | Tuple(...) | 0 | gen_tuple_struct_pat.rs:8:15:8:16 | .. | diff --git a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat.ql b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat.ql index af59101fe752..408c892ea3cd 100644 --- a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat.ql +++ b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat.ql @@ -2,19 +2,20 @@ import codeql.rust.elements import TestUtils -from - TupleStructPat x, string hasResolvedPath, string hasResolvedCrateOrigin, string hasPath, - int getNumberOfFields -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasResolvedPath() then hasResolvedPath = "yes" else hasResolvedPath = "no") and - ( - if x.hasResolvedCrateOrigin() - then hasResolvedCrateOrigin = "yes" - else hasResolvedCrateOrigin = "no" - ) and - (if x.hasPath() then hasPath = "yes" else hasPath = "no") and - getNumberOfFields = x.getNumberOfFields() -select x, "hasResolvedPath:", hasResolvedPath, "hasResolvedCrateOrigin:", hasResolvedCrateOrigin, - "hasPath:", hasPath, "getNumberOfFields:", getNumberOfFields +query predicate instances(TupleStructPat x) { toBeTested(x) and not x.isUnknown() } + +query predicate getResolvedPath(TupleStructPat x, string getResolvedPath) { + toBeTested(x) and not x.isUnknown() and getResolvedPath = x.getResolvedPath() +} + +query predicate getResolvedCrateOrigin(TupleStructPat x, string getResolvedCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getResolvedCrateOrigin = x.getResolvedCrateOrigin() +} + +query predicate getPath(TupleStructPat x, Path getPath) { + toBeTested(x) and not x.isUnknown() and getPath = x.getPath() +} + +query predicate getField(TupleStructPat x, int index, Pat getField) { + toBeTested(x) and not x.isUnknown() and getField = x.getField(index) +} diff --git a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getField.expected b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getField.expected deleted file mode 100644 index 21e1a7019633..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getField.expected +++ /dev/null @@ -1,7 +0,0 @@ -| gen_tuple_struct_pat.rs:6:9:6:27 | Tuple(...) | 0 | gen_tuple_struct_pat.rs:6:15:6:17 | "a" | -| gen_tuple_struct_pat.rs:6:9:6:27 | Tuple(...) | 1 | gen_tuple_struct_pat.rs:6:20:6:20 | 1 | -| gen_tuple_struct_pat.rs:6:9:6:27 | Tuple(...) | 2 | gen_tuple_struct_pat.rs:6:23:6:23 | 2 | -| gen_tuple_struct_pat.rs:6:9:6:27 | Tuple(...) | 3 | gen_tuple_struct_pat.rs:6:26:6:26 | 3 | -| gen_tuple_struct_pat.rs:7:9:7:20 | Tuple(...) | 0 | gen_tuple_struct_pat.rs:7:15:7:16 | .. | -| gen_tuple_struct_pat.rs:7:9:7:20 | Tuple(...) | 1 | gen_tuple_struct_pat.rs:7:19:7:19 | 3 | -| gen_tuple_struct_pat.rs:8:9:8:17 | Tuple(...) | 0 | gen_tuple_struct_pat.rs:8:15:8:16 | .. | diff --git a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getField.ql b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getField.ql deleted file mode 100644 index b3919608ce87..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getField.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TupleStructPat x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getField(index) diff --git a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getPath.expected b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getPath.expected deleted file mode 100644 index 34f30ed8ae14..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getPath.expected +++ /dev/null @@ -1,3 +0,0 @@ -| gen_tuple_struct_pat.rs:6:9:6:27 | Tuple(...) | gen_tuple_struct_pat.rs:6:9:6:13 | Tuple | -| gen_tuple_struct_pat.rs:7:9:7:20 | Tuple(...) | gen_tuple_struct_pat.rs:7:9:7:13 | Tuple | -| gen_tuple_struct_pat.rs:8:9:8:17 | Tuple(...) | gen_tuple_struct_pat.rs:8:9:8:13 | Tuple | diff --git a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getPath.ql b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getPath.ql deleted file mode 100644 index bc5318bc1036..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TupleStructPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getPath() diff --git a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedCrateOrigin.ql deleted file mode 100644 index 144302946a94..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TupleStructPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getResolvedCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedPath.expected b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedPath.ql b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedPath.ql deleted file mode 100644 index 561c303d9682..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TupleStructPat x -where toBeTested(x) and not x.isUnknown() -select x, x.getResolvedPath() diff --git a/rust/ql/test/extractor-tests/generated/TupleTypeRepr/Cargo.lock b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.expected b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.expected index f3dcaadb7a2b..1682ee89d08a 100644 --- a/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.expected @@ -1,2 +1,6 @@ -| gen_tuple_type_repr.rs:3:30:3:31 | TupleTypeRepr | getNumberOfFields: | 0 | -| gen_tuple_type_repr.rs:7:12:7:24 | TupleTypeRepr | getNumberOfFields: | 2 | +instances +| gen_tuple_type_repr.rs:3:30:3:31 | TupleTypeRepr | +| gen_tuple_type_repr.rs:7:12:7:24 | TupleTypeRepr | +getField +| 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/TupleTypeRepr.ql b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.ql index 79bf87b93a6c..6e0cbbe65fe4 100644 --- a/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.ql +++ b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from TupleTypeRepr x, int getNumberOfFields -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfFields = x.getNumberOfFields() -select x, "getNumberOfFields:", getNumberOfFields +query predicate instances(TupleTypeRepr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getField(TupleTypeRepr x, int index, TypeRepr getField) { + toBeTested(x) and not x.isUnknown() and getField = x.getField(index) +} diff --git a/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr_getField.expected b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr_getField.expected deleted file mode 100644 index c4d5db977c54..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr_getField.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/TupleTypeRepr_getField.ql b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr_getField.ql deleted file mode 100644 index 3f11b1aa4152..000000000000 --- a/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr_getField.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TupleTypeRepr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getField(index) diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/Cargo.lock b/rust/ql/test/extractor-tests/generated/TypeAlias/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TypeAlias/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias.expected b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias.expected index 8fbbae07cc3e..b9b584857525 100644 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias.expected +++ b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias.expected @@ -1,2 +1,16 @@ -| gen_type_alias.rs:4:5:5:26 | type Point | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasGenericParamList: | no | isDefault: | no | hasName: | yes | hasTypeRepr: | yes | hasTypeBoundList: | no | hasVisibility: | no | hasWhereClause: | no | -| gen_type_alias.rs:8:9:8:20 | type Output | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasGenericParamList: | no | isDefault: | no | hasName: | yes | hasTypeRepr: | no | hasTypeBoundList: | no | hasVisibility: | no | hasWhereClause: | no | +instances +| gen_type_alias.rs:4:5:5:26 | type Point | isDefault: | no | +| gen_type_alias.rs:8:9:8:20 | type Output | isDefault: | no | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getAttr +getGenericParamList +getName +| gen_type_alias.rs:4:5:5:26 | type Point | gen_type_alias.rs:5:10:5:14 | Point | +| gen_type_alias.rs:8:9:8:20 | type Output | gen_type_alias.rs:8:14:8:19 | Output | +getTypeRepr +| gen_type_alias.rs:4:5:5:26 | type Point | gen_type_alias.rs:5:18:5:25 | TupleTypeRepr | +getTypeBoundList +getVisibility +getWhereClause diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias.ql b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias.ql index dd8183b6d410..014bd119d331 100644 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias.ql +++ b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias.ql @@ -2,35 +2,51 @@ import codeql.rust.elements import TestUtils -from - TypeAlias x, string hasExtendedCanonicalPath, string hasCrateOrigin, - string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasGenericParamList, - string isDefault, string hasName, string hasTypeRepr, string hasTypeBoundList, - string hasVisibility, string hasWhereClause -where +query predicate instances(TypeAlias x, string isDefault__label, string isDefault) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no") and - (if x.isDefault() then isDefault = "yes" else isDefault = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - (if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and - (if x.hasTypeBoundList() then hasTypeBoundList = "yes" else hasTypeBoundList = "no") and - (if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no") and - if x.hasWhereClause() then hasWhereClause = "yes" else hasWhereClause = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs, - "hasGenericParamList:", hasGenericParamList, "isDefault:", isDefault, "hasName:", hasName, - "hasTypeRepr:", hasTypeRepr, "hasTypeBoundList:", hasTypeBoundList, "hasVisibility:", - hasVisibility, "hasWhereClause:", hasWhereClause + isDefault__label = "isDefault:" and + if x.isDefault() then isDefault = "yes" else isDefault = "no" +} + +query predicate getExtendedCanonicalPath(TypeAlias x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(TypeAlias x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(TypeAlias x, MacroItems getAttributeMacroExpansion) { + toBeTested(x) and + not x.isUnknown() and + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getAttr(TypeAlias x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getGenericParamList(TypeAlias x, GenericParamList getGenericParamList) { + toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() +} + +query predicate getName(TypeAlias x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getTypeRepr(TypeAlias x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} + +query predicate getTypeBoundList(TypeAlias x, TypeBoundList getTypeBoundList) { + toBeTested(x) and not x.isUnknown() and getTypeBoundList = x.getTypeBoundList() +} + +query predicate getVisibility(TypeAlias x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} + +query predicate getWhereClause(TypeAlias x, WhereClause getWhereClause) { + toBeTested(x) and not x.isUnknown() and getWhereClause = x.getWhereClause() +} diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getAttr.expected b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getAttr.ql b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getAttr.ql deleted file mode 100644 index 2eabe53ca6d8..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeAlias x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getAttributeMacroExpansion.ql deleted file mode 100644 index 62be0d7b8291..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getCrateOrigin.ql deleted file mode 100644 index 9a4de0cd9b85..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getExtendedCanonicalPath.ql deleted file mode 100644 index 1f99c7595567..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getGenericParamList.expected b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getGenericParamList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getGenericParamList.ql b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getGenericParamList.ql deleted file mode 100644 index 9742b1a9bb7f..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getGenericParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericParamList() diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getName.expected b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getName.expected deleted file mode 100644 index 57aefa9327d3..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getName.expected +++ /dev/null @@ -1,2 +0,0 @@ -| gen_type_alias.rs:4:5:5:26 | type Point | gen_type_alias.rs:5:10:5:14 | Point | -| gen_type_alias.rs:8:9:8:20 | type Output | gen_type_alias.rs:8:14:8:19 | Output | diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getName.ql b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getName.ql deleted file mode 100644 index 95b90c69e391..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeBoundList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeBoundList.ql b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeBoundList.ql deleted file mode 100644 index 6988a3baf7d4..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeBoundList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeBoundList() diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeRepr.expected deleted file mode 100644 index a15078cc57d8..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_type_alias.rs:4:5:5:26 | type Point | gen_type_alias.rs:5:18:5:25 | TupleTypeRepr | diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeRepr.ql deleted file mode 100644 index 82be0a670ec0..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getVisibility.expected b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getVisibility.ql b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getVisibility.ql deleted file mode 100644 index 78bb19e876a1..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getWhereClause.expected b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getWhereClause.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getWhereClause.ql b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getWhereClause.ql deleted file mode 100644 index becbdac30165..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias_getWhereClause.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeAlias x -where toBeTested(x) and not x.isUnknown() -select x, x.getWhereClause() diff --git a/rust/ql/test/extractor-tests/generated/TypeArg/Cargo.lock b/rust/ql/test/extractor-tests/generated/TypeArg/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TypeArg/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg.expected b/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg.expected index d81b48448fa4..e628c7daee7f 100644 --- a/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg.expected +++ b/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg.expected @@ -1 +1,4 @@ -| gen_type_arg.rs:7:11:7:13 | TypeArg | hasTypeRepr: | yes | +instances +| gen_type_arg.rs:7:11:7:13 | TypeArg | +getTypeRepr +| 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/TypeArg.ql b/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg.ql index 03464c382182..57178cd8502c 100644 --- a/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg.ql +++ b/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from TypeArg x, string hasTypeRepr -where - toBeTested(x) and - not x.isUnknown() and - if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no" -select x, "hasTypeRepr:", hasTypeRepr +query predicate instances(TypeArg x) { toBeTested(x) and not x.isUnknown() } + +query predicate getTypeRepr(TypeArg x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg_getTypeRepr.expected deleted file mode 100644 index f1bb3e460e18..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg_getTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/TypeArg_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg_getTypeRepr.ql deleted file mode 100644 index d1a4956f460f..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeArg x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/TypeBound/Cargo.lock b/rust/ql/test/extractor-tests/generated/TypeBound/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TypeBound/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound.expected b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound.expected index 40e38f919ceb..e0ed9fcdd6ca 100644 --- a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound.expected +++ b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound.expected @@ -1 +1,6 @@ -| gen_type_bound.rs:7:15:7:19 | TypeBound | isAsync: | no | isConst: | no | hasLifetime: | no | hasTypeRepr: | yes | hasUseBoundGenericArgs: | no | +instances +| gen_type_bound.rs:7:15:7:19 | TypeBound | isAsync: | no | isConst: | no | +getLifetime +getTypeRepr +| gen_type_bound.rs:7:15:7:19 | TypeBound | gen_type_bound.rs:7:15:7:19 | Debug | +getUseBoundGenericArgs diff --git a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound.ql b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound.ql index efd099905db9..e4b2b6127dc3 100644 --- a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound.ql +++ b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound.ql @@ -2,18 +2,25 @@ import codeql.rust.elements import TestUtils -from - TypeBound x, string isAsync, string isConst, string hasLifetime, string hasTypeRepr, - string hasUseBoundGenericArgs -where +query predicate instances( + TypeBound x, string isAsync__label, string isAsync, string isConst__label, string isConst +) { toBeTested(x) and not x.isUnknown() and + isAsync__label = "isAsync:" and (if x.isAsync() then isAsync = "yes" else isAsync = "no") and - (if x.isConst() then isConst = "yes" else isConst = "no") and - (if x.hasLifetime() then hasLifetime = "yes" else hasLifetime = "no") and - (if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and - if x.hasUseBoundGenericArgs() - then hasUseBoundGenericArgs = "yes" - else hasUseBoundGenericArgs = "no" -select x, "isAsync:", isAsync, "isConst:", isConst, "hasLifetime:", hasLifetime, "hasTypeRepr:", - hasTypeRepr, "hasUseBoundGenericArgs:", hasUseBoundGenericArgs + isConst__label = "isConst:" and + if x.isConst() then isConst = "yes" else isConst = "no" +} + +query predicate getLifetime(TypeBound x, Lifetime getLifetime) { + toBeTested(x) and not x.isUnknown() and getLifetime = x.getLifetime() +} + +query predicate getTypeRepr(TypeBound x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} + +query predicate getUseBoundGenericArgs(TypeBound x, UseBoundGenericArgs getUseBoundGenericArgs) { + toBeTested(x) and not x.isUnknown() and getUseBoundGenericArgs = x.getUseBoundGenericArgs() +} diff --git a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getLifetime.expected b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getLifetime.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getLifetime.ql b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getLifetime.ql deleted file mode 100644 index 267ed0dd7ae8..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getLifetime.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeBound x -where toBeTested(x) and not x.isUnknown() -select x, x.getLifetime() diff --git a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getTypeRepr.expected deleted file mode 100644 index 7d9cf96f2ad2..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getTypeRepr.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/TypeBound_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getTypeRepr.ql deleted file mode 100644 index d8ed0d052568..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeBound x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getUseBoundGenericArgs.expected b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getUseBoundGenericArgs.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getUseBoundGenericArgs.ql b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getUseBoundGenericArgs.ql deleted file mode 100644 index a265464633ee..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getUseBoundGenericArgs.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeBound x -where toBeTested(x) and not x.isUnknown() -select x, x.getUseBoundGenericArgs() diff --git a/rust/ql/test/extractor-tests/generated/TypeBoundList/Cargo.lock b/rust/ql/test/extractor-tests/generated/TypeBoundList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TypeBoundList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList.expected b/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList.expected index 3044718de476..e195424d0979 100644 --- a/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList.expected +++ b/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList.expected @@ -1 +1,5 @@ -| gen_type_bound_list.rs:7:15:7:27 | TypeBoundList | getNumberOfBounds: | 2 | +instances +| gen_type_bound_list.rs:7:15:7:27 | TypeBoundList | +getBound +| 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/TypeBoundList.ql b/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList.ql index c5da29061531..8af2507e772b 100644 --- a/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList.ql +++ b/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from TypeBoundList x, int getNumberOfBounds -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfBounds = x.getNumberOfBounds() -select x, "getNumberOfBounds:", getNumberOfBounds +query predicate instances(TypeBoundList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getBound(TypeBoundList x, int index, TypeBound getBound) { + toBeTested(x) and not x.isUnknown() and getBound = x.getBound(index) +} diff --git a/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList_getBound.expected b/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList_getBound.expected deleted file mode 100644 index 7106e5ae6649..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList_getBound.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/TypeBoundList_getBound.ql b/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList_getBound.ql deleted file mode 100644 index d06ceb53fae9..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList_getBound.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeBoundList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getBound(index) diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/Cargo.lock b/rust/ql/test/extractor-tests/generated/TypeParam/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/TypeParam/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.expected b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.expected index 1ba76dc60d35..c856ca9c69e2 100644 --- a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.expected +++ b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.expected @@ -1 +1,7 @@ -| gen_type_param.rs:7:12:7:12 | T | getNumberOfAttrs: | 0 | hasDefaultType: | no | hasName: | yes | hasTypeBoundList: | no | +instances +| gen_type_param.rs:7:12:7:12 | T | +getAttr +getDefaultType +getName +| gen_type_param.rs:7:12:7:12 | T | gen_type_param.rs:7:12:7:12 | T | +getTypeBoundList diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.ql b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.ql index d81ec72681cd..61f38aab8352 100644 --- a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.ql +++ b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.ql @@ -2,14 +2,20 @@ import codeql.rust.elements import TestUtils -from - TypeParam x, int getNumberOfAttrs, string hasDefaultType, string hasName, string hasTypeBoundList -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasDefaultType() then hasDefaultType = "yes" else hasDefaultType = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - if x.hasTypeBoundList() then hasTypeBoundList = "yes" else hasTypeBoundList = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasDefaultType:", hasDefaultType, "hasName:", - hasName, "hasTypeBoundList:", hasTypeBoundList +query predicate instances(TypeParam x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(TypeParam x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getDefaultType(TypeParam x, TypeRepr getDefaultType) { + toBeTested(x) and not x.isUnknown() and getDefaultType = x.getDefaultType() +} + +query predicate getName(TypeParam x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getTypeBoundList(TypeParam x, TypeBoundList getTypeBoundList) { + toBeTested(x) and not x.isUnknown() and getTypeBoundList = x.getTypeBoundList() +} diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getAttr.expected b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getAttr.ql b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getAttr.ql deleted file mode 100644 index fdbefc1b5bdb..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeParam x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getDefaultType.expected b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getDefaultType.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getDefaultType.ql b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getDefaultType.ql deleted file mode 100644 index 8afef31826af..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getDefaultType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeParam x -where toBeTested(x) and not x.isUnknown() -select x, x.getDefaultType() diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getName.expected b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getName.expected deleted file mode 100644 index a51942c95c28..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getName.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/TypeParam_getName.ql b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getName.ql deleted file mode 100644 index 37b18a8b39c5..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeParam x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getTypeBoundList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getTypeBoundList.ql b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getTypeBoundList.ql deleted file mode 100644 index b496a7793a6d..000000000000 --- a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getTypeBoundList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from TypeParam x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeBoundList() diff --git a/rust/ql/test/extractor-tests/generated/UnderscoreExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/UnderscoreExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/UnderscoreExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.expected b/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.expected index ea89e8b29b4e..b4ff46aa5d08 100644 --- a/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.expected +++ b/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.expected @@ -1 +1,3 @@ -| gen_underscore_expr.rs:5:5:5:5 | _ | getNumberOfAttrs: | 0 | +instances +| gen_underscore_expr.rs:5:5:5:5 | _ | +getAttr diff --git a/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql b/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql index 1dc793e9d6e8..13324f21bf24 100644 --- a/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql +++ b/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from UnderscoreExpr x, int getNumberOfAttrs -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() -select x, "getNumberOfAttrs:", getNumberOfAttrs +query predicate instances(UnderscoreExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(UnderscoreExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} diff --git a/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr_getAttr.ql deleted file mode 100644 index 8b2b16e2904f..000000000000 --- a/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from UnderscoreExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Union/Cargo.lock b/rust/ql/test/extractor-tests/generated/Union/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Union/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Union/Union.expected b/rust/ql/test/extractor-tests/generated/Union/Union.expected index bc0b9974b409..110643aeac99 100644 --- a/rust/ql/test/extractor-tests/generated/Union/Union.expected +++ b/rust/ql/test/extractor-tests/generated/Union/Union.expected @@ -1 +1,14 @@ -| 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 | +instances +| gen_union.rs:4:5:7:32 | union U | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getDeriveMacroExpansion +getAttr +getGenericParamList +getName +| gen_union.rs:4:5:7:32 | union U | gen_union.rs:7:11:7:11 | U | +getStructFieldList +| gen_union.rs:4:5:7:32 | union U | gen_union.rs:7:13:7:32 | StructFieldList | +getVisibility +getWhereClause diff --git a/rust/ql/test/extractor-tests/generated/Union/Union.ql b/rust/ql/test/extractor-tests/generated/Union/Union.ql index 81d3ffb3adf9..147a8fca09e8 100644 --- a/rust/ql/test/extractor-tests/generated/Union/Union.ql +++ b/rust/ql/test/extractor-tests/generated/Union/Union.ql @@ -2,31 +2,46 @@ import codeql.rust.elements import TestUtils -from - Union x, string hasExtendedCanonicalPath, string hasCrateOrigin, - string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasGenericParamList, - string hasName, string hasStructFieldList, string hasVisibility, string hasWhereClause -where +query predicate instances(Union x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExtendedCanonicalPath(Union x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(Union x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(Union x, MacroItems getAttributeMacroExpansion) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - (if x.hasStructFieldList() then hasStructFieldList = "yes" else hasStructFieldList = "no") and - (if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no") and - if x.hasWhereClause() then hasWhereClause = "yes" else hasWhereClause = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs, - "hasGenericParamList:", hasGenericParamList, "hasName:", hasName, "hasStructFieldList:", - hasStructFieldList, "hasVisibility:", hasVisibility, "hasWhereClause:", hasWhereClause + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getDeriveMacroExpansion(Union x, int index, MacroItems getDeriveMacroExpansion) { + toBeTested(x) and not x.isUnknown() and getDeriveMacroExpansion = x.getDeriveMacroExpansion(index) +} + +query predicate getAttr(Union x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getGenericParamList(Union x, GenericParamList getGenericParamList) { + toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() +} + +query predicate getName(Union x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getStructFieldList(Union x, StructFieldList getStructFieldList) { + toBeTested(x) and not x.isUnknown() and getStructFieldList = x.getStructFieldList() +} + +query predicate getVisibility(Union x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} + +query predicate getWhereClause(Union x, WhereClause getWhereClause) { + toBeTested(x) and not x.isUnknown() and getWhereClause = x.getWhereClause() +} diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getAttr.expected b/rust/ql/test/extractor-tests/generated/Union/Union_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getAttr.ql b/rust/ql/test/extractor-tests/generated/Union/Union_getAttr.ql deleted file mode 100644 index a4ae6761d233..000000000000 --- a/rust/ql/test/extractor-tests/generated/Union/Union_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Union x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/Union/Union_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/Union/Union_getAttributeMacroExpansion.ql deleted file mode 100644 index 3edc4b71aa39..000000000000 --- a/rust/ql/test/extractor-tests/generated/Union/Union_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Union x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Union/Union_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/Union/Union_getCrateOrigin.ql deleted file mode 100644 index fdbd56d9e88f..000000000000 --- a/rust/ql/test/extractor-tests/generated/Union/Union_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Union x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Union/Union_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/Union/Union_getExtendedCanonicalPath.ql deleted file mode 100644 index fb20efa8f29e..000000000000 --- a/rust/ql/test/extractor-tests/generated/Union/Union_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Union x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getGenericParamList.expected b/rust/ql/test/extractor-tests/generated/Union/Union_getGenericParamList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getGenericParamList.ql b/rust/ql/test/extractor-tests/generated/Union/Union_getGenericParamList.ql deleted file mode 100644 index e9ba2bbeef6d..000000000000 --- a/rust/ql/test/extractor-tests/generated/Union/Union_getGenericParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Union x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericParamList() diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getName.expected b/rust/ql/test/extractor-tests/generated/Union/Union_getName.expected deleted file mode 100644 index 02b0d8ebc8cb..000000000000 --- a/rust/ql/test/extractor-tests/generated/Union/Union_getName.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getName.ql b/rust/ql/test/extractor-tests/generated/Union/Union_getName.ql deleted file mode 100644 index e452a2ff63e1..000000000000 --- a/rust/ql/test/extractor-tests/generated/Union/Union_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Union x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getStructFieldList.expected b/rust/ql/test/extractor-tests/generated/Union/Union_getStructFieldList.expected deleted file mode 100644 index 3613a0fcb381..000000000000 --- a/rust/ql/test/extractor-tests/generated/Union/Union_getStructFieldList.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/Union_getStructFieldList.ql b/rust/ql/test/extractor-tests/generated/Union/Union_getStructFieldList.ql deleted file mode 100644 index 2afeaa6c3f17..000000000000 --- a/rust/ql/test/extractor-tests/generated/Union/Union_getStructFieldList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Union x -where toBeTested(x) and not x.isUnknown() -select x, x.getStructFieldList() diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getVisibility.expected b/rust/ql/test/extractor-tests/generated/Union/Union_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getVisibility.ql b/rust/ql/test/extractor-tests/generated/Union/Union_getVisibility.ql deleted file mode 100644 index 5b1688250a51..000000000000 --- a/rust/ql/test/extractor-tests/generated/Union/Union_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Union x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getWhereClause.expected b/rust/ql/test/extractor-tests/generated/Union/Union_getWhereClause.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getWhereClause.ql b/rust/ql/test/extractor-tests/generated/Union/Union_getWhereClause.ql deleted file mode 100644 index 083aea2ba017..000000000000 --- a/rust/ql/test/extractor-tests/generated/Union/Union_getWhereClause.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Union x -where toBeTested(x) and not x.isUnknown() -select x, x.getWhereClause() diff --git a/rust/ql/test/extractor-tests/generated/Use/Cargo.lock b/rust/ql/test/extractor-tests/generated/Use/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Use/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Use/Use.expected b/rust/ql/test/extractor-tests/generated/Use/Use.expected index e016b067371d..23057c691dcb 100644 --- a/rust/ql/test/extractor-tests/generated/Use/Use.expected +++ b/rust/ql/test/extractor-tests/generated/Use/Use.expected @@ -1 +1,9 @@ -| gen_use.rs:4:5:5:34 | use ...::HashMap | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasUseTree: | yes | hasVisibility: | no | +instances +| gen_use.rs:4:5:5:34 | use ...::HashMap | +getExtendedCanonicalPath +getCrateOrigin +getAttributeMacroExpansion +getAttr +getUseTree +| gen_use.rs:4:5:5:34 | use ...::HashMap | gen_use.rs:5:9:5:33 | ...::HashMap | +getVisibility diff --git a/rust/ql/test/extractor-tests/generated/Use/Use.ql b/rust/ql/test/extractor-tests/generated/Use/Use.ql index 9dbf23d628a4..bfce3bcc89c4 100644 --- a/rust/ql/test/extractor-tests/generated/Use/Use.ql +++ b/rust/ql/test/extractor-tests/generated/Use/Use.ql @@ -2,26 +2,30 @@ import codeql.rust.elements import TestUtils -from - Use x, string hasExtendedCanonicalPath, string hasCrateOrigin, string hasAttributeMacroExpansion, - int getNumberOfAttrs, string hasUseTree, string hasVisibility -where +query predicate instances(Use x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExtendedCanonicalPath(Use x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(Use x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttributeMacroExpansion(Use x, MacroItems getAttributeMacroExpansion) { toBeTested(x) and not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - ( - if x.hasAttributeMacroExpansion() - then hasAttributeMacroExpansion = "yes" - else hasAttributeMacroExpansion = "no" - ) and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasUseTree() then hasUseTree = "yes" else hasUseTree = "no") and - if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs, - "hasUseTree:", hasUseTree, "hasVisibility:", hasVisibility + getAttributeMacroExpansion = x.getAttributeMacroExpansion() +} + +query predicate getAttr(Use x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getUseTree(Use x, UseTree getUseTree) { + toBeTested(x) and not x.isUnknown() and getUseTree = x.getUseTree() +} + +query predicate getVisibility(Use x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} diff --git a/rust/ql/test/extractor-tests/generated/Use/Use_getAttr.expected b/rust/ql/test/extractor-tests/generated/Use/Use_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Use/Use_getAttr.ql b/rust/ql/test/extractor-tests/generated/Use/Use_getAttr.ql deleted file mode 100644 index 35b975fa0e64..000000000000 --- a/rust/ql/test/extractor-tests/generated/Use/Use_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Use x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Use/Use_getAttributeMacroExpansion.expected b/rust/ql/test/extractor-tests/generated/Use/Use_getAttributeMacroExpansion.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Use/Use_getAttributeMacroExpansion.ql b/rust/ql/test/extractor-tests/generated/Use/Use_getAttributeMacroExpansion.ql deleted file mode 100644 index 1b83be279867..000000000000 --- a/rust/ql/test/extractor-tests/generated/Use/Use_getAttributeMacroExpansion.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Use x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttributeMacroExpansion() diff --git a/rust/ql/test/extractor-tests/generated/Use/Use_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Use/Use_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Use/Use_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/Use/Use_getCrateOrigin.ql deleted file mode 100644 index 8e90afcc335d..000000000000 --- a/rust/ql/test/extractor-tests/generated/Use/Use_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Use x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/Use/Use_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Use/Use_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Use/Use_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/Use/Use_getExtendedCanonicalPath.ql deleted file mode 100644 index 64c633c6c7d1..000000000000 --- a/rust/ql/test/extractor-tests/generated/Use/Use_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Use x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/Use/Use_getUseTree.expected b/rust/ql/test/extractor-tests/generated/Use/Use_getUseTree.expected deleted file mode 100644 index 81b2c2c8ad35..000000000000 --- a/rust/ql/test/extractor-tests/generated/Use/Use_getUseTree.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/Use_getUseTree.ql b/rust/ql/test/extractor-tests/generated/Use/Use_getUseTree.ql deleted file mode 100644 index 863d1617d409..000000000000 --- a/rust/ql/test/extractor-tests/generated/Use/Use_getUseTree.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Use x -where toBeTested(x) and not x.isUnknown() -select x, x.getUseTree() diff --git a/rust/ql/test/extractor-tests/generated/Use/Use_getVisibility.expected b/rust/ql/test/extractor-tests/generated/Use/Use_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Use/Use_getVisibility.ql b/rust/ql/test/extractor-tests/generated/Use/Use_getVisibility.ql deleted file mode 100644 index 122499de5818..000000000000 --- a/rust/ql/test/extractor-tests/generated/Use/Use_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Use x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/Cargo.lock b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.expected b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.expected index 3ea69e78251e..6bd467ca708c 100644 --- a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.expected +++ b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.expected @@ -1 +1,6 @@ -| gen_use_bound_generic_args.rs:7:62:7:71 | UseBoundGenericArgs | getNumberOfUseBoundGenericArgs: | 3 | +instances +| gen_use_bound_generic_args.rs:7:62:7:71 | UseBoundGenericArgs | +getUseBoundGenericArg +| 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.ql b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.ql index 5100891c77a7..7147be569b98 100644 --- a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.ql +++ b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.ql @@ -2,9 +2,10 @@ 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 +query predicate instances(UseBoundGenericArgs x) { toBeTested(x) and not x.isUnknown() } + +query predicate getUseBoundGenericArg( + UseBoundGenericArgs x, int index, UseBoundGenericArg getUseBoundGenericArg +) { + toBeTested(x) and not x.isUnknown() and getUseBoundGenericArg = x.getUseBoundGenericArg(index) +} diff --git a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs_getUseBoundGenericArg.expected b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs_getUseBoundGenericArg.expected deleted file mode 100644 index 9cae2694f993..000000000000 --- a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs_getUseBoundGenericArg.expected +++ /dev/null @@ -1,3 +0,0 @@ -| 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 deleted file mode 100644 index 794bf615b049..000000000000 --- a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs_getUseBoundGenericArg.ql +++ /dev/null @@ -1,7 +0,0 @@ -// 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/UseTree/Cargo.lock b/rust/ql/test/extractor-tests/generated/UseTree/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/UseTree/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/UseTree/UseTree.expected b/rust/ql/test/extractor-tests/generated/UseTree/UseTree.expected index ac5d1b772957..5e59c0c9f834 100644 --- a/rust/ql/test/extractor-tests/generated/UseTree/UseTree.expected +++ b/rust/ql/test/extractor-tests/generated/UseTree/UseTree.expected @@ -1,7 +1,20 @@ -| gen_use_tree.rs:5:9:5:33 | ...::HashMap | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | no | -| gen_use_tree.rs:6:9:6:27 | ...::collections::* | isGlob: | yes | hasPath: | yes | hasRename: | no | hasUseTreeList: | no | -| gen_use_tree.rs:7:9:7:46 | ...::HashMap as MyHashMap | isGlob: | no | hasPath: | yes | hasRename: | yes | hasUseTreeList: | no | -| gen_use_tree.rs:8:9:8:50 | ...::collections::{...} | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | yes | -| gen_use_tree.rs:8:28:8:31 | self | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | no | -| gen_use_tree.rs:8:34:8:40 | HashMap | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | no | -| gen_use_tree.rs:8:43:8:49 | HashSet | isGlob: | no | hasPath: | yes | hasRename: | no | hasUseTreeList: | no | +instances +| gen_use_tree.rs:5:9:5:33 | ...::HashMap | isGlob: | no | +| gen_use_tree.rs:6:9:6:27 | ...::collections::* | isGlob: | yes | +| gen_use_tree.rs:7:9:7:46 | ...::HashMap as MyHashMap | isGlob: | no | +| gen_use_tree.rs:8:9:8:50 | ...::collections::{...} | isGlob: | no | +| gen_use_tree.rs:8:28:8:31 | self | isGlob: | no | +| gen_use_tree.rs:8:34:8:40 | HashMap | isGlob: | no | +| gen_use_tree.rs:8:43:8:49 | HashSet | isGlob: | no | +getPath +| gen_use_tree.rs:5:9:5:33 | ...::HashMap | gen_use_tree.rs:5:9:5:33 | ...::HashMap | +| gen_use_tree.rs:6:9:6:27 | ...::collections::* | gen_use_tree.rs:6:9:6:24 | ...::collections | +| gen_use_tree.rs:7:9:7:46 | ...::HashMap as MyHashMap | gen_use_tree.rs:7:9:7:33 | ...::HashMap | +| gen_use_tree.rs:8:9:8:50 | ...::collections::{...} | gen_use_tree.rs:8:9:8:24 | ...::collections | +| gen_use_tree.rs:8:28:8:31 | self | gen_use_tree.rs:8:28:8:31 | self | +| gen_use_tree.rs:8:34:8:40 | HashMap | gen_use_tree.rs:8:34:8:40 | HashMap | +| gen_use_tree.rs:8:43:8:49 | HashSet | gen_use_tree.rs:8:43:8:49 | HashSet | +getRename +| gen_use_tree.rs:7:9:7:46 | ...::HashMap as MyHashMap | gen_use_tree.rs:7:35:7:46 | Rename | +getUseTreeList +| gen_use_tree.rs:8:9:8:50 | ...::collections::{...} | gen_use_tree.rs:8:27:8:50 | UseTreeList | diff --git a/rust/ql/test/extractor-tests/generated/UseTree/UseTree.ql b/rust/ql/test/extractor-tests/generated/UseTree/UseTree.ql index f42948770432..5f4c010c7e44 100644 --- a/rust/ql/test/extractor-tests/generated/UseTree/UseTree.ql +++ b/rust/ql/test/extractor-tests/generated/UseTree/UseTree.ql @@ -2,13 +2,21 @@ import codeql.rust.elements import TestUtils -from UseTree x, string isGlob, string hasPath, string hasRename, string hasUseTreeList -where +query predicate instances(UseTree x, string isGlob__label, string isGlob) { toBeTested(x) and not x.isUnknown() and - (if x.isGlob() then isGlob = "yes" else isGlob = "no") and - (if x.hasPath() then hasPath = "yes" else hasPath = "no") and - (if x.hasRename() then hasRename = "yes" else hasRename = "no") and - if x.hasUseTreeList() then hasUseTreeList = "yes" else hasUseTreeList = "no" -select x, "isGlob:", isGlob, "hasPath:", hasPath, "hasRename:", hasRename, "hasUseTreeList:", - hasUseTreeList + isGlob__label = "isGlob:" and + if x.isGlob() then isGlob = "yes" else isGlob = "no" +} + +query predicate getPath(UseTree x, Path getPath) { + toBeTested(x) and not x.isUnknown() and getPath = x.getPath() +} + +query predicate getRename(UseTree x, Rename getRename) { + toBeTested(x) and not x.isUnknown() and getRename = x.getRename() +} + +query predicate getUseTreeList(UseTree x, UseTreeList getUseTreeList) { + toBeTested(x) and not x.isUnknown() and getUseTreeList = x.getUseTreeList() +} diff --git a/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getPath.expected b/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getPath.expected deleted file mode 100644 index b6164b653422..000000000000 --- a/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getPath.expected +++ /dev/null @@ -1,7 +0,0 @@ -| gen_use_tree.rs:5:9:5:33 | ...::HashMap | gen_use_tree.rs:5:9:5:33 | ...::HashMap | -| gen_use_tree.rs:6:9:6:27 | ...::collections::* | gen_use_tree.rs:6:9:6:24 | ...::collections | -| gen_use_tree.rs:7:9:7:46 | ...::HashMap as MyHashMap | gen_use_tree.rs:7:9:7:33 | ...::HashMap | -| gen_use_tree.rs:8:9:8:50 | ...::collections::{...} | gen_use_tree.rs:8:9:8:24 | ...::collections | -| gen_use_tree.rs:8:28:8:31 | self | gen_use_tree.rs:8:28:8:31 | self | -| gen_use_tree.rs:8:34:8:40 | HashMap | gen_use_tree.rs:8:34:8:40 | HashMap | -| gen_use_tree.rs:8:43:8:49 | HashSet | gen_use_tree.rs:8:43:8:49 | HashSet | diff --git a/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getPath.ql b/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getPath.ql deleted file mode 100644 index 74f892d46f88..000000000000 --- a/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from UseTree x -where toBeTested(x) and not x.isUnknown() -select x, x.getPath() diff --git a/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getRename.expected b/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getRename.expected deleted file mode 100644 index 77c4b31a86a9..000000000000 --- a/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getRename.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_use_tree.rs:7:9:7:46 | ...::HashMap as MyHashMap | gen_use_tree.rs:7:35:7:46 | Rename | diff --git a/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getRename.ql b/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getRename.ql deleted file mode 100644 index 754d167eefdf..000000000000 --- a/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getRename.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from UseTree x -where toBeTested(x) and not x.isUnknown() -select x, x.getRename() diff --git a/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getUseTreeList.expected b/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getUseTreeList.expected deleted file mode 100644 index 547fb0bd37b9..000000000000 --- a/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getUseTreeList.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_use_tree.rs:8:9:8:50 | ...::collections::{...} | gen_use_tree.rs:8:27:8:50 | UseTreeList | diff --git a/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getUseTreeList.ql b/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getUseTreeList.ql deleted file mode 100644 index 5e57b7a6b695..000000000000 --- a/rust/ql/test/extractor-tests/generated/UseTree/UseTree_getUseTreeList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from UseTree x -where toBeTested(x) and not x.isUnknown() -select x, x.getUseTreeList() diff --git a/rust/ql/test/extractor-tests/generated/UseTreeList/Cargo.lock b/rust/ql/test/extractor-tests/generated/UseTreeList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/UseTreeList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList.expected b/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList.expected index 1d1bbfd4e14d..451bd9daf4a7 100644 --- a/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList.expected +++ b/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList.expected @@ -1 +1,5 @@ -| gen_use_tree_list.rs:7:14:7:21 | UseTreeList | getNumberOfUseTrees: | 2 | +instances +| gen_use_tree_list.rs:7:14:7:21 | UseTreeList | +getUseTree +| 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/UseTreeList.ql b/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList.ql index ebcfc59a58f8..5e0058df86d4 100644 --- a/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList.ql +++ b/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from UseTreeList x, int getNumberOfUseTrees -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfUseTrees = x.getNumberOfUseTrees() -select x, "getNumberOfUseTrees:", getNumberOfUseTrees +query predicate instances(UseTreeList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getUseTree(UseTreeList x, int index, UseTree getUseTree) { + toBeTested(x) and not x.isUnknown() and getUseTree = x.getUseTree(index) +} diff --git a/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList_getUseTree.expected b/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList_getUseTree.expected deleted file mode 100644 index 1bfef2daee16..000000000000 --- a/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList_getUseTree.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/UseTreeList_getUseTree.ql b/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList_getUseTree.ql deleted file mode 100644 index dc7262d7ab5f..000000000000 --- a/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList_getUseTree.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from UseTreeList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getUseTree(index) diff --git a/rust/ql/test/extractor-tests/generated/Variant/Cargo.lock b/rust/ql/test/extractor-tests/generated/Variant/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Variant/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant.expected b/rust/ql/test/extractor-tests/generated/Variant/Variant.expected index cca0757d4586..ad970afe530d 100644 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant.expected +++ b/rust/ql/test/extractor-tests/generated/Variant/Variant.expected @@ -1,3 +1,16 @@ -| 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 | +instances +| gen_variant.rs:7:14:7:14 | A | +| gen_variant.rs:7:17:7:22 | B | +| gen_variant.rs:7:25:7:36 | C | +getExtendedCanonicalPath +getCrateOrigin +getAttr +getDiscriminant +getFieldList +| 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 | +getName +| 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 | +getVisibility diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant.ql b/rust/ql/test/extractor-tests/generated/Variant/Variant.ql index a21c0509978c..088f610637a9 100644 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant.ql +++ b/rust/ql/test/extractor-tests/generated/Variant/Variant.ql @@ -2,23 +2,32 @@ import codeql.rust.elements import TestUtils -from - Variant x, string hasExtendedCanonicalPath, string hasCrateOrigin, int getNumberOfAttrs, - string hasDiscriminant, string hasFieldList, string hasName, string hasVisibility -where - toBeTested(x) and - not x.isUnknown() and - ( - if x.hasExtendedCanonicalPath() - then hasExtendedCanonicalPath = "yes" - else hasExtendedCanonicalPath = "no" - ) and - (if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasDiscriminant() then hasDiscriminant = "yes" else hasDiscriminant = "no") and - (if x.hasFieldList() then hasFieldList = "yes" else hasFieldList = "no") and - (if x.hasName() then hasName = "yes" else hasName = "no") and - if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no" -select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "getNumberOfAttrs:", getNumberOfAttrs, "hasDiscriminant:", hasDiscriminant, "hasFieldList:", - hasFieldList, "hasName:", hasName, "hasVisibility:", hasVisibility +query predicate instances(Variant x) { toBeTested(x) and not x.isUnknown() } + +query predicate getExtendedCanonicalPath(Variant x, string getExtendedCanonicalPath) { + toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() +} + +query predicate getCrateOrigin(Variant x, string getCrateOrigin) { + toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin() +} + +query predicate getAttr(Variant x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getDiscriminant(Variant x, Expr getDiscriminant) { + toBeTested(x) and not x.isUnknown() and getDiscriminant = x.getDiscriminant() +} + +query predicate getFieldList(Variant x, FieldList getFieldList) { + toBeTested(x) and not x.isUnknown() and getFieldList = x.getFieldList() +} + +query predicate getName(Variant x, Name getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getVisibility(Variant x, Visibility getVisibility) { + toBeTested(x) and not x.isUnknown() and getVisibility = x.getVisibility() +} diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getAttr.expected b/rust/ql/test/extractor-tests/generated/Variant/Variant_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getAttr.ql b/rust/ql/test/extractor-tests/generated/Variant/Variant_getAttr.ql deleted file mode 100644 index 99972ef847dc..000000000000 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Variant x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Variant/Variant_getCrateOrigin.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getCrateOrigin.ql b/rust/ql/test/extractor-tests/generated/Variant/Variant_getCrateOrigin.ql deleted file mode 100644 index 0acfd9827fee..000000000000 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant_getCrateOrigin.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Variant x -where toBeTested(x) and not x.isUnknown() -select x, x.getCrateOrigin() diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getDiscriminant.expected b/rust/ql/test/extractor-tests/generated/Variant/Variant_getDiscriminant.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getDiscriminant.ql b/rust/ql/test/extractor-tests/generated/Variant/Variant_getDiscriminant.ql deleted file mode 100644 index cde11c30887f..000000000000 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant_getDiscriminant.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Variant x -where toBeTested(x) and not x.isUnknown() -select x, x.getDiscriminant() diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Variant/Variant_getExtendedCanonicalPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getExtendedCanonicalPath.ql b/rust/ql/test/extractor-tests/generated/Variant/Variant_getExtendedCanonicalPath.ql deleted file mode 100644 index ad8aaf86a5cf..000000000000 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant_getExtendedCanonicalPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Variant x -where toBeTested(x) and not x.isUnknown() -select x, x.getExtendedCanonicalPath() diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getFieldList.expected b/rust/ql/test/extractor-tests/generated/Variant/Variant_getFieldList.expected deleted file mode 100644 index 9461de62cc6a..000000000000 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant_getFieldList.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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_getFieldList.ql b/rust/ql/test/extractor-tests/generated/Variant/Variant_getFieldList.ql deleted file mode 100644 index e1bae7650bac..000000000000 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant_getFieldList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Variant x -where toBeTested(x) and not x.isUnknown() -select x, x.getFieldList() diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getName.expected b/rust/ql/test/extractor-tests/generated/Variant/Variant_getName.expected deleted file mode 100644 index 87faede2aada..000000000000 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant_getName.expected +++ /dev/null @@ -1,3 +0,0 @@ -| 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/Variant_getName.ql b/rust/ql/test/extractor-tests/generated/Variant/Variant_getName.ql deleted file mode 100644 index 73f4ff33e403..000000000000 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Variant x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getVisibility.expected b/rust/ql/test/extractor-tests/generated/Variant/Variant_getVisibility.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getVisibility.ql b/rust/ql/test/extractor-tests/generated/Variant/Variant_getVisibility.ql deleted file mode 100644 index 7edb649fbdaa..000000000000 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant_getVisibility.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Variant x -where toBeTested(x) and not x.isUnknown() -select x, x.getVisibility() diff --git a/rust/ql/test/extractor-tests/generated/VariantList/Cargo.lock b/rust/ql/test/extractor-tests/generated/VariantList/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/VariantList/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/VariantList/VariantList.expected b/rust/ql/test/extractor-tests/generated/VariantList/VariantList.expected index b7b25116f580..9642b1fe3087 100644 --- a/rust/ql/test/extractor-tests/generated/VariantList/VariantList.expected +++ b/rust/ql/test/extractor-tests/generated/VariantList/VariantList.expected @@ -1 +1,6 @@ -| gen_variant_list.rs:7:12:7:22 | VariantList | getNumberOfVariants: | 3 | +instances +| gen_variant_list.rs:7:12:7:22 | VariantList | +getVariant +| 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/VariantList.ql b/rust/ql/test/extractor-tests/generated/VariantList/VariantList.ql index 213e4d447dc4..85ecb0fe4092 100644 --- a/rust/ql/test/extractor-tests/generated/VariantList/VariantList.ql +++ b/rust/ql/test/extractor-tests/generated/VariantList/VariantList.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from VariantList x, int getNumberOfVariants -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfVariants = x.getNumberOfVariants() -select x, "getNumberOfVariants:", getNumberOfVariants +query predicate instances(VariantList x) { toBeTested(x) and not x.isUnknown() } + +query predicate getVariant(VariantList x, int index, Variant getVariant) { + toBeTested(x) and not x.isUnknown() and getVariant = x.getVariant(index) +} diff --git a/rust/ql/test/extractor-tests/generated/VariantList/VariantList_getVariant.expected b/rust/ql/test/extractor-tests/generated/VariantList/VariantList_getVariant.expected deleted file mode 100644 index c62dfe004724..000000000000 --- a/rust/ql/test/extractor-tests/generated/VariantList/VariantList_getVariant.expected +++ /dev/null @@ -1,3 +0,0 @@ -| 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/VariantList_getVariant.ql b/rust/ql/test/extractor-tests/generated/VariantList/VariantList_getVariant.ql deleted file mode 100644 index fe1800104a3f..000000000000 --- a/rust/ql/test/extractor-tests/generated/VariantList/VariantList_getVariant.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from VariantList x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getVariant(index) diff --git a/rust/ql/test/extractor-tests/generated/Visibility/Cargo.lock b/rust/ql/test/extractor-tests/generated/Visibility/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Visibility/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/Visibility/Visibility.expected b/rust/ql/test/extractor-tests/generated/Visibility/Visibility.expected index 7be919b547e7..daae8776ad79 100644 --- a/rust/ql/test/extractor-tests/generated/Visibility/Visibility.expected +++ b/rust/ql/test/extractor-tests/generated/Visibility/Visibility.expected @@ -1 +1,3 @@ -| gen_visibility.rs:7:7:7:9 | Visibility | hasPath: | no | +instances +| gen_visibility.rs:7:7:7:9 | Visibility | +getPath diff --git a/rust/ql/test/extractor-tests/generated/Visibility/Visibility.ql b/rust/ql/test/extractor-tests/generated/Visibility/Visibility.ql index adf0833c12c6..651d0aecb2f3 100644 --- a/rust/ql/test/extractor-tests/generated/Visibility/Visibility.ql +++ b/rust/ql/test/extractor-tests/generated/Visibility/Visibility.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from Visibility x, string hasPath -where - toBeTested(x) and - not x.isUnknown() and - if x.hasPath() then hasPath = "yes" else hasPath = "no" -select x, "hasPath:", hasPath +query predicate instances(Visibility x) { toBeTested(x) and not x.isUnknown() } + +query predicate getPath(Visibility x, Path getPath) { + toBeTested(x) and not x.isUnknown() and getPath = x.getPath() +} diff --git a/rust/ql/test/extractor-tests/generated/Visibility/Visibility_getPath.expected b/rust/ql/test/extractor-tests/generated/Visibility/Visibility_getPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/Visibility/Visibility_getPath.ql b/rust/ql/test/extractor-tests/generated/Visibility/Visibility_getPath.ql deleted file mode 100644 index 0f0b641d2129..000000000000 --- a/rust/ql/test/extractor-tests/generated/Visibility/Visibility_getPath.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from Visibility x -where toBeTested(x) and not x.isUnknown() -select x, x.getPath() diff --git a/rust/ql/test/extractor-tests/generated/WhereClause/Cargo.lock b/rust/ql/test/extractor-tests/generated/WhereClause/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/WhereClause/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause.expected b/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause.expected index 4610fc7dea16..8dbec29fd905 100644 --- a/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause.expected +++ b/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause.expected @@ -1 +1,4 @@ -| gen_where_clause.rs:7:21:7:34 | WhereClause | getNumberOfPredicates: | 1 | +instances +| gen_where_clause.rs:7:21:7:34 | WhereClause | +getPredicate +| 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/WhereClause.ql b/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause.ql index 891b8d55fc22..8890de0efaf6 100644 --- a/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause.ql +++ b/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause.ql @@ -2,9 +2,8 @@ import codeql.rust.elements import TestUtils -from WhereClause x, int getNumberOfPredicates -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfPredicates = x.getNumberOfPredicates() -select x, "getNumberOfPredicates:", getNumberOfPredicates +query predicate instances(WhereClause x) { toBeTested(x) and not x.isUnknown() } + +query predicate getPredicate(WhereClause x, int index, WherePred getPredicate) { + toBeTested(x) and not x.isUnknown() and getPredicate = x.getPredicate(index) +} diff --git a/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause_getPredicate.expected b/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause_getPredicate.expected deleted file mode 100644 index b8fcba86a6a6..000000000000 --- a/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause_getPredicate.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/WhereClause_getPredicate.ql b/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause_getPredicate.ql deleted file mode 100644 index 4b0c8ab7b7dc..000000000000 --- a/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause_getPredicate.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from WhereClause x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getPredicate(index) diff --git a/rust/ql/test/extractor-tests/generated/WherePred/Cargo.lock b/rust/ql/test/extractor-tests/generated/WherePred/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/WherePred/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/WherePred/WherePred.expected b/rust/ql/test/extractor-tests/generated/WherePred/WherePred.expected index d2988eb245d1..4980b912b860 100644 --- a/rust/ql/test/extractor-tests/generated/WherePred/WherePred.expected +++ b/rust/ql/test/extractor-tests/generated/WherePred/WherePred.expected @@ -1,2 +1,11 @@ -| 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 | +instances +| gen_where_pred.rs:7:36:7:43 | WherePred | +| gen_where_pred.rs:7:46:7:53 | WherePred | +getGenericParamList +getLifetime +getTypeRepr +| 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 | +getTypeBoundList +| 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.ql b/rust/ql/test/extractor-tests/generated/WherePred/WherePred.ql index a4471e43ef6a..3d1ecb7339db 100644 --- a/rust/ql/test/extractor-tests/generated/WherePred/WherePred.ql +++ b/rust/ql/test/extractor-tests/generated/WherePred/WherePred.ql @@ -2,15 +2,20 @@ import codeql.rust.elements import TestUtils -from - WherePred x, string hasGenericParamList, string hasLifetime, string hasTypeRepr, - string hasTypeBoundList -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no") and - (if x.hasLifetime() then hasLifetime = "yes" else hasLifetime = "no") and - (if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and - if x.hasTypeBoundList() then hasTypeBoundList = "yes" else hasTypeBoundList = "no" -select x, "hasGenericParamList:", hasGenericParamList, "hasLifetime:", hasLifetime, "hasTypeRepr:", - hasTypeRepr, "hasTypeBoundList:", hasTypeBoundList +query predicate instances(WherePred x) { toBeTested(x) and not x.isUnknown() } + +query predicate getGenericParamList(WherePred x, GenericParamList getGenericParamList) { + toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() +} + +query predicate getLifetime(WherePred x, Lifetime getLifetime) { + toBeTested(x) and not x.isUnknown() and getLifetime = x.getLifetime() +} + +query predicate getTypeRepr(WherePred x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} + +query predicate getTypeBoundList(WherePred x, TypeBoundList getTypeBoundList) { + toBeTested(x) and not x.isUnknown() and getTypeBoundList = x.getTypeBoundList() +} diff --git a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getGenericParamList.expected b/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getGenericParamList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getGenericParamList.ql b/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getGenericParamList.ql deleted file mode 100644 index ef15cd7f4f8e..000000000000 --- a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getGenericParamList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from WherePred x -where toBeTested(x) and not x.isUnknown() -select x, x.getGenericParamList() diff --git a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getLifetime.expected b/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getLifetime.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getLifetime.ql b/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getLifetime.ql deleted file mode 100644 index a0bd226ca4fe..000000000000 --- a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getLifetime.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from WherePred x -where toBeTested(x) and not x.isUnknown() -select x, x.getLifetime() diff --git a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeBoundList.expected deleted file mode 100644 index 2b3b7d1172ab..000000000000 --- a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeBoundList.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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_getTypeBoundList.ql b/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeBoundList.ql deleted file mode 100644 index 0f269fa91406..000000000000 --- a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeBoundList.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from WherePred x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeBoundList() diff --git a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeRepr.expected deleted file mode 100644 index 92c8489eda04..000000000000 --- a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeRepr.expected +++ /dev/null @@ -1,2 +0,0 @@ -| 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/WherePred_getTypeRepr.ql b/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeRepr.ql deleted file mode 100644 index e1992ba278ec..000000000000 --- a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeRepr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from WherePred x -where toBeTested(x) and not x.isUnknown() -select x, x.getTypeRepr() diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/WhileExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/WhileExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.expected b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.expected index 547e3e0ad2e6..8ff736a0af0a 100644 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.expected +++ b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.expected @@ -1 +1,8 @@ -| gen_while_expr.rs:7:5:9:5 | while ... { ... } | hasLabel: | no | hasLoopBody: | yes | getNumberOfAttrs: | 0 | hasCondition: | yes | +instances +| gen_while_expr.rs:7:5:9:5 | while ... { ... } | +getLabel +getLoopBody +| gen_while_expr.rs:7:5:9:5 | while ... { ... } | gen_while_expr.rs:7:18:9:5 | { ... } | +getAttr +getCondition +| 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.ql b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.ql index 8544014e571a..67a0dc562ad2 100644 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.ql +++ b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.ql @@ -2,13 +2,20 @@ import codeql.rust.elements import TestUtils -from WhileExpr x, string hasLabel, string hasLoopBody, int getNumberOfAttrs, string hasCondition -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasLabel() then hasLabel = "yes" else hasLabel = "no") and - (if x.hasLoopBody() then hasLoopBody = "yes" else hasLoopBody = "no") and - getNumberOfAttrs = x.getNumberOfAttrs() and - if x.hasCondition() then hasCondition = "yes" else hasCondition = "no" -select x, "hasLabel:", hasLabel, "hasLoopBody:", hasLoopBody, "getNumberOfAttrs:", getNumberOfAttrs, - "hasCondition:", hasCondition +query predicate instances(WhileExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getLabel(WhileExpr x, Label getLabel) { + toBeTested(x) and not x.isUnknown() and getLabel = x.getLabel() +} + +query predicate getLoopBody(WhileExpr x, BlockExpr getLoopBody) { + toBeTested(x) and not x.isUnknown() and getLoopBody = x.getLoopBody() +} + +query predicate getAttr(WhileExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getCondition(WhileExpr x, Expr getCondition) { + toBeTested(x) and not x.isUnknown() and getCondition = x.getCondition() +} diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getAttr.ql deleted file mode 100644 index eeb05dcc0b0b..000000000000 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from WhileExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getCondition.expected b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getCondition.expected deleted file mode 100644 index 1b6f53eeea0e..000000000000 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getCondition.expected +++ /dev/null @@ -1 +0,0 @@ -| 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_getCondition.ql b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getCondition.ql deleted file mode 100644 index 184dc6f8a7c6..000000000000 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getCondition.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from WhileExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getCondition() diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLabel.expected b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLabel.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLabel.ql b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLabel.ql deleted file mode 100644 index 59865e97014f..000000000000 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLabel.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from WhileExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getLabel() diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLoopBody.expected b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLoopBody.expected deleted file mode 100644 index 54fd5ed51520..000000000000 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLoopBody.expected +++ /dev/null @@ -1 +0,0 @@ -| 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/WhileExpr_getLoopBody.ql b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLoopBody.ql deleted file mode 100644 index 3d19f2e73412..000000000000 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLoopBody.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from WhileExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getLoopBody() diff --git a/rust/ql/test/extractor-tests/generated/WildcardPat/Cargo.lock b/rust/ql/test/extractor-tests/generated/WildcardPat/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/WildcardPat/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/WildcardPat/WildcardPat.ql b/rust/ql/test/extractor-tests/generated/WildcardPat/WildcardPat.ql index cac335f3b7fc..e64d55357a36 100644 --- a/rust/ql/test/extractor-tests/generated/WildcardPat/WildcardPat.ql +++ b/rust/ql/test/extractor-tests/generated/WildcardPat/WildcardPat.ql @@ -2,6 +2,4 @@ import codeql.rust.elements import TestUtils -from WildcardPat x -where toBeTested(x) and not x.isUnknown() -select x +query predicate instances(WildcardPat x) { toBeTested(x) and not x.isUnknown() } diff --git a/rust/ql/test/extractor-tests/generated/YeetExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/YeetExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/YeetExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr.expected b/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr.expected index 3bce2660fe35..a77777c99fd1 100644 --- a/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr.expected +++ b/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr.expected @@ -1 +1,5 @@ -| gen_yeet_expr.rs:6:8:6:36 | YeetExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | +instances +| gen_yeet_expr.rs:6:8:6:36 | YeetExpr | +getAttr +getExpr +| gen_yeet_expr.rs:6:8:6:36 | YeetExpr | gen_yeet_expr.rs:6:16:6:36 | "index out of bounds" | diff --git a/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr.ql b/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr.ql index 165bd667d3c8..88d4e570a1e8 100644 --- a/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr.ql +++ b/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from YeetExpr x, int getNumberOfAttrs, string hasExpr -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - if x.hasExpr() then hasExpr = "yes" else hasExpr = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasExpr:", hasExpr +query predicate instances(YeetExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(YeetExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExpr(YeetExpr x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr_getAttr.ql deleted file mode 100644 index a246607b7794..000000000000 --- a/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from YeetExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr_getExpr.expected deleted file mode 100644 index e1d96684eec0..000000000000 --- a/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr_getExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_yeet_expr.rs:6:8:6:36 | YeetExpr | gen_yeet_expr.rs:6:16:6:36 | "index out of bounds" | diff --git a/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr_getExpr.ql b/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr_getExpr.ql deleted file mode 100644 index edb0e0676a7a..000000000000 --- a/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from YeetExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/YieldExpr/Cargo.lock b/rust/ql/test/extractor-tests/generated/YieldExpr/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/YieldExpr/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr.expected b/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr.expected index 5045b11d25d2..da73c1be6711 100644 --- a/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr.expected +++ b/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr.expected @@ -1 +1,5 @@ -| gen_yield_expr.rs:7:13:7:19 | YieldExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | +instances +| gen_yield_expr.rs:7:13:7:19 | YieldExpr | +getAttr +getExpr +| gen_yield_expr.rs:7:13:7:19 | YieldExpr | gen_yield_expr.rs:7:19:7:19 | 1 | diff --git a/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr.ql b/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr.ql index 47f32503bfc1..68281d39d9e9 100644 --- a/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr.ql +++ b/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr.ql @@ -2,10 +2,12 @@ import codeql.rust.elements import TestUtils -from YieldExpr x, int getNumberOfAttrs, string hasExpr -where - toBeTested(x) and - not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - if x.hasExpr() then hasExpr = "yes" else hasExpr = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasExpr:", hasExpr +query predicate instances(YieldExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(YieldExpr x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getExpr(YieldExpr x, Expr getExpr) { + toBeTested(x) and not x.isUnknown() and getExpr = x.getExpr() +} diff --git a/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr_getAttr.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr_getAttr.ql deleted file mode 100644 index 9c6b01bc228b..000000000000 --- a/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr_getAttr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from YieldExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAttr(index) diff --git a/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr_getExpr.expected deleted file mode 100644 index 96884087f9d7..000000000000 --- a/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr_getExpr.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_yield_expr.rs:7:13:7:19 | YieldExpr | gen_yield_expr.rs:7:19:7:19 | 1 | diff --git a/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr_getExpr.ql b/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr_getExpr.ql deleted file mode 100644 index bdaa4755e6d3..000000000000 --- a/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr_getExpr.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen, do not edit -import codeql.rust.elements -import TestUtils - -from YieldExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/literal/Cargo.lock b/rust/ql/test/extractor-tests/literal/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/literal/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/ExtractionConsistency.expected new file mode 100644 index 000000000000..2d13c81bdab8 --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/ExtractionConsistency.expected @@ -0,0 +1,3 @@ +extractionWarning +| included/included.rs:1:1:1:1 | semantic analyzer unavailable (not loaded as its own module, probably included by `!include`) | +| macro_expansion.rs:56:9:56:31 | macro expansion failed: could not resolve macro 'concat' | diff --git a/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..deb5ac66914c --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,9 @@ +multipleCallTargets +| proc_macro.rs:16:12:16:16 | ...::to_tokens(...) | +| proc_macro.rs:26:10:26:12 | ...::to_tokens(...) | +| proc_macro.rs:27:10:27:16 | ...::to_tokens(...) | +| proc_macro.rs:42:16:42:26 | ...::to_tokens(...) | +| proc_macro.rs:44:27:44:30 | ...::to_tokens(...) | +| proc_macro.rs:46:18:46:28 | ...::to_tokens(...) | +multiplePathResolutions +| macro_expansion.rs:1:5:1:14 | proc_macro | diff --git a/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/TypeInferenceConsistency.expected b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/TypeInferenceConsistency.expected new file mode 100644 index 000000000000..416404c2bd19 --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/TypeInferenceConsistency.expected @@ -0,0 +1,2 @@ +illFormedTypeMention +| macro_expansion.rs:99:7:99:19 | MyDeriveUnion | diff --git a/rust/ql/test/extractor-tests/macro-expansion/Cargo.lock b/rust/ql/test/extractor-tests/macro-expansion/Cargo.lock new file mode 100644 index 000000000000..3ed3f289c886 --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/Cargo.lock @@ -0,0 +1,53 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc_macro" +version = "0.0.1" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "proc_macro", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" diff --git a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected new file mode 100644 index 000000000000..5119e69d0430 --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected @@ -0,0 +1,3916 @@ +call.rs: +# 1| [SourceFile] SourceFile +# 1| getItem(0): [Use] use ...::macro_expansion +# 1| getUseTree(): [UseTree] ...::macro_expansion +# 1| getPath(): [Path] ...::macro_expansion +# 1| getQualifier(): [Path] crate +# 1| getSegment(): [PathSegment] crate +# 1| getIdentifier(): [NameRef] crate +# 1| getSegment(): [PathSegment] macro_expansion +# 1| getIdentifier(): [NameRef] macro_expansion +# 3| getItem(1): [Function] fn call_some_functions +# 3| getParamList(): [ParamList] ParamList +# 3| getBody(): [BlockExpr] { ... } +# 3| getStmtList(): [StmtList] StmtList +# 4| getStatement(0): [ExprStmt] ExprStmt +# 4| getExpr(): [CallExpr] ...::foo(...) +# 4| getArgList(): [ArgList] ArgList +# 4| getFunction(): [PathExpr] ...::foo +# 4| getPath(): [Path] ...::foo +# 4| getQualifier(): [Path] macro_expansion +# 4| getSegment(): [PathSegment] macro_expansion +# 4| getIdentifier(): [NameRef] macro_expansion +# 4| getSegment(): [PathSegment] foo +# 4| getIdentifier(): [NameRef] foo +# 5| getStatement(1): [ExprStmt] ExprStmt +# 5| getExpr(): [CallExpr] ...::foo_new(...) +# 5| getArgList(): [ArgList] ArgList +# 5| getFunction(): [PathExpr] ...::foo_new +# 5| getPath(): [Path] ...::foo_new +# 5| getQualifier(): [Path] macro_expansion +# 5| getSegment(): [PathSegment] macro_expansion +# 5| getIdentifier(): [NameRef] macro_expansion +# 5| getSegment(): [PathSegment] foo_new +# 5| getIdentifier(): [NameRef] foo_new +# 6| getStatement(2): [ExprStmt] ExprStmt +# 6| getExpr(): [CallExpr] ...::bar_0(...) +# 6| getArgList(): [ArgList] ArgList +# 6| getFunction(): [PathExpr] ...::bar_0 +# 6| getPath(): [Path] ...::bar_0 +# 6| getQualifier(): [Path] macro_expansion +# 6| getSegment(): [PathSegment] macro_expansion +# 6| getIdentifier(): [NameRef] macro_expansion +# 6| getSegment(): [PathSegment] bar_0 +# 6| getIdentifier(): [NameRef] bar_0 +# 7| getStatement(3): [ExprStmt] ExprStmt +# 7| getExpr(): [CallExpr] ...::bar_1(...) +# 7| getArgList(): [ArgList] ArgList +# 7| getFunction(): [PathExpr] ...::bar_1 +# 7| getPath(): [Path] ...::bar_1 +# 7| getQualifier(): [Path] macro_expansion +# 7| getSegment(): [PathSegment] macro_expansion +# 7| getIdentifier(): [NameRef] macro_expansion +# 7| getSegment(): [PathSegment] bar_1 +# 7| getIdentifier(): [NameRef] bar_1 +# 8| getStatement(4): [ExprStmt] ExprStmt +# 8| getExpr(): [CallExpr] ...::bar_0_new(...) +# 8| getArgList(): [ArgList] ArgList +# 8| getFunction(): [PathExpr] ...::bar_0_new +# 8| getPath(): [Path] ...::bar_0_new +# 8| getQualifier(): [Path] macro_expansion +# 8| getSegment(): [PathSegment] macro_expansion +# 8| getIdentifier(): [NameRef] macro_expansion +# 8| getSegment(): [PathSegment] bar_0_new +# 8| getIdentifier(): [NameRef] bar_0_new +# 9| getStatement(5): [ExprStmt] ExprStmt +# 9| getExpr(): [CallExpr] ...::bar_1_new(...) +# 9| getArgList(): [ArgList] ArgList +# 9| getFunction(): [PathExpr] ...::bar_1_new +# 9| getPath(): [Path] ...::bar_1_new +# 9| getQualifier(): [Path] macro_expansion +# 9| getSegment(): [PathSegment] macro_expansion +# 9| getIdentifier(): [NameRef] macro_expansion +# 9| getSegment(): [PathSegment] bar_1_new +# 9| getIdentifier(): [NameRef] bar_1_new +# 10| getStatement(6): [ExprStmt] ExprStmt +# 10| getExpr(): [CallExpr] ...::bzz_0(...) +# 10| getArgList(): [ArgList] ArgList +# 10| getFunction(): [PathExpr] ...::bzz_0 +# 10| getPath(): [Path] ...::bzz_0 +# 10| getQualifier(): [Path] ...::S +# 10| getQualifier(): [Path] macro_expansion +# 10| getSegment(): [PathSegment] macro_expansion +# 10| getIdentifier(): [NameRef] macro_expansion +# 10| getSegment(): [PathSegment] S +# 10| getIdentifier(): [NameRef] S +# 10| getSegment(): [PathSegment] bzz_0 +# 10| getIdentifier(): [NameRef] bzz_0 +# 11| getStatement(7): [ExprStmt] ExprStmt +# 11| getExpr(): [CallExpr] ...::bzz_1(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getFunction(): [PathExpr] ...::bzz_1 +# 11| getPath(): [Path] ...::bzz_1 +# 11| getQualifier(): [Path] ...::S +# 11| getQualifier(): [Path] macro_expansion +# 11| getSegment(): [PathSegment] macro_expansion +# 11| getIdentifier(): [NameRef] macro_expansion +# 11| getSegment(): [PathSegment] S +# 11| getIdentifier(): [NameRef] S +# 11| getSegment(): [PathSegment] bzz_1 +# 11| getIdentifier(): [NameRef] bzz_1 +# 12| getStatement(8): [ExprStmt] ExprStmt +# 12| getExpr(): [CallExpr] ...::bzz_2(...) +# 12| getArgList(): [ArgList] ArgList +# 12| getFunction(): [PathExpr] ...::bzz_2 +# 12| getPath(): [Path] ...::bzz_2 +# 12| getQualifier(): [Path] ...::S +# 12| getQualifier(): [Path] macro_expansion +# 12| getSegment(): [PathSegment] macro_expansion +# 12| getIdentifier(): [NameRef] macro_expansion +# 12| getSegment(): [PathSegment] S +# 12| getIdentifier(): [NameRef] S +# 12| getSegment(): [PathSegment] bzz_2 +# 12| getIdentifier(): [NameRef] bzz_2 +# 13| getStatement(9): [ExprStmt] ExprStmt +# 13| getExpr(): [CallExpr] ...::x(...) +# 13| getArgList(): [ArgList] ArgList +# 13| getFunction(): [PathExpr] ...::x +# 13| getPath(): [Path] ...::x +# 13| getQualifier(): [Path] ...::S +# 13| getQualifier(): [Path] macro_expansion +# 13| getSegment(): [PathSegment] macro_expansion +# 13| getIdentifier(): [NameRef] macro_expansion +# 13| getSegment(): [PathSegment] S +# 13| getIdentifier(): [NameRef] S +# 13| getSegment(): [PathSegment] x +# 13| getIdentifier(): [NameRef] x +# 3| getName(): [Name] call_some_functions +included/included.rs: +# 1| [SourceFile] SourceFile +# 1| getItem(0): [Function] fn included +# 1| getParamList(): [ParamList] ParamList +# 1| getBody(): [BlockExpr] { ... } +# 1| getStmtList(): [StmtList] StmtList +# 2| getStatement(0): [ExprStmt] ExprStmt +# 2| getExpr(): [AssignmentExpr] ... = ... +# 2| getLhs(): [UnderscoreExpr] _ +# 2| getRhs(): [MacroExpr] MacroExpr +# 2| getMacroCall(): [MacroCall] concat!... +# 2| getPath(): [Path] concat +# 2| getSegment(): [PathSegment] concat +# 2| getIdentifier(): [NameRef] concat +# 2| getTokenTree(): [TokenTree] TokenTree +# 1| getName(): [Name] included +# 2| [Comment] //... +lib.rs: +# 1| [SourceFile] SourceFile +# 1| getItem(0): [Module] mod call +# 1| getName(): [Name] call +# 2| getItem(1): [Module] mod macro_expansion +# 2| getName(): [Name] macro_expansion +macro_expansion.rs: +# 1| [SourceFile] SourceFile +# 1| getItem(0): [Use] use proc_macro::{...} +# 1| getUseTree(): [UseTree] proc_macro::{...} +# 1| getPath(): [Path] proc_macro +# 1| getSegment(): [PathSegment] proc_macro +# 1| getIdentifier(): [NameRef] proc_macro +# 1| getUseTreeList(): [UseTreeList] UseTreeList +# 1| getUseTree(0): [UseTree] repeat +# 1| getPath(): [Path] repeat +# 1| getSegment(): [PathSegment] repeat +# 1| getIdentifier(): [NameRef] repeat +# 1| getUseTree(1): [UseTree] add_one +# 1| getPath(): [Path] add_one +# 1| getSegment(): [PathSegment] add_one +# 1| getIdentifier(): [NameRef] add_one +# 1| getUseTree(2): [UseTree] erase +# 1| getPath(): [Path] erase +# 1| getSegment(): [PathSegment] erase +# 1| getIdentifier(): [NameRef] erase +# 1| getUseTree(3): [UseTree] MyTrait +# 1| getPath(): [Path] MyTrait +# 1| getSegment(): [PathSegment] MyTrait +# 1| getIdentifier(): [NameRef] MyTrait +# 3| getItem(1): [Function] fn foo +# 4| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 4| getItem(0): [Function] fn foo +# 4| getParamList(): [ParamList] ParamList +# 4| getBody(): [BlockExpr] { ... } +# 4| getStmtList(): [StmtList] StmtList +# 5| getStatement(0): [ExprStmt] ExprStmt +# 5| getExpr(): [AssignmentExpr] ... = ... +# 5| getLhs(): [UnderscoreExpr] _ +# 5| getRhs(): [MacroExpr] MacroExpr +# 5| getMacroCall(): [MacroCall] concat!... +# 5| getPath(): [Path] concat +# 5| getSegment(): [PathSegment] concat +# 5| getIdentifier(): [NameRef] concat +# 5| getTokenTree(): [TokenTree] TokenTree +# 5| getMacroCallExpansion(): [StringLiteralExpr] "Hello world!" +# 7| getStatement(1): [Function] fn inner +# 8| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 8| getItem(0): [Function] fn inner_0 +# 8| getParamList(): [ParamList] ParamList +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner_0 +# 8| getItem(1): [Function] fn inner_1 +# 8| getParamList(): [ParamList] ParamList +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner_1 +# 8| getParamList(): [ParamList] ParamList +# 7| getAttr(0): [Attr] Attr +# 7| getMeta(): [Meta] Meta +# 7| getPath(): [Path] repeat +# 7| getSegment(): [PathSegment] repeat +# 7| getIdentifier(): [NameRef] repeat +# 7| getTokenTree(): [TokenTree] TokenTree +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner +# 10| getStatement(2): [ExprStmt] ExprStmt +# 10| getExpr(): [CallExpr] inner_0(...) +# 10| getArgList(): [ArgList] ArgList +# 10| getFunction(): [PathExpr] inner_0 +# 10| getPath(): [Path] inner_0 +# 10| getSegment(): [PathSegment] inner_0 +# 10| getIdentifier(): [NameRef] inner_0 +# 11| getStatement(3): [ExprStmt] ExprStmt +# 11| getExpr(): [CallExpr] inner_1(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getFunction(): [PathExpr] inner_1 +# 11| getPath(): [Path] inner_1 +# 11| getSegment(): [PathSegment] inner_1 +# 11| getIdentifier(): [NameRef] inner_1 +# 4| getName(): [Name] foo +# 4| getVisibility(): [Visibility] Visibility +# 4| getItem(1): [Function] fn foo_new +# 4| getParamList(): [ParamList] ParamList +# 4| getBody(): [BlockExpr] { ... } +# 4| getStmtList(): [StmtList] StmtList +# 5| getStatement(0): [ExprStmt] ExprStmt +# 5| getExpr(): [AssignmentExpr] ... = ... +# 5| getLhs(): [UnderscoreExpr] _ +# 5| getRhs(): [MacroExpr] MacroExpr +# 5| getMacroCall(): [MacroCall] concat!... +# 5| getPath(): [Path] concat +# 5| getSegment(): [PathSegment] concat +# 5| getIdentifier(): [NameRef] concat +# 5| getTokenTree(): [TokenTree] TokenTree +# 5| getMacroCallExpansion(): [StringLiteralExpr] "Hello world!" +# 7| getStatement(1): [Function] fn inner +# 8| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 8| getItem(0): [Function] fn inner_0 +# 8| getParamList(): [ParamList] ParamList +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner_0 +# 8| getItem(1): [Function] fn inner_1 +# 8| getParamList(): [ParamList] ParamList +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner_1 +# 8| getParamList(): [ParamList] ParamList +# 7| getAttr(0): [Attr] Attr +# 7| getMeta(): [Meta] Meta +# 7| getPath(): [Path] repeat +# 7| getSegment(): [PathSegment] repeat +# 7| getIdentifier(): [NameRef] repeat +# 7| getTokenTree(): [TokenTree] TokenTree +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner +# 10| getStatement(2): [ExprStmt] ExprStmt +# 10| getExpr(): [CallExpr] inner_0(...) +# 10| getArgList(): [ArgList] ArgList +# 10| getFunction(): [PathExpr] inner_0 +# 10| getPath(): [Path] inner_0 +# 10| getSegment(): [PathSegment] inner_0 +# 10| getIdentifier(): [NameRef] inner_0 +# 11| getStatement(3): [ExprStmt] ExprStmt +# 11| getExpr(): [CallExpr] inner_1(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getFunction(): [PathExpr] inner_1 +# 11| getPath(): [Path] inner_1 +# 11| getSegment(): [PathSegment] inner_1 +# 11| getIdentifier(): [NameRef] inner_1 +# 4| getName(): [Name] foo_new +# 4| getVisibility(): [Visibility] Visibility +# 4| getParamList(): [ParamList] ParamList +# 3| getAttr(0): [Attr] Attr +# 3| getMeta(): [Meta] Meta +# 3| getPath(): [Path] add_one +# 3| getSegment(): [PathSegment] add_one +# 3| getIdentifier(): [NameRef] add_one +# 4| getBody(): [BlockExpr] { ... } +# 4| getStmtList(): [StmtList] StmtList +# 5| getStatement(0): [ExprStmt] ExprStmt +# 5| getExpr(): [AssignmentExpr] ... = ... +# 5| getLhs(): [UnderscoreExpr] _ +# 5| getRhs(): [MacroExpr] MacroExpr +# 5| getMacroCall(): [MacroCall] concat!... +# 5| getPath(): [Path] concat +# 5| getSegment(): [PathSegment] concat +# 5| getIdentifier(): [NameRef] concat +# 5| getTokenTree(): [TokenTree] TokenTree +# 7| getStatement(1): [Function] fn inner +# 8| getParamList(): [ParamList] ParamList +# 7| getAttr(0): [Attr] Attr +# 7| getMeta(): [Meta] Meta +# 7| getPath(): [Path] repeat +# 7| getSegment(): [PathSegment] repeat +# 7| getIdentifier(): [NameRef] repeat +# 7| getTokenTree(): [TokenTree] TokenTree +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner +# 10| getStatement(2): [ExprStmt] ExprStmt +# 10| getExpr(): [CallExpr] inner_0(...) +# 10| getArgList(): [ArgList] ArgList +# 10| getFunction(): [PathExpr] inner_0 +# 10| getPath(): [Path] inner_0 +# 10| getSegment(): [PathSegment] inner_0 +# 10| getIdentifier(): [NameRef] inner_0 +# 11| getStatement(3): [ExprStmt] ExprStmt +# 11| getExpr(): [CallExpr] inner_1(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getFunction(): [PathExpr] inner_1 +# 11| getPath(): [Path] inner_1 +# 11| getSegment(): [PathSegment] inner_1 +# 11| getIdentifier(): [NameRef] inner_1 +# 4| getName(): [Name] foo +# 4| getVisibility(): [Visibility] Visibility +# 14| getItem(2): [Function] fn bar +# 15| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 15| getItem(0): [Function] fn bar_0 +# 16| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 16| getItem(0): [Function] fn bar_0 +# 16| getParamList(): [ParamList] ParamList +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar_0 +# 16| getVisibility(): [Visibility] Visibility +# 16| getItem(1): [Function] fn bar_0_new +# 16| getParamList(): [ParamList] ParamList +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar_0_new +# 16| getVisibility(): [Visibility] Visibility +# 16| getParamList(): [ParamList] ParamList +# 15| getAttr(0): [Attr] Attr +# 15| getMeta(): [Meta] Meta +# 15| getPath(): [Path] add_one +# 15| getSegment(): [PathSegment] add_one +# 15| getIdentifier(): [NameRef] add_one +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar_0 +# 16| getVisibility(): [Visibility] Visibility +# 15| getItem(1): [Function] fn bar_1 +# 16| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 16| getItem(0): [Function] fn bar_1 +# 16| getParamList(): [ParamList] ParamList +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar_1 +# 16| getVisibility(): [Visibility] Visibility +# 16| getItem(1): [Function] fn bar_1_new +# 16| getParamList(): [ParamList] ParamList +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar_1_new +# 16| getVisibility(): [Visibility] Visibility +# 16| getParamList(): [ParamList] ParamList +# 15| getAttr(0): [Attr] Attr +# 15| getMeta(): [Meta] Meta +# 15| getPath(): [Path] add_one +# 15| getSegment(): [PathSegment] add_one +# 15| getIdentifier(): [NameRef] add_one +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar_1 +# 16| getVisibility(): [Visibility] Visibility +# 16| getParamList(): [ParamList] ParamList +# 14| getAttr(0): [Attr] Attr +# 14| getMeta(): [Meta] Meta +# 14| getPath(): [Path] repeat +# 14| getSegment(): [PathSegment] repeat +# 14| getIdentifier(): [NameRef] repeat +# 14| getTokenTree(): [TokenTree] TokenTree +# 15| getAttr(1): [Attr] Attr +# 15| getMeta(): [Meta] Meta +# 15| getPath(): [Path] add_one +# 15| getSegment(): [PathSegment] add_one +# 15| getIdentifier(): [NameRef] add_one +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar +# 16| getVisibility(): [Visibility] Visibility +# 18| getItem(3): [Function] fn baz +# 18| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 19| getParamList(): [ParamList] ParamList +# 18| getAttr(0): [Attr] Attr +# 18| getMeta(): [Meta] Meta +# 18| getPath(): [Path] erase +# 18| getSegment(): [PathSegment] erase +# 18| getIdentifier(): [NameRef] erase +# 19| getBody(): [BlockExpr] { ... } +# 19| getStmtList(): [StmtList] StmtList +# 19| getName(): [Name] baz +# 19| getVisibility(): [Visibility] Visibility +# 22| getItem(4): [MacroRules] MacroRules +# 22| getName(): [Name] hello +# 22| getTokenTree(): [TokenTree] TokenTree +# 28| getItem(5): [Struct] struct S +# 28| getName(): [Name] S +# 28| getVisibility(): [Visibility] Visibility +# 30| getItem(6): [Impl] impl S { ... } +# 30| getAssocItemList(): [AssocItemList] AssocItemList +# 31| getAssocItem(0): [Function] fn bzz +# 32| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 32| getItem(0): [Function] fn bzz_0 +# 32| getParamList(): [ParamList] ParamList +# 32| getBody(): [BlockExpr] { ... } +# 32| getStmtList(): [StmtList] StmtList +# 33| getStatement(0): [ExprStmt] ExprStmt +# 33| getExpr(): [MacroExpr] MacroExpr +# 33| getMacroCall(): [MacroCall] hello!... +# 33| getPath(): [Path] hello +# 33| getSegment(): [PathSegment] hello +# 33| getIdentifier(): [NameRef] hello +# 33| getTokenTree(): [TokenTree] TokenTree +# 31| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 31| getStatement(0): [ExprStmt] ExprStmt +# 31| getExpr(): [MacroExpr] MacroExpr +# 31| getMacroCall(): [MacroCall] println!... +# 31| getPath(): [Path] println +# 31| getSegment(): [PathSegment] println +# 31| getIdentifier(): [NameRef] println +# 31| getTokenTree(): [TokenTree] TokenTree +# 31| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 31| getTailExpr(): [BlockExpr] { ... } +# 31| getStmtList(): [StmtList] StmtList +# 31| getStatement(0): [ExprStmt] ExprStmt +# 31| getExpr(): [CallExpr] ...::_print(...) +# 31| getArgList(): [ArgList] ArgList +# 31| getArg(0): [MacroExpr] MacroExpr +# 31| getMacroCall(): [MacroCall] ...::format_args_nl!... +# 31| getPath(): [Path] ...::format_args_nl +# 31| getQualifier(): [Path] $crate +# 31| getSegment(): [PathSegment] $crate +# 31| getIdentifier(): [NameRef] $crate +# 31| getSegment(): [PathSegment] format_args_nl +# 31| getIdentifier(): [NameRef] format_args_nl +# 31| getTokenTree(): [TokenTree] TokenTree +# 31| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr +# 31| getTemplate(): [StringLiteralExpr] "hello!\n" +# 31| getFunction(): [PathExpr] ...::_print +# 31| getPath(): [Path] ...::_print +# 31| getQualifier(): [Path] ...::io +# 31| getQualifier(): [Path] $crate +# 31| getSegment(): [PathSegment] $crate +# 31| getIdentifier(): [NameRef] $crate +# 31| getSegment(): [PathSegment] io +# 31| getIdentifier(): [NameRef] io +# 31| getSegment(): [PathSegment] _print +# 31| getIdentifier(): [NameRef] _print +# 32| getName(): [Name] bzz_0 +# 32| getVisibility(): [Visibility] Visibility +# 32| getItem(1): [Function] fn bzz_1 +# 32| getParamList(): [ParamList] ParamList +# 32| getBody(): [BlockExpr] { ... } +# 32| getStmtList(): [StmtList] StmtList +# 33| getStatement(0): [ExprStmt] ExprStmt +# 33| getExpr(): [MacroExpr] MacroExpr +# 33| getMacroCall(): [MacroCall] hello!... +# 33| getPath(): [Path] hello +# 33| getSegment(): [PathSegment] hello +# 33| getIdentifier(): [NameRef] hello +# 33| getTokenTree(): [TokenTree] TokenTree +# 31| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 31| getStatement(0): [ExprStmt] ExprStmt +# 31| getExpr(): [MacroExpr] MacroExpr +# 31| getMacroCall(): [MacroCall] println!... +# 31| getPath(): [Path] println +# 31| getSegment(): [PathSegment] println +# 31| getIdentifier(): [NameRef] println +# 31| getTokenTree(): [TokenTree] TokenTree +# 31| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 31| getTailExpr(): [BlockExpr] { ... } +# 31| getStmtList(): [StmtList] StmtList +# 31| getStatement(0): [ExprStmt] ExprStmt +# 31| getExpr(): [CallExpr] ...::_print(...) +# 31| getArgList(): [ArgList] ArgList +# 31| getArg(0): [MacroExpr] MacroExpr +# 31| getMacroCall(): [MacroCall] ...::format_args_nl!... +# 31| getPath(): [Path] ...::format_args_nl +# 31| getQualifier(): [Path] $crate +# 31| getSegment(): [PathSegment] $crate +# 31| getIdentifier(): [NameRef] $crate +# 31| getSegment(): [PathSegment] format_args_nl +# 31| getIdentifier(): [NameRef] format_args_nl +# 31| getTokenTree(): [TokenTree] TokenTree +# 31| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr +# 31| getTemplate(): [StringLiteralExpr] "hello!\n" +# 31| getFunction(): [PathExpr] ...::_print +# 31| getPath(): [Path] ...::_print +# 31| getQualifier(): [Path] ...::io +# 31| getQualifier(): [Path] $crate +# 31| getSegment(): [PathSegment] $crate +# 31| getIdentifier(): [NameRef] $crate +# 31| getSegment(): [PathSegment] io +# 31| getIdentifier(): [NameRef] io +# 31| getSegment(): [PathSegment] _print +# 31| getIdentifier(): [NameRef] _print +# 32| getName(): [Name] bzz_1 +# 32| getVisibility(): [Visibility] Visibility +# 32| getItem(2): [Function] fn bzz_2 +# 32| getParamList(): [ParamList] ParamList +# 32| getBody(): [BlockExpr] { ... } +# 32| getStmtList(): [StmtList] StmtList +# 33| getStatement(0): [ExprStmt] ExprStmt +# 33| getExpr(): [MacroExpr] MacroExpr +# 33| getMacroCall(): [MacroCall] hello!... +# 33| getPath(): [Path] hello +# 33| getSegment(): [PathSegment] hello +# 33| getIdentifier(): [NameRef] hello +# 33| getTokenTree(): [TokenTree] TokenTree +# 31| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 31| getStatement(0): [ExprStmt] ExprStmt +# 31| getExpr(): [MacroExpr] MacroExpr +# 31| getMacroCall(): [MacroCall] println!... +# 31| getPath(): [Path] println +# 31| getSegment(): [PathSegment] println +# 31| getIdentifier(): [NameRef] println +# 31| getTokenTree(): [TokenTree] TokenTree +# 31| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 31| getTailExpr(): [BlockExpr] { ... } +# 31| getStmtList(): [StmtList] StmtList +# 31| getStatement(0): [ExprStmt] ExprStmt +# 31| getExpr(): [CallExpr] ...::_print(...) +# 31| getArgList(): [ArgList] ArgList +# 31| getArg(0): [MacroExpr] MacroExpr +# 31| getMacroCall(): [MacroCall] ...::format_args_nl!... +# 31| getPath(): [Path] ...::format_args_nl +# 31| getQualifier(): [Path] $crate +# 31| getSegment(): [PathSegment] $crate +# 31| getIdentifier(): [NameRef] $crate +# 31| getSegment(): [PathSegment] format_args_nl +# 31| getIdentifier(): [NameRef] format_args_nl +# 31| getTokenTree(): [TokenTree] TokenTree +# 31| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr +# 31| getTemplate(): [StringLiteralExpr] "hello!\n" +# 31| getFunction(): [PathExpr] ...::_print +# 31| getPath(): [Path] ...::_print +# 31| getQualifier(): [Path] ...::io +# 31| getQualifier(): [Path] $crate +# 31| getSegment(): [PathSegment] $crate +# 31| getIdentifier(): [NameRef] $crate +# 31| getSegment(): [PathSegment] io +# 31| getIdentifier(): [NameRef] io +# 31| getSegment(): [PathSegment] _print +# 31| getIdentifier(): [NameRef] _print +# 32| getName(): [Name] bzz_2 +# 32| getVisibility(): [Visibility] Visibility +# 32| getParamList(): [ParamList] ParamList +# 31| getAttr(0): [Attr] Attr +# 31| getMeta(): [Meta] Meta +# 31| getPath(): [Path] repeat +# 31| getSegment(): [PathSegment] repeat +# 31| getIdentifier(): [NameRef] repeat +# 31| getTokenTree(): [TokenTree] TokenTree +# 32| getBody(): [BlockExpr] { ... } +# 32| getStmtList(): [StmtList] StmtList +# 33| getStatement(0): [ExprStmt] ExprStmt +# 33| getExpr(): [MacroExpr] MacroExpr +# 33| getMacroCall(): [MacroCall] hello!... +# 33| getPath(): [Path] hello +# 33| getSegment(): [PathSegment] hello +# 33| getIdentifier(): [NameRef] hello +# 33| getTokenTree(): [TokenTree] TokenTree +# 32| getName(): [Name] bzz +# 32| getVisibility(): [Visibility] Visibility +# 30| getSelfTy(): [PathTypeRepr] S +# 30| getPath(): [Path] S +# 30| getSegment(): [PathSegment] S +# 30| getIdentifier(): [NameRef] S +# 37| getItem(7): [MacroRules] MacroRules +# 37| getName(): [Name] def_x +# 37| getTokenTree(): [TokenTree] TokenTree +# 43| getItem(8): [Impl] impl S { ... } +# 43| getAssocItemList(): [AssocItemList] AssocItemList +# 44| getAssocItem(0): [MacroCall] def_x!... +# 44| getPath(): [Path] def_x +# 44| getSegment(): [PathSegment] def_x +# 44| getIdentifier(): [NameRef] def_x +# 44| getTokenTree(): [TokenTree] TokenTree +# 44| getMacroCallExpansion(): [MacroItems] MacroItems +# 44| getItem(0): [Function] fn x +# 44| getParamList(): [ParamList] ParamList +# 44| getBody(): [BlockExpr] { ... } +# 44| getStmtList(): [StmtList] StmtList +# 44| getName(): [Name] x +# 44| getVisibility(): [Visibility] Visibility +# 43| getSelfTy(): [PathTypeRepr] S +# 43| getPath(): [Path] S +# 43| getSegment(): [PathSegment] S +# 43| getIdentifier(): [NameRef] S +# 47| getItem(9): [MacroRules] MacroRules +# 47| getName(): [Name] my_macro +# 47| getTokenTree(): [TokenTree] TokenTree +# 52| getItem(10): [Function] fn test +# 52| getParamList(): [ParamList] ParamList +# 52| getBody(): [BlockExpr] { ... } +# 52| getStmtList(): [StmtList] StmtList +# 53| getStatement(0): [ExprStmt] ExprStmt +# 53| getExpr(): [AssignmentExpr] ... = ... +# 53| getLhs(): [UnderscoreExpr] _ +# 53| getRhs(): [MacroExpr] MacroExpr +# 53| getMacroCall(): [MacroCall] concat!... +# 53| getPath(): [Path] concat +# 53| getSegment(): [PathSegment] concat +# 53| getIdentifier(): [NameRef] concat +# 53| getTokenTree(): [TokenTree] TokenTree +# 53| getMacroCallExpansion(): [StringLiteralExpr] "xy" +# 55| getStatement(1): [ExprStmt] ExprStmt +# 55| getExpr(): [AssignmentExpr] ... = ... +# 55| getLhs(): [UnderscoreExpr] _ +# 55| getRhs(): [MacroExpr] MacroExpr +# 55| getMacroCall(): [MacroCall] my_macro!... +# 55| getPath(): [Path] my_macro +# 55| getSegment(): [PathSegment] my_macro +# 55| getIdentifier(): [NameRef] my_macro +# 55| getTokenTree(): [TokenTree] TokenTree +# 56| getMacroCallExpansion(): [MacroExpr] MacroExpr +# 56| getMacroCall(): [MacroCall] format!... +# 55| getPath(): [Path] format +# 55| getSegment(): [PathSegment] format +# 55| getIdentifier(): [NameRef] format +# 56| getTokenTree(): [TokenTree] TokenTree +# 56| getMacroCallExpansion(): [CallExpr] ...::must_use(...) +# 56| getArgList(): [ArgList] ArgList +# 56| getArg(0): [BlockExpr] { ... } +# 56| getStmtList(): [StmtList] StmtList +# 56| getStatement(0): [LetStmt] let ... = ... +# 56| getInitializer(): [CallExpr] ...::format(...) +# 56| getArgList(): [ArgList] ArgList +# 56| getArg(0): [MacroExpr] MacroExpr +# 56| getMacroCall(): [MacroCall] ...::format_args!... +# 55| getPath(): [Path] ...::format_args +# 55| getQualifier(): [Path] ...::__export +# 55| getQualifier(): [Path] $crate +# 55| getSegment(): [PathSegment] $crate +# 55| getIdentifier(): [NameRef] $crate +# 55| getSegment(): [PathSegment] __export +# 55| getIdentifier(): [NameRef] __export +# 55| getSegment(): [PathSegment] format_args +# 55| getIdentifier(): [NameRef] format_args +# 56| getTokenTree(): [TokenTree] TokenTree +# 56| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr +# 57| getArg(0): [FormatArgsArg] FormatArgsArg +# 57| getExpr(): [StringLiteralExpr] "hi" +# 56| getTemplate(): [ParenExpr] (...) +# 56| getExpr(): [MacroExpr] MacroExpr +# 56| getMacroCall(): [MacroCall] concat!... +# 56| getPath(): [Path] concat +# 56| getSegment(): [PathSegment] concat +# 56| getIdentifier(): [NameRef] concat +# 56| getTokenTree(): [TokenTree] TokenTree +# 55| getFunction(): [PathExpr] ...::format +# 55| getPath(): [Path] ...::format +# 55| getQualifier(): [Path] ...::fmt +# 55| getQualifier(): [Path] $crate +# 55| getSegment(): [PathSegment] $crate +# 55| getIdentifier(): [NameRef] $crate +# 55| getSegment(): [PathSegment] fmt +# 55| getIdentifier(): [NameRef] fmt +# 55| getSegment(): [PathSegment] format +# 55| getIdentifier(): [NameRef] format +# 55| getPat(): [IdentPat] res +# 55| getName(): [Name] res +# 55| getTailExpr(): [PathExpr,VariableAccess] res +# 55| getPath(): [Path] res +# 55| getSegment(): [PathSegment] res +# 55| getIdentifier(): [NameRef] res +# 55| getFunction(): [PathExpr] ...::must_use +# 55| getPath(): [Path] ...::must_use +# 55| getQualifier(): [Path] ...::__export +# 55| getQualifier(): [Path] $crate +# 55| getSegment(): [PathSegment] $crate +# 55| getIdentifier(): [NameRef] $crate +# 55| getSegment(): [PathSegment] __export +# 55| getIdentifier(): [NameRef] __export +# 55| getSegment(): [PathSegment] must_use +# 55| getIdentifier(): [NameRef] must_use +# 52| getName(): [Name] test +# 61| getItem(11): [MacroCall] include!... +# 61| getPath(): [Path] include +# 61| getSegment(): [PathSegment] include +# 61| getIdentifier(): [NameRef] include +# 61| getTokenTree(): [TokenTree] TokenTree +# 61| getMacroCallExpansion(): [MacroItems] MacroItems +# 61| getItem(0): [Function] fn included +# 61| getParamList(): [ParamList] ParamList +# 61| getBody(): [BlockExpr] { ... } +# 61| getStmtList(): [StmtList] StmtList +# 61| getStatement(0): [ExprStmt] ExprStmt +# 61| getExpr(): [AssignmentExpr] ... = ... +# 61| getLhs(): [UnderscoreExpr] _ +# 61| getRhs(): [MacroExpr] MacroExpr +# 61| getMacroCall(): [MacroCall] concat!... +# 61| getPath(): [Path] concat +# 61| getSegment(): [PathSegment] concat +# 61| getIdentifier(): [NameRef] concat +# 61| getTokenTree(): [TokenTree] TokenTree +# 61| getMacroCallExpansion(): [StringLiteralExpr] "Hello world!" +# 61| getName(): [Name] included +# 63| getItem(12): [Function] fn documented +# 64| getParamList(): [ParamList] ParamList +# 63| getAttr(0): [Attr] Attr +# 63| getMeta(): [Meta] Meta +# 63| getExpr(): [MacroExpr] MacroExpr +# 63| getMacroCall(): [MacroCall] include_str!... +# 63| getPath(): [Path] include_str +# 63| getSegment(): [PathSegment] include_str +# 63| getIdentifier(): [NameRef] include_str +# 63| getTokenTree(): [TokenTree] TokenTree +# 63| getPath(): [Path] doc +# 63| getSegment(): [PathSegment] doc +# 63| getIdentifier(): [NameRef] doc +# 64| getBody(): [BlockExpr] { ... } +# 64| getStmtList(): [StmtList] StmtList +# 64| getName(): [Name] documented +# 66| getItem(13): [MacroRules] MacroRules +# 66| getName(): [Name] my_int +# 66| getTokenTree(): [TokenTree] TokenTree +# 70| getItem(14): [Function] fn answer +# 70| getParamList(): [ParamList] ParamList +# 70| getBody(): [BlockExpr] { ... } +# 70| getStmtList(): [StmtList] StmtList +# 71| getStatement(0): [LetStmt] let ... = 42 +# 71| getInitializer(): [IntegerLiteralExpr] 42 +# 71| getPat(): [IdentPat] a +# 71| getName(): [Name] a +# 71| getTypeRepr(): [MacroTypeRepr] MacroTypeRepr +# 71| getMacroCall(): [MacroCall] my_int!... +# 71| getPath(): [Path] my_int +# 71| getSegment(): [PathSegment] my_int +# 71| getIdentifier(): [NameRef] my_int +# 71| getTokenTree(): [TokenTree] TokenTree +# 71| getMacroCallExpansion(): [PathTypeRepr] i32 +# 71| getPath(): [Path] i32 +# 71| getSegment(): [PathSegment] i32 +# 71| getIdentifier(): [NameRef] i32 +# 72| getTailExpr(): [CastExpr] a as ... +# 72| getExpr(): [PathExpr,VariableAccess] a +# 72| getPath(): [Path] a +# 72| getSegment(): [PathSegment] a +# 72| getIdentifier(): [NameRef] a +# 72| getTypeRepr(): [MacroTypeRepr] MacroTypeRepr +# 72| getMacroCall(): [MacroCall] my_int!... +# 72| getPath(): [Path] my_int +# 72| getSegment(): [PathSegment] my_int +# 72| getIdentifier(): [NameRef] my_int +# 72| getTokenTree(): [TokenTree] TokenTree +# 72| getMacroCallExpansion(): [PathTypeRepr] i32 +# 72| getPath(): [Path] i32 +# 72| getSegment(): [PathSegment] i32 +# 72| getIdentifier(): [NameRef] i32 +# 70| getName(): [Name] answer +# 70| getRetType(): [RetTypeRepr] RetTypeRepr +# 70| getTypeRepr(): [MacroTypeRepr] MacroTypeRepr +# 70| getMacroCall(): [MacroCall] my_int!... +# 70| getPath(): [Path] my_int +# 70| getSegment(): [PathSegment] my_int +# 70| getIdentifier(): [NameRef] my_int +# 70| getTokenTree(): [TokenTree] TokenTree +# 70| getMacroCallExpansion(): [PathTypeRepr] i32 +# 70| getPath(): [Path] i32 +# 70| getSegment(): [PathSegment] i32 +# 70| getIdentifier(): [NameRef] i32 +# 76| getItem(15): [TypeAlias] type MyInt +# 76| getName(): [Name] MyInt +# 76| getTypeRepr(): [MacroTypeRepr] MacroTypeRepr +# 76| getMacroCall(): [MacroCall] my_int!... +# 76| getPath(): [Path] my_int +# 76| getSegment(): [PathSegment] my_int +# 76| getIdentifier(): [NameRef] my_int +# 76| getTokenTree(): [TokenTree] TokenTree +# 76| getMacroCallExpansion(): [PathTypeRepr] i32 +# 76| getPath(): [Path] i32 +# 76| getSegment(): [PathSegment] i32 +# 76| getIdentifier(): [NameRef] i32 +# 78| getItem(16): [Struct] struct MyStruct +# 78| getFieldList(): [StructFieldList] StructFieldList +# 79| getField(0): [StructField] StructField +# 79| getName(): [Name] field +# 79| getTypeRepr(): [MacroTypeRepr] MacroTypeRepr +# 79| getMacroCall(): [MacroCall] my_int!... +# 79| getPath(): [Path] my_int +# 79| getSegment(): [PathSegment] my_int +# 79| getIdentifier(): [NameRef] my_int +# 79| getTokenTree(): [TokenTree] TokenTree +# 79| getMacroCallExpansion(): [PathTypeRepr] i32 +# 79| getPath(): [Path] i32 +# 79| getSegment(): [PathSegment] i32 +# 79| getIdentifier(): [NameRef] i32 +# 78| getName(): [Name] MyStruct +# 83| getItem(17): [Struct] struct MyDerive +# 84| getDeriveMacroExpansion(0): [MacroItems] MacroItems +# 84| getItem(0): [Impl] impl ...::Debug for MyDerive::<...> { ... } +# 84| getAssocItemList(): [AssocItemList] AssocItemList +# 84| getAssocItem(0): [Function] fn fmt +# 83| getParamList(): [ParamList] ParamList +# 83| getParam(0): [Param] ...: ... +# 83| getTypeRepr(): [RefTypeRepr] RefTypeRepr +# 83| getTypeRepr(): [PathTypeRepr] ...::Formatter +# 83| getPath(): [Path] ...::Formatter +# 83| getQualifier(): [Path] ...::fmt +# 83| getQualifier(): [Path] $crate +# 83| getSegment(): [PathSegment] $crate +# 83| getIdentifier(): [NameRef] $crate +# 83| getSegment(): [PathSegment] fmt +# 83| getIdentifier(): [NameRef] fmt +# 83| getSegment(): [PathSegment] Formatter +# 83| getIdentifier(): [NameRef] Formatter +# 83| getPat(): [IdentPat] f +# 83| getName(): [Name] f +# 83| getSelfParam(): [SelfParam] SelfParam +# 83| getName(): [Name] self +# 84| getBody(): [BlockExpr] { ... } +# 84| getStmtList(): [StmtList] StmtList +# 84| getTailExpr(): [MatchExpr] match self { ... } +# 83| getScrutinee(): [PathExpr,VariableAccess] self +# 83| getPath(): [Path] self +# 83| getSegment(): [PathSegment] self +# 83| getIdentifier(): [NameRef] self +# 84| getMatchArmList(): [MatchArmList] MatchArmList +# 84| getArm(0): [MatchArm] ... => ... +# 85| getExpr(): [MethodCallExpr] ... .finish() +# 83| getArgList(): [ArgList] ArgList +# 83| getIdentifier(): [NameRef] finish +# 85| getReceiver(): [MethodCallExpr] ... .field(...) +# 85| getArgList(): [ArgList] ArgList +# 83| getArg(0): [StringLiteralExpr] "field" +# 85| getArg(1): [RefExpr] &field +# 85| getExpr(): [PathExpr,VariableAccess] field +# 85| getPath(): [Path] field +# 85| getSegment(): [PathSegment] field +# 85| getIdentifier(): [NameRef] field +# 83| getIdentifier(): [NameRef] field +# 83| getReceiver(): [MethodCallExpr] f.debug_struct(...) +# 83| getArgList(): [ArgList] ArgList +# 83| getArg(0): [StringLiteralExpr] "MyDerive" +# 83| getIdentifier(): [NameRef] debug_struct +# 83| getReceiver(): [PathExpr,VariableAccess] f +# 83| getPath(): [Path] f +# 83| getSegment(): [PathSegment] f +# 83| getIdentifier(): [NameRef] f +# 84| getPat(): [StructPat] MyDerive {...} +# 84| getPath(): [Path] MyDerive +# 84| getSegment(): [PathSegment] MyDerive +# 84| getIdentifier(): [NameRef] MyDerive +# 85| getStructPatFieldList(): [StructPatFieldList] StructPatFieldList +# 85| getField(0): [StructPatField] field: ... +# 85| getIdentifier(): [NameRef] field +# 85| getPat(): [IdentPat] field +# 85| getName(): [Name] field +# 83| getName(): [Name] fmt +# 83| getRetType(): [RetTypeRepr] RetTypeRepr +# 83| getTypeRepr(): [PathTypeRepr] ...::Result +# 83| getPath(): [Path] ...::Result +# 83| getQualifier(): [Path] ...::fmt +# 83| getQualifier(): [Path] $crate +# 83| getSegment(): [PathSegment] $crate +# 83| getIdentifier(): [NameRef] $crate +# 83| getSegment(): [PathSegment] fmt +# 83| getIdentifier(): [NameRef] fmt +# 83| getSegment(): [PathSegment] Result +# 83| getIdentifier(): [NameRef] Result +# 83| getGenericParamList(): [GenericParamList] <...> +# 84| getSelfTy(): [PathTypeRepr] MyDerive::<...> +# 84| getPath(): [Path] MyDerive::<...> +# 84| getSegment(): [PathSegment] MyDerive::<...> +# 83| getGenericArgList(): [GenericArgList] <...> +# 84| getIdentifier(): [NameRef] MyDerive +# 83| getTrait(): [PathTypeRepr] ...::Debug +# 83| getPath(): [Path] ...::Debug +# 83| getQualifier(): [Path] ...::fmt +# 83| getQualifier(): [Path] $crate +# 83| getSegment(): [PathSegment] $crate +# 83| getIdentifier(): [NameRef] $crate +# 83| getSegment(): [PathSegment] fmt +# 83| getIdentifier(): [NameRef] fmt +# 83| getSegment(): [PathSegment] Debug +# 83| getIdentifier(): [NameRef] Debug +# 83| getWhereClause(): [WhereClause] WhereClause +# 83| getAttr(0): [Attr] Attr +# 83| getMeta(): [Meta] Meta +# 83| getPath(): [Path] derive +# 83| getSegment(): [PathSegment] derive +# 83| getIdentifier(): [NameRef] derive +# 83| getTokenTree(): [TokenTree] TokenTree +# 84| getFieldList(): [StructFieldList] StructFieldList +# 85| getField(0): [StructField] StructField +# 85| getName(): [Name] field +# 85| getTypeRepr(): [PathTypeRepr] usize +# 85| getPath(): [Path] usize +# 85| getSegment(): [PathSegment] usize +# 85| getIdentifier(): [NameRef] usize +# 84| getName(): [Name] MyDerive +# 88| getItem(18): [Enum] enum MyDeriveEnum +# 89| getDeriveMacroExpansion(0): [MacroItems] MacroItems +# 89| getItem(0): [Impl] impl ...::PartialEq for MyDeriveEnum::<...> { ... } +# 89| getAssocItemList(): [AssocItemList] AssocItemList +# 89| getAssocItem(0): [Function] fn eq +# 88| getParamList(): [ParamList] ParamList +# 88| getParam(0): [Param] ...: ... +# 88| getTypeRepr(): [RefTypeRepr] RefTypeRepr +# 88| getTypeRepr(): [PathTypeRepr] Self +# 88| getPath(): [Path] Self +# 88| getSegment(): [PathSegment] Self +# 88| getIdentifier(): [NameRef] Self +# 88| getPat(): [IdentPat] other +# 88| getName(): [Name] other +# 88| getSelfParam(): [SelfParam] SelfParam +# 88| getName(): [Name] self +# 89| getBody(): [BlockExpr] { ... } +# 89| getStmtList(): [StmtList] StmtList +# 89| getTailExpr(): [MatchExpr] match ... { ... } +# 88| getScrutinee(): [TupleExpr] TupleExpr +# 88| getField(0): [PathExpr,VariableAccess] self +# 88| getPath(): [Path] self +# 88| getSegment(): [PathSegment] self +# 88| getIdentifier(): [NameRef] self +# 88| getField(1): [PathExpr,VariableAccess] other +# 88| getPath(): [Path] other +# 88| getSegment(): [PathSegment] other +# 88| getIdentifier(): [NameRef] other +# 89| getMatchArmList(): [MatchArmList] MatchArmList +# 89| getArm(0): [MatchArm] ... => true +# 88| getExpr(): [BooleanLiteralExpr] true +# 89| getPat(): [TuplePat] TuplePat +# 89| getField(0): [PathPat] ...::Variant1 +# 89| getPath(): [Path] ...::Variant1 +# 89| getQualifier(): [Path] MyDeriveEnum +# 89| getSegment(): [PathSegment] MyDeriveEnum +# 89| getIdentifier(): [NameRef] MyDeriveEnum +# 90| getSegment(): [PathSegment] Variant1 +# 90| getIdentifier(): [NameRef] Variant1 +# 89| getField(1): [PathPat] ...::Variant1 +# 89| getPath(): [Path] ...::Variant1 +# 89| getQualifier(): [Path] MyDeriveEnum +# 89| getSegment(): [PathSegment] MyDeriveEnum +# 89| getIdentifier(): [NameRef] MyDeriveEnum +# 90| getSegment(): [PathSegment] Variant1 +# 90| getIdentifier(): [NameRef] Variant1 +# 89| getArm(1): [MatchArm] ... => true +# 88| getExpr(): [BooleanLiteralExpr] true +# 89| getPat(): [TuplePat] TuplePat +# 89| getField(0): [PathPat] ...::Variant2 +# 89| getPath(): [Path] ...::Variant2 +# 89| getQualifier(): [Path] MyDeriveEnum +# 89| getSegment(): [PathSegment] MyDeriveEnum +# 89| getIdentifier(): [NameRef] MyDeriveEnum +# 91| getSegment(): [PathSegment] Variant2 +# 91| getIdentifier(): [NameRef] Variant2 +# 89| getField(1): [PathPat] ...::Variant2 +# 89| getPath(): [Path] ...::Variant2 +# 89| getQualifier(): [Path] MyDeriveEnum +# 89| getSegment(): [PathSegment] MyDeriveEnum +# 89| getIdentifier(): [NameRef] MyDeriveEnum +# 91| getSegment(): [PathSegment] Variant2 +# 91| getIdentifier(): [NameRef] Variant2 +# 88| getArm(2): [MatchArm] ... => false +# 88| getExpr(): [BooleanLiteralExpr] false +# 88| getPat(): [IdentPat] _unused +# 88| getName(): [Name] _unused +# 88| getName(): [Name] eq +# 88| getRetType(): [RetTypeRepr] RetTypeRepr +# 88| getTypeRepr(): [PathTypeRepr] bool +# 88| getPath(): [Path] bool +# 88| getSegment(): [PathSegment] bool +# 88| getIdentifier(): [NameRef] bool +# 88| getGenericParamList(): [GenericParamList] <...> +# 89| getSelfTy(): [PathTypeRepr] MyDeriveEnum::<...> +# 89| getPath(): [Path] MyDeriveEnum::<...> +# 89| getSegment(): [PathSegment] MyDeriveEnum::<...> +# 88| getGenericArgList(): [GenericArgList] <...> +# 89| getIdentifier(): [NameRef] MyDeriveEnum +# 88| getTrait(): [PathTypeRepr] ...::PartialEq +# 88| getPath(): [Path] ...::PartialEq +# 88| getQualifier(): [Path] ...::cmp +# 88| getQualifier(): [Path] $crate +# 88| getSegment(): [PathSegment] $crate +# 88| getIdentifier(): [NameRef] $crate +# 88| getSegment(): [PathSegment] cmp +# 88| getIdentifier(): [NameRef] cmp +# 88| getSegment(): [PathSegment] PartialEq +# 88| getIdentifier(): [NameRef] PartialEq +# 88| getWhereClause(): [WhereClause] WhereClause +# 89| getDeriveMacroExpansion(1): [MacroItems] MacroItems +# 89| getItem(0): [Impl] impl ...::Eq for MyDeriveEnum::<...> { ... } +# 88| getAssocItemList(): [AssocItemList] AssocItemList +# 88| getGenericParamList(): [GenericParamList] <...> +# 89| getSelfTy(): [PathTypeRepr] MyDeriveEnum::<...> +# 89| getPath(): [Path] MyDeriveEnum::<...> +# 89| getSegment(): [PathSegment] MyDeriveEnum::<...> +# 88| getGenericArgList(): [GenericArgList] <...> +# 89| getIdentifier(): [NameRef] MyDeriveEnum +# 88| getTrait(): [PathTypeRepr] ...::Eq +# 88| getPath(): [Path] ...::Eq +# 88| getQualifier(): [Path] ...::cmp +# 88| getQualifier(): [Path] $crate +# 88| getSegment(): [PathSegment] $crate +# 88| getIdentifier(): [NameRef] $crate +# 88| getSegment(): [PathSegment] cmp +# 88| getIdentifier(): [NameRef] cmp +# 88| getSegment(): [PathSegment] Eq +# 88| getIdentifier(): [NameRef] Eq +# 88| getWhereClause(): [WhereClause] WhereClause +# 88| getAttr(0): [Attr] Attr +# 88| getMeta(): [Meta] Meta +# 88| getPath(): [Path] derive +# 88| getSegment(): [PathSegment] derive +# 88| getIdentifier(): [NameRef] derive +# 88| getTokenTree(): [TokenTree] TokenTree +# 89| getName(): [Name] MyDeriveEnum +# 89| getVariantList(): [VariantList] VariantList +# 90| getVariant(0): [Variant] Variant1 +# 90| getName(): [Name] Variant1 +# 91| getVariant(1): [Variant] Variant2 +# 91| getName(): [Name] Variant2 +# 94| getItem(19): [Trait] trait MyTrait +# 94| getAssocItemList(): [AssocItemList] AssocItemList +# 95| getAssocItem(0): [Function] fn my_method +# 95| getParamList(): [ParamList] ParamList +# 95| getName(): [Name] my_method +# 95| getRetType(): [RetTypeRepr] RetTypeRepr +# 95| getTypeRepr(): [PathTypeRepr] u32 +# 95| getPath(): [Path] u32 +# 95| getSegment(): [PathSegment] u32 +# 95| getIdentifier(): [NameRef] u32 +# 94| getName(): [Name] MyTrait +# 98| getItem(20): [Union] union MyDeriveUnion +# 99| getDeriveMacroExpansion(0): [MacroItems] MacroItems +# 99| getItem(0): [Const] Const +# 98| getBody(): [IntegerLiteralExpr] 42 +# 99| getName(): [Name] CONST_MyDeriveUnion +# 98| getTypeRepr(): [PathTypeRepr] u32 +# 98| getPath(): [Path] u32 +# 98| getSegment(): [PathSegment] u32 +# 98| getIdentifier(): [NameRef] u32 +# 99| getItem(1): [Impl] impl MyTrait for MyDeriveUnion { ... } +# 99| getAssocItemList(): [AssocItemList] AssocItemList +# 99| getAssocItem(0): [Function] fn my_method +# 98| getParamList(): [ParamList] ParamList +# 99| getBody(): [BlockExpr] { ... } +# 99| getStmtList(): [StmtList] StmtList +# 99| getTailExpr(): [PathExpr] CONST_MyDeriveUnion +# 99| getPath(): [Path] CONST_MyDeriveUnion +# 99| getSegment(): [PathSegment] CONST_MyDeriveUnion +# 99| getIdentifier(): [NameRef] CONST_MyDeriveUnion +# 98| getName(): [Name] my_method +# 98| getRetType(): [RetTypeRepr] RetTypeRepr +# 98| getTypeRepr(): [PathTypeRepr] u32 +# 98| getPath(): [Path] u32 +# 98| getSegment(): [PathSegment] u32 +# 98| getIdentifier(): [NameRef] u32 +# 99| getSelfTy(): [PathTypeRepr] MyDeriveUnion +# 99| getPath(): [Path] MyDeriveUnion +# 99| getSegment(): [PathSegment] MyDeriveUnion +# 99| getIdentifier(): [NameRef] MyDeriveUnion +# 98| getTrait(): [PathTypeRepr] MyTrait +# 98| getPath(): [Path] MyTrait +# 98| getSegment(): [PathSegment] MyTrait +# 98| getIdentifier(): [NameRef] MyTrait +# 98| getAttr(0): [Attr] Attr +# 98| getMeta(): [Meta] Meta +# 98| getPath(): [Path] derive +# 98| getSegment(): [PathSegment] derive +# 98| getIdentifier(): [NameRef] derive +# 98| getTokenTree(): [TokenTree] TokenTree +# 99| getName(): [Name] MyDeriveUnion +# 99| getStructFieldList(): [StructFieldList] StructFieldList +# 100| getField(0): [StructField] StructField +# 100| getName(): [Name] field1 +# 100| getTypeRepr(): [PathTypeRepr] usize +# 100| getPath(): [Path] usize +# 100| getSegment(): [PathSegment] usize +# 100| getIdentifier(): [NameRef] usize +# 101| getField(1): [StructField] StructField +# 101| getName(): [Name] field2 +# 101| getTypeRepr(): [PathTypeRepr] f64 +# 101| getPath(): [Path] f64 +# 101| getSegment(): [PathSegment] f64 +# 101| getIdentifier(): [NameRef] f64 +# 44| [Comment] //... +# 56| [Comment] //... +# 63| [Comment] //... +# 70| [Comment] //... +# 71| [Comment] //... +# 72| [Comment] //... +# 76| [Comment] //... +# 79| [Comment] //... +proc_macro.rs: +# 1| [SourceFile] SourceFile +# 1| getItem(0): [Use] use ...::TokenStream +# 1| getUseTree(): [UseTree] ...::TokenStream +# 1| getPath(): [Path] ...::TokenStream +# 1| getQualifier(): [Path] proc_macro +# 1| getSegment(): [PathSegment] proc_macro +# 1| getIdentifier(): [NameRef] proc_macro +# 1| getSegment(): [PathSegment] TokenStream +# 1| getIdentifier(): [NameRef] TokenStream +# 2| getItem(1): [Use] use ...::quote +# 2| getUseTree(): [UseTree] ...::quote +# 2| getPath(): [Path] ...::quote +# 2| getQualifier(): [Path] quote +# 2| getSegment(): [PathSegment] quote +# 2| getIdentifier(): [NameRef] quote +# 2| getSegment(): [PathSegment] quote +# 2| getIdentifier(): [NameRef] quote +# 4| getItem(2): [Function] fn repeat +# 5| getParamList(): [ParamList] ParamList +# 5| getParam(0): [Param] ...: TokenStream +# 5| getTypeRepr(): [PathTypeRepr] TokenStream +# 5| getPath(): [Path] TokenStream +# 5| getSegment(): [PathSegment] TokenStream +# 5| getIdentifier(): [NameRef] TokenStream +# 5| getPat(): [IdentPat] attr +# 5| getName(): [Name] attr +# 5| getParam(1): [Param] ...: TokenStream +# 5| getTypeRepr(): [PathTypeRepr] TokenStream +# 5| getPath(): [Path] TokenStream +# 5| getSegment(): [PathSegment] TokenStream +# 5| getIdentifier(): [NameRef] TokenStream +# 5| getPat(): [IdentPat] item +# 5| getName(): [Name] item +# 4| getAttr(0): [Attr] Attr +# 4| getMeta(): [Meta] Meta +# 4| getPath(): [Path] proc_macro_attribute +# 4| getSegment(): [PathSegment] proc_macro_attribute +# 4| getIdentifier(): [NameRef] proc_macro_attribute +# 5| getBody(): [BlockExpr] { ... } +# 5| getStmtList(): [StmtList] StmtList +# 6| getStatement(0): [LetStmt] let ... = ... +# 6| getInitializer(): [MethodCallExpr] ... .unwrap() +# 6| getArgList(): [ArgList] ArgList +# 6| getIdentifier(): [NameRef] unwrap +# 6| getReceiver(): [MethodCallExpr] ... .base10_parse() +# 6| getArgList(): [ArgList] ArgList +# 6| getGenericArgList(): [GenericArgList] <...> +# 6| getGenericArg(0): [TypeArg] TypeArg +# 6| getTypeRepr(): [PathTypeRepr] usize +# 6| getPath(): [Path] usize +# 6| getSegment(): [PathSegment] usize +# 6| getIdentifier(): [NameRef] usize +# 6| getIdentifier(): [NameRef] base10_parse +# 6| getReceiver(): [MacroExpr] MacroExpr +# 6| getMacroCall(): [MacroCall] ...::parse_macro_input!... +# 6| getPath(): [Path] ...::parse_macro_input +# 6| getQualifier(): [Path] syn +# 6| getSegment(): [PathSegment] syn +# 6| getIdentifier(): [NameRef] syn +# 6| getSegment(): [PathSegment] parse_macro_input +# 6| getIdentifier(): [NameRef] parse_macro_input +# 6| getTokenTree(): [TokenTree] TokenTree +# 6| getMacroCallExpansion(): [MatchExpr] match ... { ... } +# 6| getScrutinee(): [CallExpr] ...::parse::<...>(...) +# 6| getArgList(): [ArgList] ArgList +# 6| getArg(0): [PathExpr,VariableAccess] attr +# 6| getPath(): [Path] attr +# 6| getSegment(): [PathSegment] attr +# 6| getIdentifier(): [NameRef] attr +# 6| getFunction(): [PathExpr] ...::parse::<...> +# 6| getPath(): [Path] ...::parse::<...> +# 6| getQualifier(): [Path] $crate +# 6| getSegment(): [PathSegment] $crate +# 6| getIdentifier(): [NameRef] $crate +# 6| getSegment(): [PathSegment] parse::<...> +# 6| getGenericArgList(): [GenericArgList] <...> +# 6| getGenericArg(0): [TypeArg] TypeArg +# 6| getTypeRepr(): [PathTypeRepr] ...::LitInt +# 6| getPath(): [Path] ...::LitInt +# 6| getQualifier(): [Path] syn +# 6| getSegment(): [PathSegment] syn +# 6| getIdentifier(): [NameRef] syn +# 6| getSegment(): [PathSegment] LitInt +# 6| getIdentifier(): [NameRef] LitInt +# 6| getIdentifier(): [NameRef] parse +# 6| getMatchArmList(): [MatchArmList] MatchArmList +# 6| getArm(0): [MatchArm] ... => data +# 6| getExpr(): [PathExpr,VariableAccess] data +# 6| getPath(): [Path] data +# 6| getSegment(): [PathSegment] data +# 6| getIdentifier(): [NameRef] data +# 6| getPat(): [TupleStructPat] ...::Ok(...) +# 6| getPath(): [Path] ...::Ok +# 6| getQualifier(): [Path] ...::__private +# 6| getQualifier(): [Path] $crate +# 6| getSegment(): [PathSegment] $crate +# 6| getIdentifier(): [NameRef] $crate +# 6| getSegment(): [PathSegment] __private +# 6| getIdentifier(): [NameRef] __private +# 6| getSegment(): [PathSegment] Ok +# 6| getIdentifier(): [NameRef] Ok +# 6| getField(0): [IdentPat] data +# 6| getName(): [Name] data +# 6| getArm(1): [MatchArm] ... => ... +# 6| getExpr(): [BlockExpr] { ... } +# 6| getStmtList(): [StmtList] StmtList +# 6| getStatement(0): [ExprStmt] ExprStmt +# 6| getExpr(): [ReturnExpr] return ... +# 6| getExpr(): [CallExpr] ...::from(...) +# 6| getArgList(): [ArgList] ArgList +# 6| getArg(0): [MethodCallExpr] err.to_compile_error() +# 6| getArgList(): [ArgList] ArgList +# 6| getIdentifier(): [NameRef] to_compile_error +# 6| getReceiver(): [PathExpr,VariableAccess] err +# 6| getPath(): [Path] err +# 6| getSegment(): [PathSegment] err +# 6| getIdentifier(): [NameRef] err +# 6| getFunction(): [PathExpr] ...::from +# 6| getPath(): [Path] ...::from +# 6| getQualifier(): [Path] ...::TokenStream +# 6| getQualifier(): [Path] ...::__private +# 6| getQualifier(): [Path] $crate +# 6| getSegment(): [PathSegment] $crate +# 6| getIdentifier(): [NameRef] $crate +# 6| getSegment(): [PathSegment] __private +# 6| getIdentifier(): [NameRef] __private +# 6| getSegment(): [PathSegment] TokenStream +# 6| getIdentifier(): [NameRef] TokenStream +# 6| getSegment(): [PathSegment] from +# 6| getIdentifier(): [NameRef] from +# 6| getPat(): [TupleStructPat] ...::Err(...) +# 6| getPath(): [Path] ...::Err +# 6| getQualifier(): [Path] ...::__private +# 6| getQualifier(): [Path] $crate +# 6| getSegment(): [PathSegment] $crate +# 6| getIdentifier(): [NameRef] $crate +# 6| getSegment(): [PathSegment] __private +# 6| getIdentifier(): [NameRef] __private +# 6| getSegment(): [PathSegment] Err +# 6| getIdentifier(): [NameRef] Err +# 6| getField(0): [IdentPat] err +# 6| getName(): [Name] err +# 6| getPat(): [IdentPat] number +# 6| getName(): [Name] number +# 7| getStatement(1): [LetStmt] let ... = ... +# 7| getInitializer(): [MacroExpr] MacroExpr +# 7| getMacroCall(): [MacroCall] ...::parse_macro_input!... +# 7| getPath(): [Path] ...::parse_macro_input +# 7| getQualifier(): [Path] syn +# 7| getSegment(): [PathSegment] syn +# 7| getIdentifier(): [NameRef] syn +# 7| getSegment(): [PathSegment] parse_macro_input +# 7| getIdentifier(): [NameRef] parse_macro_input +# 7| getTokenTree(): [TokenTree] TokenTree +# 7| getMacroCallExpansion(): [MatchExpr] match ... { ... } +# 7| getScrutinee(): [CallExpr] ...::parse::<...>(...) +# 7| getArgList(): [ArgList] ArgList +# 7| getArg(0): [PathExpr,VariableAccess] item +# 7| getPath(): [Path] item +# 7| getSegment(): [PathSegment] item +# 7| getIdentifier(): [NameRef] item +# 7| getFunction(): [PathExpr] ...::parse::<...> +# 7| getPath(): [Path] ...::parse::<...> +# 7| getQualifier(): [Path] $crate +# 7| getSegment(): [PathSegment] $crate +# 7| getIdentifier(): [NameRef] $crate +# 7| getSegment(): [PathSegment] parse::<...> +# 7| getGenericArgList(): [GenericArgList] <...> +# 7| getGenericArg(0): [TypeArg] TypeArg +# 7| getTypeRepr(): [PathTypeRepr] ...::ItemFn +# 7| getPath(): [Path] ...::ItemFn +# 7| getQualifier(): [Path] syn +# 7| getSegment(): [PathSegment] syn +# 7| getIdentifier(): [NameRef] syn +# 7| getSegment(): [PathSegment] ItemFn +# 7| getIdentifier(): [NameRef] ItemFn +# 7| getIdentifier(): [NameRef] parse +# 7| getMatchArmList(): [MatchArmList] MatchArmList +# 7| getArm(0): [MatchArm] ... => data +# 7| getExpr(): [PathExpr,VariableAccess] data +# 7| getPath(): [Path] data +# 7| getSegment(): [PathSegment] data +# 7| getIdentifier(): [NameRef] data +# 7| getPat(): [TupleStructPat] ...::Ok(...) +# 7| getPath(): [Path] ...::Ok +# 7| getQualifier(): [Path] ...::__private +# 7| getQualifier(): [Path] $crate +# 7| getSegment(): [PathSegment] $crate +# 7| getIdentifier(): [NameRef] $crate +# 7| getSegment(): [PathSegment] __private +# 7| getIdentifier(): [NameRef] __private +# 7| getSegment(): [PathSegment] Ok +# 7| getIdentifier(): [NameRef] Ok +# 7| getField(0): [IdentPat] data +# 7| getName(): [Name] data +# 7| getArm(1): [MatchArm] ... => ... +# 7| getExpr(): [BlockExpr] { ... } +# 7| getStmtList(): [StmtList] StmtList +# 7| getStatement(0): [ExprStmt] ExprStmt +# 7| getExpr(): [ReturnExpr] return ... +# 7| getExpr(): [CallExpr] ...::from(...) +# 7| getArgList(): [ArgList] ArgList +# 7| getArg(0): [MethodCallExpr] err.to_compile_error() +# 7| getArgList(): [ArgList] ArgList +# 7| getIdentifier(): [NameRef] to_compile_error +# 7| getReceiver(): [PathExpr,VariableAccess] err +# 7| getPath(): [Path] err +# 7| getSegment(): [PathSegment] err +# 7| getIdentifier(): [NameRef] err +# 7| getFunction(): [PathExpr] ...::from +# 7| getPath(): [Path] ...::from +# 7| getQualifier(): [Path] ...::TokenStream +# 7| getQualifier(): [Path] ...::__private +# 7| getQualifier(): [Path] $crate +# 7| getSegment(): [PathSegment] $crate +# 7| getIdentifier(): [NameRef] $crate +# 7| getSegment(): [PathSegment] __private +# 7| getIdentifier(): [NameRef] __private +# 7| getSegment(): [PathSegment] TokenStream +# 7| getIdentifier(): [NameRef] TokenStream +# 7| getSegment(): [PathSegment] from +# 7| getIdentifier(): [NameRef] from +# 7| getPat(): [TupleStructPat] ...::Err(...) +# 7| getPath(): [Path] ...::Err +# 7| getQualifier(): [Path] ...::__private +# 7| getQualifier(): [Path] $crate +# 7| getSegment(): [PathSegment] $crate +# 7| getIdentifier(): [NameRef] $crate +# 7| getSegment(): [PathSegment] __private +# 7| getIdentifier(): [NameRef] __private +# 7| getSegment(): [PathSegment] Err +# 7| getIdentifier(): [NameRef] Err +# 7| getField(0): [IdentPat] err +# 7| getName(): [Name] err +# 7| getPat(): [IdentPat] ast +# 7| getName(): [Name] ast +# 8| getStatement(2): [LetStmt] let ... = ... +# 8| getInitializer(): [MethodCallExpr] ... .collect() +# 14| getArgList(): [ArgList] ArgList +# 14| getGenericArgList(): [GenericArgList] <...> +# 14| getGenericArg(0): [TypeArg] TypeArg +# 14| getTypeRepr(): [PathTypeRepr] Vec::<...> +# 14| getPath(): [Path] Vec::<...> +# 14| getSegment(): [PathSegment] Vec::<...> +# 14| getGenericArgList(): [GenericArgList] <...> +# 14| getGenericArg(0): [TypeArg] TypeArg +# 14| getTypeRepr(): [InferTypeRepr] _ +# 14| getIdentifier(): [NameRef] Vec +# 14| getIdentifier(): [NameRef] collect +# 8| getReceiver(): [MethodCallExpr] ... .map(...) +# 9| getArgList(): [ArgList] ArgList +# 9| getArg(0): [ClosureExpr] |...| ... +# 9| getParamList(): [ParamList] ParamList +# 9| getParam(0): [Param] ... +# 9| getPat(): [IdentPat] i +# 9| getName(): [Name] i +# 9| getBody(): [BlockExpr] { ... } +# 9| getStmtList(): [StmtList] StmtList +# 10| getStatement(0): [LetStmt] let ... = ... +# 10| getInitializer(): [MethodCallExpr] ast.clone() +# 10| getArgList(): [ArgList] ArgList +# 10| getIdentifier(): [NameRef] clone +# 10| getReceiver(): [PathExpr,VariableAccess] ast +# 10| getPath(): [Path] ast +# 10| getSegment(): [PathSegment] ast +# 10| getIdentifier(): [NameRef] ast +# 10| getPat(): [IdentPat] mut new_ast +# 10| getName(): [Name] new_ast +# 11| getStatement(1): [ExprStmt] ExprStmt +# 11| getExpr(): [AssignmentExpr] ... = ... +# 11| getLhs(): [FieldExpr] ... .ident +# 11| getContainer(): [FieldExpr] new_ast.sig +# 11| getContainer(): [PathExpr,VariableAccess] new_ast +# 11| getPath(): [Path] new_ast +# 11| getSegment(): [PathSegment] new_ast +# 11| getIdentifier(): [NameRef] new_ast +# 11| getIdentifier(): [NameRef] sig +# 11| getIdentifier(): [NameRef] ident +# 11| getRhs(): [CallExpr] ...::new(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getArg(0): [RefExpr] &... +# 11| getExpr(): [MacroExpr] MacroExpr +# 11| getMacroCall(): [MacroCall] format!... +# 11| getPath(): [Path] format +# 11| getSegment(): [PathSegment] format +# 11| getIdentifier(): [NameRef] format +# 11| getTokenTree(): [TokenTree] TokenTree +# 11| getMacroCallExpansion(): [CallExpr] ...::must_use(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getArg(0): [BlockExpr] { ... } +# 11| getStmtList(): [StmtList] StmtList +# 11| getStatement(0): [LetStmt] let ... = ... +# 11| getInitializer(): [CallExpr] ...::format(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getArg(0): [MacroExpr] MacroExpr +# 11| getMacroCall(): [MacroCall] ...::format_args!... +# 11| getPath(): [Path] ...::format_args +# 11| getQualifier(): [Path] ...::__export +# 11| getQualifier(): [Path] $crate +# 11| getSegment(): [PathSegment] $crate +# 11| getIdentifier(): [NameRef] $crate +# 11| getSegment(): [PathSegment] __export +# 11| getIdentifier(): [NameRef] __export +# 11| getSegment(): [PathSegment] format_args +# 11| getIdentifier(): [NameRef] format_args +# 11| getTokenTree(): [TokenTree] TokenTree +# 11| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr +# 11| getArg(0): [FormatArgsArg] FormatArgsArg +# 11| getExpr(): [FieldExpr] ... .ident +# 11| getContainer(): [FieldExpr] ast.sig +# 11| getContainer(): [PathExpr,VariableAccess] ast +# 11| getPath(): [Path] ast +# 11| getSegment(): [PathSegment] ast +# 11| getIdentifier(): [NameRef] ast +# 11| getIdentifier(): [NameRef] sig +# 11| getIdentifier(): [NameRef] ident +# 11| getArg(1): [FormatArgsArg] FormatArgsArg +# 11| getExpr(): [PathExpr,VariableAccess] i +# 11| getPath(): [Path] i +# 11| getSegment(): [PathSegment] i +# 11| getIdentifier(): [NameRef] i +# 11| getTemplate(): [StringLiteralExpr] "{}_{}" +# 11| getFormat(0): [Format] {} +# 11| getFormat(1): [Format] {} +# 11| getFunction(): [PathExpr] ...::format +# 11| getPath(): [Path] ...::format +# 11| getQualifier(): [Path] ...::fmt +# 11| getQualifier(): [Path] $crate +# 11| getSegment(): [PathSegment] $crate +# 11| getIdentifier(): [NameRef] $crate +# 11| getSegment(): [PathSegment] fmt +# 11| getIdentifier(): [NameRef] fmt +# 11| getSegment(): [PathSegment] format +# 11| getIdentifier(): [NameRef] format +# 11| getPat(): [IdentPat] res +# 11| getName(): [Name] res +# 11| getTailExpr(): [PathExpr,VariableAccess] res +# 11| getPath(): [Path] res +# 11| getSegment(): [PathSegment] res +# 11| getIdentifier(): [NameRef] res +# 11| getFunction(): [PathExpr] ...::must_use +# 11| getPath(): [Path] ...::must_use +# 11| getQualifier(): [Path] ...::__export +# 11| getQualifier(): [Path] $crate +# 11| getSegment(): [PathSegment] $crate +# 11| getIdentifier(): [NameRef] $crate +# 11| getSegment(): [PathSegment] __export +# 11| getIdentifier(): [NameRef] __export +# 11| getSegment(): [PathSegment] must_use +# 11| getIdentifier(): [NameRef] must_use +# 11| getArg(1): [MethodCallExpr] ... .span() +# 11| getArgList(): [ArgList] ArgList +# 11| getIdentifier(): [NameRef] span +# 11| getReceiver(): [FieldExpr] ... .ident +# 11| getContainer(): [FieldExpr] ast.sig +# 11| getContainer(): [PathExpr,VariableAccess] ast +# 11| getPath(): [Path] ast +# 11| getSegment(): [PathSegment] ast +# 11| getIdentifier(): [NameRef] ast +# 11| getIdentifier(): [NameRef] sig +# 11| getIdentifier(): [NameRef] ident +# 11| getFunction(): [PathExpr] ...::new +# 11| getPath(): [Path] ...::new +# 11| getQualifier(): [Path] ...::Ident +# 11| getQualifier(): [Path] syn +# 11| getSegment(): [PathSegment] syn +# 11| getIdentifier(): [NameRef] syn +# 11| getSegment(): [PathSegment] Ident +# 11| getIdentifier(): [NameRef] Ident +# 11| getSegment(): [PathSegment] new +# 11| getIdentifier(): [NameRef] new +# 12| getTailExpr(): [PathExpr,VariableAccess] new_ast +# 12| getPath(): [Path] new_ast +# 12| getSegment(): [PathSegment] new_ast +# 12| getIdentifier(): [NameRef] new_ast +# 9| getIdentifier(): [NameRef] map +# 8| getReceiver(): [ParenExpr] (...) +# 8| getExpr(): [RangeExpr] 0..number +# 8| getEnd(): [PathExpr,VariableAccess] number +# 8| getPath(): [Path] number +# 8| getSegment(): [PathSegment] number +# 8| getIdentifier(): [NameRef] number +# 8| getStart(): [IntegerLiteralExpr] 0 +# 8| getPat(): [IdentPat] items +# 8| getName(): [Name] items +# 15| getTailExpr(): [MethodCallExpr] ... .into() +# 17| getArgList(): [ArgList] ArgList +# 17| getIdentifier(): [NameRef] into +# 15| getReceiver(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] quote!... +# 15| getPath(): [Path] quote +# 15| getSegment(): [PathSegment] quote +# 15| getIdentifier(): [NameRef] quote +# 15| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 15| getStatement(0): [LetStmt] let ... = ... +# 15| getInitializer(): [CallExpr] ...::new(...) +# 15| getArgList(): [ArgList] ArgList +# 15| getFunction(): [PathExpr] ...::new +# 15| getPath(): [Path] ...::new +# 15| getQualifier(): [Path] ...::TokenStream +# 15| getQualifier(): [Path] ...::__private +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] __private +# 15| getIdentifier(): [NameRef] __private +# 15| getSegment(): [PathSegment] TokenStream +# 15| getIdentifier(): [NameRef] TokenStream +# 15| getSegment(): [PathSegment] new +# 15| getIdentifier(): [NameRef] new +# 15| getPat(): [IdentPat] mut _s +# 15| getName(): [Name] _s +# 16| getStatement(1): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_each_token!... +# 15| getPath(): [Path] ...::quote_each_token +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_each_token +# 15| getIdentifier(): [NameRef] quote_each_token +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_tokens_with_context!... +# 15| getPath(): [Path] ...::quote_tokens_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_tokens_with_context +# 15| getIdentifier(): [NameRef] quote_tokens_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(1): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(2): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(3): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 15| getStatement(0): [Use] use ...::ext::* +# 15| getUseTree(): [UseTree] ...::ext::* +# 15| getPath(): [Path] ...::ext +# 15| getQualifier(): [Path] ...::__private +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] __private +# 15| getIdentifier(): [NameRef] __private +# 15| getSegment(): [PathSegment] ext +# 15| getIdentifier(): [NameRef] ext +# 15| getStatement(1): [LetStmt] let ... = ...::ThereIsNoIteratorInRepetition +# 15| getInitializer(): [PathExpr] ...::ThereIsNoIteratorInRepetition +# 15| getPath(): [Path] ...::ThereIsNoIteratorInRepetition +# 15| getQualifier(): [Path] ...::__private +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] __private +# 15| getIdentifier(): [NameRef] __private +# 15| getSegment(): [PathSegment] ThereIsNoIteratorInRepetition +# 15| getIdentifier(): [NameRef] ThereIsNoIteratorInRepetition +# 15| getPat(): [IdentPat] has_iter +# 15| getName(): [Name] has_iter +# 16| getStatement(2): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_names!... +# 15| getPath(): [Path] ...::pounded_var_names +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names +# 15| getIdentifier(): [NameRef] pounded_var_names +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_names_with_context!... +# 15| getPath(): [Path] ...::pounded_var_names_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names_with_context +# 15| getIdentifier(): [NameRef] pounded_var_names_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getStatement(0): [ExprStmt] ExprStmt +# 15| getExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_names!... +# 15| getPath(): [Path] ...::pounded_var_names +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names +# 15| getIdentifier(): [NameRef] pounded_var_names +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_names_with_context!... +# 15| getPath(): [Path] ...::pounded_var_names_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names_with_context +# 15| getIdentifier(): [NameRef] pounded_var_names_with_context +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(1): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(2): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_bind_into_iter!... +# 15| getPath(): [Path] ...::quote_bind_into_iter +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_bind_into_iter +# 15| getIdentifier(): [NameRef] quote_bind_into_iter +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [LetStmt] let ... = ... +# 15| getAttr(0): [Attr] Attr +# 15| getMeta(): [Meta] Meta +# 15| getPath(): [Path] allow +# 15| getSegment(): [PathSegment] allow +# 15| getIdentifier(): [NameRef] allow +# 15| getTokenTree(): [TokenTree] TokenTree +# 16| getInitializer(): [MethodCallExpr] items.quote_into_iter() +# 15| getArgList(): [ArgList] ArgList +# 15| getIdentifier(): [NameRef] quote_into_iter +# 16| getReceiver(): [PathExpr,VariableAccess] items +# 16| getPath(): [Path] items +# 16| getSegment(): [PathSegment] items +# 16| getIdentifier(): [NameRef] items +# 16| getPat(): [TuplePat] TuplePat +# 16| getField(0): [IdentPat] mut items +# 16| getName(): [Name] items +# 15| getField(1): [IdentPat] i +# 15| getName(): [Name] i +# 15| getStatement(1): [LetStmt] let ... = ... +# 15| getInitializer(): [BinaryExpr] ... | ... +# 15| getLhs(): [PathExpr,VariableAccess] has_iter +# 15| getPath(): [Path] has_iter +# 15| getSegment(): [PathSegment] has_iter +# 15| getIdentifier(): [NameRef] has_iter +# 15| getRhs(): [PathExpr,VariableAccess] i +# 15| getPath(): [Path] i +# 15| getSegment(): [PathSegment] i +# 15| getIdentifier(): [NameRef] i +# 15| getPat(): [IdentPat] has_iter +# 15| getName(): [Name] has_iter +# 15| getStatement(3): [LetStmt] let _ = has_iter +# 15| getInitializer(): [PathExpr,VariableAccess] has_iter +# 15| getPath(): [Path] has_iter +# 15| getSegment(): [PathSegment] has_iter +# 15| getIdentifier(): [NameRef] has_iter +# 15| getPat(): [WildcardPat] _ +# 15| getTypeRepr(): [PathTypeRepr] ...::HasIterator +# 15| getPath(): [Path] ...::HasIterator +# 15| getQualifier(): [Path] ...::__private +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] __private +# 15| getIdentifier(): [NameRef] __private +# 15| getSegment(): [PathSegment] HasIterator +# 15| getIdentifier(): [NameRef] HasIterator +# 16| getTailExpr(): [WhileExpr] while true { ... } +# 16| getLoopBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getStatement(0): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_names!... +# 15| getPath(): [Path] ...::pounded_var_names +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names +# 15| getIdentifier(): [NameRef] pounded_var_names +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_names_with_context!... +# 15| getPath(): [Path] ...::pounded_var_names_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names_with_context +# 15| getIdentifier(): [NameRef] pounded_var_names_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getStatement(0): [ExprStmt] ExprStmt +# 15| getExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_names!... +# 15| getPath(): [Path] ...::pounded_var_names +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names +# 15| getIdentifier(): [NameRef] pounded_var_names +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_names_with_context!... +# 15| getPath(): [Path] ...::pounded_var_names_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names_with_context +# 15| getIdentifier(): [NameRef] pounded_var_names_with_context +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(1): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(2): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_bind_next_or_break!... +# 15| getPath(): [Path] ...::quote_bind_next_or_break +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_bind_next_or_break +# 15| getIdentifier(): [NameRef] quote_bind_next_or_break +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [LetStmt] let ... = ... +# 16| getInitializer(): [MatchExpr] match ... { ... } +# 16| getScrutinee(): [MethodCallExpr] items.next() +# 15| getArgList(): [ArgList] ArgList +# 15| getIdentifier(): [NameRef] next +# 16| getReceiver(): [PathExpr,VariableAccess] items +# 16| getPath(): [Path] items +# 16| getSegment(): [PathSegment] items +# 16| getIdentifier(): [NameRef] items +# 15| getMatchArmList(): [MatchArmList] MatchArmList +# 15| getArm(0): [MatchArm] ... => ... +# 15| getExpr(): [CallExpr] ...::RepInterp(...) +# 15| getArgList(): [ArgList] ArgList +# 15| getArg(0): [PathExpr] _x +# 15| getPath(): [Path] _x +# 15| getSegment(): [PathSegment] _x +# 15| getIdentifier(): [NameRef] _x +# 15| getFunction(): [PathExpr] ...::RepInterp +# 15| getPath(): [Path] ...::RepInterp +# 15| getQualifier(): [Path] ...::__private +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] __private +# 15| getIdentifier(): [NameRef] __private +# 15| getSegment(): [PathSegment] RepInterp +# 15| getIdentifier(): [NameRef] RepInterp +# 15| getPat(): [TupleStructPat] Some(...) +# 15| getPath(): [Path] Some +# 15| getSegment(): [PathSegment] Some +# 15| getIdentifier(): [NameRef] Some +# 15| getField(0): [IdentPat] _x +# 15| getName(): [Name] _x +# 15| getArm(1): [MatchArm] ... => ... +# 15| getExpr(): [BreakExpr] break +# 15| getPat(): [IdentPat] None +# 15| getName(): [Name] None +# 16| getPat(): [IdentPat] items +# 16| getName(): [Name] items +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_each_token!... +# 15| getPath(): [Path] ...::quote_each_token +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_each_token +# 15| getIdentifier(): [NameRef] quote_each_token +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_tokens_with_context!... +# 15| getPath(): [Path] ...::quote_tokens_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_tokens_with_context +# 15| getIdentifier(): [NameRef] quote_tokens_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(1): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(2): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(3): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [ExprStmt] ExprStmt +# 16| getExpr(): [CallExpr] ...::to_tokens(...) +# 16| getArgList(): [ArgList] ArgList +# 16| getArg(0): [RefExpr] &items +# 16| getExpr(): [PathExpr,VariableAccess] items +# 16| getPath(): [Path] items +# 16| getSegment(): [PathSegment] items +# 16| getIdentifier(): [NameRef] items +# 15| getArg(1): [RefExpr] &mut _s +# 15| getExpr(): [PathExpr] _s +# 15| getPath(): [Path] _s +# 15| getSegment(): [PathSegment] _s +# 15| getIdentifier(): [NameRef] _s +# 15| getFunction(): [PathExpr] ...::to_tokens +# 15| getPath(): [Path] ...::to_tokens +# 15| getQualifier(): [Path] ...::ToTokens +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] ToTokens +# 15| getIdentifier(): [NameRef] ToTokens +# 15| getSegment(): [PathSegment] to_tokens +# 15| getIdentifier(): [NameRef] to_tokens +# 16| getStatement(4): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(5): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(6): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getCondition(): [BooleanLiteralExpr] true +# 16| getStatement(4): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(5): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(6): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(7): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [PathExpr] _s +# 15| getPath(): [Path] _s +# 15| getSegment(): [PathSegment] _s +# 15| getIdentifier(): [NameRef] _s +# 5| getName(): [Name] repeat +# 5| getRetType(): [RetTypeRepr] RetTypeRepr +# 5| getTypeRepr(): [PathTypeRepr] TokenStream +# 5| getPath(): [Path] TokenStream +# 5| getSegment(): [PathSegment] TokenStream +# 5| getIdentifier(): [NameRef] TokenStream +# 5| getVisibility(): [Visibility] Visibility +# 20| getItem(3): [Function] fn add_one +# 21| getParamList(): [ParamList] ParamList +# 21| getParam(0): [Param] ...: TokenStream +# 21| getTypeRepr(): [PathTypeRepr] TokenStream +# 21| getPath(): [Path] TokenStream +# 21| getSegment(): [PathSegment] TokenStream +# 21| getIdentifier(): [NameRef] TokenStream +# 21| getPat(): [IdentPat] _attr +# 21| getName(): [Name] _attr +# 21| getParam(1): [Param] ...: TokenStream +# 21| getTypeRepr(): [PathTypeRepr] TokenStream +# 21| getPath(): [Path] TokenStream +# 21| getSegment(): [PathSegment] TokenStream +# 21| getIdentifier(): [NameRef] TokenStream +# 21| getPat(): [IdentPat] item +# 21| getName(): [Name] item +# 20| getAttr(0): [Attr] Attr +# 20| getMeta(): [Meta] Meta +# 20| getPath(): [Path] proc_macro_attribute +# 20| getSegment(): [PathSegment] proc_macro_attribute +# 20| getIdentifier(): [NameRef] proc_macro_attribute +# 21| getBody(): [BlockExpr] { ... } +# 21| getStmtList(): [StmtList] StmtList +# 22| getStatement(0): [LetStmt] let ... = ... +# 22| getInitializer(): [MacroExpr] MacroExpr +# 22| getMacroCall(): [MacroCall] ...::parse_macro_input!... +# 22| getPath(): [Path] ...::parse_macro_input +# 22| getQualifier(): [Path] syn +# 22| getSegment(): [PathSegment] syn +# 22| getIdentifier(): [NameRef] syn +# 22| getSegment(): [PathSegment] parse_macro_input +# 22| getIdentifier(): [NameRef] parse_macro_input +# 22| getTokenTree(): [TokenTree] TokenTree +# 22| getMacroCallExpansion(): [MatchExpr] match ... { ... } +# 22| getScrutinee(): [CallExpr] ...::parse::<...>(...) +# 22| getArgList(): [ArgList] ArgList +# 22| getArg(0): [PathExpr,VariableAccess] item +# 22| getPath(): [Path] item +# 22| getSegment(): [PathSegment] item +# 22| getIdentifier(): [NameRef] item +# 22| getFunction(): [PathExpr] ...::parse::<...> +# 22| getPath(): [Path] ...::parse::<...> +# 22| getQualifier(): [Path] $crate +# 22| getSegment(): [PathSegment] $crate +# 22| getIdentifier(): [NameRef] $crate +# 22| getSegment(): [PathSegment] parse::<...> +# 22| getGenericArgList(): [GenericArgList] <...> +# 22| getGenericArg(0): [TypeArg] TypeArg +# 22| getTypeRepr(): [PathTypeRepr] ...::ItemFn +# 22| getPath(): [Path] ...::ItemFn +# 22| getQualifier(): [Path] syn +# 22| getSegment(): [PathSegment] syn +# 22| getIdentifier(): [NameRef] syn +# 22| getSegment(): [PathSegment] ItemFn +# 22| getIdentifier(): [NameRef] ItemFn +# 22| getIdentifier(): [NameRef] parse +# 22| getMatchArmList(): [MatchArmList] MatchArmList +# 22| getArm(0): [MatchArm] ... => data +# 22| getExpr(): [PathExpr,VariableAccess] data +# 22| getPath(): [Path] data +# 22| getSegment(): [PathSegment] data +# 22| getIdentifier(): [NameRef] data +# 22| getPat(): [TupleStructPat] ...::Ok(...) +# 22| getPath(): [Path] ...::Ok +# 22| getQualifier(): [Path] ...::__private +# 22| getQualifier(): [Path] $crate +# 22| getSegment(): [PathSegment] $crate +# 22| getIdentifier(): [NameRef] $crate +# 22| getSegment(): [PathSegment] __private +# 22| getIdentifier(): [NameRef] __private +# 22| getSegment(): [PathSegment] Ok +# 22| getIdentifier(): [NameRef] Ok +# 22| getField(0): [IdentPat] data +# 22| getName(): [Name] data +# 22| getArm(1): [MatchArm] ... => ... +# 22| getExpr(): [BlockExpr] { ... } +# 22| getStmtList(): [StmtList] StmtList +# 22| getStatement(0): [ExprStmt] ExprStmt +# 22| getExpr(): [ReturnExpr] return ... +# 22| getExpr(): [CallExpr] ...::from(...) +# 22| getArgList(): [ArgList] ArgList +# 22| getArg(0): [MethodCallExpr] err.to_compile_error() +# 22| getArgList(): [ArgList] ArgList +# 22| getIdentifier(): [NameRef] to_compile_error +# 22| getReceiver(): [PathExpr,VariableAccess] err +# 22| getPath(): [Path] err +# 22| getSegment(): [PathSegment] err +# 22| getIdentifier(): [NameRef] err +# 22| getFunction(): [PathExpr] ...::from +# 22| getPath(): [Path] ...::from +# 22| getQualifier(): [Path] ...::TokenStream +# 22| getQualifier(): [Path] ...::__private +# 22| getQualifier(): [Path] $crate +# 22| getSegment(): [PathSegment] $crate +# 22| getIdentifier(): [NameRef] $crate +# 22| getSegment(): [PathSegment] __private +# 22| getIdentifier(): [NameRef] __private +# 22| getSegment(): [PathSegment] TokenStream +# 22| getIdentifier(): [NameRef] TokenStream +# 22| getSegment(): [PathSegment] from +# 22| getIdentifier(): [NameRef] from +# 22| getPat(): [TupleStructPat] ...::Err(...) +# 22| getPath(): [Path] ...::Err +# 22| getQualifier(): [Path] ...::__private +# 22| getQualifier(): [Path] $crate +# 22| getSegment(): [PathSegment] $crate +# 22| getIdentifier(): [NameRef] $crate +# 22| getSegment(): [PathSegment] __private +# 22| getIdentifier(): [NameRef] __private +# 22| getSegment(): [PathSegment] Err +# 22| getIdentifier(): [NameRef] Err +# 22| getField(0): [IdentPat] err +# 22| getName(): [Name] err +# 22| getPat(): [IdentPat] ast +# 22| getName(): [Name] ast +# 23| getStatement(1): [LetStmt] let ... = ... +# 23| getInitializer(): [MethodCallExpr] ast.clone() +# 23| getArgList(): [ArgList] ArgList +# 23| getIdentifier(): [NameRef] clone +# 23| getReceiver(): [PathExpr,VariableAccess] ast +# 23| getPath(): [Path] ast +# 23| getSegment(): [PathSegment] ast +# 23| getIdentifier(): [NameRef] ast +# 23| getPat(): [IdentPat] mut new_ast +# 23| getName(): [Name] new_ast +# 24| getStatement(2): [ExprStmt] ExprStmt +# 24| getExpr(): [AssignmentExpr] ... = ... +# 24| getLhs(): [FieldExpr] ... .ident +# 24| getContainer(): [FieldExpr] new_ast.sig +# 24| getContainer(): [PathExpr,VariableAccess] new_ast +# 24| getPath(): [Path] new_ast +# 24| getSegment(): [PathSegment] new_ast +# 24| getIdentifier(): [NameRef] new_ast +# 24| getIdentifier(): [NameRef] sig +# 24| getIdentifier(): [NameRef] ident +# 24| getRhs(): [CallExpr] ...::new(...) +# 24| getArgList(): [ArgList] ArgList +# 24| getArg(0): [RefExpr] &... +# 24| getExpr(): [MacroExpr] MacroExpr +# 24| getMacroCall(): [MacroCall] format!... +# 24| getPath(): [Path] format +# 24| getSegment(): [PathSegment] format +# 24| getIdentifier(): [NameRef] format +# 24| getTokenTree(): [TokenTree] TokenTree +# 24| getMacroCallExpansion(): [CallExpr] ...::must_use(...) +# 24| getArgList(): [ArgList] ArgList +# 24| getArg(0): [BlockExpr] { ... } +# 24| getStmtList(): [StmtList] StmtList +# 24| getStatement(0): [LetStmt] let ... = ... +# 24| getInitializer(): [CallExpr] ...::format(...) +# 24| getArgList(): [ArgList] ArgList +# 24| getArg(0): [MacroExpr] MacroExpr +# 24| getMacroCall(): [MacroCall] ...::format_args!... +# 24| getPath(): [Path] ...::format_args +# 24| getQualifier(): [Path] ...::__export +# 24| getQualifier(): [Path] $crate +# 24| getSegment(): [PathSegment] $crate +# 24| getIdentifier(): [NameRef] $crate +# 24| getSegment(): [PathSegment] __export +# 24| getIdentifier(): [NameRef] __export +# 24| getSegment(): [PathSegment] format_args +# 24| getIdentifier(): [NameRef] format_args +# 24| getTokenTree(): [TokenTree] TokenTree +# 24| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr +# 24| getArg(0): [FormatArgsArg] FormatArgsArg +# 24| getExpr(): [FieldExpr] ... .ident +# 24| getContainer(): [FieldExpr] ast.sig +# 24| getContainer(): [PathExpr,VariableAccess] ast +# 24| getPath(): [Path] ast +# 24| getSegment(): [PathSegment] ast +# 24| getIdentifier(): [NameRef] ast +# 24| getIdentifier(): [NameRef] sig +# 24| getIdentifier(): [NameRef] ident +# 24| getTemplate(): [StringLiteralExpr] "{}_new" +# 24| getFormat(0): [Format] {} +# 24| getFunction(): [PathExpr] ...::format +# 24| getPath(): [Path] ...::format +# 24| getQualifier(): [Path] ...::fmt +# 24| getQualifier(): [Path] $crate +# 24| getSegment(): [PathSegment] $crate +# 24| getIdentifier(): [NameRef] $crate +# 24| getSegment(): [PathSegment] fmt +# 24| getIdentifier(): [NameRef] fmt +# 24| getSegment(): [PathSegment] format +# 24| getIdentifier(): [NameRef] format +# 24| getPat(): [IdentPat] res +# 24| getName(): [Name] res +# 24| getTailExpr(): [PathExpr,VariableAccess] res +# 24| getPath(): [Path] res +# 24| getSegment(): [PathSegment] res +# 24| getIdentifier(): [NameRef] res +# 24| getFunction(): [PathExpr] ...::must_use +# 24| getPath(): [Path] ...::must_use +# 24| getQualifier(): [Path] ...::__export +# 24| getQualifier(): [Path] $crate +# 24| getSegment(): [PathSegment] $crate +# 24| getIdentifier(): [NameRef] $crate +# 24| getSegment(): [PathSegment] __export +# 24| getIdentifier(): [NameRef] __export +# 24| getSegment(): [PathSegment] must_use +# 24| getIdentifier(): [NameRef] must_use +# 24| getArg(1): [MethodCallExpr] ... .span() +# 24| getArgList(): [ArgList] ArgList +# 24| getIdentifier(): [NameRef] span +# 24| getReceiver(): [FieldExpr] ... .ident +# 24| getContainer(): [FieldExpr] ast.sig +# 24| getContainer(): [PathExpr,VariableAccess] ast +# 24| getPath(): [Path] ast +# 24| getSegment(): [PathSegment] ast +# 24| getIdentifier(): [NameRef] ast +# 24| getIdentifier(): [NameRef] sig +# 24| getIdentifier(): [NameRef] ident +# 24| getFunction(): [PathExpr] ...::new +# 24| getPath(): [Path] ...::new +# 24| getQualifier(): [Path] ...::Ident +# 24| getQualifier(): [Path] syn +# 24| getSegment(): [PathSegment] syn +# 24| getIdentifier(): [NameRef] syn +# 24| getSegment(): [PathSegment] Ident +# 24| getIdentifier(): [NameRef] Ident +# 24| getSegment(): [PathSegment] new +# 24| getIdentifier(): [NameRef] new +# 25| getTailExpr(): [MethodCallExpr] ... .into() +# 28| getArgList(): [ArgList] ArgList +# 28| getIdentifier(): [NameRef] into +# 25| getReceiver(): [MacroExpr] MacroExpr +# 25| getMacroCall(): [MacroCall] quote!... +# 25| getPath(): [Path] quote +# 25| getSegment(): [PathSegment] quote +# 25| getIdentifier(): [NameRef] quote +# 25| getTokenTree(): [TokenTree] TokenTree +# 26| getMacroCallExpansion(): [BlockExpr] { ... } +# 26| getStmtList(): [StmtList] StmtList +# 25| getStatement(0): [LetStmt] let ... = ... +# 25| getInitializer(): [CallExpr] ...::new(...) +# 25| getArgList(): [ArgList] ArgList +# 25| getFunction(): [PathExpr] ...::new +# 25| getPath(): [Path] ...::new +# 25| getQualifier(): [Path] ...::TokenStream +# 25| getQualifier(): [Path] ...::__private +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] __private +# 25| getIdentifier(): [NameRef] __private +# 25| getSegment(): [PathSegment] TokenStream +# 25| getIdentifier(): [NameRef] TokenStream +# 25| getSegment(): [PathSegment] new +# 25| getIdentifier(): [NameRef] new +# 25| getPat(): [IdentPat] mut _s +# 25| getName(): [Name] _s +# 26| getStatement(1): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_each_token!... +# 25| getPath(): [Path] ...::quote_each_token +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_each_token +# 25| getIdentifier(): [NameRef] quote_each_token +# 26| getTokenTree(): [TokenTree] TokenTree +# 26| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getTailExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_tokens_with_context!... +# 25| getPath(): [Path] ...::quote_tokens_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_tokens_with_context +# 25| getIdentifier(): [NameRef] quote_tokens_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 26| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 27| getTailExpr(): [MacroExpr] MacroExpr +# 27| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 27| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(0): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(1): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(2): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(3): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 26| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(0): [ExprStmt] ExprStmt +# 26| getExpr(): [CallExpr] ...::to_tokens(...) +# 26| getArgList(): [ArgList] ArgList +# 26| getArg(0): [RefExpr] &ast +# 26| getExpr(): [PathExpr,VariableAccess] ast +# 26| getPath(): [Path] ast +# 26| getSegment(): [PathSegment] ast +# 26| getIdentifier(): [NameRef] ast +# 25| getArg(1): [RefExpr] &mut _s +# 25| getExpr(): [PathExpr] _s +# 25| getPath(): [Path] _s +# 25| getSegment(): [PathSegment] _s +# 25| getIdentifier(): [NameRef] _s +# 25| getFunction(): [PathExpr] ...::to_tokens +# 25| getPath(): [Path] ...::to_tokens +# 25| getQualifier(): [Path] ...::ToTokens +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] ToTokens +# 25| getIdentifier(): [NameRef] ToTokens +# 25| getSegment(): [PathSegment] to_tokens +# 25| getIdentifier(): [NameRef] to_tokens +# 26| getStatement(4): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(5): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 27| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 27| getStatement(0): [ExprStmt] ExprStmt +# 27| getExpr(): [CallExpr] ...::to_tokens(...) +# 27| getArgList(): [ArgList] ArgList +# 27| getArg(0): [RefExpr] &new_ast +# 27| getExpr(): [PathExpr,VariableAccess] new_ast +# 27| getPath(): [Path] new_ast +# 27| getSegment(): [PathSegment] new_ast +# 27| getIdentifier(): [NameRef] new_ast +# 25| getArg(1): [RefExpr] &mut _s +# 25| getExpr(): [PathExpr] _s +# 25| getPath(): [Path] _s +# 25| getSegment(): [PathSegment] _s +# 25| getIdentifier(): [NameRef] _s +# 25| getFunction(): [PathExpr] ...::to_tokens +# 25| getPath(): [Path] ...::to_tokens +# 25| getQualifier(): [Path] ...::ToTokens +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] ToTokens +# 25| getIdentifier(): [NameRef] ToTokens +# 25| getSegment(): [PathSegment] to_tokens +# 25| getIdentifier(): [NameRef] to_tokens +# 26| getStatement(6): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(7): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 27| getStatement(8): [ExprStmt] ExprStmt +# 27| getExpr(): [MacroExpr] MacroExpr +# 27| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 27| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 25| getTailExpr(): [PathExpr] _s +# 25| getPath(): [Path] _s +# 25| getSegment(): [PathSegment] _s +# 25| getIdentifier(): [NameRef] _s +# 21| getName(): [Name] add_one +# 21| getRetType(): [RetTypeRepr] RetTypeRepr +# 21| getTypeRepr(): [PathTypeRepr] TokenStream +# 21| getPath(): [Path] TokenStream +# 21| getSegment(): [PathSegment] TokenStream +# 21| getIdentifier(): [NameRef] TokenStream +# 21| getVisibility(): [Visibility] Visibility +# 31| getItem(4): [Function] fn erase +# 32| getParamList(): [ParamList] ParamList +# 32| getParam(0): [Param] ...: TokenStream +# 32| getTypeRepr(): [PathTypeRepr] TokenStream +# 32| getPath(): [Path] TokenStream +# 32| getSegment(): [PathSegment] TokenStream +# 32| getIdentifier(): [NameRef] TokenStream +# 32| getPat(): [IdentPat] _attr +# 32| getName(): [Name] _attr +# 32| getParam(1): [Param] ...: TokenStream +# 32| getTypeRepr(): [PathTypeRepr] TokenStream +# 32| getPath(): [Path] TokenStream +# 32| getSegment(): [PathSegment] TokenStream +# 32| getIdentifier(): [NameRef] TokenStream +# 32| getPat(): [IdentPat] _item +# 32| getName(): [Name] _item +# 31| getAttr(0): [Attr] Attr +# 31| getMeta(): [Meta] Meta +# 31| getPath(): [Path] proc_macro_attribute +# 31| getSegment(): [PathSegment] proc_macro_attribute +# 31| getIdentifier(): [NameRef] proc_macro_attribute +# 32| getBody(): [BlockExpr] { ... } +# 32| getStmtList(): [StmtList] StmtList +# 33| getTailExpr(): [CallExpr] ...::new(...) +# 33| getArgList(): [ArgList] ArgList +# 33| getFunction(): [PathExpr] ...::new +# 33| getPath(): [Path] ...::new +# 33| getQualifier(): [Path] TokenStream +# 33| getSegment(): [PathSegment] TokenStream +# 33| getIdentifier(): [NameRef] TokenStream +# 33| getSegment(): [PathSegment] new +# 33| getIdentifier(): [NameRef] new +# 32| getName(): [Name] erase +# 32| getRetType(): [RetTypeRepr] RetTypeRepr +# 32| getTypeRepr(): [PathTypeRepr] TokenStream +# 32| getPath(): [Path] TokenStream +# 32| getSegment(): [PathSegment] TokenStream +# 32| getIdentifier(): [NameRef] TokenStream +# 32| getVisibility(): [Visibility] Visibility +# 36| getItem(5): [Function] fn my_trait_derive +# 37| getParamList(): [ParamList] ParamList +# 37| getParam(0): [Param] ...: TokenStream +# 37| getTypeRepr(): [PathTypeRepr] TokenStream +# 37| getPath(): [Path] TokenStream +# 37| getSegment(): [PathSegment] TokenStream +# 37| getIdentifier(): [NameRef] TokenStream +# 37| getPat(): [IdentPat] input +# 37| getName(): [Name] input +# 36| getAttr(0): [Attr] Attr +# 36| getMeta(): [Meta] Meta +# 36| getPath(): [Path] proc_macro_derive +# 36| getSegment(): [PathSegment] proc_macro_derive +# 36| getIdentifier(): [NameRef] proc_macro_derive +# 36| getTokenTree(): [TokenTree] TokenTree +# 37| getBody(): [BlockExpr] { ... } +# 37| getStmtList(): [StmtList] StmtList +# 38| getStatement(0): [LetStmt] let ... = ... +# 38| getInitializer(): [MacroExpr] MacroExpr +# 38| getMacroCall(): [MacroCall] ...::parse_macro_input!... +# 38| getPath(): [Path] ...::parse_macro_input +# 38| getQualifier(): [Path] syn +# 38| getSegment(): [PathSegment] syn +# 38| getIdentifier(): [NameRef] syn +# 38| getSegment(): [PathSegment] parse_macro_input +# 38| getIdentifier(): [NameRef] parse_macro_input +# 38| getTokenTree(): [TokenTree] TokenTree +# 38| getMacroCallExpansion(): [MatchExpr] match ... { ... } +# 38| getScrutinee(): [CallExpr] ...::parse::<...>(...) +# 38| getArgList(): [ArgList] ArgList +# 38| getArg(0): [PathExpr,VariableAccess] input +# 38| getPath(): [Path] input +# 38| getSegment(): [PathSegment] input +# 38| getIdentifier(): [NameRef] input +# 38| getFunction(): [PathExpr] ...::parse::<...> +# 38| getPath(): [Path] ...::parse::<...> +# 38| getQualifier(): [Path] $crate +# 38| getSegment(): [PathSegment] $crate +# 38| getIdentifier(): [NameRef] $crate +# 38| getSegment(): [PathSegment] parse::<...> +# 38| getGenericArgList(): [GenericArgList] <...> +# 38| getGenericArg(0): [TypeArg] TypeArg +# 38| getTypeRepr(): [PathTypeRepr] ...::DeriveInput +# 38| getPath(): [Path] ...::DeriveInput +# 38| getQualifier(): [Path] syn +# 38| getSegment(): [PathSegment] syn +# 38| getIdentifier(): [NameRef] syn +# 38| getSegment(): [PathSegment] DeriveInput +# 38| getIdentifier(): [NameRef] DeriveInput +# 38| getIdentifier(): [NameRef] parse +# 38| getMatchArmList(): [MatchArmList] MatchArmList +# 38| getArm(0): [MatchArm] ... => data +# 38| getExpr(): [PathExpr,VariableAccess] data +# 38| getPath(): [Path] data +# 38| getSegment(): [PathSegment] data +# 38| getIdentifier(): [NameRef] data +# 38| getPat(): [TupleStructPat] ...::Ok(...) +# 38| getPath(): [Path] ...::Ok +# 38| getQualifier(): [Path] ...::__private +# 38| getQualifier(): [Path] $crate +# 38| getSegment(): [PathSegment] $crate +# 38| getIdentifier(): [NameRef] $crate +# 38| getSegment(): [PathSegment] __private +# 38| getIdentifier(): [NameRef] __private +# 38| getSegment(): [PathSegment] Ok +# 38| getIdentifier(): [NameRef] Ok +# 38| getField(0): [IdentPat] data +# 38| getName(): [Name] data +# 38| getArm(1): [MatchArm] ... => ... +# 38| getExpr(): [BlockExpr] { ... } +# 38| getStmtList(): [StmtList] StmtList +# 38| getStatement(0): [ExprStmt] ExprStmt +# 38| getExpr(): [ReturnExpr] return ... +# 38| getExpr(): [CallExpr] ...::from(...) +# 38| getArgList(): [ArgList] ArgList +# 38| getArg(0): [MethodCallExpr] err.to_compile_error() +# 38| getArgList(): [ArgList] ArgList +# 38| getIdentifier(): [NameRef] to_compile_error +# 38| getReceiver(): [PathExpr,VariableAccess] err +# 38| getPath(): [Path] err +# 38| getSegment(): [PathSegment] err +# 38| getIdentifier(): [NameRef] err +# 38| getFunction(): [PathExpr] ...::from +# 38| getPath(): [Path] ...::from +# 38| getQualifier(): [Path] ...::TokenStream +# 38| getQualifier(): [Path] ...::__private +# 38| getQualifier(): [Path] $crate +# 38| getSegment(): [PathSegment] $crate +# 38| getIdentifier(): [NameRef] $crate +# 38| getSegment(): [PathSegment] __private +# 38| getIdentifier(): [NameRef] __private +# 38| getSegment(): [PathSegment] TokenStream +# 38| getIdentifier(): [NameRef] TokenStream +# 38| getSegment(): [PathSegment] from +# 38| getIdentifier(): [NameRef] from +# 38| getPat(): [TupleStructPat] ...::Err(...) +# 38| getPath(): [Path] ...::Err +# 38| getQualifier(): [Path] ...::__private +# 38| getQualifier(): [Path] $crate +# 38| getSegment(): [PathSegment] $crate +# 38| getIdentifier(): [NameRef] $crate +# 38| getSegment(): [PathSegment] __private +# 38| getIdentifier(): [NameRef] __private +# 38| getSegment(): [PathSegment] Err +# 38| getIdentifier(): [NameRef] Err +# 38| getField(0): [IdentPat] err +# 38| getName(): [Name] err +# 38| getPat(): [IdentPat] ast +# 38| getName(): [Name] ast +# 39| getStatement(1): [LetStmt] let ... = ... +# 39| getInitializer(): [RefExpr] &... +# 39| getExpr(): [FieldExpr] ast.ident +# 39| getContainer(): [PathExpr,VariableAccess] ast +# 39| getPath(): [Path] ast +# 39| getSegment(): [PathSegment] ast +# 39| getIdentifier(): [NameRef] ast +# 39| getIdentifier(): [NameRef] ident +# 39| getPat(): [IdentPat] name +# 39| getName(): [Name] name +# 40| getStatement(2): [LetStmt] let ... = ... +# 40| getInitializer(): [CallExpr] ...::new(...) +# 40| getArgList(): [ArgList] ArgList +# 40| getArg(0): [RefExpr] &... +# 40| getExpr(): [MacroExpr] MacroExpr +# 40| getMacroCall(): [MacroCall] format!... +# 40| getPath(): [Path] format +# 40| getSegment(): [PathSegment] format +# 40| getIdentifier(): [NameRef] format +# 40| getTokenTree(): [TokenTree] TokenTree +# 40| getMacroCallExpansion(): [CallExpr] ...::must_use(...) +# 40| getArgList(): [ArgList] ArgList +# 40| getArg(0): [BlockExpr] { ... } +# 40| getStmtList(): [StmtList] StmtList +# 40| getStatement(0): [LetStmt] let ... = ... +# 40| getInitializer(): [CallExpr] ...::format(...) +# 40| getArgList(): [ArgList] ArgList +# 40| getArg(0): [MacroExpr] MacroExpr +# 40| getMacroCall(): [MacroCall] ...::format_args!... +# 40| getPath(): [Path] ...::format_args +# 40| getQualifier(): [Path] ...::__export +# 40| getQualifier(): [Path] $crate +# 40| getSegment(): [PathSegment] $crate +# 40| getIdentifier(): [NameRef] $crate +# 40| getSegment(): [PathSegment] __export +# 40| getIdentifier(): [NameRef] __export +# 40| getSegment(): [PathSegment] format_args +# 40| getIdentifier(): [NameRef] format_args +# 40| getTokenTree(): [TokenTree] TokenTree +# 40| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr +# 40| getArg(0): [FormatArgsArg] FormatArgsArg +# 40| getExpr(): [PathExpr,VariableAccess] name +# 40| getPath(): [Path] name +# 40| getSegment(): [PathSegment] name +# 40| getIdentifier(): [NameRef] name +# 40| getTemplate(): [StringLiteralExpr] "CONST_{}" +# 40| getFormat(0): [Format] {} +# 40| getFunction(): [PathExpr] ...::format +# 40| getPath(): [Path] ...::format +# 40| getQualifier(): [Path] ...::fmt +# 40| getQualifier(): [Path] $crate +# 40| getSegment(): [PathSegment] $crate +# 40| getIdentifier(): [NameRef] $crate +# 40| getSegment(): [PathSegment] fmt +# 40| getIdentifier(): [NameRef] fmt +# 40| getSegment(): [PathSegment] format +# 40| getIdentifier(): [NameRef] format +# 40| getPat(): [IdentPat] res +# 40| getName(): [Name] res +# 40| getTailExpr(): [PathExpr,VariableAccess] res +# 40| getPath(): [Path] res +# 40| getSegment(): [PathSegment] res +# 40| getIdentifier(): [NameRef] res +# 40| getFunction(): [PathExpr] ...::must_use +# 40| getPath(): [Path] ...::must_use +# 40| getQualifier(): [Path] ...::__export +# 40| getQualifier(): [Path] $crate +# 40| getSegment(): [PathSegment] $crate +# 40| getIdentifier(): [NameRef] $crate +# 40| getSegment(): [PathSegment] __export +# 40| getIdentifier(): [NameRef] __export +# 40| getSegment(): [PathSegment] must_use +# 40| getIdentifier(): [NameRef] must_use +# 40| getArg(1): [MethodCallExpr] name.span() +# 40| getArgList(): [ArgList] ArgList +# 40| getIdentifier(): [NameRef] span +# 40| getReceiver(): [PathExpr,VariableAccess] name +# 40| getPath(): [Path] name +# 40| getSegment(): [PathSegment] name +# 40| getIdentifier(): [NameRef] name +# 40| getFunction(): [PathExpr] ...::new +# 40| getPath(): [Path] ...::new +# 40| getQualifier(): [Path] ...::Ident +# 40| getQualifier(): [Path] syn +# 40| getSegment(): [PathSegment] syn +# 40| getIdentifier(): [NameRef] syn +# 40| getSegment(): [PathSegment] Ident +# 40| getIdentifier(): [NameRef] Ident +# 40| getSegment(): [PathSegment] new +# 40| getIdentifier(): [NameRef] new +# 40| getPat(): [IdentPat] const_ident +# 40| getName(): [Name] const_ident +# 41| getTailExpr(): [MethodCallExpr] ... .into() +# 49| getArgList(): [ArgList] ArgList +# 49| getIdentifier(): [NameRef] into +# 41| getReceiver(): [MacroExpr] MacroExpr +# 41| getMacroCall(): [MacroCall] quote!... +# 41| getPath(): [Path] quote +# 41| getSegment(): [PathSegment] quote +# 41| getIdentifier(): [NameRef] quote +# 41| getTokenTree(): [TokenTree] TokenTree +# 42| getMacroCallExpansion(): [BlockExpr] { ... } +# 42| getStmtList(): [StmtList] StmtList +# 41| getStatement(0): [LetStmt] let ... = ... +# 41| getInitializer(): [CallExpr] ...::new(...) +# 41| getArgList(): [ArgList] ArgList +# 41| getFunction(): [PathExpr] ...::new +# 41| getPath(): [Path] ...::new +# 41| getQualifier(): [Path] ...::TokenStream +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] TokenStream +# 41| getIdentifier(): [NameRef] TokenStream +# 41| getSegment(): [PathSegment] new +# 41| getIdentifier(): [NameRef] new +# 41| getPat(): [IdentPat] mut _s +# 41| getName(): [Name] _s +# 42| getStatement(1): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_each_token!... +# 41| getPath(): [Path] ...::quote_each_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_each_token +# 41| getIdentifier(): [NameRef] quote_each_token +# 42| getTokenTree(): [TokenTree] TokenTree +# 42| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getTailExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_tokens_with_context!... +# 41| getPath(): [Path] ...::quote_tokens_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_tokens_with_context +# 41| getIdentifier(): [NameRef] quote_tokens_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 42| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 44| getTailExpr(): [MacroExpr] MacroExpr +# 44| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 44| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getStatement(0): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getStatement(1): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getStatement(2): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getStatement(3): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 42| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getTailExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 42| getTokenTree(): [TokenTree] TokenTree +# 42| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getStatement(0): [ExprStmt] ExprStmt +# 42| getExpr(): [CallExpr] ...::push_ident(...) +# 42| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 42| getArg(1): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] stringify!... +# 41| getPath(): [Path] stringify +# 41| getSegment(): [PathSegment] stringify +# 41| getIdentifier(): [NameRef] stringify +# 42| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [StringLiteralExpr] "const" +# 41| getFunction(): [PathExpr] ...::push_ident +# 41| getPath(): [Path] ...::push_ident +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_ident +# 41| getIdentifier(): [NameRef] push_ident +# 42| getStatement(4): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 42| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getStatement(0): [ExprStmt] ExprStmt +# 42| getExpr(): [CallExpr] ...::to_tokens(...) +# 42| getArgList(): [ArgList] ArgList +# 42| getArg(0): [RefExpr] &const_ident +# 42| getExpr(): [PathExpr,VariableAccess] const_ident +# 42| getPath(): [Path] const_ident +# 42| getSegment(): [PathSegment] const_ident +# 42| getIdentifier(): [NameRef] const_ident +# 41| getArg(1): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 41| getFunction(): [PathExpr] ...::to_tokens +# 41| getPath(): [Path] ...::to_tokens +# 41| getQualifier(): [Path] ...::ToTokens +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] ToTokens +# 41| getIdentifier(): [NameRef] ToTokens +# 41| getSegment(): [PathSegment] to_tokens +# 41| getIdentifier(): [NameRef] to_tokens +# 42| getStatement(5): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getStatement(6): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 42| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getTailExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 42| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 41| getStatement(0): [ExprStmt] ExprStmt +# 41| getExpr(): [CallExpr] ...::push_colon(...) +# 41| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 41| getFunction(): [PathExpr] ...::push_colon +# 41| getPath(): [Path] ...::push_colon +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_colon +# 41| getIdentifier(): [NameRef] push_colon +# 42| getStatement(7): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 42| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getTailExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 42| getTokenTree(): [TokenTree] TokenTree +# 42| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getStatement(0): [ExprStmt] ExprStmt +# 42| getExpr(): [CallExpr] ...::push_ident(...) +# 42| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 42| getArg(1): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] stringify!... +# 41| getPath(): [Path] stringify +# 41| getSegment(): [PathSegment] stringify +# 41| getIdentifier(): [NameRef] stringify +# 42| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [StringLiteralExpr] "u32" +# 41| getFunction(): [PathExpr] ...::push_ident +# 41| getPath(): [Path] ...::push_ident +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_ident +# 41| getIdentifier(): [NameRef] push_ident +# 42| getStatement(8): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 42| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getTailExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 42| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 41| getStatement(0): [ExprStmt] ExprStmt +# 41| getExpr(): [CallExpr] ...::push_eq(...) +# 41| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 41| getFunction(): [PathExpr] ...::push_eq +# 41| getPath(): [Path] ...::push_eq +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_eq +# 41| getIdentifier(): [NameRef] push_eq +# 42| getStatement(9): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 42| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getTailExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 42| getTokenTree(): [TokenTree] TokenTree +# 42| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getStatement(0): [ExprStmt] ExprStmt +# 42| getExpr(): [CallExpr] ...::parse(...) +# 42| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 42| getArg(1): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] stringify!... +# 41| getPath(): [Path] stringify +# 41| getSegment(): [PathSegment] stringify +# 41| getIdentifier(): [NameRef] stringify +# 42| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [StringLiteralExpr] "42" +# 41| getFunction(): [PathExpr] ...::parse +# 41| getPath(): [Path] ...::parse +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] parse +# 41| getIdentifier(): [NameRef] parse +# 42| getStatement(10): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 42| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 42| getTailExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 42| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 41| getStatement(0): [ExprStmt] ExprStmt +# 41| getExpr(): [CallExpr] ...::push_semi(...) +# 41| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 41| getFunction(): [PathExpr] ...::push_semi +# 41| getPath(): [Path] ...::push_semi +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_semi +# 41| getIdentifier(): [NameRef] push_semi +# 42| getStatement(11): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 44| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 44| getTailExpr(): [MacroExpr] MacroExpr +# 44| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 44| getTokenTree(): [TokenTree] TokenTree +# 44| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 44| getStatement(0): [ExprStmt] ExprStmt +# 44| getExpr(): [CallExpr] ...::push_ident(...) +# 44| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 44| getArg(1): [MacroExpr] MacroExpr +# 44| getMacroCall(): [MacroCall] stringify!... +# 41| getPath(): [Path] stringify +# 41| getSegment(): [PathSegment] stringify +# 41| getIdentifier(): [NameRef] stringify +# 44| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [StringLiteralExpr] "impl" +# 41| getFunction(): [PathExpr] ...::push_ident +# 41| getPath(): [Path] ...::push_ident +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_ident +# 41| getIdentifier(): [NameRef] push_ident +# 42| getStatement(12): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 44| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 44| getTailExpr(): [MacroExpr] MacroExpr +# 44| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 44| getTokenTree(): [TokenTree] TokenTree +# 44| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 44| getStatement(0): [ExprStmt] ExprStmt +# 44| getExpr(): [CallExpr] ...::push_ident(...) +# 44| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 44| getArg(1): [MacroExpr] MacroExpr +# 44| getMacroCall(): [MacroCall] stringify!... +# 41| getPath(): [Path] stringify +# 41| getSegment(): [PathSegment] stringify +# 41| getIdentifier(): [NameRef] stringify +# 44| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [StringLiteralExpr] "MyTrait" +# 41| getFunction(): [PathExpr] ...::push_ident +# 41| getPath(): [Path] ...::push_ident +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_ident +# 41| getIdentifier(): [NameRef] push_ident +# 42| getStatement(13): [ExprStmt] ExprStmt +# 42| getExpr(): [MacroExpr] MacroExpr +# 42| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 42| getTokenTree(): [TokenTree] TokenTree +# 44| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 44| getTailExpr(): [MacroExpr] MacroExpr +# 44| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 44| getTokenTree(): [TokenTree] TokenTree +# 44| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 44| getStatement(0): [ExprStmt] ExprStmt +# 44| getExpr(): [CallExpr] ...::push_ident(...) +# 44| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 44| getArg(1): [MacroExpr] MacroExpr +# 44| getMacroCall(): [MacroCall] stringify!... +# 41| getPath(): [Path] stringify +# 41| getSegment(): [PathSegment] stringify +# 41| getIdentifier(): [NameRef] stringify +# 44| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [StringLiteralExpr] "for" +# 41| getFunction(): [PathExpr] ...::push_ident +# 41| getPath(): [Path] ...::push_ident +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_ident +# 41| getIdentifier(): [NameRef] push_ident +# 44| getStatement(14): [ExprStmt] ExprStmt +# 44| getExpr(): [MacroExpr] MacroExpr +# 44| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 44| getTokenTree(): [TokenTree] TokenTree +# 44| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 44| getStatement(0): [ExprStmt] ExprStmt +# 44| getExpr(): [CallExpr] ...::to_tokens(...) +# 44| getArgList(): [ArgList] ArgList +# 44| getArg(0): [RefExpr] &name +# 44| getExpr(): [PathExpr,VariableAccess] name +# 44| getPath(): [Path] name +# 44| getSegment(): [PathSegment] name +# 44| getIdentifier(): [NameRef] name +# 41| getArg(1): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 41| getFunction(): [PathExpr] ...::to_tokens +# 41| getPath(): [Path] ...::to_tokens +# 41| getQualifier(): [Path] ...::ToTokens +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] ToTokens +# 41| getIdentifier(): [NameRef] ToTokens +# 41| getSegment(): [PathSegment] to_tokens +# 41| getIdentifier(): [NameRef] to_tokens +# 44| getStatement(15): [ExprStmt] ExprStmt +# 44| getExpr(): [MacroExpr] MacroExpr +# 44| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 44| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 44| getStatement(16): [ExprStmt] ExprStmt +# 44| getExpr(): [MacroExpr] MacroExpr +# 44| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 44| getTokenTree(): [TokenTree] TokenTree +# 44| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 44| getTailExpr(): [MacroExpr] MacroExpr +# 44| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 44| getTokenTree(): [TokenTree] TokenTree +# 45| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getStatement(0): [ExprStmt] ExprStmt +# 45| getExpr(): [CallExpr] ...::push_group(...) +# 45| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 41| getArg(1): [PathExpr] ...::Brace +# 41| getPath(): [Path] ...::Brace +# 41| getQualifier(): [Path] ...::Delimiter +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] Delimiter +# 41| getIdentifier(): [NameRef] Delimiter +# 41| getSegment(): [PathSegment] Brace +# 41| getIdentifier(): [NameRef] Brace +# 45| getArg(2): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote!... +# 41| getPath(): [Path] ...::quote +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote +# 41| getIdentifier(): [NameRef] quote +# 45| getTokenTree(): [TokenTree] TokenTree +# 45| getMacroCallExpansion(): [BlockExpr] { ... } +# 45| getStmtList(): [StmtList] StmtList +# 41| getStatement(0): [LetStmt] let ... = ... +# 41| getInitializer(): [CallExpr] ...::new(...) +# 41| getArgList(): [ArgList] ArgList +# 41| getFunction(): [PathExpr] ...::new +# 41| getPath(): [Path] ...::new +# 41| getQualifier(): [Path] ...::TokenStream +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] TokenStream +# 41| getIdentifier(): [NameRef] TokenStream +# 41| getSegment(): [PathSegment] new +# 41| getIdentifier(): [NameRef] new +# 41| getPat(): [IdentPat] mut _s +# 41| getName(): [Name] _s +# 45| getStatement(1): [ExprStmt] ExprStmt +# 45| getExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_each_token!... +# 41| getPath(): [Path] ...::quote_each_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_each_token +# 41| getIdentifier(): [NameRef] quote_each_token +# 45| getTokenTree(): [TokenTree] TokenTree +# 45| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getTailExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_tokens_with_context!... +# 41| getPath(): [Path] ...::quote_tokens_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_tokens_with_context +# 41| getIdentifier(): [NameRef] quote_tokens_with_context +# 45| getTokenTree(): [TokenTree] TokenTree +# 45| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getTailExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 45| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getStatement(0): [ExprStmt] ExprStmt +# 45| getExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 45| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getStatement(1): [ExprStmt] ExprStmt +# 45| getExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 45| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getStatement(2): [ExprStmt] ExprStmt +# 45| getExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 45| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getStatement(3): [ExprStmt] ExprStmt +# 45| getExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 45| getTokenTree(): [TokenTree] TokenTree +# 45| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getTailExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 45| getTokenTree(): [TokenTree] TokenTree +# 45| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getStatement(0): [ExprStmt] ExprStmt +# 45| getExpr(): [CallExpr] ...::push_ident(...) +# 45| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 45| getArg(1): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] stringify!... +# 41| getPath(): [Path] stringify +# 41| getSegment(): [PathSegment] stringify +# 41| getIdentifier(): [NameRef] stringify +# 45| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [StringLiteralExpr] "fn" +# 41| getFunction(): [PathExpr] ...::push_ident +# 41| getPath(): [Path] ...::push_ident +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_ident +# 41| getIdentifier(): [NameRef] push_ident +# 45| getStatement(4): [ExprStmt] ExprStmt +# 45| getExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 45| getTokenTree(): [TokenTree] TokenTree +# 45| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getTailExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 45| getTokenTree(): [TokenTree] TokenTree +# 45| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getStatement(0): [ExprStmt] ExprStmt +# 45| getExpr(): [CallExpr] ...::push_ident(...) +# 45| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 45| getArg(1): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] stringify!... +# 41| getPath(): [Path] stringify +# 41| getSegment(): [PathSegment] stringify +# 41| getIdentifier(): [NameRef] stringify +# 45| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [StringLiteralExpr] "my_method" +# 41| getFunction(): [PathExpr] ...::push_ident +# 41| getPath(): [Path] ...::push_ident +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_ident +# 41| getIdentifier(): [NameRef] push_ident +# 45| getStatement(5): [ExprStmt] ExprStmt +# 45| getExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 45| getTokenTree(): [TokenTree] TokenTree +# 45| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getTailExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 45| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 41| getStatement(0): [ExprStmt] ExprStmt +# 41| getExpr(): [CallExpr] ...::push_group(...) +# 41| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 41| getArg(1): [PathExpr] ...::Parenthesis +# 41| getPath(): [Path] ...::Parenthesis +# 41| getQualifier(): [Path] ...::Delimiter +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] Delimiter +# 41| getIdentifier(): [NameRef] Delimiter +# 41| getSegment(): [PathSegment] Parenthesis +# 41| getIdentifier(): [NameRef] Parenthesis +# 41| getArg(2): [MacroExpr] MacroExpr +# 41| getMacroCall(): [MacroCall] ...::quote!... +# 41| getPath(): [Path] ...::quote +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote +# 41| getIdentifier(): [NameRef] quote +# 41| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [CallExpr] ...::new(...) +# 41| getArgList(): [ArgList] ArgList +# 41| getFunction(): [PathExpr] ...::new +# 41| getPath(): [Path] ...::new +# 41| getQualifier(): [Path] ...::TokenStream +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] TokenStream +# 41| getIdentifier(): [NameRef] TokenStream +# 41| getSegment(): [PathSegment] new +# 41| getIdentifier(): [NameRef] new +# 41| getFunction(): [PathExpr] ...::push_group +# 41| getPath(): [Path] ...::push_group +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_group +# 41| getIdentifier(): [NameRef] push_group +# 45| getStatement(6): [ExprStmt] ExprStmt +# 45| getExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 45| getTokenTree(): [TokenTree] TokenTree +# 45| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getTailExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 45| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 41| getStatement(0): [ExprStmt] ExprStmt +# 41| getExpr(): [CallExpr] ...::push_rarrow(...) +# 41| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 41| getFunction(): [PathExpr] ...::push_rarrow +# 41| getPath(): [Path] ...::push_rarrow +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_rarrow +# 41| getIdentifier(): [NameRef] push_rarrow +# 45| getStatement(7): [ExprStmt] ExprStmt +# 45| getExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 45| getTokenTree(): [TokenTree] TokenTree +# 45| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getTailExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 45| getTokenTree(): [TokenTree] TokenTree +# 45| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getStatement(0): [ExprStmt] ExprStmt +# 45| getExpr(): [CallExpr] ...::push_ident(...) +# 45| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 45| getArg(1): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] stringify!... +# 41| getPath(): [Path] stringify +# 41| getSegment(): [PathSegment] stringify +# 41| getIdentifier(): [NameRef] stringify +# 45| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [StringLiteralExpr] "u32" +# 41| getFunction(): [PathExpr] ...::push_ident +# 41| getPath(): [Path] ...::push_ident +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_ident +# 41| getIdentifier(): [NameRef] push_ident +# 45| getStatement(8): [ExprStmt] ExprStmt +# 45| getExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 45| getTokenTree(): [TokenTree] TokenTree +# 45| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getTailExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token!... +# 41| getPath(): [Path] ...::quote_token +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token +# 41| getIdentifier(): [NameRef] quote_token +# 45| getTokenTree(): [TokenTree] TokenTree +# 46| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 46| getStatement(0): [ExprStmt] ExprStmt +# 46| getExpr(): [CallExpr] ...::push_group(...) +# 46| getArgList(): [ArgList] ArgList +# 41| getArg(0): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 41| getArg(1): [PathExpr] ...::Brace +# 41| getPath(): [Path] ...::Brace +# 41| getQualifier(): [Path] ...::Delimiter +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] Delimiter +# 41| getIdentifier(): [NameRef] Delimiter +# 41| getSegment(): [PathSegment] Brace +# 41| getIdentifier(): [NameRef] Brace +# 46| getArg(2): [MacroExpr] MacroExpr +# 46| getMacroCall(): [MacroCall] ...::quote!... +# 41| getPath(): [Path] ...::quote +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote +# 41| getIdentifier(): [NameRef] quote +# 46| getTokenTree(): [TokenTree] TokenTree +# 46| getMacroCallExpansion(): [BlockExpr] { ... } +# 46| getStmtList(): [StmtList] StmtList +# 41| getStatement(0): [LetStmt] let ... = ... +# 41| getInitializer(): [CallExpr] ...::new(...) +# 41| getArgList(): [ArgList] ArgList +# 41| getFunction(): [PathExpr] ...::new +# 41| getPath(): [Path] ...::new +# 41| getQualifier(): [Path] ...::TokenStream +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] TokenStream +# 41| getIdentifier(): [NameRef] TokenStream +# 41| getSegment(): [PathSegment] new +# 41| getIdentifier(): [NameRef] new +# 41| getPat(): [IdentPat] mut _s +# 41| getName(): [Name] _s +# 46| getStatement(1): [ExprStmt] ExprStmt +# 46| getExpr(): [CallExpr] ...::to_tokens(...) +# 46| getArgList(): [ArgList] ArgList +# 46| getArg(0): [RefExpr] &const_ident +# 46| getExpr(): [PathExpr,VariableAccess] const_ident +# 46| getPath(): [Path] const_ident +# 46| getSegment(): [PathSegment] const_ident +# 46| getIdentifier(): [NameRef] const_ident +# 41| getArg(1): [RefExpr] &mut _s +# 41| getExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 41| getFunction(): [PathExpr] ...::to_tokens +# 41| getPath(): [Path] ...::to_tokens +# 41| getQualifier(): [Path] ...::ToTokens +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] ToTokens +# 41| getIdentifier(): [NameRef] ToTokens +# 41| getSegment(): [PathSegment] to_tokens +# 41| getIdentifier(): [NameRef] to_tokens +# 41| getTailExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 41| getFunction(): [PathExpr] ...::push_group +# 41| getPath(): [Path] ...::push_group +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_group +# 41| getIdentifier(): [NameRef] push_group +# 45| getStatement(9): [ExprStmt] ExprStmt +# 45| getExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 45| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 45| getStatement(10): [ExprStmt] ExprStmt +# 45| getExpr(): [MacroExpr] MacroExpr +# 45| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 45| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 41| getTailExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 41| getFunction(): [PathExpr] ...::push_group +# 41| getPath(): [Path] ...::push_group +# 41| getQualifier(): [Path] ...::__private +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] __private +# 41| getIdentifier(): [NameRef] __private +# 41| getSegment(): [PathSegment] push_group +# 41| getIdentifier(): [NameRef] push_group +# 44| getStatement(17): [ExprStmt] ExprStmt +# 44| getExpr(): [MacroExpr] MacroExpr +# 44| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 44| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 44| getStatement(18): [ExprStmt] ExprStmt +# 44| getExpr(): [MacroExpr] MacroExpr +# 44| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 41| getPath(): [Path] ...::quote_token_with_context +# 41| getQualifier(): [Path] $crate +# 41| getSegment(): [PathSegment] $crate +# 41| getIdentifier(): [NameRef] $crate +# 41| getSegment(): [PathSegment] quote_token_with_context +# 41| getIdentifier(): [NameRef] quote_token_with_context +# 44| getTokenTree(): [TokenTree] TokenTree +# 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 41| getTailExpr(): [PathExpr] _s +# 41| getPath(): [Path] _s +# 41| getSegment(): [PathSegment] _s +# 41| getIdentifier(): [NameRef] _s +# 37| getName(): [Name] my_trait_derive +# 37| getRetType(): [RetTypeRepr] RetTypeRepr +# 37| getTypeRepr(): [PathTypeRepr] TokenStream +# 37| getPath(): [Path] TokenStream +# 37| getSegment(): [PathSegment] TokenStream +# 37| getIdentifier(): [NameRef] TokenStream +# 37| getVisibility(): [Visibility] Visibility diff --git a/rust/ql/test/extractor-tests/macro_expansion/PrintAst.qlref b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.qlref similarity index 100% rename from rust/ql/test/extractor-tests/macro_expansion/PrintAst.qlref rename to rust/ql/test/extractor-tests/macro-expansion/PrintAst.qlref diff --git a/rust/ql/test/extractor-tests/macro-expansion/call.rs b/rust/ql/test/extractor-tests/macro-expansion/call.rs new file mode 100644 index 000000000000..974f4b57051b --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/call.rs @@ -0,0 +1,14 @@ +use crate::macro_expansion; + +fn call_some_functions() { + macro_expansion::foo(); + macro_expansion::foo_new(); + macro_expansion::bar_0(); + macro_expansion::bar_1(); + macro_expansion::bar_0_new(); + macro_expansion::bar_1_new(); + macro_expansion::S::bzz_0(); + macro_expansion::S::bzz_1(); + macro_expansion::S::bzz_2(); + macro_expansion::S::x(); +} \ No newline at end of file diff --git a/rust/ql/integration-tests/macro-expansion/calls/src/included.rs b/rust/ql/test/extractor-tests/macro-expansion/included/included.rs similarity index 100% rename from rust/ql/integration-tests/macro-expansion/calls/src/included.rs rename to rust/ql/test/extractor-tests/macro-expansion/included/included.rs diff --git a/rust/ql/test/extractor-tests/macro-expansion/macro_expansion.rs b/rust/ql/test/extractor-tests/macro-expansion/macro_expansion.rs new file mode 100644 index 000000000000..145672528837 --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/macro_expansion.rs @@ -0,0 +1,102 @@ +use proc_macro::{repeat, add_one, erase, MyTrait}; + +#[add_one] +pub fn foo() { + _ = concat!("Hello ", "world!"); + + #[repeat(2)] + fn inner() {} + + inner_0(); + inner_1(); +} + +#[repeat(2)] +#[add_one] +pub fn bar() {} + +#[erase] +pub fn baz() {} + + +macro_rules! hello { + () => { + println!("hello!"); + }; +} + +pub struct S; + +impl S { + #[repeat(3)] + pub fn bzz() { + hello!(); + } +} + +macro_rules! def_x { + () => { + pub fn x() {} + }; +} + +impl S { + def_x!(); // this doesn't expand since 0.0.274 +} + +macro_rules! my_macro { + ($head:expr, $($tail:tt)*) => { format!($head, $($tail)*) }; +} + + +fn test() { + _ = concat!("x", "y"); + + _ = my_macro!( + concat!("<", "{}", ">"), // this doesn't expand since 0.0.274 + "hi", + ); +} + +include!("included/included.rs"); + +#[doc = include_str!("some.txt")] // this doesn't expand since 0.0.274 +fn documented() {} + +macro_rules! my_int { + () => { i32 }; +} + +fn answer() -> my_int!() { // this didn't expand in 0.0.274..0.0.287 + let a: my_int!() = 42; // this is fine + a as my_int!() // this is fine too +} + + +type MyInt = my_int!(); // this didn't expand in 0.0.274..0.0.287 + +struct MyStruct { + field: my_int!(), // this didn't expand in 0.0.274..0.0.287 +} + + +#[derive(Debug)] +struct MyDerive { + field: usize, +} + +#[derive(PartialEq, Eq)] +enum MyDeriveEnum { + Variant1, + Variant2, +} + +trait MyTrait { + fn my_method() -> u32; +} + +#[derive(MyTrait)] +union MyDeriveUnion { + field1: usize, + field2: f64, +} \ No newline at end of file diff --git a/rust/ql/test/extractor-tests/macro-expansion/proc_macro.rs b/rust/ql/test/extractor-tests/macro-expansion/proc_macro.rs new file mode 100644 index 000000000000..05c6f0b09a6a --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/proc_macro.rs @@ -0,0 +1,51 @@ +use proc_macro::TokenStream; +use quote::quote; + +#[proc_macro_attribute] +pub fn repeat(attr: TokenStream, item: TokenStream) -> TokenStream { + let number = syn::parse_macro_input!(attr as syn::LitInt).base10_parse::().unwrap(); + let ast = syn::parse_macro_input!(item as syn::ItemFn); + let items = (0..number) + .map(|i| { + let mut new_ast = ast.clone(); + new_ast.sig.ident = syn::Ident::new(&format!("{}_{}", ast.sig.ident, i), ast.sig.ident.span()); + new_ast + }) + .collect::>(); + quote! { + #(#items)* + }.into() +} + +#[proc_macro_attribute] +pub fn add_one(_attr: TokenStream, item: TokenStream) -> TokenStream { + let ast = syn::parse_macro_input!(item as syn::ItemFn); + let mut new_ast = ast.clone(); + new_ast.sig.ident = syn::Ident::new(&format!("{}_new", ast.sig.ident), ast.sig.ident.span()); + quote! { + #ast + #new_ast + }.into() +} + +#[proc_macro_attribute] +pub fn erase(_attr: TokenStream, _item: TokenStream) -> TokenStream { + TokenStream::new() +} + +#[proc_macro_derive(MyTrait)] +pub fn my_trait_derive(input: TokenStream) -> TokenStream { + let ast = syn::parse_macro_input!(input as syn::DeriveInput); + let name = &ast.ident; + let const_ident = syn::Ident::new(&format!("CONST_{}", name), name.span()); + quote! { + const #const_ident: u32 = 42; + + impl MyTrait for #name { + fn my_method() -> u32 { + #const_ident + } + } + }.into() +} + diff --git a/rust/ql/integration-tests/macro-expansion/calls/src/some.txt b/rust/ql/test/extractor-tests/macro-expansion/some.txt similarity index 100% rename from rust/ql/integration-tests/macro-expansion/calls/src/some.txt rename to rust/ql/test/extractor-tests/macro-expansion/some.txt diff --git a/rust/ql/test/extractor-tests/macro-expansion/test.expected b/rust/ql/test/extractor-tests/macro-expansion/test.expected new file mode 100644 index 000000000000..ad2cfe5a9b83 --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/test.expected @@ -0,0 +1,55 @@ +attribute_macros +| macro_expansion.rs:3:1:12:1 | fn foo | 0 | macro_expansion.rs:4:1:11:14 | fn foo | +| macro_expansion.rs:3:1:12:1 | fn foo | 1 | macro_expansion.rs:4:1:11:14 | fn foo_new | +| macro_expansion.rs:7:5:8:16 | fn inner | 0 | macro_expansion.rs:8:5:8:16 | fn inner_0 | +| macro_expansion.rs:7:5:8:16 | fn inner | 0 | macro_expansion.rs:8:5:8:16 | fn inner_0 | +| macro_expansion.rs:7:5:8:16 | fn inner | 1 | macro_expansion.rs:8:5:8:16 | fn inner_1 | +| macro_expansion.rs:7:5:8:16 | fn inner | 1 | macro_expansion.rs:8:5:8:16 | fn inner_1 | +| macro_expansion.rs:14:1:16:15 | fn bar | 0 | macro_expansion.rs:15:1:16:14 | fn bar_0 | +| macro_expansion.rs:14:1:16:15 | fn bar | 1 | macro_expansion.rs:15:1:16:14 | fn bar_1 | +| macro_expansion.rs:15:1:16:14 | fn bar_0 | 0 | macro_expansion.rs:16:1:16:14 | fn bar_0 | +| macro_expansion.rs:15:1:16:14 | fn bar_0 | 1 | macro_expansion.rs:16:1:16:14 | fn bar_0_new | +| macro_expansion.rs:15:1:16:14 | fn bar_1 | 0 | macro_expansion.rs:16:1:16:14 | fn bar_1 | +| macro_expansion.rs:15:1:16:14 | fn bar_1 | 1 | macro_expansion.rs:16:1:16:14 | fn bar_1_new | +| macro_expansion.rs:31:5:34:5 | fn bzz | 0 | macro_expansion.rs:32:5:33:17 | fn bzz_0 | +| macro_expansion.rs:31:5:34:5 | fn bzz | 1 | macro_expansion.rs:32:5:33:17 | fn bzz_1 | +| macro_expansion.rs:31:5:34:5 | fn bzz | 2 | macro_expansion.rs:32:5:33:17 | fn bzz_2 | +derive_macros +| macro_expansion.rs:83:1:86:1 | struct MyDerive | 0 | 0 | macro_expansion.rs:84:8:85:9 | impl ...::Debug for MyDerive::<...> { ... } | +| macro_expansion.rs:88:1:92:1 | enum MyDeriveEnum | 0 | 0 | macro_expansion.rs:89:6:91:12 | impl ...::PartialEq for MyDeriveEnum::<...> { ... } | +| macro_expansion.rs:88:1:92:1 | enum MyDeriveEnum | 1 | 0 | macro_expansion.rs:89:6:89:17 | impl ...::Eq for MyDeriveEnum::<...> { ... } | +| macro_expansion.rs:98:1:102:1 | union MyDeriveUnion | 0 | 0 | macro_expansion.rs:99:7:99:19 | Const | +| macro_expansion.rs:98:1:102:1 | union MyDeriveUnion | 0 | 1 | macro_expansion.rs:99:7:99:19 | impl MyTrait for MyDeriveUnion { ... } | +macro_calls +| macro_expansion.rs:5:9:5:34 | concat!... | macro_expansion.rs:5:17:5:34 | "Hello world!" | +| macro_expansion.rs:5:9:5:34 | concat!... | macro_expansion.rs:5:17:5:34 | "Hello world!" | +| macro_expansion.rs:31:5:31:16 | ...::format_args_nl!... | macro_expansion.rs:31:5:31:16 | FormatArgsExpr | +| macro_expansion.rs:31:5:31:16 | ...::format_args_nl!... | macro_expansion.rs:31:5:31:16 | FormatArgsExpr | +| macro_expansion.rs:31:5:31:16 | ...::format_args_nl!... | macro_expansion.rs:31:5:31:16 | FormatArgsExpr | +| macro_expansion.rs:31:5:31:16 | println!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr | +| macro_expansion.rs:31:5:31:16 | println!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr | +| macro_expansion.rs:31:5:31:16 | println!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr | +| macro_expansion.rs:33:9:33:15 | hello!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr | +| macro_expansion.rs:33:9:33:15 | hello!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr | +| macro_expansion.rs:33:9:33:15 | hello!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr | +| macro_expansion.rs:44:5:44:13 | def_x!... | macro_expansion.rs:44:5:44:13 | MacroItems | +| macro_expansion.rs:53:9:53:25 | concat!... | macro_expansion.rs:53:17:53:24 | "xy" | +| macro_expansion.rs:55:9:58:5 | my_macro!... | macro_expansion.rs:56:9:57:13 | MacroExpr | +| macro_expansion.rs:56:9:57:13 | ...::format_args!... | macro_expansion.rs:56:9:57:13 | FormatArgsExpr | +| macro_expansion.rs:56:9:57:13 | format!... | macro_expansion.rs:56:9:57:13 | ...::must_use(...) | +| macro_expansion.rs:61:1:61:33 | concat!... | macro_expansion.rs:61:1:61:33 | "Hello world!" | +| macro_expansion.rs:61:1:61:33 | include!... | macro_expansion.rs:61:1:61:33 | MacroItems | +| macro_expansion.rs:70:16:70:24 | my_int!... | macro_expansion.rs:70:16:70:24 | i32 | +| macro_expansion.rs:71:12:71:20 | my_int!... | macro_expansion.rs:71:12:71:20 | i32 | +| macro_expansion.rs:72:10:72:18 | my_int!... | macro_expansion.rs:72:10:72:18 | i32 | +| macro_expansion.rs:76:14:76:22 | my_int!... | macro_expansion.rs:76:14:76:22 | i32 | +| macro_expansion.rs:79:12:79:20 | my_int!... | macro_expansion.rs:79:12:79:20 | i32 | +unexpanded_macro_calls +| included/included.rs:2:9:2:39 | concat!... | +| macro_expansion.rs:5:9:5:35 | concat!... | +| macro_expansion.rs:33:9:33:16 | hello!... | +| macro_expansion.rs:56:9:56:31 | concat!... | +| macro_expansion.rs:63:9:63:32 | include_str!... | +warnings +| included/included.rs:1:1:1:1 | semantic analyzer unavailable (not loaded as its own module, probably included by `!include`) | +| macro_expansion.rs:56:9:56:31 | macro expansion failed: could not resolve macro 'concat' | diff --git a/rust/ql/test/extractor-tests/macro-expansion/test.ql b/rust/ql/test/extractor-tests/macro-expansion/test.ql new file mode 100644 index 000000000000..7d97ea6a10f0 --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/test.ql @@ -0,0 +1,22 @@ +import rust +import codeql.rust.Diagnostics + +query predicate attribute_macros(Item i, int index, Item expanded) { + i.fromSource() and expanded = i.getAttributeMacroExpansion().getItem(index) +} + +query predicate derive_macros(Adt i, int index, int subIndex, Item expanded) { + i.fromSource() and expanded = i.getDeriveMacroExpansion(index).getItem(subIndex) +} + +query predicate macro_calls(MacroCall c, AstNode expansion) { + c.fromSource() and + not c.getLocation().getFile().getAbsolutePath().matches("%proc_macro.rs") and + expansion = c.getMacroCallExpansion() +} + +query predicate unexpanded_macro_calls(MacroCall c) { + c.fromSource() and not c.hasMacroCallExpansion() +} + +query predicate warnings(ExtractionWarning w) { any() } diff --git a/rust/ql/test/extractor-tests/macro_expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro_expansion/PrintAst.expected deleted file mode 100644 index 3881faafeac4..000000000000 --- a/rust/ql/test/extractor-tests/macro_expansion/PrintAst.expected +++ /dev/null @@ -1,155 +0,0 @@ -lib.rs: -# 1| [SourceFile] SourceFile -# 1| getItem(0): [Module] mod macro_expansion -# 1| getName(): [Name] macro_expansion -macro_expansion.rs: -# 1| [SourceFile] SourceFile -# 1| getItem(0): [Function] fn foo -# 2| getAttributeMacroExpansion(): [MacroItems] MacroItems -# 2| getItem(0): [Function] fn foo -# 1| getParamList(): [ParamList] ParamList -# 1| getAbi(): [Abi] Abi -# 2| getBody(): [BlockExpr] { ... } -# 2| getStmtList(): [StmtList] StmtList -# 2| getName(): [Name] foo -# 2| getItem(1): [Static] Static -# 1| getAttr(0): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] used -# 1| getSegment(): [PathSegment] used -# 1| getIdentifier(): [NameRef] used -# 1| getAttr(1): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] allow -# 1| getSegment(): [PathSegment] allow -# 1| getIdentifier(): [NameRef] allow -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(2): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] doc -# 1| getSegment(): [PathSegment] doc -# 1| getIdentifier(): [NameRef] doc -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(3): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(4): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(5): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(6): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(7): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(8): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(9): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(10): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(11): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 2| getBody(): [BlockExpr] { ... } -# 2| getStmtList(): [StmtList] StmtList -# 2| getStatement(0): [Function] fn foo___rust_ctor___ctor -# 1| getParamList(): [ParamList] ParamList -# 1| getAttr(0): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] allow -# 1| getSegment(): [PathSegment] allow -# 1| getIdentifier(): [NameRef] allow -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(1): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAbi(): [Abi] Abi -# 2| getBody(): [BlockExpr] { ... } -# 2| getStmtList(): [StmtList] StmtList -# 2| getStatement(0): [ExprStmt] ExprStmt -# 2| getExpr(): [CallExpr] foo(...) -# 1| getArgList(): [ArgList] ArgList -# 2| getFunction(): [PathExpr] foo -# 2| getPath(): [Path] foo -# 2| getSegment(): [PathSegment] foo -# 2| getIdentifier(): [NameRef] foo -# 1| getTailExpr(): [IntegerLiteralExpr] 0 -# 1| getName(): [Name] foo___rust_ctor___ctor -# 1| getRetType(): [RetTypeRepr] RetTypeRepr -# 1| getTypeRepr(): [PathTypeRepr] usize -# 1| getPath(): [Path] usize -# 1| getSegment(): [PathSegment] usize -# 1| getIdentifier(): [NameRef] usize -# 1| getTailExpr(): [PathExpr] foo___rust_ctor___ctor -# 1| getPath(): [Path] foo___rust_ctor___ctor -# 1| getSegment(): [PathSegment] foo___rust_ctor___ctor -# 1| getIdentifier(): [NameRef] foo___rust_ctor___ctor -# 1| getName(): [Name] foo___rust_ctor___ctor -# 1| getTypeRepr(): [FnPtrTypeRepr] FnPtrTypeRepr -# 1| getAbi(): [Abi] Abi -# 1| getParamList(): [ParamList] ParamList -# 1| getRetType(): [RetTypeRepr] RetTypeRepr -# 1| getTypeRepr(): [PathTypeRepr] usize -# 1| getPath(): [Path] usize -# 1| getSegment(): [PathSegment] usize -# 1| getIdentifier(): [NameRef] usize -# 2| getParamList(): [ParamList] ParamList -# 1| getAttr(0): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] ...::ctor -# 1| getQualifier(): [Path] ctor -# 1| getSegment(): [PathSegment] ctor -# 1| getIdentifier(): [NameRef] ctor -# 1| getSegment(): [PathSegment] ctor -# 1| getIdentifier(): [NameRef] ctor -# 2| getBody(): [BlockExpr] { ... } -# 2| getStmtList(): [StmtList] StmtList -# 2| getName(): [Name] foo -# 4| getItem(1): [Function] fn bar -# 5| getParamList(): [ParamList] ParamList -# 4| getAttr(0): [Attr] Attr -# 4| getMeta(): [Meta] Meta -# 4| getPath(): [Path] cfg -# 4| getSegment(): [PathSegment] cfg -# 4| getIdentifier(): [NameRef] cfg -# 4| getTokenTree(): [TokenTree] TokenTree -# 5| getBody(): [BlockExpr] { ... } -# 5| getStmtList(): [StmtList] StmtList -# 5| getName(): [Name] bar diff --git a/rust/ql/test/extractor-tests/macro_expansion/macro_expansion.rs b/rust/ql/test/extractor-tests/macro_expansion/macro_expansion.rs deleted file mode 100644 index 1825f1056e35..000000000000 --- a/rust/ql/test/extractor-tests/macro_expansion/macro_expansion.rs +++ /dev/null @@ -1,8 +0,0 @@ -#[ctor::ctor] -fn foo() {} - -#[cfg(any(linux, not(linux)))] -fn bar() {} - -#[cfg(all(linux, not(linux)))] -fn baz() {} diff --git a/rust/ql/test/extractor-tests/macro_expansion/options.yml b/rust/ql/test/extractor-tests/macro_expansion/options.yml deleted file mode 100644 index 07ec8d1b4eb3..000000000000 --- a/rust/ql/test/extractor-tests/macro_expansion/options.yml +++ /dev/null @@ -1,2 +0,0 @@ -qltest_dependencies: - - ctor = { version = "0.2.9" } diff --git a/rust/ql/test/extractor-tests/macro_expansion/test.expected b/rust/ql/test/extractor-tests/macro_expansion/test.expected deleted file mode 100644 index 26a02ec82527..000000000000 --- a/rust/ql/test/extractor-tests/macro_expansion/test.expected +++ /dev/null @@ -1,2 +0,0 @@ -| macro_expansion.rs:1:1:2:11 | fn foo | 0 | macro_expansion.rs:2:4:2:10 | fn foo | -| macro_expansion.rs:1:1:2:11 | fn foo | 1 | macro_expansion.rs:2:4:2:6 | Static | diff --git a/rust/ql/test/extractor-tests/macro_expansion/test.ql b/rust/ql/test/extractor-tests/macro_expansion/test.ql deleted file mode 100644 index 17bc7d47b1d6..000000000000 --- a/rust/ql/test/extractor-tests/macro_expansion/test.ql +++ /dev/null @@ -1,6 +0,0 @@ -import rust -import TestUtils - -from Item i, MacroItems items, int index, Item expanded -where toBeTested(i) and i.getAttributeMacroExpansion() = items and items.getItem(index) = expanded -select i, index, expanded diff --git a/rust/ql/test/extractor-tests/utf8/Cargo.lock b/rust/ql/test/extractor-tests/utf8/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/extractor-tests/utf8/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/controlflow/Cargo.lock b/rust/ql/test/library-tests/controlflow/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/controlflow/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/barrier/Cargo.lock b/rust/ql/test/library-tests/dataflow/barrier/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/barrier/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/closures/Cargo.lock b/rust/ql/test/library-tests/dataflow/closures/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/closures/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/global/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/global/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..85ca3c35e7cd --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/global/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,2 @@ +multipleCallTargets +| main.rs:272:14:272:29 | ...::deref(...) | diff --git a/rust/ql/test/library-tests/dataflow/global/Cargo.lock b/rust/ql/test/library-tests/dataflow/global/Cargo.lock new file mode 100644 index 000000000000..bda8d89f17b7 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/global/Cargo.lock @@ -0,0 +1,158 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "futures", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" diff --git a/rust/ql/test/library-tests/dataflow/global/inline-flow.expected b/rust/ql/test/library-tests/dataflow/global/inline-flow.expected index c64956c59a03..da5840528f5c 100644 --- a/rust/ql/test/library-tests/dataflow/global/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/global/inline-flow.expected @@ -19,106 +19,154 @@ edges | main.rs:38:23:38:31 | source(...) | main.rs:38:6:38:11 | [post] &mut a [&ref, MyStruct] | provenance | | | main.rs:39:10:39:10 | a [MyStruct] | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | provenance | | | main.rs:39:10:39:10 | a [MyStruct] | main.rs:39:10:39:21 | a.get_data() | provenance | | -| main.rs:44:12:44:17 | [post] &mut a [&ref, MyStruct] | main.rs:44:17:44:17 | [post] a [MyStruct] | provenance | | -| main.rs:44:17:44:17 | [post] a [MyStruct] | main.rs:45:10:45:10 | a [MyStruct] | provenance | | -| main.rs:44:30:44:38 | source(...) | main.rs:26:28:26:33 | ...: i64 | provenance | | -| main.rs:44:30:44:38 | source(...) | main.rs:44:12:44:17 | [post] &mut a [&ref, MyStruct] | provenance | | -| main.rs:45:10:45:10 | a [MyStruct] | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | provenance | | -| main.rs:45:10:45:10 | a [MyStruct] | main.rs:45:10:45:21 | a.get_data() | provenance | | -| main.rs:48:12:48:17 | ...: i64 | main.rs:49:10:49:10 | n | provenance | | -| main.rs:53:9:53:9 | a | main.rs:54:13:54:13 | a | provenance | | -| main.rs:53:13:53:21 | source(...) | main.rs:53:9:53:9 | a | provenance | | -| main.rs:54:13:54:13 | a | main.rs:48:12:48:17 | ...: i64 | provenance | | -| main.rs:57:17:57:22 | ...: i64 | main.rs:57:32:59:1 | { ... } | provenance | | -| main.rs:62:9:62:9 | a | main.rs:63:26:63:26 | a | provenance | | -| main.rs:62:13:62:21 | source(...) | main.rs:62:9:62:9 | a | provenance | | -| main.rs:63:9:63:9 | b | main.rs:64:10:64:10 | b | provenance | | -| main.rs:63:13:63:27 | pass_through(...) | main.rs:63:9:63:9 | b | provenance | | -| main.rs:63:26:63:26 | a | main.rs:57:17:57:22 | ...: i64 | provenance | | -| main.rs:63:26:63:26 | a | main.rs:63:13:63:27 | pass_through(...) | provenance | | -| main.rs:68:9:68:9 | a | main.rs:72:10:72:10 | a | provenance | | -| main.rs:68:13:71:6 | pass_through(...) | main.rs:68:9:68:9 | a | provenance | | -| main.rs:68:26:71:5 | { ... } | main.rs:57:17:57:22 | ...: i64 | provenance | | -| main.rs:68:26:71:5 | { ... } | main.rs:68:13:71:6 | pass_through(...) | provenance | | -| main.rs:70:9:70:18 | source(...) | main.rs:68:26:71:5 | { ... } | provenance | | -| main.rs:76:9:76:9 | a | main.rs:82:26:82:26 | a | provenance | | -| main.rs:76:13:76:22 | source(...) | main.rs:76:9:76:9 | a | provenance | | -| main.rs:78:21:78:26 | ...: i64 | main.rs:78:36:80:5 | { ... } | provenance | | -| main.rs:82:9:82:9 | b | main.rs:83:10:83:10 | b | provenance | | -| main.rs:82:13:82:27 | pass_through(...) | main.rs:82:9:82:9 | b | provenance | | -| main.rs:82:26:82:26 | a | main.rs:78:21:78:26 | ...: i64 | provenance | | -| main.rs:82:26:82:26 | a | main.rs:82:13:82:27 | pass_through(...) | provenance | | -| main.rs:94:22:94:27 | ...: i64 | main.rs:95:14:95:14 | n | provenance | | -| main.rs:98:30:104:5 | { ... } | main.rs:117:13:117:25 | mn.get_data() | provenance | | -| main.rs:102:13:102:21 | source(...) | main.rs:98:30:104:5 | { ... } | provenance | | -| main.rs:106:27:106:32 | ...: i64 | main.rs:106:42:112:5 | { ... } | provenance | | -| main.rs:117:9:117:9 | a | main.rs:118:10:118:10 | a | provenance | | -| main.rs:117:13:117:25 | mn.get_data() | main.rs:117:9:117:9 | a | provenance | | -| main.rs:123:9:123:9 | a | main.rs:124:16:124:16 | a | provenance | | -| main.rs:123:13:123:21 | source(...) | main.rs:123:9:123:9 | a | provenance | | -| main.rs:124:16:124:16 | a | main.rs:94:22:94:27 | ...: i64 | provenance | | -| main.rs:129:9:129:9 | a | main.rs:130:29:130:29 | a | provenance | | -| main.rs:129:13:129:21 | source(...) | main.rs:129:9:129:9 | a | provenance | | -| main.rs:130:9:130:9 | b | main.rs:131:10:131:10 | b | provenance | | -| main.rs:130:13:130:30 | mn.data_through(...) | main.rs:130:9:130:9 | b | provenance | | -| main.rs:130:29:130:29 | a | main.rs:106:27:106:32 | ...: i64 | provenance | | -| main.rs:130:29:130:29 | a | main.rs:130:13:130:30 | mn.data_through(...) | provenance | | -| main.rs:136:9:136:9 | a | main.rs:137:25:137:25 | a | provenance | | -| main.rs:136:13:136:21 | source(...) | main.rs:136:9:136:9 | a | provenance | | -| main.rs:137:25:137:25 | a | main.rs:94:22:94:27 | ...: i64 | provenance | | -| main.rs:142:9:142:9 | a | main.rs:143:38:143:38 | a | provenance | | -| main.rs:142:13:142:22 | source(...) | main.rs:142:9:142:9 | a | provenance | | -| main.rs:143:9:143:9 | b | main.rs:144:10:144:10 | b | provenance | | -| main.rs:143:13:143:39 | ...::data_through(...) | main.rs:143:9:143:9 | b | provenance | | -| main.rs:143:38:143:38 | a | main.rs:106:27:106:32 | ...: i64 | provenance | | -| main.rs:143:38:143:38 | a | main.rs:143:13:143:39 | ...::data_through(...) | provenance | | -| main.rs:155:12:155:17 | ...: i64 | main.rs:156:24:156:24 | n | provenance | | -| main.rs:156:9:156:26 | MyInt {...} [MyInt] | main.rs:155:28:157:5 | { ... } [MyInt] | provenance | | -| main.rs:156:24:156:24 | n | main.rs:156:9:156:26 | MyInt {...} [MyInt] | provenance | | -| main.rs:161:9:161:9 | n [MyInt] | main.rs:162:9:162:26 | MyInt {...} [MyInt] | provenance | | -| main.rs:161:13:161:34 | ...::new(...) [MyInt] | main.rs:161:9:161:9 | n [MyInt] | provenance | | -| main.rs:161:24:161:33 | source(...) | main.rs:155:12:155:17 | ...: i64 | provenance | | -| main.rs:161:24:161:33 | source(...) | main.rs:161:13:161:34 | ...::new(...) [MyInt] | provenance | | -| main.rs:162:9:162:26 | MyInt {...} [MyInt] | main.rs:162:24:162:24 | m | provenance | | -| main.rs:162:24:162:24 | m | main.rs:163:10:163:10 | m | provenance | | -| main.rs:169:12:169:15 | SelfParam [MyInt] | main.rs:171:24:171:27 | self [MyInt] | provenance | | -| main.rs:171:9:171:35 | MyInt {...} [MyInt] | main.rs:169:42:172:5 | { ... } [MyInt] | provenance | | -| main.rs:171:24:171:27 | self [MyInt] | main.rs:171:24:171:33 | self.value | provenance | | -| main.rs:171:24:171:33 | self.value | main.rs:171:9:171:35 | MyInt {...} [MyInt] | provenance | | -| main.rs:186:9:186:9 | a [MyInt] | main.rs:169:12:169:15 | SelfParam [MyInt] | provenance | | -| main.rs:186:9:186:9 | a [MyInt] | main.rs:188:13:188:20 | a.add(...) [MyInt] | provenance | | -| main.rs:186:13:186:38 | MyInt {...} [MyInt] | main.rs:186:9:186:9 | a [MyInt] | provenance | | -| main.rs:186:28:186:36 | source(...) | main.rs:186:13:186:38 | MyInt {...} [MyInt] | provenance | | -| main.rs:188:9:188:9 | d [MyInt] | main.rs:189:10:189:10 | d [MyInt] | provenance | | -| main.rs:188:13:188:20 | a.add(...) [MyInt] | main.rs:188:9:188:9 | d [MyInt] | provenance | | -| main.rs:189:10:189:10 | d [MyInt] | main.rs:189:10:189:16 | d.value | provenance | | -| main.rs:201:18:201:21 | SelfParam [MyInt] | main.rs:201:48:203:5 | { ... } [MyInt] | provenance | | -| main.rs:205:26:205:37 | ...: MyInt [MyInt] | main.rs:205:49:207:5 | { ... } [MyInt] | provenance | | -| main.rs:211:9:211:9 | a [MyInt] | main.rs:213:49:213:49 | a [MyInt] | provenance | | -| main.rs:211:13:211:38 | MyInt {...} [MyInt] | main.rs:211:9:211:9 | a [MyInt] | provenance | | -| main.rs:211:28:211:36 | source(...) | main.rs:211:13:211:38 | MyInt {...} [MyInt] | provenance | | -| main.rs:213:9:213:26 | MyInt {...} [MyInt] | main.rs:213:24:213:24 | c | provenance | | -| main.rs:213:24:213:24 | c | main.rs:214:10:214:10 | c | provenance | | -| main.rs:213:30:213:53 | ...::take_self(...) [MyInt] | main.rs:213:9:213:26 | MyInt {...} [MyInt] | provenance | | -| main.rs:213:49:213:49 | a [MyInt] | main.rs:201:18:201:21 | SelfParam [MyInt] | provenance | | -| main.rs:213:49:213:49 | a [MyInt] | main.rs:213:30:213:53 | ...::take_self(...) [MyInt] | provenance | | -| main.rs:217:9:217:9 | b [MyInt] | main.rs:218:54:218:54 | b [MyInt] | provenance | | -| main.rs:217:13:217:39 | MyInt {...} [MyInt] | main.rs:217:9:217:9 | b [MyInt] | provenance | | -| main.rs:217:28:217:37 | source(...) | main.rs:217:13:217:39 | MyInt {...} [MyInt] | provenance | | -| main.rs:218:9:218:26 | MyInt {...} [MyInt] | main.rs:218:24:218:24 | c | provenance | | -| main.rs:218:24:218:24 | c | main.rs:219:10:219:10 | c | provenance | | -| main.rs:218:30:218:55 | ...::take_second(...) [MyInt] | main.rs:218:9:218:26 | MyInt {...} [MyInt] | provenance | | -| main.rs:218:54:218:54 | b [MyInt] | main.rs:205:26:205:37 | ...: MyInt [MyInt] | provenance | | -| main.rs:218:54:218:54 | b [MyInt] | main.rs:218:30:218:55 | ...::take_second(...) [MyInt] | provenance | | -| main.rs:227:32:231:1 | { ... } | main.rs:246:41:246:54 | async_source(...) | provenance | | -| main.rs:228:9:228:9 | a | main.rs:227:32:231:1 | { ... } | provenance | | -| main.rs:228:9:228:9 | a | main.rs:229:10:229:10 | a | provenance | | -| main.rs:228:13:228:21 | source(...) | main.rs:228:9:228:9 | a | provenance | | -| main.rs:238:13:238:13 | c | main.rs:239:14:239:14 | c | provenance | | -| main.rs:238:17:238:25 | source(...) | main.rs:238:13:238:13 | c | provenance | | -| main.rs:246:9:246:9 | a | main.rs:247:10:247:10 | a | provenance | | -| main.rs:246:13:246:55 | ...::block_on(...) | main.rs:246:9:246:9 | a | provenance | | -| main.rs:246:41:246:54 | async_source(...) | main.rs:246:13:246:55 | ...::block_on(...) | provenance | MaD:1 | +| main.rs:46:9:46:14 | [post] &mut a [&ref, MyStruct] | main.rs:46:14:46:14 | [post] a [MyStruct] | provenance | | +| main.rs:46:14:46:14 | [post] a [MyStruct] | main.rs:49:10:49:10 | a [MyStruct] | provenance | | +| main.rs:48:15:48:23 | source(...) | main.rs:26:28:26:33 | ...: i64 | provenance | | +| main.rs:48:15:48:23 | source(...) | main.rs:46:9:46:14 | [post] &mut a [&ref, MyStruct] | provenance | | +| main.rs:49:10:49:10 | a [MyStruct] | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | provenance | | +| main.rs:49:10:49:10 | a [MyStruct] | main.rs:49:10:49:21 | a.get_data() | provenance | | +| main.rs:52:12:52:17 | ...: i64 | main.rs:53:10:53:10 | n | provenance | | +| main.rs:57:9:57:9 | a | main.rs:58:13:58:13 | a | provenance | | +| main.rs:57:13:57:21 | source(...) | main.rs:57:9:57:9 | a | provenance | | +| main.rs:58:13:58:13 | a | main.rs:52:12:52:17 | ...: i64 | provenance | | +| main.rs:61:17:61:22 | ...: i64 | main.rs:61:32:63:1 | { ... } | provenance | | +| main.rs:66:9:66:9 | a | main.rs:67:26:67:26 | a | provenance | | +| main.rs:66:13:66:21 | source(...) | main.rs:66:9:66:9 | a | provenance | | +| main.rs:67:9:67:9 | b | main.rs:68:10:68:10 | b | provenance | | +| main.rs:67:13:67:27 | pass_through(...) | main.rs:67:9:67:9 | b | provenance | | +| main.rs:67:26:67:26 | a | main.rs:61:17:61:22 | ...: i64 | provenance | | +| main.rs:67:26:67:26 | a | main.rs:67:13:67:27 | pass_through(...) | provenance | | +| main.rs:72:9:72:9 | a | main.rs:76:10:76:10 | a | provenance | | +| main.rs:72:13:75:6 | pass_through(...) | main.rs:72:9:72:9 | a | provenance | | +| main.rs:72:26:75:5 | { ... } | main.rs:61:17:61:22 | ...: i64 | provenance | | +| main.rs:72:26:75:5 | { ... } | main.rs:72:13:75:6 | pass_through(...) | provenance | | +| main.rs:74:9:74:18 | source(...) | main.rs:72:26:75:5 | { ... } | provenance | | +| main.rs:80:9:80:9 | a | main.rs:86:26:86:26 | a | provenance | | +| main.rs:80:13:80:22 | source(...) | main.rs:80:9:80:9 | a | provenance | | +| main.rs:82:21:82:26 | ...: i64 | main.rs:82:36:84:5 | { ... } | provenance | | +| main.rs:86:9:86:9 | b | main.rs:87:10:87:10 | b | provenance | | +| main.rs:86:13:86:27 | pass_through(...) | main.rs:86:9:86:9 | b | provenance | | +| main.rs:86:26:86:26 | a | main.rs:82:21:82:26 | ...: i64 | provenance | | +| main.rs:86:26:86:26 | a | main.rs:86:13:86:27 | pass_through(...) | provenance | | +| main.rs:104:22:104:27 | ...: i64 | main.rs:105:14:105:14 | n | provenance | | +| main.rs:108:30:110:5 | { ... } | main.rs:138:13:138:25 | mn.get_data() | provenance | | +| main.rs:109:35:109:43 | source(...) | main.rs:108:30:110:5 | { ... } | provenance | | +| main.rs:112:27:112:32 | ...: i64 | main.rs:112:42:114:5 | { ... } | provenance | | +| main.rs:118:28:118:33 | ...: i64 | main.rs:119:14:119:14 | n | provenance | | +| main.rs:122:36:124:5 | { ... } | main.rs:132:13:132:30 | x.get_data_trait() | provenance | | +| main.rs:122:36:124:5 | { ... } | main.rs:142:13:142:31 | mn.get_data_trait() | provenance | | +| main.rs:123:35:123:44 | source(...) | main.rs:122:36:124:5 | { ... } | provenance | | +| main.rs:126:33:126:38 | ...: i64 | main.rs:126:48:128:5 | { ... } | provenance | | +| main.rs:132:9:132:9 | a | main.rs:133:10:133:10 | a | provenance | | +| main.rs:132:13:132:30 | x.get_data_trait() | main.rs:132:9:132:9 | a | provenance | | +| main.rs:138:9:138:9 | a | main.rs:139:10:139:10 | a | provenance | | +| main.rs:138:13:138:25 | mn.get_data() | main.rs:138:9:138:9 | a | provenance | | +| main.rs:142:9:142:9 | a | main.rs:143:10:143:10 | a | provenance | | +| main.rs:142:13:142:31 | mn.get_data_trait() | main.rs:142:9:142:9 | a | provenance | | +| main.rs:149:9:149:9 | a | main.rs:150:21:150:21 | a | provenance | | +| main.rs:149:13:149:22 | source(...) | main.rs:149:9:149:9 | a | provenance | | +| main.rs:150:21:150:21 | a | main.rs:118:28:118:33 | ...: i64 | provenance | | +| main.rs:155:9:155:9 | a | main.rs:156:16:156:16 | a | provenance | | +| main.rs:155:13:155:21 | source(...) | main.rs:155:9:155:9 | a | provenance | | +| main.rs:156:16:156:16 | a | main.rs:104:22:104:27 | ...: i64 | provenance | | +| main.rs:159:9:159:9 | a | main.rs:160:22:160:22 | a | provenance | | +| main.rs:159:13:159:22 | source(...) | main.rs:159:9:159:9 | a | provenance | | +| main.rs:160:22:160:22 | a | main.rs:118:28:118:33 | ...: i64 | provenance | | +| main.rs:166:9:166:9 | a | main.rs:167:34:167:34 | a | provenance | | +| main.rs:166:13:166:22 | source(...) | main.rs:166:9:166:9 | a | provenance | | +| main.rs:167:9:167:9 | b | main.rs:168:10:168:10 | b | provenance | | +| main.rs:167:13:167:35 | x.data_through_trait(...) | main.rs:167:9:167:9 | b | provenance | | +| main.rs:167:34:167:34 | a | main.rs:126:33:126:38 | ...: i64 | provenance | | +| main.rs:167:34:167:34 | a | main.rs:167:13:167:35 | x.data_through_trait(...) | provenance | | +| main.rs:173:9:173:9 | a | main.rs:174:29:174:29 | a | provenance | | +| main.rs:173:13:173:21 | source(...) | main.rs:173:9:173:9 | a | provenance | | +| main.rs:174:9:174:9 | b | main.rs:175:10:175:10 | b | provenance | | +| main.rs:174:13:174:30 | mn.data_through(...) | main.rs:174:9:174:9 | b | provenance | | +| main.rs:174:29:174:29 | a | main.rs:112:27:112:32 | ...: i64 | provenance | | +| main.rs:174:29:174:29 | a | main.rs:174:13:174:30 | mn.data_through(...) | provenance | | +| main.rs:178:9:178:9 | a | main.rs:179:35:179:35 | a | provenance | | +| main.rs:178:13:178:22 | source(...) | main.rs:178:9:178:9 | a | provenance | | +| main.rs:179:9:179:9 | b | main.rs:180:10:180:10 | b | provenance | | +| main.rs:179:13:179:36 | mn.data_through_trait(...) | main.rs:179:9:179:9 | b | provenance | | +| main.rs:179:35:179:35 | a | main.rs:126:33:126:38 | ...: i64 | provenance | | +| main.rs:179:35:179:35 | a | main.rs:179:13:179:36 | mn.data_through_trait(...) | provenance | | +| main.rs:187:9:187:9 | a | main.rs:188:25:188:25 | a | provenance | | +| main.rs:187:13:187:21 | source(...) | main.rs:187:9:187:9 | a | provenance | | +| main.rs:188:25:188:25 | a | main.rs:104:22:104:27 | ...: i64 | provenance | | +| main.rs:193:9:193:9 | a | main.rs:194:38:194:38 | a | provenance | | +| main.rs:193:13:193:22 | source(...) | main.rs:193:9:193:9 | a | provenance | | +| main.rs:194:9:194:9 | b | main.rs:195:10:195:10 | b | provenance | | +| main.rs:194:13:194:39 | ...::data_through(...) | main.rs:194:9:194:9 | b | provenance | | +| main.rs:194:38:194:38 | a | main.rs:112:27:112:32 | ...: i64 | provenance | | +| main.rs:194:38:194:38 | a | main.rs:194:13:194:39 | ...::data_through(...) | provenance | | +| main.rs:206:12:206:17 | ...: i64 | main.rs:207:24:207:24 | n | provenance | | +| main.rs:207:9:207:26 | MyInt {...} [MyInt] | main.rs:206:28:208:5 | { ... } [MyInt] | provenance | | +| main.rs:207:24:207:24 | n | main.rs:207:9:207:26 | MyInt {...} [MyInt] | provenance | | +| main.rs:212:9:212:9 | n [MyInt] | main.rs:213:9:213:26 | MyInt {...} [MyInt] | provenance | | +| main.rs:212:13:212:34 | ...::new(...) [MyInt] | main.rs:212:9:212:9 | n [MyInt] | provenance | | +| main.rs:212:24:212:33 | source(...) | main.rs:206:12:206:17 | ...: i64 | provenance | | +| main.rs:212:24:212:33 | source(...) | main.rs:212:13:212:34 | ...::new(...) [MyInt] | provenance | | +| main.rs:213:9:213:26 | MyInt {...} [MyInt] | main.rs:213:24:213:24 | m | provenance | | +| main.rs:213:24:213:24 | m | main.rs:214:10:214:10 | m | provenance | | +| main.rs:220:12:220:15 | SelfParam [MyInt] | main.rs:222:24:222:27 | self [MyInt] | provenance | | +| main.rs:222:9:222:35 | MyInt {...} [MyInt] | main.rs:220:42:223:5 | { ... } [MyInt] | provenance | | +| main.rs:222:24:222:27 | self [MyInt] | main.rs:222:24:222:33 | self.value | provenance | | +| main.rs:222:24:222:33 | self.value | main.rs:222:9:222:35 | MyInt {...} [MyInt] | provenance | | +| main.rs:227:30:227:39 | ...: MyInt [MyInt] | main.rs:228:25:228:27 | rhs [MyInt] | provenance | | +| main.rs:228:10:228:14 | [post] * ... [MyInt] | main.rs:228:11:228:14 | [post] self [&ref, MyInt] | provenance | | +| main.rs:228:11:228:14 | [post] self [&ref, MyInt] | main.rs:227:19:227:27 | SelfParam [Return] [&ref, MyInt] | provenance | | +| main.rs:228:25:228:27 | rhs [MyInt] | main.rs:228:25:228:33 | rhs.value | provenance | | +| main.rs:228:25:228:33 | rhs.value | main.rs:228:10:228:14 | [post] * ... [MyInt] | provenance | | +| main.rs:242:9:242:9 | a [MyInt] | main.rs:244:13:244:13 | a [MyInt] | provenance | | +| main.rs:242:13:242:38 | MyInt {...} [MyInt] | main.rs:242:9:242:9 | a [MyInt] | provenance | | +| main.rs:242:28:242:36 | source(...) | main.rs:242:13:242:38 | MyInt {...} [MyInt] | provenance | | +| main.rs:244:9:244:9 | c [MyInt] | main.rs:245:10:245:10 | c [MyInt] | provenance | | +| main.rs:244:13:244:13 | a [MyInt] | main.rs:220:12:220:15 | SelfParam [MyInt] | provenance | | +| main.rs:244:13:244:13 | a [MyInt] | main.rs:244:13:244:17 | ... + ... [MyInt] | provenance | | +| main.rs:244:13:244:17 | ... + ... [MyInt] | main.rs:244:9:244:9 | c [MyInt] | provenance | | +| main.rs:245:10:245:10 | c [MyInt] | main.rs:245:10:245:16 | c.value | provenance | | +| main.rs:252:9:252:9 | a [MyInt] | main.rs:220:12:220:15 | SelfParam [MyInt] | provenance | | +| main.rs:252:9:252:9 | a [MyInt] | main.rs:254:13:254:20 | a.add(...) [MyInt] | provenance | | +| main.rs:252:13:252:38 | MyInt {...} [MyInt] | main.rs:252:9:252:9 | a [MyInt] | provenance | | +| main.rs:252:28:252:36 | source(...) | main.rs:252:13:252:38 | MyInt {...} [MyInt] | provenance | | +| main.rs:254:9:254:9 | d [MyInt] | main.rs:255:10:255:10 | d [MyInt] | provenance | | +| main.rs:254:13:254:20 | a.add(...) [MyInt] | main.rs:254:9:254:9 | d [MyInt] | provenance | | +| main.rs:255:10:255:10 | d [MyInt] | main.rs:255:10:255:16 | d.value | provenance | | +| main.rs:259:9:259:9 | b [MyInt] | main.rs:261:35:261:35 | b [MyInt] | provenance | | +| main.rs:259:13:259:39 | MyInt {...} [MyInt] | main.rs:259:9:259:9 | b [MyInt] | provenance | | +| main.rs:259:28:259:37 | source(...) | main.rs:259:13:259:39 | MyInt {...} [MyInt] | provenance | | +| main.rs:261:27:261:32 | [post] &mut a [&ref, MyInt] | main.rs:261:32:261:32 | [post] a [MyInt] | provenance | | +| main.rs:261:32:261:32 | [post] a [MyInt] | main.rs:262:10:262:10 | a [MyInt] | provenance | | +| main.rs:261:35:261:35 | b [MyInt] | main.rs:227:30:227:39 | ...: MyInt [MyInt] | provenance | | +| main.rs:261:35:261:35 | b [MyInt] | main.rs:261:27:261:32 | [post] &mut a [&ref, MyInt] | provenance | | +| main.rs:262:10:262:10 | a [MyInt] | main.rs:262:10:262:16 | a.value | provenance | | +| main.rs:289:18:289:21 | SelfParam [MyInt] | main.rs:289:48:291:5 | { ... } [MyInt] | provenance | | +| main.rs:293:26:293:37 | ...: MyInt [MyInt] | main.rs:293:49:295:5 | { ... } [MyInt] | provenance | | +| main.rs:299:9:299:9 | a [MyInt] | main.rs:301:50:301:50 | a [MyInt] | provenance | | +| main.rs:299:13:299:38 | MyInt {...} [MyInt] | main.rs:299:9:299:9 | a [MyInt] | provenance | | +| main.rs:299:28:299:36 | source(...) | main.rs:299:13:299:38 | MyInt {...} [MyInt] | provenance | | +| main.rs:301:9:301:26 | MyInt {...} [MyInt] | main.rs:301:24:301:24 | c | provenance | | +| main.rs:301:24:301:24 | c | main.rs:302:10:302:10 | c | provenance | | +| main.rs:301:30:301:54 | ...::take_self(...) [MyInt] | main.rs:301:9:301:26 | MyInt {...} [MyInt] | provenance | | +| main.rs:301:50:301:50 | a [MyInt] | main.rs:289:18:289:21 | SelfParam [MyInt] | provenance | | +| main.rs:301:50:301:50 | a [MyInt] | main.rs:301:30:301:54 | ...::take_self(...) [MyInt] | provenance | | +| main.rs:305:9:305:9 | b [MyInt] | main.rs:306:55:306:55 | b [MyInt] | provenance | | +| main.rs:305:13:305:39 | MyInt {...} [MyInt] | main.rs:305:9:305:9 | b [MyInt] | provenance | | +| main.rs:305:28:305:37 | source(...) | main.rs:305:13:305:39 | MyInt {...} [MyInt] | provenance | | +| main.rs:306:9:306:26 | MyInt {...} [MyInt] | main.rs:306:24:306:24 | c | provenance | | +| main.rs:306:24:306:24 | c | main.rs:307:10:307:10 | c | provenance | | +| main.rs:306:30:306:56 | ...::take_second(...) [MyInt] | main.rs:306:9:306:26 | MyInt {...} [MyInt] | provenance | | +| main.rs:306:55:306:55 | b [MyInt] | main.rs:293:26:293:37 | ...: MyInt [MyInt] | provenance | | +| main.rs:306:55:306:55 | b [MyInt] | main.rs:306:30:306:56 | ...::take_second(...) [MyInt] | provenance | | +| main.rs:315:32:319:1 | { ... } | main.rs:334:41:334:54 | async_source(...) | provenance | | +| main.rs:316:9:316:9 | a | main.rs:315:32:319:1 | { ... } | provenance | | +| main.rs:316:9:316:9 | a | main.rs:317:10:317:10 | a | provenance | | +| main.rs:316:13:316:21 | source(...) | main.rs:316:9:316:9 | a | provenance | | +| main.rs:326:13:326:13 | c | main.rs:327:14:327:14 | c | provenance | | +| main.rs:326:17:326:25 | source(...) | main.rs:326:13:326:13 | c | provenance | | +| main.rs:334:9:334:9 | a | main.rs:335:10:335:10 | a | provenance | | +| main.rs:334:13:334:55 | ...::block_on(...) | main.rs:334:9:334:9 | a | provenance | | +| main.rs:334:41:334:54 | async_source(...) | main.rs:334:13:334:55 | ...::block_on(...) | provenance | MaD:1 | nodes | main.rs:12:28:14:1 | { ... } | semmle.label | { ... } | | main.rs:13:5:13:13 | source(...) | semmle.label | source(...) | @@ -140,149 +188,213 @@ nodes | main.rs:38:23:38:31 | source(...) | semmle.label | source(...) | | main.rs:39:10:39:10 | a [MyStruct] | semmle.label | a [MyStruct] | | main.rs:39:10:39:21 | a.get_data() | semmle.label | a.get_data() | -| main.rs:44:12:44:17 | [post] &mut a [&ref, MyStruct] | semmle.label | [post] &mut a [&ref, MyStruct] | -| main.rs:44:17:44:17 | [post] a [MyStruct] | semmle.label | [post] a [MyStruct] | -| main.rs:44:30:44:38 | source(...) | semmle.label | source(...) | -| main.rs:45:10:45:10 | a [MyStruct] | semmle.label | a [MyStruct] | -| main.rs:45:10:45:21 | a.get_data() | semmle.label | a.get_data() | -| main.rs:48:12:48:17 | ...: i64 | semmle.label | ...: i64 | -| main.rs:49:10:49:10 | n | semmle.label | n | -| main.rs:53:9:53:9 | a | semmle.label | a | -| main.rs:53:13:53:21 | source(...) | semmle.label | source(...) | -| main.rs:54:13:54:13 | a | semmle.label | a | -| main.rs:57:17:57:22 | ...: i64 | semmle.label | ...: i64 | -| main.rs:57:32:59:1 | { ... } | semmle.label | { ... } | -| main.rs:62:9:62:9 | a | semmle.label | a | -| main.rs:62:13:62:21 | source(...) | semmle.label | source(...) | -| main.rs:63:9:63:9 | b | semmle.label | b | -| main.rs:63:13:63:27 | pass_through(...) | semmle.label | pass_through(...) | -| main.rs:63:26:63:26 | a | semmle.label | a | -| main.rs:64:10:64:10 | b | semmle.label | b | -| main.rs:68:9:68:9 | a | semmle.label | a | -| main.rs:68:13:71:6 | pass_through(...) | semmle.label | pass_through(...) | -| main.rs:68:26:71:5 | { ... } | semmle.label | { ... } | -| main.rs:70:9:70:18 | source(...) | semmle.label | source(...) | -| main.rs:72:10:72:10 | a | semmle.label | a | -| main.rs:76:9:76:9 | a | semmle.label | a | -| main.rs:76:13:76:22 | source(...) | semmle.label | source(...) | -| main.rs:78:21:78:26 | ...: i64 | semmle.label | ...: i64 | -| main.rs:78:36:80:5 | { ... } | semmle.label | { ... } | -| main.rs:82:9:82:9 | b | semmle.label | b | -| main.rs:82:13:82:27 | pass_through(...) | semmle.label | pass_through(...) | -| main.rs:82:26:82:26 | a | semmle.label | a | -| main.rs:83:10:83:10 | b | semmle.label | b | -| main.rs:94:22:94:27 | ...: i64 | semmle.label | ...: i64 | -| main.rs:95:14:95:14 | n | semmle.label | n | -| main.rs:98:30:104:5 | { ... } | semmle.label | { ... } | -| main.rs:102:13:102:21 | source(...) | semmle.label | source(...) | -| main.rs:106:27:106:32 | ...: i64 | semmle.label | ...: i64 | -| main.rs:106:42:112:5 | { ... } | semmle.label | { ... } | -| main.rs:117:9:117:9 | a | semmle.label | a | -| main.rs:117:13:117:25 | mn.get_data() | semmle.label | mn.get_data() | -| main.rs:118:10:118:10 | a | semmle.label | a | -| main.rs:123:9:123:9 | a | semmle.label | a | -| main.rs:123:13:123:21 | source(...) | semmle.label | source(...) | -| main.rs:124:16:124:16 | a | semmle.label | a | -| main.rs:129:9:129:9 | a | semmle.label | a | -| main.rs:129:13:129:21 | source(...) | semmle.label | source(...) | -| main.rs:130:9:130:9 | b | semmle.label | b | -| main.rs:130:13:130:30 | mn.data_through(...) | semmle.label | mn.data_through(...) | -| main.rs:130:29:130:29 | a | semmle.label | a | -| main.rs:131:10:131:10 | b | semmle.label | b | -| main.rs:136:9:136:9 | a | semmle.label | a | -| main.rs:136:13:136:21 | source(...) | semmle.label | source(...) | -| main.rs:137:25:137:25 | a | semmle.label | a | +| main.rs:46:9:46:14 | [post] &mut a [&ref, MyStruct] | semmle.label | [post] &mut a [&ref, MyStruct] | +| main.rs:46:14:46:14 | [post] a [MyStruct] | semmle.label | [post] a [MyStruct] | +| main.rs:48:15:48:23 | source(...) | semmle.label | source(...) | +| main.rs:49:10:49:10 | a [MyStruct] | semmle.label | a [MyStruct] | +| main.rs:49:10:49:21 | a.get_data() | semmle.label | a.get_data() | +| main.rs:52:12:52:17 | ...: i64 | semmle.label | ...: i64 | +| main.rs:53:10:53:10 | n | semmle.label | n | +| main.rs:57:9:57:9 | a | semmle.label | a | +| main.rs:57:13:57:21 | source(...) | semmle.label | source(...) | +| main.rs:58:13:58:13 | a | semmle.label | a | +| main.rs:61:17:61:22 | ...: i64 | semmle.label | ...: i64 | +| main.rs:61:32:63:1 | { ... } | semmle.label | { ... } | +| main.rs:66:9:66:9 | a | semmle.label | a | +| main.rs:66:13:66:21 | source(...) | semmle.label | source(...) | +| main.rs:67:9:67:9 | b | semmle.label | b | +| main.rs:67:13:67:27 | pass_through(...) | semmle.label | pass_through(...) | +| main.rs:67:26:67:26 | a | semmle.label | a | +| main.rs:68:10:68:10 | b | semmle.label | b | +| main.rs:72:9:72:9 | a | semmle.label | a | +| main.rs:72:13:75:6 | pass_through(...) | semmle.label | pass_through(...) | +| main.rs:72:26:75:5 | { ... } | semmle.label | { ... } | +| main.rs:74:9:74:18 | source(...) | semmle.label | source(...) | +| main.rs:76:10:76:10 | a | semmle.label | a | +| main.rs:80:9:80:9 | a | semmle.label | a | +| main.rs:80:13:80:22 | source(...) | semmle.label | source(...) | +| main.rs:82:21:82:26 | ...: i64 | semmle.label | ...: i64 | +| main.rs:82:36:84:5 | { ... } | semmle.label | { ... } | +| main.rs:86:9:86:9 | b | semmle.label | b | +| main.rs:86:13:86:27 | pass_through(...) | semmle.label | pass_through(...) | +| main.rs:86:26:86:26 | a | semmle.label | a | +| main.rs:87:10:87:10 | b | semmle.label | b | +| main.rs:104:22:104:27 | ...: i64 | semmle.label | ...: i64 | +| main.rs:105:14:105:14 | n | semmle.label | n | +| main.rs:108:30:110:5 | { ... } | semmle.label | { ... } | +| main.rs:109:35:109:43 | source(...) | semmle.label | source(...) | +| main.rs:112:27:112:32 | ...: i64 | semmle.label | ...: i64 | +| main.rs:112:42:114:5 | { ... } | semmle.label | { ... } | +| main.rs:118:28:118:33 | ...: i64 | semmle.label | ...: i64 | +| main.rs:119:14:119:14 | n | semmle.label | n | +| main.rs:122:36:124:5 | { ... } | semmle.label | { ... } | +| main.rs:123:35:123:44 | source(...) | semmle.label | source(...) | +| main.rs:126:33:126:38 | ...: i64 | semmle.label | ...: i64 | +| main.rs:126:48:128:5 | { ... } | semmle.label | { ... } | +| main.rs:132:9:132:9 | a | semmle.label | a | +| main.rs:132:13:132:30 | x.get_data_trait() | semmle.label | x.get_data_trait() | +| main.rs:133:10:133:10 | a | semmle.label | a | +| main.rs:138:9:138:9 | a | semmle.label | a | +| main.rs:138:13:138:25 | mn.get_data() | semmle.label | mn.get_data() | +| main.rs:139:10:139:10 | a | semmle.label | a | | main.rs:142:9:142:9 | a | semmle.label | a | -| main.rs:142:13:142:22 | source(...) | semmle.label | source(...) | -| main.rs:143:9:143:9 | b | semmle.label | b | -| main.rs:143:13:143:39 | ...::data_through(...) | semmle.label | ...::data_through(...) | -| main.rs:143:38:143:38 | a | semmle.label | a | -| main.rs:144:10:144:10 | b | semmle.label | b | -| main.rs:155:12:155:17 | ...: i64 | semmle.label | ...: i64 | -| main.rs:155:28:157:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] | -| main.rs:156:9:156:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | -| main.rs:156:24:156:24 | n | semmle.label | n | -| main.rs:161:9:161:9 | n [MyInt] | semmle.label | n [MyInt] | -| main.rs:161:13:161:34 | ...::new(...) [MyInt] | semmle.label | ...::new(...) [MyInt] | -| main.rs:161:24:161:33 | source(...) | semmle.label | source(...) | -| main.rs:162:9:162:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | -| main.rs:162:24:162:24 | m | semmle.label | m | -| main.rs:163:10:163:10 | m | semmle.label | m | -| main.rs:169:12:169:15 | SelfParam [MyInt] | semmle.label | SelfParam [MyInt] | -| main.rs:169:42:172:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] | -| main.rs:171:9:171:35 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | -| main.rs:171:24:171:27 | self [MyInt] | semmle.label | self [MyInt] | -| main.rs:171:24:171:33 | self.value | semmle.label | self.value | -| main.rs:186:9:186:9 | a [MyInt] | semmle.label | a [MyInt] | -| main.rs:186:13:186:38 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | -| main.rs:186:28:186:36 | source(...) | semmle.label | source(...) | -| main.rs:188:9:188:9 | d [MyInt] | semmle.label | d [MyInt] | -| main.rs:188:13:188:20 | a.add(...) [MyInt] | semmle.label | a.add(...) [MyInt] | -| main.rs:189:10:189:10 | d [MyInt] | semmle.label | d [MyInt] | -| main.rs:189:10:189:16 | d.value | semmle.label | d.value | -| main.rs:201:18:201:21 | SelfParam [MyInt] | semmle.label | SelfParam [MyInt] | -| main.rs:201:48:203:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] | -| main.rs:205:26:205:37 | ...: MyInt [MyInt] | semmle.label | ...: MyInt [MyInt] | -| main.rs:205:49:207:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] | -| main.rs:211:9:211:9 | a [MyInt] | semmle.label | a [MyInt] | -| main.rs:211:13:211:38 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | -| main.rs:211:28:211:36 | source(...) | semmle.label | source(...) | +| main.rs:142:13:142:31 | mn.get_data_trait() | semmle.label | mn.get_data_trait() | +| main.rs:143:10:143:10 | a | semmle.label | a | +| main.rs:149:9:149:9 | a | semmle.label | a | +| main.rs:149:13:149:22 | source(...) | semmle.label | source(...) | +| main.rs:150:21:150:21 | a | semmle.label | a | +| main.rs:155:9:155:9 | a | semmle.label | a | +| main.rs:155:13:155:21 | source(...) | semmle.label | source(...) | +| main.rs:156:16:156:16 | a | semmle.label | a | +| main.rs:159:9:159:9 | a | semmle.label | a | +| main.rs:159:13:159:22 | source(...) | semmle.label | source(...) | +| main.rs:160:22:160:22 | a | semmle.label | a | +| main.rs:166:9:166:9 | a | semmle.label | a | +| main.rs:166:13:166:22 | source(...) | semmle.label | source(...) | +| main.rs:167:9:167:9 | b | semmle.label | b | +| main.rs:167:13:167:35 | x.data_through_trait(...) | semmle.label | x.data_through_trait(...) | +| main.rs:167:34:167:34 | a | semmle.label | a | +| main.rs:168:10:168:10 | b | semmle.label | b | +| main.rs:173:9:173:9 | a | semmle.label | a | +| main.rs:173:13:173:21 | source(...) | semmle.label | source(...) | +| main.rs:174:9:174:9 | b | semmle.label | b | +| main.rs:174:13:174:30 | mn.data_through(...) | semmle.label | mn.data_through(...) | +| main.rs:174:29:174:29 | a | semmle.label | a | +| main.rs:175:10:175:10 | b | semmle.label | b | +| main.rs:178:9:178:9 | a | semmle.label | a | +| main.rs:178:13:178:22 | source(...) | semmle.label | source(...) | +| main.rs:179:9:179:9 | b | semmle.label | b | +| main.rs:179:13:179:36 | mn.data_through_trait(...) | semmle.label | mn.data_through_trait(...) | +| main.rs:179:35:179:35 | a | semmle.label | a | +| main.rs:180:10:180:10 | b | semmle.label | b | +| main.rs:187:9:187:9 | a | semmle.label | a | +| main.rs:187:13:187:21 | source(...) | semmle.label | source(...) | +| main.rs:188:25:188:25 | a | semmle.label | a | +| main.rs:193:9:193:9 | a | semmle.label | a | +| main.rs:193:13:193:22 | source(...) | semmle.label | source(...) | +| main.rs:194:9:194:9 | b | semmle.label | b | +| main.rs:194:13:194:39 | ...::data_through(...) | semmle.label | ...::data_through(...) | +| main.rs:194:38:194:38 | a | semmle.label | a | +| main.rs:195:10:195:10 | b | semmle.label | b | +| main.rs:206:12:206:17 | ...: i64 | semmle.label | ...: i64 | +| main.rs:206:28:208:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] | +| main.rs:207:9:207:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | +| main.rs:207:24:207:24 | n | semmle.label | n | +| main.rs:212:9:212:9 | n [MyInt] | semmle.label | n [MyInt] | +| main.rs:212:13:212:34 | ...::new(...) [MyInt] | semmle.label | ...::new(...) [MyInt] | +| main.rs:212:24:212:33 | source(...) | semmle.label | source(...) | | main.rs:213:9:213:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | -| main.rs:213:24:213:24 | c | semmle.label | c | -| main.rs:213:30:213:53 | ...::take_self(...) [MyInt] | semmle.label | ...::take_self(...) [MyInt] | -| main.rs:213:49:213:49 | a [MyInt] | semmle.label | a [MyInt] | -| main.rs:214:10:214:10 | c | semmle.label | c | -| main.rs:217:9:217:9 | b [MyInt] | semmle.label | b [MyInt] | -| main.rs:217:13:217:39 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | -| main.rs:217:28:217:37 | source(...) | semmle.label | source(...) | -| main.rs:218:9:218:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | -| main.rs:218:24:218:24 | c | semmle.label | c | -| main.rs:218:30:218:55 | ...::take_second(...) [MyInt] | semmle.label | ...::take_second(...) [MyInt] | -| main.rs:218:54:218:54 | b [MyInt] | semmle.label | b [MyInt] | -| main.rs:219:10:219:10 | c | semmle.label | c | -| main.rs:227:32:231:1 | { ... } | semmle.label | { ... } | -| main.rs:228:9:228:9 | a | semmle.label | a | -| main.rs:228:13:228:21 | source(...) | semmle.label | source(...) | -| main.rs:229:10:229:10 | a | semmle.label | a | -| main.rs:238:13:238:13 | c | semmle.label | c | -| main.rs:238:17:238:25 | source(...) | semmle.label | source(...) | -| main.rs:239:14:239:14 | c | semmle.label | c | -| main.rs:246:9:246:9 | a | semmle.label | a | -| main.rs:246:13:246:55 | ...::block_on(...) | semmle.label | ...::block_on(...) | -| main.rs:246:41:246:54 | async_source(...) | semmle.label | async_source(...) | -| main.rs:247:10:247:10 | a | semmle.label | a | +| main.rs:213:24:213:24 | m | semmle.label | m | +| main.rs:214:10:214:10 | m | semmle.label | m | +| main.rs:220:12:220:15 | SelfParam [MyInt] | semmle.label | SelfParam [MyInt] | +| main.rs:220:42:223:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] | +| main.rs:222:9:222:35 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | +| main.rs:222:24:222:27 | self [MyInt] | semmle.label | self [MyInt] | +| main.rs:222:24:222:33 | self.value | semmle.label | self.value | +| main.rs:227:19:227:27 | SelfParam [Return] [&ref, MyInt] | semmle.label | SelfParam [Return] [&ref, MyInt] | +| main.rs:227:30:227:39 | ...: MyInt [MyInt] | semmle.label | ...: MyInt [MyInt] | +| main.rs:228:10:228:14 | [post] * ... [MyInt] | semmle.label | [post] * ... [MyInt] | +| main.rs:228:11:228:14 | [post] self [&ref, MyInt] | semmle.label | [post] self [&ref, MyInt] | +| main.rs:228:25:228:27 | rhs [MyInt] | semmle.label | rhs [MyInt] | +| main.rs:228:25:228:33 | rhs.value | semmle.label | rhs.value | +| main.rs:242:9:242:9 | a [MyInt] | semmle.label | a [MyInt] | +| main.rs:242:13:242:38 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | +| main.rs:242:28:242:36 | source(...) | semmle.label | source(...) | +| main.rs:244:9:244:9 | c [MyInt] | semmle.label | c [MyInt] | +| main.rs:244:13:244:13 | a [MyInt] | semmle.label | a [MyInt] | +| main.rs:244:13:244:17 | ... + ... [MyInt] | semmle.label | ... + ... [MyInt] | +| main.rs:245:10:245:10 | c [MyInt] | semmle.label | c [MyInt] | +| main.rs:245:10:245:16 | c.value | semmle.label | c.value | +| main.rs:252:9:252:9 | a [MyInt] | semmle.label | a [MyInt] | +| main.rs:252:13:252:38 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | +| main.rs:252:28:252:36 | source(...) | semmle.label | source(...) | +| main.rs:254:9:254:9 | d [MyInt] | semmle.label | d [MyInt] | +| main.rs:254:13:254:20 | a.add(...) [MyInt] | semmle.label | a.add(...) [MyInt] | +| main.rs:255:10:255:10 | d [MyInt] | semmle.label | d [MyInt] | +| main.rs:255:10:255:16 | d.value | semmle.label | d.value | +| main.rs:259:9:259:9 | b [MyInt] | semmle.label | b [MyInt] | +| main.rs:259:13:259:39 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | +| main.rs:259:28:259:37 | source(...) | semmle.label | source(...) | +| main.rs:261:27:261:32 | [post] &mut a [&ref, MyInt] | semmle.label | [post] &mut a [&ref, MyInt] | +| main.rs:261:32:261:32 | [post] a [MyInt] | semmle.label | [post] a [MyInt] | +| main.rs:261:35:261:35 | b [MyInt] | semmle.label | b [MyInt] | +| main.rs:262:10:262:10 | a [MyInt] | semmle.label | a [MyInt] | +| main.rs:262:10:262:16 | a.value | semmle.label | a.value | +| main.rs:289:18:289:21 | SelfParam [MyInt] | semmle.label | SelfParam [MyInt] | +| main.rs:289:48:291:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] | +| main.rs:293:26:293:37 | ...: MyInt [MyInt] | semmle.label | ...: MyInt [MyInt] | +| main.rs:293:49:295:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] | +| main.rs:299:9:299:9 | a [MyInt] | semmle.label | a [MyInt] | +| main.rs:299:13:299:38 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | +| main.rs:299:28:299:36 | source(...) | semmle.label | source(...) | +| main.rs:301:9:301:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | +| main.rs:301:24:301:24 | c | semmle.label | c | +| main.rs:301:30:301:54 | ...::take_self(...) [MyInt] | semmle.label | ...::take_self(...) [MyInt] | +| main.rs:301:50:301:50 | a [MyInt] | semmle.label | a [MyInt] | +| main.rs:302:10:302:10 | c | semmle.label | c | +| main.rs:305:9:305:9 | b [MyInt] | semmle.label | b [MyInt] | +| main.rs:305:13:305:39 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | +| main.rs:305:28:305:37 | source(...) | semmle.label | source(...) | +| main.rs:306:9:306:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | +| main.rs:306:24:306:24 | c | semmle.label | c | +| main.rs:306:30:306:56 | ...::take_second(...) [MyInt] | semmle.label | ...::take_second(...) [MyInt] | +| main.rs:306:55:306:55 | b [MyInt] | semmle.label | b [MyInt] | +| main.rs:307:10:307:10 | c | semmle.label | c | +| main.rs:315:32:319:1 | { ... } | semmle.label | { ... } | +| main.rs:316:9:316:9 | a | semmle.label | a | +| main.rs:316:13:316:21 | source(...) | semmle.label | source(...) | +| main.rs:317:10:317:10 | a | semmle.label | a | +| main.rs:326:13:326:13 | c | semmle.label | c | +| main.rs:326:17:326:25 | source(...) | semmle.label | source(...) | +| main.rs:327:14:327:14 | c | semmle.label | c | +| main.rs:334:9:334:9 | a | semmle.label | a | +| main.rs:334:13:334:55 | ...::block_on(...) | semmle.label | ...::block_on(...) | +| main.rs:334:41:334:54 | async_source(...) | semmle.label | async_source(...) | +| main.rs:335:10:335:10 | a | semmle.label | a | subpaths | main.rs:38:23:38:31 | source(...) | main.rs:26:28:26:33 | ...: i64 | main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | main.rs:38:6:38:11 | [post] &mut a [&ref, MyStruct] | | main.rs:39:10:39:10 | a [MyStruct] | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | main.rs:30:31:32:5 | { ... } | main.rs:39:10:39:21 | a.get_data() | -| main.rs:44:30:44:38 | source(...) | main.rs:26:28:26:33 | ...: i64 | main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | main.rs:44:12:44:17 | [post] &mut a [&ref, MyStruct] | -| main.rs:45:10:45:10 | a [MyStruct] | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | main.rs:30:31:32:5 | { ... } | main.rs:45:10:45:21 | a.get_data() | -| main.rs:63:26:63:26 | a | main.rs:57:17:57:22 | ...: i64 | main.rs:57:32:59:1 | { ... } | main.rs:63:13:63:27 | pass_through(...) | -| main.rs:68:26:71:5 | { ... } | main.rs:57:17:57:22 | ...: i64 | main.rs:57:32:59:1 | { ... } | main.rs:68:13:71:6 | pass_through(...) | -| main.rs:82:26:82:26 | a | main.rs:78:21:78:26 | ...: i64 | main.rs:78:36:80:5 | { ... } | main.rs:82:13:82:27 | pass_through(...) | -| main.rs:130:29:130:29 | a | main.rs:106:27:106:32 | ...: i64 | main.rs:106:42:112:5 | { ... } | main.rs:130:13:130:30 | mn.data_through(...) | -| main.rs:143:38:143:38 | a | main.rs:106:27:106:32 | ...: i64 | main.rs:106:42:112:5 | { ... } | main.rs:143:13:143:39 | ...::data_through(...) | -| main.rs:161:24:161:33 | source(...) | main.rs:155:12:155:17 | ...: i64 | main.rs:155:28:157:5 | { ... } [MyInt] | main.rs:161:13:161:34 | ...::new(...) [MyInt] | -| main.rs:186:9:186:9 | a [MyInt] | main.rs:169:12:169:15 | SelfParam [MyInt] | main.rs:169:42:172:5 | { ... } [MyInt] | main.rs:188:13:188:20 | a.add(...) [MyInt] | -| main.rs:213:49:213:49 | a [MyInt] | main.rs:201:18:201:21 | SelfParam [MyInt] | main.rs:201:48:203:5 | { ... } [MyInt] | main.rs:213:30:213:53 | ...::take_self(...) [MyInt] | -| main.rs:218:54:218:54 | b [MyInt] | main.rs:205:26:205:37 | ...: MyInt [MyInt] | main.rs:205:49:207:5 | { ... } [MyInt] | main.rs:218:30:218:55 | ...::take_second(...) [MyInt] | +| main.rs:48:15:48:23 | source(...) | main.rs:26:28:26:33 | ...: i64 | main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | main.rs:46:9:46:14 | [post] &mut a [&ref, MyStruct] | +| main.rs:49:10:49:10 | a [MyStruct] | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | main.rs:30:31:32:5 | { ... } | main.rs:49:10:49:21 | a.get_data() | +| main.rs:67:26:67:26 | a | main.rs:61:17:61:22 | ...: i64 | main.rs:61:32:63:1 | { ... } | main.rs:67:13:67:27 | pass_through(...) | +| main.rs:72:26:75:5 | { ... } | main.rs:61:17:61:22 | ...: i64 | main.rs:61:32:63:1 | { ... } | main.rs:72:13:75:6 | pass_through(...) | +| main.rs:86:26:86:26 | a | main.rs:82:21:82:26 | ...: i64 | main.rs:82:36:84:5 | { ... } | main.rs:86:13:86:27 | pass_through(...) | +| main.rs:167:34:167:34 | a | main.rs:126:33:126:38 | ...: i64 | main.rs:126:48:128:5 | { ... } | main.rs:167:13:167:35 | x.data_through_trait(...) | +| main.rs:174:29:174:29 | a | main.rs:112:27:112:32 | ...: i64 | main.rs:112:42:114:5 | { ... } | main.rs:174:13:174:30 | mn.data_through(...) | +| main.rs:179:35:179:35 | a | main.rs:126:33:126:38 | ...: i64 | main.rs:126:48:128:5 | { ... } | main.rs:179:13:179:36 | mn.data_through_trait(...) | +| main.rs:194:38:194:38 | a | main.rs:112:27:112:32 | ...: i64 | main.rs:112:42:114:5 | { ... } | main.rs:194:13:194:39 | ...::data_through(...) | +| main.rs:212:24:212:33 | source(...) | main.rs:206:12:206:17 | ...: i64 | main.rs:206:28:208:5 | { ... } [MyInt] | main.rs:212:13:212:34 | ...::new(...) [MyInt] | +| main.rs:244:13:244:13 | a [MyInt] | main.rs:220:12:220:15 | SelfParam [MyInt] | main.rs:220:42:223:5 | { ... } [MyInt] | main.rs:244:13:244:17 | ... + ... [MyInt] | +| main.rs:252:9:252:9 | a [MyInt] | main.rs:220:12:220:15 | SelfParam [MyInt] | main.rs:220:42:223:5 | { ... } [MyInt] | main.rs:254:13:254:20 | a.add(...) [MyInt] | +| main.rs:261:35:261:35 | b [MyInt] | main.rs:227:30:227:39 | ...: MyInt [MyInt] | main.rs:227:19:227:27 | SelfParam [Return] [&ref, MyInt] | main.rs:261:27:261:32 | [post] &mut a [&ref, MyInt] | +| main.rs:301:50:301:50 | a [MyInt] | main.rs:289:18:289:21 | SelfParam [MyInt] | main.rs:289:48:291:5 | { ... } [MyInt] | main.rs:301:30:301:54 | ...::take_self(...) [MyInt] | +| main.rs:306:55:306:55 | b [MyInt] | main.rs:293:26:293:37 | ...: MyInt [MyInt] | main.rs:293:49:295:5 | { ... } [MyInt] | main.rs:306:30:306:56 | ...::take_second(...) [MyInt] | testFailures #select | main.rs:18:10:18:10 | a | main.rs:13:5:13:13 | source(...) | main.rs:18:10:18:10 | a | $@ | main.rs:13:5:13:13 | source(...) | source(...) | | main.rs:39:10:39:21 | a.get_data() | main.rs:38:23:38:31 | source(...) | main.rs:39:10:39:21 | a.get_data() | $@ | main.rs:38:23:38:31 | source(...) | source(...) | -| main.rs:45:10:45:21 | a.get_data() | main.rs:44:30:44:38 | source(...) | main.rs:45:10:45:21 | a.get_data() | $@ | main.rs:44:30:44:38 | source(...) | source(...) | -| main.rs:49:10:49:10 | n | main.rs:53:13:53:21 | source(...) | main.rs:49:10:49:10 | n | $@ | main.rs:53:13:53:21 | source(...) | source(...) | -| main.rs:64:10:64:10 | b | main.rs:62:13:62:21 | source(...) | main.rs:64:10:64:10 | b | $@ | main.rs:62:13:62:21 | source(...) | source(...) | -| main.rs:72:10:72:10 | a | main.rs:70:9:70:18 | source(...) | main.rs:72:10:72:10 | a | $@ | main.rs:70:9:70:18 | source(...) | source(...) | -| main.rs:83:10:83:10 | b | main.rs:76:13:76:22 | source(...) | main.rs:83:10:83:10 | b | $@ | main.rs:76:13:76:22 | source(...) | source(...) | -| main.rs:95:14:95:14 | n | main.rs:123:13:123:21 | source(...) | main.rs:95:14:95:14 | n | $@ | main.rs:123:13:123:21 | source(...) | source(...) | -| main.rs:95:14:95:14 | n | main.rs:136:13:136:21 | source(...) | main.rs:95:14:95:14 | n | $@ | main.rs:136:13:136:21 | source(...) | source(...) | -| main.rs:118:10:118:10 | a | main.rs:102:13:102:21 | source(...) | main.rs:118:10:118:10 | a | $@ | main.rs:102:13:102:21 | source(...) | source(...) | -| main.rs:131:10:131:10 | b | main.rs:129:13:129:21 | source(...) | main.rs:131:10:131:10 | b | $@ | main.rs:129:13:129:21 | source(...) | source(...) | -| main.rs:144:10:144:10 | b | main.rs:142:13:142:22 | source(...) | main.rs:144:10:144:10 | b | $@ | main.rs:142:13:142:22 | source(...) | source(...) | -| main.rs:163:10:163:10 | m | main.rs:161:24:161:33 | source(...) | main.rs:163:10:163:10 | m | $@ | main.rs:161:24:161:33 | source(...) | source(...) | -| main.rs:189:10:189:16 | d.value | main.rs:186:28:186:36 | source(...) | main.rs:189:10:189:16 | d.value | $@ | main.rs:186:28:186:36 | source(...) | source(...) | -| main.rs:214:10:214:10 | c | main.rs:211:28:211:36 | source(...) | main.rs:214:10:214:10 | c | $@ | main.rs:211:28:211:36 | source(...) | source(...) | -| main.rs:219:10:219:10 | c | main.rs:217:28:217:37 | source(...) | main.rs:219:10:219:10 | c | $@ | main.rs:217:28:217:37 | source(...) | source(...) | -| main.rs:229:10:229:10 | a | main.rs:228:13:228:21 | source(...) | main.rs:229:10:229:10 | a | $@ | main.rs:228:13:228:21 | source(...) | source(...) | -| main.rs:239:14:239:14 | c | main.rs:238:17:238:25 | source(...) | main.rs:239:14:239:14 | c | $@ | main.rs:238:17:238:25 | source(...) | source(...) | -| main.rs:247:10:247:10 | a | main.rs:228:13:228:21 | source(...) | main.rs:247:10:247:10 | a | $@ | main.rs:228:13:228:21 | source(...) | source(...) | +| main.rs:49:10:49:21 | a.get_data() | main.rs:48:15:48:23 | source(...) | main.rs:49:10:49:21 | a.get_data() | $@ | main.rs:48:15:48:23 | source(...) | source(...) | +| main.rs:53:10:53:10 | n | main.rs:57:13:57:21 | source(...) | main.rs:53:10:53:10 | n | $@ | main.rs:57:13:57:21 | source(...) | source(...) | +| main.rs:68:10:68:10 | b | main.rs:66:13:66:21 | source(...) | main.rs:68:10:68:10 | b | $@ | main.rs:66:13:66:21 | source(...) | source(...) | +| main.rs:76:10:76:10 | a | main.rs:74:9:74:18 | source(...) | main.rs:76:10:76:10 | a | $@ | main.rs:74:9:74:18 | source(...) | source(...) | +| main.rs:87:10:87:10 | b | main.rs:80:13:80:22 | source(...) | main.rs:87:10:87:10 | b | $@ | main.rs:80:13:80:22 | source(...) | source(...) | +| main.rs:105:14:105:14 | n | main.rs:155:13:155:21 | source(...) | main.rs:105:14:105:14 | n | $@ | main.rs:155:13:155:21 | source(...) | source(...) | +| main.rs:105:14:105:14 | n | main.rs:187:13:187:21 | source(...) | main.rs:105:14:105:14 | n | $@ | main.rs:187:13:187:21 | source(...) | source(...) | +| main.rs:119:14:119:14 | n | main.rs:149:13:149:22 | source(...) | main.rs:119:14:119:14 | n | $@ | main.rs:149:13:149:22 | source(...) | source(...) | +| main.rs:119:14:119:14 | n | main.rs:159:13:159:22 | source(...) | main.rs:119:14:119:14 | n | $@ | main.rs:159:13:159:22 | source(...) | source(...) | +| main.rs:133:10:133:10 | a | main.rs:123:35:123:44 | source(...) | main.rs:133:10:133:10 | a | $@ | main.rs:123:35:123:44 | source(...) | source(...) | +| main.rs:139:10:139:10 | a | main.rs:109:35:109:43 | source(...) | main.rs:139:10:139:10 | a | $@ | main.rs:109:35:109:43 | source(...) | source(...) | +| main.rs:143:10:143:10 | a | main.rs:123:35:123:44 | source(...) | main.rs:143:10:143:10 | a | $@ | main.rs:123:35:123:44 | source(...) | source(...) | +| main.rs:168:10:168:10 | b | main.rs:166:13:166:22 | source(...) | main.rs:168:10:168:10 | b | $@ | main.rs:166:13:166:22 | source(...) | source(...) | +| main.rs:175:10:175:10 | b | main.rs:173:13:173:21 | source(...) | main.rs:175:10:175:10 | b | $@ | main.rs:173:13:173:21 | source(...) | source(...) | +| main.rs:180:10:180:10 | b | main.rs:178:13:178:22 | source(...) | main.rs:180:10:180:10 | b | $@ | main.rs:178:13:178:22 | source(...) | source(...) | +| main.rs:195:10:195:10 | b | main.rs:193:13:193:22 | source(...) | main.rs:195:10:195:10 | b | $@ | main.rs:193:13:193:22 | source(...) | source(...) | +| main.rs:214:10:214:10 | m | main.rs:212:24:212:33 | source(...) | main.rs:214:10:214:10 | m | $@ | main.rs:212:24:212:33 | source(...) | source(...) | +| main.rs:245:10:245:16 | c.value | main.rs:242:28:242:36 | source(...) | main.rs:245:10:245:16 | c.value | $@ | main.rs:242:28:242:36 | source(...) | source(...) | +| main.rs:255:10:255:16 | d.value | main.rs:252:28:252:36 | source(...) | main.rs:255:10:255:16 | d.value | $@ | main.rs:252:28:252:36 | source(...) | source(...) | +| main.rs:262:10:262:16 | a.value | main.rs:259:28:259:37 | source(...) | main.rs:262:10:262:16 | a.value | $@ | main.rs:259:28:259:37 | source(...) | source(...) | +| main.rs:302:10:302:10 | c | main.rs:299:28:299:36 | source(...) | main.rs:302:10:302:10 | c | $@ | main.rs:299:28:299:36 | source(...) | source(...) | +| main.rs:307:10:307:10 | c | main.rs:305:28:305:37 | source(...) | main.rs:307:10:307:10 | c | $@ | main.rs:305:28:305:37 | source(...) | source(...) | +| main.rs:317:10:317:10 | a | main.rs:316:13:316:21 | source(...) | main.rs:317:10:317:10 | a | $@ | main.rs:316:13:316:21 | source(...) | source(...) | +| main.rs:327:14:327:14 | c | main.rs:326:17:326:25 | source(...) | main.rs:327:14:327:14 | c | $@ | main.rs:326:17:326:25 | source(...) | source(...) | +| main.rs:335:10:335:10 | a | main.rs:316:13:316:21 | source(...) | main.rs:335:10:335:10 | a | $@ | main.rs:316:13:316:21 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/global/main.rs b/rust/ql/test/library-tests/dataflow/global/main.rs index 507772692d67..b66ef27726bb 100644 --- a/rust/ql/test/library-tests/dataflow/global/main.rs +++ b/rust/ql/test/library-tests/dataflow/global/main.rs @@ -41,7 +41,11 @@ fn data_out_of_call_side_effect1() { fn data_out_of_call_side_effect2() { let mut a = MyStruct { data: 0 }; - ({ 42; &mut a}).set_data(source(9)); + ({ + 42; + &mut a + }) + .set_data(source(9)); sink(a.get_data()); // $ hasValueFlow=9 } @@ -90,38 +94,78 @@ struct MyFlag { flag: bool, } +trait MyTrait { + fn data_in_trait(self, n: i64); + fn get_data_trait(self) -> i64; + fn data_through_trait(self, n: i64) -> i64; +} + impl MyFlag { fn data_in(self, n: i64) { sink(n); // $ hasValueFlow=1 hasValueFlow=8 } fn get_data(self) -> i64 { - if self.flag { - 0 - } else { - source(2) - } + if self.flag { 0 } else { source(2) } } fn data_through(self, n: i64) -> i64 { - if self.flag { - 0 - } else { - n - } + if self.flag { 0 } else { n } + } +} + +impl MyTrait for MyFlag { + fn data_in_trait(self, n: i64) { + sink(n); // $ hasValueFlow=22 $ hasValueFlow=31 + } + + fn get_data_trait(self) -> i64 { + if self.flag { 0 } else { source(21) } + } + + fn data_through_trait(self, n: i64) -> i64 { + if self.flag { 0 } else { n } } } +fn data_out_of_method_trait_dispatch(x: T) { + let a = x.get_data_trait(); + sink(a); // $ hasValueFlow=21 +} + fn data_out_of_method() { let mn = MyFlag { flag: true }; let a = mn.get_data(); sink(a); // $ hasValueFlow=2 + + let mn = MyFlag { flag: true }; + let a = mn.get_data_trait(); + sink(a); // $ hasValueFlow=21 + + data_out_of_method_trait_dispatch(MyFlag { flag: true }); +} + +fn data_in_to_method_call_trait_dispatch(x: T) { + let a = source(31); + x.data_in_trait(a); } fn data_in_to_method_call() { let mn = MyFlag { flag: true }; let a = source(1); - mn.data_in(a) + mn.data_in(a); + + let mn = MyFlag { flag: true }; + let a = source(22); + mn.data_in_trait(a); + + data_in_to_method_call_trait_dispatch(MyFlag { flag: true }); +} + +fn data_through_method_trait_dispatch(x: T) { + let a = source(34); + let b = x.data_through_trait(a); + sink(b); // $ hasValueFlow=34 } fn data_through_method() { @@ -129,6 +173,13 @@ fn data_through_method() { let a = source(4); let b = mn.data_through(a); sink(b); // $ hasValueFlow=4 + + let mn = MyFlag { flag: true }; + let a = source(24); + let b = mn.data_through_trait(a); + sink(b); // $ hasValueFlow=24 + + data_through_method_trait_dispatch(MyFlag { flag: true }); } fn data_in_to_method_called_as_function() { @@ -144,7 +195,7 @@ fn data_through_method_called_as_function() { sink(b); // $ hasValueFlow=12 } -use std::ops::Add; +use std::ops::{Add, Deref, MulAssign}; struct MyInt { value: i64, @@ -172,11 +223,26 @@ impl Add for MyInt { } } +impl MulAssign for MyInt { + fn mul_assign(&mut self, rhs: MyInt) { + (*self).value = rhs.value; // todo: implicit deref not yet supported + } +} + +impl Deref for MyInt { + type Target = i64; + + fn deref(&self) -> &Self::Target { + &(*self).value + } +} + fn test_operator_overloading() { + // Tests for simple binary operator. let a = MyInt { value: source(5) }; let b = MyInt { value: 2 }; let c = a + b; - sink(c.value); // $ MISSING: hasValueFlow=5 + sink(c.value); // $ hasValueFlow=5 let a = MyInt { value: 2 }; let b = MyInt { value: source(6) }; @@ -187,15 +253,37 @@ fn test_operator_overloading() { let b = MyInt { value: 2 }; let d = a.add(b); sink(d.value); // $ hasValueFlow=7 + + // Tests for assignment operator. + let mut a = MyInt { value: 0 }; + let b = MyInt { value: source(34) }; + // The line below is what `*=` desugars to. + MulAssign::mul_assign(&mut a, b); + sink(a.value); // $ hasValueFlow=34 + + let mut a = MyInt { value: 0 }; + let b = MyInt { value: source(35) }; + a *= b; + sink(a.value); // $ MISSING: hasValueFlow=35 + + // Tests for deref operator. + let a = MyInt { value: source(27) }; + // The line below is what the prefix `*` desugars to. + let c = *Deref::deref(&a); + sink(c); // $ MISSING: hasValueFlow=27 + + let a = MyInt { value: source(28) }; + let c = *a; + sink(c); // $ hasTaintFlow=28 MISSING: hasValueFlow=28 } -trait MyTrait { +trait MyTrait2 { type Output; fn take_self(self, _other: Self::Output) -> Self::Output; fn take_second(self, other: Self::Output) -> Self::Output; } -impl MyTrait for MyInt { +impl MyTrait2 for MyInt { type Output = MyInt; fn take_self(self, _other: MyInt) -> MyInt { @@ -210,17 +298,17 @@ impl MyTrait for MyInt { fn data_through_trait_method_called_as_function() { let a = MyInt { value: source(8) }; let b = MyInt { value: 2 }; - let MyInt { value: c } = MyTrait::take_self(a, b); + let MyInt { value: c } = MyTrait2::take_self(a, b); sink(c); // $ hasValueFlow=8 let a = MyInt { value: 0 }; let b = MyInt { value: source(37) }; - let MyInt { value: c } = MyTrait::take_second(a, b); + let MyInt { value: c } = MyTrait2::take_second(a, b); sink(c); // $ hasValueFlow=37 let a = MyInt { value: 0 }; let b = MyInt { value: source(38) }; - let MyInt { value: c } = MyTrait::take_self(a, b); + let MyInt { value: c } = MyTrait2::take_self(a, b); sink(c); } diff --git a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected index 63abc4c7f417..9c7a9e191416 100644 --- a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected +++ b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected @@ -7,75 +7,109 @@ | main.rs:38:23:38:31 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:39:5:39:22 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:39:10:39:21 | a.get_data() | main.rs:30:5:32:5 | fn get_data | -| main.rs:44:5:44:39 | ... .set_data(...) | main.rs:26:5:28:5 | fn set_data | -| main.rs:44:30:44:38 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:45:5:45:22 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:45:10:45:21 | a.get_data() | main.rs:30:5:32:5 | fn get_data | -| main.rs:49:5:49:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:53:13:53:21 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:54:5:54:14 | data_in(...) | main.rs:48:1:50:1 | fn data_in | -| main.rs:62:13:62:21 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:63:13:63:27 | pass_through(...) | main.rs:57:1:59:1 | fn pass_through | -| main.rs:64:5:64:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:68:13:71:6 | pass_through(...) | main.rs:57:1:59:1 | fn pass_through | -| main.rs:70:9:70:18 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:72:5:72:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:76:13:76:22 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:82:13:82:27 | pass_through(...) | main.rs:78:5:80:5 | fn pass_through | -| main.rs:83:5:83:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:95:9:95:15 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:102:13:102:21 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:117:13:117:25 | mn.get_data() | main.rs:98:5:104:5 | fn get_data | -| main.rs:118:5:118:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:123:13:123:21 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:124:5:124:17 | mn.data_in(...) | main.rs:94:5:96:5 | fn data_in | -| main.rs:129:13:129:21 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:130:13:130:30 | mn.data_through(...) | main.rs:106:5:112:5 | fn data_through | -| main.rs:131:5:131:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:136:13:136:21 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:137:5:137:26 | ...::data_in(...) | main.rs:94:5:96:5 | fn data_in | -| main.rs:142:13:142:22 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:143:13:143:39 | ...::data_through(...) | main.rs:106:5:112:5 | fn data_through | -| main.rs:144:5:144:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:161:13:161:34 | ...::new(...) | main.rs:154:5:157:5 | fn new | -| main.rs:161:24:161:33 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:163:5:163:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:176:28:176:36 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:179:5:179:17 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:182:28:182:36 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:184:5:184:17 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:186:28:186:36 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:188:13:188:20 | a.add(...) | main.rs:169:5:172:5 | fn add | -| main.rs:189:5:189:17 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:211:28:211:36 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:213:30:213:53 | ...::take_self(...) | main.rs:201:5:203:5 | fn take_self | +| main.rs:44:5:48:24 | ... .set_data(...) | main.rs:26:5:28:5 | fn set_data | +| main.rs:48:15:48:23 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:49:5:49:22 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:49:10:49:21 | a.get_data() | main.rs:30:5:32:5 | fn get_data | +| main.rs:53:5:53:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:57:13:57:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:58:5:58:14 | data_in(...) | main.rs:52:1:54:1 | fn data_in | +| main.rs:66:13:66:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:67:13:67:27 | pass_through(...) | main.rs:61:1:63:1 | fn pass_through | +| main.rs:68:5:68:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:72:13:75:6 | pass_through(...) | main.rs:61:1:63:1 | fn pass_through | +| main.rs:74:9:74:18 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:76:5:76:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:80:13:80:22 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:86:13:86:27 | pass_through(...) | main.rs:82:5:84:5 | fn pass_through | +| main.rs:87:5:87:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:105:9:105:15 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:109:35:109:43 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:119:9:119:15 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:123:35:123:44 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:132:13:132:30 | x.get_data_trait() | main.rs:122:5:124:5 | fn get_data_trait | +| main.rs:133:5:133:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:138:13:138:25 | mn.get_data() | main.rs:108:5:110:5 | fn get_data | +| main.rs:139:5:139:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:142:13:142:31 | mn.get_data_trait() | main.rs:122:5:124:5 | fn get_data_trait | +| main.rs:143:5:143:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:145:5:145:60 | data_out_of_method_trait_dispatch(...) | main.rs:131:1:134:1 | fn data_out_of_method_trait_dispatch | +| main.rs:149:13:149:22 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:150:5:150:22 | x.data_in_trait(...) | main.rs:118:5:120:5 | fn data_in_trait | +| main.rs:155:13:155:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:156:5:156:17 | mn.data_in(...) | main.rs:104:5:106:5 | fn data_in | +| main.rs:159:13:159:22 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:160:5:160:23 | mn.data_in_trait(...) | main.rs:118:5:120:5 | fn data_in_trait | +| main.rs:162:5:162:64 | data_in_to_method_call_trait_dispatch(...) | main.rs:148:1:151:1 | fn data_in_to_method_call_trait_dispatch | +| main.rs:166:13:166:22 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:167:13:167:35 | x.data_through_trait(...) | main.rs:126:5:128:5 | fn data_through_trait | +| main.rs:168:5:168:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:173:13:173:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:174:13:174:30 | mn.data_through(...) | main.rs:112:5:114:5 | fn data_through | +| main.rs:175:5:175:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:178:13:178:22 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:179:13:179:36 | mn.data_through_trait(...) | main.rs:126:5:128:5 | fn data_through_trait | +| main.rs:180:5:180:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:182:5:182:61 | data_through_method_trait_dispatch(...) | main.rs:165:1:169:1 | fn data_through_method_trait_dispatch | +| main.rs:187:13:187:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:188:5:188:26 | ...::data_in(...) | main.rs:104:5:106:5 | fn data_in | +| main.rs:193:13:193:22 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:194:13:194:39 | ...::data_through(...) | main.rs:112:5:114:5 | fn data_through | +| main.rs:195:5:195:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:212:13:212:34 | ...::new(...) | main.rs:205:5:208:5 | fn new | +| main.rs:212:24:212:33 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:214:5:214:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:217:28:217:37 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:218:30:218:55 | ...::take_second(...) | main.rs:205:5:207:5 | fn take_second | -| main.rs:219:5:219:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:222:28:222:37 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:223:30:223:53 | ...::take_self(...) | main.rs:201:5:203:5 | fn take_self | -| main.rs:224:5:224:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:228:13:228:21 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:229:5:229:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:234:13:234:26 | async_source(...) | main.rs:227:1:231:1 | fn async_source | -| main.rs:235:5:235:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:238:17:238:25 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:239:9:239:15 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:242:5:242:17 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:246:13:246:55 | ...::block_on(...) | file://:0:0:0:0 | repo:https://github.com/rust-lang/futures-rs:futures-executor::_::crate::local_pool::block_on | -| main.rs:246:41:246:54 | async_source(...) | main.rs:227:1:231:1 | fn async_source | -| main.rs:247:5:247:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:249:5:249:62 | ...::block_on(...) | file://:0:0:0:0 | repo:https://github.com/rust-lang/futures-rs:futures-executor::_::crate::local_pool::block_on | -| main.rs:249:33:249:61 | test_async_await_async_part(...) | main.rs:233:1:243:1 | fn test_async_await_async_part | -| main.rs:253:5:253:22 | data_out_of_call(...) | main.rs:16:1:19:1 | fn data_out_of_call | -| main.rs:254:5:254:35 | data_out_of_call_side_effect1(...) | main.rs:35:1:40:1 | fn data_out_of_call_side_effect1 | -| main.rs:255:5:255:35 | data_out_of_call_side_effect2(...) | main.rs:42:1:46:1 | fn data_out_of_call_side_effect2 | -| main.rs:256:5:256:21 | data_in_to_call(...) | main.rs:52:1:55:1 | fn data_in_to_call | -| main.rs:257:5:257:23 | data_through_call(...) | main.rs:61:1:65:1 | fn data_through_call | -| main.rs:258:5:258:34 | data_through_nested_function(...) | main.rs:75:1:84:1 | fn data_through_nested_function | -| main.rs:260:5:260:24 | data_out_of_method(...) | main.rs:115:1:119:1 | fn data_out_of_method | -| main.rs:261:5:261:28 | data_in_to_method_call(...) | main.rs:121:1:125:1 | fn data_in_to_method_call | -| main.rs:262:5:262:25 | data_through_method(...) | main.rs:127:1:132:1 | fn data_through_method | -| main.rs:264:5:264:31 | test_operator_overloading(...) | main.rs:175:1:190:1 | fn test_operator_overloading | -| main.rs:265:5:265:22 | test_async_await(...) | main.rs:245:1:250:1 | fn test_async_await | +| main.rs:228:10:228:14 | * ... | main.rs:235:5:237:5 | fn deref | +| main.rs:236:11:236:15 | * ... | main.rs:235:5:237:5 | fn deref | +| main.rs:242:28:242:36 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:244:13:244:17 | ... + ... | main.rs:220:5:223:5 | fn add | +| main.rs:245:5:245:17 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:248:28:248:36 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:249:13:249:17 | ... + ... | main.rs:220:5:223:5 | fn add | +| main.rs:250:5:250:17 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:252:28:252:36 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:254:13:254:20 | a.add(...) | main.rs:220:5:223:5 | fn add | +| main.rs:255:5:255:17 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:259:28:259:37 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:261:5:261:36 | ...::mul_assign(...) | main.rs:227:5:229:5 | fn mul_assign | +| main.rs:262:5:262:17 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:265:28:265:37 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:266:5:266:10 | ... *= ... | main.rs:227:5:229:5 | fn mul_assign | +| main.rs:267:5:267:17 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:270:28:270:37 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:273:5:273:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:275:28:275:37 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:276:13:276:14 | * ... | main.rs:235:5:237:5 | fn deref | +| main.rs:277:5:277:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:299:28:299:36 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:301:30:301:54 | ...::take_self(...) | main.rs:289:5:291:5 | fn take_self | +| main.rs:302:5:302:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:305:28:305:37 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:306:30:306:56 | ...::take_second(...) | main.rs:293:5:295:5 | fn take_second | +| main.rs:307:5:307:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:310:28:310:37 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:311:30:311:54 | ...::take_self(...) | main.rs:289:5:291:5 | fn take_self | +| main.rs:312:5:312:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:316:13:316:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:317:5:317:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:322:13:322:26 | async_source(...) | main.rs:315:1:319:1 | fn async_source | +| main.rs:323:5:323:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:326:17:326:25 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:327:9:327:15 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:330:5:330:17 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:334:13:334:55 | ...::block_on(...) | file://:0:0:0:0 | fn block_on | +| main.rs:334:41:334:54 | async_source(...) | main.rs:315:1:319:1 | fn async_source | +| main.rs:335:5:335:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:337:5:337:62 | ...::block_on(...) | file://:0:0:0:0 | fn block_on | +| main.rs:337:33:337:61 | test_async_await_async_part(...) | main.rs:321:1:331:1 | fn test_async_await_async_part | +| main.rs:341:5:341:22 | data_out_of_call(...) | main.rs:16:1:19:1 | fn data_out_of_call | +| main.rs:342:5:342:35 | data_out_of_call_side_effect1(...) | main.rs:35:1:40:1 | fn data_out_of_call_side_effect1 | +| main.rs:343:5:343:35 | data_out_of_call_side_effect2(...) | main.rs:42:1:50:1 | fn data_out_of_call_side_effect2 | +| main.rs:344:5:344:21 | data_in_to_call(...) | main.rs:56:1:59:1 | fn data_in_to_call | +| main.rs:345:5:345:23 | data_through_call(...) | main.rs:65:1:69:1 | fn data_through_call | +| main.rs:346:5:346:34 | data_through_nested_function(...) | main.rs:79:1:88:1 | fn data_through_nested_function | +| main.rs:348:5:348:24 | data_out_of_method(...) | main.rs:136:1:146:1 | fn data_out_of_method | +| main.rs:349:5:349:28 | data_in_to_method_call(...) | main.rs:153:1:163:1 | fn data_in_to_method_call | +| main.rs:350:5:350:25 | data_through_method(...) | main.rs:171:1:183:1 | fn data_through_method | +| main.rs:352:5:352:31 | test_operator_overloading(...) | main.rs:240:1:278:1 | fn test_operator_overloading | +| main.rs:353:5:353:22 | test_async_await(...) | main.rs:333:1:338:1 | fn test_async_await | diff --git a/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/PathResolutionConsistency.expected index b9ee72e892bd..330c8673560f 100644 --- a/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/PathResolutionConsistency.expected @@ -1,15 +1,3 @@ -multiplePathResolutions -| main.rs:532:10:532:18 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:532:10:532:18 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:532:10:532:18 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:532:10:532:18 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:532:10:532:18 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:532:10:532:18 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:532:10:532:18 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:538:10:538:18 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:538:10:538:18 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:538:10:538:18 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:538:10:538:18 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:538:10:538:18 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:538:10:538:18 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:538:10:538:18 | ...::from | file://:0:0:0:0 | fn from | +multipleCallTargets +| main.rs:532:10:532:21 | ...::from(...) | +| main.rs:538:10:538:21 | ...::from(...) | diff --git a/rust/ql/test/library-tests/dataflow/local/Cargo.lock b/rust/ql/test/library-tests/dataflow/local/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/local/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 4186b0841334..10fe084f0a2b 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -1,5 +1,4 @@ localStep -| file://:0:0:0:0 | [summary param] self in lang:std::_::::canonicalize | file://:0:0:0:0 | [summary] read: Argument[self].OptionalBarrier[normalize-path] in lang:std::_::::canonicalize | | main.rs:3:11:3:11 | [SSA] i | main.rs:4:12:4:12 | i | | main.rs:3:11:3:11 | i | main.rs:3:11:3:11 | [SSA] i | | main.rs:3:11:3:11 | i | main.rs:3:11:3:11 | i | @@ -115,6 +114,8 @@ localStep | main.rs:89:9:89:9 | i | main.rs:89:9:89:9 | [SSA] i | | main.rs:89:9:89:9 | i | main.rs:89:9:89:9 | i | | main.rs:89:13:89:31 | ...::new(...) | main.rs:89:9:89:9 | i | +| main.rs:90:11:90:11 | [post] receiver for i | main.rs:90:11:90:11 | [post] i | +| main.rs:90:11:90:11 | i | main.rs:90:11:90:11 | receiver for i | | main.rs:97:9:97:9 | [SSA] a | main.rs:98:10:98:10 | a | | main.rs:97:9:97:9 | a | main.rs:97:9:97:9 | [SSA] a | | main.rs:97:9:97:9 | a | main.rs:97:9:97:9 | a | @@ -323,46 +324,46 @@ localStep | main.rs:263:9:263:10 | i1 | main.rs:263:9:263:10 | i1 | | main.rs:263:14:263:16 | TryExpr | main.rs:263:9:263:10 | i1 | | main.rs:266:5:266:11 | Some(...) | main.rs:260:41:267:1 | { ... } | -| main.rs:270:9:270:10 | [SSA] r1 | main.rs:271:29:271:30 | r1 | +| main.rs:270:9:270:10 | [SSA] r1 | main.rs:271:28:271:29 | r1 | | main.rs:270:9:270:10 | r1 | main.rs:270:9:270:10 | [SSA] r1 | | main.rs:270:9:270:10 | r1 | main.rs:270:9:270:10 | r1 | -| main.rs:270:33:270:46 | Ok(...) | main.rs:270:9:270:10 | r1 | +| main.rs:270:32:270:45 | Ok(...) | main.rs:270:9:270:10 | r1 | | main.rs:271:9:271:11 | [SSA] o1a | main.rs:273:10:273:12 | o1a | | main.rs:271:9:271:11 | o1a | main.rs:271:9:271:11 | [SSA] o1a | | main.rs:271:9:271:11 | o1a | main.rs:271:9:271:11 | o1a | -| main.rs:271:29:271:30 | [post] r1 | main.rs:272:29:272:30 | r1 | -| main.rs:271:29:271:30 | [post] receiver for r1 | main.rs:271:29:271:30 | [post] r1 | -| main.rs:271:29:271:30 | r1 | main.rs:271:29:271:30 | receiver for r1 | -| main.rs:271:29:271:30 | r1 | main.rs:272:29:272:30 | r1 | -| main.rs:271:29:271:35 | r1.ok() | main.rs:271:9:271:11 | o1a | +| main.rs:271:28:271:29 | [post] r1 | main.rs:272:28:272:29 | r1 | +| main.rs:271:28:271:29 | [post] receiver for r1 | main.rs:271:28:271:29 | [post] r1 | +| main.rs:271:28:271:29 | r1 | main.rs:271:28:271:29 | receiver for r1 | +| main.rs:271:28:271:29 | r1 | main.rs:272:28:272:29 | r1 | +| main.rs:271:28:271:34 | r1.ok() | main.rs:271:9:271:11 | o1a | | main.rs:272:9:272:11 | [SSA] o1b | main.rs:274:10:274:12 | o1b | | main.rs:272:9:272:11 | o1b | main.rs:272:9:272:11 | [SSA] o1b | | main.rs:272:9:272:11 | o1b | main.rs:272:9:272:11 | o1b | -| main.rs:272:29:272:30 | [post] receiver for r1 | main.rs:272:29:272:30 | [post] r1 | -| main.rs:272:29:272:30 | r1 | main.rs:272:29:272:30 | receiver for r1 | -| main.rs:272:29:272:36 | r1.err() | main.rs:272:9:272:11 | o1b | +| main.rs:272:28:272:29 | [post] receiver for r1 | main.rs:272:28:272:29 | [post] r1 | +| main.rs:272:28:272:29 | r1 | main.rs:272:28:272:29 | receiver for r1 | +| main.rs:272:28:272:35 | r1.err() | main.rs:272:9:272:11 | o1b | | main.rs:273:10:273:12 | [post] receiver for o1a | main.rs:273:10:273:12 | [post] o1a | | main.rs:273:10:273:12 | o1a | main.rs:273:10:273:12 | receiver for o1a | | main.rs:274:10:274:12 | [post] receiver for o1b | main.rs:274:10:274:12 | [post] o1b | | main.rs:274:10:274:12 | o1b | main.rs:274:10:274:12 | receiver for o1b | -| main.rs:276:9:276:10 | [SSA] r2 | main.rs:277:29:277:30 | r2 | +| main.rs:276:9:276:10 | [SSA] r2 | main.rs:277:28:277:29 | r2 | | main.rs:276:9:276:10 | r2 | main.rs:276:9:276:10 | [SSA] r2 | | main.rs:276:9:276:10 | r2 | main.rs:276:9:276:10 | r2 | -| main.rs:276:33:276:47 | Err(...) | main.rs:276:9:276:10 | r2 | +| main.rs:276:32:276:46 | Err(...) | main.rs:276:9:276:10 | r2 | | main.rs:277:9:277:11 | [SSA] o2a | main.rs:279:10:279:12 | o2a | | main.rs:277:9:277:11 | o2a | main.rs:277:9:277:11 | [SSA] o2a | | main.rs:277:9:277:11 | o2a | main.rs:277:9:277:11 | o2a | -| main.rs:277:29:277:30 | [post] r2 | main.rs:278:29:278:30 | r2 | -| main.rs:277:29:277:30 | [post] receiver for r2 | main.rs:277:29:277:30 | [post] r2 | -| main.rs:277:29:277:30 | r2 | main.rs:277:29:277:30 | receiver for r2 | -| main.rs:277:29:277:30 | r2 | main.rs:278:29:278:30 | r2 | -| main.rs:277:29:277:35 | r2.ok() | main.rs:277:9:277:11 | o2a | +| main.rs:277:28:277:29 | [post] r2 | main.rs:278:28:278:29 | r2 | +| main.rs:277:28:277:29 | [post] receiver for r2 | main.rs:277:28:277:29 | [post] r2 | +| main.rs:277:28:277:29 | r2 | main.rs:277:28:277:29 | receiver for r2 | +| main.rs:277:28:277:29 | r2 | main.rs:278:28:278:29 | r2 | +| main.rs:277:28:277:34 | r2.ok() | main.rs:277:9:277:11 | o2a | | main.rs:278:9:278:11 | [SSA] o2b | main.rs:280:10:280:12 | o2b | | main.rs:278:9:278:11 | o2b | main.rs:278:9:278:11 | [SSA] o2b | | main.rs:278:9:278:11 | o2b | main.rs:278:9:278:11 | o2b | -| main.rs:278:29:278:30 | [post] receiver for r2 | main.rs:278:29:278:30 | [post] r2 | -| main.rs:278:29:278:30 | r2 | main.rs:278:29:278:30 | receiver for r2 | -| main.rs:278:29:278:36 | r2.err() | main.rs:278:9:278:11 | o2b | +| main.rs:278:28:278:29 | [post] receiver for r2 | main.rs:278:28:278:29 | [post] r2 | +| main.rs:278:28:278:29 | r2 | main.rs:278:28:278:29 | receiver for r2 | +| main.rs:278:28:278:35 | r2.err() | main.rs:278:9:278:11 | o2b | | main.rs:279:10:279:12 | [post] receiver for o2a | main.rs:279:10:279:12 | [post] o2a | | main.rs:279:10:279:12 | o2a | main.rs:279:10:279:12 | receiver for o2a | | main.rs:280:10:280:12 | [post] receiver for o2b | main.rs:280:10:280:12 | [post] o2b | @@ -702,23 +703,23 @@ localStep | main.rs:469:9:469:9 | [SSA] c | main.rs:474:10:474:10 | c | | main.rs:469:9:469:9 | c | main.rs:469:9:469:9 | [SSA] c | | main.rs:469:9:469:9 | c | main.rs:469:9:469:9 | c | -| main.rs:469:13:469:13 | [post] b | main.rs:470:19:470:19 | b | +| main.rs:469:13:469:13 | [post] b | main.rs:470:18:470:18 | b | | main.rs:469:13:469:13 | [post] receiver for b | main.rs:469:13:469:13 | [post] b | | main.rs:469:13:469:13 | b | main.rs:469:13:469:13 | receiver for b | -| main.rs:469:13:469:13 | b | main.rs:470:19:470:19 | b | +| main.rs:469:13:469:13 | b | main.rs:470:18:470:18 | b | | main.rs:469:13:469:28 | [post] receiver for b.parse() | main.rs:469:13:469:28 | [post] b.parse() | | main.rs:469:13:469:28 | b.parse() | main.rs:469:13:469:28 | receiver for b.parse() | | main.rs:469:13:469:37 | ... .unwrap() | main.rs:469:9:469:9 | c | | main.rs:470:9:470:9 | [SSA] d | main.rs:475:10:475:10 | d | | main.rs:470:9:470:9 | d | main.rs:470:9:470:9 | [SSA] d | | main.rs:470:9:470:9 | d | main.rs:470:9:470:9 | d | -| main.rs:470:19:470:19 | [post] b | main.rs:473:17:473:17 | b | -| main.rs:470:19:470:19 | [post] receiver for b | main.rs:470:19:470:19 | [post] b | -| main.rs:470:19:470:19 | b | main.rs:470:19:470:19 | receiver for b | -| main.rs:470:19:470:19 | b | main.rs:473:17:473:17 | b | -| main.rs:470:19:470:27 | [post] receiver for b.parse() | main.rs:470:19:470:27 | [post] b.parse() | -| main.rs:470:19:470:27 | b.parse() | main.rs:470:19:470:27 | receiver for b.parse() | -| main.rs:470:19:470:36 | ... .unwrap() | main.rs:470:9:470:9 | d | +| main.rs:470:18:470:18 | [post] b | main.rs:473:17:473:17 | b | +| main.rs:470:18:470:18 | [post] receiver for b | main.rs:470:18:470:18 | [post] b | +| main.rs:470:18:470:18 | b | main.rs:470:18:470:18 | receiver for b | +| main.rs:470:18:470:18 | b | main.rs:473:17:473:17 | b | +| main.rs:470:18:470:26 | [post] receiver for b.parse() | main.rs:470:18:470:26 | [post] b.parse() | +| main.rs:470:18:470:26 | b.parse() | main.rs:470:18:470:26 | receiver for b.parse() | +| main.rs:470:18:470:35 | ... .unwrap() | main.rs:470:9:470:9 | d | | main.rs:479:9:479:10 | [SSA] vs | main.rs:481:10:481:11 | vs | | main.rs:479:9:479:10 | vs | main.rs:479:9:479:10 | [SSA] vs | | main.rs:479:9:479:10 | vs | main.rs:479:9:479:10 | vs | @@ -733,6 +734,8 @@ localStep | main.rs:482:11:482:19 | vs.iter() | main.rs:482:11:482:19 | receiver for vs.iter() | | main.rs:482:11:482:26 | ... .next() | main.rs:482:11:482:26 | receiver for ... .next() | | main.rs:482:11:482:26 | [post] receiver for ... .next() | main.rs:482:11:482:26 | [post] ... .next() | +| main.rs:482:11:482:35 | ... .unwrap() | main.rs:482:11:482:35 | receiver for ... .unwrap() | +| main.rs:482:11:482:35 | [post] receiver for ... .unwrap() | main.rs:482:11:482:35 | [post] ... .unwrap() | | main.rs:483:11:483:12 | [post] receiver for vs | main.rs:483:11:483:12 | [post] vs | | main.rs:483:11:483:12 | [post] vs | main.rs:485:14:485:15 | vs | | main.rs:483:11:483:12 | vs | main.rs:483:11:483:12 | receiver for vs | @@ -741,6 +744,8 @@ localStep | main.rs:483:11:483:19 | vs.iter() | main.rs:483:11:483:19 | receiver for vs.iter() | | main.rs:483:11:483:26 | ... .nth(...) | main.rs:483:11:483:26 | receiver for ... .nth(...) | | main.rs:483:11:483:26 | [post] receiver for ... .nth(...) | main.rs:483:11:483:26 | [post] ... .nth(...) | +| main.rs:483:11:483:35 | ... .unwrap() | main.rs:483:11:483:35 | receiver for ... .unwrap() | +| main.rs:483:11:483:35 | [post] receiver for ... .unwrap() | main.rs:483:11:483:35 | [post] ... .unwrap() | | main.rs:485:9:485:9 | [SSA] v | main.rs:486:14:486:14 | v | | main.rs:485:9:485:9 | v | main.rs:485:9:485:9 | [SSA] v | | main.rs:485:9:485:9 | v | main.rs:485:9:485:9 | v | @@ -749,19 +754,19 @@ localStep | main.rs:488:10:488:10 | v | main.rs:488:10:488:10 | [SSA] v | | main.rs:488:10:488:10 | v | main.rs:488:10:488:10 | v | | main.rs:488:15:488:16 | [post] receiver for vs | main.rs:488:15:488:16 | [post] vs | -| main.rs:488:15:488:16 | [post] vs | main.rs:492:27:492:28 | vs | +| main.rs:488:15:488:16 | [post] vs | main.rs:492:26:492:27 | vs | | main.rs:488:15:488:16 | vs | main.rs:488:15:488:16 | receiver for vs | -| main.rs:488:15:488:16 | vs | main.rs:492:27:492:28 | vs | +| main.rs:488:15:488:16 | vs | main.rs:492:26:492:27 | vs | | main.rs:492:9:492:11 | [SSA] vs2 | main.rs:493:15:493:17 | vs2 | | main.rs:492:9:492:11 | vs2 | main.rs:492:9:492:11 | [SSA] vs2 | | main.rs:492:9:492:11 | vs2 | main.rs:492:9:492:11 | vs2 | -| main.rs:492:27:492:28 | [post] receiver for vs | main.rs:492:27:492:28 | [post] vs | -| main.rs:492:27:492:28 | [post] vs | main.rs:497:5:497:6 | vs | -| main.rs:492:27:492:28 | vs | main.rs:492:27:492:28 | receiver for vs | -| main.rs:492:27:492:28 | vs | main.rs:497:5:497:6 | vs | -| main.rs:492:27:492:35 | [post] receiver for vs.iter() | main.rs:492:27:492:35 | [post] vs.iter() | -| main.rs:492:27:492:35 | vs.iter() | main.rs:492:27:492:35 | receiver for vs.iter() | -| main.rs:492:27:492:45 | ... .collect() | main.rs:492:9:492:11 | vs2 | +| main.rs:492:26:492:27 | [post] receiver for vs | main.rs:492:26:492:27 | [post] vs | +| main.rs:492:26:492:27 | [post] vs | main.rs:497:5:497:6 | vs | +| main.rs:492:26:492:27 | vs | main.rs:492:26:492:27 | receiver for vs | +| main.rs:492:26:492:27 | vs | main.rs:497:5:497:6 | vs | +| main.rs:492:26:492:34 | [post] receiver for vs.iter() | main.rs:492:26:492:34 | [post] vs.iter() | +| main.rs:492:26:492:34 | vs.iter() | main.rs:492:26:492:34 | receiver for vs.iter() | +| main.rs:492:26:492:44 | ... .collect() | main.rs:492:9:492:11 | vs2 | | main.rs:493:10:493:10 | [SSA] v | main.rs:494:14:494:14 | v | | main.rs:493:10:493:10 | v | main.rs:493:10:493:10 | [SSA] v | | main.rs:493:10:493:10 | v | main.rs:493:10:493:10 | v | @@ -775,6 +780,8 @@ localStep | main.rs:497:20:497:20 | [SSA] x | main.rs:497:29:497:29 | x | | main.rs:497:20:497:20 | x | main.rs:497:20:497:20 | [SSA] x | | main.rs:497:20:497:20 | x | main.rs:497:20:497:20 | x | +| main.rs:497:29:497:29 | [post] receiver for x | main.rs:497:29:497:29 | [post] x | +| main.rs:497:29:497:29 | x | main.rs:497:29:497:29 | receiver for x | | main.rs:498:5:498:6 | [post] receiver for vs | main.rs:498:5:498:6 | [post] vs | | main.rs:498:5:498:6 | [post] vs | main.rs:500:14:500:15 | vs | | main.rs:498:5:498:6 | vs | main.rs:498:5:498:6 | receiver for vs | @@ -785,6 +792,8 @@ localStep | main.rs:498:25:498:25 | [SSA] x | main.rs:498:34:498:34 | x | | main.rs:498:25:498:25 | x | main.rs:498:25:498:25 | [SSA] x | | main.rs:498:25:498:25 | x | main.rs:498:25:498:25 | x | +| main.rs:498:34:498:34 | [post] receiver for x | main.rs:498:34:498:34 | [post] x | +| main.rs:498:34:498:34 | x | main.rs:498:34:498:34 | receiver for x | | main.rs:500:9:500:9 | [SSA] v | main.rs:501:14:501:14 | v | | main.rs:500:9:500:9 | v | main.rs:500:9:500:9 | [SSA] v | | main.rs:500:9:500:9 | v | main.rs:500:9:500:9 | v | @@ -810,6 +819,8 @@ localStep | main.rs:507:11:507:23 | vs_mut.iter() | main.rs:507:11:507:23 | receiver for vs_mut.iter() | | main.rs:507:11:507:30 | ... .next() | main.rs:507:11:507:30 | receiver for ... .next() | | main.rs:507:11:507:30 | [post] receiver for ... .next() | main.rs:507:11:507:30 | [post] ... .next() | +| main.rs:507:11:507:39 | ... .unwrap() | main.rs:507:11:507:39 | receiver for ... .unwrap() | +| main.rs:507:11:507:39 | [post] receiver for ... .unwrap() | main.rs:507:11:507:39 | [post] ... .unwrap() | | main.rs:508:11:508:16 | [SSA] vs_mut | main.rs:510:19:510:24 | vs_mut | | main.rs:508:11:508:16 | [post] receiver for vs_mut | main.rs:508:11:508:16 | [post] vs_mut | | main.rs:508:11:508:16 | [post] vs_mut | main.rs:510:19:510:24 | vs_mut | @@ -819,6 +830,8 @@ localStep | main.rs:508:11:508:23 | vs_mut.iter() | main.rs:508:11:508:23 | receiver for vs_mut.iter() | | main.rs:508:11:508:30 | ... .nth(...) | main.rs:508:11:508:30 | receiver for ... .nth(...) | | main.rs:508:11:508:30 | [post] receiver for ... .nth(...) | main.rs:508:11:508:30 | [post] ... .nth(...) | +| main.rs:508:11:508:39 | ... .unwrap() | main.rs:508:11:508:39 | receiver for ... .unwrap() | +| main.rs:508:11:508:39 | [post] receiver for ... .unwrap() | main.rs:508:11:508:39 | [post] ... .unwrap() | | main.rs:510:5:512:5 | for ... in ... { ... } | main.rs:478:16:513:1 | { ... } | | main.rs:510:14:510:14 | [SSA] v | main.rs:511:14:511:14 | v | | main.rs:510:14:510:14 | v | main.rs:510:14:510:14 | [SSA] v | @@ -843,6 +856,8 @@ localStep | main.rs:519:17:519:18 | &c | main.rs:519:9:519:13 | c_ref | | main.rs:523:14:523:18 | [post] c_ref | main.rs:524:11:524:15 | c_ref | | main.rs:523:14:523:18 | c_ref | main.rs:524:11:524:15 | c_ref | +| main.rs:524:11:524:15 | [post] receiver for c_ref | main.rs:524:11:524:15 | [post] c_ref | +| main.rs:524:11:524:15 | c_ref | main.rs:524:11:524:15 | receiver for c_ref | | main.rs:528:9:528:9 | [SSA] a | main.rs:530:10:530:10 | a | | main.rs:528:9:528:9 | a | main.rs:528:9:528:9 | [SSA] a | | main.rs:528:9:528:9 | a | main.rs:528:9:528:9 | a | @@ -868,6 +883,7 @@ localStep | main.rs:577:36:577:41 | [post] MacroExpr | main.rs:577:36:577:41 | [post] ...::new(...) | readStep | main.rs:36:9:36:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:36:14:36:14 | _ | +| main.rs:90:11:90:11 | [post] receiver for i | file://:0:0:0:0 | &ref | main.rs:90:11:90:11 | [post] i | | 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 | @@ -962,6 +978,8 @@ readStep | main.rs:442:25:442:29 | names | file://:0:0:0:0 | element | main.rs:442:9:442:20 | TuplePat | | main.rs:444:41:444:67 | [post] \|...\| ... | main.rs:441:9:441:20 | captured default_name | main.rs:444:41:444:67 | [post] default_name | | main.rs:444:44:444:55 | this | main.rs:441:9:441:20 | captured default_name | main.rs:444:44:444:55 | default_name | +| main.rs:469:13:469:13 | [post] receiver for b | file://:0:0:0:0 | &ref | main.rs:469:13:469:13 | [post] b | +| main.rs:470:18:470:18 | [post] receiver for b | file://:0:0:0:0 | &ref | main.rs:470:18:470:18 | [post] b | | main.rs:481:10:481:11 | vs | file://:0:0:0:0 | element | main.rs:481:10:481:14 | vs[0] | | main.rs:482:11:482:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:482:10:482:35 | * ... | | main.rs:483:11:483:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:483:10:483:35 | * ... | @@ -980,6 +998,7 @@ readStep | 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:90:11:90:11 | i | file://:0:0:0:0 | &ref | main.rs:90:11:90:11 | receiver for i | | 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 | @@ -1021,8 +1040,8 @@ storeStep | 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:270:35:270:44 | source(...) | {EXTERNAL LOCATION} | Ok | main.rs:270:32:270:45 | Ok(...) | +| main.rs:276:36:276:45 | source(...) | {EXTERNAL LOCATION} | Err | main.rs:276:32:276:46 | 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(...) | @@ -1058,6 +1077,8 @@ storeStep | 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:469:13:469:13 | b | file://:0:0:0:0 | &ref | main.rs:469:13:469:13 | receiver for b | +| main.rs:470:18:470:18 | b | file://:0:0:0:0 | &ref | main.rs:470:18:470:18 | receiver for b | | 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 | [...] | diff --git a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected index cf3fd262c65a..2ce9725fb380 100644 --- a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected @@ -1,15 +1,14 @@ models -| 1 | Summary: lang:alloc; ::new; Argument[0]; ReturnValue.Reference; value | -| 2 | Summary: lang:core; <_ as crate::convert::From>::from; Argument[0]; ReturnValue; value | -| 3 | Summary: lang:core; ::unwrap; Argument[self].Field[crate::option::Option::Some(0)]; ReturnValue; value | -| 4 | Summary: lang:core; ::unwrap_or; Argument[0]; ReturnValue; value | -| 5 | Summary: lang:core; ::unwrap_or; Argument[self].Field[crate::option::Option::Some(0)]; ReturnValue; value | -| 6 | Summary: lang:core; ::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value | -| 7 | Summary: lang:core; ::unwrap_or_else; Argument[self].Field[crate::option::Option::Some(0)]; ReturnValue; value | -| 8 | Summary: lang:core; ::err; Argument[self].Field[crate::result::Result::Err(0)]; ReturnValue.Field[crate::option::Option::Some(0)]; value | -| 9 | Summary: lang:core; ::expect; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value | -| 10 | Summary: lang:core; ::expect_err; Argument[self].Field[crate::result::Result::Err(0)]; ReturnValue; value | -| 11 | Summary: lang:core; ::ok; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue.Field[crate::option::Option::Some(0)]; value | +| 1 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 2 | Summary: ::unwrap_or; Argument[0]; ReturnValue; value | +| 3 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 4 | Summary: ::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value | +| 5 | Summary: ::unwrap_or_else; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 6 | Summary: ::err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 7 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 8 | Summary: ::expect_err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue; value | +| 9 | Summary: ::ok; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 10 | Summary: lang:alloc; ::new; Argument[0]; ReturnValue.Reference; value | edges | main.rs:22:9:22:9 | s | main.rs:23:10:23:10 | s | provenance | | | main.rs:22:13:22:21 | source(...) | main.rs:22:9:22:9 | s | provenance | | @@ -25,7 +24,7 @@ edges | main.rs:56:9:56:17 | source(...) | main.rs:56:5:56:5 | i | provenance | | | main.rs:89:9:89:9 | i [&ref] | main.rs:90:11:90:11 | i [&ref] | provenance | | | main.rs:89:13:89:31 | ...::new(...) [&ref] | main.rs:89:9:89:9 | i [&ref] | provenance | | -| main.rs:89:22:89:30 | source(...) | main.rs:89:13:89:31 | ...::new(...) [&ref] | provenance | MaD:1 | +| main.rs:89:22:89:30 | source(...) | main.rs:89:13:89:31 | ...::new(...) [&ref] | provenance | MaD:10 | | main.rs:90:11:90:11 | i [&ref] | main.rs:90:10:90:11 | * ... | provenance | | | main.rs:97:9:97:9 | a [tuple.0] | main.rs:98:10:98:10 | a [tuple.0] | provenance | | | main.rs:97:13:97:26 | TupleExpr [tuple.0] | main.rs:97:9:97:9 | a [tuple.0] | provenance | | @@ -100,43 +99,43 @@ edges | main.rs:229:11:229:12 | s1 [Some] | main.rs:230:9:230:15 | Some(...) [Some] | provenance | | | main.rs:230:9:230:15 | Some(...) [Some] | main.rs:230:14:230:14 | n | provenance | | | main.rs:230:14:230:14 | n | main.rs:230:25:230:25 | n | provenance | | -| main.rs:240:9:240:10 | s1 [Some] | main.rs:241:10:241:20 | s1.unwrap() | provenance | MaD:3 | +| main.rs:240:9:240:10 | s1 [Some] | main.rs:241:10:241:20 | s1.unwrap() | provenance | MaD:1 | | main.rs:240:14:240:29 | Some(...) [Some] | main.rs:240:9:240:10 | s1 [Some] | provenance | | | main.rs:240:19:240:28 | source(...) | main.rs:240:14:240:29 | Some(...) [Some] | provenance | | -| main.rs:245:9:245:10 | s1 [Some] | main.rs:246:10:246:24 | s1.unwrap_or(...) | provenance | MaD:5 | +| main.rs:245:9:245:10 | s1 [Some] | main.rs:246:10:246:24 | s1.unwrap_or(...) | provenance | MaD:3 | | main.rs:245:14:245:29 | Some(...) [Some] | main.rs:245:9:245:10 | s1 [Some] | provenance | | | main.rs:245:19:245:28 | source(...) | main.rs:245:14:245:29 | Some(...) [Some] | provenance | | -| main.rs:249:23:249:32 | source(...) | main.rs:249:10:249:33 | s2.unwrap_or(...) | provenance | MaD:4 | -| main.rs:253:9:253:10 | s1 [Some] | main.rs:254:10:254:32 | s1.unwrap_or_else(...) | provenance | MaD:7 | +| main.rs:249:23:249:32 | source(...) | main.rs:249:10:249:33 | s2.unwrap_or(...) | provenance | MaD:2 | +| main.rs:253:9:253:10 | s1 [Some] | main.rs:254:10:254:32 | s1.unwrap_or_else(...) | provenance | MaD:5 | | main.rs:253:14:253:29 | Some(...) [Some] | main.rs:253:9:253:10 | s1 [Some] | provenance | | | main.rs:253:19:253:28 | source(...) | main.rs:253:14:253:29 | Some(...) [Some] | provenance | | -| main.rs:257:31:257:40 | source(...) | main.rs:257:10:257:41 | s2.unwrap_or_else(...) | provenance | MaD:6 | +| main.rs:257:31:257:40 | source(...) | main.rs:257:10:257:41 | s2.unwrap_or_else(...) | provenance | MaD:4 | | main.rs:261:9:261:10 | s1 [Some] | main.rs:263:14:263:15 | s1 [Some] | provenance | | | main.rs:261:14:261:29 | Some(...) [Some] | main.rs:261:9:261:10 | s1 [Some] | provenance | | | main.rs:261:19:261:28 | source(...) | main.rs:261:14:261:29 | Some(...) [Some] | provenance | | | main.rs:263:9:263:10 | i1 | main.rs:264:10:264:11 | i1 | provenance | | | main.rs:263:14:263:15 | s1 [Some] | main.rs:263:14:263:16 | TryExpr | provenance | | | main.rs:263:14:263:16 | TryExpr | main.rs:263:9:263:10 | i1 | provenance | | -| main.rs:270:9:270:10 | r1 [Ok] | main.rs:271:29:271:35 | r1.ok() [Some] | provenance | MaD:11 | -| main.rs:270:33:270:46 | Ok(...) [Ok] | main.rs:270:9:270:10 | r1 [Ok] | provenance | | -| main.rs:270:36:270:45 | source(...) | main.rs:270:33:270:46 | Ok(...) [Ok] | provenance | | -| main.rs:271:9:271:11 | o1a [Some] | main.rs:273:10:273:21 | o1a.unwrap() | provenance | MaD:3 | -| main.rs:271:29:271:35 | r1.ok() [Some] | main.rs:271:9:271:11 | o1a [Some] | provenance | | -| main.rs:276:9:276:10 | r2 [Err] | main.rs:278:29:278:36 | r2.err() [Some] | provenance | MaD:8 | -| main.rs:276:33:276:47 | Err(...) [Err] | main.rs:276:9:276:10 | r2 [Err] | provenance | | -| main.rs:276:37:276:46 | source(...) | main.rs:276:33:276:47 | Err(...) [Err] | provenance | | -| main.rs:278:9:278:11 | o2b [Some] | main.rs:280:10:280:21 | o2b.unwrap() | provenance | MaD:3 | -| main.rs:278:29:278:36 | r2.err() [Some] | main.rs:278:9:278:11 | o2b [Some] | provenance | | +| main.rs:270:9:270:10 | r1 [Ok] | main.rs:271:28:271:34 | r1.ok() [Some] | provenance | MaD:9 | +| main.rs:270:32:270:45 | Ok(...) [Ok] | main.rs:270:9:270:10 | r1 [Ok] | provenance | | +| main.rs:270:35:270:44 | source(...) | main.rs:270:32:270:45 | Ok(...) [Ok] | provenance | | +| main.rs:271:9:271:11 | o1a [Some] | main.rs:273:10:273:21 | o1a.unwrap() | provenance | MaD:1 | +| main.rs:271:28:271:34 | r1.ok() [Some] | main.rs:271:9:271:11 | o1a [Some] | provenance | | +| main.rs:276:9:276:10 | r2 [Err] | main.rs:278:28:278:35 | r2.err() [Some] | provenance | MaD:6 | +| main.rs:276:32:276:46 | Err(...) [Err] | main.rs:276:9:276:10 | r2 [Err] | provenance | | +| main.rs:276:36:276:45 | source(...) | main.rs:276:32:276:46 | Err(...) [Err] | provenance | | +| main.rs:278:9:278:11 | o2b [Some] | main.rs:280:10:280:21 | o2b.unwrap() | provenance | MaD:1 | +| main.rs:278:28:278:35 | r2.err() [Some] | main.rs:278:9:278:11 | o2b [Some] | provenance | | | main.rs:284:9:284:10 | s1 [Ok] | main.rs:287:14:287:15 | s1 [Ok] | provenance | | | main.rs:284:32:284:45 | Ok(...) [Ok] | main.rs:284:9:284:10 | s1 [Ok] | provenance | | | main.rs:284:35:284:44 | source(...) | main.rs:284:32:284:45 | Ok(...) [Ok] | provenance | | | main.rs:287:9:287:10 | i1 | main.rs:289:10:289:11 | i1 | provenance | | | main.rs:287:14:287:15 | s1 [Ok] | main.rs:287:14:287:16 | TryExpr | provenance | | | main.rs:287:14:287:16 | TryExpr | main.rs:287:9:287:10 | i1 | provenance | | -| main.rs:297:9:297:10 | s1 [Ok] | main.rs:298:10:298:22 | s1.expect(...) | provenance | MaD:9 | +| main.rs:297:9:297:10 | s1 [Ok] | main.rs:298:10:298:22 | s1.expect(...) | provenance | MaD:7 | | main.rs:297:32:297:45 | Ok(...) [Ok] | main.rs:297:9:297:10 | s1 [Ok] | provenance | | | main.rs:297:35:297:44 | source(...) | main.rs:297:32:297:45 | Ok(...) [Ok] | provenance | | -| main.rs:301:9:301:10 | s2 [Err] | main.rs:303:10:303:26 | s2.expect_err(...) | provenance | MaD:10 | +| main.rs:301:9:301:10 | s2 [Err] | main.rs:303:10:303:26 | s2.expect_err(...) | provenance | MaD:8 | | main.rs:301:32:301:46 | Err(...) [Err] | main.rs:301:9:301:10 | s2 [Err] | provenance | | | main.rs:301:36:301:45 | source(...) | main.rs:301:32:301:46 | Err(...) [Err] | provenance | | | main.rs:312:9:312:10 | s1 [A] | main.rs:314:11:314:12 | s1 [A] | provenance | | @@ -236,9 +235,6 @@ edges | main.rs:519:17:519:18 | &c [&ref] | main.rs:519:9:519:13 | c_ref [&ref] | provenance | | | main.rs:519:18:519:18 | c | main.rs:519:17:519:18 | &c [&ref] | provenance | | | main.rs:524:11:524:15 | c_ref [&ref] | main.rs:524:10:524:15 | * ... | provenance | | -| main.rs:528:9:528:9 | a | main.rs:532:20:532:20 | a | provenance | | -| main.rs:528:18:528:27 | source(...) | main.rs:528:9:528:9 | a | provenance | | -| main.rs:532:20:532:20 | a | main.rs:532:10:532:21 | ...::from(...) | provenance | MaD:2 | nodes | main.rs:18:10:18:18 | source(...) | semmle.label | source(...) | | main.rs:22:9:22:9 | s | semmle.label | s | @@ -373,16 +369,16 @@ nodes | main.rs:263:14:263:16 | TryExpr | semmle.label | TryExpr | | main.rs:264:10:264:11 | i1 | semmle.label | i1 | | main.rs:270:9:270:10 | r1 [Ok] | semmle.label | r1 [Ok] | -| main.rs:270:33:270:46 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| main.rs:270:36:270:45 | source(...) | semmle.label | source(...) | +| main.rs:270:32:270:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| main.rs:270:35:270:44 | source(...) | semmle.label | source(...) | | main.rs:271:9:271:11 | o1a [Some] | semmle.label | o1a [Some] | -| main.rs:271:29:271:35 | r1.ok() [Some] | semmle.label | r1.ok() [Some] | +| main.rs:271:28:271:34 | r1.ok() [Some] | semmle.label | r1.ok() [Some] | | main.rs:273:10:273:21 | o1a.unwrap() | semmle.label | o1a.unwrap() | | main.rs:276:9:276:10 | r2 [Err] | semmle.label | r2 [Err] | -| main.rs:276:33:276:47 | Err(...) [Err] | semmle.label | Err(...) [Err] | -| main.rs:276:37:276:46 | source(...) | semmle.label | source(...) | +| main.rs:276:32:276:46 | Err(...) [Err] | semmle.label | Err(...) [Err] | +| main.rs:276:36:276:45 | source(...) | semmle.label | source(...) | | main.rs:278:9:278:11 | o2b [Some] | semmle.label | o2b [Some] | -| main.rs:278:29:278:36 | r2.err() [Some] | semmle.label | r2.err() [Some] | +| main.rs:278:28:278:35 | r2.err() [Some] | semmle.label | r2.err() [Some] | | main.rs:280:10:280:21 | o2b.unwrap() | semmle.label | o2b.unwrap() | | main.rs:284:9:284:10 | s1 [Ok] | semmle.label | s1 [Ok] | | main.rs:284:32:284:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | @@ -511,10 +507,6 @@ nodes | main.rs:521:10:521:10 | a | semmle.label | a | | main.rs:524:10:524:15 | * ... | semmle.label | * ... | | main.rs:524:11:524:15 | c_ref [&ref] | semmle.label | c_ref [&ref] | -| main.rs:528:9:528:9 | a | semmle.label | a | -| main.rs:528:18:528:27 | source(...) | semmle.label | source(...) | -| main.rs:532:10:532:21 | ...::from(...) | semmle.label | ...::from(...) | -| main.rs:532:20:532:20 | a | semmle.label | a | subpaths testFailures #select @@ -545,8 +537,8 @@ testFailures | main.rs:254:10:254:32 | s1.unwrap_or_else(...) | main.rs:253:19:253:28 | source(...) | main.rs:254:10:254:32 | s1.unwrap_or_else(...) | $@ | main.rs:253:19:253:28 | source(...) | source(...) | | main.rs:257:10:257:41 | s2.unwrap_or_else(...) | main.rs:257:31:257:40 | source(...) | main.rs:257:10:257:41 | s2.unwrap_or_else(...) | $@ | main.rs:257:31:257:40 | source(...) | source(...) | | main.rs:264:10:264:11 | i1 | main.rs:261:19:261:28 | source(...) | main.rs:264:10:264:11 | i1 | $@ | main.rs:261:19:261:28 | source(...) | source(...) | -| main.rs:273:10:273:21 | o1a.unwrap() | main.rs:270:36:270:45 | source(...) | main.rs:273:10:273:21 | o1a.unwrap() | $@ | main.rs:270:36:270:45 | source(...) | source(...) | -| main.rs:280:10:280:21 | o2b.unwrap() | main.rs:276:37:276:46 | source(...) | main.rs:280:10:280:21 | o2b.unwrap() | $@ | main.rs:276:37:276:46 | source(...) | source(...) | +| main.rs:273:10:273:21 | o1a.unwrap() | main.rs:270:35:270:44 | source(...) | main.rs:273:10:273:21 | o1a.unwrap() | $@ | main.rs:270:35:270:44 | source(...) | source(...) | +| main.rs:280:10:280:21 | o2b.unwrap() | main.rs:276:36:276:45 | source(...) | main.rs:280:10:280:21 | o2b.unwrap() | $@ | main.rs:276:36:276:45 | source(...) | source(...) | | main.rs:289:10:289:11 | i1 | main.rs:284:35:284:44 | source(...) | main.rs:289:10:289:11 | i1 | $@ | main.rs:284:35:284:44 | source(...) | source(...) | | main.rs:298:10:298:22 | s1.expect(...) | main.rs:297:35:297:44 | source(...) | main.rs:298:10:298:22 | s1.expect(...) | $@ | main.rs:297:35:297:44 | source(...) | source(...) | | main.rs:303:10:303:26 | s2.expect_err(...) | main.rs:301:36:301:45 | source(...) | main.rs:303:10:303:26 | s2.expect_err(...) | $@ | main.rs:301:36:301:45 | source(...) | source(...) | @@ -573,4 +565,3 @@ testFailures | main.rs:506:10:506:18 | vs_mut[0] | main.rs:504:23:504:32 | source(...) | main.rs:506:10:506:18 | vs_mut[0] | $@ | main.rs:504:23:504:32 | source(...) | source(...) | | main.rs:521:10:521:10 | a | main.rs:516:13:516:22 | source(...) | main.rs:521:10:521:10 | a | $@ | main.rs:516:13:516:22 | source(...) | source(...) | | main.rs:524:10:524:15 | * ... | main.rs:518:13:518:22 | source(...) | main.rs:524:10:524:15 | * ... | $@ | main.rs:518:13:518:22 | source(...) | source(...) | -| main.rs:532:10:532:21 | ...::from(...) | main.rs:528:18:528:27 | source(...) | main.rs:532:10:532:21 | ...::from(...) | $@ | main.rs:528:18:528:27 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/local/main.rs b/rust/ql/test/library-tests/dataflow/local/main.rs index 4323f58c880b..480154fd0a10 100644 --- a/rust/ql/test/library-tests/dataflow/local/main.rs +++ b/rust/ql/test/library-tests/dataflow/local/main.rs @@ -267,15 +267,15 @@ fn option_questionmark() -> Option { } fn option_ok() { - let r1 : Result = Ok(source(21)); - let o1a : Option = r1.ok(); - let o1b : Option = r1.err(); + let r1: Result = Ok(source(21)); + let o1a: Option = r1.ok(); + let o1b: Option = r1.err(); sink(o1a.unwrap()); // $ hasValueFlow=21 sink(o1b.unwrap()); - let r2 : Result = Err(source(22)); - let o2a : Option = r2.ok(); - let o2b : Option = r2.err(); + let r2: Result = Err(source(22)); + let o2a: Option = r2.ok(); + let o2b: Option = r2.err(); sink(o2a.unwrap()); sink(o2b.unwrap()); // $ hasValueFlow=22 } @@ -467,12 +467,12 @@ fn parse() { let a = source(90); let b = a.to_string(); let c = b.parse::().unwrap(); - let d : i64 = b.parse().unwrap(); + let d: i64 = b.parse().unwrap(); sink(a); // $ hasValueFlow=90 - sink_string(b); // $ hasTaintFlow=90 - sink(c); // $ hasTaintFlow=90 - sink(d); // $ hasTaintFlow=90 + sink_string(b); // $ MISSING: we are not currently able to resolve the `to_string` call above, which comes from `impl ToString for T` + sink(c); // $ MISSING: hasTaintFlow=90 - we are not currently able to resolve the `parse` call above + sink(d); // $ MISSING: hasTaintFlow=90 - we are not currently able to resolve the `parse` call above } fn iterators() { @@ -489,7 +489,7 @@ fn iterators() { sink(v); // $ MISSING: hasValueFlow=91 } - let vs2 : Vec<&i64> = vs.iter().collect(); + let vs2: Vec<&i64> = vs.iter().collect(); for &v in vs2 { sink(v); // $ MISSING: hasValueFlow=91 } @@ -529,7 +529,7 @@ fn conversions() { sink(a as i64); // $ hasTaintFlow=50 sink(a.into()); // $ MISSING: hasValueFlow=50 - sink(i64::from(a)); // $ hasValueFlow=50 + sink(i64::from(a)); // $ hasTaintFlow=50 let b: i32 = source(51) as i32; diff --git a/rust/ql/test/library-tests/dataflow/modeled/Cargo.lock b/rust/ql/test/library-tests/dataflow/modeled/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/modeled/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected index b1103e843b2e..cce06005edc7 100644 --- a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected @@ -1,37 +1,37 @@ 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 | +| 1 | Summary: ::clone; Argument[self].Reference; ReturnValue; value | +| 2 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 3 | Summary: ::zip; Argument[0].Field[core::option::Option::Some(0)]; ReturnValue.Field[core::option::Option::Some(0)].Field[1]; value | +| 4 | Summary: ::into_inner; Argument[0].Field[core::pin::Pin::__pointer]; ReturnValue; value | +| 5 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::__pointer]; value | +| 6 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 7 | Summary: lang:alloc; ::into_pin; Argument[0]; ReturnValue; value | +| 8 | Summary: lang:alloc; ::new; Argument[0]; ReturnValue.Reference; value | +| 9 | Summary: lang:alloc; ::pin; Argument[0]; ReturnValue.Reference; value | +| 10 | Summary: lang:core; ::into_inner; Argument[0]; ReturnValue; value | +| 11 | Summary: lang:core; ::new; Argument[0]; ReturnValue; value | +| 12 | Summary: lang:core; crate::ptr::read; Argument[0].Reference; ReturnValue; value | +| 13 | 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:2 | | 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:2 | | 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:6 | | 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:6 | | 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:1 | | 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 +58,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:3 | | 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:13 | +| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:12 | | 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 | | @@ -73,19 +73,23 @@ edges | main.rs:108:21:108:30 | source(...) | main.rs:108:13:108:17 | mut i | provenance | | | 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:13:109:20 | mut pin1 [Pin, &ref] | main.rs:115:31:115:34 | pin1 [Pin, &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:24:109:35 | ...::new(...) [Pin, &ref] | main.rs:109:13:109:20 | mut pin1 [Pin, &ref] | provenance | | +| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [&ref] | provenance | MaD:11 | +| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | provenance | MaD:5 | | 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 | | -| main.rs:110:33:110:33 | i | main.rs:110:24:110:34 | ...::pin(...) [&ref] | provenance | MaD:3 | +| main.rs:110:33:110:33 | i | main.rs:110:24:110:34 | ...::pin(...) [&ref] | provenance | MaD:9 | | main.rs:111:13:111:20 | mut pin3 [&ref] | main.rs:117:15:117:18 | pin3 [&ref] | provenance | | | main.rs:111:24:111:49 | ...::into_pin(...) [&ref] | main.rs:111:13:111:20 | mut pin3 [&ref] | provenance | | -| main.rs:111:38:111:48 | ...::new(...) [&ref] | main.rs:111:24:111:49 | ...::into_pin(...) [&ref] | provenance | MaD:1 | -| main.rs:111:47:111:47 | i | main.rs:111:38:111:48 | ...::new(...) [&ref] | provenance | MaD:2 | +| main.rs:111:38:111:48 | ...::new(...) [&ref] | main.rs:111:24:111:49 | ...::into_pin(...) [&ref] | provenance | MaD:7 | +| main.rs:111:47:111:47 | i | main.rs:111:38:111:48 | ...::new(...) [&ref] | provenance | MaD:8 | | 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:10 | +| main.rs:115:31:115:34 | pin1 [Pin, &ref] | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | provenance | MaD:4 | | 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 | | @@ -153,7 +157,9 @@ nodes | main.rs:108:13:108:17 | mut i | semmle.label | mut i | | main.rs:108:21:108:30 | source(...) | semmle.label | source(...) | | main.rs:109:13:109:20 | mut pin1 [&ref] | semmle.label | mut pin1 [&ref] | +| main.rs:109:13:109:20 | mut pin1 [Pin, &ref] | semmle.label | mut pin1 [Pin, &ref] | | main.rs:109:24:109:35 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | +| main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | | main.rs:109:33:109:34 | &i [&ref] | semmle.label | &i [&ref] | | main.rs:109:34:109:34 | i | semmle.label | i | | main.rs:110:13:110:20 | mut pin2 [&ref] | semmle.label | mut pin2 [&ref] | @@ -169,6 +175,7 @@ nodes | main.rs:115:14:115:35 | * ... | semmle.label | * ... | | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | semmle.label | ...::into_inner(...) [&ref] | | main.rs:115:31:115:34 | pin1 [&ref] | semmle.label | pin1 [&ref] | +| main.rs:115:31:115:34 | pin1 [Pin, &ref] | semmle.label | pin1 [Pin, &ref] | | main.rs:116:14:116:18 | * ... | semmle.label | * ... | | main.rs:116:15:116:18 | pin2 [&ref] | semmle.label | pin2 [&ref] | | main.rs:117:14:117:18 | * ... | semmle.label | * ... | diff --git a/rust/ql/test/library-tests/dataflow/modeled/main.rs b/rust/ql/test/library-tests/dataflow/modeled/main.rs index c660a33116dd..567fe9c59c78 100644 --- a/rust/ql/test/library-tests/dataflow/modeled/main.rs +++ b/rust/ql/test/library-tests/dataflow/modeled/main.rs @@ -115,7 +115,7 @@ fn test_pin() { sink(*Pin::into_inner(pin1)); // $ hasValueFlow=40 sink(*pin2); // $ hasValueFlow=40 sink(*pin3); // $ hasValueFlow=40 - sink(*pin4); // $ MISSING: hasValueFlow=40 + sink(*pin4); // $ hasTaintFlow=40 } { diff --git a/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..ebe4e66e6e2a --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,2 @@ +multipleCallTargets +| main.rs:362:14:362:30 | ... .lt(...) | diff --git a/rust/ql/test/library-tests/dataflow/models/Cargo.lock b/rust/ql/test/library-tests/dataflow/models/Cargo.lock new file mode 100644 index 000000000000..7fcff65a5e51 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/models/Cargo.lock @@ -0,0 +1,348 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.59.0", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "signal-hook-registry" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +dependencies = [ + "libc", +] + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "tokio", +] + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" diff --git a/rust/ql/test/library-tests/dataflow/models/main.rs b/rust/ql/test/library-tests/dataflow/models/main.rs index 54337a1f0214..0430b6f8dff1 100644 --- a/rust/ql/test/library-tests/dataflow/models/main.rs +++ b/rust/ql/test/library-tests/dataflow/models/main.rs @@ -2,8 +2,8 @@ fn source(i: i64) -> i64 { 1000 + i } -fn sink(s: i64) { - println!("{}", s); +fn sink(s: T) { + println!("{:?}", s); } // has a flow model @@ -176,7 +176,10 @@ fn test_set_tuple_element() { } // has a flow model -pub fn apply(n: i64, f: F) -> i64 where F : FnOnce(i64) -> i64 { +pub fn apply(n: i64, f: F) -> i64 +where + F: FnOnce(i64) -> i64, +{ 0 } @@ -288,6 +291,81 @@ fn test_arg_source() { sink(i) // $ hasValueFlow=i } +struct MyStruct2(i64); + +impl PartialEq for MyStruct { + fn eq(&self, other: &Self) -> bool { + true + } +} + +impl PartialEq for MyStruct2 { + fn eq(&self, other: &Self) -> bool { + self.0 == other.0 + } +} + +impl Eq for MyStruct {} + +impl Eq for MyStruct2 {} + +use std::cmp::Ordering; + +impl PartialOrd for MyStruct { + fn partial_cmp(&self, other: &Self) -> Option { + Some(Ordering::Equal) + } +} + +impl PartialOrd for MyStruct2 { + fn partial_cmp(&self, other: &Self) -> Option { + Some(self.0.cmp(&other.0)) + } +} + +impl Ord for MyStruct { + fn cmp(&self, other: &Self) -> Ordering { + Ordering::Equal + } +} + +impl Ord for MyStruct2 { + fn cmp(&self, other: &Self) -> Ordering { + self.0.cmp(&other.0) + } + + fn max(self, other: Self) -> Self { + other + } +} + +fn test_trait_model(x: T) { + let x1 = source(20).max(0); + sink(x1); // $ hasValueFlow=20 + + let x2 = (MyStruct { + field1: source(23), + field2: 0, + }) + .max(MyStruct { + field1: 0, + field2: 0, + }); + sink(x2.field1); // $ hasValueFlow=23 + + let x3 = MyStruct2(source(24)).max(MyStruct2(0)); + sink(x3.0); // no flow, because the model does not apply when the target is in source code + + let x4 = source(25).max(1); + sink(x4); // $ hasValueFlow=25 + + let x5 = source(26).lt(&1); + sink(x5); // $ hasTaintFlow=26 + + let x6 = source(27) < 1; + sink(x6); // $ hasTaintFlow=27 +} + #[tokio::main] async fn main() { test_identify(); diff --git a/rust/ql/test/library-tests/dataflow/models/models.expected b/rust/ql/test/library-tests/dataflow/models/models.expected index 03db13a96dbc..db7489809b85 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.expected +++ b/rust/ql/test/library-tests/dataflow/models/models.expected @@ -1,25 +1,27 @@ models -| 1 | Sink: repo::test; ::sink; test-sink; Argument[self].Field[crate::MyFieldEnum::D::field_d] | -| 2 | Sink: repo::test; crate::enum_sink; test-sink; Argument[0].Field[crate::MyFieldEnum::C::field_c] | -| 3 | Sink: repo::test; crate::simple_sink; test-sink; Argument[0] | -| 4 | Source: repo::test; ::source; test-source; ReturnValue.Field[crate::MyFieldEnum::C::field_c] | -| 5 | Source: repo::test; crate::arg_source; test-source; Argument[0] | -| 6 | Source: repo::test; crate::enum_source; test-source; ReturnValue.Field[crate::MyFieldEnum::D::field_d] | -| 7 | Source: repo::test; crate::simple_source; test-source; ReturnValue | -| 8 | Summary: repo::test; crate::apply; Argument[0]; Argument[1].Parameter[0]; value | -| 9 | Summary: repo::test; crate::apply; Argument[1].ReturnValue; ReturnValue; value | -| 10 | Summary: repo::test; crate::coerce; Argument[0]; ReturnValue; taint | -| 11 | Summary: repo::test; crate::get_array_element; Argument[0].Element; ReturnValue; value | -| 12 | Summary: repo::test; crate::get_async_number; Argument[0]; ReturnValue.Future; value | -| 13 | Summary: repo::test; crate::get_struct_field; Argument[0].Field[crate::MyStruct::field1]; ReturnValue; value | -| 14 | Summary: repo::test; crate::get_tuple_element; Argument[0].Field[0]; ReturnValue; value | -| 15 | Summary: repo::test; crate::get_var_field; Argument[0].Field[crate::MyFieldEnum::C::field_c]; ReturnValue; value | -| 16 | Summary: repo::test; crate::get_var_pos; Argument[0].Field[crate::MyPosEnum::A(0)]; ReturnValue; value | -| 17 | Summary: repo::test; crate::set_array_element; Argument[0]; ReturnValue.Element; value | -| 18 | Summary: repo::test; crate::set_struct_field; Argument[0]; ReturnValue.Field[crate::MyStruct::field2]; value | -| 19 | Summary: repo::test; crate::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value | -| 20 | Summary: repo::test; crate::set_var_field; Argument[0]; ReturnValue.Field[crate::MyFieldEnum::D::field_d]; value | -| 21 | Summary: repo::test; crate::set_var_pos; Argument[0]; ReturnValue.Field[crate::MyPosEnum::B(0)]; value | +| 1 | Sink: ::sink; Argument[self].Field[main::MyFieldEnum::D::field_d]; test-sink | +| 2 | Sink: main::enum_sink; Argument[0].Field[main::MyFieldEnum::C::field_c]; test-sink | +| 3 | Sink: main::simple_sink; Argument[0]; test-sink | +| 4 | Source: ::source; ReturnValue.Field[main::MyFieldEnum::C::field_c]; test-source | +| 5 | Source: main::arg_source; Argument[0]; test-source | +| 6 | Source: main::enum_source; ReturnValue.Field[main::MyFieldEnum::D::field_d]; test-source | +| 7 | Source: main::simple_source; ReturnValue; test-source | +| 8 | Summary: <_ as core::cmp::Ord>::max; Argument[self]; ReturnValue; value | +| 9 | Summary: <_ as core::cmp::PartialOrd>::lt; Argument[self].Reference; ReturnValue; taint | +| 10 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value | +| 11 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value | +| 12 | Summary: main::coerce; Argument[0]; ReturnValue; taint | +| 13 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value | +| 14 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value | +| 15 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value | +| 16 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value | +| 17 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value | +| 18 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value | +| 19 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value | +| 20 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value | +| 21 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value | +| 22 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value | +| 23 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value | edges | main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | | | main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | | @@ -29,7 +31,7 @@ edges | main.rs:16:19:16:19 | s | main.rs:16:10:16:20 | identity(...) | provenance | QL | | main.rs:25:9:25:9 | s | main.rs:26:17:26:17 | s | provenance | | | main.rs:25:13:25:22 | source(...) | main.rs:25:9:25:9 | s | provenance | | -| main.rs:26:17:26:17 | s | main.rs:26:10:26:18 | coerce(...) | provenance | MaD:10 | +| main.rs:26:17:26:17 | s | main.rs:26:10:26:18 | coerce(...) | provenance | MaD:12 | | main.rs:40:9:40:9 | s | main.rs:41:27:41:27 | s | provenance | | | main.rs:40:9:40:9 | s | main.rs:41:27:41:27 | s | provenance | | | main.rs:40:13:40:21 | source(...) | main.rs:40:9:40:9 | s | provenance | | @@ -40,8 +42,8 @@ edges | main.rs:41:14:41:28 | ...::A(...) [A] | main.rs:41:9:41:10 | e1 [A] | provenance | | | main.rs:41:27:41:27 | s | main.rs:41:14:41:28 | ...::A(...) [A] | provenance | | | main.rs:41:27:41:27 | s | main.rs:41:14:41:28 | ...::A(...) [A] | provenance | | -| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:16 | -| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:16 | +| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:18 | +| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:18 | | main.rs:53:9:53:9 | s | main.rs:54:26:54:26 | s | provenance | | | main.rs:53:9:53:9 | s | main.rs:54:26:54:26 | s | provenance | | | main.rs:53:13:53:21 | source(...) | main.rs:53:9:53:9 | s | provenance | | @@ -50,8 +52,8 @@ edges | main.rs:54:9:54:10 | e1 [B] | main.rs:55:11:55:12 | e1 [B] | provenance | | | main.rs:54:14:54:27 | set_var_pos(...) [B] | main.rs:54:9:54:10 | e1 [B] | provenance | | | main.rs:54:14:54:27 | set_var_pos(...) [B] | main.rs:54:9:54:10 | e1 [B] | provenance | | -| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:21 | -| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:21 | +| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:23 | +| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:23 | | main.rs:55:11:55:12 | e1 [B] | main.rs:57:9:57:23 | ...::B(...) [B] | provenance | | | main.rs:55:11:55:12 | e1 [B] | main.rs:57:9:57:23 | ...::B(...) [B] | provenance | | | main.rs:57:9:57:23 | ...::B(...) [B] | main.rs:57:22:57:22 | i | provenance | | @@ -68,8 +70,8 @@ edges | main.rs:73:14:73:42 | ...::C {...} [C] | main.rs:73:9:73:10 | e1 [C] | provenance | | | main.rs:73:40:73:40 | s | main.rs:73:14:73:42 | ...::C {...} [C] | provenance | | | main.rs:73:40:73:40 | s | main.rs:73:14:73:42 | ...::C {...} [C] | provenance | | -| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:15 | -| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:15 | +| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:17 | +| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:17 | | main.rs:85:9:85:9 | s | main.rs:86:28:86:28 | s | provenance | | | main.rs:85:9:85:9 | s | main.rs:86:28:86:28 | s | provenance | | | main.rs:85:13:85:21 | source(...) | main.rs:85:9:85:9 | s | provenance | | @@ -78,8 +80,8 @@ edges | main.rs:86:9:86:10 | e1 [D] | main.rs:87:11:87:12 | e1 [D] | provenance | | | main.rs:86:14:86:29 | set_var_field(...) [D] | main.rs:86:9:86:10 | e1 [D] | provenance | | | main.rs:86:14:86:29 | set_var_field(...) [D] | main.rs:86:9:86:10 | e1 [D] | provenance | | -| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:20 | -| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:20 | +| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:22 | +| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:22 | | main.rs:87:11:87:12 | e1 [D] | main.rs:89:9:89:37 | ...::D {...} [D] | provenance | | | main.rs:87:11:87:12 | e1 [D] | main.rs:89:9:89:37 | ...::D {...} [D] | provenance | | | main.rs:89:9:89:37 | ...::D {...} [D] | main.rs:89:35:89:35 | i | provenance | | @@ -96,8 +98,8 @@ edges | main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | main.rs:105:9:105:17 | my_struct [MyStruct.field1] | provenance | | | main.rs:106:17:106:17 | s | main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | provenance | | | main.rs:106:17:106:17 | s | main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | provenance | | -| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:13 | -| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:13 | +| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:15 | +| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:15 | | main.rs:126:9:126:9 | s | main.rs:127:38:127:38 | s | provenance | | | main.rs:126:9:126:9 | s | main.rs:127:38:127:38 | s | provenance | | | main.rs:126:13:126:21 | source(...) | main.rs:126:9:126:9 | s | provenance | | @@ -106,16 +108,16 @@ edges | main.rs:127:9:127:17 | my_struct [MyStruct.field2] | main.rs:129:10:129:18 | my_struct [MyStruct.field2] | provenance | | | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | main.rs:127:9:127:17 | my_struct [MyStruct.field2] | provenance | | | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | main.rs:127:9:127:17 | my_struct [MyStruct.field2] | provenance | | -| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:18 | -| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:18 | +| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:20 | +| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:20 | | main.rs:129:10:129:18 | my_struct [MyStruct.field2] | main.rs:129:10:129:25 | my_struct.field2 | provenance | | | main.rs:129:10:129:18 | my_struct [MyStruct.field2] | main.rs:129:10:129:25 | my_struct.field2 | provenance | | | main.rs:138:9:138:9 | s | main.rs:139:29:139:29 | s | provenance | | | main.rs:138:9:138:9 | s | main.rs:139:29:139:29 | s | provenance | | | main.rs:138:13:138:21 | source(...) | main.rs:138:9:138:9 | s | provenance | | | main.rs:138:13:138:21 | source(...) | main.rs:138:9:138:9 | s | provenance | | -| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:11 | -| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:11 | +| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:13 | +| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:13 | | main.rs:139:29:139:29 | s | main.rs:139:28:139:30 | [...] [element] | provenance | | | main.rs:139:29:139:29 | s | main.rs:139:28:139:30 | [...] [element] | provenance | | | main.rs:148:9:148:9 | s | main.rs:149:33:149:33 | s | provenance | | @@ -126,8 +128,8 @@ edges | main.rs:149:9:149:11 | arr [element] | main.rs:150:10:150:12 | arr [element] | provenance | | | main.rs:149:15:149:34 | set_array_element(...) [element] | main.rs:149:9:149:11 | arr [element] | provenance | | | main.rs:149:15:149:34 | set_array_element(...) [element] | main.rs:149:9:149:11 | arr [element] | provenance | | -| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:17 | -| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:17 | +| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:19 | +| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:19 | | main.rs:150:10:150:12 | arr [element] | main.rs:150:10:150:15 | arr[0] | provenance | | | main.rs:150:10:150:12 | arr [element] | main.rs:150:10:150:15 | arr[0] | provenance | | | main.rs:159:9:159:9 | s | main.rs:160:14:160:14 | s | provenance | | @@ -140,8 +142,8 @@ edges | main.rs:160:13:160:18 | TupleExpr [tuple.0] | main.rs:160:9:160:9 | t [tuple.0] | provenance | | | main.rs:160:14:160:14 | s | main.rs:160:13:160:18 | TupleExpr [tuple.0] | provenance | | | main.rs:160:14:160:14 | s | main.rs:160:13:160:18 | TupleExpr [tuple.0] | provenance | | -| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:14 | -| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:14 | +| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:16 | +| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:16 | | main.rs:172:9:172:9 | s | main.rs:173:31:173:31 | s | provenance | | | main.rs:172:9:172:9 | s | main.rs:173:31:173:31 | s | provenance | | | main.rs:172:13:172:22 | source(...) | main.rs:172:9:172:9 | s | provenance | | @@ -150,120 +152,148 @@ edges | main.rs:173:9:173:9 | t [tuple.1] | main.rs:175:10:175:10 | t [tuple.1] | provenance | | | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | main.rs:173:9:173:9 | t [tuple.1] | provenance | | | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | main.rs:173:9:173:9 | t [tuple.1] | provenance | | -| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:19 | -| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:19 | +| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:21 | +| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:21 | | main.rs:175:10:175:10 | t [tuple.1] | main.rs:175:10:175:12 | t.1 | provenance | | | main.rs:175:10:175:10 | t [tuple.1] | main.rs:175:10:175:12 | t.1 | provenance | | -| main.rs:184:9:184:9 | s | main.rs:189:11:189:11 | s | provenance | | -| main.rs:184:9:184:9 | s | main.rs:189:11:189:11 | s | provenance | | -| main.rs:184:13:184:22 | source(...) | main.rs:184:9:184:9 | s | provenance | | -| main.rs:184:13:184:22 | source(...) | main.rs:184:9:184:9 | s | provenance | | -| main.rs:185:14:185:14 | ... | main.rs:186:14:186:14 | n | provenance | | -| main.rs:185:14:185:14 | ... | main.rs:186:14:186:14 | n | provenance | | -| main.rs:189:11:189:11 | s | main.rs:185:14:185:14 | ... | provenance | MaD:8 | -| main.rs:189:11:189:11 | s | main.rs:185:14:185:14 | ... | provenance | MaD:8 | -| main.rs:193:13:193:22 | source(...) | main.rs:195:23:195:23 | f [captured s] | provenance | | -| main.rs:193:13:193:22 | source(...) | main.rs:195:23:195:23 | f [captured s] | provenance | | -| main.rs:194:40:194:40 | s | main.rs:194:17:194:42 | if ... {...} else {...} | provenance | | -| main.rs:194:40:194:40 | s | main.rs:194:17:194:42 | if ... {...} else {...} | provenance | | -| main.rs:195:9:195:9 | t | main.rs:196:10:196:10 | t | provenance | | -| main.rs:195:9:195:9 | t | main.rs:196:10:196:10 | t | provenance | | -| main.rs:195:13:195:24 | apply(...) | main.rs:195:9:195:9 | t | provenance | | -| main.rs:195:13:195:24 | apply(...) | main.rs:195:9:195:9 | t | provenance | | -| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | provenance | MaD:8 | -| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | provenance | MaD:8 | -| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | provenance | MaD:9 | -| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | provenance | MaD:9 | -| main.rs:195:23:195:23 | f [captured s] | main.rs:195:13:195:24 | apply(...) | provenance | MaD:8 | -| main.rs:195:23:195:23 | f [captured s] | main.rs:195:13:195:24 | apply(...) | provenance | MaD:8 | -| main.rs:195:23:195:23 | f [captured s] | main.rs:195:13:195:24 | apply(...) | provenance | MaD:9 | -| main.rs:195:23:195:23 | f [captured s] | main.rs:195:13:195:24 | apply(...) | provenance | MaD:9 | -| main.rs:200:9:200:9 | s | main.rs:202:19:202:19 | s | provenance | | -| main.rs:200:9:200:9 | s | main.rs:202:19:202:19 | s | provenance | | -| main.rs:200:13:200:22 | source(...) | main.rs:200:9:200:9 | s | provenance | | -| main.rs:200:13:200:22 | source(...) | main.rs:200:9:200:9 | s | provenance | | -| main.rs:201:14:201:14 | ... | main.rs:201:17:201:42 | if ... {...} else {...} | provenance | | -| main.rs:201:14:201:14 | ... | main.rs:201:17:201:42 | if ... {...} else {...} | provenance | | -| main.rs:202:9:202:9 | t | main.rs:203:10:203:10 | t | provenance | | -| main.rs:202:9:202:9 | t | main.rs:203:10:203:10 | t | provenance | | -| main.rs:202:13:202:23 | apply(...) | main.rs:202:9:202:9 | t | provenance | | -| main.rs:202:13:202:23 | apply(...) | main.rs:202:9:202:9 | t | provenance | | -| main.rs:202:19:202:19 | s | main.rs:201:14:201:14 | ... | provenance | MaD:8 | -| main.rs:202:19:202:19 | s | main.rs:201:14:201:14 | ... | provenance | MaD:8 | -| main.rs:202:19:202:19 | s | main.rs:202:13:202:23 | apply(...) | provenance | MaD:8 | -| main.rs:202:19:202:19 | s | main.rs:202:13:202:23 | apply(...) | provenance | MaD:8 | -| main.rs:212:9:212:9 | s | main.rs:213:30:213:30 | s | provenance | | -| main.rs:212:9:212:9 | s | main.rs:213:30:213:30 | s | provenance | | -| main.rs:212:13:212:22 | source(...) | main.rs:212:9:212:9 | s | provenance | | -| main.rs:212:13:212:22 | source(...) | main.rs:212:9:212:9 | s | provenance | | -| main.rs:213:9:213:9 | t | main.rs:214:10:214:10 | t | provenance | | -| main.rs:213:9:213:9 | t | main.rs:214:10:214:10 | t | provenance | | -| main.rs:213:13:213:31 | get_async_number(...) [future] | main.rs:213:13:213:37 | await ... | provenance | | -| main.rs:213:13:213:31 | get_async_number(...) [future] | main.rs:213:13:213:37 | await ... | provenance | | -| main.rs:213:13:213:37 | await ... | main.rs:213:9:213:9 | t | provenance | | -| main.rs:213:13:213:37 | await ... | main.rs:213:9:213:9 | t | provenance | | -| main.rs:213:30:213:30 | s | main.rs:213:13:213:31 | get_async_number(...) [future] | provenance | MaD:12 | -| main.rs:213:30:213:30 | s | main.rs:213:13:213:31 | get_async_number(...) [future] | provenance | MaD:12 | -| main.rs:233:9:233:9 | s [D] | main.rs:234:11:234:11 | s [D] | provenance | | -| main.rs:233:9:233:9 | s [D] | main.rs:234:11:234:11 | s [D] | provenance | | -| main.rs:233:13:233:23 | enum_source | main.rs:233:13:233:27 | enum_source(...) [D] | provenance | Src:MaD:6 | -| main.rs:233:13:233:23 | enum_source | main.rs:233:13:233:27 | enum_source(...) [D] | provenance | Src:MaD:6 | -| main.rs:233:13:233:27 | enum_source(...) [D] | main.rs:233:9:233:9 | s [D] | provenance | | -| main.rs:233:13:233:27 | enum_source(...) [D] | main.rs:233:9:233:9 | s [D] | provenance | | -| main.rs:234:11:234:11 | s [D] | main.rs:236:9:236:37 | ...::D {...} [D] | provenance | | -| main.rs:234:11:234:11 | s [D] | main.rs:236:9:236:37 | ...::D {...} [D] | provenance | | -| main.rs:236:9:236:37 | ...::D {...} [D] | main.rs:236:35:236:35 | i | provenance | | -| main.rs:236:9:236:37 | ...::D {...} [D] | main.rs:236:35:236:35 | i | provenance | | -| main.rs:236:35:236:35 | i | main.rs:236:47:236:47 | i | provenance | | -| main.rs:236:35:236:35 | i | main.rs:236:47:236:47 | i | provenance | | -| main.rs:242:9:242:9 | s [C] | main.rs:243:11:243:11 | s [C] | provenance | | -| main.rs:242:9:242:9 | s [C] | main.rs:243:11:243:11 | s [C] | provenance | | -| main.rs:242:13:242:24 | e.source(...) [C] | main.rs:242:9:242:9 | s [C] | provenance | | -| main.rs:242:13:242:24 | e.source(...) [C] | main.rs:242:9:242:9 | s [C] | provenance | | -| main.rs:242:15:242:20 | source | main.rs:242:13:242:24 | e.source(...) [C] | provenance | Src:MaD:4 | -| main.rs:242:15:242:20 | source | main.rs:242:13:242:24 | e.source(...) [C] | provenance | Src:MaD:4 | -| main.rs:243:11:243:11 | s [C] | main.rs:244:9:244:37 | ...::C {...} [C] | provenance | | -| main.rs:243:11:243:11 | s [C] | main.rs:244:9:244:37 | ...::C {...} [C] | provenance | | -| main.rs:244:9:244:37 | ...::C {...} [C] | main.rs:244:35:244:35 | i | provenance | | -| main.rs:244:9:244:37 | ...::C {...} [C] | main.rs:244:35:244:35 | i | provenance | | -| main.rs:244:35:244:35 | i | main.rs:244:47:244:47 | i | provenance | | -| main.rs:244:35:244:35 | i | main.rs:244:47:244:47 | i | provenance | | -| main.rs:253:9:253:9 | s | main.rs:254:41:254:41 | s | provenance | | -| main.rs:253:9:253:9 | s | main.rs:254:41:254:41 | s | provenance | | -| main.rs:253:13:253:22 | source(...) | main.rs:253:9:253:9 | s | provenance | | -| main.rs:253:13:253:22 | source(...) | main.rs:253:9:253:9 | s | provenance | | -| main.rs:254:15:254:43 | ...::C {...} [C] | main.rs:254:5:254:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | -| main.rs:254:15:254:43 | ...::C {...} [C] | main.rs:254:5:254:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | -| main.rs:254:41:254:41 | s | main.rs:254:15:254:43 | ...::C {...} [C] | provenance | | -| main.rs:254:41:254:41 | s | main.rs:254:15:254:43 | ...::C {...} [C] | provenance | | -| main.rs:259:9:259:9 | s | main.rs:260:39:260:39 | s | provenance | | -| main.rs:259:9:259:9 | s | main.rs:260:39:260:39 | s | provenance | | -| main.rs:259:13:259:22 | source(...) | main.rs:259:9:259:9 | s | provenance | | -| main.rs:259:13:259:22 | source(...) | main.rs:259:9:259:9 | s | provenance | | -| main.rs:260:9:260:9 | e [D] | main.rs:261:5:261:5 | e [D] | provenance | | -| main.rs:260:9:260:9 | e [D] | main.rs:261:5:261:5 | e [D] | provenance | | -| main.rs:260:13:260:41 | ...::D {...} [D] | main.rs:260:9:260:9 | e [D] | provenance | | -| main.rs:260:13:260:41 | ...::D {...} [D] | main.rs:260:9:260:9 | e [D] | provenance | | -| main.rs:260:39:260:39 | s | main.rs:260:13:260:41 | ...::D {...} [D] | provenance | | -| main.rs:260:39:260:39 | s | main.rs:260:13:260:41 | ...::D {...} [D] | provenance | | -| main.rs:261:5:261:5 | e [D] | main.rs:261:7:261:10 | sink | provenance | MaD:1 Sink:MaD:1 | -| main.rs:261:5:261:5 | e [D] | main.rs:261:7:261:10 | sink | provenance | MaD:1 Sink:MaD:1 | -| main.rs:270:9:270:9 | s | main.rs:271:10:271:10 | s | provenance | | -| main.rs:270:9:270:9 | s | main.rs:271:10:271:10 | s | provenance | | -| main.rs:270:13:270:25 | simple_source | main.rs:270:13:270:29 | simple_source(...) | provenance | Src:MaD:7 MaD:7 | -| main.rs:270:13:270:25 | simple_source | main.rs:270:13:270:29 | simple_source(...) | provenance | Src:MaD:7 MaD:7 | -| main.rs:270:13:270:29 | simple_source(...) | main.rs:270:9:270:9 | s | provenance | | -| main.rs:270:13:270:29 | simple_source(...) | main.rs:270:9:270:9 | s | provenance | | -| main.rs:278:9:278:9 | s | main.rs:279:17:279:17 | s | provenance | | -| main.rs:278:9:278:9 | s | main.rs:279:17:279:17 | s | provenance | | -| main.rs:278:13:278:22 | source(...) | main.rs:278:9:278:9 | s | provenance | | -| main.rs:278:13:278:22 | source(...) | main.rs:278:9:278:9 | s | provenance | | -| main.rs:279:17:279:17 | s | main.rs:279:5:279:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 | -| main.rs:279:17:279:17 | s | main.rs:279:5:279:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 | -| main.rs:287:5:287:14 | arg_source | main.rs:287:16:287:16 | [post] i | provenance | Src:MaD:5 MaD:5 | -| main.rs:287:5:287:14 | arg_source | main.rs:287:16:287:16 | [post] i | provenance | Src:MaD:5 MaD:5 | -| main.rs:287:16:287:16 | [post] i | main.rs:288:10:288:10 | i | provenance | | -| main.rs:287:16:287:16 | [post] i | main.rs:288:10:288:10 | i | provenance | | +| main.rs:187:9:187:9 | s | main.rs:192:11:192:11 | s | provenance | | +| main.rs:187:9:187:9 | s | main.rs:192:11:192:11 | s | provenance | | +| main.rs:187:13:187:22 | source(...) | main.rs:187:9:187:9 | s | provenance | | +| main.rs:187:13:187:22 | source(...) | main.rs:187:9:187:9 | s | provenance | | +| main.rs:188:14:188:14 | ... | main.rs:189:14:189:14 | n | provenance | | +| main.rs:188:14:188:14 | ... | main.rs:189:14:189:14 | n | provenance | | +| main.rs:192:11:192:11 | s | main.rs:188:14:188:14 | ... | provenance | MaD:10 | +| main.rs:192:11:192:11 | s | main.rs:188:14:188:14 | ... | provenance | MaD:10 | +| main.rs:196:13:196:22 | source(...) | main.rs:198:23:198:23 | f [captured s] | provenance | | +| main.rs:196:13:196:22 | source(...) | main.rs:198:23:198:23 | f [captured s] | provenance | | +| main.rs:197:40:197:40 | s | main.rs:197:17:197:42 | if ... {...} else {...} | provenance | | +| main.rs:197:40:197:40 | s | main.rs:197:17:197:42 | if ... {...} else {...} | provenance | | +| main.rs:198:9:198:9 | t | main.rs:199:10:199:10 | t | provenance | | +| main.rs:198:9:198:9 | t | main.rs:199:10:199:10 | t | provenance | | +| main.rs:198:13:198:24 | apply(...) | main.rs:198:9:198:9 | t | provenance | | +| main.rs:198:13:198:24 | apply(...) | main.rs:198:9:198:9 | t | provenance | | +| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:10 | +| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:10 | +| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:11 | +| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:11 | +| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:10 | +| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:10 | +| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:11 | +| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:11 | +| main.rs:203:9:203:9 | s | main.rs:205:19:205:19 | s | provenance | | +| main.rs:203:9:203:9 | s | main.rs:205:19:205:19 | s | provenance | | +| main.rs:203:13:203:22 | source(...) | main.rs:203:9:203:9 | s | provenance | | +| main.rs:203:13:203:22 | source(...) | main.rs:203:9:203:9 | s | provenance | | +| main.rs:204:14:204:14 | ... | main.rs:204:17:204:42 | if ... {...} else {...} | provenance | | +| main.rs:204:14:204:14 | ... | main.rs:204:17:204:42 | if ... {...} else {...} | provenance | | +| main.rs:205:9:205:9 | t | main.rs:206:10:206:10 | t | provenance | | +| main.rs:205:9:205:9 | t | main.rs:206:10:206:10 | t | provenance | | +| main.rs:205:13:205:23 | apply(...) | main.rs:205:9:205:9 | t | provenance | | +| main.rs:205:13:205:23 | apply(...) | main.rs:205:9:205:9 | t | provenance | | +| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | provenance | MaD:10 | +| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | provenance | MaD:10 | +| main.rs:205:19:205:19 | s | main.rs:205:13:205:23 | apply(...) | provenance | MaD:10 | +| main.rs:205:19:205:19 | s | main.rs:205:13:205:23 | apply(...) | provenance | MaD:10 | +| main.rs:215:9:215:9 | s | main.rs:216:30:216:30 | s | provenance | | +| main.rs:215:9:215:9 | s | main.rs:216:30:216:30 | s | provenance | | +| main.rs:215:13:215:22 | source(...) | main.rs:215:9:215:9 | s | provenance | | +| main.rs:215:13:215:22 | source(...) | main.rs:215:9:215:9 | s | provenance | | +| main.rs:216:9:216:9 | t | main.rs:217:10:217:10 | t | provenance | | +| main.rs:216:9:216:9 | t | main.rs:217:10:217:10 | t | provenance | | +| main.rs:216:13:216:31 | get_async_number(...) [future] | main.rs:216:13:216:37 | await ... | provenance | | +| main.rs:216:13:216:31 | get_async_number(...) [future] | main.rs:216:13:216:37 | await ... | provenance | | +| main.rs:216:13:216:37 | await ... | main.rs:216:9:216:9 | t | provenance | | +| main.rs:216:13:216:37 | await ... | main.rs:216:9:216:9 | t | provenance | | +| main.rs:216:30:216:30 | s | main.rs:216:13:216:31 | get_async_number(...) [future] | provenance | MaD:14 | +| main.rs:216:30:216:30 | s | main.rs:216:13:216:31 | get_async_number(...) [future] | provenance | MaD:14 | +| main.rs:236:9:236:9 | s [D] | main.rs:237:11:237:11 | s [D] | provenance | | +| main.rs:236:9:236:9 | s [D] | main.rs:237:11:237:11 | s [D] | provenance | | +| main.rs:236:13:236:23 | enum_source | main.rs:236:13:236:27 | enum_source(...) [D] | provenance | Src:MaD:6 | +| main.rs:236:13:236:23 | enum_source | main.rs:236:13:236:27 | enum_source(...) [D] | provenance | Src:MaD:6 | +| main.rs:236:13:236:27 | enum_source(...) [D] | main.rs:236:9:236:9 | s [D] | provenance | | +| main.rs:236:13:236:27 | enum_source(...) [D] | main.rs:236:9:236:9 | s [D] | provenance | | +| main.rs:237:11:237:11 | s [D] | main.rs:239:9:239:37 | ...::D {...} [D] | provenance | | +| main.rs:237:11:237:11 | s [D] | main.rs:239:9:239:37 | ...::D {...} [D] | provenance | | +| main.rs:239:9:239:37 | ...::D {...} [D] | main.rs:239:35:239:35 | i | provenance | | +| main.rs:239:9:239:37 | ...::D {...} [D] | main.rs:239:35:239:35 | i | provenance | | +| main.rs:239:35:239:35 | i | main.rs:239:47:239:47 | i | provenance | | +| main.rs:239:35:239:35 | i | main.rs:239:47:239:47 | i | provenance | | +| main.rs:245:9:245:9 | s [C] | main.rs:246:11:246:11 | s [C] | provenance | | +| main.rs:245:9:245:9 | s [C] | main.rs:246:11:246:11 | s [C] | provenance | | +| main.rs:245:13:245:24 | e.source(...) [C] | main.rs:245:9:245:9 | s [C] | provenance | | +| main.rs:245:13:245:24 | e.source(...) [C] | main.rs:245:9:245:9 | s [C] | provenance | | +| main.rs:245:15:245:20 | source | main.rs:245:13:245:24 | e.source(...) [C] | provenance | Src:MaD:4 | +| main.rs:245:15:245:20 | source | main.rs:245:13:245:24 | e.source(...) [C] | provenance | Src:MaD:4 | +| main.rs:246:11:246:11 | s [C] | main.rs:247:9:247:37 | ...::C {...} [C] | provenance | | +| main.rs:246:11:246:11 | s [C] | main.rs:247:9:247:37 | ...::C {...} [C] | provenance | | +| main.rs:247:9:247:37 | ...::C {...} [C] | main.rs:247:35:247:35 | i | provenance | | +| main.rs:247:9:247:37 | ...::C {...} [C] | main.rs:247:35:247:35 | i | provenance | | +| main.rs:247:35:247:35 | i | main.rs:247:47:247:47 | i | provenance | | +| main.rs:247:35:247:35 | i | main.rs:247:47:247:47 | i | provenance | | +| main.rs:256:9:256:9 | s | main.rs:257:41:257:41 | s | provenance | | +| main.rs:256:9:256:9 | s | main.rs:257:41:257:41 | s | provenance | | +| main.rs:256:13:256:22 | source(...) | main.rs:256:9:256:9 | s | provenance | | +| main.rs:256:13:256:22 | source(...) | main.rs:256:9:256:9 | s | provenance | | +| main.rs:257:15:257:43 | ...::C {...} [C] | main.rs:257:5:257:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | +| main.rs:257:15:257:43 | ...::C {...} [C] | main.rs:257:5:257:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 | +| main.rs:257:41:257:41 | s | main.rs:257:15:257:43 | ...::C {...} [C] | provenance | | +| main.rs:257:41:257:41 | s | main.rs:257:15:257:43 | ...::C {...} [C] | provenance | | +| main.rs:262:9:262:9 | s | main.rs:263:39:263:39 | s | provenance | | +| main.rs:262:9:262:9 | s | main.rs:263:39:263:39 | s | provenance | | +| main.rs:262:13:262:22 | source(...) | main.rs:262:9:262:9 | s | provenance | | +| main.rs:262:13:262:22 | source(...) | main.rs:262:9:262:9 | s | provenance | | +| main.rs:263:9:263:9 | e [D] | main.rs:264:5:264:5 | e [D] | provenance | | +| main.rs:263:9:263:9 | e [D] | main.rs:264:5:264:5 | e [D] | provenance | | +| main.rs:263:13:263:41 | ...::D {...} [D] | main.rs:263:9:263:9 | e [D] | provenance | | +| main.rs:263:13:263:41 | ...::D {...} [D] | main.rs:263:9:263:9 | e [D] | provenance | | +| main.rs:263:39:263:39 | s | main.rs:263:13:263:41 | ...::D {...} [D] | provenance | | +| main.rs:263:39:263:39 | s | main.rs:263:13:263:41 | ...::D {...} [D] | provenance | | +| main.rs:264:5:264:5 | e [D] | main.rs:264:7:264:10 | sink | provenance | MaD:1 Sink:MaD:1 | +| main.rs:264:5:264:5 | e [D] | main.rs:264:7:264:10 | sink | provenance | MaD:1 Sink:MaD:1 | +| main.rs:273:9:273:9 | s | main.rs:274:10:274:10 | s | provenance | | +| main.rs:273:9:273:9 | s | main.rs:274:10:274:10 | s | provenance | | +| main.rs:273:13:273:25 | simple_source | main.rs:273:13:273:29 | simple_source(...) | provenance | Src:MaD:7 MaD:7 | +| main.rs:273:13:273:25 | simple_source | main.rs:273:13:273:29 | simple_source(...) | provenance | Src:MaD:7 MaD:7 | +| main.rs:273:13:273:29 | simple_source(...) | main.rs:273:9:273:9 | s | provenance | | +| main.rs:273:13:273:29 | simple_source(...) | main.rs:273:9:273:9 | s | provenance | | +| main.rs:281:9:281:9 | s | main.rs:282:17:282:17 | s | provenance | | +| main.rs:281:9:281:9 | s | main.rs:282:17:282:17 | s | provenance | | +| main.rs:281:13:281:22 | source(...) | main.rs:281:9:281:9 | s | provenance | | +| main.rs:281:13:281:22 | source(...) | main.rs:281:9:281:9 | s | provenance | | +| main.rs:282:17:282:17 | s | main.rs:282:5:282:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 | +| main.rs:282:17:282:17 | s | main.rs:282:5:282:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 | +| main.rs:290:5:290:14 | arg_source | main.rs:290:16:290:16 | [post] i | provenance | Src:MaD:5 MaD:5 | +| main.rs:290:5:290:14 | arg_source | main.rs:290:16:290:16 | [post] i | provenance | Src:MaD:5 MaD:5 | +| main.rs:290:16:290:16 | [post] i | main.rs:291:10:291:10 | i | provenance | | +| main.rs:290:16:290:16 | [post] i | main.rs:291:10:291:10 | i | provenance | | +| main.rs:343:9:343:10 | x1 | main.rs:344:10:344:11 | x1 | provenance | | +| main.rs:343:9:343:10 | x1 | main.rs:344:10:344:11 | x1 | provenance | | +| main.rs:343:14:343:23 | source(...) | main.rs:343:14:343:30 | ... .max(...) | provenance | MaD:8 | +| main.rs:343:14:343:23 | source(...) | main.rs:343:14:343:30 | ... .max(...) | provenance | MaD:8 | +| main.rs:343:14:343:30 | ... .max(...) | main.rs:343:9:343:10 | x1 | provenance | | +| main.rs:343:14:343:30 | ... .max(...) | main.rs:343:9:343:10 | x1 | provenance | | +| main.rs:346:9:346:10 | x2 [MyStruct.field1] | main.rs:354:10:354:11 | x2 [MyStruct.field1] | provenance | | +| main.rs:346:9:346:10 | x2 [MyStruct.field1] | main.rs:354:10:354:11 | x2 [MyStruct.field1] | provenance | | +| main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | main.rs:346:9:346:10 | x2 [MyStruct.field1] | provenance | | +| main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | main.rs:346:9:346:10 | x2 [MyStruct.field1] | provenance | | +| main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:8 | +| main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:8 | +| main.rs:347:17:347:26 | source(...) | main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | provenance | | +| main.rs:347:17:347:26 | source(...) | main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | provenance | | +| main.rs:354:10:354:11 | x2 [MyStruct.field1] | main.rs:354:10:354:18 | x2.field1 | provenance | | +| main.rs:354:10:354:11 | x2 [MyStruct.field1] | main.rs:354:10:354:18 | x2.field1 | provenance | | +| main.rs:359:9:359:10 | x4 | main.rs:360:10:360:11 | x4 | provenance | | +| main.rs:359:9:359:10 | x4 | main.rs:360:10:360:11 | x4 | provenance | | +| main.rs:359:14:359:23 | source(...) | main.rs:359:14:359:30 | ... .max(...) | provenance | MaD:8 | +| main.rs:359:14:359:23 | source(...) | main.rs:359:14:359:30 | ... .max(...) | provenance | MaD:8 | +| main.rs:359:14:359:30 | ... .max(...) | main.rs:359:9:359:10 | x4 | provenance | | +| main.rs:359:14:359:30 | ... .max(...) | main.rs:359:9:359:10 | x4 | provenance | | +| main.rs:362:9:362:10 | x5 | main.rs:363:10:363:11 | x5 | provenance | | +| main.rs:362:14:362:23 | source(...) | main.rs:362:14:362:30 | ... .lt(...) | provenance | MaD:9 | +| main.rs:362:14:362:30 | ... .lt(...) | main.rs:362:9:362:10 | x5 | provenance | | +| main.rs:365:9:365:10 | x6 | main.rs:366:10:366:11 | x6 | provenance | | +| main.rs:365:14:365:23 | source(...) | main.rs:365:14:365:27 | ... < ... | provenance | MaD:9 | +| main.rs:365:14:365:27 | ... < ... | main.rs:365:9:365:10 | x6 | provenance | | nodes | main.rs:15:9:15:9 | s | semmle.label | s | | main.rs:15:9:15:9 | s | semmle.label | s | @@ -421,139 +451,175 @@ nodes | main.rs:175:10:175:10 | t [tuple.1] | semmle.label | t [tuple.1] | | main.rs:175:10:175:12 | t.1 | semmle.label | t.1 | | main.rs:175:10:175:12 | t.1 | semmle.label | t.1 | -| main.rs:184:9:184:9 | s | semmle.label | s | -| main.rs:184:9:184:9 | s | semmle.label | s | -| main.rs:184:13:184:22 | source(...) | semmle.label | source(...) | -| main.rs:184:13:184:22 | source(...) | semmle.label | source(...) | -| main.rs:185:14:185:14 | ... | semmle.label | ... | -| main.rs:185:14:185:14 | ... | semmle.label | ... | -| main.rs:186:14:186:14 | n | semmle.label | n | -| main.rs:186:14:186:14 | n | semmle.label | n | -| main.rs:189:11:189:11 | s | semmle.label | s | -| main.rs:189:11:189:11 | s | semmle.label | s | -| main.rs:193:13:193:22 | source(...) | semmle.label | source(...) | -| main.rs:193:13:193:22 | source(...) | semmle.label | source(...) | -| main.rs:194:17:194:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | -| main.rs:194:17:194:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | -| main.rs:194:40:194:40 | s | semmle.label | s | -| main.rs:194:40:194:40 | s | semmle.label | s | -| main.rs:195:9:195:9 | t | semmle.label | t | -| main.rs:195:9:195:9 | t | semmle.label | t | -| main.rs:195:13:195:24 | apply(...) | semmle.label | apply(...) | -| main.rs:195:13:195:24 | apply(...) | semmle.label | apply(...) | -| main.rs:195:23:195:23 | f [captured s] | semmle.label | f [captured s] | -| main.rs:195:23:195:23 | f [captured s] | semmle.label | f [captured s] | -| main.rs:196:10:196:10 | t | semmle.label | t | -| main.rs:196:10:196:10 | t | semmle.label | t | -| main.rs:200:9:200:9 | s | semmle.label | s | -| main.rs:200:9:200:9 | s | semmle.label | s | -| main.rs:200:13:200:22 | source(...) | semmle.label | source(...) | -| main.rs:200:13:200:22 | source(...) | semmle.label | source(...) | -| main.rs:201:14:201:14 | ... | semmle.label | ... | -| main.rs:201:14:201:14 | ... | semmle.label | ... | -| main.rs:201:17:201:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | -| main.rs:201:17:201:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | -| main.rs:202:9:202:9 | t | semmle.label | t | -| main.rs:202:9:202:9 | t | semmle.label | t | -| main.rs:202:13:202:23 | apply(...) | semmle.label | apply(...) | -| main.rs:202:13:202:23 | apply(...) | semmle.label | apply(...) | -| main.rs:202:19:202:19 | s | semmle.label | s | -| main.rs:202:19:202:19 | s | semmle.label | s | -| main.rs:203:10:203:10 | t | semmle.label | t | -| main.rs:203:10:203:10 | t | semmle.label | t | -| main.rs:212:9:212:9 | s | semmle.label | s | -| main.rs:212:9:212:9 | s | semmle.label | s | -| main.rs:212:13:212:22 | source(...) | semmle.label | source(...) | -| main.rs:212:13:212:22 | source(...) | semmle.label | source(...) | -| main.rs:213:9:213:9 | t | semmle.label | t | -| main.rs:213:9:213:9 | t | semmle.label | t | -| main.rs:213:13:213:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] | -| main.rs:213:13:213:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] | -| main.rs:213:13:213:37 | await ... | semmle.label | await ... | -| main.rs:213:13:213:37 | await ... | semmle.label | await ... | -| main.rs:213:30:213:30 | s | semmle.label | s | -| main.rs:213:30:213:30 | s | semmle.label | s | -| main.rs:214:10:214:10 | t | semmle.label | t | -| main.rs:214:10:214:10 | t | semmle.label | t | -| main.rs:233:9:233:9 | s [D] | semmle.label | s [D] | -| main.rs:233:9:233:9 | s [D] | semmle.label | s [D] | -| main.rs:233:13:233:23 | enum_source | semmle.label | enum_source | -| main.rs:233:13:233:23 | enum_source | semmle.label | enum_source | -| main.rs:233:13:233:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] | -| main.rs:233:13:233:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] | -| main.rs:234:11:234:11 | s [D] | semmle.label | s [D] | -| main.rs:234:11:234:11 | s [D] | semmle.label | s [D] | -| main.rs:236:9:236:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | -| main.rs:236:9:236:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | -| main.rs:236:35:236:35 | i | semmle.label | i | -| main.rs:236:35:236:35 | i | semmle.label | i | -| main.rs:236:47:236:47 | i | semmle.label | i | -| main.rs:236:47:236:47 | i | semmle.label | i | -| main.rs:242:9:242:9 | s [C] | semmle.label | s [C] | -| main.rs:242:9:242:9 | s [C] | semmle.label | s [C] | -| main.rs:242:13:242:24 | e.source(...) [C] | semmle.label | e.source(...) [C] | -| main.rs:242:13:242:24 | e.source(...) [C] | semmle.label | e.source(...) [C] | -| main.rs:242:15:242:20 | source | semmle.label | source | -| main.rs:242:15:242:20 | source | semmle.label | source | -| main.rs:243:11:243:11 | s [C] | semmle.label | s [C] | -| main.rs:243:11:243:11 | s [C] | semmle.label | s [C] | -| main.rs:244:9:244:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | -| main.rs:244:9:244:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | -| main.rs:244:35:244:35 | i | semmle.label | i | -| main.rs:244:35:244:35 | i | semmle.label | i | -| main.rs:244:47:244:47 | i | semmle.label | i | -| main.rs:244:47:244:47 | i | semmle.label | i | -| main.rs:253:9:253:9 | s | semmle.label | s | -| main.rs:253:9:253:9 | s | semmle.label | s | -| main.rs:253:13:253:22 | source(...) | semmle.label | source(...) | -| main.rs:253:13:253:22 | source(...) | semmle.label | source(...) | -| main.rs:254:5:254:13 | enum_sink | semmle.label | enum_sink | -| main.rs:254:5:254:13 | enum_sink | semmle.label | enum_sink | -| main.rs:254:15:254:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | -| main.rs:254:15:254:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | -| main.rs:254:41:254:41 | s | semmle.label | s | -| main.rs:254:41:254:41 | s | semmle.label | s | -| main.rs:259:9:259:9 | s | semmle.label | s | -| main.rs:259:9:259:9 | s | semmle.label | s | -| main.rs:259:13:259:22 | source(...) | semmle.label | source(...) | -| main.rs:259:13:259:22 | source(...) | semmle.label | source(...) | -| main.rs:260:9:260:9 | e [D] | semmle.label | e [D] | -| main.rs:260:9:260:9 | e [D] | semmle.label | e [D] | -| main.rs:260:13:260:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | -| main.rs:260:13:260:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | -| main.rs:260:39:260:39 | s | semmle.label | s | -| main.rs:260:39:260:39 | s | semmle.label | s | -| main.rs:261:5:261:5 | e [D] | semmle.label | e [D] | -| main.rs:261:5:261:5 | e [D] | semmle.label | e [D] | -| main.rs:261:7:261:10 | sink | semmle.label | sink | -| main.rs:261:7:261:10 | sink | semmle.label | sink | -| main.rs:270:9:270:9 | s | semmle.label | s | -| main.rs:270:9:270:9 | s | semmle.label | s | -| main.rs:270:13:270:25 | simple_source | semmle.label | simple_source | -| main.rs:270:13:270:25 | simple_source | semmle.label | simple_source | -| main.rs:270:13:270:29 | simple_source(...) | semmle.label | simple_source(...) | -| main.rs:270:13:270:29 | simple_source(...) | semmle.label | simple_source(...) | -| main.rs:271:10:271:10 | s | semmle.label | s | -| main.rs:271:10:271:10 | s | semmle.label | s | -| main.rs:278:9:278:9 | s | semmle.label | s | -| main.rs:278:9:278:9 | s | semmle.label | s | -| main.rs:278:13:278:22 | source(...) | semmle.label | source(...) | -| main.rs:278:13:278:22 | source(...) | semmle.label | source(...) | -| main.rs:279:5:279:15 | simple_sink | semmle.label | simple_sink | -| main.rs:279:5:279:15 | simple_sink | semmle.label | simple_sink | -| main.rs:279:17:279:17 | s | semmle.label | s | -| main.rs:279:17:279:17 | s | semmle.label | s | -| main.rs:287:5:287:14 | arg_source | semmle.label | arg_source | -| main.rs:287:5:287:14 | arg_source | semmle.label | arg_source | -| main.rs:287:16:287:16 | [post] i | semmle.label | [post] i | -| main.rs:287:16:287:16 | [post] i | semmle.label | [post] i | -| main.rs:288:10:288:10 | i | semmle.label | i | -| main.rs:288:10:288:10 | i | semmle.label | i | +| main.rs:187:9:187:9 | s | semmle.label | s | +| main.rs:187:9:187:9 | s | semmle.label | s | +| main.rs:187:13:187:22 | source(...) | semmle.label | source(...) | +| main.rs:187:13:187:22 | source(...) | semmle.label | source(...) | +| main.rs:188:14:188:14 | ... | semmle.label | ... | +| main.rs:188:14:188:14 | ... | semmle.label | ... | +| main.rs:189:14:189:14 | n | semmle.label | n | +| main.rs:189:14:189:14 | n | semmle.label | n | +| main.rs:192:11:192:11 | s | semmle.label | s | +| main.rs:192:11:192:11 | s | semmle.label | s | +| main.rs:196:13:196:22 | source(...) | semmle.label | source(...) | +| main.rs:196:13:196:22 | source(...) | semmle.label | source(...) | +| main.rs:197:17:197:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | +| main.rs:197:17:197:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | +| main.rs:197:40:197:40 | s | semmle.label | s | +| main.rs:197:40:197:40 | s | semmle.label | s | +| main.rs:198:9:198:9 | t | semmle.label | t | +| main.rs:198:9:198:9 | t | semmle.label | t | +| main.rs:198:13:198:24 | apply(...) | semmle.label | apply(...) | +| main.rs:198:13:198:24 | apply(...) | semmle.label | apply(...) | +| main.rs:198:23:198:23 | f [captured s] | semmle.label | f [captured s] | +| main.rs:198:23:198:23 | f [captured s] | semmle.label | f [captured s] | +| main.rs:199:10:199:10 | t | semmle.label | t | +| main.rs:199:10:199:10 | t | semmle.label | t | +| main.rs:203:9:203:9 | s | semmle.label | s | +| main.rs:203:9:203:9 | s | semmle.label | s | +| main.rs:203:13:203:22 | source(...) | semmle.label | source(...) | +| main.rs:203:13:203:22 | source(...) | semmle.label | source(...) | +| main.rs:204:14:204:14 | ... | semmle.label | ... | +| main.rs:204:14:204:14 | ... | semmle.label | ... | +| main.rs:204:17:204:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | +| main.rs:204:17:204:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} | +| main.rs:205:9:205:9 | t | semmle.label | t | +| main.rs:205:9:205:9 | t | semmle.label | t | +| main.rs:205:13:205:23 | apply(...) | semmle.label | apply(...) | +| main.rs:205:13:205:23 | apply(...) | semmle.label | apply(...) | +| main.rs:205:19:205:19 | s | semmle.label | s | +| main.rs:205:19:205:19 | s | semmle.label | s | +| main.rs:206:10:206:10 | t | semmle.label | t | +| main.rs:206:10:206:10 | t | semmle.label | t | +| main.rs:215:9:215:9 | s | semmle.label | s | +| main.rs:215:9:215:9 | s | semmle.label | s | +| main.rs:215:13:215:22 | source(...) | semmle.label | source(...) | +| main.rs:215:13:215:22 | source(...) | semmle.label | source(...) | +| main.rs:216:9:216:9 | t | semmle.label | t | +| main.rs:216:9:216:9 | t | semmle.label | t | +| main.rs:216:13:216:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] | +| main.rs:216:13:216:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] | +| main.rs:216:13:216:37 | await ... | semmle.label | await ... | +| main.rs:216:13:216:37 | await ... | semmle.label | await ... | +| main.rs:216:30:216:30 | s | semmle.label | s | +| main.rs:216:30:216:30 | s | semmle.label | s | +| main.rs:217:10:217:10 | t | semmle.label | t | +| main.rs:217:10:217:10 | t | semmle.label | t | +| main.rs:236:9:236:9 | s [D] | semmle.label | s [D] | +| main.rs:236:9:236:9 | s [D] | semmle.label | s [D] | +| main.rs:236:13:236:23 | enum_source | semmle.label | enum_source | +| main.rs:236:13:236:23 | enum_source | semmle.label | enum_source | +| main.rs:236:13:236:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] | +| main.rs:236:13:236:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] | +| main.rs:237:11:237:11 | s [D] | semmle.label | s [D] | +| main.rs:237:11:237:11 | s [D] | semmle.label | s [D] | +| main.rs:239:9:239:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | +| main.rs:239:9:239:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | +| main.rs:239:35:239:35 | i | semmle.label | i | +| main.rs:239:35:239:35 | i | semmle.label | i | +| main.rs:239:47:239:47 | i | semmle.label | i | +| main.rs:239:47:239:47 | i | semmle.label | i | +| main.rs:245:9:245:9 | s [C] | semmle.label | s [C] | +| main.rs:245:9:245:9 | s [C] | semmle.label | s [C] | +| main.rs:245:13:245:24 | e.source(...) [C] | semmle.label | e.source(...) [C] | +| main.rs:245:13:245:24 | e.source(...) [C] | semmle.label | e.source(...) [C] | +| main.rs:245:15:245:20 | source | semmle.label | source | +| main.rs:245:15:245:20 | source | semmle.label | source | +| main.rs:246:11:246:11 | s [C] | semmle.label | s [C] | +| main.rs:246:11:246:11 | s [C] | semmle.label | s [C] | +| main.rs:247:9:247:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:247:9:247:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:247:35:247:35 | i | semmle.label | i | +| main.rs:247:35:247:35 | i | semmle.label | i | +| main.rs:247:47:247:47 | i | semmle.label | i | +| main.rs:247:47:247:47 | i | semmle.label | i | +| main.rs:256:9:256:9 | s | semmle.label | s | +| main.rs:256:9:256:9 | s | semmle.label | s | +| main.rs:256:13:256:22 | source(...) | semmle.label | source(...) | +| main.rs:256:13:256:22 | source(...) | semmle.label | source(...) | +| main.rs:257:5:257:13 | enum_sink | semmle.label | enum_sink | +| main.rs:257:5:257:13 | enum_sink | semmle.label | enum_sink | +| main.rs:257:15:257:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:257:15:257:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:257:41:257:41 | s | semmle.label | s | +| main.rs:257:41:257:41 | s | semmle.label | s | +| main.rs:262:9:262:9 | s | semmle.label | s | +| main.rs:262:9:262:9 | s | semmle.label | s | +| main.rs:262:13:262:22 | source(...) | semmle.label | source(...) | +| main.rs:262:13:262:22 | source(...) | semmle.label | source(...) | +| main.rs:263:9:263:9 | e [D] | semmle.label | e [D] | +| main.rs:263:9:263:9 | e [D] | semmle.label | e [D] | +| main.rs:263:13:263:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | +| main.rs:263:13:263:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] | +| main.rs:263:39:263:39 | s | semmle.label | s | +| main.rs:263:39:263:39 | s | semmle.label | s | +| main.rs:264:5:264:5 | e [D] | semmle.label | e [D] | +| main.rs:264:5:264:5 | e [D] | semmle.label | e [D] | +| main.rs:264:7:264:10 | sink | semmle.label | sink | +| main.rs:264:7:264:10 | sink | semmle.label | sink | +| main.rs:273:9:273:9 | s | semmle.label | s | +| main.rs:273:9:273:9 | s | semmle.label | s | +| main.rs:273:13:273:25 | simple_source | semmle.label | simple_source | +| main.rs:273:13:273:25 | simple_source | semmle.label | simple_source | +| main.rs:273:13:273:29 | simple_source(...) | semmle.label | simple_source(...) | +| main.rs:273:13:273:29 | simple_source(...) | semmle.label | simple_source(...) | +| main.rs:274:10:274:10 | s | semmle.label | s | +| main.rs:274:10:274:10 | s | semmle.label | s | +| main.rs:281:9:281:9 | s | semmle.label | s | +| main.rs:281:9:281:9 | s | semmle.label | s | +| main.rs:281:13:281:22 | source(...) | semmle.label | source(...) | +| main.rs:281:13:281:22 | source(...) | semmle.label | source(...) | +| main.rs:282:5:282:15 | simple_sink | semmle.label | simple_sink | +| main.rs:282:5:282:15 | simple_sink | semmle.label | simple_sink | +| main.rs:282:17:282:17 | s | semmle.label | s | +| main.rs:282:17:282:17 | s | semmle.label | s | +| main.rs:290:5:290:14 | arg_source | semmle.label | arg_source | +| main.rs:290:5:290:14 | arg_source | semmle.label | arg_source | +| main.rs:290:16:290:16 | [post] i | semmle.label | [post] i | +| main.rs:290:16:290:16 | [post] i | semmle.label | [post] i | +| main.rs:291:10:291:10 | i | semmle.label | i | +| main.rs:291:10:291:10 | i | semmle.label | i | +| main.rs:343:9:343:10 | x1 | semmle.label | x1 | +| main.rs:343:9:343:10 | x1 | semmle.label | x1 | +| main.rs:343:14:343:23 | source(...) | semmle.label | source(...) | +| main.rs:343:14:343:23 | source(...) | semmle.label | source(...) | +| main.rs:343:14:343:30 | ... .max(...) | semmle.label | ... .max(...) | +| main.rs:343:14:343:30 | ... .max(...) | semmle.label | ... .max(...) | +| main.rs:344:10:344:11 | x1 | semmle.label | x1 | +| main.rs:344:10:344:11 | x1 | semmle.label | x1 | +| main.rs:346:9:346:10 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | +| main.rs:346:9:346:10 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | +| main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | semmle.label | ... .max(...) [MyStruct.field1] | +| main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | semmle.label | ... .max(...) [MyStruct.field1] | +| main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | +| main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] | +| main.rs:347:17:347:26 | source(...) | semmle.label | source(...) | +| main.rs:347:17:347:26 | source(...) | semmle.label | source(...) | +| main.rs:354:10:354:11 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | +| main.rs:354:10:354:11 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] | +| main.rs:354:10:354:18 | x2.field1 | semmle.label | x2.field1 | +| main.rs:354:10:354:18 | x2.field1 | semmle.label | x2.field1 | +| main.rs:359:9:359:10 | x4 | semmle.label | x4 | +| main.rs:359:9:359:10 | x4 | semmle.label | x4 | +| main.rs:359:14:359:23 | source(...) | semmle.label | source(...) | +| main.rs:359:14:359:23 | source(...) | semmle.label | source(...) | +| main.rs:359:14:359:30 | ... .max(...) | semmle.label | ... .max(...) | +| main.rs:359:14:359:30 | ... .max(...) | semmle.label | ... .max(...) | +| main.rs:360:10:360:11 | x4 | semmle.label | x4 | +| main.rs:360:10:360:11 | x4 | semmle.label | x4 | +| main.rs:362:9:362:10 | x5 | semmle.label | x5 | +| main.rs:362:14:362:23 | source(...) | semmle.label | source(...) | +| main.rs:362:14:362:30 | ... .lt(...) | semmle.label | ... .lt(...) | +| main.rs:363:10:363:11 | x5 | semmle.label | x5 | +| main.rs:365:9:365:10 | x6 | semmle.label | x6 | +| main.rs:365:14:365:23 | source(...) | semmle.label | source(...) | +| main.rs:365:14:365:27 | ... < ... | semmle.label | ... < ... | +| main.rs:366:10:366:11 | x6 | semmle.label | x6 | subpaths -| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | main.rs:194:17:194:42 | if ... {...} else {...} | main.rs:195:13:195:24 | apply(...) | -| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | main.rs:194:17:194:42 | if ... {...} else {...} | main.rs:195:13:195:24 | apply(...) | -| main.rs:202:19:202:19 | s | main.rs:201:14:201:14 | ... | main.rs:201:17:201:42 | if ... {...} else {...} | main.rs:202:13:202:23 | apply(...) | -| main.rs:202:19:202:19 | s | main.rs:201:14:201:14 | ... | main.rs:201:17:201:42 | if ... {...} else {...} | main.rs:202:13:202:23 | apply(...) | +| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | main.rs:197:17:197:42 | if ... {...} else {...} | main.rs:198:13:198:24 | apply(...) | +| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | main.rs:197:17:197:42 | if ... {...} else {...} | main.rs:198:13:198:24 | apply(...) | +| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | main.rs:204:17:204:42 | if ... {...} else {...} | main.rs:205:13:205:23 | apply(...) | +| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | main.rs:204:17:204:42 | if ... {...} else {...} | main.rs:205:13:205:23 | apply(...) | testFailures invalidSpecComponent #select @@ -580,25 +646,33 @@ invalidSpecComponent | main.rs:161:10:161:29 | get_tuple_element(...) | main.rs:159:13:159:22 | source(...) | main.rs:161:10:161:29 | get_tuple_element(...) | $@ | main.rs:159:13:159:22 | source(...) | source(...) | | main.rs:175:10:175:12 | t.1 | main.rs:172:13:172:22 | source(...) | main.rs:175:10:175:12 | t.1 | $@ | main.rs:172:13:172:22 | source(...) | source(...) | | main.rs:175:10:175:12 | t.1 | main.rs:172:13:172:22 | source(...) | main.rs:175:10:175:12 | t.1 | $@ | main.rs:172:13:172:22 | source(...) | source(...) | -| main.rs:186:14:186:14 | n | main.rs:184:13:184:22 | source(...) | main.rs:186:14:186:14 | n | $@ | main.rs:184:13:184:22 | source(...) | source(...) | -| main.rs:186:14:186:14 | n | main.rs:184:13:184:22 | source(...) | main.rs:186:14:186:14 | n | $@ | main.rs:184:13:184:22 | source(...) | source(...) | -| main.rs:196:10:196:10 | t | main.rs:193:13:193:22 | source(...) | main.rs:196:10:196:10 | t | $@ | main.rs:193:13:193:22 | source(...) | source(...) | -| main.rs:196:10:196:10 | t | main.rs:193:13:193:22 | source(...) | main.rs:196:10:196:10 | t | $@ | main.rs:193:13:193:22 | source(...) | source(...) | -| main.rs:203:10:203:10 | t | main.rs:200:13:200:22 | source(...) | main.rs:203:10:203:10 | t | $@ | main.rs:200:13:200:22 | source(...) | source(...) | -| main.rs:203:10:203:10 | t | main.rs:200:13:200:22 | source(...) | main.rs:203:10:203:10 | t | $@ | main.rs:200:13:200:22 | source(...) | source(...) | -| main.rs:214:10:214:10 | t | main.rs:212:13:212:22 | source(...) | main.rs:214:10:214:10 | t | $@ | main.rs:212:13:212:22 | source(...) | source(...) | -| main.rs:214:10:214:10 | t | main.rs:212:13:212:22 | source(...) | main.rs:214:10:214:10 | t | $@ | main.rs:212:13:212:22 | source(...) | source(...) | -| main.rs:236:47:236:47 | i | main.rs:233:13:233:23 | enum_source | main.rs:236:47:236:47 | i | $@ | main.rs:233:13:233:23 | enum_source | enum_source | -| main.rs:236:47:236:47 | i | main.rs:233:13:233:23 | enum_source | main.rs:236:47:236:47 | i | $@ | main.rs:233:13:233:23 | enum_source | enum_source | -| main.rs:244:47:244:47 | i | main.rs:242:15:242:20 | source | main.rs:244:47:244:47 | i | $@ | main.rs:242:15:242:20 | source | source | -| main.rs:244:47:244:47 | i | main.rs:242:15:242:20 | source | main.rs:244:47:244:47 | i | $@ | main.rs:242:15:242:20 | source | source | -| main.rs:254:5:254:13 | enum_sink | main.rs:253:13:253:22 | source(...) | main.rs:254:5:254:13 | enum_sink | $@ | main.rs:253:13:253:22 | source(...) | source(...) | -| main.rs:254:5:254:13 | enum_sink | main.rs:253:13:253:22 | source(...) | main.rs:254:5:254:13 | enum_sink | $@ | main.rs:253:13:253:22 | source(...) | source(...) | -| main.rs:261:7:261:10 | sink | main.rs:259:13:259:22 | source(...) | main.rs:261:7:261:10 | sink | $@ | main.rs:259:13:259:22 | source(...) | source(...) | -| main.rs:261:7:261:10 | sink | main.rs:259:13:259:22 | source(...) | main.rs:261:7:261:10 | sink | $@ | main.rs:259:13:259:22 | source(...) | source(...) | -| main.rs:271:10:271:10 | s | main.rs:270:13:270:25 | simple_source | main.rs:271:10:271:10 | s | $@ | main.rs:270:13:270:25 | simple_source | simple_source | -| main.rs:271:10:271:10 | s | main.rs:270:13:270:25 | simple_source | main.rs:271:10:271:10 | s | $@ | main.rs:270:13:270:25 | simple_source | simple_source | -| main.rs:279:5:279:15 | simple_sink | main.rs:278:13:278:22 | source(...) | main.rs:279:5:279:15 | simple_sink | $@ | main.rs:278:13:278:22 | source(...) | source(...) | -| main.rs:279:5:279:15 | simple_sink | main.rs:278:13:278:22 | source(...) | main.rs:279:5:279:15 | simple_sink | $@ | main.rs:278:13:278:22 | source(...) | source(...) | -| main.rs:288:10:288:10 | i | main.rs:287:5:287:14 | arg_source | main.rs:288:10:288:10 | i | $@ | main.rs:287:5:287:14 | arg_source | arg_source | -| main.rs:288:10:288:10 | i | main.rs:287:5:287:14 | arg_source | main.rs:288:10:288:10 | i | $@ | main.rs:287:5:287:14 | arg_source | arg_source | +| main.rs:189:14:189:14 | n | main.rs:187:13:187:22 | source(...) | main.rs:189:14:189:14 | n | $@ | main.rs:187:13:187:22 | source(...) | source(...) | +| main.rs:189:14:189:14 | n | main.rs:187:13:187:22 | source(...) | main.rs:189:14:189:14 | n | $@ | main.rs:187:13:187:22 | source(...) | source(...) | +| main.rs:199:10:199:10 | t | main.rs:196:13:196:22 | source(...) | main.rs:199:10:199:10 | t | $@ | main.rs:196:13:196:22 | source(...) | source(...) | +| main.rs:199:10:199:10 | t | main.rs:196:13:196:22 | source(...) | main.rs:199:10:199:10 | t | $@ | main.rs:196:13:196:22 | source(...) | source(...) | +| main.rs:206:10:206:10 | t | main.rs:203:13:203:22 | source(...) | main.rs:206:10:206:10 | t | $@ | main.rs:203:13:203:22 | source(...) | source(...) | +| main.rs:206:10:206:10 | t | main.rs:203:13:203:22 | source(...) | main.rs:206:10:206:10 | t | $@ | main.rs:203:13:203:22 | source(...) | source(...) | +| main.rs:217:10:217:10 | t | main.rs:215:13:215:22 | source(...) | main.rs:217:10:217:10 | t | $@ | main.rs:215:13:215:22 | source(...) | source(...) | +| main.rs:217:10:217:10 | t | main.rs:215:13:215:22 | source(...) | main.rs:217:10:217:10 | t | $@ | main.rs:215:13:215:22 | source(...) | source(...) | +| main.rs:239:47:239:47 | i | main.rs:236:13:236:23 | enum_source | main.rs:239:47:239:47 | i | $@ | main.rs:236:13:236:23 | enum_source | enum_source | +| main.rs:239:47:239:47 | i | main.rs:236:13:236:23 | enum_source | main.rs:239:47:239:47 | i | $@ | main.rs:236:13:236:23 | enum_source | enum_source | +| main.rs:247:47:247:47 | i | main.rs:245:15:245:20 | source | main.rs:247:47:247:47 | i | $@ | main.rs:245:15:245:20 | source | source | +| main.rs:247:47:247:47 | i | main.rs:245:15:245:20 | source | main.rs:247:47:247:47 | i | $@ | main.rs:245:15:245:20 | source | source | +| main.rs:257:5:257:13 | enum_sink | main.rs:256:13:256:22 | source(...) | main.rs:257:5:257:13 | enum_sink | $@ | main.rs:256:13:256:22 | source(...) | source(...) | +| main.rs:257:5:257:13 | enum_sink | main.rs:256:13:256:22 | source(...) | main.rs:257:5:257:13 | enum_sink | $@ | main.rs:256:13:256:22 | source(...) | source(...) | +| main.rs:264:7:264:10 | sink | main.rs:262:13:262:22 | source(...) | main.rs:264:7:264:10 | sink | $@ | main.rs:262:13:262:22 | source(...) | source(...) | +| main.rs:264:7:264:10 | sink | main.rs:262:13:262:22 | source(...) | main.rs:264:7:264:10 | sink | $@ | main.rs:262:13:262:22 | source(...) | source(...) | +| main.rs:274:10:274:10 | s | main.rs:273:13:273:25 | simple_source | main.rs:274:10:274:10 | s | $@ | main.rs:273:13:273:25 | simple_source | simple_source | +| main.rs:274:10:274:10 | s | main.rs:273:13:273:25 | simple_source | main.rs:274:10:274:10 | s | $@ | main.rs:273:13:273:25 | simple_source | simple_source | +| main.rs:282:5:282:15 | simple_sink | main.rs:281:13:281:22 | source(...) | main.rs:282:5:282:15 | simple_sink | $@ | main.rs:281:13:281:22 | source(...) | source(...) | +| main.rs:282:5:282:15 | simple_sink | main.rs:281:13:281:22 | source(...) | main.rs:282:5:282:15 | simple_sink | $@ | main.rs:281:13:281:22 | source(...) | source(...) | +| main.rs:291:10:291:10 | i | main.rs:290:5:290:14 | arg_source | main.rs:291:10:291:10 | i | $@ | main.rs:290:5:290:14 | arg_source | arg_source | +| main.rs:291:10:291:10 | i | main.rs:290:5:290:14 | arg_source | main.rs:291:10:291:10 | i | $@ | main.rs:290:5:290:14 | arg_source | arg_source | +| main.rs:344:10:344:11 | x1 | main.rs:343:14:343:23 | source(...) | main.rs:344:10:344:11 | x1 | $@ | main.rs:343:14:343:23 | source(...) | source(...) | +| main.rs:344:10:344:11 | x1 | main.rs:343:14:343:23 | source(...) | main.rs:344:10:344:11 | x1 | $@ | main.rs:343:14:343:23 | source(...) | source(...) | +| main.rs:354:10:354:18 | x2.field1 | main.rs:347:17:347:26 | source(...) | main.rs:354:10:354:18 | x2.field1 | $@ | main.rs:347:17:347:26 | source(...) | source(...) | +| main.rs:354:10:354:18 | x2.field1 | main.rs:347:17:347:26 | source(...) | main.rs:354:10:354:18 | x2.field1 | $@ | main.rs:347:17:347:26 | source(...) | source(...) | +| main.rs:360:10:360:11 | x4 | main.rs:359:14:359:23 | source(...) | main.rs:360:10:360:11 | x4 | $@ | main.rs:359:14:359:23 | source(...) | source(...) | +| main.rs:360:10:360:11 | x4 | main.rs:359:14:359:23 | source(...) | main.rs:360:10:360:11 | x4 | $@ | main.rs:359:14:359:23 | source(...) | source(...) | +| main.rs:363:10:363:11 | x5 | main.rs:362:14:362:23 | source(...) | main.rs:363:10:363:11 | x5 | $@ | main.rs:362:14:362:23 | source(...) | source(...) | +| main.rs:366:10:366:11 | x6 | main.rs:365:14:365:23 | source(...) | main.rs:366:10:366:11 | x6 | $@ | main.rs:365:14:365:23 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/models/models.ext.yml b/rust/ql/test/library-tests/dataflow/models/models.ext.yml index 9a9fa9e96ac4..eb51ac64f50f 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.ext.yml +++ b/rust/ql/test/library-tests/dataflow/models/models.ext.yml @@ -3,32 +3,34 @@ extensions: pack: codeql/rust-all extensible: sourceModel data: - - ["repo::test", "crate::simple_source", "ReturnValue", "test-source", "manual"] - - ["repo::test", "crate::enum_source", "ReturnValue.Field[crate::MyFieldEnum::D::field_d]", "test-source", "manual"] - - ["repo::test", "::source", "ReturnValue.Field[crate::MyFieldEnum::C::field_c]", "test-source", "manual"] - - ["repo::test", "crate::arg_source", "Argument[0]", "test-source", "manual"] + - ["main::simple_source", "ReturnValue", "test-source", "manual"] + - ["main::enum_source", "ReturnValue.Field[main::MyFieldEnum::D::field_d]", "test-source", "manual"] + - ["::source", "ReturnValue.Field[main::MyFieldEnum::C::field_c]", "test-source", "manual"] + - ["main::arg_source", "Argument[0]", "test-source", "manual"] - addsTo: pack: codeql/rust-all extensible: sinkModel data: - - ["repo::test", "crate::simple_sink", "Argument[0]", "test-sink", "manual"] - - ["repo::test", "crate::enum_sink", "Argument[0].Field[crate::MyFieldEnum::C::field_c]", "test-sink", "manual"] - - ["repo::test", "::sink", "Argument[self].Field[crate::MyFieldEnum::D::field_d]", "test-sink", "manual"] + - ["main::simple_sink", "Argument[0]", "test-sink", "manual"] + - ["main::enum_sink", "Argument[0].Field[main::MyFieldEnum::C::field_c]", "test-sink", "manual"] + - ["::sink", "Argument[self].Field[main::MyFieldEnum::D::field_d]", "test-sink", "manual"] - addsTo: pack: codeql/rust-all extensible: summaryModel data: - - ["repo::test", "crate::coerce", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["repo::test", "crate::get_var_pos", "Argument[0].Field[crate::MyPosEnum::A(0)]", "ReturnValue", "value", "manual"] - - ["repo::test", "crate::set_var_pos", "Argument[0]", "ReturnValue.Field[crate::MyPosEnum::B(0)]", "value", "manual"] - - ["repo::test", "crate::get_var_field", "Argument[0].Field[crate::MyFieldEnum::C::field_c]", "ReturnValue", "value", "manual"] - - ["repo::test", "crate::set_var_field", "Argument[0]", "ReturnValue.Field[crate::MyFieldEnum::D::field_d]", "value", "manual"] - - ["repo::test", "crate::get_struct_field", "Argument[0].Field[crate::MyStruct::field1]", "ReturnValue", "value", "manual"] - - ["repo::test", "crate::set_struct_field", "Argument[0]", "ReturnValue.Field[crate::MyStruct::field2]", "value", "manual"] - - ["repo::test", "crate::get_array_element", "Argument[0].Element", "ReturnValue", "value", "manual"] - - ["repo::test", "crate::set_array_element", "Argument[0]", "ReturnValue.Element", "value", "manual"] - - ["repo::test", "crate::get_tuple_element", "Argument[0].Field[0]", "ReturnValue", "value", "manual"] - - ["repo::test", "crate::set_tuple_element", "Argument[0]", "ReturnValue.Field[1]", "value", "manual"] - - ["repo::test", "crate::apply", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] - - ["repo::test", "crate::apply", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["repo::test", "crate::get_async_number", "Argument[0]", "ReturnValue.Future", "value", "manual"] + - ["main::coerce", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["main::get_var_pos", "Argument[0].Field[main::MyPosEnum::A(0)]", "ReturnValue", "value", "manual"] + - ["main::set_var_pos", "Argument[0]", "ReturnValue.Field[main::MyPosEnum::B(0)]", "value", "manual"] + - ["main::get_var_field", "Argument[0].Field[main::MyFieldEnum::C::field_c]", "ReturnValue", "value", "manual"] + - ["main::set_var_field", "Argument[0]", "ReturnValue.Field[main::MyFieldEnum::D::field_d]", "value", "manual"] + - ["main::get_struct_field", "Argument[0].Field[main::MyStruct::field1]", "ReturnValue", "value", "manual"] + - ["main::set_struct_field", "Argument[0]", "ReturnValue.Field[main::MyStruct::field2]", "value", "manual"] + - ["main::get_array_element", "Argument[0].Element", "ReturnValue", "value", "manual"] + - ["main::set_array_element", "Argument[0]", "ReturnValue.Element", "value", "manual"] + - ["main::get_tuple_element", "Argument[0].Field[0]", "ReturnValue", "value", "manual"] + - ["main::set_tuple_element", "Argument[0]", "ReturnValue.Field[1]", "value", "manual"] + - ["main::apply", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] + - ["main::apply", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] + - ["main::get_async_number", "Argument[0]", "ReturnValue.Future", "value", "manual"] + - ["<_ as core::cmp::Ord>::max", "Argument[self]", "ReturnValue", "value", "manual"] + - ["<_ as core::cmp::PartialOrd>::lt", "Argument[self].Reference", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/test/library-tests/dataflow/models/models.ql b/rust/ql/test/library-tests/dataflow/models/models.ql index b17b45bba82c..e621834bdec7 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.ql +++ b/rust/ql/test/library-tests/dataflow/models/models.ql @@ -20,7 +20,7 @@ query predicate invalidSpecComponent(SummarizedCallable sc, string s, string c) // not defined in `models.ext.yml`, in order to test that we can also define // models directly in QL private class SummarizedCallableIdentity extends SummarizedCallable::Range { - SummarizedCallableIdentity() { this = "repo::test::_::crate::identity" } + SummarizedCallableIdentity() { this.getName().getText() = "identity" } override predicate propagatesFlow( string input, string output, boolean preservesValue, string provenance diff --git a/rust/ql/test/library-tests/dataflow/pointers/Cargo.lock b/rust/ql/test/library-tests/dataflow/pointers/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/pointers/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected index 0aa771632529..adaeba79f61a 100644 --- a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected @@ -1,13 +1,87 @@ -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 | -| 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 | -| 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 | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +multipleCallTargets +| test.rs:98:14:98:43 | ...::_print(...) | +| test.rs:109:14:109:33 | ...::_print(...) | +| test.rs:112:62:112:77 | ...::from(...) | +| test.rs:119:58:119:73 | ...::from(...) | +| test.rs:135:22:135:43 | ...::_print(...) | +| test.rs:140:22:140:43 | ...::_print(...) | +| test.rs:144:22:144:44 | ...::_print(...) | +| test.rs:160:26:160:110 | ...::_print(...) | +| test.rs:168:26:168:111 | ...::_print(...) | +| test.rs:178:30:178:68 | ...::_print(...) | +| test.rs:187:26:187:105 | ...::_print(...) | +| test.rs:228:22:228:72 | ... .read_to_string(...) | +| test.rs:482:22:482:50 | file.read_to_end(...) | +| test.rs:488:22:488:53 | file.read_to_string(...) | +| test.rs:609:18:609:38 | ...::_print(...) | +| test.rs:614:18:614:45 | ...::_print(...) | +| test.rs:618:25:618:49 | address.to_socket_addrs() | +| test.rs:632:38:632:42 | ...::_print(...) | +| test.rs:636:38:636:54 | ...::_print(...) | +| test.rs:641:38:641:51 | ...::_print(...) | +| test.rs:651:34:651:52 | ...::_print(...) | +| test.rs:670:14:670:43 | ...::_print(...) | +| test.rs:685:18:685:42 | ...::_print(...) | +| test.rs:689:18:689:42 | ...::_print(...) | +| test.rs:694:18:694:45 | ...::_print(...) | +| test.rs:701:30:701:34 | ...::_print(...) | +| test.rs:705:30:705:52 | ...::_print(...) | +| test.rs:714:30:714:43 | ...::_print(...) | +| test.rs:724:30:724:34 | ...::_print(...) | +| test.rs:728:30:728:52 | ...::_print(...) | +| test.rs:737:30:737:43 | ...::_print(...) | +| test.rs:752:14:752:43 | ...::_print(...) | +| test.rs:766:14:766:34 | ...::_print(...) | +| test.rs:777:23:777:80 | ...::try_from(...) | +| test.rs:806:50:806:66 | ...::from(...) | +| test.rs:806:50:806:66 | ...::from(...) | +| test.rs:808:14:808:31 | ...::_print(...) | +| test.rs:811:14:811:31 | ...::_print(...) | +| test.rs:814:14:814:31 | ...::_print(...) | +| test.rs:817:14:817:30 | ...::_print(...) | +| test.rs:819:27:819:36 | ...::_print(...) | +| test.rs:820:28:820:41 | ...::_print(...) | +| test.rs:823:14:823:33 | ...::_print(...) | +| test.rs:825:27:825:36 | ...::_print(...) | +| test.rs:826:28:826:41 | ...::_print(...) | +| test.rs:829:14:829:31 | ...::_print(...) | +| test.rs:831:27:831:36 | ...::_print(...) | +| test.rs:832:28:832:41 | ...::_print(...) | +| test.rs:835:14:835:34 | ...::_print(...) | +| test.rs:837:27:837:36 | ...::_print(...) | +| test.rs:838:28:838:41 | ...::_print(...) | +| test.rs:841:14:841:25 | ...::_print(...) | +| test.rs:843:27:843:36 | ...::_print(...) | +| test.rs:844:28:844:41 | ...::_print(...) | +| test.rs:847:14:847:31 | ...::_print(...) | +| test.rs:849:27:849:36 | ...::_print(...) | +| test.rs:850:28:850:41 | ...::_print(...) | +| test.rs:853:14:853:30 | ...::_print(...) | +| test.rs:855:27:855:36 | ...::_print(...) | +| test.rs:856:28:856:41 | ...::_print(...) | +| test.rs:859:14:859:33 | ...::_print(...) | +| test.rs:861:27:861:36 | ...::_print(...) | +| test.rs:862:28:862:41 | ...::_print(...) | +| test.rs:865:14:865:36 | ...::_print(...) | +| test.rs:867:27:867:36 | ...::_print(...) | +| test.rs:868:28:868:41 | ...::_print(...) | +| test.rs:871:14:871:38 | ...::_print(...) | +| test.rs:873:27:873:36 | ...::_print(...) | +| test.rs:874:28:874:41 | ...::_print(...) | +| test.rs:877:14:877:45 | ...::_print(...) | +| test.rs:879:27:879:36 | ...::_print(...) | +| test.rs:880:28:880:41 | ...::_print(...) | +| test.rs:883:14:883:29 | ...::_print(...) | +| test.rs:885:27:885:36 | ...::_print(...) | +| test.rs:886:28:886:41 | ...::_print(...) | +| test_futures_io.rs:25:23:25:80 | ...::try_from(...) | +| test_futures_io.rs:35:26:35:63 | pinned.poll_read(...) | +| test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) | +| test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) | +| test_futures_io.rs:93:26:93:63 | pinned.poll_read(...) | +| test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) | +| test_futures_io.rs:145:26:145:49 | ...::with_capacity(...) | +| web_frameworks.rs:40:5:40:26 | ...::write_str(...) | +| web_frameworks.rs:40:5:40:26 | ...::write_str(...) | +| web_frameworks.rs:101:14:101:23 | a.as_str() | +| web_frameworks.rs:102:14:102:25 | a.as_bytes() | diff --git a/rust/ql/test/library-tests/dataflow/sources/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/Cargo.lock new file mode 100644 index 000000000000..5bdbe2c0ebbf --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/Cargo.lock @@ -0,0 +1,3052 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "actix-codec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-sink", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "actix-http" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44dfe5c9e0004c623edc65391dfd51daa201e7e30ebd9c9bedf873048ec32bc2" +dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-utils", + "base64", + "bitflags", + "brotli", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", + "flate2", + "foldhash", + "futures-core", + "h2 0.3.26", + "http 0.2.12", + "httparse", + "httpdate", + "itoa", + "language-tags", + "local-channel", + "mime", + "percent-encoding", + "pin-project-lite", + "rand", + "sha1", + "smallvec", + "tokio", + "tokio-util", + "tracing", + "zstd", +] + +[[package]] +name = "actix-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "actix-router" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" +dependencies = [ + "bytestring", + "cfg-if", + "http 0.2.12", + "regex", + "regex-lite", + "serde", + "tracing", +] + +[[package]] +name = "actix-rt" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix-server" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" +dependencies = [ + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", + "mio", + "socket2", + "tokio", + "tracing", +] + +[[package]] +name = "actix-service" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "actix-utils" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" +dependencies = [ + "local-waker", + "pin-project-lite", +] + +[[package]] +name = "actix-web" +version = "4.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a597b77b5c6d6a1e1097fddde329a83665e25c5437c696a3a9a4aa514a614dea" +dependencies = [ + "actix-codec", + "actix-http", + "actix-macros", + "actix-router", + "actix-rt", + "actix-server", + "actix-service", + "actix-utils", + "actix-web-codegen", + "bytes", + "bytestring", + "cfg-if", + "cookie", + "derive_more", + "encoding_rs", + "foldhash", + "futures-core", + "futures-util", + "impl-more", + "itoa", + "language-tags", + "log", + "mime", + "once_cell", + "pin-project-lite", + "regex", + "regex-lite", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "socket2", + "time", + "tracing", + "url", +] + +[[package]] +name = "actix-web-codegen" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f591380e2e68490b5dfaf1dd1aa0ebe78d84ba7067078512b4ea6e4492d622b8" +dependencies = [ + "actix-router", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.3.1", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 1.0.7", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener 5.4.0", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "aws-lc-rs" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fcc8f365936c834db5514fc45aee5b1202d677e6b40e48468aaaa8183ca8c7" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61b1d86e7705efe1be1b569bab41d4fa1e14e220b60a160f78de2db687add079" +dependencies = [ + "bindgen", + "cc", + "cmake", + "dunce", + "fs_extra", +] + +[[package]] +name = "axum" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +dependencies = [ + "axum-core", + "bytes", + "form_urlencoded", + "futures-util", + "http 1.3.1", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bindgen" +version = "0.69.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn", + "which", +] + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[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 = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel 2.3.1", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "brotli" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "bytestring" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e465647ae23b2823b0753f50decb2d5a86d2bb2cac04788fafd1f80e45378e5f" +dependencies = [ + "bytes", +] + +[[package]] +name = "cc" +version = "1.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "cmake" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +dependencies = [ + "cc", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "cookie" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener 5.4.0", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "flate2" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" +dependencies = [ + "futures-io", + "rustls", + "rustls-pki-types", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" + +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64", + "bytes", + "headers-core", + "http 1.3.1", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http 1.3.1", +] + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.10", + "http 1.3.1", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http 1.3.1", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.3.1", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-more" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jobserver" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "libloading" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +dependencies = [ + "cfg-if", + "windows-targets 0.53.2", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "local-channel" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" +dependencies = [ + "futures-core", + "futures-sink", + "local-waker", +] + +[[package]] +name = "local-waker" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +dependencies = [ + "value-bag", +] + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "log", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "poem" +version = "3.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ea63e9302279b1ca262d15342760f8d08f04fb974d4997e8baed7d034b94121" +dependencies = [ + "bytes", + "futures-util", + "headers", + "http 1.3.1", + "http-body-util", + "hyper", + "hyper-util", + "mime", + "nix", + "parking_lot", + "percent-encoding", + "pin-project-lite", + "poem-derive", + "regex", + "rfc7239", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "sync_wrapper", + "thiserror", + "tokio", + "tokio-util", + "tracing", + "wildmatch", +] + +[[package]] +name = "poem-derive" +version = "3.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824e7fe35343b7fe354e5d4ac444ddbe674676ebba4b4e48565835661033d338" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "polling" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.0.7", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6837b9e10d61f45f987d50808f83d1ee3d206c66acf650c3e4ae2e1f6ddedf55" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-lite" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.10", + "http 1.3.1", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "rfc7239" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a82f1d1e38e9a85bb58ffcfadf22ed6f2c94e8cd8581ec2b0f80a2a6858350f" +dependencies = [ + "uncased", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +dependencies = [ + "aws-lc-rs", + "log", + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +dependencies = [ + "aws-lc-rs", + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix 1.0.7", + "windows-sys 0.59.0", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "actix-web", + "async-std", + "axum", + "bytes", + "futures", + "futures-rustls", + "http 1.3.1", + "http-body-util", + "hyper", + "hyper-util", + "poem", + "reqwest", + "rustls", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http 1.3.1", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "uncased" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "value-bag" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.44", +] + +[[package]] +name = "wildmatch" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ce1ab1f8c62655ebe1350f589c61e505cf94d385bc6a12899442d9081e71fd" + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-registry" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3bab093bdd303a1240bb99b8aba8ea8a69ee19d34c9e2ef9594e708a4878820" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.15+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql index 7d5f4fb926f5..f0a38e29f194 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 da3b69eb0507..5139573d185b 100644 --- a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected @@ -50,8 +50,11 @@ | 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). | | test.rs:430:22:430:34 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | @@ -59,8 +62,6 @@ | test.rs:444:31:444:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:449:22:449:46 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:455:26:455:29 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:455:26:455:29 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:456:31:456:39 | file_name | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:456:31:456:39 | file_name | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:462:22:462:41 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:472:20:472:38 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | @@ -75,15 +76,17 @@ | 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). | -| 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). | -| web_frameworks.rs:21:31:21:36 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:43:31:43:44 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:43:31:43:45 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:51:31:51:32 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:51:31:51:32 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:60:15:60:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:60:15:60:15 | a | Flow source 'RemoteSource' of type remote (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:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:22:14:22:18 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:22:14:22:19 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:48:14:48:28 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:68:15:68:15 | a | 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 a9d9354529eb..a05a970f7b87 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 370f3d4c9b66..914350b68ceb 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -214,7 +214,7 @@ fn test_io_stdin() -> std::io::Result<()> { { let mut buffer = Vec::::new(); let _bytes = std::io::stdin().read_to_end(&mut buffer)?; // $ Alert[rust/summary/taint-sources] - sink(&buffer); // $ MISSING: hasTaintFlow + sink(&buffer); // $ hasTaintFlow -- @hvitved: works in CI, but not for me locally } { @@ -308,28 +308,28 @@ async fn test_tokio_stdin() -> Result<(), Box> { let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] let mut buffer = [0u8; 100]; let _bytes = stdin.read(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] let mut buffer = Vec::::new(); let _bytes = stdin.read_to_end(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_to_end` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] let mut buffer = String::new(); let _bytes = stdin.read_to_string(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_to_string` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] let mut buffer = [0; 100]; stdin.read_exact(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_exact` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { @@ -338,17 +338,17 @@ async fn test_tokio_stdin() -> Result<(), Box> { let v2 = stdin.read_i16().await?; let v3 = stdin.read_f32().await?; let v4 = stdin.read_i64_le().await?; - sink(v1); // $ hasTaintFlow - sink(v2); // $ hasTaintFlow - sink(v3); // $ hasTaintFlow - sink(v4); // $ hasTaintFlow + sink(v1); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_u8` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(v2); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_i16` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(v3); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_f32` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(v4); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_i64_le` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] let mut buffer = bytes::BytesMut::new(); stdin.read_buf(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_buf` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } // --- async reading from stdin (BufReader) --- @@ -356,7 +356,7 @@ async fn test_tokio_stdin() -> Result<(), Box> { { let mut reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] let data = reader.fill_buf().await?; - sink(&data); // $ hasTaintFlow + sink(&data); // $ MISSING: hasTaintFlow -- we cannot resolve the `fill_buf` call above, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` } { @@ -369,20 +369,20 @@ async fn test_tokio_stdin() -> Result<(), Box> { let mut buffer = String::new(); let mut reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] reader.read_line(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_line` call above, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` } { let mut buffer = Vec::::new(); let mut reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] reader.read_until(b',', &mut buffer).await?; - sink(&buffer); // $ hasTaintFlow - sink(buffer[0]); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_until` call above, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(buffer[0]); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_until` call above, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` } { let mut reader_split = tokio::io::BufReader::new(tokio::io::stdin()).split(b','); // $ Alert[rust/summary/taint-sources] - sink(reader_split.next_segment().await?.unwrap()); // $ hasTaintFlow + sink(reader_split.next_segment().await?.unwrap()); // $ MISSING: hasTaintFlow -- we cannot resolve the `split` call above, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` while let Some(chunk) = reader_split.next_segment().await? { sink(chunk); // $ MISSING: hasTaintFlow } @@ -391,7 +391,7 @@ async fn test_tokio_stdin() -> Result<(), Box> { { let reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] let mut lines = reader.lines(); - sink(lines.next_line().await?.unwrap()); // $ hasTaintFlow + sink(lines.next_line().await?.unwrap()); // $ MISSING: hasTaintFlow -- we cannot resolve the `lines` call above, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` while let Some(line) = lines.next_line().await? { sink(line); // $ MISSING: hasTaintFlow } @@ -529,25 +529,25 @@ async fn test_tokio_file() -> std::io::Result<()> { { let mut buffer = [0u8; 100]; let _bytes = file.read(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut buffer = Vec::::new(); let _bytes = file.read_to_end(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_to_end` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut buffer = String::new(); let _bytes = file.read_to_string(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_to_string` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut buffer = [0; 100]; file.read_exact(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_exact` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { @@ -555,16 +555,16 @@ async fn test_tokio_file() -> std::io::Result<()> { let v2 = file.read_i16().await?; let v3 = file.read_f32().await?; let v4 = file.read_i64_le().await?; - sink(v1); // $ hasTaintFlow="file.txt" - sink(v2); // $ hasTaintFlow="file.txt" - sink(v3); // $ hasTaintFlow="file.txt" - sink(v4); // $ hasTaintFlow="file.txt" + sink(v1); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_u8` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(v2); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_i16` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(v3); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_f32` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(v4); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_i64_le` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut buffer = bytes::BytesMut::new(); file.read_buf(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_buf` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } // --- misc operations --- @@ -575,7 +575,7 @@ async fn test_tokio_file() -> std::io::Result<()> { let file2 = tokio::fs::File::open("another_file.txt").await?; // $ Alert[rust/summary/taint-sources] let mut reader = file1.chain(file2); reader.read_to_string(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" hasTaintFlow="another_file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" hasTaintFlow="another_file.txt" -- we cannot resolve the `chain` and `read_to_string` calls above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { @@ -583,7 +583,7 @@ async fn test_tokio_file() -> std::io::Result<()> { let file1 = tokio::fs::File::open("file.txt").await?; // $ Alert[rust/summary/taint-sources] let mut reader = file1.take(100); reader.read_to_string(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `take` and `read_to_string` calls above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } Ok(()) @@ -687,8 +687,8 @@ async fn test_tokio_tcpstream(case: i64) -> std::io::Result<()> { sink(buffer1[0]); // $ hasTaintFlow=address println!("buffer2 = {:?}", buffer2); - sink(&buffer2); // $ hasTaintFlow=address - sink(buffer2[0]); // $ hasTaintFlow=address + sink(&buffer2); // $ MISSING: hasTaintFlow=address -- we cannot resolve the `read` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(buffer2[0]); // $ MISSING: hasTaintFlow=address -- we cannot resolve the `read` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` let buffer_string = String::from_utf8_lossy(&buffer2[..n2]); println!("string = {}", buffer_string); @@ -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(); // We cannot resolve the `reader` call because it comes from `Deref`: https://docs.rs/rustls/latest/rustls/client/struct.ClientConnection.html#deref-methods-ConnectionCommon%3CClientConnectionData%3E + sink(&reader); // $ MISSING: hasTaintFlow=config_arc + + { + let mut buffer = [0u8; 100]; + let _bytes = reader.read(&mut buffer)?; + sink(&buffer); // $ MISSING: hasTaintFlow=config_arc + } + + { + let mut buffer = Vec::::new(); + let _bytes = reader.read_to_end(&mut buffer)?; + sink(&buffer); // $ MISSING: hasTaintFlow=config_arc + } + + { + let mut buffer = String::new(); + let _bytes = reader.read_to_string(&mut buffer)?; + sink(&buffer); // $ MISSING: 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 000000000000..67dce4b21cc7 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs @@ -0,0 +1,160 @@ +fn sink(_: T) {} + +// --- tests --- + +use async_std::net::TcpStream; +use async_std::sync::Arc; +use futures::io::AsyncBufRead; +use futures::io::AsyncBufReadExt; +use futures::io::AsyncRead; +use futures::io::AsyncReadExt; +use futures::StreamExt; +use futures_rustls::TlsConnector; +use std::io; +use std::pin::Pin; +use std::task::{Context, Poll}; + +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); // we cannot correctly resolve this call, since it relies on `Deref` + if let Poll::Ready(Ok(n)) = bytes_read { + sink(&buffer); // $ MISSING: hasTaintFlow=url + 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 reader, &mut buffer1).await?; + sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url + + let mut buffer2 = [0u8; 64]; + let bytes_read2 = reader.read(&mut buffer2).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + + sink(&buffer2[..bytes_read2]); // $ MISSING: 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); // $ 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); // $ hasTaintFlow=url + sink(buf); // $ hasTaintFlow=url + } + _ => { + // ... + } + } + } + + { + // using the `AsyncBufReadExt::fill_buf` extension method (higher-level) + let buffer = reader2.fill_buf().await?; // we cannot resolve the `fill_buf` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(buffer); // $ MISSING: 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?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(&buffer2[..bytes_read2]); // $ MISSING: 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); // $ 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?; // we cannot resolve the `fill_buf` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(buffer); // $ MISSING: 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?; // we cannot resolve the `read_until` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(&line); // $ MISSING: hasTaintFlow=url + } + + { + // using the `AsyncBufReadExt::read_line` extension method + let mut line = String::new(); + let _bytes_read = reader2.read_line(&mut line).await?; // we cannot resolve the `read_line` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(&line); // $ MISSING: 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?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(&buffer); // $ MISSING: hasTaintFlow=url + } + + { + // using the `AsyncBufReadExt::lines` extension method + let mut lines_stream = reader2.lines(); // we cannot resolve the `lines` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(lines_stream.next().await.unwrap()); // $ MISSING: 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 6bfee08a3d2d..4168d1e3f6a2 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs @@ -1,24 +1,26 @@ - -fn sink(_: T) { } +fn sink(_: T) {} // --- tests --- mod poem_test { - use poem::{get, handler, web::Path, web::Query, Route, Server, listener::TcpListener}; - use serde::Deserialize; use super::sink; + use poem::{get, handler, listener::TcpListener, web::Path, web::Query, Route, Server}; + use serde::Deserialize; #[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 + fn my_poem_handler_1(Path(a): Path, // $ Alert[rust/summary/taint-sources] + ) -> String { + sink(a.as_str()); // $ MISSING: hasTaintFlow -- no type inference for patterns + sink(a.as_bytes()); // $ MISSING: hasTaintFlow -- no type inference for patterns + sink(a); // $ hasTaintFlow "".to_string() } #[handler] - fn my_poem_handler_2(Path((a, b)): Path<(String, String)>) -> String { // $ Alert[rust/summary/taint-sources] + fn my_poem_handler_2( + Path((a, b)): Path<(String, String)>, // $ Alert[rust/summary/taint-sources] + ) -> String { sink(a); // $ MISSING: hasTaintFlow sink(b); // $ MISSING: hasTaintFlow @@ -26,7 +28,9 @@ mod poem_test { } #[handler] - fn my_poem_handler_3(path: Path<(String, String)>) -> String { // $ MISSING: Alert[rust/summary/taint-sources] + fn my_poem_handler_3( + path: Path<(String, String)>, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> String { sink(&path.0); // $ MISSING: hasTaintFlow sink(&path.1); // $ MISSING: hasTaintFlow @@ -40,7 +44,9 @@ mod poem_test { } #[handler] - fn my_poem_handler_4(Path(MyStruct {a, b}): Path) -> String { // $ Alert[rust/summary/taint-sources] + fn my_poem_handler_4( + Path(MyStruct { a, b }): Path, // $ Alert[rust/summary/taint-sources] + ) -> String { sink(a); // $ MISSING: hasTaintFlow sink(b); // $ MISSING: hasTaintFlow @@ -48,7 +54,9 @@ mod poem_test { } #[handler] - fn my_poem_handler_5(Path(ms): Path) -> String { // $ Alert[rust/summary/taint-sources] + fn my_poem_handler_5( + Path(ms): Path, // $ Alert[rust/summary/taint-sources] + ) -> String { sink(ms.a); // $ MISSING: hasTaintFlow sink(ms.b); // $ MISSING: hasTaintFlow @@ -59,7 +67,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() } @@ -73,17 +81,22 @@ mod poem_test { .at("/5/:a/:b", get(my_poem_handler_5)) .at("/6/:a/", get(my_poem_handler_6)); - Server::new(TcpListener::bind("0.0.0.0:3000")).run(app).await.unwrap(); + Server::new(TcpListener::bind("0.0.0.0:3000")) + .run(app) + .await + .unwrap(); // ... } } mod actix_test { - use actix_web::{get, web, App}; use super::sink; + use actix_web::{get, web, App}; - async fn my_actix_handler_1(path: web::Path) -> String { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_actix_handler_1( + path: web::Path, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> String { let a = path.into_inner(); sink(a.as_str()); // $ MISSING: hasTaintFlow sink(a.as_bytes()); // $ MISSING: hasTaintFlow @@ -92,7 +105,9 @@ mod actix_test { "".to_string() } - async fn my_actix_handler_2(path: web::Path<(String, String)>) -> String { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_actix_handler_2( + path: web::Path<(String, String)>, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> String { let (a, b) = path.into_inner(); sink(a); // $ MISSING: hasTaintFlow @@ -101,14 +116,18 @@ mod actix_test { "".to_string() } - async fn my_actix_handler_3(web::Query(a): web::Query) -> String { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_actix_handler_3( + web::Query(a): web::Query, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> String { sink(a); // $ MISSING: hasTaintFlow "".to_string() } #[get("/4/{a}")] - async fn my_actix_handler_4(path: web::Path) -> String { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_actix_handler_4( + path: web::Path, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> String { let a = path.into_inner(); sink(a); // $ MISSING: hasTaintFlow @@ -127,13 +146,15 @@ mod actix_test { } mod axum_test { - use axum::Router; + use super::sink; + use axum::extract::{Json, Path, Query, Request}; use axum::routing::get; - use axum::extract::{Path, Query, Request, Json}; + use axum::Router; use std::collections::HashMap; - use super::sink; - async fn my_axum_handler_1(Path(a): Path) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_1( + Path(a): Path, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { sink(a.as_str()); // $ MISSING: hasTaintFlow sink(a.as_bytes()); // $ MISSING: hasTaintFlow sink(a); // $ MISSING: hasTaintFlow @@ -141,14 +162,18 @@ mod axum_test { "" } - async fn my_axum_handler_2(Path((a, b)): Path<(String, String)>) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_2( + Path((a, b)): Path<(String, String)>, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { sink(a); // $ MISSING: hasTaintFlow sink(b); // $ MISSING: hasTaintFlow "" } - async fn my_axum_handler_3(Query(params): Query>) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_3( + Query(params): Query>, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { for (key, value) in params { sink(key); // $ MISSING: hasTaintFlow sink(value); // $ MISSING: hasTaintFlow @@ -157,7 +182,9 @@ mod axum_test { "" } - async fn my_axum_handler_4(request: Request) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_4( + request: Request, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { sink(request.body()); // $ MISSING: hasTaintFlow request.headers().get("header").unwrap(); // $ MISSING: hasTaintFlow sink(request.into_body()); // $ MISSING: hasTaintFlow @@ -165,20 +192,26 @@ mod axum_test { "" } - async fn my_axum_handler_5(Json(payload): Json) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_5( + Json(payload): Json, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { sink(payload.as_str()); // $ MISSING: hasTaintFlow sink(payload); // $ MISSING: hasTaintFlow "" } - async fn my_axum_handler_6(body: String) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_6( + body: String, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { sink(body); // $ MISSING: hasTaintFlow "" } - async fn my_axum_handler_7(body: String) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_7( + body: String, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { sink(body); // $ MISSING: hasTaintFlow "" 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 000000000000..b6acd6b81a70 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,3 @@ +multipleCallTargets +| main.rs:52:14:52:29 | ...::from(...) | +| main.rs:64:16:64:25 | s.as_str() | diff --git a/rust/ql/test/library-tests/dataflow/strings/Cargo.lock b/rust/ql/test/library-tests/dataflow/strings/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/strings/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected b/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected index 63076f6b5dfd..cd15c9916288 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 @@ -1,9 +1,10 @@ models -| 1 | Summary: lang:alloc; <_ as crate::string::ToString>::to_string; Argument[self]; ReturnValue; taint | -| 2 | Summary: lang:alloc; ::from; Argument[0]; ReturnValue; value | -| 3 | Summary: lang:alloc; ::as_str; Argument[self]; ReturnValue; value | -| 4 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | -| 5 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | +| 1 | Summary: ::add; Argument[self]; ReturnValue; value | +| 2 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 3 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 4 | Summary: lang:alloc; ::from; Argument[0]; ReturnValue; value | +| 5 | Summary: lang:alloc; ::as_str; Argument[self]; ReturnValue; value | +| 6 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | edges | main.rs:26:9:26:9 | s | main.rs:27:19:27:25 | s[...] | provenance | | | main.rs:26:13:26:22 | source(...) | main.rs:26:9:26:9 | s | provenance | | @@ -11,46 +12,49 @@ edges | main.rs:27:18:27:25 | &... [&ref] | main.rs:27:9:27:14 | sliced [&ref] | provenance | | | main.rs:27:19:27:25 | s[...] | main.rs:27:18:27:25 | &... [&ref] | provenance | | | main.rs:32:9:32:10 | s1 | main.rs:35:9:35:10 | s4 | provenance | | +| main.rs:32:9:32:10 | s1 | main.rs:35:14:35:15 | s1 | provenance | | | main.rs:32:14:32:23 | source(...) | main.rs:32:9:32:10 | s1 | provenance | | | main.rs:35:9:35:10 | s4 | main.rs:38:10:38:11 | s4 | provenance | | -| main.rs:51:6:51:7 | s1 | main.rs:52:24:52:25 | s1 | provenance | | -| main.rs:51:11:51:26 | source_slice(...) | main.rs:51:6:51:7 | s1 | provenance | | -| main.rs:52:6:52:7 | s2 | main.rs:53:7:53:8 | s2 | provenance | | -| main.rs:52:11:52:26 | ...::from(...) | main.rs:52:6:52:7 | s2 | provenance | | -| main.rs:52:24:52:25 | s1 | main.rs:52:11:52:26 | ...::from(...) | provenance | MaD:2 | -| main.rs:57:6:57:7 | s1 | main.rs:58:11:58:24 | s1.to_string() | provenance | MaD:1 | -| 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:25 | s.as_str() | provenance | MaD:3 | +| main.rs:35:14:35:15 | s1 | main.rs:35:14:35:20 | ... + ... | provenance | MaD:1 | +| main.rs:35:14:35:20 | ... + ... | main.rs:35:9:35:10 | s4 | provenance | | +| main.rs:51:9:51:10 | s1 | main.rs:52:27:52:28 | s1 | provenance | | +| main.rs:51:14:51:29 | source_slice(...) | main.rs:51:9:51:10 | s1 | provenance | | +| main.rs:52:9:52:10 | s2 | main.rs:53:10:53:11 | s2 | provenance | | +| main.rs:52:14:52:29 | ...::from(...) | main.rs:52:9:52:10 | s2 | provenance | | +| main.rs:52:27:52:28 | s1 | main.rs:52:14:52:29 | ...::from(...) | provenance | MaD:4 | +| 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:2 | +| main.rs:63:9:63:9 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:5 | | 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:2 | +| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:5 | | 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 | | | main.rs:70:9:70:18 | formatted1 | main.rs:71:10:71:19 | formatted1 | provenance | | | main.rs:70:22:70:62 | ...::format(...) | main.rs:70:9:70:18 | formatted1 | provenance | | -| main.rs:70:34:70:61 | MacroExpr | main.rs:70:22:70:62 | ...::format(...) | provenance | MaD:4 | +| main.rs:70:34:70:61 | MacroExpr | main.rs:70:22:70:62 | ...::format(...) | provenance | MaD:6 | | main.rs:73:9:73:18 | formatted2 | main.rs:74:10:74:19 | formatted2 | provenance | | | main.rs:73:22:73:60 | ...::format(...) | main.rs:73:9:73:18 | formatted2 | provenance | | -| main.rs:73:34:73:59 | MacroExpr | main.rs:73:22:73:60 | ...::format(...) | provenance | MaD:4 | +| main.rs:73:34:73:59 | MacroExpr | main.rs:73:22:73:60 | ...::format(...) | provenance | MaD:6 | | main.rs:76:9:76:13 | width | main.rs:77:34:77:74 | MacroExpr | provenance | | | main.rs:76:17:76:32 | source_usize(...) | main.rs:76:9:76:13 | width | provenance | | | main.rs:77:9:77:18 | formatted3 | main.rs:78:10:78:19 | formatted3 | provenance | | | main.rs:77:22:77:75 | ...::format(...) | main.rs:77:9:77:18 | formatted3 | provenance | | -| main.rs:77:34:77:74 | MacroExpr | main.rs:77:22:77:75 | ...::format(...) | provenance | MaD:4 | +| main.rs:77:34:77:74 | MacroExpr | main.rs:77:22:77:75 | ...::format(...) | provenance | MaD:6 | | main.rs:82:9:82:10 | s1 | main.rs:86:18:86:25 | MacroExpr | provenance | | | main.rs:82:9:82:10 | s1 | main.rs:87:18:87:32 | MacroExpr | provenance | | | main.rs:82:14:82:23 | source(...) | main.rs:82:9:82:10 | s1 | provenance | | | main.rs:86:10:86:26 | res | main.rs:86:18:86:25 | { ... } | provenance | | | main.rs:86:18:86:25 | ...::format(...) | main.rs:86:10:86:26 | res | provenance | | | main.rs:86:18:86:25 | ...::must_use(...) | main.rs:86:10:86:26 | MacroExpr | provenance | | -| main.rs:86:18:86:25 | MacroExpr | main.rs:86:18:86:25 | ...::format(...) | provenance | MaD:4 | -| main.rs:86:18:86:25 | { ... } | main.rs:86:18:86:25 | ...::must_use(...) | provenance | MaD:5 | +| main.rs:86:18:86:25 | MacroExpr | main.rs:86:18:86:25 | ...::format(...) | provenance | MaD:6 | +| main.rs:86:18:86:25 | { ... } | main.rs:86:18:86:25 | ...::must_use(...) | provenance | MaD:3 | | main.rs:87:10:87:33 | res | main.rs:87:18:87:32 | { ... } | provenance | | | main.rs:87:18:87:32 | ...::format(...) | main.rs:87:10:87:33 | res | provenance | | | main.rs:87:18:87:32 | ...::must_use(...) | main.rs:87:10:87:33 | MacroExpr | provenance | | -| main.rs:87:18:87:32 | MacroExpr | main.rs:87:18:87:32 | ...::format(...) | provenance | MaD:4 | -| main.rs:87:18:87:32 | { ... } | main.rs:87:18:87:32 | ...::must_use(...) | provenance | MaD:5 | +| main.rs:87:18:87:32 | MacroExpr | main.rs:87:18:87:32 | ...::format(...) | provenance | MaD:6 | +| main.rs:87:18:87:32 | { ... } | main.rs:87:18:87:32 | ...::must_use(...) | provenance | MaD:3 | nodes | main.rs:26:9:26:9 | s | semmle.label | s | | main.rs:26:13:26:22 | source(...) | semmle.label | source(...) | @@ -61,20 +65,18 @@ nodes | main.rs:32:9:32:10 | s1 | semmle.label | s1 | | main.rs:32:14:32:23 | source(...) | semmle.label | source(...) | | main.rs:35:9:35:10 | s4 | semmle.label | s4 | +| main.rs:35:14:35:15 | s1 | semmle.label | s1 | +| main.rs:35:14:35:20 | ... + ... | semmle.label | ... + ... | | main.rs:38:10:38:11 | s4 | semmle.label | s4 | -| main.rs:51:6:51:7 | s1 | semmle.label | s1 | -| main.rs:51:11:51:26 | source_slice(...) | semmle.label | source_slice(...) | -| main.rs:52:6:52:7 | s2 | semmle.label | s2 | -| main.rs:52:11:52:26 | ...::from(...) | semmle.label | ...::from(...) | -| main.rs:52:24:52:25 | s1 | semmle.label | s1 | -| main.rs:53:7:53:8 | s2 | semmle.label | s2 | -| main.rs:57:6:57:7 | s1 | semmle.label | s1 | -| main.rs:57:11:57:26 | source_slice(...) | semmle.label | source_slice(...) | -| main.rs:58:6:58:7 | s2 | semmle.label | s2 | -| main.rs:58:11:58:24 | s1.to_string() | semmle.label | s1.to_string() | -| main.rs:59:7:59:8 | s2 | semmle.label | s2 | +| main.rs:51:9:51:10 | s1 | semmle.label | s1 | +| main.rs:51:14:51:29 | source_slice(...) | semmle.label | source_slice(...) | +| main.rs:52:9:52:10 | s2 | semmle.label | s2 | +| main.rs:52:14:52:29 | ...::from(...) | semmle.label | ...::from(...) | +| main.rs:52:27:52:28 | s1 | semmle.label | s1 | +| main.rs:53:10:53:11 | 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(...) | @@ -111,8 +113,7 @@ testFailures #select | main.rs:28:16:28:21 | sliced | main.rs:26:13:26:22 | source(...) | main.rs:28:16:28:21 | sliced | $@ | main.rs:26:13:26:22 | source(...) | source(...) | | main.rs:38:10:38:11 | s4 | main.rs:32:14:32:23 | source(...) | main.rs:38:10:38:11 | s4 | $@ | main.rs:32:14:32:23 | source(...) | source(...) | -| main.rs:53:7:53:8 | s2 | main.rs:51:11:51:26 | source_slice(...) | main.rs:53:7:53:8 | s2 | $@ | main.rs:51:11:51:26 | source_slice(...) | source_slice(...) | -| main.rs:59:7:59:8 | s2 | main.rs:57:11:57:26 | source_slice(...) | main.rs:59:7:59:8 | s2 | $@ | main.rs:57:11:57:26 | source_slice(...) | source_slice(...) | +| main.rs:53:10:53:11 | s2 | main.rs:51:14:51:29 | source_slice(...) | main.rs:53:10:53:11 | s2 | $@ | main.rs:51:14:51:29 | source_slice(...) | source_slice(...) | | main.rs:64:16:64:25 | s.as_str() | main.rs:63:13:63:22 | source(...) | main.rs:64:16:64:25 | s.as_str() | $@ | main.rs:63:13:63:22 | source(...) | source(...) | | main.rs:71:10:71:19 | formatted1 | main.rs:68:13:68:22 | source(...) | main.rs:71:10:71:19 | formatted1 | $@ | main.rs:68:13:68:22 | source(...) | source(...) | | main.rs:74:10:74:19 | formatted2 | main.rs:68:13:68:22 | source(...) | main.rs:74:10:74:19 | formatted2 | $@ | main.rs:68:13:68:22 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/strings/main.rs b/rust/ql/test/library-tests/dataflow/strings/main.rs index c04934de0517..772a45f19932 100644 --- a/rust/ql/test/library-tests/dataflow/strings/main.rs +++ b/rust/ql/test/library-tests/dataflow/strings/main.rs @@ -35,7 +35,7 @@ fn string_add() { let s4 = s1 + s3; let s5 = s2 + s3; - sink(s4); // $ hasTaintFlow=83 + sink(s4); // $ SPURIOUS: hasValueFlow=83 MISSING: hasTaintFlow=83 sink(s5); } @@ -48,15 +48,15 @@ fn string_add_reference() { } fn string_from() { - let s1 = source_slice(36); - let s2 = String::from(s1); - sink(s2); // $ hasValueFlow=36 + let s1 = source_slice(36); + let s2 = String::from(s1); + sink(s2); // $ hasValueFlow=36 } fn string_to_string() { - let s1 = source_slice(22); - let s2 = s1.to_string(); - sink(s2); // $ hasTaintFlow=22 + let s1 = source_slice(22); + let s2 = s1.to_string(); + sink(s2); // $ MISSING: hasTaintFlow=22 - we are not currently able to resolve the `to_string` call above, which comes from `impl ToString for T` } fn as_str() { diff --git a/rust/ql/test/library-tests/dataflow/taint/Cargo.lock b/rust/ql/test/library-tests/dataflow/taint/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/taint/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/taint/inline-taint-flow.expected b/rust/ql/test/library-tests/dataflow/taint/inline-taint-flow.expected index 55240680d53d..a8f0b6321f5d 100644 --- a/rust/ql/test/library-tests/dataflow/taint/inline-taint-flow.expected +++ b/rust/ql/test/library-tests/dataflow/taint/inline-taint-flow.expected @@ -1,9 +1,12 @@ models +| 1 | Summary: ::neg; Argument[self]; ReturnValue; taint | edges | main.rs:12:9:12:9 | a | main.rs:13:10:13:14 | ... + ... | provenance | | | main.rs:12:13:12:22 | source(...) | main.rs:12:9:12:9 | a | provenance | | | main.rs:17:9:17:9 | a | main.rs:18:10:18:11 | - ... | provenance | | +| main.rs:17:9:17:9 | a | main.rs:18:11:18:11 | a | provenance | | | main.rs:17:13:17:22 | source(...) | main.rs:17:9:17:9 | a | provenance | | +| main.rs:18:11:18:11 | a | main.rs:18:10:18:11 | - ... | provenance | MaD:1 | | main.rs:22:9:22:9 | a | main.rs:23:9:23:9 | b | provenance | | | main.rs:22:13:22:22 | source(...) | main.rs:22:9:22:9 | a | provenance | | | main.rs:23:9:23:9 | b | main.rs:24:10:24:17 | b as i64 | provenance | | @@ -23,6 +26,7 @@ nodes | main.rs:17:9:17:9 | a | semmle.label | a | | main.rs:17:13:17:22 | source(...) | semmle.label | source(...) | | main.rs:18:10:18:11 | - ... | semmle.label | - ... | +| main.rs:18:11:18:11 | a | semmle.label | a | | main.rs:22:9:22:9 | a | semmle.label | a | | main.rs:22:13:22:22 | source(...) | semmle.label | source(...) | | main.rs:23:9:23:9 | b | semmle.label | b | diff --git a/rust/ql/test/library-tests/definitions/Cargo.lock b/rust/ql/test/library-tests/definitions/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/definitions/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/definitions/Definitions.expected b/rust/ql/test/library-tests/definitions/Definitions.expected index 5d2a0db46c55..f3cde8950682 100644 --- a/rust/ql/test/library-tests/definitions/Definitions.expected +++ b/rust/ql/test/library-tests/definitions/Definitions.expected @@ -1,21 +1,29 @@ | main.rs:3:5:3:7 | lib | lib.rs:1:1:1:1 | SourceFile | file | -| main.rs:9:22:9:26 | value | main.rs:9:50:9:54 | value | format argument | -| main.rs:9:29:9:33 | width | main.rs:6:9:6:13 | width | local variable | -| main.rs:9:36:9:44 | precision | main.rs:7:9:7:17 | precision | local variable | -| main.rs:10:22:10:22 | 0 | main.rs:10:34:10:38 | value | format argument | -| main.rs:10:25:10:25 | 1 | main.rs:10:41:10:45 | width | format argument | -| main.rs:10:28:10:28 | 2 | main.rs:10:48:10:56 | precision | format argument | -| main.rs:10:34:10:38 | value | main.rs:8:9:8:13 | value | local variable | -| main.rs:10:41:10:45 | width | main.rs:6:9:6:13 | width | local variable | -| main.rs:10:48:10:56 | precision | main.rs:7:9:7:17 | precision | local variable | -| main.rs:11:21:11:22 | {} | main.rs:11:29:11:33 | value | format argument | -| main.rs:11:24:11:25 | {} | main.rs:11:36:11:40 | width | format argument | -| main.rs:11:29:11:33 | value | main.rs:8:9:8:13 | value | local variable | -| main.rs:11:36:11:40 | width | main.rs:6:9:6:13 | width | local variable | -| main.rs:13:22:13:27 | people | main.rs:12:9:12:14 | people | local variable | -| main.rs:14:16:14:16 | 1 | main.rs:14:34:14:34 | 2 | format argument | -| main.rs:14:19:14:20 | {} | main.rs:14:31:14:31 | 1 | format argument | -| main.rs:14:23:14:23 | 0 | main.rs:14:31:14:31 | 1 | format argument | -| main.rs:14:26:14:27 | {} | main.rs:14:34:14:34 | 2 | format argument | -| main.rs:15:31:15:35 | {:<5} | main.rs:15:40:15:42 | "x" | format argument | -| main.rs:16:13:16:13 | S | main.rs:1:1:1:9 | struct S | path | +| main.rs:9:14:9:14 | S | main.rs:7:9:7:21 | struct S | path | +| main.rs:10:36:10:39 | Self | main.rs:7:9:7:21 | struct S | path | +| main.rs:11:17:11:17 | S | main.rs:7:9:7:21 | struct S | path | +| main.rs:21:22:21:26 | value | main.rs:21:50:21:54 | value | format argument | +| main.rs:21:29:21:33 | width | main.rs:18:9:18:13 | width | local variable | +| main.rs:21:36:21:44 | precision | main.rs:19:9:19:17 | precision | local variable | +| main.rs:22:22:22:22 | 0 | main.rs:22:34:22:38 | value | format argument | +| main.rs:22:25:22:25 | 1 | main.rs:22:41:22:45 | width | format argument | +| main.rs:22:28:22:28 | 2 | main.rs:22:48:22:56 | precision | format argument | +| main.rs:22:34:22:38 | value | main.rs:20:9:20:13 | value | local variable | +| main.rs:22:41:22:45 | width | main.rs:18:9:18:13 | width | local variable | +| main.rs:22:48:22:56 | precision | main.rs:19:9:19:17 | precision | local variable | +| main.rs:23:21:23:22 | {} | main.rs:23:29:23:33 | value | format argument | +| main.rs:23:24:23:25 | {} | main.rs:23:36:23:40 | width | format argument | +| main.rs:23:29:23:33 | value | main.rs:20:9:20:13 | value | local variable | +| main.rs:23:36:23:40 | width | main.rs:18:9:18:13 | width | local variable | +| main.rs:25:22:25:27 | people | main.rs:24:9:24:14 | people | local variable | +| main.rs:26:16:26:16 | 1 | main.rs:26:34:26:34 | 2 | format argument | +| main.rs:26:19:26:20 | {} | main.rs:26:31:26:31 | 1 | format argument | +| main.rs:26:23:26:23 | 0 | main.rs:26:31:26:31 | 1 | format argument | +| main.rs:26:26:26:27 | {} | main.rs:26:34:26:34 | 2 | format argument | +| main.rs:27:31:27:35 | {:<5} | main.rs:27:40:27:42 | "x" | format argument | +| main.rs:28:13:28:13 | S | main.rs:1:1:1:9 | struct S | path | +| main.rs:29:13:29:14 | M1 | main.rs:5:1:15:1 | mod M1 | path | +| main.rs:29:17:29:18 | M2 | main.rs:6:5:14:5 | mod M2 | path | +| main.rs:29:21:29:21 | S | main.rs:7:9:7:21 | struct S | path | +| main.rs:30:5:30:5 | s | main.rs:29:9:29:9 | s | local variable | +| main.rs:30:7:30:12 | method | main.rs:10:13:12:13 | fn method | method | diff --git a/rust/ql/test/library-tests/definitions/main.rs b/rust/ql/test/library-tests/definitions/main.rs index bde0b8cb993b..35acea6858e6 100644 --- a/rust/ql/test/library-tests/definitions/main.rs +++ b/rust/ql/test/library-tests/definitions/main.rs @@ -2,6 +2,18 @@ struct S; mod lib; +mod M1 { + pub mod M2 { + pub struct S; + + impl S { + pub fn method(self) -> Self { + S + } + } + } +} + fn main() { let width = 4; let precision = 2; @@ -14,4 +26,6 @@ fn main() { println!("{1} {} {0} {}", 1, 2); assert_eq!(format!("Hello {:<5}!", "x"), "Hello x !"); let x = S; + let s = M1::M2::S; + s.method(); } diff --git a/rust/ql/test/library-tests/formatstrings/Cargo.lock b/rust/ql/test/library-tests/formatstrings/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/formatstrings/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 0aa771632529..000000000000 --- a/rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,13 +0,0 @@ -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 | -| 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 | -| 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 | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | diff --git a/rust/ql/test/library-tests/frameworks/postgres/Cargo.lock b/rust/ql/test/library-tests/frameworks/postgres/Cargo.lock new file mode 100644 index 000000000000..2dce9e08cc90 --- /dev/null +++ b/rust/ql/test/library-tests/frameworks/postgres/Cargo.lock @@ -0,0 +1,882 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[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 = "bumpalo" +version = "3.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.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", + "subtle", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[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 = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "postgres" +version = "0.19.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "363e6dfbdd780d3aa3597b6eb430db76bb315fa9bad7fae595bb8def808b8470" +dependencies = [ + "bytes", + "fallible-iterator", + "futures-util", + "log", + "tokio", + "tokio-postgres", +] + +[[package]] +name = "postgres-protocol" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ff0abab4a9b844b93ef7b81f1efc0a366062aaef2cd702c76256b5dc075c54" +dependencies = [ + "base64", + "byteorder", + "bytes", + "fallible-iterator", + "hmac", + "md-5", + "memchr", + "rand", + "sha2", + "stringprep", +] + +[[package]] +name = "postgres-types" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613283563cd90e1dfc3518d548caee47e0e725455ed619881f5cf21f36de4b48" +dependencies = [ + "bytes", + "fallible-iterator", + "postgres-protocol", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "postgres", +] + +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-postgres" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c95d533c83082bb6490e0189acaa0bbeef9084e60471b696ca6988cd0541fb0" +dependencies = [ + "async-trait", + "byteorder", + "bytes", + "fallible-iterator", + "futures-channel", + "futures-util", + "log", + "parking_lot", + "percent-encoding", + "phf", + "pin-project-lite", + "postgres-protocol", + "postgres-types", + "rand", + "socket2", + "tokio", + "tokio-util", + "whoami", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "whoami" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" +dependencies = [ + "redox_syscall", + "wasite", + "web-sys", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/rust/ql/test/library-tests/frameworks/rusqlite/Cargo.lock b/rust/ql/test/library-tests/frameworks/rusqlite/Cargo.lock new file mode 100644 index 000000000000..045485bfb7bf --- /dev/null +++ b/rust/ql/test/library-tests/frameworks/rusqlite/Cargo.lock @@ -0,0 +1,110 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "cc" +version = "1.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +dependencies = [ + "shlex", +] + +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8935b44e7c13394a179a438e0cebba0fe08fe01b54f152e29a93b5cf993fd4" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "rusqlite" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c6d5e5acb6f6129fe3f7ba0a7fc77bca1942cb568535e18e7bc40262baf3110" +dependencies = [ + "bitflags", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "rusqlite", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" diff --git a/rust/ql/test/library-tests/operations/Cargo.lock b/rust/ql/test/library-tests/operations/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/operations/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected index 9d4e175192b4..e7483499ba76 100644 --- a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,7 @@ +multipleCallTargets +| main.rs:118:9:118:11 | f(...) | +| proc_macro.rs:10:10:10:12 | ...::to_tokens(...) | multiplePathResolutions -| 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:626:3:626:12 | proc_macro | +| main.rs:632:7:632:16 | proc_macro | +| main.rs:635:7:635:16 | proc_macro | diff --git a/rust/ql/test/library-tests/path-resolution/Cargo.lock b/rust/ql/test/library-tests/path-resolution/Cargo.lock new file mode 100644 index 000000000000..3ed3f289c886 --- /dev/null +++ b/rust/ql/test/library-tests/path-resolution/Cargo.lock @@ -0,0 +1,53 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc_macro" +version = "0.0.1" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "proc_macro", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs index ce44915a9d4b..cf848ba26876 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,25 @@ mod m24 { } // I121 } +extern crate self as zelf; + +#[proc_macro::add_suffix("changed")] // $ item=add_suffix +fn z() {} // I122 + +struct AStruct {} //I123 +impl AStruct // $ item=I123 +{ + #[proc_macro::add_suffix("on_type")] // $ item=add_suffix + pub fn z() {} // I124 + + #[proc_macro::add_suffix("on_instance")] // $ item=add_suffix + pub fn z(&self) {} // I125 +} + +use std::{self as ztd}; // $ item=std + +fn use_ztd(x: ztd::string::String) {} // $ item=String + fn main() { my::nested::nested1::nested2::f(); // $ item=I4 my::f(); // $ item=I38 @@ -650,4 +669,9 @@ fn main() { m18::m19::m20::g(); // $ item=I103 m23::f(); // $ item=I108 m24::f(); // $ item=I121 + zelf::h(); // $ item=I25 + z_changed(); // $ MISSING: item=I122 + AStruct::z_on_type(); // $ MISSING: item=I124 + AStruct {} // $ item=I123 + .z_on_instance(); // MISSING: item=I125 } diff --git a/rust/ql/test/library-tests/path-resolution/my.rs b/rust/ql/test/library-tests/path-resolution/my.rs index 3d7b150214aa..f2488df4959c 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 054905f39096..164852626dbe 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -61,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:677: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 | @@ -73,7 +73,7 @@ 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:677: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 | {EXTERNAL LOCATION} | struct i32 | @@ -88,7 +88,7 @@ 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:677: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 | @@ -145,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 | @@ -266,65 +266,84 @@ 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:626:3:626:12 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) | +| main.rs:626:3:626:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:626:3:626:24 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | +| main.rs:630:6:630:12 | AStruct | main.rs:629:1:629:17 | struct AStruct | +| main.rs:632:7:632:16 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) | +| main.rs:632:7:632:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:632:7:632:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | +| main.rs:635:7:635:16 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) | +| main.rs:635:7:635:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:635:7:635:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | +| main.rs:639:5:639:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:639:11:639:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:641:15:641:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:641:15:641:25 | ...::string | {EXTERNAL LOCATION} | mod string | +| main.rs:641:15:641:33 | ...::String | {EXTERNAL LOCATION} | struct String | +| main.rs:644:5:644:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:644:5:644:14 | ...::nested | my.rs:1:1:1:15 | mod nested | +| main.rs:644:5:644:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | +| main.rs:644:5:644:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | +| main.rs:644:5:644:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | +| main.rs:645:5:645:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:645:5:645:9 | ...::f | my.rs:5:1:7:1 | fn f | +| main.rs:646:5:646:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:646:5:646:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:646:5:646:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:646:5:646:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:647:5:647:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:648:5:648:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:649:5:649:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:649:5:649:12 | ...::h | main.rs:50:1:69:1 | fn h | +| main.rs:650:5:650:6 | m1 | main.rs:13:1:37:1 | mod m1 | +| main.rs:650:5:650:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 | +| main.rs:650:5:650:13 | ...::g | main.rs:23:9:27:9 | fn g | +| main.rs:651:5:651:6 | m1 | main.rs:13:1:37:1 | mod m1 | +| main.rs:651:5:651:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 | +| main.rs:651:5:651:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 | +| main.rs:651:5:651:17 | ...::h | main.rs:30:27:34:13 | fn h | +| main.rs:652:5:652:6 | m4 | main.rs:39:1:46:1 | mod m4 | +| main.rs:652:5:652:9 | ...::i | main.rs:42:5:45:5 | fn i | +| main.rs:653:5:653:5 | h | main.rs:50:1:69:1 | fn h | +| main.rs:654:5:654:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:655:5:655:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:656:5:656:5 | j | main.rs:97:1:101:1 | fn j | +| main.rs:657:5:657:6 | m6 | main.rs:109:1:120:1 | mod m6 | +| main.rs:657:5:657:9 | ...::g | main.rs:114:5:119:5 | fn g | +| main.rs:658:5:658:6 | m7 | main.rs:122:1:141:1 | mod m7 | +| main.rs:658:5:658:9 | ...::f | main.rs:133:5:140:5 | fn f | +| main.rs:659:5:659:6 | m8 | main.rs:143:1:197:1 | mod m8 | +| main.rs:659:5:659:9 | ...::g | main.rs:181:5:196:5 | fn g | +| main.rs:660:5:660:6 | m9 | main.rs:199:1:207:1 | mod m9 | +| main.rs:660:5:660:9 | ...::f | main.rs:202:5:206:5 | fn f | +| main.rs:661:5:661:7 | m11 | main.rs:230:1:267:1 | mod m11 | +| main.rs:661:5:661:10 | ...::f | main.rs:235:5:238:5 | fn f | +| main.rs:662:5:662:7 | m15 | main.rs:298:1:352:1 | mod m15 | +| main.rs:662:5:662:10 | ...::f | main.rs:339:5:351:5 | fn f | +| main.rs:663:5:663:7 | m16 | main.rs:354:1:446:1 | mod m16 | +| main.rs:663:5:663:10 | ...::f | main.rs:421:5:445:5 | fn f | +| main.rs:664:5:664:7 | m17 | main.rs:448:1:478:1 | mod m17 | +| main.rs:664:5:664:10 | ...::f | main.rs:472:5:477:5 | fn f | +| main.rs:665:5:665:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | +| main.rs:665:5:665:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | +| main.rs:666:5:666:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | +| main.rs:666:5:666:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:667:5:667:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 | +| main.rs:667:5:667:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | +| main.rs:668:5:668:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:669:5:669:7 | m18 | main.rs:480:1:498:1 | mod m18 | +| main.rs:669:5:669:12 | ...::m19 | main.rs:485:5:497:5 | mod m19 | +| main.rs:669:5:669:17 | ...::m20 | main.rs:490:9:496:9 | mod m20 | +| main.rs:669:5:669:20 | ...::g | main.rs:491:13:495:13 | fn g | +| main.rs:670:5:670:7 | m23 | main.rs:527:1:552:1 | mod m23 | +| main.rs:670:5:670:10 | ...::f | main.rs:547:5:551:5 | fn f | +| main.rs:671:5:671:7 | m24 | main.rs:554:1:622:1 | mod m24 | +| main.rs:671:5:671:10 | ...::f | main.rs:608:5:621:5 | fn f | +| main.rs:672:5:672:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:672:5:672:11 | ...::h | main.rs:50:1:69:1 | fn h | +| main.rs:674:5:674:11 | AStruct | main.rs:629:1:629:17 | struct AStruct | +| main.rs:675:5:675:11 | AStruct | main.rs:629:1:629:17 | struct AStruct | | 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 | @@ -340,7 +359,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:677: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 | @@ -354,6 +373,7 @@ resolvePath | 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: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<...> | @@ -366,4 +386,21 @@ resolvePath | 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 | +| proc_macro.rs:1:5:1:14 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) | +| proc_macro.rs:1:5:1:27 | ...::TokenStream | {EXTERNAL LOCATION} | struct TokenStream | +| proc_macro.rs:2:5:2:9 | quote | {EXTERNAL LOCATION} | Crate(quote@1.0.40) | +| proc_macro.rs:5:25:5:35 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream | +| proc_macro.rs:5:44:5:54 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream | +| proc_macro.rs:5:60:5:70 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream | +| proc_macro.rs:6:16:6:18 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) | +| proc_macro.rs:6:48:6:50 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) | +| proc_macro.rs:6:48:6:58 | ...::LitStr | {EXTERNAL LOCATION} | struct LitStr | +| proc_macro.rs:6:48:6:58 | ...::parse::<...> | {EXTERNAL LOCATION} | fn parse | +| proc_macro.rs:7:19:7:21 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) | +| proc_macro.rs:7:51:7:53 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) | +| proc_macro.rs:7:51:7:61 | ...::ItemFn | {EXTERNAL LOCATION} | struct ItemFn | +| proc_macro.rs:7:51:7:61 | ...::parse::<...> | {EXTERNAL LOCATION} | fn parse | +| proc_macro.rs:8:21:8:23 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) | +| proc_macro.rs:8:21:8:30 | ...::Ident | {EXTERNAL LOCATION} | struct Ident | +| proc_macro.rs:8:21:8:35 | ...::new | {EXTERNAL LOCATION} | fn new | testFailures diff --git a/rust/ql/test/library-tests/path-resolution/proc_macro.rs b/rust/ql/test/library-tests/path-resolution/proc_macro.rs new file mode 100644 index 000000000000..c95fc6fe6401 --- /dev/null +++ b/rust/ql/test/library-tests/path-resolution/proc_macro.rs @@ -0,0 +1,12 @@ +use proc_macro::TokenStream; +use quote::quote; + +#[proc_macro_attribute] +pub fn add_suffix(attr: TokenStream, item: TokenStream) -> TokenStream { + let suff = syn::parse_macro_input!(attr as syn::LitStr).value(); + let mut ast = syn::parse_macro_input!(item as syn::ItemFn); + ast.sig.ident = syn::Ident::new(&format!("{}_{}", ast.sig.ident, suff), ast.sig.ident.span()); + quote! { + #ast + }.into() +} diff --git a/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..8e9d2afecd0c --- /dev/null +++ b/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,27 @@ +multipleCallTargets +| test.rs:55:7:55:26 | ... .as_str() | +| test.rs:56:7:56:21 | ... .as_str() | +| test.rs:72:7:72:26 | ... .as_str() | +| test.rs:73:7:73:36 | ... .as_str() | +| test.rs:74:7:74:34 | ... .as_str() | +| test.rs:75:7:75:27 | ... .as_str() | +| test.rs:254:7:254:36 | ... .as_str() | +| test.rs:256:7:256:33 | ... .as_str() | +| test.rs:257:7:257:36 | ... .as_str() | +| test.rs:258:7:258:26 | ... .as_str() | +| test.rs:262:7:262:28 | ... .as_str() | +| test.rs:263:7:263:37 | ... .as_str() | +| test.rs:264:7:264:36 | ... .as_str() | +| test.rs:267:7:267:32 | ... .as_str() | +| test.rs:277:7:277:34 | ... .as_str() | +| test.rs:280:7:280:36 | ... .as_str() | +| test.rs:284:7:284:39 | ... .as_str() | +| test.rs:291:7:291:53 | ... .as_str() | +| test.rs:292:7:292:45 | ... .as_str() | +| test.rs:294:7:294:39 | ... .as_str() | +| test.rs:295:7:295:34 | ... .as_str() | +| test.rs:296:7:296:42 | ... .as_str() | +| test.rs:298:7:298:48 | ... .as_str() | +| test.rs:299:7:299:35 | ... .as_str() | +| test.rs:300:7:300:35 | ... .as_str() | +| test.rs:339:7:339:39 | ... .as_str() | diff --git a/rust/ql/test/library-tests/sensitivedata/Cargo.lock b/rust/ql/test/library-tests/sensitivedata/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/sensitivedata/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/sensitivedata/test.rs b/rust/ql/test/library-tests/sensitivedata/test.rs index f74de9f5bf86..a34fbb1dda9e 100644 --- a/rust/ql/test/library-tests/sensitivedata/test.rs +++ b/rust/ql/test/library-tests/sensitivedata/test.rs @@ -279,7 +279,7 @@ fn test_private_info( sink(&info.medical_notes); // $ sensitive=private sink(info.medical_notes[0].as_str()); // $ sensitive=private for n in info.medical_notes.iter() { - sink(n.as_str()); // $ sensitive=private + sink(n.as_str()); // $ MISSING: sensitive=private } sink(info.confidentialMessage.as_str()); // $ MISSING: sensitive=private sink(info.confidentialMessage.to_lowercase()); // $ MISSING: sensitive=private diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..5e4affb7437f --- /dev/null +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,9 @@ +multipleCallTargets +| dereference.rs:61:15:61:24 | e1.deref() | +| main.rs:2032:13:2032:31 | ...::from(...) | +| main.rs:2033:13:2033:31 | ...::from(...) | +| main.rs:2034:13:2034:31 | ...::from(...) | +| main.rs:2040:13:2040:31 | ...::from(...) | +| main.rs:2041:13:2041:31 | ...::from(...) | +| main.rs:2042:13:2042:31 | ...::from(...) | +| main.rs:2078:21:2078:43 | ...::from(...) | diff --git a/rust/ql/test/library-tests/type-inference/Cargo.lock b/rust/ql/test/library-tests/type-inference/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/type-inference/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/type-inference/dereference.rs b/rust/ql/test/library-tests/type-inference/dereference.rs new file mode 100644 index 000000000000..fb16eb00cf3d --- /dev/null +++ b/rust/ql/test/library-tests/type-inference/dereference.rs @@ -0,0 +1,102 @@ +/// This file contains tests for dereferencing with through the `Deref` trait. +use std::ops::Deref; + +struct MyIntPointer { + value: i64, +} + +impl Deref for MyIntPointer { + type Target = i64; + + // MyIntPointer::deref + fn deref(&self) -> &i64 { + &self.value // $ fieldof=MyIntPointer + } +} + +struct MySmartPointer { + value: T, +} + +impl Deref for MySmartPointer { + type Target = T; + + // MySmartPointer::deref + fn deref(&self) -> &T { + &self.value // $ fieldof=MySmartPointer + } +} + +fn explicit_monomorphic_dereference() { + // Dereference with method call + let a1 = MyIntPointer { value: 34i64 }; + let _b1 = a1.deref(); // $ method=MyIntPointer::deref type=_b1:&T.i64 + + // Dereference with overloaded dereference operator + let a2 = MyIntPointer { value: 34i64 }; + let _b2 = *a2; // $ method=MyIntPointer::deref type=_b2:i64 + + // Call method on explicitly dereferenced value + let a3 = MyIntPointer { value: 34i64 }; + let _b3 = (*a3).is_positive(); // $ method=MyIntPointer::deref method=is_positive type=_b3:bool +} + +fn explicit_polymorphic_dereference() { + // Explicit dereference with type parameter + let c1 = MySmartPointer { value: 'a' }; + let _d1 = c1.deref(); // $ method=MySmartPointer::deref type=_d1:&T.char + + // Explicit dereference with type parameter + let c2 = MySmartPointer { value: 'a' }; + let _d2 = *c2; // $ method=MySmartPointer::deref type=_d2:char + + // Call method on explicitly dereferenced value with type parameter + let c3 = MySmartPointer { value: 34i64 }; + let _d3 = (*c3).is_positive(); // $ method=MySmartPointer::deref method=is_positive type=_d3:bool +} + +fn explicit_ref_dereference() { + // Explicit dereference with type parameter + let e1 = &'a'; + let _f1 = e1.deref(); // $ method=deref MISSING: type=_f1:&T.char + + // Explicit dereference with type parameter + let e2 = &'a'; + let _f2 = *e2; // $ method=deref type=_f2:char + + // Call method on explicitly dereferenced value with type parameter + let e3 = &34i64; + let _f3 = (*e3).is_positive(); // $ method=deref method=is_positive type=_f3:bool +} + +fn explicit_box_dereference() { + // Explicit dereference with type parameter + let g1: Box = Box::new('a'); + let _h1 = g1.deref(); // $ method=deref type=_h1:&T.char + + // Explicit dereference with type parameter + let g2: Box = Box::new('a'); + let _h2 = *g2; // $ method=deref type=_h2:char + + // Call method on explicitly dereferenced value with type parameter + let g3: Box = Box::new(34i64); + let _h3 = (*g3).is_positive(); // $ method=deref method=is_positive type=_h3:bool +} + +fn implicit_dereference() { + // Call method on implicitly dereferenced value + let x = MyIntPointer { value: 34i64 }; + let _y = x.is_positive(); // $ MISSING: method=is_positive type=_y:bool + + // Call method on implicitly dereferenced value + let x = MySmartPointer { value: 34i64 }; + let _y = x.is_positive(); // $ MISSING: method=is_positive type=_y:bool +} + +pub fn test() { + explicit_monomorphic_dereference(); + explicit_polymorphic_dereference(); + explicit_ref_dereference(); + explicit_box_dereference(); + implicit_dereference(); +} diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 36d3f5a82ea8..e89a19b58708 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -14,7 +14,7 @@ mod field_access { } #[derive(Debug)] - struct GenericThing { + struct GenericThing { a: A, } @@ -27,6 +27,11 @@ mod field_access { println!("{:?}", x.a); // $ fieldof=MyThing } + fn default_field_access(x: GenericThing) { + let a = x.a; // $ fieldof=GenericThing type=a:bool + println!("{:?}", a); + } + fn generic_field_access() { // Explicit type argument let x = GenericThing:: { a: S }; // $ type=x:A.S @@ -401,12 +406,12 @@ mod impl_overlap { impl OverlappingTrait for S1 { // ::common_method fn common_method(self) -> S1 { - panic!("not called"); + S1 } // ::common_method_2 fn common_method_2(self, s1: S1) -> S1 { - panic!("not called"); + S1 } } @@ -422,10 +427,78 @@ mod impl_overlap { } } + struct S2(T2); + + impl S2 { + // S2::common_method + fn common_method(self) -> S1 { + S1 + } + + // S2::common_method + fn common_method_2(self) -> S1 { + S1 + } + } + + impl OverlappingTrait for S2 { + // _as_OverlappingTrait>::common_method + fn common_method(self) -> S1 { + S1 + } + + // _as_OverlappingTrait>::common_method_2 + fn common_method_2(self, s1: S1) -> S1 { + S1 + } + } + + impl OverlappingTrait for S2 { + // _as_OverlappingTrait>::common_method + fn common_method(self) -> S1 { + S1 + } + + // _as_OverlappingTrait>::common_method_2 + fn common_method_2(self, s1: S1) -> S1 { + S1 + } + } + + #[derive(Debug)] + struct S3(T3); + + trait OverlappingTrait2 { + fn m(&self, x: &T) -> &Self; + } + + impl OverlappingTrait2 for S3 { + // _as_OverlappingTrait2>::m + fn m(&self, x: &T) -> &Self { + self + } + } + + impl S3 { + // S3::m + fn m(&self, x: T) -> &Self { + self + } + } + pub fn f() { let x = S1; println!("{:?}", x.common_method()); // $ method=S1::common_method println!("{:?}", x.common_method_2()); // $ method=S1::common_method_2 + + let y = S2(S1); + println!("{:?}", y.common_method()); // $ method=_as_OverlappingTrait>::common_method + + let z = S2(0); + println!("{:?}", z.common_method()); // $ method=S2::common_method + + let w = S3(S1); + println!("{:?}", w.m(x)); // $ method=S3::m } } @@ -472,7 +545,7 @@ mod type_parameter_bounds { println!("{:?}", s); // $ type=s:S1 } - trait Pair { + trait Pair { fn fst(self) -> P1; fn snd(self) -> P2; @@ -480,8 +553,8 @@ mod type_parameter_bounds { fn call_trait_per_bound_with_type_1>(x: T, y: T) { // The type in the type parameter bound determines the return type. - let s1 = x.fst(); // $ method=fst - let s2 = y.snd(); // $ method=snd + let s1 = x.fst(); // $ method=fst type=s1:S1 + let s2 = y.snd(); // $ method=snd type=s2:S2 println!("{:?}, {:?}", s1, s2); } @@ -491,6 +564,20 @@ mod type_parameter_bounds { let s2 = y.snd(); // $ method=snd println!("{:?}, {:?}", s1, s2); } + + fn call_trait_per_bound_with_type_3(x: T, y: T) { + // The type in the type parameter bound determines the return type. + let s1 = x.fst(); // $ method=fst type=s1:bool + let s2 = y.snd(); // $ method=snd type=s2:i64 + println!("{:?}, {:?}", s1, s2); + } + + fn call_trait_per_bound_with_type_4>(x: T, y: T) { + // The type in the type parameter bound determines the return type. + let s1 = x.fst(); // $ method=fst type=s1:u8 + let s2 = y.snd(); // $ method=snd type=s2:i64 + println!("{:?}, {:?}", s1, s2); + } } mod function_trait_bounds { @@ -697,7 +784,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); @@ -1060,6 +1147,11 @@ mod method_call_type_conversion { #[derive(Debug, Copy, Clone)] struct S2; + #[derive(Debug, Copy, Clone, Default)] + struct MyInt { + a: i64, + } + impl S { fn m1(self) -> T { self.0 // $ fieldof=S @@ -1074,6 +1166,24 @@ mod method_call_type_conversion { } } + trait ATrait { + fn method_on_borrow(&self) -> i64; + fn method_not_on_borrow(self) -> i64; + } + + // Trait implementation on a borrow. + impl ATrait for &MyInt { + // MyInt::method_on_borrow + fn method_on_borrow(&self) -> i64 { + (*(*self)).a // $ method=deref fieldof=MyInt + } + + // MyInt::method_not_on_borrow + fn method_not_on_borrow(self) -> i64 { + (*self).a // $ method=deref fieldof=MyInt + } + } + pub fn f() { let x1 = S(S2); println!("{:?}", x1.m1()); // $ method=m1 @@ -1099,14 +1209,31 @@ mod method_call_type_conversion { println!("{:?}", x5.0); // $ fieldof=S let x6 = &S(S2); + // explicit dereference - println!("{:?}", (*x6).m1()); // $ method=m1 + println!("{:?}", (*x6).m1()); // $ method=m1 method=deref let x7 = S(&S2); // Non-implicit dereference with nested borrow in order to test that the // implicit dereference handling doesn't affect nested borrows. let t = x7.m1(); // $ method=m1 type=t:& type=t:&T.S2 println!("{:?}", x7); + + let x9: String = "Hello".to_string(); // $ type=x9:String + + // Implicit `String` -> `str` conversion happens via the `Deref` trait: + // https://doc.rust-lang.org/std/string/struct.String.html#deref. + let u = x9.parse::(); // $ method=parse type=u:T.u32 + + let my_thing = &MyInt { a: 37 }; + // implicit borrow of a `&` + let a = my_thing.method_on_borrow(); // $ MISSING: method=MyInt::method_on_borrow + println!("{:?}", a); + + // no implicit borrow + let my_thing = &MyInt { a: 38 }; + let a = my_thing.method_not_on_borrow(); // $ MISSING: method=MyInt::method_not_on_borrow + println!("{:?}", a); } } @@ -1154,6 +1281,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 +1317,14 @@ mod borrowed_typed { x.f1(); // $ method=f1 x.f2(); // $ method=f2 S::f3(&x); + + let n = **&&true; // $ type=n:bool method=deref + + // 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 } } @@ -1281,6 +1427,11 @@ mod overloadable_operators { x: i64, y: i64, } + impl Default for Vec2 { + fn default() -> Self { + Vec2 { x: 0, y: 0 } + } + } // Implement all overloadable operators for Vec2 impl Add for Vec2 { type Output = Self; @@ -1627,9 +1778,341 @@ mod overloadable_operators { // Prefix operators let vec2_neg = -v1; // $ type=vec2_neg:Vec2 method=Vec2::neg let vec2_not = !v1; // $ type=vec2_not:Vec2 method=Vec2::not + + // Here the type of `default_vec2` must be inferred from the `+` call. + let default_vec2 = Default::default(); // $ type=default_vec2:Vec2 + let vec2_zero_plus = Vec2 { x: 0, y: 0 } + default_vec2; // $ method=Vec2::add + + // Here the type of `default_vec2` must be inferred from the `==` call + // and the type of the borrowed second argument is unknown at the call. + let default_vec2 = Default::default(); // $ type=default_vec2:Vec2 + let vec2_zero_plus = Vec2 { x: 0, y: 0 } == default_vec2; // $ method=Vec2::eq + } +} + +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 method=index + } + } + + fn analyze_slice(slice: &[S]) { + // NOTE: `slice` gets the spurious type `[]` because the desugaring of + // the index expression adds an implicit borrow. `&slice` has the type + // `&&[S]`, but the `index` methods takes a `&[S]`, so Rust adds an + // implicit dereference. We cannot currently handle a position that is + // both implicitly dereferenced and implicitly borrowed, so the extra + // type sneaks in. + let x = slice[0].foo(); // $ method=foo type=x:S method=index SPURIOUS: type=slice:[] + } + + pub fn f() { + let mut vec = MyVec::new(); // $ type=vec:T.S + vec.push(S); // $ method=push + vec[0].foo(); // $ method=MyVec::index method=foo + + let xs: [S; 1] = [S]; + let x = xs[0].foo(); // $ method=foo type=x:S method=index + + analyze_slice(&xs); } } +mod macros { + pub fn f() { + let x = format!("Hello, {}", "World!"); // $ MISSING: type=x:String -- needs https://github.com/github/codeql/pull/19658 + } +} + +mod method_determined_by_argument_type { + trait MyAdd { + fn my_add(&self, value: T) -> Self; + } + + impl MyAdd for i64 { + // MyAdd::my_add + fn my_add(&self, value: i64) -> Self { + value + } + } + + impl MyAdd<&i64> for i64 { + // MyAdd<&i64>::my_add + fn my_add(&self, value: &i64) -> Self { + *value // $ method=deref + } + } + + impl MyAdd for i64 { + // MyAdd::my_add + fn my_add(&self, value: bool) -> Self { + if value { 1 } else { 0 } + } + } + + pub fn f() { + let x: i64 = 73; + x.my_add(5i64); // $ method=MyAdd::my_add + x.my_add(&5i64); // $ method=MyAdd<&i64>::my_add + x.my_add(true); // $ method=MyAdd::my_add + } +} + +mod loops { + struct MyCallable {} + + impl MyCallable { + fn new() -> Self { + MyCallable {} + } + + fn call(&self) -> i64 { + 1 + } + } + + pub fn f() { + // for loops with arrays + + for i in [1, 2, 3] {} // $ type=i:i32 + for i in [1, 2, 3].map(|x| x + 1) {} // $ method=map MISSING: type=i:i32 + for i in [1, 2, 3].into_iter() {} // $ method=into_iter MISSING: type=i:i32 + + let vals1 = [1u8, 2, 3]; // $ type=vals1:[T;...].u8 + for u in vals1 {} // $ type=u:u8 + + let vals2 = [1u16; 3]; // $ type=vals2:[T;...].u16 + for u in vals2 {} // $ type=u:u16 + + let vals3: [u32; 3] = [1, 2, 3]; // $ type=vals3:[T;...].u32 + for u in vals3 {} // $ type=u:u32 + + let vals4: [u64; 3] = [1; 3]; // $ type=vals4:[T;...].u64 + for u in vals4 {} // $ type=u:u64 + + let mut strings1 = ["foo", "bar", "baz"]; // $ type=strings1:[T;...].str + for s in &strings1 {} // $ MISSING: type=s:&T.str + for s in &mut strings1 {} // $ MISSING: type=s:&T.str + for s in strings1 {} // $ type=s:str + + let strings2 = // $ type=strings2:[T;...].String + [ + String::from("foo"), + String::from("bar"), + String::from("baz"), + ]; + for s in strings2 {} // $ type=s:String + + let strings3 = // $ type=strings3:&T.[T;...].String + &[ + String::from("foo"), + String::from("bar"), + String::from("baz"), + ]; + for s in strings3 {} // $ MISSING: type=s:String + + let callables = [MyCallable::new(), MyCallable::new(), MyCallable::new()]; // $ MISSING: type=callables:[T;...].MyCallable; 3 + for c // $ type=c:MyCallable + in callables + { + let result = c.call(); // $ type=result:i64 method=call + } + + // for loops with ranges + + for i in 0..10 {} // $ MISSING: type=i:i32 + for u in [0u8..10] {} // $ MISSING: type=u:u8 + let range = 0..10; // $ MISSING: type=range:Range type=range:Idx.i32 + for i in range {} // $ MISSING: type=i:i32 + + let range1 = // $ type=range1:Range type=range1:Idx.u16 + std::ops::Range { + start: 0u16, + end: 10u16, + }; + for u in range1 {} // $ MISSING: type=u:u16 + + // for loops with containers + + let vals3 = vec![1, 2, 3]; // $ MISSING: type=vals3:Vec type=vals3:T.i32 + for i in vals3 {} // $ MISSING: type=i:i32 + + let vals4a: Vec = [1u16, 2, 3].to_vec(); // $ type=vals4a:Vec type=vals4a:T.u16 + for u in vals4a {} // $ type=u:u16 + + let vals4b = [1u16, 2, 3].to_vec(); // $ MISSING: type=vals4b:Vec type=vals4b:T.u16 + for u in vals4b {} // $ MISSING: type=u:u16 + + let vals5 = Vec::from([1u32, 2, 3]); // $ type=vals5:Vec MISSING: type=vals5:T.u32 + for u in vals5 {} // $ MISSING: type=u:u32 + + let vals6: Vec<&u64> = [1u64, 2, 3].iter().collect(); // $ type=vals6:Vec type=vals6:T.&T.u64 + for u in vals6 {} // $ type=u:&T.u64 + + let mut vals7 = Vec::new(); // $ type=vals7:Vec MISSING: type=vals7:T.u8 + vals7.push(1u8); // $ method=push + for u in vals7 {} // $ MISSING: type=u:u8 + + let matrix1 = vec![vec![1, 2], vec![3, 4]]; // $ MISSING: type=matrix1:Vec type=matrix1:T.Vec type=matrix1:T.T.i32 + for row in matrix1 { + // $ MISSING: type=row:Vec type=row:T.i32 + for cell in row { // $ MISSING: type=cell:i32 + } + } + + let mut map1 = std::collections::HashMap::new(); // $ MISSING: type=map1:Hashmap type=map1:K.i32 type=map1:V.Box type1=map1:V.T.&T.str + map1.insert(1, Box::new("one")); // $ method=insert + map1.insert(2, Box::new("two")); // $ method=insert + for key in map1.keys() {} // $ method=keys MISSING: type=key:i32 + for value in map1.values() {} // $ method=values MISSING: type=value:Box type=value:T.&T.str + for (key, value) in map1.iter() {} // $ method=iter MISSING: type=key:i32 type=value:Box type=value:T.&T.str + for (key, value) in &map1 {} // $ MISSING: type=key:i32 type=value:Box type=value:T.&T.str + + // while loops + + let mut a: i64 = 0; // $ type=a:i64 + #[rustfmt::skip] + let _ = while a < 10 // $ method=lt type=a:i64 + { + a += 1; // $ type=a:i64 method=add_assign + }; + } +} + +mod dereference; + fn main() { field_access::f(); method_impl::f(); @@ -1649,4 +2132,11 @@ fn main() { try_expressions::f(); builtins::f(); operators::f(); + async_::f(); + impl_trait::f(); + indexers::f(); + loops::f(); + macros::f(); + method_determined_by_argument_type::f(); + dereference::test(); } 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 ff33ad89cb82..4867f1465b47 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,161 @@ inferType +| dereference.rs:12:14:12:18 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:12:14:12:18 | SelfParam | &T | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:12:29:14:5 | { ... } | | file://:0:0:0:0 | & | +| dereference.rs:12:29:14:5 | { ... } | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:13:9:13:19 | &... | | file://:0:0:0:0 | & | +| dereference.rs:13:9:13:19 | &... | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:13:10:13:13 | self | | file://:0:0:0:0 | & | +| dereference.rs:13:10:13:13 | self | &T | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:13:10:13:19 | self.value | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:25:14:25:18 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:25:14:25:18 | SelfParam | &T | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:25:14:25:18 | SelfParam | &T.T | dereference.rs:21:6:21:6 | T | +| dereference.rs:25:27:27:5 | { ... } | | file://:0:0:0:0 | & | +| dereference.rs:25:27:27:5 | { ... } | &T | dereference.rs:21:6:21:6 | T | +| dereference.rs:26:9:26:19 | &... | | file://:0:0:0:0 | & | +| dereference.rs:26:9:26:19 | &... | &T | dereference.rs:21:6:21:6 | T | +| dereference.rs:26:10:26:13 | self | | file://:0:0:0:0 | & | +| dereference.rs:26:10:26:13 | self | &T | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:26:10:26:13 | self | &T.T | dereference.rs:21:6:21:6 | T | +| dereference.rs:26:10:26:19 | self.value | | dereference.rs:21:6:21:6 | T | +| dereference.rs:32:9:32:10 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:32:14:32:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:32:36:32:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:33:9:33:11 | _b1 | | file://:0:0:0:0 | & | +| dereference.rs:33:9:33:11 | _b1 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:33:15:33:16 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:33:15:33:24 | a1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:33:15:33:24 | a1.deref() | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:36:9:36:10 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:36:14:36:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:36:36:36:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:37:9:37:11 | _b2 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:37:15:37:17 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:37:16:37:17 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:40:9:40:10 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:40:14:40:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:40:36:40:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:41:9:41:11 | _b3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:41:15:41:19 | (...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:41:15:41:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:41:16:41:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:41:17:41:18 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:46:9:46:10 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:46:9:46:10 | c1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:46:14:46:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:46:14:46:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | +| dereference.rs:46:38:46:40 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:47:9:47:11 | _d1 | | file://:0:0:0:0 | & | +| dereference.rs:47:9:47:11 | _d1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:47:15:47:16 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:47:15:47:16 | c1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:47:15:47:24 | c1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:47:15:47:24 | c1.deref() | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:50:9:50:10 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:50:9:50:10 | c2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:50:14:50:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:50:14:50:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | +| dereference.rs:50:38:50:40 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:51:9:51:11 | _d2 | | {EXTERNAL LOCATION} | char | +| dereference.rs:51:15:51:17 | * ... | | {EXTERNAL LOCATION} | char | +| dereference.rs:51:16:51:17 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:51:16:51:17 | c2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:54:9:54:10 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:54:9:54:10 | c3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:54:14:54:44 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:54:14:54:44 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:54:38:54:42 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:55:9:55:11 | _d3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:55:15:55:19 | (...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:55:15:55:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:55:16:55:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:55:17:55:18 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:55:17:55:18 | c3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:60:9:60:10 | e1 | | file://:0:0:0:0 | & | +| dereference.rs:60:9:60:10 | e1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:60:9:60:10 | e1 | &T | file://:0:0:0:0 | & | +| dereference.rs:60:14:60:17 | &'a' | | file://:0:0:0:0 | & | +| dereference.rs:60:14:60:17 | &'a' | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:60:14:60:17 | &'a' | &T | file://:0:0:0:0 | & | +| dereference.rs:60:15:60:17 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:60:15:60:17 | 'a' | | file://:0:0:0:0 | & | +| dereference.rs:61:9:61:11 | _f1 | | file://:0:0:0:0 | & | +| dereference.rs:61:15:61:16 | e1 | | file://:0:0:0:0 | & | +| dereference.rs:61:15:61:16 | e1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:61:15:61:16 | e1 | &T | file://:0:0:0:0 | & | +| dereference.rs:61:15:61:24 | e1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:64:9:64:10 | e2 | | file://:0:0:0:0 | & | +| dereference.rs:64:9:64:10 | e2 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:64:14:64:17 | &'a' | | file://:0:0:0:0 | & | +| dereference.rs:64:14:64:17 | &'a' | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:64:15:64:17 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:65:9:65:11 | _f2 | | {EXTERNAL LOCATION} | char | +| dereference.rs:65:15:65:17 | * ... | | {EXTERNAL LOCATION} | char | +| dereference.rs:65:16:65:17 | e2 | | file://:0:0:0:0 | & | +| dereference.rs:65:16:65:17 | e2 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:68:9:68:10 | e3 | | file://:0:0:0:0 | & | +| dereference.rs:68:9:68:10 | e3 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:68:14:68:19 | &34i64 | | file://:0:0:0:0 | & | +| dereference.rs:68:14:68:19 | &34i64 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:68:15:68:19 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:69:9:69:11 | _f3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:69:15:69:19 | (...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:69:15:69:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:69:16:69:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:69:17:69:18 | e3 | | file://:0:0:0:0 | & | +| dereference.rs:69:17:69:18 | e3 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:74:9:74:10 | g1 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:74:9:74:10 | g1 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:74:9:74:10 | g1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:74:25:74:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:74:25:74:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:74:25:74:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | +| dereference.rs:74:34:74:36 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:75:9:75:11 | _h1 | | file://:0:0:0:0 | & | +| dereference.rs:75:9:75:11 | _h1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:75:15:75:16 | g1 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:75:15:75:16 | g1 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:75:15:75:16 | g1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:75:15:75:24 | g1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:75:15:75:24 | g1.deref() | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:78:9:78:10 | g2 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:78:9:78:10 | g2 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:78:9:78:10 | g2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:78:25:78:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:78:25:78:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:78:25:78:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | +| dereference.rs:78:34:78:36 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:79:9:79:11 | _h2 | | {EXTERNAL LOCATION} | char | +| dereference.rs:79:15:79:17 | * ... | | {EXTERNAL LOCATION} | char | +| dereference.rs:79:16:79:17 | g2 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:79:16:79:17 | g2 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:79:16:79:17 | g2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:82:9:82:10 | g3 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:82:9:82:10 | g3 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:82:9:82:10 | g3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:82:24:82:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:82:24:82:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:82:24:82:38 | ...::new(...) | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:82:33:82:37 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:83:9:83:11 | _h3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:83:15:83:19 | (...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:83:15:83:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:83:16:83:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:83:17:83:18 | g3 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:83:17:83:18 | g3 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:83:17:83:18 | g3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:88:9:88:9 | x | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:88:13:88:41 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:88:35:88:39 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:89:14:89:14 | x | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:92:9:92:9 | x | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:92:9:92:9 | x | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:92:13:92:43 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:92:13:92:43 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:92:37:92:41 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:93:14:93:14 | x | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:93:14:93:14 | x | T | {EXTERNAL LOCATION} | i64 | | 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] | | loop/main.rs:12:9:12:12 | self | | loop/main.rs:10:1:14:1 | Self [trait T2] | @@ -8,2374 +165,3119 @@ inferType | 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 | -| main.rs:32:13:32:13 | x | A | main.rs:2:5:3:13 | S | -| 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" | | {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 | -| main.rs:36:13:36:13 | y | | main.rs:16:5:19:5 | GenericThing | -| main.rs:36:13:36:13 | y | A | main.rs:2:5:3:13 | S | -| 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" | | {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 | -| main.rs:41:13:41:13 | x | | main.rs:21:5:23:5 | OptionS | -| 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" | | {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 | -| main.rs:47:13:47:13 | x | | main.rs:16:5:19:5 | GenericThing | -| main.rs:47:13:47:13 | x | A | main.rs:10:5:14:5 | MyOption | -| main.rs:47:13:47:13 | x | A.T | main.rs:2:5:3:13 | S | -| main.rs:47:17:49:9 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | -| main.rs:47:17:49:9 | GenericThing::<...> {...} | A | main.rs:10:5:14:5 | MyOption | -| 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" | | {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 | -| main.rs:50:26:50:28 | x.a | | main.rs:10:5:14:5 | MyOption | -| main.rs:50:26:50:28 | x.a | T | main.rs:2:5:3:13 | S | -| main.rs:52:13:52:17 | mut x | | main.rs:16:5:19:5 | GenericThing | -| main.rs:52:13:52:17 | mut x | A | main.rs:10:5:14:5 | MyOption | -| main.rs:52:13:52:17 | mut x | A.T | main.rs:2:5:3:13 | S | -| main.rs:52:21:54:9 | GenericThing {...} | | main.rs:16:5:19:5 | GenericThing | -| main.rs:52:21:54:9 | GenericThing {...} | A | main.rs:10:5:14:5 | MyOption | -| main.rs:52:21:54:9 | GenericThing {...} | A.T | main.rs:2:5:3:13 | S | +| main.rs:30:29:30:29 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:30:29:30:29 | x | A | {EXTERNAL LOCATION} | bool | +| main.rs:31:13:31:13 | a | | {EXTERNAL LOCATION} | bool | +| main.rs:31:17:31:17 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:31:17:31:17 | x | A | {EXTERNAL LOCATION} | bool | +| main.rs:31:17:31:19 | x.a | | {EXTERNAL LOCATION} | bool | +| main.rs:32:18:32:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:32:26:32:26 | a | | {EXTERNAL LOCATION} | bool | +| main.rs:37:13:37:13 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:37:13:37:13 | x | A | main.rs:2:5:3:13 | S | +| main.rs:37:17:37:42 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | +| main.rs:37:17:37:42 | GenericThing::<...> {...} | A | main.rs:2:5:3:13 | S | +| main.rs:37:40:37:40 | S | | main.rs:2:5:3:13 | S | +| main.rs:38:18:38:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:38:26:38:26 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:38:26:38:26 | x | A | main.rs:2:5:3:13 | S | +| main.rs:38:26:38:28 | x.a | | main.rs:2:5:3:13 | S | +| main.rs:41:13:41:13 | y | | main.rs:16:5:19:5 | GenericThing | +| main.rs:41:13:41:13 | y | A | main.rs:2:5:3:13 | S | +| main.rs:41:17:41:37 | GenericThing {...} | | main.rs:16:5:19:5 | GenericThing | +| main.rs:41:17:41:37 | GenericThing {...} | A | main.rs:2:5:3:13 | S | +| main.rs:41:35:41:35 | S | | main.rs:2:5:3:13 | S | +| main.rs:42:18:42:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:42:26:42:26 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:42:26:42:26 | x | A | main.rs:2:5:3:13 | S | +| main.rs:42:26:42:28 | x.a | | main.rs:2:5:3:13 | S | +| main.rs:46:13:46:13 | x | | main.rs:21:5:23:5 | OptionS | +| main.rs:46:17:48:9 | OptionS {...} | | main.rs:21:5:23:5 | OptionS | +| main.rs:47:16:47:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | +| main.rs:47:16:47:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | +| main.rs:49:18:49:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:49:26:49:26 | x | | main.rs:21:5:23:5 | OptionS | +| main.rs:49:26:49:28 | x.a | | main.rs:10:5:14:5 | MyOption | +| main.rs:49:26:49:28 | x.a | T | main.rs:2:5:3:13 | S | +| main.rs:52:13:52:13 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:52:13:52:13 | x | A | main.rs:10:5:14:5 | MyOption | +| main.rs:52:13:52:13 | x | A.T | main.rs:2:5:3:13 | S | +| main.rs:52:17:54:9 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | +| main.rs:52:17:54:9 | GenericThing::<...> {...} | A | main.rs:10:5:14:5 | MyOption | +| main.rs:52:17:54:9 | GenericThing::<...> {...} | A.T | main.rs:2:5:3:13 | S | | main.rs:53:16:53:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | | main.rs:53:16:53:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | -| main.rs:56:13:56:13 | a | | main.rs:10:5:14:5 | MyOption | -| main.rs:56:13:56:13 | a | T | main.rs:2:5:3:13 | S | -| main.rs:56:30:56:30 | x | | main.rs:16:5:19:5 | GenericThing | -| main.rs:56:30:56:30 | x | A | main.rs:10:5:14:5 | MyOption | -| 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" | | {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 | -| main.rs:70:33:72:9 | { ... } | | main.rs:67:5:67:21 | Foo | -| main.rs:71:13:71:16 | self | | main.rs:67:5:67:21 | Foo | -| main.rs:74:19:74:22 | SelfParam | | main.rs:67:5:67:21 | Foo | -| 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" | | {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 | -| main.rs:82:20:82:25 | Foo {...} | | main.rs:67:5:67:21 | Foo | -| main.rs:83:9:83:9 | x | | main.rs:67:5:67:21 | Foo | -| 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" | | {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 | { ... } | | {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 | | {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 | | {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() | | {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 | | {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 | -| main.rs:132:27:134:9 | { ... } | | main.rs:125:5:126:14 | S1 | -| main.rs:133:13:133:16 | self | | main.rs:120:5:123:5 | MyThing | -| main.rs:133:13:133:16 | self | A | main.rs:125:5:126:14 | S1 | -| main.rs:133:13:133:18 | self.a | | main.rs:125:5:126:14 | S1 | -| main.rs:139:15:139:18 | SelfParam | | main.rs:120:5:123:5 | MyThing | -| main.rs:139:15:139:18 | SelfParam | A | main.rs:127:5:128:14 | S2 | -| main.rs:139:29:141:9 | { ... } | | main.rs:120:5:123:5 | MyThing | -| main.rs:139:29:141:9 | { ... } | A | main.rs:127:5:128:14 | S2 | -| main.rs:140:13:140:30 | Self {...} | | main.rs:120:5:123:5 | MyThing | -| main.rs:140:13:140:30 | Self {...} | A | main.rs:127:5:128:14 | S2 | -| main.rs:140:23:140:26 | self | | main.rs:120:5:123:5 | MyThing | -| main.rs:140:23:140:26 | self | A | main.rs:127:5:128:14 | S2 | -| main.rs:140:23:140:28 | self.a | | main.rs:127:5:128:14 | S2 | -| main.rs:145:15:145:18 | SelfParam | | main.rs:120:5:123:5 | MyThing | -| main.rs:145:15:145:18 | SelfParam | A | main.rs:144:10:144:10 | T | -| main.rs:145:26:147:9 | { ... } | | main.rs:144:10:144:10 | T | -| main.rs:146:13:146:16 | self | | main.rs:120:5:123:5 | MyThing | -| main.rs:146:13:146:16 | self | A | main.rs:144:10:144:10 | T | -| main.rs:146:13:146:18 | self.a | | main.rs:144:10:144:10 | T | -| main.rs:151:13:151:13 | x | | main.rs:120:5:123:5 | MyThing | -| main.rs:151:13:151:13 | x | A | main.rs:125:5:126:14 | S1 | -| main.rs:151:17:151:33 | MyThing {...} | | main.rs:120:5:123:5 | MyThing | -| main.rs:151:17:151:33 | MyThing {...} | A | main.rs:125:5:126:14 | S1 | -| main.rs:151:30:151:31 | S1 | | main.rs:125:5:126:14 | S1 | -| main.rs:152:13:152:13 | y | | main.rs:120:5:123:5 | MyThing | -| main.rs:152:13:152:13 | y | A | main.rs:127:5:128:14 | S2 | -| 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" | | {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" | | {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" | | {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" | | {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 | -| main.rs:159:26:159:31 | y.m1() | A | main.rs:127:5:128:14 | S2 | -| main.rs:159:26:159:33 | ... .a | | main.rs:127:5:128:14 | S2 | -| main.rs:161:13:161:13 | x | | main.rs:120:5:123:5 | MyThing | -| main.rs:161:13:161:13 | x | A | main.rs:125:5:126:14 | S1 | -| main.rs:161:17:161:33 | MyThing {...} | | main.rs:120:5:123:5 | MyThing | -| main.rs:161:17:161:33 | MyThing {...} | A | main.rs:125:5:126:14 | S1 | -| main.rs:161:30:161:31 | S1 | | main.rs:125:5:126:14 | S1 | -| main.rs:162:13:162:13 | y | | main.rs:120:5:123:5 | MyThing | -| main.rs:162:13:162:13 | y | A | main.rs:127:5:128:14 | S2 | -| 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:55:18:55:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:55:26:55:26 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:55:26:55:26 | x | A | main.rs:10:5:14:5 | MyOption | +| main.rs:55:26:55:26 | x | A.T | main.rs:2:5:3:13 | S | +| main.rs:55:26:55:28 | x.a | | main.rs:10:5:14:5 | MyOption | +| main.rs:55:26:55:28 | x.a | T | main.rs:2:5:3:13 | S | +| main.rs:57:13:57:17 | mut x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:57:13:57:17 | mut x | A | main.rs:10:5:14:5 | MyOption | +| main.rs:57:13:57:17 | mut x | A.T | main.rs:2:5:3:13 | S | +| main.rs:57:21:59:9 | GenericThing {...} | | main.rs:16:5:19:5 | GenericThing | +| main.rs:57:21:59:9 | GenericThing {...} | A | main.rs:10:5:14:5 | MyOption | +| main.rs:57:21:59:9 | GenericThing {...} | A.T | main.rs:2:5:3:13 | S | +| main.rs:58:16:58:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | +| main.rs:58:16:58:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | +| main.rs:61:13:61:13 | a | | main.rs:10:5:14:5 | MyOption | +| main.rs:61:13:61:13 | a | T | main.rs:2:5:3:13 | S | +| main.rs:61:30:61:30 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:61:30:61:30 | x | A | main.rs:10:5:14:5 | MyOption | +| main.rs:61:30:61:30 | x | A.T | main.rs:2:5:3:13 | S | +| main.rs:61:30:61:32 | x.a | | main.rs:10:5:14:5 | MyOption | +| main.rs:61:30:61:32 | x.a | T | main.rs:2:5:3:13 | S | +| main.rs:62:18:62:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:62:26:62:26 | a | | main.rs:10:5:14:5 | MyOption | +| main.rs:62:26:62:26 | a | T | main.rs:2:5:3:13 | S | +| main.rs:75:19:75:22 | SelfParam | | main.rs:72:5:72:21 | Foo | +| main.rs:75:33:77:9 | { ... } | | main.rs:72:5:72:21 | Foo | +| main.rs:76:13:76:16 | self | | main.rs:72:5:72:21 | Foo | +| main.rs:79:19:79:22 | SelfParam | | main.rs:72:5:72:21 | Foo | +| main.rs:79:32:81:9 | { ... } | | main.rs:72:5:72:21 | Foo | +| main.rs:80:13:80:16 | self | | main.rs:72:5:72:21 | Foo | +| main.rs:84:23:89:5 | { ... } | | main.rs:72:5:72:21 | Foo | +| main.rs:85:18:85:33 | "main.rs::m1::f\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:86:13:86:13 | x | | main.rs:72:5:72:21 | Foo | +| main.rs:86:17:86:22 | Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:87:13:87:13 | y | | main.rs:72:5:72:21 | Foo | +| main.rs:87:20:87:25 | Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:88:9:88:9 | x | | main.rs:72:5:72:21 | Foo | +| main.rs:91:14:91:14 | x | | main.rs:72:5:72:21 | Foo | +| main.rs:91:22:91:22 | y | | main.rs:72:5:72:21 | Foo | +| main.rs:91:37:95:5 | { ... } | | main.rs:72:5:72:21 | Foo | +| main.rs:92:18:92:33 | "main.rs::m1::g\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:93:9:93:9 | x | | main.rs:72:5:72:21 | Foo | +| main.rs:93:9:93:14 | x.m1() | | main.rs:72:5:72:21 | Foo | +| main.rs:94:9:94:9 | y | | main.rs:72:5:72:21 | Foo | +| main.rs:94:9:94:14 | y.m2() | | main.rs:72:5:72:21 | Foo | +| main.rs:105:25:105:28 | SelfParam | | main.rs:104:5:106:5 | Self [trait MyTrait] | +| main.rs:110:25:110:28 | SelfParam | | main.rs:99:5:102:5 | MyThing | +| main.rs:110:39:112:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:111:13:111:16 | self | | main.rs:99:5:102:5 | MyThing | +| main.rs:111:13:111:22 | self.field | | {EXTERNAL LOCATION} | bool | +| main.rs:116:13:116:13 | x | | main.rs:99:5:102:5 | MyThing | +| main.rs:116:17:116:39 | MyThing {...} | | main.rs:99:5:102:5 | MyThing | +| main.rs:116:34:116:37 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:117:13:117:13 | a | | {EXTERNAL LOCATION} | bool | +| main.rs:117:17:117:17 | x | | main.rs:99:5:102:5 | MyThing | +| main.rs:117:17:117:32 | x.trait_method() | | {EXTERNAL LOCATION} | bool | +| main.rs:119:13:119:13 | y | | main.rs:99:5:102:5 | MyThing | +| main.rs:119:17:119:40 | MyThing {...} | | main.rs:99:5:102:5 | MyThing | +| main.rs:119:34:119:38 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:120:13:120:13 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:120:17:120:40 | ...::trait_method(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:120:39:120:39 | y | | main.rs:99:5:102:5 | MyThing | +| main.rs:137:15:137:18 | SelfParam | | main.rs:125:5:128:5 | MyThing | +| main.rs:137:15:137:18 | SelfParam | A | main.rs:130:5:131:14 | S1 | +| main.rs:137:27:139:9 | { ... } | | main.rs:130:5:131:14 | S1 | +| main.rs:138:13:138:16 | self | | main.rs:125:5:128:5 | MyThing | +| main.rs:138:13:138:16 | self | A | main.rs:130:5:131:14 | S1 | +| main.rs:138:13:138:18 | self.a | | main.rs:130:5:131:14 | S1 | +| main.rs:144:15:144:18 | SelfParam | | main.rs:125:5:128:5 | MyThing | +| main.rs:144:15:144:18 | SelfParam | A | main.rs:132:5:133:14 | S2 | +| main.rs:144:29:146:9 | { ... } | | main.rs:125:5:128:5 | MyThing | +| main.rs:144:29:146:9 | { ... } | A | main.rs:132:5:133:14 | S2 | +| main.rs:145:13:145:30 | Self {...} | | main.rs:125:5:128:5 | MyThing | +| main.rs:145:13:145:30 | Self {...} | A | main.rs:132:5:133:14 | S2 | +| main.rs:145:23:145:26 | self | | main.rs:125:5:128:5 | MyThing | +| main.rs:145:23:145:26 | self | A | main.rs:132:5:133:14 | S2 | +| main.rs:145:23:145:28 | self.a | | main.rs:132:5:133:14 | S2 | +| main.rs:150:15:150:18 | SelfParam | | main.rs:125:5:128:5 | MyThing | +| main.rs:150:15:150:18 | SelfParam | A | main.rs:149:10:149:10 | T | +| main.rs:150:26:152:9 | { ... } | | main.rs:149:10:149:10 | T | +| main.rs:151:13:151:16 | self | | main.rs:125:5:128:5 | MyThing | +| main.rs:151:13:151:16 | self | A | main.rs:149:10:149:10 | T | +| main.rs:151:13:151:18 | self.a | | main.rs:149:10:149:10 | T | +| main.rs:156:13:156:13 | x | | main.rs:125:5:128:5 | MyThing | +| main.rs:156:13:156:13 | x | A | main.rs:130:5:131:14 | S1 | +| main.rs:156:17:156:33 | MyThing {...} | | main.rs:125:5:128:5 | MyThing | +| main.rs:156:17:156:33 | MyThing {...} | A | main.rs:130:5:131:14 | S1 | +| main.rs:156:30:156:31 | S1 | | main.rs:130:5:131:14 | S1 | +| main.rs:157:13:157:13 | y | | main.rs:125:5:128:5 | MyThing | +| main.rs:157:13:157:13 | y | A | main.rs:132:5:133:14 | S2 | +| main.rs:157:17:157:33 | MyThing {...} | | main.rs:125:5:128:5 | MyThing | +| main.rs:157:17:157:33 | MyThing {...} | A | main.rs:132:5:133:14 | S2 | +| main.rs:157:30:157:31 | S2 | | main.rs:132:5:133:14 | S2 | +| main.rs:160:18:160:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:160:26:160:26 | x | | main.rs:125:5:128:5 | MyThing | +| main.rs:160:26:160:26 | x | A | main.rs:130:5:131:14 | S1 | +| main.rs:160:26:160:28 | x.a | | main.rs:130:5:131:14 | S1 | +| main.rs:161:18:161:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:161:26:161:26 | y | | main.rs:125:5:128:5 | MyThing | +| main.rs:161:26:161:26 | y | A | main.rs:132:5:133:14 | S2 | +| main.rs:161:26:161:28 | y.a | | main.rs:132:5:133:14 | S2 | +| main.rs:163:18:163:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:163:26:163:26 | x | | main.rs:125:5:128:5 | MyThing | +| main.rs:163:26:163:26 | x | A | main.rs:130:5:131:14 | S1 | +| main.rs:163:26:163:31 | x.m1() | | main.rs:130:5:131:14 | S1 | | 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" | | {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 | -| main.rs:189:15:189:18 | SelfParam | | main.rs:188:5:197:5 | Self [trait MyTrait] | -| main.rs:191:15:191:18 | SelfParam | | main.rs:188:5:197:5 | Self [trait MyTrait] | -| main.rs:194:9:196:9 | { ... } | | main.rs:188:5:197:5 | Self [trait MyTrait] | -| main.rs:195:13:195:16 | self | | main.rs:188:5:197:5 | Self [trait MyTrait] | -| main.rs:201:16:201:19 | SelfParam | | main.rs:199:5:204:5 | Self [trait MyProduct] | -| main.rs:203:16:203:19 | SelfParam | | main.rs:199:5:204:5 | Self [trait MyProduct] | -| main.rs:206:43:206:43 | x | | main.rs:206:26:206:40 | T2 | -| main.rs:206:56:208:5 | { ... } | | main.rs:206:22:206:23 | T1 | -| main.rs:207:9:207:9 | x | | main.rs:206:26:206:40 | T2 | -| main.rs:207:9:207:14 | x.m1() | | main.rs:206:22:206:23 | T1 | -| main.rs:212:15:212:18 | SelfParam | | main.rs:170:5:173:5 | MyThing | -| main.rs:212:15:212:18 | SelfParam | A | main.rs:181:5:182:14 | S1 | -| main.rs:212:27:214:9 | { ... } | | main.rs:181:5:182:14 | S1 | -| main.rs:213:13:213:16 | self | | main.rs:170:5:173:5 | MyThing | -| main.rs:213:13:213:16 | self | A | main.rs:181:5:182:14 | S1 | -| main.rs:213:13:213:18 | self.a | | main.rs:181:5:182:14 | S1 | -| main.rs:219:15:219:18 | SelfParam | | main.rs:170:5:173:5 | MyThing | -| main.rs:219:15:219:18 | SelfParam | A | main.rs:183:5:184:14 | S2 | -| main.rs:219:29:221:9 | { ... } | | main.rs:170:5:173:5 | MyThing | -| main.rs:219:29:221:9 | { ... } | A | main.rs:183:5:184:14 | S2 | -| main.rs:220:13:220:30 | Self {...} | | main.rs:170:5:173:5 | MyThing | -| main.rs:220:13:220:30 | Self {...} | A | main.rs:183:5:184:14 | S2 | -| main.rs:220:23:220:26 | self | | main.rs:170:5:173:5 | MyThing | -| main.rs:220:23:220:26 | self | A | main.rs:183:5:184:14 | S2 | -| main.rs:220:23:220:28 | self.a | | main.rs:183:5:184:14 | S2 | -| main.rs:231:15:231:18 | SelfParam | | main.rs:170:5:173:5 | MyThing | -| main.rs:231:15:231:18 | SelfParam | A | main.rs:185:5:186:14 | S3 | -| main.rs:231:27:233:9 | { ... } | | main.rs:226:10:226:11 | TD | -| main.rs:232:13:232:25 | ...::default(...) | | main.rs:226:10:226:11 | TD | -| main.rs:238:15:238:18 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:238:15:238:18 | SelfParam | P1 | main.rs:236:10:236:10 | I | -| main.rs:238:15:238:18 | SelfParam | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:238:26:240:9 | { ... } | | main.rs:236:10:236:10 | I | -| main.rs:239:13:239:16 | self | | main.rs:175:5:179:5 | MyPair | -| main.rs:239:13:239:16 | self | P1 | main.rs:236:10:236:10 | I | -| main.rs:239:13:239:16 | self | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:239:13:239:19 | self.p1 | | main.rs:236:10:236:10 | I | -| main.rs:245:15:245:18 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:245:15:245:18 | SelfParam | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:245:15:245:18 | SelfParam | P2 | main.rs:183:5:184:14 | S2 | -| main.rs:245:27:247:9 | { ... } | | main.rs:185:5:186:14 | S3 | -| main.rs:246:13:246:14 | S3 | | main.rs:185:5:186:14 | S3 | -| main.rs:252:15:252:18 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:252:15:252:18 | SelfParam | P1 | main.rs:170:5:173:5 | MyThing | -| main.rs:252:15:252:18 | SelfParam | P1.A | main.rs:250:10:250:11 | TT | -| main.rs:252:15:252:18 | SelfParam | P2 | main.rs:185:5:186:14 | S3 | -| main.rs:252:27:255:9 | { ... } | | main.rs:250:10:250:11 | TT | -| main.rs:253:17:253:21 | alpha | | main.rs:170:5:173:5 | MyThing | -| main.rs:253:17:253:21 | alpha | A | main.rs:250:10:250:11 | TT | -| main.rs:253:25:253:28 | self | | main.rs:175:5:179:5 | MyPair | -| main.rs:253:25:253:28 | self | P1 | main.rs:170:5:173:5 | MyThing | -| main.rs:253:25:253:28 | self | P1.A | main.rs:250:10:250:11 | TT | -| main.rs:253:25:253:28 | self | P2 | main.rs:185:5:186:14 | S3 | -| main.rs:253:25:253:31 | self.p1 | | main.rs:170:5:173:5 | MyThing | -| main.rs:253:25:253:31 | self.p1 | A | main.rs:250:10:250:11 | TT | -| main.rs:254:13:254:17 | alpha | | main.rs:170:5:173:5 | MyThing | -| main.rs:254:13:254:17 | alpha | A | main.rs:250:10:250:11 | TT | -| main.rs:254:13:254:19 | alpha.a | | main.rs:250:10:250:11 | TT | -| main.rs:261:16:261:19 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:261:16:261:19 | SelfParam | P1 | main.rs:259:10:259:10 | A | -| main.rs:261:16:261:19 | SelfParam | P2 | main.rs:259:10:259:10 | A | -| main.rs:261:27:263:9 | { ... } | | main.rs:259:10:259:10 | A | -| main.rs:262:13:262:16 | self | | main.rs:175:5:179:5 | MyPair | -| main.rs:262:13:262:16 | self | P1 | main.rs:259:10:259:10 | A | -| main.rs:262:13:262:16 | self | P2 | main.rs:259:10:259:10 | A | -| main.rs:262:13:262:19 | self.p1 | | main.rs:259:10:259:10 | A | -| main.rs:266:16:266:19 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:266:16:266:19 | SelfParam | P1 | main.rs:259:10:259:10 | A | -| main.rs:266:16:266:19 | SelfParam | P2 | main.rs:259:10:259:10 | A | -| main.rs:266:27:268:9 | { ... } | | main.rs:259:10:259:10 | A | -| main.rs:267:13:267:16 | self | | main.rs:175:5:179:5 | MyPair | -| main.rs:267:13:267:16 | self | P1 | main.rs:259:10:259:10 | A | -| main.rs:267:13:267:16 | self | P2 | main.rs:259:10:259:10 | A | -| main.rs:267:13:267:19 | self.p2 | | main.rs:259:10:259:10 | A | -| main.rs:274:16:274:19 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:274:16:274:19 | SelfParam | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:274:16:274:19 | SelfParam | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:274:28:276:9 | { ... } | | main.rs:181:5:182:14 | S1 | -| main.rs:275:13:275:16 | self | | main.rs:175:5:179:5 | MyPair | -| main.rs:275:13:275:16 | self | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:275:13:275:16 | self | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:275:13:275:19 | self.p2 | | main.rs:181:5:182:14 | S1 | -| main.rs:279:16:279:19 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:279:16:279:19 | SelfParam | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:279:16:279:19 | SelfParam | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:279:28:281:9 | { ... } | | main.rs:183:5:184:14 | S2 | -| main.rs:280:13:280:16 | self | | main.rs:175:5:179:5 | MyPair | -| main.rs:280:13:280:16 | self | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:280:13:280:16 | self | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:280:13:280:19 | self.p1 | | main.rs:183:5:184:14 | S2 | -| main.rs:284:46:284:46 | p | | main.rs:284:24:284:43 | P | -| main.rs:284:58:286:5 | { ... } | | main.rs:284:16:284:17 | V1 | -| main.rs:285:9:285:9 | p | | main.rs:284:24:284:43 | P | -| main.rs:285:9:285:15 | p.fst() | | main.rs:284:16:284:17 | V1 | -| main.rs:288:46:288:46 | p | | main.rs:288:24:288:43 | P | -| main.rs:288:58:290:5 | { ... } | | main.rs:288:20:288:21 | V2 | -| main.rs:289:9:289:9 | p | | main.rs:288:24:288:43 | P | -| main.rs:289:9:289:15 | p.snd() | | main.rs:288:20:288:21 | V2 | -| main.rs:292:54:292:54 | p | | main.rs:175:5:179:5 | MyPair | -| main.rs:292:54:292:54 | p | P1 | main.rs:292:20:292:21 | V0 | -| main.rs:292:54:292:54 | p | P2 | main.rs:292:32:292:51 | P | -| main.rs:292:78:294:5 | { ... } | | main.rs:292:24:292:25 | V1 | -| main.rs:293:9:293:9 | p | | main.rs:175:5:179:5 | MyPair | -| main.rs:293:9:293:9 | p | P1 | main.rs:292:20:292:21 | V0 | -| main.rs:293:9:293:9 | p | P2 | main.rs:292:32:292:51 | P | -| main.rs:293:9:293:12 | p.p2 | | main.rs:292:32:292:51 | P | -| main.rs:293:9:293:18 | ... .fst() | | main.rs:292:24:292:25 | V1 | -| main.rs:298:23:298:26 | SelfParam | | main.rs:296:5:299:5 | Self [trait ConvertTo] | -| main.rs:303:23:303:26 | SelfParam | | main.rs:301:10:301:23 | T | -| main.rs:303:35:305:9 | { ... } | | main.rs:181:5:182:14 | S1 | -| main.rs:304:13:304:16 | self | | main.rs:301:10:301:23 | T | -| main.rs:304:13:304:21 | self.m1() | | main.rs:181:5:182:14 | S1 | -| main.rs:308:41:308:45 | thing | | main.rs:308:23:308:38 | T | -| main.rs:308:57:310:5 | { ... } | | main.rs:308:19:308:20 | TS | -| main.rs:309:9:309:13 | thing | | main.rs:308:23:308:38 | T | -| main.rs:309:9:309:26 | thing.convert_to() | | main.rs:308:19:308:20 | TS | -| main.rs:312:56:312:60 | thing | | main.rs:312:39:312:53 | TP | -| main.rs:312:73:315:5 | { ... } | | main.rs:181:5:182:14 | S1 | -| main.rs:314:9:314:13 | thing | | main.rs:312:39:312:53 | TP | -| main.rs:314:9:314:26 | thing.convert_to() | | main.rs:181:5:182:14 | S1 | -| main.rs:318:13:318:20 | thing_s1 | | main.rs:170:5:173:5 | MyThing | -| main.rs:318:13:318:20 | thing_s1 | A | main.rs:181:5:182:14 | S1 | -| main.rs:318:24:318:40 | MyThing {...} | | main.rs:170:5:173:5 | MyThing | -| main.rs:318:24:318:40 | MyThing {...} | A | main.rs:181:5:182:14 | S1 | -| main.rs:318:37:318:38 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:319:13:319:20 | thing_s2 | | main.rs:170:5:173:5 | MyThing | -| main.rs:319:13:319:20 | thing_s2 | A | main.rs:183:5:184:14 | S2 | -| main.rs:319:24:319:40 | MyThing {...} | | main.rs:170:5:173:5 | MyThing | -| main.rs:319:24:319:40 | MyThing {...} | A | main.rs:183:5:184:14 | S2 | -| main.rs:319:37:319:38 | S2 | | main.rs:183:5:184:14 | S2 | -| main.rs:320:13:320:20 | thing_s3 | | main.rs:170:5:173:5 | MyThing | -| main.rs:320:13:320:20 | thing_s3 | A | main.rs:185:5:186:14 | S3 | -| 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" | | {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" | | {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 | -| main.rs:325:26:325:38 | thing_s2.m1() | A | main.rs:183:5:184:14 | S2 | -| main.rs:325:26:325:40 | ... .a | | main.rs:183:5:184:14 | S2 | -| main.rs:326:13:326:14 | s3 | | main.rs:185:5:186:14 | S3 | -| 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" | | {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 | -| main.rs:329:13:329:14 | p1 | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:329:18:329:42 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:329:18:329:42 | MyPair {...} | P1 | main.rs:181:5:182:14 | S1 | -| 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:164:26:164:26 | y | | main.rs:125:5:128:5 | MyThing | +| main.rs:164:26:164:26 | y | A | main.rs:132:5:133:14 | S2 | +| main.rs:164:26:164:31 | y.m1() | | main.rs:125:5:128:5 | MyThing | +| main.rs:164:26:164:31 | y.m1() | A | main.rs:132:5:133:14 | S2 | +| main.rs:164:26:164:33 | ... .a | | main.rs:132:5:133:14 | S2 | +| main.rs:166:13:166:13 | x | | main.rs:125:5:128:5 | MyThing | +| main.rs:166:13:166:13 | x | A | main.rs:130:5:131:14 | S1 | +| main.rs:166:17:166:33 | MyThing {...} | | main.rs:125:5:128:5 | MyThing | +| main.rs:166:17:166:33 | MyThing {...} | A | main.rs:130:5:131:14 | S1 | +| main.rs:166:30:166:31 | S1 | | main.rs:130:5:131:14 | S1 | +| main.rs:167:13:167:13 | y | | main.rs:125:5:128:5 | MyThing | +| main.rs:167:13:167:13 | y | A | main.rs:132:5:133:14 | S2 | +| main.rs:167:17:167:33 | MyThing {...} | | main.rs:125:5:128:5 | MyThing | +| main.rs:167:17:167:33 | MyThing {...} | A | main.rs:132:5:133:14 | S2 | +| main.rs:167:30:167:31 | S2 | | main.rs:132:5:133:14 | S2 | +| main.rs:169:18:169:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:169:26:169:26 | x | | main.rs:125:5:128:5 | MyThing | +| main.rs:169:26:169:26 | x | A | main.rs:130:5:131:14 | S1 | +| main.rs:169:26:169:31 | x.m2() | | main.rs:130:5:131:14 | S1 | +| main.rs:170:18:170:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:170:26:170:26 | y | | main.rs:125:5:128:5 | MyThing | +| main.rs:170:26:170:26 | y | A | main.rs:132:5:133:14 | S2 | +| main.rs:170:26:170:31 | y.m2() | | main.rs:132:5:133:14 | S2 | +| main.rs:194:15:194:18 | SelfParam | | main.rs:193:5:202:5 | Self [trait MyTrait] | +| main.rs:196:15:196:18 | SelfParam | | main.rs:193:5:202:5 | Self [trait MyTrait] | +| main.rs:199:9:201:9 | { ... } | | main.rs:193:5:202:5 | Self [trait MyTrait] | +| main.rs:200:13:200:16 | self | | main.rs:193:5:202:5 | Self [trait MyTrait] | +| main.rs:206:16:206:19 | SelfParam | | main.rs:204:5:209:5 | Self [trait MyProduct] | +| main.rs:208:16:208:19 | SelfParam | | main.rs:204:5:209:5 | Self [trait MyProduct] | +| main.rs:211:43:211:43 | x | | main.rs:211:26:211:40 | T2 | +| main.rs:211:56:213:5 | { ... } | | main.rs:211:22:211:23 | T1 | +| main.rs:212:9:212:9 | x | | main.rs:211:26:211:40 | T2 | +| main.rs:212:9:212:14 | x.m1() | | main.rs:211:22:211:23 | T1 | +| main.rs:217:15:217:18 | SelfParam | | main.rs:175:5:178:5 | MyThing | +| main.rs:217:15:217:18 | SelfParam | A | main.rs:186:5:187:14 | S1 | +| main.rs:217:27:219:9 | { ... } | | main.rs:186:5:187:14 | S1 | +| main.rs:218:13:218:16 | self | | main.rs:175:5:178:5 | MyThing | +| main.rs:218:13:218:16 | self | A | main.rs:186:5:187:14 | S1 | +| main.rs:218:13:218:18 | self.a | | main.rs:186:5:187:14 | S1 | +| main.rs:224:15:224:18 | SelfParam | | main.rs:175:5:178:5 | MyThing | +| main.rs:224:15:224:18 | SelfParam | A | main.rs:188:5:189:14 | S2 | +| main.rs:224:29:226:9 | { ... } | | main.rs:175:5:178:5 | MyThing | +| main.rs:224:29:226:9 | { ... } | A | main.rs:188:5:189:14 | S2 | +| main.rs:225:13:225:30 | Self {...} | | main.rs:175:5:178:5 | MyThing | +| main.rs:225:13:225:30 | Self {...} | A | main.rs:188:5:189:14 | S2 | +| main.rs:225:23:225:26 | self | | main.rs:175:5:178:5 | MyThing | +| main.rs:225:23:225:26 | self | A | main.rs:188:5:189:14 | S2 | +| main.rs:225:23:225:28 | self.a | | main.rs:188:5:189:14 | S2 | +| main.rs:236:15:236:18 | SelfParam | | main.rs:175:5:178:5 | MyThing | +| main.rs:236:15:236:18 | SelfParam | A | main.rs:190:5:191:14 | S3 | +| main.rs:236:27:238:9 | { ... } | | main.rs:231:10:231:11 | TD | +| main.rs:237:13:237:25 | ...::default(...) | | main.rs:231:10:231:11 | TD | +| main.rs:243:15:243:18 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:243:15:243:18 | SelfParam | P1 | main.rs:241:10:241:10 | I | +| main.rs:243:15:243:18 | SelfParam | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:243:26:245:9 | { ... } | | main.rs:241:10:241:10 | I | +| main.rs:244:13:244:16 | self | | main.rs:180:5:184:5 | MyPair | +| main.rs:244:13:244:16 | self | P1 | main.rs:241:10:241:10 | I | +| main.rs:244:13:244:16 | self | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:244:13:244:19 | self.p1 | | main.rs:241:10:241:10 | I | +| main.rs:250:15:250:18 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:250:15:250:18 | SelfParam | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:250:15:250:18 | SelfParam | P2 | main.rs:188:5:189:14 | S2 | +| main.rs:250:27:252:9 | { ... } | | main.rs:190:5:191:14 | S3 | +| main.rs:251:13:251:14 | S3 | | main.rs:190:5:191:14 | S3 | +| main.rs:257:15:257:18 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:257:15:257:18 | SelfParam | P1 | main.rs:175:5:178:5 | MyThing | +| main.rs:257:15:257:18 | SelfParam | P1.A | main.rs:255:10:255:11 | TT | +| main.rs:257:15:257:18 | SelfParam | P2 | main.rs:190:5:191:14 | S3 | +| main.rs:257:27:260:9 | { ... } | | main.rs:255:10:255:11 | TT | +| main.rs:258:17:258:21 | alpha | | main.rs:175:5:178:5 | MyThing | +| main.rs:258:17:258:21 | alpha | A | main.rs:255:10:255:11 | TT | +| main.rs:258:25:258:28 | self | | main.rs:180:5:184:5 | MyPair | +| main.rs:258:25:258:28 | self | P1 | main.rs:175:5:178:5 | MyThing | +| main.rs:258:25:258:28 | self | P1.A | main.rs:255:10:255:11 | TT | +| main.rs:258:25:258:28 | self | P2 | main.rs:190:5:191:14 | S3 | +| main.rs:258:25:258:31 | self.p1 | | main.rs:175:5:178:5 | MyThing | +| main.rs:258:25:258:31 | self.p1 | A | main.rs:255:10:255:11 | TT | +| main.rs:259:13:259:17 | alpha | | main.rs:175:5:178:5 | MyThing | +| main.rs:259:13:259:17 | alpha | A | main.rs:255:10:255:11 | TT | +| main.rs:259:13:259:19 | alpha.a | | main.rs:255:10:255:11 | TT | +| main.rs:266:16:266:19 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:266:16:266:19 | SelfParam | P1 | main.rs:264:10:264:10 | A | +| main.rs:266:16:266:19 | SelfParam | P2 | main.rs:264:10:264:10 | A | +| main.rs:266:27:268:9 | { ... } | | main.rs:264:10:264:10 | A | +| main.rs:267:13:267:16 | self | | main.rs:180:5:184:5 | MyPair | +| main.rs:267:13:267:16 | self | P1 | main.rs:264:10:264:10 | A | +| main.rs:267:13:267:16 | self | P2 | main.rs:264:10:264:10 | A | +| main.rs:267:13:267:19 | self.p1 | | main.rs:264:10:264:10 | A | +| main.rs:271:16:271:19 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:271:16:271:19 | SelfParam | P1 | main.rs:264:10:264:10 | A | +| main.rs:271:16:271:19 | SelfParam | P2 | main.rs:264:10:264:10 | A | +| main.rs:271:27:273:9 | { ... } | | main.rs:264:10:264:10 | A | +| main.rs:272:13:272:16 | self | | main.rs:180:5:184:5 | MyPair | +| main.rs:272:13:272:16 | self | P1 | main.rs:264:10:264:10 | A | +| main.rs:272:13:272:16 | self | P2 | main.rs:264:10:264:10 | A | +| main.rs:272:13:272:19 | self.p2 | | main.rs:264:10:264:10 | A | +| main.rs:279:16:279:19 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:279:16:279:19 | SelfParam | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:279:16:279:19 | SelfParam | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:279:28:281:9 | { ... } | | main.rs:186:5:187:14 | S1 | +| main.rs:280:13:280:16 | self | | main.rs:180:5:184:5 | MyPair | +| main.rs:280:13:280:16 | self | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:280:13:280:16 | self | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:280:13:280:19 | self.p2 | | main.rs:186:5:187:14 | S1 | +| main.rs:284:16:284:19 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:284:16:284:19 | SelfParam | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:284:16:284:19 | SelfParam | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:284:28:286:9 | { ... } | | main.rs:188:5:189:14 | S2 | +| main.rs:285:13:285:16 | self | | main.rs:180:5:184:5 | MyPair | +| main.rs:285:13:285:16 | self | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:285:13:285:16 | self | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:285:13:285:19 | self.p1 | | main.rs:188:5:189:14 | S2 | +| main.rs:289:46:289:46 | p | | main.rs:289:24:289:43 | P | +| main.rs:289:58:291:5 | { ... } | | main.rs:289:16:289:17 | V1 | +| main.rs:290:9:290:9 | p | | main.rs:289:24:289:43 | P | +| main.rs:290:9:290:15 | p.fst() | | main.rs:289:16:289:17 | V1 | +| main.rs:293:46:293:46 | p | | main.rs:293:24:293:43 | P | +| main.rs:293:58:295:5 | { ... } | | main.rs:293:20:293:21 | V2 | +| main.rs:294:9:294:9 | p | | main.rs:293:24:293:43 | P | +| main.rs:294:9:294:15 | p.snd() | | main.rs:293:20:293:21 | V2 | +| main.rs:297:54:297:54 | p | | main.rs:180:5:184:5 | MyPair | +| main.rs:297:54:297:54 | p | P1 | main.rs:297:20:297:21 | V0 | +| main.rs:297:54:297:54 | p | P2 | main.rs:297:32:297:51 | P | +| main.rs:297:78:299:5 | { ... } | | main.rs:297:24:297:25 | V1 | +| main.rs:298:9:298:9 | p | | main.rs:180:5:184:5 | MyPair | +| main.rs:298:9:298:9 | p | P1 | main.rs:297:20:297:21 | V0 | +| main.rs:298:9:298:9 | p | P2 | main.rs:297:32:297:51 | P | +| main.rs:298:9:298:12 | p.p2 | | main.rs:297:32:297:51 | P | +| main.rs:298:9:298:18 | ... .fst() | | main.rs:297:24:297:25 | V1 | +| main.rs:303:23:303:26 | SelfParam | | main.rs:301:5:304:5 | Self [trait ConvertTo] | +| main.rs:308:23:308:26 | SelfParam | | main.rs:306:10:306:23 | T | +| main.rs:308:35:310:9 | { ... } | | main.rs:186:5:187:14 | S1 | +| main.rs:309:13:309:16 | self | | main.rs:306:10:306:23 | T | +| main.rs:309:13:309:21 | self.m1() | | main.rs:186:5:187:14 | S1 | +| main.rs:313:41:313:45 | thing | | main.rs:313:23:313:38 | T | +| main.rs:313:57:315:5 | { ... } | | main.rs:313:19:313:20 | TS | +| main.rs:314:9:314:13 | thing | | main.rs:313:23:313:38 | T | +| main.rs:314:9:314:26 | thing.convert_to() | | main.rs:313:19:313:20 | TS | +| main.rs:317:56:317:60 | thing | | main.rs:317:39:317:53 | TP | +| main.rs:317:73:320:5 | { ... } | | main.rs:186:5:187:14 | S1 | +| main.rs:319:9:319:13 | thing | | main.rs:317:39:317:53 | TP | +| main.rs:319:9:319:26 | thing.convert_to() | | main.rs:186:5:187:14 | S1 | +| main.rs:323:13:323:20 | thing_s1 | | main.rs:175:5:178:5 | MyThing | +| main.rs:323:13:323:20 | thing_s1 | A | main.rs:186:5:187:14 | S1 | +| main.rs:323:24:323:40 | MyThing {...} | | main.rs:175:5:178:5 | MyThing | +| main.rs:323:24:323:40 | MyThing {...} | A | main.rs:186:5:187:14 | S1 | +| main.rs:323:37:323:38 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:324:13:324:20 | thing_s2 | | main.rs:175:5:178:5 | MyThing | +| main.rs:324:13:324:20 | thing_s2 | A | main.rs:188:5:189:14 | S2 | +| main.rs:324:24:324:40 | MyThing {...} | | main.rs:175:5:178:5 | MyThing | +| main.rs:324:24:324:40 | MyThing {...} | A | main.rs:188:5:189:14 | S2 | +| main.rs:324:37:324:38 | S2 | | main.rs:188:5:189:14 | S2 | +| main.rs:325:13:325:20 | thing_s3 | | main.rs:175:5:178:5 | MyThing | +| main.rs:325:13:325:20 | thing_s3 | A | main.rs:190:5:191:14 | S3 | +| main.rs:325:24:325:40 | MyThing {...} | | main.rs:175:5:178:5 | MyThing | +| main.rs:325:24:325:40 | MyThing {...} | A | main.rs:190:5:191:14 | S3 | +| main.rs:325:37:325:38 | S3 | | main.rs:190:5:191:14 | S3 | +| main.rs:329:18:329:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:329:26:329:33 | thing_s1 | | main.rs:175:5:178:5 | MyThing | +| main.rs:329:26:329:33 | thing_s1 | A | main.rs:186:5:187:14 | S1 | +| main.rs:329:26:329:38 | thing_s1.m1() | | main.rs:186:5:187:14 | S1 | | 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 | -| main.rs:330:26:330:32 | p1.m1() | | main.rs:181:5:182:14 | S1 | -| main.rs:332:13:332:14 | p2 | | main.rs:175:5:179:5 | MyPair | -| main.rs:332:13:332:14 | p2 | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:332:13:332:14 | p2 | P2 | main.rs:183:5:184:14 | S2 | -| main.rs:332:18:332:42 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:332:18:332:42 | MyPair {...} | P1 | main.rs:181:5:182:14 | S1 | -| 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" | | {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 | -| main.rs:333:26:333:32 | p2.m1() | | main.rs:185:5:186:14 | S3 | -| main.rs:335:13:335:14 | p3 | | main.rs:175:5:179:5 | MyPair | -| main.rs:335:13:335:14 | p3 | P1 | main.rs:170:5:173:5 | MyThing | -| main.rs:335:13:335:14 | p3 | P1.A | main.rs:181:5:182:14 | S1 | -| main.rs:335:13:335:14 | p3 | P2 | main.rs:185:5:186:14 | S3 | -| main.rs:335:18:338:9 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:335:18:338:9 | MyPair {...} | P1 | main.rs:170:5:173:5 | MyThing | -| main.rs:335:18:338:9 | MyPair {...} | P1.A | main.rs:181:5:182:14 | S1 | -| main.rs:335:18:338:9 | MyPair {...} | P2 | main.rs:185:5:186:14 | S3 | -| main.rs:336:17:336:33 | MyThing {...} | | main.rs:170:5:173:5 | MyThing | -| 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" | | {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 | -| main.rs:339:26:339:27 | p3 | P2 | main.rs:185:5:186:14 | S3 | -| main.rs:339:26:339:32 | p3.m1() | | main.rs:181:5:182:14 | S1 | -| main.rs:342:13:342:13 | a | | main.rs:175:5:179:5 | MyPair | -| main.rs:342:13:342:13 | a | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:342:13:342:13 | a | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:342:17:342:41 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:342:17:342:41 | MyPair {...} | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:342:17:342:41 | MyPair {...} | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:342:30:342:31 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:342:38:342:39 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:343:13:343:13 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:343:17:343:17 | a | | main.rs:175:5:179:5 | MyPair | -| 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:330:26:330:33 | thing_s2 | | main.rs:175:5:178:5 | MyThing | +| main.rs:330:26:330:33 | thing_s2 | A | main.rs:188:5:189:14 | S2 | +| main.rs:330:26:330:38 | thing_s2.m1() | | main.rs:175:5:178:5 | MyThing | +| main.rs:330:26:330:38 | thing_s2.m1() | A | main.rs:188:5:189:14 | S2 | +| main.rs:330:26:330:40 | ... .a | | main.rs:188:5:189:14 | S2 | +| main.rs:331:13:331:14 | s3 | | main.rs:190:5:191:14 | S3 | +| main.rs:331:22:331:29 | thing_s3 | | main.rs:175:5:178:5 | MyThing | +| main.rs:331:22:331:29 | thing_s3 | A | main.rs:190:5:191:14 | S3 | +| main.rs:331:22:331:34 | thing_s3.m1() | | main.rs:190:5:191:14 | S3 | +| main.rs:332:18:332:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:332:26:332:27 | s3 | | main.rs:190:5:191:14 | S3 | +| main.rs:334:13:334:14 | p1 | | main.rs:180:5:184:5 | MyPair | +| main.rs:334:13:334:14 | p1 | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:334:13:334:14 | p1 | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:334:18:334:42 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:334:18:334:42 | MyPair {...} | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:334:18:334:42 | MyPair {...} | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:334:31:334:32 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:334:39:334:40 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:335:18:335:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:335:26:335:27 | p1 | | main.rs:180:5:184:5 | MyPair | +| main.rs:335:26:335:27 | p1 | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:335:26:335:27 | p1 | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:335:26:335:32 | p1.m1() | | main.rs:186:5:187:14 | S1 | +| main.rs:337:13:337:14 | p2 | | main.rs:180:5:184:5 | MyPair | +| main.rs:337:13:337:14 | p2 | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:337:13:337:14 | p2 | P2 | main.rs:188:5:189:14 | S2 | +| main.rs:337:18:337:42 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:337:18:337:42 | MyPair {...} | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:337:18:337:42 | MyPair {...} | P2 | main.rs:188:5:189:14 | S2 | +| main.rs:337:31:337:32 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:337:39:337:40 | S2 | | main.rs:188:5:189:14 | S2 | +| main.rs:338:18:338:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:338:26:338:27 | p2 | | main.rs:180:5:184:5 | MyPair | +| main.rs:338:26:338:27 | p2 | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:338:26:338:27 | p2 | P2 | main.rs:188:5:189:14 | S2 | +| main.rs:338:26:338:32 | p2.m1() | | main.rs:190:5:191:14 | S3 | +| main.rs:340:13:340:14 | p3 | | main.rs:180:5:184:5 | MyPair | +| main.rs:340:13:340:14 | p3 | P1 | main.rs:175:5:178:5 | MyThing | +| main.rs:340:13:340:14 | p3 | P1.A | main.rs:186:5:187:14 | S1 | +| main.rs:340:13:340:14 | p3 | P2 | main.rs:190:5:191:14 | S3 | +| main.rs:340:18:343:9 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:340:18:343:9 | MyPair {...} | P1 | main.rs:175:5:178:5 | MyThing | +| main.rs:340:18:343:9 | MyPair {...} | P1.A | main.rs:186:5:187:14 | S1 | +| main.rs:340:18:343:9 | MyPair {...} | P2 | main.rs:190:5:191:14 | S3 | +| main.rs:341:17:341:33 | MyThing {...} | | main.rs:175:5:178:5 | MyThing | +| main.rs:341:17:341:33 | MyThing {...} | A | main.rs:186:5:187:14 | S1 | +| main.rs:341:30:341:31 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:342:17:342:18 | S3 | | main.rs:190:5:191:14 | S3 | | 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" | | {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 | -| main.rs:352:13:352:13 | b | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:352:17:352:41 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:352:17:352:41 | MyPair {...} | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:352:17:352:41 | MyPair {...} | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:352:30:352:31 | S2 | | main.rs:183:5:184:14 | S2 | -| main.rs:352:38:352:39 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:353:13:353:13 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:353:17:353:17 | b | | main.rs:175:5:179:5 | MyPair | -| 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" | | {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" | | {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:344:26:344:27 | p3 | | main.rs:180:5:184:5 | MyPair | +| main.rs:344:26:344:27 | p3 | P1 | main.rs:175:5:178:5 | MyThing | +| main.rs:344:26:344:27 | p3 | P1.A | main.rs:186:5:187:14 | S1 | +| main.rs:344:26:344:27 | p3 | P2 | main.rs:190:5:191:14 | S3 | +| main.rs:344:26:344:32 | p3.m1() | | main.rs:186:5:187:14 | S1 | +| main.rs:347:13:347:13 | a | | main.rs:180:5:184:5 | MyPair | +| main.rs:347:13:347:13 | a | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:347:13:347:13 | a | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:347:17:347:41 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:347:17:347:41 | MyPair {...} | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:347:17:347:41 | MyPair {...} | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:347:30:347:31 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:347:38:347:39 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:348:13:348:13 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:348:17:348:17 | a | | main.rs:180:5:184:5 | MyPair | +| main.rs:348:17:348:17 | a | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:348:17:348:17 | a | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:348:17:348:23 | a.fst() | | main.rs:186:5:187:14 | S1 | +| main.rs:349:18:349:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:349:26:349:26 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:350:13:350:13 | y | | main.rs:186:5:187:14 | S1 | +| main.rs:350:17:350:17 | a | | main.rs:180:5:184:5 | MyPair | +| main.rs:350:17:350:17 | a | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:350:17:350:17 | a | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:350:17:350:23 | a.snd() | | main.rs:186:5:187:14 | S1 | +| main.rs:351:18:351:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:351:26:351:26 | y | | main.rs:186:5:187:14 | S1 | +| main.rs:357:13:357:13 | b | | main.rs:180:5:184:5 | MyPair | +| main.rs:357:13:357:13 | b | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:357:13:357:13 | b | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:357:17:357:41 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:357:17:357:41 | MyPair {...} | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:357:17:357:41 | MyPair {...} | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:357:30:357:31 | S2 | | main.rs:188:5:189:14 | S2 | +| main.rs:357:38:357:39 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:358:13:358:13 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:358:17:358:17 | b | | main.rs:180:5:184:5 | MyPair | +| main.rs:358:17:358:17 | b | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:358:17:358:17 | b | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:358:17:358:23 | b.fst() | | main.rs:186:5:187:14 | S1 | +| main.rs:359:18:359:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:359:26:359:26 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:360:13:360:13 | y | | main.rs:188:5:189:14 | S2 | +| main.rs:360:17:360:17 | b | | main.rs:180:5:184:5 | MyPair | +| main.rs:360:17:360:17 | b | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:360:17:360:17 | b | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:360:17:360:23 | b.snd() | | main.rs:188:5:189:14 | S2 | | 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 | -| main.rs:362:17:362:39 | call_trait_m1(...) | | main.rs:170:5:173:5 | MyThing | -| 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" | | {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 | -| main.rs:366:13:366:13 | a | | main.rs:175:5:179:5 | MyPair | -| main.rs:366:13:366:13 | a | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:366:13:366:13 | a | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:366:17:366:41 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:366:17:366:41 | MyPair {...} | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:366:17:366:41 | MyPair {...} | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:366:30:366:31 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:366:38:366:39 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:367:13:367:13 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:367:17:367:26 | get_fst(...) | | main.rs:181:5:182:14 | S1 | -| 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:361:26:361:26 | y | | main.rs:188:5:189:14 | S2 | +| main.rs:365:13:365:13 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:365:17:365:39 | call_trait_m1(...) | | main.rs:186:5:187:14 | S1 | +| main.rs:365:31:365:38 | thing_s1 | | main.rs:175:5:178:5 | MyThing | +| main.rs:365:31:365:38 | thing_s1 | A | main.rs:186:5:187:14 | S1 | +| main.rs:366:18:366:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:366:26:366:26 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:367:13:367:13 | y | | main.rs:175:5:178:5 | MyThing | +| main.rs:367:13:367:13 | y | A | main.rs:188:5:189:14 | S2 | +| main.rs:367:17:367:39 | call_trait_m1(...) | | main.rs:175:5:178:5 | MyThing | +| main.rs:367:17:367:39 | call_trait_m1(...) | A | main.rs:188:5:189:14 | S2 | +| main.rs:367:31:367:38 | thing_s2 | | main.rs:175:5:178:5 | MyThing | +| main.rs:367:31:367:38 | thing_s2 | A | main.rs:188:5:189:14 | S2 | | 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" | | {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 | -| main.rs:373:13:373:13 | b | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:373:17:373:41 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:373:17:373:41 | MyPair {...} | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:373:17:373:41 | MyPair {...} | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:373:30:373:31 | S2 | | main.rs:183:5:184:14 | S2 | -| main.rs:373:38:373:39 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:374:13:374:13 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:374:17:374:26 | get_fst(...) | | main.rs:181:5:182:14 | S1 | -| 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:368:26:368:26 | y | | main.rs:175:5:178:5 | MyThing | +| main.rs:368:26:368:26 | y | A | main.rs:188:5:189:14 | S2 | +| main.rs:368:26:368:28 | y.a | | main.rs:188:5:189:14 | S2 | +| main.rs:371:13:371:13 | a | | main.rs:180:5:184:5 | MyPair | +| main.rs:371:13:371:13 | a | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:371:13:371:13 | a | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:371:17:371:41 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:371:17:371:41 | MyPair {...} | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:371:17:371:41 | MyPair {...} | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:371:30:371:31 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:371:38:371:39 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:372:13:372:13 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:372:17:372:26 | get_fst(...) | | main.rs:186:5:187:14 | S1 | +| main.rs:372:25:372:25 | a | | main.rs:180:5:184:5 | MyPair | +| main.rs:372:25:372:25 | a | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:372:25:372:25 | a | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:373:18:373:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:373:26:373:26 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:374:13:374:13 | y | | main.rs:186:5:187:14 | S1 | +| main.rs:374:17:374:26 | get_snd(...) | | main.rs:186:5:187:14 | S1 | +| main.rs:374:25:374:25 | a | | main.rs:180:5:184:5 | MyPair | +| main.rs:374:25:374:25 | a | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:374:25:374:25 | a | P2 | main.rs:186:5:187:14 | S1 | | 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" | | {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 | -| main.rs:379:13:379:13 | c | P2 | main.rs:175:5:179:5 | MyPair | -| main.rs:379:13:379:13 | c | P2.P1 | main.rs:183:5:184:14 | S2 | -| main.rs:379:13:379:13 | c | P2.P2 | main.rs:181:5:182:14 | S1 | -| main.rs:379:17:382:9 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:379:17:382:9 | MyPair {...} | P1 | main.rs:185:5:186:14 | S3 | -| main.rs:379:17:382:9 | MyPair {...} | P2 | main.rs:175:5:179:5 | MyPair | -| main.rs:379:17:382:9 | MyPair {...} | P2.P1 | main.rs:183:5:184:14 | S2 | -| main.rs:379:17:382:9 | MyPair {...} | P2.P2 | main.rs:181:5:182:14 | S1 | -| main.rs:380:17:380:18 | S3 | | main.rs:185:5:186:14 | S3 | -| main.rs:381:17:381:41 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:381:17:381:41 | MyPair {...} | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:381:17:381:41 | MyPair {...} | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:381:30:381:31 | S2 | | main.rs:183:5:184:14 | S2 | -| main.rs:381:38:381:39 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:383:13:383:13 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:383:17:383:30 | get_snd_fst(...) | | main.rs:181:5:182:14 | S1 | -| main.rs:383:29:383:29 | c | | main.rs:175:5:179:5 | MyPair | -| main.rs:383:29:383:29 | c | P1 | main.rs:185:5:186:14 | S3 | -| main.rs:383:29:383:29 | c | P2 | main.rs:175:5:179:5 | MyPair | -| main.rs:383:29:383:29 | c | P2.P1 | main.rs:183:5:184:14 | S2 | -| main.rs:383:29:383:29 | c | P2.P2 | main.rs:181:5:182:14 | S1 | -| main.rs:385:13:385:17 | thing | | main.rs:170:5:173:5 | MyThing | -| main.rs:385:13:385:17 | thing | A | main.rs:181:5:182:14 | S1 | -| main.rs:385:21:385:37 | MyThing {...} | | main.rs:170:5:173:5 | MyThing | -| main.rs:385:21:385:37 | MyThing {...} | A | main.rs:181:5:182:14 | S1 | -| main.rs:385:34:385:35 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:386:17:386:21 | thing | | main.rs:170:5:173:5 | MyThing | -| main.rs:386:17:386:21 | thing | A | main.rs:181:5:182:14 | S1 | -| main.rs:387:13:387:13 | j | | main.rs:181:5:182:14 | S1 | -| main.rs:387:17:387:33 | convert_to(...) | | main.rs:181:5:182:14 | S1 | -| main.rs:387:28:387:32 | thing | | main.rs:170:5:173:5 | MyThing | -| main.rs:387:28:387:32 | thing | A | main.rs:181:5:182:14 | S1 | -| main.rs:396:26:396:29 | SelfParam | | main.rs:395:5:399:5 | Self [trait OverlappingTrait] | -| main.rs:398:28:398:31 | SelfParam | | main.rs:395:5:399:5 | Self [trait OverlappingTrait] | -| 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" | | {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" | | {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 | -| main.rs:420:28:420:31 | SelfParam | | main.rs:392:5:393:14 | S1 | -| main.rs:420:40:422:9 | { ... } | | main.rs:392:5:393:14 | S1 | -| 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" | | {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" | | {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] | -| main.rs:450:19:450:22 | SelfParam | | main.rs:448:5:451:5 | Self [trait SecondTrait] | -| main.rs:453:64:453:64 | x | | main.rs:453:45:453:61 | T | -| 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" | | {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" | | {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" | | {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" | | {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] | -| main.rs:481:58:481:58 | x | | main.rs:481:41:481:55 | T | -| main.rs:481:64:481:64 | y | | main.rs:481:41:481:55 | T | -| main.rs:483:13:483:14 | s1 | | main.rs:435:5:436:14 | S1 | -| main.rs:483:18:483:18 | x | | main.rs:481:41:481:55 | T | -| main.rs:483:18:483:24 | x.fst() | | main.rs:435:5:436:14 | S1 | -| 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" | | {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 | -| main.rs:488:75:488:75 | y | | main.rs:488:52:488:66 | T | -| main.rs:490:13:490:14 | s1 | | main.rs:435:5:436:14 | S1 | -| main.rs:490:18:490:18 | x | | main.rs:488:52:488:66 | T | -| main.rs:490:18:490:24 | x.fst() | | main.rs:435:5:436:14 | S1 | -| 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" | | {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] | -| main.rs:510:15:510:18 | SelfParam | | main.rs:507:5:516:5 | Self [trait MyTrait] | -| main.rs:513:9:515:9 | { ... } | | main.rs:507:19:507:19 | A | -| main.rs:514:13:514:16 | self | | main.rs:507:5:516:5 | Self [trait MyTrait] | -| main.rs:514:13:514:21 | self.m1() | | main.rs:507:19:507:19 | A | -| main.rs:519:43:519:43 | x | | main.rs:519:26:519:40 | T2 | -| main.rs:519:56:521:5 | { ... } | | main.rs:519:22:519:23 | T1 | -| main.rs:520:9:520:9 | x | | main.rs:519:26:519:40 | T2 | -| main.rs:520:9:520:14 | x.m1() | | main.rs:519:22:519:23 | T1 | -| main.rs:524:49:524:49 | x | | main.rs:497:5:500:5 | MyThing | -| main.rs:524:49:524:49 | x | T | main.rs:524:32:524:46 | T2 | -| main.rs:524:71:526:5 | { ... } | | main.rs:524:28:524:29 | T1 | -| main.rs:525:9:525:9 | x | | main.rs:497:5:500:5 | MyThing | -| main.rs:525:9:525:9 | x | T | main.rs:524:32:524:46 | T2 | -| main.rs:525:9:525:11 | x.a | | main.rs:524:32:524:46 | T2 | -| main.rs:525:9:525:16 | ... .m1() | | main.rs:524:28:524:29 | T1 | -| main.rs:529:15:529:18 | SelfParam | | main.rs:497:5:500:5 | MyThing | -| main.rs:529:15:529:18 | SelfParam | T | main.rs:528:10:528:10 | T | -| main.rs:529:26:531:9 | { ... } | | main.rs:528:10:528:10 | T | -| main.rs:530:13:530:16 | self | | main.rs:497:5:500:5 | MyThing | -| main.rs:530:13:530:16 | self | T | main.rs:528:10:528:10 | T | -| main.rs:530:13:530:18 | self.a | | main.rs:528:10:528:10 | T | -| main.rs:535:13:535:13 | x | | main.rs:497:5:500:5 | MyThing | -| main.rs:535:13:535:13 | x | T | main.rs:502:5:503:14 | S1 | -| main.rs:535:17:535:33 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:535:17:535:33 | MyThing {...} | T | main.rs:502:5:503:14 | S1 | -| main.rs:535:30:535:31 | S1 | | main.rs:502:5:503:14 | S1 | -| main.rs:536:13:536:13 | y | | main.rs:497:5:500:5 | MyThing | -| main.rs:536:13:536:13 | y | T | main.rs:504:5:505:14 | S2 | -| 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" | | {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" | | {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 | -| main.rs:541:13:541:13 | x | | main.rs:497:5:500:5 | MyThing | -| main.rs:541:13:541:13 | x | T | main.rs:502:5:503:14 | S1 | -| main.rs:541:17:541:33 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:541:17:541:33 | MyThing {...} | T | main.rs:502:5:503:14 | S1 | -| main.rs:541:30:541:31 | S1 | | main.rs:502:5:503:14 | S1 | -| main.rs:542:13:542:13 | y | | main.rs:497:5:500:5 | MyThing | -| main.rs:542:13:542:13 | y | T | main.rs:504:5:505:14 | S2 | -| 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" | | {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:375:26:375:26 | y | | main.rs:186:5:187:14 | S1 | +| main.rs:378:13:378:13 | b | | main.rs:180:5:184:5 | MyPair | +| main.rs:378:13:378:13 | b | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:378:13:378:13 | b | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:378:17:378:41 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:378:17:378:41 | MyPair {...} | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:378:17:378:41 | MyPair {...} | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:378:30:378:31 | S2 | | main.rs:188:5:189:14 | S2 | +| main.rs:378:38:378:39 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:379:13:379:13 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:379:17:379:26 | get_fst(...) | | main.rs:186:5:187:14 | S1 | +| main.rs:379:25:379:25 | b | | main.rs:180:5:184:5 | MyPair | +| main.rs:379:25:379:25 | b | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:379:25:379:25 | b | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:380:18:380:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:380:26:380:26 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:381:13:381:13 | y | | main.rs:188:5:189:14 | S2 | +| main.rs:381:17:381:26 | get_snd(...) | | main.rs:188:5:189:14 | S2 | +| main.rs:381:25:381:25 | b | | main.rs:180:5:184:5 | MyPair | +| main.rs:381:25:381:25 | b | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:381:25:381:25 | b | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:382:18:382:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:382:26:382:26 | y | | main.rs:188:5:189:14 | S2 | +| main.rs:384:13:384:13 | c | | main.rs:180:5:184:5 | MyPair | +| main.rs:384:13:384:13 | c | P1 | main.rs:190:5:191:14 | S3 | +| main.rs:384:13:384:13 | c | P2 | main.rs:180:5:184:5 | MyPair | +| main.rs:384:13:384:13 | c | P2.P1 | main.rs:188:5:189:14 | S2 | +| main.rs:384:13:384:13 | c | P2.P2 | main.rs:186:5:187:14 | S1 | +| main.rs:384:17:387:9 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:384:17:387:9 | MyPair {...} | P1 | main.rs:190:5:191:14 | S3 | +| main.rs:384:17:387:9 | MyPair {...} | P2 | main.rs:180:5:184:5 | MyPair | +| main.rs:384:17:387:9 | MyPair {...} | P2.P1 | main.rs:188:5:189:14 | S2 | +| main.rs:384:17:387:9 | MyPair {...} | P2.P2 | main.rs:186:5:187:14 | S1 | +| main.rs:385:17:385:18 | S3 | | main.rs:190:5:191:14 | S3 | +| main.rs:386:17:386:41 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:386:17:386:41 | MyPair {...} | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:386:17:386:41 | MyPair {...} | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:386:30:386:31 | S2 | | main.rs:188:5:189:14 | S2 | +| main.rs:386:38:386:39 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:388:13:388:13 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:388:17:388:30 | get_snd_fst(...) | | main.rs:186:5:187:14 | S1 | +| main.rs:388:29:388:29 | c | | main.rs:180:5:184:5 | MyPair | +| main.rs:388:29:388:29 | c | P1 | main.rs:190:5:191:14 | S3 | +| main.rs:388:29:388:29 | c | P2 | main.rs:180:5:184:5 | MyPair | +| main.rs:388:29:388:29 | c | P2.P1 | main.rs:188:5:189:14 | S2 | +| main.rs:388:29:388:29 | c | P2.P2 | main.rs:186:5:187:14 | S1 | +| main.rs:390:13:390:17 | thing | | main.rs:175:5:178:5 | MyThing | +| main.rs:390:13:390:17 | thing | A | main.rs:186:5:187:14 | S1 | +| main.rs:390:21:390:37 | MyThing {...} | | main.rs:175:5:178:5 | MyThing | +| main.rs:390:21:390:37 | MyThing {...} | A | main.rs:186:5:187:14 | S1 | +| main.rs:390:34:390:35 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:391:17:391:21 | thing | | main.rs:175:5:178:5 | MyThing | +| main.rs:391:17:391:21 | thing | A | main.rs:186:5:187:14 | S1 | +| main.rs:392:13:392:13 | j | | main.rs:186:5:187:14 | S1 | +| main.rs:392:17:392:33 | convert_to(...) | | main.rs:186:5:187:14 | S1 | +| main.rs:392:28:392:32 | thing | | main.rs:175:5:178:5 | MyThing | +| main.rs:392:28:392:32 | thing | A | main.rs:186:5:187:14 | S1 | +| main.rs:401:26:401:29 | SelfParam | | main.rs:400:5:404:5 | Self [trait OverlappingTrait] | +| main.rs:403:28:403:31 | SelfParam | | main.rs:400:5:404:5 | Self [trait OverlappingTrait] | +| main.rs:403:34:403:35 | s1 | | main.rs:397:5:398:14 | S1 | +| main.rs:408:26:408:29 | SelfParam | | main.rs:397:5:398:14 | S1 | +| main.rs:408:38:410:9 | { ... } | | main.rs:397:5:398:14 | S1 | +| main.rs:409:13:409:14 | S1 | | main.rs:397:5:398:14 | S1 | +| main.rs:413:28:413:31 | SelfParam | | main.rs:397:5:398:14 | S1 | +| main.rs:413:34:413:35 | s1 | | main.rs:397:5:398:14 | S1 | +| main.rs:413:48:415:9 | { ... } | | main.rs:397:5:398:14 | S1 | +| main.rs:414:13:414:14 | S1 | | main.rs:397:5:398:14 | S1 | +| main.rs:420:26:420:29 | SelfParam | | main.rs:397:5:398:14 | S1 | +| main.rs:420:38:422:9 | { ... } | | main.rs:397:5:398:14 | S1 | +| main.rs:421:13:421:16 | self | | main.rs:397:5:398:14 | S1 | +| main.rs:425:28:425:31 | SelfParam | | main.rs:397:5:398:14 | S1 | +| main.rs:425:40:427:9 | { ... } | | main.rs:397:5:398:14 | S1 | +| main.rs:426:13:426:16 | self | | main.rs:397:5:398:14 | S1 | +| main.rs:434:26:434:29 | SelfParam | | main.rs:430:5:430:22 | S2 | +| main.rs:434:26:434:29 | SelfParam | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:434:38:436:9 | { ... } | | main.rs:397:5:398:14 | S1 | +| main.rs:435:13:435:14 | S1 | | main.rs:397:5:398:14 | S1 | +| main.rs:439:28:439:31 | SelfParam | | main.rs:430:5:430:22 | S2 | +| main.rs:439:28:439:31 | SelfParam | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:439:40:441:9 | { ... } | | main.rs:397:5:398:14 | S1 | +| main.rs:440:13:440:14 | S1 | | main.rs:397:5:398:14 | S1 | +| main.rs:446:26:446:29 | SelfParam | | main.rs:430:5:430:22 | S2 | +| main.rs:446:26:446:29 | SelfParam | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:446:38:448:9 | { ... } | | main.rs:397:5:398:14 | S1 | +| main.rs:447:13:447:14 | S1 | | main.rs:397:5:398:14 | S1 | +| main.rs:451:28:451:31 | SelfParam | | main.rs:430:5:430:22 | S2 | +| main.rs:451:28:451:31 | SelfParam | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:451:34:451:35 | s1 | | main.rs:397:5:398:14 | S1 | +| main.rs:451:48:453:9 | { ... } | | main.rs:397:5:398:14 | S1 | +| main.rs:452:13:452:14 | S1 | | main.rs:397:5:398:14 | S1 | +| main.rs:458:26:458:29 | SelfParam | | main.rs:430:5:430:22 | S2 | +| main.rs:458:26:458:29 | SelfParam | T2 | main.rs:397:5:398:14 | S1 | +| main.rs:458:38:460:9 | { ... } | | main.rs:397:5:398:14 | S1 | +| main.rs:459:13:459:14 | S1 | | main.rs:397:5:398:14 | S1 | +| main.rs:463:28:463:31 | SelfParam | | main.rs:430:5:430:22 | S2 | +| main.rs:463:28:463:31 | SelfParam | T2 | main.rs:397:5:398:14 | S1 | +| main.rs:463:34:463:35 | s1 | | main.rs:397:5:398:14 | S1 | +| main.rs:463:48:465:9 | { ... } | | main.rs:397:5:398:14 | S1 | +| main.rs:464:13:464:14 | S1 | | main.rs:397:5:398:14 | S1 | +| main.rs:472:14:472:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:472:14:472:18 | SelfParam | &T | main.rs:471:5:473:5 | Self [trait OverlappingTrait2] | +| main.rs:472:21:472:21 | x | | file://:0:0:0:0 | & | +| main.rs:472:21:472:21 | x | &T | main.rs:471:29:471:29 | T | +| main.rs:477:14:477:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:477:14:477:18 | SelfParam | &T | main.rs:468:5:469:22 | S3 | +| main.rs:477:14:477:18 | SelfParam | &T.T3 | main.rs:475:10:475:10 | T | +| main.rs:477:21:477:21 | x | | file://:0:0:0:0 | & | +| main.rs:477:21:477:21 | x | &T | main.rs:475:10:475:10 | T | +| main.rs:477:37:479:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:477:37:479:9 | { ... } | &T | main.rs:468:5:469:22 | S3 | +| main.rs:477:37:479:9 | { ... } | &T.T3 | main.rs:475:10:475:10 | T | +| main.rs:478:13:478:16 | self | | file://:0:0:0:0 | & | +| main.rs:478:13:478:16 | self | &T | main.rs:468:5:469:22 | S3 | +| main.rs:478:13:478:16 | self | &T.T3 | main.rs:475:10:475:10 | T | +| main.rs:484:14:484:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:484:14:484:18 | SelfParam | &T | main.rs:468:5:469:22 | S3 | +| main.rs:484:14:484:18 | SelfParam | &T.T3 | main.rs:482:10:482:10 | T | +| main.rs:484:21:484:21 | x | | main.rs:482:10:482:10 | T | +| main.rs:484:36:486:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:484:36:486:9 | { ... } | &T | main.rs:468:5:469:22 | S3 | +| main.rs:484:36:486:9 | { ... } | &T.T3 | main.rs:482:10:482:10 | T | +| main.rs:485:13:485:16 | self | | file://:0:0:0:0 | & | +| main.rs:485:13:485:16 | self | &T | main.rs:468:5:469:22 | S3 | +| main.rs:485:13:485:16 | self | &T.T3 | main.rs:482:10:482:10 | T | +| main.rs:490:13:490:13 | x | | main.rs:397:5:398:14 | S1 | +| main.rs:490:17:490:18 | S1 | | main.rs:397:5:398:14 | S1 | +| main.rs:491:18:491:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:491:26:491:26 | x | | main.rs:397:5:398:14 | S1 | +| main.rs:491:26:491:42 | x.common_method() | | main.rs:397:5:398:14 | S1 | +| main.rs:492:18:492:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:492:26:492:26 | x | | main.rs:397:5:398:14 | S1 | +| main.rs:492:26:492:44 | x.common_method_2() | | main.rs:397:5:398:14 | S1 | +| main.rs:494:13:494:13 | y | | main.rs:430:5:430:22 | S2 | +| main.rs:494:13:494:13 | y | T2 | main.rs:397:5:398:14 | S1 | +| main.rs:494:17:494:22 | S2(...) | | main.rs:430:5:430:22 | S2 | +| main.rs:494:17:494:22 | S2(...) | T2 | main.rs:397:5:398:14 | S1 | +| main.rs:494:20:494:21 | S1 | | main.rs:397:5:398:14 | S1 | +| main.rs:495:18:495:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:495:26:495:26 | y | | main.rs:430:5:430:22 | S2 | +| main.rs:495:26:495:26 | y | T2 | main.rs:397:5:398:14 | S1 | +| main.rs:495:26:495:42 | y.common_method() | | main.rs:397:5:398:14 | S1 | +| main.rs:497:13:497:13 | z | | main.rs:430:5:430:22 | S2 | +| main.rs:497:13:497:13 | z | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:497:17:497:21 | S2(...) | | main.rs:430:5:430:22 | S2 | +| main.rs:497:17:497:21 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:497:20:497:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:498:18:498:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:498:26:498:26 | z | | main.rs:430:5:430:22 | S2 | +| main.rs:498:26:498:26 | z | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:498:26:498:42 | z.common_method() | | main.rs:397:5:398:14 | S1 | +| main.rs:500:13:500:13 | w | | main.rs:468:5:469:22 | S3 | +| main.rs:500:13:500:13 | w | T3 | main.rs:397:5:398:14 | S1 | +| main.rs:500:17:500:22 | S3(...) | | main.rs:468:5:469:22 | S3 | +| main.rs:500:17:500:22 | S3(...) | T3 | main.rs:397:5:398:14 | S1 | +| main.rs:500:20:500:21 | S1 | | main.rs:397:5:398:14 | S1 | +| main.rs:501:18:501:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:501:26:501:26 | w | | main.rs:468:5:469:22 | S3 | +| main.rs:501:26:501:26 | w | T3 | main.rs:397:5:398:14 | S1 | +| main.rs:501:26:501:31 | w.m(...) | | file://:0:0:0:0 | & | +| main.rs:501:26:501:31 | w.m(...) | &T | main.rs:468:5:469:22 | S3 | +| main.rs:501:26:501:31 | w.m(...) | &T.T3 | main.rs:397:5:398:14 | S1 | +| main.rs:501:30:501:30 | x | | main.rs:397:5:398:14 | S1 | +| main.rs:518:19:518:22 | SelfParam | | main.rs:516:5:519:5 | Self [trait FirstTrait] | +| main.rs:523:19:523:22 | SelfParam | | main.rs:521:5:524:5 | Self [trait SecondTrait] | +| main.rs:526:64:526:64 | x | | main.rs:526:45:526:61 | T | +| main.rs:528:13:528:14 | s1 | | main.rs:526:35:526:42 | I | +| main.rs:528:18:528:18 | x | | main.rs:526:45:526:61 | T | +| main.rs:528:18:528:27 | x.method() | | main.rs:526:35:526:42 | I | +| main.rs:529:18:529:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:529:26:529:27 | s1 | | main.rs:526:35:526:42 | I | +| main.rs:532:65:532:65 | x | | main.rs:532:46:532:62 | T | +| main.rs:534:13:534:14 | s2 | | main.rs:532:36:532:43 | I | +| main.rs:534:18:534:18 | x | | main.rs:532:46:532:62 | T | +| main.rs:534:18:534:27 | x.method() | | main.rs:532:36:532:43 | I | +| main.rs:535:18:535:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:535:26:535:27 | s2 | | main.rs:532:36:532:43 | I | +| main.rs:538:49:538:49 | x | | main.rs:538:30:538:46 | T | +| main.rs:539:13:539:13 | s | | main.rs:508:5:509:14 | S1 | +| main.rs:539:17:539:17 | x | | main.rs:538:30:538:46 | T | +| main.rs:539:17:539:26 | x.method() | | main.rs:508:5:509:14 | S1 | +| main.rs:540:18:540:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:540:26:540:26 | s | | main.rs:508:5:509:14 | S1 | +| main.rs:543:53:543:53 | x | | main.rs:543:34:543:50 | T | +| main.rs:544:13:544:13 | s | | main.rs:508:5:509:14 | S1 | +| main.rs:544:17:544:17 | x | | main.rs:543:34:543:50 | T | +| main.rs:544:17:544:26 | x.method() | | main.rs:508:5:509:14 | S1 | | 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 | -| main.rs:547:13:547:14 | x2 | | main.rs:497:5:500:5 | MyThing | -| main.rs:547:13:547:14 | x2 | T | main.rs:502:5:503:14 | S1 | -| main.rs:547:18:547:34 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:547:18:547:34 | MyThing {...} | T | main.rs:502:5:503:14 | S1 | -| main.rs:547:31:547:32 | S1 | | main.rs:502:5:503:14 | S1 | -| main.rs:548:13:548:14 | y2 | | main.rs:497:5:500:5 | MyThing | -| main.rs:548:13:548:14 | y2 | T | main.rs:504:5:505:14 | S2 | -| 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" | | {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" | | {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 | -| main.rs:553:13:553:14 | x3 | | main.rs:497:5:500:5 | MyThing | -| main.rs:553:13:553:14 | x3 | T | main.rs:497:5:500:5 | MyThing | -| main.rs:553:13:553:14 | x3 | T.T | main.rs:502:5:503:14 | S1 | -| main.rs:553:18:555:9 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:553:18:555:9 | MyThing {...} | T | main.rs:497:5:500:5 | MyThing | -| main.rs:553:18:555:9 | MyThing {...} | T.T | main.rs:502:5:503:14 | S1 | -| main.rs:554:16:554:32 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:554:16:554:32 | MyThing {...} | T | main.rs:502:5:503:14 | S1 | -| main.rs:554:29:554:30 | S1 | | main.rs:502:5:503:14 | S1 | -| main.rs:556:13:556:14 | y3 | | main.rs:497:5:500:5 | MyThing | -| main.rs:556:13:556:14 | y3 | T | main.rs:497:5:500:5 | MyThing | -| main.rs:556:13:556:14 | y3 | T.T | main.rs:504:5:505:14 | S2 | -| main.rs:556:18:558:9 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:556:18:558:9 | MyThing {...} | T | main.rs:497:5:500:5 | MyThing | -| main.rs:556:18:558:9 | MyThing {...} | T.T | main.rs:504:5:505:14 | S2 | -| main.rs:557:16:557:32 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:557:16:557:32 | MyThing {...} | T | main.rs:504:5:505:14 | S2 | -| main.rs:557:29:557:30 | S2 | | main.rs:504:5:505:14 | S2 | -| main.rs:560:13:560:13 | a | | main.rs:502:5:503:14 | S1 | -| main.rs:560:17:560:39 | call_trait_thing_m1(...) | | main.rs:502:5:503:14 | S1 | -| 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" | | {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" | | {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 | -| main.rs:574:30:576:9 | { ... } | | main.rs:573:10:573:10 | A | -| main.rs:575:13:575:16 | self | | main.rs:568:5:571:5 | Wrapper | -| main.rs:575:13:575:16 | self | A | main.rs:573:10:573:10 | A | -| main.rs:575:13:575:22 | self.field | | main.rs:573:10:573:10 | A | -| main.rs:583:15:583:18 | SelfParam | | main.rs:579:5:593:5 | Self [trait MyTrait] | -| main.rs:585:15:585:18 | SelfParam | | main.rs:579:5:593:5 | Self [trait MyTrait] | -| main.rs:589:9:592:9 | { ... } | | main.rs:580:9:580:28 | AssociatedType | -| main.rs:590:13:590:16 | self | | main.rs:579:5:593:5 | Self [trait MyTrait] | -| main.rs:590:13:590:21 | self.m1() | | main.rs:580:9:580:28 | AssociatedType | -| main.rs:591:13:591:43 | ...::default(...) | | main.rs:580:9:580:28 | AssociatedType | -| main.rs:599:19:599:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:599:19:599:23 | SelfParam | &T | main.rs:595:5:605:5 | Self [trait MyTraitAssoc2] | -| main.rs:599:26:599:26 | a | | main.rs:599:16:599:16 | A | -| main.rs:601:22:601:26 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:601:22:601:26 | SelfParam | &T | main.rs:595:5:605:5 | Self [trait MyTraitAssoc2] | -| main.rs:601:29:601:29 | a | | main.rs:601:19:601:19 | A | -| main.rs:601:35:601:35 | b | | main.rs:601:19:601:19 | A | -| main.rs:601:75:604:9 | { ... } | | main.rs:596:9:596:52 | GenericAssociatedType | -| main.rs:602:13:602:16 | self | | file://:0:0:0:0 | & | -| main.rs:602:13:602:16 | self | &T | main.rs:595:5:605:5 | Self [trait MyTraitAssoc2] | -| main.rs:602:13:602:23 | self.put(...) | | main.rs:596:9:596:52 | GenericAssociatedType | -| main.rs:602:22:602:22 | a | | main.rs:601:19:601:19 | A | -| main.rs:603:13:603:16 | self | | file://:0:0:0:0 | & | -| main.rs:603:13:603:16 | self | &T | main.rs:595:5:605:5 | Self [trait MyTraitAssoc2] | -| main.rs:603:13:603:23 | self.put(...) | | main.rs:596:9:596:52 | GenericAssociatedType | -| main.rs:603:22:603:22 | b | | main.rs:601:19:601:19 | A | -| main.rs:612:21:612:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:612:21:612:25 | SelfParam | &T | main.rs:607:5:617:5 | Self [trait TraitMultipleAssoc] | -| main.rs:614:20:614:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:614:20:614:24 | SelfParam | &T | main.rs:607:5:617:5 | Self [trait TraitMultipleAssoc] | -| main.rs:616:20:616:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:616:20:616:24 | SelfParam | &T | main.rs:607:5:617:5 | Self [trait TraitMultipleAssoc] | -| main.rs:632:15:632:18 | SelfParam | | main.rs:619:5:620:13 | S | -| main.rs:632:45:634:9 | { ... } | | main.rs:625:5:626:14 | AT | -| main.rs:633:13:633:14 | AT | | main.rs:625:5:626:14 | AT | -| main.rs:642:19:642:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:642:19:642:23 | SelfParam | &T | main.rs:619:5:620:13 | S | -| main.rs:642:26:642:26 | a | | main.rs:642:16:642:16 | A | -| main.rs:642:46:644:9 | { ... } | | main.rs:568:5:571:5 | Wrapper | -| main.rs:642:46:644:9 | { ... } | A | main.rs:642:16:642:16 | A | -| main.rs:643:13:643:32 | Wrapper {...} | | main.rs:568:5:571:5 | Wrapper | -| main.rs:643:13:643:32 | Wrapper {...} | A | main.rs:642:16:642:16 | A | -| main.rs:643:30:643:30 | a | | main.rs:642:16:642:16 | A | -| main.rs:651:15:651:18 | SelfParam | | main.rs:622:5:623:14 | S2 | -| main.rs:651:45:653:9 | { ... } | | main.rs:568:5:571:5 | Wrapper | -| main.rs:651:45:653:9 | { ... } | A | main.rs:622:5:623:14 | S2 | -| main.rs:652:13:652:35 | Wrapper {...} | | main.rs:568:5:571:5 | Wrapper | -| main.rs:652:13:652:35 | Wrapper {...} | A | main.rs:622:5:623:14 | S2 | -| main.rs:652:30:652:33 | self | | main.rs:622:5:623:14 | S2 | -| main.rs:658:30:660:9 | { ... } | | main.rs:568:5:571:5 | Wrapper | -| main.rs:658:30:660:9 | { ... } | A | main.rs:622:5:623:14 | S2 | -| main.rs:659:13:659:33 | Wrapper {...} | | main.rs:568:5:571:5 | Wrapper | -| main.rs:659:13:659:33 | Wrapper {...} | A | main.rs:622:5:623:14 | S2 | -| main.rs:659:30:659:31 | S2 | | main.rs:622:5:623:14 | S2 | -| main.rs:664:22:664:26 | thing | | main.rs:664:10:664:19 | T | -| main.rs:665:9:665:13 | thing | | main.rs:664:10:664:19 | T | -| main.rs:672:21:672:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:672:21:672:25 | SelfParam | &T | main.rs:625:5:626:14 | AT | -| main.rs:672:34:674:9 | { ... } | | main.rs:625:5:626:14 | AT | -| main.rs:673:13:673:14 | AT | | main.rs:625:5:626:14 | AT | -| main.rs:676:20:676:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:676:20:676:24 | SelfParam | &T | main.rs:625:5:626:14 | AT | -| main.rs:676:43:678:9 | { ... } | | main.rs:619:5:620:13 | S | -| main.rs:677:13:677:13 | S | | main.rs:619:5:620:13 | S | -| main.rs:680:20:680:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:680:20:680:24 | SelfParam | &T | main.rs:625:5:626:14 | AT | -| main.rs:680:43:682:9 | { ... } | | main.rs:622:5:623:14 | S2 | -| 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" | | {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 | -| main.rs:690:18:690:18 | S | | main.rs:619:5:620:13 | S | -| 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" | | {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" | | {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 | {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 | | {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" | | {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" | | {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" | | {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 | -| main.rs:710:13:710:22 | assoc_zero | | main.rs:625:5:626:14 | AT | -| main.rs:710:26:710:27 | AT | | main.rs:625:5:626:14 | AT | -| main.rs:710:26:710:38 | AT.get_zero() | | main.rs:625:5:626:14 | AT | -| main.rs:711:13:711:21 | assoc_one | | main.rs:619:5:620:13 | S | -| main.rs:711:25:711:26 | AT | | main.rs:625:5:626:14 | AT | -| main.rs:711:25:711:36 | AT.get_one() | | main.rs:619:5:620:13 | S | -| main.rs:712:13:712:21 | assoc_two | | main.rs:622:5:623:14 | S2 | -| main.rs:712:25:712:26 | AT | | main.rs:625:5:626:14 | AT | -| main.rs:712:25:712:36 | AT.get_two() | | main.rs:622:5:623:14 | S2 | -| main.rs:729:15:729:18 | SelfParam | | main.rs:717:5:721:5 | MyEnum | -| main.rs:729:15:729:18 | SelfParam | A | main.rs:728:10:728:10 | T | -| main.rs:729:26:734:9 | { ... } | | main.rs:728:10:728:10 | T | -| main.rs:730:13:733:13 | match self { ... } | | main.rs:728:10:728:10 | T | -| main.rs:730:19:730:22 | self | | main.rs:717:5:721:5 | MyEnum | -| main.rs:730:19:730:22 | self | A | main.rs:728:10:728:10 | T | -| main.rs:731:28:731:28 | a | | main.rs:728:10:728:10 | T | -| main.rs:731:34:731:34 | a | | main.rs:728:10:728:10 | T | -| main.rs:732:30:732:30 | a | | main.rs:728:10:728:10 | T | -| main.rs:732:37:732:37 | a | | main.rs:728:10:728:10 | T | -| main.rs:738:13:738:13 | x | | main.rs:717:5:721:5 | MyEnum | -| main.rs:738:13:738:13 | x | A | main.rs:723:5:724:14 | S1 | -| main.rs:738:17:738:30 | ...::C1(...) | | main.rs:717:5:721:5 | MyEnum | -| main.rs:738:17:738:30 | ...::C1(...) | A | main.rs:723:5:724:14 | S1 | -| main.rs:738:28:738:29 | S1 | | main.rs:723:5:724:14 | S1 | -| main.rs:739:13:739:13 | y | | main.rs:717:5:721:5 | MyEnum | -| main.rs:739:13:739:13 | y | A | main.rs:725:5:726:14 | S2 | -| 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" | | {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" | | {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 | -| main.rs:764:15:764:18 | SelfParam | | main.rs:762:5:765:5 | Self [trait MyTrait1] | -| 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 | | {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 | -| main.rs:775:20:777:13 | { ... } | | main.rs:767:20:767:22 | Tr2 | -| main.rs:776:17:776:30 | ...::m1(...) | | main.rs:767:20:767:22 | Tr2 | -| main.rs:776:26:776:29 | self | | main.rs:767:5:779:5 | Self [trait MyTrait2] | -| 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 | | {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 | -| main.rs:788:17:788:25 | self.m2() | A | main.rs:781:20:781:22 | Tr3 | -| main.rs:788:17:788:27 | ... .a | | main.rs:781:20:781:22 | Tr3 | -| main.rs:789:20:791:13 | { ... } | | main.rs:781:20:781:22 | Tr3 | -| main.rs:790:17:790:30 | ...::m2(...) | | main.rs:747:5:750:5 | MyThing | -| main.rs:790:17:790:30 | ...::m2(...) | A | main.rs:781:20:781:22 | Tr3 | -| main.rs:790:17:790:32 | ... .a | | main.rs:781:20:781:22 | Tr3 | -| main.rs:790:26:790:29 | self | | main.rs:781:5:793:5 | Self [trait MyTrait3] | -| main.rs:797:15:797:18 | SelfParam | | main.rs:747:5:750:5 | MyThing | -| main.rs:797:15:797:18 | SelfParam | A | main.rs:795:10:795:10 | T | -| main.rs:797:26:799:9 | { ... } | | main.rs:795:10:795:10 | T | -| main.rs:798:13:798:16 | self | | main.rs:747:5:750:5 | MyThing | -| main.rs:798:13:798:16 | self | A | main.rs:795:10:795:10 | T | -| main.rs:798:13:798:18 | self.a | | main.rs:795:10:795:10 | T | -| main.rs:806:15:806:18 | SelfParam | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:806:15:806:18 | SelfParam | A | main.rs:804:10:804:10 | T | -| main.rs:806:35:808:9 | { ... } | | main.rs:747:5:750:5 | MyThing | -| main.rs:806:35:808:9 | { ... } | A | main.rs:804:10:804:10 | T | -| main.rs:807:13:807:33 | MyThing {...} | | main.rs:747:5:750:5 | MyThing | -| main.rs:807:13:807:33 | MyThing {...} | A | main.rs:804:10:804:10 | T | -| main.rs:807:26:807:29 | self | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:807:26:807:29 | self | A | main.rs:804:10:804:10 | T | -| main.rs:807:26:807:31 | self.a | | main.rs:804:10:804:10 | T | -| main.rs:815:44:815:44 | x | | main.rs:815:26:815:41 | T2 | -| main.rs:815:57:817:5 | { ... } | | main.rs:815:22:815:23 | T1 | -| main.rs:816:9:816:9 | x | | main.rs:815:26:815:41 | T2 | -| main.rs:816:9:816:14 | x.m1() | | main.rs:815:22:815:23 | T1 | -| main.rs:819:56:819:56 | x | | main.rs:819:39:819:53 | T | -| main.rs:821:13:821:13 | a | | main.rs:747:5:750:5 | MyThing | -| main.rs:821:13:821:13 | a | A | main.rs:757:5:758:14 | S1 | -| 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" | | {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 | -| main.rs:826:13:826:13 | x | A | main.rs:757:5:758:14 | S1 | -| main.rs:826:17:826:33 | MyThing {...} | | main.rs:747:5:750:5 | MyThing | -| main.rs:826:17:826:33 | MyThing {...} | A | main.rs:757:5:758:14 | S1 | -| main.rs:826:30:826:31 | S1 | | main.rs:757:5:758:14 | S1 | -| main.rs:827:13:827:13 | y | | main.rs:747:5:750:5 | MyThing | -| main.rs:827:13:827:13 | y | A | main.rs:759:5:760:14 | S2 | -| 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:545:26:545:26 | s | | main.rs:508:5:509:14 | S1 | +| main.rs:549:16:549:19 | SelfParam | | main.rs:548:5:552:5 | Self [trait Pair] | +| main.rs:551:16:551:19 | SelfParam | | main.rs:548:5:552:5 | Self [trait Pair] | +| main.rs:554:58:554:58 | x | | main.rs:554:41:554:55 | T | +| main.rs:554:64:554:64 | y | | main.rs:554:41:554:55 | T | +| main.rs:556:13:556:14 | s1 | | main.rs:508:5:509:14 | S1 | +| main.rs:556:18:556:18 | x | | main.rs:554:41:554:55 | T | +| main.rs:556:18:556:24 | x.fst() | | main.rs:508:5:509:14 | S1 | +| main.rs:557:13:557:14 | s2 | | main.rs:511:5:512:14 | S2 | +| main.rs:557:18:557:18 | y | | main.rs:554:41:554:55 | T | +| main.rs:557:18:557:24 | y.snd() | | main.rs:511:5:512:14 | S2 | +| main.rs:558:18:558:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:558:32:558:33 | s1 | | main.rs:508:5:509:14 | S1 | +| main.rs:558:36:558:37 | s2 | | main.rs:511:5:512:14 | S2 | +| main.rs:561:69:561:69 | x | | main.rs:561:52:561:66 | T | +| main.rs:561:75:561:75 | y | | main.rs:561:52:561:66 | T | +| main.rs:563:13:563:14 | s1 | | main.rs:508:5:509:14 | S1 | +| main.rs:563:18:563:18 | x | | main.rs:561:52:561:66 | T | +| main.rs:563:18:563:24 | x.fst() | | main.rs:508:5:509:14 | S1 | +| main.rs:564:13:564:14 | s2 | | main.rs:561:41:561:49 | T2 | +| main.rs:564:18:564:18 | y | | main.rs:561:52:561:66 | T | +| main.rs:564:18:564:24 | y.snd() | | main.rs:561:41:561:49 | T2 | +| main.rs:565:18:565:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:565:32:565:33 | s1 | | main.rs:508:5:509:14 | S1 | +| main.rs:565:36:565:37 | s2 | | main.rs:561:41:561:49 | T2 | +| main.rs:568:50:568:50 | x | | main.rs:568:41:568:47 | T | +| main.rs:568:56:568:56 | y | | main.rs:568:41:568:47 | T | +| main.rs:570:13:570:14 | s1 | | {EXTERNAL LOCATION} | bool | +| main.rs:570:18:570:18 | x | | main.rs:568:41:568:47 | T | +| main.rs:570:18:570:24 | x.fst() | | {EXTERNAL LOCATION} | bool | +| main.rs:571:13:571:14 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:571:18:571:18 | y | | main.rs:568:41:568:47 | T | +| main.rs:571:18:571:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | +| main.rs:572:18:572:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:572:32:572:33 | s1 | | {EXTERNAL LOCATION} | bool | +| main.rs:572:36:572:37 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:575:54:575:54 | x | | main.rs:575:41:575:51 | T | +| main.rs:575:60:575:60 | y | | main.rs:575:41:575:51 | T | +| main.rs:577:13:577:14 | s1 | | {EXTERNAL LOCATION} | u8 | +| main.rs:577:18:577:18 | x | | main.rs:575:41:575:51 | T | +| main.rs:577:18:577:24 | x.fst() | | {EXTERNAL LOCATION} | u8 | +| main.rs:578:13:578:14 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:578:18:578:18 | y | | main.rs:575:41:575:51 | T | +| main.rs:578:18:578:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | +| main.rs:579:18:579:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:579:32:579:33 | s1 | | {EXTERNAL LOCATION} | u8 | +| main.rs:579:36:579:37 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:595:15:595:18 | SelfParam | | main.rs:594:5:603:5 | Self [trait MyTrait] | +| main.rs:597:15:597:18 | SelfParam | | main.rs:594:5:603:5 | Self [trait MyTrait] | +| main.rs:600:9:602:9 | { ... } | | main.rs:594:19:594:19 | A | +| main.rs:601:13:601:16 | self | | main.rs:594:5:603:5 | Self [trait MyTrait] | +| main.rs:601:13:601:21 | self.m1() | | main.rs:594:19:594:19 | A | +| main.rs:606:43:606:43 | x | | main.rs:606:26:606:40 | T2 | +| main.rs:606:56:608:5 | { ... } | | main.rs:606:22:606:23 | T1 | +| main.rs:607:9:607:9 | x | | main.rs:606:26:606:40 | T2 | +| main.rs:607:9:607:14 | x.m1() | | main.rs:606:22:606:23 | T1 | +| main.rs:611:49:611:49 | x | | main.rs:584:5:587:5 | MyThing | +| main.rs:611:49:611:49 | x | T | main.rs:611:32:611:46 | T2 | +| main.rs:611:71:613:5 | { ... } | | main.rs:611:28:611:29 | T1 | +| main.rs:612:9:612:9 | x | | main.rs:584:5:587:5 | MyThing | +| main.rs:612:9:612:9 | x | T | main.rs:611:32:611:46 | T2 | +| main.rs:612:9:612:11 | x.a | | main.rs:611:32:611:46 | T2 | +| main.rs:612:9:612:16 | ... .m1() | | main.rs:611:28:611:29 | T1 | +| main.rs:616:15:616:18 | SelfParam | | main.rs:584:5:587:5 | MyThing | +| main.rs:616:15:616:18 | SelfParam | T | main.rs:615:10:615:10 | T | +| main.rs:616:26:618:9 | { ... } | | main.rs:615:10:615:10 | T | +| main.rs:617:13:617:16 | self | | main.rs:584:5:587:5 | MyThing | +| main.rs:617:13:617:16 | self | T | main.rs:615:10:615:10 | T | +| main.rs:617:13:617:18 | self.a | | main.rs:615:10:615:10 | T | +| main.rs:622:13:622:13 | x | | main.rs:584:5:587:5 | MyThing | +| main.rs:622:13:622:13 | x | T | main.rs:589:5:590:14 | S1 | +| main.rs:622:17:622:33 | MyThing {...} | | main.rs:584:5:587:5 | MyThing | +| main.rs:622:17:622:33 | MyThing {...} | T | main.rs:589:5:590:14 | S1 | +| main.rs:622:30:622:31 | S1 | | main.rs:589:5:590:14 | S1 | +| main.rs:623:13:623:13 | y | | main.rs:584:5:587:5 | MyThing | +| main.rs:623:13:623:13 | y | T | main.rs:591:5:592:14 | S2 | +| main.rs:623:17:623:33 | MyThing {...} | | main.rs:584:5:587:5 | MyThing | +| main.rs:623:17:623:33 | MyThing {...} | T | main.rs:591:5:592:14 | S2 | +| main.rs:623:30:623:31 | S2 | | main.rs:591:5:592:14 | S2 | +| main.rs:625:18:625:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:625:26:625:26 | x | | main.rs:584:5:587:5 | MyThing | +| main.rs:625:26:625:26 | x | T | main.rs:589:5:590:14 | S1 | +| main.rs:625:26:625:31 | x.m1() | | main.rs:589:5:590:14 | S1 | +| main.rs:626:18:626:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:626:26:626:26 | y | | main.rs:584:5:587:5 | MyThing | +| main.rs:626:26:626:26 | y | T | main.rs:591:5:592:14 | S2 | +| main.rs:626:26:626:31 | y.m1() | | main.rs:591:5:592:14 | S2 | +| main.rs:628:13:628:13 | x | | main.rs:584:5:587:5 | MyThing | +| main.rs:628:13:628:13 | x | T | main.rs:589:5:590:14 | S1 | +| main.rs:628:17:628:33 | MyThing {...} | | main.rs:584:5:587:5 | MyThing | +| main.rs:628:17:628:33 | MyThing {...} | T | main.rs:589:5:590:14 | S1 | +| main.rs:628:30:628:31 | S1 | | main.rs:589:5:590:14 | S1 | +| main.rs:629:13:629:13 | y | | main.rs:584:5:587:5 | MyThing | +| main.rs:629:13:629:13 | y | T | main.rs:591:5:592:14 | S2 | +| main.rs:629:17:629:33 | MyThing {...} | | main.rs:584:5:587:5 | MyThing | +| main.rs:629:17:629:33 | MyThing {...} | T | main.rs:591:5:592:14 | S2 | +| main.rs:629:30:629:31 | S2 | | main.rs:591:5:592:14 | S2 | +| main.rs:631:18:631:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:631:26:631:26 | x | | main.rs:584:5:587:5 | MyThing | +| main.rs:631:26:631:26 | x | T | main.rs:589:5:590:14 | S1 | +| main.rs:631:26:631:31 | x.m2() | | main.rs:589:5:590:14 | S1 | +| main.rs:632:18:632:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:632:26:632:26 | y | | main.rs:584:5:587:5 | MyThing | +| main.rs:632:26:632:26 | y | T | main.rs:591:5:592:14 | S2 | +| main.rs:632:26:632:31 | y.m2() | | main.rs:591:5:592:14 | S2 | +| main.rs:634:13:634:14 | x2 | | main.rs:584:5:587:5 | MyThing | +| main.rs:634:13:634:14 | x2 | T | main.rs:589:5:590:14 | S1 | +| main.rs:634:18:634:34 | MyThing {...} | | main.rs:584:5:587:5 | MyThing | +| main.rs:634:18:634:34 | MyThing {...} | T | main.rs:589:5:590:14 | S1 | +| main.rs:634:31:634:32 | S1 | | main.rs:589:5:590:14 | S1 | +| main.rs:635:13:635:14 | y2 | | main.rs:584:5:587:5 | MyThing | +| main.rs:635:13:635:14 | y2 | T | main.rs:591:5:592:14 | S2 | +| main.rs:635:18:635:34 | MyThing {...} | | main.rs:584:5:587:5 | MyThing | +| main.rs:635:18:635:34 | MyThing {...} | T | main.rs:591:5:592:14 | S2 | +| main.rs:635:31:635:32 | S2 | | main.rs:591:5:592:14 | S2 | +| main.rs:637:18:637:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:637:26:637:42 | call_trait_m1(...) | | main.rs:589:5:590:14 | S1 | +| main.rs:637:40:637:41 | x2 | | main.rs:584:5:587:5 | MyThing | +| main.rs:637:40:637:41 | x2 | T | main.rs:589:5:590:14 | S1 | +| main.rs:638:18:638:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:638:26:638:42 | call_trait_m1(...) | | main.rs:591:5:592:14 | S2 | +| main.rs:638:40:638:41 | y2 | | main.rs:584:5:587:5 | MyThing | +| main.rs:638:40:638:41 | y2 | T | main.rs:591:5:592:14 | S2 | +| main.rs:640:13:640:14 | x3 | | main.rs:584:5:587:5 | MyThing | +| main.rs:640:13:640:14 | x3 | T | main.rs:584:5:587:5 | MyThing | +| main.rs:640:13:640:14 | x3 | T.T | main.rs:589:5:590:14 | S1 | +| main.rs:640:18:642:9 | MyThing {...} | | main.rs:584:5:587:5 | MyThing | +| main.rs:640:18:642:9 | MyThing {...} | T | main.rs:584:5:587:5 | MyThing | +| main.rs:640:18:642:9 | MyThing {...} | T.T | main.rs:589:5:590:14 | S1 | +| main.rs:641:16:641:32 | MyThing {...} | | main.rs:584:5:587:5 | MyThing | +| main.rs:641:16:641:32 | MyThing {...} | T | main.rs:589:5:590:14 | S1 | +| main.rs:641:29:641:30 | S1 | | main.rs:589:5:590:14 | S1 | +| main.rs:643:13:643:14 | y3 | | main.rs:584:5:587:5 | MyThing | +| main.rs:643:13:643:14 | y3 | T | main.rs:584:5:587:5 | MyThing | +| main.rs:643:13:643:14 | y3 | T.T | main.rs:591:5:592:14 | S2 | +| main.rs:643:18:645:9 | MyThing {...} | | main.rs:584:5:587:5 | MyThing | +| main.rs:643:18:645:9 | MyThing {...} | T | main.rs:584:5:587:5 | MyThing | +| main.rs:643:18:645:9 | MyThing {...} | T.T | main.rs:591:5:592:14 | S2 | +| main.rs:644:16:644:32 | MyThing {...} | | main.rs:584:5:587:5 | MyThing | +| main.rs:644:16:644:32 | MyThing {...} | T | main.rs:591:5:592:14 | S2 | +| main.rs:644:29:644:30 | S2 | | main.rs:591:5:592:14 | S2 | +| main.rs:647:13:647:13 | a | | main.rs:589:5:590:14 | S1 | +| main.rs:647:17:647:39 | call_trait_thing_m1(...) | | main.rs:589:5:590:14 | S1 | +| main.rs:647:37:647:38 | x3 | | main.rs:584:5:587:5 | MyThing | +| main.rs:647:37:647:38 | x3 | T | main.rs:584:5:587:5 | MyThing | +| main.rs:647:37:647:38 | x3 | T.T | main.rs:589:5:590:14 | S1 | +| main.rs:648:18:648:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:648:26:648:26 | a | | main.rs:589:5:590:14 | S1 | +| main.rs:649:13:649:13 | b | | main.rs:591:5:592:14 | S2 | +| main.rs:649:17:649:39 | call_trait_thing_m1(...) | | main.rs:591:5:592:14 | S2 | +| main.rs:649:37:649:38 | y3 | | main.rs:584:5:587:5 | MyThing | +| main.rs:649:37:649:38 | y3 | T | main.rs:584:5:587:5 | MyThing | +| main.rs:649:37:649:38 | y3 | T.T | main.rs:591:5:592:14 | S2 | +| main.rs:650:18:650:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:650:26:650:26 | b | | main.rs:591:5:592:14 | S2 | +| main.rs:661:19:661:22 | SelfParam | | main.rs:655:5:658:5 | Wrapper | +| main.rs:661:19:661:22 | SelfParam | A | main.rs:660:10:660:10 | A | +| main.rs:661:30:663:9 | { ... } | | main.rs:660:10:660:10 | A | +| main.rs:662:13:662:16 | self | | main.rs:655:5:658:5 | Wrapper | +| main.rs:662:13:662:16 | self | A | main.rs:660:10:660:10 | A | +| main.rs:662:13:662:22 | self.field | | main.rs:660:10:660:10 | A | +| main.rs:670:15:670:18 | SelfParam | | main.rs:666:5:680:5 | Self [trait MyTrait] | +| main.rs:672:15:672:18 | SelfParam | | main.rs:666:5:680:5 | Self [trait MyTrait] | +| main.rs:676:9:679:9 | { ... } | | main.rs:667:9:667:28 | AssociatedType | +| main.rs:677:13:677:16 | self | | main.rs:666:5:680:5 | Self [trait MyTrait] | +| main.rs:677:13:677:21 | self.m1() | | main.rs:667:9:667:28 | AssociatedType | +| main.rs:678:13:678:43 | ...::default(...) | | main.rs:667:9:667:28 | AssociatedType | +| main.rs:686:19:686:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:686:19:686:23 | SelfParam | &T | main.rs:682:5:692:5 | Self [trait MyTraitAssoc2] | +| main.rs:686:26:686:26 | a | | main.rs:686:16:686:16 | A | +| main.rs:688:22:688:26 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:688:22:688:26 | SelfParam | &T | main.rs:682:5:692:5 | Self [trait MyTraitAssoc2] | +| main.rs:688:29:688:29 | a | | main.rs:688:19:688:19 | A | +| main.rs:688:35:688:35 | b | | main.rs:688:19:688:19 | A | +| main.rs:688:75:691:9 | { ... } | | main.rs:683:9:683:52 | GenericAssociatedType | +| main.rs:689:13:689:16 | self | | file://:0:0:0:0 | & | +| main.rs:689:13:689:16 | self | &T | main.rs:682:5:692:5 | Self [trait MyTraitAssoc2] | +| main.rs:689:13:689:23 | self.put(...) | | main.rs:683:9:683:52 | GenericAssociatedType | +| main.rs:689:22:689:22 | a | | main.rs:688:19:688:19 | A | +| main.rs:690:13:690:16 | self | | file://:0:0:0:0 | & | +| main.rs:690:13:690:16 | self | &T | main.rs:682:5:692:5 | Self [trait MyTraitAssoc2] | +| main.rs:690:13:690:23 | self.put(...) | | main.rs:683:9:683:52 | GenericAssociatedType | +| main.rs:690:22:690:22 | b | | main.rs:688:19:688:19 | A | +| main.rs:699:21:699:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:699:21:699:25 | SelfParam | &T | main.rs:694:5:704:5 | Self [trait TraitMultipleAssoc] | +| main.rs:701:20:701:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:701:20:701:24 | SelfParam | &T | main.rs:694:5:704:5 | Self [trait TraitMultipleAssoc] | +| main.rs:703:20:703:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:703:20:703:24 | SelfParam | &T | main.rs:694:5:704:5 | Self [trait TraitMultipleAssoc] | +| main.rs:719:15:719:18 | SelfParam | | main.rs:706:5:707:13 | S | +| main.rs:719:45:721:9 | { ... } | | main.rs:712:5:713:14 | AT | +| main.rs:720:13:720:14 | AT | | main.rs:712:5:713:14 | AT | +| main.rs:729:19:729:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:729:19:729:23 | SelfParam | &T | main.rs:706:5:707:13 | S | +| main.rs:729:26:729:26 | a | | main.rs:729:16:729:16 | A | +| main.rs:729:46:731:9 | { ... } | | main.rs:655:5:658:5 | Wrapper | +| main.rs:729:46:731:9 | { ... } | A | main.rs:729:16:729:16 | A | +| main.rs:730:13:730:32 | Wrapper {...} | | main.rs:655:5:658:5 | Wrapper | +| main.rs:730:13:730:32 | Wrapper {...} | A | main.rs:729:16:729:16 | A | +| main.rs:730:30:730:30 | a | | main.rs:729:16:729:16 | A | +| main.rs:738:15:738:18 | SelfParam | | main.rs:709:5:710:14 | S2 | +| main.rs:738:45:740:9 | { ... } | | main.rs:655:5:658:5 | Wrapper | +| main.rs:738:45:740:9 | { ... } | A | main.rs:709:5:710:14 | S2 | +| main.rs:739:13:739:35 | Wrapper {...} | | main.rs:655:5:658:5 | Wrapper | +| main.rs:739:13:739:35 | Wrapper {...} | A | main.rs:709:5:710:14 | S2 | +| main.rs:739:30:739:33 | self | | main.rs:709:5:710:14 | S2 | +| main.rs:745:30:747:9 | { ... } | | main.rs:655:5:658:5 | Wrapper | +| main.rs:745:30:747:9 | { ... } | A | main.rs:709:5:710:14 | S2 | +| main.rs:746:13:746:33 | Wrapper {...} | | main.rs:655:5:658:5 | Wrapper | +| main.rs:746:13:746:33 | Wrapper {...} | A | main.rs:709:5:710:14 | S2 | +| main.rs:746:30:746:31 | S2 | | main.rs:709:5:710:14 | S2 | +| main.rs:751:22:751:26 | thing | | main.rs:751:10:751:19 | T | +| main.rs:752:9:752:13 | thing | | main.rs:751:10:751:19 | T | +| main.rs:759:21:759:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:759:21:759:25 | SelfParam | &T | main.rs:712:5:713:14 | AT | +| main.rs:759:34:761:9 | { ... } | | main.rs:712:5:713:14 | AT | +| main.rs:760:13:760:14 | AT | | main.rs:712:5:713:14 | AT | +| main.rs:763:20:763:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:763:20:763:24 | SelfParam | &T | main.rs:712:5:713:14 | AT | +| main.rs:763:43:765:9 | { ... } | | main.rs:706:5:707:13 | S | +| main.rs:764:13:764:13 | S | | main.rs:706:5:707:13 | S | +| main.rs:767:20:767:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:767:20:767:24 | SelfParam | &T | main.rs:712:5:713:14 | AT | +| main.rs:767:43:769:9 | { ... } | | main.rs:709:5:710:14 | S2 | +| main.rs:768:13:768:14 | S2 | | main.rs:709:5:710:14 | S2 | +| main.rs:773:13:773:14 | x1 | | main.rs:706:5:707:13 | S | +| main.rs:773:18:773:18 | S | | main.rs:706:5:707:13 | S | +| main.rs:775:18:775:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:775:26:775:27 | x1 | | main.rs:706:5:707:13 | S | +| main.rs:775:26:775:32 | x1.m1() | | main.rs:712:5:713:14 | AT | +| main.rs:777:13:777:14 | x2 | | main.rs:706:5:707:13 | S | +| main.rs:777:18:777:18 | S | | main.rs:706:5:707:13 | S | +| main.rs:779:13:779:13 | y | | main.rs:712:5:713:14 | AT | +| main.rs:779:17:779:18 | x2 | | main.rs:706:5:707:13 | S | +| main.rs:779:17:779:23 | x2.m2() | | main.rs:712:5:713:14 | AT | +| main.rs:780:18:780:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:780:26:780:26 | y | | main.rs:712:5:713:14 | AT | +| main.rs:782:13:782:14 | x3 | | main.rs:706:5:707:13 | S | +| main.rs:782:18:782:18 | S | | main.rs:706:5:707:13 | S | +| main.rs:784:18:784:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:784:26:784:27 | x3 | | main.rs:706:5:707:13 | S | +| main.rs:784:26:784:34 | x3.put(...) | | main.rs:655:5:658:5 | Wrapper | +| main.rs:784:26:784:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | +| main.rs:784:26:784:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | +| main.rs:784:33:784:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:787:18:787:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:787:26:787:27 | x3 | | main.rs:706:5:707:13 | S | +| main.rs:787:26:787:40 | x3.putTwo(...) | | main.rs:655:5:658:5 | Wrapper | +| main.rs:787:26:787:40 | x3.putTwo(...) | A | main.rs:726:36:726:50 | AssociatedParam | +| main.rs:787:26:787:49 | ... .unwrap() | | main.rs:726:36:726:50 | AssociatedParam | +| main.rs:787:36:787:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:787:39:787:39 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:789:20:789:20 | S | | main.rs:706:5:707:13 | S | +| main.rs:790:18:790:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:792:13:792:14 | x5 | | main.rs:709:5:710:14 | S2 | +| main.rs:792:18:792:19 | S2 | | main.rs:709:5:710:14 | S2 | +| main.rs:793:18:793:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:793:26:793:27 | x5 | | main.rs:709:5:710:14 | S2 | +| main.rs:793:26:793:32 | x5.m1() | | main.rs:655:5:658:5 | Wrapper | +| main.rs:793:26:793:32 | x5.m1() | A | main.rs:709:5:710:14 | S2 | +| main.rs:794:13:794:14 | x6 | | main.rs:709:5:710:14 | S2 | +| main.rs:794:18:794:19 | S2 | | main.rs:709:5:710:14 | S2 | +| main.rs:795:18:795:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:795:26:795:27 | x6 | | main.rs:709:5:710:14 | S2 | +| main.rs:795:26:795:32 | x6.m2() | | main.rs:655:5:658:5 | Wrapper | +| main.rs:795:26:795:32 | x6.m2() | A | main.rs:709:5:710:14 | S2 | +| main.rs:797:13:797:22 | assoc_zero | | main.rs:712:5:713:14 | AT | +| main.rs:797:26:797:27 | AT | | main.rs:712:5:713:14 | AT | +| main.rs:797:26:797:38 | AT.get_zero() | | main.rs:712:5:713:14 | AT | +| main.rs:798:13:798:21 | assoc_one | | main.rs:706:5:707:13 | S | +| main.rs:798:25:798:26 | AT | | main.rs:712:5:713:14 | AT | +| main.rs:798:25:798:36 | AT.get_one() | | main.rs:706:5:707:13 | S | +| main.rs:799:13:799:21 | assoc_two | | main.rs:709:5:710:14 | S2 | +| main.rs:799:25:799:26 | AT | | main.rs:712:5:713:14 | AT | +| main.rs:799:25:799:36 | AT.get_two() | | main.rs:709:5:710:14 | S2 | +| main.rs:816:15:816:18 | SelfParam | | main.rs:804:5:808:5 | MyEnum | +| main.rs:816:15:816:18 | SelfParam | A | main.rs:815:10:815:10 | T | +| main.rs:816:26:821:9 | { ... } | | main.rs:815:10:815:10 | T | +| main.rs:817:13:820:13 | match self { ... } | | main.rs:815:10:815:10 | T | +| main.rs:817:19:817:22 | self | | main.rs:804:5:808:5 | MyEnum | +| main.rs:817:19:817:22 | self | A | main.rs:815:10:815:10 | T | +| main.rs:818:28:818:28 | a | | main.rs:815:10:815:10 | T | +| main.rs:818:34:818:34 | a | | main.rs:815:10:815:10 | T | +| main.rs:819:30:819:30 | a | | main.rs:815:10:815:10 | T | +| main.rs:819:37:819:37 | a | | main.rs:815:10:815:10 | T | +| main.rs:825:13:825:13 | x | | main.rs:804:5:808:5 | MyEnum | +| main.rs:825:13:825:13 | x | A | main.rs:810:5:811:14 | S1 | +| main.rs:825:17:825:30 | ...::C1(...) | | main.rs:804:5:808:5 | MyEnum | +| main.rs:825:17:825:30 | ...::C1(...) | A | main.rs:810:5:811:14 | S1 | +| main.rs:825:28:825:29 | S1 | | main.rs:810:5:811:14 | S1 | +| main.rs:826:13:826:13 | y | | main.rs:804:5:808:5 | MyEnum | +| main.rs:826:13:826:13 | y | A | main.rs:812:5:813:14 | S2 | +| main.rs:826:17:826:36 | ...::C2 {...} | | main.rs:804:5:808:5 | MyEnum | +| main.rs:826:17:826:36 | ...::C2 {...} | A | main.rs:812:5:813:14 | S2 | +| main.rs:826:33:826:34 | S2 | | main.rs:812:5:813:14 | S2 | +| main.rs:828:18:828:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:828:26:828:26 | x | | main.rs:804:5:808:5 | MyEnum | +| main.rs:828:26:828:26 | x | A | main.rs:810:5:811:14 | S1 | +| main.rs:828:26:828:31 | x.m1() | | main.rs:810:5:811:14 | S1 | | 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" | | {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 | -| main.rs:832:13:832:13 | x | | main.rs:747:5:750:5 | MyThing | -| main.rs:832:13:832:13 | x | A | main.rs:757:5:758:14 | S1 | -| main.rs:832:17:832:33 | MyThing {...} | | main.rs:747:5:750:5 | MyThing | -| main.rs:832:17:832:33 | MyThing {...} | A | main.rs:757:5:758:14 | S1 | -| main.rs:832:30:832:31 | S1 | | main.rs:757:5:758:14 | S1 | -| main.rs:833:13:833:13 | y | | main.rs:747:5:750:5 | MyThing | -| main.rs:833:13:833:13 | y | A | main.rs:759:5:760:14 | S2 | -| 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" | | {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" | | {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 | -| main.rs:838:13:838:13 | x | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:838:13:838:13 | x | A | main.rs:757:5:758:14 | S1 | -| main.rs:838:17:838:34 | MyThing2 {...} | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:838:17:838:34 | MyThing2 {...} | A | main.rs:757:5:758:14 | S1 | -| main.rs:838:31:838:32 | S1 | | main.rs:757:5:758:14 | S1 | -| main.rs:839:13:839:13 | y | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:839:13:839:13 | y | A | main.rs:759:5:760:14 | S2 | -| 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" | | {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" | | {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 | -| main.rs:844:13:844:13 | x | | main.rs:747:5:750:5 | MyThing | -| main.rs:844:13:844:13 | x | A | main.rs:757:5:758:14 | S1 | -| main.rs:844:17:844:33 | MyThing {...} | | main.rs:747:5:750:5 | MyThing | -| main.rs:844:17:844:33 | MyThing {...} | A | main.rs:757:5:758:14 | S1 | -| main.rs:844:30:844:31 | S1 | | main.rs:757:5:758:14 | S1 | -| main.rs:845:13:845:13 | s | | main.rs:757:5:758:14 | S1 | -| main.rs:845:17:845:32 | call_trait_m1(...) | | main.rs:757:5:758:14 | S1 | -| main.rs:845:31:845:31 | x | | main.rs:747:5:750:5 | MyThing | -| main.rs:845:31:845:31 | x | A | main.rs:757:5:758:14 | S1 | -| main.rs:847:13:847:13 | x | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:847:13:847:13 | x | A | main.rs:759:5:760:14 | S2 | -| main.rs:847:17:847:34 | MyThing2 {...} | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:847:17:847:34 | MyThing2 {...} | A | main.rs:759:5:760:14 | S2 | -| main.rs:847:31:847:32 | S2 | | main.rs:759:5:760:14 | S2 | -| main.rs:848:13:848:13 | s | | main.rs:747:5:750:5 | MyThing | -| main.rs:848:13:848:13 | s | A | main.rs:759:5:760:14 | S2 | -| main.rs:848:17:848:32 | call_trait_m1(...) | | main.rs:747:5:750:5 | MyThing | -| main.rs:848:17:848:32 | call_trait_m1(...) | A | main.rs:759:5:760:14 | S2 | -| main.rs:848:31:848:31 | x | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:848:31:848:31 | x | A | main.rs:759:5:760:14 | S2 | -| main.rs:866:22:866:22 | x | | file://:0:0:0:0 | & | -| main.rs:866:22:866:22 | x | &T | main.rs:866:11:866:19 | T | -| main.rs:866:35:868:5 | { ... } | | file://:0:0:0:0 | & | -| main.rs:866:35:868:5 | { ... } | &T | main.rs:866:11:866:19 | T | -| main.rs:867:9:867:9 | x | | file://:0:0:0:0 | & | -| main.rs:867:9:867:9 | x | &T | main.rs:866:11:866:19 | T | -| main.rs:871:17:871:20 | SelfParam | | main.rs:856:5:857:14 | S1 | -| main.rs:871:29:873:9 | { ... } | | main.rs:859:5:860:14 | S2 | -| main.rs:872:13:872:14 | S2 | | main.rs:859:5:860:14 | S2 | -| main.rs:876:21:876:21 | x | | main.rs:876:13:876:14 | T1 | -| main.rs:879:5:881:5 | { ... } | | main.rs:876:17:876:18 | T2 | -| main.rs:880:9:880:9 | x | | main.rs:876:13:876:14 | T1 | -| 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" | | {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 | & | -| main.rs:885:29:885:30 | &x | &T | main.rs:856:5:857:14 | S1 | -| 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" | | {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 | & | -| main.rs:888:35:888:36 | &x | &T | main.rs:856:5:857:14 | S1 | -| 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" | | {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 | & | -| main.rs:891:42:891:43 | &x | &T | main.rs:856:5:857:14 | S1 | -| main.rs:891:43:891:43 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:893:13:893:13 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:893:17:893:18 | S1 | | main.rs:856:5:857:14 | S1 | -| main.rs:894:9:894:25 | into::<...>(...) | | main.rs:859:5:860:14 | S2 | -| main.rs:894:24:894:24 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:896:13:896:13 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:896:17:896:18 | S1 | | main.rs:856:5:857:14 | S1 | -| main.rs:897:13:897:13 | y | | main.rs:859:5:860:14 | S2 | -| main.rs:897:21:897:27 | into(...) | | main.rs:859:5:860:14 | S2 | -| main.rs:897:26:897:26 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:911:22:911:25 | SelfParam | | main.rs:902:5:908:5 | PairOption | -| main.rs:911:22:911:25 | SelfParam | Fst | main.rs:910:10:910:12 | Fst | -| main.rs:911:22:911:25 | SelfParam | Snd | main.rs:910:15:910:17 | Snd | -| main.rs:911:35:918:9 | { ... } | | main.rs:910:15:910:17 | Snd | -| main.rs:912:13:917:13 | match self { ... } | | main.rs:910:15:910:17 | Snd | -| main.rs:912:19:912:22 | self | | main.rs:902:5:908:5 | PairOption | -| 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... | | {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... | | {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 | -| main.rs:916:49:916:51 | snd | | main.rs:910:15:910:17 | Snd | -| main.rs:942:10:942:10 | t | | main.rs:902:5:908:5 | PairOption | -| main.rs:942:10:942:10 | t | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:942:10:942:10 | t | Snd | main.rs:902:5:908:5 | PairOption | -| main.rs:942:10:942:10 | t | Snd.Fst | main.rs:924:5:925:14 | S2 | -| main.rs:942:10:942:10 | t | Snd.Snd | main.rs:927:5:928:14 | S3 | -| main.rs:943:13:943:13 | x | | main.rs:927:5:928:14 | S3 | -| main.rs:943:17:943:17 | t | | main.rs:902:5:908:5 | PairOption | -| main.rs:943:17:943:17 | t | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:943:17:943:17 | t | Snd | main.rs:902:5:908:5 | PairOption | -| main.rs:943:17:943:17 | t | Snd.Fst | main.rs:924:5:925:14 | S2 | -| main.rs:943:17:943:17 | t | Snd.Snd | main.rs:927:5:928:14 | S3 | -| main.rs:943:17:943:29 | t.unwrapSnd() | | main.rs:902:5:908:5 | PairOption | -| 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" | | {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 | -| main.rs:949:13:949:14 | p1 | Snd | main.rs:924:5:925:14 | S2 | -| main.rs:949:26:949:53 | ...::PairBoth(...) | | main.rs:902:5:908:5 | PairOption | -| main.rs:949:26:949:53 | ...::PairBoth(...) | Fst | main.rs:921:5:922:14 | S1 | -| 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" | | {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 | -| main.rs:953:13:953:14 | p2 | | main.rs:902:5:908:5 | PairOption | -| main.rs:953:13:953:14 | p2 | Fst | main.rs:921:5:922:14 | S1 | -| main.rs:953:13:953:14 | p2 | Snd | main.rs:924:5:925:14 | S2 | -| 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" | | {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 | -| main.rs:957:13:957:14 | p3 | | main.rs:902:5:908:5 | PairOption | -| main.rs:957:13:957:14 | p3 | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:957:13:957:14 | p3 | Snd | main.rs:927:5:928:14 | S3 | -| main.rs:957:34:957:56 | ...::PairSnd(...) | | main.rs:902:5:908:5 | PairOption | -| 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" | | {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 | -| main.rs:961:13:961:14 | p3 | | main.rs:902:5:908:5 | PairOption | -| main.rs:961:13:961:14 | p3 | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:961:13:961:14 | p3 | Snd | main.rs:927:5:928:14 | S3 | -| 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" | | {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 | -| main.rs:964:11:964:54 | ...::PairSnd(...) | | main.rs:902:5:908:5 | PairOption | -| main.rs:964:11:964:54 | ...::PairSnd(...) | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:964:11:964:54 | ...::PairSnd(...) | Snd | main.rs:902:5:908:5 | PairOption | -| main.rs:964:11:964:54 | ...::PairSnd(...) | Snd.Fst | main.rs:924:5:925:14 | S2 | -| main.rs:964:11:964:54 | ...::PairSnd(...) | Snd.Snd | main.rs:927:5:928:14 | S3 | -| main.rs:964:31:964:53 | ...::PairSnd(...) | | main.rs:902:5:908:5 | PairOption | -| main.rs:964:31:964:53 | ...::PairSnd(...) | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:964:31:964:53 | ...::PairSnd(...) | Snd | main.rs:927:5:928:14 | S3 | -| main.rs:964:51:964:52 | S3 | | main.rs:927:5:928:14 | S3 | -| main.rs:977:16:977:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:977:16:977:24 | SelfParam | &T | main.rs:975:5:982:5 | Self [trait MyTrait] | -| main.rs:977:27:977:31 | value | | main.rs:975:19:975:19 | S | -| main.rs:979:21:979:29 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:979:21:979:29 | SelfParam | &T | main.rs:975:5:982:5 | Self [trait MyTrait] | -| main.rs:979:32:979:36 | value | | main.rs:975:19:975:19 | S | -| main.rs:980:13:980:16 | self | | file://:0:0:0:0 | & | -| main.rs:980:13:980:16 | self | &T | main.rs:975:5:982:5 | Self [trait MyTrait] | -| main.rs:980:22:980:26 | value | | main.rs:975:19:975:19 | S | -| main.rs:986:16:986:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:986:16:986:24 | SelfParam | &T | main.rs:969:5:973:5 | MyOption | -| main.rs:986:16:986:24 | SelfParam | &T.T | main.rs:984:10:984:10 | T | -| main.rs:986:27:986:31 | value | | main.rs:984:10:984:10 | T | -| main.rs:990:26:992:9 | { ... } | | main.rs:969:5:973:5 | MyOption | -| main.rs:990:26:992:9 | { ... } | T | main.rs:989:10:989:10 | T | -| main.rs:991:13:991:30 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:991:13:991:30 | ...::MyNone(...) | T | main.rs:989:10:989:10 | T | -| main.rs:996:20:996:23 | SelfParam | | main.rs:969:5:973:5 | MyOption | -| main.rs:996:20:996:23 | SelfParam | T | main.rs:969:5:973:5 | MyOption | -| main.rs:996:20:996:23 | SelfParam | T.T | main.rs:995:10:995:10 | T | -| main.rs:996:41:1001:9 | { ... } | | main.rs:969:5:973:5 | MyOption | -| main.rs:996:41:1001:9 | { ... } | T | main.rs:995:10:995:10 | T | -| main.rs:997:13:1000:13 | match self { ... } | | main.rs:969:5:973:5 | MyOption | -| main.rs:997:13:1000:13 | match self { ... } | T | main.rs:995:10:995:10 | T | -| main.rs:997:19:997:22 | self | | main.rs:969:5:973:5 | MyOption | -| main.rs:997:19:997:22 | self | T | main.rs:969:5:973:5 | MyOption | -| main.rs:997:19:997:22 | self | T.T | main.rs:995:10:995:10 | T | -| main.rs:998:39:998:56 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:998:39:998:56 | ...::MyNone(...) | T | main.rs:995:10:995:10 | T | -| main.rs:999:34:999:34 | x | | main.rs:969:5:973:5 | MyOption | -| main.rs:999:34:999:34 | x | T | main.rs:995:10:995:10 | T | -| main.rs:999:40:999:40 | x | | main.rs:969:5:973:5 | MyOption | -| 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" | | {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 | -| main.rs:1011:22:1011:36 | ...::new(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1011:22:1011:36 | ...::new(...) | T | main.rs:1004:5:1005:13 | S | -| 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" | | {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" | | {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 | -| main.rs:1019:22:1019:36 | ...::new(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1019:22:1019:36 | ...::new(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1020:23:1020:29 | &mut x4 | | file://:0:0:0:0 | & | -| main.rs:1020:23:1020:29 | &mut x4 | &T | main.rs:969:5:973:5 | MyOption | -| main.rs:1020:23:1020:29 | &mut x4 | &T.T | main.rs:1004:5:1005:13 | S | -| 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" | | {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 | -| main.rs:1023:13:1023:14 | x5 | T | main.rs:969:5:973:5 | MyOption | -| main.rs:1023:13:1023:14 | x5 | T.T | main.rs:1004:5:1005:13 | S | -| main.rs:1023:18:1023:58 | ...::MySome(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1023:18:1023:58 | ...::MySome(...) | T | main.rs:969:5:973:5 | MyOption | -| 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" | | {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 | -| main.rs:1024:26:1024:37 | x5.flatten() | | main.rs:969:5:973:5 | MyOption | -| main.rs:1024:26:1024:37 | x5.flatten() | T | main.rs:1004:5:1005:13 | S | -| main.rs:1026:13:1026:14 | x6 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1026:13:1026:14 | x6 | T | main.rs:969:5:973:5 | MyOption | -| main.rs:1026:13:1026:14 | x6 | T.T | main.rs:1004:5:1005:13 | S | -| main.rs:1026:18:1026:58 | ...::MySome(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1026:18:1026:58 | ...::MySome(...) | T | main.rs:969:5:973:5 | MyOption | -| 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" | | {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 | -| main.rs:1027:59:1027:60 | x6 | T | main.rs:969:5:973:5 | MyOption | -| main.rs:1027:59:1027:60 | x6 | T.T | main.rs:1004:5:1005:13 | S | -| main.rs:1030:13:1030:19 | from_if | | main.rs:969:5:973:5 | MyOption | -| 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 | | {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 | -| main.rs:1031:13:1031:30 | ...::MyNone(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1032:16:1034:9 | { ... } | | main.rs:969:5:973:5 | MyOption | -| main.rs:1032:16:1034:9 | { ... } | T | main.rs:1004:5:1005:13 | S | -| 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" | | {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 | | {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 | | {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" | | {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 | | {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" | | {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 | -| main.rs:1064:15:1064:18 | SelfParam | T | main.rs:1063:10:1063:10 | T | -| main.rs:1064:26:1066:9 | { ... } | | main.rs:1063:10:1063:10 | T | -| main.rs:1065:13:1065:16 | self | | main.rs:1057:5:1058:19 | S | -| main.rs:1065:13:1065:16 | self | T | main.rs:1063:10:1063:10 | T | -| main.rs:1065:13:1065:18 | self.0 | | main.rs:1063:10:1063:10 | T | -| main.rs:1068:15:1068:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1068:15:1068:19 | SelfParam | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1068:15:1068:19 | SelfParam | &T.T | main.rs:1063:10:1063:10 | T | -| main.rs:1068:28:1070:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1068:28:1070:9 | { ... } | &T | main.rs:1063:10:1063:10 | T | -| main.rs:1069:13:1069:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1069:13:1069:19 | &... | &T | main.rs:1063:10:1063:10 | T | -| main.rs:1069:14:1069:17 | self | | file://:0:0:0:0 | & | -| main.rs:1069:14:1069:17 | self | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1069:14:1069:17 | self | &T.T | main.rs:1063:10:1063:10 | T | -| main.rs:1069:14:1069:19 | self.0 | | main.rs:1063:10:1063:10 | T | -| main.rs:1072:15:1072:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1072:15:1072:25 | SelfParam | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1072:15:1072:25 | SelfParam | &T.T | main.rs:1063:10:1063:10 | T | -| main.rs:1072:34:1074:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1072:34:1074:9 | { ... } | &T | main.rs:1063:10:1063:10 | T | -| main.rs:1073:13:1073:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1073:13:1073:19 | &... | &T | main.rs:1063:10:1063:10 | T | -| main.rs:1073:14:1073:17 | self | | file://:0:0:0:0 | & | -| main.rs:1073:14:1073:17 | self | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1073:14:1073:17 | self | &T.T | main.rs:1063:10:1063:10 | T | -| main.rs:1073:14:1073:19 | self.0 | | main.rs:1063:10:1063:10 | T | -| main.rs:1078:13:1078:14 | x1 | | main.rs:1057:5:1058:19 | S | -| main.rs:1078:13:1078:14 | x1 | T | main.rs:1060:5:1061:14 | S2 | -| 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" | | {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 | -| main.rs:1081:13:1081:14 | x2 | | main.rs:1057:5:1058:19 | S | -| main.rs:1081:13:1081:14 | x2 | T | main.rs:1060:5:1061:14 | S2 | -| 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" | | {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" | | {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 | & | -| main.rs:1084:26:1084:32 | x2.m3() | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1086:13:1086:14 | x3 | | main.rs:1057:5:1058:19 | S | -| main.rs:1086:13:1086:14 | x3 | T | main.rs:1060:5:1061:14 | S2 | -| 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" | | {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 | & | -| main.rs:1088:38:1088:40 | &x3 | &T | main.rs:1057:5:1058:19 | S | -| 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" | | {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 | & | -| main.rs:1089:38:1089:40 | &x3 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1089:38:1089:40 | &x3 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1089:39:1089:40 | x3 | | main.rs:1057:5:1058:19 | S | -| main.rs:1089:39:1089:40 | x3 | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1091:13:1091:14 | x4 | | file://:0:0:0:0 | & | -| main.rs:1091:13:1091:14 | x4 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1091:13:1091:14 | x4 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1091:18:1091:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1091:18:1091:23 | &... | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1091:18:1091:23 | &... | &T.T | main.rs:1060:5:1061:14 | S2 | -| 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" | | {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" | | {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 | -| main.rs:1094:26:1094:32 | x4.m3() | | file://:0:0:0:0 | & | -| main.rs:1094:26:1094:32 | x4.m3() | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1096:13:1096:14 | x5 | | file://:0:0:0:0 | & | -| main.rs:1096:13:1096:14 | x5 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1096:13:1096:14 | x5 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1096:18:1096:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1096:18:1096:23 | &... | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1096:18:1096:23 | &... | &T.T | main.rs:1060:5:1061:14 | S2 | -| 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" | | {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" | | {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 | -| main.rs:1099:26:1099:29 | x5.0 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1101:13:1101:14 | x6 | | file://:0:0:0:0 | & | -| main.rs:1101:13:1101:14 | x6 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1101:13:1101:14 | x6 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1101:18:1101:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1101:18:1101:23 | &... | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1101:18:1101:23 | &... | &T.T | main.rs:1060:5:1061:14 | S2 | -| 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" | | {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 | -| main.rs:1103:27:1103:29 | * ... | | main.rs:1057:5:1058:19 | S | -| main.rs:1103:27:1103:29 | * ... | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1103:28:1103:29 | x6 | | file://:0:0:0:0 | & | -| main.rs:1103:28:1103:29 | x6 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1103:28:1103:29 | x6 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1105:13:1105:14 | x7 | | main.rs:1057:5:1058:19 | S | -| main.rs:1105:13:1105:14 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1105:13:1105:14 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1105:18:1105:23 | S(...) | | main.rs:1057:5:1058:19 | S | -| main.rs:1105:18:1105:23 | S(...) | T | file://:0:0:0:0 | & | -| main.rs:1105:18:1105:23 | S(...) | T.&T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1105:20:1105:22 | &S2 | | file://:0:0:0:0 | & | -| main.rs:1105:20:1105:22 | &S2 | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1105:21:1105:22 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1108:13:1108:13 | t | | file://:0:0:0:0 | & | -| main.rs:1108:13:1108:13 | t | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1108:17:1108:18 | x7 | | main.rs:1057:5:1058:19 | S | -| main.rs:1108:17:1108:18 | x7 | T | file://:0:0:0:0 | & | -| 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" | | {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 | -| main.rs:1116:16:1116:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1116:16:1116:20 | SelfParam | &T | main.rs:1114:5:1122:5 | Self [trait MyTrait] | -| main.rs:1119:16:1119:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1119:16:1119:20 | SelfParam | &T | main.rs:1114:5:1122:5 | Self [trait MyTrait] | -| main.rs:1119:32:1121:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1119:32:1121:9 | { ... } | &T | main.rs:1114:5:1122:5 | Self [trait MyTrait] | -| main.rs:1120:13:1120:16 | self | | file://:0:0:0:0 | & | -| main.rs:1120:13:1120:16 | self | &T | main.rs:1114:5:1122:5 | Self [trait MyTrait] | -| main.rs:1120:13:1120:22 | self.foo() | | file://:0:0:0:0 | & | -| main.rs:1120:13:1120:22 | self.foo() | &T | main.rs:1114:5:1122:5 | Self [trait MyTrait] | -| main.rs:1128:16:1128:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1128:16:1128:20 | SelfParam | &T | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1128:36:1130:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1128:36:1130:9 | { ... } | &T | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1129:13:1129:16 | self | | file://:0:0:0:0 | & | -| main.rs:1129:13:1129:16 | self | &T | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1134:13:1134:13 | x | | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1134:17:1134:24 | MyStruct | | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1135:9:1135:9 | x | | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1135:9:1135:15 | x.bar() | | file://:0:0:0:0 | & | -| main.rs:1135:9:1135:15 | x.bar() | &T | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1145:16:1145:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1145:16:1145:20 | SelfParam | &T | main.rs:1142:5:1142:26 | MyStruct | -| main.rs:1145:16:1145:20 | SelfParam | &T.T | main.rs:1144:10:1144:10 | T | -| main.rs:1145:32:1147:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1145:32:1147:9 | { ... } | &T | main.rs:1142:5:1142:26 | MyStruct | -| main.rs:1145:32:1147:9 | { ... } | &T.T | main.rs:1144:10:1144:10 | T | -| main.rs:1146:13:1146:16 | self | | file://:0:0:0:0 | & | -| main.rs:1146:13:1146:16 | self | &T | main.rs:1142:5:1142:26 | MyStruct | -| main.rs:1146:13:1146:16 | self | &T.T | main.rs:1144:10:1144:10 | T | -| main.rs:1151:13:1151:13 | x | | main.rs:1142:5:1142:26 | MyStruct | -| main.rs:1151:13:1151:13 | x | T | main.rs:1140:5:1140:13 | S | -| main.rs:1151:17:1151:27 | MyStruct(...) | | main.rs:1142:5:1142:26 | MyStruct | -| main.rs:1151:17:1151:27 | MyStruct(...) | T | main.rs:1140:5:1140:13 | S | -| main.rs:1151:26:1151:26 | S | | main.rs:1140:5:1140:13 | S | -| main.rs:1152:9:1152:9 | x | | main.rs:1142:5:1142:26 | MyStruct | -| main.rs:1152:9:1152:9 | x | T | main.rs:1140:5:1140:13 | S | -| 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:829:26:829:26 | y | | main.rs:804:5:808:5 | MyEnum | +| main.rs:829:26:829:26 | y | A | main.rs:812:5:813:14 | S2 | +| main.rs:829:26:829:31 | y.m1() | | main.rs:812:5:813:14 | S2 | +| main.rs:851:15:851:18 | SelfParam | | main.rs:849:5:852:5 | Self [trait MyTrait1] | +| main.rs:856:15:856:18 | SelfParam | | main.rs:854:5:866:5 | Self [trait MyTrait2] | +| main.rs:859:9:865:9 | { ... } | | main.rs:854:20:854:22 | Tr2 | +| main.rs:860:13:864:13 | if ... {...} else {...} | | main.rs:854:20:854:22 | Tr2 | +| main.rs:860:16:860:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:860:16:860:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:860:20:860:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:860:22:862:13 | { ... } | | main.rs:854:20:854:22 | Tr2 | +| main.rs:861:17:861:20 | self | | main.rs:854:5:866:5 | Self [trait MyTrait2] | +| main.rs:861:17:861:25 | self.m1() | | main.rs:854:20:854:22 | Tr2 | +| main.rs:862:20:864:13 | { ... } | | main.rs:854:20:854:22 | Tr2 | +| main.rs:863:17:863:30 | ...::m1(...) | | main.rs:854:20:854:22 | Tr2 | +| main.rs:863:26:863:29 | self | | main.rs:854:5:866:5 | Self [trait MyTrait2] | +| main.rs:870:15:870:18 | SelfParam | | main.rs:868:5:880:5 | Self [trait MyTrait3] | +| main.rs:873:9:879:9 | { ... } | | main.rs:868:20:868:22 | Tr3 | +| main.rs:874:13:878:13 | if ... {...} else {...} | | main.rs:868:20:868:22 | Tr3 | +| main.rs:874:16:874:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:874:16:874:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:874:20:874:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:874:22:876:13 | { ... } | | main.rs:868:20:868:22 | Tr3 | +| main.rs:875:17:875:20 | self | | main.rs:868:5:880:5 | Self [trait MyTrait3] | +| main.rs:875:17:875:25 | self.m2() | | main.rs:834:5:837:5 | MyThing | +| main.rs:875:17:875:25 | self.m2() | A | main.rs:868:20:868:22 | Tr3 | +| main.rs:875:17:875:27 | ... .a | | main.rs:868:20:868:22 | Tr3 | +| main.rs:876:20:878:13 | { ... } | | main.rs:868:20:868:22 | Tr3 | +| main.rs:877:17:877:30 | ...::m2(...) | | main.rs:834:5:837:5 | MyThing | +| main.rs:877:17:877:30 | ...::m2(...) | A | main.rs:868:20:868:22 | Tr3 | +| main.rs:877:17:877:32 | ... .a | | main.rs:868:20:868:22 | Tr3 | +| main.rs:877:26:877:29 | self | | main.rs:868:5:880:5 | Self [trait MyTrait3] | +| main.rs:884:15:884:18 | SelfParam | | main.rs:834:5:837:5 | MyThing | +| main.rs:884:15:884:18 | SelfParam | A | main.rs:882:10:882:10 | T | +| main.rs:884:26:886:9 | { ... } | | main.rs:882:10:882:10 | T | +| main.rs:885:13:885:16 | self | | main.rs:834:5:837:5 | MyThing | +| main.rs:885:13:885:16 | self | A | main.rs:882:10:882:10 | T | +| main.rs:885:13:885:18 | self.a | | main.rs:882:10:882:10 | T | +| main.rs:893:15:893:18 | SelfParam | | main.rs:839:5:842:5 | MyThing2 | +| main.rs:893:15:893:18 | SelfParam | A | main.rs:891:10:891:10 | T | +| main.rs:893:35:895:9 | { ... } | | main.rs:834:5:837:5 | MyThing | +| main.rs:893:35:895:9 | { ... } | A | main.rs:891:10:891:10 | T | +| main.rs:894:13:894:33 | MyThing {...} | | main.rs:834:5:837:5 | MyThing | +| main.rs:894:13:894:33 | MyThing {...} | A | main.rs:891:10:891:10 | T | +| main.rs:894:26:894:29 | self | | main.rs:839:5:842:5 | MyThing2 | +| main.rs:894:26:894:29 | self | A | main.rs:891:10:891:10 | T | +| main.rs:894:26:894:31 | self.a | | main.rs:891:10:891:10 | T | +| main.rs:902:44:902:44 | x | | main.rs:902:26:902:41 | T2 | +| main.rs:902:57:904:5 | { ... } | | main.rs:902:22:902:23 | T1 | +| main.rs:903:9:903:9 | x | | main.rs:902:26:902:41 | T2 | +| main.rs:903:9:903:14 | x.m1() | | main.rs:902:22:902:23 | T1 | +| main.rs:906:56:906:56 | x | | main.rs:906:39:906:53 | T | +| main.rs:908:13:908:13 | a | | main.rs:834:5:837:5 | MyThing | +| main.rs:908:13:908:13 | a | A | main.rs:844:5:845:14 | S1 | +| main.rs:908:17:908:17 | x | | main.rs:906:39:906:53 | T | +| main.rs:908:17:908:22 | x.m1() | | main.rs:834:5:837:5 | MyThing | +| main.rs:908:17:908:22 | x.m1() | A | main.rs:844:5:845:14 | S1 | +| main.rs:909:18:909:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:909:26:909:26 | a | | main.rs:834:5:837:5 | MyThing | +| main.rs:909:26:909:26 | a | A | main.rs:844:5:845:14 | S1 | +| main.rs:913:13:913:13 | x | | main.rs:834:5:837:5 | MyThing | +| main.rs:913:13:913:13 | x | A | main.rs:844:5:845:14 | S1 | +| main.rs:913:17:913:33 | MyThing {...} | | main.rs:834:5:837:5 | MyThing | +| main.rs:913:17:913:33 | MyThing {...} | A | main.rs:844:5:845:14 | S1 | +| main.rs:913:30:913:31 | S1 | | main.rs:844:5:845:14 | S1 | +| main.rs:914:13:914:13 | y | | main.rs:834:5:837:5 | MyThing | +| main.rs:914:13:914:13 | y | A | main.rs:846:5:847:14 | S2 | +| main.rs:914:17:914:33 | MyThing {...} | | main.rs:834:5:837:5 | MyThing | +| main.rs:914:17:914:33 | MyThing {...} | A | main.rs:846:5:847:14 | S2 | +| main.rs:914:30:914:31 | S2 | | main.rs:846:5:847:14 | S2 | +| main.rs:916:18:916:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:916:26:916:26 | x | | main.rs:834:5:837:5 | MyThing | +| main.rs:916:26:916:26 | x | A | main.rs:844:5:845:14 | S1 | +| main.rs:916:26:916:31 | x.m1() | | main.rs:844:5:845:14 | S1 | +| main.rs:917:18:917:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:917:26:917:26 | y | | main.rs:834:5:837:5 | MyThing | +| main.rs:917:26:917:26 | y | A | main.rs:846:5:847:14 | S2 | +| main.rs:917:26:917:31 | y.m1() | | main.rs:846:5:847:14 | S2 | +| main.rs:919:13:919:13 | x | | main.rs:834:5:837:5 | MyThing | +| main.rs:919:13:919:13 | x | A | main.rs:844:5:845:14 | S1 | +| main.rs:919:17:919:33 | MyThing {...} | | main.rs:834:5:837:5 | MyThing | +| main.rs:919:17:919:33 | MyThing {...} | A | main.rs:844:5:845:14 | S1 | +| main.rs:919:30:919:31 | S1 | | main.rs:844:5:845:14 | S1 | +| main.rs:920:13:920:13 | y | | main.rs:834:5:837:5 | MyThing | +| main.rs:920:13:920:13 | y | A | main.rs:846:5:847:14 | S2 | +| main.rs:920:17:920:33 | MyThing {...} | | main.rs:834:5:837:5 | MyThing | +| main.rs:920:17:920:33 | MyThing {...} | A | main.rs:846:5:847:14 | S2 | +| main.rs:920:30:920:31 | S2 | | main.rs:846:5:847:14 | S2 | +| main.rs:922:18:922:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:922:26:922:26 | x | | main.rs:834:5:837:5 | MyThing | +| main.rs:922:26:922:26 | x | A | main.rs:844:5:845:14 | S1 | +| main.rs:922:26:922:31 | x.m2() | | main.rs:844:5:845:14 | S1 | +| main.rs:923:18:923:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:923:26:923:26 | y | | main.rs:834:5:837:5 | MyThing | +| main.rs:923:26:923:26 | y | A | main.rs:846:5:847:14 | S2 | +| main.rs:923:26:923:31 | y.m2() | | main.rs:846:5:847:14 | S2 | +| main.rs:925:13:925:13 | x | | main.rs:839:5:842:5 | MyThing2 | +| main.rs:925:13:925:13 | x | A | main.rs:844:5:845:14 | S1 | +| main.rs:925:17:925:34 | MyThing2 {...} | | main.rs:839:5:842:5 | MyThing2 | +| main.rs:925:17:925:34 | MyThing2 {...} | A | main.rs:844:5:845:14 | S1 | +| main.rs:925:31:925:32 | S1 | | main.rs:844:5:845:14 | S1 | +| main.rs:926:13:926:13 | y | | main.rs:839:5:842:5 | MyThing2 | +| main.rs:926:13:926:13 | y | A | main.rs:846:5:847:14 | S2 | +| main.rs:926:17:926:34 | MyThing2 {...} | | main.rs:839:5:842:5 | MyThing2 | +| main.rs:926:17:926:34 | MyThing2 {...} | A | main.rs:846:5:847:14 | S2 | +| main.rs:926:31:926:32 | S2 | | main.rs:846:5:847:14 | S2 | +| main.rs:928:18:928:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:928:26:928:26 | x | | main.rs:839:5:842:5 | MyThing2 | +| main.rs:928:26:928:26 | x | A | main.rs:844:5:845:14 | S1 | +| main.rs:928:26:928:31 | x.m3() | | main.rs:844:5:845:14 | S1 | +| main.rs:929:18:929:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:929:26:929:26 | y | | main.rs:839:5:842:5 | MyThing2 | +| main.rs:929:26:929:26 | y | A | main.rs:846:5:847:14 | S2 | +| main.rs:929:26:929:31 | y.m3() | | main.rs:846:5:847:14 | S2 | +| main.rs:931:13:931:13 | x | | main.rs:834:5:837:5 | MyThing | +| main.rs:931:13:931:13 | x | A | main.rs:844:5:845:14 | S1 | +| main.rs:931:17:931:33 | MyThing {...} | | main.rs:834:5:837:5 | MyThing | +| main.rs:931:17:931:33 | MyThing {...} | A | main.rs:844:5:845:14 | S1 | +| main.rs:931:30:931:31 | S1 | | main.rs:844:5:845:14 | S1 | +| main.rs:932:13:932:13 | s | | main.rs:844:5:845:14 | S1 | +| main.rs:932:17:932:32 | call_trait_m1(...) | | main.rs:844:5:845:14 | S1 | +| main.rs:932:31:932:31 | x | | main.rs:834:5:837:5 | MyThing | +| main.rs:932:31:932:31 | x | A | main.rs:844:5:845:14 | S1 | +| main.rs:934:13:934:13 | x | | main.rs:839:5:842:5 | MyThing2 | +| main.rs:934:13:934:13 | x | A | main.rs:846:5:847:14 | S2 | +| main.rs:934:17:934:34 | MyThing2 {...} | | main.rs:839:5:842:5 | MyThing2 | +| main.rs:934:17:934:34 | MyThing2 {...} | A | main.rs:846:5:847:14 | S2 | +| main.rs:934:31:934:32 | S2 | | main.rs:846:5:847:14 | S2 | +| main.rs:935:13:935:13 | s | | main.rs:834:5:837:5 | MyThing | +| main.rs:935:13:935:13 | s | A | main.rs:846:5:847:14 | S2 | +| main.rs:935:17:935:32 | call_trait_m1(...) | | main.rs:834:5:837:5 | MyThing | +| main.rs:935:17:935:32 | call_trait_m1(...) | A | main.rs:846:5:847:14 | S2 | +| main.rs:935:31:935:31 | x | | main.rs:839:5:842:5 | MyThing2 | +| main.rs:935:31:935:31 | x | A | main.rs:846:5:847:14 | S2 | +| main.rs:953:22:953:22 | x | | file://:0:0:0:0 | & | +| main.rs:953:22:953:22 | x | &T | main.rs:953:11:953:19 | T | +| main.rs:953:35:955:5 | { ... } | | file://:0:0:0:0 | & | +| main.rs:953:35:955:5 | { ... } | &T | main.rs:953:11:953:19 | T | +| main.rs:954:9:954:9 | x | | file://:0:0:0:0 | & | +| main.rs:954:9:954:9 | x | &T | main.rs:953:11:953:19 | T | +| main.rs:958:17:958:20 | SelfParam | | main.rs:943:5:944:14 | S1 | +| main.rs:958:29:960:9 | { ... } | | main.rs:946:5:947:14 | S2 | +| main.rs:959:13:959:14 | S2 | | main.rs:946:5:947:14 | S2 | +| main.rs:963:21:963:21 | x | | main.rs:963:13:963:14 | T1 | +| main.rs:966:5:968:5 | { ... } | | main.rs:963:17:963:18 | T2 | +| main.rs:967:9:967:9 | x | | main.rs:963:13:963:14 | T1 | +| main.rs:967:9:967:16 | x.into() | | main.rs:963:17:963:18 | T2 | +| main.rs:971:13:971:13 | x | | main.rs:943:5:944:14 | S1 | +| main.rs:971:17:971:18 | S1 | | main.rs:943:5:944:14 | S1 | +| main.rs:972:18:972:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:972:26:972:31 | id(...) | | file://:0:0:0:0 | & | +| main.rs:972:26:972:31 | id(...) | &T | main.rs:943:5:944:14 | S1 | +| main.rs:972:29:972:30 | &x | | file://:0:0:0:0 | & | +| main.rs:972:29:972:30 | &x | &T | main.rs:943:5:944:14 | S1 | +| main.rs:972:30:972:30 | x | | main.rs:943:5:944:14 | S1 | +| main.rs:974:13:974:13 | x | | main.rs:943:5:944:14 | S1 | +| main.rs:974:17:974:18 | S1 | | main.rs:943:5:944:14 | S1 | +| main.rs:975:18:975:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:975:26:975:37 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:975:26:975:37 | id::<...>(...) | &T | main.rs:943:5:944:14 | S1 | +| main.rs:975:35:975:36 | &x | | file://:0:0:0:0 | & | +| main.rs:975:35:975:36 | &x | &T | main.rs:943:5:944:14 | S1 | +| main.rs:975:36:975:36 | x | | main.rs:943:5:944:14 | S1 | +| main.rs:977:13:977:13 | x | | main.rs:943:5:944:14 | S1 | +| main.rs:977:17:977:18 | S1 | | main.rs:943:5:944:14 | S1 | +| main.rs:978:18:978:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:978:26:978:44 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:978:26:978:44 | id::<...>(...) | &T | main.rs:943:5:944:14 | S1 | +| main.rs:978:42:978:43 | &x | | file://:0:0:0:0 | & | +| main.rs:978:42:978:43 | &x | &T | main.rs:943:5:944:14 | S1 | +| main.rs:978:43:978:43 | x | | main.rs:943:5:944:14 | S1 | +| main.rs:980:13:980:13 | x | | main.rs:943:5:944:14 | S1 | +| main.rs:980:17:980:18 | S1 | | main.rs:943:5:944:14 | S1 | +| main.rs:981:9:981:25 | into::<...>(...) | | main.rs:946:5:947:14 | S2 | +| main.rs:981:24:981:24 | x | | main.rs:943:5:944:14 | S1 | +| main.rs:983:13:983:13 | x | | main.rs:943:5:944:14 | S1 | +| main.rs:983:17:983:18 | S1 | | main.rs:943:5:944:14 | S1 | +| main.rs:984:13:984:13 | y | | main.rs:946:5:947:14 | S2 | +| main.rs:984:21:984:27 | into(...) | | main.rs:946:5:947:14 | S2 | +| main.rs:984:26:984:26 | x | | main.rs:943:5:944:14 | S1 | +| main.rs:998:22:998:25 | SelfParam | | main.rs:989:5:995:5 | PairOption | +| main.rs:998:22:998:25 | SelfParam | Fst | main.rs:997:10:997:12 | Fst | +| main.rs:998:22:998:25 | SelfParam | Snd | main.rs:997:15:997:17 | Snd | +| main.rs:998:35:1005:9 | { ... } | | main.rs:997:15:997:17 | Snd | +| main.rs:999:13:1004:13 | match self { ... } | | main.rs:997:15:997:17 | Snd | +| main.rs:999:19:999:22 | self | | main.rs:989:5:995:5 | PairOption | +| main.rs:999:19:999:22 | self | Fst | main.rs:997:10:997:12 | Fst | +| main.rs:999:19:999:22 | self | Snd | main.rs:997:15:997:17 | Snd | +| main.rs:1000:43:1000:82 | MacroExpr | | main.rs:997:15:997:17 | Snd | +| main.rs:1000:50:1000:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | str | +| main.rs:1000:50:1000:81 | MacroExpr | | main.rs:997:15:997:17 | Snd | +| main.rs:1000:50:1000:81 | { ... } | | main.rs:997:15:997:17 | Snd | +| main.rs:1001:43:1001:81 | MacroExpr | | main.rs:997:15:997:17 | Snd | +| main.rs:1001:50:1001:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | str | +| main.rs:1001:50:1001:80 | MacroExpr | | main.rs:997:15:997:17 | Snd | +| main.rs:1001:50:1001:80 | { ... } | | main.rs:997:15:997:17 | Snd | +| main.rs:1002:37:1002:39 | snd | | main.rs:997:15:997:17 | Snd | +| main.rs:1002:45:1002:47 | snd | | main.rs:997:15:997:17 | Snd | +| main.rs:1003:41:1003:43 | snd | | main.rs:997:15:997:17 | Snd | +| main.rs:1003:49:1003:51 | snd | | main.rs:997:15:997:17 | Snd | +| main.rs:1029:10:1029:10 | t | | main.rs:989:5:995:5 | PairOption | +| main.rs:1029:10:1029:10 | t | Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1029:10:1029:10 | t | Snd | main.rs:989:5:995:5 | PairOption | +| main.rs:1029:10:1029:10 | t | Snd.Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1029:10:1029:10 | t | Snd.Snd | main.rs:1014:5:1015:14 | S3 | +| main.rs:1030:13:1030:13 | x | | main.rs:1014:5:1015:14 | S3 | +| main.rs:1030:17:1030:17 | t | | main.rs:989:5:995:5 | PairOption | +| main.rs:1030:17:1030:17 | t | Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1030:17:1030:17 | t | Snd | main.rs:989:5:995:5 | PairOption | +| main.rs:1030:17:1030:17 | t | Snd.Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1030:17:1030:17 | t | Snd.Snd | main.rs:1014:5:1015:14 | S3 | +| main.rs:1030:17:1030:29 | t.unwrapSnd() | | main.rs:989:5:995:5 | PairOption | +| main.rs:1030:17:1030:29 | t.unwrapSnd() | Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1030:17:1030:29 | t.unwrapSnd() | Snd | main.rs:1014:5:1015:14 | S3 | +| main.rs:1030:17:1030:41 | ... .unwrapSnd() | | main.rs:1014:5:1015:14 | S3 | +| main.rs:1031:18:1031:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1031:26:1031:26 | x | | main.rs:1014:5:1015:14 | S3 | +| main.rs:1036:13:1036:14 | p1 | | main.rs:989:5:995:5 | PairOption | +| main.rs:1036:13:1036:14 | p1 | Fst | main.rs:1008:5:1009:14 | S1 | +| main.rs:1036:13:1036:14 | p1 | Snd | main.rs:1011:5:1012:14 | S2 | +| main.rs:1036:26:1036:53 | ...::PairBoth(...) | | main.rs:989:5:995:5 | PairOption | +| main.rs:1036:26:1036:53 | ...::PairBoth(...) | Fst | main.rs:1008:5:1009:14 | S1 | +| main.rs:1036:26:1036:53 | ...::PairBoth(...) | Snd | main.rs:1011:5:1012:14 | S2 | +| main.rs:1036:47:1036:48 | S1 | | main.rs:1008:5:1009:14 | S1 | +| main.rs:1036:51:1036:52 | S2 | | main.rs:1011:5:1012:14 | S2 | +| main.rs:1037:18:1037:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1037:26:1037:27 | p1 | | main.rs:989:5:995:5 | PairOption | +| main.rs:1037:26:1037:27 | p1 | Fst | main.rs:1008:5:1009:14 | S1 | +| main.rs:1037:26:1037:27 | p1 | Snd | main.rs:1011:5:1012:14 | S2 | +| main.rs:1040:13:1040:14 | p2 | | main.rs:989:5:995:5 | PairOption | +| main.rs:1040:13:1040:14 | p2 | Fst | main.rs:1008:5:1009:14 | S1 | +| main.rs:1040:13:1040:14 | p2 | Snd | main.rs:1011:5:1012:14 | S2 | +| main.rs:1040:26:1040:47 | ...::PairNone(...) | | main.rs:989:5:995:5 | PairOption | +| main.rs:1040:26:1040:47 | ...::PairNone(...) | Fst | main.rs:1008:5:1009:14 | S1 | +| main.rs:1040:26:1040:47 | ...::PairNone(...) | Snd | main.rs:1011:5:1012:14 | S2 | +| main.rs:1041:18:1041:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1041:26:1041:27 | p2 | | main.rs:989:5:995:5 | PairOption | +| main.rs:1041:26:1041:27 | p2 | Fst | main.rs:1008:5:1009:14 | S1 | +| main.rs:1041:26:1041:27 | p2 | Snd | main.rs:1011:5:1012:14 | S2 | +| main.rs:1044:13:1044:14 | p3 | | main.rs:989:5:995:5 | PairOption | +| main.rs:1044:13:1044:14 | p3 | Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1044:13:1044:14 | p3 | Snd | main.rs:1014:5:1015:14 | S3 | +| main.rs:1044:34:1044:56 | ...::PairSnd(...) | | main.rs:989:5:995:5 | PairOption | +| main.rs:1044:34:1044:56 | ...::PairSnd(...) | Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1044:34:1044:56 | ...::PairSnd(...) | Snd | main.rs:1014:5:1015:14 | S3 | +| main.rs:1044:54:1044:55 | S3 | | main.rs:1014:5:1015:14 | S3 | +| main.rs:1045:18:1045:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1045:26:1045:27 | p3 | | main.rs:989:5:995:5 | PairOption | +| main.rs:1045:26:1045:27 | p3 | Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1045:26:1045:27 | p3 | Snd | main.rs:1014:5:1015:14 | S3 | +| main.rs:1048:13:1048:14 | p3 | | main.rs:989:5:995:5 | PairOption | +| main.rs:1048:13:1048:14 | p3 | Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1048:13:1048:14 | p3 | Snd | main.rs:1014:5:1015:14 | S3 | +| main.rs:1048:35:1048:56 | ...::PairNone(...) | | main.rs:989:5:995:5 | PairOption | +| main.rs:1048:35:1048:56 | ...::PairNone(...) | Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1048:35:1048:56 | ...::PairNone(...) | Snd | main.rs:1014:5:1015:14 | S3 | +| main.rs:1049:18:1049:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1049:26:1049:27 | p3 | | main.rs:989:5:995:5 | PairOption | +| main.rs:1049:26:1049:27 | p3 | Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1049:26:1049:27 | p3 | Snd | main.rs:1014:5:1015:14 | S3 | +| main.rs:1051:11:1051:54 | ...::PairSnd(...) | | main.rs:989:5:995:5 | PairOption | +| main.rs:1051:11:1051:54 | ...::PairSnd(...) | Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1051:11:1051:54 | ...::PairSnd(...) | Snd | main.rs:989:5:995:5 | PairOption | +| main.rs:1051:11:1051:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1051:11:1051:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1014:5:1015:14 | S3 | +| main.rs:1051:31:1051:53 | ...::PairSnd(...) | | main.rs:989:5:995:5 | PairOption | +| main.rs:1051:31:1051:53 | ...::PairSnd(...) | Fst | main.rs:1011:5:1012:14 | S2 | +| main.rs:1051:31:1051:53 | ...::PairSnd(...) | Snd | main.rs:1014:5:1015:14 | S3 | +| main.rs:1051:51:1051:52 | S3 | | main.rs:1014:5:1015:14 | S3 | +| main.rs:1064:16:1064:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1064:16:1064:24 | SelfParam | &T | main.rs:1062:5:1069:5 | Self [trait MyTrait] | +| main.rs:1064:27:1064:31 | value | | main.rs:1062:19:1062:19 | S | +| main.rs:1066:21:1066:29 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1066:21:1066:29 | SelfParam | &T | main.rs:1062:5:1069:5 | Self [trait MyTrait] | +| main.rs:1066:32:1066:36 | value | | main.rs:1062:19:1062:19 | S | +| main.rs:1067:13:1067:16 | self | | file://:0:0:0:0 | & | +| main.rs:1067:13:1067:16 | self | &T | main.rs:1062:5:1069:5 | Self [trait MyTrait] | +| main.rs:1067:22:1067:26 | value | | main.rs:1062:19:1062:19 | S | +| main.rs:1073:16:1073:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1073:16:1073:24 | SelfParam | &T | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1073:16:1073:24 | SelfParam | &T.T | main.rs:1071:10:1071:10 | T | +| main.rs:1073:27:1073:31 | value | | main.rs:1071:10:1071:10 | T | +| main.rs:1077:26:1079:9 | { ... } | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1077:26:1079:9 | { ... } | T | main.rs:1076:10:1076:10 | T | +| main.rs:1078:13:1078:30 | ...::MyNone(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1078:13:1078:30 | ...::MyNone(...) | T | main.rs:1076:10:1076:10 | T | +| main.rs:1083:20:1083:23 | SelfParam | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1083:20:1083:23 | SelfParam | T | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1083:20:1083:23 | SelfParam | T.T | main.rs:1082:10:1082:10 | T | +| main.rs:1083:41:1088:9 | { ... } | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1083:41:1088:9 | { ... } | T | main.rs:1082:10:1082:10 | T | +| main.rs:1084:13:1087:13 | match self { ... } | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1084:13:1087:13 | match self { ... } | T | main.rs:1082:10:1082:10 | T | +| main.rs:1084:19:1084:22 | self | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1084:19:1084:22 | self | T | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1084:19:1084:22 | self | T.T | main.rs:1082:10:1082:10 | T | +| main.rs:1085:39:1085:56 | ...::MyNone(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1085:39:1085:56 | ...::MyNone(...) | T | main.rs:1082:10:1082:10 | T | +| main.rs:1086:34:1086:34 | x | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1086:34:1086:34 | x | T | main.rs:1082:10:1082:10 | T | +| main.rs:1086:40:1086:40 | x | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1086:40:1086:40 | x | T | main.rs:1082:10:1082:10 | T | +| main.rs:1095:13:1095:14 | x1 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1095:18:1095:37 | ...::new(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1096:18:1096:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1096:26:1096:27 | x1 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1098:13:1098:18 | mut x2 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1098:13:1098:18 | mut x2 | T | main.rs:1091:5:1092:13 | S | +| main.rs:1098:22:1098:36 | ...::new(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1098:22:1098:36 | ...::new(...) | T | main.rs:1091:5:1092:13 | S | +| main.rs:1099:9:1099:10 | x2 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1099:9:1099:10 | x2 | T | main.rs:1091:5:1092:13 | S | +| main.rs:1099:16:1099:16 | S | | main.rs:1091:5:1092:13 | S | +| main.rs:1100:18:1100:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1100:26:1100:27 | x2 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1100:26:1100:27 | x2 | T | main.rs:1091:5:1092:13 | S | +| main.rs:1102:13:1102:18 | mut x3 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1102:22:1102:36 | ...::new(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1103:9:1103:10 | x3 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1103:21:1103:21 | S | | main.rs:1091:5:1092:13 | S | +| main.rs:1104:18:1104:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1104:26:1104:27 | x3 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1106:13:1106:18 | mut x4 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1106:13:1106:18 | mut x4 | T | main.rs:1091:5:1092:13 | S | +| main.rs:1106:22:1106:36 | ...::new(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1106:22:1106:36 | ...::new(...) | T | main.rs:1091:5:1092:13 | S | +| main.rs:1107:23:1107:29 | &mut x4 | | file://:0:0:0:0 | & | +| main.rs:1107:23:1107:29 | &mut x4 | &T | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1107:23:1107:29 | &mut x4 | &T.T | main.rs:1091:5:1092:13 | S | +| main.rs:1107:28:1107:29 | x4 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1107:28:1107:29 | x4 | T | main.rs:1091:5:1092:13 | S | +| main.rs:1107:32:1107:32 | S | | main.rs:1091:5:1092:13 | S | +| main.rs:1108:18:1108:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1108:26:1108:27 | x4 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1108:26:1108:27 | x4 | T | main.rs:1091:5:1092:13 | S | +| main.rs:1110:13:1110:14 | x5 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1110:13:1110:14 | x5 | T | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1110:13:1110:14 | x5 | T.T | main.rs:1091:5:1092:13 | S | +| main.rs:1110:18:1110:58 | ...::MySome(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1110:18:1110:58 | ...::MySome(...) | T | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1110:18:1110:58 | ...::MySome(...) | T.T | main.rs:1091:5:1092:13 | S | +| main.rs:1110:35:1110:57 | ...::MyNone(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1110:35:1110:57 | ...::MyNone(...) | T | main.rs:1091:5:1092:13 | S | +| main.rs:1111:18:1111:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1111:26:1111:27 | x5 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1111:26:1111:27 | x5 | T | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1111:26:1111:27 | x5 | T.T | main.rs:1091:5:1092:13 | S | +| main.rs:1111:26:1111:37 | x5.flatten() | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1111:26:1111:37 | x5.flatten() | T | main.rs:1091:5:1092:13 | S | +| main.rs:1113:13:1113:14 | x6 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1113:13:1113:14 | x6 | T | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1113:13:1113:14 | x6 | T.T | main.rs:1091:5:1092:13 | S | +| main.rs:1113:18:1113:58 | ...::MySome(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1113:18:1113:58 | ...::MySome(...) | T | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1113:18:1113:58 | ...::MySome(...) | T.T | main.rs:1091:5:1092:13 | S | +| main.rs:1113:35:1113:57 | ...::MyNone(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1113:35:1113:57 | ...::MyNone(...) | T | main.rs:1091:5:1092:13 | S | +| main.rs:1114:18:1114:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1114:26:1114:61 | ...::flatten(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1114:26:1114:61 | ...::flatten(...) | T | main.rs:1091:5:1092:13 | S | +| main.rs:1114:59:1114:60 | x6 | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1114:59:1114:60 | x6 | T | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1114:59:1114:60 | x6 | T.T | main.rs:1091:5:1092:13 | S | +| main.rs:1117:13:1117:19 | from_if | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1117:13:1117:19 | from_if | T | main.rs:1091:5:1092:13 | S | +| main.rs:1117:23:1121:9 | if ... {...} else {...} | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1117:23:1121:9 | if ... {...} else {...} | T | main.rs:1091:5:1092:13 | S | +| main.rs:1117:26:1117:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1117:26:1117:30 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1117:30:1117:30 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1117:32:1119:9 | { ... } | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1117:32:1119:9 | { ... } | T | main.rs:1091:5:1092:13 | S | +| main.rs:1118:13:1118:30 | ...::MyNone(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1118:13:1118:30 | ...::MyNone(...) | T | main.rs:1091:5:1092:13 | S | +| main.rs:1119:16:1121:9 | { ... } | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1119:16:1121:9 | { ... } | T | main.rs:1091:5:1092:13 | S | +| main.rs:1120:13:1120:31 | ...::MySome(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1120:13:1120:31 | ...::MySome(...) | T | main.rs:1091:5:1092:13 | S | +| main.rs:1120:30:1120:30 | S | | main.rs:1091:5:1092:13 | S | +| main.rs:1122:18:1122:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1122:26:1122:32 | from_if | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1122:26:1122:32 | from_if | T | main.rs:1091:5:1092:13 | S | +| main.rs:1125:13:1125:22 | from_match | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1125:13:1125:22 | from_match | T | main.rs:1091:5:1092:13 | S | +| main.rs:1125:26:1128:9 | match ... { ... } | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1125:26:1128:9 | match ... { ... } | T | main.rs:1091:5:1092:13 | S | +| main.rs:1125:32:1125:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1125:32:1125:36 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1125:36:1125:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1126:13:1126:16 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1126:21:1126:38 | ...::MyNone(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1126:21:1126:38 | ...::MyNone(...) | T | main.rs:1091:5:1092:13 | S | +| main.rs:1127:13:1127:17 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1127:22:1127:40 | ...::MySome(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1127:22:1127:40 | ...::MySome(...) | T | main.rs:1091:5:1092:13 | S | +| main.rs:1127:39:1127:39 | S | | main.rs:1091:5:1092:13 | S | +| main.rs:1129:18:1129:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1129:26:1129:35 | from_match | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1129:26:1129:35 | from_match | T | main.rs:1091:5:1092:13 | S | +| main.rs:1132:13:1132:21 | from_loop | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1132:13:1132:21 | from_loop | T | main.rs:1091:5:1092:13 | S | +| main.rs:1132:25:1137:9 | loop { ... } | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1132:25:1137:9 | loop { ... } | T | main.rs:1091:5:1092:13 | S | +| main.rs:1133:16:1133:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1133:16:1133:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1133:20:1133:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1134:23:1134:40 | ...::MyNone(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1134:23:1134:40 | ...::MyNone(...) | T | main.rs:1091:5:1092:13 | S | +| main.rs:1136:19:1136:37 | ...::MySome(...) | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1136:19:1136:37 | ...::MySome(...) | T | main.rs:1091:5:1092:13 | S | +| main.rs:1136:36:1136:36 | S | | main.rs:1091:5:1092:13 | S | +| main.rs:1138:18:1138:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1138:26:1138:34 | from_loop | | main.rs:1056:5:1060:5 | MyOption | +| main.rs:1138:26:1138:34 | from_loop | T | main.rs:1091:5:1092:13 | S | +| main.rs:1156:15:1156:18 | SelfParam | | main.rs:1144:5:1145:19 | S | +| main.rs:1156:15:1156:18 | SelfParam | T | main.rs:1155:10:1155:10 | T | +| main.rs:1156:26:1158:9 | { ... } | | main.rs:1155:10:1155:10 | T | +| main.rs:1157:13:1157:16 | self | | main.rs:1144:5:1145:19 | S | +| main.rs:1157:13:1157:16 | self | T | main.rs:1155:10:1155:10 | T | +| main.rs:1157:13:1157:18 | self.0 | | main.rs:1155:10:1155:10 | T | | 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:1160:15:1160:19 | SelfParam | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1160:15:1160:19 | SelfParam | &T.T | main.rs:1155:10:1155:10 | T | +| main.rs:1160:28:1162:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1160:28:1162:9 | { ... } | &T | main.rs:1155:10:1155:10 | T | | 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:1161:13:1161:19 | &... | &T | main.rs:1155:10:1155:10 | T | +| main.rs:1161:14:1161:17 | self | | file://:0:0:0:0 | & | +| main.rs:1161:14:1161:17 | self | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1161:14:1161:17 | self | &T.T | main.rs:1155:10:1155:10 | T | +| main.rs:1161:14:1161:19 | self.0 | | main.rs:1155:10:1155:10 | T | | 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:1164:15:1164:25 | SelfParam | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1164:15:1164:25 | SelfParam | &T.T | main.rs:1155:10:1155:10 | T | +| main.rs:1164:34:1166:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1164:34:1166:9 | { ... } | &T | main.rs:1155:10:1155:10 | T | | 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 | { ... } | | {EXTERNAL LOCATION} | 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(...) | | {EXTERNAL LOCATION} | 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(...) | | {EXTERNAL LOCATION} | 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 | { ... } | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | Result | -| main.rs:1202:13:1202:13 | x | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1202:17:1202:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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(...) | | {EXTERNAL LOCATION} | 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 | { ... } | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | Result | -| main.rs:1209:13:1209:13 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1209:13:1209:13 | x | T.T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1209:17:1209:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1209:17:1209:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | -| main.rs:1209:17:1209:42 | ...::Ok(...) | T.T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1209:28:1209:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | Result | -| main.rs:1211:17:1211:17 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1211:17:1211:17 | x | T.T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1211:17:1211:18 | TryExpr | | {EXTERNAL LOCATION} | Result | -| main.rs:1211:17:1211:18 | TryExpr | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1211:17:1211:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1212:9:1212:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | { ... } | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1218:22:1218:38 | ...::Ok(...) | T | main.rs:1216:20:1216:27 | T | -| main.rs:1218:22:1221:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1218:33:1218:37 | value | | main.rs:1216:20:1216:27 | T | -| main.rs:1218:53:1221:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1218:53:1221:9 | { ... } | E | main.rs:1188:5:1189:14 | S1 | -| main.rs:1219:22:1219:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1220:13:1220:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1220:13:1220:34 | ...::Ok::<...>(...) | E | main.rs:1188:5:1189:14 | S1 | -| main.rs:1222:9:1222:23 | ...::Err(...) | | {EXTERNAL LOCATION} | 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(...) | | {EXTERNAL LOCATION} | 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" | | {EXTERNAL LOCATION} | str | -| main.rs:1230:37:1230:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | 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" | | {EXTERNAL LOCATION} | str | -| main.rs:1234:37:1234:49 | try_chained(...) | | {EXTERNAL LOCATION} | 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" | | {EXTERNAL LOCATION} | str | -| main.rs:1238:37:1238:63 | try_complex(...) | | {EXTERNAL LOCATION} | 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(...) | | {EXTERNAL LOCATION} | 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" | | {EXTERNAL LOCATION} | str | -| main.rs:1246:13:1246:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1246:22:1246:22 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1247:13:1247:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1247:17:1247:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1248:13:1248:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1248:17:1248:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1248:17:1248:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:1248:21:1248:21 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1249:13:1249:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1249:17:1249:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1249:17:1249:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1250:13:1250:13 | c | | {EXTERNAL LOCATION} | char | -| main.rs:1250:17:1250:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1251:13:1251:17 | hello | | {EXTERNAL LOCATION} | str | -| main.rs:1251:21:1251:27 | "Hello" | | {EXTERNAL LOCATION} | str | -| main.rs:1252:13:1252:13 | f | | {EXTERNAL LOCATION} | f64 | -| main.rs:1252:17:1252:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | -| main.rs:1253:13:1253:13 | t | | {EXTERNAL LOCATION} | bool | -| main.rs:1253:17:1253:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1254:13:1254:13 | f | | {EXTERNAL LOCATION} | bool | -| main.rs:1254:17:1254:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1261:13:1261:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:1261:17:1261:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1261:17:1261:29 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1261:25:1261:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1262:13:1262:13 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:1262:17:1262:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1262:17:1262:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1262:25:1262:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1264:13:1264:17 | mut a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1265:13:1265:16 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1265:20:1265:21 | 34 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1265:20:1265:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1265:26:1265:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1266:12:1266:15 | cond | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1267:22:1267:26 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1267:26:1267:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1269:13:1269:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1269:13:1269:17 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1269:17:1269:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1271:9:1271:9 | a | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1290:20:1290:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1290:29:1290:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1290:29:1290:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1291:20:1291:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1291:20:1291:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1291:20:1291:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1291:29:1291:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1291:29:1291:33 | rhs.y | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1308:20:1308:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1308:29:1308:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1308:29:1308:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1309:20:1309:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1309:20:1309:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1309:20:1309:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1309:29:1309:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1309:29:1309:33 | rhs.y | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1326:20:1326:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1326:29:1326:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1326:29:1326:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1327:20:1327:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1327:20:1327:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1327:20:1327:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1327:29:1327:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1327:29:1327:33 | rhs.y | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1343:20:1343:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1343:29:1343:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1343:29:1343:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1344:20:1344:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1344:20:1344:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1344:20:1344:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1344:29:1344:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1344:29:1344:33 | rhs.y | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1360:20:1360:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1360:29:1360:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1360:29:1360:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1361:20:1361:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1361:20:1361:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1361:20:1361:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1361:29:1361:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1361:29:1361:33 | rhs.y | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1377:20:1377:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1377:29:1377:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1377:29:1377:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1378:20:1378:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1378:20:1378:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1378:20:1378:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1378:29:1378:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1378:29:1378:33 | rhs.y | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1394:20:1394:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1394:29:1394:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1394:29:1394:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1395:20:1395:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1395:20:1395:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1395:20:1395:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1395:29:1395:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1395:29:1395:33 | rhs.y | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1411:20:1411:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1411:29:1411:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1411:29:1411:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1412:20:1412:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1412:20:1412:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1412:20:1412:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1412:29:1412:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1412:29:1412:33 | rhs.y | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1426:16:1426:19 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1426:22:1426:24 | rhs | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1428:20:1428:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1428:30:1428:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1429:20:1429:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1429:20:1429:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1429:20:1429:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1429:30:1429:32 | rhs | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1436:13:1436:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1436:24:1436:26 | rhs | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1437:13:1437:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1437:24:1437:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1443:16:1443:19 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1443:22:1443:24 | rhs | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1445:20:1445:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1445:30:1445:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1446:20:1446:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1446:20:1446:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1446:20:1446:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1446:30:1446:32 | rhs | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1453:13:1453:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1453:24:1453:26 | rhs | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1454:13:1454:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1454:24:1454:26 | rhs | | {EXTERNAL LOCATION} | 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 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1462:21:1462:24 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1462:21:1462:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1463:20:1463:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1463:21:1463:24 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1463:21:1463:26 | self.y | | {EXTERNAL LOCATION} | 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 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1472:21:1472:24 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1472:21:1472:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1473:20:1473:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1473:21:1473:24 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1473:21:1473:26 | self.y | | {EXTERNAL LOCATION} | 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 | { ... } | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1480:13:1480:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1480:13:1480:50 | ... && ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1480:34:1480:50 | ... == ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | { ... } | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1484:13:1484:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1484:13:1484:50 | ... \|\| ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1484:34:1484:50 | ... != ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1489:75:1491:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1490:13:1490:29 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1490:13:1490:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1490:13:1490:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1490:14:1490:28 | ... + ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1490:43:1490:62 | &... | | file://:0:0:0:0 | & | -| main.rs:1490:43:1490:62 | &... | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1490:44:1490:62 | (...) | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1490:45:1490:61 | ... + ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | { ... } | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1494:13:1494:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1494:13:1494:48 | ... && ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1494:33:1494:48 | ... < ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | { ... } | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1498:13:1498:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1498:13:1498:50 | ... && ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1498:34:1498:50 | ... <= ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1165:13:1165:19 | &... | &T | main.rs:1155:10:1155:10 | T | +| main.rs:1165:14:1165:17 | self | | file://:0:0:0:0 | & | +| main.rs:1165:14:1165:17 | self | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1165:14:1165:17 | self | &T.T | main.rs:1155:10:1155:10 | T | +| main.rs:1165:14:1165:19 | self.0 | | main.rs:1155:10:1155:10 | T | +| main.rs:1170:29:1170:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1170:29:1170:33 | SelfParam | &T | main.rs:1169:5:1172:5 | Self [trait ATrait] | +| main.rs:1171:33:1171:36 | SelfParam | | main.rs:1169:5:1172:5 | Self [trait ATrait] | +| main.rs:1177:29:1177:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1177:29:1177:33 | SelfParam | &T | file://:0:0:0:0 | & | +| main.rs:1177:29:1177:33 | SelfParam | &T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1177:29:1177:33 | SelfParam | &T.&T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1177:43:1179:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1178:13:1178:22 | (...) | | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1178:13:1178:24 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1178:14:1178:21 | * ... | | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1178:15:1178:21 | (...) | | file://:0:0:0:0 | & | +| main.rs:1178:15:1178:21 | (...) | | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1178:15:1178:21 | (...) | &T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1178:16:1178:20 | * ... | | file://:0:0:0:0 | & | +| main.rs:1178:16:1178:20 | * ... | | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1178:16:1178:20 | * ... | &T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1178:17:1178:20 | self | | file://:0:0:0:0 | & | +| main.rs:1178:17:1178:20 | self | &T | file://:0:0:0:0 | & | +| main.rs:1178:17:1178:20 | self | &T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1178:17:1178:20 | self | &T.&T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1182:33:1182:36 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1182:33:1182:36 | SelfParam | &T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1182:46:1184:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1183:13:1183:19 | (...) | | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1183:13:1183:21 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1183:14:1183:18 | * ... | | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1183:15:1183:18 | self | | file://:0:0:0:0 | & | +| main.rs:1183:15:1183:18 | self | &T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1188:13:1188:14 | x1 | | main.rs:1144:5:1145:19 | S | +| main.rs:1188:13:1188:14 | x1 | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1188:18:1188:22 | S(...) | | main.rs:1144:5:1145:19 | S | +| main.rs:1188:18:1188:22 | S(...) | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1188:20:1188:21 | S2 | | main.rs:1147:5:1148:14 | S2 | +| main.rs:1189:18:1189:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1189:26:1189:27 | x1 | | main.rs:1144:5:1145:19 | S | +| main.rs:1189:26:1189:27 | x1 | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1189:26:1189:32 | x1.m1() | | main.rs:1147:5:1148:14 | S2 | +| main.rs:1191:13:1191:14 | x2 | | main.rs:1144:5:1145:19 | S | +| main.rs:1191:13:1191:14 | x2 | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1191:18:1191:22 | S(...) | | main.rs:1144:5:1145:19 | S | +| main.rs:1191:18:1191:22 | S(...) | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1191:20:1191:21 | S2 | | main.rs:1147:5:1148:14 | S2 | +| main.rs:1193:18:1193:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1193:26:1193:27 | x2 | | main.rs:1144:5:1145:19 | S | +| main.rs:1193:26:1193:27 | x2 | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1193:26:1193:32 | x2.m2() | | file://:0:0:0:0 | & | +| main.rs:1193:26:1193:32 | x2.m2() | &T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1194:18:1194:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1194:26:1194:27 | x2 | | main.rs:1144:5:1145:19 | S | +| main.rs:1194:26:1194:27 | x2 | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1194:26:1194:32 | x2.m3() | | file://:0:0:0:0 | & | +| main.rs:1194:26:1194:32 | x2.m3() | &T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1196:13:1196:14 | x3 | | main.rs:1144:5:1145:19 | S | +| main.rs:1196:13:1196:14 | x3 | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1196:18:1196:22 | S(...) | | main.rs:1144:5:1145:19 | S | +| main.rs:1196:18:1196:22 | S(...) | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1196:20:1196:21 | S2 | | main.rs:1147:5:1148:14 | S2 | +| main.rs:1198:18:1198:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1198:26:1198:41 | ...::m2(...) | | file://:0:0:0:0 | & | +| main.rs:1198:26:1198:41 | ...::m2(...) | &T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1198:38:1198:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1198:38:1198:40 | &x3 | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1198:38:1198:40 | &x3 | &T.T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1198:39:1198:40 | x3 | | main.rs:1144:5:1145:19 | S | +| main.rs:1198:39:1198:40 | x3 | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1199:18:1199:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1199:26:1199:41 | ...::m3(...) | | file://:0:0:0:0 | & | +| main.rs:1199:26:1199:41 | ...::m3(...) | &T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1199:38:1199:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1199:38:1199:40 | &x3 | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1199:38:1199:40 | &x3 | &T.T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1199:39:1199:40 | x3 | | main.rs:1144:5:1145:19 | S | +| main.rs:1199:39:1199:40 | x3 | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1201:13:1201:14 | x4 | | file://:0:0:0:0 | & | +| main.rs:1201:13:1201:14 | x4 | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1201:13:1201:14 | x4 | &T.T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1201:18:1201:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1201:18:1201:23 | &... | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1201:18:1201:23 | &... | &T.T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1201:19:1201:23 | S(...) | | main.rs:1144:5:1145:19 | S | +| main.rs:1201:19:1201:23 | S(...) | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1201:21:1201:22 | S2 | | main.rs:1147:5:1148:14 | S2 | +| main.rs:1203:18:1203:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1203:26:1203:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1203:26:1203:27 | x4 | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1203:26:1203:27 | x4 | &T.T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1203:26:1203:32 | x4.m2() | | file://:0:0:0:0 | & | +| main.rs:1203:26:1203:32 | x4.m2() | &T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1204:18:1204:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1204:26:1204:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1204:26:1204:27 | x4 | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1204:26:1204:27 | x4 | &T.T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1204:26:1204:32 | x4.m3() | | file://:0:0:0:0 | & | +| main.rs:1204:26:1204:32 | x4.m3() | &T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1206:13:1206:14 | x5 | | file://:0:0:0:0 | & | +| main.rs:1206:13:1206:14 | x5 | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1206:13:1206:14 | x5 | &T.T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1206:18:1206:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1206:18:1206:23 | &... | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1206:18:1206:23 | &... | &T.T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1206:19:1206:23 | S(...) | | main.rs:1144:5:1145:19 | S | +| main.rs:1206:19:1206:23 | S(...) | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1206:21:1206:22 | S2 | | main.rs:1147:5:1148:14 | S2 | +| main.rs:1208:18:1208:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1208:26:1208:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1208:26:1208:27 | x5 | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1208:26:1208:27 | x5 | &T.T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1208:26:1208:32 | x5.m1() | | main.rs:1147:5:1148:14 | S2 | +| main.rs:1209:18:1209:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1209:26:1209:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1209:26:1209:27 | x5 | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1209:26:1209:27 | x5 | &T.T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1209:26:1209:29 | x5.0 | | main.rs:1147:5:1148:14 | S2 | +| main.rs:1211:13:1211:14 | x6 | | file://:0:0:0:0 | & | +| main.rs:1211:13:1211:14 | x6 | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1211:13:1211:14 | x6 | &T.T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1211:18:1211:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1211:18:1211:23 | &... | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1211:18:1211:23 | &... | &T.T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1211:19:1211:23 | S(...) | | main.rs:1144:5:1145:19 | S | +| main.rs:1211:19:1211:23 | S(...) | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1211:21:1211:22 | S2 | | main.rs:1147:5:1148:14 | S2 | +| main.rs:1214:18:1214:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1214:26:1214:30 | (...) | | main.rs:1144:5:1145:19 | S | +| main.rs:1214:26:1214:30 | (...) | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1214:26:1214:35 | ... .m1() | | main.rs:1147:5:1148:14 | S2 | +| main.rs:1214:27:1214:29 | * ... | | main.rs:1144:5:1145:19 | S | +| main.rs:1214:27:1214:29 | * ... | T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1214:28:1214:29 | x6 | | file://:0:0:0:0 | & | +| main.rs:1214:28:1214:29 | x6 | &T | main.rs:1144:5:1145:19 | S | +| main.rs:1214:28:1214:29 | x6 | &T.T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1216:13:1216:14 | x7 | | main.rs:1144:5:1145:19 | S | +| main.rs:1216:13:1216:14 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1216:13:1216:14 | x7 | T.&T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1216:18:1216:23 | S(...) | | main.rs:1144:5:1145:19 | S | +| main.rs:1216:18:1216:23 | S(...) | T | file://:0:0:0:0 | & | +| main.rs:1216:18:1216:23 | S(...) | T.&T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1216:20:1216:22 | &S2 | | file://:0:0:0:0 | & | +| main.rs:1216:20:1216:22 | &S2 | &T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1216:21:1216:22 | S2 | | main.rs:1147:5:1148:14 | S2 | +| main.rs:1219:13:1219:13 | t | | file://:0:0:0:0 | & | +| main.rs:1219:13:1219:13 | t | &T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1219:17:1219:18 | x7 | | main.rs:1144:5:1145:19 | S | +| main.rs:1219:17:1219:18 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1219:17:1219:18 | x7 | T.&T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1219:17:1219:23 | x7.m1() | | file://:0:0:0:0 | & | +| main.rs:1219:17:1219:23 | x7.m1() | &T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1220:18:1220:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1220:26:1220:27 | x7 | | main.rs:1144:5:1145:19 | S | +| main.rs:1220:26:1220:27 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1220:26:1220:27 | x7 | T.&T | main.rs:1147:5:1148:14 | S2 | +| main.rs:1222:13:1222:14 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1222:26:1222:32 | "Hello" | | {EXTERNAL LOCATION} | str | +| main.rs:1222:26:1222:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | +| main.rs:1226:13:1226:13 | u | | {EXTERNAL LOCATION} | Result | +| main.rs:1226:13:1226:13 | u | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1226:17:1226:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1226:17:1226:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | +| main.rs:1226:17:1226:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1228:13:1228:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1228:13:1228:20 | my_thing | &T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1228:24:1228:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1228:24:1228:39 | &... | &T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1228:25:1228:39 | MyInt {...} | | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1228:36:1228:37 | 37 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1228:36:1228:37 | 37 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1230:17:1230:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1230:17:1230:24 | my_thing | &T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1231:18:1231:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1234:13:1234:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1234:13:1234:20 | my_thing | &T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1234:24:1234:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1234:24:1234:39 | &... | &T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1234:25:1234:39 | MyInt {...} | | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1234:36:1234:37 | 38 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1234:36:1234:37 | 38 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1235:17:1235:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1235:17:1235:24 | my_thing | &T | main.rs:1150:5:1153:5 | MyInt | +| main.rs:1236:18:1236:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1243:16:1243:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1243:16:1243:20 | SelfParam | &T | main.rs:1241:5:1249:5 | Self [trait MyTrait] | +| main.rs:1246:16:1246:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1246:16:1246:20 | SelfParam | &T | main.rs:1241:5:1249:5 | Self [trait MyTrait] | +| main.rs:1246:32:1248:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1246:32:1248:9 | { ... } | &T | main.rs:1241:5:1249:5 | Self [trait MyTrait] | +| main.rs:1247:13:1247:16 | self | | file://:0:0:0:0 | & | +| main.rs:1247:13:1247:16 | self | &T | main.rs:1241:5:1249:5 | Self [trait MyTrait] | +| main.rs:1247:13:1247:22 | self.foo() | | file://:0:0:0:0 | & | +| main.rs:1247:13:1247:22 | self.foo() | &T | main.rs:1241:5:1249:5 | Self [trait MyTrait] | +| main.rs:1255:16:1255:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1255:16:1255:20 | SelfParam | &T | main.rs:1251:5:1251:20 | MyStruct | +| main.rs:1255:36:1257:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1255:36:1257:9 | { ... } | &T | main.rs:1251:5:1251:20 | MyStruct | +| main.rs:1256:13:1256:16 | self | | file://:0:0:0:0 | & | +| main.rs:1256:13:1256:16 | self | &T | main.rs:1251:5:1251:20 | MyStruct | +| main.rs:1261:13:1261:13 | x | | main.rs:1251:5:1251:20 | MyStruct | +| main.rs:1261:17:1261:24 | MyStruct | | main.rs:1251:5:1251:20 | MyStruct | +| main.rs:1262:9:1262:9 | x | | main.rs:1251:5:1251:20 | MyStruct | +| main.rs:1262:9:1262:15 | x.bar() | | file://:0:0:0:0 | & | +| main.rs:1262:9:1262:15 | x.bar() | &T | main.rs:1251:5:1251:20 | MyStruct | +| main.rs:1272:16:1272:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1272:16:1272:20 | SelfParam | &T | main.rs:1269:5:1269:26 | MyStruct | +| main.rs:1272:16:1272:20 | SelfParam | &T.T | main.rs:1271:10:1271:10 | T | +| main.rs:1272:32:1274:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1272:32:1274:9 | { ... } | &T | main.rs:1269:5:1269:26 | MyStruct | +| main.rs:1272:32:1274:9 | { ... } | &T.T | main.rs:1271:10:1271:10 | T | +| main.rs:1273:13:1273:16 | self | | file://:0:0:0:0 | & | +| main.rs:1273:13:1273:16 | self | &T | main.rs:1269:5:1269:26 | MyStruct | +| main.rs:1273:13:1273:16 | self | &T.T | main.rs:1271:10:1271:10 | T | +| main.rs:1278:13:1278:13 | x | | main.rs:1269:5:1269:26 | MyStruct | +| main.rs:1278:13:1278:13 | x | T | main.rs:1267:5:1267:13 | S | +| main.rs:1278:17:1278:27 | MyStruct(...) | | main.rs:1269:5:1269:26 | MyStruct | +| main.rs:1278:17:1278:27 | MyStruct(...) | T | main.rs:1267:5:1267:13 | S | +| main.rs:1278:26:1278:26 | S | | main.rs:1267:5:1267:13 | S | +| main.rs:1279:9:1279:9 | x | | main.rs:1269:5:1269:26 | MyStruct | +| main.rs:1279:9:1279:9 | x | T | main.rs:1267:5:1267:13 | S | +| main.rs:1279:9:1279:15 | x.foo() | | file://:0:0:0:0 | & | +| main.rs:1279:9:1279:15 | x.foo() | &T | main.rs:1269:5:1269:26 | MyStruct | +| main.rs:1279:9:1279:15 | x.foo() | &T.T | main.rs:1267:5:1267:13 | S | +| main.rs:1290:17:1290:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1290:17:1290:25 | SelfParam | &T | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1291:13:1291:16 | self | | file://:0:0:0:0 | & | +| main.rs:1291:13:1291:16 | self | &T | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1291:13:1291:21 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1291:13:1291:34 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1291:25:1291:34 | ! ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1291:26:1291:29 | self | | file://:0:0:0:0 | & | +| main.rs:1291:26:1291:29 | self | &T | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1291:26:1291:34 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1298:15:1298:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1298:15:1298:19 | SelfParam | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1298:31:1300:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1298:31:1300:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1298:31:1300:9 | { ... } | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1298:31:1300:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1298:31:1300:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1298:31:1300:9 | { ... } | &T.&T.&T.&T | main.rs:1295:5:1295:13 | S | +| main.rs:1299:13:1299:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1299:13:1299:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1299:13:1299:19 | &... | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1299:13:1299:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1299:13:1299:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1299:13:1299:19 | &... | &T.&T.&T.&T | main.rs:1295:5:1295:13 | S | +| main.rs:1299:14:1299:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1299:14:1299:19 | &... | | main.rs:1295:5:1295:13 | S | +| main.rs:1299:14:1299:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1299:14:1299:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1299:14:1299:19 | &... | &T.&T.&T | main.rs:1295:5:1295:13 | S | +| main.rs:1299:15:1299:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1299:15:1299:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1299:15:1299:19 | &self | &T.&T | main.rs:1295:5:1295:13 | S | +| main.rs:1299:16:1299:19 | self | | file://:0:0:0:0 | & | +| main.rs:1299:16:1299:19 | self | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1302:15:1302:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1302:15:1302:25 | SelfParam | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1302:37:1304:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1302:37:1304:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1302:37:1304:9 | { ... } | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1302:37:1304:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1302:37:1304:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1302:37:1304:9 | { ... } | &T.&T.&T.&T | main.rs:1295:5:1295:13 | S | +| main.rs:1303:13:1303:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1303:13:1303:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1303:13:1303:19 | &... | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1303:13:1303:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1303:13:1303:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1303:13:1303:19 | &... | &T.&T.&T.&T | main.rs:1295:5:1295:13 | S | +| main.rs:1303:14:1303:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1303:14:1303:19 | &... | | main.rs:1295:5:1295:13 | S | +| main.rs:1303:14:1303:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1303:14:1303:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1303:14:1303:19 | &... | &T.&T.&T | main.rs:1295:5:1295:13 | S | +| main.rs:1303:15:1303:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1303:15:1303:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1303:15:1303:19 | &self | &T.&T | main.rs:1295:5:1295:13 | S | +| main.rs:1303:16:1303:19 | self | | file://:0:0:0:0 | & | +| main.rs:1303:16:1303:19 | self | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1306:15:1306:15 | x | | file://:0:0:0:0 | & | +| main.rs:1306:15:1306:15 | x | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1306:34:1308:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1306:34:1308:9 | { ... } | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1307:13:1307:13 | x | | file://:0:0:0:0 | & | +| main.rs:1307:13:1307:13 | x | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1310:15:1310:15 | x | | file://:0:0:0:0 | & | +| main.rs:1310:15:1310:15 | x | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1310:34:1312:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1310:34:1312:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1310:34:1312:9 | { ... } | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1310:34:1312:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1310:34:1312:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1310:34:1312:9 | { ... } | &T.&T.&T.&T | main.rs:1295:5:1295:13 | S | +| main.rs:1311:13:1311:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1311:13:1311:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1311:13:1311:16 | &... | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1311:13:1311:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1311:13:1311:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1311:13:1311:16 | &... | &T.&T.&T.&T | main.rs:1295:5:1295:13 | S | +| main.rs:1311:14:1311:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1311:14:1311:16 | &... | | main.rs:1295:5:1295:13 | S | +| main.rs:1311:14:1311:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1311:14:1311:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1311:14:1311:16 | &... | &T.&T.&T | main.rs:1295:5:1295:13 | S | +| main.rs:1311:15:1311:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1311:15:1311:16 | &x | &T | file://:0:0:0:0 | & | +| main.rs:1311:15:1311:16 | &x | &T.&T | main.rs:1295:5:1295:13 | S | +| main.rs:1311:16:1311:16 | x | | file://:0:0:0:0 | & | +| main.rs:1311:16:1311:16 | x | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1316:13:1316:13 | x | | main.rs:1295:5:1295:13 | S | +| main.rs:1316:17:1316:20 | S {...} | | main.rs:1295:5:1295:13 | S | +| main.rs:1317:9:1317:9 | x | | main.rs:1295:5:1295:13 | S | +| main.rs:1317:9:1317:14 | x.f1() | | file://:0:0:0:0 | & | +| main.rs:1317:9:1317:14 | x.f1() | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1318:9:1318:9 | x | | main.rs:1295:5:1295:13 | S | +| main.rs:1318:9:1318:14 | x.f2() | | file://:0:0:0:0 | & | +| main.rs:1318:9:1318:14 | x.f2() | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1319:9:1319:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:1319:9:1319:17 | ...::f3(...) | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1319:15:1319:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1319:15:1319:16 | &x | &T | main.rs:1295:5:1295:13 | S | +| main.rs:1319:16:1319:16 | x | | main.rs:1295:5:1295:13 | S | +| main.rs:1321:13:1321:13 | n | | {EXTERNAL LOCATION} | bool | +| main.rs:1321:17:1321:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1321:18:1321:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1321:18:1321:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1321:18:1321:24 | * ... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1321:19:1321:24 | &... | | file://:0:0:0:0 | & | +| main.rs:1321:19:1321:24 | &... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1321:19:1321:24 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1321:19:1321:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | +| main.rs:1321:20:1321:24 | &true | | {EXTERNAL LOCATION} | bool | +| main.rs:1321:20:1321:24 | &true | | file://:0:0:0:0 | & | +| main.rs:1321:20:1321:24 | &true | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1321:21:1321:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1325:13:1325:20 | mut flag | | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1325:24:1325:41 | ...::default(...) | | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1326:22:1326:30 | &mut flag | | file://:0:0:0:0 | & | +| main.rs:1326:22:1326:30 | &mut flag | &T | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1326:27:1326:30 | flag | | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1327:18:1327:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1327:26:1327:29 | flag | | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1341:43:1344:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1341:43:1344:5 | { ... } | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1341:43:1344:5 | { ... } | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1342:13:1342:13 | x | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1342:17:1342:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1342:17:1342:30 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1342:17:1342:31 | TryExpr | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1342:28:1342:29 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1343:9:1343:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1343:9:1343:22 | ...::Ok(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1343:9:1343:22 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1343:20:1343:21 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1347:46:1351:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1347:46:1351:5 | { ... } | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1347:46:1351:5 | { ... } | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1348:13:1348:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1348:13:1348:13 | x | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1348:17:1348:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1348:17:1348:30 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1348:28:1348:29 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1349:13:1349:13 | y | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1349:17:1349:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1349:17:1349:17 | x | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1349:17:1349:18 | TryExpr | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1350:9:1350:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1350:9:1350:22 | ...::Ok(...) | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1350:9:1350:22 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1350:20:1350:21 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1354:40:1359:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1354:40:1359:5 | { ... } | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1354:40:1359:5 | { ... } | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1355:13:1355:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1355:13:1355:13 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1355:13:1355:13 | x | T.T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1355:17:1355:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1355:17:1355:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | +| main.rs:1355:17:1355:42 | ...::Ok(...) | T.T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1355:28:1355:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1355:28:1355:41 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1355:39:1355:40 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1357:17:1357:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1357:17:1357:17 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1357:17:1357:17 | x | T.T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1357:17:1357:18 | TryExpr | | {EXTERNAL LOCATION} | Result | +| main.rs:1357:17:1357:18 | TryExpr | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1357:17:1357:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1358:9:1358:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1358:9:1358:22 | ...::Ok(...) | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1358:9:1358:22 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1358:20:1358:21 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1362:30:1362:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1362:30:1362:34 | input | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1362:30:1362:34 | input | T | main.rs:1362:20:1362:27 | T | +| main.rs:1362:69:1369:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1362:69:1369:5 | { ... } | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1362:69:1369:5 | { ... } | T | main.rs:1362:20:1362:27 | T | +| main.rs:1363:13:1363:17 | value | | main.rs:1362:20:1362:27 | T | +| main.rs:1363:21:1363:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1363:21:1363:25 | input | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1363:21:1363:25 | input | T | main.rs:1362:20:1362:27 | T | +| main.rs:1363:21:1363:26 | TryExpr | | main.rs:1362:20:1362:27 | T | +| main.rs:1364:22:1364:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1364:22:1364:38 | ...::Ok(...) | T | main.rs:1362:20:1362:27 | T | +| main.rs:1364:22:1367:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1364:33:1364:37 | value | | main.rs:1362:20:1362:27 | T | +| main.rs:1364:53:1367:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1364:53:1367:9 | { ... } | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1365:22:1365:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1366:13:1366:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1366:13:1366:34 | ...::Ok::<...>(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1368:9:1368:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1368:9:1368:23 | ...::Err(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1368:9:1368:23 | ...::Err(...) | T | main.rs:1362:20:1362:27 | T | +| main.rs:1368:21:1368:22 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1372:37:1372:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1372:37:1372:52 | try_same_error(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1372:37:1372:52 | try_same_error(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1373:22:1373:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1376:37:1376:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1376:37:1376:55 | try_convert_error(...) | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1376:37:1376:55 | try_convert_error(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1377:22:1377:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1380:37:1380:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1380:37:1380:49 | try_chained(...) | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1380:37:1380:49 | try_chained(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1381:22:1381:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1384:37:1384:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1384:37:1384:63 | try_complex(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1384:37:1384:63 | try_complex(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1384:49:1384:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1384:49:1384:62 | ...::Ok(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1384:49:1384:62 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1384:60:1384:61 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1385:22:1385:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1392:13:1392:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1392:22:1392:22 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1393:13:1393:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1393:17:1393:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1394:13:1394:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1394:17:1394:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1394:17:1394:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:1394:21:1394:21 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1395:13:1395:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1395:17:1395:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1395:17:1395:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1396:13:1396:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1396:17:1396:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1397:13:1397:17 | hello | | {EXTERNAL LOCATION} | str | +| main.rs:1397:21:1397:27 | "Hello" | | {EXTERNAL LOCATION} | str | +| main.rs:1398:13:1398:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1398:17:1398:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1399:13:1399:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1399:17:1399:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1400:13:1400:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1400:17:1400:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1407:13:1407:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1407:17:1407:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1407:17:1407:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1407:25:1407:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1408:13:1408:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1408:17:1408:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1408:17:1408:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1408:25:1408:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1410:13:1410:17 | mut a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1411:13:1411:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1411:20:1411:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1411:20:1411:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1411:26:1411:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1412:12:1412:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1413:17:1413:17 | z | | file://:0:0:0:0 | () | +| main.rs:1413:21:1413:27 | (...) | | file://:0:0:0:0 | () | +| main.rs:1413:22:1413:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1413:22:1413:26 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1413:26:1413:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1415:13:1415:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1415:13:1415:17 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1415:17:1415:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1417:9:1417:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1431:30:1433:9 | { ... } | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1432:13:1432:31 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1432:23:1432:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1432:23:1432:23 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1432:29:1432:29 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1432:29:1432:29 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1439:16:1439:19 | SelfParam | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1439:22:1439:24 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1439:41:1444:9 | { ... } | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1440:13:1443:13 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1441:20:1441:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1441:20:1441:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1441:20:1441:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1441:29:1441:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1441:29:1441:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1442:20:1442:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1442:20:1442:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1442:20:1442:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1442:29:1442:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1442:29:1442:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1449:23:1449:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1449:23:1449:31 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1449:34:1449:36 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1450:13:1450:16 | self | | file://:0:0:0:0 | & | +| main.rs:1450:13:1450:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1450:13:1450:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1450:13:1450:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1450:23:1450:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1450:23:1450:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1451:13:1451:16 | self | | file://:0:0:0:0 | & | +| main.rs:1451:13:1451:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1451:13:1451:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1451:13:1451:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1451:23:1451:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1451:23:1451:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1457:16:1457:19 | SelfParam | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1457:22:1457:24 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1457:41:1462:9 | { ... } | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1458:13:1461:13 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1459:20:1459:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1459:20:1459:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1459:20:1459:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1459:29:1459:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1459:29:1459:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1460:20:1460:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1460:20:1460:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1460:20:1460:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1460:29:1460:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1460:29:1460:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1467:23:1467:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1467:23:1467:31 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1467:34:1467:36 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1468:13:1468:16 | self | | file://:0:0:0:0 | & | +| main.rs:1468:13:1468:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1468:13:1468:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1468:13:1468:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1468:23:1468:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1468:23:1468:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1469:13:1469:16 | self | | file://:0:0:0:0 | & | +| main.rs:1469:13:1469:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1469:13:1469:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1469:13:1469:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1469:23:1469:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1469:23:1469:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1475:16:1475:19 | SelfParam | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1475:22:1475:24 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1475:41:1480:9 | { ... } | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1476:13:1479:13 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1477:20:1477:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1477:20:1477:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1477:20:1477:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1477:29:1477:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1477:29:1477:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1478:20:1478:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1478:20:1478:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1478:20:1478:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1478:29:1478:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1478:29:1478:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1484:23:1484:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1484:23:1484:31 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1484:34:1484:36 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1485:13:1485:16 | self | | file://:0:0:0:0 | & | +| main.rs:1485:13:1485:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1485:13:1485:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1485:13:1485:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1485:23:1485:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1485:23:1485:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1486:13:1486:16 | self | | file://:0:0:0:0 | & | +| main.rs:1486:13:1486:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1486:13:1486:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1486:13:1486:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1486:23:1486:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1486:23:1486:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1492:16:1492:19 | SelfParam | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1492:22:1492:24 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1492:41:1497:9 | { ... } | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1493:13:1496:13 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1494:20:1494:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1494:20:1494:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1494:20:1494:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1494:29:1494:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1494:29:1494:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1495:20:1495:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1495:20:1495:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1495:20:1495:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1495:29:1495:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1495:29:1495:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1501:23:1501:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1501:23:1501:31 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1501:34:1501:36 | rhs | | main.rs:1424:5:1429:5 | Vec2 | | 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:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | | main.rs:1502:13:1502:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1502:13:1502:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1502:13:1502:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1502:33:1502:48 | ... > ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | { ... } | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1506:13:1506:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1506:13:1506:50 | ... && ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1506:34:1506:50 | ... >= ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1513:13:1513:18 | i64_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1513:22:1513:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1513:23:1513:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1513:23:1513:34 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1513:31:1513:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1514:13:1514:18 | i64_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1514:22:1514:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1514:23:1514:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1514:23:1514:34 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1514:31:1514:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1515:13:1515:18 | i64_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1515:22:1515:34 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1515:23:1515:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1515:23:1515:33 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1515:30:1515:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1516:13:1516:18 | i64_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1516:22:1516:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1516:23:1516:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1516:23:1516:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1516:31:1516:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1517:13:1517:18 | i64_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1517:22:1517:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1517:23:1517:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1517:23:1517:34 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1517:30:1517:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1518:13:1518:18 | i64_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1518:22:1518:37 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1518:23:1518:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1518:23:1518:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1518:32:1518:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1521:13:1521:19 | i64_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:1521:23:1521:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1521:23:1521:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1521:31:1521:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1522:13:1522:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | -| main.rs:1522:23:1522:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1522:23:1522:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1522:31:1522:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1523:13:1523:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | -| main.rs:1523:23:1523:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1523:23:1523:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1523:31:1523:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1524:13:1524:19 | i64_div | | {EXTERNAL LOCATION} | i64 | -| main.rs:1524:23:1524:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1524:23:1524:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1524:31:1524:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1525:13:1525:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | -| main.rs:1525:23:1525:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1525:23:1525:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1525:31:1525:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1528:13:1528:30 | mut i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1528:34:1528:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1529:9:1529:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1529:9:1529:31 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1529:27:1529:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1531:13:1531:30 | mut i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1531:34:1531:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1532:9:1532:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1532:9:1532:31 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1532:27:1532:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1534:13:1534:30 | mut i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1534:34:1534:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1535:9:1535:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1535:9:1535:31 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1535:27:1535:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1537:13:1537:30 | mut i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1537:34:1537:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1538:9:1538:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1538:9:1538:31 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1538:27:1538:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1540:13:1540:30 | mut i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1540:34:1540:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1541:9:1541:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1541:9:1541:31 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1541:27:1541:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1544:13:1544:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | -| main.rs:1544:26:1544:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1544:26:1544:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1544:34:1544:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1545:13:1545:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1545:25:1545:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1545:25:1545:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1545:33:1545:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:13:1546:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:26:1546:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:26:1546:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:34:1546:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:13:1547:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:23:1547:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:23:1547:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:32:1547:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:13:1548:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:23:1548:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:23:1548:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:32:1548:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1551:13:1551:33 | mut i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1551:37:1551:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1552:9:1552:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1552:9:1552:34 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1552:30:1552:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1554:13:1554:32 | mut i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1554:36:1554:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1555:9:1555:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1555:9:1555:33 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1555:29:1555:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1557:13:1557:33 | mut i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1557:37:1557:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1558:9:1558:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1558:9:1558:34 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1558:30:1558:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1560:13:1560:30 | mut i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1560:34:1560:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1561:9:1561:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1561:9:1561:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1561:28:1561:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1563:13:1563:30 | mut i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1563:34:1563:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1564:9:1564:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1564:9:1564:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1564:28:1564:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1566:13:1566:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | -| main.rs:1566:23:1566:28 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1566:24:1566:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1567:13:1567:19 | i64_not | | {EXTERNAL LOCATION} | i64 | -| main.rs:1567:23:1567:28 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1567:24:1567:28 | 54i64 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1570:28:1570:28 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:34:1570:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1570:34:1570:34 | 2 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1571:28:1571:28 | 3 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:34:1571:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1571:34:1571:34 | 4 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1574:13:1574:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1574:23:1574:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1574:23:1574:30 | ... == ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | bool | -| main.rs:1575:23:1575:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1575:23:1575:30 | ... != ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | bool | -| main.rs:1576:23:1576:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1576:23:1576:29 | ... < ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | bool | -| main.rs:1577:23:1577:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1577:23:1577:30 | ... <= ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | bool | -| main.rs:1578:23:1578:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1578:23:1578:29 | ... > ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | bool | -| main.rs:1579:23:1579:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1579:23:1579:30 | ... >= ... | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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 | | {EXTERNAL LOCATION} | 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:13:1502:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1502:23:1502:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1502:23:1502:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1503:13:1503:16 | self | | file://:0:0:0:0 | & | +| main.rs:1503:13:1503:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1503:13:1503:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1503:13:1503:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1503:23:1503:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1503:23:1503:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:16:1509:19 | SelfParam | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1509:22:1509:24 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1509:41:1514:9 | { ... } | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1510:13:1513:13 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1511:20:1511:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1511:20:1511:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1511:20:1511:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1511:29:1511:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1511:29:1511:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1512:20:1512:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1512:20:1512:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1512:20:1512:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1512:29:1512:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1512:29:1512:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1518:23:1518:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1518:23:1518:31 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1518:34:1518:36 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1519:13:1519:16 | self | | file://:0:0:0:0 | & | +| main.rs:1519:13:1519:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1519:13:1519:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1519:13:1519:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1519:23:1519:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1519:23:1519:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1520:13:1520:16 | self | | file://:0:0:0:0 | & | +| main.rs:1520:13:1520:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1520:13:1520:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1520:13:1520:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1520:23:1520:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1520:23:1520:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1526:19:1526:22 | SelfParam | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1526:25:1526:27 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1526:44:1531:9 | { ... } | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1527:13:1530:13 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1528:20:1528:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1528:20:1528:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1528:20:1528:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1528:29:1528:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1528:29:1528:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1529:20:1529:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1529:20:1529:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1529:20:1529:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1529:29:1529:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1529:29:1529:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1535:26:1535:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1535:26:1535:34 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1535:37:1535:39 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1536:13:1536:16 | self | | file://:0:0:0:0 | & | +| main.rs:1536:13:1536:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1536:13:1536:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1536:13:1536:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1536:23:1536:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1536:23:1536:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1537:13:1537:16 | self | | file://:0:0:0:0 | & | +| main.rs:1537:13:1537:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1537:13:1537:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1537:13:1537:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1537:23:1537:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1537:23:1537:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1543:18:1543:21 | SelfParam | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1543:24:1543:26 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1543:43:1548:9 | { ... } | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1544:13:1547:13 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1545:20:1545:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1545:20:1545:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1545:20:1545:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1545:29:1545:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1545:29:1545:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:20:1546:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1546:20:1546:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:20:1546:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:29:1546:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1546:29:1546:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1552:25:1552:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1552:25:1552:33 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1552:36:1552:38 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1553:13:1553:16 | self | | file://:0:0:0:0 | & | +| main.rs:1553:13:1553:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1553:13:1553:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1553:13:1553:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1553:23:1553:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1553:23:1553:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1554:13:1554:16 | self | | file://:0:0:0:0 | & | +| main.rs:1554:13:1554:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1554:13:1554:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1554:13:1554:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1554:23:1554:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1554:23:1554:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1560:19:1560:22 | SelfParam | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1560:25:1560:27 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1560:44:1565:9 | { ... } | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1561:13:1564:13 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1562:20:1562:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1562:20:1562:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1562:20:1562:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1562:29:1562:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1562:29:1562:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1563:20:1563:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1563:20:1563:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1563:20:1563:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1563:29:1563:31 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1563:29:1563:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:26:1569:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1569:26:1569:34 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1569:37:1569:39 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1570:13:1570:16 | self | | file://:0:0:0:0 | & | +| main.rs:1570:13:1570:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1570:13:1570:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1570:13:1570:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1570:23:1570:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1570:23:1570:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1571:13:1571:16 | self | | file://:0:0:0:0 | & | +| main.rs:1571:13:1571:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1571:13:1571:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1571:13:1571:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1571:23:1571:25 | rhs | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1571:23:1571:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1577:16:1577:19 | SelfParam | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1577:22:1577:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1577:40:1582:9 | { ... } | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1578:13:1581:13 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1579:20:1579:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1579:20:1579:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1579:20:1579:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1579:30:1579:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1580:20:1580:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1580:20:1580:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1580:20:1580:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1580:30:1580:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1586:23:1586:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1586:23:1586:31 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1586:34:1586:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1587:13:1587:16 | self | | file://:0:0:0:0 | & | +| main.rs:1587:13:1587:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1587:13:1587:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1587:13:1587:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1587:24:1587:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1588:13:1588:16 | self | | file://:0:0:0:0 | & | +| main.rs:1588:13:1588:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1588:13:1588:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1588:13:1588:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1588:24:1588:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1594:16:1594:19 | SelfParam | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1594:22:1594:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1594:40:1599:9 | { ... } | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1595:13:1598:13 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1596:20:1596:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1596:20:1596:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1596:20:1596:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1596:30:1596:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1597:20:1597:23 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1597:20:1597:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1597:20:1597:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1597:30:1597:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1603:23:1603:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1603:23:1603:31 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1603:34:1603:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1604:13:1604:16 | self | | file://:0:0:0:0 | & | +| main.rs:1604:13:1604:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1604:13:1604:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1604:13:1604:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1604:24:1604:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1605:13:1605:16 | self | | file://:0:0:0:0 | & | +| main.rs:1605:13:1605:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1605:13:1605:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1605:13:1605:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1605:24:1605:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1611:16:1611:19 | SelfParam | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1611:30:1616:9 | { ... } | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1612:13:1615:13 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1613:20:1613:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1613:21:1613:24 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1613:21:1613:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1614:20:1614:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1614:21:1614:24 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1614:21:1614:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1621:16:1621:19 | SelfParam | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1621:30:1626:9 | { ... } | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1622:13:1625:13 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1623:20:1623:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1623:21:1623:24 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1623:21:1623:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1624:20:1624:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1624:21:1624:24 | self | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1624:21:1624:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1630:15:1630:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1630:15:1630:19 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1630:22:1630:26 | other | | file://:0:0:0:0 | & | +| main.rs:1630:22:1630:26 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1630:44:1632:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1631:13:1631:16 | self | | file://:0:0:0:0 | & | +| main.rs:1631:13:1631:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1631:13:1631:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1631:13:1631:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1631:13:1631:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1631:23:1631:27 | other | | file://:0:0:0:0 | & | +| main.rs:1631:23:1631:27 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1631:23:1631:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1631:34:1631:37 | self | | file://:0:0:0:0 | & | +| main.rs:1631:34:1631:37 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1631:34:1631:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1631:34:1631:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1631:44:1631:48 | other | | file://:0:0:0:0 | & | +| main.rs:1631:44:1631:48 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1631:44:1631:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1634:15:1634:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1634:15:1634:19 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1634:22:1634:26 | other | | file://:0:0:0:0 | & | +| main.rs:1634:22:1634:26 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1634:44:1636:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1635:13:1635:16 | self | | file://:0:0:0:0 | & | +| main.rs:1635:13:1635:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1635:13:1635:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1635:13:1635:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1635:13:1635:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1635:23:1635:27 | other | | file://:0:0:0:0 | & | +| main.rs:1635:23:1635:27 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1635:23:1635:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1635:34:1635:37 | self | | file://:0:0:0:0 | & | +| main.rs:1635:34:1635:37 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1635:34:1635:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1635:34:1635:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1635:44:1635:48 | other | | file://:0:0:0:0 | & | +| main.rs:1635:44:1635:48 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1635:44:1635:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1640:24:1640:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1640:24:1640:28 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1640:31:1640:35 | other | | file://:0:0:0:0 | & | +| main.rs:1640:31:1640:35 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1640:75:1642:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1640:75:1642:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1641:13:1641:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1641:13:1641:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1641:13:1641:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1641:14:1641:17 | self | | file://:0:0:0:0 | & | +| main.rs:1641:14:1641:17 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1641:14:1641:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1641:14:1641:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1641:23:1641:26 | self | | file://:0:0:0:0 | & | +| main.rs:1641:23:1641:26 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1641:23:1641:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1641:43:1641:62 | &... | | file://:0:0:0:0 | & | +| main.rs:1641:43:1641:62 | &... | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1641:44:1641:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1641:45:1641:49 | other | | file://:0:0:0:0 | & | +| main.rs:1641:45:1641:49 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1641:45:1641:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1641:45:1641:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1641:55:1641:59 | other | | file://:0:0:0:0 | & | +| main.rs:1641:55:1641:59 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1641:55:1641:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1644:15:1644:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1644:15:1644:19 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1644:22:1644:26 | other | | file://:0:0:0:0 | & | +| main.rs:1644:22:1644:26 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1644:44:1646:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1645:13:1645:16 | self | | file://:0:0:0:0 | & | +| main.rs:1645:13:1645:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1645:13:1645:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1645:13:1645:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1645:13:1645:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1645:22:1645:26 | other | | file://:0:0:0:0 | & | +| main.rs:1645:22:1645:26 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1645:22:1645:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1645:33:1645:36 | self | | file://:0:0:0:0 | & | +| main.rs:1645:33:1645:36 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1645:33:1645:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1645:33:1645:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1645:42:1645:46 | other | | file://:0:0:0:0 | & | +| main.rs:1645:42:1645:46 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1645:42:1645:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1648:15:1648:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1648:15:1648:19 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1648:22:1648:26 | other | | file://:0:0:0:0 | & | +| main.rs:1648:22:1648:26 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1648:44:1650:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1649:13:1649:16 | self | | file://:0:0:0:0 | & | +| main.rs:1649:13:1649:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1649:13:1649:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1649:13:1649:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1649:13:1649:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1649:23:1649:27 | other | | file://:0:0:0:0 | & | +| main.rs:1649:23:1649:27 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1649:23:1649:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1649:34:1649:37 | self | | file://:0:0:0:0 | & | +| main.rs:1649:34:1649:37 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1649:34:1649:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1649:34:1649:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1649:44:1649:48 | other | | file://:0:0:0:0 | & | +| main.rs:1649:44:1649:48 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1649:44:1649:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1652:15:1652:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1652:15:1652:19 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1652:22:1652:26 | other | | file://:0:0:0:0 | & | +| main.rs:1652:22:1652:26 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1652:44:1654:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1653:13:1653:16 | self | | file://:0:0:0:0 | & | +| main.rs:1653:13:1653:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1653:13:1653:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1653:13:1653:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1653:13:1653:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1653:22:1653:26 | other | | file://:0:0:0:0 | & | +| main.rs:1653:22:1653:26 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1653:22:1653:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1653:33:1653:36 | self | | file://:0:0:0:0 | & | +| main.rs:1653:33:1653:36 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1653:33:1653:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1653:33:1653:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1653:42:1653:46 | other | | file://:0:0:0:0 | & | +| main.rs:1653:42:1653:46 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1653:42:1653:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1656:15:1656:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1656:15:1656:19 | SelfParam | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1656:22:1656:26 | other | | file://:0:0:0:0 | & | +| main.rs:1656:22:1656:26 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1656:44:1658:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1657:13:1657:16 | self | | file://:0:0:0:0 | & | +| main.rs:1657:13:1657:16 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1657:13:1657:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1657:13:1657:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1657:13:1657:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1657:23:1657:27 | other | | file://:0:0:0:0 | & | +| main.rs:1657:23:1657:27 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1657:23:1657:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1657:34:1657:37 | self | | file://:0:0:0:0 | & | +| main.rs:1657:34:1657:37 | self | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1657:34:1657:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1657:34:1657:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1657:44:1657:48 | other | | file://:0:0:0:0 | & | +| main.rs:1657:44:1657:48 | other | &T | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1657:44:1657:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1664:13:1664:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1664:22:1664:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1664:23:1664:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1664:23:1664:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1664:31:1664:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1665:13:1665:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1665:22:1665:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1665:23:1665:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1665:23:1665:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1665:31:1665:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1666:13:1666:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1666:22:1666:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1666:23:1666:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1666:23:1666:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1666:30:1666:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1667:13:1667:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1667:22:1667:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1667:23:1667:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1667:23:1667:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1667:31:1667:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1668:13:1668:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1668:22:1668:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1668:23:1668:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1668:23:1668:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1668:30:1668:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1669:13:1669:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1669:22:1669:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1669:23:1669:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1669:23:1669:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1669:32:1669:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1672:13:1672:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:1672:23:1672:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1672:23:1672:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1672:31:1672:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1673:13:1673:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:1673:23:1673:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1673:23:1673:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1673:31:1673:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1674:13:1674:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:1674:23:1674:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1674:23:1674:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1674:31:1674:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1675:13:1675:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:1675:23:1675:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1675:23:1675:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1675:31:1675:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1676:13:1676:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:1676:23:1676:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1676:23:1676:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1676:31:1676:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1679:13:1679:30 | mut i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1679:34:1679:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1680:9:1680:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1680:9:1680:31 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1680:27:1680:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1682:13:1682:30 | mut i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1682:34:1682:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1683:9:1683:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1683:9:1683:31 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1683:27:1683:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1685:13:1685:30 | mut i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1685:34:1685:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1686:9:1686:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1686:9:1686:31 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1686:27:1686:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1688:13:1688:30 | mut i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1688:34:1688:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1689:9:1689:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1689:9:1689:31 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1689:27:1689:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1691:13:1691:30 | mut i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1691:34:1691:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1692:9:1692:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1692:9:1692:31 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1692:27:1692:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1695:13:1695:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:1695:26:1695:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1695:26:1695:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1695:34:1695:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1696:13:1696:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1696:25:1696:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1696:25:1696:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1696:33:1696:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1697:13:1697:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1697:26:1697:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1697:26:1697:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1697:34:1697:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1698:13:1698:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:1698:23:1698:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1698:23:1698:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1698:32:1698:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1699:13:1699:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:1699:23:1699:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1699:23:1699:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1699:32:1699:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1702:13:1702:33 | mut i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1702:37:1702:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1703:9:1703:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1703:9:1703:34 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1703:30:1703:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1705:13:1705:32 | mut i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1705:36:1705:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1706:9:1706:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1706:9:1706:33 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1706:29:1706:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1708:13:1708:33 | mut i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1708:37:1708:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1709:9:1709:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1709:9:1709:34 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1709:30:1709:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1711:13:1711:30 | mut i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1711:34:1711:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1712:9:1712:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1712:9:1712:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1712:28:1712:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1714:13:1714:30 | mut i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1714:34:1714:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1715:9:1715:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1715:9:1715:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1715:28:1715:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1717:13:1717:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:1717:23:1717:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1717:24:1717:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1718:13:1718:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:1718:23:1718:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1718:24:1718:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1721:13:1721:14 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1721:18:1721:36 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1721:28:1721:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1721:28:1721:28 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1721:34:1721:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1721:34:1721:34 | 2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1722:13:1722:14 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1722:18:1722:36 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1722:28:1722:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1722:28:1722:28 | 3 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1722:34:1722:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1722:34:1722:34 | 4 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1725:13:1725:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1725:23:1725:24 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1725:23:1725:30 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1725:29:1725:30 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1726:13:1726:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1726:23:1726:24 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1726:23:1726:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1726:29:1726:30 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1727:13:1727:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1727:23:1727:24 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1727:23:1727:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1727:28:1727:29 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1728:13:1728:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1728:23:1728:24 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1728:23:1728:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1728:29:1728:30 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1729:13:1729:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1729:23:1729:24 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1729:23:1729:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1729:28:1729:29 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1730:13:1730:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1730:23:1730:24 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1730:23:1730:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1730:29:1730:30 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1733:13:1733:20 | vec2_add | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1733:24:1733:25 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1733:24:1733:30 | ... + ... | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1733:29:1733:30 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1734:13:1734:20 | vec2_sub | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1734:24:1734:25 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1734:24:1734:30 | ... - ... | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1734:29:1734:30 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1735:13:1735:20 | vec2_mul | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1735:24:1735:25 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1735:24:1735:30 | ... * ... | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1735:29:1735:30 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1736:13:1736:20 | vec2_div | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1736:24:1736:25 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1736:24:1736:30 | ... / ... | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1736:29:1736:30 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1737:13:1737:20 | vec2_rem | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1737:24:1737:25 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1737:24:1737:30 | ... % ... | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1737:29:1737:30 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1740:13:1740:31 | mut vec2_add_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1740:35:1740:36 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1741:9:1741:23 | vec2_add_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1741:9:1741:29 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1741:28:1741:29 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1743:13:1743:31 | mut vec2_sub_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1743:35:1743:36 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1744:9:1744:23 | vec2_sub_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1744:9:1744:29 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1744:28:1744:29 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1746:13:1746:31 | mut vec2_mul_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1746:35:1746:36 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1747:9:1747:23 | vec2_mul_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1747:9:1747:29 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1747:28:1747:29 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1749:13:1749:31 | mut vec2_div_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1749:35:1749:36 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1750:9:1750:23 | vec2_div_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1750:9:1750:29 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1750:28:1750:29 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1752:13:1752:31 | mut vec2_rem_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1752:35:1752:36 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1753:9:1753:23 | vec2_rem_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1753:9:1753:29 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1753:28:1753:29 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1756:13:1756:23 | vec2_bitand | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1756:27:1756:28 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1756:27:1756:33 | ... & ... | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1756:32:1756:33 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1757:13:1757:22 | vec2_bitor | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1757:26:1757:27 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1757:26:1757:32 | ... \| ... | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1757:31:1757:32 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1758:13:1758:23 | vec2_bitxor | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1758:27:1758:28 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1758:27:1758:33 | ... ^ ... | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1758:32:1758:33 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1759:13:1759:20 | vec2_shl | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1759:24:1759:25 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1759:24:1759:33 | ... << ... | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1759:30:1759:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1760:13:1760:20 | vec2_shr | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1760:24:1760:25 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1760:24:1760:33 | ... >> ... | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1760:30:1760:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1763:13:1763:34 | mut vec2_bitand_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1763:38:1763:39 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1764:9:1764:26 | vec2_bitand_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1764:9:1764:32 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1764:31:1764:32 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1766:13:1766:33 | mut vec2_bitor_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1766:37:1766:38 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1767:9:1767:25 | vec2_bitor_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1767:9:1767:31 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1767:30:1767:31 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1769:13:1769:34 | mut vec2_bitxor_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1769:38:1769:39 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1770:9:1770:26 | vec2_bitxor_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1770:9:1770:32 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1770:31:1770:32 | v2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1772:13:1772:31 | mut vec2_shl_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1772:35:1772:36 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1773:9:1773:23 | vec2_shl_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1773:9:1773:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1773:29:1773:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1775:13:1775:31 | mut vec2_shr_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1775:35:1775:36 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1776:9:1776:23 | vec2_shr_assign | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1776:9:1776:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1776:29:1776:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1779:13:1779:20 | vec2_neg | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1779:24:1779:26 | - ... | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1779:25:1779:26 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1780:13:1780:20 | vec2_not | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1780:24:1780:26 | ! ... | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1780:25:1780:26 | v1 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1783:13:1783:24 | default_vec2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1783:28:1783:45 | ...::default(...) | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1784:13:1784:26 | vec2_zero_plus | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1784:30:1784:48 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1784:30:1784:63 | ... + ... | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1784:40:1784:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1784:40:1784:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1784:46:1784:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1784:46:1784:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1784:52:1784:63 | default_vec2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1788:13:1788:24 | default_vec2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1788:28:1788:45 | ...::default(...) | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1789:13:1789:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | +| main.rs:1789:30:1789:48 | Vec2 {...} | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1789:30:1789:64 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1789:40:1789:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1789:40:1789:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1789:46:1789:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1789:46:1789:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1789:53:1789:64 | default_vec2 | | main.rs:1424:5:1429:5 | Vec2 | +| main.rs:1799:18:1799:21 | SelfParam | | main.rs:1796:5:1796:14 | S1 | +| main.rs:1802:25:1804:5 | { ... } | | main.rs:1796:5:1796:14 | S1 | +| main.rs:1803:9:1803:10 | S1 | | main.rs:1796:5:1796:14 | S1 | +| main.rs:1806:41:1808:5 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1806:41:1808:5 | { ... } | | main.rs:1806:16:1806:39 | ImplTraitTypeRepr | +| main.rs:1806:41:1808:5 | { ... } | Output | main.rs:1796:5:1796:14 | S1 | +| main.rs:1807:9:1807:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1807:9:1807:20 | { ... } | | main.rs:1806:16:1806:39 | ImplTraitTypeRepr | +| main.rs:1807:9:1807:20 | { ... } | Output | main.rs:1796:5:1796:14 | S1 | +| main.rs:1807:17:1807:18 | S1 | | main.rs:1796:5:1796:14 | S1 | +| main.rs:1816:13:1816:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:1816:13:1816:42 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:1816:13:1816:42 | SelfParam | Ptr.&T | main.rs:1810:5:1810:14 | S2 | +| main.rs:1817:13:1817:15 | _cx | | file://:0:0:0:0 | & | +| main.rs:1817:13:1817:15 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:1818:44:1820:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:1818:44:1820:9 | { ... } | T | main.rs:1796:5:1796:14 | S1 | +| main.rs:1819:13:1819:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:1819:13:1819:38 | ...::Ready(...) | T | main.rs:1796:5:1796:14 | S1 | +| main.rs:1819:36:1819:37 | S1 | | main.rs:1796:5:1796:14 | S1 | +| main.rs:1823:41:1825:5 | { ... } | | main.rs:1810:5:1810:14 | S2 | +| main.rs:1823:41:1825:5 | { ... } | | main.rs:1823:16:1823:39 | ImplTraitTypeRepr | +| main.rs:1824:9:1824:10 | S2 | | main.rs:1810:5:1810:14 | S2 | +| main.rs:1824:9:1824:10 | S2 | | main.rs:1823:16:1823:39 | ImplTraitTypeRepr | +| main.rs:1828:9:1828:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1828:9:1828:12 | f1(...) | Output | main.rs:1796:5:1796:14 | S1 | +| main.rs:1828:9:1828:18 | await ... | | main.rs:1796:5:1796:14 | S1 | +| main.rs:1829:9:1829:12 | f2(...) | | main.rs:1806:16:1806:39 | ImplTraitTypeRepr | +| main.rs:1829:9:1829:18 | await ... | | main.rs:1796:5:1796:14 | S1 | +| main.rs:1830:9:1830:12 | f3(...) | | main.rs:1823:16:1823:39 | ImplTraitTypeRepr | +| main.rs:1830:9:1830:18 | await ... | | main.rs:1796:5:1796:14 | S1 | +| main.rs:1831:9:1831:10 | S2 | | main.rs:1810:5:1810:14 | S2 | +| main.rs:1831:9:1831:16 | await S2 | | main.rs:1796:5:1796:14 | S1 | +| main.rs:1832:13:1832:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1832:13:1832:13 | b | Output | main.rs:1796:5:1796:14 | S1 | +| main.rs:1832:17:1832:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1832:17:1832:28 | { ... } | Output | main.rs:1796:5:1796:14 | S1 | +| main.rs:1832:25:1832:26 | S1 | | main.rs:1796:5:1796:14 | S1 | +| main.rs:1833:9:1833:9 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1833:9:1833:9 | b | Output | main.rs:1796:5:1796:14 | S1 | +| main.rs:1833:9:1833:15 | await b | | main.rs:1796:5:1796:14 | S1 | +| main.rs:1842:15:1842:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1842:15:1842:19 | SelfParam | &T | main.rs:1841:5:1843:5 | Self [trait Trait1] | +| main.rs:1846:15:1846:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1846:15:1846:19 | SelfParam | &T | main.rs:1845:5:1847:5 | Self [trait Trait2] | +| main.rs:1850:15:1850:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1850:15:1850:19 | SelfParam | &T | main.rs:1838:5:1838:14 | S1 | +| main.rs:1854:15:1854:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1854:15:1854:19 | SelfParam | &T | main.rs:1838:5:1838:14 | S1 | +| main.rs:1857:37:1859:5 | { ... } | | main.rs:1838:5:1838:14 | S1 | +| main.rs:1857:37:1859:5 | { ... } | | main.rs:1857:16:1857:35 | ImplTraitTypeRepr | +| main.rs:1858:9:1858:10 | S1 | | main.rs:1838:5:1838:14 | S1 | +| main.rs:1858:9:1858:10 | S1 | | main.rs:1857:16:1857:35 | ImplTraitTypeRepr | +| main.rs:1862:18:1862:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1862:18:1862:22 | SelfParam | &T | main.rs:1861:5:1863:5 | Self [trait MyTrait] | +| main.rs:1866:18:1866:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1866:18:1866:22 | SelfParam | &T | main.rs:1838:5:1838:14 | S1 | +| main.rs:1866:31:1868:9 | { ... } | | main.rs:1839:5:1839:14 | S2 | +| main.rs:1867:13:1867:14 | S2 | | main.rs:1839:5:1839:14 | S2 | +| main.rs:1871:45:1873:5 | { ... } | | main.rs:1838:5:1838:14 | S1 | +| main.rs:1871:45:1873:5 | { ... } | | main.rs:1871:28:1871:43 | ImplTraitTypeRepr | +| main.rs:1872:9:1872:10 | S1 | | main.rs:1838:5:1838:14 | S1 | +| main.rs:1872:9:1872:10 | S1 | | main.rs:1871:28:1871:43 | ImplTraitTypeRepr | +| main.rs:1875:41:1875:41 | t | | main.rs:1875:26:1875:38 | B | +| main.rs:1875:52:1877:5 | { ... } | | main.rs:1875:23:1875:23 | A | +| main.rs:1876:9:1876:9 | t | | main.rs:1875:26:1875:38 | B | +| main.rs:1876:9:1876:17 | t.get_a() | | main.rs:1875:23:1875:23 | A | +| main.rs:1879:26:1879:26 | t | | main.rs:1879:29:1879:43 | ImplTraitTypeRepr | +| main.rs:1879:51:1881:5 | { ... } | | main.rs:1879:23:1879:23 | A | +| main.rs:1880:9:1880:9 | t | | main.rs:1879:29:1879:43 | ImplTraitTypeRepr | +| main.rs:1880:9:1880:17 | t.get_a() | | main.rs:1879:23:1879:23 | A | +| main.rs:1884:13:1884:13 | x | | main.rs:1857:16:1857:35 | ImplTraitTypeRepr | +| main.rs:1884:17:1884:20 | f1(...) | | main.rs:1857:16:1857:35 | ImplTraitTypeRepr | +| main.rs:1885:9:1885:9 | x | | main.rs:1857:16:1857:35 | ImplTraitTypeRepr | +| main.rs:1886:9:1886:9 | x | | main.rs:1857:16:1857:35 | ImplTraitTypeRepr | +| main.rs:1887:13:1887:13 | a | | main.rs:1871:28:1871:43 | ImplTraitTypeRepr | +| main.rs:1887:17:1887:32 | get_a_my_trait(...) | | main.rs:1871:28:1871:43 | ImplTraitTypeRepr | +| main.rs:1888:13:1888:13 | b | | main.rs:1839:5:1839:14 | S2 | +| main.rs:1888:17:1888:33 | uses_my_trait1(...) | | main.rs:1839:5:1839:14 | S2 | +| main.rs:1888:32:1888:32 | a | | main.rs:1871:28:1871:43 | ImplTraitTypeRepr | +| main.rs:1889:13:1889:13 | a | | main.rs:1871:28:1871:43 | ImplTraitTypeRepr | +| main.rs:1889:17:1889:32 | get_a_my_trait(...) | | main.rs:1871:28:1871:43 | ImplTraitTypeRepr | +| main.rs:1890:13:1890:13 | c | | main.rs:1839:5:1839:14 | S2 | +| main.rs:1890:17:1890:33 | uses_my_trait2(...) | | main.rs:1839:5:1839:14 | S2 | +| main.rs:1890:32:1890:32 | a | | main.rs:1871:28:1871:43 | ImplTraitTypeRepr | +| main.rs:1891:13:1891:13 | d | | main.rs:1839:5:1839:14 | S2 | +| main.rs:1891:17:1891:34 | uses_my_trait2(...) | | main.rs:1839:5:1839:14 | S2 | +| main.rs:1891:32:1891:33 | S1 | | main.rs:1838:5:1838:14 | S1 | +| main.rs:1902:16:1902:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1902:16:1902:20 | SelfParam | &T | main.rs:1898:5:1899:13 | S | +| main.rs:1902:31:1904:9 | { ... } | | main.rs:1898:5:1899:13 | S | +| main.rs:1903:13:1903:13 | S | | main.rs:1898:5:1899:13 | S | +| main.rs:1913:26:1915:9 | { ... } | | main.rs:1907:5:1910:5 | MyVec | +| main.rs:1913:26:1915:9 | { ... } | T | main.rs:1912:10:1912:10 | T | +| main.rs:1914:13:1914:38 | MyVec {...} | | main.rs:1907:5:1910:5 | MyVec | +| main.rs:1914:13:1914:38 | MyVec {...} | T | main.rs:1912:10:1912:10 | T | +| main.rs:1914:27:1914:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:1914:27:1914:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:1914:27:1914:36 | ...::new(...) | T | main.rs:1912:10:1912:10 | T | +| main.rs:1917:17:1917:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1917:17:1917:25 | SelfParam | &T | main.rs:1907:5:1910:5 | MyVec | +| main.rs:1917:17:1917:25 | SelfParam | &T.T | main.rs:1912:10:1912:10 | T | +| main.rs:1917:28:1917:32 | value | | main.rs:1912:10:1912:10 | T | +| main.rs:1918:13:1918:16 | self | | file://:0:0:0:0 | & | +| main.rs:1918:13:1918:16 | self | &T | main.rs:1907:5:1910:5 | MyVec | +| main.rs:1918:13:1918:16 | self | &T.T | main.rs:1912:10:1912:10 | T | +| main.rs:1918:13:1918:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1918:13:1918:21 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:1918:13:1918:21 | self.data | T | main.rs:1912:10:1912:10 | T | +| main.rs:1918:28:1918:32 | value | | main.rs:1912:10:1912:10 | T | +| main.rs:1926:18:1926:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1926:18:1926:22 | SelfParam | &T | main.rs:1907:5:1910:5 | MyVec | +| main.rs:1926:18:1926:22 | SelfParam | &T.T | main.rs:1922:10:1922:10 | T | +| main.rs:1926:25:1926:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1926:56:1928:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1926:56:1928:9 | { ... } | &T | main.rs:1922:10:1922:10 | T | +| main.rs:1927:13:1927:29 | &... | | file://:0:0:0:0 | & | +| main.rs:1927:13:1927:29 | &... | &T | main.rs:1922:10:1922:10 | T | +| main.rs:1927:14:1927:17 | self | | file://:0:0:0:0 | & | +| main.rs:1927:14:1927:17 | self | &T | main.rs:1907:5:1910:5 | MyVec | +| main.rs:1927:14:1927:17 | self | &T.T | main.rs:1922:10:1922:10 | T | +| main.rs:1927:14:1927:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1927:14:1927:22 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:1927:14:1927:22 | self.data | T | main.rs:1922:10:1922:10 | T | +| main.rs:1927:14:1927:29 | ...[index] | | main.rs:1922:10:1922:10 | T | +| main.rs:1927:24:1927:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1931:22:1931:26 | slice | | file://:0:0:0:0 | & | +| main.rs:1931:22:1931:26 | slice | | file://:0:0:0:0 | [] | +| main.rs:1931:22:1931:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1931:22:1931:26 | slice | &T.[T] | main.rs:1898:5:1899:13 | S | +| main.rs:1938:13:1938:13 | x | | main.rs:1898:5:1899:13 | S | +| main.rs:1938:17:1938:21 | slice | | file://:0:0:0:0 | & | +| main.rs:1938:17:1938:21 | slice | | file://:0:0:0:0 | [] | +| main.rs:1938:17:1938:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1938:17:1938:21 | slice | &T.[T] | main.rs:1898:5:1899:13 | S | +| main.rs:1938:17:1938:24 | slice[0] | | main.rs:1898:5:1899:13 | S | +| main.rs:1938:17:1938:30 | ... .foo() | | main.rs:1898:5:1899:13 | S | +| main.rs:1938:23:1938:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1942:13:1942:19 | mut vec | | main.rs:1907:5:1910:5 | MyVec | +| main.rs:1942:13:1942:19 | mut vec | T | main.rs:1898:5:1899:13 | S | +| main.rs:1942:23:1942:34 | ...::new(...) | | main.rs:1907:5:1910:5 | MyVec | +| main.rs:1942:23:1942:34 | ...::new(...) | T | main.rs:1898:5:1899:13 | S | +| main.rs:1943:9:1943:11 | vec | | main.rs:1907:5:1910:5 | MyVec | +| main.rs:1943:9:1943:11 | vec | T | main.rs:1898:5:1899:13 | S | +| main.rs:1943:18:1943:18 | S | | main.rs:1898:5:1899:13 | S | +| main.rs:1944:9:1944:11 | vec | | main.rs:1907:5:1910:5 | MyVec | +| main.rs:1944:9:1944:11 | vec | T | main.rs:1898:5:1899:13 | S | +| main.rs:1944:9:1944:14 | vec[0] | | main.rs:1898:5:1899:13 | S | +| main.rs:1944:9:1944:20 | ... .foo() | | main.rs:1898:5:1899:13 | S | +| main.rs:1944:13:1944:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1944:13:1944:13 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:1946:13:1946:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1946:13:1946:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1946:13:1946:14 | xs | [T;...] | main.rs:1898:5:1899:13 | S | +| main.rs:1946:13:1946:14 | xs | [T] | main.rs:1898:5:1899:13 | S | +| main.rs:1946:21:1946:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1946:26:1946:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1946:26:1946:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1946:26:1946:28 | [...] | [T;...] | main.rs:1898:5:1899:13 | S | +| main.rs:1946:26:1946:28 | [...] | [T] | main.rs:1898:5:1899:13 | S | +| main.rs:1946:27:1946:27 | S | | main.rs:1898:5:1899:13 | S | +| main.rs:1947:13:1947:13 | x | | main.rs:1898:5:1899:13 | S | +| main.rs:1947:17:1947:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1947:17:1947:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1947:17:1947:18 | xs | [T;...] | main.rs:1898:5:1899:13 | S | +| main.rs:1947:17:1947:18 | xs | [T] | main.rs:1898:5:1899:13 | S | +| main.rs:1947:17:1947:21 | xs[0] | | main.rs:1898:5:1899:13 | S | +| main.rs:1947:17:1947:27 | ... .foo() | | main.rs:1898:5:1899:13 | S | +| main.rs:1947:20:1947:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1949:23:1949:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:1949:23:1949:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1949:23:1949:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1949:23:1949:25 | &xs | &T.[T;...] | main.rs:1898:5:1899:13 | S | +| main.rs:1949:23:1949:25 | &xs | &T.[T] | main.rs:1898:5:1899:13 | S | +| main.rs:1949:24:1949:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1949:24:1949:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1949:24:1949:25 | xs | [T;...] | main.rs:1898:5:1899:13 | S | +| main.rs:1949:24:1949:25 | xs | [T] | main.rs:1898:5:1899:13 | S | +| main.rs:1955:25:1955:35 | "Hello, {}" | | {EXTERNAL LOCATION} | str | +| main.rs:1955:25:1955:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:1955:25:1955:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:1955:38:1955:45 | "World!" | | {EXTERNAL LOCATION} | str | +| main.rs:1961:19:1961:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1961:19:1961:23 | SelfParam | &T | main.rs:1960:5:1962:5 | Self [trait MyAdd] | +| main.rs:1961:26:1961:30 | value | | main.rs:1960:17:1960:17 | T | +| main.rs:1966:19:1966:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1966:19:1966:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1966:26:1966:30 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:1966:46:1968:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1967:13:1967:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:19:1973:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1973:19:1973:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:26:1973:30 | value | | file://:0:0:0:0 | & | +| main.rs:1973:26:1973:30 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:47:1975:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1974:13:1974:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1974:14:1974:18 | value | | file://:0:0:0:0 | & | +| main.rs:1974:14:1974:18 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1980:19:1980:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1980:19:1980:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1980:26:1980:30 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:1980:47:1982:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1980:47:1982:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1981:13:1981:37 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:1981:13:1981:37 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:1981:16:1981:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:1981:22:1981:26 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1981:22:1981:26 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1981:24:1981:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1981:24:1981:24 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1981:33:1981:37 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1981:33:1981:37 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1981:35:1981:35 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1981:35:1981:35 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1986:13:1986:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1986:13:1986:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1986:22:1986:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1986:22:1986:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1987:9:1987:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1987:9:1987:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1987:9:1987:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1987:18:1987:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1988:9:1988:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1988:9:1988:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1988:9:1988:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1988:18:1988:22 | &5i64 | | file://:0:0:0:0 | & | +| main.rs:1988:18:1988:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1988:19:1988:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1989:9:1989:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1989:9:1989:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1989:9:1989:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1989:18:1989:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1997:26:1999:9 | { ... } | | main.rs:1994:5:1994:24 | MyCallable | +| main.rs:1998:13:1998:25 | MyCallable {...} | | main.rs:1994:5:1994:24 | MyCallable | +| main.rs:2001:17:2001:21 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2001:17:2001:21 | SelfParam | &T | main.rs:1994:5:1994:24 | MyCallable | +| main.rs:2001:31:2003:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2001:31:2003:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2002:13:2002:13 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2002:13:2002:13 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2009:13:2009:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2009:18:2009:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2009:18:2009:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2009:19:2009:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2009:22:2009:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2009:25:2009:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2010:18:2010:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2010:18:2010:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2010:18:2010:41 | ... .map(...) | | file://:0:0:0:0 | [] | +| main.rs:2010:19:2010:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2010:22:2010:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2010:25:2010:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2010:40:2010:40 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2011:18:2011:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2011:18:2011:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2011:19:2011:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2011:22:2011:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2011:25:2011:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2013:13:2013:17 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2013:13:2013:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2013:13:2013:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2013:21:2013:31 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2013:21:2013:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2013:21:2013:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2013:22:2013:24 | 1u8 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2013:22:2013:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2013:27:2013:27 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2013:27:2013:27 | 2 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2013:30:2013:30 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2013:30:2013:30 | 3 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2014:13:2014:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2014:13:2014:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2014:18:2014:22 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2014:18:2014:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2014:18:2014:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2016:13:2016:17 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2016:13:2016:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2016:21:2016:29 | [1u16; 3] | | file://:0:0:0:0 | [] | +| main.rs:2016:21:2016:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2016:22:2016:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2016:28:2016:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2017:13:2017:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2017:18:2017:22 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2017:18:2017:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2019:13:2019:17 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2019:13:2019:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2019:13:2019:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2019:26:2019:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2019:31:2019:39 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2019:31:2019:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2019:31:2019:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2019:32:2019:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2019:32:2019:32 | 1 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2019:35:2019:35 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2019:35:2019:35 | 2 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2019:38:2019:38 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2019:38:2019:38 | 3 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2020:13:2020:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2020:13:2020:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2020:18:2020:22 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2020:18:2020:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2020:18:2020:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2022:13:2022:17 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2022:13:2022:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2022:13:2022:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2022:26:2022:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2022:31:2022:36 | [1; 3] | | file://:0:0:0:0 | [] | +| main.rs:2022:31:2022:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2022:31:2022:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2022:32:2022:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2022:32:2022:32 | 1 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2022:35:2022:35 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2023:13:2023:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2023:13:2023:13 | u | | {EXTERNAL LOCATION} | u64 | +| main.rs:2023:18:2023:22 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2023:18:2023:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2023:18:2023:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2025:13:2025:24 | mut strings1 | | file://:0:0:0:0 | [] | +| main.rs:2025:13:2025:24 | mut strings1 | [T;...] | {EXTERNAL LOCATION} | str | +| main.rs:2025:28:2025:48 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2025:28:2025:48 | [...] | [T;...] | {EXTERNAL LOCATION} | str | +| main.rs:2025:29:2025:33 | "foo" | | {EXTERNAL LOCATION} | str | +| main.rs:2025:36:2025:40 | "bar" | | {EXTERNAL LOCATION} | str | +| main.rs:2025:43:2025:47 | "baz" | | {EXTERNAL LOCATION} | str | +| main.rs:2026:18:2026:26 | &strings1 | | file://:0:0:0:0 | & | +| main.rs:2026:18:2026:26 | &strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2026:18:2026:26 | &strings1 | &T.[T;...] | {EXTERNAL LOCATION} | str | +| main.rs:2026:19:2026:26 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2026:19:2026:26 | strings1 | [T;...] | {EXTERNAL LOCATION} | str | +| main.rs:2027:18:2027:30 | &mut strings1 | | file://:0:0:0:0 | & | +| main.rs:2027:18:2027:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2027:18:2027:30 | &mut strings1 | &T.[T;...] | {EXTERNAL LOCATION} | str | +| main.rs:2027:23:2027:30 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2027:23:2027:30 | strings1 | [T;...] | {EXTERNAL LOCATION} | str | +| main.rs:2028:13:2028:13 | s | | {EXTERNAL LOCATION} | str | +| main.rs:2028:18:2028:25 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2028:18:2028:25 | strings1 | [T;...] | {EXTERNAL LOCATION} | str | +| main.rs:2030:13:2030:20 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2030:13:2030:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2031:9:2035:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2031:9:2035:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2032:13:2032:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2032:26:2032:30 | "foo" | | {EXTERNAL LOCATION} | str | +| main.rs:2033:13:2033:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2033:26:2033:30 | "bar" | | {EXTERNAL LOCATION} | str | +| main.rs:2034:13:2034:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2034:26:2034:30 | "baz" | | {EXTERNAL LOCATION} | str | +| main.rs:2036:13:2036:13 | s | | {EXTERNAL LOCATION} | String | +| main.rs:2036:18:2036:25 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2036:18:2036:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2038:13:2038:20 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2038:13:2038:20 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2038:13:2038:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2039:9:2043:9 | &... | | file://:0:0:0:0 | & | +| main.rs:2039:9:2043:9 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:2039:9:2043:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2039:10:2043:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2039:10:2043:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2040:13:2040:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2040:26:2040:30 | "foo" | | {EXTERNAL LOCATION} | str | +| main.rs:2041:13:2041:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2041:26:2041:30 | "bar" | | {EXTERNAL LOCATION} | str | +| main.rs:2042:13:2042:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2042:26:2042:30 | "baz" | | {EXTERNAL LOCATION} | str | +| main.rs:2044:18:2044:25 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2044:18:2044:25 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2044:18:2044:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2046:13:2046:21 | callables | | file://:0:0:0:0 | [] | +| main.rs:2046:13:2046:21 | callables | [T;...] | main.rs:1994:5:1994:24 | MyCallable | +| main.rs:2046:25:2046:81 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2046:25:2046:81 | [...] | [T;...] | main.rs:1994:5:1994:24 | MyCallable | +| main.rs:2046:26:2046:42 | ...::new(...) | | main.rs:1994:5:1994:24 | MyCallable | +| main.rs:2046:45:2046:61 | ...::new(...) | | main.rs:1994:5:1994:24 | MyCallable | +| main.rs:2046:64:2046:80 | ...::new(...) | | main.rs:1994:5:1994:24 | MyCallable | +| main.rs:2047:13:2047:13 | c | | main.rs:1994:5:1994:24 | MyCallable | +| main.rs:2048:12:2048:20 | callables | | file://:0:0:0:0 | [] | +| main.rs:2048:12:2048:20 | callables | [T;...] | main.rs:1994:5:1994:24 | MyCallable | +| main.rs:2050:17:2050:22 | result | | {EXTERNAL LOCATION} | i64 | +| main.rs:2050:26:2050:26 | c | | main.rs:1994:5:1994:24 | MyCallable | +| main.rs:2050:26:2050:33 | c.call() | | {EXTERNAL LOCATION} | i64 | +| main.rs:2055:18:2055:18 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2055:21:2055:22 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2056:18:2056:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2056:19:2056:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2056:24:2056:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2057:21:2057:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2057:24:2057:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2060:13:2060:18 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2060:13:2060:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2061:9:2064:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | +| main.rs:2061:9:2064:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2062:20:2062:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2063:18:2063:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2065:18:2065:23 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2065:18:2065:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2069:26:2069:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2069:29:2069:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2069:32:2069:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2072:13:2072:18 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2072:13:2072:18 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2072:13:2072:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2072:32:2072:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2072:32:2072:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2072:32:2072:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2072:32:2072:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2072:32:2072:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2072:32:2072:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2072:33:2072:36 | 1u16 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2072:33:2072:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2072:39:2072:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2072:39:2072:39 | 2 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2072:42:2072:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2072:42:2072:42 | 3 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2073:13:2073:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2073:18:2073:23 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2073:18:2073:23 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2073:18:2073:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2075:22:2075:33 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2075:22:2075:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2075:22:2075:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2075:23:2075:26 | 1u16 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2075:23:2075:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2075:29:2075:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2075:29:2075:29 | 2 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2075:32:2075:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2075:32:2075:32 | 3 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2078:13:2078:17 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2078:13:2078:17 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2078:13:2078:17 | vals5 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2078:21:2078:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2078:21:2078:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2078:21:2078:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2078:31:2078:42 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2078:31:2078:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2078:31:2078:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2078:32:2078:35 | 1u32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2078:32:2078:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2078:38:2078:38 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2078:38:2078:38 | 2 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2078:41:2078:41 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2078:41:2078:41 | 3 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2079:13:2079:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2079:18:2079:22 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2079:18:2079:22 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2079:18:2079:22 | vals5 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2081:13:2081:17 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2081:13:2081:17 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2081:13:2081:17 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2081:13:2081:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2081:32:2081:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2081:32:2081:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2081:32:2081:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2081:32:2081:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2081:32:2081:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2081:32:2081:60 | ... .collect() | T | file://:0:0:0:0 | & | +| main.rs:2081:32:2081:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2081:33:2081:36 | 1u64 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2081:33:2081:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2081:39:2081:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2081:39:2081:39 | 2 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2081:42:2081:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2081:42:2081:42 | 3 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2082:13:2082:13 | u | | file://:0:0:0:0 | & | +| main.rs:2082:13:2082:13 | u | &T | {EXTERNAL LOCATION} | u64 | +| main.rs:2082:18:2082:22 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2082:18:2082:22 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2082:18:2082:22 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2082:18:2082:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2084:13:2084:21 | mut vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2084:13:2084:21 | mut vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2084:25:2084:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2084:25:2084:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2085:9:2085:13 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2085:9:2085:13 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2085:20:2085:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2086:18:2086:22 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2086:18:2086:22 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2088:33:2088:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2088:36:2088:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2088:45:2088:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2088:48:2088:48 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2095:13:2095:20 | mut map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2095:13:2095:20 | mut map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2095:24:2095:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2095:24:2095:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2096:9:2096:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2096:9:2096:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2096:9:2096:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2096:21:2096:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2096:24:2096:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2096:24:2096:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2096:33:2096:37 | "one" | | {EXTERNAL LOCATION} | str | +| main.rs:2097:9:2097:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2097:9:2097:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2097:9:2097:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2097:21:2097:21 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2097:24:2097:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2097:24:2097:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2097:33:2097:37 | "two" | | {EXTERNAL LOCATION} | str | +| main.rs:2098:20:2098:23 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2098:20:2098:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2098:20:2098:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | +| main.rs:2099:22:2099:25 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2099:22:2099:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2099:22:2099:34 | map1.values() | | {EXTERNAL LOCATION} | Values | +| main.rs:2100:29:2100:32 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2100:29:2100:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2100:29:2100:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | +| main.rs:2101:29:2101:33 | &map1 | | file://:0:0:0:0 | & | +| main.rs:2101:29:2101:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | +| main.rs:2101:29:2101:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2101:30:2101:33 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2101:30:2101:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2105:13:2105:17 | mut a | | {EXTERNAL LOCATION} | i32 | +| main.rs:2105:13:2105:17 | mut a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2105:26:2105:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2105:26:2105:26 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2107:23:2107:23 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:2107:23:2107:23 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2107:23:2107:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2107:27:2107:28 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2109:13:2109:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:2109:13:2109:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2109:13:2109:18 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2109:18:2109:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2118:5:2118:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2119:5:2119:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2119:20:2119:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2119:41:2119:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2135:5:2135: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 e7c11bcaebf1..2278cde8a8fb 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.ql +++ b/rust/ql/test/library-tests/type-inference/type-inference.ql @@ -55,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/variables/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected index e4c5c7393e43..b95bb1ccc856 100644 --- a/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected @@ -1,9 +1,3 @@ -multipleMethodCallTargets -| main.rs:374:5:374:27 | ... .add_assign(...) | file://:0:0:0:0 | fn add_assign | -| main.rs:374:5:374:27 | ... .add_assign(...) | file://:0:0:0:0 | fn add_assign | -| main.rs:374:5:374:27 | ... .add_assign(...) | file://:0:0:0:0 | fn add_assign | -| main.rs:374:5:374:27 | ... .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 | -| 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 | +multipleCallTargets +| main.rs:85:19:85:40 | ...::from(...) | +| main.rs:102:19:102:40 | ...::from(...) | diff --git a/rust/ql/test/library-tests/variables/Cargo.lock b/rust/ql/test/library-tests/variables/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/variables/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index f45005b51a0d..f74c73a107f5 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -255,6 +255,7 @@ read | main.rs:355:14:355:14 | x | main.rs:355:14:355:14 | x | main.rs:356:13:356:13 | x | | main.rs:362:9:362:9 | v | main.rs:362:9:362:9 | v | main.rs:365:12:365:12 | v | | main.rs:364:9:364:12 | text | main.rs:364:9:364:12 | text | main.rs:366:19:366:22 | text | +| main.rs:371:13:371:13 | a | main.rs:371:13:371:13 | a | main.rs:372:5:372:5 | a | | main.rs:372:5:372:5 | a | main.rs:371:13:371:13 | a | main.rs:373:15:373:15 | a | | main.rs:372:5:372:5 | a | main.rs:371:13:371:13 | a | main.rs:374:11:374:11 | a | | main.rs:374:6:374:11 | &mut a | main.rs:371:13:371:13 | a | main.rs:375:15:375:15 | a | diff --git a/rust/ql/test/library-tests/variables/main.rs b/rust/ql/test/library-tests/variables/main.rs index 89f9fffa8862..493bf8df5409 100644 --- a/rust/ql/test/library-tests/variables/main.rs +++ b/rust/ql/test/library-tests/variables/main.rs @@ -503,7 +503,7 @@ fn phi_read(b1 : bool, b2 : bool) { } } -#[derive(Debug)] + struct MyStruct { val: i64, } 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 000000000000..bb60014263b3 --- /dev/null +++ b/rust/ql/test/query-tests/diagnostics/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,2 @@ +multipleCallTargets +| my_struct.rs:25:19:25:37 | ...::from(...) | diff --git a/rust/ql/test/query-tests/diagnostics/SummaryStatsReduced.expected b/rust/ql/test/query-tests/diagnostics/SummaryStatsReduced.expected index ed21d9772fce..563e370b4ed3 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-020/Cargo.lock b/rust/ql/test/query-tests/security/CWE-020/Cargo.lock new file mode 100644 index 000000000000..a306f237d469 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-020/Cargo.lock @@ -0,0 +1,54 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "regex", +] diff --git a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected index 01bcab8c1f80..e10d2807cf34 100644 --- a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected @@ -3,20 +3,20 @@ edges | main.rs:4:9:4:16 | username | main.rs:5:25:5:44 | MacroExpr | provenance | | | main.rs:4:20:4:32 | ...::var | main.rs:4:20:4:40 | ...::var(...) [Ok] | provenance | Src:MaD:1 | -| main.rs:4:20:4:40 | ...::var(...) [Ok] | main.rs:4:20:4:66 | ... .unwrap_or(...) | provenance | MaD:3 | +| main.rs:4:20:4:40 | ...::var(...) [Ok] | main.rs:4:20:4:66 | ... .unwrap_or(...) | provenance | MaD:2 | | main.rs:4:20:4:66 | ... .unwrap_or(...) | main.rs:4:9:4:16 | username | provenance | | | main.rs:5:9:5:13 | regex | main.rs:6:26:6:30 | regex | provenance | | | main.rs:5:17:5:45 | res | main.rs:5:25:5:44 | { ... } | provenance | | | main.rs:5:25:5:44 | ...::format(...) | main.rs:5:17:5:45 | res | provenance | | | main.rs:5:25:5:44 | ...::must_use(...) | main.rs:5:9:5:13 | regex | provenance | | -| main.rs:5:25:5:44 | MacroExpr | main.rs:5:25:5:44 | ...::format(...) | provenance | MaD:2 | -| main.rs:5:25:5:44 | { ... } | main.rs:5:25:5:44 | ...::must_use(...) | provenance | MaD:4 | +| main.rs:5:25:5:44 | MacroExpr | main.rs:5:25:5:44 | ...::format(...) | provenance | MaD:4 | +| main.rs:5:25:5:44 | { ... } | main.rs:5:25:5:44 | ...::must_use(...) | provenance | MaD:3 | | main.rs:6:26:6:30 | regex | main.rs:6:25:6:30 | ®ex | provenance | | models -| 1 | Source: lang:std; crate::env::var; environment; ReturnValue.Field[crate::result::Result::Ok(0)] | -| 2 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | -| 3 | Summary: lang:core; ::unwrap_or; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value | -| 4 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | +| 1 | Source: lang:std; crate::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | +| 2 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 3 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 4 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | nodes | main.rs:4:9:4:16 | username | semmle.label | username | | main.rs:4:20:4:32 | ...::var | semmle.label | ...::var | 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 88e64c648bcf..6ad645852f2d 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 @@ -1,54 +1,9 @@ -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: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 | -| src/main.rs:19:21:19:33 | ...::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: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 | -| src/main.rs:26:38:26:50 | ...::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: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 | -| src/main.rs:40:38:40:50 | ...::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: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 | -| src/main.rs:53:38:53:50 | ...::from | file://:0:0:0:0 | fn from | -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 | -| 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 | -| 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 | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +multipleCallTargets +| src/main.rs:8:21:8:44 | ...::from(...) | +| src/main.rs:19:21:19:44 | ...::from(...) | +| src/main.rs:25:23:25:59 | ...::from(...) | +| src/main.rs:26:38:26:61 | ...::from(...) | +| src/main.rs:39:23:39:59 | ...::from(...) | +| src/main.rs:40:38:40:61 | ...::from(...) | +| src/main.rs:52:23:52:59 | ...::from(...) | +| src/main.rs:53:38:53:61 | ...::from(...) | diff --git a/rust/ql/test/query-tests/security/CWE-022/Cargo.lock b/rust/ql/test/query-tests/security/CWE-022/Cargo.lock new file mode 100644 index 000000000000..29fb68236577 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-022/Cargo.lock @@ -0,0 +1,953 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.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 = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" + +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "hyper", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.59.0", +] + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "poem" +version = "3.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ea63e9302279b1ca262d15342760f8d08f04fb974d4997e8baed7d034b94121" +dependencies = [ + "bytes", + "futures-util", + "headers", + "http", + "http-body-util", + "hyper", + "hyper-util", + "mime", + "nix", + "parking_lot", + "percent-encoding", + "pin-project-lite", + "poem-derive", + "regex", + "rfc7239", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "sync_wrapper", + "thiserror", + "tokio", + "tokio-util", + "tracing", + "wildmatch", +] + +[[package]] +name = "poem-derive" +version = "3.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824e7fe35343b7fe354e5d4ac444ddbe674676ebba4b4e48565835661033d338" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rfc7239" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a82f1d1e38e9a85bb58ffcfadf22ed6f2c94e8cd8581ec2b0f80a2a6858350f" +dependencies = [ + "uncased", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "poem", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "uncased" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wildmatch" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ce1ab1f8c62655ebe1350f589c61e505cf94d385bc6a12899442d9081e71fd" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +dependencies = [ + "memchr", +] diff --git a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected index 69f922e27bb2..ba3ced657483 100644 --- a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected +++ b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected @@ -1,33 +1,16 @@ #select | src/main.rs:10:5:10:22 | ...::read_to_string | src/main.rs:6:11:6:19 | file_name | src/main.rs:10:5:10:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:6:11:6:19 | file_name | user-provided value | -| src/main.rs:45:5:45:22 | ...::read_to_string | src/main.rs:37:11:37:19 | file_path | src/main.rs:45:5:45:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:37:11:37:19 | file_path | user-provided value | -| src/main.rs:59:5:59:22 | ...::read_to_string | src/main.rs:50:11:50:19 | file_path | src/main.rs:59:5:59:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:50:11:50:19 | file_path | user-provided value | edges | src/main.rs:6:11:6:19 | file_name | src/main.rs:8:35:8:43 | file_name | provenance | | | src/main.rs:8:9:8:17 | file_path | src/main.rs:10:24:10:32 | file_path | provenance | | | src/main.rs:8:21:8:44 | ...::from(...) | src/main.rs:8:9:8:17 | file_path | provenance | | -| src/main.rs:8:35:8:43 | file_name | src/main.rs:8:21:8:44 | ...::from(...) | provenance | MaD:4 | +| src/main.rs:8:35:8:43 | file_name | src/main.rs:8:21:8:44 | ...::from(...) | provenance | MaD:3 | +| src/main.rs:8:35:8:43 | file_name | src/main.rs:8:21:8:44 | ...::from(...) | provenance | MaD:2 | | src/main.rs:10:24:10:32 | file_path | src/main.rs:10:5:10:22 | ...::read_to_string | provenance | MaD:1 Sink:MaD:1 | -| src/main.rs:37:11:37:19 | file_path | src/main.rs:40:52:40:60 | file_path | provenance | | -| src/main.rs:40:9:40:17 | file_path | src/main.rs:45:24:45:32 | file_path | provenance | | -| src/main.rs:40:21:40:62 | public_path.join(...) | src/main.rs:40:9:40:17 | file_path | provenance | | -| src/main.rs:40:38:40:61 | ...::from(...) | src/main.rs:40:21:40:62 | public_path.join(...) | provenance | MaD:3 | -| src/main.rs:40:52:40:60 | file_path | src/main.rs:40:38:40:61 | ...::from(...) | provenance | MaD:4 | -| src/main.rs:45:24:45:32 | file_path | src/main.rs:45:5:45:22 | ...::read_to_string | provenance | MaD:1 Sink:MaD:1 | -| src/main.rs:50:11:50:19 | file_path | src/main.rs:53:52:53:60 | file_path | provenance | | -| src/main.rs:53:9:53:17 | file_path | src/main.rs:54:21:54:44 | file_path.canonicalize() [Ok] | provenance | Config | -| src/main.rs:53:21:53:62 | public_path.join(...) | src/main.rs:53:9:53:17 | file_path | provenance | | -| src/main.rs:53:38:53:61 | ...::from(...) | src/main.rs:53:21:53:62 | public_path.join(...) | provenance | MaD:3 | -| src/main.rs:53:52:53:60 | file_path | src/main.rs:53:38:53:61 | ...::from(...) | provenance | MaD:4 | -| src/main.rs:54:9:54:17 | file_path | src/main.rs:59:24:59:32 | file_path | provenance | | -| src/main.rs:54:21:54:44 | file_path.canonicalize() [Ok] | src/main.rs:54:21:54:53 | ... .unwrap() | provenance | MaD:2 | -| src/main.rs:54:21:54:53 | ... .unwrap() | src/main.rs:54:9:54:17 | file_path | provenance | | -| src/main.rs:59:24:59:32 | file_path | src/main.rs:59:5:59:22 | ...::read_to_string | provenance | MaD:1 Sink:MaD:1 | models -| 1 | Sink: lang:std; crate::fs::read_to_string; path-injection; Argument[0] | -| 2 | Summary: lang:core; ::unwrap; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value | -| 3 | Summary: lang:std; ::join; Argument[0]; ReturnValue; taint | -| 4 | Summary: lang:std; ::from; Argument[0]; ReturnValue; taint | +| 1 | Sink: lang:std; crate::fs::read_to_string; Argument[0]; path-injection | +| 2 | Summary: ::from; Argument[0]; ReturnValue; taint | +| 3 | Summary: lang:std; ::from; Argument[0]; ReturnValue; taint | nodes | src/main.rs:6:11:6:19 | file_name | semmle.label | file_name | | src/main.rs:8:9:8:17 | file_path | semmle.label | file_path | @@ -35,21 +18,4 @@ nodes | src/main.rs:8:35:8:43 | file_name | semmle.label | file_name | | src/main.rs:10:5:10:22 | ...::read_to_string | semmle.label | ...::read_to_string | | src/main.rs:10:24:10:32 | file_path | semmle.label | file_path | -| src/main.rs:37:11:37:19 | file_path | semmle.label | file_path | -| src/main.rs:40:9:40:17 | file_path | semmle.label | file_path | -| src/main.rs:40:21:40:62 | public_path.join(...) | semmle.label | public_path.join(...) | -| src/main.rs:40:38:40:61 | ...::from(...) | semmle.label | ...::from(...) | -| src/main.rs:40:52:40:60 | file_path | semmle.label | file_path | -| src/main.rs:45:5:45:22 | ...::read_to_string | semmle.label | ...::read_to_string | -| src/main.rs:45:24:45:32 | file_path | semmle.label | file_path | -| src/main.rs:50:11:50:19 | file_path | semmle.label | file_path | -| src/main.rs:53:9:53:17 | file_path | semmle.label | file_path | -| src/main.rs:53:21:53:62 | public_path.join(...) | semmle.label | public_path.join(...) | -| src/main.rs:53:38:53:61 | ...::from(...) | semmle.label | ...::from(...) | -| src/main.rs:53:52:53:60 | file_path | semmle.label | file_path | -| src/main.rs:54:9:54:17 | file_path | semmle.label | file_path | -| src/main.rs:54:21:54:44 | file_path.canonicalize() [Ok] | semmle.label | file_path.canonicalize() [Ok] | -| src/main.rs:54:21:54:53 | ... .unwrap() | semmle.label | ... .unwrap() | -| src/main.rs:59:5:59:22 | ...::read_to_string | semmle.label | ...::read_to_string | -| src/main.rs:59:24:59:32 | file_path | semmle.label | file_path | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-022/options.yml b/rust/ql/test/query-tests/security/CWE-022/options.yml index 5277d967cc09..e0b9bbfb5cf1 100644 --- a/rust/ql/test/query-tests/security/CWE-022/options.yml +++ b/rust/ql/test/query-tests/security/CWE-022/options.yml @@ -1,2 +1,3 @@ +qltest_use_nightly: true qltest_dependencies: - poem = { version = "3.1.7" } diff --git a/rust/ql/test/query-tests/security/CWE-022/rust-toolchain.toml b/rust/ql/test/query-tests/security/CWE-022/rust-toolchain.toml deleted file mode 100644 index bd988b083968..000000000000 --- a/rust/ql/test/query-tests/security/CWE-022/rust-toolchain.toml +++ /dev/null @@ -1,8 +0,0 @@ -# This file specifies the Rust version used to develop and test the -# extractors written in rust. It is set to the lowest version of Rust -# we want to support. - -[toolchain] -channel = "nightly" -profile = "minimal" -components = [ ] diff --git a/rust/ql/test/query-tests/security/CWE-022/src/main.rs b/rust/ql/test/query-tests/security/CWE-022/src/main.rs index 7c13da08db50..972ac8e7b6a0 100644 --- a/rust/ql/test/query-tests/security/CWE-022/src/main.rs +++ b/rust/ql/test/query-tests/security/CWE-022/src/main.rs @@ -34,7 +34,7 @@ fn tainted_path_handler_folder_good(Query(file_path): Query) -> Result, // $ Source=remote4 + Query(file_path): Query, // $ MISSING: Source=remote4 ) -> Result { let public_path = PathBuf::from("/var/www/public_html"); let file_path = public_path.join(PathBuf::from(file_path)); @@ -42,12 +42,12 @@ fn tainted_path_handler_folder_almost_good1( if !file_path.starts_with(public_path) { return Err(Error::from_status(StatusCode::BAD_REQUEST)); } - fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink Alert[rust/path-injection]=remote4 + fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink MISSING: Alert[rust/path-injection]=remote4 -- we cannot resolve the `join` call above, because it needs a `PathBuf -> Path` `Deref` } //#[handler] fn tainted_path_handler_folder_almost_good2( - Query(file_path): Query, // $ Source=remote5 + Query(file_path): Query, // $ MISSING: Source=remote5 ) -> Result { let public_path = PathBuf::from("/var/www/public_html"); let file_path = public_path.join(PathBuf::from(file_path)); @@ -56,7 +56,7 @@ fn tainted_path_handler_folder_almost_good2( if file_path.starts_with(public_path) { return Err(Error::from_status(StatusCode::BAD_REQUEST)); } - fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink Alert[rust/path-injection]=remote5 + fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink MISSING: Alert[rust/path-injection]=remote5 -- we cannot resolve the `join` call above, because it needs a `PathBuf -> Path` `Deref` } fn sinks(path1: &Path, path2: &Path) { 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 ea9e17f0c1d4..cc35fcfde215 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,23 +1,78 @@ -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 | -| file://:0:0:0:0 | fn encode_by_ref | file://:0:0:0:0 | Crate(core@0.0.0) | ::encode_by_ref | -| file://:0:0:0:0 | fn encode_by_ref | file://:0:0:0:0 | Crate(core@0.0.0) | ::encode_by_ref | -| file://:0:0:0:0 | fn produces | file://:0:0:0:0 | Crate(core@0.0.0) | ::produces | -| file://:0:0:0:0 | fn produces | file://:0:0:0:0 | Crate(core@0.0.0) | ::produces | -| file://:0:0:0:0 | fn size_hint | file://:0:0:0:0 | Crate(core@0.0.0) | ::size_hint | -| file://:0:0:0:0 | fn size_hint | file://:0:0:0:0 | Crate(core@0.0.0) | ::size_hint | -| 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 | -| 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 | -| 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 | -| file://:0:0:0:0 | impl ...::Encode::<...> for Option::<...> { ... } | file://:0:0:0:0 | Crate(core@0.0.0) | | -| file://:0:0:0:0 | impl ...::Encode::<...> for Option::<...> { ... } | file://:0:0:0:0 | Crate(core@0.0.0) | | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +multipleCallTargets +| sqlx.rs:46:24:46:44 | ...::from(...) | +| sqlx.rs:47:56:47:76 | ...::from(...) | +| sqlx.rs:48:97:48:117 | ...::from(...) | +| sqlx.rs:50:24:50:83 | ...::from(...) | +| sqlx.rs:51:24:51:77 | ...::from(...) | +| sqlx.rs:55:26:55:79 | ...::from(...) | +| sqlx.rs:61:28:61:81 | ...::from(...) | +| sqlx.rs:64:26:64:46 | safe_query_1.as_str() | +| sqlx.rs:65:26:65:46 | safe_query_2.as_str() | +| sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | +| sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | +| sqlx.rs:70:30:70:52 | unsafe_query_3.as_str() | +| sqlx.rs:75:25:75:45 | safe_query_1.as_str() | +| sqlx.rs:76:25:76:45 | safe_query_2.as_str() | +| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | +| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | +| sqlx.rs:84:25:84:49 | prepared_query_1.as_str() | +| sqlx.rs:85:25:85:49 | prepared_query_1.as_str() | +| sqlx.rs:87:29:87:53 | prepared_query_1.as_str() | +| sqlx.rs:88:29:88:53 | prepared_query_1.as_str() | +| sqlx.rs:99:24:99:44 | ...::from(...) | +| sqlx.rs:100:97:100:117 | ...::from(...) | +| sqlx.rs:101:24:101:77 | ...::from(...) | +| sqlx.rs:102:26:102:79 | ...::from(...) | +| sqlx.rs:103:28:103:81 | ...::from(...) | +| sqlx.rs:106:26:106:46 | safe_query_1.as_str() | +| sqlx.rs:108:30:108:52 | unsafe_query_1.as_str() | +| sqlx.rs:111:27:111:47 | safe_query_1.as_str() | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | +| sqlx.rs:117:25:117:45 | safe_query_1.as_str() | +| sqlx.rs:118:25:118:49 | prepared_query_1.as_str() | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | +| sqlx.rs:121:29:121:53 | prepared_query_1.as_str() | +| sqlx.rs:124:25:124:45 | safe_query_1.as_str() | +| sqlx.rs:125:25:125:49 | prepared_query_1.as_str() | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | +| sqlx.rs:128:29:128:53 | prepared_query_1.as_str() | +| sqlx.rs:131:54:131:74 | safe_query_1.as_str() | +| sqlx.rs:132:14:132:34 | ...::_print(...) | +| sqlx.rs:133:54:133:78 | prepared_query_1.as_str() | +| sqlx.rs:134:14:134:34 | ...::_print(...) | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | +| sqlx.rs:137:55:137:79 | prepared_query_1.as_str() | +| sqlx.rs:140:54:140:74 | safe_query_1.as_str() | +| sqlx.rs:141:14:141:34 | ...::_print(...) | +| sqlx.rs:142:54:142:78 | prepared_query_1.as_str() | +| sqlx.rs:143:14:143:34 | ...::_print(...) | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | +| sqlx.rs:146:55:146:79 | prepared_query_1.as_str() | +| sqlx.rs:149:25:149:45 | safe_query_1.as_str() | +| sqlx.rs:150:25:150:49 | prepared_query_1.as_str() | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | +| sqlx.rs:154:29:154:53 | prepared_query_1.as_str() | +| sqlx.rs:172:24:172:44 | ...::from(...) | +| sqlx.rs:173:97:173:117 | ...::from(...) | +| sqlx.rs:174:24:174:77 | ...::from(...) | +| sqlx.rs:175:26:175:79 | ...::from(...) | +| sqlx.rs:176:28:176:82 | ...::from(...) | +| sqlx.rs:179:26:179:46 | safe_query_1.as_str() | +| sqlx.rs:181:30:181:52 | unsafe_query_1.as_str() | +| sqlx.rs:185:25:185:45 | safe_query_1.as_str() | +| sqlx.rs:186:25:186:49 | prepared_query_1.as_str() | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | +| sqlx.rs:189:29:189:53 | prepared_query_1.as_str() | +| sqlx.rs:196:14:196:43 | ...::_print(...) | +| sqlx.rs:202:57:202:85 | ...::from(...) | +| sqlx.rs:203:14:203:46 | ...::_print(...) | +| sqlx.rs:205:14:205:33 | ...::_print(...) | +| sqlx.rs:207:27:207:41 | ...::_print(...) | +| sqlx.rs:208:28:208:43 | ...::_print(...) | +| sqlx.rs:211:14:211:34 | ...::_print(...) | +| sqlx.rs:213:27:213:41 | ...::_print(...) | +| sqlx.rs:214:28:214:43 | ...::_print(...) | +| sqlx.rs:217:14:217:36 | ...::_print(...) | +| sqlx.rs:219:27:219:41 | ...::_print(...) | +| sqlx.rs:220:28:220:43 | ...::_print(...) | 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 9bd564492406..000000000000 --- 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-089/Cargo.lock b/rust/ql/test/query-tests/security/CWE-089/Cargo.lock new file mode 100644 index 000000000000..2df49df403fc --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-089/Cargo.lock @@ -0,0 +1,2859 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand 2.3.0", + "futures-lite 2.6.0", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.3.1", + "async-executor", + "async-io 2.4.1", + "async-lock 3.4.0", + "blocking", + "futures-lite 2.6.0", + "once_cell", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-lite 1.13.0", + "log", + "parking", + "polling 2.8.0", + "rustix 0.37.28", + "slab", + "socket2 0.4.10", + "waker-fn", +] + +[[package]] +name = "async-io" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" +dependencies = [ + "async-lock 3.4.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.6.0", + "parking", + "polling 3.8.0", + "rustix 1.0.7", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener 5.4.0", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io 2.4.1", + "async-lock 3.4.0", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite 2.6.0", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +dependencies = [ + "serde", +] + +[[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 = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel 2.3.1", + "async-task", + "futures-io", + "futures-lite 2.6.0", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cc" +version = "1.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +dependencies = [ + "serde", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "etcetera" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener 5.4.0", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "flume" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +dependencies = [ + "futures-core", + "futures-sink", + "spin", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-intrusive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-lite" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +dependencies = [ + "fastrand 2.3.0", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.5.10", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libsqlite3-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +dependencies = [ + "value-bag", +] + +[[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 = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand 2.3.0", + "futures-io", +] + +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi 0.5.2", + "pin-project-lite", + "rustix 1.0.7", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "reqwest" +version = "0.12.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rsa" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core", + "signature", + "spki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "rustix" +version = "0.37.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "519165d378b97752ca44bbe15047d5d3409e875f39327546b42ac81d7e18c1b6" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.9.1", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core", +] + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "sqlx" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" +dependencies = [ + "sqlx-core", + "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", +] + +[[package]] +name = "sqlx-core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" +dependencies = [ + "async-io 1.13.0", + "async-std", + "base64", + "bytes", + "crc", + "crossbeam-queue", + "either", + "event-listener 5.4.0", + "futures-core", + "futures-intrusive", + "futures-io", + "futures-util", + "hashbrown", + "hashlink", + "indexmap", + "log", + "memchr", + "native-tls", + "once_cell", + "percent-encoding", + "serde", + "serde_json", + "sha2", + "smallvec", + "thiserror", + "tracing", + "url", +] + +[[package]] +name = "sqlx-macros" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" +dependencies = [ + "async-std", + "dotenvy", + "either", + "heck", + "hex", + "once_cell", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2", + "sqlx-core", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", + "syn", + "url", +] + +[[package]] +name = "sqlx-mysql" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" +dependencies = [ + "atoi", + "base64", + "bitflags 2.9.1", + "byteorder", + "bytes", + "crc", + "digest", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "percent-encoding", + "rand", + "rsa", + "serde", + "sha1", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" +dependencies = [ + "atoi", + "base64", + "bitflags 2.9.1", + "byteorder", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-util", + "hex", + "hkdf", + "hmac", + "home", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "rand", + "serde", + "serde_json", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" +dependencies = [ + "atoi", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "serde_urlencoded", + "sqlx-core", + "thiserror", + "tracing", + "url", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.1", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand 2.3.0", + "getrandom 0.3.3", + "once_cell", + "rustix 1.0.7", + "windows-sys 0.59.0", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "futures", + "reqwest", + "sqlx", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2 0.5.10", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "value-bag" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "waker-fn" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "whoami" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" +dependencies = [ + "redox_syscall", + "wasite", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-registry" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3bab093bdd303a1240bb99b8aba8ea8a69ee19d34c9e2ef9594e708a4878820" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index 176556b658cd..c4b4133907c0 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -1,63 +1,42 @@ #select -| sqlx.rs:66:26:66:46 | safe_query_3.as_str() | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:66:26:66:46 | safe_query_3.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | This query depends on a $@. | sqlx.rs:47:22:47:35 | ...::args | user-provided value | | sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | -| sqlx.rs:71:30:71:52 | unsafe_query_4.as_str() | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:71:30:71:52 | unsafe_query_4.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | This query depends on a $@. | sqlx.rs:47:22:47:35 | ...::args | user-provided value | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | edges | sqlx.rs:47:9:47:18 | arg_string | sqlx.rs:53:27:53:36 | arg_string | provenance | | | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:1 | -| sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:10 | -| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:5 | +| sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:8 | +| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:3 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:8 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:2 | -| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:6 | -| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:11 | -| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:7 | +| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:4 | +| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:9 | +| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:5 | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | | -| sqlx.rs:49:9:49:21 | remote_number | sqlx.rs:52:32:52:87 | MacroExpr | provenance | | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:7 | -| sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | sqlx.rs:49:9:49:21 | remote_number | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:66:26:66:46 | safe_query_3.as_str() | provenance | MaD:3 | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:3 | -| sqlx.rs:52:24:52:88 | res | sqlx.rs:52:32:52:87 | { ... } | provenance | | -| sqlx.rs:52:32:52:87 | ...::format(...) | sqlx.rs:52:24:52:88 | res | provenance | | -| sqlx.rs:52:32:52:87 | ...::must_use(...) | sqlx.rs:52:9:52:20 | safe_query_3 | provenance | | -| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:4 | -| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:9 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | provenance | MaD:3 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | provenance | MaD:3 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | provenance | MaD:7 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | provenance | MaD:6 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | provenance | MaD:7 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | provenance | MaD:6 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | provenance | MaD:3 | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | provenance | MaD:3 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | provenance | MaD:7 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | provenance | MaD:6 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | provenance | MaD:7 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | provenance | MaD:6 | | sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:71:30:71:52 | unsafe_query_4.as_str() | provenance | MaD:3 | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:3 | -| sqlx.rs:59:9:59:73 | res | sqlx.rs:59:17:59:72 | { ... } | provenance | | -| sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:9:59:73 | res | provenance | | -| sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | -| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:4 | -| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:9 | models -| 1 | Source: lang:std; crate::env::args; commandargs; ReturnValue.Element | -| 2 | Source: repo:https://github.com/seanmonstar/reqwest:reqwest; crate::blocking::get; remote; ReturnValue.Field[crate::result::Result::Ok(0)] | -| 3 | Summary: lang:alloc; ::as_str; Argument[self]; ReturnValue; value | -| 4 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | -| 5 | Summary: lang:core; ::unwrap_or; Argument[self].Field[crate::option::Option::Some(0)]; ReturnValue; value | -| 6 | Summary: lang:core; ::unwrap; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value | -| 7 | Summary: lang:core; ::unwrap_or; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value | -| 8 | Summary: lang:core; ::parse; Argument[self]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | -| 9 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | -| 10 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Field[crate::option::Option::Some(0)]; value | -| 11 | Summary: repo:https://github.com/seanmonstar/reqwest:reqwest; ::text; Argument[self]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | +| 1 | Source: lang:std; crate::env::args; ReturnValue.Element; commandargs | +| 2 | Source: repo:https://github.com/seanmonstar/reqwest:reqwest; crate::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 3 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 4 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 5 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 6 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 7 | Summary: lang:alloc; ::as_str; Argument[self]; ReturnValue; value | +| 8 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 9 | Summary: repo:https://github.com/seanmonstar/reqwest:reqwest; ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | nodes | sqlx.rs:47:9:47:18 | arg_string | semmle.label | arg_string | | sqlx.rs:47:22:47:35 | ...::args | semmle.label | ...::args | @@ -70,33 +49,14 @@ nodes | sqlx.rs:48:25:48:78 | ... .unwrap() | semmle.label | ... .unwrap() | | sqlx.rs:48:25:48:85 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| sqlx.rs:49:9:49:21 | remote_number | semmle.label | remote_number | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | semmle.label | remote_string.parse() [Ok] | -| sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| sqlx.rs:52:9:52:20 | safe_query_3 | semmle.label | safe_query_3 | -| sqlx.rs:52:24:52:88 | res | semmle.label | res | -| sqlx.rs:52:32:52:87 | ...::format(...) | semmle.label | ...::format(...) | -| sqlx.rs:52:32:52:87 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| sqlx.rs:52:32:52:87 | MacroExpr | semmle.label | MacroExpr | -| sqlx.rs:52:32:52:87 | { ... } | semmle.label | { ... } | | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | semmle.label | unsafe_query_1 [&ref] | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | semmle.label | &arg_string [&ref] | | sqlx.rs:53:27:53:36 | arg_string | semmle.label | arg_string | | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | semmle.label | unsafe_query_2 [&ref] | | sqlx.rs:54:26:54:39 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | | sqlx.rs:54:27:54:39 | remote_string | semmle.label | remote_string | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | semmle.label | unsafe_query_4 | -| sqlx.rs:59:9:59:73 | res | semmle.label | res | -| sqlx.rs:59:17:59:72 | ...::format(...) | semmle.label | ...::format(...) | -| sqlx.rs:59:17:59:72 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| sqlx.rs:59:17:59:72 | MacroExpr | semmle.label | MacroExpr | -| sqlx.rs:59:17:59:72 | { ... } | semmle.label | { ... } | -| sqlx.rs:66:26:66:46 | safe_query_3.as_str() | semmle.label | safe_query_3.as_str() | | sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | semmle.label | unsafe_query_2.as_str() | -| sqlx.rs:71:30:71:52 | unsafe_query_4.as_str() | semmle.label | unsafe_query_4.as_str() | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | semmle.label | safe_query_3.as_str() | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | semmle.label | unsafe_query_2.as_str() | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | semmle.label | unsafe_query_4.as_str() | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-089/sqlx.rs b/rust/ql/test/query-tests/security/CWE-089/sqlx.rs index 3de58350f20c..4d121e86fee7 100644 --- a/rust/ql/test/query-tests/security/CWE-089/sqlx.rs +++ b/rust/ql/test/query-tests/security/CWE-089/sqlx.rs @@ -63,23 +63,23 @@ async fn test_sqlx_mysql(url: &str, enable_remote: bool) -> Result<(), sqlx::Err // direct execution let _ = conn.execute(safe_query_1.as_str()).await?; // $ sql-sink let _ = conn.execute(safe_query_2.as_str()).await?; // $ sql-sink - let _ = conn.execute(safe_query_3.as_str()).await?; // $ sql-sink SPURIOUS: Alert[rust/sql-injection]=remote1 + let _ = conn.execute(safe_query_3.as_str()).await?; // $ sql-sink let _ = conn.execute(unsafe_query_1.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=args1 if enable_remote { let _ = conn.execute(unsafe_query_2.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote1 let _ = conn.execute(unsafe_query_3.as_str()).await?; // $ sql-sink MISSING: Alert[rust/sql-injection]=remote1 - let _ = conn.execute(unsafe_query_4.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote1 + let _ = conn.execute(unsafe_query_4.as_str()).await?; // $ sql-sink MISSING: Alert[rust/sql-injection]=remote1 } // prepared queries let _ = sqlx::query(safe_query_1.as_str()).execute(&pool).await?; // $ sql-sink let _ = sqlx::query(safe_query_2.as_str()).execute(&pool).await?; // $ sql-sink - let _ = sqlx::query(safe_query_3.as_str()).execute(&pool).await?; // $ sql-sink SPURIOUS: Alert[rust/sql-injection]=remote1 + let _ = sqlx::query(safe_query_3.as_str()).execute(&pool).await?; // $ sql-sink let _ = sqlx::query(unsafe_query_1.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=args1 if enable_remote { let _ = sqlx::query(unsafe_query_2.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=remote1 let _ = sqlx::query(unsafe_query_3.as_str()).execute(&pool).await?; // $ sql-sink MISSING: Alert[rust/sql-injection]=remote1 - let _ = sqlx::query(unsafe_query_4.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=remote1 + let _ = sqlx::query(unsafe_query_4.as_str()).execute(&pool).await?; // $ sql-sink MISSING: Alert[rust/sql-injection]=remote1 } let _ = sqlx::query(prepared_query_1.as_str()).bind(const_string).execute(&pool).await?; // $ sql-sink let _ = sqlx::query(prepared_query_1.as_str()).bind(arg_string).execute(&pool).await?; // $ sql-sink diff --git a/rust/ql/test/query-tests/security/CWE-311/Cargo.lock b/rust/ql/test/query-tests/security/CWE-311/Cargo.lock new file mode 100644 index 000000000000..e61f5e8ca91b --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-311/Cargo.lock @@ -0,0 +1,1520 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "bumpalo" +version = "3.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cc" +version = "1.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] +name = "reqwest" +version = "0.12.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "http", + "reqwest", + "url", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-registry" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3bab093bdd303a1240bb99b8aba8ea8a69ee19d34c9e2ef9594e708a4878820" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/rust/ql/test/query-tests/security/CWE-311/CleartextTransmission.expected b/rust/ql/test/query-tests/security/CWE-311/CleartextTransmission.expected index 689a333ef718..97e101eaa385 100644 --- a/rust/ql/test/query-tests/security/CWE-311/CleartextTransmission.expected +++ b/rust/ql/test/query-tests/security/CWE-311/CleartextTransmission.expected @@ -9,19 +9,19 @@ edges | main.rs:6:15:6:58 | res | main.rs:6:23:6:57 | { ... } | provenance | | | main.rs:6:23:6:57 | ...::format(...) | main.rs:6:15:6:58 | res | provenance | | | main.rs:6:23:6:57 | ...::must_use(...) | main.rs:6:9:6:11 | url | provenance | | -| main.rs:6:23:6:57 | MacroExpr | main.rs:6:23:6:57 | ...::format(...) | provenance | MaD:5 | -| main.rs:6:23:6:57 | { ... } | main.rs:6:23:6:57 | ...::must_use(...) | provenance | MaD:7 | +| main.rs:6:23:6:57 | MacroExpr | main.rs:6:23:6:57 | ...::format(...) | provenance | MaD:7 | +| main.rs:6:23:6:57 | { ... } | main.rs:6:23:6:57 | ...::must_use(...) | provenance | MaD:6 | | main.rs:6:50:6:57 | password | main.rs:6:23:6:57 | MacroExpr | provenance | | | main.rs:7:28:7:30 | url | main.rs:7:5:7:26 | ...::get | provenance | MaD:4 Sink:MaD:4 | | main.rs:12:9:12:15 | address | main.rs:13:27:13:33 | address | provenance | | | main.rs:12:19:12:60 | res | main.rs:12:27:12:59 | { ... } | provenance | | | main.rs:12:27:12:59 | ...::format(...) | main.rs:12:19:12:60 | res | provenance | | | main.rs:12:27:12:59 | ...::must_use(...) | main.rs:12:9:12:15 | address | provenance | | -| main.rs:12:27:12:59 | MacroExpr | main.rs:12:27:12:59 | ...::format(...) | provenance | MaD:5 | -| main.rs:12:27:12:59 | { ... } | main.rs:12:27:12:59 | ...::must_use(...) | provenance | MaD:7 | +| main.rs:12:27:12:59 | MacroExpr | main.rs:12:27:12:59 | ...::format(...) | provenance | MaD:7 | +| main.rs:12:27:12:59 | { ... } | main.rs:12:27:12:59 | ...::must_use(...) | provenance | MaD:6 | | main.rs:12:50:12:57 | password | main.rs:12:27:12:59 | MacroExpr | provenance | | | main.rs:13:9:13:11 | url | main.rs:14:28:14:30 | url | provenance | | -| main.rs:13:15:13:34 | ...::parse(...) [Ok] | main.rs:13:15:13:43 | ... .unwrap() | provenance | MaD:6 | +| main.rs:13:15:13:34 | ...::parse(...) [Ok] | main.rs:13:15:13:43 | ... .unwrap() | provenance | MaD:5 | | main.rs:13:15:13:43 | ... .unwrap() | main.rs:13:9:13:11 | url | provenance | | | main.rs:13:26:13:33 | &address [&ref] | main.rs:13:15:13:34 | ...::parse(...) [Ok] | provenance | MaD:8 | | main.rs:13:27:13:33 | address | main.rs:13:26:13:33 | &address [&ref] | provenance | | @@ -30,35 +30,35 @@ edges | main.rs:19:15:19:58 | res | main.rs:19:23:19:57 | { ... } | provenance | | | main.rs:19:23:19:57 | ...::format(...) | main.rs:19:15:19:58 | res | provenance | | | main.rs:19:23:19:57 | ...::must_use(...) | main.rs:19:9:19:11 | url | provenance | | -| main.rs:19:23:19:57 | MacroExpr | main.rs:19:23:19:57 | ...::format(...) | provenance | MaD:5 | -| main.rs:19:23:19:57 | { ... } | main.rs:19:23:19:57 | ...::must_use(...) | provenance | MaD:7 | +| main.rs:19:23:19:57 | MacroExpr | main.rs:19:23:19:57 | ...::format(...) | provenance | MaD:7 | +| main.rs:19:23:19:57 | { ... } | main.rs:19:23:19:57 | ...::must_use(...) | provenance | MaD:6 | | main.rs:19:50:19:57 | password | main.rs:19:23:19:57 | MacroExpr | provenance | | | main.rs:21:17:21:19 | url | main.rs:21:12:21:15 | post | provenance | MaD:1 Sink:MaD:1 | | main.rs:26:9:26:11 | url | main.rs:28:33:28:35 | url | provenance | | | main.rs:26:15:26:58 | res | main.rs:26:23:26:57 | { ... } | provenance | | | main.rs:26:23:26:57 | ...::format(...) | main.rs:26:15:26:58 | res | provenance | | | main.rs:26:23:26:57 | ...::must_use(...) | main.rs:26:9:26:11 | url | provenance | | -| main.rs:26:23:26:57 | MacroExpr | main.rs:26:23:26:57 | ...::format(...) | provenance | MaD:5 | -| main.rs:26:23:26:57 | { ... } | main.rs:26:23:26:57 | ...::must_use(...) | provenance | MaD:7 | +| main.rs:26:23:26:57 | MacroExpr | main.rs:26:23:26:57 | ...::format(...) | provenance | MaD:7 | +| main.rs:26:23:26:57 | { ... } | main.rs:26:23:26:57 | ...::must_use(...) | provenance | MaD:6 | | main.rs:26:50:26:57 | password | main.rs:26:23:26:57 | MacroExpr | provenance | | | main.rs:28:33:28:35 | url | main.rs:28:12:28:18 | request | provenance | MaD:3 Sink:MaD:3 | | main.rs:33:9:33:11 | url | main.rs:35:33:35:35 | url | provenance | | | main.rs:33:15:33:58 | res | main.rs:33:23:33:57 | { ... } | provenance | | | main.rs:33:23:33:57 | ...::format(...) | main.rs:33:15:33:58 | res | provenance | | | main.rs:33:23:33:57 | ...::must_use(...) | main.rs:33:9:33:11 | url | provenance | | -| main.rs:33:23:33:57 | MacroExpr | main.rs:33:23:33:57 | ...::format(...) | provenance | MaD:5 | -| main.rs:33:23:33:57 | { ... } | main.rs:33:23:33:57 | ...::must_use(...) | provenance | MaD:7 | +| main.rs:33:23:33:57 | MacroExpr | main.rs:33:23:33:57 | ...::format(...) | provenance | MaD:7 | +| main.rs:33:23:33:57 | { ... } | main.rs:33:23:33:57 | ...::must_use(...) | provenance | MaD:6 | | main.rs:33:50:33:57 | password | main.rs:33:23:33:57 | MacroExpr | provenance | | | main.rs:35:33:35:35 | url | main.rs:35:12:35:18 | request | provenance | MaD:2 Sink:MaD:2 | models -| 1 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; ::post; transmission; Argument[0] | -| 2 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; ::request; transmission; Argument[1] | -| 3 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; ::request; transmission; Argument[1] | -| 4 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; crate::blocking::get; transmission; Argument[0] | -| 5 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | -| 6 | Summary: lang:core; ::unwrap; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value | -| 7 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | -| 8 | Summary: repo:https://github.com/servo/rust-url:url; ::parse; Argument[0].Reference; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | +| 1 | Sink: ::post; Argument[0]; transmission | +| 2 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; ::request; Argument[1]; transmission | +| 3 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; ::request; Argument[1]; transmission | +| 4 | Sink: reqwest::blocking::get; Argument[0]; transmission | +| 5 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 6 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 7 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | +| 8 | Summary: repo:https://github.com/servo/rust-url:url; ::parse; Argument[0].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | nodes | main.rs:6:9:6:11 | url | semmle.label | url | | main.rs:6:15:6:58 | res | semmle.label | res | diff --git a/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..564927f7ed34 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,5 @@ +multipleCallTargets +| test_logging.rs:77:20:77:36 | password.as_str() | +| test_logging.rs:78:22:78:38 | password.as_str() | +| test_logging.rs:88:18:88:34 | password.as_str() | +| test_logging.rs:243:5:245:66 | ... .write_all(...) | diff --git a/rust/ql/test/query-tests/security/CWE-312/Cargo.lock b/rust/ql/test/query-tests/security/CWE-312/Cargo.lock new file mode 100644 index 000000000000..66f3d9acd922 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-312/Cargo.lock @@ -0,0 +1,324 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "colored" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" +dependencies = [ + "lazy_static", + "windows-sys 0.59.0", +] + +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "log_err" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2829e80508da18227e53a791bbe19018306f3f400bba439bc9959e9faa860f7" +dependencies = [ + "log", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "simple_logger" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c5dfa5e08767553704aa0ffd9d9794d527103c736aba9854773851fd7497eb" +dependencies = [ + "colored", + "log", + "time", + "windows-sys 0.48.0", +] + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "log", + "log_err", + "simple_logger", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 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 594834bca1fe..199cde2ce743 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,448 @@ #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 | 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | | 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:13 | +| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:12 | +| 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:10 Sink:MaD:10 | +| test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:5:118:42 | ...::log | provenance | MaD:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:10 Sink:MaD:10 | +| 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:6 Sink:MaD:6 | +| test_logging.rs:176:33:176:79 | &... [&ref] | test_logging.rs:176:22:176:31 | log_expect | provenance | MaD:6 Sink:MaD:6 | +| 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:13 | +| test_logging.rs:176:42:176:78 | { ... } | test_logging.rs:176:42:176:78 | ...::must_use(...) | provenance | MaD:12 | +| 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:7 Sink:MaD:7 | +| test_logging.rs:180:35:180:81 | &... [&ref] | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:7 Sink:MaD:7 | +| 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:13 | +| test_logging.rs:180:44:180:80 | { ... } | test_logging.rs:180:44:180:80 | ...::must_use(...) | provenance | MaD:12 | +| 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:8 Sink:MaD:8 | +| 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:9 Sink:MaD:9 | +| test_logging.rs:192:12:192:37 | MacroExpr | test_logging.rs:192:5:192:38 | ...::_print | provenance | MaD:5 Sink:MaD:5 | +| 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:5 Sink:MaD:5 | +| 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:4 Sink:MaD:4 | +| 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:4 Sink:MaD:4 | +| 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:3 Sink:MaD:3 | +| 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:3 Sink:MaD:3 | +| 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:3 Sink:MaD:3 | +| 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:3 Sink:MaD:3 | +| 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:3 Sink:MaD:3 | +| 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:2 | +| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | +| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed [Some] | provenance | MaD:1 | +| 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:2 | +| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | +| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed [Some] | provenance | MaD:1 | +| 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:3 Sink:MaD:3 | +| 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:2 | +| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | +| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed [Some] | provenance | MaD:1 | +| 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:2 | +| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | +| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed [Some] | provenance | MaD:1 | +| 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 | | 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 | +| 1 | Sink: core::panicking::assert_failed; Argument[3]; log-injection | +| 2 | Sink: lang:core; crate::panicking::assert_failed; Argument[3].Field[core::option::Option::Some(0)]; log-injection | +| 3 | Sink: lang:core; crate::panicking::panic_fmt; Argument[0]; log-injection | +| 4 | Sink: lang:std; crate::io::stdio::_eprint; Argument[0]; log-injection | +| 5 | Sink: lang:std; crate::io::stdio::_print; Argument[0]; log-injection | +| 6 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; Argument[0]; log-injection | +| 7 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; Argument[0]; log-injection | +| 8 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; Argument[self].Field[core::result::Result::Err(0)]; log-injection | +| 9 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_unwrap; Argument[self].Field[core::result::Result::Err(0)]; log-injection | +| 10 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; Argument[1]; log-injection | +| 11 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; Argument[3]; log-injection | +| 12 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 13 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | 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 | 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 3e8dbe816364..f5f94fc89f82 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,35 +195,69 @@ 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()); // $ MISSING: Alert[rust/cleartext-logging] (https://github.com/github/codeql/pull/19658) + } _ => {} } - 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()); // $ MISSING: Alert[rust/cleartext-logging] (https://github.com/github/codeql/pull/19658) + std::io::stdout() + .lock() + .write_all(format!("message = {}\n", password).as_bytes()); // $ MISSING: Alert[rust/cleartext-logging] (https://github.com/github/codeql/pull/19658) let mut out = std::io::stdout().lock(); - out.write(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging] + out.write(format!("message = {}\n", password).as_bytes()); // $ MISSING: Alert[rust/cleartext-logging] (https://github.com/github/codeql/pull/19658) let mut err = std::io::stderr().lock(); - err.write(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging] + err.write(format!("message = {}\n", password).as_bytes()); // $ MISSING: Alert[rust/cleartext-logging] (https://github.com/github/codeql/pull/19658) } 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-327/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-327/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 0aa771632529..000000000000 --- a/rust/ql/test/query-tests/security/CWE-327/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,13 +0,0 @@ -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 | -| 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 | -| 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 | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | diff --git a/rust/ql/test/query-tests/security/CWE-327/Cargo.lock b/rust/ql/test/query-tests/security/CWE-327/Cargo.lock new file mode 100644 index 000000000000..708b79ed46d5 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-327/Cargo.lock @@ -0,0 +1,171 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "block-padding" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", + "zeroize", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "des" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdd80ce8ce993de27e9f063a444a4d53ce8e8db4c1f00cc03af5ad5a9867a1e" +dependencies = [ + "cipher", +] + +[[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 = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "rabbit" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "931a21d28d73d260f6743712e0f04292413fc6d004bb278bb9022302221a05d5" +dependencies = [ + "cipher", +] + +[[package]] +name = "rc2" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62c64daa8e9438b84aaae55010a93f396f8e60e3911590fcba770d04643fc1dd" +dependencies = [ + "cipher", +] + +[[package]] +name = "rc4" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f1256e23efe6097f27aa82d6ca6889361c001586ae0f6917cbad072f05eb275" +dependencies = [ + "cipher", +] + +[[package]] +name = "rc5" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d416958668cb143193dd959872451342280d379c21c3ad65bb626df417995f3f" +dependencies = [ + "cipher", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "aes", + "cbc", + "cipher", + "des", + "rabbit", + "rc2", + "rc4", + "rc5", +] + +[[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" + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/rust/ql/test/query-tests/security/CWE-328/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-328/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 0aa771632529..000000000000 --- a/rust/ql/test/query-tests/security/CWE-328/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,13 +0,0 @@ -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 | -| 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 | -| 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 | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | -| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | diff --git a/rust/ql/test/query-tests/security/CWE-328/Cargo.lock b/rust/ql/test/query-tests/security/CWE-328/Cargo.lock new file mode 100644 index 000000000000..9414814935d6 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-328/Cargo.lock @@ -0,0 +1,317 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "argon2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3610892ee6e0cbce8ae2700349fcf8f98adb0dbfbee85aec3c9179d29cc072" +dependencies = [ + "base64ct", + "blake2", + "cpufeatures", + "password-hash", +] + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + +[[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 = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.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", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[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 = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[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 = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "password-hash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha1-checked" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89f599ac0c323ebb1c6082821a54962b839832b03984598375bff3975b804423" +dependencies = [ + "digest", + "sha1", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "argon2", + "digest", + "md-5", + "md5", + "serde", + "serde_json", + "serde_urlencoded", + "sha1", + "sha1-checked", + "sha3", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[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/query-tests/security/CWE-328/WeakSensitiveDataHashing.expected b/rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.expected index d2ea36bbebf8..062e3a63cc31 100644 --- a/rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.expected +++ b/rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.expected @@ -33,9 +33,9 @@ edges | test.rs:83:26:83:33 | password | test.rs:83:26:83:44 | password.as_bytes() | provenance | MaD:4 | | test.rs:83:26:83:44 | password.as_bytes() | test.rs:83:9:83:24 | ...::digest | provenance | MaD:1 Sink:MaD:1 | models -| 1 | Sink: repo:https://github.com/RustCrypto/traits:digest; <_ as crate::digest::Digest>::digest; hasher-input; Argument[0] | -| 2 | Sink: repo:https://github.com/RustCrypto/traits:digest; <_ as crate::digest::Digest>::new_with_prefix; hasher-input; Argument[0] | -| 3 | Sink: repo:https://github.com/stainless-steel/md5:md5; crate::compute; hasher-input; Argument[0] | +| 1 | Sink: repo:https://github.com/RustCrypto/traits:digest; <_ as crate::digest::Digest>::digest; Argument[0]; hasher-input | +| 2 | Sink: repo:https://github.com/RustCrypto/traits:digest; <_ as crate::digest::Digest>::new_with_prefix; Argument[0]; hasher-input | +| 3 | Sink: repo:https://github.com/stainless-steel/md5:md5; crate::compute; Argument[0]; hasher-input | | 4 | Summary: lang:core; ::as_bytes; Argument[self]; ReturnValue; taint | | 5 | Summary: lang:core; ::trim; Argument[self]; ReturnValue.Reference; taint | nodes diff --git a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected index 5fb57b10c01f..7c37a0082680 100644 --- a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected @@ -1,27 +1,14 @@ multiplePathResolutions -| test.rs:50:3:50:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | -| test.rs:50:3:50:6 | ctor | file://:0:0:0:0 | fn ctor | -| test.rs:55:3:55:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | -| test.rs:55:3:55:6 | ctor | file://:0:0:0:0 | fn ctor | -| test.rs:60:3:60:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | -| test.rs:60:3:60:6 | ctor | file://:0:0:0:0 | fn ctor | -| test.rs:65:3:65:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | -| test.rs:65:3:65:6 | ctor | file://:0:0:0:0 | fn ctor | -| test.rs:73:3:73:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | -| test.rs:73:3:73:6 | ctor | file://:0:0:0:0 | fn ctor | -| test.rs:78:3:78:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | -| test.rs:78:3:78:6 | ctor | file://:0:0:0:0 | fn ctor | -| test.rs:87:3:87:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | -| test.rs:87:3:87:6 | ctor | file://:0:0:0:0 | fn ctor | -| test.rs:94:3:94:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | -| test.rs:94:3:94:6 | ctor | file://:0:0:0:0 | fn ctor | -| test.rs:128:3:128:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | -| test.rs:128:3:128:6 | ctor | file://:0:0:0:0 | fn ctor | -| test.rs:139:3:139:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | -| test.rs:139:3:139:6 | ctor | file://:0:0:0:0 | fn ctor | -| test.rs:144:3:144:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | -| test.rs:144:3:144:6 | ctor | file://:0:0:0:0 | fn ctor | -| test.rs:150:3:150:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | -| test.rs:150:3:150:6 | ctor | file://:0:0:0:0 | fn ctor | -| test.rs:168:3:168:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | -| test.rs:168:3:168:6 | ctor | file://:0:0:0:0 | fn ctor | +| test.rs:50:3:50:6 | ctor | +| test.rs:55:3:55:6 | ctor | +| test.rs:60:3:60:6 | ctor | +| test.rs:65:3:65:6 | ctor | +| test.rs:73:3:73:6 | ctor | +| test.rs:78:3:78:6 | ctor | +| test.rs:87:3:87:6 | ctor | +| test.rs:94:3:94:6 | ctor | +| test.rs:128:3:128:6 | ctor | +| test.rs:139:3:139:6 | ctor | +| test.rs:144:3:144:6 | ctor | +| test.rs:150:3:150:6 | ctor | +| test.rs:168:3:168:6 | ctor | diff --git a/rust/ql/test/query-tests/security/CWE-696/Cargo.lock b/rust/ql/test/query-tests/security/CWE-696/Cargo.lock new file mode 100644 index 000000000000..4db6c52f89fb --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-696/Cargo.lock @@ -0,0 +1,71 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ctor" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "libc-print" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a660208db49e35faf57b37484350f1a61072f2a5becf0592af6015d9ddd4b0" +dependencies = [ + "libc", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "ctor", + "libc-print", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 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 d3d59980e32f..6e88d5bdf866 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 @@ -1,15 +1,18 @@ +multipleCallTargets +| main.rs:218:14:218:30 | ...::malloc(...) | +| main.rs:219:13:219:27 | ...::malloc(...) | +| main.rs:220:13:220:37 | ...::aligned_alloc(...) | +| main.rs:221:13:221:37 | ...::aligned_alloc(...) | +| main.rs:222:13:222:31 | ...::calloc(...) | +| main.rs:223:13:223:55 | ...::calloc(...) | +| main.rs:224:13:224:32 | ...::realloc(...) | +| main.rs:229:13:229:40 | ...::with_capacity(...) | +| main.rs:233:18:233:47 | ...::with_capacity(...) | multiplePathResolutions -| main.rs:218:14:218:17 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:218:14:218:17 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:219:13:219:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:219:13:219:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:220:13:220:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:220:13:220:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:221:13:221:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:221:13:221:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:222:13:222:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:222:13:222:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:223:13:223:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| 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:218:14:218:17 | libc | +| main.rs:219:13:219:16 | libc | +| main.rs:220:13:220:16 | libc | +| main.rs:221:13:221:16 | libc | +| main.rs:222:13:222:16 | libc | +| main.rs:223:13:223:16 | libc | +| main.rs:224:13:224:16 | libc | diff --git a/rust/ql/test/query-tests/security/CWE-770/Cargo.lock b/rust/ql/test/query-tests/security/CWE-770/Cargo.lock new file mode 100644 index 000000000000..444f7a92c563 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-770/Cargo.lock @@ -0,0 +1,16 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "libc" +version = "0.2.174" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "libc", +] 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 0e9acca98d73..4c4a795cb914 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -14,9 +14,7 @@ | main.rs:54:13:54:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:54:13:54: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:59:13:59:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:59:13:59: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:61:13:61:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:61:13:61: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:63:13:63:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:63:13:63: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:64:13:64:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:64:13:64: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:65:13:65:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:65:13:65: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:68:13:68:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:68:13:68: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:88:13:88:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:88:13:88: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:96:17:96:33 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:96:17:96: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 | @@ -32,115 +30,129 @@ | 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: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: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: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: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: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:213:36:213:41 | shrink | main.rs:317:13:317:26 | ...::args | main.rs:213:36:213:41 | shrink | 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 | | main.rs:220:13:220:31 | ...::aligned_alloc | main.rs:317:13:317:26 | ...::args | main.rs:220:13:220:31 | ...::aligned_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:222:13:222:24 | ...::calloc | main.rs:317:13:317:26 | ...::args | main.rs:222:13:222:24 | ...::calloc | 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:223:13:223:24 | ...::calloc | main.rs:317:13:317:26 | ...::args | main.rs:223:13:223:24 | ...::calloc | 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:224:13:224:25 | ...::realloc | main.rs:317:13:317:26 | ...::args | main.rs:224:13:224:25 | ...::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:230:13:230:44 | ...::try_with_capacity_in | main.rs:317:13:317:26 | ...::args | main.rs:230:13:230:44 | ...::try_with_capacity_in | 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:231:13:231:40 | ...::with_capacity_in | main.rs:317:13:317:26 | ...::args | main.rs:231:13:231:40 | ...::with_capacity_in | 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:284:22:284:38 | ...::alloc | main.rs:308:25:308:38 | ...::args | main.rs:284:22:284:38 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:308:25:308:38 | ...::args | user-provided value | edges | main.rs:12:36:12:43 | ...: usize | main.rs:18:41:18:41 | v | provenance | | -| main.rs:18:41:18:41 | v | main.rs:18:13:18:31 | ...::realloc | provenance | MaD:5 Sink:MaD:5 | +| main.rs:18:41:18:41 | v | main.rs:18:13:18:31 | ...::realloc | provenance | MaD:19 Sink:MaD:19 | | main.rs:18:41:18:41 | v | main.rs:20:50:20:50 | v | provenance | | | main.rs:18:41:18:41 | v | main.rs:29:60:29:60 | v | provenance | | +| main.rs:18:41:18:41 | v | main.rs:32:60:32:60 | v | provenance | | | 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:18:41:18:41 | v | main.rs:35:49:35:49 | v | 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:35 | | 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: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:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:44 | +| main.rs:21:31:21:32 | l2 | main.rs:21:13:21:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | +| main.rs:21:31:21:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:40 | +| main.rs:21:31:21:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:40 | | 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: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: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:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:35 | +| main.rs:22:31:22:53 | ... .unwrap() | main.rs:22:13:22:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | +| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:35 | +| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:46 | +| main.rs:23:31:23:68 | ... .pad_to_align() | main.rs:23:13:23:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | +| main.rs:24:38:24:39 | l2 | main.rs:24:13:24:36 | ...::alloc_zeroed | provenance | MaD:18 Sink:MaD:18 | | 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:30:31:30:32 | l4 | main.rs:30:13:30:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:45 | +| main.rs:30:31:30:32 | l4 | main.rs:30:13:30:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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:33:31:33:32 | l5 | main.rs:33:13:33:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:37 | +| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:45 | +| main.rs:33:31:33:32 | l5 | main.rs:33:13:33:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | main.rs:35:9:35:10 | s6 | main.rs:36:60:36:61 | s6 | provenance | | +| main.rs:35:15:35:49 | ... * ... | main.rs:35:9:35:10 | s6 | provenance | | +| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:36 | | main.rs:36:9:36:10 | l6 | main.rs:37:31:37:32 | l6 | provenance | | +| main.rs:36:9:36:10 | l6 [Layout.size] | main.rs:37:31:37:32 | l6 [Layout.size] | 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: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:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | main.rs:36:9:36:10 | l6 [Layout.size] | provenance | | +| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:45 | +| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | provenance | MaD:31 | +| main.rs:37:31:37:32 | l6 | main.rs:37:13:37:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | +| main.rs:37:31:37:32 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:49 | +| main.rs:37:31:37:32 | l6 [Layout.size] | main.rs:39:60:39:68 | l6.size() | provenance | MaD:32 | | 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:40:31:40:32 | l7 | main.rs:40:13:40:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:45 | +| main.rs:40:31:40:32 | l7 | main.rs:40:13:40:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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 | | | main.rs:43:44:43:51 | ...: usize | main.rs:53:48:53:48 | v | provenance | | | 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:35 | | 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:31:50:53 | ... .0 | main.rs:50:13:50:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | +| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:47 | +| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:35 | | 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: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: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:51:31:51:57 | ... .0 | main.rs:51:13:51:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | +| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:47 | +| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:35 | +| main.rs:53:31:53:58 | ... .unwrap() | main.rs:53:13:53:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | +| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:48 | +| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:35 | +| main.rs:54:31:54:63 | ... .unwrap() | main.rs:54:13:54:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | +| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:48 | | 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:34 | | 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:59:31:59:32 | k1 | main.rs:59:13:59:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:47 | +| main.rs:59:31:59:32 | k1 | main.rs:59:13:59:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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: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: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:35 | | 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: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: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: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:65:31:65:59 | ... .unwrap() | main.rs:65:13:65:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:42 | +| main.rs:61:31:61:32 | k2 | main.rs:61:13:61:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | +| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:35 | +| main.rs:64:31:64:59 | ... .unwrap() | main.rs:64:13:64:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | +| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:43 | | 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:35 | | 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:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:41 | +| main.rs:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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:35 | | 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:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:44 | +| main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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 | | | main.rs:91:38:91:45 | ...: usize | main.rs:105:33:105:33 | v | provenance | | @@ -150,147 +162,185 @@ 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:35 | | 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:96:35:96:36 | l1 | main.rs:96:17:96:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:41 | +| main.rs:96:35:96:36 | l1 | main.rs:96:17:96:33 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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:35 | | 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:102:35:102:36 | l1 | main.rs:102:17:102:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:41 | +| main.rs:102:35:102:36 | l1 | main.rs:102:17:102:33 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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 | | -| main.rs:103:35:103:36 | l3 | main.rs:103:17:103:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:103:35:103:36 | l3 | main.rs:103:17:103:33 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | main.rs:105:33:105:33 | v | main.rs:86:35:86:42 | ...: usize | provenance | | -| main.rs:109:35:109:36 | l1 | main.rs:109:17:109:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:109:35:109:36 | l1 | main.rs:109:17:109:33 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | main.rs:109:35:109:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | | -| 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:111:17:111:33 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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:35 | | 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:146:35:146:36 | l1 | main.rs:146:17:146:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:41 | +| main.rs:146:35:146:36 | l1 | main.rs:146:17:146:33 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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:148:35:148:36 | l9 | main.rs:148:17:148:33 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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:35 | | 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:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:41 | +| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:39 | +| main.rs:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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:35 | | 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:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:41 | +| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:38 | +| main.rs:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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:35 | | 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:162:35:162:37 | l13 | main.rs:162:17:162:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:44 | +| main.rs:162:35:162:37 | l13 | main.rs:162:17:162:33 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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:169:35:169:37 | l13 | main.rs:169:17:169:33 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | +| main.rs:177:31:177:32 | l1 | main.rs:177:13:177:29 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | | 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:35 | | 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:41 | +| main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:24 Sink:MaD:24 | | 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:194:45:194:46 | l2 | provenance | | +| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:25 Sink:MaD:25 | | 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: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:195:32:195:39 | allocate | provenance | MaD:20 Sink:MaD:20 | +| main.rs:195:41:195:42 | l2 | main.rs:195:32:195:39 | allocate | provenance | MaD:5 Sink:MaD:5 | | 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:196:32:196:46 | allocate_zeroed | provenance | MaD:21 Sink:MaD:21 | +| main.rs:196:48:196:49 | l2 | main.rs:196:32:196:46 | allocate_zeroed | provenance | MaD:6 Sink:MaD:6 | | 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:15 Sink:MaD:15 | | 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:16 Sink:MaD:16 | | 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: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:198:48:198:49 | l2 | main.rs:213:51:213:52 | l2 | provenance | | +| main.rs:202:48:202:48 | v | main.rs:202:32:202:38 | realloc | provenance | MaD:13 Sink:MaD:13 | +| 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:22 Sink:MaD:22 | +| main.rs:208:53:208:54 | l2 | main.rs:208:40:208:43 | grow | provenance | MaD:7 Sink:MaD:7 | +| main.rs:210:60:210:61 | l2 | main.rs:210:40:210:50 | grow_zeroed | provenance | MaD:23 Sink:MaD:23 | +| main.rs:210:60:210:61 | l2 | main.rs:210:40:210:50 | grow_zeroed | provenance | MaD:8 Sink:MaD:8 | +| main.rs:213:51:213:52 | l2 | main.rs:213:36:213:41 | shrink | 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:28 Sink:MaD:28 | | 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:26 Sink:MaD:26 | | 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:27 Sink:MaD:27 | | 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:27 Sink:MaD:27 | | 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:29 Sink:MaD:29 | +| main.rs:227:24:227:31 | ...: usize | main.rs:230:46:230:46 | v | provenance | | +| main.rs:230:46:230:46 | v | main.rs:230:13:230:44 | ...::try_with_capacity_in | provenance | MaD:3 Sink:MaD:3 | +| main.rs:230:46:230:46 | v | main.rs:231:42:231:42 | v | provenance | | +| main.rs:231:42:231:42 | v | main.rs:231:13:231:40 | ...::with_capacity_in | provenance | MaD:4 Sink:MaD:4 | +| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:50 | | 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:280:21:280:48 | TryExpr | main.rs:280:21:280:77 | ... * ... | provenance | MaD:37 | +| main.rs:280:21:280:77 | ... * ... | 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:35 | | 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: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:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:44 | +| main.rs:284:40:284:45 | layout | main.rs:284:22:284:38 | ...::alloc | provenance | MaD:17 Sink:MaD:17 | +| main.rs:308:25:308:38 | ...::args | main.rs:308:25:308:40 | ...::args(...) [element] | provenance | Src:MaD:30 | +| main.rs:308:25:308:40 | ...::args(...) [element] | main.rs:308:25:308:47 | ... .nth(...) [Some] | provenance | MaD:51 | +| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:33 | | 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:9:317:9 | v | main.rs:325:22:325:22 | v | provenance | | +| main.rs:317:13:317:26 | ...::args | main.rs:317:13:317:28 | ...::args(...) [element] | provenance | Src:MaD:30 | +| main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:51 | +| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:33 | +| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:50 | +| main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:35 | | 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 | | | main.rs:322:36:322:36 | v | main.rs:91:38:91:45 | ...: usize | provenance | | | main.rs:323:27:323:27 | v | main.rs:183:29:183:36 | ...: usize | provenance | | | main.rs:324:25:324:25 | v | main.rs:217:27:217:34 | ...: usize | provenance | | +| main.rs:325:22:325:22 | v | main.rs:227:24:227:31 | ...: usize | provenance | | models -| 1 | Sink: lang:alloc; ::allocate; alloc-layout; Argument[0] | -| 2 | Sink: lang:alloc; ::allocate_zeroed; alloc-layout; Argument[0] | -| 3 | Sink: lang:alloc; crate::alloc::alloc; alloc-layout; Argument[0] | -| 4 | Sink: lang:alloc; crate::alloc::alloc_zeroed; alloc-layout; Argument[0] | -| 5 | Sink: lang:alloc; crate::alloc::realloc; alloc-size; Argument[2] | -| 6 | Sink: lang:std; ::allocate; alloc-layout; Argument[0] | -| 7 | Sink: lang:std; ::allocate_zeroed; alloc-layout; Argument[0] | -| 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 | +| 1 | Sink: ::allocate; Argument[0]; alloc-layout | +| 2 | Sink: ::allocate_zeroed; Argument[0]; alloc-layout | +| 3 | Sink: ::try_with_capacity_in; Argument[0]; alloc-layout | +| 4 | Sink: ::with_capacity_in; Argument[0]; alloc-layout | +| 5 | Sink: ::allocate; Argument[0]; alloc-layout | +| 6 | Sink: ::allocate_zeroed; Argument[0]; alloc-layout | +| 7 | Sink: ::grow; Argument[2]; alloc-layout | +| 8 | Sink: ::grow_zeroed; Argument[2]; alloc-layout | +| 9 | Sink: ::shrink; Argument[2]; alloc-layout | +| 10 | Sink: ::alloc; Argument[0]; alloc-size | +| 11 | Sink: ::alloc_zeroed; Argument[0]; alloc-layout | +| 12 | Sink: ::alloc_zeroed; Argument[0]; alloc-size | +| 13 | Sink: ::realloc; Argument[2]; alloc-layout | +| 14 | Sink: ::realloc; Argument[2]; alloc-size | +| 15 | Sink: lang:alloc; ::allocate; Argument[0]; alloc-layout | +| 16 | Sink: lang:alloc; ::allocate_zeroed; Argument[0]; alloc-layout | +| 17 | Sink: lang:alloc; crate::alloc::alloc; Argument[0]; alloc-layout | +| 18 | Sink: lang:alloc; crate::alloc::alloc_zeroed; Argument[0]; alloc-layout | +| 19 | Sink: lang:alloc; crate::alloc::realloc; Argument[2]; alloc-size | +| 20 | Sink: lang:std; ::allocate; Argument[0]; alloc-layout | +| 21 | Sink: lang:std; ::allocate_zeroed; Argument[0]; alloc-layout | +| 22 | Sink: lang:std; ::grow; Argument[2]; alloc-layout | +| 23 | Sink: lang:std; ::grow_zeroed; Argument[2]; alloc-layout | +| 24 | Sink: lang:std; ::alloc; Argument[0]; alloc-layout | +| 25 | Sink: lang:std; ::alloc_zeroed; Argument[0]; alloc-layout | +| 26 | Sink: repo:https://github.com/rust-lang/libc:libc; ::aligned_alloc; Argument[1]; alloc-size | +| 27 | Sink: repo:https://github.com/rust-lang/libc:libc; ::calloc; Argument[0,1]; alloc-size | +| 28 | Sink: repo:https://github.com/rust-lang/libc:libc; ::malloc; Argument[0]; alloc-size | +| 29 | Sink: repo:https://github.com/rust-lang/libc:libc; ::realloc; Argument[1]; alloc-size | +| 30 | Source: lang:std; crate::env::args; ReturnValue.Element; commandargs | +| 31 | Summary: ::from_size_align_unchecked; Argument[0]; ReturnValue.Field[core::alloc::layout::Layout::size]; value | +| 32 | Summary: ::size; Argument[self].Field[core::alloc::layout::Layout::size]; ReturnValue; value | +| 33 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 34 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 35 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 36 | Summary: ::mul; Argument[0]; ReturnValue; taint | +| 37 | Summary: ::mul; Argument[self]; ReturnValue; taint | +| 38 | Summary: core::cmp::max; Argument[0]; ReturnValue; value | +| 39 | Summary: core::cmp::min; Argument[0]; ReturnValue; value | +| 40 | Summary: lang:core; ::align_to; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 41 | Summary: lang:core; ::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 42 | Summary: lang:core; ::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 43 | Summary: lang:core; ::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 44 | Summary: lang:core; ::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 45 | Summary: lang:core; ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | +| 46 | Summary: lang:core; ::pad_to_align; Argument[self]; ReturnValue; taint | +| 47 | Summary: lang:core; ::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 48 | Summary: lang:core; ::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 49 | Summary: lang:core; ::size; Argument[self]; ReturnValue; taint | +| 50 | Summary: lang:core; ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 51 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Field[core::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 | @@ -317,15 +367,21 @@ nodes | main.rs:30:31:30:32 | l4 | semmle.label | l4 | | main.rs:32:9:32:10 | l5 | semmle.label | l5 | | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | semmle.label | ...::from_size_align_unchecked(...) | +| main.rs:32:60:32:60 | v | semmle.label | v | | main.rs:32:60:32:89 | ... * ... | semmle.label | ... * ... | | main.rs:33:13:33:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:33:31:33:32 | l5 | semmle.label | l5 | | main.rs:35:9:35:10 | s6 | semmle.label | s6 | +| main.rs:35:15:35:49 | ... * ... | semmle.label | ... * ... | +| main.rs:35:49:35:49 | v | semmle.label | v | | main.rs:36:9:36:10 | l6 | semmle.label | l6 | +| main.rs:36:9:36:10 | l6 [Layout.size] | semmle.label | l6 [Layout.size] | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | semmle.label | ...::from_size_align_unchecked(...) | +| main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | semmle.label | ...::from_size_align_unchecked(...) [Layout.size] | | main.rs:36:60:36:61 | s6 | semmle.label | s6 | | main.rs:37:13:37:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:37:31:37:32 | l6 | semmle.label | l6 | +| main.rs:37:31:37:32 | l6 [Layout.size] | semmle.label | l6 [Layout.size] | | main.rs:39:9:39:10 | l7 | semmle.label | l7 | | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | semmle.label | ...::from_size_align_unchecked(...) | | main.rs:39:60:39:68 | l6.size() | semmle.label | l6.size() | @@ -364,19 +420,10 @@ nodes | main.rs:60:34:60:35 | k1 | semmle.label | k1 | | main.rs:61:13:61:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:61:31:61:32 | k2 | semmle.label | k2 | -| main.rs:62:9:62:20 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] | -| main.rs:62:10:62:11 | k3 | semmle.label | k3 | -| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | semmle.label | k1.extend(...) [Ok, tuple.0] | -| main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | semmle.label | ... .unwrap() [tuple.0] | -| main.rs:63:13:63:29 | ...::alloc | semmle.label | ...::alloc | -| main.rs:63:31:63:32 | k3 | semmle.label | k3 | | main.rs:64:13:64:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | semmle.label | l3.extend_packed(...) [Ok] | | main.rs:64:31:64:59 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:64:48:64:49 | k1 | semmle.label | k1 | -| main.rs:65:13:65:29 | ...::alloc | semmle.label | ...::alloc | -| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | semmle.label | k1.extend_packed(...) [Ok] | -| main.rs:65:31:65:59 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:67:9:67:10 | l4 | semmle.label | l4 | | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] | | main.rs:67:14:67:56 | ... .unwrap() | semmle.label | ... .unwrap() | @@ -448,21 +495,35 @@ 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: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: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: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: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 | +| main.rs:210:40:210:50 | grow_zeroed | semmle.label | grow_zeroed | | main.rs:210:60:210:61 | l2 | semmle.label | l2 | +| main.rs:213:36:213:41 | shrink | semmle.label | shrink | +| main.rs:213:51:213:52 | l2 | semmle.label | l2 | | main.rs:217:27:217:34 | ...: usize | semmle.label | ...: usize | | main.rs:219:13:219:24 | ...::malloc | semmle.label | ...::malloc | | main.rs:219:26:219:26 | v | semmle.label | v | @@ -474,10 +535,16 @@ nodes | main.rs:223:26:223:26 | v | semmle.label | v | | main.rs:224:13:224:25 | ...::realloc | semmle.label | ...::realloc | | main.rs:224:31:224:31 | v | semmle.label | v | +| main.rs:227:24:227:31 | ...: usize | semmle.label | ...: usize | +| main.rs:230:13:230:44 | ...::try_with_capacity_in | semmle.label | ...::try_with_capacity_in | +| main.rs:230:46:230:46 | v | semmle.label | v | +| main.rs:231:13:231:40 | ...::with_capacity_in | semmle.label | ...::with_capacity_in | +| main.rs:231:42:231:42 | v | semmle.label | v | | main.rs:279:24:279:41 | ...: String | semmle.label | ...: String | | main.rs:280:9:280:17 | num_bytes | semmle.label | num_bytes | | main.rs:280:21:280:47 | user_input.parse() [Ok] | semmle.label | user_input.parse() [Ok] | | main.rs:280:21:280:48 | TryExpr | semmle.label | TryExpr | +| main.rs:280:21:280:77 | ... * ... | semmle.label | ... * ... | | main.rs:282:9:282:14 | layout | semmle.label | layout | | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | semmle.label | ...::from_size_align(...) [Ok] | | main.rs:282:18:282:75 | ... .unwrap() | semmle.label | ... .unwrap() | @@ -500,4 +567,5 @@ nodes | main.rs:322:36:322:36 | v | semmle.label | v | | main.rs:323:27:323:27 | v | semmle.label | v | | main.rs:324:25:324:25 | v | semmle.label | v | +| main.rs:325:22:325:22 | v | semmle.label | v | subpaths 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 6d786dd0323e..0b39862ef324 100644 --- a/rust/ql/test/query-tests/security/CWE-770/main.rs +++ b/rust/ql/test/query-tests/security/CWE-770/main.rs @@ -60,9 +60,9 @@ unsafe fn test_std_alloc_new_repeat_extend(v: usize) { let (k2, _offs2) = l3.extend(k1).unwrap(); let _ = std::alloc::alloc(k2); // $ Alert[rust/uncontrolled-allocation-size]=arg1 let (k3, _offs3) = k1.extend(l3).unwrap(); - let _ = std::alloc::alloc(k3); // $ Alert[rust/uncontrolled-allocation-size]=arg1 + let _ = std::alloc::alloc(k3); // $ MISSING: Alert[rust/uncontrolled-allocation-size]=arg1 (https://github.com/github/codeql/pull/19658) let _ = std::alloc::alloc(l3.extend_packed(k1).unwrap()); // $ Alert[rust/uncontrolled-allocation-size]=arg1 - let _ = std::alloc::alloc(k1.extend_packed(l3).unwrap()); // $ Alert[rust/uncontrolled-allocation-size]=arg1 + let _ = std::alloc::alloc(k1.extend_packed(l3).unwrap()); // $ MISSING: Alert[rust/uncontrolled-allocation-size]=arg1 (https://github.com/github/codeql/pull/19658) let l4 = std::alloc::Layout::array::(v).unwrap(); let _ = std::alloc::alloc(l4); // $ Alert[rust/uncontrolled-allocation-size]=arg1 @@ -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(); @@ -210,7 +210,7 @@ unsafe fn test_system_alloc(v: usize) { let _ = std::alloc::System.grow_zeroed(m4, l4, l2).unwrap(); // $ Alert[rust/uncontrolled-allocation-size]=arg1 } } else { - let _ = std::alloc::System.shrink(m4, l4, l2).unwrap(); + let _ = std::alloc::System.shrink(m4, l4, l2).unwrap(); // $ SPURIOUS: Alert[rust/uncontrolled-allocation-size]=arg1 - FP } } @@ -227,8 +227,8 @@ unsafe fn test_libc_alloc(v: usize) { unsafe fn test_vectors(v: usize) { let _ = Vec::::try_with_capacity(v).unwrap(); // $ MISSING: Alert[rust/uncontrolled-allocation-size] let _ = Vec::::with_capacity(v); // $ MISSING: Alert[rust/uncontrolled-allocation-size] - let _ = Vec::::try_with_capacity_in(v, std::alloc::Global).unwrap(); // $ MISSING: Alert[rust/uncontrolled-allocation-size] - let _ = Vec::::with_capacity_in(v, std::alloc::Global); // $ MISSING: Alert[rust/uncontrolled-allocation-size] + let _ = Vec::::try_with_capacity_in(v, std::alloc::Global).unwrap(); // $ Alert[rust/uncontrolled-allocation-size]=arg1 + let _ = Vec::::with_capacity_in(v, std::alloc::Global); // $ Alert[rust/uncontrolled-allocation-size]=arg1 let mut v1 = Vec::::with_capacity(100); v1.reserve(v); // $ MISSING: Alert[rust/uncontrolled-allocation-size] diff --git a/rust/ql/test/query-tests/security/CWE-770/options.yml b/rust/ql/test/query-tests/security/CWE-770/options.yml index 95a17a53b431..5a0244bf92b8 100644 --- a/rust/ql/test/query-tests/security/CWE-770/options.yml +++ b/rust/ql/test/query-tests/security/CWE-770/options.yml @@ -1,3 +1,3 @@ -qltest_cargo_check: true +qltest_use_nightly: true qltest_dependencies: - - libc = { version = "0.2.11" } + - libc = { version = "0.2.174" } diff --git a/rust/ql/test/query-tests/security/CWE-770/rust-toolchain.toml b/rust/ql/test/query-tests/security/CWE-770/rust-toolchain.toml deleted file mode 100644 index 5d56faf9ae08..000000000000 --- a/rust/ql/test/query-tests/security/CWE-770/rust-toolchain.toml +++ /dev/null @@ -1,2 +0,0 @@ -[toolchain] -channel = "nightly" diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected new file mode 100644 index 000000000000..65a8ba1953ae --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected @@ -0,0 +1,422 @@ +#select +| lifetime.rs:69:13:69:14 | p1 | lifetime.rs:21:9:21:18 | &my_local1 | lifetime.rs:69:13:69:14 | p1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:19:6:19:14 | my_local1 | my_local1 | +| lifetime.rs:70:13:70:14 | p2 | lifetime.rs:27:9:27:22 | &mut my_local2 | lifetime.rs:70:13:70:14 | p2 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:25:10:25:18 | my_local2 | my_local2 | +| lifetime.rs:71:13:71:14 | p3 | lifetime.rs:33:9:33:28 | &raw const my_local3 | lifetime.rs:71:13:71:14 | p3 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:31:6:31:14 | my_local3 | my_local3 | +| lifetime.rs:72:13:72:14 | p4 | lifetime.rs:39:9:39:26 | &raw mut my_local4 | lifetime.rs:72:13:72:14 | p4 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:37:10:37:18 | my_local4 | my_local4 | +| lifetime.rs:73:13:73:14 | p5 | lifetime.rs:43:9:43:15 | ¶m5 | lifetime.rs:73:13:73:14 | p5 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:42:23:42:28 | param5 | param5 | +| lifetime.rs:74:13:74:14 | p6 | lifetime.rs:50:9:50:18 | &... | lifetime.rs:74:13:74:14 | p6 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:47:6:47:8 | val | val | +| lifetime.rs:75:13:75:14 | p7 | lifetime.rs:63:8:63:27 | &raw const my_local7 | lifetime.rs:75:13:75:14 | p7 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:62:7:62:15 | my_local7 | my_local7 | +| lifetime.rs:76:4:76:5 | p2 | lifetime.rs:27:9:27:22 | &mut my_local2 | lifetime.rs:76:4:76:5 | p2 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:25:10:25:18 | my_local2 | my_local2 | +| lifetime.rs:77:4:77:5 | p4 | lifetime.rs:39:9:39:26 | &raw mut my_local4 | lifetime.rs:77:4:77:5 | p4 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:37:10:37:18 | my_local4 | my_local4 | +| lifetime.rs:172:13:172:15 | ptr | lifetime.rs:187:12:187:21 | &my_local1 | lifetime.rs:172:13:172:15 | ptr | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:186:6:186:14 | my_local1 | my_local1 | +| lifetime.rs:255:14:255:17 | prev | lifetime.rs:251:10:251:19 | &my_local2 | lifetime.rs:255:14:255:17 | prev | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:242:7:242:15 | my_local2 | my_local2 | +| lifetime.rs:310:31:310:32 | e1 | lifetime.rs:272:30:272:32 | &e1 | lifetime.rs:310:31:310:32 | e1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:271:6:271:7 | e1 | e1 | +| lifetime.rs:317:13:317:18 | result | lifetime.rs:289:25:289:26 | &x | lifetime.rs:317:13:317:18 | result | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:289:17:289:17 | x | x | +| lifetime.rs:411:16:411:17 | p1 | lifetime.rs:383:31:383:37 | &raw mut my_pair | lifetime.rs:411:16:411:17 | p1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:382:11:382:17 | my_pair | my_pair | +| lifetime.rs:416:16:416:17 | p1 | lifetime.rs:383:31:383:37 | &raw mut my_pair | lifetime.rs:416:16:416:17 | p1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:382:11:382:17 | my_pair | my_pair | +| lifetime.rs:428:7:428:8 | p1 | lifetime.rs:383:31:383:37 | &raw mut my_pair | lifetime.rs:428:7:428:8 | p1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:382:11:382:17 | my_pair | my_pair | +| lifetime.rs:433:7:433:8 | p1 | lifetime.rs:383:31:383:37 | &raw mut my_pair | lifetime.rs:433:7:433:8 | p1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:382:11:382:17 | my_pair | my_pair | +| lifetime.rs:459:13:459:14 | p1 | lifetime.rs:442:17:442:23 | &my_val | lifetime.rs:459:13:459:14 | p1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:441:6:441:11 | my_val | my_val | +| lifetime.rs:460:13:460:31 | get_ptr_from_ref(...) | lifetime.rs:442:17:442:23 | &my_val | lifetime.rs:460:13:460:31 | get_ptr_from_ref(...) | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:441:6:441:11 | my_val | my_val | +| lifetime.rs:659:15:659:18 | ref1 | lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:659:15:659:18 | ref1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:653:8:653:11 | str1 | str1 | +| lifetime.rs:667:14:667:17 | ref1 | lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:667:14:667:17 | ref1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:653:8:653:11 | str1 | str1 | +| lifetime.rs:667:14:667:17 | ref1 | lifetime.rs:655:11:655:25 | &raw const str2 | lifetime.rs:667:14:667:17 | ref1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:651:7:651:10 | str2 | str2 | +| lifetime.rs:789:12:789:13 | p1 | lifetime.rs:781:9:781:19 | &my_local10 | lifetime.rs:789:12:789:13 | p1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:779:6:779:15 | my_local10 | my_local10 | +| lifetime.rs:808:23:808:25 | ptr | lifetime.rs:798:9:798:12 | &val | lifetime.rs:808:23:808:25 | ptr | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:796:6:796:8 | val | val | +edges +| deallocation.rs:148:6:148:7 | p1 | deallocation.rs:151:14:151:15 | p1 | provenance | | +| deallocation.rs:148:6:148:7 | p1 | deallocation.rs:158:14:158:15 | p1 | provenance | | +| deallocation.rs:148:30:148:38 | &raw const my_buffer | deallocation.rs:148:6:148:7 | p1 | provenance | | +| deallocation.rs:228:28:228:43 | ...: ... | deallocation.rs:230:18:230:20 | ptr | provenance | | +| deallocation.rs:240:27:240:42 | ...: ... | deallocation.rs:248:18:248:20 | ptr | provenance | | +| deallocation.rs:257:7:257:10 | ptr1 | deallocation.rs:260:4:260:7 | ptr1 | provenance | | +| deallocation.rs:257:7:257:10 | ptr1 | deallocation.rs:260:4:260:7 | ptr1 | provenance | | +| deallocation.rs:257:14:257:33 | &raw mut ... | deallocation.rs:257:7:257:10 | ptr1 | provenance | | +| deallocation.rs:258:7:258:10 | ptr2 | deallocation.rs:261:4:261:7 | ptr2 | provenance | | +| deallocation.rs:258:7:258:10 | ptr2 | deallocation.rs:261:4:261:7 | ptr2 | provenance | | +| deallocation.rs:258:14:258:33 | &raw mut ... | deallocation.rs:258:7:258:10 | ptr2 | provenance | | +| deallocation.rs:260:4:260:7 | ptr1 | deallocation.rs:263:27:263:30 | ptr1 | provenance | | +| deallocation.rs:261:4:261:7 | ptr2 | deallocation.rs:265:26:265:29 | ptr2 | provenance | | +| deallocation.rs:263:27:263:30 | ptr1 | deallocation.rs:228:28:228:43 | ...: ... | provenance | | +| deallocation.rs:265:26:265:29 | ptr2 | deallocation.rs:240:27:240:42 | ...: ... | provenance | | +| deallocation.rs:276:6:276:9 | ptr1 | deallocation.rs:279:13:279:16 | ptr1 | provenance | | +| deallocation.rs:276:6:276:9 | ptr1 | deallocation.rs:287:13:287:16 | ptr1 | provenance | | +| deallocation.rs:276:13:276:28 | &raw mut ... | deallocation.rs:276:6:276:9 | ptr1 | provenance | | +| deallocation.rs:295:6:295:9 | ptr2 | deallocation.rs:298:13:298:16 | ptr2 | provenance | | +| deallocation.rs:295:6:295:9 | ptr2 | deallocation.rs:308:13:308:16 | ptr2 | provenance | | +| deallocation.rs:295:13:295:28 | &raw mut ... | deallocation.rs:295:6:295:9 | ptr2 | provenance | | +| lifetime.rs:21:2:21:18 | return ... | lifetime.rs:54:11:54:30 | get_local_dangling(...) | provenance | | +| lifetime.rs:21:9:21:18 | &my_local1 | lifetime.rs:21:2:21:18 | return ... | provenance | | +| lifetime.rs:27:2:27:22 | return ... | lifetime.rs:55:11:55:34 | get_local_dangling_mut(...) | provenance | | +| lifetime.rs:27:9:27:22 | &mut my_local2 | lifetime.rs:27:2:27:22 | return ... | provenance | | +| lifetime.rs:33:2:33:28 | return ... | lifetime.rs:56:11:56:40 | get_local_dangling_raw_const(...) | provenance | | +| lifetime.rs:33:9:33:28 | &raw const my_local3 | lifetime.rs:33:2:33:28 | return ... | provenance | | +| lifetime.rs:39:2:39:26 | return ... | lifetime.rs:57:11:57:38 | get_local_dangling_raw_mut(...) | provenance | | +| lifetime.rs:39:9:39:26 | &raw mut my_local4 | lifetime.rs:39:2:39:26 | return ... | provenance | | +| lifetime.rs:43:2:43:15 | return ... | lifetime.rs:58:11:58:31 | get_param_dangling(...) | provenance | | +| lifetime.rs:43:9:43:15 | ¶m5 | lifetime.rs:43:2:43:15 | return ... | provenance | | +| lifetime.rs:50:2:50:18 | return ... | lifetime.rs:59:11:59:36 | get_local_field_dangling(...) | provenance | | +| lifetime.rs:50:9:50:18 | &... | lifetime.rs:50:2:50:18 | return ... | provenance | | +| lifetime.rs:54:6:54:7 | p1 | lifetime.rs:69:13:69:14 | p1 | provenance | | +| lifetime.rs:54:11:54:30 | get_local_dangling(...) | lifetime.rs:54:6:54:7 | p1 | provenance | | +| lifetime.rs:55:6:55:7 | p2 | lifetime.rs:70:13:70:14 | p2 | provenance | | +| lifetime.rs:55:6:55:7 | p2 | lifetime.rs:76:4:76:5 | p2 | provenance | | +| lifetime.rs:55:11:55:34 | get_local_dangling_mut(...) | lifetime.rs:55:6:55:7 | p2 | provenance | | +| lifetime.rs:56:6:56:7 | p3 | lifetime.rs:71:13:71:14 | p3 | provenance | | +| lifetime.rs:56:11:56:40 | get_local_dangling_raw_const(...) | lifetime.rs:56:6:56:7 | p3 | provenance | | +| lifetime.rs:57:6:57:7 | p4 | lifetime.rs:72:13:72:14 | p4 | provenance | | +| lifetime.rs:57:6:57:7 | p4 | lifetime.rs:77:4:77:5 | p4 | provenance | | +| lifetime.rs:57:11:57:38 | get_local_dangling_raw_mut(...) | lifetime.rs:57:6:57:7 | p4 | provenance | | +| lifetime.rs:58:6:58:7 | p5 | lifetime.rs:73:13:73:14 | p5 | provenance | | +| lifetime.rs:58:11:58:31 | get_param_dangling(...) | lifetime.rs:58:6:58:7 | p5 | provenance | | +| lifetime.rs:59:6:59:7 | p6 | lifetime.rs:74:13:74:14 | p6 | provenance | | +| lifetime.rs:59:11:59:36 | get_local_field_dangling(...) | lifetime.rs:59:6:59:7 | p6 | provenance | | +| lifetime.rs:63:3:63:4 | p7 | lifetime.rs:75:13:75:14 | p7 | provenance | | +| lifetime.rs:63:8:63:27 | &raw const my_local7 | lifetime.rs:63:3:63:4 | p7 | provenance | | +| lifetime.rs:91:17:91:30 | ...: ... | lifetime.rs:101:14:101:15 | p1 | provenance | | +| lifetime.rs:91:33:91:44 | ...: ... | lifetime.rs:102:14:102:15 | p2 | provenance | | +| lifetime.rs:91:33:91:44 | ...: ... | lifetime.rs:110:5:110:6 | p2 | provenance | | +| lifetime.rs:94:2:94:3 | p3 | lifetime.rs:103:14:103:15 | p3 | provenance | | +| lifetime.rs:94:7:94:16 | &my_local1 | lifetime.rs:94:2:94:3 | p3 | provenance | | +| lifetime.rs:119:15:119:24 | &my_local3 | lifetime.rs:91:17:91:30 | ...: ... | provenance | | +| lifetime.rs:119:27:119:44 | &mut my_local_mut4 | lifetime.rs:91:33:91:44 | ...: ... | provenance | | +| lifetime.rs:127:2:127:24 | return ... | lifetime.rs:139:11:139:21 | get_const(...) | provenance | | +| lifetime.rs:127:9:127:24 | &MY_GLOBAL_CONST | lifetime.rs:127:2:127:24 | return ... | provenance | | +| lifetime.rs:134:3:134:30 | return ... | lifetime.rs:140:11:140:26 | get_static_mut(...) | provenance | | +| lifetime.rs:134:10:134:30 | &mut MY_GLOBAL_STATIC | lifetime.rs:134:3:134:30 | return ... | provenance | | +| lifetime.rs:139:6:139:7 | p1 | lifetime.rs:147:14:147:15 | p1 | provenance | | +| lifetime.rs:139:11:139:21 | get_const(...) | lifetime.rs:139:6:139:7 | p1 | provenance | | +| lifetime.rs:140:6:140:7 | p2 | lifetime.rs:148:14:148:15 | p2 | provenance | | +| lifetime.rs:140:6:140:7 | p2 | lifetime.rs:154:5:154:6 | p2 | provenance | | +| lifetime.rs:140:11:140:26 | get_static_mut(...) | lifetime.rs:140:6:140:7 | p2 | provenance | | +| lifetime.rs:161:17:161:31 | ...: ... | lifetime.rs:164:13:164:15 | ptr | provenance | | +| lifetime.rs:169:17:169:31 | ...: ... | lifetime.rs:172:13:172:15 | ptr | provenance | | +| lifetime.rs:177:17:177:31 | ...: ... | lifetime.rs:180:13:180:15 | ptr | provenance | | +| lifetime.rs:187:6:187:8 | ptr | lifetime.rs:189:15:189:17 | ptr | provenance | | +| lifetime.rs:187:6:187:8 | ptr | lifetime.rs:190:15:190:17 | ptr | provenance | | +| lifetime.rs:187:6:187:8 | ptr | lifetime.rs:192:2:192:11 | return ptr | provenance | | +| lifetime.rs:187:12:187:21 | &my_local1 | lifetime.rs:187:6:187:8 | ptr | provenance | | +| lifetime.rs:189:15:189:17 | ptr | lifetime.rs:161:17:161:31 | ...: ... | provenance | | +| lifetime.rs:190:15:190:17 | ptr | lifetime.rs:177:17:177:31 | ...: ... | provenance | | +| lifetime.rs:192:2:192:11 | return ptr | lifetime.rs:196:12:196:36 | access_and_get_dangling(...) | provenance | | +| lifetime.rs:196:6:196:8 | ptr | lifetime.rs:200:15:200:17 | ptr | provenance | | +| lifetime.rs:196:6:196:8 | ptr | lifetime.rs:201:15:201:17 | ptr | provenance | | +| lifetime.rs:196:12:196:36 | access_and_get_dangling(...) | lifetime.rs:196:6:196:8 | ptr | provenance | | +| lifetime.rs:200:15:200:17 | ptr | lifetime.rs:169:17:169:31 | ...: ... | provenance | | +| lifetime.rs:201:15:201:17 | ptr | lifetime.rs:177:17:177:31 | ...: ... | provenance | | +| lifetime.rs:206:19:206:36 | ...: ... | lifetime.rs:216:16:216:21 | ptr_up | provenance | | +| lifetime.rs:208:6:208:13 | ptr_ours | lifetime.rs:211:33:211:40 | ptr_ours | provenance | | +| lifetime.rs:208:6:208:13 | ptr_ours | lifetime.rs:217:18:217:25 | ptr_ours | provenance | | +| lifetime.rs:208:6:208:13 | ptr_ours | lifetime.rs:225:2:225:16 | return ptr_ours | provenance | | +| lifetime.rs:208:17:208:29 | &my_local_rec | lifetime.rs:208:6:208:13 | ptr_ours | provenance | | +| lifetime.rs:211:7:211:14 | ptr_down | lifetime.rs:218:18:218:25 | ptr_down | provenance | | +| lifetime.rs:211:18:211:52 | access_ptr_rec(...) | lifetime.rs:211:7:211:14 | ptr_down | provenance | | +| lifetime.rs:211:33:211:40 | ptr_ours | lifetime.rs:206:19:206:36 | ...: ... | provenance | | +| lifetime.rs:225:2:225:16 | return ptr_ours | lifetime.rs:211:18:211:52 | access_ptr_rec(...) | provenance | | +| lifetime.rs:230:6:230:14 | ptr_start | lifetime.rs:232:21:232:29 | ptr_start | provenance | | +| lifetime.rs:230:18:230:31 | &my_local_rec2 | lifetime.rs:230:6:230:14 | ptr_start | provenance | | +| lifetime.rs:232:21:232:29 | ptr_start | lifetime.rs:206:19:206:36 | ...: ... | provenance | | +| lifetime.rs:239:6:239:13 | mut prev | lifetime.rs:247:15:247:18 | prev | provenance | | +| lifetime.rs:239:6:239:13 | mut prev | lifetime.rs:255:14:255:17 | prev | provenance | | +| lifetime.rs:239:34:239:43 | &my_local1 | lifetime.rs:239:6:239:13 | mut prev | provenance | | +| lifetime.rs:251:3:251:6 | prev | lifetime.rs:247:15:247:18 | prev | provenance | | +| lifetime.rs:251:3:251:6 | prev | lifetime.rs:255:14:255:17 | prev | provenance | | +| lifetime.rs:251:10:251:19 | &my_local2 | lifetime.rs:251:3:251:6 | prev | provenance | | +| lifetime.rs:270:47:275:1 | { ... } | lifetime.rs:303:11:303:31 | get_pointer_to_enum(...) | provenance | | +| lifetime.rs:272:6:272:11 | result | lifetime.rs:270:47:275:1 | { ... } | provenance | | +| lifetime.rs:272:30:272:32 | &e1 | lifetime.rs:272:6:272:11 | result | provenance | | +| lifetime.rs:284:46:300:1 | { ... } | lifetime.rs:305:15:305:37 | get_pointer_from_enum(...) | provenance | | +| lifetime.rs:288:2:288:7 | result | lifetime.rs:284:46:300:1 | { ... } | provenance | | +| lifetime.rs:288:2:288:7 | result | lifetime.rs:295:13:295:18 | result | provenance | | +| lifetime.rs:289:25:289:26 | &x | lifetime.rs:288:2:288:7 | result | provenance | | +| lifetime.rs:303:6:303:7 | e1 | lifetime.rs:310:31:310:32 | e1 | provenance | | +| lifetime.rs:303:11:303:31 | get_pointer_to_enum(...) | lifetime.rs:303:6:303:7 | e1 | provenance | | +| lifetime.rs:305:6:305:11 | result | lifetime.rs:317:13:317:18 | result | provenance | | +| lifetime.rs:305:15:305:37 | get_pointer_from_enum(...) | lifetime.rs:305:6:305:11 | result | provenance | | +| lifetime.rs:383:3:383:4 | p1 | lifetime.rs:388:15:388:16 | p1 | provenance | | +| lifetime.rs:383:3:383:4 | p1 | lifetime.rs:391:15:391:16 | p1 | provenance | | +| lifetime.rs:383:3:383:4 | p1 | lifetime.rs:399:6:399:7 | p1 | provenance | | +| lifetime.rs:383:3:383:4 | p1 | lifetime.rs:401:6:401:7 | p1 | provenance | | +| lifetime.rs:383:3:383:4 | p1 | lifetime.rs:411:16:411:17 | p1 | provenance | | +| lifetime.rs:383:3:383:4 | p1 | lifetime.rs:416:16:416:17 | p1 | provenance | | +| lifetime.rs:383:3:383:4 | p1 | lifetime.rs:428:7:428:8 | p1 | provenance | | +| lifetime.rs:383:3:383:4 | p1 | lifetime.rs:433:7:433:8 | p1 | provenance | | +| lifetime.rs:383:31:383:37 | &raw mut my_pair | lifetime.rs:383:3:383:4 | p1 | provenance | | +| lifetime.rs:384:3:384:4 | p2 | lifetime.rs:394:14:394:15 | p2 | provenance | | +| lifetime.rs:384:3:384:4 | p2 | lifetime.rs:421:15:421:16 | p2 | provenance | | +| lifetime.rs:384:27:384:35 | &raw const ... | lifetime.rs:384:3:384:4 | p2 | provenance | | +| lifetime.rs:385:3:385:4 | p3 | lifetime.rs:395:14:395:15 | p3 | provenance | | +| lifetime.rs:385:3:385:4 | p3 | lifetime.rs:400:5:400:6 | p3 | provenance | | +| lifetime.rs:385:3:385:4 | p3 | lifetime.rs:400:5:400:6 | p3 | provenance | | +| lifetime.rs:385:31:385:39 | &raw mut ... | lifetime.rs:385:3:385:4 | p3 | provenance | | +| lifetime.rs:400:5:400:6 | p3 | lifetime.rs:422:15:422:16 | p3 | provenance | | +| lifetime.rs:400:5:400:6 | p3 | lifetime.rs:429:6:429:7 | p3 | provenance | | +| lifetime.rs:442:6:442:7 | r1 | lifetime.rs:443:42:443:43 | r1 | provenance | | +| lifetime.rs:442:17:442:23 | &my_val | lifetime.rs:442:6:442:7 | r1 | provenance | | +| lifetime.rs:443:6:443:7 | p1 | lifetime.rs:446:13:446:14 | p1 | provenance | | +| lifetime.rs:443:6:443:7 | p1 | lifetime.rs:450:2:450:10 | return p1 | provenance | | +| lifetime.rs:443:23:443:44 | ...::from_ref(...) | lifetime.rs:443:6:443:7 | p1 | provenance | | +| lifetime.rs:443:42:443:43 | r1 | lifetime.rs:443:23:443:44 | ...::from_ref(...) | provenance | MaD:1 | +| lifetime.rs:450:2:450:10 | return p1 | lifetime.rs:454:11:454:29 | get_ptr_from_ref(...) | provenance | | +| lifetime.rs:450:2:450:10 | return p1 | lifetime.rs:460:13:460:31 | get_ptr_from_ref(...) | provenance | | +| lifetime.rs:454:6:454:7 | p1 | lifetime.rs:459:13:459:14 | p1 | provenance | | +| lifetime.rs:454:11:454:29 | get_ptr_from_ref(...) | lifetime.rs:454:6:454:7 | p1 | provenance | | +| lifetime.rs:568:7:568:8 | p2 | lifetime.rs:572:14:572:15 | p2 | provenance | | +| lifetime.rs:568:24:568:33 | &my_local2 | lifetime.rs:568:7:568:8 | p2 | provenance | | +| lifetime.rs:630:3:630:6 | str2 | lifetime.rs:633:15:633:18 | str2 | provenance | | +| lifetime.rs:630:3:630:6 | str2 | lifetime.rs:641:14:641:17 | str2 | provenance | | +| lifetime.rs:630:10:630:25 | &... | lifetime.rs:630:3:630:6 | str2 | provenance | | +| lifetime.rs:654:4:654:7 | str2 | lifetime.rs:655:22:655:25 | str2 | provenance | | +| lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:654:4:654:7 | str2 | provenance | | +| lifetime.rs:655:4:655:7 | ref1 | lifetime.rs:659:15:659:18 | ref1 | provenance | | +| lifetime.rs:655:4:655:7 | ref1 | lifetime.rs:667:14:667:17 | ref1 | provenance | | +| lifetime.rs:655:4:655:7 | ref1 [&ref] | lifetime.rs:659:15:659:18 | ref1 | provenance | | +| lifetime.rs:655:4:655:7 | ref1 [&ref] | lifetime.rs:667:14:667:17 | ref1 | provenance | | +| lifetime.rs:655:11:655:25 | &raw const str2 | lifetime.rs:655:4:655:7 | ref1 | provenance | | +| lifetime.rs:655:11:655:25 | &raw const str2 [&ref] | lifetime.rs:655:4:655:7 | ref1 [&ref] | provenance | | +| lifetime.rs:655:22:655:25 | str2 | lifetime.rs:655:11:655:25 | &raw const str2 [&ref] | provenance | | +| lifetime.rs:680:7:680:8 | r1 | lifetime.rs:692:13:692:14 | r1 | provenance | | +| lifetime.rs:682:4:682:12 | &... | lifetime.rs:680:7:680:8 | r1 | provenance | | +| lifetime.rs:684:7:684:14 | TuplePat [tuple.0] | lifetime.rs:684:8:684:9 | r2 | provenance | | +| lifetime.rs:684:7:684:14 | TuplePat [tuple.1] | lifetime.rs:684:12:684:13 | r3 | provenance | | +| lifetime.rs:684:8:684:9 | r2 | lifetime.rs:693:13:693:14 | r2 | provenance | | +| lifetime.rs:684:12:684:13 | r3 | lifetime.rs:694:13:694:14 | r3 | provenance | | +| lifetime.rs:686:4:687:16 | TupleExpr [tuple.0] | lifetime.rs:684:7:684:14 | TuplePat [tuple.0] | provenance | | +| lifetime.rs:686:4:687:16 | TupleExpr [tuple.1] | lifetime.rs:684:7:684:14 | TuplePat [tuple.1] | provenance | | +| lifetime.rs:686:5:686:13 | &... | lifetime.rs:686:4:687:16 | TupleExpr [tuple.0] | provenance | | +| lifetime.rs:687:5:687:15 | &... | lifetime.rs:686:4:687:16 | TupleExpr [tuple.1] | provenance | | +| lifetime.rs:717:35:723:2 | { ... } | lifetime.rs:730:11:730:25 | e1.test_match() | provenance | | +| lifetime.rs:718:7:718:8 | r1 | lifetime.rs:717:35:723:2 | { ... } | provenance | | +| lifetime.rs:719:26:719:34 | &... | lifetime.rs:718:7:718:8 | r1 | provenance | | +| lifetime.rs:730:6:730:7 | r1 | lifetime.rs:734:12:734:13 | r1 | provenance | | +| lifetime.rs:730:11:730:25 | e1.test_match() | lifetime.rs:730:6:730:7 | r1 | provenance | | +| lifetime.rs:766:2:766:13 | &val | lifetime.rs:766:2:766:13 | ptr | provenance | | +| lifetime.rs:766:2:766:13 | ptr | lifetime.rs:767:2:767:13 | ptr | provenance | | +| lifetime.rs:769:6:769:8 | ptr | lifetime.rs:771:12:771:14 | ptr | provenance | | +| lifetime.rs:769:12:769:23 | &val | lifetime.rs:769:12:769:23 | ptr | provenance | | +| lifetime.rs:769:12:769:23 | ptr | lifetime.rs:769:6:769:8 | ptr | provenance | | +| lifetime.rs:781:2:781:19 | return ... | lifetime.rs:785:11:785:41 | get_local_for_unsafe_function(...) | provenance | | +| lifetime.rs:781:9:781:19 | &my_local10 | lifetime.rs:781:2:781:19 | return ... | provenance | | +| lifetime.rs:785:6:785:7 | p1 | lifetime.rs:789:12:789:13 | p1 | provenance | | +| lifetime.rs:785:11:785:41 | get_local_for_unsafe_function(...) | lifetime.rs:785:6:785:7 | p1 | provenance | | +| lifetime.rs:798:2:798:12 | return ... | lifetime.rs:802:12:802:24 | get_pointer(...) | provenance | | +| lifetime.rs:798:9:798:12 | &val | lifetime.rs:798:2:798:12 | return ... | provenance | | +| lifetime.rs:802:6:802:8 | ptr | lifetime.rs:808:23:808:25 | ptr | provenance | | +| lifetime.rs:802:12:802:24 | get_pointer(...) | lifetime.rs:802:6:802:8 | ptr | provenance | | +models +| 1 | Summary: core::ptr::from_ref; Argument[0]; ReturnValue; value | +nodes +| deallocation.rs:148:6:148:7 | p1 | semmle.label | p1 | +| deallocation.rs:148:30:148:38 | &raw const my_buffer | semmle.label | &raw const my_buffer | +| deallocation.rs:151:14:151:15 | p1 | semmle.label | p1 | +| deallocation.rs:158:14:158:15 | p1 | semmle.label | p1 | +| deallocation.rs:228:28:228:43 | ...: ... | semmle.label | ...: ... | +| deallocation.rs:230:18:230:20 | ptr | semmle.label | ptr | +| deallocation.rs:240:27:240:42 | ...: ... | semmle.label | ...: ... | +| deallocation.rs:248:18:248:20 | ptr | semmle.label | ptr | +| deallocation.rs:257:7:257:10 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:257:14:257:33 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:258:7:258:10 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:258:14:258:33 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:260:4:260:7 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:260:4:260:7 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:261:4:261:7 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:261:4:261:7 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:263:27:263:30 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:265:26:265:29 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:276:6:276:9 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:276:13:276:28 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:279:13:279:16 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:287:13:287:16 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:295:6:295:9 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:295:13:295:28 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:298:13:298:16 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:308:13:308:16 | ptr2 | semmle.label | ptr2 | +| lifetime.rs:21:2:21:18 | return ... | semmle.label | return ... | +| lifetime.rs:21:9:21:18 | &my_local1 | semmle.label | &my_local1 | +| lifetime.rs:27:2:27:22 | return ... | semmle.label | return ... | +| lifetime.rs:27:9:27:22 | &mut my_local2 | semmle.label | &mut my_local2 | +| lifetime.rs:33:2:33:28 | return ... | semmle.label | return ... | +| lifetime.rs:33:9:33:28 | &raw const my_local3 | semmle.label | &raw const my_local3 | +| lifetime.rs:39:2:39:26 | return ... | semmle.label | return ... | +| lifetime.rs:39:9:39:26 | &raw mut my_local4 | semmle.label | &raw mut my_local4 | +| lifetime.rs:43:2:43:15 | return ... | semmle.label | return ... | +| lifetime.rs:43:9:43:15 | ¶m5 | semmle.label | ¶m5 | +| lifetime.rs:50:2:50:18 | return ... | semmle.label | return ... | +| lifetime.rs:50:9:50:18 | &... | semmle.label | &... | +| lifetime.rs:54:6:54:7 | p1 | semmle.label | p1 | +| lifetime.rs:54:11:54:30 | get_local_dangling(...) | semmle.label | get_local_dangling(...) | +| lifetime.rs:55:6:55:7 | p2 | semmle.label | p2 | +| lifetime.rs:55:11:55:34 | get_local_dangling_mut(...) | semmle.label | get_local_dangling_mut(...) | +| lifetime.rs:56:6:56:7 | p3 | semmle.label | p3 | +| lifetime.rs:56:11:56:40 | get_local_dangling_raw_const(...) | semmle.label | get_local_dangling_raw_const(...) | +| lifetime.rs:57:6:57:7 | p4 | semmle.label | p4 | +| lifetime.rs:57:11:57:38 | get_local_dangling_raw_mut(...) | semmle.label | get_local_dangling_raw_mut(...) | +| lifetime.rs:58:6:58:7 | p5 | semmle.label | p5 | +| lifetime.rs:58:11:58:31 | get_param_dangling(...) | semmle.label | get_param_dangling(...) | +| lifetime.rs:59:6:59:7 | p6 | semmle.label | p6 | +| lifetime.rs:59:11:59:36 | get_local_field_dangling(...) | semmle.label | get_local_field_dangling(...) | +| lifetime.rs:63:3:63:4 | p7 | semmle.label | p7 | +| lifetime.rs:63:8:63:27 | &raw const my_local7 | semmle.label | &raw const my_local7 | +| lifetime.rs:69:13:69:14 | p1 | semmle.label | p1 | +| lifetime.rs:70:13:70:14 | p2 | semmle.label | p2 | +| lifetime.rs:71:13:71:14 | p3 | semmle.label | p3 | +| lifetime.rs:72:13:72:14 | p4 | semmle.label | p4 | +| lifetime.rs:73:13:73:14 | p5 | semmle.label | p5 | +| lifetime.rs:74:13:74:14 | p6 | semmle.label | p6 | +| lifetime.rs:75:13:75:14 | p7 | semmle.label | p7 | +| lifetime.rs:76:4:76:5 | p2 | semmle.label | p2 | +| lifetime.rs:77:4:77:5 | p4 | semmle.label | p4 | +| lifetime.rs:91:17:91:30 | ...: ... | semmle.label | ...: ... | +| lifetime.rs:91:33:91:44 | ...: ... | semmle.label | ...: ... | +| lifetime.rs:94:2:94:3 | p3 | semmle.label | p3 | +| lifetime.rs:94:7:94:16 | &my_local1 | semmle.label | &my_local1 | +| lifetime.rs:101:14:101:15 | p1 | semmle.label | p1 | +| lifetime.rs:102:14:102:15 | p2 | semmle.label | p2 | +| lifetime.rs:103:14:103:15 | p3 | semmle.label | p3 | +| lifetime.rs:110:5:110:6 | p2 | semmle.label | p2 | +| lifetime.rs:119:15:119:24 | &my_local3 | semmle.label | &my_local3 | +| lifetime.rs:119:27:119:44 | &mut my_local_mut4 | semmle.label | &mut my_local_mut4 | +| lifetime.rs:127:2:127:24 | return ... | semmle.label | return ... | +| lifetime.rs:127:9:127:24 | &MY_GLOBAL_CONST | semmle.label | &MY_GLOBAL_CONST | +| lifetime.rs:134:3:134:30 | return ... | semmle.label | return ... | +| lifetime.rs:134:10:134:30 | &mut MY_GLOBAL_STATIC | semmle.label | &mut MY_GLOBAL_STATIC | +| lifetime.rs:139:6:139:7 | p1 | semmle.label | p1 | +| lifetime.rs:139:11:139:21 | get_const(...) | semmle.label | get_const(...) | +| lifetime.rs:140:6:140:7 | p2 | semmle.label | p2 | +| lifetime.rs:140:11:140:26 | get_static_mut(...) | semmle.label | get_static_mut(...) | +| lifetime.rs:147:14:147:15 | p1 | semmle.label | p1 | +| lifetime.rs:148:14:148:15 | p2 | semmle.label | p2 | +| lifetime.rs:154:5:154:6 | p2 | semmle.label | p2 | +| lifetime.rs:161:17:161:31 | ...: ... | semmle.label | ...: ... | +| lifetime.rs:164:13:164:15 | ptr | semmle.label | ptr | +| lifetime.rs:169:17:169:31 | ...: ... | semmle.label | ...: ... | +| lifetime.rs:172:13:172:15 | ptr | semmle.label | ptr | +| lifetime.rs:177:17:177:31 | ...: ... | semmle.label | ...: ... | +| lifetime.rs:180:13:180:15 | ptr | semmle.label | ptr | +| lifetime.rs:187:6:187:8 | ptr | semmle.label | ptr | +| lifetime.rs:187:12:187:21 | &my_local1 | semmle.label | &my_local1 | +| lifetime.rs:189:15:189:17 | ptr | semmle.label | ptr | +| lifetime.rs:190:15:190:17 | ptr | semmle.label | ptr | +| lifetime.rs:192:2:192:11 | return ptr | semmle.label | return ptr | +| lifetime.rs:196:6:196:8 | ptr | semmle.label | ptr | +| lifetime.rs:196:12:196:36 | access_and_get_dangling(...) | semmle.label | access_and_get_dangling(...) | +| lifetime.rs:200:15:200:17 | ptr | semmle.label | ptr | +| lifetime.rs:201:15:201:17 | ptr | semmle.label | ptr | +| lifetime.rs:206:19:206:36 | ...: ... | semmle.label | ...: ... | +| lifetime.rs:208:6:208:13 | ptr_ours | semmle.label | ptr_ours | +| lifetime.rs:208:17:208:29 | &my_local_rec | semmle.label | &my_local_rec | +| lifetime.rs:211:7:211:14 | ptr_down | semmle.label | ptr_down | +| lifetime.rs:211:18:211:52 | access_ptr_rec(...) | semmle.label | access_ptr_rec(...) | +| lifetime.rs:211:33:211:40 | ptr_ours | semmle.label | ptr_ours | +| lifetime.rs:216:16:216:21 | ptr_up | semmle.label | ptr_up | +| lifetime.rs:217:18:217:25 | ptr_ours | semmle.label | ptr_ours | +| lifetime.rs:218:18:218:25 | ptr_down | semmle.label | ptr_down | +| lifetime.rs:225:2:225:16 | return ptr_ours | semmle.label | return ptr_ours | +| lifetime.rs:230:6:230:14 | ptr_start | semmle.label | ptr_start | +| lifetime.rs:230:18:230:31 | &my_local_rec2 | semmle.label | &my_local_rec2 | +| lifetime.rs:232:21:232:29 | ptr_start | semmle.label | ptr_start | +| lifetime.rs:239:6:239:13 | mut prev | semmle.label | mut prev | +| lifetime.rs:239:34:239:43 | &my_local1 | semmle.label | &my_local1 | +| lifetime.rs:247:15:247:18 | prev | semmle.label | prev | +| lifetime.rs:251:3:251:6 | prev | semmle.label | prev | +| lifetime.rs:251:10:251:19 | &my_local2 | semmle.label | &my_local2 | +| lifetime.rs:255:14:255:17 | prev | semmle.label | prev | +| lifetime.rs:270:47:275:1 | { ... } | semmle.label | { ... } | +| lifetime.rs:272:6:272:11 | result | semmle.label | result | +| lifetime.rs:272:30:272:32 | &e1 | semmle.label | &e1 | +| lifetime.rs:284:46:300:1 | { ... } | semmle.label | { ... } | +| lifetime.rs:288:2:288:7 | result | semmle.label | result | +| lifetime.rs:289:25:289:26 | &x | semmle.label | &x | +| lifetime.rs:295:13:295:18 | result | semmle.label | result | +| lifetime.rs:303:6:303:7 | e1 | semmle.label | e1 | +| lifetime.rs:303:11:303:31 | get_pointer_to_enum(...) | semmle.label | get_pointer_to_enum(...) | +| lifetime.rs:305:6:305:11 | result | semmle.label | result | +| lifetime.rs:305:15:305:37 | get_pointer_from_enum(...) | semmle.label | get_pointer_from_enum(...) | +| lifetime.rs:310:31:310:32 | e1 | semmle.label | e1 | +| lifetime.rs:317:13:317:18 | result | semmle.label | result | +| lifetime.rs:383:3:383:4 | p1 | semmle.label | p1 | +| lifetime.rs:383:31:383:37 | &raw mut my_pair | semmle.label | &raw mut my_pair | +| lifetime.rs:384:3:384:4 | p2 | semmle.label | p2 | +| lifetime.rs:384:27:384:35 | &raw const ... | semmle.label | &raw const ... | +| lifetime.rs:385:3:385:4 | p3 | semmle.label | p3 | +| lifetime.rs:385:31:385:39 | &raw mut ... | semmle.label | &raw mut ... | +| lifetime.rs:388:15:388:16 | p1 | semmle.label | p1 | +| lifetime.rs:391:15:391:16 | p1 | semmle.label | p1 | +| lifetime.rs:394:14:394:15 | p2 | semmle.label | p2 | +| lifetime.rs:395:14:395:15 | p3 | semmle.label | p3 | +| lifetime.rs:399:6:399:7 | p1 | semmle.label | p1 | +| lifetime.rs:400:5:400:6 | p3 | semmle.label | p3 | +| lifetime.rs:400:5:400:6 | p3 | semmle.label | p3 | +| lifetime.rs:401:6:401:7 | p1 | semmle.label | p1 | +| lifetime.rs:411:16:411:17 | p1 | semmle.label | p1 | +| lifetime.rs:416:16:416:17 | p1 | semmle.label | p1 | +| lifetime.rs:421:15:421:16 | p2 | semmle.label | p2 | +| lifetime.rs:422:15:422:16 | p3 | semmle.label | p3 | +| lifetime.rs:428:7:428:8 | p1 | semmle.label | p1 | +| lifetime.rs:429:6:429:7 | p3 | semmle.label | p3 | +| lifetime.rs:433:7:433:8 | p1 | semmle.label | p1 | +| lifetime.rs:442:6:442:7 | r1 | semmle.label | r1 | +| lifetime.rs:442:17:442:23 | &my_val | semmle.label | &my_val | +| lifetime.rs:443:6:443:7 | p1 | semmle.label | p1 | +| lifetime.rs:443:23:443:44 | ...::from_ref(...) | semmle.label | ...::from_ref(...) | +| lifetime.rs:443:42:443:43 | r1 | semmle.label | r1 | +| lifetime.rs:446:13:446:14 | p1 | semmle.label | p1 | +| lifetime.rs:450:2:450:10 | return p1 | semmle.label | return p1 | +| lifetime.rs:454:6:454:7 | p1 | semmle.label | p1 | +| lifetime.rs:454:11:454:29 | get_ptr_from_ref(...) | semmle.label | get_ptr_from_ref(...) | +| lifetime.rs:459:13:459:14 | p1 | semmle.label | p1 | +| lifetime.rs:460:13:460:31 | get_ptr_from_ref(...) | semmle.label | get_ptr_from_ref(...) | +| lifetime.rs:568:7:568:8 | p2 | semmle.label | p2 | +| lifetime.rs:568:24:568:33 | &my_local2 | semmle.label | &my_local2 | +| lifetime.rs:572:14:572:15 | p2 | semmle.label | p2 | +| lifetime.rs:630:3:630:6 | str2 | semmle.label | str2 | +| lifetime.rs:630:10:630:25 | &... | semmle.label | &... | +| lifetime.rs:633:15:633:18 | str2 | semmle.label | str2 | +| lifetime.rs:641:14:641:17 | str2 | semmle.label | str2 | +| lifetime.rs:654:4:654:7 | str2 | semmle.label | str2 | +| lifetime.rs:654:31:654:35 | &str1 | semmle.label | &str1 | +| lifetime.rs:655:4:655:7 | ref1 | semmle.label | ref1 | +| lifetime.rs:655:4:655:7 | ref1 [&ref] | semmle.label | ref1 [&ref] | +| lifetime.rs:655:11:655:25 | &raw const str2 | semmle.label | &raw const str2 | +| lifetime.rs:655:11:655:25 | &raw const str2 [&ref] | semmle.label | &raw const str2 [&ref] | +| lifetime.rs:655:22:655:25 | str2 | semmle.label | str2 | +| lifetime.rs:659:15:659:18 | ref1 | semmle.label | ref1 | +| lifetime.rs:667:14:667:17 | ref1 | semmle.label | ref1 | +| lifetime.rs:680:7:680:8 | r1 | semmle.label | r1 | +| lifetime.rs:682:4:682:12 | &... | semmle.label | &... | +| lifetime.rs:684:7:684:14 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] | +| lifetime.rs:684:7:684:14 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] | +| lifetime.rs:684:8:684:9 | r2 | semmle.label | r2 | +| lifetime.rs:684:12:684:13 | r3 | semmle.label | r3 | +| lifetime.rs:686:4:687:16 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | +| lifetime.rs:686:4:687:16 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] | +| lifetime.rs:686:5:686:13 | &... | semmle.label | &... | +| lifetime.rs:687:5:687:15 | &... | semmle.label | &... | +| lifetime.rs:692:13:692:14 | r1 | semmle.label | r1 | +| lifetime.rs:693:13:693:14 | r2 | semmle.label | r2 | +| lifetime.rs:694:13:694:14 | r3 | semmle.label | r3 | +| lifetime.rs:717:35:723:2 | { ... } | semmle.label | { ... } | +| lifetime.rs:718:7:718:8 | r1 | semmle.label | r1 | +| lifetime.rs:719:26:719:34 | &... | semmle.label | &... | +| lifetime.rs:730:6:730:7 | r1 | semmle.label | r1 | +| lifetime.rs:730:11:730:25 | e1.test_match() | semmle.label | e1.test_match() | +| lifetime.rs:734:12:734:13 | r1 | semmle.label | r1 | +| lifetime.rs:766:2:766:13 | &val | semmle.label | &val | +| lifetime.rs:766:2:766:13 | ptr | semmle.label | ptr | +| lifetime.rs:767:2:767:13 | ptr | semmle.label | ptr | +| lifetime.rs:769:6:769:8 | ptr | semmle.label | ptr | +| lifetime.rs:769:12:769:23 | &val | semmle.label | &val | +| lifetime.rs:769:12:769:23 | ptr | semmle.label | ptr | +| lifetime.rs:771:12:771:14 | ptr | semmle.label | ptr | +| lifetime.rs:781:2:781:19 | return ... | semmle.label | return ... | +| lifetime.rs:781:9:781:19 | &my_local10 | semmle.label | &my_local10 | +| lifetime.rs:785:6:785:7 | p1 | semmle.label | p1 | +| lifetime.rs:785:11:785:41 | get_local_for_unsafe_function(...) | semmle.label | get_local_for_unsafe_function(...) | +| lifetime.rs:789:12:789:13 | p1 | semmle.label | p1 | +| lifetime.rs:798:2:798:12 | return ... | semmle.label | return ... | +| lifetime.rs:798:9:798:12 | &val | semmle.label | &val | +| lifetime.rs:802:6:802:8 | ptr | semmle.label | ptr | +| lifetime.rs:802:12:802:24 | get_pointer(...) | semmle.label | get_pointer(...) | +| lifetime.rs:808:23:808:25 | ptr | semmle.label | ptr | +subpaths diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.qlref b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.qlref new file mode 100644 index 000000000000..d9249badc000 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.qlref @@ -0,0 +1,4 @@ +query: queries/security/CWE-825/AccessAfterLifetime.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql 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 7bccaa02f635..f0c67e6f5d84 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected @@ -10,49 +10,57 @@ | 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 | +| deallocation.rs:20:3:20:21 | ...::dealloc | deallocation.rs:20:23:20:24 | [post] m1 | provenance | Src:MaD:5 MaD:5 | | deallocation.rs:20:23:20:24 | [post] m1 | deallocation.rs:26:15:26:16 | m1 | provenance | | | deallocation.rs:20:23:20:24 | [post] m1 | deallocation.rs:37:35:37:36 | m1 | provenance | | | deallocation.rs:20:23:20:24 | [post] m1 | deallocation.rs:44:6:44:7 | m1 | provenance | | | deallocation.rs:20:23:20:24 | [post] m1 | deallocation.rs:49:27:49:28 | m1 | provenance | | | deallocation.rs:37:35:37:36 | m1 | deallocation.rs:37:14:37:33 | ...::read::<...> | provenance | MaD:1 Sink:MaD:1 | | deallocation.rs:49:27:49:28 | m1 | deallocation.rs:49:5:49:25 | ...::write::<...> | provenance | MaD:2 Sink:MaD:2 | -| deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:70:23:70:35 | [post] m2 as ... | provenance | Src:MaD:3 MaD:3 | +| deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:70:23:70:35 | [post] m2 as ... | provenance | Src:MaD:5 MaD:5 | | deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:76:16:76:17 | m2 | provenance | | | deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:81:16:81:17 | m2 | provenance | | | deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:86:7:86:8 | m2 | provenance | | | deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:90:7:90:8 | m2 | provenance | | | deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:95:33:95:34 | m2 | provenance | | | deallocation.rs:95:33:95:34 | m2 | deallocation.rs:95:5:95:31 | ...::write::<...> | provenance | MaD:2 Sink:MaD:2 | -| deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | provenance | Src:MaD:10 MaD:10 | | 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:6 MaD:6 | +| deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:123:23:123:42 | ...::dangling(...) | provenance | Src:MaD:3 MaD:3 | | 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 | +| deallocation.rs:124:21:124:42 | ...::dangling_mut | deallocation.rs:124:21:124:44 | ...::dangling_mut(...) | provenance | Src:MaD:7 MaD:7 | | deallocation.rs:124:21:124:44 | ...::dangling_mut(...) | deallocation.rs:124:6:124:7 | p2 | provenance | | | deallocation.rs:125:6:125:7 | p3 | deallocation.rs:132:14:132:15 | p3 | provenance | | -| deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:125:23:125:38 | ...::null(...) | provenance | Src:MaD:7 MaD:7 | +| deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:125:23:125:38 | ...::null(...) | provenance | Src:MaD:9 MaD:9 | | 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:8 MaD:8 | +| deallocation.rs:176:3:176:25 | ...::drop_in_place | deallocation.rs:176:27:176:28 | [post] p1 | provenance | Src:MaD:4 MaD:4 | | 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:8 MaD:8 | +| deallocation.rs:242:3:242:25 | ...::drop_in_place | deallocation.rs:242:27:242:29 | [post] ptr | provenance | Src:MaD:4 MaD:4 | | 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] | -| 2 | Sink: lang:core; crate::ptr::write; pointer-access; Argument[0] | -| 3 | Source: lang:alloc; crate::alloc::dealloc; pointer-invalidate; Argument[0] | -| 4 | Source: lang:core; crate::ptr::dangling; pointer-invalidate; ReturnValue | -| 5 | Source: lang:core; crate::ptr::dangling_mut; pointer-invalidate; ReturnValue | -| 6 | Source: lang:core; crate::ptr::drop_in_place; pointer-invalidate; Argument[0] | -| 7 | Source: lang:core; crate::ptr::null; pointer-invalidate; ReturnValue | -| 8 | Source: repo:https://github.com/rust-lang/libc:libc; ::free; pointer-invalidate; Argument[0] | +| 1 | Sink: lang:core; crate::ptr::read; Argument[0]; pointer-access | +| 2 | Sink: lang:core; crate::ptr::write; Argument[0]; pointer-access | +| 3 | Source: core::ptr::dangling; ReturnValue; pointer-invalidate | +| 4 | Source: core::ptr::drop_in_place; Argument[0]; pointer-invalidate | +| 5 | Source: lang:alloc; crate::alloc::dealloc; Argument[0]; pointer-invalidate | +| 6 | Source: lang:core; crate::ptr::dangling; ReturnValue; pointer-invalidate | +| 7 | Source: lang:core; crate::ptr::dangling_mut; ReturnValue; pointer-invalidate | +| 8 | Source: lang:core; crate::ptr::drop_in_place; Argument[0]; pointer-invalidate | +| 9 | Source: lang:core; crate::ptr::null; ReturnValue; pointer-invalidate | +| 10 | Source: repo:https://github.com/rust-lang/libc:libc; ::free; Argument[0]; pointer-invalidate | nodes | deallocation.rs:20:3:20:21 | ...::dealloc | semmle.label | ...::dealloc | | deallocation.rs:20:23:20:24 | [post] m1 | semmle.label | [post] m1 | @@ -75,6 +83,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 +95,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 804c13f6434b..bd02a006dc88 100644 --- a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected @@ -1,11 +1,17 @@ +multipleCallTargets +| deallocation.rs:106:16:106:32 | ...::malloc(...) | +| deallocation.rs:112:3:112:41 | ...::free(...) | +| deallocation.rs:260:11:260:29 | ...::from(...) | +| deallocation.rs:261:11:261:29 | ...::from(...) | +| lifetime.rs:610:13:610:31 | ...::from(...) | +| lifetime.rs:611:13:611:31 | ...::from(...) | +| lifetime.rs:612:27:612:38 | foo.as_str() | +| lifetime.rs:612:41:612:52 | bar.as_str() | +| lifetime.rs:628:13:628:31 | ...::from(...) | +| lifetime.rs:629:32:629:43 | baz.as_str() | +| main.rs:41:8:41:24 | ...::into_raw(...) | +| main.rs:80:11:80:27 | ...::into_raw(...) | multiplePathResolutions -| deallocation.rs:106:16:106:19 | libc | file://:0:0:0:0 | Crate(libc@0.2.171) | -| deallocation.rs:106:16:106:19 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| deallocation.rs:106:16:106:27 | ...::malloc | file://:0:0:0:0 | fn malloc | -| deallocation.rs:106:16:106:27 | ...::malloc | file://:0:0:0:0 | fn malloc | -| deallocation.rs:112:3:112:6 | libc | file://:0:0:0:0 | Crate(libc@0.2.171) | -| deallocation.rs:112:3:112:6 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| deallocation.rs:112:3:112:12 | ...::free | file://:0:0:0:0 | fn free | -| 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:106:16:106:19 | libc | +| deallocation.rs:112:3:112:6 | libc | +| deallocation.rs:112:29:112:32 | libc | diff --git a/rust/ql/test/query-tests/security/CWE-825/Cargo.lock b/rust/ql/test/query-tests/security/CWE-825/Cargo.lock new file mode 100644 index 000000000000..a43970486824 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-825/Cargo.lock @@ -0,0 +1,165 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "syn" +version = "2.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "futures", + "libc", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" diff --git a/rust/ql/test/query-tests/security/CWE-825/deallocation.rs b/rust/ql/test/query-tests/security/CWE-825/deallocation.rs index 361f938e02c4..89ef0470e99d 100644 --- a/rust/ql/test/query-tests/security/CWE-825/deallocation.rs +++ b/rust/ql/test/query-tests/security/CWE-825/deallocation.rs @@ -17,7 +17,7 @@ pub fn test_alloc(mode: i32) { println!(" v3 = {v3}"); println!(" v4 = {v4}"); - std::alloc::dealloc(m1, layout); // $ Source=dealloc + std::alloc::dealloc(m1, layout); // $ Source[rust/access-invalid-pointer]=dealloc // (m1, m2 are now dangling) match mode { @@ -29,8 +29,8 @@ pub fn test_alloc(mode: i32) { println!(" v6 = {v6} (!)"); // corrupt in practice // test repeat reads (we don't want lots of very similar results for the same dealloc) - let v5b = *m1; - let v5c = *m1; + let _v5b = *m1; + let _v5c = *m1; }, 100 => { // more reads @@ -67,7 +67,7 @@ pub fn test_alloc_array(mode: i32) { println!(" v1 = {v1}"); println!(" v2 = {v2}"); - std::alloc::dealloc(m2 as *mut u8, layout); // $ Source=dealloc_array + std::alloc::dealloc(m2 as *mut u8, layout); // $ Source[rust/access-invalid-pointer]=dealloc_array // m1, m2 are now dangling match mode { @@ -109,7 +109,7 @@ pub fn test_libc() { let v1 = *my_ptr; // GOOD println!(" v1 = {v1}"); - libc::free(my_ptr as *mut libc::c_void); // $ Source=free + libc::free(my_ptr as *mut libc::c_void); // $ Source[rust/access-invalid-pointer]=free // (my_ptr is now dangling) let v2 = *my_ptr; // $ Alert[rust/access-invalid-pointer]=free @@ -120,9 +120,9 @@ pub fn test_libc() { // --- std::ptr --- pub fn test_ptr_invalid(mode: i32) { - let p1: *const i64 = std::ptr::dangling(); // $ Source=dangling - let p2: *mut i64 = std::ptr::dangling_mut(); // $ Source=dangling_mut - let p3: *const i64 = std::ptr::null(); // $ Source=null + let p1: *const i64 = std::ptr::dangling(); // $ Source[rust/access-invalid-pointer]=dangling + let p2: *mut i64 = std::ptr::dangling_mut(); // $ Source[rust/access-invalid-pointer]=dangling_mut + let p3: *const i64 = std::ptr::null(); // $ Source[rust/access-invalid-pointer]=null if mode == 120 { unsafe { @@ -173,7 +173,7 @@ pub fn test_ptr_drop(mode: i32) { println!(" v1 = {v1}"); println!(" v2 = {v2}"); - std::ptr::drop_in_place(p1); // $ Source=drop_in_place + std::ptr::drop_in_place(p1); // $ Source[rust/access-invalid-pointer]=drop_in_place // explicitly destructs the pointed-to `m2` if mode == 1 { @@ -212,7 +212,7 @@ impl Drop for MyDropBuffer { unsafe { _ = *self.ptr; - drop(*self.ptr); // $ MISSING: Source=drop + drop(*self.ptr); // $ MISSING: Source[rust/access-invalid-pointer]=drop _ = *self.ptr; // $ MISSING: Alert[rust/access-invalid-pointer]=drop std::alloc::dealloc(self.ptr, layout); } @@ -239,7 +239,7 @@ fn test_qhelp_example_good(ptr: *mut String) { fn test_qhelp_example_bad(ptr: *mut String) { unsafe { - std::ptr::drop_in_place(ptr); // $ Source=drop_in_place + std::ptr::drop_in_place(ptr); // $ Source[rust/access-invalid-pointer]=drop_in_place } // ... @@ -280,7 +280,7 @@ pub fn test_vec_reserve() { println!(" v1 = {}", v1); } - vec1.reserve(1000); // $ MISSING: Source=reserve + vec1.reserve(1000); // $ MISSING: Source[rust/access-invalid-pointer]=reserve // (may invalidate the pointer) unsafe { @@ -300,7 +300,7 @@ pub fn test_vec_reserve() { } for _i in 0..1000 { - vec2.push(0); // $ MISSING: Source=push + vec2.push(0); // $ MISSING: Source[rust/access-invalid-pointer]=push // (may invalidate the pointer) } diff --git a/rust/ql/test/query-tests/security/CWE-825/lifetime.rs b/rust/ql/test/query-tests/security/CWE-825/lifetime.rs index d7fd8204993a..f388aff5aaf2 100644 --- a/rust/ql/test/query-tests/security/CWE-825/lifetime.rs +++ b/rust/ql/test/query-tests/security/CWE-825/lifetime.rs @@ -18,36 +18,36 @@ impl Drop for MyValue { fn get_local_dangling() -> *const i64 { let my_local1: i64 = 1; - return &my_local1; + return &my_local1; // $ Source[rust/access-after-lifetime-ended]=local1 } // (return value immediately becomes dangling) fn get_local_dangling_mut() -> *mut i64 { let mut my_local2: i64 = 2; - return &mut my_local2; + return &mut my_local2; // $ Source[rust/access-after-lifetime-ended]=local2 } // (return value immediately becomes dangling) fn get_local_dangling_raw_const() -> *const i64 { let my_local3: i64 = 3; - return &raw const my_local3; + return &raw const my_local3; // $ Source[rust/access-after-lifetime-ended]=local3 } // (return value immediately becomes dangling) fn get_local_dangling_raw_mut() -> *mut i64 { let mut my_local4: i64 = 4; - return &raw mut my_local4; + return &raw mut my_local4; // $ Source[rust/access-after-lifetime-ended]=local4 } // (return value immediately becomes dangling) fn get_param_dangling(param5: i64) -> *const i64 { - return ¶m5; + return ¶m5; // $ Source[rust/access-after-lifetime-ended]=param5 } // (return value immediately becomes dangling) fn get_local_field_dangling() -> *const i64 { let val: MyValue; val = MyValue { value: 6 }; - return &val.value; + return &val.value; // $ Source[rust/access-after-lifetime-ended]=localfield } pub fn test_local_dangling() { @@ -60,21 +60,21 @@ pub fn test_local_dangling() { let p7: *const i64; { let my_local7 = 7; - p7 = &raw const my_local7; + p7 = &raw const my_local7; // $ Source[rust/access-after-lifetime-ended]=local7 } // (my_local goes out of scope, thus p7 is dangling) use_the_stack(); unsafe { - let v1 = *p1; // $ MISSING: Alert - let v2 = *p2; // $ MISSING: Alert - let v3 = *p3; // $ MISSING: Alert - let v4 = *p4; // $ MISSING: Alert - let v5 = *p5; // $ MISSING: Alert - let v6 = *p6; // $ MISSING: Alert - let v7 = *p7; // $ MISSING: Alert - *p2 = 8; // $ MISSING: Alert - *p4 = 9; // $ MISSING: Alert + let v1 = *p1; // $ Alert[rust/access-after-lifetime-ended]=local1 + let v2 = *p2; // $ Alert[rust/access-after-lifetime-ended]=local2 + let v3 = *p3; // $ Alert[rust/access-after-lifetime-ended]=local3 + let v4 = *p4; // $ Alert[rust/access-after-lifetime-ended]=local4 + let v5 = *p5; // $ Alert[rust/access-after-lifetime-ended]=param5 + let v6 = *p6; // $ Alert[rust/access-after-lifetime-ended]=localfield + let v7 = *p7; // $ Alert[rust/access-after-lifetime-ended]=local7 + *p2 = 8; // $ Alert[rust/access-after-lifetime-ended]=local2 + *p4 = 9; // $ Alert[rust/access-after-lifetime-ended]=local4 println!(" v1 = {v1} (!)"); // corrupt in practice println!(" v2 = {v2} (!)"); // corrupt in practice @@ -96,7 +96,7 @@ fn use_pointers(p1: *const i64, p2: *mut i64, mode: i32) { use_the_stack(); unsafe { - if (mode == 0) { + if mode == 0 { // reads let v1 = *p1; // GOOD let v2 = *p2; // GOOD @@ -105,7 +105,7 @@ fn use_pointers(p1: *const i64, p2: *mut i64, mode: i32) { println!(" v2 = {v2}"); println!(" v3 = {v3}"); } - if (mode == 200) { + if mode == 200 { // writes *p2 = 2; // GOOD } @@ -142,14 +142,14 @@ pub fn test_static(mode: i32) { use_the_stack(); unsafe { - if (mode == 0) { + if mode == 0 { // reads let v1 = *p1; // GOOD let v2 = *p2; // GOOD println!(" v1 = {v1}"); println!(" v2 = {v2}"); } - if (mode == 210) { + if mode == 210 { // writes *p2 = 3; // GOOD } @@ -169,7 +169,7 @@ fn access_ptr_1(ptr: *const i64) { fn access_ptr_2(ptr: *const i64) { // only called with `ptr` dangling unsafe { - let v2 = *ptr; // $ MISSING: Alert + let v2 = *ptr; // $ Alert[rust/access-after-lifetime-ended]=local1 println!(" v2 = {v2} (!)"); // corrupt in practice } } @@ -184,7 +184,7 @@ fn access_ptr_3(ptr: *const i64) { fn access_and_get_dangling() -> *const i64 { let my_local1 = 1; - let ptr = &my_local1; + let ptr = &my_local1; // $ Source[rust/access-after-lifetime-ended]=local1 access_ptr_1(ptr); access_ptr_3(ptr); @@ -244,54 +244,116 @@ pub fn test_loop() { use_the_stack(); unsafe { - let v1 = (*prev)[0]; // $ MISSING: Alert + let v1 = (*prev)[0]; // $ MISSING: Alert[rust/access-after-lifetime-ended]=local2 println!(" v1 = {v1} (!)"); // incorrect values in practice (except first iteration) } - prev = &my_local2; + prev = &my_local2; // $ Source[rust/access-after-lifetime-ended]=local2 } // (my_local2 goes out of scope, thus prev is dangling) unsafe { - let v2 = (*prev)[0]; // $ MISSING: Alert + let v2 = (*prev)[0]; // $ Alert[rust/access-after-lifetime-ended]=local2 println!(" v2 = {v2} (!)"); // corrupt in practice } } -// --- enum --- +// --- enums --- enum MyEnum { Value(i64), } -impl Drop for MyEnum { - fn drop(&mut self) { - println!(" drop MyEnum"); - } +enum MyEnum2 { + Pointer(*const i64), } -pub fn test_enum() { +pub fn get_pointer_to_enum() -> *const MyEnum { + let e1 = MyEnum::Value(1); + let result: *const MyEnum = &e1; // $ Source[rust/access-after-lifetime-ended]=e1 + + result +} // (e1 goes out of scope, so result is dangling) + +pub fn get_pointer_in_enum() -> MyEnum2 { + let v2 = 2; + let e2 = MyEnum2::Pointer(&v2); // $ MISSING: Source[rust/access-after-lifetime-ended]=v2 + + e2 +} // (v2 goes out of scope, so the contained pointer is dangling) + +pub fn get_pointer_from_enum() -> *const i64 { + let e3 = MyEnum::Value(3); let result: *const i64; - { - let e1 = MyEnum::Value(1); + result = match e3 { + MyEnum::Value(x) => { &x } // $ Source[rust/access-after-lifetime-ended]=match_x + }; // (x goes out of scope, so result is possibly dangling already) - result = match e1 { - MyEnum::Value(x) => { &x } - }; // (x goes out of scope, so result is dangling, I think; seen in real world code) + use_the_stack(); - use_the_stack(); + unsafe { + let v0 = *result; // ? + println!(" v0 = {v0} (?)"); + } - unsafe { - let v1 = *result; // $ MISSING: Alert - println!(" v1 = {v1}"); - } - } // (e1 goes out of scope, so result is definitely dangling now) + result +} // (e3 goes out of scope, so result is definitely dangling now) + +pub fn test_enums() { + let e1 = get_pointer_to_enum(); + let e2 = get_pointer_in_enum(); + let result = get_pointer_from_enum(); use_the_stack(); unsafe { - let v2 = *result; // $ MISSING: Alert - println!(" v2 = {v2}"); // dropped in practice + if let MyEnum::Value(v1) = *e1 { // $ Alert[rust/access-after-lifetime-ended]=e1 + println!(" v1 = {v1} (!)"); // corrupt in practice + } + if let MyEnum2::Pointer(p2) = e2 { + let v2 = unsafe { *p2 }; // $ MISSING: Alert[rust/access-after-lifetime-ended]=v2 + println!(" v2 = {v2} (!)"); // corrupt in practice + } + let v3 = *result; // $ Alert[rust/access-after-lifetime-ended]=match_x + println!(" v3 = {v3} (!)"); // corrupt in practice + } +} + +// --- recursive enum --- + +enum RecursiveEnum { + Wrapper(Box), + Pointer(*const i64), +} + +pub fn get_recursive_enum() -> Box { + let v1 = 1; + let enum1 = RecursiveEnum::Wrapper(Box::new(RecursiveEnum::Pointer(&v1))); // Source[rust/access-after-lifetime-ended]=v1 + let mut ref1 = &enum1; + + while let RecursiveEnum::Wrapper(inner) = ref1 { + println!(" wrapper"); + ref1 = &inner; + } + if let RecursiveEnum::Pointer(ptr) = ref1 { + let v2: i64 = unsafe { **ptr }; // GOOD + println!(" v2 = {v2}"); + } + + return Box::new(enum1); +} // (v1 goes out of scope, thus the contained pointer is dangling) + +pub fn test_recursive_enums() { + let enum1 = *get_recursive_enum(); + let mut ref1 = &enum1; + + while let RecursiveEnum::Wrapper(inner) = ref1 { + println!(" wrapper"); + ref1 = &inner; + } + if let RecursiveEnum::Pointer(ptr) = ref1 { + let v3: i64 = unsafe { **ptr }; // Alert[rust/access-after-lifetime-ended]=v1 + println!(" v3 = {v3} (!)"); // corrupt in practice } } @@ -318,9 +380,9 @@ pub fn test_ptr_to_struct(mode: i32) { { let mut my_pair = MyPair { a: 1, b: 2}; - p1 = std::ptr::addr_of_mut!(my_pair); - p2 = std::ptr::addr_of!(my_pair.a); - p3 = std::ptr::addr_of_mut!(my_pair.b); + p1 = std::ptr::addr_of_mut!(my_pair); // $ Source[rust/access-after-lifetime-ended]=my_pair + p2 = std::ptr::addr_of!(my_pair.a); // $ MISSING: Source[rust/access-after-lifetime-ended]=my_pair_a + p3 = std::ptr::addr_of_mut!(my_pair.b); // $ MISSING: Source[rust/access-after-lifetime-ended]=my_pair_b unsafe { let v1 = (*p1).a; // GOOD @@ -346,12 +408,12 @@ pub fn test_ptr_to_struct(mode: i32) { match mode { 0 => { // read - let v5 = (*p1).a; // $ MISSING: Alert + let v5 = (*p1).a; // $ Alert[rust/access-after-lifetime-ended]=my_pair println!(" v5 = {v5} (!)"); // dropped in practice }, 220 => { // another read - let v6 = (*p1).b; // $ MISSING: Alert + let v6 = (*p1).b; // $ Alert[rust/access-after-lifetime-ended]=my_pair println!(" v6 = {v6} (!)"); // dropped in practice }, 221 => { @@ -363,12 +425,12 @@ pub fn test_ptr_to_struct(mode: i32) { }, 222 => { // writes - (*p1).a = 6; // $ MISSING: Alert + (*p1).a = 6; // $ Alert[rust/access-after-lifetime-ended]=my_pair *p3 = 7; // $ MISSING: Alert }, 223 => { // another write - (*p1).b = 8; // $ MISSING: Alert + (*p1).b = 8; // $ Alert[rust/access-after-lifetime-ended]=my_pair }, _ => {} } @@ -377,7 +439,7 @@ pub fn test_ptr_to_struct(mode: i32) { fn get_ptr_from_ref(val: i32) -> *const i32 { let my_val = val; - let r1: &i32 = &my_val; + let r1: &i32 = &my_val; // $ Source[rust/access-after-lifetime-ended]=my_val let p1: *const i32 = std::ptr::from_ref(r1); unsafe { @@ -394,8 +456,8 @@ pub fn test_ptr_from_ref() { use_the_stack(); unsafe { - let v2 = *p1; // $ MISSING: Alert - let v3 = *get_ptr_from_ref(2); // $ MISSING: Alert + let v2 = *p1; // $ Alert[rust/access-after-lifetime-ended]=my_val + let v3 = *get_ptr_from_ref(2); // $ Alert[rust/access-after-lifetime-ended]=my_val println!(" v2 = {v2} (!)"); // corrupt in practice println!(" v3 = {v3} (!)"); } @@ -429,7 +491,7 @@ pub fn test_rc() { println!(" v3 = {v3}"); println!(" v4 = {v4}"); } - } // rc1 go out of scope, the reference count is 0, so p1, p2 are dangling + } // rc1 goes out of scope, the reference count is 0, so p1, p2 are dangling unsafe { let v5 = *p1; // $ MISSING: Alert @@ -441,3 +503,327 @@ pub fn test_rc() { // note: simialar things are likely possible with Ref, RefMut, RefCell, // Vec and others. } + +// --- closures --- + +fn get_closure(p3: *const i64, p4: *const i64) -> impl FnOnce() { + let my_local1: i64 = 1; + let my_local2: i64 = 2; + let p1: *const i64 = &my_local1; // $ MISSING: Source[rust/access-after-lifetime-ended]=local1 + + return move || { // captures `my_local2`, `p1`, `p3`, `p4` by value (due to `move`) + let p2: *const i64 = &my_local2; + + unsafe { + let v1 = *p1; // $ MISSING: Alert[rust/access-after-lifetime-ended]=local1 + let v2 = *p2; // GOOD + let v3 = *p3; // GOOD + let v4 = *p4; // $ MISSING: Alert[rust/access-after-lifetime-ended]=local4 + println!(" v1 = {v1} (!)"); // corrupt in practice + println!(" v2 = {v2}"); + println!(" v3 = {v3}"); + println!(" v4 = {v4} (!)"); + } + }; +} // (`my_local1` goes out of scope, thus `p1` is dangling) + +fn with_closure(ptr: *const i64, closure: fn(*const i64, *const i64)) { + let my_local5: i64 = 5; + + closure(ptr, + &my_local5); +} + +pub fn test_closures() { + let closure; + let my_local3: i64 = 3; + { + let my_local4: i64 = 4; + closure = get_closure( &my_local3, + &my_local4); // $ MISSING: Source[rust/access-after-lifetime-ended]=local4 + } // (`my_local4` goes out of scope, so `p4` is dangling) + + use_the_stack(); + + closure(); + + with_closure(&my_local3, |p1, p2| { + unsafe { + let v5 = *p1; // GOOD + let v6 = *p2; // $ GOOD + println!(" v5 = {v5}"); + println!(" v6 = {v6}"); + } + }); +} + +// --- async --- + +fn get_async_closure(p3: *const i64, p4: *const i64) -> impl std::future::Future { + let my_local1: i64 = 1; + let my_local2: i64 = 2; + let p1: *const i64 = &my_local1; + + return async move { // captures `my_local2`, `p1`, `p3`, `p4` by value (due to `move`) + let p2: *const i64 = &my_local2; + + unsafe { + let v1 = *p1; // $ MISSING: Alert + let v2 = *p2; // GOOD + let v3 = *p3; // GOOD + let v4 = *p4; // $ MISSING: Alert + println!(" v1 = {v1} (!)"); // corrupt in practice + println!(" v2 = {v2}"); + println!(" v3 = {v3}"); + println!(" v4 = {v4} (!)"); + } + }; +} // (`my_local1` goes out of scope, thus `p1` is dangling) + +pub fn test_async() { + let async_closure; + let my_local3: i64 = 3; + { + let my_local4: i64 = 4; + async_closure = get_async_closure(&my_local3, + &my_local4); + } // (`my_local4` goes out of scope, so `p4` is dangling) + + use_the_stack(); + + futures::executor::block_on(async_closure); +} + +// --- lifetime annotations --- + +fn select_str<'a>(cond: bool, a: &'a str, b: &'a str) -> &'a str { + if cond { a } else { b } +} + +struct MyRefStr<'a> { + ref_str: &'a str, +} + +pub fn test_lifetime_annotations() { + let str1: *const str; + { + let foo = String::from("foo"); + let bar = String::from("bar"); + str1 = select_str(true, foo.as_str(), bar.as_str()); + + unsafe { + let v1 = &*str1; // GOOD + println!(" v1 = {v1}"); + } + } // (`foo`, `bar` go out of scope, the return value of `select_str` has the same lifetime, thus `str1` is dangling) + + unsafe { + let v2 = &*str1; // $ MISSING: Alert + println!(" v2 = {v2} (!)"); // corrupt in practice + } + + let my_ref; + let str2: *const str; + { + let baz = String::from("baz"); + my_ref = MyRefStr { ref_str: baz.as_str() }; + str2 = &*my_ref.ref_str; + + unsafe { + let v3 = &*str2; // GOOD + println!(" v3 = {v3}"); + } + } // (`baz` goes out of scope, `ref_str` has the same lifetime, thus `str2` is dangling) + + use_the_stack(); + + unsafe { + let v4 = &*str2; // $ MISSING: Alert + println!(" v4 = {v4} (!)"); // corrupt in practice + } +} + +// --- implicit dereferences --- + +pub fn test_implicit_derefs() { + let ref1; + { + let str2; + { + let str1 = "bar"; + str2 = "foo".to_string() + &str1; // $ Source[rust/access-after-lifetime-ended]=str1 + ref1 = &raw const str2; // $ Source[rust/access-after-lifetime-ended]=str2 + } // (str1 goes out of scope, but it's been copied into str2) + + unsafe { + let v1 = &*ref1; // $ SPURIOUS: Alert[rust/access-after-lifetime-ended]=str1 + println!(" v1 = {v1}"); + } + } // (str2 goes out of scope, thus ref1 is dangling) + + use_the_stack(); + + unsafe { + let v2 = &*ref1; // $ Alert[rust/access-after-lifetime-ended]=str2 SPURIOUS: Alert[rust/access-after-lifetime-ended]=str1 + println!(" v2 = {v2} (!)"); // corrupt in practice + } +} + +// --- members --- + +struct MyType { + value: i64, +} + +impl MyType { + fn test(&self) { + let r1 = unsafe { + let v1 = &self; + &v1.value + }; + let (r2, r3) = unsafe { + let v2 = &self; + (&v2.value, + &self.value) + }; + + use_the_stack(); + + let v1 = *r1; + let v2 = *r2; + let v3 = *r3; + println!(" v1 = {v1}"); + println!(" v2 = {v2}"); + println!(" v3 = {v3}"); + } +} + +pub fn test_members() { + let mt = MyType { value: 1 }; + mt.test(); +} + +// --- enum members --- + +struct MyValue2 { + value: i64 +} + +enum MyEnum3 { + Value(MyValue2), +} + +impl MyEnum3 { + pub fn test_match(&self) -> &i64 { + let r1 = match self { + MyEnum3::Value(v2) => &v2.value, + }; + + r1 + } +} + +pub fn test_enum_members() { + let v1 = MyValue2 { value: 1 }; + let e1 = MyEnum3::Value(v1); + + let r1 = e1.test_match(); + + use_the_stack(); + + let v3 = *r1; + println!(" v3 = {v3}"); +} + +// --- macros --- + +macro_rules! my_macro1 { + () => { + let ptr: *const i64; + { + let val: i64 = 1; + ptr = &val; + } + + unsafe { + let v = *ptr; + println!(" v = {v}"); + } + } +} + +macro_rules! my_macro2 { + () => { + { + let val: i64 = 1; + let ptr: *const i64 = &val; + ptr + } + } +} + +pub fn test_macros() { + my_macro1!(); + my_macro1!(); + + let ptr = my_macro2!(); + unsafe { + let v = *ptr; + println!(" v = {v}"); + } +} + +// --- unsafe function --- + +fn get_local_for_unsafe_function() -> *const f64 { + let my_local10: f64 = 1.23; + + return &my_local10; // $ Source[rust/access-after-lifetime-ended]=local10 +} // (return value immediately becomes dangling) + +pub unsafe fn test_unsafe_function() { + let p1 = get_local_for_unsafe_function(); + + use_the_stack(); + + let v1 = *p1; // $ Alert[rust/access-after-lifetime-ended]=local10 + println!(" v1 = {v1} (!)"); // corrupt in practice +} + +// --- examples from qhelp --- + +fn get_pointer() -> *const i64 { + let val = 123; + + return &val; // $ Source[rust/access-after-lifetime-ended]=val +} // lifetime of `val` ends here, the pointer becomes dangling + +pub fn test_lifetimes_example_bad() { + let ptr = get_pointer(); + let dereferenced_ptr; + + use_the_stack(); + + unsafe { + dereferenced_ptr = *ptr; // $ Alert[rust/access-after-lifetime-ended]=val + } + + println!(" val = {dereferenced_ptr} (!)"); // corrupt in practice +} + +fn get_box() -> Box { + let val = 123; + + return Box::new(val); +} + +pub fn test_lifetimes_example_good() { + let ptr = get_box(); + let dereferenced_ptr; + + use_the_stack(); + + dereferenced_ptr = *ptr; // GOOD + + println!(" val = {dereferenced_ptr}"); +} diff --git a/rust/ql/test/query-tests/security/CWE-825/main.rs b/rust/ql/test/query-tests/security/CWE-825/main.rs index ec135011f705..5f66313ae85e 100644 --- a/rust/ql/test/query-tests/security/CWE-825/main.rs +++ b/rust/ql/test/query-tests/security/CWE-825/main.rs @@ -154,8 +154,11 @@ fn main() { println!("test_loop:"); test_loop(); - println!("test_enum:"); - test_enum(); + println!("test_enums:"); + test_enums(); + + println!("test_recursive_enums:"); + test_recursive_enums(); println!("test_ptr_to_struct:"); test_ptr_to_struct(mode); @@ -165,4 +168,36 @@ fn main() { println!("test_rc:"); test_rc(); + + println!("test_closures:"); + test_closures(); + + println!("test_async:"); + test_async(); + + println!("test_lifetime_annotations:"); + test_lifetime_annotations(); + + println!("test_implicit_derefs:"); + test_implicit_derefs(); + + println!("test_members:"); + test_members(); + + println!("test_enum_members:"); + test_enum_members(); + + println!("test_macros:"); + test_macros(); + + println!("test_unsafe_function:"); + unsafe { + test_unsafe_function(); + } + + println!("test_lifetimes_example_bad:"); + test_lifetimes_example_bad(); + + println!("test_lifetimes_example_good:"); + test_lifetimes_example_good(); } diff --git a/rust/ql/test/query-tests/security/CWE-825/options.yml b/rust/ql/test/query-tests/security/CWE-825/options.yml index 95a17a53b431..49ed7e1c1017 100644 --- a/rust/ql/test/query-tests/security/CWE-825/options.yml +++ b/rust/ql/test/query-tests/security/CWE-825/options.yml @@ -1,3 +1,4 @@ -qltest_cargo_check: true +qltest_use_nightly: true qltest_dependencies: - libc = { version = "0.2.11" } + - futures = { version = "0.3" } diff --git a/rust/ql/test/query-tests/security/CWE-825/rust-toolchain.toml b/rust/ql/test/query-tests/security/CWE-825/rust-toolchain.toml deleted file mode 100644 index afeb59293258..000000000000 --- a/rust/ql/test/query-tests/security/CWE-825/rust-toolchain.toml +++ /dev/null @@ -1,2 +0,0 @@ -[toolchain] -channel = "nightly-2025-03-17" 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 000000000000..6f977f067dbb --- /dev/null +++ b/rust/ql/test/query-tests/unusedentities/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,6 @@ +multipleCallTargets +| main.rs:13:13:13:29 | ...::from(...) | +| main.rs:14:13:14:29 | ...::from(...) | +| unreachable.rs:165:20:165:42 | ...::from(...) | +| unreachable.rs:171:9:171:17 | ...::from(...) | +| unreachable.rs:177:17:177:25 | ...::from(...) | diff --git a/rust/ql/test/query-tests/unusedentities/Cargo.lock b/rust/ql/test/query-tests/unusedentities/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/query-tests/unusedentities/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/setup.sh b/rust/ql/test/setup.sh index f087e7bc32bf..1d7feb284eda 100755 --- a/rust/ql/test/setup.sh +++ b/rust/ql/test/setup.sh @@ -5,14 +5,11 @@ set -euo pipefail # This script is run by the CI to set up the test environment for the Rust QL tests # We run this as rustup is not meant to be run in parallel, and will this setup will be run by rust-analyzer in the # parallel QL tests unless we do the setup prior to launching the tests. -# We do this for each `rust-toolchain.toml` we use in the tests (and the root one in `rust` last, so it becomes the -# default). +# no need to install rust-src explicitly, it's listed in both toolchains cd "$(dirname "$0")" - -find . -name rust-toolchain.toml \ - -execdir rustup install \; \ - -execdir rustup component add rust-src \; - -# no to install rust-src explicitly, it's listed in ql/rust/rust-toolchain.toml +pushd ../../extractor/src/nightly-toolchain +rustup install +popd +# this needs to be last to set the default toolchain rustup install diff --git a/rust/ql/test/utils-tests/modelgenerator/CaptureSinkModels.ext.yml b/rust/ql/test/utils-tests/modelgenerator/CaptureSinkModels.ext.yml index bedfe748d19d..707f5c2e6d94 100644 --- a/rust/ql/test/utils-tests/modelgenerator/CaptureSinkModels.ext.yml +++ b/rust/ql/test/utils-tests/modelgenerator/CaptureSinkModels.ext.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/rust-all extensible: sinkModel data: - - ["repo::test", "crate::sinks::known_sink", "Argument[0]", "test-sink", "manual"] + - ["test::sinks::known_sink", "Argument[0]", "test-sink", "manual"] diff --git a/rust/ql/test/utils-tests/modelgenerator/CaptureSinkModels.ql b/rust/ql/test/utils-tests/modelgenerator/CaptureSinkModels.ql index 4b8041fb4447..5607efe98582 100644 --- a/rust/ql/test/utils-tests/modelgenerator/CaptureSinkModels.ql +++ b/rust/ql/test/utils-tests/modelgenerator/CaptureSinkModels.ql @@ -4,7 +4,9 @@ import SinkModels import utils.test.InlineMadTest module InlineMadTestConfig implements InlineMadTestConfigSig { - string getCapturedModel(Function f) { result = Heuristic::captureSink(f) } + string getCapturedModel(Function f) { + exists(QualifiedCallable qc | f = qc.getFunction() | result = Heuristic::captureSink(qc)) + } string getKind() { result = "sink" } } diff --git a/rust/ql/test/utils-tests/modelgenerator/CaptureSourceModels.ext.yml b/rust/ql/test/utils-tests/modelgenerator/CaptureSourceModels.ext.yml index fc82ebd62849..251b58c7a397 100644 --- a/rust/ql/test/utils-tests/modelgenerator/CaptureSourceModels.ext.yml +++ b/rust/ql/test/utils-tests/modelgenerator/CaptureSourceModels.ext.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/rust-all extensible: sourceModel data: - - ["repo::test", "crate::sources::known_source", "ReturnValue", "test-source", "manual"] + - ["test::sources::known_source", "ReturnValue", "test-source", "manual"] diff --git a/rust/ql/test/utils-tests/modelgenerator/CaptureSourceModels.ql b/rust/ql/test/utils-tests/modelgenerator/CaptureSourceModels.ql index c535ce787043..79ba238d1598 100644 --- a/rust/ql/test/utils-tests/modelgenerator/CaptureSourceModels.ql +++ b/rust/ql/test/utils-tests/modelgenerator/CaptureSourceModels.ql @@ -5,7 +5,9 @@ import utils.test.InlineMadTest import codeql.rust.dataflow.internal.ModelsAsData module InlineMadTestConfig implements InlineMadTestConfigSig { - string getCapturedModel(Function c) { result = Heuristic::captureSource(c) } + string getCapturedModel(Function c) { + exists(QualifiedCallable qc | c = qc.getFunction() | result = Heuristic::captureSource(qc)) + } string getKind() { result = "source" } } diff --git a/rust/ql/test/utils-tests/modelgenerator/CaptureSummaryModels.expected b/rust/ql/test/utils-tests/modelgenerator/CaptureSummaryModels.expected index b3a3717c9300..cb6fc390349c 100644 --- a/rust/ql/test/utils-tests/modelgenerator/CaptureSummaryModels.expected +++ b/rust/ql/test/utils-tests/modelgenerator/CaptureSummaryModels.expected @@ -1,4 +1,2 @@ unexpectedModel -| Unexpected summary found: repo::test;::clone;Argument[self].Field[crate::option::MyOption::MySome(0)].Reference;ReturnValue.Field[crate::option::MyOption::MySome(0)];value;dfc-generated | expectedModel -| Expected summary missing: repo::test;::clone;Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];ReturnValue.Field[crate::option::MyOption::MySome(0)];value;dfc-generated | diff --git a/rust/ql/test/utils-tests/modelgenerator/CaptureSummaryModels.ql b/rust/ql/test/utils-tests/modelgenerator/CaptureSummaryModels.ql index fe5e532394b4..213c609726d8 100644 --- a/rust/ql/test/utils-tests/modelgenerator/CaptureSummaryModels.ql +++ b/rust/ql/test/utils-tests/modelgenerator/CaptureSummaryModels.ql @@ -4,7 +4,11 @@ import SummaryModels import utils.test.InlineMadTest module InlineMadTestConfig implements InlineMadTestConfigSig { - string getCapturedModel(Function f) { result = ContentSensitive::captureFlow(f, _, _, _, _) } + string getCapturedModel(Function f) { + exists(QualifiedCallable qc | f = qc.getFunction() | + result = ContentSensitive::captureFlow(qc, _, _, _, _) + ) + } string getKind() { result = "summary" } } diff --git a/rust/ql/test/utils-tests/modelgenerator/Cargo.lock b/rust/ql/test/utils-tests/modelgenerator/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/utils-tests/modelgenerator/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/utils-tests/modelgenerator/option.rs b/rust/ql/test/utils-tests/modelgenerator/option.rs index 19b4a92fa376..13e49806f93a 100644 --- a/rust/ql/test/utils-tests/modelgenerator/option.rs +++ b/rust/ql/test/utils-tests/modelgenerator/option.rs @@ -8,9 +8,9 @@ use core::pin::Pin; use core::ptr; use core::{hint, mem}; -// summary=repo::test;crate::option::replace;Argument[0].Reference;ReturnValue;value;dfc-generated -// summary=repo::test;crate::option::replace;Argument[1];Argument[0].Reference;value;dfc-generated -// sink=repo::test;crate::option::replace;Argument[0];pointer-access;df-generated +// summary=test::option::replace;Argument[0].Reference;ReturnValue;value;dfc-generated +// summary=test::option::replace;Argument[1];Argument[0].Reference;value;dfc-generated +// sink=test::option::replace;Argument[0];pointer-access;df-generated pub fn replace(dest: &mut T, src: T) -> T { unsafe { let result = ptr::read(dest); @@ -34,8 +34,8 @@ impl MyOption { matches!(*self, MySome(_)) } - // summary=repo::test;::is_some_and;Argument[0].ReturnValue;ReturnValue;value;dfc-generated - // summary=repo::test;::is_some_and;Argument[self].Field[crate::option::MyOption::MySome(0)];Argument[0].Parameter[0];value;dfc-generated + // summary=::is_some_and;Argument[0].ReturnValue;ReturnValue;value;dfc-generated + // summary=::is_some_and;Argument[self].Field[test::option::MyOption::MySome(0)];Argument[0].Parameter[0];value;dfc-generated pub fn is_some_and(self, f: impl FnOnce(T) -> bool) -> bool { match self { MyNone => false, @@ -47,8 +47,8 @@ impl MyOption { !self.is_some() } - // summary=repo::test;::is_none_or;Argument[0].ReturnValue;ReturnValue;value;dfc-generated - // summary=repo::test;::is_none_or;Argument[self].Field[crate::option::MyOption::MySome(0)];Argument[0].Parameter[0];value;dfc-generated + // summary=::is_none_or;Argument[0].ReturnValue;ReturnValue;value;dfc-generated + // summary=::is_none_or;Argument[self].Field[test::option::MyOption::MySome(0)];Argument[0].Parameter[0];value;dfc-generated pub fn is_none_or(self, f: impl FnOnce(T) -> bool) -> bool { match self { MyNone => true, @@ -56,7 +56,7 @@ impl MyOption { } } - // summary=repo::test;::as_ref;Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];ReturnValue.Field[crate::option::MyOption::MySome(0)].Reference;value;dfc-generated + // summary=::as_ref;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Field[test::option::MyOption::MySome(0)].Reference;value;dfc-generated pub fn as_ref(&self) -> MyOption<&T> { match *self { MySome(ref x) => MySome(x), @@ -64,7 +64,7 @@ impl MyOption { } } - // summary=repo::test;::as_mut;Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];ReturnValue.Field[crate::option::MyOption::MySome(0)].Reference;value;dfc-generated + // summary=::as_mut;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Field[test::option::MyOption::MySome(0)].Reference;value;dfc-generated pub fn as_mut(&mut self) -> MyOption<&mut T> { match *self { MySome(ref mut x) => MySome(x), @@ -96,7 +96,7 @@ impl MyOption { } } - // summary=repo::test;::unwrap;Argument[self].Field[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated + // summary=::unwrap;Argument[self].Field[test::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated pub fn unwrap(self) -> T { match self { MySome(val) => val, @@ -104,8 +104,8 @@ impl MyOption { } } - // summary=repo::test;::unwrap_or;Argument[0];ReturnValue;value;dfc-generated - // summary=repo::test;::unwrap_or;Argument[self].Field[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated + // summary=::unwrap_or;Argument[0];ReturnValue;value;dfc-generated + // summary=::unwrap_or;Argument[self].Field[test::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated pub fn unwrap_or(self, default: T) -> T { match self { MySome(x) => x, @@ -113,8 +113,8 @@ impl MyOption { } } - // summary=repo::test;::unwrap_or_else;Argument[self].Field[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated - // summary=repo::test;::unwrap_or_else;Argument[0].ReturnValue;ReturnValue;value;dfc-generated + // summary=::unwrap_or_else;Argument[self].Field[test::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated + // summary=::unwrap_or_else;Argument[0].ReturnValue;ReturnValue;value;dfc-generated pub fn unwrap_or_else(self, f: F) -> T where F: FnOnce() -> T, @@ -125,7 +125,7 @@ impl MyOption { } } - // summary=repo::test;::unwrap_or_default;Argument[self].Field[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated + // summary=::unwrap_or_default;Argument[self].Field[test::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated pub fn unwrap_or_default(self) -> T where T: Default, @@ -135,7 +135,7 @@ impl MyOption { MyNone => T::default(), } } - // summary=repo::test;::unwrap_unchecked;Argument[self].Field[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated + // summary=::unwrap_unchecked;Argument[self].Field[test::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated #[track_caller] pub unsafe fn unwrap_unchecked(self) -> T { match self { @@ -147,8 +147,8 @@ impl MyOption { // Transforming contained values - // summary=repo::test;::map;Argument[0].ReturnValue;ReturnValue.Field[crate::option::MyOption::MySome(0)];value;dfc-generated - // summary=repo::test;::map;Argument[self].Field[crate::option::MyOption::MySome(0)];Argument[0].Parameter[0];value;dfc-generated + // summary=::map;Argument[0].ReturnValue;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated + // summary=::map;Argument[self].Field[test::option::MyOption::MySome(0)];Argument[0].Parameter[0];value;dfc-generated pub fn map(self, f: F) -> MyOption where F: FnOnce(T) -> U, @@ -159,7 +159,7 @@ impl MyOption { } } - // summary=repo::test;::inspect;Argument[self];ReturnValue;value;dfc-generated + // summary=::inspect;Argument[self];ReturnValue;value;dfc-generated // MISSING: Due to `ref` pattern. pub fn inspect(self, f: F) -> Self { if let MySome(ref x) = self { @@ -169,9 +169,9 @@ impl MyOption { self } - // summary=repo::test;::map_or;Argument[0];ReturnValue;value;dfc-generated - // summary=repo::test;::map_or;Argument[1].ReturnValue;ReturnValue;value;dfc-generated - // summary=repo::test;::map_or;Argument[self].Field[crate::option::MyOption::MySome(0)];Argument[1].Parameter[0];value;dfc-generated + // summary=::map_or;Argument[0];ReturnValue;value;dfc-generated + // summary=::map_or;Argument[1].ReturnValue;ReturnValue;value;dfc-generated + // summary=::map_or;Argument[self].Field[test::option::MyOption::MySome(0)];Argument[1].Parameter[0];value;dfc-generated pub fn map_or(self, default: U, f: F) -> U where F: FnOnce(T) -> U, @@ -182,9 +182,9 @@ impl MyOption { } } - // summary=repo::test;::map_or_else;Argument[0].ReturnValue;ReturnValue;value;dfc-generated - // summary=repo::test;::map_or_else;Argument[1].ReturnValue;ReturnValue;value;dfc-generated - // summary=repo::test;::map_or_else;Argument[self].Field[crate::option::MyOption::MySome(0)];Argument[1].Parameter[0];value;dfc-generated + // summary=::map_or_else;Argument[0].ReturnValue;ReturnValue;value;dfc-generated + // summary=::map_or_else;Argument[1].ReturnValue;ReturnValue;value;dfc-generated + // summary=::map_or_else;Argument[self].Field[test::option::MyOption::MySome(0)];Argument[1].Parameter[0];value;dfc-generated pub fn map_or_else(self, default: D, f: F) -> U where D: FnOnce() -> U, @@ -196,8 +196,8 @@ impl MyOption { } } - // summary=repo::test;::ok_or;Argument[self].Field[crate::option::MyOption::MySome(0)];ReturnValue.Field[crate::result::Result::Ok(0)];value;dfc-generated - // summary=repo::test;::ok_or;Argument[0];ReturnValue.Field[crate::result::Result::Err(0)];value;dfc-generated + // summary=::ok_or;Argument[self].Field[test::option::MyOption::MySome(0)];ReturnValue.Field[core::result::Result::Ok(0)];value;dfc-generated + // summary=::ok_or;Argument[0];ReturnValue.Field[core::result::Result::Err(0)];value;dfc-generated pub fn ok_or(self, err: E) -> Result { match self { MySome(v) => Ok(v), @@ -205,8 +205,8 @@ impl MyOption { } } - // summary=repo::test;::ok_or_else;Argument[self].Field[crate::option::MyOption::MySome(0)];ReturnValue.Field[crate::result::Result::Ok(0)];value;dfc-generated - // summary=repo::test;::ok_or_else;Argument[0].ReturnValue;ReturnValue.Field[crate::result::Result::Err(0)];value;dfc-generated + // summary=::ok_or_else;Argument[self].Field[test::option::MyOption::MySome(0)];ReturnValue.Field[core::result::Result::Ok(0)];value;dfc-generated + // summary=::ok_or_else;Argument[0].ReturnValue;ReturnValue.Field[core::result::Result::Err(0)];value;dfc-generated pub fn ok_or_else(self, err: F) -> Result where F: FnOnce() -> E, @@ -233,7 +233,7 @@ impl MyOption { self.as_mut().map(|t| t.deref_mut()) } - // summary=repo::test;::and;Argument[0];ReturnValue;value;dfc-generated + // summary=::and;Argument[0];ReturnValue;value;dfc-generated pub fn and(self, optb: MyOption) -> MyOption { match self { MySome(_) => optb, @@ -241,8 +241,8 @@ impl MyOption { } } - // summary=repo::test;::and_then;Argument[0].ReturnValue;ReturnValue;value;dfc-generated - // summary=repo::test;::and_then;Argument[self].Field[crate::option::MyOption::MySome(0)];Argument[0].Parameter[0];value;dfc-generated + // summary=::and_then;Argument[0].ReturnValue;ReturnValue;value;dfc-generated + // summary=::and_then;Argument[self].Field[test::option::MyOption::MySome(0)];Argument[0].Parameter[0];value;dfc-generated pub fn and_then(self, f: F) -> MyOption where F: FnOnce(T) -> MyOption, @@ -266,8 +266,8 @@ impl MyOption { MyNone } - // summary=repo::test;::or;Argument[0];ReturnValue;value;dfc-generated - // summary=repo::test;::or;Argument[self];ReturnValue;value;dfc-generated + // summary=::or;Argument[0];ReturnValue;value;dfc-generated + // summary=::or;Argument[self];ReturnValue;value;dfc-generated pub fn or(self, optb: MyOption) -> MyOption { match self { x @ MySome(_) => x, @@ -275,8 +275,8 @@ impl MyOption { } } - // summary=repo::test;::or_else;Argument[self];ReturnValue;value;dfc-generated - // summary=repo::test;::or_else;Argument[0].ReturnValue;ReturnValue;value;dfc-generated + // summary=::or_else;Argument[self];ReturnValue;value;dfc-generated + // summary=::or_else;Argument[0].ReturnValue;ReturnValue;value;dfc-generated pub fn or_else(self, f: F) -> MyOption where F: FnOnce() -> MyOption, @@ -287,8 +287,8 @@ impl MyOption { } } - // summary=repo::test;::xor;Argument[0];ReturnValue;value;dfc-generated - // summary=repo::test;::xor;Argument[self];ReturnValue;value;dfc-generated + // summary=::xor;Argument[0];ReturnValue;value;dfc-generated + // summary=::xor;Argument[self];ReturnValue;value;dfc-generated pub fn xor(self, optb: MyOption) -> MyOption { match (self, optb) { (a @ MySome(_), MyNone) => a, @@ -297,10 +297,10 @@ impl MyOption { } } - // summary=repo::test;::insert;Argument[0];Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];value;dfc-generated - // summary=repo::test;::insert;Argument[0];ReturnValue.Reference;value;dfc-generated + // summary=::insert;Argument[0];Argument[self].Reference.Field[test::option::MyOption::MySome(0)];value;dfc-generated + // summary=::insert;Argument[0];ReturnValue.Reference;value;dfc-generated // The content of `self` is overwritten so it does not flow to the return value. - // SPURIOUS-summary=repo::test;::insert;Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated + // SPURIOUS-summary=::insert;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated pub fn insert(&mut self, value: T) -> &mut T { *self = MySome(value); @@ -308,14 +308,14 @@ impl MyOption { unsafe { self.as_mut().unwrap_unchecked() } } - // summary=repo::test;::get_or_insert;Argument[0];Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];value;dfc-generated - // summary=repo::test;::get_or_insert;Argument[0];ReturnValue.Reference;value;dfc-generated - // summary=repo::test;::get_or_insert;Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated + // summary=::get_or_insert;Argument[0];Argument[self].Reference.Field[test::option::MyOption::MySome(0)];value;dfc-generated + // summary=::get_or_insert;Argument[0];ReturnValue.Reference;value;dfc-generated + // summary=::get_or_insert;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated pub fn get_or_insert(&mut self, value: T) -> &mut T { self.get_or_insert_with(|| value) } - // summary=repo::test;::get_or_insert_default;Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated + // summary=::get_or_insert_default;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated pub fn get_or_insert_default(&mut self) -> &mut T where T: Default, @@ -323,7 +323,7 @@ impl MyOption { self.get_or_insert_with(T::default) } - // summary=repo::test;::get_or_insert_with;Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated + // summary=::get_or_insert_with;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated // MISSING: Mutating `self` parameter. pub fn get_or_insert_with(&mut self, f: F) -> &mut T where @@ -338,16 +338,16 @@ impl MyOption { unsafe { self.as_mut().unwrap_unchecked() } } - // summary=repo::test;::take;Argument[self].Reference;ReturnValue;value;dfc-generated - // sink=repo::test;::take;Argument[self];pointer-access;df-generated + // summary=::take;Argument[self].Reference;ReturnValue;value;dfc-generated + // sink=::take;Argument[self];pointer-access;df-generated pub fn take(&mut self) -> MyOption { // FIXME(const-hack) replace `mem::replace` by `mem::take` when the latter is const ready replace(self, MyNone) } - // summary=repo::test;::take_if;Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];Argument[0].Parameter[0].Reference;value;dfc-generated - // summary=repo::test;::take_if;Argument[self].Reference;ReturnValue;value;dfc-generated - // sink=repo::test;::take_if;Argument[self];pointer-access;df-generated + // summary=::take_if;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];Argument[0].Parameter[0].Reference;value;dfc-generated + // summary=::take_if;Argument[self].Reference;ReturnValue;value;dfc-generated + // sink=::take_if;Argument[self];pointer-access;df-generated pub fn take_if

    (&mut self, predicate: P) -> MyOption where P: FnOnce(&mut T) -> bool, @@ -359,15 +359,15 @@ impl MyOption { } } - // summary=repo::test;::replace;Argument[0];Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];value;dfc-generated - // summary=repo::test;::replace;Argument[self].Reference;ReturnValue;value;dfc-generated - // sink=repo::test;::replace;Argument[self];pointer-access;df-generated + // summary=::replace;Argument[0];Argument[self].Reference.Field[test::option::MyOption::MySome(0)];value;dfc-generated + // summary=::replace;Argument[self].Reference;ReturnValue;value;dfc-generated + // sink=::replace;Argument[self];pointer-access;df-generated pub fn replace(&mut self, value: T) -> MyOption { replace(self, MySome(value)) } - // summary=repo::test;::zip;Argument[0].Field[crate::option::MyOption::MySome(0)];ReturnValue.Field[crate::option::MyOption::MySome(0)].Field[1];value;dfc-generated - // summary=repo::test;::zip;Argument[self].Field[crate::option::MyOption::MySome(0)];ReturnValue.Field[crate::option::MyOption::MySome(0)].Field[0];value;dfc-generated + // summary=::zip;Argument[0].Field[test::option::MyOption::MySome(0)];ReturnValue.Field[test::option::MyOption::MySome(0)].Field[1];value;dfc-generated + // summary=::zip;Argument[self].Field[test::option::MyOption::MySome(0)];ReturnValue.Field[test::option::MyOption::MySome(0)].Field[0];value;dfc-generated pub fn zip(self, other: MyOption) -> MyOption<(T, U)> { match (self, other) { (MySome(a), MySome(b)) => MySome((a, b)), @@ -375,9 +375,9 @@ impl MyOption { } } - // summary=repo::test;::zip_with;Argument[self].Field[crate::option::MyOption::MySome(0)];Argument[1].Parameter[0];value;dfc-generated - // summary=repo::test;::zip_with;Argument[0].Field[crate::option::MyOption::MySome(0)];Argument[1].Parameter[1];value;dfc-generated - // summary=repo::test;::zip_with;Argument[1].ReturnValue;ReturnValue.Field[crate::option::MyOption::MySome(0)];value;dfc-generated + // summary=::zip_with;Argument[self].Field[test::option::MyOption::MySome(0)];Argument[1].Parameter[0];value;dfc-generated + // summary=::zip_with;Argument[0].Field[test::option::MyOption::MySome(0)];Argument[1].Parameter[1];value;dfc-generated + // summary=::zip_with;Argument[1].ReturnValue;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated pub fn zip_with(self, other: MyOption, f: F) -> MyOption where F: FnOnce(T, U) -> R, @@ -390,8 +390,8 @@ impl MyOption { } impl MyOption<(T, U)> { - // summary=repo::test;::unzip;Argument[self].Field[crate::option::MyOption::MySome(0)].Field[0];ReturnValue.Field[0].Field[crate::option::MyOption::MySome(0)];value;dfc-generated - // summary=repo::test;::unzip;Argument[self].Field[crate::option::MyOption::MySome(0)].Field[1];ReturnValue.Field[1].Field[crate::option::MyOption::MySome(0)];value;dfc-generated + // summary=::unzip;Argument[self].Field[test::option::MyOption::MySome(0)].Field[0];ReturnValue.Field[0].Field[test::option::MyOption::MySome(0)];value;dfc-generated + // summary=::unzip;Argument[self].Field[test::option::MyOption::MySome(0)].Field[1];ReturnValue.Field[1].Field[test::option::MyOption::MySome(0)];value;dfc-generated pub fn unzip(self) -> (MyOption, MyOption) { match self { MySome((a, b)) => (MySome(a), MySome(b)), @@ -401,7 +401,7 @@ impl MyOption<(T, U)> { } impl MyOption<&T> { - // summary=repo::test;::copied;Argument[self].Field[crate::option::MyOption::MySome(0)].Reference;ReturnValue.Field[crate::option::MyOption::MySome(0)];value;dfc-generated + // summary=::copied;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated pub fn copied(self) -> MyOption where T: Copy, @@ -414,7 +414,7 @@ impl MyOption<&T> { } } - // summary=repo::test;::cloned;Argument[self].Field[crate::option::MyOption::MySome(0)].Reference;ReturnValue.Field[crate::option::MyOption::MySome(0)];value;dfc-generated + // MISSING: summary=::cloned;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated pub fn cloned(self) -> MyOption where T: Clone, @@ -427,7 +427,7 @@ impl MyOption<&T> { } impl MyOption<&mut T> { - // summary=repo::test;::copied;Argument[self].Field[crate::option::MyOption::MySome(0)].Reference;ReturnValue.Field[crate::option::MyOption::MySome(0)];value;dfc-generated + // summary=::copied;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated pub fn copied(self) -> MyOption where T: Copy, @@ -438,7 +438,7 @@ impl MyOption<&mut T> { } } - // summary=repo::test;::cloned;Argument[self].Field[crate::option::MyOption::MySome(0)].Reference;ReturnValue.Field[crate::option::MyOption::MySome(0)];value;dfc-generated + // MISSING: summary=::cloned;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated pub fn cloned(self) -> MyOption where T: Clone, @@ -451,8 +451,8 @@ impl MyOption<&mut T> { } impl MyOption> { - // summary=repo::test;::transpose;Argument[self].Field[crate::option::MyOption::MySome(0)].Field[crate::result::Result::Err(0)];ReturnValue.Field[crate::result::Result::Err(0)];value;dfc-generated - // summary=repo::test;::transpose;Argument[self].Field[crate::option::MyOption::MySome(0)].Field[crate::result::Result::Ok(0)];ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::option::MyOption::MySome(0)];value;dfc-generated + // summary=::transpose;Argument[self].Field[test::option::MyOption::MySome(0)].Field[core::result::Result::Err(0)];ReturnValue.Field[core::result::Result::Err(0)];value;dfc-generated + // summary=::transpose;Argument[self].Field[test::option::MyOption::MySome(0)].Field[core::result::Result::Ok(0)];ReturnValue.Field[core::result::Result::Ok(0)].Field[test::option::MyOption::MySome(0)];value;dfc-generated pub fn transpose(self) -> Result, E> { match self { MySome(Ok(x)) => Ok(MySome(x)), @@ -466,7 +466,7 @@ impl Clone for MyOption where T: Clone, { - // summary=repo::test;::clone;Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];ReturnValue.Field[crate::option::MyOption::MySome(0)];value;dfc-generated + // MISSING: summary=::clone;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated fn clone(&self) -> Self { match self { MySome(x) => MySome(x.clone()), @@ -490,21 +490,21 @@ impl Default for MyOption { } impl From for MyOption { - // summary=repo::test;::from;Argument[0];ReturnValue.Field[crate::option::MyOption::MySome(0)];value;dfc-generated + // summary=::from;Argument[0];ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated fn from(val: T) -> MyOption { MySome(val) } } impl<'a, T> From<&'a MyOption> for MyOption<&'a T> { - // summary=repo::test;::from;Argument[0].Reference.Field[crate::option::MyOption::MySome(0)];ReturnValue.Field[crate::option::MyOption::MySome(0)].Reference;value;dfc-generated + // summary=::from;Argument[0].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Field[test::option::MyOption::MySome(0)].Reference;value;dfc-generated fn from(o: &'a MyOption) -> MyOption<&'a T> { o.as_ref() } } impl<'a, T> From<&'a mut MyOption> for MyOption<&'a mut T> { - // summary=repo::test;::from;Argument[0].Reference.Field[crate::option::MyOption::MySome(0)];ReturnValue.Field[crate::option::MyOption::MySome(0)].Reference;value;dfc-generated + // summary=::from;Argument[0].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Field[test::option::MyOption::MySome(0)].Reference;value;dfc-generated fn from(o: &'a mut MyOption) -> MyOption<&'a mut T> { o.as_mut() } @@ -524,7 +524,7 @@ impl PartialEq for MyOption { } impl MyOption> { - // summary=repo::test;::flatten;Argument[self].Field[crate::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated + // summary=::flatten;Argument[self].Field[test::option::MyOption::MySome(0)];ReturnValue;value;dfc-generated pub fn flatten(self) -> MyOption { // FIXME(const-hack): could be written with `and_then` match self { diff --git a/rust/ql/test/utils-tests/modelgenerator/sinks.rs b/rust/ql/test/utils-tests/modelgenerator/sinks.rs index fff593826b3f..1a7c945961bc 100644 --- a/rust/ql/test/utils-tests/modelgenerator/sinks.rs +++ b/rust/ql/test/utils-tests/modelgenerator/sinks.rs @@ -3,7 +3,7 @@ fn known_sink(n: i64) { () } -// sink=repo::test;crate::sinks::derived_sink;Argument[1];test-sink;df-generated +// sink=test::sinks::derived_sink;Argument[1];test-sink;df-generated pub fn derived_sink(c: bool, n: i64) -> i64 { if c { known_sink(n); diff --git a/rust/ql/test/utils-tests/modelgenerator/sources.rs b/rust/ql/test/utils-tests/modelgenerator/sources.rs index a9c88843024e..7ac8f19d9c7d 100644 --- a/rust/ql/test/utils-tests/modelgenerator/sources.rs +++ b/rust/ql/test/utils-tests/modelgenerator/sources.rs @@ -3,8 +3,8 @@ fn known_source(n: i64) -> i64 { n } -// source=repo::test;crate::sources::derived_source;ReturnValue;test-source;df-generated -// summary=repo::test;crate::sources::derived_source;Argument[1];ReturnValue;value;dfc-generated +// source=test::sources::derived_source;ReturnValue;test-source;df-generated +// summary=test::sources::derived_source;Argument[1];ReturnValue;value;dfc-generated pub fn derived_source(c: bool, n: i64) -> i64 { if c { known_source(n) diff --git a/rust/ql/test/utils-tests/modelgenerator/summaries.rs b/rust/ql/test/utils-tests/modelgenerator/summaries.rs index 79eb83c1ffbb..491ecc3c81d3 100644 --- a/rust/ql/test/utils-tests/modelgenerator/summaries.rs +++ b/rust/ql/test/utils-tests/modelgenerator/summaries.rs @@ -1,4 +1,4 @@ -// summary=repo::test;crate::summaries::identity;Argument[0];ReturnValue;value;dfc-generated +// summary=test::summaries::identity;Argument[0];ReturnValue;value;dfc-generated pub fn identity(a: A) -> A { a } @@ -16,12 +16,12 @@ pub enum Either { use Either::*; impl Either { - // summary=repo::test;::new;Argument[0];ReturnValue.Field[crate::summaries::Either::Right(0)];value;dfc-generated + // summary=::new;Argument[0];ReturnValue.Field[test::summaries::Either::Right(0)];value;dfc-generated pub fn new(b: B) -> Self { Right(b) } - // summary=repo::test;::unwrap;Argument[self].Field[crate::summaries::Either::Right(0)];ReturnValue;value;dfc-generated + // summary=::unwrap;Argument[self].Field[test::summaries::Either::Right(0)];ReturnValue;value;dfc-generated pub fn unwrap(self) -> B { match self { Left(a) => panic!("Left cannot be unwrapped"), @@ -29,10 +29,10 @@ impl Either { } } - // summary=repo::test;::zip;Argument[0].Field[crate::summaries::Either::Left(0)];ReturnValue.Field[crate::summaries::Either::Left(0)];value;dfc-generated - // summary=repo::test;::zip;Argument[0].Field[crate::summaries::Either::Right(0)];ReturnValue.Field[crate::summaries::Either::Right(0)].Field[1];value;dfc-generated - // summary=repo::test;::zip;Argument[self].Field[crate::summaries::Either::Left(0)];ReturnValue.Field[crate::summaries::Either::Left(0)];value;dfc-generated - // summary=repo::test;::zip;Argument[self].Field[crate::summaries::Either::Right(0)];ReturnValue.Field[crate::summaries::Either::Right(0)].Field[0];value;dfc-generated + // summary=::zip;Argument[0].Field[test::summaries::Either::Left(0)];ReturnValue.Field[test::summaries::Either::Left(0)];value;dfc-generated + // summary=::zip;Argument[0].Field[test::summaries::Either::Right(0)];ReturnValue.Field[test::summaries::Either::Right(0)].Field[1];value;dfc-generated + // summary=::zip;Argument[self].Field[test::summaries::Either::Left(0)];ReturnValue.Field[test::summaries::Either::Left(0)];value;dfc-generated + // summary=::zip;Argument[self].Field[test::summaries::Either::Right(0)];ReturnValue.Field[test::summaries::Either::Right(0)].Field[0];value;dfc-generated pub fn zip(self, other: Either) -> Either { match (self, other) { (Right(b), Right(d)) => Right((b, d)), @@ -48,20 +48,20 @@ pub struct MyStruct { } impl MyStruct { - // summary=repo::test;::new;Argument[0];ReturnValue.Field[crate::summaries::MyStruct::foo];value;dfc-generated - // summary=repo::test;::new;Argument[1];ReturnValue.Field[crate::summaries::MyStruct::bar];value;dfc-generated + // summary=::new;Argument[0];ReturnValue.Field[test::summaries::MyStruct::foo];value;dfc-generated + // summary=::new;Argument[1];ReturnValue.Field[test::summaries::MyStruct::bar];value;dfc-generated pub fn new(a: i64, b: f64) -> MyStruct { MyStruct { foo: a, bar: b } } - // summary=repo::test;::get_foo;Argument[self].Field[crate::summaries::MyStruct::foo];ReturnValue;value;dfc-generated + // summary=::get_foo;Argument[self].Field[test::summaries::MyStruct::foo];ReturnValue;value;dfc-generated pub fn get_foo(self) -> i64 { match self { MyStruct { foo, bar: _ } => foo, } } - // summary=repo::test;::get_bar;Argument[self].Field[crate::summaries::MyStruct::bar];ReturnValue;value;dfc-generated + // summary=::get_bar;Argument[self].Field[test::summaries::MyStruct::bar];ReturnValue;value;dfc-generated pub fn get_bar(self) -> f64 { match self { MyStruct { foo: _, bar } => bar, @@ -71,8 +71,8 @@ impl MyStruct { // Higher-order functions -// summary=repo::test;crate::summaries::apply;Argument[0];Argument[1].Parameter[0];value;dfc-generated -// summary=repo::test;crate::summaries::apply;Argument[1].ReturnValue;ReturnValue;value;dfc-generated +// summary=test::summaries::apply;Argument[0];Argument[1].Parameter[0];value;dfc-generated +// summary=test::summaries::apply;Argument[1].ReturnValue;ReturnValue;value;dfc-generated pub fn apply(n: i64, f: F) -> i64 where F: FnOnce(i64) -> i64, @@ -82,12 +82,12 @@ where // Flow out of mutated arguments -// summary=repo::test;crate::summaries::set_int;Argument[1];Argument[0].Reference;value;dfc-generated +// summary=test::summaries::set_int;Argument[1];Argument[0].Reference;value;dfc-generated pub fn set_int(n: &mut i64, c: i64) { *n = c; } -// summary=repo::test;crate::summaries::read_int;Argument[0].Reference;ReturnValue;value;dfc-generated +// summary=test::summaries::read_int;Argument[0].Reference;ReturnValue;value;dfc-generated pub fn read_int(n: &mut i64) -> i64 { *n } diff --git a/rust/ql/test/utils/Cargo.lock b/rust/ql/test/utils/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/utils/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/rust-toolchain.toml b/rust/rust-toolchain.toml index 1b61371a926c..680f37655d66 100644 --- a/rust/rust-toolchain.toml +++ b/rust/rust-toolchain.toml @@ -3,6 +3,6 @@ # IMPORTANT: this can also have an impact on QL test results [toolchain] -channel = "1.85" +channel = "1.86" profile = "minimal" components = [ "clippy", "rustfmt", "rust-src" ] diff --git a/rust/schema/annotations.py b/rust/schema/annotations.py index c6ab581d7cae..8295cd5860b0 100644 --- a/rust/schema/annotations.py +++ b/rust/schema/annotations.py @@ -16,6 +16,14 @@ class LoopingExpr(LabelableExpr): loop_body: optional["BlockExpr"] | child +@annotate(Adt, replace_bases={AstNode: Item}) +class _: + """ + An ADT (Abstract Data Type) definition, such as `Struct`, `Enum`, or `Union`. + """ + derive_macro_expansions: list[MacroItems] | child | rust.detach + + @annotate(Module) @rust.doc_test_signature(None) class _: @@ -226,6 +234,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) @@ -905,7 +914,7 @@ class _: """ -@annotate(AssocItem) +@annotate(AssocItem, replace_bases={AstNode: Item}) class _: """ An associated item in a `Trait` or `Impl`. @@ -976,7 +985,7 @@ class _: """ -@annotate(Const) +@annotate(Const, replace_bases={Item: None}) class _: """ A constant item declaration. @@ -986,6 +995,10 @@ class _: const X: i32 = 42; ``` """ + has_implementation: predicate | doc("this constant has an implementation") | desc(""" + This is the same as `hasBody` for source code, but for library code (for which we always skip + the body), this will hold when the body was present in the original code. + """) | rust.detach @annotate(ConstArg) @@ -1027,7 +1040,7 @@ class _: """ -@annotate(Enum) +@annotate(Enum, replace_bases={Item: None}) # still an Item via Adt class _: """ An enum declaration. @@ -1065,7 +1078,7 @@ class _: """ -@annotate(ExternItem) +@annotate(ExternItem, replace_bases={AstNode: Item}) class _: """ An item inside an extern block. @@ -1346,7 +1359,7 @@ class _: """ -@annotate(MacroCall, cfg=True) +@annotate(MacroCall, cfg=True, replace_bases={Item: None}) class _: """ A macro invocation. @@ -1794,7 +1807,7 @@ class _: """ -@annotate(Static) +@annotate(Static, replace_bases={Item: None}) class _: """ A static item declaration. @@ -1822,7 +1835,7 @@ class _: """ -@annotate(Struct) +@annotate(Struct, replace_bases={Item: None}) # still an Item via Adt class _: """ A Struct. For example: @@ -1934,7 +1947,7 @@ class _: """ -@annotate(TypeAlias) +@annotate(TypeAlias, replace_bases={Item: None}) class _: """ A type alias. For example: @@ -2001,7 +2014,7 @@ class _: """ -@annotate(Union) +@annotate(Union, replace_bases={Item: None}) # still an Item via Adt class _: """ A union declaration. @@ -2049,7 +2062,7 @@ class _: """ -@annotate(Variant, add_bases=(Addressable,)) +@annotate(Variant, replace_bases={AstNode: Addressable}) class _: """ A variant in an enum declaration. @@ -2130,10 +2143,14 @@ class _: loop_body: drop -@annotate(Function, add_bases=[Callable]) +@annotate(Function, add_bases=[Callable], replace_bases={Item: None}) class _: param_list: drop attrs: drop + has_implementation: predicate | doc("this function has an implementation") | desc(""" + This is the same as `hasBody` for source code, but for library code (for which we always skip + the body), this will hold when the body was present in the original code. + """) | rust.detach @annotate(ClosureExpr, add_bases=[Callable]) diff --git a/rust/schema/ast.py b/rust/schema/ast.py index 17fb872bb8ec..137e56f8bace 100644 --- a/rust/schema/ast.py +++ b/rust/schema/ast.py @@ -2,6 +2,9 @@ from .prelude import * +class Adt(AstNode, ): + pass + class AsmOperand(AstNode, ): pass @@ -38,9 +41,6 @@ class TypeRepr(AstNode, ): class UseBoundGenericArg(AstNode, ): pass -class VariantDef(AstNode, ): - pass - class Item(Stmt, ): pass @@ -180,11 +180,13 @@ class ClosureExpr(Expr, ): class Const(AssocItem, Item, ): attrs: list["Attr"] | child body: optional["Expr"] | child + generic_param_list: optional["GenericParamList"] | child is_const: predicate is_default: predicate name: optional["Name"] | child type_repr: optional["TypeRepr"] | child visibility: optional["Visibility"] | child + where_clause: optional["WhereClause"] | child class ConstArg(GenericArg, ): expr: optional["Expr"] | child @@ -207,7 +209,7 @@ class ContinueExpr(Expr, ): class DynTraitTypeRepr(TypeRepr, ): type_bound_list: optional["TypeBoundList"] | child -class Enum(Item, ): +class Enum(Adt, Item, ): attrs: list["Attr"] | child generic_param_list: optional["GenericParamList"] | child name: optional["Name"] | child @@ -625,7 +627,7 @@ class StmtList(AstNode, ): statements: list["Stmt"] | child tail_expr: optional["Expr"] | child -class Struct(Item, VariantDef, ): +class Struct(Adt, Item, ): attrs: list["Attr"] | child field_list: optional["FieldList"] | child generic_param_list: optional["GenericParamList"] | child @@ -713,7 +715,7 @@ class TypeParam(GenericParam, ): class UnderscoreExpr(Expr, ): attrs: list["Attr"] | child -class Union(Item, VariantDef, ): +class Union(Adt, Item, ): attrs: list["Attr"] | child generic_param_list: optional["GenericParamList"] | child name: optional["Name"] | child @@ -738,7 +740,7 @@ class UseTree(AstNode, ): class UseTreeList(AstNode, ): use_trees: list["UseTree"] | child -class Variant(VariantDef, ): +class Variant(AstNode, ): attrs: list["Attr"] | child discriminant: optional["Expr"] | child field_list: optional["FieldList"] | child diff --git a/rust/schema/prelude.py b/rust/schema/prelude.py index 6d356567d22a..62334b2d8641 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/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index a9641b2d087d..0109a7bd5a7b 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.10 + +No user-facing changes. + ## 2.0.9 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.10.md b/shared/controlflow/change-notes/released/2.0.10.md new file mode 100644 index 000000000000..37310f107aa0 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.10.md @@ -0,0 +1,3 @@ +## 2.0.10 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index ce305265e337..96ea0220a690 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.9 +lastReleaseVersion: 2.0.10 diff --git a/shared/controlflow/codeql/controlflow/BasicBlock.qll b/shared/controlflow/codeql/controlflow/BasicBlock.qll index 9c26b18c0938..132920e329fb 100644 --- a/shared/controlflow/codeql/controlflow/BasicBlock.qll +++ b/shared/controlflow/codeql/controlflow/BasicBlock.qll @@ -5,6 +5,8 @@ * INTERNAL use only. This is an experimental API subject to change without * notice. */ +overlay[local?] +module; private import codeql.util.Location diff --git a/shared/controlflow/codeql/controlflow/Cfg.qll b/shared/controlflow/codeql/controlflow/Cfg.qll index bb49cc8d8aee..c9d7d4147347 100644 --- a/shared/controlflow/codeql/controlflow/Cfg.qll +++ b/shared/controlflow/codeql/controlflow/Cfg.qll @@ -2,6 +2,8 @@ * Provides a shared interface and implementation for constructing control-flow graphs * (CFGs) from abstract syntax trees (ASTs). */ +overlay[local?] +module; private import codeql.util.Location private import codeql.util.FileSystem diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll new file mode 100644 index 000000000000..d78d6ec8e8a1 --- /dev/null +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -0,0 +1,1116 @@ +/** + * Provides classes and predicates for determining "guard-controls" + * relationships. + * + * In their most general form, these relate a guard expression, a value, and a + * basic block, and state that execution of the basic block implies that + * control flow must have passed through the guard in order to reach the basic + * block, and when it did, the guard evaluated to the given value. + * + * For example, in `if (x == 0) { A }`, the guard `x == 0` evaluating to `true` + * controls the basic block `A`, in this case because the true branch dominates + * `A`, but more elaborate controls-relationships may also hold. + * For example, in + * ```java + * int sz = a != null ? a.length : 0; + * if (sz != 0) { + * // this block is controlled by: + * // sz != 0 evaluating to true + * // sz evaluating to not 0 + * // a.length evaluating to not 0 + * // a != null evaluating to true + * // a evaluating to not null + * } + * ``` + * + * The provided predicates are separated into general "controls" predicates and + * "directly controls" predicates. The former use all possible implication + * logic as described above, whereas the latter only use control flow dominance + * of the corresponding conditional successor edges. + * + * In some cases, a guard may have a successor edge that can be relevant for + * controlling the input to an SSA phi node, but does not dominate the + * preceding block. To support this, the `hasBranchEdge` and + * `controlsBranchEdge` predicates are provided, where the former only uses the + * control flow graph similar to the `directlyControls` predicate, and the + * latter uses the full implication logic. + * + * All of these predicates are also available in the more general form that refers + * to `GuardValue`s instead of `boolean`s. + * + * The implementation is nested in two parameterized modules intended to + * facilitate multiple instantiations of the nested module with different + * precision levels. For example, more implications are available if the result + * of Range Analysis is available, but Range Analysis depends on Guards. This + * allows an initial instantiation of the `Logic` module without Range Analysis + * that can be used as input to Range Analysis, and a second instantiation + * using the result of Range Analysis to provide a final and more complete + * controls relation. + */ +overlay[local?] +module; + +private import codeql.util.Boolean +private import codeql.util.Location + +signature module InputSig { + class SuccessorType { + /** Gets a textual representation of this successor type. */ + string toString(); + } + + class ExceptionSuccessor extends SuccessorType; + + class ConditionalSuccessor extends SuccessorType { + /** Gets the Boolean value of this successor. */ + boolean getValue(); + } + + class BooleanSuccessor extends ConditionalSuccessor; + + class NullnessSuccessor extends ConditionalSuccessor; + + /** A control flow node. */ + class ControlFlowNode { + /** Gets a textual representation of this control flow node. */ + string toString(); + + /** Gets the location of this control flow node. */ + Location getLocation(); + } + + /** + * A basic block, that is, a maximal straight-line sequence of control flow nodes + * without branches or joins. + */ + class BasicBlock { + /** Gets a textual representation of this basic block. */ + string toString(); + + /** Gets the `i`th node in this basic block. */ + ControlFlowNode getNode(int i); + + /** Gets the last control flow node in this basic block. */ + ControlFlowNode getLastNode(); + + /** Gets the length of this basic block. */ + int length(); + + /** Gets the location of this basic block. */ + Location getLocation(); + + BasicBlock getASuccessor(SuccessorType t); + + predicate dominates(BasicBlock bb); + + predicate strictlyDominates(BasicBlock bb); + } + + /** + * Holds if `bb1` has `bb2` as a direct successor and the edge between `bb1` + * and `bb2` is a dominating edge. + * + * An edge `(bb1, bb2)` is dominating if there exists a basic block that can + * only be reached from the entry block by going through `(bb1, bb2)`. This + * implies that `(bb1, bb2)` dominates its endpoint `bb2`. I.e., `bb2` can + * only be reached from the entry block by going via `(bb1, bb2)`. + * + * This is a necessary and sufficient condition for an edge to dominate some + * block, and therefore `dominatingEdge(bb1, bb2) and bb2.dominates(bb3)` + * means that the edge `(bb1, bb2)` dominates `bb3`. + */ + predicate dominatingEdge(BasicBlock bb1, BasicBlock bb2); + + class AstNode { + /** Gets a textual representation of this AST node. */ + string toString(); + + /** Gets the location of this AST node. */ + Location getLocation(); + } + + class Expr extends AstNode { + /** Gets the associated control flow node. */ + ControlFlowNode getControlFlowNode(); + + /** Gets the basic block containing this expression. */ + BasicBlock getBasicBlock(); + } + + class ConstantValue { + /** Gets a textual representation of this constant value. */ + string toString(); + } + + class ConstantExpr extends Expr { + predicate isNull(); + + boolean asBooleanValue(); + + int asIntegerValue(); + + ConstantValue asConstantValue(); + } + + class NonNullExpr extends Expr; + + class Case extends AstNode { + Expr getSwitchExpr(); + + predicate isDefaultCase(); + + ConstantExpr asConstantCase(); + + predicate matchEdge(BasicBlock bb1, BasicBlock bb2); + + predicate nonMatchEdge(BasicBlock bb1, BasicBlock bb2); + } + + class AndExpr extends Expr { + /** Gets an operand of this expression. */ + Expr getAnOperand(); + } + + class OrExpr extends Expr { + /** Gets an operand of this expression. */ + Expr getAnOperand(); + } + + class NotExpr extends Expr { + /** Gets the operand of this expression. */ + Expr getOperand(); + } + + /** + * An expression that has the same value as a specific sub-expression. + * + * For example, in Java, the assignment `x = rhs` has the same value as `rhs`. + */ + class IdExpr extends Expr { + Expr getEqualChildExpr(); + } + + /** + * Holds if `eqtest` is an equality or inequality test between `left` and + * `right`. The `polarity` indicates whether this is an equality test (true) + * or inequality test (false). + */ + predicate equalityTest(Expr eqtest, Expr left, Expr right, boolean polarity); + + class ConditionalExpr extends Expr { + /** Gets the condition of this expression. */ + Expr getCondition(); + + /** Gets the true branch of this expression. */ + Expr getThen(); + + /** Gets the false branch of this expression. */ + Expr getElse(); + } +} + +/** Provides guards-related predicates and classes. */ +module Make Input> { + private import Input + + private newtype TAbstractSingleValue = + TValueNull() or + TValueTrue() or + TValueInt(int i) { exists(ConstantExpr c | c.asIntegerValue() = i) or i = 0 } or + TValueConstant(ConstantValue c) { exists(ConstantExpr ce | ce.asConstantValue() = c) } + + private newtype TGuardValue = + TValue(TAbstractSingleValue val, Boolean isVal) or + TException(Boolean throws) + + private class AbstractSingleValue extends TAbstractSingleValue { + /** Gets a textual representation of this value. */ + string toString() { + result = "null" and this instanceof TValueNull + or + result = "true" and this instanceof TValueTrue + or + exists(int i | result = i.toString() and this = TValueInt(i)) + or + exists(ConstantValue c | result = c.toString() and this = TValueConstant(c)) + } + } + + /** An abstract value that a `Guard` may evaluate to. */ + class GuardValue extends TGuardValue { + /** + * Gets the dual value. Examples of dual values include: + * - null vs. not null + * - true vs. false + * - evaluating to a specific value vs. evaluating to any other value + * - throwing an exception vs. not throwing an exception + */ + GuardValue getDualValue() { + exists(AbstractSingleValue val, boolean isVal | + this = TValue(val, isVal) and + result = TValue(val, isVal.booleanNot()) + ) + or + exists(boolean throws | + this = TException(throws) and + result = TException(throws.booleanNot()) + ) + } + + /** Holds if this value represents `null`. */ + predicate isNullValue() { this.isNullness(true) } + + /** Holds if this value represents non-`null`. */ + predicate isNonNullValue() { this.isNullness(false) } + + /** Holds if this value represents `null` or non-`null` as indicated by `isNull`. */ + predicate isNullness(boolean isNull) { this = TValue(TValueNull(), isNull) } + + /** Gets the integer that this value represents, if any. */ + int asIntValue() { this = TValue(TValueInt(result), true) } + + /** Gets the boolean that this value represents, if any. */ + boolean asBooleanValue() { this = TValue(TValueTrue(), result) } + + /** Gets the constant that this value represents, if any. */ + ConstantValue asConstantValue() { this = TValue(TValueConstant(result), true) } + + /** Holds if this value represents throwing an exception. */ + predicate isThrowsException() { this = TException(true) } + + /** Gets a textual representation of this value. */ + string toString() { + result = this.asBooleanValue().toString() + or + exists(AbstractSingleValue val | not val instanceof TValueTrue | + this = TValue(val, true) and result = val.toString() + or + this = TValue(val, false) and result = "not " + val.toString() + ) + or + exists(boolean throws | this = TException(throws) | + throws = true and result = "exception" + or + throws = false and result = "no exception" + ) + } + } + + bindingset[a, b] + pragma[inline_late] + private predicate disjointValues(GuardValue a, GuardValue b) { + a = b.getDualValue() + or + exists(AbstractSingleValue a1, AbstractSingleValue b1 | + a = TValue(a1, true) and + b = TValue(b1, true) and + a1 != b1 + ) + } + + private predicate constantHasValue(ConstantExpr c, GuardValue v) { + c.isNull() and v.isNullValue() + or + v.asBooleanValue() = c.asBooleanValue() + or + v.asIntValue() = c.asIntegerValue() + or + v.asConstantValue() = c.asConstantValue() + } + + private predicate exceptionBranchPoint(BasicBlock bb1, BasicBlock normalSucc, BasicBlock excSucc) { + exists(SuccessorType norm, ExceptionSuccessor exc | + bb1.getASuccessor(norm) = normalSucc and + bb1.getASuccessor(exc) = excSucc and + normalSucc != excSucc and + not norm instanceof ExceptionSuccessor + ) + } + + private predicate branchEdge(BasicBlock bb1, BasicBlock bb2, GuardValue v) { + exists(ConditionalSuccessor s | + bb1.getASuccessor(s) = bb2 and + exists(AbstractSingleValue val | + s instanceof NullnessSuccessor and val = TValueNull() + or + s instanceof BooleanSuccessor and val = TValueTrue() + | + v = TValue(val, s.getValue()) + ) + ) + or + exceptionBranchPoint(bb1, bb2, _) and v = TException(false) + or + exceptionBranchPoint(bb1, _, bb2) and v = TException(true) + } + + private predicate caseBranchEdge(BasicBlock bb1, BasicBlock bb2, GuardValue v, Case c) { + v.asBooleanValue() = true and + c.matchEdge(bb1, bb2) + or + v.asBooleanValue() = false and + c.nonMatchEdge(bb1, bb2) + } + + private predicate equalityTestSymmetric(Expr eqtest, Expr e1, Expr e2, boolean eqval) { + equalityTest(eqtest, e1, e2, eqval) + or + equalityTest(eqtest, e2, e1, eqval) + } + + private predicate constcaseEquality(PreGuard g, Expr e1, ConstantExpr e2) { + exists(Case c | + g = c and + e1 = c.getSwitchExpr() and + e2 = c.asConstantCase() + ) + } + + final private class FinalAstNode = AstNode; + + /** + * A guard. This may be any expression whose value determines subsequent + * control flow. It may also be a switch case, which as a guard is considered + * to evaluate to either true or false depending on whether the case matches. + */ + final class PreGuard extends FinalAstNode { + /** + * Holds if this guard evaluating to `v` corresponds to taking the edge + * from `bb1` to `bb2`. For ordinary conditional branching this guard is + * the last node in `bb1`, but for switch case matching it is the switch + * expression, which may either be in `bb1` or an earlier basic block. + */ + predicate hasValueBranchEdge(BasicBlock bb1, BasicBlock bb2, GuardValue v) { + bb1.getLastNode() = this.(Expr).getControlFlowNode() and + branchEdge(bb1, bb2, v) + or + caseBranchEdge(bb1, bb2, v, this) + } + + /** + * Holds if this guard evaluating to `v` directly controls the basic block `bb`. + * + * That is, `bb` is dominated by the `v`-successor edge of this guard. + */ + predicate directlyValueControls(BasicBlock bb, GuardValue v) { + exists(BasicBlock guard, BasicBlock succ | + this.hasValueBranchEdge(guard, succ, v) and + dominatingEdge(guard, succ) and + succ.dominates(bb) + ) + } + + /** + * Holds if this guard is the last node in `bb1` and that its successor is + * `bb2` exactly when evaluating to `branch`. + */ + predicate hasBranchEdge(BasicBlock bb1, BasicBlock bb2, boolean branch) { + this.hasValueBranchEdge(bb1, bb2, any(GuardValue gv | gv.asBooleanValue() = branch)) + } + + /** + * Holds if this guard evaluating to `branch` directly controls the basic + * block `bb`. + * + * That is, `bb` is dominated by the `branch`-successor edge of this guard. + */ + predicate directlyControls(BasicBlock bb, boolean branch) { + this.directlyValueControls(bb, any(GuardValue gv | gv.asBooleanValue() = branch)) + } + + /** + * Holds if this guard tests equality between `e1` and `e2` upon evaluating + * to `eqval`. + */ + predicate isEquality(Expr e1, Expr e2, boolean eqval) { + equalityTestSymmetric(this, e1, e2, eqval) + or + constcaseEquality(this, e1, e2) and eqval = true + or + constcaseEquality(this, e2, e1) and eqval = true + } + + /** + * Gets the basic block of this guard. For expressions, this is the basic + * block of the expression itself, and for switch cases, this is the basic + * block of the expression being compared against the cases. + */ + BasicBlock getBasicBlock() { + result = this.(Expr).getBasicBlock() + or + result = this.(Case).getSwitchExpr().getBasicBlock() + } + } + + private Expr getBranchExpr(ConditionalExpr cond, boolean branch) { + branch = true and result = cond.getThen() + or + branch = false and result = cond.getElse() + } + + private predicate baseImpliesStep(PreGuard g1, GuardValue v1, PreGuard g2, GuardValue v2) { + g1.(AndExpr).getAnOperand() = g2 and v1.asBooleanValue() = true and v2 = v1 + or + g1.(OrExpr).getAnOperand() = g2 and v1.asBooleanValue() = false and v2 = v1 + or + g1.(NotExpr).getOperand() = g2 and v1.asBooleanValue().booleanNot() = v2.asBooleanValue() + or + exists(GuardValue eqval, ConstantExpr constant, GuardValue cv | + g1.isEquality(g2, constant, eqval.asBooleanValue()) and + constantHasValue(constant, cv) + | + v1 = eqval and v2 = cv + or + v1 = eqval.getDualValue() and v2 = cv.getDualValue() + ) + or + exists(NonNullExpr nonnull | + equalityTestSymmetric(g1, g2, nonnull, v1.asBooleanValue()) and + v2.isNonNullValue() + ) + or + exists(Case c1, Expr switchExpr | + g1 = c1 and + c1.isDefaultCase() and + c1.getSwitchExpr() = switchExpr and + v1.asBooleanValue() = true and + g2.(Case).getSwitchExpr() = switchExpr and + v2.asBooleanValue() = false and + g1 != g2 + ) + } + + signature module LogicInputSig { + class SsaDefinition { + /** Gets the basic block to which this SSA definition belongs. */ + BasicBlock getBasicBlock(); + + Expr getARead(); + + /** Gets a textual representation of this SSA definition. */ + string toString(); + + /** Gets the location of this SSA definition. */ + Location getLocation(); + } + + class SsaWriteDefinition extends SsaDefinition { + Expr getDefinition(); + } + + class SsaPhiNode extends SsaDefinition { + /** Holds if `inp` is an input to the phi node along the edge originating in `bb`. */ + predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb); + } + + /** + * Holds if `guard` evaluating to `val` ensures that: + * `e <= k` when `upper = true` + * `e >= k` when `upper = false` + */ + default predicate rangeGuard(PreGuard guard, GuardValue val, Expr e, int k, boolean upper) { + none() + } + + /** + * Holds if `guard` evaluating to `val` ensures that: + * `e == null` when `isNull = true` + * `e != null` when `isNull = false` + */ + default predicate additionalNullCheck(PreGuard guard, GuardValue val, Expr e, boolean isNull) { + none() + } + + /** + * Holds if the assumption that `g1` has been evaluated to `v1` implies that + * `g2` has been evaluated to `v2`, that is, the evaluation of `g2` to `v2` + * dominates the evaluation of `g1` to `v1`. + * + * This predicate can be instantiated with `CustomGuard<..>::additionalImpliesStep`. + */ + default predicate additionalImpliesStep(PreGuard g1, GuardValue v1, PreGuard g2, GuardValue v2) { + none() + } + } + + /** + * Provides the `Guard` class with suitable 'controls' predicates augmented + * with logical implications based on SSA. + */ + module Logic { + private import LogicInput + + /** + * Holds if `guard` evaluating to `v` directly controls `phi` taking the value + * `inp`. This means that `guard` evaluating to `v` must control all the input + * edges to `phi` that read `inp`. + * + * We also require that `guard` dominates `phi` in order to allow logical inferences + * from the value of `phi` to the value of `guard`. + * + * Trivial cases where `guard` controls `phi` itself are excluded, since that makes + * logical inferences from `phi` to `guard` trivial and irrelevant. + */ + private predicate guardControlsPhiBranch( + Guard guard, GuardValue v, SsaPhiNode phi, SsaDefinition inp + ) { + exists(BasicBlock bbPhi | + phi.hasInputFromBlock(inp, _) and + phi.getBasicBlock() = bbPhi and + guard.getBasicBlock().strictlyDominates(bbPhi) and + not guard.directlyValueControls(bbPhi, _) and + forex(BasicBlock bbInput | phi.hasInputFromBlock(inp, bbInput) | + guard.directlyValueControls(bbInput, v) or + guard.hasValueBranchEdge(bbInput, bbPhi, v) + ) + ) + } + + /** + * Holds if `phi` takes `input` exactly when `guard` is `v`. That is, + * `guard == v` directly controls `input` and `guard == v.getDualValue()` + * directly controls all other inputs to `phi`. + * + * This makes `phi` similar to the conditional `phi = guard==v ? input : ...`. + */ + private predicate guardDeterminesPhiInput(Guard guard, GuardValue v, SsaPhiNode phi, Expr input) { + exists(GuardValue dv, SsaWriteDefinition inp | + guardControlsPhiBranch(guard, v, phi, inp) and + inp.getDefinition() = input and + dv = v.getDualValue() and + forall(SsaDefinition other | phi.hasInputFromBlock(other, _) and other != inp | + guardControlsPhiBranch(guard, dv, phi, other) + ) + ) + } + + pragma[nomagic] + private predicate guardChecksEqualVars( + Guard guard, SsaDefinition v1, SsaDefinition v2, boolean branch + ) { + equalityTestSymmetric(guard, v1.getARead(), v2.getARead(), branch) + } + + private predicate guardReadsSsaVar(Guard guard, SsaDefinition def) { + def.getARead() = guard + or + // A read of `y` can be considered as a read of `x` if guarded by `x == y`. + exists(Guard eqtest, SsaDefinition other, boolean branch | + guardChecksEqualVars(eqtest, def, other, branch) and + other.getARead() = guard and + eqtest.directlyControls(guard.getBasicBlock(), branch) + ) + or + // An expression `x = ...` can be considered as a read of `x`. + guard.(IdExpr).getEqualChildExpr() = def.(SsaWriteDefinition).getDefinition() + } + + private predicate valueStep(Expr e1, Expr e2) { + e2.(ConditionalExpr).getThen() = e1 or + e2.(ConditionalExpr).getElse() = e1 or + e2.(IdExpr).getEqualChildExpr() = e1 + } + + /** + * Gets a sub-expression of `e` whose value can flow to `e` through + * `valueStep`s + */ + private Expr possibleValue(Expr e) { + result = possibleValue(any(Expr e1 | valueStep(e1, e))) + or + result = e and not valueStep(_, e) + } + + /** + * Gets an ultimate definition of `v` that is not itself a phi node. The + * boolean `fromBackEdge` indicates whether the flow from `result` to `v` goes + * through a back edge. + */ + private SsaDefinition getAnUltimateDefinition(SsaDefinition v, boolean fromBackEdge) { + result = v and not v instanceof SsaPhiNode and fromBackEdge = false + or + exists(SsaDefinition inp, BasicBlock bb, boolean fbe | + v.(SsaPhiNode).hasInputFromBlock(inp, bb) and + result = getAnUltimateDefinition(inp, fbe) and + (if v.getBasicBlock().dominates(bb) then fromBackEdge = true else fromBackEdge = fbe) + ) + } + + /** + * Holds if `v` can have a value that is not representable as a `GuardValue`. + */ + private predicate hasPossibleUnknownValue(SsaDefinition v) { + exists(SsaDefinition def | def = getAnUltimateDefinition(v, _) | + not exists(def.(SsaWriteDefinition).getDefinition()) + or + exists(Expr e | e = possibleValue(def.(SsaWriteDefinition).getDefinition()) | + not constantHasValue(e, _) + ) + ) + } + + /** + * Holds if `e` equals `k` and may be assigned to `v`. The boolean + * `fromBackEdge` indicates whether the flow from `e` to `v` goes through a + * back edge. + */ + private predicate possibleValue(SsaDefinition v, boolean fromBackEdge, Expr e, GuardValue k) { + not hasPossibleUnknownValue(v) and + exists(SsaWriteDefinition def | + def = getAnUltimateDefinition(v, fromBackEdge) and + e = possibleValue(def.getDefinition()) and + constantHasValue(e, k) + ) + } + + /** + * Holds if `e` equals `k` and may be assigned to `v` without going through + * back edges, and all other possible ultimate definitions of `v` are different + * from `k`. The trivial case where `v` is an `SsaWriteDefinition` with `e` as + * the only possible value is excluded. + */ + private predicate uniqueValue(SsaDefinition v, Expr e, GuardValue k) { + possibleValue(v, false, e, k) and + not possibleValue(v, true, e, k) and + forex(Expr other, GuardValue otherval | possibleValue(v, _, other, otherval) and other != e | + disjointValues(otherval, k) + ) + } + + /** + * Holds if `phi` has exactly two inputs, `def1` and `e2`, and that `def1` + * does not come from a back-edge into `phi`. + */ + private predicate phiWithTwoInputs(SsaPhiNode phi, SsaDefinition def1, Expr e2) { + exists(SsaWriteDefinition def2, BasicBlock bb1 | + 2 = strictcount(SsaDefinition inp, BasicBlock bb | phi.hasInputFromBlock(inp, bb)) and + phi.hasInputFromBlock(def1, bb1) and + phi.hasInputFromBlock(def2, _) and + def1 != def2 and + not phi.getBasicBlock().dominates(bb1) and + def2.getDefinition() = e2 + ) + } + + /** Holds if `e` may take the value `k` */ + private predicate relevantInt(Expr e, int k) { + e.(ConstantExpr).asIntegerValue() = k + or + relevantInt(any(Expr e1 | valueStep(e1, e)), k) + or + exists(SsaDefinition def | + guardReadsSsaVar(e, def) and + relevantInt(getAnUltimateDefinition(def, _).(SsaWriteDefinition).getDefinition(), k) + ) + } + + private predicate impliesStep1(Guard g1, GuardValue v1, Guard g2, GuardValue v2) { + baseImpliesStep(g1, v1, g2, v2) + or + exists(SsaDefinition def, Expr e | + // If `def = g2 ? v1 : ...` and all other assignments to `def` are different from + // `v1` then a guard proving `def == v1` ensures that `g2` evaluates to `v2`. + uniqueValue(def, e, v1) and + guardReadsSsaVar(g1, def) and + g2.directlyValueControls(e.getBasicBlock(), v2) and + not g2.directlyValueControls(g1.getBasicBlock(), v2) + ) + or + exists(int k1, int k2, boolean upper | + rangeGuard(g1, v1, g2, k1, upper) and + relevantInt(g2, k2) and + v2 = TValue(TValueInt(k2), false) + | + upper = true and k1 < k2 // g2 <= k1 < k2 ==> g2 != k2 + or + upper = false and k1 > k2 // g2 >= k1 > k2 ==> g2 != k2 + ) + or + exists(boolean isNull | + additionalNullCheck(g1, v1, g2, isNull) and + v2.isNullness(isNull) and + not (g2 instanceof NonNullExpr and isNull = false) // disregard trivial guard + ) + } + + /** + * Holds if `g` evaluating to `v` implies that `def` evaluates to `ssaVal`. + * The included set of implications is somewhat restricted to avoid a + * recursive dependency on `exprHasValue`. + */ + private predicate baseSsaValueCheck(SsaDefinition def, GuardValue ssaVal, Guard g, GuardValue v) { + exists(Guard g0, GuardValue v0 | + guardReadsSsaVar(g0, def) and v0 = ssaVal + or + baseSsaValueCheck(def, ssaVal, g0, v0) + | + impliesStep1(g, v, g0, v0) + ) + } + + private predicate exprHasValue(Expr e, GuardValue v) { + constantHasValue(e, v) + or + e instanceof NonNullExpr and v.isNonNullValue() + or + exprHasValue(e.(IdExpr).getEqualChildExpr(), v) + or + exists(SsaDefinition def, Guard g, GuardValue gv | + e = def.getARead() and + g.directlyValueControls(e.getBasicBlock(), gv) and + baseSsaValueCheck(def, v, g, gv) + ) + or + exists(SsaWriteDefinition def | + exprHasValue(def.getDefinition(), v) and + e = def.getARead() + ) + } + + private predicate impliesStep2(Guard g1, GuardValue v1, Guard g2, GuardValue v2) { + impliesStep1(g1, v1, g2, v2) + or + exists(Expr nonnull | + exprHasValue(nonnull, v2) and + equalityTestSymmetric(g1, g2, nonnull, v1.asBooleanValue()) and + v2.isNonNullValue() + ) + } + + bindingset[g1, v1] + pragma[inline_late] + private predicate unboundImpliesStep(Guard g1, GuardValue v1, Guard g2, GuardValue v2) { + g1.(IdExpr).getEqualChildExpr() = g2 and v1 = v2 and not v1 instanceof TException + or + exists(ConditionalExpr cond, boolean branch, Expr e, GuardValue ev | + cond = g1 and + e = getBranchExpr(cond, branch) and + exprHasValue(e, ev) and + disjointValues(v1, ev) + | + // g1 === g2 ? e : ...; + // g1 === g2 ? ... : e; + g2 = cond.getCondition() and + v2.asBooleanValue() = branch.booleanNot() + or + // g1 === ... ? g2 : e + // g1 === ... ? e : g2 + g2 = getBranchExpr(cond, branch.booleanNot()) and + v2 = v1 and + not exprHasValue(g2, v2) // disregard trivial guard + ) + } + + bindingset[def1, v1] + pragma[inline_late] + private predicate impliesStepSsaGuard(SsaDefinition def1, GuardValue v1, Guard g2, GuardValue v2) { + def1.(SsaWriteDefinition).getDefinition() = g2 and + v1 = v2 and + not exprHasValue(g2, v2) // disregard trivial guard + or + exists(Expr e, GuardValue ev | + guardDeterminesPhiInput(g2, v2.getDualValue(), def1, e) and + exprHasValue(e, ev) and + disjointValues(v1, ev) + ) + } + + bindingset[def1, v] + pragma[inline_late] + private predicate impliesStepSsa(SsaDefinition def1, GuardValue v, SsaDefinition def2) { + exists(Expr e, GuardValue ev | + phiWithTwoInputs(def1, def2, e) and + exprHasValue(e, ev) and + disjointValues(v, ev) + ) + } + + private signature predicate baseGuardValueSig(Guard guard, GuardValue v); + + /** + * Calculates the transitive closure of all the guard implication steps + * starting from a given set of base cases. + */ + cached + private module ImpliesTC { + /** + * Holds if `tgtGuard` evaluating to `tgtVal` implies that `guard` + * evaluates to `v`. + */ + pragma[nomagic] + cached + predicate guardControls(Guard guard, GuardValue v, Guard tgtGuard, GuardValue tgtVal) { + baseGuardValue(tgtGuard, tgtVal) and + guard = tgtGuard and + v = tgtVal + or + exists(Guard g0, GuardValue v0 | + guardControls(g0, v0, tgtGuard, tgtVal) and + impliesStep2(g0, v0, guard, v) + ) + or + exists(Guard g0, GuardValue v0 | + guardControls(g0, v0, tgtGuard, tgtVal) and + unboundImpliesStep(g0, v0, guard, v) + ) + or + exists(SsaDefinition def0, GuardValue v0 | + ssaControls(def0, v0, tgtGuard, tgtVal) and + impliesStepSsaGuard(def0, v0, guard, v) + ) + or + exists(Guard g0, GuardValue v0 | + guardControls(g0, v0, tgtGuard, tgtVal) and + additionalImpliesStep(g0, v0, guard, v) + ) + } + + /** + * Holds if `tgtGuard` evaluating to `tgtVal` implies that `def` + * evaluates to `v`. + */ + pragma[nomagic] + cached + predicate ssaControls(SsaDefinition def, GuardValue v, Guard tgtGuard, GuardValue tgtVal) { + exists(Guard g0 | + guardControls(g0, v, tgtGuard, tgtVal) and + guardReadsSsaVar(g0, def) + ) + or + exists(SsaDefinition def0 | + ssaControls(def0, v, tgtGuard, tgtVal) and + impliesStepSsa(def0, v, def) + ) + } + } + + private predicate booleanGuard(Guard guard, GuardValue val) { + exists(guard) and exists(val.asBooleanValue()) + } + + private module BooleanImplies = ImpliesTC; + + /** INTERNAL: Don't use. */ + predicate boolImplies(Guard g1, GuardValue v1, Guard g2, GuardValue v2) { + BooleanImplies::guardControls(g2, v2, g1, v1) and + g2 != g1 + } + + /** + * Holds if `guard` evaluating to `v` implies that `e` is guaranteed to be + * null if `isNull` is true, and non-null if `isNull` is false. + */ + predicate nullGuard(Guard guard, GuardValue v, Expr e, boolean isNull) { + impliesStep2(guard, v, e, any(GuardValue gv | gv.isNullness(isNull))) or + additionalImpliesStep(guard, v, e, any(GuardValue gv | gv.isNullness(isNull))) + } + + private predicate hasAValueBranchEdge(Guard guard, GuardValue v) { + guard.hasValueBranchEdge(_, _, v) + } + + private module BranchImplies = ImpliesTC; + + private predicate guardControlsBranchEdge( + Guard guard, BasicBlock bb1, BasicBlock bb2, GuardValue v + ) { + exists(Guard g0, GuardValue v0 | + g0.hasValueBranchEdge(bb1, bb2, v0) and + BranchImplies::guardControls(guard, v, g0, v0) + ) + } + + /** + * Holds if `def` evaluating to `v` controls the control-flow branch + * edge from `bb1` to `bb2`. That is, following the edge from `bb1` to + * `bb2` implies that `def` evaluated to `v`. + */ + predicate ssaControlsBranchEdge(SsaDefinition def, BasicBlock bb1, BasicBlock bb2, GuardValue v) { + exists(Guard g0, GuardValue v0 | + g0.hasValueBranchEdge(bb1, bb2, v0) and + BranchImplies::ssaControls(def, v, g0, v0) + ) + } + + /** + * Holds if `def` evaluating to `v` controls the basic block `bb`. + * That is, execution of `bb` implies that `def` evaluated to `v`. + */ + predicate ssaControls(SsaDefinition def, BasicBlock bb, GuardValue v) { + exists(BasicBlock guard, BasicBlock succ | + ssaControlsBranchEdge(def, guard, succ, v) and + dominatingEdge(guard, succ) and + succ.dominates(bb) + ) + } + + signature module CustomGuardInputSig { + class ParameterPosition { + /** Gets a textual representation of this element. */ + bindingset[this] + string toString(); + } + + class ArgumentPosition { + /** Gets a textual representation of this element. */ + bindingset[this] + string toString(); + } + + /** + * Holds if the parameter position `ppos` matches the argument position + * `apos`. + */ + predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos); + + /** A non-overridable method with a boolean return value. */ + class BooleanMethod { + SsaDefinition getParameter(ParameterPosition ppos); + + Expr getAReturnExpr(); + } + + class BooleanMethodCall extends Expr { + BooleanMethod getMethod(); + + Expr getArgument(ArgumentPosition apos); + } + } + + /** + * Provides an implementation of guard implication logic for custom + * wrappers. This can be used to instantiate the `additionalImpliesStep` + * predicate. + */ + module CustomGuard { + private import CustomGuardInput + + final private class FinalExpr = Expr; + + private class ReturnExpr extends FinalExpr { + ReturnExpr() { any(BooleanMethod m).getAReturnExpr() = this } + + pragma[nomagic] + BasicBlock getBasicBlock() { result = super.getBasicBlock() } + } + + private predicate booleanReturnGuard(Guard guard, GuardValue val) { + guard instanceof ReturnExpr and exists(val.asBooleanValue()) + } + + private module ReturnImplies = ImpliesTC; + + /** + * Holds if `ret` is a return expression in a non-overridable method that + * on a return value of `retval` allows the conclusion that the `ppos`th + * parameter has the value `val`. + */ + private predicate validReturnInCustomGuard( + ReturnExpr ret, ParameterPosition ppos, boolean retval, GuardValue val + ) { + exists(BooleanMethod m, SsaDefinition param | + m.getAReturnExpr() = ret and + m.getParameter(ppos) = param + | + exists(Guard g0, GuardValue v0 | + g0.directlyValueControls(ret.getBasicBlock(), v0) and + BranchImplies::ssaControls(param, val, g0, v0) and + retval = [true, false] + ) + or + ReturnImplies::ssaControls(param, val, ret, + any(GuardValue r | r.asBooleanValue() = retval)) + ) + } + + /** + * Gets a non-overridable method with a boolean return value that performs a check + * on the `ppos`th parameter. A return value equal to `retval` allows us to conclude + * that the argument has the value `val`. + */ + private BooleanMethod customGuard(ParameterPosition ppos, boolean retval, GuardValue val) { + forex(ReturnExpr ret | + result.getAReturnExpr() = ret and + not ret.(ConstantExpr).asBooleanValue() = retval.booleanNot() + | + validReturnInCustomGuard(ret, ppos, retval, val) + ) + } + + /** + * Holds if the assumption that `g1` has been evaluated to `v1` implies that + * `g2` has been evaluated to `v2`, that is, the evaluation of `g2` to `v2` + * dominates the evaluation of `g1` to `v1`. + * + * This predicate covers the implication steps that arise from calls to + * custom guard wrappers. + */ + predicate additionalImpliesStep(PreGuard g1, GuardValue v1, PreGuard g2, GuardValue v2) { + exists(BooleanMethodCall call, ParameterPosition ppos, ArgumentPosition apos | + g1 = call and + call.getMethod() = customGuard(ppos, v1.asBooleanValue(), v2) and + call.getArgument(apos) = g2 and + parameterMatch(pragma[only_bind_out](ppos), pragma[only_bind_out](apos)) + ) + } + } + + /** + * A guard. This may be any expression whose value determines subsequent + * control flow. It may also be a switch case, which as a guard is considered + * to evaluate to either true or false depending on whether the case matches. + */ + final class Guard extends PreGuard { + /** + * Holds if this guard evaluating to `v` controls the control-flow branch + * edge from `bb1` to `bb2`. That is, following the edge from `bb1` to + * `bb2` implies that this guard evaluated to `v`. + * + * Note that this goes beyond mere control-flow graph dominance, as it + * also considers additional logical reasoning. + */ + predicate valueControlsBranchEdge(BasicBlock bb1, BasicBlock bb2, GuardValue v) { + guardControlsBranchEdge(this, bb1, bb2, v) + } + + /** + * Holds if this guard evaluating to `v` controls the basic block `bb`. + * That is, execution of `bb` implies that this guard evaluated to `v`. + * + * Note that this goes beyond mere control-flow graph dominance, as it + * also considers additional logical reasoning. + */ + predicate valueControls(BasicBlock bb, GuardValue v) { + exists(BasicBlock guard, BasicBlock succ | + this.valueControlsBranchEdge(guard, succ, v) and + dominatingEdge(guard, succ) and + succ.dominates(bb) + ) + } + + /** + * Holds if this guard evaluating to `branch` controls the control-flow + * branch edge from `bb1` to `bb2`. That is, following the edge from + * `bb1` to `bb2` implies that this guard evaluated to `branch`. + * + * Note that this goes beyond mere control-flow graph dominance, as it + * also considers additional logical reasoning. + */ + predicate controlsBranchEdge(BasicBlock bb1, BasicBlock bb2, boolean branch) { + this.valueControlsBranchEdge(bb1, bb2, any(GuardValue gv | gv.asBooleanValue() = branch)) + } + + /** + * Holds if this guard evaluating to `branch` controls the basic block + * `bb`. That is, execution of `bb` implies that this guard evaluated to + * `branch`. + * + * Note that this goes beyond mere control-flow graph dominance, as it + * also considers additional logical reasoning. + */ + predicate controls(BasicBlock bb, boolean branch) { + this.valueControls(bb, any(GuardValue gv | gv.asBooleanValue() = branch)) + } + } + } +} diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 08958db7e3e9..a1020700a1a3 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.9 +version: 2.0.11-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index 10cb758f6ea9..128d8ccd0d42 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.10 + +No user-facing changes. + ## 2.0.9 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.10.md b/shared/dataflow/change-notes/released/2.0.10.md new file mode 100644 index 000000000000..37310f107aa0 --- /dev/null +++ b/shared/dataflow/change-notes/released/2.0.10.md @@ -0,0 +1,3 @@ +## 2.0.10 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index ce305265e337..96ea0220a690 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.9 +lastReleaseVersion: 2.0.10 diff --git a/shared/dataflow/codeql/dataflow/DataFlow.qll b/shared/dataflow/codeql/dataflow/DataFlow.qll index 93327f5ad6a3..3483287e3b39 100644 --- a/shared/dataflow/codeql/dataflow/DataFlow.qll +++ b/shared/dataflow/codeql/dataflow/DataFlow.qll @@ -3,6 +3,8 @@ * adds a global analysis, mainly exposed through the `Global` and `GlobalWithState` * modules. */ +overlay[local?] +module; private import codeql.util.Location diff --git a/shared/dataflow/codeql/dataflow/TaintTracking.qll b/shared/dataflow/codeql/dataflow/TaintTracking.qll index 24aea44320e0..bd4b4ecd6ca5 100644 --- a/shared/dataflow/codeql/dataflow/TaintTracking.qll +++ b/shared/dataflow/codeql/dataflow/TaintTracking.qll @@ -2,6 +2,8 @@ * Provides modules for performing local (intra-procedural) and * global (inter-procedural) taint-tracking analyses. */ +overlay[local?] +module; private import DataFlow as DF private import internal.DataFlowImpl diff --git a/shared/dataflow/codeql/dataflow/VariableCapture.qll b/shared/dataflow/codeql/dataflow/VariableCapture.qll index c2c84b7f0f87..4df415f90ad9 100644 --- a/shared/dataflow/codeql/dataflow/VariableCapture.qll +++ b/shared/dataflow/codeql/dataflow/VariableCapture.qll @@ -2,6 +2,8 @@ * Provides a module for synthesizing data-flow nodes and related step relations * for supporting flow through captured variables. */ +overlay[local?] +module; private import codeql.util.Boolean private import codeql.util.Unit diff --git a/shared/dataflow/codeql/dataflow/internal/AccessPathSyntax.qll b/shared/dataflow/codeql/dataflow/internal/AccessPathSyntax.qll index 17b979e42a66..78b6db4090a5 100644 --- a/shared/dataflow/codeql/dataflow/internal/AccessPathSyntax.qll +++ b/shared/dataflow/codeql/dataflow/internal/AccessPathSyntax.qll @@ -5,6 +5,8 @@ * This file is used by the shared data flow library and by the JavaScript libraries * (which does not use the shared data flow libraries). */ +overlay[local?] +module; /** * Convenience-predicate for extracting two capture groups at once. diff --git a/shared/dataflow/codeql/dataflow/internal/ContentDataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/ContentDataFlowImpl.qll index 1eaa84505419..baf473efff16 100644 --- a/shared/dataflow/codeql/dataflow/internal/ContentDataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/ContentDataFlowImpl.qll @@ -22,6 +22,8 @@ * steps, followed by 0 or more stores, with value-preserving steps allowed in * between all other steps. */ +overlay[local?] +module; private import codeql.dataflow.DataFlow private import codeql.util.Boolean diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index a13c71f554cc..a7e0736432ac 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -3,6 +3,8 @@ * * Provides an implementation of global (interprocedural) data flow. */ +overlay[local?] +module; private import codeql.util.Unit private import codeql.util.Option @@ -792,6 +794,7 @@ module MakeImpl Lang> { innercc = getCallContextCall(call, inner) } + overlay[caller?] pragma[inline] predicate fwdFlowIn( Call call, ArgNd arg, Callable inner, ParamNd p, Cc outercc, CcCall innercc, @@ -2321,6 +2324,7 @@ module MakeImpl Lang> { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ + overlay[caller?] pragma[inline] deprecated final predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn @@ -2524,6 +2528,7 @@ module MakeImpl Lang> { class ApHeadContent = Unit; + overlay[caller?] pragma[inline] ApHeadContent getHeadContent(Ap ap) { exists(result) and ap = true } diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll index 845da27aae7a..288814c4c511 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import codeql.dataflow.DataFlow private import codeql.typetracking.TypeTracking as Tt private import codeql.util.Location @@ -288,6 +291,7 @@ module MakeImplCommon Lang> { * to `lambdaCall`, if any. That is, `lastCall` is able to target the enclosing * callable of `lambdaCall`. */ + overlay[global] pragma[nomagic] predicate revLambdaFlow( Call lambdaCall, LambdaCallKind kind, Node node, Type t, boolean toReturn, boolean toJump, @@ -674,6 +678,7 @@ module MakeImplCommon Lang> { class CcCall = CallContextCall; + overlay[caller?] pragma[inline] predicate matchesCall(CcCall cc, Call call) { cc = Input2::getSpecificCallContextCall(call, _) or @@ -885,6 +890,7 @@ module MakeImplCommon Lang> { pragma[nomagic] private Callable getEnclosingCallable0() { nodeEnclosingCallable(this.projectToNode(), result) } + overlay[caller?] pragma[inline] Callable getEnclosingCallable() { pragma[only_bind_out](this).getEnclosingCallable0() = pragma[only_bind_into](result) @@ -899,6 +905,7 @@ module MakeImplCommon Lang> { isTopType(result) and this.isImplicitReadNode(_) } + overlay[caller?] pragma[inline] Type getType() { pragma[only_bind_out](this).getType0() = pragma[only_bind_into](result) } @@ -2410,12 +2417,14 @@ module MakeImplCommon Lang> { * predicate ensures that joins go from `n` to the result instead of the other * way around. */ + overlay[caller?] pragma[inline] Callable getNodeEnclosingCallable(Node n) { nodeEnclosingCallable(pragma[only_bind_out](n), pragma[only_bind_into](result)) } /** Gets the type of `n` used for type pruning. */ + overlay[caller?] pragma[inline] Type getNodeDataFlowType(Node n) { nodeType(pragma[only_bind_out](n), pragma[only_bind_into](result)) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImplConsistency.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImplConsistency.qll index 7721a5df0445..83abd41f5e6e 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImplConsistency.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImplConsistency.qll @@ -2,6 +2,8 @@ * Provides consistency queries for checking invariants in the language-specific * data-flow classes and predicates. */ +overlay[local?] +module; private import codeql.dataflow.DataFlow as DF private import codeql.dataflow.TaintTracking as TT diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImplStage1.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImplStage1.qll index f9eaea566cd8..c7883df0de18 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImplStage1.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImplStage1.qll @@ -4,6 +4,8 @@ * Provides an implementation of a fast initial pruning of global * (interprocedural) data flow reachability (Stage 1). */ +overlay[local?] +module; private import codeql.util.Unit private import codeql.util.Location @@ -1784,6 +1786,7 @@ module MakeImplStage1 Lang> { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ + overlay[caller?] pragma[inline] deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index 244cc5731976..3eda6709517c 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for defining flow summaries. */ +overlay[local?] +module; private import codeql.dataflow.DataFlow as DF private import codeql.util.Location @@ -686,6 +688,11 @@ module Make< derivedFluentFlowPush(_, _, _, head, tail, _) } + pragma[nomagic] + private string getUniqueMadRepresentation(SummaryComponent c) { + result = strictconcat(string s | s = c.getMadRepresentation() | s, "/") + } + /** * A (non-empty) stack of summary components. * @@ -732,7 +739,7 @@ module Make< exists(SummaryComponent head, SummaryComponentStack tail | head = this.head() and tail = this.tail() and - result = tail.getMadRepresentation() + "." + head.getMadRepresentation() + result = tail.getMadRepresentation() + "." + getUniqueMadRepresentation(head) ) or exists(SummaryComponent c | diff --git a/shared/dataflow/codeql/dataflow/test/ProvenancePathGraph.qll b/shared/dataflow/codeql/dataflow/test/ProvenancePathGraph.qll index 2171c9096434..4a5e92fd5897 100644 --- a/shared/dataflow/codeql/dataflow/test/ProvenancePathGraph.qll +++ b/shared/dataflow/codeql/dataflow/test/ProvenancePathGraph.qll @@ -5,6 +5,8 @@ * In addition to the `PathGraph`, a `query predicate models` is provided to * list the contents of the referenced MaD rows. */ +overlay[local?] +module; private import codeql.dataflow.DataFlow as DF diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 6629d0eb19bd..2064efe3b6b5 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.9 +version: 2.0.11-dev groups: shared library: true dependencies: diff --git a/shared/dataflowstack/codeql/dataflowstack/DataFlowStack.qll b/shared/dataflowstack/codeql/dataflowstack/DataFlowStack.qll index 945fa7c05be7..21926e06be7a 100644 --- a/shared/dataflowstack/codeql/dataflowstack/DataFlowStack.qll +++ b/shared/dataflowstack/codeql/dataflowstack/DataFlowStack.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import codeql.dataflow.DataFlow as DF private import codeql.util.Location diff --git a/shared/dataflowstack/codeql/dataflowstack/TaintTrackingStack.qll b/shared/dataflowstack/codeql/dataflowstack/TaintTrackingStack.qll index 8b3b152e33c5..202619d75bc9 100644 --- a/shared/dataflowstack/codeql/dataflowstack/TaintTrackingStack.qll +++ b/shared/dataflowstack/codeql/dataflowstack/TaintTrackingStack.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import codeql.dataflow.DataFlow as DF private import codeql.dataflow.TaintTracking as TT private import codeql.util.Location diff --git a/shared/global-controlflow/codeql/globalcontrolflow/ControlFlow.qll b/shared/global-controlflow/codeql/globalcontrolflow/ControlFlow.qll index 0acbda3142a6..a39aa4f4d008 100644 --- a/shared/global-controlflow/codeql/globalcontrolflow/ControlFlow.qll +++ b/shared/global-controlflow/codeql/globalcontrolflow/ControlFlow.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import codeql.util.Location /** Provides language-specific control flow parameters. */ diff --git a/shared/global-controlflow/codeql/globalcontrolflow/internal/ControlFlowImpl.qll b/shared/global-controlflow/codeql/globalcontrolflow/internal/ControlFlowImpl.qll index ee21eb892ae9..b48da19c66c4 100644 --- a/shared/global-controlflow/codeql/globalcontrolflow/internal/ControlFlowImpl.qll +++ b/shared/global-controlflow/codeql/globalcontrolflow/internal/ControlFlowImpl.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import codeql.util.Unit private import codeql.util.Location private import codeql.globalcontrolflow.ControlFlow diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index ac6be6596f73..01f4051da30d 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.26 + +No user-facing changes. + ## 1.0.25 No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.26.md b/shared/mad/change-notes/released/1.0.26.md new file mode 100644 index 000000000000..4920e2b24354 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.26.md @@ -0,0 +1,3 @@ +## 1.0.26 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index a5a44030e851..125d169e44f8 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.25 +lastReleaseVersion: 1.0.26 diff --git a/shared/mad/codeql/mad/ModelValidation.qll b/shared/mad/codeql/mad/ModelValidation.qll index 4c1d6793d652..98b2a212c316 100644 --- a/shared/mad/codeql/mad/ModelValidation.qll +++ b/shared/mad/codeql/mad/ModelValidation.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates related to validating models-as-data rows. */ +overlay[local?] +module; /** Provides predicates for determining if a model exists for a given `kind`. */ signature module KindValidationConfigSig { diff --git a/shared/mad/codeql/mad/dynamic/GraphExport.qll b/shared/mad/codeql/mad/dynamic/GraphExport.qll index e28c82f47ab3..b666a96fb67a 100644 --- a/shared/mad/codeql/mad/dynamic/GraphExport.qll +++ b/shared/mad/codeql/mad/dynamic/GraphExport.qll @@ -1,6 +1,8 @@ /** * Contains predicates for converting an arbitrary graph to a set of `typeModel` rows. */ +overlay[local?] +module; private import codeql.util.Location diff --git a/shared/mad/codeql/mad/modelgenerator/internal/ModelGeneratorImpl.qll b/shared/mad/codeql/mad/modelgenerator/internal/ModelGeneratorImpl.qll index 829bf267c226..51dafc2cc96a 100644 --- a/shared/mad/codeql/mad/modelgenerator/internal/ModelGeneratorImpl.qll +++ b/shared/mad/codeql/mad/modelgenerator/internal/ModelGeneratorImpl.qll @@ -4,6 +4,8 @@ * Provides classes and predicates related to capturing summary, source, * and sink models of the Standard or a 3rd party library. */ +overlay[local?] +module; private import codeql.dataflow.DataFlow private import codeql.dataflow.TaintTracking as Tt diff --git a/shared/mad/codeql/mad/modelgenerator/internal/ModelPrinting.qll b/shared/mad/codeql/mad/modelgenerator/internal/ModelPrinting.qll index d4fbd9062b63..a5f9145714bf 100644 --- a/shared/mad/codeql/mad/modelgenerator/internal/ModelPrinting.qll +++ b/shared/mad/codeql/mad/modelgenerator/internal/ModelPrinting.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + signature module ModelPrintingLangSig { /** * A class of callables. diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 508a599359ff..6a57f272569e 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.25 +version: 1.0.27-dev groups: shared library: true dependencies: diff --git a/shared/quantum/CHANGELOG.md b/shared/quantum/CHANGELOG.md index d7831747b120..4ffbff1e0c4e 100644 --- a/shared/quantum/CHANGELOG.md +++ b/shared/quantum/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.4 + +No user-facing changes. + ## 0.0.3 No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.4.md b/shared/quantum/change-notes/released/0.0.4.md new file mode 100644 index 000000000000..eefe286a4d88 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.4.md @@ -0,0 +1,3 @@ +## 0.0.4 + +No user-facing changes. diff --git a/shared/quantum/codeql-pack.release.yml b/shared/quantum/codeql-pack.release.yml index a24b693d1e7a..ec411a674bcd 100644 --- a/shared/quantum/codeql-pack.release.yml +++ b/shared/quantum/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.3 +lastReleaseVersion: 0.0.4 diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index e7bbe65d3115..d8b1402b5e88 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -1,6 +1,8 @@ /** * A language-independent library for reasoning about cryptography. */ +overlay[local?] +module; import codeql.util.Location @@ -29,6 +31,8 @@ signature module InputSig { } module CryptographyBase Input> { + import Standardization::Types + final class LocatableElement = Input::LocatableElement; final class UnknownLocation = Input::UnknownLocation; @@ -293,6 +297,8 @@ module CryptographyBase Input> { ( exists(KeyCreationOperationInstance op | input = op.getKeySizeConsumer()) or + exists(KeyGenerationOperationInstance op | input = op.getKeyValueConsumer()) + or exists(KeyDerivationOperationInstance op | input = op.getIterationCountConsumer() or input = op.getOutputKeySizeConsumer() @@ -355,7 +361,7 @@ module CryptographyBase Input> { * * An artifact's properties (such as being a nonce) are not necessarily inherent; they are determined by the context in which the artifact is consumed. * The consumer node is therefore essential in defining these properties for inputs. * * This approach reduces ambiguity by avoiding separate notions of "artifact source" and "consumer", as the node itself encapsulates both roles. - * * Instances of nodes do not necessarily have to come from a consumer, allowing additional modelling of an artifact to occur outside of the consumer. + * * Instances of nodes do not necessarily have to come from a consumer, allowing additional modeling of an artifact to occur outside of the consumer. */ abstract class ArtifactConsumer extends ConsumerElement { /** @@ -403,7 +409,7 @@ module CryptographyBase Input> { or exists(KeyDerivationOperationInstance op | inputNode = op.getInputConsumer()) or - exists(MACOperationInstance op | inputNode = op.getMessageConsumer()) + exists(MacOperationInstance op | inputNode = op.getMessageConsumer()) or exists(HashOperationInstance op | inputNode = op.getInputConsumer()) ) and @@ -537,7 +543,9 @@ module CryptographyBase Input> { ( exists(KeyOperationInstance op | inputNode = op.getKeyConsumer()) or - exists(MACOperationInstance op | inputNode = op.getKeyConsumer()) + exists(KeyGenerationOperationInstance op | inputNode = op.getKeyValueConsumer()) + or + exists(MacOperationInstance op | inputNode = op.getKeyConsumer()) or exists(KeyAgreementSecretGenerationOperationInstance op | inputNode = op.getServerKeyConsumer() or @@ -552,195 +560,6 @@ module CryptographyBase Input> { final override ConsumerInputDataFlowNode getInputNode() { result = inputNode } } - /** - * The `KeyOpAlg` module defines key operation algorithms types (e.g., symmetric ciphers, signatures, etc.) - * and provides mapping of those types to string names and structural properties. - */ - module KeyOpAlg { - /** - * An algorithm used in key operations. - */ - newtype TAlgorithm = - TSymmetricCipher(TSymmetricCipherType t) or - TAsymmetricCipher(TAsymmetricCipherType t) or - TSignature(TSignatureAlgorithmType t) or - TKeyEncapsulation(TKEMAlgorithmType t) or - TUnknownKeyOperationAlgorithmType() - - // Parameterized algorithm types - newtype TSymmetricCipherType = - AES() or - ARIA() or - BLOWFISH() or - CAMELLIA() or - CAST5() or - CHACHA20() or - DES() or - DESX() or - GOST() or - IDEA() or - KUZNYECHIK() or - MAGMA() or - TripleDES() or - DoubleDES() or - RC2() or - RC4() or - RC5() or - SEED() or - SM4() or - OtherSymmetricCipherType() - - newtype TAsymmetricCipherType = - RSA() or - OtherAsymmetricCipherType() - - newtype TSignatureAlgorithmType = - DSA() or - ECDSA() or - Ed25519() or - Ed448() or - OtherSignatureAlgorithmType() - - newtype TKEMAlgorithmType = - Kyber() or - FrodoKEM() or - OtherKEMAlgorithmType() - - newtype TCipherStructureType = - Block() or - Stream() or - UnknownCipherStructureType() - - class CipherStructureType extends TCipherStructureType { - string toString() { - result = "Block" and this = Block() - or - result = "Stream" and this = Stream() - or - result = "Unknown" and this = UnknownCipherStructureType() - } - } - - predicate fixedImplicitCipherKeySize(TAlgorithm type, int size) { - type = TSymmetricCipher(DES()) and size = 56 - or - type = TSymmetricCipher(DESX()) and size = 184 - or - type = TSymmetricCipher(DoubleDES()) and size = 112 - or - type = TSymmetricCipher(TripleDES()) and size = 168 - or - type = TSymmetricCipher(CHACHA20()) and size = 256 - or - type = TSymmetricCipher(IDEA()) and size = 128 - or - type = TSymmetricCipher(KUZNYECHIK()) and size = 256 - or - type = TSymmetricCipher(MAGMA()) and size = 256 - or - type = TSymmetricCipher(SM4()) and size = 128 - or - type = TSymmetricCipher(SEED()) and size = 128 - } - - predicate symmetric_cipher_to_name_and_structure( - TSymmetricCipherType type, string name, CipherStructureType s - ) { - type = AES() and name = "AES" and s = Block() - or - type = ARIA() and name = "ARIA" and s = Block() - or - type = BLOWFISH() and name = "Blowfish" and s = Block() - or - type = CAMELLIA() and name = "Camellia" and s = Block() - or - type = CAST5() and name = "CAST5" and s = Block() - or - type = CHACHA20() and name = "ChaCha20" and s = Stream() - or - type = DES() and name = "DES" and s = Block() - or - type = DESX() and name = "DESX" and s = Block() - or - type = GOST() and name = "GOST" and s = Block() - or - type = IDEA() and name = "IDEA" and s = Block() - or - type = KUZNYECHIK() and name = "Kuznyechik" and s = Block() - or - type = MAGMA() and name = "Magma" and s = Block() - or - type = TripleDES() and name = "TripleDES" and s = Block() - or - type = DoubleDES() and name = "DoubleDES" and s = Block() - or - type = RC2() and name = "RC2" and s = Block() - or - type = RC4() and name = "RC4" and s = Stream() - or - type = RC5() and name = "RC5" and s = Block() - or - type = SEED() and name = "SEED" and s = Block() - or - type = SM4() and name = "SM4" and s = Block() - or - type = OtherSymmetricCipherType() and - name = "UnknownSymmetricCipher" and - s = UnknownCipherStructureType() - } - - predicate type_to_name(Algorithm type, string name) { - // Symmetric cipher algorithm - symmetric_cipher_to_name_and_structure(type.(SymmetricCipherAlgorithm).getType(), name, _) - or - // Asymmetric cipher algorithms - type = TAsymmetricCipher(RSA()) and name = "RSA" - or - type = TAsymmetricCipher(OtherAsymmetricCipherType()) and name = "UnknownAsymmetricCipher" - or - // Signature algorithms - type = TSignature(DSA()) and name = "DSA" - or - type = TSignature(ECDSA()) and name = "ECDSA" - or - type = TSignature(Ed25519()) and name = "Ed25519" - or - type = TSignature(Ed448()) and name = "Ed448" - or - type = TSignature(OtherSignatureAlgorithmType()) and name = "UnknownSignature" - or - // Key Encapsulation Mechanisms - type = TKeyEncapsulation(Kyber()) and name = "Kyber" - or - type = TKeyEncapsulation(FrodoKEM()) and name = "FrodoKEM" - or - type = TKeyEncapsulation(OtherKEMAlgorithmType()) and name = "UnknownKEM" - or - // Unknown - type = TUnknownKeyOperationAlgorithmType() and name = "Unknown" - } - - class Algorithm extends TAlgorithm { - string toString() { type_to_name(this, result) } - } - - class SymmetricCipherAlgorithm extends Algorithm, TSymmetricCipher { - TSymmetricCipherType type; - - SymmetricCipherAlgorithm() { this = TSymmetricCipher(type) } - - TSymmetricCipherType getType() { result = type } - } - - class AsymmetricCipherAlgorithm extends Algorithm, TAsymmetricCipher { - TAsymmetricCipherType type; - - AsymmetricCipherAlgorithm() { this = TAsymmetricCipher(type) } - - TAsymmetricCipherType getType() { result = type } - } - } - /** * A key-based cryptographic operation instance, encompassing: * 1. **Ciphers**: Encryption and decryption, both symmetric and asymmetric @@ -804,6 +623,14 @@ module CryptographyBase Input> { * verification operation. */ abstract ConsumerInputDataFlowNode getSignatureConsumer(); + + /** + * Gets the consumer of a hash algorithm. + * This is intended for signature operations they are explicitly configured + * with a hash algorithm. If a signature is not configured with an explicit + * hash algorithm, users do not need to provide a consumer (set none()). + */ + abstract AlgorithmValueConsumer getHashAlgorithmValueConsumer(); } /** @@ -831,7 +658,7 @@ module CryptographyBase Input> { * * This predicate should always hold. */ - abstract KeyOpAlg::Algorithm getAlgorithmType(); + abstract KeyOpAlg::AlgorithmType getAlgorithmType(); /** * Gets the mode of operation, such as "CBC", "GCM", or "ECB". @@ -883,19 +710,6 @@ module CryptographyBase Input> { predicate shouldHavePaddingScheme() { any() } } - newtype TBlockCipherModeOfOperationType = - ECB() or // Not secure, widely used - CBC() or // Vulnerable to padding oracle attacks - CFB() or - GCM() or // Widely used AEAD mode (TLS 1.3, SSH, IPsec) - CTR() or // Fast stream-like encryption (SSH, disk encryption) - XTS() or // Standard for full-disk encryption (BitLocker, LUKS, FileVault) - CCM() or // Used in lightweight cryptography (IoT, WPA2) - SIV() or // Misuse-resistant encryption, used in secure storage - OCB() or // Efficient AEAD mode - OFB() or - OtherMode() - abstract class ModeOfOperationAlgorithmInstance extends AlgorithmInstance { /** * Gets the type of this mode of operation, e.g., "ECB" or "CBC". @@ -904,7 +718,7 @@ module CryptographyBase Input> { * * If a type cannot be determined, the result is `OtherMode`. */ - abstract TBlockCipherModeOfOperationType getModeType(); + abstract KeyOpAlg::ModeOfOperationType getModeType(); /** * Gets the isolated name as it appears in source, e.g., "CBC" in "AES/CBC/PKCS7Padding". @@ -929,43 +743,38 @@ module CryptographyBase Input> { * * If a type cannot be determined, the result is `OtherPadding`. */ - abstract TPaddingType getPaddingType(); + abstract KeyOpAlg::PaddingSchemeType getPaddingType(); } - abstract class OAEPPaddingAlgorithmInstance extends PaddingAlgorithmInstance { - OAEPPaddingAlgorithmInstance() { this.getPaddingType() instanceof OAEP } + abstract class OaepPaddingAlgorithmInstance extends PaddingAlgorithmInstance { + OaepPaddingAlgorithmInstance() { this.getPaddingType() instanceof KeyOpAlg::OAEP } /** * Gets the hash algorithm used in this padding scheme. */ - abstract HashAlgorithmInstance getOAEPEncodingHashAlgorithm(); + abstract HashAlgorithmInstance getOaepEncodingHashAlgorithm(); /** * Gets the hash algorithm used by MGF1 (assumption: MGF1 is the only MGF used by OAEP) */ - abstract HashAlgorithmInstance getMGF1HashAlgorithm(); + abstract HashAlgorithmInstance getMgf1HashAlgorithm(); } - newtype TMACType = - THMAC() or - TCMAC() or - TOtherMACType() - - abstract class MACAlgorithmInstance extends AlgorithmInstance { + abstract class MacAlgorithmInstance extends AlgorithmInstance { /** * Gets the type of this MAC algorithm, e.g., "HMAC" or "CMAC". */ - abstract TMACType getMACType(); + abstract MacType getMacType(); /** * Gets the isolated name as it appears in source, e.g., "HMAC-SHA256" in "HMAC-SHA256/UnrelatedInformation". * * This name should not be parsed or formatted beyond isolating the raw MAC name if necessary. */ - abstract string getRawMACAlgorithmName(); + abstract string getRawMacAlgorithmName(); } - abstract class MACOperationInstance extends OperationInstance { + abstract class MacOperationInstance extends OperationInstance { /** * Gets the message input used in this operation. */ @@ -977,8 +786,8 @@ module CryptographyBase Input> { abstract ConsumerInputDataFlowNode getKeyConsumer(); } - abstract class HMACAlgorithmInstance extends MACAlgorithmInstance { - HMACAlgorithmInstance() { this.getMACType() instanceof THMAC } + abstract class HmacAlgorithmInstance extends MacAlgorithmInstance { + HmacAlgorithmInstance() { this.getMacType() = HMAC() } /** * Gets the hash algorithm used by this HMAC algorithm. @@ -994,7 +803,7 @@ module CryptographyBase Input> { */ abstract string getRawEllipticCurveName(); - abstract TEllipticCurveType getEllipticCurveType(); + abstract TEllipticCurveFamilyType getEllipticCurveFamilyType(); abstract int getKeySize(); @@ -1054,7 +863,13 @@ module CryptographyBase Input> { digestLength = 512 // TODO: verify } - abstract private class KeyCreationOperationInstance extends OperationInstance { + /** + * An operation that generates, derives, or loads a cryptographic key. + * + * Library modeling should not extend this class directly but rather extend + * `KeyGenerationOperationInstance`, `KeyDerivationOperationInstance`, or `KeyLoadOperationInstance`. + */ + abstract class KeyCreationOperationInstance extends OperationInstance { abstract string getKeyCreationTypeDescription(); /** @@ -1078,6 +893,9 @@ module CryptographyBase Input> { } } + /** + * An operation that derives a key from an input password or other data. + */ abstract class KeyDerivationOperationInstance extends KeyCreationOperationInstance { final override KeyArtifactType getOutputKeyType() { result instanceof TSymmetricKeyType } @@ -1111,16 +929,16 @@ module CryptographyBase Input> { /** * Gets the type of this key derivation algorithm, e.g., "PBKDF2" or "HKDF". */ - abstract TKeyDerivationType getKDFType(); + abstract TKeyDerivationType getKdfType(); /** * Gets the isolated name as it appears in source, e.g., "PBKDF2WithHmacSHA256" in "PBKDF2WithHmacSHA256/UnrelatedInformation". */ - abstract string getRawKDFAlgorithmName(); + abstract string getRawKdfAlgorithmName(); } - abstract class PBKDF2AlgorithmInstance extends KeyDerivationAlgorithmInstance { - PBKDF2AlgorithmInstance() { this.getKDFType() instanceof PBKDF2 } + abstract class Pbkdf2AlgorithmInstance extends KeyDerivationAlgorithmInstance { + Pbkdf2AlgorithmInstance() { this.getKdfType() instanceof PBKDF2 } /** * Gets the HMAC algorithm used by this PBKDF2 algorithm. @@ -1128,11 +946,11 @@ module CryptographyBase Input> { * Note: Other PRFs are not supported, as most cryptographic libraries * only support HMAC for PBKDF2's PRF input. */ - abstract AlgorithmValueConsumer getHMACAlgorithmValueConsumer(); + abstract AlgorithmValueConsumer getHmacAlgorithmValueConsumer(); } abstract class ScryptAlgorithmInstance extends KeyDerivationAlgorithmInstance { - ScryptAlgorithmInstance() { this.getKDFType() instanceof SCRYPT } + ScryptAlgorithmInstance() { this.getKdfType() instanceof SCRYPT } /** * Gets the HMAC algorithm used by this PBKDF2 algorithm. @@ -1140,35 +958,39 @@ module CryptographyBase Input> { * Note: Other PRFs are not supported, as most cryptographic libraries * only support HMAC for PBKDF2's PRF input. */ - abstract AlgorithmValueConsumer getHMACAlgorithmValueConsumer(); + abstract AlgorithmValueConsumer getHmacAlgorithmValueConsumer(); } abstract class KeyGenerationOperationInstance extends KeyCreationOperationInstance { final override string getKeyCreationTypeDescription() { result = "KeyGeneration" } + + /** + * Gets the consumer of a key for this key generaiton operation. + * This occurs when a key generation operaiton is based on a raw key value + * or it generates another key or key context from a previously generated key. + */ + abstract ConsumerInputDataFlowNode getKeyValueConsumer(); + + /** + * Holds if the key generation operation has a key consumer + * i.e., an input that is explicitly used for the key value. + * This value should correspond to the value returned by `getKeyValueConsumer()`. + */ + abstract predicate hasKeyValueConsumer(); } abstract class KeyLoadOperationInstance extends KeyCreationOperationInstance { final override string getKeyCreationTypeDescription() { result = "KeyLoad" } } - // Key agreement algorithms - newtype TKeyAgreementType = - DH() or // Diffie-Hellman - EDH() or // Ephemeral Diffie-Hellman - ECDH() or // Elliptic Curve Diffie-Hellman - // NOTE: for now ESDH is considered simply EDH - //ESDH() or // Ephemeral-Static Diffie-Hellman - // Note: x25519 and x448 are applications of ECDH - OtherKeyAgreementType() - abstract class KeyAgreementAlgorithmInstance extends AlgorithmInstance { abstract TKeyAgreementType getKeyAgreementType(); abstract string getRawKeyAgreementAlgorithmName(); } - abstract class ECDHKeyAgreementAlgorithmInstance extends KeyAgreementAlgorithmInstance { - ECDHKeyAgreementAlgorithmInstance() { this.getKeyAgreementType() instanceof ECDH } + abstract class EcdhKeyAgreementAlgorithmInstance extends KeyAgreementAlgorithmInstance { + EcdhKeyAgreementAlgorithmInstance() { this.getKeyAgreementType() instanceof ECDH } /** * Gets the consumer for the elliptic curve used in the key agreement operation. @@ -1207,7 +1029,7 @@ module CryptographyBase Input> { * This concept is used to model consumers that have no known source as an algorithm node. * * The `isCandidateAVCSig` predicate is used to restrict the set of consumers that expect inputs of `AlgorithmInstanceType`. - * These "total unknown" algorithm nodes would otherwise not exist if not modelled as a consumer node. + * These "total unknown" algorithm nodes would otherwise not exist if not modeled as a consumer node. */ module AlgorithmInstanceOrValueConsumer< AlgorithmInstanceType Alg, isCandidateAVCSig/1 isCandidateAVC> @@ -1228,58 +1050,58 @@ module CryptographyBase Input> { Alg asAlg() { result = this } - AlgorithmValueConsumer asAVC() { result = this and not this instanceof Alg } + AlgorithmValueConsumer asAvc() { result = this and not this instanceof Alg } } } - private predicate isHashAVC(AlgorithmValueConsumer avc) { + private predicate isHashAvc(AlgorithmValueConsumer avc) { exists(HashOperationInstance op | op.getAnAlgorithmValueConsumer() = avc) or - exists(HMACAlgorithmInstance alg | avc = alg.getAConsumer()) + exists(HmacAlgorithmInstance alg | avc = alg.getAConsumer()) } - private predicate isKeyOperationAlgorithmAVC(AlgorithmValueConsumer avc) { + private predicate isKeyOperationAlgorithmAvc(AlgorithmValueConsumer avc) { exists(KeyOperationInstance op | op.getAnAlgorithmValueConsumer() = avc) } - private predicate isMACAVC(AlgorithmValueConsumer avc) { - exists(MACOperationInstance op | op.getAnAlgorithmValueConsumer() = avc) or - exists(PBKDF2AlgorithmInstance alg | avc = alg.getHMACAlgorithmValueConsumer()) + private predicate isMacAvc(AlgorithmValueConsumer avc) { + exists(MacOperationInstance op | op.getAnAlgorithmValueConsumer() = avc) or + exists(Pbkdf2AlgorithmInstance alg | avc = alg.getHmacAlgorithmValueConsumer()) } - private predicate isKeyDerivationAVC(AlgorithmValueConsumer avc) { + private predicate isKeyDerivationAvc(AlgorithmValueConsumer avc) { exists(KeyDerivationOperationInstance op | op.getAnAlgorithmValueConsumer() = avc) } - private predicate isEllipticCurveAVC(AlgorithmValueConsumer avc) { - exists(ECDHKeyAgreementAlgorithmInstance alg | + private predicate isEllipticCurveAvc(AlgorithmValueConsumer avc) { + exists(EcdhKeyAgreementAlgorithmInstance alg | avc = alg.getEllipticCurveAlgorithmValueConsumer() ) or exists(KeyGenerationOperationInstance op | op.getAnAlgorithmValueConsumer() = avc) } - private predicate isKeyAgreementAVC(AlgorithmValueConsumer avc) { + private predicate isKeyAgreementAvc(AlgorithmValueConsumer avc) { exists(KeyAgreementSecretGenerationOperationInstance op | op.getAnAlgorithmValueConsumer() = avc ) } final private class KeyOperationAlgorithmInstanceOrValueConsumer = - AlgorithmInstanceOrValueConsumer::Union; + AlgorithmInstanceOrValueConsumer::Union; final private class HashAlgorithmInstanceOrValueConsumer = - AlgorithmInstanceOrValueConsumer::Union; + AlgorithmInstanceOrValueConsumer::Union; - final private class MACAlgorithmInstanceOrValueConsumer = - AlgorithmInstanceOrValueConsumer::Union; + final private class MacAlgorithmInstanceOrValueConsumer = + AlgorithmInstanceOrValueConsumer::Union; final private class KeyDerivationAlgorithmInstanceOrValueConsumer = - AlgorithmInstanceOrValueConsumer::Union; + AlgorithmInstanceOrValueConsumer::Union; final private class EllipticCurveInstanceOrValueConsumer = - AlgorithmInstanceOrValueConsumer::Union; + AlgorithmInstanceOrValueConsumer::Union; final private class KeyAgreementAlgorithmInstanceOrValueConsumer = - AlgorithmInstanceOrValueConsumer::Union; + AlgorithmInstanceOrValueConsumer::Union; private newtype TNode = // Output artifacts (data that is not an operation or algorithm, e.g., a key) @@ -1306,17 +1128,17 @@ module CryptographyBase Input> { TPaddingAlgorithm(PaddingAlgorithmInstance e) or // All other operations THashOperation(HashOperationInstance e) or - TMACOperation(MACOperationInstance e) or + TMacOperation(MacOperationInstance e) or TKeyAgreementOperation(KeyAgreementSecretGenerationOperationInstance e) or // All other algorithms TEllipticCurve(EllipticCurveInstanceOrValueConsumer e) or THashAlgorithm(HashAlgorithmInstanceOrValueConsumer e) or TKeyDerivationAlgorithm(KeyDerivationAlgorithmInstanceOrValueConsumer e) or - TMACAlgorithm(MACAlgorithmInstanceOrValueConsumer e) or + TMacAlgorithm(MacAlgorithmInstanceOrValueConsumer e) or TKeyAgreementAlgorithm(KeyAgreementAlgorithmInstanceOrValueConsumer e) or // Generic source nodes, i.e., sources of data that are not resolvable to a specific known asset. TGenericSourceNode(GenericSourceInstance e) { - // An element modelled as a `GenericSourceInstance` can also be modelled as a `KnownElement` + // An element modeled as a `GenericSourceInstance` can also be modeled as a `KnownElement` // For example, a string literal "AES" could be a generic constant but also an algorithm instance. // // Therefore, only create generic nodes tied to instances which are not also a `KnownElement`... @@ -1657,14 +1479,19 @@ module CryptographyBase Input> { result = this.getAKnownAlgorithm() or result = instance - .(KeyCreationOperationInstance) + .(KeyArtifactOutputInstance) + .getCreator() .getAnAlgorithmValueConsumer() .getAGenericSourceNode() } KeyCreationCandidateAlgorithmNode getAKnownAlgorithm() { result = - instance.(KeyCreationOperationInstance).getAnAlgorithmValueConsumer().getAKnownSourceNode() + instance + .(KeyArtifactOutputInstance) + .getCreator() + .getAnAlgorithmValueConsumer() + .getAKnownSourceNode() } override NodeBase getChild(string edgeName) { @@ -1730,6 +1557,12 @@ module CryptographyBase Input> { override string getInternalType() { result = instance.getKeyCreationTypeDescription() } + NodeBase getAKeySizeSource() { + result = instance.getKeySizeConsumer().getConsumer().getAGenericSourceNode() + or + result = instance.getKeySizeConsumer().getConsumer().getAKnownSourceNode() + } + /** * Gets the key artifact produced by this operation. */ @@ -1749,17 +1582,17 @@ module CryptographyBase Input> { /** * A MAC operation that produces a MAC value. */ - final class MACOperationNode extends OperationNode, TMACOperation { - MACOperationInstance instance; + final class MacOperationNode extends OperationNode, TMacOperation { + MacOperationInstance instance; - MACOperationNode() { this = TMACOperation(instance) } + MacOperationNode() { this = TMacOperation(instance) } final override string getInternalType() { result = "MACOperation" } override LocatableElement asElement() { result = instance } override predicate isCandidateAlgorithmNode(AlgorithmNode node) { - node instanceof MACAlgorithmNode + node instanceof MacAlgorithmNode } MessageArtifactNode getAMessage() { @@ -1784,33 +1617,28 @@ module CryptographyBase Input> { /** * A MAC algorithm, such as HMAC or CMAC. */ - class MACAlgorithmNode extends AlgorithmNode, TMACAlgorithm { - MACAlgorithmInstanceOrValueConsumer instance; + class MacAlgorithmNode extends AlgorithmNode, TMacAlgorithm { + MacAlgorithmInstanceOrValueConsumer instance; - MACAlgorithmNode() { this = TMACAlgorithm(instance) } + MacAlgorithmNode() { this = TMacAlgorithm(instance) } final override string getInternalType() { result = "MACAlgorithm" } override LocatableElement asElement() { result = instance } final override string getRawAlgorithmName() { - result = instance.asAlg().getRawMACAlgorithmName() + result = instance.asAlg().getRawMacAlgorithmName() } - TMACType getMACType() { result = instance.asAlg().getMACType() } - - final private predicate macToNameMapping(TMACType type, string name) { - type instanceof THMAC and - name = "HMAC" - } + MacType getMacType() { result = instance.asAlg().getMacType() } - override string getAlgorithmName() { this.macToNameMapping(this.getMACType(), result) } + override string getAlgorithmName() { result = this.getMacType().toString() } } - final class HMACAlgorithmNode extends MACAlgorithmNode { - HMACAlgorithmInstance hmacInstance; + final class HmacAlgorithmNode extends MacAlgorithmNode { + HmacAlgorithmInstance hmacInstance; - HMACAlgorithmNode() { hmacInstance = instance.asAlg() } + HmacAlgorithmNode() { hmacInstance = instance.asAlg() } NodeBase getHashAlgorithmOrUnknown() { result.asElement() = hmacInstance.getHashAlgorithmValueConsumer().getASource() @@ -1894,12 +1722,21 @@ module CryptographyBase Input> { node instanceof KeyCreationCandidateAlgorithmNode } + KeyArtifactNode getKeyArtifact() { + result.asElement() = keyGenInstance.getKeyValueConsumer().getConsumer() + } + override NodeBase getChild(string key) { result = super.getChild(key) or // [ALWAYS_KNOWN] key = "Output" and result = this.getOutputKeyArtifact() + or + // [KnOWN_OR_UNKNOWN] only if a raw key is a known input + key = "KeyInput" and + keyGenInstance.hasKeyValueConsumer() and + result = this.getKeyArtifact() } } @@ -1973,22 +1810,22 @@ module CryptographyBase Input> { override LocatableElement asElement() { result = instance } final override string getRawAlgorithmName() { - result = instance.asAlg().getRawKDFAlgorithmName() + result = instance.asAlg().getRawKdfAlgorithmName() } override string getAlgorithmName() { result = this.getRawAlgorithmName() } // TODO: standardize? } /** - * PBKDF2 key derivation function + * A PBKDF2 (key derivation function) algorithm node. */ - class PBKDF2AlgorithmNode extends KeyDerivationAlgorithmNode { - PBKDF2AlgorithmInstance pbkdf2Instance; + class Pbkdf2AlgorithmNode extends KeyDerivationAlgorithmNode { + Pbkdf2AlgorithmInstance pbkdf2Instance; - PBKDF2AlgorithmNode() { pbkdf2Instance = instance.asAlg() } + Pbkdf2AlgorithmNode() { pbkdf2Instance = instance.asAlg() } - HMACAlgorithmNode getHMACAlgorithm() { - result.asElement() = pbkdf2Instance.getHMACAlgorithmValueConsumer().getASource() + HmacAlgorithmNode getHmacAlgorithm() { + result.asElement() = pbkdf2Instance.getHmacAlgorithmValueConsumer().getASource() } override NodeBase getChild(string key) { @@ -1996,12 +1833,12 @@ module CryptographyBase Input> { or // [KNOWN_OR_UNKNOWN] key = "PRF" and - if exists(this.getHMACAlgorithm()) then result = this.getHMACAlgorithm() else result = this + if exists(this.getHmacAlgorithm()) then result = this.getHmacAlgorithm() else result = this } } /** - * scrypt key derivation function + * An SCRYPT key derivation algorithm node. */ class ScryptAlgorithmNode extends KeyDerivationAlgorithmNode { ScryptAlgorithmInstance scryptInstance; @@ -2130,6 +1967,14 @@ module CryptographyBase Input> { key = "Key" and if exists(this.getAKey()) then result = this.getAKey() else result = this } + + override predicate properties(string key, string value, Location location) { + super.properties(key, value, location) + or + key = "KeyOperationSubtype" and + value = this.getKeyOperationSubtype().toString() and + location = this.getLocation() + } } class CipherOperationNode extends KeyOperationNode { @@ -2172,20 +2017,30 @@ module CryptographyBase Input> { result.asElement() = instance.getSignatureConsumer().getConsumer() } + HashAlgorithmNode getHashAlgorithm() { + result = instance.getHashAlgorithmValueConsumer().getAKnownSourceNode() + } + override NodeBase getChild(string key) { result = super.getChild(key) or // [KNOWN_OR_UNKNOWN] - only if we know the type is verify this.getKeyOperationSubtype() = TVerifyMode() and key = "Signature" and - if exists(this.getASignatureArtifact()) - then result = this.getASignatureArtifact() - else result = this + ( + if exists(this.getASignatureArtifact()) + then result = this.getASignatureArtifact() + else result = this + ) + or + // [KNOWN_OR_UNKNOWN] + key = "HashAlgorithm" and + (if exists(this.getHashAlgorithm()) then result = this.getHashAlgorithm() else result = this) } } /** - * Block cipher modes of operation algorithms + * A block cipher mode of operation algorithm node. */ class ModeOfOperationAlgorithmNode extends AlgorithmNode, TModeOfOperationAlgorithm { ModeOfOperationAlgorithmInstance instance; @@ -2205,42 +2060,11 @@ module CryptographyBase Input> { * * If a type cannot be determined, the result is `OtherMode`. */ - TBlockCipherModeOfOperationType getModeType() { result = instance.getModeType() } - - final private predicate modeToNameMapping(TBlockCipherModeOfOperationType type, string name) { - type = ECB() and name = "ECB" - or - type = CBC() and name = "CBC" - or - type = GCM() and name = "GCM" - or - type = CTR() and name = "CTR" - or - type = XTS() and name = "XTS" - or - type = CCM() and name = "CCM" - or - type = SIV() and name = "SIV" - or - type = OCB() and name = "OCB" - or - type = CFB() and name = "CFB" - or - type = OFB() and name = "OFB" - } + KeyOpAlg::ModeOfOperationType getModeType() { result = instance.getModeType() } - override string getAlgorithmName() { this.modeToNameMapping(this.getModeType(), result) } + override string getAlgorithmName() { result = this.getModeType().toString() } } - newtype TPaddingType = - PKCS1_v1_5() or // RSA encryption/signing padding - PSS() or - PKCS7() or // Standard block cipher padding (PKCS5 for 8-byte blocks) - ANSI_X9_23() or // Zero-padding except last byte = padding length - NoPadding() or // Explicit no-padding - OAEP() or // RSA OAEP padding - OtherPadding() - class PaddingAlgorithmNode extends AlgorithmNode, TPaddingAlgorithm { PaddingAlgorithmInstance instance; @@ -2250,38 +2074,24 @@ module CryptographyBase Input> { override LocatableElement asElement() { result = instance } - TPaddingType getPaddingType() { result = instance.getPaddingType() } + KeyOpAlg::PaddingSchemeType getPaddingType() { result = instance.getPaddingType() } - final private predicate paddingToNameMapping(TPaddingType type, string name) { - type = ANSI_X9_23() and name = "ANSI_X9_23" - or - type = NoPadding() and name = "NoPadding" - or - type = OAEP() and name = "OAEP" - or - type = PKCS1_v1_5() and name = "PKCS1_v1_5" - or - type = PKCS7() and name = "PKCS7" - or - type = PSS() and name = "PSS" - } - - override string getAlgorithmName() { this.paddingToNameMapping(this.getPaddingType(), result) } + override string getAlgorithmName() { result = this.getPaddingType().toString() } override string getRawAlgorithmName() { result = instance.getRawPaddingAlgorithmName() } } class OAEPPaddingAlgorithmNode extends PaddingAlgorithmNode { - override OAEPPaddingAlgorithmInstance instance; + override OaepPaddingAlgorithmInstance instance; OAEPPaddingAlgorithmNode() { this = TPaddingAlgorithm(instance) } HashAlgorithmNode getOAEPEncodingHashAlgorithm() { - result.asElement() = instance.getOAEPEncodingHashAlgorithm() + result.asElement() = instance.getOaepEncodingHashAlgorithm() } HashAlgorithmNode getMGF1HashAlgorithm() { - result.asElement() = instance.getMGF1HashAlgorithm() + result.asElement() = instance.getMgf1HashAlgorithm() } override NodeBase getChild(string edgeName) { @@ -2311,14 +2121,10 @@ module CryptographyBase Input> { override string getInternalType() { result = "KeyOperationAlgorithm" } final KeyOpAlg::CipherStructureType getSymmetricCipherStructure() { - KeyOpAlg::symmetric_cipher_to_name_and_structure(this.getAlgorithmType() - .(KeyOpAlg::SymmetricCipherAlgorithm) - .getType(), _, result) + result = this.getAlgorithmType().(KeyOpAlg::SymmetricCipherAlgorithmType).getStructureType() } - final override string getAlgorithmName() { - KeyOpAlg::type_to_name(this.getAlgorithmType(), result) - } + final override string getAlgorithmName() { result = this.getAlgorithmType().toString() } final override string getRawAlgorithmName() { result = instance.asAlg().getRawAlgorithmName() } @@ -2328,7 +2134,7 @@ module CryptographyBase Input> { int getKeySizeFixed() { result = instance.asAlg().getKeySizeFixed() or - KeyOpAlg::fixedImplicitCipherKeySize(instance.asAlg().getAlgorithmType(), result) + result = instance.asAlg().getAlgorithmType().getImplicitKeySize() } /** @@ -2341,7 +2147,7 @@ module CryptographyBase Input> { /** * Gets the type of this key operation algorithm, e.g., "SymmetricEncryption(_)" or "" */ - KeyOpAlg::Algorithm getAlgorithmType() { result = instance.asAlg().getAlgorithmType() } + KeyOpAlg::AlgorithmType getAlgorithmType() { result = instance.asAlg().getAlgorithmType() } predicate isAsymmetric() { this.getAlgorithmType() instanceof KeyOpAlg::TAsymmetricCipher @@ -2447,24 +2253,6 @@ module CryptographyBase Input> { } } - newtype THashType = - BLAKE2B() or - BLAKE2S() or - GOSTHash() or - MD2() or - MD4() or - MD5() or - MDC2() or - POLY1305() or - SHA1() or - SHA2() or - SHA3() or - SHAKE() or - SM3() or - RIPEMD160() or - WHIRLPOOL() or - OtherHashType() - /** * A hashing algorithm that transforms variable-length input into a fixed-size hash value. */ @@ -2479,42 +2267,14 @@ module CryptographyBase Input> { override string getRawAlgorithmName() { result = instance.asAlg().getRawHashAlgorithmName() } - final private predicate hashTypeToNameMapping(THashType type, string name) { - type = BLAKE2B() and name = "BLAKE2B" - or - type = BLAKE2S() and name = "BLAKE2S" - or - type = RIPEMD160() and name = "RIPEMD160" - or - type = MD2() and name = "MD2" - or - type = MD4() and name = "MD4" - or - type = MD5() and name = "MD5" - or - type = POLY1305() and name = "POLY1305" - or - type = SHA1() and name = "SHA1" - or - type = SHA2() and name = "SHA2" - or - type = SHA3() and name = "SHA3" - or - type = SHAKE() and name = "SHAKE" - or - type = SM3() and name = "SM3" - or - type = WHIRLPOOL() and name = "WHIRLPOOL" - } - /** * Gets the type of this hashing algorithm, e.g., MD5 or SHA. * * When modeling a new hashing algorithm, use this predicate to specify the type of the algorithm. */ - THashType getHashFamily() { result = instance.asAlg().getHashFamily() } + HashType getHashFamily() { result = instance.asAlg().getHashFamily() } - override string getAlgorithmName() { this.hashTypeToNameMapping(this.getHashFamily(), result) } + override string getAlgorithmName() { result = this.getHashFamily().toString() } int getDigestLength() { result = instance.asAlg().getFixedDigestLength() or @@ -2534,116 +2294,6 @@ module CryptographyBase Input> { } } - /** - * Elliptic curve algorithms - */ - newtype TEllipticCurveType = - NIST() or - SEC() or - NUMS() or - PRIME() or - BRAINPOOL() or - CURVE25519() or - CURVE448() or - C2() or - SM2() or - ES() or - OtherEllipticCurveType() - - private predicate isBrainpoolCurve(string curveName, int keySize) { - // ALL BRAINPOOL CURVES - keySize in [160, 192, 224, 256, 320, 384, 512] and - ( - curveName = "BRAINPOOLP" + keySize + "R1" - or - curveName = "BRAINPOOLP" + keySize + "T1" - ) - } - - private predicate isSecCurve(string curveName, int keySize) { - // ALL SEC CURVES - keySize in [112, 113, 128, 131, 160, 163, 192, 193, 224, 233, 239, 256, 283, 384, 409, 521, 571] and - exists(string suff | suff in ["R1", "R2", "K1"] | - curveName = "SECT" + keySize + suff or - curveName = "SECP" + keySize + suff - ) - } - - private predicate isC2Curve(string curveName, int keySize) { - // ALL C2 CURVES - keySize in [163, 176, 191, 208, 239, 272, 304, 359, 368, 431] and - exists(string pre, string suff | - pre in ["PNB", "ONB", "TNB"] and suff in ["V1", "V2", "V3", "V4", "V5", "W1", "R1"] - | - curveName = "C2" + pre + keySize + suff - ) - } - - private predicate isPrimeCurve(string curveName, int keySize) { - // ALL PRIME CURVES - keySize in [192, 239, 256] and - exists(string suff | suff in ["V1", "V2", "V3"] | curveName = "PRIME" + keySize + suff) - } - - private predicate isNumsCurve(string curveName, int keySize) { - // ALL NUMS CURVES - keySize in [256, 384, 512] and - exists(string suff | suff = "T1" | curveName = "NUMSP" + keySize + suff) - } - - /** - * Holds if `name` corresponds to a known elliptic curve. - * - * Note: As an exception, this predicate may be used for library modelling, as curve names are largely standardized. - * - * When modelling, verify that this predicate offers sufficient coverage for the library and handle edge-cases. - */ - bindingset[curveName] - predicate isEllipticCurveAlgorithmName(string curveName) { - ellipticCurveNameToKeySizeAndFamilyMapping(curveName, _, _) - } - - /** - * Relates elliptic curve names to their key size and family. - * - * Note: As an exception, this predicate may be used for library modelling, as curve names are largely standardized. - * - * When modelling, verify that this predicate offers sufficient coverage for the library and handle edge-cases. - */ - bindingset[rawName] - predicate ellipticCurveNameToKeySizeAndFamilyMapping( - string rawName, int keySize, TEllipticCurveType curveFamily - ) { - exists(string curveName | curveName = rawName.toUpperCase() | - isSecCurve(curveName, keySize) and curveFamily = SEC() - or - isBrainpoolCurve(curveName, keySize) and curveFamily = BRAINPOOL() - or - isC2Curve(curveName, keySize) and curveFamily = C2() - or - isPrimeCurve(curveName, keySize) and curveFamily = PRIME() - or - isNumsCurve(curveName, keySize) and curveFamily = NUMS() - or - curveName = "ES256" and keySize = 256 and curveFamily = ES() - or - curveName = "CURVE25519" and keySize = 255 and curveFamily = CURVE25519() - or - curveName = "CURVE448" and keySize = 448 and curveFamily = CURVE448() - or - // TODO: separate these into key agreement logic or sign/verify (ECDSA / ECDH) - // or - // curveName = "X25519" and keySize = 255 and curveFamily = CURVE25519() - // or - // curveName = "ED25519" and keySize = 255 and curveFamily = CURVE25519() - // or - // curveName = "ED448" and keySize = 448 and curveFamily = CURVE448() - // or - // curveName = "X448" and keySize = 448 and curveFamily = CURVE448() - curveName = "SM2" and keySize in [256, 512] and curveFamily = SM2() - ) - } - final class EllipticCurveNode extends AlgorithmNode, TEllipticCurve { EllipticCurveInstanceOrValueConsumer instance; @@ -2669,7 +2319,9 @@ module CryptographyBase Input> { override string getAlgorithmName() { result = this.getRawAlgorithmName() } - TEllipticCurveType getEllipticCurveType() { result = instance.asAlg().getEllipticCurveType() } + EllipticCurveFamilyType getEllipticCurveFamilyType() { + result = instance.asAlg().getEllipticCurveFamilyType() + } override predicate properties(string key, string value, Location location) { super.properties(key, value, location) diff --git a/shared/quantum/codeql/quantum/experimental/Standardization.qll b/shared/quantum/codeql/quantum/experimental/Standardization.qll new file mode 100644 index 000000000000..29c5b58d343a --- /dev/null +++ b/shared/quantum/codeql/quantum/experimental/Standardization.qll @@ -0,0 +1,480 @@ +overlay[local?] +module; + +/** + * The `KeyOpAlg` module defines key operation algorithms types (e.g., symmetric ciphers, signatures, etc.) + * and provides mapping of those types to string names and structural properties. + */ +module Types { + module KeyOpAlg { + /** + * An algorithm used in key operations. + */ + newtype TAlgorithm = + TSymmetricCipher(TSymmetricCipherType t) or + TAsymmetricCipher(TAsymmetricCipherType t) or + TSignature(TSignatureAlgorithmType t) or + TKeyEncapsulation(TKemAlgorithmType t) or + TUnknownKeyOperationAlgorithmType() + + // Parameterized algorithm types + newtype TSymmetricCipherType = + AES() or + ARIA() or + BLOWFISH() or + CAMELLIA() or + CAST5() or + CHACHA20() or + DES() or + DESX() or + GOST() or + IDEA() or + KUZNYECHIK() or + MAGMA() or + TRIPLE_DES() or + DOUBLE_DES() or + RC2() or + RC4() or + RC5() or + SEED() or + SM4() or + OtherSymmetricCipherType() + + newtype TAsymmetricCipherType = + RSA() or + OtherAsymmetricCipherType() + + newtype TSignatureAlgorithmType = + DSA() or + ECDSA() or + EDDSA() or // e.g., ED25519 or ED448 + OtherSignatureAlgorithmType() + + newtype TKemAlgorithmType = + KYBER() or + FRODO_KEM() or + OtherKemAlgorithmType() + + newtype TCipherStructureType = + Block() or + Stream() or + UnknownCipherStructureType() + + class CipherStructureType extends TCipherStructureType { + string toString() { + result = "Block" and this = Block() + or + result = "Stream" and this = Stream() + or + result = "Unknown" and this = UnknownCipherStructureType() + } + } + + private predicate symmetric_cipher_to_name_and_structure( + TSymmetricCipherType type, string name, CipherStructureType s + ) { + type = AES() and name = "AES" and s = Block() + or + type = ARIA() and name = "ARIA" and s = Block() + or + type = BLOWFISH() and name = "Blowfish" and s = Block() + or + type = CAMELLIA() and name = "Camellia" and s = Block() + or + type = CAST5() and name = "CAST5" and s = Block() + or + type = CHACHA20() and name = "ChaCha20" and s = Stream() + or + type = DES() and name = "DES" and s = Block() + or + type = DESX() and name = "DESX" and s = Block() + or + type = GOST() and name = "GOST" and s = Block() + or + type = IDEA() and name = "IDEA" and s = Block() + or + type = KUZNYECHIK() and name = "Kuznyechik" and s = Block() + or + type = MAGMA() and name = "Magma" and s = Block() + or + type = TRIPLE_DES() and name = "TripleDES" and s = Block() + or + type = DOUBLE_DES() and name = "DoubleDES" and s = Block() + or + type = RC2() and name = "RC2" and s = Block() + or + type = RC4() and name = "RC4" and s = Stream() + or + type = RC5() and name = "RC5" and s = Block() + or + type = SEED() and name = "SEED" and s = Block() + or + type = SM4() and name = "SM4" and s = Block() + or + type = OtherSymmetricCipherType() and + name = "UnknownSymmetricCipher" and + s = UnknownCipherStructureType() + } + + class AlgorithmType extends TAlgorithm { + string toString() { + // Symmetric cipher algorithm + symmetric_cipher_to_name_and_structure(this.(SymmetricCipherAlgorithmType).getType(), + result, _) + or + // Asymmetric cipher algorithms + this = TAsymmetricCipher(RSA()) and result = "RSA" + or + this = TAsymmetricCipher(OtherAsymmetricCipherType()) and result = "UnknownAsymmetricCipher" + or + // Signature algorithms + this = TSignature(DSA()) and result = "DSA" + or + this = TSignature(ECDSA()) and result = "ECDSA" + or + this = TSignature(EDDSA()) and result = "EDSA" + or + this = TSignature(OtherSignatureAlgorithmType()) and result = "UnknownSignature" + or + // Key Encapsulation Mechanisms + this = TKeyEncapsulation(KYBER()) and result = "Kyber" + or + this = TKeyEncapsulation(FRODO_KEM()) and result = "FrodoKEM" + or + this = TKeyEncapsulation(OtherKemAlgorithmType()) and result = "UnknownKEM" + or + // Unknown + this = TUnknownKeyOperationAlgorithmType() and result = "Unknown" + } + + int getImplicitKeySize() { + this = TSymmetricCipher(DES()) and result = 56 + or + this = TSymmetricCipher(DESX()) and result = 184 + or + this = TSymmetricCipher(DOUBLE_DES()) and result = 112 + or + this = TSymmetricCipher(TRIPLE_DES()) and result = 168 + or + this = TSymmetricCipher(CHACHA20()) and result = 256 + or + this = TSymmetricCipher(IDEA()) and result = 128 + or + this = TSymmetricCipher(KUZNYECHIK()) and result = 256 + or + this = TSymmetricCipher(MAGMA()) and result = 256 + or + this = TSymmetricCipher(SM4()) and result = 128 + or + this = TSymmetricCipher(SEED()) and result = 128 + } + } + + class SymmetricCipherAlgorithmType extends AlgorithmType, TSymmetricCipher { + TSymmetricCipherType type; + + SymmetricCipherAlgorithmType() { this = TSymmetricCipher(type) } + + TSymmetricCipherType getType() { result = type } + + TCipherStructureType getStructureType() { + symmetric_cipher_to_name_and_structure(type, _, result) + } + } + + class AsymmetricCipherAlgorithmType extends AlgorithmType, TAsymmetricCipher { + TAsymmetricCipherType type; + + AsymmetricCipherAlgorithmType() { this = TAsymmetricCipher(type) } + + TAsymmetricCipherType getType() { result = type } + } + + newtype TModeOfOperationType = + ECB() or // Not secure, widely used + CBC() or // Vulnerable to padding oracle attacks + CFB() or + GCM() or // Widely used AEAD mode (TLS 1.3, SSH, IPsec) + CTR() or // Fast stream-like encryption (SSH, disk encryption) + XTS() or // Standard for full-disk encryption (BitLocker, LUKS, FileVault) + CCM() or // Used in lightweight cryptography (IoT, WPA2) + SIV() or // Misuse-resistant encryption, used in secure storage + OCB() or // Efficient AEAD mode + OFB() or + OtherMode() + + class ModeOfOperationType extends TModeOfOperationType { + string toString() { + this = ECB() and result = "ECB" + or + this = CBC() and result = "CBC" + or + this = GCM() and result = "GCM" + or + this = CTR() and result = "CTR" + or + this = XTS() and result = "XTS" + or + this = CCM() and result = "CCM" + or + this = SIV() and result = "SIV" + or + this = OCB() and result = "OCB" + or + this = CFB() and result = "CFB" + or + this = OFB() and result = "OFB" + } + } + + newtype TPaddingSchemeType = + PKCS1_V1_5() or // RSA encryption/signing padding + PSS() or + PKCS7() or // Standard block cipher padding (PKCS5 for 8-byte blocks) + ANSI_X9_23() or // Zero-padding except last byte = padding length + NoPadding() or // Explicit no-padding + OAEP() or // RSA OAEP padding + OtherPadding() + + class PaddingSchemeType extends TPaddingSchemeType { + string toString() { + this = ANSI_X9_23() and result = "ANSI_X9_23" + or + this = NoPadding() and result = "NoPadding" + or + this = OAEP() and result = "OAEP" + or + this = PKCS1_V1_5() and result = "PKCS1_v1_5" + or + this = PKCS7() and result = "PKCS7" + or + this = PSS() and result = "PSS" + or + this = OtherPadding() and result = "UnknownPadding" + } + } + } + + newtype THashType = + BLAKE2B() or + BLAKE2S() or + GOST_HASH() or + MD2() or + MD4() or + MD5() or + MDC2() or + POLY1305() or + SHA1() or + SHA2() or + SHA3() or + SHAKE() or + SM3() or + RIPEMD160() or + WHIRLPOOL() or + OtherHashType() + + class HashType extends THashType { + final string toString() { + this = BLAKE2B() and result = "BLAKE2B" + or + this = BLAKE2S() and result = "BLAKE2S" + or + this = RIPEMD160() and result = "RIPEMD160" + or + this = MD2() and result = "MD2" + or + this = MD4() and result = "MD4" + or + this = MD5() and result = "MD5" + or + this = POLY1305() and result = "POLY1305" + or + this = SHA1() and result = "SHA1" + or + this = SHA2() and result = "SHA2" + or + this = SHA3() and result = "SHA3" + or + this = SHAKE() and result = "SHAKE" + or + this = SM3() and result = "SM3" + or + this = WHIRLPOOL() and result = "WHIRLPOOL" + or + this = OtherHashType() and result = "UnknownHash" + } + } + + newtype TMacType = + HMAC() or + CMAC() or + OtherMacType() + + class MacType extends TMacType { + string toString() { + this = HMAC() and result = "HMAC" + or + this = CMAC() and result = "CMAC" + or + this = OtherMacType() and result = "UnknownMacType" + } + } + + // Key agreement algorithms + newtype TKeyAgreementType = + DH() or // Diffie-Hellman + EDH() or // Ephemeral Diffie-Hellman + ECDH() or // Elliptic Curve Diffie-Hellman + // NOTE: for now ESDH is considered simply EDH + //ESDH() or // Ephemeral-Static Diffie-Hellman + // Note: x25519 and x448 are applications of ECDH + OtherKeyAgreementType() + + class KeyAgreementType extends TKeyAgreementType { + string toString() { + this = DH() and result = "DH" + or + this = EDH() and result = "EDH" + or + this = ECDH() and result = "ECDH" + or + this = OtherKeyAgreementType() and result = "UnknownKeyAgreementType" + } + } + + /** + * Elliptic curve algorithms + */ + newtype TEllipticCurveFamilyType = + NIST() or + SEC() or + NUMS() or + PRIME() or + BRAINPOOL() or + CURVE25519() or + CURVE448() or + C2() or + SM2() or + ES() or + OtherEllipticCurveType() + + class EllipticCurveFamilyType extends TEllipticCurveFamilyType { + string toString() { + this = NIST() and result = "NIST" + or + this = SEC() and result = "SEC" + or + this = NUMS() and result = "NUMS" + or + this = PRIME() and result = "PRIME" + or + this = BRAINPOOL() and result = "BRAINPOOL" + or + this = CURVE25519() and result = "CURVE25519" + or + this = CURVE448() and result = "CURVE448" + or + this = C2() and result = "C2" + or + this = SM2() and result = "SM2" + or + this = ES() and result = "ES" + or + this = OtherEllipticCurveType() and result = "UnknownEllipticCurveType" + } + } + + private predicate isBrainpoolCurve(string curveName, int keySize) { + // ALL BRAINPOOL CURVES + keySize in [160, 192, 224, 256, 320, 384, 512] and + ( + curveName = "BRAINPOOLP" + keySize + "R1" + or + curveName = "BRAINPOOLP" + keySize + "T1" + ) + } + + private predicate isSecCurve(string curveName, int keySize) { + // ALL SEC CURVES + keySize in [112, 113, 128, 131, 160, 163, 192, 193, 224, 233, 239, 256, 283, 384, 409, 521, 571] and + exists(string suff | suff in ["R1", "R2", "K1"] | + curveName = "SECT" + keySize + suff or + curveName = "SECP" + keySize + suff + ) + } + + private predicate isC2Curve(string curveName, int keySize) { + // ALL C2 CURVES + keySize in [163, 176, 191, 208, 239, 272, 304, 359, 368, 431] and + exists(string pre, string suff | + pre in ["PNB", "ONB", "TNB"] and suff in ["V1", "V2", "V3", "V4", "V5", "W1", "R1"] + | + curveName = "C2" + pre + keySize + suff + ) + } + + private predicate isPrimeCurve(string curveName, int keySize) { + // ALL PRIME CURVES + keySize in [192, 239, 256] and + exists(string suff | suff in ["V1", "V2", "V3"] | curveName = "PRIME" + keySize + suff) + } + + private predicate isNumsCurve(string curveName, int keySize) { + // ALL NUMS CURVES + keySize in [256, 384, 512] and + exists(string suff | suff = "T1" | curveName = "NUMSP" + keySize + suff) + } + + /** + * Holds if `name` corresponds to a known elliptic curve. + * + * Note: As an exception, this predicate may be used for library modeling, as curve names are largely standardized. + * + * When modeling, verify that this predicate offers sufficient coverage for the library and handle edge-cases. + */ + bindingset[curveName] + predicate isEllipticCurveAlgorithmName(string curveName) { + ellipticCurveNameToKnownKeySizeAndFamilyMapping(curveName, _, _) + } + + /** + * Relates elliptic curve names to their key size and family. + * + * Note: As an exception, this predicate may be used for library modeling, as curve names are largely standardized. + * + * When modeling, verify that this predicate offers sufficient coverage for the library and handle edge-cases. + */ + bindingset[rawName] + predicate ellipticCurveNameToKnownKeySizeAndFamilyMapping( + string rawName, int keySize, TEllipticCurveFamilyType curveFamily + ) { + exists(string curveName | curveName = rawName.toUpperCase() | + isSecCurve(curveName, keySize) and curveFamily = SEC() + or + isBrainpoolCurve(curveName, keySize) and curveFamily = BRAINPOOL() + or + isC2Curve(curveName, keySize) and curveFamily = C2() + or + isPrimeCurve(curveName, keySize) and curveFamily = PRIME() + or + isNumsCurve(curveName, keySize) and curveFamily = NUMS() + or + curveName = "ES256" and keySize = 256 and curveFamily = ES() + or + curveName = "CURVE25519" and keySize = 255 and curveFamily = CURVE25519() + or + curveName = "CURVE448" and keySize = 448 and curveFamily = CURVE448() + or + // TODO: separate these into key agreement logic or sign/verify (ECDSA / ECDH) + // or + // curveName = "X25519" and keySize = 255 and curveFamily = CURVE25519() + // or + // curveName = "ED25519" and keySize = 255 and curveFamily = CURVE25519() + // or + // curveName = "ED448" and keySize = 448 and curveFamily = CURVE448() + // or + // curveName = "X448" and keySize = 448 and curveFamily = CURVE448() + curveName = "SM2" and keySize in [256, 512] and curveFamily = SM2() + ) + } +} diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index ed8f11bc6486..f95d9c773b1e 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.3 +version: 0.0.5-dev groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index c06e99c5f7fe..e0f22e5bc3a1 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.26 + +No user-facing changes. + ## 1.0.25 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.26.md b/shared/rangeanalysis/change-notes/released/1.0.26.md new file mode 100644 index 000000000000..4920e2b24354 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.26.md @@ -0,0 +1,3 @@ +## 1.0.26 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index a5a44030e851..125d169e44f8 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.25 +lastReleaseVersion: 1.0.26 diff --git a/shared/rangeanalysis/codeql/rangeanalysis/ModulusAnalysis.qll b/shared/rangeanalysis/codeql/rangeanalysis/ModulusAnalysis.qll index db3377ff3cc1..f7864a01f446 100644 --- a/shared/rangeanalysis/codeql/rangeanalysis/ModulusAnalysis.qll +++ b/shared/rangeanalysis/codeql/rangeanalysis/ModulusAnalysis.qll @@ -3,6 +3,8 @@ * an expression, `b` is a `Bound` (typically zero or the value of an SSA * variable), and `v` is an integer in the range `[0 .. m-1]`. */ +overlay[local?] +module; /* * The main recursion has base cases in both `ssaModulus` (for guarded reads) and `exprModulus` diff --git a/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll b/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll index 445ec9f0b8d3..1d17ad8346c4 100644 --- a/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll +++ b/shared/rangeanalysis/codeql/rangeanalysis/RangeAnalysis.qll @@ -8,6 +8,8 @@ * If an inferred bound relies directly on a condition, then this condition is * reported as the reason for the bound. */ +overlay[local?] +module; /* * This library tackles range analysis as a flow problem. Consider e.g.: diff --git a/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll b/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll index d6eeb781f391..1592102bc8e6 100644 --- a/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll +++ b/shared/rangeanalysis/codeql/rangeanalysis/internal/RangeUtils.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import codeql.rangeanalysis.RangeAnalysis private import codeql.util.Location diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index e45001c1cd02..b2b9dabb75ae 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.25 +version: 1.0.27-dev groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 1a63aa6e43ad..aced064cc7a0 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.26 + +No user-facing changes. + ## 1.0.25 No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.26.md b/shared/regex/change-notes/released/1.0.26.md new file mode 100644 index 000000000000..4920e2b24354 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.26.md @@ -0,0 +1,3 @@ +## 1.0.26 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index a5a44030e851..125d169e44f8 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.25 +lastReleaseVersion: 1.0.26 diff --git a/shared/regex/codeql/regex/HostnameRegexp.qll b/shared/regex/codeql/regex/HostnameRegexp.qll index fc77b9b56e2e..7d97d71ccef9 100644 --- a/shared/regex/codeql/regex/HostnameRegexp.qll +++ b/shared/regex/codeql/regex/HostnameRegexp.qll @@ -2,6 +2,8 @@ * Provides predicates for reasoning about regular expressions * that match URLs and hostname patterns. */ +overlay[local?] +module; private import RegexTreeView diff --git a/shared/regex/codeql/regex/MissingRegExpAnchor.qll b/shared/regex/codeql/regex/MissingRegExpAnchor.qll index c4fe642b790d..722d1baafd6c 100644 --- a/shared/regex/codeql/regex/MissingRegExpAnchor.qll +++ b/shared/regex/codeql/regex/MissingRegExpAnchor.qll @@ -2,6 +2,8 @@ * Provides predicates for reasoning about regular expressions * without anchors. */ +overlay[local?] +module; private import RegexTreeView import HostnameRegexp as HostnameShared diff --git a/shared/regex/codeql/regex/OverlyLargeRangeQuery.qll b/shared/regex/codeql/regex/OverlyLargeRangeQuery.qll index 57d7d365611b..88645a2abde1 100644 --- a/shared/regex/codeql/regex/OverlyLargeRangeQuery.qll +++ b/shared/regex/codeql/regex/OverlyLargeRangeQuery.qll @@ -1,6 +1,8 @@ /** * Classes and predicates for working with suspicious character ranges. */ +overlay[local?] +module; private import RegexTreeView diff --git a/shared/regex/codeql/regex/RegexTreeView.qll b/shared/regex/codeql/regex/RegexTreeView.qll index 03d8fcfcbcd6..7a37a2eaceb9 100644 --- a/shared/regex/codeql/regex/RegexTreeView.qll +++ b/shared/regex/codeql/regex/RegexTreeView.qll @@ -1,6 +1,8 @@ /** * This file contains a `RegexTreeViewSig` module describing the syntax tree of regular expressions. */ +overlay[local?] +module; /** * A signature describing the syntax tree of regular expressions. diff --git a/shared/regex/codeql/regex/nfa/BadTagFilterQuery.qll b/shared/regex/codeql/regex/nfa/BadTagFilterQuery.qll index 0d040bc6f64c..a38229da4971 100644 --- a/shared/regex/codeql/regex/nfa/BadTagFilterQuery.qll +++ b/shared/regex/codeql/regex/nfa/BadTagFilterQuery.qll @@ -1,6 +1,8 @@ /** * Provides predicates for reasoning about bad tag filter vulnerabilities. */ +overlay[local?] +module; private import NfaUtils as NfaUtils private import RegexpMatching as RM diff --git a/shared/regex/codeql/regex/nfa/ExponentialBackTracking.qll b/shared/regex/codeql/regex/nfa/ExponentialBackTracking.qll index 450ee807089d..23f764973715 100644 --- a/shared/regex/codeql/regex/nfa/ExponentialBackTracking.qll +++ b/shared/regex/codeql/regex/nfa/ExponentialBackTracking.qll @@ -61,6 +61,8 @@ * * Lastly we ensure that any state reached by repeating `n` copies of `w` has * a suffix `x` (possible empty) that is most likely __not__ accepted. */ +overlay[local?] +module; private import NfaUtils as NfaUtils private import codeql.regex.RegexTreeView diff --git a/shared/regex/codeql/regex/nfa/NfaUtils.qll b/shared/regex/codeql/regex/nfa/NfaUtils.qll index d074081b6ac2..e1be49796e00 100644 --- a/shared/regex/codeql/regex/nfa/NfaUtils.qll +++ b/shared/regex/codeql/regex/nfa/NfaUtils.qll @@ -1,6 +1,8 @@ /** * A shared library for creating and reasoning about NFA's. */ +overlay[local?] +module; private import codeql.regex.RegexTreeView private import codeql.util.Numbers diff --git a/shared/regex/codeql/regex/nfa/RegexpMatching.qll b/shared/regex/codeql/regex/nfa/RegexpMatching.qll index fae1cea5f8c1..85c21b355a4b 100644 --- a/shared/regex/codeql/regex/nfa/RegexpMatching.qll +++ b/shared/regex/codeql/regex/nfa/RegexpMatching.qll @@ -2,6 +2,8 @@ * Provides predicates for reasoning about which strings are matched by a regular expression, * and for testing which capture groups are filled when a particular regexp matches a string. */ +overlay[local?] +module; private import NfaUtils as NfaUtils private import codeql.regex.RegexTreeView diff --git a/shared/regex/codeql/regex/nfa/SuperlinearBackTracking.qll b/shared/regex/codeql/regex/nfa/SuperlinearBackTracking.qll index 6eb18aeeebc9..fca1641207d4 100644 --- a/shared/regex/codeql/regex/nfa/SuperlinearBackTracking.qll +++ b/shared/regex/codeql/regex/nfa/SuperlinearBackTracking.qll @@ -34,6 +34,8 @@ * It has the same suffix detection issue as the `js/redos` query, which can cause false positives. * It also doesn't find all transitions in the product automaton, which can cause false negatives. */ +overlay[local?] +module; private import NfaUtils as NfaUtils private import codeql.regex.RegexTreeView @@ -99,6 +101,7 @@ module Make { /** * Holds if the tuple `(r1, r2, r3)` might be on path from a start-state to an end-state in the product automaton. */ + overlay[caller?] pragma[inline] predicate isFeasibleTuple(State r1, State r2, State r3) { // The first element is either inside a repetition (or the start state itself) diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index ea61f121ef40..3c478e25f9dc 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.25 +version: 1.0.27-dev groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index fff1d5b89e2a..2359940bf9ab 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.2 + +No user-facing changes. + ## 2.0.1 No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.2.md b/shared/ssa/change-notes/released/2.0.2.md new file mode 100644 index 000000000000..862ef0e9df7c --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.2.md @@ -0,0 +1,3 @@ +## 2.0.2 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index fe974a4dbf37..81c7f1dbc13c 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.1 +lastReleaseVersion: 2.0.2 diff --git a/shared/ssa/codeql/ssa/Ssa.qll b/shared/ssa/codeql/ssa/Ssa.qll index 4734cf7e414b..d9a017920171 100644 --- a/shared/ssa/codeql/ssa/Ssa.qll +++ b/shared/ssa/codeql/ssa/Ssa.qll @@ -2,6 +2,8 @@ * Provides a language-independent implementation of static single assignment * (SSA) form. */ +overlay[local?] +module; private import codeql.util.Location private import codeql.util.Unit diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 586a23e5dbbe..9a9f8759539d 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.1 +version: 2.0.3-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 3fa1fa4c69be..0d814dec385b 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.26 + +No user-facing changes. + ## 1.0.25 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.26.md b/shared/threat-models/change-notes/released/1.0.26.md new file mode 100644 index 000000000000..4920e2b24354 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.26.md @@ -0,0 +1,3 @@ +## 1.0.26 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index a5a44030e851..125d169e44f8 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.25 +lastReleaseVersion: 1.0.26 diff --git a/shared/threat-models/codeql/threatmodels/ThreatModels.qll b/shared/threat-models/codeql/threatmodels/ThreatModels.qll index 19dfd0d1a656..dbb220c46e67 100644 --- a/shared/threat-models/codeql/threatmodels/ThreatModels.qll +++ b/shared/threat-models/codeql/threatmodels/ThreatModels.qll @@ -4,6 +4,8 @@ * This module provides extensible predicates for configuring which kinds of MaD models * are applicable to generic queries. */ +overlay[local?] +module; /** * Holds configuration entries to specify which threat models are enabled. diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 2ce914671fc2..b514f75bb947 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.25 +version: 1.0.27-dev library: true groups: shared dataExtensions: diff --git a/shared/tree-sitter-extractor/Cargo.toml b/shared/tree-sitter-extractor/Cargo.toml index 3bda73a774d2..4cfeae2801b0 100644 --- a/shared/tree-sitter-extractor/Cargo.toml +++ b/shared/tree-sitter-extractor/Cargo.toml @@ -17,11 +17,11 @@ encoding = "0.2" lazy_static = "1.5.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -chrono = { version = "0.4.40", features = ["serde"] } -num_cpus = "1.16.0" +chrono = { version = "0.4.41", features = ["serde"] } +num_cpus = "1.17.0" zstd = "0.13.3" [dev-dependencies] tree-sitter-ql = "0.23.1" tree-sitter-json = "0.24.8" -rand = "0.9.0" +rand = "0.9.1" diff --git a/shared/tree-sitter-extractor/src/extractor/mod.rs b/shared/tree-sitter-extractor/src/extractor/mod.rs index 18a0cfc94520..0bc489cd5591 100644 --- a/shared/tree-sitter-extractor/src/extractor/mod.rs +++ b/shared/tree-sitter-extractor/src/extractor/mod.rs @@ -67,19 +67,26 @@ pub fn default_subscriber_with_level( ), ) } -pub fn populate_file(writer: &mut trap::Writer, absolute_path: &Path) -> trap::Label { +pub fn populate_file( + writer: &mut trap::Writer, + absolute_path: &Path, + transformer: Option<&file_paths::PathTransformer>, +) -> trap::Label { let (file_label, fresh) = writer.global_id(&trap::full_id_for_file( - &file_paths::normalize_path(absolute_path), + &file_paths::normalize_and_transform_path(absolute_path, transformer), )); if fresh { writer.add_tuple( "files", vec![ trap::Arg::Label(file_label), - trap::Arg::String(file_paths::normalize_path(absolute_path)), + trap::Arg::String(file_paths::normalize_and_transform_path( + absolute_path, + transformer, + )), ], ); - populate_parent_folders(writer, file_label, absolute_path.parent()); + populate_parent_folders(writer, file_label, absolute_path.parent(), transformer); } file_label } @@ -117,6 +124,7 @@ pub fn populate_parent_folders( writer: &mut trap::Writer, child_label: trap::Label, path: Option<&Path>, + transformer: Option<&file_paths::PathTransformer>, ) { let mut path = path; let mut child_label = child_label; @@ -124,9 +132,9 @@ pub fn populate_parent_folders( match path { None => break, Some(folder) => { - let (folder_label, fresh) = writer.global_id(&trap::full_id_for_folder( - &file_paths::normalize_path(folder), - )); + let parent = folder.parent(); + let folder = file_paths::normalize_and_transform_path(folder, transformer); + let (folder_label, fresh) = writer.global_id(&trap::full_id_for_folder(&folder)); writer.add_tuple( "containerparent", vec![ @@ -137,12 +145,9 @@ pub fn populate_parent_folders( if fresh { writer.add_tuple( "folders", - vec![ - trap::Arg::Label(folder_label), - trap::Arg::String(file_paths::normalize_path(folder)), - ], + vec![trap::Arg::Label(folder_label), trap::Arg::String(folder)], ); - path = folder.parent(); + path = parent; child_label = folder_label; } else { break; @@ -205,11 +210,12 @@ pub fn extract( schema: &NodeTypeMap, diagnostics_writer: &mut diagnostics::LogWriter, trap_writer: &mut trap::Writer, + transformer: Option<&file_paths::PathTransformer>, path: &Path, source: &[u8], ranges: &[Range], ) { - let path_str = file_paths::normalize_path(path); + let path_str = file_paths::normalize_and_transform_path(path, transformer); let span = tracing::span!( tracing::Level::TRACE, "extract", @@ -225,7 +231,7 @@ pub fn extract( parser.set_included_ranges(ranges).unwrap(); let tree = parser.parse(source, None).expect("Failed to parse file"); trap_writer.comment(format!("Auto-generated TRAP file for {}", path_str)); - let file_label = populate_file(trap_writer, path); + let file_label = populate_file(trap_writer, path, transformer); let mut visitor = Visitor::new( source, diagnostics_writer, diff --git a/shared/tree-sitter-extractor/src/extractor/simple.rs b/shared/tree-sitter-extractor/src/extractor/simple.rs index eb1232a8ef2e..10414a7665bf 100644 --- a/shared/tree-sitter-extractor/src/extractor/simple.rs +++ b/shared/tree-sitter-extractor/src/extractor/simple.rs @@ -1,4 +1,4 @@ -use crate::trap; +use crate::{file_paths, trap}; use globset::{GlobBuilder, GlobSetBuilder}; use rayon::prelude::*; use std::fs::File; @@ -111,6 +111,8 @@ impl Extractor { ) }; + let path_transformer = file_paths::load_path_transformer()?; + let lines: std::io::Result> = file_lists .iter() .flat_map(|file_list| std::io::BufReader::new(file_list).lines()) @@ -122,8 +124,12 @@ impl Extractor { .try_for_each(|line| { let mut diagnostics_writer = diagnostics.logger(); let path = PathBuf::from(line).canonicalize()?; - let src_archive_file = - crate::file_paths::path_for(&self.source_archive_dir, &path, ""); + let src_archive_file = crate::file_paths::path_for( + &self.source_archive_dir, + &path, + "", + path_transformer.as_ref(), + ); let source = std::fs::read(&path)?; let mut trap_writer = trap::Writer::new(); @@ -152,6 +158,7 @@ impl Extractor { &schemas[i], &mut diagnostics_writer, &mut trap_writer, + None, &path, &source, &[], @@ -183,7 +190,7 @@ fn write_trap( trap_writer: &trap::Writer, trap_compression: trap::Compression, ) -> std::io::Result<()> { - let trap_file = crate::file_paths::path_for(trap_dir, path, trap_compression.extension()); + let trap_file = crate::file_paths::path_for(trap_dir, path, trap_compression.extension(), None); std::fs::create_dir_all(trap_file.parent().unwrap())?; trap_writer.write_to_file(&trap_file, trap_compression) } diff --git a/shared/tree-sitter-extractor/src/file_paths.rs b/shared/tree-sitter-extractor/src/file_paths.rs index 917a2fb63227..bdb9dd035f06 100644 --- a/shared/tree-sitter-extractor/src/file_paths.rs +++ b/shared/tree-sitter-extractor/src/file_paths.rs @@ -1,8 +1,81 @@ -use std::path::{Path, PathBuf}; +use std::{ + fs, + path::{Path, PathBuf}, +}; -/// Normalizes the path according the common CodeQL specification. Assumes that -/// `path` has already been canonicalized using `std::fs::canonicalize`. -pub fn normalize_path(path: &Path) -> String { +/// This represents the minimum supported path transformation that is needed to support extracting +/// overlay databases. Specifically, it represents a transformer where one path prefix is replaced +/// with a different prefix. +pub struct PathTransformer { + pub original: String, + pub replacement: String, +} + +/// Normalizes the path according to the common CodeQL specification, and, applies the given path +/// transformer, if any. Assumes that `path` has already been canonicalized using +/// `std::fs::canonicalize`. +pub fn normalize_and_transform_path(path: &Path, transformer: Option<&PathTransformer>) -> String { + let path = normalize_path(path); + match transformer { + Some(transformer) => match path.strip_prefix(&transformer.original) { + Some(suffix) => format!("{}{}", transformer.replacement, suffix), + None => path, + }, + None => path, + } +} + +/** + * Attempts to load a path transformer. + * + * If the `CODEQL_PATH_TRANSFORMER` environment variable is not set, no transformer has been + * specified and the function returns `Ok(None)`. + * + * If the environment variable is set, the function attempts to load the transformer from the file + * at the specified path. If this is successful, it returns `Ok(Some(PathTransformer))`. + * + * If the file cannot be read, or if it does not match the minimal subset of the path-transformer + * syntax supported by this extractor, the function returns an error. + */ +pub fn load_path_transformer() -> std::io::Result> { + let path = match std::env::var("CODEQL_PATH_TRANSFORMER") { + Ok(p) => p, + Err(_) => return Ok(None), + }; + let file_content = fs::read_to_string(path)?; + let lines = file_content + .lines() + .map(|line| line.trim().to_owned()) + .filter(|line| !line.is_empty()) + .collect::>(); + + if lines.len() != 2 { + return Err(unsupported_transformer_error()); + } + let replacement = lines[0] + .strip_prefix('#') + .ok_or(unsupported_transformer_error())?; + let original = lines[1] + .strip_suffix("//") + .ok_or(unsupported_transformer_error())?; + + Ok(Some(PathTransformer { + original: original.to_owned(), + replacement: replacement.to_owned(), + })) +} + +fn unsupported_transformer_error() -> std::io::Error { + std::io::Error::new( + std::io::ErrorKind::InvalidData, + "This extractor only supports path transformers specifying a single path-prefix rewrite, \ + with the first line starting with a # and the second line ending with //.", + ) +} + +/// Normalizes the path according to the common CodeQL specification. Assumes that `path` has +/// already been canonicalized using `std::fs::canonicalize`. +fn normalize_path(path: &Path) -> String { if cfg!(windows) { // The way Rust canonicalizes paths doesn't match the CodeQL spec, so we // have to do a bit of work removing certain prefixes and replacing @@ -93,7 +166,18 @@ pub fn path_from_string(path: &str) -> PathBuf { result } -pub fn path_for(dir: &Path, path: &Path, ext: &str) -> PathBuf { +pub fn path_for( + dir: &Path, + path: &Path, + ext: &str, + transformer: Option<&PathTransformer>, +) -> PathBuf { + let path = if transformer.is_some() { + let transformed = normalize_and_transform_path(path, transformer); + PathBuf::from(transformed) + } else { + path.to_path_buf() + }; let mut result = PathBuf::from(dir); for component in path.components() { match component { diff --git a/shared/tree-sitter-extractor/src/generator/mod.rs b/shared/tree-sitter-extractor/src/generator/mod.rs index d972e9fb128d..e4bd1ac4eb0d 100644 --- a/shared/tree-sitter-extractor/src/generator/mod.rs +++ b/shared/tree-sitter-extractor/src/generator/mod.rs @@ -49,6 +49,13 @@ pub fn generate( })], )?; + ql::write( + &mut ql_writer, + &[ql::TopLevel::Predicate( + ql_gen::create_is_overlay_predicate(), + )], + )?; + for language in languages { let prefix = node_types::to_snake_case(&language.name); let ast_node_name = format!("{}_ast_node", &prefix); @@ -92,6 +99,21 @@ pub fn generate( ql::TopLevel::Class(ql_gen::create_token_class(&token_name, &tokeninfo_name)), ql::TopLevel::Class(ql_gen::create_reserved_word_class(&reserved_word_name)), ]; + + // Overlay discard predicates + body.push(ql::TopLevel::Predicate( + ql_gen::create_get_node_file_predicate(&ast_node_name, &node_location_table_name), + )); + body.push(ql::TopLevel::Predicate( + ql_gen::create_discard_file_predicate(), + )); + body.push(ql::TopLevel::Predicate( + ql_gen::create_discardable_ast_node_predicate(&ast_node_name), + )); + body.push(ql::TopLevel::Predicate( + ql_gen::create_discard_ast_node_predicate(&ast_node_name), + )); + body.append(&mut ql_gen::convert_nodes(&nodes)); ql::write( &mut ql_writer, diff --git a/shared/tree-sitter-extractor/src/generator/prefix.dbscheme b/shared/tree-sitter-extractor/src/generator/prefix.dbscheme index 96c7feaaf192..16921105a720 100644 --- a/shared/tree-sitter-extractor/src/generator/prefix.dbscheme +++ b/shared/tree-sitter-extractor/src/generator/prefix.dbscheme @@ -104,3 +104,9 @@ yaml_locations(unique int locatable: @yaml_locatable ref, int location: @location_default ref); @yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); diff --git a/shared/tree-sitter-extractor/src/generator/ql.rs b/shared/tree-sitter-extractor/src/generator/ql.rs index 8e899462ac39..e4c87b61bdb8 100644 --- a/shared/tree-sitter-extractor/src/generator/ql.rs +++ b/shared/tree-sitter-extractor/src/generator/ql.rs @@ -6,6 +6,7 @@ pub enum TopLevel<'a> { Class(Class<'a>), Import(Import<'a>), Module(Module<'a>), + Predicate(Predicate<'a>), } impl fmt::Display for TopLevel<'_> { @@ -14,6 +15,7 @@ impl fmt::Display for TopLevel<'_> { TopLevel::Import(imp) => write!(f, "{}", imp), TopLevel::Class(cls) => write!(f, "{}", cls), TopLevel::Module(m) => write!(f, "{}", m), + TopLevel::Predicate(pred) => write!(f, "{}", pred), } } } @@ -68,10 +70,12 @@ impl fmt::Display for Class<'_> { qldoc: None, name: self.name, overridden: false, + is_private: false, is_final: false, return_type: None, formal_parameters: vec![], body: charpred.clone(), + overlay: None, } )?; } @@ -150,6 +154,7 @@ pub enum Expression<'a> { expr: Box>, second_expr: Option>>, }, + Negation(Box>), } impl fmt::Display for Expression<'_> { @@ -231,19 +236,28 @@ impl fmt::Display for Expression<'_> { } write!(f, ")") } + Expression::Negation(e) => write!(f, "not ({})", e), } } } +#[derive(Clone, Eq, PartialEq, Hash)] +pub enum OverlayAnnotation { + Local, + DiscardEntity, +} + #[derive(Clone, Eq, PartialEq, Hash)] pub struct Predicate<'a> { pub qldoc: Option, pub name: &'a str, pub overridden: bool, + pub is_private: bool, pub is_final: bool, pub return_type: Option>, pub formal_parameters: Vec>, pub body: Expression<'a>, + pub overlay: Option, } impl fmt::Display for Predicate<'_> { @@ -251,6 +265,17 @@ impl fmt::Display for Predicate<'_> { if let Some(qldoc) = &self.qldoc { write!(f, "/** {} */", qldoc)?; } + if let Some(overlay_annotation) = &self.overlay { + write!(f, "overlay[")?; + match overlay_annotation { + OverlayAnnotation::Local => write!(f, "local")?, + OverlayAnnotation::DiscardEntity => write!(f, "discard_entity")?, + } + write!(f, "] ")?; + } + if self.is_private { + write!(f, "private ")?; + } if self.is_final { write!(f, "final ")?; } diff --git a/shared/tree-sitter-extractor/src/generator/ql_gen.rs b/shared/tree-sitter-extractor/src/generator/ql_gen.rs index 919ff43af428..b5853410c1d9 100644 --- a/shared/tree-sitter-extractor/src/generator/ql_gen.rs +++ b/shared/tree-sitter-extractor/src/generator/ql_gen.rs @@ -16,6 +16,7 @@ pub fn create_ast_node_class<'a>( )), name: "toString", overridden: false, + is_private: false, is_final: false, return_type: Some(ql::Type::String), formal_parameters: vec![], @@ -27,11 +28,13 @@ pub fn create_ast_node_class<'a>( vec![], )), ), + overlay: None, }; let get_location = ql::Predicate { name: "getLocation", qldoc: Some(String::from("Gets the location of this element.")), overridden: false, + is_private: false, is_final: true, return_type: Some(ql::Type::Normal("L::Location")), formal_parameters: vec![], @@ -39,6 +42,7 @@ pub fn create_ast_node_class<'a>( node_location_table, vec![ql::Expression::Var("this"), ql::Expression::Var("result")], ), + overlay: None, }; let get_a_field_or_child = create_none_predicate( Some(String::from("Gets a field or child node of this node.")), @@ -50,6 +54,7 @@ pub fn create_ast_node_class<'a>( qldoc: Some(String::from("Gets the parent of this element.")), name: "getParent", overridden: false, + is_private: false, is_final: true, return_type: Some(ql::Type::Normal("AstNode")), formal_parameters: vec![], @@ -61,6 +66,7 @@ pub fn create_ast_node_class<'a>( ql::Expression::Var("_"), ], ), + overlay: None, }; let get_parent_index = ql::Predicate { qldoc: Some(String::from( @@ -68,6 +74,7 @@ pub fn create_ast_node_class<'a>( )), name: "getParentIndex", overridden: false, + is_private: false, is_final: true, return_type: Some(ql::Type::Int), formal_parameters: vec![], @@ -79,6 +86,7 @@ pub fn create_ast_node_class<'a>( ql::Expression::Var("result"), ], ), + overlay: None, }; let get_a_primary_ql_class = ql::Predicate { qldoc: Some(String::from( @@ -86,6 +94,7 @@ pub fn create_ast_node_class<'a>( )), name: "getAPrimaryQlClass", overridden: false, + is_private: false, is_final: false, return_type: Some(ql::Type::String), formal_parameters: vec![], @@ -93,6 +102,7 @@ pub fn create_ast_node_class<'a>( Box::new(ql::Expression::Var("result")), Box::new(ql::Expression::String("???")), ), + overlay: None, }; let get_primary_ql_classes = ql::Predicate { qldoc: Some( @@ -102,6 +112,7 @@ pub fn create_ast_node_class<'a>( ), name: "getPrimaryQlClasses", overridden: false, + is_private: false, is_final: false, return_type: Some(ql::Type::String), formal_parameters: vec![], @@ -119,6 +130,7 @@ pub fn create_ast_node_class<'a>( second_expr: Some(Box::new(ql::Expression::String(","))), }), ), + overlay: None, }; ql::Class { qldoc: Some(String::from("The base class for all AST nodes")), @@ -144,10 +156,12 @@ pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> ql::Cl qldoc: Some(String::from("Gets the value of this token.")), name: "getValue", overridden: false, + is_private: false, is_final: true, return_type: Some(ql::Type::String), formal_parameters: vec![], body: create_get_field_expr_for_column_storage("result", tokeninfo, 1, tokeninfo_arity), + overlay: None, }; let to_string = ql::Predicate { qldoc: Some(String::from( @@ -155,6 +169,7 @@ pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> ql::Cl )), name: "toString", overridden: true, + is_private: false, is_final: true, return_type: Some(ql::Type::String), formal_parameters: vec![], @@ -166,6 +181,7 @@ pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> ql::Cl vec![], )), ), + overlay: None, }; ql::Class { qldoc: Some(String::from("A token.")), @@ -210,10 +226,12 @@ fn create_none_predicate<'a>( qldoc, name, overridden, + is_private: false, is_final: false, return_type, formal_parameters: Vec::new(), body: ql::Expression::Pred("none", vec![]), + overlay: None, } } @@ -226,6 +244,7 @@ fn create_get_a_primary_ql_class(class_name: &str, is_final: bool) -> ql::Predic )), name: "getAPrimaryQlClass", overridden: true, + is_private: false, is_final, return_type: Some(ql::Type::String), formal_parameters: vec![], @@ -233,6 +252,166 @@ fn create_get_a_primary_ql_class(class_name: &str, is_final: bool) -> ql::Predic Box::new(ql::Expression::Var("result")), Box::new(ql::Expression::String(class_name)), ), + overlay: None, + } +} + +pub fn create_is_overlay_predicate() -> ql::Predicate<'static> { + ql::Predicate { + name: "isOverlay", + qldoc: Some(String::from("Holds if the database is an overlay.")), + overridden: false, + is_private: true, + is_final: false, + return_type: None, + overlay: Some(ql::OverlayAnnotation::Local), + formal_parameters: vec![], + body: ql::Expression::Pred( + "databaseMetadata", + vec![ + ql::Expression::String("isOverlay"), + ql::Expression::String("true"), + ], + ), + } +} + +pub fn create_get_node_file_predicate<'a>( + ast_node_name: &'a str, + node_location_table_name: &'a str, +) -> ql::Predicate<'a> { + ql::Predicate { + name: "getNodeFile", + qldoc: Some(String::from("Gets the file containing the given `node`.")), + overridden: false, + is_private: true, + is_final: false, + overlay: Some(ql::OverlayAnnotation::Local), + return_type: Some(ql::Type::At("file")), + formal_parameters: vec![ql::FormalParameter { + name: "node", + param_type: ql::Type::At(ast_node_name), + }], + body: ql::Expression::Aggregate { + name: "exists", + vars: vec![ql::FormalParameter { + name: "loc", + param_type: ql::Type::At("location_default"), + }], + range: Some(Box::new(ql::Expression::Pred( + node_location_table_name, + vec![ql::Expression::Var("node"), ql::Expression::Var("loc")], + ))), + expr: Box::new(ql::Expression::Pred( + "locations_default", + vec![ + ql::Expression::Var("loc"), + ql::Expression::Var("result"), + ql::Expression::Var("_"), + ql::Expression::Var("_"), + ql::Expression::Var("_"), + ql::Expression::Var("_"), + ], + )), + second_expr: None, + }, + } +} + +pub fn create_discard_file_predicate<'a>() -> ql::Predicate<'a> { + ql::Predicate { + name: "discardFile", + qldoc: Some(String::from( + "Holds if `file` was extracted as part of the overlay database.", + )), + overridden: false, + is_private: true, + is_final: false, + overlay: Some(ql::OverlayAnnotation::Local), + return_type: None, + formal_parameters: vec![ql::FormalParameter { + name: "file", + param_type: ql::Type::At("file"), + }], + body: ql::Expression::And(vec![ + ql::Expression::Pred("isOverlay", vec![]), + ql::Expression::Equals( + Box::new(ql::Expression::Var("file")), + Box::new(ql::Expression::Pred( + "getNodeFile", + vec![ql::Expression::Var("_")], + )), + ), + ]), + } +} + +pub fn create_discardable_ast_node_predicate(ast_node_name: &str) -> ql::Predicate { + ql::Predicate { + name: "discardableAstNode", + qldoc: Some(String::from( + "Holds if `node` is in the `file` and is part of the overlay base database.", + )), + overridden: false, + is_private: true, + is_final: false, + overlay: Some(ql::OverlayAnnotation::Local), + return_type: None, + formal_parameters: vec![ + ql::FormalParameter { + name: "file", + param_type: ql::Type::At("file"), + }, + ql::FormalParameter { + name: "node", + param_type: ql::Type::At(ast_node_name), + }, + ], + body: ql::Expression::And(vec![ + ql::Expression::Negation(Box::new(ql::Expression::Pred("isOverlay", vec![]))), + ql::Expression::Equals( + Box::new(ql::Expression::Var("file")), + Box::new(ql::Expression::Pred( + "getNodeFile", + vec![ql::Expression::Var("node")], + )), + ), + ]), + } +} + +pub fn create_discard_ast_node_predicate(ast_node_name: &str) -> ql::Predicate { + ql::Predicate { + name: "discardAstNode", + qldoc: Some(String::from( + "Holds if `node` should be discarded, because it is part of the overlay base \ + and is in a file that was also extracted as part of the overlay database.", + )), + overridden: false, + is_private: true, + is_final: false, + overlay: Some(ql::OverlayAnnotation::DiscardEntity), + return_type: None, + formal_parameters: vec![ql::FormalParameter { + name: "node", + param_type: ql::Type::At(ast_node_name), + }], + body: ql::Expression::Aggregate { + name: "exists", + vars: vec![ql::FormalParameter { + name: "file", + param_type: ql::Type::At("file"), + }], + range: None, + expr: Box::new(ql::Expression::And(vec![ + ql::Expression::Pred( + "discardableAstNode", + vec![ql::Expression::Var("file"), ql::Expression::Var("node")], + ), + ql::Expression::Pred("discardFile", vec![ql::Expression::Var("file")]), + ])), + second_expr: None, + }, } } @@ -435,10 +614,12 @@ fn create_field_getters<'a>( qldoc: Some(qldoc), name: &field.getter_name, overridden: false, + is_private: false, is_final: true, return_type, formal_parameters, body, + overlay: None, }, optional_expr, ) @@ -548,10 +729,12 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec { qldoc: Some(String::from("Gets a field or child node of this node.")), name: "getAFieldOrChild", overridden: true, + is_private: false, is_final: true, return_type: Some(ql::Type::Normal("AstNode")), formal_parameters: vec![], body: ql::Expression::Or(get_child_exprs), + overlay: None, }); classes.push(ql::TopLevel::Class(main_class)); diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index a5290f62bb31..92ac100d5c8d 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.26 + +No user-facing changes. + ## 1.0.25 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.26.md b/shared/tutorial/change-notes/released/1.0.26.md new file mode 100644 index 000000000000..4920e2b24354 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.26.md @@ -0,0 +1,3 @@ +## 1.0.26 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index a5a44030e851..125d169e44f8 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.25 +lastReleaseVersion: 1.0.26 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 5e8d7d64ca5d..017db79a8233 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.25 +version: 1.0.27-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/CHANGELOG.md b/shared/typeflow/CHANGELOG.md index 2283f741ca7f..7fa72fbd343a 100644 --- a/shared/typeflow/CHANGELOG.md +++ b/shared/typeflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.26 + +No user-facing changes. + ## 1.0.25 No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.26.md b/shared/typeflow/change-notes/released/1.0.26.md new file mode 100644 index 000000000000..4920e2b24354 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.26.md @@ -0,0 +1,3 @@ +## 1.0.26 + +No user-facing changes. diff --git a/shared/typeflow/codeql-pack.release.yml b/shared/typeflow/codeql-pack.release.yml index a5a44030e851..125d169e44f8 100644 --- a/shared/typeflow/codeql-pack.release.yml +++ b/shared/typeflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.25 +lastReleaseVersion: 1.0.26 diff --git a/shared/typeflow/codeql/typeflow/TypeFlow.qll b/shared/typeflow/codeql/typeflow/TypeFlow.qll index a2ae213ecb7f..52a911974091 100644 --- a/shared/typeflow/codeql/typeflow/TypeFlow.qll +++ b/shared/typeflow/codeql/typeflow/TypeFlow.qll @@ -7,6 +7,8 @@ * type has a subtype or if an inferred upper bound passed through at least one * explicit or implicit cast that lost type information. */ +overlay[local?] +module; private import codeql.util.Location diff --git a/shared/typeflow/codeql/typeflow/UniversalFlow.qll b/shared/typeflow/codeql/typeflow/UniversalFlow.qll index 75b210f8cebb..e5f07690a183 100644 --- a/shared/typeflow/codeql/typeflow/UniversalFlow.qll +++ b/shared/typeflow/codeql/typeflow/UniversalFlow.qll @@ -25,6 +25,8 @@ * that subsequently calculated properties hold under the assumption that the * value is not null. */ +overlay[local?] +module; private import codeql.util.Location private import codeql.util.Unit diff --git a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll index f17b809ca32d..437e1ab31992 100644 --- a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll +++ b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import codeql.typeflow.TypeFlow private import codeql.typeflow.UniversalFlow as UniversalFlow private import codeql.util.Location diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index a95abb9ac22e..74b59ee1f745 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.25 +version: 1.0.27-dev groups: shared library: true dependencies: diff --git a/shared/typeinference/CHANGELOG.md b/shared/typeinference/CHANGELOG.md index ad2e63eb4709..8f58f5145db5 100644 --- a/shared/typeinference/CHANGELOG.md +++ b/shared/typeinference/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.7 + +No user-facing changes. + ## 0.0.6 No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.7.md b/shared/typeinference/change-notes/released/0.0.7.md new file mode 100644 index 000000000000..84da6f18c42e --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.7.md @@ -0,0 +1,3 @@ +## 0.0.7 + +No user-facing changes. diff --git a/shared/typeinference/codeql-pack.release.yml b/shared/typeinference/codeql-pack.release.yml index cf398ce02aa4..a2a5484910bc 100644 --- a/shared/typeinference/codeql-pack.release.yml +++ b/shared/typeinference/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.6 +lastReleaseVersion: 0.0.7 diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index b0f5fc673009..0234d42e5e19 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -1,13 +1,129 @@ /** * Provides shared functionality for computing type inference in QL. * - * The code examples in this file use C# syntax, but the concepts should - * carry over to other languages as well. + * The code examples in this file use C# syntax, but the concepts should carry + * over to other languages as well. * - * The library is initialized in two phases: `Make1`, which constructs - * the `TypePath` type, and `Make2`, which (using `TypePath` in the input - * signature) constructs the `Matching` module. + * The library is initialized in two phases: `Make1`, which constructs the + * `TypePath` type, and `Make2`, which (using `TypePath` in the input signature) + * constructs the `Matching` and `IsInstantiationOf` modules. + * + * The intended use of this library is to define a predicate + * + * ```ql + * Type inferType(AstNode n, TypePath path) + * ``` + * + * for recursively inferring the type-path-indexed types of AST nodes. For example, + * one may have a base case for literals like + * + * ```ql + * Type inferType(AstNode n, TypePath path) { + * ... + * n instanceof IntegerLiteral and + * result instanceof IntType and + * path.isEmpty() + * ... + * } + * ``` + * + * and recursive cases for local variables like + * + * ```ql + * Type inferType(AstNode n, TypePath path) { + * ... + * exists(LocalVariable v | + * // propagate type information from the initializer to any access + * n = v.getAnAccess() and + * result = inferType(v.getInitializer(), path) + * or + * // propagate type information from any access back to the initializer; note + * // that this case may not be relevant for all languages, but e.g. in Rust + * // it is + * n = v.getInitializer() and + * result = inferType(v.getAnAccess(), path) + * ) + * ... + * } + * ``` + * + * The `Matching` module is used when an AST node references a potentially generic + * declaration, where the type of the node depends on the type of some of its sub + * nodes. For example, if we have a generic method like `T Identity(T t)`, then + * the type of `Identity(42)` should be `int`, while the type of `Identity("foo")` + * should be `string`; in both cases it should _not_ be `T`. + * + * In order to infer the type of method calls, one would define something like + * + * ```ql + * private module MethodCallMatchingInput implements MatchingInputSig { + * private newtype TDeclarationPosition = + * TSelfDeclarationPosition() or + * TPositionalDeclarationPosition(int pos) { ... } or + * TReturnDeclarationPosition() + * + * // A position inside a method with a declared type. + * class DeclarationPosition extends TDeclarationPosition { + * ... + * } + * + * class Declaration extends MethodCall { + * // Gets a type parameter at `tppos` belonging to this method. + * // + * // For example, if this method is `T Identity(T t)`, then `T` + * // is at position `0`. + * TypeParameter getTypeParameter(TypeParameterPosition tppos) { ... } + * + * // Gets the declared type of this method at `dpos` and `path`. + * // + * // For example, if this method is `T Identity(T t)`, then both the + * // the return type and parameter position `0` is `T` with `path.isEmpty()`. + * Type getDeclaredType(DeclarationPosition dpos, TypePath path) { ... } + * } + * + * // A position inside a method call with an inferred type + * class AccessPosition = DeclarationPosition; + * + * class Access extends MethodCall { + * AstNode getNodeAt(AccessPosition apos) { ... } + * + * // Gets the inferred type of the node at `apos` and `path`. + * // + * // For example, if this method call is `Identity(42)`, then the type + * // at argument position `0` is `int` with `path.isEmpty()"`. + * Type getInferredType(AccessPosition apos, TypePath path) { + * result = inferType(this.getNodeAt(apos), path) + * } + * + * // Gets the method that this method call resolves to. + * // + * // This will typically be defined in mutual recursion with the `inferType` + * // predicate, as we need to know the type of the receiver in order to + * // resolve calls to instance methods. + * Declaration getTarget() { ... } + * } + * + * predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { + * apos = dpos + * } + * } + * + * private module MethodCallMatching = Matching; + * + * Type inferType(AstNode n, TypePath path) { + * ... + * exists(MethodCall mc, MethodCallMatchingInput::AccessPosition apos | + * // Some languages may want to restrict `apos` to be the return position, but in + * // e.g. Rust type information can flow out of all positions + * n = a.getNodeAt(apos) and + * result = MethodCallMatching::inferAccessType(a, apos, path) + * ) + * ... + * } + * ``` */ +overlay[local?] +module; private import codeql.util.Location @@ -220,6 +336,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 +539,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 +579,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) + ) ) } @@ -523,6 +649,7 @@ module Make1 Input1> { * - `Pair` is _not_ an instantiation of `Pair` * - `Pair` is _not_ an instantiation of `Pair` */ + pragma[nomagic] predicate isInstantiationOf(App app, TypeAbstraction abs, TypeMention tm) { // We only need to check equality if the concrete types are satisfied. satisfiesConcreteTypes(app, abs, tm) and @@ -540,6 +667,27 @@ module Make1 Input1> { ) ) } + + /** + * Holds if `app` is _not_ a possible instantiation of `tm`. + */ + pragma[nomagic] + predicate isNotInstantiationOf(App app, TypeAbstraction abs, TypeMention tm) { + // `app` and `tm` differ on a concrete type + exists(Type t, TypePath path | + t = resolveNthTypeAt(app, abs, tm, _, path) and + not t = abs.getATypeParameter() and + not path.isEmpty() and + app.getTypeAt(path) != t + ) + or + // `app` uses inconsistent type parameter instantiations + exists(TypeParameter tp | + potentialInstantiationOf(app, abs, tm) and + app.getTypeAt(getNthTypeParameterPath(tm, tp, _)) != + app.getTypeAt(getNthTypeParameterPath(tm, tp, _)) + ) + } } /** Provides logic related to base types. */ @@ -725,6 +873,7 @@ module Make1 Input1> { ) } + overlay[caller?] pragma[inline] predicate baseTypeMentionHasNonTypeParameterAt( Type sub, TypeMention baseMention, TypePath path, Type t @@ -732,6 +881,7 @@ module Make1 Input1> { not t = sub.getATypeParameter() and baseTypeMentionHasTypeAt(sub, baseMention, path, t) } + overlay[caller?] pragma[inline] predicate baseTypeMentionHasTypeParameterAt( Type sub, TypeMention baseMention, TypePath path, TypeParameter tp @@ -742,6 +892,108 @@ module Make1 Input1> { private import BaseTypes + signature module SatisfiesConstraintInputSig { + /** Holds if it is relevant to know if `term` satisfies `constraint`. */ + predicate relevantConstraint(HasTypeTree term, Type constraint); + } + + module SatisfiesConstraint< + HasTypeTreeSig HasTypeTree, SatisfiesConstraintInputSig Input> + { + private import Input + + private module IsInstantiationOfInput implements IsInstantiationOfInputSig { + predicate potentialInstantiationOf(HasTypeTree tt, TypeAbstraction abs, TypeMention cond) { + exists(Type constraint, Type type | + type = tt.getTypeAt(TypePath::nil()) and + relevantConstraint(tt, constraint) and + rootTypesSatisfaction(type, constraint, abs, cond, _) and + // We only need to check instantiations where there are multiple candidates. + countConstraintImplementations(type, constraint) > 1 + ) + } + + predicate relevantTypeMention(TypeMention constraint) { + rootTypesSatisfaction(_, _, _, constraint, _) + } + } + + /** Holds if the type tree has the type `type` and should satisfy `constraint`. */ + pragma[nomagic] + private predicate hasTypeConstraint(HasTypeTree term, Type type, Type constraint) { + type = term.getTypeAt(TypePath::nil()) and + relevantConstraint(term, constraint) + } + + /** + * Holds if `tt` satisfies `constraint` through `abs`, `sub`, and `constraintMention`. + */ + pragma[nomagic] + private predicate hasConstraintMention( + HasTypeTree tt, TypeAbstraction abs, TypeMention sub, Type constraint, + TypeMention constraintMention + ) { + exists(Type type | hasTypeConstraint(tt, type, constraint) | + not exists(countConstraintImplementations(type, constraint)) and + conditionSatisfiesConstraintTypeAt(abs, sub, constraintMention, _, _) and + resolveTypeMentionRoot(sub) = abs.getATypeParameter() and + constraint = resolveTypeMentionRoot(constraintMention) + or + countConstraintImplementations(type, constraint) > 0 and + rootTypesSatisfaction(type, constraint, abs, sub, constraintMention) and + // When there are multiple ways the type could implement the + // constraint we need to find the right implementation, which is the + // one where the type instantiates the precondition. + if countConstraintImplementations(type, constraint) > 1 + then + IsInstantiationOf::isInstantiationOf(tt, abs, sub) + else any() + ) + } + + pragma[nomagic] + private predicate satisfiesConstraintTypeMention0( + HasTypeTree tt, Type constraint, TypeAbstraction abs, TypeMention sub, TypePath path, Type t + ) { + exists(TypeMention constraintMention | + hasConstraintMention(tt, abs, sub, constraint, constraintMention) and + conditionSatisfiesConstraintTypeAt(abs, sub, constraintMention, path, t) + ) + } + + pragma[nomagic] + private predicate satisfiesConstraintTypeMention1( + HasTypeTree tt, Type constraint, TypePath path, TypePath pathToTypeParamInSub + ) { + exists(TypeAbstraction abs, TypeMention sub, TypeParameter tp | + satisfiesConstraintTypeMention0(tt, constraint, abs, sub, path, tp) and + tp = abs.getATypeParameter() and + sub.resolveTypeAt(pathToTypeParamInSub) = tp + ) + } + + /** + * Holds if the type tree at `tt` satisfies the constraint `constraint` + * with the type `t` at `path`. + */ + pragma[nomagic] + predicate satisfiesConstraintType(HasTypeTree tt, Type constraint, TypePath path, Type t) { + exists(TypeAbstraction abs | + satisfiesConstraintTypeMention0(tt, constraint, abs, _, path, t) and + not t = abs.getATypeParameter() + ) + or + exists(TypePath prefix0, TypePath pathToTypeParamInSub, TypePath suffix | + satisfiesConstraintTypeMention1(tt, constraint, prefix0, pathToTypeParamInSub) and + tt.getTypeAt(pathToTypeParamInSub.appendInverse(suffix)) = t and + path = prefix0.append(suffix) + ) + or + tt.getTypeAt(TypePath::nil()) = constraint and + t = tt.getTypeAt(path) + } + } + /** Provides the input to `Matching`. */ signature module MatchingInputSig { /** @@ -975,17 +1227,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,20 +1247,18 @@ 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) - } + /** Holds if this relevant access should satisfy `constraint`. */ + Type getConstraint() { relevantAccessConstraint(a, target, apos, path, result) } string toString() { result = a.toString() + ", " + apos.toString() + ", " + path.toString() @@ -1016,73 +1267,20 @@ module Make1 Input1> { Location getLocation() { result = a.getLocation() } } - private module IsInstantiationOfInput implements IsInstantiationOfInputSig { - predicate potentialInstantiationOf( - RelevantAccess at, TypeAbstraction abs, TypeMention cond - ) { - exists(Type constraint, Type type | - at.hasTypeConstraint(type, constraint) and - rootTypesSatisfaction(type, constraint, abs, cond, _) and - // We only need to check instantiations where there are multiple candidates. - countConstraintImplementations(type, constraint) > 1 - ) - } - - predicate relevantTypeMention(TypeMention constraint) { - rootTypesSatisfaction(_, _, _, constraint, _) + private module SatisfiesConstraintInput implements + SatisfiesConstraintInputSig + { + predicate relevantConstraint(RelevantAccess at, Type constraint) { + constraint = at.getConstraint() } } - /** - * Holds if `at` satisfies `constraint` through `abs`, `sub`, and `constraintMention`. - */ - private predicate hasConstraintMention( - RelevantAccess at, TypeAbstraction abs, TypeMention sub, Type constraint, - TypeMention constraintMention - ) { - exists(Type type | at.hasTypeConstraint(type, constraint) | - not exists(countConstraintImplementations(type, constraint)) and - conditionSatisfiesConstraintTypeAt(abs, sub, constraintMention, _, _) and - resolveTypeMentionRoot(sub) = abs.getATypeParameter() and - constraint = resolveTypeMentionRoot(constraintMention) - or - countConstraintImplementations(type, constraint) > 0 and - rootTypesSatisfaction(type, constraint, abs, sub, constraintMention) and - // When there are multiple ways the type could implement the - // constraint we need to find the right implementation, which is the - // one where the type instantiates the precondition. - if countConstraintImplementations(type, constraint) > 1 - then - IsInstantiationOf::isInstantiationOf(at, abs, - sub) - else any() - ) - } - - /** - * Holds if the type at `a`, `apos`, and `path` satisfies the constraint - * `constraint` with the type `t` at `path`. - */ - pragma[nomagic] - predicate satisfiesConstraintTypeMention( + predicate satisfiesConstraintType( Access a, AccessPosition apos, TypePath prefix, Type constraint, TypePath path, Type t ) { - exists( - RelevantAccess at, TypeAbstraction abs, TypeMention sub, Type t0, TypePath prefix0, - TypeMention constraintMention - | - 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) - ) + exists(RelevantAccess at | at = MkRelevantAccess(a, _, apos, prefix) | + SatisfiesConstraint::satisfiesConstraintType(at, + constraint, path, t) ) } } @@ -1110,7 +1308,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() } /** @@ -1219,7 +1417,7 @@ module Make1 Input1> { accessDeclarationPositionMatch(apos, dpos) and typeParameterConstraintHasTypeParameter(target, dpos, pathToTp2, _, constraint, pathToTp, tp) and - AccessConstraint::satisfiesConstraintTypeMention(a, apos, pathToTp2, constraint, + AccessConstraint::satisfiesConstraintType(a, apos, pathToTp2, constraint, pathToTp.appendInverse(path), t) ) } @@ -1285,14 +1483,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 d0c83854b67b..2b9a8d3ee2d3 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.6 +version: 0.0.8-dev groups: shared library: true dependencies: diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 6e434da1f774..58e9c8119af7 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.10 + +No user-facing changes. + ## 2.0.9 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.10.md b/shared/typetracking/change-notes/released/2.0.10.md new file mode 100644 index 000000000000..37310f107aa0 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.10.md @@ -0,0 +1,3 @@ +## 2.0.10 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index ce305265e337..96ea0220a690 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.9 +lastReleaseVersion: 2.0.10 diff --git a/shared/typetracking/codeql/typetracking/TypeTracking.qll b/shared/typetracking/codeql/typetracking/TypeTracking.qll index 7a411adb6333..da5b129241a7 100644 --- a/shared/typetracking/codeql/typetracking/TypeTracking.qll +++ b/shared/typetracking/codeql/typetracking/TypeTracking.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for simple data-flow reachability suitable * for tracking types. */ +overlay[local?] +module; private import codeql.util.Location diff --git a/shared/typetracking/codeql/typetracking/internal/SummaryTypeTracker.qll b/shared/typetracking/codeql/typetracking/internal/SummaryTypeTracker.qll index b942446d43ba..36dce0d081e4 100644 --- a/shared/typetracking/codeql/typetracking/internal/SummaryTypeTracker.qll +++ b/shared/typetracking/codeql/typetracking/internal/SummaryTypeTracker.qll @@ -3,6 +3,8 @@ * To use this, you must implement the `Input` signature. You can then use the predicates in the `Output` * signature to implement the predicates of the same names inside `TypeTrackerSpecific.qll`. */ +overlay[local?] +module; /** The classes and predicates needed to generate type-tracking steps from summaries. */ signature module Input { diff --git a/shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll b/shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll index b36edca04e7c..fcfcfe9ecd1d 100644 --- a/shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll +++ b/shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for simple data-flow reachability suitable * for tracking types. */ +overlay[local?] +module; private import codeql.util.Boolean private import codeql.util.Option @@ -510,6 +512,7 @@ module TypeTracking I> { * } * ``` */ + overlay[caller?] pragma[inline] TypeTracker smallstep(Node nodeFrom, Node nodeTo) { result = this.smallstepNoSimpleLocalFlowStep(nodeFrom, nodeTo) @@ -654,6 +657,7 @@ module TypeTracking I> { * } * ``` */ + overlay[caller?] pragma[inline] TypeBackTracker smallstep(Node nodeFrom, Node nodeTo) { result = this.smallstepNoSimpleLocalFlowStep(nodeFrom, nodeTo) diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index e75d2976ab3a..a0fbd70f8932 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.9 +version: 2.0.11-dev groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 62be8d62137f..47359494704d 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.26 + +No user-facing changes. + ## 1.0.25 No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.26.md b/shared/typos/change-notes/released/1.0.26.md new file mode 100644 index 000000000000..4920e2b24354 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.26.md @@ -0,0 +1,3 @@ +## 1.0.26 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index a5a44030e851..125d169e44f8 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.25 +lastReleaseVersion: 1.0.26 diff --git a/shared/typos/codeql/typos/TypoDatabase.qll b/shared/typos/codeql/typos/TypoDatabase.qll index a41f003a8c0c..7f1a8c2a3e73 100644 --- a/shared/typos/codeql/typos/TypoDatabase.qll +++ b/shared/typos/codeql/typos/TypoDatabase.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + /** * Holds if `wrong` is a common misspelling of `right`. * diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 7cbc9901fec7..2abd19685629 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.25 +version: 1.0.27-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index e9eb55238ef2..c8832ace0220 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.13 + +No user-facing changes. + ## 2.0.12 No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.13.md b/shared/util/change-notes/released/2.0.13.md new file mode 100644 index 000000000000..39a24682b500 --- /dev/null +++ b/shared/util/change-notes/released/2.0.13.md @@ -0,0 +1,3 @@ +## 2.0.13 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index b856d9a13f21..30d169d6eb84 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.12 +lastReleaseVersion: 2.0.13 diff --git a/shared/util/codeql/util/AlertFiltering.qll b/shared/util/codeql/util/AlertFiltering.qll index 97acd803f01e..1bc366c0416d 100644 --- a/shared/util/codeql/util/AlertFiltering.qll +++ b/shared/util/codeql/util/AlertFiltering.qll @@ -2,6 +2,8 @@ * Provides the `restrictAlertsTo` extensible predicate to restrict alerts to specific source * locations, and the `AlertFilteringImpl` parameterized module to apply the filtering. */ +overlay[local?] +module; private import codeql.util.Location diff --git a/shared/util/codeql/util/Boolean.qll b/shared/util/codeql/util/Boolean.qll index b58dc9a308f3..0f35421c408a 100644 --- a/shared/util/codeql/util/Boolean.qll +++ b/shared/util/codeql/util/Boolean.qll @@ -1,4 +1,6 @@ /** Provides the `Boolean` class. */ +overlay[local?] +module; /** * A utility class that is equivalent to `boolean`. diff --git a/shared/util/codeql/util/DenseRank.qll b/shared/util/codeql/util/DenseRank.qll index 0dccbbd48803..89ab865e9595 100644 --- a/shared/util/codeql/util/DenseRank.qll +++ b/shared/util/codeql/util/DenseRank.qll @@ -2,6 +2,8 @@ * Provides modules for computing dense `rank`s. See the `DenseRank` module * below for a more detailed explanation. */ +overlay[local?] +module; /** Provides the input to `DenseRank`. */ signature module DenseRankInputSig { diff --git a/shared/util/codeql/util/Either.qll b/shared/util/codeql/util/Either.qll index d514b9eaed58..a6796f99f38b 100644 --- a/shared/util/codeql/util/Either.qll +++ b/shared/util/codeql/util/Either.qll @@ -1,4 +1,6 @@ /** Provides a module for constructing a union `Either` type. */ +overlay[local?] +module; /** A type with `toString`. */ private signature class TypeWithToString { diff --git a/shared/util/codeql/util/FilePath.qll b/shared/util/codeql/util/FilePath.qll index 1b047f3c91ce..ff62ce6ee5e3 100644 --- a/shared/util/codeql/util/FilePath.qll +++ b/shared/util/codeql/util/FilePath.qll @@ -1,4 +1,6 @@ /** Provides a utility for normalizing filepaths. */ +overlay[local?] +module; /** * A filepath that should be normalized. diff --git a/shared/util/codeql/util/FileSystem.qll b/shared/util/codeql/util/FileSystem.qll index 2b120faaacea..fe724190f746 100644 --- a/shared/util/codeql/util/FileSystem.qll +++ b/shared/util/codeql/util/FileSystem.qll @@ -1,4 +1,6 @@ /** Provides classes for working with files and folders. */ +overlay[local?] +module; /** Provides the input specification of the files and folders implementation. */ signature module InputSig { diff --git a/shared/util/codeql/util/Location.qll b/shared/util/codeql/util/Location.qll index 8faa1ee4eeb9..c592f2c55564 100644 --- a/shared/util/codeql/util/Location.qll +++ b/shared/util/codeql/util/Location.qll @@ -1,4 +1,6 @@ /** Provides classes for working with locations. */ +overlay[local?] +module; /** * A location as given by a file, a start line, a start column, diff --git a/shared/util/codeql/util/Numbers.qll b/shared/util/codeql/util/Numbers.qll index 050f3c023f11..126307d41b4e 100644 --- a/shared/util/codeql/util/Numbers.qll +++ b/shared/util/codeql/util/Numbers.qll @@ -2,6 +2,8 @@ * Provides predicates for working with numeric values and their string * representations. */ +overlay[local?] +module; /** * Gets the integer value of `binary` when interpreted as binary. `binary` must diff --git a/shared/util/codeql/util/Option.qll b/shared/util/codeql/util/Option.qll index 8ba4d8e840bc..65a5e8724526 100644 --- a/shared/util/codeql/util/Option.qll +++ b/shared/util/codeql/util/Option.qll @@ -1,4 +1,6 @@ /** Provides a module for constructing optional versions of types. */ +overlay[local?] +module; /** A type with `toString`. */ private signature class TypeWithToString { diff --git a/shared/util/codeql/util/ReportStats.qll b/shared/util/codeql/util/ReportStats.qll index 03f381b5b9b3..947eff548e75 100644 --- a/shared/util/codeql/util/ReportStats.qll +++ b/shared/util/codeql/util/ReportStats.qll @@ -1,6 +1,7 @@ /** * Provides the `ReportStats` module for reporting database quality statistics. */ +overlay[local?] module; signature module StatsSig { diff --git a/shared/util/codeql/util/Strings.qll b/shared/util/codeql/util/Strings.qll index 6b8b6f2fb1d0..c82c23a9988b 100644 --- a/shared/util/codeql/util/Strings.qll +++ b/shared/util/codeql/util/Strings.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import Numbers /** diff --git a/shared/util/codeql/util/Unit.qll b/shared/util/codeql/util/Unit.qll index a0db9d7030f7..27e890788ff9 100644 --- a/shared/util/codeql/util/Unit.qll +++ b/shared/util/codeql/util/Unit.qll @@ -1,4 +1,6 @@ /** Provides the `Unit` class. */ +overlay[local?] +module; /** The unit type. */ private newtype TUnit = TMkUnit() diff --git a/shared/util/codeql/util/Void.qll b/shared/util/codeql/util/Void.qll index 886687b54602..28501cb9aca6 100644 --- a/shared/util/codeql/util/Void.qll +++ b/shared/util/codeql/util/Void.qll @@ -1,4 +1,6 @@ /** Provides the empty `Void` class. */ +overlay[local?] +module; /** The empty void type. */ private newtype TVoid = TMkVoid() { none() } diff --git a/shared/util/codeql/util/suppression/AlertSuppression.qll b/shared/util/codeql/util/suppression/AlertSuppression.qll index fad8d96566c0..722791148679 100644 --- a/shared/util/codeql/util/suppression/AlertSuppression.qll +++ b/shared/util/codeql/util/suppression/AlertSuppression.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + signature class AstNode { predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/shared/util/codeql/util/test/ExternalLocationPostProcessing.qll b/shared/util/codeql/util/test/ExternalLocationPostProcessing.qll index 2ebd2b452828..4515bdabc79a 100644 --- a/shared/util/codeql/util/test/ExternalLocationPostProcessing.qll +++ b/shared/util/codeql/util/test/ExternalLocationPostProcessing.qll @@ -6,6 +6,7 @@ * VS Code, but prevents the "Location is outside of test directory" warning * when executed through `codeql test run`. */ +overlay[local?] module; external private predicate queryResults(string relation, int row, int column, string data); diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index f400be0abdff..6bebbd01336a 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.12 +version: 2.0.14-dev groups: shared library: true dependencies: null diff --git a/shared/xml/CHANGELOG.md b/shared/xml/CHANGELOG.md index 1af448dd16d8..a201e0d013f5 100644 --- a/shared/xml/CHANGELOG.md +++ b/shared/xml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.26 + +No user-facing changes. + ## 1.0.25 No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.26.md b/shared/xml/change-notes/released/1.0.26.md new file mode 100644 index 000000000000..4920e2b24354 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.26.md @@ -0,0 +1,3 @@ +## 1.0.26 + +No user-facing changes. diff --git a/shared/xml/codeql-pack.release.yml b/shared/xml/codeql-pack.release.yml index a5a44030e851..125d169e44f8 100644 --- a/shared/xml/codeql-pack.release.yml +++ b/shared/xml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.25 +lastReleaseVersion: 1.0.26 diff --git a/shared/xml/codeql/xml/Xml.qll b/shared/xml/codeql/xml/Xml.qll index 02d0ffc66fda..9620b156719e 100644 --- a/shared/xml/codeql/xml/Xml.qll +++ b/shared/xml/codeql/xml/Xml.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with XML files and their content. */ +overlay[local?] +module; private import codeql.util.Location private import codeql.util.FileSystem diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index e6cb9a17961a..d0e1fc1af1f3 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.25 +version: 1.0.27-dev groups: shared library: true dependencies: diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 7944d8a4a2fb..74fcb889c9cc 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.26 + +No user-facing changes. + ## 1.0.25 No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.26.md b/shared/yaml/change-notes/released/1.0.26.md new file mode 100644 index 000000000000..4920e2b24354 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.26.md @@ -0,0 +1,3 @@ +## 1.0.26 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index a5a44030e851..125d169e44f8 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.25 +lastReleaseVersion: 1.0.26 diff --git a/shared/yaml/codeql/serverless/ServerLess.qll b/shared/yaml/codeql/serverless/ServerLess.qll index a0322ad47a12..009b50c7d1ca 100644 --- a/shared/yaml/codeql/serverless/ServerLess.qll +++ b/shared/yaml/codeql/serverless/ServerLess.qll @@ -2,6 +2,8 @@ * Provides classes and predicates for working with serverless handlers. * E.g. [AWS](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-handler.html) or [serverless](https://npmjs.com/package/serverless) */ +overlay[local?] +module; /** * Provides the input for the `ServerLess` module. diff --git a/shared/yaml/codeql/yaml/Yaml.qll b/shared/yaml/codeql/yaml/Yaml.qll index 1467fd09d137..153ff5979c8e 100644 --- a/shared/yaml/codeql/yaml/Yaml.qll +++ b/shared/yaml/codeql/yaml/Yaml.qll @@ -4,6 +4,8 @@ * YAML documents are represented as abstract syntax trees whose nodes * are either YAML values or alias nodes referring to another YAML value. */ +overlay[local?] +module; /** Provides the input specification of YAML implementation. */ signature module InputSig { diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index cf91193f6aec..258719e31932 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.25 +version: 1.0.27-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index f693ce9e9fc5..261705596d28 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -733,7 +733,7 @@ lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fd lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 lib/codeql/swift/generated/OtherAvailabilitySpec.qll d9feaa2a71acff3184ca389045b0a49d09156210df0e034923d715b432ad594b 046737621a8bcf69bf805afb0cff476bd15259f12f0d77fce3206dd01b31518f -lib/codeql/swift/generated/ParentChild.qll d66e5c28e93a3085fbae0ada238a96577ad21fd64a37ce967032bf5df8bdfb1d 2d440ad9c0304f658d54c6c53a8b1db1d3e032ee5522b51c46116413d0cf5dbb +lib/codeql/swift/generated/ParentChild.qll 86a6c9ba4c79d72bf7a0786274f6fba49e6f37cf82de0451a6dad0d319224ebd f7b99ceb052a23d7c25d1615d1453d421b5ddddcec60b7d8d6f956d0d3fd7a2d lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll dc17b49a90a18a8f7607adf2433bc8f0c194fa3e803aa3822f809d4d4fbd6793 be48ea9f8ae17354c8508aaed24337a9e57ce01f288fece3dcecd99776cabcec lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 lib/codeql/swift/generated/Raw.qll 96d5f8778f25cd396b5cc56c38dce597c5a9a5c2b1e9ed8b9a4d2eca89e49323 d65072b5c508dad1dd813e19f7431087d8bfc0e5d85aa3d19beffbcbbec585ec @@ -1032,111 +1032,37 @@ lib/codeql/swift/generated/type/UnownedStorageType.qll bbab372902a625c16b2d9a058 lib/codeql/swift/generated/type/UnresolvedType.qll 3b99e19ca7177619fb79e6e8511df915811b7b9078c0bc9ae47cf3b79e923407 b715e01583738b5e8fb2f6640d8f390bad8f5ad6d8c25ad771dfabbe5736bfaa lib/codeql/swift/generated/type/VariadicSequenceType.qll 7ece2c953e24d1c51715610f2813bd97f6d9fc6e58e5df0aacadad31e1fd1d8f be0005d973fd7c4c937fc340711fafe7ceba592ac407b88731bc35a1c2800aeb lib/codeql/swift/generated/type/WeakStorageType.qll d46b67f2b7bcc8aa7599e38506e91c219f894df4668ff1f0b5b66c1858040f5b c8e34ec9df085d938e36492d172fbf84ca56fc9d805713b8ada92e1b4c7bef54 -test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo.ql f174aa20e00010baed0000eddee62f7b70d4ce950e5f9c0cb0bd5b6f1d8dc908 170049771ebcf54ceb603e089f93516749322dd6d7bf89e4636e3b4eedd773e0 -test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo_getSpec.ql 6ee83b1f24d961c736a1579c0282ca560a2a916ffe73bb9eb2c6d14b3cddcdb0 fee90d8b1c1379bd2f7443387a3a1eb3afd7e3e7f65d39b665cc08e9f83f362f +test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo.ql 0bb0cfe3f8c38af3b870f8c404c16a5715e80d5ea8fd7939cc13032d7b824809 142ae1e76138b287aa66e091683aae545d139ef2971624e2dfdd3ea454bc2d05 test/extractor-tests/generated/Comment/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/Diagnostics/Diagnostics.ql ee50220080a1a5df7772ab043e8aae30e3d83e45b69aa40bda12c7d272d33568 c1b41b0cfa03a0431b8a2d23dde2f194e5b9262f5a317103818b595e4f00fee0 -test/extractor-tests/generated/File/File.ql c0af919359546affceeff4f0152b8bfffe430b647016da803d6650acbb142920 e6441061e0eb14577a4e00e8e25c38219ab749b49dc66b26fe786ab5e080a8e5 -test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.ql fa80af728ad8ca6da700925ada7f166324de6691acef51e01a29b10387312f76 9314cda502475b1fee74903c9fd8f1e2c930f5b16a824d9f3f5a2fbb1730ef6e -test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getDeclRef.ql 40442888d4673d92b7d4a20cbb487f887fee1dc8674d98b68fc4ab0837f9c5de 7612174b502524749c26800599d6a332a4022ef544c39fc86733193a18d6811d -test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getSubscriptArgument.ql 8c33add02f42abcd9814b7e138bee9d650f6f6360ce792fb0b5d49552513d7bf 16efaf1af88c67c64e0c7a88dbf2c5c6c259a40115cb520e5d2e9545e0ea20e0 -test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getTupleIndex.ql c55da7366086c0a927e23fbaf5cb2ebab50ac4eafde206b59efad96edd0545ff dc1cd851d68fd307a1f101a4cd94ec971475bdd2b26fb82a8566b4a99d0aa505 +test/extractor-tests/generated/Diagnostics/Diagnostics.ql c1f8be2c283e13c1a4dadaa008e42f660ea09d9ee1de22b0e8493ef76384546e d84efa40eaecbce6b928a5b235e10bf1e4409a9d0778c365ec19d2fade7ab3ab +test/extractor-tests/generated/File/File.ql a1385ef2080e04e8757f61b8e1d0129df9f955edf03fbb3b83cc9cb5498b4e95 0364d8c7f108d01b2641f996efedab7084956307e875e6bc078ea677d04267e0 +test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.ql 3fa617f8ed1b308d0c56f429ee8abe6d33ef60bf57d87f6dc89fdc8fe969a102 c2fa3153077dbe9e0fc608524dc03c82ff4ed460364d341ee6a817b0d75291c3 test/extractor-tests/generated/OtherAvailabilitySpec/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/PlatformVersionAvailabilitySpec/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/decl/Accessor/Accessor.ql fb3e3b8096ed6f9de299f73383194520bcd0a96f4e215e1945456e0c2beaa2a0 cc66788194840b4c5c57e9cbd8f7072655fa9947f2da36cf9f59463ea070d409 -test/extractor-tests/generated/decl/Accessor/Accessor_getBody.ql 89660097038fe210b72373ed6ea4d6e6cc6505a45d8e0892b53e265bb1d2c398 9abec75977ca2f5328ff6730b3b40c264cc385961c2685351c869a359c5afeb4 -test/extractor-tests/generated/decl/Accessor/Accessor_getCapture.ql 15011012186c6111d5eace2f5ad34747adaa5e84d044a98bb7da17b08695c69d 60411e7886e5cfc211c10881b6e061e02597690eccd714fff2a51874e4088d27 -test/extractor-tests/generated/decl/Accessor/Accessor_getGenericTypeParam.ql 92b13b69f0b64abd16eecbf38eae4ff1a7006617639b80c0f22b651caeb40da6 06113682dda3ff88688b6689953e21b0b8ead5d019fc56ff7752b19b46711a4d -test/extractor-tests/generated/decl/Accessor/Accessor_getMember.ql 84b36dc43f829791db6407df98e563ea4a87b42f69aad41358e175bf3f352afa 854e6bc7f0fe1dc4d3a9f069e2eb8921ea176874c44ad153dca03c2aa46d8c69 -test/extractor-tests/generated/decl/Accessor/Accessor_getName.ql df32edf0b05ade5f99508182473d2bf0ee3c69d8a58db2741d13c65d16c2ea52 0d4feea5683ca76b614a7e3da6f48ba9aefc188b77dc5bf3fa9234289f38f638 -test/extractor-tests/generated/decl/Accessor/Accessor_getParam.ql f1ab4808a4222ea6b1e649a5009f2667b7b2be471cea87b26a2cf91751555bcb 519e608cba95a9a20bcfee3049bb89b61b1b4ffec042ba5f15e554712187a809 -test/extractor-tests/generated/decl/Accessor/Accessor_getSelfParam.ql 8d4a1d9ad69b5b227b9b6a6ba546ad15c4b948b32f5871d18db17c24a8f94454 812a80f1670d4ce5392da523d53007910df3de71a43ee34da852a543dd5a9f92 -test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.ql 9a22cd6a43fb6b46df471bd544b3330d5118e64cca3aef2c5ce3b0ba7fd9b8fa 30dd927155853ac2374752c5713605afe925f40547fbe9314159e343837c7e00 -test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getInheritedType.ql 7c399b5b1f763df5a92fe9e7258e1bca0bd57b4854865bd2f1b03154cc1e5bb4 f89a5913baa4c530bad70218660be764608e59608a104d6a219e980f2e6f1625 -test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getMember.ql 778ef3e569f5774ae3bce286fb47342cb6cda9b47b8074942b542a1c8f18b169 2aec4012a21cf0ee4f1a7c5c726c233d61a2051210e13b2028a2ae7457609e88 -test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.ql 2730b05c8835a78815f97e0be1dfe38140a32ed81b3bd660428265fb898efbbd 3837a2cf9436aeb730f18a144934af75e6f9343b72e331200c53a64d02a0c3af -test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl_getMember.ql c0ec9ec2677d30a3ffe9ed4e02a0a104fdb1245467c38dbb218a672a6996db7d 4b7e83d64879c63a234a7f66e0dd455b2fbd31ba0d718ec8eb32c35eef867496 -test/extractor-tests/generated/decl/ClassDecl/ClassDecl.ql ef3bb618dc93fe6862ab2fdf05067ee59946b6ae12af5709ea66892a6806dd2d 5d2c42b3517826ed3fac5d06f15e54cd20abf72e980c7397251fecf79176fd40 -test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getGenericTypeParam.ql bf372b6dd01a22ff4705a9bba5ab8524081eb586c17201dcad257cff5b3fc159 06c9ead259d50321db18e259b32734a473b070c40eb76c9bdf11b1f8f72cd57b -test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getInheritedType.ql da903d8cd38e725a0ad9d754c4d65aa576d906da930628b4d1351a0760e8c5b6 6b4d68db4f2aa2053b700b96171504f7c5dde433397987356b001d198a847331 -test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getMember.ql a34a907c3b0809e2a24cdba315a20993eff60c0d7cf2e015e26f70f240357f93 b12262cf6b27973375e623e221f9ff1084376cb5266289b2728f29095671cb7c -test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.ql baf497f323a7aea6966f0ad475a238dddd1162a18fccde12c7fe62559f07b97b 8ce68bab8901b911459d4a61fe23abe6c70670137670867a466af3a31238c691 -test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAccessor.ql aa3777eeb59781b9f0a48e6d077f60704c73752fd348e66a4cdaaf1f18990c0b b59c2621b2147723ff1055f35dba143e3a7c464f27ebcdb4627d6bf399195f3e -test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAttachedPropertyWrapperType.ql 98829d2dfd0a0f268b116f377f8956e18afe8ef293b30870bc6fca1a6abd1ad9 c080da788925c79302d2f8d0a731d6e8dc6bc03362176f1a64a55bdbbb544025 -test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getMember.ql dd014d28ef8542a220461740b02268331f8b3d2118a09276d4d3fc47060e82d0 c4b8748d4a8a6f95d4e65c69c6b4833b1bf7e7444eeb494ede8ac34367f15445 -test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentInitializer.ql bfea99ccd17bf2b8bf32efc7ce9889b2075a009f2dc8a3eead69b793deed5a54 6b3b87195b0cb19f48c7a28bc6eb167dc98b09d169587d31b1c2b12216826ab8 -test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentPattern.ql fc806a2fe3e41463fb1e89d03e33ad1fd5adb75614c1fe0698a8f8f587f6745d 35f470623dc23b5f8c2839f305e3881181a16a06ab15c2fe8adb39c41d84a527 -test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVar.ql bee0520be50b0b2567a31e204a23c5ee95ee8d96e2644661915ac87cd4308df7 d755aaedf1255fc29235fcbeac49c01b889443573ef3e653708f058dc9bc3cde -test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVarBinding.ql 9aea239684dc11eb93a6b43a0ffba5a24c2be2d870a086189d87625d803f1f95 ccad85fe6eb6f42b85c43c881746f2bd25687d142aaba7e3bc7b34740645ffc4 -test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVar.ql 6ab6f45c518af82b5c96767c83bb11fd20e9ea82c6c334f88584f06d082a5c23 56e71de6ab53cd24532cfd441d1c05e863dd200db23448d9d35ea6be2e54472b -test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVarBinding.ql 61a3ff69ca5833184f6f43aeb676734f2ef4d62cd30a122f6749e6dbf139e531 100ee61c1977e441d0bee9dd45753541312bf51e530dd3e1d9486b78b3d63170 +test/extractor-tests/generated/decl/Accessor/Accessor.ql 7e50dd3c4119162bbfa3e2461300d876c60321d4b6473ddd35e0cb992108570e eb81ed8db92bff46974079e0f1100cf94bd639191a36db45ee9e65467abb6e38 +test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.ql 55a78a6b96a17532178a39bd39aa4df23295f98019bb00de041ba15dfd4f84d9 51dbcd86203d5d031d748f77943a81c2c50de4ff559af20a4a1a682a19978d4f +test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.ql fd62be6c38d39f371c20e8c2f233e37a9da5aa234588920634f5db67e8beb3bd d51d35d4fd6a21cd596e064e0221d0c86e36312412a9bd4e64f431c123f3019a +test/extractor-tests/generated/decl/ClassDecl/ClassDecl.ql d5fa7f68307e2e3e7ad060a125bda148e4a28f6acbef08a1a975bbf9ba947641 46d1e4f801414f1c869601dc706e41393e5fcd399e51da593c1e58737f6ff427 +test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.ql 936ac4aa52a55bd5bb4c75c117fffcc00208b9f502ff7ee05acbaad7d48a52fb d80346fe34d40910f5ecdb33d7266b6e4d1ec79f8d767c7da5e2ab780f201457 test/extractor-tests/generated/decl/Deinitializer/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl.ql 8c7faa72f99cbd02360f3a0ac37059952fbf58d54ad79dc5b81dff209953c433 631836e15e8cd7530fdcb4470ad82ff759b61086a50139d7d91ab8dd26bb6938 -test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getElement.ql bb20d76f377bc895884e0830990291e721d9a0f6570e6d0e8fcc67419aaf1712 2888b9a300a946461886337670acd028f018d1cfbc826910c173308ba79bfe3b -test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getMember.ql 9351d7a2595a431f1f9a52fe1fddc64acdf8923b708e8dcece6a8e00c3895c58 855c122ca985bf9cb7ee439f212912187bc13789e968e46ff6536e712ba1a6b0 -test/extractor-tests/generated/decl/EnumDecl/EnumDecl.ql 8a7ba0cd48fdf52f229ea1679c5828d79df9e800f76df8dfe9a878992f034f88 dfdede262a1323b1db2618721b01a5fd4b30c172bf8a374fe48a0d9f6b21bd39 -test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getGenericTypeParam.ql b70205b500419d71909a8899d9f2099b2b8340978a0ec4e275f2007bfa610f8d b5009c8c3efba9e96bbcf15eb61644d8e77a95d1b955dabcbfc75c6c084d7ca0 -test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getInheritedType.ql f55ba6b8a76621fc899eceab6bbeaba3619a1a4382c318369fc3dc17bc806082 ea0cff9bc7fd87efbec16bec998d672ab5b5a8f1f4e93c10dd87ac254076887c -test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getMember.ql 5a4de48886bd8fd05b9e730aefcffbba28a090ed2d8d1aa331277820ab836b7f 999c92856eff3b34839adfe9daece97834ce9ede7fad1cfe0c2055e0f019f7ab -test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl.ql bd00c56cf1d05707f29c4f31defc6a3ff25f41928688c2be992a92d4c5624859 3bd69b639f883e164fa6d1d4a3ad18aed86f88b93358636c5e118f1ca96eb878 -test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getMember.ql e40260a5689d26c9bf2dfe17617e8a1480c720523e47f50273aeb7160a69f244 7ee294373de5bd22fc2c64a7acae4a94e9bdebf808c8e73a16a57b0dc3c295ac -test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getParam.ql a507e55efcc13544d93c91c343a3df14b79114f259cb4dbec56d6f56e804d4e8 587bf774b4c4451ff873506624ccd379dd2fd7689460b4e24af96fbccadc0e6d -test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.ql 11a15a67f7b19e3d1fb5a2616420c23fde400848c8dbfcadb8e52a40130b92ad 502831fd3465ff06eba1dc6be365bee5fc2fcec96be44967a6579bbbdd395a32 -test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getGenericTypeParam.ql bc57c794b106df3b9da47432ef3241849145d5e86ebf601cec08729f05e15956 bce4e2150ca2efe495e544a3a074c7ebc81f68bd2f3280a76f565d31acb091e2 -test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getMember.ql 0883fcc244e06329738f242a36d0c33ee5228500e8f9d4508e4b5b32d863edfe 4fa99729397085d19b25415ed40e62dc2a555d7581c6c98895e635f7d502689b -test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getProtocol.ql 040731ade8fb6cfe989fb62874c405a24256ca3947251d6799c8f53e144d2ce9 d5b37f663a19fba137735b85c070405d687d3e84c1850d93f43b50f77524357f +test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl.ql 7436bb7dfaa471f5a21ea2e3faba97d61bf53f930720999abdcc6745a65f0a1a 0241b2bb07c17136f6099185f65ea1266cd912296dfe481dce30eb9e3d1dd23f +test/extractor-tests/generated/decl/EnumDecl/EnumDecl.ql 47f20279f49388a4850df4f5ee61634e30beed58567eff891688c09942862ec2 8e11af1ceb07cab9738ffb25ac877ced712d1883a6514de5e8895cd1809a7bd8 +test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl.ql 16caf5b014dea42a36b23eee6932c0818d94b1416e151ce46ba06a1fd2fb73ba cac704575b50613c8f8f297ce37c6d09ef943c94df4289643a4496103ac8388e +test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.ql 04529ad447b7b0c529a54b0e0d009183c00cb1dcd7eb16378a7c4c7bc86bca4d 86379270a15fa014dc127607b720bb4d39b24b70d1c0f72ef8563c4144423ced test/extractor-tests/generated/decl/GenericTypeParamDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl.ql 5ae0037ea3fbe733ee57d4c9a77c6dbb9da7c2675f29e5c3222a01b000e950fc c3445704a6c19ba1ea0972538512d1bab4d754dadecb377266053bba33ceb368 -test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getActiveElement.ql f8696eac357db4c69919baf49ab48a2ce972032414e6cac4af17cc8b45cfde18 fda5ce16fa25c68b10fb03817b0b62b759c85c4276bb9c71ccf94d53caf48820 -test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getMember.ql d6cc4bf47ccd2886030480d979ca22b9eae294243bccf58e60a8d8cf3a9746fa 0e1b6be4f315efdd1680b11c48dbe35e38ad2831c09d904862f1e090891f3515 -test/extractor-tests/generated/decl/ImportDecl/ImportDecl.ql e35450ce046e77b9f52bf57a0560f5a1b5a2d009d2f91eb7373d6f0f6e97796b 1d4a4fb376d8f07cf21081867a5b8698f71b7fb911d42e6457e790a08ff39f51 -test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getDeclaration.ql 5333ed76c38fcab69269778e8c7df40ef48470cda50b2f239c1b563976b241c2 d0e0b472c777b386c8c4c83ff6a18093ec9237eef2e96adcb8c7e8c7055a8f7a -test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getImportedModule.ql 40e7c9d069e0c0e3d949c6de07c11fe5fffc45b37f0bfb5980c6b2941f007f6f 564c883c4e353b6bcf63a7bb89d6814f48ca39c170b624c0f87ae0c481e88729 -test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getMember.ql e9960f040d3824e1398858433e90a22924bed3a3a83d59ced742a8db123edb69 9d4ca7ea49b9c2e3987b5b94ff68fbf76b68aa0eb50a2290fc69d534bebc777c +test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl.ql b33916c742a97ea687a46aa337738666a4cf4854b394e3296582be0e8f0b7fb3 d1b4caf8bf04af0f11685f6381e52ca62dffbb6a50256be78dd686bf0a53df1d +test/extractor-tests/generated/decl/ImportDecl/ImportDecl.ql d5d5475363155fad37fd3f60a8eb22c324b8af52a91c065ee5fffe0f855a3b03 ac642144ecd2c5fbdfe628a88394646e5047d0db284d83b6a449654545456286 test/extractor-tests/generated/decl/InfixOperatorDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/decl/Initializer/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/decl/MacroDecl/MacroDecl.ql eb4881d91d1e690c636c66fd4b99f2080ad9be9107a4c037217cfd6bf55f7262 9d6abf1cf95fa591c3b091ebaaa723fb45540f6ef183353b5467f7e8539cb09f -test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getGenericTypeParam.ql 6e48f56b27dd9722722af0297bc7e4b09bf553eedf3878d1ba381cf7b7cfe7ff 4438b07be12663dbd3652c365fe7cd5bcd8441829e5123fa450cd1645886e306 -test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getMember.ql 38958bd32f98f921a163bccd5586c50298b4ea7ca3a4cd4d8c77741ad104df41 852b70f1fb3f623ef533df2be321c58a7d83ec60096717d0fb946288d1bd33b9 -test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getParameter.ql a18f48ca9d1b9e2bd153e0b53d199eb24fa4a3fc57fd4089c1d6422cef8aa33c e20f1f8bea29b486a622825c3b86709a0c820c5e2497d48dfa765b142c1dd3ac -test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getRole.ql ae3ed80e2847f2ee948eaa5969f11a974a149191a86d5f547a4ee3ddfba718ac 7ecd29a5088000aafaa782b550fe050911ee7ed84b5adcdbc6de0d8db0987e36 -test/extractor-tests/generated/decl/MacroDecl/MacroRole.ql 3b4446673db0e3efff7941bbf849cbb7c2e0700db0c41ab3fd7372e9aa3b0795 fd3b4ca3ea7f6ec98535e94ce00c336097d4603dd17af1d7652508775d9d7ea2 -test/extractor-tests/generated/decl/MacroDecl/MacroRole_getConformance.ql 3528a1dafa45e79b6fe25f6fcf9a2970afef8aeba482080fd9abc237ccfc3b0c 3d8773c7fc18e048ea735f4caf690a6b17d7ba0b398f5e68b205c73b9b77bdd7 -test/extractor-tests/generated/decl/MacroDecl/MacroRole_getName.ql 56bc7324c16dd4dc5bba987cefdb0741c9d0d636304d71db67e13463236ad463 7804da20b8ace3e6bdce2739fda4329536c5e846a1b53f9cb543925bc5443cda -test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.ql 00a8664146a134eb7d238a34b879c5db6ea86c842d18f0ea9ea53684a94fd889 9fee72637869bc2aa52d60eff2cf524e087dbf35d0764011754e9b84e95c8d97 -test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnExportedModule.ql e80e2594595d646f857807a719575c5588778e2d116a60d8f222bb58e72148c5 f2d5dcd5a63e4ead11f8f93c0e17ed09a0cb0fd8aa1023d91ef725c848fca590 -test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnImportedModule.ql d85c12bc7fe2732594ca27cf85de1649ab3ecb64c49439b48a18353386e250ea ed58651f5d1c767dcb17a679a780d4248d5de779d7fb1ffff13675867071ef6f -test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getInheritedType.ql 624711472413d1bbcdcd01a805667bdebce7f4959f39016a5b4df60610eed019 e30f3e09e160784ae6170e05075b10cc03df7d3e44b9647be193abd7733e19e9 -test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getMember.ql 2e6fad621c4a301b124336977ba5a6489e143d37e33deb330b993a06bf263069 c4622cd12ecf94fa1e413413ee3e5d38625d8c8ea6694473baf6b6e05d222ad9 -test/extractor-tests/generated/decl/NamedFunction/NamedFunction.ql bf58ac96d6fbc3294c5780000539486d52b7ed9ff797647b83c5914ee9c12cf2 5294555db2567fd78e7580ff899819ed4bb3000c8046a806828ae67098b3e743 -test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getBody.ql 365c3f2bcf802880455e0523bc6d992740d08119cc307751f6accb031f60a8b9 0f0b9ff9c0dbebb0b7b177e01d9082647f5544fa4cb9fd4c2ac228538f37cd87 -test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getCapture.ql 25d10d0d28cdf5eb73dc2be56eaefed13ccd9bf5808480a950f9d91a26db93e9 fcb2af9a0032c60d08a2025688886905c5f3792a6d017f0552bdfbb8c736c118 -test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getGenericTypeParam.ql 60873ee0c149f7a66572c79a7e86e2c15e7b13bae618988e6a70b7f62ea01b65 be346e023edd258cd050645b6bcb2b1dfbab8a3012b473abd33ea1386471a4ea -test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getMember.ql ab250e09cb289eacd7914ecdc45e9a7eafe6f95390fa2dee6257ab3083cc86a8 2adaeb858591ee6e94b36d53c4433fe6c0a88a4543c0857db0cd1d27d8d83372 -test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getName.ql 7583b5d08f9a3809afb50b44c5bc9afa57ba23359080f132f25f21ef2bf41c73 4d89e13890f86e754389f21ecf75153d7c65abcce2b00a08a4911b49f3e5288d -test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getParam.ql ae14b7e9c8dacc609056669a5670f6bd8008ac3a2406873c665a43f41703a987 06442212a80ba6c6122fd6301fb817389abf37afb607e77c4c1ebeb4cc57cdfa -test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getSelfParam.ql 7865a28cc038cf79f7e9d024f33d8ce17e40ab209bfec99771177a1d77819ba4 ab31689af637c6ffa77abe59adfe24a4635be937ef65d1933f5f84c3ba544fa0 -test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl.ql 0e0261995e03922dd427815c2619c85671dc604a953d80d8494e59678a3be8be a428d7835bad44c0599a5235011d981ca99c0f30b3a07fa6c68087563ebb835d -test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getGenericTypeParam.ql 374c83dc94491225480d8d89cb5c84714eec5f0b690e2cba2d1417b1c4f54710 eb1190d2521ec51ecfdb7ad0fa9809e11a5a8a862dbd6e6a5084a686021be491 -test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getInheritedType.ql 68981db766e452118ef9c7dec3e98cd4747c5feaf5659f91a599efc010450c86 af6a67a8b08b26636da566e69d983888cb3bf33bae7165ee486e4faf94b287b7 -test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getMember.ql 7bca8500dc892ad210f12d1152a833d4403d6fecf24d3e4dde513c614d631664 e1e1e41c05c92eb56ff2ef5c53764af290fba40ecbb56f92435930c47a7759a8 -test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getOpaqueGenericParam.ql f6d173a46cec223774ee8ac91333b522f14ac132cfe844ef2b2a9aeb2e526835 7e2fab576df939d919ccb176c3b06bc5c0055a74088ffac1cb56775684549620 -test/extractor-tests/generated/decl/ParamDecl/ParamDecl.ql 4d6ebd63d1f4ba2754223d12ac3663dd287844d18d270764f5b36a02b5f135a9 ff388dad1c27b80fe07d26061e25b75483932e7ee9e4172662c5d1c022f7f7d7 -test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAccessor.ql 2a382b42cbad2ebda489ff33fab56e667cee5257eae5f81d5adbdbd29ef3de9d e807c59dc5c946046ec455147a828c0417578879727eec96c65c13454f40f49d -test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAttachedPropertyWrapperType.ql 7a0b15bda897a0ab8ab6a96166835e558da3cf7d828bf3cc89d57c01b9447349 ddc401516f880131dea231933fafc440f7ca6bc8948318969f657c0f163146d7 -test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getMember.ql eb1956b4b3ba60e9bd2f81b96ff8adf64f362648f7fdcecd59deaae2e0171d0a fef83c7a3417cd2bdcc4c62afc601bc12689cc1912c806eb633c120a98b4eb0a -test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentInitializer.ql 76a598f7252807b1e6cfd58753da8286701697694071838c601b012bdd3d1158 c0939d1c1ed5d9d44cb410a7c9103d7fcb8f6f97071b59db00183262d117a8e3 -test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentPattern.ql 7b7b7a0c2b9da446896ec089bfbbfc4d9b469f55d6ff0156ea2346309a9aff73 d0e2de47ccb6e16bd3ec43f6627fa6d5886f0b097deec25ac1fc9ac99625cf47 -test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVar.ql d6914b0aa2cf831aa4cb41389dbd5686ae9b16182630384ca1fec54e8c19473a 89dd7c0441c73916cc144a7d09477e64738343bde064f818c37a7ed3f3c3efaf -test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVarBinding.ql 846f8c0c12bb8b98e76275b16cec4978c957ca2948e914af81c7f738275997cc b25efe315ca330ddcee3486e4db9b313879328af819b940d95891805b3db5676 -test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVar.ql b55800ca26b39c12aa59076863030ed5d9ed9e6b80cc89aa40959165dca68018 ff90f5597344b68bcf66290b870d567128721c7e69555310882dab8fb26f6d5b -test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVarBinding.ql ba01112d11cc89bb75f71480799cecea66f64e4a9ed43dc15a692dcba79ccf44 20176bc553075971d6811fd8dc928e8c9142b60b262cf16da14d7e84b402ec22 -test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVar.ql ff7b6dc6bc37dee3c7ba1731d0ac251b3d839195bbb67e00dc5d58a172b4079a 73c37603fe51f4cc3dfe009fa0c5a7a22d6fd73f4dcac1fc29c680b14759c695 -test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVarBinding.ql c72bffe648b6f914a08858ccfb065980cd79e177d27a4e685bd3961886edc156 4cff3c7a6314619699349fc61922ef85371c3a854b3eba1935385ac4ea50f9c2 +test/extractor-tests/generated/decl/MacroDecl/MacroDecl.ql 61f092d4ed5972283b3eb0eeec81c8f299496dc548a98dca56a1aadaf8248d1d b9cd637cb0f6f34d8d0a4473f2c212a0534d49891d55593758bb03f8d225f32a +test/extractor-tests/generated/decl/MacroDecl/MacroRole.ql 7ab0dc211663c1b09a54ccbee7d6be94ffa45f420b383d2e2f22b7ccfb8d7a48 92296b89fccf6aebe877e67796885bedd809ebb470f23f48f98b27c2922c4ba2 +test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.ql 63a41a3b393b29d19752379fe29f26fe649dad2927836e24832e07c503d092a6 927fa4056a5d7c65803f7baa1216e6bef9b3b6a223c4a2bb50f2a6a31580db6a +test/extractor-tests/generated/decl/NamedFunction/NamedFunction.ql c6be4c1314ffed2a8a91af2e08ea14ce721195ec993d18ebd4d7b90f4a60dac3 767fc36b64291ab7ecccd63bf74856983830267c992d1347236da314fca73d57 +test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl.ql 85b041e1f791b40ff3d3c58c79e017cebf9ef535ea3d576984b7c093f25aa95b 9fcf314b02ac95fbd2c0e5fc95dc48c16522c74def57f5647dd5ad7e80f7c2c1 +test/extractor-tests/generated/decl/ParamDecl/ParamDecl.ql cc9d89731f7a5ecc2267923268e2d8046aa3f0eb9556c6a12e53b541347f45a4 6d06279172ff2c04be0f39293a2e9a9de5e41ff1efffd41a67d5a921e1afe9ea test/extractor-tests/generated/decl/PatternBindingDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/decl/PostfixOperatorDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.ql 5e11a8fef0037610e695e82a9dca7d172d9e622cf675c92159e45780658f0ba1 ba0bd5706e5ac9bb7ee312043ac2dbf26119e84a177ace1b526fc0f025abee0a -test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl_getMember.ql a0e0e7271ab731c5fafab59779b5d09fa9ef97329867a8f35ddfcf6cfca5650c 3ebb0c8d3ca9c07e2d2422a17a9dc3f3ae3941ffce81efbf01bfbb0f28266a33 +test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.ql bf730c1d84c4f6ac67f46962849bf38c4442bddb1dd70c379735ba889171d097 d58ce712bfd18d470f00c8ab7c023285fa651ab8f4f8dc6bc6c5f33df4de577b test/extractor-tests/generated/decl/PrecedenceGroupDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/decl/PrefixOperatorDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/decl/ProtocolDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d @@ -1144,8 +1070,7 @@ test/extractor-tests/generated/decl/StructDecl/MISSING_SOURCE.txt 35fb32ea539315 test/extractor-tests/generated/decl/SubscriptDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/decl/TopLevelCodeDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/decl/TypeAliasDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.ql db909e46bbe481831ed1ee3e2dd234e497cbc8ed938a68e5a1c5c6c4a1093e00 76ee36cb8403e6363300fac336719a16fd797b9f83dfe4b581c0a8e3d21b91a9 -test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr_getType.ql 9c646eefbd283a23df8ed8e55eb685afa25c0b2e0921eb602b178de62f0baa44 45016066204a86f2c262d083d4a7477d141f5052841347a0298ab65819aa4085 +test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.ql 612ed1b62baed51cb74ea682512de8042c71cc14c99f966f8de33c65c8be7cdf 390197357690dd42d23ee5f0670f1183139cfbdd63f67c7430dd62c51e5d9426 test/extractor-tests/generated/expr/Argument/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/ArrayExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/AssignExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d @@ -1157,85 +1082,57 @@ test/extractor-tests/generated/expr/CallExpr/MISSING_SOURCE.txt 35fb32ea5393152e test/extractor-tests/generated/expr/CaptureListExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/CoerceExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/ConditionalCheckedCastExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr.ql 03b2c373c44b17f1c4bb2e59ae6498d8606edcaa2b867967db0be145347308d2 6a5b9c123a7ba66562a86b38f200a1234bbe8381f59af4b6b4c6640c4bb2badd -test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr_getType.ql dea6fd74bdcb23ed6ede61f151345ee871d303c00c72c1952c3d5f850c0a9b42 14f535828aefcc522bbbbcb63a9911ef562cb78f67bd5aee1bb630b627b5646a -test/extractor-tests/generated/expr/CopyExpr/CopyExpr.ql ad3cd8aff3f63ed4617ae0776f26a86a13cf0b14f90b1d94e4d0fc561ae9ff4f 569353ba4ae3f1e454d465de47bf9faafbce7eb5f9c4a3a5a4d1b9a6741cf739 -test/extractor-tests/generated/expr/CopyExpr/CopyExpr_getType.ql a6e83955f0379973d46a753075e048dcb387981ba1a7a1b80b710296f034bada ced53e5dc099e6ed8bb70219893ea12658df5b6b90bc98f51054376d70412a94 +test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr.ql bb2fc1efbc7ff3abe7cd812f2c906607307c30d160412e1c8be4b6162c12566c ac8a2623b7dfa1b5b406cb6e47d022e341ec3400fa22ab3017692a88cb497c51 +test/extractor-tests/generated/expr/CopyExpr/CopyExpr.ql 423e4b23c2a0b7166fd53457fcad656391f09c6a06e9a9f865ecebdf5b227ff1 9a55d96e7665cfac9adf0477119cb532645645f0a3181c5c5a16bf99f3b84ebc test/extractor-tests/generated/expr/DeclRefExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/DefaultArgumentExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/DictionaryExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/DiscardAssignmentExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/DotSyntaxBaseIgnoredExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr.ql c164e54f841680d6609b6430201f649bfa54c71ee91cd9f45f1c93d0623ed758 2638c431e5260404852ef30e136a7329a60a086c2388fad913f021e0fad14a14 -test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getArgument.ql d14112baba2b31b4036f5b476233894e531d2fca6e5a6441474e04bdf5d6fcbe e7d4143006444d16d800eb1fabece36e3d66241684c3d8bfe2fb5848d569e1d0 -test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getType.ql 9a79c9596f098aa6055fea72e096181ecc11ddcf2acf93fa42d7e40f97993e55 594720e72f010c6f897a2b9c8c7ce3faa0495c600c15fb74f99cc03666f402b9 -test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr.ql 858c8801041988b038d126e416a4e79a546a8bf91225f1190b46c44eef0382e9 7de40ed3b8dcbfeef8cb6ad7f98f477a2dd2eda630c2ed02ad224de5f0bedb1e -test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getMember.ql 3aa9fdfc5cc4a9c95c7a9271d94f531d1491827cb31171491cf939578da901e8 10223bd610359bafefcad20651312b7a821ea9e744fde934ef8dc4db0eca5791 -test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getType.ql c21ae7f270755000dfb03d15aff39736de4c94441f4a1839475a5eccbb58ccce 65993d85c154fe74e4a79b6ff3798b176e3f8d408c42b03955260d333ca3d349 +test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr.ql 55a98af29e0f0ddc8b57b8e5a4c31bd83cd3c00effe096081f0ad842c909ad72 3d6122bd86461e28aa4712d3733d0fa6836554abed51cc2017d6569fd6c08103 +test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr.ql d8c376e073a24922a0f5b41def0832813771dd20f2ff57af334120d8b685914e a3a5a93f213f3212545dde703b163aa61894f0c2c59b39aa1ad57ccf203471ac test/extractor-tests/generated/expr/DynamicTypeExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr.ql 426837e6acd80fd5c4f79f756919c99df132f6666aae9d07274c4b95711123bd 451393b79359a46070db84d8d35ad3c7f14cc20eddd3df2a70126575d2200297 -test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr_getType.ql 9deff1a2a2271c2dbe44b2aeef42f9adadd73b0e09eb6d71c68ac5bd8d315447 bdc07aec1fa2ced3f8b4c2dcede0354b8943488acf13e559f882f01161172318 +test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr.ql 7e9942e6cf4bbd72405b4f1dff3c5bc0f66940117e992bce151e1fa2fca2237a b033e79c3b2d9a776c95ca0ea8adc7d78601cf825eace86fdfea74cd52755413 test/extractor-tests/generated/expr/ExplicitClosureExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.ql 7c4666a86e962726a505e76c57196483c6eb5259463a1cbdb6239f5ccbb33a13 2b5acd61e85a46b1c565104ba6f58b58813ffeba3548dacd776f72db552d5d65 -test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.ql 487c727c721ff925861b265d9a4f78029f04dba3b94e064529d89c7ee55ac343 3bfdadc09b8672b9030f43c2f0cab6395af803e79ddc17089c43c3da93d69979 +test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.ql b48618adfe1eb5fb2f71def3a786a00c1e8c7a6c3ca98a6223a9eaefa2df9b93 10ff1649b73698e2b89a56ba2ce950e5ce32c56eb50ee03151261ed11d20cd85 test/extractor-tests/generated/expr/FloatLiteralExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/ForceTryExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/ForceValueExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/ForcedCheckedCastExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.ql c873205fc042fedf96692e2ff20158f76d355342d97f4a76ebe14cf7c08457be 23a554131367a46fa1629c4779de47fd3dc972ed0e7237cd5ccaa0a7ec264296 -test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr_getType.ql 0ebcaed85409f23969ab4abde51a1c23a46ea76d48c7c82abc179b9f0cd85cfe 34f21b1dc5a189df88f0ea8e897a360240a93bed3399663517e3734fafa1b489 +test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.ql 2e27b79f73c73d3950b1ac356e83b40e791c6a4dd5e88a425fea4b6158aa3ae7 7bd02c429e4dcbe3d40f139b07e74c409656b9dcfb6e996a7d0be24bb96e779b test/extractor-tests/generated/expr/IfExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.ql 35496181655b08d872e6d670053515f591c844250c4da987d22d9eae549b5eaf 3f9f1cf0d50da0d76653e3fa93129b7bc87f7751f8d952e8cc1fea554c24eeb8 -test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr_getType.ql a2bd400ee044596059299fe75eb51467bcd368b747eb9eb221f81fabc5e2b95d 3908c24e5dfd15faa592eafe7f8ab4f458dde29b7bf3121912ea493b5dd020ab +test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.ql 846effaf47a53401f3cf13e5c58d169fa34ffd9abc8f746c65ad9f0da1edebca 37fa3a12598862abb2dd534861de5778638263173f87a8454f09a2f4173a7962 test/extractor-tests/generated/expr/InOutExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr.ql aee0658164807f3b04ef6c0f628e7f8cb72e8e2b8af00d79bf22ce3cb409dca0 e023826e691d3c3ba781c6e0be802dfebf65b2f169b3f8e028f8e8f8f81b427d -test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getArgument.ql 11ab14e77000bb67fd0276b26c1b535c696984975bb6cfdf96db2a003fd0d4bd a4d17e6b22b7f03a34b11249b9092af991efa9b06db5ec9f1020c706c618a075 -test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getType.ql cc48d5a0b2caacfc7ff12f45cabaa170200721506ddd688c26619c1c6a685ae0 97ac2e6232e7369891ee9c4bd9f2f874df4d6a177bb8705446713b28cab20086 +test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr.ql a34bcbeb9a03bd0c88055bb347407f5099104d2d2bbc6c10cada8ac63cccdf7c a553ffd8f71ca792235e306a82e3a8e19bf2cc9ab8fd288c71e2b1c01e3f51d6 test/extractor-tests/generated/expr/IntegerLiteralExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/InterpolatedStringLiteralExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/IsExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/KeyPathApplicationExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/KeyPathDotExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr.ql f52a9003e106bf86082ed0fddfa809dd253746a01b2eb400d8dd11940f89e75a 072424ddeeda48d348cdc847da0467836a9921eb12e9f4133a1da4d75191b1e1 -test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getComponent.ql ccd6b01bfc67abbab5d2f9a64e7d042c2bb47d85bd7c844418f0eda37188c307 d5f2119ae5d153a36eea5d82aa7fd2c2628827a110dfc539e04629f0a5ebd82e -test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getRoot.ql f73fbce049d8918d6fd4001c75fdd32ae4cb4cc54d48d8a3681ee213b00b3c59 147c93af7c138ddade5542ba43cc6317a91cff4eabf5d2e2175bb4899f8ea77b -test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getType.ql c7e20412261a1a2df5bc55e6fafaebe27c33b76ebac7a74a2c5d24df4744aee2 b91c4498d52bcc618a1af70c41f8084368dc7f46c132c8428bc9f94dbf9d0f8c +test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr.ql db48f476e6d7a1b179d90eca624351232fd6cf08db87e06e4967256839da47c5 6aaa88e54d2a58a867223d5c964da83d3e7fd2d943f3f3b9b9f2caa4bb72b7b5 test/extractor-tests/generated/expr/LazyInitializationExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/MagicIdentifierLiteralExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/MakeTemporarilyEscapableExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/MemberRefExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.ql d424b72dc8d3a443f7d0c90d3efa660fd98dce68aec971afc62f99f5243080b7 d0cc33345c0aeb00cb88c1e952897ef896ce02edeb9d2d9785aea1ea68fdfc6a -test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getMember.ql 9b7ea8241e213758e11c9954d912200641d723302cc3f9be53deeab50b8fbd06 ddb041799a2c025c2ab2d5dcdb263fc9b4eee610dae377efff08a15d6c7701d8 -test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getType.ql 52f2a341d784146bde524b06a96dba2b5a15190f8a56288355282693635a9224 bef08f3ee3f2d33ef027329827382eee57a4889eb03ac73717d86675a7934d02 +test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.ql ea84ba5e032d499a4ef941fcf22bf268bc3dcbe8777d27583456540ba2b3f77c c9cdeda32de8b7ac8b8cccb259458d9015d1564fae35773c041f8b48a899dec1 test/extractor-tests/generated/expr/NilLiteralExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.ql bfd0654446bb5ac4326cbc637024f68fd3dd3314ed104d93db4a818cebe1c0a6 2fec0d977e211b154b8c90233be05730fd71d66489ed2c384e916befd8816e2f -test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getArgument.ql 2357a88c0b80b702e26afc7ddff51c564136682949a456ede1287fca37bbe117 aaa956a55f895e979948b44df3c401cd02cef67184d41004534df12ee8a19212 -test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getType.ql f6ea109525c2f41bcfc15a96246d70acce844510ae72d8f04dd4e03e6573e733 c6ba2f99c977616a62abeb7cd4138a9e9748c92715163f4238a2f0e4c456d560 +test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.ql 620878a3c2f8dd25cfb1dc400b22fa20d549793a27edd419df0693bfd1d7b987 0af15ca80f025dad9e343e392e15f40b348b2efe670cbce230f4ebe1863ec45d test/extractor-tests/generated/expr/OneWayExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/OpaqueValueExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr.ql 9657d2a968de2bcac5839701c6102f87f6d6947c50b1b3eef27729cc5af4b9ba 99f1b3a0f0186242a5517fef226c4d7c1a3ef5f9660844aee608b3918727db5a -test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr_getType.ql 37411aa9c53dbbc5f1c32ec9e24a8a5bf152ce11d15b1d78078e0fce41b3a8ec e043f9f86417efb480815cb04ef7dd2b22340f849be203935d523d9f2e8589f0 +test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr.ql 5486acdbada57e8b99e129b41fe7f674f42aa5cb1c1f01d7e3d39ddeac838db2 849a5378784006c65b8806582a8c5aa98642623a13a17e4d879ade4f682ff733 test/extractor-tests/generated/expr/OptionalEvaluationExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/OptionalTryExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/OtherInitializerRefExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr.ql cf429544725932933dcd3b0ce2e53ef8d63aeae6ba64db3b65c307c03243fa10 0e0f52920d0c9277b6d673115314df7e7f76434964e2200ca6245cfc0ae5cf10 -test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr_getType.ql 09c403da048393b3b0b82432991104267c4e6c7daa5793641faabb572c09f129 b6ac95f43a761937dc9f50bdd57a7d5e02296ea4d337e2b566af534e4c217137 -test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr.ql f969396327b9b93d936513bdf036f9e6fac523318ea03e03b4064a33525d36bc 452527d074d72182f3e1898fea8d5679ccfccb2ff73af70f7927850d49d652e4 -test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr_getType.ql 23458a971238804f43baab06090ab3a281134db112b4908771c23d91c06b0b18 c5a6c792977304ed6e87aaf5e4e983055d00227e92ba661ff87adcefed0532a4 -test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr.ql 8f7d3eae5fa5e3e210b8357ced549944a064ec3193de695b415f1cf62d25eb0c a17bca0032f9747d12a789774a19d3beaff35b911ceeebae3484ae3d8824e153 -test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr_getType.ql db1ed61c2b644e73200d719565d8e0183b2dcad0b11e65050315c38cf82a693c 961611d2055ff1defc060f117cdb7790c63cd0c8a45d182b8592de54862a6192 -test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr.ql 33e6a49d0ae7773a1c70e765d216de1b68c8df5ed69fe16f8a44c1ba39323059 b6889eb338629a3615f09c89db2d146af84c40d9915b1390167175ec50721099 -test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getArgument.ql d5eb8c28926a1a22df7880b311f9e91aa80e69ffb978fdd4ed431ab4e368ad84 744413eec3114687e0b0f9d0fc7b8118b0938117789aedf1dcd6d8f046b254c1 -test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getType.ql 49b0bd3f1048c6ceb904a16b084a6646ed587f55578c70ae8c57b2fb3c78ed68 a46e8af5368774166a73357c2e245decb677d81791c355f2fe74e41a430d55ad +test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr.ql fbcec327377a2f349824b82ba9d17556010cce52ce60d28ca4efee045d0d4225 2155d566e460db6b6693b3bdf93e304ed762abf5edf5072c1b4cc3b4cf3d18d1 +test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr.ql fbf8f8ee6411c1c4bf241710eac37dde39efeae70a06f4bc7ac16dd941b52937 63e2ba99385a135a5503db87db98ad16eabf9297178baee42a9d4109511c08fd +test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr.ql cf89d8c42bcb31ffb33283655823ac7afb086a44ba0245887cf4cef108f71ed8 1d7bc7969aae39435178177cb0494baa20e93b3195de5ccc05a05db123cd2708 +test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr.ql 0fde7c56085ede00a4e5bd33c00f51cf7bd3cf678312610b12a52399d43700eb 1d469792c22b20fe7e317d46c40b533756e279a6c2acffdfa9b1faa156d43c24 test/extractor-tests/generated/expr/PrefixUnaryExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr.ql 21122074264476b5edae71790e7fb6627e747f8c5d44c8d1176a1767cc17605f 68d6d79312fcf229b0eaa7be69f0cc9403143d128c3058678d73b9a1f6b4e41f -test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getType.ql 6ccc25288e4aba93066a8b8cdbe5c5d82d346107836f2d1748fc38b43b8d01ce ee6afc9d0c6dee117fb96923874a19f3dee9d8e617c023c24daec567c272b364 -test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getWrappedValue.ql bc827e88b77cce3f0f0df3a5dbca2cdc35199a3f566dc25b8f23edcb2f56e26d 68d9e91f44bd9e75f115aba6353d38979ca5b37f284b6357c67d5cf21630462d +test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr.ql 9d5ed8460a0c906a44f7693fec6288313cc3ee73cdb09c1a54af525093f2ff10 c0fe8a5a88ce747e6f7977a2edd6123759725b6fbbed7f81e94fb1a5550d22fe test/extractor-tests/generated/expr/RebindSelfInInitializerExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/RegexLiteralExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql 57837f6c123a5e89266b81feb7250f917d14b4899b426984304b9e970da7c4bc 338720ee352398436a054f46bc69425ffecebb8c9f7d2cb04b1a26638c2c9e7b -test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql cf99bc20cdbdafc77bc574ea0c96b47b04941cc108864db8e36b82a106c00bd7 3fa585eb56d89c252f399be3f46787e3b31c69b419d88c0c9acf1a9aecf85791 -test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql 95598451a0ffaa0f2aeb1e478a507efcc380c30d10aa90efefb6cbc14a9167a9 f511a9a527c68b76d8591c15c5e63decd56d9ef7b12d470889ebf4518bddf6d0 +test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql 5414253ffcd24b16a2725d7e1f8b543dac9458e32d610a7722ddcafd00d31048 3bdd13684344dae067612345cef43b4a4b13ebad3157e3dd76edce4a40895df6 +test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql 5dea0a19b45feedee2808d81cda006b94c15d253ea80ef66dfc67d199bfec29b 49b07c7695a47935f1fdabbb547c6508360bd5269fbcd4743a486a6f9029d6c2 test/extractor-tests/generated/expr/StringLiteralExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/SubscriptExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/SuperRefExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d @@ -1244,8 +1141,7 @@ test/extractor-tests/generated/expr/TryExpr/MISSING_SOURCE.txt 35fb32ea5393152eb test/extractor-tests/generated/expr/TupleElementExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/TupleExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/TypeExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr.ql 93ebaff4938dd18f3626533cbf23094c4d7eac7ce84325b743f78dd36d8831e5 c3bc6b6f7a18ca5a32084207fac2468f6306b81cd6a7af1ecf117b1a37147266 -test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr_getType.ql da07880497965cf7f7e28fb3c3a8e8223368685fdacb62d7e562757f01fd521c 9be644216f6adf12adf102ecfac5b3820c2fe7916a86586744ae71d1c11d9704 +test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr.ql e4f1cd638a06cfd32e987e560777fc94d016944f4c87847c4bb059bfbba48dde 3864ad30240bdccff665f77621f361e192612c95a690b6f7b31ba62652bf6b00 test/extractor-tests/generated/expr/VarargExpansionExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/pattern/AnyPattern/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/pattern/BindingPattern/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d @@ -1263,31 +1159,21 @@ test/extractor-tests/generated/stmt/BreakStmt/MISSING_SOURCE.txt 35fb32ea5393152 test/extractor-tests/generated/stmt/ConditionElement/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/stmt/ContinueStmt/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/stmt/DeferStmt/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/stmt/DiscardStmt/DiscardStmt.ql 0170171a2b75ba6beab62726a2b6a1530b11fb4b5d9b95b645a07f1671d3dad4 ef8fad038be90f35930fab0c374137e200557051cedaa89ef1cbbcaf41850530 +test/extractor-tests/generated/stmt/DiscardStmt/DiscardStmt.ql 0f4ce5a2ea261ad66f7d9aa9fb4c2917d0ecc627c1d660f203c0b3e62550f463 6dc9e5e3d83c5b94fd0a72a06fc3046883f1766dcfc91b7e7063bf1c66582f69 test/extractor-tests/generated/stmt/DoCatchStmt/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/stmt/DoStmt/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/stmt/FailStmt/FailStmt.ql db2d21fe1b01949180ff11416f2dc0a6a561f9ac9e6a5654156f947c584971de 2cf787b54819077dd2b4da870b722396ebf953e05bf0b1c393affef2b1fe11ba +test/extractor-tests/generated/stmt/FailStmt/FailStmt.ql 70eb21a0717e68bcf59ba9861d474aaa5f7791c39fccea4015bca47fc8d082f1 18eaafd230e4eaaeb114466db17bb480591af6357d5ed7bafe74a3352b806690 test/extractor-tests/generated/stmt/FallthroughStmt/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.ql 093a6619940636974e2a59f085937f9fa8645a134199c130ee99babfd2c1f1a0 068daffb2da1be9135eb818190926af3958d503c3c61de2659c0c0e167b2d11c -test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getIteratorVar.ql 1b8689dda5defd45c8bb743b30d723ed7b0c80ca54b81fb0f5fcf76620ec4ef4 1e48e40cff37194e0ea2b69997177237145fa1070e84c8f701a03d71416652b5 -test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getLabel.ql 1cf0663cd16886d4361bedad93759ab84fcaf54d5fbf16d7d2f4108f74c38683 129778f5f36d10e8a10452f333304fef9b95919cfe367ce6ff7309e2d3f3ab3b -test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getNextCall.ql 503106f20025ec479ffe46daf13ff80f5d824b657c43da8185ae2d74af8740a3 551e33f70028268e3b3790c17907101be768c42811b62978ed10ffc0a65e25d0 -test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getVariable.ql 749149b5164f493bb49726e1d54cdd1c85607566c0ba7adfc3514ea953b1f40e 1695a631aeeb47e6a0d22ec18d713f1fe2f730684269fc6e50c70020a78fbf3c -test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getWhere.ql 536af56264054a7af626a5ca4bb5bcc5b8f13299d11c499a110e4f12e2c166b6 bfd8b355342b0a03ced022b31d39e9adc6d7820a28394315392a9e2fc7647555 +test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.ql 72fc91069e68f975006d6d49a54ff92a23a27706a6d5d15acdcfef09cafa2f69 38a4c56c7ed6ec47b990ee79ae2fe45cf287db474b6dbf13b4e781205894e27f test/extractor-tests/generated/stmt/GuardStmt/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/stmt/IfStmt/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/stmt/PoundAssertStmt/PoundAssertStmt.ql 46b702865ef1dc4d9d8332a3d68ba295a1f8ce9737dbcb07a5ef4c701c021789 07eaec1abc763a4f2339466fd0f06d12c4ca21d9eeb21ab1f7366916dafc4854 +test/extractor-tests/generated/stmt/PoundAssertStmt/PoundAssertStmt.ql dbe340f6f2468a6c5ff42785101d3529ca11ce49d28cc607cbc842678b9f0b61 96aea7859f0a606ea032850339d78907406dcdcc2d3ac5b15ea8c7bd2cd36eb1 test/extractor-tests/generated/stmt/RepeatWhileStmt/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/stmt/ReturnStmt/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/stmt/StmtCondition/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem.ql a1e1e34aa999175017c4dfefe91086d2ebd6b9b95c1680c95f2f43df39ab9487 421c8bc1b3ea40f67790c11bb414e7aa9025465a690421a23448842805f5f759 -test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem_getGuard.ql 1bca85242d8513b9300673f666938ed59ef7f610854d97a820a09b3bab661188 1f15e6b2a29eeca1b9186e5bfd61225dadd6632bf727c79f1611653031c27de9 -test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt.ql e7faadfde4c2da17c06cb2cbe9d8c7dee6b2641eca0cd13374f8ad5ed6f33e14 a96d1b1e169f296b2a9ea959fcde417521e04391e58372ed04bd717928548a02 -test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getLabel.ql 287245a6c6770c1d3a780baf6d93ff7a012720095a770f2699a344032a2fa146 d3ad9559c06fd3c22c50ecdb92118a94860ce4d872eb7ce53c47b3053e47e716 -test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getVariable.ql 6da5d7afa12c5de2a9e012aa2867d97c563945ebc2cc05961934070486b4c70b 546b7cbe145302b90cc3377c81be06d47248e7fe4e64af2ac455ffee8033aba4 -test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt.ql d779d040e0d7aa77a2445c0217c5e5057b42b18b431fb2a785c0f0248ed98baf 281be139df50e84a8d390e0fd80a7d6e2ac07855f488288511b4ebe2d6ab187e -test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getCase.ql 7df55f86cd90358245ba360160e41ab990f530ec2717a0b99438f248d879e289 f1ef8e30efe60d0ed7c312a83a789f1dd113e201bc5caff339daed1317500667 -test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getLabel.ql 5b6a5916ad1a04f23fb79923f4df5543c55cf187d7d6e1cc7161cad717d3ff15 27eede6ded0c4d446f63c10c232afff9d5241014bba5c9a6e6c52c25231f3c13 +test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem.ql 5119caff56f18954f8d01f21d7a381de9aa7c35cc8a7515205542574f9b161c1 5e122758bc0cdc44ad0d292dc5bfcfc36717ab5db3b363202659d0da5c6469a6 +test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt.ql 1460fc714ab50c56afd608934a9a1081104b99c032b6d77954cb6e9dd7fa33a8 c15d9755ffbe45d447d55c5408d897cbff647ec97a458090c0ad9cf597e62859 +test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt.ql 1d010c5ad6ece987163696d629ef073b6476d37794cc080ad5fcc4980dc9f64b 4b39d3945ef7419b277fa94eb15878b20e46811a5bedb03217577f507145734b test/extractor-tests/generated/stmt/ThrowStmt/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/stmt/WhileStmt/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/stmt/YieldStmt/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d @@ -1295,58 +1181,42 @@ test/extractor-tests/generated/type/ArraySliceType/MISSING_SOURCE.txt 35fb32ea53 test/extractor-tests/generated/type/BoundGenericClassType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/BoundGenericEnumType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/BoundGenericStructType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType.ql 5838694bf4d035aa764e25c9bd768f63ddea7b9b1cbd0386401c24f33b7fab17 cdeedab8f8b4e28a98ee6d2775e77cf359df541827d1ea592c46ed43ec76cdb6 -test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType_getWidth.ql 4f32fdf145ee62a4bb9e29175356b7f9f47bceceb7ee20a4fc93445d99f33117 a1454fa426f528d5ed8d98a84454d1e8118a4f1bb745d4ad4fffa69e5c798180 -test/extractor-tests/generated/type/BuiltinType/BuiltinType.ql 0c50885643a7b460bd7da1610f404a983085f8022adc4dc02c337f84a06385fc 2f6e9d85c2a8d7f0d3f248619a9025c33f907028e132f8b67056719a3808f771 +test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType.ql 78d10029fa696ec4bcc48ea666923b98aa120a4a66004c491314f4abf283eac4 d23455d2ec38a1bba726d2e8fb349dfa2cdc52b8751d9caabb438d0dcdff6ab7 +test/extractor-tests/generated/type/BuiltinType/BuiltinType.ql 83a861b3ad63bed272f892031adc5bc651ed244cfcd53fc3090a2cea3f9d6a8d 197689774e28406b4bd798059fc57078695b43ca0833a7a4ef9dabd519e62d0d test/extractor-tests/generated/type/ClassType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/DependentMemberType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/DictionaryType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/type/DynamicSelfType/DynamicSelfType.ql 3214d8a7fcc076c880988b3ab2079ad0d77834e7dedcb063c6640b2d92ad2a41 3306c659f68b132941b5d013b2414122f81bfff6c7cbbabf6fce4328df38a9f9 +test/extractor-tests/generated/type/DynamicSelfType/DynamicSelfType.ql 62da270e23b080f8ceb9ec5c130f84ccd779c43cf30c88db526ef061269c5ce9 390cb48fd7873210f5f5b4e8f275347348336a1e8161c72d3fafa5f7fee90f93 test/extractor-tests/generated/type/EnumType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/ExistentialMetatypeType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/type/ExistentialType/ExistentialType.ql 5f5c1e44519519eca7bb8bee28e58d79317c1b972549bbbdc135da11cba9a62f 3cc92fa9fb139485aa53e5c13b411360ba3cd1185ca497d84251e5b9212db676 +test/extractor-tests/generated/type/ExistentialType/ExistentialType.ql 7e09bbea166a4f269ecef1113229e98dfd7ea68ea5d4025af492fcce48698420 a4d00ff4100138020af51e8264d1d243156e52ab417bb150d33e9e1cc8cb0a69 test/extractor-tests/generated/type/FunctionType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/GenericFunctionType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/GenericTypeParamType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/type/InOutType/InOutType.ql a3591003defc284ba9c1c8492ccea5f46ff1de2d86a2240da3a501598d236f8e 4915db95b101c199dcf194e8b974a3c7c94f8ac1d4d9dbf6144822beb4ec0b66 -test/extractor-tests/generated/type/IntegerType/IntegerType.ql 7c911b67a801d8a4f0fe695c66318f6a08278b632adacb58bb10578474a43d49 9590080054ad1280eecb97d2f5265de8c2d2eeca03af24654cac5e2818240e85 +test/extractor-tests/generated/type/InOutType/InOutType.ql 611aea3776fbcd3763d798b58eba36522db9d4f8ae95dad133562abc6b9d0a9c 184e35f8ef3aa77b52d7d6dbd784fe4749793c50f0484195bd91f49bc2838509 +test/extractor-tests/generated/type/IntegerType/IntegerType.ql 6f18b3b5b4c53ca5d5302a78b04fea929bce478fa5c342f01951379a405b4c8a 486c1ceef03d02b064381ba514ad19eeca250c83ce54354a08c3a7c94bd4fd11 test/extractor-tests/generated/type/LValueType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/MetatypeType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/type/ModuleType/ModuleType.ql a65f7a166068b3bc622864b4b7464a25e41cd8a02f2bdce214ae59475acb9893 89a165e1c0f5b1de549d6c73e893cbc520832d534f801ba5d9144ac2ae3a9b8a -test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType.ql be3663ab96b8c566ca07b72a40c08822dda7feaac65f9e0a27fee0b139dcac22 d031a8f27d4a57248c3b9edbbbbc9bbfeac8bd4507406ad3c21fa2bb241e7a8c -test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getProtocol.ql e14e32f950cc38b2b47210d44391c619ae14ed9a836a9a9882e26e6981b32926 b0f4988b72f2146ddb71d28227aa3f67fd6c6de1f754c4d95d4847a1b5fb7ef2 -test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getSuperclass.ql 4a7b5fd2a764d8fa50b9408e055d34160064dfaeb90fa64b1854fda1f39e3385 0d70b14dab911499c2275476355332f1b5048150016e978c2835cb9f7a8244f9 -test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.ql 8f3ccc86bac852ec6d6a4e9522aa07ca66ff410b586b8275e35b7c0745726f05 8b3224c86f29b22a927f4c2ea90b120732eff7bac6c96d431bcc0cd3bcd7c1a4 -test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getProtocol.ql f3da83a9a32d0945ade1015103eb911a6d8a5420980fb3c2ee9b6884ab4d0be4 8d5025b9432df8b0b3d3a27f9228befbbb95f550528c4e4219ca4e6d942e1e4b -test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getSuperclass.ql f64968fc58d977e5c867010fdda3fa40162a2203f65067082b2d6608e3a31af8 f5ef6bb98c1f7a280fe5b84f19884dff3a8d073a410b81905307a8f41e757761 +test/extractor-tests/generated/type/ModuleType/ModuleType.ql 7d78142dc82b06e454b9875a47890d5c2364e51f6e496640d6c4d20327f535b7 cecd45f6a4b0f137cdd7e694259044016ab01da6a42e73c3a361b4d00b594133 +test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType.ql 86bc4823c19da17cbcebe3a4634eccff0a96cbebd174d8d4b1610e3fda3f8bdb 82179cb6e188a3a271428de4631c2a6fa4cec2e65a628fb56c2cbcff8a6a13d3 +test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.ql fdbbc1cffb209097480596d3be405188d045758da03a7980511d56874690b9c4 9ba8ffc028988a21cd751d25f0c363c3c37dfc0a13629379c8ca94b6b066bb7d test/extractor-tests/generated/type/OptionalType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/type/PackType/ElementArchetypeType.ql 961338f1919320b6ba8f597f7c92b715a56a411b03fd6911a008f9d842a01298 cce7edb034f5257c7df3bc193dc972a5d95be55c51a1e76143566dc8bf003323 -test/extractor-tests/generated/type/PackType/ElementArchetypeType_getProtocol.ql 5f86e39a8332e5f5cefc38498cb5cc88a226e48921ade2f1541aa9b0ed58f1cb 7f46a7c01a47a7386363960dd865c564927898327ff3677d1239be1e051b4728 -test/extractor-tests/generated/type/PackType/ElementArchetypeType_getSuperclass.ql 1ff8e6414c03eb1c2a989febcf470b659d93b99d82df3dd8da52e300ae9f6a1f f4bed98c9e1c379eb013a44486bba66d523bae22ce2001afcbeae4b7dda96e29 -test/extractor-tests/generated/type/PackType/PackArchetypeType.ql b518d42787b5bdc1cdfd902c2823cc900c288f238403dd9592c102c7f59929fd ea53016b56c25734f4ef88c907183b438becfd000f181ea1f22545e200f9e175 -test/extractor-tests/generated/type/PackType/PackArchetypeType_getProtocol.ql 624112c36fb26ccb9954b30ca843c8a626e263ccf5823a6d7deb24393fa9b452 dfd5f27860addc7d9385f36b50dfa72790f212eec6a40de0a9cb81a0327cdcb3 -test/extractor-tests/generated/type/PackType/PackArchetypeType_getSuperclass.ql 9afe056468a5042cf36437dd96badeeeef0019e06ed562d75349ae142ce4fe12 c8f8fbe02636bb8397d6b8f69eff540a386e8bbc977cabcaeaa0aaa90148526c -test/extractor-tests/generated/type/PackType/PackElementType.ql a26d73996f04ddb5c4e8f89c5e5587cafb0c147669f9bd77e66971f89f708c89 ba9c89e450666411b6ff3c09916de794099676f935706adb9c216c8b79f643df -test/extractor-tests/generated/type/PackType/PackExpansionType.ql 6f0c75a1edcb627b7589a68767da5146d09fdc428ebb80a6ab81704035f19a11 71580fbfc27f2e8b1b94c687692b29e1199a61b06eeec2a264a3e702ff637f29 -test/extractor-tests/generated/type/PackType/PackType.ql cc1d69305a72720566ee10d55e0248c99f7b78ade0334905c4efa20f940df451 94b3dafd5fc037fd2ee5433c4d731f9fe9c0e1d6220298949fa45735647ac01c -test/extractor-tests/generated/type/PackType/PackType_getElement.ql ab01262c3c6b8d29c89d83463b0c9d58640d9fbfa705dfeadb458380a7f17d50 290458051bb49dda441c3f8f0c397c874c4022ffcb58b5a803f138b0f17fe2bf -test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType.ql 74b52173c4d39d74497d8e2d3d3dbbae8a1e84190642af2ab786464e804bbfa7 9a6a77b65c345430c768c660ae66755671d034f73c96a88b2935fed66d96b592 -test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType_getArg.ql d51d20195b1ad8d31a3b2d165b81b90883d9e55a96b1b421419814964bb05519 f354fe8f23507e094a2d8ec75cb9d3ab6426c009bac02b7a96dae6970b0377db +test/extractor-tests/generated/type/PackType/ElementArchetypeType.ql d4d695dcd0e723cdc9f196d828e22a3650ac751f0488e257f3bc2e2afbc343ec ff20bf849e18621b6193699bf58b3d6d127c29113dc996100bc18938fdf4658c +test/extractor-tests/generated/type/PackType/PackArchetypeType.ql 56e7f72a2d6f03e394a5e7103e337aee06b8e1fa9198d8f6123c44c4e33d5b57 e7259313ade883242bffb8e812da64c77108b55acbf39d7b8cda47251ee5f5d3 +test/extractor-tests/generated/type/PackType/PackElementType.ql 8f78e329812bb16d0ab644944c3dffba9701dffcd980018accf22c4540828315 adf4b155e1d5ba0c54177b9a296e0e5d06d2566dafcb43d60403fcf94a009009 +test/extractor-tests/generated/type/PackType/PackExpansionType.ql 4ae76353b2312ca356a11191b3b8c235fc5a394b91c9a1de48da1fbc9986f14c c676192e609e434c1c617d9c32752f39d2aa7119a9c00bd092f30734099c89dc +test/extractor-tests/generated/type/PackType/PackType.ql 9d235d6c608da8a3f2eaf3f1bc32a130cc36565c27d60f62654a2b4f3c95dfb4 760d5daf96ec4a903fa09b6ed3687f8a3e59525b1d621b6866cc7506ebe20888 +test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType.ql d72a5ea146d99b43e0446f7e2c5b6999383de7b6962bce2f14c616a28c75a6be 0892b65674289bc7d1bdac0b7ab6da267876765641679ee2821aba258de563f2 test/extractor-tests/generated/type/ParenType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType.ql aa737251785d2467ed77f4a6710ff81a1affcc93fb974faf28244ab2b70cfc0d e6622799754179ba47e0a278f914980c3c7f51529cff97eb93e2759675e957ec -test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getProtocol.ql 96af09aefc45241d7d732cee7cfa91ff814f83a40544ec0835e2ecdbd05dcff6 45f06c1395f5f17430b7bed1d2c8f43c7380b027e41b4fe5046a8f3aa37e7dc6 -test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getSuperclass.ql a3877509c52ef4c9212bb4e266be6cc4945cde0fe99319a61a871661eeafbadc a476de7749334b20d2547971d8646662e125c3d0435bbbb8001fa4e88635e373 -test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType.ql 91a151f8ffa2050bc9434cd02929c3ddadad589e85e102d1904cd41417bbdd8b c68994e8101b9392a704de138780152c30f91882bec9587b6a6359e7a37116f9 -test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType_getMember.ql 08856a749fa3bebb09364b47d63d1524672572e1c26c525879af24d34920a68f 7764540b5fd98a6540045c6fa91027ff9344f603d77251c2d803afb966bdab2a +test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType.ql 4355fd06fe5e9c775ce58c025f3a8383d94e48fd8461b69325905da551001e5a 8f200f8517191b6db86c65cbd7ef4efa537eb9b26d6a417112d25af5aa9632fd +test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType.ql 5e9d97fb048d108fe3d52a69da929f93cb52afd694993cb2ed66155cb668ed0a 40888e1af510016ad7843f0e5194e4af10f6929567b63532f66667f466dcfb9e test/extractor-tests/generated/type/ProtocolType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/StructType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/type/TupleType/TupleType.ql 265690da7f0733ca88d20efbcf07c0c452f4d44b49488f624f2673670cac56c6 2da4185f0a870c38297b58a61b295531a140b50db9be31a0c298df7921adb3ba -test/extractor-tests/generated/type/TupleType/TupleType_getName.ql 79dfaf4d6aa52572f4b43e89079876249949b1b335168cb30b6c6f6db00423ac 17a35226afc2392bd4c69eaf9cf896e0556d28a2d9086c33b5686985959798bf -test/extractor-tests/generated/type/TupleType/TupleType_getType.ql a402d5c07829ccfde5521fb5b8c5d6846126e2bc8ae0a0254a8353babdc2f2e5 ccdcf490e4ec3c2fcd3c7b1b9ffddcd0b85229b25db8ab5c1802866c8e3e03af +test/extractor-tests/generated/type/TupleType/TupleType.ql 4b7c7db3decc5d901658e1a72943c48d661f5a69f0f1c36972bee2200d0532f5 2539d830cb6dd71789072bd87bd35a260e31dbe7ca7208e84f087f13fd7c9561 test/extractor-tests/generated/type/TypeAliasType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/TypeRepr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/UnboundGenericType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/type/UnmanagedStorageType/UnmanagedStorageType.ql 841cc663df467772d7af7fdfe88dbc4f588e4f6781ce1f3cb2d4f3f75444bd95 4a64c07f3bf06792e052b154b5a0a6fb62575562935603ad63ca6d81de5dd04f -test/extractor-tests/generated/type/UnownedStorageType/UnownedStorageType.ql 6369df2814fffb6f83135bfaa610d9dfec106459470b552e8d875d74d2fae8dd 56fba1c55bd6d1f149a5a92d98b3dded158898dcdcfdd617e7537a435508a6eb -test/extractor-tests/generated/type/VariadicSequenceType/VariadicSequenceType.ql d52a0248c8f0a0cfb2ff01d470d66d11a38fcd6a12314d8e6eb752e6aa1f9b1c ceb3cb90ca6f5e5b4724890ede6179675d3ec5d834b7067a80c99e7951ef3d3f -test/extractor-tests/generated/type/WeakStorageType/WeakStorageType.ql 2b37d5fa22a78747c9ec3f924e9992f7083d3e8a3372a0c9aeed6211f47930cd d20ba54dada2388064f060967bd8577605baa30d19bb696339b7449a14fc1dbd +test/extractor-tests/generated/type/UnmanagedStorageType/UnmanagedStorageType.ql c66172a8fd9c0e9efea6db0d05beee176b02cc65d838c95f2b4f995dfdd89035 57b1e46011eaaa91472d6c58f15587eadd44341ddf8d500a0886ebe6962fa431 +test/extractor-tests/generated/type/UnownedStorageType/UnownedStorageType.ql 678e0cb7fdb9ddf6cdde9a68b6f6b8e3ff915681e1a5caeb49b3f1da5dfa9edd 49e2214c32edcfdd7a867a6a490dc37de654b1cc61ca0a39270bd71daaafc2c0 +test/extractor-tests/generated/type/VariadicSequenceType/VariadicSequenceType.ql b10c35a7500d8e5847a55fd076b0a6bfb3b6ef8b53a13a706dc5c9925727d7fc f288b3bfc5c64fcb14d2fd92f88b1abd406786c78bd22980128301599ed1937c +test/extractor-tests/generated/type/WeakStorageType/WeakStorageType.ql a5d4d46ed3162dda95fae4ba8b21150370329a3454c7854a5340f9b948e1f6ac 429a7f9a9eb69b5e6e87a5d666f0ab974380bd2bd9c79f7a4654850aa9006161 diff --git a/swift/ql/.gitattributes b/swift/ql/.gitattributes index 761b2efeb7cd..068b42749676 100644 --- a/swift/ql/.gitattributes +++ b/swift/ql/.gitattributes @@ -1035,110 +1035,36 @@ /lib/codeql/swift/generated/type/VariadicSequenceType.qll linguist-generated /lib/codeql/swift/generated/type/WeakStorageType.qll linguist-generated /test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo.ql linguist-generated -/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo_getSpec.ql linguist-generated /test/extractor-tests/generated/Comment/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/Diagnostics/Diagnostics.ql linguist-generated /test/extractor-tests/generated/File/File.ql linguist-generated /test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.ql linguist-generated -/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getDeclRef.ql linguist-generated -/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getSubscriptArgument.ql linguist-generated -/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getTupleIndex.ql linguist-generated /test/extractor-tests/generated/OtherAvailabilitySpec/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/PlatformVersionAvailabilitySpec/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/decl/Accessor/Accessor.ql linguist-generated -/test/extractor-tests/generated/decl/Accessor/Accessor_getBody.ql linguist-generated -/test/extractor-tests/generated/decl/Accessor/Accessor_getCapture.ql linguist-generated -/test/extractor-tests/generated/decl/Accessor/Accessor_getGenericTypeParam.ql linguist-generated -/test/extractor-tests/generated/decl/Accessor/Accessor_getMember.ql linguist-generated -/test/extractor-tests/generated/decl/Accessor/Accessor_getName.ql linguist-generated -/test/extractor-tests/generated/decl/Accessor/Accessor_getParam.ql linguist-generated -/test/extractor-tests/generated/decl/Accessor/Accessor_getSelfParam.ql linguist-generated /test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.ql linguist-generated -/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getInheritedType.ql linguist-generated -/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getMember.ql linguist-generated /test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.ql linguist-generated -/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl_getMember.ql linguist-generated /test/extractor-tests/generated/decl/ClassDecl/ClassDecl.ql linguist-generated -/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getGenericTypeParam.ql linguist-generated -/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getInheritedType.ql linguist-generated -/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getMember.ql linguist-generated /test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.ql linguist-generated -/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAccessor.ql linguist-generated -/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAttachedPropertyWrapperType.ql linguist-generated -/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getMember.ql linguist-generated -/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentInitializer.ql linguist-generated -/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentPattern.ql linguist-generated -/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVar.ql linguist-generated -/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVarBinding.ql linguist-generated -/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVar.ql linguist-generated -/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVarBinding.ql linguist-generated /test/extractor-tests/generated/decl/Deinitializer/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl.ql linguist-generated -/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getElement.ql linguist-generated -/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getMember.ql linguist-generated /test/extractor-tests/generated/decl/EnumDecl/EnumDecl.ql linguist-generated -/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getGenericTypeParam.ql linguist-generated -/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getInheritedType.ql linguist-generated -/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getMember.ql linguist-generated /test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl.ql linguist-generated -/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getMember.ql linguist-generated -/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getParam.ql linguist-generated /test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.ql linguist-generated -/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getGenericTypeParam.ql linguist-generated -/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getMember.ql linguist-generated -/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getProtocol.ql linguist-generated /test/extractor-tests/generated/decl/GenericTypeParamDecl/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl.ql linguist-generated -/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getActiveElement.ql linguist-generated -/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getMember.ql linguist-generated /test/extractor-tests/generated/decl/ImportDecl/ImportDecl.ql linguist-generated -/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getDeclaration.ql linguist-generated -/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getImportedModule.ql linguist-generated -/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getMember.ql linguist-generated /test/extractor-tests/generated/decl/InfixOperatorDecl/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/decl/Initializer/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/decl/MacroDecl/MacroDecl.ql linguist-generated -/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getGenericTypeParam.ql linguist-generated -/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getMember.ql linguist-generated -/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getParameter.ql linguist-generated -/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getRole.ql linguist-generated /test/extractor-tests/generated/decl/MacroDecl/MacroRole.ql linguist-generated -/test/extractor-tests/generated/decl/MacroDecl/MacroRole_getConformance.ql linguist-generated -/test/extractor-tests/generated/decl/MacroDecl/MacroRole_getName.ql linguist-generated /test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.ql linguist-generated -/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnExportedModule.ql linguist-generated -/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnImportedModule.ql linguist-generated -/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getInheritedType.ql linguist-generated -/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getMember.ql linguist-generated /test/extractor-tests/generated/decl/NamedFunction/NamedFunction.ql linguist-generated -/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getBody.ql linguist-generated -/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getCapture.ql linguist-generated -/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getGenericTypeParam.ql linguist-generated -/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getMember.ql linguist-generated -/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getName.ql linguist-generated -/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getParam.ql linguist-generated -/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getSelfParam.ql linguist-generated /test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl.ql linguist-generated -/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getGenericTypeParam.ql linguist-generated -/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getInheritedType.ql linguist-generated -/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getMember.ql linguist-generated -/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getOpaqueGenericParam.ql linguist-generated /test/extractor-tests/generated/decl/ParamDecl/ParamDecl.ql linguist-generated -/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAccessor.ql linguist-generated -/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAttachedPropertyWrapperType.ql linguist-generated -/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getMember.ql linguist-generated -/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentInitializer.ql linguist-generated -/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentPattern.ql linguist-generated -/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVar.ql linguist-generated -/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVarBinding.ql linguist-generated -/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVar.ql linguist-generated -/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVarBinding.ql linguist-generated -/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVar.ql linguist-generated -/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVarBinding.ql linguist-generated /test/extractor-tests/generated/decl/PatternBindingDecl/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/decl/PostfixOperatorDecl/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.ql linguist-generated -/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl_getMember.ql linguist-generated /test/extractor-tests/generated/decl/PrecedenceGroupDecl/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/decl/PrefixOperatorDecl/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/decl/ProtocolDecl/MISSING_SOURCE.txt linguist-generated @@ -1147,7 +1073,6 @@ /test/extractor-tests/generated/decl/TopLevelCodeDecl/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/decl/TypeAliasDecl/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.ql linguist-generated -/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/Argument/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/ArrayExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/AssignExpr/MISSING_SOURCE.txt linguist-generated @@ -1160,83 +1085,55 @@ /test/extractor-tests/generated/expr/CoerceExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/ConditionalCheckedCastExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr.ql linguist-generated -/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/CopyExpr/CopyExpr.ql linguist-generated -/test/extractor-tests/generated/expr/CopyExpr/CopyExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/DeclRefExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/DefaultArgumentExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/DictionaryExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/DiscardAssignmentExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/DotSyntaxBaseIgnoredExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr.ql linguist-generated -/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getArgument.ql linguist-generated -/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr.ql linguist-generated -/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getMember.ql linguist-generated -/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/DynamicTypeExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr.ql linguist-generated -/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/ExplicitClosureExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.ql linguist-generated -/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/FloatLiteralExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/ForceTryExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/ForceValueExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/ForcedCheckedCastExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.ql linguist-generated -/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/IfExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.ql linguist-generated -/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/InOutExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr.ql linguist-generated -/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getArgument.ql linguist-generated -/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/IntegerLiteralExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/InterpolatedStringLiteralExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/IsExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/KeyPathApplicationExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/KeyPathDotExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr.ql linguist-generated -/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getComponent.ql linguist-generated -/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getRoot.ql linguist-generated -/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/LazyInitializationExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/MagicIdentifierLiteralExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/MakeTemporarilyEscapableExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/MemberRefExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.ql linguist-generated -/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getMember.ql linguist-generated -/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/NilLiteralExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.ql linguist-generated -/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getArgument.ql linguist-generated -/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/OneWayExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/OpaqueValueExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr.ql linguist-generated -/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/OptionalEvaluationExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/OptionalTryExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/OtherInitializerRefExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr.ql linguist-generated -/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr.ql linguist-generated -/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr.ql linguist-generated -/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr.ql linguist-generated -/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getArgument.ql linguist-generated -/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/PrefixUnaryExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr.ql linguist-generated -/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getType.ql linguist-generated -/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getWrappedValue.ql linguist-generated /test/extractor-tests/generated/expr/RebindSelfInInitializerExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/RegexLiteralExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql linguist-generated -/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql linguist-generated /test/extractor-tests/generated/expr/StringLiteralExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/SubscriptExpr/MISSING_SOURCE.txt linguist-generated @@ -1247,7 +1144,6 @@ /test/extractor-tests/generated/expr/TupleExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/TypeExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr.ql linguist-generated -/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr_getType.ql linguist-generated /test/extractor-tests/generated/expr/VarargExpansionExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/pattern/AnyPattern/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/pattern/BindingPattern/MISSING_SOURCE.txt linguist-generated @@ -1271,11 +1167,6 @@ /test/extractor-tests/generated/stmt/FailStmt/FailStmt.ql linguist-generated /test/extractor-tests/generated/stmt/FallthroughStmt/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.ql linguist-generated -/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getIteratorVar.ql linguist-generated -/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getLabel.ql linguist-generated -/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getNextCall.ql linguist-generated -/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getVariable.ql linguist-generated -/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getWhere.ql linguist-generated /test/extractor-tests/generated/stmt/GuardStmt/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/stmt/IfStmt/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/stmt/PoundAssertStmt/PoundAssertStmt.ql linguist-generated @@ -1283,13 +1174,8 @@ /test/extractor-tests/generated/stmt/ReturnStmt/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/stmt/StmtCondition/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem.ql linguist-generated -/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem_getGuard.ql linguist-generated /test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt.ql linguist-generated -/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getLabel.ql linguist-generated -/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getVariable.ql linguist-generated /test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt.ql linguist-generated -/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getCase.ql linguist-generated -/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getLabel.ql linguist-generated /test/extractor-tests/generated/stmt/ThrowStmt/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/stmt/WhileStmt/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/stmt/YieldStmt/MISSING_SOURCE.txt linguist-generated @@ -1298,7 +1184,6 @@ /test/extractor-tests/generated/type/BoundGenericEnumType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/BoundGenericStructType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType.ql linguist-generated -/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType_getWidth.ql linguist-generated /test/extractor-tests/generated/type/BuiltinType/BuiltinType.ql linguist-generated /test/extractor-tests/generated/type/ClassType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/DependentMemberType/MISSING_SOURCE.txt linguist-generated @@ -1316,35 +1201,20 @@ /test/extractor-tests/generated/type/MetatypeType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/ModuleType/ModuleType.ql linguist-generated /test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType.ql linguist-generated -/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getProtocol.ql linguist-generated -/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getSuperclass.ql linguist-generated /test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.ql linguist-generated -/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getProtocol.ql linguist-generated -/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getSuperclass.ql linguist-generated /test/extractor-tests/generated/type/OptionalType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/PackType/ElementArchetypeType.ql linguist-generated -/test/extractor-tests/generated/type/PackType/ElementArchetypeType_getProtocol.ql linguist-generated -/test/extractor-tests/generated/type/PackType/ElementArchetypeType_getSuperclass.ql linguist-generated /test/extractor-tests/generated/type/PackType/PackArchetypeType.ql linguist-generated -/test/extractor-tests/generated/type/PackType/PackArchetypeType_getProtocol.ql linguist-generated -/test/extractor-tests/generated/type/PackType/PackArchetypeType_getSuperclass.ql linguist-generated /test/extractor-tests/generated/type/PackType/PackElementType.ql linguist-generated /test/extractor-tests/generated/type/PackType/PackExpansionType.ql linguist-generated /test/extractor-tests/generated/type/PackType/PackType.ql linguist-generated -/test/extractor-tests/generated/type/PackType/PackType_getElement.ql linguist-generated /test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType.ql linguist-generated -/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType_getArg.ql linguist-generated /test/extractor-tests/generated/type/ParenType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType.ql linguist-generated -/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getProtocol.ql linguist-generated -/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getSuperclass.ql linguist-generated /test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType.ql linguist-generated -/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType_getMember.ql linguist-generated /test/extractor-tests/generated/type/ProtocolType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/StructType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/TupleType/TupleType.ql linguist-generated -/test/extractor-tests/generated/type/TupleType/TupleType_getName.ql linguist-generated -/test/extractor-tests/generated/type/TupleType/TupleType_getType.ql linguist-generated /test/extractor-tests/generated/type/TypeAliasType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/TypeRepr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/UnboundGenericType/MISSING_SOURCE.txt linguist-generated diff --git a/swift/ql/integration-tests/posix/query-suite/swift-code-quality-extended.qls.expected b/swift/ql/integration-tests/posix/query-suite/swift-code-quality-extended.qls.expected new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/swift/ql/integration-tests/posix/query-suite/swift-code-quality-extended.qls.expected @@ -0,0 +1 @@ + diff --git a/swift/ql/integration-tests/posix/query-suite/test.py b/swift/ql/integration-tests/posix/query-suite/test.py index 43babae01259..b72b87f2938a 100644 --- a/swift/ql/integration-tests/posix/query-suite/test.py +++ b/swift/ql/integration-tests/posix/query-suite/test.py @@ -2,7 +2,7 @@ import pytest from query_suites import * -well_known_query_suites = ['swift-code-quality.qls', 'swift-security-and-quality.qls', 'swift-security-extended.qls', 'swift-code-scanning.qls'] +well_known_query_suites = ['swift-code-quality.qls', 'swift-code-quality-extended.qls', 'swift-security-and-quality.qls', 'swift-security-extended.qls', 'swift-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index bc63ecb86b43..627463a2cac6 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.0.2 + +No user-facing changes. + ## 5.0.1 ### Minor Analysis Improvements diff --git a/swift/ql/lib/change-notes/released/5.0.2.md b/swift/ql/lib/change-notes/released/5.0.2.md new file mode 100644 index 000000000000..3f921f9ca8b1 --- /dev/null +++ b/swift/ql/lib/change-notes/released/5.0.2.md @@ -0,0 +1,3 @@ +## 5.0.2 + +No user-facing changes. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index ae7df5e18b78..3940dee0f32d 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.0.1 +lastReleaseVersion: 5.0.2 diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll index 49ffc37a473c..4185644abe17 100644 --- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll +++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll @@ -10,235 +10,60 @@ import codeql.swift.elements.expr.internal.InitializerRefCallExpr import codeql.swift.elements.expr.internal.SelfApplyExpr private module Impl { - private Element getImmediateChildOfElement(Element e, int index, string partialPredicateCall) { - none() - } - - private Element getImmediateChildOfFile(File e, int index, string partialPredicateCall) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfLocatable(Locatable e, int index, string partialPredicateCall) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfLocation(Location e, int index, string partialPredicateCall) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAstNode(AstNode e, int index, string partialPredicateCall) { - exists(int b, int bLocatable, int n | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and - ( - none() - or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfComment(Comment e, int index, string partialPredicateCall) { - exists(int b, int bLocatable, int n | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and - ( - none() - or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDbFile(DbFile e, int index, string partialPredicateCall) { - exists(int b, int bFile, int n | - b = 0 and - bFile = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFile(e, i, _)) | i) and - n = bFile and - ( - none() - or - result = getImmediateChildOfFile(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDbLocation(DbLocation e, int index, string partialPredicateCall) { - exists(int b, int bLocation, int n | - b = 0 and - bLocation = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocation(e, i, _)) | i) and - n = bLocation and - ( - none() - or - result = getImmediateChildOfLocation(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDiagnostics( Diagnostics e, int index, string partialPredicateCall ) { - exists(int b, int bLocatable, int n | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and - ( - none() - or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfErrorElement( - ErrorElement e, int index, string partialPredicateCall - ) { - exists(int b, int bLocatable, int n | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and - ( - none() - or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnknownFile( UnknownFile e, int index, string partialPredicateCall ) { - exists(int b, int bFile, int n | - b = 0 and - bFile = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFile(e, i, _)) | i) and - n = bFile and - ( - none() - or - result = getImmediateChildOfFile(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnknownLocation( UnknownLocation e, int index, string partialPredicateCall ) { - exists(int b, int bLocation, int n | - b = 0 and - bLocation = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocation(e, i, _)) | i) and - n = bLocation and - ( - none() - or - result = getImmediateChildOfLocation(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfAvailabilityInfo( AvailabilityInfo e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nSpec | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nSpec | + n = 0 and nSpec = n + 1 + max(int i | i = -1 or exists(e.getSpec(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getSpec(index - n) and partialPredicateCall = "Spec(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfAvailabilitySpec( - AvailabilitySpec e, int index, string partialPredicateCall - ) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfCallable(Callable e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nSelfParam, int nParam, int nBody, int nCapture | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - nSelfParam = n + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and - nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or - index = n and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" - or - result = e.getParam(index - nSelfParam) and - partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" - or - index = nParam and result = e.getBody() and partialPredicateCall = "Body()" - or - result = e.getCapture(index - nBody) and - partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" - ) - ) - } - private Element getImmediateChildOfKeyPathComponent( KeyPathComponent e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nSubscriptArgument | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nSubscriptArgument | + n = 0 and nSubscriptArgument = n + 1 + max(int i | i = -1 or exists(e.getSubscriptArgument(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getSubscriptArgument(index - n) and partialPredicateCall = "SubscriptArgument(" + (index - n).toString() + ")" ) @@ -246,32 +71,18 @@ private module Impl { } private Element getImmediateChildOfMacroRole(MacroRole e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnspecifiedElement( UnspecifiedElement e, int index, string partialPredicateCall ) { - exists(int b, int bErrorElement, int n, int nChild | - b = 0 and - bErrorElement = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and + exists(int n, int nChild | + n = 0 and nChild = n + 1 + max(int i | i = -1 or exists(e.getImmediateChild(i)) | i) and ( none() or - result = getImmediateChildOfErrorElement(e, index - b, partialPredicateCall) - or result = e.getImmediateChild(index - n) and partialPredicateCall = "Child(" + (index - n).toString() + ")" ) @@ -281,82 +92,26 @@ private module Impl { private Element getImmediateChildOfOtherAvailabilitySpec( OtherAvailabilitySpec e, int index, string partialPredicateCall ) { - exists(int b, int bAvailabilitySpec, int n | - b = 0 and - bAvailabilitySpec = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAvailabilitySpec(e, i, _)) | i) and - n = bAvailabilitySpec and - ( - none() - or - result = getImmediateChildOfAvailabilitySpec(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPlatformVersionAvailabilitySpec( PlatformVersionAvailabilitySpec e, int index, string partialPredicateCall ) { - exists(int b, int bAvailabilitySpec, int n | - b = 0 and - bAvailabilitySpec = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAvailabilitySpec(e, i, _)) | i) and - n = bAvailabilitySpec and - ( - none() - or - result = getImmediateChildOfAvailabilitySpec(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfDecl(Decl e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nMember | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or - result = e.getMember(index - n) and - partialPredicateCall = "Member(" + (index - n).toString() + ")" - ) - ) - } - - private Element getImmediateChildOfGenericContext( - GenericContext e, int index, string partialPredicateCall - ) { - exists(int b, int bElement, int n, int nGenericTypeParam | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - or - result = e.getGenericTypeParam(index - n) and - partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" - ) - ) + none() } private Element getImmediateChildOfCapturedDecl( CapturedDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -364,14 +119,14 @@ private module Impl { private Element getImmediateChildOfEnumCaseDecl( EnumCaseDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -379,19 +134,18 @@ private module Impl { private Element getImmediateChildOfExtensionDecl( ExtensionDecl e, int index, string partialPredicateCall ) { - exists(int b, int bGenericContext, int bDecl, int n | - b = 0 and - bGenericContext = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericContext(e, i, _)) | i) and - bDecl = - bGenericContext + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfGenericContext(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" or - result = getImmediateChildOfDecl(e, index - bGenericContext, partialPredicateCall) + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } @@ -399,27 +153,27 @@ private module Impl { private Element getImmediateChildOfIfConfigDecl( IfConfigDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } private Element getImmediateChildOfImportDecl(ImportDecl e, int index, string partialPredicateCall) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -427,29 +181,14 @@ private module Impl { private Element getImmediateChildOfMissingMemberDecl( MissingMemberDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and - ( - none() - or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfOperatorDecl( - OperatorDecl e, int index, string partialPredicateCall - ) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -457,19 +196,19 @@ private module Impl { private Element getImmediateChildOfPatternBindingDecl( PatternBindingDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n, int nInit, int nPattern | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and - nInit = n + 1 + max(int i | i = -1 or exists(e.getImmediateInit(i)) | i) and + exists(int n, int nMember, int nInit, int nPattern | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nInit = nMember + 1 + max(int i | i = -1 or exists(e.getImmediateInit(i)) | i) and nPattern = nInit + 1 + max(int i | i = -1 or exists(e.getImmediatePattern(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" or - result = e.getImmediateInit(index - n) and - partialPredicateCall = "Init(" + (index - n).toString() + ")" + result = e.getImmediateInit(index - nMember) and + partialPredicateCall = "Init(" + (index - nMember).toString() + ")" or result = e.getImmediatePattern(index - nInit) and partialPredicateCall = "Pattern(" + (index - nInit).toString() + ")" @@ -480,17 +219,17 @@ private module Impl { private Element getImmediateChildOfPoundDiagnosticDecl( PoundDiagnosticDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n, int nMessage | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and - nMessage = n + 1 and + exists(int n, int nMember, int nMessage | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMessage = nMember + 1 and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" or - index = n and result = e.getImmediateMessage() and partialPredicateCall = "Message()" + index = nMember and result = e.getImmediateMessage() and partialPredicateCall = "Message()" ) ) } @@ -498,14 +237,14 @@ private module Impl { private Element getImmediateChildOfPrecedenceGroupDecl( PrecedenceGroupDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -513,49 +252,17 @@ private module Impl { private Element getImmediateChildOfTopLevelCodeDecl( TopLevelCodeDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n, int nBody | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and - nBody = n + 1 and - ( - none() - or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) - or - index = n and result = e.getBody() and partialPredicateCall = "Body()" - ) - ) - } - - private Element getImmediateChildOfValueDecl(ValueDecl e, int index, string partialPredicateCall) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and - ( - none() - or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAbstractStorageDecl( - AbstractStorageDecl e, int index, string partialPredicateCall - ) { - exists(int b, int bValueDecl, int n, int nAccessor | - b = 0 and - bValueDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfValueDecl(e, i, _)) | i) and - n = bValueDecl and - nAccessor = n + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and + exists(int n, int nMember, int nBody | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nBody = nMember + 1 and ( none() or - result = getImmediateChildOfValueDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" or - result = e.getAccessor(index - n) and - partialPredicateCall = "Accessor(" + (index - n).toString() + ")" + index = nMember and result = e.getBody() and partialPredicateCall = "Body()" ) ) } @@ -563,41 +270,18 @@ private module Impl { private Element getImmediateChildOfEnumElementDecl( EnumElementDecl e, int index, string partialPredicateCall ) { - exists(int b, int bValueDecl, int n, int nParam | - b = 0 and - bValueDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfValueDecl(e, i, _)) | i) and - n = bValueDecl and - nParam = n + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and - ( - none() - or - result = getImmediateChildOfValueDecl(e, index - b, partialPredicateCall) - or - result = e.getParam(index - n) and - partialPredicateCall = "Param(" + (index - n).toString() + ")" - ) - ) - } - - private Element getImmediateChildOfFunction(Function e, int index, string partialPredicateCall) { - exists(int b, int bGenericContext, int bValueDecl, int bCallable, int n | - b = 0 and - bGenericContext = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericContext(e, i, _)) | i) and - bValueDecl = - bGenericContext + 1 + - max(int i | i = -1 or exists(getImmediateChildOfValueDecl(e, i, _)) | i) and - bCallable = - bValueDecl + 1 + max(int i | i = -1 or exists(getImmediateChildOfCallable(e, i, _)) | i) and - n = bCallable and + exists(int n, int nMember, int nParam | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nParam = nMember + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and ( none() or - result = getImmediateChildOfGenericContext(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfValueDecl(e, index - bGenericContext, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" or - result = getImmediateChildOfCallable(e, index - bValueDecl, partialPredicateCall) + result = e.getParam(index - nMember) and + partialPredicateCall = "Param(" + (index - nMember).toString() + ")" ) ) } @@ -605,34 +289,31 @@ private module Impl { private Element getImmediateChildOfInfixOperatorDecl( InfixOperatorDecl e, int index, string partialPredicateCall ) { - exists(int b, int bOperatorDecl, int n | - b = 0 and - bOperatorDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfOperatorDecl(e, i, _)) | i) and - n = bOperatorDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfOperatorDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } private Element getImmediateChildOfMacroDecl(MacroDecl e, int index, string partialPredicateCall) { - exists(int b, int bGenericContext, int bValueDecl, int n | - b = 0 and - bGenericContext = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericContext(e, i, _)) | i) and - bValueDecl = - bGenericContext + 1 + - max(int i | i = -1 or exists(getImmediateChildOfValueDecl(e, i, _)) | i) and - n = bValueDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfGenericContext(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" or - result = getImmediateChildOfValueDecl(e, index - bGenericContext, partialPredicateCall) + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } @@ -640,15 +321,14 @@ private module Impl { private Element getImmediateChildOfPostfixOperatorDecl( PostfixOperatorDecl e, int index, string partialPredicateCall ) { - exists(int b, int bOperatorDecl, int n | - b = 0 and - bOperatorDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfOperatorDecl(e, i, _)) | i) and - n = bOperatorDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfOperatorDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -656,172 +336,202 @@ private module Impl { private Element getImmediateChildOfPrefixOperatorDecl( PrefixOperatorDecl e, int index, string partialPredicateCall ) { - exists(int b, int bOperatorDecl, int n | - b = 0 and - bOperatorDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfOperatorDecl(e, i, _)) | i) and - n = bOperatorDecl and - ( - none() - or - result = getImmediateChildOfOperatorDecl(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfTypeDecl(TypeDecl e, int index, string partialPredicateCall) { - exists(int b, int bValueDecl, int n | - b = 0 and - bValueDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfValueDecl(e, i, _)) | i) and - n = bValueDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfValueDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfAbstractTypeParamDecl( - AbstractTypeParamDecl e, int index, string partialPredicateCall + private Element getImmediateChildOfDeinitializer( + Deinitializer e, int index, string partialPredicateCall ) { - exists(int b, int bTypeDecl, int n | - b = 0 and - bTypeDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeDecl(e, i, _)) | i) and - n = bTypeDecl and + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nSelfParam = nMember + 1 and + nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nBody = nParam + 1 and + nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and ( none() or - result = getImmediateChildOfTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" + or + index = nMember and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" + or + result = e.getParam(index - nSelfParam) and + partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" + or + index = nParam and result = e.getBody() and partialPredicateCall = "Body()" + or + result = e.getCapture(index - nBody) and + partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" ) ) } - private Element getImmediateChildOfAccessorOrNamedFunction( - AccessorOrNamedFunction e, int index, string partialPredicateCall - ) { - exists(int b, int bFunction, int n | - b = 0 and - bFunction = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFunction(e, i, _)) | i) and - n = bFunction and + private Element getImmediateChildOfInitializer( + Initializer e, int index, string partialPredicateCall + ) { + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nSelfParam = nMember + 1 and + nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nBody = nParam + 1 and + nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and ( none() or - result = getImmediateChildOfFunction(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" + or + index = nMember and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" + or + result = e.getParam(index - nSelfParam) and + partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" + or + index = nParam and result = e.getBody() and partialPredicateCall = "Body()" + or + result = e.getCapture(index - nBody) and + partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" ) ) } - private Element getImmediateChildOfDeinitializer( - Deinitializer e, int index, string partialPredicateCall - ) { - exists(int b, int bFunction, int n | - b = 0 and - bFunction = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFunction(e, i, _)) | i) and - n = bFunction and + private Element getImmediateChildOfModuleDecl(ModuleDecl e, int index, string partialPredicateCall) { + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfFunction(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfGenericTypeDecl( - GenericTypeDecl e, int index, string partialPredicateCall + private Element getImmediateChildOfSubscriptDecl( + SubscriptDecl e, int index, string partialPredicateCall ) { - exists(int b, int bGenericContext, int bTypeDecl, int n | - b = 0 and - bGenericContext = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericContext(e, i, _)) | i) and - bTypeDecl = - bGenericContext + 1 + - max(int i | i = -1 or exists(getImmediateChildOfTypeDecl(e, i, _)) | i) and - n = bTypeDecl and + exists(int n, int nMember, int nAccessor, int nGenericTypeParam, int nParam | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nAccessor = nMember + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and + nGenericTypeParam = + nAccessor + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nParam = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and ( none() or - result = getImmediateChildOfGenericContext(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" + or + result = e.getAccessor(index - nMember) and + partialPredicateCall = "Accessor(" + (index - nMember).toString() + ")" or - result = getImmediateChildOfTypeDecl(e, index - bGenericContext, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfInitializer( - Initializer e, int index, string partialPredicateCall - ) { - exists(int b, int bFunction, int n | - b = 0 and - bFunction = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFunction(e, i, _)) | i) and - n = bFunction and - ( - none() + result = e.getGenericTypeParam(index - nAccessor) and + partialPredicateCall = "GenericTypeParam(" + (index - nAccessor).toString() + ")" or - result = getImmediateChildOfFunction(e, index - b, partialPredicateCall) + result = e.getParam(index - nGenericTypeParam) and + partialPredicateCall = "Param(" + (index - nGenericTypeParam).toString() + ")" ) ) } - private Element getImmediateChildOfModuleDecl(ModuleDecl e, int index, string partialPredicateCall) { - exists(int b, int bTypeDecl, int n | - b = 0 and - bTypeDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeDecl(e, i, _)) | i) and - n = bTypeDecl and + private Element getImmediateChildOfAccessor(Accessor e, int index, string partialPredicateCall) { + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nSelfParam = nMember + 1 and + nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nBody = nParam + 1 and + nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and ( none() or - result = getImmediateChildOfTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" + or + index = nMember and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" + or + result = e.getParam(index - nSelfParam) and + partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" + or + index = nParam and result = e.getBody() and partialPredicateCall = "Body()" + or + result = e.getCapture(index - nBody) and + partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" ) ) } - private Element getImmediateChildOfSubscriptDecl( - SubscriptDecl e, int index, string partialPredicateCall + private Element getImmediateChildOfAssociatedTypeDecl( + AssociatedTypeDecl e, int index, string partialPredicateCall ) { - exists(int b, int bAbstractStorageDecl, int bGenericContext, int n, int nParam | - b = 0 and - bAbstractStorageDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAbstractStorageDecl(e, i, _)) | i) and - bGenericContext = - bAbstractStorageDecl + 1 + - max(int i | i = -1 or exists(getImmediateChildOfGenericContext(e, i, _)) | i) and - n = bGenericContext and - nParam = n + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfAbstractStorageDecl(e, index - b, partialPredicateCall) - or - result = - getImmediateChildOfGenericContext(e, index - bAbstractStorageDecl, partialPredicateCall) - or - result = e.getParam(index - n) and - partialPredicateCall = "Param(" + (index - n).toString() + ")" + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfVarDecl(VarDecl e, int index, string partialPredicateCall) { + private Element getImmediateChildOfConcreteVarDecl( + ConcreteVarDecl e, int index, string partialPredicateCall + ) { exists( - int b, int bAbstractStorageDecl, int n, int nPropertyWrapperBackingVarBinding, + int n, int nMember, int nAccessor, int nPropertyWrapperBackingVarBinding, int nPropertyWrapperBackingVar, int nPropertyWrapperProjectionVarBinding, int nPropertyWrapperProjectionVar | - b = 0 and - bAbstractStorageDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAbstractStorageDecl(e, i, _)) | i) and - n = bAbstractStorageDecl and - nPropertyWrapperBackingVarBinding = n + 1 and + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nAccessor = nMember + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and + nPropertyWrapperBackingVarBinding = nAccessor + 1 and nPropertyWrapperBackingVar = nPropertyWrapperBackingVarBinding + 1 and nPropertyWrapperProjectionVarBinding = nPropertyWrapperBackingVar + 1 and nPropertyWrapperProjectionVar = nPropertyWrapperProjectionVarBinding + 1 and ( none() or - result = getImmediateChildOfAbstractStorageDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" or - index = n and + result = e.getAccessor(index - nMember) and + partialPredicateCall = "Accessor(" + (index - nMember).toString() + ")" + or + index = nAccessor and result = e.getPropertyWrapperBackingVarBinding() and partialPredicateCall = "PropertyWrapperBackingVarBinding()" or @@ -840,64 +550,17 @@ private module Impl { ) } - private Element getImmediateChildOfAccessor(Accessor e, int index, string partialPredicateCall) { - exists(int b, int bAccessorOrNamedFunction, int n | - b = 0 and - bAccessorOrNamedFunction = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfAccessorOrNamedFunction(e, i, _)) | i) and - n = bAccessorOrNamedFunction and - ( - none() - or - result = getImmediateChildOfAccessorOrNamedFunction(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAssociatedTypeDecl( - AssociatedTypeDecl e, int index, string partialPredicateCall - ) { - exists(int b, int bAbstractTypeParamDecl, int n | - b = 0 and - bAbstractTypeParamDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAbstractTypeParamDecl(e, i, _)) | i) and - n = bAbstractTypeParamDecl and - ( - none() - or - result = getImmediateChildOfAbstractTypeParamDecl(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfConcreteVarDecl( - ConcreteVarDecl e, int index, string partialPredicateCall - ) { - exists(int b, int bVarDecl, int n | - b = 0 and - bVarDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfVarDecl(e, i, _)) | i) and - n = bVarDecl and - ( - none() - or - result = getImmediateChildOfVarDecl(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfGenericTypeParamDecl( GenericTypeParamDecl e, int index, string partialPredicateCall ) { - exists(int b, int bAbstractTypeParamDecl, int n | - b = 0 and - bAbstractTypeParamDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAbstractTypeParamDecl(e, i, _)) | i) and - n = bAbstractTypeParamDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfAbstractTypeParamDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -905,32 +568,34 @@ private module Impl { private Element getImmediateChildOfNamedFunction( NamedFunction e, int index, string partialPredicateCall ) { - exists(int b, int bAccessorOrNamedFunction, int n | - b = 0 and - bAccessorOrNamedFunction = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfAccessorOrNamedFunction(e, i, _)) | i) and - n = bAccessorOrNamedFunction and + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nSelfParam = nMember + 1 and + nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nBody = nParam + 1 and + nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and ( none() or - result = getImmediateChildOfAccessorOrNamedFunction(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfNominalTypeDecl( - NominalTypeDecl e, int index, string partialPredicateCall - ) { - exists(int b, int bGenericTypeDecl, int n | - b = 0 and - bGenericTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericTypeDecl(e, i, _)) | i) and - n = bGenericTypeDecl and - ( - none() + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" + or + index = nMember and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" or - result = getImmediateChildOfGenericTypeDecl(e, index - b, partialPredicateCall) + result = e.getParam(index - nSelfParam) and + partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" + or + index = nParam and result = e.getBody() and partialPredicateCall = "Body()" + or + result = e.getCapture(index - nBody) and + partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" ) ) } @@ -938,35 +603,64 @@ private module Impl { private Element getImmediateChildOfOpaqueTypeDecl( OpaqueTypeDecl e, int index, string partialPredicateCall ) { - exists(int b, int bGenericTypeDecl, int n | - b = 0 and - bGenericTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericTypeDecl(e, i, _)) | i) and - n = bGenericTypeDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfGenericTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } private Element getImmediateChildOfParamDecl(ParamDecl e, int index, string partialPredicateCall) { exists( - int b, int bVarDecl, int n, int nPropertyWrapperLocalWrappedVarBinding, + int n, int nMember, int nAccessor, int nPropertyWrapperBackingVarBinding, + int nPropertyWrapperBackingVar, int nPropertyWrapperProjectionVarBinding, + int nPropertyWrapperProjectionVar, int nPropertyWrapperLocalWrappedVarBinding, int nPropertyWrapperLocalWrappedVar | - b = 0 and - bVarDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfVarDecl(e, i, _)) | i) and - n = bVarDecl and - nPropertyWrapperLocalWrappedVarBinding = n + 1 and + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nAccessor = nMember + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and + nPropertyWrapperBackingVarBinding = nAccessor + 1 and + nPropertyWrapperBackingVar = nPropertyWrapperBackingVarBinding + 1 and + nPropertyWrapperProjectionVarBinding = nPropertyWrapperBackingVar + 1 and + nPropertyWrapperProjectionVar = nPropertyWrapperProjectionVarBinding + 1 and + nPropertyWrapperLocalWrappedVarBinding = nPropertyWrapperProjectionVar + 1 and nPropertyWrapperLocalWrappedVar = nPropertyWrapperLocalWrappedVarBinding + 1 and ( none() or - result = getImmediateChildOfVarDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" or - index = n and + result = e.getAccessor(index - nMember) and + partialPredicateCall = "Accessor(" + (index - nMember).toString() + ")" + or + index = nAccessor and + result = e.getPropertyWrapperBackingVarBinding() and + partialPredicateCall = "PropertyWrapperBackingVarBinding()" + or + index = nPropertyWrapperBackingVarBinding and + result = e.getPropertyWrapperBackingVar() and + partialPredicateCall = "PropertyWrapperBackingVar()" + or + index = nPropertyWrapperBackingVar and + result = e.getPropertyWrapperProjectionVarBinding() and + partialPredicateCall = "PropertyWrapperProjectionVarBinding()" + or + index = nPropertyWrapperProjectionVarBinding and + result = e.getPropertyWrapperProjectionVar() and + partialPredicateCall = "PropertyWrapperProjectionVar()" + or + index = nPropertyWrapperProjectionVar and result = e.getPropertyWrapperLocalWrappedVarBinding() and partialPredicateCall = "PropertyWrapperLocalWrappedVarBinding()" or @@ -980,43 +674,52 @@ private module Impl { private Element getImmediateChildOfTypeAliasDecl( TypeAliasDecl e, int index, string partialPredicateCall ) { - exists(int b, int bGenericTypeDecl, int n | - b = 0 and - bGenericTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericTypeDecl(e, i, _)) | i) and - n = bGenericTypeDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfGenericTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } private Element getImmediateChildOfClassDecl(ClassDecl e, int index, string partialPredicateCall) { - exists(int b, int bNominalTypeDecl, int n | - b = 0 and - bNominalTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalTypeDecl(e, i, _)) | i) and - n = bNominalTypeDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfNominalTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } private Element getImmediateChildOfEnumDecl(EnumDecl e, int index, string partialPredicateCall) { - exists(int b, int bNominalTypeDecl, int n | - b = 0 and - bNominalTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalTypeDecl(e, i, _)) | i) and - n = bNominalTypeDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfNominalTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } @@ -1024,128 +727,73 @@ private module Impl { private Element getImmediateChildOfProtocolDecl( ProtocolDecl e, int index, string partialPredicateCall ) { - exists(int b, int bNominalTypeDecl, int n | - b = 0 and - bNominalTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalTypeDecl(e, i, _)) | i) and - n = bNominalTypeDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfNominalTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } private Element getImmediateChildOfStructDecl(StructDecl e, int index, string partialPredicateCall) { - exists(int b, int bNominalTypeDecl, int n | - b = 0 and - bNominalTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalTypeDecl(e, i, _)) | i) and - n = bNominalTypeDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfNominalTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } private Element getImmediateChildOfArgument(Argument e, int index, string partialPredicateCall) { - exists(int b, int bLocatable, int n, int nExpr | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and + exists(int n, int nExpr | + n = 0 and nExpr = n + 1 and ( none() or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateExpr() and partialPredicateCall = "Expr()" ) ) } - private Element getImmediateChildOfExpr(Expr e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAnyTryExpr(AnyTryExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nSubExpr = n + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" - ) - ) - } - private Element getImmediateChildOfAppliedPropertyWrapperExpr( AppliedPropertyWrapperExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nValue | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nValue | + n = 0 and nValue = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateValue() and partialPredicateCall = "Value()" ) ) } - private Element getImmediateChildOfApplyExpr(ApplyExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nFunction, int nArgument | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" - or - result = e.getArgument(index - nFunction) and - partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" - ) - ) - } - private Element getImmediateChildOfAssignExpr(AssignExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nDest, int nSource | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nDest, int nSource | + n = 0 and nDest = n + 1 and nSource = nDest + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateDest() and partialPredicateCall = "Dest()" or index = nDest and result = e.getImmediateSource() and partialPredicateCall = "Source()" @@ -1156,16 +804,12 @@ private module Impl { private Element getImmediateChildOfBindOptionalExpr( BindOptionalExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1174,18 +818,14 @@ private module Impl { private Element getImmediateChildOfCaptureListExpr( CaptureListExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nBindingDecl, int nVariable, int nClosureBody | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nBindingDecl, int nVariable, int nClosureBody | + n = 0 and nBindingDecl = n + 1 + max(int i | i = -1 or exists(e.getBindingDecl(i)) | i) and nVariable = nBindingDecl + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and nClosureBody = nVariable + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getBindingDecl(index - n) and partialPredicateCall = "BindingDecl(" + (index - n).toString() + ")" or @@ -1199,69 +839,27 @@ private module Impl { ) } - private Element getImmediateChildOfClosureExpr( - ClosureExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int bCallable, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bCallable = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfCallable(e, i, _)) | i) and - n = bCallable and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfCallable(e, index - bExpr, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfCollectionExpr( - CollectionExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfConsumeExpr( ConsumeExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfCopyExpr(CopyExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1270,77 +868,37 @@ private module Impl { private Element getImmediateChildOfCurrentContextIsolationExpr( CurrentContextIsolationExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDeclRefExpr( DeclRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDefaultArgumentExpr( DefaultArgumentExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDiscardAssignmentExpr( DiscardAssignmentExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDotSyntaxBaseIgnoredExpr( DotSyntaxBaseIgnoredExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nQualifier, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nQualifier, int nSubExpr | + n = 0 and nQualifier = n + 1 and nSubExpr = nQualifier + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateQualifier() and partialPredicateCall = "Qualifier()" or index = nQualifier and @@ -1353,16 +911,12 @@ private module Impl { private Element getImmediateChildOfDynamicTypeExpr( DynamicTypeExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nBase | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nBase | + n = 0 and nBase = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" ) ) @@ -1371,69 +925,30 @@ private module Impl { private Element getImmediateChildOfEnumIsCaseExpr( EnumIsCaseExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfErrorExpr(ErrorExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int bErrorElement, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfExplicitCastExpr( - ExplicitCastExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nSubExpr = n + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" - ) - ) + none() } private Element getImmediateChildOfExtractFunctionIsolationExpr( ExtractFunctionIsolationExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nFunctionExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nFunctionExpr | + n = 0 and nFunctionExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateFunctionExpr() and partialPredicateCall = "FunctionExpr()" @@ -1444,52 +959,26 @@ private module Impl { private Element getImmediateChildOfForceValueExpr( ForceValueExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nSubExpr = n + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" - ) - ) - } - - private Element getImmediateChildOfIdentityExpr( - IdentityExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfIfExpr(IfExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nCondition, int nThenExpr, int nElseExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nCondition, int nThenExpr, int nElseExpr | + n = 0 and nCondition = n + 1 and nThenExpr = nCondition + 1 and nElseExpr = nThenExpr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateCondition() and partialPredicateCall = "Condition()" or index = nCondition and @@ -1503,35 +992,13 @@ private module Impl { ) } - private Element getImmediateChildOfImplicitConversionExpr( - ImplicitConversionExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nSubExpr = n + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" - ) - ) - } - private Element getImmediateChildOfInOutExpr(InOutExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1540,17 +1007,13 @@ private module Impl { private Element getImmediateChildOfKeyPathApplicationExpr( KeyPathApplicationExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nBase, int nKeyPath | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nBase, int nKeyPath | + n = 0 and nBase = n + 1 and nKeyPath = nBase + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" or index = nBase and result = e.getImmediateKeyPath() and partialPredicateCall = "KeyPath()" @@ -1561,32 +1024,19 @@ private module Impl { private Element getImmediateChildOfKeyPathDotExpr( KeyPathDotExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfKeyPathExpr( KeyPathExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nRoot, int nComponent | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nRoot, int nComponent | + n = 0 and nRoot = n + 1 and nComponent = nRoot + 1 + max(int i | i = -1 or exists(e.getComponent(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getRoot() and partialPredicateCall = "Root()" or result = e.getComponent(index - nRoot) and @@ -1598,67 +1048,28 @@ private module Impl { private Element getImmediateChildOfLazyInitializationExpr( LazyInitializationExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } - private Element getImmediateChildOfLiteralExpr( - LiteralExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfLookupExpr(LookupExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nBase | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nBase = n + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" - ) - ) - } - private Element getImmediateChildOfMakeTemporarilyEscapableExpr( MakeTemporarilyEscapableExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nEscapingClosure, int nNonescapingClosure, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nEscapingClosure, int nNonescapingClosure, int nSubExpr | + n = 0 and nEscapingClosure = n + 1 and nNonescapingClosure = nEscapingClosure + 1 and nSubExpr = nNonescapingClosure + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateEscapingClosure() and partialPredicateCall = "EscapingClosure()" @@ -1677,16 +1088,12 @@ private module Impl { private Element getImmediateChildOfMaterializePackExpr( MaterializePackExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1695,32 +1102,24 @@ private module Impl { private Element getImmediateChildOfObjCSelectorExpr( ObjCSelectorExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfOneWayExpr(OneWayExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1729,32 +1128,19 @@ private module Impl { private Element getImmediateChildOfOpaqueValueExpr( OpaqueValueExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOpenExistentialExpr( OpenExistentialExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr, int nExistential | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr, int nExistential | + n = 0 and nSubExpr = n + 1 and nExistential = nSubExpr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" or index = nSubExpr and @@ -1767,16 +1153,12 @@ private module Impl { private Element getImmediateChildOfOptionalEvaluationExpr( OptionalEvaluationExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1785,50 +1167,24 @@ private module Impl { private Element getImmediateChildOfOtherInitializerRefExpr( OtherInitializerRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOverloadedDeclRefExpr( OverloadedDeclRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bErrorElement, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPackElementExpr( PackElementExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1837,16 +1193,12 @@ private module Impl { private Element getImmediateChildOfPackExpansionExpr( PackExpansionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nPatternExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nPatternExpr | + n = 0 and nPatternExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediatePatternExpr() and partialPredicateCall = "PatternExpr()" @@ -1857,31 +1209,18 @@ private module Impl { private Element getImmediateChildOfPropertyWrapperValuePlaceholderExpr( PropertyWrapperValuePlaceholderExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfRebindSelfInInitializerExpr( RebindSelfInInitializerExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1890,16 +1229,12 @@ private module Impl { private Element getImmediateChildOfSequenceExpr( SequenceExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nElement | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nElement | + n = 0 and nElement = n + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getImmediateElement(index - n) and partialPredicateCall = "Element(" + (index - n).toString() + ")" ) @@ -1909,16 +1244,12 @@ private module Impl { private Element getImmediateChildOfSingleValueStmtExpr( SingleValueStmtExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nStmt | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nStmt | + n = 0 and nStmt = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getStmt() and partialPredicateCall = "Stmt()" ) ) @@ -1927,30 +1258,17 @@ private module Impl { private Element getImmediateChildOfSuperRefExpr( SuperRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfTapExpr(TapExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nSubExpr, int nBody | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr, int nBody | + n = 0 and nSubExpr = n + 1 and nBody = nSubExpr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" or index = nSubExpr and result = e.getBody() and partialPredicateCall = "Body()" @@ -1961,32 +1279,24 @@ private module Impl { private Element getImmediateChildOfTupleElementExpr( TupleElementExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfTupleExpr(TupleExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nElement | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nElement | + n = 0 and nElement = n + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getImmediateElement(index - n) and partialPredicateCall = "Element(" + (index - n).toString() + ")" ) @@ -1994,16 +1304,12 @@ private module Impl { } private Element getImmediateChildOfTypeExpr(TypeExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nTypeRepr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) @@ -2012,16 +1318,12 @@ private module Impl { private Element getImmediateChildOfTypeValueExpr( TypeValueExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nTypeRepr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) @@ -2030,39 +1332,18 @@ private module Impl { private Element getImmediateChildOfUnresolvedDeclRefExpr( UnresolvedDeclRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bErrorElement, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnresolvedDotExpr( UnresolvedDotExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bErrorElement, int n, int nBase | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and + exists(int n, int nBase | + n = 0 and nBase = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - or index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" ) ) @@ -2071,39 +1352,18 @@ private module Impl { private Element getImmediateChildOfUnresolvedMemberExpr( UnresolvedMemberExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bErrorElement, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnresolvedPatternExpr( UnresolvedPatternExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bErrorElement, int n, int nSubPattern | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and + exists(int n, int nSubPattern | + n = 0 and nSubPattern = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - or index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()" ) ) @@ -2112,20 +1372,12 @@ private module Impl { private Element getImmediateChildOfUnresolvedSpecializeExpr( UnresolvedSpecializeExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bErrorElement, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -2134,16 +1386,12 @@ private module Impl { private Element getImmediateChildOfVarargExpansionExpr( VarargExpansionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -2152,16 +1400,13 @@ private module Impl { private Element getImmediateChildOfAbiSafeConversionExpr( AbiSafeConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2169,16 +1414,13 @@ private module Impl { private Element getImmediateChildOfActorIsolationErasureExpr( ActorIsolationErasureExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2186,16 +1428,13 @@ private module Impl { private Element getImmediateChildOfAnyHashableErasureExpr( AnyHashableErasureExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2203,32 +1442,24 @@ private module Impl { private Element getImmediateChildOfArchetypeToSuperExpr( ArchetypeToSuperExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfArrayExpr(ArrayExpr e, int index, string partialPredicateCall) { - exists(int b, int bCollectionExpr, int n, int nElement | - b = 0 and - bCollectionExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCollectionExpr(e, i, _)) | i) and - n = bCollectionExpr and + exists(int n, int nElement | + n = 0 and nElement = n + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() or - result = getImmediateChildOfCollectionExpr(e, index - b, partialPredicateCall) - or result = e.getImmediateElement(index - n) and partialPredicateCall = "Element(" + (index - n).toString() + ")" ) @@ -2238,16 +1469,13 @@ private module Impl { private Element getImmediateChildOfArrayToPointerExpr( ArrayToPointerExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2255,56 +1483,64 @@ private module Impl { private Element getImmediateChildOfAutoClosureExpr( AutoClosureExpr e, int index, string partialPredicateCall ) { - exists(int b, int bClosureExpr, int n | - b = 0 and - bClosureExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfClosureExpr(e, i, _)) | i) and - n = bClosureExpr and + exists(int n, int nSelfParam, int nParam, int nBody, int nCapture | + n = 0 and + nSelfParam = n + 1 and + nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nBody = nParam + 1 and + nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and ( none() or - result = getImmediateChildOfClosureExpr(e, index - b, partialPredicateCall) + index = n and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" + or + result = e.getParam(index - nSelfParam) and + partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" + or + index = nParam and result = e.getBody() and partialPredicateCall = "Body()" + or + result = e.getCapture(index - nBody) and + partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" ) ) } private Element getImmediateChildOfAwaitExpr(AwaitExpr e, int index, string partialPredicateCall) { - exists(int b, int bIdentityExpr, int n | - b = 0 and - bIdentityExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfIdentityExpr(e, i, _)) | i) and - n = bIdentityExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfIdentityExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfBinaryExpr(BinaryExpr e, int index, string partialPredicateCall) { - exists(int b, int bApplyExpr, int n | - b = 0 and - bApplyExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfApplyExpr(e, i, _)) | i) and - n = bApplyExpr and + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfApplyExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" + or + result = e.getArgument(index - nFunction) and + partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" ) ) } private Element getImmediateChildOfBorrowExpr(BorrowExpr e, int index, string partialPredicateCall) { - exists(int b, int bIdentityExpr, int n | - b = 0 and - bIdentityExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfIdentityExpr(e, i, _)) | i) and - n = bIdentityExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfIdentityExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2312,16 +1548,13 @@ private module Impl { private Element getImmediateChildOfBridgeFromObjCExpr( BridgeFromObjCExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2329,61 +1562,29 @@ private module Impl { private Element getImmediateChildOfBridgeToObjCExpr( BridgeToObjCExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and - ( - none() - or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfBuiltinLiteralExpr( - BuiltinLiteralExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bLiteralExpr, int n | - b = 0 and - bLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLiteralExpr(e, i, _)) | i) and - n = bLiteralExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfLiteralExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfCallExpr(CallExpr e, int index, string partialPredicateCall) { - exists(int b, int bApplyExpr, int n | - b = 0 and - bApplyExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfApplyExpr(e, i, _)) | i) and - n = bApplyExpr and + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfApplyExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfCheckedCastExpr( - CheckedCastExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExplicitCastExpr, int n | - b = 0 and - bExplicitCastExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExplicitCastExpr(e, i, _)) | i) and - n = bExplicitCastExpr and - ( - none() + index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" or - result = getImmediateChildOfExplicitCastExpr(e, index - b, partialPredicateCall) + result = e.getArgument(index - nFunction) and + partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" ) ) } @@ -2391,30 +1592,25 @@ private module Impl { private Element getImmediateChildOfClassMetatypeToObjectExpr( ClassMetatypeToObjectExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfCoerceExpr(CoerceExpr e, int index, string partialPredicateCall) { - exists(int b, int bExplicitCastExpr, int n | - b = 0 and - bExplicitCastExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExplicitCastExpr(e, i, _)) | i) and - n = bExplicitCastExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExplicitCastExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2422,16 +1618,13 @@ private module Impl { private Element getImmediateChildOfCollectionUpcastConversionExpr( CollectionUpcastConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2439,16 +1632,13 @@ private module Impl { private Element getImmediateChildOfConditionalBridgeFromObjCExpr( ConditionalBridgeFromObjCExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2456,16 +1646,13 @@ private module Impl { private Element getImmediateChildOfCovariantFunctionConversionExpr( CovariantFunctionConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2473,16 +1660,13 @@ private module Impl { private Element getImmediateChildOfCovariantReturnConversionExpr( CovariantReturnConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2490,16 +1674,13 @@ private module Impl { private Element getImmediateChildOfDerivedToBaseExpr( DerivedToBaseExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2507,16 +1688,13 @@ private module Impl { private Element getImmediateChildOfDestructureTupleExpr( DestructureTupleExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2524,17 +1702,12 @@ private module Impl { private Element getImmediateChildOfDictionaryExpr( DictionaryExpr e, int index, string partialPredicateCall ) { - exists(int b, int bCollectionExpr, int n, int nElement | - b = 0 and - bCollectionExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCollectionExpr(e, i, _)) | i) and - n = bCollectionExpr and + exists(int n, int nElement | + n = 0 and nElement = n + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() or - result = getImmediateChildOfCollectionExpr(e, index - b, partialPredicateCall) - or result = e.getImmediateElement(index - n) and partialPredicateCall = "Element(" + (index - n).toString() + ")" ) @@ -2544,16 +1717,13 @@ private module Impl { private Element getImmediateChildOfDifferentiableFunctionExpr( DifferentiableFunctionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2561,16 +1731,13 @@ private module Impl { private Element getImmediateChildOfDifferentiableFunctionExtractOriginalExpr( DifferentiableFunctionExtractOriginalExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2578,31 +1745,13 @@ private module Impl { private Element getImmediateChildOfDotSelfExpr( DotSelfExpr e, int index, string partialPredicateCall ) { - exists(int b, int bIdentityExpr, int n | - b = 0 and - bIdentityExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfIdentityExpr(e, i, _)) | i) and - n = bIdentityExpr and - ( - none() - or - result = getImmediateChildOfIdentityExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfDynamicLookupExpr( - DynamicLookupExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bLookupExpr, int n | - b = 0 and - bLookupExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLookupExpr(e, i, _)) | i) and - n = bLookupExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfLookupExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2610,16 +1759,13 @@ private module Impl { private Element getImmediateChildOfErasureExpr( ErasureExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2627,16 +1773,13 @@ private module Impl { private Element getImmediateChildOfExistentialMetatypeToObjectExpr( ExistentialMetatypeToObjectExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2644,15 +1787,24 @@ private module Impl { private Element getImmediateChildOfExplicitClosureExpr( ExplicitClosureExpr e, int index, string partialPredicateCall ) { - exists(int b, int bClosureExpr, int n | - b = 0 and - bClosureExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfClosureExpr(e, i, _)) | i) and - n = bClosureExpr and + exists(int n, int nSelfParam, int nParam, int nBody, int nCapture | + n = 0 and + nSelfParam = n + 1 and + nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nBody = nParam + 1 and + nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and ( none() or - result = getImmediateChildOfClosureExpr(e, index - b, partialPredicateCall) + index = n and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" + or + result = e.getParam(index - nSelfParam) and + partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" + or + index = nParam and result = e.getBody() and partialPredicateCall = "Body()" + or + result = e.getCapture(index - nBody) and + partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" ) ) } @@ -2660,15 +1812,13 @@ private module Impl { private Element getImmediateChildOfForceTryExpr( ForceTryExpr e, int index, string partialPredicateCall ) { - exists(int b, int bAnyTryExpr, int n | - b = 0 and - bAnyTryExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyTryExpr(e, i, _)) | i) and - n = bAnyTryExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfAnyTryExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2676,16 +1826,13 @@ private module Impl { private Element getImmediateChildOfForeignObjectConversionExpr( ForeignObjectConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2693,16 +1840,13 @@ private module Impl { private Element getImmediateChildOfFunctionConversionExpr( FunctionConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2710,16 +1854,13 @@ private module Impl { private Element getImmediateChildOfInOutToPointerExpr( InOutToPointerExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2727,16 +1868,13 @@ private module Impl { private Element getImmediateChildOfInjectIntoOptionalExpr( InjectIntoOptionalExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2744,17 +1882,12 @@ private module Impl { private Element getImmediateChildOfInterpolatedStringLiteralExpr( InterpolatedStringLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLiteralExpr, int n, int nAppendingExpr | - b = 0 and - bLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLiteralExpr(e, i, _)) | i) and - n = bLiteralExpr and + exists(int n, int nAppendingExpr | + n = 0 and nAppendingExpr = n + 1 and ( none() or - result = getImmediateChildOfLiteralExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateAppendingExpr() and partialPredicateCall = "AppendingExpr()" @@ -2765,16 +1898,13 @@ private module Impl { private Element getImmediateChildOfLinearFunctionExpr( LinearFunctionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2782,16 +1912,13 @@ private module Impl { private Element getImmediateChildOfLinearFunctionExtractOriginalExpr( LinearFunctionExtractOriginalExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2799,31 +1926,25 @@ private module Impl { private Element getImmediateChildOfLinearToDifferentiableFunctionExpr( LinearToDifferentiableFunctionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfLoadExpr(LoadExpr e, int index, string partialPredicateCall) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2831,15 +1952,13 @@ private module Impl { private Element getImmediateChildOfMemberRefExpr( MemberRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLookupExpr, int n | - b = 0 and - bLookupExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLookupExpr(e, i, _)) | i) and - n = bLookupExpr and + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and ( none() or - result = getImmediateChildOfLookupExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" ) ) } @@ -2847,16 +1966,13 @@ private module Impl { private Element getImmediateChildOfMetatypeConversionExpr( MetatypeConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2864,18 +1980,18 @@ private module Impl { private Element getImmediateChildOfMethodLookupExpr( MethodLookupExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLookupExpr, int n, int nMethodRef | - b = 0 and - bLookupExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLookupExpr(e, i, _)) | i) and - n = bLookupExpr and - nMethodRef = n + 1 and + exists(int n, int nBase, int nMethodRef | + n = 0 and + nBase = n + 1 and + nMethodRef = nBase + 1 and ( none() or - result = getImmediateChildOfLookupExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" or - index = n and result = e.getImmediateMethodRef() and partialPredicateCall = "MethodRef()" + index = nBase and + result = e.getImmediateMethodRef() and + partialPredicateCall = "MethodRef()" ) ) } @@ -2883,33 +1999,18 @@ private module Impl { private Element getImmediateChildOfNilLiteralExpr( NilLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLiteralExpr, int n | - b = 0 and - bLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLiteralExpr(e, i, _)) | i) and - n = bLiteralExpr and - ( - none() - or - result = getImmediateChildOfLiteralExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfObjectLiteralExpr( ObjectLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLiteralExpr, int n, int nArgument | - b = 0 and - bLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLiteralExpr(e, i, _)) | i) and - n = bLiteralExpr and + exists(int n, int nArgument | + n = 0 and nArgument = n + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfLiteralExpr(e, index - b, partialPredicateCall) - or result = e.getArgument(index - n) and partialPredicateCall = "Argument(" + (index - n).toString() + ")" ) @@ -2919,29 +2020,25 @@ private module Impl { private Element getImmediateChildOfOptionalTryExpr( OptionalTryExpr e, int index, string partialPredicateCall ) { - exists(int b, int bAnyTryExpr, int n | - b = 0 and - bAnyTryExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyTryExpr(e, i, _)) | i) and - n = bAnyTryExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfAnyTryExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfParenExpr(ParenExpr e, int index, string partialPredicateCall) { - exists(int b, int bIdentityExpr, int n | - b = 0 and - bIdentityExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfIdentityExpr(e, i, _)) | i) and - n = bIdentityExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfIdentityExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2949,16 +2046,13 @@ private module Impl { private Element getImmediateChildOfPointerToPointerExpr( PointerToPointerExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2966,14 +2060,17 @@ private module Impl { private Element getImmediateChildOfPostfixUnaryExpr( PostfixUnaryExpr e, int index, string partialPredicateCall ) { - exists(int b, int bApplyExpr, int n | - b = 0 and - bApplyExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfApplyExpr(e, i, _)) | i) and - n = bApplyExpr and + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfApplyExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" + or + result = e.getArgument(index - nFunction) and + partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" ) ) } @@ -2981,14 +2078,17 @@ private module Impl { private Element getImmediateChildOfPrefixUnaryExpr( PrefixUnaryExpr e, int index, string partialPredicateCall ) { - exists(int b, int bApplyExpr, int n | - b = 0 and - bApplyExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfApplyExpr(e, i, _)) | i) and - n = bApplyExpr and + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfApplyExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" + or + result = e.getArgument(index - nFunction) and + partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" ) ) } @@ -2996,16 +2096,13 @@ private module Impl { private Element getImmediateChildOfProtocolMetatypeToObjectExpr( ProtocolMetatypeToObjectExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3013,47 +2110,19 @@ private module Impl { private Element getImmediateChildOfRegexLiteralExpr( RegexLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLiteralExpr, int n | - b = 0 and - bLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLiteralExpr(e, i, _)) | i) and - n = bLiteralExpr and - ( - none() - or - result = getImmediateChildOfLiteralExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfSelfApplyExpr( - SelfApplyExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bApplyExpr, int n | - b = 0 and - bApplyExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfApplyExpr(e, i, _)) | i) and - n = bApplyExpr and - ( - none() - or - result = getImmediateChildOfApplyExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfStringToPointerExpr( StringToPointerExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3061,33 +2130,29 @@ private module Impl { private Element getImmediateChildOfSubscriptExpr( SubscriptExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLookupExpr, int n, int nArgument | - b = 0 and - bLookupExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLookupExpr(e, i, _)) | i) and - n = bLookupExpr and - nArgument = n + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + exists(int n, int nBase, int nArgument | + n = 0 and + nBase = n + 1 and + nArgument = nBase + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfLookupExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" or - result = e.getArgument(index - n) and - partialPredicateCall = "Argument(" + (index - n).toString() + ")" + result = e.getArgument(index - nBase) and + partialPredicateCall = "Argument(" + (index - nBase).toString() + ")" ) ) } private Element getImmediateChildOfTryExpr(TryExpr e, int index, string partialPredicateCall) { - exists(int b, int bAnyTryExpr, int n | - b = 0 and - bAnyTryExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyTryExpr(e, i, _)) | i) and - n = bAnyTryExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfAnyTryExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3095,16 +2160,13 @@ private module Impl { private Element getImmediateChildOfUnderlyingToOpaqueExpr( UnderlyingToOpaqueExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3112,16 +2174,13 @@ private module Impl { private Element getImmediateChildOfUnevaluatedInstanceExpr( UnevaluatedInstanceExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3129,16 +2188,13 @@ private module Impl { private Element getImmediateChildOfUnreachableExpr( UnreachableExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3146,20 +2202,13 @@ private module Impl { private Element getImmediateChildOfUnresolvedMemberChainResultExpr( UnresolvedMemberChainResultExpr e, int index, string partialPredicateCall ) { - exists(int b, int bIdentityExpr, int bErrorElement, int n | - b = 0 and - bIdentityExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfIdentityExpr(e, i, _)) | i) and - bErrorElement = - bIdentityExpr + 1 + - max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfIdentityExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bIdentityExpr, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3167,22 +2216,13 @@ private module Impl { private Element getImmediateChildOfUnresolvedTypeConversionExpr( UnresolvedTypeConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int bErrorElement, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - bErrorElement = - bImplicitConversionExpr + 1 + - max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) - or - result = - getImmediateChildOfErrorElement(e, index - bImplicitConversionExpr, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3190,16 +2230,13 @@ private module Impl { private Element getImmediateChildOfUnsafeCastExpr( UnsafeCastExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3207,31 +2244,19 @@ private module Impl { private Element getImmediateChildOfBooleanLiteralExpr( BooleanLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinLiteralExpr, int n | - b = 0 and - bBuiltinLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinLiteralExpr(e, i, _)) | i) and - n = bBuiltinLiteralExpr and - ( - none() - or - result = getImmediateChildOfBuiltinLiteralExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfConditionalCheckedCastExpr( ConditionalCheckedCastExpr e, int index, string partialPredicateCall ) { - exists(int b, int bCheckedCastExpr, int n | - b = 0 and - bCheckedCastExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCheckedCastExpr(e, i, _)) | i) and - n = bCheckedCastExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfCheckedCastExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3239,15 +2264,17 @@ private module Impl { private Element getImmediateChildOfDotSyntaxCallExpr( DotSyntaxCallExpr e, int index, string partialPredicateCall ) { - exists(int b, int bSelfApplyExpr, int n | - b = 0 and - bSelfApplyExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSelfApplyExpr(e, i, _)) | i) and - n = bSelfApplyExpr and + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfSelfApplyExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" + or + result = e.getArgument(index - nFunction) and + partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" ) ) } @@ -3255,15 +2282,13 @@ private module Impl { private Element getImmediateChildOfDynamicMemberRefExpr( DynamicMemberRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bDynamicLookupExpr, int n | - b = 0 and - bDynamicLookupExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDynamicLookupExpr(e, i, _)) | i) and - n = bDynamicLookupExpr and + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and ( none() or - result = getImmediateChildOfDynamicLookupExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" ) ) } @@ -3271,15 +2296,13 @@ private module Impl { private Element getImmediateChildOfDynamicSubscriptExpr( DynamicSubscriptExpr e, int index, string partialPredicateCall ) { - exists(int b, int bDynamicLookupExpr, int n | - b = 0 and - bDynamicLookupExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDynamicLookupExpr(e, i, _)) | i) and - n = bDynamicLookupExpr and + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and ( none() or - result = getImmediateChildOfDynamicLookupExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" ) ) } @@ -3287,15 +2310,13 @@ private module Impl { private Element getImmediateChildOfForcedCheckedCastExpr( ForcedCheckedCastExpr e, int index, string partialPredicateCall ) { - exists(int b, int bCheckedCastExpr, int n | - b = 0 and - bCheckedCastExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCheckedCastExpr(e, i, _)) | i) and - n = bCheckedCastExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfCheckedCastExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3303,29 +2324,29 @@ private module Impl { private Element getImmediateChildOfInitializerRefCallExpr( InitializerRefCallExpr e, int index, string partialPredicateCall ) { - exists(int b, int bSelfApplyExpr, int n | - b = 0 and - bSelfApplyExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSelfApplyExpr(e, i, _)) | i) and - n = bSelfApplyExpr and + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfSelfApplyExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" + or + result = e.getArgument(index - nFunction) and + partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" ) ) } private Element getImmediateChildOfIsExpr(IsExpr e, int index, string partialPredicateCall) { - exists(int b, int bCheckedCastExpr, int n | - b = 0 and - bCheckedCastExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCheckedCastExpr(e, i, _)) | i) and - n = bCheckedCastExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfCheckedCastExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3333,122 +2354,40 @@ private module Impl { private Element getImmediateChildOfMagicIdentifierLiteralExpr( MagicIdentifierLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinLiteralExpr, int n | - b = 0 and - bBuiltinLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinLiteralExpr(e, i, _)) | i) and - n = bBuiltinLiteralExpr and - ( - none() - or - result = getImmediateChildOfBuiltinLiteralExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfNumberLiteralExpr( - NumberLiteralExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bBuiltinLiteralExpr, int n | - b = 0 and - bBuiltinLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinLiteralExpr(e, i, _)) | i) and - n = bBuiltinLiteralExpr and - ( - none() - or - result = getImmediateChildOfBuiltinLiteralExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfStringLiteralExpr( StringLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinLiteralExpr, int n | - b = 0 and - bBuiltinLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinLiteralExpr(e, i, _)) | i) and - n = bBuiltinLiteralExpr and - ( - none() - or - result = getImmediateChildOfBuiltinLiteralExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfFloatLiteralExpr( FloatLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bNumberLiteralExpr, int n | - b = 0 and - bNumberLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNumberLiteralExpr(e, i, _)) | i) and - n = bNumberLiteralExpr and - ( - none() - or - result = getImmediateChildOfNumberLiteralExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfIntegerLiteralExpr( IntegerLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bNumberLiteralExpr, int n | - b = 0 and - bNumberLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNumberLiteralExpr(e, i, _)) | i) and - n = bNumberLiteralExpr and - ( - none() - or - result = getImmediateChildOfNumberLiteralExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfPattern(Pattern e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfAnyPattern(AnyPattern e, int index, string partialPredicateCall) { - exists(int b, int bPattern, int n | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and - ( - none() - or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBindingPattern( BindingPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nSubPattern | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nSubPattern | + n = 0 and nSubPattern = n + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()" ) ) @@ -3457,31 +2396,18 @@ private module Impl { private Element getImmediateChildOfBoolPattern( BoolPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and - ( - none() - or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfEnumElementPattern( EnumElementPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nSubPattern | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nSubPattern | + n = 0 and nSubPattern = n + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()" ) ) @@ -3490,33 +2416,25 @@ private module Impl { private Element getImmediateChildOfExprPattern( ExprPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nSubExpr | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfIsPattern(IsPattern e, int index, string partialPredicateCall) { - exists(int b, int bPattern, int n, int nCastTypeRepr, int nSubPattern | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nCastTypeRepr, int nSubPattern | + n = 0 and nCastTypeRepr = n + 1 and nSubPattern = nCastTypeRepr + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getCastTypeRepr() and partialPredicateCall = "CastTypeRepr()" or index = nCastTypeRepr and @@ -3529,31 +2447,18 @@ private module Impl { private Element getImmediateChildOfNamedPattern( NamedPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and - ( - none() - or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOptionalSomePattern( OptionalSomePattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nSubPattern | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nSubPattern | + n = 0 and nSubPattern = n + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()" ) ) @@ -3562,16 +2467,12 @@ private module Impl { private Element getImmediateChildOfParenPattern( ParenPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nSubPattern | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nSubPattern | + n = 0 and nSubPattern = n + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()" ) ) @@ -3580,16 +2481,12 @@ private module Impl { private Element getImmediateChildOfTuplePattern( TuplePattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nElement | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nElement | + n = 0 and nElement = n + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or result = e.getImmediateElement(index - n) and partialPredicateCall = "Element(" + (index - n).toString() + ")" ) @@ -3599,17 +2496,13 @@ private module Impl { private Element getImmediateChildOfTypedPattern( TypedPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nSubPattern, int nTypeRepr | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nSubPattern, int nTypeRepr | + n = 0 and nSubPattern = n + 1 and nTypeRepr = nSubPattern + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()" or index = nSubPattern and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" @@ -3620,17 +2513,13 @@ private module Impl { private Element getImmediateChildOfCaseLabelItem( CaseLabelItem e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nPattern, int nGuard | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nPattern, int nGuard | + n = 0 and nPattern = n + 1 and nGuard = nPattern + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediatePattern() and partialPredicateCall = "Pattern()" or index = nPattern and result = e.getImmediateGuard() and partialPredicateCall = "Guard()" @@ -3641,12 +2530,8 @@ private module Impl { private Element getImmediateChildOfConditionElement( ConditionElement e, int index, string partialPredicateCall ) { - exists( - int b, int bAstNode, int n, int nBoolean, int nPattern, int nInitializer, int nAvailability - | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nBoolean, int nPattern, int nInitializer, int nAvailability | + n = 0 and nBoolean = n + 1 and nPattern = nBoolean + 1 and nInitializer = nPattern + 1 and @@ -3654,8 +2539,6 @@ private module Impl { ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateBoolean() and partialPredicateCall = "Boolean()" or index = nBoolean and result = e.getImmediatePattern() and partialPredicateCall = "Pattern()" @@ -3671,32 +2554,15 @@ private module Impl { ) } - private Element getImmediateChildOfStmt(Stmt e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfStmtCondition( StmtCondition e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nElement | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nElement | + n = 0 and nElement = n + 1 + max(int i | i = -1 or exists(e.getElement(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getElement(index - n) and partialPredicateCall = "Element(" + (index - n).toString() + ")" ) @@ -3704,17 +2570,13 @@ private module Impl { } private Element getImmediateChildOfBraceStmt(BraceStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nVariable, int nElement | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nVariable, int nElement | + n = 0 and nVariable = n + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and nElement = nVariable + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or result = e.getVariable(index - n) and partialPredicateCall = "Variable(" + (index - n).toString() + ")" or @@ -3725,31 +2587,18 @@ private module Impl { } private Element getImmediateChildOfBreakStmt(BreakStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfCaseStmt(CaseStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nLabel, int nVariable, int nBody | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nLabel, int nVariable, int nBody | + n = 0 and nLabel = n + 1 + max(int i | i = -1 or exists(e.getLabel(i)) | i) and nVariable = nLabel + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and nBody = nVariable + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or result = e.getLabel(index - n) and partialPredicateCall = "Label(" + (index - n).toString() + ")" or @@ -3764,29 +2613,16 @@ private module Impl { private Element getImmediateChildOfContinueStmt( ContinueStmt e, int index, string partialPredicateCall ) { - exists(int b, int bStmt, int n | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDeferStmt(DeferStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nBody | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nBody | + n = 0 and nBody = n + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getBody() and partialPredicateCall = "Body()" ) ) @@ -3795,138 +2631,76 @@ private module Impl { private Element getImmediateChildOfDiscardStmt( DiscardStmt e, int index, string partialPredicateCall ) { - exists(int b, int bStmt, int n, int nSubExpr | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfFailStmt(FailStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfFallthroughStmt( FallthroughStmt e, int index, string partialPredicateCall ) { - exists(int b, int bStmt, int n | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfLabeledStmt( - LabeledStmt e, int index, string partialPredicateCall - ) { - exists(int b, int bStmt, int n | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPoundAssertStmt( PoundAssertStmt e, int index, string partialPredicateCall ) { - exists(int b, int bStmt, int n | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfReturnStmt(ReturnStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nResult | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nResult | + n = 0 and nResult = n + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateResult() and partialPredicateCall = "Result()" ) ) } private Element getImmediateChildOfThenStmt(ThenStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nResult | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nResult | + n = 0 and nResult = n + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateResult() and partialPredicateCall = "Result()" ) ) } private Element getImmediateChildOfThrowStmt(ThrowStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nSubExpr | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfYieldStmt(YieldStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nResult | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nResult | + n = 0 and nResult = n + 1 + max(int i | i = -1 or exists(e.getImmediateResult(i)) | i) and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or result = e.getImmediateResult(index - n) and partialPredicateCall = "Result(" + (index - n).toString() + ")" ) @@ -3936,18 +2710,13 @@ private module Impl { private Element getImmediateChildOfDoCatchStmt( DoCatchStmt e, int index, string partialPredicateCall ) { - exists(int b, int bLabeledStmt, int n, int nBody, int nCatch | - b = 0 and - bLabeledStmt = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabeledStmt(e, i, _)) | i) and - n = bLabeledStmt and + exists(int n, int nBody, int nCatch | + n = 0 and nBody = n + 1 and nCatch = nBody + 1 + max(int i | i = -1 or exists(e.getCatch(i)) | i) and ( none() or - result = getImmediateChildOfLabeledStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getBody() and partialPredicateCall = "Body()" or result = e.getCatch(index - nBody) and @@ -3957,17 +2726,12 @@ private module Impl { } private Element getImmediateChildOfDoStmt(DoStmt e, int index, string partialPredicateCall) { - exists(int b, int bLabeledStmt, int n, int nBody | - b = 0 and - bLabeledStmt = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabeledStmt(e, i, _)) | i) and - n = bLabeledStmt and + exists(int n, int nBody | + n = 0 and nBody = n + 1 and ( none() or - result = getImmediateChildOfLabeledStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getBody() and partialPredicateCall = "Body()" ) ) @@ -3977,13 +2741,9 @@ private module Impl { ForEachStmt e, int index, string partialPredicateCall ) { exists( - int b, int bLabeledStmt, int n, int nVariable, int nPattern, int nWhere, int nIteratorVar, - int nNextCall, int nBody + int n, int nVariable, int nPattern, int nWhere, int nIteratorVar, int nNextCall, int nBody | - b = 0 and - bLabeledStmt = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabeledStmt(e, i, _)) | i) and - n = bLabeledStmt and + n = 0 and nVariable = n + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and nPattern = nVariable + 1 and nWhere = nPattern + 1 and @@ -3993,8 +2753,6 @@ private module Impl { ( none() or - result = getImmediateChildOfLabeledStmt(e, index - b, partialPredicateCall) - or result = e.getVariable(index - n) and partialPredicateCall = "Variable(" + (index - n).toString() + ")" or @@ -4015,40 +2773,16 @@ private module Impl { ) } - private Element getImmediateChildOfLabeledConditionalStmt( - LabeledConditionalStmt e, int index, string partialPredicateCall - ) { - exists(int b, int bLabeledStmt, int n, int nCondition | - b = 0 and - bLabeledStmt = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabeledStmt(e, i, _)) | i) and - n = bLabeledStmt and - nCondition = n + 1 and - ( - none() - or - result = getImmediateChildOfLabeledStmt(e, index - b, partialPredicateCall) - or - index = n and result = e.getCondition() and partialPredicateCall = "Condition()" - ) - ) - } - private Element getImmediateChildOfRepeatWhileStmt( RepeatWhileStmt e, int index, string partialPredicateCall ) { - exists(int b, int bLabeledStmt, int n, int nCondition, int nBody | - b = 0 and - bLabeledStmt = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabeledStmt(e, i, _)) | i) and - n = bLabeledStmt and + exists(int n, int nCondition, int nBody | + n = 0 and nCondition = n + 1 and nBody = nCondition + 1 and ( none() or - result = getImmediateChildOfLabeledStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateCondition() and partialPredicateCall = "Condition()" or index = nCondition and result = e.getBody() and partialPredicateCall = "Body()" @@ -4057,18 +2791,13 @@ private module Impl { } private Element getImmediateChildOfSwitchStmt(SwitchStmt e, int index, string partialPredicateCall) { - exists(int b, int bLabeledStmt, int n, int nExpr, int nCase | - b = 0 and - bLabeledStmt = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabeledStmt(e, i, _)) | i) and - n = bLabeledStmt and + exists(int n, int nExpr, int nCase | + n = 0 and nExpr = n + 1 and nCase = nExpr + 1 + max(int i | i = -1 or exists(e.getCase(i)) | i) and ( none() or - result = getImmediateChildOfLabeledStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateExpr() and partialPredicateCall = "Expr()" or result = e.getCase(index - nExpr) and @@ -4078,38 +2807,32 @@ private module Impl { } private Element getImmediateChildOfGuardStmt(GuardStmt e, int index, string partialPredicateCall) { - exists(int b, int bLabeledConditionalStmt, int n, int nBody | - b = 0 and - bLabeledConditionalStmt = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfLabeledConditionalStmt(e, i, _)) | i) and - n = bLabeledConditionalStmt and - nBody = n + 1 and - ( + exists(int n, int nCondition, int nBody | + n = 0 and + nCondition = n + 1 and + nBody = nCondition + 1 and + ( none() or - result = getImmediateChildOfLabeledConditionalStmt(e, index - b, partialPredicateCall) + index = n and result = e.getCondition() and partialPredicateCall = "Condition()" or - index = n and result = e.getBody() and partialPredicateCall = "Body()" + index = nCondition and result = e.getBody() and partialPredicateCall = "Body()" ) ) } private Element getImmediateChildOfIfStmt(IfStmt e, int index, string partialPredicateCall) { - exists(int b, int bLabeledConditionalStmt, int n, int nThen, int nElse | - b = 0 and - bLabeledConditionalStmt = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfLabeledConditionalStmt(e, i, _)) | i) and - n = bLabeledConditionalStmt and - nThen = n + 1 and + exists(int n, int nCondition, int nThen, int nElse | + n = 0 and + nCondition = n + 1 and + nThen = nCondition + 1 and nElse = nThen + 1 and ( none() or - result = getImmediateChildOfLabeledConditionalStmt(e, index - b, partialPredicateCall) + index = n and result = e.getCondition() and partialPredicateCall = "Condition()" or - index = n and result = e.getThen() and partialPredicateCall = "Then()" + index = nCondition and result = e.getThen() and partialPredicateCall = "Then()" or index = nThen and result = e.getElse() and partialPredicateCall = "Else()" ) @@ -4117,1140 +2840,332 @@ private module Impl { } private Element getImmediateChildOfWhileStmt(WhileStmt e, int index, string partialPredicateCall) { - exists(int b, int bLabeledConditionalStmt, int n, int nBody | - b = 0 and - bLabeledConditionalStmt = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfLabeledConditionalStmt(e, i, _)) | i) and - n = bLabeledConditionalStmt and - nBody = n + 1 and + exists(int n, int nCondition, int nBody | + n = 0 and + nCondition = n + 1 and + nBody = nCondition + 1 and ( none() or - result = getImmediateChildOfLabeledConditionalStmt(e, index - b, partialPredicateCall) - or - index = n and result = e.getBody() and partialPredicateCall = "Body()" - ) - ) - } - - private Element getImmediateChildOfType(Type e, int index, string partialPredicateCall) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() + index = n and result = e.getCondition() and partialPredicateCall = "Condition()" or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) + index = nCondition and result = e.getBody() and partialPredicateCall = "Body()" ) ) } private Element getImmediateChildOfTypeRepr(TypeRepr e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAnyFunctionType( - AnyFunctionType e, int index, string partialPredicateCall - ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAnyGenericType( - AnyGenericType e, int index, string partialPredicateCall - ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAnyMetatypeType( - AnyMetatypeType e, int index, string partialPredicateCall - ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfBuiltinType( - BuiltinType e, int index, string partialPredicateCall - ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDependentMemberType( DependentMemberType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDynamicSelfType( DynamicSelfType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfErrorType(ErrorType e, int index, string partialPredicateCall) { - exists(int b, int bType, int bErrorElement, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - bErrorElement = - bType + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bType, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfExistentialType( ExistentialType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfInOutType(InOutType e, int index, string partialPredicateCall) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfIntegerType( IntegerType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfLValueType(LValueType e, int index, string partialPredicateCall) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfModuleType(ModuleType e, int index, string partialPredicateCall) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPackElementType( PackElementType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPackExpansionType( PackExpansionType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPackType(PackType e, int index, string partialPredicateCall) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfParameterizedProtocolType( ParameterizedProtocolType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfProtocolCompositionType( ProtocolCompositionType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfReferenceStorageType( - ReferenceStorageType e, int index, string partialPredicateCall - ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfSubstitutableType( - SubstitutableType e, int index, string partialPredicateCall - ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfSugarType(SugarType e, int index, string partialPredicateCall) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfTupleType(TupleType e, int index, string partialPredicateCall) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnresolvedType( UnresolvedType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int bErrorElement, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - bErrorElement = - bType + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bType, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAnyBuiltinIntegerType( - AnyBuiltinIntegerType e, int index, string partialPredicateCall - ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfArchetypeType( - ArchetypeType e, int index, string partialPredicateCall - ) { - exists(int b, int bSubstitutableType, int n | - b = 0 and - bSubstitutableType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSubstitutableType(e, i, _)) | i) and - n = bSubstitutableType and - ( - none() - or - result = getImmediateChildOfSubstitutableType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinBridgeObjectType( BuiltinBridgeObjectType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinDefaultActorStorageType( BuiltinDefaultActorStorageType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinExecutorType( BuiltinExecutorType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinFixedArrayType( BuiltinFixedArrayType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinFloatType( BuiltinFloatType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinJobType( BuiltinJobType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinNativeObjectType( BuiltinNativeObjectType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinRawPointerType( BuiltinRawPointerType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinRawUnsafeContinuationType( BuiltinRawUnsafeContinuationType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinUnsafeValueBufferType( BuiltinUnsafeValueBufferType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinVectorType( BuiltinVectorType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfExistentialMetatypeType( ExistentialMetatypeType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyMetatypeType, int n | - b = 0 and - bAnyMetatypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyMetatypeType(e, i, _)) | i) and - n = bAnyMetatypeType and - ( - none() - or - result = getImmediateChildOfAnyMetatypeType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfFunctionType( FunctionType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyFunctionType, int n | - b = 0 and - bAnyFunctionType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyFunctionType(e, i, _)) | i) and - n = bAnyFunctionType and - ( - none() - or - result = getImmediateChildOfAnyFunctionType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfGenericFunctionType( GenericFunctionType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyFunctionType, int n | - b = 0 and - bAnyFunctionType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyFunctionType(e, i, _)) | i) and - n = bAnyFunctionType and - ( - none() - or - result = getImmediateChildOfAnyFunctionType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfGenericTypeParamType( GenericTypeParamType e, int index, string partialPredicateCall ) { - exists(int b, int bSubstitutableType, int n | - b = 0 and - bSubstitutableType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSubstitutableType(e, i, _)) | i) and - n = bSubstitutableType and - ( - none() - or - result = getImmediateChildOfSubstitutableType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfMetatypeType( MetatypeType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyMetatypeType, int n | - b = 0 and - bAnyMetatypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyMetatypeType(e, i, _)) | i) and - n = bAnyMetatypeType and - ( - none() - or - result = getImmediateChildOfAnyMetatypeType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfNominalOrBoundGenericNominalType( - NominalOrBoundGenericNominalType e, int index, string partialPredicateCall - ) { - exists(int b, int bAnyGenericType, int n | - b = 0 and - bAnyGenericType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyGenericType(e, i, _)) | i) and - n = bAnyGenericType and - ( - none() - or - result = getImmediateChildOfAnyGenericType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfParenType(ParenType e, int index, string partialPredicateCall) { - exists(int b, int bSugarType, int n | - b = 0 and - bSugarType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSugarType(e, i, _)) | i) and - n = bSugarType and - ( - none() - or - result = getImmediateChildOfSugarType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfSyntaxSugarType( - SyntaxSugarType e, int index, string partialPredicateCall - ) { - exists(int b, int bSugarType, int n | - b = 0 and - bSugarType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSugarType(e, i, _)) | i) and - n = bSugarType and - ( - none() - or - result = getImmediateChildOfSugarType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfTypeAliasType( TypeAliasType e, int index, string partialPredicateCall ) { - exists(int b, int bSugarType, int n | - b = 0 and - bSugarType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSugarType(e, i, _)) | i) and - n = bSugarType and - ( - none() - or - result = getImmediateChildOfSugarType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnboundGenericType( UnboundGenericType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyGenericType, int n | - b = 0 and - bAnyGenericType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyGenericType(e, i, _)) | i) and - n = bAnyGenericType and - ( - none() - or - result = getImmediateChildOfAnyGenericType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnmanagedStorageType( UnmanagedStorageType e, int index, string partialPredicateCall ) { - exists(int b, int bReferenceStorageType, int n | - b = 0 and - bReferenceStorageType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfReferenceStorageType(e, i, _)) | i) and - n = bReferenceStorageType and - ( - none() - or - result = getImmediateChildOfReferenceStorageType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnownedStorageType( UnownedStorageType e, int index, string partialPredicateCall ) { - exists(int b, int bReferenceStorageType, int n | - b = 0 and - bReferenceStorageType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfReferenceStorageType(e, i, _)) | i) and - n = bReferenceStorageType and - ( - none() - or - result = getImmediateChildOfReferenceStorageType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfWeakStorageType( WeakStorageType e, int index, string partialPredicateCall ) { - exists(int b, int bReferenceStorageType, int n | - b = 0 and - bReferenceStorageType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfReferenceStorageType(e, i, _)) | i) and - n = bReferenceStorageType and - ( - none() - or - result = getImmediateChildOfReferenceStorageType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfBoundGenericType( - BoundGenericType e, int index, string partialPredicateCall - ) { - exists(int b, int bNominalOrBoundGenericNominalType, int n | - b = 0 and - bNominalOrBoundGenericNominalType = - b + 1 + - max(int i | - i = -1 or exists(getImmediateChildOfNominalOrBoundGenericNominalType(e, i, _)) - | - i - ) and - n = bNominalOrBoundGenericNominalType and - ( - none() - or - result = - getImmediateChildOfNominalOrBoundGenericNominalType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinIntegerLiteralType( BuiltinIntegerLiteralType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyBuiltinIntegerType, int n | - b = 0 and - bAnyBuiltinIntegerType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyBuiltinIntegerType(e, i, _)) | i) and - n = bAnyBuiltinIntegerType and - ( - none() - or - result = getImmediateChildOfAnyBuiltinIntegerType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinIntegerType( BuiltinIntegerType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyBuiltinIntegerType, int n | - b = 0 and - bAnyBuiltinIntegerType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyBuiltinIntegerType(e, i, _)) | i) and - n = bAnyBuiltinIntegerType and - ( - none() - or - result = getImmediateChildOfAnyBuiltinIntegerType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDictionaryType( DictionaryType e, int index, string partialPredicateCall ) { - exists(int b, int bSyntaxSugarType, int n | - b = 0 and - bSyntaxSugarType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSyntaxSugarType(e, i, _)) | i) and - n = bSyntaxSugarType and - ( - none() - or - result = getImmediateChildOfSyntaxSugarType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfLocalArchetypeType( - LocalArchetypeType e, int index, string partialPredicateCall - ) { - exists(int b, int bArchetypeType, int n | - b = 0 and - bArchetypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArchetypeType(e, i, _)) | i) and - n = bArchetypeType and - ( - none() - or - result = getImmediateChildOfArchetypeType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfNominalType( - NominalType e, int index, string partialPredicateCall - ) { - exists(int b, int bNominalOrBoundGenericNominalType, int n | - b = 0 and - bNominalOrBoundGenericNominalType = - b + 1 + - max(int i | - i = -1 or exists(getImmediateChildOfNominalOrBoundGenericNominalType(e, i, _)) - | - i - ) and - n = bNominalOrBoundGenericNominalType and - ( - none() - or - result = - getImmediateChildOfNominalOrBoundGenericNominalType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOpaqueTypeArchetypeType( OpaqueTypeArchetypeType e, int index, string partialPredicateCall ) { - exists(int b, int bArchetypeType, int n | - b = 0 and - bArchetypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArchetypeType(e, i, _)) | i) and - n = bArchetypeType and - ( - none() - or - result = getImmediateChildOfArchetypeType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPackArchetypeType( PackArchetypeType e, int index, string partialPredicateCall ) { - exists(int b, int bArchetypeType, int n | - b = 0 and - bArchetypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArchetypeType(e, i, _)) | i) and - n = bArchetypeType and - ( - none() - or - result = getImmediateChildOfArchetypeType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPrimaryArchetypeType( PrimaryArchetypeType e, int index, string partialPredicateCall ) { - exists(int b, int bArchetypeType, int n | - b = 0 and - bArchetypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArchetypeType(e, i, _)) | i) and - n = bArchetypeType and - ( - none() - or - result = getImmediateChildOfArchetypeType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfUnarySyntaxSugarType( - UnarySyntaxSugarType e, int index, string partialPredicateCall - ) { - exists(int b, int bSyntaxSugarType, int n | - b = 0 and - bSyntaxSugarType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSyntaxSugarType(e, i, _)) | i) and - n = bSyntaxSugarType and - ( - none() - or - result = getImmediateChildOfSyntaxSugarType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfArraySliceType( ArraySliceType e, int index, string partialPredicateCall ) { - exists(int b, int bUnarySyntaxSugarType, int n | - b = 0 and - bUnarySyntaxSugarType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnarySyntaxSugarType(e, i, _)) | i) and - n = bUnarySyntaxSugarType and - ( - none() - or - result = getImmediateChildOfUnarySyntaxSugarType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBoundGenericClassType( BoundGenericClassType e, int index, string partialPredicateCall ) { - exists(int b, int bBoundGenericType, int n | - b = 0 and - bBoundGenericType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBoundGenericType(e, i, _)) | i) and - n = bBoundGenericType and - ( - none() - or - result = getImmediateChildOfBoundGenericType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBoundGenericEnumType( BoundGenericEnumType e, int index, string partialPredicateCall ) { - exists(int b, int bBoundGenericType, int n | - b = 0 and - bBoundGenericType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBoundGenericType(e, i, _)) | i) and - n = bBoundGenericType and - ( - none() - or - result = getImmediateChildOfBoundGenericType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBoundGenericStructType( BoundGenericStructType e, int index, string partialPredicateCall ) { - exists(int b, int bBoundGenericType, int n | - b = 0 and - bBoundGenericType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBoundGenericType(e, i, _)) | i) and - n = bBoundGenericType and - ( - none() - or - result = getImmediateChildOfBoundGenericType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfClassType(ClassType e, int index, string partialPredicateCall) { - exists(int b, int bNominalType, int n | - b = 0 and - bNominalType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalType(e, i, _)) | i) and - n = bNominalType and - ( - none() - or - result = getImmediateChildOfNominalType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfElementArchetypeType( ElementArchetypeType e, int index, string partialPredicateCall ) { - exists(int b, int bLocalArchetypeType, int n | - b = 0 and - bLocalArchetypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocalArchetypeType(e, i, _)) | i) and - n = bLocalArchetypeType and - ( - none() - or - result = getImmediateChildOfLocalArchetypeType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfEnumType(EnumType e, int index, string partialPredicateCall) { - exists(int b, int bNominalType, int n | - b = 0 and - bNominalType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalType(e, i, _)) | i) and - n = bNominalType and - ( - none() - or - result = getImmediateChildOfNominalType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOpenedArchetypeType( OpenedArchetypeType e, int index, string partialPredicateCall ) { - exists(int b, int bLocalArchetypeType, int n | - b = 0 and - bLocalArchetypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocalArchetypeType(e, i, _)) | i) and - n = bLocalArchetypeType and - ( - none() - or - result = getImmediateChildOfLocalArchetypeType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOptionalType( OptionalType e, int index, string partialPredicateCall ) { - exists(int b, int bUnarySyntaxSugarType, int n | - b = 0 and - bUnarySyntaxSugarType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnarySyntaxSugarType(e, i, _)) | i) and - n = bUnarySyntaxSugarType and - ( - none() - or - result = getImmediateChildOfUnarySyntaxSugarType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfProtocolType( ProtocolType e, int index, string partialPredicateCall ) { - exists(int b, int bNominalType, int n | - b = 0 and - bNominalType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalType(e, i, _)) | i) and - n = bNominalType and - ( - none() - or - result = getImmediateChildOfNominalType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfStructType(StructType e, int index, string partialPredicateCall) { - exists(int b, int bNominalType, int n | - b = 0 and - bNominalType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalType(e, i, _)) | i) and - n = bNominalType and - ( - none() - or - result = getImmediateChildOfNominalType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfVariadicSequenceType( VariadicSequenceType e, int index, string partialPredicateCall ) { - exists(int b, int bUnarySyntaxSugarType, int n | - b = 0 and - bUnarySyntaxSugarType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnarySyntaxSugarType(e, i, _)) | i) and - n = bUnarySyntaxSugarType and - ( - none() - or - result = getImmediateChildOfUnarySyntaxSugarType(e, index - b, partialPredicateCall) - ) - ) + none() } cached diff --git a/swift/ql/lib/codeql/swift/security/CleartextLoggingQuery.qll b/swift/ql/lib/codeql/swift/security/CleartextLoggingQuery.qll index 740fccefe974..40010eba649a 100644 --- a/swift/ql/lib/codeql/swift/security/CleartextLoggingQuery.qll +++ b/swift/ql/lib/codeql/swift/security/CleartextLoggingQuery.qll @@ -25,6 +25,8 @@ module CleartextLoggingConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) { any(CleartextLoggingAdditionalFlowStep s).step(n1, n2) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/CleartextTransmissionQuery.qll b/swift/ql/lib/codeql/swift/security/CleartextTransmissionQuery.qll index 3952d7a89b11..42e9b68328f5 100644 --- a/swift/ql/lib/codeql/swift/security/CleartextTransmissionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/CleartextTransmissionQuery.qll @@ -28,6 +28,8 @@ module CleartextTransmissionConfig implements DataFlow::ConfigSig { // make sources barriers so that we only report the closest instance isSource(node) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/CommandInjectionQuery.qll b/swift/ql/lib/codeql/swift/security/CommandInjectionQuery.qll index 10dbc1377260..ebeb9c4b6f46 100644 --- a/swift/ql/lib/codeql/swift/security/CommandInjectionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/CommandInjectionQuery.qll @@ -23,6 +23,8 @@ module CommandInjectionConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(CommandInjectionAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll b/swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll index 7f6475a6ee49..c0d4d7cd8963 100644 --- a/swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll +++ b/swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll @@ -38,6 +38,10 @@ module ConstantPasswordConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(ConstantPasswordAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module ConstantPasswordFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/ConstantSaltQuery.qll b/swift/ql/lib/codeql/swift/security/ConstantSaltQuery.qll index e9b91d235700..68c1e6ef17a4 100644 --- a/swift/ql/lib/codeql/swift/security/ConstantSaltQuery.qll +++ b/swift/ql/lib/codeql/swift/security/ConstantSaltQuery.qll @@ -39,6 +39,8 @@ module ConstantSaltConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(ConstantSaltAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module ConstantSaltFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/ECBEncryptionQuery.qll b/swift/ql/lib/codeql/swift/security/ECBEncryptionQuery.qll index 133e7d6c2cde..a9463937555e 100644 --- a/swift/ql/lib/codeql/swift/security/ECBEncryptionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/ECBEncryptionQuery.qll @@ -22,6 +22,8 @@ module EcbEncryptionConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(EcbEncryptionAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module EcbEncryptionFlow = DataFlow::Global; diff --git a/swift/ql/lib/codeql/swift/security/HardcodedEncryptionKeyQuery.qll b/swift/ql/lib/codeql/swift/security/HardcodedEncryptionKeyQuery.qll index 9e0cb16b7c6e..5eb379f248a0 100644 --- a/swift/ql/lib/codeql/swift/security/HardcodedEncryptionKeyQuery.qll +++ b/swift/ql/lib/codeql/swift/security/HardcodedEncryptionKeyQuery.qll @@ -46,6 +46,8 @@ module HardcodedKeyConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(HardcodedEncryptionKeyAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module HardcodedKeyFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/InsufficientHashIterationsQuery.qll b/swift/ql/lib/codeql/swift/security/InsufficientHashIterationsQuery.qll index 122d5b2b0d88..f1f21dabe034 100644 --- a/swift/ql/lib/codeql/swift/security/InsufficientHashIterationsQuery.qll +++ b/swift/ql/lib/codeql/swift/security/InsufficientHashIterationsQuery.qll @@ -34,6 +34,10 @@ module InsufficientHashIterationsConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(InsufficientHashIterationsAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module InsufficientHashIterationsFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/PathInjectionQuery.qll b/swift/ql/lib/codeql/swift/security/PathInjectionQuery.qll index c74dae787ed9..64cf208b878a 100644 --- a/swift/ql/lib/codeql/swift/security/PathInjectionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/PathInjectionQuery.qll @@ -23,6 +23,8 @@ module PathInjectionConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { any(PathInjectionAdditionalFlowStep s).step(node1, node2) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/PredicateInjectionQuery.qll b/swift/ql/lib/codeql/swift/security/PredicateInjectionQuery.qll index 86d043647741..97acbc074bd0 100644 --- a/swift/ql/lib/codeql/swift/security/PredicateInjectionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/PredicateInjectionQuery.qll @@ -22,6 +22,8 @@ module PredicateInjectionConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) { any(PredicateInjectionAdditionalFlowStep s).step(n1, n2) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/SqlInjectionQuery.qll b/swift/ql/lib/codeql/swift/security/SqlInjectionQuery.qll index 5b5a2c920fe8..8ee164a4c23a 100644 --- a/swift/ql/lib/codeql/swift/security/SqlInjectionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/SqlInjectionQuery.qll @@ -23,6 +23,8 @@ module SqlInjectionConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(SqlInjectionAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/StaticInitializationVectorQuery.qll b/swift/ql/lib/codeql/swift/security/StaticInitializationVectorQuery.qll index 5f281191d993..fb6e21cac52d 100644 --- a/swift/ql/lib/codeql/swift/security/StaticInitializationVectorQuery.qll +++ b/swift/ql/lib/codeql/swift/security/StaticInitializationVectorQuery.qll @@ -40,6 +40,10 @@ module StaticInitializationVectorConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(StaticInitializationVectorAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module StaticInitializationVectorFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/StringLengthConflationQuery.qll b/swift/ql/lib/codeql/swift/security/StringLengthConflationQuery.qll index 8e608776a20d..5ddcd2333e28 100644 --- a/swift/ql/lib/codeql/swift/security/StringLengthConflationQuery.qll +++ b/swift/ql/lib/codeql/swift/security/StringLengthConflationQuery.qll @@ -39,6 +39,10 @@ module StringLengthConflationConfig implements DataFlow::StateConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(StringLengthConflationAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** diff --git a/swift/ql/lib/codeql/swift/security/UncontrolledFormatStringQuery.qll b/swift/ql/lib/codeql/swift/security/UncontrolledFormatStringQuery.qll index 37e40774bf9d..baee65773d65 100644 --- a/swift/ql/lib/codeql/swift/security/UncontrolledFormatStringQuery.qll +++ b/swift/ql/lib/codeql/swift/security/UncontrolledFormatStringQuery.qll @@ -23,6 +23,8 @@ module TaintedFormatConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(UncontrolledFormatStringAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll b/swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll index b79219ab6339..e82db8f4e7bf 100644 --- a/swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll +++ b/swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll @@ -22,6 +22,10 @@ module UnsafeJsEvalConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(UnsafeJsEvalAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** diff --git a/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll b/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll index 59be3a7eb31e..a8485ff99471 100644 --- a/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll +++ b/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll @@ -24,6 +24,10 @@ module UnsafeUnpackConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(UnsafeUnpackAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** diff --git a/swift/ql/lib/codeql/swift/security/WeakPasswordHashingQuery.qll b/swift/ql/lib/codeql/swift/security/WeakPasswordHashingQuery.qll index b2ad35c2bf89..6532d8a6a7fe 100644 --- a/swift/ql/lib/codeql/swift/security/WeakPasswordHashingQuery.qll +++ b/swift/ql/lib/codeql/swift/security/WeakPasswordHashingQuery.qll @@ -37,6 +37,8 @@ module WeakPasswordHashingConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(WeakPasswordHashingAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module WeakPasswordHashingFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/WeakSensitiveDataHashingQuery.qll b/swift/ql/lib/codeql/swift/security/WeakSensitiveDataHashingQuery.qll index ade9d9f1437d..d38e78a1ded5 100755 --- a/swift/ql/lib/codeql/swift/security/WeakSensitiveDataHashingQuery.qll +++ b/swift/ql/lib/codeql/swift/security/WeakSensitiveDataHashingQuery.qll @@ -38,6 +38,8 @@ module WeakSensitiveDataHashingConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(WeakSensitiveDataHashingAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module WeakSensitiveDataHashingFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/XXEQuery.qll b/swift/ql/lib/codeql/swift/security/XXEQuery.qll index 0a16417bd724..afd6c0684524 100644 --- a/swift/ql/lib/codeql/swift/security/XXEQuery.qll +++ b/swift/ql/lib/codeql/swift/security/XXEQuery.qll @@ -22,6 +22,8 @@ module XxeConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) { any(XxeAdditionalFlowStep s).step(n1, n2) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/regex/RegexInjectionQuery.qll b/swift/ql/lib/codeql/swift/security/regex/RegexInjectionQuery.qll index 8fee12442d35..8b5929c40649 100644 --- a/swift/ql/lib/codeql/swift/security/regex/RegexInjectionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/regex/RegexInjectionQuery.qll @@ -22,6 +22,8 @@ module RegexInjectionConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(RegexInjectionAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 8c4f32eb0d20..bd0816247ca6 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 5.0.1 +version: 5.0.3-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 54ed582d8d9b..5f5f43bafae4 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.2.0 + +### Query Metadata Changes + +* 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. + ## 1.1.5 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.0.md b/swift/ql/src/change-notes/released/1.2.0.md new file mode 100644 index 000000000000..fddc229c9858 --- /dev/null +++ b/swift/ql/src/change-notes/released/1.2.0.md @@ -0,0 +1,5 @@ +## 1.2.0 + +### Query Metadata Changes + +* 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. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index df39a9de059d..75430e73d1c4 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.1.5 +lastReleaseVersion: 1.2.0 diff --git a/swift/ql/src/codeql-suites/swift-code-quality-extended.qls b/swift/ql/src/codeql-suites/swift-code-quality-extended.qls new file mode 100644 index 000000000000..1ee85cae856c --- /dev/null +++ b/swift/ql/src/codeql-suites/swift-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 9c1b33791a23..b24d4fbd5a77 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.1.5 +version: 1.2.1-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 7f6ea32341b2..4376f0f4c0f3 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/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo.expected b/swift/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo.expected index 9f56de5ccdb9..e6b02e7a01b1 100644 --- a/swift/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo.expected +++ b/swift/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo.expected @@ -1,2 +1,9 @@ -| test.swift:1:4:1:27 | #available | isUnavailable: | no | getNumberOfSpecs: | 2 | -| test.swift:5:4:5:45 | #unavailable | isUnavailable: | yes | getNumberOfSpecs: | 3 | +instances +| test.swift:1:4:1:27 | #available | isUnavailable: | no | +| test.swift:5:4:5:45 | #unavailable | isUnavailable: | yes | +getSpec +| test.swift:1:4:1:27 | #available | 0 | test.swift:1:15:1:21 | macOS 142 | +| test.swift:1:4:1:27 | #available | 1 | test.swift:1:26:1:26 | * | +| test.swift:5:4:5:45 | #unavailable | 0 | test.swift:5:17:5:21 | iOS 10 | +| test.swift:5:4:5:45 | #unavailable | 1 | test.swift:5:25:5:33 | watchOS 10 | +| test.swift:5:4:5:45 | #unavailable | 2 | test.swift:5:37:5:43 | macOS 10 | diff --git a/swift/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo.ql b/swift/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo.ql index ae10b4bb767c..50d7addece8f 100644 --- a/swift/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo.ql +++ b/swift/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo.ql @@ -2,10 +2,13 @@ import codeql.swift.elements import TestUtils -from AvailabilityInfo x, string isUnavailable, int getNumberOfSpecs -where +query predicate instances(AvailabilityInfo x, string isUnavailable__label, string isUnavailable) { toBeTested(x) and not x.isUnknown() and - (if x.isUnavailable() then isUnavailable = "yes" else isUnavailable = "no") and - getNumberOfSpecs = x.getNumberOfSpecs() -select x, "isUnavailable:", isUnavailable, "getNumberOfSpecs:", getNumberOfSpecs + isUnavailable__label = "isUnavailable:" and + if x.isUnavailable() then isUnavailable = "yes" else isUnavailable = "no" +} + +query predicate getSpec(AvailabilityInfo x, int index, AvailabilitySpec getSpec) { + toBeTested(x) and not x.isUnknown() and getSpec = x.getSpec(index) +} diff --git a/swift/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo_getSpec.expected b/swift/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo_getSpec.expected deleted file mode 100644 index 83e9450d76b1..000000000000 --- a/swift/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo_getSpec.expected +++ /dev/null @@ -1,5 +0,0 @@ -| test.swift:1:4:1:27 | #available | 0 | test.swift:1:15:1:21 | macOS 142 | -| test.swift:1:4:1:27 | #available | 1 | test.swift:1:26:1:26 | * | -| test.swift:5:4:5:45 | #unavailable | 0 | test.swift:5:17:5:21 | iOS 10 | -| test.swift:5:4:5:45 | #unavailable | 1 | test.swift:5:25:5:33 | watchOS 10 | -| test.swift:5:4:5:45 | #unavailable | 2 | test.swift:5:37:5:43 | macOS 10 | diff --git a/swift/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo_getSpec.ql b/swift/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo_getSpec.ql deleted file mode 100644 index 418f5251effe..000000000000 --- a/swift/ql/test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo_getSpec.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from AvailabilityInfo x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getSpec(index) diff --git a/swift/ql/test/extractor-tests/generated/Diagnostics/Diagnostics.ql b/swift/ql/test/extractor-tests/generated/Diagnostics/Diagnostics.ql index 18e302cfaa63..ef370f93d92f 100644 --- a/swift/ql/test/extractor-tests/generated/Diagnostics/Diagnostics.ql +++ b/swift/ql/test/extractor-tests/generated/Diagnostics/Diagnostics.ql @@ -2,10 +2,13 @@ import codeql.swift.elements import TestUtils -from Diagnostics x, string getText, int getKind -where +query predicate instances( + Diagnostics x, string getText__label, string getText, string getKind__label, int getKind +) { toBeTested(x) and not x.isUnknown() and + getText__label = "getText:" and getText = x.getText() and + getKind__label = "getKind:" and getKind = x.getKind() -select x, "getText:", getText, "getKind:", getKind +} diff --git a/swift/ql/test/extractor-tests/generated/File/File.ql b/swift/ql/test/extractor-tests/generated/File/File.ql index 3614bcc50733..75690caf90fc 100644 --- a/swift/ql/test/extractor-tests/generated/File/File.ql +++ b/swift/ql/test/extractor-tests/generated/File/File.ql @@ -2,13 +2,17 @@ import codeql.swift.elements import TestUtils -from File x, string getName, string isSuccessfullyExtracted -where +query predicate instances( + File x, string primaryQlClasses, string getName__label, string getName, + string isSuccessfullyExtracted__label, string isSuccessfullyExtracted +) { toBeTested(x) and not x.isUnknown() and + primaryQlClasses = x.getPrimaryQlClasses() and + getName__label = "getName:" and getName = x.getName() and + isSuccessfullyExtracted__label = "isSuccessfullyExtracted:" and if x.isSuccessfullyExtracted() then isSuccessfullyExtracted = "yes" else isSuccessfullyExtracted = "no" -select x, x.getPrimaryQlClasses(), "getName:", getName, "isSuccessfullyExtracted:", - isSuccessfullyExtracted +} diff --git a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.expected b/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.expected index 90bfc4f4f2af..9d51a6ed8d5d 100644 --- a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.expected +++ b/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.expected @@ -1,14 +1,28 @@ -| file://:0:0:0:0 | KeyPathComponent | getKind: | 7 | getNumberOfSubscriptArguments: | 0 | hasTupleIndex: | no | hasDeclRef: | no | getComponentType: | Int? | -| key_path_expr.swift:11:17:11:17 | KeyPathComponent | getKind: | 3 | getNumberOfSubscriptArguments: | 0 | hasTupleIndex: | no | hasDeclRef: | yes | getComponentType: | Int | -| key_path_expr.swift:12:24:12:26 | KeyPathComponent | getKind: | 4 | getNumberOfSubscriptArguments: | 1 | hasTupleIndex: | no | hasDeclRef: | yes | getComponentType: | Int | -| key_path_expr.swift:13:34:13:38 | KeyPathComponent | getKind: | 4 | getNumberOfSubscriptArguments: | 1 | hasTupleIndex: | no | hasDeclRef: | yes | getComponentType: | Int? | -| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 5 | getNumberOfSubscriptArguments: | 0 | hasTupleIndex: | no | hasDeclRef: | no | getComponentType: | Int | -| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 8 | getNumberOfSubscriptArguments: | 0 | hasTupleIndex: | no | hasDeclRef: | no | getComponentType: | Int? | -| key_path_expr.swift:15:21:15:21 | KeyPathComponent | getKind: | 3 | getNumberOfSubscriptArguments: | 0 | hasTupleIndex: | no | hasDeclRef: | yes | getComponentType: | Bar? | -| key_path_expr.swift:15:24:15:24 | KeyPathComponent | getKind: | 6 | getNumberOfSubscriptArguments: | 0 | hasTupleIndex: | no | hasDeclRef: | no | getComponentType: | Bar | -| key_path_expr.swift:15:26:15:26 | KeyPathComponent | getKind: | 3 | getNumberOfSubscriptArguments: | 0 | hasTupleIndex: | no | hasDeclRef: | yes | getComponentType: | Int? | -| key_path_expr.swift:16:25:16:25 | KeyPathComponent | getKind: | 3 | getNumberOfSubscriptArguments: | 0 | hasTupleIndex: | no | hasDeclRef: | yes | getComponentType: | Bar? | -| key_path_expr.swift:16:28:16:28 | KeyPathComponent | getKind: | 6 | getNumberOfSubscriptArguments: | 0 | hasTupleIndex: | no | hasDeclRef: | no | getComponentType: | Bar | -| key_path_expr.swift:16:30:16:30 | KeyPathComponent | getKind: | 3 | getNumberOfSubscriptArguments: | 0 | hasTupleIndex: | no | hasDeclRef: | yes | getComponentType: | Int | -| key_path_expr.swift:17:16:17:16 | KeyPathComponent | getKind: | 8 | getNumberOfSubscriptArguments: | 0 | hasTupleIndex: | no | hasDeclRef: | no | getComponentType: | Int | -| key_path_expr.swift:18:32:18:32 | KeyPathComponent | getKind: | 9 | getNumberOfSubscriptArguments: | 0 | hasTupleIndex: | yes | hasDeclRef: | no | getComponentType: | Int | +instances +| file://:0:0:0:0 | KeyPathComponent | getKind: | 7 | getComponentType: | Int? | +| key_path_expr.swift:11:17:11:17 | KeyPathComponent | getKind: | 3 | getComponentType: | Int | +| key_path_expr.swift:12:24:12:26 | KeyPathComponent | getKind: | 4 | getComponentType: | Int | +| key_path_expr.swift:13:34:13:38 | KeyPathComponent | getKind: | 4 | getComponentType: | Int? | +| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 5 | getComponentType: | Int | +| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 8 | getComponentType: | Int? | +| key_path_expr.swift:15:21:15:21 | KeyPathComponent | getKind: | 3 | getComponentType: | Bar? | +| key_path_expr.swift:15:24:15:24 | KeyPathComponent | getKind: | 6 | getComponentType: | Bar | +| key_path_expr.swift:15:26:15:26 | KeyPathComponent | getKind: | 3 | getComponentType: | Int? | +| key_path_expr.swift:16:25:16:25 | KeyPathComponent | getKind: | 3 | getComponentType: | Bar? | +| key_path_expr.swift:16:28:16:28 | KeyPathComponent | getKind: | 6 | getComponentType: | Bar | +| key_path_expr.swift:16:30:16:30 | KeyPathComponent | getKind: | 3 | getComponentType: | Int | +| key_path_expr.swift:17:16:17:16 | KeyPathComponent | getKind: | 8 | getComponentType: | Int | +| key_path_expr.swift:18:32:18:32 | KeyPathComponent | getKind: | 9 | getComponentType: | Int | +getSubscriptArgument +| key_path_expr.swift:12:24:12:26 | KeyPathComponent | 0 | key_path_expr.swift:12:25:12:25 | : 0 | +| key_path_expr.swift:13:34:13:38 | KeyPathComponent | 0 | key_path_expr.swift:13:35:13:35 | : a | +getTupleIndex +| key_path_expr.swift:18:32:18:32 | KeyPathComponent | 0 | +getDeclRef +| key_path_expr.swift:11:17:11:17 | KeyPathComponent | key_path_expr.swift:7:9:7:9 | value | +| key_path_expr.swift:12:24:12:26 | KeyPathComponent | file://:0:0:0:0 | subscript ... | +| key_path_expr.swift:13:34:13:38 | KeyPathComponent | file://:0:0:0:0 | subscript ... | +| key_path_expr.swift:15:21:15:21 | KeyPathComponent | key_path_expr.swift:8:9:8:9 | opt | +| key_path_expr.swift:15:26:15:26 | KeyPathComponent | key_path_expr.swift:3:9:3:9 | opt | +| key_path_expr.swift:16:25:16:25 | KeyPathComponent | key_path_expr.swift:8:9:8:9 | opt | +| key_path_expr.swift:16:30:16:30 | KeyPathComponent | key_path_expr.swift:2:9:2:9 | value | diff --git a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.ql b/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.ql index 06d9851feb66..a81df30d4651 100644 --- a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.ql +++ b/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.ql @@ -2,16 +2,26 @@ import codeql.swift.elements import TestUtils -from - KeyPathComponent x, int getKind, int getNumberOfSubscriptArguments, string hasTupleIndex, - string hasDeclRef, Type getComponentType -where +query predicate instances( + KeyPathComponent x, string getKind__label, int getKind, string getComponentType__label, + Type getComponentType +) { toBeTested(x) and not x.isUnknown() and + getKind__label = "getKind:" and getKind = x.getKind() and - getNumberOfSubscriptArguments = x.getNumberOfSubscriptArguments() and - (if x.hasTupleIndex() then hasTupleIndex = "yes" else hasTupleIndex = "no") and - (if x.hasDeclRef() then hasDeclRef = "yes" else hasDeclRef = "no") and + getComponentType__label = "getComponentType:" and getComponentType = x.getComponentType() -select x, "getKind:", getKind, "getNumberOfSubscriptArguments:", getNumberOfSubscriptArguments, - "hasTupleIndex:", hasTupleIndex, "hasDeclRef:", hasDeclRef, "getComponentType:", getComponentType +} + +query predicate getSubscriptArgument(KeyPathComponent x, int index, Argument getSubscriptArgument) { + toBeTested(x) and not x.isUnknown() and getSubscriptArgument = x.getSubscriptArgument(index) +} + +query predicate getTupleIndex(KeyPathComponent x, int getTupleIndex) { + toBeTested(x) and not x.isUnknown() and getTupleIndex = x.getTupleIndex() +} + +query predicate getDeclRef(KeyPathComponent x, ValueDecl getDeclRef) { + toBeTested(x) and not x.isUnknown() and getDeclRef = x.getDeclRef() +} diff --git a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getDeclRef.expected b/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getDeclRef.expected deleted file mode 100644 index 74dc644cb80b..000000000000 --- a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getDeclRef.expected +++ /dev/null @@ -1,7 +0,0 @@ -| key_path_expr.swift:11:17:11:17 | KeyPathComponent | key_path_expr.swift:7:9:7:9 | value | -| key_path_expr.swift:12:24:12:26 | KeyPathComponent | file://:0:0:0:0 | subscript ... | -| key_path_expr.swift:13:34:13:38 | KeyPathComponent | file://:0:0:0:0 | subscript ... | -| key_path_expr.swift:15:21:15:21 | KeyPathComponent | key_path_expr.swift:8:9:8:9 | opt | -| key_path_expr.swift:15:26:15:26 | KeyPathComponent | key_path_expr.swift:3:9:3:9 | opt | -| key_path_expr.swift:16:25:16:25 | KeyPathComponent | key_path_expr.swift:8:9:8:9 | opt | -| key_path_expr.swift:16:30:16:30 | KeyPathComponent | key_path_expr.swift:2:9:2:9 | value | diff --git a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getDeclRef.ql b/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getDeclRef.ql deleted file mode 100644 index 74174fd4bd2f..000000000000 --- a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getDeclRef.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from KeyPathComponent x -where toBeTested(x) and not x.isUnknown() -select x, x.getDeclRef() diff --git a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getSubscriptArgument.expected b/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getSubscriptArgument.expected deleted file mode 100644 index c86fff6a006a..000000000000 --- a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getSubscriptArgument.expected +++ /dev/null @@ -1,2 +0,0 @@ -| key_path_expr.swift:12:24:12:26 | KeyPathComponent | 0 | key_path_expr.swift:12:25:12:25 | : 0 | -| key_path_expr.swift:13:34:13:38 | KeyPathComponent | 0 | key_path_expr.swift:13:35:13:35 | : a | diff --git a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getSubscriptArgument.ql b/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getSubscriptArgument.ql deleted file mode 100644 index 30b149e82044..000000000000 --- a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getSubscriptArgument.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from KeyPathComponent x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getSubscriptArgument(index) diff --git a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getTupleIndex.expected b/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getTupleIndex.expected deleted file mode 100644 index d4563136606a..000000000000 --- a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getTupleIndex.expected +++ /dev/null @@ -1 +0,0 @@ -| key_path_expr.swift:18:32:18:32 | KeyPathComponent | 0 | diff --git a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getTupleIndex.ql b/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getTupleIndex.ql deleted file mode 100644 index 40e2e8924a82..000000000000 --- a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent_getTupleIndex.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from KeyPathComponent x -where toBeTested(x) and not x.isUnknown() -select x, x.getTupleIndex() diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.expected b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.expected index 15b05916e441..7512cce37122 100644 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.expected +++ b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.expected @@ -1,36 +1,165 @@ -| accessors.swift:2:9:2:9 | _modify | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:2:9:2:9 | get | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:2:9:2:9 | set | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:3:9:3:9 | _modify | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:4:9:4:28 | get | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:5:9:5:42 | set | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:7:9:7:9 | _modify | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:7:9:7:9 | get | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:7:9:7:9 | set | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:8:9:8:29 | willSet | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | yes | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:11:9:11:9 | _modify | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:11:9:11:9 | get | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:11:9:11:9 | set | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:12:9:12:19 | willSet | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | yes | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:15:9:15:9 | _modify | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:15:9:15:9 | get | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:15:9:15:9 | set | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:16:9:16:28 | didSet | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | yes | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:19:9:19:9 | _modify | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:19:9:19:9 | get | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:19:9:19:9 | set | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:20:9:20:18 | didSet | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | yes | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:23:9:23:9 | _modify | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:23:9:23:9 | get | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:23:9:23:9 | set | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:24:9:24:19 | willSet | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | yes | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:26:9:26:18 | didSet | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | yes | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:29:9:29:9 | get | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:29:9:29:9 | set | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:30:9:32:9 | _read | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | yes | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:33:9:35:9 | _modify | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:38:9:38:9 | _modify | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:38:9:38:9 | get | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:38:9:38:9 | set | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:39:9:41:9 | unsafeAddress | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (Foo) -> () -> UnsafePointer | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | yes | isUnsafeMutableAddress: | no | -| accessors.swift:42:9:44:9 | unsafeMutableAddress | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | accessors | getNumberOfMembers: | 0 | getInterfaceType: | (inout Foo) -> () -> UnsafeMutablePointer | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | yes | +instances +| accessors.swift:2:9:2:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:2:9:2:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:2:9:2:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:3:9:3:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:4:9:4:28 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:5:9:5:42 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:7:9:7:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:7:9:7:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:7:9:7:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:8:9:8:29 | willSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | yes | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:11:9:11:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:11:9:11:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:11:9:11:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:12:9:12:19 | willSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | yes | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:15:9:15:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:15:9:15:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:15:9:15:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:16:9:16:28 | didSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | yes | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:19:9:19:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:19:9:19:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:19:9:19:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:20:9:20:18 | didSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | yes | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:23:9:23:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:23:9:23:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:23:9:23:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:24:9:24:19 | willSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | yes | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:26:9:26:18 | didSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | yes | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:29:9:29:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:29:9:29:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:30:9:32:9 | _read | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | yes | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:33:9:35:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:38:9:38:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:38:9:38:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:38:9:38:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | +| accessors.swift:39:9:41:9 | unsafeAddress | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> UnsafePointer | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | yes | isUnsafeMutableAddress: | no | +| accessors.swift:42:9:44:9 | unsafeMutableAddress | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> UnsafeMutablePointer | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | yes | +getGenericTypeParam +getMember +getName +| accessors.swift:2:9:2:9 | _modify | (unnamed function decl) | +| accessors.swift:2:9:2:9 | get | (unnamed function decl) | +| accessors.swift:2:9:2:9 | set | (unnamed function decl) | +| accessors.swift:3:9:3:9 | _modify | (unnamed function decl) | +| accessors.swift:4:9:4:28 | get | (unnamed function decl) | +| accessors.swift:5:9:5:42 | set | (unnamed function decl) | +| accessors.swift:7:9:7:9 | _modify | (unnamed function decl) | +| accessors.swift:7:9:7:9 | get | (unnamed function decl) | +| accessors.swift:7:9:7:9 | set | (unnamed function decl) | +| accessors.swift:8:9:8:29 | willSet | (unnamed function decl) | +| accessors.swift:11:9:11:9 | _modify | (unnamed function decl) | +| accessors.swift:11:9:11:9 | get | (unnamed function decl) | +| accessors.swift:11:9:11:9 | set | (unnamed function decl) | +| accessors.swift:12:9:12:19 | willSet | (unnamed function decl) | +| accessors.swift:15:9:15:9 | _modify | (unnamed function decl) | +| accessors.swift:15:9:15:9 | get | (unnamed function decl) | +| accessors.swift:15:9:15:9 | set | (unnamed function decl) | +| accessors.swift:16:9:16:28 | didSet | (unnamed function decl) | +| accessors.swift:19:9:19:9 | _modify | (unnamed function decl) | +| accessors.swift:19:9:19:9 | get | (unnamed function decl) | +| accessors.swift:19:9:19:9 | set | (unnamed function decl) | +| accessors.swift:20:9:20:18 | didSet | (unnamed function decl) | +| accessors.swift:23:9:23:9 | _modify | (unnamed function decl) | +| accessors.swift:23:9:23:9 | get | (unnamed function decl) | +| accessors.swift:23:9:23:9 | set | (unnamed function decl) | +| accessors.swift:24:9:24:19 | willSet | (unnamed function decl) | +| accessors.swift:26:9:26:18 | didSet | (unnamed function decl) | +| accessors.swift:29:9:29:9 | get | (unnamed function decl) | +| accessors.swift:29:9:29:9 | set | (unnamed function decl) | +| accessors.swift:30:9:32:9 | _read | (unnamed function decl) | +| accessors.swift:33:9:35:9 | _modify | (unnamed function decl) | +| accessors.swift:38:9:38:9 | _modify | (unnamed function decl) | +| accessors.swift:38:9:38:9 | get | (unnamed function decl) | +| accessors.swift:38:9:38:9 | set | (unnamed function decl) | +| accessors.swift:39:9:41:9 | unsafeAddress | (unnamed function decl) | +| accessors.swift:42:9:44:9 | unsafeMutableAddress | (unnamed function decl) | +getSelfParam +| accessors.swift:2:9:2:9 | _modify | accessors.swift:2:9:2:9 | self | +| accessors.swift:2:9:2:9 | get | accessors.swift:2:9:2:9 | self | +| accessors.swift:2:9:2:9 | set | accessors.swift:2:9:2:9 | self | +| accessors.swift:3:9:3:9 | _modify | accessors.swift:3:9:3:9 | self | +| accessors.swift:4:9:4:28 | get | accessors.swift:4:9:4:9 | self | +| accessors.swift:5:9:5:42 | set | accessors.swift:5:9:5:9 | self | +| accessors.swift:7:9:7:9 | _modify | accessors.swift:7:9:7:9 | self | +| accessors.swift:7:9:7:9 | get | accessors.swift:7:9:7:9 | self | +| accessors.swift:7:9:7:9 | set | accessors.swift:7:9:7:9 | self | +| accessors.swift:8:9:8:29 | willSet | accessors.swift:8:9:8:9 | self | +| accessors.swift:11:9:11:9 | _modify | accessors.swift:11:9:11:9 | self | +| accessors.swift:11:9:11:9 | get | accessors.swift:11:9:11:9 | self | +| accessors.swift:11:9:11:9 | set | accessors.swift:11:9:11:9 | self | +| accessors.swift:12:9:12:19 | willSet | accessors.swift:12:9:12:9 | self | +| accessors.swift:15:9:15:9 | _modify | accessors.swift:15:9:15:9 | self | +| accessors.swift:15:9:15:9 | get | accessors.swift:15:9:15:9 | self | +| accessors.swift:15:9:15:9 | set | accessors.swift:15:9:15:9 | self | +| accessors.swift:16:9:16:28 | didSet | accessors.swift:16:9:16:9 | self | +| accessors.swift:19:9:19:9 | _modify | accessors.swift:19:9:19:9 | self | +| accessors.swift:19:9:19:9 | get | accessors.swift:19:9:19:9 | self | +| accessors.swift:19:9:19:9 | set | accessors.swift:19:9:19:9 | self | +| accessors.swift:20:9:20:18 | didSet | accessors.swift:20:9:20:9 | self | +| accessors.swift:23:9:23:9 | _modify | accessors.swift:23:9:23:9 | self | +| accessors.swift:23:9:23:9 | get | accessors.swift:23:9:23:9 | self | +| accessors.swift:23:9:23:9 | set | accessors.swift:23:9:23:9 | self | +| accessors.swift:24:9:24:19 | willSet | accessors.swift:24:9:24:9 | self | +| accessors.swift:26:9:26:18 | didSet | accessors.swift:26:9:26:9 | self | +| accessors.swift:29:9:29:9 | get | accessors.swift:29:9:29:9 | self | +| accessors.swift:29:9:29:9 | set | accessors.swift:29:9:29:9 | self | +| accessors.swift:30:9:32:9 | _read | accessors.swift:30:9:30:9 | self | +| accessors.swift:33:9:35:9 | _modify | accessors.swift:33:9:33:9 | self | +| accessors.swift:38:9:38:9 | _modify | accessors.swift:38:9:38:9 | self | +| accessors.swift:38:9:38:9 | get | accessors.swift:38:9:38:9 | self | +| accessors.swift:38:9:38:9 | set | accessors.swift:38:9:38:9 | self | +| accessors.swift:39:9:41:9 | unsafeAddress | accessors.swift:39:9:39:9 | self | +| accessors.swift:42:9:44:9 | unsafeMutableAddress | accessors.swift:42:9:42:9 | self | +getParam +| accessors.swift:2:9:2:9 | set | 0 | accessors.swift:2:9:2:9 | value | +| accessors.swift:5:9:5:42 | set | 0 | accessors.swift:5:13:5:13 | newValue | +| accessors.swift:7:9:7:9 | set | 0 | accessors.swift:7:9:7:9 | value | +| accessors.swift:8:9:8:29 | willSet | 0 | accessors.swift:8:17:8:17 | newValue | +| accessors.swift:11:9:11:9 | set | 0 | accessors.swift:11:9:11:9 | value | +| accessors.swift:12:9:12:19 | willSet | 0 | accessors.swift:12:9:12:9 | newValue | +| accessors.swift:15:9:15:9 | set | 0 | accessors.swift:15:9:15:9 | value | +| accessors.swift:16:9:16:28 | didSet | 0 | accessors.swift:16:16:16:16 | oldValue | +| accessors.swift:19:9:19:9 | set | 0 | accessors.swift:19:9:19:9 | value | +| accessors.swift:23:9:23:9 | set | 0 | accessors.swift:23:9:23:9 | value | +| accessors.swift:24:9:24:19 | willSet | 0 | accessors.swift:24:9:24:9 | newValue | +| accessors.swift:29:9:29:9 | set | 0 | accessors.swift:29:9:29:9 | value | +| accessors.swift:38:9:38:9 | set | 0 | accessors.swift:38:9:38:9 | value | +getBody +| accessors.swift:2:9:2:9 | _modify | accessors.swift:2:9:2:9 | { ... } | +| accessors.swift:2:9:2:9 | get | accessors.swift:2:9:2:9 | { ... } | +| accessors.swift:2:9:2:9 | set | accessors.swift:2:9:2:9 | { ... } | +| accessors.swift:3:9:3:9 | _modify | accessors.swift:3:9:3:9 | { ... } | +| accessors.swift:4:9:4:28 | get | accessors.swift:4:13:4:28 | { ... } | +| accessors.swift:5:9:5:42 | set | accessors.swift:5:23:5:42 | { ... } | +| accessors.swift:7:9:7:9 | _modify | accessors.swift:7:9:7:9 | { ... } | +| accessors.swift:7:9:7:9 | get | accessors.swift:7:9:7:9 | { ... } | +| accessors.swift:7:9:7:9 | set | accessors.swift:7:9:7:9 | { ... } | +| accessors.swift:8:9:8:29 | willSet | accessors.swift:8:27:8:29 | { ... } | +| accessors.swift:11:9:11:9 | _modify | accessors.swift:11:9:11:9 | { ... } | +| accessors.swift:11:9:11:9 | get | accessors.swift:11:9:11:9 | { ... } | +| accessors.swift:11:9:11:9 | set | accessors.swift:11:9:11:9 | { ... } | +| accessors.swift:12:9:12:19 | willSet | accessors.swift:12:17:12:19 | { ... } | +| accessors.swift:15:9:15:9 | _modify | accessors.swift:15:9:15:9 | { ... } | +| accessors.swift:15:9:15:9 | get | accessors.swift:15:9:15:9 | { ... } | +| accessors.swift:15:9:15:9 | set | accessors.swift:15:9:15:9 | { ... } | +| accessors.swift:16:9:16:28 | didSet | accessors.swift:16:26:16:28 | { ... } | +| accessors.swift:19:9:19:9 | _modify | accessors.swift:19:9:19:9 | { ... } | +| accessors.swift:19:9:19:9 | get | accessors.swift:19:9:19:9 | { ... } | +| accessors.swift:19:9:19:9 | set | accessors.swift:19:9:19:9 | { ... } | +| accessors.swift:20:9:20:18 | didSet | accessors.swift:20:16:20:18 | { ... } | +| accessors.swift:23:9:23:9 | _modify | accessors.swift:23:9:23:9 | { ... } | +| accessors.swift:23:9:23:9 | get | accessors.swift:23:9:23:9 | { ... } | +| accessors.swift:23:9:23:9 | set | accessors.swift:23:9:23:9 | { ... } | +| accessors.swift:24:9:24:19 | willSet | accessors.swift:24:17:24:19 | { ... } | +| accessors.swift:26:9:26:18 | didSet | accessors.swift:26:16:26:18 | { ... } | +| accessors.swift:29:9:29:9 | get | accessors.swift:29:9:29:9 | { ... } | +| accessors.swift:29:9:29:9 | set | accessors.swift:29:9:29:9 | { ... } | +| accessors.swift:30:9:32:9 | _read | accessors.swift:30:15:32:9 | { ... } | +| accessors.swift:33:9:35:9 | _modify | accessors.swift:33:17:35:9 | { ... } | +| accessors.swift:38:9:38:9 | _modify | accessors.swift:38:9:38:9 | { ... } | +| accessors.swift:38:9:38:9 | get | accessors.swift:38:9:38:9 | { ... } | +| accessors.swift:38:9:38:9 | set | accessors.swift:38:9:38:9 | { ... } | +| accessors.swift:39:9:41:9 | unsafeAddress | accessors.swift:39:23:41:9 | { ... } | +| accessors.swift:42:9:44:9 | unsafeMutableAddress | accessors.swift:42:30:44:9 | { ... } | +getCapture diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.ql b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.ql index f4e231c7671d..f05c5d94bba8 100644 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.ql +++ b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.ql @@ -2,38 +2,64 @@ import codeql.swift.elements import TestUtils -from - Accessor x, string hasName, string hasSelfParam, int getNumberOfParams, string hasBody, - int getNumberOfCaptures, int getNumberOfGenericTypeParams, ModuleDecl getModule, - int getNumberOfMembers, Type getInterfaceType, string isGetter, string isSetter, string isWillSet, - string isDidSet, string isRead, string isModify, string isUnsafeAddress, +query predicate instances( + Accessor x, string getModule__label, ModuleDecl getModule, string getInterfaceType__label, + Type getInterfaceType, string isGetter__label, string isGetter, string isSetter__label, + string isSetter, string isWillSet__label, string isWillSet, string isDidSet__label, + string isDidSet, string isRead__label, string isRead, string isModify__label, string isModify, + string isUnsafeAddress__label, string isUnsafeAddress, string isUnsafeMutableAddress__label, string isUnsafeMutableAddress -where +) { toBeTested(x) and not x.isUnknown() and - (if x.hasName() then hasName = "yes" else hasName = "no") and - (if x.hasSelfParam() then hasSelfParam = "yes" else hasSelfParam = "no") and - getNumberOfParams = x.getNumberOfParams() and - (if x.hasBody() then hasBody = "yes" else hasBody = "no") and - getNumberOfCaptures = x.getNumberOfCaptures() and - getNumberOfGenericTypeParams = x.getNumberOfGenericTypeParams() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and + getInterfaceType__label = "getInterfaceType:" and getInterfaceType = x.getInterfaceType() and + isGetter__label = "isGetter:" and (if x.isGetter() then isGetter = "yes" else isGetter = "no") and + isSetter__label = "isSetter:" and (if x.isSetter() then isSetter = "yes" else isSetter = "no") and + isWillSet__label = "isWillSet:" and (if x.isWillSet() then isWillSet = "yes" else isWillSet = "no") and + isDidSet__label = "isDidSet:" and (if x.isDidSet() then isDidSet = "yes" else isDidSet = "no") and + isRead__label = "isRead:" and (if x.isRead() then isRead = "yes" else isRead = "no") and + isModify__label = "isModify:" and (if x.isModify() then isModify = "yes" else isModify = "no") and + isUnsafeAddress__label = "isUnsafeAddress:" and (if x.isUnsafeAddress() then isUnsafeAddress = "yes" else isUnsafeAddress = "no") and + isUnsafeMutableAddress__label = "isUnsafeMutableAddress:" and if x.isUnsafeMutableAddress() then isUnsafeMutableAddress = "yes" else isUnsafeMutableAddress = "no" -select x, "hasName:", hasName, "hasSelfParam:", hasSelfParam, "getNumberOfParams:", - getNumberOfParams, "hasBody:", hasBody, "getNumberOfCaptures:", getNumberOfCaptures, - "getNumberOfGenericTypeParams:", getNumberOfGenericTypeParams, "getModule:", getModule, - "getNumberOfMembers:", getNumberOfMembers, "getInterfaceType:", getInterfaceType, "isGetter:", - isGetter, "isSetter:", isSetter, "isWillSet:", isWillSet, "isDidSet:", isDidSet, "isRead:", - isRead, "isModify:", isModify, "isUnsafeAddress:", isUnsafeAddress, "isUnsafeMutableAddress:", - isUnsafeMutableAddress +} + +query predicate getGenericTypeParam(Accessor x, int index, GenericTypeParamDecl getGenericTypeParam) { + toBeTested(x) and not x.isUnknown() and getGenericTypeParam = x.getGenericTypeParam(index) +} + +query predicate getMember(Accessor x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getName(Accessor x, string getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getSelfParam(Accessor x, ParamDecl getSelfParam) { + toBeTested(x) and not x.isUnknown() and getSelfParam = x.getSelfParam() +} + +query predicate getParam(Accessor x, int index, ParamDecl getParam) { + toBeTested(x) and not x.isUnknown() and getParam = x.getParam(index) +} + +query predicate getBody(Accessor x, BraceStmt getBody) { + toBeTested(x) and not x.isUnknown() and getBody = x.getBody() +} + +query predicate getCapture(Accessor x, int index, CapturedDecl getCapture) { + toBeTested(x) and not x.isUnknown() and getCapture = x.getCapture(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getBody.expected b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getBody.expected deleted file mode 100644 index 7eccbae719f2..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getBody.expected +++ /dev/null @@ -1,36 +0,0 @@ -| accessors.swift:2:9:2:9 | _modify | accessors.swift:2:9:2:9 | { ... } | -| accessors.swift:2:9:2:9 | get | accessors.swift:2:9:2:9 | { ... } | -| accessors.swift:2:9:2:9 | set | accessors.swift:2:9:2:9 | { ... } | -| accessors.swift:3:9:3:9 | _modify | accessors.swift:3:9:3:9 | { ... } | -| accessors.swift:4:9:4:28 | get | accessors.swift:4:13:4:28 | { ... } | -| accessors.swift:5:9:5:42 | set | accessors.swift:5:23:5:42 | { ... } | -| accessors.swift:7:9:7:9 | _modify | accessors.swift:7:9:7:9 | { ... } | -| accessors.swift:7:9:7:9 | get | accessors.swift:7:9:7:9 | { ... } | -| accessors.swift:7:9:7:9 | set | accessors.swift:7:9:7:9 | { ... } | -| accessors.swift:8:9:8:29 | willSet | accessors.swift:8:27:8:29 | { ... } | -| accessors.swift:11:9:11:9 | _modify | accessors.swift:11:9:11:9 | { ... } | -| accessors.swift:11:9:11:9 | get | accessors.swift:11:9:11:9 | { ... } | -| accessors.swift:11:9:11:9 | set | accessors.swift:11:9:11:9 | { ... } | -| accessors.swift:12:9:12:19 | willSet | accessors.swift:12:17:12:19 | { ... } | -| accessors.swift:15:9:15:9 | _modify | accessors.swift:15:9:15:9 | { ... } | -| accessors.swift:15:9:15:9 | get | accessors.swift:15:9:15:9 | { ... } | -| accessors.swift:15:9:15:9 | set | accessors.swift:15:9:15:9 | { ... } | -| accessors.swift:16:9:16:28 | didSet | accessors.swift:16:26:16:28 | { ... } | -| accessors.swift:19:9:19:9 | _modify | accessors.swift:19:9:19:9 | { ... } | -| accessors.swift:19:9:19:9 | get | accessors.swift:19:9:19:9 | { ... } | -| accessors.swift:19:9:19:9 | set | accessors.swift:19:9:19:9 | { ... } | -| accessors.swift:20:9:20:18 | didSet | accessors.swift:20:16:20:18 | { ... } | -| accessors.swift:23:9:23:9 | _modify | accessors.swift:23:9:23:9 | { ... } | -| accessors.swift:23:9:23:9 | get | accessors.swift:23:9:23:9 | { ... } | -| accessors.swift:23:9:23:9 | set | accessors.swift:23:9:23:9 | { ... } | -| accessors.swift:24:9:24:19 | willSet | accessors.swift:24:17:24:19 | { ... } | -| accessors.swift:26:9:26:18 | didSet | accessors.swift:26:16:26:18 | { ... } | -| accessors.swift:29:9:29:9 | get | accessors.swift:29:9:29:9 | { ... } | -| accessors.swift:29:9:29:9 | set | accessors.swift:29:9:29:9 | { ... } | -| accessors.swift:30:9:32:9 | _read | accessors.swift:30:15:32:9 | { ... } | -| accessors.swift:33:9:35:9 | _modify | accessors.swift:33:17:35:9 | { ... } | -| accessors.swift:38:9:38:9 | _modify | accessors.swift:38:9:38:9 | { ... } | -| accessors.swift:38:9:38:9 | get | accessors.swift:38:9:38:9 | { ... } | -| accessors.swift:38:9:38:9 | set | accessors.swift:38:9:38:9 | { ... } | -| accessors.swift:39:9:41:9 | unsafeAddress | accessors.swift:39:23:41:9 | { ... } | -| accessors.swift:42:9:44:9 | unsafeMutableAddress | accessors.swift:42:30:44:9 | { ... } | diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getBody.ql b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getBody.ql deleted file mode 100644 index ad96f239082f..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getBody.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from Accessor x -where toBeTested(x) and not x.isUnknown() -select x, x.getBody() diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getCapture.expected b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getCapture.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getCapture.ql b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getCapture.ql deleted file mode 100644 index 173f3067c0c3..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getCapture.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from Accessor x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getCapture(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getGenericTypeParam.expected b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getGenericTypeParam.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getGenericTypeParam.ql b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getGenericTypeParam.ql deleted file mode 100644 index 2c4d348c5500..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getGenericTypeParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from Accessor x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getGenericTypeParam(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getMember.ql deleted file mode 100644 index 3d4fe6d29722..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from Accessor x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getName.expected b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getName.expected deleted file mode 100644 index 929255a57edc..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getName.expected +++ /dev/null @@ -1,36 +0,0 @@ -| accessors.swift:2:9:2:9 | _modify | (unnamed function decl) | -| accessors.swift:2:9:2:9 | get | (unnamed function decl) | -| accessors.swift:2:9:2:9 | set | (unnamed function decl) | -| accessors.swift:3:9:3:9 | _modify | (unnamed function decl) | -| accessors.swift:4:9:4:28 | get | (unnamed function decl) | -| accessors.swift:5:9:5:42 | set | (unnamed function decl) | -| accessors.swift:7:9:7:9 | _modify | (unnamed function decl) | -| accessors.swift:7:9:7:9 | get | (unnamed function decl) | -| accessors.swift:7:9:7:9 | set | (unnamed function decl) | -| accessors.swift:8:9:8:29 | willSet | (unnamed function decl) | -| accessors.swift:11:9:11:9 | _modify | (unnamed function decl) | -| accessors.swift:11:9:11:9 | get | (unnamed function decl) | -| accessors.swift:11:9:11:9 | set | (unnamed function decl) | -| accessors.swift:12:9:12:19 | willSet | (unnamed function decl) | -| accessors.swift:15:9:15:9 | _modify | (unnamed function decl) | -| accessors.swift:15:9:15:9 | get | (unnamed function decl) | -| accessors.swift:15:9:15:9 | set | (unnamed function decl) | -| accessors.swift:16:9:16:28 | didSet | (unnamed function decl) | -| accessors.swift:19:9:19:9 | _modify | (unnamed function decl) | -| accessors.swift:19:9:19:9 | get | (unnamed function decl) | -| accessors.swift:19:9:19:9 | set | (unnamed function decl) | -| accessors.swift:20:9:20:18 | didSet | (unnamed function decl) | -| accessors.swift:23:9:23:9 | _modify | (unnamed function decl) | -| accessors.swift:23:9:23:9 | get | (unnamed function decl) | -| accessors.swift:23:9:23:9 | set | (unnamed function decl) | -| accessors.swift:24:9:24:19 | willSet | (unnamed function decl) | -| accessors.swift:26:9:26:18 | didSet | (unnamed function decl) | -| accessors.swift:29:9:29:9 | get | (unnamed function decl) | -| accessors.swift:29:9:29:9 | set | (unnamed function decl) | -| accessors.swift:30:9:32:9 | _read | (unnamed function decl) | -| accessors.swift:33:9:35:9 | _modify | (unnamed function decl) | -| accessors.swift:38:9:38:9 | _modify | (unnamed function decl) | -| accessors.swift:38:9:38:9 | get | (unnamed function decl) | -| accessors.swift:38:9:38:9 | set | (unnamed function decl) | -| accessors.swift:39:9:41:9 | unsafeAddress | (unnamed function decl) | -| accessors.swift:42:9:44:9 | unsafeMutableAddress | (unnamed function decl) | diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getName.ql b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getName.ql deleted file mode 100644 index 9d29b101bdc2..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from Accessor x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getParam.expected b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getParam.expected deleted file mode 100644 index e0544b5d4f5f..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getParam.expected +++ /dev/null @@ -1,13 +0,0 @@ -| accessors.swift:2:9:2:9 | set | 0 | accessors.swift:2:9:2:9 | value | -| accessors.swift:5:9:5:42 | set | 0 | accessors.swift:5:13:5:13 | newValue | -| accessors.swift:7:9:7:9 | set | 0 | accessors.swift:7:9:7:9 | value | -| accessors.swift:8:9:8:29 | willSet | 0 | accessors.swift:8:17:8:17 | newValue | -| accessors.swift:11:9:11:9 | set | 0 | accessors.swift:11:9:11:9 | value | -| accessors.swift:12:9:12:19 | willSet | 0 | accessors.swift:12:9:12:9 | newValue | -| accessors.swift:15:9:15:9 | set | 0 | accessors.swift:15:9:15:9 | value | -| accessors.swift:16:9:16:28 | didSet | 0 | accessors.swift:16:16:16:16 | oldValue | -| accessors.swift:19:9:19:9 | set | 0 | accessors.swift:19:9:19:9 | value | -| accessors.swift:23:9:23:9 | set | 0 | accessors.swift:23:9:23:9 | value | -| accessors.swift:24:9:24:19 | willSet | 0 | accessors.swift:24:9:24:9 | newValue | -| accessors.swift:29:9:29:9 | set | 0 | accessors.swift:29:9:29:9 | value | -| accessors.swift:38:9:38:9 | set | 0 | accessors.swift:38:9:38:9 | value | diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getParam.ql b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getParam.ql deleted file mode 100644 index 0640648bf1be..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from Accessor x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getParam(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getSelfParam.expected b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getSelfParam.expected deleted file mode 100644 index 62143cca406d..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getSelfParam.expected +++ /dev/null @@ -1,36 +0,0 @@ -| accessors.swift:2:9:2:9 | _modify | accessors.swift:2:9:2:9 | self | -| accessors.swift:2:9:2:9 | get | accessors.swift:2:9:2:9 | self | -| accessors.swift:2:9:2:9 | set | accessors.swift:2:9:2:9 | self | -| accessors.swift:3:9:3:9 | _modify | accessors.swift:3:9:3:9 | self | -| accessors.swift:4:9:4:28 | get | accessors.swift:4:9:4:9 | self | -| accessors.swift:5:9:5:42 | set | accessors.swift:5:9:5:9 | self | -| accessors.swift:7:9:7:9 | _modify | accessors.swift:7:9:7:9 | self | -| accessors.swift:7:9:7:9 | get | accessors.swift:7:9:7:9 | self | -| accessors.swift:7:9:7:9 | set | accessors.swift:7:9:7:9 | self | -| accessors.swift:8:9:8:29 | willSet | accessors.swift:8:9:8:9 | self | -| accessors.swift:11:9:11:9 | _modify | accessors.swift:11:9:11:9 | self | -| accessors.swift:11:9:11:9 | get | accessors.swift:11:9:11:9 | self | -| accessors.swift:11:9:11:9 | set | accessors.swift:11:9:11:9 | self | -| accessors.swift:12:9:12:19 | willSet | accessors.swift:12:9:12:9 | self | -| accessors.swift:15:9:15:9 | _modify | accessors.swift:15:9:15:9 | self | -| accessors.swift:15:9:15:9 | get | accessors.swift:15:9:15:9 | self | -| accessors.swift:15:9:15:9 | set | accessors.swift:15:9:15:9 | self | -| accessors.swift:16:9:16:28 | didSet | accessors.swift:16:9:16:9 | self | -| accessors.swift:19:9:19:9 | _modify | accessors.swift:19:9:19:9 | self | -| accessors.swift:19:9:19:9 | get | accessors.swift:19:9:19:9 | self | -| accessors.swift:19:9:19:9 | set | accessors.swift:19:9:19:9 | self | -| accessors.swift:20:9:20:18 | didSet | accessors.swift:20:9:20:9 | self | -| accessors.swift:23:9:23:9 | _modify | accessors.swift:23:9:23:9 | self | -| accessors.swift:23:9:23:9 | get | accessors.swift:23:9:23:9 | self | -| accessors.swift:23:9:23:9 | set | accessors.swift:23:9:23:9 | self | -| accessors.swift:24:9:24:19 | willSet | accessors.swift:24:9:24:9 | self | -| accessors.swift:26:9:26:18 | didSet | accessors.swift:26:9:26:9 | self | -| accessors.swift:29:9:29:9 | get | accessors.swift:29:9:29:9 | self | -| accessors.swift:29:9:29:9 | set | accessors.swift:29:9:29:9 | self | -| accessors.swift:30:9:32:9 | _read | accessors.swift:30:9:30:9 | self | -| accessors.swift:33:9:35:9 | _modify | accessors.swift:33:9:33:9 | self | -| accessors.swift:38:9:38:9 | _modify | accessors.swift:38:9:38:9 | self | -| accessors.swift:38:9:38:9 | get | accessors.swift:38:9:38:9 | self | -| accessors.swift:38:9:38:9 | set | accessors.swift:38:9:38:9 | self | -| accessors.swift:39:9:41:9 | unsafeAddress | accessors.swift:39:9:39:9 | self | -| accessors.swift:42:9:44:9 | unsafeMutableAddress | accessors.swift:42:9:42:9 | self | diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getSelfParam.ql b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getSelfParam.ql deleted file mode 100644 index 2e98f9d74cbc..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor_getSelfParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from Accessor x -where toBeTested(x) and not x.isUnknown() -select x, x.getSelfParam() diff --git a/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.expected b/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.expected index ee463332f1d3..9daa87b09ccd 100644 --- a/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.expected @@ -1,2 +1,6 @@ -| associated_type.swift:2:5:2:20 | Bar | getModule: | file://:0:0:0:0 | associated_type | getNumberOfMembers: | 0 | getInterfaceType: | Self.Bar.Type | getName: | Bar | getNumberOfInheritedTypes: | 0 | -| associated_type.swift:3:5:3:25 | Baz | getModule: | file://:0:0:0:0 | associated_type | getNumberOfMembers: | 0 | getInterfaceType: | Self.Baz.Type | getName: | Baz | getNumberOfInheritedTypes: | 1 | +instances +| associated_type.swift:2:5:2:20 | Bar | getModule: | file://:0:0:0:0 | associated_type | getInterfaceType: | Self.Bar.Type | getName: | Bar | +| associated_type.swift:3:5:3:25 | Baz | getModule: | file://:0:0:0:0 | associated_type | getInterfaceType: | Self.Baz.Type | getName: | Baz | +getMember +getInheritedType +| associated_type.swift:3:5:3:25 | Baz | 0 | Equatable | diff --git a/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.ql b/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.ql index 057981c23644..41cc9d349a43 100644 --- a/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.ql @@ -2,16 +2,24 @@ import codeql.swift.elements import TestUtils -from - AssociatedTypeDecl x, ModuleDecl getModule, int getNumberOfMembers, Type getInterfaceType, - string getName, int getNumberOfInheritedTypes -where +query predicate instances( + AssociatedTypeDecl x, string getModule__label, ModuleDecl getModule, + string getInterfaceType__label, Type getInterfaceType, string getName__label, string getName +) { toBeTested(x) and not x.isUnknown() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and + getInterfaceType__label = "getInterfaceType:" and getInterfaceType = x.getInterfaceType() and - getName = x.getName() and - getNumberOfInheritedTypes = x.getNumberOfInheritedTypes() -select x, "getModule:", getModule, "getNumberOfMembers:", getNumberOfMembers, "getInterfaceType:", - getInterfaceType, "getName:", getName, "getNumberOfInheritedTypes:", getNumberOfInheritedTypes + getName__label = "getName:" and + getName = x.getName() +} + +query predicate getMember(AssociatedTypeDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getInheritedType(AssociatedTypeDecl x, int index, Type getInheritedType) { + toBeTested(x) and not x.isUnknown() and getInheritedType = x.getInheritedType(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getInheritedType.expected b/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getInheritedType.expected deleted file mode 100644 index 6cd068031f60..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getInheritedType.expected +++ /dev/null @@ -1 +0,0 @@ -| associated_type.swift:3:5:3:25 | Baz | 0 | Equatable | diff --git a/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getInheritedType.ql b/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getInheritedType.ql deleted file mode 100644 index 2c0f23a876ae..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getInheritedType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from AssociatedTypeDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getInheritedType(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getMember.ql deleted file mode 100644 index c36cb6ef4f9e..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from AssociatedTypeDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.expected b/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.expected index 371312cb6cb5..cbf62d5bd64f 100644 --- a/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.expected @@ -1,41 +1,43 @@ -| closures.swift:8:12:8:12 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:7:6:7:6 | x | isDirect: | yes | isEscaping: | no | -| closures.swift:9:12:9:12 | y | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:6:7:6:7 | y | isDirect: | yes | isEscaping: | no | -| closures.swift:16:3:16:3 | escape | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:12:5:12:5 | escape | isDirect: | yes | isEscaping: | yes | -| closures.swift:17:5:17:5 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:15:7:15:7 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:24:3:24:3 | escape | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:12:5:12:5 | escape | isDirect: | yes | isEscaping: | yes | -| closures.swift:31:11:31:11 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:29:7:29:7 | x | isDirect: | no | isEscaping: | no | -| closures.swift:32:14:32:14 | f | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:28:7:28:7 | f | isDirect: | no | isEscaping: | no | -| closures.swift:32:14:32:14 | f | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:28:7:28:7 | f | isDirect: | yes | isEscaping: | no | -| closures.swift:32:17:32:17 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:29:7:29:7 | x | isDirect: | yes | isEscaping: | no | -| closures.swift:39:20:39:20 | callback | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:36:21:36:58 | callback | isDirect: | yes | isEscaping: | yes | -| closures.swift:42:35:42:35 | wrapper(_:) | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:38:5:40:5 | wrapper(_:) | isDirect: | no | isEscaping: | yes | -| closures.swift:52:18:52:18 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:51:7:51:7 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:54:13:54:13 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:51:7:51:7 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:61:18:61:18 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:60:7:60:7 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:63:13:63:13 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:60:7:60:7 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:71:3:71:3 | g | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:68:5:68:5 | g | isDirect: | yes | isEscaping: | yes | -| closures.swift:71:14:71:14 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:70:7:70:7 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:73:13:73:13 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:70:7:70:7 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:85:7:85:7 | y | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:79:7:79:7 | y | isDirect: | no | isEscaping: | yes | -| closures.swift:85:7:85:7 | y | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:79:7:79:7 | y | isDirect: | yes | isEscaping: | yes | -| closures.swift:85:18:85:18 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:82:9:82:9 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:88:9:88:9 | b() | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:92:5:98:5 | b() | isDirect: | no | isEscaping: | yes | -| closures.swift:93:7:93:7 | y | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:79:7:79:7 | y | isDirect: | yes | isEscaping: | yes | -| closures.swift:93:20:93:20 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:82:9:82:9 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:96:9:96:9 | a() | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:84:5:90:5 | a() | isDirect: | no | isEscaping: | yes | -| closures.swift:111:15:111:15 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:110:9:110:9 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:111:27:111:27 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:110:9:110:9 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:115:5:115:5 | incrX | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:109:8:109:8 | incrX | isDirect: | yes | isEscaping: | yes | -| closures.swift:130:25:130:25 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:128:7:128:7 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:133:20:133:20 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:128:7:128:7 | x | isDirect: | no | isEscaping: | yes | -| closures.swift:133:20:133:20 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:128:7:128:7 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:133:24:133:24 | y | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:132:22:132:22 | y | isDirect: | yes | isEscaping: | yes | -| closures.swift:151:21:151:21 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:149:10:149:15 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:154:16:154:16 | g(_:) | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:158:3:165:3 | g(_:) | isDirect: | no | isEscaping: | yes | -| closures.swift:155:21:155:21 | next | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:154:9:154:9 | next | isDirect: | yes | isEscaping: | yes | -| closures.swift:155:34:155:34 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:149:10:149:15 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:160:21:160:21 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:158:10:158:15 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:163:16:163:16 | f(_:) | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:149:3:156:3 | f(_:) | isDirect: | no | isEscaping: | yes | -| closures.swift:164:21:164:21 | next | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:163:9:163:9 | next | isDirect: | yes | isEscaping: | yes | -| closures.swift:164:36:164:36 | x | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:158:10:158:15 | x | isDirect: | yes | isEscaping: | yes | -| closures.swift:195:3:195:3 | g | getModule: | file://:0:0:0:0 | closures | getNumberOfMembers: | 0 | getDecl: | closures.swift:68:5:68:5 | g | isDirect: | yes | isEscaping: | yes | +instances +| closures.swift:8:12:8:12 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:7:6:7:6 | x | isDirect: | yes | isEscaping: | no | +| closures.swift:9:12:9:12 | y | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:6:7:6:7 | y | isDirect: | yes | isEscaping: | no | +| closures.swift:16:3:16:3 | escape | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:12:5:12:5 | escape | isDirect: | yes | isEscaping: | yes | +| closures.swift:17:5:17:5 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:15:7:15:7 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:24:3:24:3 | escape | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:12:5:12:5 | escape | isDirect: | yes | isEscaping: | yes | +| closures.swift:31:11:31:11 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:29:7:29:7 | x | isDirect: | no | isEscaping: | no | +| closures.swift:32:14:32:14 | f | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:28:7:28:7 | f | isDirect: | no | isEscaping: | no | +| closures.swift:32:14:32:14 | f | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:28:7:28:7 | f | isDirect: | yes | isEscaping: | no | +| closures.swift:32:17:32:17 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:29:7:29:7 | x | isDirect: | yes | isEscaping: | no | +| closures.swift:39:20:39:20 | callback | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:36:21:36:58 | callback | isDirect: | yes | isEscaping: | yes | +| closures.swift:42:35:42:35 | wrapper(_:) | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:38:5:40:5 | wrapper(_:) | isDirect: | no | isEscaping: | yes | +| closures.swift:52:18:52:18 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:51:7:51:7 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:54:13:54:13 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:51:7:51:7 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:61:18:61:18 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:60:7:60:7 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:63:13:63:13 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:60:7:60:7 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:71:3:71:3 | g | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:68:5:68:5 | g | isDirect: | yes | isEscaping: | yes | +| closures.swift:71:14:71:14 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:70:7:70:7 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:73:13:73:13 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:70:7:70:7 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:85:7:85:7 | y | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:79:7:79:7 | y | isDirect: | no | isEscaping: | yes | +| closures.swift:85:7:85:7 | y | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:79:7:79:7 | y | isDirect: | yes | isEscaping: | yes | +| closures.swift:85:18:85:18 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:82:9:82:9 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:88:9:88:9 | b() | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:92:5:98:5 | b() | isDirect: | no | isEscaping: | yes | +| closures.swift:93:7:93:7 | y | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:79:7:79:7 | y | isDirect: | yes | isEscaping: | yes | +| closures.swift:93:20:93:20 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:82:9:82:9 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:96:9:96:9 | a() | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:84:5:90:5 | a() | isDirect: | no | isEscaping: | yes | +| closures.swift:111:15:111:15 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:110:9:110:9 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:111:27:111:27 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:110:9:110:9 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:115:5:115:5 | incrX | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:109:8:109:8 | incrX | isDirect: | yes | isEscaping: | yes | +| closures.swift:130:25:130:25 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:128:7:128:7 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:133:20:133:20 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:128:7:128:7 | x | isDirect: | no | isEscaping: | yes | +| closures.swift:133:20:133:20 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:128:7:128:7 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:133:24:133:24 | y | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:132:22:132:22 | y | isDirect: | yes | isEscaping: | yes | +| closures.swift:151:21:151:21 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:149:10:149:15 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:154:16:154:16 | g(_:) | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:158:3:165:3 | g(_:) | isDirect: | no | isEscaping: | yes | +| closures.swift:155:21:155:21 | next | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:154:9:154:9 | next | isDirect: | yes | isEscaping: | yes | +| closures.swift:155:34:155:34 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:149:10:149:15 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:160:21:160:21 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:158:10:158:15 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:163:16:163:16 | f(_:) | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:149:3:156:3 | f(_:) | isDirect: | no | isEscaping: | yes | +| closures.swift:164:21:164:21 | next | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:163:9:163:9 | next | isDirect: | yes | isEscaping: | yes | +| closures.swift:164:36:164:36 | x | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:158:10:158:15 | x | isDirect: | yes | isEscaping: | yes | +| closures.swift:195:3:195:3 | g | getModule: | file://:0:0:0:0 | closures | getDecl: | closures.swift:68:5:68:5 | g | isDirect: | yes | isEscaping: | yes | +getMember diff --git a/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.ql b/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.ql index 189558f37677..d4f39d659bce 100644 --- a/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.ql @@ -2,16 +2,23 @@ import codeql.swift.elements import TestUtils -from - CapturedDecl x, ModuleDecl getModule, int getNumberOfMembers, ValueDecl getDecl, string isDirect, +query predicate instances( + CapturedDecl x, string getModule__label, ModuleDecl getModule, string getDecl__label, + ValueDecl getDecl, string isDirect__label, string isDirect, string isEscaping__label, string isEscaping -where +) { toBeTested(x) and not x.isUnknown() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and + getDecl__label = "getDecl:" and getDecl = x.getDecl() and + isDirect__label = "isDirect:" and (if x.isDirect() then isDirect = "yes" else isDirect = "no") and + isEscaping__label = "isEscaping:" and if x.isEscaping() then isEscaping = "yes" else isEscaping = "no" -select x, "getModule:", getModule, "getNumberOfMembers:", getNumberOfMembers, "getDecl:", getDecl, - "isDirect:", isDirect, "isEscaping:", isEscaping +} + +query predicate getMember(CapturedDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl_getMember.ql deleted file mode 100644 index 2709cc86f6f2..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from CapturedDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl.expected b/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl.expected index c09b98045cf0..b15a1cc649df 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl.expected @@ -1,3 +1,23 @@ -| class.swift:1:1:7:1 | Foo | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | class | getNumberOfMembers: | 4 | getInterfaceType: | Foo.Type | getName: | Foo | getNumberOfInheritedTypes: | 0 | getType: | Foo | -| class.swift:11:1:14:1 | Generic | getNumberOfGenericTypeParams: | 2 | getModule: | file://:0:0:0:0 | class | getNumberOfMembers: | 6 | getInterfaceType: | Generic.Type | getName: | Generic | getNumberOfInheritedTypes: | 0 | getType: | Generic | -| class.swift:16:1:17:1 | Baz | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | class | getNumberOfMembers: | 2 | getInterfaceType: | Baz.Type | getName: | Baz | getNumberOfInheritedTypes: | 2 | getType: | Baz | +instances +| class.swift:1:1:7:1 | Foo | getModule: | file://:0:0:0:0 | class | getInterfaceType: | Foo.Type | getName: | Foo | getType: | Foo | +| class.swift:11:1:14:1 | Generic | getModule: | file://:0:0:0:0 | class | getInterfaceType: | Generic.Type | getName: | Generic | getType: | Generic | +| class.swift:16:1:17:1 | Baz | getModule: | file://:0:0:0:0 | class | getInterfaceType: | Baz.Type | getName: | Baz | getType: | Baz | +getGenericTypeParam +| class.swift:11:1:14:1 | Generic | 0 | class.swift:11:15:11:15 | X | +| class.swift:11:1:14:1 | Generic | 1 | class.swift:11:18:11:18 | Y | +getMember +| class.swift:1:1:7:1 | Foo | 0 | class.swift:2:5:2:16 | var ... = ... | +| class.swift:1:1:7:1 | Foo | 1 | class.swift:2:9:2:9 | field | +| class.swift:1:1:7:1 | Foo | 2 | class.swift:4:5:6:5 | Foo.init() | +| class.swift:1:1:7:1 | Foo | 3 | class.swift:1:7:1:7 | Foo.deinit() | +| class.swift:11:1:14:1 | Generic | 0 | class.swift:12:5:12:13 | var ... = ... | +| class.swift:11:1:14:1 | Generic | 1 | class.swift:12:9:12:9 | x | +| class.swift:11:1:14:1 | Generic | 2 | class.swift:13:5:13:13 | var ... = ... | +| class.swift:11:1:14:1 | Generic | 3 | class.swift:13:9:13:9 | y | +| class.swift:11:1:14:1 | Generic | 4 | class.swift:11:7:11:7 | Generic.deinit() | +| class.swift:11:1:14:1 | Generic | 5 | class.swift:11:7:11:7 | Generic.init() | +| class.swift:16:1:17:1 | Baz | 0 | class.swift:16:7:16:7 | Baz.deinit() | +| class.swift:16:1:17:1 | Baz | 1 | class.swift:16:21:16:21 | Baz.init() | +getInheritedType +| class.swift:16:1:17:1 | Baz | 0 | Foo | +| class.swift:16:1:17:1 | Baz | 1 | Bar | diff --git a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl.ql b/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl.ql index 31cec2c9f7ce..e32a98ca2bc0 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl.ql @@ -2,19 +2,30 @@ import codeql.swift.elements import TestUtils -from - ClassDecl x, int getNumberOfGenericTypeParams, ModuleDecl getModule, int getNumberOfMembers, - Type getInterfaceType, string getName, int getNumberOfInheritedTypes, Type getType -where +query predicate instances( + ClassDecl x, string getModule__label, ModuleDecl getModule, string getInterfaceType__label, + Type getInterfaceType, string getName__label, string getName, string getType__label, Type getType +) { toBeTested(x) and not x.isUnknown() and - getNumberOfGenericTypeParams = x.getNumberOfGenericTypeParams() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and + getInterfaceType__label = "getInterfaceType:" and getInterfaceType = x.getInterfaceType() and + getName__label = "getName:" and getName = x.getName() and - getNumberOfInheritedTypes = x.getNumberOfInheritedTypes() and + getType__label = "getType:" and getType = x.getType() -select x, "getNumberOfGenericTypeParams:", getNumberOfGenericTypeParams, "getModule:", getModule, - "getNumberOfMembers:", getNumberOfMembers, "getInterfaceType:", getInterfaceType, "getName:", - getName, "getNumberOfInheritedTypes:", getNumberOfInheritedTypes, "getType:", getType +} + +query predicate getGenericTypeParam(ClassDecl x, int index, GenericTypeParamDecl getGenericTypeParam) { + toBeTested(x) and not x.isUnknown() and getGenericTypeParam = x.getGenericTypeParam(index) +} + +query predicate getMember(ClassDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getInheritedType(ClassDecl x, int index, Type getInheritedType) { + toBeTested(x) and not x.isUnknown() and getInheritedType = x.getInheritedType(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getGenericTypeParam.expected b/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getGenericTypeParam.expected deleted file mode 100644 index 8dd0e061d970..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getGenericTypeParam.expected +++ /dev/null @@ -1,2 +0,0 @@ -| class.swift:11:1:14:1 | Generic | 0 | class.swift:11:15:11:15 | X | -| class.swift:11:1:14:1 | Generic | 1 | class.swift:11:18:11:18 | Y | diff --git a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getGenericTypeParam.ql b/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getGenericTypeParam.ql deleted file mode 100644 index 382d756d5842..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getGenericTypeParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ClassDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getGenericTypeParam(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getInheritedType.expected b/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getInheritedType.expected deleted file mode 100644 index 8d0be1c0267d..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getInheritedType.expected +++ /dev/null @@ -1,2 +0,0 @@ -| class.swift:16:1:17:1 | Baz | 0 | Foo | -| class.swift:16:1:17:1 | Baz | 1 | Bar | diff --git a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getInheritedType.ql b/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getInheritedType.ql deleted file mode 100644 index 92e9fc52b7a1..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getInheritedType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ClassDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getInheritedType(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getMember.expected deleted file mode 100644 index 6c7b4ce0130e..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getMember.expected +++ /dev/null @@ -1,12 +0,0 @@ -| class.swift:1:1:7:1 | Foo | 0 | class.swift:2:5:2:16 | var ... = ... | -| class.swift:1:1:7:1 | Foo | 1 | class.swift:2:9:2:9 | field | -| class.swift:1:1:7:1 | Foo | 2 | class.swift:4:5:6:5 | Foo.init() | -| class.swift:1:1:7:1 | Foo | 3 | class.swift:1:7:1:7 | Foo.deinit() | -| class.swift:11:1:14:1 | Generic | 0 | class.swift:12:5:12:13 | var ... = ... | -| class.swift:11:1:14:1 | Generic | 1 | class.swift:12:9:12:9 | x | -| class.swift:11:1:14:1 | Generic | 2 | class.swift:13:5:13:13 | var ... = ... | -| class.swift:11:1:14:1 | Generic | 3 | class.swift:13:9:13:9 | y | -| class.swift:11:1:14:1 | Generic | 4 | class.swift:11:7:11:7 | Generic.deinit() | -| class.swift:11:1:14:1 | Generic | 5 | class.swift:11:7:11:7 | Generic.init() | -| class.swift:16:1:17:1 | Baz | 0 | class.swift:16:7:16:7 | Baz.deinit() | -| class.swift:16:1:17:1 | Baz | 1 | class.swift:16:21:16:21 | Baz.init() | diff --git a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getMember.ql deleted file mode 100644 index c7651a702b23..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ClassDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.expected b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.expected index 9e05b623dd76..85fef3f52ca5 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.expected @@ -1,28 +1,137 @@ -| var_decls.swift:2:7:2:7 | i | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | i | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 0 | -| var_decls.swift:2:12:2:12 | $i$generator | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | IndexingIterator> | getNumberOfAccessors: | 0 | getName: | $i$generator | getType: | IndexingIterator> | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:4:7:4:7 | i | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | i | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:7:5:7:5 | numbers | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | [Int] | getNumberOfAccessors: | 0 | getName: | numbers | getType: | [Int] | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:10:12:10:12 | numbers | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | [Int] | getNumberOfAccessors: | 1 | getName: | numbers | getType: | [Int] | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 0 | -| var_decls.swift:15:7:15:7 | wrappedValue | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | T | getNumberOfAccessors: | 3 | getName: | wrappedValue | getType: | T | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:20:7:20:7 | wrappedValue | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 3 | getName: | wrappedValue | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:24:15:24:15 | _wrapped | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | X | getNumberOfAccessors: | 3 | getName: | _wrapped | getType: | X | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:24:15:24:15 | wrapped | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 3 | getName: | wrapped | getType: | Int | hasAttachedPropertyWrapperType: | yes | hasParentPattern: | yes | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | yes | hasPropertyWrapperBackingVar: | yes | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:28:7:28:7 | wrappedValue | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 3 | getName: | wrappedValue | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:34:7:34:7 | wrappedValue | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 3 | getName: | wrappedValue | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:35:7:35:7 | projectedValue | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Bool | getNumberOfAccessors: | 3 | getName: | projectedValue | getType: | Bool | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:39:7:39:7 | wrappedValue | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 3 | getName: | wrappedValue | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:40:7:40:7 | projectedValue | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Bool | getNumberOfAccessors: | 3 | getName: | projectedValue | getType: | Bool | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:54:10:54:10 | _w1 | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | X | getNumberOfAccessors: | 0 | getName: | _w1 | getType: | X | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:54:10:54:10 | w1 | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 2 | getName: | w1 | getType: | Int | hasAttachedPropertyWrapperType: | yes | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | yes | hasPropertyWrapperBackingVar: | yes | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:55:24:55:24 | _w2 | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithInit | getNumberOfAccessors: | 0 | getName: | _w2 | getType: | WrapperWithInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:55:24:55:24 | w2 | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 2 | getName: | w2 | getType: | Int | hasAttachedPropertyWrapperType: | yes | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | yes | hasPropertyWrapperBackingVar: | yes | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:56:29:56:29 | $w3 | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Bool | getNumberOfAccessors: | 2 | getName: | $w3 | getType: | Bool | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:56:29:56:29 | _w3 | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjected | getNumberOfAccessors: | 0 | getName: | _w3 | getType: | WrapperWithProjected | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:56:29:56:29 | w3 | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 2 | getName: | w3 | getType: | Int | hasAttachedPropertyWrapperType: | yes | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | yes | hasPropertyWrapperBackingVar: | yes | hasPropertyWrapperProjectionVarBinding: | yes | hasPropertyWrapperProjectionVar: | yes | getIntroducerInt: | 1 | -| var_decls.swift:57:36:57:36 | $w4 | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Bool | getNumberOfAccessors: | 2 | getName: | $w4 | getType: | Bool | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:57:36:57:36 | _w4 | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjectedAndInit | getNumberOfAccessors: | 0 | getName: | _w4 | getType: | WrapperWithProjectedAndInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 1 | -| var_decls.swift:57:36:57:36 | w4 | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 2 | getName: | w4 | getType: | Int | hasAttachedPropertyWrapperType: | yes | hasParentPattern: | yes | hasParentInitializer: | yes | hasPropertyWrapperBackingVarBinding: | yes | hasPropertyWrapperBackingVar: | yes | hasPropertyWrapperProjectionVarBinding: | yes | hasPropertyWrapperProjectionVar: | yes | getIntroducerInt: | 1 | -| var_decls.swift:65:19:65:19 | case_variable | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | case_variable | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 0 | -| var_decls.swift:65:34:65:34 | $match | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | $match | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 0 | -| var_decls.swift:67:15:67:15 | $match | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | $match | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 0 | -| var_decls.swift:67:22:67:22 | unused_case_variable | getModule: | file://:0:0:0:0 | var_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | unused_case_variable | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | yes | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | getIntroducerInt: | 0 | +instances +| var_decls.swift:2:7:2:7 | i | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | i | getType: | Int | getIntroducerInt: | 0 | +| var_decls.swift:2:12:2:12 | $i$generator | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | IndexingIterator> | getName: | $i$generator | getType: | IndexingIterator> | getIntroducerInt: | 1 | +| var_decls.swift:4:7:4:7 | i | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | i | getType: | Int | getIntroducerInt: | 1 | +| var_decls.swift:7:5:7:5 | numbers | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | [Int] | getName: | numbers | getType: | [Int] | getIntroducerInt: | 1 | +| var_decls.swift:10:12:10:12 | numbers | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | [Int] | getName: | numbers | getType: | [Int] | getIntroducerInt: | 0 | +| var_decls.swift:15:7:15:7 | wrappedValue | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | T | getName: | wrappedValue | getType: | T | getIntroducerInt: | 1 | +| var_decls.swift:20:7:20:7 | wrappedValue | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | wrappedValue | getType: | Int | getIntroducerInt: | 1 | +| var_decls.swift:24:15:24:15 | _wrapped | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | X | getName: | _wrapped | getType: | X | getIntroducerInt: | 1 | +| var_decls.swift:24:15:24:15 | wrapped | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | wrapped | getType: | Int | getIntroducerInt: | 1 | +| var_decls.swift:28:7:28:7 | wrappedValue | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | wrappedValue | getType: | Int | getIntroducerInt: | 1 | +| var_decls.swift:34:7:34:7 | wrappedValue | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | wrappedValue | getType: | Int | getIntroducerInt: | 1 | +| var_decls.swift:35:7:35:7 | projectedValue | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Bool | getName: | projectedValue | getType: | Bool | getIntroducerInt: | 1 | +| var_decls.swift:39:7:39:7 | wrappedValue | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | wrappedValue | getType: | Int | getIntroducerInt: | 1 | +| var_decls.swift:40:7:40:7 | projectedValue | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Bool | getName: | projectedValue | getType: | Bool | getIntroducerInt: | 1 | +| var_decls.swift:54:10:54:10 | _w1 | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | X | getName: | _w1 | getType: | X | getIntroducerInt: | 1 | +| var_decls.swift:54:10:54:10 | w1 | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | w1 | getType: | Int | getIntroducerInt: | 1 | +| var_decls.swift:55:24:55:24 | _w2 | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | WrapperWithInit | getName: | _w2 | getType: | WrapperWithInit | getIntroducerInt: | 1 | +| var_decls.swift:55:24:55:24 | w2 | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | w2 | getType: | Int | getIntroducerInt: | 1 | +| var_decls.swift:56:29:56:29 | $w3 | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Bool | getName: | $w3 | getType: | Bool | getIntroducerInt: | 1 | +| var_decls.swift:56:29:56:29 | _w3 | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | WrapperWithProjected | getName: | _w3 | getType: | WrapperWithProjected | getIntroducerInt: | 1 | +| var_decls.swift:56:29:56:29 | w3 | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | w3 | getType: | Int | getIntroducerInt: | 1 | +| var_decls.swift:57:36:57:36 | $w4 | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Bool | getName: | $w4 | getType: | Bool | getIntroducerInt: | 1 | +| var_decls.swift:57:36:57:36 | _w4 | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | WrapperWithProjectedAndInit | getName: | _w4 | getType: | WrapperWithProjectedAndInit | getIntroducerInt: | 1 | +| var_decls.swift:57:36:57:36 | w4 | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | w4 | getType: | Int | getIntroducerInt: | 1 | +| var_decls.swift:65:19:65:19 | case_variable | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | case_variable | getType: | Int | getIntroducerInt: | 0 | +| var_decls.swift:65:34:65:34 | $match | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | $match | getType: | Int | getIntroducerInt: | 0 | +| var_decls.swift:67:15:67:15 | $match | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | $match | getType: | Int | getIntroducerInt: | 0 | +| var_decls.swift:67:22:67:22 | unused_case_variable | getModule: | file://:0:0:0:0 | var_decls | getInterfaceType: | Int | getName: | unused_case_variable | getType: | Int | getIntroducerInt: | 0 | +getMember +getAccessor +| var_decls.swift:10:12:10:12 | numbers | 0 | var_decls.swift:10:12:10:12 | get | +| var_decls.swift:15:7:15:7 | wrappedValue | 0 | var_decls.swift:15:7:15:7 | get | +| var_decls.swift:15:7:15:7 | wrappedValue | 1 | var_decls.swift:15:7:15:7 | set | +| var_decls.swift:15:7:15:7 | wrappedValue | 2 | var_decls.swift:15:7:15:7 | _modify | +| var_decls.swift:20:7:20:7 | wrappedValue | 0 | var_decls.swift:20:7:20:7 | get | +| var_decls.swift:20:7:20:7 | wrappedValue | 1 | var_decls.swift:20:7:20:7 | set | +| var_decls.swift:20:7:20:7 | wrappedValue | 2 | var_decls.swift:20:7:20:7 | _modify | +| var_decls.swift:24:15:24:15 | _wrapped | 0 | var_decls.swift:24:15:24:15 | get | +| var_decls.swift:24:15:24:15 | _wrapped | 1 | var_decls.swift:24:15:24:15 | set | +| var_decls.swift:24:15:24:15 | _wrapped | 2 | var_decls.swift:24:15:24:15 | _modify | +| var_decls.swift:24:15:24:15 | wrapped | 0 | var_decls.swift:24:15:24:15 | get | +| var_decls.swift:24:15:24:15 | wrapped | 1 | var_decls.swift:24:15:24:15 | set | +| var_decls.swift:24:15:24:15 | wrapped | 2 | var_decls.swift:24:15:24:15 | _modify | +| var_decls.swift:28:7:28:7 | wrappedValue | 0 | var_decls.swift:28:7:28:7 | get | +| var_decls.swift:28:7:28:7 | wrappedValue | 1 | var_decls.swift:28:7:28:7 | set | +| var_decls.swift:28:7:28:7 | wrappedValue | 2 | var_decls.swift:28:7:28:7 | _modify | +| var_decls.swift:34:7:34:7 | wrappedValue | 0 | var_decls.swift:34:7:34:7 | get | +| var_decls.swift:34:7:34:7 | wrappedValue | 1 | var_decls.swift:34:7:34:7 | set | +| var_decls.swift:34:7:34:7 | wrappedValue | 2 | var_decls.swift:34:7:34:7 | _modify | +| var_decls.swift:35:7:35:7 | projectedValue | 0 | var_decls.swift:35:7:35:7 | get | +| var_decls.swift:35:7:35:7 | projectedValue | 1 | var_decls.swift:35:7:35:7 | set | +| var_decls.swift:35:7:35:7 | projectedValue | 2 | var_decls.swift:35:7:35:7 | _modify | +| var_decls.swift:39:7:39:7 | wrappedValue | 0 | var_decls.swift:39:7:39:7 | get | +| var_decls.swift:39:7:39:7 | wrappedValue | 1 | var_decls.swift:39:7:39:7 | set | +| var_decls.swift:39:7:39:7 | wrappedValue | 2 | var_decls.swift:39:7:39:7 | _modify | +| var_decls.swift:40:7:40:7 | projectedValue | 0 | var_decls.swift:40:7:40:7 | get | +| var_decls.swift:40:7:40:7 | projectedValue | 1 | var_decls.swift:40:7:40:7 | set | +| var_decls.swift:40:7:40:7 | projectedValue | 2 | var_decls.swift:40:7:40:7 | _modify | +| var_decls.swift:54:10:54:10 | w1 | 0 | var_decls.swift:54:10:54:10 | get | +| var_decls.swift:54:10:54:10 | w1 | 1 | var_decls.swift:54:10:54:10 | set | +| var_decls.swift:55:24:55:24 | w2 | 0 | var_decls.swift:55:24:55:24 | get | +| var_decls.swift:55:24:55:24 | w2 | 1 | var_decls.swift:55:24:55:24 | set | +| var_decls.swift:56:29:56:29 | $w3 | 0 | var_decls.swift:56:29:56:29 | get | +| var_decls.swift:56:29:56:29 | $w3 | 1 | var_decls.swift:56:29:56:29 | set | +| var_decls.swift:56:29:56:29 | w3 | 0 | var_decls.swift:56:29:56:29 | get | +| var_decls.swift:56:29:56:29 | w3 | 1 | var_decls.swift:56:29:56:29 | set | +| var_decls.swift:57:36:57:36 | $w4 | 0 | var_decls.swift:57:36:57:36 | get | +| var_decls.swift:57:36:57:36 | $w4 | 1 | var_decls.swift:57:36:57:36 | set | +| var_decls.swift:57:36:57:36 | w4 | 0 | var_decls.swift:57:36:57:36 | get | +| var_decls.swift:57:36:57:36 | w4 | 1 | var_decls.swift:57:36:57:36 | set | +getAttachedPropertyWrapperType +| var_decls.swift:24:15:24:15 | wrapped | X | +| var_decls.swift:54:10:54:10 | w1 | X | +| var_decls.swift:55:24:55:24 | w2 | WrapperWithInit | +| var_decls.swift:56:29:56:29 | w3 | WrapperWithProjected | +| var_decls.swift:57:36:57:36 | w4 | WrapperWithProjectedAndInit | +getParentPattern +| var_decls.swift:2:7:2:7 | i | var_decls.swift:2:7:2:7 | i | +| var_decls.swift:2:12:2:12 | $i$generator | var_decls.swift:2:12:2:12 | $i$generator | +| var_decls.swift:4:7:4:7 | i | var_decls.swift:4:7:4:7 | i | +| var_decls.swift:7:5:7:5 | numbers | var_decls.swift:7:5:7:5 | numbers | +| var_decls.swift:10:12:10:12 | numbers | var_decls.swift:10:12:10:12 | numbers | +| var_decls.swift:15:7:15:7 | wrappedValue | var_decls.swift:15:7:15:21 | ... as ... | +| var_decls.swift:20:7:20:7 | wrappedValue | var_decls.swift:20:7:20:21 | ... as ... | +| var_decls.swift:24:15:24:15 | _wrapped | var_decls.swift:24:15:24:15 | ... as ... | +| var_decls.swift:24:15:24:15 | wrapped | var_decls.swift:24:15:24:25 | ... as ... | +| var_decls.swift:28:7:28:7 | wrappedValue | var_decls.swift:28:7:28:22 | ... as ... | +| var_decls.swift:34:7:34:7 | wrappedValue | var_decls.swift:34:7:34:22 | ... as ... | +| var_decls.swift:35:7:35:7 | projectedValue | var_decls.swift:35:7:35:24 | ... as ... | +| var_decls.swift:39:7:39:7 | wrappedValue | var_decls.swift:39:7:39:22 | ... as ... | +| var_decls.swift:40:7:40:7 | projectedValue | var_decls.swift:40:7:40:24 | ... as ... | +| var_decls.swift:54:10:54:10 | _w1 | var_decls.swift:54:10:54:10 | ... as ... | +| var_decls.swift:54:10:54:10 | w1 | var_decls.swift:54:10:54:10 | w1 | +| var_decls.swift:55:24:55:24 | _w2 | var_decls.swift:55:24:55:24 | ... as ... | +| var_decls.swift:55:24:55:24 | w2 | var_decls.swift:55:24:55:24 | w2 | +| var_decls.swift:56:29:56:29 | $w3 | var_decls.swift:56:29:56:29 | ... as ... | +| var_decls.swift:56:29:56:29 | _w3 | var_decls.swift:56:29:56:29 | ... as ... | +| var_decls.swift:56:29:56:29 | w3 | var_decls.swift:56:29:56:29 | w3 | +| var_decls.swift:57:36:57:36 | $w4 | var_decls.swift:57:36:57:36 | ... as ... | +| var_decls.swift:57:36:57:36 | _w4 | var_decls.swift:57:36:57:36 | ... as ... | +| var_decls.swift:57:36:57:36 | w4 | var_decls.swift:57:36:57:36 | w4 | +| var_decls.swift:65:19:65:19 | case_variable | var_decls.swift:65:8:65:35 | .value(...) | +| var_decls.swift:67:22:67:22 | unused_case_variable | var_decls.swift:67:8:67:42 | .value(...) | +getParentInitializer +| var_decls.swift:2:12:2:12 | $i$generator | var_decls.swift:2:12:2:16 | call to makeIterator() | +| var_decls.swift:4:7:4:7 | i | var_decls.swift:4:11:4:11 | 0 | +| var_decls.swift:7:5:7:5 | numbers | var_decls.swift:7:15:7:18 | [...] | +| var_decls.swift:10:12:10:12 | numbers | var_decls.swift:10:22:10:35 | [...] | +| var_decls.swift:34:7:34:7 | wrappedValue | var_decls.swift:34:28:34:28 | 42 | +| var_decls.swift:35:7:35:7 | projectedValue | var_decls.swift:35:31:35:31 | false | +| var_decls.swift:54:10:54:10 | _w1 | var_decls.swift:54:4:54:15 | call to X.init(wrappedValue:) | +| var_decls.swift:54:10:54:10 | w1 | var_decls.swift:54:4:54:15 | call to X.init(wrappedValue:) | +| var_decls.swift:55:24:55:24 | _w2 | var_decls.swift:55:4:55:29 | call to WrapperWithInit.init(wrappedValue:) | +| var_decls.swift:55:24:55:24 | w2 | var_decls.swift:55:4:55:29 | call to WrapperWithInit.init(wrappedValue:) | +| var_decls.swift:56:29:56:29 | _w3 | var_decls.swift:56:4:56:34 | call to WrapperWithProjected.init(wrappedValue:projectedValue:) | +| var_decls.swift:56:29:56:29 | w3 | var_decls.swift:56:4:56:34 | call to WrapperWithProjected.init(wrappedValue:projectedValue:) | +| var_decls.swift:57:36:57:36 | _w4 | var_decls.swift:57:4:57:41 | call to WrapperWithProjectedAndInit.init(wrappedValue:) | +| var_decls.swift:57:36:57:36 | w4 | var_decls.swift:57:4:57:41 | call to WrapperWithProjectedAndInit.init(wrappedValue:) | +getPropertyWrapperBackingVarBinding +| var_decls.swift:24:15:24:15 | wrapped | file://:0:0:0:0 | var ... = ... | +| var_decls.swift:54:10:54:10 | w1 | file://:0:0:0:0 | var ... = ... | +| var_decls.swift:55:24:55:24 | w2 | file://:0:0:0:0 | var ... = ... | +| var_decls.swift:56:29:56:29 | w3 | file://:0:0:0:0 | var ... = ... | +| var_decls.swift:57:36:57:36 | w4 | file://:0:0:0:0 | var ... = ... | +getPropertyWrapperBackingVar +| var_decls.swift:24:15:24:15 | wrapped | var_decls.swift:24:15:24:15 | _wrapped | +| var_decls.swift:54:10:54:10 | w1 | var_decls.swift:54:10:54:10 | _w1 | +| var_decls.swift:55:24:55:24 | w2 | var_decls.swift:55:24:55:24 | _w2 | +| var_decls.swift:56:29:56:29 | w3 | var_decls.swift:56:29:56:29 | _w3 | +| var_decls.swift:57:36:57:36 | w4 | var_decls.swift:57:36:57:36 | _w4 | +getPropertyWrapperProjectionVarBinding +| var_decls.swift:56:29:56:29 | w3 | file://:0:0:0:0 | var ... = ... | +| var_decls.swift:57:36:57:36 | w4 | file://:0:0:0:0 | var ... = ... | +getPropertyWrapperProjectionVar +| var_decls.swift:56:29:56:29 | w3 | var_decls.swift:56:29:56:29 | $w3 | +| var_decls.swift:57:36:57:36 | w4 | var_decls.swift:57:36:57:36 | $w4 | diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.ql b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.ql index 2dd21cf6a170..f6c7b5541436 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.ql @@ -2,55 +2,75 @@ import codeql.swift.elements import TestUtils -from - ConcreteVarDecl x, ModuleDecl getModule, int getNumberOfMembers, Type getInterfaceType, - int getNumberOfAccessors, string getName, Type getType, string hasAttachedPropertyWrapperType, - string hasParentPattern, string hasParentInitializer, string hasPropertyWrapperBackingVarBinding, - string hasPropertyWrapperBackingVar, string hasPropertyWrapperProjectionVarBinding, - string hasPropertyWrapperProjectionVar, int getIntroducerInt -where +query predicate instances( + ConcreteVarDecl x, string getModule__label, ModuleDecl getModule, string getInterfaceType__label, + Type getInterfaceType, string getName__label, string getName, string getType__label, Type getType, + string getIntroducerInt__label, int getIntroducerInt +) { toBeTested(x) and not x.isUnknown() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and + getInterfaceType__label = "getInterfaceType:" and getInterfaceType = x.getInterfaceType() and - getNumberOfAccessors = x.getNumberOfAccessors() and + getName__label = "getName:" and getName = x.getName() and + getType__label = "getType:" and getType = x.getType() and - ( - if x.hasAttachedPropertyWrapperType() - then hasAttachedPropertyWrapperType = "yes" - else hasAttachedPropertyWrapperType = "no" - ) and - (if x.hasParentPattern() then hasParentPattern = "yes" else hasParentPattern = "no") and - (if x.hasParentInitializer() then hasParentInitializer = "yes" else hasParentInitializer = "no") and - ( - if x.hasPropertyWrapperBackingVarBinding() - then hasPropertyWrapperBackingVarBinding = "yes" - else hasPropertyWrapperBackingVarBinding = "no" - ) and - ( - if x.hasPropertyWrapperBackingVar() - then hasPropertyWrapperBackingVar = "yes" - else hasPropertyWrapperBackingVar = "no" - ) and - ( - if x.hasPropertyWrapperProjectionVarBinding() - then hasPropertyWrapperProjectionVarBinding = "yes" - else hasPropertyWrapperProjectionVarBinding = "no" - ) and - ( - if x.hasPropertyWrapperProjectionVar() - then hasPropertyWrapperProjectionVar = "yes" - else hasPropertyWrapperProjectionVar = "no" - ) and + getIntroducerInt__label = "getIntroducerInt:" and getIntroducerInt = x.getIntroducerInt() -select x, "getModule:", getModule, "getNumberOfMembers:", getNumberOfMembers, "getInterfaceType:", - getInterfaceType, "getNumberOfAccessors:", getNumberOfAccessors, "getName:", getName, "getType:", - getType, "hasAttachedPropertyWrapperType:", hasAttachedPropertyWrapperType, "hasParentPattern:", - hasParentPattern, "hasParentInitializer:", hasParentInitializer, - "hasPropertyWrapperBackingVarBinding:", hasPropertyWrapperBackingVarBinding, - "hasPropertyWrapperBackingVar:", hasPropertyWrapperBackingVar, - "hasPropertyWrapperProjectionVarBinding:", hasPropertyWrapperProjectionVarBinding, - "hasPropertyWrapperProjectionVar:", hasPropertyWrapperProjectionVar, "getIntroducerInt:", - getIntroducerInt +} + +query predicate getMember(ConcreteVarDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getAccessor(ConcreteVarDecl x, int index, Accessor getAccessor) { + toBeTested(x) and not x.isUnknown() and getAccessor = x.getAccessor(index) +} + +query predicate getAttachedPropertyWrapperType( + ConcreteVarDecl x, Type getAttachedPropertyWrapperType +) { + toBeTested(x) and + not x.isUnknown() and + getAttachedPropertyWrapperType = x.getAttachedPropertyWrapperType() +} + +query predicate getParentPattern(ConcreteVarDecl x, Pattern getParentPattern) { + toBeTested(x) and not x.isUnknown() and getParentPattern = x.getParentPattern() +} + +query predicate getParentInitializer(ConcreteVarDecl x, Expr getParentInitializer) { + toBeTested(x) and not x.isUnknown() and getParentInitializer = x.getParentInitializer() +} + +query predicate getPropertyWrapperBackingVarBinding( + ConcreteVarDecl x, PatternBindingDecl getPropertyWrapperBackingVarBinding +) { + toBeTested(x) and + not x.isUnknown() and + getPropertyWrapperBackingVarBinding = x.getPropertyWrapperBackingVarBinding() +} + +query predicate getPropertyWrapperBackingVar(ConcreteVarDecl x, VarDecl getPropertyWrapperBackingVar) { + toBeTested(x) and + not x.isUnknown() and + getPropertyWrapperBackingVar = x.getPropertyWrapperBackingVar() +} + +query predicate getPropertyWrapperProjectionVarBinding( + ConcreteVarDecl x, PatternBindingDecl getPropertyWrapperProjectionVarBinding +) { + toBeTested(x) and + not x.isUnknown() and + getPropertyWrapperProjectionVarBinding = x.getPropertyWrapperProjectionVarBinding() +} + +query predicate getPropertyWrapperProjectionVar( + ConcreteVarDecl x, VarDecl getPropertyWrapperProjectionVar +) { + toBeTested(x) and + not x.isUnknown() and + getPropertyWrapperProjectionVar = x.getPropertyWrapperProjectionVar() +} diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAccessor.expected b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAccessor.expected deleted file mode 100644 index 956ca097bd16..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAccessor.expected +++ /dev/null @@ -1,40 +0,0 @@ -| var_decls.swift:10:12:10:12 | numbers | 0 | var_decls.swift:10:12:10:12 | get | -| var_decls.swift:15:7:15:7 | wrappedValue | 0 | var_decls.swift:15:7:15:7 | get | -| var_decls.swift:15:7:15:7 | wrappedValue | 1 | var_decls.swift:15:7:15:7 | set | -| var_decls.swift:15:7:15:7 | wrappedValue | 2 | var_decls.swift:15:7:15:7 | _modify | -| var_decls.swift:20:7:20:7 | wrappedValue | 0 | var_decls.swift:20:7:20:7 | get | -| var_decls.swift:20:7:20:7 | wrappedValue | 1 | var_decls.swift:20:7:20:7 | set | -| var_decls.swift:20:7:20:7 | wrappedValue | 2 | var_decls.swift:20:7:20:7 | _modify | -| var_decls.swift:24:15:24:15 | _wrapped | 0 | var_decls.swift:24:15:24:15 | get | -| var_decls.swift:24:15:24:15 | _wrapped | 1 | var_decls.swift:24:15:24:15 | set | -| var_decls.swift:24:15:24:15 | _wrapped | 2 | var_decls.swift:24:15:24:15 | _modify | -| var_decls.swift:24:15:24:15 | wrapped | 0 | var_decls.swift:24:15:24:15 | get | -| var_decls.swift:24:15:24:15 | wrapped | 1 | var_decls.swift:24:15:24:15 | set | -| var_decls.swift:24:15:24:15 | wrapped | 2 | var_decls.swift:24:15:24:15 | _modify | -| var_decls.swift:28:7:28:7 | wrappedValue | 0 | var_decls.swift:28:7:28:7 | get | -| var_decls.swift:28:7:28:7 | wrappedValue | 1 | var_decls.swift:28:7:28:7 | set | -| var_decls.swift:28:7:28:7 | wrappedValue | 2 | var_decls.swift:28:7:28:7 | _modify | -| var_decls.swift:34:7:34:7 | wrappedValue | 0 | var_decls.swift:34:7:34:7 | get | -| var_decls.swift:34:7:34:7 | wrappedValue | 1 | var_decls.swift:34:7:34:7 | set | -| var_decls.swift:34:7:34:7 | wrappedValue | 2 | var_decls.swift:34:7:34:7 | _modify | -| var_decls.swift:35:7:35:7 | projectedValue | 0 | var_decls.swift:35:7:35:7 | get | -| var_decls.swift:35:7:35:7 | projectedValue | 1 | var_decls.swift:35:7:35:7 | set | -| var_decls.swift:35:7:35:7 | projectedValue | 2 | var_decls.swift:35:7:35:7 | _modify | -| var_decls.swift:39:7:39:7 | wrappedValue | 0 | var_decls.swift:39:7:39:7 | get | -| var_decls.swift:39:7:39:7 | wrappedValue | 1 | var_decls.swift:39:7:39:7 | set | -| var_decls.swift:39:7:39:7 | wrappedValue | 2 | var_decls.swift:39:7:39:7 | _modify | -| var_decls.swift:40:7:40:7 | projectedValue | 0 | var_decls.swift:40:7:40:7 | get | -| var_decls.swift:40:7:40:7 | projectedValue | 1 | var_decls.swift:40:7:40:7 | set | -| var_decls.swift:40:7:40:7 | projectedValue | 2 | var_decls.swift:40:7:40:7 | _modify | -| var_decls.swift:54:10:54:10 | w1 | 0 | var_decls.swift:54:10:54:10 | get | -| var_decls.swift:54:10:54:10 | w1 | 1 | var_decls.swift:54:10:54:10 | set | -| var_decls.swift:55:24:55:24 | w2 | 0 | var_decls.swift:55:24:55:24 | get | -| var_decls.swift:55:24:55:24 | w2 | 1 | var_decls.swift:55:24:55:24 | set | -| var_decls.swift:56:29:56:29 | $w3 | 0 | var_decls.swift:56:29:56:29 | get | -| var_decls.swift:56:29:56:29 | $w3 | 1 | var_decls.swift:56:29:56:29 | set | -| var_decls.swift:56:29:56:29 | w3 | 0 | var_decls.swift:56:29:56:29 | get | -| var_decls.swift:56:29:56:29 | w3 | 1 | var_decls.swift:56:29:56:29 | set | -| var_decls.swift:57:36:57:36 | $w4 | 0 | var_decls.swift:57:36:57:36 | get | -| var_decls.swift:57:36:57:36 | $w4 | 1 | var_decls.swift:57:36:57:36 | set | -| var_decls.swift:57:36:57:36 | w4 | 0 | var_decls.swift:57:36:57:36 | get | -| var_decls.swift:57:36:57:36 | w4 | 1 | var_decls.swift:57:36:57:36 | set | diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAccessor.ql b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAccessor.ql deleted file mode 100644 index d169f10c812b..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAccessor.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ConcreteVarDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAccessor(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAttachedPropertyWrapperType.expected b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAttachedPropertyWrapperType.expected deleted file mode 100644 index 0212cc38f14f..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAttachedPropertyWrapperType.expected +++ /dev/null @@ -1,5 +0,0 @@ -| var_decls.swift:24:15:24:15 | wrapped | X | -| var_decls.swift:54:10:54:10 | w1 | X | -| var_decls.swift:55:24:55:24 | w2 | WrapperWithInit | -| var_decls.swift:56:29:56:29 | w3 | WrapperWithProjected | -| var_decls.swift:57:36:57:36 | w4 | WrapperWithProjectedAndInit | diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAttachedPropertyWrapperType.ql b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAttachedPropertyWrapperType.ql deleted file mode 100644 index ef8e58e63712..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getAttachedPropertyWrapperType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ConcreteVarDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttachedPropertyWrapperType() diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getMember.ql deleted file mode 100644 index e559cfeae78d..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ConcreteVarDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentInitializer.expected b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentInitializer.expected deleted file mode 100644 index 913adec2f2ba..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentInitializer.expected +++ /dev/null @@ -1,14 +0,0 @@ -| var_decls.swift:2:12:2:12 | $i$generator | var_decls.swift:2:12:2:16 | call to makeIterator() | -| var_decls.swift:4:7:4:7 | i | var_decls.swift:4:11:4:11 | 0 | -| var_decls.swift:7:5:7:5 | numbers | var_decls.swift:7:15:7:18 | [...] | -| var_decls.swift:10:12:10:12 | numbers | var_decls.swift:10:22:10:35 | [...] | -| var_decls.swift:34:7:34:7 | wrappedValue | var_decls.swift:34:28:34:28 | 42 | -| var_decls.swift:35:7:35:7 | projectedValue | var_decls.swift:35:31:35:31 | false | -| var_decls.swift:54:10:54:10 | _w1 | var_decls.swift:54:4:54:15 | call to X.init(wrappedValue:) | -| var_decls.swift:54:10:54:10 | w1 | var_decls.swift:54:4:54:15 | call to X.init(wrappedValue:) | -| var_decls.swift:55:24:55:24 | _w2 | var_decls.swift:55:4:55:29 | call to WrapperWithInit.init(wrappedValue:) | -| var_decls.swift:55:24:55:24 | w2 | var_decls.swift:55:4:55:29 | call to WrapperWithInit.init(wrappedValue:) | -| var_decls.swift:56:29:56:29 | _w3 | var_decls.swift:56:4:56:34 | call to WrapperWithProjected.init(wrappedValue:projectedValue:) | -| var_decls.swift:56:29:56:29 | w3 | var_decls.swift:56:4:56:34 | call to WrapperWithProjected.init(wrappedValue:projectedValue:) | -| var_decls.swift:57:36:57:36 | _w4 | var_decls.swift:57:4:57:41 | call to WrapperWithProjectedAndInit.init(wrappedValue:) | -| var_decls.swift:57:36:57:36 | w4 | var_decls.swift:57:4:57:41 | call to WrapperWithProjectedAndInit.init(wrappedValue:) | diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentInitializer.ql b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentInitializer.ql deleted file mode 100644 index cc09f9a38afd..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentInitializer.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ConcreteVarDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getParentInitializer() diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentPattern.expected b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentPattern.expected deleted file mode 100644 index e59322e36c1b..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentPattern.expected +++ /dev/null @@ -1,26 +0,0 @@ -| var_decls.swift:2:7:2:7 | i | var_decls.swift:2:7:2:7 | i | -| var_decls.swift:2:12:2:12 | $i$generator | var_decls.swift:2:12:2:12 | $i$generator | -| var_decls.swift:4:7:4:7 | i | var_decls.swift:4:7:4:7 | i | -| var_decls.swift:7:5:7:5 | numbers | var_decls.swift:7:5:7:5 | numbers | -| var_decls.swift:10:12:10:12 | numbers | var_decls.swift:10:12:10:12 | numbers | -| var_decls.swift:15:7:15:7 | wrappedValue | var_decls.swift:15:7:15:21 | ... as ... | -| var_decls.swift:20:7:20:7 | wrappedValue | var_decls.swift:20:7:20:21 | ... as ... | -| var_decls.swift:24:15:24:15 | _wrapped | var_decls.swift:24:15:24:15 | ... as ... | -| var_decls.swift:24:15:24:15 | wrapped | var_decls.swift:24:15:24:25 | ... as ... | -| var_decls.swift:28:7:28:7 | wrappedValue | var_decls.swift:28:7:28:22 | ... as ... | -| var_decls.swift:34:7:34:7 | wrappedValue | var_decls.swift:34:7:34:22 | ... as ... | -| var_decls.swift:35:7:35:7 | projectedValue | var_decls.swift:35:7:35:24 | ... as ... | -| var_decls.swift:39:7:39:7 | wrappedValue | var_decls.swift:39:7:39:22 | ... as ... | -| var_decls.swift:40:7:40:7 | projectedValue | var_decls.swift:40:7:40:24 | ... as ... | -| var_decls.swift:54:10:54:10 | _w1 | var_decls.swift:54:10:54:10 | ... as ... | -| var_decls.swift:54:10:54:10 | w1 | var_decls.swift:54:10:54:10 | w1 | -| var_decls.swift:55:24:55:24 | _w2 | var_decls.swift:55:24:55:24 | ... as ... | -| var_decls.swift:55:24:55:24 | w2 | var_decls.swift:55:24:55:24 | w2 | -| var_decls.swift:56:29:56:29 | $w3 | var_decls.swift:56:29:56:29 | ... as ... | -| var_decls.swift:56:29:56:29 | _w3 | var_decls.swift:56:29:56:29 | ... as ... | -| var_decls.swift:56:29:56:29 | w3 | var_decls.swift:56:29:56:29 | w3 | -| var_decls.swift:57:36:57:36 | $w4 | var_decls.swift:57:36:57:36 | ... as ... | -| var_decls.swift:57:36:57:36 | _w4 | var_decls.swift:57:36:57:36 | ... as ... | -| var_decls.swift:57:36:57:36 | w4 | var_decls.swift:57:36:57:36 | w4 | -| var_decls.swift:65:19:65:19 | case_variable | var_decls.swift:65:8:65:35 | .value(...) | -| var_decls.swift:67:22:67:22 | unused_case_variable | var_decls.swift:67:8:67:42 | .value(...) | diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentPattern.ql b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentPattern.ql deleted file mode 100644 index 2fb533a5a697..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getParentPattern.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ConcreteVarDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getParentPattern() diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVar.expected b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVar.expected deleted file mode 100644 index b32567e0cbba..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVar.expected +++ /dev/null @@ -1,5 +0,0 @@ -| var_decls.swift:24:15:24:15 | wrapped | var_decls.swift:24:15:24:15 | _wrapped | -| var_decls.swift:54:10:54:10 | w1 | var_decls.swift:54:10:54:10 | _w1 | -| var_decls.swift:55:24:55:24 | w2 | var_decls.swift:55:24:55:24 | _w2 | -| var_decls.swift:56:29:56:29 | w3 | var_decls.swift:56:29:56:29 | _w3 | -| var_decls.swift:57:36:57:36 | w4 | var_decls.swift:57:36:57:36 | _w4 | diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVar.ql b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVar.ql deleted file mode 100644 index b57a2cd02b71..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVar.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ConcreteVarDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getPropertyWrapperBackingVar() diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVarBinding.expected b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVarBinding.expected deleted file mode 100644 index d6069ccf602e..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVarBinding.expected +++ /dev/null @@ -1,5 +0,0 @@ -| var_decls.swift:24:15:24:15 | wrapped | file://:0:0:0:0 | var ... = ... | -| var_decls.swift:54:10:54:10 | w1 | file://:0:0:0:0 | var ... = ... | -| var_decls.swift:55:24:55:24 | w2 | file://:0:0:0:0 | var ... = ... | -| var_decls.swift:56:29:56:29 | w3 | file://:0:0:0:0 | var ... = ... | -| var_decls.swift:57:36:57:36 | w4 | file://:0:0:0:0 | var ... = ... | diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVarBinding.ql b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVarBinding.ql deleted file mode 100644 index 27d1215c98ac..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperBackingVarBinding.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ConcreteVarDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getPropertyWrapperBackingVarBinding() diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVar.expected b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVar.expected deleted file mode 100644 index 720938bab9b4..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVar.expected +++ /dev/null @@ -1,2 +0,0 @@ -| var_decls.swift:56:29:56:29 | w3 | var_decls.swift:56:29:56:29 | $w3 | -| var_decls.swift:57:36:57:36 | w4 | var_decls.swift:57:36:57:36 | $w4 | diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVar.ql b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVar.ql deleted file mode 100644 index 6376fc809b50..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVar.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ConcreteVarDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getPropertyWrapperProjectionVar() diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVarBinding.expected b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVarBinding.expected deleted file mode 100644 index cb47a922746d..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVarBinding.expected +++ /dev/null @@ -1,2 +0,0 @@ -| var_decls.swift:56:29:56:29 | w3 | file://:0:0:0:0 | var ... = ... | -| var_decls.swift:57:36:57:36 | w4 | file://:0:0:0:0 | var ... = ... | diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVarBinding.ql b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVarBinding.ql deleted file mode 100644 index 7e513c831a73..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl_getPropertyWrapperProjectionVarBinding.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ConcreteVarDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getPropertyWrapperProjectionVarBinding() diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl.expected b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl.expected index 754ef2c4f19d..b6e400b30fa0 100644 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl.expected @@ -1,12 +1,33 @@ -| enums.swift:2:5:2:18 | case ... | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getNumberOfElements: | 2 | -| enums.swift:3:5:3:26 | case ... | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getNumberOfElements: | 3 | -| enums.swift:8:5:8:18 | case ... | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getNumberOfElements: | 2 | -| enums.swift:9:5:9:26 | case ... | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getNumberOfElements: | 3 | -| enums.swift:13:5:13:22 | case ... | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getNumberOfElements: | 1 | -| enums.swift:14:5:14:21 | case ... | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getNumberOfElements: | 1 | -| enums.swift:15:5:15:35 | case ... | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getNumberOfElements: | 1 | -| enums.swift:19:5:19:10 | case ... | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getNumberOfElements: | 1 | -| enums.swift:20:5:20:16 | case ... | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getNumberOfElements: | 1 | -| enums.swift:24:5:24:25 | case ... | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getNumberOfElements: | 1 | -| enums.swift:25:5:25:24 | case ... | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getNumberOfElements: | 1 | -| enums.swift:26:5:26:44 | case ... | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getNumberOfElements: | 1 | +instances +| enums.swift:2:5:2:18 | case ... | getModule: | file://:0:0:0:0 | enums | +| enums.swift:3:5:3:26 | case ... | getModule: | file://:0:0:0:0 | enums | +| enums.swift:8:5:8:18 | case ... | getModule: | file://:0:0:0:0 | enums | +| enums.swift:9:5:9:26 | case ... | getModule: | file://:0:0:0:0 | enums | +| enums.swift:13:5:13:22 | case ... | getModule: | file://:0:0:0:0 | enums | +| enums.swift:14:5:14:21 | case ... | getModule: | file://:0:0:0:0 | enums | +| enums.swift:15:5:15:35 | case ... | getModule: | file://:0:0:0:0 | enums | +| enums.swift:19:5:19:10 | case ... | getModule: | file://:0:0:0:0 | enums | +| enums.swift:20:5:20:16 | case ... | getModule: | file://:0:0:0:0 | enums | +| enums.swift:24:5:24:25 | case ... | getModule: | file://:0:0:0:0 | enums | +| enums.swift:25:5:25:24 | case ... | getModule: | file://:0:0:0:0 | enums | +| enums.swift:26:5:26:44 | case ... | getModule: | file://:0:0:0:0 | enums | +getMember +getElement +| enums.swift:2:5:2:18 | case ... | 0 | enums.swift:2:10:2:10 | value1 | +| enums.swift:2:5:2:18 | case ... | 1 | enums.swift:2:18:2:18 | value2 | +| enums.swift:3:5:3:26 | case ... | 0 | enums.swift:3:10:3:10 | value3 | +| enums.swift:3:5:3:26 | case ... | 1 | enums.swift:3:18:3:18 | value4 | +| enums.swift:3:5:3:26 | case ... | 2 | enums.swift:3:26:3:26 | value5 | +| enums.swift:8:5:8:18 | case ... | 0 | enums.swift:8:10:8:10 | value1 | +| enums.swift:8:5:8:18 | case ... | 1 | enums.swift:8:18:8:18 | value2 | +| enums.swift:9:5:9:26 | case ... | 0 | enums.swift:9:10:9:10 | value3 | +| enums.swift:9:5:9:26 | case ... | 1 | enums.swift:9:18:9:18 | value4 | +| enums.swift:9:5:9:26 | case ... | 2 | enums.swift:9:26:9:26 | value5 | +| enums.swift:13:5:13:22 | case ... | 0 | enums.swift:13:10:13:22 | nodata1 | +| enums.swift:14:5:14:21 | case ... | 0 | enums.swift:14:10:14:21 | intdata | +| enums.swift:15:5:15:35 | case ... | 0 | enums.swift:15:10:15:35 | tuple | +| enums.swift:19:5:19:10 | case ... | 0 | enums.swift:19:10:19:10 | none | +| enums.swift:20:5:20:16 | case ... | 0 | enums.swift:20:10:20:16 | some | +| enums.swift:24:5:24:25 | case ... | 0 | enums.swift:24:10:24:25 | nodata1 | +| enums.swift:25:5:25:24 | case ... | 0 | enums.swift:25:10:25:24 | intdata | +| enums.swift:26:5:26:44 | case ... | 0 | enums.swift:26:10:26:44 | tuple | diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl.ql b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl.ql index b0cf267f6452..fffe694415c5 100644 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl.ql @@ -2,12 +2,17 @@ import codeql.swift.elements import TestUtils -from EnumCaseDecl x, ModuleDecl getModule, int getNumberOfMembers, int getNumberOfElements -where +query predicate instances(EnumCaseDecl x, string getModule__label, ModuleDecl getModule) { toBeTested(x) and not x.isUnknown() and - getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and - getNumberOfElements = x.getNumberOfElements() -select x, "getModule:", getModule, "getNumberOfMembers:", getNumberOfMembers, - "getNumberOfElements:", getNumberOfElements + getModule__label = "getModule:" and + getModule = x.getModule() +} + +query predicate getMember(EnumCaseDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getElement(EnumCaseDecl x, int index, EnumElementDecl getElement) { + toBeTested(x) and not x.isUnknown() and getElement = x.getElement(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getElement.expected b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getElement.expected deleted file mode 100644 index d5082606f664..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getElement.expected +++ /dev/null @@ -1,18 +0,0 @@ -| enums.swift:2:5:2:18 | case ... | 0 | enums.swift:2:10:2:10 | value1 | -| enums.swift:2:5:2:18 | case ... | 1 | enums.swift:2:18:2:18 | value2 | -| enums.swift:3:5:3:26 | case ... | 0 | enums.swift:3:10:3:10 | value3 | -| enums.swift:3:5:3:26 | case ... | 1 | enums.swift:3:18:3:18 | value4 | -| enums.swift:3:5:3:26 | case ... | 2 | enums.swift:3:26:3:26 | value5 | -| enums.swift:8:5:8:18 | case ... | 0 | enums.swift:8:10:8:10 | value1 | -| enums.swift:8:5:8:18 | case ... | 1 | enums.swift:8:18:8:18 | value2 | -| enums.swift:9:5:9:26 | case ... | 0 | enums.swift:9:10:9:10 | value3 | -| enums.swift:9:5:9:26 | case ... | 1 | enums.swift:9:18:9:18 | value4 | -| enums.swift:9:5:9:26 | case ... | 2 | enums.swift:9:26:9:26 | value5 | -| enums.swift:13:5:13:22 | case ... | 0 | enums.swift:13:10:13:22 | nodata1 | -| enums.swift:14:5:14:21 | case ... | 0 | enums.swift:14:10:14:21 | intdata | -| enums.swift:15:5:15:35 | case ... | 0 | enums.swift:15:10:15:35 | tuple | -| enums.swift:19:5:19:10 | case ... | 0 | enums.swift:19:10:19:10 | none | -| enums.swift:20:5:20:16 | case ... | 0 | enums.swift:20:10:20:16 | some | -| enums.swift:24:5:24:25 | case ... | 0 | enums.swift:24:10:24:25 | nodata1 | -| enums.swift:25:5:25:24 | case ... | 0 | enums.swift:25:10:25:24 | intdata | -| enums.swift:26:5:26:44 | case ... | 0 | enums.swift:26:10:26:44 | tuple | diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getElement.ql b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getElement.ql deleted file mode 100644 index bbc22666cc00..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getElement.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from EnumCaseDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getElement(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getMember.ql deleted file mode 100644 index 630e99f9f57e..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from EnumCaseDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl.expected b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl.expected index 694cf7d10353..06c1789b3bcc 100644 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl.expected @@ -1,5 +1,49 @@ -| enums.swift:1:1:4:1 | EnumValues | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 11 | getInterfaceType: | EnumValues.Type | getName: | EnumValues | getNumberOfInheritedTypes: | 0 | getType: | EnumValues | -| enums.swift:7:1:10:1 | EnumValuesWithBase | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 11 | getInterfaceType: | EnumValuesWithBase.Type | getName: | EnumValuesWithBase | getNumberOfInheritedTypes: | 1 | getType: | EnumValuesWithBase | -| enums.swift:12:1:16:1 | EnumWithParams | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 6 | getInterfaceType: | EnumWithParams.Type | getName: | EnumWithParams | getNumberOfInheritedTypes: | 0 | getType: | EnumWithParams | -| enums.swift:18:1:21:1 | GenericEnum | getNumberOfGenericTypeParams: | 1 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 4 | getInterfaceType: | GenericEnum.Type | getName: | GenericEnum | getNumberOfInheritedTypes: | 0 | getType: | GenericEnum | -| enums.swift:23:1:27:1 | EnumWithNamedParams | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 6 | getInterfaceType: | EnumWithNamedParams.Type | getName: | EnumWithNamedParams | getNumberOfInheritedTypes: | 0 | getType: | EnumWithNamedParams | +instances +| enums.swift:1:1:4:1 | EnumValues | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | EnumValues.Type | getName: | EnumValues | getType: | EnumValues | +| enums.swift:7:1:10:1 | EnumValuesWithBase | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | EnumValuesWithBase.Type | getName: | EnumValuesWithBase | getType: | EnumValuesWithBase | +| enums.swift:12:1:16:1 | EnumWithParams | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | EnumWithParams.Type | getName: | EnumWithParams | getType: | EnumWithParams | +| enums.swift:18:1:21:1 | GenericEnum | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | GenericEnum.Type | getName: | GenericEnum | getType: | GenericEnum | +| enums.swift:23:1:27:1 | EnumWithNamedParams | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | EnumWithNamedParams.Type | getName: | EnumWithNamedParams | getType: | EnumWithNamedParams | +getGenericTypeParam +| enums.swift:18:1:21:1 | GenericEnum | 0 | enums.swift:18:18:18:18 | T | +getMember +| enums.swift:1:1:4:1 | EnumValues | 0 | enums.swift:2:5:2:18 | case ... | +| enums.swift:1:1:4:1 | EnumValues | 1 | enums.swift:2:10:2:10 | value1 | +| enums.swift:1:1:4:1 | EnumValues | 2 | enums.swift:2:18:2:18 | value2 | +| enums.swift:1:1:4:1 | EnumValues | 3 | enums.swift:3:5:3:26 | case ... | +| enums.swift:1:1:4:1 | EnumValues | 4 | enums.swift:3:10:3:10 | value3 | +| enums.swift:1:1:4:1 | EnumValues | 5 | enums.swift:3:18:3:18 | value4 | +| enums.swift:1:1:4:1 | EnumValues | 6 | enums.swift:3:26:3:26 | value5 | +| enums.swift:1:1:4:1 | EnumValues | 7 | file://:0:0:0:0 | __derived_enum_equals(_:_:) | +| enums.swift:1:1:4:1 | EnumValues | 8 | file://:0:0:0:0 | hashValue | +| enums.swift:1:1:4:1 | EnumValues | 9 | file://:0:0:0:0 | var ... = ... | +| enums.swift:1:1:4:1 | EnumValues | 10 | file://:0:0:0:0 | hash(into:) | +| enums.swift:7:1:10:1 | EnumValuesWithBase | 0 | enums.swift:8:5:8:18 | case ... | +| enums.swift:7:1:10:1 | EnumValuesWithBase | 1 | enums.swift:8:10:8:10 | value1 | +| enums.swift:7:1:10:1 | EnumValuesWithBase | 2 | enums.swift:8:18:8:18 | value2 | +| enums.swift:7:1:10:1 | EnumValuesWithBase | 3 | enums.swift:9:5:9:26 | case ... | +| enums.swift:7:1:10:1 | EnumValuesWithBase | 4 | enums.swift:9:10:9:10 | value3 | +| enums.swift:7:1:10:1 | EnumValuesWithBase | 5 | enums.swift:9:18:9:18 | value4 | +| enums.swift:7:1:10:1 | EnumValuesWithBase | 6 | enums.swift:9:26:9:26 | value5 | +| enums.swift:7:1:10:1 | EnumValuesWithBase | 7 | file://:0:0:0:0 | RawValue | +| enums.swift:7:1:10:1 | EnumValuesWithBase | 8 | file://:0:0:0:0 | EnumValuesWithBase.init(rawValue:) | +| enums.swift:7:1:10:1 | EnumValuesWithBase | 9 | file://:0:0:0:0 | rawValue | +| enums.swift:7:1:10:1 | EnumValuesWithBase | 10 | file://:0:0:0:0 | var ... = ... | +| enums.swift:12:1:16:1 | EnumWithParams | 0 | enums.swift:13:5:13:22 | case ... | +| enums.swift:12:1:16:1 | EnumWithParams | 1 | enums.swift:13:10:13:22 | nodata1 | +| enums.swift:12:1:16:1 | EnumWithParams | 2 | enums.swift:14:5:14:21 | case ... | +| enums.swift:12:1:16:1 | EnumWithParams | 3 | enums.swift:14:10:14:21 | intdata | +| enums.swift:12:1:16:1 | EnumWithParams | 4 | enums.swift:15:5:15:35 | case ... | +| enums.swift:12:1:16:1 | EnumWithParams | 5 | enums.swift:15:10:15:35 | tuple | +| enums.swift:18:1:21:1 | GenericEnum | 0 | enums.swift:19:5:19:10 | case ... | +| enums.swift:18:1:21:1 | GenericEnum | 1 | enums.swift:19:10:19:10 | none | +| enums.swift:18:1:21:1 | GenericEnum | 2 | enums.swift:20:5:20:16 | case ... | +| enums.swift:18:1:21:1 | GenericEnum | 3 | enums.swift:20:10:20:16 | some | +| enums.swift:23:1:27:1 | EnumWithNamedParams | 0 | enums.swift:24:5:24:25 | case ... | +| enums.swift:23:1:27:1 | EnumWithNamedParams | 1 | enums.swift:24:10:24:25 | nodata1 | +| enums.swift:23:1:27:1 | EnumWithNamedParams | 2 | enums.swift:25:5:25:24 | case ... | +| enums.swift:23:1:27:1 | EnumWithNamedParams | 3 | enums.swift:25:10:25:24 | intdata | +| enums.swift:23:1:27:1 | EnumWithNamedParams | 4 | enums.swift:26:5:26:44 | case ... | +| enums.swift:23:1:27:1 | EnumWithNamedParams | 5 | enums.swift:26:10:26:44 | tuple | +getInheritedType +| enums.swift:7:1:10:1 | EnumValuesWithBase | 0 | Double | diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl.ql b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl.ql index 5a8d80276ef4..dabf9078cea0 100644 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl.ql @@ -2,19 +2,30 @@ import codeql.swift.elements import TestUtils -from - EnumDecl x, int getNumberOfGenericTypeParams, ModuleDecl getModule, int getNumberOfMembers, - Type getInterfaceType, string getName, int getNumberOfInheritedTypes, Type getType -where +query predicate instances( + EnumDecl x, string getModule__label, ModuleDecl getModule, string getInterfaceType__label, + Type getInterfaceType, string getName__label, string getName, string getType__label, Type getType +) { toBeTested(x) and not x.isUnknown() and - getNumberOfGenericTypeParams = x.getNumberOfGenericTypeParams() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and + getInterfaceType__label = "getInterfaceType:" and getInterfaceType = x.getInterfaceType() and + getName__label = "getName:" and getName = x.getName() and - getNumberOfInheritedTypes = x.getNumberOfInheritedTypes() and + getType__label = "getType:" and getType = x.getType() -select x, "getNumberOfGenericTypeParams:", getNumberOfGenericTypeParams, "getModule:", getModule, - "getNumberOfMembers:", getNumberOfMembers, "getInterfaceType:", getInterfaceType, "getName:", - getName, "getNumberOfInheritedTypes:", getNumberOfInheritedTypes, "getType:", getType +} + +query predicate getGenericTypeParam(EnumDecl x, int index, GenericTypeParamDecl getGenericTypeParam) { + toBeTested(x) and not x.isUnknown() and getGenericTypeParam = x.getGenericTypeParam(index) +} + +query predicate getMember(EnumDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getInheritedType(EnumDecl x, int index, Type getInheritedType) { + toBeTested(x) and not x.isUnknown() and getInheritedType = x.getInheritedType(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getGenericTypeParam.expected b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getGenericTypeParam.expected deleted file mode 100644 index 47a6b335d76e..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getGenericTypeParam.expected +++ /dev/null @@ -1 +0,0 @@ -| enums.swift:18:1:21:1 | GenericEnum | 0 | enums.swift:18:18:18:18 | T | diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getGenericTypeParam.ql b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getGenericTypeParam.ql deleted file mode 100644 index 02d75edf7b33..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getGenericTypeParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from EnumDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getGenericTypeParam(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getInheritedType.expected b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getInheritedType.expected deleted file mode 100644 index 764f6f21697f..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getInheritedType.expected +++ /dev/null @@ -1 +0,0 @@ -| enums.swift:7:1:10:1 | EnumValuesWithBase | 0 | Double | diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getInheritedType.ql b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getInheritedType.ql deleted file mode 100644 index 2ea47f737f88..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getInheritedType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from EnumDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getInheritedType(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getMember.expected deleted file mode 100644 index 8d4ba0c5e728..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getMember.expected +++ /dev/null @@ -1,38 +0,0 @@ -| enums.swift:1:1:4:1 | EnumValues | 0 | enums.swift:2:5:2:18 | case ... | -| enums.swift:1:1:4:1 | EnumValues | 1 | enums.swift:2:10:2:10 | value1 | -| enums.swift:1:1:4:1 | EnumValues | 2 | enums.swift:2:18:2:18 | value2 | -| enums.swift:1:1:4:1 | EnumValues | 3 | enums.swift:3:5:3:26 | case ... | -| enums.swift:1:1:4:1 | EnumValues | 4 | enums.swift:3:10:3:10 | value3 | -| enums.swift:1:1:4:1 | EnumValues | 5 | enums.swift:3:18:3:18 | value4 | -| enums.swift:1:1:4:1 | EnumValues | 6 | enums.swift:3:26:3:26 | value5 | -| enums.swift:1:1:4:1 | EnumValues | 7 | file://:0:0:0:0 | __derived_enum_equals(_:_:) | -| enums.swift:1:1:4:1 | EnumValues | 8 | file://:0:0:0:0 | hashValue | -| enums.swift:1:1:4:1 | EnumValues | 9 | file://:0:0:0:0 | var ... = ... | -| enums.swift:1:1:4:1 | EnumValues | 10 | file://:0:0:0:0 | hash(into:) | -| enums.swift:7:1:10:1 | EnumValuesWithBase | 0 | enums.swift:8:5:8:18 | case ... | -| enums.swift:7:1:10:1 | EnumValuesWithBase | 1 | enums.swift:8:10:8:10 | value1 | -| enums.swift:7:1:10:1 | EnumValuesWithBase | 2 | enums.swift:8:18:8:18 | value2 | -| enums.swift:7:1:10:1 | EnumValuesWithBase | 3 | enums.swift:9:5:9:26 | case ... | -| enums.swift:7:1:10:1 | EnumValuesWithBase | 4 | enums.swift:9:10:9:10 | value3 | -| enums.swift:7:1:10:1 | EnumValuesWithBase | 5 | enums.swift:9:18:9:18 | value4 | -| enums.swift:7:1:10:1 | EnumValuesWithBase | 6 | enums.swift:9:26:9:26 | value5 | -| enums.swift:7:1:10:1 | EnumValuesWithBase | 7 | file://:0:0:0:0 | RawValue | -| enums.swift:7:1:10:1 | EnumValuesWithBase | 8 | file://:0:0:0:0 | EnumValuesWithBase.init(rawValue:) | -| enums.swift:7:1:10:1 | EnumValuesWithBase | 9 | file://:0:0:0:0 | rawValue | -| enums.swift:7:1:10:1 | EnumValuesWithBase | 10 | file://:0:0:0:0 | var ... = ... | -| enums.swift:12:1:16:1 | EnumWithParams | 0 | enums.swift:13:5:13:22 | case ... | -| enums.swift:12:1:16:1 | EnumWithParams | 1 | enums.swift:13:10:13:22 | nodata1 | -| enums.swift:12:1:16:1 | EnumWithParams | 2 | enums.swift:14:5:14:21 | case ... | -| enums.swift:12:1:16:1 | EnumWithParams | 3 | enums.swift:14:10:14:21 | intdata | -| enums.swift:12:1:16:1 | EnumWithParams | 4 | enums.swift:15:5:15:35 | case ... | -| enums.swift:12:1:16:1 | EnumWithParams | 5 | enums.swift:15:10:15:35 | tuple | -| enums.swift:18:1:21:1 | GenericEnum | 0 | enums.swift:19:5:19:10 | case ... | -| enums.swift:18:1:21:1 | GenericEnum | 1 | enums.swift:19:10:19:10 | none | -| enums.swift:18:1:21:1 | GenericEnum | 2 | enums.swift:20:5:20:16 | case ... | -| enums.swift:18:1:21:1 | GenericEnum | 3 | enums.swift:20:10:20:16 | some | -| enums.swift:23:1:27:1 | EnumWithNamedParams | 0 | enums.swift:24:5:24:25 | case ... | -| enums.swift:23:1:27:1 | EnumWithNamedParams | 1 | enums.swift:24:10:24:25 | nodata1 | -| enums.swift:23:1:27:1 | EnumWithNamedParams | 2 | enums.swift:25:5:25:24 | case ... | -| enums.swift:23:1:27:1 | EnumWithNamedParams | 3 | enums.swift:25:10:25:24 | intdata | -| enums.swift:23:1:27:1 | EnumWithNamedParams | 4 | enums.swift:26:5:26:44 | case ... | -| enums.swift:23:1:27:1 | EnumWithNamedParams | 5 | enums.swift:26:10:26:44 | tuple | diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getMember.ql deleted file mode 100644 index 28b99b8dc960..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from EnumDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl.expected b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl.expected index 76a4a1191539..70601a44e2ab 100644 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl.expected @@ -1,18 +1,32 @@ -| enums.swift:2:10:2:10 | value1 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumValues.Type) -> EnumValues | getName: | value1 | getNumberOfParams: | 0 | -| enums.swift:2:18:2:18 | value2 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumValues.Type) -> EnumValues | getName: | value2 | getNumberOfParams: | 0 | -| enums.swift:3:10:3:10 | value3 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumValues.Type) -> EnumValues | getName: | value3 | getNumberOfParams: | 0 | -| enums.swift:3:18:3:18 | value4 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumValues.Type) -> EnumValues | getName: | value4 | getNumberOfParams: | 0 | -| enums.swift:3:26:3:26 | value5 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumValues.Type) -> EnumValues | getName: | value5 | getNumberOfParams: | 0 | -| enums.swift:8:10:8:10 | value1 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumValuesWithBase.Type) -> EnumValuesWithBase | getName: | value1 | getNumberOfParams: | 0 | -| enums.swift:8:18:8:18 | value2 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumValuesWithBase.Type) -> EnumValuesWithBase | getName: | value2 | getNumberOfParams: | 0 | -| enums.swift:9:10:9:10 | value3 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumValuesWithBase.Type) -> EnumValuesWithBase | getName: | value3 | getNumberOfParams: | 0 | -| enums.swift:9:18:9:18 | value4 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumValuesWithBase.Type) -> EnumValuesWithBase | getName: | value4 | getNumberOfParams: | 0 | -| enums.swift:9:26:9:26 | value5 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumValuesWithBase.Type) -> EnumValuesWithBase | getName: | value5 | getNumberOfParams: | 0 | -| enums.swift:13:10:13:22 | nodata1 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumWithParams.Type) -> (Void) -> EnumWithParams | getName: | nodata1 | getNumberOfParams: | 1 | -| enums.swift:14:10:14:21 | intdata | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumWithParams.Type) -> (Int) -> EnumWithParams | getName: | intdata | getNumberOfParams: | 1 | -| enums.swift:15:10:15:35 | tuple | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumWithParams.Type) -> (Int, String, Double) -> EnumWithParams | getName: | tuple | getNumberOfParams: | 3 | -| enums.swift:19:10:19:10 | none | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (GenericEnum.Type) -> GenericEnum | getName: | none | getNumberOfParams: | 0 | -| enums.swift:20:10:20:16 | some | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (GenericEnum.Type) -> (T) -> GenericEnum | getName: | some | getNumberOfParams: | 1 | -| enums.swift:24:10:24:25 | nodata1 | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumWithNamedParams.Type) -> (Void) -> EnumWithNamedParams | getName: | nodata1 | getNumberOfParams: | 1 | -| enums.swift:25:10:25:24 | intdata | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumWithNamedParams.Type) -> (Int) -> EnumWithNamedParams | getName: | intdata | getNumberOfParams: | 1 | -| enums.swift:26:10:26:44 | tuple | getModule: | file://:0:0:0:0 | enums | getNumberOfMembers: | 0 | getInterfaceType: | (EnumWithNamedParams.Type) -> (Int, String, Double) -> EnumWithNamedParams | getName: | tuple | getNumberOfParams: | 3 | +instances +| enums.swift:2:10:2:10 | value1 | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumValues.Type) -> EnumValues | getName: | value1 | +| enums.swift:2:18:2:18 | value2 | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumValues.Type) -> EnumValues | getName: | value2 | +| enums.swift:3:10:3:10 | value3 | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumValues.Type) -> EnumValues | getName: | value3 | +| enums.swift:3:18:3:18 | value4 | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumValues.Type) -> EnumValues | getName: | value4 | +| enums.swift:3:26:3:26 | value5 | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumValues.Type) -> EnumValues | getName: | value5 | +| enums.swift:8:10:8:10 | value1 | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumValuesWithBase.Type) -> EnumValuesWithBase | getName: | value1 | +| enums.swift:8:18:8:18 | value2 | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumValuesWithBase.Type) -> EnumValuesWithBase | getName: | value2 | +| enums.swift:9:10:9:10 | value3 | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumValuesWithBase.Type) -> EnumValuesWithBase | getName: | value3 | +| enums.swift:9:18:9:18 | value4 | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumValuesWithBase.Type) -> EnumValuesWithBase | getName: | value4 | +| enums.swift:9:26:9:26 | value5 | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumValuesWithBase.Type) -> EnumValuesWithBase | getName: | value5 | +| enums.swift:13:10:13:22 | nodata1 | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumWithParams.Type) -> (Void) -> EnumWithParams | getName: | nodata1 | +| enums.swift:14:10:14:21 | intdata | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumWithParams.Type) -> (Int) -> EnumWithParams | getName: | intdata | +| enums.swift:15:10:15:35 | tuple | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumWithParams.Type) -> (Int, String, Double) -> EnumWithParams | getName: | tuple | +| enums.swift:19:10:19:10 | none | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (GenericEnum.Type) -> GenericEnum | getName: | none | +| enums.swift:20:10:20:16 | some | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (GenericEnum.Type) -> (T) -> GenericEnum | getName: | some | +| enums.swift:24:10:24:25 | nodata1 | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumWithNamedParams.Type) -> (Void) -> EnumWithNamedParams | getName: | nodata1 | +| enums.swift:25:10:25:24 | intdata | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumWithNamedParams.Type) -> (Int) -> EnumWithNamedParams | getName: | intdata | +| enums.swift:26:10:26:44 | tuple | getModule: | file://:0:0:0:0 | enums | getInterfaceType: | (EnumWithNamedParams.Type) -> (Int, String, Double) -> EnumWithNamedParams | getName: | tuple | +getMember +getParam +| enums.swift:13:10:13:22 | nodata1 | 0 | enums.swift:13:18:13:18 | _ | +| enums.swift:14:10:14:21 | intdata | 0 | enums.swift:14:18:14:18 | _ | +| enums.swift:15:10:15:35 | tuple | 0 | enums.swift:15:16:15:16 | _ | +| enums.swift:15:10:15:35 | tuple | 1 | enums.swift:15:21:15:21 | _ | +| enums.swift:15:10:15:35 | tuple | 2 | enums.swift:15:29:15:29 | _ | +| enums.swift:20:10:20:16 | some | 0 | enums.swift:20:15:20:15 | _ | +| enums.swift:24:10:24:25 | nodata1 | 0 | enums.swift:24:18:24:21 | v | +| enums.swift:25:10:25:24 | intdata | 0 | enums.swift:25:18:25:21 | i | +| enums.swift:26:10:26:44 | tuple | 0 | enums.swift:26:16:26:19 | i | +| enums.swift:26:10:26:44 | tuple | 1 | enums.swift:26:24:26:27 | s | +| enums.swift:26:10:26:44 | tuple | 2 | enums.swift:26:35:26:38 | d | diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl.ql b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl.ql index 1ff638217b0c..23f6fdd8e723 100644 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl.ql @@ -2,16 +2,24 @@ import codeql.swift.elements import TestUtils -from - EnumElementDecl x, ModuleDecl getModule, int getNumberOfMembers, Type getInterfaceType, - string getName, int getNumberOfParams -where +query predicate instances( + EnumElementDecl x, string getModule__label, ModuleDecl getModule, string getInterfaceType__label, + Type getInterfaceType, string getName__label, string getName +) { toBeTested(x) and not x.isUnknown() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and + getInterfaceType__label = "getInterfaceType:" and getInterfaceType = x.getInterfaceType() and - getName = x.getName() and - getNumberOfParams = x.getNumberOfParams() -select x, "getModule:", getModule, "getNumberOfMembers:", getNumberOfMembers, "getInterfaceType:", - getInterfaceType, "getName:", getName, "getNumberOfParams:", getNumberOfParams + getName__label = "getName:" and + getName = x.getName() +} + +query predicate getMember(EnumElementDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getParam(EnumElementDecl x, int index, ParamDecl getParam) { + toBeTested(x) and not x.isUnknown() and getParam = x.getParam(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getMember.ql deleted file mode 100644 index 2a500be3149d..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from EnumElementDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getParam.expected b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getParam.expected deleted file mode 100644 index 15e0149f5955..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getParam.expected +++ /dev/null @@ -1,11 +0,0 @@ -| enums.swift:13:10:13:22 | nodata1 | 0 | enums.swift:13:18:13:18 | _ | -| enums.swift:14:10:14:21 | intdata | 0 | enums.swift:14:18:14:18 | _ | -| enums.swift:15:10:15:35 | tuple | 0 | enums.swift:15:16:15:16 | _ | -| enums.swift:15:10:15:35 | tuple | 1 | enums.swift:15:21:15:21 | _ | -| enums.swift:15:10:15:35 | tuple | 2 | enums.swift:15:29:15:29 | _ | -| enums.swift:20:10:20:16 | some | 0 | enums.swift:20:15:20:15 | _ | -| enums.swift:24:10:24:25 | nodata1 | 0 | enums.swift:24:18:24:21 | v | -| enums.swift:25:10:25:24 | intdata | 0 | enums.swift:25:18:25:21 | i | -| enums.swift:26:10:26:44 | tuple | 0 | enums.swift:26:16:26:19 | i | -| enums.swift:26:10:26:44 | tuple | 1 | enums.swift:26:24:26:27 | s | -| enums.swift:26:10:26:44 | tuple | 2 | enums.swift:26:35:26:38 | d | diff --git a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getParam.ql b/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getParam.ql deleted file mode 100644 index 80621f6d6fa5..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl_getParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from EnumElementDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getParam(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.expected b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.expected index bd70109bed0c..1dd2c0c4695c 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.expected @@ -1,4 +1,19 @@ -| extensions.swift:5:1:9:1 | extension of S | getModule: | file://:0:0:0:0 | extensions | getNumberOfMembers: | 3 | getNumberOfGenericTypeParams: | 0 | getExtendedTypeDecl: | extensions.swift:1:1:1:11 | S | getNumberOfProtocols: | 0 | -| extensions.swift:11:1:15:1 | extension of C | getModule: | file://:0:0:0:0 | extensions | getNumberOfMembers: | 3 | getNumberOfGenericTypeParams: | 0 | getExtendedTypeDecl: | extensions.swift:3:1:3:10 | C | getNumberOfProtocols: | 0 | -| extensions.swift:21:1:23:1 | extension of S | getModule: | file://:0:0:0:0 | extensions | getNumberOfMembers: | 1 | getNumberOfGenericTypeParams: | 0 | getExtendedTypeDecl: | extensions.swift:1:1:1:11 | S | getNumberOfProtocols: | 1 | -| extensions.swift:27:1:29:1 | extension of C | getModule: | file://:0:0:0:0 | extensions | getNumberOfMembers: | 1 | getNumberOfGenericTypeParams: | 0 | getExtendedTypeDecl: | extensions.swift:3:1:3:10 | C | getNumberOfProtocols: | 2 | +instances +| extensions.swift:5:1:9:1 | extension of S | getModule: | file://:0:0:0:0 | extensions | getExtendedTypeDecl: | extensions.swift:1:1:1:11 | S | +| extensions.swift:11:1:15:1 | extension of C | getModule: | file://:0:0:0:0 | extensions | getExtendedTypeDecl: | extensions.swift:3:1:3:10 | C | +| extensions.swift:21:1:23:1 | extension of S | getModule: | file://:0:0:0:0 | extensions | getExtendedTypeDecl: | extensions.swift:1:1:1:11 | S | +| extensions.swift:27:1:29:1 | extension of C | getModule: | file://:0:0:0:0 | extensions | getExtendedTypeDecl: | extensions.swift:3:1:3:10 | C | +getGenericTypeParam +getMember +| extensions.swift:5:1:9:1 | extension of S | 0 | extensions.swift:6:5:6:37 | var ... = ... | +| extensions.swift:5:1:9:1 | extension of S | 1 | extensions.swift:6:9:6:9 | x | +| extensions.swift:5:1:9:1 | extension of S | 2 | extensions.swift:8:5:8:17 | foo() | +| extensions.swift:11:1:15:1 | extension of C | 0 | extensions.swift:12:5:12:38 | var ... = ... | +| extensions.swift:11:1:15:1 | extension of C | 1 | extensions.swift:12:9:12:9 | y | +| extensions.swift:11:1:15:1 | extension of C | 2 | extensions.swift:14:5:14:17 | bar() | +| extensions.swift:21:1:23:1 | extension of S | 0 | extensions.swift:22:5:22:17 | baz() | +| extensions.swift:27:1:29:1 | extension of C | 0 | extensions.swift:28:5:28:17 | baz() | +getProtocol +| extensions.swift:21:1:23:1 | extension of S | 0 | extensions.swift:17:1:19:1 | P1 | +| extensions.swift:27:1:29:1 | extension of C | 0 | extensions.swift:17:1:19:1 | P1 | +| extensions.swift:27:1:29:1 | extension of C | 1 | extensions.swift:25:1:25:14 | P2 | diff --git a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.ql b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.ql index 725a9082047b..3e4f6ddaddc8 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.ql @@ -2,17 +2,28 @@ import codeql.swift.elements import TestUtils -from - ExtensionDecl x, ModuleDecl getModule, int getNumberOfMembers, int getNumberOfGenericTypeParams, - NominalTypeDecl getExtendedTypeDecl, int getNumberOfProtocols -where +query predicate instances( + ExtensionDecl x, string getModule__label, ModuleDecl getModule, string getExtendedTypeDecl__label, + NominalTypeDecl getExtendedTypeDecl +) { toBeTested(x) and not x.isUnknown() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and - getNumberOfGenericTypeParams = x.getNumberOfGenericTypeParams() and - getExtendedTypeDecl = x.getExtendedTypeDecl() and - getNumberOfProtocols = x.getNumberOfProtocols() -select x, "getModule:", getModule, "getNumberOfMembers:", getNumberOfMembers, - "getNumberOfGenericTypeParams:", getNumberOfGenericTypeParams, "getExtendedTypeDecl:", - getExtendedTypeDecl, "getNumberOfProtocols:", getNumberOfProtocols + getExtendedTypeDecl__label = "getExtendedTypeDecl:" and + getExtendedTypeDecl = x.getExtendedTypeDecl() +} + +query predicate getGenericTypeParam( + ExtensionDecl x, int index, GenericTypeParamDecl getGenericTypeParam +) { + toBeTested(x) and not x.isUnknown() and getGenericTypeParam = x.getGenericTypeParam(index) +} + +query predicate getMember(ExtensionDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getProtocol(ExtensionDecl x, int index, ProtocolDecl getProtocol) { + toBeTested(x) and not x.isUnknown() and getProtocol = x.getProtocol(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getGenericTypeParam.expected b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getGenericTypeParam.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getGenericTypeParam.ql b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getGenericTypeParam.ql deleted file mode 100644 index 4f67a7edefcb..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getGenericTypeParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ExtensionDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getGenericTypeParam(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getMember.expected deleted file mode 100644 index 0d89d932b428..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getMember.expected +++ /dev/null @@ -1,8 +0,0 @@ -| extensions.swift:5:1:9:1 | extension of S | 0 | extensions.swift:6:5:6:37 | var ... = ... | -| extensions.swift:5:1:9:1 | extension of S | 1 | extensions.swift:6:9:6:9 | x | -| extensions.swift:5:1:9:1 | extension of S | 2 | extensions.swift:8:5:8:17 | foo() | -| extensions.swift:11:1:15:1 | extension of C | 0 | extensions.swift:12:5:12:38 | var ... = ... | -| extensions.swift:11:1:15:1 | extension of C | 1 | extensions.swift:12:9:12:9 | y | -| extensions.swift:11:1:15:1 | extension of C | 2 | extensions.swift:14:5:14:17 | bar() | -| extensions.swift:21:1:23:1 | extension of S | 0 | extensions.swift:22:5:22:17 | baz() | -| extensions.swift:27:1:29:1 | extension of C | 0 | extensions.swift:28:5:28:17 | baz() | diff --git a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getMember.ql deleted file mode 100644 index 7025173bb21a..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ExtensionDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getProtocol.expected b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getProtocol.expected deleted file mode 100644 index 9a8915164b41..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getProtocol.expected +++ /dev/null @@ -1,3 +0,0 @@ -| extensions.swift:21:1:23:1 | extension of S | 0 | extensions.swift:17:1:19:1 | P1 | -| extensions.swift:27:1:29:1 | extension of C | 0 | extensions.swift:17:1:19:1 | P1 | -| extensions.swift:27:1:29:1 | extension of C | 1 | extensions.swift:25:1:25:14 | P2 | diff --git a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getProtocol.ql b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getProtocol.ql deleted file mode 100644 index 9983f602e8bf..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl_getProtocol.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ExtensionDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getProtocol(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl.expected b/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl.expected index e69de29bb2d1..c7826fe6321c 100644 --- a/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl.expected @@ -0,0 +1,3 @@ +instances +getMember +getActiveElement diff --git a/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl.ql b/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl.ql index 2bb062dbb8fb..b9948cf8d489 100644 --- a/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl.ql @@ -2,12 +2,17 @@ import codeql.swift.elements import TestUtils -from IfConfigDecl x, ModuleDecl getModule, int getNumberOfMembers, int getNumberOfActiveElements -where +query predicate instances(IfConfigDecl x, string getModule__label, ModuleDecl getModule) { toBeTested(x) and not x.isUnknown() and - getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and - getNumberOfActiveElements = x.getNumberOfActiveElements() -select x, "getModule:", getModule, "getNumberOfMembers:", getNumberOfMembers, - "getNumberOfActiveElements:", getNumberOfActiveElements + getModule__label = "getModule:" and + getModule = x.getModule() +} + +query predicate getMember(IfConfigDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getActiveElement(IfConfigDecl x, int index, AstNode getActiveElement) { + toBeTested(x) and not x.isUnknown() and getActiveElement = x.getActiveElement(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getActiveElement.expected b/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getActiveElement.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getActiveElement.ql b/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getActiveElement.ql deleted file mode 100644 index d1613f30389a..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getActiveElement.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from IfConfigDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getActiveElement(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getMember.ql deleted file mode 100644 index d2b1b6961a32..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from IfConfigDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl.expected b/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl.expected index 2b781c5e3593..0e4b0b1d19a1 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl.expected @@ -1,5 +1,19 @@ -| import.swift:1:1:1:8 | import ... | getModule: | file://:0:0:0:0 | import | getNumberOfMembers: | 0 | isExported: | no | hasImportedModule: | yes | getNumberOfDeclarations: | 0 | -| import.swift:2:1:2:24 | import ... | getModule: | file://:0:0:0:0 | import | getNumberOfMembers: | 0 | isExported: | no | hasImportedModule: | yes | getNumberOfDeclarations: | 1 | -| import.swift:3:12:3:32 | import ... | getModule: | file://:0:0:0:0 | import | getNumberOfMembers: | 0 | isExported: | yes | hasImportedModule: | yes | getNumberOfDeclarations: | 1 | -| import.swift:4:1:4:19 | import ... | getModule: | file://:0:0:0:0 | import | getNumberOfMembers: | 0 | isExported: | no | hasImportedModule: | yes | getNumberOfDeclarations: | 2 | -| import.swift:5:1:5:23 | import ... | getModule: | file://:0:0:0:0 | import | getNumberOfMembers: | 0 | isExported: | no | hasImportedModule: | yes | getNumberOfDeclarations: | 1 | +instances +| import.swift:1:1:1:8 | import ... | getModule: | file://:0:0:0:0 | import | isExported: | no | +| import.swift:2:1:2:24 | import ... | getModule: | file://:0:0:0:0 | import | isExported: | no | +| import.swift:3:12:3:32 | import ... | getModule: | file://:0:0:0:0 | import | isExported: | yes | +| import.swift:4:1:4:19 | import ... | getModule: | file://:0:0:0:0 | import | isExported: | no | +| import.swift:5:1:5:23 | import ... | getModule: | file://:0:0:0:0 | import | isExported: | no | +getMember +getImportedModule +| import.swift:1:1:1:8 | import ... | file://:0:0:0:0 | Swift | +| import.swift:2:1:2:24 | import ... | file://:0:0:0:0 | Swift | +| import.swift:3:12:3:32 | import ... | file://:0:0:0:0 | Swift | +| import.swift:4:1:4:19 | import ... | file://:0:0:0:0 | Swift | +| import.swift:5:1:5:23 | import ... | file://:0:0:0:0 | Swift | +getDeclaration +| import.swift:2:1:2:24 | import ... | 0 | file://:0:0:0:0 | Int | +| import.swift:3:12:3:32 | import ... | 0 | file://:0:0:0:0 | Double | +| import.swift:4:1:4:19 | import ... | 0 | file://:0:0:0:0 | print(_:separator:terminator:) | +| import.swift:4:1:4:19 | import ... | 1 | file://:0:0:0:0 | print(_:separator:terminator:to:) | +| import.swift:5:1:5:23 | import ... | 0 | file://:0:0:0:0 | Hashable | diff --git a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl.ql b/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl.ql index c773f2890a5e..505c5f820a7f 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl.ql @@ -2,17 +2,26 @@ import codeql.swift.elements import TestUtils -from - ImportDecl x, ModuleDecl getModule, int getNumberOfMembers, string isExported, - string hasImportedModule, int getNumberOfDeclarations -where +query predicate instances( + ImportDecl x, string getModule__label, ModuleDecl getModule, string isExported__label, + string isExported +) { toBeTested(x) and not x.isUnknown() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and - (if x.isExported() then isExported = "yes" else isExported = "no") and - (if x.hasImportedModule() then hasImportedModule = "yes" else hasImportedModule = "no") and - getNumberOfDeclarations = x.getNumberOfDeclarations() -select x, "getModule:", getModule, "getNumberOfMembers:", getNumberOfMembers, "isExported:", - isExported, "hasImportedModule:", hasImportedModule, "getNumberOfDeclarations:", - getNumberOfDeclarations + isExported__label = "isExported:" and + if x.isExported() then isExported = "yes" else isExported = "no" +} + +query predicate getMember(ImportDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getImportedModule(ImportDecl x, ModuleDecl getImportedModule) { + toBeTested(x) and not x.isUnknown() and getImportedModule = x.getImportedModule() +} + +query predicate getDeclaration(ImportDecl x, int index, ValueDecl getDeclaration) { + toBeTested(x) and not x.isUnknown() and getDeclaration = x.getDeclaration(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getDeclaration.expected b/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getDeclaration.expected deleted file mode 100644 index b877b113bc69..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getDeclaration.expected +++ /dev/null @@ -1,5 +0,0 @@ -| import.swift:2:1:2:24 | import ... | 0 | file://:0:0:0:0 | Int | -| import.swift:3:12:3:32 | import ... | 0 | file://:0:0:0:0 | Double | -| import.swift:4:1:4:19 | import ... | 0 | file://:0:0:0:0 | print(_:separator:terminator:) | -| import.swift:4:1:4:19 | import ... | 1 | file://:0:0:0:0 | print(_:separator:terminator:to:) | -| import.swift:5:1:5:23 | import ... | 0 | file://:0:0:0:0 | Hashable | diff --git a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getDeclaration.ql b/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getDeclaration.ql deleted file mode 100644 index 0c9b586186b5..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getDeclaration.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ImportDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getDeclaration(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getImportedModule.expected b/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getImportedModule.expected deleted file mode 100644 index 8d064a707449..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getImportedModule.expected +++ /dev/null @@ -1,5 +0,0 @@ -| import.swift:1:1:1:8 | import ... | file://:0:0:0:0 | Swift | -| import.swift:2:1:2:24 | import ... | file://:0:0:0:0 | Swift | -| import.swift:3:12:3:32 | import ... | file://:0:0:0:0 | Swift | -| import.swift:4:1:4:19 | import ... | file://:0:0:0:0 | Swift | -| import.swift:5:1:5:23 | import ... | file://:0:0:0:0 | Swift | diff --git a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getImportedModule.ql b/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getImportedModule.ql deleted file mode 100644 index 9fe8acad96e2..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getImportedModule.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ImportDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getImportedModule() diff --git a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getMember.ql deleted file mode 100644 index 2aa0c828947b..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ImportDecl/ImportDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ImportDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl.expected b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl.expected index 65bec16eea0d..add8617f94f6 100644 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl.expected @@ -1,3 +1,12 @@ -| test.swift:2:1:2:50 | MacroDecl | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | test | getNumberOfMembers: | 0 | getInterfaceType: | () -> () | getName: | A() | getNumberOfParameters: | 0 | getNumberOfRoles: | 1 | -| test.swift:4:1:4:15 | MacroDecl | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | test | getNumberOfMembers: | 0 | getInterfaceType: | () -> () | getName: | B() | getNumberOfParameters: | 0 | getNumberOfRoles: | 1 | -| test.swift:7:1:7:15 | MacroDecl | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | test | getNumberOfMembers: | 0 | getInterfaceType: | () -> () | getName: | C() | getNumberOfParameters: | 0 | getNumberOfRoles: | 2 | +instances +| test.swift:2:1:2:50 | MacroDecl | getModule: | file://:0:0:0:0 | test | getInterfaceType: | () -> () | getName: | A() | +| test.swift:4:1:4:15 | MacroDecl | getModule: | file://:0:0:0:0 | test | getInterfaceType: | () -> () | getName: | B() | +| test.swift:7:1:7:15 | MacroDecl | getModule: | file://:0:0:0:0 | test | getInterfaceType: | () -> () | getName: | C() | +getGenericTypeParam +getMember +getParameter +getRole +| test.swift:2:1:2:50 | MacroDecl | 0 | test.swift:1:2:1:26 | #freestanding(declaration) | +| test.swift:4:1:4:15 | MacroDecl | 0 | test.swift:3:2:3:25 | #freestanding(expression) | +| test.swift:7:1:7:15 | MacroDecl | 0 | test.swift:6:2:6:20 | @attached(extension) | +| test.swift:7:1:7:15 | MacroDecl | 1 | test.swift:5:2:5:17 | @attached(member) | diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl.ql b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl.ql index 4d8c6e77aae0..2a675c609101 100644 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl.ql @@ -2,19 +2,32 @@ import codeql.swift.elements import TestUtils -from - MacroDecl x, int getNumberOfGenericTypeParams, ModuleDecl getModule, int getNumberOfMembers, - Type getInterfaceType, string getName, int getNumberOfParameters, int getNumberOfRoles -where +query predicate instances( + MacroDecl x, string getModule__label, ModuleDecl getModule, string getInterfaceType__label, + Type getInterfaceType, string getName__label, string getName +) { toBeTested(x) and not x.isUnknown() and - getNumberOfGenericTypeParams = x.getNumberOfGenericTypeParams() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and + getInterfaceType__label = "getInterfaceType:" and getInterfaceType = x.getInterfaceType() and - getName = x.getName() and - getNumberOfParameters = x.getNumberOfParameters() and - getNumberOfRoles = x.getNumberOfRoles() -select x, "getNumberOfGenericTypeParams:", getNumberOfGenericTypeParams, "getModule:", getModule, - "getNumberOfMembers:", getNumberOfMembers, "getInterfaceType:", getInterfaceType, "getName:", - getName, "getNumberOfParameters:", getNumberOfParameters, "getNumberOfRoles:", getNumberOfRoles + getName__label = "getName:" and + getName = x.getName() +} + +query predicate getGenericTypeParam(MacroDecl x, int index, GenericTypeParamDecl getGenericTypeParam) { + toBeTested(x) and not x.isUnknown() and getGenericTypeParam = x.getGenericTypeParam(index) +} + +query predicate getMember(MacroDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getParameter(MacroDecl x, int index, ParamDecl getParameter) { + toBeTested(x) and not x.isUnknown() and getParameter = x.getParameter(index) +} + +query predicate getRole(MacroDecl x, int index, MacroRole getRole) { + toBeTested(x) and not x.isUnknown() and getRole = x.getRole(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getGenericTypeParam.expected b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getGenericTypeParam.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getGenericTypeParam.ql b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getGenericTypeParam.ql deleted file mode 100644 index c74a66c6b062..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getGenericTypeParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from MacroDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getGenericTypeParam(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getMember.ql deleted file mode 100644 index 1de9c7f24933..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from MacroDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getParameter.expected b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getParameter.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getParameter.ql b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getParameter.ql deleted file mode 100644 index 1e4c8754e34a..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getParameter.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from MacroDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getParameter(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getRole.expected b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getRole.expected deleted file mode 100644 index faa0a6256a60..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getRole.expected +++ /dev/null @@ -1,4 +0,0 @@ -| test.swift:2:1:2:50 | MacroDecl | 0 | test.swift:1:2:1:26 | #freestanding(declaration) | -| test.swift:4:1:4:15 | MacroDecl | 0 | test.swift:3:2:3:25 | #freestanding(expression) | -| test.swift:7:1:7:15 | MacroDecl | 0 | test.swift:6:2:6:20 | @attached(extension) | -| test.swift:7:1:7:15 | MacroDecl | 1 | test.swift:5:2:5:17 | @attached(member) | diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getRole.ql b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getRole.ql deleted file mode 100644 index cce29824f2a2..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroDecl_getRole.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from MacroDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getRole(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.expected b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.expected index 036d4f7ff6e6..eca30375b243 100644 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.expected +++ b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.expected @@ -1,20 +1,25 @@ -| file://:0:0:0:0 | #freestanding(declaration) | getKind: | 2 | getMacroSyntax: | 0 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | #freestanding(declaration) | getKind: | 2 | getMacroSyntax: | 0 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | @attached(accessor) | getKind: | 4 | getMacroSyntax: | 1 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | @attached(member) | getKind: | 16 | getMacroSyntax: | 1 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | @attached(memberAttribute) | getKind: | 8 | getMacroSyntax: | 1 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| file://:0:0:0:0 | @attached(peer) | getKind: | 32 | getMacroSyntax: | 1 | getNumberOfConformances: | 0 | getNumberOfNames: | 1 | -| file://:0:0:0:0 | @attached(peer) | getKind: | 32 | getMacroSyntax: | 1 | getNumberOfConformances: | 0 | getNumberOfNames: | 1 | -| test.swift:1:2:1:26 | #freestanding(declaration) | getKind: | 2 | getMacroSyntax: | 0 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| test.swift:3:2:3:25 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| test.swift:5:2:5:17 | @attached(member) | getKind: | 16 | getMacroSyntax: | 1 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | -| test.swift:6:2:6:20 | @attached(extension) | getKind: | 256 | getMacroSyntax: | 1 | getNumberOfConformances: | 0 | getNumberOfNames: | 0 | +instances +| file://:0:0:0:0 | #freestanding(declaration) | getKind: | 2 | getMacroSyntax: | 0 | +| file://:0:0:0:0 | #freestanding(declaration) | getKind: | 2 | getMacroSyntax: | 0 | +| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | +| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | +| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | +| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | +| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | +| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | +| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | +| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | +| file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | +| file://:0:0:0:0 | @attached(accessor) | getKind: | 4 | getMacroSyntax: | 1 | +| file://:0:0:0:0 | @attached(member) | getKind: | 16 | getMacroSyntax: | 1 | +| file://:0:0:0:0 | @attached(memberAttribute) | getKind: | 8 | getMacroSyntax: | 1 | +| file://:0:0:0:0 | @attached(peer) | getKind: | 32 | getMacroSyntax: | 1 | +| file://:0:0:0:0 | @attached(peer) | getKind: | 32 | getMacroSyntax: | 1 | +| test.swift:1:2:1:26 | #freestanding(declaration) | getKind: | 2 | getMacroSyntax: | 0 | +| test.swift:3:2:3:25 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | +| test.swift:5:2:5:17 | @attached(member) | getKind: | 16 | getMacroSyntax: | 1 | +| test.swift:6:2:6:20 | @attached(extension) | getKind: | 256 | getMacroSyntax: | 1 | +getConformance +getName +| file://:0:0:0:0 | @attached(peer) | 0 | $() | +| file://:0:0:0:0 | @attached(peer) | 0 | _lldb_summary() | diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.ql b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.ql index fb72920ffa48..5edff519fb80 100644 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.ql +++ b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.ql @@ -2,13 +2,21 @@ import codeql.swift.elements import TestUtils -from MacroRole x, int getKind, int getMacroSyntax, int getNumberOfConformances, int getNumberOfNames -where +query predicate instances( + MacroRole x, string getKind__label, int getKind, string getMacroSyntax__label, int getMacroSyntax +) { toBeTested(x) and not x.isUnknown() and + getKind__label = "getKind:" and getKind = x.getKind() and - getMacroSyntax = x.getMacroSyntax() and - getNumberOfConformances = x.getNumberOfConformances() and - getNumberOfNames = x.getNumberOfNames() -select x, "getKind:", getKind, "getMacroSyntax:", getMacroSyntax, "getNumberOfConformances:", - getNumberOfConformances, "getNumberOfNames:", getNumberOfNames + getMacroSyntax__label = "getMacroSyntax:" and + getMacroSyntax = x.getMacroSyntax() +} + +query predicate getConformance(MacroRole x, int index, Expr getConformance) { + toBeTested(x) and not x.isUnknown() and getConformance = x.getConformance(index) +} + +query predicate getName(MacroRole x, int index, string getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole_getConformance.expected b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole_getConformance.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole_getConformance.ql b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole_getConformance.ql deleted file mode 100644 index c3b8627010ee..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole_getConformance.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from MacroRole x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getConformance(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole_getName.expected b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole_getName.expected deleted file mode 100644 index 0c42bfc46014..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole_getName.expected +++ /dev/null @@ -1,2 +0,0 @@ -| file://:0:0:0:0 | @attached(peer) | 0 | $() | -| file://:0:0:0:0 | @attached(peer) | 0 | _lldb_summary() | diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole_getName.ql b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole_getName.ql deleted file mode 100644 index 296037f35c5a..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from MacroRole x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getName(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.expected b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.expected index 37ee373dc835..42d051d0a4ff 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.expected @@ -1,3 +1,20 @@ -| file://:0:0:0:0 | Foo | getModule: | file://:0:0:0:0 | Foo | getNumberOfMembers: | 0 | getInterfaceType: | module | getName: | Foo | getNumberOfInheritedTypes: | 0 | isBuiltinModule: | no | isSystemModule: | no | getNumberOfImportedModules: | 5 | getNumberOfExportedModules: | 1 | -| file://:0:0:0:0 | __ObjC | getModule: | file://:0:0:0:0 | __ObjC | getNumberOfMembers: | 0 | getInterfaceType: | module<__ObjC> | getName: | __ObjC | getNumberOfInheritedTypes: | 0 | isBuiltinModule: | no | isSystemModule: | no | getNumberOfImportedModules: | 1 | getNumberOfExportedModules: | 0 | -| file://:0:0:0:0 | default_module_name | getModule: | file://:0:0:0:0 | default_module_name | getNumberOfMembers: | 0 | getInterfaceType: | module | getName: | default_module_name | getNumberOfInheritedTypes: | 0 | isBuiltinModule: | no | isSystemModule: | no | getNumberOfImportedModules: | 5 | getNumberOfExportedModules: | 0 | +instances +| file://:0:0:0:0 | Foo | getModule: | file://:0:0:0:0 | Foo | getInterfaceType: | module | getName: | Foo | isBuiltinModule: | no | isSystemModule: | no | +| file://:0:0:0:0 | __ObjC | getModule: | file://:0:0:0:0 | __ObjC | getInterfaceType: | module<__ObjC> | getName: | __ObjC | isBuiltinModule: | no | isSystemModule: | no | +| file://:0:0:0:0 | default_module_name | getModule: | file://:0:0:0:0 | default_module_name | getInterfaceType: | module | getName: | default_module_name | isBuiltinModule: | no | isSystemModule: | no | +getMember +getInheritedType +getAnImportedModule +| file://:0:0:0:0 | Foo | file://:0:0:0:0 | Swift | +| file://:0:0:0:0 | Foo | file://:0:0:0:0 | SwiftOnoneSupport | +| file://:0:0:0:0 | Foo | file://:0:0:0:0 | _Concurrency | +| file://:0:0:0:0 | Foo | file://:0:0:0:0 | _StringProcessing | +| file://:0:0:0:0 | Foo | file://:0:0:0:0 | _SwiftConcurrencyShims | +| file://:0:0:0:0 | __ObjC | file://:0:0:0:0 | Swift | +| file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | Swift | +| file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | SwiftOnoneSupport | +| file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | _Concurrency | +| file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | _StringProcessing | +| file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | _SwiftConcurrencyShims | +getAnExportedModule +| file://:0:0:0:0 | Foo | file://:0:0:0:0 | Swift | diff --git a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.ql b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.ql index f48c8ae976cc..911474839d40 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.ql @@ -2,24 +2,37 @@ import codeql.swift.elements import TestUtils -from - ModuleDecl x, ModuleDecl getModule, int getNumberOfMembers, Type getInterfaceType, string getName, - int getNumberOfInheritedTypes, string isBuiltinModule, string isSystemModule, - int getNumberOfImportedModules, int getNumberOfExportedModules -where +query predicate instances( + ModuleDecl x, string getModule__label, ModuleDecl getModule, string getInterfaceType__label, + Type getInterfaceType, string getName__label, string getName, string isBuiltinModule__label, + string isBuiltinModule, string isSystemModule__label, string isSystemModule +) { toBeTested(x) and not x.isUnknown() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and + getInterfaceType__label = "getInterfaceType:" and getInterfaceType = x.getInterfaceType() and + getName__label = "getName:" and getName = x.getName() and - getNumberOfInheritedTypes = x.getNumberOfInheritedTypes() and + isBuiltinModule__label = "isBuiltinModule:" and (if x.isBuiltinModule() then isBuiltinModule = "yes" else isBuiltinModule = "no") and - (if x.isSystemModule() then isSystemModule = "yes" else isSystemModule = "no") and - getNumberOfImportedModules = x.getNumberOfImportedModules() and - getNumberOfExportedModules = x.getNumberOfExportedModules() -select x, "getModule:", getModule, "getNumberOfMembers:", getNumberOfMembers, "getInterfaceType:", - getInterfaceType, "getName:", getName, "getNumberOfInheritedTypes:", getNumberOfInheritedTypes, - "isBuiltinModule:", isBuiltinModule, "isSystemModule:", isSystemModule, - "getNumberOfImportedModules:", getNumberOfImportedModules, "getNumberOfExportedModules:", - getNumberOfExportedModules + isSystemModule__label = "isSystemModule:" and + if x.isSystemModule() then isSystemModule = "yes" else isSystemModule = "no" +} + +query predicate getMember(ModuleDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getInheritedType(ModuleDecl x, int index, Type getInheritedType) { + toBeTested(x) and not x.isUnknown() and getInheritedType = x.getInheritedType(index) +} + +query predicate getAnImportedModule(ModuleDecl x, ModuleDecl getAnImportedModule) { + toBeTested(x) and not x.isUnknown() and getAnImportedModule = x.getAnImportedModule() +} + +query predicate getAnExportedModule(ModuleDecl x, ModuleDecl getAnExportedModule) { + toBeTested(x) and not x.isUnknown() and getAnExportedModule = x.getAnExportedModule() +} diff --git a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnExportedModule.expected b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnExportedModule.expected deleted file mode 100644 index 271c68f34fdf..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnExportedModule.expected +++ /dev/null @@ -1 +0,0 @@ -| file://:0:0:0:0 | Foo | file://:0:0:0:0 | Swift | diff --git a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnExportedModule.ql b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnExportedModule.ql deleted file mode 100644 index 1a0476fb6585..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnExportedModule.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ModuleDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getAnExportedModule() diff --git a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnImportedModule.expected b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnImportedModule.expected deleted file mode 100644 index 57f89e195bce..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnImportedModule.expected +++ /dev/null @@ -1,11 +0,0 @@ -| file://:0:0:0:0 | Foo | file://:0:0:0:0 | Swift | -| file://:0:0:0:0 | Foo | file://:0:0:0:0 | SwiftOnoneSupport | -| file://:0:0:0:0 | Foo | file://:0:0:0:0 | _Concurrency | -| file://:0:0:0:0 | Foo | file://:0:0:0:0 | _StringProcessing | -| file://:0:0:0:0 | Foo | file://:0:0:0:0 | _SwiftConcurrencyShims | -| file://:0:0:0:0 | __ObjC | file://:0:0:0:0 | Swift | -| file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | Swift | -| file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | SwiftOnoneSupport | -| file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | _Concurrency | -| file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | _StringProcessing | -| file://:0:0:0:0 | default_module_name | file://:0:0:0:0 | _SwiftConcurrencyShims | diff --git a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnImportedModule.ql b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnImportedModule.ql deleted file mode 100644 index fa399bef4328..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getAnImportedModule.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ModuleDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getAnImportedModule() diff --git a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getInheritedType.expected b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getInheritedType.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getInheritedType.ql b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getInheritedType.ql deleted file mode 100644 index 1a1446596374..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getInheritedType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ModuleDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getInheritedType(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getMember.ql deleted file mode 100644 index 1510213d2872..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ModuleDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.expected b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.expected index 975da0933216..41cad53c61cd 100644 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.expected +++ b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.expected @@ -1,5 +1,31 @@ -| functions.swift:1:1:3:1 | foo() | hasName: | yes | hasSelfParam: | no | getNumberOfParams: | 0 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | functions | getNumberOfMembers: | 0 | getInterfaceType: | () -> Int | -| functions.swift:5:1:7:1 | bar(_:d:) | hasName: | yes | hasSelfParam: | no | getNumberOfParams: | 2 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | functions | getNumberOfMembers: | 0 | getInterfaceType: | (Int, Double) -> Int | -| functions.swift:10:5:10:28 | noBody(x:) | hasName: | yes | hasSelfParam: | yes | getNumberOfParams: | 1 | hasBody: | no | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | functions | getNumberOfMembers: | 0 | getInterfaceType: | (Self) -> (Int) -> Int | -| functions.swift:13:1:15:1 | variadic(_:) | hasName: | yes | hasSelfParam: | no | getNumberOfParams: | 1 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | functions | getNumberOfMembers: | 0 | getInterfaceType: | (Int...) -> () | -| functions.swift:17:1:19:1 | generic(x:y:) | hasName: | yes | hasSelfParam: | no | getNumberOfParams: | 2 | hasBody: | yes | getNumberOfCaptures: | 0 | getNumberOfGenericTypeParams: | 2 | getModule: | file://:0:0:0:0 | functions | getNumberOfMembers: | 0 | getInterfaceType: | (X, Y) -> () | +instances +| functions.swift:1:1:3:1 | foo() | getModule: | file://:0:0:0:0 | functions | getInterfaceType: | () -> Int | +| functions.swift:5:1:7:1 | bar(_:d:) | getModule: | file://:0:0:0:0 | functions | getInterfaceType: | (Int, Double) -> Int | +| functions.swift:10:5:10:28 | noBody(x:) | getModule: | file://:0:0:0:0 | functions | getInterfaceType: | (Self) -> (Int) -> Int | +| functions.swift:13:1:15:1 | variadic(_:) | getModule: | file://:0:0:0:0 | functions | getInterfaceType: | (Int...) -> () | +| functions.swift:17:1:19:1 | generic(x:y:) | getModule: | file://:0:0:0:0 | functions | getInterfaceType: | (X, Y) -> () | +getGenericTypeParam +| functions.swift:17:1:19:1 | generic(x:y:) | 0 | functions.swift:17:14:17:14 | X | +| functions.swift:17:1:19:1 | generic(x:y:) | 1 | functions.swift:17:17:17:17 | Y | +getMember +getName +| functions.swift:1:1:3:1 | foo() | foo() | +| functions.swift:5:1:7:1 | bar(_:d:) | bar(_:d:) | +| functions.swift:10:5:10:28 | noBody(x:) | noBody(x:) | +| functions.swift:13:1:15:1 | variadic(_:) | variadic(_:) | +| functions.swift:17:1:19:1 | generic(x:y:) | generic(x:y:) | +getSelfParam +| functions.swift:10:5:10:28 | noBody(x:) | functions.swift:10:10:10:10 | self | +getParam +| functions.swift:5:1:7:1 | bar(_:d:) | 0 | functions.swift:5:10:5:15 | x | +| functions.swift:5:1:7:1 | bar(_:d:) | 1 | functions.swift:5:20:5:25 | y | +| functions.swift:10:5:10:28 | noBody(x:) | 0 | functions.swift:10:17:10:20 | x | +| functions.swift:13:1:15:1 | variadic(_:) | 0 | functions.swift:13:15:13:26 | ints | +| functions.swift:17:1:19:1 | generic(x:y:) | 0 | functions.swift:17:20:17:23 | x | +| functions.swift:17:1:19:1 | generic(x:y:) | 1 | functions.swift:17:26:17:29 | y | +getBody +| functions.swift:1:1:3:1 | foo() | functions.swift:1:19:3:1 | { ... } | +| functions.swift:5:1:7:1 | bar(_:d:) | functions.swift:5:40:7:1 | { ... } | +| functions.swift:13:1:15:1 | variadic(_:) | functions.swift:13:31:15:1 | { ... } | +| functions.swift:17:1:19:1 | generic(x:y:) | functions.swift:17:32:19:1 | { ... } | +getCapture diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.ql b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.ql index b040631d9b09..5ecf5d80417c 100644 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.ql +++ b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.ql @@ -2,23 +2,44 @@ import codeql.swift.elements import TestUtils -from - NamedFunction x, string hasName, string hasSelfParam, int getNumberOfParams, string hasBody, - int getNumberOfCaptures, int getNumberOfGenericTypeParams, ModuleDecl getModule, - int getNumberOfMembers, Type getInterfaceType -where +query predicate instances( + NamedFunction x, string getModule__label, ModuleDecl getModule, string getInterfaceType__label, + Type getInterfaceType +) { toBeTested(x) and not x.isUnknown() and - (if x.hasName() then hasName = "yes" else hasName = "no") and - (if x.hasSelfParam() then hasSelfParam = "yes" else hasSelfParam = "no") and - getNumberOfParams = x.getNumberOfParams() and - (if x.hasBody() then hasBody = "yes" else hasBody = "no") and - getNumberOfCaptures = x.getNumberOfCaptures() and - getNumberOfGenericTypeParams = x.getNumberOfGenericTypeParams() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and + getInterfaceType__label = "getInterfaceType:" and getInterfaceType = x.getInterfaceType() -select x, "hasName:", hasName, "hasSelfParam:", hasSelfParam, "getNumberOfParams:", - getNumberOfParams, "hasBody:", hasBody, "getNumberOfCaptures:", getNumberOfCaptures, - "getNumberOfGenericTypeParams:", getNumberOfGenericTypeParams, "getModule:", getModule, - "getNumberOfMembers:", getNumberOfMembers, "getInterfaceType:", getInterfaceType +} + +query predicate getGenericTypeParam( + NamedFunction x, int index, GenericTypeParamDecl getGenericTypeParam +) { + toBeTested(x) and not x.isUnknown() and getGenericTypeParam = x.getGenericTypeParam(index) +} + +query predicate getMember(NamedFunction x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getName(NamedFunction x, string getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName() +} + +query predicate getSelfParam(NamedFunction x, ParamDecl getSelfParam) { + toBeTested(x) and not x.isUnknown() and getSelfParam = x.getSelfParam() +} + +query predicate getParam(NamedFunction x, int index, ParamDecl getParam) { + toBeTested(x) and not x.isUnknown() and getParam = x.getParam(index) +} + +query predicate getBody(NamedFunction x, BraceStmt getBody) { + toBeTested(x) and not x.isUnknown() and getBody = x.getBody() +} + +query predicate getCapture(NamedFunction x, int index, CapturedDecl getCapture) { + toBeTested(x) and not x.isUnknown() and getCapture = x.getCapture(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getBody.expected b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getBody.expected deleted file mode 100644 index 54fddb5c57c1..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getBody.expected +++ /dev/null @@ -1,4 +0,0 @@ -| functions.swift:1:1:3:1 | foo() | functions.swift:1:19:3:1 | { ... } | -| functions.swift:5:1:7:1 | bar(_:d:) | functions.swift:5:40:7:1 | { ... } | -| functions.swift:13:1:15:1 | variadic(_:) | functions.swift:13:31:15:1 | { ... } | -| functions.swift:17:1:19:1 | generic(x:y:) | functions.swift:17:32:19:1 | { ... } | diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getBody.ql b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getBody.ql deleted file mode 100644 index 8f02d92b3d7f..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getBody.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from NamedFunction x -where toBeTested(x) and not x.isUnknown() -select x, x.getBody() diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getCapture.expected b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getCapture.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getCapture.ql b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getCapture.ql deleted file mode 100644 index ebb3474649b6..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getCapture.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from NamedFunction x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getCapture(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getGenericTypeParam.expected b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getGenericTypeParam.expected deleted file mode 100644 index 0b0d62753ce2..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getGenericTypeParam.expected +++ /dev/null @@ -1,2 +0,0 @@ -| functions.swift:17:1:19:1 | generic(x:y:) | 0 | functions.swift:17:14:17:14 | X | -| functions.swift:17:1:19:1 | generic(x:y:) | 1 | functions.swift:17:17:17:17 | Y | diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getGenericTypeParam.ql b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getGenericTypeParam.ql deleted file mode 100644 index 031102432568..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getGenericTypeParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from NamedFunction x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getGenericTypeParam(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getMember.ql deleted file mode 100644 index ec7c7476c685..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from NamedFunction x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getName.expected b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getName.expected deleted file mode 100644 index 2cca221fe4d3..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getName.expected +++ /dev/null @@ -1,5 +0,0 @@ -| functions.swift:1:1:3:1 | foo() | foo() | -| functions.swift:5:1:7:1 | bar(_:d:) | bar(_:d:) | -| functions.swift:10:5:10:28 | noBody(x:) | noBody(x:) | -| functions.swift:13:1:15:1 | variadic(_:) | variadic(_:) | -| functions.swift:17:1:19:1 | generic(x:y:) | generic(x:y:) | diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getName.ql b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getName.ql deleted file mode 100644 index 553f3a3292d6..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from NamedFunction x -where toBeTested(x) and not x.isUnknown() -select x, x.getName() diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getParam.expected b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getParam.expected deleted file mode 100644 index f549b8615ad0..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getParam.expected +++ /dev/null @@ -1,6 +0,0 @@ -| functions.swift:5:1:7:1 | bar(_:d:) | 0 | functions.swift:5:10:5:15 | x | -| functions.swift:5:1:7:1 | bar(_:d:) | 1 | functions.swift:5:20:5:25 | y | -| functions.swift:10:5:10:28 | noBody(x:) | 0 | functions.swift:10:17:10:20 | x | -| functions.swift:13:1:15:1 | variadic(_:) | 0 | functions.swift:13:15:13:26 | ints | -| functions.swift:17:1:19:1 | generic(x:y:) | 0 | functions.swift:17:20:17:23 | x | -| functions.swift:17:1:19:1 | generic(x:y:) | 1 | functions.swift:17:26:17:29 | y | diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getParam.ql b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getParam.ql deleted file mode 100644 index 1755058ad729..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from NamedFunction x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getParam(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getSelfParam.expected b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getSelfParam.expected deleted file mode 100644 index fb6370f56e84..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getSelfParam.expected +++ /dev/null @@ -1 +0,0 @@ -| functions.swift:10:5:10:28 | noBody(x:) | functions.swift:10:10:10:10 | self | diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getSelfParam.ql b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getSelfParam.ql deleted file mode 100644 index 11a4563f6f1b..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction_getSelfParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from NamedFunction x -where toBeTested(x) and not x.isUnknown() -select x, x.getSelfParam() diff --git a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl.expected b/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl.expected index c93a86b2164b..8a5d39063f54 100644 --- a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl.expected @@ -1,4 +1,13 @@ -| file://:0:0:0:0 | _ | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | opaque_types | getNumberOfMembers: | 0 | getInterfaceType: | (some Base).Type | getName: | _ | getNumberOfInheritedTypes: | 0 | getNamingDeclaration: | opaque_types.swift:9:1:9:51 | baz(_:) | getNumberOfOpaqueGenericParams: | 1 | -| file://:0:0:0:0 | _ | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | opaque_types | getNumberOfMembers: | 0 | getInterfaceType: | (some P).Type | getName: | _ | getNumberOfInheritedTypes: | 0 | getNamingDeclaration: | opaque_types.swift:5:1:5:45 | bar(_:) | getNumberOfOpaqueGenericParams: | 1 | -| file://:0:0:0:0 | _ | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | opaque_types | getNumberOfMembers: | 0 | getInterfaceType: | (some P).Type | getName: | _ | getNumberOfInheritedTypes: | 0 | getNamingDeclaration: | opaque_types.swift:13:1:13:59 | bazz() | getNumberOfOpaqueGenericParams: | 1 | -| file://:0:0:0:0 | _ | getNumberOfGenericTypeParams: | 0 | getModule: | file://:0:0:0:0 | opaque_types | getNumberOfMembers: | 0 | getInterfaceType: | (some SignedInteger).Type | getName: | _ | getNumberOfInheritedTypes: | 0 | getNamingDeclaration: | opaque_types.swift:1:1:1:45 | foo() | getNumberOfOpaqueGenericParams: | 1 | +instances +| file://:0:0:0:0 | _ | getModule: | file://:0:0:0:0 | opaque_types | getInterfaceType: | (some Base).Type | getName: | _ | getNamingDeclaration: | opaque_types.swift:9:1:9:51 | baz(_:) | +| file://:0:0:0:0 | _ | getModule: | file://:0:0:0:0 | opaque_types | getInterfaceType: | (some P).Type | getName: | _ | getNamingDeclaration: | opaque_types.swift:5:1:5:45 | bar(_:) | +| file://:0:0:0:0 | _ | getModule: | file://:0:0:0:0 | opaque_types | getInterfaceType: | (some P).Type | getName: | _ | getNamingDeclaration: | opaque_types.swift:13:1:13:59 | bazz() | +| file://:0:0:0:0 | _ | getModule: | file://:0:0:0:0 | opaque_types | getInterfaceType: | (some SignedInteger).Type | getName: | _ | getNamingDeclaration: | opaque_types.swift:1:1:1:45 | foo() | +getGenericTypeParam +getMember +getInheritedType +getOpaqueGenericParam +| file://:0:0:0:0 | _ | 0 | \u03c4_0_0 | +| file://:0:0:0:0 | _ | 0 | \u03c4_1_0 | +| file://:0:0:0:0 | _ | 0 | \u03c4_1_0 | +| file://:0:0:0:0 | _ | 0 | \u03c4_1_0 | diff --git a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl.ql b/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl.ql index c81a2adc2935..64b9149c1d00 100644 --- a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl.ql @@ -2,22 +2,39 @@ import codeql.swift.elements import TestUtils -from - OpaqueTypeDecl x, int getNumberOfGenericTypeParams, ModuleDecl getModule, int getNumberOfMembers, - Type getInterfaceType, string getName, int getNumberOfInheritedTypes, - ValueDecl getNamingDeclaration, int getNumberOfOpaqueGenericParams -where +query predicate instances( + OpaqueTypeDecl x, string getModule__label, ModuleDecl getModule, string getInterfaceType__label, + Type getInterfaceType, string getName__label, string getName, string getNamingDeclaration__label, + ValueDecl getNamingDeclaration +) { toBeTested(x) and not x.isUnknown() and - getNumberOfGenericTypeParams = x.getNumberOfGenericTypeParams() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and + getInterfaceType__label = "getInterfaceType:" and getInterfaceType = x.getInterfaceType() and + getName__label = "getName:" and getName = x.getName() and - getNumberOfInheritedTypes = x.getNumberOfInheritedTypes() and - getNamingDeclaration = x.getNamingDeclaration() and - getNumberOfOpaqueGenericParams = x.getNumberOfOpaqueGenericParams() -select x, "getNumberOfGenericTypeParams:", getNumberOfGenericTypeParams, "getModule:", getModule, - "getNumberOfMembers:", getNumberOfMembers, "getInterfaceType:", getInterfaceType, "getName:", - getName, "getNumberOfInheritedTypes:", getNumberOfInheritedTypes, "getNamingDeclaration:", - getNamingDeclaration, "getNumberOfOpaqueGenericParams:", getNumberOfOpaqueGenericParams + getNamingDeclaration__label = "getNamingDeclaration:" and + getNamingDeclaration = x.getNamingDeclaration() +} + +query predicate getGenericTypeParam( + OpaqueTypeDecl x, int index, GenericTypeParamDecl getGenericTypeParam +) { + toBeTested(x) and not x.isUnknown() and getGenericTypeParam = x.getGenericTypeParam(index) +} + +query predicate getMember(OpaqueTypeDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getInheritedType(OpaqueTypeDecl x, int index, Type getInheritedType) { + toBeTested(x) and not x.isUnknown() and getInheritedType = x.getInheritedType(index) +} + +query predicate getOpaqueGenericParam( + OpaqueTypeDecl x, int index, GenericTypeParamType getOpaqueGenericParam +) { + toBeTested(x) and not x.isUnknown() and getOpaqueGenericParam = x.getOpaqueGenericParam(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getGenericTypeParam.expected b/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getGenericTypeParam.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getGenericTypeParam.ql b/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getGenericTypeParam.ql deleted file mode 100644 index 68e19d5d16c1..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getGenericTypeParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from OpaqueTypeDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getGenericTypeParam(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getInheritedType.expected b/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getInheritedType.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getInheritedType.ql b/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getInheritedType.ql deleted file mode 100644 index dd9f8245b208..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getInheritedType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from OpaqueTypeDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getInheritedType(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getMember.ql deleted file mode 100644 index a1962a41c808..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from OpaqueTypeDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getOpaqueGenericParam.expected b/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getOpaqueGenericParam.expected deleted file mode 100644 index 922da8a9c1ad..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getOpaqueGenericParam.expected +++ /dev/null @@ -1,4 +0,0 @@ -| file://:0:0:0:0 | _ | 0 | \u03c4_0_0 | -| file://:0:0:0:0 | _ | 0 | \u03c4_1_0 | -| file://:0:0:0:0 | _ | 0 | \u03c4_1_0 | -| file://:0:0:0:0 | _ | 0 | \u03c4_1_0 | diff --git a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getOpaqueGenericParam.ql b/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getOpaqueGenericParam.ql deleted file mode 100644 index aca25644dbbd..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl_getOpaqueGenericParam.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from OpaqueTypeDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getOpaqueGenericParam(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl.expected b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl.expected index ffb1fa020723..f67d25dc31b0 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl.expected @@ -1,59 +1,79 @@ -| file://:0:0:0:0 | x | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | x | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| file://:0:0:0:0 | y | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | y | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:1:10:1:13 | _ | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | _ | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:1:18:1:29 | y | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Double | getNumberOfAccessors: | 0 | getName: | y | getType: | Double | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:2:10:2:13 | _ | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | _ | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:2:18:2:29 | y | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Double | getNumberOfAccessors: | 0 | getName: | y | getType: | Double | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:4:8:4:8 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | S | getNumberOfAccessors: | 0 | getName: | self | getType: | S | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:5:5:5:5 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | S | getNumberOfAccessors: | 0 | getName: | self | getType: | S | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:5:15:5:15 | x | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | x | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:5:15:5:15 | x | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | x | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:5:15:5:18 | x | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | x | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:5:23:5:23 | y | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | y | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:5:23:5:23 | y | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | y | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:5:23:5:26 | y | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | y | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:6:9:6:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | S | getNumberOfAccessors: | 0 | getName: | self | getType: | S | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:7:9:7:9 | newValue | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int? | getNumberOfAccessors: | 0 | getName: | newValue | getType: | Int? | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:7:9:7:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | S | getNumberOfAccessors: | 0 | getName: | self | getType: | S | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:12:13:12:22 | s | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | String | getNumberOfAccessors: | 0 | getName: | s | getType: | String | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:13:13:13:22 | s | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | String | getNumberOfAccessors: | 0 | getName: | s | getType: | String | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:14:26:14:26 | $0 | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | $0 | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:17:25:17:25 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Wrapper | getNumberOfAccessors: | 0 | getName: | self | getType: | Wrapper | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:17:25:17:25 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Wrapper | getNumberOfAccessors: | 0 | getName: | self | getType: | Wrapper | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:17:25:17:25 | wrappedValue | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | wrappedValue | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:18:9:18:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Wrapper | getNumberOfAccessors: | 0 | getName: | self | getType: | Wrapper | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:18:9:18:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Wrapper | getNumberOfAccessors: | 0 | getName: | self | getType: | Wrapper | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:18:9:18:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Wrapper | getNumberOfAccessors: | 0 | getName: | self | getType: | Wrapper | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:18:9:18:9 | value | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | value | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:22:9:22:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithInit | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:22:9:22:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithInit | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:22:9:22:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithInit | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:22:9:22:9 | value | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | value | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:24:5:24:5 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithInit | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:24:10:24:24 | wrappedValue | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | wrappedValue | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:27:25:27:25 | projectedValue | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Bool | getNumberOfAccessors: | 0 | getName: | projectedValue | getType: | Bool | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:27:25:27:25 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjected | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjected | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:27:25:27:25 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjected | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjected | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:27:25:27:25 | wrappedValue | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | wrappedValue | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:28:9:28:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjected | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjected | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:28:9:28:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjected | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjected | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:28:9:28:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjected | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjected | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:28:9:28:9 | value | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | value | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:29:9:29:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjected | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjected | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:29:9:29:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjected | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjected | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:29:9:29:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjected | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjected | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:29:9:29:9 | value | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Bool | getNumberOfAccessors: | 0 | getName: | value | getType: | Bool | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:33:9:33:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjectedAndInit | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjectedAndInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:33:9:33:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjectedAndInit | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjectedAndInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:33:9:33:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjectedAndInit | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjectedAndInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:33:9:33:9 | value | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | value | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:34:9:34:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjectedAndInit | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjectedAndInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:34:9:34:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjectedAndInit | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjectedAndInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:34:9:34:9 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjectedAndInit | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjectedAndInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:34:9:34:9 | value | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Bool | getNumberOfAccessors: | 0 | getName: | value | getType: | Bool | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:36:5:36:5 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjectedAndInit | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjectedAndInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:36:10:36:24 | wrappedValue | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | wrappedValue | getType: | Int | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:41:5:41:5 | self | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | WrapperWithProjectedAndInit | getNumberOfAccessors: | 0 | getName: | self | getType: | WrapperWithProjectedAndInit | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | yes | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:41:10:41:26 | projectedValue | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Bool | getNumberOfAccessors: | 0 | getName: | projectedValue | getType: | Bool | hasAttachedPropertyWrapperType: | no | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | no | hasPropertyWrapperBackingVar: | no | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | no | -| param_decls.swift:48:18:48:22 | p1 | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | p1 | getType: | Int | hasAttachedPropertyWrapperType: | yes | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | yes | hasPropertyWrapperBackingVar: | yes | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | yes | -| param_decls.swift:49:26:49:30 | p2 | getModule: | file://:0:0:0:0 | param_decls | getNumberOfMembers: | 0 | getInterfaceType: | Int | getNumberOfAccessors: | 0 | getName: | p2 | getType: | Int | hasAttachedPropertyWrapperType: | yes | hasParentPattern: | no | hasParentInitializer: | no | hasPropertyWrapperBackingVarBinding: | yes | hasPropertyWrapperBackingVar: | yes | hasPropertyWrapperProjectionVarBinding: | no | hasPropertyWrapperProjectionVar: | no | isInout: | no | hasPropertyWrapperLocalWrappedVarBinding: | no | hasPropertyWrapperLocalWrappedVar: | yes | +instances +| file://:0:0:0:0 | x | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | x | getType: | Int | isInout: | no | +| file://:0:0:0:0 | y | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | y | getType: | Int | isInout: | no | +| param_decls.swift:1:10:1:13 | _ | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | _ | getType: | Int | isInout: | no | +| param_decls.swift:1:18:1:29 | y | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Double | getName: | y | getType: | Double | isInout: | yes | +| param_decls.swift:2:10:2:13 | _ | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | _ | getType: | Int | isInout: | no | +| param_decls.swift:2:18:2:29 | y | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Double | getName: | y | getType: | Double | isInout: | yes | +| param_decls.swift:4:8:4:8 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | S | getName: | self | getType: | S | isInout: | yes | +| param_decls.swift:5:5:5:5 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | S | getName: | self | getType: | S | isInout: | yes | +| param_decls.swift:5:15:5:15 | x | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | x | getType: | Int | isInout: | no | +| param_decls.swift:5:15:5:15 | x | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | x | getType: | Int | isInout: | no | +| param_decls.swift:5:15:5:18 | x | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | x | getType: | Int | isInout: | no | +| param_decls.swift:5:23:5:23 | y | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | y | getType: | Int | isInout: | no | +| param_decls.swift:5:23:5:23 | y | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | y | getType: | Int | isInout: | no | +| param_decls.swift:5:23:5:26 | y | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | y | getType: | Int | isInout: | no | +| param_decls.swift:6:9:6:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | S | getName: | self | getType: | S | isInout: | no | +| param_decls.swift:7:9:7:9 | newValue | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int? | getName: | newValue | getType: | Int? | isInout: | no | +| param_decls.swift:7:9:7:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | S | getName: | self | getType: | S | isInout: | yes | +| param_decls.swift:12:13:12:22 | s | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | String | getName: | s | getType: | String | isInout: | yes | +| param_decls.swift:13:13:13:22 | s | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | String | getName: | s | getType: | String | isInout: | yes | +| param_decls.swift:14:26:14:26 | $0 | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | $0 | getType: | Int | isInout: | no | +| param_decls.swift:17:25:17:25 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Wrapper | getName: | self | getType: | Wrapper | isInout: | yes | +| param_decls.swift:17:25:17:25 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Wrapper | getName: | self | getType: | Wrapper | isInout: | yes | +| param_decls.swift:17:25:17:25 | wrappedValue | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | wrappedValue | getType: | Int | isInout: | no | +| param_decls.swift:18:9:18:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Wrapper | getName: | self | getType: | Wrapper | isInout: | no | +| param_decls.swift:18:9:18:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Wrapper | getName: | self | getType: | Wrapper | isInout: | yes | +| param_decls.swift:18:9:18:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Wrapper | getName: | self | getType: | Wrapper | isInout: | yes | +| param_decls.swift:18:9:18:9 | value | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | value | getType: | Int | isInout: | no | +| param_decls.swift:22:9:22:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithInit | getName: | self | getType: | WrapperWithInit | isInout: | no | +| param_decls.swift:22:9:22:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithInit | getName: | self | getType: | WrapperWithInit | isInout: | yes | +| param_decls.swift:22:9:22:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithInit | getName: | self | getType: | WrapperWithInit | isInout: | yes | +| param_decls.swift:22:9:22:9 | value | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | value | getType: | Int | isInout: | no | +| param_decls.swift:24:5:24:5 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithInit | getName: | self | getType: | WrapperWithInit | isInout: | yes | +| param_decls.swift:24:10:24:24 | wrappedValue | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | wrappedValue | getType: | Int | isInout: | no | +| param_decls.swift:27:25:27:25 | projectedValue | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Bool | getName: | projectedValue | getType: | Bool | isInout: | no | +| param_decls.swift:27:25:27:25 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjected | getName: | self | getType: | WrapperWithProjected | isInout: | yes | +| param_decls.swift:27:25:27:25 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjected | getName: | self | getType: | WrapperWithProjected | isInout: | yes | +| param_decls.swift:27:25:27:25 | wrappedValue | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | wrappedValue | getType: | Int | isInout: | no | +| param_decls.swift:28:9:28:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjected | getName: | self | getType: | WrapperWithProjected | isInout: | no | +| param_decls.swift:28:9:28:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjected | getName: | self | getType: | WrapperWithProjected | isInout: | yes | +| param_decls.swift:28:9:28:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjected | getName: | self | getType: | WrapperWithProjected | isInout: | yes | +| param_decls.swift:28:9:28:9 | value | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | value | getType: | Int | isInout: | no | +| param_decls.swift:29:9:29:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjected | getName: | self | getType: | WrapperWithProjected | isInout: | no | +| param_decls.swift:29:9:29:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjected | getName: | self | getType: | WrapperWithProjected | isInout: | yes | +| param_decls.swift:29:9:29:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjected | getName: | self | getType: | WrapperWithProjected | isInout: | yes | +| param_decls.swift:29:9:29:9 | value | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Bool | getName: | value | getType: | Bool | isInout: | no | +| param_decls.swift:33:9:33:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjectedAndInit | getName: | self | getType: | WrapperWithProjectedAndInit | isInout: | no | +| param_decls.swift:33:9:33:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjectedAndInit | getName: | self | getType: | WrapperWithProjectedAndInit | isInout: | yes | +| param_decls.swift:33:9:33:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjectedAndInit | getName: | self | getType: | WrapperWithProjectedAndInit | isInout: | yes | +| param_decls.swift:33:9:33:9 | value | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | value | getType: | Int | isInout: | no | +| param_decls.swift:34:9:34:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjectedAndInit | getName: | self | getType: | WrapperWithProjectedAndInit | isInout: | no | +| param_decls.swift:34:9:34:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjectedAndInit | getName: | self | getType: | WrapperWithProjectedAndInit | isInout: | yes | +| param_decls.swift:34:9:34:9 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjectedAndInit | getName: | self | getType: | WrapperWithProjectedAndInit | isInout: | yes | +| param_decls.swift:34:9:34:9 | value | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Bool | getName: | value | getType: | Bool | isInout: | no | +| param_decls.swift:36:5:36:5 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjectedAndInit | getName: | self | getType: | WrapperWithProjectedAndInit | isInout: | yes | +| param_decls.swift:36:10:36:24 | wrappedValue | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | wrappedValue | getType: | Int | isInout: | no | +| param_decls.swift:41:5:41:5 | self | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | WrapperWithProjectedAndInit | getName: | self | getType: | WrapperWithProjectedAndInit | isInout: | yes | +| param_decls.swift:41:10:41:26 | projectedValue | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Bool | getName: | projectedValue | getType: | Bool | isInout: | no | +| param_decls.swift:48:18:48:22 | p1 | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | p1 | getType: | Int | isInout: | no | +| param_decls.swift:49:26:49:30 | p2 | getModule: | file://:0:0:0:0 | param_decls | getInterfaceType: | Int | getName: | p2 | getType: | Int | isInout: | no | +getMember +getAccessor +getAttachedPropertyWrapperType +| param_decls.swift:48:18:48:22 | p1 | Wrapper | +| param_decls.swift:49:26:49:30 | p2 | WrapperWithInit | +getParentPattern +getParentInitializer +getPropertyWrapperBackingVarBinding +| param_decls.swift:48:18:48:22 | p1 | file://:0:0:0:0 | var ... = ... | +| param_decls.swift:49:26:49:30 | p2 | file://:0:0:0:0 | var ... = ... | +getPropertyWrapperBackingVar +| param_decls.swift:48:18:48:22 | p1 | param_decls.swift:48:18:48:18 | _p1 | +| param_decls.swift:49:26:49:30 | p2 | param_decls.swift:49:26:49:26 | _p2 | +getPropertyWrapperProjectionVarBinding +getPropertyWrapperProjectionVar +getPropertyWrapperLocalWrappedVarBinding +getPropertyWrapperLocalWrappedVar +| param_decls.swift:48:18:48:22 | p1 | param_decls.swift:48:18:48:18 | p1 | +| param_decls.swift:49:26:49:30 | p2 | param_decls.swift:49:26:49:26 | p2 | diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl.ql b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl.ql index eed0fb15c3e6..1af06c1a464a 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl.ql @@ -2,65 +2,87 @@ import codeql.swift.elements import TestUtils -from - ParamDecl x, ModuleDecl getModule, int getNumberOfMembers, Type getInterfaceType, - int getNumberOfAccessors, string getName, Type getType, string hasAttachedPropertyWrapperType, - string hasParentPattern, string hasParentInitializer, string hasPropertyWrapperBackingVarBinding, - string hasPropertyWrapperBackingVar, string hasPropertyWrapperProjectionVarBinding, - string hasPropertyWrapperProjectionVar, string isInout, - string hasPropertyWrapperLocalWrappedVarBinding, string hasPropertyWrapperLocalWrappedVar -where +query predicate instances( + ParamDecl x, string getModule__label, ModuleDecl getModule, string getInterfaceType__label, + Type getInterfaceType, string getName__label, string getName, string getType__label, Type getType, + string isInout__label, string isInout +) { toBeTested(x) and not x.isUnknown() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and + getInterfaceType__label = "getInterfaceType:" and getInterfaceType = x.getInterfaceType() and - getNumberOfAccessors = x.getNumberOfAccessors() and + getName__label = "getName:" and getName = x.getName() and + getType__label = "getType:" and getType = x.getType() and - ( - if x.hasAttachedPropertyWrapperType() - then hasAttachedPropertyWrapperType = "yes" - else hasAttachedPropertyWrapperType = "no" - ) and - (if x.hasParentPattern() then hasParentPattern = "yes" else hasParentPattern = "no") and - (if x.hasParentInitializer() then hasParentInitializer = "yes" else hasParentInitializer = "no") and - ( - if x.hasPropertyWrapperBackingVarBinding() - then hasPropertyWrapperBackingVarBinding = "yes" - else hasPropertyWrapperBackingVarBinding = "no" - ) and - ( - if x.hasPropertyWrapperBackingVar() - then hasPropertyWrapperBackingVar = "yes" - else hasPropertyWrapperBackingVar = "no" - ) and - ( - if x.hasPropertyWrapperProjectionVarBinding() - then hasPropertyWrapperProjectionVarBinding = "yes" - else hasPropertyWrapperProjectionVarBinding = "no" - ) and - ( - if x.hasPropertyWrapperProjectionVar() - then hasPropertyWrapperProjectionVar = "yes" - else hasPropertyWrapperProjectionVar = "no" - ) and - (if x.isInout() then isInout = "yes" else isInout = "no") and - ( - if x.hasPropertyWrapperLocalWrappedVarBinding() - then hasPropertyWrapperLocalWrappedVarBinding = "yes" - else hasPropertyWrapperLocalWrappedVarBinding = "no" - ) and - if x.hasPropertyWrapperLocalWrappedVar() - then hasPropertyWrapperLocalWrappedVar = "yes" - else hasPropertyWrapperLocalWrappedVar = "no" -select x, "getModule:", getModule, "getNumberOfMembers:", getNumberOfMembers, "getInterfaceType:", - getInterfaceType, "getNumberOfAccessors:", getNumberOfAccessors, "getName:", getName, "getType:", - getType, "hasAttachedPropertyWrapperType:", hasAttachedPropertyWrapperType, "hasParentPattern:", - hasParentPattern, "hasParentInitializer:", hasParentInitializer, - "hasPropertyWrapperBackingVarBinding:", hasPropertyWrapperBackingVarBinding, - "hasPropertyWrapperBackingVar:", hasPropertyWrapperBackingVar, - "hasPropertyWrapperProjectionVarBinding:", hasPropertyWrapperProjectionVarBinding, - "hasPropertyWrapperProjectionVar:", hasPropertyWrapperProjectionVar, "isInout:", isInout, - "hasPropertyWrapperLocalWrappedVarBinding:", hasPropertyWrapperLocalWrappedVarBinding, - "hasPropertyWrapperLocalWrappedVar:", hasPropertyWrapperLocalWrappedVar + isInout__label = "isInout:" and + if x.isInout() then isInout = "yes" else isInout = "no" +} + +query predicate getMember(ParamDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + +query predicate getAccessor(ParamDecl x, int index, Accessor getAccessor) { + toBeTested(x) and not x.isUnknown() and getAccessor = x.getAccessor(index) +} + +query predicate getAttachedPropertyWrapperType(ParamDecl x, Type getAttachedPropertyWrapperType) { + toBeTested(x) and + not x.isUnknown() and + getAttachedPropertyWrapperType = x.getAttachedPropertyWrapperType() +} + +query predicate getParentPattern(ParamDecl x, Pattern getParentPattern) { + toBeTested(x) and not x.isUnknown() and getParentPattern = x.getParentPattern() +} + +query predicate getParentInitializer(ParamDecl x, Expr getParentInitializer) { + toBeTested(x) and not x.isUnknown() and getParentInitializer = x.getParentInitializer() +} + +query predicate getPropertyWrapperBackingVarBinding( + ParamDecl x, PatternBindingDecl getPropertyWrapperBackingVarBinding +) { + toBeTested(x) and + not x.isUnknown() and + getPropertyWrapperBackingVarBinding = x.getPropertyWrapperBackingVarBinding() +} + +query predicate getPropertyWrapperBackingVar(ParamDecl x, VarDecl getPropertyWrapperBackingVar) { + toBeTested(x) and + not x.isUnknown() and + getPropertyWrapperBackingVar = x.getPropertyWrapperBackingVar() +} + +query predicate getPropertyWrapperProjectionVarBinding( + ParamDecl x, PatternBindingDecl getPropertyWrapperProjectionVarBinding +) { + toBeTested(x) and + not x.isUnknown() and + getPropertyWrapperProjectionVarBinding = x.getPropertyWrapperProjectionVarBinding() +} + +query predicate getPropertyWrapperProjectionVar(ParamDecl x, VarDecl getPropertyWrapperProjectionVar) { + toBeTested(x) and + not x.isUnknown() and + getPropertyWrapperProjectionVar = x.getPropertyWrapperProjectionVar() +} + +query predicate getPropertyWrapperLocalWrappedVarBinding( + ParamDecl x, PatternBindingDecl getPropertyWrapperLocalWrappedVarBinding +) { + toBeTested(x) and + not x.isUnknown() and + getPropertyWrapperLocalWrappedVarBinding = x.getPropertyWrapperLocalWrappedVarBinding() +} + +query predicate getPropertyWrapperLocalWrappedVar( + ParamDecl x, VarDecl getPropertyWrapperLocalWrappedVar +) { + toBeTested(x) and + not x.isUnknown() and + getPropertyWrapperLocalWrappedVar = x.getPropertyWrapperLocalWrappedVar() +} diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAccessor.expected b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAccessor.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAccessor.ql b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAccessor.ql deleted file mode 100644 index e6e886f9cb8c..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAccessor.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ParamDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getAccessor(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAttachedPropertyWrapperType.expected b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAttachedPropertyWrapperType.expected deleted file mode 100644 index b8a99db3f8fd..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAttachedPropertyWrapperType.expected +++ /dev/null @@ -1,2 +0,0 @@ -| param_decls.swift:48:18:48:22 | p1 | Wrapper | -| param_decls.swift:49:26:49:30 | p2 | WrapperWithInit | diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAttachedPropertyWrapperType.ql b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAttachedPropertyWrapperType.ql deleted file mode 100644 index fb67e3687aef..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getAttachedPropertyWrapperType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ParamDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getAttachedPropertyWrapperType() diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getMember.ql deleted file mode 100644 index a313de883905..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ParamDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentInitializer.expected b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentInitializer.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentInitializer.ql b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentInitializer.ql deleted file mode 100644 index fb122e5676ed..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentInitializer.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ParamDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getParentInitializer() diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentPattern.expected b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentPattern.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentPattern.ql b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentPattern.ql deleted file mode 100644 index 7f32c32313e7..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getParentPattern.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ParamDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getParentPattern() diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVar.expected b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVar.expected deleted file mode 100644 index 5a58e14fe486..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVar.expected +++ /dev/null @@ -1,2 +0,0 @@ -| param_decls.swift:48:18:48:22 | p1 | param_decls.swift:48:18:48:18 | _p1 | -| param_decls.swift:49:26:49:30 | p2 | param_decls.swift:49:26:49:26 | _p2 | diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVar.ql b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVar.ql deleted file mode 100644 index a75d4ace3fac..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVar.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ParamDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getPropertyWrapperBackingVar() diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVarBinding.expected b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVarBinding.expected deleted file mode 100644 index b3dc664e1db3..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVarBinding.expected +++ /dev/null @@ -1,2 +0,0 @@ -| param_decls.swift:48:18:48:22 | p1 | file://:0:0:0:0 | var ... = ... | -| param_decls.swift:49:26:49:30 | p2 | file://:0:0:0:0 | var ... = ... | diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVarBinding.ql b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVarBinding.ql deleted file mode 100644 index 2db7190cb952..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperBackingVarBinding.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ParamDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getPropertyWrapperBackingVarBinding() diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVar.expected b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVar.expected deleted file mode 100644 index e1b555437d39..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVar.expected +++ /dev/null @@ -1,2 +0,0 @@ -| param_decls.swift:48:18:48:22 | p1 | param_decls.swift:48:18:48:18 | p1 | -| param_decls.swift:49:26:49:30 | p2 | param_decls.swift:49:26:49:26 | p2 | diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVar.ql b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVar.ql deleted file mode 100644 index 9ebb3df90f04..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVar.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ParamDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getPropertyWrapperLocalWrappedVar() diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVarBinding.expected b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVarBinding.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVarBinding.ql b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVarBinding.ql deleted file mode 100644 index 4a33cbcb2681..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperLocalWrappedVarBinding.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ParamDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getPropertyWrapperLocalWrappedVarBinding() diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVar.expected b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVar.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVar.ql b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVar.ql deleted file mode 100644 index e919653b36b0..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVar.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ParamDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getPropertyWrapperProjectionVar() diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVarBinding.expected b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVarBinding.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVarBinding.ql b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVarBinding.ql deleted file mode 100644 index 47643738f7f7..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl_getPropertyWrapperProjectionVarBinding.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ParamDecl x -where toBeTested(x) and not x.isUnknown() -select x, x.getPropertyWrapperProjectionVarBinding() diff --git a/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.expected b/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.expected index af19c86dec2b..aaa3b31e23e9 100644 --- a/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.expected @@ -1,2 +1,4 @@ -| diagnostics.swift:2:1:2:25 | #warning(...) | getModule: | file://:0:0:0:0 | diagnostics | getNumberOfMembers: | 0 | getKind: | 2 | getMessage: | diagnostics.swift:2:10:2:10 | I'm a warning | -| diagnostics.swift:3:1:3:26 | #error(...) | getModule: | file://:0:0:0:0 | diagnostics | getNumberOfMembers: | 0 | getKind: | 1 | getMessage: | diagnostics.swift:3:8:3:8 | And I'm an error | +instances +| diagnostics.swift:2:1:2:25 | #warning(...) | getModule: | file://:0:0:0:0 | diagnostics | getKind: | 2 | getMessage: | diagnostics.swift:2:10:2:10 | I'm a warning | +| diagnostics.swift:3:1:3:26 | #error(...) | getModule: | file://:0:0:0:0 | diagnostics | getKind: | 1 | getMessage: | diagnostics.swift:3:8:3:8 | And I'm an error | +getMember diff --git a/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.ql b/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.ql index 4b4b1a2c132c..acfb7f037da7 100644 --- a/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.ql @@ -2,15 +2,20 @@ import codeql.swift.elements import TestUtils -from - PoundDiagnosticDecl x, ModuleDecl getModule, int getNumberOfMembers, int getKind, - StringLiteralExpr getMessage -where +query predicate instances( + PoundDiagnosticDecl x, string getModule__label, ModuleDecl getModule, string getKind__label, + int getKind, string getMessage__label, StringLiteralExpr getMessage +) { toBeTested(x) and not x.isUnknown() and + getModule__label = "getModule:" and getModule = x.getModule() and - getNumberOfMembers = x.getNumberOfMembers() and + getKind__label = "getKind:" and getKind = x.getKind() and + getMessage__label = "getMessage:" and getMessage = x.getMessage() -select x, "getModule:", getModule, "getNumberOfMembers:", getNumberOfMembers, "getKind:", getKind, - "getMessage:", getMessage +} + +query predicate getMember(PoundDiagnosticDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} diff --git a/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl_getMember.expected b/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl_getMember.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl_getMember.ql b/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl_getMember.ql deleted file mode 100644 index 9cae7c9ded0f..000000000000 --- a/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from PoundDiagnosticDecl x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.expected b/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.expected index e69de29bb2d1..26ca47278ce7 100644 --- a/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.expected @@ -0,0 +1,2 @@ +instances +getType diff --git a/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.ql b/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.ql index 4e14ce4e2f51..863c0dfe6471 100644 --- a/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.ql @@ -2,12 +2,20 @@ import codeql.swift.elements import TestUtils -from AppliedPropertyWrapperExpr x, string hasType, int getKind, Expr getValue, ParamDecl getParam -where +query predicate instances( + AppliedPropertyWrapperExpr x, string getKind__label, int getKind, string getValue__label, + Expr getValue, string getParam__label, ParamDecl getParam +) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getKind__label = "getKind:" and getKind = x.getKind() and + getValue__label = "getValue:" and getValue = x.getValue() and + getParam__label = "getParam:" and getParam = x.getParam() -select x, "hasType:", hasType, "getKind:", getKind, "getValue:", getValue, "getParam:", getParam +} + +query predicate getType(AppliedPropertyWrapperExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr_getParam.expected b/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr_getParam.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr_getType.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr_getType.ql deleted file mode 100644 index 925625421305..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from AppliedPropertyWrapperExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr_getValue.expected b/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr_getValue.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr.expected b/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr.expected index d9a7b040f1a8..6d51478c433c 100644 --- a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr.expected @@ -1 +1,4 @@ -| move_semantics.swift:5:9:5:17 | ConsumeExpr | hasType: | yes | getSubExpr: | move_semantics.swift:5:17:5:17 | x | +instances +| move_semantics.swift:5:9:5:17 | ConsumeExpr | getSubExpr: | move_semantics.swift:5:17:5:17 | x | +getType +| move_semantics.swift:5:9:5:17 | ConsumeExpr | Int | diff --git a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr.ql b/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr.ql index 8ff10e1d4302..1521b525991c 100644 --- a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr.ql @@ -2,10 +2,13 @@ import codeql.swift.elements import TestUtils -from ConsumeExpr x, string hasType, Expr getSubExpr -where +query predicate instances(ConsumeExpr x, string getSubExpr__label, Expr getSubExpr) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getSubExpr__label = "getSubExpr:" and getSubExpr = x.getSubExpr() -select x, "hasType:", hasType, "getSubExpr:", getSubExpr +} + +query predicate getType(ConsumeExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr_getType.expected deleted file mode 100644 index 7935a7393d6d..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr_getType.expected +++ /dev/null @@ -1 +0,0 @@ -| move_semantics.swift:5:9:5:17 | ConsumeExpr | Int | diff --git a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr_getType.ql deleted file mode 100644 index af4c8fe91157..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/ConsumeExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ConsumeExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr.expected b/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr.expected index fe6116b6ba0b..79797b15ae61 100644 --- a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr.expected @@ -1 +1,4 @@ -| move_semantics.swift:4:9:4:14 | CopyExpr | hasType: | yes | getSubExpr: | move_semantics.swift:4:14:4:14 | x | +instances +| move_semantics.swift:4:9:4:14 | CopyExpr | getSubExpr: | move_semantics.swift:4:14:4:14 | x | +getType +| move_semantics.swift:4:9:4:14 | CopyExpr | Int | diff --git a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr.ql b/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr.ql index 63145b175ba6..ab58e99444ea 100644 --- a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr.ql @@ -2,10 +2,13 @@ import codeql.swift.elements import TestUtils -from CopyExpr x, string hasType, Expr getSubExpr -where +query predicate instances(CopyExpr x, string getSubExpr__label, Expr getSubExpr) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getSubExpr__label = "getSubExpr:" and getSubExpr = x.getSubExpr() -select x, "hasType:", hasType, "getSubExpr:", getSubExpr +} + +query predicate getType(CopyExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr_getType.expected deleted file mode 100644 index bd5fe619f05c..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr_getType.expected +++ /dev/null @@ -1 +0,0 @@ -| move_semantics.swift:4:9:4:14 | CopyExpr | Int | diff --git a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr_getType.ql deleted file mode 100644 index f5d74cb8a087..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/CopyExpr/CopyExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from CopyExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr.expected b/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr.expected index e69de29bb2d1..3f78b481a7a1 100644 --- a/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr.expected @@ -0,0 +1,3 @@ +instances +getType +getArgument diff --git a/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr.ql b/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr.ql index 37eb9989db3d..276fa0a9aef4 100644 --- a/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr.ql @@ -2,13 +2,22 @@ import codeql.swift.elements import TestUtils -from DotSyntaxCallExpr x, string hasType, Expr getFunction, int getNumberOfArguments, Expr getBase -where +query predicate instances( + DotSyntaxCallExpr x, string getFunction__label, Expr getFunction, string getBase__label, + Expr getBase +) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getFunction__label = "getFunction:" and getFunction = x.getFunction() and - getNumberOfArguments = x.getNumberOfArguments() and + getBase__label = "getBase:" and getBase = x.getBase() -select x, "hasType:", hasType, "getFunction:", getFunction, "getNumberOfArguments:", - getNumberOfArguments, "getBase:", getBase +} + +query predicate getType(DotSyntaxCallExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} + +query predicate getArgument(DotSyntaxCallExpr x, int index, Argument getArgument) { + toBeTested(x) and not x.isUnknown() and getArgument = x.getArgument(index) +} diff --git a/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getArgument.expected b/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getArgument.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getArgument.ql b/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getArgument.ql deleted file mode 100644 index 69ca0a32f8ab..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getArgument.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from DotSyntaxCallExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getArgument(index) diff --git a/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getType.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getType.ql deleted file mode 100644 index 985d4935a2ec..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/DotSyntaxCallExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from DotSyntaxCallExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr.expected b/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr.expected index e188be2275fa..2460a1e34fd0 100644 --- a/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr.expected @@ -1,2 +1,9 @@ -| dynamic_lookup.swift:15:1:15:3 | .foo(_:) | DynamicMemberRefExpr | hasType: | yes | getBase: | dynamic_lookup.swift:15:1:15:1 | OpaqueValueExpr | hasMember: | yes | -| dynamic_lookup.swift:16:5:16:9 | subscript ...[...] | DynamicSubscriptExpr | hasType: | yes | getBase: | dynamic_lookup.swift:16:5:16:5 | OpaqueValueExpr | hasMember: | yes | +instances +| dynamic_lookup.swift:15:1:15:3 | .foo(_:) | DynamicMemberRefExpr | getBase: | dynamic_lookup.swift:15:1:15:1 | OpaqueValueExpr | +| dynamic_lookup.swift:16:5:16:9 | subscript ...[...] | DynamicSubscriptExpr | getBase: | dynamic_lookup.swift:16:5:16:5 | OpaqueValueExpr | +getType +| dynamic_lookup.swift:15:1:15:3 | .foo(_:) | ((Int) -> ())? | +| dynamic_lookup.swift:16:5:16:9 | subscript ...[...] | Int? | +getMember +| dynamic_lookup.swift:15:1:15:3 | .foo(_:) | dynamic_lookup.swift:6:9:6:28 | foo(_:) | +| dynamic_lookup.swift:16:5:16:9 | subscript ...[...] | dynamic_lookup.swift:7:9:9:3 | subscript ... | diff --git a/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr.ql b/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr.ql index c32568da04e6..79480f25f1eb 100644 --- a/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr.ql @@ -2,11 +2,20 @@ import codeql.swift.elements import TestUtils -from DynamicLookupExpr x, string hasType, Expr getBase, string hasMember -where +query predicate instances( + DynamicLookupExpr x, string primaryQlClasses, string getBase__label, Expr getBase +) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and - getBase = x.getBase() and - if x.hasMember() then hasMember = "yes" else hasMember = "no" -select x, x.getPrimaryQlClasses(), "hasType:", hasType, "getBase:", getBase, "hasMember:", hasMember + primaryQlClasses = x.getPrimaryQlClasses() and + getBase__label = "getBase:" and + getBase = x.getBase() +} + +query predicate getType(DynamicLookupExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} + +query predicate getMember(DynamicLookupExpr x, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getMember.expected b/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getMember.expected deleted file mode 100644 index 3752eb753d2c..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getMember.expected +++ /dev/null @@ -1,2 +0,0 @@ -| dynamic_lookup.swift:15:1:15:3 | .foo(_:) | dynamic_lookup.swift:6:9:6:28 | foo(_:) | -| dynamic_lookup.swift:16:5:16:9 | subscript ...[...] | dynamic_lookup.swift:7:9:9:3 | subscript ... | diff --git a/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getMember.ql b/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getMember.ql deleted file mode 100644 index aa38b203636c..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from DynamicLookupExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getMember() diff --git a/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getType.expected deleted file mode 100644 index 981d75caf986..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getType.expected +++ /dev/null @@ -1,2 +0,0 @@ -| dynamic_lookup.swift:15:1:15:3 | .foo(_:) | ((Int) -> ())? | -| dynamic_lookup.swift:16:5:16:9 | subscript ...[...] | Int? | diff --git a/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getType.ql deleted file mode 100644 index 18ac781cd1f9..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/DynamicLookupExpr/DynamicLookupExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from DynamicLookupExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr.expected b/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr.expected index b40ec4fe41dd..55e4538dc280 100644 --- a/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr.expected @@ -1,10 +1,22 @@ -| enum_is_case.swift:4:1:4:17 | ... is some | hasType: | yes | getSubExpr: | enum_is_case.swift:4:1:4:17 | OptionalEvaluationExpr | getElement: | file://:0:0:0:0 | some | -| enum_is_case.swift:5:1:5:32 | ... is some | hasType: | yes | getSubExpr: | enum_is_case.swift:5:1:5:32 | OptionalEvaluationExpr | getElement: | file://:0:0:0:0 | some | -| enum_is_case.swift:6:1:6:1 | ... is some | hasType: | yes | getSubExpr: | enum_is_case.swift:6:1:6:1 | 42 | getElement: | file://:0:0:0:0 | some | -| enum_is_case.swift:7:1:7:1 | ... is some | hasType: | yes | getSubExpr: | enum_is_case.swift:7:1:7:1 | 42 | getElement: | file://:0:0:0:0 | some | -| enum_is_case.swift:9:1:9:19 | ... is some | hasType: | yes | getSubExpr: | enum_is_case.swift:9:1:9:19 | [...] | getElement: | file://:0:0:0:0 | some | -| enum_is_case.swift:19:1:19:18 | ... is some | hasType: | yes | getSubExpr: | enum_is_case.swift:19:1:19:18 | OptionalEvaluationExpr | getElement: | file://:0:0:0:0 | some | -| enum_is_case.swift:21:1:21:5 | ... is some | hasType: | yes | getSubExpr: | enum_is_case.swift:21:1:21:5 | [...] | getElement: | file://:0:0:0:0 | some | -| enum_is_case.swift:22:1:22:10 | ... is some | hasType: | yes | getSubExpr: | enum_is_case.swift:22:1:22:10 | [...] | getElement: | file://:0:0:0:0 | some | -| enum_is_case.swift:23:1:23:10 | ... is some | hasType: | yes | getSubExpr: | enum_is_case.swift:23:1:23:10 | [...] | getElement: | file://:0:0:0:0 | some | -| enum_is_case.swift:24:1:24:8 | ... is some | hasType: | yes | getSubExpr: | enum_is_case.swift:24:1:24:8 | call to Set.init() | getElement: | file://:0:0:0:0 | some | +instances +| enum_is_case.swift:4:1:4:17 | ... is some | getSubExpr: | enum_is_case.swift:4:1:4:17 | OptionalEvaluationExpr | getElement: | file://:0:0:0:0 | some | +| enum_is_case.swift:5:1:5:32 | ... is some | getSubExpr: | enum_is_case.swift:5:1:5:32 | OptionalEvaluationExpr | getElement: | file://:0:0:0:0 | some | +| enum_is_case.swift:6:1:6:1 | ... is some | getSubExpr: | enum_is_case.swift:6:1:6:1 | 42 | getElement: | file://:0:0:0:0 | some | +| enum_is_case.swift:7:1:7:1 | ... is some | getSubExpr: | enum_is_case.swift:7:1:7:1 | 42 | getElement: | file://:0:0:0:0 | some | +| enum_is_case.swift:9:1:9:19 | ... is some | getSubExpr: | enum_is_case.swift:9:1:9:19 | [...] | getElement: | file://:0:0:0:0 | some | +| enum_is_case.swift:19:1:19:18 | ... is some | getSubExpr: | enum_is_case.swift:19:1:19:18 | OptionalEvaluationExpr | getElement: | file://:0:0:0:0 | some | +| enum_is_case.swift:21:1:21:5 | ... is some | getSubExpr: | enum_is_case.swift:21:1:21:5 | [...] | getElement: | file://:0:0:0:0 | some | +| enum_is_case.swift:22:1:22:10 | ... is some | getSubExpr: | enum_is_case.swift:22:1:22:10 | [...] | getElement: | file://:0:0:0:0 | some | +| enum_is_case.swift:23:1:23:10 | ... is some | getSubExpr: | enum_is_case.swift:23:1:23:10 | [...] | getElement: | file://:0:0:0:0 | some | +| enum_is_case.swift:24:1:24:8 | ... is some | getSubExpr: | enum_is_case.swift:24:1:24:8 | call to Set.init() | getElement: | file://:0:0:0:0 | some | +getType +| enum_is_case.swift:4:1:4:17 | ... is some | Bool | +| enum_is_case.swift:5:1:5:32 | ... is some | Bool | +| enum_is_case.swift:6:1:6:1 | ... is some | Bool | +| enum_is_case.swift:7:1:7:1 | ... is some | Bool | +| enum_is_case.swift:9:1:9:19 | ... is some | Bool | +| enum_is_case.swift:19:1:19:18 | ... is some | Bool | +| enum_is_case.swift:21:1:21:5 | ... is some | Bool | +| enum_is_case.swift:22:1:22:10 | ... is some | Bool | +| enum_is_case.swift:23:1:23:10 | ... is some | Bool | +| enum_is_case.swift:24:1:24:8 | ... is some | Bool | diff --git a/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr.ql b/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr.ql index 5c232456192a..b60785e57cc6 100644 --- a/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr.ql @@ -2,11 +2,18 @@ import codeql.swift.elements import TestUtils -from EnumIsCaseExpr x, string hasType, Expr getSubExpr, EnumElementDecl getElement -where +query predicate instances( + EnumIsCaseExpr x, string getSubExpr__label, Expr getSubExpr, string getElement__label, + EnumElementDecl getElement +) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getSubExpr__label = "getSubExpr:" and getSubExpr = x.getSubExpr() and + getElement__label = "getElement:" and getElement = x.getElement() -select x, "hasType:", hasType, "getSubExpr:", getSubExpr, "getElement:", getElement +} + +query predicate getType(EnumIsCaseExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr_getType.expected deleted file mode 100644 index f1a8bd34fda7..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr_getType.expected +++ /dev/null @@ -1,10 +0,0 @@ -| enum_is_case.swift:4:1:4:17 | ... is some | Bool | -| enum_is_case.swift:5:1:5:32 | ... is some | Bool | -| enum_is_case.swift:6:1:6:1 | ... is some | Bool | -| enum_is_case.swift:7:1:7:1 | ... is some | Bool | -| enum_is_case.swift:9:1:9:19 | ... is some | Bool | -| enum_is_case.swift:19:1:19:18 | ... is some | Bool | -| enum_is_case.swift:21:1:21:5 | ... is some | Bool | -| enum_is_case.swift:22:1:22:10 | ... is some | Bool | -| enum_is_case.swift:23:1:23:10 | ... is some | Bool | -| enum_is_case.swift:24:1:24:8 | ... is some | Bool | diff --git a/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr_getType.ql deleted file mode 100644 index 33154f7aa0fe..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/EnumIsCaseExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from EnumIsCaseExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.expected b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.expected index aabc59fac994..ebd8475067db 100644 --- a/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.expected @@ -1 +1,4 @@ -| extract_function_isolation.swift:2:21:2:23 | ExtractFunctionIsolationExpr | hasType: | yes | getFunctionExpr: | extract_function_isolation.swift:2:21:2:21 | x | +instances +| extract_function_isolation.swift:2:21:2:23 | ExtractFunctionIsolationExpr | getFunctionExpr: | extract_function_isolation.swift:2:21:2:21 | x | +getType +| extract_function_isolation.swift:2:21:2:23 | ExtractFunctionIsolationExpr | (any Actor)? | diff --git a/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.ql b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.ql index f133b61f9b67..6e434d297c36 100644 --- a/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr.ql @@ -2,10 +2,15 @@ import codeql.swift.elements import TestUtils -from ExtractFunctionIsolationExpr x, string hasType, Expr getFunctionExpr -where +query predicate instances( + ExtractFunctionIsolationExpr x, string getFunctionExpr__label, Expr getFunctionExpr +) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getFunctionExpr__label = "getFunctionExpr:" and getFunctionExpr = x.getFunctionExpr() -select x, "hasType:", hasType, "getFunctionExpr:", getFunctionExpr +} + +query predicate getType(ExtractFunctionIsolationExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.expected deleted file mode 100644 index 2c6a32f914c0..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.expected +++ /dev/null @@ -1 +0,0 @@ -| extract_function_isolation.swift:2:21:2:23 | ExtractFunctionIsolationExpr | (any Actor)? | diff --git a/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.ql deleted file mode 100644 index b7e9c6a7ba0c..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/ExtractFunctionIsolationExpr/ExtractFunctionIsolationExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ExtractFunctionIsolationExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.expected b/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.expected index 9f489226544e..8eb957d6089c 100644 --- a/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.expected @@ -1,9 +1,20 @@ -| identity_expressions.swift:5:9:5:14 | .self | DotSelfExpr | hasType: | yes | getSubExpr: | identity_expressions.swift:5:9:5:9 | self | -| identity_expressions.swift:5:9:5:21 | .self | DotSelfExpr | hasType: | yes | getSubExpr: | identity_expressions.swift:5:9:5:19 | .x | -| identity_expressions.swift:5:28:5:31 | (...) | ParenExpr | hasType: | yes | getSubExpr: | identity_expressions.swift:5:29:5:29 | 42 | -| identity_expressions.swift:9:5:9:9 | (...) | ParenExpr | hasType: | yes | getSubExpr: | identity_expressions.swift:9:6:9:8 | call to A.init() | -| identity_expressions.swift:12:28:12:43 | (...) | ParenExpr | hasType: | yes | getSubExpr: | identity_expressions.swift:12:29:12:42 | await ... | -| identity_expressions.swift:12:29:12:42 | await ... | AwaitExpr | hasType: | yes | getSubExpr: | identity_expressions.swift:12:35:12:42 | call to create() | -| identity_expressions.swift:15:5:15:21 | await ... | AwaitExpr | hasType: | yes | getSubExpr: | identity_expressions.swift:15:11:15:21 | call to process() | -| identity_expressions.swift:15:11:15:19 | (...) | ParenExpr | hasType: | yes | getSubExpr: | identity_expressions.swift:15:12:15:12 | process() | -| identity_expressions.swift:18:9:18:17 | BorrowExpr | BorrowExpr | hasType: | yes | getSubExpr: | identity_expressions.swift:18:17:18:17 | x | +instances +| identity_expressions.swift:5:9:5:14 | .self | DotSelfExpr | getSubExpr: | identity_expressions.swift:5:9:5:9 | self | +| identity_expressions.swift:5:9:5:21 | .self | DotSelfExpr | getSubExpr: | identity_expressions.swift:5:9:5:19 | .x | +| identity_expressions.swift:5:28:5:31 | (...) | ParenExpr | getSubExpr: | identity_expressions.swift:5:29:5:29 | 42 | +| identity_expressions.swift:9:5:9:9 | (...) | ParenExpr | getSubExpr: | identity_expressions.swift:9:6:9:8 | call to A.init() | +| identity_expressions.swift:12:28:12:43 | (...) | ParenExpr | getSubExpr: | identity_expressions.swift:12:29:12:42 | await ... | +| identity_expressions.swift:12:29:12:42 | await ... | AwaitExpr | getSubExpr: | identity_expressions.swift:12:35:12:42 | call to create() | +| identity_expressions.swift:15:5:15:21 | await ... | AwaitExpr | getSubExpr: | identity_expressions.swift:15:11:15:21 | call to process() | +| identity_expressions.swift:15:11:15:19 | (...) | ParenExpr | getSubExpr: | identity_expressions.swift:15:12:15:12 | process() | +| identity_expressions.swift:18:9:18:17 | BorrowExpr | BorrowExpr | getSubExpr: | identity_expressions.swift:18:17:18:17 | x | +getType +| identity_expressions.swift:5:9:5:14 | .self | A | +| identity_expressions.swift:5:9:5:21 | .self | @lvalue Int | +| identity_expressions.swift:5:28:5:31 | (...) | Int | +| identity_expressions.swift:9:5:9:9 | (...) | A | +| identity_expressions.swift:12:28:12:43 | (...) | A | +| identity_expressions.swift:12:29:12:42 | await ... | A | +| identity_expressions.swift:15:5:15:21 | await ... | () | +| identity_expressions.swift:15:11:15:19 | (...) | () async -> () | +| identity_expressions.swift:18:9:18:17 | BorrowExpr | Int | diff --git a/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.ql b/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.ql index c21556e9736c..67a23147b3b4 100644 --- a/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.ql @@ -2,10 +2,16 @@ import codeql.swift.elements import TestUtils -from IdentityExpr x, string hasType, Expr getSubExpr -where +query predicate instances( + IdentityExpr x, string primaryQlClasses, string getSubExpr__label, Expr getSubExpr +) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + primaryQlClasses = x.getPrimaryQlClasses() and + getSubExpr__label = "getSubExpr:" and getSubExpr = x.getSubExpr() -select x, x.getPrimaryQlClasses(), "hasType:", hasType, "getSubExpr:", getSubExpr +} + +query predicate getType(IdentityExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr_getType.expected deleted file mode 100644 index 7922f8fdeedb..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr_getType.expected +++ /dev/null @@ -1,9 +0,0 @@ -| identity_expressions.swift:5:9:5:14 | .self | A | -| identity_expressions.swift:5:9:5:21 | .self | @lvalue Int | -| identity_expressions.swift:5:28:5:31 | (...) | Int | -| identity_expressions.swift:9:5:9:9 | (...) | A | -| identity_expressions.swift:12:28:12:43 | (...) | A | -| identity_expressions.swift:12:29:12:42 | await ... | A | -| identity_expressions.swift:15:5:15:21 | await ... | () | -| identity_expressions.swift:15:11:15:19 | (...) | () async -> () | -| identity_expressions.swift:18:9:18:17 | BorrowExpr | Int | diff --git a/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr_getType.ql deleted file mode 100644 index d682c3be3d0f..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from IdentityExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.expected b/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.expected index ac122e39f9f7..23713cba5cd3 100644 --- a/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.expected @@ -1,7 +1,16 @@ -| implicit_conversions.swift:2:3:2:3 | (UnsafePointer) ... | StringToPointerExpr | hasType: | yes | getSubExpr: | implicit_conversions.swift:2:3:2:3 | Hello | -| implicit_conversions.swift:4:16:4:16 | (Int?) ... | InjectIntoOptionalExpr | hasType: | yes | getSubExpr: | implicit_conversions.swift:4:16:4:16 | 42 | -| implicit_conversions.swift:5:25:5:25 | (any Equatable) ... | ErasureExpr | hasType: | yes | getSubExpr: | implicit_conversions.swift:5:25:5:25 | 42 | -| implicit_conversions.swift:12:3:12:5 | (@lvalue (() -> Void)?) ... | AbiSafeConversionExpr | hasType: | yes | getSubExpr: | implicit_conversions.swift:12:3:12:5 | .b | -| implicit_conversions.swift:12:9:12:10 | ((() -> Void)?) ... | InjectIntoOptionalExpr | hasType: | yes | getSubExpr: | implicit_conversions.swift:12:9:12:10 | { ... } | -| implicit_conversions.swift:24:3:24:5 | (Array) ... | UnsafeCastExpr | hasType: | yes | getSubExpr: | implicit_conversions.swift:24:3:24:5 | ([any Sendable]) ... | -| implicit_conversions.swift:24:3:24:5 | ([any Sendable]) ... | LoadExpr | hasType: | yes | getSubExpr: | implicit_conversions.swift:24:3:24:5 | .a | +instances +| implicit_conversions.swift:2:3:2:3 | (UnsafePointer) ... | StringToPointerExpr | getSubExpr: | implicit_conversions.swift:2:3:2:3 | Hello | +| implicit_conversions.swift:4:16:4:16 | (Int?) ... | InjectIntoOptionalExpr | getSubExpr: | implicit_conversions.swift:4:16:4:16 | 42 | +| implicit_conversions.swift:5:25:5:25 | (any Equatable) ... | ErasureExpr | getSubExpr: | implicit_conversions.swift:5:25:5:25 | 42 | +| implicit_conversions.swift:12:3:12:5 | (@lvalue (() -> Void)?) ... | AbiSafeConversionExpr | getSubExpr: | implicit_conversions.swift:12:3:12:5 | .b | +| implicit_conversions.swift:12:9:12:10 | ((() -> Void)?) ... | InjectIntoOptionalExpr | getSubExpr: | implicit_conversions.swift:12:9:12:10 | { ... } | +| implicit_conversions.swift:24:3:24:5 | (Array) ... | UnsafeCastExpr | getSubExpr: | implicit_conversions.swift:24:3:24:5 | ([any Sendable]) ... | +| implicit_conversions.swift:24:3:24:5 | ([any Sendable]) ... | LoadExpr | getSubExpr: | implicit_conversions.swift:24:3:24:5 | .a | +getType +| implicit_conversions.swift:2:3:2:3 | (UnsafePointer) ... | UnsafePointer | +| implicit_conversions.swift:4:16:4:16 | (Int?) ... | Int? | +| implicit_conversions.swift:5:25:5:25 | (any Equatable) ... | any Equatable | +| implicit_conversions.swift:12:3:12:5 | (@lvalue (() -> Void)?) ... | @lvalue (() -> Void)? | +| implicit_conversions.swift:12:9:12:10 | ((() -> Void)?) ... | (() -> Void)? | +| implicit_conversions.swift:24:3:24:5 | (Array) ... | Array | +| implicit_conversions.swift:24:3:24:5 | ([any Sendable]) ... | [any Sendable] | diff --git a/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.ql b/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.ql index 3e197676bb8e..5861080be05d 100644 --- a/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.ql @@ -2,10 +2,16 @@ import codeql.swift.elements import TestUtils -from ImplicitConversionExpr x, string hasType, Expr getSubExpr -where +query predicate instances( + ImplicitConversionExpr x, string primaryQlClasses, string getSubExpr__label, Expr getSubExpr +) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + primaryQlClasses = x.getPrimaryQlClasses() and + getSubExpr__label = "getSubExpr:" and getSubExpr = x.getSubExpr() -select x, x.getPrimaryQlClasses(), "hasType:", hasType, "getSubExpr:", getSubExpr +} + +query predicate getType(ImplicitConversionExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr_getType.expected deleted file mode 100644 index 8254ef3cc8a7..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr_getType.expected +++ /dev/null @@ -1,7 +0,0 @@ -| implicit_conversions.swift:2:3:2:3 | (UnsafePointer) ... | UnsafePointer | -| implicit_conversions.swift:4:16:4:16 | (Int?) ... | Int? | -| implicit_conversions.swift:5:25:5:25 | (any Equatable) ... | any Equatable | -| implicit_conversions.swift:12:3:12:5 | (@lvalue (() -> Void)?) ... | @lvalue (() -> Void)? | -| implicit_conversions.swift:12:9:12:10 | ((() -> Void)?) ... | (() -> Void)? | -| implicit_conversions.swift:24:3:24:5 | (Array) ... | Array | -| implicit_conversions.swift:24:3:24:5 | ([any Sendable]) ... | [any Sendable] | diff --git a/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr_getType.ql deleted file mode 100644 index 6e9053dca6aa..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ImplicitConversionExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr.expected b/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr.expected index e69de29bb2d1..3f78b481a7a1 100644 --- a/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr.expected @@ -0,0 +1,3 @@ +instances +getType +getArgument diff --git a/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr.ql b/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr.ql index 117eb37809b6..190b919a498c 100644 --- a/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr.ql @@ -2,14 +2,22 @@ import codeql.swift.elements import TestUtils -from - InitializerRefCallExpr x, string hasType, Expr getFunction, int getNumberOfArguments, Expr getBase -where +query predicate instances( + InitializerRefCallExpr x, string getFunction__label, Expr getFunction, string getBase__label, + Expr getBase +) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getFunction__label = "getFunction:" and getFunction = x.getFunction() and - getNumberOfArguments = x.getNumberOfArguments() and + getBase__label = "getBase:" and getBase = x.getBase() -select x, "hasType:", hasType, "getFunction:", getFunction, "getNumberOfArguments:", - getNumberOfArguments, "getBase:", getBase +} + +query predicate getType(InitializerRefCallExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} + +query predicate getArgument(InitializerRefCallExpr x, int index, Argument getArgument) { + toBeTested(x) and not x.isUnknown() and getArgument = x.getArgument(index) +} diff --git a/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getArgument.expected b/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getArgument.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getArgument.ql b/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getArgument.ql deleted file mode 100644 index 91382b53caeb..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getArgument.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from InitializerRefCallExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getArgument(index) diff --git a/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getType.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getType.ql deleted file mode 100644 index 70db9dde340f..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/InitializerRefCallExpr/InitializerRefCallExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from InitializerRefCallExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr.expected b/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr.expected index 68e4a6ed34dd..69318676c730 100644 --- a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr.expected @@ -1,8 +1,42 @@ -| key_path_expr.swift:11:12:11:17 | #keyPath(...) | hasType: | yes | hasRoot: | yes | getNumberOfComponents: | 1 | -| key_path_expr.swift:12:18:12:26 | #keyPath(...) | hasType: | yes | hasRoot: | yes | getNumberOfComponents: | 1 | -| key_path_expr.swift:13:19:13:38 | #keyPath(...) | hasType: | yes | hasRoot: | yes | getNumberOfComponents: | 1 | -| key_path_expr.swift:14:16:14:35 | #keyPath(...) | hasType: | yes | hasRoot: | yes | getNumberOfComponents: | 2 | -| key_path_expr.swift:15:16:15:26 | #keyPath(...) | hasType: | yes | hasRoot: | yes | getNumberOfComponents: | 3 | -| key_path_expr.swift:16:20:16:30 | #keyPath(...) | hasType: | yes | hasRoot: | yes | getNumberOfComponents: | 4 | -| key_path_expr.swift:17:11:17:16 | #keyPath(...) | hasType: | yes | hasRoot: | yes | getNumberOfComponents: | 1 | -| key_path_expr.swift:18:20:18:32 | #keyPath(...) | hasType: | yes | hasRoot: | yes | getNumberOfComponents: | 1 | +instances +| key_path_expr.swift:11:12:11:17 | #keyPath(...) | +| key_path_expr.swift:12:18:12:26 | #keyPath(...) | +| key_path_expr.swift:13:19:13:38 | #keyPath(...) | +| key_path_expr.swift:14:16:14:35 | #keyPath(...) | +| key_path_expr.swift:15:16:15:26 | #keyPath(...) | +| key_path_expr.swift:16:20:16:30 | #keyPath(...) | +| key_path_expr.swift:17:11:17:16 | #keyPath(...) | +| key_path_expr.swift:18:20:18:32 | #keyPath(...) | +getType +| key_path_expr.swift:11:12:11:17 | #keyPath(...) | WritableKeyPath | +| key_path_expr.swift:12:18:12:26 | #keyPath(...) | WritableKeyPath<[Int], Int> | +| key_path_expr.swift:13:19:13:38 | #keyPath(...) | WritableKeyPath<[String : Int], Int?> | +| key_path_expr.swift:14:16:14:35 | #keyPath(...) | WritableKeyPath, Int> | +| key_path_expr.swift:15:16:15:26 | #keyPath(...) | KeyPath | +| key_path_expr.swift:16:20:16:30 | #keyPath(...) | KeyPath | +| key_path_expr.swift:17:11:17:16 | #keyPath(...) | WritableKeyPath | +| key_path_expr.swift:18:20:18:32 | #keyPath(...) | WritableKeyPath<(Int, Int), Int> | +getRoot +| key_path_expr.swift:11:12:11:17 | #keyPath(...) | key_path_expr.swift:11:13:11:13 | Foo | +| key_path_expr.swift:12:18:12:26 | #keyPath(...) | key_path_expr.swift:12:19:12:23 | [Int] | +| key_path_expr.swift:13:19:13:38 | #keyPath(...) | key_path_expr.swift:13:20:13:33 | [String : Int] | +| key_path_expr.swift:14:16:14:35 | #keyPath(...) | key_path_expr.swift:14:17:14:29 | Optional | +| key_path_expr.swift:15:16:15:26 | #keyPath(...) | key_path_expr.swift:15:17:15:17 | Foo | +| key_path_expr.swift:16:20:16:30 | #keyPath(...) | key_path_expr.swift:16:21:16:21 | Foo | +| key_path_expr.swift:17:11:17:16 | #keyPath(...) | key_path_expr.swift:17:12:17:12 | Int | +| key_path_expr.swift:18:20:18:32 | #keyPath(...) | key_path_expr.swift:18:21:18:30 | (Int, Int) | +getComponent +| key_path_expr.swift:11:12:11:17 | #keyPath(...) | 0 | key_path_expr.swift:11:17:11:17 | KeyPathComponent | +| key_path_expr.swift:12:18:12:26 | #keyPath(...) | 0 | key_path_expr.swift:12:24:12:26 | KeyPathComponent | +| key_path_expr.swift:13:19:13:38 | #keyPath(...) | 0 | key_path_expr.swift:13:34:13:38 | KeyPathComponent | +| key_path_expr.swift:14:16:14:35 | #keyPath(...) | 0 | key_path_expr.swift:14:31:14:31 | KeyPathComponent | +| key_path_expr.swift:14:16:14:35 | #keyPath(...) | 1 | key_path_expr.swift:14:31:14:31 | KeyPathComponent | +| key_path_expr.swift:15:16:15:26 | #keyPath(...) | 0 | key_path_expr.swift:15:21:15:21 | KeyPathComponent | +| key_path_expr.swift:15:16:15:26 | #keyPath(...) | 1 | key_path_expr.swift:15:24:15:24 | KeyPathComponent | +| key_path_expr.swift:15:16:15:26 | #keyPath(...) | 2 | key_path_expr.swift:15:26:15:26 | KeyPathComponent | +| key_path_expr.swift:16:20:16:30 | #keyPath(...) | 0 | key_path_expr.swift:16:25:16:25 | KeyPathComponent | +| key_path_expr.swift:16:20:16:30 | #keyPath(...) | 1 | key_path_expr.swift:16:28:16:28 | KeyPathComponent | +| key_path_expr.swift:16:20:16:30 | #keyPath(...) | 2 | key_path_expr.swift:16:30:16:30 | KeyPathComponent | +| key_path_expr.swift:16:20:16:30 | #keyPath(...) | 3 | file://:0:0:0:0 | KeyPathComponent | +| key_path_expr.swift:17:11:17:16 | #keyPath(...) | 0 | key_path_expr.swift:17:16:17:16 | KeyPathComponent | +| key_path_expr.swift:18:20:18:32 | #keyPath(...) | 0 | key_path_expr.swift:18:32:18:32 | KeyPathComponent | diff --git a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr.ql b/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr.ql index 627e5b130db4..67ca30250cf4 100644 --- a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr.ql @@ -2,11 +2,16 @@ import codeql.swift.elements import TestUtils -from KeyPathExpr x, string hasType, string hasRoot, int getNumberOfComponents -where - toBeTested(x) and - not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and - (if x.hasRoot() then hasRoot = "yes" else hasRoot = "no") and - getNumberOfComponents = x.getNumberOfComponents() -select x, "hasType:", hasType, "hasRoot:", hasRoot, "getNumberOfComponents:", getNumberOfComponents +query predicate instances(KeyPathExpr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getType(KeyPathExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} + +query predicate getRoot(KeyPathExpr x, TypeRepr getRoot) { + toBeTested(x) and not x.isUnknown() and getRoot = x.getRoot() +} + +query predicate getComponent(KeyPathExpr x, int index, KeyPathComponent getComponent) { + toBeTested(x) and not x.isUnknown() and getComponent = x.getComponent(index) +} diff --git a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getComponent.expected b/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getComponent.expected deleted file mode 100644 index 673c01e775f1..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getComponent.expected +++ /dev/null @@ -1,14 +0,0 @@ -| key_path_expr.swift:11:12:11:17 | #keyPath(...) | 0 | key_path_expr.swift:11:17:11:17 | KeyPathComponent | -| key_path_expr.swift:12:18:12:26 | #keyPath(...) | 0 | key_path_expr.swift:12:24:12:26 | KeyPathComponent | -| key_path_expr.swift:13:19:13:38 | #keyPath(...) | 0 | key_path_expr.swift:13:34:13:38 | KeyPathComponent | -| key_path_expr.swift:14:16:14:35 | #keyPath(...) | 0 | key_path_expr.swift:14:31:14:31 | KeyPathComponent | -| key_path_expr.swift:14:16:14:35 | #keyPath(...) | 1 | key_path_expr.swift:14:31:14:31 | KeyPathComponent | -| key_path_expr.swift:15:16:15:26 | #keyPath(...) | 0 | key_path_expr.swift:15:21:15:21 | KeyPathComponent | -| key_path_expr.swift:15:16:15:26 | #keyPath(...) | 1 | key_path_expr.swift:15:24:15:24 | KeyPathComponent | -| key_path_expr.swift:15:16:15:26 | #keyPath(...) | 2 | key_path_expr.swift:15:26:15:26 | KeyPathComponent | -| key_path_expr.swift:16:20:16:30 | #keyPath(...) | 0 | key_path_expr.swift:16:25:16:25 | KeyPathComponent | -| key_path_expr.swift:16:20:16:30 | #keyPath(...) | 1 | key_path_expr.swift:16:28:16:28 | KeyPathComponent | -| key_path_expr.swift:16:20:16:30 | #keyPath(...) | 2 | key_path_expr.swift:16:30:16:30 | KeyPathComponent | -| key_path_expr.swift:16:20:16:30 | #keyPath(...) | 3 | file://:0:0:0:0 | KeyPathComponent | -| key_path_expr.swift:17:11:17:16 | #keyPath(...) | 0 | key_path_expr.swift:17:16:17:16 | KeyPathComponent | -| key_path_expr.swift:18:20:18:32 | #keyPath(...) | 0 | key_path_expr.swift:18:32:18:32 | KeyPathComponent | diff --git a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getComponent.ql b/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getComponent.ql deleted file mode 100644 index dc7eda149488..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getComponent.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from KeyPathExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getComponent(index) diff --git a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getRoot.expected b/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getRoot.expected deleted file mode 100644 index 4106b8b42fad..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getRoot.expected +++ /dev/null @@ -1,8 +0,0 @@ -| key_path_expr.swift:11:12:11:17 | #keyPath(...) | key_path_expr.swift:11:13:11:13 | Foo | -| key_path_expr.swift:12:18:12:26 | #keyPath(...) | key_path_expr.swift:12:19:12:23 | [Int] | -| key_path_expr.swift:13:19:13:38 | #keyPath(...) | key_path_expr.swift:13:20:13:33 | [String : Int] | -| key_path_expr.swift:14:16:14:35 | #keyPath(...) | key_path_expr.swift:14:17:14:29 | Optional | -| key_path_expr.swift:15:16:15:26 | #keyPath(...) | key_path_expr.swift:15:17:15:17 | Foo | -| key_path_expr.swift:16:20:16:30 | #keyPath(...) | key_path_expr.swift:16:21:16:21 | Foo | -| key_path_expr.swift:17:11:17:16 | #keyPath(...) | key_path_expr.swift:17:12:17:12 | Int | -| key_path_expr.swift:18:20:18:32 | #keyPath(...) | key_path_expr.swift:18:21:18:30 | (Int, Int) | diff --git a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getRoot.ql b/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getRoot.ql deleted file mode 100644 index 10d5ee29d43b..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getRoot.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from KeyPathExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getRoot() diff --git a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getType.expected deleted file mode 100644 index de0945572cf2..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getType.expected +++ /dev/null @@ -1,8 +0,0 @@ -| key_path_expr.swift:11:12:11:17 | #keyPath(...) | WritableKeyPath | -| key_path_expr.swift:12:18:12:26 | #keyPath(...) | WritableKeyPath<[Int], Int> | -| key_path_expr.swift:13:19:13:38 | #keyPath(...) | WritableKeyPath<[String : Int], Int?> | -| key_path_expr.swift:14:16:14:35 | #keyPath(...) | WritableKeyPath, Int> | -| key_path_expr.swift:15:16:15:26 | #keyPath(...) | KeyPath | -| key_path_expr.swift:16:20:16:30 | #keyPath(...) | KeyPath | -| key_path_expr.swift:17:11:17:16 | #keyPath(...) | WritableKeyPath | -| key_path_expr.swift:18:20:18:32 | #keyPath(...) | WritableKeyPath<(Int, Int), Int> | diff --git a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getType.ql deleted file mode 100644 index 84c2a6c37d87..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/KeyPathExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from KeyPathExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.expected b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.expected index 8e528ff32a24..66837f972f29 100644 --- a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.expected @@ -1,29 +1,85 @@ -| file://:0:0:0:0 | UnownedSerialExecutor.init(_:) | hasType: | yes | getBase: | file://:0:0:0:0 | UnownedSerialExecutor.Type | hasMember: | yes | getMethodRef: | file://:0:0:0:0 | UnownedSerialExecutor.init(_:) | -| method_lookups.swift:7:13:7:13 | (no string representation) | hasType: | yes | getBase: | method_lookups.swift:7:13:7:13 | self | hasMember: | no | getMethodRef: | method_lookups.swift:7:13:7:13 | { ... } | -| method_lookups.swift:7:13:7:13 | .baz(_:) | hasType: | yes | getBase: | file://:0:0:0:0 | self | hasMember: | yes | getMethodRef: | method_lookups.swift:7:13:7:13 | baz(_:) | -| method_lookups.swift:16:13:16:13 | (no string representation) | hasType: | yes | getBase: | method_lookups.swift:16:13:16:13 | self | hasMember: | no | getMethodRef: | method_lookups.swift:16:13:16:13 | { ... } | -| method_lookups.swift:16:13:16:13 | .baz(_:) | hasType: | yes | getBase: | file://:0:0:0:0 | self | hasMember: | yes | getMethodRef: | method_lookups.swift:16:13:16:13 | baz(_:) | -| method_lookups.swift:27:13:27:13 | (no string representation) | hasType: | yes | getBase: | method_lookups.swift:27:13:27:13 | self | hasMember: | no | getMethodRef: | method_lookups.swift:27:13:27:13 | { ... } | -| method_lookups.swift:27:13:27:13 | .baz(_:) | hasType: | yes | getBase: | file://:0:0:0:0 | self | hasMember: | yes | getMethodRef: | method_lookups.swift:27:13:27:13 | baz(_:) | -| method_lookups.swift:32:3:32:5 | .foo(_:_:) | hasType: | yes | getBase: | method_lookups.swift:32:3:32:3 | X.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:32:5:32:5 | foo(_:_:) | -| method_lookups.swift:33:3:33:5 | .bar() | hasType: | yes | getBase: | method_lookups.swift:33:3:33:3 | X.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:33:5:33:5 | bar() | -| method_lookups.swift:34:3:34:3 | X.init() | hasType: | yes | getBase: | method_lookups.swift:34:3:34:3 | X.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:34:3:34:3 | X.init() | -| method_lookups.swift:34:3:34:7 | .baz(_:) | hasType: | yes | getBase: | method_lookups.swift:34:3:34:5 | call to X.init() | hasMember: | yes | getMethodRef: | method_lookups.swift:34:7:34:7 | baz(_:) | -| method_lookups.swift:36:11:36:13 | .bar() | hasType: | yes | getBase: | method_lookups.swift:36:11:36:11 | X.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:36:13:36:13 | bar() | -| method_lookups.swift:37:11:37:11 | X.init() | hasType: | yes | getBase: | method_lookups.swift:37:11:37:11 | X.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:37:11:37:11 | X.init() | -| method_lookups.swift:37:11:37:15 | (no string representation) | hasType: | yes | getBase: | method_lookups.swift:37:11:37:13 | call to X.init() | hasMember: | no | getMethodRef: | method_lookups.swift:37:15:37:15 | { ... } | -| method_lookups.swift:37:15:37:15 | .baz(_:) | hasType: | yes | getBase: | file://:0:0:0:0 | self | hasMember: | yes | getMethodRef: | method_lookups.swift:37:15:37:15 | baz(_:) | -| method_lookups.swift:40:1:40:1 | Task.init(priority:operation:) | hasType: | yes | getBase: | method_lookups.swift:40:1:40:1 | Task<(), Never>.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:40:1:40:1 | Task.init(priority:operation:) | -| method_lookups.swift:41:3:41:5 | .foo(_:_:) | hasType: | yes | getBase: | method_lookups.swift:41:3:41:3 | Y.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:41:5:41:5 | foo(_:_:) | -| method_lookups.swift:42:9:42:9 | Y.init() | hasType: | yes | getBase: | method_lookups.swift:42:9:42:9 | Y.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:42:9:42:9 | Y.init() | -| method_lookups.swift:42:9:42:13 | .baz(_:) | hasType: | yes | getBase: | method_lookups.swift:42:9:42:11 | call to Y.init() | hasMember: | yes | getMethodRef: | method_lookups.swift:42:13:42:13 | baz(_:) | -| method_lookups.swift:44:11:44:13 | .foo(_:_:) | hasType: | yes | getBase: | method_lookups.swift:44:11:44:11 | Y.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:44:13:44:13 | foo(_:_:) | -| method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | hasType: | yes | getBase: | method_lookups.swift:47:1:47:1 | Task<(), Never>.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | -| method_lookups.swift:48:9:48:11 | .foo(_:_:) | hasType: | yes | getBase: | method_lookups.swift:48:9:48:9 | Z.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:48:11:48:11 | foo(_:_:) | -| method_lookups.swift:49:9:49:11 | .bar() | hasType: | yes | getBase: | method_lookups.swift:49:9:49:9 | Z.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:49:11:49:11 | bar() | -| method_lookups.swift:50:9:50:9 | Z.init() | hasType: | yes | getBase: | method_lookups.swift:50:9:50:9 | Z.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:50:9:50:9 | Z.init() | -| method_lookups.swift:50:9:50:13 | .baz(_:) | hasType: | yes | getBase: | method_lookups.swift:50:9:50:11 | call to Z.init() | hasMember: | yes | getMethodRef: | method_lookups.swift:50:13:50:13 | baz(_:) | -| method_lookups.swift:52:11:52:13 | .bar() | hasType: | yes | getBase: | method_lookups.swift:52:11:52:11 | Z.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:52:13:52:13 | bar() | -| method_lookups.swift:53:11:53:23 | (no string representation) | hasType: | yes | getBase: | method_lookups.swift:53:18:53:20 | call to Z.init() | hasMember: | no | getMethodRef: | method_lookups.swift:53:23:53:23 | { ... } | -| method_lookups.swift:53:18:53:18 | Z.init() | hasType: | yes | getBase: | method_lookups.swift:53:18:53:18 | Z.Type | hasMember: | yes | getMethodRef: | method_lookups.swift:53:18:53:18 | Z.init() | -| method_lookups.swift:53:23:53:23 | .baz(_:) | hasType: | yes | getBase: | file://:0:0:0:0 | self | hasMember: | yes | getMethodRef: | method_lookups.swift:53:23:53:23 | baz(_:) | +instances +| file://:0:0:0:0 | UnownedSerialExecutor.init(_:) | getBase: | file://:0:0:0:0 | UnownedSerialExecutor.Type | getMethodRef: | file://:0:0:0:0 | UnownedSerialExecutor.init(_:) | +| method_lookups.swift:7:13:7:13 | (no string representation) | getBase: | method_lookups.swift:7:13:7:13 | self | getMethodRef: | method_lookups.swift:7:13:7:13 | { ... } | +| method_lookups.swift:7:13:7:13 | .baz(_:) | getBase: | file://:0:0:0:0 | self | getMethodRef: | method_lookups.swift:7:13:7:13 | baz(_:) | +| method_lookups.swift:16:13:16:13 | (no string representation) | getBase: | method_lookups.swift:16:13:16:13 | self | getMethodRef: | method_lookups.swift:16:13:16:13 | { ... } | +| method_lookups.swift:16:13:16:13 | .baz(_:) | getBase: | file://:0:0:0:0 | self | getMethodRef: | method_lookups.swift:16:13:16:13 | baz(_:) | +| method_lookups.swift:27:13:27:13 | (no string representation) | getBase: | method_lookups.swift:27:13:27:13 | self | getMethodRef: | method_lookups.swift:27:13:27:13 | { ... } | +| method_lookups.swift:27:13:27:13 | .baz(_:) | getBase: | file://:0:0:0:0 | self | getMethodRef: | method_lookups.swift:27:13:27:13 | baz(_:) | +| method_lookups.swift:32:3:32:5 | .foo(_:_:) | getBase: | method_lookups.swift:32:3:32:3 | X.Type | getMethodRef: | method_lookups.swift:32:5:32:5 | foo(_:_:) | +| method_lookups.swift:33:3:33:5 | .bar() | getBase: | method_lookups.swift:33:3:33:3 | X.Type | getMethodRef: | method_lookups.swift:33:5:33:5 | bar() | +| method_lookups.swift:34:3:34:3 | X.init() | getBase: | method_lookups.swift:34:3:34:3 | X.Type | getMethodRef: | method_lookups.swift:34:3:34:3 | X.init() | +| method_lookups.swift:34:3:34:7 | .baz(_:) | getBase: | method_lookups.swift:34:3:34:5 | call to X.init() | getMethodRef: | method_lookups.swift:34:7:34:7 | baz(_:) | +| method_lookups.swift:36:11:36:13 | .bar() | getBase: | method_lookups.swift:36:11:36:11 | X.Type | getMethodRef: | method_lookups.swift:36:13:36:13 | bar() | +| method_lookups.swift:37:11:37:11 | X.init() | getBase: | method_lookups.swift:37:11:37:11 | X.Type | getMethodRef: | method_lookups.swift:37:11:37:11 | X.init() | +| method_lookups.swift:37:11:37:15 | (no string representation) | getBase: | method_lookups.swift:37:11:37:13 | call to X.init() | getMethodRef: | method_lookups.swift:37:15:37:15 | { ... } | +| method_lookups.swift:37:15:37:15 | .baz(_:) | getBase: | file://:0:0:0:0 | self | getMethodRef: | method_lookups.swift:37:15:37:15 | baz(_:) | +| method_lookups.swift:40:1:40:1 | Task.init(priority:operation:) | getBase: | method_lookups.swift:40:1:40:1 | Task<(), Never>.Type | getMethodRef: | method_lookups.swift:40:1:40:1 | Task.init(priority:operation:) | +| method_lookups.swift:41:3:41:5 | .foo(_:_:) | getBase: | method_lookups.swift:41:3:41:3 | Y.Type | getMethodRef: | method_lookups.swift:41:5:41:5 | foo(_:_:) | +| method_lookups.swift:42:9:42:9 | Y.init() | getBase: | method_lookups.swift:42:9:42:9 | Y.Type | getMethodRef: | method_lookups.swift:42:9:42:9 | Y.init() | +| method_lookups.swift:42:9:42:13 | .baz(_:) | getBase: | method_lookups.swift:42:9:42:11 | call to Y.init() | getMethodRef: | method_lookups.swift:42:13:42:13 | baz(_:) | +| method_lookups.swift:44:11:44:13 | .foo(_:_:) | getBase: | method_lookups.swift:44:11:44:11 | Y.Type | getMethodRef: | method_lookups.swift:44:13:44:13 | foo(_:_:) | +| method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | getBase: | method_lookups.swift:47:1:47:1 | Task<(), Never>.Type | getMethodRef: | method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | +| method_lookups.swift:48:9:48:11 | .foo(_:_:) | getBase: | method_lookups.swift:48:9:48:9 | Z.Type | getMethodRef: | method_lookups.swift:48:11:48:11 | foo(_:_:) | +| method_lookups.swift:49:9:49:11 | .bar() | getBase: | method_lookups.swift:49:9:49:9 | Z.Type | getMethodRef: | method_lookups.swift:49:11:49:11 | bar() | +| method_lookups.swift:50:9:50:9 | Z.init() | getBase: | method_lookups.swift:50:9:50:9 | Z.Type | getMethodRef: | method_lookups.swift:50:9:50:9 | Z.init() | +| method_lookups.swift:50:9:50:13 | .baz(_:) | getBase: | method_lookups.swift:50:9:50:11 | call to Z.init() | getMethodRef: | method_lookups.swift:50:13:50:13 | baz(_:) | +| method_lookups.swift:52:11:52:13 | .bar() | getBase: | method_lookups.swift:52:11:52:11 | Z.Type | getMethodRef: | method_lookups.swift:52:13:52:13 | bar() | +| method_lookups.swift:53:11:53:23 | (no string representation) | getBase: | method_lookups.swift:53:18:53:20 | call to Z.init() | getMethodRef: | method_lookups.swift:53:23:53:23 | { ... } | +| method_lookups.swift:53:18:53:18 | Z.init() | getBase: | method_lookups.swift:53:18:53:18 | Z.Type | getMethodRef: | method_lookups.swift:53:18:53:18 | Z.init() | +| method_lookups.swift:53:23:53:23 | .baz(_:) | getBase: | file://:0:0:0:0 | self | getMethodRef: | method_lookups.swift:53:23:53:23 | baz(_:) | +getType +| file://:0:0:0:0 | UnownedSerialExecutor.init(_:) | (Builtin.Executor) -> UnownedSerialExecutor | +| method_lookups.swift:7:13:7:13 | (no string representation) | (Int) -> () | +| method_lookups.swift:7:13:7:13 | .baz(_:) | (Int) -> () | +| method_lookups.swift:16:13:16:13 | (no string representation) | (Int) -> () | +| method_lookups.swift:16:13:16:13 | .baz(_:) | (Int) -> () | +| method_lookups.swift:27:13:27:13 | (no string representation) | @MainActor (Int) -> () | +| method_lookups.swift:27:13:27:13 | .baz(_:) | (Int) -> () | +| method_lookups.swift:32:3:32:5 | .foo(_:_:) | (Int, Int) -> () | +| method_lookups.swift:33:3:33:5 | .bar() | () -> () | +| method_lookups.swift:34:3:34:3 | X.init() | () -> X | +| method_lookups.swift:34:3:34:7 | .baz(_:) | (Int) -> () | +| method_lookups.swift:36:11:36:13 | .bar() | () -> () | +| method_lookups.swift:37:11:37:11 | X.init() | () -> X | +| method_lookups.swift:37:11:37:15 | (no string representation) | (Int) -> () | +| method_lookups.swift:37:15:37:15 | .baz(_:) | (Int) -> () | +| method_lookups.swift:40:1:40:1 | Task.init(priority:operation:) | (TaskPriority?, sending @escaping @isolated(any) () async -> ()) -> Task<(), Never> | +| method_lookups.swift:41:3:41:5 | .foo(_:_:) | (Int, Int) -> () | +| method_lookups.swift:42:9:42:9 | Y.init() | () -> Y | +| method_lookups.swift:42:9:42:13 | .baz(_:) | (Int) -> () | +| method_lookups.swift:44:11:44:13 | .foo(_:_:) | (Int, Int) -> () | +| method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | (TaskPriority?, sending @escaping @isolated(any) () async -> ()) -> Task<(), Never> | +| method_lookups.swift:48:9:48:11 | .foo(_:_:) | @MainActor (Int, Int) -> () | +| method_lookups.swift:49:9:49:11 | .bar() | () -> () | +| method_lookups.swift:50:9:50:9 | Z.init() | @MainActor () -> Z | +| method_lookups.swift:50:9:50:13 | .baz(_:) | @MainActor (Int) -> () | +| method_lookups.swift:52:11:52:13 | .bar() | () -> () | +| method_lookups.swift:53:11:53:23 | (no string representation) | @MainActor (Int) -> () | +| method_lookups.swift:53:18:53:18 | Z.init() | @MainActor () -> Z | +| method_lookups.swift:53:23:53:23 | .baz(_:) | (Int) -> () | +getMember +| file://:0:0:0:0 | UnownedSerialExecutor.init(_:) | file://:0:0:0:0 | UnownedSerialExecutor.init(_:) | +| method_lookups.swift:7:13:7:13 | .baz(_:) | method_lookups.swift:4:3:4:21 | baz(_:) | +| method_lookups.swift:16:13:16:13 | .baz(_:) | method_lookups.swift:13:3:13:21 | baz(_:) | +| method_lookups.swift:27:13:27:13 | .baz(_:) | method_lookups.swift:24:3:24:21 | baz(_:) | +| method_lookups.swift:32:3:32:5 | .foo(_:_:) | method_lookups.swift:2:3:2:35 | foo(_:_:) | +| method_lookups.swift:33:3:33:5 | .bar() | method_lookups.swift:3:3:3:21 | bar() | +| method_lookups.swift:34:3:34:3 | X.init() | method_lookups.swift:6:3:8:3 | X.init() | +| method_lookups.swift:34:3:34:7 | .baz(_:) | method_lookups.swift:4:3:4:21 | baz(_:) | +| method_lookups.swift:36:11:36:13 | .bar() | method_lookups.swift:3:3:3:21 | bar() | +| method_lookups.swift:37:11:37:11 | X.init() | method_lookups.swift:6:3:8:3 | X.init() | +| method_lookups.swift:37:15:37:15 | .baz(_:) | method_lookups.swift:4:3:4:21 | baz(_:) | +| method_lookups.swift:40:1:40:1 | Task.init(priority:operation:) | file://:0:0:0:0 | Task.init(priority:operation:) | +| method_lookups.swift:41:3:41:5 | .foo(_:_:) | method_lookups.swift:12:3:12:35 | foo(_:_:) | +| method_lookups.swift:42:9:42:9 | Y.init() | method_lookups.swift:15:3:17:3 | Y.init() | +| method_lookups.swift:42:9:42:13 | .baz(_:) | method_lookups.swift:13:3:13:21 | baz(_:) | +| method_lookups.swift:44:11:44:13 | .foo(_:_:) | method_lookups.swift:12:3:12:35 | foo(_:_:) | +| method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | file://:0:0:0:0 | Task.init(priority:operation:) | +| method_lookups.swift:48:9:48:11 | .foo(_:_:) | method_lookups.swift:22:3:22:35 | foo(_:_:) | +| method_lookups.swift:49:9:49:11 | .bar() | method_lookups.swift:23:15:23:33 | bar() | +| method_lookups.swift:50:9:50:9 | Z.init() | method_lookups.swift:26:3:28:3 | Z.init() | +| method_lookups.swift:50:9:50:13 | .baz(_:) | method_lookups.swift:24:3:24:21 | baz(_:) | +| method_lookups.swift:52:11:52:13 | .bar() | method_lookups.swift:23:15:23:33 | bar() | +| method_lookups.swift:53:18:53:18 | Z.init() | method_lookups.swift:26:3:28:3 | Z.init() | +| method_lookups.swift:53:23:53:23 | .baz(_:) | method_lookups.swift:24:3:24:21 | baz(_:) | diff --git a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.ql b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.ql index 74a45c0bad31..d2006d3bc819 100644 --- a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.ql @@ -2,13 +2,22 @@ import codeql.swift.elements import TestUtils -from MethodLookupExpr x, string hasType, Expr getBase, string hasMember, Expr getMethodRef -where +query predicate instances( + MethodLookupExpr x, string getBase__label, Expr getBase, string getMethodRef__label, + Expr getMethodRef +) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getBase__label = "getBase:" and getBase = x.getBase() and - (if x.hasMember() then hasMember = "yes" else hasMember = "no") and + getMethodRef__label = "getMethodRef:" and getMethodRef = x.getMethodRef() -select x, "hasType:", hasType, "getBase:", getBase, "hasMember:", hasMember, "getMethodRef:", - getMethodRef +} + +query predicate getType(MethodLookupExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} + +query predicate getMember(MethodLookupExpr x, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getMember.expected b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getMember.expected deleted file mode 100644 index a272e0da941f..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getMember.expected +++ /dev/null @@ -1,24 +0,0 @@ -| file://:0:0:0:0 | UnownedSerialExecutor.init(_:) | file://:0:0:0:0 | UnownedSerialExecutor.init(_:) | -| method_lookups.swift:7:13:7:13 | .baz(_:) | method_lookups.swift:4:3:4:21 | baz(_:) | -| method_lookups.swift:16:13:16:13 | .baz(_:) | method_lookups.swift:13:3:13:21 | baz(_:) | -| method_lookups.swift:27:13:27:13 | .baz(_:) | method_lookups.swift:24:3:24:21 | baz(_:) | -| method_lookups.swift:32:3:32:5 | .foo(_:_:) | method_lookups.swift:2:3:2:35 | foo(_:_:) | -| method_lookups.swift:33:3:33:5 | .bar() | method_lookups.swift:3:3:3:21 | bar() | -| method_lookups.swift:34:3:34:3 | X.init() | method_lookups.swift:6:3:8:3 | X.init() | -| method_lookups.swift:34:3:34:7 | .baz(_:) | method_lookups.swift:4:3:4:21 | baz(_:) | -| method_lookups.swift:36:11:36:13 | .bar() | method_lookups.swift:3:3:3:21 | bar() | -| method_lookups.swift:37:11:37:11 | X.init() | method_lookups.swift:6:3:8:3 | X.init() | -| method_lookups.swift:37:15:37:15 | .baz(_:) | method_lookups.swift:4:3:4:21 | baz(_:) | -| method_lookups.swift:40:1:40:1 | Task.init(priority:operation:) | file://:0:0:0:0 | Task.init(priority:operation:) | -| method_lookups.swift:41:3:41:5 | .foo(_:_:) | method_lookups.swift:12:3:12:35 | foo(_:_:) | -| method_lookups.swift:42:9:42:9 | Y.init() | method_lookups.swift:15:3:17:3 | Y.init() | -| method_lookups.swift:42:9:42:13 | .baz(_:) | method_lookups.swift:13:3:13:21 | baz(_:) | -| method_lookups.swift:44:11:44:13 | .foo(_:_:) | method_lookups.swift:12:3:12:35 | foo(_:_:) | -| method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | file://:0:0:0:0 | Task.init(priority:operation:) | -| method_lookups.swift:48:9:48:11 | .foo(_:_:) | method_lookups.swift:22:3:22:35 | foo(_:_:) | -| method_lookups.swift:49:9:49:11 | .bar() | method_lookups.swift:23:15:23:33 | bar() | -| method_lookups.swift:50:9:50:9 | Z.init() | method_lookups.swift:26:3:28:3 | Z.init() | -| method_lookups.swift:50:9:50:13 | .baz(_:) | method_lookups.swift:24:3:24:21 | baz(_:) | -| method_lookups.swift:52:11:52:13 | .bar() | method_lookups.swift:23:15:23:33 | bar() | -| method_lookups.swift:53:18:53:18 | Z.init() | method_lookups.swift:26:3:28:3 | Z.init() | -| method_lookups.swift:53:23:53:23 | .baz(_:) | method_lookups.swift:24:3:24:21 | baz(_:) | diff --git a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getMember.ql b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getMember.ql deleted file mode 100644 index 5ac3ed350025..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from MethodLookupExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getMember() diff --git a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getType.expected deleted file mode 100644 index 7ea638a186ca..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getType.expected +++ /dev/null @@ -1,29 +0,0 @@ -| file://:0:0:0:0 | UnownedSerialExecutor.init(_:) | (Builtin.Executor) -> UnownedSerialExecutor | -| method_lookups.swift:7:13:7:13 | (no string representation) | (Int) -> () | -| method_lookups.swift:7:13:7:13 | .baz(_:) | (Int) -> () | -| method_lookups.swift:16:13:16:13 | (no string representation) | (Int) -> () | -| method_lookups.swift:16:13:16:13 | .baz(_:) | (Int) -> () | -| method_lookups.swift:27:13:27:13 | (no string representation) | @MainActor (Int) -> () | -| method_lookups.swift:27:13:27:13 | .baz(_:) | (Int) -> () | -| method_lookups.swift:32:3:32:5 | .foo(_:_:) | (Int, Int) -> () | -| method_lookups.swift:33:3:33:5 | .bar() | () -> () | -| method_lookups.swift:34:3:34:3 | X.init() | () -> X | -| method_lookups.swift:34:3:34:7 | .baz(_:) | (Int) -> () | -| method_lookups.swift:36:11:36:13 | .bar() | () -> () | -| method_lookups.swift:37:11:37:11 | X.init() | () -> X | -| method_lookups.swift:37:11:37:15 | (no string representation) | (Int) -> () | -| method_lookups.swift:37:15:37:15 | .baz(_:) | (Int) -> () | -| method_lookups.swift:40:1:40:1 | Task.init(priority:operation:) | (TaskPriority?, sending @escaping @isolated(any) () async -> ()) -> Task<(), Never> | -| method_lookups.swift:41:3:41:5 | .foo(_:_:) | (Int, Int) -> () | -| method_lookups.swift:42:9:42:9 | Y.init() | () -> Y | -| method_lookups.swift:42:9:42:13 | .baz(_:) | (Int) -> () | -| method_lookups.swift:44:11:44:13 | .foo(_:_:) | (Int, Int) -> () | -| method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | (TaskPriority?, sending @escaping @isolated(any) () async -> ()) -> Task<(), Never> | -| method_lookups.swift:48:9:48:11 | .foo(_:_:) | @MainActor (Int, Int) -> () | -| method_lookups.swift:49:9:49:11 | .bar() | () -> () | -| method_lookups.swift:50:9:50:9 | Z.init() | @MainActor () -> Z | -| method_lookups.swift:50:9:50:13 | .baz(_:) | @MainActor (Int) -> () | -| method_lookups.swift:52:11:52:13 | .bar() | () -> () | -| method_lookups.swift:53:11:53:23 | (no string representation) | @MainActor (Int) -> () | -| method_lookups.swift:53:18:53:18 | Z.init() | @MainActor () -> Z | -| method_lookups.swift:53:23:53:23 | .baz(_:) | (Int) -> () | diff --git a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getType.ql deleted file mode 100644 index 63641a8fc5f8..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from MethodLookupExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.expected b/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.expected index 46cfc6b8a790..abf317e5a3b9 100644 --- a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.expected @@ -1,3 +1,15 @@ -| object_literals.swift:5:5:5:42 | #fileLiteral(...) | hasType: | yes | getKind: | 0 | getNumberOfArguments: | 1 | -| object_literals.swift:6:5:6:61 | #colorLiteral(...) | hasType: | yes | getKind: | 2 | getNumberOfArguments: | 4 | -| object_literals.swift:7:5:7:44 | #imageLiteral(...) | hasType: | yes | getKind: | 1 | getNumberOfArguments: | 1 | +instances +| object_literals.swift:5:5:5:42 | #fileLiteral(...) | getKind: | 0 | +| object_literals.swift:6:5:6:61 | #colorLiteral(...) | getKind: | 2 | +| object_literals.swift:7:5:7:44 | #imageLiteral(...) | getKind: | 1 | +getType +| object_literals.swift:5:5:5:42 | #fileLiteral(...) | <> | +| object_literals.swift:6:5:6:61 | #colorLiteral(...) | <> | +| object_literals.swift:7:5:7:44 | #imageLiteral(...) | <> | +getArgument +| object_literals.swift:5:5:5:42 | #fileLiteral(...) | 0 | object_literals.swift:5:18:5:32 | resourceName: file.txt | +| object_literals.swift:6:5:6:61 | #colorLiteral(...) | 0 | object_literals.swift:6:19:6:24 | red: 255 | +| object_literals.swift:6:5:6:61 | #colorLiteral(...) | 1 | object_literals.swift:6:29:6:36 | green: 255 | +| object_literals.swift:6:5:6:61 | #colorLiteral(...) | 2 | object_literals.swift:6:41:6:47 | blue: 255 | +| object_literals.swift:6:5:6:61 | #colorLiteral(...) | 3 | object_literals.swift:6:52:6:59 | alpha: 50 | +| object_literals.swift:7:5:7:44 | #imageLiteral(...) | 0 | object_literals.swift:7:19:7:33 | resourceName: image.gif | diff --git a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.ql b/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.ql index 229da3ff942b..f84367ab3bb1 100644 --- a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.ql @@ -2,11 +2,17 @@ import codeql.swift.elements import TestUtils -from ObjectLiteralExpr x, string hasType, int getKind, int getNumberOfArguments -where +query predicate instances(ObjectLiteralExpr x, string getKind__label, int getKind) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and - getKind = x.getKind() and - getNumberOfArguments = x.getNumberOfArguments() -select x, "hasType:", hasType, "getKind:", getKind, "getNumberOfArguments:", getNumberOfArguments + getKind__label = "getKind:" and + getKind = x.getKind() +} + +query predicate getType(ObjectLiteralExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} + +query predicate getArgument(ObjectLiteralExpr x, int index, Argument getArgument) { + toBeTested(x) and not x.isUnknown() and getArgument = x.getArgument(index) +} diff --git a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getArgument.expected b/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getArgument.expected deleted file mode 100644 index aa581dfdd817..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getArgument.expected +++ /dev/null @@ -1,6 +0,0 @@ -| object_literals.swift:5:5:5:42 | #fileLiteral(...) | 0 | object_literals.swift:5:18:5:32 | resourceName: file.txt | -| object_literals.swift:6:5:6:61 | #colorLiteral(...) | 0 | object_literals.swift:6:19:6:24 | red: 255 | -| object_literals.swift:6:5:6:61 | #colorLiteral(...) | 1 | object_literals.swift:6:29:6:36 | green: 255 | -| object_literals.swift:6:5:6:61 | #colorLiteral(...) | 2 | object_literals.swift:6:41:6:47 | blue: 255 | -| object_literals.swift:6:5:6:61 | #colorLiteral(...) | 3 | object_literals.swift:6:52:6:59 | alpha: 50 | -| object_literals.swift:7:5:7:44 | #imageLiteral(...) | 0 | object_literals.swift:7:19:7:33 | resourceName: image.gif | diff --git a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getArgument.ql b/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getArgument.ql deleted file mode 100644 index ee6d74c73f05..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getArgument.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ObjectLiteralExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getArgument(index) diff --git a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getType.expected deleted file mode 100644 index 49fcd7db593a..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getType.expected +++ /dev/null @@ -1,3 +0,0 @@ -| object_literals.swift:5:5:5:42 | #fileLiteral(...) | <> | -| object_literals.swift:6:5:6:61 | #colorLiteral(...) | <> | -| object_literals.swift:7:5:7:44 | #imageLiteral(...) | <> | diff --git a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getType.ql deleted file mode 100644 index 98378261fd0e..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ObjectLiteralExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr.expected b/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr.expected index 4d2e4f05c6e8..14fd43b8fd53 100644 --- a/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr.expected @@ -1 +1,4 @@ -| open_existentials.swift:14:5:14:19 | OpenExistentialExpr | hasType: | yes | getSubExpr: | open_existentials.swift:14:5:14:19 | call to foo() | getExistential: | open_existentials.swift:14:5:14:13 | call to createP() | getOpaqueExpr: | open_existentials.swift:14:5:14:13 | OpaqueValueExpr | +instances +| open_existentials.swift:14:5:14:19 | OpenExistentialExpr | getSubExpr: | open_existentials.swift:14:5:14:19 | call to foo() | getExistential: | open_existentials.swift:14:5:14:13 | call to createP() | getOpaqueExpr: | open_existentials.swift:14:5:14:13 | OpaqueValueExpr | +getType +| open_existentials.swift:14:5:14:19 | OpenExistentialExpr | () | diff --git a/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr.ql b/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr.ql index 86e0c4888728..c94f907c4e92 100644 --- a/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr.ql @@ -2,15 +2,20 @@ import codeql.swift.elements import TestUtils -from - OpenExistentialExpr x, string hasType, Expr getSubExpr, Expr getExistential, - OpaqueValueExpr getOpaqueExpr -where +query predicate instances( + OpenExistentialExpr x, string getSubExpr__label, Expr getSubExpr, string getExistential__label, + Expr getExistential, string getOpaqueExpr__label, OpaqueValueExpr getOpaqueExpr +) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getSubExpr__label = "getSubExpr:" and getSubExpr = x.getSubExpr() and + getExistential__label = "getExistential:" and getExistential = x.getExistential() and + getOpaqueExpr__label = "getOpaqueExpr:" and getOpaqueExpr = x.getOpaqueExpr() -select x, "hasType:", hasType, "getSubExpr:", getSubExpr, "getExistential:", getExistential, - "getOpaqueExpr:", getOpaqueExpr +} + +query predicate getType(OpenExistentialExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr_getType.expected deleted file mode 100644 index 2103b3448956..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr_getType.expected +++ /dev/null @@ -1 +0,0 @@ -| open_existentials.swift:14:5:14:19 | OpenExistentialExpr | () | diff --git a/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr_getType.ql deleted file mode 100644 index 3e6f5ad9700a..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/OpenExistentialExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from OpenExistentialExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr.expected b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr.expected index e69de29bb2d1..26ca47278ce7 100644 --- a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr.expected @@ -0,0 +1,2 @@ +instances +getType diff --git a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr.ql b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr.ql index 190e40098935..1863b6090b92 100644 --- a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr.ql @@ -2,10 +2,13 @@ import codeql.swift.elements import TestUtils -from MaterializePackExpr x, string hasType, Expr getSubExpr -where +query predicate instances(MaterializePackExpr x, string getSubExpr__label, Expr getSubExpr) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getSubExpr__label = "getSubExpr:" and getSubExpr = x.getSubExpr() -select x, "hasType:", hasType, "getSubExpr:", getSubExpr +} + +query predicate getType(MaterializePackExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr_getType.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr_getType.ql deleted file mode 100644 index e1c8ad68ca45..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/MaterializePackExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from MaterializePackExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr.expected b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr.expected index da55509ca554..d970fe079442 100644 --- a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr.expected @@ -1 +1,4 @@ -| test.swift:2:18:2:23 | PackElementExpr | hasType: | yes | getSubExpr: | test.swift:2:23:2:23 | t | +instances +| test.swift:2:18:2:23 | PackElementExpr | getSubExpr: | test.swift:2:23:2:23 | t | +getType +| test.swift:2:18:2:23 | PackElementExpr | \u03c4_1_0 | diff --git a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr.ql b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr.ql index c86c6235de8e..a9f6532242ff 100644 --- a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr.ql @@ -2,10 +2,13 @@ import codeql.swift.elements import TestUtils -from PackElementExpr x, string hasType, Expr getSubExpr -where +query predicate instances(PackElementExpr x, string getSubExpr__label, Expr getSubExpr) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getSubExpr__label = "getSubExpr:" and getSubExpr = x.getSubExpr() -select x, "hasType:", hasType, "getSubExpr:", getSubExpr +} + +query predicate getType(PackElementExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr_getType.expected deleted file mode 100644 index b2a455ec7f3a..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr_getType.expected +++ /dev/null @@ -1 +0,0 @@ -| test.swift:2:18:2:23 | PackElementExpr | \u03c4_1_0 | diff --git a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr_getType.ql deleted file mode 100644 index 7e43978e2b21..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackElementExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from PackElementExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr.expected b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr.expected index 071187d27461..9815b9396c74 100644 --- a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr.expected @@ -1 +1,4 @@ -| test.swift:2:11:2:23 | PackExpansionExpr | hasType: | yes | getPatternExpr: | test.swift:2:18:2:23 | PackElementExpr | +instances +| test.swift:2:11:2:23 | PackExpansionExpr | getPatternExpr: | test.swift:2:18:2:23 | PackElementExpr | +getType +| test.swift:2:11:2:23 | PackExpansionExpr | repeat each T | diff --git a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr.ql b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr.ql index a7a19b30b9eb..2ef41d1f2446 100644 --- a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr.ql @@ -2,10 +2,13 @@ import codeql.swift.elements import TestUtils -from PackExpansionExpr x, string hasType, Expr getPatternExpr -where +query predicate instances(PackExpansionExpr x, string getPatternExpr__label, Expr getPatternExpr) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getPatternExpr__label = "getPatternExpr:" and getPatternExpr = x.getPatternExpr() -select x, "hasType:", hasType, "getPatternExpr:", getPatternExpr +} + +query predicate getType(PackExpansionExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr_getType.expected deleted file mode 100644 index c391c2081184..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr_getType.expected +++ /dev/null @@ -1 +0,0 @@ -| test.swift:2:11:2:23 | PackExpansionExpr | repeat each T | diff --git a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr_getType.ql deleted file mode 100644 index a7d8aec2bf33..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/PackExpansionExpr/PackExpansionExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from PackExpansionExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr.expected b/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr.expected index 4207559e85ea..33f826100391 100644 --- a/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr.expected @@ -1,2 +1,9 @@ -| postfix.swift:1:5:1:6 | call to ...(_:) | hasType: | yes | getFunction: | postfix.swift:1:6:1:6 | ....(_:) | getNumberOfArguments: | 1 | -| postfix.swift:7:1:7:2 | call to **(_:) | hasType: | yes | getFunction: | postfix.swift:7:2:7:2 | **(_:) | getNumberOfArguments: | 1 | +instances +| postfix.swift:1:5:1:6 | call to ...(_:) | getFunction: | postfix.swift:1:6:1:6 | ....(_:) | +| postfix.swift:7:1:7:2 | call to **(_:) | getFunction: | postfix.swift:7:2:7:2 | **(_:) | +getType +| postfix.swift:1:5:1:6 | call to ...(_:) | PartialRangeFrom | +| postfix.swift:7:1:7:2 | call to **(_:) | () | +getArgument +| postfix.swift:1:5:1:6 | call to ...(_:) | 0 | postfix.swift:1:5:1:5 | : 3 | +| postfix.swift:7:1:7:2 | call to **(_:) | 0 | postfix.swift:7:1:7:1 | : 3 | diff --git a/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr.ql b/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr.ql index cbdd281f5d65..101048cb5c1f 100644 --- a/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr.ql @@ -2,12 +2,17 @@ import codeql.swift.elements import TestUtils -from PostfixUnaryExpr x, string hasType, Expr getFunction, int getNumberOfArguments -where +query predicate instances(PostfixUnaryExpr x, string getFunction__label, Expr getFunction) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and - getFunction = x.getFunction() and - getNumberOfArguments = x.getNumberOfArguments() -select x, "hasType:", hasType, "getFunction:", getFunction, "getNumberOfArguments:", - getNumberOfArguments + getFunction__label = "getFunction:" and + getFunction = x.getFunction() +} + +query predicate getType(PostfixUnaryExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} + +query predicate getArgument(PostfixUnaryExpr x, int index, Argument getArgument) { + toBeTested(x) and not x.isUnknown() and getArgument = x.getArgument(index) +} diff --git a/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getArgument.expected b/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getArgument.expected deleted file mode 100644 index 8529faaf7a41..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getArgument.expected +++ /dev/null @@ -1,2 +0,0 @@ -| postfix.swift:1:5:1:6 | call to ...(_:) | 0 | postfix.swift:1:5:1:5 | : 3 | -| postfix.swift:7:1:7:2 | call to **(_:) | 0 | postfix.swift:7:1:7:1 | : 3 | diff --git a/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getArgument.ql b/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getArgument.ql deleted file mode 100644 index f8d2dbc0b8f2..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getArgument.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from PostfixUnaryExpr x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getArgument(index) diff --git a/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getType.expected deleted file mode 100644 index caa5cc7f158c..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getType.expected +++ /dev/null @@ -1,2 +0,0 @@ -| postfix.swift:1:5:1:6 | call to ...(_:) | PartialRangeFrom | -| postfix.swift:7:1:7:2 | call to **(_:) | () | diff --git a/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getType.ql deleted file mode 100644 index 175b51cc516b..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/PostfixUnaryExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from PostfixUnaryExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr.expected b/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr.expected index 9fda9feadafd..9276038c719c 100644 --- a/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr.expected @@ -1 +1,6 @@ -| property_wrapper_value_placeholder.swift:12:26:12:26 | PropertyWrapperValuePlaceholderExpr | hasType: | yes | hasWrappedValue: | yes | getPlaceholder: | property_wrapper_value_placeholder.swift:12:26:12:26 | OpaqueValueExpr | +instances +| property_wrapper_value_placeholder.swift:12:26:12:26 | PropertyWrapperValuePlaceholderExpr | getPlaceholder: | property_wrapper_value_placeholder.swift:12:26:12:26 | OpaqueValueExpr | +getType +| property_wrapper_value_placeholder.swift:12:26:12:26 | PropertyWrapperValuePlaceholderExpr | Int | +getWrappedValue +| property_wrapper_value_placeholder.swift:12:26:12:26 | PropertyWrapperValuePlaceholderExpr | property_wrapper_value_placeholder.swift:12:26:12:26 | 42 | diff --git a/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr.ql b/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr.ql index 7d385ce8430c..bdd44df47b67 100644 --- a/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr.ql @@ -2,14 +2,20 @@ import codeql.swift.elements import TestUtils -from - PropertyWrapperValuePlaceholderExpr x, string hasType, string hasWrappedValue, +query predicate instances( + PropertyWrapperValuePlaceholderExpr x, string getPlaceholder__label, OpaqueValueExpr getPlaceholder -where +) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and - (if x.hasWrappedValue() then hasWrappedValue = "yes" else hasWrappedValue = "no") and + getPlaceholder__label = "getPlaceholder:" and getPlaceholder = x.getPlaceholder() -select x, "hasType:", hasType, "hasWrappedValue:", hasWrappedValue, "getPlaceholder:", - getPlaceholder +} + +query predicate getType(PropertyWrapperValuePlaceholderExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} + +query predicate getWrappedValue(PropertyWrapperValuePlaceholderExpr x, Expr getWrappedValue) { + toBeTested(x) and not x.isUnknown() and getWrappedValue = x.getWrappedValue() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getType.expected deleted file mode 100644 index c8ac89e28442..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getType.expected +++ /dev/null @@ -1 +0,0 @@ -| property_wrapper_value_placeholder.swift:12:26:12:26 | PropertyWrapperValuePlaceholderExpr | Int | diff --git a/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getType.ql deleted file mode 100644 index 530cbc872830..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from PropertyWrapperValuePlaceholderExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getWrappedValue.expected b/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getWrappedValue.expected deleted file mode 100644 index 042308c9ea38..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getWrappedValue.expected +++ /dev/null @@ -1 +0,0 @@ -| property_wrapper_value_placeholder.swift:12:26:12:26 | PropertyWrapperValuePlaceholderExpr | property_wrapper_value_placeholder.swift:12:26:12:26 | 42 | diff --git a/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getWrappedValue.ql b/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getWrappedValue.ql deleted file mode 100644 index 028c492631b9..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getWrappedValue.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from PropertyWrapperValuePlaceholderExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getWrappedValue() diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.expected b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.expected index 336aca667eea..a76ec56151d7 100644 --- a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.expected @@ -1,2 +1,6 @@ -| test.swift:2:3:7:3 | SingleValueStmtExpr | hasType: | yes | getStmt: | test.swift:2:3:7:3 | switch x { ... } | -| test.swift:11:3:11:30 | SingleValueStmtExpr | hasType: | yes | getStmt: | test.swift:11:3:11:30 | if ... then { ... } else { ... } | +instances +| test.swift:2:3:7:3 | SingleValueStmtExpr | getStmt: | test.swift:2:3:7:3 | switch x { ... } | +| test.swift:11:3:11:30 | SingleValueStmtExpr | getStmt: | test.swift:11:3:11:30 | if ... then { ... } else { ... } | +getType +| test.swift:2:3:7:3 | SingleValueStmtExpr | Int | +| test.swift:11:3:11:30 | SingleValueStmtExpr | Int | diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql index 79e304da1d7e..a6093558118c 100644 --- a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql @@ -2,10 +2,13 @@ import codeql.swift.elements import TestUtils -from SingleValueStmtExpr x, string hasType, Stmt getStmt -where +query predicate instances(SingleValueStmtExpr x, string getStmt__label, Stmt getStmt) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getStmt__label = "getStmt:" and getStmt = x.getStmt() -select x, "hasType:", hasType, "getStmt:", getStmt +} + +query predicate getType(SingleValueStmtExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.expected deleted file mode 100644 index 9d533e94cda1..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.expected +++ /dev/null @@ -1,2 +0,0 @@ -| test.swift:2:3:7:3 | SingleValueStmtExpr | Int | -| test.swift:11:3:11:30 | SingleValueStmtExpr | Int | diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql deleted file mode 100644 index bd8354df61d9..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from SingleValueStmtExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql index a03b5a6b9ae0..d98b8553bd16 100644 --- a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql @@ -2,9 +2,9 @@ import codeql.swift.elements import TestUtils -from ThenStmt x, Expr getResult -where +query predicate instances(ThenStmt x, string getResult__label, Expr getResult) { toBeTested(x) and not x.isUnknown() and + getResult__label = "getResult:" and getResult = x.getResult() -select x, "getResult:", getResult +} diff --git a/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr.expected b/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr.expected index 685ff810fcfa..a495d6d72d82 100644 --- a/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr.expected @@ -1,2 +1,6 @@ -| type_value_exprs.swift:4:13:4:13 | TypeValueExpr | hasType: | yes | getTypeRepr: | type_value_exprs.swift:4:13:4:13 | N | -| type_value_exprs.swift:5:13:5:13 | TypeValueExpr | hasType: | yes | getTypeRepr: | type_value_exprs.swift:5:13:5:13 | N | +instances +| type_value_exprs.swift:4:13:4:13 | TypeValueExpr | getTypeRepr: | type_value_exprs.swift:4:13:4:13 | N | +| type_value_exprs.swift:5:13:5:13 | TypeValueExpr | getTypeRepr: | type_value_exprs.swift:5:13:5:13 | N | +getType +| type_value_exprs.swift:4:13:4:13 | TypeValueExpr | Int | +| type_value_exprs.swift:5:13:5:13 | TypeValueExpr | Int | diff --git a/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr.ql b/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr.ql index d434781d1527..a8f3d7163fd5 100644 --- a/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr.ql +++ b/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr.ql @@ -2,10 +2,13 @@ import codeql.swift.elements import TestUtils -from TypeValueExpr x, string hasType, TypeRepr getTypeRepr -where +query predicate instances(TypeValueExpr x, string getTypeRepr__label, TypeRepr getTypeRepr) { toBeTested(x) and not x.isUnknown() and - (if x.hasType() then hasType = "yes" else hasType = "no") and + getTypeRepr__label = "getTypeRepr:" and getTypeRepr = x.getTypeRepr() -select x, "hasType:", hasType, "getTypeRepr:", getTypeRepr +} + +query predicate getType(TypeValueExpr x, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType() +} diff --git a/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr_getType.expected deleted file mode 100644 index 43e481417906..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr_getType.expected +++ /dev/null @@ -1,2 +0,0 @@ -| type_value_exprs.swift:4:13:4:13 | TypeValueExpr | Int | -| type_value_exprs.swift:5:13:5:13 | TypeValueExpr | Int | diff --git a/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr_getType.ql b/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr_getType.ql deleted file mode 100644 index 3c08a5c76d44..000000000000 --- a/swift/ql/test/extractor-tests/generated/expr/TypeValueExpr/TypeValueExpr_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from TypeValueExpr x -where toBeTested(x) and not x.isUnknown() -select x, x.getType() diff --git a/swift/ql/test/extractor-tests/generated/stmt/DiscardStmt/DiscardStmt.ql b/swift/ql/test/extractor-tests/generated/stmt/DiscardStmt/DiscardStmt.ql index 6d8807ea0639..9837c935851a 100644 --- a/swift/ql/test/extractor-tests/generated/stmt/DiscardStmt/DiscardStmt.ql +++ b/swift/ql/test/extractor-tests/generated/stmt/DiscardStmt/DiscardStmt.ql @@ -2,9 +2,9 @@ import codeql.swift.elements import TestUtils -from DiscardStmt x, Expr getSubExpr -where +query predicate instances(DiscardStmt x, string getSubExpr__label, Expr getSubExpr) { toBeTested(x) and not x.isUnknown() and + getSubExpr__label = "getSubExpr:" and getSubExpr = x.getSubExpr() -select x, "getSubExpr:", getSubExpr +} diff --git a/swift/ql/test/extractor-tests/generated/stmt/FailStmt/FailStmt.ql b/swift/ql/test/extractor-tests/generated/stmt/FailStmt/FailStmt.ql index 94e0f1180921..b66674e3cd42 100644 --- a/swift/ql/test/extractor-tests/generated/stmt/FailStmt/FailStmt.ql +++ b/swift/ql/test/extractor-tests/generated/stmt/FailStmt/FailStmt.ql @@ -2,6 +2,4 @@ import codeql.swift.elements import TestUtils -from FailStmt x -where toBeTested(x) and not x.isUnknown() -select x +query predicate instances(FailStmt x) { toBeTested(x) and not x.isUnknown() } diff --git a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.expected b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.expected index 2fd2e5d318e6..55fc86a8fdbd 100644 --- a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.expected +++ b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.expected @@ -1,3 +1,19 @@ -| for.swift:4:5:6:5 | for ... in ... where ... { ... } | hasLabel: | no | getNumberOfVariables: | 2 | getPattern: | for.swift:4:9:4:9 | x | hasWhere: | yes | hasIteratorVar: | yes | hasNextCall: | yes | getBody: | for.swift:4:32:6:5 | { ... } | -| for.swift:7:5:9:5 | for ... in ... { ... } | hasLabel: | no | getNumberOfVariables: | 2 | getPattern: | for.swift:7:9:7:9 | s | hasWhere: | no | hasIteratorVar: | yes | hasNextCall: | yes | getBody: | for.swift:7:23:9:5 | { ... } | -| for.swift:13:5:17:5 | for ... in ... { ... } | hasLabel: | no | getNumberOfVariables: | 1 | getPattern: | for.swift:13:9:13:9 | x | hasWhere: | no | hasIteratorVar: | no | hasNextCall: | no | getBody: | for.swift:13:32:17:5 | { ... } | +instances +| for.swift:4:5:6:5 | for ... in ... where ... { ... } | getPattern: | for.swift:4:9:4:9 | x | getBody: | for.swift:4:32:6:5 | { ... } | +| for.swift:7:5:9:5 | for ... in ... { ... } | getPattern: | for.swift:7:9:7:9 | s | getBody: | for.swift:7:23:9:5 | { ... } | +| for.swift:13:5:17:5 | for ... in ... { ... } | getPattern: | for.swift:13:9:13:9 | x | getBody: | for.swift:13:32:17:5 | { ... } | +getLabel +getVariable +| for.swift:4:5:6:5 | for ... in ... where ... { ... } | 0 | for.swift:4:9:4:9 | x | +| for.swift:4:5:6:5 | for ... in ... where ... { ... } | 1 | for.swift:4:14:4:14 | $x$generator | +| for.swift:7:5:9:5 | for ... in ... { ... } | 0 | for.swift:7:9:7:9 | s | +| for.swift:7:5:9:5 | for ... in ... { ... } | 1 | for.swift:7:14:7:14 | $s$generator | +| for.swift:13:5:17:5 | for ... in ... { ... } | 0 | for.swift:13:9:13:9 | x | +getWhere +| for.swift:4:5:6:5 | for ... in ... where ... { ... } | for.swift:4:25:4:30 | ... .!=(_:_:) ... | +getIteratorVar +| for.swift:4:5:6:5 | for ... in ... where ... { ... } | file://:0:0:0:0 | var ... = ... | +| for.swift:7:5:9:5 | for ... in ... { ... } | file://:0:0:0:0 | var ... = ... | +getNextCall +| for.swift:4:5:6:5 | for ... in ... where ... { ... } | for.swift:4:5:4:5 | call to next() | +| for.swift:7:5:9:5 | for ... in ... { ... } | for.swift:7:5:7:5 | call to next() | diff --git a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.ql b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.ql index bb659c7855ae..8b9bcabc8165 100644 --- a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.ql +++ b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.ql @@ -2,19 +2,34 @@ import codeql.swift.elements import TestUtils -from - ForEachStmt x, string hasLabel, int getNumberOfVariables, Pattern getPattern, string hasWhere, - string hasIteratorVar, string hasNextCall, BraceStmt getBody -where +query predicate instances( + ForEachStmt x, string getPattern__label, Pattern getPattern, string getBody__label, + BraceStmt getBody +) { toBeTested(x) and not x.isUnknown() and - (if x.hasLabel() then hasLabel = "yes" else hasLabel = "no") and - getNumberOfVariables = x.getNumberOfVariables() and + getPattern__label = "getPattern:" and getPattern = x.getPattern() and - (if x.hasWhere() then hasWhere = "yes" else hasWhere = "no") and - (if x.hasIteratorVar() then hasIteratorVar = "yes" else hasIteratorVar = "no") and - (if x.hasNextCall() then hasNextCall = "yes" else hasNextCall = "no") and + getBody__label = "getBody:" and getBody = x.getBody() -select x, "hasLabel:", hasLabel, "getNumberOfVariables:", getNumberOfVariables, "getPattern:", - getPattern, "hasWhere:", hasWhere, "hasIteratorVar:", hasIteratorVar, "hasNextCall:", hasNextCall, - "getBody:", getBody +} + +query predicate getLabel(ForEachStmt x, string getLabel) { + toBeTested(x) and not x.isUnknown() and getLabel = x.getLabel() +} + +query predicate getVariable(ForEachStmt x, int index, VarDecl getVariable) { + toBeTested(x) and not x.isUnknown() and getVariable = x.getVariable(index) +} + +query predicate getWhere(ForEachStmt x, Expr getWhere) { + toBeTested(x) and not x.isUnknown() and getWhere = x.getWhere() +} + +query predicate getIteratorVar(ForEachStmt x, PatternBindingDecl getIteratorVar) { + toBeTested(x) and not x.isUnknown() and getIteratorVar = x.getIteratorVar() +} + +query predicate getNextCall(ForEachStmt x, Expr getNextCall) { + toBeTested(x) and not x.isUnknown() and getNextCall = x.getNextCall() +} diff --git a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getIteratorVar.expected b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getIteratorVar.expected deleted file mode 100644 index 72e969cbaa41..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getIteratorVar.expected +++ /dev/null @@ -1,2 +0,0 @@ -| for.swift:4:5:6:5 | for ... in ... where ... { ... } | file://:0:0:0:0 | var ... = ... | -| for.swift:7:5:9:5 | for ... in ... { ... } | file://:0:0:0:0 | var ... = ... | diff --git a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getIteratorVar.ql b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getIteratorVar.ql deleted file mode 100644 index 76c004d4e562..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getIteratorVar.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ForEachStmt x -where toBeTested(x) and not x.isUnknown() -select x, x.getIteratorVar() diff --git a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getLabel.expected b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getLabel.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getLabel.ql b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getLabel.ql deleted file mode 100644 index 218668c2e280..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getLabel.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ForEachStmt x -where toBeTested(x) and not x.isUnknown() -select x, x.getLabel() diff --git a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getNextCall.expected b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getNextCall.expected deleted file mode 100644 index 191a8f2196b4..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getNextCall.expected +++ /dev/null @@ -1,2 +0,0 @@ -| for.swift:4:5:6:5 | for ... in ... where ... { ... } | for.swift:4:5:4:5 | call to next() | -| for.swift:7:5:9:5 | for ... in ... { ... } | for.swift:7:5:7:5 | call to next() | diff --git a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getNextCall.ql b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getNextCall.ql deleted file mode 100644 index 1b52342b92cd..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getNextCall.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ForEachStmt x -where toBeTested(x) and not x.isUnknown() -select x, x.getNextCall() diff --git a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getVariable.expected b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getVariable.expected deleted file mode 100644 index 9762122d43dd..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getVariable.expected +++ /dev/null @@ -1,5 +0,0 @@ -| for.swift:4:5:6:5 | for ... in ... where ... { ... } | 0 | for.swift:4:9:4:9 | x | -| for.swift:4:5:6:5 | for ... in ... where ... { ... } | 1 | for.swift:4:14:4:14 | $x$generator | -| for.swift:7:5:9:5 | for ... in ... { ... } | 0 | for.swift:7:9:7:9 | s | -| for.swift:7:5:9:5 | for ... in ... { ... } | 1 | for.swift:7:14:7:14 | $s$generator | -| for.swift:13:5:17:5 | for ... in ... { ... } | 0 | for.swift:13:9:13:9 | x | diff --git a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getVariable.ql b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getVariable.ql deleted file mode 100644 index 9981a03570ad..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getVariable.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ForEachStmt x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getVariable(index) diff --git a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getWhere.expected b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getWhere.expected deleted file mode 100644 index 991ace80dd34..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getWhere.expected +++ /dev/null @@ -1 +0,0 @@ -| for.swift:4:5:6:5 | for ... in ... where ... { ... } | for.swift:4:25:4:30 | ... .!=(_:_:) ... | diff --git a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getWhere.ql b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getWhere.ql deleted file mode 100644 index 176846c278c4..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt_getWhere.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ForEachStmt x -where toBeTested(x) and not x.isUnknown() -select x, x.getWhere() diff --git a/swift/ql/test/extractor-tests/generated/stmt/PoundAssertStmt/PoundAssertStmt.ql b/swift/ql/test/extractor-tests/generated/stmt/PoundAssertStmt/PoundAssertStmt.ql index b87fecd5d030..cafb34acd4c0 100644 --- a/swift/ql/test/extractor-tests/generated/stmt/PoundAssertStmt/PoundAssertStmt.ql +++ b/swift/ql/test/extractor-tests/generated/stmt/PoundAssertStmt/PoundAssertStmt.ql @@ -2,10 +2,14 @@ import codeql.swift.elements import TestUtils -from PoundAssertStmt x, Expr getCondition, string getMessage -where +query predicate instances( + PoundAssertStmt x, string getCondition__label, Expr getCondition, string getMessage__label, + string getMessage +) { toBeTested(x) and not x.isUnknown() and + getCondition__label = "getCondition:" and getCondition = x.getCondition() and + getMessage__label = "getMessage:" and getMessage = x.getMessage() -select x, "getCondition:", getCondition, "getMessage:", getMessage +} diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem.expected b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem.expected index 0254cddd8e09..981203c520dd 100644 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem.expected +++ b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem.expected @@ -1,13 +1,17 @@ -| switch.swift:3:9:3:9 | =~ ... | getPattern: | switch.swift:3:9:3:9 | =~ ... | hasGuard: | no | -| switch.swift:6:9:6:9 | =~ ... | getPattern: | switch.swift:6:9:6:9 | =~ ... | hasGuard: | no | -| switch.swift:6:12:6:12 | =~ ... | getPattern: | switch.swift:6:12:6:12 | =~ ... | hasGuard: | no | -| switch.swift:8:9:8:26 | x where ... | getPattern: | switch.swift:8:13:8:13 | x | hasGuard: | yes | -| switch.swift:10:4:10:4 | _ | getPattern: | switch.swift:10:4:10:4 | _ | hasGuard: | no | -| switch.swift:22:8:22:9 | .one | getPattern: | switch.swift:22:8:22:9 | .one | hasGuard: | no | -| switch.swift:24:8:24:40 | .two(...) where ... | getPattern: | switch.swift:24:8:24:25 | .two(...) | hasGuard: | yes | -| switch.swift:26:8:26:25 | .two(...) | getPattern: | switch.swift:26:8:26:25 | .two(...) | hasGuard: | no | -| switch.swift:28:8:28:23 | .three(...) | getPattern: | switch.swift:28:8:28:23 | .three(...) | hasGuard: | no | -| switch.swift:33:8:33:21 | .two(...) | getPattern: | switch.swift:33:8:33:21 | .two(...) | hasGuard: | no | -| switch.swift:35:13:35:13 | =~ ... | getPattern: | switch.swift:35:13:35:13 | =~ ... | hasGuard: | no | -| switch.swift:37:8:37:8 | _ | getPattern: | switch.swift:37:8:37:8 | _ | hasGuard: | no | -| switch.swift:40:3:40:3 | _ | getPattern: | switch.swift:40:3:40:3 | _ | hasGuard: | no | +instances +| switch.swift:3:9:3:9 | =~ ... | getPattern: | switch.swift:3:9:3:9 | =~ ... | +| switch.swift:6:9:6:9 | =~ ... | getPattern: | switch.swift:6:9:6:9 | =~ ... | +| switch.swift:6:12:6:12 | =~ ... | getPattern: | switch.swift:6:12:6:12 | =~ ... | +| switch.swift:8:9:8:26 | x where ... | getPattern: | switch.swift:8:13:8:13 | x | +| switch.swift:10:4:10:4 | _ | getPattern: | switch.swift:10:4:10:4 | _ | +| switch.swift:22:8:22:9 | .one | getPattern: | switch.swift:22:8:22:9 | .one | +| switch.swift:24:8:24:40 | .two(...) where ... | getPattern: | switch.swift:24:8:24:25 | .two(...) | +| switch.swift:26:8:26:25 | .two(...) | getPattern: | switch.swift:26:8:26:25 | .two(...) | +| switch.swift:28:8:28:23 | .three(...) | getPattern: | switch.swift:28:8:28:23 | .three(...) | +| switch.swift:33:8:33:21 | .two(...) | getPattern: | switch.swift:33:8:33:21 | .two(...) | +| switch.swift:35:13:35:13 | =~ ... | getPattern: | switch.swift:35:13:35:13 | =~ ... | +| switch.swift:37:8:37:8 | _ | getPattern: | switch.swift:37:8:37:8 | _ | +| switch.swift:40:3:40:3 | _ | getPattern: | switch.swift:40:3:40:3 | _ | +getGuard +| switch.swift:8:9:8:26 | x where ... | switch.swift:8:21:8:26 | ... .>=(_:_:) ... | +| switch.swift:24:8:24:40 | .two(...) where ... | switch.swift:24:33:24:40 | ... .==(_:_:) ... | diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem.ql b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem.ql index 9808b8ab7d0d..6838d62dbaec 100644 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem.ql +++ b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem.ql @@ -2,10 +2,13 @@ import codeql.swift.elements import TestUtils -from CaseLabelItem x, Pattern getPattern, string hasGuard -where +query predicate instances(CaseLabelItem x, string getPattern__label, Pattern getPattern) { toBeTested(x) and not x.isUnknown() and - getPattern = x.getPattern() and - if x.hasGuard() then hasGuard = "yes" else hasGuard = "no" -select x, "getPattern:", getPattern, "hasGuard:", hasGuard + getPattern__label = "getPattern:" and + getPattern = x.getPattern() +} + +query predicate getGuard(CaseLabelItem x, Expr getGuard) { + toBeTested(x) and not x.isUnknown() and getGuard = x.getGuard() +} diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem_getGuard.expected b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem_getGuard.expected deleted file mode 100644 index 347668754636..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem_getGuard.expected +++ /dev/null @@ -1,2 +0,0 @@ -| switch.swift:8:9:8:26 | x where ... | switch.swift:8:21:8:26 | ... .>=(_:_:) ... | -| switch.swift:24:8:24:40 | .two(...) where ... | switch.swift:24:33:24:40 | ... .==(_:_:) ... | diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem_getGuard.ql b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem_getGuard.ql deleted file mode 100644 index 08e9260bc8e3..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseLabelItem_getGuard.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from CaseLabelItem x -where toBeTested(x) and not x.isUnknown() -select x, x.getGuard() diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt.expected b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt.expected index ed701018d38c..52dd5204487b 100644 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt.expected +++ b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt.expected @@ -1,12 +1,35 @@ -| switch.swift:3:4:5:7 | case ... | getNumberOfLabels: | 1 | getNumberOfVariables: | 0 | getBody: | switch.swift:4:7:5:7 | { ... } | -| switch.swift:6:4:7:20 | case ... | getNumberOfLabels: | 2 | getNumberOfVariables: | 0 | getBody: | switch.swift:7:7:7:20 | { ... } | -| switch.swift:8:4:9:18 | case ... | getNumberOfLabels: | 1 | getNumberOfVariables: | 1 | getBody: | switch.swift:9:7:9:18 | { ... } | -| switch.swift:10:4:11:22 | case ... | getNumberOfLabels: | 1 | getNumberOfVariables: | 0 | getBody: | switch.swift:11:7:11:22 | { ... } | -| switch.swift:22:3:23:5 | case ... | getNumberOfLabels: | 1 | getNumberOfVariables: | 0 | getBody: | switch.swift:23:5:23:5 | { ... } | -| switch.swift:24:3:25:5 | case ... | getNumberOfLabels: | 1 | getNumberOfVariables: | 2 | getBody: | switch.swift:25:5:25:5 | { ... } | -| switch.swift:26:3:27:5 | case ... | getNumberOfLabels: | 1 | getNumberOfVariables: | 2 | getBody: | switch.swift:27:5:27:5 | { ... } | -| switch.swift:28:3:29:5 | case ... | getNumberOfLabels: | 1 | getNumberOfVariables: | 1 | getBody: | switch.swift:29:5:29:5 | { ... } | -| switch.swift:33:3:39:5 | case ... | getNumberOfLabels: | 1 | getNumberOfVariables: | 1 | getBody: | switch.swift:34:5:39:5 | { ... } | -| switch.swift:35:8:36:16 | case ... | getNumberOfLabels: | 1 | getNumberOfVariables: | 0 | getBody: | switch.swift:36:10:36:16 | { ... } | -| switch.swift:37:8:38:16 | case ... | getNumberOfLabels: | 1 | getNumberOfVariables: | 0 | getBody: | switch.swift:38:10:38:16 | { ... } | -| switch.swift:40:3:41:5 | case ... | getNumberOfLabels: | 1 | getNumberOfVariables: | 0 | getBody: | switch.swift:41:5:41:5 | { ... } | +instances +| switch.swift:3:4:5:7 | case ... | getBody: | switch.swift:4:7:5:7 | { ... } | +| switch.swift:6:4:7:20 | case ... | getBody: | switch.swift:7:7:7:20 | { ... } | +| switch.swift:8:4:9:18 | case ... | getBody: | switch.swift:9:7:9:18 | { ... } | +| switch.swift:10:4:11:22 | case ... | getBody: | switch.swift:11:7:11:22 | { ... } | +| switch.swift:22:3:23:5 | case ... | getBody: | switch.swift:23:5:23:5 | { ... } | +| switch.swift:24:3:25:5 | case ... | getBody: | switch.swift:25:5:25:5 | { ... } | +| switch.swift:26:3:27:5 | case ... | getBody: | switch.swift:27:5:27:5 | { ... } | +| switch.swift:28:3:29:5 | case ... | getBody: | switch.swift:29:5:29:5 | { ... } | +| switch.swift:33:3:39:5 | case ... | getBody: | switch.swift:34:5:39:5 | { ... } | +| switch.swift:35:8:36:16 | case ... | getBody: | switch.swift:36:10:36:16 | { ... } | +| switch.swift:37:8:38:16 | case ... | getBody: | switch.swift:38:10:38:16 | { ... } | +| switch.swift:40:3:41:5 | case ... | getBody: | switch.swift:41:5:41:5 | { ... } | +getLabel +| switch.swift:3:4:5:7 | case ... | 0 | switch.swift:3:9:3:9 | =~ ... | +| switch.swift:6:4:7:20 | case ... | 0 | switch.swift:6:9:6:9 | =~ ... | +| switch.swift:6:4:7:20 | case ... | 1 | switch.swift:6:12:6:12 | =~ ... | +| switch.swift:8:4:9:18 | case ... | 0 | switch.swift:8:9:8:26 | x where ... | +| switch.swift:10:4:11:22 | case ... | 0 | switch.swift:10:4:10:4 | _ | +| switch.swift:22:3:23:5 | case ... | 0 | switch.swift:22:8:22:9 | .one | +| switch.swift:24:3:25:5 | case ... | 0 | switch.swift:24:8:24:40 | .two(...) where ... | +| switch.swift:26:3:27:5 | case ... | 0 | switch.swift:26:8:26:25 | .two(...) | +| switch.swift:28:3:29:5 | case ... | 0 | switch.swift:28:8:28:23 | .three(...) | +| switch.swift:33:3:39:5 | case ... | 0 | switch.swift:33:8:33:21 | .two(...) | +| switch.swift:35:8:36:16 | case ... | 0 | switch.swift:35:13:35:13 | =~ ... | +| switch.swift:37:8:38:16 | case ... | 0 | switch.swift:37:8:37:8 | _ | +| switch.swift:40:3:41:5 | case ... | 0 | switch.swift:40:3:40:3 | _ | +getVariable +| switch.swift:8:4:9:18 | case ... | 0 | switch.swift:8:13:8:13 | x | +| switch.swift:24:3:25:5 | case ... | 0 | switch.swift:24:17:24:17 | a | +| switch.swift:24:3:25:5 | case ... | 1 | switch.swift:24:24:24:24 | b | +| switch.swift:26:3:27:5 | case ... | 0 | switch.swift:26:17:26:17 | c | +| switch.swift:26:3:27:5 | case ... | 1 | switch.swift:26:24:26:24 | d | +| switch.swift:28:3:29:5 | case ... | 0 | switch.swift:28:22:28:22 | e | +| switch.swift:33:3:39:5 | case ... | 0 | switch.swift:33:17:33:17 | a | diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt.ql b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt.ql index 8951cdb1cb8b..b248ecf38402 100644 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt.ql +++ b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt.ql @@ -2,12 +2,17 @@ import codeql.swift.elements import TestUtils -from CaseStmt x, int getNumberOfLabels, int getNumberOfVariables, Stmt getBody -where +query predicate instances(CaseStmt x, string getBody__label, Stmt getBody) { toBeTested(x) and not x.isUnknown() and - getNumberOfLabels = x.getNumberOfLabels() and - getNumberOfVariables = x.getNumberOfVariables() and + getBody__label = "getBody:" and getBody = x.getBody() -select x, "getNumberOfLabels:", getNumberOfLabels, "getNumberOfVariables:", getNumberOfVariables, - "getBody:", getBody +} + +query predicate getLabel(CaseStmt x, int index, CaseLabelItem getLabel) { + toBeTested(x) and not x.isUnknown() and getLabel = x.getLabel(index) +} + +query predicate getVariable(CaseStmt x, int index, VarDecl getVariable) { + toBeTested(x) and not x.isUnknown() and getVariable = x.getVariable(index) +} diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getLabel.expected b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getLabel.expected deleted file mode 100644 index 240872c9ece0..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getLabel.expected +++ /dev/null @@ -1,13 +0,0 @@ -| switch.swift:3:4:5:7 | case ... | 0 | switch.swift:3:9:3:9 | =~ ... | -| switch.swift:6:4:7:20 | case ... | 0 | switch.swift:6:9:6:9 | =~ ... | -| switch.swift:6:4:7:20 | case ... | 1 | switch.swift:6:12:6:12 | =~ ... | -| switch.swift:8:4:9:18 | case ... | 0 | switch.swift:8:9:8:26 | x where ... | -| switch.swift:10:4:11:22 | case ... | 0 | switch.swift:10:4:10:4 | _ | -| switch.swift:22:3:23:5 | case ... | 0 | switch.swift:22:8:22:9 | .one | -| switch.swift:24:3:25:5 | case ... | 0 | switch.swift:24:8:24:40 | .two(...) where ... | -| switch.swift:26:3:27:5 | case ... | 0 | switch.swift:26:8:26:25 | .two(...) | -| switch.swift:28:3:29:5 | case ... | 0 | switch.swift:28:8:28:23 | .three(...) | -| switch.swift:33:3:39:5 | case ... | 0 | switch.swift:33:8:33:21 | .two(...) | -| switch.swift:35:8:36:16 | case ... | 0 | switch.swift:35:13:35:13 | =~ ... | -| switch.swift:37:8:38:16 | case ... | 0 | switch.swift:37:8:37:8 | _ | -| switch.swift:40:3:41:5 | case ... | 0 | switch.swift:40:3:40:3 | _ | diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getLabel.ql b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getLabel.ql deleted file mode 100644 index a40470354576..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getLabel.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from CaseStmt x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getLabel(index) diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getVariable.expected b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getVariable.expected deleted file mode 100644 index 6e1b31a48091..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getVariable.expected +++ /dev/null @@ -1,7 +0,0 @@ -| switch.swift:8:4:9:18 | case ... | 0 | switch.swift:8:13:8:13 | x | -| switch.swift:24:3:25:5 | case ... | 0 | switch.swift:24:17:24:17 | a | -| switch.swift:24:3:25:5 | case ... | 1 | switch.swift:24:24:24:24 | b | -| switch.swift:26:3:27:5 | case ... | 0 | switch.swift:26:17:26:17 | c | -| switch.swift:26:3:27:5 | case ... | 1 | switch.swift:26:24:26:24 | d | -| switch.swift:28:3:29:5 | case ... | 0 | switch.swift:28:22:28:22 | e | -| switch.swift:33:3:39:5 | case ... | 0 | switch.swift:33:17:33:17 | a | diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getVariable.ql b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getVariable.ql deleted file mode 100644 index 14d32d18ddf3..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/CaseStmt_getVariable.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from CaseStmt x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getVariable(index) diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt.expected b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt.expected index e7258f337dac..ad4fed60062f 100644 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt.expected +++ b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt.expected @@ -1,4 +1,21 @@ -| switch.swift:2:1:12:1 | switch index { ... } | hasLabel: | no | getExpr: | switch.swift:2:8:2:8 | index | getNumberOfCases: | 4 | -| switch.swift:21:1:30:1 | switch x { ... } | hasLabel: | no | getExpr: | switch.swift:21:8:21:8 | x | getNumberOfCases: | 4 | -| switch.swift:32:1:42:1 | switch x { ... } | hasLabel: | yes | getExpr: | switch.swift:32:15:32:15 | x | getNumberOfCases: | 2 | -| switch.swift:34:5:39:5 | switch a { ... } | hasLabel: | yes | getExpr: | switch.swift:34:19:34:19 | a | getNumberOfCases: | 2 | +instances +| switch.swift:2:1:12:1 | switch index { ... } | getExpr: | switch.swift:2:8:2:8 | index | +| switch.swift:21:1:30:1 | switch x { ... } | getExpr: | switch.swift:21:8:21:8 | x | +| switch.swift:32:1:42:1 | switch x { ... } | getExpr: | switch.swift:32:15:32:15 | x | +| switch.swift:34:5:39:5 | switch a { ... } | getExpr: | switch.swift:34:19:34:19 | a | +getLabel +| switch.swift:32:1:42:1 | switch x { ... } | outer | +| switch.swift:34:5:39:5 | switch a { ... } | inner | +getCase +| switch.swift:2:1:12:1 | switch index { ... } | 0 | switch.swift:3:4:5:7 | case ... | +| switch.swift:2:1:12:1 | switch index { ... } | 1 | switch.swift:6:4:7:20 | case ... | +| switch.swift:2:1:12:1 | switch index { ... } | 2 | switch.swift:8:4:9:18 | case ... | +| switch.swift:2:1:12:1 | switch index { ... } | 3 | switch.swift:10:4:11:22 | case ... | +| switch.swift:21:1:30:1 | switch x { ... } | 0 | switch.swift:22:3:23:5 | case ... | +| switch.swift:21:1:30:1 | switch x { ... } | 1 | switch.swift:24:3:25:5 | case ... | +| switch.swift:21:1:30:1 | switch x { ... } | 2 | switch.swift:26:3:27:5 | case ... | +| switch.swift:21:1:30:1 | switch x { ... } | 3 | switch.swift:28:3:29:5 | case ... | +| switch.swift:32:1:42:1 | switch x { ... } | 0 | switch.swift:33:3:39:5 | case ... | +| switch.swift:32:1:42:1 | switch x { ... } | 1 | switch.swift:40:3:41:5 | case ... | +| switch.swift:34:5:39:5 | switch a { ... } | 0 | switch.swift:35:8:36:16 | case ... | +| switch.swift:34:5:39:5 | switch a { ... } | 1 | switch.swift:37:8:38:16 | case ... | diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt.ql b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt.ql index 2844d4ebd903..bd817bcb416f 100644 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt.ql +++ b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt.ql @@ -2,11 +2,17 @@ import codeql.swift.elements import TestUtils -from SwitchStmt x, string hasLabel, Expr getExpr, int getNumberOfCases -where +query predicate instances(SwitchStmt x, string getExpr__label, Expr getExpr) { toBeTested(x) and not x.isUnknown() and - (if x.hasLabel() then hasLabel = "yes" else hasLabel = "no") and - getExpr = x.getExpr() and - getNumberOfCases = x.getNumberOfCases() -select x, "hasLabel:", hasLabel, "getExpr:", getExpr, "getNumberOfCases:", getNumberOfCases + getExpr__label = "getExpr:" and + getExpr = x.getExpr() +} + +query predicate getLabel(SwitchStmt x, string getLabel) { + toBeTested(x) and not x.isUnknown() and getLabel = x.getLabel() +} + +query predicate getCase(SwitchStmt x, int index, CaseStmt getCase) { + toBeTested(x) and not x.isUnknown() and getCase = x.getCase(index) +} diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getCase.expected b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getCase.expected deleted file mode 100644 index 93c4db76adc1..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getCase.expected +++ /dev/null @@ -1,12 +0,0 @@ -| switch.swift:2:1:12:1 | switch index { ... } | 0 | switch.swift:3:4:5:7 | case ... | -| switch.swift:2:1:12:1 | switch index { ... } | 1 | switch.swift:6:4:7:20 | case ... | -| switch.swift:2:1:12:1 | switch index { ... } | 2 | switch.swift:8:4:9:18 | case ... | -| switch.swift:2:1:12:1 | switch index { ... } | 3 | switch.swift:10:4:11:22 | case ... | -| switch.swift:21:1:30:1 | switch x { ... } | 0 | switch.swift:22:3:23:5 | case ... | -| switch.swift:21:1:30:1 | switch x { ... } | 1 | switch.swift:24:3:25:5 | case ... | -| switch.swift:21:1:30:1 | switch x { ... } | 2 | switch.swift:26:3:27:5 | case ... | -| switch.swift:21:1:30:1 | switch x { ... } | 3 | switch.swift:28:3:29:5 | case ... | -| switch.swift:32:1:42:1 | switch x { ... } | 0 | switch.swift:33:3:39:5 | case ... | -| switch.swift:32:1:42:1 | switch x { ... } | 1 | switch.swift:40:3:41:5 | case ... | -| switch.swift:34:5:39:5 | switch a { ... } | 0 | switch.swift:35:8:36:16 | case ... | -| switch.swift:34:5:39:5 | switch a { ... } | 1 | switch.swift:37:8:38:16 | case ... | diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getCase.ql b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getCase.ql deleted file mode 100644 index c9f55f3b1d20..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getCase.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from SwitchStmt x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getCase(index) diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getLabel.expected b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getLabel.expected deleted file mode 100644 index 99df95b02495..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getLabel.expected +++ /dev/null @@ -1,2 +0,0 @@ -| switch.swift:32:1:42:1 | switch x { ... } | outer | -| switch.swift:34:5:39:5 | switch a { ... } | inner | diff --git a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getLabel.ql b/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getLabel.ql deleted file mode 100644 index 2d9aaf458453..000000000000 --- a/swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/SwitchStmt_getLabel.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from SwitchStmt x -where toBeTested(x) and not x.isUnknown() -select x, x.getLabel() diff --git a/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType.expected b/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType.expected index d57e72a708b0..7bc36b2f4e00 100644 --- a/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType.expected +++ b/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType.expected @@ -1,5 +1,11 @@ -| Builtin.Int8 | getName: | Int8 | getCanonicalType: | Builtin.Int8 | hasWidth: | yes | -| Builtin.Int16 | getName: | Int16 | getCanonicalType: | Builtin.Int16 | hasWidth: | yes | -| Builtin.Int32 | getName: | Int32 | getCanonicalType: | Builtin.Int32 | hasWidth: | yes | -| Builtin.Int64 | getName: | Int64 | getCanonicalType: | Builtin.Int64 | hasWidth: | yes | -| Builtin.Word | getName: | Word | getCanonicalType: | Builtin.Word | hasWidth: | no | +instances +| Builtin.Int8 | getName: | Int8 | getCanonicalType: | Builtin.Int8 | +| Builtin.Int16 | getName: | Int16 | getCanonicalType: | Builtin.Int16 | +| Builtin.Int32 | getName: | Int32 | getCanonicalType: | Builtin.Int32 | +| Builtin.Int64 | getName: | Int64 | getCanonicalType: | Builtin.Int64 | +| Builtin.Word | getName: | Word | getCanonicalType: | Builtin.Word | +getWidth +| Builtin.Int8 | 8 | +| Builtin.Int16 | 16 | +| Builtin.Int32 | 32 | +| Builtin.Int64 | 64 | diff --git a/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType.ql b/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType.ql index ea32bf91d748..47e8d4cfe5ca 100644 --- a/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType.ql +++ b/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType.ql @@ -2,11 +2,18 @@ import codeql.swift.elements import TestUtils -from BuiltinIntegerType x, string getName, Type getCanonicalType, string hasWidth -where +query predicate instances( + BuiltinIntegerType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and - getCanonicalType = x.getCanonicalType() and - if x.hasWidth() then hasWidth = "yes" else hasWidth = "no" -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "hasWidth:", hasWidth + getCanonicalType__label = "getCanonicalType:" and + getCanonicalType = x.getCanonicalType() +} + +query predicate getWidth(BuiltinIntegerType x, int getWidth) { + toBeTested(x) and not x.isUnknown() and getWidth = x.getWidth() +} diff --git a/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType_getWidth.expected b/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType_getWidth.expected deleted file mode 100644 index 350ab9ee53a9..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType_getWidth.expected +++ /dev/null @@ -1,4 +0,0 @@ -| Builtin.Int8 | 8 | -| Builtin.Int16 | 16 | -| Builtin.Int32 | 32 | -| Builtin.Int64 | 64 | diff --git a/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType_getWidth.ql b/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType_getWidth.ql deleted file mode 100644 index 15fcefae59f1..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType_getWidth.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from BuiltinIntegerType x -where toBeTested(x) and not x.isUnknown() -select x, x.getWidth() diff --git a/swift/ql/test/extractor-tests/generated/type/BuiltinType/BuiltinType.ql b/swift/ql/test/extractor-tests/generated/type/BuiltinType/BuiltinType.ql index 6488c2a30658..984542fc0028 100644 --- a/swift/ql/test/extractor-tests/generated/type/BuiltinType/BuiltinType.ql +++ b/swift/ql/test/extractor-tests/generated/type/BuiltinType/BuiltinType.ql @@ -2,10 +2,15 @@ import codeql.swift.elements import TestUtils -from BuiltinType x, string getName, Type getCanonicalType -where +query predicate instances( + BuiltinType x, string primaryQlClasses, string getName__label, string getName, + string getCanonicalType__label, Type getCanonicalType +) { toBeTested(x) and not x.isUnknown() and + primaryQlClasses = x.getPrimaryQlClasses() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() -select x, x.getPrimaryQlClasses(), "getName:", getName, "getCanonicalType:", getCanonicalType +} diff --git a/swift/ql/test/extractor-tests/generated/type/DynamicSelfType/DynamicSelfType.ql b/swift/ql/test/extractor-tests/generated/type/DynamicSelfType/DynamicSelfType.ql index 24849d7c8dfc..1883c35ca75b 100644 --- a/swift/ql/test/extractor-tests/generated/type/DynamicSelfType/DynamicSelfType.ql +++ b/swift/ql/test/extractor-tests/generated/type/DynamicSelfType/DynamicSelfType.ql @@ -2,12 +2,16 @@ import codeql.swift.elements import TestUtils -from DynamicSelfType x, string getName, Type getCanonicalType, Type getStaticSelfType -where +query predicate instances( + DynamicSelfType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getStaticSelfType__label, Type getStaticSelfType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and + getStaticSelfType__label = "getStaticSelfType:" and getStaticSelfType = x.getStaticSelfType() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getStaticSelfType:", - getStaticSelfType +} diff --git a/swift/ql/test/extractor-tests/generated/type/ExistentialType/ExistentialType.ql b/swift/ql/test/extractor-tests/generated/type/ExistentialType/ExistentialType.ql index 84eb1eeef21f..96200b1f27c9 100644 --- a/swift/ql/test/extractor-tests/generated/type/ExistentialType/ExistentialType.ql +++ b/swift/ql/test/extractor-tests/generated/type/ExistentialType/ExistentialType.ql @@ -2,12 +2,16 @@ import codeql.swift.elements import TestUtils -from ExistentialType x, string getName, Type getCanonicalType, Type getConstraint -where +query predicate instances( + ExistentialType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getConstraint__label, Type getConstraint +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and + getConstraint__label = "getConstraint:" and getConstraint = x.getConstraint() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getConstraint:", - getConstraint +} diff --git a/swift/ql/test/extractor-tests/generated/type/InOutType/InOutType.ql b/swift/ql/test/extractor-tests/generated/type/InOutType/InOutType.ql index 9cb466a5dbf5..59ae14054a41 100644 --- a/swift/ql/test/extractor-tests/generated/type/InOutType/InOutType.ql +++ b/swift/ql/test/extractor-tests/generated/type/InOutType/InOutType.ql @@ -2,12 +2,16 @@ import codeql.swift.elements import TestUtils -from InOutType x, string getName, Type getCanonicalType, Type getObjectType -where +query predicate instances( + InOutType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getObjectType__label, Type getObjectType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and + getObjectType__label = "getObjectType:" and getObjectType = x.getObjectType() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getObjectType:", - getObjectType +} diff --git a/swift/ql/test/extractor-tests/generated/type/IntegerType/IntegerType.ql b/swift/ql/test/extractor-tests/generated/type/IntegerType/IntegerType.ql index dea3771c7c5d..31f187e8ad24 100644 --- a/swift/ql/test/extractor-tests/generated/type/IntegerType/IntegerType.ql +++ b/swift/ql/test/extractor-tests/generated/type/IntegerType/IntegerType.ql @@ -2,11 +2,16 @@ import codeql.swift.elements import TestUtils -from IntegerType x, string getName, Type getCanonicalType, string getValue -where +query predicate instances( + IntegerType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getValue__label, string getValue +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and + getValue__label = "getValue:" and getValue = x.getValue() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getValue:", getValue +} diff --git a/swift/ql/test/extractor-tests/generated/type/ModuleType/ModuleType.ql b/swift/ql/test/extractor-tests/generated/type/ModuleType/ModuleType.ql index b02c0ae4ee7a..b9988d0f44b1 100644 --- a/swift/ql/test/extractor-tests/generated/type/ModuleType/ModuleType.ql +++ b/swift/ql/test/extractor-tests/generated/type/ModuleType/ModuleType.ql @@ -2,11 +2,16 @@ import codeql.swift.elements import TestUtils -from ModuleType x, string getName, Type getCanonicalType, ModuleDecl getModule -where +query predicate instances( + ModuleType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getModule__label, ModuleDecl getModule +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and + getModule__label = "getModule:" and getModule = x.getModule() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getModule:", getModule +} diff --git a/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType.expected b/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType.expected index 2b14e261f28d..27dbc0ef445e 100644 --- a/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType.expected +++ b/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType.expected @@ -1,4 +1,11 @@ -| some Base | getName: | some Base | getCanonicalType: | some Base | getInterfaceType: | \u03c4_1_0 | hasSuperclass: | yes | getNumberOfProtocols: | 0 | getDeclaration: | file://:0:0:0:0 | _ | -| some P | getName: | some P | getCanonicalType: | some P | getInterfaceType: | \u03c4_1_0 | hasSuperclass: | no | getNumberOfProtocols: | 1 | getDeclaration: | file://:0:0:0:0 | _ | -| some P | getName: | some P | getCanonicalType: | some P | getInterfaceType: | \u03c4_1_0 | hasSuperclass: | no | getNumberOfProtocols: | 1 | getDeclaration: | file://:0:0:0:0 | _ | -| some SignedInteger | getName: | some SignedInteger | getCanonicalType: | some SignedInteger | getInterfaceType: | \u03c4_0_0 | hasSuperclass: | no | getNumberOfProtocols: | 1 | getDeclaration: | file://:0:0:0:0 | _ | +instances +| some Base | getName: | some Base | getCanonicalType: | some Base | getInterfaceType: | \u03c4_1_0 | getDeclaration: | file://:0:0:0:0 | _ | +| some P | getName: | some P | getCanonicalType: | some P | getInterfaceType: | \u03c4_1_0 | getDeclaration: | file://:0:0:0:0 | _ | +| some P | getName: | some P | getCanonicalType: | some P | getInterfaceType: | \u03c4_1_0 | getDeclaration: | file://:0:0:0:0 | _ | +| some SignedInteger | getName: | some SignedInteger | getCanonicalType: | some SignedInteger | getInterfaceType: | \u03c4_0_0 | getDeclaration: | file://:0:0:0:0 | _ | +getSuperclass +| some Base | Base | +getProtocol +| some P | 0 | opaque_types.swift:3:1:3:13 | P | +| some P | 0 | opaque_types.swift:3:1:3:13 | P | +| some SignedInteger | 0 | file://:0:0:0:0 | SignedInteger | diff --git a/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType.ql b/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType.ql index fab7fccc357d..a3a9f5f84110 100644 --- a/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType.ql +++ b/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType.ql @@ -2,18 +2,27 @@ import codeql.swift.elements import TestUtils -from - OpaqueTypeArchetypeType x, string getName, Type getCanonicalType, Type getInterfaceType, - string hasSuperclass, int getNumberOfProtocols, OpaqueTypeDecl getDeclaration -where +query predicate instances( + OpaqueTypeArchetypeType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getInterfaceType__label, Type getInterfaceType, + string getDeclaration__label, OpaqueTypeDecl getDeclaration +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and + getInterfaceType__label = "getInterfaceType:" and getInterfaceType = x.getInterfaceType() and - (if x.hasSuperclass() then hasSuperclass = "yes" else hasSuperclass = "no") and - getNumberOfProtocols = x.getNumberOfProtocols() and + getDeclaration__label = "getDeclaration:" and getDeclaration = x.getDeclaration() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getInterfaceType:", - getInterfaceType, "hasSuperclass:", hasSuperclass, "getNumberOfProtocols:", getNumberOfProtocols, - "getDeclaration:", getDeclaration +} + +query predicate getSuperclass(OpaqueTypeArchetypeType x, Type getSuperclass) { + toBeTested(x) and not x.isUnknown() and getSuperclass = x.getSuperclass() +} + +query predicate getProtocol(OpaqueTypeArchetypeType x, int index, ProtocolDecl getProtocol) { + toBeTested(x) and not x.isUnknown() and getProtocol = x.getProtocol(index) +} diff --git a/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getProtocol.expected b/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getProtocol.expected deleted file mode 100644 index 1ca3b350aeb9..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getProtocol.expected +++ /dev/null @@ -1,3 +0,0 @@ -| some P | 0 | opaque_types.swift:3:1:3:13 | P | -| some P | 0 | opaque_types.swift:3:1:3:13 | P | -| some SignedInteger | 0 | file://:0:0:0:0 | SignedInteger | diff --git a/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getProtocol.ql b/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getProtocol.ql deleted file mode 100644 index ac3498c699ad..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getProtocol.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from OpaqueTypeArchetypeType x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getProtocol(index) diff --git a/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getSuperclass.expected b/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getSuperclass.expected deleted file mode 100644 index d8f0ecac66b7..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getSuperclass.expected +++ /dev/null @@ -1 +0,0 @@ -| some Base | Base | diff --git a/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getSuperclass.ql b/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getSuperclass.ql deleted file mode 100644 index e32a97a7ceef..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType_getSuperclass.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from OpaqueTypeArchetypeType x -where toBeTested(x) and not x.isUnknown() -select x, x.getSuperclass() diff --git a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.expected b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.expected index 24471c96e6c7..3400ffa5fdcf 100644 --- a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.expected +++ b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.expected @@ -1 +1,7 @@ -| any C & P1 & P2 | getName: | any C & P1 & P2 | getCanonicalType: | any C & P1 & P2 | getInterfaceType: | \u03c4_0_0 | hasSuperclass: | yes | getNumberOfProtocols: | 2 | +instances +| any C & P1 & P2 | getName: | any C & P1 & P2 | getCanonicalType: | any C & P1 & P2 | getInterfaceType: | \u03c4_0_0 | +getSuperclass +| any C & P1 & P2 | C | +getProtocol +| any C & P1 & P2 | 0 | opened_archetypes.swift:3:1:3:14 | P1 | +| any C & P1 & P2 | 1 | opened_archetypes.swift:9:1:9:14 | P2 | diff --git a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.ql b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.ql index 418367b34daa..2d5f19580a76 100644 --- a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.ql +++ b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.ql @@ -2,16 +2,24 @@ import codeql.swift.elements import TestUtils -from - OpenedArchetypeType x, string getName, Type getCanonicalType, Type getInterfaceType, - string hasSuperclass, int getNumberOfProtocols -where +query predicate instances( + OpenedArchetypeType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getInterfaceType__label, Type getInterfaceType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and - getInterfaceType = x.getInterfaceType() and - (if x.hasSuperclass() then hasSuperclass = "yes" else hasSuperclass = "no") and - getNumberOfProtocols = x.getNumberOfProtocols() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getInterfaceType:", - getInterfaceType, "hasSuperclass:", hasSuperclass, "getNumberOfProtocols:", getNumberOfProtocols + getInterfaceType__label = "getInterfaceType:" and + getInterfaceType = x.getInterfaceType() +} + +query predicate getSuperclass(OpenedArchetypeType x, Type getSuperclass) { + toBeTested(x) and not x.isUnknown() and getSuperclass = x.getSuperclass() +} + +query predicate getProtocol(OpenedArchetypeType x, int index, ProtocolDecl getProtocol) { + toBeTested(x) and not x.isUnknown() and getProtocol = x.getProtocol(index) +} diff --git a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getProtocol.expected b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getProtocol.expected deleted file mode 100644 index 691608328bb2..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getProtocol.expected +++ /dev/null @@ -1,2 +0,0 @@ -| any C & P1 & P2 | 0 | opened_archetypes.swift:3:1:3:14 | P1 | -| any C & P1 & P2 | 1 | opened_archetypes.swift:9:1:9:14 | P2 | diff --git a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getProtocol.ql b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getProtocol.ql deleted file mode 100644 index e3408e77e8f4..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getProtocol.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from OpenedArchetypeType x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getProtocol(index) diff --git a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getSuperclass.expected b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getSuperclass.expected deleted file mode 100644 index dffe6bf270a6..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getSuperclass.expected +++ /dev/null @@ -1 +0,0 @@ -| any C & P1 & P2 | C | diff --git a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getSuperclass.ql b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getSuperclass.ql deleted file mode 100644 index 6dcddb59c265..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getSuperclass.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from OpenedArchetypeType x -where toBeTested(x) and not x.isUnknown() -select x, x.getSuperclass() diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType.expected b/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType.expected index 5bfa71a34816..de765f970816 100644 --- a/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType.expected +++ b/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType.expected @@ -1 +1,6 @@ -| \u03c4_1_0 | getName: | \u03c4_1_0 | getCanonicalType: | \u03c4_1_0 | getInterfaceType: | \u03c4_1_0 | hasSuperclass: | no | getNumberOfProtocols: | 2 | +instances +| \u03c4_1_0 | getName: | \u03c4_1_0 | getCanonicalType: | \u03c4_1_0 | getInterfaceType: | \u03c4_1_0 | +getSuperclass +getProtocol +| \u03c4_1_0 | 0 | file://:0:0:0:0 | Copyable | +| \u03c4_1_0 | 1 | file://:0:0:0:0 | Escapable | diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType.ql b/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType.ql index 3b1e13580ed8..fb8b5e0f02ee 100644 --- a/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType.ql +++ b/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType.ql @@ -2,16 +2,24 @@ import codeql.swift.elements import TestUtils -from - ElementArchetypeType x, string getName, Type getCanonicalType, Type getInterfaceType, - string hasSuperclass, int getNumberOfProtocols -where +query predicate instances( + ElementArchetypeType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getInterfaceType__label, Type getInterfaceType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and - getInterfaceType = x.getInterfaceType() and - (if x.hasSuperclass() then hasSuperclass = "yes" else hasSuperclass = "no") and - getNumberOfProtocols = x.getNumberOfProtocols() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getInterfaceType:", - getInterfaceType, "hasSuperclass:", hasSuperclass, "getNumberOfProtocols:", getNumberOfProtocols + getInterfaceType__label = "getInterfaceType:" and + getInterfaceType = x.getInterfaceType() +} + +query predicate getSuperclass(ElementArchetypeType x, Type getSuperclass) { + toBeTested(x) and not x.isUnknown() and getSuperclass = x.getSuperclass() +} + +query predicate getProtocol(ElementArchetypeType x, int index, ProtocolDecl getProtocol) { + toBeTested(x) and not x.isUnknown() and getProtocol = x.getProtocol(index) +} diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType_getProtocol.expected b/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType_getProtocol.expected deleted file mode 100644 index f6d6dae2dc59..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType_getProtocol.expected +++ /dev/null @@ -1,2 +0,0 @@ -| \u03c4_1_0 | 0 | file://:0:0:0:0 | Copyable | -| \u03c4_1_0 | 1 | file://:0:0:0:0 | Escapable | diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType_getProtocol.ql b/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType_getProtocol.ql deleted file mode 100644 index 57385c7695f9..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType_getProtocol.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ElementArchetypeType x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getProtocol(index) diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType_getSuperclass.expected b/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType_getSuperclass.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType_getSuperclass.ql b/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType_getSuperclass.ql deleted file mode 100644 index 01204fdd0596..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/PackType/ElementArchetypeType_getSuperclass.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ElementArchetypeType x -where toBeTested(x) and not x.isUnknown() -select x, x.getSuperclass() diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType.expected b/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType.expected index c53f468dc52f..564700dd68d8 100644 --- a/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType.expected +++ b/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType.expected @@ -1,2 +1,9 @@ -| each Arg | getName: | each Arg | getCanonicalType: | each Arg | getInterfaceType: | each Arg | hasSuperclass: | no | getNumberOfProtocols: | 2 | -| each T | getName: | each T | getCanonicalType: | each T | getInterfaceType: | each T | hasSuperclass: | no | getNumberOfProtocols: | 2 | +instances +| each Arg | getName: | each Arg | getCanonicalType: | each Arg | getInterfaceType: | each Arg | +| each T | getName: | each T | getCanonicalType: | each T | getInterfaceType: | each T | +getSuperclass +getProtocol +| each Arg | 0 | file://:0:0:0:0 | Copyable | +| each Arg | 1 | file://:0:0:0:0 | Escapable | +| each T | 0 | file://:0:0:0:0 | Copyable | +| each T | 1 | file://:0:0:0:0 | Escapable | diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType.ql b/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType.ql index 4f98b8a7e4e0..e66b73e0f774 100644 --- a/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType.ql +++ b/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType.ql @@ -2,16 +2,24 @@ import codeql.swift.elements import TestUtils -from - PackArchetypeType x, string getName, Type getCanonicalType, Type getInterfaceType, - string hasSuperclass, int getNumberOfProtocols -where +query predicate instances( + PackArchetypeType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getInterfaceType__label, Type getInterfaceType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and - getInterfaceType = x.getInterfaceType() and - (if x.hasSuperclass() then hasSuperclass = "yes" else hasSuperclass = "no") and - getNumberOfProtocols = x.getNumberOfProtocols() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getInterfaceType:", - getInterfaceType, "hasSuperclass:", hasSuperclass, "getNumberOfProtocols:", getNumberOfProtocols + getInterfaceType__label = "getInterfaceType:" and + getInterfaceType = x.getInterfaceType() +} + +query predicate getSuperclass(PackArchetypeType x, Type getSuperclass) { + toBeTested(x) and not x.isUnknown() and getSuperclass = x.getSuperclass() +} + +query predicate getProtocol(PackArchetypeType x, int index, ProtocolDecl getProtocol) { + toBeTested(x) and not x.isUnknown() and getProtocol = x.getProtocol(index) +} diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType_getProtocol.expected b/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType_getProtocol.expected deleted file mode 100644 index 7ba05a259c88..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType_getProtocol.expected +++ /dev/null @@ -1,4 +0,0 @@ -| each Arg | 0 | file://:0:0:0:0 | Copyable | -| each Arg | 1 | file://:0:0:0:0 | Escapable | -| each T | 0 | file://:0:0:0:0 | Copyable | -| each T | 1 | file://:0:0:0:0 | Escapable | diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType_getProtocol.ql b/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType_getProtocol.ql deleted file mode 100644 index 653fe7b7371e..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType_getProtocol.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from PackArchetypeType x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getProtocol(index) diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType_getSuperclass.expected b/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType_getSuperclass.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType_getSuperclass.ql b/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType_getSuperclass.ql deleted file mode 100644 index b22b1750eb40..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/PackType/PackArchetypeType_getSuperclass.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from PackArchetypeType x -where toBeTested(x) and not x.isUnknown() -select x, x.getSuperclass() diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/PackElementType.ql b/swift/ql/test/extractor-tests/generated/type/PackType/PackElementType.ql index af95548518af..2a8864b3a723 100644 --- a/swift/ql/test/extractor-tests/generated/type/PackType/PackElementType.ql +++ b/swift/ql/test/extractor-tests/generated/type/PackType/PackElementType.ql @@ -2,11 +2,16 @@ import codeql.swift.elements import TestUtils -from PackElementType x, string getName, Type getCanonicalType, Type getPackType -where +query predicate instances( + PackElementType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getPackType__label, Type getPackType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and + getPackType__label = "getPackType:" and getPackType = x.getPackType() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getPackType:", getPackType +} diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/PackExpansionType.ql b/swift/ql/test/extractor-tests/generated/type/PackType/PackExpansionType.ql index d429b165a6c3..886238890544 100644 --- a/swift/ql/test/extractor-tests/generated/type/PackType/PackExpansionType.ql +++ b/swift/ql/test/extractor-tests/generated/type/PackType/PackExpansionType.ql @@ -2,14 +2,19 @@ import codeql.swift.elements import TestUtils -from - PackExpansionType x, string getName, Type getCanonicalType, Type getPatternType, Type getCountType -where +query predicate instances( + PackExpansionType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getPatternType__label, Type getPatternType, + string getCountType__label, Type getCountType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and + getPatternType__label = "getPatternType:" and getPatternType = x.getPatternType() and + getCountType__label = "getCountType:" and getCountType = x.getCountType() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getPatternType:", - getPatternType, "getCountType:", getCountType +} diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/PackType.expected b/swift/ql/test/extractor-tests/generated/type/PackType/PackType.expected index d9c928366b25..96fc0c165bb8 100644 --- a/swift/ql/test/extractor-tests/generated/type/PackType/PackType.expected +++ b/swift/ql/test/extractor-tests/generated/type/PackType/PackType.expected @@ -1 +1,5 @@ -| Pack{String, Int} | getName: | Pack{String, Int} | getCanonicalType: | Pack{String, Int} | getNumberOfElements: | 2 | +instances +| Pack{String, Int} | getName: | Pack{String, Int} | getCanonicalType: | Pack{String, Int} | +getElement +| Pack{String, Int} | 0 | String | +| Pack{String, Int} | 1 | Int | diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/PackType.ql b/swift/ql/test/extractor-tests/generated/type/PackType/PackType.ql index 1843314a0524..bbdd989ed594 100644 --- a/swift/ql/test/extractor-tests/generated/type/PackType/PackType.ql +++ b/swift/ql/test/extractor-tests/generated/type/PackType/PackType.ql @@ -2,12 +2,18 @@ import codeql.swift.elements import TestUtils -from PackType x, string getName, Type getCanonicalType, int getNumberOfElements -where +query predicate instances( + PackType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and - getCanonicalType = x.getCanonicalType() and - getNumberOfElements = x.getNumberOfElements() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getNumberOfElements:", - getNumberOfElements + getCanonicalType__label = "getCanonicalType:" and + getCanonicalType = x.getCanonicalType() +} + +query predicate getElement(PackType x, int index, Type getElement) { + toBeTested(x) and not x.isUnknown() and getElement = x.getElement(index) +} diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/PackType_getElement.expected b/swift/ql/test/extractor-tests/generated/type/PackType/PackType_getElement.expected deleted file mode 100644 index bf46cc6a812e..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/PackType/PackType_getElement.expected +++ /dev/null @@ -1,2 +0,0 @@ -| Pack{String, Int} | 0 | String | -| Pack{String, Int} | 1 | Int | diff --git a/swift/ql/test/extractor-tests/generated/type/PackType/PackType_getElement.ql b/swift/ql/test/extractor-tests/generated/type/PackType/PackType_getElement.ql deleted file mode 100644 index efd27f799012..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/PackType/PackType_getElement.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from PackType x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getElement(index) diff --git a/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType.expected b/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType.expected index 309665f809f6..71292b2a41d6 100644 --- a/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType.expected +++ b/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType.expected @@ -1,17 +1,37 @@ -| P | getName: | P | getCanonicalType: | P | getBase: | P | getNumberOfArgs: | 2 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | -| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | getNumberOfArgs: | 1 | +instances +| P | getName: | P | getCanonicalType: | P | getBase: | P | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +| RawRepresentable | getName: | RawRepresentable | getCanonicalType: | RawRepresentable | getBase: | RawRepresentable | +getArg +| P | 0 | Int | +| P | 1 | String | +| RawRepresentable | 0 | Bool | +| RawRepresentable | 0 | Double | +| RawRepresentable | 0 | Float | +| RawRepresentable | 0 | Int8 | +| RawRepresentable | 0 | Int16 | +| RawRepresentable | 0 | Int32 | +| RawRepresentable | 0 | Int64 | +| RawRepresentable | 0 | Int128 | +| RawRepresentable | 0 | Int | +| RawRepresentable | 0 | String | +| RawRepresentable | 0 | UInt8 | +| RawRepresentable | 0 | UInt16 | +| RawRepresentable | 0 | UInt32 | +| RawRepresentable | 0 | UInt64 | +| RawRepresentable | 0 | UInt128 | +| RawRepresentable | 0 | UInt | diff --git a/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType.ql b/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType.ql index f01ab88af8ee..839b1aa9c92d 100644 --- a/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType.ql +++ b/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType.ql @@ -2,15 +2,20 @@ import codeql.swift.elements import TestUtils -from - ParameterizedProtocolType x, string getName, Type getCanonicalType, ProtocolType getBase, - int getNumberOfArgs -where +query predicate instances( + ParameterizedProtocolType x, string getName__label, string getName, + string getCanonicalType__label, Type getCanonicalType, string getBase__label, ProtocolType getBase +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and - getBase = x.getBase() and - getNumberOfArgs = x.getNumberOfArgs() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getBase:", getBase, - "getNumberOfArgs:", getNumberOfArgs + getBase__label = "getBase:" and + getBase = x.getBase() +} + +query predicate getArg(ParameterizedProtocolType x, int index, Type getArg) { + toBeTested(x) and not x.isUnknown() and getArg = x.getArg(index) +} diff --git a/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType_getArg.expected b/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType_getArg.expected deleted file mode 100644 index 2762281ade28..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType_getArg.expected +++ /dev/null @@ -1,18 +0,0 @@ -| P | 0 | Int | -| P | 1 | String | -| RawRepresentable | 0 | Bool | -| RawRepresentable | 0 | Double | -| RawRepresentable | 0 | Float | -| RawRepresentable | 0 | Int8 | -| RawRepresentable | 0 | Int16 | -| RawRepresentable | 0 | Int32 | -| RawRepresentable | 0 | Int64 | -| RawRepresentable | 0 | Int128 | -| RawRepresentable | 0 | Int | -| RawRepresentable | 0 | String | -| RawRepresentable | 0 | UInt8 | -| RawRepresentable | 0 | UInt16 | -| RawRepresentable | 0 | UInt32 | -| RawRepresentable | 0 | UInt64 | -| RawRepresentable | 0 | UInt128 | -| RawRepresentable | 0 | UInt | diff --git a/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType_getArg.ql b/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType_getArg.ql deleted file mode 100644 index 7ec2d6a6ca60..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/ParameterizedProtocolType/ParameterizedProtocolType_getArg.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ParameterizedProtocolType x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getArg(index) diff --git a/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType.expected b/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType.expected index 2ea99b1e2277..6874035ae54a 100644 --- a/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType.expected +++ b/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType.expected @@ -1,8 +1,23 @@ -| Base | getName: | Base | getCanonicalType: | Base | getInterfaceType: | Base | hasSuperclass: | no | getNumberOfProtocols: | 1 | -| Base | getName: | Base | getCanonicalType: | Base | getInterfaceType: | Base | hasSuperclass: | no | getNumberOfProtocols: | 1 | -| Base | getName: | Base | getCanonicalType: | Base | getInterfaceType: | Base | hasSuperclass: | yes | getNumberOfProtocols: | 0 | -| Base | getName: | Base | getCanonicalType: | Base | getInterfaceType: | Base | hasSuperclass: | yes | getNumberOfProtocols: | 0 | -| Param | getName: | Param | getCanonicalType: | Param | getInterfaceType: | Param | hasSuperclass: | no | getNumberOfProtocols: | 2 | -| ParamWithProtocols | getName: | ParamWithProtocols | getCanonicalType: | ParamWithProtocols | getInterfaceType: | ParamWithProtocols | hasSuperclass: | no | getNumberOfProtocols: | 2 | -| ParamWithSuperclass | getName: | ParamWithSuperclass | getCanonicalType: | ParamWithSuperclass | getInterfaceType: | ParamWithSuperclass | hasSuperclass: | yes | getNumberOfProtocols: | 0 | -| ParamWithSuperclassAndProtocols | getName: | ParamWithSuperclassAndProtocols | getCanonicalType: | ParamWithSuperclassAndProtocols | getInterfaceType: | ParamWithSuperclassAndProtocols | hasSuperclass: | yes | getNumberOfProtocols: | 2 | +instances +| Base | getName: | Base | getCanonicalType: | Base | getInterfaceType: | Base | +| Base | getName: | Base | getCanonicalType: | Base | getInterfaceType: | Base | +| Base | getName: | Base | getCanonicalType: | Base | getInterfaceType: | Base | +| Base | getName: | Base | getCanonicalType: | Base | getInterfaceType: | Base | +| Param | getName: | Param | getCanonicalType: | Param | getInterfaceType: | Param | +| ParamWithProtocols | getName: | ParamWithProtocols | getCanonicalType: | ParamWithProtocols | getInterfaceType: | ParamWithProtocols | +| ParamWithSuperclass | getName: | ParamWithSuperclass | getCanonicalType: | ParamWithSuperclass | getInterfaceType: | ParamWithSuperclass | +| ParamWithSuperclassAndProtocols | getName: | ParamWithSuperclassAndProtocols | getCanonicalType: | ParamWithSuperclassAndProtocols | getInterfaceType: | ParamWithSuperclassAndProtocols | +getSuperclass +| Base | S | +| Base | S2 | +| ParamWithSuperclass | S | +| ParamWithSuperclassAndProtocols | S | +getProtocol +| Base | 0 | primary_archetypes.swift:4:1:4:13 | P | +| Base | 0 | primary_archetypes.swift:5:1:5:14 | P2 | +| Param | 0 | file://:0:0:0:0 | Copyable | +| Param | 1 | file://:0:0:0:0 | Escapable | +| ParamWithProtocols | 0 | file://:0:0:0:0 | Equatable | +| ParamWithProtocols | 1 | primary_archetypes.swift:4:1:4:13 | P | +| ParamWithSuperclassAndProtocols | 0 | file://:0:0:0:0 | Equatable | +| ParamWithSuperclassAndProtocols | 1 | primary_archetypes.swift:4:1:4:13 | P | diff --git a/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType.ql b/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType.ql index 009b17a3eb51..4d9ff951f791 100644 --- a/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType.ql +++ b/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType.ql @@ -2,16 +2,24 @@ import codeql.swift.elements import TestUtils -from - PrimaryArchetypeType x, string getName, Type getCanonicalType, Type getInterfaceType, - string hasSuperclass, int getNumberOfProtocols -where +query predicate instances( + PrimaryArchetypeType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getInterfaceType__label, Type getInterfaceType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and - getInterfaceType = x.getInterfaceType() and - (if x.hasSuperclass() then hasSuperclass = "yes" else hasSuperclass = "no") and - getNumberOfProtocols = x.getNumberOfProtocols() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getInterfaceType:", - getInterfaceType, "hasSuperclass:", hasSuperclass, "getNumberOfProtocols:", getNumberOfProtocols + getInterfaceType__label = "getInterfaceType:" and + getInterfaceType = x.getInterfaceType() +} + +query predicate getSuperclass(PrimaryArchetypeType x, Type getSuperclass) { + toBeTested(x) and not x.isUnknown() and getSuperclass = x.getSuperclass() +} + +query predicate getProtocol(PrimaryArchetypeType x, int index, ProtocolDecl getProtocol) { + toBeTested(x) and not x.isUnknown() and getProtocol = x.getProtocol(index) +} diff --git a/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getProtocol.expected b/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getProtocol.expected deleted file mode 100644 index 3c0810fd7c27..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getProtocol.expected +++ /dev/null @@ -1,8 +0,0 @@ -| Base | 0 | primary_archetypes.swift:4:1:4:13 | P | -| Base | 0 | primary_archetypes.swift:5:1:5:14 | P2 | -| Param | 0 | file://:0:0:0:0 | Copyable | -| Param | 1 | file://:0:0:0:0 | Escapable | -| ParamWithProtocols | 0 | file://:0:0:0:0 | Equatable | -| ParamWithProtocols | 1 | primary_archetypes.swift:4:1:4:13 | P | -| ParamWithSuperclassAndProtocols | 0 | file://:0:0:0:0 | Equatable | -| ParamWithSuperclassAndProtocols | 1 | primary_archetypes.swift:4:1:4:13 | P | diff --git a/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getProtocol.ql b/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getProtocol.ql deleted file mode 100644 index 1f3a116e24f0..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getProtocol.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from PrimaryArchetypeType x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getProtocol(index) diff --git a/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getSuperclass.expected b/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getSuperclass.expected deleted file mode 100644 index 35f9793baaad..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getSuperclass.expected +++ /dev/null @@ -1,4 +0,0 @@ -| Base | S | -| Base | S2 | -| ParamWithSuperclass | S | -| ParamWithSuperclassAndProtocols | S | diff --git a/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getSuperclass.ql b/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getSuperclass.ql deleted file mode 100644 index 821aea038298..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/PrimaryArchetypeType_getSuperclass.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from PrimaryArchetypeType x -where toBeTested(x) and not x.isUnknown() -select x, x.getSuperclass() diff --git a/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType.expected b/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType.expected index f8278a6bae96..869e4caeb26d 100644 --- a/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType.expected +++ b/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType.expected @@ -1,3 +1,12 @@ -| P1 & P2 & P3 | getName: | P1 & P2 & P3 | getCanonicalType: | P1 & P2 & P3 | getNumberOfMembers: | 3 | -| P1 & P23 | getName: | P1 & P23 | getCanonicalType: | P1 & P2 & P3 | getNumberOfMembers: | 2 | -| P2 & P4 | getName: | P2 & P4 | getCanonicalType: | P2 & P4 | getNumberOfMembers: | 2 | +instances +| P1 & P2 & P3 | getName: | P1 & P2 & P3 | getCanonicalType: | P1 & P2 & P3 | +| P1 & P23 | getName: | P1 & P23 | getCanonicalType: | P1 & P2 & P3 | +| P2 & P4 | getName: | P2 & P4 | getCanonicalType: | P2 & P4 | +getMember +| P1 & P2 & P3 | 0 | P1 | +| P1 & P2 & P3 | 1 | P2 | +| P1 & P2 & P3 | 2 | P3 | +| P1 & P23 | 0 | P1 | +| P1 & P23 | 1 | P23 | +| P2 & P4 | 0 | P2 | +| P2 & P4 | 1 | P4 | diff --git a/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType.ql b/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType.ql index c681ba747890..6e27ea1d9a14 100644 --- a/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType.ql +++ b/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType.ql @@ -2,12 +2,18 @@ import codeql.swift.elements import TestUtils -from ProtocolCompositionType x, string getName, Type getCanonicalType, int getNumberOfMembers -where +query predicate instances( + ProtocolCompositionType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and - getCanonicalType = x.getCanonicalType() and - getNumberOfMembers = x.getNumberOfMembers() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getNumberOfMembers:", - getNumberOfMembers + getCanonicalType__label = "getCanonicalType:" and + getCanonicalType = x.getCanonicalType() +} + +query predicate getMember(ProtocolCompositionType x, int index, Type getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} diff --git a/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType_getMember.expected b/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType_getMember.expected deleted file mode 100644 index 40aa86c2da19..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType_getMember.expected +++ /dev/null @@ -1,7 +0,0 @@ -| P1 & P2 & P3 | 0 | P1 | -| P1 & P2 & P3 | 1 | P2 | -| P1 & P2 & P3 | 2 | P3 | -| P1 & P23 | 0 | P1 | -| P1 & P23 | 1 | P23 | -| P2 & P4 | 0 | P2 | -| P2 & P4 | 1 | P4 | diff --git a/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType_getMember.ql b/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType_getMember.ql deleted file mode 100644 index 5eb99395660a..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/ProtocolCompositionType_getMember.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from ProtocolCompositionType x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getMember(index) diff --git a/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType.expected b/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType.expected index 9649b1f618e8..1e2b58f226d7 100644 --- a/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType.expected +++ b/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType.expected @@ -1,6 +1,29 @@ -| (Builtin.IntLiteral, Builtin.IntLiteral) | getName: | (IntLiteral, IntLiteral) | getCanonicalType: | (Builtin.IntLiteral, Builtin.IntLiteral) | getNumberOfTypes: | 2 | -| (Builtin.IntLiteral, Builtin.IntLiteral) | getName: | (IntLiteral, IntLiteral) | getCanonicalType: | (Builtin.IntLiteral, Builtin.IntLiteral) | getNumberOfTypes: | 2 | -| (Int, Int, Int, Int, Int) | getName: | (Int, Int, Int, Int, Int) | getCanonicalType: | (Int, Int, Int, Int, Int) | getNumberOfTypes: | 5 | -| (Int, String, Double) | getName: | (Int, String, Double) | getCanonicalType: | (Int, String, Double) | getNumberOfTypes: | 3 | -| (Int, s: String, Double) | getName: | (Int, s: String, Double) | getCanonicalType: | (Int, s: String, Double) | getNumberOfTypes: | 3 | -| (x: Int, y: Int) | getName: | (x: Int, y: Int) | getCanonicalType: | (x: Int, y: Int) | getNumberOfTypes: | 2 | +instances +| (Builtin.IntLiteral, Builtin.IntLiteral) | getName: | (IntLiteral, IntLiteral) | getCanonicalType: | (Builtin.IntLiteral, Builtin.IntLiteral) | +| (Builtin.IntLiteral, Builtin.IntLiteral) | getName: | (IntLiteral, IntLiteral) | getCanonicalType: | (Builtin.IntLiteral, Builtin.IntLiteral) | +| (Int, Int, Int, Int, Int) | getName: | (Int, Int, Int, Int, Int) | getCanonicalType: | (Int, Int, Int, Int, Int) | +| (Int, String, Double) | getName: | (Int, String, Double) | getCanonicalType: | (Int, String, Double) | +| (Int, s: String, Double) | getName: | (Int, s: String, Double) | getCanonicalType: | (Int, s: String, Double) | +| (x: Int, y: Int) | getName: | (x: Int, y: Int) | getCanonicalType: | (x: Int, y: Int) | +getType +| (Builtin.IntLiteral, Builtin.IntLiteral) | 0 | Builtin.IntLiteral | +| (Builtin.IntLiteral, Builtin.IntLiteral) | 0 | Builtin.IntLiteral | +| (Builtin.IntLiteral, Builtin.IntLiteral) | 1 | Builtin.IntLiteral | +| (Builtin.IntLiteral, Builtin.IntLiteral) | 1 | Builtin.IntLiteral | +| (Int, Int, Int, Int, Int) | 0 | Int | +| (Int, Int, Int, Int, Int) | 1 | Int | +| (Int, Int, Int, Int, Int) | 2 | Int | +| (Int, Int, Int, Int, Int) | 3 | Int | +| (Int, Int, Int, Int, Int) | 4 | Int | +| (Int, String, Double) | 0 | Int | +| (Int, String, Double) | 1 | String | +| (Int, String, Double) | 2 | Double | +| (Int, s: String, Double) | 0 | Int | +| (Int, s: String, Double) | 1 | String | +| (Int, s: String, Double) | 2 | Double | +| (x: Int, y: Int) | 0 | Int | +| (x: Int, y: Int) | 1 | Int | +getName +| (Int, s: String, Double) | 1 | s | +| (x: Int, y: Int) | 0 | x | +| (x: Int, y: Int) | 1 | y | diff --git a/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType.ql b/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType.ql index a14cf6786ccb..9d301e217a4a 100644 --- a/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType.ql +++ b/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType.ql @@ -2,12 +2,22 @@ import codeql.swift.elements import TestUtils -from TupleType x, string getName, Type getCanonicalType, int getNumberOfTypes -where +query predicate instances( + TupleType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and - getCanonicalType = x.getCanonicalType() and - getNumberOfTypes = x.getNumberOfTypes() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getNumberOfTypes:", - getNumberOfTypes + getCanonicalType__label = "getCanonicalType:" and + getCanonicalType = x.getCanonicalType() +} + +query predicate getType(TupleType x, int index, Type getType) { + toBeTested(x) and not x.isUnknown() and getType = x.getType(index) +} + +query predicate getName(TupleType x, int index, string getName) { + toBeTested(x) and not x.isUnknown() and getName = x.getName(index) +} diff --git a/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType_getName.expected b/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType_getName.expected deleted file mode 100644 index 327e8795d7fd..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType_getName.expected +++ /dev/null @@ -1,3 +0,0 @@ -| (Int, s: String, Double) | 1 | s | -| (x: Int, y: Int) | 0 | x | -| (x: Int, y: Int) | 1 | y | diff --git a/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType_getName.ql b/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType_getName.ql deleted file mode 100644 index f71ab6709d65..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType_getName.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from TupleType x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getName(index) diff --git a/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType_getType.expected b/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType_getType.expected deleted file mode 100644 index 926411dedfa6..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType_getType.expected +++ /dev/null @@ -1,17 +0,0 @@ -| (Builtin.IntLiteral, Builtin.IntLiteral) | 0 | Builtin.IntLiteral | -| (Builtin.IntLiteral, Builtin.IntLiteral) | 0 | Builtin.IntLiteral | -| (Builtin.IntLiteral, Builtin.IntLiteral) | 1 | Builtin.IntLiteral | -| (Builtin.IntLiteral, Builtin.IntLiteral) | 1 | Builtin.IntLiteral | -| (Int, Int, Int, Int, Int) | 0 | Int | -| (Int, Int, Int, Int, Int) | 1 | Int | -| (Int, Int, Int, Int, Int) | 2 | Int | -| (Int, Int, Int, Int, Int) | 3 | Int | -| (Int, Int, Int, Int, Int) | 4 | Int | -| (Int, String, Double) | 0 | Int | -| (Int, String, Double) | 1 | String | -| (Int, String, Double) | 2 | Double | -| (Int, s: String, Double) | 0 | Int | -| (Int, s: String, Double) | 1 | String | -| (Int, s: String, Double) | 2 | Double | -| (x: Int, y: Int) | 0 | Int | -| (x: Int, y: Int) | 1 | Int | diff --git a/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType_getType.ql b/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType_getType.ql deleted file mode 100644 index 431aefc42f16..000000000000 --- a/swift/ql/test/extractor-tests/generated/type/TupleType/TupleType_getType.ql +++ /dev/null @@ -1,7 +0,0 @@ -// generated by codegen/codegen.py, do not edit -import codeql.swift.elements -import TestUtils - -from TupleType x, int index -where toBeTested(x) and not x.isUnknown() -select x, index, x.getType(index) diff --git a/swift/ql/test/extractor-tests/generated/type/UnmanagedStorageType/UnmanagedStorageType.ql b/swift/ql/test/extractor-tests/generated/type/UnmanagedStorageType/UnmanagedStorageType.ql index a69efd504925..b10012dfad6e 100644 --- a/swift/ql/test/extractor-tests/generated/type/UnmanagedStorageType/UnmanagedStorageType.ql +++ b/swift/ql/test/extractor-tests/generated/type/UnmanagedStorageType/UnmanagedStorageType.ql @@ -2,12 +2,16 @@ import codeql.swift.elements import TestUtils -from UnmanagedStorageType x, string getName, Type getCanonicalType, Type getReferentType -where +query predicate instances( + UnmanagedStorageType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getReferentType__label, Type getReferentType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and + getReferentType__label = "getReferentType:" and getReferentType = x.getReferentType() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getReferentType:", - getReferentType +} diff --git a/swift/ql/test/extractor-tests/generated/type/UnownedStorageType/UnownedStorageType.ql b/swift/ql/test/extractor-tests/generated/type/UnownedStorageType/UnownedStorageType.ql index b08407203f7b..e0370d0b948f 100644 --- a/swift/ql/test/extractor-tests/generated/type/UnownedStorageType/UnownedStorageType.ql +++ b/swift/ql/test/extractor-tests/generated/type/UnownedStorageType/UnownedStorageType.ql @@ -2,12 +2,16 @@ import codeql.swift.elements import TestUtils -from UnownedStorageType x, string getName, Type getCanonicalType, Type getReferentType -where +query predicate instances( + UnownedStorageType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getReferentType__label, Type getReferentType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and + getReferentType__label = "getReferentType:" and getReferentType = x.getReferentType() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getReferentType:", - getReferentType +} diff --git a/swift/ql/test/extractor-tests/generated/type/VariadicSequenceType/VariadicSequenceType.ql b/swift/ql/test/extractor-tests/generated/type/VariadicSequenceType/VariadicSequenceType.ql index d87743fc4f41..d90026250310 100644 --- a/swift/ql/test/extractor-tests/generated/type/VariadicSequenceType/VariadicSequenceType.ql +++ b/swift/ql/test/extractor-tests/generated/type/VariadicSequenceType/VariadicSequenceType.ql @@ -2,11 +2,16 @@ import codeql.swift.elements import TestUtils -from VariadicSequenceType x, string getName, Type getCanonicalType, Type getBaseType -where +query predicate instances( + VariadicSequenceType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getBaseType__label, Type getBaseType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and + getBaseType__label = "getBaseType:" and getBaseType = x.getBaseType() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getBaseType:", getBaseType +} diff --git a/swift/ql/test/extractor-tests/generated/type/WeakStorageType/WeakStorageType.ql b/swift/ql/test/extractor-tests/generated/type/WeakStorageType/WeakStorageType.ql index 8cbe22fd154a..fe1c2537fbc4 100644 --- a/swift/ql/test/extractor-tests/generated/type/WeakStorageType/WeakStorageType.ql +++ b/swift/ql/test/extractor-tests/generated/type/WeakStorageType/WeakStorageType.ql @@ -2,12 +2,16 @@ import codeql.swift.elements import TestUtils -from WeakStorageType x, string getName, Type getCanonicalType, Type getReferentType -where +query predicate instances( + WeakStorageType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getReferentType__label, Type getReferentType +) { toBeTested(x) and not x.isUnknown() and + getName__label = "getName:" and getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and getCanonicalType = x.getCanonicalType() and + getReferentType__label = "getReferentType:" and getReferentType = x.getReferentType() -select x, "getName:", getName, "getCanonicalType:", getCanonicalType, "getReferentType:", - getReferentType +} diff --git a/swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.expected b/swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.expected index e69de29bb2d1..c6be4599c2ae 100644 --- a/swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.expected +++ b/swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.expected @@ -0,0 +1,415 @@ +#select +| file://:0:0:0:0 | [post] self | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | file://:0:0:0:0 | [post] self | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| file://:0:0:0:0 | [post] self | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | file://:0:0:0:0 | [post] self | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:295:24:295:24 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:295:24:295:24 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:298:30:298:30 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:298:30:298:30 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:299:22:299:22 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:299:22:299:22 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:300:34:300:34 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:300:34:300:34 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:301:26:301:26 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:301:26:301:26 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:304:40:304:40 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:304:40:304:40 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:305:44:305:44 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:305:44:305:44 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:306:31:306:31 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:306:31:306:31 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:307:35:307:35 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:307:35:307:35 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:308:44:308:44 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:308:44:308:44 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:309:33:309:33 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:309:33:309:33 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:310:28:310:28 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:310:28:310:28 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:311:40:311:40 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:311:40:311:40 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:312:35:312:35 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:312:35:312:35 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:313:23:313:23 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:313:23:313:23 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:314:27:314:27 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:314:27:314:27 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:315:22:315:22 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:315:22:315:22 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:316:30:316:30 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:316:30:316:30 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:317:51:317:51 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:317:51:317:51 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:318:24:318:24 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:318:24:318:24 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:319:45:319:45 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:319:45:319:45 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:320:21:320:21 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:320:21:320:21 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:321:34:321:34 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:321:34:321:34 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:322:25:322:25 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:322:25:322:25 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:323:37:323:37 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:323:37:323:37 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:324:21:324:21 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:324:21:324:21 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:325:34:325:34 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:325:34:325:34 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:326:25:326:25 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:326:25:326:25 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:327:37:327:37 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:327:37:327:37 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:328:31:328:31 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:328:31:328:31 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:329:60:329:60 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:329:60:329:60 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:330:35:330:35 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:330:35:330:35 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:331:60:331:60 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:331:60:331:60 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:332:21:332:21 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:332:21:332:21 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:333:34:333:34 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:333:34:333:34 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:334:25:334:25 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:334:25:334:25 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:335:37:335:37 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:335:37:335:37 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:336:50:336:50 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:336:50:336:50 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:337:35:337:35 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:337:35:337:35 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:338:35:338:35 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:338:35:338:35 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:339:41:339:41 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:339:41:339:41 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:340:33:340:33 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:340:33:340:33 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:341:38:341:38 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:341:38:341:38 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:342:51:342:51 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:342:51:342:51 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:343:43:343:43 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:343:43:343:43 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:344:34:344:34 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:344:34:344:34 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:346:50:346:50 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:346:50:346:50 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:347:42:347:42 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:347:42:347:42 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:348:40:348:40 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:348:40:348:40 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:349:43:349:43 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:349:43:349:43 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:350:60:350:60 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:350:60:350:60 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:351:50:351:50 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:351:50:351:50 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:352:50:352:50 | remoteNsUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:352:50:352:50 | remoteNsUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:353:76:353:76 | remoteNsUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:353:76:353:76 | remoteNsUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:356:41:356:41 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:356:41:356:41 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:357:41:357:41 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:357:41:357:41 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:358:41:358:41 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:358:41:358:41 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:360:43:360:43 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:360:43:360:43 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:361:43:361:43 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:361:43:361:43 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:362:26:362:26 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:362:26:362:26 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:363:30:363:30 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:363:30:363:30 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:365:59:365:59 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:365:59:365:59 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:366:46:366:46 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:366:46:366:46 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:367:42:367:42 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:367:42:367:42 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:368:48:368:84 | call to FilePath.init(stringLiteral:) | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:368:48:368:84 | call to FilePath.init(stringLiteral:) | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:369:44:369:80 | call to FilePath.init(stringLiteral:) | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:369:44:369:80 | call to FilePath.init(stringLiteral:) | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:370:25:370:25 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:370:25:370:25 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:371:26:371:26 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:371:26:371:26 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:375:28:375:28 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:375:28:375:28 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:377:32:377:32 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:377:32:377:32 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:379:33:379:33 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:379:33:379:33 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:381:40:381:40 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:381:40:381:40 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:383:38:383:38 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:383:38:383:38 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:385:38:385:38 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:385:38:385:38 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:387:38:387:38 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:387:38:387:38 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:389:38:389:38 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:389:38:389:38 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:395:35:395:35 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:395:35:395:35 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:397:40:397:40 | remoteUrl | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:397:40:397:40 | remoteUrl | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:401:2:401:2 | [post] config | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:401:2:401:2 | [post] config | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:403:2:403:2 | [post] config | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:403:2:403:2 | [post] config | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:414:22:414:22 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:414:22:414:22 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:416:24:416:24 | buffer2 | testPathInjection.swift:409:22:409:87 | call to Data.init(contentsOf:options:) | testPathInjection.swift:416:24:416:24 | buffer2 | This path depends on a $@. | testPathInjection.swift:409:22:409:87 | call to Data.init(contentsOf:options:) | user-provided value | +| testPathInjection.swift:418:25:418:25 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:418:25:418:25 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:427:49:427:49 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:427:49:427:49 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:429:25:429:25 | remoteString | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:429:25:429:25 | remoteString | This path depends on a $@. | testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:441:33:441:33 | remoteString | testPathInjection.swift:433:24:433:78 | call to String.init(contentsOf:) | testPathInjection.swift:441:33:441:33 | remoteString | This path depends on a $@. | testPathInjection.swift:433:24:433:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:450:28:450:66 | call to appendingPathComponent(_:) | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:450:28:450:66 | call to appendingPathComponent(_:) | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:451:28:451:93 | call to appendingPathComponent(_:) | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:451:28:451:93 | call to appendingPathComponent(_:) | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:453:28:453:28 | u1 | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:453:28:453:28 | u1 | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:455:28:455:28 | remoteString | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:455:28:455:28 | remoteString | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:456:28:456:28 | u2 | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:456:28:456:28 | u2 | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:461:24:461:63 | ...! | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:461:24:461:63 | ...! | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:464:24:464:38 | ...! | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:464:24:464:38 | ...! | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:465:24:465:53 | ...! | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:465:24:465:53 | ...! | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:467:32:467:32 | remoteString | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:467:32:467:32 | remoteString | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:468:38:468:38 | remoteString | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:468:38:468:38 | remoteString | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:469:45:469:45 | remoteString | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:469:45:469:45 | remoteString | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:473:32:473:35 | .pointee | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:473:32:473:35 | .pointee | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:482:32:482:36 | ...[...] | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:482:32:482:36 | ...[...] | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:484:35:484:35 | remoteString | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:484:35:484:35 | remoteString | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:485:41:485:41 | remoteString | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:485:41:485:41 | remoteString | This path depends on a $@. | testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:507:25:507:25 | remoteString | testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | testPathInjection.swift:507:25:507:25 | remoteString | This path depends on a $@. | testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:508:17:508:17 | remoteString | testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | testPathInjection.swift:508:17:508:17 | remoteString | This path depends on a $@. | testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:509:41:509:41 | remoteString | testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | testPathInjection.swift:509:41:509:41 | remoteString | This path depends on a $@. | testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:511:38:511:38 | remoteString | testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | testPathInjection.swift:511:38:511:38 | remoteString | This path depends on a $@. | testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | user-provided value | +| testPathInjection.swift:513:22:513:22 | remoteString | testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | testPathInjection.swift:513:22:513:22 | remoteString | This path depends on a $@. | testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | user-provided value | +edges +| file://:0:0:0:0 | [post] self [fileURL] | testPathInjection.swift:248:7:248:7 | self [Return] [fileURL] | provenance | | +| file://:0:0:0:0 | [post] self [seedFilePath] | testPathInjection.swift:249:13:249:13 | self [Return] [seedFilePath] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [fileURL] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [seedFilePath] | provenance | | +| testPathInjection.swift:248:7:248:7 | value | file://:0:0:0:0 | value | provenance | | +| testPathInjection.swift:249:13:249:13 | value | file://:0:0:0:0 | value | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:290:33:290:33 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:291:37:291:37 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:300:34:300:34 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:301:26:301:26 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:305:44:305:44 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:307:35:307:35 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:308:44:308:44 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:309:33:309:33 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:311:40:311:40 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:312:35:312:35 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:314:27:314:27 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:322:25:322:25 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:323:37:323:37 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:326:25:326:25 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:327:37:327:37 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:330:35:330:35 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:331:60:331:60 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:334:25:334:25 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:335:37:335:37 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:336:50:336:50 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:337:35:337:35 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:338:35:338:35 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:339:41:339:41 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:340:33:340:33 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:341:38:341:38 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:342:51:342:51 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:343:43:343:43 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:346:50:346:50 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:347:42:347:42 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:348:40:348:40 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:349:43:349:43 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:350:60:350:60 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:351:50:351:50 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:356:41:356:41 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:357:41:357:41 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:358:41:358:41 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:360:43:360:43 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:361:43:361:43 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:363:30:363:30 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:365:59:365:59 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:366:46:366:46 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:367:42:367:42 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:368:72:368:72 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:369:68:369:68 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:371:26:371:26 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:375:28:375:28 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:377:32:377:32 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:379:33:379:33 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:381:40:381:40 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:383:38:383:38 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:385:38:385:38 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:387:38:387:38 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:389:38:389:38 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:414:22:414:22 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:418:25:418:25 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:427:49:427:49 | remoteString | provenance | | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | testPathInjection.swift:429:25:429:25 | remoteString | provenance | | +| testPathInjection.swift:290:21:290:45 | call to URL.init(string:) [some:0] | testPathInjection.swift:290:21:290:46 | ...! | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:295:24:295:24 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:298:30:298:30 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:299:22:299:22 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:304:40:304:40 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:306:31:306:31 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:310:28:310:28 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:313:23:313:23 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:315:22:315:22 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:316:30:316:30 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:317:51:317:51 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:318:24:318:24 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:319:45:319:45 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:320:21:320:21 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:321:34:321:34 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:324:21:324:21 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:325:34:325:34 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:328:31:328:31 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:329:60:329:60 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:332:21:332:21 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:333:34:333:34 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:344:34:344:34 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:362:26:362:26 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:370:25:370:25 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:395:35:395:35 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:397:40:397:40 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:401:19:401:19 | remoteUrl | provenance | | +| testPathInjection.swift:290:21:290:46 | ...! | testPathInjection.swift:403:24:403:24 | remoteUrl | provenance | | +| testPathInjection.swift:290:33:290:33 | remoteString | testPathInjection.swift:290:21:290:45 | call to URL.init(string:) [some:0] | provenance | | +| testPathInjection.swift:291:23:291:49 | call to NSURL.init(string:) [some:0] | testPathInjection.swift:291:23:291:50 | ...! | provenance | | +| testPathInjection.swift:291:23:291:50 | ...! | testPathInjection.swift:352:50:352:50 | remoteNsUrl | provenance | | +| testPathInjection.swift:291:23:291:50 | ...! | testPathInjection.swift:353:76:353:76 | remoteNsUrl | provenance | | +| testPathInjection.swift:291:37:291:37 | remoteString | testPathInjection.swift:291:23:291:49 | call to NSURL.init(string:) [some:0] | provenance | | +| testPathInjection.swift:368:72:368:72 | remoteString | testPathInjection.swift:368:48:368:84 | call to FilePath.init(stringLiteral:) | provenance | | +| testPathInjection.swift:369:68:369:68 | remoteString | testPathInjection.swift:369:44:369:80 | call to FilePath.init(stringLiteral:) | provenance | | +| testPathInjection.swift:401:19:401:19 | remoteUrl | testPathInjection.swift:248:7:248:7 | value | provenance | | +| testPathInjection.swift:401:19:401:19 | remoteUrl | testPathInjection.swift:401:2:401:2 | [post] config | provenance | | +| testPathInjection.swift:403:24:403:24 | remoteUrl | testPathInjection.swift:249:13:249:13 | value | provenance | | +| testPathInjection.swift:403:24:403:24 | remoteUrl | testPathInjection.swift:403:2:403:2 | [post] config | provenance | | +| testPathInjection.swift:409:22:409:87 | call to Data.init(contentsOf:options:) | testPathInjection.swift:411:5:411:5 | remoteData | provenance | | +| testPathInjection.swift:411:5:411:5 | remoteData | testPathInjection.swift:411:30:411:30 | [post] buffer2 | provenance | | +| testPathInjection.swift:411:30:411:30 | [post] buffer2 | testPathInjection.swift:416:24:416:24 | buffer2 | provenance | | +| testPathInjection.swift:433:24:433:78 | call to String.init(contentsOf:) | testPathInjection.swift:441:33:441:33 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:450:54:450:54 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:451:54:451:54 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:452:28:452:28 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:455:28:455:28 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:455:28:455:28 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:461:50:461:50 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:463:28:463:28 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:467:32:467:32 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:468:38:468:38 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:469:45:469:45 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:472:18:472:18 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:480:9:480:9 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:484:35:484:35 | remoteString | provenance | | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | testPathInjection.swift:485:41:485:41 | remoteString | provenance | | +| testPathInjection.swift:450:54:450:54 | remoteString | testPathInjection.swift:450:28:450:66 | call to appendingPathComponent(_:) | provenance | | +| testPathInjection.swift:451:28:451:66 | call to appendingPathComponent(_:) | testPathInjection.swift:451:28:451:93 | call to appendingPathComponent(_:) | provenance | | +| testPathInjection.swift:451:54:451:54 | remoteString | testPathInjection.swift:451:28:451:66 | call to appendingPathComponent(_:) | provenance | | +| testPathInjection.swift:452:5:452:5 | [post] u1 | testPathInjection.swift:453:28:453:28 | u1 | provenance | | +| testPathInjection.swift:452:28:452:28 | remoteString | testPathInjection.swift:452:5:452:5 | [post] u1 | provenance | | +| testPathInjection.swift:455:14:455:40 | call to URL.init(filePath:directoryHint:relativeTo:) | testPathInjection.swift:456:28:456:28 | u2 | provenance | | +| testPathInjection.swift:455:28:455:28 | remoteString | testPathInjection.swift:455:14:455:40 | call to URL.init(filePath:directoryHint:relativeTo:) | provenance | | +| testPathInjection.swift:461:24:461:62 | call to appendingPathComponent(_:) | testPathInjection.swift:461:24:461:63 | ...! | provenance | | +| testPathInjection.swift:461:50:461:50 | remoteString | testPathInjection.swift:461:24:461:62 | call to appendingPathComponent(_:) | provenance | | +| testPathInjection.swift:463:14:463:40 | call to NSURL.init(string:) [some:0] | testPathInjection.swift:463:14:463:41 | ...! | provenance | | +| testPathInjection.swift:463:14:463:41 | ...! | testPathInjection.swift:464:24:464:38 | ...! | provenance | | +| testPathInjection.swift:463:14:463:41 | ...! | testPathInjection.swift:465:24:465:24 | u4 | provenance | | +| testPathInjection.swift:463:28:463:28 | remoteString | testPathInjection.swift:463:14:463:40 | call to NSURL.init(string:) [some:0] | provenance | | +| testPathInjection.swift:465:24:465:24 | u4 | testPathInjection.swift:465:24:465:52 | call to appendingPathComponent(_:) | provenance | | +| testPathInjection.swift:465:24:465:52 | call to appendingPathComponent(_:) | testPathInjection.swift:465:24:465:53 | ...! | provenance | | +| testPathInjection.swift:472:5:472:5 | [post] s1 [pointee] | testPathInjection.swift:473:32:473:32 | s1 [pointee] | provenance | | +| testPathInjection.swift:472:18:472:18 | remoteString | testPathInjection.swift:472:5:472:5 | [post] s1 [pointee] | provenance | | +| testPathInjection.swift:473:32:473:32 | s1 [pointee] | testPathInjection.swift:473:32:473:35 | .pointee | provenance | | +| testPathInjection.swift:480:9:480:9 | remoteString | testPathInjection.swift:480:41:480:41 | [post] s3 [Collection element] | provenance | | +| testPathInjection.swift:480:41:480:41 | [post] s3 [Collection element] | testPathInjection.swift:482:32:482:32 | s3 [Collection element] | provenance | | +| testPathInjection.swift:482:32:482:32 | s3 [Collection element] | testPathInjection.swift:482:32:482:36 | ...[...] | provenance | | +| testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | testPathInjection.swift:507:25:507:25 | remoteString | provenance | | +| testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | testPathInjection.swift:508:17:508:17 | remoteString | provenance | | +| testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | testPathInjection.swift:509:41:509:41 | remoteString | provenance | | +| testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | testPathInjection.swift:511:38:511:38 | remoteString | provenance | | +| testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | testPathInjection.swift:513:22:513:22 | remoteString | provenance | | +nodes +| file://:0:0:0:0 | [post] self | semmle.label | [post] self | +| file://:0:0:0:0 | [post] self | semmle.label | [post] self | +| file://:0:0:0:0 | [post] self [fileURL] | semmle.label | [post] self [fileURL] | +| file://:0:0:0:0 | [post] self [seedFilePath] | semmle.label | [post] self [seedFilePath] | +| file://:0:0:0:0 | value | semmle.label | value | +| file://:0:0:0:0 | value | semmle.label | value | +| testPathInjection.swift:248:7:248:7 | self [Return] [fileURL] | semmle.label | self [Return] [fileURL] | +| testPathInjection.swift:248:7:248:7 | value | semmle.label | value | +| testPathInjection.swift:249:13:249:13 | self [Return] [seedFilePath] | semmle.label | self [Return] [seedFilePath] | +| testPathInjection.swift:249:13:249:13 | value | semmle.label | value | +| testPathInjection.swift:289:24:289:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testPathInjection.swift:290:21:290:45 | call to URL.init(string:) [some:0] | semmle.label | call to URL.init(string:) [some:0] | +| testPathInjection.swift:290:21:290:46 | ...! | semmle.label | ...! | +| testPathInjection.swift:290:33:290:33 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:291:23:291:49 | call to NSURL.init(string:) [some:0] | semmle.label | call to NSURL.init(string:) [some:0] | +| testPathInjection.swift:291:23:291:50 | ...! | semmle.label | ...! | +| testPathInjection.swift:291:37:291:37 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:295:24:295:24 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:298:30:298:30 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:299:22:299:22 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:300:34:300:34 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:301:26:301:26 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:304:40:304:40 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:305:44:305:44 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:306:31:306:31 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:307:35:307:35 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:308:44:308:44 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:309:33:309:33 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:310:28:310:28 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:311:40:311:40 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:312:35:312:35 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:313:23:313:23 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:314:27:314:27 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:315:22:315:22 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:316:30:316:30 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:317:51:317:51 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:318:24:318:24 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:319:45:319:45 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:320:21:320:21 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:321:34:321:34 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:322:25:322:25 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:323:37:323:37 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:324:21:324:21 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:325:34:325:34 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:326:25:326:25 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:327:37:327:37 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:328:31:328:31 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:329:60:329:60 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:330:35:330:35 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:331:60:331:60 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:332:21:332:21 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:333:34:333:34 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:334:25:334:25 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:335:37:335:37 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:336:50:336:50 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:337:35:337:35 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:338:35:338:35 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:339:41:339:41 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:340:33:340:33 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:341:38:341:38 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:342:51:342:51 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:343:43:343:43 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:344:34:344:34 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:346:50:346:50 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:347:42:347:42 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:348:40:348:40 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:349:43:349:43 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:350:60:350:60 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:351:50:351:50 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:352:50:352:50 | remoteNsUrl | semmle.label | remoteNsUrl | +| testPathInjection.swift:353:76:353:76 | remoteNsUrl | semmle.label | remoteNsUrl | +| testPathInjection.swift:356:41:356:41 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:357:41:357:41 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:358:41:358:41 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:360:43:360:43 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:361:43:361:43 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:362:26:362:26 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:363:30:363:30 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:365:59:365:59 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:366:46:366:46 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:367:42:367:42 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:368:48:368:84 | call to FilePath.init(stringLiteral:) | semmle.label | call to FilePath.init(stringLiteral:) | +| testPathInjection.swift:368:72:368:72 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:369:44:369:80 | call to FilePath.init(stringLiteral:) | semmle.label | call to FilePath.init(stringLiteral:) | +| testPathInjection.swift:369:68:369:68 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:370:25:370:25 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:371:26:371:26 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:375:28:375:28 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:377:32:377:32 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:379:33:379:33 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:381:40:381:40 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:383:38:383:38 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:385:38:385:38 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:387:38:387:38 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:389:38:389:38 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:395:35:395:35 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:397:40:397:40 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:401:2:401:2 | [post] config | semmle.label | [post] config | +| testPathInjection.swift:401:19:401:19 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:403:2:403:2 | [post] config | semmle.label | [post] config | +| testPathInjection.swift:403:24:403:24 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:409:22:409:87 | call to Data.init(contentsOf:options:) | semmle.label | call to Data.init(contentsOf:options:) | +| testPathInjection.swift:411:5:411:5 | remoteData | semmle.label | remoteData | +| testPathInjection.swift:411:30:411:30 | [post] buffer2 | semmle.label | [post] buffer2 | +| testPathInjection.swift:414:22:414:22 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:416:24:416:24 | buffer2 | semmle.label | buffer2 | +| testPathInjection.swift:418:25:418:25 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:427:49:427:49 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:429:25:429:25 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:433:24:433:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testPathInjection.swift:441:33:441:33 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:445:24:445:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testPathInjection.swift:450:28:450:66 | call to appendingPathComponent(_:) | semmle.label | call to appendingPathComponent(_:) | +| testPathInjection.swift:450:54:450:54 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:451:28:451:66 | call to appendingPathComponent(_:) | semmle.label | call to appendingPathComponent(_:) | +| testPathInjection.swift:451:28:451:93 | call to appendingPathComponent(_:) | semmle.label | call to appendingPathComponent(_:) | +| testPathInjection.swift:451:54:451:54 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:452:5:452:5 | [post] u1 | semmle.label | [post] u1 | +| testPathInjection.swift:452:28:452:28 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:453:28:453:28 | u1 | semmle.label | u1 | +| testPathInjection.swift:455:14:455:40 | call to URL.init(filePath:directoryHint:relativeTo:) | semmle.label | call to URL.init(filePath:directoryHint:relativeTo:) | +| testPathInjection.swift:455:28:455:28 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:455:28:455:28 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:456:28:456:28 | u2 | semmle.label | u2 | +| testPathInjection.swift:461:24:461:62 | call to appendingPathComponent(_:) | semmle.label | call to appendingPathComponent(_:) | +| testPathInjection.swift:461:24:461:63 | ...! | semmle.label | ...! | +| testPathInjection.swift:461:50:461:50 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:463:14:463:40 | call to NSURL.init(string:) [some:0] | semmle.label | call to NSURL.init(string:) [some:0] | +| testPathInjection.swift:463:14:463:41 | ...! | semmle.label | ...! | +| testPathInjection.swift:463:28:463:28 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:464:24:464:38 | ...! | semmle.label | ...! | +| testPathInjection.swift:465:24:465:24 | u4 | semmle.label | u4 | +| testPathInjection.swift:465:24:465:52 | call to appendingPathComponent(_:) | semmle.label | call to appendingPathComponent(_:) | +| testPathInjection.swift:465:24:465:53 | ...! | semmle.label | ...! | +| testPathInjection.swift:467:32:467:32 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:468:38:468:38 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:469:45:469:45 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:472:5:472:5 | [post] s1 [pointee] | semmle.label | [post] s1 [pointee] | +| testPathInjection.swift:472:18:472:18 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:473:32:473:32 | s1 [pointee] | semmle.label | s1 [pointee] | +| testPathInjection.swift:473:32:473:35 | .pointee | semmle.label | .pointee | +| testPathInjection.swift:480:9:480:9 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:480:41:480:41 | [post] s3 [Collection element] | semmle.label | [post] s3 [Collection element] | +| testPathInjection.swift:482:32:482:32 | s3 [Collection element] | semmle.label | s3 [Collection element] | +| testPathInjection.swift:482:32:482:36 | ...[...] | semmle.label | ...[...] | +| testPathInjection.swift:484:35:484:35 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:485:41:485:41 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:505:24:505:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testPathInjection.swift:507:25:507:25 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:508:17:508:17 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:509:41:509:41 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:511:38:511:38 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:513:22:513:22 | remoteString | semmle.label | remoteString | +subpaths +| testPathInjection.swift:401:19:401:19 | remoteUrl | testPathInjection.swift:248:7:248:7 | value | testPathInjection.swift:248:7:248:7 | self [Return] [fileURL] | testPathInjection.swift:401:2:401:2 | [post] config | +| testPathInjection.swift:403:24:403:24 | remoteUrl | testPathInjection.swift:249:13:249:13 | value | testPathInjection.swift:249:13:249:13 | self [Return] [seedFilePath] | testPathInjection.swift:403:2:403:2 | [post] config | diff --git a/swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.ql b/swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.ql deleted file mode 100644 index a32f9c56ee90..000000000000 --- a/swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.ql +++ /dev/null @@ -1,22 +0,0 @@ -import swift -import codeql.swift.dataflow.DataFlow -import codeql.swift.dataflow.FlowSources -import codeql.swift.security.PathInjectionQuery -import utils.test.InlineExpectationsTest - -module PathInjectionTest implements TestSig { - string getARelevantTag() { result = "hasPathInjection" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - exists(DataFlow::Node source, DataFlow::Node sink | - PathInjectionFlow::flow(source, sink) and - location = sink.getLocation() and - element = sink.toString() and - tag = "hasPathInjection" and - location.getFile().getName() != "" and - value = source.asExpr().getLocation().getStartLine().toString() - ) - } -} - -import MakeTest diff --git a/swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.qlref b/swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.qlref new file mode 100644 index 000000000000..6269075fd961 --- /dev/null +++ b/swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.qlref @@ -0,0 +1,3 @@ +query: queries/Security/CWE-022/PathInjection.ql +postprocess: + - utils/test/InlineExpectationsTestQuery.ql diff --git a/swift/ql/test/query-tests/Security/CWE-022/PathInjection/testPathInjection.swift b/swift/ql/test/query-tests/Security/CWE-022/PathInjection/testPathInjection.swift index 2d9b6d88c393..c7c26085225d 100644 --- a/swift/ql/test/query-tests/Security/CWE-022/PathInjection/testPathInjection.swift +++ b/swift/ql/test/query-tests/Security/CWE-022/PathInjection/testPathInjection.swift @@ -286,151 +286,151 @@ class Connection { // --- tests --- func test(buffer1: UnsafeMutablePointer, buffer2: UnsafeMutablePointer) { - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source let remoteUrl = URL(string: remoteString)! let remoteNsUrl = NSURL(string: remoteString)! let safeUrl = URL(string: "")! let safeNsUrl = NSURL(string: "")! - Data("").write(to: remoteUrl, options: []) // $ hasPathInjection=289 + Data("").write(to: remoteUrl, options: []) // $ Alert let nsData = NSData() - let _ = nsData.write(to: remoteUrl, atomically: false) // $ hasPathInjection=289 - nsData.write(to: remoteUrl, options: []) // $ hasPathInjection=289 - let _ = nsData.write(toFile: remoteString, atomically: false) // $ hasPathInjection=289 - nsData.write(toFile: remoteString, options: []) // $ hasPathInjection=289 + let _ = nsData.write(to: remoteUrl, atomically: false) // $ Alert + nsData.write(to: remoteUrl, options: []) // $ Alert + let _ = nsData.write(toFile: remoteString, atomically: false) // $ Alert + nsData.write(toFile: remoteString, options: []) // $ Alert let fm = FileManager() - let _ = fm.contentsOfDirectory(at: remoteUrl, includingPropertiesForKeys: [], options: []) // $ hasPathInjection=289 - let _ = fm.contentsOfDirectory(atPath: remoteString) // $ hasPathInjection=289 - let _ = fm.enumerator(at: remoteUrl, includingPropertiesForKeys: [], options: [], errorHandler: nil) // $ hasPathInjection=289 - let _ = fm.enumerator(atPath: remoteString) // $ hasPathInjection=289 - let _ = fm.subpathsOfDirectory(atPath: remoteString) // $ hasPathInjection=289 - let _ = fm.subpaths(atPath: remoteString) // $ hasPathInjection=289 - fm.createDirectory(at: remoteUrl, withIntermediateDirectories: false, attributes: [:]) // $ hasPathInjection=289 - let _ = fm.createDirectory(atPath: remoteString, attributes: [:]) // $ hasPathInjection=289 - let _ = fm.createFile(atPath: remoteString, contents: nil, attributes: [:]) // $ hasPathInjection=289 - fm.removeItem(at: remoteUrl) // $ hasPathInjection=289 - fm.removeItem(atPath: remoteString) // $ hasPathInjection=289 - fm.trashItem(at: remoteUrl, resultingItemURL: AutoreleasingUnsafeMutablePointer()) // $ hasPathInjection=289 - let _ = fm.replaceItemAt(remoteUrl, withItemAt: safeUrl, backupItemName: nil, options: []) // $ hasPathInjection=289 - let _ = fm.replaceItemAt(safeUrl, withItemAt: remoteUrl, backupItemName: nil, options: []) // $ hasPathInjection=289 - fm.replaceItem(at: remoteUrl, withItemAt: safeUrl, backupItemName: nil, options: [], resultingItemURL: AutoreleasingUnsafeMutablePointer()) // $ hasPathInjection=289 - fm.replaceItem(at: safeUrl, withItemAt: remoteUrl, backupItemName: nil, options: [], resultingItemURL: AutoreleasingUnsafeMutablePointer()) // $ hasPathInjection=289 - fm.copyItem(at: remoteUrl, to: safeUrl) // $ hasPathInjection=289 - fm.copyItem(at: safeUrl, to: remoteUrl) // $ hasPathInjection=289 - fm.copyItem(atPath: remoteString, toPath: "") // $ hasPathInjection=289 - fm.copyItem(atPath: "", toPath: remoteString) // $ hasPathInjection=289 - fm.moveItem(at: remoteUrl, to: safeUrl) // $ hasPathInjection=289 - fm.moveItem(at: safeUrl, to: remoteUrl) // $ hasPathInjection=289 - fm.moveItem(atPath: remoteString, toPath: "") // $ hasPathInjection=289 - fm.moveItem(atPath: "", toPath: remoteString) // $ hasPathInjection=289 - fm.createSymbolicLink(at: remoteUrl, withDestinationURL: safeUrl) // $ hasPathInjection=289 - fm.createSymbolicLink(at: safeUrl, withDestinationURL: remoteUrl) // $ hasPathInjection=289 - fm.createSymbolicLink(atPath: remoteString, withDestinationPath: "") // $ hasPathInjection=289 - fm.createSymbolicLink(atPath: "", withDestinationPath: remoteString) // $ hasPathInjection=289 - fm.linkItem(at: remoteUrl, to: safeUrl) // $ hasPathInjection=289 - fm.linkItem(at: safeUrl, to: remoteUrl) // $ hasPathInjection=289 - fm.linkItem(atPath: remoteString, toPath: "") // $ hasPathInjection=289 - fm.linkItem(atPath: "", toPath: remoteString) // $ hasPathInjection=289 - let _ = fm.destinationOfSymbolicLink(atPath: remoteString) // $ hasPathInjection=289 - let _ = fm.fileExists(atPath: remoteString) // $ hasPathInjection=289 - let _ = fm.fileExists(atPath: remoteString, isDirectory: UnsafeMutablePointer.init(bitPattern: 0)) // $ hasPathInjection=289 - fm.setAttributes([:], ofItemAtPath: remoteString) // $ hasPathInjection=289 - let _ = fm.contents(atPath: remoteString) // $ hasPathInjection=289 - let _ = fm.contentsEqual(atPath: remoteString, andPath: "") // $ hasPathInjection=289 - let _ = fm.contentsEqual(atPath: "", andPath: remoteString) // $ hasPathInjection=289 - let _ = fm.changeCurrentDirectoryPath(remoteString) // $ hasPathInjection=289 - let _ = fm.unmountVolume(at: remoteUrl, options: [], completionHandler: { _ in }) // $ hasPathInjection=289 + let _ = fm.contentsOfDirectory(at: remoteUrl, includingPropertiesForKeys: [], options: []) // $ Alert + let _ = fm.contentsOfDirectory(atPath: remoteString) // $ Alert + let _ = fm.enumerator(at: remoteUrl, includingPropertiesForKeys: [], options: [], errorHandler: nil) // $ Alert + let _ = fm.enumerator(atPath: remoteString) // $ Alert + let _ = fm.subpathsOfDirectory(atPath: remoteString) // $ Alert + let _ = fm.subpaths(atPath: remoteString) // $ Alert + fm.createDirectory(at: remoteUrl, withIntermediateDirectories: false, attributes: [:]) // $ Alert + let _ = fm.createDirectory(atPath: remoteString, attributes: [:]) // $ Alert + let _ = fm.createFile(atPath: remoteString, contents: nil, attributes: [:]) // $ Alert + fm.removeItem(at: remoteUrl) // $ Alert + fm.removeItem(atPath: remoteString) // $ Alert + fm.trashItem(at: remoteUrl, resultingItemURL: AutoreleasingUnsafeMutablePointer()) // $ Alert + let _ = fm.replaceItemAt(remoteUrl, withItemAt: safeUrl, backupItemName: nil, options: []) // $ Alert + let _ = fm.replaceItemAt(safeUrl, withItemAt: remoteUrl, backupItemName: nil, options: []) // $ Alert + fm.replaceItem(at: remoteUrl, withItemAt: safeUrl, backupItemName: nil, options: [], resultingItemURL: AutoreleasingUnsafeMutablePointer()) // $ Alert + fm.replaceItem(at: safeUrl, withItemAt: remoteUrl, backupItemName: nil, options: [], resultingItemURL: AutoreleasingUnsafeMutablePointer()) // $ Alert + fm.copyItem(at: remoteUrl, to: safeUrl) // $ Alert + fm.copyItem(at: safeUrl, to: remoteUrl) // $ Alert + fm.copyItem(atPath: remoteString, toPath: "") // $ Alert + fm.copyItem(atPath: "", toPath: remoteString) // $ Alert + fm.moveItem(at: remoteUrl, to: safeUrl) // $ Alert + fm.moveItem(at: safeUrl, to: remoteUrl) // $ Alert + fm.moveItem(atPath: remoteString, toPath: "") // $ Alert + fm.moveItem(atPath: "", toPath: remoteString) // $ Alert + fm.createSymbolicLink(at: remoteUrl, withDestinationURL: safeUrl) // $ Alert + fm.createSymbolicLink(at: safeUrl, withDestinationURL: remoteUrl) // $ Alert + fm.createSymbolicLink(atPath: remoteString, withDestinationPath: "") // $ Alert + fm.createSymbolicLink(atPath: "", withDestinationPath: remoteString) // $ Alert + fm.linkItem(at: remoteUrl, to: safeUrl) // $ Alert + fm.linkItem(at: safeUrl, to: remoteUrl) // $ Alert + fm.linkItem(atPath: remoteString, toPath: "") // $ Alert + fm.linkItem(atPath: "", toPath: remoteString) // $ Alert + let _ = fm.destinationOfSymbolicLink(atPath: remoteString) // $ Alert + let _ = fm.fileExists(atPath: remoteString) // $ Alert + let _ = fm.fileExists(atPath: remoteString, isDirectory: UnsafeMutablePointer.init(bitPattern: 0)) // $ Alert + fm.setAttributes([:], ofItemAtPath: remoteString) // $ Alert + let _ = fm.contents(atPath: remoteString) // $ Alert + let _ = fm.contentsEqual(atPath: remoteString, andPath: "") // $ Alert + let _ = fm.contentsEqual(atPath: "", andPath: remoteString) // $ Alert + let _ = fm.changeCurrentDirectoryPath(remoteString) // $ Alert + let _ = fm.unmountVolume(at: remoteUrl, options: [], completionHandler: { _ in }) // $ Alert // Deprecated methods - let _ = fm.changeFileAttributes([:], atPath: remoteString) // $ hasPathInjection=289 - let _ = fm.directoryContents(atPath: remoteString) // $ hasPathInjection=289 - let _ = fm.createDirectory(atPath: remoteString, attributes: [:]) // $ hasPathInjection=289 - let _ = fm.createSymbolicLink(atPath: remoteString, pathContent: "") // $ hasPathInjection=289 - let _ = fm.createSymbolicLink(atPath: "", pathContent: remoteString) // $ hasPathInjection=289 - let _ = fm.pathContentOfSymbolicLink(atPath: remoteString) // $ hasPathInjection=289 - let _ = fm.replaceItemAtURL(originalItemURL: remoteNsUrl, withItemAtURL: safeNsUrl, backupItemName: nil, options: []) // $ hasPathInjection=289 - let _ = fm.replaceItemAtURL(originalItemURL: safeNsUrl, withItemAtURL: remoteNsUrl, backupItemName: nil, options: []) // $ hasPathInjection=289 + let _ = fm.changeFileAttributes([:], atPath: remoteString) // $ Alert + let _ = fm.directoryContents(atPath: remoteString) // $ Alert + let _ = fm.createDirectory(atPath: remoteString, attributes: [:]) // $ Alert + let _ = fm.createSymbolicLink(atPath: remoteString, pathContent: "") // $ Alert + let _ = fm.createSymbolicLink(atPath: "", pathContent: remoteString) // $ Alert + let _ = fm.pathContentOfSymbolicLink(atPath: remoteString) // $ Alert + let _ = fm.replaceItemAtURL(originalItemURL: remoteNsUrl, withItemAtURL: safeNsUrl, backupItemName: nil, options: []) // $ Alert + let _ = fm.replaceItemAtURL(originalItemURL: safeNsUrl, withItemAtURL: remoteNsUrl, backupItemName: nil, options: []) // $ Alert var encoding = String.Encoding.utf8 - let _ = try! String(contentsOfFile: remoteString) // $ hasPathInjection=289 - let _ = try! String(contentsOfFile: remoteString, encoding: String.Encoding.utf8) // $ hasPathInjection=289 - let _ = try! String(contentsOfFile: remoteString, usedEncoding: &encoding) // $ hasPathInjection=289 - - let _ = try! NSString(contentsOfFile: remoteString, encoding: 0) // $ hasPathInjection=289 - let _ = try! NSString(contentsOfFile: remoteString, usedEncoding: nil) // $ hasPathInjection=289 - NSString().write(to: remoteUrl, atomically: true, encoding: 0) // $ hasPathInjection=289 - NSString().write(toFile: remoteString, atomically: true, encoding: 0) // $ hasPathInjection=289 - - let _ = NSKeyedUnarchiver().unarchiveObject(withFile: remoteString) // $ hasPathInjection=289 - let _ = ArchiveByteStream.fileStream(fd: remoteString as! FileDescriptor, automaticClose: true) // $ hasPathInjection=289 - ArchiveByteStream.withFileStream(fd: remoteString as! FileDescriptor, automaticClose: true) { _ in } // $ hasPathInjection=289 - let _ = ArchiveByteStream.fileStream(path: FilePath(stringLiteral: remoteString), mode: .readOnly, options: .append, permissions: .ownerRead) // $ hasPathInjection=289 - ArchiveByteStream.withFileStream(path: FilePath(stringLiteral: remoteString), mode: .readOnly, options: .append, permissions: .ownerRead) { _ in } // $ hasPathInjection=289 - let _ = Bundle(url: remoteUrl) // $ hasPathInjection=289 - let _ = Bundle(path: remoteString) // $ hasPathInjection=289 + let _ = try! String(contentsOfFile: remoteString) // $ Alert + let _ = try! String(contentsOfFile: remoteString, encoding: String.Encoding.utf8) // $ Alert + let _ = try! String(contentsOfFile: remoteString, usedEncoding: &encoding) // $ Alert + + let _ = try! NSString(contentsOfFile: remoteString, encoding: 0) // $ Alert + let _ = try! NSString(contentsOfFile: remoteString, usedEncoding: nil) // $ Alert + NSString().write(to: remoteUrl, atomically: true, encoding: 0) // $ Alert + NSString().write(toFile: remoteString, atomically: true, encoding: 0) // $ Alert + + let _ = NSKeyedUnarchiver().unarchiveObject(withFile: remoteString) // $ Alert + let _ = ArchiveByteStream.fileStream(fd: remoteString as! FileDescriptor, automaticClose: true) // $ Alert + ArchiveByteStream.withFileStream(fd: remoteString as! FileDescriptor, automaticClose: true) { _ in } // $ Alert + let _ = ArchiveByteStream.fileStream(path: FilePath(stringLiteral: remoteString), mode: .readOnly, options: .append, permissions: .ownerRead) // $ Alert + ArchiveByteStream.withFileStream(path: FilePath(stringLiteral: remoteString), mode: .readOnly, options: .append, permissions: .ownerRead) { _ in } // $ Alert + let _ = Bundle(url: remoteUrl) // $ Alert + let _ = Bundle(path: remoteString) // $ Alert // GRDB - let _ = Database(path: remoteString, description: "", configuration: Configuration()) // $ hasPathInjection=289 + let _ = Database(path: remoteString, description: "", configuration: Configuration()) // $ Alert let _ = Database(path: "", description: "", configuration: Configuration()) // Safe - let _ = DatabasePool(path: remoteString, configuration: Configuration()) // $ hasPathInjection=289 + let _ = DatabasePool(path: remoteString, configuration: Configuration()) // $ Alert let _ = DatabasePool(path: "", configuration: Configuration()) // Safe - let _ = DatabaseQueue(path: remoteString, configuration: Configuration()) // $ hasPathInjection=289 + let _ = DatabaseQueue(path: remoteString, configuration: Configuration()) // $ Alert let _ = DatabaseQueue(path: "", configuration: Configuration()) // Safe - let _ = DatabaseSnapshotPool(path: remoteString, configuration: Configuration()) // $ hasPathInjection=289 + let _ = DatabaseSnapshotPool(path: remoteString, configuration: Configuration()) // $ Alert let _ = DatabaseSnapshotPool(path: "", configuration: Configuration()) // Safe - let _ = SerializedDatabase(path: remoteString, defaultLabel: "") // $ hasPathInjection=289 + let _ = SerializedDatabase(path: remoteString, defaultLabel: "") // $ Alert let _ = SerializedDatabase(path: "", defaultLabel: "") // Safe - let _ = SerializedDatabase(path: remoteString, defaultLabel: "", purpose: nil) // $ hasPathInjection=289 + let _ = SerializedDatabase(path: remoteString, defaultLabel: "", purpose: nil) // $ Alert let _ = SerializedDatabase(path: "", defaultLabel: "", purpose: nil) // Safe - let _ = SerializedDatabase(path: remoteString, configuration: Configuration(), defaultLabel: "") // $ hasPathInjection=289 + let _ = SerializedDatabase(path: remoteString, configuration: Configuration(), defaultLabel: "") // $ Alert let _ = SerializedDatabase(path: "", configuration: Configuration(), defaultLabel: "") // Safe - let _ = SerializedDatabase(path: remoteString, configuration: Configuration(), defaultLabel: "", purpose: nil) // $ hasPathInjection=289 + let _ = SerializedDatabase(path: remoteString, configuration: Configuration(), defaultLabel: "", purpose: nil) // $ Alert let _ = SerializedDatabase(path: "", configuration: Configuration(), defaultLabel: "", purpose: nil) // Safe // Realm _ = Realm.Configuration(fileURL: safeUrl) // GOOD - _ = Realm.Configuration(fileURL: remoteUrl) // $ hasPathInjection=289 + _ = Realm.Configuration(fileURL: remoteUrl) // $ Alert _ = Realm.Configuration(seedFilePath: safeUrl) // GOOD - _ = Realm.Configuration(seedFilePath: remoteUrl) // $ hasPathInjection=289 + _ = Realm.Configuration(seedFilePath: remoteUrl) // $ Alert var config = Realm.Configuration() // GOOD config.fileURL = safeUrl // GOOD - config.fileURL = remoteUrl // $ hasPathInjection=289 + config.fileURL = remoteUrl // $ Alert config.seedFilePath = safeUrl // GOOD - config.seedFilePath = remoteUrl // $ hasPathInjection=289 + config.seedFilePath = remoteUrl // $ Alert // sqlite3 var db: OpaquePointer? let localData = Data(0) - let remoteData = Data(contentsOf: URL(string: "http://example.com/")!, options: []) + let remoteData = Data(contentsOf: URL(string: "http://example.com/")!, options: []) // $ Source localData.copyBytes(to: buffer1, count: localData.count) remoteData.copyBytes(to: buffer2, count: remoteData.count) _ = sqlite3_open("myFile.sqlite3", &db) // GOOD - _ = sqlite3_open(remoteString, &db) // $ hasPathInjection=289 + _ = sqlite3_open(remoteString, &db) // $ Alert _ = sqlite3_open16(buffer1, &db) // GOOD - _ = sqlite3_open16(buffer2, &db) // $ hasPathInjection=409 + _ = sqlite3_open16(buffer2, &db) // $ Alert _ = sqlite3_open_v2("myFile.sqlite3", &db, 0, nil) // GOOD - _ = sqlite3_open_v2(remoteString, &db, 0, nil) // $ hasPathInjection=289 + _ = sqlite3_open_v2(remoteString, &db, 0, nil) // $ Alert sqlite3_temp_directory = UnsafeMutablePointer(mutating: NSString(string: "myFile.sqlite3").utf8String) // GOOD - sqlite3_temp_directory = UnsafeMutablePointer(mutating: NSString(string: remoteString).utf8String) // $ MISSING: hasPathInjection=289 + sqlite3_temp_directory = UnsafeMutablePointer(mutating: NSString(string: remoteString).utf8String) // $ MISSING: Alert // SQLite.swift try! _ = Connection() try! _ = Connection(Connection.Location.uri("myFile.sqlite3")) // GOOD - try! _ = Connection(Connection.Location.uri(remoteString)) // $ hasPathInjection=289 + try! _ = Connection(Connection.Location.uri(remoteString)) // $ Alert try! _ = Connection("myFile.sqlite3") // GOOD - try! _ = Connection(remoteString) // $ hasPathInjection=289 + try! _ = Connection(remoteString) // $ Alert } func testBarriers() { - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source let fm = FileManager() @@ -438,51 +438,51 @@ func testBarriers() { if (filePath.lexicallyNormalized().starts(with: "/safe")) { let _ = fm.contents(atPath: remoteString) // Safe } - let _ = fm.contents(atPath: remoteString) // $ hasPathInjection=433 + let _ = fm.contents(atPath: remoteString) // $ Alert } func testPathInjection2(s1: UnsafeMutablePointer, s2: UnsafeMutablePointer, s3: UnsafeMutablePointer, fm: FileManager) throws { - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source var u1 = URL(filePath: "") _ = NSData(contentsOf: u1) _ = NSData(contentsOf: u1.appendingPathComponent("")) - _ = NSData(contentsOf: u1.appendingPathComponent(remoteString)) // $ hasPathInjection=445 - _ = NSData(contentsOf: u1.appendingPathComponent(remoteString).appendingPathComponent("")) // $ hasPathInjection=445 + _ = NSData(contentsOf: u1.appendingPathComponent(remoteString)) // $ Alert + _ = NSData(contentsOf: u1.appendingPathComponent(remoteString).appendingPathComponent("")) // $ Alert u1.appendPathComponent(remoteString) - _ = NSData(contentsOf: u1) // $ hasPathInjection=445 + _ = NSData(contentsOf: u1) // $ Alert - let u2 = URL(filePath: remoteString) // $ hasPathInjection=445 - _ = NSData(contentsOf: u2) // $ hasPathInjection=445 + let u2 = URL(filePath: remoteString) // $ Alert + _ = NSData(contentsOf: u2) // $ Alert let u3 = NSURL(string: "")! Data("").write(to: u3.filePathURL!, options: []) Data("").write(to: u3.appendingPathComponent("")!, options: []) - Data("").write(to: u3.appendingPathComponent(remoteString)!, options: []) // $ hasPathInjection=445 + Data("").write(to: u3.appendingPathComponent(remoteString)!, options: []) // $ Alert let u4 = NSURL(string: remoteString)! - Data("").write(to: u4.filePathURL!, options: []) // $ hasPathInjection=445 - Data("").write(to: u4.appendingPathComponent("")!, options: []) // $ hasPathInjection=445 + Data("").write(to: u4.filePathURL!, options: []) // $ Alert + Data("").write(to: u4.appendingPathComponent("")!, options: []) // $ Alert - _ = NSData(contentsOfFile: remoteString)! // $ hasPathInjection=445 - _ = NSData(contentsOfMappedFile: remoteString)! // $ hasPathInjection=445 - _ = NSData.dataWithContentsOfMappedFile(remoteString)! // $ hasPathInjection=445 + _ = NSData(contentsOfFile: remoteString)! // $ Alert + _ = NSData(contentsOfMappedFile: remoteString)! // $ Alert + _ = NSData.dataWithContentsOfMappedFile(remoteString)! // $ Alert _ = NSData().write(toFile: s1.pointee, atomically: true) s1.pointee = remoteString - _ = NSData().write(toFile: s1.pointee, atomically: true) // $ hasPathInjection=445 - _ = NSData().write(toFile: s1[0], atomically: true) // $ MISSING: hasPathInjection=445 + _ = NSData().write(toFile: s1.pointee, atomically: true) // $ Alert + _ = NSData().write(toFile: s1[0], atomically: true) // $ MISSING: Alert _ = "".completePath(into: s2, caseSensitive: false, matchesInto: nil, filterTypes: nil) _ = NSData().write(toFile: s2.pointee, atomically: true) _ = NSData().write(toFile: s2[0], atomically: true) _ = remoteString.completePath(into: s3, caseSensitive: false, matchesInto: nil, filterTypes: nil) - _ = NSData().write(toFile: s3.pointee, atomically: true) // $ MISSING: hasPathInjection=445 - _ = NSData().write(toFile: s3[0], atomically: true) // $ hasPathInjection=445 + _ = NSData().write(toFile: s3.pointee, atomically: true) // $ MISSING: Alert + _ = NSData().write(toFile: s3[0], atomically: true) // $ Alert - _ = fm.fileAttributes(atPath: remoteString, traverseLink: true) // $ hasPathInjection=445 - _ = try fm.attributesOfItem(atPath: remoteString) // $ hasPathInjection=445 + _ = fm.fileAttributes(atPath: remoteString, traverseLink: true) // $ Alert + _ = try fm.attributesOfItem(atPath: remoteString) // $ Alert } // --- @@ -502,18 +502,18 @@ class MyFile { } func testPathInjectionHeuristics() { - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source - myOpenFile1(atPath: remoteString) // $ hasPathInjection=505 - myOpenFile2(remoteString) // $ hasPathInjection=505 - myFindFiles(ofType: 0, inDirectory: remoteString) // $ hasPathInjection=505 + myOpenFile1(atPath: remoteString) // $ Alert + myOpenFile2(remoteString) // $ Alert + myFindFiles(ofType: 0, inDirectory: remoteString) // $ Alert - let mc = MyClass(contentsOfFile: remoteString) // $ hasPathInjection=505 + let mc = MyClass(contentsOfFile: remoteString) // $ Alert mc.doSomething(keyPath: remoteString) // good - not a path - mc.write(toFile: remoteString) // $ hasPathInjection=505 + mc.write(toFile: remoteString) // $ Alert let mf1 = MyFile(path: "") - let mf2 = MyFile(path: remoteString) // $ MISSING: hasPathInjection= + let mf2 = MyFile(path: remoteString) // $ MISSING: Alert _ = NSSortDescriptor(key: remoteString, ascending: true) // good - not a path _ = NSSortDescriptor(keyPath: remoteString as! KeyPath, ascending: true) // good - not a path diff --git a/swift/ql/test/query-tests/Security/CWE-312/CleartextLoggingTest.expected b/swift/ql/test/query-tests/Security/CWE-312/CleartextLoggingTest.expected index e69de29bb2d1..397e4d8a05bb 100644 --- a/swift/ql/test/query-tests/Security/CWE-312/CleartextLoggingTest.expected +++ b/swift/ql/test/query-tests/Security/CWE-312/CleartextLoggingTest.expected @@ -0,0 +1,297 @@ +#select +| cleartextLoggingTest.swift:167:11:167:11 | [...] | cleartextLoggingTest.swift:167:11:167:11 | password | cleartextLoggingTest.swift:167:11:167:11 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:167:11:167:11 | password | password | +| cleartextLoggingTest.swift:168:11:168:11 | [...] | cleartextLoggingTest.swift:168:11:168:11 | password | cleartextLoggingTest.swift:168:11:168:11 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:168:11:168:11 | password | password | +| cleartextLoggingTest.swift:169:26:169:26 | password | cleartextLoggingTest.swift:169:26:169:26 | password | cleartextLoggingTest.swift:169:26:169:26 | password | This operation writes 'password' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:169:26:169:26 | password | password | +| cleartextLoggingTest.swift:170:11:170:11 | [...] | cleartextLoggingTest.swift:170:11:170:11 | password | cleartextLoggingTest.swift:170:11:170:11 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:170:11:170:11 | password | password | +| cleartextLoggingTest.swift:171:26:171:26 | password | cleartextLoggingTest.swift:171:26:171:26 | password | cleartextLoggingTest.swift:171:26:171:26 | password | This operation writes 'password' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:171:26:171:26 | password | password | +| cleartextLoggingTest.swift:172:42:172:42 | password | cleartextLoggingTest.swift:172:42:172:42 | password | cleartextLoggingTest.swift:172:42:172:42 | password | This operation writes 'password' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:172:42:172:42 | password | password | +| cleartextLoggingTest.swift:175:16:175:16 | [...] | cleartextLoggingTest.swift:175:16:175:16 | password | cleartextLoggingTest.swift:175:16:175:16 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:175:16:175:16 | password | password | +| cleartextLoggingTest.swift:177:10:177:10 | password | cleartextLoggingTest.swift:177:10:177:10 | password | cleartextLoggingTest.swift:177:10:177:10 | password | This operation writes 'password' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:177:10:177:10 | password | password | +| cleartextLoggingTest.swift:179:11:179:11 | password | cleartextLoggingTest.swift:179:11:179:11 | password | cleartextLoggingTest.swift:179:11:179:11 | password | This operation writes 'password' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:179:11:179:11 | password | password | +| cleartextLoggingTest.swift:180:17:180:17 | [...] | cleartextLoggingTest.swift:180:17:180:17 | password | cleartextLoggingTest.swift:180:17:180:17 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:180:17:180:17 | password | password | +| cleartextLoggingTest.swift:181:20:181:24 | [...] | cleartextLoggingTest.swift:181:24:181:24 | password | cleartextLoggingTest.swift:181:20:181:24 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:181:24:181:24 | password | password | +| cleartextLoggingTest.swift:182:11:182:11 | "..." | cleartextLoggingTest.swift:182:14:182:14 | password | cleartextLoggingTest.swift:182:11:182:11 | "..." | This operation writes '"..."' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:182:14:182:14 | password | password | +| cleartextLoggingTest.swift:183:18:183:38 | call to getVaList(_:) | cleartextLoggingTest.swift:183:29:183:29 | password | cleartextLoggingTest.swift:183:18:183:38 | call to getVaList(_:) | This operation writes 'call to getVaList(_:)' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:183:29:183:29 | password | password | +| cleartextLoggingTest.swift:184:21:184:45 | call to getVaList(_:) | cleartextLoggingTest.swift:184:36:184:36 | password | cleartextLoggingTest.swift:184:21:184:45 | call to getVaList(_:) | This operation writes 'call to getVaList(_:)' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:184:36:184:36 | password | password | +| cleartextLoggingTest.swift:220:11:220:11 | passphrase | cleartextLoggingTest.swift:220:11:220:11 | passphrase | cleartextLoggingTest.swift:220:11:220:11 | passphrase | This operation writes 'passphrase' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:220:11:220:11 | passphrase | passphrase | +| cleartextLoggingTest.swift:221:11:221:11 | pass_phrase | cleartextLoggingTest.swift:221:11:221:11 | pass_phrase | cleartextLoggingTest.swift:221:11:221:11 | pass_phrase | This operation writes 'pass_phrase' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:221:11:221:11 | pass_phrase | pass_phrase | +| cleartextLoggingTest.swift:224:49:224:49 | [...] | cleartextLoggingTest.swift:224:49:224:49 | password | cleartextLoggingTest.swift:224:49:224:49 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:224:49:224:49 | password | password | +| cleartextLoggingTest.swift:225:55:225:63 | [...] | cleartextLoggingTest.swift:225:63:225:63 | password | cleartextLoggingTest.swift:225:55:225:63 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:225:63:225:63 | password | password | +| cleartextLoggingTest.swift:241:8:241:8 | x | cleartextLoggingTest.swift:240:24:240:24 | x | cleartextLoggingTest.swift:241:8:241:8 | x | This operation writes 'x' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:240:24:240:24 | x | x | +| cleartextLoggingTest.swift:244:8:244:8 | y | cleartextLoggingTest.swift:243:10:243:22 | call to getPassword() | cleartextLoggingTest.swift:244:8:244:8 | y | This operation writes 'y' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:243:10:243:22 | call to getPassword() | call to getPassword() | +| cleartextLoggingTest.swift:248:8:248:10 | .password | cleartextLoggingTest.swift:248:8:248:10 | .password | cleartextLoggingTest.swift:248:8:248:10 | .password | This operation writes '.password' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:248:8:248:10 | .password | .password | +| cleartextLoggingTest.swift:263:8:263:20 | .value | cleartextLoggingTest.swift:263:8:263:11 | .password | cleartextLoggingTest.swift:263:8:263:20 | .value | This operation writes '.value' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:263:8:263:11 | .password | .password | +| cleartextLoggingTest.swift:287:8:287:8 | [...] | cleartextLoggingTest.swift:286:8:286:8 | password | cleartextLoggingTest.swift:287:8:287:8 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:286:8:286:8 | password | password | +| cleartextLoggingTest.swift:290:8:290:8 | [...] | cleartextLoggingTest.swift:289:18:289:18 | password | cleartextLoggingTest.swift:290:8:290:8 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:289:18:289:18 | password | password | +| cleartextLoggingTest.swift:296:13:296:13 | [...] | cleartextLoggingTest.swift:295:13:295:13 | password | cleartextLoggingTest.swift:296:13:296:13 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:295:13:295:13 | password | password | +| cleartextLoggingTest.swift:302:7:302:7 | myString7 | cleartextLoggingTest.swift:301:7:301:7 | password | cleartextLoggingTest.swift:302:7:302:7 | myString7 | This operation writes 'myString7' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:301:7:301:7 | password | password | +| cleartextLoggingTest.swift:308:8:308:8 | [...] | cleartextLoggingTest.swift:307:18:307:18 | password | cleartextLoggingTest.swift:308:8:308:8 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:307:18:307:18 | password | password | +| cleartextLoggingTest.swift:313:8:313:8 | [...] | cleartextLoggingTest.swift:311:19:311:19 | password | cleartextLoggingTest.swift:313:8:313:8 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:311:19:311:19 | password | password | +| cleartextLoggingTest.swift:319:8:319:8 | [...] | cleartextLoggingTest.swift:318:2:318:2 | password | cleartextLoggingTest.swift:319:8:319:8 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:318:2:318:2 | password | password | +| cleartextLoggingTest.swift:334:17:334:17 | { ... } | cleartextLoggingTest.swift:334:17:334:17 | password | cleartextLoggingTest.swift:334:17:334:17 | { ... } | This operation writes '{ ... }' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:334:17:334:17 | password | password | +| cleartextLoggingTest.swift:336:20:336:20 | { ... } | cleartextLoggingTest.swift:336:20:336:20 | password | cleartextLoggingTest.swift:336:20:336:20 | { ... } | This operation writes '{ ... }' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:336:20:336:20 | password | password | +| cleartextLoggingTest.swift:338:23:338:23 | { ... } | cleartextLoggingTest.swift:338:23:338:23 | password | cleartextLoggingTest.swift:338:23:338:23 | { ... } | This operation writes '{ ... }' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:338:23:338:23 | password | password | +| cleartextLoggingTest.swift:340:23:340:23 | { ... } | cleartextLoggingTest.swift:340:23:340:23 | password | cleartextLoggingTest.swift:340:23:340:23 | { ... } | This operation writes '{ ... }' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:340:23:340:23 | password | password | +| cleartextLoggingTest.swift:342:14:342:14 | { ... } | cleartextLoggingTest.swift:342:14:342:14 | password | cleartextLoggingTest.swift:342:14:342:14 | { ... } | This operation writes '{ ... }' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:342:14:342:14 | password | password | +| cleartextLoggingTest.swift:347:69:347:69 | "..." | cleartextLoggingTest.swift:347:72:347:72 | passwordString | cleartextLoggingTest.swift:347:69:347:69 | "..." | This operation writes '"..."' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:347:72:347:72 | passwordString | passwordString | +| cleartextLoggingTest.swift:350:61:350:61 | "..." | cleartextLoggingTest.swift:350:64:350:64 | passwordString | cleartextLoggingTest.swift:350:61:350:61 | "..." | This operation writes '"..."' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:350:64:350:64 | passwordString | passwordString | +| cleartextLoggingTest.swift:351:92:351:118 | call to getVaList(_:) | cleartextLoggingTest.swift:351:103:351:103 | passwordString | cleartextLoggingTest.swift:351:92:351:118 | call to getVaList(_:) | This operation writes 'call to getVaList(_:)' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:351:103:351:103 | passwordString | passwordString | +| cleartextLoggingTest.swift:353:20:353:20 | "..." | cleartextLoggingTest.swift:353:23:353:23 | passwordString | cleartextLoggingTest.swift:353:20:353:20 | "..." | This operation writes '"..."' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:353:23:353:23 | passwordString | passwordString | +| cleartextLoggingTest.swift:354:40:354:40 | [...] | cleartextLoggingTest.swift:354:40:354:40 | passwordString | cleartextLoggingTest.swift:354:40:354:40 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:354:40:354:40 | passwordString | passwordString | +| cleartextLoggingTest.swift:355:44:355:51 | [...] | cleartextLoggingTest.swift:355:51:355:51 | passwordString | cleartextLoggingTest.swift:355:44:355:51 | [...] | This operation writes '[...]' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:355:51:355:51 | passwordString | passwordString | +| cleartextLoggingTest.swift:356:17:356:17 | "..." | cleartextLoggingTest.swift:356:20:356:20 | passwordString | cleartextLoggingTest.swift:356:17:356:17 | "..." | This operation writes '"..."' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:356:20:356:20 | passwordString | passwordString | +| cleartextLoggingTest.swift:357:37:357:63 | call to getVaList(_:) | cleartextLoggingTest.swift:357:48:357:48 | passwordString | cleartextLoggingTest.swift:357:37:357:63 | call to getVaList(_:) | This operation writes 'call to getVaList(_:)' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:357:48:357:48 | passwordString | passwordString | +| cleartextLoggingTest.swift:358:23:358:23 | "..." | cleartextLoggingTest.swift:358:26:358:26 | passwordString | cleartextLoggingTest.swift:358:23:358:23 | "..." | This operation writes '"..."' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:358:26:358:26 | passwordString | passwordString | +| cleartextLoggingTest.swift:359:43:359:69 | call to getVaList(_:) | cleartextLoggingTest.swift:359:54:359:54 | passwordString | cleartextLoggingTest.swift:359:43:359:69 | call to getVaList(_:) | This operation writes 'call to getVaList(_:)' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:359:54:359:54 | passwordString | passwordString | +| cleartextLoggingTest.swift:365:18:365:18 | authKey | cleartextLoggingTest.swift:365:18:365:18 | authKey | cleartextLoggingTest.swift:365:18:365:18 | authKey | This operation writes 'authKey' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:365:18:365:18 | authKey | authKey | +| cleartextLoggingTest.swift:366:18:366:33 | call to String.init(_:) | cleartextLoggingTest.swift:366:25:366:25 | authKey2 | cleartextLoggingTest.swift:366:18:366:33 | call to String.init(_:) | This operation writes 'call to String.init(_:)' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:366:25:366:25 | authKey2 | authKey2 | +| cleartextLoggingTest.swift:369:16:369:40 | call to NSString.init(string:) | cleartextLoggingTest.swift:369:33:369:33 | authKey | cleartextLoggingTest.swift:369:16:369:40 | call to NSString.init(string:) | This operation writes 'call to NSString.init(string:)' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:369:33:369:33 | authKey | authKey | +| cleartextLoggingTest.swift:370:13:370:13 | authKey | cleartextLoggingTest.swift:370:13:370:13 | authKey | cleartextLoggingTest.swift:370:13:370:13 | authKey | This operation writes 'authKey' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:370:13:370:13 | authKey | authKey | +| cleartextLoggingTest.swift:371:24:371:24 | authKey | cleartextLoggingTest.swift:371:24:371:24 | authKey | cleartextLoggingTest.swift:371:24:371:24 | authKey | This operation writes 'authKey' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:371:24:371:24 | authKey | authKey | +| cleartextLoggingTest.swift:378:16:378:16 | msg | cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:378:16:378:16 | msg | This operation writes 'msg' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:377:29:377:29 | authKey | authKey | +| cleartextLoggingTest.swift:379:18:379:18 | msg | cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:379:18:379:18 | msg | This operation writes 'msg' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:377:29:377:29 | authKey | authKey | +| cleartextLoggingTest.swift:380:18:380:18 | msg | cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:380:18:380:18 | msg | This operation writes 'msg' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:377:29:377:29 | authKey | authKey | +| cleartextLoggingTest.swift:381:17:381:37 | call to NSString.init(string:) | cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:381:17:381:37 | call to NSString.init(string:) | This operation writes 'call to NSString.init(string:)' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:377:29:377:29 | authKey | authKey | +| cleartextLoggingTest.swift:382:19:382:19 | msg | cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:382:19:382:19 | msg | This operation writes 'msg' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:377:29:377:29 | authKey | authKey | +| cleartextLoggingTest.swift:383:20:383:20 | msg | cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:383:20:383:20 | msg | This operation writes 'msg' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:377:29:377:29 | authKey | authKey | +| cleartextLoggingTest.swift:384:18:384:18 | msg | cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:384:18:384:18 | msg | This operation writes 'msg' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:377:29:377:29 | authKey | authKey | +| cleartextLoggingTest.swift:385:21:385:21 | msg | cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:385:21:385:21 | msg | This operation writes 'msg' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:377:29:377:29 | authKey | authKey | +| cleartextLoggingTest.swift:386:18:386:18 | msg | cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:386:18:386:18 | msg | This operation writes 'msg' to a log file. It may contain unencrypted sensitive data from $@. | cleartextLoggingTest.swift:377:29:377:29 | authKey | authKey | +edges +| cleartextLoggingTest.swift:167:11:167:11 | [...] [Collection element] | cleartextLoggingTest.swift:167:11:167:11 | [...] | provenance | | +| cleartextLoggingTest.swift:167:11:167:11 | password | cleartextLoggingTest.swift:167:11:167:11 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:168:11:168:11 | [...] [Collection element] | cleartextLoggingTest.swift:168:11:168:11 | [...] | provenance | | +| cleartextLoggingTest.swift:168:11:168:11 | password | cleartextLoggingTest.swift:168:11:168:11 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:170:11:170:11 | [...] [Collection element] | cleartextLoggingTest.swift:170:11:170:11 | [...] | provenance | | +| cleartextLoggingTest.swift:170:11:170:11 | password | cleartextLoggingTest.swift:170:11:170:11 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:175:16:175:16 | [...] [Collection element] | cleartextLoggingTest.swift:175:16:175:16 | [...] | provenance | | +| cleartextLoggingTest.swift:175:16:175:16 | password | cleartextLoggingTest.swift:175:16:175:16 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:180:17:180:17 | [...] [Collection element] | cleartextLoggingTest.swift:180:17:180:17 | [...] | provenance | | +| cleartextLoggingTest.swift:180:17:180:17 | password | cleartextLoggingTest.swift:180:17:180:17 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:181:20:181:24 | [...] [Collection element] | cleartextLoggingTest.swift:181:20:181:24 | [...] | provenance | | +| cleartextLoggingTest.swift:181:24:181:24 | password | cleartextLoggingTest.swift:181:20:181:24 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:182:14:182:14 | password | cleartextLoggingTest.swift:182:11:182:11 | "..." | provenance | | +| cleartextLoggingTest.swift:183:28:183:37 | [...] [Collection element] | cleartextLoggingTest.swift:183:18:183:38 | call to getVaList(_:) | provenance | | +| cleartextLoggingTest.swift:183:29:183:29 | password | cleartextLoggingTest.swift:183:28:183:37 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:184:31:184:44 | [...] [Collection element] | cleartextLoggingTest.swift:184:21:184:45 | call to getVaList(_:) | provenance | | +| cleartextLoggingTest.swift:184:36:184:36 | password | cleartextLoggingTest.swift:184:31:184:44 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:224:49:224:49 | [...] [Collection element] | cleartextLoggingTest.swift:224:49:224:49 | [...] | provenance | | +| cleartextLoggingTest.swift:224:49:224:49 | password | cleartextLoggingTest.swift:224:49:224:49 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:225:55:225:63 | [...] [Collection element] | cleartextLoggingTest.swift:225:55:225:63 | [...] | provenance | | +| cleartextLoggingTest.swift:225:63:225:63 | password | cleartextLoggingTest.swift:225:55:225:63 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:240:24:240:24 | x | cleartextLoggingTest.swift:241:8:241:8 | x | provenance | | +| cleartextLoggingTest.swift:243:10:243:22 | call to getPassword() | cleartextLoggingTest.swift:244:8:244:8 | y | provenance | | +| cleartextLoggingTest.swift:253:7:253:7 | self | file://:0:0:0:0 | self | provenance | | +| cleartextLoggingTest.swift:263:8:263:11 | .password | cleartextLoggingTest.swift:253:7:253:7 | self | provenance | | +| cleartextLoggingTest.swift:263:8:263:11 | .password | cleartextLoggingTest.swift:263:8:263:20 | .value | provenance | Config | +| cleartextLoggingTest.swift:286:8:286:8 | [...] [Collection element] | cleartextLoggingTest.swift:286:8:286:8 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:286:8:286:8 | [...] [Collection element] | cleartextLoggingTest.swift:286:23:286:23 | [post] myString2 | provenance | | +| cleartextLoggingTest.swift:286:8:286:8 | password | cleartextLoggingTest.swift:286:8:286:8 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:286:23:286:23 | [post] myString2 | cleartextLoggingTest.swift:287:8:287:8 | myString2 | provenance | | +| cleartextLoggingTest.swift:287:8:287:8 | [...] [Collection element] | cleartextLoggingTest.swift:287:8:287:8 | [...] | provenance | | +| cleartextLoggingTest.swift:287:8:287:8 | myString2 | cleartextLoggingTest.swift:287:8:287:8 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:289:8:289:18 | ... .+(_:_:) ... | cleartextLoggingTest.swift:289:8:289:18 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:289:8:289:18 | [...] [Collection element] | cleartextLoggingTest.swift:289:8:289:18 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:289:8:289:18 | [...] [Collection element] | cleartextLoggingTest.swift:289:33:289:33 | [post] myString3 | provenance | | +| cleartextLoggingTest.swift:289:18:289:18 | password | cleartextLoggingTest.swift:289:8:289:18 | ... .+(_:_:) ... | provenance | | +| cleartextLoggingTest.swift:289:33:289:33 | [post] myString3 | cleartextLoggingTest.swift:290:8:290:8 | myString3 | provenance | | +| cleartextLoggingTest.swift:290:8:290:8 | [...] [Collection element] | cleartextLoggingTest.swift:290:8:290:8 | [...] | provenance | | +| cleartextLoggingTest.swift:290:8:290:8 | myString3 | cleartextLoggingTest.swift:290:8:290:8 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:295:13:295:13 | [...] [Collection element] | cleartextLoggingTest.swift:295:13:295:13 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:295:13:295:13 | [...] [Collection element] | cleartextLoggingTest.swift:295:28:295:28 | [post] myString5 | provenance | | +| cleartextLoggingTest.swift:295:13:295:13 | password | cleartextLoggingTest.swift:295:13:295:13 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:295:28:295:28 | [post] myString5 | cleartextLoggingTest.swift:296:13:296:13 | myString5 | provenance | | +| cleartextLoggingTest.swift:296:13:296:13 | [...] [Collection element] | cleartextLoggingTest.swift:296:13:296:13 | [...] | provenance | | +| cleartextLoggingTest.swift:296:13:296:13 | myString5 | cleartextLoggingTest.swift:296:13:296:13 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:301:7:301:7 | password | cleartextLoggingTest.swift:301:22:301:22 | [post] myString7 | provenance | | +| cleartextLoggingTest.swift:301:22:301:22 | [post] myString7 | cleartextLoggingTest.swift:302:7:302:7 | myString7 | provenance | | +| cleartextLoggingTest.swift:307:2:307:2 | [post] myString9 | cleartextLoggingTest.swift:308:8:308:8 | myString9 | provenance | | +| cleartextLoggingTest.swift:307:18:307:18 | password | cleartextLoggingTest.swift:307:2:307:2 | [post] myString9 | provenance | | +| cleartextLoggingTest.swift:308:8:308:8 | [...] [Collection element] | cleartextLoggingTest.swift:308:8:308:8 | [...] | provenance | | +| cleartextLoggingTest.swift:308:8:308:8 | myString9 | cleartextLoggingTest.swift:308:8:308:8 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:311:2:311:2 | [post] myString10 | cleartextLoggingTest.swift:313:8:313:8 | myString10 | provenance | | +| cleartextLoggingTest.swift:311:19:311:19 | password | cleartextLoggingTest.swift:311:2:311:2 | [post] myString10 | provenance | | +| cleartextLoggingTest.swift:313:8:313:8 | [...] [Collection element] | cleartextLoggingTest.swift:313:8:313:8 | [...] | provenance | | +| cleartextLoggingTest.swift:313:8:313:8 | myString10 | cleartextLoggingTest.swift:313:8:313:8 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:318:2:318:2 | password | cleartextLoggingTest.swift:318:22:318:22 | [post] myString12 | provenance | | +| cleartextLoggingTest.swift:318:22:318:22 | [post] myString12 | cleartextLoggingTest.swift:319:8:319:8 | myString12 | provenance | | +| cleartextLoggingTest.swift:319:8:319:8 | [...] [Collection element] | cleartextLoggingTest.swift:319:8:319:8 | [...] | provenance | | +| cleartextLoggingTest.swift:319:8:319:8 | myString12 | cleartextLoggingTest.swift:319:8:319:8 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:334:17:334:17 | password | cleartextLoggingTest.swift:334:17:334:17 | { ... } | provenance | | +| cleartextLoggingTest.swift:336:20:336:20 | password | cleartextLoggingTest.swift:336:20:336:20 | { ... } | provenance | | +| cleartextLoggingTest.swift:338:23:338:23 | password | cleartextLoggingTest.swift:338:23:338:23 | { ... } | provenance | | +| cleartextLoggingTest.swift:340:23:340:23 | password | cleartextLoggingTest.swift:340:23:340:23 | { ... } | provenance | | +| cleartextLoggingTest.swift:342:14:342:14 | password | cleartextLoggingTest.swift:342:14:342:14 | { ... } | provenance | | +| cleartextLoggingTest.swift:347:72:347:72 | passwordString | cleartextLoggingTest.swift:347:69:347:69 | "..." | provenance | | +| cleartextLoggingTest.swift:350:64:350:64 | passwordString | cleartextLoggingTest.swift:350:61:350:61 | "..." | provenance | | +| cleartextLoggingTest.swift:351:102:351:117 | [...] [Collection element] | cleartextLoggingTest.swift:351:92:351:118 | call to getVaList(_:) | provenance | | +| cleartextLoggingTest.swift:351:103:351:103 | passwordString | cleartextLoggingTest.swift:351:102:351:117 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:353:23:353:23 | passwordString | cleartextLoggingTest.swift:353:20:353:20 | "..." | provenance | | +| cleartextLoggingTest.swift:354:40:354:40 | [...] [Collection element] | cleartextLoggingTest.swift:354:40:354:40 | [...] | provenance | | +| cleartextLoggingTest.swift:354:40:354:40 | passwordString | cleartextLoggingTest.swift:354:40:354:40 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:355:44:355:51 | [...] [Collection element] | cleartextLoggingTest.swift:355:44:355:51 | [...] | provenance | | +| cleartextLoggingTest.swift:355:51:355:51 | passwordString | cleartextLoggingTest.swift:355:44:355:51 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:356:20:356:20 | passwordString | cleartextLoggingTest.swift:356:17:356:17 | "..." | provenance | | +| cleartextLoggingTest.swift:357:47:357:62 | [...] [Collection element] | cleartextLoggingTest.swift:357:37:357:63 | call to getVaList(_:) | provenance | | +| cleartextLoggingTest.swift:357:48:357:48 | passwordString | cleartextLoggingTest.swift:357:47:357:62 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:358:26:358:26 | passwordString | cleartextLoggingTest.swift:358:23:358:23 | "..." | provenance | | +| cleartextLoggingTest.swift:359:53:359:68 | [...] [Collection element] | cleartextLoggingTest.swift:359:43:359:69 | call to getVaList(_:) | provenance | | +| cleartextLoggingTest.swift:359:54:359:54 | passwordString | cleartextLoggingTest.swift:359:53:359:68 | [...] [Collection element] | provenance | | +| cleartextLoggingTest.swift:366:25:366:25 | authKey2 | cleartextLoggingTest.swift:366:18:366:33 | call to String.init(_:) | provenance | | +| cleartextLoggingTest.swift:369:33:369:33 | authKey | cleartextLoggingTest.swift:369:16:369:40 | call to NSString.init(string:) | provenance | | +| cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:378:16:378:16 | msg | provenance | | +| cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:379:18:379:18 | msg | provenance | | +| cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:380:18:380:18 | msg | provenance | | +| cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:381:34:381:34 | msg | provenance | | +| cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:382:19:382:19 | msg | provenance | | +| cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:383:20:383:20 | msg | provenance | | +| cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:384:18:384:18 | msg | provenance | | +| cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:385:21:385:21 | msg | provenance | | +| cleartextLoggingTest.swift:377:29:377:29 | authKey | cleartextLoggingTest.swift:386:18:386:18 | msg | provenance | | +| cleartextLoggingTest.swift:381:34:381:34 | msg | cleartextLoggingTest.swift:381:17:381:37 | call to NSString.init(string:) | provenance | | +| file://:0:0:0:0 | self | file://:0:0:0:0 | .value | provenance | Config | +nodes +| cleartextLoggingTest.swift:167:11:167:11 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:167:11:167:11 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:167:11:167:11 | password | semmle.label | password | +| cleartextLoggingTest.swift:168:11:168:11 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:168:11:168:11 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:168:11:168:11 | password | semmle.label | password | +| cleartextLoggingTest.swift:169:26:169:26 | password | semmle.label | password | +| cleartextLoggingTest.swift:170:11:170:11 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:170:11:170:11 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:170:11:170:11 | password | semmle.label | password | +| cleartextLoggingTest.swift:171:26:171:26 | password | semmle.label | password | +| cleartextLoggingTest.swift:172:42:172:42 | password | semmle.label | password | +| cleartextLoggingTest.swift:175:16:175:16 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:175:16:175:16 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:175:16:175:16 | password | semmle.label | password | +| cleartextLoggingTest.swift:177:10:177:10 | password | semmle.label | password | +| cleartextLoggingTest.swift:179:11:179:11 | password | semmle.label | password | +| cleartextLoggingTest.swift:180:17:180:17 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:180:17:180:17 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:180:17:180:17 | password | semmle.label | password | +| cleartextLoggingTest.swift:181:20:181:24 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:181:20:181:24 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:181:24:181:24 | password | semmle.label | password | +| cleartextLoggingTest.swift:182:11:182:11 | "..." | semmle.label | "..." | +| cleartextLoggingTest.swift:182:14:182:14 | password | semmle.label | password | +| cleartextLoggingTest.swift:183:18:183:38 | call to getVaList(_:) | semmle.label | call to getVaList(_:) | +| cleartextLoggingTest.swift:183:28:183:37 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:183:29:183:29 | password | semmle.label | password | +| cleartextLoggingTest.swift:184:21:184:45 | call to getVaList(_:) | semmle.label | call to getVaList(_:) | +| cleartextLoggingTest.swift:184:31:184:44 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:184:36:184:36 | password | semmle.label | password | +| cleartextLoggingTest.swift:220:11:220:11 | passphrase | semmle.label | passphrase | +| cleartextLoggingTest.swift:221:11:221:11 | pass_phrase | semmle.label | pass_phrase | +| cleartextLoggingTest.swift:224:49:224:49 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:224:49:224:49 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:224:49:224:49 | password | semmle.label | password | +| cleartextLoggingTest.swift:225:55:225:63 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:225:55:225:63 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:225:63:225:63 | password | semmle.label | password | +| cleartextLoggingTest.swift:240:24:240:24 | x | semmle.label | x | +| cleartextLoggingTest.swift:241:8:241:8 | x | semmle.label | x | +| cleartextLoggingTest.swift:243:10:243:22 | call to getPassword() | semmle.label | call to getPassword() | +| cleartextLoggingTest.swift:244:8:244:8 | y | semmle.label | y | +| cleartextLoggingTest.swift:248:8:248:10 | .password | semmle.label | .password | +| cleartextLoggingTest.swift:253:7:253:7 | self | semmle.label | self | +| cleartextLoggingTest.swift:263:8:263:11 | .password | semmle.label | .password | +| cleartextLoggingTest.swift:263:8:263:20 | .value | semmle.label | .value | +| cleartextLoggingTest.swift:286:8:286:8 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:286:8:286:8 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:286:8:286:8 | password | semmle.label | password | +| cleartextLoggingTest.swift:286:23:286:23 | [post] myString2 | semmle.label | [post] myString2 | +| cleartextLoggingTest.swift:287:8:287:8 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:287:8:287:8 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:287:8:287:8 | myString2 | semmle.label | myString2 | +| cleartextLoggingTest.swift:289:8:289:18 | ... .+(_:_:) ... | semmle.label | ... .+(_:_:) ... | +| cleartextLoggingTest.swift:289:8:289:18 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:289:8:289:18 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:289:18:289:18 | password | semmle.label | password | +| cleartextLoggingTest.swift:289:33:289:33 | [post] myString3 | semmle.label | [post] myString3 | +| cleartextLoggingTest.swift:290:8:290:8 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:290:8:290:8 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:290:8:290:8 | myString3 | semmle.label | myString3 | +| cleartextLoggingTest.swift:295:13:295:13 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:295:13:295:13 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:295:13:295:13 | password | semmle.label | password | +| cleartextLoggingTest.swift:295:28:295:28 | [post] myString5 | semmle.label | [post] myString5 | +| cleartextLoggingTest.swift:296:13:296:13 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:296:13:296:13 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:296:13:296:13 | myString5 | semmle.label | myString5 | +| cleartextLoggingTest.swift:301:7:301:7 | password | semmle.label | password | +| cleartextLoggingTest.swift:301:22:301:22 | [post] myString7 | semmle.label | [post] myString7 | +| cleartextLoggingTest.swift:302:7:302:7 | myString7 | semmle.label | myString7 | +| cleartextLoggingTest.swift:307:2:307:2 | [post] myString9 | semmle.label | [post] myString9 | +| cleartextLoggingTest.swift:307:18:307:18 | password | semmle.label | password | +| cleartextLoggingTest.swift:308:8:308:8 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:308:8:308:8 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:308:8:308:8 | myString9 | semmle.label | myString9 | +| cleartextLoggingTest.swift:311:2:311:2 | [post] myString10 | semmle.label | [post] myString10 | +| cleartextLoggingTest.swift:311:19:311:19 | password | semmle.label | password | +| cleartextLoggingTest.swift:313:8:313:8 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:313:8:313:8 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:313:8:313:8 | myString10 | semmle.label | myString10 | +| cleartextLoggingTest.swift:318:2:318:2 | password | semmle.label | password | +| cleartextLoggingTest.swift:318:22:318:22 | [post] myString12 | semmle.label | [post] myString12 | +| cleartextLoggingTest.swift:319:8:319:8 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:319:8:319:8 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:319:8:319:8 | myString12 | semmle.label | myString12 | +| cleartextLoggingTest.swift:334:17:334:17 | password | semmle.label | password | +| cleartextLoggingTest.swift:334:17:334:17 | { ... } | semmle.label | { ... } | +| cleartextLoggingTest.swift:336:20:336:20 | password | semmle.label | password | +| cleartextLoggingTest.swift:336:20:336:20 | { ... } | semmle.label | { ... } | +| cleartextLoggingTest.swift:338:23:338:23 | password | semmle.label | password | +| cleartextLoggingTest.swift:338:23:338:23 | { ... } | semmle.label | { ... } | +| cleartextLoggingTest.swift:340:23:340:23 | password | semmle.label | password | +| cleartextLoggingTest.swift:340:23:340:23 | { ... } | semmle.label | { ... } | +| cleartextLoggingTest.swift:342:14:342:14 | password | semmle.label | password | +| cleartextLoggingTest.swift:342:14:342:14 | { ... } | semmle.label | { ... } | +| cleartextLoggingTest.swift:347:69:347:69 | "..." | semmle.label | "..." | +| cleartextLoggingTest.swift:347:72:347:72 | passwordString | semmle.label | passwordString | +| cleartextLoggingTest.swift:350:61:350:61 | "..." | semmle.label | "..." | +| cleartextLoggingTest.swift:350:64:350:64 | passwordString | semmle.label | passwordString | +| cleartextLoggingTest.swift:351:92:351:118 | call to getVaList(_:) | semmle.label | call to getVaList(_:) | +| cleartextLoggingTest.swift:351:102:351:117 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:351:103:351:103 | passwordString | semmle.label | passwordString | +| cleartextLoggingTest.swift:353:20:353:20 | "..." | semmle.label | "..." | +| cleartextLoggingTest.swift:353:23:353:23 | passwordString | semmle.label | passwordString | +| cleartextLoggingTest.swift:354:40:354:40 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:354:40:354:40 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:354:40:354:40 | passwordString | semmle.label | passwordString | +| cleartextLoggingTest.swift:355:44:355:51 | [...] | semmle.label | [...] | +| cleartextLoggingTest.swift:355:44:355:51 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:355:51:355:51 | passwordString | semmle.label | passwordString | +| cleartextLoggingTest.swift:356:17:356:17 | "..." | semmle.label | "..." | +| cleartextLoggingTest.swift:356:20:356:20 | passwordString | semmle.label | passwordString | +| cleartextLoggingTest.swift:357:37:357:63 | call to getVaList(_:) | semmle.label | call to getVaList(_:) | +| cleartextLoggingTest.swift:357:47:357:62 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:357:48:357:48 | passwordString | semmle.label | passwordString | +| cleartextLoggingTest.swift:358:23:358:23 | "..." | semmle.label | "..." | +| cleartextLoggingTest.swift:358:26:358:26 | passwordString | semmle.label | passwordString | +| cleartextLoggingTest.swift:359:43:359:69 | call to getVaList(_:) | semmle.label | call to getVaList(_:) | +| cleartextLoggingTest.swift:359:53:359:68 | [...] [Collection element] | semmle.label | [...] [Collection element] | +| cleartextLoggingTest.swift:359:54:359:54 | passwordString | semmle.label | passwordString | +| cleartextLoggingTest.swift:365:18:365:18 | authKey | semmle.label | authKey | +| cleartextLoggingTest.swift:366:18:366:33 | call to String.init(_:) | semmle.label | call to String.init(_:) | +| cleartextLoggingTest.swift:366:25:366:25 | authKey2 | semmle.label | authKey2 | +| cleartextLoggingTest.swift:369:16:369:40 | call to NSString.init(string:) | semmle.label | call to NSString.init(string:) | +| cleartextLoggingTest.swift:369:33:369:33 | authKey | semmle.label | authKey | +| cleartextLoggingTest.swift:370:13:370:13 | authKey | semmle.label | authKey | +| cleartextLoggingTest.swift:371:24:371:24 | authKey | semmle.label | authKey | +| cleartextLoggingTest.swift:377:29:377:29 | authKey | semmle.label | authKey | +| cleartextLoggingTest.swift:378:16:378:16 | msg | semmle.label | msg | +| cleartextLoggingTest.swift:379:18:379:18 | msg | semmle.label | msg | +| cleartextLoggingTest.swift:380:18:380:18 | msg | semmle.label | msg | +| cleartextLoggingTest.swift:381:17:381:37 | call to NSString.init(string:) | semmle.label | call to NSString.init(string:) | +| cleartextLoggingTest.swift:381:34:381:34 | msg | semmle.label | msg | +| cleartextLoggingTest.swift:382:19:382:19 | msg | semmle.label | msg | +| cleartextLoggingTest.swift:383:20:383:20 | msg | semmle.label | msg | +| cleartextLoggingTest.swift:384:18:384:18 | msg | semmle.label | msg | +| cleartextLoggingTest.swift:385:21:385:21 | msg | semmle.label | msg | +| cleartextLoggingTest.swift:386:18:386:18 | msg | semmle.label | msg | +| file://:0:0:0:0 | .value | semmle.label | .value | +| file://:0:0:0:0 | self | semmle.label | self | +subpaths +| cleartextLoggingTest.swift:263:8:263:11 | .password | cleartextLoggingTest.swift:253:7:253:7 | self | file://:0:0:0:0 | .value | cleartextLoggingTest.swift:263:8:263:20 | .value | diff --git a/swift/ql/test/query-tests/Security/CWE-312/CleartextLoggingTest.ql b/swift/ql/test/query-tests/Security/CWE-312/CleartextLoggingTest.ql deleted file mode 100644 index e7371e9d7435..000000000000 --- a/swift/ql/test/query-tests/Security/CWE-312/CleartextLoggingTest.ql +++ /dev/null @@ -1,20 +0,0 @@ -import swift -import codeql.swift.dataflow.DataFlow -import codeql.swift.security.CleartextLoggingQuery -import utils.test.InlineExpectationsTest - -module CleartextLogging implements TestSig { - string getARelevantTag() { result = "hasCleartextLogging" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - exists(DataFlow::Node source, DataFlow::Node sink | - CleartextLoggingFlow::flow(source, sink) and - location = sink.getLocation() and - element = sink.toString() and - tag = "hasCleartextLogging" and - value = source.asExpr().getLocation().getStartLine().toString() - ) - } -} - -import MakeTest diff --git a/swift/ql/test/query-tests/Security/CWE-312/CleartextLoggingTest.qlref b/swift/ql/test/query-tests/Security/CWE-312/CleartextLoggingTest.qlref new file mode 100644 index 000000000000..d277352353d1 --- /dev/null +++ b/swift/ql/test/query-tests/Security/CWE-312/CleartextLoggingTest.qlref @@ -0,0 +1,3 @@ +query: queries/Security/CWE-312/CleartextLogging.ql +postprocess: + - utils/test/InlineExpectationsTestQuery.ql diff --git a/swift/ql/test/query-tests/Security/CWE-312/cleartextLoggingTest.swift b/swift/ql/test/query-tests/Security/CWE-312/cleartextLoggingTest.swift index c3f293785195..060d6c5041ef 100644 --- a/swift/ql/test/query-tests/Security/CWE-312/cleartextLoggingTest.swift +++ b/swift/ql/test/query-tests/Security/CWE-312/cleartextLoggingTest.swift @@ -164,24 +164,24 @@ class MyRemoteLogger { // --- tests --- func test1(password: String, passwordHash : String, passphrase: String, pass_phrase: String) { - print(password) // $ hasCleartextLogging=167 - print(password, separator: "") // $ $ hasCleartextLogging=168 - print("", separator: password) // $ hasCleartextLogging=169 - print(password, separator: "", terminator: "") // $ hasCleartextLogging=170 - print("", separator: password, terminator: "") // $ hasCleartextLogging=171 - print("", separator: "", terminator: password) // $ hasCleartextLogging=172 + print(password) // $ Alert + print(password, separator: "") // $ Alert + print("", separator: password) // $ Alert + print(password, separator: "", terminator: "") // $ Alert + print("", separator: password, terminator: "") // $ Alert + print("", separator: "", terminator: password) // $ Alert print(passwordHash) // safe - debugPrint(password) // $ hasCleartextLogging=175 + debugPrint(password) // $ Alert - dump(password) // $ hasCleartextLogging=177 + dump(password) // $ Alert - NSLog(password) // $ hasCleartextLogging=179 - NSLog("%@", password) // $ hasCleartextLogging=180 - NSLog("%@ %@", "", password) // $ hasCleartextLogging=181 - NSLog("\(password)") // $ hasCleartextLogging=182 - NSLogv("%@", getVaList([password])) // $ hasCleartextLogging=183 - NSLogv("%@ %@", getVaList(["", password])) // $ hasCleartextLogging=184 + NSLog(password) // $ Alert + NSLog("%@", password) // $ Alert + NSLog("%@ %@", "", password) // $ Alert + NSLog("\(password)") // $ Alert + NSLogv("%@", getVaList([password])) // $ Alert + NSLogv("%@ %@", getVaList(["", password])) // $ Alert NSLog(passwordHash) // safe NSLogv("%@", getVaList([passwordHash])) // safe @@ -191,38 +191,38 @@ func test1(password: String, passwordHash : String, passphrase: String, pass_phr log.log("\(password)") // safe log.log("\(password, privacy: .auto)") // safe log.log("\(password, privacy: .private)") // safe - log.log("\(password, privacy: .public)") // $ MISSING: hasCleartextLogging=194 + log.log("\(password, privacy: .public)") // $ MISSING: Alert log.log("\(passwordHash, privacy: .public)") // safe log.log("\(password, privacy: .sensitive)") // safe - log.log("\(bankAccount)") // $ MISSING: hasCleartextLogging=197 - log.log("\(bankAccount, privacy: .auto)") // $ MISSING: hasCleartextLogging=198 + log.log("\(bankAccount)") // $ MISSING: Alert + log.log("\(bankAccount, privacy: .auto)") // $ MISSING: Alert log.log("\(bankAccount, privacy: .private)") // safe - log.log("\(bankAccount, privacy: .public)") // $ MISSING: hasCleartextLogging=200 + log.log("\(bankAccount, privacy: .public)") // $ MISSING: Alert log.log("\(bankAccount, privacy: .sensitive)") // safe - log.log(level: .default, "\(password, privacy: .public)") // $ MISSING: hasCleartextLogging=202 - log.trace("\(password, privacy: .public)") // $ MISSING: hasCleartextLogging=203 + log.log(level: .default, "\(password, privacy: .public)") // $ MISSING: Alert + log.trace("\(password, privacy: .public)") // $ MISSING: Alert log.trace("\(passwordHash, privacy: .public)") // safe - log.debug("\(password, privacy: .public)") // $ MISSING: hasCleartextLogging=205 + log.debug("\(password, privacy: .public)") // $ MISSING: Alert log.debug("\(passwordHash, privacy: .public)") // safe - log.info("\(password, privacy: .public)") // $ MISSING: hasCleartextLogging=207 + log.info("\(password, privacy: .public)") // $ MISSING: Alert log.info("\(passwordHash, privacy: .public)") // safe - log.notice("\(password, privacy: .public)") // $ MISSING: hasCleartextLogging=209 + log.notice("\(password, privacy: .public)") // $ MISSING: Alert log.notice("\(passwordHash, privacy: .public)") // safe - log.warning("\(password, privacy: .public)") // $ MISSING: hasCleartextLogging=211 + log.warning("\(password, privacy: .public)") // $ MISSING: Alert log.warning("\(passwordHash, privacy: .public)") // safe - log.error("\(password, privacy: .public)") // $ MISSING: hasCleartextLogging=213 + log.error("\(password, privacy: .public)") // $ MISSING: Alert log.error("\(passwordHash, privacy: .public)") // safe - log.critical("\(password, privacy: .public)") // $ MISSING: hasCleartextLogging=215 + log.critical("\(password, privacy: .public)") // $ MISSING: Alert log.critical("\(passwordHash, privacy: .public)") // safe - log.fault("\(password, privacy: .public)") // $ MISSING: hasCleartextLogging=217 + log.fault("\(password, privacy: .public)") // $ MISSING: Alert log.fault("\(passwordHash, privacy: .public)") // safe - NSLog(passphrase) // $ hasCleartextLogging=220 - NSLog(pass_phrase) // $ hasCleartextLogging=221 + NSLog(passphrase) // $ Alert + NSLog(pass_phrase) // $ Alert os_log("%@", log: .default, type: .default, "") // safe - os_log("%@", log: .default, type: .default, password) // $ hasCleartextLogging=224 - os_log("%@ %@ %@", log: .default, type: .default, "", "", password) // $ hasCleartextLogging=225 + os_log("%@", log: .default, type: .default, password) // $ Alert + os_log("%@ %@ %@", log: .default, type: .default, "", "", password) // $ Alert } class MyClass { @@ -236,16 +236,16 @@ func doSomething(password: String) { } func test3(x: String) { // alternative evidence of sensitivity... - NSLog(x) // $ MISSING: hasCleartextLogging=240 - doSomething(password: x); - NSLog(x) // $ hasCleartextLogging=240 + NSLog(x) // $ MISSING: Alert + doSomething(password: x); // $ Source + NSLog(x) // $ Alert - let y = getPassword(); - NSLog(y) // $ hasCleartextLogging=243 + let y = getPassword(); // $ Source + NSLog(y) // $ Alert let z = MyClass() NSLog(z.harmless) // safe - NSLog(z.password) // $ hasCleartextLogging=248 + NSLog(z.password) // $ Alert } struct MyOuter { @@ -260,7 +260,7 @@ struct MyOuter { func test3(mo : MyOuter) { // struct members... - NSLog(mo.password.value) // $ hasCleartextLogging=263 + NSLog(mo.password.value) // $ Alert NSLog(mo.harmless.value) // safe } @@ -283,40 +283,40 @@ func test4(harmless: String, password: String) { print(harmless, to: &myString1) print(myString1) // safe - print(password, to: &myString2) - print(myString2) // $ hasCleartextLogging=286 + print(password, to: &myString2) // $ Source + print(myString2) // $ Alert - print("log: " + password, to: &myString3) - print(myString3) // $ hasCleartextLogging=289 + print("log: " + password, to: &myString3) // $ Source + print(myString3) // $ Alert debugPrint(harmless, to: &myString4) debugPrint(myString4) // safe - debugPrint(password, to: &myString5) - debugPrint(myString5) // $ hasCleartextLogging=295 + debugPrint(password, to: &myString5) // $ Source + debugPrint(myString5) // $ Alert dump(harmless, to: &myString6) dump(myString6) // safe - dump(password, to: &myString7) - dump(myString7) // $ hasCleartextLogging=301 + dump(password, to: &myString7) // $ Source + dump(myString7) // $ Alert myString8.write(harmless) print(myString8) - myString9.write(password) - print(myString9) // $ hasCleartextLogging=307 + myString9.write(password) // $ Source + print(myString9) // $ Alert myString10.write(harmless) - myString10.write(password) + myString10.write(password) // $ Source myString10.write(harmless) - print(myString10) // $ hasCleartextLogging=311 + print(myString10) // $ Alert harmless.write(to: &myString11) print(myString11) - password.write(to: &myString12) - print(myString12) // $ hasCleartextLogging=318 + password.write(to: &myString12) // $ Source + print(myString12) // $ Alert print(password, to: &myString13) // $ safe - only printed to another string debugPrint(password, to: &myString13) // $ safe - only printed to another string @@ -331,59 +331,59 @@ func test5(password: String, caseNum: Int) { switch caseNum { case 0: - assert(false, password) // $ hasCleartextLogging=334 + assert(false, password) // $ Alert case 1: - assertionFailure(password) // $ hasCleartextLogging=336 + assertionFailure(password) // $ Alert case 2: - precondition(false, password) // $ hasCleartextLogging=338 + precondition(false, password) // $ Alert case 3: - preconditionFailure(password) // $ hasCleartextLogging=340 + preconditionFailure(password) // $ Alert default: - fatalError(password) // $ hasCleartextLogging=342 + fatalError(password) // $ Alert } } func test6(passwordString: String) { - let e = NSException(name: NSExceptionName("exception"), reason: "\(passwordString) is incorrect!", userInfo: nil) // $ hasCleartextLogging=347 + let e = NSException(name: NSExceptionName("exception"), reason: "\(passwordString) is incorrect!", userInfo: nil) // $ Alert e.raise() - NSException.raise(NSExceptionName("exception"), format: "\(passwordString) is incorrect!", arguments: getVaList([])) // $ hasCleartextLogging=350 - NSException.raise(NSExceptionName("exception"), format: "%s is incorrect!", arguments: getVaList([passwordString])) // $ hasCleartextLogging=351 + NSException.raise(NSExceptionName("exception"), format: "\(passwordString) is incorrect!", arguments: getVaList([])) // $ Alert + NSException.raise(NSExceptionName("exception"), format: "%s is incorrect!", arguments: getVaList([passwordString])) // $ Alert - _ = dprintf(0, "\(passwordString) is incorrect!") // $ hasCleartextLogging=353 - _ = dprintf(0, "%s is incorrect!", passwordString) // $ hasCleartextLogging=354 - _ = dprintf(0, "%s: %s is incorrect!", "foo", passwordString) // $ hasCleartextLogging=355 - _ = vprintf("\(passwordString) is incorrect!", getVaList([])) // $ hasCleartextLogging=356 - _ = vprintf("%s is incorrect!", getVaList([passwordString])) // $ hasCleartextLogging=357 - _ = vfprintf(nil, "\(passwordString) is incorrect!", getVaList([])) // $ hasCleartextLogging=358 - _ = vfprintf(nil, "%s is incorrect!", getVaList([passwordString])) // $ hasCleartextLogging=359 + _ = dprintf(0, "\(passwordString) is incorrect!") // $ Alert + _ = dprintf(0, "%s is incorrect!", passwordString) // $ Alert + _ = dprintf(0, "%s: %s is incorrect!", "foo", passwordString) // $ Alert + _ = vprintf("\(passwordString) is incorrect!", getVaList([])) // $ Alert + _ = vprintf("%s is incorrect!", getVaList([passwordString])) // $ Alert + _ = vfprintf(nil, "\(passwordString) is incorrect!", getVaList([])) // $ Alert + _ = vfprintf(nil, "%s is incorrect!", getVaList([passwordString])) // $ Alert _ = vasprintf_l(nil, nil, "\(passwordString) is incorrect!", getVaList([])) // good (`sprintf` is not logging) _ = vasprintf_l(nil, nil, "%s is incorrect!", getVaList([passwordString])) // good (`sprintf` is not logging) } func test7(authKey: String, authKey2: Int, authKey3: Float, password: String, secret: String) { - log(message: authKey) // $ hasCleartextLogging=365 - log(message: String(authKey2)) // $ hasCleartextLogging=366 - logging(message: authKey) // $ MISSING: hasCleartextLogging=367 - logfile(file: 0, message: authKey) // $ MISSING: hasCleartextLogging=368 - logMessage(NSString(string: authKey)) // $ hasCleartextLogging=369 - logInfo(authKey) // $ hasCleartextLogging=370 - logError(errorMsg: authKey) // $ hasCleartextLogging=371 + log(message: authKey) // $ Alert + log(message: String(authKey2)) // $ Alert + logging(message: authKey) // $ MISSING: Alert + logfile(file: 0, message: authKey) // $ MISSING: Alert + logMessage(NSString(string: authKey)) // $ Alert + logInfo(authKey) // $ Alert + logError(errorMsg: authKey) // $ Alert harmless(authKey) // GOOD: not logging _ = logarithm(authKey3) // GOOD: not logging doLogin(login: authKey) // GOOD: not logging let logger = LogFile() - let msg = "authKey: " + authKey - logger.log(msg) // $ hasCleartextLogging=377 - logger.trace(msg) // $ hasCleartextLogging=377 - logger.debug(msg) // $ hasCleartextLogging=377 - logger.info(NSString(string: msg)) // $ hasCleartextLogging=377 - logger.notice(msg) // $ hasCleartextLogging=377 - logger.warning(msg) // $ hasCleartextLogging=377 - logger.error(msg) // $ hasCleartextLogging=377 - logger.critical(msg) // $ hasCleartextLogging=377 - logger.fatal(msg) // $ hasCleartextLogging=377 + let msg = "authKey: " + authKey // $ Source + logger.log(msg) // $ Alert + logger.trace(msg) // $ Alert + logger.debug(msg) // $ Alert + logger.info(NSString(string: msg)) // $ Alert + logger.notice(msg) // $ Alert + logger.warning(msg) // $ Alert + logger.error(msg) // $ Alert + logger.critical(msg) // $ Alert + logger.fatal(msg) // $ Alert let logic = Logic() logic.addInt(authKey2) // GOOD: not logging diff --git a/swift/ql/test/query-tests/Security/CWE-611/XXETest.expected b/swift/ql/test/query-tests/Security/CWE-611/XXETest.expected index e69de29bb2d1..3f582702b1f9 100644 --- a/swift/ql/test/query-tests/Security/CWE-611/XXETest.expected +++ b/swift/ql/test/query-tests/Security/CWE-611/XXETest.expected @@ -0,0 +1,85 @@ +#select +| testAEXMLDocumentXXE.swift:51:32:51:32 | remoteString | testAEXMLDocumentXXE.swift:50:24:50:78 | call to String.init(contentsOf:) | testAEXMLDocumentXXE.swift:51:32:51:32 | remoteString | XML parsing depends on a $@ without guarding against external entity expansion. | testAEXMLDocumentXXE.swift:50:24:50:78 | call to String.init(contentsOf:) | user-provided value | +| testAEXMLDocumentXXE.swift:74:32:74:32 | remoteData | testAEXMLDocumentXXE.swift:70:24:70:78 | call to String.init(contentsOf:) | testAEXMLDocumentXXE.swift:74:32:74:32 | remoteData | XML parsing depends on a $@ without guarding against external entity expansion. | testAEXMLDocumentXXE.swift:70:24:70:78 | call to String.init(contentsOf:) | user-provided value | +| testAEXMLDocumentXXE.swift:99:17:99:17 | remoteData | testAEXMLDocumentXXE.swift:97:24:97:78 | call to String.init(contentsOf:) | testAEXMLDocumentXXE.swift:99:17:99:17 | remoteData | XML parsing depends on a $@ without guarding against external entity expansion. | testAEXMLDocumentXXE.swift:97:24:97:78 | call to String.init(contentsOf:) | user-provided value | +| testAEXMLDocumentXXE.swift:128:46:128:46 | remoteData | testAEXMLDocumentXXE.swift:126:24:126:78 | call to String.init(contentsOf:) | testAEXMLDocumentXXE.swift:128:46:128:46 | remoteData | XML parsing depends on a $@ without guarding against external entity expansion. | testAEXMLDocumentXXE.swift:126:24:126:78 | call to String.init(contentsOf:) | user-provided value | +| testXMLDocumentXXE.swift:40:37:40:37 | remoteUrl | testXMLDocumentXXE.swift:38:24:38:78 | call to String.init(contentsOf:) | testXMLDocumentXXE.swift:40:37:40:37 | remoteUrl | XML parsing depends on a $@ without guarding against external entity expansion. | testXMLDocumentXXE.swift:38:24:38:78 | call to String.init(contentsOf:) | user-provided value | +| testXMLDocumentXXE.swift:58:31:58:31 | remoteData | testXMLDocumentXXE.swift:56:24:56:78 | call to String.init(contentsOf:) | testXMLDocumentXXE.swift:58:31:58:31 | remoteData | XML parsing depends on a $@ without guarding against external entity expansion. | testXMLDocumentXXE.swift:56:24:56:78 | call to String.init(contentsOf:) | user-provided value | +| testXMLDocumentXXE.swift:75:36:75:36 | remoteString | testXMLDocumentXXE.swift:74:24:74:78 | call to String.init(contentsOf:) | testXMLDocumentXXE.swift:75:36:75:36 | remoteString | XML parsing depends on a $@ without guarding against external entity expansion. | testXMLDocumentXXE.swift:74:24:74:78 | call to String.init(contentsOf:) | user-provided value | +| testXMLParserXXE.swift:34:34:34:34 | remoteData | testXMLParserXXE.swift:32:24:32:78 | call to String.init(contentsOf:) | testXMLParserXXE.swift:34:34:34:34 | remoteData | XML parsing depends on a $@ without guarding against external entity expansion. | testXMLParserXXE.swift:32:24:32:78 | call to String.init(contentsOf:) | user-provided value | +| testXMLParserXXE.swift:42:36:42:36 | remoteStream | testXMLParserXXE.swift:39:24:39:78 | call to String.init(contentsOf:) | testXMLParserXXE.swift:42:36:42:36 | remoteStream | XML parsing depends on a $@ without guarding against external entity expansion. | testXMLParserXXE.swift:39:24:39:78 | call to String.init(contentsOf:) | user-provided value | +| testXMLParserXXE.swift:49:40:49:40 | remoteUrl | testXMLParserXXE.swift:47:24:47:78 | call to String.init(contentsOf:) | testXMLParserXXE.swift:49:40:49:40 | remoteUrl | XML parsing depends on a $@ without guarding against external entity expansion. | testXMLParserXXE.swift:47:24:47:78 | call to String.init(contentsOf:) | user-provided value | +edges +| testAEXMLDocumentXXE.swift:50:24:50:78 | call to String.init(contentsOf:) | testAEXMLDocumentXXE.swift:51:32:51:32 | remoteString | provenance | | +| testAEXMLDocumentXXE.swift:70:24:70:78 | call to String.init(contentsOf:) | testAEXMLDocumentXXE.swift:71:27:71:27 | remoteString | provenance | | +| testAEXMLDocumentXXE.swift:71:22:71:39 | call to Data.init(_:) | testAEXMLDocumentXXE.swift:74:32:74:32 | remoteData | provenance | | +| testAEXMLDocumentXXE.swift:71:27:71:27 | remoteString | testAEXMLDocumentXXE.swift:71:22:71:39 | call to Data.init(_:) | provenance | | +| testAEXMLDocumentXXE.swift:97:24:97:78 | call to String.init(contentsOf:) | testAEXMLDocumentXXE.swift:98:27:98:27 | remoteString | provenance | | +| testAEXMLDocumentXXE.swift:98:22:98:39 | call to Data.init(_:) | testAEXMLDocumentXXE.swift:99:17:99:17 | remoteData | provenance | | +| testAEXMLDocumentXXE.swift:98:27:98:27 | remoteString | testAEXMLDocumentXXE.swift:98:22:98:39 | call to Data.init(_:) | provenance | | +| testAEXMLDocumentXXE.swift:126:24:126:78 | call to String.init(contentsOf:) | testAEXMLDocumentXXE.swift:127:27:127:27 | remoteString | provenance | | +| testAEXMLDocumentXXE.swift:127:22:127:39 | call to Data.init(_:) | testAEXMLDocumentXXE.swift:128:46:128:46 | remoteData | provenance | | +| testAEXMLDocumentXXE.swift:127:27:127:27 | remoteString | testAEXMLDocumentXXE.swift:127:22:127:39 | call to Data.init(_:) | provenance | | +| testXMLDocumentXXE.swift:38:24:38:78 | call to String.init(contentsOf:) | testXMLDocumentXXE.swift:39:33:39:33 | remoteString | provenance | | +| testXMLDocumentXXE.swift:39:21:39:45 | call to URL.init(string:) [some:0] | testXMLDocumentXXE.swift:39:21:39:46 | ...! | provenance | | +| testXMLDocumentXXE.swift:39:21:39:46 | ...! | testXMLDocumentXXE.swift:40:37:40:37 | remoteUrl | provenance | | +| testXMLDocumentXXE.swift:39:33:39:33 | remoteString | testXMLDocumentXXE.swift:39:21:39:45 | call to URL.init(string:) [some:0] | provenance | | +| testXMLDocumentXXE.swift:56:24:56:78 | call to String.init(contentsOf:) | testXMLDocumentXXE.swift:57:27:57:27 | remoteString | provenance | | +| testXMLDocumentXXE.swift:57:22:57:39 | call to Data.init(_:) | testXMLDocumentXXE.swift:58:31:58:31 | remoteData | provenance | | +| testXMLDocumentXXE.swift:57:27:57:27 | remoteString | testXMLDocumentXXE.swift:57:22:57:39 | call to Data.init(_:) | provenance | | +| testXMLDocumentXXE.swift:74:24:74:78 | call to String.init(contentsOf:) | testXMLDocumentXXE.swift:75:36:75:36 | remoteString | provenance | | +| testXMLParserXXE.swift:32:24:32:78 | call to String.init(contentsOf:) | testXMLParserXXE.swift:33:27:33:27 | remoteString | provenance | | +| testXMLParserXXE.swift:33:22:33:39 | call to Data.init(_:) | testXMLParserXXE.swift:34:34:34:34 | remoteData | provenance | | +| testXMLParserXXE.swift:33:27:33:27 | remoteString | testXMLParserXXE.swift:33:22:33:39 | call to Data.init(_:) | provenance | | +| testXMLParserXXE.swift:39:24:39:78 | call to String.init(contentsOf:) | testXMLParserXXE.swift:40:27:40:27 | remoteString | provenance | | +| testXMLParserXXE.swift:40:22:40:39 | call to Data.init(_:) | testXMLParserXXE.swift:41:42:41:42 | remoteData | provenance | | +| testXMLParserXXE.swift:40:22:40:39 | call to Data.init(_:) | testXMLParserXXE.swift:42:36:42:36 | remoteStream | provenance | AdditionalTaintStep | +| testXMLParserXXE.swift:40:27:40:27 | remoteString | testXMLParserXXE.swift:40:22:40:39 | call to Data.init(_:) | provenance | | +| testXMLParserXXE.swift:41:24:41:52 | call to InputStream.init(data:) | testXMLParserXXE.swift:42:36:42:36 | remoteStream | provenance | | +| testXMLParserXXE.swift:41:42:41:42 | remoteData | testXMLParserXXE.swift:41:24:41:52 | call to InputStream.init(data:) | provenance | | +| testXMLParserXXE.swift:47:24:47:78 | call to String.init(contentsOf:) | testXMLParserXXE.swift:48:33:48:33 | remoteString | provenance | | +| testXMLParserXXE.swift:48:21:48:45 | call to URL.init(string:) [some:0] | testXMLParserXXE.swift:48:21:48:46 | ...! | provenance | | +| testXMLParserXXE.swift:48:21:48:46 | ...! | testXMLParserXXE.swift:49:40:49:40 | remoteUrl | provenance | | +| testXMLParserXXE.swift:48:33:48:33 | remoteString | testXMLParserXXE.swift:48:21:48:45 | call to URL.init(string:) [some:0] | provenance | | +nodes +| testAEXMLDocumentXXE.swift:50:24:50:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testAEXMLDocumentXXE.swift:51:32:51:32 | remoteString | semmle.label | remoteString | +| testAEXMLDocumentXXE.swift:70:24:70:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testAEXMLDocumentXXE.swift:71:22:71:39 | call to Data.init(_:) | semmle.label | call to Data.init(_:) | +| testAEXMLDocumentXXE.swift:71:27:71:27 | remoteString | semmle.label | remoteString | +| testAEXMLDocumentXXE.swift:74:32:74:32 | remoteData | semmle.label | remoteData | +| testAEXMLDocumentXXE.swift:97:24:97:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testAEXMLDocumentXXE.swift:98:22:98:39 | call to Data.init(_:) | semmle.label | call to Data.init(_:) | +| testAEXMLDocumentXXE.swift:98:27:98:27 | remoteString | semmle.label | remoteString | +| testAEXMLDocumentXXE.swift:99:17:99:17 | remoteData | semmle.label | remoteData | +| testAEXMLDocumentXXE.swift:126:24:126:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testAEXMLDocumentXXE.swift:127:22:127:39 | call to Data.init(_:) | semmle.label | call to Data.init(_:) | +| testAEXMLDocumentXXE.swift:127:27:127:27 | remoteString | semmle.label | remoteString | +| testAEXMLDocumentXXE.swift:128:46:128:46 | remoteData | semmle.label | remoteData | +| testXMLDocumentXXE.swift:38:24:38:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testXMLDocumentXXE.swift:39:21:39:45 | call to URL.init(string:) [some:0] | semmle.label | call to URL.init(string:) [some:0] | +| testXMLDocumentXXE.swift:39:21:39:46 | ...! | semmle.label | ...! | +| testXMLDocumentXXE.swift:39:33:39:33 | remoteString | semmle.label | remoteString | +| testXMLDocumentXXE.swift:40:37:40:37 | remoteUrl | semmle.label | remoteUrl | +| testXMLDocumentXXE.swift:56:24:56:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testXMLDocumentXXE.swift:57:22:57:39 | call to Data.init(_:) | semmle.label | call to Data.init(_:) | +| testXMLDocumentXXE.swift:57:27:57:27 | remoteString | semmle.label | remoteString | +| testXMLDocumentXXE.swift:58:31:58:31 | remoteData | semmle.label | remoteData | +| testXMLDocumentXXE.swift:74:24:74:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testXMLDocumentXXE.swift:75:36:75:36 | remoteString | semmle.label | remoteString | +| testXMLParserXXE.swift:32:24:32:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testXMLParserXXE.swift:33:22:33:39 | call to Data.init(_:) | semmle.label | call to Data.init(_:) | +| testXMLParserXXE.swift:33:27:33:27 | remoteString | semmle.label | remoteString | +| testXMLParserXXE.swift:34:34:34:34 | remoteData | semmle.label | remoteData | +| testXMLParserXXE.swift:39:24:39:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testXMLParserXXE.swift:40:22:40:39 | call to Data.init(_:) | semmle.label | call to Data.init(_:) | +| testXMLParserXXE.swift:40:27:40:27 | remoteString | semmle.label | remoteString | +| testXMLParserXXE.swift:41:24:41:52 | call to InputStream.init(data:) | semmle.label | call to InputStream.init(data:) | +| testXMLParserXXE.swift:41:42:41:42 | remoteData | semmle.label | remoteData | +| testXMLParserXXE.swift:42:36:42:36 | remoteStream | semmle.label | remoteStream | +| testXMLParserXXE.swift:47:24:47:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| testXMLParserXXE.swift:48:21:48:45 | call to URL.init(string:) [some:0] | semmle.label | call to URL.init(string:) [some:0] | +| testXMLParserXXE.swift:48:21:48:46 | ...! | semmle.label | ...! | +| testXMLParserXXE.swift:48:33:48:33 | remoteString | semmle.label | remoteString | +| testXMLParserXXE.swift:49:40:49:40 | remoteUrl | semmle.label | remoteUrl | +subpaths diff --git a/swift/ql/test/query-tests/Security/CWE-611/XXETest.ql b/swift/ql/test/query-tests/Security/CWE-611/XXETest.ql deleted file mode 100644 index 64001151b442..000000000000 --- a/swift/ql/test/query-tests/Security/CWE-611/XXETest.ql +++ /dev/null @@ -1,27 +0,0 @@ -import swift -import codeql.swift.dataflow.FlowSources -import codeql.swift.security.XXEQuery -import utils.test.InlineExpectationsTest - -class TestRemoteSource extends RemoteFlowSource { - TestRemoteSource() { this.asExpr().(ApplyExpr).getStaticTarget().getName().matches("source%") } - - override string getSourceType() { result = "Test source" } -} - -module XxeTest implements TestSig { - string getARelevantTag() { result = "hasXXE" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - exists(DataFlow::Node source, DataFlow::Node sink, Expr sinkExpr | - XxeFlow::flow(source, sink) and - sinkExpr = sink.asExpr() and - location = sinkExpr.getLocation() and - element = sinkExpr.toString() and - tag = "hasXXE" and - value = source.asExpr().getLocation().getStartLine().toString() - ) - } -} - -import MakeTest diff --git a/swift/ql/test/query-tests/Security/CWE-611/XXETest.qlref b/swift/ql/test/query-tests/Security/CWE-611/XXETest.qlref new file mode 100644 index 000000000000..83154ac29d4d --- /dev/null +++ b/swift/ql/test/query-tests/Security/CWE-611/XXETest.qlref @@ -0,0 +1,3 @@ +query: queries/Security/CWE-611/XXE.ql +postprocess: + - utils/test/InlineExpectationsTestQuery.ql diff --git a/swift/ql/test/query-tests/Security/CWE-611/testAEXMLDocumentXXE.swift b/swift/ql/test/query-tests/Security/CWE-611/testAEXMLDocumentXXE.swift index 9f3370301580..c7501d4bcbdd 100644 --- a/swift/ql/test/query-tests/Security/CWE-611/testAEXMLDocumentXXE.swift +++ b/swift/ql/test/query-tests/Security/CWE-611/testAEXMLDocumentXXE.swift @@ -47,8 +47,8 @@ func testString() { var options = AEXMLOptions() options.parserSettings.shouldResolveExternalEntities = true - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) - let _ = AEXMLDocument(xml: remoteString, encoding: String.Encoding.utf8, options: options) // $ hasXXE=50 + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source + let _ = AEXMLDocument(xml: remoteString, encoding: String.Encoding.utf8, options: options) // $ Alert } func testStringSafeImplicit() { @@ -67,11 +67,11 @@ func testStringSafeExplicit() { } func testData() { - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source let remoteData = Data(remoteString) var options = AEXMLOptions() options.parserSettings.shouldResolveExternalEntities = true - let _ = AEXMLDocument(xml: remoteData, options: options) // $ hasXXE=70 + let _ = AEXMLDocument(xml: remoteData, options: options) // $ Alert } func testDataSafeImplicit() { @@ -94,9 +94,9 @@ func testDataLoadXml() { options.parserSettings.shouldResolveExternalEntities = true let doc = AEXMLDocument(root: nil, options: options) - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source let remoteData = Data(remoteString) - doc.loadXML(remoteData) // $ hasXXE=97 + doc.loadXML(remoteData) // $ Alert } func testDataLoadXmlSafeImplicit() { @@ -123,9 +123,9 @@ func testParser() { options.parserSettings.shouldResolveExternalEntities = true let doc = AEXMLDocument(root: nil, options: options) - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source let remoteData = Data(remoteString) - let _ = AEXMLParser(document: doc, data: remoteData) // $ hasXXE=126 + let _ = AEXMLParser(document: doc, data: remoteData) // $ Alert } func testParserSafeImplicit() { @@ -145,4 +145,4 @@ func testParserSafeExplicit() { let remoteString = String(contentsOf: URL(string: "http://example.com/")!) let remoteData = Data(remoteString) let _ = AEXMLParser(document: doc, data: remoteData) // NO XXE -} \ No newline at end of file +} diff --git a/swift/ql/test/query-tests/Security/CWE-611/testXMLDocumentXXE.swift b/swift/ql/test/query-tests/Security/CWE-611/testXMLDocumentXXE.swift index 07180301e727..9cfa694839a2 100644 --- a/swift/ql/test/query-tests/Security/CWE-611/testXMLDocumentXXE.swift +++ b/swift/ql/test/query-tests/Security/CWE-611/testXMLDocumentXXE.swift @@ -35,9 +35,9 @@ class XMLDocument { // --- tests --- func testUrl() { - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source let remoteUrl = URL(string: remoteString)! - let _ = XMLDocument(contentsOf: remoteUrl, options: [.nodeLoadExternalEntitiesAlways]) // $ hasXXE=38 + let _ = XMLDocument(contentsOf: remoteUrl, options: [.nodeLoadExternalEntitiesAlways]) // $ Alert } func testUrlSafeImplicit() { @@ -53,9 +53,9 @@ func testUrlSafeExplicit() { } func testData() { - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source let remoteData = Data(remoteString) - let _ = XMLDocument(data: remoteData, options: [.nodeLoadExternalEntitiesAlways]) // $ hasXXE=56 + let _ = XMLDocument(data: remoteData, options: [.nodeLoadExternalEntitiesAlways]) // $ Alert } func testDataSafeImplicit() { @@ -71,8 +71,8 @@ func testDataSafeExplicit() { } func testString() { - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) - let _ = XMLDocument(xmlString: remoteString, options: [.nodeLoadExternalEntitiesAlways]) // $ hasXXE=74 + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source + let _ = XMLDocument(xmlString: remoteString, options: [.nodeLoadExternalEntitiesAlways]) // $ Alert } func testStringSafeImplicit() { diff --git a/swift/ql/test/query-tests/Security/CWE-611/testXMLParserXXE.swift b/swift/ql/test/query-tests/Security/CWE-611/testXMLParserXXE.swift index 75538f014f9f..3b679675b1a4 100644 --- a/swift/ql/test/query-tests/Security/CWE-611/testXMLParserXXE.swift +++ b/swift/ql/test/query-tests/Security/CWE-611/testXMLParserXXE.swift @@ -29,24 +29,24 @@ class XMLParser { // --- tests --- func testData() { - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source let remoteData = Data(remoteString) - let parser = XMLParser(data: remoteData) // $ hasXXE=32 + let parser = XMLParser(data: remoteData) // $ Alert parser.shouldResolveExternalEntities = true } func testInputStream() { - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source let remoteData = Data(remoteString) let remoteStream = InputStream(data: remoteData) - let parser = XMLParser(stream: remoteStream) // $ hasXXE=39 + let parser = XMLParser(stream: remoteStream) // $ Alert parser.shouldResolveExternalEntities = true } func testUrl() { - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source let remoteUrl = URL(string: remoteString)! - let parser = XMLParser(contentsOf: remoteUrl) // $ hasXXE=47 + let parser = XMLParser(contentsOf: remoteUrl) // $ Alert parser?.shouldResolveExternalEntities = true } @@ -89,4 +89,4 @@ func testUrlSafeExplicit() { let remoteUrl = URL(string: remoteString)! let parser = XMLParser(contentsOf: remoteUrl) // NO XXE: parser disables external entities parser?.shouldResolveExternalEntities = false -} \ No newline at end of file +} diff --git a/swift/ql/test/query-tests/Security/CWE-946/PredicateInjectionTest.expected b/swift/ql/test/query-tests/Security/CWE-946/PredicateInjectionTest.expected index e69de29bb2d1..4c1b0eb782ef 100644 --- a/swift/ql/test/query-tests/Security/CWE-946/PredicateInjectionTest.expected +++ b/swift/ql/test/query-tests/Security/CWE-946/PredicateInjectionTest.expected @@ -0,0 +1,20 @@ +#select +| predicateInjection.swift:26:25:26:25 | remoteString | predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | predicateInjection.swift:26:25:26:25 | remoteString | This predicate depends on a $@. | predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | user-provided value | +| predicateInjection.swift:29:25:29:25 | remoteString | predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | predicateInjection.swift:29:25:29:25 | remoteString | This predicate depends on a $@. | predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | user-provided value | +| predicateInjection.swift:31:25:31:25 | remoteString | predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | predicateInjection.swift:31:25:31:25 | remoteString | This predicate depends on a $@. | predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | user-provided value | +| predicateInjection.swift:33:25:33:25 | remoteString | predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | predicateInjection.swift:33:25:33:25 | remoteString | This predicate depends on a $@. | predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | user-provided value | +| predicateInjection.swift:36:42:36:42 | remoteString | predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | predicateInjection.swift:36:42:36:42 | remoteString | This predicate depends on a $@. | predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | user-provided value | +edges +| predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | predicateInjection.swift:26:25:26:25 | remoteString | provenance | | +| predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | predicateInjection.swift:29:25:29:25 | remoteString | provenance | | +| predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | predicateInjection.swift:31:25:31:25 | remoteString | provenance | | +| predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | predicateInjection.swift:33:25:33:25 | remoteString | provenance | | +| predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | predicateInjection.swift:36:42:36:42 | remoteString | provenance | | +nodes +| predicateInjection.swift:23:24:23:78 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | +| predicateInjection.swift:26:25:26:25 | remoteString | semmle.label | remoteString | +| predicateInjection.swift:29:25:29:25 | remoteString | semmle.label | remoteString | +| predicateInjection.swift:31:25:31:25 | remoteString | semmle.label | remoteString | +| predicateInjection.swift:33:25:33:25 | remoteString | semmle.label | remoteString | +| predicateInjection.swift:36:42:36:42 | remoteString | semmle.label | remoteString | +subpaths diff --git a/swift/ql/test/query-tests/Security/CWE-946/PredicateInjectionTest.ql b/swift/ql/test/query-tests/Security/CWE-946/PredicateInjectionTest.ql deleted file mode 100644 index 202ca05ad43b..000000000000 --- a/swift/ql/test/query-tests/Security/CWE-946/PredicateInjectionTest.ql +++ /dev/null @@ -1,21 +0,0 @@ -import swift -import codeql.swift.dataflow.DataFlow -import codeql.swift.security.PredicateInjectionQuery -import utils.test.InlineExpectationsTest - -module PredicateInjectionTest implements TestSig { - string getARelevantTag() { result = "hasPredicateInjection" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - exists(DataFlow::Node source, DataFlow::Node sink, Expr sinkExpr | - PredicateInjectionFlow::flow(source, sink) and - sinkExpr = sink.asExpr() and - location = sinkExpr.getLocation() and - element = sinkExpr.toString() and - tag = "hasPredicateInjection" and - value = source.asExpr().getLocation().getStartLine().toString() - ) - } -} - -import MakeTest diff --git a/swift/ql/test/query-tests/Security/CWE-946/PredicateInjectionTest.qlref b/swift/ql/test/query-tests/Security/CWE-946/PredicateInjectionTest.qlref new file mode 100644 index 000000000000..f968b9a35259 --- /dev/null +++ b/swift/ql/test/query-tests/Security/CWE-946/PredicateInjectionTest.qlref @@ -0,0 +1,3 @@ +query: queries/Security/CWE-943/PredicateInjection.ql +postprocess: + - utils/test/InlineExpectationsTestQuery.ql diff --git a/swift/ql/test/query-tests/Security/CWE-946/predicateInjection.swift b/swift/ql/test/query-tests/Security/CWE-946/predicateInjection.swift index 1de6b50f4cf5..56ead0544d2a 100644 --- a/swift/ql/test/query-tests/Security/CWE-946/predicateInjection.swift +++ b/swift/ql/test/query-tests/Security/CWE-946/predicateInjection.swift @@ -20,19 +20,19 @@ class NSPredicate { // --- tests --- func test() { - let remoteString = String(contentsOf: URL(string: "http://example.com/")!) + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source let safeString = "safe" - NSPredicate(format: remoteString, argumentArray: []) // $ hasPredicateInjection=23 + NSPredicate(format: remoteString, argumentArray: []) // $ Alert NSPredicate(format: safeString, argumentArray: []) // Safe NSPredicate(format: safeString, argumentArray: [remoteString]) // Safe - NSPredicate(format: remoteString, arguments: CVaListPointer(_fromUnsafeMutablePointer: UnsafeMutablePointer(bitPattern: 0)!)) // $ hasPredicateInjection=23 + NSPredicate(format: remoteString, arguments: CVaListPointer(_fromUnsafeMutablePointer: UnsafeMutablePointer(bitPattern: 0)!)) // $ Alert NSPredicate(format: safeString, arguments: CVaListPointer(_fromUnsafeMutablePointer: UnsafeMutablePointer(bitPattern: 0)!)) // Safe - NSPredicate(format: remoteString) // $ hasPredicateInjection=23 + NSPredicate(format: remoteString) // $ Alert NSPredicate(format: safeString) // Safe - NSPredicate(format: remoteString, "" as! CVarArg) // $ hasPredicateInjection=23 + NSPredicate(format: remoteString, "" as! CVarArg) // $ Alert NSPredicate(format: safeString, "" as! CVarArg) // Safe NSPredicate(format: safeString, remoteString as! CVarArg) // Safe - NSPredicate(fromMetadataQueryString: remoteString) // $ hasPredicateInjection=23 + NSPredicate(fromMetadataQueryString: remoteString) // $ Alert NSPredicate(fromMetadataQueryString: safeString) // Safe }